From c96f048c17eca8f86060a096882038ac8b81ff4d Mon Sep 17 00:00:00 2001 From: EdgarSocrates98 Date: Sun, 18 Oct 2026 09:08:18 -0300 Subject: [PATCH 1/2] =?UTF-8?q?chore(vendor):=20portal=20assets=20?= =?UTF-8?q?=E2=86=92=202.2=20generation=20(cycle=203-5=20frontend)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- portal/assets/chunk-16deWS0U.js | 1 + portal/assets/chunk-1IC1Ht1p.js | 3 - portal/assets/chunk-92Xoau85.js | 1 + portal/assets/chunk-B5UUjcvD.js | 5 - portal/assets/chunk-BAgCErjk.js | 322 ++++++++++++++++++ portal/assets/chunk-BF4IykBc.js | 1 + .../{chunk-BBusSOqc.js => chunk-BGgpmc9t.js} | 2 +- portal/assets/chunk-BKRLVsID.js | 1 - .../{chunk-0WpwvubF.js => chunk-BNDlNg-C.js} | 2 +- portal/assets/chunk-BOg-dd4X.js | 1 - portal/assets/chunk-BUdnTjRC.js | 1 - portal/assets/chunk-BYYLUO5t.js | 1 + portal/assets/chunk-BYyT8UUn.js | 1 + portal/assets/chunk-BZzb34kV.js | 1 - portal/assets/chunk-B_bDidf_.js | 1 + portal/assets/chunk-BefGrJ9d.js | 5 + portal/assets/chunk-BelLryvf.js | 5 - portal/assets/chunk-BflJ-4CO.js | 1 + portal/assets/chunk-Bg2lccQE.js | 1 + portal/assets/chunk-BhLaTFvG.js | 1 - portal/assets/chunk-BiLsIL6D.js | 1 - portal/assets/chunk-BkDXoz47.js | 1 + portal/assets/chunk-Br6NMJL9.js | 1 + portal/assets/chunk-BtsfId7c.js | 1 - portal/assets/chunk-C0nXO1-7.js | 1 + portal/assets/chunk-C5-CCisw.js | 1 - portal/assets/chunk-CCHwcZ3Q.js | 5 + portal/assets/chunk-CDQZIMhH.js | 1 + portal/assets/chunk-CM-MlJlQ.js | 1 + portal/assets/chunk-CR0uEECS.js | 1 + portal/assets/chunk-CXfCkbMK.js | 1 - portal/assets/chunk-Cci2spkQ.js | 1 - portal/assets/chunk-CiuPOfJ0.js | 1 - portal/assets/chunk-CygOa7EH.js | 1 + portal/assets/chunk-D2-KpBLI.js | 1 - portal/assets/chunk-D34eMkm4.js | 1 - portal/assets/chunk-D4lhtoQa.js | 1 + portal/assets/chunk-D51YTy_x.js | 1 - portal/assets/chunk-D5z0OfqY.js | 1 + portal/assets/chunk-D67lmMI_.js | 1 - portal/assets/chunk-D84lgeyr.js | 1 - portal/assets/chunk-DJd3bKJi.js | 1 - portal/assets/chunk-DKmatQN-.js | 1 - portal/assets/chunk-DNCrHYu6.js | 1 + portal/assets/chunk-DQFb71Td.js | 1 + portal/assets/chunk-DQJAW8AL.js | 1 + .../{chunk-D2KAfPv6.js => chunk-DQtX_-dj.js} | 2 +- portal/assets/chunk-DbK2Y3UO.js | 1 - portal/assets/chunk-DcK6E10F.js | 1 - portal/assets/chunk-DgMFvN4-.js | 1 + portal/assets/chunk-DjkjLihA.js | 1 - portal/assets/chunk-DmeV4Ae_.js | 322 ------------------ portal/assets/chunk-DpHwlXuY.js | 1 - .../{chunk-BKcxAbqq.js => chunk-DsEeBzOB.js} | 2 +- portal/assets/chunk-DvTxSJhT.js | 1 - portal/assets/chunk-Dx9x1gxm.js | 1 - portal/assets/chunk-IG0wRxY1.js | 1 + portal/assets/chunk-N-Oj8_UM.js | 3 + portal/assets/chunk-NOjQgxo7.js | 1 + portal/assets/chunk-NryuIUhX.js | 1 - portal/assets/chunk-O1vNs89S.js | 1 + .../{chunk-Bqgc-mwk.js => chunk-ctcjU5we.js} | 2 +- portal/assets/chunk-fHAvBZdv.js | 1 + portal/assets/chunk-hh6-Palp.js | 1 + portal/assets/chunk-pVzsnrcB.js | 1 + portal/assets/chunk-tu0a_CEa.js | 1 + portal/assets/chunk-vTT25rMv.js | 1 - .../{chunk-DQvfYR07.js => chunk-xLo56Uun.js} | 2 +- portal/assets/index.html | 4 +- portal/assets/main-A2NKRJGT.js | 1 - portal/assets/main-XW2ZMSO5.js | 1 + portal/assets/styles-B6ZRGG3C.css | 1 + portal/assets/styles-G23E7YXX.css | 1 - portal/manifest.json | 242 ++++++------- 74 files changed, 498 insertions(+), 488 deletions(-) create mode 100644 portal/assets/chunk-16deWS0U.js delete mode 100644 portal/assets/chunk-1IC1Ht1p.js create mode 100644 portal/assets/chunk-92Xoau85.js delete mode 100644 portal/assets/chunk-B5UUjcvD.js create mode 100644 portal/assets/chunk-BAgCErjk.js create mode 100644 portal/assets/chunk-BF4IykBc.js rename portal/assets/{chunk-BBusSOqc.js => chunk-BGgpmc9t.js} (66%) delete mode 100644 portal/assets/chunk-BKRLVsID.js rename portal/assets/{chunk-0WpwvubF.js => chunk-BNDlNg-C.js} (94%) delete mode 100644 portal/assets/chunk-BOg-dd4X.js delete mode 100644 portal/assets/chunk-BUdnTjRC.js create mode 100644 portal/assets/chunk-BYYLUO5t.js create mode 100644 portal/assets/chunk-BYyT8UUn.js delete mode 100644 portal/assets/chunk-BZzb34kV.js create mode 100644 portal/assets/chunk-B_bDidf_.js create mode 100644 portal/assets/chunk-BefGrJ9d.js delete mode 100644 portal/assets/chunk-BelLryvf.js create mode 100644 portal/assets/chunk-BflJ-4CO.js create mode 100644 portal/assets/chunk-Bg2lccQE.js delete mode 100644 portal/assets/chunk-BhLaTFvG.js delete mode 100644 portal/assets/chunk-BiLsIL6D.js create mode 100644 portal/assets/chunk-BkDXoz47.js create mode 100644 portal/assets/chunk-Br6NMJL9.js delete mode 100644 portal/assets/chunk-BtsfId7c.js create mode 100644 portal/assets/chunk-C0nXO1-7.js delete mode 100644 portal/assets/chunk-C5-CCisw.js create mode 100644 portal/assets/chunk-CCHwcZ3Q.js create mode 100644 portal/assets/chunk-CDQZIMhH.js create mode 100644 portal/assets/chunk-CM-MlJlQ.js create mode 100644 portal/assets/chunk-CR0uEECS.js delete mode 100644 portal/assets/chunk-CXfCkbMK.js delete mode 100644 portal/assets/chunk-Cci2spkQ.js delete mode 100644 portal/assets/chunk-CiuPOfJ0.js create mode 100644 portal/assets/chunk-CygOa7EH.js delete mode 100644 portal/assets/chunk-D2-KpBLI.js delete mode 100644 portal/assets/chunk-D34eMkm4.js create mode 100644 portal/assets/chunk-D4lhtoQa.js delete mode 100644 portal/assets/chunk-D51YTy_x.js create mode 100644 portal/assets/chunk-D5z0OfqY.js delete mode 100644 portal/assets/chunk-D67lmMI_.js delete mode 100644 portal/assets/chunk-D84lgeyr.js delete mode 100644 portal/assets/chunk-DJd3bKJi.js delete mode 100644 portal/assets/chunk-DKmatQN-.js create mode 100644 portal/assets/chunk-DNCrHYu6.js create mode 100644 portal/assets/chunk-DQFb71Td.js create mode 100644 portal/assets/chunk-DQJAW8AL.js rename portal/assets/{chunk-D2KAfPv6.js => chunk-DQtX_-dj.js} (83%) delete mode 100644 portal/assets/chunk-DbK2Y3UO.js delete mode 100644 portal/assets/chunk-DcK6E10F.js create mode 100644 portal/assets/chunk-DgMFvN4-.js delete mode 100644 portal/assets/chunk-DjkjLihA.js delete mode 100644 portal/assets/chunk-DmeV4Ae_.js delete mode 100644 portal/assets/chunk-DpHwlXuY.js rename portal/assets/{chunk-BKcxAbqq.js => chunk-DsEeBzOB.js} (67%) delete mode 100644 portal/assets/chunk-DvTxSJhT.js delete mode 100644 portal/assets/chunk-Dx9x1gxm.js create mode 100644 portal/assets/chunk-IG0wRxY1.js create mode 100644 portal/assets/chunk-N-Oj8_UM.js create mode 100644 portal/assets/chunk-NOjQgxo7.js delete mode 100644 portal/assets/chunk-NryuIUhX.js create mode 100644 portal/assets/chunk-O1vNs89S.js rename portal/assets/{chunk-Bqgc-mwk.js => chunk-ctcjU5we.js} (71%) create mode 100644 portal/assets/chunk-fHAvBZdv.js create mode 100644 portal/assets/chunk-hh6-Palp.js create mode 100644 portal/assets/chunk-pVzsnrcB.js create mode 100644 portal/assets/chunk-tu0a_CEa.js delete mode 100644 portal/assets/chunk-vTT25rMv.js rename portal/assets/{chunk-DQvfYR07.js => chunk-xLo56Uun.js} (60%) delete mode 100644 portal/assets/main-A2NKRJGT.js create mode 100644 portal/assets/main-XW2ZMSO5.js create mode 100644 portal/assets/styles-B6ZRGG3C.css delete mode 100644 portal/assets/styles-G23E7YXX.css diff --git a/portal/assets/chunk-16deWS0U.js b/portal/assets/chunk-16deWS0U.js new file mode 100644 index 0000000..1824ac8 --- /dev/null +++ b/portal/assets/chunk-16deWS0U.js @@ -0,0 +1 @@ +import{$ as dS,At as qm,F as Sa,Jt as vd,L as TS,P as SS,Pt as rn,Q as cE,at as ey,ct as hD,et as da,it as ei,kt as qS,ut as hS,x as MS}from"./chunk-BefGrJ9d.js";var b=[`*`];function f(t,d){if(t&1&&(da(0,`p`,4),qS(1),vd()),t&2){let e=SS();hD(),ey(e.hint())}}var _=class t{title=rn.required();hint=rn(null);icon=rn(`inbox`);static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`ui-empty`]],inputs:{title:[1,`title`],hint:[1,`hint`],icon:[1,`icon`]},ngContentSelectors:b,decls:7,vars:4,consts:[[`role`,`note`,1,`empty`],[`aria-hidden`,`true`,1,`empty__glyph`],[3,`name`,`size`],[1,`empty__title`],[1,`empty__hint`]],template:function(e,o){e&1&&(TS(),da(0,`div`,0)(1,`div`,1),Sa(2,`ui-icon`,2),vd(),da(3,`p`,3),qS(4),vd(),dS(5,f,2,1,`p`,4),MS(6),vd()),e&2&&(hD(2),qm(`name`,o.icon())(`size`,22),hD(2),ey(o.title()),hD(),hS(o.hint()?5:-1))},dependencies:[cE],styles:[`.empty[_ngcontent-%COMP%]{display:grid;place-items:center;gap:var(--%NS%space-2);padding:var(--%NS%space-8) var(--%NS%space-6);border:1px dashed var(--%NS%border);border-radius:var(--%NS%radius-lg);color:var(--%NS%fg-muted);text-align:center;background:color-mix(in srgb,var(--%NS%bg-hover) 45%,transparent)}.empty__glyph[_ngcontent-%COMP%]{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;margin-bottom:var(--%NS%space-1);color:var(--%NS%accent-ink);background:var(--%NS%accent-bg);border:1px solid color-mix(in srgb,var(--%NS%accent) 30%,transparent)}.empty__title[_ngcontent-%COMP%]{font-weight:600;color:var(--%NS%fg);margin:0}.empty__hint[_ngcontent-%COMP%]{font-size:var(--%NS%font-sm);margin:0;max-width:46ch}`]})};export{_ as t}; \ No newline at end of file diff --git a/portal/assets/chunk-1IC1Ht1p.js b/portal/assets/chunk-1IC1Ht1p.js deleted file mode 100644 index 5ec60aa..0000000 --- a/portal/assets/chunk-1IC1Ht1p.js +++ /dev/null @@ -1,3 +0,0 @@ -import{i as l,r as k}from"./chunk-DjkjLihA.js";import{$ as da,Dt as pS,Et as p,F as Wm,Gt as wS,K as aC,Lt as tn,M as Ta,Mt as sC,N as Uh,P as WS,Q as cE,Tt as oC,X as bS,Xt as yd,Z as ba,_ as Km,at as ey,ct as gS,gt as k$1,h as Jm,ht as jh,it as ei,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,xt as nC,yt as mS,zt as uS}from"./chunk-BelLryvf.js";import{r as g}from"./main-A2NKRJGT.js";import{a as l$1,s as y}from"./chunk-0WpwvubF.js";import{t as _}from"./chunk-BKRLVsID.js";import{t as D}from"./chunk-CiuPOfJ0.js";import{n as k$2,t as I}from"./chunk-D2KAfPv6.js";import{t as T$1}from"./chunk-BBusSOqc.js";var ee=n=>({time:n});var T=(n,i)=>i.file;var te=(n,i)=>i.forge+`/`+i.scenario_id;var ne=(n,i)=>i.id;function ie(n,i){n&1&&(da(0,`section`,3),ba(1,`ui-state-badge`,6),da(2,`span`,7),WS(3),oC(4,`t`),yd()()),n&2&&(hD(3),Jm(sC(4,1,`lab.unavailable`)))}function ae(n,i){if(n&1){let e=wS();da(0,`ui-error`,8),Ta(`retry`,function(){jh(e);let c=bS();return Uh(c.load())}),yd()}n&2&&Wm(`error`,i)}function oe(n,i){n&1&&(da(0,`section`,5),ba(1,`ui-skeleton`,9),yd()),n&2&&(hD(),Wm(`lines`,3))}function re(n,i){if(n&1&&(da(0,`span`),WS(1),yd()),n&2){let e=bS();hD(),Dd(` · `,e.dir)}}function le(n,i){if(n&1&&(da(0,`span`),WS(1),oC(2,`t`),yd()),n&2){let e=bS(2);hD(),Dd(` · `,aC(2,1,`common.updatedAt`,nC(4,ee,e.stamp(i))))}}function ce(n,i){n&1&&(ba(0,`ui-empty`,11),oC(1,`t`),oC(2,`t`)),n&2&&Wm(`title`,sC(1,2,`lab.empty.title`))(`hint`,sC(2,4,`lab.empty.subtitle`))}function de(n,i){if(n&1&&(da(0,`option`,17),WS(1),yd()),n&2){let e=i.$implicit;Wm(`value`,e.file),hD(),Jm(e.file)}}function pe(n,i){if(n&1&&(da(0,`option`,17),WS(1),yd()),n&2){let e=i.$implicit;Wm(`value`,e.file),hD(),Jm(e.file)}}function se(n,i){if(n&1){let e=wS();da(0,`tr`)(1,`td`)(2,`code`),WS(3),yd()(),da(4,`td`),WS(5),yd(),da(6,`td`),WS(7),yd(),da(8,`td`,31),WS(9),yd(),da(10,`td`,32),WS(11),yd(),da(12,`td`),WS(13),yd(),da(14,`td`)(15,`button`,33),Ta(`click`,function(){let c=jh(e).$implicit,_=bS(3);return Uh(_.exportJson(c))}),WS(16),oC(17,`t`),yd()()()}if(n&2){let e=i.$implicit,o=bS(3);Km(`sel`,e.file===o.runA()),hD(3),Jm(e.file),hD(2),Jm(e.forges.length),hD(2),Jm(o.countOf(e,null)),hD(2),Jm(o.countOf(e,`pass`)),hD(2),Jm(o.countOf(e,`fail`)),hD(2),Jm(o.countOf(e,`skipped`)),hD(3),Dd(` `,sC(17,9,`lab.export.json`),` `)}}function me(n,i){if(n&1){let e=wS();da(0,`button`,25),Ta(`click`,function(){let c=jh(e).$implicit,_=bS(3);return Uh(_.forge.set(c))}),WS(1),yd()}if(n&2){let e=i.$implicit,o=bS(3);Km(`on`,o.forge()===e),hD(),Dd(` `,e,` `)}}function _e(n,i){if(n&1&&(da(0,`span`,36),WS(1),yd()),n&2){let e=i.$implicit,o=bS().$implicit,c=bS(3);Ar(`title`,e),hD(),ey(` `,e,`=`,c.metricText(o,e),` `)}}function ue(n,i){if(n&1&&(da(0,`tr`)(1,`td`)(2,`code`),WS(3),yd()(),da(4,`td`),WS(5),yd(),da(6,`td`),ba(7,`ui-state-badge`,34),yd(),da(8,`td`),WS(9),yd(),da(10,`td`,35),gS(11,_e,2,3,`span`,36,pS),yd(),da(13,`td`,7),WS(14),yd()()),n&2){let e=i.$implicit,o=bS(3);hD(3),Jm(e.forge),hD(2),Jm(e.scenario_id),hD(2),Wm(`state`,o.badgeFor(e.verdict)),hD(2),Jm(e.duration_ms!=null?e.duration_ms+`ms`:`—`),hD(2),mS(o.metricKeys(e)),hD(3),Jm(e.detail||`—`)}}function xe(n,i){if(n&1&&(da(0,`tr`)(1,`td`)(2,`code`),WS(3),yd(),WS(4),yd(),da(5,`td`),ba(6,`ui-state-badge`,34),yd(),da(7,`td`),ba(8,`ui-state-badge`,34),yd()()),n&2){let e=i.$implicit,o=bS(4);hD(3),Jm(e.forge),hD(),Dd(` `,e.id,` `),hD(2),Wm(`state`,o.badgeFor(e.a)),hD(2),Wm(`state`,o.badgeFor(e.b))}}function fe(n,i){if(n&1){let e=wS();da(0,`section`,28)(1,`div`,13)(2,`h2`),ba(3,`ui-icon`,37),WS(4),oC(5,`t`),yd(),da(6,`button`,33),Ta(`click`,function(){jh(e);let c=bS(3);return Uh(c.exportComparisonMd())}),WS(7),oC(8,`t`),yd()(),da(9,`table`,19)(10,`thead`)(11,`tr`)(12,`th`,20),WS(13),oC(14,`t`),yd(),da(15,`th`,20),WS(16),yd(),da(17,`th`,20),WS(18),yd()()(),da(19,`tbody`),gS(20,xe,9,4,`tr`,null,ne),yd()()()}if(n&2){let e=bS(3);hD(3),Wm(`size`,15),hD(),Jm(sC(5,6,`lab.compare.title`)),hD(3),Dd(` `,sC(8,8,`lab.export.md`),` `),hD(6),Jm(sC(14,10,`lab.col.scenario`)),hD(3),Jm(e.runA()),hD(2),Jm(e.runB()),hD(2),mS(e.comparison())}}function be(n,i){if(n&1){let e=wS();da(0,`details`,39)(1,`summary`)(2,`code`),WS(3),yd(),da(4,`button`,33),Ta(`click`,function(c){let _=jh(e).$implicit;return bS(4).exportReport(_.file,_.content),Uh(c.preventDefault())}),WS(5),oC(6,`t`),yd()(),da(7,`pre`,40),WS(8),yd()()}if(n&2){let e=i.$implicit;hD(3),Jm(e.file),hD(2),Dd(` `,sC(6,3,`lab.export.md`),` `),hD(3),Jm(e.content)}}function ge(n,i){if(n&1&&(da(0,`section`,29)(1,`div`,13)(2,`h2`),ba(3,`ui-icon`,38),WS(4),oC(5,`t`),yd()(),gS(6,be,9,5,`details`,39,T),yd()),n&2){let e=bS(2);hD(3),Wm(`size`,15),hD(),Jm(sC(5,2,`lab.reports`)),hD(2),mS(e.reports)}}function ye(n,i){if(n&1&&(da(0,`p`,7),WS(1),yd()),n&2){let e=i.$implicit;hD(),Jm(e)}}function ve(n,i){if(n&1&&(da(0,`section`,30)(1,`h2`),WS(2),oC(3,`t`),yd(),gS(4,ye,2,1,`p`,7,pS),yd()),n&2){let e=bS(2);hD(2),Jm(sC(3,1,`lab.notes`)),hD(2),mS(e.notes)}}function Ce(n,i){if(n&1){let e=wS();da(0,`section`,12)(1,`div`,13)(2,`h2`),ba(3,`ui-icon`,14),WS(4),oC(5,`t`),yd(),da(6,`div`,15)(7,`label`),WS(8),oC(9,`t`),da(10,`select`,16),Ta(`change`,function(c){jh(e);let _=bS(2);return Uh(_.runA.set(c.target.value))}),gS(11,de,2,2,`option`,17,T),yd()(),da(13,`label`),WS(14),oC(15,`t`),da(16,`select`,16),Ta(`change`,function(c){jh(e);let _=bS(2);return Uh(_.runB.set(c.target.value))}),da(17,`option`,18),WS(18,`—`),yd(),gS(19,pe,2,2,`option`,17,T),yd()()()(),da(21,`table`,19)(22,`thead`)(23,`tr`)(24,`th`,20),WS(25),oC(26,`t`),yd(),da(27,`th`,20),WS(28),oC(29,`t`),yd(),da(30,`th`,20),WS(31),oC(32,`t`),yd(),da(33,`th`,20),WS(34),oC(35,`t`),yd(),da(36,`th`,20),WS(37),oC(38,`t`),yd(),da(39,`th`,20),WS(40),oC(41,`t`),yd(),ba(42,`th`,20),yd()(),da(43,`tbody`),gS(44,se,18,11,`tr`,21,T),yd()()(),da(46,`section`,22)(47,`div`,13)(48,`h2`),ba(49,`ui-icon`,23),WS(50),oC(51,`t`),yd(),da(52,`div`,24)(53,`button`,25),Ta(`click`,function(){jh(e);let c=bS(2);return Uh(c.forge.set(``))}),WS(54),oC(55,`t`),yd(),gS(56,me,2,3,`button`,26,pS),yd()(),da(58,`table`,27)(59,`thead`)(60,`tr`)(61,`th`,20),WS(62),oC(63,`t`),yd(),da(64,`th`,20),WS(65),oC(66,`t`),yd(),da(67,`th`,20),WS(68),oC(69,`t`),yd(),da(70,`th`,20),WS(71),oC(72,`t`),yd(),da(73,`th`,20),WS(74),oC(75,`t`),yd(),da(76,`th`,20),WS(77),oC(78,`t`),yd()()(),da(79,`tbody`),gS(80,ue,15,5,`tr`,null,te),yd()()(),uS(82,fe,22,12,`section`,28),uS(83,ge,8,4,`section`,29),uS(84,ve,6,3,`section`,30)}if(n&2){let e=bS(),o=bS();hD(3),Wm(`size`,15),hD(),Jm(sC(5,26,`lab.runs`)),hD(4),Dd(``,sC(9,28,`lab.compare.a`),` `),hD(2),Wm(`value`,o.runA()),hD(),mS(e.runs),hD(3),Dd(``,sC(15,30,`lab.compare.b`),` `),hD(2),Wm(`value`,o.runB()),hD(3),mS(e.runs),hD(6),Jm(sC(26,32,`lab.col.file`)),hD(3),Jm(sC(29,34,`lab.col.forges`)),hD(3),Jm(sC(32,36,`lab.col.scenarios`)),hD(3),Jm(sC(35,38,`lab.col.pass`)),hD(3),Jm(sC(38,40,`lab.col.fail`)),hD(3),Jm(sC(41,42,`lab.col.skipped`)),hD(4),mS(e.runs),hD(5),Wm(`size`,15),hD(),Jm(sC(51,44,`lab.catalog`)),hD(3),Km(`on`,!o.forge()),hD(),Dd(` `,sC(55,46,`lab.filter.all`),` `),hD(2),mS(o.forgeNames()),hD(6),Jm(sC(63,48,`lab.col.forge`)),hD(3),Jm(sC(66,50,`lab.col.scenario`)),hD(3),Jm(sC(69,52,`lab.col.verdict`)),hD(3),Jm(sC(72,54,`lab.col.duration`)),hD(3),Jm(sC(75,56,`lab.col.metrics`)),hD(3),Jm(sC(78,58,`lab.col.detail`)),hD(3),mS(o.scenarioRows()),hD(2),fS(o.comparison().length?82:-1),hD(),fS(e.reports.length?83:-1),hD(),fS(e.notes.length?84:-1)}}function Se(n,i){if(n&1&&(da(0,`p`,10)(1,`code`),WS(2,`GET /api/v1/lab`),yd(),uS(3,re,2,1,`span`),uS(4,le,3,6,`span`),yd(),uS(5,ce,3,6,`ui-empty`,11)(6,Ce,85,60)),n&2){let e,o=i,c=bS();hD(3),fS(o.dir?3:-1),hD(),fS((e=c.src.loadedAt())?4:-1,e),hD(),fS(o.runs.length?6:5)}}var Z=class n{api=p(g);src=new l$1;data=tn(()=>this.src.data());forge=k$1(``);runA=k$1(``);runB=k$1(``);ngOnInit(){this.load()}async load(){await this.src.load(()=>this.api.lab())}forgeNames(){let i=this.data();if(!i)return[];let e=new Set;for(let o of i.runs)for(let c of o.forges)c.forge&&e.add(c.forge);return[...e].sort()}scenarioRows(){let i=this.data(),e=he(this,`a`),o=[],c=this.runA()||e;for(let _ of i?.runs??[])if(!(c&&_.file!==c)){for(let f of _.forges)if(!(this.forge()&&f.forge!==this.forge()))for(let P of f.results??[])o.push(l(k({},P),{forge:f.forge??`?`,runFile:_.file}))}return o}countOf(i,e){let o=0;for(let c of i.forges)for(let _ of c.results??[])(e===null||_.verdict===e)&&o++;return o}comparison(){let i=this.data(),e=[];if(!i||!this.runA()||!this.runB()||this.runA()===this.runB())return e;let o=f=>{let P=new Map,O=i.runs.find(I=>I.file===f);for(let I of O?.forges??[])for(let M of I.results??[])P.set(`${I.forge}|${M.scenario_id}`,M.verdict);return P},c=o(this.runA()),_=o(this.runB());for(let f of new Set([...c.keys(),..._.keys()])){let[P,O]=f.split(`|`);e.push({forge:P,id:O,a:c.get(f)??`absent`,b:_.get(f)??`absent`})}return e.sort((f,P)=>f.id.localeCompare(P.id))}metricKeys(i){return Object.keys(i.metrics??{})}metricText(i,e){let o=i.metrics?.[e];return!o||o.state!==`measured`||o.value===null?`—`:`${o.value}${o.unit&&o.unit!==`ratio`?o.unit:``}`}badgeFor(i){return i===`pass`?`PASS`:i===`fail`?`FAIL`:i===`not_applicable`?`not_applicable`:`SKIPPED`}exportJson(i){let e=this.data()?.runs.find(o=>o.file===i.file);e&&this.download(i.file.replace(/\.jsonl$/,`.json`),JSON.stringify(e,null,2),`application/json`)}exportReport(i,e){this.download(i,e,`text/markdown`)}exportComparisonMd(){let i=[`# Lab comparison ${this.runA()} vs ${this.runB()}`,``,`| scenario | A | B |`,`|---|---|---|`];for(let e of this.comparison())i.push(`| ${e.forge}/${e.id} | ${e.a} | ${e.b} |`);this.download(`lab-compare-${this.runA()}-vs-${this.runB()}.md`,i.join(` -`)+` -`,`text/markdown`)}download(i,e,o){let c=document.createElement(`a`);c.href=URL.createObjectURL(new Blob([e],{type:o})),c.download=i,c.click(),URL.revokeObjectURL(c.href)}stamp=y;static ɵfac=function(e){return new(e||n)};static ɵcmp=ei({type:n,selectors:[[`page-lab`]],decls:11,vars:15,consts:[[3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[`data-section`,`unavailable`,`role`,`note`,1,`card`,`unv`],[3,`error`],[`role`,`status`,1,`card`],[`state`,`UNVERIFIED`],[1,`muted`],[3,`retry`,`error`],[`kind`,`row`,3,`lines`],[1,`src`],[`icon`,`pulse`,`data-section`,`empty`,3,`title`,`hint`],[`data-section`,`runs`,1,`card`],[1,`sec__head`],[`name`,`history`,3,`size`],[1,`row`],[3,`change`,`value`],[3,`value`],[`value`,``],[1,`tbl`],[`scope`,`col`],[3,`sel`],[`data-section`,`catalog`,1,`card`],[`name`,`compass`,3,`size`],[1,`chips`],[1,`chip`,3,`click`],[1,`chip`,3,`on`],[`data-table`,`scenarios`,1,`tbl`],[`data-section`,`compare`,1,`card`],[`data-section`,`reports`,1,`card`],[`data-section`,`notes`,1,`card`],[1,`ok`],[1,`bad`],[1,`btn`,`sm`,3,`click`],[3,`state`],[1,`metrics`],[1,`metric`],[`name`,`graph`,3,`size`],[`name`,`tasks`,3,`size`],[1,`rep`],[1,`rep__body`]],template:function(e,o){if(e&1&&(da(0,`ui-page-header`,0),oC(1,`t`),oC(2,`t`),da(3,`button`,1),Ta(`click`,function(){return o.load()}),ba(4,`ui-icon`,2),WS(5),oC(6,`t`),yd()(),uS(7,ie,5,3,`section`,3),uS(8,ae,1,1,`ui-error`,4),uS(9,oe,2,1,`section`,5),uS(10,Se,7,3)),e&2){let c,_;Wm(`title`,sC(1,9,`lab.title`))(`subtitle`,sC(2,11,`lab.subtitle`)),hD(3),Wm(`disabled`,o.src.loading()),hD(),Wm(`size`,15),hD(),Dd(` `,sC(6,13,`state.refresh`),` `),hD(2),fS(o.src.unavailable()?7:-1),hD(),fS((c=o.src.error())?8:-1,c),hD(),fS(o.src.loading()&&!o.data()?9:-1),hD(),fS((_=o.data())?10:-1,_)}},dependencies:[T$1,I,_,D,cE,k$2,aE],styles:[`.unv[_ngcontent-%COMP%]{display:flex;gap:10px;align-items:center}.src[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.sec__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px}.row[_ngcontent-%COMP%]{display:flex;gap:12px;align-items:center}.chips[_ngcontent-%COMP%]{display:flex;gap:6px;flex-wrap:wrap}.chip[_ngcontent-%COMP%]{padding:3px 10px;border-radius:99px;border:1px solid var(--%NS%border);background:none;cursor:pointer}.chip.on[_ngcontent-%COMP%]{background:var(--%NS%accent-fill);color:var(--%NS%accent-fg)}.tbl[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;font-size:var(--%NS%font-sm)}.tbl[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .tbl[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{text-align:left;padding:6px 8px;border-bottom:1px solid var(--%NS%border)}.ok[_ngcontent-%COMP%]{color:var(--%NS%ok)}.bad[_ngcontent-%COMP%]{color:var(--%NS%error)}.sel[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--%NS%accent) 10%,transparent)}.metrics[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:4px;max-width:420px}.metric[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);padding:1px 6px;border:1px solid var(--%NS%border);border-radius:4px}.rep__body[_ngcontent-%COMP%]{max-height:340px;overflow:auto;font-size:var(--%NS%font-xs);white-space:pre-wrap}select[_ngcontent-%COMP%]{margin-left:6px}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}`]})};function he(n,i){let e=n.data();return e?.runs.length?e.runs[e.runs.length-1].file:``}export{Z as LabPage}; \ No newline at end of file diff --git a/portal/assets/chunk-92Xoau85.js b/portal/assets/chunk-92Xoau85.js new file mode 100644 index 0000000..82f2cb9 --- /dev/null +++ b/portal/assets/chunk-92Xoau85.js @@ -0,0 +1 @@ +import{$ as dS,At as qm,Bt as tn,Et as p,F as Sa,H as Xm,J as aC,Jt as vd,P as SS,Q as cE,Qt as yS,S as Ma,Ut as uC,Y as aE,Z as bd,at as ey,ct as hD,et as da,gt as k,i as Ar,it as ei,jt as rC,kt as qS,lt as hE,ot as gS,p as Hh,s as DS,ut as hS,vt as lC,xt as nC,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{i as n,r as g,s as y}from"./main-XW2ZMSO5.js";import{t as _}from"./chunk-16deWS0U.js";import{t as D}from"./chunk-Bg2lccQE.js";import{n as k$1,t as I}from"./chunk-DQtX_-dj.js";import{t as T}from"./chunk-BGgpmc9t.js";var J=()=>[1,2,3];var Q=t=>({count:t});var M=(t,i)=>i.id;function W(t,i){if(t&1){let e=DS();da(0,`ui-error`,14),Ma(`retry`,function(){Hh(e);let d=SS();return Vh(d.load())}),vd()}t&2&&qm(`error`,i)}function X(t,i){t&1&&Sa(0,`ui-skeleton`,15)}function Y(t,i){t&1&&(da(0,`section`,2),mS(1,X,1,0,`ui-skeleton`,15,gS),vd()),t&2&&(hD(),yS(nC(0,J)))}function Z(t,i){if(t&1&&(da(0,`span`),qS(1),vd()),t&2){let e=SS();hD(),ey(e.detail)}}function ee(t,i){if(t&1&&qS(0),t&2){let e=SS(2);bd(` — `,e.unlock,` `)}}function te(t,i){if(t&1&&(da(0,`p`,18)(1,`code`),qS(2),vd(),dS(3,ee,1,1),vd()),t&2){let e=SS();hD(2),ey(e.refusal),hD(),hS(e.unlock?3:-1)}}function ie(t,i){if(t&1&&(da(0,`section`,3)(1,`p`,16),Sa(2,`ui-state-badge`,17),dS(3,Z,2,1,`span`),vd(),dS(4,te,4,2,`p`,18),vd()),t&2){let e=i;hD(2),qm(`state`,e.status),hD(),hS(e.detail?3:-1),hD(),hS(e.refusal?4:-1)}}function ne(t,i){t&1&&(da(0,`span`,21),Sa(1,`ui-icon`,24),qS(2),aC(3,`t`),vd()),t&2&&(hD(),qm(`size`,12),hD(),bd(` `,lC(3,2,`profiles.current`),` `))}function ae(t,i){if(t&1&&(da(0,`li`),qS(1),vd()),t&2){let e=i.$implicit;Ar(`data-on`,e.on||null),hD(),ey(e.id)}}function oe(t,i){if(t&1){let e=DS();da(0,`button`,25),Ma(`click`,function(){Hh(e);let d=SS().$implicit,y=SS();return Vh(y.apply(d.id))}),qS(1),aC(2,`t`),vd()}if(t&2){let e=SS(2);qm(`disabled`,e.busy()),hD(),bd(` `,lC(2,2,`profiles.apply`),` `)}}function re(t,i){if(t&1&&(da(0,`article`,5)(1,`div`,19)(2,`h2`),Sa(3,`ui-icon`,20),qS(4),vd(),dS(5,ne,4,4,`span`,21),vd(),da(6,`p`,8),qS(7),aC(8,`t`),vd(),da(9,`ul`,22),mS(10,ae,2,2,`li`,null,M),vd(),dS(12,oe,3,4,`button`,23),vd()),t&2){let e=i.$implicit,o=SS();Ar(`data-current`,e.current||null),hD(3),qm(`size`,16),hD(),ey(e.id),hD(),hS(e.current?5:-1),hD(2),ey(lC(8,6,o.description(e))),hD(3),yS(o.componentList(e)),hD(2),hS(e.current?-1:12)}}function le(t,i){t&1&&(Sa(0,`ui-empty`,26),aC(1,`t`),aC(2,`t`)),t&2&&qm(`title`,lC(1,2,`empty.noData`))(`hint`,lC(2,4,`empty.noData.hint`))}function pe(t,i){if(t&1&&dS(0,le,3,6,`ui-empty`,26),t&2){let e=SS();hS(!e.error()&&!e.loading()?0:-1)}}function ce(t,i){if(t&1&&(da(0,`option`,12),qS(1),vd()),t&2){let e=i.$implicit,o=SS();qm(`value`,e.id)(`selected`,e.id===o.compareA()),hD(),ey(e.id)}}function de(t,i){if(t&1&&(da(0,`option`,12),qS(1),vd()),t&2){let e=i.$implicit,o=SS();qm(`value`,e.id)(`selected`,e.id===o.compareB()),hD(),ey(e.id)}}function se(t,i){t&1&&Sa(0,`ui-icon`,24),t&2&&qm(`size`,14)}function me(t,i){t&1&&Sa(0,`ui-icon`,24),t&2&&qm(`size`,14)}function _e(t,i){if(t&1&&(da(0,`tr`)(1,`td`)(2,`code`),qS(3),vd()(),da(4,`td`),dS(5,se,1,1,`ui-icon`,24),qS(6),aC(7,`t`),vd(),da(8,`td`),dS(9,me,1,1,`ui-icon`,24),qS(10),aC(11,`t`),vd()()),t&2){let e=i.$implicit;Ar(`data-diff`,e.a!==e.b||null),hD(3),ey(e.id),hD(),Xm(`on`,e.a)(`off`,!e.a),hD(),hS(e.a?5:-1),hD(),bd(` `,lC(7,14,e.a?`state.enabled`:`state.disabled`),` `),hD(2),Xm(`on`,e.b)(`off`,!e.b),hD(),hS(e.b?9:-1),hD(),bd(` `,lC(11,16,e.b?`state.enabled`:`state.disabled`),` `)}}function fe(t,i){t&1&&(qS(0),aC(1,`t`)),t&2&&bd(` `,lC(1,1,`profiles.compare.same`),` `)}function ue(t,i){if(t&1&&(qS(0),aC(1,`t`)),t&2){let e=SS(2);bd(` `,uC(1,1,`profiles.compare.differences`,rC(4,Q,e.diffCount())),` `)}}function ge(t,i){if(t&1&&(da(0,`table`,27)(1,`thead`)(2,`tr`)(3,`th`,28),qS(4),aC(5,`t`),vd(),da(6,`th`,28),qS(7),vd(),da(8,`th`,28),qS(9),vd()()(),da(10,`tbody`),mS(11,_e,12,18,`tr`,null,M),vd()(),da(13,`p`,29),dS(14,fe,2,3)(15,ue,2,6),vd()),t&2){let e=SS();hD(4),ey(lC(5,4,`profiles.compare.component`)),hD(3),ey(e.compareA()),hD(2),ey(e.compareB()),hD(2),yS(e.compareRows()),hD(3),hS(e.diffCount()===0?14:15)}}function ye(t,i){t&1&&(Sa(0,`ui-empty`,13),aC(1,`t`)),t&2&&qm(`title`,lC(1,1,`empty.noData`))}var G=class t{api=p(g);confirm=p(y);profiles=k([]);receipt=k(null);error=k(null);busy=k(!1);loading=k(!0);compareA=k(null);compareB=k(null);constructor(){this.load()}async load(){this.error.set(null),this.loading.set(!0);try{let i=await hE(this.api.profiles());this.profiles.set(i),i.length&&(!this.compareA()||!this.compareB())&&(this.compareA.set(i.find(e=>e.current)?.id??i[0].id),this.compareB.set(i.find(e=>!e.current)?.id??i[0].id))}catch(i){this.error.set(i instanceof n?i:new n(0))}finally{this.loading.set(!1)}}description(i){return i.description_key}componentList(i){return Object.entries(i.components??{}).map(([e,o])=>({id:e,on:o}))}pickCompare(i,e){let o=e.target.value;i===`a`?this.compareA.set(o):this.compareB.set(o)}compareRows=tn(()=>{let i=this.profiles().find(d=>d.id===this.compareA()),e=this.profiles().find(d=>d.id===this.compareB());if(!i||!e)return[];let o=[...new Set([...Object.keys(i.components??{}),...Object.keys(e.components??{})])];return o.sort(),o.map(d=>({id:d,a:!!i.components?.[d],b:!!e.components?.[d]}))});diffCount=tn(()=>this.compareRows().filter(i=>i.a!==i.b).length);async apply(i){if(await this.confirm.ask({title:`profiles.apply`,message:`profiles.apply.confirm`,confirmKey:`profiles.apply`})){this.busy.set(!0);try{let o=await hE(this.api.profilesApply(i));this.receipt.set(o),await this.load()}catch(o){this.error.set(o instanceof n?o:new n(0))}finally{this.busy.set(!1)}}}static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`page-profiles`]],decls:36,vars:29,consts:[[3,`title`,`subtitle`],[3,`error`],[`role`,`status`,`aria-live`,`polite`,1,`grid`],[`data-lift`,``,1,`card`,`receipt`],[1,`grid`],[`data-lift`,``,1,`card`],[`aria-labelledby`,`compare-h`,1,`card`,`compare`],[`id`,`compare-h`],[1,`muted`],[1,`compare__pickers`],[1,`picker`],[1,`input`,3,`change`],[3,`value`,`selected`],[3,`title`],[3,`retry`,`error`],[`kind`,`card`],[1,`receipt__status`],[3,`state`],[1,`refusal`],[1,`card__head`],[`name`,`profiles`,3,`size`],[1,`current`],[1,`comps`],[1,`btn`,`btn--primary`,3,`disabled`],[`name`,`check`,3,`size`],[1,`btn`,`btn--primary`,3,`click`,`disabled`],[3,`title`,`hint`],[1,`table`,`compare__table`],[`scope`,`col`],[1,`muted`,`compare__summary`]],template:function(e,o){if(e&1&&(Sa(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),dS(3,W,1,1,`ui-error`,1),dS(4,Y,3,1,`section`,2),dS(5,ie,5,3,`section`,3),da(6,`section`,4),mS(7,re,13,8,`article`,5,M,!1,pe,1,1),vd(),da(10,`section`,6)(11,`h2`,7),qS(12),aC(13,`t`),vd(),da(14,`p`,8),qS(15),aC(16,`t`),vd(),da(17,`div`,9)(18,`label`,10)(19,`span`),qS(20),aC(21,`t`),vd(),da(22,`select`,11),aC(23,`t`),Ma(`change`,function(y){return o.pickCompare(`a`,y)}),mS(24,ce,2,3,`option`,12,M),vd()(),da(26,`label`,10)(27,`span`),qS(28),aC(29,`t`),vd(),da(30,`select`,11),aC(31,`t`),Ma(`change`,function(y){return o.pickCompare(`b`,y)}),mS(32,de,2,3,`option`,12,M),vd()()(),dS(34,ge,16,6)(35,ye,2,3,`ui-empty`,13),vd()),e&2){let d,y;qm(`title`,lC(1,13,`profiles.title`))(`subtitle`,lC(2,15,`profiles.subtitle`)),hD(3),hS((d=o.error())?3:-1,d),hD(),hS(o.loading()?4:-1),hD(),hS((y=o.receipt())?5:-1,y),hD(2),yS(o.profiles()),hD(5),ey(lC(13,17,`profiles.compare`)),hD(3),ey(lC(16,19,`profiles.compare.hint`)),hD(5),ey(lC(21,21,`profiles.compare.a`)),hD(2),Ar(`aria-label`,lC(23,23,`profiles.compare.a`)),hD(2),yS(o.profiles()),hD(4),ey(lC(29,25,`profiles.compare.b`)),hD(2),Ar(`aria-label`,lC(31,27,`profiles.compare.b`)),hD(2),yS(o.profiles()),hD(2),hS(o.compareRows().length?34:o.profiles().length&&!o.loading()?35:-1)}},dependencies:[T,_,D,I,cE,k$1,aE],styles:[`.grid[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-4);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin-bottom:var(--%NS%space-4)}.card[data-current][_ngcontent-%COMP%]{border-color:color-mix(in srgb,var(--%NS%accent) 55%,transparent);background:linear-gradient(160deg,color-mix(in srgb,var(--%NS%accent) 7%,var(--%NS%bg-elevated)) 0%,var(--%NS%bg-elevated) 55%);box-shadow:var(--%NS%elev-card),0 0 0 1px color-mix(in srgb,var(--%NS%accent) 18%,transparent)}.card__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.card[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-weight:650;letter-spacing:-.01em;font-size:var(--%NS%font-lg)}.card__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;text-transform:capitalize;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.card__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);margin-top:0}.comps[_ngcontent-%COMP%]{list-style:none;padding:0;margin:var(--%NS%space-3) 0;display:flex;flex-wrap:wrap;gap:6px}.comps[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);padding:2px 8px;border-radius:var(--%NS%radius-pill);border:1px solid var(--%NS%border);color:var(--%NS%fg-muted)}.comps[_ngcontent-%COMP%] li[data-on][_ngcontent-%COMP%]{border-color:var(--%NS%ok);color:var(--%NS%ok)}.current[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:5px;color:var(--%NS%accent-ink);font-weight:600;font-size:var(--%NS%font-xs);background:var(--%NS%accent-bg);border:1px solid color-mix(in srgb,var(--%NS%accent) 35%,transparent);border-radius:var(--%NS%radius-pill);padding:2px var(--%NS%space-2)}.receipt[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.receipt__status[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);margin:0}.refusal[_ngcontent-%COMP%]{color:var(--%NS%warn)}.compare[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.compare__pickers[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-3);margin:var(--%NS%space-3) 0}.picker[_ngcontent-%COMP%]{display:grid;gap:4px;font-size:var(--%NS%font-sm);font-weight:600}.picker[_ngcontent-%COMP%] .input[_ngcontent-%COMP%]{min-width:180px}.compare__table[_ngcontent-%COMP%] td.on[_ngcontent-%COMP%]{color:var(--%NS%ok);font-weight:600}.compare__table[_ngcontent-%COMP%] td.off[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.compare__table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{vertical-align:-2px;margin-right:4px}.compare__table[_ngcontent-%COMP%] tr[data-diff][_ngcontent-%COMP%]{background:color-mix(in srgb,var(--%NS%accent) 7%,transparent)}.compare__table[_ngcontent-%COMP%] tr[data-diff][_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{border-left:3px solid var(--%NS%accent);font-weight:650}.compare__summary[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 0}`]})};export{G as ProfilesPage}; \ No newline at end of file diff --git a/portal/assets/chunk-B5UUjcvD.js b/portal/assets/chunk-B5UUjcvD.js deleted file mode 100644 index 27ede50..0000000 --- a/portal/assets/chunk-B5UUjcvD.js +++ /dev/null @@ -1,5 +0,0 @@ -import{r as k$1}from"./chunk-DjkjLihA.js";import{a as T}from"./chunk-DJd3bKJi.js";var m={forge:{color:`#e8611c`,shape:`round-rectangle`},capability:{color:`#1d5fd1`,shape:`diamond`},skill:{color:`#7c3aed`,shape:`ellipse`},agent:{color:`#0f8a4c`,shape:`hexagon`},mcp:{color:`#c026d3`,shape:`triangle`},host:{color:`#64748b`,shape:`rectangle`},operation:{color:`#b45309`,shape:`star`},tool:{color:`#0e7490`,shape:`pentagon`}};var v={forge:`gem`,capability:`shield-check`,skill:`skills`,agent:`agents`,mcp:`mcp`,host:`hosts`,operation:`tasks`,tool:`terminal`};var E={declares:{color:`#7d8894`},origin:{color:`#1d5fd1`},associated:{color:`#7c3aed`},bound_to:{color:`#0f8a4c`},observed:{color:`#0e7490`}};var N={loaded:`solid`,unverified:`dashed`,unavailable:`dotted`};var l=new Set([`FAILED`,`DEGRADED`,`BLOCKED`,`failed`,`error`]);function p(o){if(o.state&&l.has(o.state))return!0;let t=o.meta?.exit_code;return typeof t==`number`&&t!==0}function g(o,t){return o.unverified&&o.evidence.every(i=>t.sources[i]?.state===`unavailable`)}function F(o){let t=new Map;for(let e of o.edges)t.set(e.source,(t.get(e.source)??0)+1),t.set(e.target,(t.get(e.target)??0)+1);return{nodes:o.nodes.map(e=>k$1(k$1(k$1(k$1({id:e.id,label:e.label,kind:e.kind,unverified:e.unverified,absent:g(e,o),failed:p(e),degree:t.get(e.id)??0},e.state!==void 0?{state:e.state}:{}),e.category!==void 0?{category:e.category}:{}),e.origin!==void 0?{origin:e.origin}:{}),e.version!==void 0?{version:e.version}:{})),edges:o.edges.map(e=>({id:e.id,source:e.source,target:e.target,kind:e.kind,evidence:e.evidence,evidenceState:o.sources[e.evidence]?.state??`unverified`,evidenceEndpoint:T[e.evidence]}))}}function k(o,t){if(t===`far`)return o.label;let i=[o.state,o.category??o.origin,o.version].filter(e=>typeof e==`string`&&e!==``).join(` · `);if(t===`mid`)return i?`${o.label} -${i}`:o.label;let d=`${o.degree} rel`;return i?`${o.label} -${i} -${d}`:`${o.label} -${d}`}function x(o,t){let i=new Map,d=(r,n)=>{let a=i.get(r);a?a.push(n):i.set(r,[n])};for(let r of o.nodes)if(t===`kind`)d(`grp:kind:${r.kind}`,r.id);else if(t===`forge`){if(r.kind===`forge`)continue;d(`grp:forge:${r.origin??`unscoped`}`,r.id)}else r.kind===`mcp`&&r.category&&d(`grp:host:${r.category}`,r.id);let e=r=>r.slice(r.indexOf(`:`,4)+1);return{groups:[...i.entries()].map(([r,n])=>({id:r,label:e(r),members:n.sort()})).sort((r,n)=>r.idt.length)&&(e=t.length);for(var r=0,a=Array(e);r=t.length?{done:!0}:{done:!1,value:t[a++]}},e:function(u){throw u},f:n}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var u=r.next();return o=u.done,u},e:function(u){s=!0,i=u},f:function(){try{o||r.return==null||r.return()}finally{if(s)throw i}}}}function gf(t,e,r){return(e=pf(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Cc(t){if(typeof Symbol<`u`&&t[Symbol.iterator]!=null||t[`@@iterator`]!=null)return Array.from(t)}function Tc(t,e){var r=t==null?null:typeof Symbol<`u`&&t[Symbol.iterator]||t[`@@iterator`];if(r!=null){var a,n,i,o,s=[],u=!0,l=!1;try{if(i=(r=r.call(t)).next,e===0){if(Object(r)!==r)return;u=!1}else for(;!(u=(a=i.call(r)).done)&&(s.push(a.value),s.length!==e);u=!0);}catch(f){l=!0,n=f}finally{try{if(!u&&r.return!=null&&(o=r.return(),Object(o)!==o))return}finally{if(l)throw n}}return s}}function Sc(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function kc(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ye(t,e){return wc(t)||Tc(t,e)||ts(t,e)||Sc()}function xn(t){return xc(t)||Cc(t)||ts(t)||kc()}function Dc(t,e){if(typeof t!=`object`||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var a=r.call(t,e);if(typeof a!=`object`)return a;throw new TypeError(`@@toPrimitive must return a primitive value.`)}return String(t)}function pf(t){var e=Dc(t,`string`);return typeof e==`symbol`?e:e+``}function je(t){"@babel/helpers - typeof";return je=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},je(t)}function ts(t,e){if(t){if(typeof t==`string`)return Oo(t,e);var r={}.toString.call(t).slice(8,-1);return r===`Object`&&t.constructor&&(r=t.constructor.name),r===`Map`||r===`Set`?Array.from(t):r===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Oo(t,e):void 0}}var Qe=typeof window>`u`?null:window;var qs=Qe?Qe.navigator:null;Qe&&Qe.document;var Pc=je(``);var yf=je({});var Bc=je(function(){});var Ac=typeof HTMLElement>`u`?`undefined`:je(HTMLElement);var Na=function(e){return e&&e.instanceString&&$e(e.instanceString)?e.instanceString():null};var Te=function(e){return e!=null&&je(e)==Pc};var $e=function(e){return e!=null&&je(e)===Bc};var Fe=function(e){return!Tt(e)&&(Array.isArray?Array.isArray(e):e!=null&&e instanceof Array)};var Le=function(e){return e!=null&&je(e)===yf&&!Fe(e)&&e.constructor===Object};var Rc=function(e){return e!=null&&je(e)===yf};var ce=function(e){return e!=null&&je(e)===je(1)&&!isNaN(e)};var mf=function(e){return ce(e)&&Math.floor(e)===e};var En=function(e){if(Ac!==`undefined`)return e!=null&&e instanceof HTMLElement};var Tt=function(e){return za(e)||bf(e)};var za=function(e){return Na(e)===`collection`&&e._private.single};var bf=function(e){return Na(e)===`collection`&&!e._private.single};var rs=function(e){return Na(e)===`core`};var wf=function(e){return Na(e)===`stylesheet`};var Mc=function(e){return Na(e)===`event`};var or=function(e){return e==null?!0:!!(e===``||e.match(/^\s+$/))};var Lc=function(e){return typeof HTMLElement>`u`?!1:e instanceof HTMLElement};var Ic=function(e){return Le(e)&&ce(e.x1)&&ce(e.x2)&&ce(e.y1)&&ce(e.y2)};var Oc=function(e){return Rc(e)&&$e(e.then)};var Nc=function(){return qs&&qs.userAgent.match(/msie|trident|edge/i)};var Zr=function(e,r){r||(r=function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return`undefined`;for(var i=[],o=0;or?1:0};var $c=function(e,r){return-1*Ef(e,r)};var Se=Object.assign!=null?Object.assign.bind(Object):function(t){for(var e=arguments,r=1;r1&&(g-=1),g<1/6?d+(y-d)*6*g:g<1/2?y:g<2/3?d+(y-d)*(2/3-g)*6:d}var v=new RegExp(`^`+Vc+`$`).exec(e);if(v){if(a=parseInt(v[1]),a<0?a=(360- -1*a%360)%360:a>360&&(a=a%360),a/=360,n=parseFloat(v[2]),n<0||n>100||(n=n/100,i=parseFloat(v[3]),i<0||i>100)||(i=i/100,o=v[4],o!==void 0&&(o=parseFloat(o),o<0||o>1)))return;if(n===0)s=u=l=Math.round(i*255);else{var c=i<.5?i*(1+n):i+n-i*n,h=2*i-c;s=Math.round(255*f(h,c,a+1/3)),u=Math.round(255*f(h,c,a)),l=Math.round(255*f(h,c,a-1/3))}r=[s,u,l,o]}return r};var Uc=function(e){var r,a=new RegExp(`^`+zc+`$`).exec(e);if(a){r=[];for(var n=[],i=1;i<=3;i++){var o=a[i];if(o[o.length-1]===`%`&&(n[i]=!0),o=parseFloat(o),n[i]&&(o=o/100*255),o<0||o>255)return;r.push(Math.floor(o))}var s=n[1]||n[2]||n[3],u=n[1]&&n[2]&&n[3];if(s&&!u)return;var l=a[4];if(l!==void 0){if(l=parseFloat(l),l<0||l>1)return;r.push(l)}}return r};var Kc=function(e){return Yc[e.toLowerCase()]};var Cf=function(e){return(Fe(e)?e:null)||Kc(e)||Hc(e)||Uc(e)||Wc(e)};var Yc={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};var Tf=function(e){for(var r=e.map,a=e.keys,n=a.length,i=0;i=u||R<0||m&&L>=c}function T(){var A=e();if(x(A))return k(A);d=setTimeout(T,C(A))}function k(A){return d=void 0,b&&f?w(A):(f=v=void 0,h)}function P(){d!==void 0&&clearTimeout(d),g=0,f=y=v=d=void 0}function D(){return d===void 0?h:k(e())}function B(){var A=e(),R=x(A);if(f=arguments,v=this,y=A,R){if(d===void 0)return E(y);if(m)return clearTimeout(d),d=setTimeout(T,u),w(y)}return d===void 0&&(d=setTimeout(T,u)),h}return B.cancel=P,B.flush=D,B}return yi=o,yi}var _a=Fa(ad());var mi=Qe?Qe.performance:null;var Df=mi&&mi.now?function(){return mi.now()}:function(){return Date.now()};var id=(function(){if(Qe){if(Qe.requestAnimationFrame)return function(t){Qe.requestAnimationFrame(t)};if(Qe.mozRequestAnimationFrame)return function(t){Qe.mozRequestAnimationFrame(t)};if(Qe.webkitRequestAnimationFrame)return function(t){Qe.webkitRequestAnimationFrame(t)};if(Qe.msRequestAnimationFrame)return function(t){Qe.msRequestAnimationFrame(t)}}return function(t){t&&setTimeout(function(){t(Df())},1e3/60)}})();var Cn=function(e){return id(e)};var Kt=Df;var Tr=9261;var Pf=65599;var Gr=5381;var Bf=function(e){for(var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Tr,n;n=e.next(),!n.done;)a=a*Pf+n.value|0;return a};var ka=function(e){return(arguments.length>1&&arguments[1]!==void 0?arguments[1]:Tr)*Pf+e|0};var Da=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Gr;return(r<<5)+r+e|0};var od=function(e,r){return e*2097152+r};var Jt=function(e){return e[0]*2097152+e[1]};var Qa=function(e,r){return[ka(e[0],r[0]),Da(e[1],r[1])]};var ru=function(e,r){var a={value:0,done:!1},n=0,i=e.length;return Bf({next:function(){return n=0;n--)e[n]===r&&e.splice(n,1)};var ss=function(e){e.splice(0,e.length)};var pd=function(e,r){for(var a=0;a`u`?`undefined`:je(Set))!==md?Set:bd;var zn=function(e,r){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0||r===void 0||!rs(e)){Ge(`An element must have a core reference and parameters set`);return}var n=r.group;if(n??(r.data&&r.data.source!=null&&r.data.target!=null?n=`edges`:n=`nodes`),n!==`nodes`&&n!==`edges`){Ge("An element must be of type `nodes` or `edges`; you specified `"+n+"`");return}this.length=1,this[0]=this;var i=this._private={cy:e,single:!0,data:r.data||{},position:r.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:n,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!r.selected,selectable:r.selectable===void 0?!0:!!r.selectable,locked:!!r.locked,grabbed:!1,grabbable:r.grabbable===void 0?!0:!!r.grabbable,pannable:r.pannable===void 0?n===`edges`:!!r.pannable,active:!1,classes:new ta,animation:{current:[],queue:[]},rscratch:{},scratch:r.scratch||{},edges:[],children:[],parent:r.parent&&r.parent.isNode()?r.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(i.position.x??(i.position.x=0),i.position.y??(i.position.y=0),r.renderedPosition){var o=r.renderedPosition,s=e.pan(),u=e.zoom();i.position={x:(o.x-s.x)/u,y:(o.y-s.y)/u}}var l=[];Fe(r.classes)?l=r.classes:Te(r.classes)&&(l=r.classes.split(/\s+/));for(var f=0,v=l.length;fm?1:0},f=function(p,m,b,w,E){var C;if(b??=0,E??=a,b<0)throw new Error(`lo must be non-negative`);for(w??=p.length;bP;0<=P?k++:k--)T.push(k);return T}).apply(this).reverse(),x=[],w=0,E=C.length;wD;0<=D?++T:--T)B.push(o(p,b));return B},y=function(p,m,b,w){var E,C,x;for(w??=a,E=p[b];b>m;){if(x=b-1>>1,C=p[x],w(E,C)<0){p[b]=C,b=x;continue}break}return p[b]=E},g=function(p,m,b){var w,E,C,x,T;for(b??=a,E=p.length,T=m,C=p[m],w=2*m+1;w0;){var C=m.pop(),x=g(C),T=C.id();if(c[T]=x,x!==1/0)for(var k=C.neighborhood().intersect(d),P=0;P0)for(z.unshift(M);v[$];){var F=v[$];z.unshift(F.edge),z.unshift(F.node),q=F.node,$=q.id()}return s.spawn(z)}}}};var kd={kruskal:function(e){e=e||function(b){return 1};for(var r=this.byGroup(),a=r.nodes,n=r.edges,i=a.length,o=new Array(i),s=a,u=function(w){for(var E=0;E0;){if(E(),x++,w===f){for(var T=[],k=i,P=f,D=p[P];T.unshift(k),D!=null&&T.unshift(D),k=g[P],k!=null;)P=k.id(),D=p[P];return{found:!0,distance:v[w],path:this.spawn(T),steps:x}}h[w]=!0;for(var B=b._private.edges,A=0;AD&&(d[P]=D,m[P]=k,b[P]=E),!i){var B=k*f+T;!i&&d[B]>D&&(d[B]=D,m[B]=T,b[B]=E)}}}for(var A=0;A1&&arguments[1]!==void 0?arguments[1]:o,ie=b(re),le=[],de=ie;;){if(de==null)return r.spawn();var be=m(de),ye=be.edge,Ee=be.pred;if(le.unshift(de[0]),de.same(fe)&&le.length>0)break;ye!=null&&le.unshift(ye),de=Ee}return u.spawn(le)},C=0;C=0;f--){var v=l[f],c=v[1],h=v[2];(r[c]===s&&r[h]===u||r[c]===u&&r[h]===s)&&l.splice(f,1)}for(var d=0;dn;)r=Id(Math.floor(Math.random()*r.length),e,r),a--;return r};var Od={kargerStein:function(){var e=this,r=this.byGroup(),a=r.nodes,n=r.edges;n.unmergeBy(function(z){return z.isLoop()});var i=a.length,o=n.length,s=Math.ceil(Math.pow(Math.log(i)/Math.LN2,2)),u=Math.floor(i/Ld);if(i<2){Ge(`At least 2 nodes are required for Karger-Stein algorithm`);return}for(var l=[],f=0;f1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=1/0,i=r;i1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=-1/0,i=r;i1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=0,i=0,o=r;o1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;n?e=e.slice(r,a):(a0&&e.splice(0,r));for(var s=0,u=e.length-1;u>=0;u--){var l=e[u];o?isFinite(l)||(e[u]=-1/0,s++):e.splice(u,1)}i&&e.sort(function(c,h){return c-h});var f=e.length,v=Math.floor(f/2);return f%2!==0?e[v+1+s]:(e[v-1+s]+e[v+s])/2};var Nf=function(e,r){return r===0?e:Nf(r,e%r)};var _d=function(e){for(var r=e[0],a=0;a0&&(r=Nf(r,e[a]));else return 0;return r};var Gd=function(e){return Math.PI*e/180};var Ja=function(e,r){return Math.atan2(r,e)-Math.PI/2};var us=Math.log2||function(t){return Math.log(t)/Math.log(2)};var ls=function(e){return e>0?1:e<0?-1:0};var Pr=function(e,r){return Math.sqrt(Er(e,r))};var Er=function(e,r){var a=r.x-e.x,n=r.y-e.y;return a*a+n*n};var $d=function(e){for(var r=e.length,a=0,n=0;n=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(e.w!=null&&e.h!=null&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}};var Wd=function(e){return{x1:e.x1,x2:e.x2,w:e.w,y1:e.y1,y2:e.y2,h:e.h}};var Ud=function(e){e.x1=1/0,e.y1=1/0,e.x2=-1/0,e.y2=-1/0,e.w=0,e.h=0};var Kd=function(e,r){e.x1=Math.min(e.x1,r.x1),e.x2=Math.max(e.x2,r.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,r.y1),e.y2=Math.max(e.y2,r.y2),e.h=e.y2-e.y1};var zf=function(e,r,a){e.x1=Math.min(e.x1,r),e.x2=Math.max(e.x2,r),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,a),e.y2=Math.max(e.y2,a),e.h=e.y2-e.y1};var vn=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.x1-=r,e.x2+=r,e.y1-=r,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e};var cn=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],a,n,i,o;if(r.length===1)a=n=i=o=r[0];else if(r.length===2)a=i=r[0],o=n=r[1];else if(r.length===4){var s=Ye(r,4);a=s[0],n=s[1],i=s[2],o=s[3]}return e.x1-=o,e.x2+=n,e.y1-=a,e.y2+=i,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e};var uu=function(e,r){e.x1=r.x1,e.y1=r.y1,e.x2=r.x2,e.y2=r.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1};var fs=function(e,r){return!(e.x1>r.x2||r.x1>e.x2||e.x2r.y2||r.y1>e.y2)};var rr=function(e,r,a){return e.x1<=r&&r<=e.x2&&e.y1<=a&&a<=e.y2};var lu=function(e,r){return rr(e,r.x,r.y)};var Ff=function(e,r){return rr(e,r.x1,r.y1)&&rr(e,r.x2,r.y2)};var Yd=(xi=Math.hypot)!==null&&xi!==void 0?xi:function(t,e){return Math.sqrt(t*t+e*e)};function Xd(t,e){if(t.length<3)throw new Error(`Need at least 3 vertices`);var r=function(T,k){return{x:T.x+k.x,y:T.y+k.y}},a=function(T,k){return{x:T.x-k.x,y:T.y-k.y}},n=function(T,k){return{x:T.x*k,y:T.y*k}},i=function(T,k){return T.x*k.y-T.y*k.x},o=function(T){var k=Yd(T.x,T.y);return k===0?{x:0,y:0}:{x:T.x/k,y:T.y/k}},s=function(T){for(var k=0,P=0;P7&&arguments[7]!==void 0?arguments[7]:`auto`,l=u===`auto`?ur(i,o):u,f=i/2,v=o/2;l=Math.min(l,f,v);var c=l!==f,h=l!==v,d;if(c){var y=a-f+l-s,g=n-v-s;if(d=ar(e,r,a,n,y,g,a+f-l+s,g,!1),d.length>0)return d}if(h){var b=a+f+s;if(d=ar(e,r,a,n,b,n-v+l-s,b,n+v-l+s,!1),d.length>0)return d}if(c){var x=a-f+l-s,T=n+v+s;if(d=ar(e,r,a,n,x,T,a+f-l+s,T,!1),d.length>0)return d}if(h){var D=a-f-s;if(d=ar(e,r,a,n,D,n-v+l-s,D,n+v-l+s,!1),d.length>0)return d}var L;var O=a-f+l,M=n-v+l;if(L=wa(e,r,a,n,O,M,l+s),L.length>0&&L[0]<=O&&L[1]<=M)return[L[0],L[1]];var z=a+f-l,q=n-v+l;if(L=wa(e,r,a,n,z,q,l+s),L.length>0&&L[0]>=z&&L[1]<=q)return[L[0],L[1]];var $=a+f-l,F=n+v-l;if(L=wa(e,r,a,n,$,F,l+s),L.length>0&&L[0]>=$&&L[1]>=F)return[L[0],L[1]];var _=a-f+l,j=n+v-l;if(L=wa(e,r,a,n,_,j,l+s),L.length>0&&L[0]<=_&&L[1]>=j)return[L[0],L[1]];return[]};var Qd=function(e,r,a,n,i,o,s){var u=s,l=Math.min(a,i),f=Math.max(a,i),v=Math.min(n,o),c=Math.max(n,o);return l-u<=e&&e<=f+u&&v-u<=r&&r<=c+u};var Jd=function(e,r,a,n,i,o,s,u,l){var f={x1:Math.min(a,s,i)-l,x2:Math.max(a,s,i)+l,y1:Math.min(n,u,o)-l,y2:Math.max(n,u,o)+l};return!(ef.x2||rf.y2)};var jd=function(e,r,a,n){a-=n;var i=r*r-4*e*a;if(i<0)return[];var o=Math.sqrt(i),s=2*e;return[(-r+o)/s,(-r-o)/s]};var eh=function(e,r,a,n,i){e===0&&(e=1e-5),r/=e,a/=e,n/=e;var s,u=(3*a-r*r)/9,l=-(27*n)+r*(9*a-2*(r*r)),f,v,c,h,d;if(l/=54,s=u*u*u+l*l,i[1]=0,h=r/3,s>0){v=l+Math.sqrt(s),v=v<0?-Math.pow(-v,1/3):Math.pow(v,1/3),c=l-Math.sqrt(s),c=c<0?-Math.pow(-c,1/3):Math.pow(c,1/3),i[0]=-h+v+c,h+=(v+c)/2,i[4]=i[2]=-h,h=Math.sqrt(3)*(-c+v)/2,i[3]=h,i[5]=-h;return}if(i[5]=i[3]=0,s===0){d=l<0?-Math.pow(-l,1/3):Math.pow(l,1/3),i[0]=-h+2*d,i[4]=i[2]=-(d+h);return}u=-u,f=u*u*u,f=Math.acos(l/Math.sqrt(f)),d=2*Math.sqrt(u),i[0]=-h+d*Math.cos(f/3),i[2]=-h+d*Math.cos((f+2*Math.PI)/3),i[4]=-h+d*Math.cos((f+4*Math.PI)/3)};var th=function(e,r,a,n,i,o,s,u){var l=1*a*a-4*a*i+2*a*s+4*i*i-4*i*s+s*s+n*n-4*n*o+2*n*u+4*o*o-4*o*u+u*u,f=9*a*i-3*a*a-3*a*s-6*i*i+3*i*s+9*n*o-3*n*n-3*n*u-6*o*o+3*o*u,v=3*a*a-6*a*i+a*s-a*e+2*i*i+2*i*e-s*e+3*n*n-6*n*o+n*u-n*r+2*o*o+2*o*r-u*r,c=1*a*i-a*a+a*e-i*e+n*o-n*n+n*r-o*r,h=[];eh(l,f,v,c,h);for(var d=1e-7,y=[],g=0;g<6;g+=2)Math.abs(h[g+1])=0&&h[g]<=1&&y.push(h[g]);y.push(1),y.push(0);for(var p=-1,m,b,w,E=0;E=0?wl?(e-i)*(e-i)+(r-o)*(r-o):f-c};var Et=function(e,r,a){for(var n,i,o,s,u,l=0,f=0;f=e&&e>=o||n<=e&&e<=o)u=(e-n)/(o-n)*(s-i)+i,u>r&&l++;else continue;return l%2!==0};var Yt=function(e,r,a,n,i,o,s,u,l){var f=new Array(a.length),v;u[0]!=null?(v=Math.atan(u[1]/u[0]),u[0]<0?v=v+Math.PI/2:v=-v-Math.PI/2):v=u;for(var c=Math.cos(-v),h=Math.sin(-v),d=0;d0)y=Sn(kn(f,-l));else y=f;return Et(e,r,y)};var ah=function(e,r,a,n,i,o,s,u){for(var l=new Array(a.length*2),f=0;f=0&&g<=1&&m.push(g),p>=0&&p<=1&&m.push(p),m.length===0)return[];var b=m[0]*u[0]+e,w=m[0]*u[1]+r;if(m.length>1){if(m[0]==m[1])return[b,w];return[b,w,m[1]*u[0]+e,m[1]*u[1]+r]}else return[b,w]};var Ei=function(e,r,a){return r<=e&&e<=a||a<=e&&e<=r?e:e<=r&&r<=a||a<=r&&r<=e?r:a};var ar=function(e,r,a,n,i,o,s,u,l){var f=e-i,v=a-e,c=s-i,h=r-o,d=n-r,y=u-o,g=c*h-y*f,p=v*h-d*f,m=y*v-c*d;if(m!==0){var b=g/m,w=p/m,E=.001,C=0-E,x=1+E;return C<=b&&b<=x&&C<=w&&w<=x?[e+b*v,r+b*d]:l?[e+b*v,r+b*d]:[]}else return g===0||p===0?Ei(e,a,s)===s?[s,u]:Ei(e,a,i)===i?[i,o]:Ei(i,s,a)===a?[a,n]:[]:[]};var ih=function(e,r,a,n,i){var o=[],s=n/2,u=i/2,l=r,f=a;o.push({x:l+s*e[0],y:f+u*e[1]});for(var v=1;v0)h=Sn(kn(v,-u));else h=v}else h=a;for(var g,p,m,b,w=0;w2){for(var d=[f[0],f[1]],y=Math.pow(d[0]-e,2)+Math.pow(d[1]-r,2),g=1;gf&&(f=w)},get:function(b){return l[b]}},c=0;c0?L=R.edgesTo(A)[0]:L=A.edgesTo(R)[0];var O=n(L);A=A.id(),x[A]>x[D]+O&&(x[A]=x[D]+O,T.nodes.indexOf(A)<0?T.push(A):T.updateItem(A),C[A]=0,E[A]=[]),x[A]==x[D]+O&&(C[A]=C[A]+C[D],E[A].push(D))}else for(var M=0;M0;){for(var F=w.pop(),_=0;_0&&s.push(a[u]);s.length!==0&&i.push(n.collection(s))}return i};var wh=function(e,r){for(var a=0;a5&&arguments[5]!==void 0?arguments[5]:Ch,s=n,u,l,f=0;f=2?da(e,r,a,0,hu,Th):da(e,r,a,0,du)},squaredEuclidean:function(e,r,a){return da(e,r,a,0,hu)},manhattan:function(e,r,a){return da(e,r,a,0,du)},max:function(e,r,a){return da(e,r,a,-1/0,Sh)}};Qr[`squared-euclidean`]=Qr.squaredEuclidean;Qr.squaredeuclidean=Qr.squaredEuclidean;function Vn(t,e,r,a,n,i){var o;return $e(t)?o=t:o=Qr[t]||Qr.euclidean,e===0&&$e(t)?o(n,i):o(e,r,a,n,i)}var kh=lt({k:2,m:2,sensitivityThreshold:1e-4,distance:`euclidean`,maxIterations:10,attributes:[],testMode:!1,testCentroids:null});var cs=function(e){return kh(e)};var Dn=function(e,r,a,n,i){var s=i!==`kMedoids`?function(v){return a[v]}:function(v){return n[v](a)},u=function(c){return n[c](r)},l=a,f=r;return Vn(e,n.length,s,u,l,f)};var Ti=function(e,r,a){for(var n=a.length,i=new Array(n),o=new Array(n),s=new Array(r),u=null,l=0;la)return!1;return!0};var Bh=function(e,r,a){for(var n=0;ns&&(s=r[l][f],u=f);i[u].push(e[l])}for(var v=0;v=i.threshold||i.mode===`dendrogram`&&e.length===1)return!1;var d=r[o],y=r[n[o]],g;i.mode===`dendrogram`?g={left:d,right:y,key:d.key}:g={value:d.value.concat(y.value),key:d.key},e[d.index]=g,e.splice(y.index,1),r[d.key]=g;for(var p=0;pa[y.key][m.key]&&(u=a[y.key][m.key])):i.linkage===`max`?(u=a[d.key][m.key],a[d.key][m.key]0&&n.push(i);return n};var wu=function(e,r,a){for(var n=[],i=0;is&&(o=l,s=r[i*e+l])}o>0&&n.push(o)}for(var f=0;fl&&(u=f,l=v)}a[i]=o[u]}return n=wu(e,r,a),n};var xu=function(e){for(var r=this.cy(),a=this.nodes(),n=_h(e),i={},o=0;o=D?(B=D,D=R,A=L):R>B&&(B=R);for(var O=0;O0?1:0;x[k%n.minIterations*s+_]=j,F+=j}if(F>0&&(k>=n.minIterations-1||k==n.maxIterations-1)){for(var te=0,Z=0;Z1||C>1)&&(s=!0),v[b]=[],m.outgoers().forEach(function(T){T.isEdge()&&v[b].push(T.id())})}else c[b]=[void 0,m.target().id()]}):o.forEach(function(m){var b=m.id();if(m.isNode())m.degree(!0)%2&&(u?l?s=!0:l=b:u=b),v[b]=[],m.connectedEdges().forEach(function(E){return v[b].push(E.id())});else c[b]=[m.source().id(),m.target().id()]});var h={found:!1,trail:void 0};if(s)return h;if(l&&u)if(i){if(f&&l!=f)return h;f=l}else{if(f&&l!=f&&u!=f)return h;f||(f=l)}else f||(f=o[0].id());var d=function(b){for(var w=b,E=[b],C,x,T;v[w].length;)C=v[w].shift(),x=c[C][0],T=c[C][1],w!=T?(v[T]=v[T].filter(function(k){return k!=C}),w=T):!i&&w!=x&&(v[x]=v[x].filter(function(k){return k!=C}),w=x),E.unshift(C),E.unshift(w);return E},y=[],g=[];for(g=d(f);g.length!=1;)v[g[0]].length==0?(y.unshift(o.getElementById(g.shift())),y.unshift(o.getElementById(g.shift()))):g=d(g.shift()).concat(g);y.unshift(o.getElementById(g.shift()));for(var p in v)if(v[p].length)return h;return h.found=!0,h.trail=this.spawn(y,!0),h}};var en=function(){var e=this,r={},a=0,n=0,i=[],o=[],s={},u=function(c,h){for(var d=o.length-1,y=[],g=e.spawn();o[d].x!=c||o[d].y!=h;)y.push(o.pop().edge),d--;y.push(o.pop().edge),y.forEach(function(p){var m=p.connectedNodes().intersection(e);g.merge(p),m.forEach(function(b){var w=b.id(),E=b.connectedEdges().intersection(e);g.merge(b),r[w].cutVertex?g.merge(E.filter(function(C){return C.isLoop()})):g.merge(E)})}),i.push(g)},l=function(c,h,d){c===d&&(n+=1),r[h]={id:a,low:a++,cutVertex:!1};var y=e.getElementById(h).connectedEdges().intersection(e);if(y.size()===0)i.push(e.spawn(e.getElementById(h)));else{var g,p,m,b;y.forEach(function(w){g=w.source().id(),p=w.target().id(),m=g===h?p:g,m!==d&&(b=w.id(),s[b]||(s[b]=!0,o.push({x:h,y:m,edge:w})),m in r?r[h].low=Math.min(r[h].low,r[m].id):(l(c,m,h),r[h].low=Math.min(r[h].low,r[m].low),r[h].id<=r[m].low&&(r[h].cutVertex=!0,u(h,m))))})}};e.forEach(function(v){if(v.isNode()){var c=v.id();c in r||(n=0,l(c,c),r[c].cutVertex=n>1)}});var f=Object.keys(r).filter(function(v){return r[v].cutVertex}).map(function(v){return e.getElementById(v)});return{cut:e.spawn(f),components:i}};var Xh={hopcroftTarjanBiconnected:en,htbc:en,htb:en,hopcroftTarjanBiconnectedComponents:en};var tn=function(){var e=this,r={},a=0,n=[],i=[],o=e.spawn(e),s=function(l){i.push(l),r[l]={index:a,low:a++,explored:!1};if(e.getElementById(l).connectedEdges().intersection(e).forEach(function(y){var g=y.target().id();g!==l&&(g in r||s(g),r[g].explored||(r[l].low=Math.min(r[l].low,r[g].low)))}),r[l].index===r[l].low){for(var v=e.spawn();;){var c=i.pop();if(v.merge(e.getElementById(c)),r[c].low=r[l].index,r[c].explored=!0,c===l)break}var h=v.edgesWith(v),d=v.merge(h);n.push(d),o=o.difference(d)}};return e.forEach(function(u){if(u.isNode()){var l=u.id();l in r||s(l)}}),{cut:o,components:n}};var Zh={tarjanStronglyConnected:tn,tsc:tn,tscc:tn,tarjanStronglyConnectedComponents:tn};var Uf={};[Pa,Sd,kd,Pd,Ad,Md,Od,lh,Kr,Yr,Fo,Eh,Oh,Vh,Uh,Yh,Xh,Zh].forEach(function(t){Se(Uf,t)});var Kf=0;var Yf=1;var Xf=2;var Nt=function(e){if(!(this instanceof Nt))return new Nt(e);this.id=`Thenable/1.0.7`,this.state=Kf,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof e==`function`&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))};Nt.prototype={fulfill:function(e){return Eu(this,Yf,`fulfillValue`,e)},reject:function(e){return Eu(this,Xf,`rejectReason`,e)},then:function(e,r){var a=this,n=new Nt;return a.onFulfilled.push(Tu(e,n,`fulfill`)),a.onRejected.push(Tu(r,n,`reject`)),Zf(a),n.proxy}};var Eu=function(e,r,a,n){return e.state===Kf&&(e.state=r,e[a]=n,Zf(e)),e};var Zf=function(e){e.state===Yf?Cu(e,`onFulfilled`,e.fulfillValue):e.state===Xf&&Cu(e,`onRejected`,e.rejectReason)};var Cu=function(e,r,a){if(e[r].length!==0){var n=e[r];e[r]=[];var i=function(){for(var s=0;s0}},clearQueue:function(){return function(){var r=this,n=r.length!==void 0?r:[r];if(!(this._private.cy||this).styleEnabled())return this;for(var o=0;o-1}return Ui=e,Ui}var Ki;var Ku;function gg(){if(Ku)return Ki;Ku=1;var t=Gn();function e(r,a){var n=this.__data__,i=t(n,r);return i<0?(++this.size,n.push([r,a])):n[i][1]=a,this}return Ki=e,Ki}var Yi;var Yu;function pg(){if(Yu)return Yi;Yu=1;var t=vg(),e=cg(),r=dg(),a=hg(),n=gg();function i(o){var s=-1,u=o==null?0:o.length;for(this.clear();++s-1&&a%1==0&&a0&&this.spawn(n).updateStyle().emit(`class`),r},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var r=this[0];return r!=null&&r._private.classes.has(e)},toggleClass:function(e,r){Fe(e)||(e=e.match(/\S+/g)||[]);for(var a=this,n=r===void 0,i=[],o=0,s=a.length;o0&&this.spawn(i).updateStyle().emit(`class`),a},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,r){var a=this;if(r==null)r=250;else if(r===0)return a;return a.addClass(e),setTimeout(function(){a.removeClass(e)},r),a}};dn.className=dn.classNames=dn.classes;var Me={metaChar:`[\\!\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\\`\\{\\|\\}\\~]`,comparatorOp:`=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=`,boolOp:`\\?|\\!|\\^`,string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:Je,meta:`degree|indegree|outdegree`,separator:`\\s*,\\s*`,descendant:`\\s+`,child:`\\s+>\\s+`,subject:`\\$`,group:`node|edge|\\*`,directedEdge:`\\s+->\\s+`,undirectedEdge:`\\s+<->\\s+`};Me.variable=`(?:[\\w-.]|(?:\\\\`+Me.metaChar+`))+`;Me.className=`(?:[\\w-]|(?:\\\\`+Me.metaChar+`))+`;Me.value=Me.string+`|`+Me.number;Me.id=Me.variable;(function(){var t=Me.comparatorOp.split(`|`),e,r=0;for(;r=0)&&e!==`=`&&(Me.comparatorOp+=`|\\!`+e)})();var ze=function(){return{checks:[]}};var me={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20};var Go=[{selector:`:selected`,matches:function(e){return e.selected()}},{selector:`:unselected`,matches:function(e){return!e.selected()}},{selector:`:selectable`,matches:function(e){return e.selectable()}},{selector:`:unselectable`,matches:function(e){return!e.selectable()}},{selector:`:locked`,matches:function(e){return e.locked()}},{selector:`:unlocked`,matches:function(e){return!e.locked()}},{selector:`:visible`,matches:function(e){return e.visible()}},{selector:`:hidden`,matches:function(e){return!e.visible()}},{selector:`:transparent`,matches:function(e){return e.transparent()}},{selector:`:grabbed`,matches:function(e){return e.grabbed()}},{selector:`:free`,matches:function(e){return!e.grabbed()}},{selector:`:removed`,matches:function(e){return e.removed()}},{selector:`:inside`,matches:function(e){return!e.removed()}},{selector:`:grabbable`,matches:function(e){return e.grabbable()}},{selector:`:ungrabbable`,matches:function(e){return!e.grabbable()}},{selector:`:animated`,matches:function(e){return e.animated()}},{selector:`:unanimated`,matches:function(e){return!e.animated()}},{selector:`:parent`,matches:function(e){return e.isParent()}},{selector:`:childless`,matches:function(e){return e.isChildless()}},{selector:`:child`,matches:function(e){return e.isChild()}},{selector:`:orphan`,matches:function(e){return e.isOrphan()}},{selector:`:nonorphan`,matches:function(e){return e.isChild()}},{selector:`:compound`,matches:function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()}},{selector:`:loop`,matches:function(e){return e.isLoop()}},{selector:`:simple`,matches:function(e){return e.isSimple()}},{selector:`:active`,matches:function(e){return e.active()}},{selector:`:inactive`,matches:function(e){return!e.active()}},{selector:`:backgrounding`,matches:function(e){return e.backgrounding()}},{selector:`:nonbackgrounding`,matches:function(e){return!e.backgrounding()}}].sort(function(t,e){return $c(t.selector,e.selector)});var Kg=(function(){for(var t={},e,r=0;r0&&f.edgeCount>0)return Ne("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(f.edgeCount>1)return Ne("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;f.edgeCount===1&&Ne("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0};var jg=function(){if(this.toStringCache!=null)return this.toStringCache;for(var e=function(f){return f??``},r=function(f){return Te(f)?`"`+f+`"`:e(f)},a=function(f){return` `+f+` `},n=function(f,v){var c=f.type,h=f.value;switch(c){case me.GROUP:var d=e(h);return d.substring(0,d.length-1);case me.DATA_COMPARE:var y=f.field,g=f.operator;return`[`+y+a(e(g))+r(h)+`]`;case me.DATA_BOOL:var p=f.operator,m=f.field;return`[`+e(p)+m+`]`;case me.DATA_EXIST:return`[`+f.field+`]`;case me.META_COMPARE:var w=f.operator;return`[[`+f.field+a(e(w))+r(h)+`]]`;case me.STATE:return h;case me.ID:return`#`+h;case me.CLASS:return`.`+h;case me.PARENT:case me.CHILD:return i(f.parent,v)+a(`>`)+i(f.child,v);case me.ANCESTOR:case me.DESCENDANT:return i(f.ancestor,v)+` `+i(f.descendant,v);case me.COMPOUND_SPLIT:var C=i(f.left,v),x=i(f.subject,v),T=i(f.right,v);return C+(C.length>0?` `:``)+x+T;case me.TRUE:return``}},i=function(f,v){return f.checks.reduce(function(c,h,d){return c+(v===f&&d===0?`$`:``)+n(h,v)},``)},o=``,s=0;s1&&s=0&&(r=r.replace(`!`,``),v=!0),r.indexOf(`@`)>=0&&(r=r.replace(`@`,``),f=!0),(i||s||f)&&(u=!i&&!o?``:``+e,l=``+a),f&&(e=u=u.toLowerCase(),a=l=l.toLowerCase()),r){case`*=`:n=u.indexOf(l)>=0;break;case`$=`:n=u.indexOf(l,u.length-l.length)>=0;break;case`^=`:n=u.indexOf(l)===0;break;case`=`:n=e===a;break;case`>`:c=!0,n=e>a;break;case`>=`:c=!0,n=e>=a;break;case`<`:c=!0,n=e0;){var f=n.shift();e(f),i.add(f.id()),s&&a(n,i,f)}return t}function nv(t,e,r){if(r.isParent())for(var a=r._private.children,n=0;n1&&arguments[1]!==void 0?arguments[1]:!0;return ps(this,t,e,nv)};function iv(t,e,r){if(r.isChild()){var a=r._private.parent;e.has(a.id())||t.push(a)}}Jr.forEachUp=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return ps(this,t,e,iv)};function sp(t,e,r){iv(t,e,r),nv(t,e,r)}Jr.forEachUpAndDown=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return ps(this,t,e,sp)};Jr.ancestors=Jr.parents;var Ra=ov={data:Oe.data({field:`data`,bindingEvent:`data`,allowBinding:!0,allowSetting:!0,settingEvent:`data`,settingTriggersEvent:!0,triggerFnName:`trigger`,allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:Oe.removeData({field:`data`,event:`data`,triggerFnName:`trigger`,triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:Oe.data({field:`scratch`,bindingEvent:`scratch`,allowBinding:!0,allowSetting:!0,settingEvent:`scratch`,settingTriggersEvent:!0,triggerFnName:`trigger`,allowGetting:!0,updateStyle:!0}),removeScratch:Oe.removeData({field:`scratch`,event:`scratch`,triggerFnName:`trigger`,triggerEvent:!0,updateStyle:!0}),rscratch:Oe.data({field:`rscratch`,allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:Oe.removeData({field:`rscratch`,triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}};var ov;Ra.attr=Ra.data;Ra.removeAttr=Ra.removeData;var up=ov;var Hn={};function Co(t){return function(e){var r=this;if(e===void 0&&(e=!0),r.length!==0)if(r.isNode()&&!r.removed()){for(var a=0,n=r[0],i=n._private.edges,o=0;oe}),minIndegree:Nr(`indegree`,function(t,e){return te}),minOutdegree:Nr(`outdegree`,function(t,e){return te})});Se(Hn,{totalDegree:function(e){for(var r=0,a=this.nodes(),n=0;n0,c=v;v&&(f=f[0]);var h=c?f.position():{x:0,y:0};r!==void 0?l.position(e,r+h[e]):i!==void 0&&l.position({x:i.x+h.x,y:i.y+h.y})}else{var d=a.position(),y=s?a.parent():null,g=y&&y.length>0,p=g;g&&(y=y[0]);var m=p?y.position():{x:0,y:0};return i={x:d.x-m.x,y:d.y-m.y},e===void 0?i:i[e]}else if(!o)return;return this}};Ot.modelPosition=Ot.point=Ot.position;Ot.modelPositions=Ot.points=Ot.positions;Ot.renderedPoint=Ot.renderedPosition;Ot.relativePoint=Ot.relativePosition;var lp=sv;var jr=function(e){switch(e){case`left`:case`right-inside`:return`left`;case`right`:case`left-inside`:return`right`;default:return`center`}};var ea=function(e){switch(e){case`top`:case`bottom-inside`:return`top`;case`bottom`:case`top-inside`:return`bottom`;default:return`center`}};var fp=function(e){switch(e){case`left`:return`right`;case`right`:return`left`;case`left-inside`:return`left`;case`right-inside`:return`right`;default:return`center`}};var Xr=gr={};var gr;gr.renderedBoundingBox=function(t){var e=this.boundingBox(t),r=this.cy(),a=r.zoom(),n=r.pan(),i=e.x1*a+n.x,o=e.x2*a+n.x,s=e.y1*a+n.y,u=e.y2*a+n.y;return{x1:i,x2:o,y1:s,y2:u,w:o-i,h:u-s}};gr.dirtyCompoundBoundsCache=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();return!e.styleEnabled()||!e.hasCompoundNodes()?this:(this.forEachUp(function(r){if(r.isParent()){var a=r._private;a.compoundBoundsClean=!1,a.bbCache=null,t||r.emitAndNotify(`bounds`)}}),this)};gr.updateCompoundBounds=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();if(!e.styleEnabled()||!e.hasCompoundNodes())return this;if(!t&&e.batching())return this;function r(o){if(!o.isParent())return;var s=o._private,u=o.children(),l=o.pstyle(`compound-sizing-wrt-labels`).value===`include`,f={width:{val:o.pstyle(`min-width`).pfValue,left:o.pstyle(`min-width-bias-left`),right:o.pstyle(`min-width-bias-right`)},height:{val:o.pstyle(`min-height`).pfValue,top:o.pstyle(`min-height-bias-top`),bottom:o.pstyle(`min-height-bias-bottom`)}},v=u.boundingBox({includeLabels:l,includeOverlays:!1,useCache:!1}),c=s.position;(v.w===0||v.h===0)&&(v={w:o.pstyle(`width`).pfValue,h:o.pstyle(`height`).pfValue},v.x1=c.x-v.w/2,v.x2=c.x+v.w/2,v.y1=c.y-v.h/2,v.y2=c.y+v.h/2);function h(k,P,D){var B=0,A=0,R=P+D;return k>0&&R>0&&(B=P/R*k,A=D/R*k),{biasDiff:B,biasComplementDiff:A}}function d(k,P,D,B){if(D.units===`%`)switch(B){case`width`:return k>0?D.pfValue*k:0;case`height`:return P>0?D.pfValue*P:0;case`average`:return k>0&&P>0?D.pfValue*(k+P)/2:0;case`min`:return k>0&&P>0?k>P?D.pfValue*P:D.pfValue*k:0;case`max`:return k>0&&P>0?k>P?D.pfValue*k:D.pfValue*P:0;default:return 0}else return D.units===`px`?D.pfValue:0}var y=f.width.left.value;f.width.left.units===`px`&&f.width.val>0&&(y=y*100/f.width.val);var g=f.width.right.value;f.width.right.units===`px`&&f.width.val>0&&(g=g*100/f.width.val);var p=f.height.top.value;f.height.top.units===`px`&&f.height.val>0&&(p=p*100/f.height.val);var m=f.height.bottom.value;f.height.bottom.units===`px`&&f.height.val>0&&(m=m*100/f.height.val);var b=h(f.width.val-v.w,y,g),w=b.biasDiff,E=b.biasComplementDiff,C=h(f.height.val-v.h,p,m),x=C.biasDiff,T=C.biasComplementDiff;s.autoPadding=d(v.w,v.h,o.pstyle(`padding`),o.pstyle(`padding-relative-to`).value),s.autoWidth=Math.max(v.w,f.width.val),c.x=(-w+v.x1+v.x2+E)/2,s.autoHeight=Math.max(v.h,f.height.val),c.y=(-x+v.y1+v.y2+T)/2}for(var a=0;ae.x2?n:e.x2,e.y1=ae.y2?i:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)};var er=function(e,r){return r==null?e:It(e,r.x1,r.y1,r.x2,r.y2)};var ha=function(e,r,a){return pt(e,r,a)};var rn=function(e,r,a){if(!r.cy().headless()){var n=r._private,i=n.rstyle,o=i.arrowWidth/2,s=r.pstyle(a+`-arrow-shape`).value,u,l;if(s!==`none`){a===`source`?(u=i.srcX,l=i.srcY):a===`target`?(u=i.tgtX,l=i.tgtY):(u=i.midX,l=i.midY);var f=n.arrowBounds=n.arrowBounds||{},v=f[a]=f[a]||{};v.x1=u-o,v.y1=l-o,v.x2=u+o,v.y2=l+o,v.w=v.x2-v.x1,v.h=v.y2-v.y1,vn(v,1),It(e,v.x1,v.y1,v.x2,v.y2)}}};var To=function(e,r,a){if(!r.cy().headless()){var n;a?n=a+`-`:n=``;var i=r._private,o=i.rstyle;if(r.pstyle(n+`label`).strValue){var u=r.pstyle(`text-halign`),l=r.pstyle(`text-valign`),f=ha(o,`labelWidth`,a),v=ha(o,`labelHeight`,a),c=ha(o,`labelX`,a),h=ha(o,`labelY`,a),d=r.pstyle(n+`text-margin-x`).pfValue,y=r.pstyle(n+`text-margin-y`).pfValue,g=r.isEdge(),p=r.pstyle(n+`text-rotation`),m=r.pstyle(`text-outline-width`).pfValue,w=r.pstyle(`text-border-width`).pfValue/2,E=r.pstyle(`text-background-padding`).pfValue,C=2,x=v,T=f,k=T/2,P=x/2,D,B,A,R;if(g)D=c-k,B=c+k,A=h-P,R=h+P;else{switch(jr(u.value)){case`left`:D=c-T,B=c;break;case`center`:D=c-k,B=c+k;break;case`right`:D=c,B=c+T}switch(ea(l.value)){case`top`:A=h-x,R=h;break;case`center`:A=h-P,R=h+P;break;case`bottom`:A=h,R=h+x}}var L=d-Math.max(m,w)-E-C,O=d+Math.max(m,w)+E+C,M=y-Math.max(m,w)-E-C,z=y+Math.max(m,w)+E+C;D+=L,B+=O,A+=M,R+=z;var q=a||`main`,$=i.labelBounds,F=$[q]=$[q]||{};F.x1=D,F.y1=A,F.x2=B,F.y2=R,F.w=B-D,F.h=R-A,F.leftPad=L,F.rightPad=O,F.topPad=M,F.botPad=z;var _=g&&p.strValue===`autorotate`,j=p.pfValue!=null&&p.pfValue!==0;if(_||j){var te=_?ha(i.rstyle,`labelAngle`,a):p.pfValue,Z=Math.cos(te),ne=Math.sin(te),ae=(D+B)/2,ve=(A+R)/2;if(!g){switch(jr(u.value)){case`left`:ae=B;break;case`right`:ae=D}switch(ea(l.value)){case`top`:ve=R;break;case`bottom`:ve=A}}var J=function(ue,re){return ue=ue-ae,re=re-ve,{x:ue*Z-re*ne+ae,y:ue*ne+re*Z+ve}},G=J(D,A),W=J(D,R),K=J(B,A),X=J(B,R);D=Math.min(G.x,W.x,K.x,X.x),B=Math.max(G.x,W.x,K.x,X.x),A=Math.min(G.y,W.y,K.y,X.y),R=Math.max(G.y,W.y,K.y,X.y)}var I=q+`Rot`,V=$[I]=$[I]||{};V.x1=D,V.y1=A,V.x2=B,V.y2=R,V.w=B-D,V.h=R-A,It(e,D,A,B,R),It(i.labelBounds.all,D,A,B,R)}return e}};var Cl=function(e,r){if(!r.cy().headless()){var a=r.pstyle(`outline-opacity`).value,o=r.pstyle(`outline-width`).value+r.pstyle(`outline-offset`).value;lv(e,r,a,o,`outside`,o/2)}};var lv=function(e,r,a,n,i,o){if(!(a===0||n<=0||i===`inside`)){var u=r.cy().renderer(),l=u.nodeShapes[u.getNodeShape(r)];if(l){var f=r.position(),v=f.x,c=f.y,h=r.width(),d=r.height();if(l.hasMiterBounds){i===`center`&&(n/=2);er(e,l.miterBounds(v,c,h,d,n))}else o!=null&&o>0&&cn(e,[o,o,o,o])}}};var vp=function(e,r){if(!r.cy().headless()){var a=r.pstyle(`border-opacity`).value,n=r.pstyle(`border-width`).pfValue,i=r.pstyle(`border-position`).value;lv(e,r,a,n,i)}};var cp=function(e,r){var a=e._private.cy,n=a.styleEnabled(),i=a.headless(),o=yt(),s=e._private,u=e.isNode(),l=e.isEdge(),f,v,c,h,d,y,g=s.rstyle,p=u&&n?e.pstyle(`bounds-expansion`).pfValue:[0],m=function(oe){return oe.pstyle(`display`).value!==`none`},b=!n||m(e)&&(!l||m(e.source())&&m(e.target()));if(b){var w=0,E=0;n&&r.includeOverlays&&(w=e.pstyle(`overlay-opacity`).value,w!==0&&(E=e.pstyle(`overlay-padding`).value));var C=0,x=0;n&&r.includeUnderlays&&(C=e.pstyle(`underlay-opacity`).value,C!==0&&(x=e.pstyle(`underlay-padding`).value));var T=Math.max(E,x),k=0,P=0;if(n&&(k=e.pstyle(`width`).pfValue,P=k/2),u&&r.includeNodes){var D=e.position();d=D.x,y=D.y;var A=e.outerWidth()/2,L=e.outerHeight()/2;f=d-A,v=d+A,c=y-L,h=y+L,It(o,f,c,v,h),n&&Cl(o,e),n&&r.includeOutlines&&!i&&Cl(o,e),n&&vp(o,e)}else if(l&&r.includeEdges)if(n&&!i){var O=e.pstyle(`curve-style`).strValue;if(f=Math.min(g.srcX,g.midX,g.tgtX),v=Math.max(g.srcX,g.midX,g.tgtX),c=Math.min(g.srcY,g.midY,g.tgtY),h=Math.max(g.srcY,g.midY,g.tgtY),f-=P,v+=P,c-=P,h+=P,It(o,f,c,v,h),O===`haystack`){var M=g.haystackPts;if(M&&M.length===2){if(f=M[0].x,c=M[0].y,v=M[1].x,h=M[1].y,f>v){var z=f;f=v,v=z}if(c>h){var q=c;c=h,h=q}It(o,f-P,c-P,v+P,h+P)}}else if(O===`bezier`||O===`unbundled-bezier`||tr(O,`segments`)||tr(O,`taxi`)){var $;switch(O){case`bezier`:case`unbundled-bezier`:$=g.bezierPts;break;case`segments`:case`taxi`:case`round-segments`:case`round-taxi`:$=g.linePts}if($!=null)for(var F=0;F<$.length;F++){var _=$[F];f=_.x-P,v=_.x+P,c=_.y-P,h=_.y+P,It(o,f,c,v,h)}}}else{var te=e.source().position(),ne=e.target().position();if(f=te.x,v=ne.x,c=te.y,h=ne.y,f>v){var ae=f;f=v,v=ae}if(c>h){var ve=c;c=h,h=ve}f-=P,v+=P,c-=P,h+=P,It(o,f,c,v,h)}if(n&&r.includeEdges&&l&&(rn(o,e,`mid-source`),rn(o,e,`mid-target`),rn(o,e,`source`),rn(o,e,`target`)),n){if(e.pstyle(`ghost`).value===`yes`){var G=e.pstyle(`ghost-offset-x`).pfValue,W=e.pstyle(`ghost-offset-y`).pfValue;It(o,o.x1+G,o.y1+W,o.x2+G,o.y2+W)}}var K=s.bodyBounds=s.bodyBounds||{};uu(K,o),cn(K,p),vn(K,1),n&&(f=o.x1,v=o.x2,c=o.y1,h=o.y2,It(o,f-T,c-T,v+T,h+T));var X=s.overlayBounds=s.overlayBounds||{};uu(X,o),cn(X,p),vn(X,1);var I=s.labelBounds=s.labelBounds||{};I.all!=null?Ud(I.all):I.all=yt(),n&&r.includeLabels&&(r.includeMainLabels&&To(o,e,null),l&&(r.includeSourceLabels&&To(o,e,`source`),r.includeTargetLabels&&To(o,e,`target`)))}return o.x1=Pt(o.x1),o.y1=Pt(o.y1),o.x2=Pt(o.x2),o.y2=Pt(o.y2),o.w=Pt(o.x2-o.x1),o.h=Pt(o.y2-o.y1),o.w>0&&o.h>0&&b&&(cn(o,p),vn(o,1)),o};var fv=function(e){var r=0,a=function(o){return(o?1:0)<0&&arguments[0]!==void 0?arguments[0]:Dp,e=arguments.length>1?arguments[1]:void 0,r=0;r=0;s--)o(s);return this};vr.removeAllListeners=function(){return this.removeListener(`*`)};vr.emit=vr.trigger=function(t,e,r){var a=this.listeners,n=a.length;return this.emitting++,Fe(e)||(e=[e]),Pp(this,function(i,o){r!=null&&(a=[{event:o.event,type:o.type,namespace:o.namespace,callback:r}],n=a.length);for(var s=function(){var f=a[u];if(f.type===o.type&&(!f.namespace||f.namespace===o.namespace||f.namespace===kp)&&i.eventMatches(i.context,f,o)){var v=[o];e!=null&&pd(v,e),i.beforeEmit(i.context,f,o),f.conf&&f.conf.one&&(i.listeners=i.listeners.filter(function(d){return d!==f}));var c=i.callbackContext(i.context,f,o),h=f.callback.apply(c,v);i.afterEmit(i.context,f,o),h===!1&&(o.stopPropagation(),o.preventDefault())}},u=0;u1&&!o){var s=this.length-1,u=this[s],l=u._private.data.id;this[s]=void 0,this[e]=u,i.set(l,{ele:u,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var r=this._private,a=e._private.data.id,i=r.map.get(a);if(!i)return this;var o=i.index;return this.unmergeAt(o),this},unmerge:function(e){var r=this._private.cy;if(!e)return this;if(e&&Te(e)){var a=e;e=r.mutableElements().filter(a)}for(var n=0;n=0;r--){var a=this[r];e(a)&&this.unmergeAt(r)}return this},map:function(e,r){for(var a=[],n=this,i=0;ia&&(a=u,n=s)}return{value:a,ele:n}},min:function(e,r){for(var a=1/0,n,i=this,o=0;o=0&&i`u`?`undefined`:je(Symbol))!=e&&je(Symbol.iterator)!=e&&(Pn[Symbol.iterator]=function(){var a=this,n={value:void 0,done:!1},i=0,o=this.length;return gf({next:function(){return i1&&arguments[1]!==void 0?arguments[1]:!0,a=this[0],n=a.cy();if(n.styleEnabled()&&a){a._private.styleDirty&&(a._private.styleDirty=!1,n.style().apply(a));return a._private.style[e]??(r?n.style().getDefaultProperty(e):null)}},numericStyle:function(e){var r=this[0];if(r.cy().styleEnabled()&&r){var a=r.pstyle(e);return a.pfValue!==void 0?a.pfValue:a.value}},numericStyleUnits:function(e){var r=this[0];if(r.cy().styleEnabled()&&r)return r.pstyle(e).units},renderedStyle:function(e){var r=this.cy();if(!r.styleEnabled())return this;var a=this[0];if(a)return r.style().getRenderedStyle(a,e)},style:function(e,r){var a=this.cy();if(!a.styleEnabled())return this;var n=!1,i=a.style();if(Le(e)){var o=e;i.applyBypass(this,o,n),this.emitAndNotify(`style`)}else if(Te(e))if(r===void 0){var s=this[0];return s?i.getStylePropertyValue(s,e):void 0}else i.applyBypass(this,e,r,n),this.emitAndNotify(`style`);else if(e===void 0){var u=this[0];return u?i.getRawStyle(u):void 0}return this},removeStyle:function(e){var r=this.cy();if(!r.styleEnabled())return this;var a=!1,n=r.style(),i=this;if(e===void 0)for(var o=0;o0&&e.push(f[0]),e.push(s[0])}return this.spawn(e,!0).filter(t)},`neighborhood`),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}});ct.neighbourhood=ct.neighborhood;ct.closedNeighbourhood=ct.closedNeighborhood;ct.openNeighbourhood=ct.openNeighborhood;Se(ct,{source:Bt(function(e){var r=this[0],a;return r&&(a=r._private.source||r.cy().collection()),a&&e?a.filter(e):a},`source`),target:Bt(function(e){var r=this[0],a;return r&&(a=r._private.target||r.cy().collection()),a&&e?a.filter(e):a},`target`),sources:Il({attr:`source`}),targets:Il({attr:`target`})});function Il(t){return function(r){for(var a=[],n=0;n0);return o},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}});ct.componentsOf=ct.components;var ut=function(e,r){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e===void 0){Ge(`A collection must have a reference to the core`);return}var i=new Ut,o=!1;if(!r)r=[];else if(r.length>0&&Le(r[0])&&!za(r[0])){o=!0;for(var s=[],u=new ta,l=0,f=r.length;l0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,a=r.cy(),n=a._private,i=[],o=[],s,u=0,l=r.length;u0){for(var q=s.length===r.length?r:new ut(a,s),$=0;$0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,a=[],n={},i=r._private.cy;function o(R){for(var L=R._private.edges,O=0;O0&&(t?D.emitAndNotify(`remove`):e&&D.emit(`remove`));for(var B=0;B0?B=R:D=R;while(Math.abs(A)>o&&++L=i?m(P,L):O===0?L:w(P,D,D+l)}var C=!1;function x(){C=!0,(t!==e||r!==a)&&b()}var T=function(D){return C||x(),t===e&&r===a?D:D===0?0:D===1?1:g(E(D),e,a)};T.getControlPoints=function(){return[{x:t,y:e},{x:r,y:a}]};var k=`generateBezier(`+[t,e,r,a]+`)`;return T.toString=function(){return k},T}var Vp=(function(){function t(a){return-a.tension*a.x-a.friction*a.v}function e(a,n,i){var o={x:a.x+i.dx*n,v:a.v+i.dv*n,tension:a.tension,friction:a.friction};return{dx:o.v,dv:t(o)}}function r(a,n){var i={dx:a.v,dv:t(a)},o=e(a,n*.5,i),s=e(a,n*.5,o),u=e(a,n,s),l=1/6*(i.dx+2*(o.dx+s.dx)+u.dx),f=1/6*(i.dv+2*(o.dv+s.dv)+u.dv);return a.x=a.x+l*n,a.v=a.v+f*n,a}return function a(n,i,o){var s={x:-1,v:0,tension:null,friction:null},u=[0],l=0,f=1/1e4,v=16/1e3,c,h,d;for(n=parseFloat(n)||500,i=parseFloat(i)||20,o=o||null,s.tension=n,s.friction=i,c=o!==null,c?(l=a(n,i),h=l/o*v):h=v;d=r(d||s,h),u.push(1+d.x),l+=16,Math.abs(d.x)>f&&Math.abs(d.v)>f;);return c?function(y){return u[y*(u.length-1)|0]}:l}})();var Ve=function(e,r,a,n){var i=Fp(e,r,a,n);return function(o,s,u){return o+(s-o)*i(u)}};var gn={linear:function(e,r,a){return e+(r-e)*a},ease:Ve(.25,.1,.25,1),"ease-in":Ve(.42,0,1,1),"ease-out":Ve(0,0,.58,1),"ease-in-out":Ve(.42,0,.58,1),"ease-in-sine":Ve(.47,0,.745,.715),"ease-out-sine":Ve(.39,.575,.565,1),"ease-in-out-sine":Ve(.445,.05,.55,.95),"ease-in-quad":Ve(.55,.085,.68,.53),"ease-out-quad":Ve(.25,.46,.45,.94),"ease-in-out-quad":Ve(.455,.03,.515,.955),"ease-in-cubic":Ve(.55,.055,.675,.19),"ease-out-cubic":Ve(.215,.61,.355,1),"ease-in-out-cubic":Ve(.645,.045,.355,1),"ease-in-quart":Ve(.895,.03,.685,.22),"ease-out-quart":Ve(.165,.84,.44,1),"ease-in-out-quart":Ve(.77,0,.175,1),"ease-in-quint":Ve(.755,.05,.855,.06),"ease-out-quint":Ve(.23,1,.32,1),"ease-in-out-quint":Ve(.86,0,.07,1),"ease-in-expo":Ve(.95,.05,.795,.035),"ease-out-expo":Ve(.19,1,.22,1),"ease-in-out-expo":Ve(1,0,0,1),"ease-in-circ":Ve(.6,.04,.98,.335),"ease-out-circ":Ve(.075,.82,.165,1),"ease-in-out-circ":Ve(.785,.135,.15,.86),spring:function(e,r,a){if(a===0)return gn.linear;var n=Vp(e,r,a);return function(i,o,s){return i+(o-i)*n(s)}},"cubic-bezier":Ve};function zl(t,e,r,a,n){if(a===1||e===r)return r;var i=n(e,r,a);return t==null||((t.roundValue||t.color)&&(i=Math.round(i)),t.min!==void 0&&(i=Math.max(i,t.min)),t.max!==void 0&&(i=Math.min(i,t.max))),i}function Fl(t,e){return t.pfValue!=null||t.value!=null?t.pfValue!=null&&(e==null||e.type.units!==`%`)?t.pfValue:t.value:t}function zr(t,e,r,a,n){var i=n!=null?n.type:null;r<0?r=0:r>1&&(r=1);var o=Fl(t,n),s=Fl(e,n);if(ce(o)&&ce(s))return zl(i,o,s,r,a);if(Fe(o)&&Fe(s)){for(var u=[],l=0;l0?(h===`spring`&&d.push(o.duration),o.easingImpl=gn[h].apply(null,d)):o.easingImpl=gn[h]}var y=o.easingImpl,g;if(o.duration===0?g=1:g=(r-u)/o.duration,o.applying&&(g=o.progress),g<0?g=0:g>1&&(g=1),o.delay==null){var p=o.startPosition,m=o.position;if(m&&n&&!t.locked()){var b={};pa(p.x,m.x)&&(b.x=zr(p.x,m.x,g,y)),pa(p.y,m.y)&&(b.y=zr(p.y,m.y,g,y)),t.position(b)}var w=o.startPan,E=o.pan,C=i.pan,x=E!=null&&a;x&&(pa(w.x,E.x)&&(C.x=zr(w.x,E.x,g,y)),pa(w.y,E.y)&&(C.y=zr(w.y,E.y,g,y)),t.emit(`pan`));var T=o.startZoom,k=o.zoom,P=k!=null&&a;P&&(pa(T,k)&&(i.zoom=Ba(i.minZoom,zr(T,k,g,y),i.maxZoom)),t.emit(`zoom`)),(x||P)&&t.emit(`viewport`);var D=o.style;if(D&&D.length>0&&n){for(var B=0;B=0;x--){var T=C[x];T()}C.splice(0,C.length)},m=h.length-1;m>=0;m--){var b=h[m],w=b._private;if(w.stopped){h.splice(m,1),w.hooked=!1,w.playing=!1,w.started=!1,p(w.frames);continue}!w.playing&&!w.applying||(w.playing&&w.applying&&(w.applying=!1),w.started||_p(f,b,t),qp(f,b,t,v),w.applying&&(w.applying=!1),p(w.frames),w.step!=null&&w.step(t),b.completed()&&(h.splice(m,1),w.hooked=!1,w.playing=!1,w.started=!1,p(w.completes)),y=!0)}return!v&&h.length===0&&d.length===0&&a.push(f),y}for(var i=!1,o=0;o0?e.notify(`draw`,r):e.notify(`draw`)),r.unmerge(a),e.emit(`step`)}var Gp={animate:Oe.animate(),animation:Oe.animation(),animated:Oe.animated(),clearQueue:Oe.clearQueue(),delay:Oe.delay(),delayAnimation:Oe.delayAnimation(),stop:Oe.stop(),addToAnimationPool:function(e){var r=this;r.styleEnabled()&&r._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,!e.styleEnabled())return;function r(){e._private.animationsRunning&&Cn(function(i){Vl(i,e),r()})}var a=e.renderer();a&&a.beforeRender?a.beforeRender(function(i,o){Vl(o,e)},a.beforeRenderPriorities.animations):r()}};var $p={qualifierCompare:function(e,r){return e==null||r==null?e==null&&r==null:e.sameText(r)},eventMatches:function(e,r,a){var n=r.qualifier;return n!=null?e!==a.target&&za(a.target)&&n.matches(a.target):!0},addEventFields:function(e,r){r.cy=e,r.target=e},callbackContext:function(e,r,a){return r.qualifier!=null?a.target:e}};var on=function(e){return Te(e)?new lr(e):e};var xv={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new Wn($p,this)),this},emitter:function(){return this._private.emitter},on:function(e,r,a){return this.emitter().on(e,on(r),a),this},removeListener:function(e,r,a){return this.emitter().removeListener(e,on(r),a),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,r,a){return this.emitter().one(e,on(r),a),this},once:function(e,r,a){return this.emitter().one(e,on(r),a),this},emit:function(e,r){return this.emitter().emit(e,r),this},emitAndNotify:function(e,r){return this.emit(e),this.notify(e,r),this}};Oe.eventAliasesOn(xv);var Ho={png:function(e){var r=this._private.renderer;return e=e||{},r.png(e)},jpg:function(e){var r=this._private.renderer;return e=e||{},e.bg=e.bg||`#fff`,r.jpg(e)}};Ho.jpeg=Ho.jpg;var pn={layout:function(e){var r=this;if(e==null){Ge(`Layout options must be specified to make a layout`);return}if(e.name==null){Ge("A `name` must be specified to make a layout");return}var a=e.name,n=r.extension(`layout`,a);if(n==null){Ge("No such layout `"+a+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var i;Te(e.eles)?i=r.$(e.eles):i=e.eles!=null?e.eles:r.$();return new n(Se({},e,{cy:r,eles:i}))}};pn.createLayout=pn.makeLayout=pn.layout;var Hp={notify:function(e,r){var a=this._private;if(this.batching()){a.batchNotifications=a.batchNotifications||{};var n=a.batchNotifications[e]=a.batchNotifications[e]||this.collection();r!=null&&n.merge(r);return}if(a.notificationsEnabled){var i=this.renderer();this.destroyed()||!i||i.notify(e,r)}},notifications:function(e){var r=this._private;return e===void 0?r.notificationsEnabled:(r.notificationsEnabled=!!e,this)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var e=this._private;return e.batchCount??=0,e.batchCount===0&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(e.batchCount===0)return this;if(e.batchCount--,e.batchCount===0){e.batchStyleEles.updateStyle();var r=this.renderer();Object.keys(e.batchNotifications).forEach(function(a){var n=e.batchNotifications[a];n.empty()?r.notify(a):r.notify(a,n)})}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var r=this;return this.batch(function(){for(var a=Object.keys(e),n=0;n0;)r.removeChild(r.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(a){var n=a._private;n.rscratch={},n.rstyle={},n.animation.current=[],n.animation.queue=[]})},onRender:function(e){return this.on(`render`,e)},offRender:function(e){return this.off(`render`,e)}};Wo.invalidateDimensions=Wo.resize;var yn={collection:function(e,r){return Te(e)?this.$(e):Tt(e)?e.collection():Fe(e)?(r||(r={}),new ut(this,e,r.unique,r.removed)):new ut(this)},nodes:function(e){var r=this.$(function(a){return a.isNode()});return e?r.filter(e):r},edges:function(e){var r=this.$(function(a){return a.isEdge()});return e?r.filter(e):r},$:function(e){var r=this._private.elements;return e?r.filter(e):r.spawnSelf()},mutableElements:function(){return this._private.elements}};yn.elements=yn.filter=yn.$;var ot={};var Ca=`t`;var Up=`f`;ot.apply=function(t){for(var e=this,n=e._private.cy.collection(),i=0;i0;if(c||v&&h){var d=void 0;c&&h||c?d=l.properties:h&&(d=l.mappedProperties);for(var y=0;y1&&(w=1),s.color){var C=a.valueMin[0],x=a.valueMax[0],T=a.valueMin[1],k=a.valueMax[1],P=a.valueMin[2],D=a.valueMax[2],B=a.valueMin[3]==null?1:a.valueMin[3],A=a.valueMax[3]==null?1:a.valueMax[3],R=[Math.round(C+(x-C)*w),Math.round(T+(k-T)*w),Math.round(P+(D-P)*w),Math.round(B+(A-B)*w)];i={bypass:a.bypass,name:a.name,value:R,strValue:`rgb(`+R[0]+`, `+R[1]+`, `+R[2]+`)`}}else if(s.number){var L=a.valueMin+(a.valueMax-a.valueMin)*w;i=this.parse(a.name,L,a.bypass,c)}else return!1;if(!i)return y(),!1;i.mapping=a,a=i;break;case o.data:for(var O=a.field.split(`.`),M=v.data,z=0;z0&&i>0){for(var s={},u=!1,l=0;l0?t.delayAnimation(o).play().promise().then(b):b()}).then(function(){return t.animation({style:s,duration:i,easing:t.pstyle(`transition-timing-function`).value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(t,n),t.emitAndNotify(`style`),a.transitioning=!1})}else a.transitioning&&(this.removeBypasses(t,n),t.emitAndNotify(`style`),a.transitioning=!1)};ot.checkTrigger=function(t,e,r,a,n,i){var o=this.properties[e],s=n(o);t.removed()||s!=null&&s(r,a,t)&&i(o)};ot.checkZOrderTrigger=function(t,e,r,a){var n=this;this.checkTrigger(t,e,r,a,function(i){return i.triggersZOrder},function(){n._private.cy.notify(`zorder`,t)})};ot.checkBoundsTrigger=function(t,e,r,a){this.checkTrigger(t,e,r,a,function(n){return n.triggersBounds},function(n){t.dirtyCompoundBoundsCache(),t.dirtyBoundingBoxCache()})};ot.checkConnectedEdgesBoundsTrigger=function(t,e,r,a){this.checkTrigger(t,e,r,a,function(n){return n.triggersBoundsOfConnectedEdges},function(n){t.connectedEdges().forEach(function(i){i.dirtyBoundingBoxCache()})})};ot.checkParallelEdgesBoundsTrigger=function(t,e,r,a){this.checkTrigger(t,e,r,a,function(n){return n.triggersBoundsOfParallelEdges},function(n){t.parallelEdges().forEach(function(i){i.dirtyBoundingBoxCache()})})};ot.checkTriggers=function(t,e,r,a){t.dirtyStyleCache(),this.checkZOrderTrigger(t,e,r,a),this.checkBoundsTrigger(t,e,r,a),this.checkConnectedEdgesBoundsTrigger(t,e,r,a),this.checkParallelEdgesBoundsTrigger(t,e,r,a)};var Ha={};Ha.applyBypass=function(t,e,r,a){var n=this,i=[],o=!0;if(e===`*`||e===`**`){if(r!==void 0)for(var s=0;sn.length?a=a.substr(n.length):a=``}function u(){i.length>o.length?i=i.substr(o.length):i=``}for(;;){if(a.match(/^\s*$/))break;var f=a.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!f){Ne(`Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: `+a);break}n=f[0];var v=f[1];if(v!==`core`){if(new lr(v).invalid){Ne(`Skipping parsing of block: Invalid selector found in string stylesheet: `+v),s();continue}}var h=f[2],d=!1;i=h;for(var y=[];;){if(i.match(/^\s*$/))break;var p=i.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!p){Ne(`Skipping parsing of block: Invalid formatting of style property and value definitions found in:`+h),d=!0;break}o=p[0];var m=p[1],b=p[2];if(!e.properties[m]){Ne(`Skipping property: Invalid property name in: `+o),u();continue}if(!r.parse(m,b)){Ne(`Skipping property: Invalid property definition in: `+o),u();continue}y.push({name:m,val:b}),u()}if(d){s();break}r.selector(v);for(var C=0;C=7&&e[0]===`d`&&(f=new RegExp(s.data.regex).exec(e))){if(r)return!1;var c=s.data;return{name:t,value:f,strValue:``+e,mapped:c,field:f[1],bypass:r}}else if(e.length>=10&&e[0]===`m`&&(v=new RegExp(s.mapData.regex).exec(e))){if(r||l.multiple)return!1;var h=s.mapData;if(!(l.color||l.number))return!1;var d=this.parse(t,v[4]);if(!d||d.mapped)return!1;var y=this.parse(t,v[5]);if(!y||y.mapped)return!1;if(d.pfValue===y.pfValue||d.strValue===y.strValue)return Ne("`"+t+`: `+e+"` is not a valid mapper because the output range is zero; converting to `"+t+`: `+d.strValue+"`"),this.parse(t,d.strValue);if(l.color){var g=d.value,p=y.value;if(g[0]===p[0]&&g[1]===p[1]&&g[2]===p[2]&&(g[3]===p[3]||(g[3]==null||g[3]===1)&&(p[3]==null||p[3]===1)))return!1}return{name:t,value:v,strValue:``+e,mapped:h,field:v[1],fieldMin:parseFloat(v[2]),fieldMax:parseFloat(v[3]),valueMin:d.value,valueMax:y.value,bypass:r}}}if(l.multiple&&a!==`multiple`){var b;if(u?b=e.split(/\s+/):Fe(e)?b=e:b=[e],l.evenMultiple&&b.length%2!==0)return null;for(var w=[],E=[],C=[],x=``,T=!1,k=0;k0?` `:``)+P.strValue}return l.validate&&!l.validate(w,E)?null:l.singleEnum&&T?w.length===1&&Te(w[0])?{name:t,value:w[0],strValue:w[0],bypass:r}:null:{name:t,value:w,pfValue:C,strValue:x,bypass:r,units:E}}var D=function(){for(var J=0;Jl.max||l.strictMax&&e===l.max))return null;var O={name:t,value:e,strValue:``+e+(B||``),units:B,bypass:r};return l.unitless||B!==`px`&&B!==`em`?O.pfValue=e:O.pfValue=B===`px`||!B?e:this.getEmSizeInPixels()*e,(B===`ms`||B===`s`)&&(O.pfValue=B===`ms`?e:1e3*e),(B===`deg`||B===`rad`)&&(O.pfValue=B===`rad`?e:Gd(e)),B===`%`&&(O.pfValue=e/100),O}else if(l.propList){var M=[],z=``+e;if(z!==`none`){for(var q=z.split(/\s*,\s*|\s+/),$=0;$0&&s>0&&!isNaN(a.w)&&!isNaN(a.h)&&a.w>0&&a.h>0){u=Math.min((o-2*r)/a.w,(s-2*r)/a.h),u=u>this._private.maxZoom?this._private.maxZoom:u,u=u=a.minZoom&&(a.maxZoom=r),this},minZoom:function(e){return e===void 0?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return e===void 0?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var r=this._private,a=r.pan,n=r.zoom,i,o,s=!1;if(r.zoomingEnabled||(s=!0),ce(e)?o=e:Le(e)&&(o=e.level,e.position!=null?i=Fn(e.position,n,a):e.renderedPosition!=null&&(i=e.renderedPosition),i!=null&&!r.panningEnabled&&(s=!0)),o=o>r.maxZoom?r.maxZoom:o,o=or.maxZoom||!r.zoomingEnabled?o=!0:(r.zoom=u,i.push(`zoom`))}if(n&&(!o||!e.cancelOnFailedZoom)&&r.panningEnabled){var l=e.pan;ce(l.x)&&(r.pan.x=l.x,s=!1),ce(l.y)&&(r.pan.y=l.y,s=!1),s||i.push(`pan`)}return i.length>0&&(i.push(`viewport`),this.emit(i.join(` `)),this.notify(`viewport`)),this},center:function(e){var r=this.getCenterPan(e);return r&&(this._private.pan=r,this.emit(`pan viewport`),this.notify(`viewport`)),this},getCenterPan:function(e,r){if(this._private.panningEnabled){if(Te(e)){var a=e;e=this.mutableElements().filter(a)}else Tt(e)||(e=this.mutableElements());if(e.length!==0){var n=e.boundingBox(),i=this.width(),o=this.height();r=r===void 0?this._private.zoom:r;return{x:(i-r*(n.x1+n.x2))/2,y:(o-r*(n.y1+n.y2))/2}}}},reset:function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e=this._private,r=e.container,a=this;return e.sizeCache=e.sizeCache||(r?(function(){var n=a.window().getComputedStyle(r),i=function(s){return parseFloat(n.getPropertyValue(s))};return{width:r.clientWidth-i(`padding-left`)-i(`padding-right`),height:r.clientHeight-i(`padding-top`)-i(`padding-bottom`)}})():{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,r=this._private.zoom,a=this.renderedExtent(),n={x1:(a.x1-e.x)/r,x2:(a.x2-e.x)/r,y1:(a.y1-e.y)/r,y2:(a.y2-e.y)/r};return n.w=n.x2-n.x1,n.h=n.y2-n.y1,n},renderedExtent:function(){var e=this.width(),r=this.height();return{x1:0,y1:0,x2:e,y2:r,w:e,h:r}},multiClickDebounceTime:function(e){if(e)this._private.multiClickDebounceTime=e;else return this._private.multiClickDebounceTime;return this}};Ar.centre=Ar.center;Ar.autolockNodes=Ar.autolock;Ar.autoungrabifyNodes=Ar.autoungrabify;var La={data:Oe.data({field:`data`,bindingEvent:`data`,allowBinding:!0,allowSetting:!0,settingEvent:`data`,settingTriggersEvent:!0,triggerFnName:`trigger`,allowGetting:!0,updateStyle:!0}),removeData:Oe.removeData({field:`data`,event:`data`,triggerFnName:`trigger`,triggerEvent:!0,updateStyle:!0}),scratch:Oe.data({field:`scratch`,bindingEvent:`scratch`,allowBinding:!0,allowSetting:!0,settingEvent:`scratch`,settingTriggersEvent:!0,triggerFnName:`trigger`,allowGetting:!0,updateStyle:!0}),removeScratch:Oe.removeData({field:`scratch`,event:`scratch`,triggerFnName:`trigger`,triggerEvent:!0,updateStyle:!0})};La.attr=La.data;La.removeAttr=La.removeData;var Ia=function(e){var r=this;e=Se({},e);var a=e.container;a&&!En(a)&&En(a[0])&&(a=a[0]);var n=a?a._cyreg:null;n=n||{},n&&n.cy&&(n.cy.destroy(),n={});var i=n.readies=n.readies||[];a&&(a._cyreg=n),n.cy=r;var o=Qe!==void 0&&a!==void 0&&!e.headless,s=e;s.layout=Se({name:o?`grid`:`null`},s.layout),s.renderer=Se({name:o?`canvas`:`null`},s.renderer);var u=function(d,y,g){return y!==void 0?y:g!==void 0?g:d},l=this._private={container:a,ready:!1,options:s,elements:new ut(this),listeners:[],aniEles:new ut(this),data:s.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:u(!0,s.zoomingEnabled),userZoomingEnabled:u(!0,s.userZoomingEnabled),panningEnabled:u(!0,s.panningEnabled),userPanningEnabled:u(!0,s.userPanningEnabled),boxSelectionEnabled:u(!0,s.boxSelectionEnabled),autolock:u(!1,s.autolock,s.autolockNodes),autoungrabify:u(!1,s.autoungrabify,s.autoungrabifyNodes),autounselectify:u(!1,s.autounselectify),styleEnabled:s.styleEnabled===void 0?o:s.styleEnabled,zoom:ce(s.zoom)?s.zoom:1,pan:{x:Le(s.pan)&&ce(s.pan.x)?s.pan.x:0,y:Le(s.pan)&&ce(s.pan.y)?s.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:u(250,s.multiClickDebounceTime)};this.createEmitter(),this.selectionType(s.selectionType),this.zoomRange({min:s.minZoom,max:s.maxZoom});var f=function(d,y){if(d.some(Oc))return ra.all(d).then(y);y(d)};l.styleEnabled&&r.setStyle([]);var v=Se({},s,s.renderer);r.initRenderer(v);var c=function(d,y,g){r.notifications(!1);var p=r.mutableElements();p.length>0&&p.remove(),d!=null&&(Le(d)||Fe(d))&&r.add(d),r.one(`layoutready`,function(b){r.notifications(!0),r.emit(b),r.one(`load`,y),r.emitAndNotify(`load`)}).one(`layoutstop`,function(){r.one(`done`,g),r.emit(`done`)});var m=Se({},r._private.options.layout);m.eles=r.elements(),r.layout(m).run()};f([s.style,s.elements],function(h){var d=h[0],y=h[1];l.styleEnabled&&r.style().append(d),c(y,function(){r.startAnimationLoop(),l.ready=!0,$e(s.ready)&&r.on(`ready`,s.ready);for(var g=0;g0,s=!!t.boundingBox,u=yt(s?t.boundingBox:structuredClone(e.extent())),l;if(Tt(t.roots))l=t.roots;else if(Fe(t.roots)){for(var f=[],v=0;v0;){var R=A(),L=k(R,D);if(L)R.outgoers().filter(function(fe){return fe.isNode()&&r.has(fe)}).forEach(B);else if(L===null){Ne("Detected double maximal shift for node `"+R.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}var O=0;if(t.avoidOverlap)for(var M=0;M0&&p[0].length<=3?ye/2:0),se=2*Math.PI/p[de].length*be;return de===0&&p[0].length===1&&(Ee=1),{x:K.x+Ee*Math.cos(se),y:K.y+Ee*Math.sin(se)}}else{var Ce=p[de].length,De=Math.max(Ce===1?0:s?(u.w-t.padding*2-X.w)/((t.grid?V:Ce)-1):(u.w-t.padding*2-X.w)/((t.grid?V:Ce)+1),O);return{x:K.x+(be+1-(Ce+1)/2)*De,y:K.y+(de+1-(Z+1)/2)*I}}},ue={downward:0,leftward:90,upward:180,rightward:-90};Object.keys(ue).indexOf(t.direction)===-1&&Ge(`Invalid direction '`.concat(t.direction,`' specified for breadthfirst layout. Valid values are: `).concat(Object.keys(ue).join(`, `)));var re=function(ie){return fd(oe(ie),u,ue[t.direction])};return r.nodes().layoutPositions(this,t,re),this};var Qp={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function Cv(t){this.options=Se({},Qp,t)}Cv.prototype.run=function(){var t=this.options,e=t,r=t.cy,a=e.eles,n=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,i=a.nodes().not(`:parent`);e.sort&&(i=i.sort(e.sort));for(var o=yt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),s={x:o.x1+o.w/2,y:o.y1+o.h/2},l=(e.sweep===void 0?2*Math.PI-2*Math.PI/i.length:e.sweep)/Math.max(1,i.length-1),f,v=0,c=0;c1&&e.avoidOverlap){v*=1.75;var p=Math.cos(l)-Math.cos(0),m=Math.sin(l)-Math.sin(0),b=Math.sqrt(v*v/(p*p+m*m));f=Math.max(b,f)}var w=function(C,x){var T=e.startAngle+x*l*(n?1:-1),k=f*Math.cos(T),P=f*Math.sin(T);return{x:s.x+k,y:s.y+P}};return a.nodes().layoutPositions(this,e,w),this};var Jp={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function Tv(t){this.options=Se({},Jp,t)}Tv.prototype.run=function(){for(var t=this.options,e=t,r=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,a=t.cy,n=e.eles,i=n.nodes().not(`:parent`),o=yt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:a.width(),h:a.height()}),s={x:o.x1+o.w/2,y:o.y1+o.h/2},u=[],l=0,f=0;f0)Math.abs(m[0].value-w.value)>=g&&(m=[],p.push(m));m.push(w)}var C=l+e.minNodeSpacing;if(!e.avoidOverlap){var x=p.length>0&&p[0].length>1,k=(Math.min(o.w,o.h)/2-C)/(p.length+x?1:0);C=Math.min(C,k)}for(var P=0,D=0;D1&&e.avoidOverlap){var L=Math.cos(R)-Math.cos(0),O=Math.sin(R)-Math.sin(0),M=Math.sqrt(C*C/(L*L+O*O));P=Math.max(M,P)}B.r=P,P+=C}if(e.equidistant){for(var z=0,q=0,$=0;$=t.numIter||(iy(a,t),a.temperature=a.temperature*t.coolingFactor,a.temperature=t.animationThreshold&&i(),Cn(f)};f()}else{for(;l;)l=o(u),u++;Gl(a,t),s()}return this};Zn.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit(`layoutstop`),this};Zn.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var ey=function(e,r,a){for(var n=a.eles.edges(),i=a.eles.nodes(),o=yt(a.boundingBox?a.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),s={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:i.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:n.size(),temperature:a.initialTemp,clientWidth:o.w,clientHeight:o.h,boundingBox:o},u=a.eles.components(),l={},f=0;f0){s.graphSet.push(T);for(var f=0;fn.count?0:n.graph};var Sv=function(e,r,a,n){var i=n.graphSet[a];if(-10)var v=n.nodeOverlap*f,c=Math.sqrt(s*s+u*u),h=v*s/c,d=v*u/c;else var y=An(e,s,u),g=An(r,-1*s,-1*u),p=g.x-y.x,m=g.y-y.y,b=p*p+m*m,c=Math.sqrt(b),v=(e.nodeRepulsion+r.nodeRepulsion)/b,h=v*p/c,d=v*m/c;e.isLocked||(e.offsetX-=h,e.offsetY-=d),r.isLocked||(r.offsetX+=h,r.offsetY+=d)}};var uy=function(e,r,a,n){if(a>0)var i=e.maxX-r.minX;else var i=r.maxX-e.minX;if(n>0)var o=e.maxY-r.minY;else var o=r.maxY-e.minY;return i>=0&&o>=0?Math.sqrt(i*i+o*o):0};var An=function(e,r,a){var n=e.positionX,i=e.positionY,o=e.height||1,s=e.width||1,u=a/r,l=o/s,f={};return r===0&&0a?(f.x=n,f.y=i+o/2,f):0r&&-1*l<=u&&u<=l?(f.x=n-s/2,f.y=i-s*a/2/r,f):0=l)?(f.x=n+o*r/2/a,f.y=i+o/2,f):(0>a&&(u<=-1*l||u>=l)&&(f.x=n-o*r/2/a,f.y=i-o/2),f)};var ly=function(e,r){for(var a=0;aa){var g=r.gravity*h/y,p=r.gravity*d/y;c.offsetX+=g,c.offsetY+=p}}}}};var vy=function(e,r){var a=[],n=0,i=-1;for(a.push.apply(a,e.graphSet[0]),i+=e.graphSet[0].length;n<=i;){var o=a[n++],s=e.idToIndex[o],u=e.layoutNodes[s],l=u.children;if(0a)var i={x:a*e/n,y:a*r/n};else var i={x:e,y:r};return i};var Dv=function(e,r){var a=e.parentId;if(a!=null){var n=r.layoutNodes[r.idToIndex[a]],i=!1;if((n.maxX==null||e.maxX+n.padRight>n.maxX)&&(n.maxX=e.maxX+n.padRight,i=!0),(n.minX==null||e.minX-n.padLeftn.maxY)&&(n.maxY=e.maxY+n.padBottom,i=!0),(n.minY==null||e.minY-n.padTopp&&(d+=g+r.componentSpacing,h=0,y=0,g=0)}}};var hy={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function Pv(t){this.options=Se({},hy,t)}Pv.prototype.run=function(){var t=this.options,e=t,r=t.cy,a=e.eles,n=a.nodes().not(`:parent`);e.sort&&(n=n.sort(e.sort));var i=yt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(i.h===0||i.w===0)a.nodes().layoutPositions(this,e,function(j){return{x:i.x1,y:i.y1}});else{var o=n.size(),s=Math.sqrt(o*i.h/i.w),u=Math.round(s),l=Math.round(i.w/i.h*s),f=function(te){if(te==null)return Math.min(u,l);Math.min(u,l)==u?u=te:l=te},v=function(te){if(te==null)return Math.max(u,l);Math.max(u,l)==u?u=te:l=te},c=e.rows,h=e.cols!=null?e.cols:e.columns;if(c!=null&&h!=null)u=c,l=h;else if(c!=null&&h==null)u=c,l=Math.ceil(o/u);else if(c==null&&h!=null)l=h,u=Math.ceil(o/l);else if(l*u>o){var d=f(),y=v();(d-1)*y>=o?f(d-1):(y-1)*d>=o&&v(y-1)}else for(;l*u=o?v(p+1):f(g+1)}var m=i.w/l,b=i.h/u;if(e.condense&&(m=0,b=0),e.avoidOverlap)for(var w=0;w=l&&(L=0,R++)},M={},z=0;z(L=rh(t,e,O[M],O[M+1],O[M+2],O[M+3])))return g(x,L),!0}else if(k.edgeType===`bezier`||k.edgeType===`multibezier`||k.edgeType===`self`||k.edgeType===`compound`){for(var O=k.allpts,M=0;M+5(L=th(t,e,O[M],O[M+1],O[M+2],O[M+3],O[M+4],O[M+5])))return g(x,L),!0}for(var z=z||T.source,q=q||T.target,$=n.getArrowWidth(P,D),F=[{name:`source`,x:k.arrowStartX,y:k.arrowStartY,angle:k.srcArrowAngle},{name:`target`,x:k.arrowEndX,y:k.arrowEndY,angle:k.tgtArrowAngle},{name:`mid-source`,x:k.midX,y:k.midY,angle:k.midsrcArrowAngle},{name:`mid-target`,x:k.midX,y:k.midY,angle:k.midtgtArrowAngle}],M=0;M0&&(p(z),p(q))}function b(x,T,k){return pt(x,T,k)}function w(x,T){var k=x._private,P=c,D;T?D=T+`-`:D=``,x.boundingBox();var B=k.labelBounds[T||`main`],A=x.pstyle(D+`label`).value;if(!(!(x.pstyle(`text-events`).strValue===`yes`)||!A)){var L=b(k.rscratch,`labelX`,T),O=b(k.rscratch,`labelY`,T),M=b(k.rscratch,`labelAngle`,T),z=x.pstyle(D+`text-margin-x`).pfValue,q=x.pstyle(D+`text-margin-y`).pfValue,$=B.x1-P-z,F=B.x2+P-z,_=B.y1-P-q,j=B.y2+P-q;if(M){var te=Math.cos(M),Z=Math.sin(M),ne=function(X,I){return X=X-L,I=I-O,{x:X*te-I*Z+L,y:X*Z+I*te+O}},ae=ne($,_),ve=ne($,j),J=ne(F,_),G=ne(F,j);if(Et(t,e,[ae.x+z,ae.y+q,J.x+z,J.y+q,G.x+z,G.y+q,ve.x+z,ve.y+q]))return g(x),!0}else if(rr(B,t,e))return g(x),!0}}for(var E=o.length-1;E>=0;E--){var C=o[E];C.isNode()?p(C)||w(C):m(C)||w(C)||w(C,`source`)||w(C,`target`)}return s};Mr.getAllInBox=function(t,e,r,a){var n=this.getCachedZSortedEles().interactive,o=2/this.cy.zoom(),s=[],u=Math.min(t,r),l=Math.max(t,r),f=Math.min(e,a),v=Math.max(e,a);t=u,r=l,e=f,a=v;var c=yt({x1:t,y1:e,x2:r,y2:a}),h=[{x:c.x1,y:c.y1},{x:c.x2,y:c.y1},{x:c.x2,y:c.y2},{x:c.x1,y:c.y2}],d=[[h[0],h[1]],[h[1],h[2]],[h[2],h[3]],[h[3],h[0]]];function y(X,I,V){return pt(X,I,V)}function g(X,I){var V=X._private,oe=o,ue=``;X.boundingBox();var re=V.labelBounds.main;if(!re)return null;var fe=y(V.rscratch,`labelX`,I),ie=y(V.rscratch,`labelY`,I),le=y(V.rscratch,`labelAngle`,I),de=X.pstyle(ue+`text-margin-x`).pfValue,be=X.pstyle(ue+`text-margin-y`).pfValue,ye=re.x1-oe-de,Ee=re.x2+oe-de,se=re.y1-oe-be,Ce=re.y2+oe-be;if(le){var De=Math.cos(le),Q=Math.sin(le),S=function(U,H){return U=U-fe,H=H-ie,{x:U*De-H*Q+fe,y:U*Q+H*De+ie}};return[S(ye,se),S(Ee,se),S(Ee,Ce),S(ye,Ce)]}else return[{x:ye,y:se},{x:Ee,y:se},{x:Ee,y:Ce},{x:ye,y:Ce}]}function p(X,I,V,oe){function ue(re,fe,ie){return(ie.y-re.y)*(fe.x-re.x)>(fe.y-re.y)*(ie.x-re.x)}return ue(X,V,oe)!==ue(I,V,oe)&&ue(X,I,V)!==ue(X,I,oe)}for(var m=0;m0?-(Math.PI-e.ang):Math.PI+e.ang};var wy=function(e,r,a,n,i){if(e!==Kl?Yl(r,e,Vt):by(Dt,Vt),Yl(r,a,Dt),Wl=Vt.nx*Dt.ny-Vt.ny*Dt.nx,Ul=Vt.nx*Dt.nx-Vt.ny*-Dt.ny,Wt=Math.asin(Math.max(-1,Math.min(1,Wl))),Math.abs(Wt)<1e-6){Uo=r.x,Ko=r.y,Cr=Vr=0;return}Sr=1,mn=!1,Ul<0?Wt<0?Wt=Math.PI+Wt:(Wt=Math.PI-Wt,Sr=-1,mn=!0):Wt>0&&(Sr=-1,mn=!0),r.radius!==void 0?Vr=r.radius:Vr=n,br=Wt/2,sn=Math.min(Vt.len/2,Dt.len/2),i?(zt=Math.abs(Math.cos(br)*Vr/Math.sin(br)),zt>sn?(zt=sn,Cr=Math.abs(zt*Math.sin(br)/Math.cos(br))):Cr=Vr):(zt=Math.min(sn,Vr),Cr=Math.abs(zt*Math.sin(br)/Math.cos(br))),Yo=r.x+Dt.nx*zt,Xo=r.y+Dt.ny*zt,Uo=Yo-Dt.ny*Cr*Sr,Ko=Xo+Dt.nx*Cr*Sr,Mv=r.x+Vt.nx*zt,Lv=r.y+Vt.ny*zt,Kl=r};function Iv(t,e){e.radius===0?t.lineTo(e.cx,e.cy):t.arc(e.cx,e.cy,e.radius,e.startAngle,e.endAngle,e.counterClockwise)}function Es(t,e,r,a){var n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;return a===0||e.radius===0?{cx:e.x,cy:e.y,radius:0,startX:e.x,startY:e.y,stopX:e.x,stopY:e.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(wy(t,e,r,a,n),{cx:Uo,cy:Ko,radius:Cr,startX:Mv,startY:Lv,stopX:Yo,stopY:Xo,startAngle:Vt.ang+Math.PI/2*Sr,endAngle:Dt.ang-Math.PI/2*Sr,counterClockwise:mn})}var Oa=.01;var xy=Math.sqrt(2*Oa);var ht={};ht.findMidptPtsEtc=function(t,e){var r=e.posPts,a=e.intersectionPts,n=e.vectorNormInverse,i,o=t.pstyle(`source-endpoint`),s=t.pstyle(`target-endpoint`),u=o.units!=null&&s.units!=null,l=function(E,C,x,T){var k=T-C,P=x-E,D=Math.sqrt(P*P+k*k);return{x:-k/D,y:P/D}};switch(t.pstyle(`edge-distances`).value){case`node-position`:i=r;break;case`intersection`:i=a;break;case`endpoints`:if(u){var c=Ye(this.manualEndptToPx(t.source()[0],o),2),h=c[0],d=c[1],g=Ye(this.manualEndptToPx(t.target()[0],s),2),p=g[0],m=g[1],b={x1:h,y1:d,x2:p,y2:m};n=l(h,d,p,m),i=b}else Ne(`Edge `.concat(t.id(),` has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).`)),i=a}return{midptPts:i,vectorNormInverse:n}};ht.findHaystackPoints=function(t){for(var e=0;e0?Math.max(H-Y,0):Math.min(H+Y,0)},A=B(P,T),R=B(D,k),L=!1;m===l?p=Math.abs(A)>Math.abs(R)?n:a:m===u||m===s?(p=a,L=!0):(m===i||m===o)&&(p=n,L=!0);var O=p===a,M=O?R:A,z=O?D:P,q=ls(z),$=!1;!(L&&(w||C))&&(m===s&&z<0||m===u&&z>0||m===i&&z>0||m===o&&z<0)&&(q*=-1,M=q*Math.abs(M),$=!0);var F;if(w)F=(E<0?1+E:E)*M;else F=(E<0?M:0)+E*q;var te=function(H){return Math.abs(H)=Math.abs(M)},Z=te(F),ne=te(Math.abs(M)-Math.abs(F));if((Z||ne)&&!$)if(O){var ve=Math.abs(z)<=c/2,J=Math.abs(P)<=h/2;if(ve){var G=(f.x1+f.x2)/2;r.segpts=[G,f.y1,G,f.y2]}else if(J){var X=(f.y1+f.y2)/2;r.segpts=[f.x1,X,f.x2,X]}else r.segpts=[f.x1,f.y2]}else{var oe=Math.abs(z)<=v/2,ue=Math.abs(D)<=d/2;if(oe){var re=(f.y1+f.y2)/2;r.segpts=[f.x1,re,f.x2,re]}else if(ue){var le=(f.x1+f.x2)/2;r.segpts=[le,f.y1,le,f.y2]}else r.segpts=[f.x2,f.y1]}else if(O){var ye=f.y1+F+(g?c/2*q:0);r.segpts=[f.x1,ye,f.x2,ye]}else{var Ce=f.x1+F+(g?v/2*q:0);r.segpts=[Ce,f.y1,Ce,f.y2]}if(r.isRound){var S=t.pstyle(`taxi-radius`).value,N=t.pstyle(`radius-type`).value[0]===`arc-radius`;r.radii=new Array(r.segpts.length/2).fill(S),r.isArcRadius=new Array(r.segpts.length/2).fill(N)}};ht.tryToCorrectInvalidPoints=function(t,e){var r=t._private.rscratch;if(r.edgeType===`bezier`){var a=e.srcPos,n=e.tgtPos,i=e.srcW,o=e.srcH,s=e.tgtW,u=e.tgtH,l=e.srcShape,f=e.tgtShape,v=e.srcCornerRadius,c=e.tgtCornerRadius,h=e.srcRs,d=e.tgtRs,y=!ce(r.startX)||!ce(r.startY),g=!ce(r.arrowStartX)||!ce(r.arrowStartY),p=!ce(r.endX)||!ce(r.endY),m=!ce(r.arrowEndX)||!ce(r.arrowEndY),E=3*(this.getArrowWidth(t.pstyle(`width`).pfValue,t.pstyle(`arrow-scale`).value)*this.arrowShapeWidth),C=Pr({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.startX,y:r.startY}),x=Cz.poolIndex()){var q=M;M=z,z=q}var $=A.srcPos=M.position(),F=A.tgtPos=z.position(),_=A.srcW=M.outerWidth(),j=A.srcH=M.outerHeight(),te=A.tgtW=z.outerWidth(),Z=A.tgtH=z.outerHeight(),ne=A.srcShape=r.nodeShapes[e.getNodeShape(M)],ae=A.tgtShape=r.nodeShapes[e.getNodeShape(z)],ve=A.srcCornerRadius=M.pstyle(`corner-radius`).value===`auto`?`auto`:M.pstyle(`corner-radius`).pfValue,J=A.tgtCornerRadius=z.pstyle(`corner-radius`).value===`auto`?`auto`:z.pstyle(`corner-radius`).pfValue,G=A.tgtRs=z._private.rscratch,W=A.srcRs=M._private.rscratch;A.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var K=0;K=xy||(se=Math.sqrt(Math.max(Ee*Ee,Oa)+Math.max(ye*ye,Oa)));var Ce=A.vector={x:Ee,y:ye},De=A.vectorNorm={x:Ce.x/se,y:Ce.y/se},Q={x:-De.y,y:De.x};A.nodesOverlap=!ce(se)||ae.checkPoint(re[0],re[1],0,te,Z,F.x,F.y,J,G)||ne.checkPoint(ie[0],ie[1],0,_,j,$.x,$.y,ve,W),A.vectorNormInverse=Q,R={nodesOverlap:A.nodesOverlap,dirCounts:A.dirCounts,calculatedIntersection:!0,hasBezier:A.hasBezier,hasUnbundled:A.hasUnbundled,eles:A.eles,srcPos:F,srcRs:G,tgtPos:$,tgtRs:W,srcW:te,srcH:Z,tgtW:_,tgtH:j,srcIntn:le,tgtIntn:fe,srcShape:ae,tgtShape:ne,posPts:{x1:be.x2,y1:be.y2,x2:be.x1,y2:be.y1},intersectionPts:{x1:de.x2,y1:de.y2,x2:de.x1,y2:de.y1},vector:{x:-Ce.x,y:-Ce.y},vectorNorm:{x:-De.x,y:-De.y},vectorNormInverse:{x:-Q.x,y:-Q.y}}}var S=ue?R:A;I.nodesOverlap=S.nodesOverlap,I.srcIntn=S.srcIntn,I.tgtIntn=S.tgtIntn,I.isRound=V.startsWith(`round`),n&&(M.isParent()||M.isChild()||z.isParent()||z.isChild())&&(M.parents().anySame(z)||z.parents().anySame(M)||M.same(z)&&M.isParent())?e.findCompoundLoopPoints(X,S,K,oe):M===z?e.findLoopPoints(X,S,K,oe):V.endsWith(`segments`)?e.findSegmentsPoints(X,S):V.endsWith(`taxi`)?e.findTaxiPoints(X,S):V===`straight`||!oe&&A.eles.length%2===1&&K===Math.floor(A.eles.length/2)?e.findStraightEdgePoints(X):e.findBezierPoints(X,S,K,oe,ue),e.findEndpoints(X),e.tryToCorrectInvalidPoints(X,S),e.checkForInvalidEdgeWarning(X),e.storeAllpts(X),e.storeEdgeProjections(X),e.calculateArrowAngles(X),e.recalculateEdgeLabelProjections(X),e.calculateLabelAngles(X)}},x=0;x0){var re=l,fe=Er(re,$r(o)),ie=Er(re,$r(ue)),le=fe;if(ie2)Er(re,{x:ue[2],y:ue[3]})0){var pe=f,ee=Er(pe,$r(o)),ge=Er(pe,$r(Y)),he=ee;if(ge2)Er(pe,{x:Y[2],y:Y[3]})=d||x){g={cp:w,segment:C};break}}if(g)break}var T=g.cp,k=g.segment,P=(d-p)/k.length,D=k.t1-k.t0,B=h?k.t0+D*P:k.t1-D*P;B=Ba(0,B,1),e=Ur(T.p0,T.p1,T.p2,B),c=Cy(T.p0,T.p1,T.p2,B);break;case`straight`:case`segments`:case`haystack`:for(var A=0,R,L,O,M,z=a.allpts.length,q=0;q+3=d));q+=2);var F=(d-L)/R;F=Ba(0,F,1),e=Hd(O,M,F),c=zv(O,M)}o(`labelX`,v,e.x),o(`labelY`,v,e.y),o(`labelAutoAngle`,v,c)}};l(`source`),l(`target`),this.applyLabelDimensions(t)}};$t.applyLabelDimensions=function(t){this.applyPrefixedLabelDimensions(t),t.isEdge()&&(this.applyPrefixedLabelDimensions(t,`source`),this.applyPrefixedLabelDimensions(t,`target`))};$t.applyPrefixedLabelDimensions=function(t,e){var r=t._private,a=this.getLabelText(t,e),n=Dr(a,t._private.labelDimsKey);if(pt(r.rscratch,`prefixedLabelDimsKey`,e)!==n){qt(r.rscratch,`prefixedLabelDimsKey`,e,n);var i=this.calculateLabelDimensions(t,a),o=t.pstyle(`line-height`).pfValue,s=t.pstyle(`font-size`).pfValue,u=t.pstyle(`text-wrap`).strValue,l=pt(r.rscratch,`labelWrapCachedLines`,e)||[],f=u!==`wrap`?1:Math.max(l.length,1),v=s*o,c=i.width,h=i.height+(f-1)*(o-1)*s;qt(r.rstyle,`labelWidth`,e,c),qt(r.rscratch,`labelWidth`,e,c),qt(r.rstyle,`labelHeight`,e,h),qt(r.rscratch,`labelHeight`,e,h),qt(r.rscratch,`labelLineHeight`,e,v),qt(r.rscratch,`labelActualDescent`,e,i.labelActualDescent)}};$t.getLabelText=function(t,e){var r=t._private,a=e?e+`-`:``,n=t.pstyle(a+`label`).strValue,i=t.pstyle(`text-transform`).value,o=function(j,te){return te?(qt(r.rscratch,j,e,te),te):pt(r.rscratch,j,e)};if(!n)return``;i==`none`||(i==`uppercase`?n=n.toUpperCase():i==`lowercase`&&(n=n.toLowerCase()));var s=t.pstyle(`text-wrap`).value;if(s===`wrap`){var u=o(`labelKey`);if(u!=null&&o(`labelWrapKey`)===u)return o(`labelWrapCachedText`);for(var l=`​`,f=n.split(` +`),v=t.pstyle(`text-max-width`).pfValue,h=t.pstyle(`text-overflow-wrap`).value===`anywhere`,d=[],y=/[\s\u200b]+|$/g,g=0;gv){var E=p.matchAll(y),C=``,x=0,T=Ct(E),k;try{for(T.s();!(k=T.n()).done;){var P=k.value,D=P[0],B=p.substring(x,P.index);x=P.index+D.length;var A=C.length===0?B:C+B+D;this.calculateLabelDimensions(t,A).width<=v?C+=B+D:(C&&d.push(C),C=B+D)}}catch(_){T.e(_)}finally{T.f()}C.match(/^[\s\u200b]+$/)||d.push(C)}else d.push(p)}o(`labelWrapCachedLines`,d),n=o(`labelWrapCachedText`,d.join(` +`)),o(`labelWrapKey`,u)}else if(s===`ellipsis`){var O=t.pstyle(`text-max-width`).pfValue,M=``,z=`…`,q=!1;if(this.calculateLabelDimensions(t,n).widthO)break;M+=n[$],$===n.length-1&&(q=!0)}return q||(M+=z),M}return n};$t.getLabelJustification=function(t){var e=t.pstyle(`text-justification`).strValue,r=t.pstyle(`text-halign`).strValue;return e===`auto`?t.isNode()?fp(r):`center`:e};$t.calculateLabelDimensions=function(t,e){var n=this.cy.window().document,i=0,o=t.pstyle(`font-style`).strValue,s=t.pstyle(`font-size`).pfValue,u=t.pstyle(`font-family`).strValue,l=t.pstyle(`font-weight`).strValue,f=t.pstyle(`text-metrics`).strValue||`font`,v=this.labelCalcCanvas,c=this.labelCalcCanvasContext;if(!v){v=this.labelCalcCanvas=n.createElement(`canvas`),c=this.labelCalcCanvasContext=v.getContext(`2d`);var h=v.style;h.position=`absolute`,h.left=`-9999px`,h.top=`-9999px`,h.zIndex=`-1`,h.visibility=`hidden`,h.pointerEvents=`none`}c.font=``.concat(o,` `).concat(l,` `).concat(s,`px `).concat(u);for(var d=0,y=0,g=e.split(` +`),p=g.length,m=0,b=0,w=0;w1&&arguments[1]!==void 0?arguments[1]:!0;if(e.merge(o),s)for(var u=0;u=t.desktopTapThreshold2}var vt=i(S);tt&&(t.hoverData.tapholdCancelled=!0);var At=function(){var kt=t.hoverData.dragDelta=t.hoverData.dragDelta||[];kt.length===0?(kt.push(Ae[0]),kt.push(Ae[1])):(kt[0]+=Ae[0],kt[1]+=Ae[1])};U=!0,n(Pe,[`mousemove`,`vmousemove`,`tapdrag`],S,{x:ee[0],y:ee[1]});var We=function(kt){return{originalEvent:S,type:kt,position:{x:ee[0],y:ee[1]}}},St=function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||H.emit(We(`boxstart`)),we[4]=1,t.hoverData.selecting=!0,t.redrawHint(`select`,!0),t.redraw()};if(t.hoverData.which===3){if(tt){var Rt=We(`cxtdrag`);xe?xe.emit(Rt):H.emit(Rt),t.hoverData.cxtDragged=!0,(!t.hoverData.cxtOver||Pe!==t.hoverData.cxtOver)&&(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit(We(`cxtdragout`)),t.hoverData.cxtOver=Pe,Pe&&Pe.emit(We(`cxtdragover`)))}}else if(t.hoverData.dragging){if(U=!0,H.panningEnabled()&&H.userPanningEnabled()){var Qt;if(t.hoverData.justStartedPan){var Ir=t.hoverData.mdownPos;Qt={x:(ee[0]-Ir[0])*Y,y:(ee[1]-Ir[1])*Y},t.hoverData.justStartedPan=!1}else Qt={x:Ae[0]*Y,y:Ae[1]*Y};H.panBy(Qt),H.emit(We(`dragpan`)),t.hoverData.dragged=!0}ee=t.projectIntoViewport(S.clientX,S.clientY)}else if(we[4]==1&&(xe==null||xe.pannable())){if(tt){if(!t.hoverData.dragging&&H.boxSelectionEnabled()&&(vt||!H.panningEnabled()||!H.userPanningEnabled()))St();else if(!t.hoverData.selecting&&H.panningEnabled()&&H.userPanningEnabled())o(xe,t.hoverData.downs)&&(t.hoverData.dragging=!0,t.hoverData.justStartedPan=!0,we[4]=0,t.data.bgActivePosistion=$r(ge),t.redrawHint(`select`,!0),t.redraw());xe&&xe.pannable()&&xe.active()&&xe.unactivate()}}else{if(xe&&xe.pannable()&&xe.active()&&xe.unactivate(),(!xe||!xe.grabbed())&&Pe!=ke&&(ke&&n(ke,[`mouseout`,`tapdragout`],S,{x:ee[0],y:ee[1]}),Pe&&n(Pe,[`mouseover`,`tapdragover`],S,{x:ee[0],y:ee[1]}),t.hoverData.last=Pe),xe)if(tt){if(H.boxSelectionEnabled()&&vt)xe&&xe.grabbed()&&(y(Re),xe.emit(We(`freeon`)),Re.emit(We(`free`)),t.dragData.didDrag&&(xe.emit(We(`dragfreeon`)),Re.emit(We(`dragfree`)))),St();else if(xe&&xe.grabbed()&&t.nodeIsDraggable(xe)){var wt=!t.dragData.didDrag;wt&&t.redrawHint(`eles`,!0),t.dragData.didDrag=!0,t.hoverData.draggingEles||h(Re,{inDragLayer:!0});var at={x:0,y:0};if(ce(Ae[0])&&ce(Ae[1])&&(at.x+=Ae[0],at.y+=Ae[1],wt)){var xt=t.hoverData.dragDelta;xt&&ce(xt[0])&&ce(xt[1])&&(at.x+=xt[0],at.y+=xt[1])}t.hoverData.draggingEles=!0,Re.silentShift(at).emit(We(`position`)).emit(We(`drag`)),t.redrawHint(`drag`,!0),t.redraw()}}else At();U=!0}if(we[2]=ee[0],we[3]=ee[1],U)return S.stopPropagation&&S.stopPropagation(),S.preventDefault&&S.preventDefault(),!1}},!1);var P,D,B;t.registerBinding(e,`mouseup`,function(S){if(!(t.hoverData.which===1&&S.which!==1&&t.hoverData.capture)){if(t.hoverData.capture){t.hoverData.capture=!1;var U=t.cy,H=t.projectIntoViewport(S.clientX,S.clientY),Y=t.selection,pe=t.findNearestElement(H[0],H[1],!0,!1),ee=t.dragData.possibleDragElements,ge=t.hoverData.down,he=i(S);t.data.bgActivePosistion&&(t.redrawHint(`select`,!0),t.redraw()),t.hoverData.tapholdCancelled=!0,t.data.bgActivePosistion=void 0,ge&&ge.unactivate();var we=function(rt){return{originalEvent:S,type:rt,position:{x:H[0],y:H[1]}}};if(t.hoverData.which===3){var Pe=we(`cxttapend`);if(ge?ge.emit(Pe):U.emit(Pe),!t.hoverData.cxtDragged){var ke=we(`cxttap`);ge?ge.emit(ke):U.emit(ke)}t.hoverData.cxtDragged=!1,t.hoverData.which=null}else if(t.hoverData.which===1){if(n(pe,[`mouseup`,`tapend`,`vmouseup`],S,{x:H[0],y:H[1]}),!t.dragData.didDrag&&!t.hoverData.dragged&&!t.hoverData.selecting&&!t.hoverData.isOverThresholdDrag&&(n(ge,[`click`,`tap`,`vclick`],S,{x:H[0],y:H[1]}),D=!1,S.timeStamp-B<=U.multiClickDebounceTime()?(P&&clearTimeout(P),D=!0,B=null,n(ge,[`dblclick`,`dbltap`,`vdblclick`],S,{x:H[0],y:H[1]})):(P=setTimeout(function(){D||n(ge,[`oneclick`,`onetap`,`voneclick`],S,{x:H[0],y:H[1]})},U.multiClickDebounceTime()),B=S.timeStamp)),ge==null&&!t.dragData.didDrag&&!t.hoverData.selecting&&!t.hoverData.dragged&&!i(S)&&(U.$(r).unselect([`tapunselect`]),ee.length>0&&t.redrawHint(`eles`,!0),t.dragData.possibleDragElements=ee=U.collection()),pe==ge&&!t.dragData.didDrag&&!t.hoverData.selecting&&pe!=null&&pe._private.selectable&&(t.hoverData.dragging||(U.selectionType()===`additive`||he?pe.selected()?pe.unselect([`tapunselect`]):pe.select([`tapselect`]):he||(U.$(r).unmerge(pe).unselect([`tapunselect`]),pe.select([`tapselect`]))),t.redrawHint(`eles`,!0)),t.hoverData.selecting){var xe=U.collection(t.getAllInBox(Y[0],Y[1],Y[2],Y[3]));t.redrawHint(`select`,!0),xe.length>0&&t.redrawHint(`eles`,!0),U.emit(we(`boxend`));var Ae=function(rt){return rt.selectable()&&!rt.selected()};U.selectionType()===`additive`||he||U.$(r).unmerge(xe).unselect(),xe.emit(we(`box`)).stdFilter(Ae).select().emit(we(`boxselect`)),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint(`select`,!0),t.redrawHint(`eles`,!0),t.redraw()),!Y[4]){t.redrawHint(`drag`,!0),t.redrawHint(`eles`,!0);var Re=ge&&ge.grabbed();y(ee),Re&&(ge.emit(we(`freeon`)),ee.emit(we(`free`)),t.dragData.didDrag&&(ge.emit(we(`dragfreeon`)),ee.emit(we(`dragfree`))))}}Y[4]=0,t.hoverData.down=null,t.hoverData.cxtStarted=!1,t.hoverData.draggingEles=!1,t.hoverData.selecting=!1,t.hoverData.isOverThresholdDrag=!1,t.dragData.didDrag=!1,t.hoverData.dragged=!1,t.hoverData.dragDelta=[],t.hoverData.mdownPos=null,t.hoverData.mdownGPos=null,t.hoverData.which=null}}},!1);var A=[],R=4,L,O=1e5,M=function(S){for(var N=Math.abs(S[0]),U=1;U=R){L=!1;var H=A;if(H[0]>=5){var Y;M(H)?Y=H[0]:Y=_d(H),Y>1&&(L=!0,O=Y)}}else A.push(Math.abs(U)),N=!0;else L&&(O=Math.min(Math.abs(U),O));if(!t.scrollingPage){var pe=t.cy,ee=pe.zoom(),ge=pe.pan(),he=t.projectIntoViewport(S.clientX,S.clientY),we=[he[0]*ee+ge.x,he[1]*ee+ge.y];if(t.hoverData.draggingEles||t.hoverData.dragging||t.hoverData.cxtStarted||x()){S.preventDefault();return}if(pe.panningEnabled()&&pe.userPanningEnabled()&&pe.zoomingEnabled()&&pe.userZoomingEnabled()){S.preventDefault(),t.data.wheelZooming=!0,clearTimeout(t.data.wheelTimeout),t.data.wheelTimeout=setTimeout(function(){t.data.wheelZooming=!1,t.redrawHint(`eles`,!0),t.redraw()},150);var Pe;N&&Math.abs(U)>5&&(U=ls(U)*5),Pe=U/-250,L&&(Pe/=O,Pe*=3),Pe=Pe*t.wheelSensitivity;S.deltaMode===1&&(Pe*=33);var xe=pe.zoom()*Math.pow(10,Pe);S.type===`gesturechange`&&(xe=t.gestureStartZoom*S.scale),pe.zoom({level:xe,renderedPosition:{x:we[0],y:we[1]}}),pe.emit({type:S.type===`gesturechange`?`pinchzoom`:`scrollzoom`,originalEvent:S,position:{x:he[0],y:he[1]}})}}}};t.registerBinding(t.container,`wheel`,z,!0),t.registerBinding(e,`scroll`,function(S){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout(function(){t.scrollingPage=!1},250)},!0),t.registerBinding(t.container,`gesturestart`,function(S){t.gestureStartZoom=t.cy.zoom(),t.hasTouchStarted||S.preventDefault()},!0),t.registerBinding(t.container,`gesturechange`,function(Q){t.hasTouchStarted||z(Q)},!0),t.registerBinding(t.container,`mouseout`,function(S){var N=t.projectIntoViewport(S.clientX,S.clientY);t.cy.emit({originalEvent:S,type:`mouseout`,position:{x:N[0],y:N[1]}})},!1),t.registerBinding(t.container,`mouseover`,function(S){var N=t.projectIntoViewport(S.clientX,S.clientY);t.cy.emit({originalEvent:S,type:`mouseover`,position:{x:N[0],y:N[1]}})},!1);var q,$,F,_,j,te,Z,ne,ae,ve,J,G,W,K=function(S,N,U,H){return Math.sqrt((U-S)*(U-S)+(H-N)*(H-N))},X=function(S,N,U,H){return(U-S)*(U-S)+(H-N)*(H-N)},I;t.registerBinding(t.container,`touchstart`,I=function(S){if(t.hasTouchStarted=!0,!!T(S)){p(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var N=t.cy,U=t.touchData.now,H=t.touchData.earlier;if(S.touches[0]){var Y=t.projectIntoViewport(S.touches[0].clientX,S.touches[0].clientY);U[0]=Y[0],U[1]=Y[1]}if(S.touches[1]){var Y=t.projectIntoViewport(S.touches[1].clientX,S.touches[1].clientY);U[2]=Y[0],U[3]=Y[1]}if(S.touches[2]){var Y=t.projectIntoViewport(S.touches[2].clientX,S.touches[2].clientY);U[4]=Y[0],U[5]=Y[1]}var pe=function(vt){return{originalEvent:S,type:vt,position:{x:U[0],y:U[1]}}};if(S.touches[1]){t.touchData.singleTouchMoved=!0,y(t.dragData.touchDragEles);var ee=t.findContainerClientCoords();ae=ee[0],ve=ee[1],J=ee[2],G=ee[3],q=S.touches[0].clientX-ae,$=S.touches[0].clientY-ve,F=S.touches[1].clientX-ae,_=S.touches[1].clientY-ve,W=0<=q&&q<=J&&0<=F&&F<=J&&0<=$&&$<=G&&0<=_&&_<=G;var ge=N.pan(),he=N.zoom();j=K(q,$,F,_),te=X(q,$,F,_),Z=[(q+F)/2,($+_)/2],ne=[(Z[0]-ge.x)/he,(Z[1]-ge.y)/he];var we=200,Pe=we*we;if(te=1){for(var bt=t.touchData.startPosition=[null,null,null,null,null,null],Xe=0;Xe=t.touchTapThreshold2}if(N&&t.touchData.cxt){S.preventDefault();var Xe=S.touches[0].clientX-ae,Ze=S.touches[0].clientY-ve,He=S.touches[1].clientX-ae,vt=S.touches[1].clientY-ve,At=X(Xe,Ze,He,vt),We=At/te,St=150,Rt=St*St,Qt=1.5;if(We>=Qt*Qt||At>=Rt){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint(`select`,!0);var mr=he(`cxttapend`);t.touchData.start?(t.touchData.start.unactivate().emit(mr),t.touchData.start=null):H.emit(mr)}}if(N&&t.touchData.cxt){var mr=he(`cxtdrag`);t.data.bgActivePosistion=void 0,t.redrawHint(`select`,!0),t.touchData.start?t.touchData.start.emit(mr):H.emit(mr),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var wt=t.findNearestElement(Y[0],Y[1],!0,!0);(!t.touchData.cxtOver||wt!==t.touchData.cxtOver)&&(t.touchData.cxtOver&&t.touchData.cxtOver.emit(he(`cxtdragout`)),t.touchData.cxtOver=wt,wt&&wt.emit(he(`cxtdragover`)))}else if(N&&S.touches[2]&&H.boxSelectionEnabled())S.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||H.emit(he(`boxstart`)),t.touchData.selecting=!0,t.touchData.didSelect=!0,U[4]=1,!U||U.length===0||U[0]===void 0?(U[0]=(Y[0]+Y[2]+Y[4])/3,U[1]=(Y[1]+Y[3]+Y[5])/3,U[2]=(Y[0]+Y[2]+Y[4])/3+1,U[3]=(Y[1]+Y[3]+Y[5])/3+1):(U[2]=(Y[0]+Y[2]+Y[4])/3,U[3]=(Y[1]+Y[3]+Y[5])/3),t.redrawHint(`select`,!0),t.redraw();else if(N&&S.touches[1]&&!t.touchData.didSelect&&H.zoomingEnabled()&&H.panningEnabled()&&H.userZoomingEnabled()&&H.userPanningEnabled()){S.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint(`select`,!0);var at=t.dragData.touchDragEles;if(at){t.redrawHint(`drag`,!0);for(var xt=0;xt0&&!t.hoverData.draggingEles&&!t.swipePanning&&t.data.bgActivePosistion!=null&&(t.data.bgActivePosistion=void 0,t.redrawHint(`select`,!0),t.redraw())}},!1);var oe;t.registerBinding(e,`touchcancel`,oe=function(S){var N=t.touchData.start;t.touchData.capture=!1,N&&N.unactivate()});var ue,re,fe,ie;if(t.registerBinding(e,`touchend`,ue=function(S){var N=t.touchData.start;if(t.touchData.capture)S.touches.length===0&&(t.touchData.capture=!1),S.preventDefault();else return;var H=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var Y=t.cy,pe=Y.zoom(),ee=t.touchData.now,ge=t.touchData.earlier;if(S.touches[0]){var he=t.projectIntoViewport(S.touches[0].clientX,S.touches[0].clientY);ee[0]=he[0],ee[1]=he[1]}if(S.touches[1]){var he=t.projectIntoViewport(S.touches[1].clientX,S.touches[1].clientY);ee[2]=he[0],ee[3]=he[1]}if(S.touches[2]){var he=t.projectIntoViewport(S.touches[2].clientX,S.touches[2].clientY);ee[4]=he[0],ee[5]=he[1]}var we=function(Rt){return{originalEvent:S,type:Rt,position:{x:ee[0],y:ee[1]}}};N&&N.unactivate();var Pe;if(t.touchData.cxt){if(Pe=we(`cxttapend`),N?N.emit(Pe):Y.emit(Pe),!t.touchData.cxtDragged){var ke=we(`cxttap`);N?N.emit(ke):Y.emit(ke)}t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,t.redraw();return}if(!S.touches[2]&&Y.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var xe=Y.collection(t.getAllInBox(H[0],H[1],H[2],H[3]));H[0]=void 0,H[1]=void 0,H[2]=void 0,H[3]=void 0,H[4]=0,t.redrawHint(`select`,!0),Y.emit(we(`boxend`));var Ae=function(Rt){return Rt.selectable()&&!Rt.selected()};xe.emit(we(`box`)).stdFilter(Ae).select().emit(we(`boxselect`)),xe.nonempty()&&t.redrawHint(`eles`,!0),t.redraw()}if(N?.unactivate(),S.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint(`select`,!0);else if(!S.touches[1]){if(!S.touches[0]){if(!S.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint(`select`,!0);var Re=t.dragData.touchDragEles;if(N!=null){var tt=N._private.grabbed;y(Re),t.redrawHint(`drag`,!0),t.redrawHint(`eles`,!0),tt&&(N.emit(we(`freeon`)),Re.emit(we(`free`)),t.dragData.didDrag&&(N.emit(we(`dragfreeon`)),Re.emit(we(`dragfree`)))),n(N,[`touchend`,`tapend`,`vmouseup`,`tapdragout`],S,{x:ee[0],y:ee[1]}),N.unactivate(),t.touchData.start=null}else n(t.findNearestElement(ee[0],ee[1],!0,!0),[`touchend`,`tapend`,`vmouseup`,`tapdragout`],S,{x:ee[0],y:ee[1]});var bt=t.touchData.startPosition[0]-ee[0],Xe=bt*bt,Ze=t.touchData.startPosition[1]-ee[1],At=(Xe+Ze*Ze)*pe*pe;t.touchData.singleTouchMoved||(N||Y.$(`:selected`).unselect([`tapunselect`]),n(N,[`tap`,`vclick`],S,{x:ee[0],y:ee[1]}),re=!1,S.timeStamp-ie<=Y.multiClickDebounceTime()?(fe&&clearTimeout(fe),re=!0,ie=null,n(N,[`dbltap`,`vdblclick`],S,{x:ee[0],y:ee[1]})):(fe=setTimeout(function(){re||n(N,[`onetap`,`voneclick`],S,{x:ee[0],y:ee[1]})},Y.multiClickDebounceTime()),ie=S.timeStamp)),N!=null&&!t.dragData.didDrag&&N._private.selectable&&At`u`){var le=[],de=function(S){return{clientX:S.clientX,clientY:S.clientY,force:1,identifier:S.pointerId,pageX:S.pageX,pageY:S.pageY,radiusX:S.width/2,radiusY:S.height/2,screenX:S.screenX,screenY:S.screenY,target:S.target}},be=function(S){return{event:S,touch:de(S)}},ye=function(S){le.push(be(S))},Ee=function(S){for(var N=0;N0)return _[0]}return null},d=Object.keys(c),y=0;y0?h:Vf(i,o,e,r,a,n,s,u)},checkPoint:function(e,r,a,n,i,o,s,u){u=u===`auto`?ur(n,i):u;var l=2*u;if(Yt(e,r,this.points,o,s,n,i-l,[0,-1],a)||Yt(e,r,this.points,o,s,n-l,i,[0,-1],a))return!0;var f=n/2+2*a,v=i/2+2*a;return!!(Et(e,r,[o-f,s-v,o-f,s,o+f,s,o+f,s-v])||kr(e,r,l,l,o+n/2-u,s+i/2-u,a)||kr(e,r,l,l,o-n/2+u,s+i/2-u,a))}}};Xt.registerNodeShapes=function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon(`triangle`,gt(3,0)),this.generateRoundPolygon(`round-triangle`,gt(3,0)),this.generatePolygon(`rectangle`,gt(4,0)),t.square=t.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();var r=[0,1,1,0,0,-1,-1,0];this.generatePolygon(`diamond`,r),this.generateRoundPolygon(`round-diamond`,r);this.generatePolygon(`pentagon`,gt(5,0)),this.generateRoundPolygon(`round-pentagon`,gt(5,0)),this.generatePolygon(`hexagon`,gt(6,0)),this.generateRoundPolygon(`round-hexagon`,gt(6,0)),this.generatePolygon(`heptagon`,gt(7,0)),this.generateRoundPolygon(`round-heptagon`,gt(7,0)),this.generatePolygon(`octagon`,gt(8,0)),this.generateRoundPolygon(`round-octagon`,gt(8,0));var a=new Array(20);var n=No(5,0),i=No(5,Math.PI/5),o=.5*(3-Math.sqrt(5));o*=1.57;for(var s=0;s=e.deqFastCost*w)break}else if(l){if(m>=e.deqCost*h||m>=e.deqAvgCost*c)break}else if(b>=e.deqNoDrawCost*Do)break;var E=e.deq(a,g,y);if(E.length>0)for(var C=0;C0&&(e.onDeqd(a,d),!l&&e.shouldRedraw(a,d,g,y)&&i())},s=e.priority||os;n.beforeRender(o,s(a))}}}};var Dy=(function(){function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Tn;dr(this,t),this.idsByKey=new Ut,this.keyForId=new Ut,this.cachesByLvl=new Ut,this.lvls=[],this.getKey=e,this.doesEleInvalidateKey=r}return hr(t,[{key:`getIdsFor`,value:function(r){r??Ge(`Can not get id list for null key`);var a=this.idsByKey,n=this.idsByKey.get(r);return n||(n=new ta,a.set(r,n)),n}},{key:`addIdForKey`,value:function(r,a){r!=null&&this.getIdsFor(r).add(a)}},{key:`deleteIdForKey`,value:function(r,a){r!=null&&this.getIdsFor(r).delete(a)}},{key:`getNumberOfIdsForKey`,value:function(r){return r==null?0:this.getIdsFor(r).size}},{key:`updateKeyMappingFor`,value:function(r){var a=r.id(),n=this.keyForId.get(a),i=this.getKey(r);this.deleteIdForKey(n,a),this.addIdForKey(i,a),this.keyForId.set(a,i)}},{key:`deleteKeyMappingFor`,value:function(r){var a=r.id(),n=this.keyForId.get(a);this.deleteIdForKey(n,a),this.keyForId.delete(a)}},{key:`keyHasChangedFor`,value:function(r){var a=r.id();return this.keyForId.get(a)!==this.getKey(r)}},{key:`isInvalid`,value:function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)}},{key:`getCachesAt`,value:function(r){var a=this.cachesByLvl,n=this.lvls,i=a.get(r);return i||(i=new Ut,a.set(r,i),n.push(r)),i}},{key:`getCache`,value:function(r,a){return this.getCachesAt(a).get(r)}},{key:`get`,value:function(r,a){var n=this.getKey(r),i=this.getCache(n,a);return i!=null&&this.updateKeyMappingFor(r),i}},{key:`getForCachedKey`,value:function(r,a){var n=this.keyForId.get(r.id());return this.getCache(n,a)}},{key:`hasCache`,value:function(r,a){return this.getCachesAt(a).has(r)}},{key:`has`,value:function(r,a){var n=this.getKey(r);return this.hasCache(n,a)}},{key:`setCache`,value:function(r,a,n){n.key=r,this.getCachesAt(a).set(r,n)}},{key:`set`,value:function(r,a,n){var i=this.getKey(r);this.setCache(i,a,n),this.updateKeyMappingFor(r)}},{key:`deleteCache`,value:function(r,a){this.getCachesAt(a).delete(r)}},{key:`delete`,value:function(r,a){var n=this.getKey(r);this.deleteCache(n,a)}},{key:`invalidateKey`,value:function(r){var a=this;this.lvls.forEach(function(n){return a.deleteCache(r,n)})}},{key:`invalidate`,value:function(r){var a=r.id(),n=this.keyForId.get(a);this.deleteKeyMappingFor(r);var i=this.doesEleInvalidateKey(r);return i&&this.invalidateKey(n),i||this.getNumberOfIdsForKey(n)===0}}])})();var Jl=25;var un=50;var bn=-4;var Zo=3;var Hv=7.99;var Py=8;var By=1024;var Ay=1024;var Ry=1024;var My=.2;var Ly=.8;var Iy=10;var Oy=.15;var Ny=.1;var zy=.9;var Fy=.9;var Vy=100;var qy=1;var Wr={dequeue:`dequeue`,downscale:`downscale`,highQuality:`highQuality`};var _y=lt({getKey:null,doesEleInvalidateKey:Tn,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:Rf,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0});var Ea=function(e,r){var a=this;a.renderer=e,a.onDequeues=[];var n=_y(r);Se(a,n),a.lookup=new Dy(n.getKey,n.doesEleInvalidateKey),a.setupDequeueing()};var et=Ea.prototype;et.reasons=Wr;et.getTextureQueue=function(t){var e=this;return e.eleImgCaches=e.eleImgCaches||{},e.eleImgCaches[t]=e.eleImgCaches[t]||[]};et.getRetiredTextureQueue=function(t){var e=this,r=e.eleImgCaches.retired=e.eleImgCaches.retired||{};return r[t]=r[t]||[]};et.getElementQueue=function(){var t=this;return t.eleCacheQueue=t.eleCacheQueue||new Ga(function(r,a){return a.reqs-r.reqs})};et.getElementKeyToQueue=function(){var t=this;return t.eleKeyToCacheQueue=t.eleKeyToCacheQueue||{}};et.getElement=function(t,e,r,a,n){var i=this,o=this.renderer,s=o.cy.zoom(),u=this.lookup;if(!e||e.w===0||e.h===0||isNaN(e.w)||isNaN(e.h)||!t.visible()||t.removed()||!i.allowEdgeTxrCaching&&t.isEdge()||!i.allowParentTxrCaching&&t.isParent())return null;if(a??=Math.ceil(us(s*r)),a=Hv||a>Zo)return null;var l=Math.pow(2,a),f=e.h*l,v=e.w*l,c=o.eleTextBiggerThanMin(t,l);if(!this.isVisible(t,c))return null;var h=u.get(t,a);if(h&&h.invalidated&&(h.invalidated=!1,h.texture.invalidatedWidth-=h.width),h)return h;var d;if(f<=Jl?d=Jl:f<=un?d=un:d=Math.ceil(f/un)*un,f>Ry||v>Ay)return null;var y=i.getTextureQueue(d),g=y[y.length-2],p=function(){return i.recycleTexture(d,v)||i.addTexture(d,v)};g||(g=y[y.length-1]),g||(g=p()),g.width-g.usedWidtha;D--)k=i.getElement(t,e,r,D,Wr.downscale);P()}else return i.queueElement(t,C.level-1),C;else{var B;if(!b&&!w&&!E)for(var A=a-1;A>=bn;A--){var R=u.get(t,A);if(R){B=R;break}}if(m(B))return i.queueElement(t,a),B;g.context.translate(g.usedWidth,0),g.context.scale(l,l),this.drawElement(g.context,t,e,c,!1),g.context.scale(1/l,1/l),g.context.translate(-g.usedWidth,0)}return h={x:g.usedWidth,texture:g,level:a,scale:l,width:v,height:f,scaledLabelShown:c},g.usedWidth+=Math.ceil(v+Py),g.eleCaches.push(h),u.set(t,a,h),i.checkTextureFullness(g),h};et.invalidateElements=function(t){for(var e=0;e=My*t.width&&this.retireTexture(t)};et.checkTextureFullness=function(t){var r=this.getTextureQueue(t.height);t.usedWidth/t.width>Ly&&t.fullnessChecks>=Iy?sr(r,t):t.fullnessChecks++};et.retireTexture=function(t){var e=this,r=t.height,a=e.getTextureQueue(r),n=this.lookup;sr(a,t),t.retired=!0;for(var i=t.eleCaches,o=0;o=e)return o.retired=!1,o.usedWidth=0,o.invalidatedWidth=0,o.fullnessChecks=0,ss(o.eleCaches),o.context.setTransform(1,0,0,1,0,0),o.context.clearRect(0,0,o.width,o.height),sr(n,o),a.push(o),o}};et.queueElement=function(t,e){var r=this,a=r.getElementQueue(),n=r.getElementKeyToQueue(),i=this.getKey(t),o=n[i];if(o)o.level=Math.max(o.level,e),o.eles.merge(t),o.reqs++,a.updateItem(o);else{var s={eles:t.spawn().merge(t),level:e,reqs:1,key:i};a.push(s),n[i]=s}};et.dequeue=function(t){for(var e=this,r=e.getElementQueue(),a=e.getElementKeyToQueue(),n=[],i=e.lookup,o=0;o0;o++){var s=r.pop(),u=s.key,l=s.eles[0],f=i.hasCache(l,s.level);if(a[u]=null,f)continue;n.push(s);var v=e.getBoundingBox(l);e.getElement(l,v,t,s.level,Wr.dequeue)}return n};et.removeFromQueue=function(t){var e=this,r=e.getElementQueue(),a=e.getElementKeyToQueue(),n=this.getKey(t),i=a[n];i!=null&&(i.eles.length===1?(i.reqs=is,r.updateItem(i),r.pop(),a[n]=null):i.eles.unmerge(t))};et.onDequeue=function(t){this.onDequeues.push(t)};et.offDequeue=function(t){sr(this.onDequeues,t)};et.setupDequeueing=$v.setupDequeueing({deqRedrawThreshold:Vy,deqCost:Oy,deqAvgCost:Ny,deqNoDrawCost:zy,deqFastCost:Fy,deq:function(e,r,a){return e.dequeue(r,a)},onDeqd:function(e,r){for(var a=0;a=$y||r>Mn)return null}a.validateLayersElesOrdering(r,t);var u=a.layersByLevel,l=Math.pow(2,r),f=u[r]=u[r]||[],v,c=a.levelIsComplete(r,t),h,d=function(){var P=function(L){if(a.validateLayersElesOrdering(L,t),a.levelIsComplete(L,t))return h=u[L],!0},D=function(L){if(!h)for(var O=r+L;Ta<=O&&O<=Mn&&!P(O);O+=L);};D(1),D(-1);for(var B=f.length-1;B>=0;B--){var A=f[B];A.invalid&&sr(f,A)}};if(!c)d();else return f;var y=function(){if(!v){v=yt();for(var P=0;Pef||A>ef)return null;if(B*A>Qy)return null;var L=a.makeLayer(v,r);if(D!=null){var O=f.indexOf(D)+1;f.splice(O,0,L)}else(P.insert===void 0||P.insert)&&f.unshift(L);return L};if(a.skipping&&!s)return null;for(var p=null,m=t.length/Gy,b=!s,w=0;w=m||!Ff(p.bb,E.boundingBox()))&&(p=g({insert:!0,after:p}),!p))return null;h||b?a.queueLayer(p,E):a.drawEleInLayer(p,E,r,e),p.eles.push(E),x[r]=p}return h||(b?null:f)};ft.getEleLevelForLayerLevel=function(t,e){return t};ft.drawEleInLayer=function(t,e,r,a){var n=this,i=this.renderer,o=t.context,s=e.boundingBox();s.w===0||s.h===0||!e.visible()||(r=n.getEleLevelForLayerLevel(r,a),i.setImgSmoothing(o,!1),i.drawCachedElement(o,e,null,null,r,Jy),i.setImgSmoothing(o,!0))};ft.levelIsComplete=function(t,e){var a=this.layersByLevel[t];if(!a||a.length===0)return!1;for(var n=0,i=0;i0||o.invalid)return!1;n+=o.eles.length}return n===e.length};ft.validateLayersElesOrdering=function(t,e){var r=this.layersByLevel[t];if(r)for(var a=0;a0){e=!0;break}}return e};ft.invalidateElements=function(t){var e=this;t.length!==0&&(e.lastInvalidationTime=Kt(),t.length!==0&&e.haveLayers()&&e.updateElementsInLayers(t,function(a,n,i){e.invalidateLayer(a)}))};ft.invalidateLayer=function(t){if(this.lastInvalidationTime=Kt(),!t.invalid){var e=t.level,r=t.eles,a=this.layersByLevel[e];sr(a,t),t.elesQueue=[],t.invalid=!0,t.replacement&&(t.replacement.invalid=!0);for(var n=0;n3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,o=this,s=e._private.rscratch;if(!(i&&!e.visible())&&!(s.badLine||s.allpts==null||isNaN(s.allpts[0]))){var u;r&&(u=r,t.translate(-u.x1,-u.y1));var l=i?e.pstyle(`opacity`).value:1,f=i?e.pstyle(`line-opacity`).value:1,v=e.pstyle(`curve-style`).value,c=e.pstyle(`line-style`).value,h=e.pstyle(`width`).pfValue,d=e.pstyle(`line-cap`).value,y=e.pstyle(`line-outline-width`).value,g=e.pstyle(`line-outline-color`).value,p=l*f,m=l*f,b=function(){var L=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p;v===`straight-triangle`?(o.eleStrokeStyle(t,e,L),o.drawEdgeTrianglePath(e,t,s.allpts)):(t.lineWidth=h,t.lineCap=d,o.eleStrokeStyle(t,e,L),o.drawEdgePath(e,t,s.allpts,c),t.lineCap=`butt`)},w=function(){var L=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p;if(t.lineWidth=h+y,t.lineCap=d,y>0)o.colorStrokeStyle(t,g[0],g[1],g[2],L);else{t.lineCap=`butt`;return}v===`straight-triangle`?o.drawEdgeTrianglePath(e,t,s.allpts):(o.drawEdgePath(e,t,s.allpts,c),t.lineCap=`butt`)},E=function(){n&&o.drawEdgeOverlay(t,e)},C=function(){n&&o.drawEdgeUnderlay(t,e)},x=function(){var L=arguments.length>0&&arguments[0]!==void 0?arguments[0]:m;o.drawArrowheads(t,e,L)},T=function(){o.drawElementText(t,e,null,a)};t.lineJoin=`round`;if(e.pstyle(`ghost`).value===`yes`){var P=e.pstyle(`ghost-offset-x`).pfValue,D=e.pstyle(`ghost-offset-y`).pfValue,A=p*e.pstyle(`ghost-opacity`).value;t.translate(P,D),b(A),x(A),t.translate(-P,-D)}else w();C(),b(),x(),E(),T(),r&&t.translate(u.x1,u.y1)}};var Kv=function(e){if(![`overlay`,`underlay`].includes(e))throw new Error(`Invalid state`);return function(r,a){if(a.visible()){var n=a.pstyle(``.concat(e,`-opacity`)).value;if(n!==0){var i=this,o=i.usePaths(),s=a._private.rscratch,l=2*a.pstyle(``.concat(e,`-padding`)).pfValue,f=a.pstyle(``.concat(e,`-color`)).value;r.lineWidth=l,s.edgeType===`self`&&!o?r.lineCap=`butt`:r.lineCap=`round`,i.colorStrokeStyle(r,f[0],f[1],f[2],n),i.drawEdgePath(a,r,s.allpts,`solid`)}}}};Zt.drawEdgeOverlay=Kv(`overlay`);Zt.drawEdgeUnderlay=Kv(`underlay`);Zt.drawEdgePath=function(t,e,r,a){var n=t._private.rscratch,i=e,o,s=!1,u=this.usePaths(),l=t.pstyle(`line-dash-pattern`).pfValue,f=t.pstyle(`line-dash-offset`).pfValue;if(u){var v=r.join(`$`);n.pathCacheKey&&n.pathCacheKey===v?(o=e=n.pathCache,s=!0):(o=e=new Path2D,n.pathCacheKey=v,n.pathCache=o)}if(i.setLineDash)switch(a){case`dotted`:i.setLineDash([1,1]);break;case`dashed`:i.setLineDash(l),i.lineDashOffset=f;break;case`solid`:i.setLineDash([])}if(!s&&!n.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(r[0],r[1]),n.edgeType){case`bezier`:case`self`:case`compound`:case`multibezier`:for(var h=2;h+35&&arguments[5]!==void 0?arguments[5]:!0,o=this;if(a==null){if(i&&!o.eleTextBiggerThanMin(e))return}else if(a===!1)return;if(e.isNode()){var s=e.pstyle(`label`);if(!s||!s.value)return;var u=o.getLabelJustification(e),l=e.pstyle(`text-metrics`).strValue===`glyph`;t.textAlign=u,t.textBaseline=l?`alphabetic`:`bottom`}else{var f=e.element()._private.rscratch.badLine,v=e.pstyle(`label`),c=e.pstyle(`source-label`),h=e.pstyle(`target-label`);if(f||(!v||!v.value)&&(!c||!c.value)&&(!h||!h.value))return;t.textAlign=`center`,t.textBaseline=`bottom`}var d=!r,y;r&&(y=r,t.translate(-y.x1,-y.y1)),n==null?(o.drawText(t,e,null,d,i),e.isEdge()&&(o.drawText(t,e,`source`,d,i),o.drawText(t,e,`target`,d,i))):o.drawText(t,e,n,d,i),r&&t.translate(y.x1,y.y1)};Lr.getFontCache=function(t){var e;this.fontCaches=this.fontCaches||[];for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!0,a=e.pstyle(`font-style`).strValue,n=e.pstyle(`font-size`).pfValue+`px`,i=e.pstyle(`font-family`).strValue,o=e.pstyle(`font-weight`).strValue,s=r?e.effectiveOpacity()*e.pstyle(`text-opacity`).value:1,u=e.pstyle(`text-outline-opacity`).value*s,l=e.pstyle(`color`).value,f=e.pstyle(`text-outline-color`).value;t.font=a+` `+o+` `+n+` `+i,t.lineJoin=`round`,this.colorFillStyle(t,l[0],l[1],l[2],s),this.colorStrokeStyle(t,f[0],f[1],f[2],u)};function lm(t,e,r,a,n){var o=Math.min(a,n)/2,s=e+a/2,u=r+n/2;t.beginPath(),t.arc(s,u,o,0,Math.PI*2),t.closePath()}function nf(t,e,r,a,n){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:5,o=Math.min(i,a/2,n/2);t.beginPath(),t.moveTo(e+o,r),t.lineTo(e+a-o,r),t.quadraticCurveTo(e+a,r,e+a,r+o),t.lineTo(e+a,r+n-o),t.quadraticCurveTo(e+a,r+n,e+a-o,r+n),t.lineTo(e+o,r+n),t.quadraticCurveTo(e,r+n,e,r+n-o),t.lineTo(e,r+o),t.quadraticCurveTo(e,r,e+o,r),t.closePath()}Lr.getTextAngle=function(t,e){var r,n=t._private.rscratch,i=e?e+`-`:``,o=t.pstyle(i+`text-rotation`);if(o.strValue===`autorotate`){var s=pt(n,`labelAngle`,e);r=t.isEdge()?s:0}else o.strValue===`none`?r=0:r=o.pfValue;return r};Lr.drawText=function(t,e,r){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,o=e._private.rscratch,s=n?e.effectiveOpacity():1;if(!(n&&(s===0||e.pstyle(`text-opacity`).value===0))){r===`main`&&(r=null);var u=pt(o,`labelX`,r),l=pt(o,`labelY`,r),f,v,c=this.getLabelText(e,r);if(c!=null&&c!==``&&!isNaN(u)&&!isNaN(l)){this.setupTextStyle(t,e,n);var h=r?r+`-`:``,d=pt(o,`labelWidth`,r),y=pt(o,`labelHeight`,r),g=pt(o,`labelActualDescent`,r),p=e.pstyle(h+`text-margin-x`).pfValue,m=e.pstyle(h+`text-margin-y`).pfValue,b=e.isEdge(),w=e.pstyle(`text-halign`).value,E=e.pstyle(`text-valign`).value;b&&(w=`center`,E=`center`),u+=p,l+=m;var C;a?C=this.getTextAngle(e,r):C=0,C!==0&&(f=u,v=l,t.translate(f,v),t.rotate(C),u=0,l=0);var x=jr(w),T=ea(E);switch(T){case`top`:break;case`center`:l+=y/2;break;case`bottom`:l+=y}var k=e.pstyle(`text-background-opacity`).value,P=e.pstyle(`text-border-opacity`).value,D=e.pstyle(`text-border-width`).pfValue,B=e.pstyle(`text-background-padding`).pfValue,A=e.pstyle(`text-background-shape`).strValue,R=A===`round-rectangle`||A===`roundrectangle`,L=A===`circle`,O=2;if(k>0||D>0&&P>0){var M=t.fillStyle,z=t.strokeStyle,q=t.lineWidth,$=e.pstyle(`text-background-color`).value,F=e.pstyle(`text-border-color`).value,_=e.pstyle(`text-border-style`).value,j=k>0,te=D>0&&P>0,Z=u-B;switch(x){case`left`:Z-=d;break;case`center`:Z-=d/2}var ne=l-y-B,ae=d+2*B,ve=y+2*B;if(j&&(t.fillStyle=`rgba(`.concat($[0],`,`).concat($[1],`,`).concat($[2],`,`).concat(k*s,`)`)),te&&(t.strokeStyle=`rgba(`.concat(F[0],`,`).concat(F[1],`,`).concat(F[2],`,`).concat(P*s,`)`),t.lineWidth=D,t.setLineDash))switch(_){case`dotted`:t.setLineDash([1,1]);break;case`dashed`:t.setLineDash([4,2]);break;case`double`:t.lineWidth=D/4,t.setLineDash([]);break;default:t.setLineDash([])}if(R?(t.beginPath(),nf(t,Z,ne,ae,ve,O)):L?(t.beginPath(),lm(t,Z,ne,ae,ve)):(t.beginPath(),t.rect(Z,ne,ae,ve)),j&&t.fill(),te&&t.stroke(),te&&_===`double`){var J=D/2;t.beginPath(),R?nf(t,Z+J,ne+J,ae-2*J,ve-2*J,O):t.rect(Z+J,ne+J,ae-2*J,ve-2*J),t.stroke()}t.fillStyle=M,t.strokeStyle=z,t.lineWidth=q,t.setLineDash&&t.setLineDash([])}var G=2*e.pstyle(`text-outline-width`).pfValue;if(G>0&&(t.lineWidth=G),l-=g,e.pstyle(`text-wrap`).value===`wrap`){var W=pt(o,`labelWrapCachedLines`,r),K=pt(o,`labelLineHeight`,r),X=d/2,I=this.getLabelJustification(e);switch(I===`auto`||(x===`left`?I===`left`?u+=-d:I===`center`&&(u+=-X):x===`center`?I===`left`?u+=-X:I===`right`&&(u+=X):x===`right`&&(I===`center`?u+=X:I===`right`&&(u+=d))),T){case`top`:l-=(W.length-1)*K;break;case`center`:case`bottom`:l-=(W.length-1)*K}for(var V=0;V0&&t.strokeText(W[V],u,l),t.fillText(W[V],u,l),l+=K}else G>0&&t.strokeText(c,u,l),t.fillText(c,u,l);C!==0&&(t.rotate(-C),t.translate(-f,-v))}}};var pr={};pr.drawNode=function(t,e,r){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,o=this,s,u,l=e._private,f=l.rscratch,v=e.position();if(!(!ce(v.x)||!ce(v.y))&&!(i&&!e.visible())){var c=i?e.effectiveOpacity():1,h=o.usePaths(),d,y=!1,g=e.padding();s=e.width()+2*g,u=e.height()+2*g;var p;r&&(p=r,t.translate(-p.x1,-p.y1));for(var b=e.pstyle(`background-image`).value,w=new Array(b.length),E=new Array(b.length),C=0,x=0;x0&&arguments[0]!==void 0?arguments[0]:A;o.eleFillStyle(t,e,N)},J=function(){var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:F;o.colorStrokeStyle(t,R[0],R[1],R[2],N)},G=function(){var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Z;o.colorStrokeStyle(t,j[0],j[1],j[2],N)},W=function(N,U,H,Y){var pe=o.nodePathCache=o.nodePathCache||[],ee=Af(H===`polygon`?H+`,`+Y.join(`,`):H,``+U,``+N,``+ae),ge=pe[ee],he,we=!1;return ge!=null?(he=ge,we=!0,f.pathCache=he):(he=new Path2D,pe[ee]=f.pathCache=he),{path:he,cacheHit:we}},K=e.pstyle(`shape`).strValue,X=e.pstyle(`shape-polygon-points`).pfValue;if(h){t.translate(v.x,v.y);var I=W(s,u,K,X);d=I.path,y=I.cacheHit}var V=function(){if(!y){var N=v;h&&(N={x:0,y:0}),o.nodeShapes[o.getNodeShape(e)].draw(d||t,N.x,N.y,s,u,ae,f)}h?t.fill(d):t.fill()},oe=function(){for(var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:c,U=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,H=l.backgrounding,Y=0,pe=0;pe0&&arguments[0]!==void 0?arguments[0]:!1,U=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c;o.hasPie(e)&&(o.drawPie(t,e,U),N&&(h||o.nodeShapes[o.getNodeShape(e)].draw(t,v.x,v.y,s,u,ae,f)))},re=function(){var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,U=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c;o.hasStripe(e)&&(t.save(),h?t.clip(f.pathCache):(o.nodeShapes[o.getNodeShape(e)].draw(t,v.x,v.y,s,u,ae,f),t.clip()),o.drawStripe(t,e,U),t.restore(),N&&(h||o.nodeShapes[o.getNodeShape(e)].draw(t,v.x,v.y,s,u,ae,f)))},fe=function(){var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:c,U=(D>0?D:-D)*N,H=D>0?0:255;D!==0&&(o.colorFillStyle(t,H,H,H,U),h?t.fill(d):t.fill())},ie=function(){if(B>0){if(t.lineWidth=B,t.lineCap=M,t.lineJoin=O,t.setLineDash)switch(L){case`dotted`:t.setLineDash([1,1]);break;case`dashed`:t.setLineDash(q),t.lineDashOffset=$;break;case`solid`:case`double`:t.setLineDash([])}if(z!==`center`){if(t.save(),t.lineWidth*=2,z===`inside`)h?t.clip(d):t.clip();else{var N=new Path2D;N.rect(-s/2-B,-u/2-B,s+2*B,u+2*B),N.addPath(d),t.clip(N,`evenodd`)}h?t.stroke(d):t.stroke(),t.restore()}else h?t.stroke(d):t.stroke();if(L===`double`){t.lineWidth=B/3;var U=t.globalCompositeOperation;t.globalCompositeOperation=`destination-out`,h?t.stroke(d):t.stroke(),t.globalCompositeOperation=U}t.setLineDash&&t.setLineDash([])}},le=function(){if(_>0){if(t.lineWidth=_,t.lineCap=`butt`,t.setLineDash)switch(te){case`dotted`:t.setLineDash([1,1]);break;case`dashed`:t.setLineDash([4,2]);break;case`solid`:case`double`:t.setLineDash([])}var N=v;h&&(N={x:0,y:0});var U=o.getNodeShape(e),H=B;z===`inside`&&(H=0),z===`outside`&&(H*=2);var Y=(s+H+(_+ne))/s,pe=(u+H+(_+ne))/u,ee=s*Y,ge=u*pe,he=o.nodeShapes[U].points,we;if(h)we=W(ee,ge,U,he).path;if(U===`ellipse`)o.drawEllipsePath(we||t,N.x,N.y,ee,ge);else if([`round-diamond`,`round-heptagon`,`round-hexagon`,`round-octagon`,`round-pentagon`,`round-polygon`,`round-triangle`,`round-tag`].includes(U)){var ke=0,xe=0,Ae=0;U===`round-diamond`?ke=(H+ne+_)*1.4:U===`round-heptagon`?(ke=(H+ne+_)*1.075,Ae=-(H/2+ne+_)/35):U===`round-hexagon`?ke=(H+ne+_)*1.12:U===`round-pentagon`?(ke=(H+ne+_)*1.13,Ae=-(H/2+ne+_)/15):U===`round-tag`?(ke=(H+ne+_)*1.12,xe=(H/2+_+ne)*.07):U===`round-triangle`&&(ke=(H+ne+_)*(Math.PI/2),Ae=-(H+ne/2+_)/Math.PI),ke!==0&&(Y=(s+ke)/s,ee=s*Y,[`round-hexagon`,`round-tag`].includes(U)||(pe=(u+ke)/u,ge=u*pe)),ae=ae===`auto`?_f(ee,ge):ae;for(var Re=ee/2,tt=ge/2,rt=ae+(H+_+ne)/2,bt=new Array(he.length/2),Xe=new Array(he.length/2),Ze=0;Ze0){if(n=n||a.position(),i==null||o==null){var h=a.padding();i=a.width()+2*h,o=a.height()+2*h}s.colorFillStyle(r,f[0],f[1],f[2],l),s.nodeShapes[v].draw(r,n.x,n.y,i+u*2,o+u*2,c),r.fill()}}}};pr.drawNodeOverlay=Yv(`overlay`);pr.drawNodeUnderlay=Yv(`underlay`);pr.hasPie=function(t){return t=t[0],t._private.hasPie};pr.hasStripe=function(t){return t=t[0],t._private.hasStripe};pr.drawPie=function(t,e,r,a){e=e[0],a=a||e.position();var n=e.cy().style(),i=e.pstyle(`pie-size`),o=e.pstyle(`pie-hole`),s=e.pstyle(`pie-start-angle`).pfValue,u=a.x,l=a.y,f=e.width(),v=e.height(),c=Math.min(f,v)/2,h,d=0;if(this.usePaths()&&(u=0,l=0),i.units===`%`?c=c*i.pfValue:i.pfValue!==void 0&&(c=i.pfValue/2),o.units===`%`?h=c*o.pfValue:o.pfValue!==void 0&&(h=o.pfValue/2),!(h>=c))for(var g=1;g<=n.pieBackgroundN;g++){var p=e.pstyle(`pie-`+g+`-background-size`).value,m=e.pstyle(`pie-`+g+`-background-color`).value,b=e.pstyle(`pie-`+g+`-background-opacity`).value*r,w=p/100;w+d>1&&(w=1-d);var E=1.5*Math.PI+2*Math.PI*d;E+=s;var C=2*Math.PI*w,x=E+C;p===0||d>=1||d+w>1||(h===0?(t.beginPath(),t.moveTo(u,l),t.arc(u,l,c,E,x),t.closePath()):(t.beginPath(),t.arc(u,l,c,E,x),t.arc(u,l,h,x,E,!0),t.closePath()),this.colorFillStyle(t,m[0],m[1],m[2],b),t.fill(),d+=w)}};pr.drawStripe=function(t,e,r,a){e=e[0],a=a||e.position();var n=e.cy().style(),i=a.x,o=a.y,s=e.width(),u=e.height(),l=0,f=this.usePaths();t.save();var v=e.pstyle(`stripe-direction`).value,c=e.pstyle(`stripe-size`);switch(v){case`vertical`:break;case`righward`:t.rotate(-Math.PI/2)}var h=s,d=u;c.units===`%`?(h=h*c.pfValue,d=d*c.pfValue):c.pfValue!==void 0&&(h=c.pfValue,d=c.pfValue),f&&(i=0,o=0),o-=h/2,i-=d/2;for(var y=1;y<=n.stripeBackgroundN;y++){var g=e.pstyle(`stripe-`+y+`-background-size`).value,p=e.pstyle(`stripe-`+y+`-background-color`).value,m=e.pstyle(`stripe-`+y+`-background-opacity`).value*r,b=g/100;b+l>1&&(b=1-l),!(g===0||l>=1||l+b>1)&&(t.beginPath(),t.rect(i,o+d*l,h,d*b),t.closePath(),this.colorFillStyle(t,p[0],p[1],p[2],m),t.fill(),l+=b)}t.restore()};var mt={};var fm=100;mt.getPixelRatio=function(){var t=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var e=this.cy.window(),r=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(e.devicePixelRatio||1)/r};mt.paintCache=function(t){for(var e=this.paintCaches=this.paintCaches||[],r=!0,a,n=0;ne.minMbLowQualFrames&&(e.motionBlurPxRatio=e.mbPxRBlurry)),e.clearingMotionBlur&&(e.motionBlurPxRatio=1),e.textureDrawLastFrame&&!v&&(f[e.NODE]=!0,f[e.SELECT_BOX]=!0);var m=r.style(),b=r.zoom(),w=o!==void 0?o:b,E=r.pan(),C={x:E.x,y:E.y},x={zoom:b,pan:{x:E.x,y:E.y}},T=e.prevViewport;T!==void 0&&x.zoom===T.zoom&&x.pan.x===T.pan.x&&x.pan.y===T.pan.y&&(!y||d)&&(e.motionBlurPxRatio=1),s&&(C=s),w*=u,C.x*=u,C.y*=u;var P=e.getCachedZSortedEles();function D(J,G,W,K,X){var I=J.globalCompositeOperation;J.globalCompositeOperation=`destination-out`,e.colorFillStyle(J,255,255,255,e.motionBlurTransparency),J.fillRect(G,W,K,X),J.globalCompositeOperation=I}function B(J,G){var W,K,X,I;!e.clearingMotionBlur&&(J===l.bufferContexts[e.MOTIONBLUR_BUFFER_NODE]||J===l.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG])?(W={x:E.x*h,y:E.y*h},K=b*h,X=e.canvasWidth*h,I=e.canvasHeight*h):(W=C,K=w,X=e.canvasWidth,I=e.canvasHeight),J.setTransform(1,0,0,1,0,0),G===`motionBlur`?D(J,0,0,X,I):!a&&(G===void 0||G)&&J.clearRect(0,0,X,I),n||(J.translate(W.x,W.y),J.scale(K,K)),s&&J.translate(s.x,s.y),o&&J.scale(o,o)}if(v||(e.textureDrawLastFrame=!1),v){if(e.textureDrawLastFrame=!0,!e.textureCache){e.textureCache={},e.textureCache.bb=r.mutableElements().boundingBox(),e.textureCache.texture=e.data.bufferCanvases[e.TEXTURE_BUFFER];var A=e.data.bufferContexts[e.TEXTURE_BUFFER];A.setTransform(1,0,0,1,0,0),A.clearRect(0,0,e.canvasWidth*e.textureMult,e.canvasHeight*e.textureMult),e.render({forcedContext:A,drawOnlyNodeLayer:!0,forcedPxRatio:u*e.textureMult});var x=e.textureCache.viewport={zoom:r.zoom(),pan:r.pan(),width:e.canvasWidth,height:e.canvasHeight};x.mpan={x:(0-x.pan.x)/x.zoom,y:(0-x.pan.y)/x.zoom}}f[e.DRAG]=!1,f[e.NODE]=!1;var R=l.contexts[e.NODE],L=e.textureCache.texture,x=e.textureCache.viewport;R.setTransform(1,0,0,1,0,0),c?D(R,0,0,x.width,x.height):R.clearRect(0,0,x.width,x.height);var O=m.core(`outside-texture-bg-color`).value,M=m.core(`outside-texture-bg-opacity`).value;e.colorFillStyle(R,O[0],O[1],O[2],M),R.fillRect(0,0,x.width,x.height);var b=r.zoom();B(R,!1),R.clearRect(x.mpan.x,x.mpan.y,x.width/x.zoom/u,x.height/x.zoom/u),R.drawImage(L,x.mpan.x,x.mpan.y,x.width/x.zoom/u,x.height/x.zoom/u)}else e.textureOnViewport&&!a&&(e.textureCache=null);var z=r.extent(),q=e.pinching||e.hoverData.dragging||e.swipePanning||e.data.wheelZooming||e.hoverData.draggingEles||e.cy.animated(),$=e.hideEdgesOnViewport&&q,F=[];if(F[e.NODE]=!f[e.NODE]&&c&&!e.clearedForMotionBlur[e.NODE]||e.clearingMotionBlur,F[e.NODE]&&(e.clearedForMotionBlur[e.NODE]=!0),F[e.DRAG]=!f[e.DRAG]&&c&&!e.clearedForMotionBlur[e.DRAG]||e.clearingMotionBlur,F[e.DRAG]&&(e.clearedForMotionBlur[e.DRAG]=!0),f[e.NODE]||n||i||F[e.NODE]){var _=c&&!F[e.NODE]&&h!==1,R=a||(_?e.data.bufferContexts[e.MOTIONBLUR_BUFFER_NODE]:l.contexts[e.NODE]);B(R,c&&!_?`motionBlur`:void 0),$?e.drawCachedNodes(R,P.nondrag,u,z):e.drawLayeredElements(R,P.nondrag,u,z),e.debug&&e.drawDebugPoints(R,P.nondrag),!n&&!c&&(f[e.NODE]=!1)}if(!i&&(f[e.DRAG]||n||F[e.DRAG])){var _=c&&!F[e.DRAG]&&h!==1,R=a||(_?e.data.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG]:l.contexts[e.DRAG]);B(R,c&&!_?`motionBlur`:void 0),$?e.drawCachedNodes(R,P.drag,u,z):e.drawCachedElements(R,P.drag,u,z),e.debug&&e.drawDebugPoints(R,P.drag),!n&&!c&&(f[e.DRAG]=!1)}if(this.drawSelectionRectangle(t,B),c&&h!==1){var te=l.contexts[e.NODE],Z=e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_NODE],ne=l.contexts[e.DRAG],ae=e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_DRAG],ve=function(G,W,K){G.setTransform(1,0,0,1,0,0),K||!p?G.clearRect(0,0,e.canvasWidth,e.canvasHeight):D(G,0,0,e.canvasWidth,e.canvasHeight);var X=h;G.drawImage(W,0,0,e.canvasWidth*X,e.canvasHeight*X,0,0,e.canvasWidth,e.canvasHeight)};(f[e.NODE]||F[e.NODE])&&(ve(te,Z,F[e.NODE]),f[e.NODE]=!1),(f[e.DRAG]||F[e.DRAG])&&(ve(ne,ae,F[e.DRAG]),f[e.DRAG]=!1)}e.prevViewport=x,e.clearingMotionBlur&&(e.clearingMotionBlur=!1,e.motionBlurCleared=!0,e.motionBlur=!0),c&&(e.motionBlurTimeout=setTimeout(function(){e.motionBlurTimeout=null,e.clearedForMotionBlur[e.NODE]=!1,e.clearedForMotionBlur[e.DRAG]=!1,e.motionBlur=!1,e.clearingMotionBlur=!v,e.mbFrames=0,f[e.NODE]=!0,f[e.DRAG]=!0,e.redraw()},fm)),a||r.emit(`render`)};var ya;mt.drawSelectionRectangle=function(t,e){var r=this,a=r.cy,n=r.data,i=a.style(),o=t.drawOnlyNodeLayer,s=t.drawAllLayers,u=n.canvasNeedsRedraw,l=t.forcedContext;if(r.showFps||!o&&u[r.SELECT_BOX]&&!s){var f=l||n.contexts[r.SELECT_BOX];if(e(f),r.selection[4]==1&&(r.hoverData.selecting||r.touchData.selecting)){var v=r.cy.zoom(),c=i.core(`selection-box-border-width`).value/v;f.lineWidth=c,f.fillStyle=`rgba(`+i.core(`selection-box-color`).value[0]+`,`+i.core(`selection-box-color`).value[1]+`,`+i.core(`selection-box-color`).value[2]+`,`+i.core(`selection-box-opacity`).value+`)`,f.fillRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]),c>0&&(f.strokeStyle=`rgba(`+i.core(`selection-box-border-color`).value[0]+`,`+i.core(`selection-box-border-color`).value[1]+`,`+i.core(`selection-box-border-color`).value[2]+`,`+i.core(`selection-box-opacity`).value+`)`,f.strokeRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]))}if(n.bgActivePosistion&&!r.hoverData.selecting){var v=r.cy.zoom(),h=n.bgActivePosistion;f.fillStyle=`rgba(`+i.core(`active-bg-color`).value[0]+`,`+i.core(`active-bg-color`).value[1]+`,`+i.core(`active-bg-color`).value[2]+`,`+i.core(`active-bg-opacity`).value+`)`,f.beginPath(),f.arc(h.x,h.y,i.core(`active-bg-size`).pfValue/v,0,2*Math.PI),f.fill()}var d=r.lastRedrawTime;if(r.showFps&&d){d=Math.round(d);var y=Math.round(1e3/d),g=`1 frame = `+d+` ms = `+y+` fps`;if(f.setTransform(1,0,0,1,0,0),f.fillStyle=`rgba(255, 0, 0, 0.75)`,f.strokeStyle=`rgba(255, 0, 0, 0.75)`,f.font=`30px Arial`,!ya)ya=f.measureText(g).actualBoundingBoxAscent;f.fillText(g,0,ya);f.strokeRect(0,ya+10,250,20),f.fillRect(0,ya+10,250*Math.min(y/60,1),20)}s||(u[r.SELECT_BOX]=!1)}};function of(t,e,r){var a=t.createShader(e);if(t.shaderSource(a,r),t.compileShader(a),!t.getShaderParameter(a,t.COMPILE_STATUS))throw new Error(t.getShaderInfoLog(a));return a}function vm(t,e,r){var a=of(t,t.VERTEX_SHADER,e),n=of(t,t.FRAGMENT_SHADER,r),i=t.createProgram();if(t.attachShader(i,a),t.attachShader(i,n),t.linkProgram(i),!t.getProgramParameter(i,t.LINK_STATUS))throw new Error(`Could not initialize shaders`);return i}function cm(t,e,r){r===void 0&&(r=e);var a=t.makeOffscreenCanvas(e,r),n=a.context=a.getContext(`2d`);return a.clear=function(){return n.clearRect(0,0,a.width,a.height)},a.clear(),a}function Ss(t){var e=t.pixelRatio,r=t.cy.zoom(),a=t.cy.pan();return{zoom:r*e,pan:{x:a.x*e,y:a.y*e}}}function dm(t){var e=t.pixelRatio;return t.cy.zoom()*e}function hm(t,e,r,a,n){var i=a*r+e.x,o=n*r+e.y;return o=Math.round(t.canvasHeight-o),[i,o]}function gm(t,e){return e.picking?!0:t.pstyle(`background-fill`).value!==`solid`||t.pstyle(`background-image`).strValue!==`none`?!1:t.pstyle(`border-width`).value===0||t.pstyle(`border-opacity`).value===0?!0:t.pstyle(`border-style`).value===`solid`}function pm(t,e){if(t.length!==e.length)return!1;for(var r=0;r>0&255)/255,r[1]=(t>>8&255)/255,r[2]=(t>>16&255)/255,r[3]=(t>>24&255)/255,r}function ym(t){return t[0]+(t[1]<<8)+(t[2]<<16)+(t[3]<<24)}function mm(t,e){var r=t.createTexture();return r.buffer=function(a){t.bindTexture(t.TEXTURE_2D,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_NEAREST),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,a),t.generateMipmap(t.TEXTURE_2D),t.bindTexture(t.TEXTURE_2D,null)},r.deleteTexture=function(){t.deleteTexture(r)},r}function Xv(t,e){switch(e){case`float`:return[1,t.FLOAT,4];case`vec2`:return[2,t.FLOAT,4];case`vec3`:return[3,t.FLOAT,4];case`vec4`:return[4,t.FLOAT,4];case`int`:return[1,t.INT,4];case`ivec2`:return[2,t.INT,4]}}function Zv(t,e,r){switch(e){case t.FLOAT:return new Float32Array(r);case t.INT:return new Int32Array(r)}}function bm(t,e,r,a,n,i){switch(e){case t.FLOAT:return new Float32Array(r.buffer,i*a,n);case t.INT:return new Int32Array(r.buffer,i*a,n)}}function wm(t,e,r,a){var i=Ye(Xv(t,e),2),o=i[0],s=i[1],u=Zv(t,s,a),l=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,l),t.bufferData(t.ARRAY_BUFFER,u,t.STATIC_DRAW),s===t.FLOAT?t.vertexAttribPointer(r,o,s,!1,0,0):s===t.INT&&t.vertexAttribIPointer(r,o,s,0,0),t.enableVertexAttribArray(r),t.bindBuffer(t.ARRAY_BUFFER,null),l}function Ft(t,e,r,a){var i=Ye(Xv(t,r),3),o=i[0],s=i[1],u=i[2],l=Zv(t,s,e*o),f=o*u,v=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,v),t.bufferData(t.ARRAY_BUFFER,e*f,t.DYNAMIC_DRAW),t.enableVertexAttribArray(a),s===t.FLOAT?t.vertexAttribPointer(a,o,s,!1,f,0):s===t.INT&&t.vertexAttribIPointer(a,o,s,f,0),t.vertexAttribDivisor(a,1),t.bindBuffer(t.ARRAY_BUFFER,null);for(var c=new Array(e),h=0;ho&&(s=o/a,u=a*s,l=n*s),{scale:s,texW:u,texH:l}}},{key:`draw`,value:function(r,a,n){var i=this;if(this.locked)throw new Error(`can't draw, atlas is locked`);var o=this.texSize,s=this.texRows,u=this.texHeight,l=this.getScale(a),f=l.scale,v=l.texW,c=l.texH,h=function(b,w){if(n&&w){var E=w.context,C=b.x,x=b.row,T=C,k=u*x;E.save(),E.translate(T,k),E.scale(f,f),n(E,a),E.restore()}},d=[null,null],y=function(){h(i.freePointer,i.canvas),d[0]={x:i.freePointer.x,y:i.freePointer.row*u,w:v,h:c},d[1]={x:i.freePointer.x+v,y:i.freePointer.row*u,w:0,h:c},i.freePointer.x+=v,i.freePointer.x==o&&(i.freePointer.x=0,i.freePointer.row++)},g=function(){var b=i.scratch,w=i.canvas;b.clear(),h({x:0,row:0},b);var E=o-i.freePointer.x,C=v-E,x=u;var T=i.freePointer.x,k=i.freePointer.row*u,P=E;w.context.drawImage(b,0,0,P,x,T,k,P,x),d[0]={x:T,y:k,w:P,h:c};var D=E,B=(i.freePointer.row+1)*u,A=C;w&&w.context.drawImage(b,D,0,A,x,0,B,A,x),d[1]={x:0,y:B,w:A,h:c};i.freePointer.x=C,i.freePointer.row++},p=function(){i.freePointer.x=0,i.freePointer.row++};if(this.freePointer.x+v<=o)y();else{if(this.freePointer.row>=s-1)return!1;this.freePointer.x===o?(p(),y()):this.enableWrapping?g():(p(),y())}return this.keyToLocation.set(r,d),this.needsBuffer=!0,d}},{key:`getOffsets`,value:function(r){return this.keyToLocation.get(r)}},{key:`isEmpty`,value:function(){return this.freePointer.x===0&&this.freePointer.row===0}},{key:`canFit`,value:function(r){if(this.locked)return!1;var a=this.texSize,n=this.texRows,o=this.getScale(r).texW;return this.freePointer.x+o>a?this.freePointer.row1&&arguments[1]!==void 0?arguments[1]:{},i=n.forceRedraw,o=i===void 0?!1:i,s=n.filterEle,u=s===void 0?function(){return!0}:s,l=n.filterType,f=l===void 0?function(){return!0}:l,v=!1,c=!1,h=Ct(r),d;try{for(h.s();!(d=h.n()).done;){var y=d.value;if(u(y)){var g=Ct(this.renderTypes.values()),p;try{var m=function(){var w=p.value,E=w.type;if(f(E)){var C=a.collections.get(w.collection),x=w.getKey(y),T=Array.isArray(x)?x:[x];if(o)T.forEach(function(B){return C.markKeyForGC(B)}),c=!0;else{var k=w.getID?w.getID(y):y.id(),P=a._key(E,k),D=a.typeAndIdToKey.get(P);D!==void 0&&!pm(T,D)&&(v=!0,a.typeAndIdToKey.delete(P),D.forEach(function(B){return C.markKeyForGC(B)}))}}};for(g.s();!(p=g.n()).done;)m()}catch(b){g.e(b)}finally{g.f()}}}}catch(b){h.e(b)}finally{h.f()}return c&&(this.gc(),v=!1),v}},{key:`gc`,value:function(){var r=Ct(this.collections.values()),a;try{for(r.s();!(a=r.n()).done;)a.value.gc()}catch(i){r.e(i)}finally{r.f()}}},{key:`getOrCreateAtlas`,value:function(r,a,n,i){var o=this.renderTypes.get(a),s=this.collections.get(o.collection),u=!1,l=s.draw(i,n,function(c){o.drawClipped?(c.save(),c.beginPath(),c.rect(0,0,n.w,n.h),c.clip(),o.drawElement(c,r,n,!0,!0),c.restore()):o.drawElement(c,r,n,!0,!0),u=!0});if(u){var f=o.getID?o.getID(r):r.id(),v=this._key(a,f);this.typeAndIdToKey.has(v)?this.typeAndIdToKey.get(v).push(i):this.typeAndIdToKey.set(v,[i])}return l}},{key:`getAtlasInfo`,value:function(r,a){var n=this,i=this.renderTypes.get(a),o=i.getKey(r);return(Array.isArray(o)?o:[o]).map(function(u){var l=i.getBoundingBox(r,u),f=n.getOrCreateAtlas(r,a,l,u),c=Ye(f.getOffsets(u),2),h=c[0];return{atlas:f,tex:h,tex1:h,tex2:c[1],bb:l}})}},{key:`getDebugInfo`,value:function(){var r=[],a=Ct(this.collections),n;try{for(a.s();!(n=a.n()).done;){var i=Ye(n.value,2),o=i[0],u=i[1].getCounts(),l=u.keyCount,f=u.atlasCount;r.push({type:o,keyCount:l,atlasCount:f})}}catch(v){a.e(v)}finally{a.f()}return r}}])})();var Bm=(function(){function t(e){dr(this,t),this.globalOptions=e,this.atlasSize=e.webglTexSize,this.maxAtlasesPerBatch=e.webglTexPerBatch,this.batchAtlases=[]}return hr(t,[{key:`getMaxAtlasesPerBatch`,value:function(){return this.maxAtlasesPerBatch}},{key:`getAtlasSize`,value:function(){return this.atlasSize}},{key:`getIndexArray`,value:function(){return Array.from({length:this.maxAtlasesPerBatch},function(r,a){return a})}},{key:`startBatch`,value:function(){this.batchAtlases=[]}},{key:`getAtlasCount`,value:function(){return this.batchAtlases.length}},{key:`getAtlases`,value:function(){return this.batchAtlases}},{key:`canAddToCurrentBatch`,value:function(r){return this.batchAtlases.length===this.maxAtlasesPerBatch?this.batchAtlases.includes(r):!0}},{key:`getAtlasIndexForBatch`,value:function(r){var a=this.batchAtlases.indexOf(r);if(a<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)throw new Error(`cannot add more atlases to batch`);this.batchAtlases.push(r),a=this.batchAtlases.length-1}return a}}])})();var Am=` + float circleSD(vec2 p, float r) { + return distance(vec2(0), p) - r; // signed distance + } +`;var Rm=` + float rectangleSD(vec2 p, vec2 b) { + vec2 d = abs(p)-b; + return distance(vec2(0),max(d,0.0)) + min(max(d.x,d.y),0.0); + } +`;var Mm=` + float roundRectangleSD(vec2 p, vec2 b, vec4 cr) { + cr.xy = (p.x > 0.0) ? cr.xy : cr.zw; + cr.x = (p.y > 0.0) ? cr.x : cr.y; + vec2 q = abs(p) - b + cr.x; + return min(max(q.x, q.y), 0.0) + distance(vec2(0), max(q, 0.0)) - cr.x; + } +`;var Lm=` + float ellipseSD(vec2 p, vec2 ab) { + p = abs( p ); // symmetry + + // find root with Newton solver + vec2 q = ab*(p-ab); + float w = (q.x1.0) ? d : -d; + } +`;var Sa={SCREEN:{name:`screen`,screen:!0},PICKING:{name:`picking`,picking:!0}};var Ln={IGNORE:1,USE_BB:2};var Ao=0;var ff=1;var vf=2;var Ro=3;var _r=4;var ln=5;var ma=6;var ba=7;var Im=(function(){function t(e,r,a){dr(this,t),this.r=e,this.gl=r,this.maxInstances=a.webglBatchSize,this.atlasSize=a.webglTexSize,this.bgColor=a.bgColor,this.debug=a.webglDebug,this.batchDebugInfo=[],a.enableWrapping=!0,a.createTextureCanvas=cm,this.atlasManager=new Pm(e,a),this.batchManager=new Bm(a),this.simpleShapeOptions=new Map,this.program=this._createShaderProgram(Sa.SCREEN),this.pickingProgram=this._createShaderProgram(Sa.PICKING),this.vao=this._createVAO()}return hr(t,[{key:`addAtlasCollection`,value:function(r,a){this.atlasManager.addAtlasCollection(r,a)}},{key:`addTextureAtlasRenderType`,value:function(r,a){this.atlasManager.addRenderType(r,a)}},{key:`addSimpleShapeRenderType`,value:function(r,a){this.simpleShapeOptions.set(r,a)}},{key:`invalidate`,value:function(r){var n=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:{}).type,i=this.atlasManager;return n?i.invalidate(r,{filterType:function(s){return s===n},forceRedraw:!0}):i.invalidate(r)}},{key:`gc`,value:function(){this.atlasManager.gc()}},{key:`_createShaderProgram`,value:function(r){var a=this.gl,n=`#version 300 es + precision highp float; + + uniform mat3 uPanZoomMatrix; + uniform int uAtlasSize; + + // instanced + in vec2 aPosition; // a vertex from the unit square + + in mat3 aTransform; // used to transform verticies, eg into a bounding box + in int aVertType; // the type of thing we are rendering + + // the z-index that is output when using picking mode + in vec4 aIndex; + + // For textures + in int aAtlasId; // which shader unit/atlas to use + in vec4 aTex; // x/y/w/h of texture in atlas + + // for edges + in vec4 aPointAPointB; + in vec4 aPointCPointD; + in vec2 aLineWidth; // also used for node border width + + // simple shapes + in vec4 aCornerRadius; // for round-rectangle [top-right, bottom-right, top-left, bottom-left] + in vec4 aColor; // also used for edges + in vec4 aBorderColor; // aLineWidth is used for border width + + // output values passed to the fragment shader + out vec2 vTexCoord; + out vec4 vColor; + out vec2 vPosition; + // flat values are not interpolated + flat out int vAtlasId; + flat out int vVertType; + flat out vec2 vTopRight; + flat out vec2 vBotLeft; + flat out vec4 vCornerRadius; + flat out vec4 vBorderColor; + flat out vec2 vBorderWidth; + flat out vec4 vIndex; + + void main(void) { + int vid = gl_VertexID; + vec2 position = aPosition; // TODO make this a vec3, simplifies some code below + + if(aVertType == `.concat(Ao,`) { + float texX = aTex.x; // texture coordinates + float texY = aTex.y; + float texW = aTex.z; + float texH = aTex.w; + + if(vid == 1 || vid == 2 || vid == 4) { + texX += texW; + } + if(vid == 2 || vid == 4 || vid == 5) { + texY += texH; + } + + float d = float(uAtlasSize); + vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1 + + gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); + } + else if(aVertType == `).concat(_r,` || aVertType == `).concat(ba,` + || aVertType == `).concat(ln,` || aVertType == `).concat(ma,`) { // simple shapes + + // the bounding box is needed by the fragment shader + vBotLeft = (aTransform * vec3(0, 0, 1)).xy; // flat + vTopRight = (aTransform * vec3(1, 1, 1)).xy; // flat + vPosition = (aTransform * vec3(position, 1)).xy; // will be interpolated + + // calculations are done in the fragment shader, just pass these along + vColor = aColor; + vCornerRadius = aCornerRadius; + vBorderColor = aBorderColor; + vBorderWidth = aLineWidth; + + gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); + } + else if(aVertType == `).concat(ff,`) { + vec2 source = aPointAPointB.xy; + vec2 target = aPointAPointB.zw; + + // adjust the geometry so that the line is centered on the edge + position.y = position.y - 0.5; + + // stretch the unit square into a long skinny rectangle + vec2 xBasis = target - source; + vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x)); + vec2 point = source + xBasis * position.x + yBasis * aLineWidth[0] * position.y; + + gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0); + vColor = aColor; + } + else if(aVertType == `).concat(vf,`) { + vec2 pointA = aPointAPointB.xy; + vec2 pointB = aPointAPointB.zw; + vec2 pointC = aPointCPointD.xy; + vec2 pointD = aPointCPointD.zw; + + // adjust the geometry so that the line is centered on the edge + position.y = position.y - 0.5; + + vec2 p0, p1, p2, pos; + if(position.x == 0.0) { // The left side of the unit square + p0 = pointA; + p1 = pointB; + p2 = pointC; + pos = position; + } else { // The right side of the unit square, use same approach but flip the geometry upside down + p0 = pointD; + p1 = pointC; + p2 = pointB; + pos = vec2(0.0, -position.y); + } + + vec2 p01 = p1 - p0; + vec2 p12 = p2 - p1; + vec2 p21 = p1 - p2; + + // Find the normal vector. + vec2 tangent = normalize(normalize(p12) + normalize(p01)); + vec2 normal = vec2(-tangent.y, tangent.x); + + // Find the vector perpendicular to p0 -> p1. + vec2 p01Norm = normalize(vec2(-p01.y, p01.x)); + + // Determine the bend direction. + float sigma = sign(dot(p01 + p21, normal)); + float width = aLineWidth[0]; + + if(sign(pos.y) == -sigma) { + // This is an intersecting vertex. Adjust the position so that there's no overlap. + vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm); + gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); + } else { + // This is a non-intersecting vertex. Treat it like a mitre join. + vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm); + gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); + } + + vColor = aColor; + } + else if(aVertType == `).concat(Ro,` && vid < 3) { + // massage the first triangle into an edge arrow + if(vid == 0) + position = vec2(-0.15, -0.3); + if(vid == 1) + position = vec2( 0.0, 0.0); + if(vid == 2) + position = vec2( 0.15, -0.3); + + gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); + vColor = aColor; + } + else { + gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space + } + + vAtlasId = aAtlasId; + vVertType = aVertType; + vIndex = aIndex; + } + `),i=this.batchManager.getIndexArray(),s=vm(a,n,`#version 300 es + precision highp float; + + // declare texture unit for each texture atlas in the batch + `.concat(i.map(function(l){return`uniform sampler2D uTexture`.concat(l,`;`)}).join(` + `),` + + uniform vec4 uBGColor; + uniform float uZoom; + + in vec2 vTexCoord; + in vec4 vColor; + in vec2 vPosition; // model coordinates + + flat in int vAtlasId; + flat in vec4 vIndex; + flat in int vVertType; + flat in vec2 vTopRight; + flat in vec2 vBotLeft; + flat in vec4 vCornerRadius; + flat in vec4 vBorderColor; + flat in vec2 vBorderWidth; + + out vec4 outColor; + + `).concat(Am,` + `).concat(Rm,` + `).concat(Mm,` + `).concat(Lm,` + + vec4 blend(vec4 top, vec4 bot) { // blend colors with premultiplied alpha + return vec4( + top.rgb + (bot.rgb * (1.0 - top.a)), + top.a + (bot.a * (1.0 - top.a)) + ); + } + + vec4 distInterp(vec4 cA, vec4 cB, float d) { // interpolate color using Signed Distance + // scale to the zoom level so that borders don't look blurry when zoomed in + // note 1.5 is an aribitrary value chosen because it looks good + return mix(cA, cB, 1.0 - smoothstep(0.0, 1.5 / uZoom, abs(d))); + } + + void main(void) { + if(vVertType == `).concat(Ao,`) { + // look up the texel from the texture unit + `).concat(i.map(function(l){return`if(vAtlasId == `.concat(l,`) outColor = texture(uTexture`).concat(l,`, vTexCoord);`)}).join(` + else `),` + } + else if(vVertType == `).concat(Ro,`) { + // mimics how canvas renderer uses context.globalCompositeOperation = 'destination-out'; + outColor = blend(vColor, uBGColor); + outColor.a = 1.0; // make opaque, masks out line under arrow + } + else if(vVertType == `).concat(_r,` && vBorderWidth == vec2(0.0)) { // simple rectangle with no border + outColor = vColor; // unit square is already transformed to the rectangle, nothing else needs to be done + } + else if(vVertType == `).concat(_r,` || vVertType == `).concat(ba,` + || vVertType == `).concat(ln,` || vVertType == `).concat(ma,`) { // use SDF + + float outerBorder = vBorderWidth[0]; + float innerBorder = vBorderWidth[1]; + float borderPadding = outerBorder * 2.0; + float w = vTopRight.x - vBotLeft.x - borderPadding; + float h = vTopRight.y - vBotLeft.y - borderPadding; + vec2 b = vec2(w/2.0, h/2.0); // half width, half height + vec2 p = vPosition - vec2(vTopRight.x - b[0] - outerBorder, vTopRight.y - b[1] - outerBorder); // translate to center + + float d; // signed distance + if(vVertType == `).concat(_r,`) { + d = rectangleSD(p, b); + } else if(vVertType == `).concat(ba,` && w == h) { + d = circleSD(p, b.x); // faster than ellipse + } else if(vVertType == `).concat(ba,`) { + d = ellipseSD(p, b); + } else { + d = roundRectangleSD(p, b, vCornerRadius.wzyx); + } + + // use the distance to interpolate a color to smooth the edges of the shape, doesn't need multisampling + // we must smooth colors inwards, because we can't change pixels outside the shape's bounding box + if(d > 0.0) { + if(d > outerBorder) { + discard; + } else { + outColor = distInterp(vBorderColor, vec4(0), d - outerBorder); + } + } else { + if(d > innerBorder) { + vec4 outerColor = outerBorder == 0.0 ? vec4(0) : vBorderColor; + vec4 innerBorderColor = blend(vBorderColor, vColor); + outColor = distInterp(innerBorderColor, outerColor, d); + } + else { + vec4 outerColor; + if(innerBorder == 0.0 && outerBorder == 0.0) { + outerColor = vec4(0); + } else if(innerBorder == 0.0) { + outerColor = vBorderColor; + } else { + outerColor = blend(vBorderColor, vColor); + } + outColor = distInterp(vColor, outerColor, d - innerBorder); + } + } + } + else { + outColor = vColor; + } + + `).concat(r.picking?`if(outColor.a == 0.0) discard; + else outColor = vIndex;`:``,` + } + `));s.aPosition=a.getAttribLocation(s,`aPosition`),s.aIndex=a.getAttribLocation(s,`aIndex`),s.aVertType=a.getAttribLocation(s,`aVertType`),s.aTransform=a.getAttribLocation(s,`aTransform`),s.aAtlasId=a.getAttribLocation(s,`aAtlasId`),s.aTex=a.getAttribLocation(s,`aTex`),s.aPointAPointB=a.getAttribLocation(s,`aPointAPointB`),s.aPointCPointD=a.getAttribLocation(s,`aPointCPointD`),s.aLineWidth=a.getAttribLocation(s,`aLineWidth`),s.aColor=a.getAttribLocation(s,`aColor`),s.aCornerRadius=a.getAttribLocation(s,`aCornerRadius`),s.aBorderColor=a.getAttribLocation(s,`aBorderColor`),s.uPanZoomMatrix=a.getUniformLocation(s,`uPanZoomMatrix`),s.uAtlasSize=a.getUniformLocation(s,`uAtlasSize`),s.uBGColor=a.getUniformLocation(s,`uBGColor`),s.uZoom=a.getUniformLocation(s,`uZoom`),s.uTextures=[];for(var u=0;u1&&arguments[1]!==void 0?arguments[1]:Sa.SCREEN;this.panZoomMatrix=r,this.renderTarget=a,this.batchDebugInfo=[],this.wrappedCount=0,this.simpleCount=0,this.startBatch()}},{key:`startBatch`,value:function(){this.instanceCount=0,this.batchManager.startBatch()}},{key:`endFrame`,value:function(){this.endBatch()}},{key:`_isVisible`,value:function(r,a){return r.visible()?a&&a.isVisible?a.isVisible(r):!0:!1}},{key:`drawTexture`,value:function(r,a,n){var i=this.atlasManager,o=this.batchManager,s=i.getRenderTypeOpts(n);if(this._isVisible(r,s)&&!(r.isEdge()&&!this._isValidEdge(r))){if(this.renderTarget.picking&&s.getTexPickingMode){var u=s.getTexPickingMode(r);if(u===Ln.IGNORE)return;if(u==Ln.USE_BB){this.drawPickingRectangle(r,a,n);return}}var f=Ct(i.getAtlasInfo(r,n)),v;try{for(f.s();!(v=f.n()).done;){var c=v.value,h=c.atlas,d=c.tex1,y=c.tex2;o.canAddToCurrentBatch(h)||this.endBatch();for(var g=o.getAtlasIndexForBatch(h),p=0,m=[[d,!0],[y,!1]];p=this.maxInstances&&this.endBatch()}}}}catch(D){f.e(D)}finally{f.f()}}}},{key:`setTransformMatrix`,value:function(r,a,n,i){var o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=0;if(n.shapeProps&&n.shapeProps.padding&&(s=r.pstyle(n.shapeProps.padding).pfValue),i){var u=i.bb,l=i.tex1,f=i.tex2,v=l.w/(l.w+f.w);o||(v=1-v);var c=this._getAdjustedBB(u,s,o,v);this._applyTransformMatrix(a,c,n,r)}else{var h=n.getBoundingBox(r),d=this._getAdjustedBB(h,s,!0,1);this._applyTransformMatrix(a,d,n,r)}}},{key:`_applyTransformMatrix`,value:function(r,a,n,i){var o,s;uf(r);var u=n.getRotation?n.getRotation(i):0;if(u!==0){var l=n.getRotationPoint(i),f=l.x,v=l.y;wn(r,r,[f,v]),lf(r,r,u);var c=n.getRotationOffset(i);o=c.x+(a.xOffset||0),s=c.y+(a.yOffset||0)}else o=a.x1,s=a.y1;wn(r,r,[o,s]),Qo(r,r,[a.w,a.h])}},{key:`_getAdjustedBB`,value:function(r,a,n,i){var o=r.x1,s=r.y1,u=r.w,l=r.h,f=r.yOffset;a&&(o-=a,s-=a,u+=2*a,l+=2*a);var v=0,c=u*i;return n&&i<1?u=c:!n&&i<1&&(v=u-c,o+=v,u=c),{x1:o,y1:s,w:u,h:l,xOffset:v,yOffset:f}}},{key:`drawPickingRectangle`,value:function(r,a,n){var i=this.atlasManager.getRenderTypeOpts(n),o=this.instanceCount;this.vertTypeBuffer.getView(o)[0]=_r;qr(a,this.indexBuffer.getView(o));wr([0,0,0],1,this.colorBuffer.getView(o));var l=this.transformBuffer.getMatrixView(o);this.setTransformMatrix(r,l,i),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}},{key:`drawNode`,value:function(r,a,n){var i=this.simpleShapeOptions.get(n);if(this._isVisible(r,i)){var o=i.shapeProps,s=this._getVertTypeForShape(r,o.shape);if(s===void 0||i.isSimple&&!i.isSimple(r,this.renderTarget)){this.drawTexture(r,a,n);return}var u=this.instanceCount;if(this.vertTypeBuffer.getView(u)[0]=s,s===ln||s===ma){var l=i.getBoundingBox(r),f=this._getCornerRadius(r,o.radius,l),v=this.cornerRadiusBuffer.getView(u);v[0]=f,v[1]=f,v[2]=f,v[3]=f,s===ma&&(v[0]=0,v[2]=0)}qr(a,this.indexBuffer.getView(u));var h=this.renderTarget.picking?1:n===`node-body`?r.effectiveOpacity():1,d=this.renderTarget.picking?1:r.pstyle(o.opacity).value*h,y=r.pstyle(o.color).value;wr(y,d,this.colorBuffer.getView(u));var p=this.lineWidthBuffer.getView(u);if(p[0]=0,p[1]=0,o.border){var m=r.pstyle(`border-width`).value;if(m>0){var b=r.pstyle(`border-color`).value;wr(b,h*r.pstyle(`border-opacity`).value,this.borderColorBuffer.getView(u));var C=r.pstyle(`border-position`).value;if(C===`inside`)p[0]=0,p[1]=-m;else if(C===`outside`)p[0]=m,p[1]=0;else{var x=m/2;p[0]=x,p[1]=-x}}}var T=this.transformBuffer.getMatrixView(u);this.setTransformMatrix(r,T,i),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}},{key:`_getVertTypeForShape`,value:function(r,a){switch(r.pstyle(a).value){case`rectangle`:return _r;case`ellipse`:return ba;case`roundrectangle`:case`round-rectangle`:return ln;case`bottom-round-rectangle`:return ma;default:return}}},{key:`_getCornerRadius`,value:function(r,a,n){var i=n.w,o=n.h;if(r.pstyle(a).value===`auto`)return ur(i,o);var s=r.pstyle(a).pfValue,u=i/2,l=o/2;return Math.min(s,l,u)}},{key:`drawEdgeArrow`,value:function(r,a,n){if(r.visible()){var i=r._private.rscratch,o,s,u;if(n===`source`?(o=i.arrowStartX,s=i.arrowStartY,u=i.srcArrowAngle):(o=i.arrowEndX,s=i.arrowEndY,u=i.tgtArrowAngle),!(isNaN(o)||o==null||isNaN(s)||s==null||isNaN(u)||u==null)){if(r.pstyle(n+`-arrow-shape`).value!==`none`){var f=r.pstyle(n+`-arrow-color`).value,h=r.pstyle(`opacity`).value*r.pstyle(`line-opacity`).value,d=r.pstyle(`width`).pfValue,y=r.pstyle(`arrow-scale`).value,g=this.r.getArrowWidth(d,y),p=this.instanceCount,m=this.transformBuffer.getMatrixView(p);uf(m),wn(m,m,[o,s]),Qo(m,m,[g,g]),lf(m,m,u),this.vertTypeBuffer.getView(p)[0]=Ro;qr(a,this.indexBuffer.getView(p));wr(f,h,this.colorBuffer.getView(p)),this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}}},{key:`drawEdgeLine`,value:function(r,a){if(r.visible()){var n=this._getEdgePoints(r);if(n){var i=r.pstyle(`opacity`).value,o=r.pstyle(`line-opacity`).value,s=r.pstyle(`width`).pfValue,u=r.pstyle(`line-color`).value,l=i*o;if(n.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),n.length==4){var f=this.instanceCount;this.vertTypeBuffer.getView(f)[0]=ff;qr(a,this.indexBuffer.getView(f));wr(u,l,this.colorBuffer.getView(f));var h=this.lineWidthBuffer.getView(f);h[0]=s;var d=this.pointAPointBBuffer.getView(f);d[0]=n[0],d[1]=n[1],d[2]=n[2],d[3]=n[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var y=0;y=this.maxInstances&&this.endBatch()}}}}},{key:`_isValidEdge`,value:function(r){var a=r._private.rscratch;return!(a.badLine||a.allpts==null||isNaN(a.allpts[0]))}},{key:`_getEdgePoints`,value:function(r){var a=r._private.rscratch;if(this._isValidEdge(r)){var n=a.allpts;if(n.length==4)return n;var i=this._getNumSegments(r);return this._getCurveSegmentPoints(n,i)}}},{key:`_getNumSegments`,value:function(r){return Math.min(Math.max(15,5),this.maxInstances)}},{key:`_getCurveSegmentPoints`,value:function(r,a){if(r.length==4)return r;for(var n=Array((a+1)*2),i=0;i<=a;i++)if(i==0)n[0]=r[0],n[1]=r[1];else if(i==a)n[i*2]=r[r.length-2],n[i*2+1]=r[r.length-1];else{var o=i/a;this._setCurvePoint(r,o,n,i*2)}return n}},{key:`_setCurvePoint`,value:function(r,a,n,i){if(r.length<=2)n[i]=r[0],n[i+1]=r[1];else{for(var o=Array(r.length-2),s=0;s0}},s=function(v){return v.pstyle(`text-events`).strValue===`yes`?Ln.USE_BB:Ln.IGNORE},u=function(v){var c=v.position(),h=c.x,d=c.y,y=v.outerWidth(),g=v.outerHeight();return{w:y,h:g,x1:h-y/2,y1:d-g/2}};r.drawing.addAtlasCollection(`node`,{texRows:t.webglTexRowsNodes}),r.drawing.addAtlasCollection(`label`,{texRows:t.webglTexRows}),r.drawing.addTextureAtlasRenderType(`node-body`,{collection:`node`,getKey:e.getStyleKey,getBoundingBox:e.getElementBox,drawElement:e.drawElement}),r.drawing.addSimpleShapeRenderType(`node-body`,{getBoundingBox:u,isSimple:gm,shapeProps:{shape:`shape`,color:`background-color`,opacity:`background-opacity`,radius:`corner-radius`,border:!0}}),r.drawing.addSimpleShapeRenderType(`node-overlay`,{getBoundingBox:u,isVisible:o(`overlay`),shapeProps:{shape:`overlay-shape`,color:`overlay-color`,opacity:`overlay-opacity`,padding:`overlay-padding`,radius:`overlay-corner-radius`}}),r.drawing.addSimpleShapeRenderType(`node-underlay`,{getBoundingBox:u,isVisible:o(`underlay`),shapeProps:{shape:`underlay-shape`,color:`underlay-color`,opacity:`underlay-opacity`,padding:`underlay-padding`,radius:`underlay-corner-radius`}}),r.drawing.addTextureAtlasRenderType(`label`,{collection:`label`,getTexPickingMode:s,getKey:Mo(e.getLabelKey,null),getBoundingBox:Lo(e.getLabelBox,null),drawClipped:!0,drawElement:e.drawLabel,getRotation:n(null),getRotationPoint:e.getLabelRotationPoint,getRotationOffset:e.getLabelRotationOffset,isVisible:i(`label`)}),r.drawing.addTextureAtlasRenderType(`edge-source-label`,{collection:`label`,getTexPickingMode:s,getKey:Mo(e.getSourceLabelKey,`source`),getBoundingBox:Lo(e.getSourceLabelBox,`source`),drawClipped:!0,drawElement:e.drawSourceLabel,getRotation:n(`source`),getRotationPoint:e.getSourceLabelRotationPoint,getRotationOffset:e.getSourceLabelRotationOffset,isVisible:i(`source-label`)}),r.drawing.addTextureAtlasRenderType(`edge-target-label`,{collection:`label`,getTexPickingMode:s,getKey:Mo(e.getTargetLabelKey,`target`),getBoundingBox:Lo(e.getTargetLabelBox,`target`),drawClipped:!0,drawElement:e.drawTargetLabel,getRotation:n(`target`),getRotationPoint:e.getTargetLabelRotationPoint,getRotationOffset:e.getTargetLabelRotationOffset,isVisible:i(`target-label`)});var l=_a(function(){console.log(`garbage collect flag set`),r.data.gc=!0},1e4);r.onUpdateEleCalcs(function(f,v){var c=!1;v&&v.length>0&&(c|=r.drawing.invalidate(v)),c&&l()}),Nm(r)};function Om(t){var e=t.cy.container();return Cf(e&&e.style&&e.style.backgroundColor||`white`)}function Jv(t,e){var r=t._private.rscratch;return pt(r,`labelWrapCachedLines`,e)||[]}var Mo=function(e,r){return function(a){var n=e(a),i=Jv(a,r);return i.length>1?i.map(function(o,s){return``.concat(n,`_`).concat(s)}):n}};var Lo=function(e,r){return function(a,n){var i=e(a);if(typeof n==`string`){var o=n.indexOf(`_`);if(o>0){var s=Number(n.substring(o+1)),u=Jv(a,r),l=i.h/u.length,f=l*s,v=i.y1+f;return{x1:i.x1,w:i.w,y1:v,h:l,yOffset:f}}}return i}};function Nm(t){var e=t.render;t.render=function(i){i=i||{};var o=t.cy;t.webgl&&(o.zoom()>Hv?(zm(t),e.call(t,i)):(Fm(t),ec(t,i,Sa.SCREEN)))};var r=t.matchCanvasSize;t.matchCanvasSize=function(i){r.call(t,i),t.pickingFrameBuffer.setFramebufferAttachmentSizes(t.canvasWidth,t.canvasHeight),t.pickingFrameBuffer.needsDraw=!0};t.findNearestElements=function(i,o,s,u){return Hm(t,i,o)};var a=t.invalidateCachedZSortedEles;t.invalidateCachedZSortedEles=function(){a.call(t),t.pickingFrameBuffer.needsDraw=!0};var n=t.notify;t.notify=function(i,o){n.call(t,i,o),i===`viewport`||i===`bounds`?t.pickingFrameBuffer.needsDraw=!0:i===`background`&&t.drawing.invalidate(o,{type:`node-body`})}}function zm(t){var e=t.data.contexts[t.WEBGL];e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT)}function Fm(t){var e=function(a){a.save(),a.setTransform(1,0,0,1,0,0),a.clearRect(0,0,t.canvasWidth,t.canvasHeight),a.restore()};e(t.data.contexts[t.NODE]),e(t.data.contexts[t.DRAG])}function Vm(t){var e=t.canvasWidth,r=t.canvasHeight,a=Ss(t),n=a.pan,i=a.zoom,o=Bo();wn(o,o,[n.x,n.y]),Qo(o,o,[i,i]);var s=Bo();Tm(s,e,r);var u=Bo();return Cm(u,s,o),u}function jv(t,e){var r=t.canvasWidth,a=t.canvasHeight,n=Ss(t),i=n.pan,o=n.zoom;e.setTransform(1,0,0,1,0,0),e.clearRect(0,0,r,a),e.translate(i.x,i.y),e.scale(o,o)}function qm(t,e){t.drawSelectionRectangle(e,function(r){return jv(t,r)})}function _m(t){var e=t.data.contexts[t.NODE];e.save(),jv(t,e),e.strokeStyle=`rgba(0, 0, 0, 0.3)`,e.beginPath(),e.moveTo(-1e3,0),e.lineTo(1e3,0),e.stroke(),e.beginPath(),e.moveTo(0,-1e3),e.lineTo(0,1e3),e.stroke(),e.restore()}function Gm(t){var e=function(n,i,o){for(var s=n.atlasManager.getAtlasCollection(i),u=t.data.contexts[t.NODE],l=s.atlases,f=0;f=0&&w.add(x)}return w}function Hm(t,e,r){var a=$m(t,e,r),n=t.getCachedZSortedEles(),i,o,s=Ct(a),u;try{for(s.s();!(u=s.n()).done;){var f=n[u.value];if(!i&&f.isNode()&&(i=f),!o&&f.isEdge()&&(o=f),i&&o)break}}catch(v){s.e(v)}finally{s.f()}return[i,o].filter(Boolean)}function Io(t,e,r){var a=t.drawing;e+=1,r.isNode()?(a.drawNode(r,e,`node-underlay`),a.drawNode(r,e,`node-body`),a.drawTexture(r,e,`label`),a.drawNode(r,e,`node-overlay`)):(a.drawEdgeLine(r,e),a.drawEdgeArrow(r,e,`source`),a.drawEdgeArrow(r,e,`target`),a.drawTexture(r,e,`label`),a.drawTexture(r,e,`edge-source-label`),a.drawTexture(r,e,`edge-target-label`))}function ec(t,e,r){var a;t.webglDebug&&(a=performance.now());var n=t.drawing,i=0;if(r.screen&&t.data.canvasNeedsRedraw[t.SELECT_BOX]&&qm(t,e),t.data.canvasNeedsRedraw[t.NODE]||r.picking){var o=t.data.contexts[t.WEBGL];r.screen?(o.clearColor(0,0,0,0),o.enable(o.BLEND),o.blendFunc(o.ONE,o.ONE_MINUS_SRC_ALPHA)):o.disable(o.BLEND),o.clear(o.COLOR_BUFFER_BIT|o.DEPTH_BUFFER_BIT),o.viewport(0,0,o.canvas.width,o.canvas.height);var s=Vm(t),u=t.getCachedZSortedEles();if(i=u.length,n.startFrame(s,r),r.screen){for(var l=0;l0&&o>0){h.clearRect(0,0,i,o),h.globalCompositeOperation=`source-over`;var d=this.getCachedZSortedEles();if(t.full)h.translate(-a.x1*l,-a.y1*l),h.scale(l,l),this.drawElements(h,d),h.scale(1/l,1/l),h.translate(a.x1*l,a.y1*l);else{var y=e.pan(),g={x:y.x*l,y:y.y*l};l*=e.zoom(),h.translate(g.x,g.y),h.scale(l,l),this.drawElements(h,d),h.scale(1/l,1/l),h.translate(-g.x,-g.y)}t.bg&&(h.globalCompositeOperation=`destination-over`,h.fillStyle=t.bg,h.rect(0,0,i,o),h.fill())}return c};function Wm(t,e){for(var r=atob(t),a=new ArrayBuffer(r.length),n=new Uint8Array(a),i=0;i`u`?`undefined`:je(OffscreenCanvas))!==`undefined`)r=new OffscreenCanvas(t,e);else r=this.cy.window().document.createElement(`canvas`),r.width=t,r.height=e;return r};[Uv,Ht,Zt,Ts,Lr,pr,mt,Qv,yr,Ka,ac].forEach(function(t){Se(Be,t)});var Xm=[{type:`layout`,extensions:my},{type:`renderer`,extensions:[{name:`null`,impl:Rv},{name:`base`,impl:Gv},{name:`canvas`,impl:Um}]}];var ic={};var oc={};function sc(t,e,r){var a=r,n=function(T){Ne("Can not register `"+e+"` for `"+t+"` since `"+T+"` already exists in the prototype and can not be overridden")};if(t===`core`){if(Ia.prototype[e])return n(e);Ia.prototype[e]=r}else if(t===`collection`){if(ut.prototype[e])return n(e);ut.prototype[e]=r}else if(t===`layout`){for(var i=function(T){this.options=T,r.call(this,T),Le(this._private)||(this._private={}),this._private.cy=T.cy,this._private.listeners=[],this.createEmitter()},o=i.prototype=Object.create(r.prototype),s=[],u=0;utypeof performance<`u`?performance.now():Date.now();function i0(){if(typeof navigator<`u`&&/jsdom/i.test(navigator.userAgent))return!1;try{return document.createElement(`canvas`).getContext(`2d`)!==null}catch{return!1}}function sa(t,e){try{return getComputedStyle(document.documentElement).getPropertyValue(t).trim()||e}catch{return e}}function o0(t){return t.replace(/&/g,`&`).replace(//g,`>`).replace(/"/g,`"`)}var s0=Object.fromEntries(Object.entries(v).map(([t,e])=>{let a=`${c(e)}`;return[t,`data:image/svg+xml;charset=utf-8,${encodeURIComponent(a)}`]}));function u0(t,e,r,a,n=-Math.PI/2){let i=[];for(let o=0;ot.startsWith(f0);function m0(t={}){let e=t.headless??!i0(),r=(t.animate??!0)&&!e,a=t.perfHints??!0,n$1=t.guard!==!1,i=t.incremental!==!1,o=[],s=[],u=[],l$1=[],f=null,v=new Set,c=new Set,h=!1,d=null,y=null,g=`cose`,p=null,m$1=null,b$1=null,w=`far`,E$1=null,C$1=new Map,x=null,T=0,k$2=0,P=null;function D(I){T++,I.stop(),I.one(`layoutstop`,()=>{T--})}let B=I=>{for(let V of o)V(I)},A=I=>{for(let V of s)V(I)},R=I=>{for(let V of l$1)V(I)};function L(I){let V=x;V&&(V.halt=I,D(V.layout))}function O(){if(!f)return null;let I=f.pan();return{zoom:f.zoom(),panX:I.x,panY:I.y}}function M$1(){E$1&&clearTimeout(E$1),E$1=setTimeout(()=>{if(E$1=null,!f)return;z();let I=O();if(I)for(let V of u)V(I)},90)}function z(){if(!f)return;let I=f.zoom(),V=It0)&&f.batch(()=>{f.nodes().filter(oe=>!ua(oe.id())).forEach(oe=>{let ue=C$1.get(oe.id());ue&&oe.data(`dlabel`,k(ue,w))}),f.edges().forEach(oe=>{oe.data(`elabel`,w===`far`?``:oe.data(`kind`))})}))}function q(I,V){let oe=sa(`--fg-success`,`#0b7a42`),ue=sa(`--fg-warning`,`#a35c00`),re=sa(`--fg-error`,`#c0392b`),fe=Object.entries(m).map(([le,de])=>({selector:`node[kind = "${le}"]`,style:{"background-color":de.color,shape:de.shape}})),ie=Object.entries(E).map(([le,de])=>({selector:`edge[kind = "${le}"]`,style:{"line-color":de.color,"target-arrow-color":de.color}}));return[{selector:`node`,style:{width:ks,height:ks,label:`data(dlabel)`,"font-size":10,color:I,"text-valign":`bottom`,"text-halign":`center`,"text-margin-y":5,"text-wrap":`wrap`,"text-max-width":`130px`,"border-width":1.5,"border-color":`data(color)`,"border-opacity":.9,"background-opacity":.92,"background-image":`data(icon)`,"background-width":`52%`,"background-height":`52%`,"background-image-opacity":.95,"background-clip":`none`}},...fe,{selector:`node.grp`,style:{shape:`round-rectangle`,"background-opacity":.06,"background-color":I,"border-width":1.4,"border-style":`dashed`,"border-color":I,"border-opacity":.55,label:`data(dlabel)`,"font-size":11,"font-weight":`bold`,color:I,"text-valign":`top`,"text-halign":`center`,"text-margin-y":-4,padding:`14px`,"background-image":`none`,events:`yes`}},{selector:`edge`,style:{width:1.6,"curve-style":`bezier`,"line-style":le=>le.data(`line`)??`solid`,"target-arrow-shape":`triangle`,"target-arrow-fill":`filled`,"arrow-scale":.9,label:`data(elabel)`,"font-size":8,color:I,"text-rotation":`autorotate`,"text-margin-y":-6,opacity:.85}},...ie,{selector:`node.unverified`,style:{"border-style":`dashed`,opacity:.7}},{selector:`node.absent`,style:{opacity:.35}},{selector:`node.failed`,style:{"border-color":re,"border-width":3,"border-style":`solid`}},{selector:`.diff-added`,style:{"border-color":oe,"line-color":oe,"target-arrow-color":oe,"border-width":3}},{selector:`.diff-changed`,style:{"border-color":ue,"line-color":ue,"target-arrow-color":ue,"border-width":3,"border-style":`double`}},{selector:`.g-hidden`,style:{display:`none`,events:`no`}},{selector:`.faded`,style:{opacity:.12,events:`yes`}},{selector:`.dimmed`,style:{opacity:.15}},{selector:`node.nh`,style:{"border-width":3,"border-color":V,"border-opacity":1}},{selector:`edge.nh`,style:{width:2.6,opacity:1}},{selector:`:selected`,style:{"overlay-color":V,"overlay-opacity":.18,"overlay-padding":6}}]}function $(){let I=new Set;if(!m$1||!p)return I;let V=new Map;for(let oe of m$1.groups)for(let ue of oe.members)V.set(ue,oe.id);for(let oe of m$1.groups)if(m$1.collapsed.has(oe.id))for(let ue of oe.members)I.add(ue);if(!I.size)return I;for(let oe of p.edges)(I.has(oe.source)||I.has(oe.target))&&I.add(oe.id);return I}function F(){if(!f)return;let I=f.nodes().filter(re=>!ua(re.id())),V=f.edges();I.removeClass(`nh faded dimmed diff-added diff-changed g-hidden`),V.removeClass(`nh faded diff-added diff-changed g-hidden`);let oe=$();oe.size&&f.elements().forEach(re=>{oe.has(re.id())&&re.addClass(`g-hidden`)}),h&&(I.forEach(re=>{v.has(re.id())?re.id()!==y&&re.addClass(`nh`):re.addClass(`faded`)}),V.forEach(re=>{c.has(re.id())?re.addClass(`nh`):re.addClass(`faded`)}));let ue=d;ue&&I.forEach(re=>{ue.has(re.id())||re.addClass(`dimmed`)}),b$1&&(b$1.nodes.forEach((re,fe)=>f.getElementById(fe).addClass(`diff-${re}`)),b$1.edges.forEach((re,fe)=>f.getElementById(fe).addClass(`diff-${re}`))),y&&f.getElementById(y).select()}function _(I,V={}){if(!f)return;x&&L(`superseded`),g=I;let oe={name:I,animate:r,fit:!1,eles:f.elements().not(`.g-hidden`)};if(I===`concentric`&&(oe.concentric=ie=>ie.degree(!1),oe.levelWidth=()=>2),I===`cose`){let ie=oe;ie.animate=!0,ie.animationThreshold=Number.MAX_SAFE_INTEGER;let le=C(j());n$1&&le>0&&(ie.numIter=le)}R({type:`started`,layout:I});let ue=f.layout(oe),re={layout:ue,name:I,t0:lc(),halt:`natural`,timer:null};x=re,ue.one(`layoutstop`,()=>{re.timer&&(clearTimeout(re.timer),re.timer=null),x===re&&(x=null);let ie=Math.round(lc()-re.t0);re.halt===`natural`?(R({type:`done`,layout:I,elapsedMs:ie}),f?.fit(void 0,36)):re.halt===`cancel`?R({type:`cancelled`,layout:I,elapsedMs:ie}):re.halt===`superseded`?R({type:`superseded`,layout:I,elapsedMs:ie}):R({type:`timeout`,layout:I,elapsedMs:ie,fallback:k$1}),z()});let fe=!n$1||V.guarded===!1?0:M(I,j());fe>0&&(re.timer=setTimeout(()=>{re.timer=null,x===re&&(L(`timeout`),_(`grid`,{guarded:!1}))},fe));try{ue.run()}catch{x===re&&(re.timer&&(clearTimeout(re.timer),re.timer=null),x=null,R({type:`error`,layout:I,elapsedMs:0,fallback:`grid`}),_(`grid`,{guarded:!1}))}}function j(){if(P)return P;let I=f?.nodes().length??0,V=f?.edges().length??0;return{nodes:I,edges:V,density:I?2*V/I:0,components:0,largestShare:1}}function te(){let I=m$1;return I?I.groups.map(V=>({data:{id:V.id,label:V.label,kind:`group`,dlabel:I.collapsed.has(V.id)?`${V.label} (${V.members.length})`:V.label,members:V.members.length},classes:`grp`})):[]}function Z(I){return p.nodes.map(V=>({data:l({id:V.id,label:V.label,dlabel:k(V,w),kind:V.kind,color:m[V.kind].color,icon:s0[V.kind]??``,unverified:V.unverified,absent:V.absent,failed:V.failed,degree:V.degree,state:V.state,category:V.category,origin:V.origin,version:V.version},I.has(V.id)?{parent:I.get(V.id)}:{}),classes:`${V.unverified?`unverified`:``}${V.absent?` absent`:``}${V.failed?` failed`:``}`}))}function ne(){return p.edges.map(I=>({data:{id:I.id,source:I.source,target:I.target,kind:I.kind,evidence:I.evidence,evidenceState:I.evidenceState,endpoint:I.evidenceEndpoint,line:N[I.evidenceState]??`solid`,elabel:w===`far`?``:I.kind}}))}function ae(I){let V=f.getElementById(I.data.id);if(V.empty())return;let de=I.data,{id:oe,source:ue,target:re,parent:fe}=de,ie=n(de,[`id`,`source`,`target`,`parent`]),le=!1;for(let be of Object.keys(ie))if(V.data(be)!==ie[be]){le=!0;break}if(le&&V.data(ie),V.isNode()){let be=I.data.parent??null;(V.data(`parent`)??null)!==be&&V.move({parent:be}),`unverified`in I.data&&(V.toggleClass(`unverified`,!!I.data.unverified),V.toggleClass(`absent`,!!I.data.absent),V.toggleClass(`failed`,!!I.data.failed))}}function ve(I){if(!I.length||!f||!p)return;let V=new Set(I),oe=new Map,ue=0,re=0,fe=0;f.nodes().forEach(Ee=>{let se=Ee.id();if(ua(se)||V.has(se))return;let Ce=Ee.position();!Number.isFinite(Ce.x)||!Number.isFinite(Ce.y)||(oe.set(se,Ce),ue+=Ce.x,re+=Ce.y,fe++)});let ie=fe?{x:ue/fe,y:re/fe}:{x:0,y:0},le=Math.max(240,Math.sqrt(Math.max(1,p.nodes.length))*30),de=new Map;for(let Ee of p.edges)(de.get(Ee.source)??de.set(Ee.source,[]).get(Ee.source)).push(Ee.target),(de.get(Ee.target)??de.set(Ee.target,[]).get(Ee.target)).push(Ee.source);let be=new Map,ye=0;for(let Ee of I){let se=f.getElementById(Ee);if(se.empty())continue;let Ce=(de.get(Ee)??[]).map(Q=>oe.get(Q)??be.get(Q)).filter(Q=>Q!==void 0),De;if(Ce.length)De={x:Ce.reduce((Q,S)=>Q+S.x,0)/Ce.length,y:Ce.reduce((Q,S)=>Q+S.y,0)/Ce.length};else{let Q=ye*2.399963229728653;De={x:ie.x+le*Math.cos(Q),y:ie.y+le*Math.sin(Q)}}ye++,se.position(De),be.set(Ee,De)}}let J=()=>new Promise(I=>setTimeout(I,0));async function G(I,V,oe){let ue=0;for(let re of I)for(let fe=0;feMath.max(n0,Math.ceil(p.nodes.length*a0))?_(g):(R({type:`skipped`,layout:g}),z())}function K(){if(!f||!p)return;let I=++k$2;C$1=new Map(p.nodes.map(se=>[se.id,se])),P=b(p.nodes,p.edges);let V=new Map;if(m$1)for(let se of m$1.groups)for(let Ce of se.members)V.set(Ce,se.id);let oe=te(),ue=Z(V),re=ne();if(!i){f.elements().remove();let se=[...oe,...ue,...re];se.length&&f.add(se),F(),_(g);return}let fe=new Set([...oe.map(se=>se.data.id),...ue.map(se=>se.data.id),...re.map(se=>se.data.id)]),ie=f.elements().empty();ie||f.elements().filter(se=>!fe.has(se.id())).remove();let le=se=>f.getElementById(se.data.id).empty(),de=oe.filter(le),be=ue.filter(le),ye=re.filter(le);if(de.length&&f.add(de),!ie){for(let se of oe)ae(se);for(let se of ue)ae(se);for(let se of re)ae(se)}let Ee=de.length+be.length+ye.length;if(Ee>r0){G([be,ye],I,Ee).then(()=>W(be.map(se=>se.data.id),I,ie));return}be.length&&f.add(be),ye.length&&f.add(ye),W(be.map(se=>se.data.id),I,ie)}function X(){if(!f)return null;let I=f.nodes().filter(se=>!ua(se.id())&&se.visible());if(!I.length)return null;let V=ks/2,oe=1/0,ue=1/0,re=-1/0,fe=-1/0;I.forEach(se=>{let Ce=se.position();oe=Math.min(oe,Ce.x-V),ue=Math.min(ue,Ce.y-V),re=Math.max(re,Ce.x+V),fe=Math.max(fe,Ce.y+V)});let ie=re-oe+jn*2,le=fe-ue+jn*2+16,de=jn-oe,be=jn-ue,ye=[``,``];f.edges().filter(se=>se.visible()).forEach(se=>{let Ce=se.source().position(),De=se.target().position(),Q=E[se.data(`kind`)]?.color??`#7d8894`,S=se.data(`line`)===`dashed`?`5 3`:se.data(`line`)===`dotted`?`2 3`:null;ye.push(``)});let Ee=(se,Ce)=>se.id()Ce.id()?1:0;return[...I].sort(Ee).forEach(se=>{let Ce=se.data(`kind`),De=m[Ce],Q=se.position(),S=Q.x+de,N=Q.y+be,U=se.data(`unverified`)?` stroke-dasharray="4 3"`:``,H=se.data(`absent`)?.35:se.data(`unverified`)?.7:1,Y=se.data(`failed`)?`#c0392b`:De.color,pe=`fill="${De.color}" stroke="${Y}" stroke-width="1.5"${U} opacity="${H}"`,ee=De.shape;if(ee===`ellipse`)ye.push(``);else if(ee===`rectangle`||ee===`round-rectangle`){let ge=ee===`round-rectangle`?` rx="8"`:``;ye.push(``)}else if(ee===`star`)ye.push(``);else{let he=ee===`diamond`?`${S.toFixed(1)},${(N-V).toFixed(1)} ${(S+V).toFixed(1)},${N.toFixed(1)} ${S.toFixed(1)},${(N+V).toFixed(1)} ${(S-V).toFixed(1)},${N.toFixed(1)}`:u0(S,N,V,ee===`triangle`?3:ee===`pentagon`?5:ee===`diamond`||ee===`hexagon`?0:6);ye.push(``)}ye.push(`${o0(se.data(`label`))}`)}),ye.push(``),ye.join(` +`)}return{mount(I){f=cr({container:I,headless:e,elements:[],style:q(sa(`--fg-text-2`,`#4b5563`),sa(`--fg-accent`,`#e8611c`)),boxSelectionEnabled:!1,autoungrabify:!1,userZoomingEnabled:!0,userPanningEnabled:!0,textureOnViewport:a,hideEdgesOnViewport:a,pixelRatio:`auto`}),f.on(`tap`,`node`,V=>{let oe=V.target.id();ua(oe)||B({type:`node`,id:oe})}),f.on(`tap`,`edge`,V=>B({type:`edge`,id:V.target.id()})),f.on(`tap`,V=>{V.target===f&&B(null)}),f.on(`mouseover`,`node, edge`,V=>{let oe=V.target,ue=oe.id();ua(ue)||A({type:oe.isNode()?`node`:`edge`,id:ue})}),f.on(`mouseout`,`node, edge`,()=>A(null)),f.on(`viewport`,()=>M$1())},setData(I,V){p=I,V?.layout&&(g=V.layout),K()},select(I){y=I,f&&(f.$(`:selected`).unselect(),I&&f.getElementById(I).select())},highlight(I,V){h=I.size>0,v=new Set(I),c=new Set(V),F()},dimExcept(I){d=I?new Set(I):null,F()},layout(I){_(I)},cancelLayout(){L(`cancel`)},onLayoutStatus(I){l$1.push(I)},fit(){f?.fit(void 0,36)},zoomTo(I){if(!f)return;let V=f.getElementById(I);if(V.empty()||!V.visible())return;let oe=Math.max(f.zoom(),1.3);if(r)f.animate({center:{eles:V},zoom:oe},{duration:180});else{f.center(V);let ue=V.isNode()?V.position():V.midpoint();f.zoom({level:oe,position:ue})}},setGrouping(I){m$1=I,K()},setDiff(I){b$1=I,F()},viewport(){return O()},setViewport(I){f&&(f.viewport({zoom:I.zoom,pan:{x:I.panX,y:I.panY}}),z())},onViewport(I){u.push(I)},onHover(I){s.push(I)},exportPng(){if(!f)return null;try{return f.png({full:!0,scale:2,bg:sa(`--fg-surface`,`#ffffff`)})}catch{return null}},exportSvg(){return X()},onSelect(I){o.push(I)},nativeHandle(){return f},destroy(){E$1&&clearTimeout(E$1),E$1=null,k$2++;let I=f;f=null,x&&(x.timer&&(clearTimeout(x.timer),x.timer=null),D(x.layout),x=null);let V=(oe=25)=>{if(I){if(T<=0||oe<=0){try{I.destroy()}catch{}return}setTimeout(()=>V(oe-1),20)}};V(),o.length=0,s.length=0,u.length=0,l$1.length=0,h=!1,v=new Set,c=new Set,d=null,y=null,p=null,P=null,C$1=new Map,m$1=null,b$1=null,w=`far`}}}export{m0 as createCytoscapeRenderer}; \ No newline at end of file diff --git a/portal/assets/chunk-BF4IykBc.js b/portal/assets/chunk-BF4IykBc.js new file mode 100644 index 0000000..4b87282 --- /dev/null +++ b/portal/assets/chunk-BF4IykBc.js @@ -0,0 +1 @@ +import{i as m,r as l}from"./chunk-BYYLUO5t.js";import{$ as dS,At as qm,Bt as tn,Et as p,F as Sa,H as Xm,J as aC,Jt as vd,P as SS,Q as cE,Qt as yS,S as Ma,Ut as uC,Y as aE,Z as bd,at as ey,ct as hD,et as da,gt as k,i as Ar,it as ei,jt as rC,kt as qS,lt as hE,ot as gS,p as Hh,s as DS,ut as hS,vt as lC,xt as nC,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{i as n,o as f,r as g}from"./main-XW2ZMSO5.js";import{a as l$1,s as y}from"./chunk-BNDlNg-C.js";import{t as _}from"./chunk-16deWS0U.js";import{t as D}from"./chunk-Bg2lccQE.js";import{n as k$1,t as I}from"./chunk-DQtX_-dj.js";import{t as T}from"./chunk-BGgpmc9t.js";var et=()=>[1,2,3];var Z=t=>({time:t});var nt=(t,i)=>i.host;var it=(t,i)=>i.id;function at(t,i){if(t&1){let e=DS();da(0,`ui-error`,6),Ma(`retry`,function(){Hh(e);let _=SS();return Vh(_.load())}),vd()}t&2&&qm(`error`,i)}function ot(t,i){t&1&&(da(0,`section`,4),Sa(1,`ui-state-badge`,7),da(2,`p`,8),qS(3),aC(4,`t`),vd()()),t&2&&(hD(3),ey(lC(4,1,`hosts.ops.unsupported`)))}function rt(t,i){t&1&&Sa(0,`ui-skeleton`,9)}function ct(t,i){t&1&&(da(0,`section`,5),mS(1,rt,1,0,`ui-skeleton`,9,gS),vd()),t&2&&(hD(),yS(nC(0,et)))}function st(t,i){if(t&1&&(da(0,`p`,14),qS(1),aC(2,`t`),vd()),t&2){let e=SS(2);hD(),ey(uC(2,1,`common.updatedAt`,rC(4,Z,e.stamp(i))))}}function lt(t,i){t&1&&Sa(0,`ui-icon`,32),t&2&&qm(`size`,11)}function dt(t,i){if(t&1&&(da(0,`li`)(1,`span`,31),dS(2,lt,1,1,`ui-icon`,32),vd(),qS(3),aC(4,`t`),vd()),t&2){let e=i.$implicit,r=i.$index,_=SS().$implicit,d=SS(2);Ar(`data-state`,d.stageState(_,r))(`aria-current`,d.stageState(_,r)===`active`?`step`:null),hD(2),hS(d.stageState(_,r)===`done`?2:-1),hD(),bd(` `,lC(4,4,`hostState.`+e.state),` `)}}function pt(t,i){if(t&1&&(da(0,`li`,24)(1,`span`,31),Sa(2,`ui-icon`,33),vd(),qS(3),aC(4,`t`),vd()),t&2){let e=SS().$implicit;Ar(`data-state`,i),hD(2),qm(`size`,11),hD(),bd(` `,lC(4,3,`hostState.`+e.integration),` `)}}function mt(t,i){t&1&&Sa(0,`ui-state-badge`,7)}function _t(t,i){if(t&1&&(qS(0),aC(1,`t`)),t&2){let e=SS().$implicit,r=SS(2);bd(` `,lC(1,1,r.authLabel(e)),` `)}}function gt(t,i){if(t&1&&(da(0,`div`,26)(1,`dt`),qS(2),aC(3,`t`),vd(),da(4,`dd`)(5,`code`),qS(6),vd()()()),t&2){let e=SS().$implicit;hD(2),ey(lC(3,2,`hosts.commandHint`)),hD(4),ey(e.command_hint)}}function ut(t,i){if(t&1&&(da(0,`p`,8),qS(1),vd()),t&2){let e=SS().$implicit;hD(),ey(e.detail)}}function Ct(t,i){if(t&1&&(da(0,`span`,34),Sa(1,`ui-state-badge`,22)(2,`ui-icon`,35)(3,`ui-state-badge`,22),vd()),t&2){let e=SS(),r=SS().$implicit;hD(),qm(`state`,e.from),hD(),qm(`size`,12),hD(),qm(`state`,r.integration)}}function yt(t,i){if(t&1&&(da(0,`p`,27),Sa(1,`ui-icon`,32),da(2,`span`),qS(3),aC(4,`t`),vd(),dS(5,Ct,4,3,`span`,34),vd()),t&2){let e=i,r=SS(3);hD(),qm(`size`,12),hD(2),ey(uC(4,3,`common.updatedAt`,rC(6,Z,r.stamp(e.at)))),hD(2),hS(e.changed&&e.from?5:-1)}}function xt(t,i){if(t&1){let e=DS();da(0,`div`,37)(1,`p`,38),Sa(2,`ui-icon`,29),qS(3),aC(4,`t`),vd(),da(5,`button`,39),aC(6,`t`),Ma(`click`,function(){Hh(e);let _=SS(),d=SS().$implicit,v=SS(2);return Vh(v.copyCommand(d.host,_.command))}),Sa(7,`ui-icon`,40),qS(8),aC(9,`t`),vd()(),da(10,`code`,41),qS(11),vd()}if(t&2){let e=SS(),r=SS().$implicit,_=SS(2);hD(2),qm(`size`,13),hD(),bd(``,lC(4,7,`hosts.launch.copyHint`),` `),hD(2),Ar(`aria-label`,lC(6,9,`state.copy`)),hD(2),qm(`name`,_.copied()===r.host?`check`:`copy`)(`size`,13),hD(),bd(` `,lC(9,11,_.copied()===r.host?`state.copied`:`state.copy`),` `),hD(3),ey(e.command)}}function vt(t,i){if(t&1&&qS(0),t&2){let e=SS(2);bd(` — `,e.detail,` `)}}function ft(t,i){if(t&1&&(da(0,`p`,36)(1,`strong`),qS(2),aC(3,`t`),vd(),da(4,`code`),qS(5),vd(),dS(6,vt,1,1),vd()),t&2){let e=SS();hD(2),ey(lC(3,3,`install.refused`)),hD(3),ey(e.refusal),hD(),hS(e.detail?6:-1)}}function ht(t,i){if(t&1&&(da(0,`span`),qS(1),vd()),t&2){let e=SS(2);hD(),bd(`— `,e.detail)}}function St(t,i){if(t&1&&(da(0,`p`,8),qS(1),aC(2,`t`),dS(3,ht,2,1,`span`),vd()),t&2){let e=SS();hD(),bd(` `,lC(2,2,`hosts.launch.unavailable`),` `),hD(2),hS(e.detail?3:-1)}}function bt(t,i){if(t&1&&(da(0,`div`,30),dS(1,xt,12,13)(2,ft,7,5,`p`,36)(3,St,4,4,`p`,8),vd()),t&2){let e=i;Ar(`data-kind`,e.command?`command`:e.refusal?`refusal`:`none`),hD(),hS(e.command?1:e.refusal?2:3)}}function Pt(t,i){if(t&1){let e=DS();da(0,`article`,16)(1,`header`,20)(2,`h2`),Sa(3,`ui-icon`,21),qS(4),vd(),Sa(5,`ui-state-badge`,22),vd(),da(6,`ol`,23),aC(7,`t`),mS(8,dt,5,6,`li`,null,it),dS(10,pt,5,5,`li`,24),vd(),da(11,`dl`,25)(12,`div`)(13,`dt`),qS(14),aC(15,`t`),vd(),da(16,`dd`),qS(17),aC(18,`t`),vd()(),da(19,`div`)(20,`dt`),qS(21),aC(22,`t`),vd(),da(23,`dd`),qS(24),aC(25,`t`),vd()(),da(26,`div`)(27,`dt`),qS(28),aC(29,`t`),vd(),da(30,`dd`),Sa(31,`ui-state-badge`,22),vd()(),da(32,`div`)(33,`dt`),qS(34),aC(35,`t`),vd(),da(36,`dd`),dS(37,mt,1,0,`ui-state-badge`,7)(38,_t,2,3),vd()(),da(39,`div`)(40,`dt`),qS(41),aC(42,`t`),vd(),da(43,`dd`),qS(44),aC(45,`t`),vd()(),dS(46,gt,7,4,`div`,26),vd(),dS(47,ut,2,1,`p`,8),dS(48,yt,6,8,`p`,27),da(49,`div`,28)(50,`button`,1),Ma(`click`,function(){let _=Hh(e).$implicit,d=SS(2);return Vh(d.requestIntegration(_))}),Sa(51,`ui-icon`,29),qS(52),aC(53,`t`),vd()(),dS(54,bt,4,2,`div`,30),vd()}if(t&2){let e,r,_,d=i.$implicit,v=SS(2);Ar(`id`,`host-`+d.host)(`data-off`,!d.detected||null)(`data-host`,d.host),hD(3),qm(`size`,16),hD(),ey(d.host),hD(),qm(`state`,d.integration),hD(),Ar(`aria-label`,lC(7,28,`hosts.integration`))(`data-lc`,d.host),hD(2),yS(v.stages),hD(2),hS((e=v.terminalState(d))?10:-1,e),hD(4),ey(lC(15,30,`hosts.detected`)),hD(3),ey(lC(18,32,d.detected?`state.yes`:`state.no`)),hD(4),ey(lC(22,34,`hosts.version`)),hD(3),ey(d.version??lC(25,36,`state.unknown`)),hD(4),ey(lC(29,38,`hosts.supported`)),hD(3),qm(`state`,d.supported?`supported`:`unsupported`),hD(3),ey(lC(35,40,`hosts.auth`)),hD(3),hS(d.logged_in===null?37:38),hD(4),ey(lC(42,42,`hosts.launchable`)),hD(3),ey(lC(45,44,d.launchable?`state.yes`:`state.no`)),hD(2),hS(d.command_hint?46:-1),hD(),hS(d.detail?47:-1),hD(),hS((r=v.checks()[d.host])?48:-1,r),hD(2),Xm(`btn--primary`,d.detected),qm(`disabled`,v.launchBusy()!==null),hD(),qm(`size`,14),hD(),bd(` `,lC(53,46,`hosts.request`),` `),hD(2),hS((_=v.launch()[d.host])?54:-1,_)}}function Et(t,i){t&1&&(Sa(0,`ui-empty`,42),aC(1,`t`),aC(2,`t`)),t&2&&qm(`title`,lC(1,2,`empty.noData`))(`hint`,lC(2,4,`empty.noData.hint`))}function Ot(t,i){if(t&1&&dS(0,Et,3,6,`ui-empty`,42),t&2){let e=SS(2);hS(!e.src.error()&&!e.src.loading()?0:-1)}}function Mt(t,i){if(t&1&&(da(0,`li`),Sa(1,`ui-state-badge`,7),da(2,`span`,43)(3,`strong`),qS(4),aC(5,`t`),vd(),da(6,`small`),qS(7),aC(8,`t`),vd()()()),t&2){let e=i.$implicit;hD(4),ey(lC(5,2,e)),hD(3),ey(lC(8,4,`hosts.ops.unsupported`))}}function Nt(t,i){if(t&1&&(da(0,`section`,10)(1,`h2`,11),qS(2),aC(3,`t`),vd(),da(4,`div`,12)(5,`span`,13)(6,`strong`),qS(7),vd(),qS(8),aC(9,`t`),vd(),da(10,`span`,13)(11,`strong`),qS(12),vd(),qS(13),aC(14,`t`),vd(),da(15,`span`,13)(16,`strong`),qS(17),vd(),qS(18),aC(19,`t`),vd()(),dS(20,st,3,6,`p`,14),vd(),da(21,`section`,15),mS(22,Pt,55,48,`article`,16,nt,!1,Ot,1,1),vd(),da(25,`section`,17)(26,`h2`,18),qS(27),aC(28,`t`),vd(),da(29,`ul`,19),mS(30,Mt,9,6,`li`,null,gS),vd()()),t&2){let e,r=SS();hD(2),ey(lC(3,11,`dashboard.inventory`)),hD(5),ey(r.summary().detected),hD(),bd(` `,lC(9,13,`hosts.detected`),` `),hD(4),ey(r.summary().integrated),hD(),bd(` `,lC(14,15,`hosts.installed`),` `),hD(2),Ar(`data-warn`,r.summary().unknown>0||null),hD(2),ey(r.summary().unknown),hD(),bd(` `,lC(19,17,`hosts.auth.unknown`),` `),hD(2),hS((e=r.src.loadedAt())?20:-1,e),hD(2),yS(i),hD(5),ey(lC(28,19,`install.ops.title`)),hD(3),yS(r.capabilities)}}var It=[{id:`detect`,state:`DETECTED`},{id:`install`,state:`INSTALLED`},{id:`configure`,state:`CONFIGURED`},{id:`mcp`,state:`MCP_REGISTERED`},{id:`handshake`,state:`HANDSHAKE_VERIFIED`},{id:`tools`,state:`TOOLS_DISCOVERED`},{id:`exec`,state:`EXECUTION_VERIFIED`}];var wt={DETECTED:0,INSTALLED:1,CONFIGURED:2,MCP_REGISTERED:3,HANDSHAKE_VERIFIED:4,TOOLS_DISCOVERED:5,EXECUTION_VERIFIED:6};var kt=new Set([`INSTALLED`,`CONFIGURED`,`MCP_REGISTERED`,`HANDSHAKE_VERIFIED`,`TOOLS_DISCOVERED`,`EXECUTION_VERIFIED`]);var Y=class t{api=p(g);toast=p(f);src=new l$1;hosts=tn(()=>this.src.data());checks=k({});launch=k({});launchBusy=k(null);copied=k(null);stages=It;capabilities=[`hosts.ops.plan`,`hosts.ops.files`,`hosts.ops.fix`,`hosts.ops.disable`];summary=tn(()=>{let i=this.hosts()??[];return{detected:i.filter(e=>e.detected).length,integrated:i.filter(e=>kt.has(e.integration)).length,unknown:i.filter(e=>e.logged_in===null).length}});constructor(){this.load()}async load(){let i=this.src.data()??[];await this.src.load(()=>this.api.hosts());let e=this.src.data();if(!e)return;let r=this.src.loadedAt()??new Date().toISOString(),_=l({},this.checks());for(let d of e){let v=i.find(tt=>tt.host===d.host),B=v&&v.integration!==d.integration?v.integration:null;_[d.host]={at:r,changed:B!==null,from:B}}this.checks.set(_)}stageIndex(i){return wt[i]??-1}stageState(i,e){let r=this.stageIndex(i.integration);return em(l({},_),{[i.host]:r})),r.command?this.toast.show(`notify.success`,`success`):r.refusal?this.toast.show(r.refusal,`error`):this.toast.show(`hosts.launch.unavailable`,`info`)}catch(e){this.src.error.set(e instanceof n?e:new n(0))}finally{this.launchBusy.set(null)}}}async copyCommand(i,e){try{await navigator.clipboard.writeText(e),this.copied.set(i),this.toast.show(`state.copied`,`success`),setTimeout(()=>{this.copied()===i&&this.copied.set(null)},1600)}catch{this.toast.show(`error.generic`,`error`)}}stamp=y;static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`page-hosts`]],decls:11,vars:15,consts:[[3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[3,`error`],[`role`,`note`,1,`card`,`unverified-panel`],[`role`,`status`,`aria-live`,`polite`,1,`grid`],[3,`retry`,`error`],[`state`,`unverified`],[1,`muted`],[`kind`,`card`],[`aria-labelledby`,`summary-h`,1,`card`,`summary`],[`id`,`summary-h`],[1,`stats`],[1,`stat`],[1,`probe`,`muted`],[1,`grid`],[`data-lift`,``,1,`card`,`host`],[`aria-labelledby`,`caps-h`,1,`card`],[`id`,`caps-h`],[1,`capability`],[1,`card__head`],[`name`,`hosts`,3,`size`],[3,`state`],[1,`lc`],[1,`terminal`],[1,`kv`],[1,`kv__cmd`],[1,`checked`],[1,`row`],[`name`,`terminal`,3,`size`],[1,`outcome`],[`aria-hidden`,`true`,1,`dot`],[`name`,`check`,3,`size`],[`name`,`alert`,3,`size`],[1,`transition`],[`name`,`chevron-right`,3,`size`],[`role`,`alert`,1,`refusal`],[1,`outcome__head`],[1,`outcome__title`],[1,`btn`,`btn--mini`,3,`click`],[3,`name`,`size`],[1,`outcome__cmd`],[`icon`,`hosts`,3,`title`,`hint`],[1,`capability__body`,`muted`]],template:function(e,r){if(e&1&&(da(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),da(3,`button`,1),Ma(`click`,function(){return r.load()}),Sa(4,`ui-icon`,2),qS(5),aC(6,`t`),vd()(),dS(7,at,1,1,`ui-error`,3),dS(8,ot,5,3,`section`,4),dS(9,ct,3,1,`section`,5),dS(10,Nt,32,21)),e&2){let _,d;qm(`title`,lC(1,9,`hosts.title`))(`subtitle`,lC(2,11,`hosts.subtitle`)),hD(3),qm(`disabled`,r.src.loading()),hD(),qm(`size`,15),hD(),bd(` `,lC(6,13,`state.refresh`),` `),hD(2),hS((_=r.src.error())?7:-1,_),hD(),hS(r.src.unavailable()?8:-1),hD(),hS(r.src.loading()&&!r.hosts()?9:-1),hD(),hS((d=r.hosts())?10:-1,d)}},dependencies:[T,I,_,D,cE,k$1,aE],styles:[`.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.card[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em}.card[_ngcontent-%COMP%] > h2[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-3)}.stats[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2)}.stat[_ngcontent-%COMP%]{display:inline-flex;align-items:baseline;gap:6px;padding:var(--%NS%space-2) var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-pill);font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted)}.stat[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{color:var(--%NS%fg);font-size:var(--%NS%font-md)}.stat[data-warn][_ngcontent-%COMP%], .stat[data-warn][_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{color:var(--%NS%warn)}.stat[data-warn][_ngcontent-%COMP%]{border-color:color-mix(in srgb,var(--%NS%warn) 45%,transparent)}.probe[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 0;font-size:var(--%NS%font-xs)}.grid[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-4);grid-template-columns:repeat(auto-fit,minmax(300px,1fr));margin-bottom:var(--%NS%space-4)}.host[data-off][_ngcontent-%COMP%]{filter:grayscale(.6);border-style:dashed}.host[id][_ngcontent-%COMP%]{scroll-margin-top:var(--%NS%space-4)}.host[id][_ngcontent-%COMP%]:target{border-color:var(--%NS%accent-ink);box-shadow:0 0 0 1px var(--%NS%accent)}.card__head[_ngcontent-%COMP%], .outcome__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2)}.card__head[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-3)}.card__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{text-transform:capitalize;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.card__head[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.lc[_ngcontent-%COMP%]{list-style:none;margin:0 0 var(--%NS%space-3);padding:0;display:grid}.lc[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{position:relative;display:flex;align-items:center;gap:var(--%NS%space-2);padding:3px 0;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.lc[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:not(:last-child):after{content:"";position:absolute;left:7px;top:21px;bottom:-3px;width:2px;border-radius:1px;background:var(--%NS%border)}.lc[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{position:relative;display:grid;place-items:center;width:16px;height:16px;flex:none;border-radius:50%;border:1.5px solid var(--%NS%border-strong);background:var(--%NS%bg-elevated)}.lc[_ngcontent-%COMP%] li[data-state=done][_ngcontent-%COMP%], .lc[_ngcontent-%COMP%] li[data-state=active][_ngcontent-%COMP%]{color:var(--%NS%fg)}.lc[_ngcontent-%COMP%] li[data-state=done][_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{background:var(--%NS%ok);border-color:var(--%NS%ok);color:var(--%NS%on-color)}.lc[_ngcontent-%COMP%] li[data-state=done][_ngcontent-%COMP%]:not(:last-child):after{background:var(--%NS%ok)}.lc[_ngcontent-%COMP%] li[data-state=active][_ngcontent-%COMP%]{font-weight:650}.lc[_ngcontent-%COMP%] li[data-state=active][_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{border-color:var(--%NS%accent-ink);box-shadow:0 0 0 3px color-mix(in srgb,var(--%NS%accent) 15%,transparent)}.lc[_ngcontent-%COMP%] li[data-state=warn][_ngcontent-%COMP%], .lc[_ngcontent-%COMP%] li[data-state=error][_ngcontent-%COMP%]{margin-top:2px;font-weight:600}.lc[_ngcontent-%COMP%] li[data-state=warn][_ngcontent-%COMP%]{color:var(--%NS%warn)}.lc[_ngcontent-%COMP%] li[data-state=error][_ngcontent-%COMP%]{color:var(--%NS%error)}.lc[_ngcontent-%COMP%] li[data-state=warn][_ngcontent-%COMP%] .dot[_ngcontent-%COMP%], .lc[_ngcontent-%COMP%] li[data-state=error][_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{color:var(--%NS%on-color)}.lc[_ngcontent-%COMP%] li[data-state=warn][_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{background:var(--%NS%warn);border-color:var(--%NS%warn)}.lc[_ngcontent-%COMP%] li[data-state=error][_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{background:var(--%NS%error);border-color:var(--%NS%error)}.kv[_ngcontent-%COMP%]{display:grid;gap:6px;margin:0 0 var(--%NS%space-3)}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:var(--%NS%space-2)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0}.kv__cmd[_ngcontent-%COMP%] code[_ngcontent-%COMP%], .outcome__cmd[_ngcontent-%COMP%], .refusal[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{font-family:var(--%NS%font-mono);font-size:var(--%NS%font-xs);overflow-wrap:anywhere}.checked[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);flex-wrap:wrap;margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.checked[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%ok)}.transition[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;color:var(--%NS%fg-muted)}.row[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3)}.outcome[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3);padding:var(--%NS%space-3);border:1px solid color-mix(in srgb,var(--%NS%accent) 35%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%accent-bg);display:grid;gap:4px}.outcome[data-kind=refusal][_ngcontent-%COMP%]{border-color:color-mix(in srgb,var(--%NS%warn) 45%,transparent);background:var(--%NS%warn-bg)}.outcome__title[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-xs);font-weight:600;color:var(--%NS%accent-ink);display:inline-flex;align-items:center;gap:6px}.btn--mini[_ngcontent-%COMP%]{padding:2px var(--%NS%space-2);font-size:var(--%NS%font-xs);gap:4px}.outcome__cmd[_ngcontent-%COMP%]{font-size:var(--%NS%font-sm);word-break:break-all}.refusal[_ngcontent-%COMP%]{margin:0}.unverified-panel[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-3)}`]})};export{Y as HostsPage}; \ No newline at end of file diff --git a/portal/assets/chunk-BBusSOqc.js b/portal/assets/chunk-BGgpmc9t.js similarity index 66% rename from portal/assets/chunk-BBusSOqc.js rename to portal/assets/chunk-BGgpmc9t.js index b60990c..c46926d 100644 --- a/portal/assets/chunk-BBusSOqc.js +++ b/portal/assets/chunk-BGgpmc9t.js @@ -1 +1 @@ -import{$ as da,A as TS,At as rn,Et as p,F as Wm,Gt as wS,Lt as tn,M as Ta,Mt as sC,N as Uh,P as WS,Q as cE,Tt as oC,X as bS,Xt as yd,Yt as yc,Z as ba,c as CS,h as Jm,ht as jh,it as ei,kt as rE,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,zt as uS}from"./chunk-BelLryvf.js";function G(t,o){if(t&1){let e=wS();da(0,`div`,0),ba(1,`ui-icon`,1),da(2,`p`,2),WS(3),oC(4,`t`),da(5,`a`,3),WS(6),oC(7,`t`),yd()(),da(8,`button`,4),oC(9,`t`),oC(10,`t`),Ta(`click`,function(){jh(e);let f=bS();return Uh(f.dismiss())}),ba(11,`ui-icon`,5),yd()()}if(t&2){let e=bS();Ar(`data-hint`,e.hintId()),hD(),Wm(`size`,14),hD(2),Dd(` `,sC(4,9,e.textKey()),` `),hD(2),Wm(`routerLink`,`/guide`)(`fragment`,e.hintId()),hD(),Dd(` `,sC(7,11,`hint.more`),` `),hD(2),Wm(`title`,sC(9,13,`hint.dismiss`)),Ar(`aria-label`,sC(10,15,`hint.dismiss`)),hD(3),Wm(`size`,12)}}var v=class t{prefs=p(rE);hintId=rn.required();textKey=tn(()=>`hint.${this.hintId()}`);visible=tn(()=>!this.prefs.isHintDismissed(this.hintId()));dismiss(){this.prefs.dismissHint(this.hintId())}static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`ui-guide-hint`]],inputs:{hintId:[1,`hintId`]},decls:1,vars:1,consts:[[`role`,`note`,1,`hint`],[`name`,`guide`,1,`hint__icon`,3,`size`],[1,`hint__text`],[1,`hint__more`,3,`routerLink`,`fragment`],[`type`,`button`,1,`hint__x`,3,`click`,`title`],[`name`,`close`,3,`size`]],template:function(e,d){e&1&&uS(0,G,12,17,`div`,0),e&2&&fS(d.visible()?0:-1)},dependencies:[yc,cE,aE],styles:[`.hint[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:var(--%NS%space-2);margin-top:var(--%NS%space-2);padding:6px var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%accent) 45%,transparent);border-radius:var(--%NS%radius-md);background:color-mix(in srgb,var(--%NS%accent-bg) 40%,transparent);font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted)}.hint__icon[_ngcontent-%COMP%]{flex:none;margin-top:2px;color:var(--%NS%accent-ink)}.hint__text[_ngcontent-%COMP%]{flex:1;margin:0;min-width:0}.hint__more[_ngcontent-%COMP%]{white-space:nowrap;font-weight:600;text-decoration:none}.hint__more[_ngcontent-%COMP%]:hover{color:var(--%NS%accent-ink);text-decoration:underline}.hint__x[_ngcontent-%COMP%]{flex:none;display:inline-grid;place-items:center;width:20px;height:20px;margin-top:1px;border:0;border-radius:var(--%NS%radius-sm);background:transparent;color:var(--%NS%fg-muted);cursor:pointer;transition:color var(--%NS%motion-fast),background var(--%NS%motion-fast)}.hint__x[_ngcontent-%COMP%]:hover{color:var(--%NS%fg);background:var(--%NS%bg-hover)}.hint__x[_ngcontent-%COMP%]:focus-visible{outline:var(--%NS%fg-focus-width) solid var(--%NS%fg-focus);outline-offset:var(--%NS%fg-focus-offset)}`]})};var j=[`*`];function B(t,o){if(t&1&&(da(0,`p`,4),WS(1),yd()),t&2){let e=bS();hD(),Jm(e.subtitle())}}function K(t,o){t&1&&ba(0,`ui-guide-hint`,6),t&2&&Wm(`hintId`,o)}var T=class t{title=rn.required();subtitle=rn(null);hintId=rn(null);static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`ui-page-header`]],inputs:{title:[1,`title`],subtitle:[1,`subtitle`],hintId:[1,`hintId`]},ngContentSelectors:j,decls:9,vars:3,consts:[[1,`phw`],[1,`ph`],[1,`ph__text`],[1,`ph__title`],[1,`ph__sub`],[1,`ph__actions`],[3,`hintId`]],template:function(e,d){if(e&1&&(CS(),da(0,`div`,0)(1,`header`,1)(2,`div`,2)(3,`h1`,3),WS(4),yd(),uS(5,B,2,1,`p`,4),yd(),da(6,`div`,5),TS(7),yd()(),uS(8,K,1,1,`ui-guide-hint`,6),yd()),e&2){let f;hD(4),Jm(d.title()),hD(),fS(d.subtitle()?5:-1),hD(3),fS((f=d.hintId())?8:-1,f)}},dependencies:[v],styles:[`.phw[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-6)}.ph[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--%NS%space-4)}.ph__title[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-2xl);font-weight:700;letter-spacing:-.02em}.ph__sub[_ngcontent-%COMP%]{margin:4px 0 0;color:var(--%NS%fg-muted);max-width:68ch}.ph__actions[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-2);flex-shrink:0}`]})};export{T as t}; \ No newline at end of file +import{$ as dS,At as qm,Bt as tn,Et as p,F as Sa,J as aC,Jt as vd,L as TS,Mt as rE,P as SS,Pt as rn,Q as cE,S as Ma,Y as aE,Z as bd,at as ey,ct as hD,et as da,i as Ar,it as ei,kt as qS,p as Hh,qt as vc,s as DS,ut as hS,vt as lC,x as MS,z as Vh}from"./chunk-BefGrJ9d.js";function G(t,o){if(t&1){let e=DS();da(0,`div`,0),Sa(1,`ui-icon`,1),da(2,`p`,2),qS(3),aC(4,`t`),da(5,`a`,3),qS(6),aC(7,`t`),vd()(),da(8,`button`,4),aC(9,`t`),aC(10,`t`),Ma(`click`,function(){Hh(e);let f=SS();return Vh(f.dismiss())}),Sa(11,`ui-icon`,5),vd()()}if(t&2){let e=SS();Ar(`data-hint`,e.hintId()),hD(),qm(`size`,14),hD(2),bd(` `,lC(4,9,e.textKey()),` `),hD(2),qm(`routerLink`,`/guide`)(`fragment`,e.hintId()),hD(),bd(` `,lC(7,11,`hint.more`),` `),hD(2),qm(`title`,lC(9,13,`hint.dismiss`)),Ar(`aria-label`,lC(10,15,`hint.dismiss`)),hD(3),qm(`size`,12)}}var v=class t{prefs=p(rE);hintId=rn.required();textKey=tn(()=>`hint.${this.hintId()}`);visible=tn(()=>!this.prefs.isHintDismissed(this.hintId()));dismiss(){this.prefs.dismissHint(this.hintId())}static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`ui-guide-hint`]],inputs:{hintId:[1,`hintId`]},decls:1,vars:1,consts:[[`role`,`note`,1,`hint`],[`name`,`guide`,1,`hint__icon`,3,`size`],[1,`hint__text`],[1,`hint__more`,3,`routerLink`,`fragment`],[`type`,`button`,1,`hint__x`,3,`click`,`title`],[`name`,`close`,3,`size`]],template:function(e,d){e&1&&dS(0,G,12,17,`div`,0),e&2&&hS(d.visible()?0:-1)},dependencies:[vc,cE,aE],styles:[`.hint[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:var(--%NS%space-2);margin-top:var(--%NS%space-2);padding:6px var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%accent) 45%,transparent);border-radius:var(--%NS%radius-md);background:color-mix(in srgb,var(--%NS%accent-bg) 40%,transparent);font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted)}.hint__icon[_ngcontent-%COMP%]{flex:none;margin-top:2px;color:var(--%NS%accent-ink)}.hint__text[_ngcontent-%COMP%]{flex:1;margin:0;min-width:0}.hint__more[_ngcontent-%COMP%]{white-space:nowrap;font-weight:600;text-decoration:none}.hint__more[_ngcontent-%COMP%]:hover{color:var(--%NS%accent-ink);text-decoration:underline}.hint__x[_ngcontent-%COMP%]{flex:none;display:inline-grid;place-items:center;width:20px;height:20px;margin-top:1px;border:0;border-radius:var(--%NS%radius-sm);background:transparent;color:var(--%NS%fg-muted);cursor:pointer;transition:color var(--%NS%motion-fast),background var(--%NS%motion-fast)}.hint__x[_ngcontent-%COMP%]:hover{color:var(--%NS%fg);background:var(--%NS%bg-hover)}.hint__x[_ngcontent-%COMP%]:focus-visible{outline:var(--%NS%fg-focus-width) solid var(--%NS%fg-focus);outline-offset:var(--%NS%fg-focus-offset)}`]})};var j=[`*`];function B(t,o){if(t&1&&(da(0,`p`,4),qS(1),vd()),t&2){let e=SS();hD(),ey(e.subtitle())}}function K(t,o){t&1&&Sa(0,`ui-guide-hint`,6),t&2&&qm(`hintId`,o)}var T=class t{title=rn.required();subtitle=rn(null);hintId=rn(null);static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`ui-page-header`]],inputs:{title:[1,`title`],subtitle:[1,`subtitle`],hintId:[1,`hintId`]},ngContentSelectors:j,decls:9,vars:3,consts:[[1,`phw`],[1,`ph`],[1,`ph__text`],[1,`ph__title`],[1,`ph__sub`],[1,`ph__actions`],[3,`hintId`]],template:function(e,d){if(e&1&&(TS(),da(0,`div`,0)(1,`header`,1)(2,`div`,2)(3,`h1`,3),qS(4),vd(),dS(5,B,2,1,`p`,4),vd(),da(6,`div`,5),MS(7),vd()(),dS(8,K,1,1,`ui-guide-hint`,6),vd()),e&2){let f;hD(4),ey(d.title()),hD(),hS(d.subtitle()?5:-1),hD(3),hS((f=d.hintId())?8:-1,f)}},dependencies:[v],styles:[`.phw[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-6)}.ph[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--%NS%space-4)}.ph__title[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-2xl);font-weight:700;letter-spacing:-.02em}.ph__sub[_ngcontent-%COMP%]{margin:4px 0 0;color:var(--%NS%fg-muted);max-width:68ch}.ph__actions[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-2);flex-shrink:0}`]})};export{T as t}; \ No newline at end of file diff --git a/portal/assets/chunk-BKRLVsID.js b/portal/assets/chunk-BKRLVsID.js deleted file mode 100644 index b31765d..0000000 --- a/portal/assets/chunk-BKRLVsID.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as da,A as TS,At as rn,F as Wm,P as WS,Q as cE,X as bS,Xt as yd,Z as ba,c as CS,h as Jm,it as ei,ot as fS,ut as hD,zt as uS}from"./chunk-BelLryvf.js";var b=[`*`];function f(t,d){if(t&1&&(da(0,`p`,4),WS(1),yd()),t&2){let e=bS();hD(),Jm(e.hint())}}var _=class t{title=rn.required();hint=rn(null);icon=rn(`inbox`);static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`ui-empty`]],inputs:{title:[1,`title`],hint:[1,`hint`],icon:[1,`icon`]},ngContentSelectors:b,decls:7,vars:4,consts:[[`role`,`note`,1,`empty`],[`aria-hidden`,`true`,1,`empty__glyph`],[3,`name`,`size`],[1,`empty__title`],[1,`empty__hint`]],template:function(e,o){e&1&&(CS(),da(0,`div`,0)(1,`div`,1),ba(2,`ui-icon`,2),yd(),da(3,`p`,3),WS(4),yd(),uS(5,f,2,1,`p`,4),TS(6),yd()),e&2&&(hD(2),Wm(`name`,o.icon())(`size`,22),hD(2),Jm(o.title()),hD(),fS(o.hint()?5:-1))},dependencies:[cE],styles:[`.empty[_ngcontent-%COMP%]{display:grid;place-items:center;gap:var(--%NS%space-2);padding:var(--%NS%space-8) var(--%NS%space-6);border:1px dashed var(--%NS%border);border-radius:var(--%NS%radius-lg);color:var(--%NS%fg-muted);text-align:center;background:color-mix(in srgb,var(--%NS%bg-hover) 45%,transparent)}.empty__glyph[_ngcontent-%COMP%]{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;margin-bottom:var(--%NS%space-1);color:var(--%NS%accent-ink);background:var(--%NS%accent-bg);border:1px solid color-mix(in srgb,var(--%NS%accent) 30%,transparent)}.empty__title[_ngcontent-%COMP%]{font-weight:600;color:var(--%NS%fg);margin:0}.empty__hint[_ngcontent-%COMP%]{font-size:var(--%NS%font-sm);margin:0;max-width:46ch}`]})};export{_ as t}; \ No newline at end of file diff --git a/portal/assets/chunk-0WpwvubF.js b/portal/assets/chunk-BNDlNg-C.js similarity index 94% rename from portal/assets/chunk-0WpwvubF.js rename to portal/assets/chunk-BNDlNg-C.js index 5b75d60..d81ea13 100644 --- a/portal/assets/chunk-0WpwvubF.js +++ b/portal/assets/chunk-BNDlNg-C.js @@ -1 +1 @@ -import{dt as hE,gt as k$1,t as $}from"./chunk-BelLryvf.js";import{i as n}from"./main-A2NKRJGT.js";function c(e){return e instanceof n?e:new n(0)}function g(e){return e.status===404||e.body.code===`PORTAL-NOT-FOUND`}var l=class{data=k$1(null);error=k$1(null);unavailable=k$1(!1);loading=k$1(!1);attempted=k$1(!1);loadedAt=k$1(null);async load(r){this.loading.set(!0),this.error.set(null),this.unavailable.set(!1);try{this.data.set(await hE(r())),this.loadedAt.set(new Date().toISOString())}catch(n){let i=c(n);g(i)?this.unavailable.set(!0):this.error.set(i)}finally{this.loading.set(!1),this.attempted.set(!0)}}};function y(e){let r=new Date(e);return Number.isNaN(r.getTime())?e:r.toLocaleTimeString()}var p=[`version`,`revision`,`ref`,`release`];function f(e){for(let r of p){let n=e[r];if(typeof n==`string`&&n.trim())return n;if(typeof n==`number`)return String(n)}return null}function w(e,r,n){let i=[],a=new Set;e&&(a.add(e.forge_id),i.push({id:e.forge_id,serving:!0,registryOnly:!1,name:e.forge_name,cli:e.cli,state:r?.state,version:e.forge_version,checkout:void 0,mcp:void 0,specialist:null}));for(let t of n?.specialists??[])a.add(t.provider),i.push({id:t.provider,serving:!1,registryOnly:!1,name:null,cli:t.cli??null,state:t.state??t.status,version:f(t),checkout:t.checkout,mcp:t.mcp,specialist:t});for(let t of n?.installed_forges??[])a.has(t)||(a.add(t),i.push({id:t,serving:!1,registryOnly:!0,name:null,cli:null,state:void 0,version:null,checkout:void 0,mcp:void 0,specialist:null}));return i}function k(){return[{id:`skills`,icon:`skills`,labelKey:`skills.title`,endpoint:`GET /api/v1/skills`,route:`/skills`,src:new l},{id:`agents`,icon:`agents`,labelKey:`agents.title`,endpoint:`GET /api/v1/agents`,route:`/agents`,src:new l},{id:`mcp`,icon:`mcp`,labelKey:`mcp.title`,endpoint:`GET /api/v1/mcp/servers`,route:`/mcp`,src:new l},{id:`hosts`,icon:`hosts`,labelKey:`hosts.title`,endpoint:`GET /api/v1/hosts`,route:`/hosts`,src:new l}]}function T(e,r){switch(r){case`skills`:return e.skills().pipe($(n=>n.length));case`agents`:return e.agents().pipe($(n=>n.length));case`mcp`:return e.mcpServers().pipe($(n=>n.length));case`hosts`:return e.hosts().pipe($(n=>n.length))}}export{l as a,k as i,c as n,w as o,f as r,y as s,T as t}; \ No newline at end of file +import{gt as k$1,lt as hE,t as $}from"./chunk-BefGrJ9d.js";import{i as n}from"./main-XW2ZMSO5.js";function c(e){return e instanceof n?e:new n(0)}function g(e){return e.status===404||e.body.code===`PORTAL-NOT-FOUND`}var l=class{data=k$1(null);error=k$1(null);unavailable=k$1(!1);loading=k$1(!1);attempted=k$1(!1);loadedAt=k$1(null);async load(r){this.loading.set(!0),this.error.set(null),this.unavailable.set(!1);try{this.data.set(await hE(r())),this.loadedAt.set(new Date().toISOString())}catch(n){let i=c(n);g(i)?this.unavailable.set(!0):this.error.set(i)}finally{this.loading.set(!1),this.attempted.set(!0)}}};function y(e){let r=new Date(e);return Number.isNaN(r.getTime())?e:r.toLocaleTimeString()}var p=[`version`,`revision`,`ref`,`release`];function f(e){for(let r of p){let n=e[r];if(typeof n==`string`&&n.trim())return n;if(typeof n==`number`)return String(n)}return null}function w(e,r,n){let i=[],a=new Set;e&&(a.add(e.forge_id),i.push({id:e.forge_id,serving:!0,registryOnly:!1,name:e.forge_name,cli:e.cli,state:r?.state,version:e.forge_version,checkout:void 0,mcp:void 0,specialist:null}));for(let t of n?.specialists??[])a.add(t.provider),i.push({id:t.provider,serving:!1,registryOnly:!1,name:null,cli:t.cli??null,state:t.state??t.status,version:f(t),checkout:t.checkout,mcp:t.mcp,specialist:t});for(let t of n?.installed_forges??[])a.has(t)||(a.add(t),i.push({id:t,serving:!1,registryOnly:!0,name:null,cli:null,state:void 0,version:null,checkout:void 0,mcp:void 0,specialist:null}));return i}function k(){return[{id:`skills`,icon:`skills`,labelKey:`skills.title`,endpoint:`GET /api/v1/skills`,route:`/skills`,src:new l},{id:`agents`,icon:`agents`,labelKey:`agents.title`,endpoint:`GET /api/v1/agents`,route:`/agents`,src:new l},{id:`mcp`,icon:`mcp`,labelKey:`mcp.title`,endpoint:`GET /api/v1/mcp/servers`,route:`/mcp`,src:new l},{id:`hosts`,icon:`hosts`,labelKey:`hosts.title`,endpoint:`GET /api/v1/hosts`,route:`/hosts`,src:new l}]}function T(e,r){switch(r){case`skills`:return e.skills().pipe($(n=>n.length));case`agents`:return e.agents().pipe($(n=>n.length));case`mcp`:return e.mcpServers().pipe($(n=>n.length));case`hosts`:return e.hosts().pipe($(n=>n.length))}}export{l as a,k as i,c as n,w as o,f as r,y as s,T as t}; \ No newline at end of file diff --git a/portal/assets/chunk-BOg-dd4X.js b/portal/assets/chunk-BOg-dd4X.js deleted file mode 100644 index e775da6..0000000 --- a/portal/assets/chunk-BOg-dd4X.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as da,At as rn,B as ZS,Dt as pS,Et as p,F as Wm,Gt as wS,Lt as tn,M as Ta,Mt as sC,N as Uh,P as WS,Pt as tC,Q as cE,S as Oo,Tt as oC,X as bS,Xt as yd,Yt as yc,Z as ba,ct as gS,dt as hE,gt as k,h as Jm,ht as jh,it as ei,jt as ry,kt as rE,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,wt as ny,xt as nC,yt as mS,zt as uS}from"./chunk-BelLryvf.js";import{i as n,r as g,t as g$1}from"./main-A2NKRJGT.js";import{t as _}from"./chunk-BKRLVsID.js";import{t as D}from"./chunk-CiuPOfJ0.js";import{n as k$1,t as I}from"./chunk-D2KAfPv6.js";import{t as T}from"./chunk-BBusSOqc.js";import{t as h}from"./chunk-D34eMkm4.js";function F(e){return e.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().replace(/[^a-z0-9]+/g,` `).trim()}function de(e){let i=new Set;if(!e)return i;for(let t of F(e).split(/[^a-z0-9]+/))t&&i.add(t);return i}function se(e,i){if(e.size===0||i.size===0)return null;let t=0;for(let p of e)i.has(p)&&t++;let a=e.size+i.size-t;return a===0?null:t/a}function pe(e){return{entry:e,key:F(e.name||e.id),origin:e.origin?F(e.origin):null,version:e.version?F(e.version):null,desc:de(e.description)}}function ce(e,i,t){let a=[],p=se(e.desc,i.desc),m=e.origin!==null&&i.origin!==null&&e.origin===i.origin,f=e.origin!==null&&i.origin!==null&&e.origin!==i.origin,k=e.version!==null&&i.version!==null&&e.version!==i.version,y=p!==null&&p>=t,I;return m&&!k||y?(I=`possible-duplicate`,m&&a.push(`same origin (${e.origin})`),e.version!==null&&i.version!==null&&e.version===i.version&&a.push(`same version (${e.version})`),(e.version===null||i.version===null)&&a.push(`version unverified`),y&&a.push(`description similarity ${p.toFixed(2)} >= ${t}`),f&&a.push(`origins differ (${e.origin} vs ${i.origin})`),k&&a.push(`versions differ (${e.version} vs ${i.version})`)):(I=`same-name-different-entity`,f&&a.push(`different origins (${e.origin} vs ${i.origin})`),k&&a.push(`different versions (${e.version} vs ${i.version})`),p!==null?a.push(`description similarity ${p.toFixed(2)} < ${t}`):a.push(`description unverified — similarity not measurable`),!m&&!f&&a.push(`origin unverified`)),{a:e.entry.id,b:i.entry.id,verdict:I,reasons:a,similarity:p}}function ne(e,i=.8){let t=new Map;for(let p of e){let m=pe(p),f=m.key;if(!f)continue;let k=t.get(f);k?k.push(m):t.set(f,[m])}let a=[];for(let[p,m]of t){if(m.length<2)continue;let f=[];for(let y=0;yy.verdict===`possible-duplicate`)?`possible-duplicate`:`same-name-different-entity`;a.push({key:p,entries:m.map(y=>y.entry),kind:k,pairs:f})}return a}var me=()=>[`/agents`];var ue=e=>({q:e});var le=()=>[`/hosts`];var oe=(e,i)=>i.id;var _e=(e,i)=>i.key;var ge=(e,i)=>i.a+`|`+i.b;function fe(e,i){if(e&1){let t=wS();da(0,`ui-error`,6),Ta(`retry`,function(){jh(t);let p=bS();return Uh(p.load())}),yd()}e&2&&Wm(`error`,i)}function ye(e,i){e&1&&(da(0,`div`,4),oC(1,`t`),ba(2,`ui-skeleton`,7),yd()),e&2&&(Ar(`aria-label`,sC(1,2,`state.loading`)),hD(2),Wm(`lines`,2))}function ve(e,i){if(e&1){let t=wS();da(0,`button`,9),Ta(`click`,function(){let p=jh(t).$implicit,m=bS(2);return Uh(m.toggleDomain(p))}),WS(1),yd()}if(e&2){let t=i.$implicit,a=bS(2);Ar(`data-tone`,a.domain()===t?`accent`:null)(`aria-pressed`,a.domain()===t),hD(),Dd(` `,t,` `)}}function xe(e,i){if(e&1){let t=wS();da(0,`button`,25),Ta(`click`,function(){let p=jh(t).$implicit,m=bS(4);return Uh(m.pick(p.id))}),WS(1),yd()}if(e&2){let t=i.$implicit;hD(),Dd(` `,t.name||t.id,` `)}}function Se(e,i){if(e&1&&(da(0,`li`)(1,`code`),WS(2),yd(),WS(3,` ↔ `),da(4,`code`),WS(5),yd(),WS(6),yd()),e&2){let t=i.$implicit;hD(2),Jm(t.a),hD(3),Jm(t.b),hD(),Dd(` — `,t.reasons.join(`; `),` `)}}function ke(e,i){if(e&1&&(da(0,`li`),ba(1,`ui-state-badge`,21),oC(2,`t`),da(3,`span`,22),gS(4,xe,2,1,`button`,23,oe),yd(),da(6,`ul`,24),gS(7,Se,7,3,`li`,null,ge),yd()()),e&2){let t=i.$implicit;hD(),Wm(`state`,t.kind===`possible-duplicate`?`unverified`:`warn`)(`labelOverride`,sC(2,2,t.kind===`possible-duplicate`?`skills.dedup.possible`:`skills.dedup.different`)),hD(3),mS(t.entries),hD(3),mS(t.pairs)}}function Ce(e,i){if(e&1&&(da(0,`section`,11)(1,`header`,17)(2,`h2`),ba(3,`ui-icon`,18),WS(4),oC(5,`t`),yd(),da(6,`span`,19),WS(7),oC(8,`t`),yd()(),da(9,`ul`,20),gS(10,ke,9,4,`li`,null,_e),yd()()),e&2){let t=bS(2);hD(3),Wm(`size`,15),hD(),Jm(sC(5,3,`skills.dedup.title`)),hD(3),Jm(sC(8,5,`skills.dedup.hint`)),hD(3),mS(t.findings())}}function be(e,i){if(e&1&&(WS(0),da(1,`code`),WS(2),yd(),da(3,`span`,36),WS(4),oC(5,`t`),yd()),e&2){let t=i;Dd(` `,t.forge_name,` `),hD(2),Dd(`(`,t.forge_id,`)`),hD(2),Jm(sC(5,3,`explorer.serving`))}}function he(e,i){e&1&&ba(0,`ui-state-badge`,33)}function Pe(e,i){if(e&1&&(da(0,`a`,37),WS(1),yd()),e&2){let t=i.$implicit;Wm(`routerLink`,tC(3,le))(`fragment`,`host-`+t),hD(),Jm(t)}}function Ee(e,i){if(e&1&&(da(0,`span`,34),gS(1,Pe,2,4,`a`,37,pS),yd()),e&2){let t=bS();hD(),mS(t.hosts)}}function Ie(e,i){e&1&&ba(0,`ui-state-badge`,33)}function Te(e,i){if(e&1&&(da(0,`span`,19),WS(1),yd()),e&2){let t=bS();hD(),Dd(` · `,t.source)}}function De(e,i){if(e&1){let t=wS();da(0,`section`,12)(1,`header`,26)(2,`h2`),ba(3,`ui-icon`,27),WS(4),yd(),da(5,`span`,28)(6,`a`,29),WS(7),oC(8,`t`),ba(9,`ui-icon`,30),yd(),da(10,`button`,31),oC(11,`t`),Ta(`click`,function(){jh(t);let p=bS(2);return Uh(p.selected.set(null))}),ba(12,`ui-icon`,30),yd()()(),da(13,`dl`,32)(14,`div`)(15,`dt`),WS(16),oC(17,`t`),yd(),da(18,`dd`)(19,`code`),WS(20),yd()()(),da(21,`div`)(22,`dt`),WS(23),oC(24,`t`),yd(),da(25,`dd`),WS(26),oC(27,`t`),yd()(),da(28,`div`)(29,`dt`),WS(30),oC(31,`t`),yd(),da(32,`dd`),WS(33),oC(34,`t`),yd()(),da(35,`div`)(36,`dt`),WS(37),oC(38,`t`),yd(),da(39,`dd`),ba(40,`ui-state-badge`,21),yd()(),da(41,`div`)(42,`dt`),WS(43),oC(44,`t`),yd(),da(45,`dd`),uS(46,be,6,5)(47,he,1,0,`ui-state-badge`,33),yd()(),da(48,`div`)(49,`dt`),WS(50),oC(51,`t`),yd(),da(52,`dd`),uS(53,Ee,3,0,`span`,34)(54,Ie,1,0,`ui-state-badge`,33),yd()(),da(55,`div`)(56,`dt`),WS(57),oC(58,`t`),yd(),da(59,`dd`,35),ba(60,`ui-state-badge`,33),da(61,`small`,19),WS(62),oC(63,`t`),yd()()(),da(64,`div`)(65,`dt`),WS(66),oC(67,`t`),yd(),da(68,`dd`,35),ba(69,`ui-state-badge`,33),da(70,`small`,19),WS(71),oC(72,`t`),yd()()(),da(73,`div`)(74,`dt`),WS(75),oC(76,`t`),yd(),da(77,`dd`,35),ba(78,`ui-state-badge`,33),da(79,`small`,19),WS(80),oC(81,`t`),yd()()(),da(82,`div`)(83,`dt`),WS(84),oC(85,`t`),yd(),da(86,`dd`,35),ba(87,`ui-state-badge`,33),da(88,`small`,19),WS(89),oC(90,`t`),yd()()(),da(91,`div`)(92,`dt`),WS(93),oC(94,`t`),yd(),da(95,`dd`,35),ba(96,`ui-state-badge`,33),da(97,`small`,19),WS(98),oC(99,`t`),yd()()(),da(100,`div`)(101,`dt`),WS(102),oC(103,`t`),yd(),da(104,`dd`)(105,`code`),WS(106,`GET /api/v1/skills`),yd(),uS(107,Te,2,1,`span`,19),yd()()()()}if(e&2){let t,a=i,p=bS(2);hD(3),Wm(`size`,15),hD(),Jm(a.name||a.id),hD(2),Wm(`routerLink`,tC(75,me))(`queryParams`,nC(76,ue,a.name||a.id)),hD(),Dd(` `,sC(8,33,`skills.agentsLink`),` `),hD(2),Wm(`size`,13),hD(),Ar(`aria-label`,sC(11,35,`state.close`)),hD(2),Wm(`size`,14),hD(4),Jm(sC(17,37,`table.id`)),hD(4),Jm(a.id),hD(3),Jm(sC(24,39,`skills.domain`)),hD(3),Jm(a.domain??sC(27,41,`state.absent`)),hD(4),Jm(sC(31,43,`skills.detail.description`)),hD(3),Jm(a.description||sC(34,45,`state.absent`)),hD(4),Jm(sC(38,47,`skills.state`)),hD(3),Wm(`state`,p.mapState(a.state))(`labelOverride`,a.state),hD(3),Jm(sC(44,49,`skills.origin`)),hD(3),fS((t=p.store.descriptor())?46:47,t),hD(4),Jm(sC(51,51,`skills.compatibility`)),hD(3),fS(a.hosts.length?53:54),hD(4),Jm(sC(58,53,`settings.version`)),hD(5),Jm(sC(63,55,`skills.notExposed`)),hD(4),Jm(sC(67,57,`skills.prerequisites`)),hD(5),Jm(sC(72,59,`skills.notExposed`)),hD(4),Jm(sC(76,61,`skills.fileValidation`)),hD(5),Jm(sC(81,63,`skills.notExposed`)),hD(4),Jm(sC(85,65,`skills.deps`)),hD(5),Jm(sC(90,67,`skills.notExposed`)),hD(4),Jm(sC(94,69,`skills.actions`)),hD(5),Jm(sC(99,71,`skills.actionsUnverified`)),hD(4),Jm(sC(103,73,`skills.evidence`)),hD(5),fS(a.source?107:-1)}}function Me(e,i){if(e&1&&(da(0,`a`,39),WS(1),yd(),WS(2)),e&2){let t=i.$implicit,a=i.$index,p=i.$count;Wm(`routerLink`,tC(4,le))(`fragment`,`host-`+t),hD(),Jm(t),hD(),Dd(``,a===p-1?``:`, `,` `)}}function Oe(e,i){if(e&1&&gS(0,Me,3,5,null,null,pS),e&2){let t=bS().$implicit;mS(t.hosts)}}function we(e,i){e&1&&ba(0,`ui-state-badge`,33)}function Ne(e,i){if(e&1){let t=wS();da(0,`tr`)(1,`td`)(2,`strong`),WS(3),yd(),da(4,`code`,38),WS(5),yd(),da(6,`p`,19),WS(7),yd()(),da(8,`td`),WS(9),yd(),da(10,`td`),ba(11,`ui-state-badge`,21),yd(),da(12,`td`),uS(13,Oe,2,0)(14,we,1,0,`ui-state-badge`,33),yd(),da(15,`td`)(16,`button`,31),oC(17,`t`),Ta(`click`,function(){let p=jh(t).$implicit,m=bS(2);return Uh(m.selected.set(p))}),ba(18,`ui-icon`,30),yd()()()}if(e&2){let t=i.$implicit,a=bS(2);Ar(`data-dup`,a.dupIds().has(t.id)||null),hD(3),Jm(t.name||t.id),hD(2),Jm(t.id),hD(2),Jm(t.description),hD(2),Jm(t.domain??`—`),hD(2),Wm(`state`,a.mapState(t.state))(`labelOverride`,t.state),hD(2),fS(t.hosts.length?13:14),hD(3),Ar(`aria-label`,sC(17,10,`state.viewDetails`)),hD(2),Wm(`size`,15)}}function Be(e,i){e&1&&(da(0,`tr`)(1,`td`,40),ba(2,`ui-empty`,5),oC(3,`t`),yd()()),e&2&&(hD(2),Wm(`title`,sC(3,1,`skills.empty`)))}function Fe(e,i){if(e&1&&uS(0,Be,4,3,`tr`),e&2){let t=bS(2);fS(t.loading()?-1:0)}}function $e(e,i){if(e&1){let t=wS();da(0,`ui-filter-bar`,8),ry(`queryChange`,function(p){jh(t);let m=bS();return ZS(m.query,p)||(m.query=p),Uh(p)}),da(1,`button`,9),Ta(`click`,function(){jh(t);let p=bS();return Uh(p.domain.set(null))}),WS(2),oC(3,`t`),yd(),gS(4,ve,2,3,`button`,10,pS),yd(),uS(6,Ce,12,7,`section`,11),uS(7,De,108,78,`section`,12),da(8,`div`,13)(9,`table`,14)(10,`thead`)(11,`tr`)(12,`th`,15),WS(13),oC(14,`t`),yd(),da(15,`th`,15),WS(16),oC(17,`t`),yd(),da(18,`th`,15),WS(19),oC(20,`t`),yd(),da(21,`th`,15),WS(22),oC(23,`t`),yd(),da(24,`th`,15)(25,`span`,16),WS(26),oC(27,`t`),yd()()()(),da(28,`tbody`),gS(29,Ne,19,12,`tr`,null,oe,!1,Fe,1,1),yd()()()}if(e&2){let t,a=bS();ny(`query`,a.query),hD(),Ar(`data-tone`,a.domain()===null?`accent`:null)(`aria-pressed`,a.domain()===null),hD(),Dd(` `,sC(3,12,`state.all`),` `),hD(2),mS(a.domainOptions()),hD(2),fS(a.findings().length?6:-1),hD(),fS((t=a.selected())?7:-1,t),hD(6),Jm(sC(14,14,`table.id`)),hD(3),Jm(sC(17,16,`skills.domain`)),hD(3),Jm(sC(20,18,`skills.state`)),hD(3),Jm(sC(23,20,`skills.hosts`)),hD(4),Jm(sC(27,22,`state.viewDetails`)),hD(3),mS(a.filtered())}}function ze(e,i){e&1&&(ba(0,`ui-empty`,5),oC(1,`t`)),e&2&&Wm(`title`,sC(1,1,`skills.none`))}var ae=e=>e.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().trim();var re=class e{api=p(g);store=p(g$1);prefs=p(rE);q=rn(``);skills=k([]);error=k(null);query=k(``);domain=k(null);selected=k(null);loading=k(!0);domainOptions=tn(()=>{let i=new Set;for(let t of this.skills())t.domain&&i.add(t.domain);return[...i].sort()});filtered=tn(()=>{let i=ae(this.query()),t=this.domain();return this.skills().filter(a=>t!==null&&a.domain!==t?!1:i?[a.id,a.name,a.domain??``,a.description,...a.hosts].map(ae).join(` `).includes(i):!0)});findings=tn(()=>ne(this.skills().map(i=>({id:i.id,name:i.name||i.id,origin:this.store.descriptor()?.forge_id??null,version:null,description:i.description}))));dupIds=tn(()=>{let i=new Set;for(let t of this.findings())for(let a of t.entries)i.add(a.id);return i});constructor(){Oo(()=>this.prefs.setFilter(`skills`,this.query())),this.load()}ngOnInit(){let i=this.q();if(i)this.query.set(i);else{let t=this.prefs.filterFor(`skills`);t&&this.query.set(t)}}async load(){this.error.set(null),this.loading.set(!0);try{this.skills.set(await hE(this.api.skills()))}catch(i){this.error.set(i instanceof n?i:new n(0))}finally{this.loading.set(!1)}}toggleDomain(i){this.domain.set(this.domain()===i?null:i)}pick(i){let t=this.skills().find(a=>a.id===i);t&&this.selected.set(t)}mapState(i){return[`invoked`,`available`,`installed`,`registered`].includes(i)?`supported`:i===`unverified`?`unverified`:`not_applicable`}static ɵfac=function(t){return new(t||e)};static ɵcmp=ei({type:e,selectors:[[`page-skills`]],inputs:{q:[1,`q`]},decls:11,vars:13,consts:[[`hintId`,`skill`,3,`title`,`subtitle`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[3,`error`],[`role`,`status`],[`icon`,`skills`,3,`title`],[3,`retry`,`error`],[`kind`,`card`,3,`lines`],[`placeholder`,`skills.search`,3,`queryChange`,`query`],[`type`,`button`,1,`fg-pill`,3,`click`],[`type`,`button`,1,`fg-pill`],[`data-section`,`dedup`,1,`card`,`dedup`],[`data-section`,`skill-detail`,`aria-live`,`polite`,1,`card`,`detail`,`fg-enter`],[1,`card`,`card--table`],[1,`table`],[`scope`,`col`],[1,`sr-only`],[1,`dedup__head`],[`name`,`diff`,3,`size`],[1,`muted`],[1,`dedup__list`],[3,`state`,`labelOverride`],[1,`dedup__names`],[`type`,`button`,1,`chip-link`],[1,`dedup__reasons`],[`type`,`button`,1,`chip-link`,3,`click`],[1,`detail__head`],[`name`,`skills`,3,`size`],[1,`detail__actions`],[`data-action`,`declaring-agents`,1,`btn`,`btn--mini`,3,`routerLink`,`queryParams`],[`name`,`chevron-right`,3,`size`],[1,`icon-btn`,3,`click`],[1,`kv`],[`state`,`UNVERIFIED`],[1,`links`],[1,`unv-cell`],[1,`chip`],[1,`chip-link`,3,`routerLink`,`fragment`],[1,`slug`],[1,`linklike`,3,`routerLink`,`fragment`],[`colspan`,`5`]],template:function(t,a){if(t&1&&(da(0,`ui-page-header`,0),oC(1,`t`),oC(2,`t`),da(3,`button`,1),Ta(`click`,function(){return a.load()}),ba(4,`ui-icon`,2),WS(5),oC(6,`t`),yd()(),uS(7,fe,1,1,`ui-error`,3),uS(8,ye,3,4,`div`,4),uS(9,$e,32,24)(10,ze,2,3,`ui-empty`,5)),t&2){let p;Wm(`title`,sC(1,7,`skills.title`))(`subtitle`,sC(2,9,`skills.subtitle`)),hD(4),Wm(`size`,15),hD(),Dd(` `,sC(6,11,`state.refresh`),` `),hD(2),fS((p=a.error())?7:-1,p),hD(),fS(a.loading()?8:-1),hD(),fS(a.skills().length?9:!a.error()&&!a.loading()?10:-1)}},dependencies:[yc,T,I,_,D,cE,k$1,h,aE],styles:[`.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);margin:4px 0 0;font-size:var(--%NS%font-sm)}.slug[_ngcontent-%COMP%]{display:block;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.card--table[_ngcontent-%COMP%]{padding:var(--%NS%space-3);overflow-x:auto}.card--table[_ngcontent-%COMP%] .table[_ngcontent-%COMP%]{min-width:560px}tr[data-dup][_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{border-left:3px solid var(--%NS%warn)}.dedup[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);border-left:3px solid var(--%NS%warn)}.dedup__head[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3);flex-wrap:wrap;margin-bottom:var(--%NS%space-2)}.dedup__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.dedup__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%warn)}.dedup__list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:var(--%NS%space-3)}.dedup__list[_ngcontent-%COMP%] > li[_ngcontent-%COMP%]{display:grid;gap:4px}.dedup__names[_ngcontent-%COMP%]{display:inline-flex;flex-wrap:wrap;gap:4px}.dedup__reasons[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);display:grid;gap:2px}.detail[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);border-left:3px solid var(--%NS%accent)}.detail__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.detail__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.detail__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.detail__actions[_ngcontent-%COMP%], .links[_ngcontent-%COMP%]{display:inline-flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-2)}.detail__actions[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{text-decoration:none}.kv[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin:0}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{min-width:9rem;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm);flex:none}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;min-width:0}.unv-cell[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}.chip[_ngcontent-%COMP%]{margin-left:4px}`]})};export{re as SkillsPage}; \ No newline at end of file diff --git a/portal/assets/chunk-BUdnTjRC.js b/portal/assets/chunk-BUdnTjRC.js deleted file mode 100644 index f61cbde..0000000 --- a/portal/assets/chunk-BUdnTjRC.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as da,C as Ot,Dt as pS,Et as p,F as Wm,Gt as wS,K as aC,Lt as tn,M as Ta,Mt as sC,N as Uh,P as WS,Q as cE,Tt as oC,V as _S,X as bS,Xt as yd,Yt as yc,Z as ba,_t as kU,at as ey,ct as gS,gt as k,h as Jm,ht as jh,it as ei,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,xt as nC,yt as mS,z as Ym,zt as uS}from"./chunk-BelLryvf.js";import{a as w$1,r as g,t as g$1}from"./main-A2NKRJGT.js";import{a as l,r as f,s as y}from"./chunk-0WpwvubF.js";import{t as _}from"./chunk-BKRLVsID.js";import{t as D}from"./chunk-CiuPOfJ0.js";import{n as k$1,t as I}from"./chunk-D2KAfPv6.js";import{t as T}from"./chunk-BBusSOqc.js";import{t as F}from"./chunk-DQvfYR07.js";var te=e=>({time:e});var w=(e,o)=>o.id;function ie(e,o){if(e&1&&(da(0,`dl`,9)(1,`div`)(2,`dt`),WS(3),oC(4,`t`),yd(),da(5,`dd`),WS(6),da(7,`code`),WS(8),yd()()(),da(9,`div`)(10,`dt`),WS(11),oC(12,`t`),yd(),da(13,`dd`)(14,`code`),WS(15),yd()()(),da(16,`div`)(17,`dt`),WS(18),oC(19,`t`),yd(),da(20,`dd`),WS(21),yd()(),da(22,`div`)(23,`dt`),WS(24),oC(25,`t`),yd(),da(26,`dd`),WS(27),yd()(),da(28,`div`)(29,`dt`),WS(30),oC(31,`t`),yd(),da(32,`dd`),WS(33),oC(34,`t`),yd()(),da(35,`div`)(36,`dt`),WS(37),oC(38,`t`),yd(),da(39,`dd`,16),WS(40),oC(41,`t`),yd()()()),e&2){let n=o;hD(3),Jm(sC(4,13,`settings.forge`)),hD(3),Dd(` `,n.forge_name,` `),hD(2),Dd(`(`,n.forge_id,`)`),hD(3),Jm(sC(12,15,`settings.cli`)),hD(4),Jm(n.cli),hD(3),Jm(sC(19,17,`settings.version`)),hD(3),Jm(n.forge_version),hD(3),Jm(sC(25,19,`settings.portalVersion`)),hD(3),Jm(n.portal_version),hD(3),Jm(sC(31,21,`settings.federated`)),hD(3),Jm(sC(34,23,n.federated?`state.yes`:`state.no`)),hD(4),Jm(sC(38,25,`dashboard.workspace`)),hD(3),Jm(n.workspace?.root??sC(41,27,`dashboard.noWorkspace`))}}function ne(e,o){e&1&&(da(0,`div`,10),ba(1,`ui-state-badge`,17),da(2,`span`),WS(3),oC(4,`t`),yd()()),e&2&&(hD(3),Jm(sC(4,1,`empty.noData.hint`)))}function ae(e,o){if(e&1&&(da(0,`span`),WS(1),oC(2,`t`),yd()),e&2){let n=bS(2);hD(),Dd(` · `,aC(2,1,`common.updatedAt`,nC(4,te,n.stamp(o))))}}function oe(e,o){if(e&1&&(da(0,`span`,20),WS(1),yd()),e&2){let n=bS();hD(),Jm(n.updated_at)}}function le(e,o){if(e&1&&(da(0,`small`,20),WS(1),yd()),e&2){let n=bS().$implicit;hD(),Jm(n.detail)}}function de(e,o){if(e&1&&(da(0,`li`),ba(1,`ui-state-badge`,22),uS(2,le,2,1,`small`,20),yd()),e&2){let n=o.$implicit;hD(),Wm(`state`,n.state||`UNVERIFIED`)(`labelOverride`,n.id),hD(),fS(n.detail?2:-1)}}function re(e,o){if(e&1&&(da(0,`ul`,21),gS(1,de,3,3,`li`,null,w),yd()),e&2){let n=bS();hD(),mS(n.checks)}}function pe(e,o){if(e&1&&(da(0,`p`,18),ba(1,`ui-state-badge`,19),da(2,`span`,20),WS(3),oC(4,`t`),oC(5,`t`),yd(),uS(6,oe,2,1,`span`,20),yd(),uS(7,re,3,0,`ul`,21)),e&2){let n=o;hD(),Wm(`state`,n.state||`UNVERIFIED`),hD(2),ey(``,sC(4,5,`dashboard.profile`),`: `,n.profile??sC(5,7,`state.none`)),hD(3),fS(n.updated_at?6:-1),hD(),fS(n.checks.length?7:-1)}}function ce(e,o){e&1&&(da(0,`div`,10),ba(1,`ui-state-badge`,17),da(2,`span`),WS(3),oC(4,`t`),yd()()),e&2&&(hD(3),Jm(sC(4,1,`empty.noData.hint`)))}function se(e,o){if(e&1&&(da(0,`span`,23)(1,`span`,24),WS(2),yd(),ba(3,`i`,25),yd()),e&2){let n=o.$implicit;Ar(`data-state`,n.state)(`title`,n.state),hD(2),Jm(n.id)}}function me(e,o){if(e&1&&(da(0,`div`,14),gS(1,se,4,3,`span`,23,w),yd()),e&2){let n=bS(2);hD(),mS(n.store.capabilities())}}function _e(e,o){e&1&&(ba(0,`ui-empty`,15),oC(1,`t`)),e&2&&Wm(`title`,sC(1,1,`dashboard.none`))}function ge(e,o){if(e&1){let n=wS();da(0,`section`,5)(1,`div`,7)(2,`div`)(3,`h2`),WS(4),oC(5,`t`),yd(),da(6,`p`,8)(7,`code`),WS(8,`bootstrap`),yd()()()(),uS(9,ie,42,29,`dl`,9)(10,ne,5,3,`div`,10),yd(),da(11,`section`,11)(12,`div`,7)(13,`div`)(14,`h2`),WS(15),oC(16,`t`),yd(),da(17,`p`,8)(18,`code`),WS(19,`GET /api/v1/installation/status`),yd(),uS(20,ae,3,6,`span`),yd()(),da(21,`button`,12),oC(22,`t`),Ta(`click`,function(){jh(n);let v=bS();return Uh(v.store.refreshHealth())}),ba(23,`ui-icon`,4),yd()(),uS(24,pe,8,9)(25,ce,5,3,`div`,10),yd(),da(26,`section`,13)(27,`div`,7)(28,`div`)(29,`h2`),WS(30),oC(31,`t`),yd(),da(32,`p`,8)(33,`code`),WS(34,`bootstrap`),yd()()()(),uS(35,me,3,0,`div`,14)(36,_e,2,3,`ui-empty`,15),yd(),ba(37,`inventory-panel`)}if(e&2){let n,c,v,y=bS();hD(4),Jm(sC(5,9,`explorer.identity`)),hD(5),fS((n=y.descriptor())?9:10,n),hD(6),Jm(sC(16,11,`dashboard.health`)),hD(5),fS((c=y.store.refreshedAt())?20:-1,c),hD(),Ar(`aria-label`,sC(22,13,`state.refresh`)),hD(2),Wm(`size`,14),hD(),fS((v=y.health())?24:25,v),hD(6),Jm(sC(31,15,`dashboard.capabilities`)),hD(5),fS(y.store.capabilities().length?35:36)}}function ve(e,o){if(e&1&&(da(0,`span`),WS(1),oC(2,`t`),yd()),e&2){let n=bS(2);hD(),Dd(` · `,aC(2,1,`common.updatedAt`,nC(4,te,n.stamp(o))))}}function xe(e,o){if(e&1&&(da(0,`code`),WS(1),yd()),e&2){let n=bS();hD(),Jm(n.cli)}}function ue(e,o){e&1&&ba(0,`ui-state-badge`,17)}function ye(e,o){e&1&&ba(0,`ui-state-badge`,17)}function fe(e,o){e&1&&(da(0,`span`,20),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`state.absent`)))}function Ce(e,o){if(e&1&&(da(0,`code`,16),WS(1),yd()),e&2){let n=bS();Ar(`title`,n.checkout),hD(),Jm(n.checkout)}}function be(e,o){e&1&&ba(0,`ui-state-badge`,17)}function Se(e,o){e&1&&(da(0,`span`,20),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`federation.mcpAbsent`)))}function Ee(e,o){if(e&1&&(da(0,`code`),WS(1),yd()),e&2){let n=o.$implicit;hD(),Jm(n)}}function he(e,o){if(e&1&&(da(0,`span`,20),WS(1),oC(2,`t`),yd(),da(3,`span`,30),gS(4,Ee,2,1,`code`,null,pS),yd()),e&2){let n=bS(),c=bS();hD(),Jm(sC(2,1,`federation.mcpReady`)),hD(3),mS(c.mcpKeys(n.mcp))}}function Pe(e,o){e&1&&(da(0,`div`,10),ba(1,`ui-state-badge`,17),yd())}function ke(e,o){e&1&&(da(0,`p`,20),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`state.none`)))}function Ie(e,o){if(e&1&&(da(0,`small`,20),WS(1),yd()),e&2){let n=bS().$implicit;hD(),Jm(n.detail)}}function De(e,o){if(e&1&&(da(0,`li`),ba(1,`ui-state-badge`,22),uS(2,Ie,2,1,`small`,20),yd()),e&2){let n=o.$implicit;hD(),Wm(`state`,n.status||`UNVERIFIED`)(`labelOverride`,n.id),hD(),fS(n.detail?2:-1)}}function Fe(e,o){if(e&1&&(da(0,`ul`,21),gS(1,De,3,3,`li`,null,w),yd()),e&2){let n=bS();hD(),mS(n.checks)}}function Te(e,o){e&1&&(da(0,`div`,10),ba(1,`ui-state-badge`,17),yd())}function Be(e,o){e&1&&(da(0,`p`,20),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`state.none`)))}function we(e,o){if(e&1&&(da(0,`li`),WS(1),yd()),e&2){let n=o.$implicit;hD(),Jm(n)}}function Ne(e,o){if(e&1&&(da(0,`ul`,29),gS(1,we,2,1,`li`,null,pS),yd()),e&2){let n=bS();hD(),mS(n.notes)}}function Me(e,o){if(e&1){let n=wS();da(0,`section`,5)(1,`div`,7)(2,`div`)(3,`h2`),WS(4),oC(5,`t`),yd(),da(6,`p`,8)(7,`code`),WS(8,`GET /api/v1/federation`),yd(),uS(9,ve,3,6,`span`),yd()(),da(10,`button`,12),oC(11,`t`),Ta(`click`,function(){jh(n);let v=bS();return Uh(v.loadSpecialists())}),ba(12,`ui-icon`,4),yd()(),da(13,`dl`,9)(14,`div`)(15,`dt`),WS(16),oC(17,`t`),yd(),da(18,`dd`)(19,`code`),WS(20),yd()()(),da(21,`div`)(22,`dt`),WS(23),oC(24,`t`),yd(),da(25,`dd`),ba(26,`ui-state-badge`,19),yd()(),da(27,`div`)(28,`dt`),WS(29),oC(30,`t`),yd(),da(31,`dd`),WS(32),yd()(),da(33,`div`)(34,`dt`),WS(35),oC(36,`t`),yd(),da(37,`dd`),uS(38,xe,2,1,`code`)(39,ue,1,0,`ui-state-badge`,17),yd()()()(),da(40,`section`,26)(41,`div`,7)(42,`div`)(43,`h2`),WS(44),oC(45,`t`),yd(),da(46,`p`,8)(47,`code`),WS(48,`GET /api/v1/federation`),yd()()()(),da(49,`dl`,9)(50,`div`)(51,`dt`),WS(52),oC(53,`t`),yd(),da(54,`dd`),uS(55,ye,1,0,`ui-state-badge`,17)(56,fe,3,3,`span`,20)(57,Ce,2,2,`code`,16),yd()(),da(58,`div`)(59,`dt`),WS(60),oC(61,`t`),yd(),da(62,`dd`),uS(63,be,1,0,`ui-state-badge`,17)(64,Se,3,3,`span`,20)(65,he,6,3),yd()()()(),da(66,`section`,27)(67,`div`,7)(68,`div`)(69,`h2`),WS(70),oC(71,`t`),yd(),da(72,`p`,8)(73,`code`),WS(74,`GET /api/v1/federation`),yd()()()(),uS(75,Pe,2,0,`div`,10)(76,ke,3,3,`p`,20)(77,Fe,3,0,`ul`,21),yd(),da(78,`section`,28)(79,`div`,7)(80,`div`)(81,`h2`),WS(82),oC(83,`t`),yd(),da(84,`p`,8)(85,`code`),WS(86,`GET /api/v1/federation`),yd()()()(),uS(87,Te,2,0,`div`,10)(88,Be,3,3,`p`,20)(89,Ne,3,0,`ul`,29),yd()}if(e&2){let n,c=o,v=bS();hD(4),Jm(sC(5,21,`explorer.identity`)),hD(5),fS((n=v.fed.loadedAt())?9:-1,n),hD(),Ar(`aria-label`,sC(11,23,`state.refresh`)),hD(2),Wm(`size`,14),hD(4),Jm(sC(17,25,`table.id`)),hD(4),Jm(c.provider),hD(3),Jm(sC(24,27,`skills.state`)),hD(3),Wm(`state`,c.state??c.status??`UNVERIFIED`),hD(3),Jm(sC(30,29,`settings.version`)),hD(3),Jm(v.specialistVersion(c)??`—`),hD(3),Jm(sC(36,31,`settings.cli`)),hD(3),fS(c.cli?38:39),hD(6),Jm(sC(45,33,`explorer.presence`)),hD(8),Jm(sC(53,35,`explorer.checkout`)),hD(3),fS(c.checkout===void 0?55:c.checkout===null?56:57),hD(5),Jm(sC(61,37,`mcp.title`)),hD(3),fS(c.mcp===void 0?63:c.mcp===null?64:65),hD(7),Jm(sC(71,39,`fdoc.checks`)),hD(5),fS(c.checks===void 0?75:c.checks.length?77:76),hD(7),Jm(sC(83,41,`explorer.notes`)),hD(5),fS(c.notes===void 0?87:c.notes.length?89:88)}}function Oe(e,o){if(e&1&&(da(0,`section`,5)(1,`div`,7)(2,`div`)(3,`h2`),WS(4),oC(5,`t`),yd(),da(6,`p`,8)(7,`code`),WS(8,`GET /api/v1/federation`),yd()()()(),da(9,`div`,10),ba(10,`ui-state-badge`,17),da(11,`span`),WS(12),oC(13,`t`),yd()(),da(14,`dl`,9)(15,`div`)(16,`dt`),WS(17),oC(18,`t`),yd(),da(19,`dd`)(20,`code`),WS(21),yd()()()()()),e&2){let n=bS();hD(4),Jm(sC(5,4,`explorer.identity`)),hD(8),Jm(sC(13,6,`explorer.registryOnly`)),hD(5),Jm(sC(18,8,`table.id`)),hD(4),Jm(n.id())}}function Ve(e,o){e&1&&(ba(0,`ui-empty`,6),oC(1,`t`)),e&2&&Wm(`title`,sC(1,1,`explorer.notFound`))}function ze(e,o){if(e&1&&(da(0,`section`,31)(1,`div`,10),ba(2,`ui-state-badge`,17),da(3,`span`),WS(4),oC(5,`t`),yd()(),da(6,`dl`,9)(7,`div`)(8,`dt`),WS(9),oC(10,`t`),yd(),da(11,`dd`)(12,`code`),WS(13),yd()()()()()),e&2){let n=bS(2);hD(4),Jm(sC(5,3,`federation.unavailable`)),hD(5),Jm(sC(10,5,`table.id`)),hD(4),Jm(n.id())}}function Re(e,o){if(e&1){let n=wS();da(0,`ui-error`,34),Ta(`retry`,function(){jh(n);let v=bS(2);return Uh(v.loadSpecialists())}),yd()}e&2&&Wm(`error`,o)}function Ae(e,o){e&1&&(da(0,`div`,33),oC(1,`t`),ba(2,`ui-skeleton`,35)(3,`ui-skeleton`,36),yd()),e&2&&(Ar(`aria-label`,sC(1,2,`state.loading`)),hD(3),Wm(`lines`,4))}function Ue(e,o){if(e&1&&uS(0,ze,14,7,`section`,31)(1,Re,1,1,`ui-error`,32)(2,Ae,4,4,`div`,33),e&2){let n,c=bS();fS(c.fed.unavailable()?0:(n=c.fed.error())?1:2,n)}}var ee=class e{route=p(Ot);api=p(g);store=p(g$1);id=k(`self`);fed=new l;inventory=kU(F);health=tn(()=>this.store.health());descriptor=tn(()=>this.store.descriptor());view=tn(()=>{let o=this.id(),n=this.descriptor();if(o===`self`||n!==null&&o===n.forge_id)return{kind:`serving`};let c=this.fed.data();if(!c)return{kind:`pending`};let v=c.specialists.find(y=>y.provider===o);return v?{kind:`specialist`,specialist:v}:c.installed_forges.includes(o)?{kind:`registry`}:{kind:`missing`}});specialist=tn(()=>{let o=this.view();return o.kind===`specialist`?o.specialist:null});title=tn(()=>this.view().kind===`serving`?this.descriptor()?.forge_name??this.id():this.id());specialistVersion=f;stamp=y;constructor(){this.route.paramMap.pipe(w$1()).subscribe(o=>{let n=o.get(`id`)??`self`;this.id.set(n),n!==`self`&&n!==this.store.descriptor()?.forge_id&&this.loadSpecialists()})}async loadSpecialists(){await this.fed.load(()=>this.api.federation())}async reload(){this.view().kind===`serving`?await Promise.allSettled([this.store.refreshHealth(),this.inventory()?.loadCounts()??Promise.resolve()]):await this.loadSpecialists()}mcpKeys(o){return Object.keys(o)}static ɵfac=function(n){return new(n||e)};static ɵcmp=ei({type:e,selectors:[[`page-forge-detail`]],viewQuery:function(n,c){n&1&&Ym(c.inventory,F,5),n&2&&_S()},decls:15,vars:17,consts:[[`routerLink`,`/forges`,1,`back`],[`name`,`chevron-left`,3,`size`],[3,`title`,`subtitle`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[`data-section`,`identity`,1,`card`],[`icon`,`search`,3,`title`],[1,`sec__head`],[1,`src`],[1,`kv`],[`role`,`note`,1,`unv`],[`data-section`,`health`,1,`card`],[1,`icon-btn`,3,`click`],[`data-section`,`capabilities`,1,`card`],[1,`caps`],[`icon`,`dashboard`,3,`title`],[1,`path`],[`state`,`UNVERIFIED`],[1,`meta`],[3,`state`],[1,`muted`],[1,`checks`],[3,`state`,`labelOverride`],[1,`cap`],[1,`cap__id`],[`aria-hidden`,`true`,1,`cap__dot`],[`data-section`,`presence`,1,`card`],[`data-section`,`checks`,1,`card`],[`data-section`,`notes`,1,`card`],[1,`notes`],[1,`mcp-keys`],[1,`card`],[3,`error`],[`role`,`status`],[3,`retry`,`error`],[`kind`,`card`],[`kind`,`row`,3,`lines`]],template:function(n,c){if(n&1&&(da(0,`a`,0),ba(1,`ui-icon`,1),WS(2),oC(3,`t`),yd(),da(4,`ui-page-header`,2),oC(5,`t`),da(6,`button`,3),Ta(`click`,function(){return c.reload()}),ba(7,`ui-icon`,4),WS(8),oC(9,`t`),yd()(),uS(10,ge,38,17),uS(11,Me,90,43),uS(12,Oe,22,10,`section`,5),uS(13,Ve,2,3,`ui-empty`,6),uS(14,Ue,3,1)),n&2){let v;hD(),Wm(`size`,14),hD(),Dd(``,sC(3,11,`explorer.back`),` `),hD(2),Wm(`title`,c.title())(`subtitle`,sC(5,13,`explorer.detail.subtitle`)),hD(3),Wm(`size`,15),hD(),Dd(` `,sC(9,15,`state.refresh`),` `),hD(2),fS(c.view().kind===`serving`?10:-1),hD(),fS((v=c.specialist())?11:-1,v),hD(),fS(c.view().kind===`registry`?12:-1),hD(),fS(c.view().kind===`missing`?13:-1),hD(),fS(c.view().kind===`pending`?14:-1)}},dependencies:[yc,T,I,_,D,cE,k$1,F,aE],styles:[`.back[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;min-height:24px;margin-bottom:var(--%NS%space-3);padding-block:2px;font-size:var(--%NS%font-sm);font-weight:600;color:var(--%NS%fg-muted);text-decoration:none;transition:color var(--%NS%motion-fast)}.back[_ngcontent-%COMP%]:hover{color:var(--%NS%fg)}.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.sec__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650}.src[_ngcontent-%COMP%]{margin:4px 0 0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.kv[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin:0}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{min-width:9rem;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm)}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;min-width:0}.meta[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.checks[_ngcontent-%COMP%], .notes[_ngcontent-%COMP%]{list-style:none;margin:var(--%NS%space-2) 0 0;padding:0;display:grid;gap:6px}.checks[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}.unv[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-3);margin-bottom:var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.caps[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2)}.mcp-keys[_ngcontent-%COMP%]{display:inline-flex;flex-wrap:wrap;gap:4px;margin-left:6px}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.path[_ngcontent-%COMP%]{display:inline-block;max-width:60ch;overflow-wrap:anywhere}inventory-panel[_ngcontent-%COMP%]{display:block;margin-bottom:var(--%NS%space-4)}`]})};export{ee as ForgeDetailPage}; \ No newline at end of file diff --git a/portal/assets/chunk-BYYLUO5t.js b/portal/assets/chunk-BYYLUO5t.js new file mode 100644 index 0000000..544572f --- /dev/null +++ b/portal/assets/chunk-BYYLUO5t.js @@ -0,0 +1 @@ +var i=Object.defineProperty;var j=Object.defineProperties;var k=Object.getOwnPropertyDescriptors;var e=Object.getOwnPropertySymbols;var g=Object.prototype.hasOwnProperty;var h=Object.prototype.propertyIsEnumerable;var f=(a,b,c)=>b in a?i(a,b,{enumerable:!0,configurable:!0,writable:!0,value:c}):a[b]=c;var l=(a,b)=>{for(var c in b||={})g.call(b,c)&&f(a,c,b[c]);if(e)for(var c of e(b))h.call(b,c)&&f(a,c,b[c]);return a};var m=(a,b)=>j(a,k(b));var n=(a,b)=>{var c={};for(var d in a)g.call(a,d)&&b.indexOf(d)<0&&(c[d]=a[d]);if(a!=null&&e)for(var d of e(a))b.indexOf(d)<0&&h.call(a,d)&&(c[d]=a[d]);return c};var t={dashboard:``,install:``,profiles:``,hosts:``,mcp:``,skills:``,agents:``,tasks:``,graph:``,network:``,knowledge:``,settings:``,refresh:``,folder:``,"chevron-left":``,"chevron-right":``,sun:``,moon:``,contrast:``,globe:``,search:``,copy:``,check:``,alert:``,external:``,terminal:``,"shield-check":``,gem:``,inbox:``,compass:``,key:``,diff:``,history:``,pulse:``,execution:``,guide:``,close:``};function c(h){return t[h]??``}export{n as a,m as i,t as n,l as r,c as t}; \ No newline at end of file diff --git a/portal/assets/chunk-BYyT8UUn.js b/portal/assets/chunk-BYyT8UUn.js new file mode 100644 index 0000000..2724179 --- /dev/null +++ b/portal/assets/chunk-BYyT8UUn.js @@ -0,0 +1 @@ +import{$ as dS,At as qm,Bt as tn,D as Oo,Dt as pS,Et as p,F as Sa,J as aC,Jt as vd,P as SS,Pt as rn,Q as cE,Qt as yS,S as Ma,Ut as uC,Y as aE,Z as bd,at as ey,ct as hD,et as da,gt as k$1,i as Ar,it as ei,jt as rC,kt as qS,lt as hE,ot as gS,p as Hh,qt as vc,s as DS,ut as hS,vt as lC,xt as nC,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{o as f,r as g}from"./main-XW2ZMSO5.js";import{a as l,n as c,s as y}from"./chunk-BNDlNg-C.js";import{t as _}from"./chunk-16deWS0U.js";import{t as D}from"./chunk-Bg2lccQE.js";import{n as k$2,t as I}from"./chunk-DQtX_-dj.js";import{t as T}from"./chunk-BGgpmc9t.js";var ne=e=>({time:e});var te=()=>[`/hosts`];var ie=e=>({count:e});var k=(e,o)=>o.id;function ae(e,o){e&1&&Sa(0,`ui-state-badge`,23),e&2&&qm(`state`,o.status)}function oe(e,o){e&1&&(da(0,`p`,24),Sa(1,`ui-icon`,4),qS(2),aC(3,`t`),vd()),e&2&&(hD(),qm(`size`,14),hD(),bd(` `,lC(3,2,`mcp.verifying`),` `))}function re(e,o){if(e&1){let i=DS();da(0,`ui-error`,25),Ma(`retry`,function(){Hh(i);let y=SS(2);return Vh(y.verify())}),vd()}e&2&&qm(`error`,o)}function le(e,o){if(e&1&&(da(0,`p`,21)(1,`code`),qS(2),vd()()),e&2){let i=SS();hD(2),ey(i.stage)}}function ce(e,o){if(e&1&&(da(0,`p`),qS(1),vd()),e&2){let i=SS();hD(),ey(i.detail)}}function pe(e,o){if(e&1&&qS(0),e&2){let i=SS(2);bd(` — `,i.unlock,` `)}}function de(e,o){if(e&1&&(da(0,`p`,26)(1,`code`),qS(2),vd(),dS(3,pe,1,1),vd()),e&2){let i=SS();hD(2),ey(i.refusal),hD(),hS(i.unlock?3:-1)}}function se(e,o){if(e&1&&(da(0,`li`)(1,`code`,30),qS(2),vd(),da(3,`span`,21),qS(4),vd(),da(5,`code`,31),qS(6),vd()()),e&2){let i=o.$implicit;hD(2),ey(i.status),hD(2),ey(i.kind),hD(2),ey(i.path)}}function me(e,o){if(e&1&&(da(0,`h3`,28),qS(1),aC(2,`t`),vd(),da(3,`ul`,29),mS(4,se,7,3,`li`,null,pS),vd()),e&2){let i=SS();hD(),ey(lC(2,1,`federation.actions`)),hD(3),yS(i.actions)}}function _e(e,o){if(e&1&&(da(0,`p`,27)(1,`span`),qS(2),aC(3,`t`),vd(),da(4,`strong`,32),qS(5),vd(),da(6,`small`,21),qS(7),aC(8,`t`),vd()()),e&2){let i=SS(3);hD(2),ey(lC(3,3,`mcp.receipt.latency`)),hD(3),bd(``,i.latencyMs(),` ms`),hD(2),ey(lC(8,5,`mcp.receipt.latencyHint`))}}function ue(e,o){if(e&1&&(dS(0,le,3,1,`p`,21),dS(1,ce,2,1,`p`),dS(2,de,4,2,`p`,26),dS(3,me,6,3),dS(4,_e,9,7,`p`,27)),e&2){let i=o,d=SS(2);hS(i.stage?0:-1),hD(),hS(i.detail?1:-1),hD(),hS(i.refusal?2:-1),hD(),hS(i.actions?.length?3:-1),hD(),hS(d.latencyMs()!==null?4:-1)}}function ge(e,o){if(e&1&&(da(0,`section`,6)(1,`div`,9)(2,`div`)(3,`h2`),qS(4),aC(5,`t`),vd(),da(6,`p`,10)(7,`code`),qS(8,`POST /api/v1/mcp/verify`),vd()()(),dS(9,ae,1,1,`ui-state-badge`,23),vd(),dS(10,oe,4,4,`p`,24),dS(11,re,1,1,`ui-error`,13),dS(12,ue,5,5),vd()),e&2){let i,d,y,S=SS();hD(4),ey(lC(5,5,`install.receipt`)),hD(5),hS((i=S.receipt())?9:-1,i),hD(),hS(S.busy()?10:-1),hD(),hS((d=S.verifyError())?11:-1,d),hD(),hS((y=S.receipt())?12:-1,y)}}function ye(e,o){if(e&1&&(da(0,`p`,38),qS(1),vd()),e&2){let i=SS().$implicit;hD(),ey(i.detail)}}function ve(e,o){if(e&1&&(da(0,`li`),qS(1),vd()),e&2){let i=o.$implicit;hD(),ey(i)}}function xe(e,o){if(e&1&&(da(0,`ul`,39),mS(1,ve,2,1,`li`,null,gS),vd()),e&2){let i=SS().$implicit;hD(),yS(i.limitations)}}function fe(e,o){if(e&1){let i=DS();da(0,`article`,34)(1,`header`,35)(2,`code`,36),qS(3),vd(),Sa(4,`ui-state-badge`,23),da(5,`button`,37),Ma(`click`,function(){Hh(i);let y=SS(2);return Vh(y.verify())}),Sa(6,`ui-icon`,4),qS(7),aC(8,`t`),vd()(),dS(9,ye,2,1,`p`,38),dS(10,xe,3,0,`ul`,39),vd()}if(e&2){let i=o.$implicit,d=SS(2);Ar(`data-state`,i.state),hD(3),ey(i.id),hD(),qm(`state`,i.state),hD(),qm(`disabled`,d.busy()),hD(),qm(`size`,13),hD(),bd(` `,lC(8,8,`error.retry`),` `),hD(2),hS(i.detail?9:-1),hD(),hS(i.limitations?.length?10:-1)}}function Ce(e,o){if(e&1&&(da(0,`section`,7)(1,`div`,9)(2,`div`)(3,`h2`),Sa(4,`ui-icon`,33),qS(5),aC(6,`t`),vd(),da(7,`p`,10),qS(8),aC(9,`t`),vd()()(),mS(10,fe,11,10,`article`,34,k),vd()),e&2){let i=SS();hD(4),qm(`size`,15),hD(),ey(lC(6,3,`mcp.diag.title`)),hD(3),ey(lC(9,5,`mcp.diag.hint`)),hD(2),yS(i.attention())}}function Se(e,o){if(e&1&&(da(0,`span`),qS(1),aC(2,`t`),vd()),e&2){let i=SS();hD(),bd(` · `,uC(2,1,`common.updatedAt`,rC(4,ne,i.stamp(o))))}}function be(e,o){e&1&&(da(0,`div`,12),Sa(1,`ui-state-badge`,40),da(2,`span`),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`empty.noData.hint`)))}function Ee(e,o){if(e&1){let i=DS();da(0,`ui-error`,25),Ma(`retry`,function(){Hh(i);let y=SS();return Vh(y.load())}),vd()}e&2&&qm(`error`,o)}function Me(e,o){e&1&&(da(0,`div`,14),aC(1,`t`),Sa(2,`ui-skeleton`,41),vd()),e&2&&(Ar(`aria-label`,lC(1,2,`state.loading`)),hD(2),qm(`lines`,3))}function he(e,o){if(e&1&&(da(0,`a`,47),aC(1,`t`),qS(2),vd()),e&2){let i=SS().$implicit;qm(`routerLink`,nC(6,te))(`fragment`,`host-`+i.host),Ar(`title`,lC(1,4,`mcp.host.open`)),hD(2),ey(i.host)}}function Pe(e,o){e&1&&(da(0,`span`,48),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`mcp.host.unbound`)))}function Ie(e,o){if(e&1&&qS(0),e&2){let i=SS().$implicit;bd(` `,i.tools_count,` `)}}function Ne(e,o){e&1&&Sa(0,`ui-state-badge`,40)}function Oe(e,o){if(e&1&&qS(0),e&2){let i=SS().$implicit,d=SS(2);bd(` `,d.fmt(i.last_verify),` `)}}function Te(e,o){e&1&&(da(0,`span`,21),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`mcp.never`)))}function Be(e,o){if(e&1){let i=DS();da(0,`tr`)(1,`td`)(2,`div`,45),Sa(3,`ui-icon`,46),da(4,`code`),qS(5),vd()()(),da(6,`td`),Sa(7,`ui-state-badge`,23),vd(),da(8,`td`),dS(9,he,3,7,`a`,47)(10,Pe,3,3,`span`,48),vd(),da(11,`td`),dS(12,Ie,1,1)(13,Ne,1,0,`ui-state-badge`,40),vd(),da(14,`td`),dS(15,Oe,1,1)(16,Te,3,3,`span`,21),vd(),da(17,`td`),qS(18),aC(19,`t`),vd(),da(20,`td`)(21,`button`,11),aC(22,`t`),Ma(`click`,function(){let y=Hh(i).$implicit,S=SS(2);return Vh(S.select(y))}),Sa(23,`ui-icon`,49),vd()()()}if(e&2){let i=o.$implicit,d=SS(2);Ar(`data-selected`,d.selectedId()===i.id||null),hD(3),qm(`size`,15),hD(2),ey(i.id),hD(2),qm(`state`,i.state),hD(2),hS(i.host?9:10),hD(3),hS(i.tools_count!==null?12:13),hD(3),hS(i.last_verify?15:16),hD(3),ey(i.limitations?.length??lC(19,11,`state.none`)),hD(3),Ar(`data-inspect`,i.id)(`aria-label`,lC(22,13,`state.viewDetails`)),hD(2),qm(`size`,15)}}function we(e,o){if(e&1&&(da(0,`div`,15)(1,`table`,42)(2,`thead`)(3,`tr`)(4,`th`,43),qS(5),aC(6,`t`),vd(),da(7,`th`,43),qS(8),aC(9,`t`),vd(),da(10,`th`,43),qS(11),aC(12,`t`),vd(),da(13,`th`,43),qS(14),aC(15,`t`),vd(),da(16,`th`,43),qS(17),aC(18,`t`),vd(),da(19,`th`,43),qS(20),aC(21,`t`),vd(),da(22,`th`,43)(23,`span`,44),qS(24),aC(25,`t`),vd()()()(),da(26,`tbody`),mS(27,Be,24,15,`tr`,null,k),vd()()()),e&2){let i=SS();hD(5),ey(lC(6,7,`table.id`)),hD(3),ey(lC(9,9,`skills.state`)),hD(3),ey(lC(12,11,`table.host`)),hD(3),ey(lC(15,13,`mcp.surface.tools`)),hD(3),ey(lC(18,15,`mcp.lastVerify`)),hD(3),ey(lC(21,17,`mcp.limitations`)),hD(4),ey(lC(25,19,`state.viewDetails`)),hD(3),yS(i.servers())}}function ke(e,o){e&1&&(Sa(0,`ui-empty`,16),aC(1,`t`),aC(2,`t`)),e&2&&qm(`title`,lC(1,2,`empty.noData`))(`hint`,lC(2,4,`empty.noData.hint`))}function De(e,o){if(e&1){let i=DS();da(0,`button`,50),Ma(`click`,function(){Hh(i);let y=SS();return Vh(y.selectedId.set(null))}),qS(1),aC(2,`t`),vd()}e&2&&(hD(),bd(` `,lC(2,1,`state.close`),` `))}function Fe(e,o){if(e&1&&(da(0,`a`,47),aC(1,`t`),qS(2),vd()),e&2){let i=SS();qm(`routerLink`,nC(6,te))(`fragment`,`host-`+i.host),Ar(`title`,lC(1,4,`mcp.host.open`)),hD(2),ey(i.host)}}function ze(e,o){e&1&&(da(0,`span`,21),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`mcp.host.unbound`)))}function Ve(e,o){if(e&1&&(qS(0),aC(1,`t`)),e&2){let i=SS();bd(` `,uC(1,1,`mcp.tools`,rC(4,ie,i.tools_count)),` `)}}function Ae(e,o){e&1&&Sa(0,`ui-state-badge`,40)}function Re(e,o){if(e&1&&qS(0),e&2){let i=SS(),d=SS();bd(` `,d.fmt(i.last_verify),` `)}}function $e(e,o){e&1&&(da(0,`span`,21),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`mcp.never`)))}function Ge(e,o){if(e&1&&(da(0,`div`)(1,`dt`),qS(2),aC(3,`t`),vd(),da(4,`dd`),qS(5),vd()()),e&2){let i=SS();hD(2),ey(lC(3,2,`mcp.detail`)),hD(3),ey(i.detail)}}function Le(e,o){if(e&1&&(da(0,`li`),qS(1),vd()),e&2){let i=o.$implicit;hD(),ey(i)}}function He(e,o){if(e&1&&(da(0,`h3`,28),qS(1),aC(2,`t`),vd(),da(3,`ul`,39),mS(4,Le,2,1,`li`,null,gS),vd()),e&2){let i=SS();hD(),ey(lC(2,1,`mcp.limitations`)),hD(3),yS(i.limitations)}}function Ue(e,o){if(e&1&&(da(0,`p`,61),qS(1),aC(2,`t`),vd(),da(3,`p`,21),qS(4),aC(5,`t`),vd()),e&2){let i=SS();hD(),ey(uC(2,2,`mcp.tools`,rC(7,ie,i.tools_count))),hD(3),ey(lC(5,5,`mcp.surface.countOnly`))}}function Ke(e,o){e&1&&(Sa(0,`ui-state-badge`,40),da(1,`p`,21),qS(2),aC(3,`t`),vd()),e&2&&(hD(2),ey(lC(3,1,`mcp.surface.noTools`)))}function je(e,o){if(e&1&&(da(0,`div`,20)(1,`header`,51)(2,`h3`),Sa(3,`ui-icon`,46),da(4,`code`),qS(5),vd()(),Sa(6,`ui-state-badge`,23),vd(),da(7,`p`,52),qS(8),aC(9,`t`),vd(),da(10,`dl`,53)(11,`div`)(12,`dt`),qS(13),aC(14,`t`),vd(),da(15,`dd`)(16,`code`),qS(17),vd()()(),da(18,`div`)(19,`dt`),qS(20),aC(21,`t`),vd(),da(22,`dd`),Sa(23,`ui-state-badge`,23),vd()(),da(24,`div`)(25,`dt`),qS(26),aC(27,`t`),vd(),da(28,`dd`),dS(29,Fe,3,7,`a`,47)(30,ze,3,3,`span`,21),vd()(),da(31,`div`)(32,`dt`),qS(33),aC(34,`t`),vd(),da(35,`dd`),dS(36,Ve,2,6)(37,Ae,1,0,`ui-state-badge`,40),vd()(),da(38,`div`)(39,`dt`),qS(40),aC(41,`t`),vd(),da(42,`dd`),dS(43,Re,1,1)(44,$e,3,3,`span`,21),vd()(),dS(45,Ge,6,4,`div`),vd(),dS(46,He,6,3),da(47,`div`,54)(48,`section`,55)(49,`h4`),Sa(50,`ui-icon`,56),qS(51),aC(52,`t`),vd(),dS(53,Ue,6,9)(54,Ke,4,3),vd(),da(55,`section`,57)(56,`h4`),Sa(57,`ui-icon`,58),qS(58),aC(59,`t`),vd(),Sa(60,`ui-state-badge`,40),da(61,`p`,21),qS(62),aC(63,`t`),vd()(),da(64,`section`,59)(65,`h4`),Sa(66,`ui-icon`,60),qS(67),aC(68,`t`),vd(),Sa(69,`ui-state-badge`,40),da(70,`p`,21),qS(71),aC(72,`t`),vd()()()()),e&2){let i=o,d=SS();hD(3),qm(`size`,16),hD(2),ey(i.id),hD(),qm(`state`,i.state),hD(2),ey(lC(9,25,d.explainKey(i.state))),hD(5),ey(lC(14,27,`table.id`)),hD(4),ey(i.id),hD(3),ey(lC(21,29,`skills.state`)),hD(3),qm(`state`,i.state),hD(3),ey(lC(27,31,`table.host`)),hD(3),hS(i.host?29:30),hD(4),ey(lC(34,33,`mcp.surface.tools`)),hD(3),hS(i.tools_count!==null?36:37),hD(4),ey(lC(41,35,`mcp.lastVerify`)),hD(3),hS(i.last_verify?43:44),hD(2),hS(i.detail?45:-1),hD(),hS(i.limitations?.length?46:-1),hD(4),qm(`size`,14),hD(),ey(lC(52,37,`mcp.surface.tools`)),hD(2),hS(i.tools_count!==null?53:54),hD(4),qm(`size`,14),hD(),ey(lC(59,39,`mcp.surface.resources`)),hD(4),ey(lC(63,41,`mcp.surface.notExposed`)),hD(4),qm(`size`,14),hD(),ey(lC(68,43,`mcp.surface.prompts`)),hD(4),ey(lC(72,45,`mcp.surface.notExposed`))}}function qe(e,o){e&1&&(da(0,`p`,21),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`mcp.selectHint`)))}function Je(e,o){if(e&1&&(da(0,`th`,43),qS(1),aC(2,`t`),vd()),e&2){let i=o.$implicit;hD(),ey(lC(2,1,`mcpState.`+i))}}function Qe(e,o){if(e&1&&(da(0,`td`,63),Sa(1,`ui-state-badge`,40),vd()),e&2){let i=SS(3);Ar(`colspan`,i.stages.length)}}function We(e,o){e&1&&(Sa(0,`ui-icon`,65),da(1,`span`,44),qS(2),aC(3,`t`),vd()),e&2&&(qm(`size`,14),hD(2),ey(lC(3,2,`state.yes`)))}function Xe(e,o){e&1&&(da(0,`span`,66),qS(1,`—`),vd(),da(2,`span`,44),qS(3),aC(4,`t`),vd()),e&2&&(hD(3),ey(lC(4,1,`state.no`)))}function Ye(e,o){if(e&1&&(da(0,`td`,63),dS(1,We,4,4)(2,Xe,5,3),vd()),e&2){let i=o.$implicit,d=SS(2).$implicit,y=SS(2);hD(),hS(y.reached(d,i)?1:2)}}function Ze(e,o){if(e&1&&mS(0,Ye,3,1,`td`,63,gS),e&2){let i=SS(3);yS(i.stages)}}function et(e,o){if(e&1&&(da(0,`li`),qS(1),vd()),e&2){let i=o.$implicit;hD(),ey(i)}}function tt(e,o){if(e&1&&(da(0,`tr`,64)(1,`td`)(2,`ul`,39),mS(3,et,2,1,`li`,null,gS),vd()()()),e&2){let i=SS().$implicit,d=SS(2);hD(),Ar(`colspan`,d.stages.length+3),hD(2),yS(i.limitations)}}function it(e,o){if(e&1&&(da(0,`tr`)(1,`td`)(2,`code`),qS(3),vd()(),da(4,`td`),Sa(5,`ui-state-badge`,23),vd(),dS(6,Qe,2,1,`td`,63)(7,Ze,2,0),da(8,`td`),qS(9),aC(10,`t`),vd()(),dS(11,tt,5,1,`tr`,64)),e&2){let i=o.$implicit,d=SS(2);hD(3),ey(i.id),hD(2),qm(`state`,i.state),hD(),hS(d.abnormal(i)?6:7),hD(3),ey(i.limitations?.length??lC(10,5,`state.none`)),hD(2),hS(i.limitations?.length?11:-1)}}function nt(e,o){if(e&1&&(da(0,`div`,15)(1,`table`,62)(2,`thead`)(3,`tr`)(4,`th`,43),qS(5),aC(6,`t`),vd(),da(7,`th`,43),qS(8),aC(9,`t`),vd(),mS(10,Je,3,3,`th`,43,gS),da(12,`th`,43),qS(13),aC(14,`t`),vd()()(),da(15,`tbody`),mS(16,it,12,7,null,null,k),vd()()()),e&2){let i=SS();hD(5),ey(lC(6,3,`table.id`)),hD(3),ey(lC(9,5,`skills.state`)),hD(2),yS(i.stages),hD(3),ey(lC(14,7,`mcp.limitations`)),hD(3),yS(i.servers())}}function at(e,o){e&1&&(da(0,`p`,21),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`state.none`)))}var ot=[`CONFIGURED`,`STARTING`,`HANDSHAKE_VERIFIED`,`TOOLS_DISCOVERED`,`INVOCATION_VERIFIED`];var rt={CONFIGURED:0,STARTING:1,HANDSHAKE_VERIFIED:2,TOOLS_DISCOVERED:3,INVOCATION_VERIFIED:4};var Z={NOT_CONFIGURED:-1,CONFIGURED:0,STARTING:1,HANDSHAKE_VERIFIED:2,TOOLS_DISCOVERED:3,INVOCATION_VERIFIED:4,DEGRADED:null,FAILED:null};var ee=class e{api=p(g);toast=p(f);server=rn(``);src=new l;servers=tn(()=>this.src.data()??[]);selectedId=k$1(null);deepApplied=k$1(null);selected=tn(()=>this.servers().find(o=>o.id===this.selectedId())??null);attention=tn(()=>this.servers().filter(o=>o.state===`FAILED`||o.state===`DEGRADED`));receipt=k$1(null);latencyMs=k$1(null);verifyError=k$1(null);busy=k$1(!1);stages=ot;stamp=y;constructor(){Oo(()=>{let o=this.server();!o||o===this.deepApplied()||!this.src.attempted()||(this.deepApplied.set(o),this.servers().some(i=>i.id===o)&&this.selectedId.set(o))}),this.load()}async load(){await this.src.load(()=>this.api.mcpServers())}select(o){this.selectedId.set(o.id)}explainKey(o){return`mcp.explain.${o}`}abnormal(o){return Z[o.state]===null}reached(o,i){let d=Z[o.state];return d!==null&&d>=rt[i]}fmt(o){let i=new Date(o);return Number.isNaN(i.getTime())?o:i.toLocaleString()}async verify(){this.busy.set(!0),this.verifyError.set(null),this.receipt.set(null),this.latencyMs.set(null);let o=performance.now();try{let i=await hE(this.api.mcpVerify());this.latencyMs.set(Math.max(0,Math.round(performance.now()-o))),this.receipt.set(i),this.toast.show(`notify.success`,`success`),await this.load()}catch(i){this.verifyError.set(c(i)),this.toast.show(`notify.error`,`error`)}finally{this.busy.set(!1)}}static ɵfac=function(i){return new(i||e)};static ɵcmp=ei({type:e,selectors:[[`page-mcp`]],inputs:{server:[1,`server`]},decls:60,vars:46,consts:[[`hintId`,`mcp`,3,`title`,`subtitle`],[`data-action`,`verify`,1,`btn`,`btn--primary`,3,`click`,`disabled`],[`name`,`shield-check`,3,`size`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[`data-section`,`safety`,`role`,`note`,1,`safety`],[`data-section`,`verify`,`data-lift`,``,1,`card`],[`data-section`,`diagnostics`,1,`card`,`diag`],[`data-section`,`registry`,1,`card`],[1,`sec__head`],[1,`src`],[1,`icon-btn`,3,`click`],[`role`,`note`,1,`unv`],[3,`error`],[`role`,`status`],[1,`table-wrap`],[`icon`,`mcp`,3,`title`,`hint`],[`data-section`,`inspector`,1,`card`],[`name`,`compass`,3,`size`],[1,`btn`,`btn--mini`],[1,`fg-enter`],[1,`muted`],[`data-section`,`compat`,1,`card`],[3,`state`],[`role`,`status`,`aria-live`,`polite`,1,`running`],[3,`retry`,`error`],[`role`,`alert`,1,`refusal`],[1,`latency`],[1,`subhead`],[1,`actions`],[1,`actions__status`],[1,`path`],[`data-latency`,``],[`name`,`alert`,3,`size`],[1,`diag__item`],[1,`diag__head`],[1,`diag__id`],[`data-diag-retry`,``,1,`btn`,`btn--mini`,3,`click`,`disabled`],[1,`diag__detail`],[1,`limits`],[`state`,`UNVERIFIED`],[`kind`,`row`,3,`lines`],[1,`table`],[`scope`,`col`],[1,`sr-only`],[1,`id`],[`name`,`mcp`,3,`size`],[1,`linklike`,`mono`,3,`routerLink`,`fragment`],[`data-unbound`,``,1,`muted`],[`name`,`chevron-right`,3,`size`],[1,`btn`,`btn--mini`,3,`click`],[1,`insp__head`],[1,`explain`],[1,`kv`],[1,`surfaces`],[`data-surface`,`tools`,1,`surface`],[`name`,`settings`,3,`size`],[`data-surface`,`resources`,1,`surface`],[`name`,`folder`,3,`size`],[`data-surface`,`prompts`,1,`surface`],[`name`,`terminal`,3,`size`],[1,`surface__value`],[1,`table`,`compat`],[1,`stage`],[1,`lim`],[`name`,`check`,1,`stage__yes`,3,`size`],[`aria-hidden`,`true`,1,`stage__no`]],template:function(i,d){if(i&1&&(da(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),da(3,`button`,1),Ma(`click`,function(){return d.verify()}),Sa(4,`ui-icon`,2),qS(5),aC(6,`t`),vd(),da(7,`button`,3),Ma(`click`,function(){return d.load()}),Sa(8,`ui-icon`,4),qS(9),aC(10,`t`),vd()(),da(11,`p`,5),Sa(12,`ui-icon`,2),da(13,`span`),qS(14),aC(15,`t`),vd()(),dS(16,ge,13,7,`section`,6),dS(17,Ce,12,7,`section`,7),da(18,`section`,8)(19,`div`,9)(20,`div`)(21,`h2`),qS(22),aC(23,`t`),vd(),da(24,`p`,10)(25,`code`),qS(26,`GET /api/v1/mcp/servers`),vd(),dS(27,Se,3,6,`span`),vd()(),da(28,`button`,11),aC(29,`t`),Ma(`click`,function(){return d.load()}),Sa(30,`ui-icon`,4),vd()(),dS(31,be,5,3,`div`,12),dS(32,Ee,1,1,`ui-error`,13),dS(33,Me,3,4,`div`,14),dS(34,we,29,21,`div`,15)(35,ke,3,6,`ui-empty`,16),vd(),da(36,`section`,17)(37,`div`,9)(38,`div`)(39,`h2`),Sa(40,`ui-icon`,18),qS(41),aC(42,`t`),vd(),da(43,`p`,10)(44,`code`),qS(45,`GET /api/v1/mcp/servers`),vd()()(),dS(46,De,3,3,`button`,19),vd(),dS(47,je,73,47,`div`,20)(48,qe,3,3,`p`,21),vd(),da(49,`section`,22)(50,`div`,9)(51,`div`)(52,`h2`),qS(53),aC(54,`t`),vd(),da(55,`p`,10),qS(56),aC(57,`t`),vd()()(),dS(58,nt,18,9,`div`,15)(59,at,3,3,`p`,21),vd()),i&2){let y,S,D;qm(`title`,lC(1,26,`mcp.title`))(`subtitle`,lC(2,28,`mcp.subtitle`)),hD(3),qm(`disabled`,d.busy()),hD(),qm(`size`,15),hD(),bd(` `,lC(6,30,`mcp.verify`),` `),hD(3),qm(`size`,15),hD(),bd(` `,lC(10,32,`state.refresh`),` `),hD(3),qm(`size`,15),hD(2),ey(lC(15,34,`mcp.safety`)),hD(2),hS(d.busy()||d.receipt()||d.verifyError()?16:-1),hD(),hS(d.attention().length?17:-1),hD(5),ey(lC(23,36,`mcp.servers`)),hD(5),hS((y=d.src.loadedAt())?27:-1,y),hD(),Ar(`aria-label`,lC(29,38,`state.refresh`)),hD(2),qm(`size`,14),hD(),hS(d.src.unavailable()?31:-1),hD(),hS((S=d.src.error())?32:-1,S),hD(),hS(d.src.loading()&&!d.src.data()?33:-1),hD(),hS(d.servers().length?34:d.src.attempted()&&!d.src.loading()&&!d.src.error()&&!d.src.unavailable()?35:-1),hD(6),qm(`size`,15),hD(),ey(lC(42,40,`mcp.inspector`)),hD(5),hS(d.selected()?46:-1),hD(),hS((D=d.selected())?47:48,D),hD(6),ey(lC(54,42,`mcp.compat.title`)),hD(3),ey(lC(57,44,`mcp.compat.hint`)),hD(2),hS(d.servers().length?58:d.src.attempted()&&!d.src.loading()?59:-1)}},dependencies:[vc,T,I,_,D,cE,k$2,aE],styles:[`.safety[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:0 0 var(--%NS%space-4);padding:var(--%NS%space-3);border:1px solid color-mix(in srgb,var(--%NS%info) 40%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%info-bg);color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm)}.safety[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%info);flex:none}.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.sec__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.src[_ngcontent-%COMP%]{margin:4px 0 0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.subhead[_ngcontent-%COMP%]{margin:var(--%NS%space-3) 0 var(--%NS%space-2);font-size:var(--%NS%font-sm);font-weight:650}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.path[_ngcontent-%COMP%]{overflow-wrap:anywhere}.running[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-2);margin:0;color:var(--%NS%fg-muted)}.refusal[_ngcontent-%COMP%]{color:var(--%NS%warn)}.actions[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:6px}.actions[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);min-width:0}.actions__status[_ngcontent-%COMP%]{flex:none;font-weight:600}.latency[_ngcontent-%COMP%]{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--%NS%space-2);margin:var(--%NS%space-3) 0 0;padding-top:var(--%NS%space-3);border-top:1px dashed var(--%NS%border)}.latency[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-family:var(--%NS%font-mono)}.unv[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.diag[_ngcontent-%COMP%]{border-left:3px solid var(--%NS%error)}.diag__item[_ngcontent-%COMP%]{padding:var(--%NS%space-3);border:1px solid color-mix(in srgb,var(--%NS%error) 40%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%error-bg)}.diag__item[_ngcontent-%COMP%] + .diag__item[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3)}.diag__item[data-state=DEGRADED][_ngcontent-%COMP%]{border-color:color-mix(in srgb,var(--%NS%warn) 55%,transparent);background:var(--%NS%warn-bg)}.diag__head[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3)}.diag__id[_ngcontent-%COMP%]{flex:1;min-width:0;font-weight:600;overflow-wrap:anywhere}.diag__detail[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 0;font-size:var(--%NS%font-sm)}.limits[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 0;padding-left:var(--%NS%space-5);display:grid;gap:4px;font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted)}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.table[_ngcontent-%COMP%]{min-width:720px}.id[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);min-width:0}.id[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);flex:none}tr[data-selected][_ngcontent-%COMP%] td[_ngcontent-%COMP%]{background:var(--%NS%accent-bg)}.insp__head[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:var(--%NS%space-3)}.insp__head[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-md);font-weight:650;display:inline-flex;align-items:center;gap:var(--%NS%space-2);min-width:0}.insp__head[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.explain[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 var(--%NS%space-3);color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm)}.kv[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin:0}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{min-width:9rem;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm);flex:none}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;min-width:0}.surfaces[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-3);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-top:var(--%NS%space-4)}.surface[_ngcontent-%COMP%]{padding:var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:color-mix(in srgb,var(--%NS%bg-hover) 40%,transparent)}.surface[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-sm);font-weight:650;display:flex;align-items:center;gap:var(--%NS%space-2)}.surface[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.surface[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 0;font-size:var(--%NS%font-sm)}.surface__value[_ngcontent-%COMP%]{font-weight:650}.btn--mini[_ngcontent-%COMP%]{padding:2px var(--%NS%space-2);font-size:var(--%NS%font-xs);gap:4px}.compat[_ngcontent-%COMP%] .stage[_ngcontent-%COMP%]{text-align:center;white-space:nowrap}.stage__yes[_ngcontent-%COMP%]{color:var(--%NS%ok)}.stage__no[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}tr.lim[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding-top:0;border-top:0;background:color-mix(in srgb,var(--%NS%bg-hover) 40%,transparent)}tr.lim[_ngcontent-%COMP%] .limits[_ngcontent-%COMP%]{margin-top:0}`]})};export{ee as McpPage}; \ No newline at end of file diff --git a/portal/assets/chunk-BZzb34kV.js b/portal/assets/chunk-BZzb34kV.js deleted file mode 100644 index b13d4e7..0000000 --- a/portal/assets/chunk-BZzb34kV.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as da,Dt as pS,Et as p,F as Wm,Gt as wS,K as aC,Lt as tn,M as Ta,Mt as sC,N as Uh,P as WS,Pt as tC,Q as cE,Tt as oC,X as bS,Xt as yd,Z as ba,_ as Km,ct as gS,dt as hE,gt as k,h as Jm,ht as jh,it as ei,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,xt as nC,yt as mS,zt as uS}from"./chunk-BelLryvf.js";import{i as n,r as g,s as y}from"./main-A2NKRJGT.js";import{t as _}from"./chunk-BKRLVsID.js";import{t as D}from"./chunk-CiuPOfJ0.js";import{n as k$1,t as I}from"./chunk-D2KAfPv6.js";import{t as T}from"./chunk-BBusSOqc.js";var J=()=>[1,2,3];var Q=t=>({count:t});var M=(t,i)=>i.id;function W(t,i){if(t&1){let e=wS();da(0,`ui-error`,14),Ta(`retry`,function(){jh(e);let d=bS();return Uh(d.load())}),yd()}t&2&&Wm(`error`,i)}function X(t,i){t&1&&ba(0,`ui-skeleton`,15)}function Y(t,i){t&1&&(da(0,`section`,2),gS(1,X,1,0,`ui-skeleton`,15,pS),yd()),t&2&&(hD(),mS(tC(0,J)))}function Z(t,i){if(t&1&&(da(0,`span`),WS(1),yd()),t&2){let e=bS();hD(),Jm(e.detail)}}function ee(t,i){if(t&1&&WS(0),t&2){let e=bS(2);Dd(` — `,e.unlock,` `)}}function te(t,i){if(t&1&&(da(0,`p`,18)(1,`code`),WS(2),yd(),uS(3,ee,1,1),yd()),t&2){let e=bS();hD(2),Jm(e.refusal),hD(),fS(e.unlock?3:-1)}}function ie(t,i){if(t&1&&(da(0,`section`,3)(1,`p`,16),ba(2,`ui-state-badge`,17),uS(3,Z,2,1,`span`),yd(),uS(4,te,4,2,`p`,18),yd()),t&2){let e=i;hD(2),Wm(`state`,e.status),hD(),fS(e.detail?3:-1),hD(),fS(e.refusal?4:-1)}}function ne(t,i){t&1&&(da(0,`span`,21),ba(1,`ui-icon`,24),WS(2),oC(3,`t`),yd()),t&2&&(hD(),Wm(`size`,12),hD(),Dd(` `,sC(3,2,`profiles.current`),` `))}function ae(t,i){if(t&1&&(da(0,`li`),WS(1),yd()),t&2){let e=i.$implicit;Ar(`data-on`,e.on||null),hD(),Jm(e.id)}}function oe(t,i){if(t&1){let e=wS();da(0,`button`,25),Ta(`click`,function(){jh(e);let d=bS().$implicit,y=bS();return Uh(y.apply(d.id))}),WS(1),oC(2,`t`),yd()}if(t&2){let e=bS(2);Wm(`disabled`,e.busy()),hD(),Dd(` `,sC(2,2,`profiles.apply`),` `)}}function re(t,i){if(t&1&&(da(0,`article`,5)(1,`div`,19)(2,`h2`),ba(3,`ui-icon`,20),WS(4),yd(),uS(5,ne,4,4,`span`,21),yd(),da(6,`p`,8),WS(7),oC(8,`t`),yd(),da(9,`ul`,22),gS(10,ae,2,2,`li`,null,M),yd(),uS(12,oe,3,4,`button`,23),yd()),t&2){let e=i.$implicit,o=bS();Ar(`data-current`,e.current||null),hD(3),Wm(`size`,16),hD(),Jm(e.id),hD(),fS(e.current?5:-1),hD(2),Jm(sC(8,6,o.description(e))),hD(3),mS(o.componentList(e)),hD(2),fS(e.current?-1:12)}}function le(t,i){t&1&&(ba(0,`ui-empty`,26),oC(1,`t`),oC(2,`t`)),t&2&&Wm(`title`,sC(1,2,`empty.noData`))(`hint`,sC(2,4,`empty.noData.hint`))}function pe(t,i){if(t&1&&uS(0,le,3,6,`ui-empty`,26),t&2){let e=bS();fS(!e.error()&&!e.loading()?0:-1)}}function ce(t,i){if(t&1&&(da(0,`option`,12),WS(1),yd()),t&2){let e=i.$implicit,o=bS();Wm(`value`,e.id)(`selected`,e.id===o.compareA()),hD(),Jm(e.id)}}function de(t,i){if(t&1&&(da(0,`option`,12),WS(1),yd()),t&2){let e=i.$implicit,o=bS();Wm(`value`,e.id)(`selected`,e.id===o.compareB()),hD(),Jm(e.id)}}function se(t,i){t&1&&ba(0,`ui-icon`,24),t&2&&Wm(`size`,14)}function me(t,i){t&1&&ba(0,`ui-icon`,24),t&2&&Wm(`size`,14)}function _e(t,i){if(t&1&&(da(0,`tr`)(1,`td`)(2,`code`),WS(3),yd()(),da(4,`td`),uS(5,se,1,1,`ui-icon`,24),WS(6),oC(7,`t`),yd(),da(8,`td`),uS(9,me,1,1,`ui-icon`,24),WS(10),oC(11,`t`),yd()()),t&2){let e=i.$implicit;Ar(`data-diff`,e.a!==e.b||null),hD(3),Jm(e.id),hD(),Km(`on`,e.a)(`off`,!e.a),hD(),fS(e.a?5:-1),hD(),Dd(` `,sC(7,14,e.a?`state.enabled`:`state.disabled`),` `),hD(2),Km(`on`,e.b)(`off`,!e.b),hD(),fS(e.b?9:-1),hD(),Dd(` `,sC(11,16,e.b?`state.enabled`:`state.disabled`),` `)}}function fe(t,i){t&1&&(WS(0),oC(1,`t`)),t&2&&Dd(` `,sC(1,1,`profiles.compare.same`),` `)}function ue(t,i){if(t&1&&(WS(0),oC(1,`t`)),t&2){let e=bS(2);Dd(` `,aC(1,1,`profiles.compare.differences`,nC(4,Q,e.diffCount())),` `)}}function ge(t,i){if(t&1&&(da(0,`table`,27)(1,`thead`)(2,`tr`)(3,`th`,28),WS(4),oC(5,`t`),yd(),da(6,`th`,28),WS(7),yd(),da(8,`th`,28),WS(9),yd()()(),da(10,`tbody`),gS(11,_e,12,18,`tr`,null,M),yd()(),da(13,`p`,29),uS(14,fe,2,3)(15,ue,2,6),yd()),t&2){let e=bS();hD(4),Jm(sC(5,4,`profiles.compare.component`)),hD(3),Jm(e.compareA()),hD(2),Jm(e.compareB()),hD(2),mS(e.compareRows()),hD(3),fS(e.diffCount()===0?14:15)}}function ye(t,i){t&1&&(ba(0,`ui-empty`,13),oC(1,`t`)),t&2&&Wm(`title`,sC(1,1,`empty.noData`))}var G=class t{api=p(g);confirm=p(y);profiles=k([]);receipt=k(null);error=k(null);busy=k(!1);loading=k(!0);compareA=k(null);compareB=k(null);constructor(){this.load()}async load(){this.error.set(null),this.loading.set(!0);try{let i=await hE(this.api.profiles());this.profiles.set(i),i.length&&(!this.compareA()||!this.compareB())&&(this.compareA.set(i.find(e=>e.current)?.id??i[0].id),this.compareB.set(i.find(e=>!e.current)?.id??i[0].id))}catch(i){this.error.set(i instanceof n?i:new n(0))}finally{this.loading.set(!1)}}description(i){return i.description_key}componentList(i){return Object.entries(i.components??{}).map(([e,o])=>({id:e,on:o}))}pickCompare(i,e){let o=e.target.value;i===`a`?this.compareA.set(o):this.compareB.set(o)}compareRows=tn(()=>{let i=this.profiles().find(d=>d.id===this.compareA()),e=this.profiles().find(d=>d.id===this.compareB());if(!i||!e)return[];let o=[...new Set([...Object.keys(i.components??{}),...Object.keys(e.components??{})])];return o.sort(),o.map(d=>({id:d,a:!!i.components?.[d],b:!!e.components?.[d]}))});diffCount=tn(()=>this.compareRows().filter(i=>i.a!==i.b).length);async apply(i){if(await this.confirm.ask({title:`profiles.apply`,message:`profiles.apply.confirm`,confirmKey:`profiles.apply`})){this.busy.set(!0);try{let o=await hE(this.api.profilesApply(i));this.receipt.set(o),await this.load()}catch(o){this.error.set(o instanceof n?o:new n(0))}finally{this.busy.set(!1)}}}static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`page-profiles`]],decls:36,vars:29,consts:[[3,`title`,`subtitle`],[3,`error`],[`role`,`status`,`aria-live`,`polite`,1,`grid`],[`data-lift`,``,1,`card`,`receipt`],[1,`grid`],[`data-lift`,``,1,`card`],[`aria-labelledby`,`compare-h`,1,`card`,`compare`],[`id`,`compare-h`],[1,`muted`],[1,`compare__pickers`],[1,`picker`],[1,`input`,3,`change`],[3,`value`,`selected`],[3,`title`],[3,`retry`,`error`],[`kind`,`card`],[1,`receipt__status`],[3,`state`],[1,`refusal`],[1,`card__head`],[`name`,`profiles`,3,`size`],[1,`current`],[1,`comps`],[1,`btn`,`btn--primary`,3,`disabled`],[`name`,`check`,3,`size`],[1,`btn`,`btn--primary`,3,`click`,`disabled`],[3,`title`,`hint`],[1,`table`,`compare__table`],[`scope`,`col`],[1,`muted`,`compare__summary`]],template:function(e,o){if(e&1&&(ba(0,`ui-page-header`,0),oC(1,`t`),oC(2,`t`),uS(3,W,1,1,`ui-error`,1),uS(4,Y,3,1,`section`,2),uS(5,ie,5,3,`section`,3),da(6,`section`,4),gS(7,re,13,8,`article`,5,M,!1,pe,1,1),yd(),da(10,`section`,6)(11,`h2`,7),WS(12),oC(13,`t`),yd(),da(14,`p`,8),WS(15),oC(16,`t`),yd(),da(17,`div`,9)(18,`label`,10)(19,`span`),WS(20),oC(21,`t`),yd(),da(22,`select`,11),oC(23,`t`),Ta(`change`,function(y){return o.pickCompare(`a`,y)}),gS(24,ce,2,3,`option`,12,M),yd()(),da(26,`label`,10)(27,`span`),WS(28),oC(29,`t`),yd(),da(30,`select`,11),oC(31,`t`),Ta(`change`,function(y){return o.pickCompare(`b`,y)}),gS(32,de,2,3,`option`,12,M),yd()()(),uS(34,ge,16,6)(35,ye,2,3,`ui-empty`,13),yd()),e&2){let d,y;Wm(`title`,sC(1,13,`profiles.title`))(`subtitle`,sC(2,15,`profiles.subtitle`)),hD(3),fS((d=o.error())?3:-1,d),hD(),fS(o.loading()?4:-1),hD(),fS((y=o.receipt())?5:-1,y),hD(2),mS(o.profiles()),hD(5),Jm(sC(13,17,`profiles.compare`)),hD(3),Jm(sC(16,19,`profiles.compare.hint`)),hD(5),Jm(sC(21,21,`profiles.compare.a`)),hD(2),Ar(`aria-label`,sC(23,23,`profiles.compare.a`)),hD(2),mS(o.profiles()),hD(4),Jm(sC(29,25,`profiles.compare.b`)),hD(2),Ar(`aria-label`,sC(31,27,`profiles.compare.b`)),hD(2),mS(o.profiles()),hD(2),fS(o.compareRows().length?34:o.profiles().length&&!o.loading()?35:-1)}},dependencies:[T,_,D,I,cE,k$1,aE],styles:[`.grid[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-4);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin-bottom:var(--%NS%space-4)}.card[data-current][_ngcontent-%COMP%]{border-color:color-mix(in srgb,var(--%NS%accent) 55%,transparent);background:linear-gradient(160deg,color-mix(in srgb,var(--%NS%accent) 7%,var(--%NS%bg-elevated)) 0%,var(--%NS%bg-elevated) 55%);box-shadow:var(--%NS%elev-card),0 0 0 1px color-mix(in srgb,var(--%NS%accent) 18%,transparent)}.card__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.card[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-weight:650;letter-spacing:-.01em;font-size:var(--%NS%font-lg)}.card__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;text-transform:capitalize;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.card__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);margin-top:0}.comps[_ngcontent-%COMP%]{list-style:none;padding:0;margin:var(--%NS%space-3) 0;display:flex;flex-wrap:wrap;gap:6px}.comps[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);padding:2px 8px;border-radius:var(--%NS%radius-pill);border:1px solid var(--%NS%border);color:var(--%NS%fg-muted)}.comps[_ngcontent-%COMP%] li[data-on][_ngcontent-%COMP%]{border-color:var(--%NS%ok);color:var(--%NS%ok)}.current[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:5px;color:var(--%NS%accent-ink);font-weight:600;font-size:var(--%NS%font-xs);background:var(--%NS%accent-bg);border:1px solid color-mix(in srgb,var(--%NS%accent) 35%,transparent);border-radius:var(--%NS%radius-pill);padding:2px var(--%NS%space-2)}.receipt[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.receipt__status[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);margin:0}.refusal[_ngcontent-%COMP%]{color:var(--%NS%warn)}.compare[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.compare__pickers[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-3);margin:var(--%NS%space-3) 0}.picker[_ngcontent-%COMP%]{display:grid;gap:4px;font-size:var(--%NS%font-sm);font-weight:600}.picker[_ngcontent-%COMP%] .input[_ngcontent-%COMP%]{min-width:180px}.compare__table[_ngcontent-%COMP%] td.on[_ngcontent-%COMP%]{color:var(--%NS%ok);font-weight:600}.compare__table[_ngcontent-%COMP%] td.off[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.compare__table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{vertical-align:-2px;margin-right:4px}.compare__table[_ngcontent-%COMP%] tr[data-diff][_ngcontent-%COMP%]{background:color-mix(in srgb,var(--%NS%accent) 7%,transparent)}.compare__table[_ngcontent-%COMP%] tr[data-diff][_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{border-left:3px solid var(--%NS%accent);font-weight:650}.compare__summary[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 0}`]})};export{G as ProfilesPage}; \ No newline at end of file diff --git a/portal/assets/chunk-B_bDidf_.js b/portal/assets/chunk-B_bDidf_.js new file mode 100644 index 0000000..2223d8d --- /dev/null +++ b/portal/assets/chunk-B_bDidf_.js @@ -0,0 +1 @@ +import{$ as dS,At as qm,Et as p,F as Sa,J as aC,Jt as vd,Mt as rE,P as SS,Q as cE,Qt as yS,S as Ma,Y as aE,Z as bd,at as ey,ct as hD,et as da,h as Ic,i as Ar,it as ei,kt as qS,p as Hh,s as DS,ut as hS,vt as lC,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{n,t as g}from"./main-XW2ZMSO5.js";import{t as T}from"./chunk-BGgpmc9t.js";var P=(d,o)=>o.id;function $(d,o){if(d&1){let e=DS();da(0,`label`,3)(1,`input`,8),Ma(`change`,function(){let c=Hh(e).$implicit,u=SS();return Vh(u.setLocale(c.id))}),vd(),da(2,`span`),qS(3),aC(4,`t`),vd()()}if(d&2){let e=o.$implicit,p=SS();Ar(`data-active`,p.i18n.preference()===e.id||null),hD(),qm(`value`,e.id)(`checked`,p.i18n.preference()===e.id),hD(2),ey(lC(4,4,e.label))}}function L(d,o){if(d&1){let e=DS();da(0,`label`,3)(1,`input`,9),Ma(`change`,function(){let c=Hh(e).$implicit,u=SS();return Vh(u.setScheme(c.id))}),vd(),Sa(2,`ui-icon`,10),da(3,`span`),qS(4),aC(5,`t`),vd()()}if(d&2){let e=o.$implicit,p=SS();Ar(`data-active`,p.theme.scheme()===e.id||null),hD(),qm(`value`,e.id)(`checked`,p.theme.scheme()===e.id),hD(),qm(`name`,p.schemeIcon(e.id))(`size`,15),hD(2),ey(lC(5,6,e.label))}}function z(d,o){if(d&1){let e=DS();da(0,`label`,3)(1,`input`,11),Ma(`change`,function(){let c=Hh(e).$implicit,u=SS();return Vh(u.setDensity(c.id))}),vd(),da(2,`span`),qS(3),aC(4,`t`),vd()()}if(d&2){let e=o.$implicit,p=SS();Ar(`data-active`,p.prefs.density()===e.id||null),hD(),qm(`value`,e.id)(`checked`,p.prefs.density()===e.id),hD(2),ey(lC(4,4,e.label))}}function H(d,o){if(d&1){let e=DS();da(0,`label`,3)(1,`input`,12),Ma(`change`,function(){let c=Hh(e).$implicit,u=SS();return Vh(u.setMotion(c.id))}),vd(),da(2,`span`),qS(3),aC(4,`t`),vd()()}if(d&2){let e=o.$implicit,p=SS();Ar(`data-active`,p.prefs.motion()===e.id||null),hD(),qm(`value`,e.id)(`checked`,p.prefs.motion()===e.id),hD(2),ey(lC(4,4,e.label))}}function j(d,o){if(d&1&&(da(0,`dl`,7)(1,`div`)(2,`dt`),qS(3),aC(4,`t`),vd(),da(5,`dd`),qS(6),vd()(),da(7,`div`)(8,`dt`),qS(9),aC(10,`t`),vd(),da(11,`dd`),qS(12),vd()(),da(13,`div`)(14,`dt`),qS(15),aC(16,`t`),vd(),da(17,`dd`),qS(18),vd()(),da(19,`div`)(20,`dt`),qS(21),aC(22,`t`),vd(),da(23,`dd`)(24,`code`),qS(25),vd()()(),da(26,`div`)(27,`dt`),qS(28),aC(29,`t`),vd(),da(30,`dd`),qS(31),aC(32,`t`),vd()()()),d&2){let e=o;hD(3),ey(lC(4,10,`settings.forge`)),hD(3),ey(e.forge_name),hD(3),ey(lC(10,12,`settings.version`)),hD(3),ey(e.forge_version),hD(3),ey(lC(16,14,`settings.portalVersion`)),hD(3),ey(e.portal_version),hD(3),ey(lC(22,16,`settings.cli`)),hD(4),ey(e.cli),hD(3),ey(lC(29,18,`settings.federated`)),hD(3),ey(lC(32,20,e.federated?`state.yes`:`state.no`))}}var F=class d{store=p(g);i18n=p(Ic);theme=p(n);prefs=p(rE);localeOpts=[{id:`automatic`,label:`settings.language.auto`},{id:`pt-BR`,label:`settings.language.pt`},{id:`en`,label:`settings.language.en`}];schemeOpts=[{id:`system`,label:`settings.theme.system`},{id:`light`,label:`settings.theme.light`},{id:`dark`,label:`settings.theme.dark`}];densityOpts=[{id:`comfortable`,label:`settings.density.comfortable`},{id:`compact`,label:`settings.density.compact`}];motionOpts=[{id:`system`,label:`settings.motion.system`},{id:`full`,label:`settings.motion.full`},{id:`reduced`,label:`settings.motion.reduced`}];setLocale(o){this.i18n.applyPreference(o)}setScheme(o){this.theme.setScheme(o)}setDensity(o){this.prefs.setDensity(o)}setMotion(o){this.prefs.setMotion(o)}schemeIcon(o){return o===`dark`?`moon`:o===`light`?`sun`:`contrast`}static ɵfac=function(e){return new(e||d)};static ɵcmp=ei({type:d,selectors:[[`page-settings`]],decls:53,vars:47,consts:[[3,`title`,`subtitle`],[1,`card`],[`role`,`radiogroup`,1,`opts`],[1,`opt`],[1,`muted`],[1,`btn`,3,`click`,`disabled`],[1,`muted`,`privacy`],[1,`kv`],[`type`,`radio`,`name`,`locale`,3,`change`,`value`,`checked`],[`type`,`radio`,`name`,`scheme`,3,`change`,`value`,`checked`],[3,`name`,`size`],[`type`,`radio`,`name`,`density`,3,`change`,`value`,`checked`],[`type`,`radio`,`name`,`motion`,3,`change`,`value`,`checked`]],template:function(e,p){if(e&1&&(Sa(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),da(3,`section`,1)(4,`h2`),qS(5),aC(6,`t`),vd(),da(7,`div`,2),aC(8,`t`),mS(9,$,5,6,`label`,3,P),vd()(),da(11,`section`,1)(12,`h2`),qS(13),aC(14,`t`),vd(),da(15,`div`,2),aC(16,`t`),mS(17,L,6,8,`label`,3,P),vd()(),da(19,`section`,1)(20,`h2`),qS(21),aC(22,`t`),vd(),da(23,`div`,2),aC(24,`t`),mS(25,z,5,6,`label`,3,P),vd()(),da(27,`section`,1)(28,`h2`),qS(29),aC(30,`t`),vd(),da(31,`div`,2),aC(32,`t`),mS(33,H,5,6,`label`,3,P),vd()(),da(35,`section`,1)(36,`h2`),qS(37),aC(38,`t`),vd(),da(39,`p`,4),qS(40),aC(41,`t`),vd(),da(42,`button`,5),Ma(`click`,function(){return p.prefs.resetHints()}),qS(43),aC(44,`t`),vd()(),da(45,`p`,6),qS(46),aC(47,`t`),vd(),da(48,`section`,1)(49,`h2`),qS(50),aC(51,`t`),vd(),dS(52,j,33,22,`dl`,7),vd()),e&2){let c;qm(`title`,lC(1,17,`settings.title`))(`subtitle`,lC(2,19,`settings.subtitle`)),hD(5),ey(lC(6,21,`settings.language`)),hD(2),Ar(`aria-label`,lC(8,23,`settings.language`)),hD(2),yS(p.localeOpts),hD(4),ey(lC(14,25,`settings.theme`)),hD(2),Ar(`aria-label`,lC(16,27,`settings.theme`)),hD(2),yS(p.schemeOpts),hD(4),ey(lC(22,29,`settings.density`)),hD(2),Ar(`aria-label`,lC(24,31,`settings.density`)),hD(2),yS(p.densityOpts),hD(4),ey(lC(30,33,`settings.motion`)),hD(2),Ar(`aria-label`,lC(32,35,`settings.motion`)),hD(2),yS(p.motionOpts),hD(4),ey(lC(38,37,`settings.hints`)),hD(3),ey(lC(41,39,`settings.hints.hint`)),hD(2),qm(`disabled`,p.prefs.dismissedHints().length===0),hD(),bd(` `,lC(44,41,`settings.hints.reset`),` `),hD(3),ey(lC(47,43,`settings.privacy`)),hD(4),ey(lC(51,45,`settings.about`)),hD(2),hS((c=p.store.descriptor())?52:-1,c)}},dependencies:[T,cE,aE],styles:[`.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);max-width:640px}h2[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em}.opts[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2)}.opt[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);padding:8px var(--%NS%space-3);cursor:pointer;transition:border-color var(--%NS%motion-fast),background var(--%NS%motion-fast),box-shadow var(--%NS%motion-fast)}.opt[_ngcontent-%COMP%]:hover{border-color:var(--%NS%border-strong);background:var(--%NS%bg-hover)}.opt[_ngcontent-%COMP%]:focus-within{border-color:var(--%NS%fg-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--%NS%fg-focus) 22%,transparent)}.opt[data-active][_ngcontent-%COMP%]{border-color:color-mix(in srgb,var(--%NS%accent) 55%,transparent);background:var(--%NS%accent-bg);box-shadow:0 0 0 1px color-mix(in srgb,var(--%NS%accent) 22%,transparent);font-weight:550}.opt[_ngcontent-%COMP%] input[type=radio][_ngcontent-%COMP%]{accent-color:var(--%NS%accent-ink)}.opt[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.opt[data-active][_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.kv[_ngcontent-%COMP%]{display:grid;margin:0}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-2);padding:var(--%NS%space-2) 0;border-bottom:1px solid var(--%NS%border)}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]:last-child{border-bottom:none}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);min-width:140px}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;font-weight:500}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.privacy[_ngcontent-%COMP%]{max-width:640px;margin:0 0 var(--%NS%space-4);font-size:var(--%NS%font-xs)}`]})};export{F as SettingsPage}; \ No newline at end of file diff --git a/portal/assets/chunk-BefGrJ9d.js b/portal/assets/chunk-BefGrJ9d.js new file mode 100644 index 0000000..d671af7 --- /dev/null +++ b/portal/assets/chunk-BefGrJ9d.js @@ -0,0 +1,5 @@ +import{i as m,n as t,r as l}from"./chunk-BYYLUO5t.js";function tr(e){let n=e(r=>{Error.call(r),r.stack=new Error().stack});return n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n}var ht=tr(e=>function(){e(this),this.name=`EmptyError`,this.message=`no elements in sequence`});function N(e){return typeof e==`function`}var Ri=tr(e=>function(n){e(this),this.message=n?`${n.length} errors occurred during unsubscription: +${n.map((r,o)=>`${o+1}) ${r.toString()}`).join(` + `)}`:``,this.name=`UnsubscriptionError`,this.errors=n});function Xr(e,t){if(e){let n=e.indexOf(t);0<=n&&e.splice(n,1)}}var ae=class e{constructor(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let t;if(!this.closed){this.closed=!0;let{_parentage:n}=this;if(n)if(this._parentage=null,Array.isArray(n))for(let i of n)i.remove(this);else n.remove(this);let{initialTeardown:r}=this;if(N(r))try{r()}catch(i){t=i instanceof Ri?i.errors:[i]}let{_finalizers:o}=this;if(o){this._finalizers=null;for(let i of o)try{Tf(i)}catch(s){t=t??[],s instanceof Ri?t=[...t,...s.errors]:t.push(s)}}if(t)throw new Ri(t)}}add(t){var n;if(t&&t!==this)if(this.closed)Tf(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(n=this._finalizers)!==null&&n!==void 0?n:[]).push(t)}}_hasParent(t){let{_parentage:n}=this;return n===t||Array.isArray(n)&&n.includes(t)}_addParent(t){let{_parentage:n}=this;this._parentage=Array.isArray(n)?(n.push(t),n):n?[n,t]:t}_removeParent(t){let{_parentage:n}=this;n===t?this._parentage=null:Array.isArray(n)&&Xr(n,t)}remove(t){let{_finalizers:n}=this;n&&Xr(n,t),t instanceof e&&t._removeParent(this)}};ae.EMPTY=(()=>{let e=new ae;return e.closed=!0,e})();var Sc=ae.EMPTY;function xi(e){return e instanceof ae||e&&`closed`in e&&N(e.remove)&&N(e.add)&&N(e.unsubscribe)}function Tf(e){N(e)?e():e.unsubscribe()}var We={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var nr={setTimeout(e,t,...n){let{delegate:r}=nr;return r?.setTimeout?r.setTimeout(e,t,...n):setTimeout(e,t,...n)},clearTimeout(e){let{delegate:t}=nr;return(t?.clearTimeout||clearTimeout)(e)},delegate:void 0};function Ai(e){nr.setTimeout(()=>{let{onUnhandledError:t}=We;if(t)t(e);else throw e})}function Jr(){}var Mf=Cc(`C`,void 0,void 0);function _f(e){return Cc(`E`,void 0,e)}function Nf(e){return Cc(`N`,e,void 0)}function Cc(e,t,n){return{kind:e,value:t,error:n}}var un=null;function rr(e){if(We.useDeprecatedSynchronousErrorHandling){let t=!un;if(t&&(un={errorThrown:!1,error:null}),e(),t){let{errorThrown:n,error:r}=un;if(un=null,n)throw r}}else e()}function Rf(e){We.useDeprecatedSynchronousErrorHandling&&un&&(un.errorThrown=!0,un.error=e)}var dn=class extends ae{constructor(t){super(),this.isStopped=!1,t?(this.destination=t,xi(t)&&t.add(this)):this.destination=fE}static create(t,n,r){return new Lt(t,n,r)}next(t){this.isStopped?Mc(Nf(t),this):this._next(t)}error(t){this.isStopped?Mc(_f(t),this):(this.isStopped=!0,this._error(t))}complete(){this.isStopped?Mc(Mf,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(t){this.destination.next(t)}_error(t){try{this.destination.error(t)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}};var uE=Function.prototype.bind;function Tc(e,t){return uE.call(e,t)}var _c=class{constructor(t){this.partialObserver=t}next(t){let{partialObserver:n}=this;if(n.next)try{n.next(t)}catch(r){Oi(r)}}error(t){let{partialObserver:n}=this;if(n.error)try{n.error(t)}catch(r){Oi(r)}else Oi(t)}complete(){let{partialObserver:t}=this;if(t.complete)try{t.complete()}catch(n){Oi(n)}}};var Lt=class extends dn{constructor(t,n,r){super();let o;if(N(t)||!t)o={next:t??void 0,error:n??void 0,complete:r??void 0};else{let i;this&&We.useDeprecatedNextContext?(i=Object.create(t),i.unsubscribe=()=>this.unsubscribe(),o={next:t.next&&Tc(t.next,i),error:t.error&&Tc(t.error,i),complete:t.complete&&Tc(t.complete,i)}):o=t}this.destination=new _c(o)}};function Oi(e){We.useDeprecatedSynchronousErrorHandling?Rf(e):Ai(e)}function dE(e){throw e}function Mc(e,t){let{onStoppedNotification:n}=We;n&&nr.setTimeout(()=>n(e,t))}var fE={closed:!0,next:Jr,error:dE,complete:Jr};function hE(e,t){let n=typeof t==`object`;return new Promise((r,o)=>{let i=new Lt({next:s=>{r(s),i.unsubscribe()},error:o,complete:()=>{n?r(t.defaultValue):o(new ht)}});e.subscribe(i)})}var or=typeof Symbol==`function`&&Symbol.observable||`@@observable`;function qe(e){return e}function ki(...e){return Nc(e)}function Nc(e){return e.length===0?qe:e.length===1?e[0]:function(n){return e.reduce((r,o)=>o(r),n)}}var A=class e{constructor(t){t&&(this._subscribe=t)}lift(t){let n=new e;return n.source=this,n.operator=t,n}subscribe(t,n,r){let o=gE(t)?t:new Lt(t,n,r);return rr(()=>{let{operator:i,source:s}=this;o.add(i?i.call(o,s):s?this._subscribe(o):this._trySubscribe(o))}),o}_trySubscribe(t){try{return this._subscribe(t)}catch(n){t.error(n)}}forEach(t,n){return n=xf(n),new n((r,o)=>{let i=new Lt({next:s=>{try{t(s)}catch(a){o(a),i.unsubscribe()}},error:o,complete:r});this.subscribe(i)})}_subscribe(t){var n;return(n=this.source)===null||n===void 0?void 0:n.subscribe(t)}[or](){return this}pipe(...t){return Nc(t)(this)}toPromise(t){return t=xf(t),new t((n,r)=>{let o;this.subscribe(i=>o=i,i=>r(i),()=>n(o))})}};A.create=e=>new A(e);function xf(e){var t;return(t=e??We.Promise)!==null&&t!==void 0?t:Promise}function pE(e){return e&&N(e.next)&&N(e.error)&&N(e.complete)}function gE(e){return e&&e instanceof dn||pE(e)&&xi(e)}function mE(e){return N(e?.lift)}function U(e){return t=>{if(mE(t))return t.lift(function(n){try{return e(n,this)}catch(r){this.error(r)}});throw new TypeError(`Unable to lift unknown Observable type`)}}function H(e,t,n,r,o){return new Rc(e,t,n,r,o)}var Rc=class extends dn{constructor(t,n,r,o,i,s){super(t),this.onFinalize=i,this.shouldUnsubscribe=s,this._next=n?function(a){try{n(a)}catch(c){t.error(c)}}:super._next,this._error=o?function(a){try{o(a)}catch(c){t.error(c)}finally{this.unsubscribe()}}:super._error,this._complete=r?function(){try{r()}catch(a){t.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){let{closed:n}=this;super.unsubscribe(),!n&&((t=this.onFinalize)===null||t===void 0||t.call(this))}}};var Af=tr(e=>function(){e(this),this.name=`ObjectUnsubscribedError`,this.message=`object unsubscribed`});var ee=class extends A{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(t){let n=new Pi(this,this);return n.operator=t,n}_throwIfClosed(){if(this.closed)throw new Af}next(t){rr(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(let n of this.currentObservers)n.next(t)}})}error(t){rr(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=t;let{observers:n}=this;for(;n.length;)n.shift().error(t)}})}complete(){rr(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;let{observers:t}=this;for(;t.length;)t.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var t;return((t=this.observers)===null||t===void 0?void 0:t.length)>0}_trySubscribe(t){return this._throwIfClosed(),super._trySubscribe(t)}_subscribe(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)}_innerSubscribe(t){let{hasError:n,isStopped:r,observers:o}=this;return n||r?Sc:(this.currentObservers=null,o.push(t),new ae(()=>{this.currentObservers=null,Xr(o,t)}))}_checkFinalizedStatuses(t){let{hasError:n,thrownError:r,isStopped:o}=this;n?t.error(r):o&&t.complete()}asObservable(){let t=new A;return t.source=this,t}};ee.create=(e,t)=>new Pi(e,t);var Pi=class extends ee{constructor(t,n){super(),this.destination=t,this.source=n}next(t){var n,r;(r=(n=this.destination)===null||n===void 0?void 0:n.next)===null||r===void 0||r.call(n,t)}error(t){var n,r;(r=(n=this.destination)===null||n===void 0?void 0:n.error)===null||r===void 0||r.call(n,t)}complete(){var t,n;(n=(t=this.destination)===null||t===void 0?void 0:t.complete)===null||n===void 0||n.call(t)}_subscribe(t){var n,r;return(r=(n=this.source)===null||n===void 0?void 0:n.subscribe(t))!==null&&r!==void 0?r:Sc}};var ce=class extends ee{constructor(t){super(),this._value=t}get value(){return this.getValue()}_subscribe(t){let n=super._subscribe(t);return!n.closed&&t.next(this._value),n}getValue(){let{hasError:t,thrownError:n,_value:r}=this;if(t)throw n;return this._throwIfClosed(),r}next(t){super.next(this._value=t)}};var le=new A(e=>e.complete());function Of(e){return e&&N(e.schedule)}function kf(e){return e[e.length-1]}function Li(e){return N(kf(e))?e.pop():void 0}function Ft(e){return Of(kf(e))?e.pop():void 0}function Lf(e,t,n,r){function o(i){return i instanceof n?i:new n(function(s){s(i)})}return new(n||(n=Promise))(function(i,s){function a(u){try{l(r.next(u))}catch(d){s(d)}}function c(u){try{l(r.throw(u))}catch(d){s(d)}}function l(u){u.done?i(u.value):o(u.value).then(a,c)}l((r=r.apply(e,t||[])).next())})}function Pf(e){var t=typeof Symbol==`function`&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length==`number`)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)}function fn(e){return this instanceof fn?(this.v=e,this):new fn(e)}function Ff(e,t,n){if(!Symbol.asyncIterator)throw new TypeError(`Symbol.asyncIterator is not defined.`);var r=n.apply(e,t||[]),o,i=[];return o=Object.create((typeof AsyncIterator==`function`?AsyncIterator:Object).prototype),a(`next`),a(`throw`),a(`return`,s),o[Symbol.asyncIterator]=function(){return this},o;function s(f){return function(g){return Promise.resolve(g).then(f,d)}}function a(f,g){r[f]&&(o[f]=function(D){return new Promise(function(E,_){i.push([f,D,E,_])>1||c(f,D)})},g&&(o[f]=g(o[f])))}function c(f,g){try{l(r[f](g))}catch(D){h(i[0][3],D)}}function l(f){f.value instanceof fn?Promise.resolve(f.value.v).then(u,d):h(i[0][2],f)}function u(f){c(`next`,f)}function d(f){c(`throw`,f)}function h(f,g){f(g),i.shift(),i.length&&c(i[0][0],i[0][1])}}function jf(e){if(!Symbol.asyncIterator)throw new TypeError(`Symbol.asyncIterator is not defined.`);var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof Pf==`function`?Pf(e):e[Symbol.iterator](),n={},r(`next`),r(`throw`),r(`return`),n[Symbol.asyncIterator]=function(){return this},n);function r(i){n[i]=e[i]&&function(s){return new Promise(function(a,c){s=e[i](s),o(a,c,s.done,s.value)})}}function o(i,s,a,c){Promise.resolve(c).then(function(l){i({value:l,done:a})},s)}}var Fi=(e=>e&&typeof e.length==`number`&&typeof e!=`function`);function ji(e){return N(e?.then)}function Ui(e){return N(e[or])}function Hi(e){return Symbol.asyncIterator&&N(e?.[Symbol.asyncIterator])}function Vi(e){return new TypeError(`You provided ${e!==null&&typeof e==`object`?`an invalid object`:`'${e}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}function yE(){return typeof Symbol!=`function`||!Symbol.iterator?`@@iterator`:Symbol.iterator}var $i=yE();function Bi(e){return N(e?.[$i])}function zi(e){return Ff(this,arguments,function*(){let n=e.getReader();try{for(;;){let{value:r,done:o}=yield fn(n.read());if(o)return yield fn(void 0);yield yield fn(r)}}finally{n.releaseLock()}})}function Wi(e){return N(e?.getReader)}function re(e){if(e instanceof A)return e;if(e!=null){if(Ui(e))return vE(e);if(Fi(e))return EE(e);if(ji(e))return IE(e);if(Hi(e))return Uf(e);if(Bi(e))return wE(e);if(Wi(e))return DE(e)}throw Vi(e)}function vE(e){return new A(t=>{let n=e[or]();if(N(n.subscribe))return n.subscribe(t);throw new TypeError(`Provided object does not correctly implement Symbol.observable`)})}function EE(e){return new A(t=>{for(let n=0;n{e.then(n=>{t.closed||(t.next(n),t.complete())},n=>t.error(n)).then(null,Ai)})}function wE(e){return new A(t=>{for(let n of e)if(t.next(n),t.closed)return;t.complete()})}function Uf(e){return new A(t=>{bE(e,t).catch(n=>t.error(n))})}function DE(e){return Uf(zi(e))}function bE(e,t){var n,r,o,i;return Lf(this,void 0,void 0,function*(){try{for(n=jf(e);r=yield n.next(),!r.done;){let s=r.value;if(t.next(s),t.closed)return}}catch(s){o={error:s}}finally{try{r&&!r.done&&(i=n.return)&&(yield i.call(n))}finally{if(o)throw o.error}}t.complete()})}function Ce(e,t,n,r=0,o=!1){let i=t.schedule(function(){n(),o?e.add(this.schedule(null,r)):this.unsubscribe()},r);if(e.add(i),!o)return i}function qi(e,t=0){return U((n,r)=>{n.subscribe(H(r,o=>Ce(r,e,()=>r.next(o),t),()=>Ce(r,e,()=>r.complete(),t),o=>Ce(r,e,()=>r.error(o),t)))})}function Gi(e,t=0){return U((n,r)=>{r.add(e.schedule(()=>n.subscribe(r),t))})}function Hf(e,t){return re(e).pipe(Gi(t),qi(t))}function Vf(e,t){return re(e).pipe(Gi(t),qi(t))}function $f(e,t){return new A(n=>{let r=0;return t.schedule(function(){r===e.length?n.complete():(n.next(e[r++]),n.closed||this.schedule())})})}function Bf(e,t){return new A(n=>{let r;return Ce(n,t,()=>{r=e[$i](),Ce(n,t,()=>{let o,i;try{({value:o,done:i}=r.next())}catch(s){n.error(s);return}i?n.complete():n.next(o)},0,!0)}),()=>N(r?.return)&&r.return()})}function Qi(e,t){if(!e)throw new Error(`Iterable cannot be null`);return new A(n=>{Ce(n,t,()=>{let r=e[Symbol.asyncIterator]();Ce(n,t,()=>{r.next().then(o=>{o.done?n.complete():n.next(o.value)})},0,!0)})})}function zf(e,t){return Qi(zi(e),t)}function Wf(e,t){if(e!=null){if(Ui(e))return Hf(e,t);if(Fi(e))return $f(e,t);if(ji(e))return Vf(e,t);if(Hi(e))return Qi(e,t);if(Bi(e))return Bf(e,t);if(Wi(e))return zf(e,t)}throw Vi(e)}function te(e,t){return t?Wf(e,t):re(e)}function R(...e){return te(e,Ft(e))}function xc(e,t){let n=N(e)?e:()=>e,r=o=>o.error(n());return new A(t?o=>t.schedule(r,0,o):r)}function Zi(e){return!!e&&(e instanceof A||N(e.lift)&&N(e.subscribe))}function $(e,t){return U((n,r)=>{let o=0;n.subscribe(H(r,i=>{r.next(e.call(t,i,o++))}))})}var{isArray:SE}=Array;function CE(e,t){return SE(t)?e(...t):e(t)}function Yi(e){return $(t=>CE(e,t))}var{isArray:TE}=Array,{getPrototypeOf:ME,prototype:_E,keys:NE}=Object;function Ki(e){if(e.length===1){let t=e[0];if(TE(t))return{args:t,keys:null};if(RE(t)){let n=NE(t);return{args:n.map(r=>t[r]),keys:n}}}return{args:e,keys:null}}function RE(e){return e&&typeof e==`object`&&ME(e)===_E}function Xi(e,t){return e.reduce((n,r,o)=>(n[r]=t[o],n),{})}function Ji(...e){let t=Ft(e),n=Li(e),{args:r,keys:o}=Ki(e);if(r.length===0)return te([],t);let i=new A(xE(r,t,o?s=>Xi(o,s):qe));return n?i.pipe(Yi(n)):i}function xE(e,t,n=qe){return r=>{qf(t,()=>{let{length:o}=e,i=new Array(o),s=o,a=o;for(let c=0;c{let l=te(e[c],t),u=!1;l.subscribe(H(r,d=>{i[c]=d,u||(u=!0,a--),a||r.next(n(i.slice()))},()=>{--s||r.complete()}))},r)},r)}}function qf(e,t,n){e?Ce(n,e,t):t()}function Gf(e,t,n,r,o,i,s,a){let c=[],l=0,u=0,d=!1,h=()=>{d&&!c.length&&!l&&t.complete()},f=D=>l{i&&t.next(D),l++;let E=!1;re(n(D,u++)).subscribe(H(t,_=>{o?.(_),i?f(_):t.next(_)},()=>{E=!0},void 0,()=>{if(E)try{for(l--;c.length&&lg(_)):g(_)}h()}catch(_){t.error(_)}}))};return e.subscribe(H(t,f,()=>{d=!0,h()})),()=>{a?.()}}function me(e,t,n=1/0){return N(t)?me((r,o)=>$((i,s)=>t(r,i,o,s))(re(e(r,o))),n):(typeof t==`number`&&(n=t),U((r,o)=>Gf(r,o,e,n)))}function ir(e=1/0){return me(qe,e)}function Qf(){return ir(1)}function sr(...e){return Qf()(te(e,Ft(e)))}function eo(e){return new A(t=>{re(e()).subscribe(t)})}function AE(...e){let t=Li(e),{args:n,keys:r}=Ki(e),o=new A(i=>{let{length:s}=n;if(!s){i.complete();return}let a=new Array(s),c=s,l=s;for(let u=0;u{d||(d=!0,l--),a[u]=h},()=>c--,void 0,()=>{(!c||!d)&&(l||i.next(r?Xi(r,a):a),i.complete())}))}});return t?o.pipe(Yi(t)):o}function Pe(e,t){return U((n,r)=>{let o=0;n.subscribe(H(r,i=>e.call(t,i,o++)&&r.next(i)))})}function hn(e){return U((t,n)=>{let r=null,o=!1,i;r=t.subscribe(H(n,void 0,void 0,s=>{i=re(e(s,hn(e)(t))),r?(r.unsubscribe(),r=null,i.subscribe(n)):o=!0})),o&&(r.unsubscribe(),r=null,i.subscribe(n))})}function pn(e,t){return N(t)?me(e,t,1):me(e,1)}function Zf(e){return U((t,n)=>{let r=!1;t.subscribe(H(n,o=>{r=!0,n.next(o)},()=>{r||n.next(e),n.complete()}))})}function pt(e){return e<=0?()=>le:U((t,n)=>{let r=0;t.subscribe(H(n,o=>{++r<=e&&(n.next(o),e<=r&&n.complete())}))})}function Yf(e=OE){return U((t,n)=>{let r=!1;t.subscribe(H(n,o=>{r=!0,n.next(o)},()=>r?n.complete():n.error(e())))})}function OE(){return new ht}function to(e){return U((t,n)=>{try{t.subscribe(n)}finally{n.add(e)}})}function gt(e,t){let n=arguments.length>=2;return r=>r.pipe(e?Pe((o,i)=>e(o,i,r)):qe,pt(1),n?Zf(t):Yf(()=>new ht))}function es(e){return e<=0?()=>le:U((t,n)=>{let r=[];t.subscribe(H(n,o=>{r.push(o),e{for(let o of r)n.next(o);n.complete()},void 0,()=>{r=null}))})}function Ac(...e){let t=Ft(e);return U((n,r)=>{(t?sr(e,n,t):sr(e,n)).subscribe(r)})}function Te(e,t){return U((n,r)=>{let o=null,i=0,s=!1,a=()=>s&&!o&&r.complete();n.subscribe(H(r,c=>{o?.unsubscribe();let l=0,u=i++;re(e(c,u)).subscribe(o=H(r,d=>r.next(t?t(c,d,u,l++):d),()=>{o=null,a()}))},()=>{s=!0,a()}))})}function no(e){return U((t,n)=>{re(e).subscribe(H(n,()=>n.complete(),Jr)),!n.closed&&t.subscribe(n)})}function Le(e,t,n){let r=N(e)||t||n?{next:e,error:t,complete:n}:e;return r?U((o,i)=>{var s;(s=r.subscribe)===null||s===void 0||s.call(r);let a=!0;o.subscribe(H(i,c=>{var l;(l=r.next)===null||l===void 0||l.call(r,c),i.next(c)},()=>{var c;a=!1,(c=r.complete)===null||c===void 0||c.call(r),i.complete()},c=>{var l;a=!1,(l=r.error)===null||l===void 0||l.call(r,c),i.error(c)},()=>{var c,l;a&&((c=r.unsubscribe)===null||c===void 0||c.call(r)),(l=r.finalize)===null||l===void 0||l.call(r)}))}):qe}var Ie=null;var ts=!1;var gn=1;var kE=null;var Y=Symbol(`SIGNAL`);function I(e){let t=Ie;return Ie=e,t}function ns(){return Ie}var jt={version:0,lastCleanEpoch:0,dirty:!1,producers:void 0,producersTail:void 0,consumers:void 0,consumersTail:void 0,recomputing:!1,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,kind:`unknown`,producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function mt(e){if(ts)throw new Error(``);if(Ie===null)return;Ie.consumerOnSignalRead(e);let t=Ie.producersTail;if(t!==void 0&&t.producer===e)return;let n,r=Ie.recomputing;if(r&&(n=t!==void 0?t.nextProducer:Ie.producers,n!==void 0&&n.producer===e)){Ie.producersTail=n,n.lastReadVersion=e.version,n.knownValidAtEpoch=gn;return}let o=e.consumersTail;if(o!==void 0&&o.consumer===Ie&&(!r||o.knownValidAtEpoch===gn))return;let i=cr(Ie),s={producer:e,consumer:Ie,nextProducer:n,prevConsumer:void 0,knownValidAtEpoch:gn,lastReadVersion:e.version,nextConsumer:void 0};Ie.producersTail=s,t!==void 0?t.nextProducer=s:Ie.producers=s,i&&eh(e,s)}function Kf(){gn++}function Ut(e){if(!(cr(e)&&!e.dirty)&&!(!e.dirty&&e.lastCleanEpoch===gn)){if(!e.producerMustRecompute(e)&&!ro(e)){ar(e);return}e.producerRecomputeValue(e),ar(e)}}function Oc(e){if(e.consumers===void 0)return;let t=ts;ts=!0;try{for(let n=e.consumers;n!==void 0;n=n.nextConsumer){let r=n.consumer;r.dirty||PE(r)}}finally{ts=t}}function kc(){return Ie?.consumerAllowSignalWrites!==!1}function PE(e){e.dirty=!0,Oc(e),e.consumerMarkedDirty?.(e)}function ar(e){e.dirty=!1,e.lastCleanEpoch=gn}function Ht(e){return e&&Xf(e),I(e)}function Xf(e){if(e.producersTail?.knownValidAtEpoch===gn){let t=e.producers;for(;t!==void 0;)t.knownValidAtEpoch=null,t=t.nextProducer}e.producersTail=void 0,e.recomputing=!0}function vn(e,t){I(t),e&&Jf(e)}function Jf(e){e.recomputing=!1;let t=e.producersTail,n=t!==void 0?t.nextProducer:e.producers;if(n!==void 0){if(cr(e))do n=Pc(n);while(n!==void 0);t!==void 0?t.nextProducer=void 0:e.producers=void 0}}function ro(e){for(let t=e.producers;t!==void 0;t=t.nextProducer){let n=t.producer,r=t.lastReadVersion;if(r!==n.version||(Ut(n),r!==n.version))return!0}return!1}function En(e){if(cr(e)){let t=e.producers;for(;t!==void 0;)t=Pc(t)}e.producers=void 0,e.producersTail=void 0,e.consumers=void 0,e.consumersTail=void 0}function eh(e,t){let n=e.consumersTail,r=cr(e);if(n!==void 0?(t.nextConsumer=n.nextConsumer,n.nextConsumer=t):(t.nextConsumer=void 0,e.consumers=t),t.prevConsumer=n,e.consumersTail=t,!r)for(let o=e.producers;o!==void 0;o=o.nextProducer)eh(o.producer,o)}function Pc(e){let t=e.producer,n=e.nextProducer,r=e.nextConsumer,o=e.prevConsumer;if(e.nextConsumer=void 0,e.prevConsumer=void 0,r!==void 0?r.prevConsumer=o:t.consumersTail=o,o!==void 0)o.nextConsumer=r;else if(t.consumers=r,!cr(t)){let i=t.producers;for(;i!==void 0;)i=Pc(i)}return n}function cr(e){return e.consumerIsAlwaysLive||e.consumers!==void 0}function oo(e){kE?.(e)}function io(e,t){return Object.is(e,t)}function so(e,t){let n=Object.create(LE);n.computation=e,t!==void 0&&(n.equal=t);let r=()=>{if(Ut(n),mt(n),n.value===Fe)throw n.error;return n.value};return r[Y]=n,oo(n),r}var mn=Symbol(`UNSET`);var yn=Symbol(`COMPUTING`);var Fe=Symbol(`ERRORED`);var LE=m(l({},jt),{value:mn,dirty:!0,error:null,equal:io,kind:`computed`,producerMustRecompute(e){return e.value===mn||e.value===yn},producerRecomputeValue(e){if(e.value===yn)throw new Error(``);let t=e.value;e.value=yn;let n=Ht(e),r,o=!1;try{r=e.computation(),I(null),o=t!==mn&&t!==Fe&&r!==Fe&&e.equal(t,r)}catch(i){r=Fe,e.error=i}finally{vn(e,n)}if(o){e.value=t;return}e.value=r,e.version++}});function FE(){throw new Error}var th=FE;function nh(e){th(e)}function Lc(e){th=e}var jE=null;function Fc(e,t){let n=Object.create(ao);n.value=e,t!==void 0&&(n.equal=t);let r=()=>rh(n);return r[Y]=n,oo(n),[r,s=>yt(n,s),s=>rs(n,s)]}function rh(e){return mt(e),e.value}function yt(e,t){kc()||nh(e),e.equal(e.value,t)||(e.value=t,UE(e))}function rs(e,t){kc()||nh(e),yt(e,t(e.value))}var ao=m(l({},jt),{equal:io,value:void 0,kind:`signal`});function UE(e){e.version++,Kf(),Oc(e),jE?.(e)}var jc=m(l({},jt),{consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,dirty:!0,kind:`effect`});function Uc(e){if(e.dirty=!1,e.version>0&&!ro(e))return;e.version++;let t=Ht(e);try{e.cleanup(),e.fn()}finally{vn(e,t)}}var Hc;function os(){return Hc}function et(e){let t=Hc;return Hc=e,t}var oh=Symbol(`NotFound`);function lr(e){return e===oh||e?.name===`ɵNotFound`}function Vc(e,t,n){let r=Object.create(HE);r.source=e,r.computation=t,n!=null&&(r.equal=n);let i=()=>{if(Ut(r),mt(r),r.value===Fe)throw r.error;return r.value};return i[Y]=r,oo(r),i}function $c(e,t){Ut(e),yt(e,t),ar(e)}function ih(e,t){if(Ut(e),e.value===Fe)throw e.error;rs(e,t),ar(e)}var HE=m(l({},jt),{value:mn,dirty:!0,error:null,equal:io,kind:`linkedSignal`,producerMustRecompute(e){return e.value===mn||e.value===yn},producerRecomputeValue(e){if(e.value===yn)throw new Error(``);let t=e.value;e.value=yn;let n=Ht(e),r,o=!1;try{let i=e.source(),s=t!==mn&&t!==Fe,a=s?{source:e.sourceValue,value:t}:void 0;r=e.computation(i,a),e.sourceValue=i,I(null),o=s&&r!==Fe&&e.equal(t,r)}catch(i){r=Fe,e.error=i}finally{vn(e,n)}if(o){e.value=t;return}e.value=r,e.version++}});function sh(e){let t=I(null);try{return e()}finally{I(t)}}var ol=`https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss`;var y=class extends Error{code;constructor(t,n){super(Qe(t,n)),this.code=t}};function VE(e){return`NG0${Math.abs(e)}`}function Qe(e,t){return`${VE(e)}${t?`: `+t:``}`}function V(e){for(let t in e)if(e[t]===V)return t;throw Error(``)}function fh(e,t){for(let n in t)Object.hasOwn(t,n)&&!Object.hasOwn(e,n)&&(e[n]=t[n])}function go(e){if(typeof e==`string`)return e;if(Array.isArray(e))return`[${e.map(go).join(`, `)}]`;if(e==null)return``+e;let t=e.overriddenName||e.name;if(t)return`${t}`;let n=e.toString();if(n==null)return``+n;let r=n.indexOf(` +`);return r>=0?n.slice(0,r):n}function il(e,t){return e?t?`${e} ${t}`:e:t||``}var $E=V({__forward_ref__:V});function ds(e){return e.__forward_ref__=ds,e}function ue(e){return sl(e)?e():e}function sl(e){return typeof e==`function`&&Object.hasOwn(e,$E)&&e.__forward_ref__===ds}function T(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function mo(e){return{providers:e.providers||[],imports:e.imports||[]}}function yo(e){return BE(e,fs)}function al(e){return yo(e)!==null}function BE(e,t){return Object.hasOwn(e,t)&&e[t]||null}function zE(e){return(e?.[fs]??null)||null}function zc(e){return e&&Object.hasOwn(e,ss)?e[ss]:null}var fs=V({ɵprov:V});var ss=V({ɵinj:V});var v=class{_desc;ngMetadataName=`InjectionToken`;ɵprov;constructor(t,n){this._desc=t,this.ɵprov=void 0,typeof n==`number`?this.__NG_ELEMENT_ID__=n:n!==void 0&&(this.ɵprov=T({token:this,providedIn:n.providedIn||`root`,factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function cl(e){return e&&!!e.ɵproviders}var vo=V({ɵcmp:V});var Eo=V({ɵdir:V});var ll=V({ɵpipe:V});var ul=V({ɵmod:V});var uo=V({ɵfac:V});var Cn=V({__NG_ELEMENT_ID__:V});var ah=V({__NG_ENV_ID__:V});function hh(e){return ps(e,`@NgModule`),e[ul]||null}function zt(e){return ps(e,`@Component`),e[vo]||null}function hs(e){return ps(e,`@Directive`),e[Eo]||null}function ph(e){return ps(e,`@Pipe`),e[ll]||null}function ps(e,t){if(e==null)throw new y(-919,!1)}function Wt(e){return typeof e==`string`?e:e==null?``:String(e)}var gh=V({ngErrorCode:V});var WE=V({ngErrorMessage:V});var qE=V({ngTokenPath:V});function dl(e,t){return mh(``,-200,t)}function gs(e,t){throw new y(-201,!1)}function mh(e,t,n){let r=new y(t,e);return r[gh]=t,r[WE]=e,n&&(r[qE]=n),r}function GE(e){return e[gh]}var Wc;function yh(){return Wc}function we(e){let t=Wc;return Wc=e,t}function fl(e,t,n){let r=yo(e);if(r&&r.providedIn==`root`)return r.value===void 0?r.value=r.factory():r.value;if(n&8)return null;if(t!==void 0)return t;gs(e,``)}var qt=globalThis;var In={};var ZE=`__NG_DI_FLAG__`;var qc=class{injector;constructor(t){this.injector=t}retrieve(t,n){let r=wn(n)||0;try{return this.injector.get(t,r&8?null:In,r)}catch(o){if(lr(o))return o;throw o}}};function YE(e,t=0){let n=os();if(n===void 0)throw new y(-203,!1);if(n===null)return fl(e,void 0,t);{let r=KE(t),o=n.retrieve(e,r);if(lr(o)){if(r.optional)return null;throw o}return o}}function S(e,t=0){return(yh()||YE)(ue(e),t)}function p(e,t){return S(e,wn(t))}function wn(e){return typeof e>`u`||typeof e==`number`?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function KE(e){return{optional:!!(e&8),host:!!(e&1),self:!!(e&2),skipSelf:!!(e&4)}}function Gc(e){let t=[];for(let n=0;nArray.isArray(n)?ms(n,t):t(n))}function hl(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function Io(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function Ih(e,t){let n=[];for(let r=0;rt;){let i=o-2;e[o]=e[i],o--}e[t]=n,e[t+1]=r}}function Dh(e,t,n){let r=fr(e,t);return r>=0?e[r|1]=n:(r=~r,wh(e,r,t,n)),r}function ys(e,t){let n=fr(e,t);if(n>=0)return e[n|1]}function fr(e,t){return JE(e,t,1)}function JE(e,t,n){let r=0,o=e.length>>n;for(;o!==r;){let i=r+(o-r>>1),s=e[i<t?o=i:r=i+1}return~(o<{n.push(s)};return ms(t,s=>{let a=s;as(a,i,[],r)&&(o||=[],o.push(a))}),o!==void 0&&Ch(o,i),n}function Ch(e,t){for(let n=0;n{t(i,r)})}}function as(e,t,n,r){if(e=ue(e),!e)return!1;let o=null,i=zc(e),s=!i&&zt(e);if(!i&&!s){let c=e.ngModule;if(i=zc(c),i)o=c;else return!1}else{if(s&&!s.standalone)return!1;o=e}let a=r.has(o);if(s){if(a)return!1;if(r.add(o),s.dependencies){let c=typeof s.dependencies==`function`?s.dependencies():s.dependencies;for(let l of c)as(l,t,n,r)}}else if(i){if(i.imports!=null&&!a){r.add(o);let l;ms(i.imports,u=>{as(u,t,n,r)&&(l||=[],l.push(u))}),l!==void 0&&Ch(l,t)}if(!a){let l=$t(o)||(()=>new o);t({provide:o,useFactory:l,deps:Me},o),t({provide:pl,useValue:o,multi:!0},o),t({provide:Tn,useValue:()=>S(o),multi:!0},o)}let c=i.providers;if(c!=null&&!a){let l=e;ml(c,u=>{t(u,l)})}}else return!1;return o!==e&&e.providers!==void 0}function ml(e,t){for(let n of e)cl(n)&&(n=n.ɵproviders),Array.isArray(n)?ml(n,t):t(n)}var eI=V({provide:String,useValue:V});function Th(e){return e!==null&&typeof e==`object`&&eI in e}function tI(e){return!!(e&&e.useExisting)}function nI(e){return!!(e&&e.useFactory)}function Dn(e){return typeof e==`function`}function Mh(e){return!!e.useClass}var wo=new v(``);var is={};var ch={};var Bc;function Do(){return Bc===void 0&&(Bc=new dr),Bc}var K=class{};var bn=class extends K{parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(t,n,r,o){super(),this.parent=n,this.source=r,this.scopes=o,Zc(t,s=>this.processProvider(s)),this.records.set(vs,ur(void 0,this)),o.has(`environment`)&&this.records.set(K,ur(void 0,this));let i=this.records.get(wo);i!=null&&typeof i.value==`string`&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(pl,Me,{self:!0}))}retrieve(t,n){let r=wn(n)||0;try{return this.get(t,In,r)}catch(o){if(lr(o))return o;throw o}}destroy(){co(this),this._destroyed=!0;let t=I(null);try{for(let r of this._ngOnDestroyHooks)r.ngOnDestroy();let n=this._onDestroyHooks;this._onDestroyHooks=[];for(let r of n)r()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),I(t)}}onDestroy(t){return co(this),this._onDestroyHooks.push(t),()=>this.removeOnDestroy(t)}runInContext(t){co(this);let n=et(this),r=we(void 0);try{return t()}finally{et(n),we(r)}}get(t,n=In,r){if(co(this),Object.hasOwn(t,ah))return t[ah](this);let o=wn(r),s=et(this),a=we(void 0);try{if(!(o&4)){let l=this.records.get(t);if(l===void 0){let u=aI(t)&&yo(t);u&&this.injectableDefInScope(u)?l=ur(Qc(t),is):l=null,this.records.set(t,l)}if(l!=null)return this.hydrate(t,l,o)}let c=o&2?Do():this.parent;return n=o&8&&n===In?null:n,c.get(t,n)}catch(c){let l=GE(c);throw l===-200||l===-201?new y(l,null):c}finally{we(a),et(s)}}resolveInjectorInitializers(){let t=I(null),n=et(this),r=we(void 0);try{let i=this.get(Tn,Me,{self:!0});for(let s of i)s()}finally{et(n),we(r),I(t)}}toString(){return`R3Injector[...]`}processProvider(t){t=ue(t);let n=Dn(t)?t:ue(t&&t.provide),r=oI(t);if(!Dn(t)&&t.multi===!0){let o=this.records.get(n);o||(o=ur(void 0,is,!0),o.factory=()=>Gc(o.multi),this.records.set(n,o)),n=t,o.multi.push(t)}this.records.set(n,r)}hydrate(t,n,r){let o=I(null);try{if(n.value===ch)throw dl(``);return n.value===is&&(n.value=ch,n.value=n.factory(void 0,r)),typeof n.value==`object`&&n.value&&sI(n.value)&&this._ngOnDestroyHooks.add(n.value),n.value}finally{I(o)}}injectableDefInScope(t){if(!t.providedIn)return!1;let n=ue(t.providedIn);return typeof n==`string`?n===`any`||this.scopes.has(n):this.injectorDefTypes.has(n)}removeOnDestroy(t){let n=this._onDestroyHooks.indexOf(t);n!==-1&&this._onDestroyHooks.splice(n,1)}};function Qc(e){let t=yo(e),n=t!==null?t.factory:$t(e);if(n!==null)return n;if(e instanceof v)throw new y(-204,!1);if(e instanceof Function)return rI(e);throw new y(-204,!1)}function rI(e){if(e.length>0)throw new y(-204,!1);let n=zE(e);return n!==null?()=>n.factory(e):()=>new e}function oI(e){if(Th(e))return ur(void 0,e.useValue);return ur(yl(e),is)}function yl(e,t,n){let r;if(Dn(e)){let o=ue(e);return $t(o)||Qc(o)}else if(Th(e))r=()=>ue(e.useValue);else if(nI(e))r=()=>e.useFactory(...Gc(e.deps||[]));else if(tI(e))r=(o,i)=>S(ue(e.useExisting),i!==void 0&&i&8?8:void 0);else{let o=ue(e&&(e.useClass||e.provide));if(iI(e))r=()=>new o(...Gc(e.deps));else return $t(o)||Qc(o)}return r}function co(e){if(e.destroyed)throw new y(-205,!1)}function ur(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function iI(e){return!!e.deps}function sI(e){return e!==null&&typeof e==`object`&&typeof e.ngOnDestroy==`function`}function aI(e){return typeof e==`function`||typeof e==`object`&&e.ngMetadataName===`InjectionToken`}function Zc(e,t){for(let n of e)Array.isArray(n)?Zc(n,t):n&&cl(n)?Zc(n.ɵproviders,t):t(n)}function oe(e,t){let n;e instanceof bn?(co(e),n=e):n=new qc(e);let o=et(n),i=we(void 0);try{return t()}finally{et(o),we(i)}}function _h(){return yh()!==void 0||os()!=null}var Ze=0;var b=1;var C=2;var ne=3;var je=4;var fe=5;var Mn=6;var hr=7;var X=8;var wt=9;var Ye=10;var B=11;var pr=12;var vl=13;var Qt=14;var Ee=15;var Zt=16;var _n=17;var nt=18;var bo=19;var El=20;var vt=21;var Es=22;var Et=23;var Oe=24;var Is=25;var Nh=26;var So=27;var Z=28;var Rh=1;var Il=6;var Nn=7;var Co=8;var Rn=9;var J=10;function Dt(e){return Array.isArray(e)&&typeof e[Rh]==`object`}function Ue(e){return Array.isArray(e)&&e[Rh]===!0}function wl(e){return(e.flags&4)!==0}function rt(e){return e.componentOffset>-1}function ws(e){return(e.flags&1)===1}function ot(e){return!!e.template}function gr(e){return(e[C]&512)!==0}function xn(e){return(e[C]&256)===256}var W=(function(e){return e[e.NONE=0]=`NONE`,e[e.HTML=1]=`HTML`,e[e.STYLE=2]=`STYLE`,e[e.SCRIPT=3]=`SCRIPT`,e[e.URL=4]=`URL`,e[e.RESOURCE_URL=5]=`RESOURCE_URL`,e[e.ATTRIBUTE_NO_BINDING=6]=`ATTRIBUTE_NO_BINDING`,e})(W||{});var lo;var Sn=`svg`;var Ds=`math`;var Yc=``;var lh=`*`;var Kc=()=>Object.create(null);function cI(){return lo||(lo=Kc(),Vt(W.HTML,void 0,[[`iframe`,[`srcdoc`]],[`*`,[`innerHTML`,`outerHTML`]]]),Vt(W.STYLE,void 0,[[`*`,[`style`]]]),Vt(W.URL,void 0,[[`*`,[`formAction`]],[`area`,[`href`]],[`a`,[`href`,`xlink:href`]],[`form`,[`action`]]]),Vt(W.URL,Ds,[[`*`,[`href`,`xlink:href`]]]),Vt(W.RESOURCE_URL,void 0,[[`base`,[`href`]],[`embed`,[`src`]],[`frame`,[`src`]],[`iframe`,[`src`]],[`link`,[`href`]],[`object`,[`codebase`,`data`]]]),Vt(W.URL,Sn,[[`a`,[`href`,`xlink:href`]]]),Vt(W.ATTRIBUTE_NO_BINDING,Sn,[[`animate`,[`attributeName`,`values`,`to`,`from`]],[`set`,[`to`,`attributeName`]],[`animateMotion`,[`attributeName`]],[`animateTransform`,[`attributeName`]]]),Vt(W.ATTRIBUTE_NO_BINDING,void 0,[[`unknown`,[`attributeName`,`values`,`to`,`from`,`sandbox`,`allow`,`allowFullscreen`,`referrerPolicy`,`csp`,`fetchPriority`,`credentialless`]],[`iframe`,[`sandbox`,`allow`,`allowFullscreen`,`referrerPolicy`,`csp`,`fetchPriority`,`credentialless`]]]),lo)}function Vt(e,t,n){let r=t??Yc;for(let[o,i]of n){let s=o.toLowerCase();for(let a of i){let c=a.toLowerCase(),l=lo[c]??=Kc(),u=l[r]??=Kc();u[s]=e}}}function xh(e,t,n){let o=cI()[t.toLowerCase()];if(!o)return W.NONE;let i=e.toLowerCase(),s;if(n){let a=o[n];a&&(s=a[i]??a[lh])}if(s===void 0){let a=o[Yc];a&&(s=a[i]??a[lh])}if(s===void 0&&(!n||n===Yc)){let a=o[Sn];a&&(s=a[i])}return s??W.NONE}function he(e){for(;Array.isArray(e);)e=e[Ze];return e}function Dl(e,t){return he(t[e])}function Ne(e,t){return he(t[e.index])}function bs(e,t){return e.data[t]}function Ss(e,t){return e[t]}function bl(e,t,n,r){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}function He(e,t){let n=t[e];return Dt(n)?n:n[Ze]}function Ah(e){return(e[C]&4)===4}function Cs(e){return(e[C]&128)===128}function Oh(e){return Ue(e[ne])}function it(e,t){return t==null?null:e[t]}function Sl(e){e[_n]=0}function Cl(e){e[C]&1024||(e[C]|=1024,Cs(e)&&mr(e))}function kh(e,t){for(;e>0;)t=t[Qt],e--;return t}function To(e){return!!(e[C]&9216||e[Oe]?.dirty)}function Ts(e){e[Ye].changeDetectionScheduler?.notify(8),e[C]&64&&(e[C]|=1024),To(e)&&mr(e)}function mr(e){e[Ye].changeDetectionScheduler?.notify(0);let t=It(e);for(;t!==null&&!(t[C]&8192||(t[C]|=8192,!Cs(t)));)t=It(t)}function Ms(e,t){if(xn(e))throw new y(911,!1);e[vt]===null&&(e[vt]=[]),e[vt].push(t)}function Ph(e,t){if(e[vt]===null)return;let n=e[vt].indexOf(t);n!==-1&&e[vt].splice(n,1)}function It(e){let t=e[ne];return Ue(t)?t[ne]:t}function Tl(e){return e[hr]??=[]}function Ml(e){return e.cleanup??=[]}function Lh(e,t,n,r){let o=Tl(t);o.push(n),e.firstCreatePass&&Ml(e).push(r,o.length-1)}var x={lFrame:Kh(null),bindingsEnabled:!0,skipHydrationRootTNode:null};var Xc=!1;function Fh(){return x.lFrame.elementDepthCount}function jh(){x.lFrame.elementDepthCount++}function _l(){x.lFrame.elementDepthCount--}function Uh(){return x.bindingsEnabled}function Nl(){return x.skipHydrationRootTNode!==null}function Rl(e){return x.skipHydrationRootTNode===e}function xl(){x.skipHydrationRootTNode=null}function w(){return x.lFrame.lView}function q(){return x.lFrame.tView}function Hh(e){return x.lFrame.contextLView=e,e[X]}function Vh(e){return x.lFrame.contextLView=null,e}function ie(){let e=Al();for(;e!==null&&e.type===64;)e=e.parent;return e}function Al(){return x.lFrame.currentTNode}function $h(){let e=x.lFrame,t=e.currentTNode;return e.isParent?t:t.parent}function yr(e,t){let n=x.lFrame;n.currentTNode=e,n.isParent=t}function Ol(){return x.lFrame.isParent}function kl(){x.lFrame.isParent=!1}function Bh(){return x.lFrame.contextLView}function Pl(){return Xc}function fo(e){let t=Xc;return Xc=e,t}function An(){let e=x.lFrame,t=e.bindingRootIndex;return t===-1&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function zh(){return x.lFrame.bindingIndex}function Wh(e){return x.lFrame.bindingIndex=e}function st(){return x.lFrame.bindingIndex++}function Ll(e){let t=x.lFrame,n=t.bindingIndex;return t.bindingIndex=t.bindingIndex+e,n}function qh(){return x.lFrame.inI18n}function Gh(e,t){let n=x.lFrame;n.bindingIndex=n.bindingRootIndex=e,_s(t)}function Qh(){return x.lFrame.currentDirectiveIndex}function _s(e){x.lFrame.currentDirectiveIndex=e}function Zh(e){let t=x.lFrame.currentDirectiveIndex;return t===-1?null:e[t]}function Ns(){return x.lFrame.currentQueryIndex}function Mo(e){x.lFrame.currentQueryIndex=e}function lI(e){let t=e[b];return t.type===2?t.declTNode:t.type===1?e[fe]:null}function Fl(e,t,n){if(n&4){let o=t,i=e;for(;o=o.parent,o===null&&!(n&1);)if(o=lI(i),o===null||(i=i[Qt],o.type&10))break;if(o===null)return!1;t=o,e=i}let r=x.lFrame=Yh();return r.currentTNode=t,r.lView=e,!0}function Rs(e){let t=Yh(),n=e[b];x.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function Yh(){let e=x.lFrame,t=e===null?null:e.child;return t===null?Kh(e):t}function Kh(e){let t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return e!==null&&(e.child=t),t}function Xh(){let e=x.lFrame;return x.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}var jl=Xh;function xs(){let e=Xh();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function Jh(e){return(x.lFrame.contextLView=kh(e,x.lFrame.contextLView))[X]}function at(){return x.lFrame.selectedIndex}function Yt(e){x.lFrame.selectedIndex=e}function Kt(){let e=x.lFrame;return bs(e.tView,e.selectedIndex)}function As(){x.lFrame.currentNamespace=Sn}function Ul(){return x.lFrame.currentNamespace}var ep=!0;function Os(){return ep}function ks(e){ep=e}function Jc(e,t=null,n=null,r){let o=Hl(e,t,n,r);return o.resolveInjectorInitializers(),o}function Hl(e,t=null,n=null,r,o=new Set){return new bn([n||Me,Sh(e)],t||Do(),null,o)}var _e=class e{static THROW_IF_NOT_FOUND=In;static NULL=new dr;static create(t,n){if(Array.isArray(t))return Jc({name:``},n,t,``);{let r=t.name??``;return Jc({name:r},t.parent,t.providers,r)}}static ɵprov=T({token:e,providedIn:`any`,factory:()=>S(vs)});static __NG_ELEMENT_ID__=-1};var G=new v(``);var ve=class{static __NG_ELEMENT_ID__=uI;static __NG_ENV_ID__=t=>t};var cs=class extends ve{_lView;constructor(t){super(),this._lView=t}get destroyed(){return xn(this._lView)}onDestroy(t){let n=this._lView;return Ms(n,t),()=>Ph(n,t)}};function uI(){return new cs(w())}var tp=!1;var np=new v(``);var bt=(()=>{class e{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new ce(!1);debugTaskTracker=p(np,{optional:!0});get hasPendingTasks(){return this.destroyed?!1:this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new A(n=>{n.next(!1),n.complete()}):this.pendingTask}add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0);let n=this.taskId++;return this.pendingTasks.add(n),this.debugTaskTracker?.add(n),n}has(n){return this.pendingTasks.has(n)}remove(n){this.pendingTasks.delete(n),this.debugTaskTracker?.remove(n),this.pendingTasks.size===0&&this.hasPendingTasks&&this.pendingTask.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pendingTask.next(!1),this.destroyed=!0,this.pendingTask.unsubscribe()}static ɵprov=T({token:e,providedIn:`root`,factory:()=>new e})}return e})();var el=class extends ee{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(t=!1){super(),this.__isAsync=t,_h()&&(this.destroyRef=p(ve,{optional:!0})??void 0,this.pendingTasks=p(bt,{optional:!0})??void 0)}emit(t){let n=I(null);try{super.next(t)}finally{I(n)}}subscribe(t,n,r){let o=t,i=n||(()=>null),s=r;if(t&&typeof t==`object`){let c=t;o=c.next?.bind(c),i=c.error?.bind(c),s=c.complete?.bind(c)}this.__isAsync&&(i=this.wrapInTimeout(i),o&&(o=this.wrapInTimeout(o)),s&&(s=this.wrapInTimeout(s)));let a=super.subscribe({next:o,error:i,complete:s});return t instanceof ae&&t.add(a),a}wrapInTimeout(t){return n=>{let r=this.pendingTasks?.add();setTimeout(()=>{try{t(n)}finally{r!==void 0&&this.pendingTasks?.remove(r)}})}}};var ye=el;function ls(...e){}function Vl(e){let t,n;function r(){e=ls;try{n!==void 0&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(n),t!==void 0&&clearTimeout(t)}catch{}}return t=setTimeout(()=>{e(),r()}),typeof requestAnimationFrame==`function`&&(n=requestAnimationFrame(()=>{e(),r()})),()=>r()}function rp(e){return queueMicrotask(()=>e()),()=>{e=ls}}var $l=`isAngularZone`;var ho=$l+`_ID`;var dI=0;var de=class e{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new ye(!1);onMicrotaskEmpty=new ye(!1);onStable=new ye(!1);onError=new ye(!1);constructor(t){let{enableLongStackTrace:n=!1,shouldCoalesceEventChangeDetection:r=!1,shouldCoalesceRunChangeDetection:o=!1,scheduleInRootZone:i=tp}=t;if(typeof Zone>`u`)throw new y(908,!1);Zone.assertZonePatched();let s=this;s._nesting=0,s._outer=s._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(s._inner=s._inner.fork(new Zone.TaskTrackingZoneSpec)),n&&Zone.longStackTraceZoneSpec&&(s._inner=s._inner.fork(Zone.longStackTraceZoneSpec)),s.shouldCoalesceEventChangeDetection=!o&&r,s.shouldCoalesceRunChangeDetection=o,s.callbackScheduled=!1,s.scheduleInRootZone=i,pI(s)}static isInAngularZone(){return typeof Zone<`u`&&Zone.current.get($l)===!0}static assertInAngularZone(){if(!e.isInAngularZone())throw new y(909,!1)}static assertNotInAngularZone(){if(e.isInAngularZone())throw new y(909,!1)}run(t,n,r){return this._inner.run(t,n,r)}runTask(t,n,r,o){let i=this._inner,s=i.scheduleEventTask(`NgZoneEvent: `+o,t,fI,ls,ls);try{return i.runTask(s,n,r)}finally{i.cancelTask(s)}}runGuarded(t,n,r){return this._inner.runGuarded(t,n,r)}runOutsideAngular(t){return this._outer.run(t)}};var fI={};function Bl(e){if(e._nesting==0&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function hI(e){if(e.isCheckStableRunning||e.callbackScheduled)return;e.callbackScheduled=!0;function t(){Vl(()=>{e.callbackScheduled=!1,tl(e),e.isCheckStableRunning=!0,Bl(e),e.isCheckStableRunning=!1})}e.scheduleInRootZone?Zone.root.run(()=>{t()}):e._outer.run(()=>{t()}),tl(e)}function pI(e){let t=()=>{hI(e)},n=dI++;e._inner=e._inner.fork({name:`angular`,properties:{[$l]:!0,[ho]:n,[ho+n]:!0},onInvokeTask:(r,o,i,s,a,c)=>{if(gI(c))return r.invokeTask(i,s,a,c);try{return uh(e),r.invokeTask(i,s,a,c)}finally{(e.shouldCoalesceEventChangeDetection&&s.type===`eventTask`||e.shouldCoalesceRunChangeDetection)&&t(),dh(e)}},onInvoke:(r,o,i,s,a,c,l)=>{try{return uh(e),r.invoke(i,s,a,c,l)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!mI(c)&&t(),dh(e)}},onHasTask:(r,o,i,s)=>{r.hasTask(i,s),o===i&&(s.change==`microTask`?(e._hasPendingMicrotasks=s.microTask,tl(e),Bl(e)):s.change==`macroTask`&&(e.hasPendingMacrotasks=s.macroTask))},onHandleError:(r,o,i,s)=>(r.handleError(i,s),e.runOutsideAngular(()=>e.onError.emit(s)),!1)})}function tl(e){e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&e.callbackScheduled===!0?e.hasPendingMicrotasks=!0:e.hasPendingMicrotasks=!1}function uh(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function dh(e){e._nesting--,Bl(e)}var po=class{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new ye;onMicrotaskEmpty=new ye;onStable=new ye;onError=new ye;run(t,n,r){return t.apply(n,r)}runGuarded(t,n,r){return t.apply(n,r)}runOutsideAngular(t){return t()}runTask(t,n,r,o){return t.apply(n,r)}};function gI(e){return op(e,`__ignore_ng_zone__`)}function mI(e){return op(e,`__scheduler_tick__`)}function op(e,t){return!Array.isArray(e)||e.length!==1?!1:e[0]?.data?.[t]===!0}var Ge=class{_console=console;handleError(t){this._console.error(`ERROR`,t)}};function ip(e){return sp(e)?e:new nl(e)}function sp(e){return e instanceof Error||typeof e==`object`&&e!==null&&typeof e.name==`string`&&typeof e.message==`string`}var nl=class extends Error{constructor(t){super(String(t),{cause:t}),this.name=`ErrorBoundaryWrappedError`}};var Ve=new v(``,{factory:()=>{let e=p(de),t=p(K),n;return r=>{e.runOutsideAngular(()=>{t.destroyed&&!n?setTimeout(()=>{throw r}):(n??=t.get(Ge),n.handleError(r))})}}});var ap={provide:Tn,useValue:()=>{p(Ge,{optional:!0})},multi:!0};var yI=new v(``,{factory:()=>{let e=p(G).defaultView;if(!e)return;let t=p(Ve),n=i=>{t(i.reason),i.preventDefault()},r=i=>{i.error?t(i.error):t(new Error(i.message,{cause:i})),i.preventDefault()},o=()=>{e.addEventListener(`unhandledrejection`,n),e.addEventListener(`error`,r)};typeof Zone<`u`?Zone.root.run(o):o(),p(ve).onDestroy(()=>{e.removeEventListener(`error`,r),e.removeEventListener(`unhandledrejection`,n)})}});function vI(){return tt([bh(()=>{p(yI)})])}function k(e,t){let[n,r,o]=Fc(e,t?.equal),i=n;i[Y];return i.set=r,i.update=o,i.asReadonly=_o.bind(i),i}function _o(){let e=this[Y];if(e.readonlyFn===void 0){let t=()=>this();t[Y]=e,e.readonlyFn=t}return e.readonlyFn}var No=new v(``,{factory:()=>EI});var EI=`ng`;var Ps=new v(``);var Ro=new v(``,{providedIn:`platform`,factory:()=>`unknown`});var xo=new v(``,{factory:()=>p(G).body?.querySelector(`[ngCspNonce]`)?.getAttribute(`ngCspNonce`)||null});var Ls=(()=>{class e{view;node;constructor(n,r){this.view=n,this.node=r}static __NG_ELEMENT_ID__=II}return e})();function II(){return new Ls(w(),ie())}var Bt=class{};var Ao=new v(``,{factory:()=>!0});var zl=new v(``);var Fs=(()=>{class e{static ɵprov=T({token:e,providedIn:`root`,factory:()=>new rl})}return e})();var rl=class{dirtyEffectCount=0;queues=new Map;add(t){this.enqueue(t),this.schedule(t)}schedule(t){t.dirty&&this.dirtyEffectCount++}remove(t){let n=t.zone,r=this.queues.get(n);r.has(t)&&(r.delete(t),t.dirty&&this.dirtyEffectCount--)}enqueue(t){let n=t.zone;this.queues.has(n)||this.queues.set(n,new Set);let r=this.queues.get(n);r.has(t)||r.add(t)}flush(){for(;this.dirtyEffectCount>0;){let t=!1;for(let[n,r]of this.queues)n===null?t||=this.flushQueue(r):t||=n.run(()=>this.flushQueue(r));t||(this.dirtyEffectCount=0)}}flushQueue(t){let n=!1;for(let r of t)r.dirty&&(this.dirtyEffectCount--,n=!0,r.run());return n}};var us=class{[Y];constructor(t){this[Y]=t}destroy(){this[Y].destroy()}};function Oo(e,t){let n=t?.injector??p(_e),r=t?.manualCleanup!==!0?n.get(ve):null,o,i=n.get(Ls,null,{optional:!0}),s=n.get(Bt);return i!==null?(o=lp(i.view,s,e),r instanceof cs&&r._lView===i.view&&(r=null)):o=bI(e,n.get(Fs),s),o.injector=n,r!==null&&(o.onDestroyFns=[r.onDestroy(()=>o.destroy())]),new us(o)}var cp=m(l({},jc),{cleanupFns:void 0,zone:null,onDestroyFns:null,run(){let e=fo(!1);try{Uc(this)}finally{fo(e)}},cleanup(){if(!this.cleanupFns?.length)return;let e=I(null);try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[],I(e)}}});var wI=m(l({},cp),{consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(12)},destroy(){if(En(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.scheduler.remove(this)}});var DI=m(l({},cp),{consumerMarkedDirty(){this.view[C]|=8192,mr(this.view),this.notifier.notify(13)},destroy(){if(En(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.view[Et]?.delete(this)}});function lp(e,t,n){let r=Object.create(DI);return r.view=e,r.zone=typeof Zone<`u`?Zone.current:null,r.notifier=t,r.userFn=n,r.fn=up(r,n),e[Et]??=new Set,e[Et].add(r),r.consumerMarkedDirty(r),r}function bI(e,t,n){let r=Object.create(wI);return r.userFn=e,r.fn=up(r,e),r.scheduler=t,r.notifier=n,r.zone=typeof Zone<`u`?Zone.current:null,r.scheduler.add(r),r.notifier.notify(12),r}function up(e,t){return()=>{t(n=>(e.cleanupFns??=[]).push(n))}}function js(e){return typeof e==`function`&&e[Y]!==void 0}function Us(e){return js(e)&&typeof e.set==`function`}var ko=(()=>{class e{internalPendingTasks=p(bt);scheduler=p(Bt);errorHandler=p(Ve);add(){let n=this.internalPendingTasks.add();return()=>{this.internalPendingTasks.has(n)&&(this.scheduler.notify(11),this.internalPendingTasks.remove(n))}}run(n){let r=this.add();try{n().catch(this.errorHandler).finally(r)}catch(o){this.errorHandler(o),r()}}static ɵprov=T({token:e,providedIn:`root`,factory:()=>new e})}return e})();var Mr=Symbol(`InputSignalNode#UNSET`);var Lu=m(l({},ao),{transformFn:void 0,applyValueToInputSignal(e,t){yt(e,t)}});function zo(e){return{toString:e}.toString()}var L=(function(e){return e[e.TemplateCreateStart=0]=`TemplateCreateStart`,e[e.TemplateCreateEnd=1]=`TemplateCreateEnd`,e[e.TemplateUpdateStart=2]=`TemplateUpdateStart`,e[e.TemplateUpdateEnd=3]=`TemplateUpdateEnd`,e[e.LifecycleHookStart=4]=`LifecycleHookStart`,e[e.LifecycleHookEnd=5]=`LifecycleHookEnd`,e[e.OutputStart=6]=`OutputStart`,e[e.OutputEnd=7]=`OutputEnd`,e[e.BootstrapApplicationStart=8]=`BootstrapApplicationStart`,e[e.BootstrapApplicationEnd=9]=`BootstrapApplicationEnd`,e[e.BootstrapComponentStart=10]=`BootstrapComponentStart`,e[e.BootstrapComponentEnd=11]=`BootstrapComponentEnd`,e[e.ChangeDetectionStart=12]=`ChangeDetectionStart`,e[e.ChangeDetectionEnd=13]=`ChangeDetectionEnd`,e[e.ChangeDetectionSyncStart=14]=`ChangeDetectionSyncStart`,e[e.ChangeDetectionSyncEnd=15]=`ChangeDetectionSyncEnd`,e[e.AfterRenderHooksStart=16]=`AfterRenderHooksStart`,e[e.AfterRenderHooksEnd=17]=`AfterRenderHooksEnd`,e[e.ComponentStart=18]=`ComponentStart`,e[e.ComponentEnd=19]=`ComponentEnd`,e[e.DeferBlockStateStart=20]=`DeferBlockStateStart`,e[e.DeferBlockStateEnd=21]=`DeferBlockStateEnd`,e[e.DynamicComponentStart=22]=`DynamicComponentStart`,e[e.DynamicComponentEnd=23]=`DynamicComponentEnd`,e[e.HostBindingsUpdateStart=24]=`HostBindingsUpdateStart`,e[e.HostBindingsUpdateEnd=25]=`HostBindingsUpdateEnd`,e})(L||{});var Qs=class{previousValue;currentValue;firstChange;constructor(t,n,r){this.previousValue=t,this.currentValue=n,this.firstChange=r}isFirstChange(){return this.firstChange}};function Xp(e,t,n,r){t!==null?t.applyValueToInputSignal(t,r):e[n]=r}var Jp=null;var _r=(()=>{Jp=dp;let e=()=>dp;return e.ngInherit=!0,e})();function OI(){return Jp}function dp(e){return e.type.prototype.ngOnChanges&&(e.setInput=PI),kI}function kI(){let e=eg(this),t=e?.current;if(t){let n=e.previous;if(n===Gt)e.previous=t;else for(let r in t)n[r]=t[r];e.current=null,this.ngOnChanges(t)}}function PI(e,t,n,r,o){let i=this.declaredInputs[r],s=eg(e)||LI(e,{previous:Gt,current:null}),a=s.current||(s.current={}),c=s.previous,l=c[i];a[i]=new Qs(l&&l.currentValue,n,c===Gt),Xp(e,t,o,n)}var tu=`__ngSimpleChanges__`;function eg(e){return Object.hasOwn(e,tu)&&e[tu]||null}function LI(e,t){return e[tu]=t}var fp=[];var z=function(e,t=null,n){for(let r=0;r=r)break}else t[c]<0&&(e[_n]+=65536),(a>14>16&&(e[C]&3)===t&&(e[C]+=16384,hp(a,i)):hp(a,i)}var Ir=-1;var Pn=class{factory;name;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(t,n,r,o){this.factory=t,this.name=o,this.canSeeViewProviders=n,this.injectImpl=r}};function HI(e){return(e.flags&8)!==0}function VI(e){return(e.flags&16)!==0}function $I(e,t,n){let r=0;for(;rt){s=i-1;break}}}for(;i>16}function Ys(e,t){let n=zI(e),r=t;for(;n>0;)r=r[Qt],n--;return r}var nu=!0;function Ks(e){let t=nu;return nu=e,t}var og=255;var ig=5;var qI=0;var ct={};function GI(e,t,n){let r;typeof n==`string`?r=n.charCodeAt(0)||0:Object.hasOwn(n,Cn)&&(r=n[Cn]),r??=n[Cn]=qI++;let o=r&og,i=1<>ig)]|=i}function Xs(e,t){let n=sg(e,t);if(n!==-1)return n;let r=t[b];r.firstCreatePass&&(e.injectorIndex=t.length,ql(r.data,e),ql(t,null),ql(r.blueprint,null));let o=Fu(e,t),i=e.injectorIndex;if(rg(o)){let s=Zs(o),a=Ys(o,t),c=a[b].data;for(let l=0;l<8;l++)t[i+l]=a[s+l]|c[s+l]}return t[i+8]=o,i}function ql(e,t){e.push(0,0,0,0,0,0,0,0,t)}function sg(e,t){return e.injectorIndex===-1||e.parent&&e.parent.injectorIndex===e.injectorIndex||t[e.injectorIndex+8]===null?-1:e.injectorIndex}function Fu(e,t){if(e.parent&&e.parent.injectorIndex!==-1)return e.parent.injectorIndex;let n=0,r=null,o=t;for(;o!==null;){if(r=fg(o),r===null)return Ir;if(n++,o=o[Qt],r.injectorIndex!==-1)return r.injectorIndex|n<<16}return Ir}function ru(e,t,n){GI(e,t,n)}function QI(e,t){if(t===`class`)return e.classes;if(t===`style`)return e.styles;let n=e.attrs;if(n){let r=n.length,o=0;for(;o>20,d=r?a:a+u,h=o?a+u:l;for(let f=d;f=c&&g.type===n)return f}if(o){let f=s[c];if(f&&ot(f)&&f.type===n)return c}return null}function Fo(e,t,n,r,o){let i=e[n],s=t.data;if(i instanceof Pn){let a=i;if(a.resolving)throw dl(``);let c=Ks(a.canSeeViewProviders);a.resolving=!0;s[n].type||s[n];let d=a.injectImpl?we(a.injectImpl):null;Fl(e,r,0);try{i=e[n]=a.factory(void 0,o,s,e,r),t.firstCreatePass&&n>=r.directiveStart&&FI(n,s[n],t)}finally{d!==null&&we(d),Ks(c),a.resolving=!1,jl()}}return i}function YI(e){if(typeof e==`string`)return e.charCodeAt(0)||0;let t=Object.hasOwn(e,Cn)?e[Cn]:void 0;return typeof t==`number`?t>=0?t&og:KI:t}function gp(e,t,n){let r=1<>ig)]&r)}function mp(e,t){return!(e&2)&&!(e&1&&t)}var St=class{_tNode;_lView;constructor(t,n){this._tNode=t,this._lView=n}get(t,n,r){return lg(this._tNode,this._lView,t,wn(r),n)}};function KI(){return new St(ie(),w())}function dg(e){return zo(()=>{let t=e.prototype.constructor,n=t[uo]||ou(t),r=Object.prototype,o=Object.getPrototypeOf(e.prototype).constructor;for(;o&&o!==r;){let i=o[uo]||ou(o);if(i&&i!==n)return i;o=Object.getPrototypeOf(o)}return i=>new i})}function ou(e){return sl(e)?()=>{let t=ou(ue(e));return t&&t()}:$t(e)}function XI(e,t,n,r,o){let i=e,s=t;for(;i!==null&&s!==null&&s[C]&2048&&!gr(s);){let a=ug(i,s,n,r|2,ct);if(a!==ct)return a;r&=-5;let c=i.parent;if(!c){let l=s[El];if(l){let u=l.get(n,ct,r);if(u!==ct)return u}c=fg(s),s=s[Qt]}i=c}return o}function fg(e){let t=e[b],n=t.type;return n===2?t.declTNode:n===1?e[fe]:null}function ha(e){return QI(ie(),e)}function Q(e){return{token:e.token,providedIn:e.autoProvided===!1?null:`root`,factory:e.factory,value:void 0}}function JI(){return Nr(ie(),w())}function Nr(e,t){return new Mt(Ne(e,t))}var Mt=(()=>{class e{nativeElement;constructor(n){this.nativeElement=n}static __NG_ELEMENT_ID__=JI}return e})();function hg(e){return e instanceof Mt?e.nativeElement:e}function ew(){return this._results[Symbol.iterator]()}var Js=class{_emitDistinctChangesOnly;dirty=!0;_onDirty=void 0;_results=[];_changesDetected=!1;_changes=void 0;length=0;first=void 0;last=void 0;get changes(){return this._changes??=new ee}constructor(t=!1){this._emitDistinctChangesOnly=t}get(t){return this._results[t]}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,n){return this._results.reduce(t,n)}forEach(t){this._results.forEach(t)}some(t){return this._results.some(t)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(t,n){this.dirty=!1;let r=Eh(t);(this._changesDetected=!vh(this._results,r,n))&&(this._results=r,this.length=r.length,this.last=r[this.length-1],this.first=r[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.next(this)}onDirty(t){this._onDirty=t}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}[Symbol.iterator]=ew};function pg(e){return(e.flags&128)===128}var ju=(function(e){return e[e.OnPush=0]=`OnPush`,e[e.Eager=1]=`Eager`,e[e.Default=1]=`Default`,e})(ju||{});var gg=new Map;var tw=0;function nw(){return tw++}function rw(e){gg.set(e[bo],e)}function iu(e){gg.delete(e[bo])}var yp=`__ngContext__`;function Dr(e,t){Dt(t)?(e[yp]=t[bo],rw(t)):e[yp]=t}function mg(e){return vg(e[pr])}function yg(e){return vg(e[je])}function vg(e){for(;e!==null&&!Ue(e);)e=e[je];return e}var su;function Uu(e){su=e}function Hu(){if(su!==void 0)return su;if(typeof document<`u`)return document;throw new y(210,!1)}var Eg=`r`;var Ig=`di`;var Vu=new v(``);var wg=!1;var Dg=new v(``,{factory:()=>wg});var vp=new WeakMap;function ow(e,t){if(e==null||typeof e!=`object`)return;let n=vp.get(e);n||(n=new WeakSet,vp.set(e,n)),n.add(t)}function pa(e){return(e.flags&32)===32}var aw=()=>null;function bg(e,t,n=!1){return aw(e,t,n)}function Sg(e,t){let n=e.contentQueries;if(n!==null){let r=I(null);try{for(let o=0;oe,createScript:e=>e,createScriptURL:e=>e})}catch{}return Hs}function ga(e){return lw()?.createHTML(e)||e}var Vs;function Mg(){if(Vs===void 0&&(Vs=null,qt.trustedTypes))try{Vs=qt.trustedTypes.createPolicy(`angular#unsafe-bypass`,{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return Vs}function Ep(e){return Mg()?.createHTML(e)||e}function Ip(e){return Mg()?.createScriptURL(e)||e}function uw(e){let t=new pu(e);return dw()?new hu(t):t}var hu=class{inertDocumentHelper;constructor(t){this.inertDocumentHelper=t}getInertBodyElement(t){t=``+t;try{let n=new window.DOMParser().parseFromString(ga(t),`text/html`).body;return n===null?this.inertDocumentHelper.getInertBodyElement(t):(n.firstChild?.remove(),n)}catch{return null}}};var pu=class{defaultDoc;inertDocument;constructor(t){this.defaultDoc=t,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument(`sanitization-inert`)}getInertBodyElement(t){let n=this.inertDocument.createElement(`template`);return n.innerHTML=ga(t),n}};function dw(){try{return!!new window.DOMParser().parseFromString(ga(``),`text/html`)}catch{return!1}}var fw=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function Wo(e){return e=String(e),e.match(fw)?e:`unsafe:`+e}function _t(e){let t=Object.create(null);for(let n of e.split(`,`))t[n]=!0;return t}function qo(...e){let t=Object.create(null);for(let n of e)for(let r in n)Object.hasOwn(n,r)&&(t[r]=!0);return t}var _g=_t(`area,br,col,hr,img,wbr`);var Ng=_t(`colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr`);var Rg=_t(`rp,rt`);var hw=qo(Rg,Ng);var wp=qo(_g,qo(Ng,_t(`address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul`)),qo(Rg,_t(`a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video`)),hw);var xg=_t(`background,cite,href,itemtype,longdesc,poster,src,xlink:href`);var vw=qo(xg,_t(`abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width`),_t(`aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext`));var Ew=_t(`script,style,template`);var gu=class{sanitizedSomething=!1;buf=[];sanitizeChildren(t){let n=t.firstChild,r=!0,o=[];for(;n;){if(n.nodeType===Node.ELEMENT_NODE?r=this.startElement(n):n.nodeType===Node.TEXT_NODE?this.chars(n.nodeValue):this.sanitizedSomething=!0,r&&n.firstChild){o.push(n),n=Dw(n);continue}for(;n;){n.nodeType===Node.ELEMENT_NODE&&this.endElement(n);let i=ww(n);if(i){n=i;break}n=o.pop()}}return this.buf.join(``)}startElement(t){let n=Dp(t).toLowerCase();if(!Object.hasOwn(wp,n))return this.sanitizedSomething=!0,!Object.hasOwn(Ew,n);this.buf.push(`<`),this.buf.push(n);let r=t.attributes;for(let o=0;o`),!0}endElement(t){let n=Dp(t).toLowerCase();Object.hasOwn(wp,n)&&!Object.hasOwn(_g,n)&&(this.buf.push(``))}chars(t){this.buf.push(bp(t))}};function Iw(e,t){return(e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINED_BY)!==Node.DOCUMENT_POSITION_CONTAINED_BY}function ww(e){let t=e.nextSibling;if(t&&e!==t.previousSibling)throw Ag(t);return t}function Dw(e){let t=e.firstChild;if(t&&Iw(e,t))throw Ag(t);return t}function Dp(e){let t=e.nodeName;return typeof t==`string`?t:`FORM`}function Ag(e){return new Error(`Failed to sanitize html because the element is clobbered: ${e.outerHTML}`)}var bw=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;var Sw=/([^\#-~ |!])/g;function bp(e){return e.replace(/&/g,`&`).replace(bw,function(t){let n=t.charCodeAt(0),r=t.charCodeAt(1);return`&#`+((n-55296)*1024+(r-56320)+65536)+`;`}).replace(Sw,function(t){return`&#`+t.charCodeAt(0)+`;`}).replace(//g,`>`)}var $s;function ma(e,t){let n=null;try{$s=$s||uw(e);let r=t?String(t):``;n=$s.getInertBodyElement(r);let o=5,i=r;do{if(o===0)throw new Error(`Failed to sanitize html because the input is unstable`);o--,r=i,i=n.innerHTML,n=$s.getInertBodyElement(r)}while(r!==i);return ga(new gu().sanitizeChildren(Sp(n)||n))}finally{if(n){let r=Sp(n)||n;for(;r.firstChild;)r.firstChild.remove()}}}function Sp(e){return`content`in e&&Cw(e)?e.content:null}function Cw(e){return e.nodeType===Node.ELEMENT_NODE&&e.nodeName===`TEMPLATE`}function Tw(e,t){return e.createText(t)}function Mw(e,t,n){e.setValue(t,n)}function Og(e,t,n){return e.createElement(t,n)}function On(e,t,n,r,o){e.insertBefore(t,n,r,o)}function kg(e,t,n){e.appendChild(t,n)}function Cp(e,t,n,r,o){r!==null?On(e,t,n,r,o):kg(e,t,n)}function Pg(e,t,n,r){e.removeChild(null,t,n,r)}function _w(e,t,n){e.setAttribute(t,`style`,n)}function Nw(e,t,n){n===``?e.removeAttribute(t,`class`):e.setAttribute(t,`class`,n)}function Lg(e,t,n){let{mergedAttrs:r,classes:o,styles:i}=n;r!==null&&$I(e,t,r),o!==null&&Nw(e,t,o),i!==null&&_w(e,t,i)}function Rw(e,t=!0){if(e[0]!=`:`)return[null,e];let n=e.indexOf(`:`,1);if(n===-1){if(t)throw new Error(`Unsupported format "${e}" expecting ":namespace:name"`);return[null,e]}return[e.slice(1,n),e.slice(n+1)]}function Gu(e,t,n){if(t!==void 0&&n!==void 0&&Ug(t,n)!==W.HTML)return e;let r=Zu();return r?Ep(r.sanitize(W.HTML,e)||``):lt(e,`HTML`)?Ep(Re(e)):ma(Hu(),Wt(e))}function Fg(e){let t=Zu();return t?t.sanitize(W.URL,e)||``:lt(e,`URL`)?Re(e):Wo(Wt(e))}function jg(e){let t=Zu();if(t)return Ip(t.sanitize(W.RESOURCE_URL,e)||``);if(lt(e,`ResourceURL`))return Ip(Re(e));throw new y(-904,!1)}function xw(e,t){switch(Ug(e,t)){case W.RESOURCE_URL:return jg;case W.URL:return Fg;default:return null}}function Qu(e,t,n){return xw(t,n)?.(e)??e}function Zu(){let e=w();return e&&e[Ye].sanitizer}function Ug(e,t){let[n,r]=Aw(e);return xh(r,t,n)}function Aw(e){e=e.toLowerCase();let t=Rw(e,!1);if(t[0])return t;let r=at()===-1?null:Kt(),o=r?.namespace;if(e===`#host`&&r?.type===2){let i=Ne(r,w());if(i.tagName&&(e=i.tagName.toLowerCase()),o==null){let s=i.namespaceURI;o=s&&cw[s]}}return[o,e]}function Ow(e){return e.ownerDocument}function kw(e){return e instanceof Function?e():e}function Pw(e,t,n){let r=e.length;for(;;){let o=e.indexOf(t,n);if(o===-1)return o;if(o===0||e.charCodeAt(o-1)<=32){let i=t.length;if(o+i===r||e.charCodeAt(o+i)<=32)return o}n=o+1}}var Hg=`ng-template`;function Lw(e,t,n,r){let o=0;if(r){for(;o-1){let i;for(;++oi?d=``:d=o[u+1].toLowerCase(),r&2&&l!==d){if(Ke(r))return!1;s=!0}}}}return Ke(r)||s}function Ke(e){return(e&1)===0}function Uw(e,t,n,r){if(t===null)return-1;let o=0;if(r||!n){let i=!1;for(;o-1)for(n++;n0?`="`+a+`"`:``)+`]`}else r&8?o+=`.`+s:r&4&&(o+=` `+s);else o!==``&&!Ke(s)&&(t+=Tp(i,o),o=``),r=s,i=i||!Ke(r);n++}return o!==``&&(t+=Tp(i,o)),t}function Ww(e){return e.map(zw).join(`,`)}function qw(e){let t=[],n=[],r=1,o=2;for(;r=0;a--){let{el:c,declarationView:l}=r[a],u=c.parentNode;c===t?(r.splice(a,1),vr.add(c),c.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}}))):i&&c===i?(r.splice(a,1),c.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}})),c.parentNode?.removeChild(c)):u&&o&&u!==o&&(s===null||l===null||s===l)&&(r.splice(a,1),c.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}})),c.parentNode?.removeChild(c))}}function Zw(e,t,n){let r=$g(n),o=mu.get(e);o?o.some(i=>i.el===t)||o.push({el:t,declarationView:r}):mu.set(e,[{el:t,declarationView:r}])}var Ju=(function(e){return e[e.CHANGE_DETECTION=0]=`CHANGE_DETECTION`,e[e.AFTER_NEXT_RENDER=1]=`AFTER_NEXT_RENDER`,e})(Ju||{});var Jt=new v(``);var Mp=new Set;function Nt(e){Mp.has(e)||(Mp.add(e),performance?.mark?.(`mark_feature_usage`,{detail:{feature:e}}))}var Bg=(()=>{class e{impl=null;execute(){this.impl?.execute()}static ɵprov=T({token:e,providedIn:`root`,factory:()=>new e})}return e})();var yu=null;var zg=null;function _p(e,t,n,r){yu?.maybeQueueEnterAnimation(e,t,n,r)}function Np(e,t,n,r){yu===null?r(!1):yu.runLeaveAnimationsWithCallback(e,t,n,r)}function Yw(e){zg?.initViewDetachAnimations(e)}function Kw(e){zg?.clearViewDetachAnimations(e)}function Er(e,t,n,r,o,i,s,a){if(o!=null){let c,l=!1;Ue(o)?c=o:Dt(o)&&(l=!0,o=o[Ze]);let u=he(o);e===0&&r!==null?(_p(a,r,i,n),s==null?kg(t,r,u):On(t,r,u,s||null,!0)):e===1&&r!==null?(On(t,r,u,s||null,!0),Qw(i,u,a),vr.has(u)||_p(a,r,i,n)):e===2?(a?.[Nh]?.leave?.has(i.index)&&Zw(i,u,a),vr.delete(u),Np(a,i,n,d=>{if(vr.has(u)){vr.delete(u);return}Pg(t,u,l,d)})):e===3&&(vr.delete(u),Np(a,i,n,()=>{t.destroyNode(u)})),c!=null&&cD(t,e,n,c,i,r,s)}}function Xw(e,t){Wg(e,t),t[Ze]=null,t[fe]=null}function Jw(e,t,n,r,o,i){r[Ze]=o,r[fe]=t,va(e,r,n,1,o,i)}function Wg(e,t){t[Ye].changeDetectionScheduler?.notify(9),va(e,t,t[B],2,null,null)}function eD(e){let t=e[pr];if(!t)return Gl(e[b],e);for(;t;){let n=null;if(Dt(t))n=t[pr];else{let r=t[J];r&&(n=r)}if(!n){for(;t&&!t[je]&&t!==e;)Dt(t)&&Gl(t[b],t),t=t[ne];t===null&&(t=e),Dt(t)&&Gl(t[b],t),n=t&&t[je]}t=n}}function ed(e,t){let n=e[Rn],r=n.indexOf(t);n.splice(r,1)}function ya(e,t){if(xn(t))return;let n=t[B];n.destroyNode&&va(e,t,n,3,null,null),eD(t)}function Gl(e,t){if(xn(t))return;let n=I(null);try{t[C]&=-129,t[C]|=256,t[Oe]&&En(t[Oe]),nD(e,t),tD(e,t),t[b].type===1&&t[B].destroy();let r=t[Zt];if(r!==null&&Ue(t[ne])){r!==t[ne]&&ed(r,t);let o=t[nt];o!==null&&o.detachView(e)}iu(t)}finally{I(n)}}function tD(e,t){let n=e.cleanup,r=t[hr];if(n!==null)for(let s=0;s=0?r[a]():r[-a].unsubscribe(),s+=2}else{let a=r[n[s+1]];n[s].call(a)}r!==null&&(t[hr]=null);let o=t[vt];if(o!==null){t[vt]=null;for(let s=0;sZ&&Xg(e,t,Z,!1);z(s?L.TemplateUpdateStart:L.TemplateCreateStart,o,n),n(r,o)}finally{Yt(i);z(s?L.TemplateUpdateEnd:L.TemplateCreateEnd,o,n)}}function em(e,t,n){vD(e,t,n),(n.flags&64)===64&&ED(e,t,n)}function sd(e,t,n=Ne){let r=t.localNames;if(r!==null){let o=t.index+1;for(let i=0;i=a&&f<=c){let g=t.data[f],D=d[h+1];Ln(g,n[f],D,i),l=!0}else if(f>c)break}}return s!==null&&Object.hasOwn(r.inputs,o)&&(Ln(r,n[s],o,i),l=!0),l}function TD(e,t){let n=He(t,e),r=n[b];MD(r,n);let o=n[Ze];o!==null&&n[Mn]===null&&(n[Mn]=bg(o,n[wt])),z(L.ComponentStart);try{ad(r,n,n[X])}finally{z(L.ComponentEnd,n[X])}}function MD(e,t){for(let n=t.length;n{mr(e.lView)},consumerOnSignalRead(){this.lView[Oe]=this}});function OD(e){let t=e[Oe]??Object.create(kD);return t.lView=e,t}var kD=m(l({},jt),{consumerIsAlwaysLive:!0,kind:`template`,consumerMarkedDirty:e=>{let t=It(e.lView);for(;t&&!dm(t[b]);)t=It(t);t&&Cl(t)},consumerOnSignalRead(){this.lView[Oe]=this}});function dm(e){return e.type!==2}function fm(e){if(e[Et]===null)return;let t=!0;for(;t;){let n=!1;for(let r of e[Et])if(r.dirty&&(n=!0,r.zone===null||Zone.current===r.zone?r.run():r.zone.run(()=>r.run()),e[Et]===null))return;t=n&&!!(e[C]&8192)}}var PD=100;function hm(e,t=0){let r=e[Ye].rendererFactory;r.begin?.();try{LD(e,t)}finally{r.end?.()}}function LD(e,t){let n=Pl();try{fo(!0),Eu(e,t);let r=0;for(;To(e);){if(r===PD)throw new y(103,!1);r++,Eu(e,1)}}finally{fo(n)}}function FD(e,t,n,r){if(xn(t))return;let o=t[C];Rs(t);let a=!0,c=null,l=null;dm(e)?(l=ND(t),c=Ht(l)):ns()===null?(a=!1,l=OD(t),c=Ht(l)):t[Oe]&&(En(t[Oe]),t[Oe]=null);try{Sl(t),Wh(e.bindingStartIndex),n!==null&&Jg(e,t,n,2,r);let u=(o&3)===3;if(u){let f=e.preOrderCheckHooks;f!==null&&zs(t,f,null)}else{let f=e.preOrderHooks;f!==null&&Ws(t,f,0,null),Wl(t,0)}if(jD(t),fm(t),pm(t,0),e.contentQueries!==null&&Sg(e,t),true)if(u){let f=e.contentCheckHooks;f!==null&&zs(t,f)}else{let f=e.contentHooks;f!==null&&Ws(t,f,1),Wl(t,1)}HD(e,t);let d=e.components;d!==null&&mm(t,d,0);let h=e.viewQuery;if(h!==null&&au(2,h,r),true)if(u){let f=e.viewCheckHooks;f!==null&&zs(t,f)}else{let f=e.viewHooks;f!==null&&Ws(t,f,2),Wl(t,2)}if(e.firstUpdatePass===!0&&(e.firstUpdatePass=!1),t[Es]){for(let f of t[Es])f();t[Es]=null}lm(t),t[C]&=-73}catch(u){let d=!1,h=u,f=t;for(;f!==null;){if(Ue(f)){f=f[ne];continue}let g=f[So];if(g)try{let D=t[Ee][X],_={declarationInstance:D,declarationType:D?.constructor,caughtBy:g},O=I(null);try{g(ip(h),_)}finally{I(O)}d=!0;break}catch(D){h=D}f=f[ne]}if(!d)throw mr(t),h}finally{l!==null&&(vn(l,c),a&&xD(l)),xs()}}function pm(e,t){for(let n=mg(e);n!==null;n=yg(n))for(let r=J;r0&&(e[n-1][je]=r[je]);let i=Io(e,J+t);Xw(r[b],r);let s=i[nt];s!==null&&s.detachView(i[b]),r[ne]=null,r[je]=null,r[C]&=-129}return r}function VD(e,t,n,r){let o=J+r,i=n.length;r>0&&(n[o-1][je]=t),r-1&&(Uo(t,r),Io(n,r))}this._attachedToViewContainer=!1}ya(this._lView[b],this._lView)}onDestroy(t){Ms(this._lView,t)}markForCheck(){cd(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[C]&=-129}reattach(){Ts(this._lView),this._lView[C]|=128}detectChanges(){this._lView[C]|=1024,hm(this._lView)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new y(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;let t=gr(this._lView),n=this._lView[Zt];n!==null&&!t&&ed(n,this._lView),Wg(this._lView[b],this._lView)}attachToAppRef(t){if(this._attachedToViewContainer)throw new y(902,!1);this._appRef=t;let n=gr(this._lView),r=this._lView[Zt];r!==null&&!n&&Im(r,this._lView),Ts(this._lView)}};var Ho=(()=>{class e{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=$D;constructor(n,r,o){this._declarationLView=n,this._declarationTContainer=r,this.elementRef=o}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(n,r){return this.createEmbeddedViewImpl(n,r)}createEmbeddedViewImpl(n,r,o){return new Xt(Qo(this._declarationLView,this._declarationTContainer,n,{embeddedViewInjector:r,dehydratedView:o}))}}return e})();function $D(){return ld(ie(),w())}function ld(e,t){return e.type&4?new Ho(t,e,Nr(e,t)):null}function Yo(e,t,n,r,o){let i=e.data[t];if(i===null)i=BD(e,t,n,r,o),qh()&&(i.flags|=32);else if(i.type&64){i.type=n,i.value=r,i.attrs=o;let s=$h();i.injectorIndex=s===null?-1:s.injectorIndex}return yr(i,!0),i}function BD(e,t,n,r,o){let i=Al(),s=Ol(),a=s?i:i&&i.parent,c=e.data[t]=WD(e,a,n,t,r,o);return zD(e,c,i,s),c}function zD(e,t,n,r){e.firstChild===null&&(e.firstChild=t),n!==null&&(r?n.child==null&&t.parent!==null&&(n.child=t):n.next===null&&(n.next=t,t.prev=n))}function WD(e,t,n,r,o,i){let s=t?t.injectorIndex:-1,a=0;return Nl()&&(a|=128),{type:n,index:r,insertBeforeIndex:null,injectorIndex:s,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,controlDirectiveIndex:-1,customControlIndex:-1,propertyBindings:null,flags:a,providerIndexes:0,value:o,namespace:Ul(),attrs:i,mergedAttrs:null,localNames:null,initialInputs:null,inputs:null,hostDirectiveInputs:null,outputs:null,hostDirectiveOutputs:null,directiveToIndex:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:t,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}function qD(e){let t=e[Il]??[],r=e[ne][B],o=[];for(let i of t)i.data[Ig]!==void 0?o.push(i):GD(i,r);e[Il]=o}function GD(e,t){let n=0,r=e.firstChild;if(r){let o=e.data[Eg];for(;nnull;var ZD=()=>null;function ea(e,t){return QD(e,t)}function wm(e,t,n){return ZD(e,t,n)}var Dm=class{};var Fn=class{};var jn=class{destroyNode=null;static __NG_ELEMENT_ID__=()=>YD()};function YD(){let e=w(),n=He(ie().index,e);return(Dt(n)?n:e)[B]}var bm=(()=>{class e{static ɵprov=T({token:e,providedIn:`root`,factory:()=>null})}return e})();function Sm(e){return e.debugInfo?.className||e.type.name||null}var Gs={};var ta=class{injector;parentInjector;constructor(t,n){this.injector=t,this.parentInjector=n}get(t,n,r){let o=this.injector.get(t,Gs,r);return o!==Gs||n===Gs?o:this.parentInjector.get(t,n,r)}};function Ia(e,t,n){return e[t]=n}function KD(e,t){return e[t]}function xe(e,t,n){if(n===Ae)return!1;let r=e[t];return Object.is(r,n)?!1:(e[t]=n,!0)}function ud(e,t,n,r){let o=xe(e,t,n);return xe(e,t+1,r)||o}function XD(e,t,n,r,o){let i=ud(e,t,n,r);return xe(e,t+2,o)||i}function kn(e,t,n){return function r(o){let i=r.__ngNativeEl__;i!==void 0&&ow(o,i);cd(rt(e)?He(e.index,t):t,5);let a=t[X],c=xp(t,a,n,o),l=r.__ngNextListenerFn__;for(;l;)c=xp(t,a,l,o)&&c,l=l.__ngNextListenerFn__;return c}}function xp(e,t,n,r){let o=I(null);try{return z(L.OutputStart,t,n),n(r)!==!1}catch(i){return SD(e,i),!1}finally{z(L.OutputEnd,t,n),I(o)}}function dd(e,t,n,r,o,i,s,a){let c=ws(e),l=!1,u=null;if(!r&&c&&(u=eb(t,n,i,e.index)),u!==null){let d=u.__ngLastListenerFn__||u;d.__ngNextListenerFn__=s,u.__ngLastListenerFn__=s,l=!0}else{let d=Ne(e,n),h=r?r(d):d;r||(a.__ngNativeEl__=d);let f=o.listen(h,i,a);if(!JD(i))Cm(r?D=>r(he(D[e.index])):e.index,t,n,i,a,f,!1)}return l}function JD(e){return e.startsWith(`animation`)||e.startsWith(`transition`)}function eb(e,t,n,r){let o=e.cleanup;if(o!=null)for(let i=0;ic?a[c]:null}typeof s==`string`&&(i+=2)}return null}function Cm(e,t,n,r,o,i,s){let a=t.firstCreatePass?Ml(t):null,c=Tl(n),l=c.length;c.push(o,i),a&&a.push(r,e,l,(l+1)*(s?-1:1))}function Ap(e,t,n,r,o){let i=null,s=null,a=null,c=!1,l=e.directiveToIndex.get(n.type);if(typeof l==`number`?i=l:[i,s,a]=l,s!==null&&a!==null&&e.hostDirectiveOutputs&&Object.hasOwn(e.hostDirectiveOutputs,r)){let u=e.hostDirectiveOutputs[r];for(let d=0;d=s&&h<=a)c=!0,na(e,t,h,u[d+1],r,o);else if(h>a)break}}return Object.hasOwn(n.outputs,r)&&(c=!0,na(e,t,i,r,r,o)),c}function na(e,t,n,r,o,i){let s=t[n],a=t[b],d=s[a.data[n].outputs[r]].subscribe(i);Cm(e.index,a,t,o,i,d,!0)}function tb(){nb()}function nb(){let e=w(),t=q(),n=ie();if(t.firstCreatePass&&ib(t,n),n.controlDirectiveIndex===-1)return;Nt(`NgSignalForms`);let r=e[n.controlDirectiveIndex];t.data[n.controlDirectiveIndex].controlDef.create(r,new ra(e,t,n))}function rb(){ob()}function ob(){let e=w(),t=q(),n=Kt();if(n.controlDirectiveIndex===-1)return;let r=t.data[n.controlDirectiveIndex].controlDef,o=e[n.controlDirectiveIndex];r.update(o,new ra(e,t,n))}var ra=class{lView;tView;tNode;hasPassThrough;constructor(t,n,r){this.lView=t,this.tView=n,this.tNode=r,this.hasPassThrough=!!(r.flags&4096)}get customControl(){return this.tNode.customControlIndex!==-1?this.lView[this.tNode.customControlIndex]:void 0}get nativeElement(){return Ne(this.tNode,this.lView)}get descriptor(){return`<${this.tNode.value}>`}listenToCustomControlOutput(t,n){let r=this.tView.data[this.tNode.customControlIndex];Ap(this.tNode,this.lView,r,t,kn(this.tNode,this.lView,n))}listenToCustomControlModel(t){let n=this.tNode.flags&1024?`valueChange`:`checkedChange`,r=this.tView.data[this.tNode.customControlIndex];Ap(this.tNode,this.lView,r,n,kn(this.tNode,this.lView,t))}listenToDom(t,n){dd(this.tNode,this.tView,this.lView,void 0,this.lView[B],t,n,kn(this.tNode,this.lView,n))}setInputOnDirectives(t,n,r){let o=this.tNode.inputs?.[t],i=this.tNode.hostDirectiveInputs?.[t];if(!o&&!i)return!1;let s=!1;if(o)for(let a of o){if(a===this.tNode.controlDirectiveIndex)continue;let c=this.lView[a],l=this.tView.data[a];(!r||r(kp(c,l,t)))&&(Ln(l,c,t,n),s=!0)}if(i)for(let a=0;a0;){let o=r.shift();if(typeof o!=`function`){for(let s in o.inputs)n[o.inputs[s]]=!0;let i=Op(o.directive);i!==null&&r.push(...i);continue}for(let i of o()){if(typeof i==`function`)continue;if(i.inputs)for(let a=0;a1){t.flags|=4096;return}sb(e,t)}function sb(e,t){for(let n=t.directiveStart;n{let i=t.hostDirectiveInputs[r],s=t.hostDirectiveOutputs[r+`Change`];if(!i||!s)return!1;for(let a=0;a=f&&c<=g)return t.flags|=o,t.customControlIndex=h,!0}}return!1};if(n(`value`,1024)||n(`checked`,2048))return}}function Pp(e,t){return ab(e,t)&&cb(e,t+`Change`)}function ab(e,t){return t in e.inputs}function cb(e,t){return t in e.outputs}var Iu=Symbol(`BINDING`);var Hn=new v(``);function oa(e,t,n){let r=n?e.styles:null,o=n?e.classes:null,i=0;if(t!==null)for(let s=0;s0&&(n.directiveToIndex=new Map);for(let h=0;h0;){let n=e[--t];if(typeof n==`number`&&n<0)return n}return 0}function yb(e,t,n){if(n){if(t.exportAs)for(let r=0;r{let[n,r,o]=e[t],i={propName:n,templateName:t,isSignal:(r&Go.SignalBased)!==0};return o&&(i.transform=o),i})}function Db(e){return Object.keys(e).map(t=>({propName:e[t],templateName:t}))}function bb(e,t,n){let r=t instanceof K?t:t?.injector;return r&&e.getStandaloneInjector!==null&&(r=e.getStandaloneInjector(r)||r),r?new ta(n,r):n}function Sb(e){let t=e.get(Fn,null);if(t===null)throw new y(407,!1);return{rendererFactory:t,sanitizer:e.get(bm,null),changeDetectionScheduler:e.get(Bt,null),ngReflect:!1,tracingService:e.get(Jt,null,{optional:!0})}}function Cb(e,t,n){let r=Rm(e);return Og(t,r,r===`svg`?Sn:r===`math`?Ds:n)}function Tb(e){if((e&&`localName`in e&&typeof e.localName==`string`?e.localName:e?.tagName)?.toLowerCase()===`script`)throw new y(905,!1)}function Rm(e){return(e.selectors[0][0]||`div`).toLowerCase()}var Sr=class{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=wb(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=Db(this.componentDef.outputs),this.cachedOutputs}constructor(t,n){this.componentDef=t,this.ngModule=n,this.componentType=t.type,this.selector=Ww(t.selectors),this.ngContentSelectors=t.ngContentSelectors??[],this.isBoundToModule=!!n}create(t,n,r,o,i,s,a,c){z(L.DynamicComponentStart);let l=I(null);try{let u=this.componentDef,d=bb(u,o||this.ngModule,t),h=Sb(d),f=h.tracingService;return f&&f.componentCreate?f.componentCreate(Sm(u),()=>this.createComponentRef(h,d,n,r,i,s,a,c)):this.createComponentRef(h,d,n,r,i,s,a,c)}finally{I(l)}}createComponentRef(t,n,r,o,i,s,a,c){let l=this.componentDef,u=Mb(o,l,s,i,c),d=t.rendererFactory.createRenderer(null,l),h=o?pD(d,o,l.encapsulation,n):Cb(l,d,a??null);Tb(h);let f=n.get(Hn,null),g=_b(h,()=>n.get(G,null)??Hu());f&&f.addHost(g);let D=s?.some(Up)||i?.some(O=>typeof O!=`function`&&O.bindings.some(Up)),E=od(null,u,null,512|Yg(l),null,null,t,d,n,null,bg(h,n,!0));f&&Nm&&g instanceof ShadowRoot&&Ms(E,()=>{f.removeHost(g)}),E[Z]=h,Rs(E);let _=null;try{let O=Mm(Z,E,2,`#host`,()=>u.directiveRegistry,!0,0);Lg(d,h,O),Dr(h,E),em(u,E,O),Cg(u,O,E),_m(u,O),r!==void 0&&Rb(O,this.ngContentSelectors,r),_=He(O.index,E),E[X]=_[X],ad(u,E,null)}catch(O){throw _!==null&&iu(_),iu(E),O}finally{z(L.DynamicComponentEnd),xs()}return new ia(this.componentType,E,!!D)}};function Mb(e,t,n,r,o){let i=e?[`ng-version`,`22.2.2`]:qw(t.selectors[0]),s=null,a=null,c=0;if(n)for(let d of n)c+=d[Iu].requiredVars,d.create&&(d.targetIdx=0,(s??=[]).push(d)),d.update&&(d.targetIdx=0,(a??=[]).push(d));if(r)for(let d=0;d{if(n&1&&e)for(let r of e)r.create();if(n&2&&t)for(let r of t)r.update()}}function Up(e){let t=e[Iu].kind;return t===`input`||t===`twoWay`}var ia=class extends Dm{_rootLView;_hasInputBindings;instance;hostView;changeDetectorRef;componentType;location;previousInputValues=null;_tNode;constructor(t,n,r){super(),this._rootLView=n,this._hasInputBindings=r,this._tNode=bs(n[b],Z),this.location=Nr(this._tNode,n),this.instance=He(this._tNode.index,n)[X],this.hostView=this.changeDetectorRef=new Xt(n,void 0),this.componentType=t}setInput(t,n){this._hasInputBindings;let r=this._tNode;if(this.previousInputValues??=new Map,this.previousInputValues.has(t)&&Object.is(this.previousInputValues.get(t),n))return;let o=this._rootLView;Ea(r,o[b],o,t,n);this.previousInputValues.set(t,n);cd(He(r.index,o),1)}get injector(){return new St(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(t){this.hostView.onDestroy(t)}};function Rb(e,t,n){let r=e.projection=[];for(let o=0;o{class e{static __NG_ELEMENT_ID__=xb}return e})();function xb(){return xm(ie(),w())}var wu=class e extends Rr{_lContainer;_hostTNode;_hostLView;constructor(t,n,r){super(),this._lContainer=t,this._hostTNode=n,this._hostLView=r}get element(){return Nr(this._hostTNode,this._hostLView)}get injector(){return new St(this._hostTNode,this._hostLView)}get parentInjector(){let t=Fu(this._hostTNode,this._hostLView);if(rg(t)){let n=Ys(t,this._hostLView),r=Zs(t),o=n[b].data[r+8];return new St(o,n)}else return new St(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){let n=Hp(this._lContainer);return n!==null&&n[t]||null}get length(){return this._lContainer.length-J}createEmbeddedView(t,n,r){let o,i,s;typeof r==`number`?o=r:r!=null&&(o=r.index,i=r.injector,s=r.onError);let a=ea(this._lContainer,t.ssrId),c=t.createEmbeddedViewImpl(n||{},i,a);return s&&(c._lView[So]=s),this.insertImpl(c,o,br(this._hostTNode,a)),c}createComponent(t,n,r,o,i,s,a){let c,l,u=n||{};c=u.index,r=u.injector,o=u.projectableNodes,i=u.environmentInjector||u.ngModuleRef,s=u.directives,a=u.bindings,l=u.onError;let d=new Sr(zt(t)),h=r||this.parentInjector;if(!i&&d.ngModule==null){let O=this.parentInjector.get(K,null);O&&(i=O)}let f=zt(d.componentType??{}),g=ea(this._lContainer,f?.id??null),D=g?.firstChild??null,E=d.create(h,o,D,i,s,a,this._getHostElementNamespace());return l&&(E.hostView._lView[So]=l),this.insertImpl(E.hostView,c,br(this._hostTNode,g)),E}_getHostElementNamespace(){if(this._hostTNode.type&2){let t=this._hostTNode.parent??this._hostLView[fe];return t!==null&&t.type&2&&typeof t.value==`string`&&t.value.toLowerCase()===`foreignobject`?null:t?.namespace??null}return this._hostTNode.namespace}insert(t,n){return this.insertImpl(t,n,!0)}insertImpl(t,n,r){let o=t._lView;if(Oh(o)){let a=this.indexOf(t);if(a!==-1)this.detach(a);else{let c=o[ne],l=new e(c,c[fe],c[ne]);l.detach(l.indexOf(t))}}let i=this._adjustIndex(n),s=this._lContainer;return Zo(s,o,i,r),t.attachToViewContainerRef(),hl(Ql(s),i,t),t}move(t,n){return this.insert(t,n)}indexOf(t){let n=Hp(this._lContainer);return n!==null?n.indexOf(t):-1}remove(t){let n=this._adjustIndex(t,-1),r=Uo(this._lContainer,n);r&&(Io(Ql(this._lContainer),n),ya(r[b],r))}detach(t){let n=this._adjustIndex(t,-1),r=Uo(this._lContainer,n);return r&&Io(Ql(this._lContainer),n)!=null?new Xt(r):null}_adjustIndex(t,n=0){return t??this.length+n}};function Hp(e){return e[Co]}function Ql(e){return e[Co]||(e[Co]=[])}function xm(e,t){let n,r=t[e.index];return Ue(r)?n=r:(n=ym(r,t,null,e),t[e.index]=n,id(t,n)),Ob(n,t,e,r),new wu(n,e,t)}function Ab(e,t){let n=e[B],r=n.createComment(``),o=Ne(t,e);return On(n,n.parentNode(o),r,n.nextSibling(o),!1),r}var Ob=Lb;var kb=()=>!1;function Pb(e,t,n){return kb(e,t,n)}function Lb(e,t,n,r){if(e[Nn])return;let o;n.type&8?o=he(r):o=Ab(t,n),e[Nn]=o}var Du=class e{queryList;matches=null;constructor(t){this.queryList=t}clone(){return new e(this.queryList)}setDirty(){this.queryList.setDirty()}};var bu=class e{queries;constructor(t=[]){this.queries=t}createEmbeddedView(t){let n=t.queries;if(n!==null){let r=t.contentQueries!==null?t.contentQueries[0]:n.length,o=[];for(let i=0;i0)r.push(s[a/2]);else{let l=i[a+1],u=t[-c];for(let d=J;dt.trim())}function km(e,t,n){e.queries===null&&(e.queries=new Su),e.queries.track(new Cu(t,n))}function zb(e,t){let n=e.contentQueries||(e.contentQueries=[]);t!==(n.length?n[n.length-1]:-1)&&n.push(e.queries.length-1,t)}function hd(e,t){return e.queries.getByIndex(t)}function Pm(e,t){let n=e[b],r=hd(n,t);return r.crossesNgTemplate?Tu(n,e,t,[]):Am(n,e,r,t)}function Lm(e,t,n){let r,o=so(()=>{r._dirtyCounter();let i=qb(r,e);if(t&&i===void 0)throw new y(-951,!1);return i});return r=o[Y],r._dirtyCounter=k(0),r._flatValue=void 0,o}function Fm(e){return Lm(!0,!1,e)}function jm(e){return Lm(!0,!0,e)}function Wb(e,t){let n=e[Y];n._lView=w(),n._queryIndex=t,n._queryList=fd(n._lView,t),n._queryList.onDirty(()=>n._dirtyCounter.update(r=>r+1))}function qb(e,t){let n=e._lView,r=e._queryIndex;if(n===void 0||r===void 0||n[C]&4)return t?void 0:Me;let o=fd(n,r),i=Pm(n,r);return o.reset(i,hg),t?o.first:o._changesDetected||e._flatValue===void 0?e._flatValue=o.toArray():e._flatValue}function Xo(e){return!!e&&typeof e.then==`function`}function Um(e){return!!e&&typeof e.subscribe==`function`}var Cr=class{};var wa=class{};var aa=class extends Cr{ngModuleType;_parent;_bootstrapComponents=[];_r3Injector;instance;destroyCbs=[];constructor(t,n,r,o=!0){super(),this.ngModuleType=t,this._parent=n;let i=hh(t);this._bootstrapComponents=kw(i.bootstrap),this._r3Injector=Hl(t,n,[{provide:Cr,useValue:this},...r],go(t),new Set([`environment`])),o&&this.resolveInjectorInitializers()}resolveInjectorInitializers(){this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(this.ngModuleType)}get injector(){return this._r3Injector}destroy(){let t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach(n=>n()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}};var ca=class extends wa{moduleType;constructor(t){super(),this.moduleType=t}create(t){return new aa(this.moduleType,t,[])}};var Vo=class extends Cr{injector;instance=null;constructor(t){super();let n=new bn([...t.providers,{provide:Cr,useValue:this}],t.parent||Do(),t.debugName,new Set([`environment`]));this.injector=n,t.runEnvironmentInitializers&&n.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(t){this.injector.onDestroy(t)}};function Jo(e,t,n=null){return new Vo({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}var Gb=(()=>{class e{_injector;cachedInjectors=new Map;constructor(n){this._injector=n}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n)){let r=gl(!1,n.type),o=r.length>0?Jo([r],this._injector,``):null;this.cachedInjectors.set(n,o)}return this.cachedInjectors.get(n)}ngOnDestroy(){try{for(let n of this.cachedInjectors.values())n!==null&&n.destroy()}finally{this.cachedInjectors.clear()}}static ɵprov=T({token:e,providedIn:`environment`,factory:()=>new e(S(K))})}return e})();function ei(e){return zo(()=>{let t=Hm(e),n=m(l({},t),{decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection!==ju.Eager,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:t.standalone?o=>o.get(Gb).getOrCreateStandaloneInjector(n):null,getExternalStyles:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||Xe.Emulated,styles:e.styles||Me,_:null,schemas:e.schemas||null,tView:null,id:``});t.standalone&&Nt(`NgStandalone`),Vm(n);let r=e.dependencies;return n.directiveDefs=Vp(r,Qb),n.pipeDefs=Vp(r,ph),n.id=Kb(n),n})}function Qb(e){return zt(e)||hs(e)}function Da(e){return zo(()=>({type:e.type,bootstrap:e.bootstrap||Me,declarations:e.declarations||Me,imports:e.imports||Me,exports:e.exports||Me,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function Zb(e,t){if(e==null)return Gt;let n={};for(let r in e)if(Object.hasOwn(e,r)){let o=e[r],i,s,a,c;Array.isArray(o)?(a=o[0],i=o[1],s=o[2]??i,c=o[3]||null):(i=o,s=o,a=Go.None,c=null),n[i]=[r,a,c],t[i]=s}return n}function Yb(e){if(e==null)return Gt;let t={};for(let n in e)Object.hasOwn(e,n)&&(t[e[n]]=n);return t}function xr(e){return zo(()=>{let t=Hm(e);return Vm(t),t})}function pd(e){return{type:e.type,name:e.name,factory:null,pure:e.pure!==!1,standalone:e.standalone??!0,onDestroy:e.type.prototype.ngOnDestroy||null}}function Hm(e){let t={};return{type:e.type,providersResolver:null,viewProvidersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputConfig:e.inputs||Gt,exportAs:e.exportAs||null,standalone:e.standalone??!0,signals:e.signals===!0,selectors:e.selectors||Me,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,controlDef:null,signalFormsInputPresence:null,inputs:Zb(e.inputs,t),outputs:Yb(e.outputs),debugInfo:null}}function Vm(e){e.features?.forEach(t=>t(e))}function Vp(e,t){return e?()=>{let n=typeof e==`function`?e():e,r=[];for(let o of n){let i=t(o);i!==null&&r.push(i)}return r}:null}function Kb(e){let t=0,n=typeof e.consts==`function`?``:e.consts,r=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,n,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery];for(let i of r.join(`|`))t=Math.imul(31,t)+i.charCodeAt(0)<<0;return t+=2147483648,`c`+t}var $m=new v(``);var gd=(()=>{class e{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((n,r)=>{this.resolve=n,this.reject=r});appInits=p($m,{optional:!0})??[];injector=p(_e);constructor(){}runInitializers(){if(this.initialized)return;let n=[];for(let o of this.appInits){let i=oe(this.injector,o);if(Xo(i))n.push(i);else if(Um(i)){let s=new Promise((a,c)=>{i.subscribe({complete:a,error:c})});n.push(s)}}let r=()=>{this.done=!0,this.resolve()};Promise.all(n).then(()=>{r()}).catch(o=>{this.reject(o)}),n.length===0&&r(),this.initialized=!0}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();function Xb(e){return t=>{t.controlDef={create:(n,r)=>{n?.ɵngControlCreate(r)},update:(n,r)=>{n?.ɵngControlUpdate?.(r)},passThroughInput:e}}}function Jb(e){return Object.getPrototypeOf(e.prototype).constructor}function Bm(e){let t=Jb(e.type),n=!0,r=[e];for(;t&&t!==Function.prototype&&t!==Object.prototype;){let o,i=Object.hasOwn(t,vo)?t[vo]:void 0,s=Object.hasOwn(t,Eo)?t[Eo]:void 0;if(ot(e))o=i??s;else{if(i)throw new y(903,!1);o=s}if(o){if(n){r.push(o);let c=e;c.inputs=Zl(e.inputs),c.declaredInputs=Zl(e.declaredInputs),c.outputs=Zl(e.outputs);let l=o.hostBindings;l&&oS(e,l);let u=o.viewQuery,d=o.contentQueries;if(u&&nS(e,u),d&&rS(e,d),eS(e,o),fh(e.outputs,o.outputs),ot(o)&&o.data.animation){let h=e.data;h.animation=(h.animation||[]).concat(o.data.animation)}}let a=o.features;if(a)for(let c=0;c=0;r--){let o=e[r];o.hostVars=t+=o.hostVars,o.hostAttrs=wr(o.hostAttrs,n=wr(n,o.hostAttrs))}}function Zl(e){return e===Gt?{}:e===Me?[]:e}function nS(e,t){let n=e.viewQuery;n?e.viewQuery=(r,o)=>{t(r,o),n(r,o)}:e.viewQuery=t}function rS(e,t){let n=e.contentQueries;n?e.contentQueries=(r,o,i)=>{t(r,o,i),n(r,o,i)}:e.contentQueries=t}function oS(e,t){let n=e.hostBindings;n?e.hostBindings=(r,o)=>{t(r,o),n(r,o)}:e.hostBindings=t}function iS(e,t,n,r,o,i,s,a){if(n.firstCreatePass){e.mergedAttrs=wr(e.mergedAttrs,e.attrs);let u=e.tView=rd(2,e,o,i,s,n.directiveRegistry,n.pipeRegistry,null,n.schemas,n.consts,null);n.queries!==null&&(n.queries.template(n,e),u.queries=n.queries.embeddedTView(e))}a&&(e.flags|=a),yr(e,!1);let c=sS(n,t,e,r);Os()&&td(n,t,c,e),Dr(c,t);let l=ym(c,t,c,e);t[r+Z]=l,id(t,l),Pb(l,e,t)}function $o(e,t,n,r,o,i,s,a,c,l,u){let d=n+Z,h;if(t.firstCreatePass){if(h=Yo(t,d,4,s||null,a||null),l!=null){let f=it(t.consts,l);h.localNames=[];for(let g=0;g{class e{log(n){console.log(n)}warn(n){console.warn(n)}static ɵfac=function(r){return new(r||e)};static ɵprov=T({token:e,factory:e.ɵfac,providedIn:`platform`})}return e})();var md=new v(``);var ti=new v(``);function zm(){Lc(e=>{throw new y(-600,``)})}var cS=10;var en=(()=>{class e{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=p(Ve);afterRenderManager=p(Bg);zonelessEnabled=p(Ao);rootEffectScheduler=p(Fs);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new ee;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=p(bt);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe($(n=>!n))}constructor(){p(Jt,{optional:!0})}whenStable(){let n;return new Promise(r=>{n=this.isStable.subscribe({next:o=>{o&&r()}})}).finally(()=>{n.unsubscribe()})}_injector=p(K);_rendererFactory=null;get injector(){return this._injector}bootstrap(n,r){return this.bootstrapImpl(n,r)}bootstrapImpl(n,r,o=_e.NULL){return this._injector.get(de).run(()=>{if(z(L.BootstrapComponentStart),!this._injector.get(gd).done)throw new y(405,``);let a=zt(n),c=this._injector.get(Cr),l=new Sr(a,c);this.componentTypes.push(n);let{hostElement:u,directives:d,bindings:h}=lS(r),f=u||l.selector,g=l.create(o,[],f,c.injector,d,h),D=g.location.nativeElement,E=g.injector.get(md,null);return E?.registerApplication(D),g.onDestroy(()=>{this.detachView(g.hostView),Lo(this.components,g),E?.unregisterApplication(D)}),this._loadComponent(g),z(L.BootstrapComponentEnd,g),g})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){z(L.ChangeDetectionStart),this.tracingSnapshot!==null?this.tracingSnapshot.run(Ju.CHANGE_DETECTION,this.tickImpl):this.tickImpl()}tickImpl=()=>{if(this._runningTick)throw z(L.ChangeDetectionEnd),new y(101,!1);let n=I(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,I(n),this.afterTick.next(),z(L.ChangeDetectionEnd)}};synchronize(){this._rendererFactory===null&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get(Fn,null,{optional:!0}));let n=0;for(;this.dirtyFlags!==0&&n++To(n))){this.dirtyFlags|=2;return}else this.dirtyFlags&=-8}attachView(n){let r=n;this._views.push(r),r.attachToAppRef(this)}detachView(n){let r=n;Lo(this._views,r),r.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView);try{this.tick()}catch(o){this.internalErrorHandler(o)}this.components.push(n),this._injector.get(ti,[]).forEach(o=>o(n))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n=>n()),this._views.slice().forEach(n=>n.destroy())}finally{this._destroyed=!0,this._views=[],this._destroyListeners=[]}}onDestroy(n){return this._destroyListeners.push(n),()=>Lo(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new y(406,!1);let n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();function lS(e){return e===void 0||typeof e==`string`||e instanceof Element?{hostElement:e}:e}function Lo(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function Wm(e,t){let n=w();if(xe(n,st(),t)){let o=q(),i=Kt();if(Ea(i,o,n,e,t))rt(i)&&om(n,i.index);else{let a=Ne(i,n);im(n[B],a,null,i.value,e,t,null)}}return Wm}function Ar(e,t,n,r){let o=w();if(xe(o,st(),t)){q();DD(Kt(),o,e,t,n,r)}return Ar}var Mu=class{destroy(t){}updateValue(t,n){}swap(t,n){let r=Math.min(t,n),o=Math.max(t,n),i=this.detach(o);if(o-r>1){let s=this.detach(r);this.attach(r,i),this.attach(o,s)}else this.attach(r,i)}move(t,n){this.attach(n,this.detach(t))}};function Yl(e,t,n,r,o){return e===n&&Object.is(t,r)?1:Object.is(o(e,t),o(n,r))?-1:0}function uS(e,t,n,r){let o,i,s=0,a=e.length-1;if(Array.isArray(t)){I(r);let l=t.length-1;for(I(null);s<=a&&s<=l;){let u=e.at(s),d=t[s],h=Yl(s,u,s,d,n);if(h!==0){h<0&&e.updateValue(s,d),s++;continue}let f=e.at(a),g=t[l],D=Yl(a,f,l,g,n);if(D!==0){D<0&&e.updateValue(a,g),a--,l--;continue}let E=n(s,u),_=n(a,f),O=n(s,d);if(Object.is(O,_)){let ge=n(l,g);Object.is(ge,E)?(e.swap(s,a),e.updateValue(a,g),l--,a--):e.move(a,s),e.updateValue(s,d),s++;continue}if(o??=new la,i??=Bp(e,s,a,n),_u(e,o,s,O))e.updateValue(s,d),s++,a++;else if(i.has(O))o.set(E,e.detach(s)),a--;else{let ge=e.create(s,t[s]);e.attach(s,ge),s++,a++}}for(;s<=l;)$p(e,o,n,s,t[s]),s++}else if(t!=null){I(r);let l=t[Symbol.iterator]();I(null);let u=l.next();for(;!u.done&&s<=a;){let d=e.at(s),h=u.value,f=Yl(s,d,s,h,n);if(f!==0)f<0&&e.updateValue(s,h),s++,u=l.next();else{o??=new la,i??=Bp(e,s,a,n);let g=n(s,h);if(_u(e,o,s,g))e.updateValue(s,h),s++,a++,u=l.next();else if(!i.has(g))e.attach(s,e.create(s,h)),s++,a++,u=l.next();else{let D=n(s,d);o.set(D,e.detach(s)),a--}}}for(;!u.done;)$p(e,o,n,e.length,u.value),u=l.next()}for(;s<=a;)e.destroy(e.detach(a--));o?.forEach(l=>{e.destroy(l)})}function _u(e,t,n,r){return t!==void 0&&t.has(r)?(e.attach(n,t.get(r)),t.delete(r),!0):!1}function $p(e,t,n,r,o){if(_u(e,t,r,n(r,o)))e.updateValue(r,o);else{let i=e.create(r,o);e.attach(r,i)}}function Bp(e,t,n,r){let o=new Set;for(let i=t;i<=n;i++)o.add(r(i,e.at(i)));return o}var la=class{kvMap=new Map;_vMap=void 0;has(t){return this.kvMap.has(t)}delete(t){if(!this.has(t))return!1;let n=this.kvMap.get(t);return this._vMap!==void 0&&this._vMap.has(n)?(this.kvMap.set(t,this._vMap.get(n)),this._vMap.delete(n)):this.kvMap.delete(t),!0}get(t){return this.kvMap.get(t)}set(t,n){if(this.kvMap.has(t)){let r=this.kvMap.get(t);this._vMap===void 0&&(this._vMap=new Map);let o=this._vMap;for(;o.has(r);)r=o.get(r);o.set(r,n)}else this.kvMap.set(t,n)}forEach(t){for(let[n,r]of this.kvMap)if(t(r,n),this._vMap!==void 0){let o=this._vMap;for(;o.has(r);)r=o.get(r),t(r,n)}}};function dS(e,t,n,r,o,i,s,a){Nt(`NgControlFlow`);let c=w(),l=q();return $o(c,l,e,t,n,r,o,it(l.consts,i),256,s,a),yd}function yd(e,t,n,r,o,i,s,a){return Nt(`NgControlFlow`),fS(e,t,n,r,o,i,s,a),yd}function fS(e,t,n,r,o,i,s,a){let c=w(),l=q();$o(c,l,e,t,n,r,o,it(l.consts,i),512,s,a)}function hS(e,t){Nt(`NgControlFlow`);let n=w(),r=st(),o=n[r]!==Ae?n[r]:-1,i=o!==-1?ua(n,Z+o):void 0,s=0;if(xe(n,r,e)){let a=I(null);try{if(i!==void 0&&Em(i,s),e!==-1){let c=Z+e,l=ua(n,c),u=Au(n[b],c),d=wm(l,u,n);Zo(l,Qo(n,u,t,{dehydratedView:d}),s,br(u,d))}}finally{I(a)}}else if(i!==void 0){let a=vm(i,s);a!==void 0&&(a[X]=t)}}var Nu=class{lContainer;$implicit;$index;constructor(t,n,r){this.lContainer=t,this.$implicit=n,this.$index=r}get $count(){return this.lContainer.length-J}};function pS(e){return e}function gS(e,t){return t}var Ru=class{hasEmptyBlock;trackByFn;liveCollection;constructor(t,n,r){this.hasEmptyBlock=t,this.trackByFn=n,this.liveCollection=r}};function mS(e,t,n,r,o,i,s,a,c,l,u,d,h){Nt(`NgControlFlow`);let f=w(),g=q(),D=c!==void 0,E=w(),O=new Ru(D,a?s.bind(E[Ee][X]):s);E[Z+e]=O,$o(f,g,e+1,t,n,r,o,it(g.consts,i),256),D&&$o(f,g,e+2,c,l,u,d,it(g.consts,h),512)}var xu=class extends Mu{lContainer;hostLView;templateTNode;operationsCounter=void 0;needsIndexUpdate=!1;constructor(t,n,r){super(),this.lContainer=t,this.hostLView=n,this.templateTNode=r}get length(){return this.lContainer.length-J}at(t){return this.getLView(t)[X].$implicit}attach(t,n){let r=n[Mn];this.needsIndexUpdate||=t!==this.length,Zo(this.lContainer,n,t,br(this.templateTNode,r)),vS(this.lContainer,t)}detach(t){return this.needsIndexUpdate||=t!==this.length-1,ES(this.lContainer,t),IS(this.lContainer,t)}create(t,n){let r=ea(this.lContainer,this.templateTNode.tView.ssrId);return Qo(this.hostLView,this.templateTNode,new Nu(this.lContainer,n,t),{dehydratedView:r})}destroy(t){ya(t[b],t)}updateValue(t,n){this.getLView(t)[X].$implicit=n}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let t=0;t(Wp(e,t,o,a,r),da))}}return Wp(e,t,o,a,r),da}function Wp(e,t,n,r,o){if(sm(r,n,e,t,Gm),ws(r)){let i=n[b];em(i,n,r),Cg(i,r,n)}o!=null&&sd(n,r)}function vd(){let e=q(),n=am(ie());return e.firstCreatePass&&_m(e,n),Rl(n)&&xl(),_l(),n.classesWithoutHost!=null&&HI(n)&&zp(e,n,w(),n.classesWithoutHost,!0),n.stylesWithoutHost!=null&&VI(n)&&zp(e,n,w(),n.stylesWithoutHost,!1),vd}function Sa(e,t,n,r){return da(e,t,n,r),vd(),Sa}function Ed(e,t,n,r){let o=w(),i=o[b],s=e+Z,a=i.firstCreatePass?Eb(s,i,2,t,n,r):i.data[s];return sm(a,o,e,t,Gm),r!=null&&sd(o,a),Ed}function Id(){return Rl(am(ie()))&&xl(),_l(),Id}function Ca(e,t,n,r){return Ed(e,t,n,r),Id(),Ca}var Gm=(e,t,n,r,o)=>(ks(!0),Og(t[B],r,Ul()));function DS(){return w()}function Ta(e,t,n){let r=w();if(xe(r,st(),t)){q();nm(Kt(),r,e,t,r[B],n)}return Ta}var ni=`en-US`;function Qm(e){typeof e==`string`&&e.toLowerCase().replace(/_/g,`-`)}function Ma(e,t,n){let r=w(),o=q(),i=ie();return Ym(o,r,r[B],i,e,t,n),Ma}function Zm(e,t,n){let r=w(),o=q(),i=ie();return(i.type&3||n)&&dd(i,o,r,n,r[B],e,t,kn(i,r,t)),Zm}function Ym(e,t,n,r,o,i,s){let a=!0,c=null;if((r.type&3||s)&&(c??=kn(r,t,i),dd(r,e,t,s,n,o,i,c)&&(a=!1)),a){let l=r.outputs?.[o],u=r.hostDirectiveOutputs?.[o];if(u&&u.length)for(let d=0;d>17&32767}function xS(e){return(e&2)==2}function AS(e,t){return e&131071|t<<17}function Ou(e){return e|2}function Tr(e){return(e&131068)>>2}function Kl(e,t){return e&-131069|t<<2}function OS(e){return(e&1)===1}function ku(e){return e|1}function kS(e,t,n,r,o,i){let s=i?t.classBindings:t.styleBindings,a=Un(s),c=Tr(s);e[r]=n;let l=!1,u;if(Array.isArray(n)){let d=n;u=d[1],(u===null||fr(d,u)>0)&&(l=!0)}else u=n;if(o)if(c!==0){let h=Un(e[a+1]);e[r+1]=Bs(h,a),h!==0&&(e[h+1]=Kl(e[h+1],r)),e[a+1]=AS(e[a+1],r)}else e[r+1]=Bs(a,0),a!==0&&(e[a+1]=Kl(e[a+1],r)),a=r;else e[r+1]=Bs(c,0),a===0?a=r:e[c+1]=Kl(e[c+1],r),c=r;l&&(e[r+1]=Ou(e[r+1])),qp(e,u,r,!0),qp(e,u,r,!1),PS(t,u,e,r,i),s=Bs(a,c),i?t.classBindings=s:t.styleBindings=s}function PS(e,t,n,r,o){let i=o?e.residualClasses:e.residualStyles;i!=null&&typeof t==`string`&&fr(i,t)>=0&&(n[r+1]=ku(n[r+1]))}function qp(e,t,n,r){let o=e[n+1],i=t===null,s=r?Un(o):Tr(o),a=!1;for(;s!==0&&(a===!1||i);){let c=e[s],l=e[s+1];LS(c,t)&&(a=!0,e[s+1]=r?ku(l):Ou(l)),s=r?Un(l):Tr(l)}a&&(e[n+1]=r?Ou(o):ku(o))}function LS(e,t){return e===null||t==null||(Array.isArray(e)?e[1]:e)===t?!0:Array.isArray(e)&&typeof t==`string`?fr(e,t)>=0:!1}function Na(e,t,n){return Jm(e,t,n,!1),Na}function Xm(e,t){return Jm(e,t,null,!0),Xm}function Jm(e,t,n,r){let o=w(),i=q(),s=Ll(2);if(i.firstUpdatePass&&jS(i,e,s,r),t!==Ae&&xe(o,s,t)){let a=i.data[at()];BS(i,a,o,o[B],e,o[s+1]=zS(t,n),r,s)}}function FS(e,t){return t>=e.expandoStartIndex}function jS(e,t,n,r){let o=e.data;if(o[n+1]===null){let i=o[at()],s=FS(e,n);WS(i,r)&&t===null&&!s&&(t=!1),t=US(o,i,t,r),kS(o,i,t,n,s,r)}}function US(e,t,n,r){let o=Zh(e),i=r?t.residualClasses:t.residualStyles;if(o===null)(r?t.classBindings:t.styleBindings)===0&&(n=Xl(null,e,t,n,r),n=Bo(n,t.attrs,r),i=null);else{let s=t.directiveStylingLast;if(s===-1||e[s]!==o)if(n=Xl(o,e,t,n,r),i===null){let c=HS(e,t,r);c!==void 0&&Array.isArray(c)&&(c=Xl(null,e,t,c[1],r),c=Bo(c,t.attrs,r),VS(e,t,r,c))}else i=$S(e,t,r)}return i!==void 0&&(r?t.residualClasses=i:t.residualStyles=i),n}function HS(e,t,n){let r=n?t.classBindings:t.styleBindings;if(Tr(r)!==0)return e[Un(r)]}function VS(e,t,n,r){let o=n?t.classBindings:t.styleBindings;e[Un(o)]=r}function $S(e,t,n){let r,o=t.directiveEnd;for(let i=1+t.directiveStylingLast;i0;){let c=e[o],l=Array.isArray(c),u=l?c[1]:c,d=u===null,h=n[o+1];h===Ae&&(h=d?Me:void 0);let f=d?ys(h,r):u===r?h:void 0;if(l&&!fa(f)&&(f=ys(c,r)),fa(f)&&(a=f,s))return a;let g=e[o+1];o=s?Un(g):Tr(g)}if(t!==null){let c=i?t.residualClasses:t.residualStyles;c!=null&&(a=ys(c,r))}return a}function fa(e){return e!==void 0}function zS(e,t){return e==null||e===``||(typeof t==`string`?e=Re(e)+t:typeof e==`object`&&(e=go(Re(e)))),e}function WS(e,t){return(e.flags&(t?8:16))!==0}function qS(e,t=``){let n=w(),r=q(),o=e+Z,i=r.firstCreatePass?Yo(r,o,1,t,null):r.data[o],s=GS(r,n,i,t);n[o]=s,Os()&&td(r,n,s,i),yr(i,!1)}var GS=(e,t,n,r)=>(ks(!0),Tw(t[B],r));function QS(e,t,n,r=``){return xe(e,st(),n)?t+Wt(n)+r:Ae}function ZS(e,t,n,r,o,i=``){let a=ud(e,zh(),n,o);return Ll(2),a?t+Wt(n)+r+Wt(o)+i:Ae}function ey(e){return bd(``,e),ey}function bd(e,t,n){let r=w(),o=QS(r,e,t,n);return o!==Ae&&ny(r,at(),o),bd}function ty(e,t,n,r,o){let i=w(),s=ZS(i,e,t,n,r,o);return s!==Ae&&ny(i,at(),s),ty}function ny(e,t,n){let r=Dl(t,e);Mw(e[B],r,n)}function ry(e,t,n){Us(t)&&(t=t());let r=w();if(xe(r,st(),t)){q();tm(Kt(),r,e,t,r[B],n)}return ry}function YS(e,t){let n=Us(e);return n&&e.set(t),n}function oy(e,t){let n=w(),r=q(),o=ie();return Ym(r,n,n[B],o,e,t),oy}function KS(e){return xe(w(),st(),e)?Wt(e):Ae}function Qp(e,t,n){let r=q();r.firstCreatePass&&iy(t,r.data,r.blueprint,ot(e),n)}function iy(e,t,n,r,o){if(e=ue(e),Array.isArray(e))for(let i=0;i>20;if(Dn(e)||!e.multi){let f=new Pn(l,o,De,null),g=eu(c,t,o?u:u+h,d);g===-1?(ru(Xs(a,s),i,c),Jl(i,e,t.length),t.push(c),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),n.push(f),s.push(f)):(n[g]=f,s[g]=f)}else{let f=eu(c,t,u+h,d),g=eu(c,t,u,u+h),D=f>=0&&n[f],E=g>=0&&n[g];if(o&&!E||!o&&!D){ru(Xs(a,s),i,c);let _=eC(o?JS:XS,n.length,o,r,l,e);!o&&E&&(n[g].providerFactory=_),Jl(i,e,t.length,0),t.push(c),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),n.push(_),s.push(_)}else{let _=sy(n[o?g:f],l,!o&&r);Jl(i,e,f>-1?f:g,_)}!o&&r&&E&&n[g].componentProviders++}}}function Jl(e,t,n,r){let o=Dn(t),i=Mh(t);if(o||i){let c=(i?ue(t.useClass):t).prototype.ngOnDestroy;if(c){let l=e.destroyHooks||(e.destroyHooks=[]);if(!o&&t.multi){let u=l.indexOf(n);u===-1?l.push(n,[r,c]):l[u+1].push(r,c)}else l.push(n,c)}}}function sy(e,t,n){return n&&e.componentProviders++,e.multi.push(t)-1}function eu(e,t,n,r){for(let o=n;o{n.providersResolver=(r,o)=>Qp(r,o?o(e):e,!1),t&&(n.viewProvidersResolver=(r,o)=>Qp(r,o?o(t):t,!0))}}function nC(e,t){let n=An()+e,r=w();return r[n]===Ae?Ia(r,n,t()):KD(r,n)}function rC(e,t,n){return ay(w(),An(),e,t,n)}function oC(e,t,n,r){return cy(w(),An(),e,t,n,r)}function iC(e,t,n,r,o){return sC(w(),An(),e,t,n,r,o)}function Sd(e,t){let n=e[t];return n===Ae?void 0:n}function ay(e,t,n,r,o,i){let s=t+n;return xe(e,s,o)?Ia(e,s+1,i?r.call(i,o):r(o)):Sd(e,s+1)}function cy(e,t,n,r,o,i,s){let a=t+n;return ud(e,a,o,i)?Ia(e,a+2,s?r.call(s,o,i):r(o,i)):Sd(e,a+2)}function sC(e,t,n,r,o,i,s,a){let c=t+n;return XD(e,c,o,i,s)?Ia(e,c+3,a?r.call(a,o,i,s):r(o,i,s)):Sd(e,c+3)}function aC(e,t){let n=q(),r,o=e+Z;n.firstCreatePass?(r=cC(t,n.pipeRegistry),n.data[o]=r,r.onDestroy&&(n.destroyHooks??=[]).push(o,r.onDestroy)):r=n.data[o];let i=r.factory||(r.factory=$t(r.type,!0)),a=we(De);try{let c=Ks(!1),l=i();return Ks(c),bl(n,w(),o,l),l}finally{we(a)}}function cC(e,t){if(t)for(let n=t.length-1;n>=0;n--){let r=t[n];if(e===r.name)return r}}function lC(e,t,n){let r=e+Z,o=w(),i=Ss(o,r);return ly(o,r)?ay(o,An(),t,i.transform,n,i):i.transform(n)}function uC(e,t,n,r){let o=e+Z,i=w(),s=Ss(i,o);return ly(i,o)?cy(i,An(),t,s.transform,n,r,s):s.transform(n,r)}function ly(e,t){return e[b].data[t].pure}var uy=(()=>{class e{applicationErrorHandler=p(Ve);appRef=p(en);taskService=p(bt);ngZone=p(de);zonelessEnabled=p(Ao);tracing=p(Jt,{optional:!0});zoneIsDefined=typeof Zone<`u`&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new ae;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(ho):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(p(zl,{optional:!0})??!1);cancelScheduledCallback=null;useMicrotaskScheduler=!1;runningTick=!1;pendingRenderTaskId=null;constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{let n=this.taskService.add();if(!this.runningTick&&(this.cleanup(),!this.zonelessEnabled||this.appRef.includeAllTestViews)){this.taskService.remove(n);return}this.switchToMicrotaskScheduler(),this.taskService.remove(n)})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()}))}switchToMicrotaskScheduler(){this.ngZone.runOutsideAngular(()=>{let n=this.taskService.add();this.useMicrotaskScheduler=!0,queueMicrotask(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(n)})})}notify(n){if(!this.zonelessEnabled&&n===5)return;switch(n){case 0:case 2:this.appRef.dirtyFlags|=2;break;case 3:case 4:case 5:case 1:this.appRef.dirtyFlags|=4;break;case 6:this.appRef.dirtyFlags|=2;break;case 12:this.appRef.dirtyFlags|=16;break;case 13:this.appRef.dirtyFlags|=2;break;case 11:break;default:this.appRef.dirtyFlags|=8}if(this.appRef.tracingSnapshot=this.tracing?.snapshot(this.appRef.tracingSnapshot)??null,!this.shouldScheduleTick())return;let r=this.useMicrotaskScheduler?rp:Vl;this.pendingRenderTaskId=this.taskService.add(),this.scheduleInRootZone?this.cancelScheduledCallback=Zone.root.run(()=>r(()=>this.tick())):this.cancelScheduledCallback=this.ngZone.runOutsideAngular(()=>r(()=>this.tick()))}shouldScheduleTick(){return!(this.appRef.destroyed||this.pendingRenderTaskId!==null||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(ho+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;if(this.appRef.dirtyFlags===0){this.cleanup();return}!this.zonelessEnabled&&this.appRef.dirtyFlags&7&&(this.appRef.dirtyFlags|=1);let n=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(r){this.applicationErrorHandler(r)}finally{this.taskService.remove(n),this.cleanup()}}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,this.pendingRenderTaskId!==null){let n=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(n)}}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();function dy(){return[{provide:Bt,useExisting:uy},{provide:de,useClass:po},{provide:Ao,useValue:!0}]}var Cd=(()=>{class e{compileModuleSync(n){return new ca(n)}compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}clearCache(){}clearCacheFor(n){}getModuleId(n){}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();function dC(){return typeof $localize<`u`&&$localize.locale||ni}var Td=new v(``,{factory:()=>p(Td,{optional:!0,skipSelf:!0})||dC()});var ri=class{destroyed=!1;listeners=null;errorHandler=p(Ge,{optional:!0});isEmitting=!1;hasNullListeners=!1;destroyRef=p(ve);constructor(){this.destroyRef.onDestroy(()=>{this.destroyed=!0,this.listeners=null})}subscribe(t){if(this.destroyed)throw new y(953,!1);return(this.listeners??=[]).push(t),{unsubscribe:()=>{let n=this.listeners?this.listeners.indexOf(t):-1;n>-1&&(this.isEmitting?(this.hasNullListeners=!0,this.listeners[n]=null):this.listeners.splice(n,1))}}}emit(t){if(this.destroyed){console.warn(Qe(953,!1));return}if(this.listeners===null)return;this.isEmitting=!0;let n=I(null);try{for(let r of this.listeners)try{r!==null&&r(t)}catch(o){this.errorHandler?.handleError(o)}}finally{this.hasNullListeners&&(this.hasNullListeners=!1,this.listeners&&fC(this.listeners)),I(n),this.isEmitting=!1}}};function fC(e){let t=e.length-1;for(;t>-1;)e[t]===null&&e.splice(t,1),t--}function tn(e,t){return so(e,t?.equal)}function F(e){return sh(e)}(class e extends Error{_brand;constructor(t){super(t)}static IDLE=new e(`IDLE`);static LOADING=new e(`LOADING`)});var hC=e=>e;function Md(e,t){if(typeof e==`function`)return hy(Vc(e,hC,t?.equal),t?.debugName,t?.set);else return hy(Vc(e.source,e.computation,e.equal),e.debugName,e.set)}function hy(e,t,n){let r=e[Y],o=e;if(n!==void 0){let i=s=>$c(r,s);o.set=s=>n(s,i),o.update=s=>n(s(F(e)),i)}else o.set=i=>$c(r,i),o.update=i=>ih(r,i);return o.asReadonly=_o.bind(e),o}function by(e,t){let n=Object.create(Lu);n.value=e,n.transformFn=t?.transform;function r(){if(mt(n),n.value===Mr)throw new y(-950,null);return n.value}return r[Y]=n,r}var xa=class{attributeName;constructor(t){this.attributeName=t}__NG_ELEMENT_ID__=()=>ha(this.attributeName);toString(){return`HostAttributeToken ${this.attributeName}`}};function Nd(e){return SC(e)?e.default:e}function SC(e){return e&&typeof e==`object`&&`default`in e}function kU(e){return new ri}function py(e,t){return by(e,t)}function CC(e){return by(Mr,e)}var rn=(py.required=CC,py);function Sy(e,t){let n=Object.create(Lu),r=new ri;n.value=e;function o(){return mt(n),gy(n.value),n.value}return o[Y]=n,o.asReadonly=_o.bind(o),o.set=i=>{n.equal(n.value,i)||(yt(n,i),r.emit(i))},o.update=i=>{gy(n.value),o.set(i(n.value))},o.subscribe=r.subscribe.bind(r),o.destroyRef=r.destroyRef,o}function gy(e){if(e===Mr)throw new y(952,!1)}function my(e,t){return Sy(e,t)}function TC(e){return Sy(Mr,e)}var PU=(my.required=TC,my);function yy(e,t){return Fm(t)}function MC(e,t){return jm(t)}var LU=(yy.required=MC,yy);var ii=(()=>{class e{static __NG_ELEMENT_ID__=NC}return e})();function NC(e){return RC(ie(),w(),(e&16)===16)}function RC(e,t,n){if(rt(e)&&!n){let r=He(e.index,t);return new Xt(r,r)}else if(e.type&175){let r=t[Ee];return new Xt(r,t)}return null}var _d=new v(``);var xC=new v(``);function oi(e){return!e.moduleRef}function AC(e){let t=oi(e)?e.r3Injector:e.moduleRef.injector,n=t.get(de);return n.run(()=>{oi(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();let r=t.get(Ve),o;if(n.runOutsideAngular(()=>{o=n.onError.subscribe({next:r})}),oi(e)){let i=()=>t.destroy(),s=e.platformInjector.get(_d);s.add(i),t.onDestroy(()=>{o.unsubscribe(),s.delete(i)})}else{let i=()=>e.moduleRef.destroy(),s=e.platformInjector.get(_d);s.add(i),e.moduleRef.onDestroy(()=>{Lo(e.allPlatformModules,e.moduleRef),o.unsubscribe(),s.delete(i)})}return kC(r,n,()=>{let i=t.get(bt),s=i.add(),a=t.get(gd);return a.runInitializers(),a.donePromise.then(()=>{if(Qm(t.get(Td,ni)||ni),!t.get(xC,!0))return oi(e)?t.get(en):(e.allPlatformModules.push(e.moduleRef),e.moduleRef);if(oi(e)){let u=t.get(en);return e.rootComponent!==void 0&&u.bootstrap(e.rootComponent),u}else return OC?.(e.moduleRef,e.allPlatformModules),e.moduleRef}).finally(()=>{i.remove(s)})})})}var OC;function kC(e,t,n){try{let r=n();return Xo(r)?r.catch(o=>{throw t.runOutsideAngular(()=>e(o)),o}):r}catch(r){throw t.runOutsideAngular(()=>e(r)),r}}var Ra=null;function PC(e=[],t){return _e.create({name:t,providers:[{provide:wo,useValue:`platform`},{provide:_d,useValue:new Set([()=>Ra=null])},...e]})}function LC(e=[]){if(Ra)return Ra;let t=PC(e);return Ra=t,zm(),FC(t),t}function FC(e){let t=e.get(Ps,null);oe(e,()=>{t?.forEach(n=>n())})}function Cy(e){let{rootComponent:t,appProviders:n,platformProviders:r,platformRef:o}=e;z(L.BootstrapApplicationStart);try{let i=o?.injector??LC(r);return AC({r3Injector:new Vo({providers:[dy(),ap,...n||[]],parent:i,debugName:``,runEnvironmentInitializers:!1}).injector,platformInjector:i,rootComponent:t})}catch(i){return Promise.reject(i)}finally{z(L.BootstrapApplicationEnd)}}function si(e){return typeof e==`boolean`?e:e!=null&&e!==`false`}function Rd(e){let t=zt(e);if(!t)return null;let n=new Sr(t);return{get selector(){return n.selector},get type(){return n.componentType},get inputs(){return n.inputs},get outputs(){return n.outputs},get ngContentSelectors(){return n.ngContentSelectors},get isStandalone(){return t.standalone},get isSignal(){return t.signals}}}var Ty=null;function Rt(){return Ty}function xd(e){Ty??=e}var ai=class{};var Vn=(()=>{class e{historyGo(n){throw new Error(``)}static ɵfac=function(r){return new(r||e)};static ɵprov=T({token:e,factory:()=>p(My),providedIn:`platform`})}return e})();var My=(()=>{class e extends Vn{_location;_history;_doc=p(G);constructor(){super(),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return Rt().getBaseHref(this._doc)}onPopState(n){let r=Rt().getGlobalEventTarget(this._doc,`window`);return r.addEventListener(`popstate`,n,!1),()=>r.removeEventListener(`popstate`,n)}onHashChange(n){let r=Rt().getGlobalEventTarget(this._doc,`window`);return r.addEventListener(`hashchange`,n,!1),()=>r.removeEventListener(`hashchange`,n)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(n){this._location.pathname=n}pushState(n,r,o){this._history.pushState(n,r,o)}replaceState(n,r,o){this._history.replaceState(n,r,o)}forward(){this._history.forward()}back(){this._history.back()}historyGo(n=0){this._history.go(n)}getState(){return this._history.state}static ɵfac=function(r){return new(r||e)};static ɵprov=T({token:e,factory:()=>new e,providedIn:`platform`})}return e})();function Ry(e,t){return e?t?e.endsWith(`/`)?t.startsWith(`/`)?e+t.slice(1):e+t:t.startsWith(`/`)?e+t:`${e}/${t}`:e:t}function _y(e){let t=e.search(/#|\?|$/);return e[t-1]===`/`?e.slice(0,t-1)+e.slice(t):e}function on(e){return e&&e[0]!==`?`?`?${e}`:e}var $n=(()=>{class e{historyGo(n){throw new Error(``)}static ɵfac=function(r){return new(r||e)};static ɵprov=T({token:e,factory:()=>p(xy),providedIn:`root`})}return e})();var jC=new v(``);var xy=(()=>{class e extends $n{_platformLocation;_baseHref;_removeListenerFns=[];constructor(n,r){super(),this._platformLocation=n,this._baseHref=r??this._platformLocation.getBaseHrefFromDOM()??p(G).location?.origin??``}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(n){this._removeListenerFns.push(this._platformLocation.onPopState(n),this._platformLocation.onHashChange(n))}getBaseHref(){return this._baseHref}prepareExternalUrl(n){return Ry(this._baseHref,n)}path(n=!1){let r=this._platformLocation.pathname+on(this._platformLocation.search),o=this._platformLocation.hash;return o&&n?`${r}${o}`:r}pushState(n,r,o,i){let s=this.prepareExternalUrl(o+on(i));this._platformLocation.pushState(n,r,s)}replaceState(n,r,o,i){let s=this.prepareExternalUrl(o+on(i));this._platformLocation.replaceState(n,r,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(n=0){this._platformLocation.historyGo?.(n)}static ɵfac=function(r){return new(r||e)(S(Vn),S(jC,8))};static ɵprov=T({token:e,factory:e.ɵfac,providedIn:`root`})}return e})();var Bn=(()=>{class e{_subject=new ee;_basePath;_locationStrategy;_urlChangeListeners=[];_urlChangeSubscription=null;constructor(n){this._locationStrategy=n;let r=this._locationStrategy.getBaseHref();this._basePath=VC(_y(Ny(r))),this._locationStrategy.onPopState(o=>{let i={url:this.path(!0),pop:!0,state:o.state,type:o.type};o.hasUAVisualTransition&&(i.hasUAVisualTransition=!0),this._subject.next(i)})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(n=!1){return this.normalize(this._locationStrategy.path(n))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(n,r=``){return this.path()==this.normalize(n+on(r))}normalize(n){return e.stripTrailingSlash(HC(this._basePath,Ny(n)))}prepareExternalUrl(n){return n&&n[0]!==`/`&&(n=`/`+n),this._locationStrategy.prepareExternalUrl(n)}go(n,r=``,o=null){this._locationStrategy.pushState(o,``,n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+on(r)),o)}replaceState(n,r=``,o=null){this._locationStrategy.replaceState(o,``,n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+on(r)),o)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(n=0){this._locationStrategy.historyGo?.(n)}onUrlChange(n){return this._urlChangeListeners.push(n),this._urlChangeSubscription??=this.subscribe(r=>{this._notifyUrlChangeListeners(r.url,r.state)}),()=>{let r=this._urlChangeListeners.indexOf(n);this._urlChangeListeners.splice(r,1),this._urlChangeListeners.length===0&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(n=``,r){this._urlChangeListeners.forEach(o=>o(n,r))}subscribe(n,r,o){return this._subject.subscribe({next:n,error:r??void 0,complete:o??void 0})}static normalizeQueryParams=on;static joinWithSlash=Ry;static stripTrailingSlash=_y;static ɵfac=function(r){return new(r||e)(S($n))};static ɵprov=T({token:e,factory:()=>UC(),providedIn:`root`})}return e})();function UC(){return new Bn(S($n))}function HC(e,t){if(!e||!t.startsWith(e))return t;let n=t.substring(e.length);return n===``||[`/`,`;`,`?`,`#`].includes(n[0])?n:t}function Ny(e){return e.replace(/\/index\.html$/,``)}function VC(e){if(new RegExp(`^(https?:)?//`).test(e)){let[,n]=e.split(/\/\/[^\/]+/);return n}return e}function ci(e,t){t=encodeURIComponent(t);for(let n of e.split(`;`)){let r=n.indexOf(`=`),[o,i]=r==-1?[n,``]:[n.slice(0,r),n.slice(r+1)];if(o.trim()!==t)continue;let s=i;try{s=decodeURIComponent(i)}catch{}return s.length>1&&s[0]===`"`&&s[s.length-1]===`"`&&(s=s.slice(1,-1)),s}return null}var Ay=`browser`;var Oy=(()=>{class e{static ɵprov=T({token:e,providedIn:`root`,factory:()=>new Ad(p(G),window)})}return e})();var Ad=class{document;window;offset=()=>[0,0];constructor(t,n){this.document=t,this.window=n}setOffset(t){Array.isArray(t)?this.offset=()=>t:this.offset=t}getScrollPosition(){return[this.window.scrollX,this.window.scrollY]}scrollToPosition(t,n){this.window.scrollTo(m(l({},n),{left:t[0],top:t[1]}))}scrollToAnchor(t,n){let r=zC(this.document,t);r&&(this.scrollToElement(r,n),r.focus({preventScroll:!0}))}setHistoryScrollRestoration(t){try{this.window.history.scrollRestoration=t}catch{console.warn(Qe(2400,!1))}}scrollToElement(t,n){let r=t.getBoundingClientRect(),o=r.left+this.window.pageXOffset,i=r.top+this.window.pageYOffset,s=this.offset();this.window.scrollTo(m(l({},n),{left:o-s[0],top:i-s[1]}))}};function zC(e,t){let n=e.getElementById(t)||e.getElementsByName(t)[0];if(n)return n;if(typeof e.createTreeWalker==`function`&&e.body&&typeof e.body.attachShadow==`function`){let r=e.createTreeWalker(e.body,NodeFilter.SHOW_ELEMENT),o=r.currentNode;for(;o;){let i=o.shadowRoot;if(i){let s=i.getElementById(t)||i.querySelector(`[name="${CSS.escape(t)}"]`);if(s)return s}o=r.nextNode()}}return null}var li=class{_doc;constructor(t){this._doc=t}manager};var Aa=(()=>{class e extends li{constructor(n){super(n)}supports(n){return!0}addEventListener(n,r,o,i){return n.addEventListener(r,o,i),()=>this.removeEventListener(n,r,o,i)}removeEventListener(n,r,o,i){return n.removeEventListener(r,o,i)}static ɵfac=function(r){return new(r||e)(S(G))};static ɵprov=T({token:e,factory:e.ɵfac})}return e})();var Pa=new v(``);var Ld=(()=>{class e{_zone;_plugins;_eventNameToPlugin=new Map;constructor(n,r){this._zone=r,n.forEach(s=>{s.manager=this});let o=n.filter(s=>!(s instanceof Aa));this._plugins=o.slice().reverse();let i=n.find(s=>s instanceof Aa);i&&this._plugins.push(i)}addEventListener(n,r,o,i){return this._findPluginFor(r).addEventListener(n,r,o,i)}getZone(){return this._zone}_findPluginFor(n){let r=this._eventNameToPlugin.get(n);if(r)return r;if(r=this._plugins.find(i=>i.supports(n)),!r)throw new y(-5101,!1);return this._eventNameToPlugin.set(n,r),r}static ɵfac=function(r){return new(r||e)(S(Pa),S(de))};static ɵprov=T({token:e,factory:e.ɵfac})}return e})();var Od=`ng-app-id`;function ky(e){for(let t of e)t.remove()}function Py(e,t){let n=t.createElement(`style`);return n.textContent=e,n}function qC(e,t,n,r){let o=e.head?.querySelectorAll(`style[${Od}="${t}"],link[${Od}="${t}"]`);if(!o||o.length===0)return!1;for(let i of o)i.removeAttribute(Od),i instanceof HTMLLinkElement?r.set(i.href.slice(i.href.lastIndexOf(`/`)+1),{usage:0,elements:[i]}):i.textContent&&n.set(i.textContent,{usage:0,elements:[i]});return!0}function Pd(e,t){let n=t.createElement(`link`);return n.setAttribute(`rel`,`stylesheet`),n.setAttribute(`href`,e),n}var Fd=(()=>{class e{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;constructor(n,r,o,i={}){this.doc=n,this.appId=r,this.nonce=o,qC(n,r,this.inline,this.external)&&this.hosts.add(n.head)}addStyles(n,r){for(let o of n)this.addUsage(o,this.inline,Py);r?.forEach(o=>this.addUsage(o,this.external,Pd))}removeStyles(n,r){for(let o of n)this.removeUsage(o,this.inline);r?.forEach(o=>this.removeUsage(o,this.external))}addUsage(n,r,o){let i=r.get(n);i?i.usage++:r.set(n,{usage:1,elements:[...this.hosts].map(s=>this.addElement(s,o(n,this.doc)))})}removeUsage(n,r){let o=r.get(n);o&&(o.usage--,o.usage<=0&&(ky(o.elements),r.delete(n)))}ngOnDestroy(){for(let[,{elements:n}]of[...this.inline,...this.external])ky(n);this.hosts.clear()}addHost(n){if(!this.hosts.has(n)){this.hosts.add(n);for(let[r,{elements:o}]of this.inline)o.push(this.addElement(n,Py(r,this.doc)));for(let[r,{elements:o}]of this.external)o.push(this.addElement(n,Pd(r,this.doc)))}}removeHost(n){this.hosts.delete(n);for(let r of[...this.inline.values(),...this.external.values()]){let o=[];for(let i of r.elements)i.parentNode===n?i.remove():o.push(i);r.elements=o}}addElement(n,r){return this.nonce&&r.setAttribute(`nonce`,this.nonce),n.appendChild(r)}static ɵfac=function(r){return new(r||e)(S(G),S(No),S(xo,8),S(Ro))};static ɵprov=T({token:e,factory:e.ɵfac})}return e})();var kd={svg:`http://www.w3.org/2000/svg`,xhtml:`http://www.w3.org/1999/xhtml`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`,math:`http://www.w3.org/1998/Math/MathML`};var jd=/%COMP%/g;var Fy=`%COMP%`;var GC=`_nghost-${Fy}`;var QC=`_ngcontent-${Fy}`;var ZC=!0;var YC=new v(``,{factory:()=>ZC});var KC=new v(``);function XC(e){return QC.replace(jd,e)}function JC(e){return GC.replace(jd,e)}function jy(e,t){return t.map(n=>n.replace(jd,e))}var Ud=(()=>{class e{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;cssVarNamespace;constructor(n,r,o,i,s,a,c=null,l=null,u=null){this.eventManager=n,this.sharedStylesHost=r,this.appId=o,this.removeStylesOnCompDestroy=i,this.doc=s,this.ngZone=a,this.nonce=c,this.tracingService=l,this.cssVarNamespace=u??``,this.defaultRenderer=new ui(n,s,a,this.tracingService,this.cssVarNamespace)}createRenderer(n,r){if(!n||!r)return this.defaultRenderer;let o=this.getOrCreateRenderer(n,r);return o instanceof ka?o.applyToHost(n):o instanceof di&&o.applyStyles(),o}getOrCreateRenderer(n,r){let o=this.rendererByCompId,i=o.get(r.id);if(!i){let s=this.doc,a=this.ngZone,c=this.eventManager,l=this.sharedStylesHost,u=this.removeStylesOnCompDestroy,d=this.tracingService;switch(r.encapsulation){case Xe.Emulated:i=new ka(c,l,r,this.appId,u,s,a,d,this.cssVarNamespace);break;case Xe.ShadowDom:return new Oa(c,n,r,s,a,this.nonce,d,this.cssVarNamespace,l);case Xe.ExperimentalIsolatedShadowDom:return new Oa(c,n,r,s,a,this.nonce,d,this.cssVarNamespace);default:i=new di(c,l,r,u,s,a,d,this.cssVarNamespace)}o.set(r.id,i)}return i}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(n){this.rendererByCompId.delete(n)}static ɵfac=function(r){return new(r||e)(S(Ld),S(Hn),S(No),S(YC),S(G),S(de),S(xo),S(Jt,8),S(KC,8))};static ɵprov=T({token:e,factory:e.ɵfac})}return e})();var ui=class{eventManager;doc;ngZone;tracingService;cssVarNamespace;data=Object.create(null);throwOnSyntheticProps=!0;constructor(t,n,r,o,i=``){this.eventManager=t,this.doc=n,this.ngZone=r,this.tracingService=o,this.cssVarNamespace=i}destroy(){}destroyNode=null;createElement(t,n){return n?this.doc.createElementNS(kd[n]||n,t):this.doc.createElement(t)}createComment(t){return this.doc.createComment(t)}createText(t){return this.doc.createTextNode(t)}appendChild(t,n){(Ly(t)?t.content:t).appendChild(n)}insertBefore(t,n,r){if(t){let o=Ly(t)?t.content:t;if(r!=null&&r.parentNode!==o)throw new y(-5106,!1);o.insertBefore(n,r)}}removeChild(t,n){n.remove()}selectRootElement(t,n){let r=typeof t==`string`?this.doc.querySelector(t):t;if(!r)throw new y(-5104,!1);return n||(r.textContent=``),r}parentNode(t){return t.parentNode}nextSibling(t){return t.nextSibling}setAttribute(t,n,r,o){if(o){n=o+`:`+n;let i=kd[o];i?t.setAttributeNS(i,n,r):t.setAttribute(n,r)}else t.setAttribute(n,r)}removeAttribute(t,n,r){if(r){let o=kd[r];o?t.removeAttributeNS(o,n):t.removeAttribute(`${r}:${n}`)}else t.removeAttribute(n)}addClass(t,n){t.classList.add(n)}removeClass(t,n){t.classList.remove(n)}setStyle(t,n,r,o){let i=n.startsWith(`--`);i&&(n=n.replace(`%NS%`,this.cssVarNamespace)),i||o&(Tt.DashCase|Tt.Important)?t.style.setProperty(n,r,o&Tt.Important?`important`:``):t.style[n]=r}removeStyle(t,n,r){let o=n.startsWith(`--`);o&&(n=n.replace(`%NS%`,this.cssVarNamespace)),o||r&Tt.DashCase?t.style.removeProperty(n):t.style[n]=``}setProperty(t,n,r){t!=null&&(t[n]=r)}setValue(t,n){t.nodeValue=n}listen(t,n,r,o){if(typeof t==`string`&&(t=Rt().getGlobalEventTarget(this.doc,t),!t))throw new y(-5102,!1);let i=this.decoratePreventDefault(r);return this.tracingService?.wrapEventListener&&(i=this.tracingService.wrapEventListener(t,n,i)),this.eventManager.addEventListener(t,n,i,o)}decoratePreventDefault(t){return n=>{if(n===`__ngUnwrap__`)return t;t(n)===!1&&n.preventDefault()}}};function Ly(e){return e.tagName===`TEMPLATE`&&e.content!==void 0}var Oa=class extends ui{hostEl;sharedStylesHost;shadowRoot;constructor(t,n,r,o,i,s,a,c,l){super(t,o,i,a,c),this.hostEl=n,this.sharedStylesHost=l,this.shadowRoot=n.attachShadow({mode:`open`}),this.sharedStylesHost&&this.sharedStylesHost.addHost(this.shadowRoot);let u=r.styles;u=jy(r.id,u).map(h=>h.replace(/%NS%/g,c));for(let h of u){let f=document.createElement(`style`);s&&f.setAttribute(`nonce`,s),f.textContent=h,this.shadowRoot.appendChild(f)}let d=r.getExternalStyles?.();if(d)for(let h of d){let f=Pd(h,o);s&&f.setAttribute(`nonce`,s),this.shadowRoot.appendChild(f)}}nodeOrShadowRoot(t){return t===this.hostEl?this.shadowRoot:t}appendChild(t,n){return super.appendChild(this.nodeOrShadowRoot(t),n)}insertBefore(t,n,r){return super.insertBefore(this.nodeOrShadowRoot(t),n,r)}removeChild(t,n){return super.removeChild(null,n)}parentNode(t){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(t)))}destroy(){this.sharedStylesHost&&this.sharedStylesHost.removeHost(this.shadowRoot)}};var di=class extends ui{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(t,n,r,o,i,s,a,c,l){super(t,i,s,a,c),this.sharedStylesHost=n,this.removeStylesOnCompDestroy=o;let u=r.styles,d=l?jy(l,u):u;this.styles=d.map(h=>h.replace(/%NS%/g,c)),this.styleUrls=r.getExternalStyles?.(l)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&Xu.size===0&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}};var ka=class extends di{contentAttr;hostAttr;constructor(t,n,r,o,i,s,a,c,l){let u=o+`-`+r.id;super(t,n,r,i,s,a,c,l,u),this.contentAttr=XC(u),this.hostAttr=JC(u)}applyToHost(t){this.applyStyles(),this.setAttribute(t,this.hostAttr,``)}createElement(t,n){let r=super.createElement(t,n);return super.setAttribute(r,this.contentAttr,``),r}};var La=class e extends ai{supportsDOMEvents=!0;static makeCurrent(){xd(new e)}onAndCancel(t,n,r,o){return t.addEventListener(n,r,o),()=>{t.removeEventListener(n,r,o)}}dispatchEvent(t,n){t.dispatchEvent(n)}remove(t){t.remove()}createElement(t,n){return n=n||this.getDefaultDocument(),n.createElement(t)}createHtmlDocument(){return document.implementation.createHTMLDocument(`fakeTitle`)}getDefaultDocument(){return document}isElementNode(t){return t.nodeType===Node.ELEMENT_NODE}isShadowRoot(t){return t instanceof DocumentFragment}getGlobalEventTarget(t,n){return n===`window`?window:n===`document`?t:n===`body`?t.body:null}getBaseHref(t){let n=eT();return n==null?null:tT(n)}resetBaseElement(){fi=null}getUserAgent(){return window.navigator.userAgent}getCookie(t){return ci(document.cookie,t)}};var fi=null;function eT(){return fi=fi||document.head.querySelector(`base`),fi?fi.getAttribute(`href`):null}function tT(e){return new URL(e,document.baseURI).pathname}var Uy=[`alt`,`control`,`meta`,`shift`];var nT={"\b":`Backspace`," ":`Tab`,"":`Delete`,"\x1B":`Escape`,Del:`Delete`,Esc:`Escape`,Left:`ArrowLeft`,Right:`ArrowRight`,Up:`ArrowUp`,Down:`ArrowDown`,Menu:`ContextMenu`,Scroll:`ScrollLock`,Win:`OS`};var rT={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey};var Hy=(()=>{class e extends li{constructor(n){super(n)}supports(n){return e.parseEventName(n)!=null}addEventListener(n,r,o,i){let s=e.parseEventName(r),a=e.eventCallback(s.fullKey,o,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Rt().onAndCancel(n,s.domEventName,a,i))}static parseEventName(n){let r=n.toLowerCase().split(`.`),o=r.shift();if(r.length===0||!(o===`keydown`||o===`keyup`))return null;let i=e._normalizeKey(r.pop()),s=``,a=r.indexOf(`code`);if(a>-1&&(r.splice(a,1),s=`code.`),Uy.forEach(l=>{let u=r.indexOf(l);u>-1&&(r.splice(u,1),s+=l+`.`)}),s+=i,r.length!=0||i.length===0)return null;let c={};return c.domEventName=o,c.fullKey=s,c}static matchEventFullKeyCode(n,r){let o=nT[n.key]||n.key,i=``;return r.indexOf(`code.`)>-1&&(o=n.code,i=`code.`),o==null||!o?!1:(o=o.toLowerCase(),o===` `?o=`space`:o===`.`&&(o=`dot`),Uy.forEach(s=>{if(s!==o){let a=rT[s];a(n)&&(i+=s+`.`)}}),i+=o,i===r)}static eventCallback(n,r,o){return i=>{e.matchEventFullKeyCode(i,n)&&o.runGuarded(()=>r(i))}}static _normalizeKey(n){return n===`esc`?`escape`:n}static ɵfac=function(r){return new(r||e)(S(G))};static ɵprov=T({token:e,factory:e.ɵfac})}return e})();async function oT(e,t,n){return Cy(l({rootComponent:e},iT(t,n)))}function iT(e,t){return{platformRef:t?.platformRef,appProviders:[...uT,...e?.providers??[]],platformProviders:lT}}function sT(){La.makeCurrent()}function aT(){return new Ge}function cT(){return Uu(document),document}var lT=[{provide:Ro,useValue:Ay},{provide:Ps,useValue:sT,multi:!0},{provide:G,useFactory:cT}];var uT=[{provide:wo,useValue:`root`},{provide:Ge,useFactory:aT},{provide:Pa,useClass:Aa,multi:!0},{provide:Pa,useClass:Hy,multi:!0},Ud,{provide:Hn,useClass:Fd},{provide:Fd,useExisting:Hn},Ld,{provide:Fn,useExisting:Ud},[]];var At=class e{headers;normalizedNames=new Map;lazyInit;lazyUpdate=null;constructor(t){t?typeof t==`string`?this.lazyInit=()=>{this.headers=new Map,t.split(` +`).forEach(n=>{let r=n.indexOf(`:`);if(r>0){let o=n.slice(0,r),i=n.slice(r+1).trim();this.addHeaderEntry(o,i)}})}:typeof Headers<`u`&&t instanceof Headers?(this.headers=new Map,t.forEach((n,r)=>{this.addHeaderEntry(r,n)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(t).forEach(([n,r])=>{this.setHeaderEntries(n,r)})}:this.headers=new Map}has(t){return this.init(),this.headers.has(t.toLowerCase())}get(t){this.init();let n=this.headers.get(t.toLowerCase());return n&&n.length>0?n[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(t){return this.init(),this.headers.get(t.toLowerCase())||null}append(t,n){return this.clone({name:t,value:n,op:`a`})}set(t,n){return this.clone({name:t,value:n,op:`s`})}delete(t,n){return this.clone({name:t,value:n,op:`d`})}maybeSetNormalizedName(t,n){this.normalizedNames.has(n)||this.normalizedNames.set(n,t)}init(){this.lazyInit&&(this.lazyInit instanceof e?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(t=>this.applyUpdate(t)),this.lazyUpdate=null))}copyFrom(t){t.init();for(let[n,r]of t.headers.entries())this.headers.set(n,r),this.normalizedNames.set(n,t.normalizedNames.get(n))}clone(t){let n=new e;return n.lazyInit=this.lazyInit&&this.lazyInit instanceof e?this.lazyInit:this,n.lazyUpdate=(this.lazyUpdate||[]).concat([t]),n}applyUpdate(t){let n=t.name.toLowerCase();switch(t.op){case`a`:case`s`:let r=t.value;if(typeof r==`string`&&(r=[r]),r.length===0)return;this.maybeSetNormalizedName(t.name,n);let o=t.op===`a`?(this.headers.get(n)||[]).slice():[];o.push(...r),this.headers.set(n,o);break;case`d`:let i=t.value;if(i===void 0)this.headers.delete(n),this.normalizedNames.delete(n);else{let s=Array.isArray(i)?i:[i],a=this.headers.get(n);if(!a)return;a=a.filter(c=>s.indexOf(c)===-1),a.length===0?(this.headers.delete(n),this.normalizedNames.delete(n)):this.headers.set(n,a)}}}addHeaderEntry(t,n){let r=t.toLowerCase();this.maybeSetNormalizedName(t,r),this.headers.has(r)?this.headers.get(r).push(n):this.headers.set(r,[n])}setHeaderEntries(t,n){let r=(Array.isArray(n)?n:[n]).map(i=>i.toString()),o=t.toLowerCase();this.headers.set(o,r),this.maybeSetNormalizedName(t,o)}forEach(t){this.init(),Array.from(this.normalizedNames.keys()).forEach(n=>t(this.normalizedNames.get(n),this.headers.get(n)))}};var ja=class{map=new Map;set(t,n){return this.map.set(t,n),this}get(t){return this.map.has(t)||this.map.set(t,t.defaultValue()),this.map.get(t)}delete(t){return this.map.delete(t),this}has(t){return this.map.has(t)}keys(){return this.map.keys()}};var Ua=class{encodeKey(t){return Vy(t)}encodeValue(t){return Vy(t)}decodeKey(t){return decodeURIComponent(t)}decodeValue(t){return decodeURIComponent(t)}};function dT(e,t){let n=new Map;return e.length>0&&e.replace(/^\?/,``).split(`&`).forEach(o=>{let i=o.indexOf(`=`),[s,a]=i==-1?[t.decodeKey(o),``]:[t.decodeKey(o.slice(0,i)),t.decodeValue(o.slice(i+1))],c=n.get(s)||[];c.push(a),n.set(s,c)}),n}var fT=/%(\d[a-f0-9])/gi;var hT={40:`@`,"3A":`:`,24:`$`,"2C":`,`,"3B":`;`,"3D":`=`,"3F":`?`,"2F":`/`};function Vy(e){return encodeURIComponent(e).replace(fT,(t,n)=>hT[n]??t)}function Fa(e){return`${e}`}var xt=class e{map;encoder;updates=null;cloneFrom=null;constructor(t={}){if(this.encoder=t.encoder||new Ua,t.fromString){if(t.fromObject)throw new y(2805,!1);this.map=dT(t.fromString,this.encoder)}else t.fromObject?(this.map=new Map,Object.keys(t.fromObject).forEach(n=>{let r=t.fromObject[n],o=Array.isArray(r)?r.map(Fa):[Fa(r)];this.map.set(n,o)})):this.map=null}has(t){return this.init(),this.map.has(t)}get(t){this.init();let n=this.map.get(t);return n?n[0]:null}getAll(t){return this.init(),this.map.get(t)||null}keys(){return this.init(),Array.from(this.map.keys())}append(t,n){return this.clone({param:t,value:n,op:`a`})}appendAll(t){let n=[];return Object.keys(t).forEach(r=>{let o=t[r];Array.isArray(o)?o.forEach(i=>{n.push({param:r,value:i,op:`a`})}):n.push({param:r,value:o,op:`a`})}),this.clone(n)}set(t,n){return this.clone({param:t,value:n,op:`s`})}delete(t,n){return this.clone({param:t,value:n,op:`d`})}toString(){return this.init(),this.keys().map(t=>{let n=this.encoder.encodeKey(t);return this.map.get(t).map(r=>n+`=`+this.encoder.encodeValue(r)).join(`&`)}).filter(t=>t!==``).join(`&`)}clone(t){let n=new e({encoder:this.encoder});return n.cloneFrom=this.cloneFrom||this,n.updates=(this.updates||[]).concat(t),n}init(){if(this.map===null&&(this.map=new Map),this.cloneFrom!==null){this.cloneFrom.init();for(let[t,n]of this.cloneFrom.map.entries())this.map.set(t,n);this.updates.forEach(t=>{switch(t.op){case`a`:case`s`:let n=t.op===`a`?(this.map.get(t.param)||[]).slice():[];n.push(Fa(t.value)),this.map.set(t.param,n);break;case`d`:if(t.value!==void 0){let r=(this.map.get(t.param)||[]).slice(),o=r.indexOf(Fa(t.value));o!==-1&&r.splice(o,1),r.length>0?this.map.set(t.param,r):this.map.delete(t.param)}else{this.map.delete(t.param);break}}}),this.cloneFrom=this.updates=null}}};function pT(e){switch(e){case`DELETE`:case`GET`:case`HEAD`:case`OPTIONS`:case`JSONP`:return!1;default:return!0}}function $y(e){return typeof ArrayBuffer<`u`&&e instanceof ArrayBuffer}function By(e){return typeof Blob<`u`&&e instanceof Blob}function zy(e){return typeof FormData<`u`&&e instanceof FormData}function gT(e){return typeof URLSearchParams<`u`&&e instanceof URLSearchParams}var Hd=`Content-Type`;var Wy=`Accept`;var Qy=`text/plain`;var Zy=`application/json`;var mT=`${Zy}, ${Qy}, */*`;var Or=class e{url;body=null;headers;context;reportProgress=!1;reportUploadProgress=!1;reportDownloadProgress=!1;withCredentials=!1;credentials;keepalive=!1;cache;priority;mode;redirect;referrer;integrity;referrerPolicy;responseType=`json`;method;params;urlWithParams;transferCache;timeout;constructor(t,n,r,o){this.url=n,this.method=t.toUpperCase();let i;if(pT(this.method)||o?(this.body=r!==void 0?r:null,i=o):i=r,i){if(this.reportProgress=!!i.reportProgress,this.reportUploadProgress=!!i.reportUploadProgress,this.reportDownloadProgress=!!i.reportDownloadProgress,this.withCredentials=!!i.withCredentials,this.keepalive=!!i.keepalive,i.responseType&&(this.responseType=i.responseType),i.headers&&(this.headers=i.headers),i.context&&(this.context=i.context),i.params&&(this.params=i.params),i.priority&&(this.priority=i.priority),i.cache&&(this.cache=i.cache),i.credentials&&(this.credentials=i.credentials),typeof i.timeout==`number`){if(i.timeout<1||!Number.isInteger(i.timeout))throw new y(2822,``);this.timeout=i.timeout}i.mode&&(this.mode=i.mode),i.redirect&&(this.redirect=i.redirect),i.integrity&&(this.integrity=i.integrity),i.referrer!==void 0&&(this.referrer=i.referrer),i.referrerPolicy&&(this.referrerPolicy=i.referrerPolicy),this.transferCache=i.transferCache}if(this.headers??=new At,this.context??=new ja,!this.params)this.params=new xt,this.urlWithParams=n;else{let s=this.params.toString();if(s.length===0)this.urlWithParams=n;else{let a=n,c=``,l=n.indexOf(`#`);l!==-1&&(c=n.substring(l),a=n.substring(0,l));let u=a.indexOf(`?`),d=u===-1?`?`:uer.set(Pt,t.setHeaders[Pt]),kt)),t.setParams&&(Yr=Object.keys(t.setParams).reduce((er,Pt)=>er.set(Pt,t.setParams[Pt]),Yr)),new e(n,r,E,{params:Yr,headers:kt,context:Kr,reportProgress:O,reportUploadProgress:ge,reportDownloadProgress:Zr,responseType:o,withCredentials:_,transferCache:g,keepalive:i,cache:a,priority:s,timeout:D,mode:c,redirect:l,credentials:u,referrer:d,integrity:h,referrerPolicy:f})}};var Wn=(function(e){return e[e.Sent=0]=`Sent`,e[e.UploadProgress=1]=`UploadProgress`,e[e.ResponseHeader=2]=`ResponseHeader`,e[e.DownloadProgress=3]=`DownloadProgress`,e[e.Response=4]=`Response`,e[e.User=5]=`User`,e})(Wn||{});var kr=class{headers;status;statusText;url;ok;type;redirected;responseType;constructor(t,n=200,r=`OK`){this.headers=t.headers||new At,this.status=t.status!==void 0?t.status:n,this.statusText=t.statusText||r,this.url=t.url||null,this.redirected=t.redirected,this.responseType=t.responseType,this.ok=this.status>=200&&this.status<300}};var Ha=class e extends kr{constructor(t={}){super(t)}type=Wn.ResponseHeader;clone(t={}){return new e({headers:t.headers||this.headers,status:t.status!==void 0?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}};var hi=class e extends kr{body;constructor(t={}){super(t),this.body=t.body!==void 0?t.body:null}type=Wn.Response;clone(t={}){return new e({body:t.body!==void 0?t.body:this.body,headers:t.headers||this.headers,status:t.status!==void 0?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0,redirected:t.redirected??this.redirected,responseType:t.responseType??this.responseType})}};var zn=class extends kr{name=`HttpErrorResponse`;message;error;ok=!1;constructor(t){super(t,0,`Unknown Error`),this.status>=200&&this.status<300?this.message=`Http failure during parsing for ${t.url||`(unknown url)`}`:this.message=`Http failure response for ${t.url||`(unknown url)`}: ${t.status} ${t.statusText}`,this.error=t.error||null}};var yT=200;var vT=/^\)\]\}',?\n/;var Yy=new v(``,{factory:()=>null});var Pr=(()=>{class e{fetchImpl=p($d,{optional:!0})?.fetch??((...n)=>globalThis.fetch(...n));ngZone=p(de);destroyRef=p(ve);maxResponseSize=p(Yy);handle(n){return new A(r=>{let o=new AbortController,i=!1,s={next:c=>{c.type===Wn.Response&&(i=!0),r.next(c)},error:c=>{i=!0,r.error(c)},complete:()=>{i=!0,r.complete()}};this.doRequest(n,o.signal,s).then(Bd,c=>s.error(new zn({error:c})));let a;return n.timeout&&(a=this.ngZone.runOutsideAngular(()=>setTimeout(()=>{o.signal.aborted||o.abort(new DOMException(`signal timed out`,`TimeoutError`))},n.timeout))),()=>{a!==void 0&&clearTimeout(a),!i&&!o.signal.aborted&&o.abort()}})}async doRequest(n,r,o){let i=this.createRequestInit(n),s;try{let E=this.ngZone.runOutsideAngular(()=>this.fetchImpl(n.urlWithParams,l({signal:r},i)));ET(E),o.next({type:Wn.Sent}),s=await E}catch(E){o.error(new zn({error:E,status:E.status??0,statusText:E.statusText,url:n.urlWithParams,headers:E.headers}));return}let a=new At(s.headers),c=s.statusText,l$1=s.url||n.urlWithParams,u=s.status,d=null,h=n.reportProgress||n.reportDownloadProgress;if(h&&o.next(new Ha({headers:a,status:u,statusText:c,url:l$1})),s.body){let E=s.headers.get(Hd)??``,_=s.headers.get(`content-length`),O=_!==null?Number(_):NaN;this.maxResponseSize!==null&&Number.isFinite(O)&&O>this.maxResponseSize&&(await s.body.cancel(),qy(this.maxResponseSize));let ge=[],Zr=s.body.getReader(),kt=0,Yr,Kr,er=typeof Zone<`u`&&Zone.current,Pt=!1;if(await this.ngZone.runOutsideAngular(async()=>{for(;;){if(this.destroyRef.destroyed){await Zr.cancel(),Pt=!0;break}let{done:wc,value:Dc}=await Zr.read();if(wc)break;if(ge.push(Dc),kt+=Dc.length,this.maxResponseSize!==null&&kt>this.maxResponseSize&&(await Zr.cancel(),qy(this.maxResponseSize)),h){Kr=n.responseType===`text`?(Kr??``)+(Yr??=Gy(E)).decode(Dc,{stream:!0}):void 0;let Cf=()=>o.next({type:Wn.DownloadProgress,total:Number.isFinite(O)?O:void 0,loaded:kt,partialText:Kr});er?er.run(Cf):Cf()}}}),Pt){o.complete();return}let lE=this.concatChunks(ge,kt);try{d=this.parseBody(n,lE,E,u)}catch(wc){o.error(new zn({error:wc,headers:new At(s.headers),status:s.status,statusText:s.statusText,url:s.url||n.urlWithParams}));return}}u===0&&(u=d?yT:0);let f=u>=200&&u<300,g=s.redirected,D=s.type;f?(o.next(new hi({body:d,headers:a,status:u,statusText:c,url:l$1,redirected:g,responseType:D})),o.complete()):o.error(new zn({error:d,headers:a,status:u,statusText:c,url:l$1,redirected:g,responseType:D}))}parseBody(n,r,o,i){switch(n.responseType){case`json`:let s=new TextDecoder().decode(r).replace(vT,``);if(s===``)return null;try{return JSON.parse(s)}catch(a){if(i<200||i>=300)return s;throw a}case`text`:return Gy(o).decode(r);case`blob`:return new Blob([r],{type:o});case`arraybuffer`:return r.buffer}}createRequestInit(n){if(n.reportUploadProgress)throw new y(2824,!1);let r={},o;if(o=n.credentials,n.withCredentials&&(o=`include`),n.headers.forEach((i,s)=>r[i]=s.join(`,`)),n.headers.has(Wy)||(r[Wy]=mT),!n.headers.has(Hd)){let i=n.detectContentTypeHeader();i!==null&&(r[Hd]=i)}return{body:n.serializeBody(),method:n.method,headers:r,credentials:o,keepalive:n.keepalive,cache:n.cache,priority:n.priority,mode:n.mode,redirect:n.redirect,referrer:n.referrer,integrity:n.integrity,referrerPolicy:n.referrerPolicy}}concatChunks(n,r){let o=new Uint8Array(r),i=0;for(let s of n)o.set(s,i),i+=s.length;return o}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();var $d=class{};function Bd(){}function ET(e){e.then(Bd,Bd)}function qy(e){throw new y(-2825,!1)}var IT=/charset=\s*["']?([^;"'\s]+)["']?/i;function Gy(e){let t=e.match(IT);if(t!==null)try{return new TextDecoder(t[1])}catch{}return new TextDecoder}var wT=new v(``,{factory:()=>!0});var DT=`XSRF-TOKEN`;var bT=new v(``,{factory:()=>DT});var ST=`X-XSRF-TOKEN`;var CT=new v(``,{factory:()=>ST});var TT=(()=>{class e{cookieName=p(bT);doc=p(G);lastCookieString=``;lastToken=null;parseCount=0;getToken(){let n=this.doc.cookie||``;return n!==this.lastCookieString&&(this.parseCount++,this.lastToken=ci(n,this.cookieName),this.lastCookieString=n),this.lastToken}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();var Ky=(()=>{class e{static ɵfac=function(r){return new(r||e)};static ɵprov=T({token:e,factory:function(r){let o=null;return r?o=new(r||e):o=S(TT),o},providedIn:`root`})}return e})();function Xy(e,t){if(!p(wT)||e.method===`GET`||e.method===`HEAD`)return t(e);try{let o=p(Vn).href,{origin:i}=new URL(o),{origin:s}=new URL(e.url,i);if(i!==s)return t(e)}catch{return t(e)}let n=p(Ky).getToken(),r=p(CT);return n!=null&&!e.headers.has(r)&&(e=e.clone({headers:e.headers.set(r,n)})),t(e)}function MT(e,t){return t(e)}function _T(e,t,n){return(r,o)=>oe(n,()=>t(r,i=>e(i,o)))}var zd=new v(``,{factory:()=>[Xy]});var Jy=new v(``);var ev=new v(``,{factory:()=>!0});var $a=(()=>{class e{static ɵfac=function(r){return new(r||e)};static ɵprov=T({token:e,factory:function(r){let o=null;return r?o=new(r||e):o=S(Pr),o},providedIn:`root`})}return e})();var Va=(()=>{class e{backend;injector;chain=null;pendingTasks=p(ko);contributeToStability=p(ev);constructor(n,r){this.backend=n,this.injector=r}handle(n){if(this.chain===null){let o=this.injector.get(Ba,null,{skipSelf:!0}),i=o!==null&&this.backend===o,s=this.injector.get(Jy,[],i?{self:!0}:void 0),a=Array.from(new Set([...this.injector.get(zd),...s]));this.chain=a.reduceRight((c,l)=>_T(c,l,this.injector),MT)}let r=this.chain;if(this.contributeToStability){let o=this.pendingTasks.add();return F(()=>r(n,i=>this.backend.handle(i))).pipe(to(o))}else return F(()=>r(n,o=>this.backend.handle(o)))}static ɵfac=function(r){return new(r||e)(S($a),S(K))};static ɵprov=T({token:e,factory:e.ɵfac,providedIn:`root`})}return e})();var Ba=(()=>{class e{static ɵfac=function(r){return new(r||e)};static ɵprov=T({token:e,factory:function(r){let o=null;return r?o=new(r||e):o=S(Va),o},providedIn:`root`})}return e})();function Vd(e,t){return l({body:t},e)}var tv=(()=>{class e{handler;constructor(n){this.handler=n}request(n,r,o={}){let i;if(n instanceof Or)i=n;else{let c;o.headers instanceof At?c=o.headers:c=new At(o.headers);let l;o.params&&(o.params instanceof xt?l=o.params:l=new xt({fromObject:o.params})),i=new Or(n,r,o.body!==void 0?o.body:null,{headers:c,context:o.context,params:l,reportProgress:o.reportProgress,reportUploadProgress:o.reportUploadProgress,reportDownloadProgress:o.reportDownloadProgress,responseType:o.responseType||`json`,withCredentials:o.withCredentials,transferCache:o.transferCache,keepalive:o.keepalive,priority:o.priority,cache:o.cache,mode:o.mode,redirect:o.redirect,credentials:o.credentials,referrer:o.referrer,referrerPolicy:o.referrerPolicy,integrity:o.integrity,timeout:o.timeout})}let s=R(i).pipe(pn(c=>this.handler.handle(c)));if(n instanceof Or||o.observe===`events`)return s;let a=s.pipe(Pe(c=>c instanceof hi));switch(o.observe||`body`){case`body`:switch(i.responseType){case`arraybuffer`:return a.pipe($(c=>{if(c.body!==null&&!(c.body instanceof ArrayBuffer))throw new y(2806,!1);return c.body}));case`blob`:return a.pipe($(c=>{if(c.body!==null&&!(c.body instanceof Blob))throw new y(2807,!1);return c.body}));case`text`:return a.pipe($(c=>{if(c.body!==null&&typeof c.body!=`string`)throw new y(2808,!1);return c.body}));default:return a.pipe($(c=>c.body))}case`response`:return a;default:throw new y(2809,!1)}}delete(n,r={}){return this.request(`DELETE`,n,r)}get(n,r={}){return this.request(`GET`,n,r)}head(n,r={}){return this.request(`HEAD`,n,r)}jsonp(n,r){return this.request(`JSONP`,n,{params:new xt().append(r,`JSONP_CALLBACK`),observe:`body`,responseType:`json`})}options(n,r={}){return this.request(`OPTIONS`,n,r)}patch(n,r,o={}){return this.request(`PATCH`,n,Vd(o,r))}post(n,r,o={}){return this.request(`POST`,n,Vd(o,r))}put(n,r,o={}){return this.request(`PUT`,n,Vd(o,r))}static ɵfac=function(r){return new(r||e)(S(Ba))};static ɵprov=T({token:e,factory:e.ɵfac,providedIn:`root`})}return e})();var za=(function(e){return e[e.Interceptors=0]=`Interceptors`,e[e.LegacyInterceptors=1]=`LegacyInterceptors`,e[e.CustomXsrfConfiguration=2]=`CustomXsrfConfiguration`,e[e.NoXsrfProtection=3]=`NoXsrfProtection`,e[e.JsonpSupport=4]=`JsonpSupport`,e[e.RequestsMadeViaParent=5]=`RequestsMadeViaParent`,e[e.Fetch=6]=`Fetch`,e[e.Xhr=7]=`Xhr`,e})(za||{});function nv(e,t){return{ɵkind:e,ɵproviders:t}}function NT(...e){let t=[tv,Pr,Va,{provide:Ba,useExisting:Va},{provide:$a,useFactory:()=>p(Pr)},{provide:zd,useValue:Xy,multi:!0}];for(let n of e)t.push(...n.ɵproviders);return tt(t)}function RT(e){return nv(za.Interceptors,e.map(t=>({provide:zd,useValue:t,multi:!0})))}function xT(){return nv(za.Fetch,[Pr,{provide:$a,useExisting:Pr}])}var rv=(()=>{class e{_doc;constructor(n){this._doc=n}getTitle(){return this._doc.title}setTitle(n){this._doc.title=n||``}static ɵfac=function(r){return new(r||e)(S(G))};static ɵprov=T({token:e,factory:e.ɵfac,providedIn:`root`})}return e})();var Wd=(()=>{class e{static ɵfac=function(r){return new(r||e)};static ɵprov=T({token:e,factory:function(r){let o=null;return r?o=new(r||e):o=S(AT),o},providedIn:`root`})}return e})();var AT=(()=>{class e extends Wd{_doc=p(G);sanitize(n,r){if(r==null)return null;switch(n){case W.NONE:return r;case W.HTML:return lt(r,`HTML`)?Re(r):ma(this._doc,String(r)).toString();case W.STYLE:return lt(r,`Style`)?Re(r):r;case W.SCRIPT:if(lt(r,`Script`))return Re(r);throw new y(5200,!1);case W.URL:return lt(r,`URL`)?Re(r):Wo(String(r));case W.RESOURCE_URL:if(lt(r,`ResourceURL`))return Re(r);throw new y(-5201,!1);default:throw new y(5202,!1)}}bypassSecurityTrustHtml(n){return $u(n)}bypassSecurityTrustStyle(n){return Bu(n)}bypassSecurityTrustScript(n){return zu(n)}bypassSecurityTrustUrl(n){return Wu(n)}bypassSecurityTrustResourceUrl(n){return qu(n)}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();var M=`primary`;var Ti=Symbol(`RouteTitle`);var Kd=class{params;constructor(t){this.params=t||{}}has(t){return Object.hasOwn(this.params,t)}get(t){if(this.has(t)){let n=this.params[t];return Array.isArray(n)?n[0]:n}return null}getAll(t){if(this.has(t)){let n=this.params[t];return Array.isArray(n)?n:[n]}return[]}get keys(){return Object.keys(this.params)}};function Gn(e){return new Kd(e)}function qd(e,t,n){for(let r=0;re.length||n.pathMatch===`full`&&(t.hasChildren()||r.lengthe.length||n.pathMatch===`full`&&t.hasChildren()&&n.path!==`**`)return null;let a={};return!qd(i,e.slice(0,i.length),a)||!qd(s,e.slice(e.length-s.length),a)?null:{consumed:e,posParams:a}}function Ya(e){return new Promise((t,n)=>{e.pipe(gt()).subscribe({next:r=>t(r),error:r=>n(r)})})}function kT(e,t){if(e.length!==t.length)return!1;for(let n=0;nr[i]===o)}else return e===t}function PT(e){return e.length>0?e[e.length-1]:null}function Kn(e){return Zi(e)?e:Xo(e)?te(Promise.resolve(e)):R(e)}function hv(e){return Zi(e)?Ya(e):Promise.resolve(e)}var LT={exact:gv,subset:mv};var pv={exact:FT,subset:jT,ignored:()=>!0};var hf={paths:`exact`,fragment:`ignored`,matrixParams:`ignored`,queryParams:`exact`};var Hr={paths:`subset`,fragment:`ignored`,matrixParams:`ignored`,queryParams:`subset`};function pf(e,t,n){let r=e instanceof Se?e:t.parseUrl(e);return tn(()=>Ka(t.lastSuccessfulNavigation()?.finalUrl??new Se,r,n))}function Ka(e,t,n){let r=l(l({},Hr),n||{});return LT[r.paths](e.root,t.root,r.matrixParams)&&pv[r.queryParams](e.queryParams,t.queryParams)&&!(r.fragment===`exact`&&e.fragment!==t.fragment)}function FT(e,t){return dt(e,t)}function gv(e,t,n){if(!qn(e.segments,t.segments)||!Ga(e.segments,t.segments,n)||e.numberOfChildren!==t.numberOfChildren)return!1;for(let r in t.children)if(!e.children[r]||!gv(e.children[r],t.children[r],n))return!1;return!0}function jT(e,t){return Object.keys(t).length<=Object.keys(e).length&&Object.keys(t).every(n=>fv(e[n],t[n]))}function mv(e,t,n){return yv(e,t,t.segments,n)}function yv(e,t,n,r){if(e.segments.length>n.length){let o=e.segments.slice(0,n.length);return!(!qn(o,n)||t.hasChildren()||!Ga(o,n,r))}else if(e.segments.length===n.length){if(!qn(e.segments,n)||!Ga(e.segments,n,r))return!1;for(let o in t.children)if(!e.children[o]||!mv(e.children[o],t.children[o],r))return!1;return!0}else{let o=n.slice(0,e.segments.length),i=n.slice(e.segments.length);return!qn(e.segments,o)||!Ga(e.segments,o,r)||!e.children[M]?!1:yv(e.children[M],t,i,r)}}function Ga(e,t,n){return t.every((r,o)=>pv[n](e[o].parameters,r.parameters))}var Se=class{root;queryParams;fragment;_queryParamMap;constructor(t=new j([],{}),n={},r=null){this.root=t,this.queryParams=n,this.fragment=r}get queryParamMap(){return this._queryParamMap??=Gn(this.queryParams),this._queryParamMap}toString(){return $T.serialize(this)}};var j=class{segments;children;parent=null;constructor(t,n){this.segments=t,this.children=n,Object.values(n).forEach(r=>r.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return Qa(this)}};var sn=class{path;parameters;_parameterMap;constructor(t,n){this.path=t,this.parameters=n}get parameterMap(){return this._parameterMap??=Gn(this.parameters),this._parameterMap}toString(){return Ev(this)}};function UT(e,t){return qn(e,t)&&e.every((n,r)=>dt(n.parameters,t[r].parameters))}function qn(e,t){return e.length!==t.length?!1:e.every((n,r)=>n.path===t[r].path)}function HT(e,t){let n=[];return Object.entries(e.children).forEach(([r,o])=>{r===M&&(n=n.concat(t(o,r)))}),Object.entries(e.children).forEach(([r,o])=>{r!==M&&(n=n.concat(t(o,r)))}),n}var Xn=(()=>{class e{static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:()=>new an})}return e})();var an=class{parse(t){let n=new ef(t);return new Se(n.parseRootSegment(),n.parseQueryParams(),n.parseFragment())}serialize(t){let n=`/${pi(t.root,!0)}`;VT(n)&&(n=`/`);let r=WT(t.queryParams),o=typeof t.fragment==`string`?`#${BT(t.fragment)}`:``;return`${n}${r}${o}`}};var ov=`http://fake`;function VT(e){try{let t=new URL(e,ov);return t.origin!==ov||t.pathname.startsWith(`//`)}catch{return!0}}var $T=new an;function Qa(e){return e.segments.map(t=>Ev(t)).join(`/`)}function pi(e,t){if(!e.hasChildren())return Qa(e);if(t){let n=e.children[M]?pi(e.children[M],!1):``,r=[];return Object.entries(e.children).forEach(([o,i])=>{o!==M&&r.push(`${o}:${pi(i,!1)}`)}),r.length>0?`${n}(${r.join(`//`)})`:n}else{let n=HT(e,(r,o)=>o===M?[pi(e.children[M],!1)]:[`${o}:${pi(r,!1)}`]);return Object.keys(e.children).length===1&&e.children[M]!=null?`${Qa(e)}/${n[0]}`:`${Qa(e)}/(${n.join(`//`)})`}}function vv(e){return encodeURIComponent(e).replace(/%40/g,`@`).replace(/%3A/gi,`:`).replace(/%24/g,`$`).replace(/%2C/gi,`,`)}function Wa(e){return vv(e).replace(/%3B/gi,`;`)}function BT(e){return encodeURI(e)}function Jd(e){return vv(e).replace(/\(/g,`%28`).replace(/\)/g,`%29`).replace(/%26/gi,`&`)}function Za(e){return decodeURIComponent(e)}function iv(e){return Za(e.replace(/\+/g,`%20`))}function Ev(e){return`${Jd(e.path)}${zT(e.parameters)}`}function zT(e){return Object.entries(e).map(([t,n])=>`;${Jd(t)}=${Jd(n)}`).join(``)}function WT(e){let t=Object.entries(e).map(([n,r])=>Array.isArray(r)?r.map(o=>`${Wa(n)}=${Wa(o)}`).join(`&`):`${Wa(n)}=${Wa(r)}`).filter(n=>n);return t.length?`?${t.join(`&`)}`:``}var Gd=1073741824;function Xa(e,t,n){Number(t)>=32&&!Object.hasOwn(e,Gd)&&(e[Gd]=n,delete e[Gd]),e[t]=n}var qT=/^[^\/()?;#]+/;function Qd(e){let t=e.match(qT);return t?t[0]:``}var GT=/^[^\/()?;=#]+/;function QT(e){let t=e.match(GT);return t?t[0]:``}var ZT=/^[^=?&#]+/;function YT(e){let t=e.match(ZT);return t?t[0]:``}var KT=/^[^&#]+/;function XT(e){let t=e.match(KT);return t?t[0]:``}var ef=class{url;remaining;constructor(t){this.url=t,this.remaining=t}parseRootSegment(){for(;this.consumeOptional(`/`););return this.remaining===``||this.peekStartsWith(`?`)||this.peekStartsWith(`#`)?new j([],{}):new j([],this.parseChildren())}parseQueryParams(){let t={};if(this.consumeOptional(`?`))do this.parseQueryParam(t);while(this.consumeOptional(`&`));return t}parseFragment(){return this.consumeOptional(`#`)?decodeURIComponent(this.remaining):null}parseChildren(t=0){if(t>50)throw new y(4010,!1);if(this.remaining===``)return{};this.consumeOptional(`/`);let n=[];for(this.peekStartsWith(`(`)||n.push(this.parseSegment());this.peekStartsWith(`/`)&&!this.peekStartsWith(`//`)&&!this.peekStartsWith(`/(`);)this.capture(`/`),n.push(this.parseSegment());let r={};this.peekStartsWith(`/(`)&&(this.capture(`/`),r=this.parseParens(!0,t));let o={};return this.peekStartsWith(`(`)&&(o=this.parseParens(!1,t)),(n.length>0||Object.keys(r).length>0)&&(o[M]=new j(n,r)),o}parseSegment(){let t=Qd(this.remaining);if(t===``&&this.peekStartsWith(`;`))throw new y(4009,!1);return this.capture(t),new sn(Za(t),this.parseMatrixParams())}parseMatrixParams(){let t={};for(;this.consumeOptional(`;`);)this.parseParam(t);return t}parseParam(t){let n=QT(this.remaining);if(!n)return;this.capture(n);let r=``;if(this.consumeOptional(`=`)){let o=Qd(this.remaining);o&&(r=o,this.capture(r))}Xa(t,Za(n),Za(r))}parseQueryParam(t){let n=YT(this.remaining);if(!n)return;this.capture(n);let r=``;if(this.consumeOptional(`=`)){let s=XT(this.remaining);s&&(r=s,this.capture(r))}let o=iv(n),i=iv(r);if(Object.hasOwn(t,o)){let s=t[o];Array.isArray(s)||(s=[s],t[o]=s),s.push(i)}else t[o]=i}parseParens(t,n){let r=Object.create(null);for(this.capture(`(`);!this.consumeOptional(`)`)&&this.remaining.length>0;){let o=Qd(this.remaining),i=this.remaining[o.length];if(i!==`/`&&i!==`)`&&i!==`;`)throw new y(4010,!1);let s;o.indexOf(`:`)>-1?(s=o.slice(0,o.indexOf(`:`)),this.capture(s),this.capture(`:`)):t&&(s=M);let a=this.parseChildren(n+1),c=Object.keys(a).length===1&&a[M]?a[M]:new j([],a);Xa(r,s??M,c),this.consumeOptional(`//`)}return r}peekStartsWith(t){return this.remaining.startsWith(t)}consumeOptional(t){return this.peekStartsWith(t)?(this.remaining=this.remaining.substring(t.length),!0):!1}capture(t){if(!this.consumeOptional(t))throw new y(4011,!1)}};function Iv(e){return e.segments.length>0?new j([],{[M]:e}):e}function wv(e){let t=Object.create(null);for(let[r,o]of Object.entries(e.children)){let i=wv(o);if(r===M&&i.segments.length===0&&i.hasChildren())for(let[s,a]of Object.entries(i.children))Xa(t,s,a);else(i.segments.length>0||i.hasChildren())&&Xa(t,r,i)}return JT(new j(e.segments,t))}function JT(e){if(e.numberOfChildren===1&&e.children[M]){let t=e.children[M];return new j(e.segments.concat(t.segments),t.children)}return e}function cn(e){return e instanceof Se}function Dv(e,t,n=null,r=null,o=new an){return Sv(bv(e),t,n,r,o)}function bv(e){let t;function n(i){let s={};for(let c of i.children){let l=n(c);s[c.outlet]=l}let a=new j(i.url,s);return i===e&&(t=a),a}let o=Iv(n(e.root));return t??o}function Sv(e,t,n,r,o){let i=e;for(;i.parent;)i=i.parent;if(t.length===0)return Zd(i,i,i,n,r,o);let s=eM(t);if(s.toRoot())return Zd(i,i,new j([],{}),n,r,o);let a=tM(s,i,e),c=a.processChildren?mi(a.segmentGroup,a.index,s.commands):Tv(a.segmentGroup,a.index,s.commands);return Zd(i,a.segmentGroup,c,n,r,o)}function Ja(e){return typeof e==`object`&&e!=null&&!e.outlets&&!e.segmentPath}function Ei(e){return typeof e==`object`&&e!=null&&e.outlets}function sv(e,t,n){e||=`ɵ`;let r=new Se;return r.queryParams={[e]:t},n.parse(n.serialize(r)).queryParams[e]}function Zd(e,t,n,r,o,i){let s={};for(let[l,u]of Object.entries(r??{}))s[l]=Array.isArray(u)?u.map(d=>sv(l,d,i)):sv(l,u,i);let a;e===t?a=n:a=Cv(e,t,n);return new Se(Iv(wv(a)),s,o)}function Cv(e,t,n){let r=Object.create(null);return Object.entries(e.children).forEach(([o,i])=>{i===t?r[o]=n:r[o]=Cv(i,t,n)}),new j(e.segments,r)}var ec=class{isAbsolute;numberOfDoubleDots;commands;constructor(t,n,r){if(this.isAbsolute=t,this.numberOfDoubleDots=n,this.commands=r,t&&r.length>0&&Ja(r[0]))throw new y(4003,!1);let o=r.find(Ei);if(o&&o!==PT(r))throw new y(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]==`/`}};function eM(e){if(typeof e[0]==`string`&&e.length===1&&e[0]===`/`)return new ec(!0,0,e);let t=0,n=!1,r=e.reduce((o,i,s)=>{if(typeof i==`object`&&i!=null){if(i.outlets){let a={};return Object.entries(i.outlets).forEach(([c,l])=>{a[c]=typeof l==`string`?l.split(`/`):l}),[...o,{outlets:a}]}if(i.segmentPath)return[...o,i.segmentPath]}return typeof i!=`string`?[...o,i]:s===0?(i.split(`/`).forEach((a,c)=>{c==0&&a===`.`||(c==0&&a===``?n=!0:a===`..`?t++:a!=``&&o.push(a))}),o):[...o,i]},[]);return new ec(n,t,r)}var Fr=class{segmentGroup;processChildren;index;constructor(t,n,r){this.segmentGroup=t,this.processChildren=n,this.index=r}};function tM(e,t,n){if(e.isAbsolute)return new Fr(t,!0,0);if(!n)return new Fr(t,!1,NaN);if(n.parent===null)return new Fr(n,!0,0);let r=Ja(e.commands[0])?0:1;return nM(n,n.segments.length-1+r,e.numberOfDoubleDots)}function nM(e,t,n){let r=e,o=t,i=n;for(;i>o;){if(i-=o,r=r.parent,!r)throw new y(4005,!1);o=r.segments.length}return new Fr(r,!1,o-i)}function rM(e){return Ei(e[0])?e[0].outlets:{[M]:e}}function Tv(e,t,n){if(e??=new j([],{}),e.segments.length===0&&e.hasChildren())return mi(e,t,n);let r=oM(e,t,n),o=n.slice(r.commandIndex);if(r.match&&r.pathIndexi!==M)&&e.children[M]&&e.numberOfChildren===1&&e.children[M].segments.length===0){let i=mi(e.children[M],t,n);return new j(e.segments,i.children)}return Object.entries(r).forEach(([i,s])=>{typeof s==`string`&&(s=[s]),s!==null&&(o[i]=Tv(e.children[i],t,s))}),Object.entries(e.children).forEach(([i,s])=>{r[i]===void 0&&(o[i]=s)}),new j(e.segments,o)}}function oM(e,t,n){let r=0,o=t,i={match:!1,pathIndex:0,commandIndex:0};for(;o=n.length)return i;let s=e.segments[o],a=n[r];if(Ei(a))break;let c=`${a}`,l=r0&&c===void 0)break;if(c&&l&&typeof l==`object`&&l.outlets===void 0){if(!cv(c,l,s))return i;r+=2}else{if(!cv(c,{},s))return i;r++}o++}return{match:!0,pathIndex:o,commandIndex:r}}function tf(e,t,n){let r=e.segments.slice(0,t),o=0;for(;o{typeof r==`string`&&(r=[r]),r!==null&&(t[n]=tf(new j([],{}),0,r))}),t}function av(e){let t={};return Object.entries(e).forEach(([n,r])=>t[n]=`${r}`),t}function cv(e,t,n){return e==n.path&&dt(t,n.parameters)}var tc=class{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return this.route?.snapshot._environmentInjector??this.rootInjector}constructor(t){this.rootInjector=t,this.children=new Qn(this.rootInjector)}resetChildren(){this.children=new Qn(this.rootInjector)}};var Qn=(()=>{class e{rootInjector;contexts=new Map;constructor(n){this.rootInjector=n}onChildOutletCreated(n,r){let o=this.getOrCreateContext(n);o.outlet=r,this.contexts.set(n,o)}onChildOutletDestroyed(n){let r=this.getContext(n);r&&(r.outlet=null,r.attachRef=null)}onOutletDeactivated(){let n=this.contexts;return this.contexts=new Map,n}onOutletReAttached(n){this.contexts=n}getOrCreateContext(n){let r=this.getContext(n);return r||(r=new tc(this.rootInjector),this.contexts.set(n,r)),r}getContext(n){return this.contexts.get(n)||null}static ɵfac=function(r){return new(r||e)(S(K))};static ɵprov=T({token:e,factory:e.ɵfac,providedIn:`root`})}return e})();var nc=class{_root;constructor(t){this._root=t}get root(){return this._root.value}parent(t){let n=this.pathFromRoot(t);return n.length>1?n[n.length-2]:null}children(t){let n=nf(t,this._root);return n?n.children.map(r=>r.value):[]}firstChild(t){let n=nf(t,this._root);return n&&n.children.length>0?n.children[0].value:null}siblings(t){let n=rf(t,this._root);return n.length<2?[]:n[n.length-2].children.map(o=>o.value).filter(o=>o!==t)}pathFromRoot(t){return rf(t,this._root).map(n=>n.value)}};function nf(e,t){if(e===t.value)return t;for(let n of t.children){let r=nf(e,n);if(r)return r}return null}function rf(e,t){if(e===t.value)return[t];for(let n of t.children){let r=rf(e,n);if(r.length)return r.unshift(t),r}return[]}var be=class{value;children;constructor(t,n){this.value=t,this.children=n}toString(){return`TreeNode(${this.value})`}};function Lr(e){let t={};return e&&e.children.forEach(n=>t[n.value.outlet]=n),t}var Ii=class extends nc{snapshot;constructor(t,n){super(t),this.snapshot=n,mf(this,t)}toString(){return this.snapshot.toString()}};function Mv(e,t){let n=sM(e,t),r=new ce([new sn(``,{})]),o=new ce({}),i=new ce({}),c=new Ot(r,o,new ce({}),new ce(``),i,M,e,n.root);return c.snapshot=n.root,new Ii(new be(c,[]),n)}function sM(e,t){return new wi(``,new be(new Vr([],{},{},``,{},M,e,null,{},t),[]))}var Ot=class{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;resources;_localInjector;pending;paramsSignal;queryParamsSignal;paramMapSignal;queryParamMapSignal;fragmentSignal;dataSignal;constructor(t,n,r,o,i,s,a,c){this.urlSubject=t,this.paramsSubject=n,this.queryParamsSubject=r,this.fragmentSubject=o,this.dataSubject=i,this.outlet=s,this.component=a,this._futureSnapshot=c,this.title=this.dataSubject?.pipe($(l=>l[Ti]))??R(void 0),this.url=t,this.params=n,this.queryParams=r,this.fragment=o,this.data=i}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe($(t=>Gn(t))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe($(t=>Gn(t))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}_setPending(t){this._futureSnapshot=t,this.pending?.set(!0)}};var aM=`always`;function gf(e,t,n){let r,{routeConfig:o}=e;return t!==null&&(n===`always`||o?.path===``||!t.component&&!t.routeConfig?.loadComponent)?r={params:Object.keys(e.params).length===0?t.params:Object.freeze(l(l({},t.params),e.params)),data:Object.freeze(l(l({},t.data),e.data)),resolve:l(l(l(l({},e.data),t.data),o?.data),e._resolvedData)}:r={params:Object.freeze(l({},e.params)),data:Object.freeze(l({},e.data)),resolve:l(l({},e.data),e._resolvedData??{})},o&&Nv(o)&&(r.resolve[Ti]=o.title),r}var Vr=class{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;_environmentInjector;resources;get title(){return this.data?.[Ti]}constructor(t,n,r,o,i,s,a,c,l,u){this.url=t,this.params=n,this.queryParams=r,this.fragment=o,this.data=i,this.outlet=s,this.component=a,this.routeConfig=c,this._resolve=l,this._environmentInjector=u}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=Gn(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=Gn(this.queryParams),this._queryParamMap}toString(){return`Route(url:'${this.url.map(r=>r.toString()).join(`/`)}', path:'${this.routeConfig?this.routeConfig.path:``}')`}};var wi=class extends nc{url;constructor(t,n){super(n),this.url=t,mf(this,n)}toString(){return _v(this._root)}};function mf(e,t){t.value._routerState=e,t.children.forEach(n=>mf(e,n))}function _v(e){let t=e.children.length>0?` { ${e.children.map(_v).join(`, `)} } `:``;return`${e.value}${t}`}function Yd(e){if(e.snapshot){let t=e.snapshot,n=e._futureSnapshot;e.snapshot=n,dt(t.queryParams,n.queryParams)||e.queryParamsSubject.next(n.queryParams),t.fragment!==n.fragment&&e.fragmentSubject.next(n.fragment),dt(t.params,n.params)||e.paramsSubject.next(n.params),kT(t.url,n.url)||e.urlSubject.next(n.url),dt(t.data,n.data)||e.dataSubject.next(n.data)}else e.snapshot=e._futureSnapshot,e.dataSubject.next(e._futureSnapshot.data)}function of(e,t){let n=dt(e.params,t.params)&&UT(e.url,t.url),r=!e.parent!=!t.parent;return n&&!r&&(!e.parent||of(e.parent,t.parent))}function Nv(e){return typeof e.title==`string`||e.title===null}var Rv=new v(``);var yf=(()=>{class e{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=M;activateEvents=new ye;deactivateEvents=new ye;attachEvents=new ye;detachEvents=new ye;routerOutletData=rn();parentContexts=p(Qn);location=p(Rr);changeDetector=p(ii);inputBinder=p(Mi,{optional:!0});supportsBindingToComponentInputs=!0;ngOnChanges(n){if(n.name){let{firstChange:r,previousValue:o}=n.name;if(r)return;this.isTrackedInParentContexts(o)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(o)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(n){return this.parentContexts.getContext(n)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let n=this.parentContexts.getContext(this.name);n?.route&&(n.attachRef?this.attach(n.attachRef,n.route):this.activateWith(n.route,n.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new y(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new y(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new y(4012,!1);this.location.detach();let n=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(n.instance),n}attach(n,r){this.activated=n,this._activatedRoute=r,this.location.insert(n.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this,this.location.injector),this.attachEvents.emit(n.instance)}deactivate(){if(this.activated){let n=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(n)}}activateWith(n,r){if(this.isActivated)throw new y(4013,!1);this._activatedRoute=n;let o=this.location,s=n.snapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,c=new sf(n,a,o.injector,this.routerOutletData);this.activated=o.createComponent(s,{index:o.length,injector:c,environmentInjector:r}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this,this.location.injector),this.activateEvents.emit(this.activated.instance)}static ɵfac=function(r){return new(r||e)};static ɵdir=xr({type:e,selectors:[[`router-outlet`]],inputs:{name:`name`,routerOutletData:[1,`routerOutletData`]},outputs:{activateEvents:`activate`,deactivateEvents:`deactivate`,attachEvents:`attach`,detachEvents:`detach`},exportAs:[`outlet`],features:[_r]})}return e})();var sf=class{route;childContexts;parent;outletData;constructor(t,n,r,o){this.route=t,this.childContexts=n,this.parent=r,this.outletData=o}get(t,n){return t===Ot?this.route:t===Qn?this.childContexts:t===Rv?this.outletData:this.parent.get(t,n)}};var Mi=new v(``);var xv=(()=>{class e{options;feature;outletDataSubscriptions=new Map;outletSeenKeys=new Map;outletEffects=new Map;constructor(n,r=null){this.options=n,this.feature=r,this.options.queryParams??=!0}bindActivatedRouteToOutletComponent(n,r){this.unsubscribeFromRouteData(n),this.subscribeToRouteData(n,r)}unsubscribeFromRouteData(n){this.outletDataSubscriptions.get(n)?.unsubscribe(),this.outletDataSubscriptions.delete(n),this.outletSeenKeys.delete(n),this.outletEffects.get(n)?.forEach(r=>r.destroy()),this.outletEffects.delete(n)}subscribeToRouteData(n,r){let{activatedRoute:o}=n,i=[],s=[];if(this.feature?.createResourceOutletBindingEffects&&n.activatedComponentRef){let{handledKeys:c,createdEffects:l}=this.feature.createResourceOutletBindingEffects(n.activatedComponentRef,o);i.push(...l),s=c}i.length>0&&this.outletEffects.set(n,i);let a=Ji([this.options.queryParams?o.queryParams:R({}),o.params,o.data]).pipe(Te(([c,l$2,u],d)=>(u=l(l(l(l({},c),l$2),u),o.resources),d===0?R(u):Promise.resolve(u)))).subscribe(c=>{if(!n.isActivated||!n.activatedComponentRef||n.activatedRoute!==o||o.component===null){this.unsubscribeFromRouteData(n);return}let l=Rd(o.component);if(!l){this.unsubscribeFromRouteData(n);return}let u=this.outletSeenKeys.get(n);u||(u=new Set,this.outletSeenKeys.set(n,u));for(let h of Object.keys(c))u.add(h);let d=this.options.unmatchedInputBehavior??`alwaysUndefined`;for(let{templateName:h}of l.inputs){if(s.includes(h))continue;let f=c[h];(f!==void 0||d===`alwaysUndefined`||u.has(h))&&n.activatedComponentRef.setInput(h,f)}});this.outletDataSubscriptions.set(n,a)}static ɵfac=function(r){Ko()};static ɵprov=T({token:e,factory:e.ɵfac})}return e})();var vf=(()=>{class e{static ɵfac=function(r){return new(r||e)};static ɵcmp=ei({type:e,selectors:[[`ng-component`]],exportAs:[`emptyRouterOutlet`],decls:1,vars:0,template:function(r,o){r&1&&Sa(0,`router-outlet`)},dependencies:[yf],encapsulation:2,changeDetection:1})}return e})();function Ef(e){let t=e.children&&e.children.map(Ef),n=t?m(l({},e),{children:t}):l({},e);return!n.component&&!n.loadComponent&&(t||n.loadChildren)&&n.outlet&&n.outlet!==M&&(n.component=vf),n}var jr=`imperative`;var se=(function(e){return e[e.NavigationStart=0]=`NavigationStart`,e[e.NavigationEnd=1]=`NavigationEnd`,e[e.NavigationCancel=2]=`NavigationCancel`,e[e.NavigationError=3]=`NavigationError`,e[e.RoutesRecognized=4]=`RoutesRecognized`,e[e.ResolveStart=5]=`ResolveStart`,e[e.ResolveEnd=6]=`ResolveEnd`,e[e.GuardsCheckStart=7]=`GuardsCheckStart`,e[e.GuardsCheckEnd=8]=`GuardsCheckEnd`,e[e.RouteConfigLoadStart=9]=`RouteConfigLoadStart`,e[e.RouteConfigLoadEnd=10]=`RouteConfigLoadEnd`,e[e.ChildActivationStart=11]=`ChildActivationStart`,e[e.ChildActivationEnd=12]=`ChildActivationEnd`,e[e.ActivationStart=13]=`ActivationStart`,e[e.ActivationEnd=14]=`ActivationEnd`,e[e.Scroll=15]=`Scroll`,e[e.NavigationSkipped=16]=`NavigationSkipped`,e})(se||{});var ke=class{id;url;constructor(t,n){this.id=t,this.url=n}};var ln=class extends ke{type=se.NavigationStart;navigationTrigger;restoredState;constructor(t,n,r=`imperative`,o=null){super(t,n),this.navigationTrigger=r,this.restoredState=o}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}};var ze=class extends ke{urlAfterRedirects;type=se.NavigationEnd;constructor(t,n,r){super(t,n),this.urlAfterRedirects=r}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}};var pe=(function(e){return e[e.Redirect=0]=`Redirect`,e[e.SupersededByNewNavigation=1]=`SupersededByNewNavigation`,e[e.NoDataFromResolver=2]=`NoDataFromResolver`,e[e.GuardRejected=3]=`GuardRejected`,e[e.Aborted=4]=`Aborted`,e})(pe||{});var $r=(function(e){return e[e.IgnoredSameUrlNavigation=0]=`IgnoredSameUrlNavigation`,e[e.IgnoredByUrlHandlingStrategy=1]=`IgnoredByUrlHandlingStrategy`,e})($r||{});var Be=class extends ke{reason;code;type=se.NavigationCancel;constructor(t,n,r,o){super(t,n),this.reason=r,this.code=o}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}};function Av(e){return e instanceof Be&&(e.code===pe.Redirect||e.code===pe.SupersededByNewNavigation)}var ft=class extends ke{reason;code;type=se.NavigationSkipped;constructor(t,n,r,o){super(t,n),this.reason=r,this.code=o}};var Zn=class extends ke{error;target;type=se.NavigationError;constructor(t,n,r,o){super(t,n),this.error=r,this.target=o}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}};var Di=class extends ke{urlAfterRedirects;state;type=se.RoutesRecognized;constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}};var rc=class extends ke{urlAfterRedirects;state;type=se.GuardsCheckStart;constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}};var oc=class extends ke{urlAfterRedirects;state;shouldActivate;type=se.GuardsCheckEnd;constructor(t,n,r,o,i){super(t,n),this.urlAfterRedirects=r,this.state=o,this.shouldActivate=i}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}};var ic=class extends ke{urlAfterRedirects;state;type=se.ResolveStart;constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}};var sc=class extends ke{urlAfterRedirects;state;type=se.ResolveEnd;constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}};var ac=class{route;type=se.RouteConfigLoadStart;constructor(t){this.route=t}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}};var cc=class{route;type=se.RouteConfigLoadEnd;constructor(t){this.route=t}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}};var lc=class{snapshot;type=se.ChildActivationStart;constructor(t){this.snapshot=t}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||``}')`}};var uc=class{snapshot;type=se.ChildActivationEnd;constructor(t){this.snapshot=t}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||``}')`}};var dc=class{snapshot;type=se.ActivationStart;constructor(t){this.snapshot=t}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||``}')`}};var fc=class{snapshot;type=se.ActivationEnd;constructor(t){this.snapshot=t}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||``}')`}};var Br=class{routerEvent;position;anchor;scrollBehavior;type=se.Scroll;constructor(t,n,r,o){this.routerEvent=t,this.position=n,this.anchor=r,this.scrollBehavior=o}toString(){let t=this.position?`${this.position[0]}, ${this.position[1]}`:null;return`Scroll(anchor: '${this.anchor}', position: '${t}')`}};var zr=class{};var bi=class{};var Wr=class{url;navigationBehaviorOptions;constructor(t,n){this.url=t,this.navigationBehaviorOptions=n}};function cM(e){return!(e instanceof zr)&&!(e instanceof Wr)&&!(e instanceof bi)}function lM(e,t,n){let r=new Set;return{newlyCreatedRoutes:r,state:new Ii(Si(e,t._root,n?n._root:void 0,r),t)}}function Si(e,t,n,r){if(n&&e.shouldReuseRoute(t.value,n.value.snapshot)){let o=n.value;o._setPending(t.value);return new be(o,uM(e,t,n,r))}else{if(e.shouldAttach(t.value)){let s=e.retrieve(t.value);if(s!==null){let a=s.route;return a.value._setPending(t.value),a.children=t.children.map(c=>Si(e,c,void 0,r)),a}}let o=dM(t.value);o._setPending(t.value),r.add(o);return new be(o,t.children.map(s=>Si(e,s,void 0,r)))}}function uM(e,t,n,r){return t.children.map(o=>{for(let i of n.children)if(e.shouldReuseRoute(o.value,i.value.snapshot))return Si(e,o,i,r);return Si(e,o,void 0,r)})}function dM(e){return new Ot(new ce(e.url),new ce(e.params),new ce(e.queryParams),new ce(e.fragment),new ce(e.data),e.outlet,e.component,e)}var Yn=class e extends Error{redirectTo;navigationBehaviorOptions;constructor(t,n){super(),this.redirectTo=t,this.navigationBehaviorOptions=n,Object.setPrototypeOf(this,e.prototype)}};var Ov=`ngNavigationCancelingError`;function yi(e,t){let{redirectTo:n,navigationBehaviorOptions:r}=cn(t)?{redirectTo:t,navigationBehaviorOptions:void 0}:t,o=kv(!1,pe.Redirect);return o.url=n,o.navigationBehaviorOptions=r,o}function kv(e,t){let n=new Error(`NavigationCancelingError: ${e||``}`);return n[Ov]=!0,n.cancellationCode=t,n}function fM(e){return Pv(e)&&cn(e.url)}function Pv(e){return!!e&&e[Ov]}var af=class{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(t,n,r,o,i){this.routeReuseStrategy=t,this.futureState=n,this.currState=r,this.forwardEvent=o,this.inputBindingEnabled=i}activate(t){let n=this.futureState._root,r=this.currState?this.currState._root:null;this.deactivateChildRoutes(n,r,t),Yd(this.futureState.root),this.activateChildRoutes(n,r,t)}deactivateChildRoutes(t,n,r){let o=Lr(n);t.children.forEach(i=>{let s=i.value.outlet;this.deactivateRoutes(i,o[s],r),delete o[s]}),Object.values(o).forEach(i=>{this.deactivateRouteAndItsChildren(i,r)})}deactivateRoutes(t,n,r){let o=t.value,i=n?n.value:null;if(o===i)if(o.component){let s=r.getContext(o.outlet);s&&this.deactivateChildRoutes(t,n,s.children)}else this.deactivateChildRoutes(t,n,r);else i&&this.deactivateRouteAndItsChildren(n,r)}deactivateRouteAndItsChildren(t,n){t.value.component&&this.routeReuseStrategy.shouldDetach(t.value.snapshot)?this.detachAndStoreRouteSubtree(t,n):this.deactivateRouteAndOutlet(t,n)}detachAndStoreRouteSubtree(t,n){let r=n.getContext(t.value.outlet),o=r&&t.value.component?r.children:n,i=Lr(t);for(let s of Object.values(i))this.deactivateRouteAndItsChildren(s,o);if(r&&r.outlet){let s=r.outlet.detach(),a=r.children.contexts;r.resetChildren(),this.routeReuseStrategy.store(t.value.snapshot,{componentRef:s,route:t,contexts:a})}}deactivateRouteAndOutlet(t,n){let r=n.getContext(t.value.outlet),o=r&&t.value.component?r.children:n,i=Lr(t);for(let s of Object.values(i))this.deactivateRouteAndItsChildren(s,o);r&&(r.outlet&&(r.outlet.deactivate(),r.children.onOutletDeactivated()),r.attachRef=null,r.route=null),t.value._localInjector?.destroy()}activateChildRoutes(t,n,r){let o=Lr(n);t.children.forEach(i=>{this.activateRoutes(i,o[i.value.outlet],r),this.forwardEvent(new fc(i.value.snapshot))}),t.children.length&&this.forwardEvent(new uc(t.value.snapshot))}activateRoutes(t,n,r){let o=t.value,i=n?n.value:null;if(Yd(o),o===i)if(o.component){let s=r.getOrCreateContext(o.outlet);this.activateChildRoutes(t,n,s.children)}else this.activateChildRoutes(t,n,r);else if(o.component){let s=r.getOrCreateContext(o.outlet);if(this.routeReuseStrategy.shouldAttach(o.snapshot)){let a=this.routeReuseStrategy.retrieve(o.snapshot);this.routeReuseStrategy.store(o.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),Yd(a.route.value),this.activateChildRoutes(t,null,s.children)}else s.attachRef=null,s.route=o,s.outlet&&s.outlet.activateWith(o,s.injector),this.activateChildRoutes(t,null,s.children)}else this.activateChildRoutes(t,null,r)}};var hc=class{path;route;constructor(t){this.path=t,this.route=this.path[this.path.length-1]}};var Ur=class{component;route;constructor(t,n){this.component=t,this.route=n}};function hM(e,t,n){let r=e._root;return gi(r,t?t._root:null,n,[r.value])}function pM(e){let t=e.routeConfig?e.routeConfig.canActivateChild:null;return!t||t.length===0?null:{node:e,guards:t}}function Gr(e,t){let n=Symbol(),r=t.get(e,n);return r===n?typeof e==`function`&&!al(e)?e:t.get(e):r}function gi(e,t,n,r,o={canDeactivateChecks:[],canActivateChecks:[]}){let i=Lr(t);return e.children.forEach(s=>{gM(s,i[s.value.outlet],n,r.concat([s.value]),o),delete i[s.value.outlet]}),Object.entries(i).forEach(([s,a])=>vi(a,n.getContext(s),n,o)),o}function gM(e,t,n,r,o={canDeactivateChecks:[],canActivateChecks:[]}){let i=e.value,s=t?t.value:null,a=n?n.getContext(e.value.outlet):null;if(s&&i.routeConfig===s.routeConfig){let c=mM(s,i,i.routeConfig.runGuardsAndResolvers);c?o.canActivateChecks.push(new hc(r)):(i.data=s.data,i._resolvedData=s._resolvedData),i.component?gi(e,t,a?a.children:null,r,o):gi(e,t,n,r,o),c&&a&&a.outlet&&a.outlet.isActivated&&o.canDeactivateChecks.push(new Ur(a.outlet.component,s))}else s&&vi(t,a,n,o),o.canActivateChecks.push(new hc(r)),i.component?gi(e,null,a?a.children:null,r,o):gi(e,null,n,r,o);return o}function mM(e,t,n){if(typeof n==`function`)return oe(t._environmentInjector,()=>n(e,t));switch(n){case`pathParamsChange`:return!qn(e.url,t.url);case`pathParamsOrQueryParamsChange`:return!qn(e.url,t.url)||!dt(e.queryParams,t.queryParams);case`always`:return!0;case`paramsOrQueryParamsChange`:return!of(e,t)||!dt(e.queryParams,t.queryParams);default:return!of(e,t)}}function vi(e,t,n,r){let o=Lr(e),i=e.value;Object.entries(o).forEach(([s,a])=>{i.component?t?vi(a,t.children.getContext(s),t.children,r):vi(a,null,null,r):vi(a,n?n.getContext(s):null,n,r)}),i.component?t&&t.outlet&&t.outlet.isActivated?r.canDeactivateChecks.push(new Ur(t.outlet.component,i)):r.canDeactivateChecks.push(new Ur(null,i)):r.canDeactivateChecks.push(new Ur(null,i))}function _i(e){return typeof e==`function`}function yM(e){return typeof e==`boolean`}function vM(e){return e&&_i(e.canLoad)}function EM(e){return e&&_i(e.canActivate)}function IM(e){return e&&_i(e.canActivateChild)}function wM(e){return e&&_i(e.canDeactivate)}function DM(e){return e&&_i(e.canMatch)}function Lv(e){return e instanceof ht||e?.name===`EmptyError`}var qa=Symbol(`INITIAL_VALUE`);function qr(){return Te(e=>Ji(e.map(t=>t.pipe(pt(1),Ac(qa)))).pipe($(t=>{for(let n of t)if(n!==!0){if(n===qa)return qa;if(n===!1||bM(n))return n}return!0}),Pe(t=>t!==qa),pt(1)))}function bM(e){return cn(e)||e instanceof Yn}function Fv(e){return e.aborted?R(void 0).pipe(pt(1)):new A(t=>{let n=()=>{t.next(),t.complete()};return e.addEventListener(`abort`,n),()=>e.removeEventListener(`abort`,n)})}function jv(e){return no(Fv(e))}function SM(e){return me(t=>{let{targetSnapshot:n,currentSnapshot:r,guards:{canActivateChecks:o,canDeactivateChecks:i}}=t;return i.length===0&&o.length===0?R(m(l({},t),{guardsResult:!0})):CM(i,n,r).pipe(me(s=>s&&yM(s)?TM(n,o,e):R(s)),$(s=>m(l({},t),{guardsResult:s})))})}function CM(e,t,n){return te(e).pipe(me(r=>xM(r.component,r.route,n,t)),gt(r=>r!==!0,!0))}function TM(e,t,n){return te(t).pipe(pn(r=>sr(_M(r.route.parent,n),MM(r.route,n),RM(e,r.path),NM(e,r.route))),gt(r=>r!==!0,!0))}function MM(e,t){return e!==null&&t&&t(new dc(e)),R(!0)}function _M(e,t){return e!==null&&t&&t(new lc(e)),R(!0)}function NM(e,t){let n=t.routeConfig?t.routeConfig.canActivate:null;if(!n||n.length===0)return R(!0);return R(n.map(o=>eo(()=>{let i=t._environmentInjector,s=Gr(o,i);return Kn(EM(s)?s.canActivate(t,e):oe(i,()=>s(t,e))).pipe(gt())}))).pipe(qr())}function RM(e,t){let n=t[t.length-1];return R(t.slice(0,t.length-1).reverse().map(i=>pM(i)).filter(i=>i!==null).map(i=>eo(()=>{return R(i.guards.map(a=>{let c=i.node._environmentInjector,l=Gr(a,c);return Kn(IM(l)?l.canActivateChild(n,e):oe(c,()=>l(n,e))).pipe(gt())})).pipe(qr())}))).pipe(qr())}function xM(e,t,n,r){let o=t&&t.routeConfig?t.routeConfig.canDeactivate:null;if(!o||o.length===0)return R(!0);return R(o.map(s=>{let a=t._environmentInjector,c=Gr(s,a);return Kn(wM(c)?c.canDeactivate(e,t,n,r):oe(a,()=>c(e,t,n,r))).pipe(gt())})).pipe(qr())}function AM(e,t,n,r,o){let i=t.canLoad;if(i===void 0||i.length===0)return R(!0);return R(i.map(a=>{let c=Gr(a,e),u=Kn(vM(c)?c.canLoad(t,n):oe(e,()=>c(t,n)));return o?u.pipe(jv(o)):u})).pipe(qr(),Uv(r))}function Uv(e){return ki(Le(t=>{if(typeof t!=`boolean`)throw yi(e,t)}),$(t=>t===!0))}function OM(e,t,n,r,o,i){let s=t.canMatch;if(!s||s.length===0)return R(!0);return R(s.map(c=>{let l=Gr(c,e);return Kn(DM(l)?l.canMatch(t,n,o):oe(e,()=>l(t,n,o))).pipe(jv(i))})).pipe(qr(),Uv(r))}var ut=class e extends Error{name=`NoMatch`;segmentGroup;constructor(t){super(),this.segmentGroup=t||null,Object.setPrototypeOf(this,e.prototype)}};var Ci=class e extends Error{urlTree;name=`AbsoluteRedirect`;constructor(t){super(),this.urlTree=t,Object.setPrototypeOf(this,e.prototype)}};function kM(e){throw new y(4e3,!1)}function PM(e){throw kv(!1,pe.GuardRejected)}var cf=class{urlSerializer;urlTree;constructor(t,n){this.urlSerializer=t,this.urlTree=n}async lineralizeSegments(t,n){let r=[],o=n.root;for(;;){if(r=r.concat(o.segments),o.numberOfChildren===0)return r;if(o.numberOfChildren>1||!o.children[M])throw kM(`${t.redirectTo}`);o=o.children[M]}}async applyRedirectCommands(t,n,r,o,i){let s=await LM(n,o,i);if(s instanceof Se)throw new Ci(s);let a=this.applyRedirectCreateUrlTree(s,this.urlSerializer.parse(s),t,r);if(s[0]===`/`)throw new Ci(a);return a}applyRedirectCreateUrlTree(t,n,r,o){return new Se(this.createSegmentGroup(t,n.root,r,o),this.createQueryParams(n.queryParams,this.urlTree.queryParams),n.fragment)}createQueryParams(t,n){let r={};return Object.entries(t).forEach(([o,i])=>{if(typeof i==`string`&&i[0]===`:`){let a=i.substring(1);r[o]=n[a]}else r[o]=i}),r}createSegmentGroup(t,n,r,o){let i=this.createSegments(t,n.segments,r,o),s=Object.create(null);return Object.entries(n.children).forEach(([a,c])=>{s[a]=this.createSegmentGroup(t,c,r,o)}),new j(i,s)}createSegments(t,n,r,o){return n.map(i=>i.path[0]===`:`?this.findPosParam(t,i,o):this.findOrReturn(i,r))}findPosParam(t,n,r){let o=r[n.path.substring(1)];if(!o)throw new y(4001,!1);return o}findOrReturn(t,n){let r=0;for(let o of n){if(o.path===t.path)return n.splice(r),o;r++}return t}};function LM(e,t,n){if(typeof e==`string`)return Promise.resolve(e);let r=e;return Ya(Kn(oe(n,()=>r(t))))}function FM(e,t){return e.providers&&!e._injector&&(e._injector=Jo(e.providers,t,`Route: ${e.path}`)),e._injector??t}function Je(e){return e.outlet||M}function jM(e,t){let n=e.filter(r=>Je(r)===t);return n.push(...e.filter(r=>Je(r)!==t)),n}var lf={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function Hv(e){return{routeConfig:e.routeConfig,url:e.url,params:e.params,queryParams:e.queryParams,fragment:e.fragment,data:e.data,outlet:e.outlet,title:e.title,paramMap:e.paramMap,queryParamMap:e.queryParamMap}}function UM(e,t,n,r,o,i,s){let a=Vv(e,t,n);if(!a.matched)return R(a);let c=Hv(i(a));return r=FM(t,r),OM(r,t,n,o,c,s).pipe($(l$3=>l$3===!0?a:l({},lf)))}function Vv(e,t,n){if(t.path===``)return t.pathMatch===`full`&&(e.hasChildren()||n.length>0)?l({},lf):{matched:!0,consumedSegments:[],remainingSegments:n,parameters:{},positionalParamSegments:{}};let o=(t.matcher||dv)(n,e,t);if(!o)return l({},lf);let i={};Object.entries(o.posParams??{}).forEach(([a,c])=>{i[a]=c.path});let s=o.consumed.length>0?l(l({},i),o.consumed[o.consumed.length-1].parameters):i;return{matched:!0,consumedSegments:o.consumed,remainingSegments:n.slice(o.consumed.length),parameters:s,positionalParamSegments:o.posParams??{}}}function lv(e,t,n,r,o){return n.length>0&&$M(e,n,r,o)?{segmentGroup:new j(t,VM(r,new j(n,e.children))),slicedSegments:[]}:n.length===0&&BM(e,n,r)?{segmentGroup:new j(e.segments,HM(e,n,r,e.children)),slicedSegments:n}:{segmentGroup:new j(e.segments,e.children),slicedSegments:n}}function HM(e,t,n,r){let o={};for(let i of n)if(gc(e,t,i)&&!r[Je(i)]){let s=new j([],{});o[Je(i)]=s}return l(l({},r),o)}function VM(e,t){let n={};n[M]=t;for(let r of e)if(r.path===``&&Je(r)!==M){let o=new j([],{});n[Je(r)]=o}return n}function $M(e,t,n,r){return n.some(o=>!gc(e,t,o)||!(Je(o)!==M)?!1:!(r!==void 0&&Je(o)===r))}function BM(e,t,n){return n.some(r=>gc(e,t,r))}function gc(e,t,n){return(e.hasChildren()||t.length>0)&&n.pathMatch===`full`?!1:n.path===``}function zM(e,t,n){return t.length===0&&!e.hasChildren()}var uf=class{};async function WM(e,t,n,r,o,i,s,a){return new df(e,t,n,r,o,s,i,a).recognize()}var qM=31;var df=class{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;abortSignal;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;queryParams;constructor(t,n,r,o,i,s,a,c){this.injector=t,this.configLoader=n,this.rootComponentType=r,this.config=o,this.urlTree=i,this.paramsInheritanceStrategy=s,this.urlSerializer=a,this.abortSignal=c,this.applyRedirects=new cf(this.urlSerializer,this.urlTree),this.queryParams=Object.freeze(l({},this.urlTree.queryParams))}noMatchError(t){return new y(4002,`'${t.segmentGroup}'`)}async recognize(){let t=lv(this.urlTree.root,[],[],this.config).segmentGroup,{children:n,rootSnapshot:r}=await this.match(t),i=new wi(``,new be(r,n)),s=Dv(r,[],this.urlTree.queryParams,this.urlTree.fragment);return s.queryParams=this.urlTree.queryParams,i.url=this.urlSerializer.serialize(s),{state:i,tree:s}}async match(t){let n=new Vr([],Object.freeze({}),this.queryParams,this.urlTree.fragment,Object.freeze({}),M,this.rootComponentType,null,{},this.injector);try{return{children:await this.processSegmentGroup(this.injector,this.config,t,M,n),rootSnapshot:n}}catch(r){if(r instanceof Ci)return this.absoluteRedirectCount++,this.absoluteRedirectCount>qM&&(this.allowRedirects=!1),this.urlTree=r.urlTree,this.queryParams=Object.freeze(l({},this.urlTree.queryParams)),this.match(r.urlTree.root);throw r instanceof ut?this.noMatchError(r):r}}async processSegmentGroup(t,n,r,o,i){if(r.segments.length===0&&r.hasChildren())return this.processChildren(t,n,r,i);let s=await this.processSegment(t,n,r,r.segments,o,!0,i);return s instanceof be?[s]:[]}async processChildren(t,n,r,o){let i=[];for(let c of Object.keys(r.children))c===`primary`?i.unshift(c):i.push(c);let s=[];for(let c of i){let l=r.children[c],u=jM(n,c),d=await this.processSegment(t,u,l,l.segments,c,!0,o);d instanceof be&&s.push(d)}let a=$v(s);return GM(a),a}async processSegment(t,n,r,o,i,s,a){for(let c of n)try{return await this.processSegmentAgainstRoute(c._injector??t,n,c,r,o,i,s,a)}catch(l){if(l instanceof ut||Lv(l))continue;throw l}if(zM(r,o))return new uf;throw new ut(r)}async processSegmentAgainstRoute(t,n,r,o,i,s,a,c){if(Je(r)!==s&&(s===M||!gc(o,i,r)||!r.children?.length&&!r.loadChildren||i.length===0&&!o.hasChildren()))throw new ut(o);if(r.redirectTo===void 0)return this.matchSegmentAgainstRoute(t,o,r,i,s,c);if(this.allowRedirects&&a)return this.expandSegmentAgainstRouteUsingRedirect(t,o,n,r,i,s,c);throw new ut(o)}async expandSegmentAgainstRouteUsingRedirect(t,n,r,o,i,s,a){let{matched:c,parameters:l,consumedSegments:u,positionalParamSegments:d,remainingSegments:h}=Vv(n,o,i);if(!c)throw new ut(n);let f=this.createSnapshot(t,o,i,l,a);if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let g=await this.applyRedirects.applyRedirectCommands(u,o.redirectTo,d,Hv(f),t),D=await this.applyRedirects.lineralizeSegments(o,g);return this.processSegment(t,r,n,D.concat(h),s,!1,a)}createSnapshot(t,n,r,o,i){let s=new Vr(r,o,this.queryParams,this.urlTree.fragment,YM(n),Je(n),n.component??n._loadedComponent??null,n,KM(n),t),a=gf(s,i,this.paramsInheritanceStrategy);return s.params=a.params,s.data=a.data,s}async matchSegmentAgainstRoute(t,n,r,o,i,s){if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let a=ge=>this.createSnapshot(t,r,ge.consumedSegments,ge.parameters,s),c=await Ya(UM(n,r,o,t,this.urlSerializer,a,this.abortSignal));if(r.path===`**`&&(n.children={}),!c?.matched)throw new ut(n);t=r._injector??t;let{routes:l}=await this.getChildConfig(t,r,o),u=r._loadedInjector??t,{parameters:d,consumedSegments:h,remainingSegments:f}=c,g=this.createSnapshot(t,r,h,d,s),{segmentGroup:D,slicedSegments:E}=lv(n,h,f,l,i),_=Je(r)===i;if(_&&E.length===0&&D.hasChildren())return new be(g,await this.processChildren(u,l,D,g));if(_&&l.length===0&&E.length===0)return new be(g,[]);let O=await this.processSegment(u,l,D,E,_?M:i,!0,g);if(!_&&!(O instanceof be))throw new ut(n);return new be(g,O instanceof be?[O]:[])}async getChildConfig(t,n,r){if(n.children)return{routes:n.children,injector:t};if(n.loadChildren){if(n._loadedRoutes!==void 0){let i=n._loadedNgModuleFactory;return i&&!n._loadedInjector&&(n._loadedInjector=i.create(t).injector),{routes:n._loadedRoutes,injector:n._loadedInjector}}if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);if(await Ya(AM(t,n,r,this.urlSerializer,this.abortSignal))){let i=await this.configLoader.loadChildren(t,n);return n._loadedRoutes=i.routes,n._loadedInjector=i.injector,n._loadedNgModuleFactory=i.factory,i}throw PM(n)}return{routes:[],injector:t}}};function GM(e){e.sort((t,n)=>t.value.outlet===M?-1:n.value.outlet===M?1:t.value.outlet.localeCompare(n.value.outlet))}function QM(e){let t=e.value.routeConfig;return t&&t.path===``}function $v(e){let t=[],n=new Set;for(let o of e){if(!QM(o)){t.push(o);continue}let i=t.find(s=>o.value.routeConfig===s.value.routeConfig);i!==void 0?(i.children.push(...o.children),n.add(i)):t.push(o)}for(let o of n){let i=$v(o.children);t.push(new be(o.value,i))}let r=t.filter(o=>!n.has(o));return ZM(r),r}function ZM(e){let t=Object.create(null);e.forEach(n=>{let r=t[n.value.outlet];if(r){r.url.map(s=>s.toString()).join(`/`);n.value.url.map(s=>s.toString()).join(`/`);throw new y(4006,!1)}t[n.value.outlet]=n.value})}function YM(e){return e.data||{}}function KM(e){return e.resolve||{}}function XM(e,t,n,r,o,i,s){return me(async a=>{let{state:c,tree:l$4}=await WM(e,t,n,r,a.extractedUrl,o,i,s);return m(l({},a),{targetSnapshot:c,urlAfterRedirects:l$4})})}function JM(e){return me(t=>{let{targetSnapshot:n,guards:{canActivateChecks:r}}=t;if(!r.length)return R(t);let o=new Set(r.map(a=>a.route)),i=new Set;for(let a of o)if(!i.has(a))for(let c of Bv(a))i.add(c);let s=0;return te(i).pipe(pn(a=>o.has(a)?e_(a,n,e):(a.data=gf(a,a.parent,e).resolve,R(void 0))),Le(()=>s++),es(1),me(a=>s===i.size?R(t):le))})}function Bv(e){return[e,...e.children.map(n=>Bv(n)).flat()]}function e_(e,t,n){let r=e.routeConfig,o=e._resolve;return r?.title!==void 0&&!Nv(r)&&(o[Ti]=r.title),eo(()=>(e.data=gf(e,e.parent,n).resolve,t_(o,e,t).pipe($(i=>(e._resolvedData=i,e.data=l(l({},e.data),i),null)))))}function t_(e,t,n){let r=Xd(e);if(r.length===0)return R({});let o={};return te(r).pipe(me(i=>n_(e[i],t,n).pipe(gt(),Le(s=>{if(s instanceof Yn)throw yi(new an,s);o[i]=s}))),es(1),$(()=>o),hn(i=>Lv(i)?le:xc(i)))}function n_(e,t,n){let r=t._environmentInjector,o=Gr(e,r);return Kn(o.resolve?o.resolve(t,n):oe(r,()=>o(t,n)))}var If=new v(``);function ff(e){return Te(t=>{let n=e(t);return n?te(n).pipe($(()=>t)):R(t)})}var wf=(()=>{class e{buildTitle(n){let r,o=n.root;for(;o!==void 0;)r=this.getResolvedTitleForRoute(o)??r,o=o.children.find(i=>i.outlet===M);return r}getResolvedTitleForRoute(n){return n.data[Ti]}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:()=>p(zv)})}return e})();var zv=(()=>{class e extends wf{title;constructor(n){super(),this.title=n}updateTitle(n){let r=this.buildTitle(n);r!==void 0&&this.title.setTitle(r)}static ɵfac=function(r){return new(r||e)(S(rv))};static ɵprov=T({token:e,factory:e.ɵfac,providedIn:`root`})}return e})();var Qr=new v(``,{factory:()=>({})});var Ni=new v(``);var Wv=(()=>{class e{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=p(Cd);async loadComponent(n,r){if(this.componentLoaders.get(r))return this.componentLoaders.get(r);if(r._loadedComponent)return Promise.resolve(r._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(r);let o=(async()=>{try{let s=await Gv(Nd(await hv(oe(n,()=>r.loadComponent()))));return this.onLoadEndListener&&this.onLoadEndListener(r),r._loadedComponent=s,s}finally{this.componentLoaders.delete(r)}})();return this.componentLoaders.set(r,o),o}loadChildren(n,r){if(this.childrenLoaders.get(r))return this.childrenLoaders.get(r);if(r._loadedRoutes)return Promise.resolve({routes:r._loadedRoutes,injector:r._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(r);let o=(async()=>{try{let i=await qv(r,this.compiler,n,this.onLoadEndListener);return r._loadedRoutes=i.routes,r._loadedInjector=i.injector,r._loadedNgModuleFactory=i.factory,i}finally{this.childrenLoaders.delete(r)}})();return this.childrenLoaders.set(r,o),o}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();async function qv(e,t,n,r){let i=await Gv(Nd(await hv(oe(n,()=>e.loadChildren())))),s;i instanceof wa||Array.isArray(i)?s=i:s=await t.compileModuleAsync(i),r&&r(e);let a,c,u;return Array.isArray(s)?c=s:(a=s.create(n).injector,u=s,c=a.get(Ni,[],{optional:!0,self:!0}).flat()),{routes:c.map(Ef),injector:a,factory:u}}async function Gv(e){return e}var mc=(()=>{class e{static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:()=>p(r_)})}return e})();var r_=(()=>{class e{shouldProcessUrl(n){return!0}extract(n){return n}merge(n,r){return n}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();var Qv=new v(``);var o_=()=>{};var Zv=new v(``);var Df=(()=>{class e{currentNavigation=k(null,{equal:()=>!1});currentTransition=null;lastSuccessfulNavigation=k(null);events=new ee;transitionAbortWithErrorSubject=new ee;configLoader=p(Wv);environmentInjector=p(K);destroyRef=p(ve);urlSerializer=p(Xn);rootContexts=p(Qn);location=p(Bn);inputBindingEnabled=p(Mi,{optional:!0})!==null;titleStrategy=p(wf);options=p(Qr,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||aM;urlHandlingStrategy=p(mc);createViewTransition=p(Qv,{optional:!0});navigationErrorHandler=p(Zv,{optional:!0});routerResourcesFeature=p(If,{optional:!0});navigationId=0;get hasRequestedNavigation(){return this.navigationId!==0}transitions;afterPreactivation=()=>R(void 0);rootComponentType=null;destroyed=!1;constructor(){let n=o=>this.events.next(new ac(o)),r=o=>this.events.next(new cc(o));this.configLoader.onLoadEndListener=r,this.configLoader.onLoadStartListener=n,this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(n){let r=++this.navigationId;F(()=>{this.transitions?.next(m(l({},n),{extractedUrl:this.urlHandlingStrategy.extract(n.rawUrl),targetSnapshot:null,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null,id:r,routesRecognizeHandler:{},beforeActivateHandler:{}}))})}setupNavigations(n){return this.transitions=new ce(null),this.transitions.pipe(Pe(r=>r!==null),Te(r=>{let o=!0,i=!1,s=new AbortController,a=()=>!i&&this.currentTransition?.id===r.id;return R(r).pipe(Te(c=>{if(this.navigationId>r.id)return this.cancelNavigationTransition(r,``,pe.SupersededByNewNavigation),le;this.currentTransition=r;let l$5=this.lastSuccessfulNavigation();this.currentNavigation.set({id:c.id,initialUrl:c.rawUrl,extractedUrl:c.extractedUrl,targetBrowserUrl:typeof c.extras.browserUrl==`string`?this.urlSerializer.parse(c.extras.browserUrl):c.extras.browserUrl,trigger:c.source,extras:c.extras,previousNavigation:l$5?m(l({},l$5),{previousNavigation:null}):null,abort:()=>s.abort(),routesRecognizeHandler:c.routesRecognizeHandler,beforeActivateHandler:c.beforeActivateHandler});let u=!n.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),d=c.extras.onSameUrlNavigation??n.onSameUrlNavigation;if(!u&&d!==`reload`)return this.events.next(new ft(c.id,this.urlSerializer.serialize(c.rawUrl),``,$r.IgnoredSameUrlNavigation)),c.resolve(!1),le;if(this.urlHandlingStrategy.shouldProcessUrl(c.rawUrl))return R(c).pipe(Te(h=>(this.events.next(new ln(h.id,this.urlSerializer.serialize(h.extractedUrl),h.source,h.restoredState)),h.id!==this.navigationId?le:Promise.resolve(h))),XM(this.environmentInjector,this.configLoader,this.rootComponentType,n.config,this.urlSerializer,this.paramsInheritanceStrategy,s.signal),Le(h=>{r.targetSnapshot=h.targetSnapshot,r.urlAfterRedirects=h.urlAfterRedirects,this.currentNavigation.update(f=>(f.finalUrl=h.urlAfterRedirects,f)),this.events.next(new bi)}),Te(h=>te(r.routesRecognizeHandler.deferredHandle??R(void 0)).pipe($(()=>h))),Le(()=>{let h=new Di(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);this.events.next(h)}));if(u&&this.urlHandlingStrategy.shouldProcessUrl(c.currentRawUrl)){let{id:h,extractedUrl:f,source:g,restoredState:D,extras:E}=c,_=new ln(h,this.urlSerializer.serialize(f),g,D);this.events.next(_);let O=Mv(this.rootComponentType,this.environmentInjector).snapshot;return this.currentTransition=r=m(l({},c),{targetSnapshot:O,urlAfterRedirects:f,extras:m(l({},E),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.update(ge=>(ge.finalUrl=f,ge)),R(r)}else return this.events.next(new ft(c.id,this.urlSerializer.serialize(c.extractedUrl),``,$r.IgnoredByUrlHandlingStrategy)),c.resolve(!1),le}),$(c=>{let l$6=new rc(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);return this.events.next(l$6),this.currentTransition=r=m(l({},c),{guards:hM(c.targetSnapshot,c.currentSnapshot,this.rootContexts)}),r}),SM(c=>this.events.next(c)),Te(c=>{if(r.guardsResult=c.guardsResult,c.guardsResult&&typeof c.guardsResult!=`boolean`)throw yi(this.urlSerializer,c.guardsResult);let l=new oc(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot,!!c.guardsResult);if(this.events.next(l),!a())return le;if(!c.guardsResult)return this.cancelNavigationTransition(c,``,pe.GuardRejected),le;if(c.guards.canActivateChecks.length===0)return R(c);let u=new ic(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);if(this.events.next(u),!a())return le;let d=!1;return R(c).pipe(JM(this.paramsInheritanceStrategy),Le({next:()=>{d=!0;let h=new sc(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);this.events.next(h)},complete:()=>{d||this.cancelNavigationTransition(c,``,pe.NoDataFromResolver)}}))}),ff(c=>{let l=d=>{let h=[];if(d.routeConfig?._loadedComponent)d.component=d.routeConfig?._loadedComponent;else if(d.routeConfig?.loadComponent){let f=d._environmentInjector;h.push(this.configLoader.loadComponent(f,d.routeConfig).then(g=>{d.component=g}))}for(let f of d.children)h.push(...l(f));return h},u=l(c.targetSnapshot.root);return u.length===0?R(c):te(Promise.all(u).then(()=>c))}),Te(c=>{let{newlyCreatedRoutes:l$7,state:u}=lM(n.routeReuseStrategy,c.targetSnapshot,c.currentRouterState);return this.currentTransition=r=c=m(l({},c),{targetRouterState:u,newlyCreatedRoutes:l$7}),this.currentNavigation.update(d=>(d.targetRouterState=u,d)),R(c)}),this.routerResourcesFeature?.setupAndRunResources(s.signal)??(c=>c),ff(()=>this.afterPreactivation()),Te(()=>{let{currentSnapshot:c,targetSnapshot:l}=r,u=this.createViewTransition?.(this.environmentInjector,c.root,l.root,r.hasUAVisualTransition);return u?te(u).pipe($(()=>r)):R(r)}),pt(1),Te(c=>{o=!1,this.events.next(new zr);let l=r.beforeActivateHandler.deferredHandle;return l?te(l.then(()=>c)):R(c)}),Le(c=>{new af(n.routeReuseStrategy,r.targetRouterState,r.currentRouterState,l=>this.events.next(l),this.inputBindingEnabled).activate(this.rootContexts),c.newlyCreatedRoutes?.clear(),a()&&(Yv(c.targetRouterState),i=!0,this.currentNavigation.update(l=>(l.abort=o_,l)),this.lastSuccessfulNavigation.set(F(this.currentNavigation)),this.events.next(new ze(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects))),this.titleStrategy?.updateTitle(c.targetRouterState.snapshot),c.resolve(!0))}),no(Fv(s.signal).pipe(Pe(()=>!i&&o),Le(()=>{this.cancelNavigationTransition(r,s.signal.reason+``,pe.Aborted)}))),Le({complete:()=>{i=!0}}),no(this.transitionAbortWithErrorSubject.pipe(Le(c=>{throw c}))),to(()=>{s.abort(),i||this.cancelNavigationTransition(r,``,pe.SupersededByNewNavigation),this.currentTransition?.id===r.id&&(this.currentNavigation.set(null),this.currentTransition=null)}),hn(c=>{if(i=!0,uv(r),this.destroyed)return r.resolve(!1),le;if(c instanceof Yn&&(c=yi(this.urlSerializer,c)),Pv(c))this.events.next(new Be(r.id,this.urlSerializer.serialize(r.extractedUrl),c.message,c.cancellationCode)),fM(c)?this.events.next(new Wr(c.url,c.navigationBehaviorOptions)):r.resolve(!1);else{let l=new Zn(r.id,this.urlSerializer.serialize(r.extractedUrl),c,r.targetSnapshot??void 0);try{let u=oe(this.environmentInjector,()=>this.navigationErrorHandler?.(l));if(u instanceof Yn){let{message:d,cancellationCode:h}=yi(this.urlSerializer,u);this.events.next(new Be(r.id,this.urlSerializer.serialize(r.extractedUrl),d,h)),this.events.next(new Wr(u.redirectTo,u.navigationBehaviorOptions))}else throw this.events.next(l),c}catch(u){this.options.resolveNavigationPromiseOnError?r.resolve(!1):r.reject(u)}}return le}))}))}cancelNavigationTransition(n,r,o){uv(n);let i=new Be(n.id,this.urlSerializer.serialize(n.extractedUrl),r,o);this.events.next(i),n.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){let n=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),r=F(this.currentNavigation),o=r?.targetBrowserUrl??r?.extractedUrl;return n.toString()!==o?.toString()&&!r?.extras.skipLocationChange}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();function i_(e){return e!==jr}function uv(e){for(let t of e.newlyCreatedRoutes??[])t._localInjector?.destroy(),t._localInjector=void 0;Yv(e.targetRouterState)}function Yv(e){if(!e)return;let t=n=>{n.value.pending?.set(!1),n.children.forEach(t)};t(e._root)}var Kv=new v(``);var Xv=(()=>{class e{static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:()=>p(s_)})}return e})();var pc=class{shouldDetach(t){return!1}store(t,n){}shouldAttach(t){return!1}retrieve(t){return null}shouldReuseRoute(t,n){return t.routeConfig===n.routeConfig}shouldDestroyInjector(t){return!0}};var s_=(()=>{class e extends pc{static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();var yc=(()=>{class e{urlSerializer=p(Xn);options=p(Qr,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||`replace`;location=p(Bn);urlHandlingStrategy=p(mc);urlUpdateStrategy=this.options.urlUpdateStrategy||`deferred`;currentUrlTree=new Se;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}createBrowserPath({finalUrl:n,initialUrl:r,targetBrowserUrl:o}){let i=n!==void 0?this.urlHandlingStrategy.merge(n,r):r,s=o??i;return s instanceof Se?this.urlSerializer.serialize(s):s}routerUrlState(n){return n?.targetBrowserUrl===void 0||n?.finalUrl===void 0?{}:{ɵrouterUrl:this.urlSerializer.serialize(n.finalUrl)}}commitTransition({targetRouterState:n,finalUrl:r,initialUrl:o}){r&&n?(this.currentUrlTree=r,this.rawUrlTree=this.urlHandlingStrategy.merge(r,o),this.routerState=n):this.rawUrlTree=o}routerState=Mv(null,p(K));getRouterState(){return this.routerState}_stateMemento=this.createStateMemento();get stateMemento(){return this._stateMemento}updateStateMemento(){this._stateMemento=this.createStateMemento()}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}restoredState(){return this.location.getState()}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:()=>p(a_)})}return e})();var a_=(()=>{class e extends yc{currentPageId=0;lastSuccessfulId=-1;get browserPageId(){return this.canceledNavigationResolution!==`computed`?this.currentPageId:this.restoredState()?.ɵrouterPageId??this.currentPageId}registerNonRouterCurrentEntryChangeListener(n){return this.location.subscribe(r=>{r.type===`popstate`&&setTimeout(()=>{n(r.url,r.state,`popstate`,{replaceUrl:!0},r.hasUAVisualTransition)})})}handleRouterEvent(n,r){n instanceof ln?this.updateStateMemento():n instanceof ft?this.commitTransition(r):n instanceof Di?this.urlUpdateStrategy===`eager`&&(r.extras.skipLocationChange||this.setBrowserUrl(this.createBrowserPath(r),r)):n instanceof zr?(this.commitTransition(r),this.urlUpdateStrategy===`deferred`&&!r.extras.skipLocationChange&&this.setBrowserUrl(this.createBrowserPath(r),r)):n instanceof Be?Av(n)?n.code===pe.Redirect&&this.routerState===r.targetRouterState&&this.resetInternalState(r):this.restoreHistory(r):n instanceof Zn?this.restoreHistory(r,!0):n instanceof ze&&(this.lastSuccessfulId=n.id,this.currentPageId=this.browserPageId)}setBrowserUrl(n,r){let{extras:o,id:i}=r,{replaceUrl:s,state:a}=o;if(this.location.isCurrentPathEqualTo(n)||s){let c=this.browserPageId,l$8=l(l({},a),this.generateNgRouterState(i,c,r));this.location.replaceState(n,``,l$8)}else{let c=l(l({},a),this.generateNgRouterState(i,this.browserPageId+1,r));this.location.go(n,``,c)}}restoreHistory(n,r=!1){if(this.canceledNavigationResolution===`computed`){let o=this.browserPageId,i=this.currentPageId-o;i!==0?this.location.historyGo(i):this.getCurrentUrlTree()===n.finalUrl&&i===0&&(this.resetInternalState(n),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution===`replace`&&(r&&this.resetInternalState(n),this.resetUrlToCurrentUrlTree())}resetInternalState({finalUrl:n}){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,n??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()),``,this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(n,r,o){return this.canceledNavigationResolution===`computed`?l({navigationId:n,ɵrouterPageId:r},this.routerUrlState(o)):l({navigationId:n},this.routerUrlState(o))}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();function bf(e,t){e.events.pipe(Pe(n=>n instanceof ze||n instanceof Be||n instanceof Zn||n instanceof ft),$(n=>n instanceof ze||n instanceof ft?0:(n instanceof Be?n.code===pe.Redirect||n.code===pe.SupersededByNewNavigation:!1)?2:1),Pe(n=>n!==2),pt(1)).subscribe(()=>{t()})}var Jn=(()=>{class e{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=p(ba);stateManager=p(yc);options=p(Qr,{optional:!0})||{};pendingTasks=p(bt);urlUpdateStrategy=this.options.urlUpdateStrategy||`deferred`;navigationTransitions=p(Df);urlSerializer=p(Xn);location=p(Bn);urlHandlingStrategy=p(mc);injector=p(K);_events=new ee;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=p(Xv);injectorCleanup=p(Kv,{optional:!0});onSameUrlNavigation=this.options.onSameUrlNavigation||`ignore`;config=p(Ni,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!p(Mi,{optional:!0});currentNavigation=this.navigationTransitions.currentNavigation.asReadonly();constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this).subscribe({error:n=>{}}),this.subscribeToNavigationEvents()}eventsSubscription=new ae;subscribeToNavigationEvents(){let n=this.navigationTransitions.events.subscribe(r=>{try{let o=this.navigationTransitions.currentTransition,i=F(this.navigationTransitions.currentNavigation);if(o!==null&&i!==null){if(this.stateManager.handleRouterEvent(r,i),r instanceof Be&&r.code!==pe.Redirect&&r.code!==pe.SupersededByNewNavigation)this.navigated=!0;else if(r instanceof ze)this.navigated=!0,this.injectorCleanup?.(this.routeReuseStrategy,this.routerState,this.config);else if(r instanceof Wr){let s=r.navigationBehaviorOptions,a=this.urlHandlingStrategy.merge(r.url,o.currentRawUrl),c=l({scroll:o.extras.scroll,browserUrl:o.extras.browserUrl,info:o.extras.info,skipLocationChange:o.extras.skipLocationChange,replaceUrl:o.extras.replaceUrl||this.urlUpdateStrategy===`eager`||i_(o.source)},s);this.scheduleNavigation(a,jr,null,c,o.hasUAVisualTransition,{resolve:o.resolve,reject:o.reject,promise:o.promise})}}cM(r)&&this._events.next(r)}catch(o){this.navigationTransitions.transitionAbortWithErrorSubject.next(o)}});this.eventsSubscription.add(n)}resetRootComponentType(n){this.routerState.root.component=n,this.navigationTransitions.rootComponentType=n}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),jr,this.stateManager.restoredState(),{replaceUrl:!0})}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((n,r,o,i,s)=>{this.navigateToSyncWithBrowser(n,o,r,i,s)})}navigateToSyncWithBrowser(n,r,o,i,s){let a=o?.navigationId?o:null,c=o?.ɵrouterUrl??n;if(o?.ɵrouterUrl&&(i=m(l({},i),{browserUrl:n})),o){let u=l({},o);delete u.navigationId,delete u.ɵrouterPageId,delete u.ɵrouterUrl,Object.keys(u).length!==0&&(i.state=u)}let l$9=this.parseUrl(c);this.scheduleNavigation(l$9,r,a,i,s).catch(u=>{this.disposed||this.injector.get(Ve)(u)})}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return F(this.navigationTransitions.currentNavigation)}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(n){this.config=n.map(Ef),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription?.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0,this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(n,r={}){let{relativeTo:o,queryParams:i,fragment:s,queryParamsHandling:a,preserveFragment:c}=r,l$10=c?this.currentUrlTree.fragment:s,u=null;switch(a??this.options.defaultQueryParamsHandling){case`merge`:u=l(l({},this.currentUrlTree.queryParams),i);break;case`preserve`:u=this.currentUrlTree.queryParams;break;default:u=i||null}u!==null&&(u=this.removeEmptyProps(u));let d;try{d=bv(o?o.snapshot:this.routerState.snapshot.root)}catch{(typeof n[0]!=`string`||n[0][0]!==`/`)&&(n=[]),d=this.currentUrlTree.root}return Sv(d,n,u,l$10??null,this.urlSerializer)}navigateByUrl(n,r={skipLocationChange:!1}){let o=cn(n)?n:this.parseUrl(n),i=this.urlHandlingStrategy.merge(o,this.rawUrlTree);return this.scheduleNavigation(i,jr,null,r)}navigate(n,r={skipLocationChange:!1}){return c_(n),this.navigateByUrl(this.createUrlTree(n,r),r)}serializeUrl(n){return this.urlSerializer.serialize(n)}parseUrl(n){try{return this.urlSerializer.parse(n)}catch{return this.console.warn(Qe(4018,!1)),this.urlSerializer.parse(`/`)}}isActive(n,r){let o;if(r===!0?o=l({},hf):r===!1?o=l({},Hr):o=l(l({},Hr),r),cn(n))return Ka(this.currentUrlTree,n,o);let i=this.parseUrl(n);return Ka(this.currentUrlTree,i,o)}removeEmptyProps(n){return Object.entries(n).reduce((r,[o,i])=>(i!=null&&(r[o]=i),r),{})}scheduleNavigation(n,r,o,i,s,a){if(this.disposed)return Promise.resolve(!1);let c,l,u;a?(c=a.resolve,l=a.reject,u=a.promise):u=new Promise((h,f)=>{c=h,l=f});let d=this.pendingTasks.add();return bf(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(d))}),this.navigationTransitions.handleNavigationRequest({source:r,restoredState:o,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:n,extras:i,hasUAVisualTransition:s,resolve:c,reject:l,promise:u,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),u.catch(Promise.reject.bind(Promise))}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();function c_(e){for(let t=0;t{class e{router=p(Jn);stateManager=p(yc);fragment=k(``);queryParams=k({});path=k(``);serializer=p(Xn);constructor(){this.updateState(),this.router.events?.subscribe(n=>{n instanceof ze&&this.updateState()})}updateState(){let{fragment:n,root:r,queryParams:o}=this.stateManager.getCurrentUrlTree();this.fragment.set(n),this.queryParams.set(o),this.path.set(this.serializer.serialize(new Se(r)))}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();var vc=(()=>{class e{router;route;tabIndexAttribute;renderer;el;locationStrategy;hrefAttributeValue=p(new xa(`href`),{optional:!0});reactiveHref=Md(()=>{if(!this.isAnchorElement)return this.hrefAttributeValue;this.reactiveRouterState.path(),this._preserveFragment()&&this.reactiveRouterState.fragment();let n=r=>r===`preserve`||r===`merge`;return(n(this._queryParamsHandling())||n(this.options?.defaultQueryParamsHandling))&&this.reactiveRouterState.queryParams(),this.computeHref(this.createUrlTree())});get href(){return F(this.reactiveHref)}set href(n){this.reactiveHref.set(n)}set target(n){this._target.set(n)}get target(){return F(this._target)}_target=k(void 0);set queryParams(n){this._queryParams.set(n)}get queryParams(){return F(this._queryParams)}_queryParams=k(void 0,{equal:()=>!1});set fragment(n){this._fragment.set(n)}get fragment(){return F(this._fragment)}_fragment=k(void 0);set queryParamsHandling(n){this._queryParamsHandling.set(n)}get queryParamsHandling(){return F(this._queryParamsHandling)}_queryParamsHandling=k(void 0);set state(n){this._state.set(n)}get state(){return F(this._state)}_state=k(void 0,{equal:()=>!1});set info(n){this._info.set(n)}get info(){return F(this._info)}_info=k(void 0,{equal:()=>!1});set relativeTo(n){this._relativeTo.set(n)}get relativeTo(){return F(this._relativeTo)}_relativeTo=k(void 0);set preserveFragment(n){this._preserveFragment.set(n)}get preserveFragment(){return F(this._preserveFragment)}_preserveFragment=k(!1);set skipLocationChange(n){this._skipLocationChange.set(n)}get skipLocationChange(){return F(this._skipLocationChange)}_skipLocationChange=k(!1);set replaceUrl(n){this._replaceUrl.set(n)}get replaceUrl(){return F(this._replaceUrl)}_replaceUrl=k(!1);browserUrl=rn(void 0);isAnchorElement;onChanges=new ee;applicationErrorHandler=p(Ve);options=p(Qr,{optional:!0});reactiveRouterState=p(l_);constructor(n,r,o,i,s,a){this.router=n,this.route=r,this.tabIndexAttribute=o,this.renderer=i,this.el=s,this.locationStrategy=a;let c=s.nativeElement.tagName?.toLowerCase();this.isAnchorElement=c===`a`||c===`area`||!!(typeof customElements==`object`&&customElements.get(c)?.observedAttributes?.includes?.(`href`))}setTabIndexIfNotOnNativeEl(n){this.tabIndexAttribute!=null||this.isAnchorElement||this.applyAttributeValue(`tabindex`,n)}ngOnChanges(n){this.onChanges.next(this)}routerLinkInput=k(null);set routerLink(n){n==null?(this.routerLinkInput.set(null),this.setTabIndexIfNotOnNativeEl(null)):(cn(n)?this.routerLinkInput.set(n):this.routerLinkInput.set(Array.isArray(n)?n:[n]),this.setTabIndexIfNotOnNativeEl(`0`))}onClick(n,r,o,i,s){let a=this.urlTree;if(a===null||this.isAnchorElement&&(n!==0||r||o||i||s||typeof this.target==`string`&&this.target!=`_self`))return!0;let c=this.browserUrl(),l$11=l({skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info},c!==void 0&&{browserUrl:c});return this.router.navigateByUrl(a,l$11)?.catch(u=>{this.applicationErrorHandler(u)}),!this.isAnchorElement}ngOnDestroy(){}applyAttributeValue(n,r){let o=this.renderer,i=this.el.nativeElement;r!==null?o.setAttribute(i,n,r):o.removeAttribute(i,n)}createUrlTree(){let n=this.routerLinkInput();return n===null||!this.router.createUrlTree?null:cn(n)?n:this.router.createUrlTree(n,{relativeTo:this._relativeTo()!==void 0?this._relativeTo():this.route,queryParams:this._queryParams(),fragment:this._fragment(),queryParamsHandling:this._queryParamsHandling(),preserveFragment:this._preserveFragment()})}get urlTree(){return F(()=>this.createUrlTree())}computeHref(n){return n!==null&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(n))??``:null}static ɵfac=function(r){return new(r||e)(De(Jn),De(Ot),ha(`tabindex`),De(jn),De(Mt),De($n))};static ɵdir=xr({type:e,selectors:[[``,`routerLink`,``]],hostVars:2,hostBindings:function(r,o){r&1&&Ma(`click`,function(s){return o.onClick(s.button,s.ctrlKey,s.shiftKey,s.altKey,s.metaKey)}),r&2&&Ar(`href`,o.reactiveHref(),Qu)(`target`,o._target())},inputs:{target:`target`,queryParams:`queryParams`,fragment:`fragment`,queryParamsHandling:`queryParamsHandling`,state:`state`,info:`info`,relativeTo:`relativeTo`,preserveFragment:[2,`preserveFragment`,`preserveFragment`,si],skipLocationChange:[2,`skipLocationChange`,`skipLocationChange`,si],replaceUrl:[2,`replaceUrl`,`replaceUrl`,si],browserUrl:[1,`browserUrl`],routerLink:`routerLink`},features:[_r]})}return e})();var u_=(()=>{class e{router;element;renderer;cdr;links;classes=[];routerEventsSubscription;linkInputChangesSubscription;_isActive=!1;get isActive(){return this._isActive}routerLinkActiveOptions={exact:!1};ariaCurrentWhenActive;isActiveChange=new ye;link=p(vc,{optional:!0});constructor(n,r,o,i){this.router=n,this.element=r,this.renderer=o,this.cdr=i,this.routerEventsSubscription=n.events.subscribe(s=>{s instanceof ze&&this.update()})}ngAfterContentInit(){R(this.links.changes,R(null)).pipe(ir()).subscribe(n=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();let n=[...this.links.toArray(),this.link].filter(r=>!!r).map(r=>r.onChanges);this.linkInputChangesSubscription=te(n).pipe(ir()).subscribe(r=>{this._isActive!==this.isLinkActive(this.router)(r)&&this.update()})}set routerLinkActive(n){if(n==null){this.classes=[];return}let r=Array.isArray(n)?n:n.split(` `);this.classes=r.filter(o=>!!o)}ngOnChanges(n){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||this.routerLinkActiveOptions===null&&!this._isActive||queueMicrotask(()=>{let n=this.hasActiveLinks();this.classes.forEach(r=>{n?this.renderer.addClass(this.element.nativeElement,r):this.renderer.removeClass(this.element.nativeElement,r)}),n&&this.ariaCurrentWhenActive!==void 0?this.renderer.setAttribute(this.element.nativeElement,`aria-current`,this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,`aria-current`),this._isActive!==n&&(this._isActive=n,this.cdr.markForCheck(),this.isActiveChange.emit(n))})}isLinkActive(n){let r=this.routerLinkActiveOptions;if(r===null)return()=>!1;let o;return r===void 0?o=l({},Hr):d_(r)?o=r:r.exact??!1?o=l({},hf):o=l({},Hr),i=>{let s=i.urlTree;return s?F(pf(s,n,o)):!1}}hasActiveLinks(){let n=this.isLinkActive(this.router);return this.link&&n(this.link)||this.links.some(n)}static ɵfac=function(r){return new(r||e)(De(Jn),De(Mt),De(jn),De(ii))};static ɵdir=xr({type:e,selectors:[[``,`routerLinkActive`,``]],contentQueries:function(r,o,i){if(r&1&&_a(i,vc,5),r&2){let s;wd(s=Dd())&&(o.links=s)}},inputs:{routerLinkActiveOptions:`routerLinkActiveOptions`,ariaCurrentWhenActive:`ariaCurrentWhenActive`,routerLinkActive:`routerLinkActive`},outputs:{isActiveChange:`isActiveChange`},exportAs:[`routerLinkActive`],features:[_r]})}return e})();function d_(e){let t=e;return!!(t.paths||t.matrixParams||t.queryParams||t.fragment)}var Jv=new v(``);var f_=(()=>{class e{options;routerEventsSubscription;scrollEventsSubscription;lastId=0;lastSource=jr;restoredId=0;store={};isHydrating=p(Vu,{optional:!0})??!1;urlSerializer=p(Xn);zone=p(de);viewportScroller=p(Oy);transitions=p(Df);constructor(n){this.options=n,this.options.scrollPositionRestoration||=`disabled`,this.options.anchorScrolling||=`disabled`,this.isHydrating&&p(en).whenStable().then(()=>{this.isHydrating=!1})}init(){this.options.scrollPositionRestoration!==`disabled`&&this.viewportScroller.setHistoryScrollRestoration(`manual`),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(n=>{n instanceof ln?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=n.navigationTrigger,this.restoredId=n.restoredState?n.restoredState.navigationId:0):n instanceof ze?(this.lastId=n.id,this.scheduleScrollEvent(n,this.urlSerializer.parse(n.urlAfterRedirects).fragment)):n instanceof ft&&n.code===$r.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(n,this.urlSerializer.parse(n.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(n=>{if(!(n instanceof Br)||n.scrollBehavior===`manual`)return;let r={behavior:`instant`};n.position?this.options.scrollPositionRestoration===`top`?this.viewportScroller.scrollToPosition([0,0],r):this.options.scrollPositionRestoration===`enabled`&&this.viewportScroller.scrollToPosition(n.position,r):n.anchor&&this.options.anchorScrolling===`enabled`?this.viewportScroller.scrollToAnchor(n.anchor):this.options.scrollPositionRestoration!==`disabled`&&this.viewportScroller.scrollToPosition([0,0])})}scheduleScrollEvent(n,r){if(this.isHydrating)return;let o=F(this.transitions.currentNavigation)?.extras.scroll;this.zone.runOutsideAngular(async()=>{await new Promise(i=>{setTimeout(i),typeof requestAnimationFrame<`u`&&requestAnimationFrame(i)}),this.zone.run(()=>{this.transitions.events.next(new Br(n,this.lastSource===`popstate`?this.store[this.restoredId]:null,r,o))})})}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static ɵfac=function(r){Ko()};static ɵprov=T({token:e,factory:e.ɵfac})}return e})();function h_(e,...t){return tt([{provide:Ni,multi:!0,useValue:e},{provide:Ot,useFactory:p_},{provide:ti,multi:!0,useFactory:m_},t.map(n=>n.ɵproviders)])}function p_(){return p(Jn).routerState.root}function eE(e,t){return{ɵkind:e,ɵproviders:t}}function g_(e={}){return eE(4,[{provide:Jv,useFactory:()=>new f_(e)}])}function m_(){let e=p(_e);return t=>{let n=e.get(en);if(t!==n.components[0])return;let r=e.get(Jn),o=e.get(y_);e.get(v_)===1&&r.initialNavigation(),e.get(E_,null,{optional:!0})?.setUpPreloading(),e.get(Jv,null,{optional:!0})?.init(),r.resetRootComponentType(n.componentTypes[0]),o.closed||(o.next(),o.complete(),o.unsubscribe())}}var y_=new v(``,{factory:()=>new ee});var v_=new v(``,{factory:()=>1});var E_=new v(``);function I_(e={}){return eE(8,[{provide:Mi,useFactory:()=>new xv(e,p(If,{optional:!0}))}])}var tE=`forge-portal/prefs/v1`;var Ec=`forge-portal/Prefs/v1`;var Sf={schema:Ec,density:`comfortable`,motion:`system`,navCollapsed:!1,lastRoute:null,dismissedHints:[],pageFilters:{}};var w_=new Set([`comfortable`,`compact`]);var D_=new Set([`system`,`full`,`reduced`]);function oE(e){return typeof e==`string`&&e.startsWith(`/`)&&!e.startsWith(`//`)&&e.length<=300}function b_(e){if(!e||typeof e!=`object`)return null;let t=e;if(t.schema!==Ec)return null;let n=t.density===void 0?`comfortable`:t.density,r=t.motion===void 0?`system`:t.motion,o=t.navCollapsed===void 0?!1:t.navCollapsed;if(!w_.has(n)||!D_.has(r)||typeof o!=`boolean`)return null;let i=oE(t.lastRoute)?t.lastRoute:null,s=Array.isArray(t.dismissedHints)?t.dismissedHints.filter(c=>typeof c==`string`):[],a={};if(t.pageFilters&&typeof t.pageFilters==`object`)for(let[c,l]of Object.entries(t.pageFilters))typeof l==`string`&&l.length<=300&&(a[c]=l);return{schema:Ec,density:n,motion:r,navCollapsed:o,lastRoute:i,dismissedHints:s,pageFilters:a}}function nE(){try{return globalThis.localStorage??null}catch{return null}}var S_={dashboard:`nav.dashboard`,guide:`nav.guide`,federation:`nav.federation`,forges:`nav.forges`,agents:`nav.agents`,skills:`nav.skills`,mcp:`nav.mcp`,knowledge:`nav.knowledge`,match:`nav.match`,tasks:`nav.tasks`,install:`nav.install`,profiles:`nav.profiles`,hosts:`nav.hosts`,config:`nav.config`,graph:`nav.graph`,observe:`nav.observe`,execution:`nav.execution`,lab:`nav.lab`,versions:`nav.versions`,settings:`nav.settings`};function q$(e){return S_[e.replace(/^\//,``).split(/[/?#]/)[0]]??null}var rE=class e{density=k(Sf.density);motion=k(Sf.motion);navCollapsed=k(Sf.navCollapsed);lastRoute=k(null);dismissedHints=k([]);pageFilters=k({});media=globalThis.matchMedia?.(`(prefers-reduced-motion: reduce)`);constructor(){let t=this.read();t&&(this.density.set(t.density),this.motion.set(t.motion),this.navCollapsed.set(t.navCollapsed),this.lastRoute.set(t.lastRoute),this.dismissedHints.set(t.dismissedHints),this.pageFilters.set(t.pageFilters)),this.media?.addEventListener(`change`,()=>this.apply()),Oo(()=>{this.persist(),this.apply()}),this.apply()}setDensity(t){this.density.set(t)}setMotion(t){this.motion.set(t)}setNavCollapsed(t){this.navCollapsed.set(t)}recordRoute(t){oE(t)&&this.lastRoute.set(t)}filterFor(t){return this.pageFilters()[t]??``}setFilter(t,n){let r=F(()=>this.pageFilters());if(n?r[t]===n:!(t in r))return;let o=l({},r);n?o[t]=n:delete o[t],this.pageFilters.set(o)}isHintDismissed(t){return this.dismissedHints().includes(t)}dismissHint(t){F(()=>this.isHintDismissed(t))||this.dismissedHints.set([...F(()=>this.dismissedHints()),t])}resetHints(){F(()=>this.dismissedHints()).length!==0&&this.dismissedHints.set([])}persist(){let t=nE();if(!t)return;let n={schema:Ec,density:this.density(),motion:this.motion(),navCollapsed:this.navCollapsed(),lastRoute:this.lastRoute(),dismissedHints:[...this.dismissedHints()],pageFilters:l({},this.pageFilters())};try{t.setItem(tE,JSON.stringify(n))}catch{}}read(){let t=nE();if(!t)return null;try{let n=t.getItem(tE);return n?b_(JSON.parse(n)):null}catch{return null}}apply(){let t=globalThis.document?.documentElement;t&&(t.dataset.density=this.density(),t.dataset.motion=this.motion())}static ɵfac=function(n){return new(n||e)};static ɵprov=T({token:e,factory:e.ɵfac,providedIn:`root`})};var iE=`forge-portal.locale`;var sE={"pt-BR":()=>import(`./chunk-DsEeBzOB.js`).then(e=>e.PT_BR),en:()=>import(`./chunk-O1vNs89S.js`).then(e=>e.EN)};var Ic=class e{dict=k(new Map);fallbackDict=k(new Map);preference=k(`automatic`);locale=k(`pt-BR`);ready=k(!1);missingKeys=k([]);constructor(){let t=this.readStoredPreference();this.applyPreference(t)}readStoredPreference(){try{let t=globalThis.localStorage?.getItem(iE);if(t===`pt-BR`||t===`en`||t===`automatic`)return t}catch{}return`automatic`}async applyPreference(t){this.preference.set(t);let n=t===`automatic`?this.detectLocale():t;this.locale.set(n);try{globalThis.document?.documentElement.setAttribute(`lang`,n),globalThis.localStorage?.setItem(iE,t)}catch{}this.fallbackDict().size===0&&this.fallbackDict.set(new Map(Object.entries(await sE[`pt-BR`]()))),this.dict.set(new Map(Object.entries(await sE[n]()))),this.ready.set(!0),this.collectMissing()}detectLocale(){return(globalThis.navigator?.language??`pt-BR`).toLowerCase().startsWith(`pt`)?`pt-BR`:`en`}collectMissing(){let t=this.dict(),n=[];for(let r of this.fallbackDict().keys())t.has(r)||n.push(r);this.missingKeys.set(n)}t(t,n){let r=this.dict().get(t)??this.fallbackDict().get(t);return r===void 0?`\u27EA${t}\u27EB`:(n&&r.includes(`{`)&&(r=r.replace(/\{(\w+),\s*plural,\s*one\{([^}]*)\}\s*other\{([^}]*)\}\}/g,(o,i,s,a)=>{let c=Number(n[i]);return(c===1?s:a).replace(/#/g,String(c))}),r=r.replace(/\{(\w+)\}/g,(o,i)=>n[i]!==void 0?String(n[i]):o)),r)}translate(t,n){return tn(()=>this.t(t,n))}static ɵfac=function(n){return new(n||e)};static ɵprov=T({token:e,factory:e.ɵfac,providedIn:`root`})};var aE=class e{i18n=p(Ic);transform(t,n){return t?(this.i18n.locale(),this.i18n.ready(),this.i18n.t(t,n)):``}static ɵfac=function(n){return new(n||e)};static ɵpipe=pd({name:`t`,type:e,pure:!1})};var cE=class e{sanitizer=p(Wd);name=rn.required();size=rn(18);strokeWidth=rn(1.75);svg=tn(()=>this.sanitizer.bypassSecurityTrustHtml(t[this.name()]??t.dashboard));static ɵfac=function(n){return new(n||e)};static ɵcmp=ei({type:e,selectors:[[`ui-icon`]],inputs:{name:[1,`name`],size:[1,`size`],strokeWidth:[1,`strokeWidth`]},decls:1,vars:6,consts:[[`viewBox`,`0 0 24 24`,`fill`,`none`,`stroke`,`currentColor`,`stroke-linecap`,`round`,`stroke-linejoin`,`round`,`aria-hidden`,`true`,3,`innerHTML`]],template:function(n,r){n&1&&(As(),Ca(0,`svg`,0)),n&2&&(Na(`width`,r.size(),`px`)(`height`,r.size(),`px`),Ta(`innerHTML`,r.svg(),Gu),Ar(`stroke-width`,r.strokeWidth()))},styles:[`[_nghost-%COMP%]{display:inline-flex;flex-shrink:0;line-height:0}`]})};export{dS as $,ye as $t,PU as A,qm as At,Wm as B,tn as Bt,Mt as C,oC as Ct,Oo as D,pS as Dt,Na as E,p as Et,Sa as F,ry as Ft,Zm as G,v as Gt,Xm as H,ty as Ht,T as I,si as It,aC as J,vd as Jt,_e as K,vI as Kt,TS as L,tC as Lt,RT as M,rE as Mt,Rt as N,rb as Nt,Ot as O,q$ as Ot,SS as P,rn as Pt,cE as Q,yS as Qt,Ta as R,tb as Rt,Ma as S,no as St,NT as T,oy as Tt,Xo as U,uC as Ut,Xb as V,tv as Vt,YS as W,u_ as Wt,ae as X,xT as Xt,aE as Y,ve as Yt,bd as Z,xr as Zt,Jn as _,kU as _t,Bm as a,ey as at,LU as b,mo as bt,Da as c,hD as ct,F as d,h_ as dt,yf as en,da as et,Fg as f,hn as ft,Id as g,k as gt,Ic as h,jn as ht,Ar as i,ei as it,RS as j,rC as jt,Ow as k,qS as kt,De as l,hE as lt,I_ as m,ii as mt,A as n,zn as nn,ds as nt,Ca as o,gS as ot,Hh as p,iC as pt,_r as q,vc as qt,AE as r,ee as rt,DS as s,g_ as st,$ as t,ze as tn,dg as tt,Ed as u,hS as ut,KS as v,lC as vt,NS as w,oT as wt,MS as x,nC as xt,Km as y,mS as yt,Vh as z,te as zt}; \ No newline at end of file diff --git a/portal/assets/chunk-BelLryvf.js b/portal/assets/chunk-BelLryvf.js deleted file mode 100644 index 5bc2ba3..0000000 --- a/portal/assets/chunk-BelLryvf.js +++ /dev/null @@ -1,5 +0,0 @@ -import{i as l,n as t,r as k$1}from"./chunk-DjkjLihA.js";function er(e){let n=e(r=>{Error.call(r),r.stack=new Error().stack});return n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n}var ht=er(e=>function(){e(this),this.name=`EmptyError`,this.message=`no elements in sequence`});function N(e){return typeof e==`function`}var Ri=er(e=>function(n){e(this),this.message=n?`${n.length} errors occurred during unsubscription: -${n.map((r,o)=>`${o+1}) ${r.toString()}`).join(` - `)}`:``,this.name=`UnsubscriptionError`,this.errors=n});function Xr(e,t){if(e){let n=e.indexOf(t);0<=n&&e.splice(n,1)}}var ae=class e{constructor(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let t;if(!this.closed){this.closed=!0;let{_parentage:n}=this;if(n)if(this._parentage=null,Array.isArray(n))for(let i of n)i.remove(this);else n.remove(this);let{initialTeardown:r}=this;if(N(r))try{r()}catch(i){t=i instanceof Ri?i.errors:[i]}let{_finalizers:o}=this;if(o){this._finalizers=null;for(let i of o)try{Sf(i)}catch(s){t=t??[],s instanceof Ri?t=[...t,...s.errors]:t.push(s)}}if(t)throw new Ri(t)}}add(t){var n;if(t&&t!==this)if(this.closed)Sf(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(n=this._finalizers)!==null&&n!==void 0?n:[]).push(t)}}_hasParent(t){let{_parentage:n}=this;return n===t||Array.isArray(n)&&n.includes(t)}_addParent(t){let{_parentage:n}=this;this._parentage=Array.isArray(n)?(n.push(t),n):n?[n,t]:t}_removeParent(t){let{_parentage:n}=this;n===t?this._parentage=null:Array.isArray(n)&&Xr(n,t)}remove(t){let{_finalizers:n}=this;n&&Xr(n,t),t instanceof e&&t._removeParent(this)}};ae.EMPTY=(()=>{let e=new ae;return e.closed=!0,e})();var bc=ae.EMPTY;function xi(e){return e instanceof ae||e&&`closed`in e&&N(e.remove)&&N(e.add)&&N(e.unsubscribe)}function Sf(e){N(e)?e():e.unsubscribe()}var We={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var tr={setTimeout(e,t,...n){let{delegate:r}=tr;return r?.setTimeout?r.setTimeout(e,t,...n):setTimeout(e,t,...n)},clearTimeout(e){let{delegate:t}=tr;return(t?.clearTimeout||clearTimeout)(e)},delegate:void 0};function Ai(e){tr.setTimeout(()=>{let{onUnhandledError:t}=We;if(t)t(e);else throw e})}function Jr(){}var Cf=Sc(`C`,void 0,void 0);function Tf(e){return Sc(`E`,void 0,e)}function Mf(e){return Sc(`N`,e,void 0)}function Sc(e,t,n){return{kind:e,value:t,error:n}}var un=null;function nr(e){if(We.useDeprecatedSynchronousErrorHandling){let t=!un;if(t&&(un={errorThrown:!1,error:null}),e(),t){let{errorThrown:n,error:r}=un;if(un=null,n)throw r}}else e()}function _f(e){We.useDeprecatedSynchronousErrorHandling&&un&&(un.errorThrown=!0,un.error=e)}var dn=class extends ae{constructor(t){super(),this.isStopped=!1,t?(this.destination=t,xi(t)&&t.add(this)):this.destination=fE}static create(t,n,r){return new Lt(t,n,r)}next(t){this.isStopped?Tc(Mf(t),this):this._next(t)}error(t){this.isStopped?Tc(Tf(t),this):(this.isStopped=!0,this._error(t))}complete(){this.isStopped?Tc(Cf,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(t){this.destination.next(t)}_error(t){try{this.destination.error(t)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}};var uE=Function.prototype.bind;function Cc(e,t){return uE.call(e,t)}var Mc=class{constructor(t){this.partialObserver=t}next(t){let{partialObserver:n}=this;if(n.next)try{n.next(t)}catch(r){Oi(r)}}error(t){let{partialObserver:n}=this;if(n.error)try{n.error(t)}catch(r){Oi(r)}else Oi(t)}complete(){let{partialObserver:t}=this;if(t.complete)try{t.complete()}catch(n){Oi(n)}}};var Lt=class extends dn{constructor(t,n,r){super();let o;if(N(t)||!t)o={next:t??void 0,error:n??void 0,complete:r??void 0};else{let i;this&&We.useDeprecatedNextContext?(i=Object.create(t),i.unsubscribe=()=>this.unsubscribe(),o={next:t.next&&Cc(t.next,i),error:t.error&&Cc(t.error,i),complete:t.complete&&Cc(t.complete,i)}):o=t}this.destination=new Mc(o)}};function Oi(e){We.useDeprecatedSynchronousErrorHandling?_f(e):Ai(e)}function dE(e){throw e}function Tc(e,t){let{onStoppedNotification:n}=We;n&&tr.setTimeout(()=>n(e,t))}var fE={closed:!0,next:Jr,error:dE,complete:Jr};function hE(e,t){let n=typeof t==`object`;return new Promise((r,o)=>{let i=new Lt({next:s=>{r(s),i.unsubscribe()},error:o,complete:()=>{n?r(t.defaultValue):o(new ht)}});e.subscribe(i)})}var rr=typeof Symbol==`function`&&Symbol.observable||`@@observable`;function qe(e){return e}function ki(...e){return _c(e)}function _c(e){return e.length===0?qe:e.length===1?e[0]:function(n){return e.reduce((r,o)=>o(r),n)}}var A=class e{constructor(t){t&&(this._subscribe=t)}lift(t){let n=new e;return n.source=this,n.operator=t,n}subscribe(t,n,r){let o=gE(t)?t:new Lt(t,n,r);return nr(()=>{let{operator:i,source:s}=this;o.add(i?i.call(o,s):s?this._subscribe(o):this._trySubscribe(o))}),o}_trySubscribe(t){try{return this._subscribe(t)}catch(n){t.error(n)}}forEach(t,n){return n=Nf(n),new n((r,o)=>{let i=new Lt({next:s=>{try{t(s)}catch(a){o(a),i.unsubscribe()}},error:o,complete:r});this.subscribe(i)})}_subscribe(t){var n;return(n=this.source)===null||n===void 0?void 0:n.subscribe(t)}[rr](){return this}pipe(...t){return _c(t)(this)}toPromise(t){return t=Nf(t),new t((n,r)=>{let o;this.subscribe(i=>o=i,i=>r(i),()=>n(o))})}};A.create=e=>new A(e);function Nf(e){var t;return(t=e??We.Promise)!==null&&t!==void 0?t:Promise}function pE(e){return e&&N(e.next)&&N(e.error)&&N(e.complete)}function gE(e){return e&&e instanceof dn||pE(e)&&xi(e)}function mE(e){return N(e?.lift)}function U(e){return t=>{if(mE(t))return t.lift(function(n){try{return e(n,this)}catch(r){this.error(r)}});throw new TypeError(`Unable to lift unknown Observable type`)}}function H(e,t,n,r,o){return new Nc(e,t,n,r,o)}var Nc=class extends dn{constructor(t,n,r,o,i,s){super(t),this.onFinalize=i,this.shouldUnsubscribe=s,this._next=n?function(a){try{n(a)}catch(c){t.error(c)}}:super._next,this._error=o?function(a){try{o(a)}catch(c){t.error(c)}finally{this.unsubscribe()}}:super._error,this._complete=r?function(){try{r()}catch(a){t.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){let{closed:n}=this;super.unsubscribe(),!n&&((t=this.onFinalize)===null||t===void 0||t.call(this))}}};var Rf=er(e=>function(){e(this),this.name=`ObjectUnsubscribedError`,this.message=`object unsubscribed`});var ee=class extends A{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(t){let n=new Pi(this,this);return n.operator=t,n}_throwIfClosed(){if(this.closed)throw new Rf}next(t){nr(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(let n of this.currentObservers)n.next(t)}})}error(t){nr(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=t;let{observers:n}=this;for(;n.length;)n.shift().error(t)}})}complete(){nr(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;let{observers:t}=this;for(;t.length;)t.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var t;return((t=this.observers)===null||t===void 0?void 0:t.length)>0}_trySubscribe(t){return this._throwIfClosed(),super._trySubscribe(t)}_subscribe(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)}_innerSubscribe(t){let{hasError:n,isStopped:r,observers:o}=this;return n||r?bc:(this.currentObservers=null,o.push(t),new ae(()=>{this.currentObservers=null,Xr(o,t)}))}_checkFinalizedStatuses(t){let{hasError:n,thrownError:r,isStopped:o}=this;n?t.error(r):o&&t.complete()}asObservable(){let t=new A;return t.source=this,t}};ee.create=(e,t)=>new Pi(e,t);var Pi=class extends ee{constructor(t,n){super(),this.destination=t,this.source=n}next(t){var n,r;(r=(n=this.destination)===null||n===void 0?void 0:n.next)===null||r===void 0||r.call(n,t)}error(t){var n,r;(r=(n=this.destination)===null||n===void 0?void 0:n.error)===null||r===void 0||r.call(n,t)}complete(){var t,n;(n=(t=this.destination)===null||t===void 0?void 0:t.complete)===null||n===void 0||n.call(t)}_subscribe(t){var n,r;return(r=(n=this.source)===null||n===void 0?void 0:n.subscribe(t))!==null&&r!==void 0?r:bc}};var ce=class extends ee{constructor(t){super(),this._value=t}get value(){return this.getValue()}_subscribe(t){let n=super._subscribe(t);return!n.closed&&t.next(this._value),n}getValue(){let{hasError:t,thrownError:n,_value:r}=this;if(t)throw n;return this._throwIfClosed(),r}next(t){super.next(this._value=t)}};var le=new A(e=>e.complete());function xf(e){return e&&N(e.schedule)}function Af(e){return e[e.length-1]}function Li(e){return N(Af(e))?e.pop():void 0}function Ft(e){return xf(Af(e))?e.pop():void 0}function kf(e,t,n,r){function o(i){return i instanceof n?i:new n(function(s){s(i)})}return new(n||(n=Promise))(function(i,s){function a(u){try{l(r.next(u))}catch(d){s(d)}}function c(u){try{l(r.throw(u))}catch(d){s(d)}}function l(u){u.done?i(u.value):o(u.value).then(a,c)}l((r=r.apply(e,t||[])).next())})}function Of(e){var t=typeof Symbol==`function`&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length==`number`)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)}function fn(e){return this instanceof fn?(this.v=e,this):new fn(e)}function Pf(e,t,n){if(!Symbol.asyncIterator)throw new TypeError(`Symbol.asyncIterator is not defined.`);var r=n.apply(e,t||[]),o,i=[];return o=Object.create((typeof AsyncIterator==`function`?AsyncIterator:Object).prototype),a(`next`),a(`throw`),a(`return`,s),o[Symbol.asyncIterator]=function(){return this},o;function s(f){return function(g){return Promise.resolve(g).then(f,d)}}function a(f,g){r[f]&&(o[f]=function(w){return new Promise(function(E,_){i.push([f,w,E,_])>1||c(f,w)})},g&&(o[f]=g(o[f])))}function c(f,g){try{l(r[f](g))}catch(w){h(i[0][3],w)}}function l(f){f.value instanceof fn?Promise.resolve(f.value.v).then(u,d):h(i[0][2],f)}function u(f){c(`next`,f)}function d(f){c(`throw`,f)}function h(f,g){f(g),i.shift(),i.length&&c(i[0][0],i[0][1])}}function Lf(e){if(!Symbol.asyncIterator)throw new TypeError(`Symbol.asyncIterator is not defined.`);var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof Of==`function`?Of(e):e[Symbol.iterator](),n={},r(`next`),r(`throw`),r(`return`),n[Symbol.asyncIterator]=function(){return this},n);function r(i){n[i]=e[i]&&function(s){return new Promise(function(a,c){s=e[i](s),o(a,c,s.done,s.value)})}}function o(i,s,a,c){Promise.resolve(c).then(function(l){i({value:l,done:a})},s)}}var Fi=(e=>e&&typeof e.length==`number`&&typeof e!=`function`);function ji(e){return N(e?.then)}function Ui(e){return N(e[rr])}function Hi(e){return Symbol.asyncIterator&&N(e?.[Symbol.asyncIterator])}function Vi(e){return new TypeError(`You provided ${e!==null&&typeof e==`object`?`an invalid object`:`'${e}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}function yE(){return typeof Symbol!=`function`||!Symbol.iterator?`@@iterator`:Symbol.iterator}var $i=yE();function Bi(e){return N(e?.[$i])}function zi(e){return Pf(this,arguments,function*(){let n=e.getReader();try{for(;;){let{value:r,done:o}=yield fn(n.read());if(o)return yield fn(void 0);yield yield fn(r)}}finally{n.releaseLock()}})}function Wi(e){return N(e?.getReader)}function re(e){if(e instanceof A)return e;if(e!=null){if(Ui(e))return vE(e);if(Fi(e))return EE(e);if(ji(e))return IE(e);if(Hi(e))return Ff(e);if(Bi(e))return wE(e);if(Wi(e))return DE(e)}throw Vi(e)}function vE(e){return new A(t=>{let n=e[rr]();if(N(n.subscribe))return n.subscribe(t);throw new TypeError(`Provided object does not correctly implement Symbol.observable`)})}function EE(e){return new A(t=>{for(let n=0;n{e.then(n=>{t.closed||(t.next(n),t.complete())},n=>t.error(n)).then(null,Ai)})}function wE(e){return new A(t=>{for(let n of e)if(t.next(n),t.closed)return;t.complete()})}function Ff(e){return new A(t=>{bE(e,t).catch(n=>t.error(n))})}function DE(e){return Ff(zi(e))}function bE(e,t){var n,r,o,i;return kf(this,void 0,void 0,function*(){try{for(n=Lf(e);r=yield n.next(),!r.done;){let s=r.value;if(t.next(s),t.closed)return}}catch(s){o={error:s}}finally{try{r&&!r.done&&(i=n.return)&&(yield i.call(n))}finally{if(o)throw o.error}}t.complete()})}function Ce(e,t,n,r=0,o=!1){let i=t.schedule(function(){n(),o?e.add(this.schedule(null,r)):this.unsubscribe()},r);if(e.add(i),!o)return i}function qi(e,t=0){return U((n,r)=>{n.subscribe(H(r,o=>Ce(r,e,()=>r.next(o),t),()=>Ce(r,e,()=>r.complete(),t),o=>Ce(r,e,()=>r.error(o),t)))})}function Gi(e,t=0){return U((n,r)=>{r.add(e.schedule(()=>n.subscribe(r),t))})}function jf(e,t){return re(e).pipe(Gi(t),qi(t))}function Uf(e,t){return re(e).pipe(Gi(t),qi(t))}function Hf(e,t){return new A(n=>{let r=0;return t.schedule(function(){r===e.length?n.complete():(n.next(e[r++]),n.closed||this.schedule())})})}function Vf(e,t){return new A(n=>{let r;return Ce(n,t,()=>{r=e[$i](),Ce(n,t,()=>{let o,i;try{({value:o,done:i}=r.next())}catch(s){n.error(s);return}i?n.complete():n.next(o)},0,!0)}),()=>N(r?.return)&&r.return()})}function Qi(e,t){if(!e)throw new Error(`Iterable cannot be null`);return new A(n=>{Ce(n,t,()=>{let r=e[Symbol.asyncIterator]();Ce(n,t,()=>{r.next().then(o=>{o.done?n.complete():n.next(o.value)})},0,!0)})})}function $f(e,t){return Qi(zi(e),t)}function Bf(e,t){if(e!=null){if(Ui(e))return jf(e,t);if(Fi(e))return Hf(e,t);if(ji(e))return Uf(e,t);if(Hi(e))return Qi(e,t);if(Bi(e))return Vf(e,t);if(Wi(e))return $f(e,t)}throw Vi(e)}function te(e,t){return t?Bf(e,t):re(e)}function R(...e){return te(e,Ft(e))}function Rc(e,t){let n=N(e)?e:()=>e,r=o=>o.error(n());return new A(t?o=>t.schedule(r,0,o):r)}function Zi(e){return!!e&&(e instanceof A||N(e.lift)&&N(e.subscribe))}function $(e,t){return U((n,r)=>{let o=0;n.subscribe(H(r,i=>{r.next(e.call(t,i,o++))}))})}var{isArray:SE}=Array;function CE(e,t){return SE(t)?e(...t):e(t)}function Yi(e){return $(t=>CE(e,t))}var{isArray:TE}=Array,{getPrototypeOf:ME,prototype:_E,keys:NE}=Object;function Ki(e){if(e.length===1){let t=e[0];if(TE(t))return{args:t,keys:null};if(RE(t)){let n=NE(t);return{args:n.map(r=>t[r]),keys:n}}}return{args:e,keys:null}}function RE(e){return e&&typeof e==`object`&&ME(e)===_E}function Xi(e,t){return e.reduce((n,r,o)=>(n[r]=t[o],n),{})}function Ji(...e){let t=Ft(e),n=Li(e),{args:r,keys:o}=Ki(e);if(r.length===0)return te([],t);let i=new A(xE(r,t,o?s=>Xi(o,s):qe));return n?i.pipe(Yi(n)):i}function xE(e,t,n=qe){return r=>{zf(t,()=>{let{length:o}=e,i=new Array(o),s=o,a=o;for(let c=0;c{let l=te(e[c],t),u=!1;l.subscribe(H(r,d=>{i[c]=d,u||(u=!0,a--),a||r.next(n(i.slice()))},()=>{--s||r.complete()}))},r)},r)}}function zf(e,t,n){e?Ce(n,e,t):t()}function Wf(e,t,n,r,o,i,s,a){let c=[],l=0,u=0,d=!1,h=()=>{d&&!c.length&&!l&&t.complete()},f=w=>l{i&&t.next(w),l++;let E=!1;re(n(w,u++)).subscribe(H(t,_=>{o?.(_),i?f(_):t.next(_)},()=>{E=!0},void 0,()=>{if(E)try{for(l--;c.length&&lg(_)):g(_)}h()}catch(_){t.error(_)}}))};return e.subscribe(H(t,f,()=>{d=!0,h()})),()=>{a?.()}}function me(e,t,n=1/0){return N(t)?me((r,o)=>$((i,s)=>t(r,i,o,s))(re(e(r,o))),n):(typeof t==`number`&&(n=t),U((r,o)=>Wf(r,o,e,n)))}function or(e=1/0){return me(qe,e)}function qf(){return or(1)}function ir(...e){return qf()(te(e,Ft(e)))}function eo(e){return new A(t=>{re(e()).subscribe(t)})}function AE(...e){let t=Li(e),{args:n,keys:r}=Ki(e),o=new A(i=>{let{length:s}=n;if(!s){i.complete();return}let a=new Array(s),c=s,l=s;for(let u=0;u{d||(d=!0,l--),a[u]=h},()=>c--,void 0,()=>{(!c||!d)&&(l||i.next(r?Xi(r,a):a),i.complete())}))}});return t?o.pipe(Yi(t)):o}function Pe(e,t){return U((n,r)=>{let o=0;n.subscribe(H(r,i=>e.call(t,i,o++)&&r.next(i)))})}function hn(e){return U((t,n)=>{let r=null,o=!1,i;r=t.subscribe(H(n,void 0,void 0,s=>{i=re(e(s,hn(e)(t))),r?(r.unsubscribe(),r=null,i.subscribe(n)):o=!0})),o&&(r.unsubscribe(),r=null,i.subscribe(n))})}function pn(e,t){return N(t)?me(e,t,1):me(e,1)}function Gf(e){return U((t,n)=>{let r=!1;t.subscribe(H(n,o=>{r=!0,n.next(o)},()=>{r||n.next(e),n.complete()}))})}function pt(e){return e<=0?()=>le:U((t,n)=>{let r=0;t.subscribe(H(n,o=>{++r<=e&&(n.next(o),e<=r&&n.complete())}))})}function Qf(e=OE){return U((t,n)=>{let r=!1;t.subscribe(H(n,o=>{r=!0,n.next(o)},()=>r?n.complete():n.error(e())))})}function OE(){return new ht}function to(e){return U((t,n)=>{try{t.subscribe(n)}finally{n.add(e)}})}function gt(e,t){let n=arguments.length>=2;return r=>r.pipe(e?Pe((o,i)=>e(o,i,r)):qe,pt(1),n?Gf(t):Qf(()=>new ht))}function es(e){return e<=0?()=>le:U((t,n)=>{let r=[];t.subscribe(H(n,o=>{r.push(o),e{for(let o of r)n.next(o);n.complete()},void 0,()=>{r=null}))})}function xc(...e){let t=Ft(e);return U((n,r)=>{(t?ir(e,n,t):ir(e,n)).subscribe(r)})}function Te(e,t){return U((n,r)=>{let o=null,i=0,s=!1,a=()=>s&&!o&&r.complete();n.subscribe(H(r,c=>{o?.unsubscribe();let l=0,u=i++;re(e(c,u)).subscribe(o=H(r,d=>r.next(t?t(c,d,u,l++):d),()=>{o=null,a()}))},()=>{s=!0,a()}))})}function no(e){return U((t,n)=>{re(e).subscribe(H(n,()=>n.complete(),Jr)),!n.closed&&t.subscribe(n)})}function Le(e,t,n){let r=N(e)||t||n?{next:e,error:t,complete:n}:e;return r?U((o,i)=>{var s;(s=r.subscribe)===null||s===void 0||s.call(r);let a=!0;o.subscribe(H(i,c=>{var l;(l=r.next)===null||l===void 0||l.call(r,c),i.next(c)},()=>{var c;a=!1,(c=r.complete)===null||c===void 0||c.call(r),i.complete()},c=>{var l;a=!1,(l=r.error)===null||l===void 0||l.call(r,c),i.error(c)},()=>{var c,l;a&&((c=r.unsubscribe)===null||c===void 0||c.call(r)),(l=r.finalize)===null||l===void 0||l.call(r)}))}):qe}var Ie=null;var ts=!1;var gn=1;var kE=null;var Y=Symbol(`SIGNAL`);function I(e){let t=Ie;return Ie=e,t}function ns(){return Ie}var jt={version:0,lastCleanEpoch:0,dirty:!1,producers:void 0,producersTail:void 0,consumers:void 0,consumersTail:void 0,recomputing:!1,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,kind:`unknown`,producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function mt(e){if(ts)throw new Error(``);if(Ie===null)return;Ie.consumerOnSignalRead(e);let t=Ie.producersTail;if(t!==void 0&&t.producer===e)return;let n,r=Ie.recomputing;if(r&&(n=t!==void 0?t.nextProducer:Ie.producers,n!==void 0&&n.producer===e)){Ie.producersTail=n,n.lastReadVersion=e.version,n.knownValidAtEpoch=gn;return}let o=e.consumersTail;if(o!==void 0&&o.consumer===Ie&&(!r||o.knownValidAtEpoch===gn))return;let i=ar(Ie),s={producer:e,consumer:Ie,nextProducer:n,prevConsumer:void 0,knownValidAtEpoch:gn,lastReadVersion:e.version,nextConsumer:void 0};Ie.producersTail=s,t!==void 0?t.nextProducer=s:Ie.producers=s,i&&Xf(e,s)}function Zf(){gn++}function Ut(e){if(!(ar(e)&&!e.dirty)&&!(!e.dirty&&e.lastCleanEpoch===gn)){if(!e.producerMustRecompute(e)&&!ro(e)){sr(e);return}e.producerRecomputeValue(e),sr(e)}}function Ac(e){if(e.consumers===void 0)return;let t=ts;ts=!0;try{for(let n=e.consumers;n!==void 0;n=n.nextConsumer){let r=n.consumer;r.dirty||PE(r)}}finally{ts=t}}function Oc(){return Ie?.consumerAllowSignalWrites!==!1}function PE(e){e.dirty=!0,Ac(e),e.consumerMarkedDirty?.(e)}function sr(e){e.dirty=!1,e.lastCleanEpoch=gn}function Ht(e){return e&&Yf(e),I(e)}function Yf(e){if(e.producersTail?.knownValidAtEpoch===gn){let t=e.producers;for(;t!==void 0;)t.knownValidAtEpoch=null,t=t.nextProducer}e.producersTail=void 0,e.recomputing=!0}function vn(e,t){I(t),e&&Kf(e)}function Kf(e){e.recomputing=!1;let t=e.producersTail,n=t!==void 0?t.nextProducer:e.producers;if(n!==void 0){if(ar(e))do n=kc(n);while(n!==void 0);t!==void 0?t.nextProducer=void 0:e.producers=void 0}}function ro(e){for(let t=e.producers;t!==void 0;t=t.nextProducer){let n=t.producer,r=t.lastReadVersion;if(r!==n.version||(Ut(n),r!==n.version))return!0}return!1}function En(e){if(ar(e)){let t=e.producers;for(;t!==void 0;)t=kc(t)}e.producers=void 0,e.producersTail=void 0,e.consumers=void 0,e.consumersTail=void 0}function Xf(e,t){let n=e.consumersTail,r=ar(e);if(n!==void 0?(t.nextConsumer=n.nextConsumer,n.nextConsumer=t):(t.nextConsumer=void 0,e.consumers=t),t.prevConsumer=n,e.consumersTail=t,!r)for(let o=e.producers;o!==void 0;o=o.nextProducer)Xf(o.producer,o)}function kc(e){let t=e.producer,n=e.nextProducer,r=e.nextConsumer,o=e.prevConsumer;if(e.nextConsumer=void 0,e.prevConsumer=void 0,r!==void 0?r.prevConsumer=o:t.consumersTail=o,o!==void 0)o.nextConsumer=r;else if(t.consumers=r,!ar(t)){let i=t.producers;for(;i!==void 0;)i=kc(i)}return n}function ar(e){return e.consumerIsAlwaysLive||e.consumers!==void 0}function oo(e){kE?.(e)}function io(e,t){return Object.is(e,t)}function so(e,t){let n=Object.create(LE);n.computation=e,t!==void 0&&(n.equal=t);let r=()=>{if(Ut(n),mt(n),n.value===Fe)throw n.error;return n.value};return r[Y]=n,oo(n),r}var mn=Symbol(`UNSET`);var yn=Symbol(`COMPUTING`);var Fe=Symbol(`ERRORED`);var LE=l(k$1({},jt),{value:mn,dirty:!0,error:null,equal:io,kind:`computed`,producerMustRecompute(e){return e.value===mn||e.value===yn},producerRecomputeValue(e){if(e.value===yn)throw new Error(``);let t=e.value;e.value=yn;let n=Ht(e),r,o=!1;try{r=e.computation(),I(null),o=t!==mn&&t!==Fe&&r!==Fe&&e.equal(t,r)}catch(i){r=Fe,e.error=i}finally{vn(e,n)}if(o){e.value=t;return}e.value=r,e.version++}});function FE(){throw new Error}var Jf=FE;function eh(e){Jf(e)}function Pc(e){Jf=e}var jE=null;function Lc(e,t){let n=Object.create(ao);n.value=e,t!==void 0&&(n.equal=t);let r=()=>th(n);return r[Y]=n,oo(n),[r,s=>yt(n,s),s=>rs(n,s)]}function th(e){return mt(e),e.value}function yt(e,t){Oc()||eh(e),e.equal(e.value,t)||(e.value=t,UE(e))}function rs(e,t){Oc()||eh(e),yt(e,t(e.value))}var ao=l(k$1({},jt),{equal:io,value:void 0,kind:`signal`});function UE(e){e.version++,Zf(),Ac(e),jE?.(e)}var Fc=l(k$1({},jt),{consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,dirty:!0,kind:`effect`});function jc(e){if(e.dirty=!1,e.version>0&&!ro(e))return;e.version++;let t=Ht(e);try{e.cleanup(),e.fn()}finally{vn(e,t)}}var Uc;function os(){return Uc}function et(e){let t=Uc;return Uc=e,t}var nh=Symbol(`NotFound`);function cr(e){return e===nh||e?.name===`ɵNotFound`}function Hc(e,t,n){let r=Object.create(HE);r.source=e,r.computation=t,n!=null&&(r.equal=n);let i=()=>{if(Ut(r),mt(r),r.value===Fe)throw r.error;return r.value};return i[Y]=r,oo(r),i}function Vc(e,t){Ut(e),yt(e,t),sr(e)}function rh(e,t){if(Ut(e),e.value===Fe)throw e.error;rs(e,t),sr(e)}var HE=l(k$1({},jt),{value:mn,dirty:!0,error:null,equal:io,kind:`linkedSignal`,producerMustRecompute(e){return e.value===mn||e.value===yn},producerRecomputeValue(e){if(e.value===yn)throw new Error(``);let t=e.value;e.value=yn;let n=Ht(e),r,o=!1;try{let i=e.source(),s=t!==mn&&t!==Fe,a=s?{source:e.sourceValue,value:t}:void 0;r=e.computation(i,a),e.sourceValue=i,I(null),o=s&&r!==Fe&&e.equal(t,r)}catch(i){r=Fe,e.error=i}finally{vn(e,n)}if(o){e.value=t;return}e.value=r,e.version++}});function oh(e){let t=I(null);try{return e()}finally{I(t)}}var rl=`https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss`;var y=class extends Error{code;constructor(t,n){super(Qe(t,n)),this.code=t}};function VE(e){return`NG0${Math.abs(e)}`}function Qe(e,t){return`${VE(e)}${t?`: `+t:``}`}function V(e){for(let t in e)if(e[t]===V)return t;throw Error(``)}function uh(e,t){for(let n in t)Object.hasOwn(t,n)&&!Object.hasOwn(e,n)&&(e[n]=t[n])}function go(e){if(typeof e==`string`)return e;if(Array.isArray(e))return`[${e.map(go).join(`, `)}]`;if(e==null)return``+e;let t=e.overriddenName||e.name;if(t)return`${t}`;let n=e.toString();if(n==null)return``+n;let r=n.indexOf(` -`);return r>=0?n.slice(0,r):n}function ol(e,t){return e?t?`${e} ${t}`:e:t||``}var $E=V({__forward_ref__:V});function ds(e){return e.__forward_ref__=ds,e}function ue(e){return il(e)?e():e}function il(e){return typeof e==`function`&&Object.hasOwn(e,$E)&&e.__forward_ref__===ds}function T(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function mo(e){return{providers:e.providers||[],imports:e.imports||[]}}function yo(e){return BE(e,fs)}function sl(e){return yo(e)!==null}function BE(e,t){return Object.hasOwn(e,t)&&e[t]||null}function zE(e){return(e?.[fs]??null)||null}function Bc(e){return e&&Object.hasOwn(e,ss)?e[ss]:null}var fs=V({ɵprov:V});var ss=V({ɵinj:V});var v=class{_desc;ngMetadataName=`InjectionToken`;ɵprov;constructor(t,n){this._desc=t,this.ɵprov=void 0,typeof n==`number`?this.__NG_ELEMENT_ID__=n:n!==void 0&&(this.ɵprov=T({token:this,providedIn:n.providedIn||`root`,factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function al(e){return e&&!!e.ɵproviders}var vo=V({ɵcmp:V});var Eo=V({ɵdir:V});var cl=V({ɵpipe:V});var ll=V({ɵmod:V});var uo=V({ɵfac:V});var Cn=V({__NG_ELEMENT_ID__:V});var ih=V({__NG_ENV_ID__:V});function dh(e){return ps(e,`@NgModule`),e[ll]||null}function zt(e){return ps(e,`@Component`),e[vo]||null}function hs(e){return ps(e,`@Directive`),e[Eo]||null}function fh(e){return ps(e,`@Pipe`),e[cl]||null}function ps(e,t){if(e==null)throw new y(-919,!1)}function Wt(e){return typeof e==`string`?e:e==null?``:String(e)}var hh=V({ngErrorCode:V});var WE=V({ngErrorMessage:V});var qE=V({ngTokenPath:V});function ul(e,t){return ph(``,-200,t)}function gs(e,t){throw new y(-201,!1)}function ph(e,t,n){let r=new y(t,e);return r[hh]=t,r[WE]=e,n&&(r[qE]=n),r}function GE(e){return e[hh]}var zc;function gh(){return zc}function we(e){let t=zc;return zc=e,t}function dl(e,t,n){let r=yo(e);if(r&&r.providedIn==`root`)return r.value===void 0?r.value=r.factory():r.value;if(n&8)return null;if(t!==void 0)return t;gs(e,``)}var qt=globalThis;var In={};var ZE=`__NG_DI_FLAG__`;var Wc=class{injector;constructor(t){this.injector=t}retrieve(t,n){let r=wn(n)||0;try{return this.injector.get(t,r&8?null:In,r)}catch(o){if(cr(o))return o;throw o}}};function YE(e,t=0){let n=os();if(n===void 0)throw new y(-203,!1);if(n===null)return dl(e,void 0,t);{let r=KE(t),o=n.retrieve(e,r);if(cr(o)){if(r.optional)return null;throw o}return o}}function S(e,t=0){return(gh()||YE)(ue(e),t)}function p(e,t){return S(e,wn(t))}function wn(e){return typeof e>`u`||typeof e==`number`?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function KE(e){return{optional:!!(e&8),host:!!(e&1),self:!!(e&2),skipSelf:!!(e&4)}}function qc(e){let t=[];for(let n=0;nArray.isArray(n)?ms(n,t):t(n))}function fl(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function Io(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function vh(e,t){let n=[];for(let r=0;rt;){let i=o-2;e[o]=e[i],o--}e[t]=n,e[t+1]=r}}function Ih(e,t,n){let r=dr(e,t);return r>=0?e[r|1]=n:(r=~r,Eh(e,r,t,n)),r}function ys(e,t){let n=dr(e,t);if(n>=0)return e[n|1]}function dr(e,t){return JE(e,t,1)}function JE(e,t,n){let r=0,o=e.length>>n;for(;o!==r;){let i=r+(o-r>>1),s=e[i<t?o=i:r=i+1}return~(o<{n.push(s)};return ms(t,s=>{let a=s;as(a,i,[],r)&&(o||=[],o.push(a))}),o!==void 0&&bh(o,i),n}function bh(e,t){for(let n=0;n{t(i,r)})}}function as(e,t,n,r){if(e=ue(e),!e)return!1;let o=null,i=Bc(e),s=!i&&zt(e);if(!i&&!s){let c=e.ngModule;if(i=Bc(c),i)o=c;else return!1}else{if(s&&!s.standalone)return!1;o=e}let a=r.has(o);if(s){if(a)return!1;if(r.add(o),s.dependencies){let c=typeof s.dependencies==`function`?s.dependencies():s.dependencies;for(let l of c)as(l,t,n,r)}}else if(i){if(i.imports!=null&&!a){r.add(o);let l;ms(i.imports,u=>{as(u,t,n,r)&&(l||=[],l.push(u))}),l!==void 0&&bh(l,t)}if(!a){let l=$t(o)||(()=>new o);t({provide:o,useFactory:l,deps:Me},o),t({provide:hl,useValue:o,multi:!0},o),t({provide:Tn,useValue:()=>S(o),multi:!0},o)}let c=i.providers;if(c!=null&&!a){let l=e;gl(c,u=>{t(u,l)})}}else return!1;return o!==e&&e.providers!==void 0}function gl(e,t){for(let n of e)al(n)&&(n=n.ɵproviders),Array.isArray(n)?gl(n,t):t(n)}var eI=V({provide:String,useValue:V});function Sh(e){return e!==null&&typeof e==`object`&&eI in e}function tI(e){return!!(e&&e.useExisting)}function nI(e){return!!(e&&e.useFactory)}function Dn(e){return typeof e==`function`}function Ch(e){return!!e.useClass}var wo=new v(``);var is={};var sh={};var $c;function Do(){return $c===void 0&&($c=new ur),$c}var K=class{};var bn=class extends K{parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(t,n,r,o){super(),this.parent=n,this.source=r,this.scopes=o,Qc(t,s=>this.processProvider(s)),this.records.set(vs,lr(void 0,this)),o.has(`environment`)&&this.records.set(K,lr(void 0,this));let i=this.records.get(wo);i!=null&&typeof i.value==`string`&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(hl,Me,{self:!0}))}retrieve(t,n){let r=wn(n)||0;try{return this.get(t,In,r)}catch(o){if(cr(o))return o;throw o}}destroy(){co(this),this._destroyed=!0;let t=I(null);try{for(let r of this._ngOnDestroyHooks)r.ngOnDestroy();let n=this._onDestroyHooks;this._onDestroyHooks=[];for(let r of n)r()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),I(t)}}onDestroy(t){return co(this),this._onDestroyHooks.push(t),()=>this.removeOnDestroy(t)}runInContext(t){co(this);let n=et(this),r=we(void 0);try{return t()}finally{et(n),we(r)}}get(t,n=In,r){if(co(this),Object.hasOwn(t,ih))return t[ih](this);let o=wn(r),s=et(this),a=we(void 0);try{if(!(o&4)){let l=this.records.get(t);if(l===void 0){let u=aI(t)&&yo(t);u&&this.injectableDefInScope(u)?l=lr(Gc(t),is):l=null,this.records.set(t,l)}if(l!=null)return this.hydrate(t,l,o)}let c=o&2?Do():this.parent;return n=o&8&&n===In?null:n,c.get(t,n)}catch(c){let l=GE(c);throw l===-200||l===-201?new y(l,null):c}finally{we(a),et(s)}}resolveInjectorInitializers(){let t=I(null),n=et(this),r=we(void 0);try{let i=this.get(Tn,Me,{self:!0});for(let s of i)s()}finally{et(n),we(r),I(t)}}toString(){return`R3Injector[...]`}processProvider(t){t=ue(t);let n=Dn(t)?t:ue(t&&t.provide),r=oI(t);if(!Dn(t)&&t.multi===!0){let o=this.records.get(n);o||(o=lr(void 0,is,!0),o.factory=()=>qc(o.multi),this.records.set(n,o)),n=t,o.multi.push(t)}this.records.set(n,r)}hydrate(t,n,r){let o=I(null);try{if(n.value===sh)throw ul(``);return n.value===is&&(n.value=sh,n.value=n.factory(void 0,r)),typeof n.value==`object`&&n.value&&sI(n.value)&&this._ngOnDestroyHooks.add(n.value),n.value}finally{I(o)}}injectableDefInScope(t){if(!t.providedIn)return!1;let n=ue(t.providedIn);return typeof n==`string`?n===`any`||this.scopes.has(n):this.injectorDefTypes.has(n)}removeOnDestroy(t){let n=this._onDestroyHooks.indexOf(t);n!==-1&&this._onDestroyHooks.splice(n,1)}};function Gc(e){let t=yo(e),n=t!==null?t.factory:$t(e);if(n!==null)return n;if(e instanceof v)throw new y(-204,!1);if(e instanceof Function)return rI(e);throw new y(-204,!1)}function rI(e){if(e.length>0)throw new y(-204,!1);let n=zE(e);return n!==null?()=>n.factory(e):()=>new e}function oI(e){if(Sh(e))return lr(void 0,e.useValue);return lr(ml(e),is)}function ml(e,t,n){let r;if(Dn(e)){let o=ue(e);return $t(o)||Gc(o)}else if(Sh(e))r=()=>ue(e.useValue);else if(nI(e))r=()=>e.useFactory(...qc(e.deps||[]));else if(tI(e))r=(o,i)=>S(ue(e.useExisting),i!==void 0&&i&8?8:void 0);else{let o=ue(e&&(e.useClass||e.provide));if(iI(e))r=()=>new o(...qc(e.deps));else return $t(o)||Gc(o)}return r}function co(e){if(e.destroyed)throw new y(-205,!1)}function lr(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function iI(e){return!!e.deps}function sI(e){return e!==null&&typeof e==`object`&&typeof e.ngOnDestroy==`function`}function aI(e){return typeof e==`function`||typeof e==`object`&&e.ngMetadataName===`InjectionToken`}function Qc(e,t){for(let n of e)Array.isArray(n)?Qc(n,t):n&&al(n)?Qc(n.ɵproviders,t):t(n)}function oe(e,t){let n;e instanceof bn?(co(e),n=e):n=new Wc(e);let o=et(n),i=we(void 0);try{return t()}finally{et(o),we(i)}}function Th(){return gh()!==void 0||os()!=null}var Ze=0;var b=1;var C=2;var ne=3;var je=4;var fe=5;var Mn=6;var fr=7;var X=8;var wt=9;var Ye=10;var B=11;var hr=12;var yl=13;var Qt=14;var Ee=15;var Zt=16;var _n=17;var nt=18;var bo=19;var vl=20;var vt=21;var Es=22;var Et=23;var Ae=24;var Is=25;var Mh=26;var So=27;var Z=28;var _h=1;var El=6;var Nn=7;var Co=8;var Rn=9;var J=10;function Dt(e){return Array.isArray(e)&&typeof e[_h]==`object`}function Ue(e){return Array.isArray(e)&&e[_h]===!0}function Il(e){return(e.flags&4)!==0}function rt(e){return e.componentOffset>-1}function ws(e){return(e.flags&1)===1}function ot(e){return!!e.template}function pr(e){return(e[C]&512)!==0}function xn(e){return(e[C]&256)===256}var W=(function(e){return e[e.NONE=0]=`NONE`,e[e.HTML=1]=`HTML`,e[e.STYLE=2]=`STYLE`,e[e.SCRIPT=3]=`SCRIPT`,e[e.URL=4]=`URL`,e[e.RESOURCE_URL=5]=`RESOURCE_URL`,e[e.ATTRIBUTE_NO_BINDING=6]=`ATTRIBUTE_NO_BINDING`,e})(W||{});var lo;var Sn=`svg`;var Ds=`math`;var Zc=``;var ah=`*`;var Yc=()=>Object.create(null);function cI(){return lo||(lo=Yc(),Vt(W.HTML,void 0,[[`iframe`,[`srcdoc`]],[`*`,[`innerHTML`,`outerHTML`]]]),Vt(W.STYLE,void 0,[[`*`,[`style`]]]),Vt(W.URL,void 0,[[`*`,[`formAction`]],[`area`,[`href`]],[`a`,[`href`,`xlink:href`]],[`form`,[`action`]]]),Vt(W.URL,Ds,[[`*`,[`href`,`xlink:href`]]]),Vt(W.RESOURCE_URL,void 0,[[`base`,[`href`]],[`embed`,[`src`]],[`frame`,[`src`]],[`iframe`,[`src`]],[`link`,[`href`]],[`object`,[`codebase`,`data`]]]),Vt(W.URL,Sn,[[`a`,[`href`,`xlink:href`]]]),Vt(W.ATTRIBUTE_NO_BINDING,Sn,[[`animate`,[`attributeName`,`values`,`to`,`from`]],[`set`,[`to`,`attributeName`]],[`animateMotion`,[`attributeName`]],[`animateTransform`,[`attributeName`]]]),Vt(W.ATTRIBUTE_NO_BINDING,void 0,[[`unknown`,[`attributeName`,`values`,`to`,`from`,`sandbox`,`allow`,`allowFullscreen`,`referrerPolicy`,`csp`,`fetchPriority`,`credentialless`]],[`iframe`,[`sandbox`,`allow`,`allowFullscreen`,`referrerPolicy`,`csp`,`fetchPriority`,`credentialless`]]]),lo)}function Vt(e,t,n){let r=t??Zc;for(let[o,i]of n){let s=o.toLowerCase();for(let a of i){let c=a.toLowerCase(),l=lo[c]??=Yc(),u=l[r]??=Yc();u[s]=e}}}function Nh(e,t,n){let o=cI()[t.toLowerCase()];if(!o)return W.NONE;let i=e.toLowerCase(),s;if(n){let a=o[n];a&&(s=a[i]??a[ah])}if(s===void 0){let a=o[Zc];a&&(s=a[i]??a[ah])}if(s===void 0&&(!n||n===Zc)){let a=o[Sn];a&&(s=a[i])}return s??W.NONE}function he(e){for(;Array.isArray(e);)e=e[Ze];return e}function wl(e,t){return he(t[e])}function Ne(e,t){return he(t[e.index])}function bs(e,t){return e.data[t]}function Ss(e,t){return e[t]}function Dl(e,t,n,r){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}function He(e,t){let n=t[e];return Dt(n)?n:n[Ze]}function Rh(e){return(e[C]&4)===4}function Cs(e){return(e[C]&128)===128}function xh(e){return Ue(e[ne])}function it(e,t){return t==null?null:e[t]}function bl(e){e[_n]=0}function Sl(e){e[C]&1024||(e[C]|=1024,Cs(e)&&gr(e))}function Ah(e,t){for(;e>0;)t=t[Qt],e--;return t}function To(e){return!!(e[C]&9216||e[Ae]?.dirty)}function Ts(e){e[Ye].changeDetectionScheduler?.notify(8),e[C]&64&&(e[C]|=1024),To(e)&&gr(e)}function gr(e){e[Ye].changeDetectionScheduler?.notify(0);let t=It(e);for(;t!==null&&!(t[C]&8192||(t[C]|=8192,!Cs(t)));)t=It(t)}function Ms(e,t){if(xn(e))throw new y(911,!1);e[vt]===null&&(e[vt]=[]),e[vt].push(t)}function Oh(e,t){if(e[vt]===null)return;let n=e[vt].indexOf(t);n!==-1&&e[vt].splice(n,1)}function It(e){let t=e[ne];return Ue(t)?t[ne]:t}function Cl(e){return e[fr]??=[]}function Tl(e){return e.cleanup??=[]}function kh(e,t,n,r){let o=Cl(t);o.push(n),e.firstCreatePass&&Tl(e).push(r,o.length-1)}var x={lFrame:Zh(null),bindingsEnabled:!0,skipHydrationRootTNode:null};var Kc=!1;function Ph(){return x.lFrame.elementDepthCount}function Lh(){x.lFrame.elementDepthCount++}function Ml(){x.lFrame.elementDepthCount--}function Fh(){return x.bindingsEnabled}function _l(){return x.skipHydrationRootTNode!==null}function Nl(e){return x.skipHydrationRootTNode===e}function Rl(){x.skipHydrationRootTNode=null}function D(){return x.lFrame.lView}function q(){return x.lFrame.tView}function jh(e){return x.lFrame.contextLView=e,e[X]}function Uh(e){return x.lFrame.contextLView=null,e}function ie(){let e=xl();for(;e!==null&&e.type===64;)e=e.parent;return e}function xl(){return x.lFrame.currentTNode}function Hh(){let e=x.lFrame,t=e.currentTNode;return e.isParent?t:t.parent}function mr(e,t){let n=x.lFrame;n.currentTNode=e,n.isParent=t}function Al(){return x.lFrame.isParent}function Ol(){x.lFrame.isParent=!1}function Vh(){return x.lFrame.contextLView}function kl(){return Kc}function fo(e){let t=Kc;return Kc=e,t}function yr(){let e=x.lFrame,t=e.bindingRootIndex;return t===-1&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function $h(){return x.lFrame.bindingIndex}function Bh(e){return x.lFrame.bindingIndex=e}function st(){return x.lFrame.bindingIndex++}function Pl(e){let t=x.lFrame,n=t.bindingIndex;return t.bindingIndex=t.bindingIndex+e,n}function zh(){return x.lFrame.inI18n}function Wh(e,t){let n=x.lFrame;n.bindingIndex=n.bindingRootIndex=e,_s(t)}function qh(){return x.lFrame.currentDirectiveIndex}function _s(e){x.lFrame.currentDirectiveIndex=e}function Gh(e){let t=x.lFrame.currentDirectiveIndex;return t===-1?null:e[t]}function Ns(){return x.lFrame.currentQueryIndex}function Mo(e){x.lFrame.currentQueryIndex=e}function lI(e){let t=e[b];return t.type===2?t.declTNode:t.type===1?e[fe]:null}function Ll(e,t,n){if(n&4){let o=t,i=e;for(;o=o.parent,o===null&&!(n&1);)if(o=lI(i),o===null||(i=i[Qt],o.type&10))break;if(o===null)return!1;t=o,e=i}let r=x.lFrame=Qh();return r.currentTNode=t,r.lView=e,!0}function Rs(e){let t=Qh(),n=e[b];x.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function Qh(){let e=x.lFrame,t=e===null?null:e.child;return t===null?Zh(e):t}function Zh(e){let t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return e!==null&&(e.child=t),t}function Yh(){let e=x.lFrame;return x.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}var Fl=Yh;function xs(){let e=Yh();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function Kh(e){return(x.lFrame.contextLView=Ah(e,x.lFrame.contextLView))[X]}function at(){return x.lFrame.selectedIndex}function Yt(e){x.lFrame.selectedIndex=e}function Kt(){let e=x.lFrame;return bs(e.tView,e.selectedIndex)}function As(){x.lFrame.currentNamespace=Sn}function jl(){return x.lFrame.currentNamespace}var Xh=!0;function Os(){return Xh}function ks(e){Xh=e}function Xc(e,t=null,n=null,r){let o=Ul(e,t,n,r);return o.resolveInjectorInitializers(),o}function Ul(e,t=null,n=null,r,o=new Set){return new bn([n||Me,Dh(e)],t||Do(),null,o)}var _e=class e{static THROW_IF_NOT_FOUND=In;static NULL=new ur;static create(t,n){if(Array.isArray(t))return Xc({name:``},n,t,``);{let r=t.name??``;return Xc({name:r},t.parent,t.providers,r)}}static ɵprov=T({token:e,providedIn:`any`,factory:()=>S(vs)});static __NG_ELEMENT_ID__=-1};var G=new v(``);var ve=class{static __NG_ELEMENT_ID__=uI;static __NG_ENV_ID__=t=>t};var cs=class extends ve{_lView;constructor(t){super(),this._lView=t}get destroyed(){return xn(this._lView)}onDestroy(t){let n=this._lView;return Ms(n,t),()=>Oh(n,t)}};function uI(){return new cs(D())}var Jh=!1;var ep=new v(``);var bt=(()=>{class e{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new ce(!1);debugTaskTracker=p(ep,{optional:!0});get hasPendingTasks(){return this.destroyed?!1:this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new A(n=>{n.next(!1),n.complete()}):this.pendingTask}add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0);let n=this.taskId++;return this.pendingTasks.add(n),this.debugTaskTracker?.add(n),n}has(n){return this.pendingTasks.has(n)}remove(n){this.pendingTasks.delete(n),this.debugTaskTracker?.remove(n),this.pendingTasks.size===0&&this.hasPendingTasks&&this.pendingTask.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pendingTask.next(!1),this.destroyed=!0,this.pendingTask.unsubscribe()}static ɵprov=T({token:e,providedIn:`root`,factory:()=>new e})}return e})();var Jc=class extends ee{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(t=!1){super(),this.__isAsync=t,Th()&&(this.destroyRef=p(ve,{optional:!0})??void 0,this.pendingTasks=p(bt,{optional:!0})??void 0)}emit(t){let n=I(null);try{super.next(t)}finally{I(n)}}subscribe(t,n,r){let o=t,i=n||(()=>null),s=r;if(t&&typeof t==`object`){let c=t;o=c.next?.bind(c),i=c.error?.bind(c),s=c.complete?.bind(c)}this.__isAsync&&(i=this.wrapInTimeout(i),o&&(o=this.wrapInTimeout(o)),s&&(s=this.wrapInTimeout(s)));let a=super.subscribe({next:o,error:i,complete:s});return t instanceof ae&&t.add(a),a}wrapInTimeout(t){return n=>{let r=this.pendingTasks?.add();setTimeout(()=>{try{t(n)}finally{r!==void 0&&this.pendingTasks?.remove(r)}})}}};var ye=Jc;function ls(...e){}function Hl(e){let t,n;function r(){e=ls;try{n!==void 0&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(n),t!==void 0&&clearTimeout(t)}catch{}}return t=setTimeout(()=>{e(),r()}),typeof requestAnimationFrame==`function`&&(n=requestAnimationFrame(()=>{e(),r()})),()=>r()}function tp(e){return queueMicrotask(()=>e()),()=>{e=ls}}var Vl=`isAngularZone`;var ho=Vl+`_ID`;var dI=0;var de=class e{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new ye(!1);onMicrotaskEmpty=new ye(!1);onStable=new ye(!1);onError=new ye(!1);constructor(t){let{enableLongStackTrace:n=!1,shouldCoalesceEventChangeDetection:r=!1,shouldCoalesceRunChangeDetection:o=!1,scheduleInRootZone:i=Jh}=t;if(typeof Zone>`u`)throw new y(908,!1);Zone.assertZonePatched();let s=this;s._nesting=0,s._outer=s._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(s._inner=s._inner.fork(new Zone.TaskTrackingZoneSpec)),n&&Zone.longStackTraceZoneSpec&&(s._inner=s._inner.fork(Zone.longStackTraceZoneSpec)),s.shouldCoalesceEventChangeDetection=!o&&r,s.shouldCoalesceRunChangeDetection=o,s.callbackScheduled=!1,s.scheduleInRootZone=i,pI(s)}static isInAngularZone(){return typeof Zone<`u`&&Zone.current.get(Vl)===!0}static assertInAngularZone(){if(!e.isInAngularZone())throw new y(909,!1)}static assertNotInAngularZone(){if(e.isInAngularZone())throw new y(909,!1)}run(t,n,r){return this._inner.run(t,n,r)}runTask(t,n,r,o){let i=this._inner,s=i.scheduleEventTask(`NgZoneEvent: `+o,t,fI,ls,ls);try{return i.runTask(s,n,r)}finally{i.cancelTask(s)}}runGuarded(t,n,r){return this._inner.runGuarded(t,n,r)}runOutsideAngular(t){return this._outer.run(t)}};var fI={};function $l(e){if(e._nesting==0&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function hI(e){if(e.isCheckStableRunning||e.callbackScheduled)return;e.callbackScheduled=!0;function t(){Hl(()=>{e.callbackScheduled=!1,el(e),e.isCheckStableRunning=!0,$l(e),e.isCheckStableRunning=!1})}e.scheduleInRootZone?Zone.root.run(()=>{t()}):e._outer.run(()=>{t()}),el(e)}function pI(e){let t=()=>{hI(e)},n=dI++;e._inner=e._inner.fork({name:`angular`,properties:{[Vl]:!0,[ho]:n,[ho+n]:!0},onInvokeTask:(r,o,i,s,a,c)=>{if(gI(c))return r.invokeTask(i,s,a,c);try{return ch(e),r.invokeTask(i,s,a,c)}finally{(e.shouldCoalesceEventChangeDetection&&s.type===`eventTask`||e.shouldCoalesceRunChangeDetection)&&t(),lh(e)}},onInvoke:(r,o,i,s,a,c,l)=>{try{return ch(e),r.invoke(i,s,a,c,l)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!mI(c)&&t(),lh(e)}},onHasTask:(r,o,i,s)=>{r.hasTask(i,s),o===i&&(s.change==`microTask`?(e._hasPendingMicrotasks=s.microTask,el(e),$l(e)):s.change==`macroTask`&&(e.hasPendingMacrotasks=s.macroTask))},onHandleError:(r,o,i,s)=>(r.handleError(i,s),e.runOutsideAngular(()=>e.onError.emit(s)),!1)})}function el(e){e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&e.callbackScheduled===!0?e.hasPendingMicrotasks=!0:e.hasPendingMicrotasks=!1}function ch(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function lh(e){e._nesting--,$l(e)}var po=class{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new ye;onMicrotaskEmpty=new ye;onStable=new ye;onError=new ye;run(t,n,r){return t.apply(n,r)}runGuarded(t,n,r){return t.apply(n,r)}runOutsideAngular(t){return t()}runTask(t,n,r,o){return t.apply(n,r)}};function gI(e){return np(e,`__ignore_ng_zone__`)}function mI(e){return np(e,`__scheduler_tick__`)}function np(e,t){return!Array.isArray(e)||e.length!==1?!1:e[0]?.data?.[t]===!0}var Ge=class{_console=console;handleError(t){this._console.error(`ERROR`,t)}};function rp(e){return op(e)?e:new tl(e)}function op(e){return e instanceof Error||typeof e==`object`&&e!==null&&typeof e.name==`string`&&typeof e.message==`string`}var tl=class extends Error{constructor(t){super(String(t),{cause:t}),this.name=`ErrorBoundaryWrappedError`}};var Ve=new v(``,{factory:()=>{let e=p(de),t=p(K),n;return r=>{e.runOutsideAngular(()=>{t.destroyed&&!n?setTimeout(()=>{throw r}):(n??=t.get(Ge),n.handleError(r))})}}});var ip={provide:Tn,useValue:()=>{p(Ge,{optional:!0})},multi:!0};var yI=new v(``,{factory:()=>{let e=p(G).defaultView;if(!e)return;let t=p(Ve),n=i=>{t(i.reason),i.preventDefault()},r=i=>{i.error?t(i.error):t(new Error(i.message,{cause:i})),i.preventDefault()},o=()=>{e.addEventListener(`unhandledrejection`,n),e.addEventListener(`error`,r)};typeof Zone<`u`?Zone.root.run(o):o(),p(ve).onDestroy(()=>{e.removeEventListener(`error`,r),e.removeEventListener(`unhandledrejection`,n)})}});function vI(){return tt([wh(()=>{p(yI)})])}function k(e,t){let[n,r,o]=Lc(e,t?.equal),i=n;i[Y];return i.set=r,i.update=o,i.asReadonly=_o.bind(i),i}function _o(){let e=this[Y];if(e.readonlyFn===void 0){let t=()=>this();t[Y]=e,e.readonlyFn=t}return e.readonlyFn}var No=new v(``,{factory:()=>EI});var EI=`ng`;var Ps=new v(``);var Ro=new v(``,{providedIn:`platform`,factory:()=>`unknown`});var xo=new v(``,{factory:()=>p(G).body?.querySelector(`[ngCspNonce]`)?.getAttribute(`ngCspNonce`)||null});var Ls=(()=>{class e{view;node;constructor(n,r){this.view=n,this.node=r}static __NG_ELEMENT_ID__=II}return e})();function II(){return new Ls(D(),ie())}var Bt=class{};var Ao=new v(``,{factory:()=>!0});var Bl=new v(``);var Fs=(()=>{class e{static ɵprov=T({token:e,providedIn:`root`,factory:()=>new nl})}return e})();var nl=class{dirtyEffectCount=0;queues=new Map;add(t){this.enqueue(t),this.schedule(t)}schedule(t){t.dirty&&this.dirtyEffectCount++}remove(t){let n=t.zone,r=this.queues.get(n);r.has(t)&&(r.delete(t),t.dirty&&this.dirtyEffectCount--)}enqueue(t){let n=t.zone;this.queues.has(n)||this.queues.set(n,new Set);let r=this.queues.get(n);r.has(t)||r.add(t)}flush(){for(;this.dirtyEffectCount>0;){let t=!1;for(let[n,r]of this.queues)n===null?t||=this.flushQueue(r):t||=n.run(()=>this.flushQueue(r));t||(this.dirtyEffectCount=0)}}flushQueue(t){let n=!1;for(let r of t)r.dirty&&(this.dirtyEffectCount--,n=!0,r.run());return n}};var us=class{[Y];constructor(t){this[Y]=t}destroy(){this[Y].destroy()}};function Oo(e,t){let n=t?.injector??p(_e),r=t?.manualCleanup!==!0?n.get(ve):null,o,i=n.get(Ls,null,{optional:!0}),s=n.get(Bt);return i!==null?(o=ap(i.view,s,e),r instanceof cs&&r._lView===i.view&&(r=null)):o=bI(e,n.get(Fs),s),o.injector=n,r!==null&&(o.onDestroyFns=[r.onDestroy(()=>o.destroy())]),new us(o)}var sp=l(k$1({},Fc),{cleanupFns:void 0,zone:null,onDestroyFns:null,run(){let e=fo(!1);try{jc(this)}finally{fo(e)}},cleanup(){if(!this.cleanupFns?.length)return;let e=I(null);try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[],I(e)}}});var wI=l(k$1({},sp),{consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(12)},destroy(){if(En(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.scheduler.remove(this)}});var DI=l(k$1({},sp),{consumerMarkedDirty(){this.view[C]|=8192,gr(this.view),this.notifier.notify(13)},destroy(){if(En(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.view[Et]?.delete(this)}});function ap(e,t,n){let r=Object.create(DI);return r.view=e,r.zone=typeof Zone<`u`?Zone.current:null,r.notifier=t,r.userFn=n,r.fn=cp(r,n),e[Et]??=new Set,e[Et].add(r),r.consumerMarkedDirty(r),r}function bI(e,t,n){let r=Object.create(wI);return r.userFn=e,r.fn=cp(r,e),r.scheduler=t,r.notifier=n,r.zone=typeof Zone<`u`?Zone.current:null,r.scheduler.add(r),r.notifier.notify(12),r}function cp(e,t){return()=>{t(n=>(e.cleanupFns??=[]).push(n))}}function js(e){return typeof e==`function`&&e[Y]!==void 0}function Us(e){return js(e)&&typeof e.set==`function`}var ko=(()=>{class e{internalPendingTasks=p(bt);scheduler=p(Bt);errorHandler=p(Ve);add(){let n=this.internalPendingTasks.add();return()=>{this.internalPendingTasks.has(n)&&(this.scheduler.notify(11),this.internalPendingTasks.remove(n))}}run(n){let r=this.add();try{n().catch(this.errorHandler).finally(r)}catch(o){this.errorHandler(o),r()}}static ɵprov=T({token:e,providedIn:`root`,factory:()=>new e})}return e})();var Mr=Symbol(`InputSignalNode#UNSET`);var Pu=l(k$1({},ao),{transformFn:void 0,applyValueToInputSignal(e,t){yt(e,t)}});function zo(e){return{toString:e}.toString()}var L=(function(e){return e[e.TemplateCreateStart=0]=`TemplateCreateStart`,e[e.TemplateCreateEnd=1]=`TemplateCreateEnd`,e[e.TemplateUpdateStart=2]=`TemplateUpdateStart`,e[e.TemplateUpdateEnd=3]=`TemplateUpdateEnd`,e[e.LifecycleHookStart=4]=`LifecycleHookStart`,e[e.LifecycleHookEnd=5]=`LifecycleHookEnd`,e[e.OutputStart=6]=`OutputStart`,e[e.OutputEnd=7]=`OutputEnd`,e[e.BootstrapApplicationStart=8]=`BootstrapApplicationStart`,e[e.BootstrapApplicationEnd=9]=`BootstrapApplicationEnd`,e[e.BootstrapComponentStart=10]=`BootstrapComponentStart`,e[e.BootstrapComponentEnd=11]=`BootstrapComponentEnd`,e[e.ChangeDetectionStart=12]=`ChangeDetectionStart`,e[e.ChangeDetectionEnd=13]=`ChangeDetectionEnd`,e[e.ChangeDetectionSyncStart=14]=`ChangeDetectionSyncStart`,e[e.ChangeDetectionSyncEnd=15]=`ChangeDetectionSyncEnd`,e[e.AfterRenderHooksStart=16]=`AfterRenderHooksStart`,e[e.AfterRenderHooksEnd=17]=`AfterRenderHooksEnd`,e[e.ComponentStart=18]=`ComponentStart`,e[e.ComponentEnd=19]=`ComponentEnd`,e[e.DeferBlockStateStart=20]=`DeferBlockStateStart`,e[e.DeferBlockStateEnd=21]=`DeferBlockStateEnd`,e[e.DynamicComponentStart=22]=`DynamicComponentStart`,e[e.DynamicComponentEnd=23]=`DynamicComponentEnd`,e[e.HostBindingsUpdateStart=24]=`HostBindingsUpdateStart`,e[e.HostBindingsUpdateEnd=25]=`HostBindingsUpdateEnd`,e})(L||{});var Qs=class{previousValue;currentValue;firstChange;constructor(t,n,r){this.previousValue=t,this.currentValue=n,this.firstChange=r}isFirstChange(){return this.firstChange}};function Yp(e,t,n,r){t!==null?t.applyValueToInputSignal(t,r):e[n]=r}var Kp=null;var _r=(()=>{Kp=lp;let e=()=>lp;return e.ngInherit=!0,e})();function OI(){return Kp}function lp(e){return e.type.prototype.ngOnChanges&&(e.setInput=PI),kI}function kI(){let e=Xp(this),t=e?.current;if(t){let n=e.previous;if(n===Gt)e.previous=t;else for(let r in t)n[r]=t[r];e.current=null,this.ngOnChanges(t)}}function PI(e,t,n,r,o){let i=this.declaredInputs[r],s=Xp(e)||LI(e,{previous:Gt,current:null}),a=s.current||(s.current={}),c=s.previous,l=c[i];a[i]=new Qs(l&&l.currentValue,n,c===Gt),Yp(e,t,o,n)}var eu=`__ngSimpleChanges__`;function Xp(e){return Object.hasOwn(e,eu)&&e[eu]||null}function LI(e,t){return e[eu]=t}var up=[];var z=function(e,t=null,n){for(let r=0;r=r)break}else t[c]<0&&(e[_n]+=65536),(a>14>16&&(e[C]&3)===t&&(e[C]+=16384,dp(a,i)):dp(a,i)}var Ir=-1;var kn=class{factory;name;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(t,n,r,o){this.factory=t,this.name=o,this.canSeeViewProviders=n,this.injectImpl=r}};function HI(e){return(e.flags&8)!==0}function VI(e){return(e.flags&16)!==0}function $I(e,t,n){let r=0;for(;rt){s=i-1;break}}}for(;i>16}function Ys(e,t){let n=zI(e),r=t;for(;n>0;)r=r[Qt],n--;return r}var tu=!0;function Ks(e){let t=tu;return tu=e,t}var ng=255;var rg=5;var qI=0;var ct={};function GI(e,t,n){let r;typeof n==`string`?r=n.charCodeAt(0)||0:Object.hasOwn(n,Cn)&&(r=n[Cn]),r??=n[Cn]=qI++;let o=r&ng,i=1<>rg)]|=i}function Xs(e,t){let n=og(e,t);if(n!==-1)return n;let r=t[b];r.firstCreatePass&&(e.injectorIndex=t.length,Wl(r.data,e),Wl(t,null),Wl(r.blueprint,null));let o=Lu(e,t),i=e.injectorIndex;if(tg(o)){let s=Zs(o),a=Ys(o,t),c=a[b].data;for(let l=0;l<8;l++)t[i+l]=a[s+l]|c[s+l]}return t[i+8]=o,i}function Wl(e,t){e.push(0,0,0,0,0,0,0,0,t)}function og(e,t){return e.injectorIndex===-1||e.parent&&e.parent.injectorIndex===e.injectorIndex||t[e.injectorIndex+8]===null?-1:e.injectorIndex}function Lu(e,t){if(e.parent&&e.parent.injectorIndex!==-1)return e.parent.injectorIndex;let n=0,r=null,o=t;for(;o!==null;){if(r=ug(o),r===null)return Ir;if(n++,o=o[Qt],r.injectorIndex!==-1)return r.injectorIndex|n<<16}return Ir}function nu(e,t,n){GI(e,t,n)}function QI(e,t){if(t===`class`)return e.classes;if(t===`style`)return e.styles;let n=e.attrs;if(n){let r=n.length,o=0;for(;o>20,d=r?a:a+u,h=o?a+u:l;for(let f=d;f=c&&g.type===n)return f}if(o){let f=s[c];if(f&&ot(f)&&f.type===n)return c}return null}function Fo(e,t,n,r,o){let i=e[n],s=t.data;if(i instanceof kn){let a=i;if(a.resolving)throw ul(``);let c=Ks(a.canSeeViewProviders);a.resolving=!0;s[n].type||s[n];let d=a.injectImpl?we(a.injectImpl):null;Ll(e,r,0);try{i=e[n]=a.factory(void 0,o,s,e,r),t.firstCreatePass&&n>=r.directiveStart&&FI(n,s[n],t)}finally{d!==null&&we(d),Ks(c),a.resolving=!1,Fl()}}return i}function YI(e){if(typeof e==`string`)return e.charCodeAt(0)||0;let t=Object.hasOwn(e,Cn)?e[Cn]:void 0;return typeof t==`number`?t>=0?t&ng:KI:t}function hp(e,t,n){let r=1<>rg)]&r)}function pp(e,t){return!(e&2)&&!(e&1&&t)}var St=class{_tNode;_lView;constructor(t,n){this._tNode=t,this._lView=n}get(t,n,r){return ag(this._tNode,this._lView,t,wn(r),n)}};function KI(){return new St(ie(),D())}function lg(e){return zo(()=>{let t=e.prototype.constructor,n=t[uo]||ru(t),r=Object.prototype,o=Object.getPrototypeOf(e.prototype).constructor;for(;o&&o!==r;){let i=o[uo]||ru(o);if(i&&i!==n)return i;o=Object.getPrototypeOf(o)}return i=>new i})}function ru(e){return il(e)?()=>{let t=ru(ue(e));return t&&t()}:$t(e)}function XI(e,t,n,r,o){let i=e,s=t;for(;i!==null&&s!==null&&s[C]&2048&&!pr(s);){let a=cg(i,s,n,r|2,ct);if(a!==ct)return a;r&=-5;let c=i.parent;if(!c){let l=s[vl];if(l){let u=l.get(n,ct,r);if(u!==ct)return u}c=ug(s),s=s[Qt]}i=c}return o}function ug(e){let t=e[b],n=t.type;return n===2?t.declTNode:n===1?e[fe]:null}function ha(e){return QI(ie(),e)}function Q(e){return{token:e.token,providedIn:e.autoProvided===!1?null:`root`,factory:e.factory,value:void 0}}function JI(){return Nr(ie(),D())}function Nr(e,t){return new Mt(Ne(e,t))}var Mt=(()=>{class e{nativeElement;constructor(n){this.nativeElement=n}static __NG_ELEMENT_ID__=JI}return e})();function dg(e){return e instanceof Mt?e.nativeElement:e}function ew(){return this._results[Symbol.iterator]()}var Js=class{_emitDistinctChangesOnly;dirty=!0;_onDirty=void 0;_results=[];_changesDetected=!1;_changes=void 0;length=0;first=void 0;last=void 0;get changes(){return this._changes??=new ee}constructor(t=!1){this._emitDistinctChangesOnly=t}get(t){return this._results[t]}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,n){return this._results.reduce(t,n)}forEach(t){this._results.forEach(t)}some(t){return this._results.some(t)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(t,n){this.dirty=!1;let r=yh(t);(this._changesDetected=!mh(this._results,r,n))&&(this._results=r,this.length=r.length,this.last=r[this.length-1],this.first=r[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.next(this)}onDirty(t){this._onDirty=t}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}[Symbol.iterator]=ew};function fg(e){return(e.flags&128)===128}var Fu=(function(e){return e[e.OnPush=0]=`OnPush`,e[e.Eager=1]=`Eager`,e[e.Default=1]=`Default`,e})(Fu||{});var hg=new Map;var tw=0;function nw(){return tw++}function rw(e){hg.set(e[bo],e)}function ou(e){hg.delete(e[bo])}var gp=`__ngContext__`;function Dr(e,t){Dt(t)?(e[gp]=t[bo],rw(t)):e[gp]=t}function pg(e){return mg(e[hr])}function gg(e){return mg(e[je])}function mg(e){for(;e!==null&&!Ue(e);)e=e[je];return e}var iu;function ju(e){iu=e}function Uu(){if(iu!==void 0)return iu;if(typeof document<`u`)return document;throw new y(210,!1)}var yg=`r`;var vg=`di`;var Hu=new v(``);var Eg=!1;var Ig=new v(``,{factory:()=>Eg});var mp=new WeakMap;function ow(e,t){if(e==null||typeof e!=`object`)return;let n=mp.get(e);n||(n=new WeakSet,mp.set(e,n)),n.add(t)}function pa(e){return(e.flags&32)===32}var aw=()=>null;function wg(e,t,n=!1){return aw(e,t,n)}function Dg(e,t){let n=e.contentQueries;if(n!==null){let r=I(null);try{for(let o=0;oe,createScript:e=>e,createScriptURL:e=>e})}catch{}return Hs}function ga(e){return lw()?.createHTML(e)||e}var Vs;function Cg(){if(Vs===void 0&&(Vs=null,qt.trustedTypes))try{Vs=qt.trustedTypes.createPolicy(`angular#unsafe-bypass`,{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return Vs}function yp(e){return Cg()?.createHTML(e)||e}function vp(e){return Cg()?.createScriptURL(e)||e}function uw(e){let t=new hu(e);return dw()?new fu(t):t}var fu=class{inertDocumentHelper;constructor(t){this.inertDocumentHelper=t}getInertBodyElement(t){t=``+t;try{let n=new window.DOMParser().parseFromString(ga(t),`text/html`).body;return n===null?this.inertDocumentHelper.getInertBodyElement(t):(n.firstChild?.remove(),n)}catch{return null}}};var hu=class{defaultDoc;inertDocument;constructor(t){this.defaultDoc=t,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument(`sanitization-inert`)}getInertBodyElement(t){let n=this.inertDocument.createElement(`template`);return n.innerHTML=ga(t),n}};function dw(){try{return!!new window.DOMParser().parseFromString(ga(``),`text/html`)}catch{return!1}}var fw=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function Wo(e){return e=String(e),e.match(fw)?e:`unsafe:`+e}function _t(e){let t=Object.create(null);for(let n of e.split(`,`))t[n]=!0;return t}function qo(...e){let t=Object.create(null);for(let n of e)for(let r in n)Object.hasOwn(n,r)&&(t[r]=!0);return t}var Tg=_t(`area,br,col,hr,img,wbr`);var Mg=_t(`colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr`);var _g=_t(`rp,rt`);var hw=qo(_g,Mg);var Ep=qo(Tg,qo(Mg,_t(`address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul`)),qo(_g,_t(`a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video`)),hw);var Ng=_t(`background,cite,href,itemtype,longdesc,poster,src,xlink:href`);var vw=qo(Ng,_t(`abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width`),_t(`aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext`));var Ew=_t(`script,style,template`);var pu=class{sanitizedSomething=!1;buf=[];sanitizeChildren(t){let n=t.firstChild,r=!0,o=[];for(;n;){if(n.nodeType===Node.ELEMENT_NODE?r=this.startElement(n):n.nodeType===Node.TEXT_NODE?this.chars(n.nodeValue):this.sanitizedSomething=!0,r&&n.firstChild){o.push(n),n=Dw(n);continue}for(;n;){n.nodeType===Node.ELEMENT_NODE&&this.endElement(n);let i=ww(n);if(i){n=i;break}n=o.pop()}}return this.buf.join(``)}startElement(t){let n=Ip(t).toLowerCase();if(!Object.hasOwn(Ep,n))return this.sanitizedSomething=!0,!Object.hasOwn(Ew,n);this.buf.push(`<`),this.buf.push(n);let r=t.attributes;for(let o=0;o`),!0}endElement(t){let n=Ip(t).toLowerCase();Object.hasOwn(Ep,n)&&!Object.hasOwn(Tg,n)&&(this.buf.push(``))}chars(t){this.buf.push(wp(t))}};function Iw(e,t){return(e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINED_BY)!==Node.DOCUMENT_POSITION_CONTAINED_BY}function ww(e){let t=e.nextSibling;if(t&&e!==t.previousSibling)throw Rg(t);return t}function Dw(e){let t=e.firstChild;if(t&&Iw(e,t))throw Rg(t);return t}function Ip(e){let t=e.nodeName;return typeof t==`string`?t:`FORM`}function Rg(e){return new Error(`Failed to sanitize html because the element is clobbered: ${e.outerHTML}`)}var bw=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;var Sw=/([^\#-~ |!])/g;function wp(e){return e.replace(/&/g,`&`).replace(bw,function(t){let n=t.charCodeAt(0),r=t.charCodeAt(1);return`&#`+((n-55296)*1024+(r-56320)+65536)+`;`}).replace(Sw,function(t){return`&#`+t.charCodeAt(0)+`;`}).replace(//g,`>`)}var $s;function ma(e,t){let n=null;try{$s=$s||uw(e);let r=t?String(t):``;n=$s.getInertBodyElement(r);let o=5,i=r;do{if(o===0)throw new Error(`Failed to sanitize html because the input is unstable`);o--,r=i,i=n.innerHTML,n=$s.getInertBodyElement(r)}while(r!==i);return ga(new pu().sanitizeChildren(Dp(n)||n))}finally{if(n){let r=Dp(n)||n;for(;r.firstChild;)r.firstChild.remove()}}}function Dp(e){return`content`in e&&Cw(e)?e.content:null}function Cw(e){return e.nodeType===Node.ELEMENT_NODE&&e.nodeName===`TEMPLATE`}function Tw(e,t){return e.createText(t)}function Mw(e,t,n){e.setValue(t,n)}function xg(e,t,n){return e.createElement(t,n)}function An(e,t,n,r,o){e.insertBefore(t,n,r,o)}function Ag(e,t,n){e.appendChild(t,n)}function bp(e,t,n,r,o){r!==null?An(e,t,n,r,o):Ag(e,t,n)}function Og(e,t,n,r){e.removeChild(null,t,n,r)}function _w(e,t,n){e.setAttribute(t,`style`,n)}function Nw(e,t,n){n===``?e.removeAttribute(t,`class`):e.setAttribute(t,`class`,n)}function kg(e,t,n){let{mergedAttrs:r,classes:o,styles:i}=n;r!==null&&$I(e,t,r),o!==null&&Nw(e,t,o),i!==null&&_w(e,t,i)}function Rw(e,t=!0){if(e[0]!=`:`)return[null,e];let n=e.indexOf(`:`,1);if(n===-1){if(t)throw new Error(`Unsupported format "${e}" expecting ":namespace:name"`);return[null,e]}return[e.slice(1,n),e.slice(n+1)]}function qu(e,t,n){if(t!==void 0&&n!==void 0&&Fg(t,n)!==W.HTML)return e;let r=Qu();return r?yp(r.sanitize(W.HTML,e)||``):lt(e,`HTML`)?yp(Re(e)):ma(Uu(),Wt(e))}function Pg(e){let t=Qu();return t?t.sanitize(W.URL,e)||``:lt(e,`URL`)?Re(e):Wo(Wt(e))}function Lg(e){let t=Qu();if(t)return vp(t.sanitize(W.RESOURCE_URL,e)||``);if(lt(e,`ResourceURL`))return vp(Re(e));throw new y(-904,!1)}function xw(e,t){switch(Fg(e,t)){case W.RESOURCE_URL:return Lg;case W.URL:return Pg;default:return null}}function Gu(e,t,n){return xw(t,n)?.(e)??e}function Qu(){let e=D();return e&&e[Ye].sanitizer}function Fg(e,t){let[n,r]=Aw(e);return Nh(r,t,n)}function Aw(e){e=e.toLowerCase();let t=Rw(e,!1);if(t[0])return t;let r=at()===-1?null:Kt(),o=r?.namespace;if(e===`#host`&&r?.type===2){let i=Ne(r,D());if(i.tagName&&(e=i.tagName.toLowerCase()),o==null){let s=i.namespaceURI;o=s&&cw[s]}}return[o,e]}function Ow(e){return e.ownerDocument}function kw(e){return e instanceof Function?e():e}function Pw(e,t,n){let r=e.length;for(;;){let o=e.indexOf(t,n);if(o===-1)return o;if(o===0||e.charCodeAt(o-1)<=32){let i=t.length;if(o+i===r||e.charCodeAt(o+i)<=32)return o}n=o+1}}var jg=`ng-template`;function Lw(e,t,n,r){let o=0;if(r){for(;o-1){let i;for(;++oi?d=``:d=o[u+1].toLowerCase(),r&2&&l!==d){if(Ke(r))return!1;s=!0}}}}return Ke(r)||s}function Ke(e){return(e&1)===0}function Uw(e,t,n,r){if(t===null)return-1;let o=0;if(r||!n){let i=!1;for(;o-1)for(n++;n0?`="`+a+`"`:``)+`]`}else r&8?o+=`.`+s:r&4&&(o+=` `+s);else o!==``&&!Ke(s)&&(t+=Sp(i,o),o=``),r=s,i=i||!Ke(r);n++}return o!==``&&(t+=Sp(i,o)),t}function Ww(e){return e.map(zw).join(`,`)}function qw(e){let t=[],n=[],r=1,o=2;for(;r=0;a--){let{el:c,declarationView:l}=r[a],u=c.parentNode;c===t?(r.splice(a,1),vr.add(c),c.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}}))):i&&c===i?(r.splice(a,1),c.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}})),c.parentNode?.removeChild(c)):u&&o&&u!==o&&(s===null||l===null||s===l)&&(r.splice(a,1),c.dispatchEvent(new CustomEvent(`animationend`,{detail:{cancel:!0}})),c.parentNode?.removeChild(c))}}function Zw(e,t,n){let r=Hg(n),o=gu.get(e);o?o.some(i=>i.el===t)||o.push({el:t,declarationView:r}):gu.set(e,[{el:t,declarationView:r}])}var Xu=(function(e){return e[e.CHANGE_DETECTION=0]=`CHANGE_DETECTION`,e[e.AFTER_NEXT_RENDER=1]=`AFTER_NEXT_RENDER`,e})(Xu||{});var Jt=new v(``);var Cp=new Set;function Nt(e){Cp.has(e)||(Cp.add(e),performance?.mark?.(`mark_feature_usage`,{detail:{feature:e}}))}var Vg=(()=>{class e{impl=null;execute(){this.impl?.execute()}static ɵprov=T({token:e,providedIn:`root`,factory:()=>new e})}return e})();var mu=null;var $g=null;function Tp(e,t,n,r){mu?.maybeQueueEnterAnimation(e,t,n,r)}function Mp(e,t,n,r){mu===null?r(!1):mu.runLeaveAnimationsWithCallback(e,t,n,r)}function Yw(e){$g?.initViewDetachAnimations(e)}function Kw(e){$g?.clearViewDetachAnimations(e)}function Er(e,t,n,r,o,i,s,a){if(o!=null){let c,l=!1;Ue(o)?c=o:Dt(o)&&(l=!0,o=o[Ze]);let u=he(o);e===0&&r!==null?(Tp(a,r,i,n),s==null?Ag(t,r,u):An(t,r,u,s||null,!0)):e===1&&r!==null?(An(t,r,u,s||null,!0),Qw(i,u,a),vr.has(u)||Tp(a,r,i,n)):e===2?(a?.[Mh]?.leave?.has(i.index)&&Zw(i,u,a),vr.delete(u),Mp(a,i,n,d=>{if(vr.has(u)){vr.delete(u);return}Og(t,u,l,d)})):e===3&&(vr.delete(u),Mp(a,i,n,()=>{t.destroyNode(u)})),c!=null&&cD(t,e,n,c,i,r,s)}}function Xw(e,t){Bg(e,t),t[Ze]=null,t[fe]=null}function Jw(e,t,n,r,o,i){r[Ze]=o,r[fe]=t,va(e,r,n,1,o,i)}function Bg(e,t){t[Ye].changeDetectionScheduler?.notify(9),va(e,t,t[B],2,null,null)}function eD(e){let t=e[hr];if(!t)return ql(e[b],e);for(;t;){let n=null;if(Dt(t))n=t[hr];else{let r=t[J];r&&(n=r)}if(!n){for(;t&&!t[je]&&t!==e;)Dt(t)&&ql(t[b],t),t=t[ne];t===null&&(t=e),Dt(t)&&ql(t[b],t),n=t&&t[je]}t=n}}function Ju(e,t){let n=e[Rn],r=n.indexOf(t);n.splice(r,1)}function ya(e,t){if(xn(t))return;let n=t[B];n.destroyNode&&va(e,t,n,3,null,null),eD(t)}function ql(e,t){if(xn(t))return;let n=I(null);try{t[C]&=-129,t[C]|=256,t[Ae]&&En(t[Ae]),nD(e,t),tD(e,t),t[b].type===1&&t[B].destroy();let r=t[Zt];if(r!==null&&Ue(t[ne])){r!==t[ne]&&Ju(r,t);let o=t[nt];o!==null&&o.detachView(e)}ou(t)}finally{I(n)}}function tD(e,t){let n=e.cleanup,r=t[fr];if(n!==null)for(let s=0;s=0?r[a]():r[-a].unsubscribe(),s+=2}else{let a=r[n[s+1]];n[s].call(a)}r!==null&&(t[fr]=null);let o=t[vt];if(o!==null){t[vt]=null;for(let s=0;sZ&&Yg(e,t,Z,!1);z(s?L.TemplateUpdateStart:L.TemplateCreateStart,o,n),n(r,o)}finally{Yt(i);z(s?L.TemplateUpdateEnd:L.TemplateCreateEnd,o,n)}}function Xg(e,t,n){vD(e,t,n),(n.flags&64)===64&&ED(e,t,n)}function id(e,t,n=Ne){let r=t.localNames;if(r!==null){let o=t.index+1;for(let i=0;i=a&&f<=c){let g=t.data[f],w=d[h+1];Pn(g,n[f],w,i),l=!0}else if(f>c)break}}return s!==null&&Object.hasOwn(r.inputs,o)&&(Pn(r,n[s],o,i),l=!0),l}function TD(e,t){let n=He(t,e),r=n[b];MD(r,n);let o=n[Ze];o!==null&&n[Mn]===null&&(n[Mn]=wg(o,n[wt])),z(L.ComponentStart);try{sd(r,n,n[X])}finally{z(L.ComponentEnd,n[X])}}function MD(e,t){for(let n=t.length;n{gr(e.lView)},consumerOnSignalRead(){this.lView[Ae]=this}});function OD(e){let t=e[Ae]??Object.create(kD);return t.lView=e,t}var kD=l(k$1({},jt),{consumerIsAlwaysLive:!0,kind:`template`,consumerMarkedDirty:e=>{let t=It(e.lView);for(;t&&!lm(t[b]);)t=It(t);t&&Sl(t)},consumerOnSignalRead(){this.lView[Ae]=this}});function lm(e){return e.type!==2}function um(e){if(e[Et]===null)return;let t=!0;for(;t;){let n=!1;for(let r of e[Et])if(r.dirty&&(n=!0,r.zone===null||Zone.current===r.zone?r.run():r.zone.run(()=>r.run()),e[Et]===null))return;t=n&&!!(e[C]&8192)}}var PD=100;function dm(e,t=0){let r=e[Ye].rendererFactory;r.begin?.();try{LD(e,t)}finally{r.end?.()}}function LD(e,t){let n=kl();try{fo(!0),vu(e,t);let r=0;for(;To(e);){if(r===PD)throw new y(103,!1);r++,vu(e,1)}}finally{fo(n)}}function FD(e,t,n,r){if(xn(t))return;let o=t[C];Rs(t);let a=!0,c=null,l=null;lm(e)?(l=ND(t),c=Ht(l)):ns()===null?(a=!1,l=OD(t),c=Ht(l)):t[Ae]&&(En(t[Ae]),t[Ae]=null);try{bl(t),Bh(e.bindingStartIndex),n!==null&&Kg(e,t,n,2,r);let u=(o&3)===3;if(u){let f=e.preOrderCheckHooks;f!==null&&zs(t,f,null)}else{let f=e.preOrderHooks;f!==null&&Ws(t,f,0,null),zl(t,0)}if(jD(t),um(t),fm(t,0),e.contentQueries!==null&&Dg(e,t),true)if(u){let f=e.contentCheckHooks;f!==null&&zs(t,f)}else{let f=e.contentHooks;f!==null&&Ws(t,f,1),zl(t,1)}HD(e,t);let d=e.components;d!==null&&pm(t,d,0);let h=e.viewQuery;if(h!==null&&su(2,h,r),true)if(u){let f=e.viewCheckHooks;f!==null&&zs(t,f)}else{let f=e.viewHooks;f!==null&&Ws(t,f,2),zl(t,2)}if(e.firstUpdatePass===!0&&(e.firstUpdatePass=!1),t[Es]){for(let f of t[Es])f();t[Es]=null}am(t),t[C]&=-73}catch(u){let d=!1,h=u,f=t;for(;f!==null;){if(Ue(f)){f=f[ne];continue}let g=f[So];if(g)try{let w=t[Ee][X],_={declarationInstance:w,declarationType:w?.constructor,caughtBy:g},O=I(null);try{g(rp(h),_)}finally{I(O)}d=!0;break}catch(w){h=w}f=f[ne]}if(!d)throw gr(t),h}finally{l!==null&&(vn(l,c),a&&xD(l)),xs()}}function fm(e,t){for(let n=pg(e);n!==null;n=gg(n))for(let r=J;r0&&(e[n-1][je]=r[je]);let i=Io(e,J+t);Xw(r[b],r);let s=i[nt];s!==null&&s.detachView(i[b]),r[ne]=null,r[je]=null,r[C]&=-129}return r}function VD(e,t,n,r){let o=J+r,i=n.length;r>0&&(n[o-1][je]=t),r-1&&(Uo(t,r),Io(n,r))}this._attachedToViewContainer=!1}ya(this._lView[b],this._lView)}onDestroy(t){Ms(this._lView,t)}markForCheck(){ad(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[C]&=-129}reattach(){Ts(this._lView),this._lView[C]|=128}detectChanges(){this._lView[C]|=1024,dm(this._lView)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new y(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;let t=pr(this._lView),n=this._lView[Zt];n!==null&&!t&&Ju(n,this._lView),Bg(this._lView[b],this._lView)}attachToAppRef(t){if(this._attachedToViewContainer)throw new y(902,!1);this._appRef=t;let n=pr(this._lView),r=this._lView[Zt];r!==null&&!n&&vm(r,this._lView),Ts(this._lView)}};var Ho=(()=>{class e{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=$D;constructor(n,r,o){this._declarationLView=n,this._declarationTContainer=r,this.elementRef=o}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(n,r){return this.createEmbeddedViewImpl(n,r)}createEmbeddedViewImpl(n,r,o){return new Xt(Qo(this._declarationLView,this._declarationTContainer,n,{embeddedViewInjector:r,dehydratedView:o}))}}return e})();function $D(){return cd(ie(),D())}function cd(e,t){return e.type&4?new Ho(t,e,Nr(e,t)):null}function Yo(e,t,n,r,o){let i=e.data[t];if(i===null)i=BD(e,t,n,r,o),zh()&&(i.flags|=32);else if(i.type&64){i.type=n,i.value=r,i.attrs=o;let s=Hh();i.injectorIndex=s===null?-1:s.injectorIndex}return mr(i,!0),i}function BD(e,t,n,r,o){let i=xl(),s=Al(),a=s?i:i&&i.parent,c=e.data[t]=WD(e,a,n,t,r,o);return zD(e,c,i,s),c}function zD(e,t,n,r){e.firstChild===null&&(e.firstChild=t),n!==null&&(r?n.child==null&&t.parent!==null&&(n.child=t):n.next===null&&(n.next=t,t.prev=n))}function WD(e,t,n,r,o,i){let s=t?t.injectorIndex:-1,a=0;return _l()&&(a|=128),{type:n,index:r,insertBeforeIndex:null,injectorIndex:s,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,controlDirectiveIndex:-1,customControlIndex:-1,propertyBindings:null,flags:a,providerIndexes:0,value:o,namespace:jl(),attrs:i,mergedAttrs:null,localNames:null,initialInputs:null,inputs:null,hostDirectiveInputs:null,outputs:null,hostDirectiveOutputs:null,directiveToIndex:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:t,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}function qD(e){let t=e[El]??[],r=e[ne][B],o=[];for(let i of t)i.data[vg]!==void 0?o.push(i):GD(i,r);e[El]=o}function GD(e,t){let n=0,r=e.firstChild;if(r){let o=e.data[yg];for(;nnull;var ZD=()=>null;function ea(e,t){return QD(e,t)}function Em(e,t,n){return ZD(e,t,n)}var Im=class{};var Ln=class{};var Fn=class{destroyNode=null;static __NG_ELEMENT_ID__=()=>YD()};function YD(){let e=D(),n=He(ie().index,e);return(Dt(n)?n:e)[B]}var wm=(()=>{class e{static ɵprov=T({token:e,providedIn:`root`,factory:()=>null})}return e})();function Dm(e){return e.debugInfo?.className||e.type.name||null}var Gs={};var ta=class{injector;parentInjector;constructor(t,n){this.injector=t,this.parentInjector=n}get(t,n,r){let o=this.injector.get(t,Gs,r);return o!==Gs||n===Gs?o:this.parentInjector.get(t,n,r)}};function ld(e,t,n){return e[t]=n}function KD(e,t){return e[t]}function Oe(e,t,n){if(n===xe)return!1;let r=e[t];return Object.is(r,n)?!1:(e[t]=n,!0)}function bm(e,t,n,r){let o=Oe(e,t,n);return Oe(e,t+1,r)||o}function On(e,t,n){return function r(o){let i=r.__ngNativeEl__;i!==void 0&&ow(o,i);ad(rt(e)?He(e.index,t):t,5);let a=t[X],c=Np(t,a,n,o),l=r.__ngNextListenerFn__;for(;l;)c=Np(t,a,l,o)&&c,l=l.__ngNextListenerFn__;return c}}function Np(e,t,n,r){let o=I(null);try{return z(L.OutputStart,t,n),n(r)!==!1}catch(i){return SD(e,i),!1}finally{z(L.OutputEnd,t,n),I(o)}}function ud(e,t,n,r,o,i,s,a){let c=ws(e),l=!1,u=null;if(!r&&c&&(u=JD(t,n,i,e.index)),u!==null){let d=u.__ngLastListenerFn__||u;d.__ngNextListenerFn__=s,u.__ngLastListenerFn__=s,l=!0}else{let d=Ne(e,n),h=r?r(d):d;r||(a.__ngNativeEl__=d);let f=o.listen(h,i,a);if(!XD(i))Sm(r?w=>r(he(w[e.index])):e.index,t,n,i,a,f,!1)}return l}function XD(e){return e.startsWith(`animation`)||e.startsWith(`transition`)}function JD(e,t,n,r){let o=e.cleanup;if(o!=null)for(let i=0;ic?a[c]:null}typeof s==`string`&&(i+=2)}return null}function Sm(e,t,n,r,o,i,s){let a=t.firstCreatePass?Tl(t):null,c=Cl(n),l=c.length;c.push(o,i),a&&a.push(r,e,l,(l+1)*(s?-1:1))}function Rp(e,t,n,r,o){let i=null,s=null,a=null,c=!1,l=e.directiveToIndex.get(n.type);if(typeof l==`number`?i=l:[i,s,a]=l,s!==null&&a!==null&&e.hostDirectiveOutputs&&Object.hasOwn(e.hostDirectiveOutputs,r)){let u=e.hostDirectiveOutputs[r];for(let d=0;d=s&&h<=a)c=!0,na(e,t,h,u[d+1],r,o);else if(h>a)break}}return Object.hasOwn(n.outputs,r)&&(c=!0,na(e,t,i,r,r,o)),c}function na(e,t,n,r,o,i){let s=t[n],a=t[b],d=s[a.data[n].outputs[r]].subscribe(i);Sm(e.index,a,t,o,i,d,!0)}function eb(){tb()}function tb(){let e=D(),t=q(),n=ie();if(t.firstCreatePass&&ob(t,n),n.controlDirectiveIndex===-1)return;Nt(`NgSignalForms`);let r=e[n.controlDirectiveIndex];t.data[n.controlDirectiveIndex].controlDef.create(r,new ra(e,t,n))}function nb(){rb()}function rb(){let e=D(),t=q(),n=Kt();if(n.controlDirectiveIndex===-1)return;let r=t.data[n.controlDirectiveIndex].controlDef,o=e[n.controlDirectiveIndex];r.update(o,new ra(e,t,n))}var ra=class{lView;tView;tNode;hasPassThrough;constructor(t,n,r){this.lView=t,this.tView=n,this.tNode=r,this.hasPassThrough=!!(r.flags&4096)}get customControl(){return this.tNode.customControlIndex!==-1?this.lView[this.tNode.customControlIndex]:void 0}get nativeElement(){return Ne(this.tNode,this.lView)}get descriptor(){return`<${this.tNode.value}>`}listenToCustomControlOutput(t,n){let r=this.tView.data[this.tNode.customControlIndex];Rp(this.tNode,this.lView,r,t,On(this.tNode,this.lView,n))}listenToCustomControlModel(t){let n=this.tNode.flags&1024?`valueChange`:`checkedChange`,r=this.tView.data[this.tNode.customControlIndex];Rp(this.tNode,this.lView,r,n,On(this.tNode,this.lView,t))}listenToDom(t,n){ud(this.tNode,this.tView,this.lView,void 0,this.lView[B],t,n,On(this.tNode,this.lView,n))}setInputOnDirectives(t,n,r){let o=this.tNode.inputs?.[t],i=this.tNode.hostDirectiveInputs?.[t];if(!o&&!i)return!1;let s=!1;if(o)for(let a of o){if(a===this.tNode.controlDirectiveIndex)continue;let c=this.lView[a],l=this.tView.data[a];(!r||r(Ap(c,l,t)))&&(Pn(l,c,t,n),s=!0)}if(i)for(let a=0;a0;){let o=r.shift();if(typeof o!=`function`){for(let s in o.inputs)n[o.inputs[s]]=!0;let i=xp(o.directive);i!==null&&r.push(...i);continue}for(let i of o()){if(typeof i==`function`)continue;if(i.inputs)for(let a=0;a1){t.flags|=4096;return}ib(e,t)}function ib(e,t){for(let n=t.directiveStart;n{let i=t.hostDirectiveInputs[r],s=t.hostDirectiveOutputs[r+`Change`];if(!i||!s)return!1;for(let a=0;a=f&&c<=g)return t.flags|=o,t.customControlIndex=h,!0}}return!1};if(n(`value`,1024)||n(`checked`,2048))return}}function Op(e,t){return sb(e,t)&&ab(e,t+`Change`)}function sb(e,t){return t in e.inputs}function ab(e,t){return t in e.outputs}var Eu=Symbol(`BINDING`);var Un=new v(``);function oa(e,t,n){let r=n?e.styles:null,o=n?e.classes:null,i=0;if(t!==null)for(let s=0;s0&&(n.directiveToIndex=new Map);for(let h=0;h0;){let n=e[--t];if(typeof n==`number`&&n<0)return n}return 0}function mb(e,t,n){if(n){if(t.exportAs)for(let r=0;r{let[n,r,o]=e[t],i={propName:n,templateName:t,isSignal:(r&Go.SignalBased)!==0};return o&&(i.transform=o),i})}function wb(e){return Object.keys(e).map(t=>({propName:e[t],templateName:t}))}function Db(e,t,n){let r=t instanceof K?t:t?.injector;return r&&e.getStandaloneInjector!==null&&(r=e.getStandaloneInjector(r)||r),r?new ta(n,r):n}function bb(e){let t=e.get(Ln,null);if(t===null)throw new y(407,!1);return{rendererFactory:t,sanitizer:e.get(wm,null),changeDetectionScheduler:e.get(Bt,null),ngReflect:!1,tracingService:e.get(Jt,null,{optional:!0})}}function Sb(e,t,n){let r=Nm(e);return xg(t,r,r===`svg`?Sn:r===`math`?Ds:n)}function Cb(e){if((e&&`localName`in e&&typeof e.localName==`string`?e.localName:e?.tagName)?.toLowerCase()===`script`)throw new y(905,!1)}function Nm(e){return(e.selectors[0][0]||`div`).toLowerCase()}var Sr=class{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=Ib(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=wb(this.componentDef.outputs),this.cachedOutputs}constructor(t,n){this.componentDef=t,this.ngModule=n,this.componentType=t.type,this.selector=Ww(t.selectors),this.ngContentSelectors=t.ngContentSelectors??[],this.isBoundToModule=!!n}create(t,n,r,o,i,s,a,c){z(L.DynamicComponentStart);let l=I(null);try{let u=this.componentDef,d=Db(u,o||this.ngModule,t),h=bb(d),f=h.tracingService;return f&&f.componentCreate?f.componentCreate(Dm(u),()=>this.createComponentRef(h,d,n,r,i,s,a,c)):this.createComponentRef(h,d,n,r,i,s,a,c)}finally{I(l)}}createComponentRef(t,n,r,o,i,s,a,c){let l=this.componentDef,u=Tb(o,l,s,i,c),d=t.rendererFactory.createRenderer(null,l),h=o?pD(d,o,l.encapsulation,n):Sb(l,d,a??null);Cb(h);let f=n.get(Un,null),g=Mb(h,()=>n.get(G,null)??Uu());f&&f.addHost(g);let w=s?.some(Fp)||i?.some(O=>typeof O!=`function`&&O.bindings.some(Fp)),E=rd(null,u,null,512|Qg(l),null,null,t,d,n,null,wg(h,n,!0));f&&_m&&g instanceof ShadowRoot&&Ms(E,()=>{f.removeHost(g)}),E[Z]=h,Rs(E);let _=null;try{let O=Tm(Z,E,2,`#host`,()=>u.directiveRegistry,!0,0);kg(d,h,O),Dr(h,E),Xg(u,E,O),bg(u,O,E),Mm(u,O),r!==void 0&&Nb(O,this.ngContentSelectors,r),_=He(O.index,E),E[X]=_[X],sd(u,E,null)}catch(O){throw _!==null&&ou(_),ou(E),O}finally{z(L.DynamicComponentEnd),xs()}return new ia(this.componentType,E,!!w)}};function Tb(e,t,n,r,o){let i=e?[`ng-version`,`22.2.2`]:qw(t.selectors[0]),s=null,a=null,c=0;if(n)for(let d of n)c+=d[Eu].requiredVars,d.create&&(d.targetIdx=0,(s??=[]).push(d)),d.update&&(d.targetIdx=0,(a??=[]).push(d));if(r)for(let d=0;d{if(n&1&&e)for(let r of e)r.create();if(n&2&&t)for(let r of t)r.update()}}function Fp(e){let t=e[Eu].kind;return t===`input`||t===`twoWay`}var ia=class extends Im{_rootLView;_hasInputBindings;instance;hostView;changeDetectorRef;componentType;location;previousInputValues=null;_tNode;constructor(t,n,r){super(),this._rootLView=n,this._hasInputBindings=r,this._tNode=bs(n[b],Z),this.location=Nr(this._tNode,n),this.instance=He(this._tNode.index,n)[X],this.hostView=this.changeDetectorRef=new Xt(n,void 0),this.componentType=t}setInput(t,n){this._hasInputBindings;let r=this._tNode;if(this.previousInputValues??=new Map,this.previousInputValues.has(t)&&Object.is(this.previousInputValues.get(t),n))return;let o=this._rootLView;Ea(r,o[b],o,t,n);this.previousInputValues.set(t,n);ad(He(r.index,o),1)}get injector(){return new St(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(t){this.hostView.onDestroy(t)}};function Nb(e,t,n){let r=e.projection=[];for(let o=0;o{class e{static __NG_ELEMENT_ID__=Rb}return e})();function Rb(){return Rm(ie(),D())}var Iu=class e extends Rr{_lContainer;_hostTNode;_hostLView;constructor(t,n,r){super(),this._lContainer=t,this._hostTNode=n,this._hostLView=r}get element(){return Nr(this._hostTNode,this._hostLView)}get injector(){return new St(this._hostTNode,this._hostLView)}get parentInjector(){let t=Lu(this._hostTNode,this._hostLView);if(tg(t)){let n=Ys(t,this._hostLView),r=Zs(t),o=n[b].data[r+8];return new St(o,n)}else return new St(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){let n=jp(this._lContainer);return n!==null&&n[t]||null}get length(){return this._lContainer.length-J}createEmbeddedView(t,n,r){let o,i,s;typeof r==`number`?o=r:r!=null&&(o=r.index,i=r.injector,s=r.onError);let a=ea(this._lContainer,t.ssrId),c=t.createEmbeddedViewImpl(n||{},i,a);return s&&(c._lView[So]=s),this.insertImpl(c,o,br(this._hostTNode,a)),c}createComponent(t,n,r,o,i,s,a){let c,l,u=n||{};c=u.index,r=u.injector,o=u.projectableNodes,i=u.environmentInjector||u.ngModuleRef,s=u.directives,a=u.bindings,l=u.onError;let d=new Sr(zt(t)),h=r||this.parentInjector;if(!i&&d.ngModule==null){let O=this.parentInjector.get(K,null);O&&(i=O)}let f=zt(d.componentType??{}),g=ea(this._lContainer,f?.id??null),w=g?.firstChild??null,E=d.create(h,o,w,i,s,a,this._getHostElementNamespace());return l&&(E.hostView._lView[So]=l),this.insertImpl(E.hostView,c,br(this._hostTNode,g)),E}_getHostElementNamespace(){if(this._hostTNode.type&2){let t=this._hostTNode.parent??this._hostLView[fe];return t!==null&&t.type&2&&typeof t.value==`string`&&t.value.toLowerCase()===`foreignobject`?null:t?.namespace??null}return this._hostTNode.namespace}insert(t,n){return this.insertImpl(t,n,!0)}insertImpl(t,n,r){let o=t._lView;if(xh(o)){let a=this.indexOf(t);if(a!==-1)this.detach(a);else{let c=o[ne],l=new e(c,c[fe],c[ne]);l.detach(l.indexOf(t))}}let i=this._adjustIndex(n),s=this._lContainer;return Zo(s,o,i,r),t.attachToViewContainerRef(),fl(Gl(s),i,t),t}move(t,n){return this.insert(t,n)}indexOf(t){let n=jp(this._lContainer);return n!==null?n.indexOf(t):-1}remove(t){let n=this._adjustIndex(t,-1),r=Uo(this._lContainer,n);r&&(Io(Gl(this._lContainer),n),ya(r[b],r))}detach(t){let n=this._adjustIndex(t,-1),r=Uo(this._lContainer,n);return r&&Io(Gl(this._lContainer),n)!=null?new Xt(r):null}_adjustIndex(t,n=0){return t??this.length+n}};function jp(e){return e[Co]}function Gl(e){return e[Co]||(e[Co]=[])}function Rm(e,t){let n,r=t[e.index];return Ue(r)?n=r:(n=gm(r,t,null,e),t[e.index]=n,od(t,n)),Ab(n,t,e,r),new Iu(n,e,t)}function xb(e,t){let n=e[B],r=n.createComment(``),o=Ne(t,e);return An(n,n.parentNode(o),r,n.nextSibling(o),!1),r}var Ab=Pb;var Ob=()=>!1;function kb(e,t,n){return Ob(e,t,n)}function Pb(e,t,n,r){if(e[Nn])return;let o;n.type&8?o=he(r):o=xb(t,n),e[Nn]=o}var wu=class e{queryList;matches=null;constructor(t){this.queryList=t}clone(){return new e(this.queryList)}setDirty(){this.queryList.setDirty()}};var Du=class e{queries;constructor(t=[]){this.queries=t}createEmbeddedView(t){let n=t.queries;if(n!==null){let r=t.contentQueries!==null?t.contentQueries[0]:n.length,o=[];for(let i=0;i0)r.push(s[a/2]);else{let l=i[a+1],u=t[-c];for(let d=J;dt.trim())}function Om(e,t,n){e.queries===null&&(e.queries=new bu),e.queries.track(new Su(t,n))}function Bb(e,t){let n=e.contentQueries||(e.contentQueries=[]);t!==(n.length?n[n.length-1]:-1)&&n.push(e.queries.length-1,t)}function fd(e,t){return e.queries.getByIndex(t)}function km(e,t){let n=e[b],r=fd(n,t);return r.crossesNgTemplate?Cu(n,e,t,[]):xm(n,e,r,t)}function Pm(e,t,n){let r,o=so(()=>{r._dirtyCounter();let i=Wb(r,e);if(t&&i===void 0)throw new y(-951,!1);return i});return r=o[Y],r._dirtyCounter=k(0),r._flatValue=void 0,o}function Lm(e){return Pm(!0,!1,e)}function Fm(e){return Pm(!0,!0,e)}function zb(e,t){let n=e[Y];n._lView=D(),n._queryIndex=t,n._queryList=dd(n._lView,t),n._queryList.onDirty(()=>n._dirtyCounter.update(r=>r+1))}function Wb(e,t){let n=e._lView,r=e._queryIndex;if(n===void 0||r===void 0||n[C]&4)return t?void 0:Me;let o=dd(n,r),i=km(n,r);return o.reset(i,dg),t?o.first:o._changesDetected||e._flatValue===void 0?e._flatValue=o.toArray():e._flatValue}function Xo(e){return!!e&&typeof e.then==`function`}function jm(e){return!!e&&typeof e.subscribe==`function`}var Cr=class{};var Ia=class{};var aa=class extends Cr{ngModuleType;_parent;_bootstrapComponents=[];_r3Injector;instance;destroyCbs=[];constructor(t,n,r,o=!0){super(),this.ngModuleType=t,this._parent=n;let i=dh(t);this._bootstrapComponents=kw(i.bootstrap),this._r3Injector=Ul(t,n,[{provide:Cr,useValue:this},...r],go(t),new Set([`environment`])),o&&this.resolveInjectorInitializers()}resolveInjectorInitializers(){this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(this.ngModuleType)}get injector(){return this._r3Injector}destroy(){let t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach(n=>n()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}};var ca=class extends Ia{moduleType;constructor(t){super(),this.moduleType=t}create(t){return new aa(this.moduleType,t,[])}};var Vo=class extends Cr{injector;instance=null;constructor(t){super();let n=new bn([...t.providers,{provide:Cr,useValue:this}],t.parent||Do(),t.debugName,new Set([`environment`]));this.injector=n,t.runEnvironmentInitializers&&n.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(t){this.injector.onDestroy(t)}};function Jo(e,t,n=null){return new Vo({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}var qb=(()=>{class e{_injector;cachedInjectors=new Map;constructor(n){this._injector=n}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n)){let r=pl(!1,n.type),o=r.length>0?Jo([r],this._injector,``):null;this.cachedInjectors.set(n,o)}return this.cachedInjectors.get(n)}ngOnDestroy(){try{for(let n of this.cachedInjectors.values())n!==null&&n.destroy()}finally{this.cachedInjectors.clear()}}static ɵprov=T({token:e,providedIn:`environment`,factory:()=>new e(S(K))})}return e})();function ei(e){return zo(()=>{let t=Um(e),n=l(k$1({},t),{decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection!==Fu.Eager,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:t.standalone?o=>o.get(qb).getOrCreateStandaloneInjector(n):null,getExternalStyles:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||Xe.Emulated,styles:e.styles||Me,_:null,schemas:e.schemas||null,tView:null,id:``});t.standalone&&Nt(`NgStandalone`),Hm(n);let r=e.dependencies;return n.directiveDefs=Up(r,Gb),n.pipeDefs=Up(r,fh),n.id=Yb(n),n})}function Gb(e){return zt(e)||hs(e)}function wa(e){return zo(()=>({type:e.type,bootstrap:e.bootstrap||Me,declarations:e.declarations||Me,imports:e.imports||Me,exports:e.exports||Me,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function Qb(e,t){if(e==null)return Gt;let n={};for(let r in e)if(Object.hasOwn(e,r)){let o=e[r],i,s,a,c;Array.isArray(o)?(a=o[0],i=o[1],s=o[2]??i,c=o[3]||null):(i=o,s=o,a=Go.None,c=null),n[i]=[r,a,c],t[i]=s}return n}function Zb(e){if(e==null)return Gt;let t={};for(let n in e)Object.hasOwn(e,n)&&(t[e[n]]=n);return t}function xr(e){return zo(()=>{let t=Um(e);return Hm(t),t})}function hd(e){return{type:e.type,name:e.name,factory:null,pure:e.pure!==!1,standalone:e.standalone??!0,onDestroy:e.type.prototype.ngOnDestroy||null}}function Um(e){let t={};return{type:e.type,providersResolver:null,viewProvidersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputConfig:e.inputs||Gt,exportAs:e.exportAs||null,standalone:e.standalone??!0,signals:e.signals===!0,selectors:e.selectors||Me,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,controlDef:null,signalFormsInputPresence:null,inputs:Qb(e.inputs,t),outputs:Zb(e.outputs),debugInfo:null}}function Hm(e){e.features?.forEach(t=>t(e))}function Up(e,t){return e?()=>{let n=typeof e==`function`?e():e,r=[];for(let o of n){let i=t(o);i!==null&&r.push(i)}return r}:null}function Yb(e){let t=0,n=typeof e.consts==`function`?``:e.consts,r=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,n,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery];for(let i of r.join(`|`))t=Math.imul(31,t)+i.charCodeAt(0)<<0;return t+=2147483648,`c`+t}var Vm=new v(``);var pd=(()=>{class e{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((n,r)=>{this.resolve=n,this.reject=r});appInits=p(Vm,{optional:!0})??[];injector=p(_e);constructor(){}runInitializers(){if(this.initialized)return;let n=[];for(let o of this.appInits){let i=oe(this.injector,o);if(Xo(i))n.push(i);else if(jm(i)){let s=new Promise((a,c)=>{i.subscribe({complete:a,error:c})});n.push(s)}}let r=()=>{this.done=!0,this.resolve()};Promise.all(n).then(()=>{r()}).catch(o=>{this.reject(o)}),n.length===0&&r(),this.initialized=!0}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();function Kb(e){return t=>{t.controlDef={create:(n,r)=>{n?.ɵngControlCreate(r)},update:(n,r)=>{n?.ɵngControlUpdate?.(r)},passThroughInput:e}}}function Xb(e){return Object.getPrototypeOf(e.prototype).constructor}function $m(e){let t=Xb(e.type),n=!0,r=[e];for(;t&&t!==Function.prototype&&t!==Object.prototype;){let o,i=Object.hasOwn(t,vo)?t[vo]:void 0,s=Object.hasOwn(t,Eo)?t[Eo]:void 0;if(ot(e))o=i??s;else{if(i)throw new y(903,!1);o=s}if(o){if(n){r.push(o);let c=e;c.inputs=Ql(e.inputs),c.declaredInputs=Ql(e.declaredInputs),c.outputs=Ql(e.outputs);let l=o.hostBindings;l&&rS(e,l);let u=o.viewQuery,d=o.contentQueries;if(u&&tS(e,u),d&&nS(e,d),Jb(e,o),uh(e.outputs,o.outputs),ot(o)&&o.data.animation){let h=e.data;h.animation=(h.animation||[]).concat(o.data.animation)}}let a=o.features;if(a)for(let c=0;c=0;r--){let o=e[r];o.hostVars=t+=o.hostVars,o.hostAttrs=wr(o.hostAttrs,n=wr(n,o.hostAttrs))}}function Ql(e){return e===Gt?{}:e===Me?[]:e}function tS(e,t){let n=e.viewQuery;n?e.viewQuery=(r,o)=>{t(r,o),n(r,o)}:e.viewQuery=t}function nS(e,t){let n=e.contentQueries;n?e.contentQueries=(r,o,i)=>{t(r,o,i),n(r,o,i)}:e.contentQueries=t}function rS(e,t){let n=e.hostBindings;n?e.hostBindings=(r,o)=>{t(r,o),n(r,o)}:e.hostBindings=t}function oS(e,t,n,r,o,i,s,a){if(n.firstCreatePass){e.mergedAttrs=wr(e.mergedAttrs,e.attrs);let u=e.tView=nd(2,e,o,i,s,n.directiveRegistry,n.pipeRegistry,null,n.schemas,n.consts,null);n.queries!==null&&(n.queries.template(n,e),u.queries=n.queries.embeddedTView(e))}a&&(e.flags|=a),mr(e,!1);let c=iS(n,t,e,r);Os()&&ed(n,t,c,e),Dr(c,t);let l=gm(c,t,c,e);t[r+Z]=l,od(t,l),kb(l,e,t)}function $o(e,t,n,r,o,i,s,a,c,l,u){let d=n+Z,h;if(t.firstCreatePass){if(h=Yo(t,d,4,s||null,a||null),l!=null){let f=it(t.consts,l);h.localNames=[];for(let g=0;g{class e{log(n){console.log(n)}warn(n){console.warn(n)}static ɵfac=function(r){return new(r||e)};static ɵprov=T({token:e,factory:e.ɵfac,providedIn:`platform`})}return e})();var gd=new v(``);var ti=new v(``);function Bm(){Pc(e=>{throw new y(-600,``)})}var aS=10;var en=(()=>{class e{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=p(Ve);afterRenderManager=p(Vg);zonelessEnabled=p(Ao);rootEffectScheduler=p(Fs);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new ee;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=p(bt);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe($(n=>!n))}constructor(){p(Jt,{optional:!0})}whenStable(){let n;return new Promise(r=>{n=this.isStable.subscribe({next:o=>{o&&r()}})}).finally(()=>{n.unsubscribe()})}_injector=p(K);_rendererFactory=null;get injector(){return this._injector}bootstrap(n,r){return this.bootstrapImpl(n,r)}bootstrapImpl(n,r,o=_e.NULL){return this._injector.get(de).run(()=>{if(z(L.BootstrapComponentStart),!this._injector.get(pd).done)throw new y(405,``);let a=zt(n),c=this._injector.get(Cr),l=new Sr(a,c);this.componentTypes.push(n);let{hostElement:u,directives:d,bindings:h}=cS(r),f=u||l.selector,g=l.create(o,[],f,c.injector,d,h),w=g.location.nativeElement,E=g.injector.get(gd,null);return E?.registerApplication(w),g.onDestroy(()=>{this.detachView(g.hostView),Lo(this.components,g),E?.unregisterApplication(w)}),this._loadComponent(g),z(L.BootstrapComponentEnd,g),g})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){z(L.ChangeDetectionStart),this.tracingSnapshot!==null?this.tracingSnapshot.run(Xu.CHANGE_DETECTION,this.tickImpl):this.tickImpl()}tickImpl=()=>{if(this._runningTick)throw z(L.ChangeDetectionEnd),new y(101,!1);let n=I(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,I(n),this.afterTick.next(),z(L.ChangeDetectionEnd)}};synchronize(){this._rendererFactory===null&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get(Ln,null,{optional:!0}));let n=0;for(;this.dirtyFlags!==0&&n++To(n))){this.dirtyFlags|=2;return}else this.dirtyFlags&=-8}attachView(n){let r=n;this._views.push(r),r.attachToAppRef(this)}detachView(n){let r=n;Lo(this._views,r),r.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView);try{this.tick()}catch(o){this.internalErrorHandler(o)}this.components.push(n),this._injector.get(ti,[]).forEach(o=>o(n))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n=>n()),this._views.slice().forEach(n=>n.destroy())}finally{this._destroyed=!0,this._views=[],this._destroyListeners=[]}}onDestroy(n){return this._destroyListeners.push(n),()=>Lo(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new y(406,!1);let n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();function cS(e){return e===void 0||typeof e==`string`||e instanceof Element?{hostElement:e}:e}function Lo(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function zm(e,t){let n=D();if(Oe(n,st(),t)){let o=q(),i=Kt();if(Ea(i,o,n,e,t))rt(i)&&nm(n,i.index);else{let a=Ne(i,n);rm(n[B],a,null,i.value,e,t,null)}}return zm}function Ar(e,t,n,r){let o=D();if(Oe(o,st(),t)){q();DD(Kt(),o,e,t,n,r)}return Ar}var Tu=class{destroy(t){}updateValue(t,n){}swap(t,n){let r=Math.min(t,n),o=Math.max(t,n),i=this.detach(o);if(o-r>1){let s=this.detach(r);this.attach(r,i),this.attach(o,s)}else this.attach(r,i)}move(t,n){this.attach(n,this.detach(t))}};function Zl(e,t,n,r,o){return e===n&&Object.is(t,r)?1:Object.is(o(e,t),o(n,r))?-1:0}function lS(e,t,n,r){let o,i,s=0,a=e.length-1;if(Array.isArray(t)){I(r);let l=t.length-1;for(I(null);s<=a&&s<=l;){let u=e.at(s),d=t[s],h=Zl(s,u,s,d,n);if(h!==0){h<0&&e.updateValue(s,d),s++;continue}let f=e.at(a),g=t[l],w=Zl(a,f,l,g,n);if(w!==0){w<0&&e.updateValue(a,g),a--,l--;continue}let E=n(s,u),_=n(a,f),O=n(s,d);if(Object.is(O,_)){let ge=n(l,g);Object.is(ge,E)?(e.swap(s,a),e.updateValue(a,g),l--,a--):e.move(a,s),e.updateValue(s,d),s++;continue}if(o??=new la,i??=Vp(e,s,a,n),Mu(e,o,s,O))e.updateValue(s,d),s++,a++;else if(i.has(O))o.set(E,e.detach(s)),a--;else{let ge=e.create(s,t[s]);e.attach(s,ge),s++,a++}}for(;s<=l;)Hp(e,o,n,s,t[s]),s++}else if(t!=null){I(r);let l=t[Symbol.iterator]();I(null);let u=l.next();for(;!u.done&&s<=a;){let d=e.at(s),h=u.value,f=Zl(s,d,s,h,n);if(f!==0)f<0&&e.updateValue(s,h),s++,u=l.next();else{o??=new la,i??=Vp(e,s,a,n);let g=n(s,h);if(Mu(e,o,s,g))e.updateValue(s,h),s++,a++,u=l.next();else if(!i.has(g))e.attach(s,e.create(s,h)),s++,a++,u=l.next();else{let w=n(s,d);o.set(w,e.detach(s)),a--}}}for(;!u.done;)Hp(e,o,n,e.length,u.value),u=l.next()}for(;s<=a;)e.destroy(e.detach(a--));o?.forEach(l=>{e.destroy(l)})}function Mu(e,t,n,r){return t!==void 0&&t.has(r)?(e.attach(n,t.get(r)),t.delete(r),!0):!1}function Hp(e,t,n,r,o){if(Mu(e,t,r,n(r,o)))e.updateValue(r,o);else{let i=e.create(r,o);e.attach(r,i)}}function Vp(e,t,n,r){let o=new Set;for(let i=t;i<=n;i++)o.add(r(i,e.at(i)));return o}var la=class{kvMap=new Map;_vMap=void 0;has(t){return this.kvMap.has(t)}delete(t){if(!this.has(t))return!1;let n=this.kvMap.get(t);return this._vMap!==void 0&&this._vMap.has(n)?(this.kvMap.set(t,this._vMap.get(n)),this._vMap.delete(n)):this.kvMap.delete(t),!0}get(t){return this.kvMap.get(t)}set(t,n){if(this.kvMap.has(t)){let r=this.kvMap.get(t);this._vMap===void 0&&(this._vMap=new Map);let o=this._vMap;for(;o.has(r);)r=o.get(r);o.set(r,n)}else this.kvMap.set(t,n)}forEach(t){for(let[n,r]of this.kvMap)if(t(r,n),this._vMap!==void 0){let o=this._vMap;for(;o.has(r);)r=o.get(r),t(r,n)}}};function uS(e,t,n,r,o,i,s,a){Nt(`NgControlFlow`);let c=D(),l=q();return $o(c,l,e,t,n,r,o,it(l.consts,i),256,s,a),md}function md(e,t,n,r,o,i,s,a){return Nt(`NgControlFlow`),dS(e,t,n,r,o,i,s,a),md}function dS(e,t,n,r,o,i,s,a){let c=D(),l=q();$o(c,l,e,t,n,r,o,it(l.consts,i),512,s,a)}function fS(e,t){Nt(`NgControlFlow`);let n=D(),r=st(),o=n[r]!==xe?n[r]:-1,i=o!==-1?ua(n,Z+o):void 0,s=0;if(Oe(n,r,e)){let a=I(null);try{if(i!==void 0&&ym(i,s),e!==-1){let c=Z+e,l=ua(n,c),u=xu(n[b],c),d=Em(l,u,n);Zo(l,Qo(n,u,t,{dehydratedView:d}),s,br(u,d))}}finally{I(a)}}else if(i!==void 0){let a=mm(i,s);a!==void 0&&(a[X]=t)}}var _u=class{lContainer;$implicit;$index;constructor(t,n,r){this.lContainer=t,this.$implicit=n,this.$index=r}get $count(){return this.lContainer.length-J}};function hS(e){return e}function pS(e,t){return t}var Nu=class{hasEmptyBlock;trackByFn;liveCollection;constructor(t,n,r){this.hasEmptyBlock=t,this.trackByFn=n,this.liveCollection=r}};function gS(e,t,n,r,o,i,s,a,c,l,u,d,h){Nt(`NgControlFlow`);let f=D(),g=q(),w=c!==void 0,E=D(),O=new Nu(w,a?s.bind(E[Ee][X]):s);E[Z+e]=O,$o(f,g,e+1,t,n,r,o,it(g.consts,i),256),w&&$o(f,g,e+2,c,l,u,d,it(g.consts,h),512)}var Ru=class extends Tu{lContainer;hostLView;templateTNode;operationsCounter=void 0;needsIndexUpdate=!1;constructor(t,n,r){super(),this.lContainer=t,this.hostLView=n,this.templateTNode=r}get length(){return this.lContainer.length-J}at(t){return this.getLView(t)[X].$implicit}attach(t,n){let r=n[Mn];this.needsIndexUpdate||=t!==this.length,Zo(this.lContainer,n,t,br(this.templateTNode,r)),yS(this.lContainer,t)}detach(t){return this.needsIndexUpdate||=t!==this.length-1,vS(this.lContainer,t),ES(this.lContainer,t)}create(t,n){let r=ea(this.lContainer,this.templateTNode.tView.ssrId);return Qo(this.hostLView,this.templateTNode,new _u(this.lContainer,n,t),{dehydratedView:r})}destroy(t){ya(t[b],t)}updateValue(t,n){this.getLView(t)[X].$implicit=n}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let t=0;t(Bp(e,t,o,a,r),da))}}return Bp(e,t,o,a,r),da}function Bp(e,t,n,r,o){if(om(r,n,e,t,qm),ws(r)){let i=n[b];Xg(i,n,r),bg(i,r,n)}o!=null&&id(n,r)}function yd(){let e=q(),n=im(ie());return e.firstCreatePass&&Mm(e,n),Nl(n)&&Rl(),Ml(),n.classesWithoutHost!=null&&HI(n)&&$p(e,n,D(),n.classesWithoutHost,!0),n.stylesWithoutHost!=null&&VI(n)&&$p(e,n,D(),n.stylesWithoutHost,!1),yd}function ba(e,t,n,r){return da(e,t,n,r),yd(),ba}function vd(e,t,n,r){let o=D(),i=o[b],s=e+Z,a=i.firstCreatePass?vb(s,i,2,t,n,r):i.data[s];return om(a,o,e,t,qm),r!=null&&id(o,a),vd}function Ed(){return Nl(im(ie()))&&Rl(),Ml(),Ed}function Sa(e,t,n,r){return vd(e,t,n,r),Ed(),Sa}var qm=(e,t,n,r,o)=>(ks(!0),xg(t[B],r,jl()));function wS(){return D()}function Ca(e,t,n){let r=D();if(Oe(r,st(),t)){q();em(Kt(),r,e,t,r[B],n)}return Ca}var ni=`en-US`;function Gm(e){typeof e==`string`&&e.toLowerCase().replace(/_/g,`-`)}function Ta(e,t,n){let r=D(),o=q(),i=ie();return Zm(o,r,r[B],i,e,t,n),Ta}function Qm(e,t,n){let r=D(),o=q(),i=ie();return(i.type&3||n)&&ud(i,o,r,n,r[B],e,t,On(i,r,t)),Qm}function Zm(e,t,n,r,o,i,s){let a=!0,c=null;if((r.type&3||s)&&(c??=On(r,t,i),ud(r,e,t,s,n,o,i,c)&&(a=!1)),a){let l=r.outputs?.[o],u=r.hostDirectiveOutputs?.[o];if(u&&u.length)for(let d=0;d>17&32767}function RS(e){return(e&2)==2}function xS(e,t){return e&131071|t<<17}function Au(e){return e|2}function Tr(e){return(e&131068)>>2}function Yl(e,t){return e&-131069|t<<2}function AS(e){return(e&1)===1}function Ou(e){return e|1}function OS(e,t,n,r,o,i){let s=i?t.classBindings:t.styleBindings,a=jn(s),c=Tr(s);e[r]=n;let l=!1,u;if(Array.isArray(n)){let d=n;u=d[1],(u===null||dr(d,u)>0)&&(l=!0)}else u=n;if(o)if(c!==0){let h=jn(e[a+1]);e[r+1]=Bs(h,a),h!==0&&(e[h+1]=Yl(e[h+1],r)),e[a+1]=xS(e[a+1],r)}else e[r+1]=Bs(a,0),a!==0&&(e[a+1]=Yl(e[a+1],r)),a=r;else e[r+1]=Bs(c,0),a===0?a=r:e[c+1]=Yl(e[c+1],r),c=r;l&&(e[r+1]=Au(e[r+1])),zp(e,u,r,!0),zp(e,u,r,!1),kS(t,u,e,r,i),s=Bs(a,c),i?t.classBindings=s:t.styleBindings=s}function kS(e,t,n,r,o){let i=o?e.residualClasses:e.residualStyles;i!=null&&typeof t==`string`&&dr(i,t)>=0&&(n[r+1]=Ou(n[r+1]))}function zp(e,t,n,r){let o=e[n+1],i=t===null,s=r?jn(o):Tr(o),a=!1;for(;s!==0&&(a===!1||i);){let c=e[s],l=e[s+1];PS(c,t)&&(a=!0,e[s+1]=r?Ou(l):Au(l)),s=r?jn(l):Tr(l)}a&&(e[n+1]=r?Au(o):Ou(o))}function PS(e,t){return e===null||t==null||(Array.isArray(e)?e[1]:e)===t?!0:Array.isArray(e)&&typeof t==`string`?dr(e,t)>=0:!1}function _a(e,t,n){return Xm(e,t,n,!1),_a}function Km(e,t){return Xm(e,t,null,!0),Km}function Xm(e,t,n,r){let o=D(),i=q(),s=Pl(2);if(i.firstUpdatePass&&FS(i,e,s,r),t!==xe&&Oe(o,s,t)){let a=i.data[at()];$S(i,a,o,o[B],e,o[s+1]=BS(t,n),r,s)}}function LS(e,t){return t>=e.expandoStartIndex}function FS(e,t,n,r){let o=e.data;if(o[n+1]===null){let i=o[at()],s=LS(e,n);zS(i,r)&&t===null&&!s&&(t=!1),t=jS(o,i,t,r),OS(o,i,t,n,s,r)}}function jS(e,t,n,r){let o=Gh(e),i=r?t.residualClasses:t.residualStyles;if(o===null)(r?t.classBindings:t.styleBindings)===0&&(n=Kl(null,e,t,n,r),n=Bo(n,t.attrs,r),i=null);else{let s=t.directiveStylingLast;if(s===-1||e[s]!==o)if(n=Kl(o,e,t,n,r),i===null){let c=US(e,t,r);c!==void 0&&Array.isArray(c)&&(c=Kl(null,e,t,c[1],r),c=Bo(c,t.attrs,r),HS(e,t,r,c))}else i=VS(e,t,r)}return i!==void 0&&(r?t.residualClasses=i:t.residualStyles=i),n}function US(e,t,n){let r=n?t.classBindings:t.styleBindings;if(Tr(r)!==0)return e[jn(r)]}function HS(e,t,n,r){let o=n?t.classBindings:t.styleBindings;e[jn(o)]=r}function VS(e,t,n){let r,o=t.directiveEnd;for(let i=1+t.directiveStylingLast;i0;){let c=e[o],l=Array.isArray(c),u=l?c[1]:c,d=u===null,h=n[o+1];h===xe&&(h=d?Me:void 0);let f=d?ys(h,r):u===r?h:void 0;if(l&&!fa(f)&&(f=ys(c,r)),fa(f)&&(a=f,s))return a;let g=e[o+1];o=s?jn(g):Tr(g)}if(t!==null){let c=i?t.residualClasses:t.residualStyles;c!=null&&(a=ys(c,r))}return a}function fa(e){return e!==void 0}function BS(e,t){return e==null||e===``||(typeof t==`string`?e=Re(e)+t:typeof e==`object`&&(e=go(Re(e)))),e}function zS(e,t){return(e.flags&(t?8:16))!==0}function WS(e,t=``){let n=D(),r=q(),o=e+Z,i=r.firstCreatePass?Yo(r,o,1,t,null):r.data[o],s=qS(r,n,i,t);n[o]=s,Os()&&ed(r,n,s,i),mr(i,!1)}var qS=(e,t,n,r)=>(ks(!0),Tw(t[B],r));function GS(e,t,n,r=``){return Oe(e,st(),n)?t+Wt(n)+r:xe}function QS(e,t,n,r,o,i=``){let a=bm(e,$h(),n,o);return Pl(2),a?t+Wt(n)+r+Wt(o)+i:xe}function Jm(e){return Dd(``,e),Jm}function Dd(e,t,n){let r=D(),o=GS(r,e,t,n);return o!==xe&&ty(r,at(),o),Dd}function ey(e,t,n,r,o){let i=D(),s=QS(i,e,t,n,r,o);return s!==xe&&ty(i,at(),s),ey}function ty(e,t,n){let r=wl(t,e);Mw(e[B],r,n)}function ny(e,t,n){Us(t)&&(t=t());let r=D();if(Oe(r,st(),t)){q();Jg(Kt(),r,e,t,r[B],n)}return ny}function ZS(e,t){let n=Us(e);return n&&e.set(t),n}function ry(e,t){let n=D(),r=q(),o=ie();return Zm(r,n,n[B],o,e,t),ry}function YS(e){return Oe(D(),st(),e)?Wt(e):xe}function qp(e,t,n){let r=q();r.firstCreatePass&&oy(t,r.data,r.blueprint,ot(e),n)}function oy(e,t,n,r,o){if(e=ue(e),Array.isArray(e))for(let i=0;i>20;if(Dn(e)||!e.multi){let f=new kn(l,o,De,null),g=Jl(c,t,o?u:u+h,d);g===-1?(nu(Xs(a,s),i,c),Xl(i,e,t.length),t.push(c),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),n.push(f),s.push(f)):(n[g]=f,s[g]=f)}else{let f=Jl(c,t,u+h,d),g=Jl(c,t,u,u+h),w=f>=0&&n[f],E=g>=0&&n[g];if(o&&!E||!o&&!w){nu(Xs(a,s),i,c);let _=JS(o?XS:KS,n.length,o,r,l,e);!o&&E&&(n[g].providerFactory=_),Xl(i,e,t.length,0),t.push(c),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),n.push(_),s.push(_)}else{let _=iy(n[o?g:f],l,!o&&r);Xl(i,e,f>-1?f:g,_)}!o&&r&&E&&n[g].componentProviders++}}}function Xl(e,t,n,r){let o=Dn(t),i=Ch(t);if(o||i){let c=(i?ue(t.useClass):t).prototype.ngOnDestroy;if(c){let l=e.destroyHooks||(e.destroyHooks=[]);if(!o&&t.multi){let u=l.indexOf(n);u===-1?l.push(n,[r,c]):l[u+1].push(r,c)}else l.push(n,c)}}}function iy(e,t,n){return n&&e.componentProviders++,e.multi.push(t)-1}function Jl(e,t,n,r){for(let o=n;o{n.providersResolver=(r,o)=>qp(r,o?o(e):e,!1),t&&(n.viewProvidersResolver=(r,o)=>qp(r,o?o(t):t,!0))}}function tC(e,t){let n=yr()+e,r=D();return r[n]===xe?ld(r,n,t()):KD(r,n)}function nC(e,t,n){return ay(D(),yr(),e,t,n)}function rC(e,t,n,r){return cy(D(),yr(),e,t,n,r)}function sy(e,t){let n=e[t];return n===xe?void 0:n}function ay(e,t,n,r,o,i){let s=t+n;return Oe(e,s,o)?ld(e,s+1,i?r.call(i,o):r(o)):sy(e,s+1)}function cy(e,t,n,r,o,i,s){let a=t+n;return bm(e,a,o,i)?ld(e,a+2,s?r.call(s,o,i):r(o,i)):sy(e,a+2)}function oC(e,t){let n=q(),r,o=e+Z;n.firstCreatePass?(r=iC(t,n.pipeRegistry),n.data[o]=r,r.onDestroy&&(n.destroyHooks??=[]).push(o,r.onDestroy)):r=n.data[o];let i=r.factory||(r.factory=$t(r.type,!0)),a=we(De);try{let c=Ks(!1),l=i();return Ks(c),Dl(n,D(),o,l),l}finally{we(a)}}function iC(e,t){if(t)for(let n=t.length-1;n>=0;n--){let r=t[n];if(e===r.name)return r}}function sC(e,t,n){let r=e+Z,o=D(),i=Ss(o,r);return ly(o,r)?ay(o,yr(),t,i.transform,n,i):i.transform(n)}function aC(e,t,n,r){let o=e+Z,i=D(),s=Ss(i,o);return ly(i,o)?cy(i,yr(),t,s.transform,n,r,s):s.transform(n,r)}function ly(e,t){return e[b].data[t].pure}var uy=(()=>{class e{applicationErrorHandler=p(Ve);appRef=p(en);taskService=p(bt);ngZone=p(de);zonelessEnabled=p(Ao);tracing=p(Jt,{optional:!0});zoneIsDefined=typeof Zone<`u`&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new ae;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(ho):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(p(Bl,{optional:!0})??!1);cancelScheduledCallback=null;useMicrotaskScheduler=!1;runningTick=!1;pendingRenderTaskId=null;constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{let n=this.taskService.add();if(!this.runningTick&&(this.cleanup(),!this.zonelessEnabled||this.appRef.includeAllTestViews)){this.taskService.remove(n);return}this.switchToMicrotaskScheduler(),this.taskService.remove(n)})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()}))}switchToMicrotaskScheduler(){this.ngZone.runOutsideAngular(()=>{let n=this.taskService.add();this.useMicrotaskScheduler=!0,queueMicrotask(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(n)})})}notify(n){if(!this.zonelessEnabled&&n===5)return;switch(n){case 0:case 2:this.appRef.dirtyFlags|=2;break;case 3:case 4:case 5:case 1:this.appRef.dirtyFlags|=4;break;case 6:this.appRef.dirtyFlags|=2;break;case 12:this.appRef.dirtyFlags|=16;break;case 13:this.appRef.dirtyFlags|=2;break;case 11:break;default:this.appRef.dirtyFlags|=8}if(this.appRef.tracingSnapshot=this.tracing?.snapshot(this.appRef.tracingSnapshot)??null,!this.shouldScheduleTick())return;let r=this.useMicrotaskScheduler?tp:Hl;this.pendingRenderTaskId=this.taskService.add(),this.scheduleInRootZone?this.cancelScheduledCallback=Zone.root.run(()=>r(()=>this.tick())):this.cancelScheduledCallback=this.ngZone.runOutsideAngular(()=>r(()=>this.tick()))}shouldScheduleTick(){return!(this.appRef.destroyed||this.pendingRenderTaskId!==null||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(ho+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;if(this.appRef.dirtyFlags===0){this.cleanup();return}!this.zonelessEnabled&&this.appRef.dirtyFlags&7&&(this.appRef.dirtyFlags|=1);let n=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(r){this.applicationErrorHandler(r)}finally{this.taskService.remove(n),this.cleanup()}}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,this.pendingRenderTaskId!==null){let n=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(n)}}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();function dy(){return[{provide:Bt,useExisting:uy},{provide:de,useClass:po},{provide:Ao,useValue:!0}]}var bd=(()=>{class e{compileModuleSync(n){return new ca(n)}compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}clearCache(){}clearCacheFor(n){}getModuleId(n){}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();function cC(){return typeof $localize<`u`&&$localize.locale||ni}var Sd=new v(``,{factory:()=>p(Sd,{optional:!0,skipSelf:!0})||cC()});var ri=class{destroyed=!1;listeners=null;errorHandler=p(Ge,{optional:!0});isEmitting=!1;hasNullListeners=!1;destroyRef=p(ve);constructor(){this.destroyRef.onDestroy(()=>{this.destroyed=!0,this.listeners=null})}subscribe(t){if(this.destroyed)throw new y(953,!1);return(this.listeners??=[]).push(t),{unsubscribe:()=>{let n=this.listeners?this.listeners.indexOf(t):-1;n>-1&&(this.isEmitting?(this.hasNullListeners=!0,this.listeners[n]=null):this.listeners.splice(n,1))}}}emit(t){if(this.destroyed){console.warn(Qe(953,!1));return}if(this.listeners===null)return;this.isEmitting=!0;let n=I(null);try{for(let r of this.listeners)try{r!==null&&r(t)}catch(o){this.errorHandler?.handleError(o)}}finally{this.hasNullListeners&&(this.hasNullListeners=!1,this.listeners&&lC(this.listeners)),I(n),this.isEmitting=!1}}};function lC(e){let t=e.length-1;for(;t>-1;)e[t]===null&&e.splice(t,1),t--}function tn(e,t){return so(e,t?.equal)}function F(e){return oh(e)}(class e extends Error{_brand;constructor(t){super(t)}static IDLE=new e(`IDLE`);static LOADING=new e(`LOADING`)});var uC=e=>e;function Cd(e,t){if(typeof e==`function`)return hy(Hc(e,uC,t?.equal),t?.debugName,t?.set);else return hy(Hc(e.source,e.computation,e.equal),e.debugName,e.set)}function hy(e,t,n){let r=e[Y],o=e;if(n!==void 0){let i=s=>Vc(r,s);o.set=s=>n(s,i),o.update=s=>n(s(F(e)),i)}else o.set=i=>Vc(r,i),o.update=i=>rh(r,i);return o.asReadonly=_o.bind(e),o}function by(e,t){let n=Object.create(Pu);n.value=e,n.transformFn=t?.transform;function r(){if(mt(n),n.value===Mr)throw new y(-950,null);return n.value}return r[Y]=n,r}var Ra=class{attributeName;constructor(t){this.attributeName=t}__NG_ELEMENT_ID__=()=>ha(this.attributeName);toString(){return`HostAttributeToken ${this.attributeName}`}};function Md(e){return wC(e)?e.default:e}function wC(e){return e&&typeof e==`object`&&`default`in e}function AU(e){return new ri}function py(e,t){return by(e,t)}function DC(e){return by(Mr,e)}var rn=(py.required=DC,py);function Sy(e,t){let n=Object.create(Pu),r=new ri;n.value=e;function o(){return mt(n),gy(n.value),n.value}return o[Y]=n,o.asReadonly=_o.bind(o),o.set=i=>{n.equal(n.value,i)||(yt(n,i),r.emit(i))},o.update=i=>{gy(n.value),o.set(i(n.value))},o.subscribe=r.subscribe.bind(r),o.destroyRef=r.destroyRef,o}function gy(e){if(e===Mr)throw new y(952,!1)}function my(e,t){return Sy(e,t)}function bC(e){return Sy(Mr,e)}var OU=(my.required=bC,my);function yy(e,t){return Lm(t)}function SC(e,t){return Fm(t)}var kU=(yy.required=SC,yy);var ii=(()=>{class e{static __NG_ELEMENT_ID__=TC}return e})();function TC(e){return MC(ie(),D(),(e&16)===16)}function MC(e,t,n){if(rt(e)&&!n){let r=He(e.index,t);return new Xt(r,r)}else if(e.type&175){let r=t[Ee];return new Xt(r,t)}return null}var Td=new v(``);var _C=new v(``);function oi(e){return!e.moduleRef}function NC(e){let t=oi(e)?e.r3Injector:e.moduleRef.injector,n=t.get(de);return n.run(()=>{oi(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();let r=t.get(Ve),o;if(n.runOutsideAngular(()=>{o=n.onError.subscribe({next:r})}),oi(e)){let i=()=>t.destroy(),s=e.platformInjector.get(Td);s.add(i),t.onDestroy(()=>{o.unsubscribe(),s.delete(i)})}else{let i=()=>e.moduleRef.destroy(),s=e.platformInjector.get(Td);s.add(i),e.moduleRef.onDestroy(()=>{Lo(e.allPlatformModules,e.moduleRef),o.unsubscribe(),s.delete(i)})}return xC(r,n,()=>{let i=t.get(bt),s=i.add(),a=t.get(pd);return a.runInitializers(),a.donePromise.then(()=>{if(Gm(t.get(Sd,ni)||ni),!t.get(_C,!0))return oi(e)?t.get(en):(e.allPlatformModules.push(e.moduleRef),e.moduleRef);if(oi(e)){let u=t.get(en);return e.rootComponent!==void 0&&u.bootstrap(e.rootComponent),u}else return RC?.(e.moduleRef,e.allPlatformModules),e.moduleRef}).finally(()=>{i.remove(s)})})})}var RC;function xC(e,t,n){try{let r=n();return Xo(r)?r.catch(o=>{throw t.runOutsideAngular(()=>e(o)),o}):r}catch(r){throw t.runOutsideAngular(()=>e(r)),r}}var Na=null;function AC(e=[],t){return _e.create({name:t,providers:[{provide:wo,useValue:`platform`},{provide:Td,useValue:new Set([()=>Na=null])},...e]})}function OC(e=[]){if(Na)return Na;let t=AC(e);return Na=t,Bm(),kC(t),t}function kC(e){let t=e.get(Ps,null);oe(e,()=>{t?.forEach(n=>n())})}function Cy(e){let{rootComponent:t,appProviders:n,platformProviders:r,platformRef:o}=e;z(L.BootstrapApplicationStart);try{let i=o?.injector??OC(r);return NC({r3Injector:new Vo({providers:[dy(),ip,...n||[]],parent:i,debugName:``,runEnvironmentInitializers:!1}).injector,platformInjector:i,rootComponent:t})}catch(i){return Promise.reject(i)}finally{z(L.BootstrapApplicationEnd)}}function si(e){return typeof e==`boolean`?e:e!=null&&e!==`false`}function _d(e){let t=zt(e);if(!t)return null;let n=new Sr(t);return{get selector(){return n.selector},get type(){return n.componentType},get inputs(){return n.inputs},get outputs(){return n.outputs},get ngContentSelectors(){return n.ngContentSelectors},get isStandalone(){return t.standalone},get isSignal(){return t.signals}}}var Ty=null;function Rt(){return Ty}function Nd(e){Ty??=e}var ai=class{};var Hn=(()=>{class e{historyGo(n){throw new Error(``)}static ɵfac=function(r){return new(r||e)};static ɵprov=T({token:e,factory:()=>p(My),providedIn:`platform`})}return e})();var My=(()=>{class e extends Hn{_location;_history;_doc=p(G);constructor(){super(),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return Rt().getBaseHref(this._doc)}onPopState(n){let r=Rt().getGlobalEventTarget(this._doc,`window`);return r.addEventListener(`popstate`,n,!1),()=>r.removeEventListener(`popstate`,n)}onHashChange(n){let r=Rt().getGlobalEventTarget(this._doc,`window`);return r.addEventListener(`hashchange`,n,!1),()=>r.removeEventListener(`hashchange`,n)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(n){this._location.pathname=n}pushState(n,r,o){this._history.pushState(n,r,o)}replaceState(n,r,o){this._history.replaceState(n,r,o)}forward(){this._history.forward()}back(){this._history.back()}historyGo(n=0){this._history.go(n)}getState(){return this._history.state}static ɵfac=function(r){return new(r||e)};static ɵprov=T({token:e,factory:()=>new e,providedIn:`platform`})}return e})();function Ry(e,t){return e?t?e.endsWith(`/`)?t.startsWith(`/`)?e+t.slice(1):e+t:t.startsWith(`/`)?e+t:`${e}/${t}`:e:t}function _y(e){let t=e.search(/#|\?|$/);return e[t-1]===`/`?e.slice(0,t-1)+e.slice(t):e}function on(e){return e&&e[0]!==`?`?`?${e}`:e}var Vn=(()=>{class e{historyGo(n){throw new Error(``)}static ɵfac=function(r){return new(r||e)};static ɵprov=T({token:e,factory:()=>p(xy),providedIn:`root`})}return e})();var PC=new v(``);var xy=(()=>{class e extends Vn{_platformLocation;_baseHref;_removeListenerFns=[];constructor(n,r){super(),this._platformLocation=n,this._baseHref=r??this._platformLocation.getBaseHrefFromDOM()??p(G).location?.origin??``}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(n){this._removeListenerFns.push(this._platformLocation.onPopState(n),this._platformLocation.onHashChange(n))}getBaseHref(){return this._baseHref}prepareExternalUrl(n){return Ry(this._baseHref,n)}path(n=!1){let r=this._platformLocation.pathname+on(this._platformLocation.search),o=this._platformLocation.hash;return o&&n?`${r}${o}`:r}pushState(n,r,o,i){let s=this.prepareExternalUrl(o+on(i));this._platformLocation.pushState(n,r,s)}replaceState(n,r,o,i){let s=this.prepareExternalUrl(o+on(i));this._platformLocation.replaceState(n,r,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(n=0){this._platformLocation.historyGo?.(n)}static ɵfac=function(r){return new(r||e)(S(Hn),S(PC,8))};static ɵprov=T({token:e,factory:e.ɵfac,providedIn:`root`})}return e})();var $n=(()=>{class e{_subject=new ee;_basePath;_locationStrategy;_urlChangeListeners=[];_urlChangeSubscription=null;constructor(n){this._locationStrategy=n;let r=this._locationStrategy.getBaseHref();this._basePath=jC(_y(Ny(r))),this._locationStrategy.onPopState(o=>{let i={url:this.path(!0),pop:!0,state:o.state,type:o.type};o.hasUAVisualTransition&&(i.hasUAVisualTransition=!0),this._subject.next(i)})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(n=!1){return this.normalize(this._locationStrategy.path(n))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(n,r=``){return this.path()==this.normalize(n+on(r))}normalize(n){return e.stripTrailingSlash(FC(this._basePath,Ny(n)))}prepareExternalUrl(n){return n&&n[0]!==`/`&&(n=`/`+n),this._locationStrategy.prepareExternalUrl(n)}go(n,r=``,o=null){this._locationStrategy.pushState(o,``,n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+on(r)),o)}replaceState(n,r=``,o=null){this._locationStrategy.replaceState(o,``,n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+on(r)),o)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(n=0){this._locationStrategy.historyGo?.(n)}onUrlChange(n){return this._urlChangeListeners.push(n),this._urlChangeSubscription??=this.subscribe(r=>{this._notifyUrlChangeListeners(r.url,r.state)}),()=>{let r=this._urlChangeListeners.indexOf(n);this._urlChangeListeners.splice(r,1),this._urlChangeListeners.length===0&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(n=``,r){this._urlChangeListeners.forEach(o=>o(n,r))}subscribe(n,r,o){return this._subject.subscribe({next:n,error:r??void 0,complete:o??void 0})}static normalizeQueryParams=on;static joinWithSlash=Ry;static stripTrailingSlash=_y;static ɵfac=function(r){return new(r||e)(S(Vn))};static ɵprov=T({token:e,factory:()=>LC(),providedIn:`root`})}return e})();function LC(){return new $n(S(Vn))}function FC(e,t){if(!e||!t.startsWith(e))return t;let n=t.substring(e.length);return n===``||[`/`,`;`,`?`,`#`].includes(n[0])?n:t}function Ny(e){return e.replace(/\/index\.html$/,``)}function jC(e){if(new RegExp(`^(https?:)?//`).test(e)){let[,n]=e.split(/\/\/[^\/]+/);return n}return e}function ci(e,t){t=encodeURIComponent(t);for(let n of e.split(`;`)){let r=n.indexOf(`=`),[o,i]=r==-1?[n,``]:[n.slice(0,r),n.slice(r+1)];if(o.trim()!==t)continue;let s=i;try{s=decodeURIComponent(i)}catch{}return s.length>1&&s[0]===`"`&&s[s.length-1]===`"`&&(s=s.slice(1,-1)),s}return null}var Ay=`browser`;var Oy=(()=>{class e{static ɵprov=T({token:e,providedIn:`root`,factory:()=>new Rd(p(G),window)})}return e})();var Rd=class{document;window;offset=()=>[0,0];constructor(t,n){this.document=t,this.window=n}setOffset(t){Array.isArray(t)?this.offset=()=>t:this.offset=t}getScrollPosition(){return[this.window.scrollX,this.window.scrollY]}scrollToPosition(t,n){this.window.scrollTo(l(k$1({},n),{left:t[0],top:t[1]}))}scrollToAnchor(t,n){let r=VC(this.document,t);r&&(this.scrollToElement(r,n),r.focus({preventScroll:!0}))}setHistoryScrollRestoration(t){try{this.window.history.scrollRestoration=t}catch{console.warn(Qe(2400,!1))}}scrollToElement(t,n){let r=t.getBoundingClientRect(),o=r.left+this.window.pageXOffset,i=r.top+this.window.pageYOffset,s=this.offset();this.window.scrollTo(l(k$1({},n),{left:o-s[0],top:i-s[1]}))}};function VC(e,t){let n=e.getElementById(t)||e.getElementsByName(t)[0];if(n)return n;if(typeof e.createTreeWalker==`function`&&e.body&&typeof e.body.attachShadow==`function`){let r=e.createTreeWalker(e.body,NodeFilter.SHOW_ELEMENT),o=r.currentNode;for(;o;){let i=o.shadowRoot;if(i){let s=i.getElementById(t)||i.querySelector(`[name="${CSS.escape(t)}"]`);if(s)return s}o=r.nextNode()}}return null}var li=class{_doc;constructor(t){this._doc=t}manager};var xa=(()=>{class e extends li{constructor(n){super(n)}supports(n){return!0}addEventListener(n,r,o,i){return n.addEventListener(r,o,i),()=>this.removeEventListener(n,r,o,i)}removeEventListener(n,r,o,i){return n.removeEventListener(r,o,i)}static ɵfac=function(r){return new(r||e)(S(G))};static ɵprov=T({token:e,factory:e.ɵfac})}return e})();var ka=new v(``);var kd=(()=>{class e{_zone;_plugins;_eventNameToPlugin=new Map;constructor(n,r){this._zone=r,n.forEach(s=>{s.manager=this});let o=n.filter(s=>!(s instanceof xa));this._plugins=o.slice().reverse();let i=n.find(s=>s instanceof xa);i&&this._plugins.push(i)}addEventListener(n,r,o,i){return this._findPluginFor(r).addEventListener(n,r,o,i)}getZone(){return this._zone}_findPluginFor(n){let r=this._eventNameToPlugin.get(n);if(r)return r;if(r=this._plugins.find(i=>i.supports(n)),!r)throw new y(-5101,!1);return this._eventNameToPlugin.set(n,r),r}static ɵfac=function(r){return new(r||e)(S(ka),S(de))};static ɵprov=T({token:e,factory:e.ɵfac})}return e})();var xd=`ng-app-id`;function ky(e){for(let t of e)t.remove()}function Py(e,t){let n=t.createElement(`style`);return n.textContent=e,n}function BC(e,t,n,r){let o=e.head?.querySelectorAll(`style[${xd}="${t}"],link[${xd}="${t}"]`);if(!o||o.length===0)return!1;for(let i of o)i.removeAttribute(xd),i instanceof HTMLLinkElement?r.set(i.href.slice(i.href.lastIndexOf(`/`)+1),{usage:0,elements:[i]}):i.textContent&&n.set(i.textContent,{usage:0,elements:[i]});return!0}function Od(e,t){let n=t.createElement(`link`);return n.setAttribute(`rel`,`stylesheet`),n.setAttribute(`href`,e),n}var Pd=(()=>{class e{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;constructor(n,r,o,i={}){this.doc=n,this.appId=r,this.nonce=o,BC(n,r,this.inline,this.external)&&this.hosts.add(n.head)}addStyles(n,r){for(let o of n)this.addUsage(o,this.inline,Py);r?.forEach(o=>this.addUsage(o,this.external,Od))}removeStyles(n,r){for(let o of n)this.removeUsage(o,this.inline);r?.forEach(o=>this.removeUsage(o,this.external))}addUsage(n,r,o){let i=r.get(n);i?i.usage++:r.set(n,{usage:1,elements:[...this.hosts].map(s=>this.addElement(s,o(n,this.doc)))})}removeUsage(n,r){let o=r.get(n);o&&(o.usage--,o.usage<=0&&(ky(o.elements),r.delete(n)))}ngOnDestroy(){for(let[,{elements:n}]of[...this.inline,...this.external])ky(n);this.hosts.clear()}addHost(n){if(!this.hosts.has(n)){this.hosts.add(n);for(let[r,{elements:o}]of this.inline)o.push(this.addElement(n,Py(r,this.doc)));for(let[r,{elements:o}]of this.external)o.push(this.addElement(n,Od(r,this.doc)))}}removeHost(n){this.hosts.delete(n);for(let r of[...this.inline.values(),...this.external.values()]){let o=[];for(let i of r.elements)i.parentNode===n?i.remove():o.push(i);r.elements=o}}addElement(n,r){return this.nonce&&r.setAttribute(`nonce`,this.nonce),n.appendChild(r)}static ɵfac=function(r){return new(r||e)(S(G),S(No),S(xo,8),S(Ro))};static ɵprov=T({token:e,factory:e.ɵfac})}return e})();var Ad={svg:`http://www.w3.org/2000/svg`,xhtml:`http://www.w3.org/1999/xhtml`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`,math:`http://www.w3.org/1998/Math/MathML`};var Ld=/%COMP%/g;var Fy=`%COMP%`;var zC=`_nghost-${Fy}`;var WC=`_ngcontent-${Fy}`;var qC=!0;var GC=new v(``,{factory:()=>qC});var QC=new v(``);function ZC(e){return WC.replace(Ld,e)}function YC(e){return zC.replace(Ld,e)}function jy(e,t){return t.map(n=>n.replace(Ld,e))}var Fd=(()=>{class e{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;cssVarNamespace;constructor(n,r,o,i,s,a,c=null,l=null,u=null){this.eventManager=n,this.sharedStylesHost=r,this.appId=o,this.removeStylesOnCompDestroy=i,this.doc=s,this.ngZone=a,this.nonce=c,this.tracingService=l,this.cssVarNamespace=u??``,this.defaultRenderer=new ui(n,s,a,this.tracingService,this.cssVarNamespace)}createRenderer(n,r){if(!n||!r)return this.defaultRenderer;let o=this.getOrCreateRenderer(n,r);return o instanceof Oa?o.applyToHost(n):o instanceof di&&o.applyStyles(),o}getOrCreateRenderer(n,r){let o=this.rendererByCompId,i=o.get(r.id);if(!i){let s=this.doc,a=this.ngZone,c=this.eventManager,l=this.sharedStylesHost,u=this.removeStylesOnCompDestroy,d=this.tracingService;switch(r.encapsulation){case Xe.Emulated:i=new Oa(c,l,r,this.appId,u,s,a,d,this.cssVarNamespace);break;case Xe.ShadowDom:return new Aa(c,n,r,s,a,this.nonce,d,this.cssVarNamespace,l);case Xe.ExperimentalIsolatedShadowDom:return new Aa(c,n,r,s,a,this.nonce,d,this.cssVarNamespace);default:i=new di(c,l,r,u,s,a,d,this.cssVarNamespace)}o.set(r.id,i)}return i}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(n){this.rendererByCompId.delete(n)}static ɵfac=function(r){return new(r||e)(S(kd),S(Un),S(No),S(GC),S(G),S(de),S(xo),S(Jt,8),S(QC,8))};static ɵprov=T({token:e,factory:e.ɵfac})}return e})();var ui=class{eventManager;doc;ngZone;tracingService;cssVarNamespace;data=Object.create(null);throwOnSyntheticProps=!0;constructor(t,n,r,o,i=``){this.eventManager=t,this.doc=n,this.ngZone=r,this.tracingService=o,this.cssVarNamespace=i}destroy(){}destroyNode=null;createElement(t,n){return n?this.doc.createElementNS(Ad[n]||n,t):this.doc.createElement(t)}createComment(t){return this.doc.createComment(t)}createText(t){return this.doc.createTextNode(t)}appendChild(t,n){(Ly(t)?t.content:t).appendChild(n)}insertBefore(t,n,r){if(t){let o=Ly(t)?t.content:t;if(r!=null&&r.parentNode!==o)throw new y(-5106,!1);o.insertBefore(n,r)}}removeChild(t,n){n.remove()}selectRootElement(t,n){let r=typeof t==`string`?this.doc.querySelector(t):t;if(!r)throw new y(-5104,!1);return n||(r.textContent=``),r}parentNode(t){return t.parentNode}nextSibling(t){return t.nextSibling}setAttribute(t,n,r,o){if(o){n=o+`:`+n;let i=Ad[o];i?t.setAttributeNS(i,n,r):t.setAttribute(n,r)}else t.setAttribute(n,r)}removeAttribute(t,n,r){if(r){let o=Ad[r];o?t.removeAttributeNS(o,n):t.removeAttribute(`${r}:${n}`)}else t.removeAttribute(n)}addClass(t,n){t.classList.add(n)}removeClass(t,n){t.classList.remove(n)}setStyle(t,n,r,o){let i=n.startsWith(`--`);i&&(n=n.replace(`%NS%`,this.cssVarNamespace)),i||o&(Tt.DashCase|Tt.Important)?t.style.setProperty(n,r,o&Tt.Important?`important`:``):t.style[n]=r}removeStyle(t,n,r){let o=n.startsWith(`--`);o&&(n=n.replace(`%NS%`,this.cssVarNamespace)),o||r&Tt.DashCase?t.style.removeProperty(n):t.style[n]=``}setProperty(t,n,r){t!=null&&(t[n]=r)}setValue(t,n){t.nodeValue=n}listen(t,n,r,o){if(typeof t==`string`&&(t=Rt().getGlobalEventTarget(this.doc,t),!t))throw new y(-5102,!1);let i=this.decoratePreventDefault(r);return this.tracingService?.wrapEventListener&&(i=this.tracingService.wrapEventListener(t,n,i)),this.eventManager.addEventListener(t,n,i,o)}decoratePreventDefault(t){return n=>{if(n===`__ngUnwrap__`)return t;t(n)===!1&&n.preventDefault()}}};function Ly(e){return e.tagName===`TEMPLATE`&&e.content!==void 0}var Aa=class extends ui{hostEl;sharedStylesHost;shadowRoot;constructor(t,n,r,o,i,s,a,c,l){super(t,o,i,a,c),this.hostEl=n,this.sharedStylesHost=l,this.shadowRoot=n.attachShadow({mode:`open`}),this.sharedStylesHost&&this.sharedStylesHost.addHost(this.shadowRoot);let u=r.styles;u=jy(r.id,u).map(h=>h.replace(/%NS%/g,c));for(let h of u){let f=document.createElement(`style`);s&&f.setAttribute(`nonce`,s),f.textContent=h,this.shadowRoot.appendChild(f)}let d=r.getExternalStyles?.();if(d)for(let h of d){let f=Od(h,o);s&&f.setAttribute(`nonce`,s),this.shadowRoot.appendChild(f)}}nodeOrShadowRoot(t){return t===this.hostEl?this.shadowRoot:t}appendChild(t,n){return super.appendChild(this.nodeOrShadowRoot(t),n)}insertBefore(t,n,r){return super.insertBefore(this.nodeOrShadowRoot(t),n,r)}removeChild(t,n){return super.removeChild(null,n)}parentNode(t){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(t)))}destroy(){this.sharedStylesHost&&this.sharedStylesHost.removeHost(this.shadowRoot)}};var di=class extends ui{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(t,n,r,o,i,s,a,c,l){super(t,i,s,a,c),this.sharedStylesHost=n,this.removeStylesOnCompDestroy=o;let u=r.styles,d=l?jy(l,u):u;this.styles=d.map(h=>h.replace(/%NS%/g,c)),this.styleUrls=r.getExternalStyles?.(l)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&Ku.size===0&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}};var Oa=class extends di{contentAttr;hostAttr;constructor(t,n,r,o,i,s,a,c,l){let u=o+`-`+r.id;super(t,n,r,i,s,a,c,l,u),this.contentAttr=ZC(u),this.hostAttr=YC(u)}applyToHost(t){this.applyStyles(),this.setAttribute(t,this.hostAttr,``)}createElement(t,n){let r=super.createElement(t,n);return super.setAttribute(r,this.contentAttr,``),r}};var Pa=class e extends ai{supportsDOMEvents=!0;static makeCurrent(){Nd(new e)}onAndCancel(t,n,r,o){return t.addEventListener(n,r,o),()=>{t.removeEventListener(n,r,o)}}dispatchEvent(t,n){t.dispatchEvent(n)}remove(t){t.remove()}createElement(t,n){return n=n||this.getDefaultDocument(),n.createElement(t)}createHtmlDocument(){return document.implementation.createHTMLDocument(`fakeTitle`)}getDefaultDocument(){return document}isElementNode(t){return t.nodeType===Node.ELEMENT_NODE}isShadowRoot(t){return t instanceof DocumentFragment}getGlobalEventTarget(t,n){return n===`window`?window:n===`document`?t:n===`body`?t.body:null}getBaseHref(t){let n=KC();return n==null?null:XC(n)}resetBaseElement(){fi=null}getUserAgent(){return window.navigator.userAgent}getCookie(t){return ci(document.cookie,t)}};var fi=null;function KC(){return fi=fi||document.head.querySelector(`base`),fi?fi.getAttribute(`href`):null}function XC(e){return new URL(e,document.baseURI).pathname}var Uy=[`alt`,`control`,`meta`,`shift`];var JC={"\b":`Backspace`," ":`Tab`,"":`Delete`,"\x1B":`Escape`,Del:`Delete`,Esc:`Escape`,Left:`ArrowLeft`,Right:`ArrowRight`,Up:`ArrowUp`,Down:`ArrowDown`,Menu:`ContextMenu`,Scroll:`ScrollLock`,Win:`OS`};var eT={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey};var Hy=(()=>{class e extends li{constructor(n){super(n)}supports(n){return e.parseEventName(n)!=null}addEventListener(n,r,o,i){let s=e.parseEventName(r),a=e.eventCallback(s.fullKey,o,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Rt().onAndCancel(n,s.domEventName,a,i))}static parseEventName(n){let r=n.toLowerCase().split(`.`),o=r.shift();if(r.length===0||!(o===`keydown`||o===`keyup`))return null;let i=e._normalizeKey(r.pop()),s=``,a=r.indexOf(`code`);if(a>-1&&(r.splice(a,1),s=`code.`),Uy.forEach(l=>{let u=r.indexOf(l);u>-1&&(r.splice(u,1),s+=l+`.`)}),s+=i,r.length!=0||i.length===0)return null;let c={};return c.domEventName=o,c.fullKey=s,c}static matchEventFullKeyCode(n,r){let o=JC[n.key]||n.key,i=``;return r.indexOf(`code.`)>-1&&(o=n.code,i=`code.`),o==null||!o?!1:(o=o.toLowerCase(),o===` `?o=`space`:o===`.`&&(o=`dot`),Uy.forEach(s=>{if(s!==o){let a=eT[s];a(n)&&(i+=s+`.`)}}),i+=o,i===r)}static eventCallback(n,r,o){return i=>{e.matchEventFullKeyCode(i,n)&&o.runGuarded(()=>r(i))}}static _normalizeKey(n){return n===`esc`?`escape`:n}static ɵfac=function(r){return new(r||e)(S(G))};static ɵprov=T({token:e,factory:e.ɵfac})}return e})();async function tT(e,t,n){return Cy(k$1({rootComponent:e},nT(t,n)))}function nT(e,t){return{platformRef:t?.platformRef,appProviders:[...aT,...e?.providers??[]],platformProviders:sT}}function rT(){Pa.makeCurrent()}function oT(){return new Ge}function iT(){return ju(document),document}var sT=[{provide:Ro,useValue:Ay},{provide:Ps,useValue:rT,multi:!0},{provide:G,useFactory:iT}];var aT=[{provide:wo,useValue:`root`},{provide:Ge,useFactory:oT},{provide:ka,useClass:xa,multi:!0},{provide:ka,useClass:Hy,multi:!0},Fd,{provide:Un,useClass:Pd},{provide:Pd,useExisting:Un},kd,{provide:Ln,useExisting:Fd},[]];var At=class e{headers;normalizedNames=new Map;lazyInit;lazyUpdate=null;constructor(t){t?typeof t==`string`?this.lazyInit=()=>{this.headers=new Map,t.split(` -`).forEach(n=>{let r=n.indexOf(`:`);if(r>0){let o=n.slice(0,r),i=n.slice(r+1).trim();this.addHeaderEntry(o,i)}})}:typeof Headers<`u`&&t instanceof Headers?(this.headers=new Map,t.forEach((n,r)=>{this.addHeaderEntry(r,n)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(t).forEach(([n,r])=>{this.setHeaderEntries(n,r)})}:this.headers=new Map}has(t){return this.init(),this.headers.has(t.toLowerCase())}get(t){this.init();let n=this.headers.get(t.toLowerCase());return n&&n.length>0?n[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(t){return this.init(),this.headers.get(t.toLowerCase())||null}append(t,n){return this.clone({name:t,value:n,op:`a`})}set(t,n){return this.clone({name:t,value:n,op:`s`})}delete(t,n){return this.clone({name:t,value:n,op:`d`})}maybeSetNormalizedName(t,n){this.normalizedNames.has(n)||this.normalizedNames.set(n,t)}init(){this.lazyInit&&(this.lazyInit instanceof e?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(t=>this.applyUpdate(t)),this.lazyUpdate=null))}copyFrom(t){t.init();for(let[n,r]of t.headers.entries())this.headers.set(n,r),this.normalizedNames.set(n,t.normalizedNames.get(n))}clone(t){let n=new e;return n.lazyInit=this.lazyInit&&this.lazyInit instanceof e?this.lazyInit:this,n.lazyUpdate=(this.lazyUpdate||[]).concat([t]),n}applyUpdate(t){let n=t.name.toLowerCase();switch(t.op){case`a`:case`s`:let r=t.value;if(typeof r==`string`&&(r=[r]),r.length===0)return;this.maybeSetNormalizedName(t.name,n);let o=t.op===`a`?(this.headers.get(n)||[]).slice():[];o.push(...r),this.headers.set(n,o);break;case`d`:let i=t.value;if(i===void 0)this.headers.delete(n),this.normalizedNames.delete(n);else{let s=Array.isArray(i)?i:[i],a=this.headers.get(n);if(!a)return;a=a.filter(c=>s.indexOf(c)===-1),a.length===0?(this.headers.delete(n),this.normalizedNames.delete(n)):this.headers.set(n,a)}}}addHeaderEntry(t,n){let r=t.toLowerCase();this.maybeSetNormalizedName(t,r),this.headers.has(r)?this.headers.get(r).push(n):this.headers.set(r,[n])}setHeaderEntries(t,n){let r=(Array.isArray(n)?n:[n]).map(i=>i.toString()),o=t.toLowerCase();this.headers.set(o,r),this.maybeSetNormalizedName(t,o)}forEach(t){this.init(),Array.from(this.normalizedNames.keys()).forEach(n=>t(this.normalizedNames.get(n),this.headers.get(n)))}};var Fa=class{map=new Map;set(t,n){return this.map.set(t,n),this}get(t){return this.map.has(t)||this.map.set(t,t.defaultValue()),this.map.get(t)}delete(t){return this.map.delete(t),this}has(t){return this.map.has(t)}keys(){return this.map.keys()}};var ja=class{encodeKey(t){return Vy(t)}encodeValue(t){return Vy(t)}decodeKey(t){return decodeURIComponent(t)}decodeValue(t){return decodeURIComponent(t)}};function cT(e,t){let n=new Map;return e.length>0&&e.replace(/^\?/,``).split(`&`).forEach(o=>{let i=o.indexOf(`=`),[s,a]=i==-1?[t.decodeKey(o),``]:[t.decodeKey(o.slice(0,i)),t.decodeValue(o.slice(i+1))],c=n.get(s)||[];c.push(a),n.set(s,c)}),n}var lT=/%(\d[a-f0-9])/gi;var uT={40:`@`,"3A":`:`,24:`$`,"2C":`,`,"3B":`;`,"3D":`=`,"3F":`?`,"2F":`/`};function Vy(e){return encodeURIComponent(e).replace(lT,(t,n)=>uT[n]??t)}function La(e){return`${e}`}var xt=class e{map;encoder;updates=null;cloneFrom=null;constructor(t={}){if(this.encoder=t.encoder||new ja,t.fromString){if(t.fromObject)throw new y(2805,!1);this.map=cT(t.fromString,this.encoder)}else t.fromObject?(this.map=new Map,Object.keys(t.fromObject).forEach(n=>{let r=t.fromObject[n],o=Array.isArray(r)?r.map(La):[La(r)];this.map.set(n,o)})):this.map=null}has(t){return this.init(),this.map.has(t)}get(t){this.init();let n=this.map.get(t);return n?n[0]:null}getAll(t){return this.init(),this.map.get(t)||null}keys(){return this.init(),Array.from(this.map.keys())}append(t,n){return this.clone({param:t,value:n,op:`a`})}appendAll(t){let n=[];return Object.keys(t).forEach(r=>{let o=t[r];Array.isArray(o)?o.forEach(i=>{n.push({param:r,value:i,op:`a`})}):n.push({param:r,value:o,op:`a`})}),this.clone(n)}set(t,n){return this.clone({param:t,value:n,op:`s`})}delete(t,n){return this.clone({param:t,value:n,op:`d`})}toString(){return this.init(),this.keys().map(t=>{let n=this.encoder.encodeKey(t);return this.map.get(t).map(r=>n+`=`+this.encoder.encodeValue(r)).join(`&`)}).filter(t=>t!==``).join(`&`)}clone(t){let n=new e({encoder:this.encoder});return n.cloneFrom=this.cloneFrom||this,n.updates=(this.updates||[]).concat(t),n}init(){if(this.map===null&&(this.map=new Map),this.cloneFrom!==null){this.cloneFrom.init();for(let[t,n]of this.cloneFrom.map.entries())this.map.set(t,n);this.updates.forEach(t=>{switch(t.op){case`a`:case`s`:let n=t.op===`a`?(this.map.get(t.param)||[]).slice():[];n.push(La(t.value)),this.map.set(t.param,n);break;case`d`:if(t.value!==void 0){let r=(this.map.get(t.param)||[]).slice(),o=r.indexOf(La(t.value));o!==-1&&r.splice(o,1),r.length>0?this.map.set(t.param,r):this.map.delete(t.param)}else{this.map.delete(t.param);break}}}),this.cloneFrom=this.updates=null}}};function dT(e){switch(e){case`DELETE`:case`GET`:case`HEAD`:case`OPTIONS`:case`JSONP`:return!1;default:return!0}}function $y(e){return typeof ArrayBuffer<`u`&&e instanceof ArrayBuffer}function By(e){return typeof Blob<`u`&&e instanceof Blob}function zy(e){return typeof FormData<`u`&&e instanceof FormData}function fT(e){return typeof URLSearchParams<`u`&&e instanceof URLSearchParams}var jd=`Content-Type`;var Wy=`Accept`;var Qy=`text/plain`;var Zy=`application/json`;var hT=`${Zy}, ${Qy}, */*`;var Or=class e{url;body=null;headers;context;reportProgress=!1;reportUploadProgress=!1;reportDownloadProgress=!1;withCredentials=!1;credentials;keepalive=!1;cache;priority;mode;redirect;referrer;integrity;referrerPolicy;responseType=`json`;method;params;urlWithParams;transferCache;timeout;constructor(t,n,r,o){this.url=n,this.method=t.toUpperCase();let i;if(dT(this.method)||o?(this.body=r!==void 0?r:null,i=o):i=r,i){if(this.reportProgress=!!i.reportProgress,this.reportUploadProgress=!!i.reportUploadProgress,this.reportDownloadProgress=!!i.reportDownloadProgress,this.withCredentials=!!i.withCredentials,this.keepalive=!!i.keepalive,i.responseType&&(this.responseType=i.responseType),i.headers&&(this.headers=i.headers),i.context&&(this.context=i.context),i.params&&(this.params=i.params),i.priority&&(this.priority=i.priority),i.cache&&(this.cache=i.cache),i.credentials&&(this.credentials=i.credentials),typeof i.timeout==`number`){if(i.timeout<1||!Number.isInteger(i.timeout))throw new y(2822,``);this.timeout=i.timeout}i.mode&&(this.mode=i.mode),i.redirect&&(this.redirect=i.redirect),i.integrity&&(this.integrity=i.integrity),i.referrer!==void 0&&(this.referrer=i.referrer),i.referrerPolicy&&(this.referrerPolicy=i.referrerPolicy),this.transferCache=i.transferCache}if(this.headers??=new At,this.context??=new Fa,!this.params)this.params=new xt,this.urlWithParams=n;else{let s=this.params.toString();if(s.length===0)this.urlWithParams=n;else{let a=n,c=``,l=n.indexOf(`#`);l!==-1&&(c=n.substring(l),a=n.substring(0,l));let u=a.indexOf(`?`),d=u===-1?`?`:uJn.set(Pt,t.setHeaders[Pt]),kt)),t.setParams&&(Yr=Object.keys(t.setParams).reduce((Jn,Pt)=>Jn.set(Pt,t.setParams[Pt]),Yr)),new e(n,r,E,{params:Yr,headers:kt,context:Kr,reportProgress:O,reportUploadProgress:ge,reportDownloadProgress:Zr,responseType:o,withCredentials:_,transferCache:g,keepalive:i,cache:a,priority:s,timeout:w,mode:c,redirect:l,credentials:u,referrer:d,integrity:h,referrerPolicy:f})}};var zn=(function(e){return e[e.Sent=0]=`Sent`,e[e.UploadProgress=1]=`UploadProgress`,e[e.ResponseHeader=2]=`ResponseHeader`,e[e.DownloadProgress=3]=`DownloadProgress`,e[e.Response=4]=`Response`,e[e.User=5]=`User`,e})(zn||{});var kr=class{headers;status;statusText;url;ok;type;redirected;responseType;constructor(t,n=200,r=`OK`){this.headers=t.headers||new At,this.status=t.status!==void 0?t.status:n,this.statusText=t.statusText||r,this.url=t.url||null,this.redirected=t.redirected,this.responseType=t.responseType,this.ok=this.status>=200&&this.status<300}};var Ua=class e extends kr{constructor(t={}){super(t)}type=zn.ResponseHeader;clone(t={}){return new e({headers:t.headers||this.headers,status:t.status!==void 0?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}};var hi=class e extends kr{body;constructor(t={}){super(t),this.body=t.body!==void 0?t.body:null}type=zn.Response;clone(t={}){return new e({body:t.body!==void 0?t.body:this.body,headers:t.headers||this.headers,status:t.status!==void 0?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0,redirected:t.redirected??this.redirected,responseType:t.responseType??this.responseType})}};var Bn=class extends kr{name=`HttpErrorResponse`;message;error;ok=!1;constructor(t){super(t,0,`Unknown Error`),this.status>=200&&this.status<300?this.message=`Http failure during parsing for ${t.url||`(unknown url)`}`:this.message=`Http failure response for ${t.url||`(unknown url)`}: ${t.status} ${t.statusText}`,this.error=t.error||null}};var pT=200;var gT=/^\)\]\}',?\n/;var Yy=new v(``,{factory:()=>null});var Pr=(()=>{class e{fetchImpl=p(Hd,{optional:!0})?.fetch??((...n)=>globalThis.fetch(...n));ngZone=p(de);destroyRef=p(ve);maxResponseSize=p(Yy);handle(n){return new A(r=>{let o=new AbortController,i=!1,s={next:c=>{c.type===zn.Response&&(i=!0),r.next(c)},error:c=>{i=!0,r.error(c)},complete:()=>{i=!0,r.complete()}};this.doRequest(n,o.signal,s).then(Vd,c=>s.error(new Bn({error:c})));let a;return n.timeout&&(a=this.ngZone.runOutsideAngular(()=>setTimeout(()=>{o.signal.aborted||o.abort(new DOMException(`signal timed out`,`TimeoutError`))},n.timeout))),()=>{a!==void 0&&clearTimeout(a),!i&&!o.signal.aborted&&o.abort()}})}async doRequest(n,r,o){let i=this.createRequestInit(n),s;try{let E=this.ngZone.runOutsideAngular(()=>this.fetchImpl(n.urlWithParams,k$1({signal:r},i)));mT(E),o.next({type:zn.Sent}),s=await E}catch(E){o.error(new Bn({error:E,status:E.status??0,statusText:E.statusText,url:n.urlWithParams,headers:E.headers}));return}let a=new At(s.headers),c=s.statusText,l=s.url||n.urlWithParams,u=s.status,d=null,h=n.reportProgress||n.reportDownloadProgress;if(h&&o.next(new Ua({headers:a,status:u,statusText:c,url:l})),s.body){let E=s.headers.get(jd)??``,_=s.headers.get(`content-length`),O=_!==null?Number(_):NaN;this.maxResponseSize!==null&&Number.isFinite(O)&&O>this.maxResponseSize&&(await s.body.cancel(),qy(this.maxResponseSize));let ge=[],Zr=s.body.getReader(),kt=0,Yr,Kr,Jn=typeof Zone<`u`&&Zone.current,Pt=!1;if(await this.ngZone.runOutsideAngular(async()=>{for(;;){if(this.destroyRef.destroyed){await Zr.cancel(),Pt=!0;break}let{done:Ic,value:wc}=await Zr.read();if(Ic)break;if(ge.push(wc),kt+=wc.length,this.maxResponseSize!==null&&kt>this.maxResponseSize&&(await Zr.cancel(),qy(this.maxResponseSize)),h){Kr=n.responseType===`text`?(Kr??``)+(Yr??=Gy(E)).decode(wc,{stream:!0}):void 0;let bf=()=>o.next({type:zn.DownloadProgress,total:Number.isFinite(O)?O:void 0,loaded:kt,partialText:Kr});Jn?Jn.run(bf):bf()}}}),Pt){o.complete();return}let lE=this.concatChunks(ge,kt);try{d=this.parseBody(n,lE,E,u)}catch(Ic){o.error(new Bn({error:Ic,headers:new At(s.headers),status:s.status,statusText:s.statusText,url:s.url||n.urlWithParams}));return}}u===0&&(u=d?pT:0);let f=u>=200&&u<300,g=s.redirected,w=s.type;f?(o.next(new hi({body:d,headers:a,status:u,statusText:c,url:l,redirected:g,responseType:w})),o.complete()):o.error(new Bn({error:d,headers:a,status:u,statusText:c,url:l,redirected:g,responseType:w}))}parseBody(n,r,o,i){switch(n.responseType){case`json`:let s=new TextDecoder().decode(r).replace(gT,``);if(s===``)return null;try{return JSON.parse(s)}catch(a){if(i<200||i>=300)return s;throw a}case`text`:return Gy(o).decode(r);case`blob`:return new Blob([r],{type:o});case`arraybuffer`:return r.buffer}}createRequestInit(n){if(n.reportUploadProgress)throw new y(2824,!1);let r={},o;if(o=n.credentials,n.withCredentials&&(o=`include`),n.headers.forEach((i,s)=>r[i]=s.join(`,`)),n.headers.has(Wy)||(r[Wy]=hT),!n.headers.has(jd)){let i=n.detectContentTypeHeader();i!==null&&(r[jd]=i)}return{body:n.serializeBody(),method:n.method,headers:r,credentials:o,keepalive:n.keepalive,cache:n.cache,priority:n.priority,mode:n.mode,redirect:n.redirect,referrer:n.referrer,integrity:n.integrity,referrerPolicy:n.referrerPolicy}}concatChunks(n,r){let o=new Uint8Array(r),i=0;for(let s of n)o.set(s,i),i+=s.length;return o}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();var Hd=class{};function Vd(){}function mT(e){e.then(Vd,Vd)}function qy(e){throw new y(-2825,!1)}var yT=/charset=\s*["']?([^;"'\s]+)["']?/i;function Gy(e){let t=e.match(yT);if(t!==null)try{return new TextDecoder(t[1])}catch{}return new TextDecoder}var vT=new v(``,{factory:()=>!0});var ET=`XSRF-TOKEN`;var IT=new v(``,{factory:()=>ET});var wT=`X-XSRF-TOKEN`;var DT=new v(``,{factory:()=>wT});var bT=(()=>{class e{cookieName=p(IT);doc=p(G);lastCookieString=``;lastToken=null;parseCount=0;getToken(){let n=this.doc.cookie||``;return n!==this.lastCookieString&&(this.parseCount++,this.lastToken=ci(n,this.cookieName),this.lastCookieString=n),this.lastToken}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();var Ky=(()=>{class e{static ɵfac=function(r){return new(r||e)};static ɵprov=T({token:e,factory:function(r){let o=null;return r?o=new(r||e):o=S(bT),o},providedIn:`root`})}return e})();function Xy(e,t){if(!p(vT)||e.method===`GET`||e.method===`HEAD`)return t(e);try{let o=p(Hn).href,{origin:i}=new URL(o),{origin:s}=new URL(e.url,i);if(i!==s)return t(e)}catch{return t(e)}let n=p(Ky).getToken(),r=p(DT);return n!=null&&!e.headers.has(r)&&(e=e.clone({headers:e.headers.set(r,n)})),t(e)}function ST(e,t){return t(e)}function CT(e,t,n){return(r,o)=>oe(n,()=>t(r,i=>e(i,o)))}var $d=new v(``,{factory:()=>[Xy]});var Jy=new v(``);var ev=new v(``,{factory:()=>!0});var Va=(()=>{class e{static ɵfac=function(r){return new(r||e)};static ɵprov=T({token:e,factory:function(r){let o=null;return r?o=new(r||e):o=S(Pr),o},providedIn:`root`})}return e})();var Ha=(()=>{class e{backend;injector;chain=null;pendingTasks=p(ko);contributeToStability=p(ev);constructor(n,r){this.backend=n,this.injector=r}handle(n){if(this.chain===null){let o=this.injector.get($a,null,{skipSelf:!0}),i=o!==null&&this.backend===o,s=this.injector.get(Jy,[],i?{self:!0}:void 0),a=Array.from(new Set([...this.injector.get($d),...s]));this.chain=a.reduceRight((c,l)=>CT(c,l,this.injector),ST)}let r=this.chain;if(this.contributeToStability){let o=this.pendingTasks.add();return F(()=>r(n,i=>this.backend.handle(i))).pipe(to(o))}else return F(()=>r(n,o=>this.backend.handle(o)))}static ɵfac=function(r){return new(r||e)(S(Va),S(K))};static ɵprov=T({token:e,factory:e.ɵfac,providedIn:`root`})}return e})();var $a=(()=>{class e{static ɵfac=function(r){return new(r||e)};static ɵprov=T({token:e,factory:function(r){let o=null;return r?o=new(r||e):o=S(Ha),o},providedIn:`root`})}return e})();function Ud(e,t){return k$1({body:t},e)}var tv=(()=>{class e{handler;constructor(n){this.handler=n}request(n,r,o={}){let i;if(n instanceof Or)i=n;else{let c;o.headers instanceof At?c=o.headers:c=new At(o.headers);let l;o.params&&(o.params instanceof xt?l=o.params:l=new xt({fromObject:o.params})),i=new Or(n,r,o.body!==void 0?o.body:null,{headers:c,context:o.context,params:l,reportProgress:o.reportProgress,reportUploadProgress:o.reportUploadProgress,reportDownloadProgress:o.reportDownloadProgress,responseType:o.responseType||`json`,withCredentials:o.withCredentials,transferCache:o.transferCache,keepalive:o.keepalive,priority:o.priority,cache:o.cache,mode:o.mode,redirect:o.redirect,credentials:o.credentials,referrer:o.referrer,referrerPolicy:o.referrerPolicy,integrity:o.integrity,timeout:o.timeout})}let s=R(i).pipe(pn(c=>this.handler.handle(c)));if(n instanceof Or||o.observe===`events`)return s;let a=s.pipe(Pe(c=>c instanceof hi));switch(o.observe||`body`){case`body`:switch(i.responseType){case`arraybuffer`:return a.pipe($(c=>{if(c.body!==null&&!(c.body instanceof ArrayBuffer))throw new y(2806,!1);return c.body}));case`blob`:return a.pipe($(c=>{if(c.body!==null&&!(c.body instanceof Blob))throw new y(2807,!1);return c.body}));case`text`:return a.pipe($(c=>{if(c.body!==null&&typeof c.body!=`string`)throw new y(2808,!1);return c.body}));default:return a.pipe($(c=>c.body))}case`response`:return a;default:throw new y(2809,!1)}}delete(n,r={}){return this.request(`DELETE`,n,r)}get(n,r={}){return this.request(`GET`,n,r)}head(n,r={}){return this.request(`HEAD`,n,r)}jsonp(n,r){return this.request(`JSONP`,n,{params:new xt().append(r,`JSONP_CALLBACK`),observe:`body`,responseType:`json`})}options(n,r={}){return this.request(`OPTIONS`,n,r)}patch(n,r,o={}){return this.request(`PATCH`,n,Ud(o,r))}post(n,r,o={}){return this.request(`POST`,n,Ud(o,r))}put(n,r,o={}){return this.request(`PUT`,n,Ud(o,r))}static ɵfac=function(r){return new(r||e)(S($a))};static ɵprov=T({token:e,factory:e.ɵfac,providedIn:`root`})}return e})();var Ba=(function(e){return e[e.Interceptors=0]=`Interceptors`,e[e.LegacyInterceptors=1]=`LegacyInterceptors`,e[e.CustomXsrfConfiguration=2]=`CustomXsrfConfiguration`,e[e.NoXsrfProtection=3]=`NoXsrfProtection`,e[e.JsonpSupport=4]=`JsonpSupport`,e[e.RequestsMadeViaParent=5]=`RequestsMadeViaParent`,e[e.Fetch=6]=`Fetch`,e[e.Xhr=7]=`Xhr`,e})(Ba||{});function nv(e,t){return{ɵkind:e,ɵproviders:t}}function TT(...e){let t=[tv,Pr,Ha,{provide:$a,useExisting:Ha},{provide:Va,useFactory:()=>p(Pr)},{provide:$d,useValue:Xy,multi:!0}];for(let n of e)t.push(...n.ɵproviders);return tt(t)}function MT(e){return nv(Ba.Interceptors,e.map(t=>({provide:$d,useValue:t,multi:!0})))}function _T(){return nv(Ba.Fetch,[Pr,{provide:Va,useExisting:Pr}])}var rv=(()=>{class e{_doc;constructor(n){this._doc=n}getTitle(){return this._doc.title}setTitle(n){this._doc.title=n||``}static ɵfac=function(r){return new(r||e)(S(G))};static ɵprov=T({token:e,factory:e.ɵfac,providedIn:`root`})}return e})();var Bd=(()=>{class e{static ɵfac=function(r){return new(r||e)};static ɵprov=T({token:e,factory:function(r){let o=null;return r?o=new(r||e):o=S(NT),o},providedIn:`root`})}return e})();var NT=(()=>{class e extends Bd{_doc=p(G);sanitize(n,r){if(r==null)return null;switch(n){case W.NONE:return r;case W.HTML:return lt(r,`HTML`)?Re(r):ma(this._doc,String(r)).toString();case W.STYLE:return lt(r,`Style`)?Re(r):r;case W.SCRIPT:if(lt(r,`Script`))return Re(r);throw new y(5200,!1);case W.URL:return lt(r,`URL`)?Re(r):Wo(String(r));case W.RESOURCE_URL:if(lt(r,`ResourceURL`))return Re(r);throw new y(-5201,!1);default:throw new y(5202,!1)}}bypassSecurityTrustHtml(n){return Vu(n)}bypassSecurityTrustStyle(n){return $u(n)}bypassSecurityTrustScript(n){return Bu(n)}bypassSecurityTrustUrl(n){return zu(n)}bypassSecurityTrustResourceUrl(n){return Wu(n)}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();var M=`primary`;var Ti=Symbol(`RouteTitle`);var Zd=class{params;constructor(t){this.params=t||{}}has(t){return Object.hasOwn(this.params,t)}get(t){if(this.has(t)){let n=this.params[t];return Array.isArray(n)?n[0]:n}return null}getAll(t){if(this.has(t)){let n=this.params[t];return Array.isArray(n)?n:[n]}return[]}get keys(){return Object.keys(this.params)}};function qn(e){return new Zd(e)}function zd(e,t,n){for(let r=0;re.length||n.pathMatch===`full`&&(t.hasChildren()||r.lengthe.length||n.pathMatch===`full`&&t.hasChildren()&&n.path!==`**`)return null;let a={};return!zd(i,e.slice(0,i.length),a)||!zd(s,e.slice(e.length-s.length),a)?null:{consumed:e,posParams:a}}function Za(e){return new Promise((t,n)=>{e.pipe(gt()).subscribe({next:r=>t(r),error:r=>n(r)})})}function xT(e,t){if(e.length!==t.length)return!1;for(let n=0;nr[i]===o)}else return e===t}function AT(e){return e.length>0?e[e.length-1]:null}function Yn(e){return Zi(e)?e:Xo(e)?te(Promise.resolve(e)):R(e)}function hv(e){return Zi(e)?Za(e):Promise.resolve(e)}var OT={exact:gv,subset:mv};var pv={exact:kT,subset:PT,ignored:()=>!0};var df={paths:`exact`,fragment:`ignored`,matrixParams:`ignored`,queryParams:`exact`};var Hr={paths:`subset`,fragment:`ignored`,matrixParams:`ignored`,queryParams:`subset`};function ff(e,t,n){let r=e instanceof Se?e:t.parseUrl(e);return tn(()=>Ya(t.lastSuccessfulNavigation()?.finalUrl??new Se,r,n))}function Ya(e,t,n){let r=k$1(k$1({},Hr),n||{});return OT[r.paths](e.root,t.root,r.matrixParams)&&pv[r.queryParams](e.queryParams,t.queryParams)&&!(r.fragment===`exact`&&e.fragment!==t.fragment)}function kT(e,t){return dt(e,t)}function gv(e,t,n){if(!Wn(e.segments,t.segments)||!qa(e.segments,t.segments,n)||e.numberOfChildren!==t.numberOfChildren)return!1;for(let r in t.children)if(!e.children[r]||!gv(e.children[r],t.children[r],n))return!1;return!0}function PT(e,t){return Object.keys(t).length<=Object.keys(e).length&&Object.keys(t).every(n=>fv(e[n],t[n]))}function mv(e,t,n){return yv(e,t,t.segments,n)}function yv(e,t,n,r){if(e.segments.length>n.length){let o=e.segments.slice(0,n.length);return!(!Wn(o,n)||t.hasChildren()||!qa(o,n,r))}else if(e.segments.length===n.length){if(!Wn(e.segments,n)||!qa(e.segments,n,r))return!1;for(let o in t.children)if(!e.children[o]||!mv(e.children[o],t.children[o],r))return!1;return!0}else{let o=n.slice(0,e.segments.length),i=n.slice(e.segments.length);return!Wn(e.segments,o)||!qa(e.segments,o,r)||!e.children[M]?!1:yv(e.children[M],t,i,r)}}function qa(e,t,n){return t.every((r,o)=>pv[n](e[o].parameters,r.parameters))}var Se=class{root;queryParams;fragment;_queryParamMap;constructor(t=new j([],{}),n={},r=null){this.root=t,this.queryParams=n,this.fragment=r}get queryParamMap(){return this._queryParamMap??=qn(this.queryParams),this._queryParamMap}toString(){return UT.serialize(this)}};var j=class{segments;children;parent=null;constructor(t,n){this.segments=t,this.children=n,Object.values(n).forEach(r=>r.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return Ga(this)}};var sn=class{path;parameters;_parameterMap;constructor(t,n){this.path=t,this.parameters=n}get parameterMap(){return this._parameterMap??=qn(this.parameters),this._parameterMap}toString(){return Ev(this)}};function LT(e,t){return Wn(e,t)&&e.every((n,r)=>dt(n.parameters,t[r].parameters))}function Wn(e,t){return e.length!==t.length?!1:e.every((n,r)=>n.path===t[r].path)}function FT(e,t){let n=[];return Object.entries(e.children).forEach(([r,o])=>{r===M&&(n=n.concat(t(o,r)))}),Object.entries(e.children).forEach(([r,o])=>{r!==M&&(n=n.concat(t(o,r)))}),n}var Kn=(()=>{class e{static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:()=>new an})}return e})();var an=class{parse(t){let n=new Xd(t);return new Se(n.parseRootSegment(),n.parseQueryParams(),n.parseFragment())}serialize(t){let n=`/${pi(t.root,!0)}`;jT(n)&&(n=`/`);let r=$T(t.queryParams),o=typeof t.fragment==`string`?`#${HT(t.fragment)}`:``;return`${n}${r}${o}`}};var ov=`http://fake`;function jT(e){try{let t=new URL(e,ov);return t.origin!==ov||t.pathname.startsWith(`//`)}catch{return!0}}var UT=new an;function Ga(e){return e.segments.map(t=>Ev(t)).join(`/`)}function pi(e,t){if(!e.hasChildren())return Ga(e);if(t){let n=e.children[M]?pi(e.children[M],!1):``,r=[];return Object.entries(e.children).forEach(([o,i])=>{o!==M&&r.push(`${o}:${pi(i,!1)}`)}),r.length>0?`${n}(${r.join(`//`)})`:n}else{let n=FT(e,(r,o)=>o===M?[pi(e.children[M],!1)]:[`${o}:${pi(r,!1)}`]);return Object.keys(e.children).length===1&&e.children[M]!=null?`${Ga(e)}/${n[0]}`:`${Ga(e)}/(${n.join(`//`)})`}}function vv(e){return encodeURIComponent(e).replace(/%40/g,`@`).replace(/%3A/gi,`:`).replace(/%24/g,`$`).replace(/%2C/gi,`,`)}function za(e){return vv(e).replace(/%3B/gi,`;`)}function HT(e){return encodeURI(e)}function Kd(e){return vv(e).replace(/\(/g,`%28`).replace(/\)/g,`%29`).replace(/%26/gi,`&`)}function Qa(e){return decodeURIComponent(e)}function iv(e){return Qa(e.replace(/\+/g,`%20`))}function Ev(e){return`${Kd(e.path)}${VT(e.parameters)}`}function VT(e){return Object.entries(e).map(([t,n])=>`;${Kd(t)}=${Kd(n)}`).join(``)}function $T(e){let t=Object.entries(e).map(([n,r])=>Array.isArray(r)?r.map(o=>`${za(n)}=${za(o)}`).join(`&`):`${za(n)}=${za(r)}`).filter(n=>n);return t.length?`?${t.join(`&`)}`:``}var Wd=1073741824;function Ka(e,t,n){Number(t)>=32&&!Object.hasOwn(e,Wd)&&(e[Wd]=n,delete e[Wd]),e[t]=n}var BT=/^[^\/()?;#]+/;function qd(e){let t=e.match(BT);return t?t[0]:``}var zT=/^[^\/()?;=#]+/;function WT(e){let t=e.match(zT);return t?t[0]:``}var qT=/^[^=?&#]+/;function GT(e){let t=e.match(qT);return t?t[0]:``}var QT=/^[^&#]+/;function ZT(e){let t=e.match(QT);return t?t[0]:``}var Xd=class{url;remaining;constructor(t){this.url=t,this.remaining=t}parseRootSegment(){for(;this.consumeOptional(`/`););return this.remaining===``||this.peekStartsWith(`?`)||this.peekStartsWith(`#`)?new j([],{}):new j([],this.parseChildren())}parseQueryParams(){let t={};if(this.consumeOptional(`?`))do this.parseQueryParam(t);while(this.consumeOptional(`&`));return t}parseFragment(){return this.consumeOptional(`#`)?decodeURIComponent(this.remaining):null}parseChildren(t=0){if(t>50)throw new y(4010,!1);if(this.remaining===``)return{};this.consumeOptional(`/`);let n=[];for(this.peekStartsWith(`(`)||n.push(this.parseSegment());this.peekStartsWith(`/`)&&!this.peekStartsWith(`//`)&&!this.peekStartsWith(`/(`);)this.capture(`/`),n.push(this.parseSegment());let r={};this.peekStartsWith(`/(`)&&(this.capture(`/`),r=this.parseParens(!0,t));let o={};return this.peekStartsWith(`(`)&&(o=this.parseParens(!1,t)),(n.length>0||Object.keys(r).length>0)&&(o[M]=new j(n,r)),o}parseSegment(){let t=qd(this.remaining);if(t===``&&this.peekStartsWith(`;`))throw new y(4009,!1);return this.capture(t),new sn(Qa(t),this.parseMatrixParams())}parseMatrixParams(){let t={};for(;this.consumeOptional(`;`);)this.parseParam(t);return t}parseParam(t){let n=WT(this.remaining);if(!n)return;this.capture(n);let r=``;if(this.consumeOptional(`=`)){let o=qd(this.remaining);o&&(r=o,this.capture(r))}Ka(t,Qa(n),Qa(r))}parseQueryParam(t){let n=GT(this.remaining);if(!n)return;this.capture(n);let r=``;if(this.consumeOptional(`=`)){let s=ZT(this.remaining);s&&(r=s,this.capture(r))}let o=iv(n),i=iv(r);if(Object.hasOwn(t,o)){let s=t[o];Array.isArray(s)||(s=[s],t[o]=s),s.push(i)}else t[o]=i}parseParens(t,n){let r=Object.create(null);for(this.capture(`(`);!this.consumeOptional(`)`)&&this.remaining.length>0;){let o=qd(this.remaining),i=this.remaining[o.length];if(i!==`/`&&i!==`)`&&i!==`;`)throw new y(4010,!1);let s;o.indexOf(`:`)>-1?(s=o.slice(0,o.indexOf(`:`)),this.capture(s),this.capture(`:`)):t&&(s=M);let a=this.parseChildren(n+1),c=Object.keys(a).length===1&&a[M]?a[M]:new j([],a);Ka(r,s??M,c),this.consumeOptional(`//`)}return r}peekStartsWith(t){return this.remaining.startsWith(t)}consumeOptional(t){return this.peekStartsWith(t)?(this.remaining=this.remaining.substring(t.length),!0):!1}capture(t){if(!this.consumeOptional(t))throw new y(4011,!1)}};function Iv(e){return e.segments.length>0?new j([],{[M]:e}):e}function wv(e){let t=Object.create(null);for(let[r,o]of Object.entries(e.children)){let i=wv(o);if(r===M&&i.segments.length===0&&i.hasChildren())for(let[s,a]of Object.entries(i.children))Ka(t,s,a);else(i.segments.length>0||i.hasChildren())&&Ka(t,r,i)}return YT(new j(e.segments,t))}function YT(e){if(e.numberOfChildren===1&&e.children[M]){let t=e.children[M];return new j(e.segments.concat(t.segments),t.children)}return e}function cn(e){return e instanceof Se}function Dv(e,t,n=null,r=null,o=new an){return Sv(bv(e),t,n,r,o)}function bv(e){let t;function n(i){let s={};for(let c of i.children){let l=n(c);s[c.outlet]=l}let a=new j(i.url,s);return i===e&&(t=a),a}let o=Iv(n(e.root));return t??o}function Sv(e,t,n,r,o){let i=e;for(;i.parent;)i=i.parent;if(t.length===0)return Gd(i,i,i,n,r,o);let s=KT(t);if(s.toRoot())return Gd(i,i,new j([],{}),n,r,o);let a=XT(s,i,e),c=a.processChildren?mi(a.segmentGroup,a.index,s.commands):Tv(a.segmentGroup,a.index,s.commands);return Gd(i,a.segmentGroup,c,n,r,o)}function Xa(e){return typeof e==`object`&&e!=null&&!e.outlets&&!e.segmentPath}function Ei(e){return typeof e==`object`&&e!=null&&e.outlets}function sv(e,t,n){e||=`ɵ`;let r=new Se;return r.queryParams={[e]:t},n.parse(n.serialize(r)).queryParams[e]}function Gd(e,t,n,r,o,i){let s={};for(let[l,u]of Object.entries(r??{}))s[l]=Array.isArray(u)?u.map(d=>sv(l,d,i)):sv(l,u,i);let a;e===t?a=n:a=Cv(e,t,n);return new Se(Iv(wv(a)),s,o)}function Cv(e,t,n){let r=Object.create(null);return Object.entries(e.children).forEach(([o,i])=>{i===t?r[o]=n:r[o]=Cv(i,t,n)}),new j(e.segments,r)}var Ja=class{isAbsolute;numberOfDoubleDots;commands;constructor(t,n,r){if(this.isAbsolute=t,this.numberOfDoubleDots=n,this.commands=r,t&&r.length>0&&Xa(r[0]))throw new y(4003,!1);let o=r.find(Ei);if(o&&o!==AT(r))throw new y(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]==`/`}};function KT(e){if(typeof e[0]==`string`&&e.length===1&&e[0]===`/`)return new Ja(!0,0,e);let t=0,n=!1,r=e.reduce((o,i,s)=>{if(typeof i==`object`&&i!=null){if(i.outlets){let a={};return Object.entries(i.outlets).forEach(([c,l])=>{a[c]=typeof l==`string`?l.split(`/`):l}),[...o,{outlets:a}]}if(i.segmentPath)return[...o,i.segmentPath]}return typeof i!=`string`?[...o,i]:s===0?(i.split(`/`).forEach((a,c)=>{c==0&&a===`.`||(c==0&&a===``?n=!0:a===`..`?t++:a!=``&&o.push(a))}),o):[...o,i]},[]);return new Ja(n,t,r)}var Fr=class{segmentGroup;processChildren;index;constructor(t,n,r){this.segmentGroup=t,this.processChildren=n,this.index=r}};function XT(e,t,n){if(e.isAbsolute)return new Fr(t,!0,0);if(!n)return new Fr(t,!1,NaN);if(n.parent===null)return new Fr(n,!0,0);let r=Xa(e.commands[0])?0:1;return JT(n,n.segments.length-1+r,e.numberOfDoubleDots)}function JT(e,t,n){let r=e,o=t,i=n;for(;i>o;){if(i-=o,r=r.parent,!r)throw new y(4005,!1);o=r.segments.length}return new Fr(r,!1,o-i)}function eM(e){return Ei(e[0])?e[0].outlets:{[M]:e}}function Tv(e,t,n){if(e??=new j([],{}),e.segments.length===0&&e.hasChildren())return mi(e,t,n);let r=tM(e,t,n),o=n.slice(r.commandIndex);if(r.match&&r.pathIndexi!==M)&&e.children[M]&&e.numberOfChildren===1&&e.children[M].segments.length===0){let i=mi(e.children[M],t,n);return new j(e.segments,i.children)}return Object.entries(r).forEach(([i,s])=>{typeof s==`string`&&(s=[s]),s!==null&&(o[i]=Tv(e.children[i],t,s))}),Object.entries(e.children).forEach(([i,s])=>{r[i]===void 0&&(o[i]=s)}),new j(e.segments,o)}}function tM(e,t,n){let r=0,o=t,i={match:!1,pathIndex:0,commandIndex:0};for(;o=n.length)return i;let s=e.segments[o],a=n[r];if(Ei(a))break;let c=`${a}`,l=r0&&c===void 0)break;if(c&&l&&typeof l==`object`&&l.outlets===void 0){if(!cv(c,l,s))return i;r+=2}else{if(!cv(c,{},s))return i;r++}o++}return{match:!0,pathIndex:o,commandIndex:r}}function Jd(e,t,n){let r=e.segments.slice(0,t),o=0;for(;o{typeof r==`string`&&(r=[r]),r!==null&&(t[n]=Jd(new j([],{}),0,r))}),t}function av(e){let t={};return Object.entries(e).forEach(([n,r])=>t[n]=`${r}`),t}function cv(e,t,n){return e==n.path&&dt(t,n.parameters)}var ec=class{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return this.route?.snapshot._environmentInjector??this.rootInjector}constructor(t){this.rootInjector=t,this.children=new Gn(this.rootInjector)}resetChildren(){this.children=new Gn(this.rootInjector)}};var Gn=(()=>{class e{rootInjector;contexts=new Map;constructor(n){this.rootInjector=n}onChildOutletCreated(n,r){let o=this.getOrCreateContext(n);o.outlet=r,this.contexts.set(n,o)}onChildOutletDestroyed(n){let r=this.getContext(n);r&&(r.outlet=null,r.attachRef=null)}onOutletDeactivated(){let n=this.contexts;return this.contexts=new Map,n}onOutletReAttached(n){this.contexts=n}getOrCreateContext(n){let r=this.getContext(n);return r||(r=new ec(this.rootInjector),this.contexts.set(n,r)),r}getContext(n){return this.contexts.get(n)||null}static ɵfac=function(r){return new(r||e)(S(K))};static ɵprov=T({token:e,factory:e.ɵfac,providedIn:`root`})}return e})();var tc=class{_root;constructor(t){this._root=t}get root(){return this._root.value}parent(t){let n=this.pathFromRoot(t);return n.length>1?n[n.length-2]:null}children(t){let n=ef(t,this._root);return n?n.children.map(r=>r.value):[]}firstChild(t){let n=ef(t,this._root);return n&&n.children.length>0?n.children[0].value:null}siblings(t){let n=tf(t,this._root);return n.length<2?[]:n[n.length-2].children.map(o=>o.value).filter(o=>o!==t)}pathFromRoot(t){return tf(t,this._root).map(n=>n.value)}};function ef(e,t){if(e===t.value)return t;for(let n of t.children){let r=ef(e,n);if(r)return r}return null}function tf(e,t){if(e===t.value)return[t];for(let n of t.children){let r=tf(e,n);if(r.length)return r.unshift(t),r}return[]}var be=class{value;children;constructor(t,n){this.value=t,this.children=n}toString(){return`TreeNode(${this.value})`}};function Lr(e){let t={};return e&&e.children.forEach(n=>t[n.value.outlet]=n),t}var Ii=class extends tc{snapshot;constructor(t,n){super(t),this.snapshot=n,pf(this,t)}toString(){return this.snapshot.toString()}};function Mv(e,t){let n=rM(e,t),r=new ce([new sn(``,{})]),o=new ce({}),i=new ce({}),c=new Ot(r,o,new ce({}),new ce(``),i,M,e,n.root);return c.snapshot=n.root,new Ii(new be(c,[]),n)}function rM(e,t){return new wi(``,new be(new Vr([],{},{},``,{},M,e,null,{},t),[]))}var Ot=class{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;resources;_localInjector;pending;paramsSignal;queryParamsSignal;paramMapSignal;queryParamMapSignal;fragmentSignal;dataSignal;constructor(t,n,r,o,i,s,a,c){this.urlSubject=t,this.paramsSubject=n,this.queryParamsSubject=r,this.fragmentSubject=o,this.dataSubject=i,this.outlet=s,this.component=a,this._futureSnapshot=c,this.title=this.dataSubject?.pipe($(l=>l[Ti]))??R(void 0),this.url=t,this.params=n,this.queryParams=r,this.fragment=o,this.data=i}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe($(t=>qn(t))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe($(t=>qn(t))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}_setPending(t){this._futureSnapshot=t,this.pending?.set(!0)}};var oM=`always`;function hf(e,t,n){let r,{routeConfig:o}=e;return t!==null&&(n===`always`||o?.path===``||!t.component&&!t.routeConfig?.loadComponent)?r={params:Object.keys(e.params).length===0?t.params:Object.freeze(k$1(k$1({},t.params),e.params)),data:Object.freeze(k$1(k$1({},t.data),e.data)),resolve:k$1(k$1(k$1(k$1({},e.data),t.data),o?.data),e._resolvedData)}:r={params:Object.freeze(k$1({},e.params)),data:Object.freeze(k$1({},e.data)),resolve:k$1(k$1({},e.data),e._resolvedData??{})},o&&Nv(o)&&(r.resolve[Ti]=o.title),r}var Vr=class{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;_environmentInjector;resources;get title(){return this.data?.[Ti]}constructor(t,n,r,o,i,s,a,c,l,u){this.url=t,this.params=n,this.queryParams=r,this.fragment=o,this.data=i,this.outlet=s,this.component=a,this.routeConfig=c,this._resolve=l,this._environmentInjector=u}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=qn(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=qn(this.queryParams),this._queryParamMap}toString(){return`Route(url:'${this.url.map(r=>r.toString()).join(`/`)}', path:'${this.routeConfig?this.routeConfig.path:``}')`}};var wi=class extends tc{url;constructor(t,n){super(n),this.url=t,pf(this,n)}toString(){return _v(this._root)}};function pf(e,t){t.value._routerState=e,t.children.forEach(n=>pf(e,n))}function _v(e){let t=e.children.length>0?` { ${e.children.map(_v).join(`, `)} } `:``;return`${e.value}${t}`}function Qd(e){if(e.snapshot){let t=e.snapshot,n=e._futureSnapshot;e.snapshot=n,dt(t.queryParams,n.queryParams)||e.queryParamsSubject.next(n.queryParams),t.fragment!==n.fragment&&e.fragmentSubject.next(n.fragment),dt(t.params,n.params)||e.paramsSubject.next(n.params),xT(t.url,n.url)||e.urlSubject.next(n.url),dt(t.data,n.data)||e.dataSubject.next(n.data)}else e.snapshot=e._futureSnapshot,e.dataSubject.next(e._futureSnapshot.data)}function nf(e,t){let n=dt(e.params,t.params)&<(e.url,t.url),r=!e.parent!=!t.parent;return n&&!r&&(!e.parent||nf(e.parent,t.parent))}function Nv(e){return typeof e.title==`string`||e.title===null}var Rv=new v(``);var gf=(()=>{class e{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=M;activateEvents=new ye;deactivateEvents=new ye;attachEvents=new ye;detachEvents=new ye;routerOutletData=rn();parentContexts=p(Gn);location=p(Rr);changeDetector=p(ii);inputBinder=p(Mi,{optional:!0});supportsBindingToComponentInputs=!0;ngOnChanges(n){if(n.name){let{firstChange:r,previousValue:o}=n.name;if(r)return;this.isTrackedInParentContexts(o)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(o)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(n){return this.parentContexts.getContext(n)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let n=this.parentContexts.getContext(this.name);n?.route&&(n.attachRef?this.attach(n.attachRef,n.route):this.activateWith(n.route,n.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new y(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new y(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new y(4012,!1);this.location.detach();let n=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(n.instance),n}attach(n,r){this.activated=n,this._activatedRoute=r,this.location.insert(n.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this,this.location.injector),this.attachEvents.emit(n.instance)}deactivate(){if(this.activated){let n=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(n)}}activateWith(n,r){if(this.isActivated)throw new y(4013,!1);this._activatedRoute=n;let o=this.location,s=n.snapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,c=new rf(n,a,o.injector,this.routerOutletData);this.activated=o.createComponent(s,{index:o.length,injector:c,environmentInjector:r}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this,this.location.injector),this.activateEvents.emit(this.activated.instance)}static ɵfac=function(r){return new(r||e)};static ɵdir=xr({type:e,selectors:[[`router-outlet`]],inputs:{name:`name`,routerOutletData:[1,`routerOutletData`]},outputs:{activateEvents:`activate`,deactivateEvents:`deactivate`,attachEvents:`attach`,detachEvents:`detach`},exportAs:[`outlet`],features:[_r]})}return e})();var rf=class{route;childContexts;parent;outletData;constructor(t,n,r,o){this.route=t,this.childContexts=n,this.parent=r,this.outletData=o}get(t,n){return t===Ot?this.route:t===Gn?this.childContexts:t===Rv?this.outletData:this.parent.get(t,n)}};var Mi=new v(``);var xv=(()=>{class e{options;feature;outletDataSubscriptions=new Map;outletSeenKeys=new Map;outletEffects=new Map;constructor(n,r=null){this.options=n,this.feature=r,this.options.queryParams??=!0}bindActivatedRouteToOutletComponent(n,r){this.unsubscribeFromRouteData(n),this.subscribeToRouteData(n,r)}unsubscribeFromRouteData(n){this.outletDataSubscriptions.get(n)?.unsubscribe(),this.outletDataSubscriptions.delete(n),this.outletSeenKeys.delete(n),this.outletEffects.get(n)?.forEach(r=>r.destroy()),this.outletEffects.delete(n)}subscribeToRouteData(n,r){let{activatedRoute:o}=n,i=[],s=[];if(this.feature?.createResourceOutletBindingEffects&&n.activatedComponentRef){let{handledKeys:c,createdEffects:l}=this.feature.createResourceOutletBindingEffects(n.activatedComponentRef,o);i.push(...l),s=c}i.length>0&&this.outletEffects.set(n,i);let a=Ji([this.options.queryParams?o.queryParams:R({}),o.params,o.data]).pipe(Te(([c,l,u],d)=>(u=k$1(k$1(k$1(k$1({},c),l),u),o.resources),d===0?R(u):Promise.resolve(u)))).subscribe(c=>{if(!n.isActivated||!n.activatedComponentRef||n.activatedRoute!==o||o.component===null){this.unsubscribeFromRouteData(n);return}let l=_d(o.component);if(!l){this.unsubscribeFromRouteData(n);return}let u=this.outletSeenKeys.get(n);u||(u=new Set,this.outletSeenKeys.set(n,u));for(let h of Object.keys(c))u.add(h);let d=this.options.unmatchedInputBehavior??`alwaysUndefined`;for(let{templateName:h}of l.inputs){if(s.includes(h))continue;let f=c[h];(f!==void 0||d===`alwaysUndefined`||u.has(h))&&n.activatedComponentRef.setInput(h,f)}});this.outletDataSubscriptions.set(n,a)}static ɵfac=function(r){Ko()};static ɵprov=T({token:e,factory:e.ɵfac})}return e})();var mf=(()=>{class e{static ɵfac=function(r){return new(r||e)};static ɵcmp=ei({type:e,selectors:[[`ng-component`]],exportAs:[`emptyRouterOutlet`],decls:1,vars:0,template:function(r,o){r&1&&ba(0,`router-outlet`)},dependencies:[gf],encapsulation:2,changeDetection:1})}return e})();function yf(e){let t=e.children&&e.children.map(yf),n=t?l(k$1({},e),{children:t}):k$1({},e);return!n.component&&!n.loadComponent&&(t||n.loadChildren)&&n.outlet&&n.outlet!==M&&(n.component=mf),n}var jr=`imperative`;var se=(function(e){return e[e.NavigationStart=0]=`NavigationStart`,e[e.NavigationEnd=1]=`NavigationEnd`,e[e.NavigationCancel=2]=`NavigationCancel`,e[e.NavigationError=3]=`NavigationError`,e[e.RoutesRecognized=4]=`RoutesRecognized`,e[e.ResolveStart=5]=`ResolveStart`,e[e.ResolveEnd=6]=`ResolveEnd`,e[e.GuardsCheckStart=7]=`GuardsCheckStart`,e[e.GuardsCheckEnd=8]=`GuardsCheckEnd`,e[e.RouteConfigLoadStart=9]=`RouteConfigLoadStart`,e[e.RouteConfigLoadEnd=10]=`RouteConfigLoadEnd`,e[e.ChildActivationStart=11]=`ChildActivationStart`,e[e.ChildActivationEnd=12]=`ChildActivationEnd`,e[e.ActivationStart=13]=`ActivationStart`,e[e.ActivationEnd=14]=`ActivationEnd`,e[e.Scroll=15]=`Scroll`,e[e.NavigationSkipped=16]=`NavigationSkipped`,e})(se||{});var ke=class{id;url;constructor(t,n){this.id=t,this.url=n}};var ln=class extends ke{type=se.NavigationStart;navigationTrigger;restoredState;constructor(t,n,r=`imperative`,o=null){super(t,n),this.navigationTrigger=r,this.restoredState=o}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}};var ze=class extends ke{urlAfterRedirects;type=se.NavigationEnd;constructor(t,n,r){super(t,n),this.urlAfterRedirects=r}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}};var pe=(function(e){return e[e.Redirect=0]=`Redirect`,e[e.SupersededByNewNavigation=1]=`SupersededByNewNavigation`,e[e.NoDataFromResolver=2]=`NoDataFromResolver`,e[e.GuardRejected=3]=`GuardRejected`,e[e.Aborted=4]=`Aborted`,e})(pe||{});var $r=(function(e){return e[e.IgnoredSameUrlNavigation=0]=`IgnoredSameUrlNavigation`,e[e.IgnoredByUrlHandlingStrategy=1]=`IgnoredByUrlHandlingStrategy`,e})($r||{});var Be=class extends ke{reason;code;type=se.NavigationCancel;constructor(t,n,r,o){super(t,n),this.reason=r,this.code=o}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}};function Av(e){return e instanceof Be&&(e.code===pe.Redirect||e.code===pe.SupersededByNewNavigation)}var ft=class extends ke{reason;code;type=se.NavigationSkipped;constructor(t,n,r,o){super(t,n),this.reason=r,this.code=o}};var Qn=class extends ke{error;target;type=se.NavigationError;constructor(t,n,r,o){super(t,n),this.error=r,this.target=o}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}};var Di=class extends ke{urlAfterRedirects;state;type=se.RoutesRecognized;constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}};var nc=class extends ke{urlAfterRedirects;state;type=se.GuardsCheckStart;constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}};var rc=class extends ke{urlAfterRedirects;state;shouldActivate;type=se.GuardsCheckEnd;constructor(t,n,r,o,i){super(t,n),this.urlAfterRedirects=r,this.state=o,this.shouldActivate=i}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}};var oc=class extends ke{urlAfterRedirects;state;type=se.ResolveStart;constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}};var ic=class extends ke{urlAfterRedirects;state;type=se.ResolveEnd;constructor(t,n,r,o){super(t,n),this.urlAfterRedirects=r,this.state=o}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}};var sc=class{route;type=se.RouteConfigLoadStart;constructor(t){this.route=t}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}};var ac=class{route;type=se.RouteConfigLoadEnd;constructor(t){this.route=t}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}};var cc=class{snapshot;type=se.ChildActivationStart;constructor(t){this.snapshot=t}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||``}')`}};var lc=class{snapshot;type=se.ChildActivationEnd;constructor(t){this.snapshot=t}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||``}')`}};var uc=class{snapshot;type=se.ActivationStart;constructor(t){this.snapshot=t}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||``}')`}};var dc=class{snapshot;type=se.ActivationEnd;constructor(t){this.snapshot=t}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||``}')`}};var Br=class{routerEvent;position;anchor;scrollBehavior;type=se.Scroll;constructor(t,n,r,o){this.routerEvent=t,this.position=n,this.anchor=r,this.scrollBehavior=o}toString(){let t=this.position?`${this.position[0]}, ${this.position[1]}`:null;return`Scroll(anchor: '${this.anchor}', position: '${t}')`}};var zr=class{};var bi=class{};var Wr=class{url;navigationBehaviorOptions;constructor(t,n){this.url=t,this.navigationBehaviorOptions=n}};function iM(e){return!(e instanceof zr)&&!(e instanceof Wr)&&!(e instanceof bi)}function sM(e,t,n){let r=new Set;return{newlyCreatedRoutes:r,state:new Ii(Si(e,t._root,n?n._root:void 0,r),t)}}function Si(e,t,n,r){if(n&&e.shouldReuseRoute(t.value,n.value.snapshot)){let o=n.value;o._setPending(t.value);return new be(o,aM(e,t,n,r))}else{if(e.shouldAttach(t.value)){let s=e.retrieve(t.value);if(s!==null){let a=s.route;return a.value._setPending(t.value),a.children=t.children.map(c=>Si(e,c,void 0,r)),a}}let o=cM(t.value);o._setPending(t.value),r.add(o);return new be(o,t.children.map(s=>Si(e,s,void 0,r)))}}function aM(e,t,n,r){return t.children.map(o=>{for(let i of n.children)if(e.shouldReuseRoute(o.value,i.value.snapshot))return Si(e,o,i,r);return Si(e,o,void 0,r)})}function cM(e){return new Ot(new ce(e.url),new ce(e.params),new ce(e.queryParams),new ce(e.fragment),new ce(e.data),e.outlet,e.component,e)}var Zn=class e extends Error{redirectTo;navigationBehaviorOptions;constructor(t,n){super(),this.redirectTo=t,this.navigationBehaviorOptions=n,Object.setPrototypeOf(this,e.prototype)}};var Ov=`ngNavigationCancelingError`;function yi(e,t){let{redirectTo:n,navigationBehaviorOptions:r}=cn(t)?{redirectTo:t,navigationBehaviorOptions:void 0}:t,o=kv(!1,pe.Redirect);return o.url=n,o.navigationBehaviorOptions=r,o}function kv(e,t){let n=new Error(`NavigationCancelingError: ${e||``}`);return n[Ov]=!0,n.cancellationCode=t,n}function lM(e){return Pv(e)&&cn(e.url)}function Pv(e){return!!e&&e[Ov]}var of=class{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(t,n,r,o,i){this.routeReuseStrategy=t,this.futureState=n,this.currState=r,this.forwardEvent=o,this.inputBindingEnabled=i}activate(t){let n=this.futureState._root,r=this.currState?this.currState._root:null;this.deactivateChildRoutes(n,r,t),Qd(this.futureState.root),this.activateChildRoutes(n,r,t)}deactivateChildRoutes(t,n,r){let o=Lr(n);t.children.forEach(i=>{let s=i.value.outlet;this.deactivateRoutes(i,o[s],r),delete o[s]}),Object.values(o).forEach(i=>{this.deactivateRouteAndItsChildren(i,r)})}deactivateRoutes(t,n,r){let o=t.value,i=n?n.value:null;if(o===i)if(o.component){let s=r.getContext(o.outlet);s&&this.deactivateChildRoutes(t,n,s.children)}else this.deactivateChildRoutes(t,n,r);else i&&this.deactivateRouteAndItsChildren(n,r)}deactivateRouteAndItsChildren(t,n){t.value.component&&this.routeReuseStrategy.shouldDetach(t.value.snapshot)?this.detachAndStoreRouteSubtree(t,n):this.deactivateRouteAndOutlet(t,n)}detachAndStoreRouteSubtree(t,n){let r=n.getContext(t.value.outlet),o=r&&t.value.component?r.children:n,i=Lr(t);for(let s of Object.values(i))this.deactivateRouteAndItsChildren(s,o);if(r&&r.outlet){let s=r.outlet.detach(),a=r.children.contexts;r.resetChildren(),this.routeReuseStrategy.store(t.value.snapshot,{componentRef:s,route:t,contexts:a})}}deactivateRouteAndOutlet(t,n){let r=n.getContext(t.value.outlet),o=r&&t.value.component?r.children:n,i=Lr(t);for(let s of Object.values(i))this.deactivateRouteAndItsChildren(s,o);r&&(r.outlet&&(r.outlet.deactivate(),r.children.onOutletDeactivated()),r.attachRef=null,r.route=null),t.value._localInjector?.destroy()}activateChildRoutes(t,n,r){let o=Lr(n);t.children.forEach(i=>{this.activateRoutes(i,o[i.value.outlet],r),this.forwardEvent(new dc(i.value.snapshot))}),t.children.length&&this.forwardEvent(new lc(t.value.snapshot))}activateRoutes(t,n,r){let o=t.value,i=n?n.value:null;if(Qd(o),o===i)if(o.component){let s=r.getOrCreateContext(o.outlet);this.activateChildRoutes(t,n,s.children)}else this.activateChildRoutes(t,n,r);else if(o.component){let s=r.getOrCreateContext(o.outlet);if(this.routeReuseStrategy.shouldAttach(o.snapshot)){let a=this.routeReuseStrategy.retrieve(o.snapshot);this.routeReuseStrategy.store(o.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),Qd(a.route.value),this.activateChildRoutes(t,null,s.children)}else s.attachRef=null,s.route=o,s.outlet&&s.outlet.activateWith(o,s.injector),this.activateChildRoutes(t,null,s.children)}else this.activateChildRoutes(t,null,r)}};var fc=class{path;route;constructor(t){this.path=t,this.route=this.path[this.path.length-1]}};var Ur=class{component;route;constructor(t,n){this.component=t,this.route=n}};function uM(e,t,n){let r=e._root;return gi(r,t?t._root:null,n,[r.value])}function dM(e){let t=e.routeConfig?e.routeConfig.canActivateChild:null;return!t||t.length===0?null:{node:e,guards:t}}function Gr(e,t){let n=Symbol(),r=t.get(e,n);return r===n?typeof e==`function`&&!sl(e)?e:t.get(e):r}function gi(e,t,n,r,o={canDeactivateChecks:[],canActivateChecks:[]}){let i=Lr(t);return e.children.forEach(s=>{fM(s,i[s.value.outlet],n,r.concat([s.value]),o),delete i[s.value.outlet]}),Object.entries(i).forEach(([s,a])=>vi(a,n.getContext(s),n,o)),o}function fM(e,t,n,r,o={canDeactivateChecks:[],canActivateChecks:[]}){let i=e.value,s=t?t.value:null,a=n?n.getContext(e.value.outlet):null;if(s&&i.routeConfig===s.routeConfig){let c=hM(s,i,i.routeConfig.runGuardsAndResolvers);c?o.canActivateChecks.push(new fc(r)):(i.data=s.data,i._resolvedData=s._resolvedData),i.component?gi(e,t,a?a.children:null,r,o):gi(e,t,n,r,o),c&&a&&a.outlet&&a.outlet.isActivated&&o.canDeactivateChecks.push(new Ur(a.outlet.component,s))}else s&&vi(t,a,n,o),o.canActivateChecks.push(new fc(r)),i.component?gi(e,null,a?a.children:null,r,o):gi(e,null,n,r,o);return o}function hM(e,t,n){if(typeof n==`function`)return oe(t._environmentInjector,()=>n(e,t));switch(n){case`pathParamsChange`:return!Wn(e.url,t.url);case`pathParamsOrQueryParamsChange`:return!Wn(e.url,t.url)||!dt(e.queryParams,t.queryParams);case`always`:return!0;case`paramsOrQueryParamsChange`:return!nf(e,t)||!dt(e.queryParams,t.queryParams);default:return!nf(e,t)}}function vi(e,t,n,r){let o=Lr(e),i=e.value;Object.entries(o).forEach(([s,a])=>{i.component?t?vi(a,t.children.getContext(s),t.children,r):vi(a,null,null,r):vi(a,n?n.getContext(s):null,n,r)}),i.component?t&&t.outlet&&t.outlet.isActivated?r.canDeactivateChecks.push(new Ur(t.outlet.component,i)):r.canDeactivateChecks.push(new Ur(null,i)):r.canDeactivateChecks.push(new Ur(null,i))}function _i(e){return typeof e==`function`}function pM(e){return typeof e==`boolean`}function gM(e){return e&&_i(e.canLoad)}function mM(e){return e&&_i(e.canActivate)}function yM(e){return e&&_i(e.canActivateChild)}function vM(e){return e&&_i(e.canDeactivate)}function EM(e){return e&&_i(e.canMatch)}function Lv(e){return e instanceof ht||e?.name===`EmptyError`}var Wa=Symbol(`INITIAL_VALUE`);function qr(){return Te(e=>Ji(e.map(t=>t.pipe(pt(1),xc(Wa)))).pipe($(t=>{for(let n of t)if(n!==!0){if(n===Wa)return Wa;if(n===!1||IM(n))return n}return!0}),Pe(t=>t!==Wa),pt(1)))}function IM(e){return cn(e)||e instanceof Zn}function Fv(e){return e.aborted?R(void 0).pipe(pt(1)):new A(t=>{let n=()=>{t.next(),t.complete()};return e.addEventListener(`abort`,n),()=>e.removeEventListener(`abort`,n)})}function jv(e){return no(Fv(e))}function wM(e){return me(t=>{let{targetSnapshot:n,currentSnapshot:r,guards:{canActivateChecks:o,canDeactivateChecks:i}}=t;return i.length===0&&o.length===0?R(l(k$1({},t),{guardsResult:!0})):DM(i,n,r).pipe(me(s=>s&&pM(s)?bM(n,o,e):R(s)),$(s=>l(k$1({},t),{guardsResult:s})))})}function DM(e,t,n){return te(e).pipe(me(r=>_M(r.component,r.route,n,t)),gt(r=>r!==!0,!0))}function bM(e,t,n){return te(t).pipe(pn(r=>ir(CM(r.route.parent,n),SM(r.route,n),MM(e,r.path),TM(e,r.route))),gt(r=>r!==!0,!0))}function SM(e,t){return e!==null&&t&&t(new uc(e)),R(!0)}function CM(e,t){return e!==null&&t&&t(new cc(e)),R(!0)}function TM(e,t){let n=t.routeConfig?t.routeConfig.canActivate:null;if(!n||n.length===0)return R(!0);return R(n.map(o=>eo(()=>{let i=t._environmentInjector,s=Gr(o,i);return Yn(mM(s)?s.canActivate(t,e):oe(i,()=>s(t,e))).pipe(gt())}))).pipe(qr())}function MM(e,t){let n=t[t.length-1];return R(t.slice(0,t.length-1).reverse().map(i=>dM(i)).filter(i=>i!==null).map(i=>eo(()=>{return R(i.guards.map(a=>{let c=i.node._environmentInjector,l=Gr(a,c);return Yn(yM(l)?l.canActivateChild(n,e):oe(c,()=>l(n,e))).pipe(gt())})).pipe(qr())}))).pipe(qr())}function _M(e,t,n,r){let o=t&&t.routeConfig?t.routeConfig.canDeactivate:null;if(!o||o.length===0)return R(!0);return R(o.map(s=>{let a=t._environmentInjector,c=Gr(s,a);return Yn(vM(c)?c.canDeactivate(e,t,n,r):oe(a,()=>c(e,t,n,r))).pipe(gt())})).pipe(qr())}function NM(e,t,n,r,o){let i=t.canLoad;if(i===void 0||i.length===0)return R(!0);return R(i.map(a=>{let c=Gr(a,e),u=Yn(gM(c)?c.canLoad(t,n):oe(e,()=>c(t,n)));return o?u.pipe(jv(o)):u})).pipe(qr(),Uv(r))}function Uv(e){return ki(Le(t=>{if(typeof t!=`boolean`)throw yi(e,t)}),$(t=>t===!0))}function RM(e,t,n,r,o,i){let s=t.canMatch;if(!s||s.length===0)return R(!0);return R(s.map(c=>{let l=Gr(c,e);return Yn(EM(l)?l.canMatch(t,n,o):oe(e,()=>l(t,n,o))).pipe(jv(i))})).pipe(qr(),Uv(r))}var ut=class e extends Error{name=`NoMatch`;segmentGroup;constructor(t){super(),this.segmentGroup=t||null,Object.setPrototypeOf(this,e.prototype)}};var Ci=class e extends Error{urlTree;name=`AbsoluteRedirect`;constructor(t){super(),this.urlTree=t,Object.setPrototypeOf(this,e.prototype)}};function xM(e){throw new y(4e3,!1)}function AM(e){throw kv(!1,pe.GuardRejected)}var sf=class{urlSerializer;urlTree;constructor(t,n){this.urlSerializer=t,this.urlTree=n}async lineralizeSegments(t,n){let r=[],o=n.root;for(;;){if(r=r.concat(o.segments),o.numberOfChildren===0)return r;if(o.numberOfChildren>1||!o.children[M])throw xM(`${t.redirectTo}`);o=o.children[M]}}async applyRedirectCommands(t,n,r,o,i){let s=await OM(n,o,i);if(s instanceof Se)throw new Ci(s);let a=this.applyRedirectCreateUrlTree(s,this.urlSerializer.parse(s),t,r);if(s[0]===`/`)throw new Ci(a);return a}applyRedirectCreateUrlTree(t,n,r,o){return new Se(this.createSegmentGroup(t,n.root,r,o),this.createQueryParams(n.queryParams,this.urlTree.queryParams),n.fragment)}createQueryParams(t,n){let r={};return Object.entries(t).forEach(([o,i])=>{if(typeof i==`string`&&i[0]===`:`){let a=i.substring(1);r[o]=n[a]}else r[o]=i}),r}createSegmentGroup(t,n,r,o){let i=this.createSegments(t,n.segments,r,o),s=Object.create(null);return Object.entries(n.children).forEach(([a,c])=>{s[a]=this.createSegmentGroup(t,c,r,o)}),new j(i,s)}createSegments(t,n,r,o){return n.map(i=>i.path[0]===`:`?this.findPosParam(t,i,o):this.findOrReturn(i,r))}findPosParam(t,n,r){let o=r[n.path.substring(1)];if(!o)throw new y(4001,!1);return o}findOrReturn(t,n){let r=0;for(let o of n){if(o.path===t.path)return n.splice(r),o;r++}return t}};function OM(e,t,n){if(typeof e==`string`)return Promise.resolve(e);let r=e;return Za(Yn(oe(n,()=>r(t))))}function kM(e,t){return e.providers&&!e._injector&&(e._injector=Jo(e.providers,t,`Route: ${e.path}`)),e._injector??t}function Je(e){return e.outlet||M}function PM(e,t){let n=e.filter(r=>Je(r)===t);return n.push(...e.filter(r=>Je(r)!==t)),n}var af={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function Hv(e){return{routeConfig:e.routeConfig,url:e.url,params:e.params,queryParams:e.queryParams,fragment:e.fragment,data:e.data,outlet:e.outlet,title:e.title,paramMap:e.paramMap,queryParamMap:e.queryParamMap}}function LM(e,t,n,r,o,i,s){let a=Vv(e,t,n);if(!a.matched)return R(a);let c=Hv(i(a));return r=kM(t,r),RM(r,t,n,o,c,s).pipe($(l=>l===!0?a:k$1({},af)))}function Vv(e,t,n){if(t.path===``)return t.pathMatch===`full`&&(e.hasChildren()||n.length>0)?k$1({},af):{matched:!0,consumedSegments:[],remainingSegments:n,parameters:{},positionalParamSegments:{}};let o=(t.matcher||dv)(n,e,t);if(!o)return k$1({},af);let i={};Object.entries(o.posParams??{}).forEach(([a,c])=>{i[a]=c.path});let s=o.consumed.length>0?k$1(k$1({},i),o.consumed[o.consumed.length-1].parameters):i;return{matched:!0,consumedSegments:o.consumed,remainingSegments:n.slice(o.consumed.length),parameters:s,positionalParamSegments:o.posParams??{}}}function lv(e,t,n,r,o){return n.length>0&&UM(e,n,r,o)?{segmentGroup:new j(t,jM(r,new j(n,e.children))),slicedSegments:[]}:n.length===0&&HM(e,n,r)?{segmentGroup:new j(e.segments,FM(e,n,r,e.children)),slicedSegments:n}:{segmentGroup:new j(e.segments,e.children),slicedSegments:n}}function FM(e,t,n,r){let o={};for(let i of n)if(pc(e,t,i)&&!r[Je(i)]){let s=new j([],{});o[Je(i)]=s}return k$1(k$1({},r),o)}function jM(e,t){let n={};n[M]=t;for(let r of e)if(r.path===``&&Je(r)!==M){let o=new j([],{});n[Je(r)]=o}return n}function UM(e,t,n,r){return n.some(o=>!pc(e,t,o)||!(Je(o)!==M)?!1:!(r!==void 0&&Je(o)===r))}function HM(e,t,n){return n.some(r=>pc(e,t,r))}function pc(e,t,n){return(e.hasChildren()||t.length>0)&&n.pathMatch===`full`?!1:n.path===``}function VM(e,t,n){return t.length===0&&!e.hasChildren()}var cf=class{};async function $M(e,t,n,r,o,i,s,a){return new lf(e,t,n,r,o,s,i,a).recognize()}var BM=31;var lf=class{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;abortSignal;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;queryParams;constructor(t,n,r,o,i,s,a,c){this.injector=t,this.configLoader=n,this.rootComponentType=r,this.config=o,this.urlTree=i,this.paramsInheritanceStrategy=s,this.urlSerializer=a,this.abortSignal=c,this.applyRedirects=new sf(this.urlSerializer,this.urlTree),this.queryParams=Object.freeze(k$1({},this.urlTree.queryParams))}noMatchError(t){return new y(4002,`'${t.segmentGroup}'`)}async recognize(){let t=lv(this.urlTree.root,[],[],this.config).segmentGroup,{children:n,rootSnapshot:r}=await this.match(t),i=new wi(``,new be(r,n)),s=Dv(r,[],this.urlTree.queryParams,this.urlTree.fragment);return s.queryParams=this.urlTree.queryParams,i.url=this.urlSerializer.serialize(s),{state:i,tree:s}}async match(t){let n=new Vr([],Object.freeze({}),this.queryParams,this.urlTree.fragment,Object.freeze({}),M,this.rootComponentType,null,{},this.injector);try{return{children:await this.processSegmentGroup(this.injector,this.config,t,M,n),rootSnapshot:n}}catch(r){if(r instanceof Ci)return this.absoluteRedirectCount++,this.absoluteRedirectCount>BM&&(this.allowRedirects=!1),this.urlTree=r.urlTree,this.queryParams=Object.freeze(k$1({},this.urlTree.queryParams)),this.match(r.urlTree.root);throw r instanceof ut?this.noMatchError(r):r}}async processSegmentGroup(t,n,r,o,i){if(r.segments.length===0&&r.hasChildren())return this.processChildren(t,n,r,i);let s=await this.processSegment(t,n,r,r.segments,o,!0,i);return s instanceof be?[s]:[]}async processChildren(t,n,r,o){let i=[];for(let c of Object.keys(r.children))c===`primary`?i.unshift(c):i.push(c);let s=[];for(let c of i){let l=r.children[c],u=PM(n,c),d=await this.processSegment(t,u,l,l.segments,c,!0,o);d instanceof be&&s.push(d)}let a=$v(s);return zM(a),a}async processSegment(t,n,r,o,i,s,a){for(let c of n)try{return await this.processSegmentAgainstRoute(c._injector??t,n,c,r,o,i,s,a)}catch(l){if(l instanceof ut||Lv(l))continue;throw l}if(VM(r,o))return new cf;throw new ut(r)}async processSegmentAgainstRoute(t,n,r,o,i,s,a,c){if(Je(r)!==s&&(s===M||!pc(o,i,r)||!r.children?.length&&!r.loadChildren||i.length===0&&!o.hasChildren()))throw new ut(o);if(r.redirectTo===void 0)return this.matchSegmentAgainstRoute(t,o,r,i,s,c);if(this.allowRedirects&&a)return this.expandSegmentAgainstRouteUsingRedirect(t,o,n,r,i,s,c);throw new ut(o)}async expandSegmentAgainstRouteUsingRedirect(t,n,r,o,i,s,a){let{matched:c,parameters:l,consumedSegments:u,positionalParamSegments:d,remainingSegments:h}=Vv(n,o,i);if(!c)throw new ut(n);let f=this.createSnapshot(t,o,i,l,a);if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let g=await this.applyRedirects.applyRedirectCommands(u,o.redirectTo,d,Hv(f),t),w=await this.applyRedirects.lineralizeSegments(o,g);return this.processSegment(t,r,n,w.concat(h),s,!1,a)}createSnapshot(t,n,r,o,i){let s=new Vr(r,o,this.queryParams,this.urlTree.fragment,GM(n),Je(n),n.component??n._loadedComponent??null,n,QM(n),t),a=hf(s,i,this.paramsInheritanceStrategy);return s.params=a.params,s.data=a.data,s}async matchSegmentAgainstRoute(t,n,r,o,i,s){if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let a=ge=>this.createSnapshot(t,r,ge.consumedSegments,ge.parameters,s),c=await Za(LM(n,r,o,t,this.urlSerializer,a,this.abortSignal));if(r.path===`**`&&(n.children={}),!c?.matched)throw new ut(n);t=r._injector??t;let{routes:l}=await this.getChildConfig(t,r,o),u=r._loadedInjector??t,{parameters:d,consumedSegments:h,remainingSegments:f}=c,g=this.createSnapshot(t,r,h,d,s),{segmentGroup:w,slicedSegments:E}=lv(n,h,f,l,i),_=Je(r)===i;if(_&&E.length===0&&w.hasChildren())return new be(g,await this.processChildren(u,l,w,g));if(_&&l.length===0&&E.length===0)return new be(g,[]);let O=await this.processSegment(u,l,w,E,_?M:i,!0,g);if(!_&&!(O instanceof be))throw new ut(n);return new be(g,O instanceof be?[O]:[])}async getChildConfig(t,n,r){if(n.children)return{routes:n.children,injector:t};if(n.loadChildren){if(n._loadedRoutes!==void 0){let i=n._loadedNgModuleFactory;return i&&!n._loadedInjector&&(n._loadedInjector=i.create(t).injector),{routes:n._loadedRoutes,injector:n._loadedInjector}}if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);if(await Za(NM(t,n,r,this.urlSerializer,this.abortSignal))){let i=await this.configLoader.loadChildren(t,n);return n._loadedRoutes=i.routes,n._loadedInjector=i.injector,n._loadedNgModuleFactory=i.factory,i}throw AM(n)}return{routes:[],injector:t}}};function zM(e){e.sort((t,n)=>t.value.outlet===M?-1:n.value.outlet===M?1:t.value.outlet.localeCompare(n.value.outlet))}function WM(e){let t=e.value.routeConfig;return t&&t.path===``}function $v(e){let t=[],n=new Set;for(let o of e){if(!WM(o)){t.push(o);continue}let i=t.find(s=>o.value.routeConfig===s.value.routeConfig);i!==void 0?(i.children.push(...o.children),n.add(i)):t.push(o)}for(let o of n){let i=$v(o.children);t.push(new be(o.value,i))}let r=t.filter(o=>!n.has(o));return qM(r),r}function qM(e){let t=Object.create(null);e.forEach(n=>{let r=t[n.value.outlet];if(r){r.url.map(s=>s.toString()).join(`/`);n.value.url.map(s=>s.toString()).join(`/`);throw new y(4006,!1)}t[n.value.outlet]=n.value})}function GM(e){return e.data||{}}function QM(e){return e.resolve||{}}function ZM(e,t,n,r,o,i,s){return me(async a=>{let{state:c,tree:l$1}=await $M(e,t,n,r,a.extractedUrl,o,i,s);return l(k$1({},a),{targetSnapshot:c,urlAfterRedirects:l$1})})}function YM(e){return me(t=>{let{targetSnapshot:n,guards:{canActivateChecks:r}}=t;if(!r.length)return R(t);let o=new Set(r.map(a=>a.route)),i=new Set;for(let a of o)if(!i.has(a))for(let c of Bv(a))i.add(c);let s=0;return te(i).pipe(pn(a=>o.has(a)?KM(a,n,e):(a.data=hf(a,a.parent,e).resolve,R(void 0))),Le(()=>s++),es(1),me(a=>s===i.size?R(t):le))})}function Bv(e){return[e,...e.children.map(n=>Bv(n)).flat()]}function KM(e,t,n){let r=e.routeConfig,o=e._resolve;return r?.title!==void 0&&!Nv(r)&&(o[Ti]=r.title),eo(()=>(e.data=hf(e,e.parent,n).resolve,XM(o,e,t).pipe($(i=>(e._resolvedData=i,e.data=k$1(k$1({},e.data),i),null)))))}function XM(e,t,n){let r=Yd(e);if(r.length===0)return R({});let o={};return te(r).pipe(me(i=>JM(e[i],t,n).pipe(gt(),Le(s=>{if(s instanceof Zn)throw yi(new an,s);o[i]=s}))),es(1),$(()=>o),hn(i=>Lv(i)?le:Rc(i)))}function JM(e,t,n){let r=t._environmentInjector,o=Gr(e,r);return Yn(o.resolve?o.resolve(t,n):oe(r,()=>o(t,n)))}var vf=new v(``);function uf(e){return Te(t=>{let n=e(t);return n?te(n).pipe($(()=>t)):R(t)})}var Ef=(()=>{class e{buildTitle(n){let r,o=n.root;for(;o!==void 0;)r=this.getResolvedTitleForRoute(o)??r,o=o.children.find(i=>i.outlet===M);return r}getResolvedTitleForRoute(n){return n.data[Ti]}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:()=>p(zv)})}return e})();var zv=(()=>{class e extends Ef{title;constructor(n){super(),this.title=n}updateTitle(n){let r=this.buildTitle(n);r!==void 0&&this.title.setTitle(r)}static ɵfac=function(r){return new(r||e)(S(rv))};static ɵprov=T({token:e,factory:e.ɵfac,providedIn:`root`})}return e})();var Qr=new v(``,{factory:()=>({})});var Ni=new v(``);var Wv=(()=>{class e{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=p(bd);async loadComponent(n,r){if(this.componentLoaders.get(r))return this.componentLoaders.get(r);if(r._loadedComponent)return Promise.resolve(r._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(r);let o=(async()=>{try{let s=await Gv(Md(await hv(oe(n,()=>r.loadComponent()))));return this.onLoadEndListener&&this.onLoadEndListener(r),r._loadedComponent=s,s}finally{this.componentLoaders.delete(r)}})();return this.componentLoaders.set(r,o),o}loadChildren(n,r){if(this.childrenLoaders.get(r))return this.childrenLoaders.get(r);if(r._loadedRoutes)return Promise.resolve({routes:r._loadedRoutes,injector:r._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(r);let o=(async()=>{try{let i=await qv(r,this.compiler,n,this.onLoadEndListener);return r._loadedRoutes=i.routes,r._loadedInjector=i.injector,r._loadedNgModuleFactory=i.factory,i}finally{this.childrenLoaders.delete(r)}})();return this.childrenLoaders.set(r,o),o}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();async function qv(e,t,n,r){let i=await Gv(Md(await hv(oe(n,()=>e.loadChildren())))),s;i instanceof Ia||Array.isArray(i)?s=i:s=await t.compileModuleAsync(i),r&&r(e);let a,c,u;return Array.isArray(s)?c=s:(a=s.create(n).injector,u=s,c=a.get(Ni,[],{optional:!0,self:!0}).flat()),{routes:c.map(yf),injector:a,factory:u}}async function Gv(e){return e}var gc=(()=>{class e{static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:()=>p(e_)})}return e})();var e_=(()=>{class e{shouldProcessUrl(n){return!0}extract(n){return n}merge(n,r){return n}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();var Qv=new v(``);var t_=()=>{};var Zv=new v(``);var If=(()=>{class e{currentNavigation=k(null,{equal:()=>!1});currentTransition=null;lastSuccessfulNavigation=k(null);events=new ee;transitionAbortWithErrorSubject=new ee;configLoader=p(Wv);environmentInjector=p(K);destroyRef=p(ve);urlSerializer=p(Kn);rootContexts=p(Gn);location=p($n);inputBindingEnabled=p(Mi,{optional:!0})!==null;titleStrategy=p(Ef);options=p(Qr,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||oM;urlHandlingStrategy=p(gc);createViewTransition=p(Qv,{optional:!0});navigationErrorHandler=p(Zv,{optional:!0});routerResourcesFeature=p(vf,{optional:!0});navigationId=0;get hasRequestedNavigation(){return this.navigationId!==0}transitions;afterPreactivation=()=>R(void 0);rootComponentType=null;destroyed=!1;constructor(){let n=o=>this.events.next(new sc(o)),r=o=>this.events.next(new ac(o));this.configLoader.onLoadEndListener=r,this.configLoader.onLoadStartListener=n,this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(n){let r=++this.navigationId;F(()=>{this.transitions?.next(l(k$1({},n),{extractedUrl:this.urlHandlingStrategy.extract(n.rawUrl),targetSnapshot:null,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null,id:r,routesRecognizeHandler:{},beforeActivateHandler:{}}))})}setupNavigations(n){return this.transitions=new ce(null),this.transitions.pipe(Pe(r=>r!==null),Te(r=>{let o=!0,i=!1,s=new AbortController,a=()=>!i&&this.currentTransition?.id===r.id;return R(r).pipe(Te(c=>{if(this.navigationId>r.id)return this.cancelNavigationTransition(r,``,pe.SupersededByNewNavigation),le;this.currentTransition=r;let l$2=this.lastSuccessfulNavigation();this.currentNavigation.set({id:c.id,initialUrl:c.rawUrl,extractedUrl:c.extractedUrl,targetBrowserUrl:typeof c.extras.browserUrl==`string`?this.urlSerializer.parse(c.extras.browserUrl):c.extras.browserUrl,trigger:c.source,extras:c.extras,previousNavigation:l$2?l(k$1({},l$2),{previousNavigation:null}):null,abort:()=>s.abort(),routesRecognizeHandler:c.routesRecognizeHandler,beforeActivateHandler:c.beforeActivateHandler});let u=!n.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),d=c.extras.onSameUrlNavigation??n.onSameUrlNavigation;if(!u&&d!==`reload`)return this.events.next(new ft(c.id,this.urlSerializer.serialize(c.rawUrl),``,$r.IgnoredSameUrlNavigation)),c.resolve(!1),le;if(this.urlHandlingStrategy.shouldProcessUrl(c.rawUrl))return R(c).pipe(Te(h=>(this.events.next(new ln(h.id,this.urlSerializer.serialize(h.extractedUrl),h.source,h.restoredState)),h.id!==this.navigationId?le:Promise.resolve(h))),ZM(this.environmentInjector,this.configLoader,this.rootComponentType,n.config,this.urlSerializer,this.paramsInheritanceStrategy,s.signal),Le(h=>{r.targetSnapshot=h.targetSnapshot,r.urlAfterRedirects=h.urlAfterRedirects,this.currentNavigation.update(f=>(f.finalUrl=h.urlAfterRedirects,f)),this.events.next(new bi)}),Te(h=>te(r.routesRecognizeHandler.deferredHandle??R(void 0)).pipe($(()=>h))),Le(()=>{let h=new Di(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);this.events.next(h)}));if(u&&this.urlHandlingStrategy.shouldProcessUrl(c.currentRawUrl)){let{id:h,extractedUrl:f,source:g,restoredState:w,extras:E}=c,_=new ln(h,this.urlSerializer.serialize(f),g,w);this.events.next(_);let O=Mv(this.rootComponentType,this.environmentInjector).snapshot;return this.currentTransition=r=l(k$1({},c),{targetSnapshot:O,urlAfterRedirects:f,extras:l(k$1({},E),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.update(ge=>(ge.finalUrl=f,ge)),R(r)}else return this.events.next(new ft(c.id,this.urlSerializer.serialize(c.extractedUrl),``,$r.IgnoredByUrlHandlingStrategy)),c.resolve(!1),le}),$(c=>{let l$3=new nc(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);return this.events.next(l$3),this.currentTransition=r=l(k$1({},c),{guards:uM(c.targetSnapshot,c.currentSnapshot,this.rootContexts)}),r}),wM(c=>this.events.next(c)),Te(c=>{if(r.guardsResult=c.guardsResult,c.guardsResult&&typeof c.guardsResult!=`boolean`)throw yi(this.urlSerializer,c.guardsResult);let l=new rc(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot,!!c.guardsResult);if(this.events.next(l),!a())return le;if(!c.guardsResult)return this.cancelNavigationTransition(c,``,pe.GuardRejected),le;if(c.guards.canActivateChecks.length===0)return R(c);let u=new oc(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);if(this.events.next(u),!a())return le;let d=!1;return R(c).pipe(YM(this.paramsInheritanceStrategy),Le({next:()=>{d=!0;let h=new ic(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);this.events.next(h)},complete:()=>{d||this.cancelNavigationTransition(c,``,pe.NoDataFromResolver)}}))}),uf(c=>{let l=d=>{let h=[];if(d.routeConfig?._loadedComponent)d.component=d.routeConfig?._loadedComponent;else if(d.routeConfig?.loadComponent){let f=d._environmentInjector;h.push(this.configLoader.loadComponent(f,d.routeConfig).then(g=>{d.component=g}))}for(let f of d.children)h.push(...l(f));return h},u=l(c.targetSnapshot.root);return u.length===0?R(c):te(Promise.all(u).then(()=>c))}),Te(c=>{let{newlyCreatedRoutes:l$4,state:u}=sM(n.routeReuseStrategy,c.targetSnapshot,c.currentRouterState);return this.currentTransition=r=c=l(k$1({},c),{targetRouterState:u,newlyCreatedRoutes:l$4}),this.currentNavigation.update(d=>(d.targetRouterState=u,d)),R(c)}),this.routerResourcesFeature?.setupAndRunResources(s.signal)??(c=>c),uf(()=>this.afterPreactivation()),Te(()=>{let{currentSnapshot:c,targetSnapshot:l}=r,u=this.createViewTransition?.(this.environmentInjector,c.root,l.root,r.hasUAVisualTransition);return u?te(u).pipe($(()=>r)):R(r)}),pt(1),Te(c=>{o=!1,this.events.next(new zr);let l=r.beforeActivateHandler.deferredHandle;return l?te(l.then(()=>c)):R(c)}),Le(c=>{new of(n.routeReuseStrategy,r.targetRouterState,r.currentRouterState,l=>this.events.next(l),this.inputBindingEnabled).activate(this.rootContexts),c.newlyCreatedRoutes?.clear(),a()&&(Yv(c.targetRouterState),i=!0,this.currentNavigation.update(l=>(l.abort=t_,l)),this.lastSuccessfulNavigation.set(F(this.currentNavigation)),this.events.next(new ze(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects))),this.titleStrategy?.updateTitle(c.targetRouterState.snapshot),c.resolve(!0))}),no(Fv(s.signal).pipe(Pe(()=>!i&&o),Le(()=>{this.cancelNavigationTransition(r,s.signal.reason+``,pe.Aborted)}))),Le({complete:()=>{i=!0}}),no(this.transitionAbortWithErrorSubject.pipe(Le(c=>{throw c}))),to(()=>{s.abort(),i||this.cancelNavigationTransition(r,``,pe.SupersededByNewNavigation),this.currentTransition?.id===r.id&&(this.currentNavigation.set(null),this.currentTransition=null)}),hn(c=>{if(i=!0,uv(r),this.destroyed)return r.resolve(!1),le;if(c instanceof Zn&&(c=yi(this.urlSerializer,c)),Pv(c))this.events.next(new Be(r.id,this.urlSerializer.serialize(r.extractedUrl),c.message,c.cancellationCode)),lM(c)?this.events.next(new Wr(c.url,c.navigationBehaviorOptions)):r.resolve(!1);else{let l=new Qn(r.id,this.urlSerializer.serialize(r.extractedUrl),c,r.targetSnapshot??void 0);try{let u=oe(this.environmentInjector,()=>this.navigationErrorHandler?.(l));if(u instanceof Zn){let{message:d,cancellationCode:h}=yi(this.urlSerializer,u);this.events.next(new Be(r.id,this.urlSerializer.serialize(r.extractedUrl),d,h)),this.events.next(new Wr(u.redirectTo,u.navigationBehaviorOptions))}else throw this.events.next(l),c}catch(u){this.options.resolveNavigationPromiseOnError?r.resolve(!1):r.reject(u)}}return le}))}))}cancelNavigationTransition(n,r,o){uv(n);let i=new Be(n.id,this.urlSerializer.serialize(n.extractedUrl),r,o);this.events.next(i),n.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){let n=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),r=F(this.currentNavigation),o=r?.targetBrowserUrl??r?.extractedUrl;return n.toString()!==o?.toString()&&!r?.extras.skipLocationChange}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();function n_(e){return e!==jr}function uv(e){for(let t of e.newlyCreatedRoutes??[])t._localInjector?.destroy(),t._localInjector=void 0;Yv(e.targetRouterState)}function Yv(e){if(!e)return;let t=n=>{n.value.pending?.set(!1),n.children.forEach(t)};t(e._root)}var Kv=new v(``);var Xv=(()=>{class e{static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:()=>p(r_)})}return e})();var hc=class{shouldDetach(t){return!1}store(t,n){}shouldAttach(t){return!1}retrieve(t){return null}shouldReuseRoute(t,n){return t.routeConfig===n.routeConfig}shouldDestroyInjector(t){return!0}};var r_=(()=>{class e extends hc{static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();var mc=(()=>{class e{urlSerializer=p(Kn);options=p(Qr,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||`replace`;location=p($n);urlHandlingStrategy=p(gc);urlUpdateStrategy=this.options.urlUpdateStrategy||`deferred`;currentUrlTree=new Se;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}createBrowserPath({finalUrl:n,initialUrl:r,targetBrowserUrl:o}){let i=n!==void 0?this.urlHandlingStrategy.merge(n,r):r,s=o??i;return s instanceof Se?this.urlSerializer.serialize(s):s}routerUrlState(n){return n?.targetBrowserUrl===void 0||n?.finalUrl===void 0?{}:{ɵrouterUrl:this.urlSerializer.serialize(n.finalUrl)}}commitTransition({targetRouterState:n,finalUrl:r,initialUrl:o}){r&&n?(this.currentUrlTree=r,this.rawUrlTree=this.urlHandlingStrategy.merge(r,o),this.routerState=n):this.rawUrlTree=o}routerState=Mv(null,p(K));getRouterState(){return this.routerState}_stateMemento=this.createStateMemento();get stateMemento(){return this._stateMemento}updateStateMemento(){this._stateMemento=this.createStateMemento()}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}restoredState(){return this.location.getState()}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:()=>p(o_)})}return e})();var o_=(()=>{class e extends mc{currentPageId=0;lastSuccessfulId=-1;get browserPageId(){return this.canceledNavigationResolution!==`computed`?this.currentPageId:this.restoredState()?.ɵrouterPageId??this.currentPageId}registerNonRouterCurrentEntryChangeListener(n){return this.location.subscribe(r=>{r.type===`popstate`&&setTimeout(()=>{n(r.url,r.state,`popstate`,{replaceUrl:!0},r.hasUAVisualTransition)})})}handleRouterEvent(n,r){n instanceof ln?this.updateStateMemento():n instanceof ft?this.commitTransition(r):n instanceof Di?this.urlUpdateStrategy===`eager`&&(r.extras.skipLocationChange||this.setBrowserUrl(this.createBrowserPath(r),r)):n instanceof zr?(this.commitTransition(r),this.urlUpdateStrategy===`deferred`&&!r.extras.skipLocationChange&&this.setBrowserUrl(this.createBrowserPath(r),r)):n instanceof Be?Av(n)?n.code===pe.Redirect&&this.routerState===r.targetRouterState&&this.resetInternalState(r):this.restoreHistory(r):n instanceof Qn?this.restoreHistory(r,!0):n instanceof ze&&(this.lastSuccessfulId=n.id,this.currentPageId=this.browserPageId)}setBrowserUrl(n,r){let{extras:o,id:i}=r,{replaceUrl:s,state:a}=o;if(this.location.isCurrentPathEqualTo(n)||s){let c=this.browserPageId,l=k$1(k$1({},a),this.generateNgRouterState(i,c,r));this.location.replaceState(n,``,l)}else{let c=k$1(k$1({},a),this.generateNgRouterState(i,this.browserPageId+1,r));this.location.go(n,``,c)}}restoreHistory(n,r=!1){if(this.canceledNavigationResolution===`computed`){let o=this.browserPageId,i=this.currentPageId-o;i!==0?this.location.historyGo(i):this.getCurrentUrlTree()===n.finalUrl&&i===0&&(this.resetInternalState(n),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution===`replace`&&(r&&this.resetInternalState(n),this.resetUrlToCurrentUrlTree())}resetInternalState({finalUrl:n}){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,n??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()),``,this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(n,r,o){return this.canceledNavigationResolution===`computed`?k$1({navigationId:n,ɵrouterPageId:r},this.routerUrlState(o)):k$1({navigationId:n},this.routerUrlState(o))}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();function wf(e,t){e.events.pipe(Pe(n=>n instanceof ze||n instanceof Be||n instanceof Qn||n instanceof ft),$(n=>n instanceof ze||n instanceof ft?0:(n instanceof Be?n.code===pe.Redirect||n.code===pe.SupersededByNewNavigation:!1)?2:1),Pe(n=>n!==2),pt(1)).subscribe(()=>{t()})}var Xn=(()=>{class e{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=p(Da);stateManager=p(mc);options=p(Qr,{optional:!0})||{};pendingTasks=p(bt);urlUpdateStrategy=this.options.urlUpdateStrategy||`deferred`;navigationTransitions=p(If);urlSerializer=p(Kn);location=p($n);urlHandlingStrategy=p(gc);injector=p(K);_events=new ee;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=p(Xv);injectorCleanup=p(Kv,{optional:!0});onSameUrlNavigation=this.options.onSameUrlNavigation||`ignore`;config=p(Ni,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!p(Mi,{optional:!0});currentNavigation=this.navigationTransitions.currentNavigation.asReadonly();constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this).subscribe({error:n=>{}}),this.subscribeToNavigationEvents()}eventsSubscription=new ae;subscribeToNavigationEvents(){let n=this.navigationTransitions.events.subscribe(r=>{try{let o=this.navigationTransitions.currentTransition,i=F(this.navigationTransitions.currentNavigation);if(o!==null&&i!==null){if(this.stateManager.handleRouterEvent(r,i),r instanceof Be&&r.code!==pe.Redirect&&r.code!==pe.SupersededByNewNavigation)this.navigated=!0;else if(r instanceof ze)this.navigated=!0,this.injectorCleanup?.(this.routeReuseStrategy,this.routerState,this.config);else if(r instanceof Wr){let s=r.navigationBehaviorOptions,a=this.urlHandlingStrategy.merge(r.url,o.currentRawUrl),c=k$1({scroll:o.extras.scroll,browserUrl:o.extras.browserUrl,info:o.extras.info,skipLocationChange:o.extras.skipLocationChange,replaceUrl:o.extras.replaceUrl||this.urlUpdateStrategy===`eager`||n_(o.source)},s);this.scheduleNavigation(a,jr,null,c,o.hasUAVisualTransition,{resolve:o.resolve,reject:o.reject,promise:o.promise})}}iM(r)&&this._events.next(r)}catch(o){this.navigationTransitions.transitionAbortWithErrorSubject.next(o)}});this.eventsSubscription.add(n)}resetRootComponentType(n){this.routerState.root.component=n,this.navigationTransitions.rootComponentType=n}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),jr,this.stateManager.restoredState(),{replaceUrl:!0})}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((n,r,o,i,s)=>{this.navigateToSyncWithBrowser(n,o,r,i,s)})}navigateToSyncWithBrowser(n,r,o,i,s){let a=o?.navigationId?o:null,c=o?.ɵrouterUrl??n;if(o?.ɵrouterUrl&&(i=l(k$1({},i),{browserUrl:n})),o){let u=k$1({},o);delete u.navigationId,delete u.ɵrouterPageId,delete u.ɵrouterUrl,Object.keys(u).length!==0&&(i.state=u)}let l$5=this.parseUrl(c);this.scheduleNavigation(l$5,r,a,i,s).catch(u=>{this.disposed||this.injector.get(Ve)(u)})}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return F(this.navigationTransitions.currentNavigation)}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(n){this.config=n.map(yf),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription?.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0,this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(n,r={}){let{relativeTo:o,queryParams:i,fragment:s,queryParamsHandling:a,preserveFragment:c}=r,l=c?this.currentUrlTree.fragment:s,u=null;switch(a??this.options.defaultQueryParamsHandling){case`merge`:u=k$1(k$1({},this.currentUrlTree.queryParams),i);break;case`preserve`:u=this.currentUrlTree.queryParams;break;default:u=i||null}u!==null&&(u=this.removeEmptyProps(u));let d;try{d=bv(o?o.snapshot:this.routerState.snapshot.root)}catch{(typeof n[0]!=`string`||n[0][0]!==`/`)&&(n=[]),d=this.currentUrlTree.root}return Sv(d,n,u,l??null,this.urlSerializer)}navigateByUrl(n,r={skipLocationChange:!1}){let o=cn(n)?n:this.parseUrl(n),i=this.urlHandlingStrategy.merge(o,this.rawUrlTree);return this.scheduleNavigation(i,jr,null,r)}navigate(n,r={skipLocationChange:!1}){return i_(n),this.navigateByUrl(this.createUrlTree(n,r),r)}serializeUrl(n){return this.urlSerializer.serialize(n)}parseUrl(n){try{return this.urlSerializer.parse(n)}catch{return this.console.warn(Qe(4018,!1)),this.urlSerializer.parse(`/`)}}isActive(n,r){let o;if(r===!0?o=k$1({},df):r===!1?o=k$1({},Hr):o=k$1(k$1({},Hr),r),cn(n))return Ya(this.currentUrlTree,n,o);let i=this.parseUrl(n);return Ya(this.currentUrlTree,i,o)}removeEmptyProps(n){return Object.entries(n).reduce((r,[o,i])=>(i!=null&&(r[o]=i),r),{})}scheduleNavigation(n,r,o,i,s,a){if(this.disposed)return Promise.resolve(!1);let c,l,u;a?(c=a.resolve,l=a.reject,u=a.promise):u=new Promise((h,f)=>{c=h,l=f});let d=this.pendingTasks.add();return wf(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(d))}),this.navigationTransitions.handleNavigationRequest({source:r,restoredState:o,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:n,extras:i,hasUAVisualTransition:s,resolve:c,reject:l,promise:u,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),u.catch(Promise.reject.bind(Promise))}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();function i_(e){for(let t=0;t{class e{router=p(Xn);stateManager=p(mc);fragment=k(``);queryParams=k({});path=k(``);serializer=p(Kn);constructor(){this.updateState(),this.router.events?.subscribe(n=>{n instanceof ze&&this.updateState()})}updateState(){let{fragment:n,root:r,queryParams:o}=this.stateManager.getCurrentUrlTree();this.fragment.set(n),this.queryParams.set(o),this.path.set(this.serializer.serialize(new Se(r)))}static ɵfac=function(r){return new(r||e)};static ɵprov=Q({token:e,factory:e.ɵfac})}return e})();var yc=(()=>{class e{router;route;tabIndexAttribute;renderer;el;locationStrategy;hrefAttributeValue=p(new Ra(`href`),{optional:!0});reactiveHref=Cd(()=>{if(!this.isAnchorElement)return this.hrefAttributeValue;this.reactiveRouterState.path(),this._preserveFragment()&&this.reactiveRouterState.fragment();let n=r=>r===`preserve`||r===`merge`;return(n(this._queryParamsHandling())||n(this.options?.defaultQueryParamsHandling))&&this.reactiveRouterState.queryParams(),this.computeHref(this.createUrlTree())});get href(){return F(this.reactiveHref)}set href(n){this.reactiveHref.set(n)}set target(n){this._target.set(n)}get target(){return F(this._target)}_target=k(void 0);set queryParams(n){this._queryParams.set(n)}get queryParams(){return F(this._queryParams)}_queryParams=k(void 0,{equal:()=>!1});set fragment(n){this._fragment.set(n)}get fragment(){return F(this._fragment)}_fragment=k(void 0);set queryParamsHandling(n){this._queryParamsHandling.set(n)}get queryParamsHandling(){return F(this._queryParamsHandling)}_queryParamsHandling=k(void 0);set state(n){this._state.set(n)}get state(){return F(this._state)}_state=k(void 0,{equal:()=>!1});set info(n){this._info.set(n)}get info(){return F(this._info)}_info=k(void 0,{equal:()=>!1});set relativeTo(n){this._relativeTo.set(n)}get relativeTo(){return F(this._relativeTo)}_relativeTo=k(void 0);set preserveFragment(n){this._preserveFragment.set(n)}get preserveFragment(){return F(this._preserveFragment)}_preserveFragment=k(!1);set skipLocationChange(n){this._skipLocationChange.set(n)}get skipLocationChange(){return F(this._skipLocationChange)}_skipLocationChange=k(!1);set replaceUrl(n){this._replaceUrl.set(n)}get replaceUrl(){return F(this._replaceUrl)}_replaceUrl=k(!1);browserUrl=rn(void 0);isAnchorElement;onChanges=new ee;applicationErrorHandler=p(Ve);options=p(Qr,{optional:!0});reactiveRouterState=p(s_);constructor(n,r,o,i,s,a){this.router=n,this.route=r,this.tabIndexAttribute=o,this.renderer=i,this.el=s,this.locationStrategy=a;let c=s.nativeElement.tagName?.toLowerCase();this.isAnchorElement=c===`a`||c===`area`||!!(typeof customElements==`object`&&customElements.get(c)?.observedAttributes?.includes?.(`href`))}setTabIndexIfNotOnNativeEl(n){this.tabIndexAttribute!=null||this.isAnchorElement||this.applyAttributeValue(`tabindex`,n)}ngOnChanges(n){this.onChanges.next(this)}routerLinkInput=k(null);set routerLink(n){n==null?(this.routerLinkInput.set(null),this.setTabIndexIfNotOnNativeEl(null)):(cn(n)?this.routerLinkInput.set(n):this.routerLinkInput.set(Array.isArray(n)?n:[n]),this.setTabIndexIfNotOnNativeEl(`0`))}onClick(n,r,o,i,s){let a=this.urlTree;if(a===null||this.isAnchorElement&&(n!==0||r||o||i||s||typeof this.target==`string`&&this.target!=`_self`))return!0;let c=this.browserUrl(),l=k$1({skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info},c!==void 0&&{browserUrl:c});return this.router.navigateByUrl(a,l)?.catch(u=>{this.applicationErrorHandler(u)}),!this.isAnchorElement}ngOnDestroy(){}applyAttributeValue(n,r){let o=this.renderer,i=this.el.nativeElement;r!==null?o.setAttribute(i,n,r):o.removeAttribute(i,n)}createUrlTree(){let n=this.routerLinkInput();return n===null||!this.router.createUrlTree?null:cn(n)?n:this.router.createUrlTree(n,{relativeTo:this._relativeTo()!==void 0?this._relativeTo():this.route,queryParams:this._queryParams(),fragment:this._fragment(),queryParamsHandling:this._queryParamsHandling(),preserveFragment:this._preserveFragment()})}get urlTree(){return F(()=>this.createUrlTree())}computeHref(n){return n!==null&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(n))??``:null}static ɵfac=function(r){return new(r||e)(De(Xn),De(Ot),ha(`tabindex`),De(Fn),De(Mt),De(Vn))};static ɵdir=xr({type:e,selectors:[[``,`routerLink`,``]],hostVars:2,hostBindings:function(r,o){r&1&&Ta(`click`,function(s){return o.onClick(s.button,s.ctrlKey,s.shiftKey,s.altKey,s.metaKey)}),r&2&&Ar(`href`,o.reactiveHref(),Gu)(`target`,o._target())},inputs:{target:`target`,queryParams:`queryParams`,fragment:`fragment`,queryParamsHandling:`queryParamsHandling`,state:`state`,info:`info`,relativeTo:`relativeTo`,preserveFragment:[2,`preserveFragment`,`preserveFragment`,si],skipLocationChange:[2,`skipLocationChange`,`skipLocationChange`,si],replaceUrl:[2,`replaceUrl`,`replaceUrl`,si],browserUrl:[1,`browserUrl`],routerLink:`routerLink`},features:[_r]})}return e})();var a_=(()=>{class e{router;element;renderer;cdr;links;classes=[];routerEventsSubscription;linkInputChangesSubscription;_isActive=!1;get isActive(){return this._isActive}routerLinkActiveOptions={exact:!1};ariaCurrentWhenActive;isActiveChange=new ye;link=p(yc,{optional:!0});constructor(n,r,o,i){this.router=n,this.element=r,this.renderer=o,this.cdr=i,this.routerEventsSubscription=n.events.subscribe(s=>{s instanceof ze&&this.update()})}ngAfterContentInit(){R(this.links.changes,R(null)).pipe(or()).subscribe(n=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();let n=[...this.links.toArray(),this.link].filter(r=>!!r).map(r=>r.onChanges);this.linkInputChangesSubscription=te(n).pipe(or()).subscribe(r=>{this._isActive!==this.isLinkActive(this.router)(r)&&this.update()})}set routerLinkActive(n){if(n==null){this.classes=[];return}let r=Array.isArray(n)?n:n.split(` `);this.classes=r.filter(o=>!!o)}ngOnChanges(n){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||this.routerLinkActiveOptions===null&&!this._isActive||queueMicrotask(()=>{let n=this.hasActiveLinks();this.classes.forEach(r=>{n?this.renderer.addClass(this.element.nativeElement,r):this.renderer.removeClass(this.element.nativeElement,r)}),n&&this.ariaCurrentWhenActive!==void 0?this.renderer.setAttribute(this.element.nativeElement,`aria-current`,this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,`aria-current`),this._isActive!==n&&(this._isActive=n,this.cdr.markForCheck(),this.isActiveChange.emit(n))})}isLinkActive(n){let r=this.routerLinkActiveOptions;if(r===null)return()=>!1;let o;return r===void 0?o=k$1({},Hr):c_(r)?o=r:r.exact??!1?o=k$1({},df):o=k$1({},Hr),i=>{let s=i.urlTree;return s?F(ff(s,n,o)):!1}}hasActiveLinks(){let n=this.isLinkActive(this.router);return this.link&&n(this.link)||this.links.some(n)}static ɵfac=function(r){return new(r||e)(De(Xn),De(Mt),De(Fn),De(ii))};static ɵdir=xr({type:e,selectors:[[``,`routerLinkActive`,``]],contentQueries:function(r,o,i){if(r&1&&Ma(i,yc,5),r&2){let s;Id(s=wd())&&(o.links=s)}},inputs:{routerLinkActiveOptions:`routerLinkActiveOptions`,ariaCurrentWhenActive:`ariaCurrentWhenActive`,routerLinkActive:`routerLinkActive`},outputs:{isActiveChange:`isActiveChange`},exportAs:[`routerLinkActive`],features:[_r]})}return e})();function c_(e){let t=e;return!!(t.paths||t.matrixParams||t.queryParams||t.fragment)}var Jv=new v(``);var l_=(()=>{class e{options;routerEventsSubscription;scrollEventsSubscription;lastId=0;lastSource=jr;restoredId=0;store={};isHydrating=p(Hu,{optional:!0})??!1;urlSerializer=p(Kn);zone=p(de);viewportScroller=p(Oy);transitions=p(If);constructor(n){this.options=n,this.options.scrollPositionRestoration||=`disabled`,this.options.anchorScrolling||=`disabled`,this.isHydrating&&p(en).whenStable().then(()=>{this.isHydrating=!1})}init(){this.options.scrollPositionRestoration!==`disabled`&&this.viewportScroller.setHistoryScrollRestoration(`manual`),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(n=>{n instanceof ln?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=n.navigationTrigger,this.restoredId=n.restoredState?n.restoredState.navigationId:0):n instanceof ze?(this.lastId=n.id,this.scheduleScrollEvent(n,this.urlSerializer.parse(n.urlAfterRedirects).fragment)):n instanceof ft&&n.code===$r.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(n,this.urlSerializer.parse(n.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(n=>{if(!(n instanceof Br)||n.scrollBehavior===`manual`)return;let r={behavior:`instant`};n.position?this.options.scrollPositionRestoration===`top`?this.viewportScroller.scrollToPosition([0,0],r):this.options.scrollPositionRestoration===`enabled`&&this.viewportScroller.scrollToPosition(n.position,r):n.anchor&&this.options.anchorScrolling===`enabled`?this.viewportScroller.scrollToAnchor(n.anchor):this.options.scrollPositionRestoration!==`disabled`&&this.viewportScroller.scrollToPosition([0,0])})}scheduleScrollEvent(n,r){if(this.isHydrating)return;let o=F(this.transitions.currentNavigation)?.extras.scroll;this.zone.runOutsideAngular(async()=>{await new Promise(i=>{setTimeout(i),typeof requestAnimationFrame<`u`&&requestAnimationFrame(i)}),this.zone.run(()=>{this.transitions.events.next(new Br(n,this.lastSource===`popstate`?this.store[this.restoredId]:null,r,o))})})}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static ɵfac=function(r){Ko()};static ɵprov=T({token:e,factory:e.ɵfac})}return e})();function u_(e,...t){return tt([{provide:Ni,multi:!0,useValue:e},{provide:Ot,useFactory:d_},{provide:ti,multi:!0,useFactory:h_},t.map(n=>n.ɵproviders)])}function d_(){return p(Xn).routerState.root}function eE(e,t){return{ɵkind:e,ɵproviders:t}}function f_(e={}){return eE(4,[{provide:Jv,useFactory:()=>new l_(e)}])}function h_(){let e=p(_e);return t=>{let n=e.get(en);if(t!==n.components[0])return;let r=e.get(Xn),o=e.get(p_);e.get(g_)===1&&r.initialNavigation(),e.get(m_,null,{optional:!0})?.setUpPreloading(),e.get(Jv,null,{optional:!0})?.init(),r.resetRootComponentType(n.componentTypes[0]),o.closed||(o.next(),o.complete(),o.unsubscribe())}}var p_=new v(``,{factory:()=>new ee});var g_=new v(``,{factory:()=>1});var m_=new v(``);function y_(e={}){return eE(8,[{provide:Mi,useFactory:()=>new xv(e,p(vf,{optional:!0}))}])}var tE=`forge-portal/prefs/v1`;var vc=`forge-portal/Prefs/v1`;var Df={schema:vc,density:`comfortable`,motion:`system`,navCollapsed:!1,lastRoute:null,dismissedHints:[],pageFilters:{}};var v_=new Set([`comfortable`,`compact`]);var E_=new Set([`system`,`full`,`reduced`]);function oE(e){return typeof e==`string`&&e.startsWith(`/`)&&!e.startsWith(`//`)&&e.length<=300}function I_(e){if(!e||typeof e!=`object`)return null;let t=e;if(t.schema!==vc)return null;let n=t.density===void 0?`comfortable`:t.density,r=t.motion===void 0?`system`:t.motion,o=t.navCollapsed===void 0?!1:t.navCollapsed;if(!v_.has(n)||!E_.has(r)||typeof o!=`boolean`)return null;let i=oE(t.lastRoute)?t.lastRoute:null,s=Array.isArray(t.dismissedHints)?t.dismissedHints.filter(c=>typeof c==`string`):[],a={};if(t.pageFilters&&typeof t.pageFilters==`object`)for(let[c,l]of Object.entries(t.pageFilters))typeof l==`string`&&l.length<=300&&(a[c]=l);return{schema:vc,density:n,motion:r,navCollapsed:o,lastRoute:i,dismissedHints:s,pageFilters:a}}function nE(){try{return globalThis.localStorage??null}catch{return null}}var w_={dashboard:`nav.dashboard`,guide:`nav.guide`,federation:`nav.federation`,forges:`nav.forges`,agents:`nav.agents`,skills:`nav.skills`,mcp:`nav.mcp`,knowledge:`nav.knowledge`,match:`nav.match`,tasks:`nav.tasks`,install:`nav.install`,profiles:`nav.profiles`,hosts:`nav.hosts`,config:`nav.config`,graph:`nav.graph`,observe:`nav.observe`,execution:`nav.execution`,lab:`nav.lab`,versions:`nav.versions`,settings:`nav.settings`};function z$(e){return w_[e.replace(/^\//,``).split(/[/?#]/)[0]]??null}var rE=class e{density=k(Df.density);motion=k(Df.motion);navCollapsed=k(Df.navCollapsed);lastRoute=k(null);dismissedHints=k([]);pageFilters=k({});media=globalThis.matchMedia?.(`(prefers-reduced-motion: reduce)`);constructor(){let t=this.read();t&&(this.density.set(t.density),this.motion.set(t.motion),this.navCollapsed.set(t.navCollapsed),this.lastRoute.set(t.lastRoute),this.dismissedHints.set(t.dismissedHints),this.pageFilters.set(t.pageFilters)),this.media?.addEventListener(`change`,()=>this.apply()),Oo(()=>{this.persist(),this.apply()}),this.apply()}setDensity(t){this.density.set(t)}setMotion(t){this.motion.set(t)}setNavCollapsed(t){this.navCollapsed.set(t)}recordRoute(t){oE(t)&&this.lastRoute.set(t)}filterFor(t){return this.pageFilters()[t]??``}setFilter(t,n){let r=F(()=>this.pageFilters());if(n?r[t]===n:!(t in r))return;let o=k$1({},r);n?o[t]=n:delete o[t],this.pageFilters.set(o)}isHintDismissed(t){return this.dismissedHints().includes(t)}dismissHint(t){F(()=>this.isHintDismissed(t))||this.dismissedHints.set([...F(()=>this.dismissedHints()),t])}resetHints(){F(()=>this.dismissedHints()).length!==0&&this.dismissedHints.set([])}persist(){let t=nE();if(!t)return;let n={schema:vc,density:this.density(),motion:this.motion(),navCollapsed:this.navCollapsed(),lastRoute:this.lastRoute(),dismissedHints:[...this.dismissedHints()],pageFilters:k$1({},this.pageFilters())};try{t.setItem(tE,JSON.stringify(n))}catch{}}read(){let t=nE();if(!t)return null;try{let n=t.getItem(tE);return n?I_(JSON.parse(n)):null}catch{return null}}apply(){let t=globalThis.document?.documentElement;t&&(t.dataset.density=this.density(),t.dataset.motion=this.motion())}static ɵfac=function(n){return new(n||e)};static ɵprov=T({token:e,factory:e.ɵfac,providedIn:`root`})};var iE=`forge-portal.locale`;var sE={"pt-BR":()=>import(`./chunk-BKcxAbqq.js`).then(e=>e.PT_BR),en:()=>import(`./chunk-BhLaTFvG.js`).then(e=>e.EN)};var Ec=class e{dict=k(new Map);fallbackDict=k(new Map);preference=k(`automatic`);locale=k(`pt-BR`);ready=k(!1);missingKeys=k([]);constructor(){let t=this.readStoredPreference();this.applyPreference(t)}readStoredPreference(){try{let t=globalThis.localStorage?.getItem(iE);if(t===`pt-BR`||t===`en`||t===`automatic`)return t}catch{}return`automatic`}async applyPreference(t){this.preference.set(t);let n=t===`automatic`?this.detectLocale():t;this.locale.set(n);try{globalThis.document?.documentElement.setAttribute(`lang`,n),globalThis.localStorage?.setItem(iE,t)}catch{}this.fallbackDict().size===0&&this.fallbackDict.set(new Map(Object.entries(await sE[`pt-BR`]()))),this.dict.set(new Map(Object.entries(await sE[n]()))),this.ready.set(!0),this.collectMissing()}detectLocale(){return(globalThis.navigator?.language??`pt-BR`).toLowerCase().startsWith(`pt`)?`pt-BR`:`en`}collectMissing(){let t=this.dict(),n=[];for(let r of this.fallbackDict().keys())t.has(r)||n.push(r);this.missingKeys.set(n)}t(t,n){let r=this.dict().get(t)??this.fallbackDict().get(t);return r===void 0?`\u27EA${t}\u27EB`:(n&&r.includes(`{`)&&(r=r.replace(/\{(\w+),\s*plural,\s*one\{([^}]*)\}\s*other\{([^}]*)\}\}/g,(o,i,s,a)=>{let c=Number(n[i]);return(c===1?s:a).replace(/#/g,String(c))}),r=r.replace(/\{(\w+)\}/g,(o,i)=>n[i]!==void 0?String(n[i]):o)),r)}translate(t,n){return tn(()=>this.t(t,n))}static ɵfac=function(n){return new(n||e)};static ɵprov=T({token:e,factory:e.ɵfac,providedIn:`root`})};var aE=class e{i18n=p(Ec);transform(t,n){return t?(this.i18n.locale(),this.i18n.ready(),this.i18n.t(t,n)):``}static ɵfac=function(n){return new(n||e)};static ɵpipe=hd({name:`t`,type:e,pure:!1})};var cE=class e{sanitizer=p(Bd);name=rn.required();size=rn(18);strokeWidth=rn(1.75);svg=tn(()=>this.sanitizer.bypassSecurityTrustHtml(t[this.name()]??t.dashboard));static ɵfac=function(n){return new(n||e)};static ɵcmp=ei({type:e,selectors:[[`ui-icon`]],inputs:{name:[1,`name`],size:[1,`size`],strokeWidth:[1,`strokeWidth`]},decls:1,vars:6,consts:[[`viewBox`,`0 0 24 24`,`fill`,`none`,`stroke`,`currentColor`,`stroke-linecap`,`round`,`stroke-linejoin`,`round`,`aria-hidden`,`true`,3,`innerHTML`]],template:function(n,r){n&1&&(As(),Sa(0,`svg`,0)),n&2&&(_a(`width`,r.size(),`px`)(`height`,r.size(),`px`),Ca(`innerHTML`,r.svg(),qu),Ar(`stroke-width`,r.strokeWidth()))},styles:[`[_nghost-%COMP%]{display:inline-flex;flex-shrink:0;line-height:0}`]})};export{da as $,ze as $t,TS as A,rn as At,ZS as B,u_ as Bt,Ot as C,no as Ct,Rt as D,pS as Dt,Qm as E,p as Et,Wm as F,tT as Ft,_r as G,wS as Gt,_T as H,vI as Ht,Xn as I,te as It,a_ as J,y_ as Jt,aC as K,wa as Kt,Xo as L,tn as Lt,Ta as M,sC as Mt,Uh as N,si as Nt,Sa as O,rC as Ot,WS as P,tC as Pt,cE as Q,z$ as Qt,YS as R,tv as Rt,Oo as S,nb as St,Pg as T,oC as Tt,_a as U,vd as Ut,_S as V,v as Vt,_e as W,ve as Wt,bS as X,yd as Xt,ae as Y,yc as Yt,ba as Z,ye as Zt,Km as _,kU as _t,AU as a,ey as at,NS as b,mo as bt,CS as c,gS as ct,Ec as d,hE as dt,zm as en,ds as et,Ed as f,hS as ft,Kb as g,k as gt,Jm as h,jh as ht,AE as i,ei as it,TT as j,ry as jt,T as k,rE as kt,Dd as l,gf as lt,Fn as m,ii as mt,$m as n,eb as nt,Ar as o,fS as ot,F as p,hn as pt,aE as q,xr as qt,A as r,ee as rt,Bn as s,f_ as st,$ as t,eC as tt,De as u,hD as ut,MT as v,lg as vt,Ow as w,ny as wt,OU as x,nC as xt,Mt as y,mS as yt,Ym as z,uS as zt}; \ No newline at end of file diff --git a/portal/assets/chunk-BflJ-4CO.js b/portal/assets/chunk-BflJ-4CO.js new file mode 100644 index 0000000..32f673a --- /dev/null +++ b/portal/assets/chunk-BflJ-4CO.js @@ -0,0 +1 @@ +import{$ as dS,At as qm,Bt as tn,Dt as pS,Et as p,F as Sa,J as aC,Jt as vd,P as SS,Q as cE,Qt as yS,S as Ma,Ut as uC,Y as aE,Z as bd,at as ey,ct as hD,et as da,i as Ar,it as ei,jt as rC,kt as qS,p as Hh,s as DS,ut as hS,vt as lC,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{r as g}from"./main-XW2ZMSO5.js";import{a as l,s as y}from"./chunk-BNDlNg-C.js";import{t as _}from"./chunk-16deWS0U.js";import{t as D}from"./chunk-Bg2lccQE.js";import{n as k,t as I}from"./chunk-DQtX_-dj.js";import{t as T}from"./chunk-BGgpmc9t.js";var H=e=>({time:e});var L=(e,r)=>r.file;function R(e,r){e&1&&(da(0,`section`,3),Sa(1,`ui-state-badge`,6),da(2,`span`,7),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`versions.unavailable`)))}function q(e,r){if(e&1){let a=DS();da(0,`ui-error`,8),Ma(`retry`,function(){Hh(a);let y=SS();return Vh(y.load())}),vd()}e&2&&qm(`error`,r)}function J(e,r){e&1&&(da(0,`section`,5),aC(1,`t`),Sa(2,`ui-skeleton`,9),vd()),e&2&&(Ar(`aria-label`,lC(1,2,`state.loading`)),hD(2),qm(`lines`,3))}function K(e,r){if(e&1&&(da(0,`span`),qS(1),aC(2,`t`),vd()),e&2){let a=SS(2);hD(),bd(` · `,uC(2,1,`common.updatedAt`,rC(4,H,a.stamp(r))))}}function Q(e,r){if(e&1&&(da(0,`code`),qS(1),vd()),e&2){let a=SS();hD(),ey(a.installed.version)}}function W(e,r){e&1&&(da(0,`span`,15),qS(1),aC(2,`t`),vd()),e&2&&(hD(),bd(`— `,lC(2,1,`state.unverified`)))}function X(e,r){if(e&1&&(da(0,`code`),qS(1),vd()),e&2){let a=SS();hD(),ey(a.installed.origin)}}function Y(e,r){e&1&&(da(0,`span`,15),qS(1),aC(2,`t`),vd()),e&2&&(hD(),bd(`— `,lC(2,1,`state.unverified`)))}function Z(e,r){if(e&1&&qS(0),e&2){let a=SS();bd(` `,a.installed.channel,` `)}}function ee(e,r){e&1&&(da(0,`span`,15),qS(1),aC(2,`t`),vd()),e&2&&(hD(),bd(`— `,lC(2,1,`state.unverified`)))}function ie(e,r){if(e&1&&(da(0,`dl`,14)(1,`div`)(2,`dt`),qS(3),aC(4,`t`),vd(),da(5,`dd`)(6,`code`),qS(7),vd()()()()),e&2){let a=SS();hD(3),ey(lC(4,2,`versions.available.version`)),hD(4),ey(a.available.version)}}function te(e,r){e&1&&(da(0,`div`,18),Sa(1,`ui-state-badge`,6),da(2,`span`),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`versions.offline`)))}function ne(e,r){if(e&1&&(da(0,`code`),qS(1),vd()),e&2){let a=SS(2);hD(),ey(a.integrity.manifest_release)}}function ae(e,r){e&1&&(da(0,`span`,15),qS(1),aC(2,`t`),vd()),e&2&&(hD(),bd(`— `,lC(2,1,`state.unverified`)))}function oe(e,r){if(e&1&&(da(0,`code`,33),qS(1),vd()),e&2){let a=SS(2);hD(),ey(a.integrity.manifest_sha256)}}function re(e,r){e&1&&(da(0,`span`,15),qS(1),aC(2,`t`),vd()),e&2&&(hD(),bd(`— `,lC(2,1,`state.unverified`)))}function de(e,r){if(e&1&&(da(0,`section`,19)(1,`div`,11)(2,`div`)(3,`h2`),Sa(4,`ui-icon`,24),qS(5),aC(6,`t`),vd()()(),da(7,`dl`,14)(8,`div`)(9,`dt`),qS(10),aC(11,`t`),vd(),da(12,`dd`),dS(13,ne,2,1,`code`)(14,ae,3,3,`span`,15),vd()(),da(15,`div`)(16,`dt`),qS(17),aC(18,`t`),vd(),da(19,`dd`),dS(20,oe,2,1,`code`,33)(21,re,3,3,`span`,15),vd()()()()),e&2){let a=SS();hD(4),qm(`size`,15),hD(),ey(lC(6,6,`versions.integrity`)),hD(5),ey(lC(11,8,`versions.integrity.release`)),hD(3),hS(a.integrity.manifest_release?13:14),hD(4),ey(lC(18,10,`versions.integrity.sha256`)),hD(3),hS(a.integrity.manifest_sha256?20:21)}}function le(e,r){if(e&1&&(da(0,`div`)(1,`dt`),qS(2),aC(3,`t`),vd(),da(4,`dd`),qS(5),vd()()),e&2){let a=SS(2);hD(2),ey(lC(3,2,`versions.pending.updates`)),hD(3),ey(a.pending)}}function pe(e,r){if(e&1&&(da(0,`div`)(1,`dt`),qS(2),aC(3,`t`),vd(),da(4,`dd`),qS(5),vd()()),e&2){let a=SS(2);hD(2),ey(lC(3,2,`versions.pending.plan`)),hD(3),ey(a.upgrade_plan)}}function se(e,r){if(e&1&&(da(0,`dl`,14),dS(1,le,6,4,`div`),dS(2,pe,6,4,`div`),vd()),e&2){let a=SS();hD(),hS(a.pending?1:-1),hD(),hS(a.upgrade_plan?2:-1)}}function ce(e,r){e&1&&(da(0,`div`,21),Sa(1,`ui-state-badge`,6),da(2,`span`),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`versions.pending.cli`)))}function me(e,r){if(e&1&&(da(0,`tr`)(1,`td`)(2,`code`),qS(3),vd()(),da(4,`td`),qS(5),vd(),da(6,`td`),qS(7),vd()()),e&2){let a=r.$implicit;hD(3),ey(a.file),hD(2),ey(a.operation??`—`),hD(2),ey(a.status??`—`)}}function _e(e,r){if(e&1&&(da(0,`section`,22)(1,`div`,11)(2,`div`)(3,`h2`),Sa(4,`ui-icon`,12),qS(5),aC(6,`t`),vd()()(),da(7,`div`,28)(8,`table`,34)(9,`thead`)(10,`tr`)(11,`th`,35),qS(12),aC(13,`t`),vd(),da(14,`th`,35),qS(15),aC(16,`t`),vd(),da(17,`th`,35),qS(18),aC(19,`t`),vd()()(),da(20,`tbody`),mS(21,me,8,3,`tr`,null,L),vd()()()()),e&2){let a=SS();hD(4),qm(`size`,15),hD(),ey(lC(6,5,`versions.receipts`)),hD(7),ey(lC(13,7,`versions.receipts.file`)),hD(3),ey(lC(16,9,`versions.receipts.operation`)),hD(3),ey(lC(19,11,`versions.receipts.status`)),hD(3),yS(a.receipts)}}function ve(e,r){if(e&1&&(da(0,`pre`,25),qS(1),vd()),e&2){let a=SS();hD(),ey(a.changelog)}}function xe(e,r){e&1&&(da(0,`p`,15),qS(1),aC(2,`t`),vd()),e&2&&(hD(),bd(`— `,lC(2,1,`state.unverified`)))}function ue(e,r){if(e&1&&(da(0,`code`),qS(1),vd()),e&2){let a=SS().$implicit;hD(),ey(a.version)}}function ye(e,r){e&1&&(da(0,`span`,15),qS(1),aC(2,`t`),vd()),e&2&&(hD(),bd(`— `,lC(2,1,`state.unverified`)))}function ge(e,r){if(e&1&&qS(0),e&2){let a=SS().$implicit,s=SS(3);bd(` `,s.fmt(a.at),` `)}}function fe(e,r){e&1&&(da(0,`span`,7),qS(1,`—`),vd())}function Ce(e,r){if(e&1&&qS(0),e&2){let a=SS().$implicit;bd(` `,a.detail,` `)}}function Se(e,r){e&1&&(da(0,`span`,7),qS(1,`—`),vd())}function be(e,r){if(e&1&&(da(0,`tr`)(1,`td`),dS(2,ue,2,1,`code`)(3,ye,3,3,`span`,15),vd(),da(4,`td`,36),dS(5,ge,1,1)(6,fe,2,0,`span`,7),vd(),da(7,`td`),dS(8,Ce,1,1)(9,Se,2,0,`span`,7),vd()()),e&2){let a=r.$implicit;hD(2),hS(a.version?2:3),hD(3),hS(a.at?5:6),hD(3),hS(a.detail?8:9)}}function Ee(e,r){if(e&1&&(da(0,`div`,28)(1,`table`,34)(2,`thead`)(3,`tr`)(4,`th`,35),qS(5),aC(6,`t`),vd(),da(7,`th`,35),qS(8),aC(9,`t`),vd(),da(10,`th`,35),qS(11),aC(12,`t`),vd()()(),da(13,`tbody`),mS(14,be,10,3,`tr`,null,pS),vd()()()),e&2){let a=SS();hD(5),ey(lC(6,3,`versions.history.version`)),hD(3),ey(lC(9,5,`versions.history.at`)),hD(3),ey(lC(12,7,`versions.history.detail`)),hD(3),yS(a.history)}}function he(e,r){e&1&&(Sa(0,`ui-empty`,29),aC(1,`t`)),e&2&&qm(`title`,lC(1,1,`versions.history.empty`))}function Pe(e,r){if(e&1&&(da(0,`p`,32)(1,`code`),qS(2),vd()()),e&2){let a=SS();hD(2),ey(a.rollback.hint)}}function Ie(e,r){if(e&1&&(da(0,`section`,10)(1,`div`,11)(2,`div`)(3,`h2`),Sa(4,`ui-icon`,12),qS(5),aC(6,`t`),vd(),da(7,`p`,13)(8,`code`),qS(9,`GET /api/v1/versions`),vd(),dS(10,K,3,6,`span`),vd()()(),da(11,`dl`,14)(12,`div`)(13,`dt`),qS(14),aC(15,`t`),vd(),da(16,`dd`),dS(17,Q,2,1,`code`)(18,W,3,3,`span`,15),vd()(),da(19,`div`)(20,`dt`),qS(21),aC(22,`t`),vd(),da(23,`dd`),dS(24,X,2,1,`code`)(25,Y,3,3,`span`,15),vd()(),da(26,`div`)(27,`dt`),qS(28),aC(29,`t`),vd(),da(30,`dd`),dS(31,Z,1,1)(32,ee,3,3,`span`,15),vd()(),da(33,`div`)(34,`dt`),qS(35),aC(36,`t`),vd(),da(37,`dd`)(38,`code`),qS(39),vd()()()()(),da(40,`section`,16)(41,`div`,11)(42,`div`)(43,`h2`),Sa(44,`ui-icon`,17),qS(45),aC(46,`t`),vd(),da(47,`p`,13),qS(48),aC(49,`t`),da(50,`code`),qS(51),vd()()()(),dS(52,ie,8,4,`dl`,14)(53,te,5,3,`div`,18),vd(),dS(54,de,22,12,`section`,19),da(55,`section`,20)(56,`div`,11)(57,`div`)(58,`h2`),Sa(59,`ui-icon`,2),qS(60),aC(61,`t`),vd()()(),dS(62,se,3,2,`dl`,14)(63,ce,5,3,`div`,21),vd(),dS(64,_e,23,13,`section`,22),da(65,`section`,23)(66,`div`,11)(67,`div`)(68,`h2`),Sa(69,`ui-icon`,24),qS(70),aC(71,`t`),vd()()(),dS(72,ve,2,1,`pre`,25)(73,xe,3,3,`p`,15),vd(),da(74,`section`,26)(75,`div`,11)(76,`div`)(77,`h2`),Sa(78,`ui-icon`,27),qS(79),aC(80,`t`),vd()()(),dS(81,Ee,16,9,`div`,28)(82,he,2,3,`ui-empty`,29),vd(),da(83,`section`,30)(84,`div`,11)(85,`div`)(86,`h2`),Sa(87,`ui-icon`,2),qS(88),aC(89,`t`),vd()(),Sa(90,`ui-state-badge`,31),vd(),dS(91,Pe,3,1,`p`,32),vd()),e&2){let a,s=r,y=SS();hD(4),qm(`size`,15),hD(),ey(lC(6,31,`versions.installed`)),hD(5),hS((a=y.src.loadedAt())?10:-1,a),hD(4),ey(lC(15,33,`versions.installed.version`)),hD(3),hS(s.installed.version?17:18),hD(4),ey(lC(22,35,`versions.installed.origin`)),hD(3),hS(s.installed.origin?24:25),hD(4),ey(lC(29,37,`versions.installed.channel`)),hD(3),hS(s.installed.channel?31:32),hD(4),ey(lC(36,39,`versions.compat`)),hD(4),ey(s.compat),hD(5),qm(`size`,15),hD(),ey(lC(46,41,`versions.available`)),hD(3),bd(` `,lC(49,43,`versions.available.source`),`: `),hD(3),ey(s.available.source),hD(),hS(s.available.version?52:53),hD(2),hS(s.integrity?54:-1),hD(5),qm(`size`,15),hD(),ey(lC(61,45,`versions.pending`)),hD(2),hS(s.pending||s.upgrade_plan?62:63),hD(2),hS(s.receipts?.length?64:-1),hD(5),qm(`size`,15),hD(),ey(lC(71,47,`versions.changelog`)),hD(2),hS(s.changelog?72:73),hD(6),qm(`size`,15),hD(),ey(lC(80,49,`versions.history`)),hD(2),hS(s.history.length?81:82),hD(6),qm(`size`,15),hD(),ey(lC(89,51,`versions.rollback`)),hD(2),qm(`state`,s.rollback.supported?`supported`:`unsupported`),hD(),hS(s.rollback.hint?91:-1)}}var G=class e{api=p(g);src=new l;info=tn(()=>this.src.data());stamp=y;constructor(){this.load()}async load(){await this.src.load(()=>this.api.versions())}fmt(r){let a=new Date(r);return Number.isNaN(a.getTime())?r:a.toLocaleString()}static ɵfac=function(a){return new(a||e)};static ɵcmp=ei({type:e,selectors:[[`page-versions`]],decls:11,vars:15,consts:[[3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[`data-section`,`unavailable`,`role`,`note`,1,`card`,`unv`],[3,`error`],[`role`,`status`,1,`card`],[`state`,`UNVERIFIED`],[1,`muted`],[3,`retry`,`error`],[`kind`,`row`,3,`lines`],[`data-section`,`installed`,1,`card`],[1,`sec__head`],[`name`,`install`,3,`size`],[1,`src`],[1,`kv`],[`data-unverified`,``,1,`muted`],[`data-section`,`available`,1,`card`],[`name`,`external`,3,`size`],[`data-note`,`offline`,`role`,`note`,1,`unv`],[`data-section`,`integrity`,1,`card`],[`data-section`,`pending`,1,`card`],[`data-note`,`cli`,`role`,`note`,1,`unv`],[`data-section`,`receipts`,1,`card`],[`data-section`,`changelog`,1,`card`],[`name`,`knowledge`,3,`size`],[1,`changelog`],[`data-section`,`history`,1,`card`],[`name`,`history`,3,`size`],[1,`table-wrap`],[`icon`,`history`,3,`title`],[`data-section`,`rollback`,1,`card`],[3,`state`],[1,`hint`],[1,`hash`],[1,`table`],[`scope`,`col`],[1,`nowrap`]],template:function(a,s){if(a&1&&(da(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),da(3,`button`,1),Ma(`click`,function(){return s.load()}),Sa(4,`ui-icon`,2),qS(5),aC(6,`t`),vd()(),dS(7,R,5,3,`section`,3),dS(8,q,1,1,`ui-error`,4),dS(9,J,3,4,`section`,5),dS(10,Ie,92,53)),a&2){let y,S;qm(`title`,lC(1,9,`versions.title`))(`subtitle`,lC(2,11,`versions.subtitle`)),hD(3),qm(`disabled`,s.src.loading()),hD(),qm(`size`,15),hD(),bd(` `,lC(6,13,`state.refresh`),` `),hD(2),hS(s.src.unavailable()?7:-1),hD(),hS((y=s.src.error())?8:-1,y),hD(),hS(s.src.loading()&&!s.info()?9:-1),hD(),hS((S=s.info())?10:-1,S)}},dependencies:[T,I,_,D,cE,k,aE],styles:[`.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.sec__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.src[_ngcontent-%COMP%]{margin:4px 0 0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.unv[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.kv[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin:0}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{min-width:9rem;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm);flex:none}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;min-width:0;overflow-wrap:anywhere}.changelog[_ngcontent-%COMP%]{margin:0;padding:var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:var(--%NS%bg);font-size:var(--%NS%font-xs);overflow-x:auto;white-space:pre-wrap}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.nowrap[_ngcontent-%COMP%]{white-space:nowrap}.hint[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-sm);overflow-wrap:anywhere}`]})};export{G as VersionsPage}; \ No newline at end of file diff --git a/portal/assets/chunk-Bg2lccQE.js b/portal/assets/chunk-Bg2lccQE.js new file mode 100644 index 0000000..7f4da1b --- /dev/null +++ b/portal/assets/chunk-Bg2lccQE.js @@ -0,0 +1 @@ +import{$ as dS,At as qm,Bt as tn,Et as p,F as Sa,J as aC,Jt as vd,L as TS,P as SS,Pt as rn,Q as cE,S as Ma,Y as aE,Z as bd,_t as kU,at as ey,ct as hD,et as da,h as Ic,it as ei,kt as qS,p as Hh,qt as vc,s as DS,ut as hS,vt as lC,x as MS,z as Vh}from"./chunk-BefGrJ9d.js";var k={"PORTAL-UNREACHABLE":{explainKey:`err.explain.unreachable`},"PORTAL-SESSION":{explainKey:`err.explain.session`},"PORTAL-TIMEOUT":{explainKey:`err.explain.timeout`,route:`/tasks`,routeKey:`ops.alert.goTasks`},"PORTAL-RATE-LIMITED":{explainKey:`err.explain.rateLimited`},"PORTAL-PAYLOAD-TOO-LARGE":{explainKey:`err.explain.payload`},"PORTAL-CLI-UNAVAILABLE":{explainKey:`err.explain.cli`,route:`/install`,routeKey:`ops.alert.goInstall`},"PORTAL-UNSUPPORTED":{explainKey:`err.explain.unsupported`,route:`/dashboard`,routeKey:`err.go.dashboard`},"PORTAL-HOST-ABSENT":{explainKey:`err.explain.hostAbsent`,route:`/hosts`,routeKey:`ops.alert.goHosts`},"PORTAL-FORGE":{explainKey:`err.explain.forge`,route:`/federation`,routeKey:`ops.alert.goFederation`},"PORTAL-NOT-FOUND":{explainKey:`err.explain.notFound`,route:`/dashboard`,routeKey:`err.go.dashboard`},"PORTAL-INTERNAL":{explainKey:`err.explain.internal`,route:`/observe`,routeKey:`err.go.observe`},"PORTAL-CONFIRM":{explainKey:`err.explain.confirm`},"HTTP-403":{explainKey:`err.explain.forbidden`},"HTTP-404":{explainKey:`err.explain.notFound`,route:`/dashboard`,routeKey:`err.go.dashboard`},"HTTP-500":{explainKey:`err.explain.internal`,route:`/observe`,routeKey:`err.go.observe`},"HTTP-503":{explainKey:`err.explain.unavailable`}};var w=[[`PORTAL-PLAN-`,{explainKey:`err.explain.plan`}],[`PORTAL-SECRET-`,{explainKey:`err.explain.secret`,route:`/config`,routeKey:`ops.alert.goConfig`}]];var F=new Set([`PORTAL-BAD-JSON`,`PORTAL-CONTENT-TYPE`,`PORTAL-ORIGIN`,`PORTAL-MISSING-FIELD`,`PORTAL-ACTION`]);function M(r){if(!r)return null;let t=r.body.code,e=k[t];if(e)return e;for(let[i,c]of w)if(t.startsWith(i))return c;return F.has(t)?{explainKey:`err.explain.request`}:null}var B=[`*`];function G(r,t){if(r&1&&(da(0,`code`,3),qS(1),vd()),r&2){let e=SS();hD(),ey(e.error().body.code)}}function H(r,t){if(r&1&&(da(0,`a`,8),qS(1),aC(2,`t`),Sa(3,`ui-icon`,9),vd()),r&2){let e=SS();qm(`routerLink`,e.route),hD(),ey(lC(2,3,e.routeKey)),hD(2),qm(`size`,13)}}function U(r,t){if(r&1&&(da(0,`p`,4),qS(1),aC(2,`t`),dS(3,H,4,5,`a`,8),vd()),r&2){let e=t;hD(),bd(` `,lC(2,2,e.explainKey),` `),hD(2),hS(e.route&&e.routeKey?3:-1)}}function z(r,t){r&1&&(da(0,`p`,5),qS(1),vd()),r&2&&(hD(),ey(t))}function V(r,t){if(r&1){let e=DS();da(0,`button`,10),Ma(`click`,function(){Hh(e);let c=SS();return Vh(c.retry.emit())}),qS(1),aC(2,`t`),vd()}r&2&&(hD(),ey(lC(2,1,`error.retry`)))}var D=class r{i18n=p(Ic);error=rn(null);retry=kU();guidance=tn(()=>M(this.error()));message=tn(()=>{let t=this.error();if(!t)return this.i18n.t(`error.generic`);let e=t.body.message_key;if(e){let i=this.i18n.t(e);if(!i.startsWith(`⟪`))return i}return t.body.message||this.i18n.t(`error.generic`)});static ɵfac=function(e){return new(e||r)};static ɵcmp=ei({type:r,selectors:[[`ui-error`]],inputs:{error:[1,`error`]},outputs:{retry:`retry`},ngContentSelectors:B,decls:12,vars:8,consts:[[`role`,`alert`,1,`err`],[1,`err__title`],[1,`err__msg`],[1,`err__code`],[1,`err__hint`],[1,`err__action`],[1,`err__actions`],[1,`btn`],[1,`err__go`,3,`routerLink`],[`name`,`chevron-right`,3,`size`],[1,`btn`,3,`click`]],template:function(e,i){if(e&1&&(TS(),da(0,`div`,0)(1,`p`,1),qS(2),aC(3,`t`),vd(),da(4,`p`,2),qS(5),vd(),dS(6,G,2,1,`code`,3),dS(7,U,4,4,`p`,4),dS(8,z,2,1,`p`,5),da(9,`div`,6),dS(10,V,3,3,`button`,7),MS(11),vd()()),e&2){let c,_;hD(2),ey(lC(3,6,`error.title`)),hD(3),ey(i.message()),hD(),hS(i.error()?.body?.code?6:-1),hD(),hS((c=i.guidance())?7:-1,c),hD(),hS((_=i.error()?.body?.action)?8:-1,_),hD(2),hS(i.error()?.body?.retryable!==!1?10:-1)}},dependencies:[vc,cE,aE],styles:[`.err[_ngcontent-%COMP%]{display:grid;gap:8px;padding:var(--%NS%space-6);border:1px solid color-mix(in srgb,var(--%NS%error) 55%,transparent);border-left-width:3px;border-radius:var(--%NS%radius-lg);background:var(--%NS%error-bg);box-shadow:var(--%NS%elev-card)}.err__title[_ngcontent-%COMP%]{font-weight:700;color:var(--%NS%error);margin:0}.err__msg[_ngcontent-%COMP%]{margin:0;color:var(--%NS%fg)}.err__code[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.err__hint[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted)}.err__go[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;min-height:24px;font-weight:600;text-decoration:none;white-space:nowrap}.err__go[_ngcontent-%COMP%]:hover{color:var(--%NS%accent-ink)}.err__action[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-sm);font-weight:550;color:var(--%NS%accent-ink)}.err__actions[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-2)}`]})};export{D as t}; \ No newline at end of file diff --git a/portal/assets/chunk-BhLaTFvG.js b/portal/assets/chunk-BhLaTFvG.js deleted file mode 100644 index a053d27..0000000 --- a/portal/assets/chunk-BhLaTFvG.js +++ /dev/null @@ -1 +0,0 @@ -var e={"app.title":`Forge Portal`,"app.tagline":`agentic engineering, simplified`,"nav.dashboard":`Dashboard`,"nav.install":`Installation`,"nav.federation":`Forge family`,"nav.profiles":`Profiles`,"nav.hosts":`AI hosts`,"nav.mcp":`MCP`,"nav.skills":`Skills`,"nav.agents":`Agents`,"nav.tasks":`Tasks`,"nav.graph":`Graph Studio`,"nav.knowledge":`Knowledge`,"nav.settings":`Settings`,"nav.section.overview":`Overview`,"nav.section.explore":`Explore`,"nav.section.operate":`Operate`,"nav.section.analyze":`Analyze`,"nav.section.settings":`Settings`,"nav.primary":`Primary navigation`,"nav.collapse":`Collapse menu`,"nav.expand":`Expand menu`,"nav.shortcut.collapse":`Collapse menu (press [)`,"nav.skip":`Skip to content`,"command.open":`Search actions and pages…`,"command.hint":`Type to search pages, actions and help`,"command.empty":`Nothing found for that search.`,"state.loading":`Loading…`,"state.retry":`Retry`,"state.refresh":`Refresh`,"state.close":`Close`,"state.cancel":`Cancel`,"state.confirm":`Confirm`,"state.apply":`Apply`,"state.copy":`Copy`,"state.copied":`Copied`,"state.open":`Open`,"state.viewDetails":`View details`,"state.enabled":`Enabled`,"state.disabled":`Disabled`,"state.unknown":`Unknown`,"state.unverified":`Unverified`,"state.supported":`Supported`,"state.unsupported":`Unsupported`,"state.notApplicable":`Not applicable`,"state.absent":`Absent`,"state.required":`Required`,"state.optional":`Optional`,"state.yes":`Yes`,"state.no":`No`,"state.none":`None`,"state.all":`All`,"installState.NOT_INSTALLED":`Not installed`,"installState.INSTALLED":`Installed`,"installState.CONFIGURED":`Configured`,"installState.ACTIVE":`Active`,"installState.VERIFIED":`Verified`,"installState.DEGRADED":`Degraded`,"installState.BLOCKED":`Blocked`,"installState.FAILED":`Failed`,"mcpState.NOT_CONFIGURED":`Not configured`,"mcpState.CONFIGURED":`Configured`,"mcpState.STARTING":`Starting`,"mcpState.HANDSHAKE_VERIFIED":`Handshake verified`,"mcpState.TOOLS_DISCOVERED":`Tools discovered`,"mcpState.INVOCATION_VERIFIED":`Invocation verified`,"mcpState.DEGRADED":`Degraded`,"mcpState.FAILED":`Failed`,"dashboard.title":`Dashboard`,"dashboard.subtitle":`A real view of your Forge in this workspace.`,"dashboard.health":`Installation health`,"dashboard.workspace":`Workspace`,"dashboard.noWorkspace":`No workspace open`,"dashboard.profile":`Profile`,"dashboard.host":`AI host`,"dashboard.mcp":`MCP`,"dashboard.skills":`Skills available`,"dashboard.agents":`Agents available`,"dashboard.tasks":`Recent tasks`,"dashboard.findings":`Alerts`,"dashboard.graph":`Graph`,"dashboard.recommended":`Recommended actions`,"dashboard.quickStart":`Getting started`,"dashboard.quickStart.hint":`Complete these steps to start using the Forge with your AI host.`,"dashboard.step.install":`Install the Forge`,"dashboard.step.family":`Prepare the Forge family`,"dashboard.step.host":`Verify an AI host`,"dashboard.step.mcp":`Verify the MCP handshake`,"dashboard.step.task":`Run your first task`,"dashboard.capabilities":`Capabilities`,"dashboard.none":`No data yet — run a verification.`,"dashboard.stat.state":`Install state`,"dashboard.stat.capabilities":`Capabilities ready`,"dashboard.stat.checks":`Checks passing`,"dashboard.stat.portal":`Portal version`,"dashboard.accountEnvironment":`Account environment`,"dashboard.accountEnvironmentHint":`Reusable install paths for this Forge, outside your workspace.`,"dashboard.environmentMissing":`Run install.ps1 or install.sh to publish these paths.`,"environmentState.READY":`Ready`,"environmentState.PARTIAL":`Partial`,"environmentState.MISSING":`Missing`,"environmentState.INVALID":`Invalid`,"environmentState.UNSET":`Not set`,"install.title":`Installation`,"install.subtitle":`Install, repair, verify or remove this Forge — the same service as the CLI, with the same receipts.`,"install.status":`Current state`,"install.portal.installed":`Forge Portal installed`,"install.portal.vendored":`Forge Portal not installed locally`,"install.portal.vendored.hint":`vendored assets only — no local install found`,"install.scope":`Scope`,"install.scope.project":`Current project`,"install.scope.project.hint":`Writes only inside this directory — ideal for trying it out.`,"install.scope.workspace":`Workspace`,"install.scope.workspace.hint":`Applies to the whole detected workspace.`,"install.scope.user":`User`,"install.scope.user.hint":`Available in every project for this user.`,"install.components":`Components`,"install.plan":`Generate plan`,"install.plan.review":`Review plan`,"install.plan.changes":`{count, plural, one{# planned change} other{# planned changes}}`,"install.apply":`Apply installation`,"install.repair":`Repair installation`,"install.uninstall":`Uninstall`,"install.uninstall.confirm":`This removes this Forge's managed files in this scope. Only files recorded in the ledger are removed.`,"install.uninstall.confirmBtn":`Confirm uninstall`,"install.host.all":`All hosts`,"install.host.notDetected":`not detected`,"install.verify":`Verify`,"install.receipt":`Receipt`,"install.running":`Running…`,"install.done":`Done`,"install.refused":`Refused`,"install.hosts":`AI hosts`,"install.hosts.hint":`Choose which hosts to integrate skills, agents and MCP into.`,"install.profile":`Installation profile`,"install.executionProfile":`Execution profile`,"install.summary":`Ready to install`,"install.summary.scope":`Scope`,"install.summary.host":`Host`,"install.summary.profile":`Profile`,"install.summary.executionProfile":`Execution`,"install.summary.components":`Components`,"install.summary.empty":`Select at least one component to generate a plan.`,"install.step.configure":`Configure`,"install.step.plan":`Plan`,"install.step.review":`Review`,"install.step.done":`Receipt`,"install.receipt.status":`Status`,"federation.title":`Forge family`,"federation.subtitle":`See real specialists and prepare the workspace with one approval.`,"federation.summary":`Federation summary`,"federation.catalog":`Catalog specialists`,"federation.installed":`Registered forges`,"federation.mcp":`With declared MCP`,"federation.checkouts":`Local checkouts`,"federation.governed":`Governed plan`,"federation.setup.title":`Prepare the family`,"federation.setup.hint":`Choose once. Each Forge keeps its own installer, ledger and verification.`,"federation.host":`AI hosts`,"federation.host.all":`All hosts`,"federation.host.allHint":`Compatible integrations detected by each Forge.`,"federation.host.none":`No host now`,"federation.host.noneHint":`Keeps host files untouched.`,"federation.host.claude":`Claude`,"federation.host.devin":`Devin`,"federation.host.codex":`Codex`,"federation.host.copilot":`Copilot`,"federation.host.detected":`Each Forge confirms state in its plan.`,"federation.profile":`Install profile`,"federation.profile.minimal":`Economy`,"federation.profile.minimalHint":`Core/MCP; capabilities load on demand.`,"federation.profile.recommended":`Recommended`,"federation.profile.recommendedHint":`Skills, agents, MCP and the complete experience.`,"federation.profile.full":`Full`,"federation.profile.fullHint":`All compatible selected components.`,"federation.executionProfile":`Execution profile`,"federation.execution.economy":`Economy`,"federation.execution.economyHint":`Lower cost and context footprint for routine work.`,"federation.execution.balanced":`Balanced`,"federation.execution.balancedHint":`Default trade-off between capability, speed and cost.`,"federation.execution.deep":`Deep`,"federation.execution.deepHint":`More context and specialist depth for complex work.`,"federation.components":`Optional components`,"federation.component.skills":`Skills`,"federation.component.skillsHint":`Capabilities discovered by the host.`,"federation.component.agents":`Agents`,"federation.component.agentsHint":`Declared specialists and subagents.`,"federation.component.mcp":`MCP`,"federation.component.mcpHint":`Governed MCP entries.`,"federation.component.tui":`TUI`,"federation.component.tuiHint":`Terminal command center.`,"federation.component.graph":`Graph Studio`,"federation.component.graphHint":`Federated graph and visual navigation.`,"federation.plan":`Generate family plan`,"federation.planHint":`Nothing changes before review and confirmation.`,"federation.specialists":`Specialists`,"federation.specialistsHint":`Observed state from the catalog and local registry.`,"federation.mcpReady":`MCP declared`,"federation.mcpAbsent":`MCP not declared`,"federation.empty":`No specialist was observed in this workspace.`,"federation.review":`Review family plan`,"federation.reviewHint":`This plan comes from the real registered installers.`,"federation.actions":`Actions`,"federation.apply":`Apply family`,"federation.running":`Applying installers and collecting receipts…`,"federation.receipt":`Family receipt`,"federation.receiptHint":`Refresh the states to confirm the outcome.`,"profiles.title":`Profiles`,"profiles.subtitle":`How much of the Forge is available in your AI host's context.`,"profiles.current":`Current profile`,"profiles.economy":`Economy`,"profiles.economy.desc":`Lowest context usage. Loads capabilities as needed.`,"profiles.balanced":`Balanced`,"profiles.balanced.desc":`Balance between availability, quality and economy.`,"profiles.deep":`Deep`,"profiles.deep.desc":`Maximum verification depth and execution evidence.`,"profiles.full":`Full`,"profiles.full.desc":`All compatible components available, without loading everything into context.`,"profiles.apply":`Apply profile`,"profiles.diff":`What changes`,"hosts.title":`AI hosts`,"hosts.subtitle":`Real state of each host — detected, authenticated and integrated.`,"hosts.detected":`Detected`,"hosts.installed":`Integrated`,"hosts.version":`Version`,"hosts.supported":`Supported`,"hosts.auth":`Authentication`,"hosts.auth.signedIn":`Signed in`,"hosts.auth.signedOut":`Signed out`,"hosts.auth.unknown":`Unverified`,"hosts.integration":`Integration`,"hosts.launch":`Open host`,"hosts.launch.copyHint":`Run this command in your terminal to open the host:`,"hosts.launch.unavailable":`The portal cannot launch hosts — open it from a terminal with the command below.`,"hosts.docs":`Official documentation`,"hosts.notDetected":`Not detected on this system`,"hosts.restartRequired":`Restart the host to apply the configuration`,"hostState.NOT_DETECTED":`Not detected`,"hostState.DETECTED":`Detected`,"hostState.INSTALLED":`Installed`,"hostState.CONFIGURED":`Configured`,"hostState.MCP_REGISTERED":`MCP registered`,"hostState.HANDSHAKE_VERIFIED":`Handshake verified`,"hostState.TOOLS_DISCOVERED":`Tools discovered`,"hostState.EXECUTION_VERIFIED":`Execution verified`,"hostState.FAILED":`Failed`,"hostState.BLOCKED":`Blocked`,"mcp.title":`MCP`,"mcp.subtitle":`MCP servers and real handshake verification.`,"mcp.servers":`Servers`,"mcp.tools":`{count, plural, one{# tool} other{# tools}}`,"mcp.verify":`Verify handshake`,"mcp.lastVerify":`Last verified`,"mcp.limitations":`Limitations`,"mcp.never":`Never verified`,"skills.title":`Skills`,"skills.subtitle":`This Forge's real skill catalog.`,"skills.search":`Search skills…`,"skills.domain":`Domain`,"skills.state":`State`,"skills.hosts":`Hosts`,"skills.empty":`No skill matches the search.`,"skills.none":`This Forge does not ship a skill catalog.`,"agents.title":`Agents`,"agents.subtitle":`Agents, subagents and coordinators with declared authority.`,"agents.search":`Search agents…`,"agents.role":`Role`,"agents.authority":`Authority`,"agents.skills":`Skills`,"agents.domains":`Domains`,"agents.empty":`No agent matches the search.`,"agents.none":`This Forge does not ship an agent catalog.`,"tasks.title":`Tasks`,"tasks.subtitle":`Say what you want to do — the portal builds the plan on the real Forge.`,"tasks.intent.label":`What do you want to do?`,"tasks.intent.placeholder":`E.g.: analyze the PySpark scripts in this project`,"tasks.intent.run":`Plan`,"tasks.plan":`Plan`,"tasks.plan.review":`Review the plan before executing.`,"tasks.plan.task":`Task`,"tasks.plan.verb":`Verb`,"tasks.plan.intent":`Your intent`,"fdoc.checks":`Checks`,"fdoc.repairable":`(repairable)`,"fdoc.drift":`Drift`,"fdoc.modified":`modified`,"fdoc.missing":`missing`,"fdoc.managed_files":`Managed files`,"fdoc.planned_files":`Planned files`,"fdoc.more":`more`,"fdoc.portal":`Forge Portal`,"fdoc.portal.vendored":`vendored assets — no local install`,"fdoc.workspace":`Workspace`,"fdoc.verification":`Verification`,"fdoc.unlock":`unlock:`,"fdoc.repair":`repair:`,"fdoc.raw":`Advanced — raw JSON`,"doc.target":`target`,"doc.scope":`scope`,"doc.version":`version`,"doc.profile":`profile`,"doc.state_dir":`state dir`,"doc.managed":`managed entries`,"tasks.execute":`Execute`,"tasks.recent":`Recent tasks`,"tasks.empty":`No tasks run in this session.`,"tasks.stage.started":`Started`,"tasks.stage.planning":`Planning`,"tasks.stage.selected":`Specialist selected`,"tasks.stage.running":`Running`,"tasks.stage.verifying":`Verifying`,"tasks.stage.completed":`Completed`,"tasks.stage.failed":`Failed`,"tasks.stage.refused":`Refused`,"tasks.result":`Result`,"tasks.evidence":`Evidence`,"tasks.noHost":`No host detected — the plan shows the exact command to run on your host.`,"graph.title":`Graph Studio`,"graph.subtitle":`The Forge's real graph — nodes, edges, evidence and impact.`,"graph.open":`Open Graph Studio`,"graph.nodes":`{count, plural, one{# node} other{# nodes}}`,"graph.edges":`{count, plural, one{# edge} other{# edges}}`,"graph.unavailable":`No graph built yet.`,"graph.buildHint":`Build the graph with the Forge, then reload this page.`,"graph.federated":`Federated`,"graph.fed.title":`Federated ecosystem graph`,"graph.fed.export":`Export graph`,"graph.fed.sources":`Data sources`,"graph.fed.evidenceNote":`Every node carries the endpoint that supplied it — nothing is assumed.`,"graph.fed.search":`Search nodes by name or id…`,"graph.fed.kind":`Kind`,"graph.fed.verification":`Verification`,"entity.openIn":`Open in`,"graph.fed.observed":`observed`,"graph.fed.impact":`Direct impact`,"graph.fed.noImpact":`No edges recorded for this node.`,"graph.fed.empty":`No nodes match the filters.`,"graph.fed.none":`No federated data available.`,"graph.source.loaded":`loaded`,"graph.source.unverified":`unverified`,"graph.source.unavailable":`unavailable`,"graph.view.toggle":`Graph view`,"graph.view.list":`List`,"graph.view.canvas":`Canvas`,"graph.canvas.tools":`Canvas tools`,"graph.canvas.layout":`Layout`,"graph.canvas.reset":`Reset layout`,"graph.canvas.fit":`Fit`,"graph.canvas.zoomSel":`Zoom to selected`,"graph.canvas.aria":`Graph canvas — pan, zoom, drag and select nodes and edges`,"graph.canvas.legend":`Node kind legend`,"graph.edge.title":`Edge`,"graph.edge.relation":`Relation`,"graph.edge.source":`Source`,"graph.edge.target":`Target`,"graph.edge.direction":`Direction`,"graph.edge.observedAt":`Source observed at`,"graph.edge.related":`Other relations on this pair`,"graph.edge.relatedNone":`No other relation connects this pair.`,"graph.fed.state":`State`,"graph.fed.category":`Category`,"graph.fed.origin":`Origin forge`,"graph.fed.version":`Version`,"graph.fed.degree":`Relations`,"graph.fed.failed":`Reported failure`,"graph.fed.relOut":`Uses / declares (outgoing)`,"graph.fed.relIn":`Used / referenced by (incoming)`,"graph.fed.noRelations":`No declared relations.`,"graph.impact.title":`Impact analysis — topological`,"graph.impact.depth":`Depth`,"graph.impact.usedBy":`What depends on it`,"graph.impact.uses":`What it uses`,"graph.impact.more":`+{count} more`,"graph.impact.component":`Component`,"graph.impact.cycle":`Cycle`,"graph.impact.orphan":`Orphan — no declared relation`,"graph.impact.unverified":`Unverified relations`,"graph.impact.coverage":`Coverage: {loaded}/{total} sources loaded`,"graph.impact.path":`Shortest path to…`,"graph.impact.dirOut":`Following edges`,"graph.impact.dirBoth":`Any direction`,"graph.impact.noPath":`No path exists in this direction.`,"graph.impact.topoNote":`Topological reach only — declared relations say nothing about runtime impact.`,"graph.canvas.group":`Group`,"graph.group.none":`No grouping`,"graph.group.kind":`by kind`,"graph.group.forge":`by forge`,"graph.group.host":`by host`,"graph.view.reset":`Reset view`,"graph.snap.capture":`Capture snapshot`,"graph.snap.compare":`Compare with snapshot`,"graph.snap.clear":`Discard snapshot`,"graph.snap.at":`Snapshot from {at}`,"graph.diff.title":`Topology diff vs snapshot`,"graph.diff.unchanged":`No topological changes since the snapshot.`,"graph.diff.added":`Added`,"graph.diff.removed":`Removed`,"graph.diff.changed":`Changed`,"graph.legend.declared":`declared & loaded`,"graph.legend.unverified":`unverified source`,"graph.legend.unavailable":`unavailable source`,"knowledge.title":`Knowledge`,"knowledge.subtitle":`Docs, recipes and guides for this Forge — PT-BR first.`,"knowledge.search":`What do you want to solve?`,"knowledge.placeholder":`E.g.: how to analyze a Glue Job`,"knowledge.results":`{count, plural, one{# result} other{# results}}`,"knowledge.empty":`Nothing found — try another term.`,"knowledge.open":`Open document`,"knowledge.entities":`Observed entities`,"knowledge.noEntities":`No entity matches the filters.`,"knowledge.related":`Verifiable relations`,"knowledge.relatedEmpty":`No declared relation for this entity.`,"knowledge.sameDomain":`Skills in the same declared domain`,"knowledge.declaredBy":`Agents declaring this skill`,"knowledge.domainAgents":`Agents in the same declared domain`,"knowledge.entityDocs":`Documents about this entity`,"knowledge.entityDocsEmpty":`Docs search returned nothing for this entity name.`,"knowledge.entityDocsUnverified":`Docs search unverified for this entity.`,"knowledge.docs":`Documents`,"knowledge.docsHint":`Search this Forge's real documentation.`,"knowledge.docsUnavailable":`This Forge does not expose a docs search endpoint.`,"recommend.title":`Explainable recommendations`,"recommend.note":`Every recommendation shows its reason and the source (endpoint → field) backing it — nothing is inferred.`,"recommend.partial":`Some sources could not be verified — the list may be incomplete.`,"recommend.empty":`No recommendation derivable from the loaded data.`,"recommend.goto":`Open`,"recommend.sev.warning":`warning`,"recommend.sev.info":`info`,"recommend.kind.missingComponent":`Missing component`,"recommend.kind.incompleteConfig":`Incomplete configuration`,"recommend.kind.incompatibleDependency":`Incompatible dependency`,"recommend.kind.mcpUnavailable":`MCP unavailable`,"recommend.kind.recurringFailure":`Recurring failure`,"recommend.kind.relatedSkill":`Related skills`,"recommend.reason.missingComponent":`{forge} is listed in the federation catalog but has no recorded install.`,"recommend.reason.envMissing":`Required variable {name} is absent from the environment.`,"recommend.reason.envInvalid":`Required variable {name} is present but reported invalid.`,"recommend.reason.hostNotIntegrated":`Host {host} detected, but integration is still NOT_DETECTED.`,"recommend.reason.hostUnsupported":`Host {host} detected and reported as unsupported.`,"recommend.reason.mcpState":`{id} reports state {state}.`,"recommend.reason.recurringFailure":`{count} executions of verb {verb} ended refused or without an ok status.`,"recommend.reason.sameDomain":`{count} skills share the declared domain {domain}.`,"settings.title":`Settings`,"settings.subtitle":`Language, theme and portal preferences.`,"settings.language":`Language`,"settings.language.auto":`Automatic`,"settings.language.pt":`Português (Brasil)`,"settings.language.en":`English`,"settings.theme":`Theme`,"settings.theme.light":`Light`,"settings.theme.dark":`Dark`,"settings.theme.system":`System`,"settings.about":`About`,"settings.forge":`Forge`,"settings.version":`Version`,"settings.portalVersion":`Portal version`,"settings.cli":`CLI`,"settings.federated":`Federated`,"error.title":`Something went wrong`,"error.unreachable":`The portal server did not respond — is it running?`,"error.session":`Invalid or expired session — reopen the portal from the CLI.`,"error.forbidden":`Operation not allowed in this session.`,"error.notFound":`Not found.`,"error.generic":`Operation failed.`,"error.retry":`Retry`,"error.details":`Technical details`,"empty.noData":`Nothing to show yet.`,"empty.noData.hint":`Data appears when the Forge produces it — nothing is invented.`,"empty.notInstalled":`This Forge is not installed yet.`,"empty.notInstalled.hint":`Install it to see real state, hosts, MCP and catalogs.`,"empty.goInstall":`Go to Installation`,"notify.success":`Done`,"notify.error":`Failed`,"notify.dismiss":`Dismiss`,"table.id":`ID`,"table.host":`Host`,"table.task":`Task`,"table.verb":`Verb`,"table.stage":`Stage`,"table.exit":`Exit`,"nav.forges":`Forges`,"nav.config":`Configuration`,"notify.region":`Notifications`,"common.updatedAt":`updated {time}`,"command.kind.page":`Pages & actions`,"command.kind.forge":`Forges`,"command.kind.capability":`Capabilities`,"command.kind.skill":`Skills`,"command.kind.agent":`Agents`,"command.kind.mcp":`MCP`,"command.kind.host":`Hosts`,"command.kind.doc":`Documents`,"command.kind.operation":`Operations`,"command.kind.error":`Known errors`,"command.filters":`Filter by type`,"command.searching":`Searching…`,"command.footer":`↑↓ navigate · ←→ filter · Enter open · Esc close`,"command.unverified":`Source unverified for this search`,"dashboard.forges":`Discovered Forjas`,"dashboard.forges.hint":`The serving Forja plus specialists from the federation registry.`,"dashboard.inventory":`Inventory`,"dashboard.inventory.hint":`Live counts read from each catalog endpoint.`,"federation.unavailable":`This Forja does not expose a federation registry — data unverified.`,"explorer.title":`Forja explorer`,"explorer.subtitle":`Every Forja this workspace can verify — the serving Forja plus federation specialists.`,"explorer.serving":`serving`,"explorer.registryOnly":`Registry entry only — never observed live.`,"explorer.empty":`No Forja could be discovered.`,"explorer.notFound":`No Forja with this identity in the federation snapshot.`,"explorer.back":`All Forjas`,"explorer.detail.subtitle":`Fields verified by the portal and the federation registry — absent data is marked, never filled in.`,"explorer.identity":`Identity`,"explorer.presence":`Presence`,"explorer.notes":`Notes`,"explorer.checkout":`Checkout`,"registry.title":`Registry operations`,"registry.hint":`Every verb goes through plan → review → explicit confirm via forge-cli — nothing runs without the plan token.`,"registry.forge":`Forja`,"registry.forge.hint":`forge name (e.g. forge-doctor-api)`,"registry.op":`Operation`,"registry.state":`Registry state`,"registry.absent":`No registry state — nothing installed via forge-cli yet.`,"registry.malformed":`The state file exists but is malformed.`,"registry.unavailable":`Registry state could not be verified.`,"registry.none":`No Forja installed via registry.`,"registry.cliUnavailable":`forge-cli is not installed — registry operations need it.`,"registry.planning":`Planning via forge-cli…`,"registry.review":`Review plan`,"registry.review.hint":`The plan below came from forge-cli — confirm to actually execute.`,"registry.executing":`Executing via forge-cli…`,"registry.receipt":`Operation result`,"registry.newOp":`New operation`,"registry.method":`Method`,"registry.installedAt":`Installed at`,"registry.pinned":`pinned at`,"registry.colOps":`Actions`,"registry.previewEmpty":`The plan carried no details.`,"registry.action.install":`Install`,"registry.action.update":`Update`,"registry.action.reinstall":`Reinstall`,"registry.action.rollback":`Rollback`,"registry.action.pin":`Pin`,"registry.action.unpin":`Unpin`,"registry.action.repair":`Repair`,"registry.action.uninstall":`Uninstall`,"registry.action.verify":`Verify`,"registry.toast.planned":`Plan ready: {action} on {forge}.`,"registry.toast.executed":`{action} on {forge}: {status}.`,"install.step.discover":`Discover`,"install.step.select":`Select`,"install.step.reviewDiff":`Review diff`,"install.step.confirm":`Confirm`,"install.step.execute":`Execute`,"install.step.verify":`Verify`,"install.step.receipt":`Receipt`,"install.discover.hosts":`AI hosts detected in this environment`,"install.planning":`Computing the installation plan…`,"install.diff.none":`The backend provided no field-level diff — reviewing actions.`,"install.confirm.hint":`Review the plan above. Execution only happens after explicit confirmation.`,"install.confirm.execute":`Confirm and execute`,"install.confirm.back":`Back`,"install.confirm.next":`Continue`,"install.executing":`Executing the approved plan…`,"install.verify.running":`Revalidating the post-install state…`,"install.verify.unverified":`The backend returned no checks — verification unconfirmed.`,"install.reinstall":`Reinstall`,"install.newPlan":`New plan`,"install.flow.hint":`Nothing executes without a reviewed plan and explicit confirmation — same as the CLI.`,"install.ops.title":`Operations`,"install.ops.update":`Update`,"install.ops.update.hint":`Update via portal is not exposed by this adapter — path unverified.`,"install.ops.repair.hint":`Re-runs checks and repairs divergent entries.`,"config.title":`Configuration center`,"config.subtitle":`This Forja's environment variables — metadata only, never values.`,"config.alert.missing":`Missing or invalid required variables prevent the Forja from operating.`,"config.env.prefix":`Prefix`,"config.env.scope":`Scope`,"config.env.aliases":`Windows aliases`,"config.col.name":`Variable`,"config.col.required":`Required`,"config.col.present":`Present`,"config.col.valid":`Valid`,"config.col.kind":`Kind`,"config.col.path":`Path`,"config.prepare.title":`Prepare changes`,"config.prepare.hint":`Ready-to-paste shell commands — the portal never writes variables for you.`,"config.prepare.none":`No pending variables — environment ready.`,"config.apply.title":`Apply changes`,"config.apply.portal":`Apply via portal`,"config.apply.unsupported":`This adapter does not expose configuration writes — path unverified.`,"config.profiles.link":`View component profiles`,"config.profiles.hint":`Profiles define which components each installation enables.`,"profiles.compare":`Compare profiles`,"profiles.compare.hint":`Select two profiles to see the component differences.`,"profiles.compare.a":`Profile A`,"profiles.compare.b":`Profile B`,"profiles.compare.component":`Component`,"profiles.compare.differences":`{count} differences`,"profiles.compare.same":`Identical profiles`,"nav.match":`Match`,"hosts.launchable":`Launchable by the portal`,"hosts.commandHint":`Command for your terminal`,"hosts.request":`Request integration`,"hosts.ops.plan":`Plan integration`,"hosts.ops.files":`Inspect affected files`,"hosts.ops.fix":`Fix integration`,"hosts.ops.disable":`Disable integration`,"hosts.ops.unsupported":`Op not exposed by this adapter — unverified`,"mcp.safety":`Handshake verification is read-only — the portal never invokes MCP tools.`,"mcp.host.unbound":`not host-bound`,"mcp.host.open":`Open this host on the Hosts page`,"mcp.inspector":`Inspector`,"mcp.selectHint":`Select a server in the registry to inspect it.`,"mcp.detail":`Detail`,"mcp.explain.NOT_CONFIGURED":`Declared but not configured for any host.`,"mcp.explain.CONFIGURED":`Configured — no handshake performed yet.`,"mcp.explain.STARTING":`Server process starting — handshake in progress.`,"mcp.explain.HANDSHAKE_VERIFIED":`The initialize handshake was verified against the real server.`,"mcp.explain.TOOLS_DISCOVERED":`Tool discovery was verified after the handshake.`,"mcp.explain.INVOCATION_VERIFIED":`An invocation probe was verified by the adapter.`,"mcp.explain.DEGRADED":`The server responded, but the adapter reports degraded evidence.`,"mcp.explain.FAILED":`The last verification attempt failed — see the detail.`,"mcp.surface.tools":`Tools`,"mcp.surface.resources":`Resources`,"mcp.surface.prompts":`Prompts`,"mcp.surface.notExposed":`Surface not exposed by this adapter — unverified.`,"mcp.surface.countOnly":`Only the tool count is reported — names are not exposed.`,"mcp.surface.noTools":`The adapter did not report a tool count — unverified.`,"mcp.receipt.latency":`portal-measured latency`,"mcp.receipt.latencyHint":`HTTP round-trip measured by the portal — not MCP protocol latency.`,"mcp.verifying":`Verifying handshake…`,"mcp.compat.title":`Compatibility report`,"mcp.compat.hint":`Observed state vs the expected handshake progression — per server.`,"mcp.diag.title":`Diagnostics`,"mcp.diag.hint":`Servers in FAILED or DEGRADED state — evidence first, then re-verify.`,"agents.detail":`Details`,"agents.responsibility":`Responsibility`,"agents.origin":`Origin Forja`,"agents.compatibleHosts":`Compatible hosts`,"agents.tools":`Tools / MCP`,"agents.permissions":`Permissions`,"agents.deps":`Dependencies`,"agents.evidence":`Evidence`,"agents.notExposed":`Not exposed by this adapter — unverified`,"skills.detail.description":`Description`,"skills.origin":`Origin Forja`,"skills.compatibility":`Compatible hosts`,"skills.prerequisites":`Prerequisites`,"skills.fileValidation":`File validation`,"skills.deps":`Dependencies`,"skills.actions":`Install / repair`,"skills.actionsUnverified":`Install/repair ops are not exposed by this adapter — unverified`,"skills.notExposed":`Not exposed by this adapter — unverified`,"skills.agentsLink":`Declaring agents`,"skills.evidence":`Evidence`,"skills.dedup.title":`Name collisions`,"skills.dedup.hint":`Same-name rows are flagged for review — never merged.`,"skills.dedup.possible":`possible duplicate`,"skills.dedup.different":`same name, different entity`,"match.title":`Capability match`,"match.subtitle":`Which agent, skill, Forja or MCP covers a capability — answered from real catalog metadata only.`,"match.placeholder":`E.g.: pyspark glue, api contracts, graph…`,"match.hint":`Try: which agent works with X? · which skill supports Y? · which Forja covers Z?`,"match.empty":`No catalog entry matches that capability.`,"match.limitation":`Only catalog metadata searched — runtime capability unverified.`,"match.evidence":`Evidence`,"nav.observe":`Observability`,"nav.versions":`Versions`,"tasks.correlation":`Correlation`,"tasks.events":`View correlated events`,"tasks.executing":`Executing plan…`,"tasks.export":`Export receipt`,"tasks.stale.title":`Plan expired`,"tasks.stale.hint":`The plan token is stale — generate a new plan for the same intent. Execution never retries on its own.`,"tasks.stale.regenerate":`Regenerate plan`,"tasks.ops.title":`Operations`,"tasks.ops.plan.hint":`Builds a plan from the intent — nothing runs yet.`,"tasks.ops.execute.hint":`Executes a reviewed plan, bound to its plan token.`,"tasks.ops.cancel.hint":`Cancel op not exposed by the adapter.`,"tasks.limits":`Mutating ops are rate-limited and bound to a plan token; stage transitions come from real task records.`,"table.correlation":`Correlation`,"table.duration":`Duration`,"observe.title":`Observability`,"observe.subtitle":`Local metrics recorded by this Forge — no remote telemetry.`,"observe.localOnly":`Local-only metrics — nothing leaves this machine.`,"observe.unavailable":`This Forge does not expose local metrics — the capability is unverified, never assumed.`,"observe.counters":`Counters`,"observe.events":`Events`,"observe.generatedAt":`generated {time}`,"observe.truncated":`Showing a bounded window — older events were dropped to keep the report small.`,"observe.filter.kind":`Kind`,"observe.filter.status":`Status`,"observe.filter.corr":`Correlation`,"observe.col.kind":`Kind`,"observe.col.at":`At`,"observe.col.duration":`Duration`,"observe.col.status":`Status`,"observe.col.origin":`Origin`,"observe.col.correlation":`Correlation`,"observe.col.detail":`Detail`,"observe.empty":`No events recorded yet.`,"observe.empty.hint":`Metrics appear when the Forge runs tasks, installs or verifications.`,"observe.noMatches":`No events match the current filters.`,"nav.execution":`Execution`,"execution.title":`Execution`,"execution.subtitle":`Recorded execution events — real timestamps, real gaps, no simulation.`,"execution.localOnly":`Local event buffer only — nothing leaves this machine.`,"execution.unavailable":`This Forge does not record execution events — the capability is unverified, never assumed.`,"execution.summary":`Recorded window`,"execution.count.events":`events`,"execution.count.executions":`executions`,"execution.count.dropped":`dropped`,"execution.count.capacity":`capacity`,"execution.truncated":`Showing a bounded window — {dropped} older event(s) were evicted to keep the buffer small.`,"execution.timeline.title":`Executions`,"execution.timeline.hint":`One row per correlation — bars cover first→last recorded timestamp; ticks are recorded events; span underlays derive from recorded duration only.`,"execution.timeline.unplaced":`{count} event(s) carry no timestamp — real, undrawn.`,"execution.timeline.empty":`No event carries a usable timestamp.`,"execution.unlinked":`unlinked`,"execution.replay.title":`Replay`,"execution.replay.hint":`Playback of recorded events in real order — gaps scaled by speed, compressed gaps marked ⇥.`,"execution.replay.prev":`Previous`,"execution.replay.next":`Next`,"execution.replay.play":`Play`,"execution.replay.pause":`Pause`,"execution.replay.speed":`speed`,"execution.replay.step":`step {current} of {total}`,"execution.replay.gap":`recorded gap to the previous event`,"execution.replay.compressed":`real gap beyond the playback cap — shown real, waited less`,"execution.noTimestamp":`no recorded timestamp`,"execution.events":`Events`,"execution.filter.type":`Type`,"execution.filter.status":`Status`,"execution.filter.corr":`Correlation`,"execution.filter.search":`Search`,"execution.col.type":`Type`,"execution.col.at":`At`,"execution.col.status":`Status`,"execution.col.flow":`Source → target`,"execution.col.duration":`Duration`,"execution.col.correlation":`Correlation`,"execution.empty":`No events recorded yet.`,"execution.empty.hint":`Events appear when the portal and its adapter handle operations — starts, ends, refusals and domain emits.`,"execution.noMatches":`No events match the current filters.`,"execution.insp.schema":`Schema`,"execution.insp.at":`Recorded at`,"execution.insp.status":`Status`,"execution.insp.duration":`Duration`,"execution.insp.correlation":`Correlation`,"execution.insp.span":`Span`,"execution.insp.parent":`Parent span`,"execution.insp.trace":`Trace`,"execution.insp.source":`Source`,"execution.insp.target":`Target`,"execution.insp.task":`Task`,"execution.insp.causedBy":`Parent span observed in:`,"execution.insp.metadata":`Metadata`,"execution.insp.evidence":`Evidence`,"execution.insp.related":`Related events`,"nav.lab":`Lab`,"lab.title":`Forge Lab`,"lab.subtitle":`Benchmark runs, scenario catalog and comparisons — real receipts only.`,"lab.unavailable":`The /lab endpoint is absent on this adapter — lab data cannot be verified.`,"lab.empty.title":`No lab runs collected yet — Sem dados stays honest.`,"lab.empty.subtitle":`Run theforge lab collect — results appear here, never a mock.`,"lab.runs":`Run history`,"lab.catalog":`Scenario catalog`,"lab.reports":`Reports`,"lab.notes":`Collector notes`,"lab.compare.title":`Verdict comparison`,"lab.compare.a":`run A`,"lab.compare.b":`vs`,"lab.filter.all":`All forges`,"lab.export.json":`JSON`,"lab.export.md":`Markdown`,"lab.col.file":`run`,"lab.col.forges":`forges`,"lab.col.scenarios":`scenarios`,"lab.col.pass":`pass`,"lab.col.fail":`fail`,"lab.col.skipped":`skipped`,"lab.col.forge":`forge`,"lab.col.scenario":`scenario`,"lab.col.verdict":`verdict`,"lab.col.duration":`duration`,"lab.col.metrics":`metrics`,"lab.col.detail":`detail`,"versions.title":`Versions`,"versions.subtitle":`Installed version, compatibility and release history — offline-first.`,"versions.unavailable":`This Forge does not expose version info — the capability is unverified, never assumed.`,"versions.installed":`Installed`,"versions.installed.version":`Version`,"versions.installed.origin":`Origin`,"versions.installed.channel":`Channel`,"versions.compat":`Compatibility`,"versions.available":`Available`,"versions.available.version":`Latest`,"versions.available.source":`Source`,"versions.offline":`No remote release lookups in offline mode — the latest available version is unverified, never guessed.`,"versions.changelog":`Changelog`,"versions.history":`History`,"versions.history.version":`Version`,"versions.history.at":`At`,"versions.history.detail":`Detail`,"versions.history.empty":`No version history recorded yet.`,"versions.integrity":`Integrity`,"versions.integrity.release":`Manifest release`,"versions.integrity.sha256":`Manifest sha256`,"versions.pending":`Pending & upgrade plan`,"versions.pending.updates":`Pending updates`,"versions.pending.plan":`Upgrade plan`,"versions.pending.cli":`Update discovery belongs to the Forge CLI — the portal does not guess pending updates.`,"versions.receipts":`Receipts`,"versions.receipts.file":`Receipt`,"versions.receipts.operation":`Operation`,"versions.receipts.status":`Status`,"versions.rollback":`Rollback`,"dashboard.stat.registryInstalls":`Registry installs`,"dashboard.stat.discovered":`Discovered specialists`,"ops.alerts.title":`Actionable alerts`,"ops.alerts.hint":`Each alert opens the page where the problem is resolved — derived from observed signals only.`,"ops.alerts.empty":`No actionable alerts.`,"ops.alerts.emptyHint":`All observed signals are ok — alerts only appear when an endpoint reports a real problem.`,"ops.alert.installState":`The installation reports state {state}.`,"ops.alert.notInstalled":`This Forge is not installed.`,"ops.alert.checkFailed":`Check {id} failed.`,"ops.alert.env":`The account environment reports {state}.`,"ops.alert.specialist":`{forge} reports state {state}.`,"ops.alert.forgeNotInstalled":`{forge} is in the catalog but not installed.`,"ops.alert.mcpState":`MCP server {id} reports {state}.`,"ops.alert.mcpNotConfigured":`MCP server {id} is declared but not configured.`,"ops.alert.hostIntegration":`Host {host} integration reports {state}.`,"ops.alert.hostNotIntegrated":`Host {host} detected, integration not started.`,"ops.alert.tasksFailed":`{count, plural, one{# task failed} other{# tasks failed}} in this session.`,"ops.alert.registryMalformed":`The forge-cli registry state is malformed — receipts could not be read.`,"ops.alert.updateAvailable":`Update available: {version}.`,"ops.alert.pendingUpdates":`Pending updates reported by the backend.`,"ops.alert.noGraph":`No graph built yet.`,"ops.alert.goInstall":`Go to Installation`,"ops.alert.goConfig":`Go to Configuration`,"ops.alert.goForge":`Open Forge`,"ops.alert.goFederation":`Go to Forge family`,"ops.alert.goMcp":`Go to MCP`,"ops.alert.goHosts":`Go to hosts`,"ops.alert.goTasks":`Go to Tasks`,"ops.alert.goVersions":`Go to Versions`,"ops.alert.goGraph":`Go to Graph`,"ops.versions.title":`Installed versions`,"ops.versions.hint":`One row per real source — forge-cli receipts, bootstrap and federation.`,"ops.versions.col.installed":`Installed`,"ops.versions.col.pinned":`Pinned`,"ops.versions.col.method":`Method`,"ops.versions.col.source":`Source`,"ops.versions.update":`→ {version} available`,"ops.versions.empty":`No installed versions recorded.`,"ops.versions.emptyHint":`forge-cli receipts appear here when forges are installed via the registry.`,"ops.registry.unavailable":`This portal does not expose the forge-cli registry state — data unverified.`,"ops.diagnostics.title":`Diagnostics`,"ops.diagnostics.hint":`Shortcuts to the pages that investigate each signal.`,"agents.view.label":`View`,"agents.view.cards":`Cards`,"agents.view.table":`Table`,"agents.view.graph":`Graph`,"agents.declaredForge":`Declared Forja`,"agents.undeclared":`(not declared)`,"agents.compare.title":`Compare agents`,"agents.compare.pick":`Pick a second agent to compare.`,"agents.compare.clear":`Clear`,"agents.compare.add":`Compare`,"agents.compare.remove":`Remove from comparison`,"agents.compare.field":`Field`,"agents.compare.notDeclared":`not declared`,"agents.graph.hint":`Filtered view of the federated graph — the agents matching the filters plus the skills and Forjas their descriptors declare.`,"agents.graph.empty":`No agent matches the filters — the subgraph is empty.`,"agents.graph.aria":`Agent graph canvas — pan, zoom, drag and select nodes`,"table.name":`Name`,"table.actions":`Actions`,"table.started":`Started`,"table.finished":`Finished`,"tasks.timeline.title":`Execution timeline`,"tasks.timeline.hint":`Real task records positioned by their recorded start/end timestamps.`,"tasks.timeline.unplaced":`{count, plural, one{# record} other{# records}} without usable timestamps — not drawn.`,"tasks.timeline.empty":`No task record carries a usable timestamp.`,"tasks.refusal":`Refusal`,"tasks.replay.title":`Recorded events`,"tasks.replay.hint":`Playback of persisted /metrics events that share this task's correlation id — not a re-execution.`,"tasks.replay.step":`step {current} of {total}`,"tasks.replay.prev":`Previous`,"tasks.replay.next":`Next`,"tasks.replay.empty":`No recorded event shares this correlation id.`,"tasks.replay.noCorrelation":`This task record carries no correlation id — recorded events cannot be linked.`,"tasks.replay.unavailable":`The /metrics endpoint did not answer — recorded events are unverified.`,"nav.guide":`Guide`,"dashboard.lastArea":`Last area:`,"guide.title":`Portal guide`,"guide.subtitle":`Ecosystem concepts and where to start — always linked to the real pages.`,"guide.intro":`This guide explains the ecosystem vocabulary and points to the real page where each concept becomes action. Nothing here is a mandatory tutorial — read what you need, when you need it.`,"guide.toc":`Guide sections`,"guide.start.title":`Where to start`,"guide.start.body":`The portal is a read layer over the installed Forges — almost everything here is observed, not invented. Start at the Dashboard to see the ecosystem state: every card states which endpoint the data came from and when it was last updated.`,"guide.forge.title":`What is a Forge`,"guide.forge.body":`A Forge is an independent ecosystem product (spark-forge-aws, api-forge, platform-forge…). Under Forges you see which are installed, the state each one reports, and open the matching detail.`,"guide.agent.title":`What agents are`,"guide.agent.body":`Agents are specialized profiles declared by each Forge — coordinators and executors with declared domains and skills. The Agents page lists the real catalog; Match answers “which agent covers X”.`,"guide.skill.title":`What skills are`,"guide.skill.body":`Skills are reusable capabilities Forges publish for agents and hosts. The catalog shows declared domain, hosts and state — and flags name collisions when they exist.`,"guide.mcp.title":`What MCP is`,"guide.mcp.body":`Model Context Protocol (MCP) is the contract that exposes a Forge’s tools to AI hosts. The MCP page shows the registered servers and the real handshake state — verifying performs an actual handshake.`,"guide.graph.title":`Exploring graphs`,"guide.graph.body":`Graph Studio draws entities and relations extracted from the real descriptors. Use search, filters and groupings; select nodes and edges to see evidence; impact analysis shows multi-hop reach with the declared data coverage.`,"guide.install.title":`Installing components`,"guide.install.body":`Installation changes the file system — so every flow is plan → confirm → execute, with a signed plan and a receipt. Profiles define component sets; Hosts shows what the Forge detected on this machine.`,"guide.diagnose.title":`Diagnosing problems`,"guide.diagnose.body":`When something fails, start at the Dashboard: alerts derive from real signals and point to the page that resolves them. Tasks lists executions with stage and refusal; Observe shows the recorded events; errors carry code, explanation and next action.`,"guide.evidence.title":`Reading evidence`,"guide.evidence.body":`Evidence is what separates fact from assumption: receipts, correlation ids, timestamps and declared states come from the producer. Execution replays the recorded events — gaps render as gaps, never as simulated data.`,"hint.more":`Learn more`,"hint.dismiss":`Dismiss hint`,"hint.start":`Operational dashboard: each section states the real data source and when it was last updated.`,"hint.forge":`A Forge is an ecosystem product — here you see the installed ones and each one’s state.`,"hint.agent":`Agents are specialized profiles declared by the Forges — with declared domains, skills and hosts.`,"hint.skill":`Skills are reusable capabilities published by the Forges — the catalog shows real origin and state.`,"hint.mcp":`MCP is the protocol connecting Forges to AI hosts — the handshake state here is really verified.`,"hint.graph":`The graph shows observed entities and relations — select a node to see origin, neighbors and evidence.`,"hint.install":`Installation follows the plan → confirm → execute flow — nothing changes without your confirmed plan.`,"hint.diagnose":`Recorded tasks show stage, exit code and refusals — select one to see its timeline and evidence.`,"hint.evidence":`Real telemetry: every event carries the producer’s timestamp and correlation id — gaps render as gaps.`,"settings.density":`Visual density`,"settings.density.comfortable":`Comfortable`,"settings.density.compact":`Compact`,"settings.motion":`Animations`,"settings.motion.system":`System`,"settings.motion.full":`All`,"settings.motion.reduced":`Reduced`,"settings.hints":`Contextual hints`,"settings.hints.hint":`Dismissed hints appear again when you reset them.`,"settings.hints.reset":`Show hints again`,"settings.privacy":`Language, theme, density, animations, collapsed menu, last area and filters are stored only in this browser — nothing sensitive is saved.`,"err.explain.unreachable":`The server did not respond. Open the portal from the CLI and try again.`,"err.explain.session":`The local session expired or is invalid — reopen the portal from the CLI to get a new session.`,"err.explain.timeout":`The operation exceeded the server timeout — check Tasks to see whether it was recorded and its final stage.`,"err.explain.rateLimited":`Too many write actions in a row — wait a few seconds and try again.`,"err.explain.payload":`The request body exceeded the server’s 1 MiB limit.`,"err.explain.cli":`The Forge CLI is not available on PATH — the Installation page shows state and next steps.`,"err.explain.unsupported":`This Forge does not expose that capability — the dashboard lists what it declares as supported.`,"err.explain.hostAbsent":`The requested host was not detected on this machine — Hosts shows what was found.`,"err.explain.forge":`The operation failed on the target Forge — federation shows the state each one reports.`,"err.explain.notFound":`The requested resource does not exist on this portal — go back to the dashboard and use the menu.`,"err.explain.internal":`Internal server error — Observe shows the events recorded around the failure.`,"err.explain.confirm":`The action requires explicit confirmation — redo the flow: plan → confirm → execute.`,"err.explain.plan":`The plan expired or does not match the requested action — generate a new plan before executing.`,"err.explain.secret":`An environment variable or secret is missing — the Config center shows what is missing.`,"err.explain.forbidden":`The current session does not allow this operation.`,"err.explain.unavailable":`The server refused the operation right now — try again shortly.`,"err.explain.request":`The request was refused before reaching the operation — invalid format or disallowed origin.`,"err.go.dashboard":`Go to dashboard`,"err.go.observe":`Go to Observe`};export{e as EN}; \ No newline at end of file diff --git a/portal/assets/chunk-BiLsIL6D.js b/portal/assets/chunk-BiLsIL6D.js deleted file mode 100644 index ac9f0f1..0000000 --- a/portal/assets/chunk-BiLsIL6D.js +++ /dev/null @@ -1 +0,0 @@ -import{r as k}from"./chunk-DjkjLihA.js";import{$ as da,Et as p,F as Wm,Gt as wS,K as aC,Lt as tn,M as Ta,Mt as sC,N as Uh,P as WS,Pt as tC,Q as cE,Qt as z$,Tt as oC,U as _a,V as _S,X as bS,Xt as yd,Yt as yc,Z as ba,_t as kU,at as ey,ct as gS,h as Jm,ht as jh,it as ei,kt as rE,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,xt as nC,yt as mS,z as Ym,zt as uS}from"./chunk-BelLryvf.js";import{r as g$1,t as g}from"./main-A2NKRJGT.js";import{a as l,o as w,r as f,s as y}from"./chunk-0WpwvubF.js";import{t as _}from"./chunk-BKRLVsID.js";import{t as D}from"./chunk-CiuPOfJ0.js";import{n as k$1,t as I}from"./chunk-D2KAfPv6.js";import{t as T}from"./chunk-BBusSOqc.js";import{t as F}from"./chunk-DQvfYR07.js";function W(e){let i=(e.stage||``).toLowerCase();return[`failed`,`refused`,`cancelled`].includes(i)?!0:e.exit_code!==null&&e.exit_code!==0}var fe={error:0,warn:1,info:2};function S(e,i,a,_,f,I={}){return k({severity:e,id:i,titleKey:a,route:_,linkKey:f,icon:`alert`},I)}function ye(e){let i=[],{health:a,accountEnvironment:_,federation:f,mcpServers:I,hosts:w,tasks:M,registry:y,versions:h,graphs:E}=e,T=a?.state;T===`FAILED`||T===`BLOCKED`?i.push(S(`error`,`install-state`,`ops.alert.installState`,`/install`,`ops.alert.goInstall`,{params:{state:T??``}})):T===`DEGRADED`?i.push(S(`warn`,`install-state`,`ops.alert.installState`,`/install`,`ops.alert.goInstall`,{params:{state:T??``}})):T===`NOT_INSTALLED`&&i.push(S(`warn`,`install-state`,`ops.alert.notInstalled`,`/install`,`ops.alert.goInstall`));for(let r of a?.checks??[])r.state===`FAIL`&&i.push(S(`error`,`check-${r.id}`,`ops.alert.checkFailed`,`/install`,`ops.alert.goInstall`,{params:{id:r.id},detail:r.detail}));let F=_?.state;F===`MISSING`||F===`INVALID`?i.push(S(`error`,`env`,`ops.alert.env`,`/config`,`ops.alert.goConfig`,{params:{state:F}})):F===`PARTIAL`&&i.push(S(`warn`,`env`,`ops.alert.env`,`/config`,`ops.alert.goConfig`,{params:{state:F}}));for(let r of f?.specialists??[]){let R=r.state??r.status??``;R===`FAILED`||R===`BLOCKED`?i.push(S(`error`,`spec-${r.provider}`,`ops.alert.specialist`,[`/forges`,r.provider],`ops.alert.goForge`,{params:{forge:r.provider,state:R}})):R===`NOT_INSTALLED`&&i.push(S(`warn`,`spec-${r.provider}`,`ops.alert.forgeNotInstalled`,`/federation`,`ops.alert.goFederation`,{params:{forge:r.provider}}))}for(let r of I??[])r.state===`FAILED`?i.push(S(`error`,`mcp-${r.id}`,`ops.alert.mcpState`,`/mcp`,`ops.alert.goMcp`,{params:{id:r.id,state:r.state},detail:r.detail})):r.state===`DEGRADED`?i.push(S(`warn`,`mcp-${r.id}`,`ops.alert.mcpState`,`/mcp`,`ops.alert.goMcp`,{params:{id:r.id,state:r.state},detail:r.detail})):r.state===`NOT_CONFIGURED`&&i.push(S(`info`,`mcp-${r.id}`,`ops.alert.mcpNotConfigured`,`/mcp`,`ops.alert.goMcp`,{params:{id:r.id}}));for(let r of w??[])r.integration===`FAILED`||r.integration===`BLOCKED`?i.push(S(`error`,`host-${r.host}`,`ops.alert.hostIntegration`,`/hosts`,`ops.alert.goHosts`,{params:{host:r.host,state:r.integration},detail:r.detail})):r.detected&&r.integration===`NOT_DETECTED`&&i.push(S(`info`,`host-${r.host}`,`ops.alert.hostNotIntegrated`,`/hosts`,`ops.alert.goHosts`,{params:{host:r.host}}));let $=(M??[]).filter(W).length;$>0&&i.push(S(`error`,`tasks-failed`,`ops.alert.tasksFailed`,`/tasks`,`ops.alert.goTasks`,{params:{count:$}})),y?.error===`malformed`&&i.push(S(`warn`,`registry-malformed`,`ops.alert.registryMalformed`,`/versions`,`ops.alert.goVersions`));let L=h?.available?.version,U=h?.installed?.version;return L&&L!==U?i.push(S(`info`,`update-available`,`ops.alert.updateAvailable`,`/versions`,`ops.alert.goVersions`,{params:{version:L}})):h?.pending&&i.push(S(`info`,`pending-updates`,`ops.alert.pendingUpdates`,`/versions`,`ops.alert.goVersions`)),E?.availability?.state===`no_graph`&&i.push(S(`info`,`graph-empty`,`ops.alert.noGraph`,`/graph`,`ops.alert.goGraph`)),i.sort((r,R)=>fe[r.severity]-fe[R.severity])}function he(e){let{registry:i,federation:a,descriptor:_,versions:f$1}=e,I=new Map,w=y=>{let h=I.get(y);return h||(h={id:y,serving:!1,version:null,pinned:null,method:null,source:``,updateTo:null},I.set(y,h)),h};if(i?.present)for(let[y,h]of Object.entries(i.forges)){let E=w(y);E.version=h.version??E.version,E.pinned=h.pinned??E.pinned,E.method=h.method??E.method,E.source=`GET /api/v1/registry/state`}if(_){let y=w(_.forge_id);y.serving=!0,y.version=y.version??_.forge_version,y.source||(y.source=`bootstrap`)}for(let y of a?.specialists??[]){let h=w(y.provider);h.version=h.version??f(y),h.source||(h.source=`GET /api/v1/federation`)}let M=f$1?.available?.version;return _&&M&&M!==f$1?.installed?.version&&(w(_.forge_id).updateTo=M),[...I.values()].sort((y,h)=>y.serving!==h.serving?y.serving?-1:1:y.id.localeCompare(h.id))}function xe(e){return!e||!e.present?null:Object.keys(e.forges).length}var G=e=>({time:e});var Se=e=>[`/forges`,e];var Ce=e=>({version:e});var Ee=()=>[`/tasks`];var ke=e=>({task:e});var Pe=(e,i)=>i.route;var H=(e,i)=>i.id;function Ie(e,i){e&1&&(da(0,`div`,3),oC(1,`t`),ba(2,`ui-skeleton`,4)(3,`ui-skeleton`,5),yd()),e&2&&(Ar(`aria-label`,sC(1,2,`state.loading`)),hD(3),Wm(`lines`,4))}function De(e,i){e&1&&(da(0,`code`,9),WS(1),yd()),e&2&&(hD(),Dd(`v`,i))}function Ne(e,i){e&1&&(da(0,`span`,10),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`settings.federated`)))}function we(e,i){e&1&&(WS(0),oC(1,`t`)),e&2&&Dd(` `,i.profile??sC(1,1,`state.none`),` `)}function Te(e,i){e&1&&ba(0,`ui-state-badge`,16)}function Be(e,i){e&1&&ba(0,`ui-state-badge`,13),e&2&&Wm(`state`,i.state)}function Me(e,i){e&1&&ba(0,`ui-state-badge`,17)}function Fe(e,i){if(e&1&&(da(0,`span`,14),ba(1,`ui-icon`,50),WS(2),oC(3,`t`),da(4,`a`,51),WS(5),oC(6,`t`),yd()()),e&2){let a=i;hD(),Wm(`size`,13),hD(),Dd(` `,sC(3,4,`dashboard.lastArea`),` `),hD(2),Wm(`routerLink`,a.url),hD(),Jm(a.labelKey?sC(6,6,a.labelKey):a.url)}}function Oe(e,i){if(e&1&&(da(0,`span`),WS(1),oC(2,`t`),yd()),e&2){let a=bS(2);hD(),Dd(` · `,aC(2,1,`common.updatedAt`,nC(4,G,a.stamp(i))))}}function Ae(e,i){if(e&1&&WS(0),e&2){let a=bS(2);Dd(` `,a.registryCount(),` `)}}function Ve(e,i){e&1&&ba(0,`ui-state-badge`,16)}function ze(e,i){e&1&&WS(0),e&2&&Dd(` `,i.specialists.length,` `)}function Le(e,i){e&1&&ba(0,`ui-state-badge`,16)}function Re(e,i){if(e&1&&(da(0,`span`),WS(1),oC(2,`t`),yd()),e&2){let a=bS(2);hD(),Dd(` · `,aC(2,1,`common.updatedAt`,nC(4,G,a.stamp(i))))}}function Ge(e,i){if(e&1&&(da(0,`span`,26),WS(1),yd()),e&2){let a=bS(2);Ar(`data-alerts`,a.alerts().length),hD(),Jm(a.alerts().length)}}function $e(e,i){e&1&&(da(0,`div`,28),ba(1,`ui-skeleton`,5),yd()),e&2&&(hD(),Wm(`lines`,3))}function Ke(e,i){if(e&1&&(da(0,`small`,55),WS(1),yd()),e&2){let a=bS().$implicit;hD(),Jm(a.detail)}}function He(e,i){if(e&1&&(da(0,`li`,52),ba(1,`ui-icon`,53),da(2,`div`,54)(3,`span`),WS(4),oC(5,`t`),yd(),uS(6,Ke,2,1,`small`,55),yd(),da(7,`a`,56),WS(8),oC(9,`t`),ba(10,`ui-icon`,37),yd()()),e&2){let a=i.$implicit;Ar(`data-severity`,a.severity)(`data-alert-id`,a.id),hD(),Wm(`size`,15),hD(3),Jm(aC(5,8,a.titleKey,a.params)),hD(2),fS(a.detail?6:-1),hD(),Wm(`routerLink`,a.route),hD(),Jm(sC(9,11,a.linkKey)),hD(2),Wm(`size`,13)}}function Ue(e,i){if(e&1&&(da(0,`ul`,29),gS(1,He,11,13,`li`,52,H),yd()),e&2){let a=bS(2);hD(),mS(a.alerts())}}function je(e,i){e&1&&(ba(0,`ui-empty`,30),oC(1,`t`),oC(2,`t`)),e&2&&Wm(`title`,sC(1,2,`ops.alerts.empty`))(`hint`,sC(2,4,`ops.alerts.emptyHint`))}function qe(e,i){if(e&1&&(da(0,`span`),WS(1),oC(2,`t`),yd()),e&2){let a=bS(2);hD(),Dd(` · `,aC(2,1,`common.updatedAt`,nC(4,G,a.stamp(i))))}}function Qe(e,i){e&1&&(da(0,`div`,32),ba(1,`ui-state-badge`,16),da(2,`span`),WS(3),oC(4,`t`),yd()()),e&2&&(hD(3),Jm(sC(4,1,`federation.unavailable`)))}function We(e,i){if(e&1){let a=wS();da(0,`ui-error`,57),Ta(`retry`,function(){jh(a);let f=bS(2);return Uh(f.loadFederation())}),yd()}e&2&&Wm(`error`,i)}function Je(e,i){e&1&&(da(0,`div`,28),ba(1,`ui-skeleton`,5),yd()),e&2&&(hD(),Wm(`lines`,3))}function Xe(e,i){e&1&&(da(0,`span`,60),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`explorer.serving`)))}function Ye(e,i){e&1&&ba(0,`ui-state-badge`,16)}function Ze(e,i){e&1&&(da(0,`span`,61),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`state.absent`)))}function et(e,i){if(e&1&&(da(0,`code`,62),WS(1),yd()),e&2){let a=bS().$implicit;Ar(`title`,a.checkout),hD(),Jm(a.checkout)}}function tt(e,i){e&1&&ba(0,`ui-state-badge`,16)}function it(e,i){if(e&1&&(da(0,`span`,61),WS(1),oC(2,`t`),yd()),e&2){let a=bS().$implicit;hD(),Jm(sC(2,1,a.mcp===null?`federation.mcpAbsent`:`federation.mcpReady`))}}function nt(e,i){if(e&1&&(da(0,`tr`)(1,`td`)(2,`a`,51),WS(3),yd(),uS(4,Xe,3,3,`span`,60),yd(),da(5,`td`),ba(6,`ui-state-badge`,13),yd(),da(7,`td`),uS(8,Ye,1,0,`ui-state-badge`,16)(9,Ze,3,3,`span`,61)(10,et,2,2,`code`,62),yd(),da(11,`td`),uS(12,tt,1,0,`ui-state-badge`,16)(13,it,3,3,`span`,61),yd()()),e&2){let a=i.$implicit;Ar(`data-serving`,a.serving||null),hD(2),Wm(`routerLink`,nC(7,Se,a.id)),hD(),Jm(a.name??a.id),hD(),fS(a.serving?4:-1),hD(2),Wm(`state`,a.state??`UNVERIFIED`),hD(2),fS(a.checkout===void 0?8:a.checkout===null?9:10),hD(4),fS(a.mcp===void 0?12:13)}}function at(e,i){if(e&1&&(da(0,`div`,34)(1,`table`,58)(2,`thead`)(3,`tr`)(4,`th`,59),WS(5),oC(6,`t`),yd(),da(7,`th`,59),WS(8),oC(9,`t`),yd(),da(10,`th`,59),WS(11),oC(12,`t`),yd(),da(13,`th`,59),WS(14),oC(15,`t`),yd()()(),da(16,`tbody`),gS(17,nt,14,9,`tr`,null,H),yd()()()),e&2){let a=bS(2);hD(5),Jm(sC(6,4,`table.id`)),hD(3),Jm(sC(9,6,`skills.state`)),hD(3),Jm(sC(12,8,`explorer.checkout`)),hD(3),Jm(sC(15,10,`mcp.title`)),hD(3),mS(a.forgesRows())}}function ot(e,i){e&1&&(ba(0,`ui-empty`,35),oC(1,`t`)),e&2&&Wm(`title`,sC(1,1,`federation.empty`))}function rt(e,i){if(e&1&&(da(0,`span`),WS(1),oC(2,`t`),yd()),e&2){let a=bS(2);hD(),Dd(` · `,aC(2,1,`common.updatedAt`,nC(4,G,a.stamp(i))))}}function st(e,i){if(e&1&&(da(0,`span`,63),ba(1,`ui-icon`,64),da(2,`span`,65),WS(3),yd(),ba(4,`i`,66),yd()),e&2){let a=i.$implicit,_=bS(3);Ar(`data-state`,a.state)(`title`,a.state),hD(),Wm(`name`,_.capIcon(a.id))(`size`,15),hD(2),Jm(a.id)}}function lt(e,i){if(e&1&&(da(0,`div`,39),gS(1,st,5,5,`span`,63,H),yd()),e&2){let a=bS(2);hD(),mS(a.store.capabilities())}}function dt(e,i){e&1&&(ba(0,`ui-empty`,40),oC(1,`t`)),e&2&&Wm(`title`,sC(1,1,`dashboard.none`))}function pt(e,i){if(e&1&&(da(0,`span`),WS(1),oC(2,`t`),yd()),e&2){let a=bS(2);hD(),Dd(` · `,aC(2,1,`common.updatedAt`,nC(4,G,a.stamp(i))))}}function ct(e,i){e&1&&(da(0,`div`,32),ba(1,`ui-state-badge`,16),da(2,`span`),WS(3),oC(4,`t`),yd()()),e&2&&(hD(3),Jm(sC(4,1,`ops.registry.unavailable`)))}function mt(e,i){if(e&1){let a=wS();da(0,`ui-error`,57),Ta(`retry`,function(){jh(a);let f=bS(2);return Uh(f.loadVersions())}),yd()}e&2&&Wm(`error`,i)}function _t(e,i){e&1&&(da(0,`div`,28),ba(1,`ui-skeleton`,5),yd()),e&2&&(hD(),Wm(`lines`,3))}function ut(e,i){e&1&&(da(0,`span`,60),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`explorer.serving`)))}function vt(e,i){if(e&1&&(da(0,`code`),WS(1),yd()),e&2){let a=bS().$implicit;hD(),Jm(a.version)}}function gt(e,i){e&1&&ba(0,`ui-state-badge`,16)}function ft(e,i){if(e&1&&(da(0,`span`,67),WS(1),oC(2,`t`),yd()),e&2){let a=i;Ar(`data-update`,a),hD(),Dd(` `,aC(2,2,`ops.versions.update`,nC(5,Ce,a)),` `)}}function yt(e,i){if(e&1&&(da(0,`code`),WS(1),yd()),e&2){let a=bS().$implicit;hD(),Jm(a.pinned)}}function ht(e,i){e&1&&(da(0,`span`,61),WS(1,`—`),yd())}function xt(e,i){if(e&1&&(da(0,`code`),WS(1),yd()),e&2){let a=bS().$implicit;hD(),Jm(a.method)}}function bt(e,i){e&1&&(da(0,`span`,61),WS(1,`—`),yd())}function St(e,i){if(e&1&&(da(0,`tr`)(1,`td`)(2,`a`,51),WS(3),yd(),uS(4,ut,3,3,`span`,60),yd(),da(5,`td`),uS(6,vt,2,1,`code`)(7,gt,1,0,`ui-state-badge`,16),uS(8,ft,3,7,`span`,67),yd(),da(9,`td`),uS(10,yt,2,1,`code`)(11,ht,2,0,`span`,61),yd(),da(12,`td`),uS(13,xt,2,1,`code`)(14,bt,2,0,`span`,61),yd(),da(15,`td`)(16,`code`,68),WS(17),yd()()()),e&2){let a,_=i.$implicit;Ar(`data-serving`,_.serving||null),hD(2),Wm(`routerLink`,nC(9,Se,_.id)),hD(),Jm(_.id),hD(),fS(_.serving?4:-1),hD(2),fS(_.version?6:7),hD(2),fS((a=_.updateTo)?8:-1,a),hD(2),fS(_.pinned?10:11),hD(3),fS(_.method?13:14),hD(4),Jm(_.source)}}function Ct(e,i){if(e&1&&(da(0,`div`,34)(1,`table`,58)(2,`thead`)(3,`tr`)(4,`th`,59),WS(5),oC(6,`t`),yd(),da(7,`th`,59),WS(8),oC(9,`t`),yd(),da(10,`th`,59),WS(11),oC(12,`t`),yd(),da(13,`th`,59),WS(14),oC(15,`t`),yd(),da(16,`th`,59),WS(17),oC(18,`t`),yd()()(),da(19,`tbody`),gS(20,St,18,11,`tr`,null,H),yd()()()),e&2){let a=bS(2);hD(5),Jm(sC(6,5,`table.id`)),hD(3),Jm(sC(9,7,`ops.versions.col.installed`)),hD(3),Jm(sC(12,9,`ops.versions.col.pinned`)),hD(3),Jm(sC(15,11,`ops.versions.col.method`)),hD(3),Jm(sC(18,13,`ops.versions.col.source`)),hD(3),mS(a.versionRows())}}function Et(e,i){e&1&&(ba(0,`ui-empty`,42),oC(1,`t`),oC(2,`t`)),e&2&&Wm(`title`,sC(1,2,`ops.versions.empty`))(`hint`,sC(2,4,`ops.versions.emptyHint`))}function kt(e,i){if(e&1&&(da(0,`span`,26),WS(1),yd()),e&2){let a=bS(2);Ar(`data-failures`,a.failures()),hD(),Jm(a.failures())}}function Pt(e,i){if(e&1&&(da(0,`span`),WS(1),oC(2,`t`),yd()),e&2){let a=bS(2);hD(),Dd(` · `,aC(2,1,`common.updatedAt`,nC(4,G,a.stamp(i))))}}function It(e,i){e&1&&(da(0,`div`,32),ba(1,`ui-state-badge`,16),da(2,`span`),WS(3),oC(4,`t`),yd()()),e&2&&(hD(3),Jm(sC(4,1,`federation.unavailable`)))}function Dt(e,i){if(e&1){let a=wS();da(0,`ui-error`,57),Ta(`retry`,function(){jh(a);let f=bS(2);return Uh(f.loadTasks())}),yd()}e&2&&Wm(`error`,i)}function Nt(e,i){e&1&&(da(0,`div`,28),ba(1,`ui-skeleton`,5),yd()),e&2&&(hD(),Wm(`lines`,3))}function wt(e,i){if(e&1&&(da(0,`tr`)(1,`td`)(2,`a`,69),WS(3),yd()(),da(4,`td`)(5,`code`),WS(6),yd()(),da(7,`td`),ba(8,`ui-state-badge`,70),yd(),da(9,`td`),WS(10),yd()()),e&2){let a=i.$implicit,_=bS(3);Ar(`data-fail`,_.taskFailed(a)||null),hD(2),Wm(`routerLink`,tC(8,Ee))(`queryParams`,nC(9,ke,a.id)),hD(),Jm(a.label),hD(3),Jm(a.verb),hD(2),Wm(`state`,_.taskState(a))(`labelOverride`,a.stage),hD(2),Jm(a.exit_code??`—`)}}function Tt(e,i){if(e&1&&(da(0,`div`,34)(1,`table`,58)(2,`thead`)(3,`tr`)(4,`th`,59),WS(5),oC(6,`t`),yd(),da(7,`th`,59),WS(8),oC(9,`t`),yd(),da(10,`th`,59),WS(11),oC(12,`t`),yd(),da(13,`th`,59),WS(14),oC(15,`t`),yd()()(),da(16,`tbody`),gS(17,wt,11,11,`tr`,null,H),yd()()()),e&2){let a=bS(2);hD(5),Jm(sC(6,4,`table.task`)),hD(3),Jm(sC(9,6,`table.verb`)),hD(3),Jm(sC(12,8,`table.stage`)),hD(3),Jm(sC(15,10,`table.exit`)),hD(3),mS(a.recentTasks())}}function Bt(e,i){e&1&&(ba(0,`ui-empty`,45),oC(1,`t`)),e&2&&Wm(`title`,sC(1,1,`tasks.empty`))}function Mt(e,i){if(e&1&&(da(0,`a`,49),ba(1,`ui-icon`,64),da(2,`span`,71),WS(3),oC(4,`t`),yd(),ba(5,`ui-icon`,37),yd()),e&2){let a=i.$implicit;Wm(`routerLink`,a.route),Ar(`data-shortcut`,a.id),hD(),Wm(`name`,a.icon)(`size`,16),hD(2),Jm(sC(4,6,a.labelKey)),hD(2),Wm(`size`,14)}}function Ft(e,i){if(e&1){let a=wS();da(0,`section`,6)(1,`div`,7)(2,`div`,8)(3,`strong`),WS(4),yd(),uS(5,De,2,1,`code`,9),uS(6,Ne,3,3,`span`,10),yd(),da(7,`button`,11),oC(8,`t`),Ta(`click`,function(){jh(a);let f=bS();return Uh(f.store.refreshHealth())}),ba(9,`ui-icon`,2),yd()(),da(10,`div`,12),ba(11,`ui-state-badge`,13),da(12,`span`,14),ba(13,`ui-icon`,15),WS(14),oC(15,`t`),yd(),da(16,`span`,14),WS(17),oC(18,`t`),uS(19,we,2,3)(20,Te,1,0,`ui-state-badge`,16),yd(),da(21,`span`,14),WS(22),oC(23,`t`),uS(24,Be,1,1,`ui-state-badge`,13)(25,Me,1,0,`ui-state-badge`,17),yd(),uS(26,Fe,7,8,`span`,14),yd(),da(27,`p`,18)(28,`code`),WS(29,`bootstrap · GET /api/v1/installation/status`),yd(),uS(30,Oe,3,6,`span`),yd()(),da(31,`section`,19)(32,`div`,20)(33,`div`,21)(34,`span`,22),ba(35,`ui-state-badge`,13),yd(),da(36,`span`,23),WS(37),oC(38,`t`),yd()(),da(39,`div`,21)(40,`span`,22),WS(41),yd(),da(42,`span`,23),WS(43),oC(44,`t`),yd()(),da(45,`div`,21)(46,`span`,22),WS(47),yd(),da(48,`span`,23),WS(49),oC(50,`t`),yd()(),da(51,`div`,21)(52,`span`,22),uS(53,Ae,1,1)(54,Ve,1,0,`ui-state-badge`,16),yd(),da(55,`span`,23),WS(56),oC(57,`t`),yd()(),da(58,`div`,21)(59,`span`,22),uS(60,ze,1,1)(61,Le,1,0,`ui-state-badge`,16),yd(),da(62,`span`,23),WS(63),oC(64,`t`),yd()(),da(65,`div`,21)(66,`span`,22),WS(67),yd(),da(68,`span`,23),WS(69),oC(70,`t`),yd()()(),da(71,`p`,18)(72,`code`),WS(73,`bootstrap · GET /api/v1/installation/status · GET /api/v1/registry/state · GET /api/v1/federation`),yd(),uS(74,Re,3,6,`span`),yd()(),da(75,`section`,24)(76,`div`,25)(77,`div`)(78,`h2`),WS(79),oC(80,`t`),uS(81,Ge,2,2,`span`,26),yd(),da(82,`p`,18)(83,`code`),WS(84),yd()()(),da(85,`button`,11),oC(86,`t`),Ta(`click`,function(){jh(a);let f=bS();return Uh(f.refreshAll())}),ba(87,`ui-icon`,2),yd()(),da(88,`p`,27),WS(89),oC(90,`t`),yd(),uS(91,$e,2,1,`div`,28)(92,Ue,3,0,`ul`,29)(93,je,3,6,`ui-empty`,30),yd(),da(94,`section`,31)(95,`div`,25)(96,`div`)(97,`h2`),WS(98),oC(99,`t`),yd(),da(100,`p`,18)(101,`code`),WS(102,`GET /api/v1/federation`),yd(),uS(103,qe,3,6,`span`),yd()(),da(104,`button`,11),oC(105,`t`),Ta(`click`,function(){jh(a);let f=bS();return Uh(f.loadFederation())}),ba(106,`ui-icon`,2),yd()(),da(107,`p`,27),WS(108),oC(109,`t`),yd(),uS(110,Qe,5,3,`div`,32),uS(111,We,1,1,`ui-error`,33),uS(112,Je,2,1,`div`,28),uS(113,at,19,12,`div`,34)(114,ot,2,3,`ui-empty`,35),da(115,`a`,36),WS(116),oC(117,`t`),ba(118,`ui-icon`,37),yd()(),da(119,`section`,38)(120,`div`,25)(121,`div`)(122,`h2`),WS(123),oC(124,`t`),yd(),da(125,`p`,18)(126,`code`),WS(127,`bootstrap`),yd(),uS(128,rt,3,6,`span`),yd()(),da(129,`button`,11),oC(130,`t`),Ta(`click`,function(){jh(a);let f=bS();return Uh(f.store.refreshHealth())}),ba(131,`ui-icon`,2),yd()(),uS(132,lt,3,0,`div`,39)(133,dt,2,3,`ui-empty`,40),yd(),ba(134,`inventory-panel`),da(135,`section`,41)(136,`div`,25)(137,`div`)(138,`h2`),WS(139),oC(140,`t`),yd(),da(141,`p`,18)(142,`code`),WS(143,`GET /api/v1/registry/state · bootstrap · GET /api/v1/federation · GET /api/v1/versions`),yd(),uS(144,pt,3,6,`span`),yd()(),da(145,`button`,11),oC(146,`t`),Ta(`click`,function(){jh(a);let f=bS();return Uh(f.loadVersions())}),ba(147,`ui-icon`,2),yd()(),da(148,`p`,27),WS(149),oC(150,`t`),yd(),uS(151,ct,5,3,`div`,32),uS(152,mt,1,1,`ui-error`,33),uS(153,_t,2,1,`div`,28),uS(154,Ct,22,15,`div`,34)(155,Et,3,6,`ui-empty`,42),da(156,`a`,43),WS(157),oC(158,`t`),ba(159,`ui-icon`,37),yd()(),da(160,`section`,44)(161,`div`,25)(162,`div`)(163,`h2`),WS(164),oC(165,`t`),uS(166,kt,2,2,`span`,26),yd(),da(167,`p`,18)(168,`code`),WS(169,`GET /api/v1/tasks`),yd(),uS(170,Pt,3,6,`span`),yd()(),da(171,`button`,11),oC(172,`t`),Ta(`click`,function(){jh(a);let f=bS();return Uh(f.loadTasks())}),ba(173,`ui-icon`,2),yd()(),uS(174,It,5,3,`div`,32),uS(175,Dt,1,1,`ui-error`,33),uS(176,Nt,2,1,`div`,28),uS(177,Tt,19,12,`div`,34)(178,Bt,2,3,`ui-empty`,45),da(179,`a`,46),WS(180),oC(181,`t`),ba(182,`ui-icon`,37),yd()(),da(183,`section`,47)(184,`div`,25)(185,`div`)(186,`h2`),WS(187),oC(188,`t`),yd()()(),da(189,`p`,27),WS(190),oC(191,`t`),yd(),da(192,`div`,48),gS(193,Mt,6,8,`a`,49,Pe),yd()()}if(e&2){let a,_,f,I,w,M,y,h,E,T,F,$,L,U,r=bS();hD(4),Jm(r.store.forgeName()),hD(),fS((a=r.descriptor()?.forge_version)?5:-1,a),hD(),fS(r.store.federated()?6:-1),hD(),Ar(`aria-label`,sC(8,88,`state.refresh`)),hD(2),Wm(`size`,14),hD(2),Wm(`state`,r.health()?.state??`UNVERIFIED`),hD(2),Wm(`size`,13),hD(),Dd(``,r.store.workspace()?.name??sC(15,90,`dashboard.noWorkspace`),` `),hD(3),Dd(` `,sC(18,92,`dashboard.profile`),`: `),hD(2),fS((_=r.health())?19:20,_),hD(3),Dd(` `,sC(23,94,`dashboard.accountEnvironment`),` `),hD(2),fS((f=r.store.accountEnvironment())?24:25,f),hD(2),fS((I=r.lastArea())?26:-1,I),hD(4),fS((w=r.store.refreshedAt())?30:-1,w),hD(3),_a(`--%NS%stat-rail`,`var(--accent)`),hD(2),Wm(`state`,r.health()?.state??`UNVERIFIED`),hD(2),Jm(sC(38,96,`dashboard.stat.state`)),hD(2),_a(`--%NS%stat-rail`,`var(--ok)`),hD(2),ey(``,r.capsSupported(),`/`,r.store.capabilities().length),hD(2),Jm(sC(44,98,`dashboard.stat.capabilities`)),hD(2),_a(`--%NS%stat-rail`,`var(--info)`),hD(2),ey(``,r.checksOk(),`/`,r.health()?.checks.length??0),hD(2),Jm(sC(50,100,`dashboard.stat.checks`)),hD(2),_a(`--%NS%stat-rail`,`var(--accent)`),hD(2),fS(r.registryCount()!==null?53:54),hD(3),Jm(sC(57,102,`dashboard.stat.registryInstalls`)),hD(2),_a(`--%NS%stat-rail`,`var(--info)`),hD(2),fS((M=r.fed.data())?60:61,M),hD(3),Jm(sC(64,104,`dashboard.stat.discovered`)),hD(2),_a(`--%NS%stat-rail`,`var(--fg-muted)`),hD(2),Jm(r.descriptor()?.portal_version??`—`),hD(2),Jm(sC(70,106,`dashboard.stat.portal`)),hD(5),fS((y=r.store.refreshedAt())?74:-1,y),hD(5),Dd(` `,sC(80,108,`ops.alerts.title`),` `),hD(2),fS(r.alerts().length?81:-1),hD(3),Dd(`derived · `,r.alertSources),hD(),Ar(`aria-label`,sC(86,110,`state.refresh`)),hD(2),Wm(`size`,14),hD(2),Jm(sC(90,112,`ops.alerts.hint`)),hD(2),fS(r.alertsLoading()?91:r.alerts().length?92:93),hD(7),Jm(sC(99,114,`dashboard.forges`)),hD(5),fS((h=r.fed.loadedAt())?103:-1,h),hD(),Ar(`aria-label`,sC(105,116,`state.refresh`)),hD(2),Wm(`size`,14),hD(2),Jm(sC(109,118,`dashboard.forges.hint`)),hD(2),fS(r.fed.unavailable()?110:-1),hD(),fS((E=r.fed.error())?111:-1,E),hD(),fS(r.fed.loading()&&!r.fed.data()?112:-1),hD(),fS(r.forgesRows().length?113:r.fed.attempted()&&!r.fed.loading()&&!r.fed.error()?114:-1),hD(3),Dd(` `,sC(117,120,`state.viewDetails`)),hD(2),Wm(`size`,14),hD(5),Jm(sC(124,122,`dashboard.capabilities`)),hD(5),fS((T=r.store.refreshedAt())?128:-1,T),hD(),Ar(`aria-label`,sC(130,124,`state.refresh`)),hD(2),Wm(`size`,14),hD(),fS(r.store.capabilities().length?132:133),hD(7),Jm(sC(140,126,`ops.versions.title`)),hD(5),fS((F=r.registrySrc.loadedAt())?144:-1,F),hD(),Ar(`aria-label`,sC(146,128,`state.refresh`)),hD(2),Wm(`size`,14),hD(2),Jm(sC(150,130,`ops.versions.hint`)),hD(2),fS(r.registrySrc.unavailable()?151:-1),hD(),fS(($=r.registrySrc.error())?152:-1,$),hD(),fS(r.versionsLoading()?153:-1),hD(),fS(r.versionRows().length?154:r.versionsSettled()?155:-1),hD(3),Dd(` `,sC(158,132,`state.viewDetails`)),hD(2),Wm(`size`,14),hD(5),Dd(` `,sC(165,134,`tasks.recent`),` `),hD(2),fS(r.failures()?166:-1),hD(4),fS((L=r.tasksSrc.loadedAt())?170:-1,L),hD(),Ar(`aria-label`,sC(172,136,`state.refresh`)),hD(2),Wm(`size`,14),hD(),fS(r.tasksSrc.unavailable()?174:-1),hD(),fS((U=r.tasksSrc.error())?175:-1,U),hD(),fS(r.tasksSrc.loading()&&!r.tasksSrc.data()?176:-1),hD(),fS(r.recentTasks().length?177:r.tasksSrc.attempted()&&!r.tasksSrc.loading()&&!r.tasksSrc.error()&&!r.tasksSrc.unavailable()?178:-1),hD(3),Dd(` `,sC(181,138,`state.viewDetails`)),hD(2),Wm(`size`,14),hD(5),Jm(sC(188,140,`ops.diagnostics.title`)),hD(3),Jm(sC(191,142,`ops.diagnostics.hint`)),hD(3),mS(r.shortcuts)}}var be=class e{store=p(g);api=p(g$1);prefs=p(rE);fed=new l;tasksSrc=new l;registrySrc=new l;mcpSrc=new l;hostsSrc=new l;versionsSrc=new l;graphsSrc=new l;inventory=kU(F);health=tn(()=>this.store.health());descriptor=tn(()=>this.store.descriptor());forgesRows=tn(()=>w(this.descriptor(),this.health(),this.fed.data()).slice(0,8));recentTasks=tn(()=>[...this.tasksSrc.data()??[]].sort((i,a)=>a.started_at.localeCompare(i.started_at)).slice(0,6));failures=tn(()=>this.recentTasks().filter(i=>this.taskFailed(i)).length);capsSupported=tn(()=>this.store.capabilities().filter(i=>i.state===`supported`).length);checksOk=tn(()=>(this.health()?.checks??[]).filter(i=>i.state===`PASS`).length);registryCount=tn(()=>xe(this.registrySrc.data()));lastArea=tn(()=>{let i=this.prefs.lastRoute();return!i||i===`/`||i===`/dashboard`?null:{url:i,labelKey:z$(i)}});opsSources=()=>[this.fed,this.tasksSrc,this.registrySrc,this.mcpSrc,this.hostsSrc,this.versionsSrc,this.graphsSrc];alertsLoading=tn(()=>this.opsSources().some(i=>i.loading()&&!i.attempted()));alerts=tn(()=>ye({health:this.health(),accountEnvironment:this.store.accountEnvironment(),federation:this.fed.data(),mcpServers:this.mcpSrc.data(),hosts:this.hostsSrc.data(),tasks:this.tasksSrc.data(),registry:this.registrySrc.data(),versions:this.versionsSrc.data(),graphs:this.graphsSrc.data()}));versionRows=tn(()=>he({registry:this.registrySrc.data(),federation:this.fed.data(),descriptor:this.descriptor(),versions:this.versionsSrc.data()}));versionsLoading=tn(()=>this.registrySrc.loading()&&!this.registrySrc.attempted());versionsSettled=tn(()=>this.registrySrc.attempted()&&!this.registrySrc.loading()&&!this.registrySrc.error()&&!this.registrySrc.unavailable());alertSources=`/health · /federation · /mcp/servers · /hosts · /tasks · /registry/state · /versions · /graphs`;shortcuts=[{id:`hosts`,route:`/hosts`,icon:`hosts`,labelKey:`nav.hosts`},{id:`observe`,route:`/observe`,icon:`pulse`,labelKey:`nav.observe`},{id:`config`,route:`/config`,icon:`key`,labelKey:`nav.config`},{id:`versions`,route:`/versions`,icon:`history`,labelKey:`nav.versions`},{id:`mcp`,route:`/mcp`,icon:`mcp`,labelKey:`nav.mcp`},{id:`tasks`,route:`/tasks`,icon:`tasks`,labelKey:`nav.tasks`}];stamp=y;capIcons={tasks:`tasks`,graph:`graph`,mcp:`mcp`,skills:`skills`,agents:`agents`,knowledge:`knowledge`,hosts:`hosts`,install:`install`,profiles:`profiles`,federation:`network`,scan:`search`,analyze:`search`,docs:`knowledge`};constructor(){this.refreshAll()}async refreshAll(){await Promise.allSettled([this.store.refreshHealth(),this.loadFederation(),this.loadTasks(),this.loadVersions(),this.loadMcp(),this.loadHosts(),this.loadGraphs(),this.inventory()?.loadCounts()??Promise.resolve()])}async loadFederation(){await this.fed.load(()=>this.api.federation())}async loadTasks(){await this.tasksSrc.load(()=>this.api.tasks())}async loadVersions(){await Promise.allSettled([this.registrySrc.load(()=>this.api.registryState()),this.versionsSrc.load(()=>this.api.versions())])}async loadMcp(){await this.mcpSrc.load(()=>this.api.mcpServers())}async loadHosts(){await this.hostsSrc.load(()=>this.api.hosts())}async loadGraphs(){await this.graphsSrc.load(()=>this.api.graphs())}taskFailed(i){return W(i)}taskState(i){let a=(i.stage||``).toLowerCase();return a===`completed`?`supported`:[`failed`,`refused`,`cancelled`].includes(a)?`error`:[`awaiting_approval`,`partial`].includes(a)?`warn`:[`running`,`planning`,`verifying`,`started`,`selected`].includes(a)?`info`:`muted`}capIcon(i){return this.capIcons[i]??`check`}static ɵfac=function(a){return new(a||e)};static ɵcmp=ei({type:e,selectors:[[`page-dashboard`]],viewQuery:function(a,_){a&1&&Ym(_.inventory,F,5),a&2&&_S()},decls:9,vars:11,consts:[[`hintId`,`start`,3,`title`,`subtitle`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[`role`,`status`,1,`boot`],[`kind`,`card`],[`kind`,`row`,3,`lines`],[`data-section`,`status`,1,`card`,`status`],[1,`status__top`],[1,`status__id`],[1,`ver`],[1,`fed`],[1,`icon-btn`,3,`click`],[1,`status__meta`],[3,`state`],[1,`meta`],[`name`,`folder`,3,`size`],[`state`,`UNVERIFIED`],[`state`,`MISSING`],[1,`src`],[`data-section`,`stats`],[1,`stats`,`stagger`],[1,`stat`],[1,`stat__value`],[1,`stat__label`],[`data-section`,`alerts`,1,`card`],[1,`sec__head`],[1,`failn`],[1,`muted`,`sec__hint`],[`role`,`status`],[1,`alerts`],[`icon`,`shield-check`,3,`title`,`hint`],[`data-section`,`forges`,1,`card`],[`role`,`note`,1,`unv`],[3,`error`],[1,`table-wrap`],[`icon`,`network`,3,`title`],[`routerLink`,`/forges`,1,`more`],[`name`,`chevron-right`,3,`size`],[`data-section`,`capabilities`,1,`card`],[1,`caps`],[`icon`,`dashboard`,3,`title`],[`data-section`,`versions`,1,`card`],[`icon`,`history`,3,`title`,`hint`],[`routerLink`,`/versions`,1,`more`],[`data-section`,`tasks`,1,`card`],[`icon`,`tasks`,3,`title`],[`routerLink`,`/tasks`,1,`more`],[`data-section`,`diagnostics`,1,`card`],[1,`shortcuts`],[1,`shortcut`,3,`routerLink`],[`name`,`history`,3,`size`],[1,`linklike`,3,`routerLink`],[1,`alert`],[`name`,`alert`,1,`alert__icon`,3,`size`],[1,`alert__body`],[1,`alert__detail`],[1,`alert__go`,3,`routerLink`],[3,`retry`,`error`],[1,`table`],[`scope`,`col`],[1,`chip`],[1,`muted`],[1,`path`],[1,`cap`],[3,`name`,`size`],[1,`cap__id`],[`aria-hidden`,`true`,1,`cap__dot`],[1,`chip`,`chip--update`],[1,`src-cell`],[1,`linklike`,3,`routerLink`,`queryParams`],[3,`state`,`labelOverride`],[1,`shortcut__label`]],template:function(a,_){a&1&&(da(0,`ui-page-header`,0),oC(1,`t`),oC(2,`t`),da(3,`button`,1),Ta(`click`,function(){return _.refreshAll()}),ba(4,`ui-icon`,2),WS(5),oC(6,`t`),yd()(),uS(7,Ie,4,4,`div`,3)(8,Ft,195,144)),a&2&&(Wm(`title`,sC(1,5,`dashboard.title`))(`subtitle`,sC(2,7,`dashboard.subtitle`)),hD(4),Wm(`size`,15),hD(),Dd(` `,sC(6,9,`state.refresh`),` `),hD(2),fS(_.store.status()===`booting`&&!_.health()?7:8))},dependencies:[yc,T,I,_,D,cE,k$1,F,aE],styles:[`.card[_ngcontent-%COMP%], .boot[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.status__top[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3)}.status__id[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);font-size:var(--%NS%font-lg);font-weight:700;letter-spacing:-.01em;min-width:0}.ver[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);font-weight:600;background:var(--%NS%accent-bg);color:var(--%NS%accent-ink);border-radius:var(--%NS%radius-pill);padding:1px 8px}.fed[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);font-weight:700;color:var(--%NS%accent-ink);border:1px solid color-mix(in srgb,var(--%NS%accent) 55%,transparent);border-radius:var(--%NS%radius-pill);padding:1px 8px;background:var(--%NS%accent-bg)}.status__meta[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-2) var(--%NS%space-4);margin-top:var(--%NS%space-3)}.meta[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted)}.src[_ngcontent-%COMP%]{margin:var(--%NS%space-3) 0 0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.sec__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650}.sec__head[_ngcontent-%COMP%] .src[_ngcontent-%COMP%]{margin-top:4px}.sec__hint[_ngcontent-%COMP%]{margin:2px 0 var(--%NS%space-3);font-size:var(--%NS%font-sm)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.stats[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:var(--%NS%space-4);margin-bottom:var(--%NS%space-4)}.unv[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-3);margin-bottom:var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto;margin-top:var(--%NS%space-2)}.path[_ngcontent-%COMP%]{display:inline-block;max-width:34ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.chip[_ngcontent-%COMP%]{margin-left:6px}.chip--update[_ngcontent-%COMP%]{color:var(--%NS%info);background:var(--%NS%info-bg)}.src-cell[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.more[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;min-height:24px;margin-top:var(--%NS%space-3);padding-block:2px;font-size:var(--%NS%font-sm);font-weight:600;text-decoration:none;transition:color var(--%NS%motion-fast)}.more[_ngcontent-%COMP%]:hover{color:var(--%NS%accent-ink)}.failn[_ngcontent-%COMP%]{display:inline-grid;place-items:center;min-width:20px;height:20px;margin-left:6px;padding:0 6px;border-radius:var(--%NS%radius-pill);background:var(--%NS%error-bg);color:var(--%NS%error);font-size:var(--%NS%font-xs);font-weight:700;vertical-align:2px}tr[data-fail][_ngcontent-%COMP%] td[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--%NS%error-bg) 55%,transparent)}.caps[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2);margin-top:var(--%NS%space-3)}inventory-panel[_ngcontent-%COMP%]{display:block;margin-bottom:var(--%NS%space-4)}.alerts[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:var(--%NS%space-2)}.alert[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-2) var(--%NS%space-3);border:1px solid var(--%NS%border);border-left:3px solid var(--%NS%alert-fg, var(--%NS%border));border-radius:var(--%NS%radius-md);background:var(--%NS%bg-elevated);font-size:var(--%NS%font-sm)}.alert[data-severity=error][_ngcontent-%COMP%]{--%NS%alert-fg: var(--%NS%error);background:color-mix(in srgb,var(--%NS%error-bg) 45%,var(--%NS%bg-elevated))}.alert[data-severity=warn][_ngcontent-%COMP%]{--%NS%alert-fg: var(--%NS%warn)}.alert[data-severity=info][_ngcontent-%COMP%]{--%NS%alert-fg: var(--%NS%info)}.alert__icon[_ngcontent-%COMP%]{flex-shrink:0;color:var(--%NS%alert-fg, var(--%NS%fg-muted))}.alert__body[_ngcontent-%COMP%]{flex:1;min-width:0}.alert__detail[_ngcontent-%COMP%]{display:block;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.alert__go[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;min-height:24px;padding-block:1px;font-weight:600;text-decoration:none;white-space:nowrap}.shortcuts[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:var(--%NS%space-3);margin-top:var(--%NS%space-2)}.shortcut[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);padding:var(--%NS%space-3) var(--%NS%space-4);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-lg);background:var(--%NS%bg-elevated);color:var(--%NS%fg);font-size:var(--%NS%font-sm);font-weight:600;text-decoration:none}.shortcut[_ngcontent-%COMP%]:hover{border-color:var(--%NS%accent-ink)}.shortcut__label[_ngcontent-%COMP%]{flex:1}`]})};export{be as DashboardPage}; \ No newline at end of file diff --git a/portal/assets/chunk-BkDXoz47.js b/portal/assets/chunk-BkDXoz47.js new file mode 100644 index 0000000..681ea50 --- /dev/null +++ b/portal/assets/chunk-BkDXoz47.js @@ -0,0 +1 @@ +import{$ as dS,At as qm,Bt as tn,Et as p,F as Sa,J as aC,Jt as vd,P as SS,Q as cE,Qt as yS,S as Ma,Ut as uC,Y as aE,Z as bd,at as ey,ct as hD,et as da,gt as k,i as Ar,it as ei,jt as rC,kt as qS,lt as hE,p as Hh,qt as vc,s as DS,ut as hS,vt as lC,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{i as n,o as f,r as g}from"./main-XW2ZMSO5.js";import{t as _}from"./chunk-16deWS0U.js";import{t as D}from"./chunk-Bg2lccQE.js";import{n as k$1,t as I}from"./chunk-DQtX_-dj.js";import{t as T}from"./chunk-BGgpmc9t.js";var G=t=>({count:t});var H=(t,r)=>r.name;function J(t,r){if(t&1){let o=DS();da(0,`ui-error`,5),Ma(`retry`,function(){Hh(o);let g=SS();return Vh(g.load())}),vd()}t&2&&qm(`error`,r)}function K(t,r){t&1&&(da(0,`section`,4),Sa(1,`ui-skeleton`,6),vd()),t&2&&(hD(),qm(`lines`,4))}function Q(t,r){if(t&1&&(da(0,`p`,12),Sa(1,`ui-icon`,26),qS(2),aC(3,`t`),vd()),t&2){let o=SS(2);hD(),qm(`size`,15),hD(),bd(` `,uC(3,2,`config.alert.missing`,rC(5,G,o.missingRequired().length)),` `)}}function W(t,r){t&1&&Sa(0,`ui-state-badge`,22)}function X(t,r){t&1&&(qS(0),aC(1,`t`)),t&2&&bd(` `,lC(1,1,`state.yes`),` `)}function Y(t,r){t&1&&Sa(0,`ui-state-badge`,28)}function Z(t,r){if(t&1&&(da(0,`code`,29),qS(1),vd()),t&2){let o=SS().$implicit;hD(),ey(o.path)}}function ee(t,r){t&1&&(da(0,`span`,17),qS(1),aC(2,`t`),vd()),t&2&&(hD(),ey(lC(2,1,`environmentState.UNSET`)))}function te(t,r){if(t&1&&(da(0,`tr`)(1,`td`)(2,`code`),qS(3),vd()(),da(4,`td`),qS(5),aC(6,`t`),vd(),da(7,`td`),qS(8),aC(9,`t`),vd(),da(10,`td`),dS(11,W,1,0,`ui-state-badge`,22)(12,X,2,3)(13,Y,1,0,`ui-state-badge`,28),vd(),da(14,`td`),qS(15),vd(),da(16,`td`),dS(17,Z,2,1,`code`,29)(18,ee,3,3,`span`,17),vd()()),t&2){let o=r.$implicit;Ar(`data-missing`,o.required&&!o.present||null)(`data-invalid`,o.valid===!1||null),hD(3),ey(o.name),hD(2),ey(lC(6,8,o.required?`state.required`:`state.optional`)),hD(3),ey(lC(9,10,o.present?`state.yes`:`state.no`)),hD(3),hS(o.valid===null?11:o.valid?12:13),hD(4),ey(o.kind),hD(2),hS(o.path?17:18)}}function ie(t,r){if(t&1&&(da(0,`table`,13)(1,`thead`)(2,`tr`)(3,`th`,27),qS(4),aC(5,`t`),vd(),da(6,`th`,27),qS(7),aC(8,`t`),vd(),da(9,`th`,27),qS(10),aC(11,`t`),vd(),da(12,`th`,27),qS(13),aC(14,`t`),vd(),da(15,`th`,27),qS(16),aC(17,`t`),vd(),da(18,`th`,27),qS(19),aC(20,`t`),vd()()(),da(21,`tbody`),mS(22,te,19,12,`tr`,null,H),vd()()),t&2){let o=SS();hD(4),ey(lC(5,6,`config.col.name`)),hD(3),ey(lC(8,8,`config.col.required`)),hD(3),ey(lC(11,10,`config.col.present`)),hD(3),ey(lC(14,12,`config.col.valid`)),hD(3),ey(lC(17,14,`config.col.kind`)),hD(3),ey(lC(20,16,`config.col.path`)),hD(3),yS(o.variables)}}function ne(t,r){t&1&&(Sa(0,`ui-empty`,14),aC(1,`t`),aC(2,`t`)),t&2&&qm(`title`,lC(1,2,`empty.noData`))(`hint`,lC(2,4,`empty.noData.hint`))}function ae(t,r){if(t&1){let o=DS();da(0,`div`,18)(1,`code`,30),qS(2),vd(),da(3,`div`,31)(4,`div`,32)(5,`span`,33),qS(6,`PowerShell`),vd(),da(7,`code`,34),qS(8),vd(),da(9,`button`,35),aC(10,`t`),Ma(`click`,function(){let g=Hh(o).$implicit,v=SS(2);return Vh(v.copy(v.psCommand(g.name)))}),Sa(11,`ui-icon`,36),qS(12),aC(13,`t`),vd()(),da(14,`div`,32)(15,`span`,33),qS(16,`bash`),vd(),da(17,`code`,34),qS(18),vd(),da(19,`button`,35),aC(20,`t`),Ma(`click`,function(){let g=Hh(o).$implicit,v=SS(2);return Vh(v.copy(v.shCommand(g.name)))}),Sa(21,`ui-icon`,36),qS(22),aC(23,`t`),vd()()()()}if(t&2){let o=r.$implicit,c=SS(2);hD(2),ey(o.name),hD(6),ey(c.psCommand(o.name)),hD(),Ar(`aria-label`,lC(10,9,`state.copy`)),hD(2),qm(`size`,13),hD(),bd(` `,lC(13,11,`state.copy`),` `),hD(6),ey(c.shCommand(o.name)),hD(),Ar(`aria-label`,lC(20,13,`state.copy`)),hD(2),qm(`size`,13),hD(),bd(` `,lC(23,15,`state.copy`),` `)}}function re(t,r){t&1&&(da(0,`p`,17),qS(1),aC(2,`t`),vd()),t&2&&(hD(),ey(lC(2,1,`config.prepare.none`)))}function oe(t,r){if(t&1&&(da(0,`section`,7)(1,`div`,8)(2,`h2`,9),qS(3),aC(4,`t`),vd(),Sa(5,`ui-state-badge`,10),vd(),da(6,`dl`,11)(7,`div`)(8,`dt`),qS(9),aC(10,`t`),vd(),da(11,`dd`)(12,`code`),qS(13),vd()()(),da(14,`div`)(15,`dt`),qS(16),aC(17,`t`),vd(),da(18,`dd`),qS(19),vd()(),da(20,`div`)(21,`dt`),qS(22),aC(23,`t`),vd(),da(24,`dd`),qS(25),aC(26,`t`),vd()()(),dS(27,Q,4,7,`p`,12),dS(28,ie,24,18,`table`,13)(29,ne,3,6,`ui-empty`,14),vd(),da(30,`section`,15)(31,`h2`,16),qS(32),aC(33,`t`),vd(),da(34,`p`,17),qS(35),aC(36,`t`),vd(),mS(37,ae,24,17,`div`,18,H,!1,re,3,3,`p`,17),vd(),da(40,`section`,19)(41,`h2`,20),qS(42),aC(43,`t`),vd(),da(44,`ul`,21)(45,`li`),Sa(46,`ui-state-badge`,22),da(47,`span`,23)(48,`strong`),qS(49),aC(50,`t`),vd(),da(51,`small`,17),qS(52),aC(53,`t`),vd()()()(),da(54,`a`,24),Sa(55,`ui-icon`,25),qS(56),aC(57,`t`),vd(),da(58,`p`,17),qS(59),aC(60,`t`),vd()()),t&2){let o=r,c=SS();hD(3),ey(lC(4,19,`dashboard.accountEnvironment`)),hD(2),qm(`state`,o.state),hD(4),ey(lC(10,21,`config.env.prefix`)),hD(4),ey(o.prefix),hD(3),ey(lC(17,23,`config.env.scope`)),hD(3),ey(o.scope),hD(3),ey(lC(23,25,`config.env.aliases`)),hD(3),ey(lC(26,27,o.windows_aliases?`state.yes`:`state.no`)),hD(2),hS(c.missingRequired().length?27:-1),hD(),hS(o.variables.length?28:29),hD(4),ey(lC(33,29,`config.prepare.title`)),hD(3),ey(lC(36,31,`config.prepare.hint`)),hD(2),yS(c.attention()),hD(5),ey(lC(43,33,`config.apply.title`)),hD(7),ey(lC(50,35,`config.apply.portal`)),hD(3),ey(lC(53,37,`config.apply.unsupported`)),hD(3),qm(`size`,15),hD(),bd(` `,lC(57,39,`config.profiles.link`),` `),hD(3),ey(lC(60,41,`config.profiles.hint`))}}var j=class t{api=p(g);toast=p(f);env=k(null);error=k(null);loading=k(!0);attention=tn(()=>(this.env()?.variables??[]).filter(r=>!r.present||r.valid===!1));missingRequired=tn(()=>(this.env()?.variables??[]).filter(r=>r.required&&(!r.present||r.valid===!1)));constructor(){this.load()}async load(){this.error.set(null),this.loading.set(!0);try{this.env.set(await hE(this.api.accountEnvironment()))}catch(r){this.error.set(r instanceof n?r:new n(0))}finally{this.loading.set(!1)}}psCommand(r){return`[Environment]::SetEnvironmentVariable('${r}', '', 'User')`}shCommand(r){return`export ${r}=`}async copy(r){try{await navigator.clipboard.writeText(r),this.toast.show(`state.copied`,`success`)}catch{this.toast.show(`error.generic`,`error`)}}static ɵfac=function(o){return new(o||t)};static ɵcmp=ei({type:t,selectors:[[`page-config`]],decls:10,vars:14,consts:[[3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[3,`error`],[`role`,`status`,`aria-live`,`polite`,1,`card`],[3,`retry`,`error`],[`kind`,`card`,3,`lines`],[`aria-labelledby`,`env-h`,1,`card`],[1,`card__heading`],[`id`,`env-h`],[3,`state`],[1,`kv`],[`role`,`alert`,1,`env-alert`],[1,`table`,`env-table`],[3,`title`,`hint`],[`aria-labelledby`,`prepare-h`,1,`card`,`prepare`],[`id`,`prepare-h`],[1,`muted`],[1,`prep`],[`aria-labelledby`,`apply-h`,1,`card`],[`id`,`apply-h`],[1,`capability`],[`state`,`unverified`],[1,`capability__body`],[`routerLink`,`/profiles`,1,`btn`],[`name`,`profiles`,3,`size`],[`name`,`alert`,3,`size`],[`scope`,`col`],[`state`,`INVALID`],[1,`path`],[1,`prep__name`],[1,`prep__cmds`],[1,`cmd`],[1,`cmd__shell`],[1,`cmd__text`],[1,`btn`,`btn--mini`,3,`click`],[`name`,`copy`,3,`size`]],template:function(o,c){if(o&1&&(da(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),da(3,`button`,1),Ma(`click`,function(){return c.load()}),Sa(4,`ui-icon`,2),qS(5),aC(6,`t`),vd()(),dS(7,J,1,1,`ui-error`,3),dS(8,K,2,1,`section`,4),dS(9,oe,61,43)),o&2){let g,v;qm(`title`,lC(1,8,`config.title`))(`subtitle`,lC(2,10,`config.subtitle`)),hD(3),qm(`disabled`,c.loading()),hD(),qm(`size`,15),hD(),bd(` `,lC(6,12,`state.refresh`),` `),hD(2),hS((g=c.error())?7:-1,g),hD(),hS(c.loading()&&!c.env()?8:-1),hD(),hS((v=c.env())?9:-1,v)}},dependencies:[vc,T,I,D,_,cE,k$1,aE],styles:[`.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.card[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em}.card__heading[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.card__heading[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0}.kv[_ngcontent-%COMP%]{display:grid;gap:6px;margin:0 0 var(--%NS%space-3)}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-2)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);min-width:140px}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;font-weight:550}.env-alert[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:0 0 var(--%NS%space-3);padding:var(--%NS%space-2) var(--%NS%space-3);border:1px solid color-mix(in srgb,var(--%NS%warn) 45%,transparent);border-left-width:3px;border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);color:var(--%NS%warn);font-weight:550}.env-table[_ngcontent-%COMP%]{margin-top:var(--%NS%space-2)}.env-table[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{font-family:var(--%NS%font-mono);font-size:var(--%NS%font-xs)}.env-table[_ngcontent-%COMP%] .path[_ngcontent-%COMP%]{overflow-wrap:anywhere;word-break:break-all}.env-table[_ngcontent-%COMP%] tr[data-missing][_ngcontent-%COMP%]{background:color-mix(in srgb,var(--%NS%warn) 8%,transparent)}.env-table[_ngcontent-%COMP%] tr[data-missing][_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{border-left:3px solid var(--%NS%warn)}.env-table[_ngcontent-%COMP%] tr[data-invalid][_ngcontent-%COMP%]{background:color-mix(in srgb,var(--%NS%error) 7%,transparent)}.env-table[_ngcontent-%COMP%] tr[data-invalid][_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{border-left:3px solid var(--%NS%error)}.prep[_ngcontent-%COMP%]{padding:var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);margin-bottom:var(--%NS%space-2);display:grid;gap:var(--%NS%space-2)}.prep__name[_ngcontent-%COMP%]{font-weight:650;overflow-wrap:anywhere}.prep__cmds[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2)}.cmd[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);padding:var(--%NS%space-2) var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:var(--%NS%bg)}.cmd__shell[_ngcontent-%COMP%]{flex:none;font-size:var(--%NS%font-xs);font-weight:700;color:var(--%NS%fg-muted);text-transform:uppercase;letter-spacing:.04em;min-width:76px}.cmd__text[_ngcontent-%COMP%]{flex:1;min-width:0;font-family:var(--%NS%font-mono);font-size:var(--%NS%font-xs);overflow-wrap:anywhere}.btn--mini[_ngcontent-%COMP%]{padding:2px var(--%NS%space-2);font-size:var(--%NS%font-xs);gap:4px;flex:none}.capability[_ngcontent-%COMP%]{list-style:none;padding:0;margin:0 0 var(--%NS%space-3);display:grid;gap:var(--%NS%space-2)}.capability[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-3);border:1px dashed var(--%NS%border);border-radius:var(--%NS%radius-md)}.capability__body[_ngcontent-%COMP%]{display:grid;gap:2px}.capability__body[_ngcontent-%COMP%] small[_ngcontent-%COMP%], .muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}a.btn[_ngcontent-%COMP%]{display:inline-flex;text-decoration:none}`]})};export{j as ConfigPage}; \ No newline at end of file diff --git a/portal/assets/chunk-Br6NMJL9.js b/portal/assets/chunk-Br6NMJL9.js new file mode 100644 index 0000000..1e73052 --- /dev/null +++ b/portal/assets/chunk-Br6NMJL9.js @@ -0,0 +1 @@ +import{$ as dS,Bt as tn,G as Zm,J as aC,P as SS,Pt as rn,R as Ta,Ut as uC,Y as aE,Z as bd,_t as kU,ct as hD,g as Id,i as Ar,it as ei,kt as qS,p as Hh,pt as iC,s as DS,u as Ed,ut as hS,vt as lC,z as Vh}from"./chunk-BefGrJ9d.js";var U=(a,n,e)=>({from:a,to:n,total:e});function T(a,n){if(a&1){let e=DS();Ed(0,`nav`,0),aC(1,`t`),Ed(2,`button`,1),Zm(`click`,function(){Hh(e);let t=SS();return Vh(t.go(t.slice().page-1))}),qS(3),aC(4,`t`),Id(),Ed(5,`span`,2),qS(6),aC(7,`t`),Id(),Ed(8,`button`,3),Zm(`click`,function(){Hh(e);let t=SS();return Vh(t.go(t.slice().page+1))}),qS(9),aC(10,`t`),Id()()}if(a&2){let e=SS();Ar(`aria-label`,e.label()||lC(1,6,`pager.label`)),hD(2),Ta(`disabled`,e.slice().page<=0),hD(),bd(` `,lC(4,8,`pager.prev`),` `),hD(3),bd(` `,uC(7,10,`pager.range`,iC(15,U,e.slice().start+1,e.slice().end,e.slice().total)),` `),hD(2),Ta(`disabled`,e.slice().page>=e.slice().pages-1),hD(),bd(` `,lC(10,13,`pager.next`),` `)}}function V(a,n,e){let i=Math.max(1,Math.floor(n)),t=Math.max(0,a),_=Math.max(1,Math.ceil(t/i)),f=Math.min(Math.max(0,Math.floor(e)),_-1),v=Math.min(f*i,t);return{page:f,pages:_,start:v,end:Math.min(v+i,t),total:t}}var k=class a{total=rn.required();pageSize=rn.required();page=rn.required();label=rn(null);pageChange=kU();slice=tn(()=>V(this.total(),this.pageSize(),this.page()));go(n){this.pageChange.emit(n)}static ɵfac=function(e){return new(e||a)};static ɵcmp=ei({type:a,selectors:[[`ui-pager`]],inputs:{total:[1,`total`],pageSize:[1,`pageSize`],page:[1,`page`],label:[1,`label`]},outputs:{pageChange:`pageChange`},decls:1,vars:1,consts:[[1,`pager`],[`data-page`,`prev`,1,`btn`,`btn--mini`,3,`click`,`disabled`],[`data-page`,`range`,1,`muted`,`pager__range`],[`data-page`,`next`,1,`btn`,`btn--mini`,3,`click`,`disabled`]],template:function(e,i){e&1&&dS(0,T,11,19,`nav`,0),e&2&&hS(i.slice().pages>1?0:-1)},dependencies:[aE],styles:[`.pager[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:flex-end;gap:var(--%NS%space-2);margin:var(--%NS%space-2) 0 0}.pager__range[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);font-variant-numeric:tabular-nums;white-space:nowrap}`]})};export{k as n,V as t}; \ No newline at end of file diff --git a/portal/assets/chunk-BtsfId7c.js b/portal/assets/chunk-BtsfId7c.js deleted file mode 100644 index a766db7..0000000 --- a/portal/assets/chunk-BtsfId7c.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as da,Dt as pS,Et as p,F as Wm,Gt as wS,K as aC,Lt as tn,M as Ta,Mt as sC,N as Uh,P as WS,Q as cE,St as nb,T as Pg,Tt as oC,X as bS,Xt as yd,Yt as yc,Z as ba,at as ey,ct as gS,dt as hE,gt as k,h as Jm,ht as jh,it as ei,l as Dd,nt as eb,o as Ar,ot as fS,q as aE,ut as hD,xt as nC,yt as mS,zt as uS}from"./chunk-BelLryvf.js";import{c as a,r as g,t as g$1}from"./main-A2NKRJGT.js";import{i as Zt,n as De$1,r as Yt,t as At}from"./chunk-DpHwlXuY.js";import{a as l,n as c}from"./chunk-0WpwvubF.js";import{t as _}from"./chunk-BKRLVsID.js";import{t as D}from"./chunk-CiuPOfJ0.js";import{n as k$1,t as I}from"./chunk-D2KAfPv6.js";import{t as T$1}from"./chunk-BBusSOqc.js";import{a as T$2,i as M$1,n as G,r as H}from"./chunk-DJd3bKJi.js";import{t as r}from"./chunk-DuZy_X7l.js";var he=[`missing-component`,`incomplete-config`,`incompatible-dependency`,`mcp-unavailable`,`recurring-failure`,`related-skill`];var pe={"missing-component":`recommend.kind.missingComponent`,"incomplete-config":`recommend.kind.incompleteConfig`,"incompatible-dependency":`recommend.kind.incompatibleDependency`,"mcp-unavailable":`recommend.kind.mcpUnavailable`,"recurring-failure":`recommend.kind.recurringFailure`,"related-skill":`recommend.kind.relatedSkill`};var w={federation:`GET /api/v1/federation`,registry:`GET /api/v1/registry/state`,bootstrap:`GET /api/v1/bootstrap`,skills:`GET /api/v1/skills`,agents:`GET /api/v1/agents`,mcp:`GET /api/v1/mcp/servers`,hosts:`GET /api/v1/hosts`,tasks:`GET /api/v1/tasks`};var M=(n,t)=>nt?1:0;var xe=new Set([`NOT_CONFIGURED`,`FAILED`,`DEGRADED`]);var be=n=>{if(n.refusal)return!0;let t=n.receipt?.status;return typeof t==`string`&&t!==`ok`};function me(n,t){let e=new Set(typeof t==`string`?[t]:t);return!n||e.size===0?[]:n.filter(i=>(i.skills??[]).some(r=>e.has(r))).sort((i,r)=>M(i.id,r.id))}function ge(n,t){return!n||!t?[]:n.filter(e=>(e.domains??[]).includes(t)).sort((e,i)=>M(e.id,i.id))}function ue(n,t,e){return!n||!t?[]:n.filter(i=>i.domain===t&&i.id!==e).sort((i,r)=>M(i.id,r.id))}function Ce(n){let t=n.federation;if(!t)return[];let e=new Set(t.installed_forges??[]),i=new Set(Object.keys(n.registry?.forges??{})),r=n.registry!=null,s=[];for(let h of t.specialists??[]){let f=typeof h.provider==`string`?h.provider:null;f&&(e.has(f)||i.has(f)||s.push({id:`missing-component:${f}`,kind:`missing-component`,severity:`info`,reasonKey:`recommend.reason.missingComponent`,params:{forge:f},route:`/federation`,refs:[{kind:`forge`,id:f}],source:[{endpoint:w.federation,field:`specialists[].provider`},{endpoint:w.federation,field:`installed_forges`},...r?[{endpoint:w.registry,field:`forges`}]:[]]}))}return s.sort((h,f)=>M(h.id,f.id))}function Se(n){let t=[],e=n.environment;if(e)for(let i of e.variables??[])i.required&&(i.present?i.valid===!1&&t.push({id:`incomplete-config:env:${i.name}:invalid`,kind:`incomplete-config`,severity:`warning`,reasonKey:`recommend.reason.envInvalid`,params:{name:i.name},route:`/config`,refs:[{kind:`env`,id:i.name}],source:[{endpoint:w.bootstrap,field:`account_environment.variables[].valid`}]}):t.push({id:`incomplete-config:env:${i.name}`,kind:`incomplete-config`,severity:`warning`,reasonKey:`recommend.reason.envMissing`,params:{name:i.name},route:`/config`,refs:[{kind:`env`,id:i.name}],source:[{endpoint:w.bootstrap,field:`account_environment.variables[].present`}]}));for(let i of n.hosts??[])i.detected&&i.integration===`NOT_DETECTED`&&t.push({id:`incomplete-config:host:${i.host}`,kind:`incomplete-config`,severity:`info`,reasonKey:`recommend.reason.hostNotIntegrated`,params:{host:i.host},route:`/hosts`,refs:[{kind:`host`,id:i.host}],source:[{endpoint:w.hosts,field:`integration`}]});return t.sort((i,r)=>M(i.id,r.id))}function ke(n){let t=[];for(let e of n.hosts??[])e.detected&&e.supported===!1&&t.push({id:`incompatible-dependency:${e.host}`,kind:`incompatible-dependency`,severity:`warning`,reasonKey:`recommend.reason.hostUnsupported`,params:{host:e.host},route:`/hosts`,refs:[{kind:`host`,id:e.host}],source:[{endpoint:w.hosts,field:`detected`},{endpoint:w.hosts,field:`supported`}]});return t.sort((e,i)=>M(e.id,i.id))}function we(n){let t=[];for(let e of n.mcp??[])xe.has(e.state)&&t.push({id:`mcp-unavailable:${e.id}`,kind:`mcp-unavailable`,severity:`warning`,reasonKey:`recommend.reason.mcpState`,params:{id:e.id,state:e.state},route:`/mcp`,refs:[{kind:`mcp`,id:e.id}],source:[{endpoint:w.mcp,field:`state`}]});return t.sort((e,i)=>M(e.id,i.id))}function Ee(n){let t=new Map;for(let i of n.tasks??[]){if(!be(i))continue;let r=i.verb||i.id,s=t.get(r)??{count:0,ids:[]};s.count+=1,s.ids.push(i.id),t.set(r,s)}let e=[];for(let[i,r]of t)r.count<2||e.push({id:`recurring-failure:${i}`,kind:`recurring-failure`,severity:`warning`,reasonKey:`recommend.reason.recurringFailure`,params:{verb:i,count:r.count},route:`/tasks`,refs:r.ids.sort(M).map(s=>({kind:`operation`,id:s})),source:[{endpoint:w.tasks,field:`refusal`},{endpoint:w.tasks,field:`receipt.status`}]});return e.sort((i,r)=>M(i.id,r.id))}function Pe(n){let t=n.skills;if(!t)return[];let e=new Map;for(let r of t){let s=typeof r.domain==`string`&&r.domain.trim()?r.domain.trim():null;if(!s||!r.id)continue;let h=e.get(s)??[];h.push(r.id),e.set(s,h)}let i=[];for(let[r,s]of e){if(s.length<2)continue;let h=s.sort(M);i.push({id:`related-skill:${r}`,kind:`related-skill`,severity:`info`,reasonKey:`recommend.reason.sameDomain`,params:{domain:r,count:h.length},route:`/skills`,refs:h.map(f=>({kind:`skill`,id:f})),source:[{endpoint:w.skills,field:`domain`}]})}return i.sort((r,s)=>M(r.id,s.id))}function _e(n){let t={"missing-component":Ce(n),"incomplete-config":Se(n),"incompatible-dependency":ke(n),"mcp-unavailable":we(n),"recurring-failure":Ee(n),"related-skill":Pe(n)};return he.flatMap(e=>t[e])}var Ne=n=>({count:n});var Me=n=>[n];var T=(n,t)=>t.id;var ve=(n,t)=>t.path;var De=(n,t)=>t.kind+`:`+t.id;var Oe=(n,t)=>t.endpoint+t.field;function Te(n,t){n&1&&(da(0,`div`,10),oC(1,`t`),ba(2,`ui-skeleton`,22),yd()),n&2&&(Ar(`aria-label`,sC(1,2,`state.loading`)),hD(2),Wm(`lines`,2))}function Ke(n,t){if(n&1&&(da(0,`li`)(1,`code`),WS(2),yd(),ba(3,`ui-state-badge`,25),oC(4,`t`),yd()),n&2){let e=t.$implicit,i=bS(2);Ar(`data-source`,e.id)(`data-state`,e.state),hD(2),Jm(e.endpoint),hD(),Wm(`state`,i.sourceBadge(e.state))(`labelOverride`,sC(4,5,`graph.source.`+e.state))}}function Ie(n,t){if(n&1){let e=wS();da(0,`button`,30),Ta(`click`,function(){let r=jh(e).$implicit,s=bS(3);return Uh(s.toggleKind(r))}),WS(1),yd()}if(n&2){let e=t.$implicit,i=bS(2),r=bS();Ar(`data-kind-chip`,e)(`data-tone`,r.kind()===e?`accent`:null)(`aria-pressed`,r.kind()===e),hD(),ey(` `,e,` · `,i.counts[e],` `)}}function Fe(n,t){n&1&&ba(0,`ui-state-badge`,37)}function Be(n,t){if(n&1){let e=wS();da(0,`li`)(1,`button`,33),Ta(`click`,function(){let r=jh(e).$implicit,s=bS(3);return Uh(s.select(r))}),ba(2,`ui-icon`,34),da(3,`span`,35),WS(4),yd(),da(5,`code`,36),WS(6),yd(),uS(7,Fe,1,0,`ui-state-badge`,37),yd()()}if(n&2){let e=t.$implicit,i=bS(3);hD(),Ar(`data-unverified`,e.unverified||null)(`data-selected`,i.selected()?.id===e.id||null),hD(),Wm(`name`,i.kindIcon(e.kind))(`size`,14),hD(),Ar(`title`,e.label),hD(),Jm(e.label),hD(),Ar(`title`,e.id),hD(),Jm(e.id),hD(),fS(e.unverified?7:-1)}}function Re(n,t){n&1&&(da(0,`li`,16),WS(1),oC(2,`t`),yd()),n&2&&(hD(),Jm(sC(2,1,`knowledge.noEntities`)))}function Ae(n,t){if(n&1){let e=wS();da(0,`div`,29),oC(1,`t`),da(2,`button`,30),Ta(`click`,function(){jh(e);let r=bS(2);return Uh(r.kind.set(null))}),WS(3),oC(4,`t`),yd(),gS(5,Ie,2,5,`button`,31,pS),yd(),da(7,`ul`,32),gS(8,Be,8,9,`li`,null,T,!1,Re,3,3,`li`,16),yd()}if(n&2){let e=bS(),i=bS();Ar(`aria-label`,sC(1,6,`command.filters`)),hD(2),Ar(`data-tone`,i.kind()===null?`accent`:null)(`aria-pressed`,i.kind()===null),hD(),ey(` `,sC(4,8,`state.all`),` · `,e.nodes.length,` `),hD(2),mS(i.kindOptions(e)),hD(3),mS(i.filtered())}}function ze(n,t){n&1&&(ba(0,`ui-empty`,15),oC(1,`t`)),n&2&&Wm(`title`,sC(1,1,`knowledge.noEntities`))}function Ve(n,t){n&1&&ba(0,`ui-state-badge`,37)}function Ge(n,t){if(n&1&&(da(0,`a`,39),WS(1),oC(2,`t`),oC(3,`t`),ba(4,`ui-icon`,41),yd()),n&2){let e=t;Wm(`routerLink`,e.commands)(`queryParams`,e.queryParams??null)(`fragment`,e.fragment),hD(),ey(` `,sC(2,6,`entity.openIn`),` `,sC(3,8,e.navKey),` `),hD(3),Wm(`size`,13)}}function $e(n,t){if(n&1&&(da(0,`code`),WS(1),yd()),n&2){let e=t.$implicit,i=bS(3);hD(),Jm(i.endpointFor(e))}}function Le(n,t){if(n&1){let e=wS();da(0,`li`)(1,`button`,47),Ta(`click`,function(){let r=jh(e).$implicit,s=bS(3);return Uh(s.selectId(r.source))}),WS(2),yd(),da(3,`code`),WS(4),yd(),da(5,`button`,47),Ta(`click`,function(){let r=jh(e).$implicit,s=bS(3);return Uh(s.selectId(r.target))}),WS(6),yd(),da(7,`code`,48),WS(8),yd()()}if(n&2){let e=t.$implicit,i=bS(3);hD(2),Dd(` `,i.label(e.source),` `),hD(2),Jm(e.kind),hD(2),Dd(` `,i.label(e.target),` `),hD(2),Jm(i.endpointFor(e.evidence))}}function qe(n,t){n&1&&(da(0,`li`,16),WS(1),oC(2,`t`),yd()),n&2&&(hD(),Jm(sC(2,1,`knowledge.relatedEmpty`)))}function Ue(n,t){if(n&1){let e=wS();da(0,`li`)(1,`button`,47),Ta(`click`,function(){let r=jh(e).$implicit,s=bS(4);return Uh(s.selectId(`skill:`+r.id))}),WS(2),yd(),da(3,`code`,48),WS(4),yd()()}if(n&2){let e=t.$implicit;hD(2),Dd(` `,e.name||e.id,` `),hD(2),Jm(`GET /api/v1/skills → domain`)}}function He(n,t){if(n&1&&(da(0,`h3`,44),WS(1),oC(2,`t`),yd(),da(3,`ul`,49),gS(4,Ue,5,2,`li`,null,T),yd()),n&2){let e=bS(3);hD(),Jm(sC(2,1,`knowledge.sameDomain`)),hD(3),mS(e.sameDomain())}}function je(n,t){if(n&1){let e=wS();da(0,`li`)(1,`button`,47),Ta(`click`,function(){let r=jh(e).$implicit,s=bS(4);return Uh(s.selectId(`agent:`+r.id))}),WS(2),yd(),da(3,`code`,48),WS(4),yd()()}if(n&2){let e=t.$implicit;hD(2),Dd(` `,e.name||e.id,` `),hD(2),Jm(`GET /api/v1/agents → skills[]`)}}function Qe(n,t){if(n&1&&(da(0,`h3`,44),WS(1),oC(2,`t`),yd(),da(3,`ul`,50),gS(4,je,5,2,`li`,null,T),yd()),n&2){let e=bS(3);hD(),Jm(sC(2,1,`knowledge.declaredBy`)),hD(3),mS(e.declaringAgents())}}function We(n,t){if(n&1){let e=wS();da(0,`li`)(1,`button`,47),Ta(`click`,function(){let r=jh(e).$implicit,s=bS(4);return Uh(s.selectId(`agent:`+r.id))}),WS(2),yd(),da(3,`code`,48),WS(4),yd()()}if(n&2){let e=t.$implicit;hD(2),Dd(` `,e.name||e.id,` `),hD(2),Jm(`GET /api/v1/agents → domains[]`)}}function Je(n,t){if(n&1&&(da(0,`h3`,44),WS(1),oC(2,`t`),yd(),da(3,`ul`,51),gS(4,We,5,2,`li`,null,T),yd()),n&2){let e=bS(3);hD(),Jm(sC(2,1,`knowledge.domainAgents`)),hD(3),mS(e.domainAgents())}}function Xe(n,t){if(n&1&&(da(0,`li`)(1,`span`,52),WS(2),yd(),da(3,`code`,48),WS(4),yd()()),n&2){let e=t.$implicit;hD(2),Jm(e.title||e.path),hD(2),Jm(`GET /api/v1/docs/search`)}}function Ye(n,t){n&1&&(da(0,`li`,16),WS(1),oC(2,`t`),yd()),n&2&&(hD(),Jm(sC(2,1,`knowledge.entityDocsEmpty`)))}function Ze(n,t){n&1&&(da(0,`ul`,46),gS(1,Xe,5,2,`li`,null,ve,!1,Ye,3,3,`li`,16),yd()),n&2&&(hD(),mS(t))}function et(n,t){n&1&&(da(0,`p`,16),WS(1),oC(2,`t`),yd()),n&2&&(hD(),Jm(sC(2,1,`knowledge.entityDocsUnverified`)))}function tt(n,t){if(n&1){let e=wS();da(0,`section`,28)(1,`header`,27)(2,`h2`),ba(3,`ui-icon`,34),WS(4),uS(5,Ve,1,0,`ui-state-badge`,37),yd(),da(6,`span`,38),uS(7,Ge,5,10,`a`,39),da(8,`button`,40),oC(9,`t`),Ta(`click`,function(){jh(e);let r=bS(2);return Uh(r.selected.set(null))}),ba(10,`ui-icon`,41),yd()()(),da(11,`dl`,42)(12,`div`)(13,`dt`),WS(14),oC(15,`t`),yd(),da(16,`dd`)(17,`code`),WS(18),yd()()(),da(19,`div`)(20,`dt`),WS(21),oC(22,`t`),yd(),da(23,`dd`)(24,`code`),WS(25),yd()()(),da(26,`div`)(27,`dt`),WS(28),oC(29,`t`),yd(),da(30,`dd`,43),gS(31,$e,2,1,`code`,null,pS),yd()()(),da(33,`h3`,44),WS(34),oC(35,`t`),yd(),da(36,`ul`,45),gS(37,Le,9,4,`li`,null,T,!1,qe,3,3,`li`,16),yd(),uS(40,He,6,3),uS(41,Qe,6,3),uS(42,Je,6,3),da(43,`h3`,44),WS(44),oC(45,`t`),yd(),uS(46,Ze,4,1,`ul`,46)(47,et,3,3,`p`,16),yd()}if(n&2){let e,i,r=t,s=bS(2);hD(3),Wm(`name`,s.kindIcon(r.kind))(`size`,15),hD(),Dd(``,r.label,` `),hD(),fS(r.unverified?5:-1),hD(2),fS((e=s.openLink(r))?7:-1,e),hD(),Ar(`aria-label`,sC(9,19,`state.close`)),hD(2),Wm(`size`,14),hD(4),Jm(sC(15,21,`table.id`)),hD(4),Jm(r.id),hD(3),Jm(sC(22,23,`graph.fed.kind`)),hD(4),Jm(r.kind),hD(3),Jm(sC(29,25,`skills.evidence`)),hD(3),mS(r.evidence),hD(3),Jm(sC(35,27,`knowledge.related`)),hD(3),mS(s.impact().edges),hD(3),fS(s.sameDomain().length?40:-1),hD(),fS(s.declaringAgents().length?41:-1),hD(),fS(s.domainAgents().length?42:-1),hD(2),Jm(sC(45,29,`knowledge.entityDocs`)),hD(2),fS((i=s.entityDocs())?46:47,i)}}function nt(n,t){if(n&1&&(da(0,`ul`,23),oC(1,`t`),gS(2,Ke,5,7,`li`,null,T),da(4,`li`,24)(5,`code`),WS(6),yd(),ba(7,`ui-state-badge`,25),oC(8,`t`),yd()(),da(9,`section`,26)(10,`header`,27)(11,`h2`),ba(12,`ui-icon`,13),WS(13),oC(14,`t`),yd()(),uS(15,Ae,11,10)(16,ze,2,3,`ui-empty`,15),yd(),uS(17,tt,48,31,`section`,28)),n&2){let e,i=bS();Ar(`aria-label`,sC(1,9,`graph.fed.sources`)),hD(2),mS(i.sourceRows()),hD(2),Ar(`data-state`,i.envState()),hD(2),Jm(`GET /api/v1/bootstrap → account_environment`),hD(),Wm(`state`,i.sourceBadge(i.envState()))(`labelOverride`,sC(8,11,`graph.source.`+i.envState())),hD(5),Wm(`size`,15),hD(),Jm(sC(14,13,`knowledge.entities`)),hD(2),fS(t.nodes.length?15:16),hD(2),fS((e=i.selected())?17:-1,e)}}function it(n,t){if(n&1){let e=wS();da(0,`ui-error`,53),Ta(`retry`,function(){jh(e);let r=bS();return Uh(r.searchDocs())}),yd()}n&2&&Wm(`error`,t)}function at(n,t){n&1&&(ba(0,`ui-empty`,15),oC(1,`t`)),n&2&&Wm(`title`,sC(1,1,`knowledge.docsUnavailable`))}function ot(n,t){if(n&1&&(da(0,`a`,56),WS(1),oC(2,`t`),ba(3,`ui-icon`,57),yd()),n&2){let e=bS().$implicit;Wm(`href`,e.url,Pg),hD(),Dd(` `,sC(2,3,`knowledge.open`),` `),hD(2),Wm(`size`,13)}}function rt(n,t){if(n&1&&(da(0,`article`,54)(1,`h3`),WS(2),yd(),da(3,`p`,16),WS(4),yd(),da(5,`footer`)(6,`code`),WS(7),yd(),da(8,`span`,55),WS(9),yd(),uS(10,ot,4,5,`a`,56),yd()()),n&2){let e=t.$implicit;hD(2),Jm(e.title),hD(2),Jm(e.excerpt),hD(3),Jm(e.path),hD(2),Jm(e.category),hD(),fS(e.url?10:-1)}}function lt(n,t){n&1&&(ba(0,`ui-empty`,15),oC(1,`t`)),n&2&&Wm(`title`,sC(1,1,`knowledge.empty`))}function dt(n,t){if(n&1&&(da(0,`p`,16),WS(1),oC(2,`t`),yd(),gS(3,rt,11,5,`article`,54,ve,!1,lt,2,3,`ui-empty`,15)),n&2){let e=bS();hD(),Jm(aC(2,2,`knowledge.results`,nC(5,Ne,e.hits().length))),hD(2),mS(e.hits())}}function st(n,t){n&1&&(da(0,`p`,16),WS(1),oC(2,`t`),yd()),n&2&&(hD(),Jm(sC(2,1,`knowledge.docsHint`)))}function ct(n,t){n&1&&(da(0,`p`,19),ba(1,`ui-icon`,58),WS(2),oC(3,`t`),yd()),n&2&&(hD(),Wm(`size`,13),hD(),Dd(` `,sC(3,2,`recommend.partial`),` `))}function pt(n,t){if(n&1&&(da(0,`li`)(1,`code`),WS(2),yd()()),n&2){let e=t.$implicit;hD(2),ey(``,e.kind,`:`,e.id)}}function mt(n,t){if(n&1&&(da(0,`code`,63),WS(1),yd()),n&2){let e=t.$implicit;hD(),ey(``,e.endpoint,` → `,e.field)}}function gt(n,t){if(n&1&&(da(0,`li`,59)(1,`header`)(2,`span`,60),WS(3),oC(4,`t`),yd(),ba(5,`ui-state-badge`,25),oC(6,`t`),yd(),da(7,`p`,61),WS(8),oC(9,`t`),yd(),da(10,`ul`,62),gS(11,pt,3,2,`li`,null,De),yd(),da(13,`footer`),gS(14,mt,2,2,`code`,63,Oe),da(16,`a`,64),WS(17),oC(18,`t`),yd()()()),n&2){let e=t.$implicit,i=bS(2);Ar(`data-kind`,e.kind)(`data-severity`,e.severity),hD(3),Jm(sC(4,8,i.recKindLabel[e.kind])),hD(2),Wm(`state`,e.severity===`warning`?`warn`:`info`)(`labelOverride`,sC(6,10,e.severity===`warning`?`recommend.sev.warning`:`recommend.sev.info`)),hD(3),Jm(aC(9,12,e.reasonKey,e.params)),hD(3),mS(e.refs),hD(3),mS(e.source),hD(2),Wm(`routerLink`,nC(17,Me,e.route)),hD(),Jm(sC(18,15,`recommend.goto`))}}function ut(n,t){if(n&1&&(da(0,`ul`,20),gS(1,gt,19,19,`li`,59,T),yd()),n&2){let e=bS();hD(),mS(e.recommendations())}}function _t(n,t){n&1&&(ba(0,`ui-empty`,21),oC(1,`t`)),n&2&&Wm(`title`,sC(1,1,`recommend.empty`))}var fe=[`federation`,`registry`,`skills`,`agents`,`mcp`,`hosts`,`tasks`,`events`,`graphs`];var ft={forge:`gem`,capability:`shield-check`,skill:`skills`,agent:`agents`,mcp:`mcp`,host:`hosts`,operation:`tasks`,tool:`terminal`};var ye=class n{api=p(g);store=p(g$1);query=k(``);kind=k(null);selected=k(null);fed=k(null);loading=k(!0);hits=k([]);docsSearched=k(!1);docsUnavailable=k(!1);docError=k(null);docBusy=k(!1);entityDocs=k(null);entityDocsFor=``;srcs=fe.map(t=>({id:t,src:new l}));constructor(){this.load()}async load(){this.loading.set(!0),this.selected.set(null),this.entityDocs.set(null),this.entityDocsFor=``,await Promise.allSettled(this.srcs.map(t=>t.src.load(()=>this.read(t.id)))),this.loading.set(!1),this.rebuild()}read(t){switch(t){case`federation`:return this.api.federation();case`registry`:return this.api.registryState();case`skills`:return this.api.skills();case`agents`:return this.api.agents();case`mcp`:return this.api.mcpServers();case`hosts`:return this.api.hosts();case`tasks`:return this.api.tasks();case`events`:return this.api.events();case`graphs`:return this.api.graphs()}}data(t){return this.srcs.find(e=>e.id===t)?.src.data()??null}srcState(t){let e=this.srcs.find(i=>i.id===t).src;return e.data()!==null?`loaded`:e.unavailable()?`unavailable`:`unverified`}registry(){let t=this.data(`registry`);return t?.present===!0?t:null}rebuild(){let t=this.store.descriptor(),e={},i=this.data(`graphs`);e.graphs=this.srcState(`graphs`)!==`loaded`?this.srcState(`graphs`):i&&(i.availability.state===`available`||i.availability.state===`no_graph`)?`loaded`:`unverified`,e.bootstrap=t?`loaded`:`unverified`,e.capabilities=e.bootstrap,e.skills=this.srcState(`skills`),e.agents=this.srcState(`agents`),e.mcp=this.srcState(`mcp`),e.hosts=this.srcState(`hosts`),e.tasks=this.srcState(`tasks`),e.events=this.srcState(`events`),this.fed.set(H({capabilities:this.store.capabilities(),skills:this.data(`skills`),agents:this.data(`agents`),mcp:this.data(`mcp`),hosts:this.data(`hosts`),tasks:this.data(`tasks`),events:this.data(`events`)?.events??null,graphViews:i?.views??null,servingForge:t?.forge_id??null,availability:e}))}nodeById=tn(()=>{let t=new Map;for(let e of this.fed()?.nodes??[])t.set(e.id,e);return t});filtered=tn(()=>{let t=this.fed();if(!t)return[];let e=a(this.query()),i=this.kind();return t.nodes.filter(r=>i!==null&&r.kind!==i?!1:e?a(r.id).includes(e)||a(r.label).includes(e):!0)});impact=tn(()=>{let t=this.selected(),e=this.fed();return!t||!e?{nodes:new Set,edges:[]}:M$1(e,t.id)});sameDomain=tn(()=>{let t=this.selected(),e=this.data(`skills`);if(!t||t.kind!==`skill`||!e)return[];let i=t.id.slice(6),r=e.find(s=>s.id===i||s.name===t.label);return r?.domain?ue(e,r.domain,r.id):[]});declaringAgents=tn(()=>{let t=this.selected(),e=this.data(`agents`);if(!t||t.kind!==`skill`||!e)return[];let i=t.id.slice(6),s=this.data(`skills`)?.find(h=>h.id===i);return me(e,s?[s.id,s.name].filter(Boolean):[i,t.label])});domainAgents=tn(()=>{let t=this.selected(),e=this.data(`agents`),i=this.data(`skills`);if(!t||t.kind!==`skill`||!e||!i)return[];let r=t.id.slice(6),s=i.find(f=>f.id===r);if(!s?.domain)return[];let h=new Set(this.declaringAgents().map(f=>f.id));return ge(e,s.domain).filter(f=>!h.has(f.id))});select(t){this.selected.set(t),this.loadEntityDocs(t)}selectId(t){let e=this.nodeById().get(t);e&&this.select(e)}toggleKind(t){this.kind.set(this.kind()===t?null:t)}kindOptions(t){return G.filter(e=>(t.counts[e]??0)>0)}kindIcon(t){return ft[t]}label(t){return this.nodeById().get(t)?.label??t}openLink(t){return r(t)}endpointFor(t){return T$2[t]}sourceBadge(t){return t===`loaded`?`ok`:t===`unavailable`?`muted`:`warn`}sourceRows(){let t={federation:`GET /api/v1/federation`,registry:`GET /api/v1/registry/state`,skills:`GET /api/v1/skills`,agents:`GET /api/v1/agents`,mcp:`GET /api/v1/mcp/servers`,hosts:`GET /api/v1/hosts`,tasks:`GET /api/v1/tasks`,events:`GET /api/v1/events`,graphs:`GET /api/v1/graphs`};return fe.map(e=>({id:e,endpoint:t[e],state:this.srcState(e)}))}envState(){return this.store.accountEnvironment()?`loaded`:this.store.descriptor()?`unverified`:`unavailable`}onQuery(t){this.query.set(t)}async searchDocs(){let t=this.query().trim();if(t){this.docBusy.set(!0),this.docError.set(null),this.docsUnavailable.set(!1);try{this.hits.set(await hE(this.api.docsSearch(t))),this.docsSearched.set(!0)}catch(e){let i=c(e);i.status===404||i.body.code===`PORTAL-NOT-FOUND`?this.docsUnavailable.set(!0):this.docError.set(i)}finally{this.docBusy.set(!1)}}}async loadEntityDocs(t){this.entityDocs.set(null),this.entityDocsFor=t.id;try{let e=await hE(this.api.docsSearch(t.label,5));this.entityDocsFor===t.id&&this.entityDocs.set(e)}catch{this.entityDocsFor===t.id&&this.entityDocs.set(null)}}recommendations=tn(()=>this.fed()?_e({federation:this.data(`federation`),registry:this.registry(),environment:this.store.accountEnvironment(),skills:this.data(`skills`),agents:this.data(`agents`),mcp:this.data(`mcp`),hosts:this.data(`hosts`),tasks:this.data(`tasks`)}):[]);recPartial=tn(()=>this.fed()?[`federation`,`skills`,`mcp`,`hosts`,`tasks`,`registry`].some(e=>this.srcState(e)!==`loaded`):!1);recKindLabel=pe;static ɵfac=function(e){return new(e||n)};static ɵcmp=ei({type:n,selectors:[[`page-knowledge`]],decls:42,vars:39,consts:[[3,`title`,`subtitle`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[1,`card`],[`for`,`q`,1,`lbl`],[1,`row`],[1,`search-field`,`q-field`],[`name`,`search`,3,`size`],[`id`,`q`,`type`,`search`,1,`input`,3,`ngModelChange`,`keydown.enter`,`placeholder`,`ngModel`],[1,`btn`,`btn--primary`,3,`click`,`disabled`],[`role`,`status`],[`data-section`,`docs`,1,`card`],[1,`sec-title`],[`name`,`knowledge`,3,`size`],[3,`error`],[`icon`,`knowledge`,3,`title`],[1,`muted`],[`data-section`,`recommend`,1,`card`],[`name`,`compass`,3,`size`],[`data-note`,`partial`,1,`muted`,`warn-note`],[`data-list`,`recommendations`,1,`recs`],[`icon`,`compass`,3,`title`],[`kind`,`card`,3,`lines`],[`data-strip`,`sources`,1,`srcs`],[`data-source`,`environment`],[3,`state`,`labelOverride`],[`data-section`,`entities`,1,`card`],[1,`sec-head`],[`data-section`,`inspector`,`aria-live`,`polite`,1,`card`,`detail`,`fg-enter`],[`role`,`group`,1,`chips`],[`type`,`button`,1,`fg-pill`,3,`click`],[`type`,`button`,1,`fg-pill`],[`data-list`,`entities`,1,`nodes`],[`type`,`button`,1,`node`,3,`click`],[3,`name`,`size`],[1,`node__label`],[1,`node__id`],[`state`,`unverified`],[1,`detail__actions`],[1,`btn`,`btn--mini`,3,`routerLink`,`queryParams`,`fragment`],[1,`icon-btn`,3,`click`],[`name`,`chevron-right`,3,`size`],[1,`kv`],[1,`ev`],[1,`sub`,`muted`],[`data-list`,`relations`,1,`edges`],[`data-list`,`entity-docs`,1,`edges`],[`type`,`button`,1,`chip-link`,3,`click`],[1,`edge-ev`],[`data-list`,`same-domain`,1,`edges`],[`data-list`,`declared-by`,1,`edges`],[`data-list`,`domain-agents`,1,`edges`],[1,`doc-title`],[3,`retry`,`error`],[`data-lift`,``,1,`hit`],[1,`cat`],[`target`,`_blank`,`rel`,`noopener`,1,`btn`,3,`href`],[`name`,`external`,3,`size`],[`name`,`alert`,3,`size`],[1,`rec`],[1,`chip`],[1,`rec__reason`],[1,`rec__refs`],[1,`rec__src`],[1,`btn`,3,`routerLink`]],template:function(e,i){if(e&1&&(da(0,`ui-page-header`,0),oC(1,`t`),oC(2,`t`),da(3,`button`,1),Ta(`click`,function(){return i.load()}),ba(4,`ui-icon`,2),WS(5),oC(6,`t`),yd()(),da(7,`section`,3)(8,`label`,4),WS(9),oC(10,`t`),yd(),da(11,`div`,5)(12,`div`,6),ba(13,`ui-icon`,7),da(14,`input`,8),oC(15,`t`),eb(),Ta(`ngModelChange`,function(s){return i.onQuery(s)})(`keydown.enter`,function(){return i.searchDocs()}),yd()(),da(16,`button`,9),Ta(`click`,function(){return i.searchDocs()}),ba(17,`ui-icon`,7),WS(18),oC(19,`t`),yd()()(),uS(20,Te,3,4,`div`,10),uS(21,nt,18,15),da(22,`section`,11)(23,`h2`,12),ba(24,`ui-icon`,13),WS(25),oC(26,`t`),yd(),uS(27,it,1,1,`ui-error`,14)(28,at,2,3,`ui-empty`,15)(29,dt,6,7)(30,st,3,3,`p`,16),yd(),da(31,`section`,17)(32,`h2`,12),ba(33,`ui-icon`,18),WS(34),oC(35,`t`),yd(),da(36,`p`,16),WS(37),oC(38,`t`),yd(),uS(39,ct,4,4,`p`,19),uS(40,ut,3,0,`ul`,20)(41,_t,2,3,`ui-empty`,21),yd()),e&2){let r,s;Wm(`title`,sC(1,21,`knowledge.title`))(`subtitle`,sC(2,23,`knowledge.subtitle`)),hD(4),Wm(`size`,15),hD(),Dd(` `,sC(6,25,`state.refresh`),` `),hD(4),Jm(sC(10,27,`knowledge.search`)),hD(4),Wm(`size`,15),hD(),Wm(`placeholder`,sC(15,29,`knowledge.placeholder`))(`ngModel`,i.query()),nb(),hD(2),Wm(`disabled`,i.docBusy()||!i.query().trim()),hD(),Wm(`size`,14),hD(),Dd(` `,sC(19,31,`knowledge.search`),` `),hD(2),fS(i.loading()?20:-1),hD(),fS((r=i.fed())?21:-1,r),hD(3),Wm(`size`,15),hD(),Jm(sC(26,33,`knowledge.docs`)),hD(2),fS((s=i.docError())?27:i.docsUnavailable()?28:i.docsSearched()?29:30,s),hD(6),Wm(`size`,15),hD(),Jm(sC(35,35,`recommend.title`)),hD(3),Jm(sC(38,37,`recommend.note`)),hD(2),fS(i.recPartial()?39:-1),hD(),fS(i.recommendations().length?40:41)}},dependencies:[Zt,De$1,Yt,At,yc,T$1,_,D,I,cE,k$1,aE],styles:[`.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.lbl[_ngcontent-%COMP%]{display:block;font-weight:600;margin-bottom:var(--%NS%space-2)}.row[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-2)}.q-field[_ngcontent-%COMP%]{flex:1;max-width:none;margin-bottom:0}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm)}.sec-head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2);flex-wrap:wrap}.sec-title[_ngcontent-%COMP%], .sec-head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-lg);font-weight:650;display:flex;align-items:center;gap:var(--%NS%space-2)}.sec-head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%], .sec-title[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.srcs[_ngcontent-%COMP%]{list-style:none;display:flex;flex-wrap:wrap;gap:var(--%NS%space-2) var(--%NS%space-3);padding:0;margin:0 0 var(--%NS%space-3);font-size:var(--%NS%font-xs)}.srcs[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:inline-flex;gap:var(--%NS%space-2);align-items:center}.chips[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.nodes[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--%NS%space-2)}.node[_ngcontent-%COMP%]{width:100%;display:flex;align-items:center;gap:var(--%NS%space-2);padding:var(--%NS%space-2);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);color:var(--%NS%fg);font:inherit;text-align:left;cursor:pointer;background:transparent}.node[_ngcontent-%COMP%], .hit[_ngcontent-%COMP%], .rec[_ngcontent-%COMP%]{transition:border-color var(--%NS%motion-fast),box-shadow var(--%NS%motion-fast)}.node[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);flex:none}.node[_ngcontent-%COMP%]:hover{border-color:var(--%NS%accent-ink)}.node[data-unverified][_ngcontent-%COMP%]{border-style:dashed;background:color-mix(in srgb,var(--%NS%bg-elevated) 55%,transparent)}.node[data-selected][_ngcontent-%COMP%]{border-color:var(--%NS%accent-ink);box-shadow:0 0 0 1px var(--%NS%accent)}.node__label[_ngcontent-%COMP%], .node__id[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.node__label[_ngcontent-%COMP%], .doc-title[_ngcontent-%COMP%]{font-weight:600}.node__id[_ngcontent-%COMP%]{margin-left:auto;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.detail[_ngcontent-%COMP%]{border-left:3px solid var(--%NS%accent)}.detail__actions[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.kv[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin:var(--%NS%space-2) 0}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{min-width:7rem;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm);flex:none}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0}.ev[_ngcontent-%COMP%], .edges[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--%NS%space-1) var(--%NS%space-2)}.sub[_ngcontent-%COMP%]{margin:var(--%NS%space-3) 0 var(--%NS%space-1);font-weight:650}.edges[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:var(--%NS%space-1);font-size:var(--%NS%font-sm)}.edge-ev[_ngcontent-%COMP%], .rec__src[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.hit[_ngcontent-%COMP%]{border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);padding:var(--%NS%space-3);margin-bottom:var(--%NS%space-2)}.hit[_ngcontent-%COMP%]:hover, .rec[_ngcontent-%COMP%]:hover{border-color:var(--%NS%border-strong)}.hit[_ngcontent-%COMP%]:hover{box-shadow:var(--%NS%elev-hover)}.hit[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 6px;font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em}.hit[_ngcontent-%COMP%] footer[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin-top:var(--%NS%space-3);font-size:var(--%NS%font-xs)}.hit[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hit[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%], .rec[_ngcontent-%COMP%] footer[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{margin-left:auto}.cat[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);font-weight:600;flex-shrink:0;background:var(--%NS%accent-bg);border:1px solid color-mix(in srgb,var(--%NS%accent) 30%,transparent);border-radius:var(--%NS%radius-pill);padding:1px var(--%NS%space-2)}.warn-note[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-1);color:var(--%NS%warn, var(--%NS%fg-muted))}.recs[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:var(--%NS%space-2)}.rec[_ngcontent-%COMP%]{border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);padding:var(--%NS%space-3)}.rec[data-severity=warning][_ngcontent-%COMP%]{border-left:3px solid var(--%NS%warn, var(--%NS%accent))}.rec[data-severity=info][_ngcontent-%COMP%]{border-left:3px solid var(--%NS%info, var(--%NS%accent))}.rec[_ngcontent-%COMP%] header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}.rec__reason[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0;font-size:var(--%NS%font-sm)}.rec__refs[_ngcontent-%COMP%]{list-style:none;display:flex;flex-wrap:wrap;gap:var(--%NS%space-1) var(--%NS%space-2);padding:0;margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-xs)}.rec[_ngcontent-%COMP%] footer[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--%NS%space-1) var(--%NS%space-2)}`]})};export{ye as KnowledgePage}; \ No newline at end of file diff --git a/portal/assets/chunk-C0nXO1-7.js b/portal/assets/chunk-C0nXO1-7.js new file mode 100644 index 0000000..bd74747 --- /dev/null +++ b/portal/assets/chunk-C0nXO1-7.js @@ -0,0 +1 @@ +function b(e,o){let t=new Map(e.map(r=>[r.id,r.id])),s=r=>{let n=r;for(;t.get(n)!==n;)n=t.get(n);for(;t.get(r)!==r;){let u=t.get(r);t.set(r,n),r=u}return n};for(let r of o){if(!t.has(r.source)||!t.has(r.target))continue;let n=s(r.source),u=s(r.target);n!==u&&t.set(n,u)}let a=new Map;for(let r of e){let n=s(r.id);a.set(n,(a.get(n)??0)+1)}let c=Math.max(0,...a.values());return{nodes:e.length,edges:o.length,density:e.length?2*o.length/e.length:0,components:a.size,largestShare:e.length?c/e.length:0}}var d=250;var h=1200;var y=6e3;function l(e){return e.nodes<=d?`small`:e.nodes<=h?`medium`:e.nodes<=y?`large`:`very-large`}var i=new Set([`cose`]);var k=`grid`;var m={small:{cose:`ok`,concentric:`ok`,grid:`ok`,breadthfirst:`ok`,circle:`ok`},medium:{cose:`warn`,concentric:`ok`,grid:`ok`,breadthfirst:`ok`,circle:`ok`},large:{cose:`blocked`,concentric:`ok`,grid:`ok`,breadthfirst:`ok`,circle:`ok`},"very-large":{cose:`blocked`,concentric:`ok`,grid:`ok`,breadthfirst:`warn`,circle:`ok`}};var f={small:`cose`,medium:`concentric`,large:`grid`,"very-large":`grid`};var p={small:15e3,medium:6e4,large:3e4,"very-large":3e4};var g={small:0,medium:300,large:150,"very-large":100};function C(e){return g[l(e)]}var S=14;function G(e,o={}){let t=l(e),s=L(e,t),a=o.preferred??null,c=a??s,r=m[t][c];return{layout:c,source:a?`user`:`auto`,cost:r,expensive:r!==`ok`,recommended:s,timeoutMs:i.has(c)?p[t]:0,numIter:c===`cose`?g[t]:0,progressive:t===`very-large`,cluster:t===`very-large`&&o.env?.grouped!==!0}}function v(e,o){return m[l(o)][e]}function L(e,o){return o===`small`&&e.density>S?`concentric`:e.components>Math.max(8,e.nodes*.2)?`grid`:f[o]}function M(e,o){return i.has(e)?p[l(o)]:0}export{k as a,b as i,G as n,v as o,M as r,C as t}; \ No newline at end of file diff --git a/portal/assets/chunk-C5-CCisw.js b/portal/assets/chunk-C5-CCisw.js deleted file mode 100644 index 713347a..0000000 --- a/portal/assets/chunk-C5-CCisw.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as da,Dt as pS,Et as p,F as Wm,Gt as wS,K as aC,Lt as tn,M as Ta,Mt as sC,N as Uh,P as WS,Q as cE,Tt as oC,X as bS,Xt as yd,Yt as yc,Z as ba,_ as Km,at as ey,ct as gS,dt as hE,gt as k,h as Jm,ht as jh,it as ei,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,xt as nC,yt as mS,zt as uS}from"./chunk-BelLryvf.js";import{i as n,o as f,r as g,t as g$1}from"./main-A2NKRJGT.js";import{a as l,o as w,s as y}from"./chunk-0WpwvubF.js";import{t as _}from"./chunk-BKRLVsID.js";import{t as D}from"./chunk-CiuPOfJ0.js";import{n as k$1,t as I}from"./chunk-D2KAfPv6.js";import{t as T}from"./chunk-BBusSOqc.js";var le=e=>({time:e});var ne=(e,n)=>n.k;var pe=(e,n)=>n.name;function se(e,n){if(e&1&&(da(0,`span`),WS(1),oC(2,`t`),yd()),e&2){let t=bS();hD(),Dd(` · `,aC(2,1,`common.updatedAt`,nC(4,le,t.stamp(n))))}}function de(e,n){e&1&&(da(0,`div`,7),ba(1,`ui-state-badge`,23),da(2,`span`),WS(3),oC(4,`t`),yd()()),e&2&&(hD(3),Jm(sC(4,1,`registry.cliUnavailable`)))}function ce(e,n){if(e&1&&ba(0,`option`,13),e&2){let t=n.$implicit;Wm(`value`,t)}}function me(e,n){if(e&1){let t=wS();da(0,`button`,24),Ta(`click`,function(){let c=jh(t).$implicit,f=bS();return Uh(f.plan(c))}),WS(1),oC(2,`t`),yd()}if(e&2){let t=n.$implicit,o=bS();Km(`btn--danger`,t===`uninstall`),Wm(`disabled`,o.busy()||!o.forge().trim()),Ar(`data-plan`,t),hD(),Dd(` `,sC(2,5,`registry.action.`+t),` `)}}function _e(e,n){e&1&&(da(0,`div`,16),ba(1,`div`,25),da(2,`p`,4),WS(3),oC(4,`t`),yd()()),e&2&&(hD(3),Jm(sC(4,1,`registry.planning`)))}function ue(e,n){if(e&1&&(da(0,`div`)(1,`dt`),WS(2),yd(),da(3,`dd`),WS(4),yd()()),e&2){let t=n.$implicit;hD(2),Jm(t.k),hD(2),Jm(t.v)}}function ge(e,n){if(e&1&&(da(0,`dl`,28),gS(1,ue,5,2,`div`,null,ne),yd()),e&2){let t=bS(2);hD(),mS(t.previewEntries())}}function ye(e,n){e&1&&(da(0,`pre`,29),WS(1),yd()),e&2&&(hD(),Jm(n))}function ve(e,n){e&1&&(da(0,`p`,4),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`registry.previewEmpty`)))}function xe(e,n){if(e&1){let t=wS();da(0,`section`,17)(1,`div`,26)(2,`h3`),WS(3),oC(4,`t`),yd(),ba(5,`ui-state-badge`,27),yd(),da(6,`p`,4),WS(7),oC(8,`t`),yd(),da(9,`dl`,28)(10,`div`)(11,`dt`),WS(12),oC(13,`t`),yd(),da(14,`dd`)(15,`code`),WS(16),yd()()(),da(17,`div`)(18,`dt`),WS(19),oC(20,`t`),yd(),da(21,`dd`)(22,`code`),WS(23),yd()()()(),uS(24,ge,3,0,`dl`,28)(25,ye,2,1,`pre`,29)(26,ve,3,3,`p`,4),da(27,`details`,30)(28,`summary`),WS(29),oC(30,`t`),yd(),da(31,`pre`),WS(32),yd()(),da(33,`div`,31)(34,`button`,32),Ta(`click`,function(){jh(t);let c=bS();return Uh(c.confirmExecute())}),ba(35,`ui-icon`,33),WS(36),oC(37,`t`),yd(),da(38,`button`,32),Ta(`click`,function(){jh(t);let c=bS();return Uh(c.reset())}),WS(39),oC(40,`t`),yd()()()}if(e&2){let t,o=n,c=bS();Ar(`data-action`,o.plan.action)(`data-forge`,o.plan.forge)(`data-status`,o.status),hD(3),Jm(sC(4,21,`registry.review`)),hD(2),Wm(`state`,o.status),hD(2),Jm(sC(8,23,`registry.review.hint`)),hD(5),Jm(sC(13,25,`registry.op`)),hD(4),Jm(o.plan.action),hD(3),Jm(sC(20,27,`registry.forge`)),hD(4),Jm(o.plan.forge),hD(),fS(c.previewEntries().length?24:(t=c.previewText())?25:26,t),hD(5),Jm(sC(30,29,`fdoc.raw`)),hD(3),Jm(c.planText(o)),hD(2),Km(`btn--primary`,!c.destructive())(`btn--danger`,c.destructive()),Ar(`data-exec`,o.plan.action),hD(),Wm(`size`,15),hD(),Dd(` `,sC(37,31,`install.confirm.execute`),` `),hD(3),Jm(sC(40,33,`state.cancel`))}}function fe(e,n){e&1&&(da(0,`div`,18),ba(1,`div`,25),da(2,`p`,4),WS(3),oC(4,`t`),yd()()),e&2&&(hD(3),Jm(sC(4,1,`registry.executing`)))}function be(e,n){if(e&1&&(da(0,`div`)(1,`dt`),WS(2),yd(),da(3,`dd`),WS(4),yd()()),e&2){let t=n.$implicit;hD(2),Jm(t.k),hD(2),Jm(t.v)}}function Se(e,n){if(e&1&&(da(0,`dl`,28),gS(1,be,5,2,`div`,null,ne),yd()),e&2){let t=bS(2);hD(),mS(t.resultEntries())}}function Ce(e,n){if(e&1){let t=wS();da(0,`section`,19)(1,`div`,26)(2,`h3`),WS(3),oC(4,`t`),yd(),ba(5,`ui-state-badge`,27),yd(),uS(6,Se,3,0,`dl`,28),da(7,`details`,30)(8,`summary`),WS(9),oC(10,`t`),yd(),da(11,`pre`),WS(12),yd()(),da(13,`div`,31)(14,`button`,32),Ta(`click`,function(){jh(t);let c=bS();return Uh(c.reset())}),WS(15),oC(16,`t`),yd()()()}if(e&2){let t=n,o=bS();Ar(`data-status`,t.status),hD(3),Jm(sC(4,7,`registry.receipt`)),hD(2),Wm(`state`,t.status),hD(),fS(o.resultEntries().length?6:-1),hD(3),Jm(sC(10,9,`fdoc.raw`)),hD(3),Jm(o.resultText(t)),hD(3),Jm(sC(16,11,`registry.newOp`))}}function he(e,n){if(e&1){let t=wS();da(0,`ui-error`,34),Ta(`retry`,function(){jh(t);let c=bS();return Uh(c.reset())}),yd()}e&2&&Wm(`error`,n)}function Ee(e,n){e&1&&(da(0,`div`,7),ba(1,`ui-state-badge`,23),da(2,`span`),WS(3),oC(4,`t`),yd()()),e&2&&(hD(3),Jm(sC(4,1,`registry.unavailable`)))}function we(e,n){if(e&1){let t=wS();da(0,`ui-error`,34),Ta(`retry`,function(){jh(t);let c=bS();return Uh(c.load())}),yd()}e&2&&Wm(`error`,n)}function Pe(e,n){e&1&&(da(0,`div`,22),oC(1,`t`),ba(2,`ui-skeleton`,35),yd()),e&2&&(Ar(`aria-label`,sC(1,2,`state.loading`)),hD(2),Wm(`lines`,2))}function Ne(e,n){if(e&1&&(da(0,`div`,36),ba(1,`ui-state-badge`,27),da(2,`span`),WS(3),oC(4,`t`),yd(),da(5,`code`,4),WS(6),yd()()),e&2){let t=bS();hD(),Wm(`state`,t.error===`malformed`?`FAILED`:`UNVERIFIED`),hD(2),Jm(sC(4,3,t.error===`malformed`?`registry.malformed`:`registry.absent`)),hD(3),Jm(t.state_path)}}function Oe(e,n){if(e&1&&(da(0,`span`,41),oC(1,`t`),WS(2),oC(3,`t`),yd()),e&2){let t=bS().$implicit;Ar(`title`,sC(1,3,`registry.pinned`)),hD(2),ey(` `,sC(3,5,`registry.pinned`),` `,t.receipt.pinned,` `)}}function Re(e,n){if(e&1){let t=wS();da(0,`button`,44),Ta(`click`,function(){let c=jh(t).$implicit,f=bS().$implicit,N=bS(3);return Uh(N.plan(c,f.name))}),WS(1),oC(2,`t`),yd()}if(e&2){let t=n.$implicit,o=bS().$implicit,c=bS(3);Km(`rops__op--danger`,t===`uninstall`),Wm(`disabled`,c.busy()),Ar(`data-plan`,t)(`data-forge`,o.name),hD(),Dd(` `,sC(2,6,`registry.action.`+t),` `)}}function Ie(e,n){if(e&1&&(da(0,`tr`)(1,`td`)(2,`code`),WS(3),yd(),uS(4,Oe,4,7,`span`,41),yd(),da(5,`td`),WS(6),yd(),da(7,`td`)(8,`code`),WS(9),yd()(),da(10,`td`),WS(11),yd(),da(12,`td`)(13,`div`,42),gS(14,Re,3,8,`button`,43,pS),yd()()()),e&2){let t=n.$implicit,o=bS(3);Ar(`data-forge`,t.name),hD(3),Jm(t.name),hD(),fS(t.receipt.pinned?4:-1),hD(2),Jm(t.receipt.version??`—`),hD(3),Jm(t.receipt.method??t.receipt.dist??`—`),hD(2),Jm(t.receipt.installedAt??`—`),hD(3),mS(o.rowActions(t))}}function ke(e,n){if(e&1&&(da(0,`div`,37)(1,`table`,39)(2,`thead`)(3,`tr`)(4,`th`,40),WS(5),oC(6,`t`),yd(),da(7,`th`,40),WS(8),oC(9,`t`),yd(),da(10,`th`,40),WS(11),oC(12,`t`),yd(),da(13,`th`,40),WS(14),oC(15,`t`),yd(),da(16,`th`,40),WS(17),oC(18,`t`),yd()()(),da(19,`tbody`),gS(20,Ie,16,6,`tr`,null,pe),yd()()()),e&2){let t=bS(2);hD(5),Jm(sC(6,5,`registry.forge`)),hD(3),Jm(sC(9,7,`settings.version`)),hD(3),Jm(sC(12,9,`registry.method`)),hD(3),Jm(sC(15,11,`registry.installedAt`)),hD(3),Jm(sC(18,13,`registry.colOps`)),hD(3),mS(t.rows())}}function Te(e,n){e&1&&(ba(0,`ui-empty`,38),oC(1,`t`)),e&2&&Wm(`title`,sC(1,1,`registry.none`))}function Be(e,n){if(e&1&&uS(0,Ne,7,5,`div`,36)(1,ke,22,15,`div`,37)(2,Te,2,3,`ui-empty`,38),e&2){let t=bS();fS(n.present?t.rows().length?1:2:0)}}var J=class e{api=p(g);toast=p(f);state=new l;phase=k(`idle`);forge=k(``);planReceipt=k(null);execReceipt=k(null);error=k(null);cliUnavailable=k(!1);actions=[`install`,`update`,`reinstall`,`rollback`,`pin`,`unpin`,`repair`,`uninstall`];busy=tn(()=>this.phase()===`planning`||this.phase()===`executing`);destructive=tn(()=>{let n=this.planReceipt()?.plan.action;return n===`uninstall`||n===`rollback`});rows=tn(()=>Object.entries(this.state.data()?.forges??{}).map(([n,t])=>({name:n,receipt:t})));installedNames=tn(()=>this.rows().map(n=>n.name));previewEntries=tn(()=>ie(this.planReceipt()?.plan.preview));previewText=tn(()=>{let n=this.planReceipt()?.plan.preview;return typeof n==`string`?n:null});resultEntries=tn(()=>ie(this.execReceipt()?.result));stamp=y;constructor(){this.load()}async load(){await this.state.load(()=>this.api.registryState())}rowActions(n){let t=[`update`,`reinstall`,`rollback`,`repair`];return t.push(n.receipt.pinned?`unpin`:`pin`),t.push(`uninstall`),t}async plan(n,t){let o=(t??this.forge()).trim();if(!(this.busy()||!o)){t!==void 0&&this.forge.set(t),this.error.set(null),this.planReceipt.set(null),this.execReceipt.set(null),this.phase.set(`planning`);try{let c=await hE(this.api.registryPlan({action:n,forge:o}));this.planReceipt.set(c),this.phase.set(`review`),c.status===`planned`&&this.toast.show(`registry.toast.planned`,`info`,{params:{action:n,forge:o}})}catch(c){this.fail(c)}}}async confirmExecute(){let n=this.planReceipt();if(!(this.phase()!==`review`||!n)){this.error.set(null),this.phase.set(`executing`);try{let t=await hE(this.api.registryExecute({action:n.plan.action,forge:n.plan.forge,plan:n.plan,planToken:n.plan_token}));this.execReceipt.set(t),this.phase.set(`receipt`),this.toast.show(`registry.toast.executed`,t.status===`executed`?`success`:`error`,{params:{action:n.plan.action,forge:n.plan.forge,status:t.status}}),await this.load()}catch(t){this.fail(t)}}}reset(){this.phase.set(`idle`),this.planReceipt.set(null),this.execReceipt.set(null),this.error.set(null)}asText(n){return n.target?.value??``}planText(n){return JSON.stringify(n.plan,null,2)}resultText(n){return JSON.stringify(n.result??n,null,2)}fail(n$1){let t=n$1 instanceof n?n$1:new n(0);t.body.code===`PORTAL-CLI-UNAVAILABLE`&&this.cliUnavailable.set(!0),this.error.set(t),this.phase.set(`idle`)}static ɵfac=function(t){return new(t||e)};static ɵcmp=ei({type:e,selectors:[[`registry-ops-panel`]],decls:44,vars:36,consts:[[`data-section`,`registry-ops`,`aria-labelledby`,`rops-h`,1,`card`],[1,`rops__head`],[`id`,`rops-h`],[1,`src`],[1,`muted`],[1,`icon-btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[`role`,`note`,1,`unv`],[1,`rops__form`],[`for`,`registry-forge`,1,`rops__field`],[1,`lbl`],[`id`,`registry-forge`,`name`,`registry-forge`,`type`,`text`,`list`,`registry-forges`,`autocomplete`,`off`,3,`input`,`value`,`disabled`],[`id`,`registry-forges`],[3,`value`],[`role`,`group`,1,`rops__actions`],[1,`btn`,3,`btn--danger`,`disabled`],[`role`,`status`,`aria-live`,`polite`,`data-section`,`registry-planning`,1,`running`],[`data-section`,`registry-review`,1,`rops__review`],[`role`,`status`,`aria-live`,`polite`,`data-section`,`registry-executing`,1,`running`],[`data-section`,`registry-receipt`,1,`rops__receipt`],[3,`error`],[`data-section`,`registry-state`,1,`rops__state`],[`role`,`status`],[`state`,`UNVERIFIED`],[1,`btn`,3,`click`,`disabled`],[`aria-hidden`,`true`,1,`running__spinner`],[1,`rops__review-head`],[3,`state`],[1,`rops__kv`],[1,`rops__pre`],[1,`raw`],[1,`rops__row`],[1,`btn`,3,`click`],[`name`,`shield-check`,3,`size`],[3,`retry`,`error`],[`kind`,`row`,3,`lines`],[`role`,`note`,`data-state`,`absent`,1,`unv`],[1,`rops__table-wrap`],[`icon`,`gem`,3,`title`],[1,`table`],[`scope`,`col`],[1,`rops__pin`],[1,`rops__row-ops`],[1,`rops__op`,3,`rops__op--danger`,`disabled`],[1,`rops__op`,3,`click`,`disabled`]],template:function(t,o){if(t&1&&(da(0,`section`,0)(1,`div`,1)(2,`div`)(3,`h2`,2),WS(4),oC(5,`t`),yd(),da(6,`p`,3)(7,`code`),WS(8,`POST /api/v1/registry/plan · POST /api/v1/registry/execute · GET /api/v1/registry/state`),yd(),uS(9,se,3,6,`span`),yd(),da(10,`p`,4),WS(11),oC(12,`t`),yd()(),da(13,`button`,5),oC(14,`t`),Ta(`click`,function(){return o.load()}),ba(15,`ui-icon`,6),yd()(),uS(16,de,5,3,`div`,7),da(17,`div`,8)(18,`label`,9)(19,`span`,10),WS(20),oC(21,`t`),yd(),da(22,`input`,11),oC(23,`t`),Ta(`input`,function(f){return o.forge.set(o.asText(f))}),yd()(),da(24,`datalist`,12),gS(25,ce,1,1,`option`,13,pS),yd(),da(27,`div`,14),oC(28,`t`),gS(29,me,3,7,`button`,15,pS),yd()(),uS(31,_e,5,3,`div`,16),uS(32,xe,41,35,`section`,17),uS(33,fe,5,3,`div`,18),uS(34,Ce,17,13,`section`,19),uS(35,he,1,1,`ui-error`,20),da(36,`div`,21)(37,`h3`),WS(38),oC(39,`t`),yd(),uS(40,Ee,5,3,`div`,7),uS(41,we,1,1,`ui-error`,20),uS(42,Pe,3,4,`div`,22),uS(43,Be,3,1),yd()()),t&2){let c,f,N,K,Q,W;hD(4),Jm(sC(5,22,`registry.title`)),hD(5),fS((c=o.state.loadedAt())?9:-1,c),hD(2),Jm(sC(12,24,`registry.hint`)),hD(2),Wm(`disabled`,o.busy()),Ar(`aria-label`,sC(14,26,`state.refresh`)),hD(2),Wm(`size`,14),hD(),fS(o.cliUnavailable()?16:-1),hD(4),Jm(sC(21,28,`registry.forge`)),hD(2),Wm(`value`,o.forge())(`disabled`,o.busy()),Ar(`placeholder`,sC(23,30,`registry.forge.hint`)),hD(3),mS(o.installedNames()),hD(2),Ar(`aria-label`,sC(28,32,`registry.title`)),hD(2),mS(o.actions),hD(2),fS(o.phase()===`planning`?31:-1),hD(),fS((f=o.phase()===`review`&&o.planReceipt())?32:-1,f),hD(),fS(o.phase()===`executing`?33:-1),hD(),fS((N=o.phase()===`receipt`&&o.execReceipt())?34:-1,N),hD(),fS((K=o.error())?35:-1,K),hD(3),Jm(sC(39,34,`registry.state`)),hD(2),fS(o.state.unavailable()?40:-1),hD(),fS((Q=o.state.error())?41:-1,Q),hD(),fS(o.state.loading()&&!o.state.data()?42:-1),hD(),fS((W=o.state.data())?43:-1,W)}},dependencies:[I,D,_,cE,k$1,aE],styles:[`.rops__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.rops__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650}.src[_ngcontent-%COMP%]{margin:4px 0 0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.unv[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-3);padding:var(--%NS%space-3);margin-bottom:var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.rops__form[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.rops__field[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:min(30rem,100%);padding:var(--%NS%space-2) var(--%NS%space-3);border:1px solid var(--%NS%border-strong);border-radius:var(--%NS%radius-md);background:var(--%NS%bg);color:var(--%NS%fg);font:inherit}.rops__actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2)}.rops__review[_ngcontent-%COMP%], .rops__receipt[_ngcontent-%COMP%]{border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-lg);padding:var(--%NS%space-3);margin-bottom:var(--%NS%space-3);background:var(--%NS%bg-elevated)}.rops__review-head[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3)}.rops__review-head[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-md)}.rops__kv[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin:var(--%NS%space-3) 0 0}.rops__kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3)}.rops__kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{min-width:8rem;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm)}.rops__kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;min-width:0;overflow-wrap:anywhere}.rops__pre[_ngcontent-%COMP%]{background:var(--%NS%bg);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);padding:var(--%NS%space-3);overflow-x:auto;font-size:var(--%NS%font-xs);white-space:pre-wrap}.rops__row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2);margin-top:var(--%NS%space-3)}.rops__state[_ngcontent-%COMP%]{margin-top:var(--%NS%space-4)}.rops__state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-md)}.rops__table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.rops__pin[_ngcontent-%COMP%]{display:inline-block;margin-left:var(--%NS%space-2);font-size:var(--%NS%font-xs);font-weight:700;color:var(--%NS%accent-ink);background:var(--%NS%accent-bg);border-radius:var(--%NS%radius-pill);padding:1px 8px}.rops__row-ops[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:4px}.rops__op[_ngcontent-%COMP%]{padding:2px 8px;border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-pill);background:transparent;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs);font-weight:600;cursor:pointer}.rops__op[_ngcontent-%COMP%]:hover{color:var(--%NS%fg);border-color:var(--%NS%border-strong);background:var(--%NS%bg-hover)}.rops__op--danger[_ngcontent-%COMP%]{color:var(--%NS%error);border-color:color-mix(in srgb,var(--%NS%error) 45%,transparent)}.rops__op--%NS%danger[_ngcontent-%COMP%]:hover{background:color-mix(in srgb,var(--%NS%error) 12%,transparent);color:var(--%NS%error)}.rops__op[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:default}`]})};function ie(e){if(!e||typeof e!=`object`||Array.isArray(e))return[];let n=[];for(let[t,o]of Object.entries(e)){if(n.length>=14)break;n.push({k:t,v:o==null?`—`:typeof o==`object`?JSON.stringify(o):String(o)})}return n}var Me=e=>({time:e});var Fe=e=>[`/forges`,e];var Ve=(e,n)=>n.id;function De(e,n){if(e&1&&(da(0,`span`),WS(1),oC(2,`t`),yd()),e&2){let t=bS();hD(),Dd(` · `,aC(2,1,`common.updatedAt`,nC(4,Me,t.stamp(n))))}}function Ae(e,n){if(e&1&&(da(0,`p`,5)(1,`span`),WS(2),oC(3,`t`),yd(),da(4,`span`),WS(5),oC(6,`t`),yd(),da(7,`span`),WS(8),oC(9,`t`),yd(),da(10,`span`),WS(11),oC(12,`t`),yd()()),e&2){let t=n;hD(2),ey(``,sC(3,8,`federation.catalog`),`: `,t.summary.catalog),hD(3),ey(``,sC(6,10,`federation.installed`),`: `,t.summary.installed),hD(3),ey(``,sC(9,12,`federation.mcp`),`: `,t.summary.with_mcp),hD(3),ey(``,sC(12,14,`federation.checkouts`),`: `,t.summary.with_checkout)}}function ze(e,n){e&1&&(da(0,`div`,6),ba(1,`ui-state-badge`,11),da(2,`span`),WS(3),oC(4,`t`),yd()()),e&2&&(hD(3),Jm(sC(4,1,`federation.unavailable`)))}function $e(e,n){if(e&1){let t=wS();da(0,`ui-error`,12),Ta(`retry`,function(){jh(t);let c=bS();return Uh(c.load())}),yd()}e&2&&Wm(`error`,n)}function Ue(e,n){e&1&&(da(0,`div`,8),oC(1,`t`),ba(2,`ui-skeleton`,13),yd()),e&2&&(Ar(`aria-label`,sC(1,2,`state.loading`)),hD(2),Wm(`lines`,4))}function Le(e,n){e&1&&ba(0,`ui-icon`,18),e&2&&Wm(`size`,15)}function je(e,n){e&1&&(da(0,`span`,21),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`explorer.serving`)))}function He(e,n){e&1&&(da(0,`span`,22),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`explorer.registryOnly`)))}function Je(e,n){e&1&&ba(0,`ui-state-badge`,11)}function Ge(e,n){e&1&&(da(0,`span`,24),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`state.absent`)))}function qe(e,n){if(e&1&&(da(0,`code`,25),WS(1),yd()),e&2){let t=bS().$implicit;Ar(`title`,t.checkout),hD(),Jm(t.checkout)}}function Ke(e,n){e&1&&ba(0,`ui-state-badge`,11)}function Qe(e,n){if(e&1&&(da(0,`span`,24),WS(1),oC(2,`t`),yd()),e&2){let t=bS().$implicit;hD(),Jm(sC(2,1,t.mcp===null?`federation.mcpAbsent`:`federation.mcpReady`))}}function We(e,n){if(e&1&&(da(0,`tr`)(1,`td`)(2,`div`,17),uS(3,Le,1,1,`ui-icon`,18),da(4,`div`,19)(5,`strong`),WS(6),yd(),da(7,`code`,20),WS(8),yd()(),uS(9,je,3,3,`span`,21),uS(10,He,3,3,`span`,22),yd()(),da(11,`td`),ba(12,`ui-state-badge`,23),yd(),da(13,`td`),WS(14),yd(),da(15,`td`),uS(16,Je,1,0,`ui-state-badge`,11)(17,Ge,3,3,`span`,24)(18,qe,2,2,`code`,25),yd(),da(19,`td`),uS(20,Ke,1,0,`ui-state-badge`,11)(21,Qe,3,3,`span`,24),yd(),da(22,`td`)(23,`a`,26),oC(24,`t`),ba(25,`ui-icon`,27),yd()()()),e&2){let t=n.$implicit;Ar(`data-serving`,t.serving||null),hD(3),fS(t.serving?3:-1),hD(3),Jm(t.name??t.id),hD(2),Jm(t.id),hD(),fS(t.serving?9:-1),hD(),fS(t.registryOnly?10:-1),hD(2),Wm(`state`,t.state??`UNVERIFIED`),hD(2),Jm(t.version??`—`),hD(2),fS(t.checkout===void 0?16:t.checkout===null?17:18),hD(4),fS(t.mcp===void 0?20:21),hD(3),Wm(`routerLink`,nC(15,Fe,t.id)),Ar(`aria-label`,sC(24,13,`state.viewDetails`)),hD(2),Wm(`size`,15)}}function Xe(e,n){if(e&1&&(da(0,`div`,9)(1,`table`,14)(2,`thead`)(3,`tr`)(4,`th`,15),WS(5),oC(6,`t`),yd(),da(7,`th`,15),WS(8),oC(9,`t`),yd(),da(10,`th`,15),WS(11),oC(12,`t`),yd(),da(13,`th`,15),WS(14),oC(15,`t`),yd(),da(16,`th`,15),WS(17),oC(18,`t`),yd(),da(19,`th`,15)(20,`span`,16),WS(21),oC(22,`t`),yd()()()(),da(23,`tbody`),gS(24,We,26,17,`tr`,null,Ve),yd()()()),e&2){let t=bS();hD(5),Jm(sC(6,6,`table.id`)),hD(3),Jm(sC(9,8,`skills.state`)),hD(3),Jm(sC(12,10,`settings.version`)),hD(3),Jm(sC(15,12,`explorer.checkout`)),hD(3),Jm(sC(18,14,`mcp.title`)),hD(4),Jm(sC(22,16,`state.viewDetails`)),hD(3),mS(t.rows())}}function Ye(e,n){e&1&&(ba(0,`ui-empty`,10),oC(1,`t`)),e&2&&Wm(`title`,sC(1,1,`explorer.empty`))}var ae=class e{api=p(g);store=p(g$1);fed=new l;rows=tn(()=>w(this.store.descriptor(),this.store.health(),this.fed.data()));stamp=y;constructor(){this.load()}async load(){await Promise.allSettled([this.store.refreshHealth(),this.fed.load(()=>this.api.federation())])}static ɵfac=function(t){return new(t||e)};static ɵcmp=ei({type:e,selectors:[[`page-explorer`]],decls:19,vars:16,consts:[[`hintId`,`forge`,3,`title`,`subtitle`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[`data-section`,`forges`,1,`card`],[1,`src`],[1,`sum`],[`role`,`note`,1,`unv`],[3,`error`],[`role`,`status`],[1,`table-wrap`],[`icon`,`network`,3,`title`],[`state`,`UNVERIFIED`],[3,`retry`,`error`],[`kind`,`row`,3,`lines`],[1,`table`],[`scope`,`col`],[1,`sr-only`],[1,`id`],[`name`,`gem`,3,`size`],[1,`id__text`],[1,`id__slug`],[1,`chip`],[1,`chip`,`chip--mut`],[3,`state`],[1,`muted`],[1,`path`],[1,`icon-btn`,3,`routerLink`],[`name`,`chevron-right`,3,`size`]],template:function(t,o){if(t&1&&(da(0,`ui-page-header`,0),oC(1,`t`),oC(2,`t`),da(3,`button`,1),Ta(`click`,function(){return o.load()}),ba(4,`ui-icon`,2),WS(5),oC(6,`t`),yd()(),da(7,`section`,3)(8,`p`,4)(9,`code`),WS(10,`bootstrap · GET /api/v1/federation`),yd(),uS(11,De,3,6,`span`),yd(),uS(12,Ae,13,16,`p`,5),uS(13,ze,5,3,`div`,6),uS(14,$e,1,1,`ui-error`,7),uS(15,Ue,3,4,`div`,8),uS(16,Xe,26,18,`div`,9)(17,Ye,2,3,`ui-empty`,10),yd(),ba(18,`registry-ops-panel`)),t&2){let c,f,N;Wm(`title`,sC(1,10,`explorer.title`))(`subtitle`,sC(2,12,`explorer.subtitle`)),hD(4),Wm(`size`,15),hD(),Dd(` `,sC(6,14,`state.refresh`),` `),hD(6),fS((c=o.fed.loadedAt())?11:-1,c),hD(),fS((f=o.fed.data())?12:-1,f),hD(),fS(o.fed.unavailable()?13:-1),hD(),fS((N=o.fed.error())?14:-1,N),hD(),fS(o.fed.loading()&&!o.fed.data()?15:-1),hD(),fS(o.rows().length?16:o.fed.attempted()&&!o.fed.loading()&&!o.fed.error()&&!o.fed.unavailable()?17:-1)}},dependencies:[yc,T,I,_,D,cE,k$1,J,aE],styles:[`.card[_ngcontent-%COMP%]{padding:var(--%NS%space-3)}.src[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-2);padding:0 var(--%NS%space-2);font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.sum[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2) var(--%NS%space-4);margin:0 0 var(--%NS%space-3);padding:0 var(--%NS%space-2);font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.unv[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-3);margin:0 var(--%NS%space-2) var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.table[_ngcontent-%COMP%]{min-width:640px}.id[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);min-width:0}.id[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);flex:none}.id__text[_ngcontent-%COMP%]{display:grid;min-width:0}.id__slug[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip[_ngcontent-%COMP%]{flex:none;font-size:var(--%NS%font-xs);font-weight:700;color:var(--%NS%accent-ink);background:var(--%NS%accent-bg);border-radius:var(--%NS%radius-pill);padding:1px 8px}.chip--mut[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);background:var(--%NS%bg-hover)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.path[_ngcontent-%COMP%]{display:inline-block;max-width:38ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}`]})};export{ae as ExplorerPage}; \ No newline at end of file diff --git a/portal/assets/chunk-CCHwcZ3Q.js b/portal/assets/chunk-CCHwcZ3Q.js new file mode 100644 index 0000000..a1489df --- /dev/null +++ b/portal/assets/chunk-CCHwcZ3Q.js @@ -0,0 +1,5 @@ +import{r as l$1}from"./chunk-BYYLUO5t.js";import{a as T}from"./chunk-pVzsnrcB.js";var e=[`cose`,`concentric`,`grid`,`breadthfirst`,`circle`];var m={forge:{color:`#e8611c`,shape:`round-rectangle`},capability:{color:`#1d5fd1`,shape:`diamond`},skill:{color:`#7c3aed`,shape:`ellipse`},agent:{color:`#0f8a4c`,shape:`hexagon`},mcp:{color:`#c026d3`,shape:`triangle`},host:{color:`#64748b`,shape:`rectangle`},operation:{color:`#b45309`,shape:`star`},tool:{color:`#0e7490`,shape:`pentagon`}};var v={forge:`gem`,capability:`shield-check`,skill:`skills`,agent:`agents`,mcp:`mcp`,host:`hosts`,operation:`tasks`,tool:`terminal`};var E={declares:{color:`#7d8894`},origin:{color:`#1d5fd1`},associated:{color:`#7c3aed`},bound_to:{color:`#0f8a4c`},observed:{color:`#0e7490`}};var N={loaded:`solid`,unverified:`dashed`,unavailable:`dotted`};var l=new Set([`FAILED`,`DEGRADED`,`BLOCKED`,`failed`,`error`]);function p(o){if(o.state&&l.has(o.state))return!0;let t=o.meta?.exit_code;return typeof t==`number`&&t!==0}function g(o,t){return o.unverified&&o.evidence.every(i=>t.sources[i]?.state===`unavailable`)}function F(o){let t=new Map;for(let e of o.edges)t.set(e.source,(t.get(e.source)??0)+1),t.set(e.target,(t.get(e.target)??0)+1);return{nodes:o.nodes.map(e=>l$1(l$1(l$1(l$1({id:e.id,label:e.label,kind:e.kind,unverified:e.unverified,absent:g(e,o),failed:p(e),degree:t.get(e.id)??0},e.state!==void 0?{state:e.state}:{}),e.category!==void 0?{category:e.category}:{}),e.origin!==void 0?{origin:e.origin}:{}),e.version!==void 0?{version:e.version}:{})),edges:o.edges.map(e=>({id:e.id,source:e.source,target:e.target,kind:e.kind,evidence:e.evidence,evidenceState:o.sources[e.evidence]?.state??`unverified`,evidenceEndpoint:T[e.evidence]}))}}function k(o,t){if(t===`far`)return o.label;let i=[o.state,o.category??o.origin,o.version].filter(e=>typeof e==`string`&&e!==``).join(` · `);if(t===`mid`)return i?`${o.label} +${i}`:o.label;let d=`${o.degree} rel`;return i?`${o.label} +${i} +${d}`:`${o.label} +${d}`}function x(o,t){let i=new Map,d=(r,n)=>{let a=i.get(r);a?a.push(n):i.set(r,[n])};for(let r of o.nodes)if(t===`kind`)d(`grp:kind:${r.kind}`,r.id);else if(t===`forge`){if(r.kind===`forge`)continue;d(`grp:forge:${r.origin??`unscoped`}`,r.id)}else r.kind===`mcp`&&r.category&&d(`grp:host:${r.category}`,r.id);let e=r=>r.slice(r.indexOf(`:`,4)+1);return{groups:[...i.entries()].map(([r,n])=>({id:r,label:e(r),members:n.sort()})).sort((r,n)=>r.id({time:e});var ne=(e,n)=>n.k;var pe=(e,n)=>n.name;function se(e,n){if(e&1&&(da(0,`span`),qS(1),aC(2,`t`),vd()),e&2){let t=SS();hD(),bd(` · `,uC(2,1,`common.updatedAt`,rC(4,le,t.stamp(n))))}}function de(e,n){e&1&&(da(0,`div`,7),Sa(1,`ui-state-badge`,23),da(2,`span`),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`registry.cliUnavailable`)))}function ce(e,n){if(e&1&&Sa(0,`option`,13),e&2){let t=n.$implicit;qm(`value`,t)}}function me(e,n){if(e&1){let t=DS();da(0,`button`,24),Ma(`click`,function(){let c=Hh(t).$implicit,f=SS();return Vh(f.plan(c))}),qS(1),aC(2,`t`),vd()}if(e&2){let t=n.$implicit,o=SS();Xm(`btn--danger`,t===`uninstall`),qm(`disabled`,o.busy()||!o.forge().trim()),Ar(`data-plan`,t),hD(),bd(` `,lC(2,5,`registry.action.`+t),` `)}}function _e(e,n){e&1&&(da(0,`div`,16),Sa(1,`div`,25),da(2,`p`,4),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`registry.planning`)))}function ue(e,n){if(e&1&&(da(0,`div`)(1,`dt`),qS(2),vd(),da(3,`dd`),qS(4),vd()()),e&2){let t=n.$implicit;hD(2),ey(t.k),hD(2),ey(t.v)}}function ge(e,n){if(e&1&&(da(0,`dl`,28),mS(1,ue,5,2,`div`,null,ne),vd()),e&2){let t=SS(2);hD(),yS(t.previewEntries())}}function ye(e,n){e&1&&(da(0,`pre`,29),qS(1),vd()),e&2&&(hD(),ey(n))}function ve(e,n){e&1&&(da(0,`p`,4),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`registry.previewEmpty`)))}function xe(e,n){if(e&1){let t=DS();da(0,`section`,17)(1,`div`,26)(2,`h3`),qS(3),aC(4,`t`),vd(),Sa(5,`ui-state-badge`,27),vd(),da(6,`p`,4),qS(7),aC(8,`t`),vd(),da(9,`dl`,28)(10,`div`)(11,`dt`),qS(12),aC(13,`t`),vd(),da(14,`dd`)(15,`code`),qS(16),vd()()(),da(17,`div`)(18,`dt`),qS(19),aC(20,`t`),vd(),da(21,`dd`)(22,`code`),qS(23),vd()()()(),dS(24,ge,3,0,`dl`,28)(25,ye,2,1,`pre`,29)(26,ve,3,3,`p`,4),da(27,`details`,30)(28,`summary`),qS(29),aC(30,`t`),vd(),da(31,`pre`),qS(32),vd()(),da(33,`div`,31)(34,`button`,32),Ma(`click`,function(){Hh(t);let c=SS();return Vh(c.confirmExecute())}),Sa(35,`ui-icon`,33),qS(36),aC(37,`t`),vd(),da(38,`button`,32),Ma(`click`,function(){Hh(t);let c=SS();return Vh(c.reset())}),qS(39),aC(40,`t`),vd()()()}if(e&2){let t,o=n,c=SS();Ar(`data-action`,o.plan.action)(`data-forge`,o.plan.forge)(`data-status`,o.status),hD(3),ey(lC(4,21,`registry.review`)),hD(2),qm(`state`,o.status),hD(2),ey(lC(8,23,`registry.review.hint`)),hD(5),ey(lC(13,25,`registry.op`)),hD(4),ey(o.plan.action),hD(3),ey(lC(20,27,`registry.forge`)),hD(4),ey(o.plan.forge),hD(),hS(c.previewEntries().length?24:(t=c.previewText())?25:26,t),hD(5),ey(lC(30,29,`fdoc.raw`)),hD(3),ey(c.planText(o)),hD(2),Xm(`btn--primary`,!c.destructive())(`btn--danger`,c.destructive()),Ar(`data-exec`,o.plan.action),hD(),qm(`size`,15),hD(),bd(` `,lC(37,31,`install.confirm.execute`),` `),hD(3),ey(lC(40,33,`state.cancel`))}}function fe(e,n){e&1&&(da(0,`div`,18),Sa(1,`div`,25),da(2,`p`,4),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`registry.executing`)))}function be(e,n){if(e&1&&(da(0,`div`)(1,`dt`),qS(2),vd(),da(3,`dd`),qS(4),vd()()),e&2){let t=n.$implicit;hD(2),ey(t.k),hD(2),ey(t.v)}}function Se(e,n){if(e&1&&(da(0,`dl`,28),mS(1,be,5,2,`div`,null,ne),vd()),e&2){let t=SS(2);hD(),yS(t.resultEntries())}}function Ce(e,n){if(e&1){let t=DS();da(0,`section`,19)(1,`div`,26)(2,`h3`),qS(3),aC(4,`t`),vd(),Sa(5,`ui-state-badge`,27),vd(),dS(6,Se,3,0,`dl`,28),da(7,`details`,30)(8,`summary`),qS(9),aC(10,`t`),vd(),da(11,`pre`),qS(12),vd()(),da(13,`div`,31)(14,`button`,32),Ma(`click`,function(){Hh(t);let c=SS();return Vh(c.reset())}),qS(15),aC(16,`t`),vd()()()}if(e&2){let t=n,o=SS();Ar(`data-status`,t.status),hD(3),ey(lC(4,7,`registry.receipt`)),hD(2),qm(`state`,t.status),hD(),hS(o.resultEntries().length?6:-1),hD(3),ey(lC(10,9,`fdoc.raw`)),hD(3),ey(o.resultText(t)),hD(3),ey(lC(16,11,`registry.newOp`))}}function he(e,n){if(e&1){let t=DS();da(0,`ui-error`,34),Ma(`retry`,function(){Hh(t);let c=SS();return Vh(c.reset())}),vd()}e&2&&qm(`error`,n)}function Ee(e,n){e&1&&(da(0,`div`,7),Sa(1,`ui-state-badge`,23),da(2,`span`),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`registry.unavailable`)))}function we(e,n){if(e&1){let t=DS();da(0,`ui-error`,34),Ma(`retry`,function(){Hh(t);let c=SS();return Vh(c.load())}),vd()}e&2&&qm(`error`,n)}function Pe(e,n){e&1&&(da(0,`div`,22),aC(1,`t`),Sa(2,`ui-skeleton`,35),vd()),e&2&&(Ar(`aria-label`,lC(1,2,`state.loading`)),hD(2),qm(`lines`,2))}function Ne(e,n){if(e&1&&(da(0,`div`,36),Sa(1,`ui-state-badge`,27),da(2,`span`),qS(3),aC(4,`t`),vd(),da(5,`code`,4),qS(6),vd()()),e&2){let t=SS();hD(),qm(`state`,t.error===`malformed`?`FAILED`:`UNVERIFIED`),hD(2),ey(lC(4,3,t.error===`malformed`?`registry.malformed`:`registry.absent`)),hD(3),ey(t.state_path)}}function Oe(e,n){if(e&1&&(da(0,`span`,41),aC(1,`t`),qS(2),aC(3,`t`),vd()),e&2){let t=SS().$implicit;Ar(`title`,lC(1,3,`registry.pinned`)),hD(2),ty(` `,lC(3,5,`registry.pinned`),` `,t.receipt.pinned,` `)}}function Re(e,n){if(e&1){let t=DS();da(0,`button`,44),Ma(`click`,function(){let c=Hh(t).$implicit,f=SS().$implicit,N=SS(3);return Vh(N.plan(c,f.name))}),qS(1),aC(2,`t`),vd()}if(e&2){let t=n.$implicit,o=SS().$implicit,c=SS(3);Xm(`rops__op--danger`,t===`uninstall`),qm(`disabled`,c.busy()),Ar(`data-plan`,t)(`data-forge`,o.name),hD(),bd(` `,lC(2,6,`registry.action.`+t),` `)}}function Ie(e,n){if(e&1&&(da(0,`tr`)(1,`td`)(2,`code`),qS(3),vd(),dS(4,Oe,4,7,`span`,41),vd(),da(5,`td`),qS(6),vd(),da(7,`td`)(8,`code`),qS(9),vd()(),da(10,`td`),qS(11),vd(),da(12,`td`)(13,`div`,42),mS(14,Re,3,8,`button`,43,gS),vd()()()),e&2){let t=n.$implicit,o=SS(3);Ar(`data-forge`,t.name),hD(3),ey(t.name),hD(),hS(t.receipt.pinned?4:-1),hD(2),ey(t.receipt.version??`—`),hD(3),ey(t.receipt.method??t.receipt.dist??`—`),hD(2),ey(t.receipt.installedAt??`—`),hD(3),yS(o.rowActions(t))}}function ke(e,n){if(e&1&&(da(0,`div`,37)(1,`table`,39)(2,`thead`)(3,`tr`)(4,`th`,40),qS(5),aC(6,`t`),vd(),da(7,`th`,40),qS(8),aC(9,`t`),vd(),da(10,`th`,40),qS(11),aC(12,`t`),vd(),da(13,`th`,40),qS(14),aC(15,`t`),vd(),da(16,`th`,40),qS(17),aC(18,`t`),vd()()(),da(19,`tbody`),mS(20,Ie,16,6,`tr`,null,pe),vd()()()),e&2){let t=SS(2);hD(5),ey(lC(6,5,`registry.forge`)),hD(3),ey(lC(9,7,`settings.version`)),hD(3),ey(lC(12,9,`registry.method`)),hD(3),ey(lC(15,11,`registry.installedAt`)),hD(3),ey(lC(18,13,`registry.colOps`)),hD(3),yS(t.rows())}}function Te(e,n){e&1&&(Sa(0,`ui-empty`,38),aC(1,`t`)),e&2&&qm(`title`,lC(1,1,`registry.none`))}function Be(e,n){if(e&1&&dS(0,Ne,7,5,`div`,36)(1,ke,22,15,`div`,37)(2,Te,2,3,`ui-empty`,38),e&2){let t=SS();hS(n.present?t.rows().length?1:2:0)}}var J=class e{api=p(g);toast=p(f);state=new l;phase=k(`idle`);forge=k(``);planReceipt=k(null);execReceipt=k(null);error=k(null);cliUnavailable=k(!1);actions=[`install`,`update`,`reinstall`,`rollback`,`pin`,`unpin`,`repair`,`uninstall`];busy=tn(()=>this.phase()===`planning`||this.phase()===`executing`);destructive=tn(()=>{let n=this.planReceipt()?.plan.action;return n===`uninstall`||n===`rollback`});rows=tn(()=>Object.entries(this.state.data()?.forges??{}).map(([n,t])=>({name:n,receipt:t})));installedNames=tn(()=>this.rows().map(n=>n.name));previewEntries=tn(()=>ie(this.planReceipt()?.plan.preview));previewText=tn(()=>{let n=this.planReceipt()?.plan.preview;return typeof n==`string`?n:null});resultEntries=tn(()=>ie(this.execReceipt()?.result));stamp=y;constructor(){this.load()}async load(){await this.state.load(()=>this.api.registryState())}rowActions(n){let t=[`update`,`reinstall`,`rollback`,`repair`];return t.push(n.receipt.pinned?`unpin`:`pin`),t.push(`uninstall`),t}async plan(n,t){let o=(t??this.forge()).trim();if(!(this.busy()||!o)){t!==void 0&&this.forge.set(t),this.error.set(null),this.planReceipt.set(null),this.execReceipt.set(null),this.phase.set(`planning`);try{let c=await hE(this.api.registryPlan({action:n,forge:o}));this.planReceipt.set(c),this.phase.set(`review`),c.status===`planned`&&this.toast.show(`registry.toast.planned`,`info`,{params:{action:n,forge:o}})}catch(c){this.fail(c)}}}async confirmExecute(){let n=this.planReceipt();if(!(this.phase()!==`review`||!n)){this.error.set(null),this.phase.set(`executing`);try{let t=await hE(this.api.registryExecute({action:n.plan.action,forge:n.plan.forge,plan:n.plan,planToken:n.plan_token}));this.execReceipt.set(t),this.phase.set(`receipt`),this.toast.show(`registry.toast.executed`,t.status===`executed`?`success`:`error`,{params:{action:n.plan.action,forge:n.plan.forge,status:t.status}}),await this.load()}catch(t){this.fail(t)}}}reset(){this.phase.set(`idle`),this.planReceipt.set(null),this.execReceipt.set(null),this.error.set(null)}asText(n){return n.target?.value??``}planText(n){return JSON.stringify(n.plan,null,2)}resultText(n){return JSON.stringify(n.result??n,null,2)}fail(n$1){let t=n$1 instanceof n?n$1:new n(0);t.body.code===`PORTAL-CLI-UNAVAILABLE`&&this.cliUnavailable.set(!0),this.error.set(t),this.phase.set(`idle`)}static ɵfac=function(t){return new(t||e)};static ɵcmp=ei({type:e,selectors:[[`registry-ops-panel`]],decls:44,vars:36,consts:[[`data-section`,`registry-ops`,`aria-labelledby`,`rops-h`,1,`card`],[1,`rops__head`],[`id`,`rops-h`],[1,`src`],[1,`muted`],[1,`icon-btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[`role`,`note`,1,`unv`],[1,`rops__form`],[`for`,`registry-forge`,1,`rops__field`],[1,`lbl`],[`id`,`registry-forge`,`name`,`registry-forge`,`type`,`text`,`list`,`registry-forges`,`autocomplete`,`off`,3,`input`,`value`,`disabled`],[`id`,`registry-forges`],[3,`value`],[`role`,`group`,1,`rops__actions`],[1,`btn`,3,`btn--danger`,`disabled`],[`role`,`status`,`aria-live`,`polite`,`data-section`,`registry-planning`,1,`running`],[`data-section`,`registry-review`,1,`rops__review`],[`role`,`status`,`aria-live`,`polite`,`data-section`,`registry-executing`,1,`running`],[`data-section`,`registry-receipt`,1,`rops__receipt`],[3,`error`],[`data-section`,`registry-state`,1,`rops__state`],[`role`,`status`],[`state`,`UNVERIFIED`],[1,`btn`,3,`click`,`disabled`],[`aria-hidden`,`true`,1,`running__spinner`],[1,`rops__review-head`],[3,`state`],[1,`rops__kv`],[1,`rops__pre`],[1,`raw`],[1,`rops__row`],[1,`btn`,3,`click`],[`name`,`shield-check`,3,`size`],[3,`retry`,`error`],[`kind`,`row`,3,`lines`],[`role`,`note`,`data-state`,`absent`,1,`unv`],[1,`rops__table-wrap`],[`icon`,`gem`,3,`title`],[1,`table`],[`scope`,`col`],[1,`rops__pin`],[1,`rops__row-ops`],[1,`rops__op`,3,`rops__op--danger`,`disabled`],[1,`rops__op`,3,`click`,`disabled`]],template:function(t,o){if(t&1&&(da(0,`section`,0)(1,`div`,1)(2,`div`)(3,`h2`,2),qS(4),aC(5,`t`),vd(),da(6,`p`,3)(7,`code`),qS(8,`POST /api/v1/registry/plan · POST /api/v1/registry/execute · GET /api/v1/registry/state`),vd(),dS(9,se,3,6,`span`),vd(),da(10,`p`,4),qS(11),aC(12,`t`),vd()(),da(13,`button`,5),aC(14,`t`),Ma(`click`,function(){return o.load()}),Sa(15,`ui-icon`,6),vd()(),dS(16,de,5,3,`div`,7),da(17,`div`,8)(18,`label`,9)(19,`span`,10),qS(20),aC(21,`t`),vd(),da(22,`input`,11),aC(23,`t`),Ma(`input`,function(f){return o.forge.set(o.asText(f))}),vd()(),da(24,`datalist`,12),mS(25,ce,1,1,`option`,13,gS),vd(),da(27,`div`,14),aC(28,`t`),mS(29,me,3,7,`button`,15,gS),vd()(),dS(31,_e,5,3,`div`,16),dS(32,xe,41,35,`section`,17),dS(33,fe,5,3,`div`,18),dS(34,Ce,17,13,`section`,19),dS(35,he,1,1,`ui-error`,20),da(36,`div`,21)(37,`h3`),qS(38),aC(39,`t`),vd(),dS(40,Ee,5,3,`div`,7),dS(41,we,1,1,`ui-error`,20),dS(42,Pe,3,4,`div`,22),dS(43,Be,3,1),vd()()),t&2){let c,f,N,K,Q,W;hD(4),ey(lC(5,22,`registry.title`)),hD(5),hS((c=o.state.loadedAt())?9:-1,c),hD(2),ey(lC(12,24,`registry.hint`)),hD(2),qm(`disabled`,o.busy()),Ar(`aria-label`,lC(14,26,`state.refresh`)),hD(2),qm(`size`,14),hD(),hS(o.cliUnavailable()?16:-1),hD(4),ey(lC(21,28,`registry.forge`)),hD(2),qm(`value`,o.forge())(`disabled`,o.busy()),Ar(`placeholder`,lC(23,30,`registry.forge.hint`)),hD(3),yS(o.installedNames()),hD(2),Ar(`aria-label`,lC(28,32,`registry.title`)),hD(2),yS(o.actions),hD(2),hS(o.phase()===`planning`?31:-1),hD(),hS((f=o.phase()===`review`&&o.planReceipt())?32:-1,f),hD(),hS(o.phase()===`executing`?33:-1),hD(),hS((N=o.phase()===`receipt`&&o.execReceipt())?34:-1,N),hD(),hS((K=o.error())?35:-1,K),hD(3),ey(lC(39,34,`registry.state`)),hD(2),hS(o.state.unavailable()?40:-1),hD(),hS((Q=o.state.error())?41:-1,Q),hD(),hS(o.state.loading()&&!o.state.data()?42:-1),hD(),hS((W=o.state.data())?43:-1,W)}},dependencies:[I,D,_,cE,k$1,aE],styles:[`.rops__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.rops__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650}.src[_ngcontent-%COMP%]{margin:4px 0 0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.unv[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-3);padding:var(--%NS%space-3);margin-bottom:var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.rops__form[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.rops__field[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:min(30rem,100%);padding:var(--%NS%space-2) var(--%NS%space-3);border:1px solid var(--%NS%border-strong);border-radius:var(--%NS%radius-md);background:var(--%NS%bg);color:var(--%NS%fg);font:inherit}.rops__actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2)}.rops__review[_ngcontent-%COMP%], .rops__receipt[_ngcontent-%COMP%]{border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-lg);padding:var(--%NS%space-3);margin-bottom:var(--%NS%space-3);background:var(--%NS%bg-elevated)}.rops__review-head[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3)}.rops__review-head[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-md)}.rops__kv[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin:var(--%NS%space-3) 0 0}.rops__kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3)}.rops__kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{min-width:8rem;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm)}.rops__kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;min-width:0;overflow-wrap:anywhere}.rops__pre[_ngcontent-%COMP%]{background:var(--%NS%bg);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);padding:var(--%NS%space-3);overflow-x:auto;font-size:var(--%NS%font-xs);white-space:pre-wrap}.rops__row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2);margin-top:var(--%NS%space-3)}.rops__state[_ngcontent-%COMP%]{margin-top:var(--%NS%space-4)}.rops__state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-md)}.rops__table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.rops__pin[_ngcontent-%COMP%]{display:inline-block;margin-left:var(--%NS%space-2);font-size:var(--%NS%font-xs);font-weight:700;color:var(--%NS%accent-ink);background:var(--%NS%accent-bg);border-radius:var(--%NS%radius-pill);padding:1px 8px}.rops__row-ops[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:4px}.rops__op[_ngcontent-%COMP%]{padding:2px 8px;border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-pill);background:transparent;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs);font-weight:600;cursor:pointer}.rops__op[_ngcontent-%COMP%]:hover{color:var(--%NS%fg);border-color:var(--%NS%border-strong);background:var(--%NS%bg-hover)}.rops__op--danger[_ngcontent-%COMP%]{color:var(--%NS%error);border-color:color-mix(in srgb,var(--%NS%error) 45%,transparent)}.rops__op--%NS%danger[_ngcontent-%COMP%]:hover{background:color-mix(in srgb,var(--%NS%error) 12%,transparent);color:var(--%NS%error)}.rops__op[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:default}`]})};function ie(e){if(!e||typeof e!=`object`||Array.isArray(e))return[];let n=[];for(let[t,o]of Object.entries(e)){if(n.length>=14)break;n.push({k:t,v:o==null?`—`:typeof o==`object`?JSON.stringify(o):String(o)})}return n}var Me=e=>({time:e});var Fe=e=>[`/forges`,e];var Ve=(e,n)=>n.id;function De(e,n){if(e&1&&(da(0,`span`),qS(1),aC(2,`t`),vd()),e&2){let t=SS();hD(),bd(` · `,uC(2,1,`common.updatedAt`,rC(4,Me,t.stamp(n))))}}function Ae(e,n){if(e&1&&(da(0,`p`,5)(1,`span`),qS(2),aC(3,`t`),vd(),da(4,`span`),qS(5),aC(6,`t`),vd(),da(7,`span`),qS(8),aC(9,`t`),vd(),da(10,`span`),qS(11),aC(12,`t`),vd()()),e&2){let t=n;hD(2),ty(``,lC(3,8,`federation.catalog`),`: `,t.summary.catalog),hD(3),ty(``,lC(6,10,`federation.installed`),`: `,t.summary.installed),hD(3),ty(``,lC(9,12,`federation.mcp`),`: `,t.summary.with_mcp),hD(3),ty(``,lC(12,14,`federation.checkouts`),`: `,t.summary.with_checkout)}}function ze(e,n){e&1&&(da(0,`div`,6),Sa(1,`ui-state-badge`,11),da(2,`span`),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`federation.unavailable`)))}function $e(e,n){if(e&1){let t=DS();da(0,`ui-error`,12),Ma(`retry`,function(){Hh(t);let c=SS();return Vh(c.load())}),vd()}e&2&&qm(`error`,n)}function Ue(e,n){e&1&&(da(0,`div`,8),aC(1,`t`),Sa(2,`ui-skeleton`,13),vd()),e&2&&(Ar(`aria-label`,lC(1,2,`state.loading`)),hD(2),qm(`lines`,4))}function Le(e,n){e&1&&Sa(0,`ui-icon`,18),e&2&&qm(`size`,15)}function je(e,n){e&1&&(da(0,`span`,21),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`explorer.serving`)))}function He(e,n){e&1&&(da(0,`span`,22),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`explorer.registryOnly`)))}function Je(e,n){e&1&&Sa(0,`ui-state-badge`,11)}function Ge(e,n){e&1&&(da(0,`span`,24),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`state.absent`)))}function qe(e,n){if(e&1&&(da(0,`code`,25),qS(1),vd()),e&2){let t=SS().$implicit;Ar(`title`,t.checkout),hD(),ey(t.checkout)}}function Ke(e,n){e&1&&Sa(0,`ui-state-badge`,11)}function Qe(e,n){if(e&1&&(da(0,`span`,24),qS(1),aC(2,`t`),vd()),e&2){let t=SS().$implicit;hD(),ey(lC(2,1,t.mcp===null?`federation.mcpAbsent`:`federation.mcpReady`))}}function We(e,n){if(e&1&&(da(0,`tr`)(1,`td`)(2,`div`,17),dS(3,Le,1,1,`ui-icon`,18),da(4,`div`,19)(5,`strong`),qS(6),vd(),da(7,`code`,20),qS(8),vd()(),dS(9,je,3,3,`span`,21),dS(10,He,3,3,`span`,22),vd()(),da(11,`td`),Sa(12,`ui-state-badge`,23),vd(),da(13,`td`),qS(14),vd(),da(15,`td`),dS(16,Je,1,0,`ui-state-badge`,11)(17,Ge,3,3,`span`,24)(18,qe,2,2,`code`,25),vd(),da(19,`td`),dS(20,Ke,1,0,`ui-state-badge`,11)(21,Qe,3,3,`span`,24),vd(),da(22,`td`)(23,`a`,26),aC(24,`t`),Sa(25,`ui-icon`,27),vd()()()),e&2){let t=n.$implicit;Ar(`data-serving`,t.serving||null),hD(3),hS(t.serving?3:-1),hD(3),ey(t.name??t.id),hD(2),ey(t.id),hD(),hS(t.serving?9:-1),hD(),hS(t.registryOnly?10:-1),hD(2),qm(`state`,t.state??`UNVERIFIED`),hD(2),ey(t.version??`—`),hD(2),hS(t.checkout===void 0?16:t.checkout===null?17:18),hD(4),hS(t.mcp===void 0?20:21),hD(3),qm(`routerLink`,rC(15,Fe,t.id)),Ar(`aria-label`,lC(24,13,`state.viewDetails`)),hD(2),qm(`size`,15)}}function Xe(e,n){if(e&1&&(da(0,`div`,9)(1,`table`,14)(2,`thead`)(3,`tr`)(4,`th`,15),qS(5),aC(6,`t`),vd(),da(7,`th`,15),qS(8),aC(9,`t`),vd(),da(10,`th`,15),qS(11),aC(12,`t`),vd(),da(13,`th`,15),qS(14),aC(15,`t`),vd(),da(16,`th`,15),qS(17),aC(18,`t`),vd(),da(19,`th`,15)(20,`span`,16),qS(21),aC(22,`t`),vd()()()(),da(23,`tbody`),mS(24,We,26,17,`tr`,null,Ve),vd()()()),e&2){let t=SS();hD(5),ey(lC(6,6,`table.id`)),hD(3),ey(lC(9,8,`skills.state`)),hD(3),ey(lC(12,10,`settings.version`)),hD(3),ey(lC(15,12,`explorer.checkout`)),hD(3),ey(lC(18,14,`mcp.title`)),hD(4),ey(lC(22,16,`state.viewDetails`)),hD(3),yS(t.rows())}}function Ye(e,n){e&1&&(Sa(0,`ui-empty`,10),aC(1,`t`)),e&2&&qm(`title`,lC(1,1,`explorer.empty`))}var ae=class e{api=p(g);store=p(g$1);fed=new l;rows=tn(()=>w(this.store.descriptor(),this.store.health(),this.fed.data()));stamp=y;constructor(){this.load()}async load(){await Promise.allSettled([this.store.refreshHealth(),this.fed.load(()=>this.api.federation())])}static ɵfac=function(t){return new(t||e)};static ɵcmp=ei({type:e,selectors:[[`page-explorer`]],decls:19,vars:16,consts:[[`hintId`,`forge`,3,`title`,`subtitle`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[`data-section`,`forges`,1,`card`],[1,`src`],[1,`sum`],[`role`,`note`,1,`unv`],[3,`error`],[`role`,`status`],[1,`table-wrap`],[`icon`,`network`,3,`title`],[`state`,`UNVERIFIED`],[3,`retry`,`error`],[`kind`,`row`,3,`lines`],[1,`table`],[`scope`,`col`],[1,`sr-only`],[1,`id`],[`name`,`gem`,3,`size`],[1,`id__text`],[1,`id__slug`],[1,`chip`],[1,`chip`,`chip--mut`],[3,`state`],[1,`muted`],[1,`path`],[1,`icon-btn`,3,`routerLink`],[`name`,`chevron-right`,3,`size`]],template:function(t,o){if(t&1&&(da(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),da(3,`button`,1),Ma(`click`,function(){return o.load()}),Sa(4,`ui-icon`,2),qS(5),aC(6,`t`),vd()(),da(7,`section`,3)(8,`p`,4)(9,`code`),qS(10,`bootstrap · GET /api/v1/federation`),vd(),dS(11,De,3,6,`span`),vd(),dS(12,Ae,13,16,`p`,5),dS(13,ze,5,3,`div`,6),dS(14,$e,1,1,`ui-error`,7),dS(15,Ue,3,4,`div`,8),dS(16,Xe,26,18,`div`,9)(17,Ye,2,3,`ui-empty`,10),vd(),Sa(18,`registry-ops-panel`)),t&2){let c,f,N;qm(`title`,lC(1,10,`explorer.title`))(`subtitle`,lC(2,12,`explorer.subtitle`)),hD(4),qm(`size`,15),hD(),bd(` `,lC(6,14,`state.refresh`),` `),hD(6),hS((c=o.fed.loadedAt())?11:-1,c),hD(),hS((f=o.fed.data())?12:-1,f),hD(),hS(o.fed.unavailable()?13:-1),hD(),hS((N=o.fed.error())?14:-1,N),hD(),hS(o.fed.loading()&&!o.fed.data()?15:-1),hD(),hS(o.rows().length?16:o.fed.attempted()&&!o.fed.loading()&&!o.fed.error()&&!o.fed.unavailable()?17:-1)}},dependencies:[vc,T,I,_,D,cE,k$1,J,aE],styles:[`.card[_ngcontent-%COMP%]{padding:var(--%NS%space-3)}.src[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-2);padding:0 var(--%NS%space-2);font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.sum[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2) var(--%NS%space-4);margin:0 0 var(--%NS%space-3);padding:0 var(--%NS%space-2);font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.unv[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-3);margin:0 var(--%NS%space-2) var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.table[_ngcontent-%COMP%]{min-width:640px}.id[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);min-width:0}.id[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);flex:none}.id__text[_ngcontent-%COMP%]{display:grid;min-width:0}.id__slug[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip[_ngcontent-%COMP%]{flex:none;font-size:var(--%NS%font-xs);font-weight:700;color:var(--%NS%accent-ink);background:var(--%NS%accent-bg);border-radius:var(--%NS%radius-pill);padding:1px 8px}.chip--mut[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);background:var(--%NS%bg-hover)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.path[_ngcontent-%COMP%]{display:inline-block;max-width:38ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}`]})};export{ae as ExplorerPage}; \ No newline at end of file diff --git a/portal/assets/chunk-CM-MlJlQ.js b/portal/assets/chunk-CM-MlJlQ.js new file mode 100644 index 0000000..5fe0fae --- /dev/null +++ b/portal/assets/chunk-CM-MlJlQ.js @@ -0,0 +1 @@ +import{$ as dS,At as qm,Bt as tn,Ct as oC,D as Oo,Dt as pS,E as Na,Et as p,F as Sa,Ht as ty,J as aC,Jt as vd,Nt as rb,P as SS,Pt as rn,Q as cE,Qt as yS,Rt as tb,S as Ma,Ut as uC,Y as aE,Z as bd,at as ey,ct as hD,et as da,gt as k,i as Ar,it as ei,jt as rC,kt as qS,lt as hE,ot as gS,p as Hh,q as _r,qt as vc,s as DS,ut as hS,vt as lC,xt as nC,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{i as n,r as g}from"./main-XW2ZMSO5.js";import{a as l}from"./chunk-BNDlNg-C.js";import{t as _}from"./chunk-16deWS0U.js";import{t as D}from"./chunk-Bg2lccQE.js";import{n as k$1,t as I}from"./chunk-DQtX_-dj.js";import{t as T}from"./chunk-BGgpmc9t.js";import{i as x,n as f,t as M}from"./chunk-D-7Jr8A3.js";import{n as k$2,t as V}from"./chunk-Br6NMJL9.js";import{i as Zt,n as De$1,r as Yt,t as At$1}from"./chunk-DQFb71Td.js";var L=()=>[];var Ce=(i,n)=>n[0];var be=(i,n)=>n.id;var xe=(i,n)=>n.path;var ke=(i,n)=>n.path??n;var ge=(i,n)=>n.member;function Se(i,n){if(i&1&&(da(0,`span`,3),qS(1),vd()),i&2){let e=SS();hD(),bd(`· `,e.operation)}}function he(i,n){if(i&1&&(da(0,`div`,6)(1,`dt`),qS(2),aC(3,`t`),vd(),da(4,`dd`),qS(5),vd()()),i&2){let e=n.$implicit;hD(2),ey(lC(3,2,e[0])),hD(3),ey(e[1])}}function Ee(i,n){if(i&1&&(da(0,`span`,14),qS(1),vd()),i&2){let e=SS().$implicit;hD(),ey(e.detail)}}function Pe(i,n){i&1&&(da(0,`span`,15),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`fdoc.repairable`)))}function Te(i,n){if(i&1&&(da(0,`li`),Sa(1,`ui-state-badge`,12),da(2,`code`,13),qS(3),vd(),dS(4,Ee,2,1,`span`,14),dS(5,Pe,3,3,`span`,15),vd()),i&2){let e=n.$implicit;hD(),qm(`state`,e.status??`unverified`)(`labelOverride`,e.status??null),hD(2),ey(e.id),hD(),hS(e.detail?4:-1),hD(),hS(e.repairable?5:-1)}}function Ie(i,n){if(i&1&&(da(0,`h3`),qS(1),aC(2,`t`),vd(),da(3,`ul`,11),mS(4,Te,6,5,`li`,null,be),vd()),i&2){let e=SS();hD(),ey(lC(2,1,`fdoc.checks`)),hD(3),yS(e.checks)}}function we(i,n){if(i&1&&(da(0,`div`,20),Sa(1,`ui-state-badge`,12),da(2,`code`),qS(3),vd()()),i&2){let e=n.$implicit;hD(),qm(`state`,e.status??`modified`)(`labelOverride`,e.status??null),hD(2),ey(e.path)}}function Ne(i,n){if(i&1&&(da(0,`h3`),qS(1),aC(2,`t`),vd(),da(3,`p`,16)(4,`span`,17),qS(5),vd(),da(6,`span`,18),qS(7),aC(8,`t`),vd(),da(9,`span`,19),qS(10),aC(11,`t`),vd()(),mS(12,we,4,3,`div`,20,xe)),i&2){let e=SS(),l=SS(2);hD(),ey(lC(2,6,`fdoc.drift`)),hD(4),bd(`ok `,e.ok),hD(2),ty(``,lC(8,8,`fdoc.modified`),` `,e.modified?.length??0),hD(3),ty(``,lC(11,10,`fdoc.missing`),` `,e.missing?.length??0),hD(2),yS(l.driftFiles(e))}}function Me(i,n){i&1&&dS(0,Ne,14,12),i&2&&hS(n.ok!==void 0?0:-1)}function Oe(i,n){if(i&1&&(da(0,`div`,20)(1,`code`),qS(2),vd()()),i&2){let e=n.$implicit;hD(2),ey(e.path??e)}}function Fe(i,n){if(i&1&&(da(0,`p`,22),qS(1),aC(2,`t`),vd()),i&2){let e=SS(2);hD(),ty(`… `,e.list.length-8,` `,lC(2,2,`fdoc.more`))}}function Be(i,n){if(i&1&&(da(0,`h3`),qS(1),aC(2,`t`),vd(),da(3,`p`,21),qS(4),vd(),mS(5,Oe,3,1,`div`,20,ke),dS(7,Fe,3,4,`p`,22)),i&2){let e=SS();hD(),ey(lC(2,3,e.label)),hD(3),ey(e.list.length),hD(),yS(e.list.slice(0,8)),hD(2),hS(e.list.length>8?7:-1)}}function De(i,n){i&1&&dS(0,Be,8,5),i&2&&hS(n.list.length?0:-1)}function Ve(i,n){if(i&1&&(da(0,`code`),qS(1),vd()),i&2){let e=SS();hD(),ey(e.install_root??e.manifest)}}function Ue(i,n){i&1&&(da(0,`span`,22),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`fdoc.portal.vendored`)))}function ze(i,n){if(i&1&&(da(0,`h3`),qS(1),aC(2,`t`),vd(),da(3,`p`,23),Sa(4,`ui-state-badge`,12),dS(5,Ve,2,1,`code`)(6,Ue,3,3,`span`,22),vd()),i&2){let e=n;hD(),ey(lC(2,4,`fdoc.portal`)),hD(3),qm(`state`,e.state??`unverified`)(`labelOverride`,e.state??null),hD(),hS(e.install_root||e.manifest?5:e.state===`vendored`?6:-1)}}function Ae(i,n){if(i&1&&(da(0,`div`,20)(1,`code`),qS(2),vd()()),i&2){let e=n.$implicit;hD(2),ey(e.path)}}function Re(i,n){if(i&1&&(da(0,`div`,20),Sa(1,`ui-state-badge`,24),da(2,`code`),qS(3),vd(),qS(4),vd()),i&2){let e=n.$implicit;hD(),qm(`labelOverride`,`conflict`),hD(2),ey(e.member),hD(),ty(` `,e.forge_id,`: `,e.decision,` `)}}function $e(i,n){if(i&1&&(da(0,`div`,20),Sa(1,`ui-state-badge`,25),da(2,`code`),qS(3),vd()()),i&2){let e=n.$implicit;hD(),qm(`labelOverride`,`unknown`),hD(2),ey(e)}}function Le(i,n){if(i&1&&(da(0,`div`,20),Sa(1,`ui-state-badge`,12),da(2,`code`),qS(3),vd()()),i&2){let e=n.$implicit;hD(),qm(`state`,e.status??`unverified`)(`labelOverride`,e.status??null),hD(2),ey(e.member)}}function je(i,n){if(i&1&&(da(0,`h3`),qS(1),aC(2,`t`),vd(),mS(3,Ae,3,1,`div`,20,xe),mS(5,Re,5,4,`div`,20,ge),mS(7,$e,4,2,`div`,20,gS),mS(9,Le,4,3,`div`,20,ge)),i&2){let e=n;hD(),ey(lC(2,1,`fdoc.workspace`)),hD(2),yS(e.members??nC(3,L)),hD(2),yS(e.conflicts??nC(4,L)),hD(2),yS(e.unknown_members??nC(5,L)),hD(2),yS(e.member_results??nC(6,L))}}function Ge(i,n){if(i&1&&(da(0,`p`,7),qS(1),aC(2,`t`),Sa(3,`ui-state-badge`,4),vd()),i&2){let e=SS();hD(),bd(` `,lC(2,2,`fdoc.verification`),` `),hD(2),qm(`state`,e.verification.status)}}function Ke(i,n){if(i&1&&(da(0,`p`),qS(1),vd()),i&2){let e=SS(2);hD(),ey(e.error.detail)}}function qe(i,n){if(i&1&&(da(0,`p`,26),qS(1),aC(2,`t`),vd()),i&2){let e=SS(2);hD(),ty(``,lC(2,2,`fdoc.unlock`),` `,e.error.unlock)}}function Je(i,n){if(i&1&&(da(0,`div`,8)(1,`p`)(2,`code`),qS(3),vd()(),dS(4,Ke,2,1,`p`),dS(5,qe,3,4,`p`,26),vd()),i&2){let e=SS();hD(3),ey(e.error.kind),hD(),hS(e.error.detail?4:-1),hD(),hS(e.error.unlock?5:-1)}}function He(i,n){if(i&1&&(da(0,`p`,9),Sa(1,`ui-icon`,27),qS(2),aC(3,`t`),da(4,`code`),qS(5),vd()()),i&2){let e=SS();hD(),qm(`size`,13),hD(),bd(` `,lC(3,3,`fdoc.repair`),` `),hD(3),ey(e.repair_hint)}}function Qe(i,n){if(i&1&&(da(0,`div`,0)(1,`div`,1)(2,`span`,2),qS(3),vd(),dS(4,Se,2,1,`span`,3),Sa(5,`ui-state-badge`,4),vd(),da(6,`dl`,5),mS(7,he,6,4,`div`,6,Ce),vd(),dS(9,Ie,6,3),dS(10,Me,1,1),dS(11,De,1,1),dS(12,ze,7,6),dS(13,je,11,7),dS(14,Ge,4,4,`p`,7),dS(15,Je,6,3,`div`,8),dS(16,He,6,5,`p`,9),da(17,`details`,10)(18,`summary`),qS(19),aC(20,`t`),vd(),da(21,`pre`),qS(22),vd()()()),i&2){let e,l,s,f,b=n,M=SS();hD(3),ey(b.forge_id??`forge`),hD(),hS(b.operation?4:-1),hD(),qm(`state`,b.status??`unverified`),hD(2),yS(M.meta(b)),hD(2),hS(b.checks?.length?9:-1),hD(),hS((e=b.drift)?10:-1,e),hD(),hS((l=M.files(b))?11:-1,l),hD(),hS((s=b.forge_portal)?12:-1,s),hD(),hS((f=b.workspace)?13:-1,f),hD(),hS(b.verification?.status?14:-1),hD(),hS(b.error&&(b.error.kind||b.error.detail)?15:-1),hD(),hS(b.repair_hint?16:-1),hD(3),ey(lC(20,13,`fdoc.raw`)),hD(3),ey(M.raw())}}var j=class i{doc=rn.required();raw=k(``);ngOnChanges(){this.raw.set(JSON.stringify(this.doc(),null,2))}meta(n){let e=[];n.target_root&&e.push([`doc.target`,n.target_root]),n.scope&&e.push([`doc.scope`,n.scope]),n.version&&e.push([`doc.version`,n.version]);let l=n.context?.profile??n.profile;return l&&e.push([`doc.profile`,l]),n.state_dir&&e.push([`doc.state_dir`,n.state_dir]),n.ledger_entries!==void 0&&e.push([`doc.managed`,`${n.ledger_entries}`]),e}driftFiles(n){return[...n.modified??[],...n.missing??[]].slice(0,8)}files(n){return n.managed_files?{label:`fdoc.managed_files`,list:n.managed_files}:n.planned_files?{label:`fdoc.planned_files`,list:n.planned_files}:null}static ɵfac=function(e){return new(e||i)};static ɵcmp=ei({type:i,selectors:[[`ui-forge-doc`]],inputs:{doc:[1,`doc`]},features:[_r],decls:1,vars:1,consts:[[1,`fdoc`],[1,`fdoc__head`],[1,`fdoc__title`],[1,`fdoc__op`],[3,`state`],[1,`fdoc__meta`],[1,`kv`],[1,`fdoc__verif`],[1,`fdoc__refusal`],[1,`fdoc__repair`],[1,`fdoc__raw`],[1,`fdoc__checks`],[3,`state`,`labelOverride`],[1,`cid`],[1,`detail`],[1,`repairable`],[1,`fdoc__drift`],[1,`ok`],[1,`warn`],[1,`bad`],[1,`fdoc__file`],[1,`fdoc__count`],[1,`muted`],[1,`fdoc__portal`],[`state`,`degraded`,3,`labelOverride`],[`state`,`unverified`,3,`labelOverride`],[1,`unlock`],[`name`,`refresh`,3,`size`]],template:function(e,l){if(e&1&&dS(0,Qe,23,15,`div`,0),e&2){let s;hS((s=l.doc())?0:-1,s)}},dependencies:[I,cE,aE],styles:[`.fdoc[_ngcontent-%COMP%]{font-size:var(--%NS%font-sm)}.fdoc__head[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.fdoc__title[_ngcontent-%COMP%]{font-weight:700;font-size:var(--%NS%font-lg);letter-spacing:-.01em}.fdoc__op[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);font-weight:600}.fdoc__meta[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--%NS%space-2) var(--%NS%space-4);margin:0 0 var(--%NS%space-3)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);text-transform:uppercase;letter-spacing:.04em}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;font-weight:550;word-break:break-all}h3[_ngcontent-%COMP%]{margin:var(--%NS%space-3) 0 var(--%NS%space-2);font-size:var(--%NS%font-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--%NS%fg-muted)}.fdoc__checks[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:var(--%NS%space-2)}.fdoc__checks[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-2);flex-wrap:wrap}.cid[_ngcontent-%COMP%]{font-weight:650}.detail[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.repairable[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);font-size:var(--%NS%font-xs);font-weight:650}.fdoc__drift[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-3);font-weight:650}.ok[_ngcontent-%COMP%]{color:var(--%NS%ok)}.warn[_ngcontent-%COMP%]{color:var(--%NS%warn)}.bad[_ngcontent-%COMP%]{color:var(--%NS%bad)}.fdoc__file[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-2);padding:2px 0}.fdoc__count[_ngcontent-%COMP%]{font-weight:650;margin:0}.fdoc__portal[_ngcontent-%COMP%], .fdoc__verif[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}.fdoc__refusal[_ngcontent-%COMP%]{border-left:3px solid var(--%NS%bad);padding:var(--%NS%space-1) var(--%NS%space-3);margin:var(--%NS%space-3) 0;color:var(--%NS%bad)}.fdoc__refusal[_ngcontent-%COMP%] .unlock[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.fdoc__repair[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);color:var(--%NS%accent-ink)}.fdoc__raw[_ngcontent-%COMP%]{margin-top:var(--%NS%space-4)}.fdoc__raw[_ngcontent-%COMP%] pre[_ngcontent-%COMP%]{background:var(--%NS%bg);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);padding:var(--%NS%space-3);overflow-x:auto;font-size:var(--%NS%font-xs)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}`]})};var We=i=>({count:i});var Xe=()=>[`/tasks`];var Ye=i=>({task:i});var Ze=()=>[`/observe`];var et=i=>({cid:i});var tt=(i,n)=>({current:i,total:n});var it=(i,n)=>n[0];var nt=(i,n)=>n.task.id;var at=(i,n)=>n.id;var rt=(i,n)=>n.i;function ot(i,n){i&1&&(da(0,`section`,11),Sa(1,`div`,31),da(2,`p`,21),qS(3),aC(4,`t`),vd()()),i&2&&(hD(3),ey(lC(4,1,`tasks.executing`)))}function lt(i,n){if(i&1){let e=DS();da(0,`section`,12)(1,`h2`),qS(2),aC(3,`t`),vd(),da(4,`p`)(5,`code`),qS(6),vd(),qS(7),vd(),da(8,`p`,21),qS(9),aC(10,`t`),vd(),da(11,`div`,32)(12,`button`,33),Ma(`click`,function(){Hh(e);let s=SS();return Vh(s.regenerate())}),Sa(13,`ui-icon`,2),qS(14),aC(15,`t`),vd(),da(16,`button`,34),Ma(`click`,function(){Hh(e);let s=SS();return Vh(s.stale.set(null))}),qS(17),aC(18,`t`),vd()()()}if(i&2){let e=n,l=SS();hD(2),ey(lC(3,8,`tasks.stale.title`)),hD(4),ey(e.body.code),hD(),bd(` `,e.body.message,` `),hD(2),ey(lC(10,10,`tasks.stale.hint`)),hD(3),qm(`disabled`,l.busy()),hD(),qm(`size`,14),hD(),bd(` `,lC(15,12,`tasks.stale.regenerate`),` `),hD(3),ey(lC(18,14,`state.close`))}}function dt(i,n){if(i&1&&(da(0,`div`,36)(1,`dt`)(2,`code`),qS(3),vd()(),da(4,`dd`),qS(5),vd()()),i&2){let e=n.$implicit;hD(3),ey(e[0]),hD(2),ey(e[1])}}function st(i,n){if(i&1){let e=DS();da(0,`section`,13)(1,`h2`),qS(2),aC(3,`t`),vd(),da(4,`p`,21),qS(5),aC(6,`t`),vd(),da(7,`dl`,35)(8,`div`,36)(9,`dt`),qS(10),aC(11,`t`),vd(),da(12,`dd`),qS(13),vd()(),da(14,`div`,36)(15,`dt`),qS(16),aC(17,`t`),vd(),da(18,`dd`)(19,`code`),qS(20),vd()()(),da(21,`div`,36)(22,`dt`),qS(23),aC(24,`t`),vd(),da(25,`dd`),qS(26),vd()(),da(27,`div`,36)(28,`dt`),qS(29),aC(30,`t`),vd(),da(31,`dd`,37)(32,`code`),qS(33),vd()()(),mS(34,dt,6,2,`div`,36,it),vd(),da(36,`details`,38)(37,`summary`),qS(38),aC(39,`t`),vd(),da(40,`pre`),qS(41),vd()(),da(42,`div`,32)(43,`button`,39),Ma(`click`,function(){let s=Hh(e),f=SS();return Vh(f.execute(s.plan,s.plan_token))}),Sa(44,`ui-icon`,10),qS(45),aC(46,`t`),vd(),da(47,`button`,34),Ma(`click`,function(){Hh(e);let s=SS();return Vh(s.pending.set(null))}),qS(48),aC(49,`t`),vd()()()}if(i&2){let e=n,l=SS();hD(2),ey(lC(3,17,`tasks.plan`)),hD(3),ey(lC(6,19,`tasks.plan.review`)),hD(5),ey(lC(11,21,`tasks.plan.task`)),hD(3),ey(l.planField(e.plan,`label`)||l.planField(e.plan,`verb`)),hD(3),ey(lC(17,23,`tasks.plan.verb`)),hD(4),ey(l.planField(e.plan,`verb`)),hD(3),ey(lC(24,25,`tasks.plan.intent`)),hD(3),ey(l.planField(e.plan,`intent`)),hD(3),ey(lC(30,27,`tasks.correlation`)),hD(2),Ar(`title`,l.realCorrelation(l.planCorrelation(e))),hD(2),ey(l.planCorrelation(e)),hD(),yS(l.planArgs(e.plan)),hD(4),ey(lC(39,29,`fdoc.raw`)),hD(3),ey(l.planText(e.plan)),hD(2),qm(`disabled`,l.busy()),hD(),qm(`size`,14),hD(),bd(` `,lC(46,31,`tasks.execute`),` `),hD(3),ey(lC(49,33,`state.cancel`))}}function ct(i,n){if(i&1&&Sa(0,`ui-state-badge`,42),i&2){let e=SS(),l=SS();qm(`state`,l.stageKind(e.task.stage))(`labelOverride`,e.task.stage)}}function pt(i,n){if(i&1&&(da(0,`span`,21),qS(1),vd()),i&2){let e=SS();hD(),bd(`exit `,e.task.exit_code)}}function _t(i,n){if(i&1&&(da(0,`span`),qS(1),vd()),i&2){let e=SS();hD(),ey(e.detail)}}function mt(i,n){if(i&1&&(da(0,`div`,36)(1,`dt`),qS(2),aC(3,`t`),vd(),da(4,`dd`),qS(5),vd()(),da(6,`div`,36)(7,`dt`),qS(8),aC(9,`t`),vd(),da(10,`dd`,48),qS(11),vd()()),i&2){let e=SS(),l=SS();hD(2),ey(lC(3,4,`table.task`)),hD(3),ey(e.task.label),hD(3),ey(lC(9,6,`table.duration`)),hD(3),ey(l.duration(e.task))}}function ut(i,n){if(i&1&&qS(0),i&2){let e=SS(2);bd(` — `,e.unlock,` `)}}function gt(i,n){if(i&1&&(da(0,`p`,43)(1,`code`),qS(2),vd(),dS(3,ut,1,1),vd()),i&2){let e=SS();hD(2),ey(e.refusal??e.task.refusal),hD(),hS(e.unlock?3:-1)}}function xt(i,n){if(i&1&&(da(0,`li`)(1,`code`),qS(2),vd(),da(3,`code`,49),qS(4),vd(),da(5,`span`),qS(6),vd()()),i&2){let e=n.$implicit;hD(2),ey(e.status),hD(2),ey(e.kind),hD(2),ey(e.path)}}function ft(i,n){if(i&1&&(da(0,`ul`,44),mS(1,xt,7,3,`li`,null,pS),vd()),i&2){let e=SS();hD(),yS(e.actions)}}function yt(i,n){i&1&&Sa(0,`ui-forge-doc`,45),i&2&&qm(`doc`,n)}function vt(i,n){if(i&1){let e=DS();da(0,`section`,14)(1,`h2`),qS(2),aC(3,`t`),vd(),da(4,`p`,40),Sa(5,`ui-state-badge`,41),dS(6,ct,1,2,`ui-state-badge`,42),dS(7,pt,2,1,`span`,21),dS(8,_t,2,1,`span`),vd(),da(9,`dl`,35)(10,`div`,36)(11,`dt`),qS(12),aC(13,`t`),vd(),da(14,`dd`,37)(15,`code`),qS(16),vd()()(),dS(17,mt,12,8),vd(),dS(18,gt,4,2,`p`,43),dS(19,ft,3,0,`ul`,44),dS(20,yt,1,1,`ui-forge-doc`,45),da(21,`details`,38)(22,`summary`),qS(23),aC(24,`t`),vd(),da(25,`pre`),qS(26),vd()(),da(27,`div`,32)(28,`button`,46),Ma(`click`,function(){let s=Hh(e),f=SS();return Vh(f.exportReceipt(s))}),Sa(29,`ui-icon`,47),qS(30),aC(31,`t`),vd(),da(32,`button`,34),Ma(`click`,function(){Hh(e);let s=SS();return Vh(s.receipt.set(null))}),qS(33),aC(34,`t`),vd()()()}if(i&2){let e,l=n,s=SS();hD(2),ey(lC(3,17,`tasks.result`)),hD(3),qm(`state`,l.status),hD(),hS(l.task?.stage?6:-1),hD(),hS(l.task?.exit_code!==null&&l.task?.exit_code!==void 0?7:-1),hD(),hS(l.detail?8:-1),hD(4),ey(lC(13,19,`tasks.correlation`)),hD(2),Ar(`title`,s.realCorrelation(s.receiptCorrelation(l))),hD(2),ey(s.receiptCorrelation(l)),hD(),hS(l.task?17:-1),hD(),hS(l.refusal||l.task?.refusal?18:-1),hD(),hS(l.actions?.length?19:-1),hD(),hS((e=s.receiptDoc(l))?20:-1,e),hD(3),ey(lC(24,21,`fdoc.raw`)),hD(3),ey(s.receiptText(l)),hD(3),qm(`size`,14),hD(),bd(` `,lC(31,23,`tasks.export`),` `),hD(3),ey(lC(34,25,`state.close`))}}function Ct(i,n){if(i&1){let e=DS();da(0,`ui-error`,50),Ma(`retry`,function(){Hh(e);let s=SS();return Vh(s.load())}),vd()}i&2&&qm(`error`,n)}function bt(i,n){i&1&&Sa(0,`ui-state-badge`,52)}function kt(i,n){if(i&1){let e=DS();da(0,`div`,56)(1,`button`,59),Ma(`click`,function(){let s=Hh(e).$implicit,f=SS(4);return Vh(f.selectTask(s.task))}),da(2,`span`,60),qS(3),vd(),da(4,`span`,61),Sa(5,`span`,62),vd(),da(6,`span`,63),qS(7),vd()()()}if(i&2){let e=n.$implicit,l=n.$index,s=SS(2),f=SS(2);Ar(`aria-setsize`,s.rows.length)(`aria-posinset`,f.tlSlice().start+l+1),hD(),Ar(`data-selected`,f.selectedId()===e.task.id||null),hD(),Ar(`title`,e.task.label||e.task.verb),hD(),ey(e.task.label||e.task.verb),hD(2),Na(`left`,`clamp(0px, `+e.leftPct+`%, calc(100% - 3px))`)(`width`,e.widthPct,`%`),qm(`title`,f.tipFor(e)),Ar(`data-kind`,f.stageKind(e.task.stage))(`data-open`,e.endMs===null||null),hD(2),ey(f.duration(e.task))}}function St(i,n){if(i&1&&(da(0,`p`,58),qS(1),aC(2,`t`),vd()),i&2){let e=SS(2);hD(),bd(` `,uC(2,1,`tasks.timeline.unplaced`,rC(4,We,e.unplaced.length)),` `)}}function ht(i,n){if(i&1){let e=DS();da(0,`div`,54),aC(1,`t`),da(2,`div`,55)(3,`span`),qS(4),vd(),da(5,`span`),qS(6),vd()(),mS(7,kt,8,13,`div`,56,nt),vd(),da(9,`ui-pager`,57),aC(10,`t`),Ma(`pageChange`,function(s){Hh(e);let f=SS(3);return Vh(f.tlPage.set(s))}),vd(),dS(11,St,3,6,`p`,58)}if(i&2){let e=SS(),l=SS(2);Ar(`aria-label`,lC(1,8,`tasks.timeline.title`)),hD(4),ey(l.fmtAt(e.windowStart)),hD(2),ey(l.fmtAt(e.windowEnd)),hD(),yS(l.pagedTlRows()),hD(2),qm(`total`,e.rows.length)(`pageSize`,l.LIST_PAGE)(`page`,l.tlSlice().page)(`label`,lC(10,10,`tasks.timeline.title`)),hD(2),hS(e.unplaced.length?11:-1)}}function Et(i,n){i&1&&(Sa(0,`ui-empty`,53),aC(1,`t`)),i&2&&qm(`title`,lC(1,1,`tasks.timeline.empty`))}function Pt(i,n){i&1&&dS(0,ht,12,12)(1,Et,2,3,`ui-empty`,53),i&2&&hS(n.rows.length?0:1)}function Tt(i,n){if(i&1&&(da(0,`section`,27)(1,`h2`,51),qS(2),aC(3,`t`),dS(4,bt,1,0,`ui-state-badge`,52),vd(),da(5,`p`,21),qS(6),aC(7,`t`),vd(),dS(8,Pt,2,1),vd()),i&2){let e,l=SS();hD(2),bd(` `,lC(3,4,`tasks.timeline.title`),` `),hD(2),hS(l.timeline().partial?4:-1),hD(2),ey(lC(7,6,`tasks.timeline.hint`)),hD(2),hS((e=l.timeline())?8:-1,e)}}function It(i,n){i&1&&Sa(0,`ui-skeleton`,29)}function wt(i,n){if(i&1&&(da(0,`tr`)(1,`td`)(2,`a`,67),qS(3),vd()(),da(4,`td`)(5,`code`),qS(6),vd()(),da(7,`td`),Sa(8,`ui-state-badge`,42),vd(),da(9,`td`,37)(10,`code`),qS(11),vd()(),da(12,`td`,48),qS(13),vd(),da(14,`td`),qS(15),vd()()),i&2){let e=n.$implicit,l=n.$index,s=SS(2);Ar(`data-selected`,s.selectedId()===e.id||null)(`aria-rowindex`,s.histSlice().start+l+2),hD(2),qm(`routerLink`,nC(12,Xe))(`queryParams`,rC(13,Ye,e.id)),hD(),bd(` `,e.label,` `),hD(3),ey(e.verb),hD(2),qm(`state`,s.stageKind(e.stage))(`labelOverride`,e.stage),hD(),Ar(`title`,e.correlation_id??null),hD(2),ey(e.correlation_id??`—`),hD(2),ey(s.duration(e)),hD(2),ey(e.exit_code??`—`)}}function Nt(i,n){if(i&1){let e=DS();da(0,`table`,64)(1,`thead`)(2,`tr`)(3,`th`,65)(4,`span`,66),qS(5),aC(6,`t`),vd()(),da(7,`th`,65),qS(8),aC(9,`t`),vd(),da(10,`th`,65),qS(11),aC(12,`t`),vd(),da(13,`th`,65),qS(14),aC(15,`t`),vd(),da(16,`th`,65),qS(17),aC(18,`t`),vd(),da(19,`th`,65),qS(20),aC(21,`t`),vd()()(),da(22,`tbody`),mS(23,wt,16,15,`tr`,null,at),vd()(),da(25,`ui-pager`,57),aC(26,`t`),Ma(`pageChange`,function(s){Hh(e);let f=SS();return Vh(f.histPage.set(s))}),vd()}if(i&2){let e=SS();Ar(`aria-rowcount`,e.tasks().length+1),hD(5),ey(lC(6,11,`table.task`)),hD(3),ey(lC(9,13,`table.verb`)),hD(3),ey(lC(12,15,`table.stage`)),hD(3),ey(lC(15,17,`table.correlation`)),hD(3),ey(lC(18,19,`table.duration`)),hD(3),ey(lC(21,21,`table.exit`)),hD(3),yS(e.pagedTasks()),hD(2),qm(`total`,e.tasks().length)(`pageSize`,e.LIST_PAGE)(`page`,e.histSlice().page)(`label`,lC(26,23,`tasks.recent`))}}function Mt(i,n){i&1&&(Sa(0,`ui-empty`,53),aC(1,`t`)),i&2&&qm(`title`,lC(1,1,`tasks.empty`))}function Ot(i,n){if(i&1&&dS(0,Mt,2,3,`ui-empty`,53),i&2){let e=SS();hS(e.loading()?-1:0)}}function Ft(i,n){i&1&&(da(0,`a`,71),qS(1),aC(2,`t`),vd()),i&2&&(qm(`routerLink`,nC(5,Ze))(`queryParams`,rC(6,et,n)),hD(),bd(` `,lC(2,3,`tasks.events`),` `))}function Bt(i,n){if(i&1&&(da(0,`div`,36)(1,`dt`),qS(2),aC(3,`t`),vd(),da(4,`dd`)(5,`code`),qS(6),vd()()()),i&2){let e=SS();hD(2),ey(lC(3,2,`tasks.refusal`)),hD(4),ey(e.refusal)}}function Dt(i,n){i&1&&Sa(0,`ui-state-badge`,52)}function Vt(i,n){if(i&1&&(da(0,`span`,48),qS(1),vd()),i&2){let e=SS().$implicit;hD(),bd(``,e.step.duration_ms,` ms`)}}function Ut(i,n){if(i&1&&(da(0,`span`,86),qS(1),vd()),i&2){let e=SS().$implicit;hD(),ey(e.step.detail)}}function zt(i,n){if(i&1){let e=DS();da(0,`li`)(1,`button`,82),Ma(`click`,function(){let s=Hh(e).$implicit,f=SS(4);return Vh(f.replayIdx.set(s.i))}),da(2,`code`,83),qS(3),vd(),da(4,`span`,84),qS(5),vd(),Sa(6,`ui-state-badge`,42),dS(7,Vt,2,1,`span`,48),da(8,`span`,85),qS(9),vd(),dS(10,Ut,2,1,`span`,86),vd()()}if(i&2){let e=n.$implicit,l=SS(2),s=SS(2);Ar(`data-current`,e.i===s.replayIdx()||null)(`data-kind-tone`,s.statusKind(e.step.status))(`aria-setsize`,l.steps.length)(`aria-posinset`,e.i+1),hD(),Ar(`data-current`,e.i===s.replayIdx()||null),hD(2),ey(e.step.kind),hD(2),ey(e.at),hD(),qm(`state`,s.statusKind(e.step.status))(`labelOverride`,e.step.status),hD(),hS(e.step.duration_ms!==null?7:-1),hD(2),ey(e.step.origin),hD(),hS(e.step.detail?10:-1)}}function At(i,n){if(i&1){let e=DS();da(0,`div`,78)(1,`button`,79),Ma(`click`,function(){Hh(e);let s=SS(3);return Vh(s.stepReplay(-1))}),qS(2),aC(3,`t`),vd(),da(4,`span`,21),qS(5),aC(6,`t`),vd(),da(7,`button`,80),Ma(`click`,function(){Hh(e);let s=SS(3);return Vh(s.stepReplay(1))}),qS(8),aC(9,`t`),vd()(),da(10,`ol`,81),mS(11,zt,11,12,`li`,null,rt),vd(),da(13,`ui-pager`,57),aC(14,`t`),Ma(`pageChange`,function(s){Hh(e);let f=SS(3);return Vh(f.replayManual.set(s))}),vd()}if(i&2){let e=SS(),l=SS(2);hD(),qm(`disabled`,l.replayIdx()<=0),hD(),bd(` `,lC(3,9,`tasks.replay.prev`),` `),hD(3),bd(` `,uC(6,11,`tasks.replay.step`,oC(18,tt,l.replayIdx()+1,e.steps.length)),` `),hD(2),qm(`disabled`,l.replayIdx()>=e.steps.length-1),hD(),bd(` `,lC(9,14,`tasks.replay.next`),` `),hD(3),yS(l.pagedReplaySteps(e.steps)),hD(2),qm(`total`,e.steps.length)(`pageSize`,l.LIST_PAGE)(`page`,l.replaySlice(e.steps.length).page)(`label`,lC(14,16,`tasks.replay.title`))}}function Rt(i,n){i&1&&(da(0,`p`,75),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`tasks.replay.empty`)))}function $t(i,n){i&1&&(da(0,`p`,76),qS(1),aC(2,`t`),vd()),i&2&&(hD(),bd(` `,lC(2,1,`tasks.replay.noCorrelation`),` `))}function Lt(i,n){i&1&&(da(0,`p`,77),Sa(1,`ui-state-badge`,87),da(2,`span`,21),qS(3),aC(4,`t`),vd()()),i&2&&(hD(3),ey(lC(4,1,`tasks.replay.unavailable`)))}function jt(i,n){if(i&1&&(da(0,`div`,72)(1,`h3`,73),Sa(2,`ui-icon`,74),qS(3),aC(4,`t`),dS(5,Dt,1,0,`ui-state-badge`,52),vd(),da(6,`p`,21),qS(7),aC(8,`t`),vd(),dS(9,At,15,21)(10,Rt,3,3,`p`,75)(11,$t,3,3,`p`,76)(12,Lt,5,3,`p`,77),vd()),i&2){let e,l=n;hD(2),qm(`size`,14),hD(),bd(` `,lC(4,5,`tasks.replay.title`),` `),hD(2),hS(l.truncated?5:-1),hD(2),ey(lC(8,7,`tasks.replay.hint`)),hD(2),hS((e=l.state)===`ready`?9:e===`empty`?10:e===`no-correlation`?11:e===`unavailable`?12:-1)}}function Gt(i,n){if(i&1){let e=DS();da(0,`section`,30)(1,`header`,68)(2,`h2`),Sa(3,`ui-icon`,10),qS(4),vd(),da(5,`button`,69),aC(6,`t`),Ma(`click`,function(){Hh(e);let s=SS();return Vh(s.selectedId.set(null))}),Sa(7,`ui-icon`,70),vd()(),da(8,`dl`,35)(9,`div`,36)(10,`dt`),qS(11),aC(12,`t`),vd(),da(13,`dd`)(14,`code`),qS(15),vd()()(),da(16,`div`,36)(17,`dt`),qS(18),aC(19,`t`),vd(),da(20,`dd`)(21,`code`),qS(22),vd()()(),da(23,`div`,36)(24,`dt`),qS(25),aC(26,`t`),vd(),da(27,`dd`),Sa(28,`ui-state-badge`,42),vd()(),da(29,`div`,36)(30,`dt`),qS(31),aC(32,`t`),vd(),da(33,`dd`),qS(34),vd()(),da(35,`div`,36)(36,`dt`),qS(37),aC(38,`t`),vd(),da(39,`dd`),qS(40),vd()(),da(41,`div`,36)(42,`dt`),qS(43),aC(44,`t`),vd(),da(45,`dd`,48),qS(46),vd()(),da(47,`div`,36)(48,`dt`),qS(49),aC(50,`t`),vd(),da(51,`dd`),qS(52),vd()(),da(53,`div`,36)(54,`dt`),qS(55),aC(56,`t`),vd(),da(57,`dd`,37)(58,`code`),qS(59),vd(),dS(60,Ft,3,8,`a`,71),vd()(),dS(61,Bt,7,4,`div`,36),vd(),dS(62,jt,13,9,`div`,72),vd()}if(i&2){let e,l,s=n,f=SS();hD(3),qm(`size`,15),hD(),ey(s.label||s.verb),hD(),Ar(`aria-label`,lC(6,25,`state.close`)),hD(2),qm(`size`,14),hD(4),ey(lC(12,27,`table.id`)),hD(4),ey(s.id),hD(3),ey(lC(19,29,`table.verb`)),hD(4),ey(s.verb),hD(3),ey(lC(26,31,`table.stage`)),hD(3),qm(`state`,f.stageKind(s.stage))(`labelOverride`,s.stage),hD(3),ey(lC(32,33,`table.started`)),hD(3),ey(s.started_at?f.fmtEventAt(s.started_at):`—`),hD(3),ey(lC(38,35,`table.finished`)),hD(3),ey(s.finished_at?f.fmtEventAt(s.finished_at):`—`),hD(3),ey(lC(44,37,`table.duration`)),hD(3),ey(f.duration(s)),hD(3),ey(lC(50,39,`table.exit`)),hD(3),ey(s.exit_code??`—`),hD(3),ey(lC(56,41,`tasks.correlation`)),hD(2),Ar(`title`,s.correlation_id??null),hD(2),ey(s.correlation_id??`—`),hD(),hS((e=s.correlation_id)?60:-1,e),hD(),hS(s.refusal?61:-1),hD(),hS((l=f.replay())?62:-1,l)}}var fe=class i{api=p(g);task=rn(``);intent=k(``);pending=k(null);receipt=k(null);tasks=k([]);error=k(null);stale=k(null);busy=k(!1);executing=k(!1);loading=k(!0);metricsSrc=new l;selectedId=k(null);replayIdx=k(0);deepApplied=k(null);histPage=k(0);tlPage=k(0);replayManual=k(null);LIST_PAGE=50;timeline=tn(()=>M(this.tasks()));selectedTask=tn(()=>this.tasks().find(n=>n.id===this.selectedId())??null);replay=tn(()=>x(this.metricsSrc.data(),this.selectedTask()));histSlice=tn(()=>V(this.tasks().length,this.LIST_PAGE,this.histPage()));pagedTasks=tn(()=>this.tasks().slice(this.histSlice().start,this.histSlice().end));tlSlice=tn(()=>V(this.timeline().rows.length,this.LIST_PAGE,this.tlPage()));pagedTlRows=tn(()=>this.timeline().rows.slice(this.tlSlice().start,this.tlSlice().end));replaySlice(n){let l=this.replayManual()??Math.floor(this.replayIdx()/this.LIST_PAGE);return V(n,this.LIST_PAGE,l)}stepReplay(n){this.replayManual.set(null);let e=this.replay()?.steps??[],l=this.replayIdx()+n;this.replayIdx.set(Math.max(0,Math.min(l,e.length-1)))}pagedReplaySteps(n){let e=this.replaySlice(n.length);return n.slice(e.start,e.end).map((l,s)=>({step:l,i:e.start+s,at:this.fmtEventAt(l.at)}))}constructor(){Oo(()=>{let n=this.task();!n||n===this.deepApplied()||this.loading()||(this.deepApplied.set(n),this.tasks().some(e=>e.id===n)&&(this.selectedId.set(n),this.replayIdx.set(0)))}),Oo(()=>{this.tasks(),this.histPage.set(0),this.tlPage.set(0)}),Oo(()=>{this.replay(),this.replayManual.set(null)}),this.load()}async load(){let n$1=this.metricsSrc.load(()=>this.api.metrics());try{this.tasks.set(await hE(this.api.tasks()))}catch(e){this.error.set(e instanceof n?e:new n(0))}finally{this.loading.set(!1)}await n$1}selectTask(n){this.selectedId.set(n.id),this.replayIdx.set(0)}fmtAt(n){return n===null?`—`:new Date(n).toLocaleString()}fmtEventAt(n){let e=Date.parse(n);return Number.isNaN(e)?n:new Date(e).toLocaleString()}tipFor(n){return`${this.fmtAt(n.startMs)} \u2192 ${n.endMs===null?`—`:this.fmtAt(n.endMs)}`}statusKind(n){let e=(n||``).toLowerCase();return[`ok`,`done`,`completed`,`success`,`succeeded`,`pass`,`passed`].includes(e)?`supported`:[`failed`,`fail`,`error`,`refused`,`denied`].includes(e)?`error`:[`skipped`,`cancelled`,`canceled`,`partial`,`degraded`].includes(e)?`warn`:[`running`,`pending`,`started`,`in_progress`,`planning`,`verifying`].includes(e)?`info`:`muted`}async plan(){if(!(this.busy()||!this.intent().trim())){this.busy.set(!0),this.error.set(null),this.stale.set(null),this.receipt.set(null);try{let n=await hE(this.api.tasksPlan({intent:this.intent()})),e=n.correlation_id;this.pending.set({plan_token:n.plan_token,plan:n.plan,correlation_id:typeof e==`string`&&e?e:null})}catch(n$2){this.error.set(n$2 instanceof n?n$2:new n(0))}finally{this.busy.set(!1)}}}async execute(n$3,e){if(!this.busy()){this.busy.set(!0),this.executing.set(!0),this.error.set(null);try{this.receipt.set(await hE(this.api.tasksExecute(n$3,e))),this.pending.set(null),await this.load()}catch(l){let s=l instanceof n?l:new n(0);s.body.code===`PORTAL-PLAN-STALE`?(this.pending.set(null),this.stale.set(s)):this.error.set(s)}finally{this.busy.set(!1),this.executing.set(!1)}}}async regenerate(){this.busy()||!this.stale()||(this.stale.set(null),await this.plan())}exportReceipt(n){let e=new Blob([JSON.stringify(n,null,2)],{type:`application/json`}),l=URL.createObjectURL(e),s=document.createElement(`a`);s.href=l,s.download=n.task?.id?`receipt-${n.task.id}.json`:`receipt.json`,s.click(),URL.revokeObjectURL(l)}planText(n){return JSON.stringify(n,null,2)}receiptText(n){return JSON.stringify(n,null,2)}planCorrelation(n){if(n.correlation_id)return n.correlation_id;let e=n.plan.correlation_id;return typeof e==`string`&&e?e:`—`}receiptCorrelation(n){let e=n.task?.correlation_id;if(e)return e;let l=n.correlation_id;return typeof l==`string`&&l?l:`—`}realCorrelation(n){return n===`—`?null:n}duration(n){return f(n)}planField(n,e){let l=n[e];return l==null?``:String(l)}planArgs(n){let e=n.args;return!e||typeof e!=`object`?[]:Object.entries(e).map(([l,s])=>[l,typeof s==`object`?JSON.stringify(s):String(s)])}receiptDoc(n){let e=n.task?.receipt;return e&&typeof e==`object`?e:null}stageKind(n){let e=(n||``).toLowerCase();return e===`completed`?`supported`:[`failed`,`refused`,`cancelled`].includes(e)?`error`:[`awaiting_approval`,`partial`].includes(e)?`warn`:[`running`,`planning`,`verifying`].includes(e)?`info`:`muted`}static ɵfac=function(e){return new(e||i)};static ɵcmp=ei({type:i,selectors:[[`page-tasks`]],inputs:{task:[1,`task`]},decls:69,vars:61,consts:[[`hintId`,`diagnose`,3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[`data-section`,`intent`,1,`card`],[`for`,`intent`,1,`lbl`],[1,`intent-row`],[1,`search-field`,`intent-field`],[`name`,`terminal`,3,`size`],[`id`,`intent`,`type`,`text`,1,`input`,3,`ngModelChange`,`keydown.enter`,`placeholder`,`ngModel`,`disabled`],[`data-action`,`plan`,1,`btn`,`btn--primary`,3,`click`,`disabled`],[`name`,`tasks`,3,`size`],[`role`,`status`,`aria-live`,`polite`,`data-section`,`running`,1,`card`,`running`],[`role`,`alert`,`data-section`,`stale`,1,`card`,`stale`],[`data-lift`,``,`data-section`,`plan`,1,`card`],[`data-lift`,``,`data-section`,`receipt`,`aria-live`,`polite`,1,`card`],[3,`error`],[`aria-labelledby`,`ops-h`,`data-section`,`ops`,1,`card`,`ops`],[`id`,`ops-h`],[1,`ops__list`],[`data-op`,`plan`,1,`op`],[1,`op__body`],[1,`muted`],[`state`,`supported`],[`data-op`,`execute`,1,`op`],[`data-op`,`cancel`,`data-state`,`unverified`,1,`op`],[`state`,`unverified`],[1,`muted`,`limits`],[`data-section`,`timeline`,`aria-labelledby`,`tl-h`,1,`card`],[`data-section`,`history`,1,`card`],[`kind`,`card`],[`data-section`,`task-detail`,`aria-live`,`polite`,1,`card`,`detail`,`fg-enter`],[`aria-hidden`,`true`,1,`running__spinner`],[1,`row`],[`data-action`,`regenerate`,1,`btn`,`btn--primary`,3,`click`,`disabled`],[1,`btn`,3,`click`],[1,`plan-card`],[1,`kv`],[1,`corr`],[1,`raw`],[`data-action`,`execute`,1,`btn`,`btn--primary`,3,`click`,`disabled`],[1,`receipt__status`],[3,`state`],[3,`state`,`labelOverride`],[`role`,`alert`,1,`refusal`],[1,`actions`],[3,`doc`],[`data-action`,`export`,1,`btn`,3,`click`],[`name`,`install`,3,`size`],[1,`num`],[1,`actions__kind`],[3,`retry`,`error`],[`id`,`tl-h`],[`state`,`PARTIAL`],[`icon`,`tasks`,3,`title`],[`role`,`list`,1,`tl`],[`aria-hidden`,`true`,1,`tl__axis`],[`role`,`listitem`,1,`tl__item`],[3,`pageChange`,`total`,`pageSize`,`page`,`label`],[`data-note`,`unplaced`,1,`muted`,`tl__unplaced`],[`type`,`button`,1,`tl__row`,3,`click`],[1,`tl__label`],[1,`tl__track`],[1,`tl__bar`,3,`title`],[1,`tl__dur`,`num`],[1,`table`],[`scope`,`col`],[1,`sr-only`],[`data-action`,`inspect`,1,`linklike`,3,`routerLink`,`queryParams`],[1,`detail__head`],[1,`icon-btn`,3,`click`],[`name`,`chevron-right`,3,`size`],[`data-action`,`correlated`,1,`linklike`,`corr__events`,3,`routerLink`,`queryParams`],[`data-section`,`replay`,1,`replay`],[1,`replay__title`],[`name`,`history`,3,`size`],[`data-state`,`empty`,1,`muted`],[`data-state`,`no-correlation`,1,`muted`],[`data-state`,`unavailable`,1,`unv-cell`],[1,`replay__controls`],[`data-action`,`prev`,1,`btn`,`btn--mini`,3,`click`,`disabled`],[`data-action`,`next`,1,`btn`,`btn--mini`,3,`click`,`disabled`],[1,`replay__steps`],[`type`,`button`,1,`replay__step`,3,`click`],[1,`replay__kind`],[1,`replay__at`],[1,`replay__origin`],[1,`replay__detail`],[`state`,`UNVERIFIED`]],template:function(e,l){if(e&1&&(da(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),da(3,`button`,1),Ma(`click`,function(){return l.load()}),Sa(4,`ui-icon`,2),qS(5),aC(6,`t`),vd()(),da(7,`section`,3)(8,`label`,4),qS(9),aC(10,`t`),vd(),da(11,`div`,5)(12,`div`,6),Sa(13,`ui-icon`,7),da(14,`input`,8),aC(15,`t`),tb(),Ma(`ngModelChange`,function(f){return l.intent.set(f)})(`keydown.enter`,function(){return l.plan()}),vd()(),da(16,`button`,9),Ma(`click`,function(){return l.plan()}),Sa(17,`ui-icon`,10),qS(18),aC(19,`t`),vd()()(),dS(20,ot,5,3,`section`,11),dS(21,lt,19,16,`section`,12),dS(22,st,50,35,`section`,13),dS(23,vt,35,27,`section`,14),dS(24,Ct,1,1,`ui-error`,15),da(25,`section`,16)(26,`h2`,17),qS(27),aC(28,`t`),vd(),da(29,`ul`,18)(30,`li`,19)(31,`span`,20)(32,`strong`),qS(33),aC(34,`t`),vd(),da(35,`small`,21),qS(36),aC(37,`t`),vd()(),Sa(38,`ui-state-badge`,22),vd(),da(39,`li`,23)(40,`span`,20)(41,`strong`),qS(42),aC(43,`t`),vd(),da(44,`small`,21),qS(45),aC(46,`t`),vd()(),Sa(47,`ui-state-badge`,22),vd(),da(48,`li`,24)(49,`span`,20)(50,`strong`),qS(51),aC(52,`t`),vd(),da(53,`small`,21),qS(54),aC(55,`t`),vd()(),Sa(56,`ui-state-badge`,25),vd()(),da(57,`p`,26),qS(58),aC(59,`t`),vd()(),dS(60,Tt,9,8,`section`,27),da(61,`section`,28)(62,`h2`),qS(63),aC(64,`t`),vd(),dS(65,It,1,0,`ui-skeleton`,29),dS(66,Nt,27,25)(67,Ot,1,1),vd(),dS(68,Gt,63,43,`section`,30)),e&2){let s,f,b,M,K;qm(`title`,lC(1,31,`tasks.title`))(`subtitle`,lC(2,33,`tasks.subtitle`)),hD(3),qm(`disabled`,l.busy()),hD(),qm(`size`,15),hD(),bd(` `,lC(6,35,`state.refresh`),` `),hD(4),ey(lC(10,37,`tasks.intent.label`)),hD(4),qm(`size`,15),hD(),qm(`placeholder`,lC(15,39,`tasks.intent.placeholder`))(`ngModel`,l.intent())(`disabled`,l.busy()),rb(),hD(2),qm(`disabled`,l.busy()||!l.intent().trim()),hD(),qm(`size`,14),hD(),bd(` `,lC(19,41,`tasks.intent.run`),` `),hD(2),hS(l.executing()?20:-1),hD(),hS((s=l.stale())?21:-1,s),hD(),hS((f=l.pending())?22:-1,f),hD(),hS((b=l.receipt())?23:-1,b),hD(),hS((M=l.error())?24:-1,M),hD(3),ey(lC(28,43,`tasks.ops.title`)),hD(6),ey(lC(34,45,`tasks.intent.run`)),hD(3),ey(lC(37,47,`tasks.ops.plan.hint`)),hD(6),ey(lC(43,49,`tasks.execute`)),hD(3),ey(lC(46,51,`tasks.ops.execute.hint`)),hD(6),ey(lC(52,53,`state.cancel`)),hD(3),ey(lC(55,55,`tasks.ops.cancel.hint`)),hD(4),ey(lC(59,57,`tasks.limits`)),hD(2),hS(l.tasks().length?60:-1),hD(3),ey(lC(64,59,`tasks.recent`)),hD(2),hS(l.loading()?65:-1),hD(),hS(l.tasks().length?66:67),hD(2),hS((K=l.selectedTask())?68:-1,K)}},dependencies:[Zt,De$1,Yt,At$1,vc,T,I,_,D,cE,j,k$1,k$2,aE],styles:[`.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}h2[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);text-transform:uppercase;letter-spacing:.04em}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;font-weight:550;word-break:break-all}.corr[_ngcontent-%COMP%]{max-width:170px}.corr[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.corr__events[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs)}.limits[_ngcontent-%COMP%]{margin:var(--%NS%space-3) 0 0;font-size:var(--%NS%font-xs)}.receipt__status[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-3)}.actions[_ngcontent-%COMP%]{font-family:var(--%NS%font-mono);font-size:var(--%NS%font-sm);margin:0 0 var(--%NS%space-3);max-height:200px;overflow:auto}.actions[_ngcontent-%COMP%] li[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);flex:none}.actions__kind[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)!important}.row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2);margin-top:var(--%NS%space-3)}.tl[_ngcontent-%COMP%]{display:grid;gap:4px;margin-top:var(--%NS%space-3)}.tl__axis[_ngcontent-%COMP%]{display:flex;justify-content:space-between;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);margin-left:12rem;font-variant-numeric:tabular-nums}.tl__row[_ngcontent-%COMP%]{display:grid;grid-template-columns:12rem 1fr 5.5rem;align-items:center;gap:var(--%NS%space-2);border:1px solid transparent;border-radius:var(--%NS%radius-md);background:none;font:inherit;color:inherit;text-align:left;padding:3px var(--%NS%space-2);cursor:pointer;width:100%;transition:background var(--%NS%motion-fast),border-color var(--%NS%motion-fast)}.tl__row[_ngcontent-%COMP%]:hover{background:var(--%NS%bg-hover)}.tl__row[data-selected][_ngcontent-%COMP%]{border-color:var(--%NS%accent-ink);background:var(--%NS%accent-bg)}.tl__label[_ngcontent-%COMP%]{font-size:var(--%NS%font-sm);font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl__track[_ngcontent-%COMP%]{position:relative;height:14px;border-radius:var(--%NS%radius-pill);background:var(--%NS%bg);border:1px solid var(--%NS%border);overflow:hidden}.tl__bar[_ngcontent-%COMP%]{position:absolute;top:0;bottom:0;min-width:3px;border-radius:var(--%NS%radius-pill);background:var(--%NS%bar-fg, var(--%NS%fg-muted))}.tl__bar[data-open][_ngcontent-%COMP%]{background:repeating-linear-gradient(-45deg,var(--%NS%bar-fg, var(--%NS%fg-muted)) 0 3px,transparent 3px 6px);border-right:2px dashed var(--%NS%bar-fg, var(--%NS%fg-muted))}.tl__bar[data-kind=supported][_ngcontent-%COMP%]{--%NS%bar-fg: var(--%NS%ok)}.tl__bar[data-kind=error][_ngcontent-%COMP%]{--%NS%bar-fg: var(--%NS%error)}.tl__bar[data-kind=warn][_ngcontent-%COMP%]{--%NS%bar-fg: var(--%NS%warn)}.tl__bar[data-kind=info][_ngcontent-%COMP%]{--%NS%bar-fg: var(--%NS%info)}.tl__dur[_ngcontent-%COMP%]{text-align:right}.tl__dur[_ngcontent-%COMP%], .tl__unplaced[_ngcontent-%COMP%], .replay__at[_ngcontent-%COMP%], .replay__origin[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.tl__unplaced[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 0}.detail[_ngcontent-%COMP%]{border-left:3px solid var(--%NS%accent)}.detail__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.replay[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3);border-top:1px solid var(--%NS%border);padding-top:var(--%NS%space-3)}.replay__title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:0 0 var(--%NS%space-1);font-size:var(--%NS%font-md)}.replay__title[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.replay__controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:var(--%NS%space-2) 0}.replay__steps[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:4px}.replay__step[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--%NS%space-2);width:100%;border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:none;font:inherit;color:inherit;text-align:left;padding:var(--%NS%space-2) var(--%NS%space-3);cursor:pointer;transition:border-color var(--%NS%motion-fast),box-shadow var(--%NS%motion-fast),background var(--%NS%motion-fast)}.replay__step[_ngcontent-%COMP%]:hover, .replay__step[data-current][_ngcontent-%COMP%]{border-color:var(--%NS%accent-ink)}.replay__step[data-current][_ngcontent-%COMP%]{box-shadow:0 0 0 1px var(--%NS%accent);background:var(--%NS%accent-bg)}.replay__kind[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.replay__at[_ngcontent-%COMP%]{font-variant-numeric:tabular-nums}.replay__detail[_ngcontent-%COMP%]{flex-basis:100%;font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted);overflow-wrap:anywhere}#tl-h[_ngcontent-%COMP%], .detail__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);flex-wrap:wrap}@media(max-width:720px){.tl__axis[_ngcontent-%COMP%]{margin-left:0}.tl__row[_ngcontent-%COMP%]{grid-template-columns:1fr;gap:2px}.tl__dur[_ngcontent-%COMP%]{text-align:left}}`]})};export{fe as TasksPage}; \ No newline at end of file diff --git a/portal/assets/chunk-CR0uEECS.js b/portal/assets/chunk-CR0uEECS.js new file mode 100644 index 0000000..dc1dab3 --- /dev/null +++ b/portal/assets/chunk-CR0uEECS.js @@ -0,0 +1 @@ +import{$ as dS,At as qm,Bt as tn,Et as p,F as Sa,Ht as ty,J as aC,Jt as vd,Nt as rb,P as SS,Q as cE,Qt as yS,Rt as tb,S as Ma,Ut as uC,Y as aE,Z as bd,at as ey,ct as hD,et as da,f as Fg,gt as k,i as Ar,it as ei,jt as rC,kt as qS,lt as hE,ot as gS,p as Hh,qt as vc,s as DS,ut as hS,vt as lC,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{c as a,r as g,t as g$1}from"./main-XW2ZMSO5.js";import{a as l,n as c}from"./chunk-BNDlNg-C.js";import{t as _}from"./chunk-16deWS0U.js";import{t as D}from"./chunk-Bg2lccQE.js";import{n as k$1,t as I}from"./chunk-DQtX_-dj.js";import{t as T$1}from"./chunk-BGgpmc9t.js";import{a as T$2,i as M$1,n as G,r as H}from"./chunk-pVzsnrcB.js";import{t as r}from"./chunk-DuZy_X7l.js";import{i as Zt,n as De$1,r as Yt,t as At}from"./chunk-DQFb71Td.js";var he=[`missing-component`,`incomplete-config`,`incompatible-dependency`,`mcp-unavailable`,`recurring-failure`,`related-skill`];var pe={"missing-component":`recommend.kind.missingComponent`,"incomplete-config":`recommend.kind.incompleteConfig`,"incompatible-dependency":`recommend.kind.incompatibleDependency`,"mcp-unavailable":`recommend.kind.mcpUnavailable`,"recurring-failure":`recommend.kind.recurringFailure`,"related-skill":`recommend.kind.relatedSkill`};var w={federation:`GET /api/v1/federation`,registry:`GET /api/v1/registry/state`,bootstrap:`GET /api/v1/bootstrap`,skills:`GET /api/v1/skills`,agents:`GET /api/v1/agents`,mcp:`GET /api/v1/mcp/servers`,hosts:`GET /api/v1/hosts`,tasks:`GET /api/v1/tasks`};var M=(n,t)=>nt?1:0;var xe=new Set([`NOT_CONFIGURED`,`FAILED`,`DEGRADED`]);var be=n=>{if(n.refusal)return!0;let t=n.receipt?.status;return typeof t==`string`&&t!==`ok`};function me(n,t){let e=new Set(typeof t==`string`?[t]:t);return!n||e.size===0?[]:n.filter(i=>(i.skills??[]).some(r=>e.has(r))).sort((i,r)=>M(i.id,r.id))}function ge(n,t){return!n||!t?[]:n.filter(e=>(e.domains??[]).includes(t)).sort((e,i)=>M(e.id,i.id))}function ue(n,t,e){return!n||!t?[]:n.filter(i=>i.domain===t&&i.id!==e).sort((i,r)=>M(i.id,r.id))}function Ce(n){let t=n.federation;if(!t)return[];let e=new Set(t.installed_forges??[]),i=new Set(Object.keys(n.registry?.forges??{})),r=n.registry!=null,s=[];for(let h of t.specialists??[]){let f=typeof h.provider==`string`?h.provider:null;f&&(e.has(f)||i.has(f)||s.push({id:`missing-component:${f}`,kind:`missing-component`,severity:`info`,reasonKey:`recommend.reason.missingComponent`,params:{forge:f},route:`/federation`,refs:[{kind:`forge`,id:f}],source:[{endpoint:w.federation,field:`specialists[].provider`},{endpoint:w.federation,field:`installed_forges`},...r?[{endpoint:w.registry,field:`forges`}]:[]]}))}return s.sort((h,f)=>M(h.id,f.id))}function Se(n){let t=[],e=n.environment;if(e)for(let i of e.variables??[])i.required&&(i.present?i.valid===!1&&t.push({id:`incomplete-config:env:${i.name}:invalid`,kind:`incomplete-config`,severity:`warning`,reasonKey:`recommend.reason.envInvalid`,params:{name:i.name},route:`/config`,refs:[{kind:`env`,id:i.name}],source:[{endpoint:w.bootstrap,field:`account_environment.variables[].valid`}]}):t.push({id:`incomplete-config:env:${i.name}`,kind:`incomplete-config`,severity:`warning`,reasonKey:`recommend.reason.envMissing`,params:{name:i.name},route:`/config`,refs:[{kind:`env`,id:i.name}],source:[{endpoint:w.bootstrap,field:`account_environment.variables[].present`}]}));for(let i of n.hosts??[])i.detected&&i.integration===`NOT_DETECTED`&&t.push({id:`incomplete-config:host:${i.host}`,kind:`incomplete-config`,severity:`info`,reasonKey:`recommend.reason.hostNotIntegrated`,params:{host:i.host},route:`/hosts`,refs:[{kind:`host`,id:i.host}],source:[{endpoint:w.hosts,field:`integration`}]});return t.sort((i,r)=>M(i.id,r.id))}function ke(n){let t=[];for(let e of n.hosts??[])e.detected&&e.supported===!1&&t.push({id:`incompatible-dependency:${e.host}`,kind:`incompatible-dependency`,severity:`warning`,reasonKey:`recommend.reason.hostUnsupported`,params:{host:e.host},route:`/hosts`,refs:[{kind:`host`,id:e.host}],source:[{endpoint:w.hosts,field:`detected`},{endpoint:w.hosts,field:`supported`}]});return t.sort((e,i)=>M(e.id,i.id))}function we(n){let t=[];for(let e of n.mcp??[])xe.has(e.state)&&t.push({id:`mcp-unavailable:${e.id}`,kind:`mcp-unavailable`,severity:`warning`,reasonKey:`recommend.reason.mcpState`,params:{id:e.id,state:e.state},route:`/mcp`,refs:[{kind:`mcp`,id:e.id}],source:[{endpoint:w.mcp,field:`state`}]});return t.sort((e,i)=>M(e.id,i.id))}function Ee(n){let t=new Map;for(let i of n.tasks??[]){if(!be(i))continue;let r=i.verb||i.id,s=t.get(r)??{count:0,ids:[]};s.count+=1,s.ids.push(i.id),t.set(r,s)}let e=[];for(let[i,r]of t)r.count<2||e.push({id:`recurring-failure:${i}`,kind:`recurring-failure`,severity:`warning`,reasonKey:`recommend.reason.recurringFailure`,params:{verb:i,count:r.count},route:`/tasks`,refs:r.ids.sort(M).map(s=>({kind:`operation`,id:s})),source:[{endpoint:w.tasks,field:`refusal`},{endpoint:w.tasks,field:`receipt.status`}]});return e.sort((i,r)=>M(i.id,r.id))}function Pe(n){let t=n.skills;if(!t)return[];let e=new Map;for(let r of t){let s=typeof r.domain==`string`&&r.domain.trim()?r.domain.trim():null;if(!s||!r.id)continue;let h=e.get(s)??[];h.push(r.id),e.set(s,h)}let i=[];for(let[r,s]of e){if(s.length<2)continue;let h=s.sort(M);i.push({id:`related-skill:${r}`,kind:`related-skill`,severity:`info`,reasonKey:`recommend.reason.sameDomain`,params:{domain:r,count:h.length},route:`/skills`,refs:h.map(f=>({kind:`skill`,id:f})),source:[{endpoint:w.skills,field:`domain`}]})}return i.sort((r,s)=>M(r.id,s.id))}function _e(n){let t={"missing-component":Ce(n),"incomplete-config":Se(n),"incompatible-dependency":ke(n),"mcp-unavailable":we(n),"recurring-failure":Ee(n),"related-skill":Pe(n)};return he.flatMap(e=>t[e])}var Ne=n=>({count:n});var Me=n=>[n];var T=(n,t)=>t.id;var ve=(n,t)=>t.path;var De=(n,t)=>t.kind+`:`+t.id;var Oe=(n,t)=>t.endpoint+t.field;function Te(n,t){n&1&&(da(0,`div`,10),aC(1,`t`),Sa(2,`ui-skeleton`,22),vd()),n&2&&(Ar(`aria-label`,lC(1,2,`state.loading`)),hD(2),qm(`lines`,2))}function Ke(n,t){if(n&1&&(da(0,`li`)(1,`code`),qS(2),vd(),Sa(3,`ui-state-badge`,25),aC(4,`t`),vd()),n&2){let e=t.$implicit,i=SS(2);Ar(`data-source`,e.id)(`data-state`,e.state),hD(2),ey(e.endpoint),hD(),qm(`state`,i.sourceBadge(e.state))(`labelOverride`,lC(4,5,`graph.source.`+e.state))}}function Ie(n,t){if(n&1){let e=DS();da(0,`button`,30),Ma(`click`,function(){let r=Hh(e).$implicit,s=SS(3);return Vh(s.toggleKind(r))}),qS(1),vd()}if(n&2){let e=t.$implicit,i=SS(2),r=SS();Ar(`data-kind-chip`,e)(`data-tone`,r.kind()===e?`accent`:null)(`aria-pressed`,r.kind()===e),hD(),ty(` `,e,` · `,i.counts[e],` `)}}function Fe(n,t){n&1&&Sa(0,`ui-state-badge`,37)}function Be(n,t){if(n&1){let e=DS();da(0,`li`)(1,`button`,33),Ma(`click`,function(){let r=Hh(e).$implicit,s=SS(3);return Vh(s.select(r))}),Sa(2,`ui-icon`,34),da(3,`span`,35),qS(4),vd(),da(5,`code`,36),qS(6),vd(),dS(7,Fe,1,0,`ui-state-badge`,37),vd()()}if(n&2){let e=t.$implicit,i=SS(3);hD(),Ar(`data-unverified`,e.unverified||null)(`data-selected`,i.selected()?.id===e.id||null),hD(),qm(`name`,i.kindIcon(e.kind))(`size`,14),hD(),Ar(`title`,e.label),hD(),ey(e.label),hD(),Ar(`title`,e.id),hD(),ey(e.id),hD(),hS(e.unverified?7:-1)}}function Re(n,t){n&1&&(da(0,`li`,16),qS(1),aC(2,`t`),vd()),n&2&&(hD(),ey(lC(2,1,`knowledge.noEntities`)))}function Ae(n,t){if(n&1){let e=DS();da(0,`div`,29),aC(1,`t`),da(2,`button`,30),Ma(`click`,function(){Hh(e);let r=SS(2);return Vh(r.kind.set(null))}),qS(3),aC(4,`t`),vd(),mS(5,Ie,2,5,`button`,31,gS),vd(),da(7,`ul`,32),mS(8,Be,8,9,`li`,null,T,!1,Re,3,3,`li`,16),vd()}if(n&2){let e=SS(),i=SS();Ar(`aria-label`,lC(1,6,`command.filters`)),hD(2),Ar(`data-tone`,i.kind()===null?`accent`:null)(`aria-pressed`,i.kind()===null),hD(),ty(` `,lC(4,8,`state.all`),` · `,e.nodes.length,` `),hD(2),yS(i.kindOptions(e)),hD(3),yS(i.filtered())}}function ze(n,t){n&1&&(Sa(0,`ui-empty`,15),aC(1,`t`)),n&2&&qm(`title`,lC(1,1,`knowledge.noEntities`))}function Ve(n,t){n&1&&Sa(0,`ui-state-badge`,37)}function Ge(n,t){if(n&1&&(da(0,`a`,39),qS(1),aC(2,`t`),aC(3,`t`),Sa(4,`ui-icon`,41),vd()),n&2){let e=t;qm(`routerLink`,e.commands)(`queryParams`,e.queryParams??null)(`fragment`,e.fragment),hD(),ty(` `,lC(2,6,`entity.openIn`),` `,lC(3,8,e.navKey),` `),hD(3),qm(`size`,13)}}function $e(n,t){if(n&1&&(da(0,`code`),qS(1),vd()),n&2){let e=t.$implicit,i=SS(3);hD(),ey(i.endpointFor(e))}}function Le(n,t){if(n&1){let e=DS();da(0,`li`)(1,`button`,47),Ma(`click`,function(){let r=Hh(e).$implicit,s=SS(3);return Vh(s.selectId(r.source))}),qS(2),vd(),da(3,`code`),qS(4),vd(),da(5,`button`,47),Ma(`click`,function(){let r=Hh(e).$implicit,s=SS(3);return Vh(s.selectId(r.target))}),qS(6),vd(),da(7,`code`,48),qS(8),vd()()}if(n&2){let e=t.$implicit,i=SS(3);hD(2),bd(` `,i.label(e.source),` `),hD(2),ey(e.kind),hD(2),bd(` `,i.label(e.target),` `),hD(2),ey(i.endpointFor(e.evidence))}}function qe(n,t){n&1&&(da(0,`li`,16),qS(1),aC(2,`t`),vd()),n&2&&(hD(),ey(lC(2,1,`knowledge.relatedEmpty`)))}function Ue(n,t){if(n&1){let e=DS();da(0,`li`)(1,`button`,47),Ma(`click`,function(){let r=Hh(e).$implicit,s=SS(4);return Vh(s.selectId(`skill:`+r.id))}),qS(2),vd(),da(3,`code`,48),qS(4),vd()()}if(n&2){let e=t.$implicit;hD(2),bd(` `,e.name||e.id,` `),hD(2),ey(`GET /api/v1/skills → domain`)}}function He(n,t){if(n&1&&(da(0,`h3`,44),qS(1),aC(2,`t`),vd(),da(3,`ul`,49),mS(4,Ue,5,2,`li`,null,T),vd()),n&2){let e=SS(3);hD(),ey(lC(2,1,`knowledge.sameDomain`)),hD(3),yS(e.sameDomain())}}function je(n,t){if(n&1){let e=DS();da(0,`li`)(1,`button`,47),Ma(`click`,function(){let r=Hh(e).$implicit,s=SS(4);return Vh(s.selectId(`agent:`+r.id))}),qS(2),vd(),da(3,`code`,48),qS(4),vd()()}if(n&2){let e=t.$implicit;hD(2),bd(` `,e.name||e.id,` `),hD(2),ey(`GET /api/v1/agents → skills[]`)}}function Qe(n,t){if(n&1&&(da(0,`h3`,44),qS(1),aC(2,`t`),vd(),da(3,`ul`,50),mS(4,je,5,2,`li`,null,T),vd()),n&2){let e=SS(3);hD(),ey(lC(2,1,`knowledge.declaredBy`)),hD(3),yS(e.declaringAgents())}}function We(n,t){if(n&1){let e=DS();da(0,`li`)(1,`button`,47),Ma(`click`,function(){let r=Hh(e).$implicit,s=SS(4);return Vh(s.selectId(`agent:`+r.id))}),qS(2),vd(),da(3,`code`,48),qS(4),vd()()}if(n&2){let e=t.$implicit;hD(2),bd(` `,e.name||e.id,` `),hD(2),ey(`GET /api/v1/agents → domains[]`)}}function Je(n,t){if(n&1&&(da(0,`h3`,44),qS(1),aC(2,`t`),vd(),da(3,`ul`,51),mS(4,We,5,2,`li`,null,T),vd()),n&2){let e=SS(3);hD(),ey(lC(2,1,`knowledge.domainAgents`)),hD(3),yS(e.domainAgents())}}function Xe(n,t){if(n&1&&(da(0,`li`)(1,`span`,52),qS(2),vd(),da(3,`code`,48),qS(4),vd()()),n&2){let e=t.$implicit;hD(2),ey(e.title||e.path),hD(2),ey(`GET /api/v1/docs/search`)}}function Ye(n,t){n&1&&(da(0,`li`,16),qS(1),aC(2,`t`),vd()),n&2&&(hD(),ey(lC(2,1,`knowledge.entityDocsEmpty`)))}function Ze(n,t){n&1&&(da(0,`ul`,46),mS(1,Xe,5,2,`li`,null,ve,!1,Ye,3,3,`li`,16),vd()),n&2&&(hD(),yS(t))}function et(n,t){n&1&&(da(0,`p`,16),qS(1),aC(2,`t`),vd()),n&2&&(hD(),ey(lC(2,1,`knowledge.entityDocsUnverified`)))}function tt(n,t){if(n&1){let e=DS();da(0,`section`,28)(1,`header`,27)(2,`h2`),Sa(3,`ui-icon`,34),qS(4),dS(5,Ve,1,0,`ui-state-badge`,37),vd(),da(6,`span`,38),dS(7,Ge,5,10,`a`,39),da(8,`button`,40),aC(9,`t`),Ma(`click`,function(){Hh(e);let r=SS(2);return Vh(r.selected.set(null))}),Sa(10,`ui-icon`,41),vd()()(),da(11,`dl`,42)(12,`div`)(13,`dt`),qS(14),aC(15,`t`),vd(),da(16,`dd`)(17,`code`),qS(18),vd()()(),da(19,`div`)(20,`dt`),qS(21),aC(22,`t`),vd(),da(23,`dd`)(24,`code`),qS(25),vd()()(),da(26,`div`)(27,`dt`),qS(28),aC(29,`t`),vd(),da(30,`dd`,43),mS(31,$e,2,1,`code`,null,gS),vd()()(),da(33,`h3`,44),qS(34),aC(35,`t`),vd(),da(36,`ul`,45),mS(37,Le,9,4,`li`,null,T,!1,qe,3,3,`li`,16),vd(),dS(40,He,6,3),dS(41,Qe,6,3),dS(42,Je,6,3),da(43,`h3`,44),qS(44),aC(45,`t`),vd(),dS(46,Ze,4,1,`ul`,46)(47,et,3,3,`p`,16),vd()}if(n&2){let e,i,r=t,s=SS(2);hD(3),qm(`name`,s.kindIcon(r.kind))(`size`,15),hD(),bd(``,r.label,` `),hD(),hS(r.unverified?5:-1),hD(2),hS((e=s.openLink(r))?7:-1,e),hD(),Ar(`aria-label`,lC(9,19,`state.close`)),hD(2),qm(`size`,14),hD(4),ey(lC(15,21,`table.id`)),hD(4),ey(r.id),hD(3),ey(lC(22,23,`graph.fed.kind`)),hD(4),ey(r.kind),hD(3),ey(lC(29,25,`skills.evidence`)),hD(3),yS(r.evidence),hD(3),ey(lC(35,27,`knowledge.related`)),hD(3),yS(s.impact().edges),hD(3),hS(s.sameDomain().length?40:-1),hD(),hS(s.declaringAgents().length?41:-1),hD(),hS(s.domainAgents().length?42:-1),hD(2),ey(lC(45,29,`knowledge.entityDocs`)),hD(2),hS((i=s.entityDocs())?46:47,i)}}function nt(n,t){if(n&1&&(da(0,`ul`,23),aC(1,`t`),mS(2,Ke,5,7,`li`,null,T),da(4,`li`,24)(5,`code`),qS(6),vd(),Sa(7,`ui-state-badge`,25),aC(8,`t`),vd()(),da(9,`section`,26)(10,`header`,27)(11,`h2`),Sa(12,`ui-icon`,13),qS(13),aC(14,`t`),vd()(),dS(15,Ae,11,10)(16,ze,2,3,`ui-empty`,15),vd(),dS(17,tt,48,31,`section`,28)),n&2){let e,i=SS();Ar(`aria-label`,lC(1,9,`graph.fed.sources`)),hD(2),yS(i.sourceRows()),hD(2),Ar(`data-state`,i.envState()),hD(2),ey(`GET /api/v1/bootstrap → account_environment`),hD(),qm(`state`,i.sourceBadge(i.envState()))(`labelOverride`,lC(8,11,`graph.source.`+i.envState())),hD(5),qm(`size`,15),hD(),ey(lC(14,13,`knowledge.entities`)),hD(2),hS(t.nodes.length?15:16),hD(2),hS((e=i.selected())?17:-1,e)}}function it(n,t){if(n&1){let e=DS();da(0,`ui-error`,53),Ma(`retry`,function(){Hh(e);let r=SS();return Vh(r.searchDocs())}),vd()}n&2&&qm(`error`,t)}function at(n,t){n&1&&(Sa(0,`ui-empty`,15),aC(1,`t`)),n&2&&qm(`title`,lC(1,1,`knowledge.docsUnavailable`))}function ot(n,t){if(n&1&&(da(0,`a`,56),qS(1),aC(2,`t`),Sa(3,`ui-icon`,57),vd()),n&2){let e=SS().$implicit;qm(`href`,e.url,Fg),hD(),bd(` `,lC(2,3,`knowledge.open`),` `),hD(2),qm(`size`,13)}}function rt(n,t){if(n&1&&(da(0,`article`,54)(1,`h3`),qS(2),vd(),da(3,`p`,16),qS(4),vd(),da(5,`footer`)(6,`code`),qS(7),vd(),da(8,`span`,55),qS(9),vd(),dS(10,ot,4,5,`a`,56),vd()()),n&2){let e=t.$implicit;hD(2),ey(e.title),hD(2),ey(e.excerpt),hD(3),ey(e.path),hD(2),ey(e.category),hD(),hS(e.url?10:-1)}}function lt(n,t){n&1&&(Sa(0,`ui-empty`,15),aC(1,`t`)),n&2&&qm(`title`,lC(1,1,`knowledge.empty`))}function dt(n,t){if(n&1&&(da(0,`p`,16),qS(1),aC(2,`t`),vd(),mS(3,rt,11,5,`article`,54,ve,!1,lt,2,3,`ui-empty`,15)),n&2){let e=SS();hD(),ey(uC(2,2,`knowledge.results`,rC(5,Ne,e.hits().length))),hD(2),yS(e.hits())}}function st(n,t){n&1&&(da(0,`p`,16),qS(1),aC(2,`t`),vd()),n&2&&(hD(),ey(lC(2,1,`knowledge.docsHint`)))}function ct(n,t){n&1&&(da(0,`p`,19),Sa(1,`ui-icon`,58),qS(2),aC(3,`t`),vd()),n&2&&(hD(),qm(`size`,13),hD(),bd(` `,lC(3,2,`recommend.partial`),` `))}function pt(n,t){if(n&1&&(da(0,`li`)(1,`code`),qS(2),vd()()),n&2){let e=t.$implicit;hD(2),ty(``,e.kind,`:`,e.id)}}function mt(n,t){if(n&1&&(da(0,`code`,63),qS(1),vd()),n&2){let e=t.$implicit;hD(),ty(``,e.endpoint,` → `,e.field)}}function gt(n,t){if(n&1&&(da(0,`li`,59)(1,`header`)(2,`span`,60),qS(3),aC(4,`t`),vd(),Sa(5,`ui-state-badge`,25),aC(6,`t`),vd(),da(7,`p`,61),qS(8),aC(9,`t`),vd(),da(10,`ul`,62),mS(11,pt,3,2,`li`,null,De),vd(),da(13,`footer`),mS(14,mt,2,2,`code`,63,Oe),da(16,`a`,64),qS(17),aC(18,`t`),vd()()()),n&2){let e=t.$implicit,i=SS(2);Ar(`data-kind`,e.kind)(`data-severity`,e.severity),hD(3),ey(lC(4,8,i.recKindLabel[e.kind])),hD(2),qm(`state`,e.severity===`warning`?`warn`:`info`)(`labelOverride`,lC(6,10,e.severity===`warning`?`recommend.sev.warning`:`recommend.sev.info`)),hD(3),ey(uC(9,12,e.reasonKey,e.params)),hD(3),yS(e.refs),hD(3),yS(e.source),hD(2),qm(`routerLink`,rC(17,Me,e.route)),hD(),ey(lC(18,15,`recommend.goto`))}}function ut(n,t){if(n&1&&(da(0,`ul`,20),mS(1,gt,19,19,`li`,59,T),vd()),n&2){let e=SS();hD(),yS(e.recommendations())}}function _t(n,t){n&1&&(Sa(0,`ui-empty`,21),aC(1,`t`)),n&2&&qm(`title`,lC(1,1,`recommend.empty`))}var fe=[`federation`,`registry`,`skills`,`agents`,`mcp`,`hosts`,`tasks`,`events`,`graphs`];var ft={forge:`gem`,capability:`shield-check`,skill:`skills`,agent:`agents`,mcp:`mcp`,host:`hosts`,operation:`tasks`,tool:`terminal`};var ye=class n{api=p(g);store=p(g$1);query=k(``);kind=k(null);selected=k(null);fed=k(null);loading=k(!0);hits=k([]);docsSearched=k(!1);docsUnavailable=k(!1);docError=k(null);docBusy=k(!1);entityDocs=k(null);entityDocsFor=``;srcs=fe.map(t=>({id:t,src:new l}));constructor(){this.load()}async load(){this.loading.set(!0),this.selected.set(null),this.entityDocs.set(null),this.entityDocsFor=``,await Promise.allSettled(this.srcs.map(t=>t.src.load(()=>this.read(t.id)))),this.loading.set(!1),this.rebuild()}read(t){switch(t){case`federation`:return this.api.federation();case`registry`:return this.api.registryState();case`skills`:return this.api.skills();case`agents`:return this.api.agents();case`mcp`:return this.api.mcpServers();case`hosts`:return this.api.hosts();case`tasks`:return this.api.tasks();case`events`:return this.api.events();case`graphs`:return this.api.graphs()}}data(t){return this.srcs.find(e=>e.id===t)?.src.data()??null}srcState(t){let e=this.srcs.find(i=>i.id===t).src;return e.data()!==null?`loaded`:e.unavailable()?`unavailable`:`unverified`}registry(){let t=this.data(`registry`);return t?.present===!0?t:null}rebuild(){let t=this.store.descriptor(),e={},i=this.data(`graphs`);e.graphs=this.srcState(`graphs`)!==`loaded`?this.srcState(`graphs`):i&&(i.availability.state===`available`||i.availability.state===`no_graph`)?`loaded`:`unverified`,e.bootstrap=t?`loaded`:`unverified`,e.capabilities=e.bootstrap,e.skills=this.srcState(`skills`),e.agents=this.srcState(`agents`),e.mcp=this.srcState(`mcp`),e.hosts=this.srcState(`hosts`),e.tasks=this.srcState(`tasks`),e.events=this.srcState(`events`),this.fed.set(H({capabilities:this.store.capabilities(),skills:this.data(`skills`),agents:this.data(`agents`),mcp:this.data(`mcp`),hosts:this.data(`hosts`),tasks:this.data(`tasks`),events:this.data(`events`)?.events??null,graphViews:i?.views??null,servingForge:t?.forge_id??null,availability:e}))}nodeById=tn(()=>{let t=new Map;for(let e of this.fed()?.nodes??[])t.set(e.id,e);return t});filtered=tn(()=>{let t=this.fed();if(!t)return[];let e=a(this.query()),i=this.kind();return t.nodes.filter(r=>i!==null&&r.kind!==i?!1:e?a(r.id).includes(e)||a(r.label).includes(e):!0)});impact=tn(()=>{let t=this.selected(),e=this.fed();return!t||!e?{nodes:new Set,edges:[]}:M$1(e,t.id)});sameDomain=tn(()=>{let t=this.selected(),e=this.data(`skills`);if(!t||t.kind!==`skill`||!e)return[];let i=t.id.slice(6),r=e.find(s=>s.id===i||s.name===t.label);return r?.domain?ue(e,r.domain,r.id):[]});declaringAgents=tn(()=>{let t=this.selected(),e=this.data(`agents`);if(!t||t.kind!==`skill`||!e)return[];let i=t.id.slice(6),s=this.data(`skills`)?.find(h=>h.id===i);return me(e,s?[s.id,s.name].filter(Boolean):[i,t.label])});domainAgents=tn(()=>{let t=this.selected(),e=this.data(`agents`),i=this.data(`skills`);if(!t||t.kind!==`skill`||!e||!i)return[];let r=t.id.slice(6),s=i.find(f=>f.id===r);if(!s?.domain)return[];let h=new Set(this.declaringAgents().map(f=>f.id));return ge(e,s.domain).filter(f=>!h.has(f.id))});select(t){this.selected.set(t),this.loadEntityDocs(t)}selectId(t){let e=this.nodeById().get(t);e&&this.select(e)}toggleKind(t){this.kind.set(this.kind()===t?null:t)}kindOptions(t){return G.filter(e=>(t.counts[e]??0)>0)}kindIcon(t){return ft[t]}label(t){return this.nodeById().get(t)?.label??t}openLink(t){return r(t)}endpointFor(t){return T$2[t]}sourceBadge(t){return t===`loaded`?`ok`:t===`unavailable`?`muted`:`warn`}sourceRows(){let t={federation:`GET /api/v1/federation`,registry:`GET /api/v1/registry/state`,skills:`GET /api/v1/skills`,agents:`GET /api/v1/agents`,mcp:`GET /api/v1/mcp/servers`,hosts:`GET /api/v1/hosts`,tasks:`GET /api/v1/tasks`,events:`GET /api/v1/events`,graphs:`GET /api/v1/graphs`};return fe.map(e=>({id:e,endpoint:t[e],state:this.srcState(e)}))}envState(){return this.store.accountEnvironment()?`loaded`:this.store.descriptor()?`unverified`:`unavailable`}onQuery(t){this.query.set(t)}async searchDocs(){let t=this.query().trim();if(t){this.docBusy.set(!0),this.docError.set(null),this.docsUnavailable.set(!1);try{this.hits.set(await hE(this.api.docsSearch(t))),this.docsSearched.set(!0)}catch(e){let i=c(e);i.status===404||i.body.code===`PORTAL-NOT-FOUND`?this.docsUnavailable.set(!0):this.docError.set(i)}finally{this.docBusy.set(!1)}}}async loadEntityDocs(t){this.entityDocs.set(null),this.entityDocsFor=t.id;try{let e=await hE(this.api.docsSearch(t.label,5));this.entityDocsFor===t.id&&this.entityDocs.set(e)}catch{this.entityDocsFor===t.id&&this.entityDocs.set(null)}}recommendations=tn(()=>this.fed()?_e({federation:this.data(`federation`),registry:this.registry(),environment:this.store.accountEnvironment(),skills:this.data(`skills`),agents:this.data(`agents`),mcp:this.data(`mcp`),hosts:this.data(`hosts`),tasks:this.data(`tasks`)}):[]);recPartial=tn(()=>this.fed()?[`federation`,`skills`,`mcp`,`hosts`,`tasks`,`registry`].some(e=>this.srcState(e)!==`loaded`):!1);recKindLabel=pe;static ɵfac=function(e){return new(e||n)};static ɵcmp=ei({type:n,selectors:[[`page-knowledge`]],decls:42,vars:39,consts:[[3,`title`,`subtitle`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[1,`card`],[`for`,`q`,1,`lbl`],[1,`row`],[1,`search-field`,`q-field`],[`name`,`search`,3,`size`],[`id`,`q`,`type`,`search`,1,`input`,3,`ngModelChange`,`keydown.enter`,`placeholder`,`ngModel`],[1,`btn`,`btn--primary`,3,`click`,`disabled`],[`role`,`status`],[`data-section`,`docs`,1,`card`],[1,`sec-title`],[`name`,`knowledge`,3,`size`],[3,`error`],[`icon`,`knowledge`,3,`title`],[1,`muted`],[`data-section`,`recommend`,1,`card`],[`name`,`compass`,3,`size`],[`data-note`,`partial`,1,`muted`,`warn-note`],[`data-list`,`recommendations`,1,`recs`],[`icon`,`compass`,3,`title`],[`kind`,`card`,3,`lines`],[`data-strip`,`sources`,1,`srcs`],[`data-source`,`environment`],[3,`state`,`labelOverride`],[`data-section`,`entities`,1,`card`],[1,`sec-head`],[`data-section`,`inspector`,`aria-live`,`polite`,1,`card`,`detail`,`fg-enter`],[`role`,`group`,1,`chips`],[`type`,`button`,1,`fg-pill`,3,`click`],[`type`,`button`,1,`fg-pill`],[`data-list`,`entities`,1,`nodes`],[`type`,`button`,1,`node`,3,`click`],[3,`name`,`size`],[1,`node__label`],[1,`node__id`],[`state`,`unverified`],[1,`detail__actions`],[1,`btn`,`btn--mini`,3,`routerLink`,`queryParams`,`fragment`],[1,`icon-btn`,3,`click`],[`name`,`chevron-right`,3,`size`],[1,`kv`],[1,`ev`],[1,`sub`,`muted`],[`data-list`,`relations`,1,`edges`],[`data-list`,`entity-docs`,1,`edges`],[`type`,`button`,1,`chip-link`,3,`click`],[1,`edge-ev`],[`data-list`,`same-domain`,1,`edges`],[`data-list`,`declared-by`,1,`edges`],[`data-list`,`domain-agents`,1,`edges`],[1,`doc-title`],[3,`retry`,`error`],[`data-lift`,``,1,`hit`],[1,`cat`],[`target`,`_blank`,`rel`,`noopener`,1,`btn`,3,`href`],[`name`,`external`,3,`size`],[`name`,`alert`,3,`size`],[1,`rec`],[1,`chip`],[1,`rec__reason`],[1,`rec__refs`],[1,`rec__src`],[1,`btn`,3,`routerLink`]],template:function(e,i){if(e&1&&(da(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),da(3,`button`,1),Ma(`click`,function(){return i.load()}),Sa(4,`ui-icon`,2),qS(5),aC(6,`t`),vd()(),da(7,`section`,3)(8,`label`,4),qS(9),aC(10,`t`),vd(),da(11,`div`,5)(12,`div`,6),Sa(13,`ui-icon`,7),da(14,`input`,8),aC(15,`t`),tb(),Ma(`ngModelChange`,function(s){return i.onQuery(s)})(`keydown.enter`,function(){return i.searchDocs()}),vd()(),da(16,`button`,9),Ma(`click`,function(){return i.searchDocs()}),Sa(17,`ui-icon`,7),qS(18),aC(19,`t`),vd()()(),dS(20,Te,3,4,`div`,10),dS(21,nt,18,15),da(22,`section`,11)(23,`h2`,12),Sa(24,`ui-icon`,13),qS(25),aC(26,`t`),vd(),dS(27,it,1,1,`ui-error`,14)(28,at,2,3,`ui-empty`,15)(29,dt,6,7)(30,st,3,3,`p`,16),vd(),da(31,`section`,17)(32,`h2`,12),Sa(33,`ui-icon`,18),qS(34),aC(35,`t`),vd(),da(36,`p`,16),qS(37),aC(38,`t`),vd(),dS(39,ct,4,4,`p`,19),dS(40,ut,3,0,`ul`,20)(41,_t,2,3,`ui-empty`,21),vd()),e&2){let r,s;qm(`title`,lC(1,21,`knowledge.title`))(`subtitle`,lC(2,23,`knowledge.subtitle`)),hD(4),qm(`size`,15),hD(),bd(` `,lC(6,25,`state.refresh`),` `),hD(4),ey(lC(10,27,`knowledge.search`)),hD(4),qm(`size`,15),hD(),qm(`placeholder`,lC(15,29,`knowledge.placeholder`))(`ngModel`,i.query()),rb(),hD(2),qm(`disabled`,i.docBusy()||!i.query().trim()),hD(),qm(`size`,14),hD(),bd(` `,lC(19,31,`knowledge.search`),` `),hD(2),hS(i.loading()?20:-1),hD(),hS((r=i.fed())?21:-1,r),hD(3),qm(`size`,15),hD(),ey(lC(26,33,`knowledge.docs`)),hD(2),hS((s=i.docError())?27:i.docsUnavailable()?28:i.docsSearched()?29:30,s),hD(6),qm(`size`,15),hD(),ey(lC(35,35,`recommend.title`)),hD(3),ey(lC(38,37,`recommend.note`)),hD(2),hS(i.recPartial()?39:-1),hD(),hS(i.recommendations().length?40:41)}},dependencies:[Zt,De$1,Yt,At,vc,T$1,_,D,I,cE,k$1,aE],styles:[`.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.lbl[_ngcontent-%COMP%]{display:block;font-weight:600;margin-bottom:var(--%NS%space-2)}.row[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-2)}.q-field[_ngcontent-%COMP%]{flex:1;max-width:none;margin-bottom:0}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm)}.sec-head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2);flex-wrap:wrap}.sec-title[_ngcontent-%COMP%], .sec-head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-lg);font-weight:650;display:flex;align-items:center;gap:var(--%NS%space-2)}.sec-head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%], .sec-title[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.srcs[_ngcontent-%COMP%]{list-style:none;display:flex;flex-wrap:wrap;gap:var(--%NS%space-2) var(--%NS%space-3);padding:0;margin:0 0 var(--%NS%space-3);font-size:var(--%NS%font-xs)}.srcs[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:inline-flex;gap:var(--%NS%space-2);align-items:center}.chips[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.nodes[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--%NS%space-2)}.node[_ngcontent-%COMP%]{width:100%;display:flex;align-items:center;gap:var(--%NS%space-2);padding:var(--%NS%space-2);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);color:var(--%NS%fg);font:inherit;text-align:left;cursor:pointer;background:transparent}.node[_ngcontent-%COMP%], .hit[_ngcontent-%COMP%], .rec[_ngcontent-%COMP%]{transition:border-color var(--%NS%motion-fast),box-shadow var(--%NS%motion-fast)}.node[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);flex:none}.node[_ngcontent-%COMP%]:hover{border-color:var(--%NS%accent-ink)}.node[data-unverified][_ngcontent-%COMP%]{border-style:dashed;background:color-mix(in srgb,var(--%NS%bg-elevated) 55%,transparent)}.node[data-selected][_ngcontent-%COMP%]{border-color:var(--%NS%accent-ink);box-shadow:0 0 0 1px var(--%NS%accent)}.node__label[_ngcontent-%COMP%], .node__id[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.node__label[_ngcontent-%COMP%], .doc-title[_ngcontent-%COMP%]{font-weight:600}.node__id[_ngcontent-%COMP%]{margin-left:auto;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.detail[_ngcontent-%COMP%]{border-left:3px solid var(--%NS%accent)}.detail__actions[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.kv[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin:var(--%NS%space-2) 0}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{min-width:7rem;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm);flex:none}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0}.ev[_ngcontent-%COMP%], .edges[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--%NS%space-1) var(--%NS%space-2)}.sub[_ngcontent-%COMP%]{margin:var(--%NS%space-3) 0 var(--%NS%space-1);font-weight:650}.edges[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:var(--%NS%space-1);font-size:var(--%NS%font-sm)}.edge-ev[_ngcontent-%COMP%], .rec__src[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.hit[_ngcontent-%COMP%]{border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);padding:var(--%NS%space-3);margin-bottom:var(--%NS%space-2)}.hit[_ngcontent-%COMP%]:hover, .rec[_ngcontent-%COMP%]:hover{border-color:var(--%NS%border-strong)}.hit[_ngcontent-%COMP%]:hover{box-shadow:var(--%NS%elev-hover)}.hit[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 6px;font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em}.hit[_ngcontent-%COMP%] footer[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin-top:var(--%NS%space-3);font-size:var(--%NS%font-xs)}.hit[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hit[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%], .rec[_ngcontent-%COMP%] footer[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{margin-left:auto}.cat[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);font-weight:600;flex-shrink:0;background:var(--%NS%accent-bg);border:1px solid color-mix(in srgb,var(--%NS%accent) 30%,transparent);border-radius:var(--%NS%radius-pill);padding:1px var(--%NS%space-2)}.warn-note[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-1);color:var(--%NS%warn, var(--%NS%fg-muted))}.recs[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:var(--%NS%space-2)}.rec[_ngcontent-%COMP%]{border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);padding:var(--%NS%space-3)}.rec[data-severity=warning][_ngcontent-%COMP%]{border-left:3px solid var(--%NS%warn, var(--%NS%accent))}.rec[data-severity=info][_ngcontent-%COMP%]{border-left:3px solid var(--%NS%info, var(--%NS%accent))}.rec[_ngcontent-%COMP%] header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}.rec__reason[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0;font-size:var(--%NS%font-sm)}.rec__refs[_ngcontent-%COMP%]{list-style:none;display:flex;flex-wrap:wrap;gap:var(--%NS%space-1) var(--%NS%space-2);padding:0;margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-xs)}.rec[_ngcontent-%COMP%] footer[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--%NS%space-1) var(--%NS%space-2)}`]})};export{ye as KnowledgePage}; \ No newline at end of file diff --git a/portal/assets/chunk-CXfCkbMK.js b/portal/assets/chunk-CXfCkbMK.js deleted file mode 100644 index 524d71b..0000000 --- a/portal/assets/chunk-CXfCkbMK.js +++ /dev/null @@ -1 +0,0 @@ -import{i as l,r as k}from"./chunk-DjkjLihA.js";import{$ as da,At as rn,B as ZS,Dt as pS,Et as p,F as Wm,Gt as wS,Lt as tn,M as Ta,Mt as sC,N as Uh,Ot as rC,P as WS,Pt as tC,Q as cE,S as Oo,Tt as oC,U as _a,V as _S,Wt as ve,X as bS,Xt as yd,Yt as yc,Z as ba,_t as kU,at as ey,ct as gS,dt as hE,ft as hS,gt as k$1,h as Jm,ht as jh,it as ei,jt as ry,kt as rE,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,wt as ny,xt as nC,yt as mS,z as Ym,zt as uS}from"./chunk-BelLryvf.js";import{i as n,r as g,t as g$1}from"./main-A2NKRJGT.js";import{a as l$1}from"./chunk-0WpwvubF.js";import{t as _}from"./chunk-BKRLVsID.js";import{t as D}from"./chunk-CiuPOfJ0.js";import{n as k$2,t as I}from"./chunk-D2KAfPv6.js";import{t as T}from"./chunk-BBusSOqc.js";import{n as G$1,r as H,t as E}from"./chunk-DJd3bKJi.js";import{o as m,r as F,t as e}from"./chunk-B5UUjcvD.js";import{t as h}from"./chunk-D34eMkm4.js";var L=`__undeclared__`;var Se=t=>t.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().trim();function M(t,n=new Set){return E(t,n)}function ke(t,n,e=new Set){let d=Se(n.query);return t.filter(r=>{if(n.domain!==null&&!r.domains.includes(n.domain)||n.skill!==null&&!r.skills.includes(n.skill)||n.host!==null&&!r.hosts.includes(n.host))return!1;if(n.forge!==null){let T=M(r,e);if(n.forge===L?T!==null:T!==n.forge)return!1}return d?[r.id,r.name,r.role,r.description,r.authority??``,...r.domains,...r.skills,...r.hosts].map(Se).join(` `).includes(d):!0})}function z(t,n){let e=new Set;for(let d of t)for(let r of n(d))e.add(r);return[...e].sort((d,r)=>d.localeCompare(r))}var Ee=t=>z(t,n=>n.domains);var Pe=t=>z(t,n=>n.skills);var we=t=>z(t,n=>n.hosts);function Ie(t,n=new Set){let e=new Set,d=!1;for(let r of t){let m=M(r,n);m?e.add(m):d=!0}return{declared:[...e].sort((r,m)=>r.localeCompare(m)),hasUndeclared:d}}var A=t=>({text:t&&t.trim()?t:null,absent:!(t&&t.trim())});var B=t=>({text:t.length?t.join(`, `):null,absent:t.length===0});function Ne(t,n,e=new Set){return[{key:`table.id`,va:A(t.id),vb:A(n.id)},{key:`agents.role`,va:A(t.role),vb:A(n.role)},{key:`agents.responsibility`,va:A(t.description),vb:A(n.description)},{key:`agents.authority`,va:A(t.authority),vb:A(n.authority)},{key:`agents.origin`,va:A(M(t,e)),vb:A(M(n,e))},{key:`agents.domains`,va:B(t.domains),vb:B(n.domains)},{key:`agents.skills`,va:B(t.skills),vb:B(n.skills)},{key:`agents.compatibleHosts`,va:B(t.hosts),vb:B(n.hosts)},{key:`skills.state`,va:A(t.state),vb:A(n.state)}].map(({key:r,va:m,vb:T})=>({key:r,a:m,b:T,differ:!m.absent&&!T.absent&&m.text!==T.text}))}function Ae(t,n){let e=P=>P.startsWith(`agent:`)&&n.has(P.slice(6)),d=new Set,r=t.edges.filter(P=>!e(P.source)&&!e(P.target)?!1:(d.add(P.source),d.add(P.target),!0)),m=t.nodes.filter(P=>P.kind===`agent`?n.has(P.id.slice(6)):d.has(P.id)),T=Object.fromEntries(G$1.map(P=>[P,0]));for(let P of m)T[P.kind]+=1;return l(k({},t),{nodes:m,edges:r,counts:T})}var Be=[`canvasEl`];var Oe=(t,n)=>[t,n];var Fe=()=>[`/skills`];var De=t=>({q:t});var Me=()=>[`/hosts`];var G=(t,n)=>n.id;var Ve=(t,n)=>n.key;function Re(t,n){if(t&1){let e=wS();da(0,`button`,9),Ta(`click`,function(){let r=jh(e).$implicit,m=bS();return Uh(m.setMode(r))}),WS(1),oC(2,`t`),yd()}if(t&2){let e=n.$implicit,d=bS();Ar(`data-view`,e)(`data-tone`,d.mode()===e?`accent`:null)(`aria-pressed`,d.mode()===e),hD(),Dd(` `,sC(2,4,`agents.view.`+e),` `)}}function $e(t,n){if(t&1){let e=wS();da(0,`ui-error`,10),Ta(`retry`,function(){jh(e);let r=bS();return Uh(r.load())}),yd()}t&2&&Wm(`error`,n)}function qe(t,n){t&1&&(da(0,`section`,7),oC(1,`t`),ba(2,`ui-skeleton`,11),yd()),t&2&&(Ar(`aria-label`,sC(1,2,`state.loading`)),hD(2),Wm(`lines`,3))}function Le(t,n){if(t&1){let e=wS();da(0,`button`,9),Ta(`click`,function(){let r=jh(e).$implicit,m=bS(2);return Uh(m.toggleDomain(r))}),WS(1),yd()}if(t&2){let e=n.$implicit,d=bS(2);Ar(`data-tone`,d.domain()===e?`accent`:null)(`aria-pressed`,d.domain()===e),hD(),Dd(` `,e,` `)}}function ze(t,n){if(t&1&&(da(0,`option`,24),WS(1),yd()),t&2){let e=n.$implicit,d=bS(3);Wm(`value`,e)(`selected`,d.skill()===e),hD(),Jm(e)}}function Ge(t,n){if(t&1){let e=wS();da(0,`select`,22),oC(1,`t`),Ta(`change`,function(r){jh(e);let m=bS(2);return Uh(m.onSkill(r))}),da(2,`option`,23),WS(3),oC(4,`t`),oC(5,`t`),yd(),gS(6,ze,2,3,`option`,24,pS),yd()}if(t&2){let e=bS(2);Wm(`value`,e.skill()??``),Ar(`aria-label`,sC(1,4,`agents.skills`)),hD(3),ey(``,sC(4,6,`agents.skills`),`: `,sC(5,8,`state.all`)),hD(3),mS(e.skillOpts())}}function He(t,n){if(t&1&&(da(0,`option`,24),WS(1),yd()),t&2){let e=n.$implicit,d=bS(3);Wm(`value`,e)(`selected`,d.host()===e),hD(),Jm(e)}}function je(t,n){if(t&1){let e=wS();da(0,`select`,25),oC(1,`t`),Ta(`change`,function(r){jh(e);let m=bS(2);return Uh(m.onHost(r))}),da(2,`option`,23),WS(3),oC(4,`t`),oC(5,`t`),yd(),gS(6,He,2,3,`option`,24,pS),yd()}if(t&2){let e=bS(2);Wm(`value`,e.host()??``),Ar(`aria-label`,sC(1,4,`agents.compatibleHosts`)),hD(3),ey(``,sC(4,6,`agents.compatibleHosts`),`: `,sC(5,8,`state.all`)),hD(3),mS(e.hostOpts())}}function Ke(t,n){if(t&1&&(da(0,`option`,24),WS(1),yd()),t&2){let e=n.$implicit,d=bS(3);Wm(`value`,e)(`selected`,d.forge()===e),hD(),Jm(e)}}function Ue(t,n){if(t&1&&(da(0,`option`,24),WS(1),oC(2,`t`),yd()),t&2){let e=bS(3);Wm(`value`,e.undeclared)(`selected`,e.forge()===e.undeclared),hD(),Dd(` `,sC(2,3,`agents.undeclared`),` `)}}function We(t,n){if(t&1){let e=wS();da(0,`select`,26),oC(1,`t`),Ta(`change`,function(r){jh(e);let m=bS(2);return Uh(m.onForge(r))}),da(2,`option`,23),WS(3),oC(4,`t`),oC(5,`t`),yd(),gS(6,Ke,2,3,`option`,24,pS),uS(8,Ue,3,5,`option`,24),yd()}if(t&2){let e=bS(2);Wm(`value`,e.forge()??``),Ar(`aria-label`,sC(1,5,`agents.declaredForge`)),hD(3),ey(``,sC(4,7,`agents.declaredForge`),`: `,sC(5,9,`state.all`)),hD(3),mS(e.forgeOpts().declared),hD(2),fS(e.forgeOpts().hasUndeclared?8:-1)}}function Qe(t,n){if(t&1){let e=wS();da(0,`span`,28),WS(1),da(2,`button`,31),oC(3,`t`),Ta(`click`,function(){let r=jh(e).$implicit,m=bS(3);return Uh(m.toggleCompare(r))}),WS(4,` × `),yd()()}if(t&2){let e=n.$implicit,d=bS(3);hD(),Dd(` `,d.labelFor(e),` `),hD(),Ar(`aria-label`,sC(3,2,`agents.compare.remove`))}}function Ye(t,n){t&1&&(da(0,`span`,29),WS(1),oC(2,`t`),yd()),t&2&&(hD(),Jm(sC(2,1,`agents.compare.pick`)))}function Je(t,n){if(t&1){let e=wS();da(0,`section`,16)(1,`span`,27),WS(2),oC(3,`t`),yd(),gS(4,Qe,5,4,`span`,28,pS),uS(6,Ye,3,3,`span`,29),da(7,`button`,30),Ta(`click`,function(){jh(e);let r=bS(2);return Uh(r.compareIds.set([]))}),WS(8),oC(9,`t`),yd()()}if(t&2){let e=bS(2);hD(2),Jm(sC(3,3,`agents.compare.title`)),hD(2),mS(e.compareIds()),hD(2),fS(e.compareIds().length<2?6:-1),hD(2),Dd(` `,sC(9,5,`agents.compare.clear`),` `)}}function Xe(t,n){if(t&1&&(da(0,`th`,38)(1,`code`),WS(2),yd()()),t&2){let e=n.$implicit;hD(2),Jm(e.id)}}function Ze(t,n){t&1&&(da(0,`span`,40),WS(1),oC(2,`t`),yd()),t&2&&(hD(),Jm(sC(2,1,`agents.compare.notDeclared`)))}function et(t,n){if(t&1&&WS(0),t&2){let e=bS().$implicit;Dd(` `,e.text,` `)}}function tt(t,n){if(t&1&&(da(0,`td`),uS(1,Ze,3,3,`span`,40)(2,et,1,1),yd()),t&2){let e=n.$implicit;hD(),fS(e.absent?1:2)}}function nt(t,n){if(t&1&&(da(0,`tr`)(1,`th`,39),WS(2),oC(3,`t`),yd(),gS(4,tt,3,1,`td`,null,hS),yd()),t&2){let e=n.$implicit;Ar(`data-differ`,e.differ||null),hD(2),Jm(sC(3,2,e.key)),hD(2),mS(rC(4,Oe,e.a,e.b))}}function it(t,n){if(t&1){let e=wS();da(0,`section`,17)(1,`header`,32)(2,`h2`),ba(3,`ui-icon`,33),WS(4),oC(5,`t`),yd(),da(6,`button`,34),oC(7,`t`),Ta(`click`,function(){jh(e);let r=bS(2);return Uh(r.compareIds.set([]))}),ba(8,`ui-icon`,35),yd()(),da(9,`div`,36)(10,`table`,37)(11,`thead`)(12,`tr`)(13,`th`,38),WS(14),oC(15,`t`),yd(),gS(16,Xe,3,1,`th`,38,G),yd()(),da(18,`tbody`),gS(19,nt,6,7,`tr`,null,Ve),yd()()()()}if(t&2){let e=bS(2);hD(3),Wm(`size`,15),hD(),Jm(sC(5,5,`agents.compare.title`)),hD(2),Ar(`aria-label`,sC(7,7,`state.close`)),hD(2),Wm(`size`,14),hD(6),Jm(sC(15,9,`agents.compare.field`)),hD(2),mS(e.comparePair()),hD(3),mS(n)}}function at(t,n){if(t&1&&(da(0,`a`,50),WS(1),yd()),t&2){let e=n.$implicit;Wm(`routerLink`,tC(3,Fe))(`queryParams`,nC(4,De,e)),hD(),Jm(e)}}function ot(t,n){if(t&1&&(da(0,`span`,46),gS(1,at,2,6,`a`,50,pS),yd()),t&2){let e=bS();hD(),mS(e.skills)}}function rt(t,n){t&1&&(WS(0),oC(1,`t`)),t&2&&Dd(` `,sC(1,1,`state.none`),` `)}function lt(t,n){if(t&1&&(WS(0),da(1,`code`),WS(2),yd(),da(3,`span`,51),WS(4),oC(5,`t`),yd()),t&2){let e=n;Dd(` `,e.forge_name,` `),hD(2),Dd(`(`,e.forge_id,`)`),hD(2),Jm(sC(5,3,`explorer.serving`))}}function dt(t,n){t&1&&ba(0,`ui-state-badge`,47)}function st(t,n){t&1&&(da(0,`code`),WS(1),yd()),t&2&&(hD(),Jm(n))}function ct(t,n){t&1&&(da(0,`span`,40),WS(1),oC(2,`t`),yd()),t&2&&(hD(),Jm(sC(2,1,`agents.compare.notDeclared`)))}function pt(t,n){if(t&1&&(da(0,`a`,52),WS(1),yd()),t&2){let e=n.$implicit;Wm(`routerLink`,tC(3,Me))(`fragment`,`host-`+e),hD(),Jm(e)}}function _t(t,n){if(t&1&&(da(0,`span`,46),gS(1,pt,2,4,`a`,52,pS),yd()),t&2){let e=bS();hD(),mS(e.hosts)}}function mt(t,n){t&1&&ba(0,`ui-state-badge`,47)}function gt(t,n){if(t&1){let e=wS();da(0,`section`,18)(1,`header`,41)(2,`h2`),ba(3,`ui-icon`,42),WS(4),yd(),da(5,`div`,43)(6,`button`,44),Ta(`click`,function(){let r=jh(e),m=bS(2);return Uh(m.toggleCompare(r.id))}),WS(7),oC(8,`t`),yd(),da(9,`button`,34),oC(10,`t`),Ta(`click`,function(){jh(e);let r=bS(2);return Uh(r.selected.set(null))}),ba(11,`ui-icon`,35),yd()()(),da(12,`dl`,45)(13,`div`)(14,`dt`),WS(15),oC(16,`t`),yd(),da(17,`dd`)(18,`code`),WS(19),yd()()(),da(20,`div`)(21,`dt`),WS(22),oC(23,`t`),yd(),da(24,`dd`),WS(25),oC(26,`t`),yd()(),da(27,`div`)(28,`dt`),WS(29),oC(30,`t`),yd(),da(31,`dd`),WS(32),oC(33,`t`),yd()(),da(34,`div`)(35,`dt`),WS(36),oC(37,`t`),yd(),da(38,`dd`),WS(39),oC(40,`t`),yd()(),da(41,`div`)(42,`dt`),WS(43),oC(44,`t`),yd(),da(45,`dd`),WS(46),oC(47,`t`),yd()(),da(48,`div`)(49,`dt`),WS(50),oC(51,`t`),yd(),da(52,`dd`),uS(53,ot,3,0,`span`,46)(54,rt,2,3),yd()(),da(55,`div`)(56,`dt`),WS(57),oC(58,`t`),yd(),da(59,`dd`),uS(60,lt,6,5)(61,dt,1,0,`ui-state-badge`,47),yd()(),da(62,`div`)(63,`dt`),WS(64),oC(65,`t`),yd(),da(66,`dd`),uS(67,st,2,1,`code`)(68,ct,3,3,`span`,40),yd()(),da(69,`div`)(70,`dt`),WS(71),oC(72,`t`),yd(),da(73,`dd`),uS(74,_t,3,0,`span`,46)(75,mt,1,0,`ui-state-badge`,47),yd()(),da(76,`div`)(77,`dt`),WS(78),oC(79,`t`),yd(),da(80,`dd`),ba(81,`ui-state-badge`,48),yd()(),da(82,`div`)(83,`dt`),WS(84),oC(85,`t`),yd(),da(86,`dd`,49),ba(87,`ui-state-badge`,47),da(88,`small`,29),WS(89),oC(90,`t`),yd()()(),da(91,`div`)(92,`dt`),WS(93),oC(94,`t`),yd(),da(95,`dd`,49),ba(96,`ui-state-badge`,47),da(97,`small`,29),WS(98),oC(99,`t`),yd()()(),da(100,`div`)(101,`dt`),WS(102),oC(103,`t`),yd(),da(104,`dd`,49),ba(105,`ui-state-badge`,47),da(106,`small`,29),WS(107),oC(108,`t`),yd()()(),da(109,`div`)(110,`dt`),WS(111),oC(112,`t`),yd(),da(113,`dd`,49),ba(114,`ui-state-badge`,47),da(115,`small`,29),WS(116),oC(117,`t`),yd()()(),da(118,`div`)(119,`dt`),WS(120),oC(121,`t`),yd(),da(122,`dd`)(123,`code`),WS(124,`GET /api/v1/agents`),yd()()()()()}if(t&2){let e,d,r=n,m=bS(2);hD(3),Wm(`size`,15),hD(),Jm(r.name||r.id),hD(2),Ar(`data-tone`,m.compareIds().includes(r.id)?`accent`:null)(`aria-pressed`,m.compareIds().includes(r.id)),hD(),Dd(` `,sC(8,37,`agents.compare.add`),` `),hD(2),Ar(`aria-label`,sC(10,39,`state.close`)),hD(2),Wm(`size`,14),hD(4),Jm(sC(16,41,`table.id`)),hD(4),Jm(r.id),hD(3),Jm(sC(23,43,`agents.role`)),hD(3),Jm(r.role||sC(26,45,`state.absent`)),hD(4),Jm(sC(30,47,`agents.responsibility`)),hD(3),Jm(r.description||sC(33,49,`state.absent`)),hD(4),Jm(sC(37,51,`agents.authority`)),hD(3),Jm(r.authority??sC(40,53,`state.absent`)),hD(4),Jm(sC(44,55,`agents.domains`)),hD(3),Jm(r.domains.length?r.domains.join(`, `):sC(47,57,`state.none`)),hD(4),Jm(sC(51,59,`agents.skills`)),hD(3),fS(r.skills.length?53:54),hD(4),Jm(sC(58,61,`agents.origin`)),hD(3),fS((e=m.store.descriptor())?60:61,e),hD(4),Jm(sC(65,63,`agents.declaredForge`)),hD(3),fS((d=m.declaredForge(r,m.knownForges()))?67:68,d),hD(4),Jm(sC(72,65,`agents.compatibleHosts`)),hD(3),fS(r.hosts.length?74:75),hD(4),Jm(sC(79,67,`skills.state`)),hD(3),Wm(`state`,r.state===`available`?`supported`:`unverified`)(`labelOverride`,r.state),hD(3),Jm(sC(85,69,`agents.tools`)),hD(5),Jm(sC(90,71,`agents.notExposed`)),hD(4),Jm(sC(94,73,`agents.permissions`)),hD(5),Jm(sC(99,75,`agents.notExposed`)),hD(4),Jm(sC(103,77,`agents.deps`)),hD(5),Jm(sC(108,79,`agents.notExposed`)),hD(4),Jm(sC(112,81,`settings.version`)),hD(5),Jm(sC(117,83,`agents.notExposed`)),hD(4),Jm(sC(121,85,`agents.evidence`))}}function ut(t,n){if(t&1&&(da(0,`p`,56)(1,`span`),WS(2),oC(3,`t`),yd(),WS(4),yd()),t&2){let e=bS().$implicit;hD(2),Dd(``,sC(3,2,`agents.domains`),`:`),hD(2),Dd(` `,e.domains.join(`, `),` `)}}function yt(t,n){if(t&1&&(da(0,`p`,56)(1,`span`),WS(2),oC(3,`t`),yd(),WS(4),yd()),t&2){let e=bS().$implicit;hD(2),Dd(``,sC(3,2,`agents.skills`),`:`),hD(2),Dd(` `,e.skills.join(`, `),` `)}}function xt(t,n){if(t&1){let e=wS();da(0,`article`,53)(1,`header`,54)(2,`h2`),ba(3,`ui-icon`,42),WS(4),yd(),ba(5,`ui-state-badge`,48),yd(),da(6,`p`,55),WS(7),yd(),da(8,`p`,29),WS(9),yd(),uS(10,ut,5,4,`p`,56),uS(11,yt,5,4,`p`,56),da(12,`div`,57)(13,`button`,44),Ta(`click`,function(){let r=jh(e).$implicit,m=bS(3);return Uh(m.toggleCompare(r.id))}),WS(14),oC(15,`t`),yd(),da(16,`button`,58),Ta(`click`,function(){let r=jh(e).$implicit,m=bS(3);return Uh(m.selected.set(r))}),WS(17),oC(18,`t`),ba(19,`ui-icon`,35),yd()()()}if(t&2){let e=n.$implicit,d=bS(3);hD(3),Wm(`size`,15),hD(),Jm(e.name||e.id),hD(),Wm(`state`,e.state===`available`?`supported`:`unverified`)(`labelOverride`,e.state),hD(2),Jm(e.role),hD(2),Jm(e.description),hD(),fS(e.domains.length?10:-1),hD(),fS(e.skills.length?11:-1),hD(2),Ar(`data-tone`,d.compareIds().includes(e.id)?`accent`:null)(`aria-pressed`,d.compareIds().includes(e.id)),hD(),Dd(` `,sC(15,13,`agents.compare.add`),` `),hD(3),Dd(` `,sC(18,15,`agents.detail`),` `),hD(2),Wm(`size`,13)}}function ft(t,n){t&1&&(ba(0,`ui-empty`,8),oC(1,`t`)),t&2&&Wm(`title`,sC(1,1,`agents.empty`))}function vt(t,n){if(t&1&&uS(0,ft,2,3,`ui-empty`,8),t&2){let e=bS(3);fS(e.loading()?-1:0)}}function Ct(t,n){if(t&1&&(da(0,`section`,19),gS(1,xt,20,17,`article`,53,G,!1,vt,1,1),yd()),t&2){let e=bS(2);hD(),mS(e.filtered())}}function ht(t,n){if(t&1&&(da(0,`a`,63),WS(1),yd(),WS(2)),t&2){let e=n.$implicit,d=n.$index,r=n.$count;Wm(`routerLink`,tC(4,Me))(`fragment`,`host-`+e),hD(),Jm(e),hD(),Dd(``,d===r-1?``:`, `,` `)}}function bt(t,n){if(t&1&&gS(0,ht,3,5,null,null,pS),t&2){let e=bS().$implicit;mS(e.hosts)}}function St(t,n){t&1&&(da(0,`span`,40),WS(1),oC(2,`t`),yd()),t&2&&(hD(),Jm(sC(2,1,`agents.compare.notDeclared`)))}function kt(t,n){if(t&1){let e=wS();da(0,`tr`)(1,`td`)(2,`strong`),WS(3),yd(),ba(4,`br`),da(5,`code`,61),WS(6),yd()(),da(7,`td`),WS(8),yd(),da(9,`td`),WS(10),yd(),da(11,`td`),WS(12),yd(),da(13,`td`),uS(14,bt,2,0)(15,St,3,3,`span`,40),yd(),da(16,`td`),ba(17,`ui-state-badge`,48),yd(),da(18,`td`,62)(19,`button`,44),Ta(`click`,function(){let r=jh(e).$implicit,m=bS(3);return Uh(m.toggleCompare(r.id))}),WS(20),oC(21,`t`),yd(),da(22,`button`,58),Ta(`click`,function(){let r=jh(e).$implicit,m=bS(3);return Uh(m.selected.set(r))}),WS(23),oC(24,`t`),yd()()()}if(t&2){let e=n.$implicit,d=bS(3);hD(3),Jm(e.name||e.id),hD(3),Jm(e.id),hD(2),Jm(e.role||`—`),hD(2),Jm(e.domains.length?e.domains.join(`, `):`—`),hD(2),Jm(e.skills.length?e.skills.join(`, `):`—`),hD(2),fS(e.hosts.length?14:15),hD(3),Wm(`state`,e.state===`available`?`supported`:`unverified`)(`labelOverride`,e.state),hD(2),Ar(`data-tone`,d.compareIds().includes(e.id)?`accent`:null)(`aria-pressed`,d.compareIds().includes(e.id)),hD(),Dd(` `,sC(21,12,`agents.compare.add`),` `),hD(3),Dd(` `,sC(24,14,`agents.detail`),` `)}}function Et(t,n){t&1&&(da(0,`tr`)(1,`td`,64),WS(2),oC(3,`t`),yd()()),t&2&&(hD(2),Jm(sC(3,1,`agents.empty`)))}function Pt(t,n){if(t&1&&(da(0,`section`,20)(1,`div`,36)(2,`table`,59)(3,`thead`)(4,`tr`)(5,`th`,38),WS(6),oC(7,`t`),yd(),da(8,`th`,38),WS(9),oC(10,`t`),yd(),da(11,`th`,38),WS(12),oC(13,`t`),yd(),da(14,`th`,38),WS(15),oC(16,`t`),yd(),da(17,`th`,38),WS(18),oC(19,`t`),yd(),da(20,`th`,38),WS(21),oC(22,`t`),yd(),da(23,`th`,38)(24,`span`,60),WS(25),oC(26,`t`),yd()()()(),da(27,`tbody`),gS(28,kt,25,16,`tr`,null,G,!1,Et,4,3,`tr`),yd()()()()),t&2){let e=bS(2);hD(6),Jm(sC(7,8,`table.name`)),hD(3),Jm(sC(10,10,`agents.role`)),hD(3),Jm(sC(13,12,`agents.domains`)),hD(3),Jm(sC(16,14,`agents.skills`)),hD(3),Jm(sC(19,16,`agents.compatibleHosts`)),hD(3),Jm(sC(22,18,`skills.state`)),hD(4),Jm(sC(26,20,`table.actions`)),hD(3),mS(e.filtered())}}function wt(t,n){if(t&1){let e=wS();da(0,`button`,9),Ta(`click`,function(){let r=jh(e).$implicit,m=bS(4);return Uh(m.setLayout(r))}),WS(1),yd()}if(t&2){let e=n.$implicit,d=bS(4);Ar(`data-layout`,e)(`data-tone`,d.layoutName()===e?`accent`:null)(`aria-pressed`,d.layoutName()===e),hD(),Dd(` `,e,` `)}}function It(t,n){if(t&1&&(da(0,`li`),ba(1,`span`,75),WS(2),yd()),t&2){let e=n.$implicit,d=bS(4);Ar(`data-kind`,e),hD(),_a(`background`,d.kindColor(e)),Ar(`data-shape`,d.kindShape(e)),hD(),Dd(` `,e,` `)}}function Nt(t,n){if(t&1){let e=wS();da(0,`div`,67),oC(1,`t`),da(2,`span`,29),WS(3),oC(4,`t`),yd(),gS(5,wt,2,4,`button`,3,pS),ba(7,`span`,68),da(8,`button`,69),Ta(`click`,function(){jh(e);let r=bS(3);return Uh(r.resetLayout())}),WS(9),oC(10,`t`),yd(),da(11,`button`,70),Ta(`click`,function(){jh(e);let r=bS(3);return Uh(r.fitCanvas())}),WS(12),oC(13,`t`),yd(),da(14,`button`,71),Ta(`click`,function(){jh(e);let r=bS(3);return Uh(r.exportPng())}),WS(15,` PNG `),yd(),da(16,`button`,72),Ta(`click`,function(){jh(e);let r=bS(3);return Uh(r.exportSvg())}),WS(17,` SVG `),yd()(),ba(18,`div`,73,0),oC(20,`t`),da(21,`ul`,74),oC(22,`t`),gS(23,It,3,5,`li`,null,pS),yd()}if(t&2){let e=bS(3);Ar(`aria-label`,sC(1,6,`graph.canvas.tools`)),hD(3),Jm(sC(4,8,`graph.canvas.layout`)),hD(2),mS(e.layouts),hD(4),Dd(` `,sC(10,10,`graph.canvas.reset`),` `),hD(3),Dd(` `,sC(13,12,`graph.canvas.fit`),` `),hD(6),Ar(`aria-label`,sC(20,14,`agents.graph.aria`)),hD(3),Ar(`aria-label`,sC(22,16,`graph.canvas.legend`)),hD(2),mS(e.graphKinds())}}function At(t,n){t&1&&(ba(0,`ui-empty`,66),oC(1,`t`)),t&2&&Wm(`title`,sC(1,1,`agents.graph.empty`))}function Tt(t,n){if(t&1&&(da(0,`section`,21)(1,`p`,65),WS(2),oC(3,`t`),yd(),uS(4,Nt,25,18)(5,At,2,3,`ui-empty`,66),yd()),t&2){let e=bS(2);hD(2),Jm(sC(3,2,`agents.graph.hint`)),hD(2),fS(e.subgraph().nodes.length?4:5)}}function Mt(t,n){if(t&1){let e=wS();da(0,`ui-filter-bar`,12),ry(`queryChange`,function(r){jh(e);let m=bS();return ZS(m.query,r)||(m.query=r),Uh(r)}),da(1,`button`,9),Ta(`click`,function(){jh(e);let r=bS();return Uh(r.domain.set(null))}),WS(2),oC(3,`t`),yd(),gS(4,Le,2,3,`button`,3,pS),uS(6,Ge,8,10,`select`,13),uS(7,je,8,10,`select`,14),uS(8,We,9,11,`select`,15),yd(),uS(9,Je,10,7,`section`,16),uS(10,it,21,11,`section`,17),uS(11,gt,125,87,`section`,18),uS(12,Ct,4,1,`section`,19),uS(13,Pt,31,22,`section`,20),uS(14,Tt,6,4,`section`,21)}if(t&2){let e,d,r=bS();ny(`query`,r.query),hD(),Ar(`data-tone`,r.domain()===null?`accent`:null)(`aria-pressed`,r.domain()===null),hD(),Dd(` `,sC(3,13,`state.all`),` `),hD(2),mS(r.domainOpts()),hD(2),fS(r.skillOpts().length?6:-1),hD(),fS(r.hostOpts().length?7:-1),hD(),fS(r.forgeOpts().declared.length||r.forgeOpts().hasUndeclared?8:-1),hD(),fS(r.compareIds().length?9:-1),hD(),fS((e=r.compareRows())?10:-1,e),hD(),fS((d=r.selected())?11:-1,d),hD(),fS(r.mode()===`cards`?12:-1),hD(),fS(r.mode()===`table`?13:-1),hD(),fS(r.mode()===`graph`?14:-1)}}function Bt(t,n){t&1&&(ba(0,`ui-empty`,8),oC(1,`t`)),t&2&&Wm(`title`,sC(1,1,`agents.none`))}var Te=class t{api=p(g);store=p(g$1);prefs=p(rE);destroyRef=p(ve);q=rn(``);agents=k$1([]);error=k$1(null);query=k$1(``);domain=k$1(null);skill=k$1(null);host=k$1(null);forge=k$1(null);selected=k$1(null);loading=k$1(!0);modes=[`cards`,`table`,`graph`];mode=k$1(`cards`);undeclared=L;compareIds=k$1([]);skillsSrc=new l$1;layouts=e;layoutName=k$1(`cose`);canvasEl=kU(`canvasEl`);rendererReady=k$1(!1);renderer=null;mounting=null;knownForges=tn(()=>{let n=new Set,e=this.store.descriptor()?.forge_id;e&&n.add(e);for(let d of this.agents()){let r=M(d,n);r&&n.add(r)}return n});domainOpts=tn(()=>Ee(this.agents()));skillOpts=tn(()=>Pe(this.agents()));hostOpts=tn(()=>we(this.agents()));forgeOpts=tn(()=>Ie(this.agents(),this.knownForges()));filtered=tn(()=>ke(this.agents(),{query:this.query(),domain:this.domain(),skill:this.skill(),host:this.host(),forge:this.forge()},this.knownForges()));comparePair=tn(()=>{let n=new Map(this.agents().map(e=>[e.id,e]));return this.compareIds().map(e=>n.get(e)).filter(e=>e!==void 0).slice(0,2)});compareRows=tn(()=>{let n=this.comparePair();return n.length===2?Ne(n[0],n[1],this.knownForges()):null});fed=tn(()=>H({agents:this.agents(),skills:this.skillsSrc.data(),servingForge:this.store.descriptor()?.forge_id??null,availability:{agents:`loaded`,skills:this.skillsSrc.data()?`loaded`:this.skillsSrc.unavailable()?`unavailable`:`unverified`,bootstrap:this.store.descriptor()?`loaded`:`unverified`}}));subgraph=tn(()=>Ae(this.fed(),new Set(this.filtered().map(n=>n.id))));graphKinds=tn(()=>G$1.filter(n=>(this.subgraph().counts[n]??0)>0));declaredForge=M;constructor(){Oo(()=>{let n=this.canvasEl()?.nativeElement??null;n&&!this.renderer&&this.mountCanvas(n),!n&&this.renderer&&this.destroyCanvas()}),Oo(()=>{this.rendererReady(),this.renderer&&this.renderer.setData(F(this.subgraph()))}),Oo(()=>{this.rendererReady();let n=this.renderer;if(!n)return;let e=this.selected();n.select(e?`agent:${e.id}`:null),n.highlight(new Set,new Set)}),Oo(()=>this.prefs.setFilter(`agents`,this.query())),this.destroyRef.onDestroy(()=>this.destroyCanvas()),this.load()}ngOnInit(){let n=this.q();if(n)this.query.set(n);else{let e=this.prefs.filterFor(`agents`);e&&this.query.set(e)}}async load(){this.error.set(null),this.loading.set(!0);let n$1=this.skillsSrc.load(()=>this.api.skills());try{this.agents.set(await hE(this.api.agents()))}catch(e){this.error.set(e instanceof n?e:new n(0))}finally{this.loading.set(!1)}await n$1}setMode(n){this.mode.set(n)}toggleDomain(n){this.domain.set(this.domain()===n?null:n)}onSkill(n){let e=n.target.value;this.skill.set(e||null)}onHost(n){let e=n.target.value;this.host.set(e||null)}onForge(n){let e=n.target.value;this.forge.set(e||null)}labelFor(n){return this.agents().find(e=>e.id===n)?.name||n}toggleCompare(n){let e=this.compareIds();if(e.includes(n)){this.compareIds.set(e.filter(d=>d!==n));return}this.compareIds.set([...e,n].slice(-2))}canvasRenderer(){return this.renderer}async mountCanvas(n){if(!this.mounting){this.mounting=n;try{let{createCytoscapeRenderer:e}=await import(`./chunk-DmeV4Ae_.js`);if(this.canvasEl()?.nativeElement!==n||this.renderer)return;let r=e({animate:!(typeof matchMedia<`u`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches)});r.mount(n),r.onSelect(m=>this.onCanvasSelect(m)),this.renderer=r,this.rendererReady.set(!0)}finally{this.mounting=null}}}destroyCanvas(){this.renderer?.destroy(),this.renderer=null,this.rendererReady.set(!1)}onCanvasSelect(n){if(n?.type===`node`&&n.id.startsWith(`agent:`)){let e=n.id.slice(6);this.selected.set(this.agents().find(d=>d.id===e)??null)}else n===null&&this.selected.set(null)}setLayout(n){this.layoutName.set(n),this.renderer?.layout(n)}resetLayout(){this.renderer?.layout(this.layoutName())}fitCanvas(){this.renderer?.fit()}exportPng(){let n=this.renderer?.exportPng();n&&this.download(n,`forge-agents-graph.png`)}exportSvg(){let n=this.renderer?.exportSvg();n&&this.download(`data:image/svg+xml;charset=utf-8,${encodeURIComponent(n)}`,`forge-agents-graph.svg`)}download(n,e){let d=document.createElement(`a`);d.href=n,d.download=e,d.click()}kindColor(n){return m[n].color}kindShape(n){return m[n].shape}static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`page-agents`]],viewQuery:function(e,d){e&1&&Ym(d.canvasEl,Be,5),e&2&&_S()},inputs:{q:[1,`q`]},decls:15,vars:16,consts:[[`canvasEl`,``],[`hintId`,`agent`,3,`title`,`subtitle`],[`role`,`group`,`data-toggle`,`view`,1,`view-toggle`],[`type`,`button`,1,`fg-pill`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[3,`error`],[`role`,`status`,1,`grid`],[`icon`,`agents`,3,`title`],[`type`,`button`,1,`fg-pill`,3,`click`],[3,`retry`,`error`],[`kind`,`card`,3,`lines`],[`placeholder`,`agents.search`,3,`queryChange`,`query`],[1,`input`,`sel`,3,`value`],[`data-filter`,`host`,1,`input`,`sel`,3,`value`],[`data-filter`,`forge`,1,`input`,`sel`,3,`value`],[`data-section`,`compare-tray`,`aria-live`,`polite`,1,`card`,`tray`],[`data-section`,`compare`,`aria-live`,`polite`,1,`card`,`cmp`],[`data-section`,`agent-detail`,`aria-live`,`polite`,1,`card`,`detail`,`fg-enter`],[`data-section`,`cards`,1,`grid`],[`data-section`,`table`,1,`card`],[`data-section`,`graph`,1,`card`],[1,`input`,`sel`,3,`change`,`value`],[`value`,``],[3,`value`,`selected`],[`data-filter`,`host`,1,`input`,`sel`,3,`change`,`value`],[`data-filter`,`forge`,1,`input`,`sel`,3,`change`,`value`],[1,`tray__label`],[1,`tray__chip`],[1,`muted`],[1,`btn`,`btn--mini`,3,`click`],[`type`,`button`,1,`tray__x`,3,`click`],[1,`cmp__head`],[`name`,`diff`,3,`size`],[1,`icon-btn`,3,`click`],[`name`,`chevron-right`,3,`size`],[1,`table-wrap`],[1,`table`,`cmp__table`],[`scope`,`col`],[`scope`,`row`],[1,`undecl`],[1,`detail__head`],[`name`,`agents`,3,`size`],[1,`detail__actions`],[`data-action`,`compare`,1,`btn`,`btn--mini`,3,`click`],[1,`kv`],[1,`links`],[`state`,`UNVERIFIED`],[3,`state`,`labelOverride`],[1,`unv-cell`],[1,`chip-link`,3,`routerLink`,`queryParams`],[1,`chip`],[1,`chip-link`,3,`routerLink`,`fragment`],[`data-lift`,``,1,`card`],[1,`head`],[1,`role`],[1,`tags`],[1,`row`],[`data-action`,`detail`,1,`btn`,`btn--mini`,3,`click`],[1,`table`],[1,`sr-only`],[1,`row-id`],[1,`row-actions`],[1,`linklike`,3,`routerLink`,`fragment`],[`colspan`,`7`,1,`empty-cell`],[1,`muted`,`graph__hint`],[`icon`,`network`,3,`title`],[`role`,`toolbar`,1,`fed__toolbar`],[1,`toolbar-gap`],[`type`,`button`,`data-action`,`reset`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`fit`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`png`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`svg`,1,`fg-pill`,3,`click`],[`data-canvas`,`agents`,`role`,`application`,1,`fed__canvas`],[1,`fed__legend`],[1,`legend-dot`]],template:function(e,d){if(e&1&&(da(0,`ui-page-header`,1),oC(1,`t`),oC(2,`t`),da(3,`div`,2),oC(4,`t`),gS(5,Re,3,6,`button`,3,pS),yd(),da(7,`button`,4),Ta(`click`,function(){return d.load()}),ba(8,`ui-icon`,5),WS(9),oC(10,`t`),yd()(),uS(11,$e,1,1,`ui-error`,6),uS(12,qe,3,4,`section`,7),uS(13,Mt,15,15)(14,Bt,2,3,`ui-empty`,8)),e&2){let r;Wm(`title`,sC(1,8,`agents.title`))(`subtitle`,sC(2,10,`agents.subtitle`)),hD(3),Ar(`aria-label`,sC(4,12,`agents.view.label`)),hD(2),mS(d.modes),hD(3),Wm(`size`,15),hD(),Dd(` `,sC(10,14,`state.refresh`),` `),hD(2),fS((r=d.error())?11:-1,r),hD(),fS(d.loading()?12:-1),hD(),fS(d.agents().length?13:!d.error()&&!d.loading()?14:-1)}},dependencies:[yc,T,I,_,D,cE,k$2,h,aE],styles:[`.grid[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-4);grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2)}h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.role[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);font-size:var(--%NS%font-sm);margin:4px 0}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);margin:0}.tags[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);margin:4px 0 0}.tags[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-weight:600}.sel[_ngcontent-%COMP%]{width:auto;min-width:12rem;padding-block:2px;font-size:var(--%NS%font-xs)}.row[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3);display:flex;justify-content:flex-end;gap:var(--%NS%space-2)}.btn--mini[_ngcontent-%COMP%]{padding:2px var(--%NS%space-2);font-size:var(--%NS%font-xs);gap:4px}.view-toggle[_ngcontent-%COMP%]{display:inline-flex;gap:var(--%NS%space-1);margin-right:var(--%NS%space-2)}.tray[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-4);padding-block:var(--%NS%space-2)}.tray__label[_ngcontent-%COMP%]{font-weight:650;font-size:var(--%NS%font-sm)}.tray__chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;font-size:var(--%NS%font-xs);font-weight:600;color:var(--%NS%accent-ink);background:var(--%NS%accent-bg);border-radius:var(--%NS%radius-pill);padding:2px 6px 2px 10px}.tray__x[_ngcontent-%COMP%]{border:0;background:none;color:inherit;font-size:var(--%NS%font-sm);line-height:1;cursor:pointer;padding:0 2px}.cmp[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);border-left:3px solid var(--%NS%info)}.cmp__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.cmp__table[_ngcontent-%COMP%] th[scope=row][_ngcontent-%COMP%]{text-align:left;font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted);white-space:nowrap}.cmp__table[_ngcontent-%COMP%] tr[data-differ][_ngcontent-%COMP%] td[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--%NS%info) 8%,transparent)}.undecl[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);font-style:italic;font-size:var(--%NS%font-xs)}.row-id[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.row-actions[_ngcontent-%COMP%]{white-space:nowrap;display:flex;gap:var(--%NS%space-1);justify-content:flex-end}.empty-cell[_ngcontent-%COMP%]{text-align:center;color:var(--%NS%fg-muted);padding:var(--%NS%space-4)!important}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.graph__hint[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-size:var(--%NS%font-sm)}.fed__toolbar[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-2)}.toolbar-gap[_ngcontent-%COMP%]{flex:1}.fed__canvas[_ngcontent-%COMP%]{height:420px;border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:var(--%NS%bg-elevated);overflow:hidden}.fed__canvas[_ngcontent-%COMP%] canvas[_ngcontent-%COMP%]{outline:none}.fed__legend[_ngcontent-%COMP%]{list-style:none;display:flex;flex-wrap:wrap;gap:var(--%NS%space-1) var(--%NS%space-3);padding:0;margin:var(--%NS%space-2) 0 0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.fed__legend[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-1)}.legend-dot[_ngcontent-%COMP%]{width:10px;height:10px;display:inline-block;border-radius:3px;flex:none}.detail[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);border-left:3px solid var(--%NS%accent)}.detail__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.detail__actions[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.kv[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin:0}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{min-width:9rem;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm);flex:none}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;min-width:0}.unv-cell[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}.links[_ngcontent-%COMP%]{display:inline-flex;flex-wrap:wrap;gap:4px}.chip[_ngcontent-%COMP%]{margin-left:4px}`]})};export{Te as AgentsPage}; \ No newline at end of file diff --git a/portal/assets/chunk-Cci2spkQ.js b/portal/assets/chunk-Cci2spkQ.js deleted file mode 100644 index fd08afb..0000000 --- a/portal/assets/chunk-Cci2spkQ.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as da,Dt as pS,Et as p,F as Wm,Gt as wS,K as aC,Lt as tn,M as Ta,Mt as sC,N as Uh,P as WS,Q as cE,Tt as oC,X as bS,Xt as yd,Z as ba,ct as gS,d as Ec,dt as hE,ft as hS,gt as k,h as Jm,ht as jh,it as ei,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,xt as nC,yt as mS,zt as uS}from"./chunk-BelLryvf.js";import{i as n,r as g,s as y,t as g$1}from"./main-A2NKRJGT.js";import{t as _}from"./chunk-BKRLVsID.js";import{t as D}from"./chunk-CiuPOfJ0.js";import{n as k$1,t as I}from"./chunk-D2KAfPv6.js";import{t as T}from"./chunk-BBusSOqc.js";var ne=e=>({count:e});var N=(e,a)=>a.id;var ae=(e,a)=>a.host;var le=(e,a)=>a.path;function oe(e,a){e&1&&ba(0,`ui-icon`,44),e&2&&Wm(`size`,13)}function re(e,a){e&1&&ba(0,`ui-icon`,38),e&2&&Wm(`size`,13)}function se(e,a){if(e&1&&WS(0),e&2){let t=bS().$index;Dd(` `,t+1,` `)}}function pe(e,a){if(e&1&&(da(0,`li`,5)(1,`span`,43),uS(2,oe,1,1,`ui-icon`,44)(3,re,1,1,`ui-icon`,38)(4,se,1,1),yd(),da(5,`span`,45),WS(6),oC(7,`t`),yd()()),e&2){let t=a.$implicit,r=a.$index,m=bS();Ar(`data-state`,m.stepState(r))(`aria-current`,r===m.stepIndex()?`step`:null),hD(2),fS(m.stepState(r)===`done`?2:m.stepState(r)===`warn`?3:4),hD(4),Jm(sC(7,4,t))}}function de(e,a){e&1&&ba(0,`ui-state-badge`,10),e&2&&Wm(`state`,a.state)}function ce(e,a){if(e&1&&(da(0,`small`,18),WS(1),yd()),e&2){let t=bS().$implicit;hD(),Jm(t.detail)}}function me(e,a){if(e&1&&(da(0,`li`),ba(1,`ui-state-badge`,49),uS(2,ce,2,1,`small`,18),yd()),e&2){let t=a.$implicit;hD(),Wm(`state`,t.state)(`labelOverride`,t.id),hD(),fS(t.detail?2:-1)}}function ue(e,a){if(e&1&&(da(0,`ul`,47),gS(1,me,3,3,`li`,null,N),yd()),e&2){let t=bS();hD(),mS(t.checks)}}function _e(e,a){if(e&1&&(da(0,`div`,48),ba(1,`ui-icon`,50),da(2,`span`,51)(3,`strong`),WS(4),oC(5,`t`),yd(),da(6,`small`,52),WS(7),oC(8,`t`),yd()()()),e&2){let t=a;Ar(`data-state`,t.state),hD(),Wm(`size`,15),hD(3),Jm(sC(5,4,`install.portal.`+t.state)),hD(3),Jm(t.install_root||t.manifest||sC(8,6,`install.portal.vendored.hint`))}}function fe(e,a){if(e&1&&(da(0,`dl`,46)(1,`div`)(2,`dt`),WS(3),oC(4,`t`),yd(),da(5,`dd`),WS(6),oC(7,`t`),yd()(),da(8,`div`)(9,`dt`),WS(10),oC(11,`t`),yd(),da(12,`dd`),WS(13),oC(14,`t`),yd()(),da(15,`div`)(16,`dt`),WS(17),oC(18,`t`),yd(),da(19,`dd`),WS(20),oC(21,`t`),yd()()(),uS(22,ue,3,0,`ul`,47),uS(23,_e,9,8,`div`,48)),e&2){let t,r=a;hD(3),Jm(sC(4,8,`dashboard.workspace`)),hD(3),Jm(r.workspace??sC(7,10,`dashboard.noWorkspace`)),hD(4),Jm(sC(11,12,`dashboard.profile`)),hD(3),Jm(r.profile??sC(14,14,`state.unknown`)),hD(4),Jm(sC(18,16,`install.receipt.status`)),hD(3),Jm(r.updated_at??sC(21,18,`state.unknown`)),hD(2),fS(r.checks.length?22:-1),hD(),fS((t=r.forge_portal)?23:-1,t)}}function ye(e,a){e&1&&ba(0,`ui-skeleton`,11),e&2&&Wm(`lines`,2)}function xe(e,a){if(e&1&&(da(0,`li`)(1,`strong`),WS(2),yd(),ba(3,`ui-state-badge`,10),da(4,`span`,18),WS(5),oC(6,`t`),yd()()),e&2){let t=a.$implicit;hD(2),Jm(t.host),hD(),Wm(`state`,t.integration),hD(2),Jm(sC(6,3,t.detected?`hosts.detected`:`hostState.NOT_DETECTED`))}}function he(e,a){if(e&1&&(da(0,`ul`,53),gS(1,xe,7,5,`li`,null,ae),yd()),e&2){let t=bS();hD(),mS(t)}}function ve(e,a){e&1&&(da(0,`p`,18),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`hosts.notDetected`)))}function ge(e,a){e&1&&uS(0,he,3,0,`ul`,53)(1,ve,3,3,`p`,18),e&2&&fS(a.length?0:1)}function be(e,a){e&1&&ba(0,`ui-skeleton`,11),e&2&&Wm(`lines`,2)}function Ce(e,a){if(e&1){let t=wS();da(0,`label`,15)(1,`input`,54),Ta(`change`,function(){let m=jh(t).$implicit,P=bS();return Uh(P.scope.set(m.id))}),yd(),da(2,`span`)(3,`strong`),WS(4),oC(5,`t`),yd(),da(6,`small`),WS(7),oC(8,`t`),yd()()()}if(e&2){let t=a.$implicit,r=bS();Ar(`data-active`,r.scope()===t.id||null),hD(),Wm(`value`,t.id)(`checked`,r.scope()===t.id)(`disabled`,r.locked()),hD(3),Jm(sC(5,6,t.label)),hD(3),Jm(sC(8,8,t.hint))}}function Ie(e,a){if(e&1){let t=wS();da(0,`label`,17)(1,`input`,55),Ta(`change`,function(){let m=jh(t).$implicit,P=bS();return Uh(P.toggle(m.id))}),yd(),da(2,`span`),WS(3),yd()()}if(e&2){let t=a.$implicit,r=bS();Ar(`data-active`,r.selected().has(t.id)||null),hD(),Wm(`checked`,r.selected().has(t.id))(`disabled`,r.locked()),hD(2),Jm(t.id)}}function Se(e,a){if(e&1){let t=wS();da(0,`label`,15)(1,`input`,56),Ta(`change`,function(){let m=jh(t).$implicit,P=bS();return Uh(P.host.set(m.id))}),yd(),da(2,`span`)(3,`strong`),WS(4),oC(5,`t`),yd(),da(6,`small`),WS(7),yd()()()}if(e&2){let t=a.$implicit,r=bS();Ar(`data-active`,r.host()===t.id||null),hD(),Wm(`value`,t.id)(`checked`,r.host()===t.id)(`disabled`,r.locked()),hD(3),Jm(t.labelKey?sC(5,6,t.labelKey):t.label),hD(3),Jm(r.hostState(t.id))}}function Ee(e,a){if(e&1){let t=wS();da(0,`label`,15)(1,`input`,57),Ta(`change`,function(){let m=jh(t).$implicit,P=bS();return Uh(P.profile.set(m.id))}),yd(),da(2,`span`)(3,`strong`),WS(4),oC(5,`t`),yd(),da(6,`small`),WS(7),oC(8,`t`),yd()()()}if(e&2){let t=a.$implicit,r=bS();Ar(`data-active`,r.profile()===t.id||null),hD(),Wm(`value`,t.id)(`checked`,r.profile()===t.id)(`disabled`,r.locked()),hD(3),Jm(sC(5,6,t.label)),hD(3),Jm(sC(8,8,t.hint))}}function Pe(e,a){if(e&1){let t=wS();da(0,`label`,15)(1,`input`,58),Ta(`change`,function(){let m=jh(t).$implicit,P=bS();return Uh(P.executionProfile.set(m.id))}),yd(),da(2,`span`)(3,`strong`),WS(4),oC(5,`t`),yd(),da(6,`small`),WS(7),oC(8,`t`),yd()()()}if(e&2){let t=a.$implicit,r=bS();Ar(`data-active`,r.executionProfile()===t.id||null),hD(),Wm(`value`,t.id)(`checked`,r.executionProfile()===t.id)(`disabled`,r.locked()),hD(3),Jm(sC(5,6,t.label)),hD(3),Jm(sC(8,8,t.hint))}}function ke(e,a){if(e&1&&(da(0,`code`,59),WS(1),yd()),e&2){let t=a.$implicit;hD(),Jm(t)}}function we(e,a){if(e&1&&(da(0,`span`,21),gS(1,ke,2,1,`code`,59,pS),yd()),e&2){let t=bS();hD(),mS(t.selected())}}function Be(e,a){e&1&&(da(0,`span`,18),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`install.summary.empty`)))}function Te(e,a){e&1&&(da(0,`section`,24),ba(1,`div`,60),da(2,`p`,18),WS(3),oC(4,`t`),yd()()),e&2&&(hD(3),Jm(sC(4,1,`install.planning`)))}function Ne(e,a){if(e&1&&(da(0,`li`,68)(1,`code`,69),WS(2),yd(),da(3,`span`,70)(4,`del`,71),WS(5),yd(),ba(6,`ui-icon`,72),da(7,`ins`,73),WS(8),yd()()()),e&2){let t=a.$implicit;hD(2),Jm(t.path),hD(3),Jm(t.before??`—`),hD(),Wm(`size`,13),hD(2),Jm(t.after??`—`)}}function De(e,a){if(e&1&&(da(0,`ul`,66),gS(1,Ne,9,4,`li`,68,le),yd()),e&2){let t=bS();hD(),mS(t)}}function Me(e,a){e&1&&(da(0,`p`,67),ba(1,`ui-icon`,38),WS(2),oC(3,`t`),yd()),e&2&&(hD(),Wm(`size`,14),hD(),Dd(` `,sC(3,2,`install.diff.none`),` `))}function Oe(e,a){e&1&&uS(0,De,3,0,`ul`,66)(1,Me,4,4,`p`,67),e&2&&fS(a.length?0:1)}function Ve(e,a){if(e&1&&(da(0,`li`)(1,`code`),WS(2),yd(),da(3,`code`,75),WS(4),yd(),da(5,`span`),WS(6),yd()()),e&2){let t=a.$implicit;hD(2),Jm(t.kind),hD(2),Jm(t.status),hD(2),Jm(t.path)}}function Re(e,a){if(e&1&&(da(0,`h3`,12),WS(1),oC(2,`t`),yd(),da(3,`ul`,74),gS(4,Ve,7,3,`li`,null,hS),yd()),e&2){let t=bS();hD(),Jm(sC(2,1,`federation.actions`)),hD(3),mS(t.actions)}}function $e(e,a){if(e&1&&(da(0,`details`,61)(1,`summary`),WS(2),oC(3,`t`),yd(),da(4,`pre`),WS(5),yd()()),e&2){let t=bS(),r=bS();hD(2),Jm(sC(3,2,`fdoc.raw`)),hD(3),Jm(r.planText(t.plan))}}function Fe(e,a){if(e&1){let t=wS();da(0,`section`,25)(1,`div`,7)(2,`h2`)(3,`span`,9),WS(4,`5`),yd(),WS(5),oC(6,`t`),yd(),ba(7,`ui-state-badge`,10),yd(),da(8,`p`,18),WS(9),oC(10,`t`),yd(),uS(11,Oe,2,1),uS(12,Re,6,3),uS(13,$e,6,4,`details`,61),da(14,`div`,62)(15,`button`,63),Ta(`click`,function(){jh(t);let m=bS();return Uh(m.proceedToConfirm())}),ba(16,`ui-icon`,64),WS(17),oC(18,`t`),yd(),da(19,`button`,65),Ta(`click`,function(){jh(t);let m=bS();return Uh(m.reset())}),WS(20),oC(21,`t`),yd()()()}if(e&2){let t,r=a,m=bS();hD(5),Dd(``,sC(6,9,`install.step.reviewDiff`),` `),hD(2),Wm(`state`,r.status),hD(2),Dd(` `,aC(10,11,`install.plan.changes`,nC(18,ne,r.actions?.length??0)),` `),hD(2),fS((t=m.diffRows())?11:-1,t),hD(),fS(r.actions?.length?12:-1),hD(),fS(r.plan?13:-1),hD(3),Wm(`size`,15),hD(),Dd(` `,sC(18,14,`install.confirm.next`),` `),hD(3),Jm(sC(21,16,`state.cancel`))}}function ze(e,a){if(e&1){let t=wS();da(0,`section`,26)(1,`h2`)(2,`span`,9),WS(3,`6`),yd(),WS(4),oC(5,`t`),yd(),da(6,`p`,18),WS(7),oC(8,`t`),yd(),da(9,`dl`,20)(10,`div`)(11,`dt`),WS(12),oC(13,`t`),yd(),da(14,`dd`),WS(15),oC(16,`t`),yd()(),da(17,`div`)(18,`dt`),WS(19),oC(20,`t`),yd(),da(21,`dd`),WS(22),yd()(),da(23,`div`)(24,`dt`),WS(25),oC(26,`t`),yd(),da(27,`dd`),WS(28),oC(29,`t`),yd()(),da(30,`div`)(31,`dt`),WS(32),oC(33,`t`),yd(),da(34,`dd`),WS(35),yd()()(),da(36,`div`,62)(37,`button`,63),Ta(`click`,function(){jh(t);let m=bS();return Uh(m.confirmExecute())}),ba(38,`ui-icon`,64),WS(39),oC(40,`t`),yd(),da(41,`button`,65),Ta(`click`,function(){jh(t);let m=bS();return Uh(m.backToReview())}),WS(42),oC(43,`t`),yd(),da(44,`button`,65),Ta(`click`,function(){jh(t);let m=bS();return Uh(m.reset())}),WS(45),oC(46,`t`),yd()()()}if(e&2){let t=bS();hD(4),Jm(sC(5,14,`install.step.confirm`)),hD(3),Jm(sC(8,16,`install.confirm.hint`)),hD(5),Jm(sC(13,18,`install.summary.scope`)),hD(3),Jm(sC(16,20,t.scopeLabel())),hD(4),Jm(sC(20,22,`install.summary.host`)),hD(3),Jm(t.hostLabel()),hD(3),Jm(sC(26,24,`install.summary.profile`)),hD(3),Jm(sC(29,26,t.profileLabel())),hD(4),Jm(sC(33,28,`federation.actions`)),hD(3),Jm(a.actions?.length??0),hD(3),Wm(`size`,15),hD(),Dd(` `,sC(40,30,`install.confirm.execute`),` `),hD(3),Jm(sC(43,32,`install.confirm.back`)),hD(3),Jm(sC(46,34,`state.cancel`))}}function He(e,a){e&1&&(da(0,`section`,24),ba(1,`div`,60),da(2,`p`,18),WS(3),oC(4,`t`),yd()()),e&2&&(hD(3),Jm(sC(4,1,`install.running`)))}function Le(e,a){e&1&&(da(0,`section`,24),ba(1,`div`,60),da(2,`p`,18),WS(3),oC(4,`t`),yd()()),e&2&&(hD(3),Jm(sC(4,1,`install.verify.running`)))}function je(e,a){e&1&&ba(0,`ui-state-badge`,10),e&2&&Wm(`state`,a.state)}function Ae(e,a){if(e&1&&(da(0,`small`,18),WS(1),yd()),e&2){let t=bS().$implicit;hD(),Jm(t.detail)}}function Ke(e,a){e&1&&(da(0,`span`,78),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`fdoc.repairable`)))}function Qe(e,a){if(e&1&&(da(0,`li`),ba(1,`ui-state-badge`,49),da(2,`code`),WS(3),yd(),uS(4,Ae,2,1,`small`,18),uS(5,Ke,3,3,`span`,78),yd()),e&2){let t=a.$implicit;hD(),Wm(`state`,t.status??`unverified`)(`labelOverride`,t.status??null),hD(2),Jm(t.id??`—`),hD(),fS(t.detail?4:-1),hD(),fS(t.repairable?5:-1)}}function Ue(e,a){if(e&1&&(da(0,`ul`,47),gS(1,Qe,6,5,`li`,null,hS),yd()),e&2){let t=bS(2);hD(),mS(t.result().checks)}}function Je(e,a){e&1&&(da(0,`p`,77),ba(1,`ui-state-badge`,36),WS(2),oC(3,`t`),yd()),e&2&&(hD(2),Dd(` `,sC(3,1,`install.verify.unverified`),` `))}function We(e,a){if(e&1&&(da(0,`section`,27)(1,`h2`)(2,`span`,9),WS(3,`8`),yd(),WS(4),oC(5,`t`),yd(),da(6,`div`,76),uS(7,je,1,1,`ui-state-badge`,10),uS(8,Ue,3,0,`ul`,47)(9,Je,4,3,`p`,77),yd()()),e&2){let t,r=bS();hD(4),Jm(sC(5,3,`install.step.verify`)),hD(3),fS((t=r.store.health())?7:-1,t),hD(),fS(r.result().checks?.length?8:9)}}function qe(e,a){if(e&1&&(da(0,`p`,18)(1,`code`),WS(2),yd()()),e&2){let t=bS();hD(2),Jm(t.stage)}}function Ge(e,a){if(e&1&&(da(0,`p`),WS(1),yd()),e&2){let t=bS();hD(),Jm(t.detail)}}function Xe(e,a){if(e&1&&WS(0),e&2){let t=bS(2);Dd(` — `,t.unlock,` `)}}function Ye(e,a){if(e&1&&(da(0,`p`,79)(1,`code`),WS(2),yd(),uS(3,Xe,1,1),yd()),e&2){let t=bS();hD(2),Jm(t.refusal),hD(),fS(t.unlock?3:-1)}}function Ze(e,a){if(e&1&&(da(0,`li`)(1,`code`),WS(2),yd(),da(3,`span`),WS(4),yd()()),e&2){let t=a.$implicit;hD(2),Jm(t.status),hD(2),Jm(t.path)}}function et(e,a){if(e&1&&(da(0,`h3`,12),WS(1),oC(2,`t`),yd(),da(3,`ul`,74),gS(4,Ze,5,2,`li`,null,hS),yd()),e&2){let t=bS();hD(),Jm(sC(2,1,`federation.actions`)),hD(3),mS(t.actions)}}function tt(e,a){if(e&1){let t=wS();da(0,`section`,28)(1,`div`,7)(2,`h2`)(3,`span`,9),WS(4,`9`),yd(),WS(5),oC(6,`t`),yd(),ba(7,`ui-state-badge`,10),yd(),uS(8,qe,3,1,`p`,18),uS(9,Ge,2,1,`p`),uS(10,Ye,4,2,`p`,79),uS(11,et,6,3),da(12,`div`,62)(13,`button`,1),Ta(`click`,function(){jh(t);let m=bS();return Uh(m.reinstall())}),ba(14,`ui-icon`,2),WS(15),oC(16,`t`),yd(),da(17,`button`,1),Ta(`click`,function(){jh(t);let m=bS();return Uh(m.reset())}),WS(18),oC(19,`t`),yd()()()}if(e&2){let t=a,r=bS();hD(5),Jm(sC(6,11,`install.step.receipt`)),hD(2),Wm(`state`,t.status),hD(),fS(t.stage?8:-1),hD(),fS(t.detail?9:-1),hD(),fS(t.refusal?10:-1),hD(),fS(t.actions?.length?11:-1),hD(2),Wm(`disabled`,r.busy()),hD(),Wm(`size`,15),hD(),Dd(` `,sC(16,13,`install.reinstall`),` `),hD(2),Wm(`disabled`,r.busy()),hD(),Dd(` `,sC(19,15,`install.newPlan`),` `)}}function it(e,a){if(e&1){let t=wS();da(0,`ui-error`,80),Ta(`retry`,function(){jh(t);let m=bS();return Uh(m.reset())}),yd()}if(e&2){let t=bS();Wm(`error`,t.error())}}function nt(e,a){e&1&&(da(0,`div`,39),ba(1,`div`,60),da(2,`p`,18),WS(3),oC(4,`t`),yd()()),e&2&&(hD(3),Jm(sC(4,1,`install.running`)))}function at(e,a){if(e&1){let t=wS();da(0,`ui-error`,80),Ta(`retry`,function(){jh(t);let m=bS();return Uh(m.opError.set(null))}),yd()}e&2&&Wm(`error`,a)}function lt(e,a){if(e&1&&(da(0,`span`,18),WS(1),yd()),e&2){let t=bS();hD(),Jm(t.r.detail)}}function ot(e,a){if(e&1&&WS(0),e&2){let t=bS(2);Dd(` — `,t.r.unlock,` `)}}function rt(e,a){if(e&1&&(da(0,`p`,82)(1,`code`),WS(2),yd(),uS(3,ot,1,1),yd()),e&2){let t=bS();hD(2),Jm(t.r.refusal),hD(),fS(t.r.unlock?3:-1)}}function st(e,a){if(e&1&&(da(0,`li`)(1,`code`),WS(2),yd(),da(3,`span`),WS(4),yd()()),e&2){let t=a.$implicit;hD(2),Jm(t.status),hD(2),Jm(t.path)}}function pt(e,a){if(e&1&&(da(0,`ul`,74),gS(1,st,5,2,`li`,null,hS),yd()),e&2){let t=bS();hD(),mS(t.r.actions)}}function dt(e,a){if(e&1&&(da(0,`div`,40)(1,`p`,81)(2,`strong`),WS(3),oC(4,`t`),yd(),ba(5,`ui-state-badge`,10),uS(6,lt,2,1,`span`,18),yd(),uS(7,rt,4,2,`p`,82),uS(8,pt,3,0,`ul`,74),yd()),e&2){let t=a,r=bS();hD(3),Jm(sC(4,5,r.opLabel(t.op))),hD(2),Wm(`state`,t.r.status),hD(),fS(t.r.detail?6:-1),hD(),fS(t.r.refusal?7:-1),hD(),fS(t.r.actions?.length?8:-1)}}function ct(e,a){if(e&1&&(da(0,`tr`)(1,`td`),WS(2),yd(),da(3,`td`)(4,`code`),WS(5),yd()(),da(6,`td`),ba(7,`ui-state-badge`,49),yd(),da(8,`td`),WS(9),yd()()),e&2){let t=a.$implicit,r=bS(3);hD(2),Jm(t.label),hD(3),Jm(t.verb),hD(2),Wm(`state`,r.stageKind(t.stage))(`labelOverride`,t.stage),hD(2),Jm(t.exit_code??`—`)}}function mt(e,a){if(e&1&&(da(0,`table`,83)(1,`thead`)(2,`tr`)(3,`th`,85),WS(4),oC(5,`t`),yd(),da(6,`th`,85),WS(7),oC(8,`t`),yd(),da(9,`th`,85),WS(10),oC(11,`t`),yd(),da(12,`th`,85),WS(13),oC(14,`t`),yd()()(),da(15,`tbody`),gS(16,ct,10,5,`tr`,null,N),yd()()),e&2){let t=bS();hD(4),Jm(sC(5,4,`table.task`)),hD(3),Jm(sC(8,6,`table.verb`)),hD(3),Jm(sC(11,8,`table.stage`)),hD(3),Jm(sC(14,10,`table.exit`)),hD(3),mS(t)}}function ut(e,a){e&1&&(ba(0,`ui-empty`,84),oC(1,`t`)),e&2&&Wm(`title`,sC(1,1,`tasks.empty`))}function _t(e,a){e&1&&uS(0,mt,18,12,`table`,83)(1,ut,2,3,`ui-empty`,84),e&2&&fS(a.length?0:1)}function ft(e,a){e&1&&ba(0,`ui-skeleton`,11),e&2&&Wm(`lines`,3)}var te=class e{api=p(g);i18n=p(Ec);confirm=p(y);store=p(g$1);phase=k(`idle`);reached=k(0);failedAt=k(0);scope=k(`project`);host=k(`all`);profile=k(`recommended`);executionProfile=k(`balanced`);hostDetections=k(null);selected=k(new Set([`skills`,`agents`,`mcp`]));planReceipt=k(null);result=k(null);error=k(null);history=k(null);opBusy=k(null);opReceipt=k(null);opError=k(null);busy=tn(()=>[`planning`,`executing`,`verifying`].includes(this.phase())||this.opBusy()!==null);locked=tn(()=>this.phase()!==`idle`);stepKeys=[`install.step.discover`,`install.step.select`,`install.step.configure`,`install.step.plan`,`install.step.reviewDiff`,`install.step.confirm`,`install.step.execute`,`install.step.verify`,`install.step.receipt`];stepIndex(){switch(this.phase()){case`planning`:return 3;case`review`:return 4;case`confirming`:return 5;case`executing`:return 6;case`verifying`:return 7;case`receipt`:case`refused`:return 8;case`error`:return this.failedAt();default:return 2}}stepState(a){let t=this.phase();if(t===`idle`)return a<=2?`active`:`todo`;if(t===`receipt`)return`done`;if(t===`refused`||t===`error`){let m=t===`refused`?this.reached():this.failedAt();return a===m?`warn`:a{let a=this.planReceipt();if(!a)return[];let t=[],r=new Set,m=(w,I,T)=>{let h=w==null?``:String(w);!h||r.has(h)||(r.add(h),t.push({path:h,before:ie(I),after:ie(T)}))},P=a.plan??{};for(let w of[`diff`,`changes`,`files`]){let I=P[w];if(Array.isArray(I)){for(let T of I)if(T&&typeof T==`object`){let h=T;m(h.path??h.file??h.target,h.before,h.after)}}else if(I&&typeof I==`object`){for(let[T,h]of Object.entries(I))if(h&&typeof h==`object`){let M=h;m(T,M.before,M.after)}}}for(let w of a.actions??[]){let I=w;(I.before!==void 0||I.after!==void 0)&&m(w.path,I.before,I.after)}return t});hostChoices=[{id:`all`,labelKey:`install.host.all`},{id:`claude`,label:`Claude`},{id:`devin`,label:`Devin`},{id:`codex`,label:`Codex`},{id:`copilot`,label:`Copilot`}];profiles=[{id:`minimal`,label:`profiles.economy`,hint:`profiles.economy.desc`},{id:`recommended`,label:`profiles.balanced`,hint:`profiles.balanced.desc`},{id:`full`,label:`profiles.full`,hint:`profiles.full.desc`}];executionProfiles=[{id:`economy`,label:`profiles.economy`,hint:`profiles.economy.desc`},{id:`balanced`,label:`profiles.balanced`,hint:`profiles.balanced.desc`},{id:`deep`,label:`profiles.deep`,hint:`profiles.deep.desc`}];scopes=[{id:`project`,label:`install.scope.project`,hint:`install.scope.project.hint`},{id:`workspace`,label:`install.scope.workspace`,hint:`install.scope.workspace.hint`},{id:`user`,label:`install.scope.user`,hint:`install.scope.user.hint`}];components=[{id:`skills`},{id:`agents`},{id:`mcp`},{id:`tui`},{id:`graph-studio`}];constructor(){this.load()}async load(){await Promise.all([hE(this.api.hosts()).then(a=>this.hostDetections.set(a)).catch(()=>this.hostDetections.set([])),this.loadHistory(),this.store.refreshHealth()])}async loadHistory(){try{this.history.set(await hE(this.api.tasks()))}catch{this.history.set(this.history()??[])}}hostState(a){if(a===`all`)return`—`;let t=(this.hostDetections()??[]).find(r=>r.host===a);return t?t.detected?this.i18n.t(`hostState.${t.integration}`):this.i18n.t(`hostState.NOT_DETECTED`):`…`}scopeLabel(){return this.scopes.find(a=>a.id===this.scope())?.label??this.scope()}hostLabel(){let a=this.hostChoices.find(t=>t.id===this.host());return a?.labelKey?this.i18n.t(a.labelKey):a?.label??this.host()}profileLabel(){return this.profiles.find(a=>a.id===this.profile())?.label??this.profile()}executionProfileLabel(){return this.executionProfiles.find(a=>a.id===this.executionProfile())?.label??`profiles.${this.executionProfile()}`}opLabel(a){return a===`repair`?`install.repair`:`install.uninstall`}stageKind(a){let t=(a||``).toLowerCase();return t===`completed`?`supported`:[`failed`,`refused`,`cancelled`].includes(t)?`error`:[`awaiting_approval`,`partial`].includes(t)?`warn`:[`running`,`planning`,`verifying`].includes(t)?`info`:`muted`}toggle(a){if(this.locked())return;let t=new Set(this.selected());t.has(a)?t.delete(a):t.add(a),this.selected.set(t)}planText(a){return JSON.stringify(a,null,2)}async plan(){if(!(this.phase()!==`idle`||this.busy()||this.selected().size===0)){this.error.set(null),this.result.set(null),this.planReceipt.set(null),this.phase.set(`planning`),this.reached.set(3);try{let a=await hE(this.api.installationPlan(this.selectionPayload()));if(a.refusal){this.result.set(a),this.phase.set(`refused`);return}this.planReceipt.set(a),this.reached.set(4),this.phase.set(`review`)}catch(a){this.fail(a)}}}proceedToConfirm(){this.phase()!==`review`||!this.planReceipt()||(this.reached.set(5),this.phase.set(`confirming`))}backToReview(){this.phase()===`confirming`&&(this.phase.set(`review`),this.reached.set(4))}async confirmExecute(){let a=this.planReceipt();if(!(this.phase()!==`confirming`||!a?.plan||!a.plan_token)){this.error.set(null),this.phase.set(`executing`),this.reached.set(6);try{let t=await hE(this.api.installationApply(a.plan,a.plan_token));if(this.result.set(t),t.refusal){this.phase.set(`refused`);return}this.phase.set(`verifying`),this.reached.set(7),await this.store.refreshHealth(),this.reached.set(8),this.phase.set(`receipt`),await this.loadHistory()}catch(t){this.fail(t)}}}async reinstall(){this.busy()||(this.planReceipt.set(null),this.result.set(null),this.phase.set(`idle`),this.reached.set(0),await this.plan())}async repair(){this.opBusy()||!await this.confirm.ask({title:`install.repair`,message:`install.repair.confirm`,confirmKey:`install.repair`,danger:!0})||await this.runQuickOp(`repair`,()=>this.api.installationRepair())}async uninstall(){this.opBusy()||!await this.confirm.ask({title:`install.uninstall`,message:`install.uninstall.confirm`,confirmKey:`install.uninstall.confirmBtn`,danger:!0})||(await this.runQuickOp(`uninstall`,()=>this.api.installationUninstall()),this.opReceipt()&&!this.opReceipt().r.refusal&&!this.opError()&&this.reset())}async runQuickOp(a,t){this.opBusy.set(a),this.opReceipt.set(null),this.opError.set(null);try{let r=await hE(t());this.opReceipt.set({op:a,r})}catch(r){this.opError.set(r instanceof n?r:new n(0))}finally{this.opBusy.set(null)}await this.store.refreshHealth(),await this.loadHistory()}reset(){this.phase.set(`idle`),this.reached.set(0),this.planReceipt.set(null),this.result.set(null),this.error.set(null)}fail(a){this.failedAt.set(this.stepIndex()),this.error.set(a instanceof n?a:new n(0)),this.phase.set(`error`)}selectionPayload(){return{scope:this.scope(),host:this.host(),profile:this.profile(),hosts:this.host()===`all`?this.hostChoices.filter(a=>a.id!==`all`).map(a=>a.id):[this.host()],component_profile:this.profile(),execution_profile:this.executionProfile(),components:Object.fromEntries([...this.selected()].map(a=>[a,!0]))}}static ɵfac=function(t){return new(t||e)};static ɵcmp=ei({type:e,selectors:[[`page-install`]],decls:178,vars:145,consts:[[`hintId`,`install`,3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[1,`card`],[1,`stepper`],[1,`stepper__step`],[`aria-labelledby`,`discover-h`,1,`card`,`discover`],[1,`card__heading`],[`id`,`discover-h`],[`aria-hidden`,`true`,1,`stepnum`],[3,`state`],[`kind`,`row`,3,`lines`],[1,`subhead`],[1,`config-grid`],[`role`,`radiogroup`,1,`scopes`],[1,`scope`],[1,`comps`],[1,`comp`],[1,`muted`],[1,`card`,`summary`],[1,`summary__kv`],[1,`summary__comps`],[1,`btn`,`btn--primary`,3,`click`,`disabled`],[`name`,`install`,3,`size`],[`role`,`status`,`aria-live`,`polite`,1,`card`,`running`],[`data-lift`,``,1,`card`,`plan`],[`data-lift`,``,1,`card`,`confirm`],[1,`card`,`verify`],[`data-lift`,``,1,`card`,`receipt`],[3,`error`],[`aria-labelledby`,`ops-h`,1,`card`,`ops`],[`id`,`ops-h`],[1,`ops__list`],[1,`op`],[1,`op__body`],[`data-state`,`unverified`,1,`op`],[`state`,`unverified`],[1,`btn`,`btn--danger`,3,`click`,`disabled`],[`name`,`alert`,3,`size`],[`role`,`status`,`aria-live`,`polite`,1,`running`],[1,`op-receipt`],[`aria-labelledby`,`history-h`,1,`card`,`history`],[`id`,`history-h`],[`aria-hidden`,`true`,1,`stepper__dot`],[`name`,`check`,3,`size`],[1,`stepper__label`],[1,`discover__kv`],[1,`checks`],[1,`portal-row`],[3,`state`,`labelOverride`],[`name`,`gem`,3,`size`],[1,`portal-row__body`],[1,`mono`],[1,`hostlist`],[`type`,`radio`,`name`,`scope`,3,`change`,`value`,`checked`,`disabled`],[`type`,`checkbox`,3,`change`,`checked`,`disabled`],[`type`,`radio`,`name`,`host`,3,`change`,`value`,`checked`,`disabled`],[`type`,`radio`,`name`,`profile`,3,`change`,`value`,`checked`,`disabled`],[`type`,`radio`,`name`,`execution-profile`,3,`change`,`value`,`checked`,`disabled`],[1,`summary__chip`],[`aria-hidden`,`true`,1,`running__spinner`],[1,`raw`],[1,`row`],[1,`btn`,`btn--primary`,3,`click`],[`name`,`shield-check`,3,`size`],[1,`btn`,3,`click`],[1,`diff`],[`role`,`note`,1,`diff-none`],[1,`diff__row`],[1,`diff__path`],[1,`diff__pair`],[1,`diff__before`],[`name`,`chevron-right`,3,`size`],[1,`diff__after`],[1,`actions`],[1,`actions__status`],[1,`verify__row`],[1,`unverified`],[1,`repairable`],[`role`,`alert`,1,`refusal`],[3,`retry`,`error`],[1,`op-receipt__head`],[1,`refusal`],[1,`table`],[`icon`,`tasks`,3,`title`],[`scope`,`col`]],template:function(t,r){if(t&1&&(da(0,`ui-page-header`,0),oC(1,`t`),oC(2,`t`),da(3,`button`,1),Ta(`click`,function(){return r.load()}),ba(4,`ui-icon`,2),WS(5),oC(6,`t`),yd()(),da(7,`section`,3)(8,`ol`,4),oC(9,`t`),gS(10,pe,8,6,`li`,5,pS),yd()(),da(12,`section`,6)(13,`div`,7)(14,`h2`,8)(15,`span`,9),WS(16,`1`),yd(),WS(17),oC(18,`t`),yd(),uS(19,de,1,1,`ui-state-badge`,10),yd(),uS(20,fe,24,20)(21,ye,1,1,`ui-skeleton`,11),da(22,`h3`,12),WS(23),oC(24,`t`),yd(),uS(25,ge,2,1)(26,be,1,1,`ui-skeleton`,11),yd(),da(27,`div`,13)(28,`section`,3)(29,`h2`)(30,`span`,9),WS(31,`2`),yd(),WS(32),oC(33,`t`),yd(),da(34,`h3`,12),WS(35),oC(36,`t`),yd(),da(37,`div`,14),oC(38,`t`),gS(39,Ce,9,10,`label`,15,N),yd(),da(41,`h3`,12),WS(42),oC(43,`t`),yd(),da(44,`div`,16),gS(45,Ie,4,4,`label`,17,N),yd(),da(47,`h2`)(48,`span`,9),WS(49,`3`),yd(),WS(50),oC(51,`t`),yd(),da(52,`h3`,12),WS(53),oC(54,`t`),yd(),da(55,`p`,18),WS(56),oC(57,`t`),yd(),da(58,`div`,14),oC(59,`t`),gS(60,Se,8,8,`label`,15,N),yd(),da(62,`h3`,12),WS(63),oC(64,`t`),yd(),da(65,`div`,14),oC(66,`t`),gS(67,Ee,9,10,`label`,15,N),yd(),da(69,`h3`,12),WS(70),oC(71,`t`),yd(),da(72,`div`,14),oC(73,`t`),gS(74,Pe,9,10,`label`,15,N),yd()(),da(76,`aside`,19),oC(77,`t`),da(78,`h2`),WS(79),oC(80,`t`),yd(),da(81,`dl`,20)(82,`div`)(83,`dt`),WS(84),oC(85,`t`),yd(),da(86,`dd`),WS(87),oC(88,`t`),yd()(),da(89,`div`)(90,`dt`),WS(91),oC(92,`t`),yd(),da(93,`dd`),WS(94),yd()(),da(95,`div`)(96,`dt`),WS(97),oC(98,`t`),yd(),da(99,`dd`),WS(100),oC(101,`t`),yd()(),da(102,`div`)(103,`dt`),WS(104),oC(105,`t`),yd(),da(106,`dd`),WS(107),oC(108,`t`),yd()(),da(109,`div`)(110,`dt`),WS(111),oC(112,`t`),yd(),da(113,`dd`),uS(114,we,3,0,`span`,21)(115,Be,3,3,`span`,18),yd()()(),da(116,`button`,22),Ta(`click`,function(){return r.plan()}),ba(117,`ui-icon`,23),WS(118),oC(119,`t`),yd(),da(120,`p`,18),WS(121),oC(122,`t`),yd()()(),uS(123,Te,5,3,`section`,24),uS(124,Fe,22,20,`section`,25),uS(125,ze,47,36,`section`,26),uS(126,He,5,3,`section`,24),uS(127,Le,5,3,`section`,24),uS(128,We,10,5,`section`,27),uS(129,tt,20,17,`section`,28),uS(130,it,1,1,`ui-error`,29),da(131,`section`,30)(132,`h2`,31),WS(133),oC(134,`t`),yd(),da(135,`ul`,32)(136,`li`,33)(137,`span`,34)(138,`strong`),WS(139),oC(140,`t`),yd(),da(141,`small`,18),WS(142),oC(143,`t`),yd()(),da(144,`button`,1),Ta(`click`,function(){return r.repair()}),ba(145,`ui-icon`,2),WS(146),oC(147,`t`),yd()(),da(148,`li`,35)(149,`span`,34)(150,`strong`),WS(151),oC(152,`t`),yd(),da(153,`small`,18),WS(154),oC(155,`t`),yd()(),ba(156,`ui-state-badge`,36),yd(),da(157,`li`,33)(158,`span`,34)(159,`strong`),WS(160),oC(161,`t`),yd(),da(162,`small`,18),WS(163),oC(164,`t`),yd()(),da(165,`button`,37),Ta(`click`,function(){return r.uninstall()}),ba(166,`ui-icon`,38),WS(167),oC(168,`t`),yd()()(),uS(169,nt,5,3,`div`,39),uS(170,at,1,1,`ui-error`,29),uS(171,dt,9,7,`div`,40),yd(),da(172,`section`,41)(173,`h2`,42),WS(174),oC(175,`t`),yd(),uS(176,_t,2,1)(177,ft,1,1,`ui-skeleton`,11),yd()),t&2){let m,P,w,I,T,h,M,z,H;Wm(`title`,sC(1,65,`install.title`))(`subtitle`,sC(2,67,`install.subtitle`)),hD(3),Wm(`disabled`,r.busy()),hD(),Wm(`size`,15),hD(),Dd(` `,sC(6,69,`state.refresh`),` `),hD(3),Ar(`aria-label`,sC(9,71,`install.title`)),hD(2),mS(r.stepKeys),hD(7),Dd(``,sC(18,73,`install.step.discover`),` `),hD(2),fS((m=r.store.health())?19:-1,m),hD(),fS((P=r.store.health())?20:21,P),hD(3),Jm(sC(24,75,`install.discover.hosts`)),hD(2),fS((w=r.hostDetections())?25:26,w),hD(7),Jm(sC(33,77,`install.step.select`)),hD(3),Jm(sC(36,79,`install.scope`)),hD(2),Ar(`aria-label`,sC(38,81,`install.scope`)),hD(2),mS(r.scopes),hD(3),Jm(sC(43,83,`install.components`)),hD(3),mS(r.components),hD(5),Jm(sC(51,85,`install.step.configure`)),hD(3),Jm(sC(54,87,`install.hosts`)),hD(3),Jm(sC(57,89,`install.hosts.hint`)),hD(2),Ar(`aria-label`,sC(59,91,`install.hosts`)),hD(2),mS(r.hostChoices),hD(3),Jm(sC(64,93,`install.profile`)),hD(2),Ar(`aria-label`,sC(66,95,`install.profile`)),hD(2),mS(r.profiles),hD(3),Jm(sC(71,97,`install.executionProfile`)),hD(2),Ar(`aria-label`,sC(73,99,`install.executionProfile`)),hD(2),mS(r.executionProfiles),hD(2),Ar(`aria-label`,sC(77,101,`install.summary`)),hD(3),Jm(sC(80,103,`install.summary`)),hD(5),Jm(sC(85,105,`install.summary.scope`)),hD(3),Jm(sC(88,107,r.scopeLabel())),hD(4),Jm(sC(92,109,`install.summary.host`)),hD(3),Jm(r.hostLabel()),hD(3),Jm(sC(98,111,`install.summary.profile`)),hD(3),Jm(sC(101,113,r.profileLabel())),hD(4),Jm(sC(105,115,`install.summary.executionProfile`)),hD(3),Jm(sC(108,117,r.executionProfileLabel())),hD(4),Jm(sC(112,119,`install.summary.components`)),hD(3),fS(r.selected().size?114:115),hD(2),Wm(`disabled`,r.locked()||r.busy()||!r.selected().size),hD(),Wm(`size`,15),hD(),Dd(` `,sC(119,121,`install.plan`),` `),hD(3),Jm(sC(122,123,`install.flow.hint`)),hD(2),fS(r.phase()===`planning`?123:-1),hD(),fS((I=r.phase()===`review`&&r.planReceipt())?124:-1,I),hD(),fS((T=r.phase()===`confirming`&&r.planReceipt())?125:-1,T),hD(),fS(r.phase()===`executing`?126:-1),hD(),fS(r.phase()===`verifying`?127:-1),hD(),fS(r.phase()===`receipt`&&r.result()&&!r.result().refusal?128:-1),hD(),fS((h=(r.phase()===`receipt`||r.phase()===`refused`)&&r.result())?129:-1,h),hD(),fS(r.phase()===`error`?130:-1),hD(3),Jm(sC(134,125,`install.ops.title`)),hD(6),Jm(sC(140,127,`install.repair`)),hD(3),Jm(sC(143,129,`install.ops.repair.hint`)),hD(2),Wm(`disabled`,r.busy()),hD(),Wm(`size`,15),hD(),Dd(` `,sC(147,131,`install.repair`),` `),hD(5),Jm(sC(152,133,`install.ops.update`)),hD(3),Jm(sC(155,135,`install.ops.update.hint`)),hD(6),Jm(sC(161,137,`install.uninstall`)),hD(3),Jm(sC(164,139,`install.uninstall.confirm`)),hD(2),Wm(`disabled`,r.busy()),hD(),Wm(`size`,15),hD(),Dd(` `,sC(168,141,`install.uninstall`),` `),hD(2),fS(r.opBusy()?169:-1),hD(),fS((M=r.opError())?170:-1,M),hD(),fS((z=r.opReceipt())?171:-1,z),hD(3),Jm(sC(175,143,`tasks.recent`)),hD(2),fS((H=r.history())?176:177,H)}},dependencies:[T,I,D,_,cE,k$1,aE],styles:[`.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.card[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:var(--%NS%space-3) 0;font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em;display:flex;align-items:center;gap:var(--%NS%space-2)}.card[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]:first-child{margin-top:0}.card__heading[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:var(--%NS%space-3)}.card__heading[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-2)}.subhead[_ngcontent-%COMP%]{margin:var(--%NS%space-4) 0 var(--%NS%space-2);font-size:var(--%NS%font-sm);font-weight:650;color:var(--%NS%fg-muted)}.checks[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3)}.summary[_ngcontent-%COMP%]{position:sticky;top:calc(var(--%NS%topbar-h) + var(--%NS%space-4))}.running[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3)}.actions[_ngcontent-%COMP%]{font-family:var(--%NS%font-mono);font-size:var(--%NS%font-sm);max-height:240px;overflow:auto}.actions[_ngcontent-%COMP%] li[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);flex:none}.actions__status[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)!important}.repairable[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);font-size:var(--%NS%font-xs);font-weight:650}.row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2);margin-top:var(--%NS%space-4)}@media(max-width:880px){.summary[_ngcontent-%COMP%]{position:static}}`]})};function ie(e){return e==null?null:typeof e==`object`?JSON.stringify(e):String(e)}export{te as InstallPage}; \ No newline at end of file diff --git a/portal/assets/chunk-CiuPOfJ0.js b/portal/assets/chunk-CiuPOfJ0.js deleted file mode 100644 index e49c526..0000000 --- a/portal/assets/chunk-CiuPOfJ0.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as da,A as TS,At as rn,Et as p,F as Wm,Gt as wS,Lt as tn,M as Ta,Mt as sC,N as Uh,P as WS,Q as cE,Tt as oC,X as bS,Xt as yd,Yt as yc,Z as ba,a as AU,c as CS,d as Ec,h as Jm,ht as jh,it as ei,l as Dd,ot as fS,q as aE,ut as hD,zt as uS}from"./chunk-BelLryvf.js";var k={"PORTAL-UNREACHABLE":{explainKey:`err.explain.unreachable`},"PORTAL-SESSION":{explainKey:`err.explain.session`},"PORTAL-TIMEOUT":{explainKey:`err.explain.timeout`,route:`/tasks`,routeKey:`ops.alert.goTasks`},"PORTAL-RATE-LIMITED":{explainKey:`err.explain.rateLimited`},"PORTAL-PAYLOAD-TOO-LARGE":{explainKey:`err.explain.payload`},"PORTAL-CLI-UNAVAILABLE":{explainKey:`err.explain.cli`,route:`/install`,routeKey:`ops.alert.goInstall`},"PORTAL-UNSUPPORTED":{explainKey:`err.explain.unsupported`,route:`/dashboard`,routeKey:`err.go.dashboard`},"PORTAL-HOST-ABSENT":{explainKey:`err.explain.hostAbsent`,route:`/hosts`,routeKey:`ops.alert.goHosts`},"PORTAL-FORGE":{explainKey:`err.explain.forge`,route:`/federation`,routeKey:`ops.alert.goFederation`},"PORTAL-NOT-FOUND":{explainKey:`err.explain.notFound`,route:`/dashboard`,routeKey:`err.go.dashboard`},"PORTAL-INTERNAL":{explainKey:`err.explain.internal`,route:`/observe`,routeKey:`err.go.observe`},"PORTAL-CONFIRM":{explainKey:`err.explain.confirm`},"HTTP-403":{explainKey:`err.explain.forbidden`},"HTTP-404":{explainKey:`err.explain.notFound`,route:`/dashboard`,routeKey:`err.go.dashboard`},"HTTP-500":{explainKey:`err.explain.internal`,route:`/observe`,routeKey:`err.go.observe`},"HTTP-503":{explainKey:`err.explain.unavailable`}};var w=[[`PORTAL-PLAN-`,{explainKey:`err.explain.plan`}],[`PORTAL-SECRET-`,{explainKey:`err.explain.secret`,route:`/config`,routeKey:`ops.alert.goConfig`}]];var F=new Set([`PORTAL-BAD-JSON`,`PORTAL-CONTENT-TYPE`,`PORTAL-ORIGIN`,`PORTAL-MISSING-FIELD`,`PORTAL-ACTION`]);function M(r){if(!r)return null;let t=r.body.code,e=k[t];if(e)return e;for(let[i,c]of w)if(t.startsWith(i))return c;return F.has(t)?{explainKey:`err.explain.request`}:null}var B=[`*`];function G(r,t){if(r&1&&(da(0,`code`,3),WS(1),yd()),r&2){let e=bS();hD(),Jm(e.error().body.code)}}function H(r,t){if(r&1&&(da(0,`a`,8),WS(1),oC(2,`t`),ba(3,`ui-icon`,9),yd()),r&2){let e=bS();Wm(`routerLink`,e.route),hD(),Jm(sC(2,3,e.routeKey)),hD(2),Wm(`size`,13)}}function U(r,t){if(r&1&&(da(0,`p`,4),WS(1),oC(2,`t`),uS(3,H,4,5,`a`,8),yd()),r&2){let e=t;hD(),Dd(` `,sC(2,2,e.explainKey),` `),hD(2),fS(e.route&&e.routeKey?3:-1)}}function z(r,t){r&1&&(da(0,`p`,5),WS(1),yd()),r&2&&(hD(),Jm(t))}function V(r,t){if(r&1){let e=wS();da(0,`button`,10),Ta(`click`,function(){jh(e);let c=bS();return Uh(c.retry.emit())}),WS(1),oC(2,`t`),yd()}r&2&&(hD(),Jm(sC(2,1,`error.retry`)))}var D=class r{i18n=p(Ec);error=rn(null);retry=AU();guidance=tn(()=>M(this.error()));message=tn(()=>{let t=this.error();if(!t)return this.i18n.t(`error.generic`);let e=t.body.message_key;if(e){let i=this.i18n.t(e);if(!i.startsWith(`⟪`))return i}return t.body.message||this.i18n.t(`error.generic`)});static ɵfac=function(e){return new(e||r)};static ɵcmp=ei({type:r,selectors:[[`ui-error`]],inputs:{error:[1,`error`]},outputs:{retry:`retry`},ngContentSelectors:B,decls:12,vars:8,consts:[[`role`,`alert`,1,`err`],[1,`err__title`],[1,`err__msg`],[1,`err__code`],[1,`err__hint`],[1,`err__action`],[1,`err__actions`],[1,`btn`],[1,`err__go`,3,`routerLink`],[`name`,`chevron-right`,3,`size`],[1,`btn`,3,`click`]],template:function(e,i){if(e&1&&(CS(),da(0,`div`,0)(1,`p`,1),WS(2),oC(3,`t`),yd(),da(4,`p`,2),WS(5),yd(),uS(6,G,2,1,`code`,3),uS(7,U,4,4,`p`,4),uS(8,z,2,1,`p`,5),da(9,`div`,6),uS(10,V,3,3,`button`,7),TS(11),yd()()),e&2){let c,_;hD(2),Jm(sC(3,6,`error.title`)),hD(3),Jm(i.message()),hD(),fS(i.error()?.body?.code?6:-1),hD(),fS((c=i.guidance())?7:-1,c),hD(),fS((_=i.error()?.body?.action)?8:-1,_),hD(2),fS(i.error()?.body?.retryable!==!1?10:-1)}},dependencies:[yc,cE,aE],styles:[`.err[_ngcontent-%COMP%]{display:grid;gap:8px;padding:var(--%NS%space-6);border:1px solid color-mix(in srgb,var(--%NS%error) 55%,transparent);border-left-width:3px;border-radius:var(--%NS%radius-lg);background:var(--%NS%error-bg);box-shadow:var(--%NS%elev-card)}.err__title[_ngcontent-%COMP%]{font-weight:700;color:var(--%NS%error);margin:0}.err__msg[_ngcontent-%COMP%]{margin:0;color:var(--%NS%fg)}.err__code[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.err__hint[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted)}.err__go[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;min-height:24px;font-weight:600;text-decoration:none;white-space:nowrap}.err__go[_ngcontent-%COMP%]:hover{color:var(--%NS%accent-ink)}.err__action[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-sm);font-weight:550;color:var(--%NS%accent-ink)}.err__actions[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-2)}`]})};export{D as t}; \ No newline at end of file diff --git a/portal/assets/chunk-CygOa7EH.js b/portal/assets/chunk-CygOa7EH.js new file mode 100644 index 0000000..757bc05 --- /dev/null +++ b/portal/assets/chunk-CygOa7EH.js @@ -0,0 +1 @@ +import{At as qm,F as Sa,J as aC,Jt as vd,Q as cE,Qt as yS,Y as aE,Z as bd,at as ey,ct as hD,et as da,i as Ar,it as ei,kt as qS,qt as vc,vt as lC,yt as mS}from"./chunk-BefGrJ9d.js";import{t as T}from"./chunk-BGgpmc9t.js";var S=(i,n)=>n.id;var x=(i,n)=>n.route;function N(i,n){if(i&1&&(da(0,`a`,3),Sa(1,`ui-icon`,5),qS(2),aC(3,`t`),vd()),i&2){let e=n.$implicit;qm(`routerLink`,`/guide`)(`fragment`,e.id),hD(),qm(`name`,e.icon)(`size`,14),hD(),bd(` `,lC(3,5,e.titleKey),` `)}}function P(i,n){if(i&1&&(da(0,`a`,8),qS(1),aC(2,`t`),Sa(3,`ui-icon`,9),vd()),i&2){let e=n.$implicit;qm(`routerLink`,e.route),hD(),bd(` `,lC(2,3,e.labelKey),` `),hD(2),qm(`size`,13)}}function C(i,n){if(i&1&&(da(0,`section`,4)(1,`h2`),Sa(2,`ui-icon`,5),qS(3),aC(4,`t`),vd(),da(5,`p`,6),qS(6),aC(7,`t`),vd(),da(8,`p`,7),mS(9,P,4,5,`a`,8,x),vd()()),i&2){let e=n.$implicit;qm(`id`,e.id),hD(2),qm(`name`,e.icon)(`size`,17),hD(),bd(` `,lC(4,5,e.titleKey),` `),hD(3),ey(lC(7,7,e.bodyKey)),hD(3),yS(e.links)}}var M=[{id:`start`,icon:`dashboard`,titleKey:`guide.start.title`,bodyKey:`guide.start.body`,links:[{route:`/dashboard`,labelKey:`nav.dashboard`}]},{id:`forge`,icon:`gem`,titleKey:`guide.forge.title`,bodyKey:`guide.forge.body`,links:[{route:`/forges`,labelKey:`nav.forges`},{route:`/federation`,labelKey:`nav.federation`}]},{id:`agent`,icon:`agents`,titleKey:`guide.agent.title`,bodyKey:`guide.agent.body`,links:[{route:`/agents`,labelKey:`nav.agents`},{route:`/match`,labelKey:`nav.match`}]},{id:`skill`,icon:`skills`,titleKey:`guide.skill.title`,bodyKey:`guide.skill.body`,links:[{route:`/skills`,labelKey:`nav.skills`}]},{id:`mcp`,icon:`mcp`,titleKey:`guide.mcp.title`,bodyKey:`guide.mcp.body`,links:[{route:`/mcp`,labelKey:`nav.mcp`},{route:`/hosts`,labelKey:`nav.hosts`}]},{id:`graph`,icon:`graph`,titleKey:`guide.graph.title`,bodyKey:`guide.graph.body`,links:[{route:`/graph`,labelKey:`nav.graph`},{route:`/knowledge`,labelKey:`nav.knowledge`}]},{id:`install`,icon:`install`,titleKey:`guide.install.title`,bodyKey:`guide.install.body`,links:[{route:`/install`,labelKey:`nav.install`},{route:`/profiles`,labelKey:`nav.profiles`}]},{id:`diagnose`,icon:`pulse`,titleKey:`guide.diagnose.title`,bodyKey:`guide.diagnose.body`,links:[{route:`/tasks`,labelKey:`nav.tasks`},{route:`/observe`,labelKey:`nav.observe`}]},{id:`evidence`,icon:`execution`,titleKey:`guide.evidence.title`,bodyKey:`guide.evidence.body`,links:[{route:`/execution`,labelKey:`nav.execution`},{route:`/tasks`,labelKey:`nav.tasks`}]}];var h=class i{sections=M;static ɵfac=function(e){return new(e||i)};static ɵcmp=ei({type:i,selectors:[[`page-guide`]],decls:12,vars:12,consts:[[3,`title`,`subtitle`],[1,`intro`],[1,`toc`],[1,`toc__item`,3,`routerLink`,`fragment`],[1,`card`,`gsec`,3,`id`],[3,`name`,`size`],[1,`gsec__body`],[1,`gsec__links`],[1,`gsec__link`,3,`routerLink`],[`name`,`chevron-right`,3,`size`]],template:function(e,m){e&1&&(Sa(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),da(3,`p`,1),qS(4),aC(5,`t`),vd(),da(6,`nav`,2),aC(7,`t`),mS(8,N,4,7,`a`,3,S),vd(),mS(10,C,11,9,`section`,4,S)),e&2&&(qm(`title`,lC(1,4,`guide.title`))(`subtitle`,lC(2,6,`guide.subtitle`)),hD(4),ey(lC(5,8,`guide.intro`)),hD(2),Ar(`aria-label`,lC(7,10,`guide.toc`)),hD(2),yS(m.sections),hD(2),yS(m.sections))},dependencies:[vc,T,cE,aE],styles:[`.intro[_ngcontent-%COMP%]{max-width:70ch;color:var(--%NS%fg-muted);margin:0 0 var(--%NS%space-4)}.toc[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-5)}.toc__item[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;min-height:24px;padding:2px var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-pill);background:var(--%NS%bg-elevated);color:var(--%NS%fg);font-size:var(--%NS%font-sm);font-weight:550;text-decoration:none;transition:border-color var(--%NS%motion-fast),background var(--%NS%motion-fast)}.toc__item[_ngcontent-%COMP%]:hover{border-color:var(--%NS%accent-ink);background:var(--%NS%accent-bg);color:var(--%NS%accent-ink)}.gsec[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);max-width:72ch;scroll-margin-top:calc(var(--%NS%topbar-h) + var(--%NS%space-3))}.gsec[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em}.gsec[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.gsec__body[_ngcontent-%COMP%]{margin:0;color:var(--%NS%fg-muted);line-height:1.6}.gsec__links[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2) var(--%NS%space-4);margin:var(--%NS%space-3) 0 0}.gsec__link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;min-height:24px;font-size:var(--%NS%font-sm);font-weight:600;text-decoration:none}.gsec__link[_ngcontent-%COMP%]:hover{color:var(--%NS%accent-ink)}`]})};export{h as GuidePage}; \ No newline at end of file diff --git a/portal/assets/chunk-D2-KpBLI.js b/portal/assets/chunk-D2-KpBLI.js deleted file mode 100644 index 994ec05..0000000 --- a/portal/assets/chunk-D2-KpBLI.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as da,F as Wm,Mt as sC,P as WS,Q as cE,Tt as oC,Xt as yd,Yt as yc,Z as ba,ct as gS,h as Jm,it as ei,l as Dd,o as Ar,q as aE,ut as hD,yt as mS}from"./chunk-BelLryvf.js";import{t as T}from"./chunk-BBusSOqc.js";var S=(i,n)=>n.id;var x=(i,n)=>n.route;function N(i,n){if(i&1&&(da(0,`a`,3),ba(1,`ui-icon`,5),WS(2),oC(3,`t`),yd()),i&2){let e=n.$implicit;Wm(`routerLink`,`/guide`)(`fragment`,e.id),hD(),Wm(`name`,e.icon)(`size`,14),hD(),Dd(` `,sC(3,5,e.titleKey),` `)}}function P(i,n){if(i&1&&(da(0,`a`,8),WS(1),oC(2,`t`),ba(3,`ui-icon`,9),yd()),i&2){let e=n.$implicit;Wm(`routerLink`,e.route),hD(),Dd(` `,sC(2,3,e.labelKey),` `),hD(2),Wm(`size`,13)}}function C(i,n){if(i&1&&(da(0,`section`,4)(1,`h2`),ba(2,`ui-icon`,5),WS(3),oC(4,`t`),yd(),da(5,`p`,6),WS(6),oC(7,`t`),yd(),da(8,`p`,7),gS(9,P,4,5,`a`,8,x),yd()()),i&2){let e=n.$implicit;Wm(`id`,e.id),hD(2),Wm(`name`,e.icon)(`size`,17),hD(),Dd(` `,sC(4,5,e.titleKey),` `),hD(3),Jm(sC(7,7,e.bodyKey)),hD(3),mS(e.links)}}var M=[{id:`start`,icon:`dashboard`,titleKey:`guide.start.title`,bodyKey:`guide.start.body`,links:[{route:`/dashboard`,labelKey:`nav.dashboard`}]},{id:`forge`,icon:`gem`,titleKey:`guide.forge.title`,bodyKey:`guide.forge.body`,links:[{route:`/forges`,labelKey:`nav.forges`},{route:`/federation`,labelKey:`nav.federation`}]},{id:`agent`,icon:`agents`,titleKey:`guide.agent.title`,bodyKey:`guide.agent.body`,links:[{route:`/agents`,labelKey:`nav.agents`},{route:`/match`,labelKey:`nav.match`}]},{id:`skill`,icon:`skills`,titleKey:`guide.skill.title`,bodyKey:`guide.skill.body`,links:[{route:`/skills`,labelKey:`nav.skills`}]},{id:`mcp`,icon:`mcp`,titleKey:`guide.mcp.title`,bodyKey:`guide.mcp.body`,links:[{route:`/mcp`,labelKey:`nav.mcp`},{route:`/hosts`,labelKey:`nav.hosts`}]},{id:`graph`,icon:`graph`,titleKey:`guide.graph.title`,bodyKey:`guide.graph.body`,links:[{route:`/graph`,labelKey:`nav.graph`},{route:`/knowledge`,labelKey:`nav.knowledge`}]},{id:`install`,icon:`install`,titleKey:`guide.install.title`,bodyKey:`guide.install.body`,links:[{route:`/install`,labelKey:`nav.install`},{route:`/profiles`,labelKey:`nav.profiles`}]},{id:`diagnose`,icon:`pulse`,titleKey:`guide.diagnose.title`,bodyKey:`guide.diagnose.body`,links:[{route:`/tasks`,labelKey:`nav.tasks`},{route:`/observe`,labelKey:`nav.observe`}]},{id:`evidence`,icon:`execution`,titleKey:`guide.evidence.title`,bodyKey:`guide.evidence.body`,links:[{route:`/execution`,labelKey:`nav.execution`},{route:`/tasks`,labelKey:`nav.tasks`}]}];var h=class i{sections=M;static ɵfac=function(e){return new(e||i)};static ɵcmp=ei({type:i,selectors:[[`page-guide`]],decls:12,vars:12,consts:[[3,`title`,`subtitle`],[1,`intro`],[1,`toc`],[1,`toc__item`,3,`routerLink`,`fragment`],[1,`card`,`gsec`,3,`id`],[3,`name`,`size`],[1,`gsec__body`],[1,`gsec__links`],[1,`gsec__link`,3,`routerLink`],[`name`,`chevron-right`,3,`size`]],template:function(e,m){e&1&&(ba(0,`ui-page-header`,0),oC(1,`t`),oC(2,`t`),da(3,`p`,1),WS(4),oC(5,`t`),yd(),da(6,`nav`,2),oC(7,`t`),gS(8,N,4,7,`a`,3,S),yd(),gS(10,C,11,9,`section`,4,S)),e&2&&(Wm(`title`,sC(1,4,`guide.title`))(`subtitle`,sC(2,6,`guide.subtitle`)),hD(4),Jm(sC(5,8,`guide.intro`)),hD(2),Ar(`aria-label`,sC(7,10,`guide.toc`)),hD(2),mS(m.sections),hD(2),mS(m.sections))},dependencies:[yc,T,cE,aE],styles:[`.intro[_ngcontent-%COMP%]{max-width:70ch;color:var(--%NS%fg-muted);margin:0 0 var(--%NS%space-4)}.toc[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-5)}.toc__item[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;min-height:24px;padding:2px var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-pill);background:var(--%NS%bg-elevated);color:var(--%NS%fg);font-size:var(--%NS%font-sm);font-weight:550;text-decoration:none;transition:border-color var(--%NS%motion-fast),background var(--%NS%motion-fast)}.toc__item[_ngcontent-%COMP%]:hover{border-color:var(--%NS%accent-ink);background:var(--%NS%accent-bg);color:var(--%NS%accent-ink)}.gsec[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);max-width:72ch;scroll-margin-top:calc(var(--%NS%topbar-h) + var(--%NS%space-3))}.gsec[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em}.gsec[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.gsec__body[_ngcontent-%COMP%]{margin:0;color:var(--%NS%fg-muted);line-height:1.6}.gsec__links[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2) var(--%NS%space-4);margin:var(--%NS%space-3) 0 0}.gsec__link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;min-height:24px;font-size:var(--%NS%font-sm);font-weight:600;text-decoration:none}.gsec__link[_ngcontent-%COMP%]:hover{color:var(--%NS%accent-ink)}`]})};export{h as GuidePage}; \ No newline at end of file diff --git a/portal/assets/chunk-D34eMkm4.js b/portal/assets/chunk-D34eMkm4.js deleted file mode 100644 index 4d4644c..0000000 --- a/portal/assets/chunk-D34eMkm4.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as da,A as TS,At as rn,Et as p,F as Wm,Lt as tn,M as Ta,Q as cE,Xt as yd,Z as ba,c as CS,d as Ec,it as ei,o as Ar,ut as hD,x as OU}from"./chunk-BelLryvf.js";var C=[`*`];var h=class l{i18n=p(Ec);placeholder=rn(``);query=OU(``);label=tn(()=>{let e=this.placeholder();if(!e)return``;let t=this.i18n.t(e);return t.startsWith(`⟪`)?e:t});onQuery(e){this.query.set(e.target.value)}static ɵfac=function(t){return new(t||l)};static ɵcmp=ei({type:l,selectors:[[`ui-filter-bar`]],inputs:{placeholder:[1,`placeholder`],query:[1,`query`]},outputs:{query:`queryChange`},ngContentSelectors:C,decls:6,vars:4,consts:[[1,`fb`],[1,`fb__search`],[`name`,`search`,3,`size`],[`type`,`search`,1,`input`,`fb__input`,3,`input`,`value`,`placeholder`],[1,`fb__chips`]],template:function(t,n){t&1&&(CS(),da(0,`div`,0)(1,`div`,1),ba(2,`ui-icon`,2),da(3,`input`,3),Ta(`input`,function(M){return n.onQuery(M)}),yd()(),da(4,`div`,4),TS(5),yd()()),t&2&&(hD(2),Wm(`size`,15),hD(),Wm(`value`,n.query())(`placeholder`,n.label()),Ar(`aria-label`,n.label()||null))},dependencies:[cE],styles:[`.fb[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-4)}.fb__search[_ngcontent-%COMP%]{position:relative;max-width:360px}.fb__search[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{position:absolute;left:10px;top:50%;translate:0 -50%;color:var(--%NS%fg-muted);pointer-events:none}.fb__input[_ngcontent-%COMP%]{padding-left:32px}.fb__chips[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2)}.fb__chips[_ngcontent-%COMP%]:empty{display:none}`]})};export{h as t}; \ No newline at end of file diff --git a/portal/assets/chunk-D4lhtoQa.js b/portal/assets/chunk-D4lhtoQa.js new file mode 100644 index 0000000..0df0030 --- /dev/null +++ b/portal/assets/chunk-D4lhtoQa.js @@ -0,0 +1 @@ +import{i as m,r as l}from"./chunk-BYYLUO5t.js";import{$ as dS,At as qm,Bt as tn,Ct as oC,D as Oo,Dt as pS,E as Na,Et as p,F as Sa,Ft as ry,Ht as ty,J as aC,Jt as vd,P as SS,Q as cE,Qt as yS,S as Ma,Tt as oy,Ut as uC,W as YS,Y as aE,Yt as ve,Z as bd,at as ey,b as LU,ct as hD,et as da,f as Fg,gt as k,i as Ar,it as ei$1,jt as rC,kt as qS,lt as hE,ot as gS,p as Hh,qt as vc,s as DS,ut as hS,vt as lC,w as NS,xt as nC,y as Km,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{r as g,t as g$1}from"./main-XW2ZMSO5.js";import{a as l$1,n as c,s as y}from"./chunk-BNDlNg-C.js";import{t as _}from"./chunk-16deWS0U.js";import{t as D$1}from"./chunk-Bg2lccQE.js";import{n as k$1,t as I}from"./chunk-DQtX_-dj.js";import{t as T}from"./chunk-BGgpmc9t.js";import{a as m$1,c as x,l as e,n as F,o as p$1}from"./chunk-CCHwcZ3Q.js";import{t as h}from"./chunk-DQJAW8AL.js";import{a as T$1,n as G,r as H}from"./chunk-pVzsnrcB.js";import{t as r}from"./chunk-DuZy_X7l.js";import{i as b,n as G$1,o as v}from"./chunk-C0nXO1-7.js";var qe=new WeakMap;function Y(i){let t=qe.get(i);if(t)return t;let e=new Map,a=new Map,o=new Map;for(let g of i.nodes)e.set(g.id,[]),a.set(g.id,[]),o.set(g.id,0);for(let g of i.edges)e.get(g.source)?.push(g),a.get(g.target)?.push(g),o.set(g.source,(o.get(g.source)??0)+1),o.set(g.target,(o.get(g.target)??0)+1);let s={out:e,in:a,degree:o};return qe.set(i,s),s}var je=(i,t,e)=>t===`out`?i.out.get(e)??[]:t===`in`?i.in.get(e)??[]:[...i.out.get(e)??[],...i.in.get(e)??[]];var Ke=(i,t,e)=>t===`out`?i.target:t===`in`?i.source:i.source===e?i.target:i.source;function We(i,t,e=`out`,a=1/0){let o=Y(i),s=new Map([[t,0]]),g=new Map,f=[t];for(let S=0;S=a))for(let M of je(o,e,G)){let V=Ke(M,e,G);s.has(V)||(s.set(V,h+1),g.set(M.id,M),f.push(V))}}s.delete(t);return{nodes:[...s.entries()].map(([S,G])=>({id:S,dist:G})).sort((S,G)=>S.dist-G.dist||(S.idS.id[o.id,o.id])),e=o=>{let s=o;for(;t.get(s)!==s;)s=t.get(s);for(;t.get(o)!==o;){let g=t.get(o);t.set(o,s),o=g}return s};for(let o of i.edges){let s=e(o.source),g=e(o.target);s!==g&&t.set(s,g)}let a=new Map;for(let o of i.nodes){let s=e(o.id);(a.get(s)??a.set(s,[]).get(s)).push(o.id)}return[...a.values()].map(o=>o.sort()).sort((o,s)=>s.length-o.length||(o[0]S.id)){if(e.has(N))continue;let S=[{v:N,it:[...t.out.get(N)??[]]}];for(e.set(N,f),a.set(N,f++),s.push(N),o.add(N);S.length;){let G=S[S.length-1],h=G.it.shift();if(!h){if(S.pop(),a.get(G.v)===e.get(G.v)){let V=[],E;do E=s.pop(),o.delete(E),V.push(E);while(E!==G.v);(V.length>1||O.has(V[0]))&&g.push(V.sort())}if(S.length){let V=S[S.length-1].v;a.set(V,Math.min(a.get(V),a.get(G.v)))}continue}let M=h.target;e.has(M)?o.has(M)&&a.set(G.v,Math.min(a.get(G.v),e.get(M))):(e.set(M,f),a.set(M,f++),s.push(M),o.add(M),S.push({v:M,it:[...t.out.get(M)??[]]}))}}return g.sort((N,S)=>N[0]E.idE.id),...o.nodes.map(E=>E.id)]),O=ut(i).find(E=>E.includes(t)),N=Y(i),G=_t(i).filter(E=>E.some(Z=>f.has(Z))),h=new Set(i.nodes.filter(E=>E.unverified).map(E=>E.id)),M=g.filter(E=>i.sources[E.evidence]?.state!==`loaded`||h.has(E.source)||h.has(E.target)),V=Object.keys(i.sources).filter(E=>i.sources[E].state!==`loaded`);return{root:t,depth:e,uses:a.nodes,usedBy:o.nodes,edges:g,componentSize:O?.length??1,cycles:G,orphan:(N.degree.get(t)??0)===0,unverifiedNodes:[...f].filter(E=>h.has(E)).sort(),unverifiedEdges:M,missingSources:V,coverage:{loaded:Object.keys(i.sources).length-V.length,total:Object.keys(i.sources).length}}}var re=`forge-portal/graph-view/v1`;var Je=`forge-portal/GraphView/v1`;var ht=new Set([`cose`,`concentric`,`grid`,`breadthfirst`,`circle`]);var ft=new Set([`forge`,`capability`,`skill`,`agent`,`mcp`,`host`,`operation`]);var yt=new Set([`kind`,`forge`,`host`]);var ae=i=>typeof i==`string`?i:null;var oe=i=>typeof i==`number`&&Number.isFinite(i)?i:null;function vt(i){if(!i||typeof i!=`object`)return null;let t=i;if(t.schema!==Je)return null;let e=t.mode===`list`||t.mode===`canvas`?t.mode:null,a=ht.has(t.layout)?t.layout:null;if(!e||!a)return null;let o=t.viewport,s=o&&typeof o==`object`?(()=>{let f=o,O=oe(f.zoom),N=oe(f.panX),S=oe(f.panY);return O!==null&&N!==null&&S!==null?{zoom:O,panX:N,panY:S}:null})():null,g=yt.has(t.groupBy)?t.groupBy:null;return{schema:Je,mode:e,layout:a,layoutAuto:t.layoutAuto!==!1,query:ae(t.query)??``,kind:ft.has(t.kind)?t.kind:null,selectedNode:ae(t.selectedNode),selectedEdge:ae(t.selectedEdge),viewport:s,groupBy:g,collapsedGroups:Array.isArray(t.collapsedGroups)?t.collapsedGroups.filter(f=>typeof f==`string`):[]}}function Qe(i){if(!i)return null;try{let t=i.getItem(re);return t?vt(JSON.parse(t)):null}catch{return null}}function Xe(i,t){if(!i)return!1;try{return i.setItem(re,JSON.stringify(t)),!0}catch{return!1}}function Ze(i){try{i?.removeItem(re)}catch{}}var de=`forge-portal/graph-snapshot/v1`;var et=`forge-portal/GraphSnapshot/v1`;var tt=i=>l(l({id:i.id,kind:i.kind,label:i.label,unverified:i.unverified,evidence:[...i.evidence]},i.state!==void 0?{state:i.state}:{}),i.origin!==void 0?{origin:i.origin}:{});var it=i=>({id:i.id,source:i.source,target:i.target,kind:i.kind,evidence:i.evidence});function nt(i,t){return{schema:et,capturedAt:t,nodes:i.nodes.map(tt),edges:i.edges.map(it)}}var xt=(i,t)=>i.kind===t.kind&&i.label===t.label&&i.unverified===t.unverified&&i.state===t.state&&i.origin===t.origin&&i.evidence.join(`,`)===t.evidence.join(`,`);var Ct=(i,t)=>i.kind===t.kind&&i.evidence===t.evidence;function le(i,t){let e=new Map(t.nodes.map(h=>[h.id,tt(h)])),a=new Map(t.edges.map(h=>[h.id,it(h)])),o=new Map(i.nodes.map(h=>[h.id,h])),s=new Map(i.edges.map(h=>[h.id,h])),g=[...e.values()].filter(h=>!o.has(h.id)),f=[...o.values()].filter(h=>!e.has(h.id)),O=[...e.values()].filter(h=>o.has(h.id)&&!xt(o.get(h.id),h)).map(h=>({id:h.id,before:o.get(h.id),after:h})),N=[...a.values()].filter(h=>!s.has(h.id)),S=[...s.values()].filter(h=>!a.has(h.id)),G=[...a.values()].filter(h=>s.has(h.id)&&!Ct(s.get(h.id),h)).map(h=>({id:h.id,before:s.get(h.id),after:h}));return{snapshot:i.capturedAt,addedNodes:g,removedNodes:f,changedNodes:O,addedEdges:N,removedEdges:S,changedEdges:G,unchanged:!g.length&&!f.length&&!O.length&&!N.length&&!S.length&&!G.length}}function at(i){let t=new Map;for(let a of i.addedNodes)t.set(a.id,`added`);for(let a of i.changedNodes)t.set(a.id,`changed`);let e=new Map;for(let a of i.addedEdges)e.set(a.id,`added`);for(let a of i.changedEdges)e.set(a.id,`changed`);return{nodes:t,edges:e}}function ot(i){if(!i)return null;try{let t=i.getItem(de);if(!t)return null;let e=JSON.parse(t);return e?.schema!==et||!Array.isArray(e.nodes)||!Array.isArray(e.edges)||typeof e.capturedAt!=`string`?null:e}catch{return null}}function rt(i,t){if(!i)return!1;try{return i.setItem(de,JSON.stringify(t)),!0}catch{return!1}}function dt(i){try{i?.removeItem(de)}catch{}}var bt=[`canvasEl`];var X=i=>({count:i});var st=i=>({at:i});var St=()=>[1,2,3];var Et=(i,t)=>({loaded:i,total:t});var Q=i=>({layout:i});var wt=(i,t)=>({done:i,total:t});var pt=(i,t)=>({layout:i,fallback:t});var D=(i,t)=>t.id;var ct=(i,t)=>t[0];function kt(i,t){if(i&1){let e=DS();da(0,`ui-error`,7),Ma(`retry`,function(){Hh(e);let o=SS();return Vh(o.load())}),vd()}i&2&&qm(`error`,t)}function Pt(i,t){i&1&&(da(0,`div`,5),aC(1,`t`),Sa(2,`ui-skeleton`,8),vd()),i&2&&(Ar(`aria-label`,lC(1,2,`state.loading`)),hD(2),qm(`lines`,2))}function Gt(i,t){if(i&1&&(da(0,`a`,11),qS(1),aC(2,`t`),Sa(3,`ui-icon`,13),vd()),i&2){let e=SS(2);qm(`href`,e.studio_url,Fg),hD(),bd(` `,lC(2,3,`graph.open`),` `),hD(2),qm(`size`,14)}}function Nt(i,t){if(i&1&&(da(0,`li`)(1,`strong`),Sa(2,`ui-icon`,14),qS(3),vd(),da(4,`span`,15),qS(5),aC(6,`t`),aC(7,`t`),vd()()),i&2){let e=t.$implicit,a=SS(3);hD(2),qm(`size`,14),hD(),ey(a.viewName(e)),hD(2),ty(` `,uC(6,4,`graph.nodes`,rC(10,X,a.viewNodes(e))),` · `,uC(7,7,`graph.edges`,rC(12,X,a.viewEdges(e))),` `)}}function It(i,t){if(i&1&&(da(0,`section`,9),dS(1,Gt,4,5,`a`,11),da(2,`ul`,12),mS(3,Nt,8,14,`li`,null,pS),vd()()),i&2){let e=SS();hD(),hS(e.studio_url?1:-1),hD(2),yS(e.views)}}function Tt(i,t){if(i&1&&(Sa(0,`ui-empty`,10),aC(1,`t`),aC(2,`t`)),i&2){let e=SS();qm(`title`,lC(1,2,`graph.unavailable`))(`hint`,e.availability.unlock??lC(2,4,`graph.buildHint`))}}function Bt(i,t){i&1&&dS(0,It,5,1,`section`,9)(1,Tt,3,6,`ui-empty`,10),i&2&&hS(t.availability.state===`available`?0:1)}function Ft(i,t){if(i&1&&(da(0,`li`)(1,`code`),qS(2),vd(),Sa(3,`ui-state-badge`,35),aC(4,`t`),vd()),i&2){let e=t.$implicit,a=SS(2);Ar(`data-source`,e.id)(`data-state`,e.info.state),hD(2),ey(e.info.endpoint),hD(),qm(`state`,a.sourceBadge(e.info.state))(`labelOverride`,lC(4,5,`graph.source.`+e.info.state))}}function Mt(i,t){if(i&1){let e=DS();da(0,`div`,27)(1,`span`),qS(2),aC(3,`t`),vd(),da(4,`button`,36),Ma(`click`,function(){Hh(e);let o=SS(),s=SS();return Vh(s.toggleDiff(o))}),Sa(5,`ui-icon`,37),qS(6),aC(7,`t`),vd(),da(8,`button`,38),Ma(`click`,function(){Hh(e);let o=SS(2);return Vh(o.dropSnapshot())}),qS(9),aC(10,`t`),vd()()}if(i&2){let e=SS(2);hD(2),ey(uC(3,6,`graph.snap.at`,rC(13,st,e.stampAt(t.capturedAt)))),hD(2),Ar(`data-tone`,e.diff()?`accent`:null)(`aria-pressed`,e.diff()!==null),hD(),qm(`size`,13),hD(),bd(` `,lC(7,9,`graph.snap.compare`),` `),hD(3),bd(` `,lC(10,11,`graph.snap.clear`),` `)}}function Vt(i,t){if(i&1){let e=DS();da(0,`button`,40),Ma(`click`,function(){let o=Hh(e).$implicit,s=SS(3);return Vh(s.toggleKind(o))}),qS(1),vd()}if(i&2){let e=t.$implicit,a=SS(2),o=SS();Ar(`data-tone`,o.kind()===e?`accent`:null)(`aria-pressed`,o.kind()===e)(`data-kind-chip`,e),hD(),ty(` `,e,` · `,a.counts[e],` `)}}function Ot(i,t){if(i&1){let e=DS();da(0,`ui-filter-bar`,39),aC(1,`t`),oy(`queryChange`,function(o){Hh(e);let s=SS(2);return YS(s.query,o)||(s.query=o),Vh(o)}),da(2,`button`,40),Ma(`click`,function(){Hh(e);let o=SS(2);return Vh(o.kind.set(null))}),qS(3),aC(4,`t`),vd(),mS(5,Vt,2,5,`button`,41,gS),vd()}if(i&2){let e=SS(),a=SS();ry(`query`,a.query),qm(`placeholder`,lC(1,6,`graph.fed.search`)),hD(2),Ar(`data-tone`,a.kind()===null?`accent`:null)(`aria-pressed`,a.kind()===null),hD(),ty(` `,lC(4,8,`state.all`),` · `,e.nodes.length,` `),hD(2),yS(a.kindOptions(e))}}function At(i,t){i&1&&(da(0,`p`,15),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`graph.diff.unchanged`)))}function Dt(i,t){if(i&1){let e=DS();da(0,`li`)(1,`button`,47),Ma(`click`,function(){let o=Hh(e).$implicit,s=SS(4);return Vh(s.selectFocus(o.id))}),qS(2),vd(),da(3,`code`,48),qS(4),vd()()}if(i&2){let e=t.$implicit;hD(2),bd(` `,e.label,` `),hD(2),ey(e.id)}}function Lt(i,t){if(i&1&&(da(0,`li`)(1,`code`,48),qS(2),vd(),da(3,`code`,48),qS(4),vd()()),i&2){let e=t.$implicit;hD(2),ey(e.kind),hD(2),ey(e.id)}}function Rt(i,t){i&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`state.none`)))}function $t(i,t){if(i&1&&(da(0,`li`)(1,`code`),qS(2),vd()()),i&2){let e=t.$implicit;hD(2),ey(e.id)}}function zt(i,t){if(i&1&&(da(0,`li`)(1,`code`,48),qS(2),vd()()),i&2){let e=t.$implicit;hD(2),ey(e.id)}}function Ht(i,t){i&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`state.none`)))}function qt(i,t){if(i&1){let e=DS();da(0,`li`)(1,`button`,47),Ma(`click`,function(){let o=Hh(e).$implicit,s=SS(4);return Vh(s.selectFocus(o.id))}),qS(2),vd()()}if(i&2){let e=t.$implicit;hD(2),bd(` `,e.id,` `)}}function jt(i,t){if(i&1&&(da(0,`li`)(1,`code`,48),qS(2),vd()()),i&2){let e=t.$implicit;hD(2),ey(e.id)}}function Kt(i,t){i&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`state.none`)))}function Wt(i,t){if(i&1&&(da(0,`div`,42)(1,`div`)(2,`h3`,43),qS(3),aC(4,`t`),vd(),da(5,`ul`,44),mS(6,Dt,5,2,`li`,null,D),mS(8,Lt,5,2,`li`,null,D),dS(10,Rt,3,3,`li`,15),vd()(),da(11,`div`)(12,`h3`,43),qS(13),aC(14,`t`),vd(),da(15,`ul`,45),mS(16,$t,3,1,`li`,null,D),mS(18,zt,3,1,`li`,null,D),dS(20,Ht,3,3,`li`,15),vd()(),da(21,`div`)(22,`h3`,43),qS(23),aC(24,`t`),vd(),da(25,`ul`,46),mS(26,qt,3,1,`li`,null,D),mS(28,jt,3,1,`li`,null,D),dS(30,Kt,3,3,`li`,15),vd()()()),i&2){let e=SS();hD(3),ey(lC(4,6,`graph.diff.added`)),hD(3),yS(e.addedNodes),hD(2),yS(e.addedEdges),hD(2),hS(!e.addedNodes.length&&!e.addedEdges.length?10:-1),hD(3),ey(lC(14,8,`graph.diff.removed`)),hD(3),yS(e.removedNodes),hD(2),yS(e.removedEdges),hD(2),hS(!e.removedNodes.length&&!e.removedEdges.length?20:-1),hD(3),ey(lC(24,10,`graph.diff.changed`)),hD(3),yS(e.changedNodes),hD(2),yS(e.changedEdges),hD(2),hS(!e.changedNodes.length&&!e.changedEdges.length?30:-1)}}function Ut(i,t){if(i&1&&(da(0,`section`,29)(1,`h2`),Sa(2,`ui-icon`,37),qS(3),aC(4,`t`),vd(),da(5,`p`,15),qS(6),aC(7,`t`),vd(),dS(8,At,3,3,`p`,15)(9,Wt,31,12,`div`,42),vd()),i&2){let e=t,a=SS(2);hD(2),qm(`size`,15),hD(),ey(lC(4,4,`graph.diff.title`)),hD(3),ey(uC(7,6,`graph.snap.at`,rC(9,st,a.stampAt(e.snapshot)))),hD(2),hS(e.unchanged?8:9)}}function Yt(i,t){i&1&&Sa(0,`ui-state-badge`,50)}function Jt(i,t){i&1&&(Sa(0,`ui-state-badge`,51),aC(1,`t`)),i&2&&qm(`labelOverride`,lC(1,1,`graph.fed.failed`))}function Qt(i,t){if(i&1&&(da(0,`a`,53),qS(1),aC(2,`t`),aC(3,`t`),Sa(4,`ui-icon`,55),vd()),i&2){let e=t;qm(`routerLink`,e.commands)(`queryParams`,e.queryParams??null)(`fragment`,e.fragment),hD(),ty(` `,lC(2,6,`entity.openIn`),` `,lC(3,8,e.navKey),` `),hD(3),qm(`size`,13)}}function Xt(i,t){if(i&1&&(da(0,`div`)(1,`dt`),qS(2),aC(3,`t`),vd(),da(4,`dd`)(5,`code`),qS(6),vd()()()),i&2){let e=SS();hD(2),ey(lC(3,2,`graph.fed.state`)),hD(4),ey(e.state)}}function Zt(i,t){if(i&1&&(da(0,`div`)(1,`dt`),qS(2),aC(3,`t`),vd(),da(4,`dd`)(5,`code`),qS(6),vd()()()),i&2){let e=SS();hD(2),ey(lC(3,2,`graph.fed.category`)),hD(4),ey(e.category)}}function ei(i,t){if(i&1){let e=DS();da(0,`div`)(1,`dt`),qS(2),aC(3,`t`),vd(),da(4,`dd`)(5,`button`,47),Ma(`click`,function(){Hh(e);let o=SS(),s=SS(2);return Vh(s.selectFocus(`forge:`+o.origin))}),qS(6),vd()()()}if(i&2){let e=SS();hD(2),ey(lC(3,2,`graph.fed.origin`)),hD(4),bd(` `,e.origin,` `)}}function ti(i,t){if(i&1&&(da(0,`div`)(1,`dt`),qS(2),aC(3,`t`),vd(),da(4,`dd`)(5,`code`),qS(6),vd()()()),i&2){let e=SS();hD(2),ey(lC(3,2,`graph.fed.version`)),hD(4),ey(e.version)}}function ii(i,t){if(i&1&&(da(0,`code`),qS(1),vd()),i&2){let e=t.$implicit,a=SS(3);hD(),ey(a.endpointFor(e))}}function ni(i,t){if(i&1&&(da(0,`div`)(1,`dt`),qS(2),vd(),da(3,`dd`)(4,`code`),qS(5),vd()()()),i&2){let e=t.$implicit;hD(2),ey(e[0]),hD(3),ey(e[1]??`—`)}}function ai(i,t){if(i&1){let e=DS();da(0,`li`)(1,`code`),qS(2),vd(),da(3,`span`,62),qS(4,`→`),vd(),da(5,`button`,47),Ma(`click`,function(){let o=Hh(e).$implicit,s=SS(3);return Vh(s.selectFocus(o.target))}),qS(6),vd(),da(7,`code`,48),qS(8),vd()()}if(i&2){let e=t.$implicit,a=SS(3);hD(2),ey(e.kind),hD(4),bd(` `,a.label(e.target),` `),hD(2),ey(a.endpointFor(e.evidence))}}function oi(i,t){i&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`graph.fed.noRelations`)))}function ri(i,t){if(i&1){let e=DS();da(0,`li`)(1,`button`,47),Ma(`click`,function(){let o=Hh(e).$implicit,s=SS(3);return Vh(s.selectFocus(o.source))}),qS(2),vd(),da(3,`span`,62),qS(4,`→`),vd(),da(5,`code`),qS(6),vd(),da(7,`code`,48),qS(8),vd()()}if(i&2){let e=t.$implicit,a=SS(3);hD(2),bd(` `,a.label(e.source),` `),hD(4),ey(e.kind),hD(2),ey(a.endpointFor(e.evidence))}}function di(i,t){i&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`graph.fed.noRelations`)))}function li(i,t){if(i&1){let e=DS();da(0,`button`,80),Ma(`click`,function(){let o=Hh(e).$implicit,s=SS(4);return Vh(s.impactDepth.set(o))}),qS(1),vd()}if(i&2){let e=t.$implicit,a=SS(4);Ar(`data-depth`,e)(`data-tone`,a.impactDepth()===e?`accent`:null)(`aria-pressed`,a.impactDepth()===e),hD(),bd(` `,e,` `)}}function si(i,t){if(i&1){let e=DS();da(0,`li`)(1,`button`,47),Ma(`click`,function(){let o=Hh(e).$implicit,s=SS(4);return Vh(s.selectFocus(o.id))}),qS(2),vd(),da(3,`code`,48),qS(4),vd()()}if(i&2){let e=t.$implicit,a=SS(4);hD(2),bd(` `,a.label(e.id),` `),hD(2),bd(``,e.dist,`h`)}}function pi(i,t){i&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`graph.fed.noRelations`)))}function ci(i,t){if(i&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),i&2){let e=SS(),a=SS(3);hD(),bd(` `,uC(2,1,`graph.impact.more`,rC(4,X,e.usedBy.length-a.impactCap)),` `)}}function ui(i,t){if(i&1){let e=DS();da(0,`li`)(1,`button`,47),Ma(`click`,function(){let o=Hh(e).$implicit,s=SS(4);return Vh(s.selectFocus(o.id))}),qS(2),vd(),da(3,`code`,48),qS(4),vd()()}if(i&2){let e=t.$implicit,a=SS(4);hD(2),bd(` `,a.label(e.id),` `),hD(2),bd(``,e.dist,`h`)}}function _i(i,t){i&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`graph.fed.noRelations`)))}function gi(i,t){if(i&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),i&2){let e=SS(),a=SS(3);hD(),bd(` `,uC(2,1,`graph.impact.more`,rC(4,X,e.uses.length-a.impactCap)),` `)}}function mi(i,t){i&1&&(Sa(0,`ui-state-badge`,69),aC(1,`t`)),i&2&&qm(`labelOverride`,lC(1,1,`graph.impact.orphan`))}function hi(i,t){if(i&1&&(da(0,`span`,70),qS(1),aC(2,`t`),vd()),i&2){let e=t.$implicit;Ar(`title`,e.join(` → `)),hD(),ty(` `,lC(2,3,`graph.impact.cycle`),`: `,e.length,` `)}}function fi(i,t){if(i&1&&(da(0,`option`,75),qS(1),vd()),i&2){let e=t.$implicit;qm(`value`,e.id),hD(),ey(e.id)}}function yi(i,t){if(i&1){let e=DS();da(0,`li`)(1,`button`,47),Ma(`click`,function(){let o=Hh(e).$implicit,s=SS(6);return Vh(s.selectFocus(o))}),qS(2),vd()()}if(i&2){let e=t.$implicit,a=SS(6);hD(2),bd(` `,a.label(e),` `)}}function vi(i,t){if(i&1&&(da(0,`ol`,81),mS(1,yi,3,1,`li`,null,gS),vd()),i&2){let e=SS();hD(),yS(e.nodes)}}function xi(i,t){i&1&&(da(0,`span`,82),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`graph.impact.noPath`)))}function Ci(i,t){i&1&&dS(0,vi,3,0,`ol`,81)(1,xi,3,3,`span`,82),i&2&&hS(t.nodes?0:1)}function bi(i,t){if(i&1&&(da(0,`code`,48),qS(1),vd()),i&2){let e=t.$implicit,a=SS(4);hD(),ey(a.endpointFor(e))}}function Si(i,t){if(i&1){let e=DS();da(0,`section`,61)(1,`h3`,43),qS(2),aC(3,`t`),da(4,`span`,63),aC(5,`t`),mS(6,li,2,4,`button`,64,gS),vd()(),da(8,`div`,58)(9,`div`)(10,`h4`,65),qS(11),aC(12,`t`),vd(),da(13,`ul`,66),mS(14,si,5,2,`li`,null,D,!1,pi,3,3,`li`,15),dS(17,ci,3,6,`li`,15),vd()(),da(18,`div`)(19,`h4`,65),qS(20),aC(21,`t`),vd(),da(22,`ul`,67),mS(23,ui,5,2,`li`,null,D,!1,_i,3,3,`li`,15),dS(26,gi,3,6,`li`,15),vd()()(),da(27,`p`,68)(28,`span`),qS(29),aC(30,`t`),vd(),dS(31,mi,2,3,`ui-state-badge`,69),mS(32,hi,3,5,`span`,70,ct),vd(),da(34,`div`,71)(35,`label`,72),qS(36),aC(37,`t`),vd(),da(38,`select`,73),Ma(`change`,function(o){Hh(e);let s=SS(3);return Vh(s.onPathTarget(o))}),da(39,`option`,74),qS(40,`—`),vd(),mS(41,fi,2,2,`option`,75,D),vd(),da(43,`span`,63),aC(44,`t`),da(45,`button`,76),Ma(`click`,function(){Hh(e);let o=SS(3);return Vh(o.pathDir.set(`out`))}),qS(46),aC(47,`t`),vd(),da(48,`button`,77),Ma(`click`,function(){Hh(e);let o=SS(3);return Vh(o.pathDir.set(`both`))}),qS(49),aC(50,`t`),vd()(),dS(51,Ci,2,1),vd(),da(52,`p`,78)(53,`span`),qS(54),aC(55,`t`),vd(),da(56,`span`),qS(57),aC(58,`t`),vd(),mS(59,bi,2,1,`code`,48,gS),vd(),da(61,`p`,79),qS(62),aC(63,`t`),vd()()}if(i&2){let e,a=t,o=SS(),s=SS(2);hD(2),bd(` `,lC(3,23,`graph.impact.title`),` `),hD(2),Ar(`aria-label`,lC(5,25,`graph.impact.depth`)),hD(2),yS(nC(48,St)),hD(5),ey(lC(12,27,`graph.impact.usedBy`)),hD(3),yS(a.usedBy.slice(0,s.impactCap)),hD(3),hS(a.usedBy.length>s.impactCap?17:-1),hD(3),ey(lC(21,29,`graph.impact.uses`)),hD(3),yS(a.uses.slice(0,s.impactCap)),hD(3),hS(a.uses.length>s.impactCap?26:-1),hD(3),ty(``,lC(30,31,`graph.impact.component`),`: `,a.componentSize),hD(2),hS(a.orphan?31:-1),hD(),yS(a.cycles),hD(4),ey(lC(37,33,`graph.impact.path`)),hD(2),qm(`value`,s.pathTarget()??``),hD(3),yS(s.pathOptions(o.id)),hD(2),Ar(`aria-label`,lC(44,35,`graph.impact.path`)),hD(2),Ar(`data-tone`,s.pathDir()===`out`?`accent`:null),hD(),bd(` `,lC(47,37,`graph.impact.dirOut`),` `),hD(2),Ar(`data-tone`,s.pathDir()===`both`?`accent`:null),hD(),bd(` `,lC(50,39,`graph.impact.dirBoth`),` `),hD(2),hS((e=s.pathResult())?51:-1,e),hD(3),ty(` `,lC(55,41,`graph.impact.unverified`),`: `,a.unverifiedEdges.length,` `),hD(3),bd(` `,uC(58,43,`graph.impact.coverage`,oC(49,Et,a.coverage.loaded,a.coverage.total)),` `),hD(2),yS(a.missingSources),hD(3),ey(lC(63,46,`graph.impact.topoNote`))}}function Ei(i,t){if(i&1){let e=DS();da(0,`section`,30)(1,`header`,49)(2,`h2`),Sa(3,`ui-icon`,14),qS(4),dS(5,Yt,1,0,`ui-state-badge`,50),dS(6,Jt,2,3,`ui-state-badge`,51),vd(),da(7,`span`,52),dS(8,Qt,5,10,`a`,53),da(9,`button`,54),aC(10,`t`),Ma(`click`,function(){Hh(e);let o=SS(2);return Vh(o.selected.set(null))}),Sa(11,`ui-icon`,55),vd()()(),da(12,`dl`,56)(13,`div`)(14,`dt`),qS(15),aC(16,`t`),vd(),da(17,`dd`)(18,`code`),qS(19),vd()()(),da(20,`div`)(21,`dt`),qS(22),aC(23,`t`),vd(),da(24,`dd`)(25,`code`),qS(26),vd()()(),dS(27,Xt,7,4,`div`),dS(28,Zt,7,4,`div`),dS(29,ei,7,4,`div`),dS(30,ti,7,4,`div`),da(31,`div`)(32,`dt`),qS(33),aC(34,`t`),vd(),da(35,`dd`)(36,`code`),qS(37),vd()()(),da(38,`div`)(39,`dt`),qS(40),aC(41,`t`),vd(),da(42,`dd`),Sa(43,`ui-state-badge`,35),aC(44,`t`),vd()(),da(45,`div`)(46,`dt`),qS(47),aC(48,`t`),vd(),da(49,`dd`,57),mS(50,ii,2,1,`code`,null,gS),vd()(),mS(52,ni,6,2,`div`,null,ct),vd(),da(54,`div`,58)(55,`div`)(56,`h3`,43),qS(57),aC(58,`t`),vd(),da(59,`ul`,59),mS(60,ai,9,3,`li`,null,D,!1,oi,3,3,`li`,15),vd()(),da(63,`div`)(64,`h3`,43),qS(65),aC(66,`t`),vd(),da(67,`ul`,60),mS(68,ri,9,3,`li`,null,D,!1,di,3,3,`li`,15),vd()()(),dS(71,Si,64,52,`section`,61),vd()}if(i&2){let e,a,o=t,s=SS(2);hD(3),qm(`size`,15),hD(),bd(``,o.label,` `),hD(),hS(o.unverified?5:-1),hD(),hS(s.isFailed(o)?6:-1),hD(2),hS((e=s.openLink(o))?8:-1,e),hD(),Ar(`aria-label`,lC(10,26,`state.close`)),hD(2),qm(`size`,14),hD(4),ey(lC(16,28,`table.id`)),hD(4),ey(o.id),hD(3),ey(lC(23,30,`graph.fed.kind`)),hD(4),ey(o.kind),hD(),hS(o.state?27:-1),hD(),hS(o.category?28:-1),hD(),hS(o.origin?29:-1),hD(),hS(o.version?30:-1),hD(3),ey(lC(34,32,`graph.fed.degree`)),hD(4),ey(s.degreeOf(o.id)),hD(3),ey(lC(41,34,`graph.fed.verification`)),hD(3),qm(`state`,o.unverified?`unverified`:`ok`)(`labelOverride`,lC(44,36,o.unverified?`state.unverified`:`graph.fed.observed`)),hD(4),ey(lC(48,38,`skills.evidence`)),hD(3),yS(o.evidence),hD(2),yS(s.metaRows(o)),hD(5),ey(lC(58,40,`graph.fed.relOut`)),hD(3),yS(s.relsOut(o.id)),hD(5),ey(lC(66,42,`graph.fed.relIn`)),hD(3),yS(s.relsIn(o.id)),hD(3),hS((a=s.report())?71:-1,a)}}function wi(i,t){i&1&&(da(0,`div`)(1,`dt`),qS(2),aC(3,`t`),vd(),da(4,`dd`)(5,`code`),qS(6),vd()()()),i&2&&(hD(2),ey(lC(3,2,`graph.edge.observedAt`)),hD(4),ey(t))}function ki(i,t){if(i&1){let e=DS();da(0,`li`)(1,`button`,47),Ma(`click`,function(){let o=Hh(e).$implicit,s=SS(3);return Vh(s.selectEdge(o.id))}),qS(2),vd(),da(3,`code`,48),qS(4),vd()()}if(i&2){let e=t.$implicit;hD(2),bd(` `,e.kind,` `),hD(2),ey(e.id)}}function Pi(i,t){i&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`graph.edge.relatedNone`)))}function Gi(i,t){if(i&1){let e=DS();da(0,`section`,31)(1,`header`,49)(2,`h2`),Sa(3,`ui-icon`,17),qS(4),aC(5,`t`),vd(),da(6,`button`,54),aC(7,`t`),Ma(`click`,function(){Hh(e);let o=SS(2);return Vh(o.selectedEdge.set(null))}),Sa(8,`ui-icon`,55),vd()(),da(9,`dl`,56)(10,`div`)(11,`dt`),qS(12),aC(13,`t`),vd(),da(14,`dd`)(15,`code`),qS(16),vd()()(),da(17,`div`)(18,`dt`),qS(19),aC(20,`t`),vd(),da(21,`dd`)(22,`button`,47),Ma(`click`,function(){let o=Hh(e),s=SS(2);return Vh(s.selectFocus(o.source))}),qS(23),vd(),da(24,`span`,62),qS(25,`→`),vd(),da(26,`button`,47),Ma(`click`,function(){let o=Hh(e),s=SS(2);return Vh(s.selectFocus(o.target))}),qS(27),vd()()(),da(28,`div`)(29,`dt`),qS(30),aC(31,`t`),vd(),da(32,`dd`)(33,`code`,48),qS(34),vd()()(),da(35,`div`)(36,`dt`),qS(37),aC(38,`t`),vd(),da(39,`dd`)(40,`code`,48),qS(41),vd()()(),da(42,`div`)(43,`dt`),qS(44),aC(45,`t`),vd(),da(46,`dd`,57)(47,`code`),qS(48),vd(),Sa(49,`ui-state-badge`,35),aC(50,`t`),vd()(),dS(51,wi,7,4,`div`),vd(),da(52,`h3`,83),qS(53),aC(54,`t`),vd(),da(55,`ul`,84),mS(56,ki,5,2,`li`,null,D,!1,Pi,3,3,`li`,15),vd()()}if(i&2){let e,a=t,o=SS(2);hD(3),qm(`size`,15),hD(),ey(lC(5,20,`graph.edge.title`)),hD(2),Ar(`aria-label`,lC(7,22,`state.close`)),hD(2),qm(`size`,14),hD(4),ey(lC(13,24,`graph.edge.relation`)),hD(4),ey(a.kind),hD(3),ey(lC(20,26,`graph.edge.direction`)),hD(4),bd(` `,o.label(a.source),` `),hD(4),bd(` `,o.label(a.target),` `),hD(3),ey(lC(31,28,`graph.edge.source`)),hD(4),ey(a.source),hD(3),ey(lC(38,30,`graph.edge.target`)),hD(4),ey(a.target),hD(3),ey(lC(45,32,`skills.evidence`)),hD(4),ey(o.endpointFor(a.evidence)),hD(),qm(`state`,o.sourceBadge(o.evidenceState(a.evidence)))(`labelOverride`,lC(50,34,`graph.source.`+o.evidenceState(a.evidence))),hD(2),hS((e=o.evidenceLoadedAt(a.evidence))?51:-1,e),hD(2),ey(lC(54,36,`graph.edge.related`)),hD(3),yS(o.relatedEdges(a))}}function Ni(i,t){if(i&1){let e=DS();da(0,`button`,40),Ma(`click`,function(){let o=Hh(e).$implicit,s=SS(3);return Vh(s.setLayout(o))}),qS(1),vd()}if(i&2){let e=t.$implicit,a=SS(3);Ar(`data-layout`,e)(`data-tone`,!a.layoutAuto()&&a.layoutName()===e?`accent`:null)(`aria-pressed`,!a.layoutAuto()&&a.layoutName()===e),hD(),bd(` `,e,` `)}}function Ii(i,t){if(i&1){let e=DS();da(0,`div`,99)(1,`span`),qS(2),aC(3,`t`),aC(4,`t`),vd(),da(5,`button`,110),Ma(`click`,function(){Hh(e);let o=SS(3);return Vh(o.confirmLayout())}),qS(6),aC(7,`t`),vd(),da(8,`button`,111),Ma(`click`,function(){Hh(e);let o=SS(3);return Vh(o.useRecommended())}),qS(9),aC(10,`t`),vd()()}if(i&2){let e=SS(3);hD(2),ty(` `,uC(3,4,`graph.layout.warn`,rC(15,Q,t)),` `,uC(4,7,`graph.layout.recommended`,rC(17,Q,e.layoutChoice().recommended)),` `),hD(4),bd(` `,lC(7,10,`graph.layout.runAnyway`),` `),hD(3),bd(` `,uC(10,12,`graph.layout.useRecommended`,rC(19,Q,e.layoutChoice().recommended)),` `)}}function Ti(i,t){if(i&1&&(qS(0),aC(1,`t`)),i&2){let e=SS(5);bd(` `,uC(1,1,`graph.layout.rendering`,oC(4,wt,e.layoutStatus()?.done??0,e.layoutStatus()?.total??0)),` `)}}function Bi(i,t){if(i&1){let e=DS();qS(0),aC(1,`t`),da(2,`button`,112),Ma(`click`,function(){Hh(e);let o=SS(5);return Vh(o.cancelLayout())}),qS(3),aC(4,`t`),vd()}if(i&2){let e=SS(5);bd(` `,uC(1,2,`graph.layout.running`,rC(7,Q,e.layoutStatus()?.layout??``)),` `),hD(3),bd(` `,lC(4,5,`state.cancel`),` `)}}function Fi(i,t){if(i&1&&dS(0,Ti,2,7)(1,Bi,5,9),i&2){let e=SS(4);hS(e.layoutStatus()?.type===`progress`?0:1)}}function Mi(i,t){if(i&1&&(qS(0),aC(1,`t`)),i&2){let e=SS(4);bd(` `,uC(1,1,`graph.layout.timeout`,oC(4,pt,e.layoutStatus()?.layout??``,e.layoutStatus()?.fallback??``)),` `)}}function Vi(i,t){if(i&1&&(qS(0),aC(1,`t`)),i&2){let e=SS(4);bd(` `,uC(1,1,`graph.layout.error`,oC(4,pt,e.layoutStatus()?.layout??``,e.layoutStatus()?.fallback??``)),` `)}}function Oi(i,t){i&1&&(qS(0),aC(1,`t`)),i&2&&bd(` `,lC(1,1,`graph.layout.cancelled`),` `)}function Ai(i,t){if(i&1&&(da(0,`p`,100),dS(1,Fi,2,1)(2,Mi,2,7)(3,Vi,2,7)(4,Oi,2,3),vd()),i&2){let e=SS(3);hD(),hS(e.layoutBusy()?1:e.layoutStatus()?.type===`timeout`?2:e.layoutStatus()?.type===`error`?3:e.layoutStatus()?.type===`cancelled`?4:-1)}}function Di(i,t){if(i&1){let e=DS();da(0,`li`)(1,`button`,80),Ma(`click`,function(){let o=Hh(e).$implicit,s=SS(5);return Vh(s.toggleGroup(o.id))}),qS(2),vd()()}if(i&2){let e=t.$implicit,a=SS(5);hD(),Ar(`data-group`,e.id)(`data-tone`,a.collapsed().has(e.id)?`accent`:null)(`aria-pressed`,a.collapsed().has(e.id)),hD(),ty(` `,e.label,` · `,e.members.length,` `)}}function Li(i,t){i&1&&(da(0,`li`,114),qS(1),aC(2,`t`),vd()),i&2&&(hD(),bd(` `,lC(2,1,`graph.group.autoNote`),` `))}function Ri(i,t){if(i&1&&(da(0,`ul`,113),aC(1,`t`),mS(2,Di,3,5,`li`,null,D),dS(4,Li,3,3,`li`,114),vd()),i&2){let e=SS(),a=SS(3);Ar(`aria-label`,lC(1,2,`graph.canvas.group`)),hD(2),yS(e.groups),hD(2),hS(a.autoClustered()?4:-1)}}function $i(i,t){i&1&&dS(0,Ri,5,4,`ul`,113),i&2&&hS(t.groups.length?0:-1)}function zi(i,t){if(i&1&&(da(0,`li`),Sa(1,`span`,115),qS(2),vd()),i&2){let e=t.$implicit,a=SS(3);Ar(`data-kind`,e),hD(),Na(`background`,a.kindColor(e)),Ar(`data-shape`,a.kindShape(e)),hD(),bd(` `,e,` `)}}function Hi(i,t){if(i&1){let e=DS();da(0,`div`,32)(1,`div`,85),aC(2,`t`),da(3,`span`,15),qS(4),aC(5,`t`),vd(),da(6,`button`,86),Ma(`click`,function(){Hh(e);let o=SS(2);return Vh(o.setAutoLayout())}),qS(7),aC(8,`t`),vd(),mS(9,Ni,2,4,`button`,41,gS),Sa(11,`span`,87),da(12,`label`,88),qS(13),aC(14,`t`),vd(),da(15,`select`,89),Ma(`change`,function(o){Hh(e);let s=SS(2);return Vh(s.onGroupBy(o))}),da(16,`option`,74),qS(17),aC(18,`t`),vd(),da(19,`option`,90),qS(20),aC(21,`t`),vd(),da(22,`option`,91),qS(23),aC(24,`t`),vd(),da(25,`option`,92),qS(26),aC(27,`t`),vd()(),da(28,`button`,93),Ma(`click`,function(){Hh(e);let o=SS(2);return Vh(o.resetLayout())}),qS(29),aC(30,`t`),vd(),da(31,`button`,94),Ma(`click`,function(){Hh(e);let o=SS(2);return Vh(o.fitCanvas())}),qS(32),aC(33,`t`),vd(),da(34,`button`,95),Ma(`click`,function(){Hh(e);let o=SS(2);return Vh(o.zoomToSelected())}),qS(35),aC(36,`t`),vd(),da(37,`button`,96),Ma(`click`,function(){Hh(e);let o=SS(2);return Vh(o.exportPng())}),qS(38,` PNG `),vd(),da(39,`button`,97),Ma(`click`,function(){Hh(e);let o=SS(2);return Vh(o.exportSvg())}),qS(40,` SVG `),vd(),da(41,`button`,98),Ma(`click`,function(){Hh(e);let o=SS(2);return Vh(o.resetView())}),qS(42),aC(43,`t`),vd()(),dS(44,Ii,11,21,`div`,99),dS(45,Ai,5,1,`p`,100),dS(46,$i,1,1),Sa(47,`div`,101,0),aC(49,`t`),da(50,`p`,102),qS(51),vd(),da(52,`ul`,103),aC(53,`t`),mS(54,zi,3,5,`li`,null,gS),da(56,`li`,104),Sa(57,`span`,105),qS(58),aC(59,`t`),vd(),da(60,`li`,106),Sa(61,`span`,107),qS(62),aC(63,`t`),vd(),da(64,`li`,108),Sa(65,`span`,109),qS(66),aC(67,`t`),vd()()()}if(i&2){let e,a,o=SS(),s=SS();hD(),Ar(`aria-label`,lC(2,26,`graph.canvas.tools`)),hD(3),ey(lC(5,28,`graph.canvas.layout`)),hD(2),Ar(`data-tone`,s.layoutAuto()?`accent`:null)(`aria-pressed`,s.layoutAuto()),hD(),ty(` `,lC(8,30,`graph.canvas.auto`),` · `,s.effectiveLayout(),` `),hD(2),yS(s.layouts),hD(4),ey(lC(14,32,`graph.canvas.group`)),hD(2),qm(`value`,s.groupBy()??``),hD(2),ey(lC(18,34,`graph.group.none`)),hD(3),ey(lC(21,36,`graph.group.kind`)),hD(3),ey(lC(24,38,`graph.group.forge`)),hD(3),ey(lC(27,40,`graph.group.host`)),hD(3),bd(` `,lC(30,42,`graph.canvas.reset`),` `),hD(3),bd(` `,lC(33,44,`graph.canvas.fit`),` `),hD(2),qm(`disabled`,!s.selected()&&!s.selectedEdge()),hD(),bd(` `,lC(36,46,`graph.canvas.zoomSel`),` `),hD(7),bd(` `,lC(43,48,`graph.view.reset`),` `),hD(2),hS((e=s.pendingLayout())?44:-1,e),hD(),hS(s.layoutBusy()||s.layoutStatus()?45:-1),hD(),hS((a=s.groupSpec())?46:-1,a),hD(),Ar(`aria-label`,lC(49,50,`graph.canvas.aria`)),hD(4),ey(s.hoverLine()),hD(),Ar(`aria-label`,lC(53,52,`graph.canvas.legend`)),hD(2),yS(s.kindOptions(o)),hD(4),bd(``,lC(59,54,`graph.legend.declared`),` `),hD(4),bd(``,lC(63,56,`graph.legend.unverified`),` `),hD(4),bd(``,lC(67,58,`graph.legend.unavailable`),` `)}}function qi(i,t){if(i&1&&(da(0,`span`,118),qS(1),vd()),i&2){let e=SS().$implicit;Ar(`title`,e.state),hD(),ey(e.state)}}function ji(i,t){i&1&&Sa(0,`ui-state-badge`,50)}function Ki(i,t){if(i&1){let e=DS();da(0,`li`)(1,`button`,116),Ma(`click`,function(){let o=Hh(e).$implicit,s=SS(3);return Vh(s.select(o))}),da(2,`span`,18),qS(3),vd(),da(4,`span`,117),qS(5),vd(),dS(6,qi,2,2,`span`,118),da(7,`code`,119),qS(8),vd(),dS(9,ji,1,0,`ui-state-badge`,50),vd()()}if(i&2){let e=t.$implicit,a=SS(3);hD(),Ar(`data-unverified`,e.unverified||null)(`data-failed`,a.isFailed(e)||null)(`data-selected`,a.selected()?.id===e.id||null)(`data-neighbor`,a.isNeighbor(e)||null),hD(2),ey(e.kind),hD(),Ar(`title`,e.label),hD(),ey(e.label),hD(),hS(e.state?6:-1),hD(),Ar(`title`,e.id),hD(),ey(e.id),hD(),hS(e.unverified?9:-1)}}function Wi(i,t){i&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`graph.fed.empty`)))}function Ui(i,t){if(i&1&&(da(0,`ul`,33),mS(1,Ki,10,11,`li`,null,D,!1,Wi,3,3,`li`,15),vd()),i&2){let e=SS(2);hD(),yS(e.filtered())}}function Yi(i,t){i&1&&(Sa(0,`ui-empty`,34),aC(1,`t`)),i&2&&qm(`title`,lC(1,1,`graph.fed.none`))}function Ji(i,t){if(i&1){let e=DS();da(0,`section`,6)(1,`header`,16)(2,`h2`),Sa(3,`ui-icon`,17),qS(4),aC(5,`t`),da(6,`span`,18),qS(7),aC(8,`t`),vd()(),da(9,`div`,19)(10,`div`,20),aC(11,`t`),da(12,`button`,21),Ma(`click`,function(){Hh(e);let o=SS();return Vh(o.setMode(`list`))}),qS(13),aC(14,`t`),vd(),da(15,`button`,22),Ma(`click`,function(){Hh(e);let o=SS();return Vh(o.setMode(`canvas`))}),qS(16),aC(17,`t`),vd()(),da(18,`button`,23),Ma(`click`,function(){Hh(e);let o=SS();return Vh(o.takeSnapshot())}),Sa(19,`ui-icon`,24),qS(20),aC(21,`t`),vd(),da(22,`button`,25),Ma(`click`,function(){Hh(e);let o=SS();return Vh(o.exportGraph())}),Sa(23,`ui-icon`,13),qS(24),aC(25,`t`),vd()()(),da(26,`ul`,26),aC(27,`t`),mS(28,Ft,5,7,`li`,null,D),vd(),da(30,`p`,15),qS(31),aC(32,`t`),vd(),dS(33,Mt,11,15,`div`,27),dS(34,Ot,7,10,`ui-filter-bar`,28),dS(35,Ut,10,11,`section`,29),dS(36,Ei,72,44,`section`,30),dS(37,Gi,59,38,`section`,31),dS(38,Hi,68,60,`div`,32),dS(39,Ui,4,1,`ul`,33),dS(40,Yi,2,3,`ui-empty`,34),vd()}if(i&2){let e,a,o,s,g=t,f=SS();hD(3),qm(`size`,15),hD(),bd(` `,lC(5,26,`graph.fed.title`),` `),hD(3),ey(lC(8,28,`graph.federated`)),hD(3),Ar(`aria-label`,lC(11,30,`graph.view.toggle`)),hD(2),Ar(`data-tone`,f.mode()===`list`?`accent`:null)(`aria-pressed`,f.mode()===`list`),hD(),bd(` `,lC(14,32,`graph.view.list`),` `),hD(2),Ar(`data-tone`,f.mode()===`canvas`?`accent`:null)(`aria-pressed`,f.mode()===`canvas`),hD(),bd(` `,lC(17,34,`graph.view.canvas`),` `),hD(2),qm(`disabled`,!g.nodes.length),hD(),qm(`size`,14),hD(),bd(` `,lC(21,36,`graph.snap.capture`),` `),hD(2),qm(`disabled`,!g.nodes.length),hD(),qm(`size`,14),hD(),bd(` `,lC(25,38,`graph.fed.export`),` `),hD(2),Ar(`aria-label`,lC(27,40,`graph.fed.sources`)),hD(2),yS(f.sourceList(g)),hD(3),ey(lC(32,42,`graph.fed.evidenceNote`)),hD(2),hS((e=f.snap())?33:-1,e),hD(),hS(g.nodes.length?34:-1),hD(),hS((a=f.diff())?35:-1,a),hD(),hS((o=f.selected())?36:-1,o),hD(),hS((s=f.selectedEdge())?37:-1,s),hD(),hS(g.nodes.length&&f.mode()===`canvas`?38:-1),hD(),hS(g.nodes.length&&f.mode()===`list`?39:-1),hD(),hS(g.nodes.length?-1:40)}}var J=i=>i.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().trim();var Qi=400;var Xi=24;var Zi={nodes:0,edges:0,density:0,components:0,largestShare:1};var j=()=>{try{return typeof localStorage<`u`?localStorage:null}catch{return null}};var lt=class i{api=p(g);store=p(g$1);destroyRef=p(ve);bundle=k(null);error=k(null);loading=k(!0);fed=k(null);query=k(``);kind=k(null);selected=k(null);selectedEdge=k(null);mode=k(`list`);layouts=e;layoutAuto=k(!0);layoutName=k(`cose`);layoutStatus=k(null);layoutBusy=k(!1);pendingLayout=k(null);userGroupChoice=!1;userCollapseChoice=!1;canvasEl=LU(`canvasEl`);rendererReady=k(!1);impactDepth=k(2);impactCap=Xi;pathTarget=k(null);pathDir=k(`out`);groupBy=k(null);collapsed=k(new Set);snap=k(ot(j()));diff=k(null);hovered=k(null);vp=k(null);graphsLoadedAt=k(null);renderer=null;persistTimer=null;restored=!1;pendingViewport=null;srcs=[{id:`capabilities`,src:new l$1},{id:`skills`,src:new l$1},{id:`agents`,src:new l$1},{id:`mcp`,src:new l$1},{id:`hosts`,src:new l$1},{id:`tasks`,src:new l$1},{id:`events`,src:new l$1}];nodeById=tn(()=>{let t=new Map;for(let e of this.fed()?.nodes??[])t.set(e.id,e);return t});degreeMap=tn(()=>{let t=new Map;for(let e of this.fed()?.edges??[])t.set(e.source,(t.get(e.source)??0)+1),t.set(e.target,(t.get(e.target)??0)+1);return t});report=tn(()=>{let t=this.selected(),e=this.fed();return!t||!e?null:Ye(e,t.id,this.impactDepth())});pathResult=tn(()=>{let t=this.selected(),e=this.fed(),a=this.pathTarget();return!t||!e||!a?null:Ue(e,t.id,a,this.pathDir())});groupSpec=tn(()=>{let t=this.fed();if(!t)return null;let e=this.groupBy();return e?x(t,e):this.autoClustered()?x(t,`kind`):null});stats=tn(()=>{let t=this.fed();return t?b(t.nodes,t.edges):null});layoutChoice=tn(()=>G$1(this.stats()??Zi,{preferred:this.layoutAuto()?null:this.layoutName(),env:{grouped:this.groupBy()!==null}}));effectiveLayout=tn(()=>this.layoutChoice().layout);autoClustered=tn(()=>this.layoutChoice().cluster&&this.layoutAuto()&&this.groupBy()===null&&!this.userGroupChoice);relatedEdges(t){let e=this.fed();return e?e.edges.filter(a=>a.id!==t.id&&(a.source===t.source&&a.target===t.target||a.source===t.target&&a.target===t.source)):[]}normCache=new WeakMap;filtered=tn(()=>{let t=this.fed();if(!t)return[];let e=J(this.query()),a=this.kind();return t.nodes.filter(o=>{if(a!==null&&o.kind!==a)return!1;if(!e)return!0;let s=this.normCache.get(o);return s||(s={id:J(o.id),label:J(o.label)},this.normCache.set(o,s)),s.id.includes(e)||s.label.includes(e)})});constructor(){Oo(()=>{let t=this.canvasEl()?.nativeElement??null;t&&!this.renderer&&this.mountCanvas(t),!t&&this.renderer&&this.destroyCanvas()}),Oo(()=>{this.rendererReady();let t=this.fed();this.renderer&&t&&(this.renderer.setData(F(t),{layout:this.effectiveLayout()}),this.pendingViewport&&(this.renderer.setViewport(this.pendingViewport),this.pendingViewport=null))}),Oo(()=>{this.rendererReady();let t=this.renderer;if(!t)return;let e=this.selected(),a=this.selectedEdge();t.select(e?.id??a?.id??null);let o=this.pathResult();if(o?.nodes){t.highlight(new Set(o.nodes),new Set(o.edges));return}if(e){let s=this.report();if(s){t.highlight(new Set([e.id,...s.uses.map(g=>g.id),...s.usedBy.map(g=>g.id)]),new Set(s.edges.map(g=>g.id)));return}}t.highlight(new Set,new Set)}),Oo(()=>{this.rendererReady();let t=this.renderer;if(!t)return;let e=J(this.query())!==``||this.kind()!==null;t.dimExcept(e?new Set(this.filtered().map(a=>a.id)):null)}),Oo(()=>{this.rendererReady();let t=this.renderer;if(!t)return;let e=this.groupSpec();t.setGrouping(e?m(l({},e),{collapsed:this.collapsed()}):null)}),Oo(()=>{let t=this.groupSpec();this.autoClustered()&&t&&t.groups.length&&!this.userCollapseChoice&&this.collapsed().size===0&&this.collapsed.set(new Set(t.groups.map(e=>e.id)))}),Oo(()=>{this.rendererReady();let t=this.renderer;if(!t)return;let e=this.diff();t.setDiff(e?at(e):null)}),Oo(()=>{this.mode(),this.layoutName(),this.query(),this.kind(),this.selected(),this.selectedEdge(),this.groupBy(),this.collapsed(),this.vp(),this.schedulePersist()}),this.destroyRef.onDestroy(()=>{this.persistTimer&&clearTimeout(this.persistTimer),this.destroyCanvas()}),this.load()}canvasRenderer(){return this.renderer}mounting=null;async mountCanvas(t){if(!this.mounting){this.mounting=t;try{let{createCytoscapeRenderer:e}=await import(`./chunk-BAgCErjk.js`);if(this.canvasEl()?.nativeElement!==t||this.renderer)return;let a=document.documentElement.dataset.motion,s=e({animate:!(a===`reduced`||a!==`full`&&typeof matchMedia<`u`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches)});s.mount(t),s.onSelect(g=>this.onCanvasSelect(g)),s.onHover(g=>this.hovered.set(g)),s.onViewport(g=>this.vp.set(g)),s.onLayoutStatus(g=>{if(g.type!==`superseded`){if(g.type===`done`||g.type===`skipped`){this.layoutBusy.set(!1);let f=this.layoutStatus();f?.type!==`timeout`&&f?.type!==`error`&&f?.type!==`cancelled`&&this.layoutStatus.set(null);return}this.layoutStatus.set(g),this.layoutBusy.set(g.type===`started`||g.type===`progress`||g.type===`timeout`)}}),s.layout(this.effectiveLayout()),this.renderer=s,this.rendererReady.set(!0)}finally{this.mounting=null}}}destroyCanvas(){this.renderer?.destroy(),this.renderer=null,this.rendererReady.set(!1)}onCanvasSelect(t){t?.type===`node`?(this.selectedEdge.set(null),this.selectId(t.id)):t?.type===`edge`?(this.selected.set(null),this.selectedEdge.set(this.fed()?.edges.find(e=>e.id===t.id)??null)):(this.selected.set(null),this.selectedEdge.set(null))}setMode(t){this.mode.set(t)}setLayout(t){this.pendingLayout.set(null);let e=this.stats();if(e&&v(t,e)!==`ok`){this.pendingLayout.set(t);return}this.applyLayout(t)}applyLayout(t){this.layoutAuto.set(!1),this.layoutName.set(t),this.pendingLayout.set(null),this.renderer?.layout(t)}confirmLayout(){let t=this.pendingLayout();t&&this.applyLayout(t)}useRecommended(){this.pendingLayout.set(null),this.layoutAuto.set(!0),this.renderer?.layout(this.effectiveLayout())}setAutoLayout(){this.layoutAuto.set(!0),this.pendingLayout.set(null),this.renderer?.layout(this.effectiveLayout())}cancelLayout(){this.renderer?.cancelLayout()}resetLayout(){this.pendingLayout.set(null),this.renderer?.layout(this.effectiveLayout())}fitCanvas(){this.renderer?.fit()}zoomToSelected(){let t=this.selected()?.id??this.selectedEdge()?.id;t&&this.renderer?.zoomTo(t)}selectFocus(t){this.selectId(t),this.renderer&&this.renderer.zoomTo(t)}onGroupBy(t){let e=t.target.value;this.userGroupChoice=!0,this.groupBy.set(e===`kind`||e===`forge`||e===`host`?e:null),this.collapsed.set(new Set)}toggleGroup(t){this.userCollapseChoice=!0;let e=new Set(this.collapsed());e.has(t)?e.delete(t):e.add(t),this.collapsed.set(e)}onPathTarget(t){let e=t.target.value;this.pathTarget.set(e||null)}pathOptions(t){return(this.fed()?.nodes??[]).filter(e=>e.id!==t).slice(0,Qi).map(e=>({id:e.id}))}takeSnapshot(){let t=this.fed();if(!t)return;let e=nt(t,new Date().toISOString());rt(j(),e),this.snap.set(e),this.diff.set(le(e,t))}toggleDiff(t){this.diff.set(this.diff()?null:le(this.snap(),t))}dropSnapshot(){dt(j()),this.snap.set(null),this.diff.set(null)}resetView(){Ze(j()),this.mode.set(`list`),this.query.set(``),this.kind.set(null),this.selected.set(null),this.selectedEdge.set(null),this.pathTarget.set(null),this.groupBy.set(null),this.collapsed.set(new Set),this.userGroupChoice=!1,this.userCollapseChoice=!1,this.layoutAuto.set(!0),this.pendingLayout.set(null),this.layoutName.set(`cose`),this.vp.set(null),this.renderer?.layout(this.effectiveLayout())}schedulePersist(){this.persistTimer&&clearTimeout(this.persistTimer),this.persistTimer=setTimeout(()=>{this.persistTimer=null;let t={schema:`forge-portal/GraphView/v1`,mode:this.mode(),layout:this.layoutName(),layoutAuto:this.layoutAuto(),query:this.query(),kind:this.kind(),selectedNode:this.selected()?.id??null,selectedEdge:this.selectedEdge()?.id??null,viewport:this.vp(),groupBy:this.groupBy(),collapsedGroups:[...this.collapsed()]};Xe(j(),t)},200)}applySaved(){if(this.restored)return;this.restored=!0;let t=Qe(j());if(!t)return;this.mode.set(t.mode),this.layoutAuto.set(t.layoutAuto!==!1),this.layoutName.set(t.layout),t.layoutAuto===!1&&(this.userGroupChoice=!0),this.query.set(t.query),this.kind.set(t.kind),this.groupBy.set(t.groupBy),this.collapsed.set(new Set(t.collapsedGroups)),t.viewport&&(this.pendingViewport=t.viewport);let e=this.nodeById();if(t.selectedNode&&e.has(t.selectedNode))this.selected.set(e.get(t.selectedNode));else if(t.selectedEdge){let a=this.fed()?.edges.find(o=>o.id===t.selectedEdge);a&&this.selectedEdge.set(a)}}exportPng(){let t=this.renderer?.exportPng();t&&this.download(t,`forge-federated-graph.png`)}exportSvg(){let t=this.renderer?.exportSvg();t&&this.download(`data:image/svg+xml;charset=utf-8,${encodeURIComponent(t)}`,`forge-federated-graph.svg`)}download(t,e){let a=document.createElement(`a`);a.href=t,a.download=e,a.click()}kindColor(t){return m$1[t].color}kindShape(t){return m$1[t].shape}isFailed=p$1;degreeOf(t){return this.degreeMap().get(t)??0}relsOut(t){return(this.fed()?.edges??[]).filter(e=>e.source===t)}relsIn(t){return(this.fed()?.edges??[]).filter(e=>e.target===t)}metaRows(t){return Object.entries(t.meta??{})}hoverLine(){let t=this.hovered();if(!t)return`\xA0`;let e=this.fed();if(!e)return t.id;if(t.type===`node`){let o=this.nodeById().get(t.id);return o?`${o.kind} \xB7 ${o.id}`:t.id}let a=e.edges.find(o=>o.id===t.id);return a?`${a.kind} \xB7 ${T$1[a.evidence]}`:t.id}evidenceState(t){return this.fed()?.sources[t]?.state??`unverified`}evidenceLoadedAt(t){if(t===`graphs`)return this.graphsLoadedAt();if(t===`bootstrap`)return this.store.refreshedAt();let a=this.srcs.find(o=>o.id===t)?.src.loadedAt();return a?y(a):null}stampAt(t){return y(t)}async load(){this.error.set(null),this.loading.set(!0),this.selected.set(null),this.selectedEdge.set(null);let t=hE(this.api.graphs()).then(e=>{this.bundle.set(e),this.graphsLoadedAt.set(new Date().toISOString())}).catch(e=>{this.bundle.set(null),this.error.set(c(e))});await Promise.allSettled([t,...this.srcs.map(e=>e.src.load(()=>this.read(e.id)))]),this.loading.set(!1),this.rebuild(),this.applySaved(),this.snap()&&this.diff()}read(t){switch(t){case`capabilities`:return this.api.capabilities();case`skills`:return this.api.skills();case`agents`:return this.api.agents();case`mcp`:return this.api.mcpServers();case`hosts`:return this.api.hosts();case`tasks`:return this.api.tasks();case`events`:return this.api.events()}}rebuild(){let t=f=>f.data()!==null?`loaded`:f.unavailable()?`unavailable`:`unverified`,e=this.error(),a=this.bundle(),o=a?a.availability.state===`available`||a.availability.state===`no_graph`?`loaded`:`unverified`:e&&(e.status===404||e.body.code===`PORTAL-NOT-FOUND`)?`unavailable`:`unverified`,s=this.store.descriptor(),g={};for(let f of this.srcs)g[f.id]=t(f.src);g.graphs=o,g.bootstrap=s?`loaded`:`unverified`,this.fed.set(H({capabilities:this.data(`capabilities`),skills:this.data(`skills`),agents:this.data(`agents`),mcp:this.data(`mcp`),hosts:this.data(`hosts`),tasks:this.data(`tasks`),events:this.data(`events`)?.events??null,graphViews:this.bundle()?.views??null,servingForge:s?.forge_id??null,servingVersion:s?.forge_version??null,availability:g}))}data(t){return this.srcs.find(e=>e.id===t)?.src.data()??null}select(t){this.selectedEdge.set(null),this.pathTarget.set(null),this.selected.set(t)}selectId(t){let e=this.nodeById().get(t);e&&this.select(e)}selectEdge(t){let e=this.fed()?.edges.find(a=>a.id===t);e&&(this.selected.set(null),this.selectedEdge.set(e))}isNeighbor(t){let e=this.selected();if(!e||e.id===t.id)return!1;let a=this.report();return a?a.uses.some(o=>o.id===t.id)||a.usedBy.some(o=>o.id===t.id):!1}toggleKind(t){this.kind.set(this.kind()===t?null:t)}kindOptions(t){return G.filter(e=>(t.counts[e]??0)>0)}label(t){return this.nodeById().get(t)?.label??t}openLink(t){return r(t)}endpointFor(t){return T$1[t]}sourceList(t){return Object.entries(t.sources).map(([e,a])=>({id:e,info:a}))}sourceBadge(t){return t===`loaded`?`ok`:t===`unavailable`?`muted`:`warn`}exportJson(){return JSON.stringify(this.fed(),null,2)}exportGraph(){if(!this.fed())return;let t=document.createElement(`a`);t.href=`data:application/json;charset=utf-8,${encodeURIComponent(this.exportJson())}`,t.download=`forge-federated-graph.json`,t.click()}viewName(t){return String(t.view??t.name??`view`)}viewNodes(t){let e=t.nodes;return Array.isArray(e)?e.length:Number(t.node_count??0)}viewEdges(t){let e=t.edges;return Array.isArray(e)?e.length:Number(t.edge_count??0)}static ɵfac=function(e){return new(e||i)};static ɵcmp=ei$1({type:i,selectors:[[`page-graph`]],viewQuery:function(e,a){e&1&&Km(a.canvasEl,bt,5),e&2&&NS()},decls:11,vars:14,consts:[[`canvasEl`,``],[`hintId`,`graph`,3,`title`,`subtitle`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[3,`error`],[`role`,`status`],[`data-section`,`federated`,1,`card`,`fed`],[3,`retry`,`error`],[`kind`,`card`,3,`lines`],[1,`card`],[`icon`,`graph`,3,`title`,`hint`],[`target`,`_blank`,`rel`,`noopener`,1,`btn`,`btn--primary`,3,`href`],[1,`views`],[`name`,`external`,3,`size`],[`name`,`graph`,3,`size`],[1,`muted`],[1,`fed__head`],[`name`,`network`,3,`size`],[1,`chip`],[1,`fed__head-side`],[`role`,`group`,`data-toggle`,`view`,1,`fed__view-toggle`],[`type`,`button`,`data-view`,`list`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-view`,`canvas`,1,`fg-pill`,3,`click`],[`data-action`,`snapshot`,1,`btn`,3,`click`,`disabled`],[`name`,`copy`,3,`size`],[`data-action`,`export`,1,`btn`,3,`click`,`disabled`],[`data-strip`,`sources`,1,`fed__sources`],[`data-section`,`snapshot-bar`,1,`fed__snap`,`muted`],[3,`query`,`placeholder`],[`data-section`,`diff`,`aria-live`,`polite`,1,`card`,`fed__diff`,`fg-enter`],[`data-section`,`inspector`,`aria-live`,`polite`,1,`card`,`fed__detail`,`fg-enter`],[`data-section`,`edge-inspector`,`aria-live`,`polite`,1,`card`,`fed__detail`,`fg-enter`],[`data-section`,`canvas`,1,`fed__canvas-wrap`],[`data-list`,`nodes`,1,`fed__nodes`],[`icon`,`network`,3,`title`],[3,`state`,`labelOverride`],[`type`,`button`,`data-action`,`compare`,1,`fg-pill`,3,`click`],[`name`,`diff`,3,`size`],[`type`,`button`,`data-action`,`snap-clear`,1,`fg-pill`,3,`click`],[3,`queryChange`,`query`,`placeholder`],[`type`,`button`,1,`fg-pill`,3,`click`],[`type`,`button`,1,`fg-pill`],[1,`fed__diff-cols`],[1,`fed__impact`],[`data-diff`,`added`,1,`fed__edges`],[`data-diff`,`removed`,1,`fed__edges`],[`data-diff`,`changed`,1,`fed__edges`],[`type`,`button`,1,`chip-link`,3,`click`],[1,`fed__edge-ev`],[1,`fed__detail-head`],[`state`,`unverified`],[`state`,`FAILED`,3,`labelOverride`],[1,`fed__detail-actions`],[1,`btn`,`btn--mini`,`fed__open`,3,`routerLink`,`queryParams`,`fragment`],[1,`icon-btn`,3,`click`],[`name`,`chevron-right`,3,`size`],[1,`kv`],[1,`fed__evidence`],[1,`fed__rel-cols`],[`data-rel`,`out`,1,`fed__edges`],[`data-rel`,`in`,1,`fed__edges`],[`data-section`,`impact`,1,`fed__impactsec`],[`aria-hidden`,`true`],[`role`,`group`,1,`fed__depth`],[`type`,`button`,1,`fg-pill`,`fg-pill--mini`],[1,`muted`,`fed__impactsub`],[`data-impact`,`usedBy`,1,`fed__edges`],[`data-impact`,`uses`,1,`fed__edges`],[1,`fed__facts`,`muted`],[`state`,`muted`,3,`labelOverride`],[1,`fed__cycle`],[`data-section`,`path`,1,`fed__path`],[`for`,`path-target`,1,`muted`],[`id`,`path-target`,1,`input`,`fed__pathsel`,3,`change`,`value`],[`value`,``],[3,`value`],[`type`,`button`,`data-dir`,`out`,1,`fg-pill`,`fg-pill--mini`,3,`click`],[`type`,`button`,`data-dir`,`both`,1,`fg-pill`,`fg-pill--mini`,3,`click`],[1,`fed__honest`,`muted`],[1,`muted`,`fed__toponote`],[`type`,`button`,1,`fg-pill`,`fg-pill--mini`,3,`click`],[`data-path`,`found`,1,`fed__pathlist`],[`data-path`,`none`,1,`muted`],[1,`fed__impact`,`muted`],[1,`fed__edges`],[`role`,`toolbar`,1,`fed__toolbar`],[`type`,`button`,`data-layout`,`auto`,1,`fg-pill`,3,`click`],[1,`fed__toolbar-gap`],[`for`,`group-by`,1,`muted`],[`id`,`group-by`,`data-action`,`group`,1,`input`,`fed__groupsel`,3,`change`,`value`],[`value`,`kind`],[`value`,`forge`],[`value`,`host`],[`type`,`button`,`data-action`,`reset`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`fit`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`zoom`,1,`fg-pill`,3,`click`,`disabled`],[`type`,`button`,`data-action`,`png`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`svg`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`reset-view`,1,`fg-pill`,3,`click`],[`data-section`,`layout-warn`,`role`,`alert`,1,`fed__warn`],[`data-status`,`layout`,`role`,`status`,1,`muted`,`fed__layoutstatus`],[`data-canvas`,`graph`,`role`,`application`,1,`fed__canvas`],[`data-status`,`hover`,1,`muted`,`fed__hover`],[1,`fed__legend`],[`data-line`,`solid`,1,`fed__legend-line`],[1,`fed__legend-rule`],[`data-line`,`dashed`,1,`fed__legend-line`],[1,`fed__legend-rule`,`fed__legend-rule--dashed`],[`data-line`,`dotted`,1,`fed__legend-line`],[1,`fed__legend-rule`,`fed__legend-rule--dotted`],[`type`,`button`,`data-action`,`layout-confirm`,1,`fg-pill`,`fg-pill--mini`,3,`click`],[`type`,`button`,`data-action`,`layout-use-rec`,1,`fg-pill`,`fg-pill--mini`,3,`click`],[`type`,`button`,`data-action`,`cancel-layout`,1,`fg-pill`,`fg-pill--mini`,3,`click`],[`data-strip`,`groups`,1,`fed__groups`],[`data-note`,`auto-cluster`,1,`muted`,`fed__autonote`],[1,`fed__legend-dot`],[`type`,`button`,1,`fed__node`,3,`click`],[1,`fed__label`],[1,`fed__state`],[1,`fed__id`]],template:function(e,a){if(e&1&&(da(0,`ui-page-header`,1),aC(1,`t`),aC(2,`t`),da(3,`button`,2),Ma(`click`,function(){return a.load()}),Sa(4,`ui-icon`,3),qS(5),aC(6,`t`),vd()(),dS(7,kt,1,1,`ui-error`,4),dS(8,Pt,3,4,`div`,5),dS(9,Bt,2,1),dS(10,Ji,41,44,`section`,6)),e&2){let o,s,g;qm(`title`,lC(1,8,`graph.title`))(`subtitle`,lC(2,10,`graph.subtitle`)),hD(4),qm(`size`,15),hD(),bd(` `,lC(6,12,`state.refresh`),` `),hD(2),hS((o=a.error())?7:-1,o),hD(),hS(a.loading()?8:-1),hD(),hS((s=a.bundle())?9:-1,s),hD(),hS((g=a.fed())?10:-1,g)}},dependencies:[vc,T,I,_,D$1,cE,k$1,h,aE],styles:[`.views[_ngcontent-%COMP%]{list-style:none;padding:0;margin:var(--%NS%space-4) 0 0;display:grid}.views[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-2) var(--%NS%space-3);border-radius:var(--%NS%radius-md)}.views[_ngcontent-%COMP%] li[_ngcontent-%COMP%] + li[_ngcontent-%COMP%]{border-top:1px solid var(--%NS%border)}.views[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:hover{background:var(--%NS%bg-hover)}.muted[_ngcontent-%COMP%]{font-size:var(--%NS%font-sm)}.views[_ngcontent-%COMP%] strong[_ngcontent-%COMP%], .fed[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.fed[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3)}.fed__head[_ngcontent-%COMP%], .fed__detail-head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2);flex-wrap:wrap}.fed[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650}.views[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%], .fed__head[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%], .fed__detail-head[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.fed__state[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);border-radius:var(--%NS%radius-pill);flex:none;color:var(--%NS%fg-muted);border:1px solid var(--%NS%border);padding:0 6px;max-width:8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fed__sources[_ngcontent-%COMP%], .fed__legend[_ngcontent-%COMP%], .fed__nodes[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0}.fed__sources[_ngcontent-%COMP%], .fed__legend[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-1) var(--%NS%space-3);font-size:var(--%NS%font-xs)}.fed__sources[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0}.fed__sources[_ngcontent-%COMP%] li[_ngcontent-%COMP%], .fed__legend[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-1)}.fed__legend[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.fed__nodes[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--%NS%space-2)}.fed__node[_ngcontent-%COMP%]{width:100%;display:flex;align-items:center;gap:var(--%NS%space-2);padding:var(--%NS%space-2);border:1px solid var(--%NS%border);background:var(--%NS%bg-elevated);border-radius:var(--%NS%radius-md);color:var(--%NS%fg);font:inherit;text-align:left;cursor:pointer;transition:border-color var(--%NS%motion-fast),box-shadow var(--%NS%motion-fast),background var(--%NS%motion-fast)}.fed__node[_ngcontent-%COMP%]:hover{border-color:var(--%NS%accent-ink);background:var(--%NS%bg-hover)}.fed__node[data-unverified][_ngcontent-%COMP%]{border-style:dashed;background:color-mix(in srgb,var(--%NS%bg-elevated) 55%,transparent)}.fed__node[data-failed][_ngcontent-%COMP%]{border-color:var(--%NS%error)}.fed__node[data-selected][_ngcontent-%COMP%]{border-color:var(--%NS%accent-ink);box-shadow:0 0 0 1px var(--%NS%accent)}.fed__node[data-neighbor][_ngcontent-%COMP%]{border-color:var(--%NS%info);box-shadow:0 0 0 1px var(--%NS%info)}.fed__label[_ngcontent-%COMP%], .fed__id[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.fed__label[_ngcontent-%COMP%]{font-weight:600}.fed__id[_ngcontent-%COMP%]{margin-left:auto;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.fed__detail[_ngcontent-%COMP%]{margin:var(--%NS%space-4) 0;border-left:3px solid var(--%NS%accent)}.fed__detail-actions[_ngcontent-%COMP%], .fed__head-side[_ngcontent-%COMP%], .fed__view-toggle[_ngcontent-%COMP%], .fed__depth[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-2);flex-wrap:wrap}.fed__depth[_ngcontent-%COMP%]{gap:var(--%NS%space-1);margin-left:var(--%NS%space-2)}.fed__open[_ngcontent-%COMP%]{text-decoration:none}.kv[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin:0}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{min-width:7rem;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm);flex:none}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0}.fed__canvas-wrap[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2)}.fed__toolbar[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--%NS%space-2)}.fed__toolbar-gap[_ngcontent-%COMP%]{flex:1}.fed__canvas[_ngcontent-%COMP%]{height:520px;border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:var(--%NS%bg-elevated);overflow:hidden}.fed__canvas[_ngcontent-%COMP%] canvas[_ngcontent-%COMP%]{outline:none}.fed__hover[_ngcontent-%COMP%]{margin:0;min-height:1.1em;font-size:var(--%NS%font-xs)}.fed__legend-dot[_ngcontent-%COMP%]{width:10px;height:10px;display:inline-block;border-radius:3px;flex:none}.fed__legend-rule[_ngcontent-%COMP%]{width:18px;height:0;border-top:2px solid var(--%NS%fg-muted);display:inline-block;flex:none}.fed__legend-rule--dashed[_ngcontent-%COMP%]{border-top-style:dashed}.fed__legend-rule--dotted[_ngcontent-%COMP%]{border-top-style:dotted}.fed__warn[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--%NS%space-2);padding:var(--%NS%space-2) var(--%NS%space-3);border:1px solid var(--%NS%warn, #a35c00);border-left-width:3px;border-radius:var(--%NS%radius-md);font-size:var(--%NS%font-sm)}.fed__warn[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{border:1px solid var(--%NS%border)}.fed__layoutstatus[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:0;min-height:1.1em;font-size:var(--%NS%font-xs)}.fed__autonote[_ngcontent-%COMP%]{font-style:italic}`]})};export{lt as GraphPage}; \ No newline at end of file diff --git a/portal/assets/chunk-D51YTy_x.js b/portal/assets/chunk-D51YTy_x.js deleted file mode 100644 index 24fa9c2..0000000 --- a/portal/assets/chunk-D51YTy_x.js +++ /dev/null @@ -1 +0,0 @@ -import{i as l,r as k}from"./chunk-DjkjLihA.js";import{$ as da,Dt as pS,Et as p,F as Wm,Gt as wS,K as aC,Lt as tn,M as Ta,Mt as sC,N as Uh,P as WS,Pt as tC,Q as cE,Tt as oC,X as bS,Xt as yd,Z as ba,_ as Km,ct as gS,dt as hE,gt as k$1,h as Jm,ht as jh,it as ei,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,xt as nC,yt as mS,zt as uS}from"./chunk-BelLryvf.js";import{i as n,o as f,r as g}from"./main-A2NKRJGT.js";import{a as l$1,s as y}from"./chunk-0WpwvubF.js";import{t as _}from"./chunk-BKRLVsID.js";import{t as D}from"./chunk-CiuPOfJ0.js";import{n as k$2,t as I}from"./chunk-D2KAfPv6.js";import{t as T}from"./chunk-BBusSOqc.js";var et=()=>[1,2,3];var Z=t=>({time:t});var nt=(t,i)=>i.host;var it=(t,i)=>i.id;function at(t,i){if(t&1){let e=wS();da(0,`ui-error`,6),Ta(`retry`,function(){jh(e);let _=bS();return Uh(_.load())}),yd()}t&2&&Wm(`error`,i)}function ot(t,i){t&1&&(da(0,`section`,4),ba(1,`ui-state-badge`,7),da(2,`p`,8),WS(3),oC(4,`t`),yd()()),t&2&&(hD(3),Jm(sC(4,1,`hosts.ops.unsupported`)))}function rt(t,i){t&1&&ba(0,`ui-skeleton`,9)}function ct(t,i){t&1&&(da(0,`section`,5),gS(1,rt,1,0,`ui-skeleton`,9,pS),yd()),t&2&&(hD(),mS(tC(0,et)))}function st(t,i){if(t&1&&(da(0,`p`,14),WS(1),oC(2,`t`),yd()),t&2){let e=bS(2);hD(),Jm(aC(2,1,`common.updatedAt`,nC(4,Z,e.stamp(i))))}}function lt(t,i){t&1&&ba(0,`ui-icon`,32),t&2&&Wm(`size`,11)}function dt(t,i){if(t&1&&(da(0,`li`)(1,`span`,31),uS(2,lt,1,1,`ui-icon`,32),yd(),WS(3),oC(4,`t`),yd()),t&2){let e=i.$implicit,r=i.$index,_=bS().$implicit,d=bS(2);Ar(`data-state`,d.stageState(_,r))(`aria-current`,d.stageState(_,r)===`active`?`step`:null),hD(2),fS(d.stageState(_,r)===`done`?2:-1),hD(),Dd(` `,sC(4,4,`hostState.`+e.state),` `)}}function pt(t,i){if(t&1&&(da(0,`li`,24)(1,`span`,31),ba(2,`ui-icon`,33),yd(),WS(3),oC(4,`t`),yd()),t&2){let e=bS().$implicit;Ar(`data-state`,i),hD(2),Wm(`size`,11),hD(),Dd(` `,sC(4,3,`hostState.`+e.integration),` `)}}function mt(t,i){t&1&&ba(0,`ui-state-badge`,7)}function _t(t,i){if(t&1&&(WS(0),oC(1,`t`)),t&2){let e=bS().$implicit,r=bS(2);Dd(` `,sC(1,1,r.authLabel(e)),` `)}}function gt(t,i){if(t&1&&(da(0,`div`,26)(1,`dt`),WS(2),oC(3,`t`),yd(),da(4,`dd`)(5,`code`),WS(6),yd()()()),t&2){let e=bS().$implicit;hD(2),Jm(sC(3,2,`hosts.commandHint`)),hD(4),Jm(e.command_hint)}}function ut(t,i){if(t&1&&(da(0,`p`,8),WS(1),yd()),t&2){let e=bS().$implicit;hD(),Jm(e.detail)}}function Ct(t,i){if(t&1&&(da(0,`span`,34),ba(1,`ui-state-badge`,22)(2,`ui-icon`,35)(3,`ui-state-badge`,22),yd()),t&2){let e=bS(),r=bS().$implicit;hD(),Wm(`state`,e.from),hD(),Wm(`size`,12),hD(),Wm(`state`,r.integration)}}function yt(t,i){if(t&1&&(da(0,`p`,27),ba(1,`ui-icon`,32),da(2,`span`),WS(3),oC(4,`t`),yd(),uS(5,Ct,4,3,`span`,34),yd()),t&2){let e=i,r=bS(3);hD(),Wm(`size`,12),hD(2),Jm(aC(4,3,`common.updatedAt`,nC(6,Z,r.stamp(e.at)))),hD(2),fS(e.changed&&e.from?5:-1)}}function xt(t,i){if(t&1){let e=wS();da(0,`div`,37)(1,`p`,38),ba(2,`ui-icon`,29),WS(3),oC(4,`t`),yd(),da(5,`button`,39),oC(6,`t`),Ta(`click`,function(){jh(e);let _=bS(),d=bS().$implicit,v=bS(2);return Uh(v.copyCommand(d.host,_.command))}),ba(7,`ui-icon`,40),WS(8),oC(9,`t`),yd()(),da(10,`code`,41),WS(11),yd()}if(t&2){let e=bS(),r=bS().$implicit,_=bS(2);hD(2),Wm(`size`,13),hD(),Dd(``,sC(4,7,`hosts.launch.copyHint`),` `),hD(2),Ar(`aria-label`,sC(6,9,`state.copy`)),hD(2),Wm(`name`,_.copied()===r.host?`check`:`copy`)(`size`,13),hD(),Dd(` `,sC(9,11,_.copied()===r.host?`state.copied`:`state.copy`),` `),hD(3),Jm(e.command)}}function vt(t,i){if(t&1&&WS(0),t&2){let e=bS(2);Dd(` — `,e.detail,` `)}}function ft(t,i){if(t&1&&(da(0,`p`,36)(1,`strong`),WS(2),oC(3,`t`),yd(),da(4,`code`),WS(5),yd(),uS(6,vt,1,1),yd()),t&2){let e=bS();hD(2),Jm(sC(3,3,`install.refused`)),hD(3),Jm(e.refusal),hD(),fS(e.detail?6:-1)}}function ht(t,i){if(t&1&&(da(0,`span`),WS(1),yd()),t&2){let e=bS(2);hD(),Dd(`— `,e.detail)}}function St(t,i){if(t&1&&(da(0,`p`,8),WS(1),oC(2,`t`),uS(3,ht,2,1,`span`),yd()),t&2){let e=bS();hD(),Dd(` `,sC(2,2,`hosts.launch.unavailable`),` `),hD(2),fS(e.detail?3:-1)}}function bt(t,i){if(t&1&&(da(0,`div`,30),uS(1,xt,12,13)(2,ft,7,5,`p`,36)(3,St,4,4,`p`,8),yd()),t&2){let e=i;Ar(`data-kind`,e.command?`command`:e.refusal?`refusal`:`none`),hD(),fS(e.command?1:e.refusal?2:3)}}function Pt(t,i){if(t&1){let e=wS();da(0,`article`,16)(1,`header`,20)(2,`h2`),ba(3,`ui-icon`,21),WS(4),yd(),ba(5,`ui-state-badge`,22),yd(),da(6,`ol`,23),oC(7,`t`),gS(8,dt,5,6,`li`,null,it),uS(10,pt,5,5,`li`,24),yd(),da(11,`dl`,25)(12,`div`)(13,`dt`),WS(14),oC(15,`t`),yd(),da(16,`dd`),WS(17),oC(18,`t`),yd()(),da(19,`div`)(20,`dt`),WS(21),oC(22,`t`),yd(),da(23,`dd`),WS(24),oC(25,`t`),yd()(),da(26,`div`)(27,`dt`),WS(28),oC(29,`t`),yd(),da(30,`dd`),ba(31,`ui-state-badge`,22),yd()(),da(32,`div`)(33,`dt`),WS(34),oC(35,`t`),yd(),da(36,`dd`),uS(37,mt,1,0,`ui-state-badge`,7)(38,_t,2,3),yd()(),da(39,`div`)(40,`dt`),WS(41),oC(42,`t`),yd(),da(43,`dd`),WS(44),oC(45,`t`),yd()(),uS(46,gt,7,4,`div`,26),yd(),uS(47,ut,2,1,`p`,8),uS(48,yt,6,8,`p`,27),da(49,`div`,28)(50,`button`,1),Ta(`click`,function(){let _=jh(e).$implicit,d=bS(2);return Uh(d.requestIntegration(_))}),ba(51,`ui-icon`,29),WS(52),oC(53,`t`),yd()(),uS(54,bt,4,2,`div`,30),yd()}if(t&2){let e,r,_,d=i.$implicit,v=bS(2);Ar(`id`,`host-`+d.host)(`data-off`,!d.detected||null)(`data-host`,d.host),hD(3),Wm(`size`,16),hD(),Jm(d.host),hD(),Wm(`state`,d.integration),hD(),Ar(`aria-label`,sC(7,28,`hosts.integration`))(`data-lc`,d.host),hD(2),mS(v.stages),hD(2),fS((e=v.terminalState(d))?10:-1,e),hD(4),Jm(sC(15,30,`hosts.detected`)),hD(3),Jm(sC(18,32,d.detected?`state.yes`:`state.no`)),hD(4),Jm(sC(22,34,`hosts.version`)),hD(3),Jm(d.version??sC(25,36,`state.unknown`)),hD(4),Jm(sC(29,38,`hosts.supported`)),hD(3),Wm(`state`,d.supported?`supported`:`unsupported`),hD(3),Jm(sC(35,40,`hosts.auth`)),hD(3),fS(d.logged_in===null?37:38),hD(4),Jm(sC(42,42,`hosts.launchable`)),hD(3),Jm(sC(45,44,d.launchable?`state.yes`:`state.no`)),hD(2),fS(d.command_hint?46:-1),hD(),fS(d.detail?47:-1),hD(),fS((r=v.checks()[d.host])?48:-1,r),hD(2),Km(`btn--primary`,d.detected),Wm(`disabled`,v.launchBusy()!==null),hD(),Wm(`size`,14),hD(),Dd(` `,sC(53,46,`hosts.request`),` `),hD(2),fS((_=v.launch()[d.host])?54:-1,_)}}function Et(t,i){t&1&&(ba(0,`ui-empty`,42),oC(1,`t`),oC(2,`t`)),t&2&&Wm(`title`,sC(1,2,`empty.noData`))(`hint`,sC(2,4,`empty.noData.hint`))}function Ot(t,i){if(t&1&&uS(0,Et,3,6,`ui-empty`,42),t&2){let e=bS(2);fS(!e.src.error()&&!e.src.loading()?0:-1)}}function Mt(t,i){if(t&1&&(da(0,`li`),ba(1,`ui-state-badge`,7),da(2,`span`,43)(3,`strong`),WS(4),oC(5,`t`),yd(),da(6,`small`),WS(7),oC(8,`t`),yd()()()),t&2){let e=i.$implicit;hD(4),Jm(sC(5,2,e)),hD(3),Jm(sC(8,4,`hosts.ops.unsupported`))}}function Nt(t,i){if(t&1&&(da(0,`section`,10)(1,`h2`,11),WS(2),oC(3,`t`),yd(),da(4,`div`,12)(5,`span`,13)(6,`strong`),WS(7),yd(),WS(8),oC(9,`t`),yd(),da(10,`span`,13)(11,`strong`),WS(12),yd(),WS(13),oC(14,`t`),yd(),da(15,`span`,13)(16,`strong`),WS(17),yd(),WS(18),oC(19,`t`),yd()(),uS(20,st,3,6,`p`,14),yd(),da(21,`section`,15),gS(22,Pt,55,48,`article`,16,nt,!1,Ot,1,1),yd(),da(25,`section`,17)(26,`h2`,18),WS(27),oC(28,`t`),yd(),da(29,`ul`,19),gS(30,Mt,9,6,`li`,null,pS),yd()()),t&2){let e,r=bS();hD(2),Jm(sC(3,11,`dashboard.inventory`)),hD(5),Jm(r.summary().detected),hD(),Dd(` `,sC(9,13,`hosts.detected`),` `),hD(4),Jm(r.summary().integrated),hD(),Dd(` `,sC(14,15,`hosts.installed`),` `),hD(2),Ar(`data-warn`,r.summary().unknown>0||null),hD(2),Jm(r.summary().unknown),hD(),Dd(` `,sC(19,17,`hosts.auth.unknown`),` `),hD(2),fS((e=r.src.loadedAt())?20:-1,e),hD(2),mS(i),hD(5),Jm(sC(28,19,`install.ops.title`)),hD(3),mS(r.capabilities)}}var It=[{id:`detect`,state:`DETECTED`},{id:`install`,state:`INSTALLED`},{id:`configure`,state:`CONFIGURED`},{id:`mcp`,state:`MCP_REGISTERED`},{id:`handshake`,state:`HANDSHAKE_VERIFIED`},{id:`tools`,state:`TOOLS_DISCOVERED`},{id:`exec`,state:`EXECUTION_VERIFIED`}];var wt={DETECTED:0,INSTALLED:1,CONFIGURED:2,MCP_REGISTERED:3,HANDSHAKE_VERIFIED:4,TOOLS_DISCOVERED:5,EXECUTION_VERIFIED:6};var kt=new Set([`INSTALLED`,`CONFIGURED`,`MCP_REGISTERED`,`HANDSHAKE_VERIFIED`,`TOOLS_DISCOVERED`,`EXECUTION_VERIFIED`]);var Y=class t{api=p(g);toast=p(f);src=new l$1;hosts=tn(()=>this.src.data());checks=k$1({});launch=k$1({});launchBusy=k$1(null);copied=k$1(null);stages=It;capabilities=[`hosts.ops.plan`,`hosts.ops.files`,`hosts.ops.fix`,`hosts.ops.disable`];summary=tn(()=>{let i=this.hosts()??[];return{detected:i.filter(e=>e.detected).length,integrated:i.filter(e=>kt.has(e.integration)).length,unknown:i.filter(e=>e.logged_in===null).length}});constructor(){this.load()}async load(){let i=this.src.data()??[];await this.src.load(()=>this.api.hosts());let e=this.src.data();if(!e)return;let r=this.src.loadedAt()??new Date().toISOString(),_=k({},this.checks());for(let d of e){let v=i.find(tt=>tt.host===d.host),B=v&&v.integration!==d.integration?v.integration:null;_[d.host]={at:r,changed:B!==null,from:B}}this.checks.set(_)}stageIndex(i){return wt[i]??-1}stageState(i,e){let r=this.stageIndex(i.integration);return el(k({},_),{[i.host]:r})),r.command?this.toast.show(`notify.success`,`success`):r.refusal?this.toast.show(r.refusal,`error`):this.toast.show(`hosts.launch.unavailable`,`info`)}catch(e){this.src.error.set(e instanceof n?e:new n(0))}finally{this.launchBusy.set(null)}}}async copyCommand(i,e){try{await navigator.clipboard.writeText(e),this.copied.set(i),this.toast.show(`state.copied`,`success`),setTimeout(()=>{this.copied()===i&&this.copied.set(null)},1600)}catch{this.toast.show(`error.generic`,`error`)}}stamp=y;static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`page-hosts`]],decls:11,vars:15,consts:[[3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[3,`error`],[`role`,`note`,1,`card`,`unverified-panel`],[`role`,`status`,`aria-live`,`polite`,1,`grid`],[3,`retry`,`error`],[`state`,`unverified`],[1,`muted`],[`kind`,`card`],[`aria-labelledby`,`summary-h`,1,`card`,`summary`],[`id`,`summary-h`],[1,`stats`],[1,`stat`],[1,`probe`,`muted`],[1,`grid`],[`data-lift`,``,1,`card`,`host`],[`aria-labelledby`,`caps-h`,1,`card`],[`id`,`caps-h`],[1,`capability`],[1,`card__head`],[`name`,`hosts`,3,`size`],[3,`state`],[1,`lc`],[1,`terminal`],[1,`kv`],[1,`kv__cmd`],[1,`checked`],[1,`row`],[`name`,`terminal`,3,`size`],[1,`outcome`],[`aria-hidden`,`true`,1,`dot`],[`name`,`check`,3,`size`],[`name`,`alert`,3,`size`],[1,`transition`],[`name`,`chevron-right`,3,`size`],[`role`,`alert`,1,`refusal`],[1,`outcome__head`],[1,`outcome__title`],[1,`btn`,`btn--mini`,3,`click`],[3,`name`,`size`],[1,`outcome__cmd`],[`icon`,`hosts`,3,`title`,`hint`],[1,`capability__body`,`muted`]],template:function(e,r){if(e&1&&(da(0,`ui-page-header`,0),oC(1,`t`),oC(2,`t`),da(3,`button`,1),Ta(`click`,function(){return r.load()}),ba(4,`ui-icon`,2),WS(5),oC(6,`t`),yd()(),uS(7,at,1,1,`ui-error`,3),uS(8,ot,5,3,`section`,4),uS(9,ct,3,1,`section`,5),uS(10,Nt,32,21)),e&2){let _,d;Wm(`title`,sC(1,9,`hosts.title`))(`subtitle`,sC(2,11,`hosts.subtitle`)),hD(3),Wm(`disabled`,r.src.loading()),hD(),Wm(`size`,15),hD(),Dd(` `,sC(6,13,`state.refresh`),` `),hD(2),fS((_=r.src.error())?7:-1,_),hD(),fS(r.src.unavailable()?8:-1),hD(),fS(r.src.loading()&&!r.hosts()?9:-1),hD(),fS((d=r.hosts())?10:-1,d)}},dependencies:[T,I,_,D,cE,k$2,aE],styles:[`.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.card[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em}.card[_ngcontent-%COMP%] > h2[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-3)}.stats[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2)}.stat[_ngcontent-%COMP%]{display:inline-flex;align-items:baseline;gap:6px;padding:var(--%NS%space-2) var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-pill);font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted)}.stat[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{color:var(--%NS%fg);font-size:var(--%NS%font-md)}.stat[data-warn][_ngcontent-%COMP%], .stat[data-warn][_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{color:var(--%NS%warn)}.stat[data-warn][_ngcontent-%COMP%]{border-color:color-mix(in srgb,var(--%NS%warn) 45%,transparent)}.probe[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 0;font-size:var(--%NS%font-xs)}.grid[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-4);grid-template-columns:repeat(auto-fit,minmax(300px,1fr));margin-bottom:var(--%NS%space-4)}.host[data-off][_ngcontent-%COMP%]{filter:grayscale(.6);border-style:dashed}.host[id][_ngcontent-%COMP%]{scroll-margin-top:var(--%NS%space-4)}.host[id][_ngcontent-%COMP%]:target{border-color:var(--%NS%accent-ink);box-shadow:0 0 0 1px var(--%NS%accent)}.card__head[_ngcontent-%COMP%], .outcome__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2)}.card__head[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-3)}.card__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{text-transform:capitalize;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.card__head[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.lc[_ngcontent-%COMP%]{list-style:none;margin:0 0 var(--%NS%space-3);padding:0;display:grid}.lc[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{position:relative;display:flex;align-items:center;gap:var(--%NS%space-2);padding:3px 0;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.lc[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:not(:last-child):after{content:"";position:absolute;left:7px;top:21px;bottom:-3px;width:2px;border-radius:1px;background:var(--%NS%border)}.lc[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{position:relative;display:grid;place-items:center;width:16px;height:16px;flex:none;border-radius:50%;border:1.5px solid var(--%NS%border-strong);background:var(--%NS%bg-elevated)}.lc[_ngcontent-%COMP%] li[data-state=done][_ngcontent-%COMP%], .lc[_ngcontent-%COMP%] li[data-state=active][_ngcontent-%COMP%]{color:var(--%NS%fg)}.lc[_ngcontent-%COMP%] li[data-state=done][_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{background:var(--%NS%ok);border-color:var(--%NS%ok);color:var(--%NS%on-color)}.lc[_ngcontent-%COMP%] li[data-state=done][_ngcontent-%COMP%]:not(:last-child):after{background:var(--%NS%ok)}.lc[_ngcontent-%COMP%] li[data-state=active][_ngcontent-%COMP%]{font-weight:650}.lc[_ngcontent-%COMP%] li[data-state=active][_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{border-color:var(--%NS%accent-ink);box-shadow:0 0 0 3px color-mix(in srgb,var(--%NS%accent) 15%,transparent)}.lc[_ngcontent-%COMP%] li[data-state=warn][_ngcontent-%COMP%], .lc[_ngcontent-%COMP%] li[data-state=error][_ngcontent-%COMP%]{margin-top:2px;font-weight:600}.lc[_ngcontent-%COMP%] li[data-state=warn][_ngcontent-%COMP%]{color:var(--%NS%warn)}.lc[_ngcontent-%COMP%] li[data-state=error][_ngcontent-%COMP%]{color:var(--%NS%error)}.lc[_ngcontent-%COMP%] li[data-state=warn][_ngcontent-%COMP%] .dot[_ngcontent-%COMP%], .lc[_ngcontent-%COMP%] li[data-state=error][_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{color:var(--%NS%on-color)}.lc[_ngcontent-%COMP%] li[data-state=warn][_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{background:var(--%NS%warn);border-color:var(--%NS%warn)}.lc[_ngcontent-%COMP%] li[data-state=error][_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{background:var(--%NS%error);border-color:var(--%NS%error)}.kv[_ngcontent-%COMP%]{display:grid;gap:6px;margin:0 0 var(--%NS%space-3)}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:var(--%NS%space-2)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0}.kv__cmd[_ngcontent-%COMP%] code[_ngcontent-%COMP%], .outcome__cmd[_ngcontent-%COMP%], .refusal[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{font-family:var(--%NS%font-mono);font-size:var(--%NS%font-xs);overflow-wrap:anywhere}.checked[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);flex-wrap:wrap;margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.checked[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%ok)}.transition[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;color:var(--%NS%fg-muted)}.row[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3)}.outcome[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3);padding:var(--%NS%space-3);border:1px solid color-mix(in srgb,var(--%NS%accent) 35%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%accent-bg);display:grid;gap:4px}.outcome[data-kind=refusal][_ngcontent-%COMP%]{border-color:color-mix(in srgb,var(--%NS%warn) 45%,transparent);background:var(--%NS%warn-bg)}.outcome__title[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-xs);font-weight:600;color:var(--%NS%accent-ink);display:inline-flex;align-items:center;gap:6px}.btn--mini[_ngcontent-%COMP%]{padding:2px var(--%NS%space-2);font-size:var(--%NS%font-xs);gap:4px}.outcome__cmd[_ngcontent-%COMP%]{font-size:var(--%NS%font-sm);word-break:break-all}.refusal[_ngcontent-%COMP%]{margin:0}.unverified-panel[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-3)}`]})};export{Y as HostsPage}; \ No newline at end of file diff --git a/portal/assets/chunk-D5z0OfqY.js b/portal/assets/chunk-D5z0OfqY.js new file mode 100644 index 0000000..32897f2 --- /dev/null +++ b/portal/assets/chunk-D5z0OfqY.js @@ -0,0 +1 @@ +import{$ as dS,At as qm,Bt as tn,D as Oo,Et as p,F as Sa,J as aC,Jt as vd,P as SS,Pt as rn,Q as cE,Qt as yS,S as Ma,Ut as uC,Y as aE,Z as bd,at as ey,ct as hD,et as da,gt as k,i as Ar,it as ei,jt as rC,kt as qS,ot as gS,p as Hh,s as DS,ut as hS,vt as lC,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{r as g}from"./main-XW2ZMSO5.js";import{a as l,s as y}from"./chunk-BNDlNg-C.js";import{t as _}from"./chunk-16deWS0U.js";import{t as D}from"./chunk-Bg2lccQE.js";import{n as k$1,t as I}from"./chunk-DQtX_-dj.js";import{t as T}from"./chunk-BGgpmc9t.js";import{n as k$2,t as V}from"./chunk-Br6NMJL9.js";var q=n=>({time:n});var J=(n,t)=>t.key;var Q=(n,t)=>t.position;function W(n,t){n&1&&(da(0,`section`,5),Sa(1,`ui-state-badge`,8),da(2,`span`,9),qS(3),aC(4,`t`),vd()()),n&2&&(hD(3),ey(lC(4,1,`observe.unavailable`)))}function X(n,t){if(n&1){let e=DS();da(0,`ui-error`,10),Ma(`retry`,function(){Hh(e);let p=SS();return Vh(p.load())}),vd()}n&2&&qm(`error`,t)}function Z(n,t){n&1&&(da(0,`section`,7),aC(1,`t`),Sa(2,`ui-skeleton`,11),vd()),n&2&&(Ar(`aria-label`,lC(1,2,`state.loading`)),hD(2),qm(`lines`,3))}function ee(n,t){if(n&1&&(da(0,`span`),qS(1),aC(2,`t`),vd()),n&2){let e=SS(2);hD(),bd(` · `,uC(2,1,`common.updatedAt`,rC(4,q,e.stamp(t))))}}function te(n,t){if(n&1&&(da(0,`div`,20)(1,`span`,21),qS(2),vd(),da(3,`span`,22),qS(4),vd()()),n&2){let e=t.$implicit;Ar(`data-counter`,e.key),hD(2),ey(e.value),hD(2),ey(e.key)}}function ne(n,t){if(n&1&&(da(0,`div`,15),mS(1,te,5,3,`div`,20,J),vd()),n&2){let e=SS(2);hD(),yS(e.counters())}}function ie(n,t){n&1&&(da(0,`p`,16),qS(1),aC(2,`t`),vd()),n&2&&(hD(),ey(lC(2,1,`state.none`)))}function ae(n,t){n&1&&(da(0,`p`,18),Sa(1,`ui-icon`,23),da(2,`span`),qS(3),aC(4,`t`),vd()()),n&2&&(hD(),qm(`size`,14),hD(2),ey(lC(4,2,`observe.truncated`)))}function re(n,t){if(n&1&&(da(0,`option`,28),qS(1),vd()),n&2){let e=t.$implicit,l=SS(3);qm(`value`,e)(`selected`,l.kindFilter()===e),hD(),ey(e)}}function oe(n,t){if(n&1&&(da(0,`option`,28),qS(1),vd()),n&2){let e=t.$implicit,l=SS(3);qm(`value`,e)(`selected`,l.statusFilter()===e),hD(),ey(e)}}function le(n,t){if(n&1){let e=DS();da(0,`div`,19)(1,`label`,24)(2,`span`,25),qS(3),aC(4,`t`),vd(),da(5,`select`,26),Ma(`change`,function(p){Hh(e);let g=SS(2);return Vh(g.setKind(p))}),da(6,`option`,27),qS(7),aC(8,`t`),vd(),mS(9,re,2,3,`option`,28,gS),vd()(),da(11,`label`,24)(12,`span`,25),qS(13),aC(14,`t`),vd(),da(15,`select`,29),Ma(`change`,function(p){Hh(e);let g=SS(2);return Vh(g.setStatus(p))}),da(16,`option`,27),qS(17),aC(18,`t`),vd(),mS(19,oe,2,3,`option`,28,gS),vd()(),da(21,`label`,24)(22,`span`,25),qS(23),aC(24,`t`),vd(),da(25,`input`,30),aC(26,`t`),Ma(`input`,function(p){Hh(e);let g=SS(2);return Vh(g.setCorr(p))}),vd()()()}if(n&2){let e=SS(2);hD(3),ey(lC(4,9,`observe.filter.kind`)),hD(3),qm(`selected`,e.kindFilter()===null),hD(),bd(` `,lC(8,11,`state.all`),` `),hD(2),yS(e.kindOptions()),hD(4),ey(lC(14,13,`observe.filter.status`)),hD(3),qm(`selected`,e.statusFilter()===null),hD(),bd(` `,lC(18,15,`state.all`),` `),hD(2),yS(e.statusOptions()),hD(4),ey(lC(24,17,`observe.filter.corr`)),hD(2),qm(`value`,e.corrFilter()),Ar(`aria-label`,lC(26,19,`observe.filter.corr`))}}function se(n,t){if(n&1&&qS(0),n&2){let e=SS().$implicit;bd(` `,e.dur,` `)}}function de(n,t){n&1&&(da(0,`span`,9),qS(1,`—`),vd())}function ce(n,t){if(n&1&&(da(0,`code`,37),qS(1),vd()),n&2){let e=SS().$implicit;Ar(`title`,t),hD(),ey(e.cid)}}function pe(n,t){n&1&&(da(0,`span`,9),qS(1,`—`),vd())}function me(n,t){if(n&1&&qS(0),n&2){let e=SS().$implicit;bd(` `,e.e.detail,` `)}}function _e(n,t){n&1&&(da(0,`span`,9),qS(1,`—`),vd())}function ue(n,t){if(n&1&&(da(0,`tr`)(1,`td`)(2,`code`),qS(3),vd()(),da(4,`td`,35),qS(5),vd(),da(6,`td`,35),dS(7,se,1,1)(8,de,2,0,`span`,9),vd(),da(9,`td`),Sa(10,`ui-state-badge`,36),vd(),da(11,`td`),qS(12),vd(),da(13,`td`),dS(14,ce,2,2,`code`,37)(15,pe,2,0,`span`,9),vd(),da(16,`td`),dS(17,me,1,1)(18,_e,2,0,`span`,9),vd()()),n&2){let e,l=t.$implicit;Ar(`aria-rowindex`,l.position+1),hD(3),ey(l.e.kind),hD(2),ey(l.at),hD(2),hS(l.dur?7:8),hD(3),qm(`state`,l.tone)(`labelOverride`,l.e.status),hD(2),ey(l.e.origin),hD(2),hS((e=l.cidFull)?14:15,e),hD(3),hS(l.e.detail?17:18)}}function ve(n,t){if(n&1){let e=DS();da(0,`div`,31)(1,`table`,32)(2,`thead`)(3,`tr`)(4,`th`,33),qS(5),aC(6,`t`),vd(),da(7,`th`,33),qS(8),aC(9,`t`),vd(),da(10,`th`,33),qS(11),aC(12,`t`),vd(),da(13,`th`,33),qS(14),aC(15,`t`),vd(),da(16,`th`,33),qS(17),aC(18,`t`),vd(),da(19,`th`,33),qS(20),aC(21,`t`),vd(),da(22,`th`,33),qS(23),aC(24,`t`),vd()()(),da(25,`tbody`),mS(26,ue,19,9,`tr`,null,Q),vd()()(),da(28,`ui-pager`,34),aC(29,`t`),Ma(`pageChange`,function(p){Hh(e);let g=SS(2);return Vh(g.eventsPage.set(p))}),vd()}if(n&2){let e=SS(2);hD(),Ar(`aria-rowcount`,e.events().length+1),hD(4),ey(lC(6,12,`observe.col.kind`)),hD(3),ey(lC(9,14,`observe.col.at`)),hD(3),ey(lC(12,16,`observe.col.duration`)),hD(3),ey(lC(15,18,`observe.col.status`)),hD(3),ey(lC(18,20,`observe.col.origin`)),hD(3),ey(lC(21,22,`observe.col.correlation`)),hD(3),ey(lC(24,24,`observe.col.detail`)),hD(3),yS(e.pagedRows()),hD(2),qm(`total`,e.events().length)(`pageSize`,e.EVENTS_PAGE)(`page`,e.slice().page)(`label`,lC(29,26,`observe.events`))}}function ge(n,t){n&1&&(Sa(0,`ui-empty`,38),aC(1,`t`)),n&2&&qm(`title`,lC(1,1,`observe.noMatches`))}function ye(n,t){n&1&&(Sa(0,`ui-empty`,39),aC(1,`t`),aC(2,`t`)),n&2&&qm(`title`,lC(1,2,`observe.empty`))(`hint`,lC(2,4,`observe.empty.hint`))}function be(n,t){if(n&1&&dS(0,ge,2,3,`ui-empty`,38)(1,ye,3,6,`ui-empty`,39),n&2){let e=SS();hS(e.events.length?0:1)}}function fe(n,t){if(n&1&&(da(0,`section`,12)(1,`div`,13)(2,`div`)(3,`h2`),qS(4),aC(5,`t`),vd(),da(6,`p`,14)(7,`code`),qS(8,`GET /api/v1/metrics`),vd(),dS(9,ee,3,6,`span`),vd()()(),dS(10,ne,3,0,`div`,15)(11,ie,3,3,`p`,16),vd(),da(12,`section`,17)(13,`div`,13)(14,`div`)(15,`h2`),qS(16),aC(17,`t`),vd(),da(18,`p`,14)(19,`code`),qS(20,`GET /api/v1/metrics`),vd(),qS(21),aC(22,`t`),vd()()(),dS(23,ae,5,4,`p`,18),dS(24,le,27,21,`div`,19),dS(25,ve,30,28)(26,be,2,1),vd()),n&2){let e,l=t,p=SS();hD(4),ey(lC(5,8,`observe.counters`)),hD(5),hS((e=p.src.loadedAt())?9:-1,e),hD(),hS(p.counters().length?10:11),hD(6),ey(lC(17,10,`observe.events`)),hD(5),bd(` — `,uC(22,12,`observe.generatedAt`,rC(15,q,p.fmt(l.generated_at))),` `),hD(2),hS(l.truncated?23:-1),hD(),hS(l.events.length?24:-1),hD(),hS(p.events().length?25:26)}}var Y=class n{api=p(g);cid=rn(``);src=new l;report=tn(()=>this.src.data());kindFilter=k(null);statusFilter=k(null);corrFilter=k(``);eventsPage=k(0);EVENTS_PAGE=100;counters=tn(()=>Object.entries(this.report()?.counters??{}).map(([t,e])=>({key:t,value:e})).sort((t,e)=>t.key.localeCompare(e.key)));kindOptions=tn(()=>[...new Set((this.report()?.events??[]).map(t=>t.kind))].sort((t,e)=>t.localeCompare(e)));statusOptions=tn(()=>[...new Set((this.report()?.events??[]).map(t=>t.status))].sort((t,e)=>t.localeCompare(e)));events=tn(()=>{let t=this.kindFilter(),e=this.statusFilter(),l=this.corrFilter().trim();return(this.report()?.events??[]).filter(p=>(t===null||p.kind===t)&&(e===null||p.status===e)&&(l===``||(p.correlation_id??``).includes(l))).slice().sort((p,g)=>this.timeOf(g.at)-this.timeOf(p.at))});slice=tn(()=>V(this.events().length,this.EVENTS_PAGE,this.eventsPage()));pagedRows=tn(()=>this.events().slice(this.slice().start,this.slice().end).map((t,e)=>({e:t,position:this.slice().start+e+1,at:this.fmt(t.at),tone:this.statusKind(t.status),dur:t.duration_ms!==null?`${t.duration_ms} ms`:null,cid:t.correlation_id?this.short(t.correlation_id):null,cidFull:t.correlation_id})));stamp=y;constructor(){Oo(()=>{this.events(),this.eventsPage.set(0)}),this.load()}ngOnInit(){let t=this.cid();t&&this.corrFilter.set(t)}async load(){await this.src.load(()=>this.api.metrics())}setKind(t){let e=t.target.value;this.kindFilter.set(e===``?null:e)}setStatus(t){let e=t.target.value;this.statusFilter.set(e===``?null:e)}setCorr(t){this.corrFilter.set(t.target.value)}statusKind(t){let e=(t||``).toLowerCase();return[`ok`,`done`,`completed`,`success`,`succeeded`,`pass`,`passed`].includes(e)?`supported`:[`failed`,`fail`,`error`,`refused`,`denied`].includes(e)?`error`:[`skipped`,`cancelled`,`canceled`,`partial`,`degraded`].includes(e)?`warn`:[`running`,`pending`,`started`,`in_progress`,`planning`,`verifying`].includes(e)?`info`:`muted`}timeOf(t){let e=Date.parse(t);return Number.isNaN(e)?Number.NEGATIVE_INFINITY:e}fmt(t){let e=new Date(t);return Number.isNaN(e.getTime())?t:e.toLocaleString()}short(t){return t.length>10?`${t.slice(0,8)}\u2026`:t}static ɵfac=function(e){return new(e||n)};static ɵcmp=ei({type:n,selectors:[[`page-observe`]],inputs:{cid:[1,`cid`]},decls:16,vars:19,consts:[[3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[`data-section`,`local-only`,`role`,`note`,1,`local`],[`name`,`shield-check`,3,`size`],[`data-section`,`unavailable`,`role`,`note`,1,`card`,`unv`],[3,`error`],[`role`,`status`,1,`card`],[`state`,`UNVERIFIED`],[1,`muted`],[3,`retry`,`error`],[`kind`,`row`,3,`lines`],[`data-section`,`counters`,1,`card`],[1,`sec__head`],[1,`src`],[1,`counters`],[`data-empty`,`counters`,1,`muted`],[`data-section`,`events`,1,`card`],[`data-note`,`truncated`,`role`,`note`,1,`truncated`],[`data-section`,`filters`,1,`filters`],[1,`counter`],[1,`counter__value`],[1,`counter__key`],[`name`,`alert`,3,`size`],[1,`filter`],[1,`filter__lbl`],[`data-filter`,`kind`,1,`select`,3,`change`],[`value`,``,3,`selected`],[3,`value`,`selected`],[`data-filter`,`status`,1,`select`,3,`change`],[`type`,`search`,`data-filter`,`correlation`,1,`input`,3,`input`,`value`],[1,`table-wrap`],[1,`table`],[`scope`,`col`],[3,`pageChange`,`total`,`pageSize`,`page`,`label`],[1,`nowrap`],[3,`state`,`labelOverride`],[1,`corr`],[`icon`,`search`,`data-empty`,`no-matches`,3,`title`],[`icon`,`inbox`,`data-empty`,`events`,3,`title`,`hint`]],template:function(e,l){if(e&1&&(da(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),da(3,`button`,1),Ma(`click`,function(){return l.load()}),Sa(4,`ui-icon`,2),qS(5),aC(6,`t`),vd()(),da(7,`p`,3),Sa(8,`ui-icon`,4),da(9,`span`),qS(10),aC(11,`t`),vd()(),dS(12,W,5,3,`section`,5),dS(13,X,1,1,`ui-error`,6),dS(14,Z,3,4,`section`,7),dS(15,fe,27,17)),e&2){let p,g;qm(`title`,lC(1,11,`observe.title`))(`subtitle`,lC(2,13,`observe.subtitle`)),hD(3),qm(`disabled`,l.src.loading()),hD(),qm(`size`,15),hD(),bd(` `,lC(6,15,`state.refresh`),` `),hD(3),qm(`size`,15),hD(2),ey(lC(11,17,`observe.localOnly`)),hD(2),hS(l.src.unavailable()?12:-1),hD(),hS((p=l.src.error())?13:-1,p),hD(),hS(l.src.loading()&&!l.report()?14:-1),hD(),hS((g=l.report())?15:-1,g)}},dependencies:[T,I,_,D,cE,k$1,k$2,aE],styles:[`.local[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:0 0 var(--%NS%space-4);padding:var(--%NS%space-3);border:1px dashed var(--%NS%border);border-radius:var(--%NS%radius-md);color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm)}.local[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{flex:none}.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.sec__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650}.src[_ngcontent-%COMP%]{margin:4px 0 0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.unv[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.counters[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--%NS%space-3)}.counter[_ngcontent-%COMP%]{display:grid;gap:2px;padding:var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:color-mix(in srgb,var(--%NS%bg-hover) 40%,transparent)}.counter__value[_ngcontent-%COMP%]{font-family:var(--%NS%font-mono);font-size:var(--%NS%font-2xl);font-weight:650}.counter__key[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);overflow-wrap:anywhere}.truncated[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:0 0 var(--%NS%space-3);padding:var(--%NS%space-2) var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm)}.truncated[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%warn);flex:none}.filters[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.filter[_ngcontent-%COMP%]{display:grid;gap:4px;min-width:160px}.filter[_ngcontent-%COMP%] .input[_ngcontent-%COMP%]{min-width:200px}.filter__lbl[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);text-transform:uppercase;letter-spacing:.04em}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.table[_ngcontent-%COMP%]{min-width:820px}.nowrap[_ngcontent-%COMP%]{white-space:nowrap}.corr[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs)}`]})};export{Y as ObservePage}; \ No newline at end of file diff --git a/portal/assets/chunk-D67lmMI_.js b/portal/assets/chunk-D67lmMI_.js deleted file mode 100644 index 5877899..0000000 --- a/portal/assets/chunk-D67lmMI_.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as da,Et as p,F as Wm,Gt as wS,K as aC,Lt as tn,M as Ta,Mt as sC,N as Uh,P as WS,Q as cE,Tt as oC,X as bS,Xt as yd,Z as ba,ct as gS,ft as hS,h as Jm,ht as jh,it as ei,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,xt as nC,yt as mS,zt as uS}from"./chunk-BelLryvf.js";import{r as g}from"./main-A2NKRJGT.js";import{a as l,s as y}from"./chunk-0WpwvubF.js";import{t as _}from"./chunk-BKRLVsID.js";import{t as D}from"./chunk-CiuPOfJ0.js";import{n as k,t as I}from"./chunk-D2KAfPv6.js";import{t as T}from"./chunk-BBusSOqc.js";var H=e=>({time:e});var L=(e,r)=>r.file;function R(e,r){e&1&&(da(0,`section`,3),ba(1,`ui-state-badge`,6),da(2,`span`,7),WS(3),oC(4,`t`),yd()()),e&2&&(hD(3),Jm(sC(4,1,`versions.unavailable`)))}function q(e,r){if(e&1){let a=wS();da(0,`ui-error`,8),Ta(`retry`,function(){jh(a);let y=bS();return Uh(y.load())}),yd()}e&2&&Wm(`error`,r)}function J(e,r){e&1&&(da(0,`section`,5),oC(1,`t`),ba(2,`ui-skeleton`,9),yd()),e&2&&(Ar(`aria-label`,sC(1,2,`state.loading`)),hD(2),Wm(`lines`,3))}function K(e,r){if(e&1&&(da(0,`span`),WS(1),oC(2,`t`),yd()),e&2){let a=bS(2);hD(),Dd(` · `,aC(2,1,`common.updatedAt`,nC(4,H,a.stamp(r))))}}function Q(e,r){if(e&1&&(da(0,`code`),WS(1),yd()),e&2){let a=bS();hD(),Jm(a.installed.version)}}function W(e,r){e&1&&(da(0,`span`,15),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Dd(`— `,sC(2,1,`state.unverified`)))}function X(e,r){if(e&1&&(da(0,`code`),WS(1),yd()),e&2){let a=bS();hD(),Jm(a.installed.origin)}}function Y(e,r){e&1&&(da(0,`span`,15),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Dd(`— `,sC(2,1,`state.unverified`)))}function Z(e,r){if(e&1&&WS(0),e&2){let a=bS();Dd(` `,a.installed.channel,` `)}}function ee(e,r){e&1&&(da(0,`span`,15),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Dd(`— `,sC(2,1,`state.unverified`)))}function ie(e,r){if(e&1&&(da(0,`dl`,14)(1,`div`)(2,`dt`),WS(3),oC(4,`t`),yd(),da(5,`dd`)(6,`code`),WS(7),yd()()()()),e&2){let a=bS();hD(3),Jm(sC(4,2,`versions.available.version`)),hD(4),Jm(a.available.version)}}function te(e,r){e&1&&(da(0,`div`,18),ba(1,`ui-state-badge`,6),da(2,`span`),WS(3),oC(4,`t`),yd()()),e&2&&(hD(3),Jm(sC(4,1,`versions.offline`)))}function ne(e,r){if(e&1&&(da(0,`code`),WS(1),yd()),e&2){let a=bS(2);hD(),Jm(a.integrity.manifest_release)}}function ae(e,r){e&1&&(da(0,`span`,15),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Dd(`— `,sC(2,1,`state.unverified`)))}function oe(e,r){if(e&1&&(da(0,`code`,33),WS(1),yd()),e&2){let a=bS(2);hD(),Jm(a.integrity.manifest_sha256)}}function re(e,r){e&1&&(da(0,`span`,15),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Dd(`— `,sC(2,1,`state.unverified`)))}function de(e,r){if(e&1&&(da(0,`section`,19)(1,`div`,11)(2,`div`)(3,`h2`),ba(4,`ui-icon`,24),WS(5),oC(6,`t`),yd()()(),da(7,`dl`,14)(8,`div`)(9,`dt`),WS(10),oC(11,`t`),yd(),da(12,`dd`),uS(13,ne,2,1,`code`)(14,ae,3,3,`span`,15),yd()(),da(15,`div`)(16,`dt`),WS(17),oC(18,`t`),yd(),da(19,`dd`),uS(20,oe,2,1,`code`,33)(21,re,3,3,`span`,15),yd()()()()),e&2){let a=bS();hD(4),Wm(`size`,15),hD(),Jm(sC(6,6,`versions.integrity`)),hD(5),Jm(sC(11,8,`versions.integrity.release`)),hD(3),fS(a.integrity.manifest_release?13:14),hD(4),Jm(sC(18,10,`versions.integrity.sha256`)),hD(3),fS(a.integrity.manifest_sha256?20:21)}}function le(e,r){if(e&1&&(da(0,`div`)(1,`dt`),WS(2),oC(3,`t`),yd(),da(4,`dd`),WS(5),yd()()),e&2){let a=bS(2);hD(2),Jm(sC(3,2,`versions.pending.updates`)),hD(3),Jm(a.pending)}}function pe(e,r){if(e&1&&(da(0,`div`)(1,`dt`),WS(2),oC(3,`t`),yd(),da(4,`dd`),WS(5),yd()()),e&2){let a=bS(2);hD(2),Jm(sC(3,2,`versions.pending.plan`)),hD(3),Jm(a.upgrade_plan)}}function se(e,r){if(e&1&&(da(0,`dl`,14),uS(1,le,6,4,`div`),uS(2,pe,6,4,`div`),yd()),e&2){let a=bS();hD(),fS(a.pending?1:-1),hD(),fS(a.upgrade_plan?2:-1)}}function ce(e,r){e&1&&(da(0,`div`,21),ba(1,`ui-state-badge`,6),da(2,`span`),WS(3),oC(4,`t`),yd()()),e&2&&(hD(3),Jm(sC(4,1,`versions.pending.cli`)))}function me(e,r){if(e&1&&(da(0,`tr`)(1,`td`)(2,`code`),WS(3),yd()(),da(4,`td`),WS(5),yd(),da(6,`td`),WS(7),yd()()),e&2){let a=r.$implicit;hD(3),Jm(a.file),hD(2),Jm(a.operation??`—`),hD(2),Jm(a.status??`—`)}}function _e(e,r){if(e&1&&(da(0,`section`,22)(1,`div`,11)(2,`div`)(3,`h2`),ba(4,`ui-icon`,12),WS(5),oC(6,`t`),yd()()(),da(7,`div`,28)(8,`table`,34)(9,`thead`)(10,`tr`)(11,`th`,35),WS(12),oC(13,`t`),yd(),da(14,`th`,35),WS(15),oC(16,`t`),yd(),da(17,`th`,35),WS(18),oC(19,`t`),yd()()(),da(20,`tbody`),gS(21,me,8,3,`tr`,null,L),yd()()()()),e&2){let a=bS();hD(4),Wm(`size`,15),hD(),Jm(sC(6,5,`versions.receipts`)),hD(7),Jm(sC(13,7,`versions.receipts.file`)),hD(3),Jm(sC(16,9,`versions.receipts.operation`)),hD(3),Jm(sC(19,11,`versions.receipts.status`)),hD(3),mS(a.receipts)}}function ve(e,r){if(e&1&&(da(0,`pre`,25),WS(1),yd()),e&2){let a=bS();hD(),Jm(a.changelog)}}function xe(e,r){e&1&&(da(0,`p`,15),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Dd(`— `,sC(2,1,`state.unverified`)))}function ue(e,r){if(e&1&&(da(0,`code`),WS(1),yd()),e&2){let a=bS().$implicit;hD(),Jm(a.version)}}function ye(e,r){e&1&&(da(0,`span`,15),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Dd(`— `,sC(2,1,`state.unverified`)))}function ge(e,r){if(e&1&&WS(0),e&2){let a=bS().$implicit,s=bS(3);Dd(` `,s.fmt(a.at),` `)}}function fe(e,r){e&1&&(da(0,`span`,7),WS(1,`—`),yd())}function Ce(e,r){if(e&1&&WS(0),e&2){let a=bS().$implicit;Dd(` `,a.detail,` `)}}function Se(e,r){e&1&&(da(0,`span`,7),WS(1,`—`),yd())}function be(e,r){if(e&1&&(da(0,`tr`)(1,`td`),uS(2,ue,2,1,`code`)(3,ye,3,3,`span`,15),yd(),da(4,`td`,36),uS(5,ge,1,1)(6,fe,2,0,`span`,7),yd(),da(7,`td`),uS(8,Ce,1,1)(9,Se,2,0,`span`,7),yd()()),e&2){let a=r.$implicit;hD(2),fS(a.version?2:3),hD(3),fS(a.at?5:6),hD(3),fS(a.detail?8:9)}}function Ee(e,r){if(e&1&&(da(0,`div`,28)(1,`table`,34)(2,`thead`)(3,`tr`)(4,`th`,35),WS(5),oC(6,`t`),yd(),da(7,`th`,35),WS(8),oC(9,`t`),yd(),da(10,`th`,35),WS(11),oC(12,`t`),yd()()(),da(13,`tbody`),gS(14,be,10,3,`tr`,null,hS),yd()()()),e&2){let a=bS();hD(5),Jm(sC(6,3,`versions.history.version`)),hD(3),Jm(sC(9,5,`versions.history.at`)),hD(3),Jm(sC(12,7,`versions.history.detail`)),hD(3),mS(a.history)}}function he(e,r){e&1&&(ba(0,`ui-empty`,29),oC(1,`t`)),e&2&&Wm(`title`,sC(1,1,`versions.history.empty`))}function Pe(e,r){if(e&1&&(da(0,`p`,32)(1,`code`),WS(2),yd()()),e&2){let a=bS();hD(2),Jm(a.rollback.hint)}}function Ie(e,r){if(e&1&&(da(0,`section`,10)(1,`div`,11)(2,`div`)(3,`h2`),ba(4,`ui-icon`,12),WS(5),oC(6,`t`),yd(),da(7,`p`,13)(8,`code`),WS(9,`GET /api/v1/versions`),yd(),uS(10,K,3,6,`span`),yd()()(),da(11,`dl`,14)(12,`div`)(13,`dt`),WS(14),oC(15,`t`),yd(),da(16,`dd`),uS(17,Q,2,1,`code`)(18,W,3,3,`span`,15),yd()(),da(19,`div`)(20,`dt`),WS(21),oC(22,`t`),yd(),da(23,`dd`),uS(24,X,2,1,`code`)(25,Y,3,3,`span`,15),yd()(),da(26,`div`)(27,`dt`),WS(28),oC(29,`t`),yd(),da(30,`dd`),uS(31,Z,1,1)(32,ee,3,3,`span`,15),yd()(),da(33,`div`)(34,`dt`),WS(35),oC(36,`t`),yd(),da(37,`dd`)(38,`code`),WS(39),yd()()()()(),da(40,`section`,16)(41,`div`,11)(42,`div`)(43,`h2`),ba(44,`ui-icon`,17),WS(45),oC(46,`t`),yd(),da(47,`p`,13),WS(48),oC(49,`t`),da(50,`code`),WS(51),yd()()()(),uS(52,ie,8,4,`dl`,14)(53,te,5,3,`div`,18),yd(),uS(54,de,22,12,`section`,19),da(55,`section`,20)(56,`div`,11)(57,`div`)(58,`h2`),ba(59,`ui-icon`,2),WS(60),oC(61,`t`),yd()()(),uS(62,se,3,2,`dl`,14)(63,ce,5,3,`div`,21),yd(),uS(64,_e,23,13,`section`,22),da(65,`section`,23)(66,`div`,11)(67,`div`)(68,`h2`),ba(69,`ui-icon`,24),WS(70),oC(71,`t`),yd()()(),uS(72,ve,2,1,`pre`,25)(73,xe,3,3,`p`,15),yd(),da(74,`section`,26)(75,`div`,11)(76,`div`)(77,`h2`),ba(78,`ui-icon`,27),WS(79),oC(80,`t`),yd()()(),uS(81,Ee,16,9,`div`,28)(82,he,2,3,`ui-empty`,29),yd(),da(83,`section`,30)(84,`div`,11)(85,`div`)(86,`h2`),ba(87,`ui-icon`,2),WS(88),oC(89,`t`),yd()(),ba(90,`ui-state-badge`,31),yd(),uS(91,Pe,3,1,`p`,32),yd()),e&2){let a,s=r,y=bS();hD(4),Wm(`size`,15),hD(),Jm(sC(6,31,`versions.installed`)),hD(5),fS((a=y.src.loadedAt())?10:-1,a),hD(4),Jm(sC(15,33,`versions.installed.version`)),hD(3),fS(s.installed.version?17:18),hD(4),Jm(sC(22,35,`versions.installed.origin`)),hD(3),fS(s.installed.origin?24:25),hD(4),Jm(sC(29,37,`versions.installed.channel`)),hD(3),fS(s.installed.channel?31:32),hD(4),Jm(sC(36,39,`versions.compat`)),hD(4),Jm(s.compat),hD(5),Wm(`size`,15),hD(),Jm(sC(46,41,`versions.available`)),hD(3),Dd(` `,sC(49,43,`versions.available.source`),`: `),hD(3),Jm(s.available.source),hD(),fS(s.available.version?52:53),hD(2),fS(s.integrity?54:-1),hD(5),Wm(`size`,15),hD(),Jm(sC(61,45,`versions.pending`)),hD(2),fS(s.pending||s.upgrade_plan?62:63),hD(2),fS(s.receipts?.length?64:-1),hD(5),Wm(`size`,15),hD(),Jm(sC(71,47,`versions.changelog`)),hD(2),fS(s.changelog?72:73),hD(6),Wm(`size`,15),hD(),Jm(sC(80,49,`versions.history`)),hD(2),fS(s.history.length?81:82),hD(6),Wm(`size`,15),hD(),Jm(sC(89,51,`versions.rollback`)),hD(2),Wm(`state`,s.rollback.supported?`supported`:`unsupported`),hD(),fS(s.rollback.hint?91:-1)}}var G=class e{api=p(g);src=new l;info=tn(()=>this.src.data());stamp=y;constructor(){this.load()}async load(){await this.src.load(()=>this.api.versions())}fmt(r){let a=new Date(r);return Number.isNaN(a.getTime())?r:a.toLocaleString()}static ɵfac=function(a){return new(a||e)};static ɵcmp=ei({type:e,selectors:[[`page-versions`]],decls:11,vars:15,consts:[[3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[`data-section`,`unavailable`,`role`,`note`,1,`card`,`unv`],[3,`error`],[`role`,`status`,1,`card`],[`state`,`UNVERIFIED`],[1,`muted`],[3,`retry`,`error`],[`kind`,`row`,3,`lines`],[`data-section`,`installed`,1,`card`],[1,`sec__head`],[`name`,`install`,3,`size`],[1,`src`],[1,`kv`],[`data-unverified`,``,1,`muted`],[`data-section`,`available`,1,`card`],[`name`,`external`,3,`size`],[`data-note`,`offline`,`role`,`note`,1,`unv`],[`data-section`,`integrity`,1,`card`],[`data-section`,`pending`,1,`card`],[`data-note`,`cli`,`role`,`note`,1,`unv`],[`data-section`,`receipts`,1,`card`],[`data-section`,`changelog`,1,`card`],[`name`,`knowledge`,3,`size`],[1,`changelog`],[`data-section`,`history`,1,`card`],[`name`,`history`,3,`size`],[1,`table-wrap`],[`icon`,`history`,3,`title`],[`data-section`,`rollback`,1,`card`],[3,`state`],[1,`hint`],[1,`hash`],[1,`table`],[`scope`,`col`],[1,`nowrap`]],template:function(a,s){if(a&1&&(da(0,`ui-page-header`,0),oC(1,`t`),oC(2,`t`),da(3,`button`,1),Ta(`click`,function(){return s.load()}),ba(4,`ui-icon`,2),WS(5),oC(6,`t`),yd()(),uS(7,R,5,3,`section`,3),uS(8,q,1,1,`ui-error`,4),uS(9,J,3,4,`section`,5),uS(10,Ie,92,53)),a&2){let y,S;Wm(`title`,sC(1,9,`versions.title`))(`subtitle`,sC(2,11,`versions.subtitle`)),hD(3),Wm(`disabled`,s.src.loading()),hD(),Wm(`size`,15),hD(),Dd(` `,sC(6,13,`state.refresh`),` `),hD(2),fS(s.src.unavailable()?7:-1),hD(),fS((y=s.src.error())?8:-1,y),hD(),fS(s.src.loading()&&!s.info()?9:-1),hD(),fS((S=s.info())?10:-1,S)}},dependencies:[T,I,_,D,cE,k,aE],styles:[`.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.sec__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.src[_ngcontent-%COMP%]{margin:4px 0 0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.unv[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.kv[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin:0}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{min-width:9rem;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm);flex:none}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;min-width:0;overflow-wrap:anywhere}.changelog[_ngcontent-%COMP%]{margin:0;padding:var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:var(--%NS%bg);font-size:var(--%NS%font-xs);overflow-x:auto;white-space:pre-wrap}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.nowrap[_ngcontent-%COMP%]{white-space:nowrap}.hint[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-sm);overflow-wrap:anywhere}`]})};export{G as VersionsPage}; \ No newline at end of file diff --git a/portal/assets/chunk-D84lgeyr.js b/portal/assets/chunk-D84lgeyr.js deleted file mode 100644 index ae8706f..0000000 --- a/portal/assets/chunk-D84lgeyr.js +++ /dev/null @@ -1 +0,0 @@ -import{i as l,r as k}from"./chunk-DjkjLihA.js";import{$ as da,B as ZS,Dt as pS,Et as p,F as Wm,Gt as wS,K as aC,Lt as tn,M as Ta,Mt as sC,N as Uh,Ot as rC,P as WS,Pt as tC,Q as cE,S as Oo,T as Pg,Tt as oC,U as _a,V as _S,Wt as ve,X as bS,Xt as yd,Yt as yc,Z as ba,_t as kU,at as ey,ct as gS,dt as hE,ft as hS,gt as k$1,h as Jm,ht as jh,it as ei$1,jt as ry,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,wt as ny,xt as nC,yt as mS,z as Ym,zt as uS}from"./chunk-BelLryvf.js";import{r as g,t as g$1}from"./main-A2NKRJGT.js";import{a as l$1,n as c,s as y}from"./chunk-0WpwvubF.js";import{t as _}from"./chunk-BKRLVsID.js";import{t as D$1}from"./chunk-CiuPOfJ0.js";import{n as k$2,t as I}from"./chunk-D2KAfPv6.js";import{t as T}from"./chunk-BBusSOqc.js";import{a as T$1,n as G,r as H}from"./chunk-DJd3bKJi.js";import{l as x,o as m,r as F,s as p$1,t as e}from"./chunk-B5UUjcvD.js";import{t as h}from"./chunk-D34eMkm4.js";import{t as r}from"./chunk-DuZy_X7l.js";function W(i){let t=new Map,e=new Map,a=new Map;for(let o of i.nodes)t.set(o.id,[]),e.set(o.id,[]),a.set(o.id,0);for(let o of i.edges)t.get(o.source)?.push(o),e.get(o.target)?.push(o),a.set(o.source,(a.get(o.source)??0)+1),a.set(o.target,(a.get(o.target)??0)+1);return{out:t,in:e,degree:a}}var $e=(i,t,e)=>t===`out`?i.out.get(e)??[]:t===`in`?i.in.get(e)??[]:[...i.out.get(e)??[],...i.in.get(e)??[]];var Le=(i,t,e)=>t===`out`?i.target:t===`in`?i.source:i.source===e?i.target:i.source;function ze(i,t,e=`out`,a=1/0){let o=W(i),s=new Map([[t,0]]),m=new Map,h=[t];for(let S=0;S=a))for(let M of $e(o,e,G)){let V=Le(M,e,G);s.has(V)||(s.set(V,g+1),m.set(M.id,M),h.push(V))}}s.delete(t);return{nodes:[...s.entries()].map(([S,G])=>({id:S,dist:G})).sort((S,G)=>S.dist-G.dist||(S.idS.id[o.id,o.id])),e=o=>{let s=o;for(;t.get(s)!==s;)s=t.get(s);for(;t.get(o)!==o;){let m=t.get(o);t.set(o,s),o=m}return s};for(let o of i.edges){let s=e(o.source),m=e(o.target);s!==m&&t.set(s,m)}let a=new Map;for(let o of i.nodes){let s=e(o.id);(a.get(s)??a.set(s,[]).get(s)).push(o.id)}return[...a.values()].map(o=>o.sort()).sort((o,s)=>s.length-o.length||(o[0]S.id)){if(e.has(N))continue;let S=[{v:N,it:[...t.out.get(N)??[]]}];for(e.set(N,h),a.set(N,h++),s.push(N),o.add(N);S.length;){let G=S[S.length-1],g=G.it.shift();if(!g){if(S.pop(),a.get(G.v)===e.get(G.v)){let V=[],E;do E=s.pop(),o.delete(E),V.push(E);while(E!==G.v);(V.length>1||O.has(V[0]))&&m.push(V.sort())}if(S.length){let V=S[S.length-1].v;a.set(V,Math.min(a.get(V),a.get(G.v)))}continue}let M=g.target;e.has(M)?o.has(M)&&a.set(G.v,Math.min(a.get(G.v),e.get(M))):(e.set(M,h),a.set(M,h++),s.push(M),o.add(M),S.push({v:M,it:[...t.out.get(M)??[]]}))}}return m.sort((N,S)=>N[0]E.idE.id),...o.nodes.map(E=>E.id)]),O=rt(i).find(E=>E.includes(t)),N=W(i),G=dt(i).filter(E=>E.some(Q=>h.has(Q))),g=new Set(i.nodes.filter(E=>E.unverified).map(E=>E.id)),M=m.filter(E=>i.sources[E.evidence]?.state!==`loaded`||g.has(E.source)||g.has(E.target)),V=Object.keys(i.sources).filter(E=>i.sources[E].state!==`loaded`);return{root:t,depth:e,uses:a.nodes,usedBy:o.nodes,edges:m,componentSize:O?.length??1,cycles:G,orphan:(N.degree.get(t)??0)===0,unverifiedNodes:[...h].filter(E=>g.has(E)).sort(),unverifiedEdges:M,missingSources:V,coverage:{loaded:Object.keys(i.sources).length-V.length,total:Object.keys(i.sources).length}}}var ne=`forge-portal/graph-view/v1`;var je=`forge-portal/GraphView/v1`;var pt=new Set([`cose`,`concentric`,`grid`,`breadthfirst`,`circle`]);var ct=new Set([`forge`,`capability`,`skill`,`agent`,`mcp`,`host`,`operation`]);var _t=new Set([`kind`,`forge`,`host`]);var te=i=>typeof i==`string`?i:null;var ie=i=>typeof i==`number`&&Number.isFinite(i)?i:null;function ut(i){if(!i||typeof i!=`object`)return null;let t=i;if(t.schema!==je)return null;let e=t.mode===`list`||t.mode===`canvas`?t.mode:null,a=pt.has(t.layout)?t.layout:null;if(!e||!a)return null;let o=t.viewport,s=o&&typeof o==`object`?(()=>{let h=o,O=ie(h.zoom),N=ie(h.panX),S=ie(h.panY);return O!==null&&N!==null&&S!==null?{zoom:O,panX:N,panY:S}:null})():null,m=_t.has(t.groupBy)?t.groupBy:null;return{schema:je,mode:e,layout:a,query:te(t.query)??``,kind:ct.has(t.kind)?t.kind:null,selectedNode:te(t.selectedNode),selectedEdge:te(t.selectedEdge),viewport:s,groupBy:m,collapsedGroups:Array.isArray(t.collapsedGroups)?t.collapsedGroups.filter(h=>typeof h==`string`):[]}}function Ke(i){if(!i)return null;try{let t=i.getItem(ne);return t?ut(JSON.parse(t)):null}catch{return null}}function Ue(i,t){if(!i)return!1;try{return i.setItem(ne,JSON.stringify(t)),!0}catch{return!1}}function We(i){try{i?.removeItem(ne)}catch{}}var ae=`forge-portal/graph-snapshot/v1`;var Je=`forge-portal/GraphSnapshot/v1`;var Ye=i=>k(k({id:i.id,kind:i.kind,label:i.label,unverified:i.unverified,evidence:[...i.evidence]},i.state!==void 0?{state:i.state}:{}),i.origin!==void 0?{origin:i.origin}:{});var Qe=i=>({id:i.id,source:i.source,target:i.target,kind:i.kind,evidence:i.evidence});function Xe(i,t){return{schema:Je,capturedAt:t,nodes:i.nodes.map(Ye),edges:i.edges.map(Qe)}}var gt=(i,t)=>i.kind===t.kind&&i.label===t.label&&i.unverified===t.unverified&&i.state===t.state&&i.origin===t.origin&&i.evidence.join(`,`)===t.evidence.join(`,`);var mt=(i,t)=>i.kind===t.kind&&i.evidence===t.evidence;function oe(i,t){let e=new Map(t.nodes.map(g=>[g.id,Ye(g)])),a=new Map(t.edges.map(g=>[g.id,Qe(g)])),o=new Map(i.nodes.map(g=>[g.id,g])),s=new Map(i.edges.map(g=>[g.id,g])),m=[...e.values()].filter(g=>!o.has(g.id)),h=[...o.values()].filter(g=>!e.has(g.id)),O=[...e.values()].filter(g=>o.has(g.id)&&!gt(o.get(g.id),g)).map(g=>({id:g.id,before:o.get(g.id),after:g})),N=[...a.values()].filter(g=>!s.has(g.id)),S=[...s.values()].filter(g=>!a.has(g.id)),G=[...a.values()].filter(g=>s.has(g.id)&&!mt(s.get(g.id),g)).map(g=>({id:g.id,before:s.get(g.id),after:g}));return{snapshot:i.capturedAt,addedNodes:m,removedNodes:h,changedNodes:O,addedEdges:N,removedEdges:S,changedEdges:G,unchanged:!m.length&&!h.length&&!O.length&&!N.length&&!S.length&&!G.length}}function Ze(i){let t=new Map;for(let a of i.addedNodes)t.set(a.id,`added`);for(let a of i.changedNodes)t.set(a.id,`changed`);let e=new Map;for(let a of i.addedEdges)e.set(a.id,`added`);for(let a of i.changedEdges)e.set(a.id,`changed`);return{nodes:t,edges:e}}function et(i){if(!i)return null;try{let t=i.getItem(ae);if(!t)return null;let e=JSON.parse(t);return e?.schema!==Je||!Array.isArray(e.nodes)||!Array.isArray(e.edges)||typeof e.capturedAt!=`string`?null:e}catch{return null}}function tt(i,t){if(!i)return!1;try{return i.setItem(ae,JSON.stringify(t)),!0}catch{return!1}}function it(i){try{i?.removeItem(ae)}catch{}}var ht=[`canvasEl`];var Y=i=>({count:i});var at=i=>({at:i});var ft=()=>[1,2,3];var vt=(i,t)=>({loaded:i,total:t});var D=(i,t)=>t.id;var ot=(i,t)=>t[0];function yt(i,t){if(i&1){let e=wS();da(0,`ui-error`,7),Ta(`retry`,function(){jh(e);let o=bS();return Uh(o.load())}),yd()}i&2&&Wm(`error`,t)}function xt(i,t){i&1&&(da(0,`div`,5),oC(1,`t`),ba(2,`ui-skeleton`,8),yd()),i&2&&(Ar(`aria-label`,sC(1,2,`state.loading`)),hD(2),Wm(`lines`,2))}function Ct(i,t){if(i&1&&(da(0,`a`,11),WS(1),oC(2,`t`),ba(3,`ui-icon`,13),yd()),i&2){let e=bS(2);Wm(`href`,e.studio_url,Pg),hD(),Dd(` `,sC(2,3,`graph.open`),` `),hD(2),Wm(`size`,14)}}function bt(i,t){if(i&1&&(da(0,`li`)(1,`strong`),ba(2,`ui-icon`,14),WS(3),yd(),da(4,`span`,15),WS(5),oC(6,`t`),oC(7,`t`),yd()()),i&2){let e=t.$implicit,a=bS(3);hD(2),Wm(`size`,14),hD(),Jm(a.viewName(e)),hD(2),ey(` `,aC(6,4,`graph.nodes`,nC(10,Y,a.viewNodes(e))),` · `,aC(7,7,`graph.edges`,nC(12,Y,a.viewEdges(e))),` `)}}function St(i,t){if(i&1&&(da(0,`section`,9),uS(1,Ct,4,5,`a`,11),da(2,`ul`,12),gS(3,bt,8,14,`li`,null,hS),yd()()),i&2){let e=bS();hD(),fS(e.studio_url?1:-1),hD(2),mS(e.views)}}function Et(i,t){if(i&1&&(ba(0,`ui-empty`,10),oC(1,`t`),oC(2,`t`)),i&2){let e=bS();Wm(`title`,sC(1,2,`graph.unavailable`))(`hint`,e.availability.unlock??sC(2,4,`graph.buildHint`))}}function wt(i,t){i&1&&uS(0,St,5,1,`section`,9)(1,Et,3,6,`ui-empty`,10),i&2&&fS(t.availability.state===`available`?0:1)}function kt(i,t){if(i&1&&(da(0,`li`)(1,`code`),WS(2),yd(),ba(3,`ui-state-badge`,35),oC(4,`t`),yd()),i&2){let e=t.$implicit,a=bS(2);Ar(`data-source`,e.id)(`data-state`,e.info.state),hD(2),Jm(e.info.endpoint),hD(),Wm(`state`,a.sourceBadge(e.info.state))(`labelOverride`,sC(4,5,`graph.source.`+e.info.state))}}function Pt(i,t){if(i&1){let e=wS();da(0,`div`,27)(1,`span`),WS(2),oC(3,`t`),yd(),da(4,`button`,36),Ta(`click`,function(){jh(e);let o=bS(),s=bS();return Uh(s.toggleDiff(o))}),ba(5,`ui-icon`,37),WS(6),oC(7,`t`),yd(),da(8,`button`,38),Ta(`click`,function(){jh(e);let o=bS(2);return Uh(o.dropSnapshot())}),WS(9),oC(10,`t`),yd()()}if(i&2){let e=bS(2);hD(2),Jm(aC(3,6,`graph.snap.at`,nC(13,at,e.stampAt(t.capturedAt)))),hD(2),Ar(`data-tone`,e.diff()?`accent`:null)(`aria-pressed`,e.diff()!==null),hD(),Wm(`size`,13),hD(),Dd(` `,sC(7,9,`graph.snap.compare`),` `),hD(3),Dd(` `,sC(10,11,`graph.snap.clear`),` `)}}function Gt(i,t){if(i&1){let e=wS();da(0,`button`,40),Ta(`click`,function(){let o=jh(e).$implicit,s=bS(3);return Uh(s.toggleKind(o))}),WS(1),yd()}if(i&2){let e=t.$implicit,a=bS(2),o=bS();Ar(`data-tone`,o.kind()===e?`accent`:null)(`aria-pressed`,o.kind()===e)(`data-kind-chip`,e),hD(),ey(` `,e,` · `,a.counts[e],` `)}}function Nt(i,t){if(i&1){let e=wS();da(0,`ui-filter-bar`,39),oC(1,`t`),ry(`queryChange`,function(o){jh(e);let s=bS(2);return ZS(s.query,o)||(s.query=o),Uh(o)}),da(2,`button`,40),Ta(`click`,function(){jh(e);let o=bS(2);return Uh(o.kind.set(null))}),WS(3),oC(4,`t`),yd(),gS(5,Gt,2,5,`button`,41,pS),yd()}if(i&2){let e=bS(),a=bS();ny(`query`,a.query),Wm(`placeholder`,sC(1,6,`graph.fed.search`)),hD(2),Ar(`data-tone`,a.kind()===null?`accent`:null)(`aria-pressed`,a.kind()===null),hD(),ey(` `,sC(4,8,`state.all`),` · `,e.nodes.length,` `),hD(2),mS(a.kindOptions(e))}}function It(i,t){i&1&&(da(0,`p`,15),WS(1),oC(2,`t`),yd()),i&2&&(hD(),Jm(sC(2,1,`graph.diff.unchanged`)))}function Tt(i,t){if(i&1){let e=wS();da(0,`li`)(1,`button`,47),Ta(`click`,function(){let o=jh(e).$implicit,s=bS(4);return Uh(s.selectFocus(o.id))}),WS(2),yd(),da(3,`code`,48),WS(4),yd()()}if(i&2){let e=t.$implicit;hD(2),Dd(` `,e.label,` `),hD(2),Jm(e.id)}}function Ft(i,t){if(i&1&&(da(0,`li`)(1,`code`,48),WS(2),yd(),da(3,`code`,48),WS(4),yd()()),i&2){let e=t.$implicit;hD(2),Jm(e.kind),hD(2),Jm(e.id)}}function Bt(i,t){i&1&&(da(0,`li`,15),WS(1),oC(2,`t`),yd()),i&2&&(hD(),Jm(sC(2,1,`state.none`)))}function Mt(i,t){if(i&1&&(da(0,`li`)(1,`code`),WS(2),yd()()),i&2){let e=t.$implicit;hD(2),Jm(e.id)}}function Vt(i,t){if(i&1&&(da(0,`li`)(1,`code`,48),WS(2),yd()()),i&2){let e=t.$implicit;hD(2),Jm(e.id)}}function Ot(i,t){i&1&&(da(0,`li`,15),WS(1),oC(2,`t`),yd()),i&2&&(hD(),Jm(sC(2,1,`state.none`)))}function Dt(i,t){if(i&1){let e=wS();da(0,`li`)(1,`button`,47),Ta(`click`,function(){let o=jh(e).$implicit,s=bS(4);return Uh(s.selectFocus(o.id))}),WS(2),yd()()}if(i&2){let e=t.$implicit;hD(2),Dd(` `,e.id,` `)}}function At(i,t){if(i&1&&(da(0,`li`)(1,`code`,48),WS(2),yd()()),i&2){let e=t.$implicit;hD(2),Jm(e.id)}}function Rt(i,t){i&1&&(da(0,`li`,15),WS(1),oC(2,`t`),yd()),i&2&&(hD(),Jm(sC(2,1,`state.none`)))}function $t(i,t){if(i&1&&(da(0,`div`,42)(1,`div`)(2,`h3`,43),WS(3),oC(4,`t`),yd(),da(5,`ul`,44),gS(6,Tt,5,2,`li`,null,D),gS(8,Ft,5,2,`li`,null,D),uS(10,Bt,3,3,`li`,15),yd()(),da(11,`div`)(12,`h3`,43),WS(13),oC(14,`t`),yd(),da(15,`ul`,45),gS(16,Mt,3,1,`li`,null,D),gS(18,Vt,3,1,`li`,null,D),uS(20,Ot,3,3,`li`,15),yd()(),da(21,`div`)(22,`h3`,43),WS(23),oC(24,`t`),yd(),da(25,`ul`,46),gS(26,Dt,3,1,`li`,null,D),gS(28,At,3,1,`li`,null,D),uS(30,Rt,3,3,`li`,15),yd()()()),i&2){let e=bS();hD(3),Jm(sC(4,6,`graph.diff.added`)),hD(3),mS(e.addedNodes),hD(2),mS(e.addedEdges),hD(2),fS(!e.addedNodes.length&&!e.addedEdges.length?10:-1),hD(3),Jm(sC(14,8,`graph.diff.removed`)),hD(3),mS(e.removedNodes),hD(2),mS(e.removedEdges),hD(2),fS(!e.removedNodes.length&&!e.removedEdges.length?20:-1),hD(3),Jm(sC(24,10,`graph.diff.changed`)),hD(3),mS(e.changedNodes),hD(2),mS(e.changedEdges),hD(2),fS(!e.changedNodes.length&&!e.changedEdges.length?30:-1)}}function Lt(i,t){if(i&1&&(da(0,`section`,29)(1,`h2`),ba(2,`ui-icon`,37),WS(3),oC(4,`t`),yd(),da(5,`p`,15),WS(6),oC(7,`t`),yd(),uS(8,It,3,3,`p`,15)(9,$t,31,12,`div`,42),yd()),i&2){let e=t,a=bS(2);hD(2),Wm(`size`,15),hD(),Jm(sC(4,4,`graph.diff.title`)),hD(3),Jm(aC(7,6,`graph.snap.at`,nC(9,at,a.stampAt(e.snapshot)))),hD(2),fS(e.unchanged?8:9)}}function zt(i,t){i&1&&ba(0,`ui-state-badge`,50)}function Ht(i,t){i&1&&(ba(0,`ui-state-badge`,51),oC(1,`t`)),i&2&&Wm(`labelOverride`,sC(1,1,`graph.fed.failed`))}function qt(i,t){if(i&1&&(da(0,`a`,53),WS(1),oC(2,`t`),oC(3,`t`),ba(4,`ui-icon`,55),yd()),i&2){let e=t;Wm(`routerLink`,e.commands)(`queryParams`,e.queryParams??null)(`fragment`,e.fragment),hD(),ey(` `,sC(2,6,`entity.openIn`),` `,sC(3,8,e.navKey),` `),hD(3),Wm(`size`,13)}}function jt(i,t){if(i&1&&(da(0,`div`)(1,`dt`),WS(2),oC(3,`t`),yd(),da(4,`dd`)(5,`code`),WS(6),yd()()()),i&2){let e=bS();hD(2),Jm(sC(3,2,`graph.fed.state`)),hD(4),Jm(e.state)}}function Kt(i,t){if(i&1&&(da(0,`div`)(1,`dt`),WS(2),oC(3,`t`),yd(),da(4,`dd`)(5,`code`),WS(6),yd()()()),i&2){let e=bS();hD(2),Jm(sC(3,2,`graph.fed.category`)),hD(4),Jm(e.category)}}function Ut(i,t){if(i&1){let e=wS();da(0,`div`)(1,`dt`),WS(2),oC(3,`t`),yd(),da(4,`dd`)(5,`button`,47),Ta(`click`,function(){jh(e);let o=bS(),s=bS(2);return Uh(s.selectFocus(`forge:`+o.origin))}),WS(6),yd()()()}if(i&2){let e=bS();hD(2),Jm(sC(3,2,`graph.fed.origin`)),hD(4),Dd(` `,e.origin,` `)}}function Wt(i,t){if(i&1&&(da(0,`div`)(1,`dt`),WS(2),oC(3,`t`),yd(),da(4,`dd`)(5,`code`),WS(6),yd()()()),i&2){let e=bS();hD(2),Jm(sC(3,2,`graph.fed.version`)),hD(4),Jm(e.version)}}function Jt(i,t){if(i&1&&(da(0,`code`),WS(1),yd()),i&2){let e=t.$implicit,a=bS(3);hD(),Jm(a.endpointFor(e))}}function Yt(i,t){if(i&1&&(da(0,`div`)(1,`dt`),WS(2),yd(),da(3,`dd`)(4,`code`),WS(5),yd()()()),i&2){let e=t.$implicit;hD(2),Jm(e[0]),hD(3),Jm(e[1]??`—`)}}function Qt(i,t){if(i&1){let e=wS();da(0,`li`)(1,`code`),WS(2),yd(),da(3,`span`,62),WS(4,`→`),yd(),da(5,`button`,47),Ta(`click`,function(){let o=jh(e).$implicit,s=bS(3);return Uh(s.selectFocus(o.target))}),WS(6),yd(),da(7,`code`,48),WS(8),yd()()}if(i&2){let e=t.$implicit,a=bS(3);hD(2),Jm(e.kind),hD(4),Dd(` `,a.label(e.target),` `),hD(2),Jm(a.endpointFor(e.evidence))}}function Xt(i,t){i&1&&(da(0,`li`,15),WS(1),oC(2,`t`),yd()),i&2&&(hD(),Jm(sC(2,1,`graph.fed.noRelations`)))}function Zt(i,t){if(i&1){let e=wS();da(0,`li`)(1,`button`,47),Ta(`click`,function(){let o=jh(e).$implicit,s=bS(3);return Uh(s.selectFocus(o.source))}),WS(2),yd(),da(3,`span`,62),WS(4,`→`),yd(),da(5,`code`),WS(6),yd(),da(7,`code`,48),WS(8),yd()()}if(i&2){let e=t.$implicit,a=bS(3);hD(2),Dd(` `,a.label(e.source),` `),hD(4),Jm(e.kind),hD(2),Jm(a.endpointFor(e.evidence))}}function ei(i,t){i&1&&(da(0,`li`,15),WS(1),oC(2,`t`),yd()),i&2&&(hD(),Jm(sC(2,1,`graph.fed.noRelations`)))}function ti(i,t){if(i&1){let e=wS();da(0,`button`,80),Ta(`click`,function(){let o=jh(e).$implicit,s=bS(4);return Uh(s.impactDepth.set(o))}),WS(1),yd()}if(i&2){let e=t.$implicit,a=bS(4);Ar(`data-depth`,e)(`data-tone`,a.impactDepth()===e?`accent`:null)(`aria-pressed`,a.impactDepth()===e),hD(),Dd(` `,e,` `)}}function ii(i,t){if(i&1){let e=wS();da(0,`li`)(1,`button`,47),Ta(`click`,function(){let o=jh(e).$implicit,s=bS(4);return Uh(s.selectFocus(o.id))}),WS(2),yd(),da(3,`code`,48),WS(4),yd()()}if(i&2){let e=t.$implicit,a=bS(4);hD(2),Dd(` `,a.label(e.id),` `),hD(2),Dd(``,e.dist,`h`)}}function ni(i,t){i&1&&(da(0,`li`,15),WS(1),oC(2,`t`),yd()),i&2&&(hD(),Jm(sC(2,1,`graph.fed.noRelations`)))}function ai(i,t){if(i&1&&(da(0,`li`,15),WS(1),oC(2,`t`),yd()),i&2){let e=bS(),a=bS(3);hD(),Dd(` `,aC(2,1,`graph.impact.more`,nC(4,Y,e.usedBy.length-a.impactCap)),` `)}}function oi(i,t){if(i&1){let e=wS();da(0,`li`)(1,`button`,47),Ta(`click`,function(){let o=jh(e).$implicit,s=bS(4);return Uh(s.selectFocus(o.id))}),WS(2),yd(),da(3,`code`,48),WS(4),yd()()}if(i&2){let e=t.$implicit,a=bS(4);hD(2),Dd(` `,a.label(e.id),` `),hD(2),Dd(``,e.dist,`h`)}}function ri(i,t){i&1&&(da(0,`li`,15),WS(1),oC(2,`t`),yd()),i&2&&(hD(),Jm(sC(2,1,`graph.fed.noRelations`)))}function di(i,t){if(i&1&&(da(0,`li`,15),WS(1),oC(2,`t`),yd()),i&2){let e=bS(),a=bS(3);hD(),Dd(` `,aC(2,1,`graph.impact.more`,nC(4,Y,e.uses.length-a.impactCap)),` `)}}function li(i,t){i&1&&(ba(0,`ui-state-badge`,69),oC(1,`t`)),i&2&&Wm(`labelOverride`,sC(1,1,`graph.impact.orphan`))}function si(i,t){if(i&1&&(da(0,`span`,70),WS(1),oC(2,`t`),yd()),i&2){let e=t.$implicit;Ar(`title`,e.join(` → `)),hD(),ey(` `,sC(2,3,`graph.impact.cycle`),`: `,e.length,` `)}}function pi(i,t){if(i&1&&(da(0,`option`,75),WS(1),yd()),i&2){let e=t.$implicit;Wm(`value`,e.id),hD(),Jm(e.id)}}function ci(i,t){if(i&1){let e=wS();da(0,`li`)(1,`button`,47),Ta(`click`,function(){let o=jh(e).$implicit,s=bS(6);return Uh(s.selectFocus(o))}),WS(2),yd()()}if(i&2){let e=t.$implicit,a=bS(6);hD(2),Dd(` `,a.label(e),` `)}}function _i(i,t){if(i&1&&(da(0,`ol`,81),gS(1,ci,3,1,`li`,null,pS),yd()),i&2){let e=bS();hD(),mS(e.nodes)}}function ui(i,t){i&1&&(da(0,`span`,82),WS(1),oC(2,`t`),yd()),i&2&&(hD(),Jm(sC(2,1,`graph.impact.noPath`)))}function gi(i,t){i&1&&uS(0,_i,3,0,`ol`,81)(1,ui,3,3,`span`,82),i&2&&fS(t.nodes?0:1)}function mi(i,t){if(i&1&&(da(0,`code`,48),WS(1),yd()),i&2){let e=t.$implicit,a=bS(4);hD(),Jm(a.endpointFor(e))}}function hi(i,t){if(i&1){let e=wS();da(0,`section`,61)(1,`h3`,43),WS(2),oC(3,`t`),da(4,`span`,63),oC(5,`t`),gS(6,ti,2,4,`button`,64,pS),yd()(),da(8,`div`,58)(9,`div`)(10,`h4`,65),WS(11),oC(12,`t`),yd(),da(13,`ul`,66),gS(14,ii,5,2,`li`,null,D,!1,ni,3,3,`li`,15),uS(17,ai,3,6,`li`,15),yd()(),da(18,`div`)(19,`h4`,65),WS(20),oC(21,`t`),yd(),da(22,`ul`,67),gS(23,oi,5,2,`li`,null,D,!1,ri,3,3,`li`,15),uS(26,di,3,6,`li`,15),yd()()(),da(27,`p`,68)(28,`span`),WS(29),oC(30,`t`),yd(),uS(31,li,2,3,`ui-state-badge`,69),gS(32,si,3,5,`span`,70,ot),yd(),da(34,`div`,71)(35,`label`,72),WS(36),oC(37,`t`),yd(),da(38,`select`,73),Ta(`change`,function(o){jh(e);let s=bS(3);return Uh(s.onPathTarget(o))}),da(39,`option`,74),WS(40,`—`),yd(),gS(41,pi,2,2,`option`,75,D),yd(),da(43,`span`,63),oC(44,`t`),da(45,`button`,76),Ta(`click`,function(){jh(e);let o=bS(3);return Uh(o.pathDir.set(`out`))}),WS(46),oC(47,`t`),yd(),da(48,`button`,77),Ta(`click`,function(){jh(e);let o=bS(3);return Uh(o.pathDir.set(`both`))}),WS(49),oC(50,`t`),yd()(),uS(51,gi,2,1),yd(),da(52,`p`,78)(53,`span`),WS(54),oC(55,`t`),yd(),da(56,`span`),WS(57),oC(58,`t`),yd(),gS(59,mi,2,1,`code`,48,pS),yd(),da(61,`p`,79),WS(62),oC(63,`t`),yd()()}if(i&2){let e,a=t,o=bS(),s=bS(2);hD(2),Dd(` `,sC(3,23,`graph.impact.title`),` `),hD(2),Ar(`aria-label`,sC(5,25,`graph.impact.depth`)),hD(2),mS(tC(48,ft)),hD(5),Jm(sC(12,27,`graph.impact.usedBy`)),hD(3),mS(a.usedBy.slice(0,s.impactCap)),hD(3),fS(a.usedBy.length>s.impactCap?17:-1),hD(3),Jm(sC(21,29,`graph.impact.uses`)),hD(3),mS(a.uses.slice(0,s.impactCap)),hD(3),fS(a.uses.length>s.impactCap?26:-1),hD(3),ey(``,sC(30,31,`graph.impact.component`),`: `,a.componentSize),hD(2),fS(a.orphan?31:-1),hD(),mS(a.cycles),hD(4),Jm(sC(37,33,`graph.impact.path`)),hD(2),Wm(`value`,s.pathTarget()??``),hD(3),mS(s.pathOptions(o.id)),hD(2),Ar(`aria-label`,sC(44,35,`graph.impact.path`)),hD(2),Ar(`data-tone`,s.pathDir()===`out`?`accent`:null),hD(),Dd(` `,sC(47,37,`graph.impact.dirOut`),` `),hD(2),Ar(`data-tone`,s.pathDir()===`both`?`accent`:null),hD(),Dd(` `,sC(50,39,`graph.impact.dirBoth`),` `),hD(2),fS((e=s.pathResult())?51:-1,e),hD(3),ey(` `,sC(55,41,`graph.impact.unverified`),`: `,a.unverifiedEdges.length,` `),hD(3),Dd(` `,aC(58,43,`graph.impact.coverage`,rC(49,vt,a.coverage.loaded,a.coverage.total)),` `),hD(2),mS(a.missingSources),hD(3),Jm(sC(63,46,`graph.impact.topoNote`))}}function fi(i,t){if(i&1){let e=wS();da(0,`section`,30)(1,`header`,49)(2,`h2`),ba(3,`ui-icon`,14),WS(4),uS(5,zt,1,0,`ui-state-badge`,50),uS(6,Ht,2,3,`ui-state-badge`,51),yd(),da(7,`span`,52),uS(8,qt,5,10,`a`,53),da(9,`button`,54),oC(10,`t`),Ta(`click`,function(){jh(e);let o=bS(2);return Uh(o.selected.set(null))}),ba(11,`ui-icon`,55),yd()()(),da(12,`dl`,56)(13,`div`)(14,`dt`),WS(15),oC(16,`t`),yd(),da(17,`dd`)(18,`code`),WS(19),yd()()(),da(20,`div`)(21,`dt`),WS(22),oC(23,`t`),yd(),da(24,`dd`)(25,`code`),WS(26),yd()()(),uS(27,jt,7,4,`div`),uS(28,Kt,7,4,`div`),uS(29,Ut,7,4,`div`),uS(30,Wt,7,4,`div`),da(31,`div`)(32,`dt`),WS(33),oC(34,`t`),yd(),da(35,`dd`)(36,`code`),WS(37),yd()()(),da(38,`div`)(39,`dt`),WS(40),oC(41,`t`),yd(),da(42,`dd`),ba(43,`ui-state-badge`,35),oC(44,`t`),yd()(),da(45,`div`)(46,`dt`),WS(47),oC(48,`t`),yd(),da(49,`dd`,57),gS(50,Jt,2,1,`code`,null,pS),yd()(),gS(52,Yt,6,2,`div`,null,ot),yd(),da(54,`div`,58)(55,`div`)(56,`h3`,43),WS(57),oC(58,`t`),yd(),da(59,`ul`,59),gS(60,Qt,9,3,`li`,null,D,!1,Xt,3,3,`li`,15),yd()(),da(63,`div`)(64,`h3`,43),WS(65),oC(66,`t`),yd(),da(67,`ul`,60),gS(68,Zt,9,3,`li`,null,D,!1,ei,3,3,`li`,15),yd()()(),uS(71,hi,64,52,`section`,61),yd()}if(i&2){let e,a,o=t,s=bS(2);hD(3),Wm(`size`,15),hD(),Dd(``,o.label,` `),hD(),fS(o.unverified?5:-1),hD(),fS(s.isFailed(o)?6:-1),hD(2),fS((e=s.openLink(o))?8:-1,e),hD(),Ar(`aria-label`,sC(10,26,`state.close`)),hD(2),Wm(`size`,14),hD(4),Jm(sC(16,28,`table.id`)),hD(4),Jm(o.id),hD(3),Jm(sC(23,30,`graph.fed.kind`)),hD(4),Jm(o.kind),hD(),fS(o.state?27:-1),hD(),fS(o.category?28:-1),hD(),fS(o.origin?29:-1),hD(),fS(o.version?30:-1),hD(3),Jm(sC(34,32,`graph.fed.degree`)),hD(4),Jm(s.degreeOf(o.id)),hD(3),Jm(sC(41,34,`graph.fed.verification`)),hD(3),Wm(`state`,o.unverified?`unverified`:`ok`)(`labelOverride`,sC(44,36,o.unverified?`state.unverified`:`graph.fed.observed`)),hD(4),Jm(sC(48,38,`skills.evidence`)),hD(3),mS(o.evidence),hD(2),mS(s.metaRows(o)),hD(5),Jm(sC(58,40,`graph.fed.relOut`)),hD(3),mS(s.relsOut(o.id)),hD(5),Jm(sC(66,42,`graph.fed.relIn`)),hD(3),mS(s.relsIn(o.id)),hD(3),fS((a=s.report())?71:-1,a)}}function vi(i,t){i&1&&(da(0,`div`)(1,`dt`),WS(2),oC(3,`t`),yd(),da(4,`dd`)(5,`code`),WS(6),yd()()()),i&2&&(hD(2),Jm(sC(3,2,`graph.edge.observedAt`)),hD(4),Jm(t))}function yi(i,t){if(i&1){let e=wS();da(0,`li`)(1,`button`,47),Ta(`click`,function(){let o=jh(e).$implicit,s=bS(3);return Uh(s.selectEdge(o.id))}),WS(2),yd(),da(3,`code`,48),WS(4),yd()()}if(i&2){let e=t.$implicit;hD(2),Dd(` `,e.kind,` `),hD(2),Jm(e.id)}}function xi(i,t){i&1&&(da(0,`li`,15),WS(1),oC(2,`t`),yd()),i&2&&(hD(),Jm(sC(2,1,`graph.edge.relatedNone`)))}function Ci(i,t){if(i&1){let e=wS();da(0,`section`,31)(1,`header`,49)(2,`h2`),ba(3,`ui-icon`,17),WS(4),oC(5,`t`),yd(),da(6,`button`,54),oC(7,`t`),Ta(`click`,function(){jh(e);let o=bS(2);return Uh(o.selectedEdge.set(null))}),ba(8,`ui-icon`,55),yd()(),da(9,`dl`,56)(10,`div`)(11,`dt`),WS(12),oC(13,`t`),yd(),da(14,`dd`)(15,`code`),WS(16),yd()()(),da(17,`div`)(18,`dt`),WS(19),oC(20,`t`),yd(),da(21,`dd`)(22,`button`,47),Ta(`click`,function(){let o=jh(e),s=bS(2);return Uh(s.selectFocus(o.source))}),WS(23),yd(),da(24,`span`,62),WS(25,`→`),yd(),da(26,`button`,47),Ta(`click`,function(){let o=jh(e),s=bS(2);return Uh(s.selectFocus(o.target))}),WS(27),yd()()(),da(28,`div`)(29,`dt`),WS(30),oC(31,`t`),yd(),da(32,`dd`)(33,`code`,48),WS(34),yd()()(),da(35,`div`)(36,`dt`),WS(37),oC(38,`t`),yd(),da(39,`dd`)(40,`code`,48),WS(41),yd()()(),da(42,`div`)(43,`dt`),WS(44),oC(45,`t`),yd(),da(46,`dd`,57)(47,`code`),WS(48),yd(),ba(49,`ui-state-badge`,35),oC(50,`t`),yd()(),uS(51,vi,7,4,`div`),yd(),da(52,`h3`,83),WS(53),oC(54,`t`),yd(),da(55,`ul`,84),gS(56,yi,5,2,`li`,null,D,!1,xi,3,3,`li`,15),yd()()}if(i&2){let e,a=t,o=bS(2);hD(3),Wm(`size`,15),hD(),Jm(sC(5,20,`graph.edge.title`)),hD(2),Ar(`aria-label`,sC(7,22,`state.close`)),hD(2),Wm(`size`,14),hD(4),Jm(sC(13,24,`graph.edge.relation`)),hD(4),Jm(a.kind),hD(3),Jm(sC(20,26,`graph.edge.direction`)),hD(4),Dd(` `,o.label(a.source),` `),hD(4),Dd(` `,o.label(a.target),` `),hD(3),Jm(sC(31,28,`graph.edge.source`)),hD(4),Jm(a.source),hD(3),Jm(sC(38,30,`graph.edge.target`)),hD(4),Jm(a.target),hD(3),Jm(sC(45,32,`skills.evidence`)),hD(4),Jm(o.endpointFor(a.evidence)),hD(),Wm(`state`,o.sourceBadge(o.evidenceState(a.evidence)))(`labelOverride`,sC(50,34,`graph.source.`+o.evidenceState(a.evidence))),hD(2),fS((e=o.evidenceLoadedAt(a.evidence))?51:-1,e),hD(2),Jm(sC(54,36,`graph.edge.related`)),hD(3),mS(o.relatedEdges(a))}}function bi(i,t){if(i&1){let e=wS();da(0,`button`,40),Ta(`click`,function(){let o=jh(e).$implicit,s=bS(3);return Uh(s.setLayout(o))}),WS(1),yd()}if(i&2){let e=t.$implicit,a=bS(3);Ar(`data-layout`,e)(`data-tone`,a.layoutName()===e?`accent`:null)(`aria-pressed`,a.layoutName()===e),hD(),Dd(` `,e,` `)}}function Si(i,t){if(i&1){let e=wS();da(0,`li`)(1,`button`,80),Ta(`click`,function(){let o=jh(e).$implicit,s=bS(5);return Uh(s.toggleGroup(o.id))}),WS(2),yd()()}if(i&2){let e=t.$implicit,a=bS(5);hD(),Ar(`data-group`,e.id)(`data-tone`,a.collapsed().has(e.id)?`accent`:null)(`aria-pressed`,a.collapsed().has(e.id)),hD(),ey(` `,e.label,` · `,e.members.length,` `)}}function Ei(i,t){if(i&1&&(da(0,`ul`,107),oC(1,`t`),gS(2,Si,3,5,`li`,null,D),yd()),i&2){let e=bS();Ar(`aria-label`,sC(1,1,`graph.canvas.group`)),hD(2),mS(e.groups)}}function wi(i,t){i&1&&uS(0,Ei,4,3,`ul`,107),i&2&&fS(t.groups.length?0:-1)}function ki(i,t){if(i&1&&(da(0,`li`),ba(1,`span`,108),WS(2),yd()),i&2){let e=t.$implicit,a=bS(3);Ar(`data-kind`,e),hD(),_a(`background`,a.kindColor(e)),Ar(`data-shape`,a.kindShape(e)),hD(),Dd(` `,e,` `)}}function Pi(i,t){if(i&1){let e=wS();da(0,`div`,32)(1,`div`,85),oC(2,`t`),da(3,`span`,15),WS(4),oC(5,`t`),yd(),gS(6,bi,2,4,`button`,41,pS),ba(8,`span`,86),da(9,`label`,87),WS(10),oC(11,`t`),yd(),da(12,`select`,88),Ta(`change`,function(o){jh(e);let s=bS(2);return Uh(s.onGroupBy(o))}),da(13,`option`,74),WS(14),oC(15,`t`),yd(),da(16,`option`,89),WS(17),oC(18,`t`),yd(),da(19,`option`,90),WS(20),oC(21,`t`),yd(),da(22,`option`,91),WS(23),oC(24,`t`),yd()(),da(25,`button`,92),Ta(`click`,function(){jh(e);let o=bS(2);return Uh(o.resetLayout())}),WS(26),oC(27,`t`),yd(),da(28,`button`,93),Ta(`click`,function(){jh(e);let o=bS(2);return Uh(o.fitCanvas())}),WS(29),oC(30,`t`),yd(),da(31,`button`,94),Ta(`click`,function(){jh(e);let o=bS(2);return Uh(o.zoomToSelected())}),WS(32),oC(33,`t`),yd(),da(34,`button`,95),Ta(`click`,function(){jh(e);let o=bS(2);return Uh(o.exportPng())}),WS(35,` PNG `),yd(),da(36,`button`,96),Ta(`click`,function(){jh(e);let o=bS(2);return Uh(o.exportSvg())}),WS(37,` SVG `),yd(),da(38,`button`,97),Ta(`click`,function(){jh(e);let o=bS(2);return Uh(o.resetView())}),WS(39),oC(40,`t`),yd()(),uS(41,wi,1,1),ba(42,`div`,98,0),oC(44,`t`),da(45,`p`,99),WS(46),yd(),da(47,`ul`,100),oC(48,`t`),gS(49,ki,3,5,`li`,null,pS),da(51,`li`,101),ba(52,`span`,102),WS(53),oC(54,`t`),yd(),da(55,`li`,103),ba(56,`span`,104),WS(57),oC(58,`t`),yd(),da(59,`li`,105),ba(60,`span`,106),WS(61),oC(62,`t`),yd()()()}if(i&2){let e,a=bS(),o=bS();hD(),Ar(`aria-label`,sC(2,20,`graph.canvas.tools`)),hD(3),Jm(sC(5,22,`graph.canvas.layout`)),hD(2),mS(o.layouts),hD(4),Jm(sC(11,24,`graph.canvas.group`)),hD(2),Wm(`value`,o.groupBy()??``),hD(2),Jm(sC(15,26,`graph.group.none`)),hD(3),Jm(sC(18,28,`graph.group.kind`)),hD(3),Jm(sC(21,30,`graph.group.forge`)),hD(3),Jm(sC(24,32,`graph.group.host`)),hD(3),Dd(` `,sC(27,34,`graph.canvas.reset`),` `),hD(3),Dd(` `,sC(30,36,`graph.canvas.fit`),` `),hD(2),Wm(`disabled`,!o.selected()&&!o.selectedEdge()),hD(),Dd(` `,sC(33,38,`graph.canvas.zoomSel`),` `),hD(7),Dd(` `,sC(40,40,`graph.view.reset`),` `),hD(2),fS((e=o.groupSpec())?41:-1,e),hD(),Ar(`aria-label`,sC(44,42,`graph.canvas.aria`)),hD(4),Jm(o.hoverLine()),hD(),Ar(`aria-label`,sC(48,44,`graph.canvas.legend`)),hD(2),mS(o.kindOptions(a)),hD(4),Dd(``,sC(54,46,`graph.legend.declared`),` `),hD(4),Dd(``,sC(58,48,`graph.legend.unverified`),` `),hD(4),Dd(``,sC(62,50,`graph.legend.unavailable`),` `)}}function Gi(i,t){if(i&1&&(da(0,`span`,111),WS(1),yd()),i&2){let e=bS().$implicit;Ar(`title`,e.state),hD(),Jm(e.state)}}function Ni(i,t){i&1&&ba(0,`ui-state-badge`,50)}function Ii(i,t){if(i&1){let e=wS();da(0,`li`)(1,`button`,109),Ta(`click`,function(){let o=jh(e).$implicit,s=bS(3);return Uh(s.select(o))}),da(2,`span`,18),WS(3),yd(),da(4,`span`,110),WS(5),yd(),uS(6,Gi,2,2,`span`,111),da(7,`code`,112),WS(8),yd(),uS(9,Ni,1,0,`ui-state-badge`,50),yd()()}if(i&2){let e=t.$implicit,a=bS(3);hD(),Ar(`data-unverified`,e.unverified||null)(`data-failed`,a.isFailed(e)||null)(`data-selected`,a.selected()?.id===e.id||null)(`data-neighbor`,a.isNeighbor(e)||null),hD(2),Jm(e.kind),hD(),Ar(`title`,e.label),hD(),Jm(e.label),hD(),fS(e.state?6:-1),hD(),Ar(`title`,e.id),hD(),Jm(e.id),hD(),fS(e.unverified?9:-1)}}function Ti(i,t){i&1&&(da(0,`li`,15),WS(1),oC(2,`t`),yd()),i&2&&(hD(),Jm(sC(2,1,`graph.fed.empty`)))}function Fi(i,t){if(i&1&&(da(0,`ul`,33),gS(1,Ii,10,11,`li`,null,D,!1,Ti,3,3,`li`,15),yd()),i&2){let e=bS(2);hD(),mS(e.filtered())}}function Bi(i,t){i&1&&(ba(0,`ui-empty`,34),oC(1,`t`)),i&2&&Wm(`title`,sC(1,1,`graph.fed.none`))}function Mi(i,t){if(i&1){let e=wS();da(0,`section`,6)(1,`header`,16)(2,`h2`),ba(3,`ui-icon`,17),WS(4),oC(5,`t`),da(6,`span`,18),WS(7),oC(8,`t`),yd()(),da(9,`div`,19)(10,`div`,20),oC(11,`t`),da(12,`button`,21),Ta(`click`,function(){jh(e);let o=bS();return Uh(o.setMode(`list`))}),WS(13),oC(14,`t`),yd(),da(15,`button`,22),Ta(`click`,function(){jh(e);let o=bS();return Uh(o.setMode(`canvas`))}),WS(16),oC(17,`t`),yd()(),da(18,`button`,23),Ta(`click`,function(){jh(e);let o=bS();return Uh(o.takeSnapshot())}),ba(19,`ui-icon`,24),WS(20),oC(21,`t`),yd(),da(22,`button`,25),Ta(`click`,function(){jh(e);let o=bS();return Uh(o.exportGraph())}),ba(23,`ui-icon`,13),WS(24),oC(25,`t`),yd()()(),da(26,`ul`,26),oC(27,`t`),gS(28,kt,5,7,`li`,null,D),yd(),da(30,`p`,15),WS(31),oC(32,`t`),yd(),uS(33,Pt,11,15,`div`,27),uS(34,Nt,7,10,`ui-filter-bar`,28),uS(35,Lt,10,11,`section`,29),uS(36,fi,72,44,`section`,30),uS(37,Ci,59,38,`section`,31),uS(38,Pi,63,52,`div`,32),uS(39,Fi,4,1,`ul`,33),uS(40,Bi,2,3,`ui-empty`,34),yd()}if(i&2){let e,a,o,s,m=t,h=bS();hD(3),Wm(`size`,15),hD(),Dd(` `,sC(5,26,`graph.fed.title`),` `),hD(3),Jm(sC(8,28,`graph.federated`)),hD(3),Ar(`aria-label`,sC(11,30,`graph.view.toggle`)),hD(2),Ar(`data-tone`,h.mode()===`list`?`accent`:null)(`aria-pressed`,h.mode()===`list`),hD(),Dd(` `,sC(14,32,`graph.view.list`),` `),hD(2),Ar(`data-tone`,h.mode()===`canvas`?`accent`:null)(`aria-pressed`,h.mode()===`canvas`),hD(),Dd(` `,sC(17,34,`graph.view.canvas`),` `),hD(2),Wm(`disabled`,!m.nodes.length),hD(),Wm(`size`,14),hD(),Dd(` `,sC(21,36,`graph.snap.capture`),` `),hD(2),Wm(`disabled`,!m.nodes.length),hD(),Wm(`size`,14),hD(),Dd(` `,sC(25,38,`graph.fed.export`),` `),hD(2),Ar(`aria-label`,sC(27,40,`graph.fed.sources`)),hD(2),mS(h.sourceList(m)),hD(3),Jm(sC(32,42,`graph.fed.evidenceNote`)),hD(2),fS((e=h.snap())?33:-1,e),hD(),fS(m.nodes.length?34:-1),hD(),fS((a=h.diff())?35:-1,a),hD(),fS((o=h.selected())?36:-1,o),hD(),fS((s=h.selectedEdge())?37:-1,s),hD(),fS(m.nodes.length&&h.mode()===`canvas`?38:-1),hD(),fS(m.nodes.length&&h.mode()===`list`?39:-1),hD(),fS(m.nodes.length?-1:40)}}var J=i=>i.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().trim();var Vi=400;var Oi=24;var j=()=>{try{return typeof localStorage<`u`?localStorage:null}catch{return null}};var nt=class i{api=p(g);store=p(g$1);destroyRef=p(ve);bundle=k$1(null);error=k$1(null);loading=k$1(!0);fed=k$1(null);query=k$1(``);kind=k$1(null);selected=k$1(null);selectedEdge=k$1(null);mode=k$1(`list`);layouts=e;layoutName=k$1(`cose`);canvasEl=kU(`canvasEl`);rendererReady=k$1(!1);impactDepth=k$1(2);impactCap=Oi;pathTarget=k$1(null);pathDir=k$1(`out`);groupBy=k$1(null);collapsed=k$1(new Set);snap=k$1(et(j()));diff=k$1(null);hovered=k$1(null);vp=k$1(null);graphsLoadedAt=k$1(null);renderer=null;persistTimer=null;restored=!1;pendingViewport=null;srcs=[{id:`capabilities`,src:new l$1},{id:`skills`,src:new l$1},{id:`agents`,src:new l$1},{id:`mcp`,src:new l$1},{id:`hosts`,src:new l$1},{id:`tasks`,src:new l$1},{id:`events`,src:new l$1}];nodeById=tn(()=>{let t=new Map;for(let e of this.fed()?.nodes??[])t.set(e.id,e);return t});degreeMap=tn(()=>{let t=new Map;for(let e of this.fed()?.edges??[])t.set(e.source,(t.get(e.source)??0)+1),t.set(e.target,(t.get(e.target)??0)+1);return t});report=tn(()=>{let t=this.selected(),e=this.fed();return!t||!e?null:qe(e,t.id,this.impactDepth())});pathResult=tn(()=>{let t=this.selected(),e=this.fed(),a=this.pathTarget();return!t||!e||!a?null:He(e,t.id,a,this.pathDir())});groupSpec=tn(()=>{let t=this.fed(),e=this.groupBy();return!t||!e?null:x(t,e)});relatedEdges(t){let e=this.fed();return e?e.edges.filter(a=>a.id!==t.id&&(a.source===t.source&&a.target===t.target||a.source===t.target&&a.target===t.source)):[]}filtered=tn(()=>{let t=this.fed();if(!t)return[];let e=J(this.query()),a=this.kind();return t.nodes.filter(o=>a!==null&&o.kind!==a?!1:e?J(o.id).includes(e)||J(o.label).includes(e):!0)});constructor(){Oo(()=>{let t=this.canvasEl()?.nativeElement??null;t&&!this.renderer&&this.mountCanvas(t),!t&&this.renderer&&this.destroyCanvas()}),Oo(()=>{this.rendererReady();let t=this.fed();this.renderer&&t&&(this.renderer.setData(F(t)),this.pendingViewport&&(this.renderer.setViewport(this.pendingViewport),this.pendingViewport=null))}),Oo(()=>{this.rendererReady();let t=this.renderer;if(!t)return;let e=this.selected(),a=this.selectedEdge();t.select(e?.id??a?.id??null);let o=this.pathResult();if(o?.nodes){t.highlight(new Set(o.nodes),new Set(o.edges));return}if(e){let s=this.report();if(s){t.highlight(new Set([e.id,...s.uses.map(m=>m.id),...s.usedBy.map(m=>m.id)]),new Set(s.edges.map(m=>m.id)));return}}t.highlight(new Set,new Set)}),Oo(()=>{this.rendererReady();let t=this.renderer;if(!t)return;let e=J(this.query())!==``||this.kind()!==null;t.dimExcept(e?new Set(this.filtered().map(a=>a.id)):null)}),Oo(()=>{this.rendererReady();let t=this.renderer;if(!t)return;let e=this.groupSpec();t.setGrouping(e?l(k({},e),{collapsed:this.collapsed()}):null)}),Oo(()=>{this.rendererReady();let t=this.renderer;if(!t)return;let e=this.diff();t.setDiff(e?Ze(e):null)}),Oo(()=>{this.mode(),this.layoutName(),this.query(),this.kind(),this.selected(),this.selectedEdge(),this.groupBy(),this.collapsed(),this.vp(),this.schedulePersist()}),this.destroyRef.onDestroy(()=>{this.persistTimer&&clearTimeout(this.persistTimer),this.destroyCanvas()}),this.load()}canvasRenderer(){return this.renderer}mounting=null;async mountCanvas(t){if(!this.mounting){this.mounting=t;try{let{createCytoscapeRenderer:e}=await import(`./chunk-DmeV4Ae_.js`);if(this.canvasEl()?.nativeElement!==t||this.renderer)return;let o=e({animate:!(typeof matchMedia<`u`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches)});o.mount(t),o.onSelect(s=>this.onCanvasSelect(s)),o.onHover(s=>this.hovered.set(s)),o.onViewport(s=>this.vp.set(s)),o.layout(this.layoutName()),this.renderer=o,this.rendererReady.set(!0)}finally{this.mounting=null}}}destroyCanvas(){this.renderer?.destroy(),this.renderer=null,this.rendererReady.set(!1)}onCanvasSelect(t){t?.type===`node`?(this.selectedEdge.set(null),this.selectId(t.id)):t?.type===`edge`?(this.selected.set(null),this.selectedEdge.set(this.fed()?.edges.find(e=>e.id===t.id)??null)):(this.selected.set(null),this.selectedEdge.set(null))}setMode(t){this.mode.set(t)}setLayout(t){this.layoutName.set(t),this.renderer?.layout(t)}resetLayout(){this.renderer?.layout(this.layoutName())}fitCanvas(){this.renderer?.fit()}zoomToSelected(){let t=this.selected()?.id??this.selectedEdge()?.id;t&&this.renderer?.zoomTo(t)}selectFocus(t){this.selectId(t),this.renderer&&this.renderer.zoomTo(t)}onGroupBy(t){let e=t.target.value;this.groupBy.set(e===`kind`||e===`forge`||e===`host`?e:null),this.collapsed.set(new Set)}toggleGroup(t){let e=new Set(this.collapsed());e.has(t)?e.delete(t):e.add(t),this.collapsed.set(e)}onPathTarget(t){let e=t.target.value;this.pathTarget.set(e||null)}pathOptions(t){return(this.fed()?.nodes??[]).filter(e=>e.id!==t).slice(0,Vi).map(e=>({id:e.id}))}takeSnapshot(){let t=this.fed();if(!t)return;let e=Xe(t,new Date().toISOString());tt(j(),e),this.snap.set(e),this.diff.set(oe(e,t))}toggleDiff(t){this.diff.set(this.diff()?null:oe(this.snap(),t))}dropSnapshot(){it(j()),this.snap.set(null),this.diff.set(null)}resetView(){We(j()),this.mode.set(`list`),this.query.set(``),this.kind.set(null),this.selected.set(null),this.selectedEdge.set(null),this.pathTarget.set(null),this.groupBy.set(null),this.collapsed.set(new Set),this.layoutName.set(`cose`),this.vp.set(null),this.renderer?.layout(`cose`)}schedulePersist(){this.persistTimer&&clearTimeout(this.persistTimer),this.persistTimer=setTimeout(()=>{this.persistTimer=null;let t={schema:`forge-portal/GraphView/v1`,mode:this.mode(),layout:this.layoutName(),query:this.query(),kind:this.kind(),selectedNode:this.selected()?.id??null,selectedEdge:this.selectedEdge()?.id??null,viewport:this.vp(),groupBy:this.groupBy(),collapsedGroups:[...this.collapsed()]};Ue(j(),t)},200)}applySaved(){if(this.restored)return;this.restored=!0;let t=Ke(j());if(!t)return;this.mode.set(t.mode),this.layoutName.set(t.layout),this.query.set(t.query),this.kind.set(t.kind),this.groupBy.set(t.groupBy),this.collapsed.set(new Set(t.collapsedGroups)),t.viewport&&(this.pendingViewport=t.viewport);let e=this.nodeById();if(t.selectedNode&&e.has(t.selectedNode))this.selected.set(e.get(t.selectedNode));else if(t.selectedEdge){let a=this.fed()?.edges.find(o=>o.id===t.selectedEdge);a&&this.selectedEdge.set(a)}}exportPng(){let t=this.renderer?.exportPng();t&&this.download(t,`forge-federated-graph.png`)}exportSvg(){let t=this.renderer?.exportSvg();t&&this.download(`data:image/svg+xml;charset=utf-8,${encodeURIComponent(t)}`,`forge-federated-graph.svg`)}download(t,e){let a=document.createElement(`a`);a.href=t,a.download=e,a.click()}kindColor(t){return m[t].color}kindShape(t){return m[t].shape}isFailed=p$1;degreeOf(t){return this.degreeMap().get(t)??0}relsOut(t){return(this.fed()?.edges??[]).filter(e=>e.source===t)}relsIn(t){return(this.fed()?.edges??[]).filter(e=>e.target===t)}metaRows(t){return Object.entries(t.meta??{})}hoverLine(){let t=this.hovered();if(!t)return`\xA0`;let e=this.fed();if(!e)return t.id;if(t.type===`node`){let o=this.nodeById().get(t.id);return o?`${o.kind} \xB7 ${o.id}`:t.id}let a=e.edges.find(o=>o.id===t.id);return a?`${a.kind} \xB7 ${T$1[a.evidence]}`:t.id}evidenceState(t){return this.fed()?.sources[t]?.state??`unverified`}evidenceLoadedAt(t){if(t===`graphs`)return this.graphsLoadedAt();if(t===`bootstrap`)return this.store.refreshedAt();let a=this.srcs.find(o=>o.id===t)?.src.loadedAt();return a?y(a):null}stampAt(t){return y(t)}async load(){this.error.set(null),this.loading.set(!0),this.selected.set(null),this.selectedEdge.set(null);let t=hE(this.api.graphs()).then(e=>{this.bundle.set(e),this.graphsLoadedAt.set(new Date().toISOString())}).catch(e=>{this.bundle.set(null),this.error.set(c(e))});await Promise.allSettled([t,...this.srcs.map(e=>e.src.load(()=>this.read(e.id)))]),this.loading.set(!1),this.rebuild(),this.applySaved(),this.snap()&&this.diff()}read(t){switch(t){case`capabilities`:return this.api.capabilities();case`skills`:return this.api.skills();case`agents`:return this.api.agents();case`mcp`:return this.api.mcpServers();case`hosts`:return this.api.hosts();case`tasks`:return this.api.tasks();case`events`:return this.api.events()}}rebuild(){let t=h=>h.data()!==null?`loaded`:h.unavailable()?`unavailable`:`unverified`,e=this.error(),a=this.bundle(),o=a?a.availability.state===`available`||a.availability.state===`no_graph`?`loaded`:`unverified`:e&&(e.status===404||e.body.code===`PORTAL-NOT-FOUND`)?`unavailable`:`unverified`,s=this.store.descriptor(),m={};for(let h of this.srcs)m[h.id]=t(h.src);m.graphs=o,m.bootstrap=s?`loaded`:`unverified`,this.fed.set(H({capabilities:this.data(`capabilities`),skills:this.data(`skills`),agents:this.data(`agents`),mcp:this.data(`mcp`),hosts:this.data(`hosts`),tasks:this.data(`tasks`),events:this.data(`events`)?.events??null,graphViews:this.bundle()?.views??null,servingForge:s?.forge_id??null,servingVersion:s?.forge_version??null,availability:m}))}data(t){return this.srcs.find(e=>e.id===t)?.src.data()??null}select(t){this.selectedEdge.set(null),this.pathTarget.set(null),this.selected.set(t)}selectId(t){let e=this.nodeById().get(t);e&&this.select(e)}selectEdge(t){let e=this.fed()?.edges.find(a=>a.id===t);e&&(this.selected.set(null),this.selectedEdge.set(e))}isNeighbor(t){let e=this.selected();if(!e||e.id===t.id)return!1;let a=this.report();return a?a.uses.some(o=>o.id===t.id)||a.usedBy.some(o=>o.id===t.id):!1}toggleKind(t){this.kind.set(this.kind()===t?null:t)}kindOptions(t){return G.filter(e=>(t.counts[e]??0)>0)}label(t){return this.nodeById().get(t)?.label??t}openLink(t){return r(t)}endpointFor(t){return T$1[t]}sourceList(t){return Object.entries(t.sources).map(([e,a])=>({id:e,info:a}))}sourceBadge(t){return t===`loaded`?`ok`:t===`unavailable`?`muted`:`warn`}exportJson(){return JSON.stringify(this.fed(),null,2)}exportGraph(){if(!this.fed())return;let t=document.createElement(`a`);t.href=`data:application/json;charset=utf-8,${encodeURIComponent(this.exportJson())}`,t.download=`forge-federated-graph.json`,t.click()}viewName(t){return String(t.view??t.name??`view`)}viewNodes(t){let e=t.nodes;return Array.isArray(e)?e.length:Number(t.node_count??0)}viewEdges(t){let e=t.edges;return Array.isArray(e)?e.length:Number(t.edge_count??0)}static ɵfac=function(e){return new(e||i)};static ɵcmp=ei$1({type:i,selectors:[[`page-graph`]],viewQuery:function(e,a){e&1&&Ym(a.canvasEl,ht,5),e&2&&_S()},decls:11,vars:14,consts:[[`canvasEl`,``],[`hintId`,`graph`,3,`title`,`subtitle`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[3,`error`],[`role`,`status`],[`data-section`,`federated`,1,`card`,`fed`],[3,`retry`,`error`],[`kind`,`card`,3,`lines`],[1,`card`],[`icon`,`graph`,3,`title`,`hint`],[`target`,`_blank`,`rel`,`noopener`,1,`btn`,`btn--primary`,3,`href`],[1,`views`],[`name`,`external`,3,`size`],[`name`,`graph`,3,`size`],[1,`muted`],[1,`fed__head`],[`name`,`network`,3,`size`],[1,`chip`],[1,`fed__head-side`],[`role`,`group`,`data-toggle`,`view`,1,`fed__view-toggle`],[`type`,`button`,`data-view`,`list`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-view`,`canvas`,1,`fg-pill`,3,`click`],[`data-action`,`snapshot`,1,`btn`,3,`click`,`disabled`],[`name`,`copy`,3,`size`],[`data-action`,`export`,1,`btn`,3,`click`,`disabled`],[`data-strip`,`sources`,1,`fed__sources`],[`data-section`,`snapshot-bar`,1,`fed__snap`,`muted`],[3,`query`,`placeholder`],[`data-section`,`diff`,`aria-live`,`polite`,1,`card`,`fed__diff`,`fg-enter`],[`data-section`,`inspector`,`aria-live`,`polite`,1,`card`,`fed__detail`,`fg-enter`],[`data-section`,`edge-inspector`,`aria-live`,`polite`,1,`card`,`fed__detail`,`fg-enter`],[`data-section`,`canvas`,1,`fed__canvas-wrap`],[`data-list`,`nodes`,1,`fed__nodes`],[`icon`,`network`,3,`title`],[3,`state`,`labelOverride`],[`type`,`button`,`data-action`,`compare`,1,`fg-pill`,3,`click`],[`name`,`diff`,3,`size`],[`type`,`button`,`data-action`,`snap-clear`,1,`fg-pill`,3,`click`],[3,`queryChange`,`query`,`placeholder`],[`type`,`button`,1,`fg-pill`,3,`click`],[`type`,`button`,1,`fg-pill`],[1,`fed__diff-cols`],[1,`fed__impact`],[`data-diff`,`added`,1,`fed__edges`],[`data-diff`,`removed`,1,`fed__edges`],[`data-diff`,`changed`,1,`fed__edges`],[`type`,`button`,1,`chip-link`,3,`click`],[1,`fed__edge-ev`],[1,`fed__detail-head`],[`state`,`unverified`],[`state`,`FAILED`,3,`labelOverride`],[1,`fed__detail-actions`],[1,`btn`,`btn--mini`,`fed__open`,3,`routerLink`,`queryParams`,`fragment`],[1,`icon-btn`,3,`click`],[`name`,`chevron-right`,3,`size`],[1,`kv`],[1,`fed__evidence`],[1,`fed__rel-cols`],[`data-rel`,`out`,1,`fed__edges`],[`data-rel`,`in`,1,`fed__edges`],[`data-section`,`impact`,1,`fed__impactsec`],[`aria-hidden`,`true`],[`role`,`group`,1,`fed__depth`],[`type`,`button`,1,`fg-pill`,`fg-pill--mini`],[1,`muted`,`fed__impactsub`],[`data-impact`,`usedBy`,1,`fed__edges`],[`data-impact`,`uses`,1,`fed__edges`],[1,`fed__facts`,`muted`],[`state`,`muted`,3,`labelOverride`],[1,`fed__cycle`],[`data-section`,`path`,1,`fed__path`],[`for`,`path-target`,1,`muted`],[`id`,`path-target`,1,`input`,`fed__pathsel`,3,`change`,`value`],[`value`,``],[3,`value`],[`type`,`button`,`data-dir`,`out`,1,`fg-pill`,`fg-pill--mini`,3,`click`],[`type`,`button`,`data-dir`,`both`,1,`fg-pill`,`fg-pill--mini`,3,`click`],[1,`fed__honest`,`muted`],[1,`muted`,`fed__toponote`],[`type`,`button`,1,`fg-pill`,`fg-pill--mini`,3,`click`],[`data-path`,`found`,1,`fed__pathlist`],[`data-path`,`none`,1,`muted`],[1,`fed__impact`,`muted`],[1,`fed__edges`],[`role`,`toolbar`,1,`fed__toolbar`],[1,`fed__toolbar-gap`],[`for`,`group-by`,1,`muted`],[`id`,`group-by`,`data-action`,`group`,1,`input`,`fed__groupsel`,3,`change`,`value`],[`value`,`kind`],[`value`,`forge`],[`value`,`host`],[`type`,`button`,`data-action`,`reset`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`fit`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`zoom`,1,`fg-pill`,3,`click`,`disabled`],[`type`,`button`,`data-action`,`png`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`svg`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`reset-view`,1,`fg-pill`,3,`click`],[`data-canvas`,`graph`,`role`,`application`,1,`fed__canvas`],[`data-status`,`hover`,1,`muted`,`fed__hover`],[1,`fed__legend`],[`data-line`,`solid`,1,`fed__legend-line`],[1,`fed__legend-rule`],[`data-line`,`dashed`,1,`fed__legend-line`],[1,`fed__legend-rule`,`fed__legend-rule--dashed`],[`data-line`,`dotted`,1,`fed__legend-line`],[1,`fed__legend-rule`,`fed__legend-rule--dotted`],[`data-strip`,`groups`,1,`fed__groups`],[1,`fed__legend-dot`],[`type`,`button`,1,`fed__node`,3,`click`],[1,`fed__label`],[1,`fed__state`],[1,`fed__id`]],template:function(e,a){if(e&1&&(da(0,`ui-page-header`,1),oC(1,`t`),oC(2,`t`),da(3,`button`,2),Ta(`click`,function(){return a.load()}),ba(4,`ui-icon`,3),WS(5),oC(6,`t`),yd()(),uS(7,yt,1,1,`ui-error`,4),uS(8,xt,3,4,`div`,5),uS(9,wt,2,1),uS(10,Mi,41,44,`section`,6)),e&2){let o,s,m;Wm(`title`,sC(1,8,`graph.title`))(`subtitle`,sC(2,10,`graph.subtitle`)),hD(4),Wm(`size`,15),hD(),Dd(` `,sC(6,12,`state.refresh`),` `),hD(2),fS((o=a.error())?7:-1,o),hD(),fS(a.loading()?8:-1),hD(),fS((s=a.bundle())?9:-1,s),hD(),fS((m=a.fed())?10:-1,m)}},dependencies:[yc,T,I,_,D$1,cE,k$2,h,aE],styles:[`.views[_ngcontent-%COMP%]{list-style:none;padding:0;margin:var(--%NS%space-4) 0 0;display:grid}.views[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-2) var(--%NS%space-3);border-radius:var(--%NS%radius-md)}.views[_ngcontent-%COMP%] li[_ngcontent-%COMP%] + li[_ngcontent-%COMP%]{border-top:1px solid var(--%NS%border)}.views[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:hover{background:var(--%NS%bg-hover)}.muted[_ngcontent-%COMP%]{font-size:var(--%NS%font-sm)}.views[_ngcontent-%COMP%] strong[_ngcontent-%COMP%], .fed[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.fed[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3)}.fed__head[_ngcontent-%COMP%], .fed__detail-head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2);flex-wrap:wrap}.fed[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650}.views[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%], .fed__head[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%], .fed__detail-head[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.fed__state[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);border-radius:var(--%NS%radius-pill);flex:none;color:var(--%NS%fg-muted);border:1px solid var(--%NS%border);padding:0 6px;max-width:8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fed__sources[_ngcontent-%COMP%], .fed__legend[_ngcontent-%COMP%], .fed__nodes[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0}.fed__sources[_ngcontent-%COMP%], .fed__legend[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-1) var(--%NS%space-3);font-size:var(--%NS%font-xs)}.fed__sources[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0}.fed__sources[_ngcontent-%COMP%] li[_ngcontent-%COMP%], .fed__legend[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-1)}.fed__legend[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.fed__nodes[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--%NS%space-2)}.fed__node[_ngcontent-%COMP%]{width:100%;display:flex;align-items:center;gap:var(--%NS%space-2);padding:var(--%NS%space-2);border:1px solid var(--%NS%border);background:var(--%NS%bg-elevated);border-radius:var(--%NS%radius-md);color:var(--%NS%fg);font:inherit;text-align:left;cursor:pointer;transition:border-color var(--%NS%motion-fast),box-shadow var(--%NS%motion-fast),background var(--%NS%motion-fast)}.fed__node[_ngcontent-%COMP%]:hover{border-color:var(--%NS%accent-ink);background:var(--%NS%bg-hover)}.fed__node[data-unverified][_ngcontent-%COMP%]{border-style:dashed;background:color-mix(in srgb,var(--%NS%bg-elevated) 55%,transparent)}.fed__node[data-failed][_ngcontent-%COMP%]{border-color:var(--%NS%error)}.fed__node[data-selected][_ngcontent-%COMP%]{border-color:var(--%NS%accent-ink);box-shadow:0 0 0 1px var(--%NS%accent)}.fed__node[data-neighbor][_ngcontent-%COMP%]{border-color:var(--%NS%info);box-shadow:0 0 0 1px var(--%NS%info)}.fed__label[_ngcontent-%COMP%], .fed__id[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.fed__label[_ngcontent-%COMP%]{font-weight:600}.fed__id[_ngcontent-%COMP%]{margin-left:auto;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.fed__detail[_ngcontent-%COMP%]{margin:var(--%NS%space-4) 0;border-left:3px solid var(--%NS%accent)}.fed__detail-actions[_ngcontent-%COMP%], .fed__head-side[_ngcontent-%COMP%], .fed__view-toggle[_ngcontent-%COMP%], .fed__depth[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-2);flex-wrap:wrap}.fed__depth[_ngcontent-%COMP%]{gap:var(--%NS%space-1);margin-left:var(--%NS%space-2)}.fed__open[_ngcontent-%COMP%]{text-decoration:none}.kv[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin:0}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{min-width:7rem;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm);flex:none}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0}.fed__canvas-wrap[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2)}.fed__toolbar[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--%NS%space-2)}.fed__toolbar-gap[_ngcontent-%COMP%]{flex:1}.fed__canvas[_ngcontent-%COMP%]{height:520px;border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:var(--%NS%bg-elevated);overflow:hidden}.fed__canvas[_ngcontent-%COMP%] canvas[_ngcontent-%COMP%]{outline:none}.fed__hover[_ngcontent-%COMP%]{margin:0;min-height:1.1em;font-size:var(--%NS%font-xs)}.fed__legend-dot[_ngcontent-%COMP%]{width:10px;height:10px;display:inline-block;border-radius:3px;flex:none}.fed__legend-rule[_ngcontent-%COMP%]{width:18px;height:0;border-top:2px solid var(--%NS%fg-muted);display:inline-block;flex:none}.fed__legend-rule--dashed[_ngcontent-%COMP%]{border-top-style:dashed}.fed__legend-rule--dotted[_ngcontent-%COMP%]{border-top-style:dotted}`]})};export{nt as GraphPage}; \ No newline at end of file diff --git a/portal/assets/chunk-DJd3bKJi.js b/portal/assets/chunk-DJd3bKJi.js deleted file mode 100644 index ccd0d0a..0000000 --- a/portal/assets/chunk-DJd3bKJi.js +++ /dev/null @@ -1 +0,0 @@ -import{r as k}from"./chunk-DjkjLihA.js";var O=`forge/FederatedGraph/v1`;var G=[`forge`,`capability`,`skill`,`agent`,`mcp`,`host`,`operation`,`tool`];var $=[`bootstrap`,`graphs`,`capabilities`,`skills`,`agents`,`mcp`,`hosts`,`tasks`,`events`];var T={bootstrap:`GET /api/v1/bootstrap`,graphs:`GET /api/v1/graphs`,capabilities:`GET /api/v1/capabilities`,skills:`GET /api/v1/skills`,agents:`GET /api/v1/agents`,mcp:`GET /api/v1/mcp/servers`,hosts:`GET /api/v1/hosts`,tasks:`GET /api/v1/tasks`,events:`GET /api/v1/events`};function M(s,d){let a=s.edges.filter(l=>l.source===d||l.target===d),g=new Set([d]);for(let l of a)g.add(l.source),g.add(l.target);return{nodes:g,edges:a}}var m=(s,d)=>sd?1:0;var j=new Set([`the-forge`,`api-forge`,`spark-forge-aws`,`spark-forge-azure`,`platform-forge`,`forge-doctor-data`,`forge-doctor-api`]);var I=[`origin`,`forge`,`forge_id`,`provider`,`source_provider`];function t(s){return typeof s==`string`&&s.trim()?s.trim():null}var P=new Set(G);function x(s){let d=t(s);if(!d)return null;let a=d.indexOf(`:`);if(a<=0||a===d.length-1)return null;let g=d.slice(0,a),l=d.slice(a+1).trim();return P.has(g)&&l?`${g}:${l}`:null}function E(s,d){for(let g of I){let l=t(s[g]);if(l)return l}let a=t(s.source);return a&&(j.has(a)||d.has(a))?a:null}function H(s){let d={};for(let e of $){let n=s.availability?.[e];if(n)d[e]=n;else if(e===`bootstrap`)d[e]=t(s.servingForge)?`loaded`:`unverified`;else d[e]=(e===`capabilities`?s.capabilities:e===`skills`?s.skills:e===`agents`?s.agents:e===`mcp`?s.mcp:e===`hosts`?s.hosts:e===`tasks`?s.tasks:e===`events`?s.events:s.graphViews)!=null?`loaded`:`unavailable`}let a=new Map,g=new Map,l=new Set;function p(e,n,o,i,c=!1,r){let u=`${e}:${n}`,F=a.get(u);return F?(F.evidence.add(i),F.flagged||=c,r&&D(F,r)):a.set(u,k({label:o,kind:e,evidence:new Set([i]),flagged:c},r)),u}function D(e,n){e.state??=n.state,e.category??=n.category,e.origin??=n.origin,e.version??=n.version,n.meta&&(e.meta=k(k({},n.meta),e.meta))}function h(e,n,o){return l.add(e),p(`forge`,e,e,n,!1,{version:o??void 0})}function k$1(e,n){if(a.has(e)){a.get(e).evidence.add(n);return}let o=e.indexOf(`:`);p(e.slice(0,o),e.slice(o+1),e.slice(o+1),n)}function v(e,n,o,i,c){k$1(e,i),k$1(n,i);let r=c?`${e}|${o}|${n}|${c}`:`${e}|${o}|${n}`;if(!g.has(r)){let u={id:r,source:e,target:n,kind:o,evidence:i};c&&(u.detail=c),g.set(r,u)}}let b=e=>{let n={};for(let[o,i]of Object.entries(e))i!==void 0&&(n[o]=i);return Object.keys(n).length?n:void 0},N=e=>e?.length?[...e].sort(m).join(`, `):null,y=t(s.servingForge);y&&h(y,`bootstrap`,t(s.servingVersion));for(let e of s.graphViews??[]){if(!e||typeof e!=`object`)continue;let n=e.descriptor,o=n&&typeof n==`object`?t(n.provider_id):null,i=n&&typeof n==`object`?t(n.provider_version)??t(n.version):null;o&&h(o,`graphs`,i);let c=e.nodes;if(Array.isArray(c))for(let r of c){let u=r&&typeof r==`object`?t(r.source_provider):null;u&&h(u,`graphs`)}}for(let e of s.capabilities??[]){let n=t(e?.id);n&&(p(`capability`,n,n,`capabilities`,e.state===`unverified`,{state:t(e?.state)??void 0,origin:y??void 0,meta:b({detail:t(e?.detail)})}),y&&v(`forge:${y}`,`capability:${n}`,`declares`,`capabilities`))}for(let e of s.skills??[]){let n=t(e?.id)??t(e?.name);if(!n)continue;let o=E(e,l);p(`skill`,n,t(e?.name)??n,`skills`,e.state===`unverified`,{state:t(e?.state)??void 0,category:t(e?.domain)??void 0,origin:o??void 0,meta:b({hosts:N(e?.hosts),source:t(e?.source),description:t(e?.description)})}),o&&v(`skill:${n}`,`forge:${o}`,`origin`,`skills`)}let S=new Map;for(let e of s.skills??[]){let n=t(e?.name),o=t(e?.id);if(n&&o){let i=S.get(n)??[];i.push(o),S.set(n,i)}}let K=e=>{if(a.has(`skill:${e}`))return`skill:${e}`;let n=S.get(e);return n?.length?`skill:${[...n].sort(m)[0]}`:`skill:${e}`};for(let e of s.agents??[]){let n=t(e?.id)??t(e?.name);if(!n)continue;let o=E(e,l);p(`agent`,n,t(e?.name)??n,`agents`,e.state===`unverified`,{state:t(e?.state)??void 0,category:t(e?.role)??void 0,origin:o??void 0,meta:b({authority:t(e?.authority),domains:e?.domains?.length?[...e.domains].sort(m).join(`, `):null,skills:e?.skills?.length??null,hosts:N(e?.hosts),description:t(e?.description)})}),o&&v(`agent:${n}`,`forge:${o}`,`origin`,`agents`);let i=new Set;for(let c of e.skills??[]){let r=t(c);!r||i.has(r)||(i.add(r),v(`agent:${n}`,K(r),`associated`,`agents`))}}for(let e of s.mcp??[]){let n=t(e?.id);if(!n)continue;let o=t(e.host);p(`mcp`,n,n,`mcp`,!1,{state:t(e?.state)??void 0,category:o??void 0,meta:b({tools_count:e?.tools_count??null,last_verify:t(e?.last_verify)})}),o&&v(`mcp:${n}`,`host:${o}`,`bound_to`,`mcp`)}for(let e of s.hosts??[]){let n=t(e?.host);n&&p(`host`,n,n,`hosts`,!1,{state:t(e?.integration)??void 0,version:t(e?.version)??void 0,meta:b({detected:e?.detected??null,supported:e?.supported??null,logged_in:e?.logged_in??null,launchable:e?.launchable??null})})}for(let e of s.tasks??[]){let n=t(e?.id);if(!n)continue;let o=t(e?.label)??t(e?.verb)??n,i=E(e,l);p(`operation`,n,o,`tasks`,!1,{state:t(e?.stage)??void 0,category:t(e?.verb)??void 0,origin:i??void 0,meta:b({exit_code:e?.exit_code??null,started_at:t(e?.started_at),finished_at:t(e?.finished_at)})}),i&&v(`operation:${n}`,`forge:${i}`,`origin`,`tasks`)}for(let e of s.events??[]){if(!e||typeof e!=`object`)continue;let n=t(e.event_type)??`event`,o=x(e.source),i=x(e.target),c=e.metadata&&typeof e.metadata==`object`?e.metadata:null,r=c?t(c.task_id):null;o&&k$1(o,`events`),i&&k$1(i,`events`),o&&i&&v(o,i,`observed`,`events`,n),o&&r?v(o,`operation:${r}`,`observed`,`events`,n):r&&k$1(`operation:${r}`,`events`)}let _=[...a.entries()].map(([e,n])=>{let o=[...n.evidence].sort(m);return k(k(k(k(k({id:e,kind:n.kind,label:n.label,evidence:o,unverified:n.flagged||!o.some(i=>d[i]===`loaded`)},n.state!==void 0?{state:n.state}:{}),n.category!==void 0?{category:n.category}:{}),n.origin!==void 0?{origin:n.origin}:{}),n.version!==void 0?{version:n.version}:{}),n.meta!==void 0?{meta:n.meta}:{})}).sort((e,n)=>m(e.id,n.id)),A=[...g.values()].sort((e,n)=>m(e.id,n.id)),R=Object.fromEntries(G.map(e=>[e,0]));for(let e of _)R[e.kind]+=1;let w={};for(let e of $)w[e]={state:d[e],endpoint:T[e]};return{schema:O,nodes:_,edges:A,counts:R,sources:w}}export{T as a,M as i,G as n,H as r,E as t}; \ No newline at end of file diff --git a/portal/assets/chunk-DKmatQN-.js b/portal/assets/chunk-DKmatQN-.js deleted file mode 100644 index b5f5614..0000000 --- a/portal/assets/chunk-DKmatQN-.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as da,Et as p,F as Wm,Gt as wS,K as aC,Lt as tn,M as Ta,Mt as sC,N as Uh,P as WS,Q as cE,Tt as oC,X as bS,Xt as yd,Yt as yc,Z as ba,ct as gS,dt as hE,gt as k,h as Jm,ht as jh,it as ei,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,xt as nC,yt as mS,zt as uS}from"./chunk-BelLryvf.js";import{i as n,o as f,r as g}from"./main-A2NKRJGT.js";import{t as _}from"./chunk-BKRLVsID.js";import{t as D}from"./chunk-CiuPOfJ0.js";import{n as k$1,t as I}from"./chunk-D2KAfPv6.js";import{t as T}from"./chunk-BBusSOqc.js";var G=t=>({count:t});var H=(t,r)=>r.name;function J(t,r){if(t&1){let o=wS();da(0,`ui-error`,5),Ta(`retry`,function(){jh(o);let g=bS();return Uh(g.load())}),yd()}t&2&&Wm(`error`,r)}function K(t,r){t&1&&(da(0,`section`,4),ba(1,`ui-skeleton`,6),yd()),t&2&&(hD(),Wm(`lines`,4))}function Q(t,r){if(t&1&&(da(0,`p`,12),ba(1,`ui-icon`,26),WS(2),oC(3,`t`),yd()),t&2){let o=bS(2);hD(),Wm(`size`,15),hD(),Dd(` `,aC(3,2,`config.alert.missing`,nC(5,G,o.missingRequired().length)),` `)}}function W(t,r){t&1&&ba(0,`ui-state-badge`,22)}function X(t,r){t&1&&(WS(0),oC(1,`t`)),t&2&&Dd(` `,sC(1,1,`state.yes`),` `)}function Y(t,r){t&1&&ba(0,`ui-state-badge`,28)}function Z(t,r){if(t&1&&(da(0,`code`,29),WS(1),yd()),t&2){let o=bS().$implicit;hD(),Jm(o.path)}}function ee(t,r){t&1&&(da(0,`span`,17),WS(1),oC(2,`t`),yd()),t&2&&(hD(),Jm(sC(2,1,`environmentState.UNSET`)))}function te(t,r){if(t&1&&(da(0,`tr`)(1,`td`)(2,`code`),WS(3),yd()(),da(4,`td`),WS(5),oC(6,`t`),yd(),da(7,`td`),WS(8),oC(9,`t`),yd(),da(10,`td`),uS(11,W,1,0,`ui-state-badge`,22)(12,X,2,3)(13,Y,1,0,`ui-state-badge`,28),yd(),da(14,`td`),WS(15),yd(),da(16,`td`),uS(17,Z,2,1,`code`,29)(18,ee,3,3,`span`,17),yd()()),t&2){let o=r.$implicit;Ar(`data-missing`,o.required&&!o.present||null)(`data-invalid`,o.valid===!1||null),hD(3),Jm(o.name),hD(2),Jm(sC(6,8,o.required?`state.required`:`state.optional`)),hD(3),Jm(sC(9,10,o.present?`state.yes`:`state.no`)),hD(3),fS(o.valid===null?11:o.valid?12:13),hD(4),Jm(o.kind),hD(2),fS(o.path?17:18)}}function ie(t,r){if(t&1&&(da(0,`table`,13)(1,`thead`)(2,`tr`)(3,`th`,27),WS(4),oC(5,`t`),yd(),da(6,`th`,27),WS(7),oC(8,`t`),yd(),da(9,`th`,27),WS(10),oC(11,`t`),yd(),da(12,`th`,27),WS(13),oC(14,`t`),yd(),da(15,`th`,27),WS(16),oC(17,`t`),yd(),da(18,`th`,27),WS(19),oC(20,`t`),yd()()(),da(21,`tbody`),gS(22,te,19,12,`tr`,null,H),yd()()),t&2){let o=bS();hD(4),Jm(sC(5,6,`config.col.name`)),hD(3),Jm(sC(8,8,`config.col.required`)),hD(3),Jm(sC(11,10,`config.col.present`)),hD(3),Jm(sC(14,12,`config.col.valid`)),hD(3),Jm(sC(17,14,`config.col.kind`)),hD(3),Jm(sC(20,16,`config.col.path`)),hD(3),mS(o.variables)}}function ne(t,r){t&1&&(ba(0,`ui-empty`,14),oC(1,`t`),oC(2,`t`)),t&2&&Wm(`title`,sC(1,2,`empty.noData`))(`hint`,sC(2,4,`empty.noData.hint`))}function ae(t,r){if(t&1){let o=wS();da(0,`div`,18)(1,`code`,30),WS(2),yd(),da(3,`div`,31)(4,`div`,32)(5,`span`,33),WS(6,`PowerShell`),yd(),da(7,`code`,34),WS(8),yd(),da(9,`button`,35),oC(10,`t`),Ta(`click`,function(){let g=jh(o).$implicit,v=bS(2);return Uh(v.copy(v.psCommand(g.name)))}),ba(11,`ui-icon`,36),WS(12),oC(13,`t`),yd()(),da(14,`div`,32)(15,`span`,33),WS(16,`bash`),yd(),da(17,`code`,34),WS(18),yd(),da(19,`button`,35),oC(20,`t`),Ta(`click`,function(){let g=jh(o).$implicit,v=bS(2);return Uh(v.copy(v.shCommand(g.name)))}),ba(21,`ui-icon`,36),WS(22),oC(23,`t`),yd()()()()}if(t&2){let o=r.$implicit,c=bS(2);hD(2),Jm(o.name),hD(6),Jm(c.psCommand(o.name)),hD(),Ar(`aria-label`,sC(10,9,`state.copy`)),hD(2),Wm(`size`,13),hD(),Dd(` `,sC(13,11,`state.copy`),` `),hD(6),Jm(c.shCommand(o.name)),hD(),Ar(`aria-label`,sC(20,13,`state.copy`)),hD(2),Wm(`size`,13),hD(),Dd(` `,sC(23,15,`state.copy`),` `)}}function re(t,r){t&1&&(da(0,`p`,17),WS(1),oC(2,`t`),yd()),t&2&&(hD(),Jm(sC(2,1,`config.prepare.none`)))}function oe(t,r){if(t&1&&(da(0,`section`,7)(1,`div`,8)(2,`h2`,9),WS(3),oC(4,`t`),yd(),ba(5,`ui-state-badge`,10),yd(),da(6,`dl`,11)(7,`div`)(8,`dt`),WS(9),oC(10,`t`),yd(),da(11,`dd`)(12,`code`),WS(13),yd()()(),da(14,`div`)(15,`dt`),WS(16),oC(17,`t`),yd(),da(18,`dd`),WS(19),yd()(),da(20,`div`)(21,`dt`),WS(22),oC(23,`t`),yd(),da(24,`dd`),WS(25),oC(26,`t`),yd()()(),uS(27,Q,4,7,`p`,12),uS(28,ie,24,18,`table`,13)(29,ne,3,6,`ui-empty`,14),yd(),da(30,`section`,15)(31,`h2`,16),WS(32),oC(33,`t`),yd(),da(34,`p`,17),WS(35),oC(36,`t`),yd(),gS(37,ae,24,17,`div`,18,H,!1,re,3,3,`p`,17),yd(),da(40,`section`,19)(41,`h2`,20),WS(42),oC(43,`t`),yd(),da(44,`ul`,21)(45,`li`),ba(46,`ui-state-badge`,22),da(47,`span`,23)(48,`strong`),WS(49),oC(50,`t`),yd(),da(51,`small`,17),WS(52),oC(53,`t`),yd()()()(),da(54,`a`,24),ba(55,`ui-icon`,25),WS(56),oC(57,`t`),yd(),da(58,`p`,17),WS(59),oC(60,`t`),yd()()),t&2){let o=r,c=bS();hD(3),Jm(sC(4,19,`dashboard.accountEnvironment`)),hD(2),Wm(`state`,o.state),hD(4),Jm(sC(10,21,`config.env.prefix`)),hD(4),Jm(o.prefix),hD(3),Jm(sC(17,23,`config.env.scope`)),hD(3),Jm(o.scope),hD(3),Jm(sC(23,25,`config.env.aliases`)),hD(3),Jm(sC(26,27,o.windows_aliases?`state.yes`:`state.no`)),hD(2),fS(c.missingRequired().length?27:-1),hD(),fS(o.variables.length?28:29),hD(4),Jm(sC(33,29,`config.prepare.title`)),hD(3),Jm(sC(36,31,`config.prepare.hint`)),hD(2),mS(c.attention()),hD(5),Jm(sC(43,33,`config.apply.title`)),hD(7),Jm(sC(50,35,`config.apply.portal`)),hD(3),Jm(sC(53,37,`config.apply.unsupported`)),hD(3),Wm(`size`,15),hD(),Dd(` `,sC(57,39,`config.profiles.link`),` `),hD(3),Jm(sC(60,41,`config.profiles.hint`))}}var j=class t{api=p(g);toast=p(f);env=k(null);error=k(null);loading=k(!0);attention=tn(()=>(this.env()?.variables??[]).filter(r=>!r.present||r.valid===!1));missingRequired=tn(()=>(this.env()?.variables??[]).filter(r=>r.required&&(!r.present||r.valid===!1)));constructor(){this.load()}async load(){this.error.set(null),this.loading.set(!0);try{this.env.set(await hE(this.api.accountEnvironment()))}catch(r){this.error.set(r instanceof n?r:new n(0))}finally{this.loading.set(!1)}}psCommand(r){return`[Environment]::SetEnvironmentVariable('${r}', '', 'User')`}shCommand(r){return`export ${r}=`}async copy(r){try{await navigator.clipboard.writeText(r),this.toast.show(`state.copied`,`success`)}catch{this.toast.show(`error.generic`,`error`)}}static ɵfac=function(o){return new(o||t)};static ɵcmp=ei({type:t,selectors:[[`page-config`]],decls:10,vars:14,consts:[[3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[3,`error`],[`role`,`status`,`aria-live`,`polite`,1,`card`],[3,`retry`,`error`],[`kind`,`card`,3,`lines`],[`aria-labelledby`,`env-h`,1,`card`],[1,`card__heading`],[`id`,`env-h`],[3,`state`],[1,`kv`],[`role`,`alert`,1,`env-alert`],[1,`table`,`env-table`],[3,`title`,`hint`],[`aria-labelledby`,`prepare-h`,1,`card`,`prepare`],[`id`,`prepare-h`],[1,`muted`],[1,`prep`],[`aria-labelledby`,`apply-h`,1,`card`],[`id`,`apply-h`],[1,`capability`],[`state`,`unverified`],[1,`capability__body`],[`routerLink`,`/profiles`,1,`btn`],[`name`,`profiles`,3,`size`],[`name`,`alert`,3,`size`],[`scope`,`col`],[`state`,`INVALID`],[1,`path`],[1,`prep__name`],[1,`prep__cmds`],[1,`cmd`],[1,`cmd__shell`],[1,`cmd__text`],[1,`btn`,`btn--mini`,3,`click`],[`name`,`copy`,3,`size`]],template:function(o,c){if(o&1&&(da(0,`ui-page-header`,0),oC(1,`t`),oC(2,`t`),da(3,`button`,1),Ta(`click`,function(){return c.load()}),ba(4,`ui-icon`,2),WS(5),oC(6,`t`),yd()(),uS(7,J,1,1,`ui-error`,3),uS(8,K,2,1,`section`,4),uS(9,oe,61,43)),o&2){let g,v;Wm(`title`,sC(1,8,`config.title`))(`subtitle`,sC(2,10,`config.subtitle`)),hD(3),Wm(`disabled`,c.loading()),hD(),Wm(`size`,15),hD(),Dd(` `,sC(6,12,`state.refresh`),` `),hD(2),fS((g=c.error())?7:-1,g),hD(),fS(c.loading()&&!c.env()?8:-1),hD(),fS((v=c.env())?9:-1,v)}},dependencies:[yc,T,I,D,_,cE,k$1,aE],styles:[`.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.card[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em}.card__heading[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.card__heading[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0}.kv[_ngcontent-%COMP%]{display:grid;gap:6px;margin:0 0 var(--%NS%space-3)}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-2)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);min-width:140px}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;font-weight:550}.env-alert[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:0 0 var(--%NS%space-3);padding:var(--%NS%space-2) var(--%NS%space-3);border:1px solid color-mix(in srgb,var(--%NS%warn) 45%,transparent);border-left-width:3px;border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);color:var(--%NS%warn);font-weight:550}.env-table[_ngcontent-%COMP%]{margin-top:var(--%NS%space-2)}.env-table[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{font-family:var(--%NS%font-mono);font-size:var(--%NS%font-xs)}.env-table[_ngcontent-%COMP%] .path[_ngcontent-%COMP%]{overflow-wrap:anywhere;word-break:break-all}.env-table[_ngcontent-%COMP%] tr[data-missing][_ngcontent-%COMP%]{background:color-mix(in srgb,var(--%NS%warn) 8%,transparent)}.env-table[_ngcontent-%COMP%] tr[data-missing][_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{border-left:3px solid var(--%NS%warn)}.env-table[_ngcontent-%COMP%] tr[data-invalid][_ngcontent-%COMP%]{background:color-mix(in srgb,var(--%NS%error) 7%,transparent)}.env-table[_ngcontent-%COMP%] tr[data-invalid][_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{border-left:3px solid var(--%NS%error)}.prep[_ngcontent-%COMP%]{padding:var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);margin-bottom:var(--%NS%space-2);display:grid;gap:var(--%NS%space-2)}.prep__name[_ngcontent-%COMP%]{font-weight:650;overflow-wrap:anywhere}.prep__cmds[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2)}.cmd[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);padding:var(--%NS%space-2) var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:var(--%NS%bg)}.cmd__shell[_ngcontent-%COMP%]{flex:none;font-size:var(--%NS%font-xs);font-weight:700;color:var(--%NS%fg-muted);text-transform:uppercase;letter-spacing:.04em;min-width:76px}.cmd__text[_ngcontent-%COMP%]{flex:1;min-width:0;font-family:var(--%NS%font-mono);font-size:var(--%NS%font-xs);overflow-wrap:anywhere}.btn--mini[_ngcontent-%COMP%]{padding:2px var(--%NS%space-2);font-size:var(--%NS%font-xs);gap:4px;flex:none}.capability[_ngcontent-%COMP%]{list-style:none;padding:0;margin:0 0 var(--%NS%space-3);display:grid;gap:var(--%NS%space-2)}.capability[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-3);border:1px dashed var(--%NS%border);border-radius:var(--%NS%radius-md)}.capability__body[_ngcontent-%COMP%]{display:grid;gap:2px}.capability__body[_ngcontent-%COMP%] small[_ngcontent-%COMP%], .muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}a.btn[_ngcontent-%COMP%]{display:inline-flex;text-decoration:none}`]})};export{j as ConfigPage}; \ No newline at end of file diff --git a/portal/assets/chunk-DNCrHYu6.js b/portal/assets/chunk-DNCrHYu6.js new file mode 100644 index 0000000..75aff8e --- /dev/null +++ b/portal/assets/chunk-DNCrHYu6.js @@ -0,0 +1 @@ +import{$ as dS,At as qm,Bt as tn,D as Oo,Et as p,F as Sa,Ft as ry,J as aC,Jt as vd,Mt as rE,P as SS,Pt as rn,Q as cE,Qt as yS,S as Ma,Tt as oy,W as YS,Y as aE,Z as bd,at as ey,ct as hD,et as da,gt as k,i as Ar,it as ei,jt as rC,kt as qS,lt as hE,ot as gS,p as Hh,qt as vc,s as DS,ut as hS,vt as lC,xt as nC,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{i as n,r as g,t as g$1}from"./main-XW2ZMSO5.js";import{t as _}from"./chunk-16deWS0U.js";import{t as D}from"./chunk-Bg2lccQE.js";import{n as k$1,t as I}from"./chunk-DQtX_-dj.js";import{t as T}from"./chunk-BGgpmc9t.js";import{t as h}from"./chunk-DQJAW8AL.js";function F(e){return e.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().replace(/[^a-z0-9]+/g,` `).trim()}function de(e){let i=new Set;if(!e)return i;for(let t of F(e).split(/[^a-z0-9]+/))t&&i.add(t);return i}function se(e,i){if(e.size===0||i.size===0)return null;let t=0;for(let p of e)i.has(p)&&t++;let a=e.size+i.size-t;return a===0?null:t/a}function pe(e){return{entry:e,key:F(e.name||e.id),origin:e.origin?F(e.origin):null,version:e.version?F(e.version):null,desc:de(e.description)}}function ce(e,i,t){let a=[],p=se(e.desc,i.desc),m=e.origin!==null&&i.origin!==null&&e.origin===i.origin,f=e.origin!==null&&i.origin!==null&&e.origin!==i.origin,k=e.version!==null&&i.version!==null&&e.version!==i.version,y=p!==null&&p>=t,I;return m&&!k||y?(I=`possible-duplicate`,m&&a.push(`same origin (${e.origin})`),e.version!==null&&i.version!==null&&e.version===i.version&&a.push(`same version (${e.version})`),(e.version===null||i.version===null)&&a.push(`version unverified`),y&&a.push(`description similarity ${p.toFixed(2)} >= ${t}`),f&&a.push(`origins differ (${e.origin} vs ${i.origin})`),k&&a.push(`versions differ (${e.version} vs ${i.version})`)):(I=`same-name-different-entity`,f&&a.push(`different origins (${e.origin} vs ${i.origin})`),k&&a.push(`different versions (${e.version} vs ${i.version})`),p!==null?a.push(`description similarity ${p.toFixed(2)} < ${t}`):a.push(`description unverified — similarity not measurable`),!m&&!f&&a.push(`origin unverified`)),{a:e.entry.id,b:i.entry.id,verdict:I,reasons:a,similarity:p}}function ne(e,i=.8){let t=new Map;for(let p of e){let m=pe(p),f=m.key;if(!f)continue;let k=t.get(f);k?k.push(m):t.set(f,[m])}let a=[];for(let[p,m]of t){if(m.length<2)continue;let f=[];for(let y=0;yy.verdict===`possible-duplicate`)?`possible-duplicate`:`same-name-different-entity`;a.push({key:p,entries:m.map(y=>y.entry),kind:k,pairs:f})}return a}var me=()=>[`/agents`];var ue=e=>({q:e});var le=()=>[`/hosts`];var oe=(e,i)=>i.id;var _e=(e,i)=>i.key;var ge=(e,i)=>i.a+`|`+i.b;function fe(e,i){if(e&1){let t=DS();da(0,`ui-error`,6),Ma(`retry`,function(){Hh(t);let p=SS();return Vh(p.load())}),vd()}e&2&&qm(`error`,i)}function ye(e,i){e&1&&(da(0,`div`,4),aC(1,`t`),Sa(2,`ui-skeleton`,7),vd()),e&2&&(Ar(`aria-label`,lC(1,2,`state.loading`)),hD(2),qm(`lines`,2))}function ve(e,i){if(e&1){let t=DS();da(0,`button`,9),Ma(`click`,function(){let p=Hh(t).$implicit,m=SS(2);return Vh(m.toggleDomain(p))}),qS(1),vd()}if(e&2){let t=i.$implicit,a=SS(2);Ar(`data-tone`,a.domain()===t?`accent`:null)(`aria-pressed`,a.domain()===t),hD(),bd(` `,t,` `)}}function xe(e,i){if(e&1){let t=DS();da(0,`button`,25),Ma(`click`,function(){let p=Hh(t).$implicit,m=SS(4);return Vh(m.pick(p.id))}),qS(1),vd()}if(e&2){let t=i.$implicit;hD(),bd(` `,t.name||t.id,` `)}}function Se(e,i){if(e&1&&(da(0,`li`)(1,`code`),qS(2),vd(),qS(3,` ↔ `),da(4,`code`),qS(5),vd(),qS(6),vd()),e&2){let t=i.$implicit;hD(2),ey(t.a),hD(3),ey(t.b),hD(),bd(` — `,t.reasons.join(`; `),` `)}}function ke(e,i){if(e&1&&(da(0,`li`),Sa(1,`ui-state-badge`,21),aC(2,`t`),da(3,`span`,22),mS(4,xe,2,1,`button`,23,oe),vd(),da(6,`ul`,24),mS(7,Se,7,3,`li`,null,ge),vd()()),e&2){let t=i.$implicit;hD(),qm(`state`,t.kind===`possible-duplicate`?`unverified`:`warn`)(`labelOverride`,lC(2,2,t.kind===`possible-duplicate`?`skills.dedup.possible`:`skills.dedup.different`)),hD(3),yS(t.entries),hD(3),yS(t.pairs)}}function Ce(e,i){if(e&1&&(da(0,`section`,11)(1,`header`,17)(2,`h2`),Sa(3,`ui-icon`,18),qS(4),aC(5,`t`),vd(),da(6,`span`,19),qS(7),aC(8,`t`),vd()(),da(9,`ul`,20),mS(10,ke,9,4,`li`,null,_e),vd()()),e&2){let t=SS(2);hD(3),qm(`size`,15),hD(),ey(lC(5,3,`skills.dedup.title`)),hD(3),ey(lC(8,5,`skills.dedup.hint`)),hD(3),yS(t.findings())}}function be(e,i){if(e&1&&(qS(0),da(1,`code`),qS(2),vd(),da(3,`span`,36),qS(4),aC(5,`t`),vd()),e&2){let t=i;bd(` `,t.forge_name,` `),hD(2),bd(`(`,t.forge_id,`)`),hD(2),ey(lC(5,3,`explorer.serving`))}}function he(e,i){e&1&&Sa(0,`ui-state-badge`,33)}function Pe(e,i){if(e&1&&(da(0,`a`,37),qS(1),vd()),e&2){let t=i.$implicit;qm(`routerLink`,nC(3,le))(`fragment`,`host-`+t),hD(),ey(t)}}function Ee(e,i){if(e&1&&(da(0,`span`,34),mS(1,Pe,2,4,`a`,37,gS),vd()),e&2){let t=SS();hD(),yS(t.hosts)}}function Ie(e,i){e&1&&Sa(0,`ui-state-badge`,33)}function Te(e,i){if(e&1&&(da(0,`span`,19),qS(1),vd()),e&2){let t=SS();hD(),bd(` · `,t.source)}}function De(e,i){if(e&1){let t=DS();da(0,`section`,12)(1,`header`,26)(2,`h2`),Sa(3,`ui-icon`,27),qS(4),vd(),da(5,`span`,28)(6,`a`,29),qS(7),aC(8,`t`),Sa(9,`ui-icon`,30),vd(),da(10,`button`,31),aC(11,`t`),Ma(`click`,function(){Hh(t);let p=SS(2);return Vh(p.selected.set(null))}),Sa(12,`ui-icon`,30),vd()()(),da(13,`dl`,32)(14,`div`)(15,`dt`),qS(16),aC(17,`t`),vd(),da(18,`dd`)(19,`code`),qS(20),vd()()(),da(21,`div`)(22,`dt`),qS(23),aC(24,`t`),vd(),da(25,`dd`),qS(26),aC(27,`t`),vd()(),da(28,`div`)(29,`dt`),qS(30),aC(31,`t`),vd(),da(32,`dd`),qS(33),aC(34,`t`),vd()(),da(35,`div`)(36,`dt`),qS(37),aC(38,`t`),vd(),da(39,`dd`),Sa(40,`ui-state-badge`,21),vd()(),da(41,`div`)(42,`dt`),qS(43),aC(44,`t`),vd(),da(45,`dd`),dS(46,be,6,5)(47,he,1,0,`ui-state-badge`,33),vd()(),da(48,`div`)(49,`dt`),qS(50),aC(51,`t`),vd(),da(52,`dd`),dS(53,Ee,3,0,`span`,34)(54,Ie,1,0,`ui-state-badge`,33),vd()(),da(55,`div`)(56,`dt`),qS(57),aC(58,`t`),vd(),da(59,`dd`,35),Sa(60,`ui-state-badge`,33),da(61,`small`,19),qS(62),aC(63,`t`),vd()()(),da(64,`div`)(65,`dt`),qS(66),aC(67,`t`),vd(),da(68,`dd`,35),Sa(69,`ui-state-badge`,33),da(70,`small`,19),qS(71),aC(72,`t`),vd()()(),da(73,`div`)(74,`dt`),qS(75),aC(76,`t`),vd(),da(77,`dd`,35),Sa(78,`ui-state-badge`,33),da(79,`small`,19),qS(80),aC(81,`t`),vd()()(),da(82,`div`)(83,`dt`),qS(84),aC(85,`t`),vd(),da(86,`dd`,35),Sa(87,`ui-state-badge`,33),da(88,`small`,19),qS(89),aC(90,`t`),vd()()(),da(91,`div`)(92,`dt`),qS(93),aC(94,`t`),vd(),da(95,`dd`,35),Sa(96,`ui-state-badge`,33),da(97,`small`,19),qS(98),aC(99,`t`),vd()()(),da(100,`div`)(101,`dt`),qS(102),aC(103,`t`),vd(),da(104,`dd`)(105,`code`),qS(106,`GET /api/v1/skills`),vd(),dS(107,Te,2,1,`span`,19),vd()()()()}if(e&2){let t,a=i,p=SS(2);hD(3),qm(`size`,15),hD(),ey(a.name||a.id),hD(2),qm(`routerLink`,nC(75,me))(`queryParams`,rC(76,ue,a.name||a.id)),hD(),bd(` `,lC(8,33,`skills.agentsLink`),` `),hD(2),qm(`size`,13),hD(),Ar(`aria-label`,lC(11,35,`state.close`)),hD(2),qm(`size`,14),hD(4),ey(lC(17,37,`table.id`)),hD(4),ey(a.id),hD(3),ey(lC(24,39,`skills.domain`)),hD(3),ey(a.domain??lC(27,41,`state.absent`)),hD(4),ey(lC(31,43,`skills.detail.description`)),hD(3),ey(a.description||lC(34,45,`state.absent`)),hD(4),ey(lC(38,47,`skills.state`)),hD(3),qm(`state`,p.mapState(a.state))(`labelOverride`,a.state),hD(3),ey(lC(44,49,`skills.origin`)),hD(3),hS((t=p.store.descriptor())?46:47,t),hD(4),ey(lC(51,51,`skills.compatibility`)),hD(3),hS(a.hosts.length?53:54),hD(4),ey(lC(58,53,`settings.version`)),hD(5),ey(lC(63,55,`skills.notExposed`)),hD(4),ey(lC(67,57,`skills.prerequisites`)),hD(5),ey(lC(72,59,`skills.notExposed`)),hD(4),ey(lC(76,61,`skills.fileValidation`)),hD(5),ey(lC(81,63,`skills.notExposed`)),hD(4),ey(lC(85,65,`skills.deps`)),hD(5),ey(lC(90,67,`skills.notExposed`)),hD(4),ey(lC(94,69,`skills.actions`)),hD(5),ey(lC(99,71,`skills.actionsUnverified`)),hD(4),ey(lC(103,73,`skills.evidence`)),hD(5),hS(a.source?107:-1)}}function Me(e,i){if(e&1&&(da(0,`a`,39),qS(1),vd(),qS(2)),e&2){let t=i.$implicit,a=i.$index,p=i.$count;qm(`routerLink`,nC(4,le))(`fragment`,`host-`+t),hD(),ey(t),hD(),bd(``,a===p-1?``:`, `,` `)}}function Oe(e,i){if(e&1&&mS(0,Me,3,5,null,null,gS),e&2){let t=SS().$implicit;yS(t.hosts)}}function we(e,i){e&1&&Sa(0,`ui-state-badge`,33)}function Ne(e,i){if(e&1){let t=DS();da(0,`tr`)(1,`td`)(2,`strong`),qS(3),vd(),da(4,`code`,38),qS(5),vd(),da(6,`p`,19),qS(7),vd()(),da(8,`td`),qS(9),vd(),da(10,`td`),Sa(11,`ui-state-badge`,21),vd(),da(12,`td`),dS(13,Oe,2,0)(14,we,1,0,`ui-state-badge`,33),vd(),da(15,`td`)(16,`button`,31),aC(17,`t`),Ma(`click`,function(){let p=Hh(t).$implicit,m=SS(2);return Vh(m.selected.set(p))}),Sa(18,`ui-icon`,30),vd()()()}if(e&2){let t=i.$implicit,a=SS(2);Ar(`data-dup`,a.dupIds().has(t.id)||null),hD(3),ey(t.name||t.id),hD(2),ey(t.id),hD(2),ey(t.description),hD(2),ey(t.domain??`—`),hD(2),qm(`state`,a.mapState(t.state))(`labelOverride`,t.state),hD(2),hS(t.hosts.length?13:14),hD(3),Ar(`aria-label`,lC(17,10,`state.viewDetails`)),hD(2),qm(`size`,15)}}function Be(e,i){e&1&&(da(0,`tr`)(1,`td`,40),Sa(2,`ui-empty`,5),aC(3,`t`),vd()()),e&2&&(hD(2),qm(`title`,lC(3,1,`skills.empty`)))}function Fe(e,i){if(e&1&&dS(0,Be,4,3,`tr`),e&2){let t=SS(2);hS(t.loading()?-1:0)}}function $e(e,i){if(e&1){let t=DS();da(0,`ui-filter-bar`,8),oy(`queryChange`,function(p){Hh(t);let m=SS();return YS(m.query,p)||(m.query=p),Vh(p)}),da(1,`button`,9),Ma(`click`,function(){Hh(t);let p=SS();return Vh(p.domain.set(null))}),qS(2),aC(3,`t`),vd(),mS(4,ve,2,3,`button`,10,gS),vd(),dS(6,Ce,12,7,`section`,11),dS(7,De,108,78,`section`,12),da(8,`div`,13)(9,`table`,14)(10,`thead`)(11,`tr`)(12,`th`,15),qS(13),aC(14,`t`),vd(),da(15,`th`,15),qS(16),aC(17,`t`),vd(),da(18,`th`,15),qS(19),aC(20,`t`),vd(),da(21,`th`,15),qS(22),aC(23,`t`),vd(),da(24,`th`,15)(25,`span`,16),qS(26),aC(27,`t`),vd()()()(),da(28,`tbody`),mS(29,Ne,19,12,`tr`,null,oe,!1,Fe,1,1),vd()()()}if(e&2){let t,a=SS();ry(`query`,a.query),hD(),Ar(`data-tone`,a.domain()===null?`accent`:null)(`aria-pressed`,a.domain()===null),hD(),bd(` `,lC(3,12,`state.all`),` `),hD(2),yS(a.domainOptions()),hD(2),hS(a.findings().length?6:-1),hD(),hS((t=a.selected())?7:-1,t),hD(6),ey(lC(14,14,`table.id`)),hD(3),ey(lC(17,16,`skills.domain`)),hD(3),ey(lC(20,18,`skills.state`)),hD(3),ey(lC(23,20,`skills.hosts`)),hD(4),ey(lC(27,22,`state.viewDetails`)),hD(3),yS(a.filtered())}}function ze(e,i){e&1&&(Sa(0,`ui-empty`,5),aC(1,`t`)),e&2&&qm(`title`,lC(1,1,`skills.none`))}var ae=e=>e.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().trim();var re=class e{api=p(g);store=p(g$1);prefs=p(rE);q=rn(``);skills=k([]);error=k(null);query=k(``);domain=k(null);selected=k(null);loading=k(!0);domainOptions=tn(()=>{let i=new Set;for(let t of this.skills())t.domain&&i.add(t.domain);return[...i].sort()});filtered=tn(()=>{let i=ae(this.query()),t=this.domain();return this.skills().filter(a=>t!==null&&a.domain!==t?!1:i?[a.id,a.name,a.domain??``,a.description,...a.hosts].map(ae).join(` `).includes(i):!0)});findings=tn(()=>ne(this.skills().map(i=>({id:i.id,name:i.name||i.id,origin:this.store.descriptor()?.forge_id??null,version:null,description:i.description}))));dupIds=tn(()=>{let i=new Set;for(let t of this.findings())for(let a of t.entries)i.add(a.id);return i});constructor(){Oo(()=>this.prefs.setFilter(`skills`,this.query())),this.load()}ngOnInit(){let i=this.q();if(i)this.query.set(i);else{let t=this.prefs.filterFor(`skills`);t&&this.query.set(t)}}async load(){this.error.set(null),this.loading.set(!0);try{this.skills.set(await hE(this.api.skills()))}catch(i){this.error.set(i instanceof n?i:new n(0))}finally{this.loading.set(!1)}}toggleDomain(i){this.domain.set(this.domain()===i?null:i)}pick(i){let t=this.skills().find(a=>a.id===i);t&&this.selected.set(t)}mapState(i){return[`invoked`,`available`,`installed`,`registered`].includes(i)?`supported`:i===`unverified`?`unverified`:`not_applicable`}static ɵfac=function(t){return new(t||e)};static ɵcmp=ei({type:e,selectors:[[`page-skills`]],inputs:{q:[1,`q`]},decls:11,vars:13,consts:[[`hintId`,`skill`,3,`title`,`subtitle`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[3,`error`],[`role`,`status`],[`icon`,`skills`,3,`title`],[3,`retry`,`error`],[`kind`,`card`,3,`lines`],[`placeholder`,`skills.search`,3,`queryChange`,`query`],[`type`,`button`,1,`fg-pill`,3,`click`],[`type`,`button`,1,`fg-pill`],[`data-section`,`dedup`,1,`card`,`dedup`],[`data-section`,`skill-detail`,`aria-live`,`polite`,1,`card`,`detail`,`fg-enter`],[1,`card`,`card--table`],[1,`table`],[`scope`,`col`],[1,`sr-only`],[1,`dedup__head`],[`name`,`diff`,3,`size`],[1,`muted`],[1,`dedup__list`],[3,`state`,`labelOverride`],[1,`dedup__names`],[`type`,`button`,1,`chip-link`],[1,`dedup__reasons`],[`type`,`button`,1,`chip-link`,3,`click`],[1,`detail__head`],[`name`,`skills`,3,`size`],[1,`detail__actions`],[`data-action`,`declaring-agents`,1,`btn`,`btn--mini`,3,`routerLink`,`queryParams`],[`name`,`chevron-right`,3,`size`],[1,`icon-btn`,3,`click`],[1,`kv`],[`state`,`UNVERIFIED`],[1,`links`],[1,`unv-cell`],[1,`chip`],[1,`chip-link`,3,`routerLink`,`fragment`],[1,`slug`],[1,`linklike`,3,`routerLink`,`fragment`],[`colspan`,`5`]],template:function(t,a){if(t&1&&(da(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),da(3,`button`,1),Ma(`click`,function(){return a.load()}),Sa(4,`ui-icon`,2),qS(5),aC(6,`t`),vd()(),dS(7,fe,1,1,`ui-error`,3),dS(8,ye,3,4,`div`,4),dS(9,$e,32,24)(10,ze,2,3,`ui-empty`,5)),t&2){let p;qm(`title`,lC(1,7,`skills.title`))(`subtitle`,lC(2,9,`skills.subtitle`)),hD(4),qm(`size`,15),hD(),bd(` `,lC(6,11,`state.refresh`),` `),hD(2),hS((p=a.error())?7:-1,p),hD(),hS(a.loading()?8:-1),hD(),hS(a.skills().length?9:!a.error()&&!a.loading()?10:-1)}},dependencies:[vc,T,I,_,D,cE,k$1,h,aE],styles:[`.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);margin:4px 0 0;font-size:var(--%NS%font-sm)}.slug[_ngcontent-%COMP%]{display:block;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.card--table[_ngcontent-%COMP%]{padding:var(--%NS%space-3);overflow-x:auto}.card--table[_ngcontent-%COMP%] .table[_ngcontent-%COMP%]{min-width:560px}tr[data-dup][_ngcontent-%COMP%] td[_ngcontent-%COMP%]:first-child{border-left:3px solid var(--%NS%warn)}.dedup[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);border-left:3px solid var(--%NS%warn)}.dedup__head[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3);flex-wrap:wrap;margin-bottom:var(--%NS%space-2)}.dedup__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.dedup__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%warn)}.dedup__list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:var(--%NS%space-3)}.dedup__list[_ngcontent-%COMP%] > li[_ngcontent-%COMP%]{display:grid;gap:4px}.dedup__names[_ngcontent-%COMP%]{display:inline-flex;flex-wrap:wrap;gap:4px}.dedup__reasons[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);display:grid;gap:2px}.detail[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);border-left:3px solid var(--%NS%accent)}.detail__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.detail__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.detail__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.detail__actions[_ngcontent-%COMP%], .links[_ngcontent-%COMP%]{display:inline-flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-2)}.detail__actions[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{text-decoration:none}.kv[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin:0}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{min-width:9rem;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm);flex:none}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;min-width:0}.unv-cell[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}.chip[_ngcontent-%COMP%]{margin-left:4px}`]})};export{re as SkillsPage}; \ No newline at end of file diff --git a/portal/assets/chunk-DQFb71Td.js b/portal/assets/chunk-DQFb71Td.js new file mode 100644 index 0000000..5c306f2 --- /dev/null +++ b/portal/assets/chunk-DQFb71Td.js @@ -0,0 +1 @@ +import{i as m$1,r as l}from"./chunk-BYYLUO5t.js";import{$t as ye$1,Bt as tn,C as Mt,D as Oo,Et as p$1,Gt as v,H as Xm,It as si,K as _e$1,Lt as tC,N as Rt,S as Ma,U as Xo,V as Xb,X as ae,Yt as ve$1,Zt as xr,a as Bm,bt as mo,c as Da,d as F$1,gt as k,ht as jn,i as Ar,l as De$1,mt as ii,nt as ds,q as _r,r as AE,rt as ee,t as $$1,tt as dg,zt as te}from"./chunk-BefGrJ9d.js";var Ce=(()=>{class n{_renderer;_elementRef;onChange=t=>{};onTouched=()=>{};constructor(t,r){this._renderer=t,this._elementRef=r}setProperty(t,r){this._renderer.setProperty(this._elementRef.nativeElement,t,r)}registerOnTouched(t){this.onTouched=t}registerOnChange(t){this.onChange=t}setDisabledState(t){this.setProperty(`disabled`,t)}static ɵfac=function(r){return new(r||n)(De$1(jn),De$1(Mt))};static ɵdir=xr({type:n})}return n})();var Le=(()=>{class n extends Ce{static ɵfac=(()=>{let t;return function(i){return(t||(t=dg(n)))(i||n)}})();static ɵdir=xr({type:n,features:[Bm]})}return n})();var Ve=new v(``);var Be={provide:Ve,useExisting:ds(()=>De),multi:!0};function Ue(){let n=Rt()?Rt().getUserAgent():``;return/android (\d+)/.test(n.toLowerCase())}var He=new v(``);var De=(()=>{class n extends Ce{_compositionMode;_composing=!1;constructor(t,r,i){super(t,r),this._compositionMode=i,this._compositionMode??=!Ue()}writeValue(t){let r=t??``;this.setProperty(`value`,r)}_handleInput(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}_compositionStart(){this._composing=!0}_compositionEnd(t){this._composing=!1,this._compositionMode&&this.onChange(t)}static ɵfac=function(r){return new(r||n)(De$1(jn),De$1(Mt),De$1(He,8))};static ɵdir=xr({type:n,selectors:[[`input`,`formControlName`,``,3,`type`,`checkbox`,3,`ngNoCva`,``],[`textarea`,`formControlName`,``,3,`ngNoCva`,``],[`input`,`formControl`,``,3,`type`,`checkbox`,3,`ngNoCva`,``],[`textarea`,`formControl`,``,3,`ngNoCva`,``],[`input`,`ngModel`,``,3,`type`,`checkbox`,3,`ngNoCva`,``],[`textarea`,`ngModel`,``,3,`ngNoCva`,``],[``,`ngDefaultControl`,``]],hostBindings:function(r,i){r&1&&Ma(`input`,function(l){return i._handleInput(l.target.value)})(`blur`,function(){return i.onTouched()})(`compositionstart`,function(){return i._compositionStart()})(`compositionend`,function(l){return i._compositionEnd(l.target.value)})},standalone:!1,features:[tC([Be]),Bm]})}return n})();function X(n){return n==null||Z(n)===0}function Z(n){return n==null?null:Array.isArray(n)||typeof n==`string`?n.length:n instanceof Set?n.size:null}var Ae=new v(``);var $e=new v(``);var qe=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;var H=class{static min(e){return We(e)}static max(e){return ze(e)}static required(e){return be(e)}static requiredTrue(e){return Ye(e)}static email(e){return Xe(e)}static minLength(e){return Ze(e)}static maxLength(e){return Ke(e)}static pattern(e){return Qe(e)}static nullValidator(e){return O()}static compose(e){return Fe(e)}static composeAsync(e){return we(e)}};function We(n){return e=>{if(e.value==null||n==null)return null;let t=parseFloat(e.value);return!isNaN(t)&&t{if(e.value==null||n==null)return null;let t=parseFloat(e.value);return!isNaN(t)&&t>n?{max:{max:n,actual:e.value}}:null}}function be(n){return X(n.value)?{required:!0}:null}function Ye(n){return n.value===!0?null:{required:!0}}function Xe(n){return X(n.value)||qe.test(n.value)?null:{email:!0}}function Ze(n){return e=>{let t=e.value?.length??Z(e.value);return t===null||t===0?null:t{let t=e.value?.length??Z(e.value);return t!==null&&t>n?{maxlength:{requiredLength:n,actualLength:t}}:null}}function Qe(n){if(!n)return O;let e,t;return typeof n==`string`?(t=``,n.charAt(0)!==`^`&&(t+=`^`),t+=n,n.charAt(n.length-1)!==`$`&&(t+=`$`),e=new RegExp(t)):(t=n.toString(),e=n),r=>{if(X(r.value))return null;let i=r.value;return e.test(i)?null:{pattern:{requiredPattern:t,actualValue:i}}}}function O(n){return null}function Me(n){return n!=null}function Ee(n){return Xo(n)?te(n):n}function Ne(n){let e={};return n.forEach(t=>{e=t!=null?l(l({},e),t):e}),Object.keys(e).length===0?null:e}function Ie(n,e){return e.map(t=>t(n))}function Je(n){return!n.validate}function Se(n){return n.map(e=>Je(e)?e:t=>e.validate(t))}function Fe(n){if(!n)return null;let e=n.filter(Me);return e.length==0?null:function(t){return Ne(Ie(t,e))}}function Oe(n){return n!=null?Fe(Se(n)):null}function we(n){if(!n)return null;let e=n.filter(Me);return e.length==0?null:function(t){let r=Ie(t,e).map(Ee);return AE(r).pipe($$1(Ne))}}function Re(n){return n!=null?we(Se(n)):null}function he(n,e){return n===null?[e]:Array.isArray(n)?[...n,e]:[n,e]}function et(n){return n._rawValidators}function tt(n){return n._rawAsyncValidators}function $(n){return n?Array.isArray(n)?n:[n]:[]}function w(n,e){return Array.isArray(n)?n.includes(e):n===e}function pe(n,e){let t=$(e);return $(n).forEach(i=>{w(t,i)||t.push(i)}),t}function fe(n,e){return $(e).filter(t=>!w(n,t))}var R=class{get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators=[];_rawAsyncValidators=[];_setValidators(e){this._rawValidators=e||[],this._composedValidatorFn=Oe(this._rawValidators)}_setAsyncValidators(e){this._rawAsyncValidators=e||[],this._composedAsyncValidatorFn=Re(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_onDestroyCallbacks=[];_registerOnDestroy(e){this._onDestroyCallbacks.push(e)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(e=>e()),this._onDestroyCallbacks=[]}reset(e=void 0){this.control?.reset(e)}hasError(e,t){return this.control?this.control.hasError(e,t):!1}getError(e,t){return this.control?this.control.getError(e,t):null}};var q=class extends R{name;get formDirective(){return null}get path(){return null}};var C=`VALID`;var F=`INVALID`;var g=`PENDING`;var V=`DISABLED`;var p=class{};var x=class extends p{value;source;constructor(e,t){super(),this.value=e,this.source=t}};var D=class extends p{pristine;source;constructor(e,t){super(),this.pristine=e,this.source=t}};var A=class extends p{touched;source;constructor(e,t){super(),this.touched=e,this.source=t}};var m=class extends p{status;source;constructor(e,t){super(),this.status=e,this.source=t}};var b=class extends p{source;constructor(e){super(),this.source=e}};function nt(n){return(T(n)?n.validators:n)||null}function rt(n){return Array.isArray(n)?Oe(n):n||null}function it(n,e){return(T(e)?e.asyncValidators:n)||null}function ot(n){return Array.isArray(n)?Re(n):n||null}function T(n){return n!=null&&!Array.isArray(n)&&typeof n==`object`}var W=class{_pendingDirty=!1;_hasOwnPendingAsyncValidator=null;_pendingTouched=!1;_onCollectionChange=()=>{};_updateOn;_hasRequired=k(!1);_parent=null;_asyncValidationSubscription;_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators;_rawAsyncValidators;value;constructor(e,t){this._assignValidators(e),this._assignAsyncValidators(t)}get validator(){return this._composedValidatorFn}set validator(e){this._rawValidators=this._composedValidatorFn=e,this._updateHasRequiredValidator()}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(e){this._rawAsyncValidators=this._composedAsyncValidatorFn=e}get parent(){return this._parent}get status(){return F$1(this.statusReactive)}set status(e){F$1(()=>this.statusReactive.set(e))}_status=tn(()=>this.statusReactive());statusReactive=k(void 0);get valid(){return this.status===C}get invalid(){return this.status===F}get pending(){return this.status===g}get disabled(){return this.status===V}get enabled(){return this.status!==V}errors;get pristine(){return F$1(this.pristineReactive)}set pristine(e){F$1(()=>this.pristineReactive.set(e))}_pristine=tn(()=>this.pristineReactive());pristineReactive=k(!0);get dirty(){return!this.pristine}get touched(){return F$1(this.touchedReactive)}set touched(e){F$1(()=>this.touchedReactive.set(e))}_touched=tn(()=>this.touchedReactive());touchedReactive=k(!1);get untouched(){return!this.touched}_events=new ee;events=this._events.asObservable();valueChanges;statusChanges;get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:`change`}setValidators(e){this._assignValidators(e)}setAsyncValidators(e){this._assignAsyncValidators(e)}addValidators(e){this.setValidators(pe(e,this._rawValidators))}addAsyncValidators(e){this.setAsyncValidators(pe(e,this._rawAsyncValidators))}removeValidators(e){this.setValidators(fe(e,this._rawValidators))}removeAsyncValidators(e){this.setAsyncValidators(fe(e,this._rawAsyncValidators))}hasValidator(e){return w(this._rawValidators,e)}hasAsyncValidator(e){return w(this._rawAsyncValidators,e)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(e={}){let t=this.touched===!1;this.touched=!0;let r=e.sourceControl??this;e.onlySelf||this._parent?.markAsTouched(m$1(l({},e),{sourceControl:r})),t&&e.emitEvent!==!1&&this._events.next(new A(!0,r))}markAllAsDirty(e={}){this.markAsDirty({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsDirty(e))}markAllAsTouched(e={}){this.markAsTouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsTouched(e))}markAsUntouched(e={}){let t=this.touched===!0;this.touched=!1,this._pendingTouched=!1;let r=e.sourceControl??this;this._forEachChild(i=>{i.markAsUntouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:r})}),e.onlySelf||this._parent?._updateTouched(e,r),t&&e.emitEvent!==!1&&this._events.next(new A(!1,r))}markAsDirty(e={}){let t=this.pristine===!0;this.pristine=!1;let r=e.sourceControl??this;e.onlySelf||this._parent?.markAsDirty(m$1(l({},e),{sourceControl:r})),t&&e.emitEvent!==!1&&this._events.next(new D(!1,r))}markAsPristine(e={}){let t=this.pristine===!1;this.pristine=!0,this._pendingDirty=!1;let r=e.sourceControl??this;this._forEachChild(i=>{i.markAsPristine({onlySelf:!0,emitEvent:e.emitEvent})}),e.onlySelf||this._parent?._updatePristine(e,r),t&&e.emitEvent!==!1&&this._events.next(new D(!0,r))}markAsPending(e={}){this.status=g;let t=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new m(this.status,t)),this.statusChanges.emit(this.status)),e.onlySelf||this._parent?.markAsPending(m$1(l({},e),{sourceControl:t}))}disable(e={}){let t=this._parentMarkedDirty(e.onlySelf);this.status=V,this.errors=null,this._forEachChild(i=>{i.disable(m$1(l({},e),{onlySelf:!0}))}),this._updateValue();let r=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new x(this.value,r)),this._events.next(new m(this.status,r)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(m$1(l({},e),{skipPristineCheck:t}),this),this._onDisabledChange.forEach(i=>i(!0))}enable(e={}){let t=this._parentMarkedDirty(e.onlySelf);this.status=C,this._forEachChild(r=>{r.enable(m$1(l({},e),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent}),this._updateAncestors(m$1(l({},e),{skipPristineCheck:t}),this),this._onDisabledChange.forEach(r=>r(!1))}_updateAncestors(e,t){e.onlySelf||(this._parent?.updateValueAndValidity(e),e.skipPristineCheck||this._parent?._updatePristine({},t),this._parent?._updateTouched({},t))}setParent(e){this._parent=e}getRawValue(){return this.value}updateValueAndValidity(e={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){let r=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===C||this.status===g)&&this._runAsyncValidator(r,e.emitEvent)}let t=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new x(this.value,t)),this._events.next(new m(this.status,t)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),e.onlySelf||this._parent?.updateValueAndValidity(m$1(l({},e),{sourceControl:t}))}_updateTreeValidity(e={emitEvent:!0}){this._forEachChild(t=>t._updateTreeValidity(e)),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?V:C}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(e,t){if(this.asyncValidator){this.status=g,this._hasOwnPendingAsyncValidator={emitEvent:t!==!1,shouldHaveEmitted:e!==!1};let r=Ee(this.asyncValidator(this));this._asyncValidationSubscription=r.subscribe(i=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(i,{emitEvent:t,shouldHaveEmitted:e})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();let e=(this._hasOwnPendingAsyncValidator?.emitEvent||this._hasOwnPendingAsyncValidator?.shouldHaveEmitted)??!1;return this._hasOwnPendingAsyncValidator=null,e}return!1}setErrors(e,t={}){this.errors=e,this._updateControlsErrors(t.emitEvent!==!1,this,t.shouldHaveEmitted)}get(e){let t=e;return t==null||(Array.isArray(t)||(t=t.split(`.`)),t.length===0)?null:t.reduce((r,i)=>r&&r._find(i),this)}getError(e,t){let r=t?this.get(t):this;return r?.errors?r.errors[e]:null}hasError(e,t){return!!this.getError(e,t)}get root(){let e=this;for(;e._parent;)e=e._parent;return e}_updateControlsErrors(e,t,r){this.status=this._calculateStatus(),e&&this.statusChanges.emit(this.status),(e||r)&&this._events.next(new m(this.status,t)),this._parent&&this._parent._updateControlsErrors(e,t,r)}_initObservables(){this.valueChanges=new ye$1,this.statusChanges=new ye$1}_calculateStatus(){return this._allControlsDisabled()?V:this.errors?F:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(g)?g:this._anyControlsHaveStatus(F)?F:C}_anyControlsHaveStatus(e){return this._anyControls(t=>t.status===e)}_anyControlsDirty(){return this._anyControls(e=>e.dirty)}_anyControlsTouched(){return this._anyControls(e=>e.touched)}_updatePristine(e,t){let r=!this._anyControlsDirty(),i=this.pristine!==r;this.pristine=r,e.onlySelf||this._parent?._updatePristine(e,t),i&&this._events.next(new D(this.pristine,t))}_updateTouched(e={},t){this.touched=this._anyControlsTouched(),this._events.next(new A(this.touched,t)),e.onlySelf||this._parent?._updateTouched(e,t)}_onDisabledChange=[];_registerOnCollectionChange(e){this._onCollectionChange=e}_setUpdateStrategy(e){T(e)&&e.updateOn!=null&&(this._updateOn=e.updateOn)}_parentMarkedDirty(e){return!e&&!!this._parent?.dirty&&!this._parent._anyControlsDirty()}_find(e){return null}_assignValidators(e){this._rawValidators=Array.isArray(e)?e.slice():e,this._composedValidatorFn=rt(this._rawValidators),this._updateHasRequiredValidator()}_assignAsyncValidators(e){this._rawAsyncValidators=Array.isArray(e)?e.slice():e,this._composedAsyncValidatorFn=ot(this._rawAsyncValidators)}_updateHasRequiredValidator(){F$1(()=>this._hasRequired.set(this.hasValidator(H.required)))}};function st(n){return n.tagName===`INPUT`||n.tagName===`SELECT`||n.tagName===`TEXTAREA`}function at(n,e,t,r){switch(t){case`name`:n.setAttribute(e,t,r);break;case`disabled`:case`readonly`:case`required`:r?n.setAttribute(e,t,``):n.removeAttribute(e,t);break;case`max`:case`min`:case`minLength`:case`maxLength`:r!==void 0?n.setAttribute(e,t,r.toString()):n.removeAttribute(e,t)}}var z=class{kind;context;control;message;constructor({kind:e,context:t,control:r}){this.kind=e,this.context=t,this.control=r}};var lt=(()=>{class n{_validator=O;_onChange;_enabled;ngOnChanges(t){if(this.inputName in t){let r=this.normalizeInput(t[this.inputName].currentValue);this._enabled=this.enabled(r),this._validator=this._enabled?this.createValidator(r):O,this._onChange?.()}}validate(t){return this._validator(t)}registerOnValidatorChange(t){this._onChange=t}enabled(t){return t!=null}static ɵfac=function(r){return new(r||n)};static ɵdir=xr({type:n,features:[_r]})}return n})();var ut={provide:Ae,useExisting:ds(()=>xe),multi:!0};var xe=(()=>{class n extends lt{required;inputName=`required`;normalizeInput=si;createValidator=t=>be;enabled(t){return t}static ɵfac=(()=>{let t;return function(i){return(t||(t=dg(n)))(i||n)}})();static ɵdir=xr({type:n,selectors:[[``,`required`,``,`formControlName`,``,3,`type`,`checkbox`],[``,`required`,``,`formControl`,``,3,`type`,`checkbox`],[``,`required`,``,`ngModel`,``,3,`type`,`checkbox`]],hostVars:1,hostBindings:function(r,i){r&2&&Ar(`required`,i._enabled?``:null)},inputs:{required:`required`},standalone:!1,features:[tC([ut]),Bm]})}return n})();var dt=new v(``);var Te=new v(``,{factory:()=>K});var K=`always`;function ct(n,e){return[...e.path,n]}function ge(n,e,t=K){pt(n,e),e.valueAccessor.writeValue(n.value),(n.disabled||t===`always`)&&e.valueAccessor.setDisabledState?.(n.disabled),ft(n,e),mt(n,e),gt(n,e),ht(n,e)}function me(n,e){n.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(e)})}function ht(n,e){if(e.valueAccessor.setDisabledState){let t=r=>{e.valueAccessor.setDisabledState(r)};n.registerOnDisabledChange(t),e._registerOnDestroy(()=>{n._unregisterOnDisabledChange(t)})}}function pt(n,e){let t=et(n);e.validator!==null?n.setValidators(he(t,e.validator)):typeof t==`function`&&n.setValidators([t]);let r=tt(n);e.asyncValidator!==null?n.setAsyncValidators(he(r,e.asyncValidator)):typeof r==`function`&&n.setAsyncValidators([r]);let i=()=>n.updateValueAndValidity();me(e._rawValidators,i),me(e._rawAsyncValidators,i)}function ft(n,e){e.valueAccessor.registerOnChange(t=>{n._pendingValue=t,n._pendingChange=!0,n._pendingDirty=!0,n.updateOn===`change`&&Pe(n,e)})}function gt(n,e){e.valueAccessor.registerOnTouched(()=>{n._pendingTouched=!0,n.updateOn===`blur`&&n._pendingChange&&Pe(n,e),n.updateOn!==`submit`&&n.markAsTouched()})}function Pe(n,e){n._pendingDirty&&n.markAsDirty(),n.setValue(n._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(n._pendingValue),n._pendingChange=!1}function mt(n,e){let t=(r,i)=>{e.valueAccessor.writeValue(r),i&&e.viewToModelUpdate(r)};n.registerOnChange(t),e._registerOnDestroy(()=>{n._unregisterOnChange(t)})}function yt(n,e){if(!Object.hasOwn(n,`model`))return!1;let t=n.model;return t.isFirstChange()?!0:!Object.is(e,t.currentValue)}function vt(n){return Object.getPrototypeOf(n.constructor)===Le}function _t(n,e){if(!e)return null;let t,r,i;return e.forEach(o=>{o.constructor===De?t=o:vt(o)?r=o:i=o}),i||r||t||null}var Ct={provide:dt,useFactory:()=>{let n=p$1(y,{self:!0});return{setParseErrors:e=>{n.setParseErrorSource(e)},set onReset(e){n.onReset=e}}}};var y=class extends R{_parent=null;name=null;valueAccessor=null;isCustomControlBased=!1;userOnReset;resetSubscription;set onReset(e){this.userOnReset=e,this.resetSubscription?.unsubscribe(),this.resetSubscription=void 0,this.control&&(this.resetSubscription=this.control.events.subscribe(t=>{t instanceof b&&this.control&&this.userOnReset?.(this.control.value)}),this.subscription?.add(this.resetSubscription))}isNativeFormElement=!1;rawValueAccessors;_selectedValueAccessor=null;get selectedValueAccessor(){return this._selectedValueAccessor??=_t(this,this.rawValueAccessors)}parseErrorsValidator=null;renderer;injector;requiredValidatorViaDi;subscription;customControlBindings=null;constructor(e,t,r){super(),this.injector=e,this.renderer=t,this.rawValueAccessors=r,this.injector?.get(ve$1)?.onDestroy(()=>{this.removeParseErrorsValidator(this.control),this.subscription?.unsubscribe()})}setupCustomControl(){this.subscription?.unsubscribe();let e=this.injector?.get(ii);if(!this.control||!e)return;let t=e.markForCheck.bind(e);this.subscription=new ae,this.subscription.add(this.control.valueChanges.subscribe(t)),this.subscription.add(this.control.statusChanges.subscribe(t)),this.resetSubscription?.unsubscribe(),this.resetSubscription=void 0,this.userOnReset&&(this.resetSubscription=this.control.events.subscribe(r=>{r instanceof b&&this.control&&this.userOnReset?.(this.control.value)}),this.subscription.add(this.resetSubscription)),this.parseErrorsValidator&&this.control.addValidators(this.parseErrorsValidator)}ngControlCreate(e){!e.nativeElement.hasAttribute?.(`ngNoCva`)&&(this.rawValueAccessors&&this.rawValueAccessors.length>0||this.valueAccessor!==null)||!e.customControl||(this.isCustomControlBased=!0,e.listenToCustomControlModel(i=>{this.control?.markAsDirty(),this.control?.setValue(i,{emitModelToViewChange:!1}),this.viewToModelUpdate(i)}),e.listenToCustomControlOutput(`touch`,()=>{this.control?.markAsTouched()}),this.customControlBindings={},this.isNativeFormElement=st(e.nativeElement),this.requiredValidatorViaDi=this._rawValidators.find(i=>i instanceof xe))}ngControlUpdate(e,t){if(!this.isCustomControlBased)return;let r=this.control,i=this.customControlBindings;Object.is(i.value,r.value)||(i.value=r.value,e.setCustomControlModelInput(r.value)),this.bindControlProperty(e,i,`touched`,r.touched),this.bindControlProperty(e,i,`dirty`,r.dirty),this.bindControlProperty(e,i,`valid`,r.valid),this.bindControlProperty(e,i,`invalid`,r.invalid),this.bindControlProperty(e,i,`pending`,r.pending),this.bindControlProperty(e,i,`disabled`,r.disabled),this.shouldBindRequired&&this.bindControlProperty(e,i,`required`,this.isRequired);let o=r.errors;if(i.errors!==o){i.errors=o;let l=this._convertErrors(o);e.setInputOnDirectives(`errors`,l)}}get isRequired(){return(this.requiredValidatorViaDi?._enabled||this.control?._hasRequired())??!1}get shouldBindRequired(){return!0}bindControlProperty(e,t,r,i){if(t[r]===i)return;t[r]=i;let o=e.setInputOnDirectives(r,i);this.isNativeFormElement&&!o&&(r===`disabled`||r===`required`)&&this.renderer&&at(this.renderer,e.nativeElement,r,i)}_convertErrors(e){if(e===null)return[];let t=this.control;return Object.entries(e).map(([r,i])=>new z({context:i,kind:r,control:t}))}setParseErrorSource(e){if(e===void 0)return;let t=null,r=tn(()=>{let i=e();return i.length===0?null:i.reduce((o,l)=>(o[l.kind]=l,o),{})});this.parseErrorsValidator=(()=>t).bind(this),Oo(()=>{t=r(),this.control?.updateValueAndValidity({emitEvent:!1})},{injector:this.injector})}removeParseErrorsValidator(e){this.parseErrorsValidator&&(e?.removeValidators(this.parseErrorsValidator),e?.updateValueAndValidity({emitEvent:!1}))}};var Y=class{_cd;constructor(e){this._cd=e}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}};var Yt=(()=>{class n extends Y{constructor(t){super(t)}static ɵfac=function(r){return new(r||n)(De$1(y,2))};static ɵdir=xr({type:n,selectors:[[``,`formControlName`,``],[``,`ngModel`,``],[``,`formControl`,``]],hostVars:14,hostBindings:function(r,i){r&2&&Xm(`ng-untouched`,i.isUntouched)(`ng-touched`,i.isTouched)(`ng-pristine`,i.isPristine)(`ng-dirty`,i.isDirty)(`ng-valid`,i.isValid)(`ng-invalid`,i.isInvalid)(`ng-pending`,i.isPending)},standalone:!1,features:[Bm]})}return n})();function ye(n,e){let t=n.indexOf(e);t>-1&&n.splice(t,1)}function ve(n){return typeof n==`object`&&n!==null&&Object.keys(n).length===2&&`value`in n&&`disabled`in n}var Vt=class extends W{defaultValue=null;_onChange=[];_pendingValue;_pendingChange=!1;constructor(e=null,t,r){super(nt(t),it(r,t)),this._applyFormState(e),this._setUpdateStrategy(t),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),T(t)&&(t.nonNullable||t.initialValueIsDefault)&&(ve(e)?this.defaultValue=e.value:this.defaultValue=e)}setValue(e,t={}){F$1(()=>{this.value=this._pendingValue=e,this._onChange.length&&t.emitModelToViewChange!==!1&&this._onChange.forEach(r=>r(this.value,t.emitViewToModelChange!==!1)),this.updateValueAndValidity(t)})}patchValue(e,t={}){this.setValue(e,t)}reset(e=this.defaultValue,t={}){this._applyFormState(e),this.markAsPristine(t),this.markAsUntouched(t),this.setValue(this.value,t),t.overwriteDefaultValue&&(this.defaultValue=this.value),this._pendingChange=!1,t?.emitEvent!==!1&&this._events.next(new b(this))}_updateValue(){}_anyControls(e){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(e){this._onChange.push(e)}_unregisterOnChange(e){ye(this._onChange,e)}registerOnDisabledChange(e){this._onDisabledChange.push(e)}_unregisterOnDisabledChange(e){ye(this._onDisabledChange,e)}_forEachChild(e){}_syncPendingControls(){return this.updateOn===`submit`&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(e){ve(e)?(this.value=this._pendingValue=e.value,e.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=e}};var Dt={provide:y,useExisting:ds(()=>At)};var _e=Promise.resolve();var At=(()=>{class n extends y{_changeDetectorRef;callSetDisabledState;control=new Vt;static ngAcceptInputType_isDisabled;_registered=!1;_ngModelInjector;viewModel;name=``;isDisabled;model;options;update=new ye$1;constructor(t,r,i,o,l,je,Ge,ke){super(Ge,ke,o),this._changeDetectorRef=l,this.callSetDisabledState=je,this._parent=t,this._setValidators(r),this._setAsyncValidators(i)}ngOnChanges(t){if(this._registered,this._checkForErrors(),!this._registered||`name`in t){if(this._registered&&(this._checkName(),this.formDirective)){let r=t.name.previousValue;this.formDirective.removeControl({name:r,path:this._getPath(r)})}this._setUpControl()}`isDisabled`in t&&this._updateDisabled(t),yt(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective?.removeControl(this)}ɵngControlCreate(t){super.ngControlCreate(t)}ɵngControlUpdate(t){super.ngControlUpdate(t,!1)}get shouldBindRequired(){return!1}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!!(this.options&&this.options.standalone)}_setUpStandalone(){this.isCustomControlBased?this.setupCustomControl():(this.valueAccessor??=this.selectedValueAccessor,ge(this.control,this,this.callSetDisabledState)),this.control.updateValueAndValidity({emitEvent:!1})}_setupWithForm(t){this.isCustomControlBased?this.setupCustomControl():(this.valueAccessor??=this.selectedValueAccessor,ge(this.control,this,t))}_checkForErrors(){this._checkName()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),!this._isStandalone()&&this.name}_updateValue(t){_e.then(()=>{this.control.setValue(t,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(t){let r=t.isDisabled.currentValue,i=r!==0&&si(r);_e.then(()=>{i&&!this.control.disabled?this.control.disable():!i&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(t){return this._parent?ct(t,this._parent):[t]}static ɵfac=function(r){return new(r||n)(De$1(q,9),De$1(Ae,10),De$1($e,10),De$1(Ve,10),De$1(ii,8),De$1(Te,8),De$1(_e$1,8),De$1(jn,8))};static ɵdir=xr({type:n,selectors:[[``,`ngModel`,``,3,`formControlName`,``,3,`formControl`,``]],inputs:{name:`name`,isDisabled:[0,`disabled`,`isDisabled`],model:[0,`ngModel`,`model`],options:[0,`ngModelOptions`,`options`]},outputs:{update:`ngModelChange`},exportAs:[`ngModel`],standalone:!1,features:[tC([Dt,Ct]),Bm,_r,Xb(null)]})}return n})();var bt=(()=>{class n{static ɵfac=function(r){return new(r||n)};static ɵmod=Da({type:n});static ɵinj=mo({})}return n})();var Zt=(()=>{class n{static withConfig(t){return{ngModule:n,providers:[{provide:Te,useValue:t.callSetDisabledState??K}]}}static ɵfac=function(r){return new(r||n)};static ɵmod=Da({type:n});static ɵinj=mo({imports:[bt]})}return n})();export{Zt as i,De as n,Yt as r,At as t}; \ No newline at end of file diff --git a/portal/assets/chunk-DQJAW8AL.js b/portal/assets/chunk-DQJAW8AL.js new file mode 100644 index 0000000..542c3a5 --- /dev/null +++ b/portal/assets/chunk-DQJAW8AL.js @@ -0,0 +1 @@ +import{A as PU,At as qm,Bt as tn,Et as p,F as Sa,Jt as vd,L as TS,Pt as rn,Q as cE,S as Ma,ct as hD,et as da,h as Ic,i as Ar,it as ei,x as MS}from"./chunk-BefGrJ9d.js";var C=[`*`];var h=class l{i18n=p(Ic);placeholder=rn(``);query=PU(``);label=tn(()=>{let e=this.placeholder();if(!e)return``;let t=this.i18n.t(e);return t.startsWith(`⟪`)?e:t});onQuery(e){this.query.set(e.target.value)}static ɵfac=function(t){return new(t||l)};static ɵcmp=ei({type:l,selectors:[[`ui-filter-bar`]],inputs:{placeholder:[1,`placeholder`],query:[1,`query`]},outputs:{query:`queryChange`},ngContentSelectors:C,decls:6,vars:4,consts:[[1,`fb`],[1,`fb__search`],[`name`,`search`,3,`size`],[`type`,`search`,1,`input`,`fb__input`,3,`input`,`value`,`placeholder`],[1,`fb__chips`]],template:function(t,n){t&1&&(TS(),da(0,`div`,0)(1,`div`,1),Sa(2,`ui-icon`,2),da(3,`input`,3),Ma(`input`,function(M){return n.onQuery(M)}),vd()(),da(4,`div`,4),MS(5),vd()()),t&2&&(hD(2),qm(`size`,15),hD(),qm(`value`,n.query())(`placeholder`,n.label()),Ar(`aria-label`,n.label()||null))},dependencies:[cE],styles:[`.fb[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-4)}.fb__search[_ngcontent-%COMP%]{position:relative;max-width:360px}.fb__search[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{position:absolute;left:10px;top:50%;translate:0 -50%;color:var(--%NS%fg-muted);pointer-events:none}.fb__input[_ngcontent-%COMP%]{padding-left:32px}.fb__chips[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2)}.fb__chips[_ngcontent-%COMP%]:empty{display:none}`]})};export{h as t}; \ No newline at end of file diff --git a/portal/assets/chunk-D2KAfPv6.js b/portal/assets/chunk-DQtX_-dj.js similarity index 83% rename from portal/assets/chunk-D2KAfPv6.js rename to portal/assets/chunk-DQtX_-dj.js index e09ee3b..63746f9 100644 --- a/portal/assets/chunk-D2KAfPv6.js +++ b/portal/assets/chunk-DQtX_-dj.js @@ -1 +1 @@ -import{At as rn,Dt as pS,Et as p,Lt as tn,O as Sa,P as WS,Ut as vd,X as bS,_ as Km,ct as gS,d as Ec,f as Ed,h as Jm,it as ei,o as Ar,ot as fS,ut as hD,yt as mS,zt as uS}from"./chunk-BelLryvf.js";var O={VERIFIED:`ok`,ACTIVE:`ok`,CONFIGURED:`ok`,INSTALLED:`info`,DEGRADED:`warn`,BLOCKED:`warn`,NOT_INSTALLED:`muted`,FAILED:`error`,INVOCATION_VERIFIED:`ok`,HANDSHAKE_VERIFIED:`ok`,TOOLS_DISCOVERED:`ok`,DETECTED:`info`,MCP_REGISTERED:`ok`,EXECUTION_VERIFIED:`ok`,NOT_DETECTED:`muted`,STARTING:`info`,NOT_CONFIGURED:`muted`,supported:`ok`,unverified:`unv`,unsupported:`error`,not_applicable:`muted`,PASS:`ok`,FAIL:`error`,UNVERIFIED:`unv`,NOT_APPLICABLE:`muted`,READY:`ok`,PARTIAL:`warn`,MISSING:`muted`,INVALID:`error`,UNSET:`muted`,ok:`ok`,warn:`warn`,error:`error`,info:`info`,muted:`muted`};var h={VERIFIED:`installState.`,ACTIVE:`installState.`,CONFIGURED:`installState.`,INSTALLED:`installState.`,DEGRADED:`installState.`,BLOCKED:`installState.`,NOT_INSTALLED:`installState.`,FAILED:`installState.`,INVOCATION_VERIFIED:`mcpState.`,HANDSHAKE_VERIFIED:`mcpState.`,TOOLS_DISCOVERED:`mcpState.`,STARTING:`mcpState.`,NOT_CONFIGURED:`mcpState.`,DETECTED:`hostState.`,MCP_REGISTERED:`hostState.`,EXECUTION_VERIFIED:`hostState.`,NOT_DETECTED:`hostState.`,supported:`state.supported`,unverified:`state.unverified`,unsupported:`state.unsupported`,not_applicable:`state.notApplicable`,READY:`environmentState.`,PARTIAL:`environmentState.`,MISSING:`environmentState.`,INVALID:`environmentState.`,UNSET:`environmentState.`};var I=class t{i18n=p(Ec);state=rn.required();labelOverride=rn(null);kind=tn(()=>O[this.state()]??`muted`);label=tn(()=>{let a=this.labelOverride();if(a)return a;let e=this.state(),n=h[e];return n===void 0?e:n.endsWith(`.`)?this.i18n.t(`${n}${e}`):this.i18n.t(n)});static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`ui-state-badge`]],inputs:{state:[1,`state`],labelOverride:[1,`labelOverride`]},decls:2,vars:2,consts:[[`role`,`status`,1,`badge`]],template:function(e,n){e&1&&(vd(0,`span`,0),WS(1),Ed()),e&2&&(Ar(`data-kind`,n.kind()),hD(),Jm(n.label()))},styles:[`.badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:var(--%NS%radius-pill);font-size:var(--%NS%font-xs);font-weight:650;letter-spacing:.02em;border:1px solid color-mix(in srgb,var(--%NS%badge-fg, var(--%NS%fg-muted)) 35%,transparent);color:var(--%NS%badge-fg, var(--%NS%fg-muted));background:var(--%NS%badge-bg, transparent);white-space:nowrap}.badge[_ngcontent-%COMP%]:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--%NS%badge-fg, var(--%NS%fg-muted));box-shadow:0 0 0 2px color-mix(in srgb,var(--%NS%badge-fg, var(--%NS%fg-muted)) 25%,transparent)}.badge[data-kind=ok][_ngcontent-%COMP%]{--%NS%badge-fg: var(--%NS%ok);--%NS%badge-bg: var(--%NS%ok-bg)}.badge[data-kind=warn][_ngcontent-%COMP%]{--%NS%badge-fg: var(--%NS%warn);--%NS%badge-bg: var(--%NS%warn-bg)}.badge[data-kind=error][_ngcontent-%COMP%]{--%NS%badge-fg: var(--%NS%error);--%NS%badge-bg: var(--%NS%error-bg)}.badge[data-kind=info][_ngcontent-%COMP%]{--%NS%badge-fg: var(--%NS%info);--%NS%badge-bg: var(--%NS%info-bg)}.badge[data-kind=unv][_ngcontent-%COMP%]{--%NS%badge-fg: var(--%NS%unverified);--%NS%badge-bg: var(--%NS%unverified-bg)}`]})};function T(t,a){t&1&&Sa(0,`span`,0)}function x(t,a){t&1&&(vd(0,`span`,1),Sa(1,`span`,2),vd(2,`span`,4),Sa(3,`span`,5)(4,`span`,6),Ed()())}function M(t,a){t&1&&Sa(0,`span`,2)}function A(t,a){if(t&1&&Sa(0,`span`,7),t&2){let e=bS().$implicit,n=bS();Km(`s--short`,e===n.lastLine()&&n.lines()>1)}}function w(t,a){if(t&1&&uS(0,T,1,0,`span`,0)(1,x,5,0,`span`,1)(2,M,1,0,`span`,2)(3,A,1,2,`span`,3),t&2){let e,n=bS();fS((e=n.kind())===`card`?0:e===`row`?1:e===`avatar`?2:3)}}var k=class t{kind=rn(`text`);lines=rn(1,{transform:a=>{let e=Math.floor(Number(a));return Number.isFinite(e)&&e>=1?e:1}});repeats=tn(()=>Array.from({length:this.lines()},(a,e)=>e));lastLine=tn(()=>this.lines()-1);static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`ui-skeleton`]],hostAttrs:[`aria-hidden`,`true`],hostVars:1,hostBindings:function(e,n){e&2&&Ar(`data-kind`,n.kind())},inputs:{kind:[1,`kind`],lines:[1,`lines`]},decls:2,vars:0,consts:[[1,`s`,`s--card`],[1,`s-row`],[1,`s`,`s--avatar`],[1,`s`,`s--line`,3,`s--short`],[1,`s-row__lines`],[1,`s`,`s--line`,`s--rowtitle`],[1,`s`,`s--line`,`s--short`],[1,`s`,`s--line`]],template:function(e,n){e&1&&gS(0,w,4,1,null,null,pS),e&2&&mS(n.repeats())},styles:[`[_nghost-%COMP%]{display:grid;gap:var(--%NS%space-2);pointer-events:none}[data-kind="card"][_nghost-%COMP%], [data-kind="row"][_nghost-%COMP%]{gap:var(--%NS%space-3)}[data-kind="avatar"][_nghost-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2)}.s[_ngcontent-%COMP%]{display:block;background:var(--%NS%skeleton, var(--%NS%bg-hover));border-radius:var(--%NS%radius-md)}.s--line[_ngcontent-%COMP%]{height:.8rem;margin:var(--%NS%space-1) 0}.s--short[_ngcontent-%COMP%]{width:62%}.s--rowtitle[_ngcontent-%COMP%]{width:44%}.s--card[_ngcontent-%COMP%]{min-height:7rem;border-radius:var(--%NS%radius-lg);border:1px solid var(--%NS%border)}.s--avatar[_ngcontent-%COMP%]{width:36px;height:36px;border-radius:50%;flex:none}.s-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3)}.s-row__lines[_ngcontent-%COMP%]{display:grid;gap:6px;flex:1;min-width:0}`]})};export{k as n,I as t}; \ No newline at end of file +import{$ as dS,Bt as tn,Et as p,H as Xm,P as SS,Pt as rn,Qt as yS,at as ey,ct as hD,g as Id,h as Ic,i as Ar,it as ei,kt as qS,o as Ca,ot as gS,u as Ed,ut as hS,yt as mS}from"./chunk-BefGrJ9d.js";var O={VERIFIED:`ok`,ACTIVE:`ok`,CONFIGURED:`ok`,INSTALLED:`info`,DEGRADED:`warn`,BLOCKED:`warn`,NOT_INSTALLED:`muted`,FAILED:`error`,INVOCATION_VERIFIED:`ok`,HANDSHAKE_VERIFIED:`ok`,TOOLS_DISCOVERED:`ok`,DETECTED:`info`,MCP_REGISTERED:`ok`,EXECUTION_VERIFIED:`ok`,NOT_DETECTED:`muted`,STARTING:`info`,NOT_CONFIGURED:`muted`,supported:`ok`,unverified:`unv`,unsupported:`error`,not_applicable:`muted`,PASS:`ok`,FAIL:`error`,UNVERIFIED:`unv`,NOT_APPLICABLE:`muted`,READY:`ok`,PARTIAL:`warn`,MISSING:`muted`,INVALID:`error`,UNSET:`muted`,ok:`ok`,warn:`warn`,error:`error`,info:`info`,muted:`muted`};var h={VERIFIED:`installState.`,ACTIVE:`installState.`,CONFIGURED:`installState.`,INSTALLED:`installState.`,DEGRADED:`installState.`,BLOCKED:`installState.`,NOT_INSTALLED:`installState.`,FAILED:`installState.`,INVOCATION_VERIFIED:`mcpState.`,HANDSHAKE_VERIFIED:`mcpState.`,TOOLS_DISCOVERED:`mcpState.`,STARTING:`mcpState.`,NOT_CONFIGURED:`mcpState.`,DETECTED:`hostState.`,MCP_REGISTERED:`hostState.`,EXECUTION_VERIFIED:`hostState.`,NOT_DETECTED:`hostState.`,supported:`state.supported`,unverified:`state.unverified`,unsupported:`state.unsupported`,not_applicable:`state.notApplicable`,READY:`environmentState.`,PARTIAL:`environmentState.`,MISSING:`environmentState.`,INVALID:`environmentState.`,UNSET:`environmentState.`};var I=class t{i18n=p(Ic);state=rn.required();labelOverride=rn(null);kind=tn(()=>O[this.state()]??`muted`);label=tn(()=>{let a=this.labelOverride();if(a)return a;let e=this.state(),n=h[e];return n===void 0?e:n.endsWith(`.`)?this.i18n.t(`${n}${e}`):this.i18n.t(n)});static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`ui-state-badge`]],inputs:{state:[1,`state`],labelOverride:[1,`labelOverride`]},decls:2,vars:2,consts:[[`role`,`status`,1,`badge`]],template:function(e,n){e&1&&(Ed(0,`span`,0),qS(1),Id()),e&2&&(Ar(`data-kind`,n.kind()),hD(),ey(n.label()))},styles:[`.badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:var(--%NS%radius-pill);font-size:var(--%NS%font-xs);font-weight:650;letter-spacing:.02em;border:1px solid color-mix(in srgb,var(--%NS%badge-fg, var(--%NS%fg-muted)) 35%,transparent);color:var(--%NS%badge-fg, var(--%NS%fg-muted));background:var(--%NS%badge-bg, transparent);white-space:nowrap}.badge[_ngcontent-%COMP%]:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--%NS%badge-fg, var(--%NS%fg-muted));box-shadow:0 0 0 2px color-mix(in srgb,var(--%NS%badge-fg, var(--%NS%fg-muted)) 25%,transparent)}.badge[data-kind=ok][_ngcontent-%COMP%]{--%NS%badge-fg: var(--%NS%ok);--%NS%badge-bg: var(--%NS%ok-bg)}.badge[data-kind=warn][_ngcontent-%COMP%]{--%NS%badge-fg: var(--%NS%warn);--%NS%badge-bg: var(--%NS%warn-bg)}.badge[data-kind=error][_ngcontent-%COMP%]{--%NS%badge-fg: var(--%NS%error);--%NS%badge-bg: var(--%NS%error-bg)}.badge[data-kind=info][_ngcontent-%COMP%]{--%NS%badge-fg: var(--%NS%info);--%NS%badge-bg: var(--%NS%info-bg)}.badge[data-kind=unv][_ngcontent-%COMP%]{--%NS%badge-fg: var(--%NS%unverified);--%NS%badge-bg: var(--%NS%unverified-bg)}`]})};function T(t,a){t&1&&Ca(0,`span`,0)}function x(t,a){t&1&&(Ed(0,`span`,1),Ca(1,`span`,2),Ed(2,`span`,4),Ca(3,`span`,5)(4,`span`,6),Id()())}function M(t,a){t&1&&Ca(0,`span`,2)}function A(t,a){if(t&1&&Ca(0,`span`,7),t&2){let e=SS().$implicit,n=SS();Xm(`s--short`,e===n.lastLine()&&n.lines()>1)}}function w(t,a){if(t&1&&dS(0,T,1,0,`span`,0)(1,x,5,0,`span`,1)(2,M,1,0,`span`,2)(3,A,1,2,`span`,3),t&2){let e,n=SS();hS((e=n.kind())===`card`?0:e===`row`?1:e===`avatar`?2:3)}}var k=class t{kind=rn(`text`);lines=rn(1,{transform:a=>{let e=Math.floor(Number(a));return Number.isFinite(e)&&e>=1?e:1}});repeats=tn(()=>Array.from({length:this.lines()},(a,e)=>e));lastLine=tn(()=>this.lines()-1);static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`ui-skeleton`]],hostAttrs:[`aria-hidden`,`true`],hostVars:1,hostBindings:function(e,n){e&2&&Ar(`data-kind`,n.kind())},inputs:{kind:[1,`kind`],lines:[1,`lines`]},decls:2,vars:0,consts:[[1,`s`,`s--card`],[1,`s-row`],[1,`s`,`s--avatar`],[1,`s`,`s--line`,3,`s--short`],[1,`s-row__lines`],[1,`s`,`s--line`,`s--rowtitle`],[1,`s`,`s--line`,`s--short`],[1,`s`,`s--line`]],template:function(e,n){e&1&&mS(0,w,4,1,null,null,gS),e&2&&yS(n.repeats())},styles:[`[_nghost-%COMP%]{display:grid;gap:var(--%NS%space-2);pointer-events:none}[data-kind="card"][_nghost-%COMP%], [data-kind="row"][_nghost-%COMP%]{gap:var(--%NS%space-3)}[data-kind="avatar"][_nghost-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2)}.s[_ngcontent-%COMP%]{display:block;background:var(--%NS%skeleton, var(--%NS%bg-hover));border-radius:var(--%NS%radius-md)}.s--line[_ngcontent-%COMP%]{height:.8rem;margin:var(--%NS%space-1) 0}.s--short[_ngcontent-%COMP%]{width:62%}.s--rowtitle[_ngcontent-%COMP%]{width:44%}.s--card[_ngcontent-%COMP%]{min-height:7rem;border-radius:var(--%NS%radius-lg);border:1px solid var(--%NS%border)}.s--avatar[_ngcontent-%COMP%]{width:36px;height:36px;border-radius:50%;flex:none}.s-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3)}.s-row__lines[_ngcontent-%COMP%]{display:grid;gap:6px;flex:1;min-width:0}`]})};export{k as n,I as t}; \ No newline at end of file diff --git a/portal/assets/chunk-DbK2Y3UO.js b/portal/assets/chunk-DbK2Y3UO.js deleted file mode 100644 index ecaf0d6..0000000 --- a/portal/assets/chunk-DbK2Y3UO.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as da,Et as p,F as Wm,Gt as wS,M as Ta,Mt as sC,N as Uh,P as WS,Q as cE,R as YS,Tt as oC,U as _a,X as bS,Xt as yd,Z as ba,ct as gS,dt as hE,en as zm,ft as hS,gt as k,h as Jm,ht as jh,it as ei,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,yt as mS,zt as uS}from"./chunk-BelLryvf.js";import{i as n,r as g,t as g$1}from"./main-A2NKRJGT.js";import{t as D}from"./chunk-CiuPOfJ0.js";import{n as k$1,t as I}from"./chunk-D2KAfPv6.js";import{t as T}from"./chunk-BBusSOqc.js";var E=(o,p)=>p.id;var J=(o,p)=>p.provider;function K(o,p){o&1&&(da(0,`section`,3),ba(1,`ui-skeleton`,8)(2,`ui-skeleton`,9),yd()),o&2&&(hD(),Wm(`lines`,2))}function L(o,p){if(o&1){let t=wS();da(0,`label`,20)(1,`input`,30),Ta(`change`,function(){let s=jh(t).$implicit,_=bS(2);return Uh(_.scope.set(s.id))}),yd(),da(2,`span`)(3,`strong`),WS(4),oC(5,`t`),yd(),da(6,`small`),WS(7),oC(8,`t`),yd()()()}if(o&2){let t=p.$implicit,c=bS(2);Ar(`data-active`,c.scope()===t.id||null),hD(),Wm(`value`,t.id)(`checked`,c.scope()===t.id),hD(3),Jm(sC(5,5,t.label)),hD(3),Jm(sC(8,7,t.hint))}}function Q(o,p){if(o&1){let t=wS();da(0,`label`,20)(1,`input`,31),Ta(`change`,function(){let s=jh(t).$implicit,_=bS(2);return Uh(_.host.set(s.id))}),yd(),da(2,`span`)(3,`strong`),WS(4),oC(5,`t`),yd(),da(6,`small`),WS(7),oC(8,`t`),yd()()()}if(o&2){let t=p.$implicit,c=bS(2);Ar(`data-active`,c.host()===t.id||null),hD(),Wm(`value`,t.id)(`checked`,c.host()===t.id),hD(3),Jm(sC(5,5,t.label)),hD(3),Jm(sC(8,7,t.hint))}}function W(o,p){if(o&1){let t=wS();da(0,`label`,20)(1,`input`,32),Ta(`change`,function(){let s=jh(t).$implicit,_=bS(2);return Uh(_.profile.set(s.id))}),yd(),da(2,`span`)(3,`strong`),WS(4),oC(5,`t`),yd(),da(6,`small`),WS(7),oC(8,`t`),yd()()()}if(o&2){let t=p.$implicit,c=bS(2);Ar(`data-active`,c.profile()===t.id||null),hD(),Wm(`value`,t.id)(`checked`,c.profile()===t.id),hD(3),Jm(sC(5,5,t.label)),hD(3),Jm(sC(8,7,t.hint))}}function X(o,p){if(o&1){let t=wS();da(0,`label`,20)(1,`input`,33),Ta(`change`,function(){let s=jh(t).$implicit,_=bS(2);return Uh(_.gatewayProfile.set(s.id))}),yd(),da(2,`span`)(3,`strong`),WS(4),oC(5,`t`),yd(),da(6,`small`),WS(7),oC(8,`t`),yd()()()}if(o&2){let t=p.$implicit,c=bS(2);Ar(`data-active`,c.gatewayProfile()===t.id||null),hD(),Wm(`value`,t.id)(`checked`,c.gatewayProfile()===t.id),hD(3),Jm(sC(5,5,t.label)),hD(3),Jm(sC(8,7,t.hint))}}function Y(o,p){if(o&1){let t=wS();da(0,`label`,22)(1,`input`,34),Ta(`change`,function(){let s=jh(t).$implicit,_=bS(2);return Uh(_.toggle(s.id))}),yd(),da(2,`span`)(3,`strong`),WS(4),oC(5,`t`),yd(),da(6,`small`),WS(7),oC(8,`t`),yd()()()}if(o&2){let t=p.$implicit,c=bS(2);Ar(`data-active`,c.selected().has(t.id)||null),hD(),Wm(`checked`,c.selected().has(t.id)),hD(3),Jm(sC(5,4,t.label)),hD(3),Jm(sC(8,6,t.hint))}}function Z(o,p){if(o&1&&(da(0,`small`),WS(1),yd()),o&2){let t=bS().$implicit;hD(),Jm(t.notes[0])}}function ee(o,p){if(o&1&&(da(0,`li`,35)(1,`div`,36)(2,`span`,37),ba(3,`ui-icon`,38),yd(),da(4,`div`)(5,`strong`),WS(6),yd(),da(7,`small`),WS(8),oC(9,`t`),yd()()(),ba(10,`ui-state-badge`,39),da(11,`div`,40)(12,`span`),WS(13),oC(14,`t`),oC(15,`t`),yd(),uS(16,Z,2,1,`small`),yd()()),o&2){let t=p.$implicit;hD(3),Wm(`size`,13),hD(3),Jm(t.provider),hD(2),Jm(t.cli||t.checkout||sC(9,7,`state.unknown`)),hD(2),Wm(`state`,t.state||t.status||`unknown`),hD(2),Ar(`data-present`,t.mcp?`true`:null),hD(),Jm(t.mcp?sC(14,9,`federation.mcpReady`):sC(15,11,`federation.mcpAbsent`)),hD(3),fS(t.notes?.length?16:-1)}}function te(o,p){if(o&1&&(da(0,`ul`,27),gS(1,ee,17,13,`li`,35,J),yd()),o&2){let t=bS();hD(),mS(t.specialists)}}function ie(o,p){o&1&&(da(0,`p`,28),WS(1),oC(2,`t`),yd()),o&2&&(hD(),Jm(sC(2,1,`federation.empty`)))}function ne(o,p){if(o&1){let t=wS();da(0,`section`,10),oC(1,`t`),da(2,`div`,11)(3,`span`,12),WS(4),yd(),da(5,`span`,13),WS(6),oC(7,`t`),yd()(),da(8,`div`,11)(9,`span`,12),WS(10),yd(),da(11,`span`,13),WS(12),oC(13,`t`),yd()(),da(14,`div`,11)(15,`span`,12),WS(16),yd(),da(17,`span`,13),WS(18),oC(19,`t`),yd()(),da(20,`div`,11)(21,`span`,12),WS(22),yd(),da(23,`span`,13),WS(24),oC(25,`t`),yd()()(),da(26,`div`,14)(27,`section`,15)(28,`div`,16)(29,`div`)(30,`h2`),WS(31),oC(32,`t`),yd(),da(33,`p`,17),WS(34),oC(35,`t`),yd()(),da(36,`span`,18),WS(37),oC(38,`t`),yd()(),da(39,`h3`),WS(40),oC(41,`t`),yd(),da(42,`div`,19),oC(43,`t`),gS(44,L,9,9,`label`,20,E),yd(),da(46,`h3`),WS(47),oC(48,`t`),yd(),da(49,`div`,19),oC(50,`t`),gS(51,Q,9,9,`label`,20,E),yd(),da(53,`h3`),WS(54),oC(55,`t`),yd(),da(56,`div`,19),oC(57,`t`),gS(58,W,9,9,`label`,20,E),yd(),da(60,`h3`),WS(61),oC(62,`t`),yd(),da(63,`div`,19),oC(64,`t`),gS(65,X,9,9,`label`,20,E),yd(),da(67,`h3`),WS(68),oC(69,`t`),yd(),da(70,`div`,21),gS(71,Y,9,8,`label`,22,E),yd(),da(73,`div`,23)(74,`button`,24),Ta(`click`,function(){jh(t);let s=bS();return Uh(s.plan())}),ba(75,`ui-icon`,25),WS(76),oC(77,`t`),yd(),da(78,`span`,17),WS(79),oC(80,`t`),yd()()(),da(81,`aside`,26),oC(82,`t`),da(83,`div`,16)(84,`div`)(85,`h2`),WS(86),oC(87,`t`),yd(),da(88,`p`,17),WS(89),oC(90,`t`),yd()()(),uS(91,te,3,0,`ul`,27)(92,ie,3,3,`p`,28),da(93,`p`,29),WS(94),yd()()()}if(o&2){let t=p,c=bS();zm(`aria-label`,YS(sC(1,39,`federation.summary`))),hD(2),_a(`--%NS%stat-rail`,`var(--accent)`),hD(2),Jm(t.summary.catalog),hD(2),Jm(sC(7,41,`federation.catalog`)),hD(2),_a(`--%NS%stat-rail`,`var(--ok)`),hD(2),Jm(t.summary.installed),hD(2),Jm(sC(13,43,`federation.installed`)),hD(2),_a(`--%NS%stat-rail`,`var(--info)`),hD(2),Jm(t.summary.with_mcp),hD(2),Jm(sC(19,45,`federation.mcp`)),hD(2),_a(`--%NS%stat-rail`,`var(--fg-muted)`),hD(2),Jm(t.summary.with_checkout),hD(2),Jm(sC(25,47,`federation.checkouts`)),hD(7),Jm(sC(32,49,`federation.setup.title`)),hD(3),Jm(sC(35,51,`federation.setup.hint`)),hD(3),Jm(sC(38,53,`federation.governed`)),hD(3),Jm(sC(41,55,`install.scope`)),hD(2),Ar(`aria-label`,sC(43,57,`install.scope`)),hD(2),mS(c.scopes),hD(3),Jm(sC(48,59,`federation.host`)),hD(2),Ar(`aria-label`,sC(50,61,`federation.host`)),hD(2),mS(c.hosts),hD(3),Jm(sC(55,63,`federation.profile`)),hD(2),Ar(`aria-label`,sC(57,65,`federation.profile`)),hD(2),mS(c.profiles),hD(3),Jm(sC(62,67,`federation.executionProfile`)),hD(2),Ar(`aria-label`,sC(64,69,`federation.executionProfile`)),hD(2),mS(c.gatewayProfiles),hD(3),Jm(sC(69,71,`federation.components`)),hD(3),mS(c.componentOptions),hD(3),Wm(`disabled`,c.busy()),hD(),Wm(`size`,15),hD(),Dd(` `,sC(77,73,`federation.plan`),` `),hD(3),Jm(sC(80,75,`federation.planHint`)),hD(2),Ar(`aria-label`,sC(82,77,`federation.specialists`)),hD(5),Jm(sC(87,79,`federation.specialists`)),hD(3),Jm(sC(90,81,`federation.specialistsHint`)),hD(2),fS(t.specialists.length?91:92),hD(3),Jm(t.registry.path)}}function ae(o,p){if(o&1&&(da(0,`li`)(1,`code`),WS(2),yd(),da(3,`span`),WS(4),yd()()),o&2){let t=p.$implicit;hD(2),Jm(t.status),hD(2),Jm(t.path)}}function oe(o,p){if(o&1&&(da(0,`ul`,42),gS(1,ae,5,2,`li`,null,hS),yd()),o&2){let t=bS();hD(),mS(t.actions)}}function re(o,p){if(o&1){let t=wS();da(0,`section`,4)(1,`div`,16)(2,`div`)(3,`h2`),WS(4),oC(5,`t`),yd(),da(6,`p`,17),WS(7),oC(8,`t`),yd()(),ba(9,`ui-state-badge`,39),yd(),da(10,`dl`,41)(11,`div`)(12,`dt`),WS(13),oC(14,`t`),yd(),da(15,`dd`),WS(16),yd()(),da(17,`div`)(18,`dt`),WS(19),oC(20,`t`),yd(),da(21,`dd`),WS(22),yd()(),da(23,`div`)(24,`dt`),WS(25),oC(26,`t`),yd(),da(27,`dd`),WS(28),yd()(),da(29,`div`)(30,`dt`),WS(31),oC(32,`t`),yd(),da(33,`dd`),WS(34),oC(35,`t`),yd()(),da(36,`div`)(37,`dt`),WS(38),oC(39,`t`),yd(),da(40,`dd`),WS(41),yd()()(),uS(42,oe,3,0,`ul`,42),da(43,`div`,23)(44,`button`,24),Ta(`click`,function(){let s=jh(t),_=bS();return Uh(_.apply(s))}),ba(45,`ui-icon`,38),WS(46),oC(47,`t`),yd(),da(48,`button`,1),Ta(`click`,function(){jh(t);let s=bS();return Uh(s.reset())}),WS(49),oC(50,`t`),yd()()()}if(o&2){let t=p,c=bS();hD(4),Jm(sC(5,19,`federation.review`)),hD(3),Jm(sC(8,21,`federation.reviewHint`)),hD(2),Wm(`state`,t.status),hD(4),Jm(sC(14,23,`install.scope`)),hD(3),Jm(t.plan.scope),hD(3),Jm(sC(20,25,`federation.host`)),hD(3),Jm(t.plan.host),hD(3),Jm(sC(26,27,`federation.profile`)),hD(3),Jm(t.plan.profile),hD(3),Jm(sC(32,29,`federation.executionProfile`)),hD(3),Jm(t.plan.gateway_profile||sC(35,31,`state.unknown`)),hD(4),Jm(sC(39,33,`federation.actions`)),hD(3),Jm(t.actions.length),hD(),fS(t.actions.length?42:-1),hD(2),Wm(`disabled`,c.busy()),hD(),Wm(`size`,15),hD(),Dd(``,sC(47,35,`federation.apply`),` `),hD(2),Wm(`disabled`,c.busy()),hD(),Dd(` `,sC(50,37,`state.cancel`),` `)}}function le(o,p){o&1&&(da(0,`section`,5),ba(1,`div`,43),WS(2),oC(3,`t`),yd()),o&2&&(hD(2),Dd(` `,sC(3,1,`federation.running`),` `))}function de(o,p){if(o&1&&(da(0,`section`,6)(1,`h2`),WS(2),oC(3,`t`),yd(),da(4,`p`),ba(5,`ui-state-badge`,39),da(6,`span`),WS(7),oC(8,`t`),yd()()()),o&2){let t=p;hD(2),Jm(sC(3,3,`federation.receipt`)),hD(3),Wm(`state`,t.status),hD(2),Jm(t.detail||sC(8,5,`federation.receiptHint`))}}function pe(o,p){if(o&1){let t=wS();da(0,`ui-error`,44),Ta(`retry`,function(){jh(t);let s=bS();return Uh(s.load())}),yd()}if(o&2){let t=bS();Wm(`error`,t.error())}}var q=class o{api=p(g);store=p(g$1);snapshot=k(null);planResult=k(null);result=k(null);error=k(null);phase=k(`loading`);busy=k(!0);scope=k(`project`);host=k(`all`);profile=k(`recommended`);gatewayProfile=k(`balanced`);selected=k(new Set([`skills`,`agents`,`mcp`,`tui`,`graph-studio`]));scopes=[{id:`project`,label:`install.scope.project`,hint:`install.scope.project.hint`},{id:`workspace`,label:`install.scope.workspace`,hint:`install.scope.workspace.hint`},{id:`user`,label:`install.scope.user`,hint:`install.scope.user.hint`}];hosts=[{id:`all`,label:`federation.host.all`,hint:`federation.host.allHint`},{id:`none`,label:`federation.host.none`,hint:`federation.host.noneHint`},{id:`claude`,label:`federation.host.claude`,hint:`federation.host.detected`},{id:`devin`,label:`federation.host.devin`,hint:`federation.host.detected`},{id:`codex`,label:`federation.host.codex`,hint:`federation.host.detected`},{id:`copilot`,label:`federation.host.copilot`,hint:`federation.host.detected`}];profiles=[{id:`minimal`,label:`federation.profile.minimal`,hint:`federation.profile.minimalHint`},{id:`recommended`,label:`federation.profile.recommended`,hint:`federation.profile.recommendedHint`},{id:`full`,label:`federation.profile.full`,hint:`federation.profile.fullHint`}];gatewayProfiles=[{id:`economy`,label:`federation.execution.economy`,hint:`federation.execution.economyHint`},{id:`balanced`,label:`federation.execution.balanced`,hint:`federation.execution.balancedHint`},{id:`deep`,label:`federation.execution.deep`,hint:`federation.execution.deepHint`}];componentOptions=[{id:`skills`,label:`federation.component.skills`,hint:`federation.component.skillsHint`},{id:`agents`,label:`federation.component.agents`,hint:`federation.component.agentsHint`},{id:`mcp`,label:`federation.component.mcp`,hint:`federation.component.mcpHint`},{id:`tui`,label:`federation.component.tui`,hint:`federation.component.tuiHint`},{id:`graph-studio`,label:`federation.component.graph`,hint:`federation.component.graphHint`}];constructor(){this.load()}async load(){this.phase.set(`loading`),this.busy.set(!0),this.error.set(null);try{this.snapshot.set(await hE(this.api.federation())),this.phase.set(`idle`)}catch(p){this.fail(p)}finally{this.busy.set(!1)}}toggle(p){let t=new Set(this.selected());t.has(p)?t.delete(p):t.add(p),this.selected.set(t)}async plan(){this.phase.set(`planning`),this.busy.set(!0),this.error.set(null);try{let p={scope:this.scope(),host:this.host(),profile:this.profile(),gateway_profile:this.gatewayProfile(),components:Object.fromEntries([...this.selected()].map(t=>[t,!0]))};this.planResult.set(await hE(this.api.federationPlan(p))),this.phase.set(`review`)}catch(p){this.fail(p)}finally{this.busy.set(!1)}}async apply(p){this.phase.set(`running`),this.busy.set(!0),this.error.set(null);try{this.result.set(await hE(this.api.federationInstallAuto(p.plan,p.plan_token))),await Promise.all([this.load(),this.store.refreshHealth()]),this.phase.set(`done`)}catch(t){this.fail(t)}finally{this.busy.set(!1)}}reset(){this.phase.set(`idle`),this.planResult.set(null),this.result.set(null),this.error.set(null)}fail(p){this.error.set(p instanceof n?p:new n(0)),this.phase.set(`error`)}static ɵfac=function(t){return new(t||o)};static ɵcmp=ei({type:o,selectors:[[`page-federation`]],decls:13,vars:16,consts:[[3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[`role`,`status`,`aria-live`,`polite`,1,`card`,`loading`],[`data-lift`,``,1,`card`,`plan`],[`role`,`status`,`aria-live`,`polite`,1,`card`,`running`],[`data-lift`,``,1,`card`,`receipt`],[3,`error`],[`kind`,`text`,3,`lines`],[`kind`,`card`],[1,`stats`,3,`aria-label`],[1,`stat`],[1,`stat__value`],[1,`stat__label`],[1,`layout`],[1,`card`,`setup-card`],[1,`card__heading`],[1,`muted`],[1,`eyebrow`],[`role`,`radiogroup`,1,`choices`],[1,`choice`],[1,`component-grid`],[1,`component`],[1,`actions-row`],[1,`btn`,`btn--primary`,3,`click`,`disabled`],[`name`,`install`,3,`size`],[1,`card`,`specialist-card`],[1,`specialists`],[1,`empty`],[1,`registry`,`mono`],[`type`,`radio`,`name`,`federation-scope`,3,`change`,`value`,`checked`],[`type`,`radio`,`name`,`federation-host`,3,`change`,`value`,`checked`],[`type`,`radio`,`name`,`federation-profile`,3,`change`,`value`,`checked`],[`type`,`radio`,`name`,`federation-execution-profile`,3,`change`,`value`,`checked`],[`type`,`checkbox`,3,`change`,`checked`],[1,`specialist`],[1,`specialist__main`],[`aria-hidden`,`true`,1,`specialist__mark`],[`name`,`check`,3,`size`],[3,`state`],[1,`specialist__meta`],[1,`review-grid`],[1,`actions`],[`aria-hidden`,`true`,1,`running__spinner`],[3,`retry`,`error`]],template:function(t,c){if(t&1&&(da(0,`ui-page-header`,0),oC(1,`t`),oC(2,`t`),da(3,`button`,1),Ta(`click`,function(){return c.load()}),ba(4,`ui-icon`,2),WS(5),oC(6,`t`),yd()(),uS(7,K,3,1,`section`,3)(8,ne,95,83),uS(9,re,51,39,`section`,4),uS(10,le,4,3,`section`,5),uS(11,de,9,7,`section`,6),uS(12,pe,1,1,`ui-error`,7)),t&2){let s,_,F;Wm(`title`,sC(1,10,`federation.title`))(`subtitle`,sC(2,12,`federation.subtitle`)),hD(3),Wm(`disabled`,c.busy()),hD(),Wm(`size`,15),hD(),Dd(` `,sC(6,14,`state.refresh`),` `),hD(2),fS(c.phase()===`loading`&&!c.snapshot()?7:(s=c.snapshot())?8:-1,s),hD(2),fS((_=c.phase()===`review`&&c.planResult())?9:-1,_),hD(),fS(c.phase()===`running`?10:-1),hD(),fS((F=c.phase()===`done`&&c.result())?11:-1,F),hD(),fS(c.phase()===`error`?12:-1)}},dependencies:[T,I,D,k$1,cE,aE],styles:[`.stats[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:var(--%NS%space-4);margin-bottom:var(--%NS%space-5)}.layout[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:var(--%NS%space-4);align-items:start}.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.card__heading[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:var(--%NS%space-4);align-items:flex-start}.card[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-lg);font-weight:650}.card[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:var(--%NS%space-5) 0 var(--%NS%space-2);font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted);text-transform:uppercase;letter-spacing:.06em}.card[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]:first-of-type{margin-top:var(--%NS%space-4)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.eyebrow[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);background:var(--%NS%accent-bg);border-radius:var(--%NS%radius-pill);padding:4px 9px;font-size:var(--%NS%font-xs);font-weight:700;white-space:nowrap}.choices[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:var(--%NS%space-2)}.choice[_ngcontent-%COMP%], .component[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-2);align-items:flex-start;padding:var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);cursor:pointer;transition:border-color var(--%NS%motion-fast),background var(--%NS%motion-fast)}.choice[_ngcontent-%COMP%]:hover, .component[_ngcontent-%COMP%]:hover, .choice[data-active][_ngcontent-%COMP%], .component[data-active][_ngcontent-%COMP%]{border-color:var(--%NS%accent-ink);background:var(--%NS%accent-bg)}.choice[_ngcontent-%COMP%] input[_ngcontent-%COMP%], .component[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{margin-top:3px;accent-color:var(--%NS%accent-ink);flex:none}.choice[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .component[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:grid;gap:3px}.choice[_ngcontent-%COMP%] small[_ngcontent-%COMP%], .component[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);line-height:1.35}.component-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:var(--%NS%space-2)}.actions-row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-3);align-items:center;margin-top:var(--%NS%space-5)}.specialists[_ngcontent-%COMP%]{list-style:none;padding:0;margin:var(--%NS%space-4) 0;display:grid;gap:var(--%NS%space-2)}.specialist[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px var(--%NS%space-2);padding:var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md)}.specialist__main[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-2);align-items:center;min-width:0}.specialist__main[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:grid;min-width:0}.specialist__main[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.specialist__mark[_ngcontent-%COMP%]{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;color:var(--%NS%ok);background:var(--%NS%ok-bg);flex:none}.specialist__meta[_ngcontent-%COMP%]{grid-column:1/-1;display:flex;gap:var(--%NS%space-2);flex-wrap:wrap;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.specialist__meta[_ngcontent-%COMP%] [data-present][_ngcontent-%COMP%]{color:var(--%NS%ok)}.specialist__meta[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{width:100%;overflow-wrap:anywhere}.registry[_ngcontent-%COMP%]{border-top:1px solid var(--%NS%border);padding-top:var(--%NS%space-3);color:var(--%NS%fg-muted);overflow-wrap:anywhere;font-size:var(--%NS%font-xs)}.review-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--%NS%space-3);margin:var(--%NS%space-4) 0}.review-grid[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:grid;gap:4px;padding:var(--%NS%space-3);background:var(--%NS%bg-sunken);border-radius:var(--%NS%radius-md)}.review-grid[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.review-grid[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;font-weight:650;overflow-wrap:anywhere}.actions[_ngcontent-%COMP%]{display:grid;gap:6px;list-style:none;padding:0;max-height:240px;overflow:auto}.actions[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-2);padding:7px 0;border-bottom:1px solid var(--%NS%border);overflow-wrap:anywhere}.actions[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);flex:none}.running[_ngcontent-%COMP%], .loading[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-3)}.running[_ngcontent-%COMP%]{place-items:center;min-height:100px}.receipt[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}.empty[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);padding:var(--%NS%space-5) 0}@media(max-width:820px){.layout[_ngcontent-%COMP%]{grid-template-columns:1fr}}@media(max-width:520px){.choices[_ngcontent-%COMP%], .component-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}.card__heading[_ngcontent-%COMP%]{display:block}.eyebrow[_ngcontent-%COMP%]{display:inline-block;margin-top:var(--%NS%space-3)}}@media(prefers-reduced-motion:reduce){.choice[_ngcontent-%COMP%], .component[_ngcontent-%COMP%]{transition:none}}`]})};export{q as FederationPage}; \ No newline at end of file diff --git a/portal/assets/chunk-DcK6E10F.js b/portal/assets/chunk-DcK6E10F.js deleted file mode 100644 index ada26ec..0000000 --- a/portal/assets/chunk-DcK6E10F.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as da,Et as p,F as Wm,Gt as wS,M as Ta,Mt as sC,N as Uh,P as WS,Q as cE,Tt as oC,X as bS,Xt as yd,Z as ba,ct as gS,d as Ec,h as Jm,ht as jh,it as ei,kt as rE,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,yt as mS,zt as uS}from"./chunk-BelLryvf.js";import{n,t as g}from"./main-A2NKRJGT.js";import{t as T}from"./chunk-BBusSOqc.js";var P=(d,o)=>o.id;function $(d,o){if(d&1){let e=wS();da(0,`label`,3)(1,`input`,8),Ta(`change`,function(){let c=jh(e).$implicit,u=bS();return Uh(u.setLocale(c.id))}),yd(),da(2,`span`),WS(3),oC(4,`t`),yd()()}if(d&2){let e=o.$implicit,p=bS();Ar(`data-active`,p.i18n.preference()===e.id||null),hD(),Wm(`value`,e.id)(`checked`,p.i18n.preference()===e.id),hD(2),Jm(sC(4,4,e.label))}}function L(d,o){if(d&1){let e=wS();da(0,`label`,3)(1,`input`,9),Ta(`change`,function(){let c=jh(e).$implicit,u=bS();return Uh(u.setScheme(c.id))}),yd(),ba(2,`ui-icon`,10),da(3,`span`),WS(4),oC(5,`t`),yd()()}if(d&2){let e=o.$implicit,p=bS();Ar(`data-active`,p.theme.scheme()===e.id||null),hD(),Wm(`value`,e.id)(`checked`,p.theme.scheme()===e.id),hD(),Wm(`name`,p.schemeIcon(e.id))(`size`,15),hD(2),Jm(sC(5,6,e.label))}}function z(d,o){if(d&1){let e=wS();da(0,`label`,3)(1,`input`,11),Ta(`change`,function(){let c=jh(e).$implicit,u=bS();return Uh(u.setDensity(c.id))}),yd(),da(2,`span`),WS(3),oC(4,`t`),yd()()}if(d&2){let e=o.$implicit,p=bS();Ar(`data-active`,p.prefs.density()===e.id||null),hD(),Wm(`value`,e.id)(`checked`,p.prefs.density()===e.id),hD(2),Jm(sC(4,4,e.label))}}function H(d,o){if(d&1){let e=wS();da(0,`label`,3)(1,`input`,12),Ta(`change`,function(){let c=jh(e).$implicit,u=bS();return Uh(u.setMotion(c.id))}),yd(),da(2,`span`),WS(3),oC(4,`t`),yd()()}if(d&2){let e=o.$implicit,p=bS();Ar(`data-active`,p.prefs.motion()===e.id||null),hD(),Wm(`value`,e.id)(`checked`,p.prefs.motion()===e.id),hD(2),Jm(sC(4,4,e.label))}}function j(d,o){if(d&1&&(da(0,`dl`,7)(1,`div`)(2,`dt`),WS(3),oC(4,`t`),yd(),da(5,`dd`),WS(6),yd()(),da(7,`div`)(8,`dt`),WS(9),oC(10,`t`),yd(),da(11,`dd`),WS(12),yd()(),da(13,`div`)(14,`dt`),WS(15),oC(16,`t`),yd(),da(17,`dd`),WS(18),yd()(),da(19,`div`)(20,`dt`),WS(21),oC(22,`t`),yd(),da(23,`dd`)(24,`code`),WS(25),yd()()(),da(26,`div`)(27,`dt`),WS(28),oC(29,`t`),yd(),da(30,`dd`),WS(31),oC(32,`t`),yd()()()),d&2){let e=o;hD(3),Jm(sC(4,10,`settings.forge`)),hD(3),Jm(e.forge_name),hD(3),Jm(sC(10,12,`settings.version`)),hD(3),Jm(e.forge_version),hD(3),Jm(sC(16,14,`settings.portalVersion`)),hD(3),Jm(e.portal_version),hD(3),Jm(sC(22,16,`settings.cli`)),hD(4),Jm(e.cli),hD(3),Jm(sC(29,18,`settings.federated`)),hD(3),Jm(sC(32,20,e.federated?`state.yes`:`state.no`))}}var F=class d{store=p(g);i18n=p(Ec);theme=p(n);prefs=p(rE);localeOpts=[{id:`automatic`,label:`settings.language.auto`},{id:`pt-BR`,label:`settings.language.pt`},{id:`en`,label:`settings.language.en`}];schemeOpts=[{id:`system`,label:`settings.theme.system`},{id:`light`,label:`settings.theme.light`},{id:`dark`,label:`settings.theme.dark`}];densityOpts=[{id:`comfortable`,label:`settings.density.comfortable`},{id:`compact`,label:`settings.density.compact`}];motionOpts=[{id:`system`,label:`settings.motion.system`},{id:`full`,label:`settings.motion.full`},{id:`reduced`,label:`settings.motion.reduced`}];setLocale(o){this.i18n.applyPreference(o)}setScheme(o){this.theme.setScheme(o)}setDensity(o){this.prefs.setDensity(o)}setMotion(o){this.prefs.setMotion(o)}schemeIcon(o){return o===`dark`?`moon`:o===`light`?`sun`:`contrast`}static ɵfac=function(e){return new(e||d)};static ɵcmp=ei({type:d,selectors:[[`page-settings`]],decls:53,vars:47,consts:[[3,`title`,`subtitle`],[1,`card`],[`role`,`radiogroup`,1,`opts`],[1,`opt`],[1,`muted`],[1,`btn`,3,`click`,`disabled`],[1,`muted`,`privacy`],[1,`kv`],[`type`,`radio`,`name`,`locale`,3,`change`,`value`,`checked`],[`type`,`radio`,`name`,`scheme`,3,`change`,`value`,`checked`],[3,`name`,`size`],[`type`,`radio`,`name`,`density`,3,`change`,`value`,`checked`],[`type`,`radio`,`name`,`motion`,3,`change`,`value`,`checked`]],template:function(e,p){if(e&1&&(ba(0,`ui-page-header`,0),oC(1,`t`),oC(2,`t`),da(3,`section`,1)(4,`h2`),WS(5),oC(6,`t`),yd(),da(7,`div`,2),oC(8,`t`),gS(9,$,5,6,`label`,3,P),yd()(),da(11,`section`,1)(12,`h2`),WS(13),oC(14,`t`),yd(),da(15,`div`,2),oC(16,`t`),gS(17,L,6,8,`label`,3,P),yd()(),da(19,`section`,1)(20,`h2`),WS(21),oC(22,`t`),yd(),da(23,`div`,2),oC(24,`t`),gS(25,z,5,6,`label`,3,P),yd()(),da(27,`section`,1)(28,`h2`),WS(29),oC(30,`t`),yd(),da(31,`div`,2),oC(32,`t`),gS(33,H,5,6,`label`,3,P),yd()(),da(35,`section`,1)(36,`h2`),WS(37),oC(38,`t`),yd(),da(39,`p`,4),WS(40),oC(41,`t`),yd(),da(42,`button`,5),Ta(`click`,function(){return p.prefs.resetHints()}),WS(43),oC(44,`t`),yd()(),da(45,`p`,6),WS(46),oC(47,`t`),yd(),da(48,`section`,1)(49,`h2`),WS(50),oC(51,`t`),yd(),uS(52,j,33,22,`dl`,7),yd()),e&2){let c;Wm(`title`,sC(1,17,`settings.title`))(`subtitle`,sC(2,19,`settings.subtitle`)),hD(5),Jm(sC(6,21,`settings.language`)),hD(2),Ar(`aria-label`,sC(8,23,`settings.language`)),hD(2),mS(p.localeOpts),hD(4),Jm(sC(14,25,`settings.theme`)),hD(2),Ar(`aria-label`,sC(16,27,`settings.theme`)),hD(2),mS(p.schemeOpts),hD(4),Jm(sC(22,29,`settings.density`)),hD(2),Ar(`aria-label`,sC(24,31,`settings.density`)),hD(2),mS(p.densityOpts),hD(4),Jm(sC(30,33,`settings.motion`)),hD(2),Ar(`aria-label`,sC(32,35,`settings.motion`)),hD(2),mS(p.motionOpts),hD(4),Jm(sC(38,37,`settings.hints`)),hD(3),Jm(sC(41,39,`settings.hints.hint`)),hD(2),Wm(`disabled`,p.prefs.dismissedHints().length===0),hD(),Dd(` `,sC(44,41,`settings.hints.reset`),` `),hD(3),Jm(sC(47,43,`settings.privacy`)),hD(4),Jm(sC(51,45,`settings.about`)),hD(2),fS((c=p.store.descriptor())?52:-1,c)}},dependencies:[T,cE,aE],styles:[`.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);max-width:640px}h2[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em}.opts[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2)}.opt[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);padding:8px var(--%NS%space-3);cursor:pointer;transition:border-color var(--%NS%motion-fast),background var(--%NS%motion-fast),box-shadow var(--%NS%motion-fast)}.opt[_ngcontent-%COMP%]:hover{border-color:var(--%NS%border-strong);background:var(--%NS%bg-hover)}.opt[_ngcontent-%COMP%]:focus-within{border-color:var(--%NS%fg-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--%NS%fg-focus) 22%,transparent)}.opt[data-active][_ngcontent-%COMP%]{border-color:color-mix(in srgb,var(--%NS%accent) 55%,transparent);background:var(--%NS%accent-bg);box-shadow:0 0 0 1px color-mix(in srgb,var(--%NS%accent) 22%,transparent);font-weight:550}.opt[_ngcontent-%COMP%] input[type=radio][_ngcontent-%COMP%]{accent-color:var(--%NS%accent-ink)}.opt[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.opt[data-active][_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.kv[_ngcontent-%COMP%]{display:grid;margin:0}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-2);padding:var(--%NS%space-2) 0;border-bottom:1px solid var(--%NS%border)}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]:last-child{border-bottom:none}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);min-width:140px}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;font-weight:500}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.privacy[_ngcontent-%COMP%]{max-width:640px;margin:0 0 var(--%NS%space-4);font-size:var(--%NS%font-xs)}`]})};export{F as SettingsPage}; \ No newline at end of file diff --git a/portal/assets/chunk-DgMFvN4-.js b/portal/assets/chunk-DgMFvN4-.js new file mode 100644 index 0000000..42434ae --- /dev/null +++ b/portal/assets/chunk-DgMFvN4-.js @@ -0,0 +1 @@ +import{$ as dS,At as qm,Bt as tn,Dt as pS,Et as p,F as Sa,J as aC,Jt as vd,P as SS,Q as cE,Qt as yS,S as Ma,Ut as uC,Y as aE,Z as bd,at as ey,ct as hD,et as da,gt as k,h as Ic,i as Ar,it as ei,jt as rC,kt as qS,lt as hE,ot as gS,p as Hh,s as DS,ut as hS,vt as lC,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{i as n,r as g,s as y,t as g$1}from"./main-XW2ZMSO5.js";import{t as _}from"./chunk-16deWS0U.js";import{t as D}from"./chunk-Bg2lccQE.js";import{n as k$1,t as I}from"./chunk-DQtX_-dj.js";import{t as T}from"./chunk-BGgpmc9t.js";var ne=e=>({count:e});var N=(e,a)=>a.id;var ae=(e,a)=>a.host;var le=(e,a)=>a.path;function oe(e,a){e&1&&Sa(0,`ui-icon`,44),e&2&&qm(`size`,13)}function re(e,a){e&1&&Sa(0,`ui-icon`,38),e&2&&qm(`size`,13)}function se(e,a){if(e&1&&qS(0),e&2){let t=SS().$index;bd(` `,t+1,` `)}}function pe(e,a){if(e&1&&(da(0,`li`,5)(1,`span`,43),dS(2,oe,1,1,`ui-icon`,44)(3,re,1,1,`ui-icon`,38)(4,se,1,1),vd(),da(5,`span`,45),qS(6),aC(7,`t`),vd()()),e&2){let t=a.$implicit,r=a.$index,m=SS();Ar(`data-state`,m.stepState(r))(`aria-current`,r===m.stepIndex()?`step`:null),hD(2),hS(m.stepState(r)===`done`?2:m.stepState(r)===`warn`?3:4),hD(4),ey(lC(7,4,t))}}function de(e,a){e&1&&Sa(0,`ui-state-badge`,10),e&2&&qm(`state`,a.state)}function ce(e,a){if(e&1&&(da(0,`small`,18),qS(1),vd()),e&2){let t=SS().$implicit;hD(),ey(t.detail)}}function me(e,a){if(e&1&&(da(0,`li`),Sa(1,`ui-state-badge`,49),dS(2,ce,2,1,`small`,18),vd()),e&2){let t=a.$implicit;hD(),qm(`state`,t.state)(`labelOverride`,t.id),hD(),hS(t.detail?2:-1)}}function ue(e,a){if(e&1&&(da(0,`ul`,47),mS(1,me,3,3,`li`,null,N),vd()),e&2){let t=SS();hD(),yS(t.checks)}}function _e(e,a){if(e&1&&(da(0,`div`,48),Sa(1,`ui-icon`,50),da(2,`span`,51)(3,`strong`),qS(4),aC(5,`t`),vd(),da(6,`small`,52),qS(7),aC(8,`t`),vd()()()),e&2){let t=a;Ar(`data-state`,t.state),hD(),qm(`size`,15),hD(3),ey(lC(5,4,`install.portal.`+t.state)),hD(3),ey(t.install_root||t.manifest||lC(8,6,`install.portal.vendored.hint`))}}function fe(e,a){if(e&1&&(da(0,`dl`,46)(1,`div`)(2,`dt`),qS(3),aC(4,`t`),vd(),da(5,`dd`),qS(6),aC(7,`t`),vd()(),da(8,`div`)(9,`dt`),qS(10),aC(11,`t`),vd(),da(12,`dd`),qS(13),aC(14,`t`),vd()(),da(15,`div`)(16,`dt`),qS(17),aC(18,`t`),vd(),da(19,`dd`),qS(20),aC(21,`t`),vd()()(),dS(22,ue,3,0,`ul`,47),dS(23,_e,9,8,`div`,48)),e&2){let t,r=a;hD(3),ey(lC(4,8,`dashboard.workspace`)),hD(3),ey(r.workspace??lC(7,10,`dashboard.noWorkspace`)),hD(4),ey(lC(11,12,`dashboard.profile`)),hD(3),ey(r.profile??lC(14,14,`state.unknown`)),hD(4),ey(lC(18,16,`install.receipt.status`)),hD(3),ey(r.updated_at??lC(21,18,`state.unknown`)),hD(2),hS(r.checks.length?22:-1),hD(),hS((t=r.forge_portal)?23:-1,t)}}function ye(e,a){e&1&&Sa(0,`ui-skeleton`,11),e&2&&qm(`lines`,2)}function xe(e,a){if(e&1&&(da(0,`li`)(1,`strong`),qS(2),vd(),Sa(3,`ui-state-badge`,10),da(4,`span`,18),qS(5),aC(6,`t`),vd()()),e&2){let t=a.$implicit;hD(2),ey(t.host),hD(),qm(`state`,t.integration),hD(2),ey(lC(6,3,t.detected?`hosts.detected`:`hostState.NOT_DETECTED`))}}function he(e,a){if(e&1&&(da(0,`ul`,53),mS(1,xe,7,5,`li`,null,ae),vd()),e&2){let t=SS();hD(),yS(t)}}function ve(e,a){e&1&&(da(0,`p`,18),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`hosts.notDetected`)))}function ge(e,a){e&1&&dS(0,he,3,0,`ul`,53)(1,ve,3,3,`p`,18),e&2&&hS(a.length?0:1)}function be(e,a){e&1&&Sa(0,`ui-skeleton`,11),e&2&&qm(`lines`,2)}function Ce(e,a){if(e&1){let t=DS();da(0,`label`,15)(1,`input`,54),Ma(`change`,function(){let m=Hh(t).$implicit,P=SS();return Vh(P.scope.set(m.id))}),vd(),da(2,`span`)(3,`strong`),qS(4),aC(5,`t`),vd(),da(6,`small`),qS(7),aC(8,`t`),vd()()()}if(e&2){let t=a.$implicit,r=SS();Ar(`data-active`,r.scope()===t.id||null),hD(),qm(`value`,t.id)(`checked`,r.scope()===t.id)(`disabled`,r.locked()),hD(3),ey(lC(5,6,t.label)),hD(3),ey(lC(8,8,t.hint))}}function Ie(e,a){if(e&1){let t=DS();da(0,`label`,17)(1,`input`,55),Ma(`change`,function(){let m=Hh(t).$implicit,P=SS();return Vh(P.toggle(m.id))}),vd(),da(2,`span`),qS(3),vd()()}if(e&2){let t=a.$implicit,r=SS();Ar(`data-active`,r.selected().has(t.id)||null),hD(),qm(`checked`,r.selected().has(t.id))(`disabled`,r.locked()),hD(2),ey(t.id)}}function Se(e,a){if(e&1){let t=DS();da(0,`label`,15)(1,`input`,56),Ma(`change`,function(){let m=Hh(t).$implicit,P=SS();return Vh(P.host.set(m.id))}),vd(),da(2,`span`)(3,`strong`),qS(4),aC(5,`t`),vd(),da(6,`small`),qS(7),vd()()()}if(e&2){let t=a.$implicit,r=SS();Ar(`data-active`,r.host()===t.id||null),hD(),qm(`value`,t.id)(`checked`,r.host()===t.id)(`disabled`,r.locked()),hD(3),ey(t.labelKey?lC(5,6,t.labelKey):t.label),hD(3),ey(r.hostState(t.id))}}function Ee(e,a){if(e&1){let t=DS();da(0,`label`,15)(1,`input`,57),Ma(`change`,function(){let m=Hh(t).$implicit,P=SS();return Vh(P.profile.set(m.id))}),vd(),da(2,`span`)(3,`strong`),qS(4),aC(5,`t`),vd(),da(6,`small`),qS(7),aC(8,`t`),vd()()()}if(e&2){let t=a.$implicit,r=SS();Ar(`data-active`,r.profile()===t.id||null),hD(),qm(`value`,t.id)(`checked`,r.profile()===t.id)(`disabled`,r.locked()),hD(3),ey(lC(5,6,t.label)),hD(3),ey(lC(8,8,t.hint))}}function Pe(e,a){if(e&1){let t=DS();da(0,`label`,15)(1,`input`,58),Ma(`change`,function(){let m=Hh(t).$implicit,P=SS();return Vh(P.executionProfile.set(m.id))}),vd(),da(2,`span`)(3,`strong`),qS(4),aC(5,`t`),vd(),da(6,`small`),qS(7),aC(8,`t`),vd()()()}if(e&2){let t=a.$implicit,r=SS();Ar(`data-active`,r.executionProfile()===t.id||null),hD(),qm(`value`,t.id)(`checked`,r.executionProfile()===t.id)(`disabled`,r.locked()),hD(3),ey(lC(5,6,t.label)),hD(3),ey(lC(8,8,t.hint))}}function ke(e,a){if(e&1&&(da(0,`code`,59),qS(1),vd()),e&2){let t=a.$implicit;hD(),ey(t)}}function we(e,a){if(e&1&&(da(0,`span`,21),mS(1,ke,2,1,`code`,59,gS),vd()),e&2){let t=SS();hD(),yS(t.selected())}}function Be(e,a){e&1&&(da(0,`span`,18),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`install.summary.empty`)))}function Te(e,a){e&1&&(da(0,`section`,24),Sa(1,`div`,60),da(2,`p`,18),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`install.planning`)))}function Ne(e,a){if(e&1&&(da(0,`li`,68)(1,`code`,69),qS(2),vd(),da(3,`span`,70)(4,`del`,71),qS(5),vd(),Sa(6,`ui-icon`,72),da(7,`ins`,73),qS(8),vd()()()),e&2){let t=a.$implicit;hD(2),ey(t.path),hD(3),ey(t.before??`—`),hD(),qm(`size`,13),hD(2),ey(t.after??`—`)}}function De(e,a){if(e&1&&(da(0,`ul`,66),mS(1,Ne,9,4,`li`,68,le),vd()),e&2){let t=SS();hD(),yS(t)}}function Me(e,a){e&1&&(da(0,`p`,67),Sa(1,`ui-icon`,38),qS(2),aC(3,`t`),vd()),e&2&&(hD(),qm(`size`,14),hD(),bd(` `,lC(3,2,`install.diff.none`),` `))}function Oe(e,a){e&1&&dS(0,De,3,0,`ul`,66)(1,Me,4,4,`p`,67),e&2&&hS(a.length?0:1)}function Ve(e,a){if(e&1&&(da(0,`li`)(1,`code`),qS(2),vd(),da(3,`code`,75),qS(4),vd(),da(5,`span`),qS(6),vd()()),e&2){let t=a.$implicit;hD(2),ey(t.kind),hD(2),ey(t.status),hD(2),ey(t.path)}}function Re(e,a){if(e&1&&(da(0,`h3`,12),qS(1),aC(2,`t`),vd(),da(3,`ul`,74),mS(4,Ve,7,3,`li`,null,pS),vd()),e&2){let t=SS();hD(),ey(lC(2,1,`federation.actions`)),hD(3),yS(t.actions)}}function $e(e,a){if(e&1&&(da(0,`details`,61)(1,`summary`),qS(2),aC(3,`t`),vd(),da(4,`pre`),qS(5),vd()()),e&2){let t=SS(),r=SS();hD(2),ey(lC(3,2,`fdoc.raw`)),hD(3),ey(r.planText(t.plan))}}function Fe(e,a){if(e&1){let t=DS();da(0,`section`,25)(1,`div`,7)(2,`h2`)(3,`span`,9),qS(4,`5`),vd(),qS(5),aC(6,`t`),vd(),Sa(7,`ui-state-badge`,10),vd(),da(8,`p`,18),qS(9),aC(10,`t`),vd(),dS(11,Oe,2,1),dS(12,Re,6,3),dS(13,$e,6,4,`details`,61),da(14,`div`,62)(15,`button`,63),Ma(`click`,function(){Hh(t);let m=SS();return Vh(m.proceedToConfirm())}),Sa(16,`ui-icon`,64),qS(17),aC(18,`t`),vd(),da(19,`button`,65),Ma(`click`,function(){Hh(t);let m=SS();return Vh(m.reset())}),qS(20),aC(21,`t`),vd()()()}if(e&2){let t,r=a,m=SS();hD(5),bd(``,lC(6,9,`install.step.reviewDiff`),` `),hD(2),qm(`state`,r.status),hD(2),bd(` `,uC(10,11,`install.plan.changes`,rC(18,ne,r.actions?.length??0)),` `),hD(2),hS((t=m.diffRows())?11:-1,t),hD(),hS(r.actions?.length?12:-1),hD(),hS(r.plan?13:-1),hD(3),qm(`size`,15),hD(),bd(` `,lC(18,14,`install.confirm.next`),` `),hD(3),ey(lC(21,16,`state.cancel`))}}function ze(e,a){if(e&1){let t=DS();da(0,`section`,26)(1,`h2`)(2,`span`,9),qS(3,`6`),vd(),qS(4),aC(5,`t`),vd(),da(6,`p`,18),qS(7),aC(8,`t`),vd(),da(9,`dl`,20)(10,`div`)(11,`dt`),qS(12),aC(13,`t`),vd(),da(14,`dd`),qS(15),aC(16,`t`),vd()(),da(17,`div`)(18,`dt`),qS(19),aC(20,`t`),vd(),da(21,`dd`),qS(22),vd()(),da(23,`div`)(24,`dt`),qS(25),aC(26,`t`),vd(),da(27,`dd`),qS(28),aC(29,`t`),vd()(),da(30,`div`)(31,`dt`),qS(32),aC(33,`t`),vd(),da(34,`dd`),qS(35),vd()()(),da(36,`div`,62)(37,`button`,63),Ma(`click`,function(){Hh(t);let m=SS();return Vh(m.confirmExecute())}),Sa(38,`ui-icon`,64),qS(39),aC(40,`t`),vd(),da(41,`button`,65),Ma(`click`,function(){Hh(t);let m=SS();return Vh(m.backToReview())}),qS(42),aC(43,`t`),vd(),da(44,`button`,65),Ma(`click`,function(){Hh(t);let m=SS();return Vh(m.reset())}),qS(45),aC(46,`t`),vd()()()}if(e&2){let t=SS();hD(4),ey(lC(5,14,`install.step.confirm`)),hD(3),ey(lC(8,16,`install.confirm.hint`)),hD(5),ey(lC(13,18,`install.summary.scope`)),hD(3),ey(lC(16,20,t.scopeLabel())),hD(4),ey(lC(20,22,`install.summary.host`)),hD(3),ey(t.hostLabel()),hD(3),ey(lC(26,24,`install.summary.profile`)),hD(3),ey(lC(29,26,t.profileLabel())),hD(4),ey(lC(33,28,`federation.actions`)),hD(3),ey(a.actions?.length??0),hD(3),qm(`size`,15),hD(),bd(` `,lC(40,30,`install.confirm.execute`),` `),hD(3),ey(lC(43,32,`install.confirm.back`)),hD(3),ey(lC(46,34,`state.cancel`))}}function He(e,a){e&1&&(da(0,`section`,24),Sa(1,`div`,60),da(2,`p`,18),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`install.running`)))}function Le(e,a){e&1&&(da(0,`section`,24),Sa(1,`div`,60),da(2,`p`,18),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`install.verify.running`)))}function je(e,a){e&1&&Sa(0,`ui-state-badge`,10),e&2&&qm(`state`,a.state)}function Ae(e,a){if(e&1&&(da(0,`small`,18),qS(1),vd()),e&2){let t=SS().$implicit;hD(),ey(t.detail)}}function Ke(e,a){e&1&&(da(0,`span`,78),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`fdoc.repairable`)))}function Qe(e,a){if(e&1&&(da(0,`li`),Sa(1,`ui-state-badge`,49),da(2,`code`),qS(3),vd(),dS(4,Ae,2,1,`small`,18),dS(5,Ke,3,3,`span`,78),vd()),e&2){let t=a.$implicit;hD(),qm(`state`,t.status??`unverified`)(`labelOverride`,t.status??null),hD(2),ey(t.id??`—`),hD(),hS(t.detail?4:-1),hD(),hS(t.repairable?5:-1)}}function Ue(e,a){if(e&1&&(da(0,`ul`,47),mS(1,Qe,6,5,`li`,null,pS),vd()),e&2){let t=SS(2);hD(),yS(t.result().checks)}}function Je(e,a){e&1&&(da(0,`p`,77),Sa(1,`ui-state-badge`,36),qS(2),aC(3,`t`),vd()),e&2&&(hD(2),bd(` `,lC(3,1,`install.verify.unverified`),` `))}function We(e,a){if(e&1&&(da(0,`section`,27)(1,`h2`)(2,`span`,9),qS(3,`8`),vd(),qS(4),aC(5,`t`),vd(),da(6,`div`,76),dS(7,je,1,1,`ui-state-badge`,10),dS(8,Ue,3,0,`ul`,47)(9,Je,4,3,`p`,77),vd()()),e&2){let t,r=SS();hD(4),ey(lC(5,3,`install.step.verify`)),hD(3),hS((t=r.store.health())?7:-1,t),hD(),hS(r.result().checks?.length?8:9)}}function qe(e,a){if(e&1&&(da(0,`p`,18)(1,`code`),qS(2),vd()()),e&2){let t=SS();hD(2),ey(t.stage)}}function Ge(e,a){if(e&1&&(da(0,`p`),qS(1),vd()),e&2){let t=SS();hD(),ey(t.detail)}}function Xe(e,a){if(e&1&&qS(0),e&2){let t=SS(2);bd(` — `,t.unlock,` `)}}function Ye(e,a){if(e&1&&(da(0,`p`,79)(1,`code`),qS(2),vd(),dS(3,Xe,1,1),vd()),e&2){let t=SS();hD(2),ey(t.refusal),hD(),hS(t.unlock?3:-1)}}function Ze(e,a){if(e&1&&(da(0,`li`)(1,`code`),qS(2),vd(),da(3,`span`),qS(4),vd()()),e&2){let t=a.$implicit;hD(2),ey(t.status),hD(2),ey(t.path)}}function et(e,a){if(e&1&&(da(0,`h3`,12),qS(1),aC(2,`t`),vd(),da(3,`ul`,74),mS(4,Ze,5,2,`li`,null,pS),vd()),e&2){let t=SS();hD(),ey(lC(2,1,`federation.actions`)),hD(3),yS(t.actions)}}function tt(e,a){if(e&1){let t=DS();da(0,`section`,28)(1,`div`,7)(2,`h2`)(3,`span`,9),qS(4,`9`),vd(),qS(5),aC(6,`t`),vd(),Sa(7,`ui-state-badge`,10),vd(),dS(8,qe,3,1,`p`,18),dS(9,Ge,2,1,`p`),dS(10,Ye,4,2,`p`,79),dS(11,et,6,3),da(12,`div`,62)(13,`button`,1),Ma(`click`,function(){Hh(t);let m=SS();return Vh(m.reinstall())}),Sa(14,`ui-icon`,2),qS(15),aC(16,`t`),vd(),da(17,`button`,1),Ma(`click`,function(){Hh(t);let m=SS();return Vh(m.reset())}),qS(18),aC(19,`t`),vd()()()}if(e&2){let t=a,r=SS();hD(5),ey(lC(6,11,`install.step.receipt`)),hD(2),qm(`state`,t.status),hD(),hS(t.stage?8:-1),hD(),hS(t.detail?9:-1),hD(),hS(t.refusal?10:-1),hD(),hS(t.actions?.length?11:-1),hD(2),qm(`disabled`,r.busy()),hD(),qm(`size`,15),hD(),bd(` `,lC(16,13,`install.reinstall`),` `),hD(2),qm(`disabled`,r.busy()),hD(),bd(` `,lC(19,15,`install.newPlan`),` `)}}function it(e,a){if(e&1){let t=DS();da(0,`ui-error`,80),Ma(`retry`,function(){Hh(t);let m=SS();return Vh(m.reset())}),vd()}if(e&2){let t=SS();qm(`error`,t.error())}}function nt(e,a){e&1&&(da(0,`div`,39),Sa(1,`div`,60),da(2,`p`,18),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`install.running`)))}function at(e,a){if(e&1){let t=DS();da(0,`ui-error`,80),Ma(`retry`,function(){Hh(t);let m=SS();return Vh(m.opError.set(null))}),vd()}e&2&&qm(`error`,a)}function lt(e,a){if(e&1&&(da(0,`span`,18),qS(1),vd()),e&2){let t=SS();hD(),ey(t.r.detail)}}function ot(e,a){if(e&1&&qS(0),e&2){let t=SS(2);bd(` — `,t.r.unlock,` `)}}function rt(e,a){if(e&1&&(da(0,`p`,82)(1,`code`),qS(2),vd(),dS(3,ot,1,1),vd()),e&2){let t=SS();hD(2),ey(t.r.refusal),hD(),hS(t.r.unlock?3:-1)}}function st(e,a){if(e&1&&(da(0,`li`)(1,`code`),qS(2),vd(),da(3,`span`),qS(4),vd()()),e&2){let t=a.$implicit;hD(2),ey(t.status),hD(2),ey(t.path)}}function pt(e,a){if(e&1&&(da(0,`ul`,74),mS(1,st,5,2,`li`,null,pS),vd()),e&2){let t=SS();hD(),yS(t.r.actions)}}function dt(e,a){if(e&1&&(da(0,`div`,40)(1,`p`,81)(2,`strong`),qS(3),aC(4,`t`),vd(),Sa(5,`ui-state-badge`,10),dS(6,lt,2,1,`span`,18),vd(),dS(7,rt,4,2,`p`,82),dS(8,pt,3,0,`ul`,74),vd()),e&2){let t=a,r=SS();hD(3),ey(lC(4,5,r.opLabel(t.op))),hD(2),qm(`state`,t.r.status),hD(),hS(t.r.detail?6:-1),hD(),hS(t.r.refusal?7:-1),hD(),hS(t.r.actions?.length?8:-1)}}function ct(e,a){if(e&1&&(da(0,`tr`)(1,`td`),qS(2),vd(),da(3,`td`)(4,`code`),qS(5),vd()(),da(6,`td`),Sa(7,`ui-state-badge`,49),vd(),da(8,`td`),qS(9),vd()()),e&2){let t=a.$implicit,r=SS(3);hD(2),ey(t.label),hD(3),ey(t.verb),hD(2),qm(`state`,r.stageKind(t.stage))(`labelOverride`,t.stage),hD(2),ey(t.exit_code??`—`)}}function mt(e,a){if(e&1&&(da(0,`table`,83)(1,`thead`)(2,`tr`)(3,`th`,85),qS(4),aC(5,`t`),vd(),da(6,`th`,85),qS(7),aC(8,`t`),vd(),da(9,`th`,85),qS(10),aC(11,`t`),vd(),da(12,`th`,85),qS(13),aC(14,`t`),vd()()(),da(15,`tbody`),mS(16,ct,10,5,`tr`,null,N),vd()()),e&2){let t=SS();hD(4),ey(lC(5,4,`table.task`)),hD(3),ey(lC(8,6,`table.verb`)),hD(3),ey(lC(11,8,`table.stage`)),hD(3),ey(lC(14,10,`table.exit`)),hD(3),yS(t)}}function ut(e,a){e&1&&(Sa(0,`ui-empty`,84),aC(1,`t`)),e&2&&qm(`title`,lC(1,1,`tasks.empty`))}function _t(e,a){e&1&&dS(0,mt,18,12,`table`,83)(1,ut,2,3,`ui-empty`,84),e&2&&hS(a.length?0:1)}function ft(e,a){e&1&&Sa(0,`ui-skeleton`,11),e&2&&qm(`lines`,3)}var te=class e{api=p(g);i18n=p(Ic);confirm=p(y);store=p(g$1);phase=k(`idle`);reached=k(0);failedAt=k(0);scope=k(`project`);host=k(`all`);profile=k(`recommended`);executionProfile=k(`balanced`);hostDetections=k(null);selected=k(new Set([`skills`,`agents`,`mcp`]));planReceipt=k(null);result=k(null);error=k(null);history=k(null);opBusy=k(null);opReceipt=k(null);opError=k(null);busy=tn(()=>[`planning`,`executing`,`verifying`].includes(this.phase())||this.opBusy()!==null);locked=tn(()=>this.phase()!==`idle`);stepKeys=[`install.step.discover`,`install.step.select`,`install.step.configure`,`install.step.plan`,`install.step.reviewDiff`,`install.step.confirm`,`install.step.execute`,`install.step.verify`,`install.step.receipt`];stepIndex(){switch(this.phase()){case`planning`:return 3;case`review`:return 4;case`confirming`:return 5;case`executing`:return 6;case`verifying`:return 7;case`receipt`:case`refused`:return 8;case`error`:return this.failedAt();default:return 2}}stepState(a){let t=this.phase();if(t===`idle`)return a<=2?`active`:`todo`;if(t===`receipt`)return`done`;if(t===`refused`||t===`error`){let m=t===`refused`?this.reached():this.failedAt();return a===m?`warn`:a{let a=this.planReceipt();if(!a)return[];let t=[],r=new Set,m=(w,I,T)=>{let h=w==null?``:String(w);!h||r.has(h)||(r.add(h),t.push({path:h,before:ie(I),after:ie(T)}))},P=a.plan??{};for(let w of[`diff`,`changes`,`files`]){let I=P[w];if(Array.isArray(I)){for(let T of I)if(T&&typeof T==`object`){let h=T;m(h.path??h.file??h.target,h.before,h.after)}}else if(I&&typeof I==`object`){for(let[T,h]of Object.entries(I))if(h&&typeof h==`object`){let M=h;m(T,M.before,M.after)}}}for(let w of a.actions??[]){let I=w;(I.before!==void 0||I.after!==void 0)&&m(w.path,I.before,I.after)}return t});hostChoices=[{id:`all`,labelKey:`install.host.all`},{id:`claude`,label:`Claude`},{id:`devin`,label:`Devin`},{id:`codex`,label:`Codex`},{id:`copilot`,label:`Copilot`}];profiles=[{id:`minimal`,label:`profiles.economy`,hint:`profiles.economy.desc`},{id:`recommended`,label:`profiles.balanced`,hint:`profiles.balanced.desc`},{id:`full`,label:`profiles.full`,hint:`profiles.full.desc`}];executionProfiles=[{id:`economy`,label:`profiles.economy`,hint:`profiles.economy.desc`},{id:`balanced`,label:`profiles.balanced`,hint:`profiles.balanced.desc`},{id:`deep`,label:`profiles.deep`,hint:`profiles.deep.desc`}];scopes=[{id:`project`,label:`install.scope.project`,hint:`install.scope.project.hint`},{id:`workspace`,label:`install.scope.workspace`,hint:`install.scope.workspace.hint`},{id:`user`,label:`install.scope.user`,hint:`install.scope.user.hint`}];components=[{id:`skills`},{id:`agents`},{id:`mcp`},{id:`tui`},{id:`graph-studio`}];constructor(){this.load()}async load(){await Promise.all([hE(this.api.hosts()).then(a=>this.hostDetections.set(a)).catch(()=>this.hostDetections.set([])),this.loadHistory(),this.store.refreshHealth()])}async loadHistory(){try{this.history.set(await hE(this.api.tasks()))}catch{this.history.set(this.history()??[])}}hostState(a){if(a===`all`)return`—`;let t=(this.hostDetections()??[]).find(r=>r.host===a);return t?t.detected?this.i18n.t(`hostState.${t.integration}`):this.i18n.t(`hostState.NOT_DETECTED`):`…`}scopeLabel(){return this.scopes.find(a=>a.id===this.scope())?.label??this.scope()}hostLabel(){let a=this.hostChoices.find(t=>t.id===this.host());return a?.labelKey?this.i18n.t(a.labelKey):a?.label??this.host()}profileLabel(){return this.profiles.find(a=>a.id===this.profile())?.label??this.profile()}executionProfileLabel(){return this.executionProfiles.find(a=>a.id===this.executionProfile())?.label??`profiles.${this.executionProfile()}`}opLabel(a){return a===`repair`?`install.repair`:`install.uninstall`}stageKind(a){let t=(a||``).toLowerCase();return t===`completed`?`supported`:[`failed`,`refused`,`cancelled`].includes(t)?`error`:[`awaiting_approval`,`partial`].includes(t)?`warn`:[`running`,`planning`,`verifying`].includes(t)?`info`:`muted`}toggle(a){if(this.locked())return;let t=new Set(this.selected());t.has(a)?t.delete(a):t.add(a),this.selected.set(t)}planText(a){return JSON.stringify(a,null,2)}async plan(){if(!(this.phase()!==`idle`||this.busy()||this.selected().size===0)){this.error.set(null),this.result.set(null),this.planReceipt.set(null),this.phase.set(`planning`),this.reached.set(3);try{let a=await hE(this.api.installationPlan(this.selectionPayload()));if(a.refusal){this.result.set(a),this.phase.set(`refused`);return}this.planReceipt.set(a),this.reached.set(4),this.phase.set(`review`)}catch(a){this.fail(a)}}}proceedToConfirm(){this.phase()!==`review`||!this.planReceipt()||(this.reached.set(5),this.phase.set(`confirming`))}backToReview(){this.phase()===`confirming`&&(this.phase.set(`review`),this.reached.set(4))}async confirmExecute(){let a=this.planReceipt();if(!(this.phase()!==`confirming`||!a?.plan||!a.plan_token)){this.error.set(null),this.phase.set(`executing`),this.reached.set(6);try{let t=await hE(this.api.installationApply(a.plan,a.plan_token));if(this.result.set(t),t.refusal){this.phase.set(`refused`);return}this.phase.set(`verifying`),this.reached.set(7),await this.store.refreshHealth(),this.reached.set(8),this.phase.set(`receipt`),await this.loadHistory()}catch(t){this.fail(t)}}}async reinstall(){this.busy()||(this.planReceipt.set(null),this.result.set(null),this.phase.set(`idle`),this.reached.set(0),await this.plan())}async repair(){this.opBusy()||!await this.confirm.ask({title:`install.repair`,message:`install.repair.confirm`,confirmKey:`install.repair`,danger:!0})||await this.runQuickOp(`repair`,()=>this.api.installationRepair())}async uninstall(){this.opBusy()||!await this.confirm.ask({title:`install.uninstall`,message:`install.uninstall.confirm`,confirmKey:`install.uninstall.confirmBtn`,danger:!0})||(await this.runQuickOp(`uninstall`,()=>this.api.installationUninstall()),this.opReceipt()&&!this.opReceipt().r.refusal&&!this.opError()&&this.reset())}async runQuickOp(a,t){this.opBusy.set(a),this.opReceipt.set(null),this.opError.set(null);try{let r=await hE(t());this.opReceipt.set({op:a,r})}catch(r){this.opError.set(r instanceof n?r:new n(0))}finally{this.opBusy.set(null)}await this.store.refreshHealth(),await this.loadHistory()}reset(){this.phase.set(`idle`),this.reached.set(0),this.planReceipt.set(null),this.result.set(null),this.error.set(null)}fail(a){this.failedAt.set(this.stepIndex()),this.error.set(a instanceof n?a:new n(0)),this.phase.set(`error`)}selectionPayload(){return{scope:this.scope(),host:this.host(),profile:this.profile(),hosts:this.host()===`all`?this.hostChoices.filter(a=>a.id!==`all`).map(a=>a.id):[this.host()],component_profile:this.profile(),execution_profile:this.executionProfile(),components:Object.fromEntries([...this.selected()].map(a=>[a,!0]))}}static ɵfac=function(t){return new(t||e)};static ɵcmp=ei({type:e,selectors:[[`page-install`]],decls:178,vars:145,consts:[[`hintId`,`install`,3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[1,`card`],[1,`stepper`],[1,`stepper__step`],[`aria-labelledby`,`discover-h`,1,`card`,`discover`],[1,`card__heading`],[`id`,`discover-h`],[`aria-hidden`,`true`,1,`stepnum`],[3,`state`],[`kind`,`row`,3,`lines`],[1,`subhead`],[1,`config-grid`],[`role`,`radiogroup`,1,`scopes`],[1,`scope`],[1,`comps`],[1,`comp`],[1,`muted`],[1,`card`,`summary`],[1,`summary__kv`],[1,`summary__comps`],[1,`btn`,`btn--primary`,3,`click`,`disabled`],[`name`,`install`,3,`size`],[`role`,`status`,`aria-live`,`polite`,1,`card`,`running`],[`data-lift`,``,1,`card`,`plan`],[`data-lift`,``,1,`card`,`confirm`],[1,`card`,`verify`],[`data-lift`,``,1,`card`,`receipt`],[3,`error`],[`aria-labelledby`,`ops-h`,1,`card`,`ops`],[`id`,`ops-h`],[1,`ops__list`],[1,`op`],[1,`op__body`],[`data-state`,`unverified`,1,`op`],[`state`,`unverified`],[1,`btn`,`btn--danger`,3,`click`,`disabled`],[`name`,`alert`,3,`size`],[`role`,`status`,`aria-live`,`polite`,1,`running`],[1,`op-receipt`],[`aria-labelledby`,`history-h`,1,`card`,`history`],[`id`,`history-h`],[`aria-hidden`,`true`,1,`stepper__dot`],[`name`,`check`,3,`size`],[1,`stepper__label`],[1,`discover__kv`],[1,`checks`],[1,`portal-row`],[3,`state`,`labelOverride`],[`name`,`gem`,3,`size`],[1,`portal-row__body`],[1,`mono`],[1,`hostlist`],[`type`,`radio`,`name`,`scope`,3,`change`,`value`,`checked`,`disabled`],[`type`,`checkbox`,3,`change`,`checked`,`disabled`],[`type`,`radio`,`name`,`host`,3,`change`,`value`,`checked`,`disabled`],[`type`,`radio`,`name`,`profile`,3,`change`,`value`,`checked`,`disabled`],[`type`,`radio`,`name`,`execution-profile`,3,`change`,`value`,`checked`,`disabled`],[1,`summary__chip`],[`aria-hidden`,`true`,1,`running__spinner`],[1,`raw`],[1,`row`],[1,`btn`,`btn--primary`,3,`click`],[`name`,`shield-check`,3,`size`],[1,`btn`,3,`click`],[1,`diff`],[`role`,`note`,1,`diff-none`],[1,`diff__row`],[1,`diff__path`],[1,`diff__pair`],[1,`diff__before`],[`name`,`chevron-right`,3,`size`],[1,`diff__after`],[1,`actions`],[1,`actions__status`],[1,`verify__row`],[1,`unverified`],[1,`repairable`],[`role`,`alert`,1,`refusal`],[3,`retry`,`error`],[1,`op-receipt__head`],[1,`refusal`],[1,`table`],[`icon`,`tasks`,3,`title`],[`scope`,`col`]],template:function(t,r){if(t&1&&(da(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),da(3,`button`,1),Ma(`click`,function(){return r.load()}),Sa(4,`ui-icon`,2),qS(5),aC(6,`t`),vd()(),da(7,`section`,3)(8,`ol`,4),aC(9,`t`),mS(10,pe,8,6,`li`,5,gS),vd()(),da(12,`section`,6)(13,`div`,7)(14,`h2`,8)(15,`span`,9),qS(16,`1`),vd(),qS(17),aC(18,`t`),vd(),dS(19,de,1,1,`ui-state-badge`,10),vd(),dS(20,fe,24,20)(21,ye,1,1,`ui-skeleton`,11),da(22,`h3`,12),qS(23),aC(24,`t`),vd(),dS(25,ge,2,1)(26,be,1,1,`ui-skeleton`,11),vd(),da(27,`div`,13)(28,`section`,3)(29,`h2`)(30,`span`,9),qS(31,`2`),vd(),qS(32),aC(33,`t`),vd(),da(34,`h3`,12),qS(35),aC(36,`t`),vd(),da(37,`div`,14),aC(38,`t`),mS(39,Ce,9,10,`label`,15,N),vd(),da(41,`h3`,12),qS(42),aC(43,`t`),vd(),da(44,`div`,16),mS(45,Ie,4,4,`label`,17,N),vd(),da(47,`h2`)(48,`span`,9),qS(49,`3`),vd(),qS(50),aC(51,`t`),vd(),da(52,`h3`,12),qS(53),aC(54,`t`),vd(),da(55,`p`,18),qS(56),aC(57,`t`),vd(),da(58,`div`,14),aC(59,`t`),mS(60,Se,8,8,`label`,15,N),vd(),da(62,`h3`,12),qS(63),aC(64,`t`),vd(),da(65,`div`,14),aC(66,`t`),mS(67,Ee,9,10,`label`,15,N),vd(),da(69,`h3`,12),qS(70),aC(71,`t`),vd(),da(72,`div`,14),aC(73,`t`),mS(74,Pe,9,10,`label`,15,N),vd()(),da(76,`aside`,19),aC(77,`t`),da(78,`h2`),qS(79),aC(80,`t`),vd(),da(81,`dl`,20)(82,`div`)(83,`dt`),qS(84),aC(85,`t`),vd(),da(86,`dd`),qS(87),aC(88,`t`),vd()(),da(89,`div`)(90,`dt`),qS(91),aC(92,`t`),vd(),da(93,`dd`),qS(94),vd()(),da(95,`div`)(96,`dt`),qS(97),aC(98,`t`),vd(),da(99,`dd`),qS(100),aC(101,`t`),vd()(),da(102,`div`)(103,`dt`),qS(104),aC(105,`t`),vd(),da(106,`dd`),qS(107),aC(108,`t`),vd()(),da(109,`div`)(110,`dt`),qS(111),aC(112,`t`),vd(),da(113,`dd`),dS(114,we,3,0,`span`,21)(115,Be,3,3,`span`,18),vd()()(),da(116,`button`,22),Ma(`click`,function(){return r.plan()}),Sa(117,`ui-icon`,23),qS(118),aC(119,`t`),vd(),da(120,`p`,18),qS(121),aC(122,`t`),vd()()(),dS(123,Te,5,3,`section`,24),dS(124,Fe,22,20,`section`,25),dS(125,ze,47,36,`section`,26),dS(126,He,5,3,`section`,24),dS(127,Le,5,3,`section`,24),dS(128,We,10,5,`section`,27),dS(129,tt,20,17,`section`,28),dS(130,it,1,1,`ui-error`,29),da(131,`section`,30)(132,`h2`,31),qS(133),aC(134,`t`),vd(),da(135,`ul`,32)(136,`li`,33)(137,`span`,34)(138,`strong`),qS(139),aC(140,`t`),vd(),da(141,`small`,18),qS(142),aC(143,`t`),vd()(),da(144,`button`,1),Ma(`click`,function(){return r.repair()}),Sa(145,`ui-icon`,2),qS(146),aC(147,`t`),vd()(),da(148,`li`,35)(149,`span`,34)(150,`strong`),qS(151),aC(152,`t`),vd(),da(153,`small`,18),qS(154),aC(155,`t`),vd()(),Sa(156,`ui-state-badge`,36),vd(),da(157,`li`,33)(158,`span`,34)(159,`strong`),qS(160),aC(161,`t`),vd(),da(162,`small`,18),qS(163),aC(164,`t`),vd()(),da(165,`button`,37),Ma(`click`,function(){return r.uninstall()}),Sa(166,`ui-icon`,38),qS(167),aC(168,`t`),vd()()(),dS(169,nt,5,3,`div`,39),dS(170,at,1,1,`ui-error`,29),dS(171,dt,9,7,`div`,40),vd(),da(172,`section`,41)(173,`h2`,42),qS(174),aC(175,`t`),vd(),dS(176,_t,2,1)(177,ft,1,1,`ui-skeleton`,11),vd()),t&2){let m,P,w,I,T,h,M,z,H;qm(`title`,lC(1,65,`install.title`))(`subtitle`,lC(2,67,`install.subtitle`)),hD(3),qm(`disabled`,r.busy()),hD(),qm(`size`,15),hD(),bd(` `,lC(6,69,`state.refresh`),` `),hD(3),Ar(`aria-label`,lC(9,71,`install.title`)),hD(2),yS(r.stepKeys),hD(7),bd(``,lC(18,73,`install.step.discover`),` `),hD(2),hS((m=r.store.health())?19:-1,m),hD(),hS((P=r.store.health())?20:21,P),hD(3),ey(lC(24,75,`install.discover.hosts`)),hD(2),hS((w=r.hostDetections())?25:26,w),hD(7),ey(lC(33,77,`install.step.select`)),hD(3),ey(lC(36,79,`install.scope`)),hD(2),Ar(`aria-label`,lC(38,81,`install.scope`)),hD(2),yS(r.scopes),hD(3),ey(lC(43,83,`install.components`)),hD(3),yS(r.components),hD(5),ey(lC(51,85,`install.step.configure`)),hD(3),ey(lC(54,87,`install.hosts`)),hD(3),ey(lC(57,89,`install.hosts.hint`)),hD(2),Ar(`aria-label`,lC(59,91,`install.hosts`)),hD(2),yS(r.hostChoices),hD(3),ey(lC(64,93,`install.profile`)),hD(2),Ar(`aria-label`,lC(66,95,`install.profile`)),hD(2),yS(r.profiles),hD(3),ey(lC(71,97,`install.executionProfile`)),hD(2),Ar(`aria-label`,lC(73,99,`install.executionProfile`)),hD(2),yS(r.executionProfiles),hD(2),Ar(`aria-label`,lC(77,101,`install.summary`)),hD(3),ey(lC(80,103,`install.summary`)),hD(5),ey(lC(85,105,`install.summary.scope`)),hD(3),ey(lC(88,107,r.scopeLabel())),hD(4),ey(lC(92,109,`install.summary.host`)),hD(3),ey(r.hostLabel()),hD(3),ey(lC(98,111,`install.summary.profile`)),hD(3),ey(lC(101,113,r.profileLabel())),hD(4),ey(lC(105,115,`install.summary.executionProfile`)),hD(3),ey(lC(108,117,r.executionProfileLabel())),hD(4),ey(lC(112,119,`install.summary.components`)),hD(3),hS(r.selected().size?114:115),hD(2),qm(`disabled`,r.locked()||r.busy()||!r.selected().size),hD(),qm(`size`,15),hD(),bd(` `,lC(119,121,`install.plan`),` `),hD(3),ey(lC(122,123,`install.flow.hint`)),hD(2),hS(r.phase()===`planning`?123:-1),hD(),hS((I=r.phase()===`review`&&r.planReceipt())?124:-1,I),hD(),hS((T=r.phase()===`confirming`&&r.planReceipt())?125:-1,T),hD(),hS(r.phase()===`executing`?126:-1),hD(),hS(r.phase()===`verifying`?127:-1),hD(),hS(r.phase()===`receipt`&&r.result()&&!r.result().refusal?128:-1),hD(),hS((h=(r.phase()===`receipt`||r.phase()===`refused`)&&r.result())?129:-1,h),hD(),hS(r.phase()===`error`?130:-1),hD(3),ey(lC(134,125,`install.ops.title`)),hD(6),ey(lC(140,127,`install.repair`)),hD(3),ey(lC(143,129,`install.ops.repair.hint`)),hD(2),qm(`disabled`,r.busy()),hD(),qm(`size`,15),hD(),bd(` `,lC(147,131,`install.repair`),` `),hD(5),ey(lC(152,133,`install.ops.update`)),hD(3),ey(lC(155,135,`install.ops.update.hint`)),hD(6),ey(lC(161,137,`install.uninstall`)),hD(3),ey(lC(164,139,`install.uninstall.confirm`)),hD(2),qm(`disabled`,r.busy()),hD(),qm(`size`,15),hD(),bd(` `,lC(168,141,`install.uninstall`),` `),hD(2),hS(r.opBusy()?169:-1),hD(),hS((M=r.opError())?170:-1,M),hD(),hS((z=r.opReceipt())?171:-1,z),hD(3),ey(lC(175,143,`tasks.recent`)),hD(2),hS((H=r.history())?176:177,H)}},dependencies:[T,I,D,_,cE,k$1,aE],styles:[`.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.card[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:var(--%NS%space-3) 0;font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em;display:flex;align-items:center;gap:var(--%NS%space-2)}.card[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]:first-child{margin-top:0}.card__heading[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:var(--%NS%space-3)}.card__heading[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-2)}.subhead[_ngcontent-%COMP%]{margin:var(--%NS%space-4) 0 var(--%NS%space-2);font-size:var(--%NS%font-sm);font-weight:650;color:var(--%NS%fg-muted)}.checks[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3)}.summary[_ngcontent-%COMP%]{position:sticky;top:calc(var(--%NS%topbar-h) + var(--%NS%space-4))}.running[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3)}.actions[_ngcontent-%COMP%]{font-family:var(--%NS%font-mono);font-size:var(--%NS%font-sm);max-height:240px;overflow:auto}.actions[_ngcontent-%COMP%] li[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);flex:none}.actions__status[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)!important}.repairable[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);font-size:var(--%NS%font-xs);font-weight:650}.row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2);margin-top:var(--%NS%space-4)}@media(max-width:880px){.summary[_ngcontent-%COMP%]{position:static}}`]})};function ie(e){return e==null?null:typeof e==`object`?JSON.stringify(e):String(e)}export{te as InstallPage}; \ No newline at end of file diff --git a/portal/assets/chunk-DjkjLihA.js b/portal/assets/chunk-DjkjLihA.js deleted file mode 100644 index c8bb0d6..0000000 --- a/portal/assets/chunk-DjkjLihA.js +++ /dev/null @@ -1 +0,0 @@ -var f=Object.defineProperty;var g=Object.defineProperties;var h=Object.getOwnPropertyDescriptors;var d=Object.getOwnPropertySymbols;var i=Object.prototype.hasOwnProperty;var j=Object.prototype.propertyIsEnumerable;var e=(c,a,b)=>a in c?f(c,a,{enumerable:!0,configurable:!0,writable:!0,value:b}):c[a]=b;var k=(c,a)=>{for(var b in a||={})i.call(a,b)&&e(c,b,a[b]);if(d)for(var b of d(a))j.call(a,b)&&e(c,b,a[b]);return c};var l=(c,a)=>g(c,h(a));var t={dashboard:``,install:``,profiles:``,hosts:``,mcp:``,skills:``,agents:``,tasks:``,graph:``,network:``,knowledge:``,settings:``,refresh:``,folder:``,"chevron-left":``,"chevron-right":``,sun:``,moon:``,contrast:``,globe:``,search:``,copy:``,check:``,alert:``,external:``,terminal:``,"shield-check":``,gem:``,inbox:``,compass:``,key:``,diff:``,history:``,pulse:``,execution:``,guide:``,close:``};function c(h){return t[h]??``}export{l as i,t as n,k as r,c as t}; \ No newline at end of file diff --git a/portal/assets/chunk-DmeV4Ae_.js b/portal/assets/chunk-DmeV4Ae_.js deleted file mode 100644 index 8df08de..0000000 --- a/portal/assets/chunk-DmeV4Ae_.js +++ /dev/null @@ -1,322 +0,0 @@ -import{r as k,t as c}from"./chunk-DjkjLihA.js";import"./chunk-DJd3bKJi.js";import{a as k$1,c as v,i as N,n as E,o as m}from"./chunk-B5UUjcvD.js";function Io(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,a=Array(e);r=t.length?{done:!0}:{done:!1,value:t[a++]}},e:function(u){throw u},f:n}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i,o=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var u=r.next();return o=u.done,u},e:function(u){s=!0,i=u},f:function(){try{o||r.return==null||r.return()}finally{if(s)throw i}}}}function lf(t,e,r){return(e=ff(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function pc(t){if(typeof Symbol<`u`&&t[Symbol.iterator]!=null||t[`@@iterator`]!=null)return Array.from(t)}function yc(t,e){var r=t==null?null:typeof Symbol<`u`&&t[Symbol.iterator]||t[`@@iterator`];if(r!=null){var a,n,i,o,s=[],u=!0,l=!1;try{if(i=(r=r.call(t)).next,e===0){if(Object(r)!==r)return;u=!1}else for(;!(u=(a=i.call(r)).done)&&(s.push(a.value),s.length!==e);u=!0);}catch(f){l=!0,n=f}finally{try{if(!u&&r.return!=null&&(o=r.return(),Object(o)!==o))return}finally{if(l)throw n}}return s}}function mc(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function bc(){throw new TypeError(`Invalid attempt to spread non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ye(t,e){return dc(t)||yc(t,e)||es(t,e)||mc()}function wn(t){return hc(t)||pc(t)||es(t)||bc()}function wc(t,e){if(typeof t!=`object`||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var a=r.call(t,e);if(typeof a!=`object`)return a;throw new TypeError(`@@toPrimitive must return a primitive value.`)}return String(t)}function ff(t){var e=wc(t,`string`);return typeof e==`symbol`?e:e+``}function je(t){"@babel/helpers - typeof";return je=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},je(t)}function es(t,e){if(t){if(typeof t==`string`)return Io(t,e);var r={}.toString.call(t).slice(8,-1);return r===`Object`&&t.constructor&&(r=t.constructor.name),r===`Map`||r===`Set`?Array.from(t):r===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Io(t,e):void 0}}var Qe=typeof window>`u`?null:window;var Is=Qe?Qe.navigator:null;Qe&&Qe.document;var xc=je(``);var vf=je({});var Ec=je(function(){});var Cc=typeof HTMLElement>`u`?`undefined`:je(HTMLElement);var Ia=function(e){return e&&e.instanceString&&$e(e.instanceString)?e.instanceString():null};var pe=function(e){return e!=null&&je(e)==xc};var $e=function(e){return e!=null&&je(e)===Ec};var Fe=function(e){return!Tt(e)&&(Array.isArray?Array.isArray(e):e!=null&&e instanceof Array)};var Me=function(e){return e!=null&&je(e)===vf&&!Fe(e)&&e.constructor===Object};var Tc=function(e){return e!=null&&je(e)===vf};var ie=function(e){return e!=null&&je(e)===je(1)&&!isNaN(e)};var cf=function(e){return ie(e)&&Math.floor(e)===e};var xn=function(e){if(Cc!==`undefined`)return e!=null&&e instanceof HTMLElement};var Tt=function(e){return Oa(e)||df(e)};var Oa=function(e){return Ia(e)===`collection`&&e._private.single};var df=function(e){return Ia(e)===`collection`&&!e._private.single};var ts=function(e){return Ia(e)===`core`};var hf=function(e){return Ia(e)===`stylesheet`};var Sc=function(e){return Ia(e)===`event`};var or=function(e){return e==null?!0:!!(e===``||e.match(/^\s+$/))};var kc=function(e){return typeof HTMLElement>`u`?!1:e instanceof HTMLElement};var Dc=function(e){return Me(e)&&ie(e.x1)&&ie(e.x2)&&ie(e.y1)&&ie(e.y2)};var Bc=function(e){return Tc(e)&&$e(e.then)};var Pc=function(){return Is&&Is.userAgent.match(/msie|trident|edge/i)};var Zr=function(e,r){r||(r=function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return`undefined`;for(var i=[],o=0;or?1:0};var Nc=function(e,r){return-1*pf(e,r)};var me=Object.assign!=null?Object.assign.bind(Object):function(t){for(var e=arguments,r=1;r1&&(g-=1),g<1/6?d+(y-d)*6*g:g<1/2?y:g<2/3?d+(y-d)*(2/3-g)*6:d}var v=new RegExp(`^`+Mc+`$`).exec(e);if(v){if(a=parseInt(v[1]),a<0?a=(360- -1*a%360)%360:a>360&&(a=a%360),a/=360,n=parseFloat(v[2]),n<0||n>100||(n=n/100,i=parseFloat(v[3]),i<0||i>100)||(i=i/100,o=v[4],o!==void 0&&(o=parseFloat(o),o<0||o>1)))return;if(n===0)s=u=l=Math.round(i*255);else{var c=i<.5?i*(1+n):i+n-i*n,h=2*i-c;s=Math.round(255*f(h,c,a+1/3)),u=Math.round(255*f(h,c,a)),l=Math.round(255*f(h,c,a-1/3))}r=[s,u,l,o]}return r};var Vc=function(e){var r,a=new RegExp(`^`+Ac+`$`).exec(e);if(a){r=[];for(var n=[],i=1;i<=3;i++){var o=a[i];if(o[o.length-1]===`%`&&(n[i]=!0),o=parseFloat(o),n[i]&&(o=o/100*255),o<0||o>255)return;r.push(Math.floor(o))}var s=n[1]||n[2]||n[3],u=n[1]&&n[2]&&n[3];if(s&&!u)return;var l=a[4];if(l!==void 0){if(l=parseFloat(l),l<0||l>1)return;r.push(l)}}return r};var qc=function(e){return _c[e.toLowerCase()]};var yf=function(e){return(Fe(e)?e:null)||qc(e)||zc(e)||Vc(e)||Fc(e)};var _c={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};var mf=function(e){for(var r=e.map,a=e.keys,n=a.length,i=0;i=u||L<0||m&&O>=c}function T(){var A=e();if(x(A))return S(A);d=setTimeout(T,C(A))}function S(A){return d=void 0,b&&f?w(A):(f=v=void 0,h)}function B(){d!==void 0&&clearTimeout(d),g=0,f=y=v=d=void 0}function k(){return d===void 0?h:S(e())}function P(){var A=e(),L=x(A);if(f=arguments,v=this,y=A,L){if(d===void 0)return E(y);if(m)return clearTimeout(d),d=setTimeout(T,u),w(y)}return d===void 0&&(d=setTimeout(T,u)),h}return P.cancel=B,P.flush=k,P}return pi=o,pi}var Va=Na(Zc());var yi=Qe?Qe.performance:null;var xf=yi&&yi.now?function(){return yi.now()}:function(){return Date.now()};var Jc=(function(){if(Qe){if(Qe.requestAnimationFrame)return function(t){Qe.requestAnimationFrame(t)};if(Qe.mozRequestAnimationFrame)return function(t){Qe.mozRequestAnimationFrame(t)};if(Qe.webkitRequestAnimationFrame)return function(t){Qe.webkitRequestAnimationFrame(t)};if(Qe.msRequestAnimationFrame)return function(t){Qe.msRequestAnimationFrame(t)}}return function(t){t&&setTimeout(function(){t(xf())},1e3/60)}})();var En=function(e){return Jc(e)};var Kt=xf;var Tr=9261;var Ef=65599;var Gr=5381;var Cf=function(e){for(var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Tr,n;n=e.next(),!n.done;)a=a*Ef+n.value|0;return a};var Ta=function(e){return(arguments.length>1&&arguments[1]!==void 0?arguments[1]:Tr)*Ef+e|0};var Sa=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Gr;return(r<<5)+r+e|0};var jc=function(e,r){return e*2097152+r};var Jt=function(e){return e[0]*2097152+e[1]};var Za=function(e,r){return[Ta(e[0],r[0]),Sa(e[1],r[1])]};var Zs=function(e,r){var a={value:0,done:!1},n=0,i=e.length;return Cf({next:function(){return n=0;n--)e[n]===r&&e.splice(n,1)};var os=function(e){e.splice(0,e.length)};var ld=function(e,r){for(var a=0;a`u`?`undefined`:je(Set))!==vd?Set:cd;var Nn=function(e,r){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0||r===void 0||!ts(e)){Ge(`An element must have a core reference and parameters set`);return}var n=r.group;if(n??(r.data&&r.data.source!=null&&r.data.target!=null?n=`edges`:n=`nodes`),n!==`nodes`&&n!==`edges`){Ge("An element must be of type `nodes` or `edges`; you specified `"+n+"`");return}this.length=1,this[0]=this;var i=this._private={cy:e,single:!0,data:r.data||{},position:r.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:n,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!r.selected,selectable:r.selectable===void 0?!0:!!r.selectable,locked:!!r.locked,grabbed:!1,grabbable:r.grabbable===void 0?!0:!!r.grabbable,pannable:r.pannable===void 0?n===`edges`:!!r.pannable,active:!1,classes:new ta,animation:{current:[],queue:[]},rscratch:{},scratch:r.scratch||{},edges:[],children:[],parent:r.parent&&r.parent.isNode()?r.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(i.position.x??(i.position.x=0),i.position.y??(i.position.y=0),r.renderedPosition){var o=r.renderedPosition,s=e.pan(),u=e.zoom();i.position={x:(o.x-s.x)/u,y:(o.y-s.y)/u}}var l=[];Fe(r.classes)?l=r.classes:pe(r.classes)&&(l=r.classes.split(/\s+/));for(var f=0,v=l.length;fm?1:0},f=function(p,m,b,w,E){var C;if(b??=0,E??=a,b<0)throw new Error(`lo must be non-negative`);for(w??=p.length;bB;0<=B?S++:S--)T.push(S);return T}).apply(this).reverse(),x=[],w=0,E=C.length;wk;0<=k?++T:--T)P.push(o(p,b));return P},y=function(p,m,b,w){var E,C,x;for(w??=a,E=p[b];b>m;){if(x=b-1>>1,C=p[x],w(E,C)<0){p[b]=C,b=x;continue}break}return p[b]=E},g=function(p,m,b){var w,E,C,x,T;for(b??=a,E=p.length,T=m,C=p[m],w=2*m+1;w0;){var C=m.pop(),x=g(C),T=C.id();if(c[T]=x,x!==1/0)for(var S=C.neighborhood().intersect(d),B=0;B0)for(R.unshift(I);v[F];){var z=v[F];R.unshift(z.edge),R.unshift(z.node),M=z.node,F=M.id()}return s.spawn(R)}}}};var bd={kruskal:function(e){e=e||function(b){return 1};for(var r=this.byGroup(),a=r.nodes,n=r.edges,i=a.length,o=new Array(i),s=a,u=function(w){for(var E=0;E0;){if(E(),x++,w===f){for(var T=[],S=i,B=f,k=p[B];T.unshift(S),k!=null&&T.unshift(k),S=g[B],S!=null;)B=S.id(),k=p[B];return{found:!0,distance:v[w],path:this.spawn(T),steps:x}}h[w]=!0;for(var P=b._private.edges,A=0;Ak&&(d[B]=k,m[B]=S,b[B]=E),!i){var P=S*f+T;!i&&d[P]>k&&(d[P]=k,m[P]=T,b[P]=E)}}}for(var A=0;A1&&arguments[1]!==void 0?arguments[1]:o,ne=b(ye),ve=[],ge=ne;;){if(ge==null)return r.spawn();var Ee=m(ge),be=Ee.edge,Te=Ee.pred;if(ve.unshift(ge[0]),ge.same(he)&&ve.length>0)break;be!=null&&ve.unshift(be),ge=Te}return u.spawn(ve)},C=0;C=0;f--){var v=l[f],c=v[1],h=v[2];(r[c]===s&&r[h]===u||r[c]===u&&r[h]===s)&&l.splice(f,1)}for(var d=0;dn;)r=Dd(Math.floor(Math.random()*r.length),e,r),a--;return r};var Bd={kargerStein:function(){var e=this,r=this.byGroup(),a=r.nodes,n=r.edges;n.unmergeBy(function(R){return R.isLoop()});var i=a.length,o=n.length,s=Math.ceil(Math.pow(Math.log(i)/Math.LN2,2)),u=Math.floor(i/kd);if(i<2){Ge(`At least 2 nodes are required for Karger-Stein algorithm`);return}for(var l=[],f=0;f1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=1/0,i=r;i1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=-1/0,i=r;i1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=0,i=0,o=r;o1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;n?e=e.slice(r,a):(a0&&e.splice(0,r));for(var s=0,u=e.length-1;u>=0;u--){var l=e[u];o?isFinite(l)||(e[u]=-1/0,s++):e.splice(u,1)}i&&e.sort(function(c,h){return c-h});var f=e.length,v=Math.floor(f/2);return f%2!==0?e[v+1+s]:(e[v-1+s]+e[v+s])/2};var Af=function(e,r){return r===0?e:Af(r,e%r)};var Id=function(e){for(var r=e[0],a=0;a0&&(r=Af(r,e[a]));else return 0;return r};var Od=function(e){return Math.PI*e/180};var Qa=function(e,r){return Math.atan2(r,e)-Math.PI/2};var ss=Math.log2||function(t){return Math.log(t)/Math.log(2)};var us=function(e){return e>0?1:e<0?-1:0};var Br=function(e,r){return Math.sqrt(Er(e,r))};var Er=function(e,r){var a=r.x-e.x,n=r.y-e.y;return a*a+n*n};var Nd=function(e){for(var r=e.length,a=0,n=0;n=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(e.w!=null&&e.h!=null&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}};var Fd=function(e){return{x1:e.x1,x2:e.x2,w:e.w,y1:e.y1,y2:e.y2,h:e.h}};var Vd=function(e){e.x1=1/0,e.y1=1/0,e.x2=-1/0,e.y2=-1/0,e.w=0,e.h=0};var qd=function(e,r){e.x1=Math.min(e.x1,r.x1),e.x2=Math.max(e.x2,r.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,r.y1),e.y2=Math.max(e.y2,r.y2),e.h=e.y2-e.y1};var Rf=function(e,r,a){e.x1=Math.min(e.x1,r),e.x2=Math.max(e.x2,r),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,a),e.y2=Math.max(e.y2,a),e.h=e.y2-e.y1};var fn=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.x1-=r,e.x2+=r,e.y1-=r,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e};var vn=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],a,n,i,o;if(r.length===1)a=n=i=o=r[0];else if(r.length===2)a=i=r[0],o=n=r[1];else if(r.length===4){var s=Ye(r,4);a=s[0],n=s[1],i=s[2],o=s[3]}return e.x1-=o,e.x2+=n,e.y1-=a,e.y2+=i,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e};var ru=function(e,r){e.x1=r.x1,e.y1=r.y1,e.x2=r.x2,e.y2=r.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1};var ls=function(e,r){return!(e.x1>r.x2||r.x1>e.x2||e.x2r.y2||r.y1>e.y2)};var rr=function(e,r,a){return e.x1<=r&&r<=e.x2&&e.y1<=a&&a<=e.y2};var au=function(e,r){return rr(e,r.x,r.y)};var Mf=function(e,r){return rr(e,r.x1,r.y1)&&rr(e,r.x2,r.y2)};var _d=(wi=Math.hypot)!==null&&wi!==void 0?wi:function(t,e){return Math.sqrt(t*t+e*e)};function Gd(t,e){if(t.length<3)throw new Error(`Need at least 3 vertices`);var r=function(T,S){return{x:T.x+S.x,y:T.y+S.y}},a=function(T,S){return{x:T.x-S.x,y:T.y-S.y}},n=function(T,S){return{x:T.x*S,y:T.y*S}},i=function(T,S){return T.x*S.y-T.y*S.x},o=function(T){var S=_d(T.x,T.y);return S===0?{x:0,y:0}:{x:T.x/S,y:T.y/S}},s=function(T){for(var S=0,B=0;B7&&arguments[7]!==void 0?arguments[7]:`auto`,l=u===`auto`?ur(i,o):u,f=i/2,v=o/2;l=Math.min(l,f,v);var c=l!==f,h=l!==v,d;if(c){var y=a-f+l-s,g=n-v-s;if(d=ar(e,r,a,n,y,g,a+f-l+s,g,!1),d.length>0)return d}if(h){var b=a+f+s;if(d=ar(e,r,a,n,b,n-v+l-s,b,n+v-l+s,!1),d.length>0)return d}if(c){var x=a-f+l-s,T=n+v+s;if(d=ar(e,r,a,n,x,T,a+f-l+s,T,!1),d.length>0)return d}if(h){var k=a-f-s;if(d=ar(e,r,a,n,k,n-v+l-s,k,n+v-l+s,!1),d.length>0)return d}var O;var N=a-f+l,I=n-v+l;if(O=ma(e,r,a,n,N,I,l+s),O.length>0&&O[0]<=N&&O[1]<=I)return[O[0],O[1]];var R=a+f-l,M=n-v+l;if(O=ma(e,r,a,n,R,M,l+s),O.length>0&&O[0]>=R&&O[1]<=M)return[O[0],O[1]];var F=a+f-l,z=n+v-l;if(O=ma(e,r,a,n,F,z,l+s),O.length>0&&O[0]>=F&&O[1]>=z)return[O[0],O[1]];var q=a-f+l,X=n+v-l;if(O=ma(e,r,a,n,q,X,l+s),O.length>0&&O[0]<=q&&O[1]>=X)return[O[0],O[1]];return[]};var Hd=function(e,r,a,n,i,o,s){var u=s,l=Math.min(a,i),f=Math.max(a,i),v=Math.min(n,o),c=Math.max(n,o);return l-u<=e&&e<=f+u&&v-u<=r&&r<=c+u};var Wd=function(e,r,a,n,i,o,s,u,l){var f={x1:Math.min(a,s,i)-l,x2:Math.max(a,s,i)+l,y1:Math.min(n,u,o)-l,y2:Math.max(n,u,o)+l};return!(ef.x2||rf.y2)};var Ud=function(e,r,a,n){a-=n;var i=r*r-4*e*a;if(i<0)return[];var o=Math.sqrt(i),s=2*e;return[(-r+o)/s,(-r-o)/s]};var Kd=function(e,r,a,n,i){e===0&&(e=1e-5),r/=e,a/=e,n/=e;var s,u=(3*a-r*r)/9,l=-(27*n)+r*(9*a-2*(r*r)),f,v,c,h,d;if(l/=54,s=u*u*u+l*l,i[1]=0,h=r/3,s>0){v=l+Math.sqrt(s),v=v<0?-Math.pow(-v,1/3):Math.pow(v,1/3),c=l-Math.sqrt(s),c=c<0?-Math.pow(-c,1/3):Math.pow(c,1/3),i[0]=-h+v+c,h+=(v+c)/2,i[4]=i[2]=-h,h=Math.sqrt(3)*(-c+v)/2,i[3]=h,i[5]=-h;return}if(i[5]=i[3]=0,s===0){d=l<0?-Math.pow(-l,1/3):Math.pow(l,1/3),i[0]=-h+2*d,i[4]=i[2]=-(d+h);return}u=-u,f=u*u*u,f=Math.acos(l/Math.sqrt(f)),d=2*Math.sqrt(u),i[0]=-h+d*Math.cos(f/3),i[2]=-h+d*Math.cos((f+2*Math.PI)/3),i[4]=-h+d*Math.cos((f+4*Math.PI)/3)};var Yd=function(e,r,a,n,i,o,s,u){var l=1*a*a-4*a*i+2*a*s+4*i*i-4*i*s+s*s+n*n-4*n*o+2*n*u+4*o*o-4*o*u+u*u,f=9*a*i-3*a*a-3*a*s-6*i*i+3*i*s+9*n*o-3*n*n-3*n*u-6*o*o+3*o*u,v=3*a*a-6*a*i+a*s-a*e+2*i*i+2*i*e-s*e+3*n*n-6*n*o+n*u-n*r+2*o*o+2*o*r-u*r,c=1*a*i-a*a+a*e-i*e+n*o-n*n+n*r-o*r,h=[];Kd(l,f,v,c,h);for(var d=1e-7,y=[],g=0;g<6;g+=2)Math.abs(h[g+1])=0&&h[g]<=1&&y.push(h[g]);y.push(1),y.push(0);for(var p=-1,m,b,w,E=0;E=0?wl?(e-i)*(e-i)+(r-o)*(r-o):f-c};var Et=function(e,r,a){for(var n,i,o,s,u,l=0,f=0;f=e&&e>=o||n<=e&&e<=o)u=(e-n)/(o-n)*(s-i)+i,u>r&&l++;else continue;return l%2!==0};var Yt=function(e,r,a,n,i,o,s,u,l){var f=new Array(a.length),v;u[0]!=null?(v=Math.atan(u[1]/u[0]),u[0]<0?v=v+Math.PI/2:v=-v-Math.PI/2):v=u;for(var c=Math.cos(-v),h=Math.sin(-v),d=0;d0)y=Tn(Sn(f,-l));else y=f;return Et(e,r,y)};var Zd=function(e,r,a,n,i,o,s,u){for(var l=new Array(a.length*2),f=0;f=0&&g<=1&&m.push(g),p>=0&&p<=1&&m.push(p),m.length===0)return[];var b=m[0]*u[0]+e,w=m[0]*u[1]+r;if(m.length>1){if(m[0]==m[1])return[b,w];return[b,w,m[1]*u[0]+e,m[1]*u[1]+r]}else return[b,w]};var xi=function(e,r,a){return r<=e&&e<=a||a<=e&&e<=r?e:e<=r&&r<=a||a<=r&&r<=e?r:a};var ar=function(e,r,a,n,i,o,s,u,l){var f=e-i,v=a-e,c=s-i,h=r-o,d=n-r,y=u-o,g=c*h-y*f,p=v*h-d*f,m=y*v-c*d;if(m!==0){var b=g/m,w=p/m,E=.001,C=0-E,x=1+E;return C<=b&&b<=x&&C<=w&&w<=x?[e+b*v,r+b*d]:l?[e+b*v,r+b*d]:[]}else return g===0||p===0?xi(e,a,s)===s?[s,u]:xi(e,a,i)===i?[i,o]:xi(i,s,a)===a?[a,n]:[]:[]};var Jd=function(e,r,a,n,i){var o=[],s=n/2,u=i/2,l=r,f=a;o.push({x:l+s*e[0],y:f+u*e[1]});for(var v=1;v0)h=Tn(Sn(v,-u));else h=v}else h=a;for(var g,p,m,b,w=0;w2){for(var d=[f[0],f[1]],y=Math.pow(d[0]-e,2)+Math.pow(d[1]-r,2),g=1;gf&&(f=w)},get:function(b){return l[b]}},c=0;c0?O=L.edgesTo(A)[0]:O=A.edgesTo(L)[0];var N=n(O);A=A.id(),x[A]>x[k]+N&&(x[A]=x[k]+N,T.nodes.indexOf(A)<0?T.push(A):T.updateItem(A),C[A]=0,E[A]=[]),x[A]==x[k]+N&&(C[A]=C[A]+C[k],E[A].push(k))}else for(var I=0;I0;){for(var z=w.pop(),q=0;q0&&s.push(a[u]);s.length!==0&&i.push(n.collection(s))}return i};var dh=function(e,r){for(var a=0;a5&&arguments[5]!==void 0?arguments[5]:ph,s=n,u,l,f=0;f=2?va(e,r,a,0,uu,yh):va(e,r,a,0,su)},squaredEuclidean:function(e,r,a){return va(e,r,a,0,uu)},manhattan:function(e,r,a){return va(e,r,a,0,su)},max:function(e,r,a){return va(e,r,a,-1/0,mh)}};Qr[`squared-euclidean`]=Qr.squaredEuclidean;Qr.squaredeuclidean=Qr.squaredEuclidean;function Fn(t,e,r,a,n,i){var o;return $e(t)?o=t:o=Qr[t]||Qr.euclidean,e===0&&$e(t)?o(n,i):o(e,r,a,n,i)}var bh=lt({k:2,m:2,sensitivityThreshold:1e-4,distance:`euclidean`,maxIterations:10,attributes:[],testMode:!1,testCentroids:null});var vs=function(e){return bh(e)};var kn=function(e,r,a,n,i){var s=i!==`kMedoids`?function(v){return a[v]}:function(v){return n[v](a)},u=function(c){return n[c](r)},l=a,f=r;return Fn(e,n.length,s,u,l,f)};var Ci=function(e,r,a){for(var n=a.length,i=new Array(n),o=new Array(n),s=new Array(r),u=null,l=0;la)return!1;return!0};var Eh=function(e,r,a){for(var n=0;ns&&(s=r[l][f],u=f);i[u].push(e[l])}for(var v=0;v=i.threshold||i.mode===`dendrogram`&&e.length===1)return!1;var d=r[o],y=r[n[o]],g;i.mode===`dendrogram`?g={left:d,right:y,key:d.key}:g={value:d.value.concat(y.value),key:d.key},e[d.index]=g,e.splice(y.index,1),r[d.key]=g;for(var p=0;pa[y.key][m.key]&&(u=a[y.key][m.key])):i.linkage===`max`?(u=a[d.key][m.key],a[d.key][m.key]0&&n.push(i);return n};var hu=function(e,r,a){for(var n=[],i=0;is&&(o=l,s=r[i*e+l])}o>0&&n.push(o)}for(var f=0;fl&&(u=f,l=v)}a[i]=o[u]}return n=hu(e,r,a),n};var gu=function(e){for(var r=this.cy(),a=this.nodes(),n=Ih(e),i={},o=0;o=k?(P=k,k=L,A=O):L>P&&(P=L);for(var N=0;N0?1:0;x[S%n.minIterations*s+q]=X,z+=X}if(z>0&&(S>=n.minIterations-1||S==n.maxIterations-1)){for(var J=0,U=0;U1||C>1)&&(s=!0),v[b]=[],m.outgoers().forEach(function(T){T.isEdge()&&v[b].push(T.id())})}else c[b]=[void 0,m.target().id()]}):o.forEach(function(m){var b=m.id();if(m.isNode())m.degree(!0)%2&&(u?l?s=!0:l=b:u=b),v[b]=[],m.connectedEdges().forEach(function(E){return v[b].push(E.id())});else c[b]=[m.source().id(),m.target().id()]});var h={found:!1,trail:void 0};if(s)return h;if(l&&u)if(i){if(f&&l!=f)return h;f=l}else{if(f&&l!=f&&u!=f)return h;f||(f=l)}else f||(f=o[0].id());var d=function(b){for(var w=b,E=[b],C,x,T;v[w].length;)C=v[w].shift(),x=c[C][0],T=c[C][1],w!=T?(v[T]=v[T].filter(function(S){return S!=C}),w=T):!i&&w!=x&&(v[x]=v[x].filter(function(S){return S!=C}),w=x),E.unshift(C),E.unshift(w);return E},y=[],g=[];for(g=d(f);g.length!=1;)v[g[0]].length==0?(y.unshift(o.getElementById(g.shift())),y.unshift(o.getElementById(g.shift()))):g=d(g.shift()).concat(g);y.unshift(o.getElementById(g.shift()));for(var p in v)if(v[p].length)return h;return h.found=!0,h.trail=this.spawn(y,!0),h}};var ja=function(){var e=this,r={},a=0,n=0,i=[],o=[],s={},u=function(c,h){for(var d=o.length-1,y=[],g=e.spawn();o[d].x!=c||o[d].y!=h;)y.push(o.pop().edge),d--;y.push(o.pop().edge),y.forEach(function(p){var m=p.connectedNodes().intersection(e);g.merge(p),m.forEach(function(b){var w=b.id(),E=b.connectedEdges().intersection(e);g.merge(b),r[w].cutVertex?g.merge(E.filter(function(C){return C.isLoop()})):g.merge(E)})}),i.push(g)},l=function(c,h,d){c===d&&(n+=1),r[h]={id:a,low:a++,cutVertex:!1};var y=e.getElementById(h).connectedEdges().intersection(e);if(y.size()===0)i.push(e.spawn(e.getElementById(h)));else{var g,p,m,b;y.forEach(function(w){g=w.source().id(),p=w.target().id(),m=g===h?p:g,m!==d&&(b=w.id(),s[b]||(s[b]=!0,o.push({x:h,y:m,edge:w})),m in r?r[h].low=Math.min(r[h].low,r[m].id):(l(c,m,h),r[h].low=Math.min(r[h].low,r[m].low),r[h].id<=r[m].low&&(r[h].cutVertex=!0,u(h,m))))})}};e.forEach(function(v){if(v.isNode()){var c=v.id();c in r||(n=0,l(c,c),r[c].cutVertex=n>1)}});var f=Object.keys(r).filter(function(v){return r[v].cutVertex}).map(function(v){return e.getElementById(v)});return{cut:e.spawn(f),components:i}};var Gh={hopcroftTarjanBiconnected:ja,htbc:ja,htb:ja,hopcroftTarjanBiconnectedComponents:ja};var en=function(){var e=this,r={},a=0,n=[],i=[],o=e.spawn(e),s=function(l){i.push(l),r[l]={index:a,low:a++,explored:!1};if(e.getElementById(l).connectedEdges().intersection(e).forEach(function(y){var g=y.target().id();g!==l&&(g in r||s(g),r[g].explored||(r[l].low=Math.min(r[l].low,r[g].low)))}),r[l].index===r[l].low){for(var v=e.spawn();;){var c=i.pop();if(v.merge(e.getElementById(c)),r[c].low=r[l].index,r[c].explored=!0,c===l)break}var h=v.edgesWith(v),d=v.merge(h);n.push(d),o=o.difference(d)}};return e.forEach(function(u){if(u.isNode()){var l=u.id();l in r||s(l)}}),{cut:o,components:n}};var $h={tarjanStronglyConnected:en,tsc:en,tscc:en,tarjanStronglyConnectedComponents:en};var qf={};[ka,md,bd,xd,Cd,Sd,Bd,rh,Kr,Yr,zo,gh,Bh,Mh,Vh,_h,Gh,$h].forEach(function(t){me(qf,t)});var _f=0;var Gf=1;var $f=2;var Nt=function(e){if(!(this instanceof Nt))return new Nt(e);this.id=`Thenable/1.0.7`,this.state=_f,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof e==`function`&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))};Nt.prototype={fulfill:function(e){return pu(this,Gf,`fulfillValue`,e)},reject:function(e){return pu(this,$f,`rejectReason`,e)},then:function(e,r){var a=this,n=new Nt;return a.onFulfilled.push(mu(e,n,`fulfill`)),a.onRejected.push(mu(r,n,`reject`)),Hf(a),n.proxy}};var pu=function(e,r,a,n){return e.state===_f&&(e.state=r,e[a]=n,Hf(e)),e};var Hf=function(e){e.state===Gf?yu(e,`onFulfilled`,e.fulfillValue):e.state===$f&&yu(e,`onRejected`,e.rejectReason)};var yu=function(e,r,a){if(e[r].length!==0){var n=e[r];e[r]=[];var i=function(){for(var s=0;s0}},clearQueue:function(){return function(){var r=this,n=r.length!==void 0?r:[r];if(!(this._private.cy||this).styleEnabled())return this;for(var o=0;o-1}return Wi=e,Wi}var Ui;var _u;function ug(){if(_u)return Ui;_u=1;var t=_n();function e(r,a){var n=this.__data__,i=t(n,r);return i<0?(++this.size,n.push([r,a])):n[i][1]=a,this}return Ui=e,Ui}var Ki;var Gu;function lg(){if(Gu)return Ki;Gu=1;var t=ng(),e=ig(),r=og(),a=sg(),n=ug();function i(o){var s=-1,u=o==null?0:o.length;for(this.clear();++s-1&&a%1==0&&a0&&this.spawn(n).updateStyle().emit(`class`),r},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var r=this[0];return r!=null&&r._private.classes.has(e)},toggleClass:function(e,r){Fe(e)||(e=e.match(/\S+/g)||[]);for(var a=this,n=r===void 0,i=[],o=0,s=a.length;o0&&this.spawn(i).updateStyle().emit(`class`),a},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,r){var a=this;if(r==null)r=250;else if(r===0)return a;return a.addClass(e),setTimeout(function(){a.removeClass(e)},r),a}};cn.className=cn.classNames=cn.classes;var Re={metaChar:`[\\!\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\\`\\{\\|\\}\\~]`,comparatorOp:`=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=`,boolOp:`\\?|\\!|\\^`,string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:Je,meta:`degree|indegree|outdegree`,separator:`\\s*,\\s*`,descendant:`\\s+`,child:`\\s+>\\s+`,subject:`\\$`,group:`node|edge|\\*`,directedEdge:`\\s+->\\s+`,undirectedEdge:`\\s+<->\\s+`};Re.variable=`(?:[\\w-.]|(?:\\\\`+Re.metaChar+`))+`;Re.className=`(?:[\\w-]|(?:\\\\`+Re.metaChar+`))+`;Re.value=Re.string+`|`+Re.number;Re.id=Re.variable;(function(){var t=Re.comparatorOp.split(`|`),e,r=0;for(;r=0)&&e!==`=`&&(Re.comparatorOp+=`|\\!`+e)})();var ze=function(){return{checks:[]}};var fe={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20};var _o=[{selector:`:selected`,matches:function(e){return e.selected()}},{selector:`:unselected`,matches:function(e){return!e.selected()}},{selector:`:selectable`,matches:function(e){return e.selectable()}},{selector:`:unselectable`,matches:function(e){return!e.selectable()}},{selector:`:locked`,matches:function(e){return e.locked()}},{selector:`:unlocked`,matches:function(e){return!e.locked()}},{selector:`:visible`,matches:function(e){return e.visible()}},{selector:`:hidden`,matches:function(e){return!e.visible()}},{selector:`:transparent`,matches:function(e){return e.transparent()}},{selector:`:grabbed`,matches:function(e){return e.grabbed()}},{selector:`:free`,matches:function(e){return!e.grabbed()}},{selector:`:removed`,matches:function(e){return e.removed()}},{selector:`:inside`,matches:function(e){return!e.removed()}},{selector:`:grabbable`,matches:function(e){return e.grabbable()}},{selector:`:ungrabbable`,matches:function(e){return!e.grabbable()}},{selector:`:animated`,matches:function(e){return e.animated()}},{selector:`:unanimated`,matches:function(e){return!e.animated()}},{selector:`:parent`,matches:function(e){return e.isParent()}},{selector:`:childless`,matches:function(e){return e.isChildless()}},{selector:`:child`,matches:function(e){return e.isChild()}},{selector:`:orphan`,matches:function(e){return e.isOrphan()}},{selector:`:nonorphan`,matches:function(e){return e.isChild()}},{selector:`:compound`,matches:function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()}},{selector:`:loop`,matches:function(e){return e.isLoop()}},{selector:`:simple`,matches:function(e){return e.isSimple()}},{selector:`:active`,matches:function(e){return e.active()}},{selector:`:inactive`,matches:function(e){return!e.active()}},{selector:`:backgrounding`,matches:function(e){return e.backgrounding()}},{selector:`:nonbackgrounding`,matches:function(e){return!e.backgrounding()}}].sort(function(t,e){return Nc(t.selector,e.selector)});var qg=(function(){for(var t={},e,r=0;r<_o.length;r++)e=_o[r],t[e.selector]=e.matches;return t})();var _g=function(e,r){return qg[e](r)};var Gg=`(`+_o.map(function(t){return t.selector}).join(`|`)+`)`;var Or=function(e){return e.replace(new RegExp(`\\\\(`+Re.metaChar+`)`,`g`),function(r,a){return a})};var jt=function(e,r,a){e[e.length-1]=a};var Go=[{name:`group`,query:!0,regex:`(`+Re.group+`)`,populate:function(e,r,a){var i=Ye(a,1)[0];r.checks.push({type:fe.GROUP,value:i===`*`?i:i+`s`})}},{name:`state`,query:!0,regex:Gg,populate:function(e,r,a){var i=Ye(a,1)[0];r.checks.push({type:fe.STATE,value:i})}},{name:`id`,query:!0,regex:`\\#(`+Re.id+`)`,populate:function(e,r,a){var i=Ye(a,1)[0];r.checks.push({type:fe.ID,value:Or(i)})}},{name:`className`,query:!0,regex:`\\.(`+Re.className+`)`,populate:function(e,r,a){var i=Ye(a,1)[0];r.checks.push({type:fe.CLASS,value:Or(i)})}},{name:`dataExists`,query:!0,regex:`\\[\\s*(`+Re.variable+`)\\s*\\]`,populate:function(e,r,a){var i=Ye(a,1)[0];r.checks.push({type:fe.DATA_EXIST,field:Or(i)})}},{name:`dataCompare`,query:!0,regex:`\\[\\s*(`+Re.variable+`)\\s*(`+Re.comparatorOp+`)\\s*(`+Re.value+`)\\s*\\]`,populate:function(e,r,a){var n=Ye(a,3),i=n[0],o=n[1],s=n[2];new RegExp(`^`+Re.string+`$`).exec(s)!=null?s=s.substring(1,s.length-1):s=parseFloat(s),r.checks.push({type:fe.DATA_COMPARE,field:Or(i),operator:o,value:s})}},{name:`dataBool`,query:!0,regex:`\\[\\s*(`+Re.boolOp+`)\\s*(`+Re.variable+`)\\s*\\]`,populate:function(e,r,a){var n=Ye(a,2),i=n[0],o=n[1];r.checks.push({type:fe.DATA_BOOL,field:Or(o),operator:i})}},{name:`metaCompare`,query:!0,regex:`\\[\\[\\s*(`+Re.meta+`)\\s*(`+Re.comparatorOp+`)\\s*(`+Re.number+`)\\s*\\]\\]`,populate:function(e,r,a){var n=Ye(a,3),i=n[0],o=n[1],s=n[2];r.checks.push({type:fe.META_COMPARE,field:Or(i),operator:o,value:parseFloat(s)})}},{name:`nextQuery`,separator:!0,regex:Re.separator,populate:function(e,r){var a=e.currentSubject,n=e.edgeCount,i=e.compoundCount,o=e[e.length-1];a!=null&&(o.subject=a,e.currentSubject=null),o.edgeCount=n,o.compoundCount=i,e.edgeCount=0,e.compoundCount=0;return e[e.length++]=ze()}},{name:`directedEdge`,separator:!0,regex:Re.directedEdge,populate:function(e,r){if(e.currentSubject==null){var a=ze(),n=r,i=ze();return a.checks.push({type:fe.DIRECTED_EDGE,source:n,target:i}),jt(e,r,a),e.edgeCount++,i}else{var o=ze(),s=r,u=ze();return o.checks.push({type:fe.NODE_SOURCE,source:s,target:u}),jt(e,r,o),e.edgeCount++,u}}},{name:`undirectedEdge`,separator:!0,regex:Re.undirectedEdge,populate:function(e,r){if(e.currentSubject==null){var a=ze(),n=r,i=ze();return a.checks.push({type:fe.UNDIRECTED_EDGE,nodes:[n,i]}),jt(e,r,a),e.edgeCount++,i}else{var o=ze(),s=r,u=ze();return o.checks.push({type:fe.NODE_NEIGHBOR,node:s,neighbor:u}),jt(e,r,o),u}}},{name:`child`,separator:!0,regex:Re.child,populate:function(e,r){if(e.currentSubject==null){var a=ze(),n=ze(),i=e[e.length-1];return a.checks.push({type:fe.CHILD,parent:i,child:n}),jt(e,r,a),e.compoundCount++,n}else if(e.currentSubject===r){var o=ze(),s=e[e.length-1],u=ze(),l=ze(),f=ze(),v=ze();return o.checks.push({type:fe.COMPOUND_SPLIT,left:s,right:u,subject:l}),l.checks=r.checks,r.checks=[{type:fe.TRUE}],v.checks.push({type:fe.TRUE}),u.checks.push({type:fe.PARENT,parent:v,child:f}),jt(e,s,o),e.currentSubject=l,e.compoundCount++,f}else{var c=ze(),h=ze(),d=[{type:fe.PARENT,parent:c,child:h}];return c.checks=r.checks,r.checks=d,e.compoundCount++,h}}},{name:`descendant`,separator:!0,regex:Re.descendant,populate:function(e,r){if(e.currentSubject==null){var a=ze(),n=ze(),i=e[e.length-1];return a.checks.push({type:fe.DESCENDANT,ancestor:i,descendant:n}),jt(e,r,a),e.compoundCount++,n}else if(e.currentSubject===r){var o=ze(),s=e[e.length-1],u=ze(),l=ze(),f=ze(),v=ze();return o.checks.push({type:fe.COMPOUND_SPLIT,left:s,right:u,subject:l}),l.checks=r.checks,r.checks=[{type:fe.TRUE}],v.checks.push({type:fe.TRUE}),u.checks.push({type:fe.ANCESTOR,ancestor:v,descendant:f}),jt(e,s,o),e.currentSubject=l,e.compoundCount++,f}else{var c=ze(),h=ze(),d=[{type:fe.ANCESTOR,ancestor:c,descendant:h}];return c.checks=r.checks,r.checks=d,e.compoundCount++,h}}},{name:`subject`,modifier:!0,regex:Re.subject,populate:function(e,r){if(e.currentSubject!=null&&e.currentSubject!==r)return Ne("Redefinition of subject in selector `"+e.toString()+"`"),!1;e.currentSubject=r;var n=e[e.length-1].checks[0],i=n==null?null:n.type;i===fe.DIRECTED_EDGE?n.type=fe.NODE_TARGET:i===fe.UNDIRECTED_EDGE&&(n.type=fe.NODE_NEIGHBOR,n.node=n.nodes[1],n.neighbor=n.nodes[0],n.nodes=null)}}];Go.forEach(function(t){return t.regexObj=new RegExp(`^`+t.regex)});var $g=function(e){for(var r,a,n,i=0;i0&&f.edgeCount>0)return Ne("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(f.edgeCount>1)return Ne("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;f.edgeCount===1&&Ne("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0};var Ug=function(){if(this.toStringCache!=null)return this.toStringCache;for(var e=function(f){return f??``},r=function(f){return pe(f)?`"`+f+`"`:e(f)},a=function(f){return` `+f+` `},n=function(f,v){var c=f.type,h=f.value;switch(c){case fe.GROUP:var d=e(h);return d.substring(0,d.length-1);case fe.DATA_COMPARE:var y=f.field,g=f.operator;return`[`+y+a(e(g))+r(h)+`]`;case fe.DATA_BOOL:var p=f.operator,m=f.field;return`[`+e(p)+m+`]`;case fe.DATA_EXIST:return`[`+f.field+`]`;case fe.META_COMPARE:var w=f.operator;return`[[`+f.field+a(e(w))+r(h)+`]]`;case fe.STATE:return h;case fe.ID:return`#`+h;case fe.CLASS:return`.`+h;case fe.PARENT:case fe.CHILD:return i(f.parent,v)+a(`>`)+i(f.child,v);case fe.ANCESTOR:case fe.DESCENDANT:return i(f.ancestor,v)+` `+i(f.descendant,v);case fe.COMPOUND_SPLIT:var C=i(f.left,v),x=i(f.subject,v),T=i(f.right,v);return C+(C.length>0?` `:``)+x+T;case fe.TRUE:return``}},i=function(f,v){return f.checks.reduce(function(c,h,d){return c+(v===f&&d===0?`$`:``)+n(h,v)},``)},o=``,s=0;s1&&s=0&&(r=r.replace(`!`,``),v=!0),r.indexOf(`@`)>=0&&(r=r.replace(`@`,``),f=!0),(i||s||f)&&(u=!i&&!o?``:``+e,l=``+a),f&&(e=u=u.toLowerCase(),a=l=l.toLowerCase()),r){case`*=`:n=u.indexOf(l)>=0;break;case`$=`:n=u.indexOf(l,u.length-l.length)>=0;break;case`^=`:n=u.indexOf(l)===0;break;case`=`:n=e===a;break;case`>`:c=!0,n=e>a;break;case`>=`:c=!0,n=e>=a;break;case`<`:c=!0,n=e0;){var f=n.shift();e(f),i.add(f.id()),s&&a(n,i,f)}return t}function Jf(t,e,r){if(r.isParent())for(var a=r._private.children,n=0;n1&&arguments[1]!==void 0?arguments[1]:!0;return gs(this,t,e,Jf)};function jf(t,e,r){if(r.isChild()){var a=r._private.parent;e.has(a.id())||t.push(a)}}Jr.forEachUp=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return gs(this,t,e,jf)};function ep(t,e,r){jf(t,e,r),Jf(t,e,r)}Jr.forEachUpAndDown=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return gs(this,t,e,ep)};Jr.ancestors=Jr.parents;var Pa=ev={data:Oe.data({field:`data`,bindingEvent:`data`,allowBinding:!0,allowSetting:!0,settingEvent:`data`,settingTriggersEvent:!0,triggerFnName:`trigger`,allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:Oe.removeData({field:`data`,event:`data`,triggerFnName:`trigger`,triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:Oe.data({field:`scratch`,bindingEvent:`scratch`,allowBinding:!0,allowSetting:!0,settingEvent:`scratch`,settingTriggersEvent:!0,triggerFnName:`trigger`,allowGetting:!0,updateStyle:!0}),removeScratch:Oe.removeData({field:`scratch`,event:`scratch`,triggerFnName:`trigger`,triggerEvent:!0,updateStyle:!0}),rscratch:Oe.data({field:`rscratch`,allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:Oe.removeData({field:`rscratch`,triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}};var ev;Pa.attr=Pa.data;Pa.removeAttr=Pa.removeData;var tp=ev;var $n={};function Eo(t){return function(e){var r=this;if(e===void 0&&(e=!0),r.length!==0)if(r.isNode()&&!r.removed()){for(var a=0,n=r[0],i=n._private.edges,o=0;oe}),minIndegree:Nr(`indegree`,function(t,e){return te}),minOutdegree:Nr(`outdegree`,function(t,e){return te})});me($n,{totalDegree:function(e){for(var r=0,a=this.nodes(),n=0;n0,c=v;v&&(f=f[0]);var h=c?f.position():{x:0,y:0};r!==void 0?l.position(e,r+h[e]):i!==void 0&&l.position({x:i.x+h.x,y:i.y+h.y})}else{var d=a.position(),y=s?a.parent():null,g=y&&y.length>0,p=g;g&&(y=y[0]);var m=p?y.position():{x:0,y:0};return i={x:d.x-m.x,y:d.y-m.y},e===void 0?i:i[e]}else if(!o)return;return this}};Ot.modelPosition=Ot.point=Ot.position;Ot.modelPositions=Ot.points=Ot.positions;Ot.renderedPoint=Ot.renderedPosition;Ot.relativePoint=Ot.relativePosition;var rp=tv;var jr=function(e){switch(e){case`left`:case`right-inside`:return`left`;case`right`:case`left-inside`:return`right`;default:return`center`}};var ea=function(e){switch(e){case`top`:case`bottom-inside`:return`top`;case`bottom`:case`top-inside`:return`bottom`;default:return`center`}};var ap=function(e){switch(e){case`left`:return`right`;case`right`:return`left`;case`left-inside`:return`left`;case`right-inside`:return`right`;default:return`center`}};var Xr=gr={};var gr;gr.renderedBoundingBox=function(t){var e=this.boundingBox(t),r=this.cy(),a=r.zoom(),n=r.pan(),i=e.x1*a+n.x,o=e.x2*a+n.x,s=e.y1*a+n.y,u=e.y2*a+n.y;return{x1:i,x2:o,y1:s,y2:u,w:o-i,h:u-s}};gr.dirtyCompoundBoundsCache=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();return!e.styleEnabled()||!e.hasCompoundNodes()?this:(this.forEachUp(function(r){if(r.isParent()){var a=r._private;a.compoundBoundsClean=!1,a.bbCache=null,t||r.emitAndNotify(`bounds`)}}),this)};gr.updateCompoundBounds=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();if(!e.styleEnabled()||!e.hasCompoundNodes())return this;if(!t&&e.batching())return this;function r(o){if(!o.isParent())return;var s=o._private,u=o.children(),l=o.pstyle(`compound-sizing-wrt-labels`).value===`include`,f={width:{val:o.pstyle(`min-width`).pfValue,left:o.pstyle(`min-width-bias-left`),right:o.pstyle(`min-width-bias-right`)},height:{val:o.pstyle(`min-height`).pfValue,top:o.pstyle(`min-height-bias-top`),bottom:o.pstyle(`min-height-bias-bottom`)}},v=u.boundingBox({includeLabels:l,includeOverlays:!1,useCache:!1}),c=s.position;(v.w===0||v.h===0)&&(v={w:o.pstyle(`width`).pfValue,h:o.pstyle(`height`).pfValue},v.x1=c.x-v.w/2,v.x2=c.x+v.w/2,v.y1=c.y-v.h/2,v.y2=c.y+v.h/2);function h(S,B,k){var P=0,A=0,L=B+k;return S>0&&L>0&&(P=B/L*S,A=k/L*S),{biasDiff:P,biasComplementDiff:A}}function d(S,B,k,P){if(k.units===`%`)switch(P){case`width`:return S>0?k.pfValue*S:0;case`height`:return B>0?k.pfValue*B:0;case`average`:return S>0&&B>0?k.pfValue*(S+B)/2:0;case`min`:return S>0&&B>0?S>B?k.pfValue*B:k.pfValue*S:0;case`max`:return S>0&&B>0?S>B?k.pfValue*S:k.pfValue*B:0;default:return 0}else return k.units===`px`?k.pfValue:0}var y=f.width.left.value;f.width.left.units===`px`&&f.width.val>0&&(y=y*100/f.width.val);var g=f.width.right.value;f.width.right.units===`px`&&f.width.val>0&&(g=g*100/f.width.val);var p=f.height.top.value;f.height.top.units===`px`&&f.height.val>0&&(p=p*100/f.height.val);var m=f.height.bottom.value;f.height.bottom.units===`px`&&f.height.val>0&&(m=m*100/f.height.val);var b=h(f.width.val-v.w,y,g),w=b.biasDiff,E=b.biasComplementDiff,C=h(f.height.val-v.h,p,m),x=C.biasDiff,T=C.biasComplementDiff;s.autoPadding=d(v.w,v.h,o.pstyle(`padding`),o.pstyle(`padding-relative-to`).value),s.autoWidth=Math.max(v.w,f.width.val),c.x=(-w+v.x1+v.x2+E)/2,s.autoHeight=Math.max(v.h,f.height.val),c.y=(-x+v.y1+v.y2+T)/2}for(var a=0;ae.x2?n:e.x2,e.y1=ae.y2?i:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)};var er=function(e,r){return r==null?e:It(e,r.x1,r.y1,r.x2,r.y2)};var ca=function(e,r,a){return pt(e,r,a)};var tn=function(e,r,a){if(!r.cy().headless()){var n=r._private,i=n.rstyle,o=i.arrowWidth/2,s=r.pstyle(a+`-arrow-shape`).value,u,l;if(s!==`none`){a===`source`?(u=i.srcX,l=i.srcY):a===`target`?(u=i.tgtX,l=i.tgtY):(u=i.midX,l=i.midY);var f=n.arrowBounds=n.arrowBounds||{},v=f[a]=f[a]||{};v.x1=u-o,v.y1=l-o,v.x2=u+o,v.y2=l+o,v.w=v.x2-v.x1,v.h=v.y2-v.y1,fn(v,1),It(e,v.x1,v.y1,v.x2,v.y2)}}};var Co=function(e,r,a){if(!r.cy().headless()){var n;a?n=a+`-`:n=``;var i=r._private,o=i.rstyle;if(r.pstyle(n+`label`).strValue){var u=r.pstyle(`text-halign`),l=r.pstyle(`text-valign`),f=ca(o,`labelWidth`,a),v=ca(o,`labelHeight`,a),c=ca(o,`labelX`,a),h=ca(o,`labelY`,a),d=r.pstyle(n+`text-margin-x`).pfValue,y=r.pstyle(n+`text-margin-y`).pfValue,g=r.isEdge(),p=r.pstyle(n+`text-rotation`),m=r.pstyle(`text-outline-width`).pfValue,w=r.pstyle(`text-border-width`).pfValue/2,E=r.pstyle(`text-background-padding`).pfValue,C=2,x=v,T=f,S=T/2,B=x/2,k,P,A,L;if(g)k=c-S,P=c+S,A=h-B,L=h+B;else{switch(jr(u.value)){case`left`:k=c-T,P=c;break;case`center`:k=c-S,P=c+S;break;case`right`:k=c,P=c+T}switch(ea(l.value)){case`top`:A=h-x,L=h;break;case`center`:A=h-B,L=h+B;break;case`bottom`:A=h,L=h+x}}var O=d-Math.max(m,w)-E-C,N=d+Math.max(m,w)+E+C,I=y-Math.max(m,w)-E-C,R=y+Math.max(m,w)+E+C;k+=O,P+=N,A+=I,L+=R;var M=a||`main`,F=i.labelBounds,z=F[M]=F[M]||{};z.x1=k,z.y1=A,z.x2=P,z.y2=L,z.w=P-k,z.h=L-A,z.leftPad=O,z.rightPad=N,z.topPad=I,z.botPad=R;var q=g&&p.strValue===`autorotate`,X=p.pfValue!=null&&p.pfValue!==0;if(q||X){var J=q?ca(i.rstyle,`labelAngle`,a):p.pfValue,U=Math.cos(J),Q=Math.sin(J),j=(k+P)/2,ae=(A+L)/2;if(!g){switch(jr(u.value)){case`left`:j=P;break;case`right`:j=k}switch(ea(l.value)){case`top`:ae=L;break;case`bottom`:ae=A}}var Z=function(we,ye){return we=we-j,ye=ye-ae,{x:we*U-ye*Q+j,y:we*Q+ye*U+ae}},_=Z(k,A),G=Z(k,L),H=Z(P,A),K=Z(P,L);k=Math.min(_.x,G.x,H.x,K.x),P=Math.max(_.x,G.x,H.x,K.x),A=Math.min(_.y,G.y,H.y,K.y),L=Math.max(_.y,G.y,H.y,K.y)}var re=M+`Rot`,oe=F[re]=F[re]||{};oe.x1=k,oe.y1=A,oe.x2=P,oe.y2=L,oe.w=P-k,oe.h=L-A,It(e,k,A,P,L),It(i.labelBounds.all,k,A,P,L)}return e}};var yl=function(e,r){if(!r.cy().headless()){var a=r.pstyle(`outline-opacity`).value,o=r.pstyle(`outline-width`).value+r.pstyle(`outline-offset`).value;av(e,r,a,o,`outside`,o/2)}};var av=function(e,r,a,n,i,o){if(!(a===0||n<=0||i===`inside`)){var u=r.cy().renderer(),l=u.nodeShapes[u.getNodeShape(r)];if(l){var f=r.position(),v=f.x,c=f.y,h=r.width(),d=r.height();if(l.hasMiterBounds){i===`center`&&(n/=2);er(e,l.miterBounds(v,c,h,d,n))}else o!=null&&o>0&&vn(e,[o,o,o,o])}}};var np=function(e,r){if(!r.cy().headless()){var a=r.pstyle(`border-opacity`).value,n=r.pstyle(`border-width`).pfValue,i=r.pstyle(`border-position`).value;av(e,r,a,n,i)}};var ip=function(e,r){var a=e._private.cy,n=a.styleEnabled(),i=a.headless(),o=yt(),s=e._private,u=e.isNode(),l=e.isEdge(),f,v,c,h,d,y,g=s.rstyle,p=u&&n?e.pstyle(`bounds-expansion`).pfValue:[0],m=function(ke){return ke.pstyle(`display`).value!==`none`},b=!n||m(e)&&(!l||m(e.source())&&m(e.target()));if(b){var w=0,E=0;n&&r.includeOverlays&&(w=e.pstyle(`overlay-opacity`).value,w!==0&&(E=e.pstyle(`overlay-padding`).value));var C=0,x=0;n&&r.includeUnderlays&&(C=e.pstyle(`underlay-opacity`).value,C!==0&&(x=e.pstyle(`underlay-padding`).value));var T=Math.max(E,x),S=0,B=0;if(n&&(S=e.pstyle(`width`).pfValue,B=S/2),u&&r.includeNodes){var k=e.position();d=k.x,y=k.y;var A=e.outerWidth()/2,O=e.outerHeight()/2;f=d-A,v=d+A,c=y-O,h=y+O,It(o,f,c,v,h),n&&yl(o,e),n&&r.includeOutlines&&!i&&yl(o,e),n&&np(o,e)}else if(l&&r.includeEdges)if(n&&!i){var N=e.pstyle(`curve-style`).strValue;if(f=Math.min(g.srcX,g.midX,g.tgtX),v=Math.max(g.srcX,g.midX,g.tgtX),c=Math.min(g.srcY,g.midY,g.tgtY),h=Math.max(g.srcY,g.midY,g.tgtY),f-=B,v+=B,c-=B,h+=B,It(o,f,c,v,h),N===`haystack`){var I=g.haystackPts;if(I&&I.length===2){if(f=I[0].x,c=I[0].y,v=I[1].x,h=I[1].y,f>v){var R=f;f=v,v=R}if(c>h){var M=c;c=h,h=M}It(o,f-B,c-B,v+B,h+B)}}else if(N===`bezier`||N===`unbundled-bezier`||tr(N,`segments`)||tr(N,`taxi`)){var F;switch(N){case`bezier`:case`unbundled-bezier`:F=g.bezierPts;break;case`segments`:case`taxi`:case`round-segments`:case`round-taxi`:F=g.linePts}if(F!=null)for(var z=0;zv){var j=f;f=v,v=j}if(c>h){var ae=c;c=h,h=ae}f-=B,v+=B,c-=B,h+=B,It(o,f,c,v,h)}if(n&&r.includeEdges&&l&&(tn(o,e,`mid-source`),tn(o,e,`mid-target`),tn(o,e,`source`),tn(o,e,`target`)),n){if(e.pstyle(`ghost`).value===`yes`){var _=e.pstyle(`ghost-offset-x`).pfValue,G=e.pstyle(`ghost-offset-y`).pfValue;It(o,o.x1+_,o.y1+G,o.x2+_,o.y2+G)}}var H=s.bodyBounds=s.bodyBounds||{};ru(H,o),vn(H,p),fn(H,1),n&&(f=o.x1,v=o.x2,c=o.y1,h=o.y2,It(o,f-T,c-T,v+T,h+T));var K=s.overlayBounds=s.overlayBounds||{};ru(K,o),vn(K,p),fn(K,1);var re=s.labelBounds=s.labelBounds||{};re.all!=null?Vd(re.all):re.all=yt(),n&&r.includeLabels&&(r.includeMainLabels&&Co(o,e,null),l&&(r.includeSourceLabels&&Co(o,e,`source`),r.includeTargetLabels&&Co(o,e,`target`)))}return o.x1=Bt(o.x1),o.y1=Bt(o.y1),o.x2=Bt(o.x2),o.y2=Bt(o.y2),o.w=Bt(o.x2-o.x1),o.h=Bt(o.y2-o.y1),o.w>0&&o.h>0&&b&&(vn(o,p),fn(o,1)),o};var nv=function(e){var r=0,a=function(o){return(o?1:0)<0&&arguments[0]!==void 0?arguments[0]:wp,e=arguments.length>1?arguments[1]:void 0,r=0;r=0;s--)o(s);return this};vr.removeAllListeners=function(){return this.removeListener(`*`)};vr.emit=vr.trigger=function(t,e,r){var a=this.listeners,n=a.length;return this.emitting++,Fe(e)||(e=[e]),xp(this,function(i,o){r!=null&&(a=[{event:o.event,type:o.type,namespace:o.namespace,callback:r}],n=a.length);for(var s=function(){var f=a[u];if(f.type===o.type&&(!f.namespace||f.namespace===o.namespace||f.namespace===bp)&&i.eventMatches(i.context,f,o)){var v=[o];e!=null&&ld(v,e),i.beforeEmit(i.context,f,o),f.conf&&f.conf.one&&(i.listeners=i.listeners.filter(function(d){return d!==f}));var c=i.callbackContext(i.context,f,o),h=f.callback.apply(c,v);i.afterEmit(i.context,f,o),h===!1&&(o.stopPropagation(),o.preventDefault())}},u=0;u1&&!o){var s=this.length-1,u=this[s],l=u._private.data.id;this[s]=void 0,this[e]=u,i.set(l,{ele:u,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var r=this._private,a=e._private.data.id,i=r.map.get(a);if(!i)return this;var o=i.index;return this.unmergeAt(o),this},unmerge:function(e){var r=this._private.cy;if(!e)return this;if(e&&pe(e)){var a=e;e=r.mutableElements().filter(a)}for(var n=0;n=0;r--){var a=this[r];e(a)&&this.unmergeAt(r)}return this},map:function(e,r){for(var a=[],n=this,i=0;ia&&(a=u,n=s)}return{value:a,ele:n}},min:function(e,r){for(var a=1/0,n,i=this,o=0;o=0&&i`u`?`undefined`:je(Symbol))!=e&&je(Symbol.iterator)!=e&&(Dn[Symbol.iterator]=function(){var a=this,n={value:void 0,done:!1},i=0,o=this.length;return lf({next:function(){return i1&&arguments[1]!==void 0?arguments[1]:!0,a=this[0],n=a.cy();if(n.styleEnabled()&&a){a._private.styleDirty&&(a._private.styleDirty=!1,n.style().apply(a));return a._private.style[e]??(r?n.style().getDefaultProperty(e):null)}},numericStyle:function(e){var r=this[0];if(r.cy().styleEnabled()&&r){var a=r.pstyle(e);return a.pfValue!==void 0?a.pfValue:a.value}},numericStyleUnits:function(e){var r=this[0];if(r.cy().styleEnabled()&&r)return r.pstyle(e).units},renderedStyle:function(e){var r=this.cy();if(!r.styleEnabled())return this;var a=this[0];if(a)return r.style().getRenderedStyle(a,e)},style:function(e,r){var a=this.cy();if(!a.styleEnabled())return this;var n=!1,i=a.style();if(Me(e)){var o=e;i.applyBypass(this,o,n),this.emitAndNotify(`style`)}else if(pe(e))if(r===void 0){var s=this[0];return s?i.getStylePropertyValue(s,e):void 0}else i.applyBypass(this,e,r,n),this.emitAndNotify(`style`);else if(e===void 0){var u=this[0];return u?i.getRawStyle(u):void 0}return this},removeStyle:function(e){var r=this.cy();if(!r.styleEnabled())return this;var a=!1,n=r.style(),i=this;if(e===void 0)for(var o=0;o0&&e.push(f[0]),e.push(s[0])}return this.spawn(e,!0).filter(t)},`neighborhood`),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}});ct.neighbourhood=ct.neighborhood;ct.closedNeighbourhood=ct.closedNeighborhood;ct.openNeighbourhood=ct.openNeighborhood;me(ct,{source:Pt(function(e){var r=this[0],a;return r&&(a=r._private.source||r.cy().collection()),a&&e?a.filter(e):a},`source`),target:Pt(function(e){var r=this[0],a;return r&&(a=r._private.target||r.cy().collection()),a&&e?a.filter(e):a},`target`),sources:Bl({attr:`source`}),targets:Bl({attr:`target`})});function Bl(t){return function(r){for(var a=[],n=0;n0);return o},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}});ct.componentsOf=ct.components;var ut=function(e,r){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e===void 0){Ge(`A collection must have a reference to the core`);return}var i=new Ut,o=!1;if(!r)r=[];else if(r.length>0&&Me(r[0])&&!Oa(r[0])){o=!0;for(var s=[],u=new ta,l=0,f=r.length;l0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,a=r.cy(),n=a._private,i=[],o=[],s,u=0,l=r.length;u0){for(var M=s.length===r.length?r:new ut(a,s),F=0;F0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,a=[],n={},i=r._private.cy;function o(L){for(var O=L._private.edges,N=0;N0&&(t?k.emitAndNotify(`remove`):e&&k.emit(`remove`));for(var P=0;P0?P=L:k=L;while(Math.abs(A)>o&&++O=i?m(B,O):N===0?O:w(B,k,k+l)}var C=!1;function x(){C=!0,(t!==e||r!==a)&&b()}var T=function(k){return C||x(),t===e&&r===a?k:k===0?0:k===1?1:g(E(k),e,a)};T.getControlPoints=function(){return[{x:t,y:e},{x:r,y:a}]};var S=`generateBezier(`+[t,e,r,a]+`)`;return T.toString=function(){return S},T}var Mp=(function(){function t(a){return-a.tension*a.x-a.friction*a.v}function e(a,n,i){var o={x:a.x+i.dx*n,v:a.v+i.dv*n,tension:a.tension,friction:a.friction};return{dx:o.v,dv:t(o)}}function r(a,n){var i={dx:a.v,dv:t(a)},o=e(a,n*.5,i),s=e(a,n*.5,o),u=e(a,n,s),l=1/6*(i.dx+2*(o.dx+s.dx)+u.dx),f=1/6*(i.dv+2*(o.dv+s.dv)+u.dv);return a.x=a.x+l*n,a.v=a.v+f*n,a}return function a(n,i,o){var s={x:-1,v:0,tension:null,friction:null},u=[0],l=0,f=1/1e4,v=16/1e3,c,h,d;for(n=parseFloat(n)||500,i=parseFloat(i)||20,o=o||null,s.tension=n,s.friction=i,c=o!==null,c?(l=a(n,i),h=l/o*v):h=v;d=r(d||s,h),u.push(1+d.x),l+=16,Math.abs(d.x)>f&&Math.abs(d.v)>f;);return c?function(y){return u[y*(u.length-1)|0]}:l}})();var Ve=function(e,r,a,n){var i=Rp(e,r,a,n);return function(o,s,u){return o+(s-o)*i(u)}};var hn={linear:function(e,r,a){return e+(r-e)*a},ease:Ve(.25,.1,.25,1),"ease-in":Ve(.42,0,1,1),"ease-out":Ve(0,0,.58,1),"ease-in-out":Ve(.42,0,.58,1),"ease-in-sine":Ve(.47,0,.745,.715),"ease-out-sine":Ve(.39,.575,.565,1),"ease-in-out-sine":Ve(.445,.05,.55,.95),"ease-in-quad":Ve(.55,.085,.68,.53),"ease-out-quad":Ve(.25,.46,.45,.94),"ease-in-out-quad":Ve(.455,.03,.515,.955),"ease-in-cubic":Ve(.55,.055,.675,.19),"ease-out-cubic":Ve(.215,.61,.355,1),"ease-in-out-cubic":Ve(.645,.045,.355,1),"ease-in-quart":Ve(.895,.03,.685,.22),"ease-out-quart":Ve(.165,.84,.44,1),"ease-in-out-quart":Ve(.77,0,.175,1),"ease-in-quint":Ve(.755,.05,.855,.06),"ease-out-quint":Ve(.23,1,.32,1),"ease-in-out-quint":Ve(.86,0,.07,1),"ease-in-expo":Ve(.95,.05,.795,.035),"ease-out-expo":Ve(.19,1,.22,1),"ease-in-out-expo":Ve(1,0,0,1),"ease-in-circ":Ve(.6,.04,.98,.335),"ease-out-circ":Ve(.075,.82,.165,1),"ease-in-out-circ":Ve(.785,.135,.15,.86),spring:function(e,r,a){if(a===0)return hn.linear;var n=Mp(e,r,a);return function(i,o,s){return i+(o-i)*n(s)}},"cubic-bezier":Ve};function Rl(t,e,r,a,n){if(a===1||e===r)return r;var i=n(e,r,a);return t==null||((t.roundValue||t.color)&&(i=Math.round(i)),t.min!==void 0&&(i=Math.max(i,t.min)),t.max!==void 0&&(i=Math.min(i,t.max))),i}function Ml(t,e){return t.pfValue!=null||t.value!=null?t.pfValue!=null&&(e==null||e.type.units!==`%`)?t.pfValue:t.value:t}function zr(t,e,r,a,n){var i=n!=null?n.type:null;r<0?r=0:r>1&&(r=1);var o=Ml(t,n),s=Ml(e,n);if(ie(o)&&ie(s))return Rl(i,o,s,r,a);if(Fe(o)&&Fe(s)){for(var u=[],l=0;l0?(h===`spring`&&d.push(o.duration),o.easingImpl=hn[h].apply(null,d)):o.easingImpl=hn[h]}var y=o.easingImpl,g;if(o.duration===0?g=1:g=(r-u)/o.duration,o.applying&&(g=o.progress),g<0?g=0:g>1&&(g=1),o.delay==null){var p=o.startPosition,m=o.position;if(m&&n&&!t.locked()){var b={};ha(p.x,m.x)&&(b.x=zr(p.x,m.x,g,y)),ha(p.y,m.y)&&(b.y=zr(p.y,m.y,g,y)),t.position(b)}var w=o.startPan,E=o.pan,C=i.pan,x=E!=null&&a;x&&(ha(w.x,E.x)&&(C.x=zr(w.x,E.x,g,y)),ha(w.y,E.y)&&(C.y=zr(w.y,E.y,g,y)),t.emit(`pan`));var T=o.startZoom,S=o.zoom,B=S!=null&&a;B&&(ha(T,S)&&(i.zoom=Da(i.minZoom,zr(T,S,g,y),i.maxZoom)),t.emit(`zoom`)),(x||B)&&t.emit(`viewport`);var k=o.style;if(k&&k.length>0&&n){for(var P=0;P=0;x--){var T=C[x];T()}C.splice(0,C.length)},m=h.length-1;m>=0;m--){var b=h[m],w=b._private;if(w.stopped){h.splice(m,1),w.hooked=!1,w.playing=!1,w.started=!1,p(w.frames);continue}!w.playing&&!w.applying||(w.playing&&w.applying&&(w.applying=!1),w.started||Ip(f,b,t),Lp(f,b,t,v),w.applying&&(w.applying=!1),p(w.frames),w.step!=null&&w.step(t),b.completed()&&(h.splice(m,1),w.hooked=!1,w.playing=!1,w.started=!1,p(w.completes)),y=!0)}return!v&&h.length===0&&d.length===0&&a.push(f),y}for(var i=!1,o=0;o0?e.notify(`draw`,r):e.notify(`draw`)),r.unmerge(a),e.emit(`step`)}var Op={animate:Oe.animate(),animation:Oe.animation(),animated:Oe.animated(),clearQueue:Oe.clearQueue(),delay:Oe.delay(),delayAnimation:Oe.delayAnimation(),stop:Oe.stop(),addToAnimationPool:function(e){var r=this;r.styleEnabled()&&r._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,!e.styleEnabled())return;function r(){e._private.animationsRunning&&En(function(i){Ll(i,e),r()})}var a=e.renderer();a&&a.beforeRender?a.beforeRender(function(i,o){Ll(o,e)},a.beforeRenderPriorities.animations):r()}};var Np={qualifierCompare:function(e,r){return e==null||r==null?e==null&&r==null:e.sameText(r)},eventMatches:function(e,r,a){var n=r.qualifier;return n!=null?e!==a.target&&Oa(a.target)&&n.matches(a.target):!0},addEventFields:function(e,r){r.cy=e,r.target=e},callbackContext:function(e,r,a){return r.qualifier!=null?a.target:e}};var nn=function(e){return pe(e)?new lr(e):e};var gv={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new Hn(Np,this)),this},emitter:function(){return this._private.emitter},on:function(e,r,a){return this.emitter().on(e,nn(r),a),this},removeListener:function(e,r,a){return this.emitter().removeListener(e,nn(r),a),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,r,a){return this.emitter().one(e,nn(r),a),this},once:function(e,r,a){return this.emitter().one(e,nn(r),a),this},emit:function(e,r){return this.emitter().emit(e,r),this},emitAndNotify:function(e,r){return this.emit(e),this.notify(e,r),this}};Oe.eventAliasesOn(gv);var $o={png:function(e){var r=this._private.renderer;return e=e||{},r.png(e)},jpg:function(e){var r=this._private.renderer;return e=e||{},e.bg=e.bg||`#fff`,r.jpg(e)}};$o.jpeg=$o.jpg;var gn={layout:function(e){var r=this;if(e==null){Ge(`Layout options must be specified to make a layout`);return}if(e.name==null){Ge("A `name` must be specified to make a layout");return}var a=e.name,n=r.extension(`layout`,a);if(n==null){Ge("No such layout `"+a+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var i;pe(e.eles)?i=r.$(e.eles):i=e.eles!=null?e.eles:r.$();return new n(me({},e,{cy:r,eles:i}))}};gn.createLayout=gn.makeLayout=gn.layout;var zp={notify:function(e,r){var a=this._private;if(this.batching()){a.batchNotifications=a.batchNotifications||{};var n=a.batchNotifications[e]=a.batchNotifications[e]||this.collection();r!=null&&n.merge(r);return}if(a.notificationsEnabled){var i=this.renderer();this.destroyed()||!i||i.notify(e,r)}},notifications:function(e){var r=this._private;return e===void 0?r.notificationsEnabled:(r.notificationsEnabled=!!e,this)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var e=this._private;return e.batchCount??=0,e.batchCount===0&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(e.batchCount===0)return this;if(e.batchCount--,e.batchCount===0){e.batchStyleEles.updateStyle();var r=this.renderer();Object.keys(e.batchNotifications).forEach(function(a){var n=e.batchNotifications[a];n.empty()?r.notify(a):r.notify(a,n)})}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var r=this;return this.batch(function(){for(var a=Object.keys(e),n=0;n0;)r.removeChild(r.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(a){var n=a._private;n.rscratch={},n.rstyle={},n.animation.current=[],n.animation.queue=[]})},onRender:function(e){return this.on(`render`,e)},offRender:function(e){return this.off(`render`,e)}};Ho.invalidateDimensions=Ho.resize;var pn={collection:function(e,r){return pe(e)?this.$(e):Tt(e)?e.collection():Fe(e)?(r||(r={}),new ut(this,e,r.unique,r.removed)):new ut(this)},nodes:function(e){var r=this.$(function(a){return a.isNode()});return e?r.filter(e):r},edges:function(e){var r=this.$(function(a){return a.isEdge()});return e?r.filter(e):r},$:function(e){var r=this._private.elements;return e?r.filter(e):r.spawnSelf()},mutableElements:function(){return this._private.elements}};pn.elements=pn.filter=pn.$;var ot={};var xa=`t`;var Vp=`f`;ot.apply=function(t){for(var e=this,n=e._private.cy.collection(),i=0;i0;if(c||v&&h){var d=void 0;c&&h||c?d=l.properties:h&&(d=l.mappedProperties);for(var y=0;y1&&(w=1),s.color){var C=a.valueMin[0],x=a.valueMax[0],T=a.valueMin[1],S=a.valueMax[1],B=a.valueMin[2],k=a.valueMax[2],P=a.valueMin[3]==null?1:a.valueMin[3],A=a.valueMax[3]==null?1:a.valueMax[3],L=[Math.round(C+(x-C)*w),Math.round(T+(S-T)*w),Math.round(B+(k-B)*w),Math.round(P+(A-P)*w)];i={bypass:a.bypass,name:a.name,value:L,strValue:`rgb(`+L[0]+`, `+L[1]+`, `+L[2]+`)`}}else if(s.number){var O=a.valueMin+(a.valueMax-a.valueMin)*w;i=this.parse(a.name,O,a.bypass,c)}else return!1;if(!i)return y(),!1;i.mapping=a,a=i;break;case o.data:for(var N=a.field.split(`.`),I=v.data,R=0;R0&&i>0){for(var s={},u=!1,l=0;l0?t.delayAnimation(o).play().promise().then(b):b()}).then(function(){return t.animation({style:s,duration:i,easing:t.pstyle(`transition-timing-function`).value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(t,n),t.emitAndNotify(`style`),a.transitioning=!1})}else a.transitioning&&(this.removeBypasses(t,n),t.emitAndNotify(`style`),a.transitioning=!1)};ot.checkTrigger=function(t,e,r,a,n,i){var o=this.properties[e],s=n(o);t.removed()||s!=null&&s(r,a,t)&&i(o)};ot.checkZOrderTrigger=function(t,e,r,a){var n=this;this.checkTrigger(t,e,r,a,function(i){return i.triggersZOrder},function(){n._private.cy.notify(`zorder`,t)})};ot.checkBoundsTrigger=function(t,e,r,a){this.checkTrigger(t,e,r,a,function(n){return n.triggersBounds},function(n){t.dirtyCompoundBoundsCache(),t.dirtyBoundingBoxCache()})};ot.checkConnectedEdgesBoundsTrigger=function(t,e,r,a){this.checkTrigger(t,e,r,a,function(n){return n.triggersBoundsOfConnectedEdges},function(n){t.connectedEdges().forEach(function(i){i.dirtyBoundingBoxCache()})})};ot.checkParallelEdgesBoundsTrigger=function(t,e,r,a){this.checkTrigger(t,e,r,a,function(n){return n.triggersBoundsOfParallelEdges},function(n){t.parallelEdges().forEach(function(i){i.dirtyBoundingBoxCache()})})};ot.checkTriggers=function(t,e,r,a){t.dirtyStyleCache(),this.checkZOrderTrigger(t,e,r,a),this.checkBoundsTrigger(t,e,r,a),this.checkConnectedEdgesBoundsTrigger(t,e,r,a),this.checkParallelEdgesBoundsTrigger(t,e,r,a)};var Ga={};Ga.applyBypass=function(t,e,r,a){var n=this,i=[],o=!0;if(e===`*`||e===`**`){if(r!==void 0)for(var s=0;sn.length?a=a.substr(n.length):a=``}function u(){i.length>o.length?i=i.substr(o.length):i=``}for(;;){if(a.match(/^\s*$/))break;var f=a.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!f){Ne(`Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: `+a);break}n=f[0];var v=f[1];if(v!==`core`){if(new lr(v).invalid){Ne(`Skipping parsing of block: Invalid selector found in string stylesheet: `+v),s();continue}}var h=f[2],d=!1;i=h;for(var y=[];;){if(i.match(/^\s*$/))break;var p=i.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!p){Ne(`Skipping parsing of block: Invalid formatting of style property and value definitions found in:`+h),d=!0;break}o=p[0];var m=p[1],b=p[2];if(!e.properties[m]){Ne(`Skipping property: Invalid property name in: `+o),u();continue}if(!r.parse(m,b)){Ne(`Skipping property: Invalid property definition in: `+o),u();continue}y.push({name:m,val:b}),u()}if(d){s();break}r.selector(v);for(var C=0;C=7&&e[0]===`d`&&(f=new RegExp(s.data.regex).exec(e))){if(r)return!1;var c=s.data;return{name:t,value:f,strValue:``+e,mapped:c,field:f[1],bypass:r}}else if(e.length>=10&&e[0]===`m`&&(v=new RegExp(s.mapData.regex).exec(e))){if(r||l.multiple)return!1;var h=s.mapData;if(!(l.color||l.number))return!1;var d=this.parse(t,v[4]);if(!d||d.mapped)return!1;var y=this.parse(t,v[5]);if(!y||y.mapped)return!1;if(d.pfValue===y.pfValue||d.strValue===y.strValue)return Ne("`"+t+`: `+e+"` is not a valid mapper because the output range is zero; converting to `"+t+`: `+d.strValue+"`"),this.parse(t,d.strValue);if(l.color){var g=d.value,p=y.value;if(g[0]===p[0]&&g[1]===p[1]&&g[2]===p[2]&&(g[3]===p[3]||(g[3]==null||g[3]===1)&&(p[3]==null||p[3]===1)))return!1}return{name:t,value:v,strValue:``+e,mapped:h,field:v[1],fieldMin:parseFloat(v[2]),fieldMax:parseFloat(v[3]),valueMin:d.value,valueMax:y.value,bypass:r}}}if(l.multiple&&a!==`multiple`){var b;if(u?b=e.split(/\s+/):Fe(e)?b=e:b=[e],l.evenMultiple&&b.length%2!==0)return null;for(var w=[],E=[],C=[],x=``,T=!1,S=0;S0?` `:``)+B.strValue}return l.validate&&!l.validate(w,E)?null:l.singleEnum&&T?w.length===1&&pe(w[0])?{name:t,value:w[0],strValue:w[0],bypass:r}:null:{name:t,value:w,pfValue:C,strValue:x,bypass:r,units:E}}var k=function(){for(var Z=0;Zl.max||l.strictMax&&e===l.max))return null;var N={name:t,value:e,strValue:``+e+(P||``),units:P,bypass:r};return l.unitless||P!==`px`&&P!==`em`?N.pfValue=e:N.pfValue=P===`px`||!P?e:this.getEmSizeInPixels()*e,(P===`ms`||P===`s`)&&(N.pfValue=P===`ms`?e:1e3*e),(P===`deg`||P===`rad`)&&(N.pfValue=P===`rad`?e:Od(e)),P===`%`&&(N.pfValue=e/100),N}else if(l.propList){var I=[],R=``+e;if(R!==`none`){for(var M=R.split(/\s*,\s*|\s+/),F=0;F0&&s>0&&!isNaN(a.w)&&!isNaN(a.h)&&a.w>0&&a.h>0){u=Math.min((o-2*r)/a.w,(s-2*r)/a.h),u=u>this._private.maxZoom?this._private.maxZoom:u,u=u=a.minZoom&&(a.maxZoom=r),this},minZoom:function(e){return e===void 0?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return e===void 0?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var r=this._private,a=r.pan,n=r.zoom,i,o,s=!1;if(r.zoomingEnabled||(s=!0),ie(e)?o=e:Me(e)&&(o=e.level,e.position!=null?i=zn(e.position,n,a):e.renderedPosition!=null&&(i=e.renderedPosition),i!=null&&!r.panningEnabled&&(s=!0)),o=o>r.maxZoom?r.maxZoom:o,o=or.maxZoom||!r.zoomingEnabled?o=!0:(r.zoom=u,i.push(`zoom`))}if(n&&(!o||!e.cancelOnFailedZoom)&&r.panningEnabled){var l=e.pan;ie(l.x)&&(r.pan.x=l.x,s=!1),ie(l.y)&&(r.pan.y=l.y,s=!1),s||i.push(`pan`)}return i.length>0&&(i.push(`viewport`),this.emit(i.join(` `)),this.notify(`viewport`)),this},center:function(e){var r=this.getCenterPan(e);return r&&(this._private.pan=r,this.emit(`pan viewport`),this.notify(`viewport`)),this},getCenterPan:function(e,r){if(this._private.panningEnabled){if(pe(e)){var a=e;e=this.mutableElements().filter(a)}else Tt(e)||(e=this.mutableElements());if(e.length!==0){var n=e.boundingBox(),i=this.width(),o=this.height();r=r===void 0?this._private.zoom:r;return{x:(i-r*(n.x1+n.x2))/2,y:(o-r*(n.y1+n.y2))/2}}}},reset:function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e=this._private,r=e.container,a=this;return e.sizeCache=e.sizeCache||(r?(function(){var n=a.window().getComputedStyle(r),i=function(s){return parseFloat(n.getPropertyValue(s))};return{width:r.clientWidth-i(`padding-left`)-i(`padding-right`),height:r.clientHeight-i(`padding-top`)-i(`padding-bottom`)}})():{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,r=this._private.zoom,a=this.renderedExtent(),n={x1:(a.x1-e.x)/r,x2:(a.x2-e.x)/r,y1:(a.y1-e.y)/r,y2:(a.y2-e.y)/r};return n.w=n.x2-n.x1,n.h=n.y2-n.y1,n},renderedExtent:function(){var e=this.width(),r=this.height();return{x1:0,y1:0,x2:e,y2:r,w:e,h:r}},multiClickDebounceTime:function(e){if(e)this._private.multiClickDebounceTime=e;else return this._private.multiClickDebounceTime;return this}};Ar.centre=Ar.center;Ar.autolockNodes=Ar.autolock;Ar.autoungrabifyNodes=Ar.autoungrabify;var Ra={data:Oe.data({field:`data`,bindingEvent:`data`,allowBinding:!0,allowSetting:!0,settingEvent:`data`,settingTriggersEvent:!0,triggerFnName:`trigger`,allowGetting:!0,updateStyle:!0}),removeData:Oe.removeData({field:`data`,event:`data`,triggerFnName:`trigger`,triggerEvent:!0,updateStyle:!0}),scratch:Oe.data({field:`scratch`,bindingEvent:`scratch`,allowBinding:!0,allowSetting:!0,settingEvent:`scratch`,settingTriggersEvent:!0,triggerFnName:`trigger`,allowGetting:!0,updateStyle:!0}),removeScratch:Oe.removeData({field:`scratch`,event:`scratch`,triggerFnName:`trigger`,triggerEvent:!0,updateStyle:!0})};Ra.attr=Ra.data;Ra.removeAttr=Ra.removeData;var Ma=function(e){var r=this;e=me({},e);var a=e.container;a&&!xn(a)&&xn(a[0])&&(a=a[0]);var n=a?a._cyreg:null;n=n||{},n&&n.cy&&(n.cy.destroy(),n={});var i=n.readies=n.readies||[];a&&(a._cyreg=n),n.cy=r;var o=Qe!==void 0&&a!==void 0&&!e.headless,s=e;s.layout=me({name:o?`grid`:`null`},s.layout),s.renderer=me({name:o?`canvas`:`null`},s.renderer);var u=function(d,y,g){return y!==void 0?y:g!==void 0?g:d},l=this._private={container:a,ready:!1,options:s,elements:new ut(this),listeners:[],aniEles:new ut(this),data:s.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:u(!0,s.zoomingEnabled),userZoomingEnabled:u(!0,s.userZoomingEnabled),panningEnabled:u(!0,s.panningEnabled),userPanningEnabled:u(!0,s.userPanningEnabled),boxSelectionEnabled:u(!0,s.boxSelectionEnabled),autolock:u(!1,s.autolock,s.autolockNodes),autoungrabify:u(!1,s.autoungrabify,s.autoungrabifyNodes),autounselectify:u(!1,s.autounselectify),styleEnabled:s.styleEnabled===void 0?o:s.styleEnabled,zoom:ie(s.zoom)?s.zoom:1,pan:{x:Me(s.pan)&&ie(s.pan.x)?s.pan.x:0,y:Me(s.pan)&&ie(s.pan.y)?s.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:u(250,s.multiClickDebounceTime)};this.createEmitter(),this.selectionType(s.selectionType),this.zoomRange({min:s.minZoom,max:s.maxZoom});var f=function(d,y){if(d.some(Bc))return ra.all(d).then(y);y(d)};l.styleEnabled&&r.setStyle([]);var v=me({},s,s.renderer);r.initRenderer(v);var c=function(d,y,g){r.notifications(!1);var p=r.mutableElements();p.length>0&&p.remove(),d!=null&&(Me(d)||Fe(d))&&r.add(d),r.one(`layoutready`,function(b){r.notifications(!0),r.emit(b),r.one(`load`,y),r.emitAndNotify(`load`)}).one(`layoutstop`,function(){r.one(`done`,g),r.emit(`done`)});var m=me({},r._private.options.layout);m.eles=r.elements(),r.layout(m).run()};f([s.style,s.elements],function(h){var d=h[0],y=h[1];l.styleEnabled&&r.style().append(d),c(y,function(){r.startAnimationLoop(),l.ready=!0,$e(s.ready)&&r.on(`ready`,s.ready);for(var g=0;g0,s=!!t.boundingBox,u=yt(s?t.boundingBox:structuredClone(e.extent())),l;if(Tt(t.roots))l=t.roots;else if(Fe(t.roots)){for(var f=[],v=0;v0;){var L=A(),O=S(L,k);if(O)L.outgoers().filter(function(he){return he.isNode()&&r.has(he)}).forEach(P);else if(O===null){Ne("Detected double maximal shift for node `"+L.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}var N=0;if(t.avoidOverlap)for(var I=0;I0&&p[0].length<=3?be/2:0),Be=2*Math.PI/p[ge].length*Ee;return ge===0&&p[0].length===1&&(Te=1),{x:H.x+Te*Math.cos(Be),y:H.y+Te*Math.sin(Be)}}else{var Ae=p[ge].length,Le=Math.max(Ae===1?0:s?(u.w-t.padding*2-K.w)/((t.grid?oe:Ae)-1):(u.w-t.padding*2-K.w)/((t.grid?oe:Ae)+1),N);return{x:H.x+(Ee+1-(Ae+1)/2)*Le,y:H.y+(ge+1-(U+1)/2)*re}}},we={downward:0,leftward:90,upward:180,rightward:-90};Object.keys(we).indexOf(t.direction)===-1&&Ge(`Invalid direction '`.concat(t.direction,`' specified for breadthfirst layout. Valid values are: `).concat(Object.keys(we).join(`, `)));var ye=function(ne){return ad(ke(ne),u,we[t.direction])};return r.nodes().layoutPositions(this,t,ye),this};var Hp={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function yv(t){this.options=me({},Hp,t)}yv.prototype.run=function(){var t=this.options,e=t,r=t.cy,a=e.eles,n=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,i=a.nodes().not(`:parent`);e.sort&&(i=i.sort(e.sort));for(var o=yt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),s={x:o.x1+o.w/2,y:o.y1+o.h/2},l=(e.sweep===void 0?2*Math.PI-2*Math.PI/i.length:e.sweep)/Math.max(1,i.length-1),f,v=0,c=0;c1&&e.avoidOverlap){v*=1.75;var p=Math.cos(l)-Math.cos(0),m=Math.sin(l)-Math.sin(0),b=Math.sqrt(v*v/(p*p+m*m));f=Math.max(b,f)}var w=function(C,x){var T=e.startAngle+x*l*(n?1:-1),S=f*Math.cos(T),B=f*Math.sin(T);return{x:s.x+S,y:s.y+B}};return a.nodes().layoutPositions(this,e,w),this};var Wp={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function mv(t){this.options=me({},Wp,t)}mv.prototype.run=function(){for(var t=this.options,e=t,r=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,a=t.cy,n=e.eles,i=n.nodes().not(`:parent`),o=yt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:a.width(),h:a.height()}),s={x:o.x1+o.w/2,y:o.y1+o.h/2},u=[],l=0,f=0;f0)Math.abs(m[0].value-w.value)>=g&&(m=[],p.push(m));m.push(w)}var C=l+e.minNodeSpacing;if(!e.avoidOverlap){var x=p.length>0&&p[0].length>1,S=(Math.min(o.w,o.h)/2-C)/(p.length+x?1:0);C=Math.min(C,S)}for(var B=0,k=0;k1&&e.avoidOverlap){var O=Math.cos(L)-Math.cos(0),N=Math.sin(L)-Math.sin(0),I=Math.sqrt(C*C/(O*O+N*N));B=Math.max(I,B)}P.r=B,B+=C}if(e.equidistant){for(var R=0,M=0,F=0;F=t.numIter||(Jp(a,t),a.temperature=a.temperature*t.coolingFactor,a.temperature=t.animationThreshold&&i(),En(f)};f()}else{for(;l;)l=o(u),u++;Nl(a,t),s()}return this};Xn.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit(`layoutstop`),this};Xn.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var Kp=function(e,r,a){for(var n=a.eles.edges(),i=a.eles.nodes(),o=yt(a.boundingBox?a.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),s={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:i.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:n.size(),temperature:a.initialTemp,clientWidth:o.w,clientHeight:o.h,boundingBox:o},u=a.eles.components(),l={},f=0;f0){s.graphSet.push(T);for(var f=0;fn.count?0:n.graph};var bv=function(e,r,a,n){var i=n.graphSet[a];if(-10)var v=n.nodeOverlap*f,c=Math.sqrt(s*s+u*u),h=v*s/c,d=v*u/c;else var y=Pn(e,s,u),g=Pn(r,-1*s,-1*u),p=g.x-y.x,m=g.y-y.y,b=p*p+m*m,c=Math.sqrt(b),v=(e.nodeRepulsion+r.nodeRepulsion)/b,h=v*p/c,d=v*m/c;e.isLocked||(e.offsetX-=h,e.offsetY-=d),r.isLocked||(r.offsetX+=h,r.offsetY+=d)}};var ty=function(e,r,a,n){if(a>0)var i=e.maxX-r.minX;else var i=r.maxX-e.minX;if(n>0)var o=e.maxY-r.minY;else var o=r.maxY-e.minY;return i>=0&&o>=0?Math.sqrt(i*i+o*o):0};var Pn=function(e,r,a){var n=e.positionX,i=e.positionY,o=e.height||1,s=e.width||1,u=a/r,l=o/s,f={};return r===0&&0a?(f.x=n,f.y=i+o/2,f):0r&&-1*l<=u&&u<=l?(f.x=n-s/2,f.y=i-s*a/2/r,f):0=l)?(f.x=n+o*r/2/a,f.y=i+o/2,f):(0>a&&(u<=-1*l||u>=l)&&(f.x=n-o*r/2/a,f.y=i-o/2),f)};var ry=function(e,r){for(var a=0;aa){var g=r.gravity*h/y,p=r.gravity*d/y;c.offsetX+=g,c.offsetY+=p}}}}};var ny=function(e,r){var a=[],n=0,i=-1;for(a.push.apply(a,e.graphSet[0]),i+=e.graphSet[0].length;n<=i;){var o=a[n++],s=e.idToIndex[o],u=e.layoutNodes[s],l=u.children;if(0a)var i={x:a*e/n,y:a*r/n};else var i={x:e,y:r};return i};var xv=function(e,r){var a=e.parentId;if(a!=null){var n=r.layoutNodes[r.idToIndex[a]],i=!1;if((n.maxX==null||e.maxX+n.padRight>n.maxX)&&(n.maxX=e.maxX+n.padRight,i=!0),(n.minX==null||e.minX-n.padLeftn.maxY)&&(n.maxY=e.maxY+n.padBottom,i=!0),(n.minY==null||e.minY-n.padTopp&&(d+=g+r.componentSpacing,h=0,y=0,g=0)}}};var sy={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function Ev(t){this.options=me({},sy,t)}Ev.prototype.run=function(){var t=this.options,e=t,r=t.cy,a=e.eles,n=a.nodes().not(`:parent`);e.sort&&(n=n.sort(e.sort));var i=yt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(i.h===0||i.w===0)a.nodes().layoutPositions(this,e,function(X){return{x:i.x1,y:i.y1}});else{var o=n.size(),s=Math.sqrt(o*i.h/i.w),u=Math.round(s),l=Math.round(i.w/i.h*s),f=function(J){if(J==null)return Math.min(u,l);Math.min(u,l)==u?u=J:l=J},v=function(J){if(J==null)return Math.max(u,l);Math.max(u,l)==u?u=J:l=J},c=e.rows,h=e.cols!=null?e.cols:e.columns;if(c!=null&&h!=null)u=c,l=h;else if(c!=null&&h==null)u=c,l=Math.ceil(o/u);else if(c==null&&h!=null)l=h,u=Math.ceil(o/l);else if(l*u>o){var d=f(),y=v();(d-1)*y>=o?f(d-1):(y-1)*d>=o&&v(y-1)}else for(;l*u=o?v(p+1):f(g+1)}var m=i.w/l,b=i.h/u;if(e.condense&&(m=0,b=0),e.avoidOverlap)for(var w=0;w=l&&(O=0,L++)},I={},R=0;R(O=Xd(t,e,N[I],N[I+1],N[I+2],N[I+3])))return g(x,O),!0}else if(S.edgeType===`bezier`||S.edgeType===`multibezier`||S.edgeType===`self`||S.edgeType===`compound`){for(var N=S.allpts,I=0;I+5(O=Yd(t,e,N[I],N[I+1],N[I+2],N[I+3],N[I+4],N[I+5])))return g(x,O),!0}for(var R=R||T.source,M=M||T.target,F=n.getArrowWidth(B,k),z=[{name:`source`,x:S.arrowStartX,y:S.arrowStartY,angle:S.srcArrowAngle},{name:`target`,x:S.arrowEndX,y:S.arrowEndY,angle:S.tgtArrowAngle},{name:`mid-source`,x:S.midX,y:S.midY,angle:S.midsrcArrowAngle},{name:`mid-target`,x:S.midX,y:S.midY,angle:S.midtgtArrowAngle}],I=0;I0&&(p(R),p(M))}function b(x,T,S){return pt(x,T,S)}function w(x,T){var S=x._private,B=c,k;T?k=T+`-`:k=``,x.boundingBox();var P=S.labelBounds[T||`main`],A=x.pstyle(k+`label`).value;if(!(!(x.pstyle(`text-events`).strValue===`yes`)||!A)){var O=b(S.rscratch,`labelX`,T),N=b(S.rscratch,`labelY`,T),I=b(S.rscratch,`labelAngle`,T),R=x.pstyle(k+`text-margin-x`).pfValue,M=x.pstyle(k+`text-margin-y`).pfValue,F=P.x1-B-R,z=P.x2+B-R,q=P.y1-B-M,X=P.y2+B-M;if(I){var J=Math.cos(I),U=Math.sin(I),Q=function(K,re){return K=K-O,re=re-N,{x:K*J-re*U+O,y:K*U+re*J+N}},j=Q(F,q),ae=Q(F,X),Z=Q(z,q),_=Q(z,X);if(Et(t,e,[j.x+R,j.y+M,Z.x+R,Z.y+M,_.x+R,_.y+M,ae.x+R,ae.y+M]))return g(x),!0}else if(rr(P,t,e))return g(x),!0}}for(var E=o.length-1;E>=0;E--){var C=o[E];C.isNode()?p(C)||w(C):m(C)||w(C)||w(C,`source`)||w(C,`target`)}return s};Mr.getAllInBox=function(t,e,r,a){var n=this.getCachedZSortedEles().interactive,o=2/this.cy.zoom(),s=[],u=Math.min(t,r),l=Math.max(t,r),f=Math.min(e,a),v=Math.max(e,a);t=u,r=l,e=f,a=v;var c=yt({x1:t,y1:e,x2:r,y2:a}),h=[{x:c.x1,y:c.y1},{x:c.x2,y:c.y1},{x:c.x2,y:c.y2},{x:c.x1,y:c.y2}],d=[[h[0],h[1]],[h[1],h[2]],[h[2],h[3]],[h[3],h[0]]];function y(K,re,oe){return pt(K,re,oe)}function g(K,re){var oe=K._private,ke=o,we=``;K.boundingBox();var ye=oe.labelBounds.main;if(!ye)return null;var he=y(oe.rscratch,`labelX`,re),ne=y(oe.rscratch,`labelY`,re),ve=y(oe.rscratch,`labelAngle`,re),ge=K.pstyle(we+`text-margin-x`).pfValue,Ee=K.pstyle(we+`text-margin-y`).pfValue,be=ye.x1-ke-ge,Te=ye.x2+ke-ge,Be=ye.y1-ke-Ee,Ae=ye.y2+ke-Ee;if(ve){var Le=Math.cos(ve),ee=Math.sin(ve),D=function(W,$){return W=W-he,$=$-ne,{x:W*Le-$*ee+he,y:W*ee+$*Le+ne}};return[D(be,Be),D(Te,Be),D(Te,Ae),D(be,Ae)]}else return[{x:be,y:Be},{x:Te,y:Be},{x:Te,y:Ae},{x:be,y:Ae}]}function p(K,re,oe,ke){function we(ye,he,ne){return(ne.y-ye.y)*(he.x-ye.x)>(he.y-ye.y)*(ne.x-ye.x)}return we(K,oe,ke)!==we(re,oe,ke)&&we(K,re,oe)!==we(K,re,ke)}for(var m=0;m0?-(Math.PI-e.ang):Math.PI+e.ang};var dy=function(e,r,a,n,i){if(e!==_l?Gl(r,e,Vt):cy(Dt,Vt),Gl(r,a,Dt),Vl=Vt.nx*Dt.ny-Vt.ny*Dt.nx,ql=Vt.nx*Dt.nx-Vt.ny*-Dt.ny,Wt=Math.asin(Math.max(-1,Math.min(1,Vl))),Math.abs(Wt)<1e-6){Wo=r.x,Uo=r.y,Cr=Vr=0;return}Sr=1,yn=!1,ql<0?Wt<0?Wt=Math.PI+Wt:(Wt=Math.PI-Wt,Sr=-1,yn=!0):Wt>0&&(Sr=-1,yn=!0),r.radius!==void 0?Vr=r.radius:Vr=n,br=Wt/2,on=Math.min(Vt.len/2,Dt.len/2),i?(zt=Math.abs(Math.cos(br)*Vr/Math.sin(br)),zt>on?(zt=on,Cr=Math.abs(zt*Math.sin(br)/Math.cos(br))):Cr=Vr):(zt=Math.min(on,Vr),Cr=Math.abs(zt*Math.sin(br)/Math.cos(br))),Ko=r.x+Dt.nx*zt,Yo=r.y+Dt.ny*zt,Wo=Ko-Dt.ny*Cr*Sr,Uo=Yo+Dt.nx*Cr*Sr,kv=r.x+Vt.nx*zt,Dv=r.y+Vt.ny*zt,_l=r};function Bv(t,e){e.radius===0?t.lineTo(e.cx,e.cy):t.arc(e.cx,e.cy,e.radius,e.startAngle,e.endAngle,e.counterClockwise)}function xs(t,e,r,a){var n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;return a===0||e.radius===0?{cx:e.x,cy:e.y,radius:0,startX:e.x,startY:e.y,stopX:e.x,stopY:e.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(dy(t,e,r,a,n),{cx:Wo,cy:Uo,radius:Cr,startX:kv,startY:Dv,stopX:Ko,stopY:Yo,startAngle:Vt.ang+Math.PI/2*Sr,endAngle:Dt.ang-Math.PI/2*Sr,counterClockwise:yn})}var La=.01;var hy=Math.sqrt(2*La);var ht={};ht.findMidptPtsEtc=function(t,e){var r=e.posPts,a=e.intersectionPts,n=e.vectorNormInverse,i,o=t.pstyle(`source-endpoint`),s=t.pstyle(`target-endpoint`),u=o.units!=null&&s.units!=null,l=function(E,C,x,T){var S=T-C,B=x-E,k=Math.sqrt(B*B+S*S);return{x:-S/k,y:B/k}};switch(t.pstyle(`edge-distances`).value){case`node-position`:i=r;break;case`intersection`:i=a;break;case`endpoints`:if(u){var c=Ye(this.manualEndptToPx(t.source()[0],o),2),h=c[0],d=c[1],g=Ye(this.manualEndptToPx(t.target()[0],s),2),p=g[0],m=g[1],b={x1:h,y1:d,x2:p,y2:m};n=l(h,d,p,m),i=b}else Ne(`Edge `.concat(t.id(),` has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).`)),i=a}return{midptPts:i,vectorNormInverse:n}};ht.findHaystackPoints=function(t){for(var e=0;e0?Math.max($-Y,0):Math.min($+Y,0)},A=P(B,T),L=P(k,S),O=!1;m===l?p=Math.abs(A)>Math.abs(L)?n:a:m===u||m===s?(p=a,O=!0):(m===i||m===o)&&(p=n,O=!0);var N=p===a,I=N?L:A,R=N?k:B,M=us(R),F=!1;!(O&&(w||C))&&(m===s&&R<0||m===u&&R>0||m===i&&R>0||m===o&&R<0)&&(M*=-1,I=M*Math.abs(I),F=!0);var z;if(w)z=(E<0?1+E:E)*I;else z=(E<0?I:0)+E*M;var J=function($){return Math.abs($)=Math.abs(I)},U=J(z),Q=J(Math.abs(I)-Math.abs(z));if((U||Q)&&!F)if(N){var ae=Math.abs(R)<=c/2,Z=Math.abs(B)<=h/2;if(ae){var _=(f.x1+f.x2)/2;r.segpts=[_,f.y1,_,f.y2]}else if(Z){var K=(f.y1+f.y2)/2;r.segpts=[f.x1,K,f.x2,K]}else r.segpts=[f.x1,f.y2]}else{var ke=Math.abs(R)<=v/2,we=Math.abs(k)<=d/2;if(ke){var ye=(f.y1+f.y2)/2;r.segpts=[f.x1,ye,f.x2,ye]}else if(we){var ve=(f.x1+f.x2)/2;r.segpts=[ve,f.y1,ve,f.y2]}else r.segpts=[f.x2,f.y1]}else if(N){var be=f.y1+z+(g?c/2*M:0);r.segpts=[f.x1,be,f.x2,be]}else{var Ae=f.x1+z+(g?v/2*M:0);r.segpts=[Ae,f.y1,Ae,f.y2]}if(r.isRound){var D=t.pstyle(`taxi-radius`).value,V=t.pstyle(`radius-type`).value[0]===`arc-radius`;r.radii=new Array(r.segpts.length/2).fill(D),r.isArcRadius=new Array(r.segpts.length/2).fill(V)}};ht.tryToCorrectInvalidPoints=function(t,e){var r=t._private.rscratch;if(r.edgeType===`bezier`){var a=e.srcPos,n=e.tgtPos,i=e.srcW,o=e.srcH,s=e.tgtW,u=e.tgtH,l=e.srcShape,f=e.tgtShape,v=e.srcCornerRadius,c=e.tgtCornerRadius,h=e.srcRs,d=e.tgtRs,y=!ie(r.startX)||!ie(r.startY),g=!ie(r.arrowStartX)||!ie(r.arrowStartY),p=!ie(r.endX)||!ie(r.endY),m=!ie(r.arrowEndX)||!ie(r.arrowEndY),E=3*(this.getArrowWidth(t.pstyle(`width`).pfValue,t.pstyle(`arrow-scale`).value)*this.arrowShapeWidth),C=Br({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.startX,y:r.startY}),x=CR.poolIndex()){var M=I;I=R,R=M}var F=A.srcPos=I.position(),z=A.tgtPos=R.position(),q=A.srcW=I.outerWidth(),X=A.srcH=I.outerHeight(),J=A.tgtW=R.outerWidth(),U=A.tgtH=R.outerHeight(),Q=A.srcShape=r.nodeShapes[e.getNodeShape(I)],j=A.tgtShape=r.nodeShapes[e.getNodeShape(R)],ae=A.srcCornerRadius=I.pstyle(`corner-radius`).value===`auto`?`auto`:I.pstyle(`corner-radius`).pfValue,Z=A.tgtCornerRadius=R.pstyle(`corner-radius`).value===`auto`?`auto`:R.pstyle(`corner-radius`).pfValue,_=A.tgtRs=R._private.rscratch,G=A.srcRs=I._private.rscratch;A.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var H=0;H=hy||(Be=Math.sqrt(Math.max(Te*Te,La)+Math.max(be*be,La)));var Ae=A.vector={x:Te,y:be},Le=A.vectorNorm={x:Ae.x/Be,y:Ae.y/Be},ee={x:-Le.y,y:Le.x};A.nodesOverlap=!ie(Be)||j.checkPoint(ye[0],ye[1],0,J,U,z.x,z.y,Z,_)||Q.checkPoint(ne[0],ne[1],0,q,X,F.x,F.y,ae,G),A.vectorNormInverse=ee,L={nodesOverlap:A.nodesOverlap,dirCounts:A.dirCounts,calculatedIntersection:!0,hasBezier:A.hasBezier,hasUnbundled:A.hasUnbundled,eles:A.eles,srcPos:z,srcRs:_,tgtPos:F,tgtRs:G,srcW:J,srcH:U,tgtW:q,tgtH:X,srcIntn:ve,tgtIntn:he,srcShape:j,tgtShape:Q,posPts:{x1:Ee.x2,y1:Ee.y2,x2:Ee.x1,y2:Ee.y1},intersectionPts:{x1:ge.x2,y1:ge.y2,x2:ge.x1,y2:ge.y1},vector:{x:-Ae.x,y:-Ae.y},vectorNorm:{x:-Le.x,y:-Le.y},vectorNormInverse:{x:-ee.x,y:-ee.y}}}var D=we?L:A;re.nodesOverlap=D.nodesOverlap,re.srcIntn=D.srcIntn,re.tgtIntn=D.tgtIntn,re.isRound=oe.startsWith(`round`),n&&(I.isParent()||I.isChild()||R.isParent()||R.isChild())&&(I.parents().anySame(R)||R.parents().anySame(I)||I.same(R)&&I.isParent())?e.findCompoundLoopPoints(K,D,H,ke):I===R?e.findLoopPoints(K,D,H,ke):oe.endsWith(`segments`)?e.findSegmentsPoints(K,D):oe.endsWith(`taxi`)?e.findTaxiPoints(K,D):oe===`straight`||!ke&&A.eles.length%2===1&&H===Math.floor(A.eles.length/2)?e.findStraightEdgePoints(K):e.findBezierPoints(K,D,H,ke,we),e.findEndpoints(K),e.tryToCorrectInvalidPoints(K,D),e.checkForInvalidEdgeWarning(K),e.storeAllpts(K),e.storeEdgeProjections(K),e.calculateArrowAngles(K),e.recalculateEdgeLabelProjections(K),e.calculateLabelAngles(K)}},x=0;x0){var ye=l,he=Er(ye,$r(o)),ne=Er(ye,$r(we)),ve=he;if(ne2)Er(ye,{x:we[2],y:we[3]})0){var le=f,te=Er(le,$r(o)),ue=Er(le,$r(Y)),se=te;if(ue2)Er(le,{x:Y[2],y:Y[3]})=d||x){g={cp:w,segment:C};break}}if(g)break}var T=g.cp,S=g.segment,B=(d-p)/S.length,k=S.t1-S.t0,P=h?S.t0+k*B:S.t1-k*B;P=Da(0,P,1),e=Ur(T.p0,T.p1,T.p2,P),c=py(T.p0,T.p1,T.p2,P);break;case`straight`:case`segments`:case`haystack`:for(var A=0,L,O,N,I,R=a.allpts.length,M=0;M+3=d));M+=2);var z=(d-O)/L;z=Da(0,z,1),e=zd(N,I,z),c=Rv(N,I)}o(`labelX`,v,e.x),o(`labelY`,v,e.y),o(`labelAutoAngle`,v,c)}};l(`source`),l(`target`),this.applyLabelDimensions(t)}};$t.applyLabelDimensions=function(t){this.applyPrefixedLabelDimensions(t),t.isEdge()&&(this.applyPrefixedLabelDimensions(t,`source`),this.applyPrefixedLabelDimensions(t,`target`))};$t.applyPrefixedLabelDimensions=function(t,e){var r=t._private,a=this.getLabelText(t,e),n=Dr(a,t._private.labelDimsKey);if(pt(r.rscratch,`prefixedLabelDimsKey`,e)!==n){qt(r.rscratch,`prefixedLabelDimsKey`,e,n);var i=this.calculateLabelDimensions(t,a),o=t.pstyle(`line-height`).pfValue,s=t.pstyle(`font-size`).pfValue,u=t.pstyle(`text-wrap`).strValue,l=pt(r.rscratch,`labelWrapCachedLines`,e)||[],f=u!==`wrap`?1:Math.max(l.length,1),v=s*o,c=i.width,h=i.height+(f-1)*(o-1)*s;qt(r.rstyle,`labelWidth`,e,c),qt(r.rscratch,`labelWidth`,e,c),qt(r.rstyle,`labelHeight`,e,h),qt(r.rscratch,`labelHeight`,e,h),qt(r.rscratch,`labelLineHeight`,e,v),qt(r.rscratch,`labelActualDescent`,e,i.labelActualDescent)}};$t.getLabelText=function(t,e){var r=t._private,a=e?e+`-`:``,n=t.pstyle(a+`label`).strValue,i=t.pstyle(`text-transform`).value,o=function(X,J){return J?(qt(r.rscratch,X,e,J),J):pt(r.rscratch,X,e)};if(!n)return``;i==`none`||(i==`uppercase`?n=n.toUpperCase():i==`lowercase`&&(n=n.toLowerCase()));var s=t.pstyle(`text-wrap`).value;if(s===`wrap`){var u=o(`labelKey`);if(u!=null&&o(`labelWrapKey`)===u)return o(`labelWrapCachedText`);for(var l=`​`,f=n.split(` -`),v=t.pstyle(`text-max-width`).pfValue,h=t.pstyle(`text-overflow-wrap`).value===`anywhere`,d=[],y=/[\s\u200b]+|$/g,g=0;gv){var E=p.matchAll(y),C=``,x=0,T=Ct(E),S;try{for(T.s();!(S=T.n()).done;){var B=S.value,k=B[0],P=p.substring(x,B.index);x=B.index+k.length;var A=C.length===0?P:C+P+k;this.calculateLabelDimensions(t,A).width<=v?C+=P+k:(C&&d.push(C),C=P+k)}}catch(q){T.e(q)}finally{T.f()}C.match(/^[\s\u200b]+$/)||d.push(C)}else d.push(p)}o(`labelWrapCachedLines`,d),n=o(`labelWrapCachedText`,d.join(` -`)),o(`labelWrapKey`,u)}else if(s===`ellipsis`){var N=t.pstyle(`text-max-width`).pfValue,I=``,R=`…`,M=!1;if(this.calculateLabelDimensions(t,n).widthN)break;I+=n[F],F===n.length-1&&(M=!0)}return M||(I+=R),I}return n};$t.getLabelJustification=function(t){var e=t.pstyle(`text-justification`).strValue,r=t.pstyle(`text-halign`).strValue;return e===`auto`?t.isNode()?ap(r):`center`:e};$t.calculateLabelDimensions=function(t,e){var n=this.cy.window().document,i=0,o=t.pstyle(`font-style`).strValue,s=t.pstyle(`font-size`).pfValue,u=t.pstyle(`font-family`).strValue,l=t.pstyle(`font-weight`).strValue,f=t.pstyle(`text-metrics`).strValue||`font`,v=this.labelCalcCanvas,c=this.labelCalcCanvasContext;if(!v){v=this.labelCalcCanvas=n.createElement(`canvas`),c=this.labelCalcCanvasContext=v.getContext(`2d`);var h=v.style;h.position=`absolute`,h.left=`-9999px`,h.top=`-9999px`,h.zIndex=`-1`,h.visibility=`hidden`,h.pointerEvents=`none`}c.font=``.concat(o,` `).concat(l,` `).concat(s,`px `).concat(u);for(var d=0,y=0,g=e.split(` -`),p=g.length,m=0,b=0,w=0;w1&&arguments[1]!==void 0?arguments[1]:!0;if(e.merge(o),s)for(var u=0;u=t.desktopTapThreshold2}var vt=i(D);tt&&(t.hoverData.tapholdCancelled=!0);var At=function(){var kt=t.hoverData.dragDelta=t.hoverData.dragDelta||[];kt.length===0?(kt.push(De[0]),kt.push(De[1])):(kt[0]+=De[0],kt[1]+=De[1])};W=!0,n(Ce,[`mousemove`,`vmousemove`,`tapdrag`],D,{x:te[0],y:te[1]});var We=function(kt){return{originalEvent:D,type:kt,position:{x:te[0],y:te[1]}}},St=function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||$.emit(We(`boxstart`)),ce[4]=1,t.hoverData.selecting=!0,t.redrawHint(`select`,!0),t.redraw()};if(t.hoverData.which===3){if(tt){var Rt=We(`cxtdrag`);de?de.emit(Rt):$.emit(Rt),t.hoverData.cxtDragged=!0,(!t.hoverData.cxtOver||Ce!==t.hoverData.cxtOver)&&(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit(We(`cxtdragout`)),t.hoverData.cxtOver=Ce,Ce&&Ce.emit(We(`cxtdragover`)))}}else if(t.hoverData.dragging){if(W=!0,$.panningEnabled()&&$.userPanningEnabled()){var Qt;if(t.hoverData.justStartedPan){var Ir=t.hoverData.mdownPos;Qt={x:(te[0]-Ir[0])*Y,y:(te[1]-Ir[1])*Y},t.hoverData.justStartedPan=!1}else Qt={x:De[0]*Y,y:De[1]*Y};$.panBy(Qt),$.emit(We(`dragpan`)),t.hoverData.dragged=!0}te=t.projectIntoViewport(D.clientX,D.clientY)}else if(ce[4]==1&&(de==null||de.pannable())){if(tt){if(!t.hoverData.dragging&&$.boxSelectionEnabled()&&(vt||!$.panningEnabled()||!$.userPanningEnabled()))St();else if(!t.hoverData.selecting&&$.panningEnabled()&&$.userPanningEnabled())o(de,t.hoverData.downs)&&(t.hoverData.dragging=!0,t.hoverData.justStartedPan=!0,ce[4]=0,t.data.bgActivePosistion=$r(ue),t.redrawHint(`select`,!0),t.redraw());de&&de.pannable()&&de.active()&&de.unactivate()}}else{if(de&&de.pannable()&&de.active()&&de.unactivate(),(!de||!de.grabbed())&&Ce!=xe&&(xe&&n(xe,[`mouseout`,`tapdragout`],D,{x:te[0],y:te[1]}),Ce&&n(Ce,[`mouseover`,`tapdragover`],D,{x:te[0],y:te[1]}),t.hoverData.last=Ce),de)if(tt){if($.boxSelectionEnabled()&&vt)de&&de.grabbed()&&(y(Pe),de.emit(We(`freeon`)),Pe.emit(We(`free`)),t.dragData.didDrag&&(de.emit(We(`dragfreeon`)),Pe.emit(We(`dragfree`)))),St();else if(de&&de.grabbed()&&t.nodeIsDraggable(de)){var wt=!t.dragData.didDrag;wt&&t.redrawHint(`eles`,!0),t.dragData.didDrag=!0,t.hoverData.draggingEles||h(Pe,{inDragLayer:!0});var at={x:0,y:0};if(ie(De[0])&&ie(De[1])&&(at.x+=De[0],at.y+=De[1],wt)){var xt=t.hoverData.dragDelta;xt&&ie(xt[0])&&ie(xt[1])&&(at.x+=xt[0],at.y+=xt[1])}t.hoverData.draggingEles=!0,Pe.silentShift(at).emit(We(`position`)).emit(We(`drag`)),t.redrawHint(`drag`,!0),t.redraw()}}else At();W=!0}if(ce[2]=te[0],ce[3]=te[1],W)return D.stopPropagation&&D.stopPropagation(),D.preventDefault&&D.preventDefault(),!1}},!1);var B,k,P;t.registerBinding(e,`mouseup`,function(D){if(!(t.hoverData.which===1&&D.which!==1&&t.hoverData.capture)){if(t.hoverData.capture){t.hoverData.capture=!1;var W=t.cy,$=t.projectIntoViewport(D.clientX,D.clientY),Y=t.selection,le=t.findNearestElement($[0],$[1],!0,!1),te=t.dragData.possibleDragElements,ue=t.hoverData.down,se=i(D);t.data.bgActivePosistion&&(t.redrawHint(`select`,!0),t.redraw()),t.hoverData.tapholdCancelled=!0,t.data.bgActivePosistion=void 0,ue&&ue.unactivate();var ce=function(rt){return{originalEvent:D,type:rt,position:{x:$[0],y:$[1]}}};if(t.hoverData.which===3){var Ce=ce(`cxttapend`);if(ue?ue.emit(Ce):W.emit(Ce),!t.hoverData.cxtDragged){var xe=ce(`cxttap`);ue?ue.emit(xe):W.emit(xe)}t.hoverData.cxtDragged=!1,t.hoverData.which=null}else if(t.hoverData.which===1){if(n(le,[`mouseup`,`tapend`,`vmouseup`],D,{x:$[0],y:$[1]}),!t.dragData.didDrag&&!t.hoverData.dragged&&!t.hoverData.selecting&&!t.hoverData.isOverThresholdDrag&&(n(ue,[`click`,`tap`,`vclick`],D,{x:$[0],y:$[1]}),k=!1,D.timeStamp-P<=W.multiClickDebounceTime()?(B&&clearTimeout(B),k=!0,P=null,n(ue,[`dblclick`,`dbltap`,`vdblclick`],D,{x:$[0],y:$[1]})):(B=setTimeout(function(){k||n(ue,[`oneclick`,`onetap`,`voneclick`],D,{x:$[0],y:$[1]})},W.multiClickDebounceTime()),P=D.timeStamp)),ue==null&&!t.dragData.didDrag&&!t.hoverData.selecting&&!t.hoverData.dragged&&!i(D)&&(W.$(r).unselect([`tapunselect`]),te.length>0&&t.redrawHint(`eles`,!0),t.dragData.possibleDragElements=te=W.collection()),le==ue&&!t.dragData.didDrag&&!t.hoverData.selecting&&le!=null&&le._private.selectable&&(t.hoverData.dragging||(W.selectionType()===`additive`||se?le.selected()?le.unselect([`tapunselect`]):le.select([`tapselect`]):se||(W.$(r).unmerge(le).unselect([`tapunselect`]),le.select([`tapselect`]))),t.redrawHint(`eles`,!0)),t.hoverData.selecting){var de=W.collection(t.getAllInBox(Y[0],Y[1],Y[2],Y[3]));t.redrawHint(`select`,!0),de.length>0&&t.redrawHint(`eles`,!0),W.emit(ce(`boxend`));var De=function(rt){return rt.selectable()&&!rt.selected()};W.selectionType()===`additive`||se||W.$(r).unmerge(de).unselect(),de.emit(ce(`box`)).stdFilter(De).select().emit(ce(`boxselect`)),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint(`select`,!0),t.redrawHint(`eles`,!0),t.redraw()),!Y[4]){t.redrawHint(`drag`,!0),t.redrawHint(`eles`,!0);var Pe=ue&&ue.grabbed();y(te),Pe&&(ue.emit(ce(`freeon`)),te.emit(ce(`free`)),t.dragData.didDrag&&(ue.emit(ce(`dragfreeon`)),te.emit(ce(`dragfree`))))}}Y[4]=0,t.hoverData.down=null,t.hoverData.cxtStarted=!1,t.hoverData.draggingEles=!1,t.hoverData.selecting=!1,t.hoverData.isOverThresholdDrag=!1,t.dragData.didDrag=!1,t.hoverData.dragged=!1,t.hoverData.dragDelta=[],t.hoverData.mdownPos=null,t.hoverData.mdownGPos=null,t.hoverData.which=null}}},!1);var A=[],L=4,O,N=1e5,I=function(D){for(var V=Math.abs(D[0]),W=1;W=L){O=!1;var $=A;if($[0]>=5){var Y;I($)?Y=$[0]:Y=Id($),Y>1&&(O=!0,N=Y)}}else A.push(Math.abs(W)),V=!0;else O&&(N=Math.min(Math.abs(W),N));if(!t.scrollingPage){var le=t.cy,te=le.zoom(),ue=le.pan(),se=t.projectIntoViewport(D.clientX,D.clientY),ce=[se[0]*te+ue.x,se[1]*te+ue.y];if(t.hoverData.draggingEles||t.hoverData.dragging||t.hoverData.cxtStarted||x()){D.preventDefault();return}if(le.panningEnabled()&&le.userPanningEnabled()&&le.zoomingEnabled()&&le.userZoomingEnabled()){D.preventDefault(),t.data.wheelZooming=!0,clearTimeout(t.data.wheelTimeout),t.data.wheelTimeout=setTimeout(function(){t.data.wheelZooming=!1,t.redrawHint(`eles`,!0),t.redraw()},150);var Ce;V&&Math.abs(W)>5&&(W=us(W)*5),Ce=W/-250,O&&(Ce/=N,Ce*=3),Ce=Ce*t.wheelSensitivity;D.deltaMode===1&&(Ce*=33);var de=le.zoom()*Math.pow(10,Ce);D.type===`gesturechange`&&(de=t.gestureStartZoom*D.scale),le.zoom({level:de,renderedPosition:{x:ce[0],y:ce[1]}}),le.emit({type:D.type===`gesturechange`?`pinchzoom`:`scrollzoom`,originalEvent:D,position:{x:se[0],y:se[1]}})}}}};t.registerBinding(t.container,`wheel`,R,!0),t.registerBinding(e,`scroll`,function(D){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout(function(){t.scrollingPage=!1},250)},!0),t.registerBinding(t.container,`gesturestart`,function(D){t.gestureStartZoom=t.cy.zoom(),t.hasTouchStarted||D.preventDefault()},!0),t.registerBinding(t.container,`gesturechange`,function(ee){t.hasTouchStarted||R(ee)},!0),t.registerBinding(t.container,`mouseout`,function(D){var V=t.projectIntoViewport(D.clientX,D.clientY);t.cy.emit({originalEvent:D,type:`mouseout`,position:{x:V[0],y:V[1]}})},!1),t.registerBinding(t.container,`mouseover`,function(D){var V=t.projectIntoViewport(D.clientX,D.clientY);t.cy.emit({originalEvent:D,type:`mouseover`,position:{x:V[0],y:V[1]}})},!1);var M,F,z,q,X,J,U,Q,j,ae,Z,_,G,H=function(D,V,W,$){return Math.sqrt((W-D)*(W-D)+($-V)*($-V))},K=function(D,V,W,$){return(W-D)*(W-D)+($-V)*($-V)},re;t.registerBinding(t.container,`touchstart`,re=function(D){if(t.hasTouchStarted=!0,!!T(D)){p(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var V=t.cy,W=t.touchData.now,$=t.touchData.earlier;if(D.touches[0]){var Y=t.projectIntoViewport(D.touches[0].clientX,D.touches[0].clientY);W[0]=Y[0],W[1]=Y[1]}if(D.touches[1]){var Y=t.projectIntoViewport(D.touches[1].clientX,D.touches[1].clientY);W[2]=Y[0],W[3]=Y[1]}if(D.touches[2]){var Y=t.projectIntoViewport(D.touches[2].clientX,D.touches[2].clientY);W[4]=Y[0],W[5]=Y[1]}var le=function(vt){return{originalEvent:D,type:vt,position:{x:W[0],y:W[1]}}};if(D.touches[1]){t.touchData.singleTouchMoved=!0,y(t.dragData.touchDragEles);var te=t.findContainerClientCoords();j=te[0],ae=te[1],Z=te[2],_=te[3],M=D.touches[0].clientX-j,F=D.touches[0].clientY-ae,z=D.touches[1].clientX-j,q=D.touches[1].clientY-ae,G=0<=M&&M<=Z&&0<=z&&z<=Z&&0<=F&&F<=_&&0<=q&&q<=_;var ue=V.pan(),se=V.zoom();X=H(M,F,z,q),J=K(M,F,z,q),U=[(M+z)/2,(F+q)/2],Q=[(U[0]-ue.x)/se,(U[1]-ue.y)/se];var ce=200,Ce=ce*ce;if(J=1){for(var bt=t.touchData.startPosition=[null,null,null,null,null,null],Xe=0;Xe=t.touchTapThreshold2}if(V&&t.touchData.cxt){D.preventDefault();var Xe=D.touches[0].clientX-j,Ze=D.touches[0].clientY-ae,He=D.touches[1].clientX-j,vt=D.touches[1].clientY-ae,At=K(Xe,Ze,He,vt),We=At/J,St=150,Rt=St*St,Qt=1.5;if(We>=Qt*Qt||At>=Rt){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint(`select`,!0);var mr=se(`cxttapend`);t.touchData.start?(t.touchData.start.unactivate().emit(mr),t.touchData.start=null):$.emit(mr)}}if(V&&t.touchData.cxt){var mr=se(`cxtdrag`);t.data.bgActivePosistion=void 0,t.redrawHint(`select`,!0),t.touchData.start?t.touchData.start.emit(mr):$.emit(mr),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var wt=t.findNearestElement(Y[0],Y[1],!0,!0);(!t.touchData.cxtOver||wt!==t.touchData.cxtOver)&&(t.touchData.cxtOver&&t.touchData.cxtOver.emit(se(`cxtdragout`)),t.touchData.cxtOver=wt,wt&&wt.emit(se(`cxtdragover`)))}else if(V&&D.touches[2]&&$.boxSelectionEnabled())D.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||$.emit(se(`boxstart`)),t.touchData.selecting=!0,t.touchData.didSelect=!0,W[4]=1,!W||W.length===0||W[0]===void 0?(W[0]=(Y[0]+Y[2]+Y[4])/3,W[1]=(Y[1]+Y[3]+Y[5])/3,W[2]=(Y[0]+Y[2]+Y[4])/3+1,W[3]=(Y[1]+Y[3]+Y[5])/3+1):(W[2]=(Y[0]+Y[2]+Y[4])/3,W[3]=(Y[1]+Y[3]+Y[5])/3),t.redrawHint(`select`,!0),t.redraw();else if(V&&D.touches[1]&&!t.touchData.didSelect&&$.zoomingEnabled()&&$.panningEnabled()&&$.userZoomingEnabled()&&$.userPanningEnabled()){D.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint(`select`,!0);var at=t.dragData.touchDragEles;if(at){t.redrawHint(`drag`,!0);for(var xt=0;xt0&&!t.hoverData.draggingEles&&!t.swipePanning&&t.data.bgActivePosistion!=null&&(t.data.bgActivePosistion=void 0,t.redrawHint(`select`,!0),t.redraw())}},!1);var ke;t.registerBinding(e,`touchcancel`,ke=function(D){var V=t.touchData.start;t.touchData.capture=!1,V&&V.unactivate()});var we,ye,he,ne;if(t.registerBinding(e,`touchend`,we=function(D){var V=t.touchData.start;if(t.touchData.capture)D.touches.length===0&&(t.touchData.capture=!1),D.preventDefault();else return;var $=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var Y=t.cy,le=Y.zoom(),te=t.touchData.now,ue=t.touchData.earlier;if(D.touches[0]){var se=t.projectIntoViewport(D.touches[0].clientX,D.touches[0].clientY);te[0]=se[0],te[1]=se[1]}if(D.touches[1]){var se=t.projectIntoViewport(D.touches[1].clientX,D.touches[1].clientY);te[2]=se[0],te[3]=se[1]}if(D.touches[2]){var se=t.projectIntoViewport(D.touches[2].clientX,D.touches[2].clientY);te[4]=se[0],te[5]=se[1]}var ce=function(Rt){return{originalEvent:D,type:Rt,position:{x:te[0],y:te[1]}}};V&&V.unactivate();var Ce;if(t.touchData.cxt){if(Ce=ce(`cxttapend`),V?V.emit(Ce):Y.emit(Ce),!t.touchData.cxtDragged){var xe=ce(`cxttap`);V?V.emit(xe):Y.emit(xe)}t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,t.redraw();return}if(!D.touches[2]&&Y.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var de=Y.collection(t.getAllInBox($[0],$[1],$[2],$[3]));$[0]=void 0,$[1]=void 0,$[2]=void 0,$[3]=void 0,$[4]=0,t.redrawHint(`select`,!0),Y.emit(ce(`boxend`));var De=function(Rt){return Rt.selectable()&&!Rt.selected()};de.emit(ce(`box`)).stdFilter(De).select().emit(ce(`boxselect`)),de.nonempty()&&t.redrawHint(`eles`,!0),t.redraw()}if(V?.unactivate(),D.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint(`select`,!0);else if(!D.touches[1]){if(!D.touches[0]){if(!D.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint(`select`,!0);var Pe=t.dragData.touchDragEles;if(V!=null){var tt=V._private.grabbed;y(Pe),t.redrawHint(`drag`,!0),t.redrawHint(`eles`,!0),tt&&(V.emit(ce(`freeon`)),Pe.emit(ce(`free`)),t.dragData.didDrag&&(V.emit(ce(`dragfreeon`)),Pe.emit(ce(`dragfree`)))),n(V,[`touchend`,`tapend`,`vmouseup`,`tapdragout`],D,{x:te[0],y:te[1]}),V.unactivate(),t.touchData.start=null}else n(t.findNearestElement(te[0],te[1],!0,!0),[`touchend`,`tapend`,`vmouseup`,`tapdragout`],D,{x:te[0],y:te[1]});var bt=t.touchData.startPosition[0]-te[0],Xe=bt*bt,Ze=t.touchData.startPosition[1]-te[1],At=(Xe+Ze*Ze)*le*le;t.touchData.singleTouchMoved||(V||Y.$(`:selected`).unselect([`tapunselect`]),n(V,[`tap`,`vclick`],D,{x:te[0],y:te[1]}),ye=!1,D.timeStamp-ne<=Y.multiClickDebounceTime()?(he&&clearTimeout(he),ye=!0,ne=null,n(V,[`dbltap`,`vdblclick`],D,{x:te[0],y:te[1]})):(he=setTimeout(function(){ye||n(V,[`onetap`,`voneclick`],D,{x:te[0],y:te[1]})},Y.multiClickDebounceTime()),ne=D.timeStamp)),V!=null&&!t.dragData.didDrag&&V._private.selectable&&At`u`){var ve=[],ge=function(D){return{clientX:D.clientX,clientY:D.clientY,force:1,identifier:D.pointerId,pageX:D.pageX,pageY:D.pageY,radiusX:D.width/2,radiusY:D.height/2,screenX:D.screenX,screenY:D.screenY,target:D.target}},Ee=function(D){return{event:D,touch:ge(D)}},be=function(D){ve.push(Ee(D))},Te=function(D){for(var V=0;V0)return q[0]}return null},d=Object.keys(c),y=0;y0?h:Lf(i,o,e,r,a,n,s,u)},checkPoint:function(e,r,a,n,i,o,s,u){u=u===`auto`?ur(n,i):u;var l=2*u;if(Yt(e,r,this.points,o,s,n,i-l,[0,-1],a)||Yt(e,r,this.points,o,s,n-l,i,[0,-1],a))return!0;var f=n/2+2*a,v=i/2+2*a;return!!(Et(e,r,[o-f,s-v,o-f,s,o+f,s,o+f,s-v])||kr(e,r,l,l,o+n/2-u,s+i/2-u,a)||kr(e,r,l,l,o-n/2+u,s+i/2-u,a))}}};Xt.registerNodeShapes=function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon(`triangle`,gt(3,0)),this.generateRoundPolygon(`round-triangle`,gt(3,0)),this.generatePolygon(`rectangle`,gt(4,0)),t.square=t.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();var r=[0,1,1,0,0,-1,-1,0];this.generatePolygon(`diamond`,r),this.generateRoundPolygon(`round-diamond`,r);this.generatePolygon(`pentagon`,gt(5,0)),this.generateRoundPolygon(`round-pentagon`,gt(5,0)),this.generatePolygon(`hexagon`,gt(6,0)),this.generateRoundPolygon(`round-hexagon`,gt(6,0)),this.generatePolygon(`heptagon`,gt(7,0)),this.generateRoundPolygon(`round-heptagon`,gt(7,0)),this.generatePolygon(`octagon`,gt(8,0)),this.generateRoundPolygon(`round-octagon`,gt(8,0));var a=new Array(20);var n=Oo(5,0),i=Oo(5,Math.PI/5),o=.5*(3-Math.sqrt(5));o*=1.57;for(var s=0;s=e.deqFastCost*w)break}else if(l){if(m>=e.deqCost*h||m>=e.deqAvgCost*c)break}else if(b>=e.deqNoDrawCost*ko)break;var E=e.deq(a,g,y);if(E.length>0)for(var C=0;C0&&(e.onDeqd(a,d),!l&&e.shouldRedraw(a,d,g,y)&&i())},s=e.priority||is;n.beforeRender(o,s(a))}}}};var wy=(function(){function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Cn;dr(this,t),this.idsByKey=new Ut,this.keyForId=new Ut,this.cachesByLvl=new Ut,this.lvls=[],this.getKey=e,this.doesEleInvalidateKey=r}return hr(t,[{key:`getIdsFor`,value:function(r){r??Ge(`Can not get id list for null key`);var a=this.idsByKey,n=this.idsByKey.get(r);return n||(n=new ta,a.set(r,n)),n}},{key:`addIdForKey`,value:function(r,a){r!=null&&this.getIdsFor(r).add(a)}},{key:`deleteIdForKey`,value:function(r,a){r!=null&&this.getIdsFor(r).delete(a)}},{key:`getNumberOfIdsForKey`,value:function(r){return r==null?0:this.getIdsFor(r).size}},{key:`updateKeyMappingFor`,value:function(r){var a=r.id(),n=this.keyForId.get(a),i=this.getKey(r);this.deleteIdForKey(n,a),this.addIdForKey(i,a),this.keyForId.set(a,i)}},{key:`deleteKeyMappingFor`,value:function(r){var a=r.id(),n=this.keyForId.get(a);this.deleteIdForKey(n,a),this.keyForId.delete(a)}},{key:`keyHasChangedFor`,value:function(r){var a=r.id();return this.keyForId.get(a)!==this.getKey(r)}},{key:`isInvalid`,value:function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)}},{key:`getCachesAt`,value:function(r){var a=this.cachesByLvl,n=this.lvls,i=a.get(r);return i||(i=new Ut,a.set(r,i),n.push(r)),i}},{key:`getCache`,value:function(r,a){return this.getCachesAt(a).get(r)}},{key:`get`,value:function(r,a){var n=this.getKey(r),i=this.getCache(n,a);return i!=null&&this.updateKeyMappingFor(r),i}},{key:`getForCachedKey`,value:function(r,a){var n=this.keyForId.get(r.id());return this.getCache(n,a)}},{key:`hasCache`,value:function(r,a){return this.getCachesAt(a).has(r)}},{key:`has`,value:function(r,a){var n=this.getKey(r);return this.hasCache(n,a)}},{key:`setCache`,value:function(r,a,n){n.key=r,this.getCachesAt(a).set(r,n)}},{key:`set`,value:function(r,a,n){var i=this.getKey(r);this.setCache(i,a,n),this.updateKeyMappingFor(r)}},{key:`deleteCache`,value:function(r,a){this.getCachesAt(a).delete(r)}},{key:`delete`,value:function(r,a){var n=this.getKey(r);this.deleteCache(n,a)}},{key:`invalidateKey`,value:function(r){var a=this;this.lvls.forEach(function(n){return a.deleteCache(r,n)})}},{key:`invalidate`,value:function(r){var a=r.id(),n=this.keyForId.get(a);this.deleteKeyMappingFor(r);var i=this.doesEleInvalidateKey(r);return i&&this.invalidateKey(n),i||this.getNumberOfIdsForKey(n)===0}}])})();var Ul=25;var sn=50;var mn=-4;var Xo=3;var Fv=7.99;var xy=8;var Ey=1024;var Cy=1024;var Ty=1024;var Sy=.2;var ky=.8;var Dy=10;var By=.15;var Py=.1;var Ay=.9;var Ry=.9;var My=100;var Ly=1;var Wr={dequeue:`dequeue`,downscale:`downscale`,highQuality:`highQuality`};var Iy=lt({getKey:null,doesEleInvalidateKey:Cn,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:Sf,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0});var wa=function(e,r){var a=this;a.renderer=e,a.onDequeues=[];var n=Iy(r);me(a,n),a.lookup=new wy(n.getKey,n.doesEleInvalidateKey),a.setupDequeueing()};var et=wa.prototype;et.reasons=Wr;et.getTextureQueue=function(t){var e=this;return e.eleImgCaches=e.eleImgCaches||{},e.eleImgCaches[t]=e.eleImgCaches[t]||[]};et.getRetiredTextureQueue=function(t){var e=this,r=e.eleImgCaches.retired=e.eleImgCaches.retired||{};return r[t]=r[t]||[]};et.getElementQueue=function(){var t=this;return t.eleCacheQueue=t.eleCacheQueue||new qa(function(r,a){return a.reqs-r.reqs})};et.getElementKeyToQueue=function(){var t=this;return t.eleKeyToCacheQueue=t.eleKeyToCacheQueue||{}};et.getElement=function(t,e,r,a,n){var i=this,o=this.renderer,s=o.cy.zoom(),u=this.lookup;if(!e||e.w===0||e.h===0||isNaN(e.w)||isNaN(e.h)||!t.visible()||t.removed()||!i.allowEdgeTxrCaching&&t.isEdge()||!i.allowParentTxrCaching&&t.isParent())return null;if(a??=Math.ceil(ss(s*r)),a=Fv||a>Xo)return null;var l=Math.pow(2,a),f=e.h*l,v=e.w*l,c=o.eleTextBiggerThanMin(t,l);if(!this.isVisible(t,c))return null;var h=u.get(t,a);if(h&&h.invalidated&&(h.invalidated=!1,h.texture.invalidatedWidth-=h.width),h)return h;var d;if(f<=Ul?d=Ul:f<=sn?d=sn:d=Math.ceil(f/sn)*sn,f>Ty||v>Cy)return null;var y=i.getTextureQueue(d),g=y[y.length-2],p=function(){return i.recycleTexture(d,v)||i.addTexture(d,v)};g||(g=y[y.length-1]),g||(g=p()),g.width-g.usedWidtha;k--)S=i.getElement(t,e,r,k,Wr.downscale);B()}else return i.queueElement(t,C.level-1),C;else{var P;if(!b&&!w&&!E)for(var A=a-1;A>=mn;A--){var L=u.get(t,A);if(L){P=L;break}}if(m(P))return i.queueElement(t,a),P;g.context.translate(g.usedWidth,0),g.context.scale(l,l),this.drawElement(g.context,t,e,c,!1),g.context.scale(1/l,1/l),g.context.translate(-g.usedWidth,0)}return h={x:g.usedWidth,texture:g,level:a,scale:l,width:v,height:f,scaledLabelShown:c},g.usedWidth+=Math.ceil(v+xy),g.eleCaches.push(h),u.set(t,a,h),i.checkTextureFullness(g),h};et.invalidateElements=function(t){for(var e=0;e=Sy*t.width&&this.retireTexture(t)};et.checkTextureFullness=function(t){var r=this.getTextureQueue(t.height);t.usedWidth/t.width>ky&&t.fullnessChecks>=Dy?sr(r,t):t.fullnessChecks++};et.retireTexture=function(t){var e=this,r=t.height,a=e.getTextureQueue(r),n=this.lookup;sr(a,t),t.retired=!0;for(var i=t.eleCaches,o=0;o=e)return o.retired=!1,o.usedWidth=0,o.invalidatedWidth=0,o.fullnessChecks=0,os(o.eleCaches),o.context.setTransform(1,0,0,1,0,0),o.context.clearRect(0,0,o.width,o.height),sr(n,o),a.push(o),o}};et.queueElement=function(t,e){var r=this,a=r.getElementQueue(),n=r.getElementKeyToQueue(),i=this.getKey(t),o=n[i];if(o)o.level=Math.max(o.level,e),o.eles.merge(t),o.reqs++,a.updateItem(o);else{var s={eles:t.spawn().merge(t),level:e,reqs:1,key:i};a.push(s),n[i]=s}};et.dequeue=function(t){for(var e=this,r=e.getElementQueue(),a=e.getElementKeyToQueue(),n=[],i=e.lookup,o=0;o0;o++){var s=r.pop(),u=s.key,l=s.eles[0],f=i.hasCache(l,s.level);if(a[u]=null,f)continue;n.push(s);var v=e.getBoundingBox(l);e.getElement(l,v,t,s.level,Wr.dequeue)}return n};et.removeFromQueue=function(t){var e=this,r=e.getElementQueue(),a=e.getElementKeyToQueue(),n=this.getKey(t),i=a[n];i!=null&&(i.eles.length===1?(i.reqs=ns,r.updateItem(i),r.pop(),a[n]=null):i.eles.unmerge(t))};et.onDequeue=function(t){this.onDequeues.push(t)};et.offDequeue=function(t){sr(this.onDequeues,t)};et.setupDequeueing=zv.setupDequeueing({deqRedrawThreshold:My,deqCost:By,deqAvgCost:Py,deqNoDrawCost:Ay,deqFastCost:Ry,deq:function(e,r,a){return e.dequeue(r,a)},onDeqd:function(e,r){for(var a=0;a=Ny||r>Rn)return null}a.validateLayersElesOrdering(r,t);var u=a.layersByLevel,l=Math.pow(2,r),f=u[r]=u[r]||[],v,c=a.levelIsComplete(r,t),h,d=function(){var B=function(O){if(a.validateLayersElesOrdering(O,t),a.levelIsComplete(O,t))return h=u[O],!0},k=function(O){if(!h)for(var N=r+O;Ea<=N&&N<=Rn&&!B(N);N+=O);};k(1),k(-1);for(var P=f.length-1;P>=0;P--){var A=f[P];A.invalid&&sr(f,A)}};if(!c)d();else return f;var y=function(){if(!v){v=yt();for(var B=0;BYl||A>Yl)return null;if(P*A>Hy)return null;var O=a.makeLayer(v,r);if(k!=null){var N=f.indexOf(k)+1;f.splice(N,0,O)}else(B.insert===void 0||B.insert)&&f.unshift(O);return O};if(a.skipping&&!s)return null;for(var p=null,m=t.length/Oy,b=!s,w=0;w=m||!Mf(p.bb,E.boundingBox()))&&(p=g({insert:!0,after:p}),!p))return null;h||b?a.queueLayer(p,E):a.drawEleInLayer(p,E,r,e),p.eles.push(E),x[r]=p}return h||(b?null:f)};ft.getEleLevelForLayerLevel=function(t,e){return t};ft.drawEleInLayer=function(t,e,r,a){var n=this,i=this.renderer,o=t.context,s=e.boundingBox();s.w===0||s.h===0||!e.visible()||(r=n.getEleLevelForLayerLevel(r,a),i.setImgSmoothing(o,!1),i.drawCachedElement(o,e,null,null,r,Wy),i.setImgSmoothing(o,!0))};ft.levelIsComplete=function(t,e){var a=this.layersByLevel[t];if(!a||a.length===0)return!1;for(var n=0,i=0;i0||o.invalid)return!1;n+=o.eles.length}return n===e.length};ft.validateLayersElesOrdering=function(t,e){var r=this.layersByLevel[t];if(r)for(var a=0;a0){e=!0;break}}return e};ft.invalidateElements=function(t){var e=this;t.length!==0&&(e.lastInvalidationTime=Kt(),t.length!==0&&e.haveLayers()&&e.updateElementsInLayers(t,function(a,n,i){e.invalidateLayer(a)}))};ft.invalidateLayer=function(t){if(this.lastInvalidationTime=Kt(),!t.invalid){var e=t.level,r=t.eles,a=this.layersByLevel[e];sr(a,t),t.elesQueue=[],t.invalid=!0,t.replacement&&(t.replacement.invalid=!0);for(var n=0;n3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,o=this,s=e._private.rscratch;if(!(i&&!e.visible())&&!(s.badLine||s.allpts==null||isNaN(s.allpts[0]))){var u;r&&(u=r,t.translate(-u.x1,-u.y1));var l=i?e.pstyle(`opacity`).value:1,f=i?e.pstyle(`line-opacity`).value:1,v=e.pstyle(`curve-style`).value,c=e.pstyle(`line-style`).value,h=e.pstyle(`width`).pfValue,d=e.pstyle(`line-cap`).value,y=e.pstyle(`line-outline-width`).value,g=e.pstyle(`line-outline-color`).value,p=l*f,m=l*f,b=function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p;v===`straight-triangle`?(o.eleStrokeStyle(t,e,O),o.drawEdgeTrianglePath(e,t,s.allpts)):(t.lineWidth=h,t.lineCap=d,o.eleStrokeStyle(t,e,O),o.drawEdgePath(e,t,s.allpts,c),t.lineCap=`butt`)},w=function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p;if(t.lineWidth=h+y,t.lineCap=d,y>0)o.colorStrokeStyle(t,g[0],g[1],g[2],O);else{t.lineCap=`butt`;return}v===`straight-triangle`?o.drawEdgeTrianglePath(e,t,s.allpts):(o.drawEdgePath(e,t,s.allpts,c),t.lineCap=`butt`)},E=function(){n&&o.drawEdgeOverlay(t,e)},C=function(){n&&o.drawEdgeUnderlay(t,e)},x=function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:m;o.drawArrowheads(t,e,O)},T=function(){o.drawElementText(t,e,null,a)};t.lineJoin=`round`;if(e.pstyle(`ghost`).value===`yes`){var B=e.pstyle(`ghost-offset-x`).pfValue,k=e.pstyle(`ghost-offset-y`).pfValue,A=p*e.pstyle(`ghost-opacity`).value;t.translate(B,k),b(A),x(A),t.translate(-B,-k)}else w();C(),b(),x(),E(),T(),r&&t.translate(u.x1,u.y1)}};var _v=function(e){if(![`overlay`,`underlay`].includes(e))throw new Error(`Invalid state`);return function(r,a){if(a.visible()){var n=a.pstyle(``.concat(e,`-opacity`)).value;if(n!==0){var i=this,o=i.usePaths(),s=a._private.rscratch,l=2*a.pstyle(``.concat(e,`-padding`)).pfValue,f=a.pstyle(``.concat(e,`-color`)).value;r.lineWidth=l,s.edgeType===`self`&&!o?r.lineCap=`butt`:r.lineCap=`round`,i.colorStrokeStyle(r,f[0],f[1],f[2],n),i.drawEdgePath(a,r,s.allpts,`solid`)}}}};Zt.drawEdgeOverlay=_v(`overlay`);Zt.drawEdgeUnderlay=_v(`underlay`);Zt.drawEdgePath=function(t,e,r,a){var n=t._private.rscratch,i=e,o,s=!1,u=this.usePaths(),l=t.pstyle(`line-dash-pattern`).pfValue,f=t.pstyle(`line-dash-offset`).pfValue;if(u){var v=r.join(`$`);n.pathCacheKey&&n.pathCacheKey===v?(o=e=n.pathCache,s=!0):(o=e=new Path2D,n.pathCacheKey=v,n.pathCache=o)}if(i.setLineDash)switch(a){case`dotted`:i.setLineDash([1,1]);break;case`dashed`:i.setLineDash(l),i.lineDashOffset=f;break;case`solid`:i.setLineDash([])}if(!s&&!n.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(r[0],r[1]),n.edgeType){case`bezier`:case`self`:case`compound`:case`multibezier`:for(var h=2;h+35&&arguments[5]!==void 0?arguments[5]:!0,o=this;if(a==null){if(i&&!o.eleTextBiggerThanMin(e))return}else if(a===!1)return;if(e.isNode()){var s=e.pstyle(`label`);if(!s||!s.value)return;var u=o.getLabelJustification(e),l=e.pstyle(`text-metrics`).strValue===`glyph`;t.textAlign=u,t.textBaseline=l?`alphabetic`:`bottom`}else{var f=e.element()._private.rscratch.badLine,v=e.pstyle(`label`),c=e.pstyle(`source-label`),h=e.pstyle(`target-label`);if(f||(!v||!v.value)&&(!c||!c.value)&&(!h||!h.value))return;t.textAlign=`center`,t.textBaseline=`bottom`}var d=!r,y;r&&(y=r,t.translate(-y.x1,-y.y1)),n==null?(o.drawText(t,e,null,d,i),e.isEdge()&&(o.drawText(t,e,`source`,d,i),o.drawText(t,e,`target`,d,i))):o.drawText(t,e,n,d,i),r&&t.translate(y.x1,y.y1)};Lr.getFontCache=function(t){var e;this.fontCaches=this.fontCaches||[];for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!0,a=e.pstyle(`font-style`).strValue,n=e.pstyle(`font-size`).pfValue+`px`,i=e.pstyle(`font-family`).strValue,o=e.pstyle(`font-weight`).strValue,s=r?e.effectiveOpacity()*e.pstyle(`text-opacity`).value:1,u=e.pstyle(`text-outline-opacity`).value*s,l=e.pstyle(`color`).value,f=e.pstyle(`text-outline-color`).value;t.font=a+` `+o+` `+n+` `+i,t.lineJoin=`round`,this.colorFillStyle(t,l[0],l[1],l[2],s),this.colorStrokeStyle(t,f[0],f[1],f[2],u)};function rm(t,e,r,a,n){var o=Math.min(a,n)/2,s=e+a/2,u=r+n/2;t.beginPath(),t.arc(s,u,o,0,Math.PI*2),t.closePath()}function Jl(t,e,r,a,n){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:5,o=Math.min(i,a/2,n/2);t.beginPath(),t.moveTo(e+o,r),t.lineTo(e+a-o,r),t.quadraticCurveTo(e+a,r,e+a,r+o),t.lineTo(e+a,r+n-o),t.quadraticCurveTo(e+a,r+n,e+a-o,r+n),t.lineTo(e+o,r+n),t.quadraticCurveTo(e,r+n,e,r+n-o),t.lineTo(e,r+o),t.quadraticCurveTo(e,r,e+o,r),t.closePath()}Lr.getTextAngle=function(t,e){var r,n=t._private.rscratch,i=e?e+`-`:``,o=t.pstyle(i+`text-rotation`);if(o.strValue===`autorotate`){var s=pt(n,`labelAngle`,e);r=t.isEdge()?s:0}else o.strValue===`none`?r=0:r=o.pfValue;return r};Lr.drawText=function(t,e,r){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,o=e._private.rscratch,s=n?e.effectiveOpacity():1;if(!(n&&(s===0||e.pstyle(`text-opacity`).value===0))){r===`main`&&(r=null);var u=pt(o,`labelX`,r),l=pt(o,`labelY`,r),f,v,c=this.getLabelText(e,r);if(c!=null&&c!==``&&!isNaN(u)&&!isNaN(l)){this.setupTextStyle(t,e,n);var h=r?r+`-`:``,d=pt(o,`labelWidth`,r),y=pt(o,`labelHeight`,r),g=pt(o,`labelActualDescent`,r),p=e.pstyle(h+`text-margin-x`).pfValue,m=e.pstyle(h+`text-margin-y`).pfValue,b=e.isEdge(),w=e.pstyle(`text-halign`).value,E=e.pstyle(`text-valign`).value;b&&(w=`center`,E=`center`),u+=p,l+=m;var C;a?C=this.getTextAngle(e,r):C=0,C!==0&&(f=u,v=l,t.translate(f,v),t.rotate(C),u=0,l=0);var x=jr(w),T=ea(E);switch(T){case`top`:break;case`center`:l+=y/2;break;case`bottom`:l+=y}var S=e.pstyle(`text-background-opacity`).value,B=e.pstyle(`text-border-opacity`).value,k=e.pstyle(`text-border-width`).pfValue,P=e.pstyle(`text-background-padding`).pfValue,A=e.pstyle(`text-background-shape`).strValue,L=A===`round-rectangle`||A===`roundrectangle`,O=A===`circle`,N=2;if(S>0||k>0&&B>0){var I=t.fillStyle,R=t.strokeStyle,M=t.lineWidth,F=e.pstyle(`text-background-color`).value,z=e.pstyle(`text-border-color`).value,q=e.pstyle(`text-border-style`).value,X=S>0,J=k>0&&B>0,U=u-P;switch(x){case`left`:U-=d;break;case`center`:U-=d/2}var Q=l-y-P,j=d+2*P,ae=y+2*P;if(X&&(t.fillStyle=`rgba(`.concat(F[0],`,`).concat(F[1],`,`).concat(F[2],`,`).concat(S*s,`)`)),J&&(t.strokeStyle=`rgba(`.concat(z[0],`,`).concat(z[1],`,`).concat(z[2],`,`).concat(B*s,`)`),t.lineWidth=k,t.setLineDash))switch(q){case`dotted`:t.setLineDash([1,1]);break;case`dashed`:t.setLineDash([4,2]);break;case`double`:t.lineWidth=k/4,t.setLineDash([]);break;default:t.setLineDash([])}if(L?(t.beginPath(),Jl(t,U,Q,j,ae,N)):O?(t.beginPath(),rm(t,U,Q,j,ae)):(t.beginPath(),t.rect(U,Q,j,ae)),X&&t.fill(),J&&t.stroke(),J&&q===`double`){var Z=k/2;t.beginPath(),L?Jl(t,U+Z,Q+Z,j-2*Z,ae-2*Z,N):t.rect(U+Z,Q+Z,j-2*Z,ae-2*Z),t.stroke()}t.fillStyle=I,t.strokeStyle=R,t.lineWidth=M,t.setLineDash&&t.setLineDash([])}var _=2*e.pstyle(`text-outline-width`).pfValue;if(_>0&&(t.lineWidth=_),l-=g,e.pstyle(`text-wrap`).value===`wrap`){var G=pt(o,`labelWrapCachedLines`,r),H=pt(o,`labelLineHeight`,r),K=d/2,re=this.getLabelJustification(e);switch(re===`auto`||(x===`left`?re===`left`?u+=-d:re===`center`&&(u+=-K):x===`center`?re===`left`?u+=-K:re===`right`&&(u+=K):x===`right`&&(re===`center`?u+=K:re===`right`&&(u+=d))),T){case`top`:l-=(G.length-1)*H;break;case`center`:case`bottom`:l-=(G.length-1)*H}for(var oe=0;oe0&&t.strokeText(G[oe],u,l),t.fillText(G[oe],u,l),l+=H}else _>0&&t.strokeText(c,u,l),t.fillText(c,u,l);C!==0&&(t.rotate(-C),t.translate(-f,-v))}}};var pr={};pr.drawNode=function(t,e,r){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,o=this,s,u,l=e._private,f=l.rscratch,v=e.position();if(!(!ie(v.x)||!ie(v.y))&&!(i&&!e.visible())){var c=i?e.effectiveOpacity():1,h=o.usePaths(),d,y=!1,g=e.padding();s=e.width()+2*g,u=e.height()+2*g;var p;r&&(p=r,t.translate(-p.x1,-p.y1));for(var b=e.pstyle(`background-image`).value,w=new Array(b.length),E=new Array(b.length),C=0,x=0;x0&&arguments[0]!==void 0?arguments[0]:A;o.eleFillStyle(t,e,V)},Z=function(){var V=arguments.length>0&&arguments[0]!==void 0?arguments[0]:z;o.colorStrokeStyle(t,L[0],L[1],L[2],V)},_=function(){var V=arguments.length>0&&arguments[0]!==void 0?arguments[0]:U;o.colorStrokeStyle(t,X[0],X[1],X[2],V)},G=function(V,W,$,Y){var le=o.nodePathCache=o.nodePathCache||[],te=Tf($===`polygon`?$+`,`+Y.join(`,`):$,``+W,``+V,``+j),ue=le[te],se,ce=!1;return ue!=null?(se=ue,ce=!0,f.pathCache=se):(se=new Path2D,le[te]=f.pathCache=se),{path:se,cacheHit:ce}},H=e.pstyle(`shape`).strValue,K=e.pstyle(`shape-polygon-points`).pfValue;if(h){t.translate(v.x,v.y);var re=G(s,u,H,K);d=re.path,y=re.cacheHit}var oe=function(){if(!y){var V=v;h&&(V={x:0,y:0}),o.nodeShapes[o.getNodeShape(e)].draw(d||t,V.x,V.y,s,u,j,f)}h?t.fill(d):t.fill()},ke=function(){for(var V=arguments.length>0&&arguments[0]!==void 0?arguments[0]:c,W=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,$=l.backgrounding,Y=0,le=0;le0&&arguments[0]!==void 0?arguments[0]:!1,W=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c;o.hasPie(e)&&(o.drawPie(t,e,W),V&&(h||o.nodeShapes[o.getNodeShape(e)].draw(t,v.x,v.y,s,u,j,f)))},ye=function(){var V=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,W=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c;o.hasStripe(e)&&(t.save(),h?t.clip(f.pathCache):(o.nodeShapes[o.getNodeShape(e)].draw(t,v.x,v.y,s,u,j,f),t.clip()),o.drawStripe(t,e,W),t.restore(),V&&(h||o.nodeShapes[o.getNodeShape(e)].draw(t,v.x,v.y,s,u,j,f)))},he=function(){var V=arguments.length>0&&arguments[0]!==void 0?arguments[0]:c,W=(k>0?k:-k)*V,$=k>0?0:255;k!==0&&(o.colorFillStyle(t,$,$,$,W),h?t.fill(d):t.fill())},ne=function(){if(P>0){if(t.lineWidth=P,t.lineCap=I,t.lineJoin=N,t.setLineDash)switch(O){case`dotted`:t.setLineDash([1,1]);break;case`dashed`:t.setLineDash(M),t.lineDashOffset=F;break;case`solid`:case`double`:t.setLineDash([])}if(R!==`center`){if(t.save(),t.lineWidth*=2,R===`inside`)h?t.clip(d):t.clip();else{var V=new Path2D;V.rect(-s/2-P,-u/2-P,s+2*P,u+2*P),V.addPath(d),t.clip(V,`evenodd`)}h?t.stroke(d):t.stroke(),t.restore()}else h?t.stroke(d):t.stroke();if(O===`double`){t.lineWidth=P/3;var W=t.globalCompositeOperation;t.globalCompositeOperation=`destination-out`,h?t.stroke(d):t.stroke(),t.globalCompositeOperation=W}t.setLineDash&&t.setLineDash([])}},ve=function(){if(q>0){if(t.lineWidth=q,t.lineCap=`butt`,t.setLineDash)switch(J){case`dotted`:t.setLineDash([1,1]);break;case`dashed`:t.setLineDash([4,2]);break;case`solid`:case`double`:t.setLineDash([])}var V=v;h&&(V={x:0,y:0});var W=o.getNodeShape(e),$=P;R===`inside`&&($=0),R===`outside`&&($*=2);var Y=(s+$+(q+Q))/s,le=(u+$+(q+Q))/u,te=s*Y,ue=u*le,se=o.nodeShapes[W].points,ce;if(h)ce=G(te,ue,W,se).path;if(W===`ellipse`)o.drawEllipsePath(ce||t,V.x,V.y,te,ue);else if([`round-diamond`,`round-heptagon`,`round-hexagon`,`round-octagon`,`round-pentagon`,`round-polygon`,`round-triangle`,`round-tag`].includes(W)){var xe=0,de=0,De=0;W===`round-diamond`?xe=($+Q+q)*1.4:W===`round-heptagon`?(xe=($+Q+q)*1.075,De=-($/2+Q+q)/35):W===`round-hexagon`?xe=($+Q+q)*1.12:W===`round-pentagon`?(xe=($+Q+q)*1.13,De=-($/2+Q+q)/15):W===`round-tag`?(xe=($+Q+q)*1.12,de=($/2+q+Q)*.07):W===`round-triangle`&&(xe=($+Q+q)*(Math.PI/2),De=-($+Q/2+q)/Math.PI),xe!==0&&(Y=(s+xe)/s,te=s*Y,[`round-hexagon`,`round-tag`].includes(W)||(le=(u+xe)/u,ue=u*le)),j=j===`auto`?Of(te,ue):j;for(var Pe=te/2,tt=ue/2,rt=j+($+q+Q)/2,bt=new Array(se.length/2),Xe=new Array(se.length/2),Ze=0;Ze0){if(n=n||a.position(),i==null||o==null){var h=a.padding();i=a.width()+2*h,o=a.height()+2*h}s.colorFillStyle(r,f[0],f[1],f[2],l),s.nodeShapes[v].draw(r,n.x,n.y,i+u*2,o+u*2,c),r.fill()}}}};pr.drawNodeOverlay=Gv(`overlay`);pr.drawNodeUnderlay=Gv(`underlay`);pr.hasPie=function(t){return t=t[0],t._private.hasPie};pr.hasStripe=function(t){return t=t[0],t._private.hasStripe};pr.drawPie=function(t,e,r,a){e=e[0],a=a||e.position();var n=e.cy().style(),i=e.pstyle(`pie-size`),o=e.pstyle(`pie-hole`),s=e.pstyle(`pie-start-angle`).pfValue,u=a.x,l=a.y,f=e.width(),v=e.height(),c=Math.min(f,v)/2,h,d=0;if(this.usePaths()&&(u=0,l=0),i.units===`%`?c=c*i.pfValue:i.pfValue!==void 0&&(c=i.pfValue/2),o.units===`%`?h=c*o.pfValue:o.pfValue!==void 0&&(h=o.pfValue/2),!(h>=c))for(var g=1;g<=n.pieBackgroundN;g++){var p=e.pstyle(`pie-`+g+`-background-size`).value,m=e.pstyle(`pie-`+g+`-background-color`).value,b=e.pstyle(`pie-`+g+`-background-opacity`).value*r,w=p/100;w+d>1&&(w=1-d);var E=1.5*Math.PI+2*Math.PI*d;E+=s;var C=2*Math.PI*w,x=E+C;p===0||d>=1||d+w>1||(h===0?(t.beginPath(),t.moveTo(u,l),t.arc(u,l,c,E,x),t.closePath()):(t.beginPath(),t.arc(u,l,c,E,x),t.arc(u,l,h,x,E,!0),t.closePath()),this.colorFillStyle(t,m[0],m[1],m[2],b),t.fill(),d+=w)}};pr.drawStripe=function(t,e,r,a){e=e[0],a=a||e.position();var n=e.cy().style(),i=a.x,o=a.y,s=e.width(),u=e.height(),l=0,f=this.usePaths();t.save();var v=e.pstyle(`stripe-direction`).value,c=e.pstyle(`stripe-size`);switch(v){case`vertical`:break;case`righward`:t.rotate(-Math.PI/2)}var h=s,d=u;c.units===`%`?(h=h*c.pfValue,d=d*c.pfValue):c.pfValue!==void 0&&(h=c.pfValue,d=c.pfValue),f&&(i=0,o=0),o-=h/2,i-=d/2;for(var y=1;y<=n.stripeBackgroundN;y++){var g=e.pstyle(`stripe-`+y+`-background-size`).value,p=e.pstyle(`stripe-`+y+`-background-color`).value,m=e.pstyle(`stripe-`+y+`-background-opacity`).value*r,b=g/100;b+l>1&&(b=1-l),!(g===0||l>=1||l+b>1)&&(t.beginPath(),t.rect(i,o+d*l,h,d*b),t.closePath(),this.colorFillStyle(t,p[0],p[1],p[2],m),t.fill(),l+=b)}t.restore()};var mt={};var am=100;mt.getPixelRatio=function(){var t=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var e=this.cy.window(),r=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(e.devicePixelRatio||1)/r};mt.paintCache=function(t){for(var e=this.paintCaches=this.paintCaches||[],r=!0,a,n=0;ne.minMbLowQualFrames&&(e.motionBlurPxRatio=e.mbPxRBlurry)),e.clearingMotionBlur&&(e.motionBlurPxRatio=1),e.textureDrawLastFrame&&!v&&(f[e.NODE]=!0,f[e.SELECT_BOX]=!0);var m=r.style(),b=r.zoom(),w=o!==void 0?o:b,E=r.pan(),C={x:E.x,y:E.y},x={zoom:b,pan:{x:E.x,y:E.y}},T=e.prevViewport;T!==void 0&&x.zoom===T.zoom&&x.pan.x===T.pan.x&&x.pan.y===T.pan.y&&(!y||d)&&(e.motionBlurPxRatio=1),s&&(C=s),w*=u,C.x*=u,C.y*=u;var B=e.getCachedZSortedEles();function k(Z,_,G,H,K){var re=Z.globalCompositeOperation;Z.globalCompositeOperation=`destination-out`,e.colorFillStyle(Z,255,255,255,e.motionBlurTransparency),Z.fillRect(_,G,H,K),Z.globalCompositeOperation=re}function P(Z,_){var G,H,K,re;!e.clearingMotionBlur&&(Z===l.bufferContexts[e.MOTIONBLUR_BUFFER_NODE]||Z===l.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG])?(G={x:E.x*h,y:E.y*h},H=b*h,K=e.canvasWidth*h,re=e.canvasHeight*h):(G=C,H=w,K=e.canvasWidth,re=e.canvasHeight),Z.setTransform(1,0,0,1,0,0),_===`motionBlur`?k(Z,0,0,K,re):!a&&(_===void 0||_)&&Z.clearRect(0,0,K,re),n||(Z.translate(G.x,G.y),Z.scale(H,H)),s&&Z.translate(s.x,s.y),o&&Z.scale(o,o)}if(v||(e.textureDrawLastFrame=!1),v){if(e.textureDrawLastFrame=!0,!e.textureCache){e.textureCache={},e.textureCache.bb=r.mutableElements().boundingBox(),e.textureCache.texture=e.data.bufferCanvases[e.TEXTURE_BUFFER];var A=e.data.bufferContexts[e.TEXTURE_BUFFER];A.setTransform(1,0,0,1,0,0),A.clearRect(0,0,e.canvasWidth*e.textureMult,e.canvasHeight*e.textureMult),e.render({forcedContext:A,drawOnlyNodeLayer:!0,forcedPxRatio:u*e.textureMult});var x=e.textureCache.viewport={zoom:r.zoom(),pan:r.pan(),width:e.canvasWidth,height:e.canvasHeight};x.mpan={x:(0-x.pan.x)/x.zoom,y:(0-x.pan.y)/x.zoom}}f[e.DRAG]=!1,f[e.NODE]=!1;var L=l.contexts[e.NODE],O=e.textureCache.texture,x=e.textureCache.viewport;L.setTransform(1,0,0,1,0,0),c?k(L,0,0,x.width,x.height):L.clearRect(0,0,x.width,x.height);var N=m.core(`outside-texture-bg-color`).value,I=m.core(`outside-texture-bg-opacity`).value;e.colorFillStyle(L,N[0],N[1],N[2],I),L.fillRect(0,0,x.width,x.height);var b=r.zoom();P(L,!1),L.clearRect(x.mpan.x,x.mpan.y,x.width/x.zoom/u,x.height/x.zoom/u),L.drawImage(O,x.mpan.x,x.mpan.y,x.width/x.zoom/u,x.height/x.zoom/u)}else e.textureOnViewport&&!a&&(e.textureCache=null);var R=r.extent(),M=e.pinching||e.hoverData.dragging||e.swipePanning||e.data.wheelZooming||e.hoverData.draggingEles||e.cy.animated(),F=e.hideEdgesOnViewport&&M,z=[];if(z[e.NODE]=!f[e.NODE]&&c&&!e.clearedForMotionBlur[e.NODE]||e.clearingMotionBlur,z[e.NODE]&&(e.clearedForMotionBlur[e.NODE]=!0),z[e.DRAG]=!f[e.DRAG]&&c&&!e.clearedForMotionBlur[e.DRAG]||e.clearingMotionBlur,z[e.DRAG]&&(e.clearedForMotionBlur[e.DRAG]=!0),f[e.NODE]||n||i||z[e.NODE]){var q=c&&!z[e.NODE]&&h!==1,L=a||(q?e.data.bufferContexts[e.MOTIONBLUR_BUFFER_NODE]:l.contexts[e.NODE]);P(L,c&&!q?`motionBlur`:void 0),F?e.drawCachedNodes(L,B.nondrag,u,R):e.drawLayeredElements(L,B.nondrag,u,R),e.debug&&e.drawDebugPoints(L,B.nondrag),!n&&!c&&(f[e.NODE]=!1)}if(!i&&(f[e.DRAG]||n||z[e.DRAG])){var q=c&&!z[e.DRAG]&&h!==1,L=a||(q?e.data.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG]:l.contexts[e.DRAG]);P(L,c&&!q?`motionBlur`:void 0),F?e.drawCachedNodes(L,B.drag,u,R):e.drawCachedElements(L,B.drag,u,R),e.debug&&e.drawDebugPoints(L,B.drag),!n&&!c&&(f[e.DRAG]=!1)}if(this.drawSelectionRectangle(t,P),c&&h!==1){var J=l.contexts[e.NODE],U=e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_NODE],Q=l.contexts[e.DRAG],j=e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_DRAG],ae=function(_,G,H){_.setTransform(1,0,0,1,0,0),H||!p?_.clearRect(0,0,e.canvasWidth,e.canvasHeight):k(_,0,0,e.canvasWidth,e.canvasHeight);var K=h;_.drawImage(G,0,0,e.canvasWidth*K,e.canvasHeight*K,0,0,e.canvasWidth,e.canvasHeight)};(f[e.NODE]||z[e.NODE])&&(ae(J,U,z[e.NODE]),f[e.NODE]=!1),(f[e.DRAG]||z[e.DRAG])&&(ae(Q,j,z[e.DRAG]),f[e.DRAG]=!1)}e.prevViewport=x,e.clearingMotionBlur&&(e.clearingMotionBlur=!1,e.motionBlurCleared=!0,e.motionBlur=!0),c&&(e.motionBlurTimeout=setTimeout(function(){e.motionBlurTimeout=null,e.clearedForMotionBlur[e.NODE]=!1,e.clearedForMotionBlur[e.DRAG]=!1,e.motionBlur=!1,e.clearingMotionBlur=!v,e.mbFrames=0,f[e.NODE]=!0,f[e.DRAG]=!0,e.redraw()},am)),a||r.emit(`render`)};var ga;mt.drawSelectionRectangle=function(t,e){var r=this,a=r.cy,n=r.data,i=a.style(),o=t.drawOnlyNodeLayer,s=t.drawAllLayers,u=n.canvasNeedsRedraw,l=t.forcedContext;if(r.showFps||!o&&u[r.SELECT_BOX]&&!s){var f=l||n.contexts[r.SELECT_BOX];if(e(f),r.selection[4]==1&&(r.hoverData.selecting||r.touchData.selecting)){var v=r.cy.zoom(),c=i.core(`selection-box-border-width`).value/v;f.lineWidth=c,f.fillStyle=`rgba(`+i.core(`selection-box-color`).value[0]+`,`+i.core(`selection-box-color`).value[1]+`,`+i.core(`selection-box-color`).value[2]+`,`+i.core(`selection-box-opacity`).value+`)`,f.fillRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]),c>0&&(f.strokeStyle=`rgba(`+i.core(`selection-box-border-color`).value[0]+`,`+i.core(`selection-box-border-color`).value[1]+`,`+i.core(`selection-box-border-color`).value[2]+`,`+i.core(`selection-box-opacity`).value+`)`,f.strokeRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]))}if(n.bgActivePosistion&&!r.hoverData.selecting){var v=r.cy.zoom(),h=n.bgActivePosistion;f.fillStyle=`rgba(`+i.core(`active-bg-color`).value[0]+`,`+i.core(`active-bg-color`).value[1]+`,`+i.core(`active-bg-color`).value[2]+`,`+i.core(`active-bg-opacity`).value+`)`,f.beginPath(),f.arc(h.x,h.y,i.core(`active-bg-size`).pfValue/v,0,2*Math.PI),f.fill()}var d=r.lastRedrawTime;if(r.showFps&&d){d=Math.round(d);var y=Math.round(1e3/d),g=`1 frame = `+d+` ms = `+y+` fps`;if(f.setTransform(1,0,0,1,0,0),f.fillStyle=`rgba(255, 0, 0, 0.75)`,f.strokeStyle=`rgba(255, 0, 0, 0.75)`,f.font=`30px Arial`,!ga)ga=f.measureText(g).actualBoundingBoxAscent;f.fillText(g,0,ga);f.strokeRect(0,ga+10,250,20),f.fillRect(0,ga+10,250*Math.min(y/60,1),20)}s||(u[r.SELECT_BOX]=!1)}};function jl(t,e,r){var a=t.createShader(e);if(t.shaderSource(a,r),t.compileShader(a),!t.getShaderParameter(a,t.COMPILE_STATUS))throw new Error(t.getShaderInfoLog(a));return a}function nm(t,e,r){var a=jl(t,t.VERTEX_SHADER,e),n=jl(t,t.FRAGMENT_SHADER,r),i=t.createProgram();if(t.attachShader(i,a),t.attachShader(i,n),t.linkProgram(i),!t.getProgramParameter(i,t.LINK_STATUS))throw new Error(`Could not initialize shaders`);return i}function im(t,e,r){r===void 0&&(r=e);var a=t.makeOffscreenCanvas(e,r),n=a.context=a.getContext(`2d`);return a.clear=function(){return n.clearRect(0,0,a.width,a.height)},a.clear(),a}function Ts(t){var e=t.pixelRatio,r=t.cy.zoom(),a=t.cy.pan();return{zoom:r*e,pan:{x:a.x*e,y:a.y*e}}}function om(t){var e=t.pixelRatio;return t.cy.zoom()*e}function sm(t,e,r,a,n){var i=a*r+e.x,o=n*r+e.y;return o=Math.round(t.canvasHeight-o),[i,o]}function um(t,e){return e.picking?!0:t.pstyle(`background-fill`).value!==`solid`||t.pstyle(`background-image`).strValue!==`none`?!1:t.pstyle(`border-width`).value===0||t.pstyle(`border-opacity`).value===0?!0:t.pstyle(`border-style`).value===`solid`}function lm(t,e){if(t.length!==e.length)return!1;for(var r=0;r>0&255)/255,r[1]=(t>>8&255)/255,r[2]=(t>>16&255)/255,r[3]=(t>>24&255)/255,r}function fm(t){return t[0]+(t[1]<<8)+(t[2]<<16)+(t[3]<<24)}function vm(t,e){var r=t.createTexture();return r.buffer=function(a){t.bindTexture(t.TEXTURE_2D,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_NEAREST),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,a),t.generateMipmap(t.TEXTURE_2D),t.bindTexture(t.TEXTURE_2D,null)},r.deleteTexture=function(){t.deleteTexture(r)},r}function $v(t,e){switch(e){case`float`:return[1,t.FLOAT,4];case`vec2`:return[2,t.FLOAT,4];case`vec3`:return[3,t.FLOAT,4];case`vec4`:return[4,t.FLOAT,4];case`int`:return[1,t.INT,4];case`ivec2`:return[2,t.INT,4]}}function Hv(t,e,r){switch(e){case t.FLOAT:return new Float32Array(r);case t.INT:return new Int32Array(r)}}function cm(t,e,r,a,n,i){switch(e){case t.FLOAT:return new Float32Array(r.buffer,i*a,n);case t.INT:return new Int32Array(r.buffer,i*a,n)}}function dm(t,e,r,a){var i=Ye($v(t,e),2),o=i[0],s=i[1],u=Hv(t,s,a),l=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,l),t.bufferData(t.ARRAY_BUFFER,u,t.STATIC_DRAW),s===t.FLOAT?t.vertexAttribPointer(r,o,s,!1,0,0):s===t.INT&&t.vertexAttribIPointer(r,o,s,0,0),t.enableVertexAttribArray(r),t.bindBuffer(t.ARRAY_BUFFER,null),l}function Ft(t,e,r,a){var i=Ye($v(t,r),3),o=i[0],s=i[1],u=i[2],l=Hv(t,s,e*o),f=o*u,v=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,v),t.bufferData(t.ARRAY_BUFFER,e*f,t.DYNAMIC_DRAW),t.enableVertexAttribArray(a),s===t.FLOAT?t.vertexAttribPointer(a,o,s,!1,f,0):s===t.INT&&t.vertexAttribIPointer(a,o,s,f,0),t.vertexAttribDivisor(a,1),t.bindBuffer(t.ARRAY_BUFFER,null);for(var c=new Array(e),h=0;ho&&(s=o/a,u=a*s,l=n*s),{scale:s,texW:u,texH:l}}},{key:`draw`,value:function(r,a,n){var i=this;if(this.locked)throw new Error(`can't draw, atlas is locked`);var o=this.texSize,s=this.texRows,u=this.texHeight,l=this.getScale(a),f=l.scale,v=l.texW,c=l.texH,h=function(b,w){if(n&&w){var E=w.context,C=b.x,x=b.row,T=C,S=u*x;E.save(),E.translate(T,S),E.scale(f,f),n(E,a),E.restore()}},d=[null,null],y=function(){h(i.freePointer,i.canvas),d[0]={x:i.freePointer.x,y:i.freePointer.row*u,w:v,h:c},d[1]={x:i.freePointer.x+v,y:i.freePointer.row*u,w:0,h:c},i.freePointer.x+=v,i.freePointer.x==o&&(i.freePointer.x=0,i.freePointer.row++)},g=function(){var b=i.scratch,w=i.canvas;b.clear(),h({x:0,row:0},b);var E=o-i.freePointer.x,C=v-E,x=u;var T=i.freePointer.x,S=i.freePointer.row*u,B=E;w.context.drawImage(b,0,0,B,x,T,S,B,x),d[0]={x:T,y:S,w:B,h:c};var k=E,P=(i.freePointer.row+1)*u,A=C;w&&w.context.drawImage(b,k,0,A,x,0,P,A,x),d[1]={x:0,y:P,w:A,h:c};i.freePointer.x=C,i.freePointer.row++},p=function(){i.freePointer.x=0,i.freePointer.row++};if(this.freePointer.x+v<=o)y();else{if(this.freePointer.row>=s-1)return!1;this.freePointer.x===o?(p(),y()):this.enableWrapping?g():(p(),y())}return this.keyToLocation.set(r,d),this.needsBuffer=!0,d}},{key:`getOffsets`,value:function(r){return this.keyToLocation.get(r)}},{key:`isEmpty`,value:function(){return this.freePointer.x===0&&this.freePointer.row===0}},{key:`canFit`,value:function(r){if(this.locked)return!1;var a=this.texSize,n=this.texRows,o=this.getScale(r).texW;return this.freePointer.x+o>a?this.freePointer.row1&&arguments[1]!==void 0?arguments[1]:{},i=n.forceRedraw,o=i===void 0?!1:i,s=n.filterEle,u=s===void 0?function(){return!0}:s,l=n.filterType,f=l===void 0?function(){return!0}:l,v=!1,c=!1,h=Ct(r),d;try{for(h.s();!(d=h.n()).done;){var y=d.value;if(u(y)){var g=Ct(this.renderTypes.values()),p;try{var m=function(){var w=p.value,E=w.type;if(f(E)){var C=a.collections.get(w.collection),x=w.getKey(y),T=Array.isArray(x)?x:[x];if(o)T.forEach(function(P){return C.markKeyForGC(P)}),c=!0;else{var S=w.getID?w.getID(y):y.id(),B=a._key(E,S),k=a.typeAndIdToKey.get(B);k!==void 0&&!lm(T,k)&&(v=!0,a.typeAndIdToKey.delete(B),k.forEach(function(P){return C.markKeyForGC(P)}))}}};for(g.s();!(p=g.n()).done;)m()}catch(b){g.e(b)}finally{g.f()}}}}catch(b){h.e(b)}finally{h.f()}return c&&(this.gc(),v=!1),v}},{key:`gc`,value:function(){var r=Ct(this.collections.values()),a;try{for(r.s();!(a=r.n()).done;)a.value.gc()}catch(i){r.e(i)}finally{r.f()}}},{key:`getOrCreateAtlas`,value:function(r,a,n,i){var o=this.renderTypes.get(a),s=this.collections.get(o.collection),u=!1,l=s.draw(i,n,function(c){o.drawClipped?(c.save(),c.beginPath(),c.rect(0,0,n.w,n.h),c.clip(),o.drawElement(c,r,n,!0,!0),c.restore()):o.drawElement(c,r,n,!0,!0),u=!0});if(u){var f=o.getID?o.getID(r):r.id(),v=this._key(a,f);this.typeAndIdToKey.has(v)?this.typeAndIdToKey.get(v).push(i):this.typeAndIdToKey.set(v,[i])}return l}},{key:`getAtlasInfo`,value:function(r,a){var n=this,i=this.renderTypes.get(a),o=i.getKey(r);return(Array.isArray(o)?o:[o]).map(function(u){var l=i.getBoundingBox(r,u),f=n.getOrCreateAtlas(r,a,l,u),c=Ye(f.getOffsets(u),2),h=c[0];return{atlas:f,tex:h,tex1:h,tex2:c[1],bb:l}})}},{key:`getDebugInfo`,value:function(){var r=[],a=Ct(this.collections),n;try{for(a.s();!(n=a.n()).done;){var i=Ye(n.value,2),o=i[0],u=i[1].getCounts(),l=u.keyCount,f=u.atlasCount;r.push({type:o,keyCount:l,atlasCount:f})}}catch(v){a.e(v)}finally{a.f()}return r}}])})();var Em=(function(){function t(e){dr(this,t),this.globalOptions=e,this.atlasSize=e.webglTexSize,this.maxAtlasesPerBatch=e.webglTexPerBatch,this.batchAtlases=[]}return hr(t,[{key:`getMaxAtlasesPerBatch`,value:function(){return this.maxAtlasesPerBatch}},{key:`getAtlasSize`,value:function(){return this.atlasSize}},{key:`getIndexArray`,value:function(){return Array.from({length:this.maxAtlasesPerBatch},function(r,a){return a})}},{key:`startBatch`,value:function(){this.batchAtlases=[]}},{key:`getAtlasCount`,value:function(){return this.batchAtlases.length}},{key:`getAtlases`,value:function(){return this.batchAtlases}},{key:`canAddToCurrentBatch`,value:function(r){return this.batchAtlases.length===this.maxAtlasesPerBatch?this.batchAtlases.includes(r):!0}},{key:`getAtlasIndexForBatch`,value:function(r){var a=this.batchAtlases.indexOf(r);if(a<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)throw new Error(`cannot add more atlases to batch`);this.batchAtlases.push(r),a=this.batchAtlases.length-1}return a}}])})();var Cm=` - float circleSD(vec2 p, float r) { - return distance(vec2(0), p) - r; // signed distance - } -`;var Tm=` - float rectangleSD(vec2 p, vec2 b) { - vec2 d = abs(p)-b; - return distance(vec2(0),max(d,0.0)) + min(max(d.x,d.y),0.0); - } -`;var Sm=` - float roundRectangleSD(vec2 p, vec2 b, vec4 cr) { - cr.xy = (p.x > 0.0) ? cr.xy : cr.zw; - cr.x = (p.y > 0.0) ? cr.x : cr.y; - vec2 q = abs(p) - b + cr.x; - return min(max(q.x, q.y), 0.0) + distance(vec2(0), max(q, 0.0)) - cr.x; - } -`;var km=` - float ellipseSD(vec2 p, vec2 ab) { - p = abs( p ); // symmetry - - // find root with Newton solver - vec2 q = ab*(p-ab); - float w = (q.x1.0) ? d : -d; - } -`;var Ca={SCREEN:{name:`screen`,screen:!0},PICKING:{name:`picking`,picking:!0}};var Mn={IGNORE:1,USE_BB:2};var Po=0;var af=1;var nf=2;var Ao=3;var _r=4;var un=5;var pa=6;var ya=7;var Dm=(function(){function t(e,r,a){dr(this,t),this.r=e,this.gl=r,this.maxInstances=a.webglBatchSize,this.atlasSize=a.webglTexSize,this.bgColor=a.bgColor,this.debug=a.webglDebug,this.batchDebugInfo=[],a.enableWrapping=!0,a.createTextureCanvas=im,this.atlasManager=new xm(e,a),this.batchManager=new Em(a),this.simpleShapeOptions=new Map,this.program=this._createShaderProgram(Ca.SCREEN),this.pickingProgram=this._createShaderProgram(Ca.PICKING),this.vao=this._createVAO()}return hr(t,[{key:`addAtlasCollection`,value:function(r,a){this.atlasManager.addAtlasCollection(r,a)}},{key:`addTextureAtlasRenderType`,value:function(r,a){this.atlasManager.addRenderType(r,a)}},{key:`addSimpleShapeRenderType`,value:function(r,a){this.simpleShapeOptions.set(r,a)}},{key:`invalidate`,value:function(r){var n=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:{}).type,i=this.atlasManager;return n?i.invalidate(r,{filterType:function(s){return s===n},forceRedraw:!0}):i.invalidate(r)}},{key:`gc`,value:function(){this.atlasManager.gc()}},{key:`_createShaderProgram`,value:function(r){var a=this.gl,n=`#version 300 es - precision highp float; - - uniform mat3 uPanZoomMatrix; - uniform int uAtlasSize; - - // instanced - in vec2 aPosition; // a vertex from the unit square - - in mat3 aTransform; // used to transform verticies, eg into a bounding box - in int aVertType; // the type of thing we are rendering - - // the z-index that is output when using picking mode - in vec4 aIndex; - - // For textures - in int aAtlasId; // which shader unit/atlas to use - in vec4 aTex; // x/y/w/h of texture in atlas - - // for edges - in vec4 aPointAPointB; - in vec4 aPointCPointD; - in vec2 aLineWidth; // also used for node border width - - // simple shapes - in vec4 aCornerRadius; // for round-rectangle [top-right, bottom-right, top-left, bottom-left] - in vec4 aColor; // also used for edges - in vec4 aBorderColor; // aLineWidth is used for border width - - // output values passed to the fragment shader - out vec2 vTexCoord; - out vec4 vColor; - out vec2 vPosition; - // flat values are not interpolated - flat out int vAtlasId; - flat out int vVertType; - flat out vec2 vTopRight; - flat out vec2 vBotLeft; - flat out vec4 vCornerRadius; - flat out vec4 vBorderColor; - flat out vec2 vBorderWidth; - flat out vec4 vIndex; - - void main(void) { - int vid = gl_VertexID; - vec2 position = aPosition; // TODO make this a vec3, simplifies some code below - - if(aVertType == `.concat(Po,`) { - float texX = aTex.x; // texture coordinates - float texY = aTex.y; - float texW = aTex.z; - float texH = aTex.w; - - if(vid == 1 || vid == 2 || vid == 4) { - texX += texW; - } - if(vid == 2 || vid == 4 || vid == 5) { - texY += texH; - } - - float d = float(uAtlasSize); - vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1 - - gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); - } - else if(aVertType == `).concat(_r,` || aVertType == `).concat(ya,` - || aVertType == `).concat(un,` || aVertType == `).concat(pa,`) { // simple shapes - - // the bounding box is needed by the fragment shader - vBotLeft = (aTransform * vec3(0, 0, 1)).xy; // flat - vTopRight = (aTransform * vec3(1, 1, 1)).xy; // flat - vPosition = (aTransform * vec3(position, 1)).xy; // will be interpolated - - // calculations are done in the fragment shader, just pass these along - vColor = aColor; - vCornerRadius = aCornerRadius; - vBorderColor = aBorderColor; - vBorderWidth = aLineWidth; - - gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); - } - else if(aVertType == `).concat(af,`) { - vec2 source = aPointAPointB.xy; - vec2 target = aPointAPointB.zw; - - // adjust the geometry so that the line is centered on the edge - position.y = position.y - 0.5; - - // stretch the unit square into a long skinny rectangle - vec2 xBasis = target - source; - vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x)); - vec2 point = source + xBasis * position.x + yBasis * aLineWidth[0] * position.y; - - gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0); - vColor = aColor; - } - else if(aVertType == `).concat(nf,`) { - vec2 pointA = aPointAPointB.xy; - vec2 pointB = aPointAPointB.zw; - vec2 pointC = aPointCPointD.xy; - vec2 pointD = aPointCPointD.zw; - - // adjust the geometry so that the line is centered on the edge - position.y = position.y - 0.5; - - vec2 p0, p1, p2, pos; - if(position.x == 0.0) { // The left side of the unit square - p0 = pointA; - p1 = pointB; - p2 = pointC; - pos = position; - } else { // The right side of the unit square, use same approach but flip the geometry upside down - p0 = pointD; - p1 = pointC; - p2 = pointB; - pos = vec2(0.0, -position.y); - } - - vec2 p01 = p1 - p0; - vec2 p12 = p2 - p1; - vec2 p21 = p1 - p2; - - // Find the normal vector. - vec2 tangent = normalize(normalize(p12) + normalize(p01)); - vec2 normal = vec2(-tangent.y, tangent.x); - - // Find the vector perpendicular to p0 -> p1. - vec2 p01Norm = normalize(vec2(-p01.y, p01.x)); - - // Determine the bend direction. - float sigma = sign(dot(p01 + p21, normal)); - float width = aLineWidth[0]; - - if(sign(pos.y) == -sigma) { - // This is an intersecting vertex. Adjust the position so that there's no overlap. - vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm); - gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); - } else { - // This is a non-intersecting vertex. Treat it like a mitre join. - vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm); - gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); - } - - vColor = aColor; - } - else if(aVertType == `).concat(Ao,` && vid < 3) { - // massage the first triangle into an edge arrow - if(vid == 0) - position = vec2(-0.15, -0.3); - if(vid == 1) - position = vec2( 0.0, 0.0); - if(vid == 2) - position = vec2( 0.15, -0.3); - - gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); - vColor = aColor; - } - else { - gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space - } - - vAtlasId = aAtlasId; - vVertType = aVertType; - vIndex = aIndex; - } - `),i=this.batchManager.getIndexArray(),s=nm(a,n,`#version 300 es - precision highp float; - - // declare texture unit for each texture atlas in the batch - `.concat(i.map(function(l){return`uniform sampler2D uTexture`.concat(l,`;`)}).join(` - `),` - - uniform vec4 uBGColor; - uniform float uZoom; - - in vec2 vTexCoord; - in vec4 vColor; - in vec2 vPosition; // model coordinates - - flat in int vAtlasId; - flat in vec4 vIndex; - flat in int vVertType; - flat in vec2 vTopRight; - flat in vec2 vBotLeft; - flat in vec4 vCornerRadius; - flat in vec4 vBorderColor; - flat in vec2 vBorderWidth; - - out vec4 outColor; - - `).concat(Cm,` - `).concat(Tm,` - `).concat(Sm,` - `).concat(km,` - - vec4 blend(vec4 top, vec4 bot) { // blend colors with premultiplied alpha - return vec4( - top.rgb + (bot.rgb * (1.0 - top.a)), - top.a + (bot.a * (1.0 - top.a)) - ); - } - - vec4 distInterp(vec4 cA, vec4 cB, float d) { // interpolate color using Signed Distance - // scale to the zoom level so that borders don't look blurry when zoomed in - // note 1.5 is an aribitrary value chosen because it looks good - return mix(cA, cB, 1.0 - smoothstep(0.0, 1.5 / uZoom, abs(d))); - } - - void main(void) { - if(vVertType == `).concat(Po,`) { - // look up the texel from the texture unit - `).concat(i.map(function(l){return`if(vAtlasId == `.concat(l,`) outColor = texture(uTexture`).concat(l,`, vTexCoord);`)}).join(` - else `),` - } - else if(vVertType == `).concat(Ao,`) { - // mimics how canvas renderer uses context.globalCompositeOperation = 'destination-out'; - outColor = blend(vColor, uBGColor); - outColor.a = 1.0; // make opaque, masks out line under arrow - } - else if(vVertType == `).concat(_r,` && vBorderWidth == vec2(0.0)) { // simple rectangle with no border - outColor = vColor; // unit square is already transformed to the rectangle, nothing else needs to be done - } - else if(vVertType == `).concat(_r,` || vVertType == `).concat(ya,` - || vVertType == `).concat(un,` || vVertType == `).concat(pa,`) { // use SDF - - float outerBorder = vBorderWidth[0]; - float innerBorder = vBorderWidth[1]; - float borderPadding = outerBorder * 2.0; - float w = vTopRight.x - vBotLeft.x - borderPadding; - float h = vTopRight.y - vBotLeft.y - borderPadding; - vec2 b = vec2(w/2.0, h/2.0); // half width, half height - vec2 p = vPosition - vec2(vTopRight.x - b[0] - outerBorder, vTopRight.y - b[1] - outerBorder); // translate to center - - float d; // signed distance - if(vVertType == `).concat(_r,`) { - d = rectangleSD(p, b); - } else if(vVertType == `).concat(ya,` && w == h) { - d = circleSD(p, b.x); // faster than ellipse - } else if(vVertType == `).concat(ya,`) { - d = ellipseSD(p, b); - } else { - d = roundRectangleSD(p, b, vCornerRadius.wzyx); - } - - // use the distance to interpolate a color to smooth the edges of the shape, doesn't need multisampling - // we must smooth colors inwards, because we can't change pixels outside the shape's bounding box - if(d > 0.0) { - if(d > outerBorder) { - discard; - } else { - outColor = distInterp(vBorderColor, vec4(0), d - outerBorder); - } - } else { - if(d > innerBorder) { - vec4 outerColor = outerBorder == 0.0 ? vec4(0) : vBorderColor; - vec4 innerBorderColor = blend(vBorderColor, vColor); - outColor = distInterp(innerBorderColor, outerColor, d); - } - else { - vec4 outerColor; - if(innerBorder == 0.0 && outerBorder == 0.0) { - outerColor = vec4(0); - } else if(innerBorder == 0.0) { - outerColor = vBorderColor; - } else { - outerColor = blend(vBorderColor, vColor); - } - outColor = distInterp(vColor, outerColor, d - innerBorder); - } - } - } - else { - outColor = vColor; - } - - `).concat(r.picking?`if(outColor.a == 0.0) discard; - else outColor = vIndex;`:``,` - } - `));s.aPosition=a.getAttribLocation(s,`aPosition`),s.aIndex=a.getAttribLocation(s,`aIndex`),s.aVertType=a.getAttribLocation(s,`aVertType`),s.aTransform=a.getAttribLocation(s,`aTransform`),s.aAtlasId=a.getAttribLocation(s,`aAtlasId`),s.aTex=a.getAttribLocation(s,`aTex`),s.aPointAPointB=a.getAttribLocation(s,`aPointAPointB`),s.aPointCPointD=a.getAttribLocation(s,`aPointCPointD`),s.aLineWidth=a.getAttribLocation(s,`aLineWidth`),s.aColor=a.getAttribLocation(s,`aColor`),s.aCornerRadius=a.getAttribLocation(s,`aCornerRadius`),s.aBorderColor=a.getAttribLocation(s,`aBorderColor`),s.uPanZoomMatrix=a.getUniformLocation(s,`uPanZoomMatrix`),s.uAtlasSize=a.getUniformLocation(s,`uAtlasSize`),s.uBGColor=a.getUniformLocation(s,`uBGColor`),s.uZoom=a.getUniformLocation(s,`uZoom`),s.uTextures=[];for(var u=0;u1&&arguments[1]!==void 0?arguments[1]:Ca.SCREEN;this.panZoomMatrix=r,this.renderTarget=a,this.batchDebugInfo=[],this.wrappedCount=0,this.simpleCount=0,this.startBatch()}},{key:`startBatch`,value:function(){this.instanceCount=0,this.batchManager.startBatch()}},{key:`endFrame`,value:function(){this.endBatch()}},{key:`_isVisible`,value:function(r,a){return r.visible()?a&&a.isVisible?a.isVisible(r):!0:!1}},{key:`drawTexture`,value:function(r,a,n){var i=this.atlasManager,o=this.batchManager,s=i.getRenderTypeOpts(n);if(this._isVisible(r,s)&&!(r.isEdge()&&!this._isValidEdge(r))){if(this.renderTarget.picking&&s.getTexPickingMode){var u=s.getTexPickingMode(r);if(u===Mn.IGNORE)return;if(u==Mn.USE_BB){this.drawPickingRectangle(r,a,n);return}}var f=Ct(i.getAtlasInfo(r,n)),v;try{for(f.s();!(v=f.n()).done;){var c=v.value,h=c.atlas,d=c.tex1,y=c.tex2;o.canAddToCurrentBatch(h)||this.endBatch();for(var g=o.getAtlasIndexForBatch(h),p=0,m=[[d,!0],[y,!1]];p=this.maxInstances&&this.endBatch()}}}}catch(k){f.e(k)}finally{f.f()}}}},{key:`setTransformMatrix`,value:function(r,a,n,i){var o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=0;if(n.shapeProps&&n.shapeProps.padding&&(s=r.pstyle(n.shapeProps.padding).pfValue),i){var u=i.bb,l=i.tex1,f=i.tex2,v=l.w/(l.w+f.w);o||(v=1-v);var c=this._getAdjustedBB(u,s,o,v);this._applyTransformMatrix(a,c,n,r)}else{var h=n.getBoundingBox(r),d=this._getAdjustedBB(h,s,!0,1);this._applyTransformMatrix(a,d,n,r)}}},{key:`_applyTransformMatrix`,value:function(r,a,n,i){var o,s;tf(r);var u=n.getRotation?n.getRotation(i):0;if(u!==0){var l=n.getRotationPoint(i),f=l.x,v=l.y;bn(r,r,[f,v]),rf(r,r,u);var c=n.getRotationOffset(i);o=c.x+(a.xOffset||0),s=c.y+(a.yOffset||0)}else o=a.x1,s=a.y1;bn(r,r,[o,s]),Zo(r,r,[a.w,a.h])}},{key:`_getAdjustedBB`,value:function(r,a,n,i){var o=r.x1,s=r.y1,u=r.w,l=r.h,f=r.yOffset;a&&(o-=a,s-=a,u+=2*a,l+=2*a);var v=0,c=u*i;return n&&i<1?u=c:!n&&i<1&&(v=u-c,o+=v,u=c),{x1:o,y1:s,w:u,h:l,xOffset:v,yOffset:f}}},{key:`drawPickingRectangle`,value:function(r,a,n){var i=this.atlasManager.getRenderTypeOpts(n),o=this.instanceCount;this.vertTypeBuffer.getView(o)[0]=_r;qr(a,this.indexBuffer.getView(o));wr([0,0,0],1,this.colorBuffer.getView(o));var l=this.transformBuffer.getMatrixView(o);this.setTransformMatrix(r,l,i),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}},{key:`drawNode`,value:function(r,a,n){var i=this.simpleShapeOptions.get(n);if(this._isVisible(r,i)){var o=i.shapeProps,s=this._getVertTypeForShape(r,o.shape);if(s===void 0||i.isSimple&&!i.isSimple(r,this.renderTarget)){this.drawTexture(r,a,n);return}var u=this.instanceCount;if(this.vertTypeBuffer.getView(u)[0]=s,s===un||s===pa){var l=i.getBoundingBox(r),f=this._getCornerRadius(r,o.radius,l),v=this.cornerRadiusBuffer.getView(u);v[0]=f,v[1]=f,v[2]=f,v[3]=f,s===pa&&(v[0]=0,v[2]=0)}qr(a,this.indexBuffer.getView(u));var h=this.renderTarget.picking?1:n===`node-body`?r.effectiveOpacity():1,d=this.renderTarget.picking?1:r.pstyle(o.opacity).value*h,y=r.pstyle(o.color).value;wr(y,d,this.colorBuffer.getView(u));var p=this.lineWidthBuffer.getView(u);if(p[0]=0,p[1]=0,o.border){var m=r.pstyle(`border-width`).value;if(m>0){var b=r.pstyle(`border-color`).value;wr(b,h*r.pstyle(`border-opacity`).value,this.borderColorBuffer.getView(u));var C=r.pstyle(`border-position`).value;if(C===`inside`)p[0]=0,p[1]=-m;else if(C===`outside`)p[0]=m,p[1]=0;else{var x=m/2;p[0]=x,p[1]=-x}}}var T=this.transformBuffer.getMatrixView(u);this.setTransformMatrix(r,T,i),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}},{key:`_getVertTypeForShape`,value:function(r,a){switch(r.pstyle(a).value){case`rectangle`:return _r;case`ellipse`:return ya;case`roundrectangle`:case`round-rectangle`:return un;case`bottom-round-rectangle`:return pa;default:return}}},{key:`_getCornerRadius`,value:function(r,a,n){var i=n.w,o=n.h;if(r.pstyle(a).value===`auto`)return ur(i,o);var s=r.pstyle(a).pfValue,u=i/2,l=o/2;return Math.min(s,l,u)}},{key:`drawEdgeArrow`,value:function(r,a,n){if(r.visible()){var i=r._private.rscratch,o,s,u;if(n===`source`?(o=i.arrowStartX,s=i.arrowStartY,u=i.srcArrowAngle):(o=i.arrowEndX,s=i.arrowEndY,u=i.tgtArrowAngle),!(isNaN(o)||o==null||isNaN(s)||s==null||isNaN(u)||u==null)){if(r.pstyle(n+`-arrow-shape`).value!==`none`){var f=r.pstyle(n+`-arrow-color`).value,h=r.pstyle(`opacity`).value*r.pstyle(`line-opacity`).value,d=r.pstyle(`width`).pfValue,y=r.pstyle(`arrow-scale`).value,g=this.r.getArrowWidth(d,y),p=this.instanceCount,m=this.transformBuffer.getMatrixView(p);tf(m),bn(m,m,[o,s]),Zo(m,m,[g,g]),rf(m,m,u),this.vertTypeBuffer.getView(p)[0]=Ao;qr(a,this.indexBuffer.getView(p));wr(f,h,this.colorBuffer.getView(p)),this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}}},{key:`drawEdgeLine`,value:function(r,a){if(r.visible()){var n=this._getEdgePoints(r);if(n){var i=r.pstyle(`opacity`).value,o=r.pstyle(`line-opacity`).value,s=r.pstyle(`width`).pfValue,u=r.pstyle(`line-color`).value,l=i*o;if(n.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),n.length==4){var f=this.instanceCount;this.vertTypeBuffer.getView(f)[0]=af;qr(a,this.indexBuffer.getView(f));wr(u,l,this.colorBuffer.getView(f));var h=this.lineWidthBuffer.getView(f);h[0]=s;var d=this.pointAPointBBuffer.getView(f);d[0]=n[0],d[1]=n[1],d[2]=n[2],d[3]=n[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var y=0;y=this.maxInstances&&this.endBatch()}}}}},{key:`_isValidEdge`,value:function(r){var a=r._private.rscratch;return!(a.badLine||a.allpts==null||isNaN(a.allpts[0]))}},{key:`_getEdgePoints`,value:function(r){var a=r._private.rscratch;if(this._isValidEdge(r)){var n=a.allpts;if(n.length==4)return n;var i=this._getNumSegments(r);return this._getCurveSegmentPoints(n,i)}}},{key:`_getNumSegments`,value:function(r){return Math.min(Math.max(15,5),this.maxInstances)}},{key:`_getCurveSegmentPoints`,value:function(r,a){if(r.length==4)return r;for(var n=Array((a+1)*2),i=0;i<=a;i++)if(i==0)n[0]=r[0],n[1]=r[1];else if(i==a)n[i*2]=r[r.length-2],n[i*2+1]=r[r.length-1];else{var o=i/a;this._setCurvePoint(r,o,n,i*2)}return n}},{key:`_setCurvePoint`,value:function(r,a,n,i){if(r.length<=2)n[i]=r[0],n[i+1]=r[1];else{for(var o=Array(r.length-2),s=0;s0}},s=function(v){return v.pstyle(`text-events`).strValue===`yes`?Mn.USE_BB:Mn.IGNORE},u=function(v){var c=v.position(),h=c.x,d=c.y,y=v.outerWidth(),g=v.outerHeight();return{w:y,h:g,x1:h-y/2,y1:d-g/2}};r.drawing.addAtlasCollection(`node`,{texRows:t.webglTexRowsNodes}),r.drawing.addAtlasCollection(`label`,{texRows:t.webglTexRows}),r.drawing.addTextureAtlasRenderType(`node-body`,{collection:`node`,getKey:e.getStyleKey,getBoundingBox:e.getElementBox,drawElement:e.drawElement}),r.drawing.addSimpleShapeRenderType(`node-body`,{getBoundingBox:u,isSimple:um,shapeProps:{shape:`shape`,color:`background-color`,opacity:`background-opacity`,radius:`corner-radius`,border:!0}}),r.drawing.addSimpleShapeRenderType(`node-overlay`,{getBoundingBox:u,isVisible:o(`overlay`),shapeProps:{shape:`overlay-shape`,color:`overlay-color`,opacity:`overlay-opacity`,padding:`overlay-padding`,radius:`overlay-corner-radius`}}),r.drawing.addSimpleShapeRenderType(`node-underlay`,{getBoundingBox:u,isVisible:o(`underlay`),shapeProps:{shape:`underlay-shape`,color:`underlay-color`,opacity:`underlay-opacity`,padding:`underlay-padding`,radius:`underlay-corner-radius`}}),r.drawing.addTextureAtlasRenderType(`label`,{collection:`label`,getTexPickingMode:s,getKey:Ro(e.getLabelKey,null),getBoundingBox:Mo(e.getLabelBox,null),drawClipped:!0,drawElement:e.drawLabel,getRotation:n(null),getRotationPoint:e.getLabelRotationPoint,getRotationOffset:e.getLabelRotationOffset,isVisible:i(`label`)}),r.drawing.addTextureAtlasRenderType(`edge-source-label`,{collection:`label`,getTexPickingMode:s,getKey:Ro(e.getSourceLabelKey,`source`),getBoundingBox:Mo(e.getSourceLabelBox,`source`),drawClipped:!0,drawElement:e.drawSourceLabel,getRotation:n(`source`),getRotationPoint:e.getSourceLabelRotationPoint,getRotationOffset:e.getSourceLabelRotationOffset,isVisible:i(`source-label`)}),r.drawing.addTextureAtlasRenderType(`edge-target-label`,{collection:`label`,getTexPickingMode:s,getKey:Ro(e.getTargetLabelKey,`target`),getBoundingBox:Mo(e.getTargetLabelBox,`target`),drawClipped:!0,drawElement:e.drawTargetLabel,getRotation:n(`target`),getRotationPoint:e.getTargetLabelRotationPoint,getRotationOffset:e.getTargetLabelRotationOffset,isVisible:i(`target-label`)});var l=Va(function(){console.log(`garbage collect flag set`),r.data.gc=!0},1e4);r.onUpdateEleCalcs(function(f,v){var c=!1;v&&v.length>0&&(c|=r.drawing.invalidate(v)),c&&l()}),Pm(r)};function Bm(t){var e=t.cy.container();return yf(e&&e.style&&e.style.backgroundColor||`white`)}function Uv(t,e){var r=t._private.rscratch;return pt(r,`labelWrapCachedLines`,e)||[]}var Ro=function(e,r){return function(a){var n=e(a),i=Uv(a,r);return i.length>1?i.map(function(o,s){return``.concat(n,`_`).concat(s)}):n}};var Mo=function(e,r){return function(a,n){var i=e(a);if(typeof n==`string`){var o=n.indexOf(`_`);if(o>0){var s=Number(n.substring(o+1)),u=Uv(a,r),l=i.h/u.length,f=l*s,v=i.y1+f;return{x1:i.x1,w:i.w,y1:v,h:l,yOffset:f}}}return i}};function Pm(t){var e=t.render;t.render=function(i){i=i||{};var o=t.cy;t.webgl&&(o.zoom()>Fv?(Am(t),e.call(t,i)):(Rm(t),Yv(t,i,Ca.SCREEN)))};var r=t.matchCanvasSize;t.matchCanvasSize=function(i){r.call(t,i),t.pickingFrameBuffer.setFramebufferAttachmentSizes(t.canvasWidth,t.canvasHeight),t.pickingFrameBuffer.needsDraw=!0};t.findNearestElements=function(i,o,s,u){return zm(t,i,o)};var a=t.invalidateCachedZSortedEles;t.invalidateCachedZSortedEles=function(){a.call(t),t.pickingFrameBuffer.needsDraw=!0};var n=t.notify;t.notify=function(i,o){n.call(t,i,o),i===`viewport`||i===`bounds`?t.pickingFrameBuffer.needsDraw=!0:i===`background`&&t.drawing.invalidate(o,{type:`node-body`})}}function Am(t){var e=t.data.contexts[t.WEBGL];e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT)}function Rm(t){var e=function(a){a.save(),a.setTransform(1,0,0,1,0,0),a.clearRect(0,0,t.canvasWidth,t.canvasHeight),a.restore()};e(t.data.contexts[t.NODE]),e(t.data.contexts[t.DRAG])}function Mm(t){var e=t.canvasWidth,r=t.canvasHeight,a=Ts(t),n=a.pan,i=a.zoom,o=Bo();bn(o,o,[n.x,n.y]),Zo(o,o,[i,i]);var s=Bo();ym(s,e,r);var u=Bo();return pm(u,s,o),u}function Kv(t,e){var r=t.canvasWidth,a=t.canvasHeight,n=Ts(t),i=n.pan,o=n.zoom;e.setTransform(1,0,0,1,0,0),e.clearRect(0,0,r,a),e.translate(i.x,i.y),e.scale(o,o)}function Lm(t,e){t.drawSelectionRectangle(e,function(r){return Kv(t,r)})}function Im(t){var e=t.data.contexts[t.NODE];e.save(),Kv(t,e),e.strokeStyle=`rgba(0, 0, 0, 0.3)`,e.beginPath(),e.moveTo(-1e3,0),e.lineTo(1e3,0),e.stroke(),e.beginPath(),e.moveTo(0,-1e3),e.lineTo(0,1e3),e.stroke(),e.restore()}function Om(t){var e=function(n,i,o){for(var s=n.atlasManager.getAtlasCollection(i),u=t.data.contexts[t.NODE],l=s.atlases,f=0;f=0&&w.add(x)}return w}function zm(t,e,r){var a=Nm(t,e,r),n=t.getCachedZSortedEles(),i,o,s=Ct(a),u;try{for(s.s();!(u=s.n()).done;){var f=n[u.value];if(!i&&f.isNode()&&(i=f),!o&&f.isEdge()&&(o=f),i&&o)break}}catch(v){s.e(v)}finally{s.f()}return[i,o].filter(Boolean)}function Lo(t,e,r){var a=t.drawing;e+=1,r.isNode()?(a.drawNode(r,e,`node-underlay`),a.drawNode(r,e,`node-body`),a.drawTexture(r,e,`label`),a.drawNode(r,e,`node-overlay`)):(a.drawEdgeLine(r,e),a.drawEdgeArrow(r,e,`source`),a.drawEdgeArrow(r,e,`target`),a.drawTexture(r,e,`label`),a.drawTexture(r,e,`edge-source-label`),a.drawTexture(r,e,`edge-target-label`))}function Yv(t,e,r){var a;t.webglDebug&&(a=performance.now());var n=t.drawing,i=0;if(r.screen&&t.data.canvasNeedsRedraw[t.SELECT_BOX]&&Lm(t,e),t.data.canvasNeedsRedraw[t.NODE]||r.picking){var o=t.data.contexts[t.WEBGL];r.screen?(o.clearColor(0,0,0,0),o.enable(o.BLEND),o.blendFunc(o.ONE,o.ONE_MINUS_SRC_ALPHA)):o.disable(o.BLEND),o.clear(o.COLOR_BUFFER_BIT|o.DEPTH_BUFFER_BIT),o.viewport(0,0,o.canvas.width,o.canvas.height);var s=Mm(t),u=t.getCachedZSortedEles();if(i=u.length,n.startFrame(s,r),r.screen){for(var l=0;l0&&o>0){h.clearRect(0,0,i,o),h.globalCompositeOperation=`source-over`;var d=this.getCachedZSortedEles();if(t.full)h.translate(-a.x1*l,-a.y1*l),h.scale(l,l),this.drawElements(h,d),h.scale(1/l,1/l),h.translate(a.x1*l,a.y1*l);else{var y=e.pan(),g={x:y.x*l,y:y.y*l};l*=e.zoom(),h.translate(g.x,g.y),h.scale(l,l),this.drawElements(h,d),h.scale(1/l,1/l),h.translate(-g.x,-g.y)}t.bg&&(h.globalCompositeOperation=`destination-over`,h.fillStyle=t.bg,h.rect(0,0,i,o),h.fill())}return c};function Fm(t,e){for(var r=atob(t),a=new ArrayBuffer(r.length),n=new Uint8Array(a),i=0;i`u`?`undefined`:je(OffscreenCanvas))!==`undefined`)r=new OffscreenCanvas(t,e);else r=this.cy.window().document.createElement(`canvas`),r.width=t,r.height=e;return r};[qv,Ht,Zt,Cs,Lr,pr,mt,Wv,yr,Wa,Qv].forEach(function(t){me(Se,t)});var Gm=[{type:`layout`,extensions:vy},{type:`renderer`,extensions:[{name:`null`,impl:Sv},{name:`base`,impl:Nv},{name:`canvas`,impl:Vm}]}];var jv={};var ec={};function tc(t,e,r){var a=r,n=function(T){Ne("Can not register `"+e+"` for `"+t+"` since `"+T+"` already exists in the prototype and can not be overridden")};if(t===`core`){if(Ma.prototype[e])return n(e);Ma.prototype[e]=r}else if(t===`collection`){if(ut.prototype[e])return n(e);ut.prototype[e]=r}else if(t===`layout`){for(var i=function(T){this.options=T,r.call(this,T),Me(this._private)||(this._private={}),this._private.cy=T.cy,this._private.listeners=[],this.createEmitter()},o=i.prototype=Object.create(r.prototype),s=[],u=0;u/g,`>`).replace(/"/g,`"`)}var Qm=Object.fromEntries(Object.entries(v).map(([t,e])=>{let a=`${c(e)}`;return[t,`data:image/svg+xml;charset=utf-8,${encodeURIComponent(a)}`]}));function Jm(t,e,r,a,n=-Math.PI/2){let i=[];for(let o=0;ot.startsWith(e0);function o0(t={}){let e=t.headless??!Xm(),r=(t.animate??!0)&&!e,a=t.perfHints??!0,n=[],i=[],o=[],s=null,u=new Set,l=new Set,f=!1,v=null,c=null,h=`cose`,d=null,y=null,g=null,p=`far`,m$1=null,b=new Map,w=null,E$1=0;function C(R){E$1++,R.stop(),R.one(`layoutstop`,()=>{E$1--})}let x=R=>{for(let M of n)M(R)},T=R=>{for(let M of i)M(R)};function S(){if(!s)return null;let R=s.pan();return{zoom:s.zoom(),panX:R.x,panY:R.y}}function B(){m$1&&clearTimeout(m$1),m$1=setTimeout(()=>{if(m$1=null,!s)return;k$2();let R=S();if(R)for(let M of o)M(R)},90)}function k$2(){if(!s)return;let R=s.zoom(),M=RYm)&&s.batch(()=>{s.nodes().filter(F=>!Ua(F.id())).forEach(F=>{let z=b.get(F.id());z&&F.data(`dlabel`,k$1(z,p))}),s.edges().forEach(F=>{F.data(`elabel`,p===`far`?``:F.data(`kind`))})}))}function P(R,M){let F=sa(`--fg-success`,`#0b7a42`),z=sa(`--fg-warning`,`#a35c00`),q=sa(`--fg-error`,`#c0392b`),X=Object.entries(m).map(([U,Q])=>({selector:`node[kind = "${U}"]`,style:{"background-color":Q.color,shape:Q.shape}})),J=Object.entries(E).map(([U,Q])=>({selector:`edge[kind = "${U}"]`,style:{"line-color":Q.color,"target-arrow-color":Q.color}}));return[{selector:`node`,style:{width:Ss,height:Ss,label:`data(dlabel)`,"font-size":10,color:R,"text-valign":`bottom`,"text-halign":`center`,"text-margin-y":5,"text-wrap":`wrap`,"text-max-width":`130px`,"border-width":1.5,"border-color":`data(color)`,"border-opacity":.9,"background-opacity":.92,"background-image":`data(icon)`,"background-width":`52%`,"background-height":`52%`,"background-image-opacity":.95,"background-clip":`none`}},...X,{selector:`node.grp`,style:{shape:`round-rectangle`,"background-opacity":.06,"background-color":R,"border-width":1.4,"border-style":`dashed`,"border-color":R,"border-opacity":.55,label:`data(dlabel)`,"font-size":11,"font-weight":`bold`,color:R,"text-valign":`top`,"text-halign":`center`,"text-margin-y":-4,padding:`14px`,"background-image":`none`,events:`yes`}},{selector:`edge`,style:{width:1.6,"curve-style":`bezier`,"line-style":U=>U.data(`line`)??`solid`,"target-arrow-shape":`triangle`,"target-arrow-fill":`filled`,"arrow-scale":.9,label:`data(elabel)`,"font-size":8,color:R,"text-rotation":`autorotate`,"text-margin-y":-6,opacity:.85}},...J,{selector:`node.unverified`,style:{"border-style":`dashed`,opacity:.7}},{selector:`node.absent`,style:{opacity:.35}},{selector:`node.failed`,style:{"border-color":q,"border-width":3,"border-style":`solid`}},{selector:`.diff-added`,style:{"border-color":F,"line-color":F,"target-arrow-color":F,"border-width":3}},{selector:`.diff-changed`,style:{"border-color":z,"line-color":z,"target-arrow-color":z,"border-width":3,"border-style":`double`}},{selector:`.g-hidden`,style:{display:`none`,events:`no`}},{selector:`.faded`,style:{opacity:.12,events:`yes`}},{selector:`.dimmed`,style:{opacity:.15}},{selector:`node.nh`,style:{"border-width":3,"border-color":M,"border-opacity":1}},{selector:`edge.nh`,style:{width:2.6,opacity:1}},{selector:`:selected`,style:{"overlay-color":M,"overlay-opacity":.18,"overlay-padding":6}}]}function A(){let R=new Set;if(!y||!d)return R;let M=new Map;for(let F of y.groups)for(let z of F.members)M.set(z,F.id);for(let F of y.groups)if(y.collapsed.has(F.id))for(let z of F.members)R.add(z);if(!R.size)return R;for(let F of d.edges)(R.has(F.source)||R.has(F.target))&&R.add(F.id);return R}function L(){if(!s)return;let R=s.nodes().filter(q=>!Ua(q.id())),M=s.edges();R.removeClass(`nh faded dimmed diff-added diff-changed g-hidden`),M.removeClass(`nh faded diff-added diff-changed g-hidden`);let F=A();F.size&&s.elements().forEach(q=>{F.has(q.id())&&q.addClass(`g-hidden`)}),f&&(R.forEach(q=>{u.has(q.id())?q.id()!==c&&q.addClass(`nh`):q.addClass(`faded`)}),M.forEach(q=>{l.has(q.id())?q.addClass(`nh`):q.addClass(`faded`)}));let z=v;z&&R.forEach(q=>{z.has(q.id())||q.addClass(`dimmed`)}),g&&(g.nodes.forEach((q,X)=>s.getElementById(X).addClass(`diff-${q}`)),g.edges.forEach((q,X)=>s.getElementById(X).addClass(`diff-${q}`))),c&&s.getElementById(c).select()}function O(R){if(!s)return;w&&C(w);let M={name:R,animate:r,fit:!1,eles:s.elements().not(`.g-hidden`)};if(R===`concentric`&&(M.concentric=z=>z.degree(!1),M.levelWidth=()=>2),R===`cose`&&!r){let z=M;z.animate=!0,z.animationThreshold=Number.MAX_SAFE_INTEGER}let F=s.layout(M);w=F,F.one(`layoutstop`,()=>{w===F&&(w=null),s?.fit(void 0,36),k$2()}),F.run()}function N$1(){if(!s||!d)return;b=new Map(d.nodes.map(M=>[M.id,M]));let R=new Map;if(y)for(let M of y.groups)for(let F of M.members)R.set(F,M.id);if(s.elements().remove(),y)for(let M of y.groups){let F=y.collapsed.has(M.id);s.add({data:{id:M.id,label:M.label,kind:`group`,dlabel:F?`${M.label} (${M.members.length})`:M.label,members:M.members.length},classes:`grp`})}s.add([...d.nodes.map(M=>({data:k({id:M.id,label:M.label,dlabel:k$1(M,p),kind:M.kind,color:m[M.kind].color,icon:Qm[M.kind]??``,unverified:M.unverified,absent:M.absent,failed:M.failed,degree:M.degree,state:M.state,category:M.category,origin:M.origin,version:M.version},R.has(M.id)?{parent:R.get(M.id)}:{}),classes:`${M.unverified?`unverified`:``}${M.absent?` absent`:``}${M.failed?` failed`:``}`})),...d.edges.map(M=>({data:{id:M.id,source:M.source,target:M.target,kind:M.kind,evidence:M.evidence,evidenceState:M.evidenceState,endpoint:M.evidenceEndpoint,line:N[M.evidenceState]??`solid`,elabel:p===`far`?``:M.kind}}))]),L(),O(h)}function I(){if(!s)return null;let R=s.nodes().filter(_=>!Ua(_.id())&&_.visible());if(!R.length)return null;let M=Ss/2,F=1/0,z=1/0,q=-1/0,X=-1/0;R.forEach(_=>{let G=_.position();F=Math.min(F,G.x-M),z=Math.min(z,G.y-M),q=Math.max(q,G.x+M),X=Math.max(X,G.y+M)});let J=q-F+Jn*2,U=X-z+Jn*2+16,Q=Jn-F,j=Jn-z,ae=[``,``];s.edges().filter(_=>_.visible()).forEach(_=>{let G=_.source().position(),H=_.target().position(),K=E[_.data(`kind`)]?.color??`#7d8894`,re=_.data(`line`)===`dashed`?`5 3`:_.data(`line`)===`dotted`?`2 3`:null;ae.push(``)});let Z=(_,G)=>_.id()G.id()?1:0;return[...R].sort(Z).forEach(_=>{let G=_.data(`kind`),H=m[G],K=_.position(),re=K.x+Q,oe=K.y+j,ke=_.data(`unverified`)?` stroke-dasharray="4 3"`:``,we=_.data(`absent`)?.35:_.data(`unverified`)?.7:1,ye=_.data(`failed`)?`#c0392b`:H.color,he=`fill="${H.color}" stroke="${ye}" stroke-width="1.5"${ke} opacity="${we}"`,ne=H.shape;if(ne===`ellipse`)ae.push(``);else if(ne===`rectangle`||ne===`round-rectangle`){let ve=ne===`round-rectangle`?` rx="8"`:``;ae.push(``)}else if(ne===`star`)ae.push(``);else{let ge=ne===`diamond`?`${re.toFixed(1)},${(oe-M).toFixed(1)} ${(re+M).toFixed(1)},${oe.toFixed(1)} ${re.toFixed(1)},${(oe+M).toFixed(1)} ${(re-M).toFixed(1)},${oe.toFixed(1)}`:Jm(re,oe,M,ne===`triangle`?3:ne===`pentagon`?5:ne===`diamond`||ne===`hexagon`?0:6);ae.push(``)}ae.push(`${Zm(_.data(`label`))}`)}),ae.push(``),ae.join(` -`)}return{mount(R){s=cr({container:R,headless:e,elements:[],style:P(sa(`--fg-text-2`,`#4b5563`),sa(`--fg-accent`,`#e8611c`)),boxSelectionEnabled:!1,autoungrabify:!1,userZoomingEnabled:!0,userPanningEnabled:!0,textureOnViewport:a,hideEdgesOnViewport:a,pixelRatio:`auto`}),s.on(`tap`,`node`,M=>{let F=M.target.id();Ua(F)||x({type:`node`,id:F})}),s.on(`tap`,`edge`,M=>x({type:`edge`,id:M.target.id()})),s.on(`tap`,M=>{M.target===s&&x(null)}),s.on(`mouseover`,`node, edge`,M=>{let F=M.target,z=F.id();Ua(z)||T({type:F.isNode()?`node`:`edge`,id:z})}),s.on(`mouseout`,`node, edge`,()=>T(null)),s.on(`viewport`,()=>B())},setData(R){d=R,N$1()},select(R){c=R,s&&(s.$(`:selected`).unselect(),R&&s.getElementById(R).select())},highlight(R,M){f=R.size>0,u=new Set(R),l=new Set(M),L()},dimExcept(R){v=R?new Set(R):null,L()},layout(R){h=R,O(R)},fit(){s?.fit(void 0,36)},zoomTo(R){if(!s)return;let M=s.getElementById(R);if(M.empty()||!M.visible())return;let F=Math.max(s.zoom(),1.3);if(r)s.animate({center:{eles:M},zoom:F},{duration:180});else{s.center(M);let z=M.isNode()?M.position():M.midpoint();s.zoom({level:F,position:z})}},setGrouping(R){y=R,N$1()},setDiff(R){g=R,L()},viewport(){return S()},setViewport(R){s&&(s.viewport({zoom:R.zoom,pan:{x:R.panX,y:R.panY}}),k$2())},onViewport(R){o.push(R)},onHover(R){i.push(R)},exportPng(){if(!s)return null;try{return s.png({full:!0,scale:2,bg:sa(`--fg-surface`,`#ffffff`)})}catch{return null}},exportSvg(){return I()},onSelect(R){n.push(R)},nativeHandle(){return s},destroy(){m$1&&clearTimeout(m$1),m$1=null;let R=s;s=null,w&&(C(w),w=null);let M=(F=25)=>{if(R){if(E$1<=0||F<=0){try{R.destroy()}catch{}return}setTimeout(()=>M(F-1),20)}};M(),n.length=0,i.length=0,o.length=0,f=!1,u=new Set,l=new Set,v=null,c=null,d=null,b=new Map,y=null,g=null,p=`far`}}}export{o0 as createCytoscapeRenderer}; \ No newline at end of file diff --git a/portal/assets/chunk-DpHwlXuY.js b/portal/assets/chunk-DpHwlXuY.js deleted file mode 100644 index a7b8ab3..0000000 --- a/portal/assets/chunk-DpHwlXuY.js +++ /dev/null @@ -1 +0,0 @@ -import{i as l,r as k}from"./chunk-DjkjLihA.js";import{D as Rt,Et as p$1,G as _r,It as te,Kt as wa,L as Xo,Lt as tn,M as Ta,Nt as si,S as Oo,Vt as v,W as _e$1,Wt as ve$1,Y as ae,Zt as ye$1,_ as Km,bt as mo,et as ds,g as Kb,gt as k$1,i as AE,m as Fn,mt as ii,n as $m,o as Ar,p as F$1,qt as xr,rt as ee,t as $$1,tt as eC,u as De$1,vt as lg,y as Mt}from"./chunk-BelLryvf.js";var Ce=(()=>{class n{_renderer;_elementRef;onChange=t=>{};onTouched=()=>{};constructor(t,r){this._renderer=t,this._elementRef=r}setProperty(t,r){this._renderer.setProperty(this._elementRef.nativeElement,t,r)}registerOnTouched(t){this.onTouched=t}registerOnChange(t){this.onChange=t}setDisabledState(t){this.setProperty(`disabled`,t)}static ɵfac=function(r){return new(r||n)(De$1(Fn),De$1(Mt))};static ɵdir=xr({type:n})}return n})();var Le=(()=>{class n extends Ce{static ɵfac=(()=>{let t;return function(i){return(t||(t=lg(n)))(i||n)}})();static ɵdir=xr({type:n,features:[$m]})}return n})();var Ve=new v(``);var Be={provide:Ve,useExisting:ds(()=>De),multi:!0};function Ue(){let n=Rt()?Rt().getUserAgent():``;return/android (\d+)/.test(n.toLowerCase())}var He=new v(``);var De=(()=>{class n extends Ce{_compositionMode;_composing=!1;constructor(t,r,i){super(t,r),this._compositionMode=i,this._compositionMode??=!Ue()}writeValue(t){let r=t??``;this.setProperty(`value`,r)}_handleInput(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}_compositionStart(){this._composing=!0}_compositionEnd(t){this._composing=!1,this._compositionMode&&this.onChange(t)}static ɵfac=function(r){return new(r||n)(De$1(Fn),De$1(Mt),De$1(He,8))};static ɵdir=xr({type:n,selectors:[[`input`,`formControlName`,``,3,`type`,`checkbox`,3,`ngNoCva`,``],[`textarea`,`formControlName`,``,3,`ngNoCva`,``],[`input`,`formControl`,``,3,`type`,`checkbox`,3,`ngNoCva`,``],[`textarea`,`formControl`,``,3,`ngNoCva`,``],[`input`,`ngModel`,``,3,`type`,`checkbox`,3,`ngNoCva`,``],[`textarea`,`ngModel`,``,3,`ngNoCva`,``],[``,`ngDefaultControl`,``]],hostBindings:function(r,i){r&1&&Ta(`input`,function(l){return i._handleInput(l.target.value)})(`blur`,function(){return i.onTouched()})(`compositionstart`,function(){return i._compositionStart()})(`compositionend`,function(l){return i._compositionEnd(l.target.value)})},standalone:!1,features:[eC([Be]),$m]})}return n})();function X(n){return n==null||Z(n)===0}function Z(n){return n==null?null:Array.isArray(n)||typeof n==`string`?n.length:n instanceof Set?n.size:null}var Ae=new v(``);var $e=new v(``);var qe=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;var H=class{static min(e){return We(e)}static max(e){return ze(e)}static required(e){return be(e)}static requiredTrue(e){return Ye(e)}static email(e){return Xe(e)}static minLength(e){return Ze(e)}static maxLength(e){return Ke(e)}static pattern(e){return Qe(e)}static nullValidator(e){return O()}static compose(e){return Fe(e)}static composeAsync(e){return we(e)}};function We(n){return e=>{if(e.value==null||n==null)return null;let t=parseFloat(e.value);return!isNaN(t)&&t{if(e.value==null||n==null)return null;let t=parseFloat(e.value);return!isNaN(t)&&t>n?{max:{max:n,actual:e.value}}:null}}function be(n){return X(n.value)?{required:!0}:null}function Ye(n){return n.value===!0?null:{required:!0}}function Xe(n){return X(n.value)||qe.test(n.value)?null:{email:!0}}function Ze(n){return e=>{let t=e.value?.length??Z(e.value);return t===null||t===0?null:t{let t=e.value?.length??Z(e.value);return t!==null&&t>n?{maxlength:{requiredLength:n,actualLength:t}}:null}}function Qe(n){if(!n)return O;let e,t;return typeof n==`string`?(t=``,n.charAt(0)!==`^`&&(t+=`^`),t+=n,n.charAt(n.length-1)!==`$`&&(t+=`$`),e=new RegExp(t)):(t=n.toString(),e=n),r=>{if(X(r.value))return null;let i=r.value;return e.test(i)?null:{pattern:{requiredPattern:t,actualValue:i}}}}function O(n){return null}function Me(n){return n!=null}function Ee(n){return Xo(n)?te(n):n}function Ne(n){let e={};return n.forEach(t=>{e=t!=null?k(k({},e),t):e}),Object.keys(e).length===0?null:e}function Ie(n,e){return e.map(t=>t(n))}function Je(n){return!n.validate}function Se(n){return n.map(e=>Je(e)?e:t=>e.validate(t))}function Fe(n){if(!n)return null;let e=n.filter(Me);return e.length==0?null:function(t){return Ne(Ie(t,e))}}function Oe(n){return n!=null?Fe(Se(n)):null}function we(n){if(!n)return null;let e=n.filter(Me);return e.length==0?null:function(t){let r=Ie(t,e).map(Ee);return AE(r).pipe($$1(Ne))}}function Re(n){return n!=null?we(Se(n)):null}function he(n,e){return n===null?[e]:Array.isArray(n)?[...n,e]:[n,e]}function et(n){return n._rawValidators}function tt(n){return n._rawAsyncValidators}function $(n){return n?Array.isArray(n)?n:[n]:[]}function w(n,e){return Array.isArray(n)?n.includes(e):n===e}function pe(n,e){let t=$(e);return $(n).forEach(i=>{w(t,i)||t.push(i)}),t}function fe(n,e){return $(e).filter(t=>!w(n,t))}var R=class{get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators=[];_rawAsyncValidators=[];_setValidators(e){this._rawValidators=e||[],this._composedValidatorFn=Oe(this._rawValidators)}_setAsyncValidators(e){this._rawAsyncValidators=e||[],this._composedAsyncValidatorFn=Re(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_onDestroyCallbacks=[];_registerOnDestroy(e){this._onDestroyCallbacks.push(e)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(e=>e()),this._onDestroyCallbacks=[]}reset(e=void 0){this.control?.reset(e)}hasError(e,t){return this.control?this.control.hasError(e,t):!1}getError(e,t){return this.control?this.control.getError(e,t):null}};var q=class extends R{name;get formDirective(){return null}get path(){return null}};var C=`VALID`;var F=`INVALID`;var g=`PENDING`;var V=`DISABLED`;var p=class{};var x=class extends p{value;source;constructor(e,t){super(),this.value=e,this.source=t}};var D=class extends p{pristine;source;constructor(e,t){super(),this.pristine=e,this.source=t}};var A=class extends p{touched;source;constructor(e,t){super(),this.touched=e,this.source=t}};var m=class extends p{status;source;constructor(e,t){super(),this.status=e,this.source=t}};var b=class extends p{source;constructor(e){super(),this.source=e}};function nt(n){return(T(n)?n.validators:n)||null}function rt(n){return Array.isArray(n)?Oe(n):n||null}function it(n,e){return(T(e)?e.asyncValidators:n)||null}function ot(n){return Array.isArray(n)?Re(n):n||null}function T(n){return n!=null&&!Array.isArray(n)&&typeof n==`object`}var W=class{_pendingDirty=!1;_hasOwnPendingAsyncValidator=null;_pendingTouched=!1;_onCollectionChange=()=>{};_updateOn;_hasRequired=k$1(!1);_parent=null;_asyncValidationSubscription;_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators;_rawAsyncValidators;value;constructor(e,t){this._assignValidators(e),this._assignAsyncValidators(t)}get validator(){return this._composedValidatorFn}set validator(e){this._rawValidators=this._composedValidatorFn=e,this._updateHasRequiredValidator()}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(e){this._rawAsyncValidators=this._composedAsyncValidatorFn=e}get parent(){return this._parent}get status(){return F$1(this.statusReactive)}set status(e){F$1(()=>this.statusReactive.set(e))}_status=tn(()=>this.statusReactive());statusReactive=k$1(void 0);get valid(){return this.status===C}get invalid(){return this.status===F}get pending(){return this.status===g}get disabled(){return this.status===V}get enabled(){return this.status!==V}errors;get pristine(){return F$1(this.pristineReactive)}set pristine(e){F$1(()=>this.pristineReactive.set(e))}_pristine=tn(()=>this.pristineReactive());pristineReactive=k$1(!0);get dirty(){return!this.pristine}get touched(){return F$1(this.touchedReactive)}set touched(e){F$1(()=>this.touchedReactive.set(e))}_touched=tn(()=>this.touchedReactive());touchedReactive=k$1(!1);get untouched(){return!this.touched}_events=new ee;events=this._events.asObservable();valueChanges;statusChanges;get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:`change`}setValidators(e){this._assignValidators(e)}setAsyncValidators(e){this._assignAsyncValidators(e)}addValidators(e){this.setValidators(pe(e,this._rawValidators))}addAsyncValidators(e){this.setAsyncValidators(pe(e,this._rawAsyncValidators))}removeValidators(e){this.setValidators(fe(e,this._rawValidators))}removeAsyncValidators(e){this.setAsyncValidators(fe(e,this._rawAsyncValidators))}hasValidator(e){return w(this._rawValidators,e)}hasAsyncValidator(e){return w(this._rawAsyncValidators,e)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(e={}){let t=this.touched===!1;this.touched=!0;let r=e.sourceControl??this;e.onlySelf||this._parent?.markAsTouched(l(k({},e),{sourceControl:r})),t&&e.emitEvent!==!1&&this._events.next(new A(!0,r))}markAllAsDirty(e={}){this.markAsDirty({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsDirty(e))}markAllAsTouched(e={}){this.markAsTouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsTouched(e))}markAsUntouched(e={}){let t=this.touched===!0;this.touched=!1,this._pendingTouched=!1;let r=e.sourceControl??this;this._forEachChild(i=>{i.markAsUntouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:r})}),e.onlySelf||this._parent?._updateTouched(e,r),t&&e.emitEvent!==!1&&this._events.next(new A(!1,r))}markAsDirty(e={}){let t=this.pristine===!0;this.pristine=!1;let r=e.sourceControl??this;e.onlySelf||this._parent?.markAsDirty(l(k({},e),{sourceControl:r})),t&&e.emitEvent!==!1&&this._events.next(new D(!1,r))}markAsPristine(e={}){let t=this.pristine===!1;this.pristine=!0,this._pendingDirty=!1;let r=e.sourceControl??this;this._forEachChild(i=>{i.markAsPristine({onlySelf:!0,emitEvent:e.emitEvent})}),e.onlySelf||this._parent?._updatePristine(e,r),t&&e.emitEvent!==!1&&this._events.next(new D(!0,r))}markAsPending(e={}){this.status=g;let t=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new m(this.status,t)),this.statusChanges.emit(this.status)),e.onlySelf||this._parent?.markAsPending(l(k({},e),{sourceControl:t}))}disable(e={}){let t=this._parentMarkedDirty(e.onlySelf);this.status=V,this.errors=null,this._forEachChild(i=>{i.disable(l(k({},e),{onlySelf:!0}))}),this._updateValue();let r=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new x(this.value,r)),this._events.next(new m(this.status,r)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(l(k({},e),{skipPristineCheck:t}),this),this._onDisabledChange.forEach(i=>i(!0))}enable(e={}){let t=this._parentMarkedDirty(e.onlySelf);this.status=C,this._forEachChild(r=>{r.enable(l(k({},e),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent}),this._updateAncestors(l(k({},e),{skipPristineCheck:t}),this),this._onDisabledChange.forEach(r=>r(!1))}_updateAncestors(e,t){e.onlySelf||(this._parent?.updateValueAndValidity(e),e.skipPristineCheck||this._parent?._updatePristine({},t),this._parent?._updateTouched({},t))}setParent(e){this._parent=e}getRawValue(){return this.value}updateValueAndValidity(e={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){let r=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===C||this.status===g)&&this._runAsyncValidator(r,e.emitEvent)}let t=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new x(this.value,t)),this._events.next(new m(this.status,t)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),e.onlySelf||this._parent?.updateValueAndValidity(l(k({},e),{sourceControl:t}))}_updateTreeValidity(e={emitEvent:!0}){this._forEachChild(t=>t._updateTreeValidity(e)),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?V:C}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(e,t){if(this.asyncValidator){this.status=g,this._hasOwnPendingAsyncValidator={emitEvent:t!==!1,shouldHaveEmitted:e!==!1};let r=Ee(this.asyncValidator(this));this._asyncValidationSubscription=r.subscribe(i=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(i,{emitEvent:t,shouldHaveEmitted:e})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();let e=(this._hasOwnPendingAsyncValidator?.emitEvent||this._hasOwnPendingAsyncValidator?.shouldHaveEmitted)??!1;return this._hasOwnPendingAsyncValidator=null,e}return!1}setErrors(e,t={}){this.errors=e,this._updateControlsErrors(t.emitEvent!==!1,this,t.shouldHaveEmitted)}get(e){let t=e;return t==null||(Array.isArray(t)||(t=t.split(`.`)),t.length===0)?null:t.reduce((r,i)=>r&&r._find(i),this)}getError(e,t){let r=t?this.get(t):this;return r?.errors?r.errors[e]:null}hasError(e,t){return!!this.getError(e,t)}get root(){let e=this;for(;e._parent;)e=e._parent;return e}_updateControlsErrors(e,t,r){this.status=this._calculateStatus(),e&&this.statusChanges.emit(this.status),(e||r)&&this._events.next(new m(this.status,t)),this._parent&&this._parent._updateControlsErrors(e,t,r)}_initObservables(){this.valueChanges=new ye$1,this.statusChanges=new ye$1}_calculateStatus(){return this._allControlsDisabled()?V:this.errors?F:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(g)?g:this._anyControlsHaveStatus(F)?F:C}_anyControlsHaveStatus(e){return this._anyControls(t=>t.status===e)}_anyControlsDirty(){return this._anyControls(e=>e.dirty)}_anyControlsTouched(){return this._anyControls(e=>e.touched)}_updatePristine(e,t){let r=!this._anyControlsDirty(),i=this.pristine!==r;this.pristine=r,e.onlySelf||this._parent?._updatePristine(e,t),i&&this._events.next(new D(this.pristine,t))}_updateTouched(e={},t){this.touched=this._anyControlsTouched(),this._events.next(new A(this.touched,t)),e.onlySelf||this._parent?._updateTouched(e,t)}_onDisabledChange=[];_registerOnCollectionChange(e){this._onCollectionChange=e}_setUpdateStrategy(e){T(e)&&e.updateOn!=null&&(this._updateOn=e.updateOn)}_parentMarkedDirty(e){return!e&&!!this._parent?.dirty&&!this._parent._anyControlsDirty()}_find(e){return null}_assignValidators(e){this._rawValidators=Array.isArray(e)?e.slice():e,this._composedValidatorFn=rt(this._rawValidators),this._updateHasRequiredValidator()}_assignAsyncValidators(e){this._rawAsyncValidators=Array.isArray(e)?e.slice():e,this._composedAsyncValidatorFn=ot(this._rawAsyncValidators)}_updateHasRequiredValidator(){F$1(()=>this._hasRequired.set(this.hasValidator(H.required)))}};function st(n){return n.tagName===`INPUT`||n.tagName===`SELECT`||n.tagName===`TEXTAREA`}function at(n,e,t,r){switch(t){case`name`:n.setAttribute(e,t,r);break;case`disabled`:case`readonly`:case`required`:r?n.setAttribute(e,t,``):n.removeAttribute(e,t);break;case`max`:case`min`:case`minLength`:case`maxLength`:r!==void 0?n.setAttribute(e,t,r.toString()):n.removeAttribute(e,t)}}var z=class{kind;context;control;message;constructor({kind:e,context:t,control:r}){this.kind=e,this.context=t,this.control=r}};var lt=(()=>{class n{_validator=O;_onChange;_enabled;ngOnChanges(t){if(this.inputName in t){let r=this.normalizeInput(t[this.inputName].currentValue);this._enabled=this.enabled(r),this._validator=this._enabled?this.createValidator(r):O,this._onChange?.()}}validate(t){return this._validator(t)}registerOnValidatorChange(t){this._onChange=t}enabled(t){return t!=null}static ɵfac=function(r){return new(r||n)};static ɵdir=xr({type:n,features:[_r]})}return n})();var ut={provide:Ae,useExisting:ds(()=>xe),multi:!0};var xe=(()=>{class n extends lt{required;inputName=`required`;normalizeInput=si;createValidator=t=>be;enabled(t){return t}static ɵfac=(()=>{let t;return function(i){return(t||(t=lg(n)))(i||n)}})();static ɵdir=xr({type:n,selectors:[[``,`required`,``,`formControlName`,``,3,`type`,`checkbox`],[``,`required`,``,`formControl`,``,3,`type`,`checkbox`],[``,`required`,``,`ngModel`,``,3,`type`,`checkbox`]],hostVars:1,hostBindings:function(r,i){r&2&&Ar(`required`,i._enabled?``:null)},inputs:{required:`required`},standalone:!1,features:[eC([ut]),$m]})}return n})();var dt=new v(``);var Te=new v(``,{factory:()=>K});var K=`always`;function ct(n,e){return[...e.path,n]}function ge(n,e,t=K){pt(n,e),e.valueAccessor.writeValue(n.value),(n.disabled||t===`always`)&&e.valueAccessor.setDisabledState?.(n.disabled),ft(n,e),mt(n,e),gt(n,e),ht(n,e)}function me(n,e){n.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(e)})}function ht(n,e){if(e.valueAccessor.setDisabledState){let t=r=>{e.valueAccessor.setDisabledState(r)};n.registerOnDisabledChange(t),e._registerOnDestroy(()=>{n._unregisterOnDisabledChange(t)})}}function pt(n,e){let t=et(n);e.validator!==null?n.setValidators(he(t,e.validator)):typeof t==`function`&&n.setValidators([t]);let r=tt(n);e.asyncValidator!==null?n.setAsyncValidators(he(r,e.asyncValidator)):typeof r==`function`&&n.setAsyncValidators([r]);let i=()=>n.updateValueAndValidity();me(e._rawValidators,i),me(e._rawAsyncValidators,i)}function ft(n,e){e.valueAccessor.registerOnChange(t=>{n._pendingValue=t,n._pendingChange=!0,n._pendingDirty=!0,n.updateOn===`change`&&Pe(n,e)})}function gt(n,e){e.valueAccessor.registerOnTouched(()=>{n._pendingTouched=!0,n.updateOn===`blur`&&n._pendingChange&&Pe(n,e),n.updateOn!==`submit`&&n.markAsTouched()})}function Pe(n,e){n._pendingDirty&&n.markAsDirty(),n.setValue(n._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(n._pendingValue),n._pendingChange=!1}function mt(n,e){let t=(r,i)=>{e.valueAccessor.writeValue(r),i&&e.viewToModelUpdate(r)};n.registerOnChange(t),e._registerOnDestroy(()=>{n._unregisterOnChange(t)})}function yt(n,e){if(!Object.hasOwn(n,`model`))return!1;let t=n.model;return t.isFirstChange()?!0:!Object.is(e,t.currentValue)}function vt(n){return Object.getPrototypeOf(n.constructor)===Le}function _t(n,e){if(!e)return null;let t,r,i;return e.forEach(o=>{o.constructor===De?t=o:vt(o)?r=o:i=o}),i||r||t||null}var Ct={provide:dt,useFactory:()=>{let n=p$1(y,{self:!0});return{setParseErrors:e=>{n.setParseErrorSource(e)},set onReset(e){n.onReset=e}}}};var y=class extends R{_parent=null;name=null;valueAccessor=null;isCustomControlBased=!1;userOnReset;resetSubscription;set onReset(e){this.userOnReset=e,this.resetSubscription?.unsubscribe(),this.resetSubscription=void 0,this.control&&(this.resetSubscription=this.control.events.subscribe(t=>{t instanceof b&&this.control&&this.userOnReset?.(this.control.value)}),this.subscription?.add(this.resetSubscription))}isNativeFormElement=!1;rawValueAccessors;_selectedValueAccessor=null;get selectedValueAccessor(){return this._selectedValueAccessor??=_t(this,this.rawValueAccessors)}parseErrorsValidator=null;renderer;injector;requiredValidatorViaDi;subscription;customControlBindings=null;constructor(e,t,r){super(),this.injector=e,this.renderer=t,this.rawValueAccessors=r,this.injector?.get(ve$1)?.onDestroy(()=>{this.removeParseErrorsValidator(this.control),this.subscription?.unsubscribe()})}setupCustomControl(){this.subscription?.unsubscribe();let e=this.injector?.get(ii);if(!this.control||!e)return;let t=e.markForCheck.bind(e);this.subscription=new ae,this.subscription.add(this.control.valueChanges.subscribe(t)),this.subscription.add(this.control.statusChanges.subscribe(t)),this.resetSubscription?.unsubscribe(),this.resetSubscription=void 0,this.userOnReset&&(this.resetSubscription=this.control.events.subscribe(r=>{r instanceof b&&this.control&&this.userOnReset?.(this.control.value)}),this.subscription.add(this.resetSubscription)),this.parseErrorsValidator&&this.control.addValidators(this.parseErrorsValidator)}ngControlCreate(e){!e.nativeElement.hasAttribute?.(`ngNoCva`)&&(this.rawValueAccessors&&this.rawValueAccessors.length>0||this.valueAccessor!==null)||!e.customControl||(this.isCustomControlBased=!0,e.listenToCustomControlModel(i=>{this.control?.markAsDirty(),this.control?.setValue(i,{emitModelToViewChange:!1}),this.viewToModelUpdate(i)}),e.listenToCustomControlOutput(`touch`,()=>{this.control?.markAsTouched()}),this.customControlBindings={},this.isNativeFormElement=st(e.nativeElement),this.requiredValidatorViaDi=this._rawValidators.find(i=>i instanceof xe))}ngControlUpdate(e,t){if(!this.isCustomControlBased)return;let r=this.control,i=this.customControlBindings;Object.is(i.value,r.value)||(i.value=r.value,e.setCustomControlModelInput(r.value)),this.bindControlProperty(e,i,`touched`,r.touched),this.bindControlProperty(e,i,`dirty`,r.dirty),this.bindControlProperty(e,i,`valid`,r.valid),this.bindControlProperty(e,i,`invalid`,r.invalid),this.bindControlProperty(e,i,`pending`,r.pending),this.bindControlProperty(e,i,`disabled`,r.disabled),this.shouldBindRequired&&this.bindControlProperty(e,i,`required`,this.isRequired);let o=r.errors;if(i.errors!==o){i.errors=o;let l=this._convertErrors(o);e.setInputOnDirectives(`errors`,l)}}get isRequired(){return(this.requiredValidatorViaDi?._enabled||this.control?._hasRequired())??!1}get shouldBindRequired(){return!0}bindControlProperty(e,t,r,i){if(t[r]===i)return;t[r]=i;let o=e.setInputOnDirectives(r,i);this.isNativeFormElement&&!o&&(r===`disabled`||r===`required`)&&this.renderer&&at(this.renderer,e.nativeElement,r,i)}_convertErrors(e){if(e===null)return[];let t=this.control;return Object.entries(e).map(([r,i])=>new z({context:i,kind:r,control:t}))}setParseErrorSource(e){if(e===void 0)return;let t=null,r=tn(()=>{let i=e();return i.length===0?null:i.reduce((o,l)=>(o[l.kind]=l,o),{})});this.parseErrorsValidator=(()=>t).bind(this),Oo(()=>{t=r(),this.control?.updateValueAndValidity({emitEvent:!1})},{injector:this.injector})}removeParseErrorsValidator(e){this.parseErrorsValidator&&(e?.removeValidators(this.parseErrorsValidator),e?.updateValueAndValidity({emitEvent:!1}))}};var Y=class{_cd;constructor(e){this._cd=e}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}};var Yt=(()=>{class n extends Y{constructor(t){super(t)}static ɵfac=function(r){return new(r||n)(De$1(y,2))};static ɵdir=xr({type:n,selectors:[[``,`formControlName`,``],[``,`ngModel`,``],[``,`formControl`,``]],hostVars:14,hostBindings:function(r,i){r&2&&Km(`ng-untouched`,i.isUntouched)(`ng-touched`,i.isTouched)(`ng-pristine`,i.isPristine)(`ng-dirty`,i.isDirty)(`ng-valid`,i.isValid)(`ng-invalid`,i.isInvalid)(`ng-pending`,i.isPending)},standalone:!1,features:[$m]})}return n})();function ye(n,e){let t=n.indexOf(e);t>-1&&n.splice(t,1)}function ve(n){return typeof n==`object`&&n!==null&&Object.keys(n).length===2&&`value`in n&&`disabled`in n}var Vt=class extends W{defaultValue=null;_onChange=[];_pendingValue;_pendingChange=!1;constructor(e=null,t,r){super(nt(t),it(r,t)),this._applyFormState(e),this._setUpdateStrategy(t),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),T(t)&&(t.nonNullable||t.initialValueIsDefault)&&(ve(e)?this.defaultValue=e.value:this.defaultValue=e)}setValue(e,t={}){F$1(()=>{this.value=this._pendingValue=e,this._onChange.length&&t.emitModelToViewChange!==!1&&this._onChange.forEach(r=>r(this.value,t.emitViewToModelChange!==!1)),this.updateValueAndValidity(t)})}patchValue(e,t={}){this.setValue(e,t)}reset(e=this.defaultValue,t={}){this._applyFormState(e),this.markAsPristine(t),this.markAsUntouched(t),this.setValue(this.value,t),t.overwriteDefaultValue&&(this.defaultValue=this.value),this._pendingChange=!1,t?.emitEvent!==!1&&this._events.next(new b(this))}_updateValue(){}_anyControls(e){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(e){this._onChange.push(e)}_unregisterOnChange(e){ye(this._onChange,e)}registerOnDisabledChange(e){this._onDisabledChange.push(e)}_unregisterOnDisabledChange(e){ye(this._onDisabledChange,e)}_forEachChild(e){}_syncPendingControls(){return this.updateOn===`submit`&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(e){ve(e)?(this.value=this._pendingValue=e.value,e.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=e}};var Dt={provide:y,useExisting:ds(()=>At)};var _e=Promise.resolve();var At=(()=>{class n extends y{_changeDetectorRef;callSetDisabledState;control=new Vt;static ngAcceptInputType_isDisabled;_registered=!1;_ngModelInjector;viewModel;name=``;isDisabled;model;options;update=new ye$1;constructor(t,r,i,o,l,je,Ge,ke){super(Ge,ke,o),this._changeDetectorRef=l,this.callSetDisabledState=je,this._parent=t,this._setValidators(r),this._setAsyncValidators(i)}ngOnChanges(t){if(this._registered,this._checkForErrors(),!this._registered||`name`in t){if(this._registered&&(this._checkName(),this.formDirective)){let r=t.name.previousValue;this.formDirective.removeControl({name:r,path:this._getPath(r)})}this._setUpControl()}`isDisabled`in t&&this._updateDisabled(t),yt(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective?.removeControl(this)}ɵngControlCreate(t){super.ngControlCreate(t)}ɵngControlUpdate(t){super.ngControlUpdate(t,!1)}get shouldBindRequired(){return!1}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!!(this.options&&this.options.standalone)}_setUpStandalone(){this.isCustomControlBased?this.setupCustomControl():(this.valueAccessor??=this.selectedValueAccessor,ge(this.control,this,this.callSetDisabledState)),this.control.updateValueAndValidity({emitEvent:!1})}_setupWithForm(t){this.isCustomControlBased?this.setupCustomControl():(this.valueAccessor??=this.selectedValueAccessor,ge(this.control,this,t))}_checkForErrors(){this._checkName()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),!this._isStandalone()&&this.name}_updateValue(t){_e.then(()=>{this.control.setValue(t,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(t){let r=t.isDisabled.currentValue,i=r!==0&&si(r);_e.then(()=>{i&&!this.control.disabled?this.control.disable():!i&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(t){return this._parent?ct(t,this._parent):[t]}static ɵfac=function(r){return new(r||n)(De$1(q,9),De$1(Ae,10),De$1($e,10),De$1(Ve,10),De$1(ii,8),De$1(Te,8),De$1(_e$1,8),De$1(Fn,8))};static ɵdir=xr({type:n,selectors:[[``,`ngModel`,``,3,`formControlName`,``,3,`formControl`,``]],inputs:{name:`name`,isDisabled:[0,`disabled`,`isDisabled`],model:[0,`ngModel`,`model`],options:[0,`ngModelOptions`,`options`]},outputs:{update:`ngModelChange`},exportAs:[`ngModel`],standalone:!1,features:[eC([Dt,Ct]),$m,_r,Kb(null)]})}return n})();var bt=(()=>{class n{static ɵfac=function(r){return new(r||n)};static ɵmod=wa({type:n});static ɵinj=mo({})}return n})();var Zt=(()=>{class n{static withConfig(t){return{ngModule:n,providers:[{provide:Te,useValue:t.callSetDisabledState??K}]}}static ɵfac=function(r){return new(r||n)};static ɵmod=wa({type:n});static ɵinj=mo({imports:[bt]})}return n})();export{Zt as i,De as n,Yt as r,At as t}; \ No newline at end of file diff --git a/portal/assets/chunk-BKcxAbqq.js b/portal/assets/chunk-DsEeBzOB.js similarity index 67% rename from portal/assets/chunk-BKcxAbqq.js rename to portal/assets/chunk-DsEeBzOB.js index d24857f..f322a97 100644 --- a/portal/assets/chunk-BKcxAbqq.js +++ b/portal/assets/chunk-DsEeBzOB.js @@ -1 +1 @@ -var e={"app.title":`Forge Portal`,"app.tagline":`engenharia agentic, simplificada`,"nav.dashboard":`Painel`,"nav.install":`Instalação`,"nav.federation":`Família de Forjas`,"nav.profiles":`Perfis`,"nav.hosts":`Hosts de IA`,"nav.mcp":`MCP`,"nav.skills":`Skills`,"nav.agents":`Agents`,"nav.tasks":`Tarefas`,"nav.graph":`Graph Studio`,"nav.knowledge":`Conhecimento`,"nav.settings":`Configurações`,"nav.section.overview":`Visão geral`,"nav.section.explore":`Explorar`,"nav.section.operate":`Operar`,"nav.section.analyze":`Analisar`,"nav.section.settings":`Configurações`,"nav.primary":`Navegação principal`,"nav.collapse":`Recolher menu`,"nav.skip":`Pular para o conteúdo`,"nav.expand":`Expandir menu`,"nav.shortcut.collapse":`Recolher menu (tecla [)`,"command.open":`Buscar ações e páginas…`,"command.hint":`Digite para buscar páginas, ações e ajuda`,"command.empty":`Nada encontrado para essa busca.`,"state.loading":`Carregando…`,"state.retry":`Tentar novamente`,"state.refresh":`Atualizar`,"state.close":`Fechar`,"state.cancel":`Cancelar`,"state.confirm":`Confirmar`,"state.apply":`Aplicar`,"state.copy":`Copiar`,"state.copied":`Copiado`,"state.open":`Abrir`,"state.viewDetails":`Ver detalhes`,"state.enabled":`Ativado`,"state.disabled":`Desativado`,"state.unknown":`Desconhecido`,"state.unverified":`Não verificado`,"state.supported":`Suportado`,"state.unsupported":`Não suportado`,"state.notApplicable":`Não se aplica`,"state.absent":`Ausente`,"state.required":`Obrigatório`,"state.optional":`Opcional`,"state.yes":`Sim`,"state.no":`Não`,"state.none":`Nenhum`,"state.all":`Todos`,"installState.NOT_INSTALLED":`Não instalado`,"installState.INSTALLED":`Instalado`,"installState.CONFIGURED":`Configurado`,"installState.ACTIVE":`Ativo`,"installState.VERIFIED":`Verificado`,"installState.DEGRADED":`Degradado`,"installState.BLOCKED":`Bloqueado`,"installState.FAILED":`Falhou`,"mcpState.NOT_CONFIGURED":`Não configurado`,"mcpState.CONFIGURED":`Configurado`,"mcpState.STARTING":`Iniciando`,"mcpState.HANDSHAKE_VERIFIED":`Handshake verificado`,"mcpState.TOOLS_DISCOVERED":`Tools descobertas`,"mcpState.INVOCATION_VERIFIED":`Invocação verificada`,"mcpState.DEGRADED":`Degradado`,"mcpState.FAILED":`Falhou`,"dashboard.title":`Painel`,"dashboard.subtitle":`Visão real da sua Forja neste workspace.`,"dashboard.health":`Saúde da instalação`,"dashboard.workspace":`Workspace`,"dashboard.noWorkspace":`Nenhum workspace aberto`,"dashboard.profile":`Perfil`,"dashboard.host":`Host de IA`,"dashboard.mcp":`MCP`,"dashboard.skills":`Skills disponíveis`,"dashboard.agents":`Agents disponíveis`,"dashboard.tasks":`Tarefas recentes`,"dashboard.findings":`Alertas`,"dashboard.graph":`Grafo`,"dashboard.recommended":`Ações recomendadas`,"dashboard.quickStart":`Primeiros passos`,"dashboard.quickStart.hint":`Complete estes passos para começar a usar a Forja com seu host de IA.`,"dashboard.step.install":`Instalar a Forja`,"dashboard.step.family":`Preparar a família de Forjas`,"dashboard.step.host":`Verificar um host de IA`,"dashboard.step.mcp":`Verificar o handshake MCP`,"dashboard.step.task":`Executar a primeira tarefa`,"dashboard.capabilities":`Capacidades`,"dashboard.none":`Sem dados ainda — execute uma verificação.`,"dashboard.stat.state":`Estado da instalação`,"dashboard.stat.capabilities":`Capabilities prontas`,"dashboard.stat.checks":`Checks ok`,"dashboard.stat.portal":`Versão do portal`,"dashboard.accountEnvironment":`Ambiente da conta`,"dashboard.accountEnvironmentHint":`Caminhos reutilizáveis da Forja, fora do workspace.`,"dashboard.environmentMissing":`Execute install.ps1 ou install.sh para publicar esses caminhos.`,"environmentState.READY":`Pronto`,"environmentState.PARTIAL":`Parcial`,"environmentState.MISSING":`Ausente`,"environmentState.INVALID":`Inválido`,"environmentState.UNSET":`Não definido`,"install.title":`Instalação`,"install.subtitle":`Instalar, reparar, verificar ou remover esta Forja — o mesmo serviço do CLI, com os mesmos recibos.`,"install.status":`Estado atual`,"install.portal.installed":`Forge Portal instalado`,"install.portal.vendored":`Forge Portal sem instalação local`,"install.portal.vendored.hint":`apenas assets vendored — nenhuma instalação local encontrada`,"install.scope":`Escopo`,"install.scope.project":`Projeto atual`,"install.scope.project.hint":`Escreve apenas neste diretório — ideal para experimentar.`,"install.scope.workspace":`Workspace`,"install.scope.workspace.hint":`Aplica-se a todo o workspace detectado.`,"install.scope.user":`Usuário`,"install.scope.user.hint":`Disponível em todos os projetos deste usuário.`,"install.components":`Componentes`,"install.plan":`Gerar plano`,"install.plan.review":`Revisar plano`,"install.plan.changes":`{count, plural, one{# alteração planejada} other{# alterações planejadas}}`,"install.apply":`Aplicar instalação`,"install.repair":`Reparar instalação`,"install.uninstall":`Desinstalar`,"install.uninstall.confirm":`Isso remove os arquivos gerenciados desta Forja neste escopo. Somente arquivos registrados no ledger são removidos.`,"install.uninstall.confirmBtn":`Confirmar desinstalação`,"install.host.all":`Todos os hosts`,"install.host.notDetected":`não detectado`,"install.verify":`Verificar`,"install.receipt":`Recibo`,"install.running":`Executando…`,"install.done":`Concluído`,"install.refused":`Recusado`,"install.hosts":`Hosts de IA`,"install.hosts.hint":`Escolha para quais hosts integrar skills, agents e MCP.`,"install.profile":`Perfil de instalação`,"install.executionProfile":`Perfil de execução`,"install.summary":`Pronto para instalar`,"install.summary.scope":`Escopo`,"install.summary.host":`Host`,"install.summary.profile":`Perfil`,"install.summary.executionProfile":`Execução`,"install.summary.components":`Componentes`,"install.summary.empty":`Selecione ao menos um componente para gerar o plano.`,"install.step.configure":`Configurar`,"install.step.plan":`Plano`,"install.step.review":`Revisão`,"install.step.done":`Recibo`,"install.receipt.status":`Estado`,"federation.title":`Família de Forjas`,"federation.subtitle":`Veja especialistas reais e prepare o workspace com uma aprovação única.`,"federation.summary":`Resumo da federação`,"federation.catalog":`Especialistas no catálogo`,"federation.installed":`Forjas registradas`,"federation.mcp":`Com MCP declarado`,"federation.checkouts":`Checkouts locais`,"federation.governed":`Plano governado`,"federation.setup.title":`Preparar a família`,"federation.setup.hint":`Escolha uma vez. Cada Forja conserva seu instalador, ledger e verificação.`,"federation.host":`Hosts de IA`,"federation.host.all":`Todos os hosts`,"federation.host.allHint":`Integrações compatíveis detectadas por cada Forja.`,"federation.host.none":`Nenhum host agora`,"federation.host.noneHint":`Mantém arquivos de host intocados.`,"federation.host.claude":`Claude`,"federation.host.devin":`Devin`,"federation.host.codex":`Codex`,"federation.host.copilot":`Copilot`,"federation.host.detected":`A Forja confirma o estado no plano.`,"federation.profile":`Perfil de instalação`,"federation.profile.minimal":`Economy`,"federation.profile.minimalHint":`Núcleo/MCP; capacidades entram sob demanda.`,"federation.profile.recommended":`Recommended`,"federation.profile.recommendedHint":`Skills, agents, MCP e experiência completa.`,"federation.profile.full":`Full`,"federation.profile.fullHint":`Todos os componentes compatíveis selecionados.`,"federation.executionProfile":`Perfil de execução`,"federation.execution.economy":`Economy`,"federation.execution.economyHint":`Menor custo e uso de contexto para tarefas rotineiras.`,"federation.execution.balanced":`Balanced`,"federation.execution.balancedHint":`Equilíbrio padrão entre capacidade, velocidade e custo.`,"federation.execution.deep":`Deep`,"federation.execution.deepHint":`Mais contexto e profundidade para tarefas complexas.`,"federation.components":`Componentes opcionais`,"federation.component.skills":`Skills`,"federation.component.skillsHint":`Capacidades descobertas pelo host.`,"federation.component.agents":`Agents`,"federation.component.agentsHint":`Especialistas e subagents declarados.`,"federation.component.mcp":`MCP`,"federation.component.mcpHint":`Entradas MCP governadas.`,"federation.component.tui":`TUI`,"federation.component.tuiHint":`Command center no terminal.`,"federation.component.graph":`Graph Studio`,"federation.component.graphHint":`Grafo federado e navegação visual.`,"federation.plan":`Gerar plano da família`,"federation.planHint":`Nada muda antes da revisão e confirmação.`,"federation.specialists":`Especialistas`,"federation.specialistsHint":`Estado observado no catálogo e no registry local.`,"federation.mcpReady":`MCP declarado`,"federation.mcpAbsent":`MCP não declarado`,"federation.empty":`Nenhum especialista foi observado neste workspace.`,"federation.review":`Revisar plano da família`,"federation.reviewHint":`O plano abaixo vem dos instaladores reais registrados.`,"federation.actions":`Ações`,"federation.apply":`Aplicar família`,"federation.running":`Aplicando instaladores e coletando recibos…`,"federation.receipt":`Recibo da família`,"federation.receiptHint":`Consulte os estados novamente para confirmar o resultado.`,"profiles.title":`Perfis`,"profiles.subtitle":`Quanto da Forja fica disponível no contexto do seu host de IA.`,"profiles.current":`Perfil atual`,"profiles.economy":`Economy`,"profiles.economy.desc":`Menor consumo de contexto. Carrega capacidades conforme necessário.`,"profiles.balanced":`Balanced`,"profiles.balanced.desc":`Equilíbrio entre disponibilidade, qualidade e economia.`,"profiles.deep":`Deep`,"profiles.deep.desc":`Máxima profundidade de verificação e evidência de execução.`,"profiles.full":`Full`,"profiles.full.desc":`Todos os componentes compatíveis disponíveis, sem carregar tudo no contexto.`,"profiles.apply":`Aplicar perfil`,"profiles.diff":`O que muda`,"hosts.title":`Hosts de IA`,"hosts.subtitle":`Estado real de cada host — detectado, autenticado e integrado.`,"hosts.detected":`Detectado`,"hosts.installed":`Integrado`,"hosts.version":`Versão`,"hosts.supported":`Suportado`,"hosts.auth":`Autenticação`,"hosts.auth.signedIn":`Autenticado`,"hosts.auth.signedOut":`Não autenticado`,"hosts.auth.unknown":`Não verificado`,"hosts.integration":`Integração`,"hosts.launch":`Abrir host`,"hosts.launch.copyHint":`Execute este comando no seu terminal para abrir o host:`,"hosts.launch.unavailable":`O portal não inicia hosts — abra pelo terminal com o comando abaixo.`,"hosts.docs":`Documentação oficial`,"hosts.notDetected":`Não detectado neste sistema`,"hosts.restartRequired":`Reinicie o host para aplicar a configuração`,"hostState.NOT_DETECTED":`Não detectado`,"hostState.DETECTED":`Detectado`,"hostState.INSTALLED":`Instalado`,"hostState.CONFIGURED":`Configurado`,"hostState.MCP_REGISTERED":`MCP registrado`,"hostState.HANDSHAKE_VERIFIED":`Handshake verificado`,"hostState.TOOLS_DISCOVERED":`Ferramentas descobertas`,"hostState.EXECUTION_VERIFIED":`Execução verificada`,"hostState.FAILED":`Falhou`,"hostState.BLOCKED":`Bloqueado`,"mcp.title":`MCP`,"mcp.subtitle":`Servidores MCP e verificação real de handshake.`,"mcp.servers":`Servidores`,"mcp.tools":`{count, plural, one{# tool} other{# tools}}`,"mcp.verify":`Verificar handshake`,"mcp.lastVerify":`Última verificação`,"mcp.limitations":`Limitações`,"mcp.never":`Nunca verificado`,"skills.title":`Skills`,"skills.subtitle":`Catálogo real de skills desta Forja.`,"skills.search":`Buscar skills…`,"skills.domain":`Domínio`,"skills.state":`Estado`,"skills.hosts":`Hosts`,"skills.empty":`Nenhuma skill corresponde à busca.`,"skills.none":`Esta Forja não distribui um catálogo de skills.`,"agents.title":`Agents`,"agents.subtitle":`Agents, subagents e coordenadores com autoridade declarada.`,"agents.search":`Buscar agents…`,"agents.role":`Papel`,"agents.authority":`Autoridade`,"agents.skills":`Skills`,"agents.domains":`Domínios`,"agents.empty":`Nenhum agent corresponde à busca.`,"agents.none":`Esta Forja não distribui um catálogo de agents.`,"tasks.title":`Tarefas`,"tasks.subtitle":`Diga o que você quer fazer — o portal monta o plano na Forja real.`,"tasks.intent.label":`O que você quer fazer?`,"tasks.intent.placeholder":`Ex.: analisar os scripts PySpark deste projeto`,"tasks.intent.run":`Planejar`,"tasks.plan":`Plano`,"tasks.plan.review":`Revise o plano antes de executar.`,"tasks.plan.task":`Tarefa`,"tasks.plan.verb":`Verbo`,"tasks.plan.intent":`Sua intenção`,"fdoc.checks":`Verificações`,"fdoc.repairable":`(reparável)`,"fdoc.drift":`Drift`,"fdoc.modified":`modificados`,"fdoc.missing":`ausentes`,"fdoc.managed_files":`Arquivos gerenciados`,"fdoc.planned_files":`Arquivos planejados`,"fdoc.more":`mais`,"fdoc.portal":`Forge Portal`,"fdoc.portal.vendored":`assets embutidos — sem instalação local`,"fdoc.workspace":`Workspace`,"fdoc.verification":`Verificação`,"fdoc.unlock":`desbloquear:`,"fdoc.repair":`reparo:`,"fdoc.raw":`Avançado — JSON bruto`,"doc.target":`alvo`,"doc.scope":`escopo`,"doc.version":`versão`,"doc.profile":`perfil`,"doc.state_dir":`dir de estado`,"doc.managed":`entradas gerenciadas`,"tasks.execute":`Executar`,"tasks.recent":`Tarefas recentes`,"tasks.empty":`Nenhuma tarefa executada nesta sessão.`,"tasks.stage.started":`Iniciada`,"tasks.stage.planning":`Planejando`,"tasks.stage.selected":`Especialista selecionado`,"tasks.stage.running":`Executando`,"tasks.stage.verifying":`Verificando`,"tasks.stage.completed":`Concluída`,"tasks.stage.failed":`Falhou`,"tasks.stage.refused":`Recusada`,"tasks.result":`Resultado`,"tasks.evidence":`Evidência`,"tasks.noHost":`Sem host detectado — o plano mostra o comando exato para rodar no seu host.`,"graph.title":`Graph Studio`,"graph.subtitle":`Grafo real da Forja — nós, arestas, evidência e impacto.`,"graph.open":`Abrir Graph Studio`,"graph.nodes":`{count, plural, one{# nó} other{# nós}}`,"graph.edges":`{count, plural, one{# aresta} other{# arestas}}`,"graph.unavailable":`Nenhum grafo construído ainda.`,"graph.buildHint":`Construa o grafo pela Forja e recarregue esta página.`,"graph.federated":`Federado`,"graph.fed.title":`Grafo federado do ecossistema`,"graph.fed.export":`Exportar grafo`,"graph.fed.sources":`Fontes de dados`,"graph.fed.evidenceNote":`Cada nó carrega o endpoint que o forneceu — nada é presumido.`,"graph.fed.search":`Buscar nós por nome ou id…`,"graph.fed.kind":`Tipo`,"graph.fed.verification":`Verificação`,"graph.fed.observed":`observado`,"entity.openIn":`Abrir em`,"graph.fed.impact":`Impacto direto`,"graph.fed.noImpact":`Nenhuma aresta registrada para este nó.`,"graph.fed.empty":`Nenhum nó corresponde aos filtros.`,"graph.fed.none":`Nenhum dado federado disponível.`,"graph.source.loaded":`carregado`,"graph.source.unverified":`não verificado`,"graph.source.unavailable":`indisponível`,"graph.view.toggle":`Visualização do grafo`,"graph.view.list":`Lista`,"graph.view.canvas":`Canvas`,"graph.canvas.tools":`Ferramentas do canvas`,"graph.canvas.layout":`Layout`,"graph.canvas.reset":`Reiniciar layout`,"graph.canvas.fit":`Ajustar`,"graph.canvas.zoomSel":`Zoom no selecionado`,"graph.canvas.aria":`Canvas do grafo — arraste, aplique zoom e selecione nós e arestas`,"graph.canvas.legend":`Legenda de tipos de nó`,"graph.edge.title":`Aresta`,"graph.edge.relation":`Relação`,"graph.edge.source":`Origem`,"graph.edge.target":`Destino`,"graph.edge.direction":`Direção`,"graph.edge.observedAt":`Fonte observada às`,"graph.edge.related":`Outras relações neste par`,"graph.edge.relatedNone":`Nenhuma outra relação conecta este par.`,"graph.fed.state":`Estado`,"graph.fed.category":`Categoria`,"graph.fed.origin":`Forja de origem`,"graph.fed.version":`Versão`,"graph.fed.degree":`Relações`,"graph.fed.failed":`Falha reportada`,"graph.fed.relOut":`Usa / declara (saída)`,"graph.fed.relIn":`Usado / referenciado por (entrada)`,"graph.fed.noRelations":`Nenhuma relação declarada.`,"graph.impact.title":`Análise de impacto — topológica`,"graph.impact.depth":`Profundidade`,"graph.impact.usedBy":`O que depende dele`,"graph.impact.uses":`O que ele usa`,"graph.impact.more":`+{count} a mais`,"graph.impact.component":`Componente`,"graph.impact.cycle":`Ciclo`,"graph.impact.orphan":`Órfão — nenhuma relação declarada`,"graph.impact.unverified":`Relações não verificadas`,"graph.impact.coverage":`Cobertura: {loaded}/{total} fontes carregadas`,"graph.impact.path":`Caminho mais curto até…`,"graph.impact.dirOut":`Seguindo arestas`,"graph.impact.dirBoth":`Qualquer direção`,"graph.impact.noPath":`Não existe caminho nessa direção.`,"graph.impact.topoNote":`Alcance apenas topológico — relações declaradas não afirmam impacto em runtime.`,"graph.canvas.group":`Agrupar`,"graph.group.none":`Sem agrupamento`,"graph.group.kind":`por tipo`,"graph.group.forge":`por forja`,"graph.group.host":`por host`,"graph.view.reset":`Reiniciar visão`,"graph.snap.capture":`Capturar snapshot`,"graph.snap.compare":`Comparar com snapshot`,"graph.snap.clear":`Descartar snapshot`,"graph.snap.at":`Snapshot de {at}`,"graph.diff.title":`Diff de topologia vs snapshot`,"graph.diff.unchanged":`Nenhuma mudança topológica desde o snapshot.`,"graph.diff.added":`Adicionados`,"graph.diff.removed":`Removidos`,"graph.diff.changed":`Alterados`,"graph.legend.declared":`declarada e carregada`,"graph.legend.unverified":`fonte não verificada`,"graph.legend.unavailable":`fonte indisponível`,"knowledge.title":`Conhecimento`,"knowledge.subtitle":`Documentação, receitas e guias desta Forja — PT-BR primeiro.`,"knowledge.search":`O que você quer resolver?`,"knowledge.placeholder":`Ex.: como analisar um Glue Job`,"knowledge.results":`{count, plural, one{# resultado} other{# resultados}}`,"knowledge.empty":`Nada encontrado — tente outro termo.`,"knowledge.open":`Abrir documento`,"knowledge.entities":`Entidades observadas`,"knowledge.noEntities":`Nenhuma entidade corresponde aos filtros.`,"knowledge.related":`Relações verificáveis`,"knowledge.relatedEmpty":`Nenhuma relação declarada para esta entidade.`,"knowledge.sameDomain":`Skills no mesmo domínio declarado`,"knowledge.declaredBy":`Agents que declaram esta skill`,"knowledge.domainAgents":`Agents no mesmo domínio declarado`,"knowledge.entityDocs":`Documentos sobre esta entidade`,"knowledge.entityDocsEmpty":`A busca de documentos não retornou nada para o nome desta entidade.`,"knowledge.entityDocsUnverified":`Busca de documentos não verificada para esta entidade.`,"knowledge.docs":`Documentos`,"knowledge.docsHint":`Busque na documentação real desta Forja.`,"knowledge.docsUnavailable":`Esta Forja não expõe um endpoint de busca de documentos.`,"recommend.title":`Recomendações explicáveis`,"recommend.note":`Cada recomendação mostra o motivo e a fonte (endpoint → campo) que a comprova — nada é inferido.`,"recommend.partial":`Algumas fontes não foram verificadas — a lista pode estar incompleta.`,"recommend.empty":`Nenhuma recomendação derivável dos dados carregados.`,"recommend.goto":`Abrir`,"recommend.sev.warning":`atenção`,"recommend.sev.info":`info`,"recommend.kind.missingComponent":`Componente ausente`,"recommend.kind.incompleteConfig":`Configuração incompleta`,"recommend.kind.incompatibleDependency":`Dependência incompatível`,"recommend.kind.mcpUnavailable":`MCP indisponível`,"recommend.kind.recurringFailure":`Falha recorrente`,"recommend.kind.relatedSkill":`Skills relacionadas`,"recommend.reason.missingComponent":`{forge} consta no catálogo da federação, mas não há instalação registrada.`,"recommend.reason.envMissing":`Variável obrigatória {name} ausente no ambiente.`,"recommend.reason.envInvalid":`Variável obrigatória {name} presente, mas reportada como inválida.`,"recommend.reason.hostNotIntegrated":`Host {host} detectado, mas a integração ainda está em NOT_DETECTED.`,"recommend.reason.hostUnsupported":`Host {host} detectado e reportado como não suportado.`,"recommend.reason.mcpState":`{id} reporta o estado {state}.`,"recommend.reason.recurringFailure":`{count} execuções do verbo {verb} terminaram recusadas ou sem status ok.`,"recommend.reason.sameDomain":`{count} skills compartilham o domínio declarado {domain}.`,"settings.title":`Configurações`,"settings.subtitle":`Idioma, tema e preferências do portal.`,"settings.language":`Idioma`,"settings.language.auto":`Automático`,"settings.language.pt":`Português (Brasil)`,"settings.language.en":`English`,"settings.theme":`Tema`,"settings.theme.light":`Claro`,"settings.theme.dark":`Escuro`,"settings.theme.system":`Sistema`,"settings.about":`Sobre`,"settings.forge":`Forja`,"settings.version":`Versão`,"settings.portalVersion":`Versão do portal`,"settings.cli":`CLI`,"settings.federated":`Federado`,"error.title":`Algo deu errado`,"error.unreachable":`O servidor do portal não respondeu — ele está rodando?`,"error.session":`Sessão inválida ou expirada — abra o portal novamente pelo CLI.`,"error.forbidden":`Operação não permitida nesta sessão.`,"error.notFound":`Não encontrado.`,"error.generic":`Falha na operação.`,"error.retry":`Tentar novamente`,"error.details":`Detalhes técnicos`,"empty.noData":`Nada para mostrar ainda.`,"empty.noData.hint":`Os dados aparecem quando a Forja os produz — nada é inventado.`,"empty.notInstalled":`Esta Forja ainda não está instalada.`,"empty.notInstalled.hint":`Instale para ver estado real, hosts, MCP e catálogos.`,"empty.goInstall":`Ir para Instalação`,"notify.success":`Concluído`,"notify.error":`Falhou`,"notify.dismiss":`Dispensar`,"table.id":`ID`,"table.host":`Host`,"table.task":`Tarefa`,"table.verb":`Verbo`,"table.stage":`Estágio`,"table.exit":`Saída`,"nav.forges":`Forjas`,"nav.config":`Configuração`,"notify.region":`Notificações`,"common.updatedAt":`atualizado {time}`,"command.kind.page":`Páginas e ações`,"command.kind.forge":`Forjas`,"command.kind.capability":`Capacidades`,"command.kind.skill":`Skills`,"command.kind.agent":`Agents`,"command.kind.mcp":`MCP`,"command.kind.host":`Hosts`,"command.kind.doc":`Documentos`,"command.kind.operation":`Operações`,"command.kind.error":`Erros conhecidos`,"command.filters":`Filtrar por tipo`,"command.searching":`Buscando…`,"command.footer":`↑↓ navegar · ←→ filtrar · Enter abrir · Esc fechar`,"command.unverified":`Fonte não verificada nesta busca`,"dashboard.forges":`Forjas descobertas`,"dashboard.forges.hint":`A Forja que serve este portal mais os especialistas do registry federado.`,"dashboard.inventory":`Inventário`,"dashboard.inventory.hint":`Contagens reais lidas de cada endpoint de catálogo.`,"federation.unavailable":`Esta Forja não expõe um registry federado — dados não verificados.`,"explorer.title":`Explorador de Forjas`,"explorer.subtitle":`Todas as Forjas que este workspace consegue verificar — a servidora mais os especialistas federados.`,"explorer.serving":`servidora`,"explorer.registryOnly":`Apenas entrada no registry — nunca observada ao vivo.`,"explorer.empty":`Nenhuma Forja pôde ser descoberta.`,"explorer.notFound":`Nenhuma Forja com esta identidade no snapshot federado.`,"explorer.back":`Todas as Forjas`,"explorer.detail.subtitle":`Campos verificados pelo portal e pelo registry federado — dados ausentes são marcados, nunca preenchidos.`,"explorer.identity":`Identidade`,"explorer.presence":`Presença`,"explorer.notes":`Notas`,"explorer.checkout":`Checkout`,"registry.title":`Operações de registry`,"registry.hint":`Cada verbo passa por plano → revisão → confirmação explícita via forge-cli — nada executa sem o token do plano.`,"registry.forge":`Forja`,"registry.forge.hint":`nome da Forja (ex.: forge-doctor-api)`,"registry.op":`Operação`,"registry.state":`Estado do registry`,"registry.absent":`Sem estado de registry — nada instalado via forge-cli ainda.`,"registry.malformed":`O arquivo de estado existe, mas está malformado.`,"registry.unavailable":`Estado do registry não pôde ser verificado.`,"registry.none":`Nenhuma Forja instalada via registry.`,"registry.cliUnavailable":`forge-cli não está instalado — as operações de registry precisam dele.`,"registry.planning":`Planejando via forge-cli…`,"registry.review":`Revisar plano`,"registry.review.hint":`O plano abaixo veio do forge-cli — confirme para executar de fato.`,"registry.executing":`Executando via forge-cli…`,"registry.receipt":`Resultado da operação`,"registry.newOp":`Nova operação`,"registry.method":`Método`,"registry.installedAt":`Instalada em`,"registry.pinned":`fixada em`,"registry.colOps":`Ações`,"registry.previewEmpty":`O plano não trouxe detalhes.`,"registry.action.install":`Instalar`,"registry.action.update":`Atualizar`,"registry.action.reinstall":`Reinstalar`,"registry.action.rollback":`Rollback`,"registry.action.pin":`Fixar`,"registry.action.unpin":`Liberar`,"registry.action.repair":`Reparar`,"registry.action.uninstall":`Desinstalar`,"registry.action.verify":`Verificar`,"registry.toast.planned":`Plano pronto: {action} em {forge}.`,"registry.toast.executed":`{action} em {forge}: {status}.`,"install.step.discover":`Descobrir`,"install.step.select":`Selecionar`,"install.step.reviewDiff":`Revisar diff`,"install.step.confirm":`Confirmar`,"install.step.execute":`Executar`,"install.step.verify":`Verificar`,"install.step.receipt":`Recibo`,"install.discover.hosts":`Hosts de IA detectados neste ambiente`,"install.planning":`Calculando plano de instalação…`,"install.diff.none":`O backend não forneceu diff campo a campo — revisando ações.`,"install.confirm.hint":`Revise o plano acima. A execução só acontece após confirmação explícita.`,"install.confirm.execute":`Confirmar e executar`,"install.confirm.back":`Voltar`,"install.confirm.next":`Continuar`,"install.executing":`Executando o plano aprovado…`,"install.verify.running":`Revalidando o estado pós-instalação…`,"install.verify.unverified":`O backend não retornou checks — verificação não confirmada.`,"install.reinstall":`Reinstalar`,"install.newPlan":`Novo plano`,"install.flow.hint":`Nada é executado sem plano revisado e confirmação explícita — como na CLI.`,"install.ops.title":`Operações`,"install.ops.update":`Atualizar`,"install.ops.update.hint":`Atualização via portal não é exposta por este adapter — caminho não verificado.`,"install.ops.repair.hint":`Reexecuta verificações e repara entradas divergentes.`,"config.title":`Centro de configuração`,"config.subtitle":`Variáveis de ambiente desta Forja — somente metadados, nunca valores.`,"config.alert.missing":`Variáveis obrigatórias ausentes ou inválidas impedem a Forja de operar.`,"config.env.prefix":`Prefixo`,"config.env.scope":`Escopo`,"config.env.aliases":`Aliases do Windows`,"config.col.name":`Variável`,"config.col.required":`Obrigatória`,"config.col.present":`Presente`,"config.col.valid":`Válida`,"config.col.kind":`Tipo`,"config.col.path":`Caminho`,"config.prepare.title":`Preparar alterações`,"config.prepare.hint":`Comandos prontos para colar no seu shell — o portal nunca escreve variáveis por você.`,"config.prepare.none":`Nenhuma variável pendente — ambiente pronto.`,"config.apply.title":`Aplicar alterações`,"config.apply.portal":`Aplicar pelo portal`,"config.apply.unsupported":`Este adapter não expõe escrita de configuração — caminho não verificado.`,"config.profiles.link":`Ver perfis de componentes`,"config.profiles.hint":`Perfis definem quais componentes cada instalação habilita.`,"profiles.compare":`Comparar perfis`,"profiles.compare.hint":`Selecione dois perfis para ver a diferença de componentes.`,"profiles.compare.a":`Perfil A`,"profiles.compare.b":`Perfil B`,"profiles.compare.component":`Componente`,"profiles.compare.differences":`{count} diferenças`,"profiles.compare.same":`Perfis idênticos`,"nav.match":`Capacidades`,"hosts.launchable":`Iniciável pelo portal`,"hosts.commandHint":`Comando para o seu terminal`,"hosts.request":`Solicitar integração`,"hosts.ops.plan":`Planejar integração`,"hosts.ops.files":`Inspecionar arquivos afetados`,"hosts.ops.fix":`Corrigir integração`,"hosts.ops.disable":`Desativar integração`,"hosts.ops.unsupported":`Op não exposta por este adapter — não verificado`,"mcp.safety":`A verificação de handshake é somente-leitura — o portal nunca invoca tools MCP.`,"mcp.host.unbound":`não vinculado a host`,"mcp.host.open":`Abrir este host na página de hosts`,"mcp.inspector":`Inspetor`,"mcp.selectHint":`Selecione um servidor no registro para inspecioná-lo.`,"mcp.detail":`Detalhe`,"mcp.explain.NOT_CONFIGURED":`Declarado, mas sem configuração para nenhum host.`,"mcp.explain.CONFIGURED":`Configurado — nenhum handshake executado ainda.`,"mcp.explain.STARTING":`Processo iniciando — handshake em andamento.`,"mcp.explain.HANDSHAKE_VERIFIED":`O handshake de initialize foi verificado contra o servidor real.`,"mcp.explain.TOOLS_DISCOVERED":`A descoberta de tools foi verificada após o handshake.`,"mcp.explain.INVOCATION_VERIFIED":`Uma sonda de invocação foi verificada pelo adapter.`,"mcp.explain.DEGRADED":`O servidor respondeu, mas o adapter reporta evidência degradada.`,"mcp.explain.FAILED":`A última verificação falhou — veja o detalhe.`,"mcp.surface.tools":`Ferramentas`,"mcp.surface.resources":`Recursos`,"mcp.surface.prompts":`Prompts`,"mcp.surface.notExposed":`Superfície não exposta por este adapter — não verificada.`,"mcp.surface.countOnly":`Somente a contagem é informada — nomes não são expostos.`,"mcp.surface.noTools":`O adapter não informou a contagem de tools — não verificada.`,"mcp.receipt.latency":`latência medida pelo portal`,"mcp.receipt.latencyHint":`Ida e volta HTTP medida pelo portal — não é a latência do protocolo MCP.`,"mcp.verifying":`Verificando handshake…`,"mcp.compat.title":`Relatório de compatibilidade`,"mcp.compat.hint":`Estado observado vs a progressão esperada de handshake — por servidor.`,"mcp.diag.title":`Diagnóstico`,"mcp.diag.hint":`Servidores em FAILED ou DEGRADED — evidência primeiro, depois re-verifique.`,"agents.detail":`Detalhes`,"agents.responsibility":`Responsabilidade`,"agents.origin":`Forja de origem`,"agents.compatibleHosts":`Hosts compatíveis`,"agents.tools":`Ferramentas / MCP`,"agents.permissions":`Permissões`,"agents.deps":`Dependências`,"agents.evidence":`Evidência`,"agents.notExposed":`Não exposto por este adapter — não verificado`,"skills.detail.description":`Descrição`,"skills.origin":`Forja de origem`,"skills.compatibility":`Hosts compatíveis`,"skills.prerequisites":`Pré-requisitos`,"skills.fileValidation":`Validação de arquivos`,"skills.deps":`Dependências`,"skills.actions":`Instalar / reparar`,"skills.actionsUnverified":`Ops de instalação/reparo não expostas por este adapter — não verificado`,"skills.notExposed":`Não exposto por este adapter — não verificado`,"skills.agentsLink":`Agentes que a declaram`,"skills.evidence":`Evidência`,"skills.dedup.title":`Colisões de nome`,"skills.dedup.hint":`Linhas com mesmo nome são sinalizadas para revisão — nunca mescladas.`,"skills.dedup.possible":`possível duplicata`,"skills.dedup.different":`mesmo nome, entidade diferente`,"match.title":`Busca de capacidades`,"match.subtitle":`Qual agent, skill, Forja ou MCP cobre uma capacidade — respondido apenas com metadados reais de catálogo.`,"match.placeholder":`Ex.: pyspark glue, contratos de api, graph…`,"match.hint":`Tente: qual agent trabalha com X? · qual skill suporta Y? · qual Forja cobre Z?`,"match.empty":`Nenhuma entrada de catálogo corresponde a essa capacidade.`,"match.limitation":`Apenas metadados de catálogo pesquisados — capacidade em runtime não verificada.`,"match.evidence":`Evidência`,"nav.observe":`Observabilidade`,"nav.versions":`Versões`,"tasks.correlation":`Correlação`,"tasks.events":`Ver eventos correlacionados`,"tasks.executing":`Executando plano…`,"tasks.export":`Exportar recibo`,"tasks.stale.title":`Plano expirado`,"tasks.stale.hint":`O plan token expirou — gere um novo plano para a mesma intenção. A execução nunca tenta de novo sozinha.`,"tasks.stale.regenerate":`Regenerar plano`,"tasks.ops.title":`Operações`,"tasks.ops.plan.hint":`Monta o plano a partir da intenção — nada executa ainda.`,"tasks.ops.execute.hint":`Executa um plano revisado, vinculado ao plan token.`,"tasks.ops.cancel.hint":`Operação de cancelamento não exposta pelo adapter.`,"tasks.limits":`Operações mutáveis têm limite de taxa e são vinculadas a um plan token; as transições de estágio vêm de registros reais de tarefas.`,"table.correlation":`Correlação`,"table.duration":`Duração`,"observe.title":`Observabilidade`,"observe.subtitle":`Métricas locais registradas por esta Forja — sem telemetria remota.`,"observe.localOnly":`Métricas somente locais — nada sai desta máquina.`,"observe.unavailable":`Esta Forja não expõe métricas locais — a capacidade está não verificada, nunca presumida.`,"observe.counters":`Contadores`,"observe.events":`Eventos`,"observe.generatedAt":`gerado {time}`,"observe.truncated":`Exibindo uma janela limitada — eventos mais antigos foram descartados para manter o relatório pequeno.`,"observe.filter.kind":`Tipo`,"observe.filter.status":`Status`,"observe.filter.corr":`Correlação`,"observe.col.kind":`Tipo`,"observe.col.at":`Quando`,"observe.col.duration":`Duração`,"observe.col.status":`Status`,"observe.col.origin":`Origem`,"observe.col.correlation":`Correlação`,"observe.col.detail":`Detalhe`,"observe.empty":`Nenhum evento registrado ainda.`,"observe.empty.hint":`Métricas aparecem quando a Forja executa tarefas, instalações ou verificações.`,"observe.noMatches":`Nenhum evento corresponde aos filtros atuais.`,"nav.execution":`Execução`,"execution.title":`Execução`,"execution.subtitle":`Eventos de execução registrados — timestamps reais, intervalos reais, sem simulação.`,"execution.localOnly":`Buffer local de eventos — nada sai desta máquina.`,"execution.unavailable":`Esta Forja não registra eventos de execução — a capacidade está não verificada, nunca presumida.`,"execution.summary":`Janela registrada`,"execution.count.events":`eventos`,"execution.count.executions":`execuções`,"execution.count.dropped":`descartados`,"execution.count.capacity":`capacidade`,"execution.truncated":`Exibindo uma janela limitada — {dropped} evento(s) antigos foram descartados para manter o buffer pequeno.`,"execution.timeline.title":`Execuções`,"execution.timeline.hint":`Uma linha por correlação — as barras cobrem o primeiro→último timestamp registrado; os ticks são eventos registrados; os spans derivam apenas da duração registrada.`,"execution.timeline.unplaced":`{count} evento(s) sem timestamp — reais, não desenhados.`,"execution.timeline.empty":`Nenhum evento carrega timestamp utilizável.`,"execution.unlinked":`sem vínculo`,"execution.replay.title":`Replay`,"execution.replay.hint":`Reprodução dos eventos registrados em ordem real — intervalos escalados pela velocidade, intervalos comprimidos marcados ⇥.`,"execution.replay.prev":`Anterior`,"execution.replay.next":`Próximo`,"execution.replay.play":`Reproduzir`,"execution.replay.pause":`Pausar`,"execution.replay.speed":`velocidade`,"execution.replay.step":`passo {current} de {total}`,"execution.replay.gap":`intervalo registrado até o evento anterior`,"execution.replay.compressed":`intervalo real acima do teto de reprodução — exibido real, esperado menos`,"execution.noTimestamp":`sem timestamp registrado`,"execution.events":`Eventos`,"execution.filter.type":`Tipo`,"execution.filter.status":`Status`,"execution.filter.corr":`Correlação`,"execution.filter.search":`Busca`,"execution.col.type":`Tipo`,"execution.col.at":`Quando`,"execution.col.status":`Status`,"execution.col.flow":`Origem → destino`,"execution.col.duration":`Duração`,"execution.col.correlation":`Correlação`,"execution.empty":`Nenhum evento registrado ainda.`,"execution.empty.hint":`Eventos aparecem quando o portal e seu adapter processam operações — inícios, fins, recusas e emissões de domínio.`,"execution.noMatches":`Nenhum evento corresponde aos filtros atuais.`,"execution.insp.schema":`Schema`,"execution.insp.at":`Registrado em`,"execution.insp.status":`Status`,"execution.insp.duration":`Duração`,"execution.insp.correlation":`Correlação`,"execution.insp.span":`Span`,"execution.insp.parent":`Span pai`,"execution.insp.trace":`Trace`,"execution.insp.source":`Origem`,"execution.insp.target":`Destino`,"execution.insp.task":`Tarefa`,"execution.insp.causedBy":`Span pai observado em:`,"execution.insp.metadata":`Metadados`,"execution.insp.evidence":`Evidência`,"execution.insp.related":`Eventos relacionados`,"nav.lab":`Lab`,"lab.title":`Forge Lab`,"lab.subtitle":`Execuções de benchmark, catálogo de cenários e comparações — só receipts reais.`,"lab.unavailable":`O endpoint /lab não existe neste adaptador — os dados de lab não podem ser verificados.`,"lab.empty.title":`Sem dados é honesto: nenhuma execução de lab coletada ainda.`,"lab.empty.subtitle":`Rode theforge lab collect — os resultados aparecem aqui, nunca mock.`,"lab.runs":`Histórico de execuções`,"lab.catalog":`Catálogo de cenários`,"lab.reports":`Relatórios`,"lab.notes":`Notas do coletor`,"lab.compare.title":`Comparação de vereditos`,"lab.compare.a":`run A`,"lab.compare.b":`vs`,"lab.filter.all":`Todas as forjas`,"lab.export.json":`JSON`,"lab.export.md":`Markdown`,"lab.col.file":`run`,"lab.col.forges":`forjas`,"lab.col.scenarios":`cenários`,"lab.col.pass":`pass`,"lab.col.fail":`fail`,"lab.col.skipped":`skipped`,"lab.col.forge":`forja`,"lab.col.scenario":`cenário`,"lab.col.verdict":`veredito`,"lab.col.duration":`duração`,"lab.col.metrics":`métricas`,"lab.col.detail":`detalhe`,"versions.title":`Versões`,"versions.subtitle":`Versão instalada, compatibilidade e histórico de releases — offline-first.`,"versions.unavailable":`Esta Forja não expõe informações de versão — a capacidade está não verificada, nunca presumida.`,"versions.installed":`Instalado`,"versions.installed.version":`Versão`,"versions.installed.origin":`Origem`,"versions.installed.channel":`Canal`,"versions.compat":`Compatibilidade`,"versions.available":`Disponível`,"versions.available.version":`Última`,"versions.available.source":`Fonte`,"versions.offline":`Sem consultas remotas de release no modo offline — a versão mais recente está não verificada, nunca suposta.`,"versions.changelog":`Changelog`,"versions.history":`Histórico`,"versions.history.version":`Versão`,"versions.history.at":`Quando`,"versions.history.detail":`Detalhe`,"versions.history.empty":`Nenhum histórico de versões registrado ainda.`,"versions.integrity":`Integridade`,"versions.integrity.release":`Release do manifesto`,"versions.integrity.sha256":`sha256 do manifesto`,"versions.pending":`Pendências e plano de upgrade`,"versions.pending.updates":`Atualizações pendentes`,"versions.pending.plan":`Plano de upgrade`,"versions.pending.cli":`A descoberta de atualizações é do Forge CLI — o portal não supõe pendências.`,"versions.receipts":`Receipts`,"versions.receipts.file":`Receipt`,"versions.receipts.operation":`Operação`,"versions.receipts.status":`Status`,"versions.rollback":`Rollback`,"dashboard.stat.registryInstalls":`Instaladas via forge-cli`,"dashboard.stat.discovered":`Especialistas descobertos`,"ops.alerts.title":`Alertas acionáveis`,"ops.alerts.hint":`Cada alerta abre a página onde o problema se resolve — derivado só de sinais observados.`,"ops.alerts.empty":`Nenhum alerta acionável.`,"ops.alerts.emptyHint":`Todos os sinais observados estão ok — alertas só aparecem quando um endpoint reporta um problema real.`,"ops.alert.installState":`A instalação reporta o estado {state}.`,"ops.alert.notInstalled":`Esta Forja não está instalada.`,"ops.alert.checkFailed":`O check {id} falhou.`,"ops.alert.env":`O ambiente da conta reporta {state}.`,"ops.alert.specialist":`{forge} reporta o estado {state}.`,"ops.alert.forgeNotInstalled":`{forge} está no catálogo, mas não está instalada.`,"ops.alert.mcpState":`Servidor MCP {id} reporta {state}.`,"ops.alert.mcpNotConfigured":`Servidor MCP {id} declarado, ainda não configurado.`,"ops.alert.hostIntegration":`A integração do host {host} reporta {state}.`,"ops.alert.hostNotIntegrated":`Host {host} detectado, integração não iniciada.`,"ops.alert.tasksFailed":`{count, plural, one{# tarefa falhou} other{# tarefas falharam}} nesta sessão.`,"ops.alert.registryMalformed":`O state do forge-cli está malformado — os receipts não puderam ser lidos.`,"ops.alert.updateAvailable":`Atualização disponível: {version}.`,"ops.alert.pendingUpdates":`Atualizações pendentes registradas pelo backend.`,"ops.alert.noGraph":`Nenhum grafo construído ainda.`,"ops.alert.goInstall":`Ir para Instalação`,"ops.alert.goConfig":`Ir para Configuração`,"ops.alert.goForge":`Abrir Forja`,"ops.alert.goFederation":`Ir para a família`,"ops.alert.goMcp":`Ir para MCP`,"ops.alert.goHosts":`Ir para hosts`,"ops.alert.goTasks":`Ir para tarefas`,"ops.alert.goVersions":`Ir para versões`,"ops.alert.goGraph":`Ir para o grafo`,"ops.versions.title":`Versões instaladas`,"ops.versions.hint":`Uma linha por fonte real — receipts do forge-cli, bootstrap e federação.`,"ops.versions.col.installed":`Instalada`,"ops.versions.col.pinned":`Pinned`,"ops.versions.col.method":`Método`,"ops.versions.col.source":`Fonte`,"ops.versions.update":`→ {version} disponível`,"ops.versions.empty":`Nenhuma versão instalada registrada.`,"ops.versions.emptyHint":`Receipts do forge-cli aparecem aqui quando forjas são instaladas via registry.`,"ops.registry.unavailable":`Este portal não expõe o registry state do forge-cli — dados não verificados.`,"ops.diagnostics.title":`Diagnóstico`,"ops.diagnostics.hint":`Atalhos para as páginas que investigam cada sinal.`,"agents.view.label":`Visualização`,"agents.view.cards":`Cards`,"agents.view.table":`Tabela`,"agents.view.graph":`Grafo`,"agents.declaredForge":`Forja declarada`,"agents.undeclared":`(não declarado)`,"agents.compare.title":`Comparar agents`,"agents.compare.pick":`Escolha um segundo agent para comparar.`,"agents.compare.clear":`Limpar`,"agents.compare.add":`Comparar`,"agents.compare.remove":`Remover da comparação`,"agents.compare.field":`Campo`,"agents.compare.notDeclared":`não declarado`,"agents.graph.hint":`Visão filtrada do grafo federado — os agents que passam nos filtros mais as skills e Forjas que seus descritores declaram.`,"agents.graph.empty":`Nenhum agent corresponde aos filtros — o subgrafo está vazio.`,"agents.graph.aria":`Canvas do grafo de agents — panorâmica, zoom, arrastar e selecionar nós`,"table.name":`Nome`,"table.actions":`Ações`,"table.started":`Início`,"table.finished":`Fim`,"tasks.timeline.title":`Linha do tempo de execução`,"tasks.timeline.hint":`Registros reais posicionados pelos timestamps de início/fim gravados.`,"tasks.timeline.unplaced":`{count, plural, one{# registro} other{# registros}} sem timestamp utilizável — não desenhado.`,"tasks.timeline.empty":`Nenhum registro de tarefa tem timestamp utilizável.`,"tasks.refusal":`Recusa`,"tasks.replay.title":`Eventos registrados`,"tasks.replay.hint":`Reprodução dos eventos persistidos em /metrics que compartilham o correlation id desta tarefa — não é uma reexecução.`,"tasks.replay.step":`passo {current} de {total}`,"tasks.replay.prev":`Anterior`,"tasks.replay.next":`Próximo`,"tasks.replay.empty":`Nenhum evento registrado compartilha este correlation id.`,"tasks.replay.noCorrelation":`Este registro não tem correlation id — eventos registrados não podem ser vinculados.`,"tasks.replay.unavailable":`O endpoint /metrics não respondeu — eventos registrados não verificados.`,"nav.guide":`Guia`,"dashboard.lastArea":`Última área:`,"guide.title":`Guia do portal`,"guide.subtitle":`Conceitos do ecossistema e por onde começar — sempre ligado às páginas reais.`,"guide.intro":`Este guia explica o vocabulário do ecossistema e aponta a página real onde cada conceito vira ação. Nada aqui é um tutorial obrigatório — leia o que precisar, quando precisar.`,"guide.toc":`Seções do guia`,"guide.start.title":`Por onde começar`,"guide.start.body":`O portal é uma camada de leitura sobre as Forjas instaladas — quase tudo aqui é observado, não inventado. Comece pelo Painel para ver o estado do ecossistema: cada card informa de qual endpoint veio a informação e quando ela foi atualizada.`,"guide.forge.title":`O que é uma Forja`,"guide.forge.body":`Uma Forja é um produto independente do ecossistema (spark-forge-aws, api-forge, platform-forge…). Em Forjas você vê quais estão instaladas, o estado reportado por cada uma e abre o detalhe correspondente.`,"guide.agent.title":`O que são agents`,"guide.agent.body":`Agents são perfis especializados declarados por cada Forja — coordenadores e executores com domínios e skills declarados. A página Agents lista o catálogo real; Match responde “qual agent cobre X”.`,"guide.skill.title":`O que são skills`,"guide.skill.body":`Skills são capacidades reutilizáveis que as Forjas publicam para agents e hosts. O catálogo mostra domínio, hosts e estado declarado — e sinaliza colisões de nome quando existem.`,"guide.mcp.title":`O que é MCP`,"guide.mcp.body":`Model Context Protocol (MCP) é o contrato que expõe as tools de uma Forja aos hosts de IA. A página MCP mostra os servidores registrados e o estado real do handshake — verificar executa um handshake de verdade.`,"guide.graph.title":`Explorar grafos`,"guide.graph.body":`O Graph Studio desenha entidades e relações extraídas dos descritores reais. Use busca, filtros e agrupamentos; selecione nós e arestas para ver evidências; a análise de impacto mostra o alcance multi-salto com a cobertura declarada dos dados.`,"guide.install.title":`Instalar componentes`,"guide.install.body":`Instalação altera o sistema de arquivos — por isso todo fluxo é planejar → confirmar → executar, com plano assinado e receipt. Perfis definem conjuntos de componentes; Hosts mostra o que a Forja detectou nesta máquina.`,"guide.diagnose.title":`Diagnosticar problemas`,"guide.diagnose.body":`Quando algo falha, comece pelo Painel: os alertas derivam de sinais reais e apontam a página que resolve. Tarefas lista execuções com estágio e recusa; Observe mostra os eventos registrados; erros trazem código, explicação e próxima ação.`,"guide.evidence.title":`Interpretar evidências`,"guide.evidence.body":`Evidência é o que separa fato de suposição: receipts, correlation ids, timestamps e estados declarados vêm do produtor. Execução reproduz os eventos registrados — lacunas aparecem como lacunas, nunca como dados simulados.`,"hint.more":`Saiba mais`,"hint.dismiss":`Dispensar dica`,"hint.start":`Painel operacional: cada seção indica a fonte real dos dados e quando foi atualizada.`,"hint.forge":`Uma Forja é um produto do ecossistema — aqui você vê as instaladas e o estado de cada uma.`,"hint.agent":`Agents são perfis especializados declarados pelas Forjas — com domínios, skills e hosts declarados.`,"hint.skill":`Skills são capacidades reutilizáveis publicadas pelas Forjas — o catálogo mostra origem e estado reais.`,"hint.mcp":`MCP é o protocolo que liga as Forjas aos hosts de IA — o estado do handshake aqui é verificado de verdade.`,"hint.graph":`O grafo mostra entidades e relações observadas — selecione um nó para ver origem, vizinhos e evidências.`,"hint.install":`Instalação segue o fluxo planejar → confirmar → executar — nada muda sem o seu plano confirmado.`,"hint.diagnose":`Tarefas registradas mostram estágio, saída e recusas — selecione uma para ver timeline e evidências.`,"hint.evidence":`Telemetria real: cada evento traz timestamp e correlation id do produtor — lacunas aparecem como lacunas.`,"settings.density":`Densidade visual`,"settings.density.comfortable":`Confortável`,"settings.density.compact":`Compacta`,"settings.motion":`Animações`,"settings.motion.system":`Sistema`,"settings.motion.full":`Todas`,"settings.motion.reduced":`Reduzidas`,"settings.hints":`Dicas de contexto`,"settings.hints.hint":`As dicas dispensadas voltam a aparecer quando você redefinir.`,"settings.hints.reset":`Mostrar dicas novamente`,"settings.privacy":`Idioma, tema, densidade, animações, menu recolhido, última área e filtros ficam salvos apenas neste navegador — nada sensível é armazenado.`,"err.explain.unreachable":`O servidor não respondeu. Abra o portal pelo CLI e tente novamente.`,"err.explain.session":`A sessão local expirou ou é inválida — abra o portal novamente pelo CLI para receber uma nova sessão.`,"err.explain.timeout":`A operação excedeu o tempo limite do servidor — veja em Tarefas se ela foi registrada e qual foi o estágio final.`,"err.explain.rateLimited":`Muitas ações de escrita em sequência — aguarde alguns segundos e tente de novo.`,"err.explain.payload":`O corpo da requisição excedeu o limite de 1 MiB do servidor.`,"err.explain.cli":`O CLI da Forja não está disponível no PATH — a página de Instalação mostra o estado e os próximos passos.`,"err.explain.unsupported":`Esta Forja não expõe essa capacidade — o painel lista o que ela declara suportar.`,"err.explain.hostAbsent":`O host pedido não foi detectado nesta máquina — Hosts mostra o que foi encontrado.`,"err.explain.forge":`A operação falhou na Forja alvo — a federação mostra o estado reportado por cada uma.`,"err.explain.notFound":`O recurso pedido não existe neste portal — volte ao painel e navegue pelo menu.`,"err.explain.internal":`Erro interno do servidor — Observe mostra os eventos registrados em torno da falha.`,"err.explain.confirm":`A ação exige confirmação explícita — refaça o fluxo: planejar → confirmar → executar.`,"err.explain.plan":`O plano expirou ou não corresponde à ação pedida — gere um novo plano antes de executar.`,"err.explain.secret":`Falta uma variável ou segredo de ambiente — a Central de configuração mostra o que está faltando.`,"err.explain.forbidden":`A sessão atual não permite essa operação.`,"err.explain.unavailable":`O servidor recusou a operação agora — tente novamente em instantes.`,"err.explain.request":`A requisição foi recusada antes de chegar à operação — formato inválido ou origem não permitida.`,"err.go.dashboard":`Ir para o painel`,"err.go.observe":`Ir para Observe`};export{e as PT_BR}; \ No newline at end of file +var e={"app.title":`Forge Portal`,"app.tagline":`engenharia agentic, simplificada`,"nav.dashboard":`Painel`,"nav.install":`Instalação`,"nav.federation":`Família de Forjas`,"nav.profiles":`Perfis`,"nav.hosts":`Hosts de IA`,"nav.mcp":`MCP`,"nav.skills":`Skills`,"nav.agents":`Agents`,"nav.tasks":`Tarefas`,"nav.graph":`Graph Studio`,"nav.knowledge":`Conhecimento`,"nav.settings":`Configurações`,"nav.section.overview":`Visão geral`,"nav.section.explore":`Explorar`,"nav.section.operate":`Operar`,"nav.section.analyze":`Analisar`,"nav.section.settings":`Configurações`,"nav.primary":`Navegação principal`,"nav.collapse":`Recolher menu`,"nav.skip":`Pular para o conteúdo`,"nav.expand":`Expandir menu`,"nav.shortcut.collapse":`Recolher menu (tecla [)`,"command.open":`Buscar ações e páginas…`,"command.hint":`Digite para buscar páginas, ações e ajuda`,"command.empty":`Nada encontrado para essa busca.`,"state.loading":`Carregando…`,"state.retry":`Tentar novamente`,"state.refresh":`Atualizar`,"state.close":`Fechar`,"state.cancel":`Cancelar`,"state.confirm":`Confirmar`,"state.apply":`Aplicar`,"state.copy":`Copiar`,"state.copied":`Copiado`,"state.open":`Abrir`,"state.viewDetails":`Ver detalhes`,"state.enabled":`Ativado`,"state.disabled":`Desativado`,"state.unknown":`Desconhecido`,"state.unverified":`Não verificado`,"state.supported":`Suportado`,"state.unsupported":`Não suportado`,"state.notApplicable":`Não se aplica`,"state.absent":`Ausente`,"state.required":`Obrigatório`,"state.optional":`Opcional`,"state.yes":`Sim`,"state.no":`Não`,"state.none":`Nenhum`,"state.all":`Todos`,"pager.label":`Paginação`,"pager.prev":`Anterior`,"pager.next":`Próxima`,"pager.range":`{from}–{to} de {total}`,"installState.NOT_INSTALLED":`Não instalado`,"installState.INSTALLED":`Instalado`,"installState.CONFIGURED":`Configurado`,"installState.ACTIVE":`Ativo`,"installState.VERIFIED":`Verificado`,"installState.DEGRADED":`Degradado`,"installState.BLOCKED":`Bloqueado`,"installState.FAILED":`Falhou`,"mcpState.NOT_CONFIGURED":`Não configurado`,"mcpState.CONFIGURED":`Configurado`,"mcpState.STARTING":`Iniciando`,"mcpState.HANDSHAKE_VERIFIED":`Handshake verificado`,"mcpState.TOOLS_DISCOVERED":`Tools descobertas`,"mcpState.INVOCATION_VERIFIED":`Invocação verificada`,"mcpState.DEGRADED":`Degradado`,"mcpState.FAILED":`Falhou`,"dashboard.title":`Painel`,"dashboard.subtitle":`Visão real da sua Forja neste workspace.`,"dashboard.health":`Saúde da instalação`,"dashboard.workspace":`Workspace`,"dashboard.noWorkspace":`Nenhum workspace aberto`,"dashboard.profile":`Perfil`,"dashboard.host":`Host de IA`,"dashboard.mcp":`MCP`,"dashboard.skills":`Skills disponíveis`,"dashboard.agents":`Agents disponíveis`,"dashboard.tasks":`Tarefas recentes`,"dashboard.findings":`Alertas`,"dashboard.graph":`Grafo`,"dashboard.recommended":`Ações recomendadas`,"dashboard.quickStart":`Primeiros passos`,"dashboard.quickStart.hint":`Complete estes passos para começar a usar a Forja com seu host de IA.`,"dashboard.step.install":`Instalar a Forja`,"dashboard.step.family":`Preparar a família de Forjas`,"dashboard.step.host":`Verificar um host de IA`,"dashboard.step.mcp":`Verificar o handshake MCP`,"dashboard.step.task":`Executar a primeira tarefa`,"dashboard.capabilities":`Capacidades`,"dashboard.none":`Sem dados ainda — execute uma verificação.`,"dashboard.stat.state":`Estado da instalação`,"dashboard.stat.capabilities":`Capabilities prontas`,"dashboard.stat.checks":`Checks ok`,"dashboard.stat.portal":`Versão do portal`,"dashboard.accountEnvironment":`Ambiente da conta`,"dashboard.accountEnvironmentHint":`Caminhos reutilizáveis da Forja, fora do workspace.`,"dashboard.environmentMissing":`Execute install.ps1 ou install.sh para publicar esses caminhos.`,"environmentState.READY":`Pronto`,"environmentState.PARTIAL":`Parcial`,"environmentState.MISSING":`Ausente`,"environmentState.INVALID":`Inválido`,"environmentState.UNSET":`Não definido`,"install.title":`Instalação`,"install.subtitle":`Instalar, reparar, verificar ou remover esta Forja — o mesmo serviço do CLI, com os mesmos recibos.`,"install.status":`Estado atual`,"install.portal.installed":`Forge Portal instalado`,"install.portal.vendored":`Forge Portal sem instalação local`,"install.portal.vendored.hint":`apenas assets vendored — nenhuma instalação local encontrada`,"install.scope":`Escopo`,"install.scope.project":`Projeto atual`,"install.scope.project.hint":`Escreve apenas neste diretório — ideal para experimentar.`,"install.scope.workspace":`Workspace`,"install.scope.workspace.hint":`Aplica-se a todo o workspace detectado.`,"install.scope.user":`Usuário`,"install.scope.user.hint":`Disponível em todos os projetos deste usuário.`,"install.components":`Componentes`,"install.plan":`Gerar plano`,"install.plan.review":`Revisar plano`,"install.plan.changes":`{count, plural, one{# alteração planejada} other{# alterações planejadas}}`,"install.apply":`Aplicar instalação`,"install.repair":`Reparar instalação`,"install.uninstall":`Desinstalar`,"install.uninstall.confirm":`Isso remove os arquivos gerenciados desta Forja neste escopo. Somente arquivos registrados no ledger são removidos.`,"install.uninstall.confirmBtn":`Confirmar desinstalação`,"install.host.all":`Todos os hosts`,"install.host.notDetected":`não detectado`,"install.verify":`Verificar`,"install.receipt":`Recibo`,"install.running":`Executando…`,"install.done":`Concluído`,"install.refused":`Recusado`,"install.hosts":`Hosts de IA`,"install.hosts.hint":`Escolha para quais hosts integrar skills, agents e MCP.`,"install.profile":`Perfil de instalação`,"install.executionProfile":`Perfil de execução`,"install.summary":`Pronto para instalar`,"install.summary.scope":`Escopo`,"install.summary.host":`Host`,"install.summary.profile":`Perfil`,"install.summary.executionProfile":`Execução`,"install.summary.components":`Componentes`,"install.summary.empty":`Selecione ao menos um componente para gerar o plano.`,"install.step.configure":`Configurar`,"install.step.plan":`Plano`,"install.step.review":`Revisão`,"install.step.done":`Recibo`,"install.receipt.status":`Estado`,"federation.title":`Família de Forjas`,"federation.subtitle":`Veja especialistas reais e prepare o workspace com uma aprovação única.`,"federation.summary":`Resumo da federação`,"federation.catalog":`Especialistas no catálogo`,"federation.installed":`Forjas registradas`,"federation.mcp":`Com MCP declarado`,"federation.checkouts":`Checkouts locais`,"federation.governed":`Plano governado`,"federation.setup.title":`Preparar a família`,"federation.setup.hint":`Escolha uma vez. Cada Forja conserva seu instalador, ledger e verificação.`,"federation.host":`Hosts de IA`,"federation.host.all":`Todos os hosts`,"federation.host.allHint":`Integrações compatíveis detectadas por cada Forja.`,"federation.host.none":`Nenhum host agora`,"federation.host.noneHint":`Mantém arquivos de host intocados.`,"federation.host.claude":`Claude`,"federation.host.devin":`Devin`,"federation.host.codex":`Codex`,"federation.host.copilot":`Copilot`,"federation.host.detected":`A Forja confirma o estado no plano.`,"federation.profile":`Perfil de instalação`,"federation.profile.minimal":`Economy`,"federation.profile.minimalHint":`Núcleo/MCP; capacidades entram sob demanda.`,"federation.profile.recommended":`Recommended`,"federation.profile.recommendedHint":`Skills, agents, MCP e experiência completa.`,"federation.profile.full":`Full`,"federation.profile.fullHint":`Todos os componentes compatíveis selecionados.`,"federation.executionProfile":`Perfil de execução`,"federation.execution.economy":`Economy`,"federation.execution.economyHint":`Menor custo e uso de contexto para tarefas rotineiras.`,"federation.execution.balanced":`Balanced`,"federation.execution.balancedHint":`Equilíbrio padrão entre capacidade, velocidade e custo.`,"federation.execution.deep":`Deep`,"federation.execution.deepHint":`Mais contexto e profundidade para tarefas complexas.`,"federation.components":`Componentes opcionais`,"federation.component.skills":`Skills`,"federation.component.skillsHint":`Capacidades descobertas pelo host.`,"federation.component.agents":`Agents`,"federation.component.agentsHint":`Especialistas e subagents declarados.`,"federation.component.mcp":`MCP`,"federation.component.mcpHint":`Entradas MCP governadas.`,"federation.component.tui":`TUI`,"federation.component.tuiHint":`Command center no terminal.`,"federation.component.graph":`Graph Studio`,"federation.component.graphHint":`Grafo federado e navegação visual.`,"federation.plan":`Gerar plano da família`,"federation.planHint":`Nada muda antes da revisão e confirmação.`,"federation.specialists":`Especialistas`,"federation.specialistsHint":`Estado observado no catálogo e no registry local.`,"federation.mcpReady":`MCP declarado`,"federation.mcpAbsent":`MCP não declarado`,"federation.empty":`Nenhum especialista foi observado neste workspace.`,"federation.review":`Revisar plano da família`,"federation.reviewHint":`O plano abaixo vem dos instaladores reais registrados.`,"federation.actions":`Ações`,"federation.apply":`Aplicar família`,"federation.running":`Aplicando instaladores e coletando recibos…`,"federation.receipt":`Recibo da família`,"federation.receiptHint":`Consulte os estados novamente para confirmar o resultado.`,"profiles.title":`Perfis`,"profiles.subtitle":`Quanto da Forja fica disponível no contexto do seu host de IA.`,"profiles.current":`Perfil atual`,"profiles.economy":`Economy`,"profiles.economy.desc":`Menor consumo de contexto. Carrega capacidades conforme necessário.`,"profiles.balanced":`Balanced`,"profiles.balanced.desc":`Equilíbrio entre disponibilidade, qualidade e economia.`,"profiles.deep":`Deep`,"profiles.deep.desc":`Máxima profundidade de verificação e evidência de execução.`,"profiles.full":`Full`,"profiles.full.desc":`Todos os componentes compatíveis disponíveis, sem carregar tudo no contexto.`,"profiles.apply":`Aplicar perfil`,"profiles.diff":`O que muda`,"hosts.title":`Hosts de IA`,"hosts.subtitle":`Estado real de cada host — detectado, autenticado e integrado.`,"hosts.detected":`Detectado`,"hosts.installed":`Integrado`,"hosts.version":`Versão`,"hosts.supported":`Suportado`,"hosts.auth":`Autenticação`,"hosts.auth.signedIn":`Autenticado`,"hosts.auth.signedOut":`Não autenticado`,"hosts.auth.unknown":`Não verificado`,"hosts.integration":`Integração`,"hosts.launch":`Abrir host`,"hosts.launch.copyHint":`Execute este comando no seu terminal para abrir o host:`,"hosts.launch.unavailable":`O portal não inicia hosts — abra pelo terminal com o comando abaixo.`,"hosts.docs":`Documentação oficial`,"hosts.notDetected":`Não detectado neste sistema`,"hosts.restartRequired":`Reinicie o host para aplicar a configuração`,"hostState.NOT_DETECTED":`Não detectado`,"hostState.DETECTED":`Detectado`,"hostState.INSTALLED":`Instalado`,"hostState.CONFIGURED":`Configurado`,"hostState.MCP_REGISTERED":`MCP registrado`,"hostState.HANDSHAKE_VERIFIED":`Handshake verificado`,"hostState.TOOLS_DISCOVERED":`Ferramentas descobertas`,"hostState.EXECUTION_VERIFIED":`Execução verificada`,"hostState.FAILED":`Falhou`,"hostState.BLOCKED":`Bloqueado`,"mcp.title":`MCP`,"mcp.subtitle":`Servidores MCP e verificação real de handshake.`,"mcp.servers":`Servidores`,"mcp.tools":`{count, plural, one{# tool} other{# tools}}`,"mcp.verify":`Verificar handshake`,"mcp.lastVerify":`Última verificação`,"mcp.limitations":`Limitações`,"mcp.never":`Nunca verificado`,"skills.title":`Skills`,"skills.subtitle":`Catálogo real de skills desta Forja.`,"skills.search":`Buscar skills…`,"skills.domain":`Domínio`,"skills.state":`Estado`,"skills.hosts":`Hosts`,"skills.empty":`Nenhuma skill corresponde à busca.`,"skills.none":`Esta Forja não distribui um catálogo de skills.`,"agents.title":`Agents`,"agents.subtitle":`Agents, subagents e coordenadores com autoridade declarada.`,"agents.search":`Buscar agents…`,"agents.role":`Papel`,"agents.authority":`Autoridade`,"agents.skills":`Skills`,"agents.domains":`Domínios`,"agents.empty":`Nenhum agent corresponde à busca.`,"agents.none":`Esta Forja não distribui um catálogo de agents.`,"tasks.title":`Tarefas`,"tasks.subtitle":`Diga o que você quer fazer — o portal monta o plano na Forja real.`,"tasks.intent.label":`O que você quer fazer?`,"tasks.intent.placeholder":`Ex.: analisar os scripts PySpark deste projeto`,"tasks.intent.run":`Planejar`,"tasks.plan":`Plano`,"tasks.plan.review":`Revise o plano antes de executar.`,"tasks.plan.task":`Tarefa`,"tasks.plan.verb":`Verbo`,"tasks.plan.intent":`Sua intenção`,"fdoc.checks":`Verificações`,"fdoc.repairable":`(reparável)`,"fdoc.drift":`Drift`,"fdoc.modified":`modificados`,"fdoc.missing":`ausentes`,"fdoc.managed_files":`Arquivos gerenciados`,"fdoc.planned_files":`Arquivos planejados`,"fdoc.more":`mais`,"fdoc.portal":`Forge Portal`,"fdoc.portal.vendored":`assets embutidos — sem instalação local`,"fdoc.workspace":`Workspace`,"fdoc.verification":`Verificação`,"fdoc.unlock":`desbloquear:`,"fdoc.repair":`reparo:`,"fdoc.raw":`Avançado — JSON bruto`,"doc.target":`alvo`,"doc.scope":`escopo`,"doc.version":`versão`,"doc.profile":`perfil`,"doc.state_dir":`dir de estado`,"doc.managed":`entradas gerenciadas`,"tasks.execute":`Executar`,"tasks.recent":`Tarefas recentes`,"tasks.empty":`Nenhuma tarefa executada nesta sessão.`,"tasks.stage.started":`Iniciada`,"tasks.stage.planning":`Planejando`,"tasks.stage.selected":`Especialista selecionado`,"tasks.stage.running":`Executando`,"tasks.stage.verifying":`Verificando`,"tasks.stage.completed":`Concluída`,"tasks.stage.failed":`Falhou`,"tasks.stage.refused":`Recusada`,"tasks.result":`Resultado`,"tasks.evidence":`Evidência`,"tasks.noHost":`Sem host detectado — o plano mostra o comando exato para rodar no seu host.`,"graph.title":`Graph Studio`,"graph.subtitle":`Grafo real da Forja — nós, arestas, evidência e impacto.`,"graph.open":`Abrir Graph Studio`,"graph.nodes":`{count, plural, one{# nó} other{# nós}}`,"graph.edges":`{count, plural, one{# aresta} other{# arestas}}`,"graph.unavailable":`Nenhum grafo construído ainda.`,"graph.buildHint":`Construa o grafo pela Forja e recarregue esta página.`,"graph.federated":`Federado`,"graph.fed.title":`Grafo federado do ecossistema`,"graph.fed.export":`Exportar grafo`,"graph.fed.sources":`Fontes de dados`,"graph.fed.evidenceNote":`Cada nó carrega o endpoint que o forneceu — nada é presumido.`,"graph.fed.search":`Buscar nós por nome ou id…`,"graph.fed.kind":`Tipo`,"graph.fed.verification":`Verificação`,"graph.fed.observed":`observado`,"entity.openIn":`Abrir em`,"graph.fed.impact":`Impacto direto`,"graph.fed.noImpact":`Nenhuma aresta registrada para este nó.`,"graph.fed.empty":`Nenhum nó corresponde aos filtros.`,"graph.fed.none":`Nenhum dado federado disponível.`,"graph.source.loaded":`carregado`,"graph.source.unverified":`não verificado`,"graph.source.unavailable":`indisponível`,"graph.view.toggle":`Visualização do grafo`,"graph.view.list":`Lista`,"graph.view.canvas":`Canvas`,"graph.canvas.tools":`Ferramentas do canvas`,"graph.canvas.layout":`Layout`,"graph.canvas.reset":`Reiniciar layout`,"graph.canvas.fit":`Ajustar`,"graph.canvas.zoomSel":`Zoom no selecionado`,"graph.canvas.aria":`Canvas do grafo — arraste, aplique zoom e selecione nós e arestas`,"graph.canvas.legend":`Legenda de tipos de nó`,"graph.edge.title":`Aresta`,"graph.edge.relation":`Relação`,"graph.edge.source":`Origem`,"graph.edge.target":`Destino`,"graph.edge.direction":`Direção`,"graph.edge.observedAt":`Fonte observada às`,"graph.edge.related":`Outras relações neste par`,"graph.edge.relatedNone":`Nenhuma outra relação conecta este par.`,"graph.fed.state":`Estado`,"graph.fed.category":`Categoria`,"graph.fed.origin":`Forja de origem`,"graph.fed.version":`Versão`,"graph.fed.degree":`Relações`,"graph.fed.failed":`Falha reportada`,"graph.fed.relOut":`Usa / declara (saída)`,"graph.fed.relIn":`Usado / referenciado por (entrada)`,"graph.fed.noRelations":`Nenhuma relação declarada.`,"graph.impact.title":`Análise de impacto — topológica`,"graph.impact.depth":`Profundidade`,"graph.impact.usedBy":`O que depende dele`,"graph.impact.uses":`O que ele usa`,"graph.impact.more":`+{count} a mais`,"graph.impact.component":`Componente`,"graph.impact.cycle":`Ciclo`,"graph.impact.orphan":`Órfão — nenhuma relação declarada`,"graph.impact.unverified":`Relações não verificadas`,"graph.impact.coverage":`Cobertura: {loaded}/{total} fontes carregadas`,"graph.impact.path":`Caminho mais curto até…`,"graph.impact.dirOut":`Seguindo arestas`,"graph.impact.dirBoth":`Qualquer direção`,"graph.impact.noPath":`Não existe caminho nessa direção.`,"graph.impact.topoNote":`Alcance apenas topológico — relações declaradas não afirmam impacto em runtime.`,"graph.canvas.group":`Agrupar`,"graph.group.none":`Sem agrupamento`,"graph.group.kind":`por tipo`,"graph.group.forge":`por forja`,"graph.group.host":`por host`,"graph.view.reset":`Reiniciar visão`,"graph.snap.capture":`Capturar snapshot`,"graph.snap.compare":`Comparar com snapshot`,"graph.snap.clear":`Descartar snapshot`,"graph.snap.at":`Snapshot de {at}`,"graph.diff.title":`Diff de topologia vs snapshot`,"graph.diff.unchanged":`Nenhuma mudança topológica desde o snapshot.`,"graph.diff.added":`Adicionados`,"graph.diff.removed":`Removidos`,"graph.diff.changed":`Alterados`,"graph.legend.declared":`declarada e carregada`,"graph.legend.unverified":`fonte não verificada`,"graph.legend.unavailable":`fonte indisponível`,"graph.canvas.auto":`Auto`,"graph.layout.running":`Aplicando layout {layout}…`,"graph.layout.rendering":`Renderizando {done} de {total} elementos…`,"graph.layout.cancelled":`Layout cancelado — últimas posições estáveis mantidas.`,"graph.layout.timeout":`{layout} excedeu o limite de tempo — exibindo {fallback}.`,"graph.layout.error":`{layout} falhou ao executar — exibindo {fallback}.`,"graph.layout.warn":`{layout} é pesado neste tamanho (medido).`,"graph.layout.recommended":`Recomendado: {layout}`,"graph.layout.runAnyway":`Executar mesmo assim`,"graph.layout.useRecommended":`Usar {layout}`,"graph.group.autoNote":`Agrupado automaticamente pela escala — expanda um grupo para ver os membros.`,"knowledge.title":`Conhecimento`,"knowledge.subtitle":`Documentação, receitas e guias desta Forja — PT-BR primeiro.`,"knowledge.search":`O que você quer resolver?`,"knowledge.placeholder":`Ex.: como analisar um Glue Job`,"knowledge.results":`{count, plural, one{# resultado} other{# resultados}}`,"knowledge.empty":`Nada encontrado — tente outro termo.`,"knowledge.open":`Abrir documento`,"knowledge.entities":`Entidades observadas`,"knowledge.noEntities":`Nenhuma entidade corresponde aos filtros.`,"knowledge.related":`Relações verificáveis`,"knowledge.relatedEmpty":`Nenhuma relação declarada para esta entidade.`,"knowledge.sameDomain":`Skills no mesmo domínio declarado`,"knowledge.declaredBy":`Agents que declaram esta skill`,"knowledge.domainAgents":`Agents no mesmo domínio declarado`,"knowledge.entityDocs":`Documentos sobre esta entidade`,"knowledge.entityDocsEmpty":`A busca de documentos não retornou nada para o nome desta entidade.`,"knowledge.entityDocsUnverified":`Busca de documentos não verificada para esta entidade.`,"knowledge.docs":`Documentos`,"knowledge.docsHint":`Busque na documentação real desta Forja.`,"knowledge.docsUnavailable":`Esta Forja não expõe um endpoint de busca de documentos.`,"recommend.title":`Recomendações explicáveis`,"recommend.note":`Cada recomendação mostra o motivo e a fonte (endpoint → campo) que a comprova — nada é inferido.`,"recommend.partial":`Algumas fontes não foram verificadas — a lista pode estar incompleta.`,"recommend.empty":`Nenhuma recomendação derivável dos dados carregados.`,"recommend.goto":`Abrir`,"recommend.sev.warning":`atenção`,"recommend.sev.info":`info`,"recommend.kind.missingComponent":`Componente ausente`,"recommend.kind.incompleteConfig":`Configuração incompleta`,"recommend.kind.incompatibleDependency":`Dependência incompatível`,"recommend.kind.mcpUnavailable":`MCP indisponível`,"recommend.kind.recurringFailure":`Falha recorrente`,"recommend.kind.relatedSkill":`Skills relacionadas`,"recommend.reason.missingComponent":`{forge} consta no catálogo da federação, mas não há instalação registrada.`,"recommend.reason.envMissing":`Variável obrigatória {name} ausente no ambiente.`,"recommend.reason.envInvalid":`Variável obrigatória {name} presente, mas reportada como inválida.`,"recommend.reason.hostNotIntegrated":`Host {host} detectado, mas a integração ainda está em NOT_DETECTED.`,"recommend.reason.hostUnsupported":`Host {host} detectado e reportado como não suportado.`,"recommend.reason.mcpState":`{id} reporta o estado {state}.`,"recommend.reason.recurringFailure":`{count} execuções do verbo {verb} terminaram recusadas ou sem status ok.`,"recommend.reason.sameDomain":`{count} skills compartilham o domínio declarado {domain}.`,"settings.title":`Configurações`,"settings.subtitle":`Idioma, tema e preferências do portal.`,"settings.language":`Idioma`,"settings.language.auto":`Automático`,"settings.language.pt":`Português (Brasil)`,"settings.language.en":`English`,"settings.theme":`Tema`,"settings.theme.light":`Claro`,"settings.theme.dark":`Escuro`,"settings.theme.system":`Sistema`,"settings.about":`Sobre`,"settings.forge":`Forja`,"settings.version":`Versão`,"settings.portalVersion":`Versão do portal`,"settings.cli":`CLI`,"settings.federated":`Federado`,"error.title":`Algo deu errado`,"error.unreachable":`O servidor do portal não respondeu — ele está rodando?`,"error.session":`Sessão inválida ou expirada — abra o portal novamente pelo CLI.`,"error.forbidden":`Operação não permitida nesta sessão.`,"error.notFound":`Não encontrado.`,"error.generic":`Falha na operação.`,"error.retry":`Tentar novamente`,"error.details":`Detalhes técnicos`,"empty.noData":`Nada para mostrar ainda.`,"empty.noData.hint":`Os dados aparecem quando a Forja os produz — nada é inventado.`,"empty.notInstalled":`Esta Forja ainda não está instalada.`,"empty.notInstalled.hint":`Instale para ver estado real, hosts, MCP e catálogos.`,"empty.goInstall":`Ir para Instalação`,"notify.success":`Concluído`,"notify.error":`Falhou`,"notify.dismiss":`Dispensar`,"table.id":`ID`,"table.host":`Host`,"table.task":`Tarefa`,"table.verb":`Verbo`,"table.stage":`Estágio`,"table.exit":`Saída`,"nav.forges":`Forjas`,"nav.config":`Configuração`,"notify.region":`Notificações`,"common.updatedAt":`atualizado {time}`,"command.kind.page":`Páginas e ações`,"command.kind.forge":`Forjas`,"command.kind.capability":`Capacidades`,"command.kind.skill":`Skills`,"command.kind.agent":`Agents`,"command.kind.mcp":`MCP`,"command.kind.host":`Hosts`,"command.kind.doc":`Documentos`,"command.kind.operation":`Operações`,"command.kind.error":`Erros conhecidos`,"command.filters":`Filtrar por tipo`,"command.searching":`Buscando…`,"command.footer":`↑↓ navegar · ←→ filtrar · Enter abrir · Esc fechar`,"command.unverified":`Fonte não verificada nesta busca`,"dashboard.forges":`Forjas descobertas`,"dashboard.forges.hint":`A Forja que serve este portal mais os especialistas do registry federado.`,"dashboard.inventory":`Inventário`,"dashboard.inventory.hint":`Contagens reais lidas de cada endpoint de catálogo.`,"federation.unavailable":`Esta Forja não expõe um registry federado — dados não verificados.`,"explorer.title":`Explorador de Forjas`,"explorer.subtitle":`Todas as Forjas que este workspace consegue verificar — a servidora mais os especialistas federados.`,"explorer.serving":`servidora`,"explorer.registryOnly":`Apenas entrada no registry — nunca observada ao vivo.`,"explorer.empty":`Nenhuma Forja pôde ser descoberta.`,"explorer.notFound":`Nenhuma Forja com esta identidade no snapshot federado.`,"explorer.back":`Todas as Forjas`,"explorer.detail.subtitle":`Campos verificados pelo portal e pelo registry federado — dados ausentes são marcados, nunca preenchidos.`,"explorer.identity":`Identidade`,"explorer.presence":`Presença`,"explorer.notes":`Notas`,"explorer.checkout":`Checkout`,"registry.title":`Operações de registry`,"registry.hint":`Cada verbo passa por plano → revisão → confirmação explícita via forge-cli — nada executa sem o token do plano.`,"registry.forge":`Forja`,"registry.forge.hint":`nome da Forja (ex.: forge-doctor-api)`,"registry.op":`Operação`,"registry.state":`Estado do registry`,"registry.absent":`Sem estado de registry — nada instalado via forge-cli ainda.`,"registry.malformed":`O arquivo de estado existe, mas está malformado.`,"registry.unavailable":`Estado do registry não pôde ser verificado.`,"registry.none":`Nenhuma Forja instalada via registry.`,"registry.cliUnavailable":`forge-cli não está instalado — as operações de registry precisam dele.`,"registry.planning":`Planejando via forge-cli…`,"registry.review":`Revisar plano`,"registry.review.hint":`O plano abaixo veio do forge-cli — confirme para executar de fato.`,"registry.executing":`Executando via forge-cli…`,"registry.receipt":`Resultado da operação`,"registry.newOp":`Nova operação`,"registry.method":`Método`,"registry.installedAt":`Instalada em`,"registry.pinned":`fixada em`,"registry.colOps":`Ações`,"registry.previewEmpty":`O plano não trouxe detalhes.`,"registry.action.install":`Instalar`,"registry.action.update":`Atualizar`,"registry.action.reinstall":`Reinstalar`,"registry.action.rollback":`Rollback`,"registry.action.pin":`Fixar`,"registry.action.unpin":`Liberar`,"registry.action.repair":`Reparar`,"registry.action.uninstall":`Desinstalar`,"registry.action.verify":`Verificar`,"registry.toast.planned":`Plano pronto: {action} em {forge}.`,"registry.toast.executed":`{action} em {forge}: {status}.`,"install.step.discover":`Descobrir`,"install.step.select":`Selecionar`,"install.step.reviewDiff":`Revisar diff`,"install.step.confirm":`Confirmar`,"install.step.execute":`Executar`,"install.step.verify":`Verificar`,"install.step.receipt":`Recibo`,"install.discover.hosts":`Hosts de IA detectados neste ambiente`,"install.planning":`Calculando plano de instalação…`,"install.diff.none":`O backend não forneceu diff campo a campo — revisando ações.`,"install.confirm.hint":`Revise o plano acima. A execução só acontece após confirmação explícita.`,"install.confirm.execute":`Confirmar e executar`,"install.confirm.back":`Voltar`,"install.confirm.next":`Continuar`,"install.executing":`Executando o plano aprovado…`,"install.verify.running":`Revalidando o estado pós-instalação…`,"install.verify.unverified":`O backend não retornou checks — verificação não confirmada.`,"install.reinstall":`Reinstalar`,"install.newPlan":`Novo plano`,"install.flow.hint":`Nada é executado sem plano revisado e confirmação explícita — como na CLI.`,"install.ops.title":`Operações`,"install.ops.update":`Atualizar`,"install.ops.update.hint":`Atualização via portal não é exposta por este adapter — caminho não verificado.`,"install.ops.repair.hint":`Reexecuta verificações e repara entradas divergentes.`,"config.title":`Centro de configuração`,"config.subtitle":`Variáveis de ambiente desta Forja — somente metadados, nunca valores.`,"config.alert.missing":`Variáveis obrigatórias ausentes ou inválidas impedem a Forja de operar.`,"config.env.prefix":`Prefixo`,"config.env.scope":`Escopo`,"config.env.aliases":`Aliases do Windows`,"config.col.name":`Variável`,"config.col.required":`Obrigatória`,"config.col.present":`Presente`,"config.col.valid":`Válida`,"config.col.kind":`Tipo`,"config.col.path":`Caminho`,"config.prepare.title":`Preparar alterações`,"config.prepare.hint":`Comandos prontos para colar no seu shell — o portal nunca escreve variáveis por você.`,"config.prepare.none":`Nenhuma variável pendente — ambiente pronto.`,"config.apply.title":`Aplicar alterações`,"config.apply.portal":`Aplicar pelo portal`,"config.apply.unsupported":`Este adapter não expõe escrita de configuração — caminho não verificado.`,"config.profiles.link":`Ver perfis de componentes`,"config.profiles.hint":`Perfis definem quais componentes cada instalação habilita.`,"profiles.compare":`Comparar perfis`,"profiles.compare.hint":`Selecione dois perfis para ver a diferença de componentes.`,"profiles.compare.a":`Perfil A`,"profiles.compare.b":`Perfil B`,"profiles.compare.component":`Componente`,"profiles.compare.differences":`{count} diferenças`,"profiles.compare.same":`Perfis idênticos`,"nav.match":`Capacidades`,"hosts.launchable":`Iniciável pelo portal`,"hosts.commandHint":`Comando para o seu terminal`,"hosts.request":`Solicitar integração`,"hosts.ops.plan":`Planejar integração`,"hosts.ops.files":`Inspecionar arquivos afetados`,"hosts.ops.fix":`Corrigir integração`,"hosts.ops.disable":`Desativar integração`,"hosts.ops.unsupported":`Op não exposta por este adapter — não verificado`,"mcp.safety":`A verificação de handshake é somente-leitura — o portal nunca invoca tools MCP.`,"mcp.host.unbound":`não vinculado a host`,"mcp.host.open":`Abrir este host na página de hosts`,"mcp.inspector":`Inspetor`,"mcp.selectHint":`Selecione um servidor no registro para inspecioná-lo.`,"mcp.detail":`Detalhe`,"mcp.explain.NOT_CONFIGURED":`Declarado, mas sem configuração para nenhum host.`,"mcp.explain.CONFIGURED":`Configurado — nenhum handshake executado ainda.`,"mcp.explain.STARTING":`Processo iniciando — handshake em andamento.`,"mcp.explain.HANDSHAKE_VERIFIED":`O handshake de initialize foi verificado contra o servidor real.`,"mcp.explain.TOOLS_DISCOVERED":`A descoberta de tools foi verificada após o handshake.`,"mcp.explain.INVOCATION_VERIFIED":`Uma sonda de invocação foi verificada pelo adapter.`,"mcp.explain.DEGRADED":`O servidor respondeu, mas o adapter reporta evidência degradada.`,"mcp.explain.FAILED":`A última verificação falhou — veja o detalhe.`,"mcp.surface.tools":`Ferramentas`,"mcp.surface.resources":`Recursos`,"mcp.surface.prompts":`Prompts`,"mcp.surface.notExposed":`Superfície não exposta por este adapter — não verificada.`,"mcp.surface.countOnly":`Somente a contagem é informada — nomes não são expostos.`,"mcp.surface.noTools":`O adapter não informou a contagem de tools — não verificada.`,"mcp.receipt.latency":`latência medida pelo portal`,"mcp.receipt.latencyHint":`Ida e volta HTTP medida pelo portal — não é a latência do protocolo MCP.`,"mcp.verifying":`Verificando handshake…`,"mcp.compat.title":`Relatório de compatibilidade`,"mcp.compat.hint":`Estado observado vs a progressão esperada de handshake — por servidor.`,"mcp.diag.title":`Diagnóstico`,"mcp.diag.hint":`Servidores em FAILED ou DEGRADED — evidência primeiro, depois re-verifique.`,"agents.detail":`Detalhes`,"agents.responsibility":`Responsabilidade`,"agents.origin":`Forja de origem`,"agents.compatibleHosts":`Hosts compatíveis`,"agents.tools":`Ferramentas / MCP`,"agents.permissions":`Permissões`,"agents.deps":`Dependências`,"agents.evidence":`Evidência`,"agents.notExposed":`Não exposto por este adapter — não verificado`,"skills.detail.description":`Descrição`,"skills.origin":`Forja de origem`,"skills.compatibility":`Hosts compatíveis`,"skills.prerequisites":`Pré-requisitos`,"skills.fileValidation":`Validação de arquivos`,"skills.deps":`Dependências`,"skills.actions":`Instalar / reparar`,"skills.actionsUnverified":`Ops de instalação/reparo não expostas por este adapter — não verificado`,"skills.notExposed":`Não exposto por este adapter — não verificado`,"skills.agentsLink":`Agentes que a declaram`,"skills.evidence":`Evidência`,"skills.dedup.title":`Colisões de nome`,"skills.dedup.hint":`Linhas com mesmo nome são sinalizadas para revisão — nunca mescladas.`,"skills.dedup.possible":`possível duplicata`,"skills.dedup.different":`mesmo nome, entidade diferente`,"match.title":`Busca de capacidades`,"match.subtitle":`Qual agent, skill, Forja ou MCP cobre uma capacidade — respondido apenas com metadados reais de catálogo.`,"match.placeholder":`Ex.: pyspark glue, contratos de api, graph…`,"match.hint":`Tente: qual agent trabalha com X? · qual skill suporta Y? · qual Forja cobre Z?`,"match.empty":`Nenhuma entrada de catálogo corresponde a essa capacidade.`,"match.limitation":`Apenas metadados de catálogo pesquisados — capacidade em runtime não verificada.`,"match.evidence":`Evidência`,"nav.observe":`Observabilidade`,"nav.versions":`Versões`,"tasks.correlation":`Correlação`,"tasks.events":`Ver eventos correlacionados`,"tasks.executing":`Executando plano…`,"tasks.export":`Exportar recibo`,"tasks.stale.title":`Plano expirado`,"tasks.stale.hint":`O plan token expirou — gere um novo plano para a mesma intenção. A execução nunca tenta de novo sozinha.`,"tasks.stale.regenerate":`Regenerar plano`,"tasks.ops.title":`Operações`,"tasks.ops.plan.hint":`Monta o plano a partir da intenção — nada executa ainda.`,"tasks.ops.execute.hint":`Executa um plano revisado, vinculado ao plan token.`,"tasks.ops.cancel.hint":`Operação de cancelamento não exposta pelo adapter.`,"tasks.limits":`Operações mutáveis têm limite de taxa e são vinculadas a um plan token; as transições de estágio vêm de registros reais de tarefas.`,"table.correlation":`Correlação`,"table.duration":`Duração`,"observe.title":`Observabilidade`,"observe.subtitle":`Métricas locais registradas por esta Forja — sem telemetria remota.`,"observe.localOnly":`Métricas somente locais — nada sai desta máquina.`,"observe.unavailable":`Esta Forja não expõe métricas locais — a capacidade está não verificada, nunca presumida.`,"observe.counters":`Contadores`,"observe.events":`Eventos`,"observe.generatedAt":`gerado {time}`,"observe.truncated":`Exibindo uma janela limitada — eventos mais antigos foram descartados para manter o relatório pequeno.`,"observe.filter.kind":`Tipo`,"observe.filter.status":`Status`,"observe.filter.corr":`Correlação`,"observe.col.kind":`Tipo`,"observe.col.at":`Quando`,"observe.col.duration":`Duração`,"observe.col.status":`Status`,"observe.col.origin":`Origem`,"observe.col.correlation":`Correlação`,"observe.col.detail":`Detalhe`,"observe.empty":`Nenhum evento registrado ainda.`,"observe.empty.hint":`Métricas aparecem quando a Forja executa tarefas, instalações ou verificações.`,"observe.noMatches":`Nenhum evento corresponde aos filtros atuais.`,"nav.execution":`Execução`,"execution.title":`Execução`,"execution.subtitle":`Eventos de execução registrados — timestamps reais, intervalos reais, sem simulação.`,"execution.localOnly":`Buffer local de eventos — nada sai desta máquina.`,"execution.unavailable":`Esta Forja não registra eventos de execução — a capacidade está não verificada, nunca presumida.`,"execution.summary":`Janela registrada`,"execution.count.events":`eventos`,"execution.count.executions":`execuções`,"execution.count.dropped":`descartados`,"execution.count.capacity":`capacidade`,"execution.truncated":`Exibindo uma janela limitada — {dropped} evento(s) antigos foram descartados para manter o buffer pequeno.`,"execution.timeline.title":`Execuções`,"execution.timeline.hint":`Uma linha por correlação — as barras cobrem o primeiro→último timestamp registrado; os ticks são eventos registrados; os spans derivam apenas da duração registrada.`,"execution.timeline.unplaced":`{count} evento(s) sem timestamp — reais, não desenhados.`,"execution.timeline.empty":`Nenhum evento carrega timestamp utilizável.`,"execution.unlinked":`sem vínculo`,"execution.replay.title":`Replay`,"execution.replay.hint":`Reprodução dos eventos registrados em ordem real — intervalos escalados pela velocidade, intervalos comprimidos marcados ⇥.`,"execution.replay.prev":`Anterior`,"execution.replay.next":`Próximo`,"execution.replay.play":`Reproduzir`,"execution.replay.pause":`Pausar`,"execution.replay.speed":`velocidade`,"execution.replay.step":`passo {current} de {total}`,"execution.replay.gap":`intervalo registrado até o evento anterior`,"execution.replay.compressed":`intervalo real acima do teto de reprodução — exibido real, esperado menos`,"execution.noTimestamp":`sem timestamp registrado`,"execution.events":`Eventos`,"execution.filter.type":`Tipo`,"execution.filter.status":`Status`,"execution.filter.corr":`Correlação`,"execution.filter.search":`Busca`,"execution.col.type":`Tipo`,"execution.col.at":`Quando`,"execution.col.status":`Status`,"execution.col.flow":`Origem → destino`,"execution.col.duration":`Duração`,"execution.col.correlation":`Correlação`,"execution.empty":`Nenhum evento registrado ainda.`,"execution.empty.hint":`Eventos aparecem quando o portal e seu adapter processam operações — inícios, fins, recusas e emissões de domínio.`,"execution.noMatches":`Nenhum evento corresponde aos filtros atuais.`,"execution.insp.schema":`Schema`,"execution.insp.at":`Registrado em`,"execution.insp.status":`Status`,"execution.insp.duration":`Duração`,"execution.insp.correlation":`Correlação`,"execution.insp.span":`Span`,"execution.insp.parent":`Span pai`,"execution.insp.trace":`Trace`,"execution.insp.source":`Origem`,"execution.insp.target":`Destino`,"execution.insp.task":`Tarefa`,"execution.insp.causedBy":`Span pai observado em:`,"execution.insp.metadata":`Metadados`,"execution.insp.evidence":`Evidência`,"execution.insp.related":`Eventos relacionados`,"nav.lab":`Lab`,"lab.title":`Forge Lab`,"lab.subtitle":`Execuções de benchmark, catálogo de cenários e comparações — só receipts reais.`,"lab.unavailable":`O endpoint /lab não existe neste adaptador — os dados de lab não podem ser verificados.`,"lab.empty.title":`Sem dados é honesto: nenhuma execução de lab coletada ainda.`,"lab.empty.subtitle":`Rode theforge lab collect — os resultados aparecem aqui, nunca mock.`,"lab.runs":`Histórico de execuções`,"lab.catalog":`Catálogo de cenários`,"lab.reports":`Relatórios`,"lab.notes":`Notas do coletor`,"lab.compare.title":`Comparação de vereditos`,"lab.compare.a":`run A`,"lab.compare.b":`vs`,"lab.filter.all":`Todas as forjas`,"lab.export.json":`JSON`,"lab.export.md":`Markdown`,"lab.col.file":`run`,"lab.col.forges":`forjas`,"lab.col.scenarios":`cenários`,"lab.col.pass":`pass`,"lab.col.fail":`fail`,"lab.col.skipped":`skipped`,"lab.col.forge":`forja`,"lab.col.scenario":`cenário`,"lab.col.verdict":`veredito`,"lab.col.duration":`duração`,"lab.col.metrics":`métricas`,"lab.col.detail":`detalhe`,"versions.title":`Versões`,"versions.subtitle":`Versão instalada, compatibilidade e histórico de releases — offline-first.`,"versions.unavailable":`Esta Forja não expõe informações de versão — a capacidade está não verificada, nunca presumida.`,"versions.installed":`Instalado`,"versions.installed.version":`Versão`,"versions.installed.origin":`Origem`,"versions.installed.channel":`Canal`,"versions.compat":`Compatibilidade`,"versions.available":`Disponível`,"versions.available.version":`Última`,"versions.available.source":`Fonte`,"versions.offline":`Sem consultas remotas de release no modo offline — a versão mais recente está não verificada, nunca suposta.`,"versions.changelog":`Changelog`,"versions.history":`Histórico`,"versions.history.version":`Versão`,"versions.history.at":`Quando`,"versions.history.detail":`Detalhe`,"versions.history.empty":`Nenhum histórico de versões registrado ainda.`,"versions.integrity":`Integridade`,"versions.integrity.release":`Release do manifesto`,"versions.integrity.sha256":`sha256 do manifesto`,"versions.pending":`Pendências e plano de upgrade`,"versions.pending.updates":`Atualizações pendentes`,"versions.pending.plan":`Plano de upgrade`,"versions.pending.cli":`A descoberta de atualizações é do Forge CLI — o portal não supõe pendências.`,"versions.receipts":`Receipts`,"versions.receipts.file":`Receipt`,"versions.receipts.operation":`Operação`,"versions.receipts.status":`Status`,"versions.rollback":`Rollback`,"dashboard.stat.registryInstalls":`Instaladas via forge-cli`,"dashboard.stat.discovered":`Especialistas descobertos`,"ops.alerts.title":`Alertas acionáveis`,"ops.alerts.hint":`Cada alerta abre a página onde o problema se resolve — derivado só de sinais observados.`,"ops.alerts.empty":`Nenhum alerta acionável.`,"ops.alerts.emptyHint":`Todos os sinais observados estão ok — alertas só aparecem quando um endpoint reporta um problema real.`,"ops.alert.installState":`A instalação reporta o estado {state}.`,"ops.alert.notInstalled":`Esta Forja não está instalada.`,"ops.alert.checkFailed":`O check {id} falhou.`,"ops.alert.env":`O ambiente da conta reporta {state}.`,"ops.alert.specialist":`{forge} reporta o estado {state}.`,"ops.alert.forgeNotInstalled":`{forge} está no catálogo, mas não está instalada.`,"ops.alert.mcpState":`Servidor MCP {id} reporta {state}.`,"ops.alert.mcpNotConfigured":`Servidor MCP {id} declarado, ainda não configurado.`,"ops.alert.hostIntegration":`A integração do host {host} reporta {state}.`,"ops.alert.hostNotIntegrated":`Host {host} detectado, integração não iniciada.`,"ops.alert.tasksFailed":`{count, plural, one{# tarefa falhou} other{# tarefas falharam}} nesta sessão.`,"ops.alert.registryMalformed":`O state do forge-cli está malformado — os receipts não puderam ser lidos.`,"ops.alert.updateAvailable":`Atualização disponível: {version}.`,"ops.alert.pendingUpdates":`Atualizações pendentes registradas pelo backend.`,"ops.alert.noGraph":`Nenhum grafo construído ainda.`,"ops.alert.goInstall":`Ir para Instalação`,"ops.alert.goConfig":`Ir para Configuração`,"ops.alert.goForge":`Abrir Forja`,"ops.alert.goFederation":`Ir para a família`,"ops.alert.goMcp":`Ir para MCP`,"ops.alert.goHosts":`Ir para hosts`,"ops.alert.goTasks":`Ir para tarefas`,"ops.alert.goVersions":`Ir para versões`,"ops.alert.goGraph":`Ir para o grafo`,"ops.versions.title":`Versões instaladas`,"ops.versions.hint":`Uma linha por fonte real — receipts do forge-cli, bootstrap e federação.`,"ops.versions.col.installed":`Instalada`,"ops.versions.col.pinned":`Pinned`,"ops.versions.col.method":`Método`,"ops.versions.col.source":`Fonte`,"ops.versions.update":`→ {version} disponível`,"ops.versions.empty":`Nenhuma versão instalada registrada.`,"ops.versions.emptyHint":`Receipts do forge-cli aparecem aqui quando forjas são instaladas via registry.`,"ops.registry.unavailable":`Este portal não expõe o registry state do forge-cli — dados não verificados.`,"ops.diagnostics.title":`Diagnóstico`,"ops.diagnostics.hint":`Atalhos para as páginas que investigam cada sinal.`,"agents.view.label":`Visualização`,"agents.view.cards":`Cards`,"agents.view.table":`Tabela`,"agents.view.graph":`Grafo`,"agents.declaredForge":`Forja declarada`,"agents.undeclared":`(não declarado)`,"agents.compare.title":`Comparar agents`,"agents.compare.pick":`Escolha um segundo agent para comparar.`,"agents.compare.clear":`Limpar`,"agents.compare.add":`Comparar`,"agents.compare.remove":`Remover da comparação`,"agents.compare.field":`Campo`,"agents.compare.notDeclared":`não declarado`,"agents.graph.hint":`Visão filtrada do grafo federado — os agents que passam nos filtros mais as skills e Forjas que seus descritores declaram.`,"agents.graph.empty":`Nenhum agent corresponde aos filtros — o subgrafo está vazio.`,"agents.graph.aria":`Canvas do grafo de agents — panorâmica, zoom, arrastar e selecionar nós`,"table.name":`Nome`,"table.actions":`Ações`,"table.started":`Início`,"table.finished":`Fim`,"tasks.timeline.title":`Linha do tempo de execução`,"tasks.timeline.hint":`Registros reais posicionados pelos timestamps de início/fim gravados.`,"tasks.timeline.unplaced":`{count, plural, one{# registro} other{# registros}} sem timestamp utilizável — não desenhado.`,"tasks.timeline.empty":`Nenhum registro de tarefa tem timestamp utilizável.`,"tasks.refusal":`Recusa`,"tasks.replay.title":`Eventos registrados`,"tasks.replay.hint":`Reprodução dos eventos persistidos em /metrics que compartilham o correlation id desta tarefa — não é uma reexecução.`,"tasks.replay.step":`passo {current} de {total}`,"tasks.replay.prev":`Anterior`,"tasks.replay.next":`Próximo`,"tasks.replay.empty":`Nenhum evento registrado compartilha este correlation id.`,"tasks.replay.noCorrelation":`Este registro não tem correlation id — eventos registrados não podem ser vinculados.`,"tasks.replay.unavailable":`O endpoint /metrics não respondeu — eventos registrados não verificados.`,"nav.guide":`Guia`,"dashboard.lastArea":`Última área:`,"guide.title":`Guia do portal`,"guide.subtitle":`Conceitos do ecossistema e por onde começar — sempre ligado às páginas reais.`,"guide.intro":`Este guia explica o vocabulário do ecossistema e aponta a página real onde cada conceito vira ação. Nada aqui é um tutorial obrigatório — leia o que precisar, quando precisar.`,"guide.toc":`Seções do guia`,"guide.start.title":`Por onde começar`,"guide.start.body":`O portal é uma camada de leitura sobre as Forjas instaladas — quase tudo aqui é observado, não inventado. Comece pelo Painel para ver o estado do ecossistema: cada card informa de qual endpoint veio a informação e quando ela foi atualizada.`,"guide.forge.title":`O que é uma Forja`,"guide.forge.body":`Uma Forja é um produto independente do ecossistema (spark-forge-aws, api-forge, platform-forge…). Em Forjas você vê quais estão instaladas, o estado reportado por cada uma e abre o detalhe correspondente.`,"guide.agent.title":`O que são agents`,"guide.agent.body":`Agents são perfis especializados declarados por cada Forja — coordenadores e executores com domínios e skills declarados. A página Agents lista o catálogo real; Match responde “qual agent cobre X”.`,"guide.skill.title":`O que são skills`,"guide.skill.body":`Skills são capacidades reutilizáveis que as Forjas publicam para agents e hosts. O catálogo mostra domínio, hosts e estado declarado — e sinaliza colisões de nome quando existem.`,"guide.mcp.title":`O que é MCP`,"guide.mcp.body":`Model Context Protocol (MCP) é o contrato que expõe as tools de uma Forja aos hosts de IA. A página MCP mostra os servidores registrados e o estado real do handshake — verificar executa um handshake de verdade.`,"guide.graph.title":`Explorar grafos`,"guide.graph.body":`O Graph Studio desenha entidades e relações extraídas dos descritores reais. Use busca, filtros e agrupamentos; selecione nós e arestas para ver evidências; a análise de impacto mostra o alcance multi-salto com a cobertura declarada dos dados.`,"guide.install.title":`Instalar componentes`,"guide.install.body":`Instalação altera o sistema de arquivos — por isso todo fluxo é planejar → confirmar → executar, com plano assinado e receipt. Perfis definem conjuntos de componentes; Hosts mostra o que a Forja detectou nesta máquina.`,"guide.diagnose.title":`Diagnosticar problemas`,"guide.diagnose.body":`Quando algo falha, comece pelo Painel: os alertas derivam de sinais reais e apontam a página que resolve. Tarefas lista execuções com estágio e recusa; Observe mostra os eventos registrados; erros trazem código, explicação e próxima ação.`,"guide.evidence.title":`Interpretar evidências`,"guide.evidence.body":`Evidência é o que separa fato de suposição: receipts, correlation ids, timestamps e estados declarados vêm do produtor. Execução reproduz os eventos registrados — lacunas aparecem como lacunas, nunca como dados simulados.`,"hint.more":`Saiba mais`,"hint.dismiss":`Dispensar dica`,"hint.start":`Painel operacional: cada seção indica a fonte real dos dados e quando foi atualizada.`,"hint.forge":`Uma Forja é um produto do ecossistema — aqui você vê as instaladas e o estado de cada uma.`,"hint.agent":`Agents são perfis especializados declarados pelas Forjas — com domínios, skills e hosts declarados.`,"hint.skill":`Skills são capacidades reutilizáveis publicadas pelas Forjas — o catálogo mostra origem e estado reais.`,"hint.mcp":`MCP é o protocolo que liga as Forjas aos hosts de IA — o estado do handshake aqui é verificado de verdade.`,"hint.graph":`O grafo mostra entidades e relações observadas — selecione um nó para ver origem, vizinhos e evidências.`,"hint.install":`Instalação segue o fluxo planejar → confirmar → executar — nada muda sem o seu plano confirmado.`,"hint.diagnose":`Tarefas registradas mostram estágio, saída e recusas — selecione uma para ver timeline e evidências.`,"hint.evidence":`Telemetria real: cada evento traz timestamp e correlation id do produtor — lacunas aparecem como lacunas.`,"settings.density":`Densidade visual`,"settings.density.comfortable":`Confortável`,"settings.density.compact":`Compacta`,"settings.motion":`Animações`,"settings.motion.system":`Sistema`,"settings.motion.full":`Todas`,"settings.motion.reduced":`Reduzidas`,"settings.hints":`Dicas de contexto`,"settings.hints.hint":`As dicas dispensadas voltam a aparecer quando você redefinir.`,"settings.hints.reset":`Mostrar dicas novamente`,"settings.privacy":`Idioma, tema, densidade, animações, menu recolhido, última área e filtros ficam salvos apenas neste navegador — nada sensível é armazenado.`,"err.explain.unreachable":`O servidor não respondeu. Abra o portal pelo CLI e tente novamente.`,"err.explain.session":`A sessão local expirou ou é inválida — abra o portal novamente pelo CLI para receber uma nova sessão.`,"err.explain.timeout":`A operação excedeu o tempo limite do servidor — veja em Tarefas se ela foi registrada e qual foi o estágio final.`,"err.explain.rateLimited":`Muitas ações de escrita em sequência — aguarde alguns segundos e tente de novo.`,"err.explain.payload":`O corpo da requisição excedeu o limite de 1 MiB do servidor.`,"err.explain.cli":`O CLI da Forja não está disponível no PATH — a página de Instalação mostra o estado e os próximos passos.`,"err.explain.unsupported":`Esta Forja não expõe essa capacidade — o painel lista o que ela declara suportar.`,"err.explain.hostAbsent":`O host pedido não foi detectado nesta máquina — Hosts mostra o que foi encontrado.`,"err.explain.forge":`A operação falhou na Forja alvo — a federação mostra o estado reportado por cada uma.`,"err.explain.notFound":`O recurso pedido não existe neste portal — volte ao painel e navegue pelo menu.`,"err.explain.internal":`Erro interno do servidor — Observe mostra os eventos registrados em torno da falha.`,"err.explain.confirm":`A ação exige confirmação explícita — refaça o fluxo: planejar → confirmar → executar.`,"err.explain.plan":`O plano expirou ou não corresponde à ação pedida — gere um novo plano antes de executar.`,"err.explain.secret":`Falta uma variável ou segredo de ambiente — a Central de configuração mostra o que está faltando.`,"err.explain.forbidden":`A sessão atual não permite essa operação.`,"err.explain.unavailable":`O servidor recusou a operação agora — tente novamente em instantes.`,"err.explain.request":`A requisição foi recusada antes de chegar à operação — formato inválido ou origem não permitida.`,"err.go.dashboard":`Ir para o painel`,"err.go.observe":`Ir para Observe`};export{e as PT_BR}; \ No newline at end of file diff --git a/portal/assets/chunk-DvTxSJhT.js b/portal/assets/chunk-DvTxSJhT.js deleted file mode 100644 index 05d068f..0000000 --- a/portal/assets/chunk-DvTxSJhT.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as da,At as rn,Dt as pS,Et as p,F as Wm,Gt as wS,K as aC,Lt as tn,M as Ta,Mt as sC,N as Uh,Ot as rC,P as WS,Pt as tC,Q as cE,S as Oo,Tt as oC,U as _a,Wt as ve$1,X as bS,Xt as yd,Yt as yc,Z as ba,at as ey,ct as gS,gt as k,h as Jm,ht as jh,it as ei,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,xt as nC,yt as mS,zt as uS}from"./chunk-BelLryvf.js";import{r as g}from"./main-A2NKRJGT.js";import{r as p$1}from"./chunk-D-7Jr8A3.js";import{a as l,s as y}from"./chunk-0WpwvubF.js";import{t as _}from"./chunk-BKRLVsID.js";import{t as D}from"./chunk-CiuPOfJ0.js";import{n as k$1,t as I}from"./chunk-D2KAfPv6.js";import{t as T}from"./chunk-BBusSOqc.js";function Se(t){if(!t)return null;let n=Date.parse(t);return Number.isFinite(n)?n:null}var pe=t=>t.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().trim();function se(t){let n=t.map((o,u)=>({event:o,idx:u,timeMs:Se(o.timestamp)}));return{placed:n.filter(o=>o.timeMs!==null).sort((o,u)=>o.timeMs-u.timeMs||o.idx-u.idx),unplaced:n.filter(o=>o.timeMs===null)}}var Pe=new Set([`refused`,`failed`,`timeout`,`error`,`denied`]);function he(t){return Pe.has((t.status??``).toLowerCase())}function ue(t){let n=new Map,e=[];for(let m of t){let g=m.correlation_id;if(g){let O=n.get(g);O?O.push(m):n.set(g,[m])}else e.push(m)}let l=[],o=(m,g)=>{let{placed:O,unplaced:A}=se(g),q=O.length?O[0].timeMs:null,G=O.length?O[O.length-1].timeMs:null;return{key:m??``,correlationId:m,events:[...O,...A],unplaced:A,startMs:q,endMs:G,durationMs:q!==null&&G!==null?G-q:null,errorCount:g.filter(he).length,spans:Me(O),leftPct:0,widthPct:0,partial:A.length>0}};for(let[m,g]of n)l.push(o(m,g));let u=[];if(e.length){let m=o(null,e);u=m.events,l.push(m)}l.sort((m,g)=>m.startMs===null&&g.startMs===null?m.keym.startMs).filter(m=>m!==null),P=l.map(m=>m.endMs).filter(m=>m!==null),k=b.length?Math.min(...b):null,z=P.length?Math.max(...P):null,F=k!==null&&z!==null?z-k:0;for(let m of l){m.startMs===null||k===null||!F?(m.leftPct=0,m.widthPct=m.startMs===null?0:100):(m.leftPct=(m.startMs-k)/F*100,m.widthPct=Math.max(0,((m.endMs??m.startMs)-m.startMs)/F*100));for(let g of m.spans)k===null||!F?(g.leftPct=0,g.widthPct=0):(g.leftPct=(g.startMs-k)/F*100,g.widthPct=Math.max(0,(g.endMs-g.startMs)/F*100))}let U=l.reduce((m,g)=>m+g.unplaced.length,0);return{groups:l,windowStart:k,windowEnd:z,unlinked:u,unplacedCount:U,partial:U>0}}function Me(t){let n=new Map;for(let l of t){let o=l.timeMs;if(o===null)continue;let u=l.event.span_id??``,b=n.get(u)??{},P=l.event.duration_ms;typeof P==`number`&&P>=0&&(b.end=o,b.start=o-P),l.event.event_type.endsWith(`.start`)&&(b.start=b.start===void 0?o:Math.min(b.start,o)),n.set(u,b)}let e=[];for(let[l,o]of n)o.start===void 0||o.end===void 0||o.endl.startMs-o.startMs||(l.spanIdk})}return o}function me(t,n){let e=n.correlation.trim(),l=pe(n.q);return t.filter(o=>n.type!==null&&o.event_type!==n.type||n.status!==null&&o.status!==n.status||e&&!(o.correlation_id??``).includes(e)?!1:l?[o.event_type,o.source??``,o.target??``,o.correlation_id??``,o.span_id??``,o.status??``,JSON.stringify(o.metadata??{}),JSON.stringify(o.evidence??{})].map(pe).join(` `).includes(l):!0)}function xe(t,n){return n.filter(e=>e!==t&&(t.correlation_id&&e.correlation_id===t.correlation_id||t.span_id&&e.span_id===t.span_id))}function ye(t,n){return t.parent_span_id?n.find(e=>e.span_id===t.parent_span_id)??null:null}function ve(t){let n=(t??``).toLowerCase();return[`ok`,`done`,`completed`,`success`,`succeeded`,`pass`,`passed`].includes(n)?`supported`:[`failed`,`fail`,`error`,`refused`,`denied`].includes(n)?`error`:[`skipped`,`cancelled`,`canceled`,`partial`,`degraded`,`timeout`].includes(n)?`warn`:[`running`,`pending`,`started`,`in_progress`,`planning`,`verifying`].includes(n)?`info`:`muted`}function ge(t){return t?t.length>10?`${t.slice(0,8)}\u2026`:t:`—`}function fe(t){if(!t)return`—`;let n=new Date(t);return Number.isNaN(n.getTime())?t:n.toLocaleString()}function Ce(t){return t===null?`—`:`+${p$1(t)}`}var we=t=>({time:t});var ke=t=>({dropped:t});var Oe=t=>({count:t});var Ne=(t,n)=>({current:t,total:n});var Te=()=>[`/tasks`];var Be=t=>({task:t});var Fe=(t,n)=>n.key||`unlinked`;var Ve=(t,n)=>n.spanId;var De=(t,n)=>n.idx;var $e=(t,n)=>n.event.idx;var Ee=(t,n)=>n.event_id??t;function Re(t,n){t&1&&(da(0,`section`,5),ba(1,`ui-state-badge`,8),da(2,`span`,9),WS(3),oC(4,`t`),yd()()),t&2&&(hD(3),Jm(sC(4,1,`execution.unavailable`)))}function ze(t,n){if(t&1){let e=wS();da(0,`ui-error`,10),Ta(`retry`,function(){jh(e);let o=bS();return Uh(o.load())}),yd()}t&2&&Wm(`error`,n)}function Ae(t,n){t&1&&(da(0,`section`,7),oC(1,`t`),ba(2,`ui-skeleton`,11),yd()),t&2&&(Ar(`aria-label`,sC(1,2,`state.loading`)),hD(2),Wm(`lines`,3))}function qe(t,n){if(t&1&&(da(0,`span`),WS(1),oC(2,`t`),yd()),t&2){let e=bS(2);hD(),Dd(` · `,aC(2,1,`common.updatedAt`,nC(4,we,e.stamp(n))))}}function Ge(t,n){if(t&1&&(da(0,`p`,23),ba(1,`ui-icon`,31),da(2,`span`),WS(3),oC(4,`t`),yd()()),t&2){let e=bS();hD(),Wm(`size`,14),hD(2),Jm(aC(4,2,`execution.truncated`,nC(5,ke,e.dropped)))}}function Le(t,n){t&1&&ba(0,`ui-state-badge`,33)}function je(t,n){if(t&1&&(da(0,`code`),WS(1),yd()),t&2){let e=bS().$implicit,l=bS(4);hD(),Jm(l.shortId(e.correlationId))}}function Ke(t,n){t&1&&(da(0,`span`,9),WS(1),oC(2,`t`),yd()),t&2&&(hD(),Jm(sC(2,1,`execution.unlinked`)))}function He(t,n){if(t&1&&ba(0,`span`,46),t&2){let e=n.$implicit;_a(`left`,e.leftPct,`%`)(`width`,e.widthPct,`%`)}}function Ue(t,n){if(t&1&&ba(0,`span`,47),t&2){let e=n.$implicit,l=bS().$implicit,o=bS(4);_a(`left`,`clamp(0px, `+o.tickLeft(l,e)+`%, calc(100% - 3px))`),Wm(`title`,e.event.event_type+` — `+o.fmtAt(e.event.timestamp)),Ar(`data-status`,o.statusKind(e.event.status))}}function Je(t,n){if(t&1){let e=wS();da(0,`div`,37)(1,`button`,39),Ta(`click`,function(){let o=jh(e).$implicit,u=bS(4);return Uh(u.selectExecution(o))}),da(2,`span`,40),uS(3,je,2,1,`code`)(4,Ke,3,3,`span`,9),da(5,`span`,41),WS(6),yd()(),da(7,`span`,42),gS(8,He,1,4,`span`,43,Ve),gS(10,Ue,1,4,`span`,44,De),yd(),da(12,`span`,45),WS(13),yd()()()}if(t&2){let e=n.$implicit,l=bS(4);hD(),Ar(`data-execution`,e.correlationId??`unlinked`)(`data-selected`,l.selectedCid()===e.correlationId||null)(`data-errors`,e.errorCount||null),hD(),Ar(`title`,e.correlationId),hD(),fS(e.correlationId?3:4),hD(3),Jm(e.events.length),hD(2),mS(e.spans),hD(2),mS(l.placedIn(e)),hD(3),Jm(e.durationMs===null?`—`:l.fmtDur(e.durationMs))}}function Qe(t,n){if(t&1&&(da(0,`p`,38),WS(1),oC(2,`t`),yd()),t&2){let e=bS(4);hD(),Dd(` `,aC(2,1,`execution.timeline.unplaced`,nC(4,Oe,e.executions().unplacedCount)),` `)}}function We(t,n){if(t&1&&(da(0,`div`,35),oC(1,`t`),da(2,`div`,36)(3,`span`),WS(4),yd(),da(5,`span`),WS(6),yd()(),gS(7,Je,14,7,`div`,37,Fe),yd(),uS(9,Qe,3,6,`p`,38)),t&2){let e=bS(3);Ar(`aria-label`,sC(1,4,`execution.timeline.title`)),hD(4),Jm(e.fmtMs(e.executions().windowStart)),hD(2),Jm(e.fmtMs(e.executions().windowEnd)),hD(),mS(e.executions().groups),hD(2),fS(e.executions().unplacedCount?9:-1)}}function Xe(t,n){t&1&&(ba(0,`ui-empty`,34),oC(1,`t`)),t&2&&Wm(`title`,sC(1,1,`execution.timeline.empty`))}function Ye(t,n){if(t&1&&(da(0,`section`,24)(1,`h2`,32),WS(2),oC(3,`t`),uS(4,Le,1,0,`ui-state-badge`,33),yd(),da(5,`p`,9),WS(6),oC(7,`t`),yd(),uS(8,We,10,6)(9,Xe,2,3,`ui-empty`,34),yd()),t&2){let e=bS(2);hD(2),Dd(` `,sC(3,4,`execution.timeline.title`),` `),hD(2),fS(e.executions().partial?4:-1),hD(2),Jm(sC(7,6,`execution.timeline.hint`)),hD(2),fS(e.executions().windowStart!==null?8:9)}}function Ze(t,n){if(t&1){let e=wS();da(0,`button`,60),Ta(`click`,function(){jh(e);let o=bS(3);return Uh(o.pause())}),WS(1),oC(2,`t`),yd()}t&2&&(hD(),Dd(` `,sC(2,1,`execution.replay.pause`),` `))}function et(t,n){if(t&1){let e=wS();da(0,`button`,61),Ta(`click`,function(){jh(e);let o=bS(3);return Uh(o.play())}),WS(1),oC(2,`t`),yd()}if(t&2){let e=bS(3);Wm(`disabled`,e.replayIdx()>=e.replaySteps().length-1),hD(),Dd(` `,sC(2,2,`execution.replay.play`),` `)}}function tt(t,n){if(t&1&&(da(0,`option`,58),WS(1),yd()),t&2){let e=n.$implicit,l=bS(3);Wm(`value`,e)(`selected`,l.speed()===e),hD(),Dd(`×`,e)}}function nt(t,n){t&1&&(da(0,`span`,64),oC(1,`t`),WS(2,`⇥`),yd()),t&2&&Wm(`title`,sC(1,1,`execution.replay.compressed`))}function it(t,n){if(t&1&&(da(0,`span`,68),WS(1),yd()),t&2){let e=bS().$implicit;hD(),Dd(``,e.event.event.duration_ms,` ms`)}}function at(t,n){if(t&1&&(da(0,`span`,69),WS(1),yd()),t&2){let e=bS().$implicit;hD(),ey(``,e.event.event.source??`—`,` → `,e.event.event.target??`—`)}}function ot(t,n){t&1&&(da(0,`span`,70),WS(1),oC(2,`t`),yd()),t&2&&(hD(),Jm(sC(2,1,`execution.noTimestamp`)))}function rt(t,n){if(t&1){let e=wS();da(0,`li`)(1,`button`,62),Ta(`click`,function(){let o=jh(e),u=o.$implicit,b=o.$index,P=bS(3);return P.inspect(u.event.event),Uh(P.replayIdx.set(b))}),da(2,`span`,63),oC(3,`t`),WS(4),yd(),uS(5,nt,3,3,`span`,64),da(6,`code`,65),WS(7),yd(),da(8,`span`,66),WS(9),yd(),ba(10,`ui-state-badge`,67),uS(11,it,2,1,`span`,68),uS(12,at,2,2,`span`,69),uS(13,ot,3,3,`span`,70),yd()()}if(t&2){let e=n.$implicit,l=n.$index,o=bS(3);Ar(`data-current`,l===o.replayIdx()||null),hD(),Ar(`data-current`,l===o.replayIdx()||null),hD(),Ar(`title`,sC(3,12,`execution.replay.gap`)),hD(2),Jm(o.fmtGap(e.gapMs)),hD(),fS(e.compressed?5:-1),hD(2),Jm(e.event.event.event_type),hD(2),Jm(o.fmtAt(e.event.event.timestamp)),hD(),Wm(`state`,o.statusKind(e.event.event.status))(`labelOverride`,e.event.event.status??`—`),hD(),fS(e.event.event.duration_ms!==void 0?11:-1),hD(),fS(e.event.event.source||e.event.event.target?12:-1),hD(),fS(!e.event.event.timestamp||!o.timeParseable(e.event.event.timestamp)?13:-1)}}function lt(t,n){if(t&1){let e=wS();da(0,`section`,25)(1,`h2`,48),ba(2,`ui-icon`,49),WS(3),oC(4,`t`),da(5,`span`,50),WS(6),yd()(),da(7,`p`,9),WS(8),oC(9,`t`),yd(),da(10,`div`,51)(11,`button`,52),Ta(`click`,function(){jh(e);let o=bS(2);return Uh(o.stepReplay(-1))}),WS(12),oC(13,`t`),yd(),uS(14,Ze,3,3,`button`,53)(15,et,3,4,`button`,54),da(16,`button`,55),Ta(`click`,function(){jh(e);let o=bS(2);return Uh(o.stepReplay(1))}),WS(17),oC(18,`t`),yd(),da(19,`label`,56)(20,`span`,9),WS(21),oC(22,`t`),yd(),da(23,`select`,57),oC(24,`t`),Ta(`change`,function(o){jh(e);let u=bS(2);return Uh(u.setSpeed(o))}),gS(25,tt,2,3,`option`,58,pS),yd()(),da(27,`span`,9),WS(28),oC(29,`t`),yd()(),da(30,`ol`,59),gS(31,rt,14,14,`li`,null,$e),yd()()}if(t&2){let e=bS(2);hD(2),Wm(`size`,14),hD(),Dd(` `,sC(4,12,`execution.replay.title`),` `),hD(3),Jm(e.replayScope()),hD(2),Jm(sC(9,14,`execution.replay.hint`)),hD(3),Wm(`disabled`,e.replayIdx()<=0),hD(),Dd(` `,sC(13,16,`execution.replay.prev`),` `),hD(2),fS(e.playing()?14:15),hD(2),Wm(`disabled`,e.replayIdx()>=e.replaySteps().length-1),hD(),Dd(` `,sC(18,18,`execution.replay.next`),` `),hD(4),Jm(sC(22,20,`execution.replay.speed`)),hD(2),Ar(`aria-label`,sC(24,22,`execution.replay.speed`)),hD(2),mS(e.SPEEDS),hD(3),Dd(` `,aC(29,24,`execution.replay.step`,rC(27,Ne,e.replayIdx()+1,e.replaySteps().length)),` `),hD(3),mS(e.replaySteps())}}function dt(t,n){if(t&1&&(da(0,`option`,58),WS(1),yd()),t&2){let e=n.$implicit,l=bS(3);Wm(`value`,e)(`selected`,l.typeFilter()===e),hD(),Jm(e)}}function ct(t,n){if(t&1&&(da(0,`option`,58),WS(1),yd()),t&2){let e=n.$implicit,l=bS(3);Wm(`value`,e)(`selected`,l.statusFilter()===e),hD(),Jm(e)}}function pt(t,n){if(t&1){let e=wS();da(0,`div`,28)(1,`label`,71)(2,`span`,72),WS(3),oC(4,`t`),yd(),da(5,`select`,73),Ta(`change`,function(o){jh(e);let u=bS(2);return Uh(u.setType(o))}),da(6,`option`,74),WS(7),oC(8,`t`),yd(),gS(9,dt,2,3,`option`,58,pS),yd()(),da(11,`label`,71)(12,`span`,72),WS(13),oC(14,`t`),yd(),da(15,`select`,75),Ta(`change`,function(o){jh(e);let u=bS(2);return Uh(u.setStatus(o))}),da(16,`option`,74),WS(17),oC(18,`t`),yd(),gS(19,ct,2,3,`option`,58,pS),yd()(),da(21,`label`,71)(22,`span`,72),WS(23),oC(24,`t`),yd(),da(25,`input`,76),oC(26,`t`),Ta(`input`,function(o){jh(e);let u=bS(2);return Uh(u.setCorr(o))}),yd()(),da(27,`label`,71)(28,`span`,72),WS(29),oC(30,`t`),yd(),da(31,`input`,77),oC(32,`t`),Ta(`input`,function(o){jh(e);let u=bS(2);return Uh(u.setQuery(o))}),yd()()()}if(t&2){let e=bS(2);hD(3),Jm(sC(4,12,`execution.filter.type`)),hD(3),Wm(`selected`,e.typeFilter()===null),hD(),Jm(sC(8,14,`state.all`)),hD(2),mS(e.typeOptions()),hD(4),Jm(sC(14,16,`execution.filter.status`)),hD(3),Wm(`selected`,e.statusFilter()===null),hD(),Jm(sC(18,18,`state.all`)),hD(2),mS(e.statusOptions()),hD(4),Jm(sC(24,20,`execution.filter.corr`)),hD(2),Wm(`value`,e.corrFilter()),Ar(`aria-label`,sC(26,22,`execution.filter.corr`)),hD(4),Jm(sC(30,24,`execution.filter.search`)),hD(2),Wm(`value`,e.qFilter()),Ar(`aria-label`,sC(32,26,`execution.filter.search`))}}function st(t,n){if(t&1&&WS(0),t&2){let e=bS().$implicit;ey(` `,e.source??`—`,` → `,e.target??`—`,` `)}}function ut(t,n){t&1&&(da(0,`span`,9),WS(1,`—`),yd())}function _t(t,n){if(t&1&&WS(0),t&2){let e=bS().$implicit;Dd(` `,e.duration_ms,` ms `)}}function mt(t,n){t&1&&(da(0,`span`,9),WS(1,`—`),yd())}function xt(t,n){if(t&1&&(da(0,`code`,83),WS(1),yd()),t&2){let e=n,l=bS(4);Ar(`title`,e),hD(),Jm(l.shortId(e))}}function yt(t,n){t&1&&(da(0,`span`,9),WS(1,`—`),yd())}function vt(t,n){if(t&1){let e=wS();da(0,`tr`,81),Ta(`click`,function(){let o=jh(e).$implicit,u=bS(3);return Uh(u.inspect(o))}),da(1,`td`)(2,`code`),WS(3),yd()(),da(4,`td`,68),WS(5),yd(),da(6,`td`),ba(7,`ui-state-badge`,67),yd(),da(8,`td`,82),uS(9,st,1,2)(10,ut,2,0,`span`,9),yd(),da(11,`td`,68),uS(12,_t,1,1)(13,mt,2,0,`span`,9),yd(),da(14,`td`),uS(15,xt,2,2,`code`,83)(16,yt,2,0,`span`,9),yd()()}if(t&2){let e,l=n.$implicit,o=bS(3);Ar(`data-selected`,o.inspected()===l||null),hD(3),Jm(l.event_type),hD(2),Jm(o.fmtAt(l.timestamp)),hD(2),Wm(`state`,o.statusKind(l.status))(`labelOverride`,l.status??`—`),hD(2),fS(l.source||l.target?9:10),hD(3),fS(l.duration_ms!==void 0?12:13),hD(3),fS((e=l.correlation_id)?15:16,e)}}function gt(t,n){if(t&1&&(da(0,`div`,29)(1,`table`,78)(2,`thead`)(3,`tr`)(4,`th`,79),WS(5),oC(6,`t`),yd(),da(7,`th`,79),WS(8),oC(9,`t`),yd(),da(10,`th`,79),WS(11),oC(12,`t`),yd(),da(13,`th`,79),WS(14),oC(15,`t`),yd(),da(16,`th`,79),WS(17),oC(18,`t`),yd(),da(19,`th`,79),WS(20),oC(21,`t`),yd()()(),da(22,`tbody`),gS(23,vt,17,8,`tr`,80,Ee),yd()()()),t&2){let e=bS(2);hD(5),Jm(sC(6,6,`execution.col.type`)),hD(3),Jm(sC(9,8,`execution.col.at`)),hD(3),Jm(sC(12,10,`execution.col.status`)),hD(3),Jm(sC(15,12,`execution.col.flow`)),hD(3),Jm(sC(18,14,`execution.col.duration`)),hD(3),Jm(sC(21,16,`execution.col.correlation`)),hD(3),mS(e.filteredEvents())}}function ft(t,n){t&1&&(ba(0,`ui-empty`,84),oC(1,`t`)),t&2&&Wm(`title`,sC(1,1,`execution.noMatches`))}function Ct(t,n){t&1&&(ba(0,`ui-empty`,85),oC(1,`t`),oC(2,`t`)),t&2&&Wm(`title`,sC(1,2,`execution.empty`))(`hint`,sC(2,4,`execution.empty.hint`))}function bt(t,n){if(t&1&&uS(0,ft,2,3,`ui-empty`,84)(1,Ct,3,6,`ui-empty`,85),t&2){let e=bS(2);fS(e.events().length?0:1)}}function Et(t,n){if(t&1&&(da(0,`span`,88),WS(1),yd()),t&2){let e=bS();hD(),Jm(e.event_id)}}function St(t,n){if(t&1&&(da(0,`div`,92)(1,`dt`),WS(2),oC(3,`t`),yd(),da(4,`dd`)(5,`a`,96),WS(6),yd()()()),t&2){let e=n;hD(2),Jm(sC(3,4,`execution.insp.task`)),hD(3),Wm(`routerLink`,tC(6,Te))(`queryParams`,nC(7,Be,e)),hD(),Dd(` `,e,` `)}}function Pt(t,n){if(t&1){let e=wS();da(0,`p`,93),WS(1),oC(2,`t`),da(3,`button`,97),Ta(`click`,function(){let o=jh(e),u=bS(3);return Uh(u.inspect(o))}),da(4,`code`),WS(5),yd()()()}t&2&&(hD(),Dd(` `,sC(2,2,`execution.insp.causedBy`),` `),hD(4),Jm(n.event_type))}function ht(t,n){if(t&1&&(da(0,`details`,94)(1,`summary`),WS(2),oC(3,`t`),yd(),da(4,`pre`),WS(5),yd()()),t&2){let e=bS(),l=bS(2);hD(2),Jm(sC(3,2,`execution.insp.metadata`)),hD(3),Jm(l.json(e.metadata))}}function Mt(t,n){if(t&1&&(da(0,`details`,94)(1,`summary`),WS(2),oC(3,`t`),yd(),da(4,`pre`),WS(5),yd()()),t&2){let e=bS(),l=bS(2);hD(2),Jm(sC(3,2,`execution.insp.evidence`)),hD(3),Jm(l.json(e.evidence))}}function It(t,n){if(t&1){let e=wS();da(0,`li`)(1,`button`,98),Ta(`click`,function(){let o=jh(e).$implicit,u=bS(4);return Uh(u.inspect(o))}),da(2,`code`),WS(3),yd()(),da(4,`span`,9),WS(5),yd()()}if(t&2){let e=n.$implicit,l=bS(4);hD(3),Jm(e.event_type),hD(2),Jm(l.fmtAt(e.timestamp))}}function wt(t,n){if(t&1&&(da(0,`div`,95)(1,`h3`),WS(2),oC(3,`t`),yd(),da(4,`ul`),gS(5,It,6,2,`li`,null,Ee),yd()()),t&2){let e=bS(),l=bS(2);hD(2),Jm(sC(3,1,`execution.insp.related`)),hD(3),mS(l.related(e))}}function kt(t,n){if(t&1){let e=wS();da(0,`section`,30)(1,`header`,86)(2,`h2`),ba(3,`ui-icon`,87),da(4,`code`),WS(5),yd(),uS(6,Et,2,1,`span`,88),yd(),da(7,`button`,89),oC(8,`t`),Ta(`click`,function(){jh(e);let o=bS(2);return Uh(o.inspected.set(null))}),ba(9,`ui-icon`,90),yd()(),da(10,`dl`,91)(11,`div`,92)(12,`dt`),WS(13),oC(14,`t`),yd(),da(15,`dd`)(16,`code`),WS(17),yd()()(),da(18,`div`,92)(19,`dt`),WS(20),oC(21,`t`),yd(),da(22,`dd`),WS(23),yd()(),da(24,`div`,92)(25,`dt`),WS(26),oC(27,`t`),yd(),da(28,`dd`),ba(29,`ui-state-badge`,67),yd()(),da(30,`div`,92)(31,`dt`),WS(32),oC(33,`t`),yd(),da(34,`dd`,68),WS(35),yd()(),da(36,`div`,92)(37,`dt`),WS(38),oC(39,`t`),yd(),da(40,`dd`,83)(41,`code`),WS(42),yd()()(),da(43,`div`,92)(44,`dt`),WS(45),oC(46,`t`),yd(),da(47,`dd`)(48,`code`),WS(49),yd()()(),da(50,`div`,92)(51,`dt`),WS(52),oC(53,`t`),yd(),da(54,`dd`)(55,`code`),WS(56),yd()()(),da(57,`div`,92)(58,`dt`),WS(59),oC(60,`t`),yd(),da(61,`dd`)(62,`code`),WS(63),yd()()(),da(64,`div`,92)(65,`dt`),WS(66),oC(67,`t`),yd(),da(68,`dd`)(69,`code`),WS(70),yd()()(),da(71,`div`,92)(72,`dt`),WS(73),oC(74,`t`),yd(),da(75,`dd`)(76,`code`),WS(77),yd()()(),uS(78,St,7,9,`div`,92),yd(),uS(79,Pt,6,4,`p`,93),uS(80,ht,6,4,`details`,94),uS(81,Mt,6,4,`details`,94),uS(82,wt,7,3,`div`,95),yd()}if(t&2){let e,l,o=n,u=bS(2);hD(3),Wm(`size`,15),hD(2),Jm(o.event_type),hD(),fS(o.event_id?6:-1),hD(),Ar(`aria-label`,sC(8,32,`state.close`)),hD(2),Wm(`size`,14),hD(4),Jm(sC(14,34,`execution.insp.schema`)),hD(4),Jm(o.schema),hD(3),Jm(sC(21,36,`execution.insp.at`)),hD(3),Jm(u.fmtAt(o.timestamp)),hD(3),Jm(sC(27,38,`execution.insp.status`)),hD(3),Wm(`state`,u.statusKind(o.status))(`labelOverride`,o.status??`—`),hD(3),Jm(sC(33,40,`execution.insp.duration`)),hD(3),Jm(o.duration_ms!==void 0?o.duration_ms+` ms`:`—`),hD(3),Jm(sC(39,42,`execution.insp.correlation`)),hD(2),Ar(`title`,o.correlation_id??null),hD(2),Jm(o.correlation_id??`—`),hD(3),Jm(sC(46,44,`execution.insp.span`)),hD(4),Jm(o.span_id??`—`),hD(3),Jm(sC(53,46,`execution.insp.parent`)),hD(4),Jm(o.parent_span_id??`—`),hD(3),Jm(sC(60,48,`execution.insp.trace`)),hD(4),Jm(o.trace_id??`—`),hD(3),Jm(sC(67,50,`execution.insp.source`)),hD(4),Jm(o.source??`—`),hD(3),Jm(sC(74,52,`execution.insp.target`)),hD(4),Jm(o.target??`—`),hD(),fS((e=u.taskIdOf(o))?78:-1,e),hD(),fS((l=u.causedByOf(o))?79:-1,l),hD(),fS(o.metadata?80:-1),hD(),fS(o.evidence?81:-1),hD(),fS(u.related(o).length?82:-1)}}function Ot(t,n){if(t&1&&(da(0,`section`,12)(1,`div`,13)(2,`div`)(3,`h2`,14),WS(4),oC(5,`t`),yd(),da(6,`p`,15)(7,`code`),WS(8,`GET /api/v1/events`),yd(),uS(9,qe,3,6,`span`),yd()()(),da(10,`div`,16)(11,`div`,17)(12,`span`,18),WS(13),yd(),da(14,`span`,19),WS(15),oC(16,`t`),yd()(),da(17,`div`,20)(18,`span`,18),WS(19),yd(),da(20,`span`,19),WS(21),oC(22,`t`),yd()(),da(23,`div`,21)(24,`span`,18),WS(25),yd(),da(26,`span`,19),WS(27),oC(28,`t`),yd()(),da(29,`div`,22)(30,`span`,18),WS(31),yd(),da(32,`span`,19),WS(33),oC(34,`t`),yd()()(),uS(35,Ge,5,7,`p`,23),yd(),uS(36,Ye,10,8,`section`,24),uS(37,lt,33,30,`section`,25),da(38,`section`,26)(39,`div`,13)(40,`div`)(41,`h2`,27),WS(42),oC(43,`t`),yd()()(),uS(44,pt,33,28,`div`,28),uS(45,gt,25,18,`div`,29)(46,bt,2,1),yd(),uS(47,kt,83,54,`section`,30)),t&2){let e,l,o=n,u=bS();hD(4),Jm(sC(5,17,`execution.summary`)),hD(5),fS((e=u.src.loadedAt())?9:-1,e),hD(4),Jm(o.count),hD(2),Jm(sC(16,19,`execution.count.events`)),hD(4),Jm(u.executions().groups.length),hD(2),Jm(sC(22,21,`execution.count.executions`)),hD(4),Jm(o.dropped),hD(2),Jm(sC(28,23,`execution.count.dropped`)),hD(4),Jm(o.capacity),hD(2),Jm(sC(34,25,`execution.count.capacity`)),hD(2),fS(o.truncated?35:-1),hD(),fS(u.executions().groups.length?36:-1),hD(),fS(u.replaySteps().length?37:-1),hD(5),Jm(sC(43,27,`execution.events`)),hD(2),fS(u.events().length?44:-1),hD(),fS(u.filteredEvents().length?45:46),hD(2),fS((l=u.inspected())?47:-1,l)}}var be=class t{api=p(g);destroyRef=p(ve$1);cid=rn(``);q=rn(``);src=new l;report=tn(()=>this.src.data());typeFilter=k(null);statusFilter=k(null);corrFilter=k(``);qFilter=k(``);selectedCid=k(void 0);inspected=k(null);replayIdx=k(0);playing=k(!1);speed=k(1);SPEEDS=[1,4,16,64];replayTimer=null;deepApplied=k(null);events=tn(()=>this.report()?.events??[]);typeOptions=tn(()=>[...new Set(this.events().map(n=>n.event_type))].sort((n,e)=>n.localeCompare(e)));statusOptions=tn(()=>[...new Set(this.events().map(n=>n.status).filter(n=>!!n))].sort((n,e)=>n.localeCompare(e)));filteredEvents=tn(()=>me(this.events(),{type:this.typeFilter(),status:this.statusFilter(),correlation:this.corrFilter(),q:this.qFilter()}));executions=tn(()=>ue(this.filteredEvents()));selectedGroup=tn(()=>{let n=this.selectedCid();return n===void 0?null:this.executions().groups.find(e=>e.correlationId===n)??null});replaySteps=tn(()=>_e(this.selectedGroup()?.events.map(n=>n.event)??this.filteredEvents()));replayScope=tn(()=>{let n=this.selectedCid();return n===void 0?``:n??`unlinked`});stamp=y;fmtAt=fe;fmtGap=Ce;shortId=ge;statusKind=ve;constructor(){Oo(()=>{let n=this.cid();!n||n===this.deepApplied()||!this.report()||(this.deepApplied.set(n),this.corrFilter.set(n),this.selectedCid.set(n))}),Oo(()=>{let n=this.q();n&&this.qFilter.set(n)}),Oo(()=>{this.replaySteps(),this.replayIdx.set(0),this.pause()}),this.destroyRef.onDestroy(()=>this.clearTimer()),this.load()}async load(){await this.src.load(()=>this.api.events())}selectExecution(n){let e=this.selectedCid()===n.correlationId?void 0:n.correlationId;this.selectedCid.set(e),this.replayIdx.set(0)}inspect(n){this.inspected.set(n)}placedIn(n){return n.events.filter(e=>e.timeMs!==null)}tickLeft(n,e){return n.startMs===null||n.endMs===null||n.endMs===n.startMs||e.timeMs===null?0:(e.timeMs-n.startMs)/(n.endMs-n.startMs)*100}fmtMs(n){return n===null?`—`:new Date(n).toLocaleString()}fmtDur(n){return n<1e3?`${n} ms`:`${Number((n/1e3).toFixed(1))} s`}timeParseable(n){return!!n&&Number.isFinite(Date.parse(n))}json(n){return JSON.stringify(n,null,2)}related(n){return xe(n,this.events())}causedByOf(n){return ye(n,this.events())}taskIdOf(n){let e=n.metadata?.task_id;return typeof e==`string`&&e?e:null}setType(n){let e=n.target.value;this.typeFilter.set(e===``?null:e)}setStatus(n){let e=n.target.value;this.statusFilter.set(e===``?null:e)}setCorr(n){this.corrFilter.set(n.target.value)}setQuery(n){this.qFilter.set(n.target.value)}setSpeed(n){let e=Number(n.target.value);this.speed.set(this.SPEEDS.includes(e)?e:1)}play(){this.playing()||this.replayIdx()>=this.replaySteps().length-1||(this.playing.set(!0),this.scheduleNext())}pause(){this.playing.set(!1),this.clearTimer()}stepReplay(n){this.pause();let e=this.replayIdx()+n,l=this.replaySteps().length-1;this.replayIdx.set(Math.max(0,Math.min(e,l)))}scheduleNext(){if(this.clearTimer(),!this.playing())return;let n=this.replayIdx()+1,e=this.replaySteps();if(n>=e.length){this.playing.set(!1);return}let l=e[n].waitMs/this.speed();this.replayTimer=setTimeout(()=>{this.replayTimer=null,this.replayIdx.set(n),this.scheduleNext()},Math.min(l,8e3))}clearTimer(){this.replayTimer&&(clearTimeout(this.replayTimer),this.replayTimer=null)}static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`page-execution`]],inputs:{cid:[1,`cid`],q:[1,`q`]},decls:16,vars:19,consts:[[`hintId`,`evidence`,3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[`data-section`,`local-only`,`role`,`note`,1,`local`],[`name`,`shield-check`,3,`size`],[`data-section`,`unavailable`,`role`,`note`,1,`card`,`unv`],[3,`error`],[`role`,`status`,1,`card`],[`state`,`UNVERIFIED`],[1,`muted`],[3,`retry`,`error`],[`kind`,`row`,3,`lines`],[`data-section`,`summary`,`aria-labelledby`,`ex-sum`,1,`card`],[1,`sec__head`],[`id`,`ex-sum`],[1,`src`],[1,`counts`],[`data-count`,`events`,1,`count`],[1,`count__value`],[1,`count__key`],[`data-count`,`executions`,1,`count`],[`data-count`,`dropped`,1,`count`],[`data-count`,`capacity`,1,`count`],[`data-note`,`truncated`,`role`,`note`,1,`truncated`],[`data-section`,`timeline`,`aria-labelledby`,`ex-tl`,1,`card`],[`data-section`,`replay`,`aria-labelledby`,`ex-rp`,1,`card`],[`data-section`,`events`,`aria-labelledby`,`ex-ev`,1,`card`],[`id`,`ex-ev`],[`data-section`,`filters`,1,`filters`],[1,`table-wrap`],[`data-section`,`inspector`,`aria-live`,`polite`,1,`card`,`detail`,`fg-enter`],[`name`,`alert`,3,`size`],[`id`,`ex-tl`],[`state`,`PARTIAL`],[`icon`,`execution`,3,`title`],[`role`,`list`,1,`tl`],[`aria-hidden`,`true`,1,`tl__axis`],[`role`,`listitem`,1,`tl__item`],[`data-note`,`unplaced`,1,`muted`,`tl__unplaced`],[`type`,`button`,1,`tl__row`,3,`click`],[1,`tl__label`],[1,`tl__n`],[1,`tl__track`],[1,`tl__span`,3,`left`,`width`],[1,`tl__tick`,3,`left`,`title`],[1,`tl__dur`,`num`],[1,`tl__span`],[1,`tl__tick`,3,`title`],[`id`,`ex-rp`,1,`rp__title`],[`name`,`history`,3,`size`],[1,`muted`,`rp__scope`],[`data-section`,`replay-controls`,1,`rp__controls`],[`data-action`,`step-prev`,1,`btn`,`btn--mini`,3,`click`,`disabled`],[`data-action`,`pause`,1,`btn`,`btn--mini`],[`data-action`,`play`,1,`btn`,`btn--mini`,3,`disabled`],[`data-action`,`step-next`,1,`btn`,`btn--mini`,3,`click`,`disabled`],[1,`rp__speed`],[`data-control`,`speed`,1,`select`,3,`change`],[3,`value`,`selected`],[1,`rp__steps`],[`data-action`,`pause`,1,`btn`,`btn--mini`,3,`click`],[`data-action`,`play`,1,`btn`,`btn--mini`,3,`click`,`disabled`],[`type`,`button`,`data-action`,`inspect`,1,`rp__step`,3,`click`],[1,`rp__gap`],[1,`rp__compressed`,3,`title`],[1,`rp__kind`],[1,`rp__at`],[3,`state`,`labelOverride`],[1,`num`],[1,`rp__flow`],[1,`rp__unplaced`,`muted`],[1,`filter`],[1,`filter__lbl`],[`data-filter`,`type`,1,`select`,3,`change`],[`value`,``,3,`selected`],[`data-filter`,`status`,1,`select`,3,`change`],[`type`,`search`,`data-filter`,`correlation`,1,`input`,3,`input`,`value`],[`type`,`search`,`data-filter`,`search`,1,`input`,3,`input`,`value`],[1,`table`],[`scope`,`col`],[`data-action`,`inspect`],[`data-action`,`inspect`,3,`click`],[1,`flow`],[1,`corr`],[`icon`,`search`,`data-empty`,`no-matches`,3,`title`],[`icon`,`inbox`,`data-empty`,`events`,3,`title`,`hint`],[1,`detail__head`],[`name`,`execution`,3,`size`],[1,`muted`,`detail__id`],[1,`icon-btn`,3,`click`],[`name`,`chevron-right`,3,`size`],[1,`plan-card`],[1,`kv`],[`data-note`,`caused-by`,1,`muted`,`cause`],[`open`,``,1,`raw`],[`data-section`,`related`,1,`related`],[`data-action`,`task`,1,`linklike`,3,`routerLink`,`queryParams`],[`data-action`,`parent`,1,`linklike`,3,`click`],[`data-action`,`related`,1,`linklike`,3,`click`]],template:function(e,l){if(e&1&&(da(0,`ui-page-header`,0),oC(1,`t`),oC(2,`t`),da(3,`button`,1),Ta(`click`,function(){return l.load()}),ba(4,`ui-icon`,2),WS(5),oC(6,`t`),yd()(),da(7,`p`,3),ba(8,`ui-icon`,4),da(9,`span`),WS(10),oC(11,`t`),yd()(),uS(12,Re,5,3,`section`,5),uS(13,ze,1,1,`ui-error`,6),uS(14,Ae,3,4,`section`,7),uS(15,Ot,48,29)),e&2){let o,u;Wm(`title`,sC(1,11,`execution.title`))(`subtitle`,sC(2,13,`execution.subtitle`)),hD(3),Wm(`disabled`,l.src.loading()),hD(),Wm(`size`,15),hD(),Dd(` `,sC(6,15,`state.refresh`),` `),hD(3),Wm(`size`,15),hD(2),Jm(sC(11,17,`execution.localOnly`)),hD(2),fS(l.src.unavailable()?12:-1),hD(),fS((o=l.src.error())?13:-1,o),hD(),fS(l.src.loading()&&!l.report()?14:-1),hD(),fS((u=l.report())?15:-1,u)}},dependencies:[yc,T,I,_,D,cE,k$1,aE],styles:[`.src[_ngcontent-%COMP%], .count__key[_ngcontent-%COMP%], .tl__axis[_ngcontent-%COMP%], .tl__n[_ngcontent-%COMP%], .tl__dur[_ngcontent-%COMP%], .tl__unplaced[_ngcontent-%COMP%], .filter__lbl[_ngcontent-%COMP%], .kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%], .local[_ngcontent-%COMP%], .truncated[_ngcontent-%COMP%], .corr[_ngcontent-%COMP%], .flow[_ngcontent-%COMP%], .detail__id[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.src[_ngcontent-%COMP%], .count__key[_ngcontent-%COMP%], .tl__axis[_ngcontent-%COMP%], .tl__n[_ngcontent-%COMP%], .tl__dur[_ngcontent-%COMP%], .tl__unplaced[_ngcontent-%COMP%], .corr[_ngcontent-%COMP%], .flow[_ngcontent-%COMP%], .filter__lbl[_ngcontent-%COMP%], .kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%], .detail__id[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs)}.filter__lbl[_ngcontent-%COMP%], .kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{text-transform:uppercase;letter-spacing:.04em}.local[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:0 0 var(--%NS%space-4);padding:var(--%NS%space-3);border:1px dashed var(--%NS%border);border-radius:var(--%NS%radius-md);font-size:var(--%NS%font-sm)}.local[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%], .truncated[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{flex:none}.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.sec__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%], #ex-tl[_ngcontent-%COMP%], .detail__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650}.src[_ngcontent-%COMP%]{margin:4px 0 0}.unv[_ngcontent-%COMP%], .truncated[_ngcontent-%COMP%]{display:flex;align-items:center;border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.unv[_ngcontent-%COMP%]{gap:var(--%NS%space-3)}.counts[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:var(--%NS%space-3)}.count[_ngcontent-%COMP%]{display:grid;gap:2px;padding:var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:color-mix(in srgb,var(--%NS%bg-hover) 40%,transparent)}.count__value[_ngcontent-%COMP%]{font-family:var(--%NS%font-mono);font-size:var(--%NS%font-2xl);font-weight:650}.truncated[_ngcontent-%COMP%]{gap:var(--%NS%space-2);margin:var(--%NS%space-3) 0 0;padding:var(--%NS%space-2) var(--%NS%space-3);border-radius:var(--%NS%radius-md)}.truncated[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%warn)}.tl[_ngcontent-%COMP%]{display:grid;gap:4px;margin-top:var(--%NS%space-3)}.tl__axis[_ngcontent-%COMP%]{display:flex;justify-content:space-between;margin-left:12rem;font-variant-numeric:tabular-nums}.tl__row[_ngcontent-%COMP%]{display:grid;grid-template-columns:12rem 1fr 5.5rem;align-items:center;gap:var(--%NS%space-2);width:100%;border:1px solid transparent;border-radius:var(--%NS%radius-md);background:none;font:inherit;color:inherit;text-align:left;padding:3px var(--%NS%space-2);cursor:pointer;transition:background var(--%NS%motion-fast),border-color var(--%NS%motion-fast)}.tl__row[_ngcontent-%COMP%]:hover{background:var(--%NS%bg-hover)}.tl__row[data-selected][_ngcontent-%COMP%]{border-color:var(--%NS%accent-ink);background:var(--%NS%accent-bg)}.tl__label[_ngcontent-%COMP%]{font-size:var(--%NS%font-sm);font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:baseline;gap:var(--%NS%space-2)}.tl__track[_ngcontent-%COMP%]{position:relative;height:16px;border-radius:var(--%NS%radius-pill);background:var(--%NS%bg);border:1px solid var(--%NS%border);overflow:hidden}.tl__span[_ngcontent-%COMP%], .tl__tick[_ngcontent-%COMP%]{position:absolute;top:0;bottom:0}.tl__span[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--%NS%info) 28%,transparent);border-radius:var(--%NS%radius-pill)}.tl__tick[_ngcontent-%COMP%]{width:3px;background:var(--%NS%tick, var(--%NS%fg-muted))}.tl__tick[data-status=supported][_ngcontent-%COMP%]{--%NS%tick: var(--%NS%ok)}.tl__tick[data-status=error][_ngcontent-%COMP%]{--%NS%tick: var(--%NS%error)}.tl__tick[data-status=warn][_ngcontent-%COMP%]{--%NS%tick: var(--%NS%warn)}.tl__tick[data-status=info][_ngcontent-%COMP%]{--%NS%tick: var(--%NS%info)}.tl__dur[_ngcontent-%COMP%]{text-align:right}.tl__unplaced[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 0}.filters[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.filter[_ngcontent-%COMP%]{display:grid;gap:4px;min-width:150px}.filter[_ngcontent-%COMP%] .input[_ngcontent-%COMP%]{min-width:190px}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.table[_ngcontent-%COMP%]{min-width:840px}.table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]{cursor:pointer}.detail[_ngcontent-%COMP%]{border-left:3px solid var(--%NS%accent)}.detail__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.detail__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);flex-wrap:wrap}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;font-weight:550;word-break:break-all}.cause[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 var(--%NS%space-3);font-size:var(--%NS%font-sm)}.related[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3);border-top:1px solid var(--%NS%border);padding-top:var(--%NS%space-3)}.related[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-md)}.related[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:4px}.related[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}@media(max-width:720px){.tl__axis[_ngcontent-%COMP%]{margin-left:0}.tl__row[_ngcontent-%COMP%]{grid-template-columns:1fr;gap:2px}.tl__dur[_ngcontent-%COMP%]{text-align:left}}`]})};export{be as ExecutionPage}; \ No newline at end of file diff --git a/portal/assets/chunk-Dx9x1gxm.js b/portal/assets/chunk-Dx9x1gxm.js deleted file mode 100644 index 959d4e3..0000000 --- a/portal/assets/chunk-Dx9x1gxm.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as da,At as rn,Dt as pS,Et as p,F as Wm,Gt as wS,K as aC,Lt as tn,M as Ta,Mt as sC,N as Uh,P as WS,Pt as tC,Q as cE,S as Oo,Tt as oC,X as bS,Xt as yd,Yt as yc,Z as ba,ct as gS,dt as hE,ft as hS,gt as k$1,h as Jm,ht as jh,it as ei,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,xt as nC,yt as mS,zt as uS}from"./chunk-BelLryvf.js";import{o as f,r as g}from"./main-A2NKRJGT.js";import{a as l,n as c,s as y}from"./chunk-0WpwvubF.js";import{t as _}from"./chunk-BKRLVsID.js";import{t as D}from"./chunk-CiuPOfJ0.js";import{n as k$2,t as I}from"./chunk-D2KAfPv6.js";import{t as T}from"./chunk-BBusSOqc.js";var ne=e=>({time:e});var te=()=>[`/hosts`];var ie=e=>({count:e});var k=(e,o)=>o.id;function ae(e,o){e&1&&ba(0,`ui-state-badge`,23),e&2&&Wm(`state`,o.status)}function oe(e,o){e&1&&(da(0,`p`,24),ba(1,`ui-icon`,4),WS(2),oC(3,`t`),yd()),e&2&&(hD(),Wm(`size`,14),hD(),Dd(` `,sC(3,2,`mcp.verifying`),` `))}function re(e,o){if(e&1){let i=wS();da(0,`ui-error`,25),Ta(`retry`,function(){jh(i);let y=bS(2);return Uh(y.verify())}),yd()}e&2&&Wm(`error`,o)}function le(e,o){if(e&1&&(da(0,`p`,21)(1,`code`),WS(2),yd()()),e&2){let i=bS();hD(2),Jm(i.stage)}}function ce(e,o){if(e&1&&(da(0,`p`),WS(1),yd()),e&2){let i=bS();hD(),Jm(i.detail)}}function pe(e,o){if(e&1&&WS(0),e&2){let i=bS(2);Dd(` — `,i.unlock,` `)}}function de(e,o){if(e&1&&(da(0,`p`,26)(1,`code`),WS(2),yd(),uS(3,pe,1,1),yd()),e&2){let i=bS();hD(2),Jm(i.refusal),hD(),fS(i.unlock?3:-1)}}function se(e,o){if(e&1&&(da(0,`li`)(1,`code`,30),WS(2),yd(),da(3,`span`,21),WS(4),yd(),da(5,`code`,31),WS(6),yd()()),e&2){let i=o.$implicit;hD(2),Jm(i.status),hD(2),Jm(i.kind),hD(2),Jm(i.path)}}function me(e,o){if(e&1&&(da(0,`h3`,28),WS(1),oC(2,`t`),yd(),da(3,`ul`,29),gS(4,se,7,3,`li`,null,hS),yd()),e&2){let i=bS();hD(),Jm(sC(2,1,`federation.actions`)),hD(3),mS(i.actions)}}function _e(e,o){if(e&1&&(da(0,`p`,27)(1,`span`),WS(2),oC(3,`t`),yd(),da(4,`strong`,32),WS(5),yd(),da(6,`small`,21),WS(7),oC(8,`t`),yd()()),e&2){let i=bS(3);hD(2),Jm(sC(3,3,`mcp.receipt.latency`)),hD(3),Dd(``,i.latencyMs(),` ms`),hD(2),Jm(sC(8,5,`mcp.receipt.latencyHint`))}}function ue(e,o){if(e&1&&(uS(0,le,3,1,`p`,21),uS(1,ce,2,1,`p`),uS(2,de,4,2,`p`,26),uS(3,me,6,3),uS(4,_e,9,7,`p`,27)),e&2){let i=o,d=bS(2);fS(i.stage?0:-1),hD(),fS(i.detail?1:-1),hD(),fS(i.refusal?2:-1),hD(),fS(i.actions?.length?3:-1),hD(),fS(d.latencyMs()!==null?4:-1)}}function ge(e,o){if(e&1&&(da(0,`section`,6)(1,`div`,9)(2,`div`)(3,`h2`),WS(4),oC(5,`t`),yd(),da(6,`p`,10)(7,`code`),WS(8,`POST /api/v1/mcp/verify`),yd()()(),uS(9,ae,1,1,`ui-state-badge`,23),yd(),uS(10,oe,4,4,`p`,24),uS(11,re,1,1,`ui-error`,13),uS(12,ue,5,5),yd()),e&2){let i,d,y,S=bS();hD(4),Jm(sC(5,5,`install.receipt`)),hD(5),fS((i=S.receipt())?9:-1,i),hD(),fS(S.busy()?10:-1),hD(),fS((d=S.verifyError())?11:-1,d),hD(),fS((y=S.receipt())?12:-1,y)}}function ye(e,o){if(e&1&&(da(0,`p`,38),WS(1),yd()),e&2){let i=bS().$implicit;hD(),Jm(i.detail)}}function ve(e,o){if(e&1&&(da(0,`li`),WS(1),yd()),e&2){let i=o.$implicit;hD(),Jm(i)}}function xe(e,o){if(e&1&&(da(0,`ul`,39),gS(1,ve,2,1,`li`,null,pS),yd()),e&2){let i=bS().$implicit;hD(),mS(i.limitations)}}function fe(e,o){if(e&1){let i=wS();da(0,`article`,34)(1,`header`,35)(2,`code`,36),WS(3),yd(),ba(4,`ui-state-badge`,23),da(5,`button`,37),Ta(`click`,function(){jh(i);let y=bS(2);return Uh(y.verify())}),ba(6,`ui-icon`,4),WS(7),oC(8,`t`),yd()(),uS(9,ye,2,1,`p`,38),uS(10,xe,3,0,`ul`,39),yd()}if(e&2){let i=o.$implicit,d=bS(2);Ar(`data-state`,i.state),hD(3),Jm(i.id),hD(),Wm(`state`,i.state),hD(),Wm(`disabled`,d.busy()),hD(),Wm(`size`,13),hD(),Dd(` `,sC(8,8,`error.retry`),` `),hD(2),fS(i.detail?9:-1),hD(),fS(i.limitations?.length?10:-1)}}function Ce(e,o){if(e&1&&(da(0,`section`,7)(1,`div`,9)(2,`div`)(3,`h2`),ba(4,`ui-icon`,33),WS(5),oC(6,`t`),yd(),da(7,`p`,10),WS(8),oC(9,`t`),yd()()(),gS(10,fe,11,10,`article`,34,k),yd()),e&2){let i=bS();hD(4),Wm(`size`,15),hD(),Jm(sC(6,3,`mcp.diag.title`)),hD(3),Jm(sC(9,5,`mcp.diag.hint`)),hD(2),mS(i.attention())}}function Se(e,o){if(e&1&&(da(0,`span`),WS(1),oC(2,`t`),yd()),e&2){let i=bS();hD(),Dd(` · `,aC(2,1,`common.updatedAt`,nC(4,ne,i.stamp(o))))}}function be(e,o){e&1&&(da(0,`div`,12),ba(1,`ui-state-badge`,40),da(2,`span`),WS(3),oC(4,`t`),yd()()),e&2&&(hD(3),Jm(sC(4,1,`empty.noData.hint`)))}function Ee(e,o){if(e&1){let i=wS();da(0,`ui-error`,25),Ta(`retry`,function(){jh(i);let y=bS();return Uh(y.load())}),yd()}e&2&&Wm(`error`,o)}function Me(e,o){e&1&&(da(0,`div`,14),oC(1,`t`),ba(2,`ui-skeleton`,41),yd()),e&2&&(Ar(`aria-label`,sC(1,2,`state.loading`)),hD(2),Wm(`lines`,3))}function he(e,o){if(e&1&&(da(0,`a`,47),oC(1,`t`),WS(2),yd()),e&2){let i=bS().$implicit;Wm(`routerLink`,tC(6,te))(`fragment`,`host-`+i.host),Ar(`title`,sC(1,4,`mcp.host.open`)),hD(2),Jm(i.host)}}function Pe(e,o){e&1&&(da(0,`span`,48),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`mcp.host.unbound`)))}function Ie(e,o){if(e&1&&WS(0),e&2){let i=bS().$implicit;Dd(` `,i.tools_count,` `)}}function Ne(e,o){e&1&&ba(0,`ui-state-badge`,40)}function Oe(e,o){if(e&1&&WS(0),e&2){let i=bS().$implicit,d=bS(2);Dd(` `,d.fmt(i.last_verify),` `)}}function Te(e,o){e&1&&(da(0,`span`,21),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`mcp.never`)))}function Be(e,o){if(e&1){let i=wS();da(0,`tr`)(1,`td`)(2,`div`,45),ba(3,`ui-icon`,46),da(4,`code`),WS(5),yd()()(),da(6,`td`),ba(7,`ui-state-badge`,23),yd(),da(8,`td`),uS(9,he,3,7,`a`,47)(10,Pe,3,3,`span`,48),yd(),da(11,`td`),uS(12,Ie,1,1)(13,Ne,1,0,`ui-state-badge`,40),yd(),da(14,`td`),uS(15,Oe,1,1)(16,Te,3,3,`span`,21),yd(),da(17,`td`),WS(18),oC(19,`t`),yd(),da(20,`td`)(21,`button`,11),oC(22,`t`),Ta(`click`,function(){let y=jh(i).$implicit,S=bS(2);return Uh(S.select(y))}),ba(23,`ui-icon`,49),yd()()()}if(e&2){let i=o.$implicit,d=bS(2);Ar(`data-selected`,d.selectedId()===i.id||null),hD(3),Wm(`size`,15),hD(2),Jm(i.id),hD(2),Wm(`state`,i.state),hD(2),fS(i.host?9:10),hD(3),fS(i.tools_count!==null?12:13),hD(3),fS(i.last_verify?15:16),hD(3),Jm(i.limitations?.length??sC(19,11,`state.none`)),hD(3),Ar(`data-inspect`,i.id)(`aria-label`,sC(22,13,`state.viewDetails`)),hD(2),Wm(`size`,15)}}function we(e,o){if(e&1&&(da(0,`div`,15)(1,`table`,42)(2,`thead`)(3,`tr`)(4,`th`,43),WS(5),oC(6,`t`),yd(),da(7,`th`,43),WS(8),oC(9,`t`),yd(),da(10,`th`,43),WS(11),oC(12,`t`),yd(),da(13,`th`,43),WS(14),oC(15,`t`),yd(),da(16,`th`,43),WS(17),oC(18,`t`),yd(),da(19,`th`,43),WS(20),oC(21,`t`),yd(),da(22,`th`,43)(23,`span`,44),WS(24),oC(25,`t`),yd()()()(),da(26,`tbody`),gS(27,Be,24,15,`tr`,null,k),yd()()()),e&2){let i=bS();hD(5),Jm(sC(6,7,`table.id`)),hD(3),Jm(sC(9,9,`skills.state`)),hD(3),Jm(sC(12,11,`table.host`)),hD(3),Jm(sC(15,13,`mcp.surface.tools`)),hD(3),Jm(sC(18,15,`mcp.lastVerify`)),hD(3),Jm(sC(21,17,`mcp.limitations`)),hD(4),Jm(sC(25,19,`state.viewDetails`)),hD(3),mS(i.servers())}}function ke(e,o){e&1&&(ba(0,`ui-empty`,16),oC(1,`t`),oC(2,`t`)),e&2&&Wm(`title`,sC(1,2,`empty.noData`))(`hint`,sC(2,4,`empty.noData.hint`))}function De(e,o){if(e&1){let i=wS();da(0,`button`,50),Ta(`click`,function(){jh(i);let y=bS();return Uh(y.selectedId.set(null))}),WS(1),oC(2,`t`),yd()}e&2&&(hD(),Dd(` `,sC(2,1,`state.close`),` `))}function Fe(e,o){if(e&1&&(da(0,`a`,47),oC(1,`t`),WS(2),yd()),e&2){let i=bS();Wm(`routerLink`,tC(6,te))(`fragment`,`host-`+i.host),Ar(`title`,sC(1,4,`mcp.host.open`)),hD(2),Jm(i.host)}}function ze(e,o){e&1&&(da(0,`span`,21),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`mcp.host.unbound`)))}function Ve(e,o){if(e&1&&(WS(0),oC(1,`t`)),e&2){let i=bS();Dd(` `,aC(1,1,`mcp.tools`,nC(4,ie,i.tools_count)),` `)}}function Ae(e,o){e&1&&ba(0,`ui-state-badge`,40)}function Re(e,o){if(e&1&&WS(0),e&2){let i=bS(),d=bS();Dd(` `,d.fmt(i.last_verify),` `)}}function $e(e,o){e&1&&(da(0,`span`,21),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`mcp.never`)))}function Ge(e,o){if(e&1&&(da(0,`div`)(1,`dt`),WS(2),oC(3,`t`),yd(),da(4,`dd`),WS(5),yd()()),e&2){let i=bS();hD(2),Jm(sC(3,2,`mcp.detail`)),hD(3),Jm(i.detail)}}function Le(e,o){if(e&1&&(da(0,`li`),WS(1),yd()),e&2){let i=o.$implicit;hD(),Jm(i)}}function He(e,o){if(e&1&&(da(0,`h3`,28),WS(1),oC(2,`t`),yd(),da(3,`ul`,39),gS(4,Le,2,1,`li`,null,pS),yd()),e&2){let i=bS();hD(),Jm(sC(2,1,`mcp.limitations`)),hD(3),mS(i.limitations)}}function Ue(e,o){if(e&1&&(da(0,`p`,61),WS(1),oC(2,`t`),yd(),da(3,`p`,21),WS(4),oC(5,`t`),yd()),e&2){let i=bS();hD(),Jm(aC(2,2,`mcp.tools`,nC(7,ie,i.tools_count))),hD(3),Jm(sC(5,5,`mcp.surface.countOnly`))}}function Ke(e,o){e&1&&(ba(0,`ui-state-badge`,40),da(1,`p`,21),WS(2),oC(3,`t`),yd()),e&2&&(hD(2),Jm(sC(3,1,`mcp.surface.noTools`)))}function je(e,o){if(e&1&&(da(0,`div`,20)(1,`header`,51)(2,`h3`),ba(3,`ui-icon`,46),da(4,`code`),WS(5),yd()(),ba(6,`ui-state-badge`,23),yd(),da(7,`p`,52),WS(8),oC(9,`t`),yd(),da(10,`dl`,53)(11,`div`)(12,`dt`),WS(13),oC(14,`t`),yd(),da(15,`dd`)(16,`code`),WS(17),yd()()(),da(18,`div`)(19,`dt`),WS(20),oC(21,`t`),yd(),da(22,`dd`),ba(23,`ui-state-badge`,23),yd()(),da(24,`div`)(25,`dt`),WS(26),oC(27,`t`),yd(),da(28,`dd`),uS(29,Fe,3,7,`a`,47)(30,ze,3,3,`span`,21),yd()(),da(31,`div`)(32,`dt`),WS(33),oC(34,`t`),yd(),da(35,`dd`),uS(36,Ve,2,6)(37,Ae,1,0,`ui-state-badge`,40),yd()(),da(38,`div`)(39,`dt`),WS(40),oC(41,`t`),yd(),da(42,`dd`),uS(43,Re,1,1)(44,$e,3,3,`span`,21),yd()(),uS(45,Ge,6,4,`div`),yd(),uS(46,He,6,3),da(47,`div`,54)(48,`section`,55)(49,`h4`),ba(50,`ui-icon`,56),WS(51),oC(52,`t`),yd(),uS(53,Ue,6,9)(54,Ke,4,3),yd(),da(55,`section`,57)(56,`h4`),ba(57,`ui-icon`,58),WS(58),oC(59,`t`),yd(),ba(60,`ui-state-badge`,40),da(61,`p`,21),WS(62),oC(63,`t`),yd()(),da(64,`section`,59)(65,`h4`),ba(66,`ui-icon`,60),WS(67),oC(68,`t`),yd(),ba(69,`ui-state-badge`,40),da(70,`p`,21),WS(71),oC(72,`t`),yd()()()()),e&2){let i=o,d=bS();hD(3),Wm(`size`,16),hD(2),Jm(i.id),hD(),Wm(`state`,i.state),hD(2),Jm(sC(9,25,d.explainKey(i.state))),hD(5),Jm(sC(14,27,`table.id`)),hD(4),Jm(i.id),hD(3),Jm(sC(21,29,`skills.state`)),hD(3),Wm(`state`,i.state),hD(3),Jm(sC(27,31,`table.host`)),hD(3),fS(i.host?29:30),hD(4),Jm(sC(34,33,`mcp.surface.tools`)),hD(3),fS(i.tools_count!==null?36:37),hD(4),Jm(sC(41,35,`mcp.lastVerify`)),hD(3),fS(i.last_verify?43:44),hD(2),fS(i.detail?45:-1),hD(),fS(i.limitations?.length?46:-1),hD(4),Wm(`size`,14),hD(),Jm(sC(52,37,`mcp.surface.tools`)),hD(2),fS(i.tools_count!==null?53:54),hD(4),Wm(`size`,14),hD(),Jm(sC(59,39,`mcp.surface.resources`)),hD(4),Jm(sC(63,41,`mcp.surface.notExposed`)),hD(4),Wm(`size`,14),hD(),Jm(sC(68,43,`mcp.surface.prompts`)),hD(4),Jm(sC(72,45,`mcp.surface.notExposed`))}}function qe(e,o){e&1&&(da(0,`p`,21),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`mcp.selectHint`)))}function Je(e,o){if(e&1&&(da(0,`th`,43),WS(1),oC(2,`t`),yd()),e&2){let i=o.$implicit;hD(),Jm(sC(2,1,`mcpState.`+i))}}function Qe(e,o){if(e&1&&(da(0,`td`,63),ba(1,`ui-state-badge`,40),yd()),e&2){let i=bS(3);Ar(`colspan`,i.stages.length)}}function We(e,o){e&1&&(ba(0,`ui-icon`,65),da(1,`span`,44),WS(2),oC(3,`t`),yd()),e&2&&(Wm(`size`,14),hD(2),Jm(sC(3,2,`state.yes`)))}function Xe(e,o){e&1&&(da(0,`span`,66),WS(1,`—`),yd(),da(2,`span`,44),WS(3),oC(4,`t`),yd()),e&2&&(hD(3),Jm(sC(4,1,`state.no`)))}function Ye(e,o){if(e&1&&(da(0,`td`,63),uS(1,We,4,4)(2,Xe,5,3),yd()),e&2){let i=o.$implicit,d=bS(2).$implicit,y=bS(2);hD(),fS(y.reached(d,i)?1:2)}}function Ze(e,o){if(e&1&&gS(0,Ye,3,1,`td`,63,pS),e&2){let i=bS(3);mS(i.stages)}}function et(e,o){if(e&1&&(da(0,`li`),WS(1),yd()),e&2){let i=o.$implicit;hD(),Jm(i)}}function tt(e,o){if(e&1&&(da(0,`tr`,64)(1,`td`)(2,`ul`,39),gS(3,et,2,1,`li`,null,pS),yd()()()),e&2){let i=bS().$implicit,d=bS(2);hD(),Ar(`colspan`,d.stages.length+3),hD(2),mS(i.limitations)}}function it(e,o){if(e&1&&(da(0,`tr`)(1,`td`)(2,`code`),WS(3),yd()(),da(4,`td`),ba(5,`ui-state-badge`,23),yd(),uS(6,Qe,2,1,`td`,63)(7,Ze,2,0),da(8,`td`),WS(9),oC(10,`t`),yd()(),uS(11,tt,5,1,`tr`,64)),e&2){let i=o.$implicit,d=bS(2);hD(3),Jm(i.id),hD(2),Wm(`state`,i.state),hD(),fS(d.abnormal(i)?6:7),hD(3),Jm(i.limitations?.length??sC(10,5,`state.none`)),hD(2),fS(i.limitations?.length?11:-1)}}function nt(e,o){if(e&1&&(da(0,`div`,15)(1,`table`,62)(2,`thead`)(3,`tr`)(4,`th`,43),WS(5),oC(6,`t`),yd(),da(7,`th`,43),WS(8),oC(9,`t`),yd(),gS(10,Je,3,3,`th`,43,pS),da(12,`th`,43),WS(13),oC(14,`t`),yd()()(),da(15,`tbody`),gS(16,it,12,7,null,null,k),yd()()()),e&2){let i=bS();hD(5),Jm(sC(6,3,`table.id`)),hD(3),Jm(sC(9,5,`skills.state`)),hD(2),mS(i.stages),hD(3),Jm(sC(14,7,`mcp.limitations`)),hD(3),mS(i.servers())}}function at(e,o){e&1&&(da(0,`p`,21),WS(1),oC(2,`t`),yd()),e&2&&(hD(),Jm(sC(2,1,`state.none`)))}var ot=[`CONFIGURED`,`STARTING`,`HANDSHAKE_VERIFIED`,`TOOLS_DISCOVERED`,`INVOCATION_VERIFIED`];var rt={CONFIGURED:0,STARTING:1,HANDSHAKE_VERIFIED:2,TOOLS_DISCOVERED:3,INVOCATION_VERIFIED:4};var Z={NOT_CONFIGURED:-1,CONFIGURED:0,STARTING:1,HANDSHAKE_VERIFIED:2,TOOLS_DISCOVERED:3,INVOCATION_VERIFIED:4,DEGRADED:null,FAILED:null};var ee=class e{api=p(g);toast=p(f);server=rn(``);src=new l;servers=tn(()=>this.src.data()??[]);selectedId=k$1(null);deepApplied=k$1(null);selected=tn(()=>this.servers().find(o=>o.id===this.selectedId())??null);attention=tn(()=>this.servers().filter(o=>o.state===`FAILED`||o.state===`DEGRADED`));receipt=k$1(null);latencyMs=k$1(null);verifyError=k$1(null);busy=k$1(!1);stages=ot;stamp=y;constructor(){Oo(()=>{let o=this.server();!o||o===this.deepApplied()||!this.src.attempted()||(this.deepApplied.set(o),this.servers().some(i=>i.id===o)&&this.selectedId.set(o))}),this.load()}async load(){await this.src.load(()=>this.api.mcpServers())}select(o){this.selectedId.set(o.id)}explainKey(o){return`mcp.explain.${o}`}abnormal(o){return Z[o.state]===null}reached(o,i){let d=Z[o.state];return d!==null&&d>=rt[i]}fmt(o){let i=new Date(o);return Number.isNaN(i.getTime())?o:i.toLocaleString()}async verify(){this.busy.set(!0),this.verifyError.set(null),this.receipt.set(null),this.latencyMs.set(null);let o=performance.now();try{let i=await hE(this.api.mcpVerify());this.latencyMs.set(Math.max(0,Math.round(performance.now()-o))),this.receipt.set(i),this.toast.show(`notify.success`,`success`),await this.load()}catch(i){this.verifyError.set(c(i)),this.toast.show(`notify.error`,`error`)}finally{this.busy.set(!1)}}static ɵfac=function(i){return new(i||e)};static ɵcmp=ei({type:e,selectors:[[`page-mcp`]],inputs:{server:[1,`server`]},decls:60,vars:46,consts:[[`hintId`,`mcp`,3,`title`,`subtitle`],[`data-action`,`verify`,1,`btn`,`btn--primary`,3,`click`,`disabled`],[`name`,`shield-check`,3,`size`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[`data-section`,`safety`,`role`,`note`,1,`safety`],[`data-section`,`verify`,`data-lift`,``,1,`card`],[`data-section`,`diagnostics`,1,`card`,`diag`],[`data-section`,`registry`,1,`card`],[1,`sec__head`],[1,`src`],[1,`icon-btn`,3,`click`],[`role`,`note`,1,`unv`],[3,`error`],[`role`,`status`],[1,`table-wrap`],[`icon`,`mcp`,3,`title`,`hint`],[`data-section`,`inspector`,1,`card`],[`name`,`compass`,3,`size`],[1,`btn`,`btn--mini`],[1,`fg-enter`],[1,`muted`],[`data-section`,`compat`,1,`card`],[3,`state`],[`role`,`status`,`aria-live`,`polite`,1,`running`],[3,`retry`,`error`],[`role`,`alert`,1,`refusal`],[1,`latency`],[1,`subhead`],[1,`actions`],[1,`actions__status`],[1,`path`],[`data-latency`,``],[`name`,`alert`,3,`size`],[1,`diag__item`],[1,`diag__head`],[1,`diag__id`],[`data-diag-retry`,``,1,`btn`,`btn--mini`,3,`click`,`disabled`],[1,`diag__detail`],[1,`limits`],[`state`,`UNVERIFIED`],[`kind`,`row`,3,`lines`],[1,`table`],[`scope`,`col`],[1,`sr-only`],[1,`id`],[`name`,`mcp`,3,`size`],[1,`linklike`,`mono`,3,`routerLink`,`fragment`],[`data-unbound`,``,1,`muted`],[`name`,`chevron-right`,3,`size`],[1,`btn`,`btn--mini`,3,`click`],[1,`insp__head`],[1,`explain`],[1,`kv`],[1,`surfaces`],[`data-surface`,`tools`,1,`surface`],[`name`,`settings`,3,`size`],[`data-surface`,`resources`,1,`surface`],[`name`,`folder`,3,`size`],[`data-surface`,`prompts`,1,`surface`],[`name`,`terminal`,3,`size`],[1,`surface__value`],[1,`table`,`compat`],[1,`stage`],[1,`lim`],[`name`,`check`,1,`stage__yes`,3,`size`],[`aria-hidden`,`true`,1,`stage__no`]],template:function(i,d){if(i&1&&(da(0,`ui-page-header`,0),oC(1,`t`),oC(2,`t`),da(3,`button`,1),Ta(`click`,function(){return d.verify()}),ba(4,`ui-icon`,2),WS(5),oC(6,`t`),yd(),da(7,`button`,3),Ta(`click`,function(){return d.load()}),ba(8,`ui-icon`,4),WS(9),oC(10,`t`),yd()(),da(11,`p`,5),ba(12,`ui-icon`,2),da(13,`span`),WS(14),oC(15,`t`),yd()(),uS(16,ge,13,7,`section`,6),uS(17,Ce,12,7,`section`,7),da(18,`section`,8)(19,`div`,9)(20,`div`)(21,`h2`),WS(22),oC(23,`t`),yd(),da(24,`p`,10)(25,`code`),WS(26,`GET /api/v1/mcp/servers`),yd(),uS(27,Se,3,6,`span`),yd()(),da(28,`button`,11),oC(29,`t`),Ta(`click`,function(){return d.load()}),ba(30,`ui-icon`,4),yd()(),uS(31,be,5,3,`div`,12),uS(32,Ee,1,1,`ui-error`,13),uS(33,Me,3,4,`div`,14),uS(34,we,29,21,`div`,15)(35,ke,3,6,`ui-empty`,16),yd(),da(36,`section`,17)(37,`div`,9)(38,`div`)(39,`h2`),ba(40,`ui-icon`,18),WS(41),oC(42,`t`),yd(),da(43,`p`,10)(44,`code`),WS(45,`GET /api/v1/mcp/servers`),yd()()(),uS(46,De,3,3,`button`,19),yd(),uS(47,je,73,47,`div`,20)(48,qe,3,3,`p`,21),yd(),da(49,`section`,22)(50,`div`,9)(51,`div`)(52,`h2`),WS(53),oC(54,`t`),yd(),da(55,`p`,10),WS(56),oC(57,`t`),yd()()(),uS(58,nt,18,9,`div`,15)(59,at,3,3,`p`,21),yd()),i&2){let y,S,D;Wm(`title`,sC(1,26,`mcp.title`))(`subtitle`,sC(2,28,`mcp.subtitle`)),hD(3),Wm(`disabled`,d.busy()),hD(),Wm(`size`,15),hD(),Dd(` `,sC(6,30,`mcp.verify`),` `),hD(3),Wm(`size`,15),hD(),Dd(` `,sC(10,32,`state.refresh`),` `),hD(3),Wm(`size`,15),hD(2),Jm(sC(15,34,`mcp.safety`)),hD(2),fS(d.busy()||d.receipt()||d.verifyError()?16:-1),hD(),fS(d.attention().length?17:-1),hD(5),Jm(sC(23,36,`mcp.servers`)),hD(5),fS((y=d.src.loadedAt())?27:-1,y),hD(),Ar(`aria-label`,sC(29,38,`state.refresh`)),hD(2),Wm(`size`,14),hD(),fS(d.src.unavailable()?31:-1),hD(),fS((S=d.src.error())?32:-1,S),hD(),fS(d.src.loading()&&!d.src.data()?33:-1),hD(),fS(d.servers().length?34:d.src.attempted()&&!d.src.loading()&&!d.src.error()&&!d.src.unavailable()?35:-1),hD(6),Wm(`size`,15),hD(),Jm(sC(42,40,`mcp.inspector`)),hD(5),fS(d.selected()?46:-1),hD(),fS((D=d.selected())?47:48,D),hD(6),Jm(sC(54,42,`mcp.compat.title`)),hD(3),Jm(sC(57,44,`mcp.compat.hint`)),hD(2),fS(d.servers().length?58:d.src.attempted()&&!d.src.loading()?59:-1)}},dependencies:[yc,T,I,_,D,cE,k$2,aE],styles:[`.safety[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:0 0 var(--%NS%space-4);padding:var(--%NS%space-3);border:1px solid color-mix(in srgb,var(--%NS%info) 40%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%info-bg);color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm)}.safety[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%info);flex:none}.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.sec__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.src[_ngcontent-%COMP%]{margin:4px 0 0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.subhead[_ngcontent-%COMP%]{margin:var(--%NS%space-3) 0 var(--%NS%space-2);font-size:var(--%NS%font-sm);font-weight:650}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.path[_ngcontent-%COMP%]{overflow-wrap:anywhere}.running[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-2);margin:0;color:var(--%NS%fg-muted)}.refusal[_ngcontent-%COMP%]{color:var(--%NS%warn)}.actions[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:6px}.actions[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);min-width:0}.actions__status[_ngcontent-%COMP%]{flex:none;font-weight:600}.latency[_ngcontent-%COMP%]{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--%NS%space-2);margin:var(--%NS%space-3) 0 0;padding-top:var(--%NS%space-3);border-top:1px dashed var(--%NS%border)}.latency[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-family:var(--%NS%font-mono)}.unv[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.diag[_ngcontent-%COMP%]{border-left:3px solid var(--%NS%error)}.diag__item[_ngcontent-%COMP%]{padding:var(--%NS%space-3);border:1px solid color-mix(in srgb,var(--%NS%error) 40%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%error-bg)}.diag__item[_ngcontent-%COMP%] + .diag__item[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3)}.diag__item[data-state=DEGRADED][_ngcontent-%COMP%]{border-color:color-mix(in srgb,var(--%NS%warn) 55%,transparent);background:var(--%NS%warn-bg)}.diag__head[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3)}.diag__id[_ngcontent-%COMP%]{flex:1;min-width:0;font-weight:600;overflow-wrap:anywhere}.diag__detail[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 0;font-size:var(--%NS%font-sm)}.limits[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 0;padding-left:var(--%NS%space-5);display:grid;gap:4px;font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted)}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.table[_ngcontent-%COMP%]{min-width:720px}.id[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);min-width:0}.id[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);flex:none}tr[data-selected][_ngcontent-%COMP%] td[_ngcontent-%COMP%]{background:var(--%NS%accent-bg)}.insp__head[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:var(--%NS%space-3)}.insp__head[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-md);font-weight:650;display:inline-flex;align-items:center;gap:var(--%NS%space-2);min-width:0}.insp__head[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.explain[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 var(--%NS%space-3);color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm)}.kv[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin:0}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{min-width:9rem;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm);flex:none}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;min-width:0}.surfaces[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-3);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-top:var(--%NS%space-4)}.surface[_ngcontent-%COMP%]{padding:var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:color-mix(in srgb,var(--%NS%bg-hover) 40%,transparent)}.surface[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-sm);font-weight:650;display:flex;align-items:center;gap:var(--%NS%space-2)}.surface[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.surface[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 0;font-size:var(--%NS%font-sm)}.surface__value[_ngcontent-%COMP%]{font-weight:650}.btn--mini[_ngcontent-%COMP%]{padding:2px var(--%NS%space-2);font-size:var(--%NS%font-xs);gap:4px}.compat[_ngcontent-%COMP%] .stage[_ngcontent-%COMP%]{text-align:center;white-space:nowrap}.stage__yes[_ngcontent-%COMP%]{color:var(--%NS%ok)}.stage__no[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}tr.lim[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding-top:0;border-top:0;background:color-mix(in srgb,var(--%NS%bg-hover) 40%,transparent)}tr.lim[_ngcontent-%COMP%] .limits[_ngcontent-%COMP%]{margin-top:0}`]})};export{ee as McpPage}; \ No newline at end of file diff --git a/portal/assets/chunk-IG0wRxY1.js b/portal/assets/chunk-IG0wRxY1.js new file mode 100644 index 0000000..92ac6dc --- /dev/null +++ b/portal/assets/chunk-IG0wRxY1.js @@ -0,0 +1 @@ +import{$ as dS,At as qm,Bt as tn,Et as p,F as Sa,Ht as ty,J as aC,Jt as vd,O as Ot,P as SS,Q as cE,Qt as yS,S as Ma,Ut as uC,Y as aE,Z as bd,at as ey,b as LU,ct as hD,et as da,gt as k,i as Ar,it as ei,jt as rC,kt as qS,ot as gS,p as Hh,qt as vc,s as DS,ut as hS,vt as lC,w as NS,y as Km,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{a as w$1,r as g,t as g$1}from"./main-XW2ZMSO5.js";import{a as l,r as f,s as y}from"./chunk-BNDlNg-C.js";import{t as _}from"./chunk-16deWS0U.js";import{t as D}from"./chunk-Bg2lccQE.js";import{n as k$1,t as I}from"./chunk-DQtX_-dj.js";import{t as T}from"./chunk-BGgpmc9t.js";import{t as F}from"./chunk-xLo56Uun.js";var te=e=>({time:e});var w=(e,o)=>o.id;function ie(e,o){if(e&1&&(da(0,`dl`,9)(1,`div`)(2,`dt`),qS(3),aC(4,`t`),vd(),da(5,`dd`),qS(6),da(7,`code`),qS(8),vd()()(),da(9,`div`)(10,`dt`),qS(11),aC(12,`t`),vd(),da(13,`dd`)(14,`code`),qS(15),vd()()(),da(16,`div`)(17,`dt`),qS(18),aC(19,`t`),vd(),da(20,`dd`),qS(21),vd()(),da(22,`div`)(23,`dt`),qS(24),aC(25,`t`),vd(),da(26,`dd`),qS(27),vd()(),da(28,`div`)(29,`dt`),qS(30),aC(31,`t`),vd(),da(32,`dd`),qS(33),aC(34,`t`),vd()(),da(35,`div`)(36,`dt`),qS(37),aC(38,`t`),vd(),da(39,`dd`,16),qS(40),aC(41,`t`),vd()()()),e&2){let n=o;hD(3),ey(lC(4,13,`settings.forge`)),hD(3),bd(` `,n.forge_name,` `),hD(2),bd(`(`,n.forge_id,`)`),hD(3),ey(lC(12,15,`settings.cli`)),hD(4),ey(n.cli),hD(3),ey(lC(19,17,`settings.version`)),hD(3),ey(n.forge_version),hD(3),ey(lC(25,19,`settings.portalVersion`)),hD(3),ey(n.portal_version),hD(3),ey(lC(31,21,`settings.federated`)),hD(3),ey(lC(34,23,n.federated?`state.yes`:`state.no`)),hD(4),ey(lC(38,25,`dashboard.workspace`)),hD(3),ey(n.workspace?.root??lC(41,27,`dashboard.noWorkspace`))}}function ne(e,o){e&1&&(da(0,`div`,10),Sa(1,`ui-state-badge`,17),da(2,`span`),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`empty.noData.hint`)))}function ae(e,o){if(e&1&&(da(0,`span`),qS(1),aC(2,`t`),vd()),e&2){let n=SS(2);hD(),bd(` · `,uC(2,1,`common.updatedAt`,rC(4,te,n.stamp(o))))}}function oe(e,o){if(e&1&&(da(0,`span`,20),qS(1),vd()),e&2){let n=SS();hD(),ey(n.updated_at)}}function le(e,o){if(e&1&&(da(0,`small`,20),qS(1),vd()),e&2){let n=SS().$implicit;hD(),ey(n.detail)}}function de(e,o){if(e&1&&(da(0,`li`),Sa(1,`ui-state-badge`,22),dS(2,le,2,1,`small`,20),vd()),e&2){let n=o.$implicit;hD(),qm(`state`,n.state||`UNVERIFIED`)(`labelOverride`,n.id),hD(),hS(n.detail?2:-1)}}function re(e,o){if(e&1&&(da(0,`ul`,21),mS(1,de,3,3,`li`,null,w),vd()),e&2){let n=SS();hD(),yS(n.checks)}}function pe(e,o){if(e&1&&(da(0,`p`,18),Sa(1,`ui-state-badge`,19),da(2,`span`,20),qS(3),aC(4,`t`),aC(5,`t`),vd(),dS(6,oe,2,1,`span`,20),vd(),dS(7,re,3,0,`ul`,21)),e&2){let n=o;hD(),qm(`state`,n.state||`UNVERIFIED`),hD(2),ty(``,lC(4,5,`dashboard.profile`),`: `,n.profile??lC(5,7,`state.none`)),hD(3),hS(n.updated_at?6:-1),hD(),hS(n.checks.length?7:-1)}}function ce(e,o){e&1&&(da(0,`div`,10),Sa(1,`ui-state-badge`,17),da(2,`span`),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`empty.noData.hint`)))}function se(e,o){if(e&1&&(da(0,`span`,23)(1,`span`,24),qS(2),vd(),Sa(3,`i`,25),vd()),e&2){let n=o.$implicit;Ar(`data-state`,n.state)(`title`,n.state),hD(2),ey(n.id)}}function me(e,o){if(e&1&&(da(0,`div`,14),mS(1,se,4,3,`span`,23,w),vd()),e&2){let n=SS(2);hD(),yS(n.store.capabilities())}}function _e(e,o){e&1&&(Sa(0,`ui-empty`,15),aC(1,`t`)),e&2&&qm(`title`,lC(1,1,`dashboard.none`))}function ge(e,o){if(e&1){let n=DS();da(0,`section`,5)(1,`div`,7)(2,`div`)(3,`h2`),qS(4),aC(5,`t`),vd(),da(6,`p`,8)(7,`code`),qS(8,`bootstrap`),vd()()()(),dS(9,ie,42,29,`dl`,9)(10,ne,5,3,`div`,10),vd(),da(11,`section`,11)(12,`div`,7)(13,`div`)(14,`h2`),qS(15),aC(16,`t`),vd(),da(17,`p`,8)(18,`code`),qS(19,`GET /api/v1/installation/status`),vd(),dS(20,ae,3,6,`span`),vd()(),da(21,`button`,12),aC(22,`t`),Ma(`click`,function(){Hh(n);let v=SS();return Vh(v.store.refreshHealth())}),Sa(23,`ui-icon`,4),vd()(),dS(24,pe,8,9)(25,ce,5,3,`div`,10),vd(),da(26,`section`,13)(27,`div`,7)(28,`div`)(29,`h2`),qS(30),aC(31,`t`),vd(),da(32,`p`,8)(33,`code`),qS(34,`bootstrap`),vd()()()(),dS(35,me,3,0,`div`,14)(36,_e,2,3,`ui-empty`,15),vd(),Sa(37,`inventory-panel`)}if(e&2){let n,c,v,y=SS();hD(4),ey(lC(5,9,`explorer.identity`)),hD(5),hS((n=y.descriptor())?9:10,n),hD(6),ey(lC(16,11,`dashboard.health`)),hD(5),hS((c=y.store.refreshedAt())?20:-1,c),hD(),Ar(`aria-label`,lC(22,13,`state.refresh`)),hD(2),qm(`size`,14),hD(),hS((v=y.health())?24:25,v),hD(6),ey(lC(31,15,`dashboard.capabilities`)),hD(5),hS(y.store.capabilities().length?35:36)}}function ve(e,o){if(e&1&&(da(0,`span`),qS(1),aC(2,`t`),vd()),e&2){let n=SS(2);hD(),bd(` · `,uC(2,1,`common.updatedAt`,rC(4,te,n.stamp(o))))}}function xe(e,o){if(e&1&&(da(0,`code`),qS(1),vd()),e&2){let n=SS();hD(),ey(n.cli)}}function ue(e,o){e&1&&Sa(0,`ui-state-badge`,17)}function ye(e,o){e&1&&Sa(0,`ui-state-badge`,17)}function fe(e,o){e&1&&(da(0,`span`,20),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`state.absent`)))}function Ce(e,o){if(e&1&&(da(0,`code`,16),qS(1),vd()),e&2){let n=SS();Ar(`title`,n.checkout),hD(),ey(n.checkout)}}function be(e,o){e&1&&Sa(0,`ui-state-badge`,17)}function Se(e,o){e&1&&(da(0,`span`,20),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`federation.mcpAbsent`)))}function Ee(e,o){if(e&1&&(da(0,`code`),qS(1),vd()),e&2){let n=o.$implicit;hD(),ey(n)}}function he(e,o){if(e&1&&(da(0,`span`,20),qS(1),aC(2,`t`),vd(),da(3,`span`,30),mS(4,Ee,2,1,`code`,null,gS),vd()),e&2){let n=SS(),c=SS();hD(),ey(lC(2,1,`federation.mcpReady`)),hD(3),yS(c.mcpKeys(n.mcp))}}function Pe(e,o){e&1&&(da(0,`div`,10),Sa(1,`ui-state-badge`,17),vd())}function ke(e,o){e&1&&(da(0,`p`,20),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`state.none`)))}function Ie(e,o){if(e&1&&(da(0,`small`,20),qS(1),vd()),e&2){let n=SS().$implicit;hD(),ey(n.detail)}}function De(e,o){if(e&1&&(da(0,`li`),Sa(1,`ui-state-badge`,22),dS(2,Ie,2,1,`small`,20),vd()),e&2){let n=o.$implicit;hD(),qm(`state`,n.status||`UNVERIFIED`)(`labelOverride`,n.id),hD(),hS(n.detail?2:-1)}}function Fe(e,o){if(e&1&&(da(0,`ul`,21),mS(1,De,3,3,`li`,null,w),vd()),e&2){let n=SS();hD(),yS(n.checks)}}function Te(e,o){e&1&&(da(0,`div`,10),Sa(1,`ui-state-badge`,17),vd())}function Be(e,o){e&1&&(da(0,`p`,20),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`state.none`)))}function we(e,o){if(e&1&&(da(0,`li`),qS(1),vd()),e&2){let n=o.$implicit;hD(),ey(n)}}function Ne(e,o){if(e&1&&(da(0,`ul`,29),mS(1,we,2,1,`li`,null,gS),vd()),e&2){let n=SS();hD(),yS(n.notes)}}function Me(e,o){if(e&1){let n=DS();da(0,`section`,5)(1,`div`,7)(2,`div`)(3,`h2`),qS(4),aC(5,`t`),vd(),da(6,`p`,8)(7,`code`),qS(8,`GET /api/v1/federation`),vd(),dS(9,ve,3,6,`span`),vd()(),da(10,`button`,12),aC(11,`t`),Ma(`click`,function(){Hh(n);let v=SS();return Vh(v.loadSpecialists())}),Sa(12,`ui-icon`,4),vd()(),da(13,`dl`,9)(14,`div`)(15,`dt`),qS(16),aC(17,`t`),vd(),da(18,`dd`)(19,`code`),qS(20),vd()()(),da(21,`div`)(22,`dt`),qS(23),aC(24,`t`),vd(),da(25,`dd`),Sa(26,`ui-state-badge`,19),vd()(),da(27,`div`)(28,`dt`),qS(29),aC(30,`t`),vd(),da(31,`dd`),qS(32),vd()(),da(33,`div`)(34,`dt`),qS(35),aC(36,`t`),vd(),da(37,`dd`),dS(38,xe,2,1,`code`)(39,ue,1,0,`ui-state-badge`,17),vd()()()(),da(40,`section`,26)(41,`div`,7)(42,`div`)(43,`h2`),qS(44),aC(45,`t`),vd(),da(46,`p`,8)(47,`code`),qS(48,`GET /api/v1/federation`),vd()()()(),da(49,`dl`,9)(50,`div`)(51,`dt`),qS(52),aC(53,`t`),vd(),da(54,`dd`),dS(55,ye,1,0,`ui-state-badge`,17)(56,fe,3,3,`span`,20)(57,Ce,2,2,`code`,16),vd()(),da(58,`div`)(59,`dt`),qS(60),aC(61,`t`),vd(),da(62,`dd`),dS(63,be,1,0,`ui-state-badge`,17)(64,Se,3,3,`span`,20)(65,he,6,3),vd()()()(),da(66,`section`,27)(67,`div`,7)(68,`div`)(69,`h2`),qS(70),aC(71,`t`),vd(),da(72,`p`,8)(73,`code`),qS(74,`GET /api/v1/federation`),vd()()()(),dS(75,Pe,2,0,`div`,10)(76,ke,3,3,`p`,20)(77,Fe,3,0,`ul`,21),vd(),da(78,`section`,28)(79,`div`,7)(80,`div`)(81,`h2`),qS(82),aC(83,`t`),vd(),da(84,`p`,8)(85,`code`),qS(86,`GET /api/v1/federation`),vd()()()(),dS(87,Te,2,0,`div`,10)(88,Be,3,3,`p`,20)(89,Ne,3,0,`ul`,29),vd()}if(e&2){let n,c=o,v=SS();hD(4),ey(lC(5,21,`explorer.identity`)),hD(5),hS((n=v.fed.loadedAt())?9:-1,n),hD(),Ar(`aria-label`,lC(11,23,`state.refresh`)),hD(2),qm(`size`,14),hD(4),ey(lC(17,25,`table.id`)),hD(4),ey(c.provider),hD(3),ey(lC(24,27,`skills.state`)),hD(3),qm(`state`,c.state??c.status??`UNVERIFIED`),hD(3),ey(lC(30,29,`settings.version`)),hD(3),ey(v.specialistVersion(c)??`—`),hD(3),ey(lC(36,31,`settings.cli`)),hD(3),hS(c.cli?38:39),hD(6),ey(lC(45,33,`explorer.presence`)),hD(8),ey(lC(53,35,`explorer.checkout`)),hD(3),hS(c.checkout===void 0?55:c.checkout===null?56:57),hD(5),ey(lC(61,37,`mcp.title`)),hD(3),hS(c.mcp===void 0?63:c.mcp===null?64:65),hD(7),ey(lC(71,39,`fdoc.checks`)),hD(5),hS(c.checks===void 0?75:c.checks.length?77:76),hD(7),ey(lC(83,41,`explorer.notes`)),hD(5),hS(c.notes===void 0?87:c.notes.length?89:88)}}function Oe(e,o){if(e&1&&(da(0,`section`,5)(1,`div`,7)(2,`div`)(3,`h2`),qS(4),aC(5,`t`),vd(),da(6,`p`,8)(7,`code`),qS(8,`GET /api/v1/federation`),vd()()()(),da(9,`div`,10),Sa(10,`ui-state-badge`,17),da(11,`span`),qS(12),aC(13,`t`),vd()(),da(14,`dl`,9)(15,`div`)(16,`dt`),qS(17),aC(18,`t`),vd(),da(19,`dd`)(20,`code`),qS(21),vd()()()()()),e&2){let n=SS();hD(4),ey(lC(5,4,`explorer.identity`)),hD(8),ey(lC(13,6,`explorer.registryOnly`)),hD(5),ey(lC(18,8,`table.id`)),hD(4),ey(n.id())}}function Ve(e,o){e&1&&(Sa(0,`ui-empty`,6),aC(1,`t`)),e&2&&qm(`title`,lC(1,1,`explorer.notFound`))}function ze(e,o){if(e&1&&(da(0,`section`,31)(1,`div`,10),Sa(2,`ui-state-badge`,17),da(3,`span`),qS(4),aC(5,`t`),vd()(),da(6,`dl`,9)(7,`div`)(8,`dt`),qS(9),aC(10,`t`),vd(),da(11,`dd`)(12,`code`),qS(13),vd()()()()()),e&2){let n=SS(2);hD(4),ey(lC(5,3,`federation.unavailable`)),hD(5),ey(lC(10,5,`table.id`)),hD(4),ey(n.id())}}function Re(e,o){if(e&1){let n=DS();da(0,`ui-error`,34),Ma(`retry`,function(){Hh(n);let v=SS(2);return Vh(v.loadSpecialists())}),vd()}e&2&&qm(`error`,o)}function Ae(e,o){e&1&&(da(0,`div`,33),aC(1,`t`),Sa(2,`ui-skeleton`,35)(3,`ui-skeleton`,36),vd()),e&2&&(Ar(`aria-label`,lC(1,2,`state.loading`)),hD(3),qm(`lines`,4))}function Ue(e,o){if(e&1&&dS(0,ze,14,7,`section`,31)(1,Re,1,1,`ui-error`,32)(2,Ae,4,4,`div`,33),e&2){let n,c=SS();hS(c.fed.unavailable()?0:(n=c.fed.error())?1:2,n)}}var ee=class e{route=p(Ot);api=p(g);store=p(g$1);id=k(`self`);fed=new l;inventory=LU(F);health=tn(()=>this.store.health());descriptor=tn(()=>this.store.descriptor());view=tn(()=>{let o=this.id(),n=this.descriptor();if(o===`self`||n!==null&&o===n.forge_id)return{kind:`serving`};let c=this.fed.data();if(!c)return{kind:`pending`};let v=c.specialists.find(y=>y.provider===o);return v?{kind:`specialist`,specialist:v}:c.installed_forges.includes(o)?{kind:`registry`}:{kind:`missing`}});specialist=tn(()=>{let o=this.view();return o.kind===`specialist`?o.specialist:null});title=tn(()=>this.view().kind===`serving`?this.descriptor()?.forge_name??this.id():this.id());specialistVersion=f;stamp=y;constructor(){this.route.paramMap.pipe(w$1()).subscribe(o=>{let n=o.get(`id`)??`self`;this.id.set(n),n!==`self`&&n!==this.store.descriptor()?.forge_id&&this.loadSpecialists()})}async loadSpecialists(){await this.fed.load(()=>this.api.federation())}async reload(){this.view().kind===`serving`?await Promise.allSettled([this.store.refreshHealth(),this.inventory()?.loadCounts()??Promise.resolve()]):await this.loadSpecialists()}mcpKeys(o){return Object.keys(o)}static ɵfac=function(n){return new(n||e)};static ɵcmp=ei({type:e,selectors:[[`page-forge-detail`]],viewQuery:function(n,c){n&1&&Km(c.inventory,F,5),n&2&&NS()},decls:15,vars:17,consts:[[`routerLink`,`/forges`,1,`back`],[`name`,`chevron-left`,3,`size`],[3,`title`,`subtitle`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[`data-section`,`identity`,1,`card`],[`icon`,`search`,3,`title`],[1,`sec__head`],[1,`src`],[1,`kv`],[`role`,`note`,1,`unv`],[`data-section`,`health`,1,`card`],[1,`icon-btn`,3,`click`],[`data-section`,`capabilities`,1,`card`],[1,`caps`],[`icon`,`dashboard`,3,`title`],[1,`path`],[`state`,`UNVERIFIED`],[1,`meta`],[3,`state`],[1,`muted`],[1,`checks`],[3,`state`,`labelOverride`],[1,`cap`],[1,`cap__id`],[`aria-hidden`,`true`,1,`cap__dot`],[`data-section`,`presence`,1,`card`],[`data-section`,`checks`,1,`card`],[`data-section`,`notes`,1,`card`],[1,`notes`],[1,`mcp-keys`],[1,`card`],[3,`error`],[`role`,`status`],[3,`retry`,`error`],[`kind`,`card`],[`kind`,`row`,3,`lines`]],template:function(n,c){if(n&1&&(da(0,`a`,0),Sa(1,`ui-icon`,1),qS(2),aC(3,`t`),vd(),da(4,`ui-page-header`,2),aC(5,`t`),da(6,`button`,3),Ma(`click`,function(){return c.reload()}),Sa(7,`ui-icon`,4),qS(8),aC(9,`t`),vd()(),dS(10,ge,38,17),dS(11,Me,90,43),dS(12,Oe,22,10,`section`,5),dS(13,Ve,2,3,`ui-empty`,6),dS(14,Ue,3,1)),n&2){let v;hD(),qm(`size`,14),hD(),bd(``,lC(3,11,`explorer.back`),` `),hD(2),qm(`title`,c.title())(`subtitle`,lC(5,13,`explorer.detail.subtitle`)),hD(3),qm(`size`,15),hD(),bd(` `,lC(9,15,`state.refresh`),` `),hD(2),hS(c.view().kind===`serving`?10:-1),hD(),hS((v=c.specialist())?11:-1,v),hD(),hS(c.view().kind===`registry`?12:-1),hD(),hS(c.view().kind===`missing`?13:-1),hD(),hS(c.view().kind===`pending`?14:-1)}},dependencies:[vc,T,I,_,D,cE,k$1,F,aE],styles:[`.back[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;min-height:24px;margin-bottom:var(--%NS%space-3);padding-block:2px;font-size:var(--%NS%font-sm);font-weight:600;color:var(--%NS%fg-muted);text-decoration:none;transition:color var(--%NS%motion-fast)}.back[_ngcontent-%COMP%]:hover{color:var(--%NS%fg)}.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.sec__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650}.src[_ngcontent-%COMP%]{margin:4px 0 0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.kv[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin:0}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{min-width:9rem;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm)}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;min-width:0}.meta[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.checks[_ngcontent-%COMP%], .notes[_ngcontent-%COMP%]{list-style:none;margin:var(--%NS%space-2) 0 0;padding:0;display:grid;gap:6px}.checks[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}.unv[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-3);margin-bottom:var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.caps[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2)}.mcp-keys[_ngcontent-%COMP%]{display:inline-flex;flex-wrap:wrap;gap:4px;margin-left:6px}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.path[_ngcontent-%COMP%]{display:inline-block;max-width:60ch;overflow-wrap:anywhere}inventory-panel[_ngcontent-%COMP%]{display:block;margin-bottom:var(--%NS%space-4)}`]})};export{ee as ForgeDetailPage}; \ No newline at end of file diff --git a/portal/assets/chunk-N-Oj8_UM.js b/portal/assets/chunk-N-Oj8_UM.js new file mode 100644 index 0000000..38b7121 --- /dev/null +++ b/portal/assets/chunk-N-Oj8_UM.js @@ -0,0 +1,3 @@ +import{i as m,r as l}from"./chunk-BYYLUO5t.js";import{$ as dS,At as qm,Bt as tn,Et as p,F as Sa,H as Xm,Ht as ty,J as aC,Jt as vd,P as SS,Q as cE,Qt as yS,S as Ma,Ut as uC,Y as aE,Z as bd,at as ey,ct as hD,et as da,gt as k,i as Ar,it as ei,jt as rC,kt as qS,ot as gS,p as Hh,s as DS,ut as hS,vt as lC,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{r as g}from"./main-XW2ZMSO5.js";import{a as l$1,s as y}from"./chunk-BNDlNg-C.js";import{t as _}from"./chunk-16deWS0U.js";import{t as D}from"./chunk-Bg2lccQE.js";import{n as k$1,t as I}from"./chunk-DQtX_-dj.js";import{t as T$1}from"./chunk-BGgpmc9t.js";var ee=n=>({time:n});var T=(n,i)=>i.file;var te=(n,i)=>i.forge+`/`+i.scenario_id;var ne=(n,i)=>i.id;function ie(n,i){n&1&&(da(0,`section`,3),Sa(1,`ui-state-badge`,6),da(2,`span`,7),qS(3),aC(4,`t`),vd()()),n&2&&(hD(3),ey(lC(4,1,`lab.unavailable`)))}function ae(n,i){if(n&1){let e=DS();da(0,`ui-error`,8),Ma(`retry`,function(){Hh(e);let c=SS();return Vh(c.load())}),vd()}n&2&&qm(`error`,i)}function oe(n,i){n&1&&(da(0,`section`,5),Sa(1,`ui-skeleton`,9),vd()),n&2&&(hD(),qm(`lines`,3))}function re(n,i){if(n&1&&(da(0,`span`),qS(1),vd()),n&2){let e=SS();hD(),bd(` · `,e.dir)}}function le(n,i){if(n&1&&(da(0,`span`),qS(1),aC(2,`t`),vd()),n&2){let e=SS(2);hD(),bd(` · `,uC(2,1,`common.updatedAt`,rC(4,ee,e.stamp(i))))}}function ce(n,i){n&1&&(Sa(0,`ui-empty`,11),aC(1,`t`),aC(2,`t`)),n&2&&qm(`title`,lC(1,2,`lab.empty.title`))(`hint`,lC(2,4,`lab.empty.subtitle`))}function de(n,i){if(n&1&&(da(0,`option`,17),qS(1),vd()),n&2){let e=i.$implicit;qm(`value`,e.file),hD(),ey(e.file)}}function pe(n,i){if(n&1&&(da(0,`option`,17),qS(1),vd()),n&2){let e=i.$implicit;qm(`value`,e.file),hD(),ey(e.file)}}function se(n,i){if(n&1){let e=DS();da(0,`tr`)(1,`td`)(2,`code`),qS(3),vd()(),da(4,`td`),qS(5),vd(),da(6,`td`),qS(7),vd(),da(8,`td`,31),qS(9),vd(),da(10,`td`,32),qS(11),vd(),da(12,`td`),qS(13),vd(),da(14,`td`)(15,`button`,33),Ma(`click`,function(){let c=Hh(e).$implicit,_=SS(3);return Vh(_.exportJson(c))}),qS(16),aC(17,`t`),vd()()()}if(n&2){let e=i.$implicit,o=SS(3);Xm(`sel`,e.file===o.runA()),hD(3),ey(e.file),hD(2),ey(e.forges.length),hD(2),ey(o.countOf(e,null)),hD(2),ey(o.countOf(e,`pass`)),hD(2),ey(o.countOf(e,`fail`)),hD(2),ey(o.countOf(e,`skipped`)),hD(3),bd(` `,lC(17,9,`lab.export.json`),` `)}}function me(n,i){if(n&1){let e=DS();da(0,`button`,25),Ma(`click`,function(){let c=Hh(e).$implicit,_=SS(3);return Vh(_.forge.set(c))}),qS(1),vd()}if(n&2){let e=i.$implicit,o=SS(3);Xm(`on`,o.forge()===e),hD(),bd(` `,e,` `)}}function _e(n,i){if(n&1&&(da(0,`span`,36),qS(1),vd()),n&2){let e=i.$implicit,o=SS().$implicit,c=SS(3);Ar(`title`,e),hD(),ty(` `,e,`=`,c.metricText(o,e),` `)}}function ue(n,i){if(n&1&&(da(0,`tr`)(1,`td`)(2,`code`),qS(3),vd()(),da(4,`td`),qS(5),vd(),da(6,`td`),Sa(7,`ui-state-badge`,34),vd(),da(8,`td`),qS(9),vd(),da(10,`td`,35),mS(11,_e,2,3,`span`,36,gS),vd(),da(13,`td`,7),qS(14),vd()()),n&2){let e=i.$implicit,o=SS(3);hD(3),ey(e.forge),hD(2),ey(e.scenario_id),hD(2),qm(`state`,o.badgeFor(e.verdict)),hD(2),ey(e.duration_ms!=null?e.duration_ms+`ms`:`—`),hD(2),yS(o.metricKeys(e)),hD(3),ey(e.detail||`—`)}}function xe(n,i){if(n&1&&(da(0,`tr`)(1,`td`)(2,`code`),qS(3),vd(),qS(4),vd(),da(5,`td`),Sa(6,`ui-state-badge`,34),vd(),da(7,`td`),Sa(8,`ui-state-badge`,34),vd()()),n&2){let e=i.$implicit,o=SS(4);hD(3),ey(e.forge),hD(),bd(` `,e.id,` `),hD(2),qm(`state`,o.badgeFor(e.a)),hD(2),qm(`state`,o.badgeFor(e.b))}}function fe(n,i){if(n&1){let e=DS();da(0,`section`,28)(1,`div`,13)(2,`h2`),Sa(3,`ui-icon`,37),qS(4),aC(5,`t`),vd(),da(6,`button`,33),Ma(`click`,function(){Hh(e);let c=SS(3);return Vh(c.exportComparisonMd())}),qS(7),aC(8,`t`),vd()(),da(9,`table`,19)(10,`thead`)(11,`tr`)(12,`th`,20),qS(13),aC(14,`t`),vd(),da(15,`th`,20),qS(16),vd(),da(17,`th`,20),qS(18),vd()()(),da(19,`tbody`),mS(20,xe,9,4,`tr`,null,ne),vd()()()}if(n&2){let e=SS(3);hD(3),qm(`size`,15),hD(),ey(lC(5,6,`lab.compare.title`)),hD(3),bd(` `,lC(8,8,`lab.export.md`),` `),hD(6),ey(lC(14,10,`lab.col.scenario`)),hD(3),ey(e.runA()),hD(2),ey(e.runB()),hD(2),yS(e.comparison())}}function be(n,i){if(n&1){let e=DS();da(0,`details`,39)(1,`summary`)(2,`code`),qS(3),vd(),da(4,`button`,33),Ma(`click`,function(c){let _=Hh(e).$implicit;return SS(4).exportReport(_.file,_.content),Vh(c.preventDefault())}),qS(5),aC(6,`t`),vd()(),da(7,`pre`,40),qS(8),vd()()}if(n&2){let e=i.$implicit;hD(3),ey(e.file),hD(2),bd(` `,lC(6,3,`lab.export.md`),` `),hD(3),ey(e.content)}}function ge(n,i){if(n&1&&(da(0,`section`,29)(1,`div`,13)(2,`h2`),Sa(3,`ui-icon`,38),qS(4),aC(5,`t`),vd()(),mS(6,be,9,5,`details`,39,T),vd()),n&2){let e=SS(2);hD(3),qm(`size`,15),hD(),ey(lC(5,2,`lab.reports`)),hD(2),yS(e.reports)}}function ye(n,i){if(n&1&&(da(0,`p`,7),qS(1),vd()),n&2){let e=i.$implicit;hD(),ey(e)}}function ve(n,i){if(n&1&&(da(0,`section`,30)(1,`h2`),qS(2),aC(3,`t`),vd(),mS(4,ye,2,1,`p`,7,gS),vd()),n&2){let e=SS(2);hD(2),ey(lC(3,1,`lab.notes`)),hD(2),yS(e.notes)}}function Ce(n,i){if(n&1){let e=DS();da(0,`section`,12)(1,`div`,13)(2,`h2`),Sa(3,`ui-icon`,14),qS(4),aC(5,`t`),vd(),da(6,`div`,15)(7,`label`),qS(8),aC(9,`t`),da(10,`select`,16),Ma(`change`,function(c){Hh(e);let _=SS(2);return Vh(_.runA.set(c.target.value))}),mS(11,de,2,2,`option`,17,T),vd()(),da(13,`label`),qS(14),aC(15,`t`),da(16,`select`,16),Ma(`change`,function(c){Hh(e);let _=SS(2);return Vh(_.runB.set(c.target.value))}),da(17,`option`,18),qS(18,`—`),vd(),mS(19,pe,2,2,`option`,17,T),vd()()()(),da(21,`table`,19)(22,`thead`)(23,`tr`)(24,`th`,20),qS(25),aC(26,`t`),vd(),da(27,`th`,20),qS(28),aC(29,`t`),vd(),da(30,`th`,20),qS(31),aC(32,`t`),vd(),da(33,`th`,20),qS(34),aC(35,`t`),vd(),da(36,`th`,20),qS(37),aC(38,`t`),vd(),da(39,`th`,20),qS(40),aC(41,`t`),vd(),Sa(42,`th`,20),vd()(),da(43,`tbody`),mS(44,se,18,11,`tr`,21,T),vd()()(),da(46,`section`,22)(47,`div`,13)(48,`h2`),Sa(49,`ui-icon`,23),qS(50),aC(51,`t`),vd(),da(52,`div`,24)(53,`button`,25),Ma(`click`,function(){Hh(e);let c=SS(2);return Vh(c.forge.set(``))}),qS(54),aC(55,`t`),vd(),mS(56,me,2,3,`button`,26,gS),vd()(),da(58,`table`,27)(59,`thead`)(60,`tr`)(61,`th`,20),qS(62),aC(63,`t`),vd(),da(64,`th`,20),qS(65),aC(66,`t`),vd(),da(67,`th`,20),qS(68),aC(69,`t`),vd(),da(70,`th`,20),qS(71),aC(72,`t`),vd(),da(73,`th`,20),qS(74),aC(75,`t`),vd(),da(76,`th`,20),qS(77),aC(78,`t`),vd()()(),da(79,`tbody`),mS(80,ue,15,5,`tr`,null,te),vd()()(),dS(82,fe,22,12,`section`,28),dS(83,ge,8,4,`section`,29),dS(84,ve,6,3,`section`,30)}if(n&2){let e=SS(),o=SS();hD(3),qm(`size`,15),hD(),ey(lC(5,26,`lab.runs`)),hD(4),bd(``,lC(9,28,`lab.compare.a`),` `),hD(2),qm(`value`,o.runA()),hD(),yS(e.runs),hD(3),bd(``,lC(15,30,`lab.compare.b`),` `),hD(2),qm(`value`,o.runB()),hD(3),yS(e.runs),hD(6),ey(lC(26,32,`lab.col.file`)),hD(3),ey(lC(29,34,`lab.col.forges`)),hD(3),ey(lC(32,36,`lab.col.scenarios`)),hD(3),ey(lC(35,38,`lab.col.pass`)),hD(3),ey(lC(38,40,`lab.col.fail`)),hD(3),ey(lC(41,42,`lab.col.skipped`)),hD(4),yS(e.runs),hD(5),qm(`size`,15),hD(),ey(lC(51,44,`lab.catalog`)),hD(3),Xm(`on`,!o.forge()),hD(),bd(` `,lC(55,46,`lab.filter.all`),` `),hD(2),yS(o.forgeNames()),hD(6),ey(lC(63,48,`lab.col.forge`)),hD(3),ey(lC(66,50,`lab.col.scenario`)),hD(3),ey(lC(69,52,`lab.col.verdict`)),hD(3),ey(lC(72,54,`lab.col.duration`)),hD(3),ey(lC(75,56,`lab.col.metrics`)),hD(3),ey(lC(78,58,`lab.col.detail`)),hD(3),yS(o.scenarioRows()),hD(2),hS(o.comparison().length?82:-1),hD(),hS(e.reports.length?83:-1),hD(),hS(e.notes.length?84:-1)}}function Se(n,i){if(n&1&&(da(0,`p`,10)(1,`code`),qS(2,`GET /api/v1/lab`),vd(),dS(3,re,2,1,`span`),dS(4,le,3,6,`span`),vd(),dS(5,ce,3,6,`ui-empty`,11)(6,Ce,85,60)),n&2){let e,o=i,c=SS();hD(3),hS(o.dir?3:-1),hD(),hS((e=c.src.loadedAt())?4:-1,e),hD(),hS(o.runs.length?6:5)}}var Z=class n{api=p(g);src=new l$1;data=tn(()=>this.src.data());forge=k(``);runA=k(``);runB=k(``);ngOnInit(){this.load()}async load(){await this.src.load(()=>this.api.lab())}forgeNames(){let i=this.data();if(!i)return[];let e=new Set;for(let o of i.runs)for(let c of o.forges)c.forge&&e.add(c.forge);return[...e].sort()}scenarioRows(){let i=this.data(),e=he(this,`a`),o=[],c=this.runA()||e;for(let _ of i?.runs??[])if(!(c&&_.file!==c)){for(let f of _.forges)if(!(this.forge()&&f.forge!==this.forge()))for(let P of f.results??[])o.push(m(l({},P),{forge:f.forge??`?`,runFile:_.file}))}return o}countOf(i,e){let o=0;for(let c of i.forges)for(let _ of c.results??[])(e===null||_.verdict===e)&&o++;return o}comparison(){let i=this.data(),e=[];if(!i||!this.runA()||!this.runB()||this.runA()===this.runB())return e;let o=f=>{let P=new Map,O=i.runs.find(I=>I.file===f);for(let I of O?.forges??[])for(let M of I.results??[])P.set(`${I.forge}|${M.scenario_id}`,M.verdict);return P},c=o(this.runA()),_=o(this.runB());for(let f of new Set([...c.keys(),..._.keys()])){let[P,O]=f.split(`|`);e.push({forge:P,id:O,a:c.get(f)??`absent`,b:_.get(f)??`absent`})}return e.sort((f,P)=>f.id.localeCompare(P.id))}metricKeys(i){return Object.keys(i.metrics??{})}metricText(i,e){let o=i.metrics?.[e];return!o||o.state!==`measured`||o.value===null?`—`:`${o.value}${o.unit&&o.unit!==`ratio`?o.unit:``}`}badgeFor(i){return i===`pass`?`PASS`:i===`fail`?`FAIL`:i===`not_applicable`?`not_applicable`:`SKIPPED`}exportJson(i){let e=this.data()?.runs.find(o=>o.file===i.file);e&&this.download(i.file.replace(/\.jsonl$/,`.json`),JSON.stringify(e,null,2),`application/json`)}exportReport(i,e){this.download(i,e,`text/markdown`)}exportComparisonMd(){let i=[`# Lab comparison ${this.runA()} vs ${this.runB()}`,``,`| scenario | A | B |`,`|---|---|---|`];for(let e of this.comparison())i.push(`| ${e.forge}/${e.id} | ${e.a} | ${e.b} |`);this.download(`lab-compare-${this.runA()}-vs-${this.runB()}.md`,i.join(` +`)+` +`,`text/markdown`)}download(i,e,o){let c=document.createElement(`a`);c.href=URL.createObjectURL(new Blob([e],{type:o})),c.download=i,c.click(),URL.revokeObjectURL(c.href)}stamp=y;static ɵfac=function(e){return new(e||n)};static ɵcmp=ei({type:n,selectors:[[`page-lab`]],decls:11,vars:15,consts:[[3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[`data-section`,`unavailable`,`role`,`note`,1,`card`,`unv`],[3,`error`],[`role`,`status`,1,`card`],[`state`,`UNVERIFIED`],[1,`muted`],[3,`retry`,`error`],[`kind`,`row`,3,`lines`],[1,`src`],[`icon`,`pulse`,`data-section`,`empty`,3,`title`,`hint`],[`data-section`,`runs`,1,`card`],[1,`sec__head`],[`name`,`history`,3,`size`],[1,`row`],[3,`change`,`value`],[3,`value`],[`value`,``],[1,`tbl`],[`scope`,`col`],[3,`sel`],[`data-section`,`catalog`,1,`card`],[`name`,`compass`,3,`size`],[1,`chips`],[1,`chip`,3,`click`],[1,`chip`,3,`on`],[`data-table`,`scenarios`,1,`tbl`],[`data-section`,`compare`,1,`card`],[`data-section`,`reports`,1,`card`],[`data-section`,`notes`,1,`card`],[1,`ok`],[1,`bad`],[1,`btn`,`sm`,3,`click`],[3,`state`],[1,`metrics`],[1,`metric`],[`name`,`graph`,3,`size`],[`name`,`tasks`,3,`size`],[1,`rep`],[1,`rep__body`]],template:function(e,o){if(e&1&&(da(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),da(3,`button`,1),Ma(`click`,function(){return o.load()}),Sa(4,`ui-icon`,2),qS(5),aC(6,`t`),vd()(),dS(7,ie,5,3,`section`,3),dS(8,ae,1,1,`ui-error`,4),dS(9,oe,2,1,`section`,5),dS(10,Se,7,3)),e&2){let c,_;qm(`title`,lC(1,9,`lab.title`))(`subtitle`,lC(2,11,`lab.subtitle`)),hD(3),qm(`disabled`,o.src.loading()),hD(),qm(`size`,15),hD(),bd(` `,lC(6,13,`state.refresh`),` `),hD(2),hS(o.src.unavailable()?7:-1),hD(),hS((c=o.src.error())?8:-1,c),hD(),hS(o.src.loading()&&!o.data()?9:-1),hD(),hS((_=o.data())?10:-1,_)}},dependencies:[T$1,I,_,D,cE,k$1,aE],styles:[`.unv[_ngcontent-%COMP%]{display:flex;gap:10px;align-items:center}.src[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.sec__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px}.row[_ngcontent-%COMP%]{display:flex;gap:12px;align-items:center}.chips[_ngcontent-%COMP%]{display:flex;gap:6px;flex-wrap:wrap}.chip[_ngcontent-%COMP%]{padding:3px 10px;border-radius:99px;border:1px solid var(--%NS%border);background:none;cursor:pointer}.chip.on[_ngcontent-%COMP%]{background:var(--%NS%accent-fill);color:var(--%NS%accent-fg)}.tbl[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;font-size:var(--%NS%font-sm)}.tbl[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .tbl[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{text-align:left;padding:6px 8px;border-bottom:1px solid var(--%NS%border)}.ok[_ngcontent-%COMP%]{color:var(--%NS%ok)}.bad[_ngcontent-%COMP%]{color:var(--%NS%error)}.sel[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--%NS%accent) 10%,transparent)}.metrics[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:4px;max-width:420px}.metric[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);padding:1px 6px;border:1px solid var(--%NS%border);border-radius:4px}.rep__body[_ngcontent-%COMP%]{max-height:340px;overflow:auto;font-size:var(--%NS%font-xs);white-space:pre-wrap}select[_ngcontent-%COMP%]{margin-left:6px}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}`]})};function he(n,i){let e=n.data();return e?.runs.length?e.runs[e.runs.length-1].file:``}export{Z as LabPage}; \ No newline at end of file diff --git a/portal/assets/chunk-NOjQgxo7.js b/portal/assets/chunk-NOjQgxo7.js new file mode 100644 index 0000000..1ed669a --- /dev/null +++ b/portal/assets/chunk-NOjQgxo7.js @@ -0,0 +1 @@ +import{$ as dS,At as qm,B as Wm,Dt as pS,E as Na,Et as p,F as Sa,J as aC,Jt as vd,P as SS,Q as cE,Qt as yS,S as Ma,Y as aE,Z as bd,at as ey,ct as hD,et as da,gt as k,i as Ar,it as ei,kt as qS,lt as hE,p as Hh,s as DS,ut as hS,v as KS,vt as lC,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{i as n,r as g,t as g$1}from"./main-XW2ZMSO5.js";import{t as D}from"./chunk-Bg2lccQE.js";import{n as k$1,t as I}from"./chunk-DQtX_-dj.js";import{t as T}from"./chunk-BGgpmc9t.js";var O=(o,p)=>p.id;var J=(o,p)=>p.provider;function K(o,p){o&1&&(da(0,`section`,3),Sa(1,`ui-skeleton`,8)(2,`ui-skeleton`,9),vd()),o&2&&(hD(),qm(`lines`,2))}function L(o,p){if(o&1){let t=DS();da(0,`label`,20)(1,`input`,30),Ma(`change`,function(){let s=Hh(t).$implicit,_=SS(2);return Vh(_.scope.set(s.id))}),vd(),da(2,`span`)(3,`strong`),qS(4),aC(5,`t`),vd(),da(6,`small`),qS(7),aC(8,`t`),vd()()()}if(o&2){let t=p.$implicit,c=SS(2);Ar(`data-active`,c.scope()===t.id||null),hD(),qm(`value`,t.id)(`checked`,c.scope()===t.id),hD(3),ey(lC(5,5,t.label)),hD(3),ey(lC(8,7,t.hint))}}function Q(o,p){if(o&1){let t=DS();da(0,`label`,20)(1,`input`,31),Ma(`change`,function(){let s=Hh(t).$implicit,_=SS(2);return Vh(_.host.set(s.id))}),vd(),da(2,`span`)(3,`strong`),qS(4),aC(5,`t`),vd(),da(6,`small`),qS(7),aC(8,`t`),vd()()()}if(o&2){let t=p.$implicit,c=SS(2);Ar(`data-active`,c.host()===t.id||null),hD(),qm(`value`,t.id)(`checked`,c.host()===t.id),hD(3),ey(lC(5,5,t.label)),hD(3),ey(lC(8,7,t.hint))}}function W(o,p){if(o&1){let t=DS();da(0,`label`,20)(1,`input`,32),Ma(`change`,function(){let s=Hh(t).$implicit,_=SS(2);return Vh(_.profile.set(s.id))}),vd(),da(2,`span`)(3,`strong`),qS(4),aC(5,`t`),vd(),da(6,`small`),qS(7),aC(8,`t`),vd()()()}if(o&2){let t=p.$implicit,c=SS(2);Ar(`data-active`,c.profile()===t.id||null),hD(),qm(`value`,t.id)(`checked`,c.profile()===t.id),hD(3),ey(lC(5,5,t.label)),hD(3),ey(lC(8,7,t.hint))}}function X(o,p){if(o&1){let t=DS();da(0,`label`,20)(1,`input`,33),Ma(`change`,function(){let s=Hh(t).$implicit,_=SS(2);return Vh(_.gatewayProfile.set(s.id))}),vd(),da(2,`span`)(3,`strong`),qS(4),aC(5,`t`),vd(),da(6,`small`),qS(7),aC(8,`t`),vd()()()}if(o&2){let t=p.$implicit,c=SS(2);Ar(`data-active`,c.gatewayProfile()===t.id||null),hD(),qm(`value`,t.id)(`checked`,c.gatewayProfile()===t.id),hD(3),ey(lC(5,5,t.label)),hD(3),ey(lC(8,7,t.hint))}}function Y(o,p){if(o&1){let t=DS();da(0,`label`,22)(1,`input`,34),Ma(`change`,function(){let s=Hh(t).$implicit,_=SS(2);return Vh(_.toggle(s.id))}),vd(),da(2,`span`)(3,`strong`),qS(4),aC(5,`t`),vd(),da(6,`small`),qS(7),aC(8,`t`),vd()()()}if(o&2){let t=p.$implicit,c=SS(2);Ar(`data-active`,c.selected().has(t.id)||null),hD(),qm(`checked`,c.selected().has(t.id)),hD(3),ey(lC(5,4,t.label)),hD(3),ey(lC(8,6,t.hint))}}function Z(o,p){if(o&1&&(da(0,`small`),qS(1),vd()),o&2){let t=SS().$implicit;hD(),ey(t.notes[0])}}function ee(o,p){if(o&1&&(da(0,`li`,35)(1,`div`,36)(2,`span`,37),Sa(3,`ui-icon`,38),vd(),da(4,`div`)(5,`strong`),qS(6),vd(),da(7,`small`),qS(8),aC(9,`t`),vd()()(),Sa(10,`ui-state-badge`,39),da(11,`div`,40)(12,`span`),qS(13),aC(14,`t`),aC(15,`t`),vd(),dS(16,Z,2,1,`small`),vd()()),o&2){let t=p.$implicit;hD(3),qm(`size`,13),hD(3),ey(t.provider),hD(2),ey(t.cli||t.checkout||lC(9,7,`state.unknown`)),hD(2),qm(`state`,t.state||t.status||`unknown`),hD(2),Ar(`data-present`,t.mcp?`true`:null),hD(),ey(t.mcp?lC(14,9,`federation.mcpReady`):lC(15,11,`federation.mcpAbsent`)),hD(3),hS(t.notes?.length?16:-1)}}function te(o,p){if(o&1&&(da(0,`ul`,27),mS(1,ee,17,13,`li`,35,J),vd()),o&2){let t=SS();hD(),yS(t.specialists)}}function ie(o,p){o&1&&(da(0,`p`,28),qS(1),aC(2,`t`),vd()),o&2&&(hD(),ey(lC(2,1,`federation.empty`)))}function ne(o,p){if(o&1){let t=DS();da(0,`section`,10),aC(1,`t`),da(2,`div`,11)(3,`span`,12),qS(4),vd(),da(5,`span`,13),qS(6),aC(7,`t`),vd()(),da(8,`div`,11)(9,`span`,12),qS(10),vd(),da(11,`span`,13),qS(12),aC(13,`t`),vd()(),da(14,`div`,11)(15,`span`,12),qS(16),vd(),da(17,`span`,13),qS(18),aC(19,`t`),vd()(),da(20,`div`,11)(21,`span`,12),qS(22),vd(),da(23,`span`,13),qS(24),aC(25,`t`),vd()()(),da(26,`div`,14)(27,`section`,15)(28,`div`,16)(29,`div`)(30,`h2`),qS(31),aC(32,`t`),vd(),da(33,`p`,17),qS(34),aC(35,`t`),vd()(),da(36,`span`,18),qS(37),aC(38,`t`),vd()(),da(39,`h3`),qS(40),aC(41,`t`),vd(),da(42,`div`,19),aC(43,`t`),mS(44,L,9,9,`label`,20,O),vd(),da(46,`h3`),qS(47),aC(48,`t`),vd(),da(49,`div`,19),aC(50,`t`),mS(51,Q,9,9,`label`,20,O),vd(),da(53,`h3`),qS(54),aC(55,`t`),vd(),da(56,`div`,19),aC(57,`t`),mS(58,W,9,9,`label`,20,O),vd(),da(60,`h3`),qS(61),aC(62,`t`),vd(),da(63,`div`,19),aC(64,`t`),mS(65,X,9,9,`label`,20,O),vd(),da(67,`h3`),qS(68),aC(69,`t`),vd(),da(70,`div`,21),mS(71,Y,9,8,`label`,22,O),vd(),da(73,`div`,23)(74,`button`,24),Ma(`click`,function(){Hh(t);let s=SS();return Vh(s.plan())}),Sa(75,`ui-icon`,25),qS(76),aC(77,`t`),vd(),da(78,`span`,17),qS(79),aC(80,`t`),vd()()(),da(81,`aside`,26),aC(82,`t`),da(83,`div`,16)(84,`div`)(85,`h2`),qS(86),aC(87,`t`),vd(),da(88,`p`,17),qS(89),aC(90,`t`),vd()()(),dS(91,te,3,0,`ul`,27)(92,ie,3,3,`p`,28),da(93,`p`,29),qS(94),vd()()()}if(o&2){let t=p,c=SS();Wm(`aria-label`,KS(lC(1,39,`federation.summary`))),hD(2),Na(`--%NS%stat-rail`,`var(--accent)`),hD(2),ey(t.summary.catalog),hD(2),ey(lC(7,41,`federation.catalog`)),hD(2),Na(`--%NS%stat-rail`,`var(--ok)`),hD(2),ey(t.summary.installed),hD(2),ey(lC(13,43,`federation.installed`)),hD(2),Na(`--%NS%stat-rail`,`var(--info)`),hD(2),ey(t.summary.with_mcp),hD(2),ey(lC(19,45,`federation.mcp`)),hD(2),Na(`--%NS%stat-rail`,`var(--fg-muted)`),hD(2),ey(t.summary.with_checkout),hD(2),ey(lC(25,47,`federation.checkouts`)),hD(7),ey(lC(32,49,`federation.setup.title`)),hD(3),ey(lC(35,51,`federation.setup.hint`)),hD(3),ey(lC(38,53,`federation.governed`)),hD(3),ey(lC(41,55,`install.scope`)),hD(2),Ar(`aria-label`,lC(43,57,`install.scope`)),hD(2),yS(c.scopes),hD(3),ey(lC(48,59,`federation.host`)),hD(2),Ar(`aria-label`,lC(50,61,`federation.host`)),hD(2),yS(c.hosts),hD(3),ey(lC(55,63,`federation.profile`)),hD(2),Ar(`aria-label`,lC(57,65,`federation.profile`)),hD(2),yS(c.profiles),hD(3),ey(lC(62,67,`federation.executionProfile`)),hD(2),Ar(`aria-label`,lC(64,69,`federation.executionProfile`)),hD(2),yS(c.gatewayProfiles),hD(3),ey(lC(69,71,`federation.components`)),hD(3),yS(c.componentOptions),hD(3),qm(`disabled`,c.busy()),hD(),qm(`size`,15),hD(),bd(` `,lC(77,73,`federation.plan`),` `),hD(3),ey(lC(80,75,`federation.planHint`)),hD(2),Ar(`aria-label`,lC(82,77,`federation.specialists`)),hD(5),ey(lC(87,79,`federation.specialists`)),hD(3),ey(lC(90,81,`federation.specialistsHint`)),hD(2),hS(t.specialists.length?91:92),hD(3),ey(t.registry.path)}}function ae(o,p){if(o&1&&(da(0,`li`)(1,`code`),qS(2),vd(),da(3,`span`),qS(4),vd()()),o&2){let t=p.$implicit;hD(2),ey(t.status),hD(2),ey(t.path)}}function oe(o,p){if(o&1&&(da(0,`ul`,42),mS(1,ae,5,2,`li`,null,pS),vd()),o&2){let t=SS();hD(),yS(t.actions)}}function re(o,p){if(o&1){let t=DS();da(0,`section`,4)(1,`div`,16)(2,`div`)(3,`h2`),qS(4),aC(5,`t`),vd(),da(6,`p`,17),qS(7),aC(8,`t`),vd()(),Sa(9,`ui-state-badge`,39),vd(),da(10,`dl`,41)(11,`div`)(12,`dt`),qS(13),aC(14,`t`),vd(),da(15,`dd`),qS(16),vd()(),da(17,`div`)(18,`dt`),qS(19),aC(20,`t`),vd(),da(21,`dd`),qS(22),vd()(),da(23,`div`)(24,`dt`),qS(25),aC(26,`t`),vd(),da(27,`dd`),qS(28),vd()(),da(29,`div`)(30,`dt`),qS(31),aC(32,`t`),vd(),da(33,`dd`),qS(34),aC(35,`t`),vd()(),da(36,`div`)(37,`dt`),qS(38),aC(39,`t`),vd(),da(40,`dd`),qS(41),vd()()(),dS(42,oe,3,0,`ul`,42),da(43,`div`,23)(44,`button`,24),Ma(`click`,function(){let s=Hh(t),_=SS();return Vh(_.apply(s))}),Sa(45,`ui-icon`,38),qS(46),aC(47,`t`),vd(),da(48,`button`,1),Ma(`click`,function(){Hh(t);let s=SS();return Vh(s.reset())}),qS(49),aC(50,`t`),vd()()()}if(o&2){let t=p,c=SS();hD(4),ey(lC(5,19,`federation.review`)),hD(3),ey(lC(8,21,`federation.reviewHint`)),hD(2),qm(`state`,t.status),hD(4),ey(lC(14,23,`install.scope`)),hD(3),ey(t.plan.scope),hD(3),ey(lC(20,25,`federation.host`)),hD(3),ey(t.plan.host),hD(3),ey(lC(26,27,`federation.profile`)),hD(3),ey(t.plan.profile),hD(3),ey(lC(32,29,`federation.executionProfile`)),hD(3),ey(t.plan.gateway_profile||lC(35,31,`state.unknown`)),hD(4),ey(lC(39,33,`federation.actions`)),hD(3),ey(t.actions.length),hD(),hS(t.actions.length?42:-1),hD(2),qm(`disabled`,c.busy()),hD(),qm(`size`,15),hD(),bd(``,lC(47,35,`federation.apply`),` `),hD(2),qm(`disabled`,c.busy()),hD(),bd(` `,lC(50,37,`state.cancel`),` `)}}function le(o,p){o&1&&(da(0,`section`,5),Sa(1,`div`,43),qS(2),aC(3,`t`),vd()),o&2&&(hD(2),bd(` `,lC(3,1,`federation.running`),` `))}function de(o,p){if(o&1&&(da(0,`section`,6)(1,`h2`),qS(2),aC(3,`t`),vd(),da(4,`p`),Sa(5,`ui-state-badge`,39),da(6,`span`),qS(7),aC(8,`t`),vd()()()),o&2){let t=p;hD(2),ey(lC(3,3,`federation.receipt`)),hD(3),qm(`state`,t.status),hD(2),ey(t.detail||lC(8,5,`federation.receiptHint`))}}function pe(o,p){if(o&1){let t=DS();da(0,`ui-error`,44),Ma(`retry`,function(){Hh(t);let s=SS();return Vh(s.load())}),vd()}if(o&2){let t=SS();qm(`error`,t.error())}}var q=class o{api=p(g);store=p(g$1);snapshot=k(null);planResult=k(null);result=k(null);error=k(null);phase=k(`loading`);busy=k(!0);scope=k(`project`);host=k(`all`);profile=k(`recommended`);gatewayProfile=k(`balanced`);selected=k(new Set([`skills`,`agents`,`mcp`,`tui`,`graph-studio`]));scopes=[{id:`project`,label:`install.scope.project`,hint:`install.scope.project.hint`},{id:`workspace`,label:`install.scope.workspace`,hint:`install.scope.workspace.hint`},{id:`user`,label:`install.scope.user`,hint:`install.scope.user.hint`}];hosts=[{id:`all`,label:`federation.host.all`,hint:`federation.host.allHint`},{id:`none`,label:`federation.host.none`,hint:`federation.host.noneHint`},{id:`claude`,label:`federation.host.claude`,hint:`federation.host.detected`},{id:`devin`,label:`federation.host.devin`,hint:`federation.host.detected`},{id:`codex`,label:`federation.host.codex`,hint:`federation.host.detected`},{id:`copilot`,label:`federation.host.copilot`,hint:`federation.host.detected`}];profiles=[{id:`minimal`,label:`federation.profile.minimal`,hint:`federation.profile.minimalHint`},{id:`recommended`,label:`federation.profile.recommended`,hint:`federation.profile.recommendedHint`},{id:`full`,label:`federation.profile.full`,hint:`federation.profile.fullHint`}];gatewayProfiles=[{id:`economy`,label:`federation.execution.economy`,hint:`federation.execution.economyHint`},{id:`balanced`,label:`federation.execution.balanced`,hint:`federation.execution.balancedHint`},{id:`deep`,label:`federation.execution.deep`,hint:`federation.execution.deepHint`}];componentOptions=[{id:`skills`,label:`federation.component.skills`,hint:`federation.component.skillsHint`},{id:`agents`,label:`federation.component.agents`,hint:`federation.component.agentsHint`},{id:`mcp`,label:`federation.component.mcp`,hint:`federation.component.mcpHint`},{id:`tui`,label:`federation.component.tui`,hint:`federation.component.tuiHint`},{id:`graph-studio`,label:`federation.component.graph`,hint:`federation.component.graphHint`}];constructor(){this.load()}async load(){this.phase.set(`loading`),this.busy.set(!0),this.error.set(null);try{this.snapshot.set(await hE(this.api.federation())),this.phase.set(`idle`)}catch(p){this.fail(p)}finally{this.busy.set(!1)}}toggle(p){let t=new Set(this.selected());t.has(p)?t.delete(p):t.add(p),this.selected.set(t)}async plan(){this.phase.set(`planning`),this.busy.set(!0),this.error.set(null);try{let p={scope:this.scope(),host:this.host(),profile:this.profile(),gateway_profile:this.gatewayProfile(),components:Object.fromEntries([...this.selected()].map(t=>[t,!0]))};this.planResult.set(await hE(this.api.federationPlan(p))),this.phase.set(`review`)}catch(p){this.fail(p)}finally{this.busy.set(!1)}}async apply(p){this.phase.set(`running`),this.busy.set(!0),this.error.set(null);try{this.result.set(await hE(this.api.federationInstallAuto(p.plan,p.plan_token))),await Promise.all([this.load(),this.store.refreshHealth()]),this.phase.set(`done`)}catch(t){this.fail(t)}finally{this.busy.set(!1)}}reset(){this.phase.set(`idle`),this.planResult.set(null),this.result.set(null),this.error.set(null)}fail(p){this.error.set(p instanceof n?p:new n(0)),this.phase.set(`error`)}static ɵfac=function(t){return new(t||o)};static ɵcmp=ei({type:o,selectors:[[`page-federation`]],decls:13,vars:16,consts:[[3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[`role`,`status`,`aria-live`,`polite`,1,`card`,`loading`],[`data-lift`,``,1,`card`,`plan`],[`role`,`status`,`aria-live`,`polite`,1,`card`,`running`],[`data-lift`,``,1,`card`,`receipt`],[3,`error`],[`kind`,`text`,3,`lines`],[`kind`,`card`],[1,`stats`,3,`aria-label`],[1,`stat`],[1,`stat__value`],[1,`stat__label`],[1,`layout`],[1,`card`,`setup-card`],[1,`card__heading`],[1,`muted`],[1,`eyebrow`],[`role`,`radiogroup`,1,`choices`],[1,`choice`],[1,`component-grid`],[1,`component`],[1,`actions-row`],[1,`btn`,`btn--primary`,3,`click`,`disabled`],[`name`,`install`,3,`size`],[1,`card`,`specialist-card`],[1,`specialists`],[1,`empty`],[1,`registry`,`mono`],[`type`,`radio`,`name`,`federation-scope`,3,`change`,`value`,`checked`],[`type`,`radio`,`name`,`federation-host`,3,`change`,`value`,`checked`],[`type`,`radio`,`name`,`federation-profile`,3,`change`,`value`,`checked`],[`type`,`radio`,`name`,`federation-execution-profile`,3,`change`,`value`,`checked`],[`type`,`checkbox`,3,`change`,`checked`],[1,`specialist`],[1,`specialist__main`],[`aria-hidden`,`true`,1,`specialist__mark`],[`name`,`check`,3,`size`],[3,`state`],[1,`specialist__meta`],[1,`review-grid`],[1,`actions`],[`aria-hidden`,`true`,1,`running__spinner`],[3,`retry`,`error`]],template:function(t,c){if(t&1&&(da(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),da(3,`button`,1),Ma(`click`,function(){return c.load()}),Sa(4,`ui-icon`,2),qS(5),aC(6,`t`),vd()(),dS(7,K,3,1,`section`,3)(8,ne,95,83),dS(9,re,51,39,`section`,4),dS(10,le,4,3,`section`,5),dS(11,de,9,7,`section`,6),dS(12,pe,1,1,`ui-error`,7)),t&2){let s,_,F;qm(`title`,lC(1,10,`federation.title`))(`subtitle`,lC(2,12,`federation.subtitle`)),hD(3),qm(`disabled`,c.busy()),hD(),qm(`size`,15),hD(),bd(` `,lC(6,14,`state.refresh`),` `),hD(2),hS(c.phase()===`loading`&&!c.snapshot()?7:(s=c.snapshot())?8:-1,s),hD(2),hS((_=c.phase()===`review`&&c.planResult())?9:-1,_),hD(),hS(c.phase()===`running`?10:-1),hD(),hS((F=c.phase()===`done`&&c.result())?11:-1,F),hD(),hS(c.phase()===`error`?12:-1)}},dependencies:[T,I,D,k$1,cE,aE],styles:[`.stats[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:var(--%NS%space-4);margin-bottom:var(--%NS%space-5)}.layout[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:var(--%NS%space-4);align-items:start}.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.card__heading[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:var(--%NS%space-4);align-items:flex-start}.card[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-lg);font-weight:650}.card[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:var(--%NS%space-5) 0 var(--%NS%space-2);font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted);text-transform:uppercase;letter-spacing:.06em}.card[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]:first-of-type{margin-top:var(--%NS%space-4)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.eyebrow[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);background:var(--%NS%accent-bg);border-radius:var(--%NS%radius-pill);padding:4px 9px;font-size:var(--%NS%font-xs);font-weight:700;white-space:nowrap}.choices[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:var(--%NS%space-2)}.choice[_ngcontent-%COMP%], .component[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-2);align-items:flex-start;padding:var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);cursor:pointer;transition:border-color var(--%NS%motion-fast),background var(--%NS%motion-fast)}.choice[_ngcontent-%COMP%]:hover, .component[_ngcontent-%COMP%]:hover, .choice[data-active][_ngcontent-%COMP%], .component[data-active][_ngcontent-%COMP%]{border-color:var(--%NS%accent-ink);background:var(--%NS%accent-bg)}.choice[_ngcontent-%COMP%] input[_ngcontent-%COMP%], .component[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{margin-top:3px;accent-color:var(--%NS%accent-ink);flex:none}.choice[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .component[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:grid;gap:3px}.choice[_ngcontent-%COMP%] small[_ngcontent-%COMP%], .component[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);line-height:1.35}.component-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:var(--%NS%space-2)}.actions-row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-3);align-items:center;margin-top:var(--%NS%space-5)}.specialists[_ngcontent-%COMP%]{list-style:none;padding:0;margin:var(--%NS%space-4) 0;display:grid;gap:var(--%NS%space-2)}.specialist[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px var(--%NS%space-2);padding:var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md)}.specialist__main[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-2);align-items:center;min-width:0}.specialist__main[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:grid;min-width:0}.specialist__main[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.specialist__mark[_ngcontent-%COMP%]{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;color:var(--%NS%ok);background:var(--%NS%ok-bg);flex:none}.specialist__meta[_ngcontent-%COMP%]{grid-column:1/-1;display:flex;gap:var(--%NS%space-2);flex-wrap:wrap;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.specialist__meta[_ngcontent-%COMP%] [data-present][_ngcontent-%COMP%]{color:var(--%NS%ok)}.specialist__meta[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{width:100%;overflow-wrap:anywhere}.registry[_ngcontent-%COMP%]{border-top:1px solid var(--%NS%border);padding-top:var(--%NS%space-3);color:var(--%NS%fg-muted);overflow-wrap:anywhere;font-size:var(--%NS%font-xs)}.review-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--%NS%space-3);margin:var(--%NS%space-4) 0}.review-grid[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:grid;gap:4px;padding:var(--%NS%space-3);background:var(--%NS%bg-sunken);border-radius:var(--%NS%radius-md)}.review-grid[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.review-grid[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;font-weight:650;overflow-wrap:anywhere}.actions[_ngcontent-%COMP%]{display:grid;gap:6px;list-style:none;padding:0;max-height:240px;overflow:auto}.actions[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-2);padding:7px 0;border-bottom:1px solid var(--%NS%border);overflow-wrap:anywhere}.actions[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);flex:none}.running[_ngcontent-%COMP%], .loading[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-3)}.running[_ngcontent-%COMP%]{place-items:center;min-height:100px}.receipt[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}.empty[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);padding:var(--%NS%space-5) 0}@media(max-width:820px){.layout[_ngcontent-%COMP%]{grid-template-columns:1fr}}@media(max-width:520px){.choices[_ngcontent-%COMP%], .component-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}.card__heading[_ngcontent-%COMP%]{display:block}.eyebrow[_ngcontent-%COMP%]{display:inline-block;margin-top:var(--%NS%space-3)}}@media(prefers-reduced-motion:reduce){html:not([data-motion="full"])[_nghost-%COMP%] .choice[_ngcontent-%COMP%], html:not([data-motion="full"]) [_nghost-%COMP%] .choice[_ngcontent-%COMP%], html:not([data-motion="full"])[_nghost-%COMP%] .component[_ngcontent-%COMP%], html:not([data-motion="full"]) [_nghost-%COMP%] .component[_ngcontent-%COMP%]{transition:none}}`]})};export{q as FederationPage}; \ No newline at end of file diff --git a/portal/assets/chunk-NryuIUhX.js b/portal/assets/chunk-NryuIUhX.js deleted file mode 100644 index 5d03944..0000000 --- a/portal/assets/chunk-NryuIUhX.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as da,At as rn,Dt as pS,Et as p,F as Wm,Gt as wS,K as aC,Lt as tn,M as Ta,Mt as sC,N as Uh,P as WS,Q as cE,Tt as oC,X as bS,Xt as yd,Z as ba,ct as gS,ft as hS,gt as k,h as Jm,ht as jh,it as ei,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,xt as nC,yt as mS,zt as uS}from"./chunk-BelLryvf.js";import{r as g}from"./main-A2NKRJGT.js";import{a as l,s as y}from"./chunk-0WpwvubF.js";import{t as _}from"./chunk-BKRLVsID.js";import{t as D}from"./chunk-CiuPOfJ0.js";import{n as k$1,t as I}from"./chunk-D2KAfPv6.js";import{t as T}from"./chunk-BBusSOqc.js";var U=t=>({time:t});var Y=(t,n)=>n.key;function q(t,n){t&1&&(da(0,`section`,5),ba(1,`ui-state-badge`,8),da(2,`span`,9),WS(3),oC(4,`t`),yd()()),t&2&&(hD(3),Jm(sC(4,1,`observe.unavailable`)))}function J(t,n){if(t&1){let e=wS();da(0,`ui-error`,10),Ta(`retry`,function(){jh(e);let c=bS();return Uh(c.load())}),yd()}t&2&&Wm(`error`,n)}function Q(t,n){t&1&&(da(0,`section`,7),oC(1,`t`),ba(2,`ui-skeleton`,11),yd()),t&2&&(Ar(`aria-label`,sC(1,2,`state.loading`)),hD(2),Wm(`lines`,3))}function W(t,n){if(t&1&&(da(0,`span`),WS(1),oC(2,`t`),yd()),t&2){let e=bS(2);hD(),Dd(` · `,aC(2,1,`common.updatedAt`,nC(4,U,e.stamp(n))))}}function X(t,n){if(t&1&&(da(0,`div`,21)(1,`span`,22),WS(2),yd(),da(3,`span`,23),WS(4),yd()()),t&2){let e=n.$implicit;Ar(`data-counter`,e.key),hD(2),Jm(e.value),hD(2),Jm(e.key)}}function Z(t,n){if(t&1&&(da(0,`div`,15),gS(1,X,5,3,`div`,21,Y),yd()),t&2){let e=bS(2);hD(),mS(e.counters())}}function ee(t,n){t&1&&(da(0,`p`,16),WS(1),oC(2,`t`),yd()),t&2&&(hD(),Jm(sC(2,1,`state.none`)))}function te(t,n){t&1&&(da(0,`p`,18),ba(1,`ui-icon`,24),da(2,`span`),WS(3),oC(4,`t`),yd()()),t&2&&(hD(),Wm(`size`,14),hD(2),Jm(sC(4,2,`observe.truncated`)))}function ne(t,n){if(t&1&&(da(0,`option`,29),WS(1),yd()),t&2){let e=n.$implicit,l=bS(3);Wm(`value`,e)(`selected`,l.kindFilter()===e),hD(),Jm(e)}}function ie(t,n){if(t&1&&(da(0,`option`,29),WS(1),yd()),t&2){let e=n.$implicit,l=bS(3);Wm(`value`,e)(`selected`,l.statusFilter()===e),hD(),Jm(e)}}function ae(t,n){if(t&1){let e=wS();da(0,`div`,19)(1,`label`,25)(2,`span`,26),WS(3),oC(4,`t`),yd(),da(5,`select`,27),Ta(`change`,function(c){jh(e);let g=bS(2);return Uh(g.setKind(c))}),da(6,`option`,28),WS(7),oC(8,`t`),yd(),gS(9,ne,2,3,`option`,29,pS),yd()(),da(11,`label`,25)(12,`span`,26),WS(13),oC(14,`t`),yd(),da(15,`select`,30),Ta(`change`,function(c){jh(e);let g=bS(2);return Uh(g.setStatus(c))}),da(16,`option`,28),WS(17),oC(18,`t`),yd(),gS(19,ie,2,3,`option`,29,pS),yd()(),da(21,`label`,25)(22,`span`,26),WS(23),oC(24,`t`),yd(),da(25,`input`,31),oC(26,`t`),Ta(`input`,function(c){jh(e);let g=bS(2);return Uh(g.setCorr(c))}),yd()()()}if(t&2){let e=bS(2);hD(3),Jm(sC(4,9,`observe.filter.kind`)),hD(3),Wm(`selected`,e.kindFilter()===null),hD(),Dd(` `,sC(8,11,`state.all`),` `),hD(2),mS(e.kindOptions()),hD(4),Jm(sC(14,13,`observe.filter.status`)),hD(3),Wm(`selected`,e.statusFilter()===null),hD(),Dd(` `,sC(18,15,`state.all`),` `),hD(2),mS(e.statusOptions()),hD(4),Jm(sC(24,17,`observe.filter.corr`)),hD(2),Wm(`value`,e.corrFilter()),Ar(`aria-label`,sC(26,19,`observe.filter.corr`))}}function re(t,n){if(t&1&&WS(0),t&2){let e=bS().$implicit;Dd(` `,e.duration_ms,` ms `)}}function oe(t,n){t&1&&(da(0,`span`,9),WS(1,`—`),yd())}function le(t,n){if(t&1&&(da(0,`code`,36),WS(1),yd()),t&2){let e=n,l=bS(4);Ar(`title`,e),hD(),Jm(l.short(e))}}function de(t,n){t&1&&(da(0,`span`,9),WS(1,`—`),yd())}function se(t,n){if(t&1&&WS(0),t&2){let e=bS().$implicit;Dd(` `,e.detail,` `)}}function ce(t,n){t&1&&(da(0,`span`,9),WS(1,`—`),yd())}function pe(t,n){if(t&1&&(da(0,`tr`)(1,`td`)(2,`code`),WS(3),yd()(),da(4,`td`,34),WS(5),yd(),da(6,`td`,34),uS(7,re,1,1)(8,oe,2,0,`span`,9),yd(),da(9,`td`),ba(10,`ui-state-badge`,35),yd(),da(11,`td`),WS(12),yd(),da(13,`td`),uS(14,le,2,2,`code`,36)(15,de,2,0,`span`,9),yd(),da(16,`td`),uS(17,se,1,1)(18,ce,2,0,`span`,9),yd()()),t&2){let e,l=n.$implicit,c=bS(3);hD(3),Jm(l.kind),hD(2),Jm(c.fmt(l.at)),hD(2),fS(l.duration_ms!==null?7:8),hD(3),Wm(`state`,c.statusKind(l.status))(`labelOverride`,l.status),hD(2),Jm(l.origin),hD(2),fS((e=l.correlation_id)?14:15,e),hD(3),fS(l.detail?17:18)}}function me(t,n){if(t&1&&(da(0,`div`,20)(1,`table`,32)(2,`thead`)(3,`tr`)(4,`th`,33),WS(5),oC(6,`t`),yd(),da(7,`th`,33),WS(8),oC(9,`t`),yd(),da(10,`th`,33),WS(11),oC(12,`t`),yd(),da(13,`th`,33),WS(14),oC(15,`t`),yd(),da(16,`th`,33),WS(17),oC(18,`t`),yd(),da(19,`th`,33),WS(20),oC(21,`t`),yd(),da(22,`th`,33),WS(23),oC(24,`t`),yd()()(),da(25,`tbody`),gS(26,pe,19,8,`tr`,null,hS),yd()()()),t&2){let e=bS(2);hD(5),Jm(sC(6,7,`observe.col.kind`)),hD(3),Jm(sC(9,9,`observe.col.at`)),hD(3),Jm(sC(12,11,`observe.col.duration`)),hD(3),Jm(sC(15,13,`observe.col.status`)),hD(3),Jm(sC(18,15,`observe.col.origin`)),hD(3),Jm(sC(21,17,`observe.col.correlation`)),hD(3),Jm(sC(24,19,`observe.col.detail`)),hD(3),mS(e.events())}}function _e(t,n){t&1&&(ba(0,`ui-empty`,37),oC(1,`t`)),t&2&&Wm(`title`,sC(1,1,`observe.noMatches`))}function ue(t,n){t&1&&(ba(0,`ui-empty`,38),oC(1,`t`),oC(2,`t`)),t&2&&Wm(`title`,sC(1,2,`observe.empty`))(`hint`,sC(2,4,`observe.empty.hint`))}function ve(t,n){if(t&1&&uS(0,_e,2,3,`ui-empty`,37)(1,ue,3,6,`ui-empty`,38),t&2){let e=bS();fS(e.events.length?0:1)}}function ge(t,n){if(t&1&&(da(0,`section`,12)(1,`div`,13)(2,`div`)(3,`h2`),WS(4),oC(5,`t`),yd(),da(6,`p`,14)(7,`code`),WS(8,`GET /api/v1/metrics`),yd(),uS(9,W,3,6,`span`),yd()()(),uS(10,Z,3,0,`div`,15)(11,ee,3,3,`p`,16),yd(),da(12,`section`,17)(13,`div`,13)(14,`div`)(15,`h2`),WS(16),oC(17,`t`),yd(),da(18,`p`,14)(19,`code`),WS(20,`GET /api/v1/metrics`),yd(),WS(21),oC(22,`t`),yd()()(),uS(23,te,5,4,`p`,18),uS(24,ae,27,21,`div`,19),uS(25,me,28,21,`div`,20)(26,ve,2,1),yd()),t&2){let e,l=n,c=bS();hD(4),Jm(sC(5,8,`observe.counters`)),hD(5),fS((e=c.src.loadedAt())?9:-1,e),hD(),fS(c.counters().length?10:11),hD(6),Jm(sC(17,10,`observe.events`)),hD(5),Dd(` — `,aC(22,12,`observe.generatedAt`,nC(15,U,c.fmt(l.generated_at))),` `),hD(2),fS(l.truncated?23:-1),hD(),fS(l.events.length?24:-1),hD(),fS(c.events().length?25:26)}}var R=class t{api=p(g);cid=rn(``);src=new l;report=tn(()=>this.src.data());kindFilter=k(null);statusFilter=k(null);corrFilter=k(``);counters=tn(()=>Object.entries(this.report()?.counters??{}).map(([n,e])=>({key:n,value:e})).sort((n,e)=>n.key.localeCompare(e.key)));kindOptions=tn(()=>[...new Set((this.report()?.events??[]).map(n=>n.kind))].sort((n,e)=>n.localeCompare(e)));statusOptions=tn(()=>[...new Set((this.report()?.events??[]).map(n=>n.status))].sort((n,e)=>n.localeCompare(e)));events=tn(()=>{let n=this.kindFilter(),e=this.statusFilter(),l=this.corrFilter().trim();return(this.report()?.events??[]).filter(c=>(n===null||c.kind===n)&&(e===null||c.status===e)&&(l===``||(c.correlation_id??``).includes(l))).slice().sort((c,g)=>this.timeOf(g.at)-this.timeOf(c.at))});stamp=y;constructor(){this.load()}ngOnInit(){let n=this.cid();n&&this.corrFilter.set(n)}async load(){await this.src.load(()=>this.api.metrics())}setKind(n){let e=n.target.value;this.kindFilter.set(e===``?null:e)}setStatus(n){let e=n.target.value;this.statusFilter.set(e===``?null:e)}setCorr(n){this.corrFilter.set(n.target.value)}statusKind(n){let e=(n||``).toLowerCase();return[`ok`,`done`,`completed`,`success`,`succeeded`,`pass`,`passed`].includes(e)?`supported`:[`failed`,`fail`,`error`,`refused`,`denied`].includes(e)?`error`:[`skipped`,`cancelled`,`canceled`,`partial`,`degraded`].includes(e)?`warn`:[`running`,`pending`,`started`,`in_progress`,`planning`,`verifying`].includes(e)?`info`:`muted`}timeOf(n){let e=Date.parse(n);return Number.isNaN(e)?Number.NEGATIVE_INFINITY:e}fmt(n){let e=new Date(n);return Number.isNaN(e.getTime())?n:e.toLocaleString()}short(n){return n.length>10?`${n.slice(0,8)}\u2026`:n}static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`page-observe`]],inputs:{cid:[1,`cid`]},decls:16,vars:19,consts:[[3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[`data-section`,`local-only`,`role`,`note`,1,`local`],[`name`,`shield-check`,3,`size`],[`data-section`,`unavailable`,`role`,`note`,1,`card`,`unv`],[3,`error`],[`role`,`status`,1,`card`],[`state`,`UNVERIFIED`],[1,`muted`],[3,`retry`,`error`],[`kind`,`row`,3,`lines`],[`data-section`,`counters`,1,`card`],[1,`sec__head`],[1,`src`],[1,`counters`],[`data-empty`,`counters`,1,`muted`],[`data-section`,`events`,1,`card`],[`data-note`,`truncated`,`role`,`note`,1,`truncated`],[`data-section`,`filters`,1,`filters`],[1,`table-wrap`],[1,`counter`],[1,`counter__value`],[1,`counter__key`],[`name`,`alert`,3,`size`],[1,`filter`],[1,`filter__lbl`],[`data-filter`,`kind`,1,`select`,3,`change`],[`value`,``,3,`selected`],[3,`value`,`selected`],[`data-filter`,`status`,1,`select`,3,`change`],[`type`,`search`,`data-filter`,`correlation`,1,`input`,3,`input`,`value`],[1,`table`],[`scope`,`col`],[1,`nowrap`],[3,`state`,`labelOverride`],[1,`corr`],[`icon`,`search`,`data-empty`,`no-matches`,3,`title`],[`icon`,`inbox`,`data-empty`,`events`,3,`title`,`hint`]],template:function(e,l){if(e&1&&(da(0,`ui-page-header`,0),oC(1,`t`),oC(2,`t`),da(3,`button`,1),Ta(`click`,function(){return l.load()}),ba(4,`ui-icon`,2),WS(5),oC(6,`t`),yd()(),da(7,`p`,3),ba(8,`ui-icon`,4),da(9,`span`),WS(10),oC(11,`t`),yd()(),uS(12,q,5,3,`section`,5),uS(13,J,1,1,`ui-error`,6),uS(14,Q,3,4,`section`,7),uS(15,ge,27,17)),e&2){let c,g;Wm(`title`,sC(1,11,`observe.title`))(`subtitle`,sC(2,13,`observe.subtitle`)),hD(3),Wm(`disabled`,l.src.loading()),hD(),Wm(`size`,15),hD(),Dd(` `,sC(6,15,`state.refresh`),` `),hD(3),Wm(`size`,15),hD(2),Jm(sC(11,17,`observe.localOnly`)),hD(2),fS(l.src.unavailable()?12:-1),hD(),fS((c=l.src.error())?13:-1,c),hD(),fS(l.src.loading()&&!l.report()?14:-1),hD(),fS((g=l.report())?15:-1,g)}},dependencies:[T,I,_,D,cE,k$1,aE],styles:[`.local[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:0 0 var(--%NS%space-4);padding:var(--%NS%space-3);border:1px dashed var(--%NS%border);border-radius:var(--%NS%radius-md);color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm)}.local[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{flex:none}.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.sec__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650}.src[_ngcontent-%COMP%]{margin:4px 0 0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.unv[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.counters[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--%NS%space-3)}.counter[_ngcontent-%COMP%]{display:grid;gap:2px;padding:var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:color-mix(in srgb,var(--%NS%bg-hover) 40%,transparent)}.counter__value[_ngcontent-%COMP%]{font-family:var(--%NS%font-mono);font-size:var(--%NS%font-2xl);font-weight:650}.counter__key[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);overflow-wrap:anywhere}.truncated[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:0 0 var(--%NS%space-3);padding:var(--%NS%space-2) var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm)}.truncated[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%warn);flex:none}.filters[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.filter[_ngcontent-%COMP%]{display:grid;gap:4px;min-width:160px}.filter[_ngcontent-%COMP%] .input[_ngcontent-%COMP%]{min-width:200px}.filter__lbl[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);text-transform:uppercase;letter-spacing:.04em}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.table[_ngcontent-%COMP%]{min-width:820px}.nowrap[_ngcontent-%COMP%]{white-space:nowrap}.corr[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs)}`]})};export{R as ObservePage}; \ No newline at end of file diff --git a/portal/assets/chunk-O1vNs89S.js b/portal/assets/chunk-O1vNs89S.js new file mode 100644 index 0000000..f05d5af --- /dev/null +++ b/portal/assets/chunk-O1vNs89S.js @@ -0,0 +1 @@ +var e={"app.title":`Forge Portal`,"app.tagline":`agentic engineering, simplified`,"nav.dashboard":`Dashboard`,"nav.install":`Installation`,"nav.federation":`Forge family`,"nav.profiles":`Profiles`,"nav.hosts":`AI hosts`,"nav.mcp":`MCP`,"nav.skills":`Skills`,"nav.agents":`Agents`,"nav.tasks":`Tasks`,"nav.graph":`Graph Studio`,"nav.knowledge":`Knowledge`,"nav.settings":`Settings`,"nav.section.overview":`Overview`,"nav.section.explore":`Explore`,"nav.section.operate":`Operate`,"nav.section.analyze":`Analyze`,"nav.section.settings":`Settings`,"nav.primary":`Primary navigation`,"nav.collapse":`Collapse menu`,"nav.expand":`Expand menu`,"nav.shortcut.collapse":`Collapse menu (press [)`,"nav.skip":`Skip to content`,"command.open":`Search actions and pages…`,"command.hint":`Type to search pages, actions and help`,"command.empty":`Nothing found for that search.`,"state.loading":`Loading…`,"state.retry":`Retry`,"state.refresh":`Refresh`,"state.close":`Close`,"state.cancel":`Cancel`,"state.confirm":`Confirm`,"state.apply":`Apply`,"state.copy":`Copy`,"state.copied":`Copied`,"state.open":`Open`,"state.viewDetails":`View details`,"state.enabled":`Enabled`,"state.disabled":`Disabled`,"state.unknown":`Unknown`,"state.unverified":`Unverified`,"state.supported":`Supported`,"state.unsupported":`Unsupported`,"state.notApplicable":`Not applicable`,"state.absent":`Absent`,"state.required":`Required`,"state.optional":`Optional`,"state.yes":`Yes`,"state.no":`No`,"state.none":`None`,"state.all":`All`,"pager.label":`Pagination`,"pager.prev":`Prev`,"pager.next":`Next`,"pager.range":`{from}–{to} of {total}`,"installState.NOT_INSTALLED":`Not installed`,"installState.INSTALLED":`Installed`,"installState.CONFIGURED":`Configured`,"installState.ACTIVE":`Active`,"installState.VERIFIED":`Verified`,"installState.DEGRADED":`Degraded`,"installState.BLOCKED":`Blocked`,"installState.FAILED":`Failed`,"mcpState.NOT_CONFIGURED":`Not configured`,"mcpState.CONFIGURED":`Configured`,"mcpState.STARTING":`Starting`,"mcpState.HANDSHAKE_VERIFIED":`Handshake verified`,"mcpState.TOOLS_DISCOVERED":`Tools discovered`,"mcpState.INVOCATION_VERIFIED":`Invocation verified`,"mcpState.DEGRADED":`Degraded`,"mcpState.FAILED":`Failed`,"dashboard.title":`Dashboard`,"dashboard.subtitle":`A real view of your Forge in this workspace.`,"dashboard.health":`Installation health`,"dashboard.workspace":`Workspace`,"dashboard.noWorkspace":`No workspace open`,"dashboard.profile":`Profile`,"dashboard.host":`AI host`,"dashboard.mcp":`MCP`,"dashboard.skills":`Skills available`,"dashboard.agents":`Agents available`,"dashboard.tasks":`Recent tasks`,"dashboard.findings":`Alerts`,"dashboard.graph":`Graph`,"dashboard.recommended":`Recommended actions`,"dashboard.quickStart":`Getting started`,"dashboard.quickStart.hint":`Complete these steps to start using the Forge with your AI host.`,"dashboard.step.install":`Install the Forge`,"dashboard.step.family":`Prepare the Forge family`,"dashboard.step.host":`Verify an AI host`,"dashboard.step.mcp":`Verify the MCP handshake`,"dashboard.step.task":`Run your first task`,"dashboard.capabilities":`Capabilities`,"dashboard.none":`No data yet — run a verification.`,"dashboard.stat.state":`Install state`,"dashboard.stat.capabilities":`Capabilities ready`,"dashboard.stat.checks":`Checks passing`,"dashboard.stat.portal":`Portal version`,"dashboard.accountEnvironment":`Account environment`,"dashboard.accountEnvironmentHint":`Reusable install paths for this Forge, outside your workspace.`,"dashboard.environmentMissing":`Run install.ps1 or install.sh to publish these paths.`,"environmentState.READY":`Ready`,"environmentState.PARTIAL":`Partial`,"environmentState.MISSING":`Missing`,"environmentState.INVALID":`Invalid`,"environmentState.UNSET":`Not set`,"install.title":`Installation`,"install.subtitle":`Install, repair, verify or remove this Forge — the same service as the CLI, with the same receipts.`,"install.status":`Current state`,"install.portal.installed":`Forge Portal installed`,"install.portal.vendored":`Forge Portal not installed locally`,"install.portal.vendored.hint":`vendored assets only — no local install found`,"install.scope":`Scope`,"install.scope.project":`Current project`,"install.scope.project.hint":`Writes only inside this directory — ideal for trying it out.`,"install.scope.workspace":`Workspace`,"install.scope.workspace.hint":`Applies to the whole detected workspace.`,"install.scope.user":`User`,"install.scope.user.hint":`Available in every project for this user.`,"install.components":`Components`,"install.plan":`Generate plan`,"install.plan.review":`Review plan`,"install.plan.changes":`{count, plural, one{# planned change} other{# planned changes}}`,"install.apply":`Apply installation`,"install.repair":`Repair installation`,"install.uninstall":`Uninstall`,"install.uninstall.confirm":`This removes this Forge's managed files in this scope. Only files recorded in the ledger are removed.`,"install.uninstall.confirmBtn":`Confirm uninstall`,"install.host.all":`All hosts`,"install.host.notDetected":`not detected`,"install.verify":`Verify`,"install.receipt":`Receipt`,"install.running":`Running…`,"install.done":`Done`,"install.refused":`Refused`,"install.hosts":`AI hosts`,"install.hosts.hint":`Choose which hosts to integrate skills, agents and MCP into.`,"install.profile":`Installation profile`,"install.executionProfile":`Execution profile`,"install.summary":`Ready to install`,"install.summary.scope":`Scope`,"install.summary.host":`Host`,"install.summary.profile":`Profile`,"install.summary.executionProfile":`Execution`,"install.summary.components":`Components`,"install.summary.empty":`Select at least one component to generate a plan.`,"install.step.configure":`Configure`,"install.step.plan":`Plan`,"install.step.review":`Review`,"install.step.done":`Receipt`,"install.receipt.status":`Status`,"federation.title":`Forge family`,"federation.subtitle":`See real specialists and prepare the workspace with one approval.`,"federation.summary":`Federation summary`,"federation.catalog":`Catalog specialists`,"federation.installed":`Registered forges`,"federation.mcp":`With declared MCP`,"federation.checkouts":`Local checkouts`,"federation.governed":`Governed plan`,"federation.setup.title":`Prepare the family`,"federation.setup.hint":`Choose once. Each Forge keeps its own installer, ledger and verification.`,"federation.host":`AI hosts`,"federation.host.all":`All hosts`,"federation.host.allHint":`Compatible integrations detected by each Forge.`,"federation.host.none":`No host now`,"federation.host.noneHint":`Keeps host files untouched.`,"federation.host.claude":`Claude`,"federation.host.devin":`Devin`,"federation.host.codex":`Codex`,"federation.host.copilot":`Copilot`,"federation.host.detected":`Each Forge confirms state in its plan.`,"federation.profile":`Install profile`,"federation.profile.minimal":`Economy`,"federation.profile.minimalHint":`Core/MCP; capabilities load on demand.`,"federation.profile.recommended":`Recommended`,"federation.profile.recommendedHint":`Skills, agents, MCP and the complete experience.`,"federation.profile.full":`Full`,"federation.profile.fullHint":`All compatible selected components.`,"federation.executionProfile":`Execution profile`,"federation.execution.economy":`Economy`,"federation.execution.economyHint":`Lower cost and context footprint for routine work.`,"federation.execution.balanced":`Balanced`,"federation.execution.balancedHint":`Default trade-off between capability, speed and cost.`,"federation.execution.deep":`Deep`,"federation.execution.deepHint":`More context and specialist depth for complex work.`,"federation.components":`Optional components`,"federation.component.skills":`Skills`,"federation.component.skillsHint":`Capabilities discovered by the host.`,"federation.component.agents":`Agents`,"federation.component.agentsHint":`Declared specialists and subagents.`,"federation.component.mcp":`MCP`,"federation.component.mcpHint":`Governed MCP entries.`,"federation.component.tui":`TUI`,"federation.component.tuiHint":`Terminal command center.`,"federation.component.graph":`Graph Studio`,"federation.component.graphHint":`Federated graph and visual navigation.`,"federation.plan":`Generate family plan`,"federation.planHint":`Nothing changes before review and confirmation.`,"federation.specialists":`Specialists`,"federation.specialistsHint":`Observed state from the catalog and local registry.`,"federation.mcpReady":`MCP declared`,"federation.mcpAbsent":`MCP not declared`,"federation.empty":`No specialist was observed in this workspace.`,"federation.review":`Review family plan`,"federation.reviewHint":`This plan comes from the real registered installers.`,"federation.actions":`Actions`,"federation.apply":`Apply family`,"federation.running":`Applying installers and collecting receipts…`,"federation.receipt":`Family receipt`,"federation.receiptHint":`Refresh the states to confirm the outcome.`,"profiles.title":`Profiles`,"profiles.subtitle":`How much of the Forge is available in your AI host's context.`,"profiles.current":`Current profile`,"profiles.economy":`Economy`,"profiles.economy.desc":`Lowest context usage. Loads capabilities as needed.`,"profiles.balanced":`Balanced`,"profiles.balanced.desc":`Balance between availability, quality and economy.`,"profiles.deep":`Deep`,"profiles.deep.desc":`Maximum verification depth and execution evidence.`,"profiles.full":`Full`,"profiles.full.desc":`All compatible components available, without loading everything into context.`,"profiles.apply":`Apply profile`,"profiles.diff":`What changes`,"hosts.title":`AI hosts`,"hosts.subtitle":`Real state of each host — detected, authenticated and integrated.`,"hosts.detected":`Detected`,"hosts.installed":`Integrated`,"hosts.version":`Version`,"hosts.supported":`Supported`,"hosts.auth":`Authentication`,"hosts.auth.signedIn":`Signed in`,"hosts.auth.signedOut":`Signed out`,"hosts.auth.unknown":`Unverified`,"hosts.integration":`Integration`,"hosts.launch":`Open host`,"hosts.launch.copyHint":`Run this command in your terminal to open the host:`,"hosts.launch.unavailable":`The portal cannot launch hosts — open it from a terminal with the command below.`,"hosts.docs":`Official documentation`,"hosts.notDetected":`Not detected on this system`,"hosts.restartRequired":`Restart the host to apply the configuration`,"hostState.NOT_DETECTED":`Not detected`,"hostState.DETECTED":`Detected`,"hostState.INSTALLED":`Installed`,"hostState.CONFIGURED":`Configured`,"hostState.MCP_REGISTERED":`MCP registered`,"hostState.HANDSHAKE_VERIFIED":`Handshake verified`,"hostState.TOOLS_DISCOVERED":`Tools discovered`,"hostState.EXECUTION_VERIFIED":`Execution verified`,"hostState.FAILED":`Failed`,"hostState.BLOCKED":`Blocked`,"mcp.title":`MCP`,"mcp.subtitle":`MCP servers and real handshake verification.`,"mcp.servers":`Servers`,"mcp.tools":`{count, plural, one{# tool} other{# tools}}`,"mcp.verify":`Verify handshake`,"mcp.lastVerify":`Last verified`,"mcp.limitations":`Limitations`,"mcp.never":`Never verified`,"skills.title":`Skills`,"skills.subtitle":`This Forge's real skill catalog.`,"skills.search":`Search skills…`,"skills.domain":`Domain`,"skills.state":`State`,"skills.hosts":`Hosts`,"skills.empty":`No skill matches the search.`,"skills.none":`This Forge does not ship a skill catalog.`,"agents.title":`Agents`,"agents.subtitle":`Agents, subagents and coordinators with declared authority.`,"agents.search":`Search agents…`,"agents.role":`Role`,"agents.authority":`Authority`,"agents.skills":`Skills`,"agents.domains":`Domains`,"agents.empty":`No agent matches the search.`,"agents.none":`This Forge does not ship an agent catalog.`,"tasks.title":`Tasks`,"tasks.subtitle":`Say what you want to do — the portal builds the plan on the real Forge.`,"tasks.intent.label":`What do you want to do?`,"tasks.intent.placeholder":`E.g.: analyze the PySpark scripts in this project`,"tasks.intent.run":`Plan`,"tasks.plan":`Plan`,"tasks.plan.review":`Review the plan before executing.`,"tasks.plan.task":`Task`,"tasks.plan.verb":`Verb`,"tasks.plan.intent":`Your intent`,"fdoc.checks":`Checks`,"fdoc.repairable":`(repairable)`,"fdoc.drift":`Drift`,"fdoc.modified":`modified`,"fdoc.missing":`missing`,"fdoc.managed_files":`Managed files`,"fdoc.planned_files":`Planned files`,"fdoc.more":`more`,"fdoc.portal":`Forge Portal`,"fdoc.portal.vendored":`vendored assets — no local install`,"fdoc.workspace":`Workspace`,"fdoc.verification":`Verification`,"fdoc.unlock":`unlock:`,"fdoc.repair":`repair:`,"fdoc.raw":`Advanced — raw JSON`,"doc.target":`target`,"doc.scope":`scope`,"doc.version":`version`,"doc.profile":`profile`,"doc.state_dir":`state dir`,"doc.managed":`managed entries`,"tasks.execute":`Execute`,"tasks.recent":`Recent tasks`,"tasks.empty":`No tasks run in this session.`,"tasks.stage.started":`Started`,"tasks.stage.planning":`Planning`,"tasks.stage.selected":`Specialist selected`,"tasks.stage.running":`Running`,"tasks.stage.verifying":`Verifying`,"tasks.stage.completed":`Completed`,"tasks.stage.failed":`Failed`,"tasks.stage.refused":`Refused`,"tasks.result":`Result`,"tasks.evidence":`Evidence`,"tasks.noHost":`No host detected — the plan shows the exact command to run on your host.`,"graph.title":`Graph Studio`,"graph.subtitle":`The Forge's real graph — nodes, edges, evidence and impact.`,"graph.open":`Open Graph Studio`,"graph.nodes":`{count, plural, one{# node} other{# nodes}}`,"graph.edges":`{count, plural, one{# edge} other{# edges}}`,"graph.unavailable":`No graph built yet.`,"graph.buildHint":`Build the graph with the Forge, then reload this page.`,"graph.federated":`Federated`,"graph.fed.title":`Federated ecosystem graph`,"graph.fed.export":`Export graph`,"graph.fed.sources":`Data sources`,"graph.fed.evidenceNote":`Every node carries the endpoint that supplied it — nothing is assumed.`,"graph.fed.search":`Search nodes by name or id…`,"graph.fed.kind":`Kind`,"graph.fed.verification":`Verification`,"entity.openIn":`Open in`,"graph.fed.observed":`observed`,"graph.fed.impact":`Direct impact`,"graph.fed.noImpact":`No edges recorded for this node.`,"graph.fed.empty":`No nodes match the filters.`,"graph.fed.none":`No federated data available.`,"graph.source.loaded":`loaded`,"graph.source.unverified":`unverified`,"graph.source.unavailable":`unavailable`,"graph.view.toggle":`Graph view`,"graph.view.list":`List`,"graph.view.canvas":`Canvas`,"graph.canvas.tools":`Canvas tools`,"graph.canvas.layout":`Layout`,"graph.canvas.reset":`Reset layout`,"graph.canvas.fit":`Fit`,"graph.canvas.zoomSel":`Zoom to selected`,"graph.canvas.aria":`Graph canvas — pan, zoom, drag and select nodes and edges`,"graph.canvas.legend":`Node kind legend`,"graph.edge.title":`Edge`,"graph.edge.relation":`Relation`,"graph.edge.source":`Source`,"graph.edge.target":`Target`,"graph.edge.direction":`Direction`,"graph.edge.observedAt":`Source observed at`,"graph.edge.related":`Other relations on this pair`,"graph.edge.relatedNone":`No other relation connects this pair.`,"graph.fed.state":`State`,"graph.fed.category":`Category`,"graph.fed.origin":`Origin forge`,"graph.fed.version":`Version`,"graph.fed.degree":`Relations`,"graph.fed.failed":`Reported failure`,"graph.fed.relOut":`Uses / declares (outgoing)`,"graph.fed.relIn":`Used / referenced by (incoming)`,"graph.fed.noRelations":`No declared relations.`,"graph.impact.title":`Impact analysis — topological`,"graph.impact.depth":`Depth`,"graph.impact.usedBy":`What depends on it`,"graph.impact.uses":`What it uses`,"graph.impact.more":`+{count} more`,"graph.impact.component":`Component`,"graph.impact.cycle":`Cycle`,"graph.impact.orphan":`Orphan — no declared relation`,"graph.impact.unverified":`Unverified relations`,"graph.impact.coverage":`Coverage: {loaded}/{total} sources loaded`,"graph.impact.path":`Shortest path to…`,"graph.impact.dirOut":`Following edges`,"graph.impact.dirBoth":`Any direction`,"graph.impact.noPath":`No path exists in this direction.`,"graph.impact.topoNote":`Topological reach only — declared relations say nothing about runtime impact.`,"graph.canvas.group":`Group`,"graph.group.none":`No grouping`,"graph.group.kind":`by kind`,"graph.group.forge":`by forge`,"graph.group.host":`by host`,"graph.view.reset":`Reset view`,"graph.snap.capture":`Capture snapshot`,"graph.snap.compare":`Compare with snapshot`,"graph.snap.clear":`Discard snapshot`,"graph.snap.at":`Snapshot from {at}`,"graph.diff.title":`Topology diff vs snapshot`,"graph.diff.unchanged":`No topological changes since the snapshot.`,"graph.diff.added":`Added`,"graph.diff.removed":`Removed`,"graph.diff.changed":`Changed`,"graph.legend.declared":`declared & loaded`,"graph.legend.unverified":`unverified source`,"graph.legend.unavailable":`unavailable source`,"graph.canvas.auto":`Auto`,"graph.layout.running":`Applying {layout} layout…`,"graph.layout.rendering":`Rendering {done} of {total} elements…`,"graph.layout.cancelled":`Layout cancelled — last stable positions kept.`,"graph.layout.timeout":`{layout} exceeded its time budget — showing {fallback} instead.`,"graph.layout.error":`{layout} failed to run — showing {fallback} instead.`,"graph.layout.warn":`{layout} is measured-expensive at this size.`,"graph.layout.recommended":`Recommended: {layout}`,"graph.layout.runAnyway":`Run anyway`,"graph.layout.useRecommended":`Use {layout}`,"graph.group.autoNote":`Auto-grouped for scale — expand a group to see its members.`,"knowledge.title":`Knowledge`,"knowledge.subtitle":`Docs, recipes and guides for this Forge — PT-BR first.`,"knowledge.search":`What do you want to solve?`,"knowledge.placeholder":`E.g.: how to analyze a Glue Job`,"knowledge.results":`{count, plural, one{# result} other{# results}}`,"knowledge.empty":`Nothing found — try another term.`,"knowledge.open":`Open document`,"knowledge.entities":`Observed entities`,"knowledge.noEntities":`No entity matches the filters.`,"knowledge.related":`Verifiable relations`,"knowledge.relatedEmpty":`No declared relation for this entity.`,"knowledge.sameDomain":`Skills in the same declared domain`,"knowledge.declaredBy":`Agents declaring this skill`,"knowledge.domainAgents":`Agents in the same declared domain`,"knowledge.entityDocs":`Documents about this entity`,"knowledge.entityDocsEmpty":`Docs search returned nothing for this entity name.`,"knowledge.entityDocsUnverified":`Docs search unverified for this entity.`,"knowledge.docs":`Documents`,"knowledge.docsHint":`Search this Forge's real documentation.`,"knowledge.docsUnavailable":`This Forge does not expose a docs search endpoint.`,"recommend.title":`Explainable recommendations`,"recommend.note":`Every recommendation shows its reason and the source (endpoint → field) backing it — nothing is inferred.`,"recommend.partial":`Some sources could not be verified — the list may be incomplete.`,"recommend.empty":`No recommendation derivable from the loaded data.`,"recommend.goto":`Open`,"recommend.sev.warning":`warning`,"recommend.sev.info":`info`,"recommend.kind.missingComponent":`Missing component`,"recommend.kind.incompleteConfig":`Incomplete configuration`,"recommend.kind.incompatibleDependency":`Incompatible dependency`,"recommend.kind.mcpUnavailable":`MCP unavailable`,"recommend.kind.recurringFailure":`Recurring failure`,"recommend.kind.relatedSkill":`Related skills`,"recommend.reason.missingComponent":`{forge} is listed in the federation catalog but has no recorded install.`,"recommend.reason.envMissing":`Required variable {name} is absent from the environment.`,"recommend.reason.envInvalid":`Required variable {name} is present but reported invalid.`,"recommend.reason.hostNotIntegrated":`Host {host} detected, but integration is still NOT_DETECTED.`,"recommend.reason.hostUnsupported":`Host {host} detected and reported as unsupported.`,"recommend.reason.mcpState":`{id} reports state {state}.`,"recommend.reason.recurringFailure":`{count} executions of verb {verb} ended refused or without an ok status.`,"recommend.reason.sameDomain":`{count} skills share the declared domain {domain}.`,"settings.title":`Settings`,"settings.subtitle":`Language, theme and portal preferences.`,"settings.language":`Language`,"settings.language.auto":`Automatic`,"settings.language.pt":`Português (Brasil)`,"settings.language.en":`English`,"settings.theme":`Theme`,"settings.theme.light":`Light`,"settings.theme.dark":`Dark`,"settings.theme.system":`System`,"settings.about":`About`,"settings.forge":`Forge`,"settings.version":`Version`,"settings.portalVersion":`Portal version`,"settings.cli":`CLI`,"settings.federated":`Federated`,"error.title":`Something went wrong`,"error.unreachable":`The portal server did not respond — is it running?`,"error.session":`Invalid or expired session — reopen the portal from the CLI.`,"error.forbidden":`Operation not allowed in this session.`,"error.notFound":`Not found.`,"error.generic":`Operation failed.`,"error.retry":`Retry`,"error.details":`Technical details`,"empty.noData":`Nothing to show yet.`,"empty.noData.hint":`Data appears when the Forge produces it — nothing is invented.`,"empty.notInstalled":`This Forge is not installed yet.`,"empty.notInstalled.hint":`Install it to see real state, hosts, MCP and catalogs.`,"empty.goInstall":`Go to Installation`,"notify.success":`Done`,"notify.error":`Failed`,"notify.dismiss":`Dismiss`,"table.id":`ID`,"table.host":`Host`,"table.task":`Task`,"table.verb":`Verb`,"table.stage":`Stage`,"table.exit":`Exit`,"nav.forges":`Forges`,"nav.config":`Configuration`,"notify.region":`Notifications`,"common.updatedAt":`updated {time}`,"command.kind.page":`Pages & actions`,"command.kind.forge":`Forges`,"command.kind.capability":`Capabilities`,"command.kind.skill":`Skills`,"command.kind.agent":`Agents`,"command.kind.mcp":`MCP`,"command.kind.host":`Hosts`,"command.kind.doc":`Documents`,"command.kind.operation":`Operations`,"command.kind.error":`Known errors`,"command.filters":`Filter by type`,"command.searching":`Searching…`,"command.footer":`↑↓ navigate · ←→ filter · Enter open · Esc close`,"command.unverified":`Source unverified for this search`,"dashboard.forges":`Discovered Forjas`,"dashboard.forges.hint":`The serving Forja plus specialists from the federation registry.`,"dashboard.inventory":`Inventory`,"dashboard.inventory.hint":`Live counts read from each catalog endpoint.`,"federation.unavailable":`This Forja does not expose a federation registry — data unverified.`,"explorer.title":`Forja explorer`,"explorer.subtitle":`Every Forja this workspace can verify — the serving Forja plus federation specialists.`,"explorer.serving":`serving`,"explorer.registryOnly":`Registry entry only — never observed live.`,"explorer.empty":`No Forja could be discovered.`,"explorer.notFound":`No Forja with this identity in the federation snapshot.`,"explorer.back":`All Forjas`,"explorer.detail.subtitle":`Fields verified by the portal and the federation registry — absent data is marked, never filled in.`,"explorer.identity":`Identity`,"explorer.presence":`Presence`,"explorer.notes":`Notes`,"explorer.checkout":`Checkout`,"registry.title":`Registry operations`,"registry.hint":`Every verb goes through plan → review → explicit confirm via forge-cli — nothing runs without the plan token.`,"registry.forge":`Forja`,"registry.forge.hint":`forge name (e.g. forge-doctor-api)`,"registry.op":`Operation`,"registry.state":`Registry state`,"registry.absent":`No registry state — nothing installed via forge-cli yet.`,"registry.malformed":`The state file exists but is malformed.`,"registry.unavailable":`Registry state could not be verified.`,"registry.none":`No Forja installed via registry.`,"registry.cliUnavailable":`forge-cli is not installed — registry operations need it.`,"registry.planning":`Planning via forge-cli…`,"registry.review":`Review plan`,"registry.review.hint":`The plan below came from forge-cli — confirm to actually execute.`,"registry.executing":`Executing via forge-cli…`,"registry.receipt":`Operation result`,"registry.newOp":`New operation`,"registry.method":`Method`,"registry.installedAt":`Installed at`,"registry.pinned":`pinned at`,"registry.colOps":`Actions`,"registry.previewEmpty":`The plan carried no details.`,"registry.action.install":`Install`,"registry.action.update":`Update`,"registry.action.reinstall":`Reinstall`,"registry.action.rollback":`Rollback`,"registry.action.pin":`Pin`,"registry.action.unpin":`Unpin`,"registry.action.repair":`Repair`,"registry.action.uninstall":`Uninstall`,"registry.action.verify":`Verify`,"registry.toast.planned":`Plan ready: {action} on {forge}.`,"registry.toast.executed":`{action} on {forge}: {status}.`,"install.step.discover":`Discover`,"install.step.select":`Select`,"install.step.reviewDiff":`Review diff`,"install.step.confirm":`Confirm`,"install.step.execute":`Execute`,"install.step.verify":`Verify`,"install.step.receipt":`Receipt`,"install.discover.hosts":`AI hosts detected in this environment`,"install.planning":`Computing the installation plan…`,"install.diff.none":`The backend provided no field-level diff — reviewing actions.`,"install.confirm.hint":`Review the plan above. Execution only happens after explicit confirmation.`,"install.confirm.execute":`Confirm and execute`,"install.confirm.back":`Back`,"install.confirm.next":`Continue`,"install.executing":`Executing the approved plan…`,"install.verify.running":`Revalidating the post-install state…`,"install.verify.unverified":`The backend returned no checks — verification unconfirmed.`,"install.reinstall":`Reinstall`,"install.newPlan":`New plan`,"install.flow.hint":`Nothing executes without a reviewed plan and explicit confirmation — same as the CLI.`,"install.ops.title":`Operations`,"install.ops.update":`Update`,"install.ops.update.hint":`Update via portal is not exposed by this adapter — path unverified.`,"install.ops.repair.hint":`Re-runs checks and repairs divergent entries.`,"config.title":`Configuration center`,"config.subtitle":`This Forja's environment variables — metadata only, never values.`,"config.alert.missing":`Missing or invalid required variables prevent the Forja from operating.`,"config.env.prefix":`Prefix`,"config.env.scope":`Scope`,"config.env.aliases":`Windows aliases`,"config.col.name":`Variable`,"config.col.required":`Required`,"config.col.present":`Present`,"config.col.valid":`Valid`,"config.col.kind":`Kind`,"config.col.path":`Path`,"config.prepare.title":`Prepare changes`,"config.prepare.hint":`Ready-to-paste shell commands — the portal never writes variables for you.`,"config.prepare.none":`No pending variables — environment ready.`,"config.apply.title":`Apply changes`,"config.apply.portal":`Apply via portal`,"config.apply.unsupported":`This adapter does not expose configuration writes — path unverified.`,"config.profiles.link":`View component profiles`,"config.profiles.hint":`Profiles define which components each installation enables.`,"profiles.compare":`Compare profiles`,"profiles.compare.hint":`Select two profiles to see the component differences.`,"profiles.compare.a":`Profile A`,"profiles.compare.b":`Profile B`,"profiles.compare.component":`Component`,"profiles.compare.differences":`{count} differences`,"profiles.compare.same":`Identical profiles`,"nav.match":`Match`,"hosts.launchable":`Launchable by the portal`,"hosts.commandHint":`Command for your terminal`,"hosts.request":`Request integration`,"hosts.ops.plan":`Plan integration`,"hosts.ops.files":`Inspect affected files`,"hosts.ops.fix":`Fix integration`,"hosts.ops.disable":`Disable integration`,"hosts.ops.unsupported":`Op not exposed by this adapter — unverified`,"mcp.safety":`Handshake verification is read-only — the portal never invokes MCP tools.`,"mcp.host.unbound":`not host-bound`,"mcp.host.open":`Open this host on the Hosts page`,"mcp.inspector":`Inspector`,"mcp.selectHint":`Select a server in the registry to inspect it.`,"mcp.detail":`Detail`,"mcp.explain.NOT_CONFIGURED":`Declared but not configured for any host.`,"mcp.explain.CONFIGURED":`Configured — no handshake performed yet.`,"mcp.explain.STARTING":`Server process starting — handshake in progress.`,"mcp.explain.HANDSHAKE_VERIFIED":`The initialize handshake was verified against the real server.`,"mcp.explain.TOOLS_DISCOVERED":`Tool discovery was verified after the handshake.`,"mcp.explain.INVOCATION_VERIFIED":`An invocation probe was verified by the adapter.`,"mcp.explain.DEGRADED":`The server responded, but the adapter reports degraded evidence.`,"mcp.explain.FAILED":`The last verification attempt failed — see the detail.`,"mcp.surface.tools":`Tools`,"mcp.surface.resources":`Resources`,"mcp.surface.prompts":`Prompts`,"mcp.surface.notExposed":`Surface not exposed by this adapter — unverified.`,"mcp.surface.countOnly":`Only the tool count is reported — names are not exposed.`,"mcp.surface.noTools":`The adapter did not report a tool count — unverified.`,"mcp.receipt.latency":`portal-measured latency`,"mcp.receipt.latencyHint":`HTTP round-trip measured by the portal — not MCP protocol latency.`,"mcp.verifying":`Verifying handshake…`,"mcp.compat.title":`Compatibility report`,"mcp.compat.hint":`Observed state vs the expected handshake progression — per server.`,"mcp.diag.title":`Diagnostics`,"mcp.diag.hint":`Servers in FAILED or DEGRADED state — evidence first, then re-verify.`,"agents.detail":`Details`,"agents.responsibility":`Responsibility`,"agents.origin":`Origin Forja`,"agents.compatibleHosts":`Compatible hosts`,"agents.tools":`Tools / MCP`,"agents.permissions":`Permissions`,"agents.deps":`Dependencies`,"agents.evidence":`Evidence`,"agents.notExposed":`Not exposed by this adapter — unverified`,"skills.detail.description":`Description`,"skills.origin":`Origin Forja`,"skills.compatibility":`Compatible hosts`,"skills.prerequisites":`Prerequisites`,"skills.fileValidation":`File validation`,"skills.deps":`Dependencies`,"skills.actions":`Install / repair`,"skills.actionsUnverified":`Install/repair ops are not exposed by this adapter — unverified`,"skills.notExposed":`Not exposed by this adapter — unverified`,"skills.agentsLink":`Declaring agents`,"skills.evidence":`Evidence`,"skills.dedup.title":`Name collisions`,"skills.dedup.hint":`Same-name rows are flagged for review — never merged.`,"skills.dedup.possible":`possible duplicate`,"skills.dedup.different":`same name, different entity`,"match.title":`Capability match`,"match.subtitle":`Which agent, skill, Forja or MCP covers a capability — answered from real catalog metadata only.`,"match.placeholder":`E.g.: pyspark glue, api contracts, graph…`,"match.hint":`Try: which agent works with X? · which skill supports Y? · which Forja covers Z?`,"match.empty":`No catalog entry matches that capability.`,"match.limitation":`Only catalog metadata searched — runtime capability unverified.`,"match.evidence":`Evidence`,"nav.observe":`Observability`,"nav.versions":`Versions`,"tasks.correlation":`Correlation`,"tasks.events":`View correlated events`,"tasks.executing":`Executing plan…`,"tasks.export":`Export receipt`,"tasks.stale.title":`Plan expired`,"tasks.stale.hint":`The plan token is stale — generate a new plan for the same intent. Execution never retries on its own.`,"tasks.stale.regenerate":`Regenerate plan`,"tasks.ops.title":`Operations`,"tasks.ops.plan.hint":`Builds a plan from the intent — nothing runs yet.`,"tasks.ops.execute.hint":`Executes a reviewed plan, bound to its plan token.`,"tasks.ops.cancel.hint":`Cancel op not exposed by the adapter.`,"tasks.limits":`Mutating ops are rate-limited and bound to a plan token; stage transitions come from real task records.`,"table.correlation":`Correlation`,"table.duration":`Duration`,"observe.title":`Observability`,"observe.subtitle":`Local metrics recorded by this Forge — no remote telemetry.`,"observe.localOnly":`Local-only metrics — nothing leaves this machine.`,"observe.unavailable":`This Forge does not expose local metrics — the capability is unverified, never assumed.`,"observe.counters":`Counters`,"observe.events":`Events`,"observe.generatedAt":`generated {time}`,"observe.truncated":`Showing a bounded window — older events were dropped to keep the report small.`,"observe.filter.kind":`Kind`,"observe.filter.status":`Status`,"observe.filter.corr":`Correlation`,"observe.col.kind":`Kind`,"observe.col.at":`At`,"observe.col.duration":`Duration`,"observe.col.status":`Status`,"observe.col.origin":`Origin`,"observe.col.correlation":`Correlation`,"observe.col.detail":`Detail`,"observe.empty":`No events recorded yet.`,"observe.empty.hint":`Metrics appear when the Forge runs tasks, installs or verifications.`,"observe.noMatches":`No events match the current filters.`,"nav.execution":`Execution`,"execution.title":`Execution`,"execution.subtitle":`Recorded execution events — real timestamps, real gaps, no simulation.`,"execution.localOnly":`Local event buffer only — nothing leaves this machine.`,"execution.unavailable":`This Forge does not record execution events — the capability is unverified, never assumed.`,"execution.summary":`Recorded window`,"execution.count.events":`events`,"execution.count.executions":`executions`,"execution.count.dropped":`dropped`,"execution.count.capacity":`capacity`,"execution.truncated":`Showing a bounded window — {dropped} older event(s) were evicted to keep the buffer small.`,"execution.timeline.title":`Executions`,"execution.timeline.hint":`One row per correlation — bars cover first→last recorded timestamp; ticks are recorded events; span underlays derive from recorded duration only.`,"execution.timeline.unplaced":`{count} event(s) carry no timestamp — real, undrawn.`,"execution.timeline.empty":`No event carries a usable timestamp.`,"execution.unlinked":`unlinked`,"execution.replay.title":`Replay`,"execution.replay.hint":`Playback of recorded events in real order — gaps scaled by speed, compressed gaps marked ⇥.`,"execution.replay.prev":`Previous`,"execution.replay.next":`Next`,"execution.replay.play":`Play`,"execution.replay.pause":`Pause`,"execution.replay.speed":`speed`,"execution.replay.step":`step {current} of {total}`,"execution.replay.gap":`recorded gap to the previous event`,"execution.replay.compressed":`real gap beyond the playback cap — shown real, waited less`,"execution.noTimestamp":`no recorded timestamp`,"execution.events":`Events`,"execution.filter.type":`Type`,"execution.filter.status":`Status`,"execution.filter.corr":`Correlation`,"execution.filter.search":`Search`,"execution.col.type":`Type`,"execution.col.at":`At`,"execution.col.status":`Status`,"execution.col.flow":`Source → target`,"execution.col.duration":`Duration`,"execution.col.correlation":`Correlation`,"execution.empty":`No events recorded yet.`,"execution.empty.hint":`Events appear when the portal and its adapter handle operations — starts, ends, refusals and domain emits.`,"execution.noMatches":`No events match the current filters.`,"execution.insp.schema":`Schema`,"execution.insp.at":`Recorded at`,"execution.insp.status":`Status`,"execution.insp.duration":`Duration`,"execution.insp.correlation":`Correlation`,"execution.insp.span":`Span`,"execution.insp.parent":`Parent span`,"execution.insp.trace":`Trace`,"execution.insp.source":`Source`,"execution.insp.target":`Target`,"execution.insp.task":`Task`,"execution.insp.causedBy":`Parent span observed in:`,"execution.insp.metadata":`Metadata`,"execution.insp.evidence":`Evidence`,"execution.insp.related":`Related events`,"nav.lab":`Lab`,"lab.title":`Forge Lab`,"lab.subtitle":`Benchmark runs, scenario catalog and comparisons — real receipts only.`,"lab.unavailable":`The /lab endpoint is absent on this adapter — lab data cannot be verified.`,"lab.empty.title":`No lab runs collected yet — Sem dados stays honest.`,"lab.empty.subtitle":`Run theforge lab collect — results appear here, never a mock.`,"lab.runs":`Run history`,"lab.catalog":`Scenario catalog`,"lab.reports":`Reports`,"lab.notes":`Collector notes`,"lab.compare.title":`Verdict comparison`,"lab.compare.a":`run A`,"lab.compare.b":`vs`,"lab.filter.all":`All forges`,"lab.export.json":`JSON`,"lab.export.md":`Markdown`,"lab.col.file":`run`,"lab.col.forges":`forges`,"lab.col.scenarios":`scenarios`,"lab.col.pass":`pass`,"lab.col.fail":`fail`,"lab.col.skipped":`skipped`,"lab.col.forge":`forge`,"lab.col.scenario":`scenario`,"lab.col.verdict":`verdict`,"lab.col.duration":`duration`,"lab.col.metrics":`metrics`,"lab.col.detail":`detail`,"versions.title":`Versions`,"versions.subtitle":`Installed version, compatibility and release history — offline-first.`,"versions.unavailable":`This Forge does not expose version info — the capability is unverified, never assumed.`,"versions.installed":`Installed`,"versions.installed.version":`Version`,"versions.installed.origin":`Origin`,"versions.installed.channel":`Channel`,"versions.compat":`Compatibility`,"versions.available":`Available`,"versions.available.version":`Latest`,"versions.available.source":`Source`,"versions.offline":`No remote release lookups in offline mode — the latest available version is unverified, never guessed.`,"versions.changelog":`Changelog`,"versions.history":`History`,"versions.history.version":`Version`,"versions.history.at":`At`,"versions.history.detail":`Detail`,"versions.history.empty":`No version history recorded yet.`,"versions.integrity":`Integrity`,"versions.integrity.release":`Manifest release`,"versions.integrity.sha256":`Manifest sha256`,"versions.pending":`Pending & upgrade plan`,"versions.pending.updates":`Pending updates`,"versions.pending.plan":`Upgrade plan`,"versions.pending.cli":`Update discovery belongs to the Forge CLI — the portal does not guess pending updates.`,"versions.receipts":`Receipts`,"versions.receipts.file":`Receipt`,"versions.receipts.operation":`Operation`,"versions.receipts.status":`Status`,"versions.rollback":`Rollback`,"dashboard.stat.registryInstalls":`Registry installs`,"dashboard.stat.discovered":`Discovered specialists`,"ops.alerts.title":`Actionable alerts`,"ops.alerts.hint":`Each alert opens the page where the problem is resolved — derived from observed signals only.`,"ops.alerts.empty":`No actionable alerts.`,"ops.alerts.emptyHint":`All observed signals are ok — alerts only appear when an endpoint reports a real problem.`,"ops.alert.installState":`The installation reports state {state}.`,"ops.alert.notInstalled":`This Forge is not installed.`,"ops.alert.checkFailed":`Check {id} failed.`,"ops.alert.env":`The account environment reports {state}.`,"ops.alert.specialist":`{forge} reports state {state}.`,"ops.alert.forgeNotInstalled":`{forge} is in the catalog but not installed.`,"ops.alert.mcpState":`MCP server {id} reports {state}.`,"ops.alert.mcpNotConfigured":`MCP server {id} is declared but not configured.`,"ops.alert.hostIntegration":`Host {host} integration reports {state}.`,"ops.alert.hostNotIntegrated":`Host {host} detected, integration not started.`,"ops.alert.tasksFailed":`{count, plural, one{# task failed} other{# tasks failed}} in this session.`,"ops.alert.registryMalformed":`The forge-cli registry state is malformed — receipts could not be read.`,"ops.alert.updateAvailable":`Update available: {version}.`,"ops.alert.pendingUpdates":`Pending updates reported by the backend.`,"ops.alert.noGraph":`No graph built yet.`,"ops.alert.goInstall":`Go to Installation`,"ops.alert.goConfig":`Go to Configuration`,"ops.alert.goForge":`Open Forge`,"ops.alert.goFederation":`Go to Forge family`,"ops.alert.goMcp":`Go to MCP`,"ops.alert.goHosts":`Go to hosts`,"ops.alert.goTasks":`Go to Tasks`,"ops.alert.goVersions":`Go to Versions`,"ops.alert.goGraph":`Go to Graph`,"ops.versions.title":`Installed versions`,"ops.versions.hint":`One row per real source — forge-cli receipts, bootstrap and federation.`,"ops.versions.col.installed":`Installed`,"ops.versions.col.pinned":`Pinned`,"ops.versions.col.method":`Method`,"ops.versions.col.source":`Source`,"ops.versions.update":`→ {version} available`,"ops.versions.empty":`No installed versions recorded.`,"ops.versions.emptyHint":`forge-cli receipts appear here when forges are installed via the registry.`,"ops.registry.unavailable":`This portal does not expose the forge-cli registry state — data unverified.`,"ops.diagnostics.title":`Diagnostics`,"ops.diagnostics.hint":`Shortcuts to the pages that investigate each signal.`,"agents.view.label":`View`,"agents.view.cards":`Cards`,"agents.view.table":`Table`,"agents.view.graph":`Graph`,"agents.declaredForge":`Declared Forja`,"agents.undeclared":`(not declared)`,"agents.compare.title":`Compare agents`,"agents.compare.pick":`Pick a second agent to compare.`,"agents.compare.clear":`Clear`,"agents.compare.add":`Compare`,"agents.compare.remove":`Remove from comparison`,"agents.compare.field":`Field`,"agents.compare.notDeclared":`not declared`,"agents.graph.hint":`Filtered view of the federated graph — the agents matching the filters plus the skills and Forjas their descriptors declare.`,"agents.graph.empty":`No agent matches the filters — the subgraph is empty.`,"agents.graph.aria":`Agent graph canvas — pan, zoom, drag and select nodes`,"table.name":`Name`,"table.actions":`Actions`,"table.started":`Started`,"table.finished":`Finished`,"tasks.timeline.title":`Execution timeline`,"tasks.timeline.hint":`Real task records positioned by their recorded start/end timestamps.`,"tasks.timeline.unplaced":`{count, plural, one{# record} other{# records}} without usable timestamps — not drawn.`,"tasks.timeline.empty":`No task record carries a usable timestamp.`,"tasks.refusal":`Refusal`,"tasks.replay.title":`Recorded events`,"tasks.replay.hint":`Playback of persisted /metrics events that share this task's correlation id — not a re-execution.`,"tasks.replay.step":`step {current} of {total}`,"tasks.replay.prev":`Previous`,"tasks.replay.next":`Next`,"tasks.replay.empty":`No recorded event shares this correlation id.`,"tasks.replay.noCorrelation":`This task record carries no correlation id — recorded events cannot be linked.`,"tasks.replay.unavailable":`The /metrics endpoint did not answer — recorded events are unverified.`,"nav.guide":`Guide`,"dashboard.lastArea":`Last area:`,"guide.title":`Portal guide`,"guide.subtitle":`Ecosystem concepts and where to start — always linked to the real pages.`,"guide.intro":`This guide explains the ecosystem vocabulary and points to the real page where each concept becomes action. Nothing here is a mandatory tutorial — read what you need, when you need it.`,"guide.toc":`Guide sections`,"guide.start.title":`Where to start`,"guide.start.body":`The portal is a read layer over the installed Forges — almost everything here is observed, not invented. Start at the Dashboard to see the ecosystem state: every card states which endpoint the data came from and when it was last updated.`,"guide.forge.title":`What is a Forge`,"guide.forge.body":`A Forge is an independent ecosystem product (spark-forge-aws, api-forge, platform-forge…). Under Forges you see which are installed, the state each one reports, and open the matching detail.`,"guide.agent.title":`What agents are`,"guide.agent.body":`Agents are specialized profiles declared by each Forge — coordinators and executors with declared domains and skills. The Agents page lists the real catalog; Match answers “which agent covers X”.`,"guide.skill.title":`What skills are`,"guide.skill.body":`Skills are reusable capabilities Forges publish for agents and hosts. The catalog shows declared domain, hosts and state — and flags name collisions when they exist.`,"guide.mcp.title":`What MCP is`,"guide.mcp.body":`Model Context Protocol (MCP) is the contract that exposes a Forge’s tools to AI hosts. The MCP page shows the registered servers and the real handshake state — verifying performs an actual handshake.`,"guide.graph.title":`Exploring graphs`,"guide.graph.body":`Graph Studio draws entities and relations extracted from the real descriptors. Use search, filters and groupings; select nodes and edges to see evidence; impact analysis shows multi-hop reach with the declared data coverage.`,"guide.install.title":`Installing components`,"guide.install.body":`Installation changes the file system — so every flow is plan → confirm → execute, with a signed plan and a receipt. Profiles define component sets; Hosts shows what the Forge detected on this machine.`,"guide.diagnose.title":`Diagnosing problems`,"guide.diagnose.body":`When something fails, start at the Dashboard: alerts derive from real signals and point to the page that resolves them. Tasks lists executions with stage and refusal; Observe shows the recorded events; errors carry code, explanation and next action.`,"guide.evidence.title":`Reading evidence`,"guide.evidence.body":`Evidence is what separates fact from assumption: receipts, correlation ids, timestamps and declared states come from the producer. Execution replays the recorded events — gaps render as gaps, never as simulated data.`,"hint.more":`Learn more`,"hint.dismiss":`Dismiss hint`,"hint.start":`Operational dashboard: each section states the real data source and when it was last updated.`,"hint.forge":`A Forge is an ecosystem product — here you see the installed ones and each one’s state.`,"hint.agent":`Agents are specialized profiles declared by the Forges — with declared domains, skills and hosts.`,"hint.skill":`Skills are reusable capabilities published by the Forges — the catalog shows real origin and state.`,"hint.mcp":`MCP is the protocol connecting Forges to AI hosts — the handshake state here is really verified.`,"hint.graph":`The graph shows observed entities and relations — select a node to see origin, neighbors and evidence.`,"hint.install":`Installation follows the plan → confirm → execute flow — nothing changes without your confirmed plan.`,"hint.diagnose":`Recorded tasks show stage, exit code and refusals — select one to see its timeline and evidence.`,"hint.evidence":`Real telemetry: every event carries the producer’s timestamp and correlation id — gaps render as gaps.`,"settings.density":`Visual density`,"settings.density.comfortable":`Comfortable`,"settings.density.compact":`Compact`,"settings.motion":`Animations`,"settings.motion.system":`System`,"settings.motion.full":`All`,"settings.motion.reduced":`Reduced`,"settings.hints":`Contextual hints`,"settings.hints.hint":`Dismissed hints appear again when you reset them.`,"settings.hints.reset":`Show hints again`,"settings.privacy":`Language, theme, density, animations, collapsed menu, last area and filters are stored only in this browser — nothing sensitive is saved.`,"err.explain.unreachable":`The server did not respond. Open the portal from the CLI and try again.`,"err.explain.session":`The local session expired or is invalid — reopen the portal from the CLI to get a new session.`,"err.explain.timeout":`The operation exceeded the server timeout — check Tasks to see whether it was recorded and its final stage.`,"err.explain.rateLimited":`Too many write actions in a row — wait a few seconds and try again.`,"err.explain.payload":`The request body exceeded the server’s 1 MiB limit.`,"err.explain.cli":`The Forge CLI is not available on PATH — the Installation page shows state and next steps.`,"err.explain.unsupported":`This Forge does not expose that capability — the dashboard lists what it declares as supported.`,"err.explain.hostAbsent":`The requested host was not detected on this machine — Hosts shows what was found.`,"err.explain.forge":`The operation failed on the target Forge — federation shows the state each one reports.`,"err.explain.notFound":`The requested resource does not exist on this portal — go back to the dashboard and use the menu.`,"err.explain.internal":`Internal server error — Observe shows the events recorded around the failure.`,"err.explain.confirm":`The action requires explicit confirmation — redo the flow: plan → confirm → execute.`,"err.explain.plan":`The plan expired or does not match the requested action — generate a new plan before executing.`,"err.explain.secret":`An environment variable or secret is missing — the Config center shows what is missing.`,"err.explain.forbidden":`The current session does not allow this operation.`,"err.explain.unavailable":`The server refused the operation right now — try again shortly.`,"err.explain.request":`The request was refused before reaching the operation — invalid format or disallowed origin.`,"err.go.dashboard":`Go to dashboard`,"err.go.observe":`Go to Observe`};export{e as EN}; \ No newline at end of file diff --git a/portal/assets/chunk-Bqgc-mwk.js b/portal/assets/chunk-ctcjU5we.js similarity index 71% rename from portal/assets/chunk-Bqgc-mwk.js rename to portal/assets/chunk-ctcjU5we.js index 9d000a7..45422e0 100644 --- a/portal/assets/chunk-Bqgc-mwk.js +++ b/portal/assets/chunk-ctcjU5we.js @@ -1 +1 @@ -import{$ as da,B as ZS,Dt as pS,Et as p,F as Wm,Gt as wS,Lt as tn,M as Ta,Mt as sC,N as Uh,P as WS,Q as cE,S as Oo,Tt as oC,Wt as ve$1,X as bS,Xt as yd,Yt as yc,Z as ba,ct as gS,dt as hE,gt as k,h as Jm,ht as jh,it as ei,jt as ry,k as T$1,kt as rE,l as Dd,o as Ar,ot as fS,q as aE,ut as hD,wt as ny,yt as mS,zt as uS}from"./chunk-BelLryvf.js";import{i as n,r as g,t as g$1}from"./main-A2NKRJGT.js";import{t as _}from"./chunk-BKRLVsID.js";import{n as k$1,t as I}from"./chunk-D2KAfPv6.js";import{t as T$2}from"./chunk-BBusSOqc.js";import{t as h$1}from"./chunk-D34eMkm4.js";var h=[`agent`,`skill`,`forge`,`mcp`];var ie={agent:`command.kind.agent`,skill:`command.kind.skill`,forge:`command.kind.forge`,mcp:`command.kind.mcp`};var re=`match.limitation`;var oe=250;var le=60;var T=i=>i.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().replace(/\s+/g,` `).trim();var te=(i,e)=>ie?1:0;function se(i){let e=[];for(let t of T(i).split(/[^a-z0-9]+/))t&&!e.includes(t)&&e.push(t);return e}function ce(i,e){if(i.length===0)return null;let t=[],n=0;for(let o of e.fields){if(!o.value)continue;let r=T(o.value);if(!r)continue;let v=i.filter(p=>r.includes(p));v.length!==0&&(n+=o.weight*(v.length/i.length),t.push({field:o.name,value:o.value,tokens:v}))}return t.length===0?null:{kind:e.kind,id:e.id,label:e.label,sublabel:e.sublabel,route:e.route,queryParams:e.queryParams,icon:e.icon,score:n,hits:t,limitationKey:re}}function de(i){return i.slice().sort((e,t)=>t.score-e.score||h.indexOf(e.kind)-h.indexOf(t.kind)||te(T(e.label),T(t.label))||te(e.id,t.id)).slice(0,le)}function pe(i){let e=[];for(let t of h){let n=i.filter(o=>o.kind===t);n.length&&e.push({kind:t,hits:n})}return e}var F=class i{api=p(g);store=p(g$1);report=k({groups:[],total:0,unverified:[],absent:[]});loading=k(!1);searched=k(!1);cache=null;failed=k([]);absent=k([]);building=null;bump=0;seq=0;timer=null;lastQuery=``;unverified=tn(()=>h.filter(e=>this.failed().includes(e)));constructor(){p(ve$1).onDestroy(()=>this.clearTimer())}setQuery(e){if(this.lastQuery=e,this.clearTimer(),!e.trim()){this.searchNow(``);return}this.timer=setTimeout(()=>{this.timer=null,this.searchNow(e)},oe)}async searchNow(e){let t=++this.seq;this.lastQuery=e,this.searched.set(!0),this.loading.set(!0);try{let n=await this.ensureIndex();if(t!==this.seq)return;let o=se(e),r=de(n.map(p=>ce(o,p)).filter(p=>p!==null)),v=pe(r);this.report.set({groups:v,total:r.length,unverified:h.filter(p=>this.failed().includes(p)),absent:h.filter(p=>this.absent().includes(p))})}finally{t===this.seq&&this.loading.set(!1)}}refresh(){this.bump++,this.cache=null,this.searched()&&this.searchNow(this.lastQuery)}version(){return`${this.store.refreshedAt()??`never`}|${this.bump}`}async ensureIndex(){let e=this.version();if(this.cache?.version===e)return this.cache.candidates;this.building??=this.buildIndex().finally(()=>this.building=null);let t=await this.building;return this.version()!==e?this.ensureIndex():(this.cache={version:e,candidates:t.candidates},this.failed.set(t.failed),this.absent.set(t.absent),t.candidates)}async buildIndex(){let e=[],t=new Set,n$1=new Set;e.push(...this.forgeCandidates());let o=async(r,v)=>{try{e.push(...await v())}catch(p){p instanceof n&&(p.status===404||p.body.code===`PORTAL-NOT-FOUND`)?n$1.add(r):t.add(r)}};return await Promise.all([o(`forge`,async()=>(await hE(this.api.federation())).specialists.map(r=>this.specialistCandidate(r))),o(`agent`,async()=>(await hE(this.api.agents())).map(r=>this.agentCandidate(r))),o(`skill`,async()=>(await hE(this.api.skills())).map(r=>this.skillCandidate(r))),o(`mcp`,async()=>(await hE(this.api.mcpServers())).map(r=>this.mcpCandidate(r)))]),{candidates:e,failed:h.filter(r=>t.has(r)),absent:h.filter(r=>n$1.has(r))}}agentCandidate(e){let t=[{name:`name`,value:e.name||e.id,weight:4},{name:`id`,value:e.id,weight:4},{name:`role`,value:e.role,weight:3},{name:`description`,value:e.description,weight:2},{name:`state`,value:e.state,weight:1}];for(let n of e.domains)t.push({name:`domains`,value:n,weight:3});for(let n of e.skills)t.push({name:`skills`,value:n,weight:3});for(let n of e.hosts)t.push({name:`hosts`,value:n,weight:1});return e.authority&&t.push({name:`authority`,value:e.authority,weight:1}),{kind:`agent`,id:e.id,label:e.name||e.id,sublabel:e.role||void 0,route:`/agents`,queryParams:{q:e.name||e.id},icon:`agents`,fields:t}}skillCandidate(e){let t=[{name:`name`,value:e.name||e.id,weight:4},{name:`id`,value:e.id,weight:4},{name:`description`,value:e.description,weight:2},{name:`state`,value:e.state,weight:1}];e.domain&&t.push({name:`domain`,value:e.domain,weight:3});for(let n of e.hosts)t.push({name:`hosts`,value:n,weight:1});return e.source&&t.push({name:`source`,value:e.source,weight:1}),{kind:`skill`,id:e.id,label:e.name||e.id,sublabel:[e.domain,e.state].filter(Boolean).join(` · `)||void 0,route:`/skills`,queryParams:{q:e.name||e.id},icon:`skills`,fields:t}}specialistCandidate(e){let t=[{name:`id`,value:e.provider,weight:4}];e.cli&&t.push({name:`cli`,value:e.cli,weight:3}),e.state&&t.push({name:`state`,value:e.state,weight:1}),e.status&&t.push({name:`status`,value:e.status,weight:1}),typeof e.checkout==`string`&&t.push({name:`checkout`,value:e.checkout,weight:1});for(let n of e.notes??[])t.push({name:`notes`,value:n,weight:1});return{kind:`forge`,id:e.provider,label:e.provider,sublabel:[e.state,e.status].filter(Boolean).join(` · `)||void 0,route:`/forges/${encodeURIComponent(e.provider)}`,icon:`gem`,fields:t}}forgeCandidates(){let e=this.store.descriptor();if(!e)return[];let t=[{name:`name`,value:e.forge_name,weight:4},{name:`id`,value:e.forge_id,weight:4},{name:`cli`,value:e.cli,weight:3}];for(let n of e.capabilities)t.push({name:`capabilities`,value:n.id,weight:2});return[{kind:`forge`,id:e.forge_id,label:e.forge_name||e.forge_id,sublabel:e.forge_id,route:`/forges/${encodeURIComponent(e.forge_id)}`,icon:`gem`,fields:t}]}mcpCandidate(e){let t=[{name:`id`,value:e.id,weight:4},{name:`state`,value:e.state,weight:1}];e.host&&t.push({name:`host`,value:e.host,weight:2}),e.detail&&t.push({name:`detail`,value:e.detail,weight:2});for(let n of e.limitations??[])t.push({name:`limitations`,value:n,weight:1});return{kind:`mcp`,id:e.id,label:e.id,sublabel:[e.state,e.host].filter(Boolean).join(` · `)||void 0,route:`/mcp`,icon:`mcp`,fields:t}}clearTimer(){this.timer&&(clearTimeout(this.timer),this.timer=null)}static ɵfac=function(t){return new(t||i)};static ɵprov=T$1({token:i,factory:i.ɵfac,providedIn:`root`})};var ue=(i,e)=>e.kind;var me=(i,e)=>e.kind+`:`+e.id;var he=(i,e)=>e.field+`|`+e.value;function fe(i,e){i&1&&ba(0,`ui-icon`,6),i&2&&Wm(`size`,11)}function ge(i,e){if(i&1){let t=wS();da(0,`button`,2),oC(1,`t`),Ta(`click`,function(){let o=jh(t).$implicit,r=bS();return Uh(r.filter.set(o))}),WS(2),oC(3,`t`),uS(4,fe,1,1,`ui-icon`,6),yd()}if(i&2){let t=e.$implicit,n=bS();Ar(`data-tone`,n.filter()===t?`accent`:null)(`data-unverified`,n.svc.unverified().includes(t)||null)(`aria-pressed`,n.filter()===t)(`title`,n.svc.unverified().includes(t)?sC(1,6,`command.unverified`):null),hD(2),Dd(` `,sC(3,8,n.labels[t]),` `),hD(2),fS(n.svc.unverified().includes(t)?4:-1)}}function ve(i,e){i&1&&(da(0,`div`,5),oC(1,`t`),ba(2,`ui-skeleton`,7),yd()),i&2&&(Ar(`aria-label`,sC(1,2,`state.loading`)),hD(2),Wm(`lines`,3))}function _e(i,e){i&1&&(ba(0,`ui-empty`,11),oC(1,`t`)),i&2&&Wm(`title`,sC(1,1,`match.empty`))}function ye(i,e){if(i&1&&(da(0,`p`,20),WS(1),yd()),i&2){let t=bS().$implicit;hD(),Jm(t.sublabel)}}function be(i,e){if(i&1&&(da(0,`li`)(1,`code`,22),WS(2),yd(),da(3,`span`,23),WS(4),yd(),da(5,`span`,24),WS(6),yd()()),i&2){let t=e.$implicit;hD(2),Jm(t.field),hD(2),Jm(t.value),hD(2),Dd(`(`,t.tokens.join(`, `),`)`)}}function Me(i,e){if(i&1&&(da(0,`article`,16)(1,`header`,17)(2,`h3`)(3,`a`,18),WS(4),yd()(),ba(5,`ui-state-badge`,19),oC(6,`t`),yd(),uS(7,ye,2,1,`p`,20),da(8,`ul`,21),oC(9,`t`),gS(10,be,7,3,`li`,null,he),yd()()),i&2){let t=e.$implicit;hD(3),Wm(`routerLink`,t.route)(`queryParams`,t.queryParams??null),hD(),Jm(t.label),hD(),Wm(`labelOverride`,sC(6,6,`match.limitation`)),hD(2),fS(t.sublabel?7:-1),hD(),Ar(`aria-label`,sC(9,8,`match.evidence`)),hD(2),mS(t.hits)}}function Ce(i,e){if(i&1&&(da(0,`section`,12)(1,`h2`,13),ba(2,`ui-icon`,14),WS(3),oC(4,`t`),yd(),da(5,`div`,15),gS(6,Me,12,10,`article`,16,me),yd()()),i&2){let t=e.$implicit,n=bS(3);Ar(`data-kind`,t.kind),hD(2),Wm(`name`,n.icons[t.kind])(`size`,15),hD(),Dd(``,sC(4,4,n.labels[t.kind]),` `),hD(3),mS(t.hits)}}function xe(i,e){if(i&1&&(da(0,`p`,10),WS(1),oC(2,`t`),yd(),uS(3,_e,2,3,`ui-empty`,11),gS(4,Ce,8,6,`section`,12,ue)),i&2){let t=bS(2);hD(),Jm(sC(2,2,`match.limitation`)),hD(2),fS(t.visibleGroups().length?-1:3),hD(),mS(t.visibleGroups())}}function ke(i,e){i&1&&(ba(0,`ui-empty`,8),oC(1,`t`),oC(2,`t`)),i&2&&Wm(`title`,sC(1,2,`match.empty`))(`hint`,sC(2,4,`match.limitation`))}function we(i,e){i&1&&(ba(0,`ui-empty`,9),oC(1,`t`),oC(2,`t`)),i&2&&Wm(`title`,sC(1,2,`match.title`))(`hint`,sC(2,4,`match.hint`))}function Pe(i,e){if(i&1&&uS(0,xe,6,4)(1,ke,3,6,`ui-empty`,8)(2,we,3,6,`ui-empty`,9),i&2){let t=bS();fS(t.svc.report().total?0:t.query().trim()?1:2)}}var ne=class i{svc=p(F);prefs=p(rE);query=k(``);filter=k(`all`);kinds=h;labels=ie;icons={agent:`agents`,skill:`skills`,forge:`gem`,mcp:`mcp`};visibleGroups=tn(()=>{let e=this.filter(),t=this.svc.report().groups;return e===`all`?t:t.filter(n=>n.kind===e)});constructor(){let e=this.prefs.filterFor(`match`);e&&this.query.set(e),Oo(()=>this.prefs.setFilter(`match`,this.query())),Oo(()=>this.svc.setQuery(this.query()))}static ɵfac=function(t){return new(t||i)};static ɵcmp=ei({type:i,selectors:[[`page-match`]],decls:14,vars:17,consts:[[3,`title`,`subtitle`],[`placeholder`,`match.placeholder`,3,`queryChange`,`query`],[`type`,`button`,1,`fg-pill`,3,`click`],[`type`,`button`,1,`fg-pill`],[1,`hint`,`muted`],[`role`,`status`],[`name`,`alert`,3,`size`],[`kind`,`row`,3,`lines`],[`icon`,`search`,3,`title`,`hint`],[`icon`,`compass`,3,`title`,`hint`],[1,`src`,`muted`],[`icon`,`search`,3,`title`],[1,`group`],[1,`group__title`],[3,`name`,`size`],[1,`hits`],[`data-lift`,``,1,`card`,`hit`],[1,`hit__head`],[1,`hit__label`,3,`routerLink`,`queryParams`],[`state`,`unverified`,3,`labelOverride`],[1,`muted`],[1,`ev`],[1,`ev__field`],[1,`ev__value`],[1,`ev__tokens`]],template:function(t,n){t&1&&(ba(0,`ui-page-header`,0),oC(1,`t`),oC(2,`t`),da(3,`ui-filter-bar`,1),ry(`queryChange`,function(r){return ZS(n.query,r)||(n.query=r),r}),da(4,`button`,2),Ta(`click`,function(){return n.filter.set(`all`)}),WS(5),oC(6,`t`),yd(),gS(7,ge,5,10,`button`,3,pS),yd(),da(9,`p`,4),WS(10),oC(11,`t`),yd(),uS(12,ve,3,4,`div`,5),uS(13,Pe,3,1)),t&2&&(Wm(`title`,sC(1,9,`match.title`))(`subtitle`,sC(2,11,`match.subtitle`)),hD(3),ny(`query`,n.query),hD(),Ar(`data-tone`,n.filter()===`all`?`accent`:null)(`aria-pressed`,n.filter()===`all`),hD(),Dd(` `,sC(6,13,`state.all`),` `),hD(2),mS(n.kinds),hD(3),Jm(sC(11,15,`match.hint`)),hD(2),fS(n.svc.loading()?12:-1),hD(),fS(n.svc.searched()&&!n.svc.loading()?13:-1))},dependencies:[yc,T$2,I,_,cE,k$1,h$1,aE],styles:[`.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.hint[_ngcontent-%COMP%]{margin:calc(-1 * var(--%NS%space-2)) 0 var(--%NS%space-4);font-size:var(--%NS%font-xs)}.src[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-size:var(--%NS%font-xs)}.group[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-5)}.group__title[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-size:var(--%NS%font-sm);font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--%NS%fg-muted);display:flex;align-items:center;gap:var(--%NS%space-2)}.group__title[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.hits[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-3);grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.hit__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-2)}.hit__head[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650}.hit__label[_ngcontent-%COMP%]{color:var(--%NS%fg);text-decoration:none}.hit__label[_ngcontent-%COMP%]:hover{color:var(--%NS%accent-ink);text-decoration:underline}.ev[_ngcontent-%COMP%]{list-style:none;margin:var(--%NS%space-3) 0 0;padding:0;display:grid;gap:4px;font-size:var(--%NS%font-xs)}.ev[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:6px;min-width:0}.ev__field[_ngcontent-%COMP%]{flex:none;color:var(--%NS%accent-ink);font-weight:600}.ev__value[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:32ch}.ev__tokens[_ngcontent-%COMP%]{flex:none;color:var(--%NS%fg-muted)}.fg-pill[data-unverified][_ngcontent-%COMP%]{border-style:dashed;color:var(--%NS%unverified)}`]})};export{ne as MatchPage}; \ No newline at end of file +import{$ as dS,At as qm,Bt as tn,D as Oo,Et as p,F as Sa,Ft as ry,I as T$1,J as aC,Jt as vd,Mt as rE,P as SS,Q as cE,Qt as yS,S as Ma,Tt as oy,W as YS,Y as aE,Yt as ve$1,Z as bd,at as ey,ct as hD,et as da,gt as k,i as Ar,it as ei,kt as qS,lt as hE,ot as gS,p as Hh,qt as vc,s as DS,ut as hS,vt as lC,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{i as n,r as g,t as g$1}from"./main-XW2ZMSO5.js";import{t as _}from"./chunk-16deWS0U.js";import{n as k$1,t as I}from"./chunk-DQtX_-dj.js";import{t as T$2}from"./chunk-BGgpmc9t.js";import{t as h$1}from"./chunk-DQJAW8AL.js";var h=[`agent`,`skill`,`forge`,`mcp`];var ie={agent:`command.kind.agent`,skill:`command.kind.skill`,forge:`command.kind.forge`,mcp:`command.kind.mcp`};var re=`match.limitation`;var oe=250;var le=60;var T=i=>i.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().replace(/\s+/g,` `).trim();var te=(i,e)=>ie?1:0;function se(i){let e=[];for(let t of T(i).split(/[^a-z0-9]+/))t&&!e.includes(t)&&e.push(t);return e}function ce(i,e){if(i.length===0)return null;let t=[],n=0;for(let o of e.fields){if(!o.value)continue;let r=T(o.value);if(!r)continue;let v=i.filter(p=>r.includes(p));v.length!==0&&(n+=o.weight*(v.length/i.length),t.push({field:o.name,value:o.value,tokens:v}))}return t.length===0?null:{kind:e.kind,id:e.id,label:e.label,sublabel:e.sublabel,route:e.route,queryParams:e.queryParams,icon:e.icon,score:n,hits:t,limitationKey:re}}function de(i){return i.slice().sort((e,t)=>t.score-e.score||h.indexOf(e.kind)-h.indexOf(t.kind)||te(T(e.label),T(t.label))||te(e.id,t.id)).slice(0,le)}function pe(i){let e=[];for(let t of h){let n=i.filter(o=>o.kind===t);n.length&&e.push({kind:t,hits:n})}return e}var F=class i{api=p(g);store=p(g$1);report=k({groups:[],total:0,unverified:[],absent:[]});loading=k(!1);searched=k(!1);cache=null;failed=k([]);absent=k([]);building=null;bump=0;seq=0;timer=null;lastQuery=``;unverified=tn(()=>h.filter(e=>this.failed().includes(e)));constructor(){p(ve$1).onDestroy(()=>this.clearTimer())}setQuery(e){if(this.lastQuery=e,this.clearTimer(),!e.trim()){this.searchNow(``);return}this.timer=setTimeout(()=>{this.timer=null,this.searchNow(e)},oe)}async searchNow(e){let t=++this.seq;this.lastQuery=e,this.searched.set(!0),this.loading.set(!0);try{let n=await this.ensureIndex();if(t!==this.seq)return;let o=se(e),r=de(n.map(p=>ce(o,p)).filter(p=>p!==null)),v=pe(r);this.report.set({groups:v,total:r.length,unverified:h.filter(p=>this.failed().includes(p)),absent:h.filter(p=>this.absent().includes(p))})}finally{t===this.seq&&this.loading.set(!1)}}refresh(){this.bump++,this.cache=null,this.searched()&&this.searchNow(this.lastQuery)}version(){return`${this.store.refreshedAt()??`never`}|${this.bump}`}async ensureIndex(){let e=this.version();if(this.cache?.version===e)return this.cache.candidates;this.building??=this.buildIndex().finally(()=>this.building=null);let t=await this.building;return this.version()!==e?this.ensureIndex():(this.cache={version:e,candidates:t.candidates},this.failed.set(t.failed),this.absent.set(t.absent),t.candidates)}async buildIndex(){let e=[],t=new Set,n$1=new Set;e.push(...this.forgeCandidates());let o=async(r,v)=>{try{e.push(...await v())}catch(p){p instanceof n&&(p.status===404||p.body.code===`PORTAL-NOT-FOUND`)?n$1.add(r):t.add(r)}};return await Promise.all([o(`forge`,async()=>(await hE(this.api.federation())).specialists.map(r=>this.specialistCandidate(r))),o(`agent`,async()=>(await hE(this.api.agents())).map(r=>this.agentCandidate(r))),o(`skill`,async()=>(await hE(this.api.skills())).map(r=>this.skillCandidate(r))),o(`mcp`,async()=>(await hE(this.api.mcpServers())).map(r=>this.mcpCandidate(r)))]),{candidates:e,failed:h.filter(r=>t.has(r)),absent:h.filter(r=>n$1.has(r))}}agentCandidate(e){let t=[{name:`name`,value:e.name||e.id,weight:4},{name:`id`,value:e.id,weight:4},{name:`role`,value:e.role,weight:3},{name:`description`,value:e.description,weight:2},{name:`state`,value:e.state,weight:1}];for(let n of e.domains)t.push({name:`domains`,value:n,weight:3});for(let n of e.skills)t.push({name:`skills`,value:n,weight:3});for(let n of e.hosts)t.push({name:`hosts`,value:n,weight:1});return e.authority&&t.push({name:`authority`,value:e.authority,weight:1}),{kind:`agent`,id:e.id,label:e.name||e.id,sublabel:e.role||void 0,route:`/agents`,queryParams:{q:e.name||e.id},icon:`agents`,fields:t}}skillCandidate(e){let t=[{name:`name`,value:e.name||e.id,weight:4},{name:`id`,value:e.id,weight:4},{name:`description`,value:e.description,weight:2},{name:`state`,value:e.state,weight:1}];e.domain&&t.push({name:`domain`,value:e.domain,weight:3});for(let n of e.hosts)t.push({name:`hosts`,value:n,weight:1});return e.source&&t.push({name:`source`,value:e.source,weight:1}),{kind:`skill`,id:e.id,label:e.name||e.id,sublabel:[e.domain,e.state].filter(Boolean).join(` · `)||void 0,route:`/skills`,queryParams:{q:e.name||e.id},icon:`skills`,fields:t}}specialistCandidate(e){let t=[{name:`id`,value:e.provider,weight:4}];e.cli&&t.push({name:`cli`,value:e.cli,weight:3}),e.state&&t.push({name:`state`,value:e.state,weight:1}),e.status&&t.push({name:`status`,value:e.status,weight:1}),typeof e.checkout==`string`&&t.push({name:`checkout`,value:e.checkout,weight:1});for(let n of e.notes??[])t.push({name:`notes`,value:n,weight:1});return{kind:`forge`,id:e.provider,label:e.provider,sublabel:[e.state,e.status].filter(Boolean).join(` · `)||void 0,route:`/forges/${encodeURIComponent(e.provider)}`,icon:`gem`,fields:t}}forgeCandidates(){let e=this.store.descriptor();if(!e)return[];let t=[{name:`name`,value:e.forge_name,weight:4},{name:`id`,value:e.forge_id,weight:4},{name:`cli`,value:e.cli,weight:3}];for(let n of e.capabilities)t.push({name:`capabilities`,value:n.id,weight:2});return[{kind:`forge`,id:e.forge_id,label:e.forge_name||e.forge_id,sublabel:e.forge_id,route:`/forges/${encodeURIComponent(e.forge_id)}`,icon:`gem`,fields:t}]}mcpCandidate(e){let t=[{name:`id`,value:e.id,weight:4},{name:`state`,value:e.state,weight:1}];e.host&&t.push({name:`host`,value:e.host,weight:2}),e.detail&&t.push({name:`detail`,value:e.detail,weight:2});for(let n of e.limitations??[])t.push({name:`limitations`,value:n,weight:1});return{kind:`mcp`,id:e.id,label:e.id,sublabel:[e.state,e.host].filter(Boolean).join(` · `)||void 0,route:`/mcp`,icon:`mcp`,fields:t}}clearTimer(){this.timer&&(clearTimeout(this.timer),this.timer=null)}static ɵfac=function(t){return new(t||i)};static ɵprov=T$1({token:i,factory:i.ɵfac,providedIn:`root`})};var ue=(i,e)=>e.kind;var me=(i,e)=>e.kind+`:`+e.id;var he=(i,e)=>e.field+`|`+e.value;function fe(i,e){i&1&&Sa(0,`ui-icon`,6),i&2&&qm(`size`,11)}function ge(i,e){if(i&1){let t=DS();da(0,`button`,2),aC(1,`t`),Ma(`click`,function(){let o=Hh(t).$implicit,r=SS();return Vh(r.filter.set(o))}),qS(2),aC(3,`t`),dS(4,fe,1,1,`ui-icon`,6),vd()}if(i&2){let t=e.$implicit,n=SS();Ar(`data-tone`,n.filter()===t?`accent`:null)(`data-unverified`,n.svc.unverified().includes(t)||null)(`aria-pressed`,n.filter()===t)(`title`,n.svc.unverified().includes(t)?lC(1,6,`command.unverified`):null),hD(2),bd(` `,lC(3,8,n.labels[t]),` `),hD(2),hS(n.svc.unverified().includes(t)?4:-1)}}function ve(i,e){i&1&&(da(0,`div`,5),aC(1,`t`),Sa(2,`ui-skeleton`,7),vd()),i&2&&(Ar(`aria-label`,lC(1,2,`state.loading`)),hD(2),qm(`lines`,3))}function _e(i,e){i&1&&(Sa(0,`ui-empty`,11),aC(1,`t`)),i&2&&qm(`title`,lC(1,1,`match.empty`))}function ye(i,e){if(i&1&&(da(0,`p`,20),qS(1),vd()),i&2){let t=SS().$implicit;hD(),ey(t.sublabel)}}function be(i,e){if(i&1&&(da(0,`li`)(1,`code`,22),qS(2),vd(),da(3,`span`,23),qS(4),vd(),da(5,`span`,24),qS(6),vd()()),i&2){let t=e.$implicit;hD(2),ey(t.field),hD(2),ey(t.value),hD(2),bd(`(`,t.tokens.join(`, `),`)`)}}function Me(i,e){if(i&1&&(da(0,`article`,16)(1,`header`,17)(2,`h3`)(3,`a`,18),qS(4),vd()(),Sa(5,`ui-state-badge`,19),aC(6,`t`),vd(),dS(7,ye,2,1,`p`,20),da(8,`ul`,21),aC(9,`t`),mS(10,be,7,3,`li`,null,he),vd()()),i&2){let t=e.$implicit;hD(3),qm(`routerLink`,t.route)(`queryParams`,t.queryParams??null),hD(),ey(t.label),hD(),qm(`labelOverride`,lC(6,6,`match.limitation`)),hD(2),hS(t.sublabel?7:-1),hD(),Ar(`aria-label`,lC(9,8,`match.evidence`)),hD(2),yS(t.hits)}}function Ce(i,e){if(i&1&&(da(0,`section`,12)(1,`h2`,13),Sa(2,`ui-icon`,14),qS(3),aC(4,`t`),vd(),da(5,`div`,15),mS(6,Me,12,10,`article`,16,me),vd()()),i&2){let t=e.$implicit,n=SS(3);Ar(`data-kind`,t.kind),hD(2),qm(`name`,n.icons[t.kind])(`size`,15),hD(),bd(``,lC(4,4,n.labels[t.kind]),` `),hD(3),yS(t.hits)}}function xe(i,e){if(i&1&&(da(0,`p`,10),qS(1),aC(2,`t`),vd(),dS(3,_e,2,3,`ui-empty`,11),mS(4,Ce,8,6,`section`,12,ue)),i&2){let t=SS(2);hD(),ey(lC(2,2,`match.limitation`)),hD(2),hS(t.visibleGroups().length?-1:3),hD(),yS(t.visibleGroups())}}function ke(i,e){i&1&&(Sa(0,`ui-empty`,8),aC(1,`t`),aC(2,`t`)),i&2&&qm(`title`,lC(1,2,`match.empty`))(`hint`,lC(2,4,`match.limitation`))}function we(i,e){i&1&&(Sa(0,`ui-empty`,9),aC(1,`t`),aC(2,`t`)),i&2&&qm(`title`,lC(1,2,`match.title`))(`hint`,lC(2,4,`match.hint`))}function Pe(i,e){if(i&1&&dS(0,xe,6,4)(1,ke,3,6,`ui-empty`,8)(2,we,3,6,`ui-empty`,9),i&2){let t=SS();hS(t.svc.report().total?0:t.query().trim()?1:2)}}var ne=class i{svc=p(F);prefs=p(rE);query=k(``);filter=k(`all`);kinds=h;labels=ie;icons={agent:`agents`,skill:`skills`,forge:`gem`,mcp:`mcp`};visibleGroups=tn(()=>{let e=this.filter(),t=this.svc.report().groups;return e===`all`?t:t.filter(n=>n.kind===e)});constructor(){let e=this.prefs.filterFor(`match`);e&&this.query.set(e),Oo(()=>this.prefs.setFilter(`match`,this.query())),Oo(()=>this.svc.setQuery(this.query()))}static ɵfac=function(t){return new(t||i)};static ɵcmp=ei({type:i,selectors:[[`page-match`]],decls:14,vars:17,consts:[[3,`title`,`subtitle`],[`placeholder`,`match.placeholder`,3,`queryChange`,`query`],[`type`,`button`,1,`fg-pill`,3,`click`],[`type`,`button`,1,`fg-pill`],[1,`hint`,`muted`],[`role`,`status`],[`name`,`alert`,3,`size`],[`kind`,`row`,3,`lines`],[`icon`,`search`,3,`title`,`hint`],[`icon`,`compass`,3,`title`,`hint`],[1,`src`,`muted`],[`icon`,`search`,3,`title`],[1,`group`],[1,`group__title`],[3,`name`,`size`],[1,`hits`],[`data-lift`,``,1,`card`,`hit`],[1,`hit__head`],[1,`hit__label`,3,`routerLink`,`queryParams`],[`state`,`unverified`,3,`labelOverride`],[1,`muted`],[1,`ev`],[1,`ev__field`],[1,`ev__value`],[1,`ev__tokens`]],template:function(t,n){t&1&&(Sa(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),da(3,`ui-filter-bar`,1),oy(`queryChange`,function(r){return YS(n.query,r)||(n.query=r),r}),da(4,`button`,2),Ma(`click`,function(){return n.filter.set(`all`)}),qS(5),aC(6,`t`),vd(),mS(7,ge,5,10,`button`,3,gS),vd(),da(9,`p`,4),qS(10),aC(11,`t`),vd(),dS(12,ve,3,4,`div`,5),dS(13,Pe,3,1)),t&2&&(qm(`title`,lC(1,9,`match.title`))(`subtitle`,lC(2,11,`match.subtitle`)),hD(3),ry(`query`,n.query),hD(),Ar(`data-tone`,n.filter()===`all`?`accent`:null)(`aria-pressed`,n.filter()===`all`),hD(),bd(` `,lC(6,13,`state.all`),` `),hD(2),yS(n.kinds),hD(3),ey(lC(11,15,`match.hint`)),hD(2),hS(n.svc.loading()?12:-1),hD(),hS(n.svc.searched()&&!n.svc.loading()?13:-1))},dependencies:[vc,T$2,I,_,cE,k$1,h$1,aE],styles:[`.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.hint[_ngcontent-%COMP%]{margin:calc(-1 * var(--%NS%space-2)) 0 var(--%NS%space-4);font-size:var(--%NS%font-xs)}.src[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-size:var(--%NS%font-xs)}.group[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-5)}.group__title[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-size:var(--%NS%font-sm);font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--%NS%fg-muted);display:flex;align-items:center;gap:var(--%NS%space-2)}.group__title[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.hits[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-3);grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.hit__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-2)}.hit__head[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650}.hit__label[_ngcontent-%COMP%]{color:var(--%NS%fg);text-decoration:none}.hit__label[_ngcontent-%COMP%]:hover{color:var(--%NS%accent-ink);text-decoration:underline}.ev[_ngcontent-%COMP%]{list-style:none;margin:var(--%NS%space-3) 0 0;padding:0;display:grid;gap:4px;font-size:var(--%NS%font-xs)}.ev[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:6px;min-width:0}.ev__field[_ngcontent-%COMP%]{flex:none;color:var(--%NS%accent-ink);font-weight:600}.ev__value[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:32ch}.ev__tokens[_ngcontent-%COMP%]{flex:none;color:var(--%NS%fg-muted)}.fg-pill[data-unverified][_ngcontent-%COMP%]{border-style:dashed;color:var(--%NS%unverified)}`]})};export{ne as MatchPage}; \ No newline at end of file diff --git a/portal/assets/chunk-fHAvBZdv.js b/portal/assets/chunk-fHAvBZdv.js new file mode 100644 index 0000000..1340fc4 --- /dev/null +++ b/portal/assets/chunk-fHAvBZdv.js @@ -0,0 +1 @@ +import{i as m,r as l}from"./chunk-BYYLUO5t.js";import{$ as dS,At as qm,Bt as tn,Ct as oC,D as Oo,Dt as pS,E as Na,Et as p,F as Sa,Ft as ry,Ht as ty,J as aC,Jt as vd,Mt as rE,P as SS,Pt as rn,Q as cE,Qt as yS,S as Ma,Tt as oy,W as YS,Y as aE,Yt as ve,Z as bd,at as ey,b as LU,ct as hD,et as da,gt as k,i as Ar,it as ei,jt as rC,kt as qS,lt as hE,ot as gS,p as Hh,qt as vc,s as DS,ut as hS,vt as lC,w as NS,xt as nC,y as Km,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{i as n,r as g,t as g$1}from"./main-XW2ZMSO5.js";import{a as l$1}from"./chunk-BNDlNg-C.js";import{t as _}from"./chunk-16deWS0U.js";import{t as D}from"./chunk-Bg2lccQE.js";import{n as k$1,t as I}from"./chunk-DQtX_-dj.js";import{t as T}from"./chunk-BGgpmc9t.js";import{a as m$1,l as e,n as F}from"./chunk-CCHwcZ3Q.js";import{t as h}from"./chunk-DQJAW8AL.js";import{n as G$1,r as H,t as E}from"./chunk-pVzsnrcB.js";var L=`__undeclared__`;var Se=t=>t.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().trim();function M(t,n=new Set){return E(t,n)}function ke(t,n,e=new Set){let l=Se(n.query);return t.filter(r=>{if(n.domain!==null&&!r.domains.includes(n.domain)||n.skill!==null&&!r.skills.includes(n.skill)||n.host!==null&&!r.hosts.includes(n.host))return!1;if(n.forge!==null){let T=M(r,e);if(n.forge===L?T!==null:T!==n.forge)return!1}return l?[r.id,r.name,r.role,r.description,r.authority??``,...r.domains,...r.skills,...r.hosts].map(Se).join(` `).includes(l):!0})}function z(t,n){let e=new Set;for(let l of t)for(let r of n(l))e.add(r);return[...e].sort((l,r)=>l.localeCompare(r))}var Ee=t=>z(t,n=>n.domains);var Pe=t=>z(t,n=>n.skills);var we=t=>z(t,n=>n.hosts);function Ie(t,n=new Set){let e=new Set,l=!1;for(let r of t){let m=M(r,n);m?e.add(m):l=!0}return{declared:[...e].sort((r,m)=>r.localeCompare(m)),hasUndeclared:l}}var A=t=>({text:t&&t.trim()?t:null,absent:!(t&&t.trim())});var B=t=>({text:t.length?t.join(`, `):null,absent:t.length===0});function Ne(t,n,e=new Set){return[{key:`table.id`,va:A(t.id),vb:A(n.id)},{key:`agents.role`,va:A(t.role),vb:A(n.role)},{key:`agents.responsibility`,va:A(t.description),vb:A(n.description)},{key:`agents.authority`,va:A(t.authority),vb:A(n.authority)},{key:`agents.origin`,va:A(M(t,e)),vb:A(M(n,e))},{key:`agents.domains`,va:B(t.domains),vb:B(n.domains)},{key:`agents.skills`,va:B(t.skills),vb:B(n.skills)},{key:`agents.compatibleHosts`,va:B(t.hosts),vb:B(n.hosts)},{key:`skills.state`,va:A(t.state),vb:A(n.state)}].map(({key:r,va:m,vb:T})=>({key:r,a:m,b:T,differ:!m.absent&&!T.absent&&m.text!==T.text}))}function Ae(t,n){let e=P=>P.startsWith(`agent:`)&&n.has(P.slice(6)),l$2=new Set,r=t.edges.filter(P=>!e(P.source)&&!e(P.target)?!1:(l$2.add(P.source),l$2.add(P.target),!0)),m$2=t.nodes.filter(P=>P.kind===`agent`?n.has(P.id.slice(6)):l$2.has(P.id)),T=Object.fromEntries(G$1.map(P=>[P,0]));for(let P of m$2)T[P.kind]+=1;return m(l({},t),{nodes:m$2,edges:r,counts:T})}var Be=[`canvasEl`];var Oe=(t,n)=>[t,n];var Fe=()=>[`/skills`];var De=t=>({q:t});var Me=()=>[`/hosts`];var G=(t,n)=>n.id;var Ve=(t,n)=>n.key;function Re(t,n){if(t&1){let e=DS();da(0,`button`,9),Ma(`click`,function(){let r=Hh(e).$implicit,m=SS();return Vh(m.setMode(r))}),qS(1),aC(2,`t`),vd()}if(t&2){let e=n.$implicit,l=SS();Ar(`data-view`,e)(`data-tone`,l.mode()===e?`accent`:null)(`aria-pressed`,l.mode()===e),hD(),bd(` `,lC(2,4,`agents.view.`+e),` `)}}function $e(t,n){if(t&1){let e=DS();da(0,`ui-error`,10),Ma(`retry`,function(){Hh(e);let r=SS();return Vh(r.load())}),vd()}t&2&&qm(`error`,n)}function qe(t,n){t&1&&(da(0,`section`,7),aC(1,`t`),Sa(2,`ui-skeleton`,11),vd()),t&2&&(Ar(`aria-label`,lC(1,2,`state.loading`)),hD(2),qm(`lines`,3))}function Le(t,n){if(t&1){let e=DS();da(0,`button`,9),Ma(`click`,function(){let r=Hh(e).$implicit,m=SS(2);return Vh(m.toggleDomain(r))}),qS(1),vd()}if(t&2){let e=n.$implicit,l=SS(2);Ar(`data-tone`,l.domain()===e?`accent`:null)(`aria-pressed`,l.domain()===e),hD(),bd(` `,e,` `)}}function ze(t,n){if(t&1&&(da(0,`option`,24),qS(1),vd()),t&2){let e=n.$implicit,l=SS(3);qm(`value`,e)(`selected`,l.skill()===e),hD(),ey(e)}}function Ge(t,n){if(t&1){let e=DS();da(0,`select`,22),aC(1,`t`),Ma(`change`,function(r){Hh(e);let m=SS(2);return Vh(m.onSkill(r))}),da(2,`option`,23),qS(3),aC(4,`t`),aC(5,`t`),vd(),mS(6,ze,2,3,`option`,24,gS),vd()}if(t&2){let e=SS(2);qm(`value`,e.skill()??``),Ar(`aria-label`,lC(1,4,`agents.skills`)),hD(3),ty(``,lC(4,6,`agents.skills`),`: `,lC(5,8,`state.all`)),hD(3),yS(e.skillOpts())}}function He(t,n){if(t&1&&(da(0,`option`,24),qS(1),vd()),t&2){let e=n.$implicit,l=SS(3);qm(`value`,e)(`selected`,l.host()===e),hD(),ey(e)}}function je(t,n){if(t&1){let e=DS();da(0,`select`,25),aC(1,`t`),Ma(`change`,function(r){Hh(e);let m=SS(2);return Vh(m.onHost(r))}),da(2,`option`,23),qS(3),aC(4,`t`),aC(5,`t`),vd(),mS(6,He,2,3,`option`,24,gS),vd()}if(t&2){let e=SS(2);qm(`value`,e.host()??``),Ar(`aria-label`,lC(1,4,`agents.compatibleHosts`)),hD(3),ty(``,lC(4,6,`agents.compatibleHosts`),`: `,lC(5,8,`state.all`)),hD(3),yS(e.hostOpts())}}function Ke(t,n){if(t&1&&(da(0,`option`,24),qS(1),vd()),t&2){let e=n.$implicit,l=SS(3);qm(`value`,e)(`selected`,l.forge()===e),hD(),ey(e)}}function Ue(t,n){if(t&1&&(da(0,`option`,24),qS(1),aC(2,`t`),vd()),t&2){let e=SS(3);qm(`value`,e.undeclared)(`selected`,e.forge()===e.undeclared),hD(),bd(` `,lC(2,3,`agents.undeclared`),` `)}}function We(t,n){if(t&1){let e=DS();da(0,`select`,26),aC(1,`t`),Ma(`change`,function(r){Hh(e);let m=SS(2);return Vh(m.onForge(r))}),da(2,`option`,23),qS(3),aC(4,`t`),aC(5,`t`),vd(),mS(6,Ke,2,3,`option`,24,gS),dS(8,Ue,3,5,`option`,24),vd()}if(t&2){let e=SS(2);qm(`value`,e.forge()??``),Ar(`aria-label`,lC(1,5,`agents.declaredForge`)),hD(3),ty(``,lC(4,7,`agents.declaredForge`),`: `,lC(5,9,`state.all`)),hD(3),yS(e.forgeOpts().declared),hD(2),hS(e.forgeOpts().hasUndeclared?8:-1)}}function Qe(t,n){if(t&1){let e=DS();da(0,`span`,28),qS(1),da(2,`button`,31),aC(3,`t`),Ma(`click`,function(){let r=Hh(e).$implicit,m=SS(3);return Vh(m.toggleCompare(r))}),qS(4,` × `),vd()()}if(t&2){let e=n.$implicit,l=SS(3);hD(),bd(` `,l.labelFor(e),` `),hD(),Ar(`aria-label`,lC(3,2,`agents.compare.remove`))}}function Ye(t,n){t&1&&(da(0,`span`,29),qS(1),aC(2,`t`),vd()),t&2&&(hD(),ey(lC(2,1,`agents.compare.pick`)))}function Je(t,n){if(t&1){let e=DS();da(0,`section`,16)(1,`span`,27),qS(2),aC(3,`t`),vd(),mS(4,Qe,5,4,`span`,28,gS),dS(6,Ye,3,3,`span`,29),da(7,`button`,30),Ma(`click`,function(){Hh(e);let r=SS(2);return Vh(r.compareIds.set([]))}),qS(8),aC(9,`t`),vd()()}if(t&2){let e=SS(2);hD(2),ey(lC(3,3,`agents.compare.title`)),hD(2),yS(e.compareIds()),hD(2),hS(e.compareIds().length<2?6:-1),hD(2),bd(` `,lC(9,5,`agents.compare.clear`),` `)}}function Xe(t,n){if(t&1&&(da(0,`th`,38)(1,`code`),qS(2),vd()()),t&2){let e=n.$implicit;hD(2),ey(e.id)}}function Ze(t,n){t&1&&(da(0,`span`,40),qS(1),aC(2,`t`),vd()),t&2&&(hD(),ey(lC(2,1,`agents.compare.notDeclared`)))}function et(t,n){if(t&1&&qS(0),t&2){let e=SS().$implicit;bd(` `,e.text,` `)}}function tt(t,n){if(t&1&&(da(0,`td`),dS(1,Ze,3,3,`span`,40)(2,et,1,1),vd()),t&2){let e=n.$implicit;hD(),hS(e.absent?1:2)}}function nt(t,n){if(t&1&&(da(0,`tr`)(1,`th`,39),qS(2),aC(3,`t`),vd(),mS(4,tt,3,1,`td`,null,pS),vd()),t&2){let e=n.$implicit;Ar(`data-differ`,e.differ||null),hD(2),ey(lC(3,2,e.key)),hD(2),yS(oC(4,Oe,e.a,e.b))}}function it(t,n){if(t&1){let e=DS();da(0,`section`,17)(1,`header`,32)(2,`h2`),Sa(3,`ui-icon`,33),qS(4),aC(5,`t`),vd(),da(6,`button`,34),aC(7,`t`),Ma(`click`,function(){Hh(e);let r=SS(2);return Vh(r.compareIds.set([]))}),Sa(8,`ui-icon`,35),vd()(),da(9,`div`,36)(10,`table`,37)(11,`thead`)(12,`tr`)(13,`th`,38),qS(14),aC(15,`t`),vd(),mS(16,Xe,3,1,`th`,38,G),vd()(),da(18,`tbody`),mS(19,nt,6,7,`tr`,null,Ve),vd()()()()}if(t&2){let e=SS(2);hD(3),qm(`size`,15),hD(),ey(lC(5,5,`agents.compare.title`)),hD(2),Ar(`aria-label`,lC(7,7,`state.close`)),hD(2),qm(`size`,14),hD(6),ey(lC(15,9,`agents.compare.field`)),hD(2),yS(e.comparePair()),hD(3),yS(n)}}function at(t,n){if(t&1&&(da(0,`a`,50),qS(1),vd()),t&2){let e=n.$implicit;qm(`routerLink`,nC(3,Fe))(`queryParams`,rC(4,De,e)),hD(),ey(e)}}function ot(t,n){if(t&1&&(da(0,`span`,46),mS(1,at,2,6,`a`,50,gS),vd()),t&2){let e=SS();hD(),yS(e.skills)}}function rt(t,n){t&1&&(qS(0),aC(1,`t`)),t&2&&bd(` `,lC(1,1,`state.none`),` `)}function lt(t,n){if(t&1&&(qS(0),da(1,`code`),qS(2),vd(),da(3,`span`,51),qS(4),aC(5,`t`),vd()),t&2){let e=n;bd(` `,e.forge_name,` `),hD(2),bd(`(`,e.forge_id,`)`),hD(2),ey(lC(5,3,`explorer.serving`))}}function dt(t,n){t&1&&Sa(0,`ui-state-badge`,47)}function st(t,n){t&1&&(da(0,`code`),qS(1),vd()),t&2&&(hD(),ey(n))}function ct(t,n){t&1&&(da(0,`span`,40),qS(1),aC(2,`t`),vd()),t&2&&(hD(),ey(lC(2,1,`agents.compare.notDeclared`)))}function pt(t,n){if(t&1&&(da(0,`a`,52),qS(1),vd()),t&2){let e=n.$implicit;qm(`routerLink`,nC(3,Me))(`fragment`,`host-`+e),hD(),ey(e)}}function _t(t,n){if(t&1&&(da(0,`span`,46),mS(1,pt,2,4,`a`,52,gS),vd()),t&2){let e=SS();hD(),yS(e.hosts)}}function mt(t,n){t&1&&Sa(0,`ui-state-badge`,47)}function gt(t,n){if(t&1){let e=DS();da(0,`section`,18)(1,`header`,41)(2,`h2`),Sa(3,`ui-icon`,42),qS(4),vd(),da(5,`div`,43)(6,`button`,44),Ma(`click`,function(){let r=Hh(e),m=SS(2);return Vh(m.toggleCompare(r.id))}),qS(7),aC(8,`t`),vd(),da(9,`button`,34),aC(10,`t`),Ma(`click`,function(){Hh(e);let r=SS(2);return Vh(r.selected.set(null))}),Sa(11,`ui-icon`,35),vd()()(),da(12,`dl`,45)(13,`div`)(14,`dt`),qS(15),aC(16,`t`),vd(),da(17,`dd`)(18,`code`),qS(19),vd()()(),da(20,`div`)(21,`dt`),qS(22),aC(23,`t`),vd(),da(24,`dd`),qS(25),aC(26,`t`),vd()(),da(27,`div`)(28,`dt`),qS(29),aC(30,`t`),vd(),da(31,`dd`),qS(32),aC(33,`t`),vd()(),da(34,`div`)(35,`dt`),qS(36),aC(37,`t`),vd(),da(38,`dd`),qS(39),aC(40,`t`),vd()(),da(41,`div`)(42,`dt`),qS(43),aC(44,`t`),vd(),da(45,`dd`),qS(46),aC(47,`t`),vd()(),da(48,`div`)(49,`dt`),qS(50),aC(51,`t`),vd(),da(52,`dd`),dS(53,ot,3,0,`span`,46)(54,rt,2,3),vd()(),da(55,`div`)(56,`dt`),qS(57),aC(58,`t`),vd(),da(59,`dd`),dS(60,lt,6,5)(61,dt,1,0,`ui-state-badge`,47),vd()(),da(62,`div`)(63,`dt`),qS(64),aC(65,`t`),vd(),da(66,`dd`),dS(67,st,2,1,`code`)(68,ct,3,3,`span`,40),vd()(),da(69,`div`)(70,`dt`),qS(71),aC(72,`t`),vd(),da(73,`dd`),dS(74,_t,3,0,`span`,46)(75,mt,1,0,`ui-state-badge`,47),vd()(),da(76,`div`)(77,`dt`),qS(78),aC(79,`t`),vd(),da(80,`dd`),Sa(81,`ui-state-badge`,48),vd()(),da(82,`div`)(83,`dt`),qS(84),aC(85,`t`),vd(),da(86,`dd`,49),Sa(87,`ui-state-badge`,47),da(88,`small`,29),qS(89),aC(90,`t`),vd()()(),da(91,`div`)(92,`dt`),qS(93),aC(94,`t`),vd(),da(95,`dd`,49),Sa(96,`ui-state-badge`,47),da(97,`small`,29),qS(98),aC(99,`t`),vd()()(),da(100,`div`)(101,`dt`),qS(102),aC(103,`t`),vd(),da(104,`dd`,49),Sa(105,`ui-state-badge`,47),da(106,`small`,29),qS(107),aC(108,`t`),vd()()(),da(109,`div`)(110,`dt`),qS(111),aC(112,`t`),vd(),da(113,`dd`,49),Sa(114,`ui-state-badge`,47),da(115,`small`,29),qS(116),aC(117,`t`),vd()()(),da(118,`div`)(119,`dt`),qS(120),aC(121,`t`),vd(),da(122,`dd`)(123,`code`),qS(124,`GET /api/v1/agents`),vd()()()()()}if(t&2){let e,l,r=n,m=SS(2);hD(3),qm(`size`,15),hD(),ey(r.name||r.id),hD(2),Ar(`data-tone`,m.compareIds().includes(r.id)?`accent`:null)(`aria-pressed`,m.compareIds().includes(r.id)),hD(),bd(` `,lC(8,37,`agents.compare.add`),` `),hD(2),Ar(`aria-label`,lC(10,39,`state.close`)),hD(2),qm(`size`,14),hD(4),ey(lC(16,41,`table.id`)),hD(4),ey(r.id),hD(3),ey(lC(23,43,`agents.role`)),hD(3),ey(r.role||lC(26,45,`state.absent`)),hD(4),ey(lC(30,47,`agents.responsibility`)),hD(3),ey(r.description||lC(33,49,`state.absent`)),hD(4),ey(lC(37,51,`agents.authority`)),hD(3),ey(r.authority??lC(40,53,`state.absent`)),hD(4),ey(lC(44,55,`agents.domains`)),hD(3),ey(r.domains.length?r.domains.join(`, `):lC(47,57,`state.none`)),hD(4),ey(lC(51,59,`agents.skills`)),hD(3),hS(r.skills.length?53:54),hD(4),ey(lC(58,61,`agents.origin`)),hD(3),hS((e=m.store.descriptor())?60:61,e),hD(4),ey(lC(65,63,`agents.declaredForge`)),hD(3),hS((l=m.declaredForge(r,m.knownForges()))?67:68,l),hD(4),ey(lC(72,65,`agents.compatibleHosts`)),hD(3),hS(r.hosts.length?74:75),hD(4),ey(lC(79,67,`skills.state`)),hD(3),qm(`state`,r.state===`available`?`supported`:`unverified`)(`labelOverride`,r.state),hD(3),ey(lC(85,69,`agents.tools`)),hD(5),ey(lC(90,71,`agents.notExposed`)),hD(4),ey(lC(94,73,`agents.permissions`)),hD(5),ey(lC(99,75,`agents.notExposed`)),hD(4),ey(lC(103,77,`agents.deps`)),hD(5),ey(lC(108,79,`agents.notExposed`)),hD(4),ey(lC(112,81,`settings.version`)),hD(5),ey(lC(117,83,`agents.notExposed`)),hD(4),ey(lC(121,85,`agents.evidence`))}}function ut(t,n){if(t&1&&(da(0,`p`,56)(1,`span`),qS(2),aC(3,`t`),vd(),qS(4),vd()),t&2){let e=SS().$implicit;hD(2),bd(``,lC(3,2,`agents.domains`),`:`),hD(2),bd(` `,e.domains.join(`, `),` `)}}function yt(t,n){if(t&1&&(da(0,`p`,56)(1,`span`),qS(2),aC(3,`t`),vd(),qS(4),vd()),t&2){let e=SS().$implicit;hD(2),bd(``,lC(3,2,`agents.skills`),`:`),hD(2),bd(` `,e.skills.join(`, `),` `)}}function xt(t,n){if(t&1){let e=DS();da(0,`article`,53)(1,`header`,54)(2,`h2`),Sa(3,`ui-icon`,42),qS(4),vd(),Sa(5,`ui-state-badge`,48),vd(),da(6,`p`,55),qS(7),vd(),da(8,`p`,29),qS(9),vd(),dS(10,ut,5,4,`p`,56),dS(11,yt,5,4,`p`,56),da(12,`div`,57)(13,`button`,44),Ma(`click`,function(){let r=Hh(e).$implicit,m=SS(3);return Vh(m.toggleCompare(r.id))}),qS(14),aC(15,`t`),vd(),da(16,`button`,58),Ma(`click`,function(){let r=Hh(e).$implicit,m=SS(3);return Vh(m.selected.set(r))}),qS(17),aC(18,`t`),Sa(19,`ui-icon`,35),vd()()()}if(t&2){let e=n.$implicit,l=SS(3);hD(3),qm(`size`,15),hD(),ey(e.name||e.id),hD(),qm(`state`,e.state===`available`?`supported`:`unverified`)(`labelOverride`,e.state),hD(2),ey(e.role),hD(2),ey(e.description),hD(),hS(e.domains.length?10:-1),hD(),hS(e.skills.length?11:-1),hD(2),Ar(`data-tone`,l.compareIds().includes(e.id)?`accent`:null)(`aria-pressed`,l.compareIds().includes(e.id)),hD(),bd(` `,lC(15,13,`agents.compare.add`),` `),hD(3),bd(` `,lC(18,15,`agents.detail`),` `),hD(2),qm(`size`,13)}}function ft(t,n){t&1&&(Sa(0,`ui-empty`,8),aC(1,`t`)),t&2&&qm(`title`,lC(1,1,`agents.empty`))}function vt(t,n){if(t&1&&dS(0,ft,2,3,`ui-empty`,8),t&2){let e=SS(3);hS(e.loading()?-1:0)}}function Ct(t,n){if(t&1&&(da(0,`section`,19),mS(1,xt,20,17,`article`,53,G,!1,vt,1,1),vd()),t&2){let e=SS(2);hD(),yS(e.filtered())}}function ht(t,n){if(t&1&&(da(0,`a`,63),qS(1),vd(),qS(2)),t&2){let e=n.$implicit,l=n.$index,r=n.$count;qm(`routerLink`,nC(4,Me))(`fragment`,`host-`+e),hD(),ey(e),hD(),bd(``,l===r-1?``:`, `,` `)}}function bt(t,n){if(t&1&&mS(0,ht,3,5,null,null,gS),t&2){let e=SS().$implicit;yS(e.hosts)}}function St(t,n){t&1&&(da(0,`span`,40),qS(1),aC(2,`t`),vd()),t&2&&(hD(),ey(lC(2,1,`agents.compare.notDeclared`)))}function kt(t,n){if(t&1){let e=DS();da(0,`tr`)(1,`td`)(2,`strong`),qS(3),vd(),Sa(4,`br`),da(5,`code`,61),qS(6),vd()(),da(7,`td`),qS(8),vd(),da(9,`td`),qS(10),vd(),da(11,`td`),qS(12),vd(),da(13,`td`),dS(14,bt,2,0)(15,St,3,3,`span`,40),vd(),da(16,`td`),Sa(17,`ui-state-badge`,48),vd(),da(18,`td`,62)(19,`button`,44),Ma(`click`,function(){let r=Hh(e).$implicit,m=SS(3);return Vh(m.toggleCompare(r.id))}),qS(20),aC(21,`t`),vd(),da(22,`button`,58),Ma(`click`,function(){let r=Hh(e).$implicit,m=SS(3);return Vh(m.selected.set(r))}),qS(23),aC(24,`t`),vd()()()}if(t&2){let e=n.$implicit,l=SS(3);hD(3),ey(e.name||e.id),hD(3),ey(e.id),hD(2),ey(e.role||`—`),hD(2),ey(e.domains.length?e.domains.join(`, `):`—`),hD(2),ey(e.skills.length?e.skills.join(`, `):`—`),hD(2),hS(e.hosts.length?14:15),hD(3),qm(`state`,e.state===`available`?`supported`:`unverified`)(`labelOverride`,e.state),hD(2),Ar(`data-tone`,l.compareIds().includes(e.id)?`accent`:null)(`aria-pressed`,l.compareIds().includes(e.id)),hD(),bd(` `,lC(21,12,`agents.compare.add`),` `),hD(3),bd(` `,lC(24,14,`agents.detail`),` `)}}function Et(t,n){t&1&&(da(0,`tr`)(1,`td`,64),qS(2),aC(3,`t`),vd()()),t&2&&(hD(2),ey(lC(3,1,`agents.empty`)))}function Pt(t,n){if(t&1&&(da(0,`section`,20)(1,`div`,36)(2,`table`,59)(3,`thead`)(4,`tr`)(5,`th`,38),qS(6),aC(7,`t`),vd(),da(8,`th`,38),qS(9),aC(10,`t`),vd(),da(11,`th`,38),qS(12),aC(13,`t`),vd(),da(14,`th`,38),qS(15),aC(16,`t`),vd(),da(17,`th`,38),qS(18),aC(19,`t`),vd(),da(20,`th`,38),qS(21),aC(22,`t`),vd(),da(23,`th`,38)(24,`span`,60),qS(25),aC(26,`t`),vd()()()(),da(27,`tbody`),mS(28,kt,25,16,`tr`,null,G,!1,Et,4,3,`tr`),vd()()()()),t&2){let e=SS(2);hD(6),ey(lC(7,8,`table.name`)),hD(3),ey(lC(10,10,`agents.role`)),hD(3),ey(lC(13,12,`agents.domains`)),hD(3),ey(lC(16,14,`agents.skills`)),hD(3),ey(lC(19,16,`agents.compatibleHosts`)),hD(3),ey(lC(22,18,`skills.state`)),hD(4),ey(lC(26,20,`table.actions`)),hD(3),yS(e.filtered())}}function wt(t,n){if(t&1){let e=DS();da(0,`button`,9),Ma(`click`,function(){let r=Hh(e).$implicit,m=SS(4);return Vh(m.setLayout(r))}),qS(1),vd()}if(t&2){let e=n.$implicit,l=SS(4);Ar(`data-layout`,e)(`data-tone`,l.layoutName()===e?`accent`:null)(`aria-pressed`,l.layoutName()===e),hD(),bd(` `,e,` `)}}function It(t,n){if(t&1&&(da(0,`li`),Sa(1,`span`,75),qS(2),vd()),t&2){let e=n.$implicit,l=SS(4);Ar(`data-kind`,e),hD(),Na(`background`,l.kindColor(e)),Ar(`data-shape`,l.kindShape(e)),hD(),bd(` `,e,` `)}}function Nt(t,n){if(t&1){let e=DS();da(0,`div`,67),aC(1,`t`),da(2,`span`,29),qS(3),aC(4,`t`),vd(),mS(5,wt,2,4,`button`,3,gS),Sa(7,`span`,68),da(8,`button`,69),Ma(`click`,function(){Hh(e);let r=SS(3);return Vh(r.resetLayout())}),qS(9),aC(10,`t`),vd(),da(11,`button`,70),Ma(`click`,function(){Hh(e);let r=SS(3);return Vh(r.fitCanvas())}),qS(12),aC(13,`t`),vd(),da(14,`button`,71),Ma(`click`,function(){Hh(e);let r=SS(3);return Vh(r.exportPng())}),qS(15,` PNG `),vd(),da(16,`button`,72),Ma(`click`,function(){Hh(e);let r=SS(3);return Vh(r.exportSvg())}),qS(17,` SVG `),vd()(),Sa(18,`div`,73,0),aC(20,`t`),da(21,`ul`,74),aC(22,`t`),mS(23,It,3,5,`li`,null,gS),vd()}if(t&2){let e=SS(3);Ar(`aria-label`,lC(1,6,`graph.canvas.tools`)),hD(3),ey(lC(4,8,`graph.canvas.layout`)),hD(2),yS(e.layouts),hD(4),bd(` `,lC(10,10,`graph.canvas.reset`),` `),hD(3),bd(` `,lC(13,12,`graph.canvas.fit`),` `),hD(6),Ar(`aria-label`,lC(20,14,`agents.graph.aria`)),hD(3),Ar(`aria-label`,lC(22,16,`graph.canvas.legend`)),hD(2),yS(e.graphKinds())}}function At(t,n){t&1&&(Sa(0,`ui-empty`,66),aC(1,`t`)),t&2&&qm(`title`,lC(1,1,`agents.graph.empty`))}function Tt(t,n){if(t&1&&(da(0,`section`,21)(1,`p`,65),qS(2),aC(3,`t`),vd(),dS(4,Nt,25,18)(5,At,2,3,`ui-empty`,66),vd()),t&2){let e=SS(2);hD(2),ey(lC(3,2,`agents.graph.hint`)),hD(2),hS(e.subgraph().nodes.length?4:5)}}function Mt(t,n){if(t&1){let e=DS();da(0,`ui-filter-bar`,12),oy(`queryChange`,function(r){Hh(e);let m=SS();return YS(m.query,r)||(m.query=r),Vh(r)}),da(1,`button`,9),Ma(`click`,function(){Hh(e);let r=SS();return Vh(r.domain.set(null))}),qS(2),aC(3,`t`),vd(),mS(4,Le,2,3,`button`,3,gS),dS(6,Ge,8,10,`select`,13),dS(7,je,8,10,`select`,14),dS(8,We,9,11,`select`,15),vd(),dS(9,Je,10,7,`section`,16),dS(10,it,21,11,`section`,17),dS(11,gt,125,87,`section`,18),dS(12,Ct,4,1,`section`,19),dS(13,Pt,31,22,`section`,20),dS(14,Tt,6,4,`section`,21)}if(t&2){let e,l,r=SS();ry(`query`,r.query),hD(),Ar(`data-tone`,r.domain()===null?`accent`:null)(`aria-pressed`,r.domain()===null),hD(),bd(` `,lC(3,13,`state.all`),` `),hD(2),yS(r.domainOpts()),hD(2),hS(r.skillOpts().length?6:-1),hD(),hS(r.hostOpts().length?7:-1),hD(),hS(r.forgeOpts().declared.length||r.forgeOpts().hasUndeclared?8:-1),hD(),hS(r.compareIds().length?9:-1),hD(),hS((e=r.compareRows())?10:-1,e),hD(),hS((l=r.selected())?11:-1,l),hD(),hS(r.mode()===`cards`?12:-1),hD(),hS(r.mode()===`table`?13:-1),hD(),hS(r.mode()===`graph`?14:-1)}}function Bt(t,n){t&1&&(Sa(0,`ui-empty`,8),aC(1,`t`)),t&2&&qm(`title`,lC(1,1,`agents.none`))}var Te=class t{api=p(g);store=p(g$1);prefs=p(rE);destroyRef=p(ve);q=rn(``);agents=k([]);error=k(null);query=k(``);domain=k(null);skill=k(null);host=k(null);forge=k(null);selected=k(null);loading=k(!0);modes=[`cards`,`table`,`graph`];mode=k(`cards`);undeclared=L;compareIds=k([]);skillsSrc=new l$1;layouts=e;layoutName=k(`cose`);canvasEl=LU(`canvasEl`);rendererReady=k(!1);renderer=null;mounting=null;knownForges=tn(()=>{let n=new Set,e=this.store.descriptor()?.forge_id;e&&n.add(e);for(let l of this.agents()){let r=M(l,n);r&&n.add(r)}return n});domainOpts=tn(()=>Ee(this.agents()));skillOpts=tn(()=>Pe(this.agents()));hostOpts=tn(()=>we(this.agents()));forgeOpts=tn(()=>Ie(this.agents(),this.knownForges()));filtered=tn(()=>ke(this.agents(),{query:this.query(),domain:this.domain(),skill:this.skill(),host:this.host(),forge:this.forge()},this.knownForges()));comparePair=tn(()=>{let n=new Map(this.agents().map(e=>[e.id,e]));return this.compareIds().map(e=>n.get(e)).filter(e=>e!==void 0).slice(0,2)});compareRows=tn(()=>{let n=this.comparePair();return n.length===2?Ne(n[0],n[1],this.knownForges()):null});fed=tn(()=>H({agents:this.agents(),skills:this.skillsSrc.data(),servingForge:this.store.descriptor()?.forge_id??null,availability:{agents:`loaded`,skills:this.skillsSrc.data()?`loaded`:this.skillsSrc.unavailable()?`unavailable`:`unverified`,bootstrap:this.store.descriptor()?`loaded`:`unverified`}}));subgraph=tn(()=>Ae(this.fed(),new Set(this.filtered().map(n=>n.id))));graphKinds=tn(()=>G$1.filter(n=>(this.subgraph().counts[n]??0)>0));declaredForge=M;constructor(){Oo(()=>{let n=this.canvasEl()?.nativeElement??null;n&&!this.renderer&&this.mountCanvas(n),!n&&this.renderer&&this.destroyCanvas()}),Oo(()=>{this.rendererReady(),this.renderer&&this.renderer.setData(F(this.subgraph()))}),Oo(()=>{this.rendererReady();let n=this.renderer;if(!n)return;let e=this.selected();n.select(e?`agent:${e.id}`:null),n.highlight(new Set,new Set)}),Oo(()=>this.prefs.setFilter(`agents`,this.query())),this.destroyRef.onDestroy(()=>this.destroyCanvas()),this.load()}ngOnInit(){let n=this.q();if(n)this.query.set(n);else{let e=this.prefs.filterFor(`agents`);e&&this.query.set(e)}}async load(){this.error.set(null),this.loading.set(!0);let n$1=this.skillsSrc.load(()=>this.api.skills());try{this.agents.set(await hE(this.api.agents()))}catch(e){this.error.set(e instanceof n?e:new n(0))}finally{this.loading.set(!1)}await n$1}setMode(n){this.mode.set(n)}toggleDomain(n){this.domain.set(this.domain()===n?null:n)}onSkill(n){let e=n.target.value;this.skill.set(e||null)}onHost(n){let e=n.target.value;this.host.set(e||null)}onForge(n){let e=n.target.value;this.forge.set(e||null)}labelFor(n){return this.agents().find(e=>e.id===n)?.name||n}toggleCompare(n){let e=this.compareIds();if(e.includes(n)){this.compareIds.set(e.filter(l=>l!==n));return}this.compareIds.set([...e,n].slice(-2))}canvasRenderer(){return this.renderer}async mountCanvas(n){if(!this.mounting){this.mounting=n;try{let{createCytoscapeRenderer:e}=await import(`./chunk-BAgCErjk.js`);if(this.canvasEl()?.nativeElement!==n||this.renderer)return;let l=document.documentElement.dataset.motion,m=e({animate:!(l===`reduced`||l!==`full`&&typeof matchMedia<`u`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches)});m.mount(n),m.onSelect(T=>this.onCanvasSelect(T)),this.renderer=m,this.rendererReady.set(!0)}finally{this.mounting=null}}}destroyCanvas(){this.renderer?.destroy(),this.renderer=null,this.rendererReady.set(!1)}onCanvasSelect(n){if(n?.type===`node`&&n.id.startsWith(`agent:`)){let e=n.id.slice(6);this.selected.set(this.agents().find(l=>l.id===e)??null)}else n===null&&this.selected.set(null)}setLayout(n){this.layoutName.set(n),this.renderer?.layout(n)}resetLayout(){this.renderer?.layout(this.layoutName())}fitCanvas(){this.renderer?.fit()}exportPng(){let n=this.renderer?.exportPng();n&&this.download(n,`forge-agents-graph.png`)}exportSvg(){let n=this.renderer?.exportSvg();n&&this.download(`data:image/svg+xml;charset=utf-8,${encodeURIComponent(n)}`,`forge-agents-graph.svg`)}download(n,e){let l=document.createElement(`a`);l.href=n,l.download=e,l.click()}kindColor(n){return m$1[n].color}kindShape(n){return m$1[n].shape}static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`page-agents`]],viewQuery:function(e,l){e&1&&Km(l.canvasEl,Be,5),e&2&&NS()},inputs:{q:[1,`q`]},decls:15,vars:16,consts:[[`canvasEl`,``],[`hintId`,`agent`,3,`title`,`subtitle`],[`role`,`group`,`data-toggle`,`view`,1,`view-toggle`],[`type`,`button`,1,`fg-pill`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[3,`error`],[`role`,`status`,1,`grid`],[`icon`,`agents`,3,`title`],[`type`,`button`,1,`fg-pill`,3,`click`],[3,`retry`,`error`],[`kind`,`card`,3,`lines`],[`placeholder`,`agents.search`,3,`queryChange`,`query`],[1,`input`,`sel`,3,`value`],[`data-filter`,`host`,1,`input`,`sel`,3,`value`],[`data-filter`,`forge`,1,`input`,`sel`,3,`value`],[`data-section`,`compare-tray`,`aria-live`,`polite`,1,`card`,`tray`],[`data-section`,`compare`,`aria-live`,`polite`,1,`card`,`cmp`],[`data-section`,`agent-detail`,`aria-live`,`polite`,1,`card`,`detail`,`fg-enter`],[`data-section`,`cards`,1,`grid`],[`data-section`,`table`,1,`card`],[`data-section`,`graph`,1,`card`],[1,`input`,`sel`,3,`change`,`value`],[`value`,``],[3,`value`,`selected`],[`data-filter`,`host`,1,`input`,`sel`,3,`change`,`value`],[`data-filter`,`forge`,1,`input`,`sel`,3,`change`,`value`],[1,`tray__label`],[1,`tray__chip`],[1,`muted`],[1,`btn`,`btn--mini`,3,`click`],[`type`,`button`,1,`tray__x`,3,`click`],[1,`cmp__head`],[`name`,`diff`,3,`size`],[1,`icon-btn`,3,`click`],[`name`,`chevron-right`,3,`size`],[1,`table-wrap`],[1,`table`,`cmp__table`],[`scope`,`col`],[`scope`,`row`],[1,`undecl`],[1,`detail__head`],[`name`,`agents`,3,`size`],[1,`detail__actions`],[`data-action`,`compare`,1,`btn`,`btn--mini`,3,`click`],[1,`kv`],[1,`links`],[`state`,`UNVERIFIED`],[3,`state`,`labelOverride`],[1,`unv-cell`],[1,`chip-link`,3,`routerLink`,`queryParams`],[1,`chip`],[1,`chip-link`,3,`routerLink`,`fragment`],[`data-lift`,``,1,`card`],[1,`head`],[1,`role`],[1,`tags`],[1,`row`],[`data-action`,`detail`,1,`btn`,`btn--mini`,3,`click`],[1,`table`],[1,`sr-only`],[1,`row-id`],[1,`row-actions`],[1,`linklike`,3,`routerLink`,`fragment`],[`colspan`,`7`,1,`empty-cell`],[1,`muted`,`graph__hint`],[`icon`,`network`,3,`title`],[`role`,`toolbar`,1,`fed__toolbar`],[1,`toolbar-gap`],[`type`,`button`,`data-action`,`reset`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`fit`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`png`,1,`fg-pill`,3,`click`],[`type`,`button`,`data-action`,`svg`,1,`fg-pill`,3,`click`],[`data-canvas`,`agents`,`role`,`application`,1,`fed__canvas`],[1,`fed__legend`],[1,`legend-dot`]],template:function(e,l){if(e&1&&(da(0,`ui-page-header`,1),aC(1,`t`),aC(2,`t`),da(3,`div`,2),aC(4,`t`),mS(5,Re,3,6,`button`,3,gS),vd(),da(7,`button`,4),Ma(`click`,function(){return l.load()}),Sa(8,`ui-icon`,5),qS(9),aC(10,`t`),vd()(),dS(11,$e,1,1,`ui-error`,6),dS(12,qe,3,4,`section`,7),dS(13,Mt,15,15)(14,Bt,2,3,`ui-empty`,8)),e&2){let r;qm(`title`,lC(1,8,`agents.title`))(`subtitle`,lC(2,10,`agents.subtitle`)),hD(3),Ar(`aria-label`,lC(4,12,`agents.view.label`)),hD(2),yS(l.modes),hD(3),qm(`size`,15),hD(),bd(` `,lC(10,14,`state.refresh`),` `),hD(2),hS((r=l.error())?11:-1,r),hD(),hS(l.loading()?12:-1),hD(),hS(l.agents().length?13:!l.error()&&!l.loading()?14:-1)}},dependencies:[vc,T,I,_,D,cE,k$1,h,aE],styles:[`.grid[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-4);grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2)}h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em;display:inline-flex;align-items:center;gap:var(--%NS%space-2)}h2[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.role[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);font-size:var(--%NS%font-sm);margin:4px 0}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);margin:0}.tags[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);margin:4px 0 0}.tags[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-weight:600}.sel[_ngcontent-%COMP%]{width:auto;min-width:12rem;padding-block:2px;font-size:var(--%NS%font-xs)}.row[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3);display:flex;justify-content:flex-end;gap:var(--%NS%space-2)}.btn--mini[_ngcontent-%COMP%]{padding:2px var(--%NS%space-2);font-size:var(--%NS%font-xs);gap:4px}.view-toggle[_ngcontent-%COMP%]{display:inline-flex;gap:var(--%NS%space-1);margin-right:var(--%NS%space-2)}.tray[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-4);padding-block:var(--%NS%space-2)}.tray__label[_ngcontent-%COMP%]{font-weight:650;font-size:var(--%NS%font-sm)}.tray__chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;font-size:var(--%NS%font-xs);font-weight:600;color:var(--%NS%accent-ink);background:var(--%NS%accent-bg);border-radius:var(--%NS%radius-pill);padding:2px 6px 2px 10px}.tray__x[_ngcontent-%COMP%]{border:0;background:none;color:inherit;font-size:var(--%NS%font-sm);line-height:1;cursor:pointer;padding:0 2px}.cmp[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);border-left:3px solid var(--%NS%info)}.cmp__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.cmp__table[_ngcontent-%COMP%] th[scope=row][_ngcontent-%COMP%]{text-align:left;font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted);white-space:nowrap}.cmp__table[_ngcontent-%COMP%] tr[data-differ][_ngcontent-%COMP%] td[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--%NS%info) 8%,transparent)}.undecl[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);font-style:italic;font-size:var(--%NS%font-xs)}.row-id[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.row-actions[_ngcontent-%COMP%]{white-space:nowrap;display:flex;gap:var(--%NS%space-1);justify-content:flex-end}.empty-cell[_ngcontent-%COMP%]{text-align:center;color:var(--%NS%fg-muted);padding:var(--%NS%space-4)!important}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.graph__hint[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-size:var(--%NS%font-sm)}.fed__toolbar[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-2)}.toolbar-gap[_ngcontent-%COMP%]{flex:1}.fed__canvas[_ngcontent-%COMP%]{height:420px;border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:var(--%NS%bg-elevated);overflow:hidden}.fed__canvas[_ngcontent-%COMP%] canvas[_ngcontent-%COMP%]{outline:none}.fed__legend[_ngcontent-%COMP%]{list-style:none;display:flex;flex-wrap:wrap;gap:var(--%NS%space-1) var(--%NS%space-3);padding:0;margin:var(--%NS%space-2) 0 0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.fed__legend[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-1)}.legend-dot[_ngcontent-%COMP%]{width:10px;height:10px;display:inline-block;border-radius:3px;flex:none}.detail[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4);border-left:3px solid var(--%NS%accent)}.detail__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.detail__actions[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-2)}.kv[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);margin:0}.kv[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-3)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{min-width:9rem;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm);flex:none}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;min-width:0}.unv-cell[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}.links[_ngcontent-%COMP%]{display:inline-flex;flex-wrap:wrap;gap:4px}.chip[_ngcontent-%COMP%]{margin-left:4px}`]})};export{Te as AgentsPage}; \ No newline at end of file diff --git a/portal/assets/chunk-hh6-Palp.js b/portal/assets/chunk-hh6-Palp.js new file mode 100644 index 0000000..cac7711 --- /dev/null +++ b/portal/assets/chunk-hh6-Palp.js @@ -0,0 +1 @@ +import{$ as dS,At as qm,Bt as tn,Ct as oC,D as Oo,E as Na,Et as p,F as Sa,J as aC,Jt as vd,P as SS,Pt as rn,Q as cE,Qt as yS,S as Ma,Ut as uC,Y as aE,Yt as ve$1,Z as bd,at as ey,ct as hD,et as da,gt as k,i as Ar,it as ei,jt as rC,kt as qS,ot as gS,p as Hh,qt as vc,s as DS,ut as hS,vt as lC,xt as nC,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{r as g}from"./main-XW2ZMSO5.js";import{a as l,s as y}from"./chunk-BNDlNg-C.js";import{t as _}from"./chunk-16deWS0U.js";import{t as D$1}from"./chunk-Bg2lccQE.js";import{n as k$1,t as I}from"./chunk-DQtX_-dj.js";import{t as T}from"./chunk-BGgpmc9t.js";import{r as p$1}from"./chunk-D-7Jr8A3.js";import{n as k$2,t as V}from"./chunk-Br6NMJL9.js";function ke(t){if(!t)return null;let n=Date.parse(t);return Number.isFinite(n)?n:null}var ge=t=>t.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().trim();function ye(t){let n=t.map((a,c)=>({event:a,idx:c,timeMs:ke(a.timestamp)}));return{placed:n.filter(a=>a.timeMs!==null).sort((a,c)=>a.timeMs-c.timeMs||a.idx-c.idx),unplaced:n.filter(a=>a.timeMs===null)}}var Te=new Set([`refused`,`failed`,`timeout`,`error`,`denied`]);function Ne(t){return Te.has((t.status??``).toLowerCase())}function ve(t){let n=new Map,e=[];for(let m of t){let C=m.correlation_id;if(C){let N=n.get(C);N?N.push(m):n.set(C,[m])}else e.push(m)}let l=[],a=(m,C)=>{let{placed:N,unplaced:U}=ye(C),A=N.length?N[0].timeMs:null,z=N.length?N[N.length-1].timeMs:null;return{key:m??``,correlationId:m,events:[...N,...U],placed:N,unplaced:U,startMs:A,endMs:z,durationMs:A!==null&&z!==null?z-A:null,errorCount:C.filter(Ne).length,spans:Oe(N),leftPct:0,widthPct:0,tickGradient:Be(N,A,z),partial:U.length>0}};for(let[m,C]of n)l.push(a(m,C));let c=[];if(e.length){let m=a(null,e);c=m.events,l.push(m)}l.sort((m,C)=>m.startMs===null&&C.startMs===null?m.keym.startMs).filter(m=>m!==null),f=l.map(m=>m.endMs).filter(m=>m!==null),M=v.length?Math.min(...v):null,V=f.length?Math.max(...f):null,O=M!==null&&V!==null?V-M:0;for(let m of l){m.startMs===null||M===null||!O?(m.leftPct=0,m.widthPct=m.startMs===null?0:100):(m.leftPct=(m.startMs-M)/O*100,m.widthPct=Math.max(0,((m.endMs??m.startMs)-m.startMs)/O*100));for(let C of m.spans)M===null||!O?(C.leftPct=0,C.widthPct=0):(C.leftPct=(C.startMs-M)/O*100,C.widthPct=Math.max(0,(C.endMs-C.startMs)/O*100))}let Y=l.reduce((m,C)=>m+C.unplaced.length,0);return{groups:l,windowStart:M,windowEnd:V,unlinked:c,unplacedCount:Y,partial:Y>0}}function Oe(t){let n=new Map;for(let l of t){let a=l.timeMs;if(a===null)continue;let c=l.event.span_id??``,v=n.get(c)??{},f=l.event.duration_ms;typeof f==`number`&&f>=0&&(v.end=a,v.start=a-f),l.event.event_type.endsWith(`.start`)&&(v.start=v.start===void 0?a:Math.min(v.start,a)),n.set(c,v)}let e=[];for(let[l,a]of n)a.start===void 0||a.end===void 0||a.endl.startMs-a.startMs||(l.spanId+f.toFixed(3);if(l<=0){let f=t[t.length-1],M=j[D(f.event.status)]??j.muted;return`linear-gradient(90deg, ${M} 0%, ${M} ${H}%, transparent ${H}%)`}let c=t.map(f=>Math.max(0,Math.min((f.timeMs-n)/l*100,100-H))),v=[`transparent 0%`];for(let f=0;fM})}return a}function Ce(t){return[t.event_type,t.source??``,t.target??``,t.correlation_id??``,t.span_id??``,t.status??``,JSON.stringify(t.metadata??{}),JSON.stringify(t.evidence??{})].map(ge).join(` `)}function Ee(t){return new Map(t.map(n=>[n,Ce(n)]))}function be(t,n,e){let l=n.correlation.trim(),a=ge(n.q);return t.filter(c=>n.type!==null&&c.event_type!==n.type||n.status!==null&&c.status!==n.status||l&&!(c.correlation_id??``).includes(l)?!1:a?(e?.get(c)??Ce(c)).includes(a):!0)}function Se(t){let n=new Map,e=new Map,l=new Map;return t.forEach((a,c)=>{if(l.set(a,c),a.correlation_id){let v=n.get(a.correlation_id);v?v.push(a):n.set(a.correlation_id,[a])}if(a.span_id){let v=e.get(a.span_id);v?v.push(a):e.set(a.span_id,[a])}}),{byCorrelation:n,bySpan:e,pos:l}}function he(t,n){let e=new Set;for(let l of n.byCorrelation.get(t.correlation_id??``)??[])l!==t&&e.add(l);for(let l of n.bySpan.get(t.span_id??``)??[])l!==t&&e.add(l);return[...e].sort((l,a)=>(n.pos.get(l)??0)-(n.pos.get(a)??0))}function Pe(t,n){return t.parent_span_id?n.bySpan.get(t.parent_span_id)?.[0]??null:null}function D(t){let n=(t??``).toLowerCase();return[`ok`,`done`,`completed`,`success`,`succeeded`,`pass`,`passed`].includes(n)?`supported`:[`failed`,`fail`,`error`,`refused`,`denied`].includes(n)?`error`:[`skipped`,`cancelled`,`canceled`,`partial`,`degraded`,`timeout`].includes(n)?`warn`:[`running`,`pending`,`started`,`in_progress`,`planning`,`verifying`].includes(n)?`info`:`muted`}function X(t){return t?t.length>10?`${t.slice(0,8)}\u2026`:t:`—`}function K(t){if(!t)return`—`;let n=new Date(t);return Number.isNaN(n.getTime())?t:n.toLocaleString()}function Ve(t){return t===null?`—`:`+${p$1(t)}`}function Me(t,n=0){return t.map((e,l)=>({e,position:n+l+1,at:K(e.timestamp),kind:D(e.status),label:e.status??`—`,dur:e.duration_ms!==void 0?`${e.duration_ms} ms`:null,flow:e.source||e.target?`${e.source??`—`} \u2192 ${e.target??`—`}`:null,cidShort:e.correlation_id?X(e.correlation_id):null,cidFull:e.correlation_id??null}))}function we(t,n=0){return t.map((e,l)=>{let a=n+l,c=e.event.event;return{step:e,index:a,gap:Ve(e.gapMs),at:K(c.timestamp),kind:D(c.status),label:c.status??`—`,dur:c.duration_ms!==void 0?`${c.duration_ms} ms`:null,flow:c.source||c.target?`${c.source??`—`} \u2192 ${c.target??`—`}`:null,unplaced:e.event.timeMs===null}})}var De=t=>({time:t});var Re=t=>({dropped:t});var $e=t=>({count:t});var Ge=(t,n)=>({current:t,total:n});var Ae=()=>[`/tasks`];var ze=t=>({task:t});var Le=(t,n)=>n.key||`unlinked`;var qe=(t,n)=>n.spanId;var je=(t,n)=>n.step.event.idx;var He=(t,n)=>n.e.event_id??n.position;var Ke=(t,n)=>n.event_id??t;function Ue(t,n){t&1&&(da(0,`section`,5),Sa(1,`ui-state-badge`,8),da(2,`span`,9),qS(3),aC(4,`t`),vd()()),t&2&&(hD(3),ey(lC(4,1,`execution.unavailable`)))}function Je(t,n){if(t&1){let e=DS();da(0,`ui-error`,10),Ma(`retry`,function(){Hh(e);let a=SS();return Vh(a.load())}),vd()}t&2&&qm(`error`,n)}function We(t,n){t&1&&(da(0,`section`,7),aC(1,`t`),Sa(2,`ui-skeleton`,11),vd()),t&2&&(Ar(`aria-label`,lC(1,2,`state.loading`)),hD(2),qm(`lines`,3))}function Qe(t,n){if(t&1&&(da(0,`span`),qS(1),aC(2,`t`),vd()),t&2){let e=SS(2);hD(),bd(` · `,uC(2,1,`common.updatedAt`,rC(4,De,e.stamp(n))))}}function Xe(t,n){if(t&1&&(da(0,`p`,23),Sa(1,`ui-icon`,30),da(2,`span`),qS(3),aC(4,`t`),vd()()),t&2){let e=SS();hD(),qm(`size`,14),hD(2),ey(uC(4,2,`execution.truncated`,rC(5,Re,e.dropped)))}}function Ye(t,n){t&1&&Sa(0,`ui-state-badge`,32)}function Ze(t,n){if(t&1&&(da(0,`code`),qS(1),vd()),t&2){let e=SS().$implicit,l=SS(4);hD(),ey(l.shortId(e.correlationId))}}function et(t,n){t&1&&(da(0,`span`,9),qS(1),aC(2,`t`),vd()),t&2&&(hD(),ey(lC(2,1,`execution.unlinked`)))}function tt(t,n){if(t&1&&Sa(0,`span`,45),t&2){let e=n.$implicit;Na(`left`,e.leftPct,`%`)(`width`,e.widthPct,`%`)}}function nt(t,n){if(t&1){let e=DS();da(0,`div`,36)(1,`button`,39),Ma(`click`,function(){let a=Hh(e).$implicit,c=SS(4);return Vh(c.selectExecution(a))}),da(2,`span`,40),dS(3,Ze,2,1,`code`)(4,et,3,3,`span`,9),da(5,`span`,41),qS(6),vd()(),da(7,`span`,42),mS(8,tt,1,4,`span`,43,qe),vd(),da(10,`span`,44),qS(11),vd()()()}if(t&2){let e=n.$implicit,l=n.$index,a=SS(4);Ar(`aria-setsize`,a.executions().groups.length)(`aria-posinset`,a.tlSlice().start+l+1),hD(),Ar(`data-execution`,e.correlationId??`unlinked`)(`data-selected`,a.selectedCid()===e.correlationId||null)(`data-errors`,e.errorCount||null),hD(),Ar(`title`,e.correlationId),hD(),hS(e.correlationId?3:4),hD(3),ey(e.events.length),hD(),Na(`background-image`,e.tickGradient||null),Ar(`data-ticks`,e.placed.length),hD(),yS(e.spans),hD(3),ey(e.durationMs===null?`—`:a.fmtDur(e.durationMs))}}function it(t,n){if(t&1&&(da(0,`p`,38),qS(1),aC(2,`t`),vd()),t&2){let e=SS(4);hD(),bd(` `,uC(2,1,`execution.timeline.unplaced`,rC(4,$e,e.executions().unplacedCount)),` `)}}function at(t,n){if(t&1){let e=DS();da(0,`div`,34),aC(1,`t`),da(2,`div`,35)(3,`span`),qS(4),vd(),da(5,`span`),qS(6),vd()(),mS(7,nt,12,12,`div`,36,Le),vd(),da(9,`ui-pager`,37),aC(10,`t`),Ma(`pageChange`,function(a){Hh(e);let c=SS(3);return Vh(c.tlPage.set(a))}),vd(),dS(11,it,3,6,`p`,38)}if(t&2){let e=SS(3);Ar(`aria-label`,lC(1,8,`execution.timeline.title`)),hD(4),ey(e.fmtMs(e.executions().windowStart)),hD(2),ey(e.fmtMs(e.executions().windowEnd)),hD(),yS(e.pagedGroups()),hD(2),qm(`total`,e.executions().groups.length)(`pageSize`,e.TL_PAGE)(`page`,e.tlSlice().page)(`label`,lC(10,10,`execution.timeline.title`)),hD(2),hS(e.executions().unplacedCount?11:-1)}}function ot(t,n){t&1&&(Sa(0,`ui-empty`,33),aC(1,`t`)),t&2&&qm(`title`,lC(1,1,`execution.timeline.empty`))}function rt(t,n){if(t&1&&(da(0,`section`,24)(1,`h2`,31),qS(2),aC(3,`t`),dS(4,Ye,1,0,`ui-state-badge`,32),vd(),da(5,`p`,9),qS(6),aC(7,`t`),vd(),dS(8,at,12,12)(9,ot,2,3,`ui-empty`,33),vd()),t&2){let e=SS(2);hD(2),bd(` `,lC(3,4,`execution.timeline.title`),` `),hD(2),hS(e.executions().partial?4:-1),hD(2),ey(lC(7,6,`execution.timeline.hint`)),hD(2),hS(e.executions().windowStart!==null?8:9)}}function lt(t,n){if(t&1){let e=DS();da(0,`button`,58),Ma(`click`,function(){Hh(e);let a=SS(3);return Vh(a.pause())}),qS(1),aC(2,`t`),vd()}t&2&&(hD(),bd(` `,lC(2,1,`execution.replay.pause`),` `))}function dt(t,n){if(t&1){let e=DS();da(0,`button`,59),Ma(`click`,function(){Hh(e);let a=SS(3);return Vh(a.play())}),qS(1),aC(2,`t`),vd()}if(t&2){let e=SS(3);qm(`disabled`,e.replayIdx()>=e.replaySteps().length-1),hD(),bd(` `,lC(2,2,`execution.replay.play`),` `)}}function ct(t,n){if(t&1&&(da(0,`option`,56),qS(1),vd()),t&2){let e=n.$implicit,l=SS(3);qm(`value`,e)(`selected`,l.speed()===e),hD(),bd(`×`,e)}}function st(t,n){t&1&&(da(0,`span`,62),aC(1,`t`),qS(2,`⇥`),vd()),t&2&&qm(`title`,lC(1,1,`execution.replay.compressed`))}function pt(t,n){if(t&1&&(da(0,`span`,66),qS(1),vd()),t&2){let e=SS().$implicit;hD(),ey(e.dur)}}function ut(t,n){if(t&1&&(da(0,`span`,67),qS(1),vd()),t&2){let e=SS().$implicit;hD(),ey(e.flow)}}function _t(t,n){t&1&&(da(0,`span`,68),qS(1),aC(2,`t`),vd()),t&2&&(hD(),ey(lC(2,1,`execution.noTimestamp`)))}function mt(t,n){if(t&1){let e=DS();da(0,`li`)(1,`button`,60),Ma(`click`,function(){let a=Hh(e).$implicit,c=SS(3);return c.inspect(a.step.event.event),Vh(c.replayIdx.set(a.index))}),da(2,`span`,61),aC(3,`t`),qS(4),vd(),dS(5,st,3,3,`span`,62),da(6,`code`,63),qS(7),vd(),da(8,`span`,64),qS(9),vd(),Sa(10,`ui-state-badge`,65),dS(11,pt,2,1,`span`,66),dS(12,ut,2,1,`span`,67),dS(13,_t,3,3,`span`,68),vd()()}if(t&2){let e=n.$implicit,l=SS(3);Ar(`data-current`,e.index===l.replayIdx()||null)(`aria-setsize`,l.replaySteps().length)(`aria-posinset`,e.index+1),hD(),Ar(`data-current`,e.index===l.replayIdx()||null),hD(),Ar(`title`,lC(3,14,`execution.replay.gap`)),hD(2),ey(e.gap),hD(),hS(e.step.compressed?5:-1),hD(2),ey(e.step.event.event.event_type),hD(2),ey(e.at),hD(),qm(`state`,e.kind)(`labelOverride`,e.label),hD(),hS(e.dur?11:-1),hD(),hS(e.flow?12:-1),hD(),hS(e.unplaced?13:-1)}}function xt(t,n){if(t&1){let e=DS();da(0,`section`,25)(1,`h2`,46),Sa(2,`ui-icon`,47),qS(3),aC(4,`t`),da(5,`span`,48),qS(6),vd()(),da(7,`p`,9),qS(8),aC(9,`t`),vd(),da(10,`div`,49)(11,`button`,50),Ma(`click`,function(){Hh(e);let a=SS(2);return Vh(a.stepReplay(-1))}),qS(12),aC(13,`t`),vd(),dS(14,lt,3,3,`button`,51)(15,dt,3,4,`button`,52),da(16,`button`,53),Ma(`click`,function(){Hh(e);let a=SS(2);return Vh(a.stepReplay(1))}),qS(17),aC(18,`t`),vd(),da(19,`label`,54)(20,`span`,9),qS(21),aC(22,`t`),vd(),da(23,`select`,55),aC(24,`t`),Ma(`change`,function(a){Hh(e);let c=SS(2);return Vh(c.setSpeed(a))}),mS(25,ct,2,3,`option`,56,gS),vd()(),da(27,`span`,9),qS(28),aC(29,`t`),vd()(),da(30,`ol`,57),mS(31,mt,14,16,`li`,null,je),vd(),da(33,`ui-pager`,37),aC(34,`t`),Ma(`pageChange`,function(a){Hh(e);let c=SS(2);return Vh(c.stepManual.set(a))}),vd()()}if(t&2){let e=SS(2);hD(2),qm(`size`,14),hD(),bd(` `,lC(4,16,`execution.replay.title`),` `),hD(3),ey(e.replayScope()),hD(2),ey(lC(9,18,`execution.replay.hint`)),hD(3),qm(`disabled`,e.replayIdx()<=0),hD(),bd(` `,lC(13,20,`execution.replay.prev`),` `),hD(2),hS(e.playing()?14:15),hD(2),qm(`disabled`,e.replayIdx()>=e.replaySteps().length-1),hD(),bd(` `,lC(18,22,`execution.replay.next`),` `),hD(4),ey(lC(22,24,`execution.replay.speed`)),hD(2),Ar(`aria-label`,lC(24,26,`execution.replay.speed`)),hD(2),yS(e.SPEEDS),hD(3),bd(` `,uC(29,28,`execution.replay.step`,oC(33,Ge,e.replayIdx()+1,e.replaySteps().length)),` `),hD(3),yS(e.pagedStepRows()),hD(2),qm(`total`,e.replaySteps().length)(`pageSize`,e.STEPS_PAGE)(`page`,e.stepSlice().page)(`label`,lC(34,31,`execution.replay.title`))}}function gt(t,n){if(t&1&&(da(0,`option`,56),qS(1),vd()),t&2){let e=n.$implicit,l=SS(3);qm(`value`,e)(`selected`,l.typeFilter()===e),hD(),ey(e)}}function yt(t,n){if(t&1&&(da(0,`option`,56),qS(1),vd()),t&2){let e=n.$implicit,l=SS(3);qm(`value`,e)(`selected`,l.statusFilter()===e),hD(),ey(e)}}function vt(t,n){if(t&1){let e=DS();da(0,`div`,28)(1,`label`,69)(2,`span`,70),qS(3),aC(4,`t`),vd(),da(5,`select`,71),Ma(`change`,function(a){Hh(e);let c=SS(2);return Vh(c.setType(a))}),da(6,`option`,72),qS(7),aC(8,`t`),vd(),mS(9,gt,2,3,`option`,56,gS),vd()(),da(11,`label`,69)(12,`span`,70),qS(13),aC(14,`t`),vd(),da(15,`select`,73),Ma(`change`,function(a){Hh(e);let c=SS(2);return Vh(c.setStatus(a))}),da(16,`option`,72),qS(17),aC(18,`t`),vd(),mS(19,yt,2,3,`option`,56,gS),vd()(),da(21,`label`,69)(22,`span`,70),qS(23),aC(24,`t`),vd(),da(25,`input`,74),aC(26,`t`),Ma(`input`,function(a){Hh(e);let c=SS(2);return Vh(c.setCorr(a))}),vd()(),da(27,`label`,69)(28,`span`,70),qS(29),aC(30,`t`),vd(),da(31,`input`,75),aC(32,`t`),Ma(`input`,function(a){Hh(e);let c=SS(2);return Vh(c.setQuery(a))}),vd()()()}if(t&2){let e=SS(2);hD(3),ey(lC(4,12,`execution.filter.type`)),hD(3),qm(`selected`,e.typeFilter()===null),hD(),ey(lC(8,14,`state.all`)),hD(2),yS(e.typeOptions()),hD(4),ey(lC(14,16,`execution.filter.status`)),hD(3),qm(`selected`,e.statusFilter()===null),hD(),ey(lC(18,18,`state.all`)),hD(2),yS(e.statusOptions()),hD(4),ey(lC(24,20,`execution.filter.corr`)),hD(2),qm(`value`,e.corrFilter()),Ar(`aria-label`,lC(26,22,`execution.filter.corr`)),hD(4),ey(lC(30,24,`execution.filter.search`)),hD(2),qm(`value`,e.qFilter()),Ar(`aria-label`,lC(32,26,`execution.filter.search`))}}function ft(t,n){if(t&1&&qS(0),t&2){let e=SS().$implicit;bd(` `,e.flow,` `)}}function Ct(t,n){t&1&&(da(0,`span`,9),qS(1,`—`),vd())}function Et(t,n){if(t&1&&qS(0),t&2){let e=SS().$implicit;bd(` `,e.dur,` `)}}function bt(t,n){t&1&&(da(0,`span`,9),qS(1,`—`),vd())}function St(t,n){if(t&1&&(da(0,`code`,82),qS(1),vd()),t&2){let e=SS().$implicit;Ar(`title`,n),hD(),ey(e.cidShort)}}function ht(t,n){t&1&&(da(0,`span`,9),qS(1,`—`),vd())}function Pt(t,n){if(t&1){let e=DS();da(0,`tr`,80),Ma(`click`,function(){let a=Hh(e).$implicit,c=SS(3);return Vh(c.inspect(a.e))})(`keydown.enter`,function(){let a=Hh(e).$implicit,c=SS(3);return Vh(c.inspect(a.e))})(`keydown.space`,function(a){let c=Hh(e).$implicit;return SS(3).inspect(c.e),Vh(a.preventDefault())}),da(1,`td`)(2,`code`),qS(3),vd()(),da(4,`td`,66),qS(5),vd(),da(6,`td`),Sa(7,`ui-state-badge`,65),vd(),da(8,`td`,81),dS(9,ft,1,1)(10,Ct,2,0,`span`,9),vd(),da(11,`td`,66),dS(12,Et,1,1)(13,bt,2,0,`span`,9),vd(),da(14,`td`),dS(15,St,2,2,`code`,82)(16,ht,2,0,`span`,9),vd()()}if(t&2){let e,l=n.$implicit,a=SS(3);Ar(`data-selected`,a.inspected()===l.e||null)(`aria-rowindex`,l.position+1),hD(3),ey(l.e.event_type),hD(2),ey(l.at),hD(2),qm(`state`,l.kind)(`labelOverride`,l.label),hD(2),hS(l.flow?9:10),hD(3),hS(l.dur?12:13),hD(3),hS((e=l.cidFull)?15:16,e)}}function Mt(t,n){if(t&1){let e=DS();da(0,`div`,76)(1,`table`,77)(2,`thead`)(3,`tr`)(4,`th`,78),qS(5),aC(6,`t`),vd(),da(7,`th`,78),qS(8),aC(9,`t`),vd(),da(10,`th`,78),qS(11),aC(12,`t`),vd(),da(13,`th`,78),qS(14),aC(15,`t`),vd(),da(16,`th`,78),qS(17),aC(18,`t`),vd(),da(19,`th`,78),qS(20),aC(21,`t`),vd()()(),da(22,`tbody`),mS(23,Pt,17,9,`tr`,79,He),vd()()(),da(25,`ui-pager`,37),aC(26,`t`),Ma(`pageChange`,function(a){Hh(e);let c=SS(2);return Vh(c.eventsPage.set(a))}),vd()}if(t&2){let e=SS(2);hD(),Ar(`aria-rowcount`,e.filteredEvents().length+1),hD(4),ey(lC(6,11,`execution.col.type`)),hD(3),ey(lC(9,13,`execution.col.at`)),hD(3),ey(lC(12,15,`execution.col.status`)),hD(3),ey(lC(15,17,`execution.col.flow`)),hD(3),ey(lC(18,19,`execution.col.duration`)),hD(3),ey(lC(21,21,`execution.col.correlation`)),hD(3),yS(e.pagedEventRows()),hD(2),qm(`total`,e.filteredEvents().length)(`pageSize`,e.EVENTS_PAGE)(`page`,e.eventSlice().page)(`label`,lC(26,23,`execution.events`))}}function wt(t,n){t&1&&(Sa(0,`ui-empty`,83),aC(1,`t`)),t&2&&qm(`title`,lC(1,1,`execution.noMatches`))}function It(t,n){t&1&&(Sa(0,`ui-empty`,84),aC(1,`t`),aC(2,`t`)),t&2&&qm(`title`,lC(1,2,`execution.empty`))(`hint`,lC(2,4,`execution.empty.hint`))}function kt(t,n){if(t&1&&dS(0,wt,2,3,`ui-empty`,83)(1,It,3,6,`ui-empty`,84),t&2){let e=SS(2);hS(e.events().length?0:1)}}function Tt(t,n){if(t&1&&(da(0,`span`,87),qS(1),vd()),t&2){let e=SS();hD(),ey(e.event_id)}}function Nt(t,n){if(t&1&&(da(0,`div`,91)(1,`dt`),qS(2),aC(3,`t`),vd(),da(4,`dd`)(5,`a`,95),qS(6),vd()()()),t&2){let e=n;hD(2),ey(lC(3,4,`execution.insp.task`)),hD(3),qm(`routerLink`,nC(6,Ae))(`queryParams`,rC(7,ze,e)),hD(),bd(` `,e,` `)}}function Ot(t,n){if(t&1){let e=DS();da(0,`p`,92),qS(1),aC(2,`t`),da(3,`button`,96),Ma(`click`,function(){let a=Hh(e),c=SS(3);return Vh(c.inspect(a))}),da(4,`code`),qS(5),vd()()()}t&2&&(hD(),bd(` `,lC(2,2,`execution.insp.causedBy`),` `),hD(4),ey(n.event_type))}function Bt(t,n){if(t&1&&(da(0,`details`,93)(1,`summary`),qS(2),aC(3,`t`),vd(),da(4,`pre`),qS(5),vd()()),t&2){let e=SS(),l=SS(2);hD(2),ey(lC(3,2,`execution.insp.metadata`)),hD(3),ey(l.json(e.metadata))}}function Ft(t,n){if(t&1&&(da(0,`details`,93)(1,`summary`),qS(2),aC(3,`t`),vd(),da(4,`pre`),qS(5),vd()()),t&2){let e=SS(),l=SS(2);hD(2),ey(lC(3,2,`execution.insp.evidence`)),hD(3),ey(l.json(e.evidence))}}function Vt(t,n){if(t&1){let e=DS();da(0,`li`)(1,`button`,97),Ma(`click`,function(){let a=Hh(e).$implicit,c=SS(4);return Vh(c.inspect(a))}),da(2,`code`),qS(3),vd()(),da(4,`span`,9),qS(5),vd()()}if(t&2){let e=n.$implicit,l=SS(4);hD(3),ey(e.event_type),hD(2),ey(l.fmtAt(e.timestamp))}}function Dt(t,n){if(t&1&&(da(0,`div`,94)(1,`h3`),qS(2),aC(3,`t`),vd(),da(4,`ul`),mS(5,Vt,6,2,`li`,null,Ke),vd()()),t&2){let e=SS(),l=SS(2);hD(2),ey(lC(3,1,`execution.insp.related`)),hD(3),yS(l.related(e))}}function Rt(t,n){if(t&1){let e=DS();da(0,`section`,29)(1,`header`,85)(2,`h2`),Sa(3,`ui-icon`,86),da(4,`code`),qS(5),vd(),dS(6,Tt,2,1,`span`,87),vd(),da(7,`button`,88),aC(8,`t`),Ma(`click`,function(){Hh(e);let a=SS(2);return Vh(a.inspected.set(null))}),Sa(9,`ui-icon`,89),vd()(),da(10,`dl`,90)(11,`div`,91)(12,`dt`),qS(13),aC(14,`t`),vd(),da(15,`dd`)(16,`code`),qS(17),vd()()(),da(18,`div`,91)(19,`dt`),qS(20),aC(21,`t`),vd(),da(22,`dd`),qS(23),vd()(),da(24,`div`,91)(25,`dt`),qS(26),aC(27,`t`),vd(),da(28,`dd`),Sa(29,`ui-state-badge`,65),vd()(),da(30,`div`,91)(31,`dt`),qS(32),aC(33,`t`),vd(),da(34,`dd`,66),qS(35),vd()(),da(36,`div`,91)(37,`dt`),qS(38),aC(39,`t`),vd(),da(40,`dd`,82)(41,`code`),qS(42),vd()()(),da(43,`div`,91)(44,`dt`),qS(45),aC(46,`t`),vd(),da(47,`dd`)(48,`code`),qS(49),vd()()(),da(50,`div`,91)(51,`dt`),qS(52),aC(53,`t`),vd(),da(54,`dd`)(55,`code`),qS(56),vd()()(),da(57,`div`,91)(58,`dt`),qS(59),aC(60,`t`),vd(),da(61,`dd`)(62,`code`),qS(63),vd()()(),da(64,`div`,91)(65,`dt`),qS(66),aC(67,`t`),vd(),da(68,`dd`)(69,`code`),qS(70),vd()()(),da(71,`div`,91)(72,`dt`),qS(73),aC(74,`t`),vd(),da(75,`dd`)(76,`code`),qS(77),vd()()(),dS(78,Nt,7,9,`div`,91),vd(),dS(79,Ot,6,4,`p`,92),dS(80,Bt,6,4,`details`,93),dS(81,Ft,6,4,`details`,93),dS(82,Dt,7,3,`div`,94),vd()}if(t&2){let e,l,a=n,c=SS(2);hD(3),qm(`size`,15),hD(2),ey(a.event_type),hD(),hS(a.event_id?6:-1),hD(),Ar(`aria-label`,lC(8,32,`state.close`)),hD(2),qm(`size`,14),hD(4),ey(lC(14,34,`execution.insp.schema`)),hD(4),ey(a.schema),hD(3),ey(lC(21,36,`execution.insp.at`)),hD(3),ey(c.fmtAt(a.timestamp)),hD(3),ey(lC(27,38,`execution.insp.status`)),hD(3),qm(`state`,c.statusKind(a.status))(`labelOverride`,a.status??`—`),hD(3),ey(lC(33,40,`execution.insp.duration`)),hD(3),ey(a.duration_ms!==void 0?a.duration_ms+` ms`:`—`),hD(3),ey(lC(39,42,`execution.insp.correlation`)),hD(2),Ar(`title`,a.correlation_id??null),hD(2),ey(a.correlation_id??`—`),hD(3),ey(lC(46,44,`execution.insp.span`)),hD(4),ey(a.span_id??`—`),hD(3),ey(lC(53,46,`execution.insp.parent`)),hD(4),ey(a.parent_span_id??`—`),hD(3),ey(lC(60,48,`execution.insp.trace`)),hD(4),ey(a.trace_id??`—`),hD(3),ey(lC(67,50,`execution.insp.source`)),hD(4),ey(a.source??`—`),hD(3),ey(lC(74,52,`execution.insp.target`)),hD(4),ey(a.target??`—`),hD(),hS((e=c.taskIdOf(a))?78:-1,e),hD(),hS((l=c.causedByOf(a))?79:-1,l),hD(),hS(a.metadata?80:-1),hD(),hS(a.evidence?81:-1),hD(),hS(c.related(a).length?82:-1)}}function $t(t,n){if(t&1&&(da(0,`section`,12)(1,`div`,13)(2,`div`)(3,`h2`,14),qS(4),aC(5,`t`),vd(),da(6,`p`,15)(7,`code`),qS(8,`GET /api/v1/events`),vd(),dS(9,Qe,3,6,`span`),vd()()(),da(10,`div`,16)(11,`div`,17)(12,`span`,18),qS(13),vd(),da(14,`span`,19),qS(15),aC(16,`t`),vd()(),da(17,`div`,20)(18,`span`,18),qS(19),vd(),da(20,`span`,19),qS(21),aC(22,`t`),vd()(),da(23,`div`,21)(24,`span`,18),qS(25),vd(),da(26,`span`,19),qS(27),aC(28,`t`),vd()(),da(29,`div`,22)(30,`span`,18),qS(31),vd(),da(32,`span`,19),qS(33),aC(34,`t`),vd()()(),dS(35,Xe,5,7,`p`,23),vd(),dS(36,rt,10,8,`section`,24),dS(37,xt,35,36,`section`,25),da(38,`section`,26)(39,`div`,13)(40,`div`)(41,`h2`,27),qS(42),aC(43,`t`),vd()()(),dS(44,vt,33,28,`div`,28),dS(45,Mt,27,25)(46,kt,2,1),vd(),dS(47,Rt,83,54,`section`,29)),t&2){let e,l,a=n,c=SS();hD(4),ey(lC(5,17,`execution.summary`)),hD(5),hS((e=c.src.loadedAt())?9:-1,e),hD(4),ey(a.count),hD(2),ey(lC(16,19,`execution.count.events`)),hD(4),ey(c.executions().groups.length),hD(2),ey(lC(22,21,`execution.count.executions`)),hD(4),ey(a.dropped),hD(2),ey(lC(28,23,`execution.count.dropped`)),hD(4),ey(a.capacity),hD(2),ey(lC(34,25,`execution.count.capacity`)),hD(2),hS(a.truncated?35:-1),hD(),hS(c.executions().groups.length?36:-1),hD(),hS(c.replaySteps().length?37:-1),hD(5),ey(lC(43,27,`execution.events`)),hD(2),hS(c.events().length?44:-1),hD(),hS(c.filteredEvents().length?45:46),hD(2),hS((l=c.inspected())?47:-1,l)}}var Ie=class t{api=p(g);destroyRef=p(ve$1);cid=rn(``);q=rn(``);src=new l;report=tn(()=>this.src.data());typeFilter=k(null);statusFilter=k(null);corrFilter=k(``);qFilter=k(``);selectedCid=k(void 0);inspected=k(null);replayIdx=k(0);playing=k(!1);speed=k(1);SPEEDS=[1,4,16,64];eventsPage=k(0);tlPage=k(0);stepManual=k(null);EVENTS_PAGE=100;TL_PAGE=50;STEPS_PAGE=100;replayTimer=null;deepApplied=k(null);events=tn(()=>this.report()?.events??[]);searchIndex=tn(()=>Ee(this.events()));relationIndex=tn(()=>Se(this.events()));typeOptions=tn(()=>[...new Set(this.events().map(n=>n.event_type))].sort((n,e)=>n.localeCompare(e)));statusOptions=tn(()=>[...new Set(this.events().map(n=>n.status).filter(n=>!!n))].sort((n,e)=>n.localeCompare(e)));filteredEvents=tn(()=>be(this.events(),{type:this.typeFilter(),status:this.statusFilter(),correlation:this.corrFilter(),q:this.qFilter()},this.searchIndex()));executions=tn(()=>ve(this.filteredEvents()));tlSlice=tn(()=>V(this.executions().groups.length,this.TL_PAGE,this.tlPage()));pagedGroups=tn(()=>this.executions().groups.slice(this.tlSlice().start,this.tlSlice().end));eventSlice=tn(()=>V(this.filteredEvents().length,this.EVENTS_PAGE,this.eventsPage()));pagedEventRows=tn(()=>Me(this.filteredEvents().slice(this.eventSlice().start,this.eventSlice().end),this.eventSlice().start));selectedGroup=tn(()=>{let n=this.selectedCid();return n===void 0?null:this.executions().groups.find(e=>e.correlationId===n)??null});replaySteps=tn(()=>fe(this.selectedGroup()?.events.map(n=>n.event)??this.filteredEvents()));replayScope=tn(()=>{let n=this.selectedCid();return n===void 0?``:n??`unlinked`});stepPage=tn(()=>this.stepManual()??Math.floor(this.replayIdx()/this.STEPS_PAGE));stepSlice=tn(()=>V(this.replaySteps().length,this.STEPS_PAGE,this.stepPage()));pagedStepRows=tn(()=>we(this.replaySteps().slice(this.stepSlice().start,this.stepSlice().end),this.stepSlice().start));stamp=y;fmtAt=K;shortId=X;statusKind=D;constructor(){Oo(()=>{let n=this.cid();!n||n===this.deepApplied()||!this.report()||(this.deepApplied.set(n),this.corrFilter.set(n),this.selectedCid.set(n))}),Oo(()=>{let n=this.q();n&&this.qFilter.set(n)}),Oo(()=>{this.filteredEvents(),this.eventsPage.set(0),this.tlPage.set(0)}),Oo(()=>{this.replaySteps(),this.replayIdx.set(0),this.stepManual.set(null),this.pause()}),this.destroyRef.onDestroy(()=>this.clearTimer()),this.load()}async load(){await this.src.load(()=>this.api.events())}selectExecution(n){let e=this.selectedCid()===n.correlationId?void 0:n.correlationId;this.selectedCid.set(e),this.replayIdx.set(0)}inspect(n){this.inspected.set(n)}fmtMs(n){return n===null?`—`:new Date(n).toLocaleString()}fmtDur(n){return n<1e3?`${n} ms`:`${Number((n/1e3).toFixed(1))} s`}json(n){return JSON.stringify(n,null,2)}related(n){return he(n,this.relationIndex())}causedByOf(n){return Pe(n,this.relationIndex())}taskIdOf(n){let e=n.metadata?.task_id;return typeof e==`string`&&e?e:null}setType(n){let e=n.target.value;this.typeFilter.set(e===``?null:e)}setStatus(n){let e=n.target.value;this.statusFilter.set(e===``?null:e)}setCorr(n){this.corrFilter.set(n.target.value)}setQuery(n){this.qFilter.set(n.target.value)}setSpeed(n){let e=Number(n.target.value);this.speed.set(this.SPEEDS.includes(e)?e:1)}play(){this.playing()||this.replayIdx()>=this.replaySteps().length-1||(this.playing.set(!0),this.scheduleNext())}pause(){this.playing.set(!1),this.clearTimer()}stepReplay(n){this.pause(),this.stepManual.set(null);let e=this.replayIdx()+n,l=this.replaySteps().length-1;this.replayIdx.set(Math.max(0,Math.min(e,l)))}scheduleNext(){if(this.clearTimer(),!this.playing())return;let n=this.replayIdx()+1,e=this.replaySteps();if(n>=e.length){this.playing.set(!1);return}let l=e[n].waitMs/this.speed();this.replayTimer=setTimeout(()=>{this.replayTimer=null,this.stepManual.set(null),this.replayIdx.set(n),this.scheduleNext()},Math.min(l,8e3))}clearTimer(){this.replayTimer&&(clearTimeout(this.replayTimer),this.replayTimer=null)}static ɵfac=function(e){return new(e||t)};static ɵcmp=ei({type:t,selectors:[[`page-execution`]],inputs:{cid:[1,`cid`],q:[1,`q`]},decls:16,vars:19,consts:[[`hintId`,`evidence`,3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[`data-section`,`local-only`,`role`,`note`,1,`local`],[`name`,`shield-check`,3,`size`],[`data-section`,`unavailable`,`role`,`note`,1,`card`,`unv`],[3,`error`],[`role`,`status`,1,`card`],[`state`,`UNVERIFIED`],[1,`muted`],[3,`retry`,`error`],[`kind`,`row`,3,`lines`],[`data-section`,`summary`,`aria-labelledby`,`ex-sum`,1,`card`],[1,`sec__head`],[`id`,`ex-sum`],[1,`src`],[1,`counts`],[`data-count`,`events`,1,`count`],[1,`count__value`],[1,`count__key`],[`data-count`,`executions`,1,`count`],[`data-count`,`dropped`,1,`count`],[`data-count`,`capacity`,1,`count`],[`data-note`,`truncated`,`role`,`note`,1,`truncated`],[`data-section`,`timeline`,`aria-labelledby`,`ex-tl`,1,`card`],[`data-section`,`replay`,`aria-labelledby`,`ex-rp`,1,`card`],[`data-section`,`events`,`aria-labelledby`,`ex-ev`,1,`card`],[`id`,`ex-ev`],[`data-section`,`filters`,1,`filters`],[`data-section`,`inspector`,`aria-live`,`polite`,1,`card`,`detail`,`fg-enter`],[`name`,`alert`,3,`size`],[`id`,`ex-tl`],[`state`,`PARTIAL`],[`icon`,`execution`,3,`title`],[`role`,`list`,1,`tl`],[`aria-hidden`,`true`,1,`tl__axis`],[`role`,`listitem`,1,`tl__item`],[3,`pageChange`,`total`,`pageSize`,`page`,`label`],[`data-note`,`unplaced`,1,`muted`,`tl__unplaced`],[`type`,`button`,1,`tl__row`,3,`click`],[1,`tl__label`],[1,`tl__n`],[`aria-hidden`,`true`,1,`tl__track`],[1,`tl__span`,3,`left`,`width`],[1,`tl__dur`,`num`],[1,`tl__span`],[`id`,`ex-rp`,1,`rp__title`],[`name`,`history`,3,`size`],[1,`muted`,`rp__scope`],[`data-section`,`replay-controls`,1,`rp__controls`],[`data-action`,`step-prev`,1,`btn`,`btn--mini`,3,`click`,`disabled`],[`data-action`,`pause`,1,`btn`,`btn--mini`],[`data-action`,`play`,1,`btn`,`btn--mini`,3,`disabled`],[`data-action`,`step-next`,1,`btn`,`btn--mini`,3,`click`,`disabled`],[1,`rp__speed`],[`data-control`,`speed`,1,`select`,3,`change`],[3,`value`,`selected`],[1,`rp__steps`],[`data-action`,`pause`,1,`btn`,`btn--mini`,3,`click`],[`data-action`,`play`,1,`btn`,`btn--mini`,3,`click`,`disabled`],[`type`,`button`,`data-action`,`inspect`,1,`rp__step`,3,`click`],[1,`rp__gap`],[1,`rp__compressed`,3,`title`],[1,`rp__kind`],[1,`rp__at`],[3,`state`,`labelOverride`],[1,`num`],[1,`rp__flow`],[1,`rp__unplaced`,`muted`],[1,`filter`],[1,`filter__lbl`],[`data-filter`,`type`,1,`select`,3,`change`],[`value`,``,3,`selected`],[`data-filter`,`status`,1,`select`,3,`change`],[`type`,`search`,`data-filter`,`correlation`,1,`input`,3,`input`,`value`],[`type`,`search`,`data-filter`,`search`,1,`input`,3,`input`,`value`],[1,`table-wrap`],[1,`table`],[`scope`,`col`],[`data-action`,`inspect`,`tabindex`,`0`],[`data-action`,`inspect`,`tabindex`,`0`,3,`click`,`keydown.enter`,`keydown.space`],[1,`flow`],[1,`corr`],[`icon`,`search`,`data-empty`,`no-matches`,3,`title`],[`icon`,`inbox`,`data-empty`,`events`,3,`title`,`hint`],[1,`detail__head`],[`name`,`execution`,3,`size`],[1,`muted`,`detail__id`],[1,`icon-btn`,3,`click`],[`name`,`chevron-right`,3,`size`],[1,`plan-card`],[1,`kv`],[`data-note`,`caused-by`,1,`muted`,`cause`],[`open`,``,1,`raw`],[`data-section`,`related`,1,`related`],[`data-action`,`task`,1,`linklike`,3,`routerLink`,`queryParams`],[`data-action`,`parent`,1,`linklike`,3,`click`],[`data-action`,`related`,1,`linklike`,3,`click`]],template:function(e,l){if(e&1&&(da(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),da(3,`button`,1),Ma(`click`,function(){return l.load()}),Sa(4,`ui-icon`,2),qS(5),aC(6,`t`),vd()(),da(7,`p`,3),Sa(8,`ui-icon`,4),da(9,`span`),qS(10),aC(11,`t`),vd()(),dS(12,Ue,5,3,`section`,5),dS(13,Je,1,1,`ui-error`,6),dS(14,We,3,4,`section`,7),dS(15,$t,48,29)),e&2){let a,c;qm(`title`,lC(1,11,`execution.title`))(`subtitle`,lC(2,13,`execution.subtitle`)),hD(3),qm(`disabled`,l.src.loading()),hD(),qm(`size`,15),hD(),bd(` `,lC(6,15,`state.refresh`),` `),hD(3),qm(`size`,15),hD(2),ey(lC(11,17,`execution.localOnly`)),hD(2),hS(l.src.unavailable()?12:-1),hD(),hS((a=l.src.error())?13:-1,a),hD(),hS(l.src.loading()&&!l.report()?14:-1),hD(),hS((c=l.report())?15:-1,c)}},dependencies:[vc,T,I,_,D$1,cE,k$1,k$2,aE],styles:[`.src[_ngcontent-%COMP%], .count__key[_ngcontent-%COMP%], .tl__axis[_ngcontent-%COMP%], .tl__n[_ngcontent-%COMP%], .tl__dur[_ngcontent-%COMP%], .tl__unplaced[_ngcontent-%COMP%], .filter__lbl[_ngcontent-%COMP%], .kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%], .local[_ngcontent-%COMP%], .truncated[_ngcontent-%COMP%], .corr[_ngcontent-%COMP%], .flow[_ngcontent-%COMP%], .detail__id[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.src[_ngcontent-%COMP%], .count__key[_ngcontent-%COMP%], .tl__axis[_ngcontent-%COMP%], .tl__n[_ngcontent-%COMP%], .tl__dur[_ngcontent-%COMP%], .tl__unplaced[_ngcontent-%COMP%], .corr[_ngcontent-%COMP%], .flow[_ngcontent-%COMP%], .filter__lbl[_ngcontent-%COMP%], .kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%], .detail__id[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs)}.filter__lbl[_ngcontent-%COMP%], .kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{text-transform:uppercase;letter-spacing:.04em}.local[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:0 0 var(--%NS%space-4);padding:var(--%NS%space-3);border:1px dashed var(--%NS%border);border-radius:var(--%NS%radius-md);font-size:var(--%NS%font-sm)}.local[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%], .truncated[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{flex:none}.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.sec__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%], #ex-tl[_ngcontent-%COMP%], .detail__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650}.src[_ngcontent-%COMP%]{margin:4px 0 0}.unv[_ngcontent-%COMP%], .truncated[_ngcontent-%COMP%]{display:flex;align-items:center;border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.unv[_ngcontent-%COMP%]{gap:var(--%NS%space-3)}.counts[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:var(--%NS%space-3)}.count[_ngcontent-%COMP%]{display:grid;gap:2px;padding:var(--%NS%space-3);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:color-mix(in srgb,var(--%NS%bg-hover) 40%,transparent)}.count__value[_ngcontent-%COMP%]{font-family:var(--%NS%font-mono);font-size:var(--%NS%font-2xl);font-weight:650}.truncated[_ngcontent-%COMP%]{gap:var(--%NS%space-2);margin:var(--%NS%space-3) 0 0;padding:var(--%NS%space-2) var(--%NS%space-3);border-radius:var(--%NS%radius-md)}.truncated[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%warn)}.tl[_ngcontent-%COMP%]{display:grid;gap:4px;margin-top:var(--%NS%space-3)}.tl__axis[_ngcontent-%COMP%]{display:flex;justify-content:space-between;margin-left:12rem;font-variant-numeric:tabular-nums}.tl__row[_ngcontent-%COMP%]{display:grid;grid-template-columns:12rem 1fr 5.5rem;align-items:center;gap:var(--%NS%space-2);width:100%;border:1px solid transparent;border-radius:var(--%NS%radius-md);background:none;font:inherit;color:inherit;text-align:left;padding:3px var(--%NS%space-2);cursor:pointer;transition:background var(--%NS%motion-fast),border-color var(--%NS%motion-fast)}.tl__row[_ngcontent-%COMP%]:hover{background:var(--%NS%bg-hover)}.tl__row[data-selected][_ngcontent-%COMP%]{border-color:var(--%NS%accent-ink);background:var(--%NS%accent-bg)}.tl__label[_ngcontent-%COMP%]{font-size:var(--%NS%font-sm);font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:baseline;gap:var(--%NS%space-2)}.tl__track[_ngcontent-%COMP%]{position:relative;height:16px;border-radius:var(--%NS%radius-pill);background:var(--%NS%bg);border:1px solid var(--%NS%border);overflow:hidden}.tl__span[_ngcontent-%COMP%]{position:absolute;top:0;bottom:0;background:color-mix(in srgb,var(--%NS%info) 28%,transparent);border-radius:var(--%NS%radius-pill)}.tl__dur[_ngcontent-%COMP%]{text-align:right}.tl__unplaced[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 0}.filters[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.filter[_ngcontent-%COMP%]{display:grid;gap:4px;min-width:150px}.filter[_ngcontent-%COMP%] .input[_ngcontent-%COMP%]{min-width:190px}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto}.table[_ngcontent-%COMP%]{min-width:840px}.table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]{cursor:pointer}.detail[_ngcontent-%COMP%]{border-left:3px solid var(--%NS%accent)}.detail__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.detail__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);flex-wrap:wrap}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;font-weight:550;word-break:break-all}.cause[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 var(--%NS%space-3);font-size:var(--%NS%font-sm)}.related[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3);border-top:1px solid var(--%NS%border);padding-top:var(--%NS%space-3)}.related[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-md)}.related[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:4px}.related[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}@media(max-width:720px){.tl__axis[_ngcontent-%COMP%]{margin-left:0}.tl__row[_ngcontent-%COMP%]{grid-template-columns:1fr;gap:2px}.tl__dur[_ngcontent-%COMP%]{text-align:left}}`]})};export{Ie as ExecutionPage}; \ No newline at end of file diff --git a/portal/assets/chunk-pVzsnrcB.js b/portal/assets/chunk-pVzsnrcB.js new file mode 100644 index 0000000..2560b03 --- /dev/null +++ b/portal/assets/chunk-pVzsnrcB.js @@ -0,0 +1 @@ +import{r as l}from"./chunk-BYYLUO5t.js";var O=`forge/FederatedGraph/v1`;var G=[`forge`,`capability`,`skill`,`agent`,`mcp`,`host`,`operation`,`tool`];var $=[`bootstrap`,`graphs`,`capabilities`,`skills`,`agents`,`mcp`,`hosts`,`tasks`,`events`];var T={bootstrap:`GET /api/v1/bootstrap`,graphs:`GET /api/v1/graphs`,capabilities:`GET /api/v1/capabilities`,skills:`GET /api/v1/skills`,agents:`GET /api/v1/agents`,mcp:`GET /api/v1/mcp/servers`,hosts:`GET /api/v1/hosts`,tasks:`GET /api/v1/tasks`,events:`GET /api/v1/events`};function M(s,d){let a=s.edges.filter(l=>l.source===d||l.target===d),g=new Set([d]);for(let l of a)g.add(l.source),g.add(l.target);return{nodes:g,edges:a}}var m=(s,d)=>sd?1:0;var j=new Set([`the-forge`,`api-forge`,`spark-forge-aws`,`spark-forge-azure`,`platform-forge`,`forge-doctor-data`,`forge-doctor-api`]);var I=[`origin`,`forge`,`forge_id`,`provider`,`source_provider`];function t(s){return typeof s==`string`&&s.trim()?s.trim():null}var P=new Set(G);function x(s){let d=t(s);if(!d)return null;let a=d.indexOf(`:`);if(a<=0||a===d.length-1)return null;let g=d.slice(0,a),l=d.slice(a+1).trim();return P.has(g)&&l?`${g}:${l}`:null}function E(s,d){for(let g of I){let l=t(s[g]);if(l)return l}let a=t(s.source);return a&&(j.has(a)||d.has(a))?a:null}function H(s){let d={};for(let e of $){let n=s.availability?.[e];if(n)d[e]=n;else if(e===`bootstrap`)d[e]=t(s.servingForge)?`loaded`:`unverified`;else d[e]=(e===`capabilities`?s.capabilities:e===`skills`?s.skills:e===`agents`?s.agents:e===`mcp`?s.mcp:e===`hosts`?s.hosts:e===`tasks`?s.tasks:e===`events`?s.events:s.graphViews)!=null?`loaded`:`unavailable`}let a=new Map,g=new Map,l$1=new Set;function p(e,n,o,i,c=!1,r){let u=`${e}:${n}`,F=a.get(u);return F?(F.evidence.add(i),F.flagged||=c,r&&D(F,r)):a.set(u,l({label:o,kind:e,evidence:new Set([i]),flagged:c},r)),u}function D(e,n){e.state??=n.state,e.category??=n.category,e.origin??=n.origin,e.version??=n.version,n.meta&&(e.meta=l(l({},n.meta),e.meta))}function h(e,n,o){return l$1.add(e),p(`forge`,e,e,n,!1,{version:o??void 0})}function k(e,n){if(a.has(e)){a.get(e).evidence.add(n);return}let o=e.indexOf(`:`);p(e.slice(0,o),e.slice(o+1),e.slice(o+1),n)}function v(e,n,o,i,c){k(e,i),k(n,i);let r=c?`${e}|${o}|${n}|${c}`:`${e}|${o}|${n}`;if(!g.has(r)){let u={id:r,source:e,target:n,kind:o,evidence:i};c&&(u.detail=c),g.set(r,u)}}let b=e=>{let n={};for(let[o,i]of Object.entries(e))i!==void 0&&(n[o]=i);return Object.keys(n).length?n:void 0},N=e=>e?.length?[...e].sort(m).join(`, `):null,y=t(s.servingForge);y&&h(y,`bootstrap`,t(s.servingVersion));for(let e of s.graphViews??[]){if(!e||typeof e!=`object`)continue;let n=e.descriptor,o=n&&typeof n==`object`?t(n.provider_id):null,i=n&&typeof n==`object`?t(n.provider_version)??t(n.version):null;o&&h(o,`graphs`,i);let c=e.nodes;if(Array.isArray(c))for(let r of c){let u=r&&typeof r==`object`?t(r.source_provider):null;u&&h(u,`graphs`)}}for(let e of s.capabilities??[]){let n=t(e?.id);n&&(p(`capability`,n,n,`capabilities`,e.state===`unverified`,{state:t(e?.state)??void 0,origin:y??void 0,meta:b({detail:t(e?.detail)})}),y&&v(`forge:${y}`,`capability:${n}`,`declares`,`capabilities`))}for(let e of s.skills??[]){let n=t(e?.id)??t(e?.name);if(!n)continue;let o=E(e,l$1);p(`skill`,n,t(e?.name)??n,`skills`,e.state===`unverified`,{state:t(e?.state)??void 0,category:t(e?.domain)??void 0,origin:o??void 0,meta:b({hosts:N(e?.hosts),source:t(e?.source),description:t(e?.description)})}),o&&v(`skill:${n}`,`forge:${o}`,`origin`,`skills`)}let S=new Map;for(let e of s.skills??[]){let n=t(e?.name),o=t(e?.id);if(n&&o){let i=S.get(n)??[];i.push(o),S.set(n,i)}}let K=e=>{if(a.has(`skill:${e}`))return`skill:${e}`;let n=S.get(e);return n?.length?`skill:${[...n].sort(m)[0]}`:`skill:${e}`};for(let e of s.agents??[]){let n=t(e?.id)??t(e?.name);if(!n)continue;let o=E(e,l$1);p(`agent`,n,t(e?.name)??n,`agents`,e.state===`unverified`,{state:t(e?.state)??void 0,category:t(e?.role)??void 0,origin:o??void 0,meta:b({authority:t(e?.authority),domains:e?.domains?.length?[...e.domains].sort(m).join(`, `):null,skills:e?.skills?.length??null,hosts:N(e?.hosts),description:t(e?.description)})}),o&&v(`agent:${n}`,`forge:${o}`,`origin`,`agents`);let i=new Set;for(let c of e.skills??[]){let r=t(c);!r||i.has(r)||(i.add(r),v(`agent:${n}`,K(r),`associated`,`agents`))}}for(let e of s.mcp??[]){let n=t(e?.id);if(!n)continue;let o=t(e.host);p(`mcp`,n,n,`mcp`,!1,{state:t(e?.state)??void 0,category:o??void 0,meta:b({tools_count:e?.tools_count??null,last_verify:t(e?.last_verify)})}),o&&v(`mcp:${n}`,`host:${o}`,`bound_to`,`mcp`)}for(let e of s.hosts??[]){let n=t(e?.host);n&&p(`host`,n,n,`hosts`,!1,{state:t(e?.integration)??void 0,version:t(e?.version)??void 0,meta:b({detected:e?.detected??null,supported:e?.supported??null,logged_in:e?.logged_in??null,launchable:e?.launchable??null})})}for(let e of s.tasks??[]){let n=t(e?.id);if(!n)continue;let o=t(e?.label)??t(e?.verb)??n,i=E(e,l$1);p(`operation`,n,o,`tasks`,!1,{state:t(e?.stage)??void 0,category:t(e?.verb)??void 0,origin:i??void 0,meta:b({exit_code:e?.exit_code??null,started_at:t(e?.started_at),finished_at:t(e?.finished_at)})}),i&&v(`operation:${n}`,`forge:${i}`,`origin`,`tasks`)}for(let e of s.events??[]){if(!e||typeof e!=`object`)continue;let n=t(e.event_type)??`event`,o=x(e.source),i=x(e.target),c=e.metadata&&typeof e.metadata==`object`?e.metadata:null,r=c?t(c.task_id):null;o&&k(o,`events`),i&&k(i,`events`),o&&i&&v(o,i,`observed`,`events`,n),o&&r?v(o,`operation:${r}`,`observed`,`events`,n):r&&k(`operation:${r}`,`events`)}let _=[...a.entries()].map(([e,n])=>{let o=[...n.evidence].sort(m);return l(l(l(l(l({id:e,kind:n.kind,label:n.label,evidence:o,unverified:n.flagged||!o.some(i=>d[i]===`loaded`)},n.state!==void 0?{state:n.state}:{}),n.category!==void 0?{category:n.category}:{}),n.origin!==void 0?{origin:n.origin}:{}),n.version!==void 0?{version:n.version}:{}),n.meta!==void 0?{meta:n.meta}:{})}).sort((e,n)=>m(e.id,n.id)),A=[...g.values()].sort((e,n)=>m(e.id,n.id)),R=Object.fromEntries(G.map(e=>[e,0]));for(let e of _)R[e.kind]+=1;let w={};for(let e of $)w[e]={state:d[e],endpoint:T[e]};return{schema:O,nodes:_,edges:A,counts:R,sources:w}}export{T as a,M as i,G as n,H as r,E as t}; \ No newline at end of file diff --git a/portal/assets/chunk-tu0a_CEa.js b/portal/assets/chunk-tu0a_CEa.js new file mode 100644 index 0000000..47d8633 --- /dev/null +++ b/portal/assets/chunk-tu0a_CEa.js @@ -0,0 +1 @@ +import{r as l}from"./chunk-BYYLUO5t.js";import{$ as dS,At as qm,Bt as tn,E as Na,Et as p,F as Sa,Ht as ty,J as aC,Jt as vd,Mt as rE,Ot as q$,P as SS,Q as cE,Qt as yS,S as Ma,Ut as uC,Y as aE,Z as bd,at as ey,b as LU,ct as hD,et as da,i as Ar,it as ei,jt as rC,kt as qS,p as Hh,qt as vc,s as DS,ut as hS,vt as lC,w as NS,xt as nC,y as Km,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{r as g$1,t as g}from"./main-XW2ZMSO5.js";import{a as l$1,o as w,r as f,s as y}from"./chunk-BNDlNg-C.js";import{t as _}from"./chunk-16deWS0U.js";import{t as D}from"./chunk-Bg2lccQE.js";import{n as k,t as I}from"./chunk-DQtX_-dj.js";import{t as T}from"./chunk-BGgpmc9t.js";import{t as F}from"./chunk-xLo56Uun.js";function W(e){let i=(e.stage||``).toLowerCase();return[`failed`,`refused`,`cancelled`].includes(i)?!0:e.exit_code!==null&&e.exit_code!==0}var fe={error:0,warn:1,info:2};function S(e,i,a,_,f,I={}){return l({severity:e,id:i,titleKey:a,route:_,linkKey:f,icon:`alert`},I)}function ye(e){let i=[],{health:a,accountEnvironment:_,federation:f,mcpServers:I,hosts:w,tasks:M,registry:y,versions:h,graphs:E}=e,T=a?.state;T===`FAILED`||T===`BLOCKED`?i.push(S(`error`,`install-state`,`ops.alert.installState`,`/install`,`ops.alert.goInstall`,{params:{state:T??``}})):T===`DEGRADED`?i.push(S(`warn`,`install-state`,`ops.alert.installState`,`/install`,`ops.alert.goInstall`,{params:{state:T??``}})):T===`NOT_INSTALLED`&&i.push(S(`warn`,`install-state`,`ops.alert.notInstalled`,`/install`,`ops.alert.goInstall`));for(let r of a?.checks??[])r.state===`FAIL`&&i.push(S(`error`,`check-${r.id}`,`ops.alert.checkFailed`,`/install`,`ops.alert.goInstall`,{params:{id:r.id},detail:r.detail}));let F=_?.state;F===`MISSING`||F===`INVALID`?i.push(S(`error`,`env`,`ops.alert.env`,`/config`,`ops.alert.goConfig`,{params:{state:F}})):F===`PARTIAL`&&i.push(S(`warn`,`env`,`ops.alert.env`,`/config`,`ops.alert.goConfig`,{params:{state:F}}));for(let r of f?.specialists??[]){let R=r.state??r.status??``;R===`FAILED`||R===`BLOCKED`?i.push(S(`error`,`spec-${r.provider}`,`ops.alert.specialist`,[`/forges`,r.provider],`ops.alert.goForge`,{params:{forge:r.provider,state:R}})):R===`NOT_INSTALLED`&&i.push(S(`warn`,`spec-${r.provider}`,`ops.alert.forgeNotInstalled`,`/federation`,`ops.alert.goFederation`,{params:{forge:r.provider}}))}for(let r of I??[])r.state===`FAILED`?i.push(S(`error`,`mcp-${r.id}`,`ops.alert.mcpState`,`/mcp`,`ops.alert.goMcp`,{params:{id:r.id,state:r.state},detail:r.detail})):r.state===`DEGRADED`?i.push(S(`warn`,`mcp-${r.id}`,`ops.alert.mcpState`,`/mcp`,`ops.alert.goMcp`,{params:{id:r.id,state:r.state},detail:r.detail})):r.state===`NOT_CONFIGURED`&&i.push(S(`info`,`mcp-${r.id}`,`ops.alert.mcpNotConfigured`,`/mcp`,`ops.alert.goMcp`,{params:{id:r.id}}));for(let r of w??[])r.integration===`FAILED`||r.integration===`BLOCKED`?i.push(S(`error`,`host-${r.host}`,`ops.alert.hostIntegration`,`/hosts`,`ops.alert.goHosts`,{params:{host:r.host,state:r.integration},detail:r.detail})):r.detected&&r.integration===`NOT_DETECTED`&&i.push(S(`info`,`host-${r.host}`,`ops.alert.hostNotIntegrated`,`/hosts`,`ops.alert.goHosts`,{params:{host:r.host}}));let $=(M??[]).filter(W).length;$>0&&i.push(S(`error`,`tasks-failed`,`ops.alert.tasksFailed`,`/tasks`,`ops.alert.goTasks`,{params:{count:$}})),y?.error===`malformed`&&i.push(S(`warn`,`registry-malformed`,`ops.alert.registryMalformed`,`/versions`,`ops.alert.goVersions`));let L=h?.available?.version,U=h?.installed?.version;return L&&L!==U?i.push(S(`info`,`update-available`,`ops.alert.updateAvailable`,`/versions`,`ops.alert.goVersions`,{params:{version:L}})):h?.pending&&i.push(S(`info`,`pending-updates`,`ops.alert.pendingUpdates`,`/versions`,`ops.alert.goVersions`)),E?.availability?.state===`no_graph`&&i.push(S(`info`,`graph-empty`,`ops.alert.noGraph`,`/graph`,`ops.alert.goGraph`)),i.sort((r,R)=>fe[r.severity]-fe[R.severity])}function he(e){let{registry:i,federation:a,descriptor:_,versions:f$1}=e,I=new Map,w=y=>{let h=I.get(y);return h||(h={id:y,serving:!1,version:null,pinned:null,method:null,source:``,updateTo:null},I.set(y,h)),h};if(i?.present)for(let[y,h]of Object.entries(i.forges)){let E=w(y);E.version=h.version??E.version,E.pinned=h.pinned??E.pinned,E.method=h.method??E.method,E.source=`GET /api/v1/registry/state`}if(_){let y=w(_.forge_id);y.serving=!0,y.version=y.version??_.forge_version,y.source||(y.source=`bootstrap`)}for(let y of a?.specialists??[]){let h=w(y.provider);h.version=h.version??f(y),h.source||(h.source=`GET /api/v1/federation`)}let M=f$1?.available?.version;return _&&M&&M!==f$1?.installed?.version&&(w(_.forge_id).updateTo=M),[...I.values()].sort((y,h)=>y.serving!==h.serving?y.serving?-1:1:y.id.localeCompare(h.id))}function xe(e){return!e||!e.present?null:Object.keys(e.forges).length}var G=e=>({time:e});var Se=e=>[`/forges`,e];var Ce=e=>({version:e});var Ee=()=>[`/tasks`];var ke=e=>({task:e});var Pe=(e,i)=>i.route;var H=(e,i)=>i.id;function Ie(e,i){e&1&&(da(0,`div`,3),aC(1,`t`),Sa(2,`ui-skeleton`,4)(3,`ui-skeleton`,5),vd()),e&2&&(Ar(`aria-label`,lC(1,2,`state.loading`)),hD(3),qm(`lines`,4))}function De(e,i){e&1&&(da(0,`code`,9),qS(1),vd()),e&2&&(hD(),bd(`v`,i))}function Ne(e,i){e&1&&(da(0,`span`,10),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`settings.federated`)))}function we(e,i){e&1&&(qS(0),aC(1,`t`)),e&2&&bd(` `,i.profile??lC(1,1,`state.none`),` `)}function Te(e,i){e&1&&Sa(0,`ui-state-badge`,16)}function Be(e,i){e&1&&Sa(0,`ui-state-badge`,13),e&2&&qm(`state`,i.state)}function Me(e,i){e&1&&Sa(0,`ui-state-badge`,17)}function Fe(e,i){if(e&1&&(da(0,`span`,14),Sa(1,`ui-icon`,50),qS(2),aC(3,`t`),da(4,`a`,51),qS(5),aC(6,`t`),vd()()),e&2){let a=i;hD(),qm(`size`,13),hD(),bd(` `,lC(3,4,`dashboard.lastArea`),` `),hD(2),qm(`routerLink`,a.url),hD(),ey(a.labelKey?lC(6,6,a.labelKey):a.url)}}function Oe(e,i){if(e&1&&(da(0,`span`),qS(1),aC(2,`t`),vd()),e&2){let a=SS(2);hD(),bd(` · `,uC(2,1,`common.updatedAt`,rC(4,G,a.stamp(i))))}}function Ae(e,i){if(e&1&&qS(0),e&2){let a=SS(2);bd(` `,a.registryCount(),` `)}}function Ve(e,i){e&1&&Sa(0,`ui-state-badge`,16)}function ze(e,i){e&1&&qS(0),e&2&&bd(` `,i.specialists.length,` `)}function Le(e,i){e&1&&Sa(0,`ui-state-badge`,16)}function Re(e,i){if(e&1&&(da(0,`span`),qS(1),aC(2,`t`),vd()),e&2){let a=SS(2);hD(),bd(` · `,uC(2,1,`common.updatedAt`,rC(4,G,a.stamp(i))))}}function Ge(e,i){if(e&1&&(da(0,`span`,26),qS(1),vd()),e&2){let a=SS(2);Ar(`data-alerts`,a.alerts().length),hD(),ey(a.alerts().length)}}function $e(e,i){e&1&&(da(0,`div`,28),Sa(1,`ui-skeleton`,5),vd()),e&2&&(hD(),qm(`lines`,3))}function Ke(e,i){if(e&1&&(da(0,`small`,55),qS(1),vd()),e&2){let a=SS().$implicit;hD(),ey(a.detail)}}function He(e,i){if(e&1&&(da(0,`li`,52),Sa(1,`ui-icon`,53),da(2,`div`,54)(3,`span`),qS(4),aC(5,`t`),vd(),dS(6,Ke,2,1,`small`,55),vd(),da(7,`a`,56),qS(8),aC(9,`t`),Sa(10,`ui-icon`,37),vd()()),e&2){let a=i.$implicit;Ar(`data-severity`,a.severity)(`data-alert-id`,a.id),hD(),qm(`size`,15),hD(3),ey(uC(5,8,a.titleKey,a.params)),hD(2),hS(a.detail?6:-1),hD(),qm(`routerLink`,a.route),hD(),ey(lC(9,11,a.linkKey)),hD(2),qm(`size`,13)}}function Ue(e,i){if(e&1&&(da(0,`ul`,29),mS(1,He,11,13,`li`,52,H),vd()),e&2){let a=SS(2);hD(),yS(a.alerts())}}function je(e,i){e&1&&(Sa(0,`ui-empty`,30),aC(1,`t`),aC(2,`t`)),e&2&&qm(`title`,lC(1,2,`ops.alerts.empty`))(`hint`,lC(2,4,`ops.alerts.emptyHint`))}function qe(e,i){if(e&1&&(da(0,`span`),qS(1),aC(2,`t`),vd()),e&2){let a=SS(2);hD(),bd(` · `,uC(2,1,`common.updatedAt`,rC(4,G,a.stamp(i))))}}function Qe(e,i){e&1&&(da(0,`div`,32),Sa(1,`ui-state-badge`,16),da(2,`span`),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`federation.unavailable`)))}function We(e,i){if(e&1){let a=DS();da(0,`ui-error`,57),Ma(`retry`,function(){Hh(a);let f=SS(2);return Vh(f.loadFederation())}),vd()}e&2&&qm(`error`,i)}function Je(e,i){e&1&&(da(0,`div`,28),Sa(1,`ui-skeleton`,5),vd()),e&2&&(hD(),qm(`lines`,3))}function Xe(e,i){e&1&&(da(0,`span`,60),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`explorer.serving`)))}function Ye(e,i){e&1&&Sa(0,`ui-state-badge`,16)}function Ze(e,i){e&1&&(da(0,`span`,61),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`state.absent`)))}function et(e,i){if(e&1&&(da(0,`code`,62),qS(1),vd()),e&2){let a=SS().$implicit;Ar(`title`,a.checkout),hD(),ey(a.checkout)}}function tt(e,i){e&1&&Sa(0,`ui-state-badge`,16)}function it(e,i){if(e&1&&(da(0,`span`,61),qS(1),aC(2,`t`),vd()),e&2){let a=SS().$implicit;hD(),ey(lC(2,1,a.mcp===null?`federation.mcpAbsent`:`federation.mcpReady`))}}function nt(e,i){if(e&1&&(da(0,`tr`)(1,`td`)(2,`a`,51),qS(3),vd(),dS(4,Xe,3,3,`span`,60),vd(),da(5,`td`),Sa(6,`ui-state-badge`,13),vd(),da(7,`td`),dS(8,Ye,1,0,`ui-state-badge`,16)(9,Ze,3,3,`span`,61)(10,et,2,2,`code`,62),vd(),da(11,`td`),dS(12,tt,1,0,`ui-state-badge`,16)(13,it,3,3,`span`,61),vd()()),e&2){let a=i.$implicit;Ar(`data-serving`,a.serving||null),hD(2),qm(`routerLink`,rC(7,Se,a.id)),hD(),ey(a.name??a.id),hD(),hS(a.serving?4:-1),hD(2),qm(`state`,a.state??`UNVERIFIED`),hD(2),hS(a.checkout===void 0?8:a.checkout===null?9:10),hD(4),hS(a.mcp===void 0?12:13)}}function at(e,i){if(e&1&&(da(0,`div`,34)(1,`table`,58)(2,`thead`)(3,`tr`)(4,`th`,59),qS(5),aC(6,`t`),vd(),da(7,`th`,59),qS(8),aC(9,`t`),vd(),da(10,`th`,59),qS(11),aC(12,`t`),vd(),da(13,`th`,59),qS(14),aC(15,`t`),vd()()(),da(16,`tbody`),mS(17,nt,14,9,`tr`,null,H),vd()()()),e&2){let a=SS(2);hD(5),ey(lC(6,4,`table.id`)),hD(3),ey(lC(9,6,`skills.state`)),hD(3),ey(lC(12,8,`explorer.checkout`)),hD(3),ey(lC(15,10,`mcp.title`)),hD(3),yS(a.forgesRows())}}function ot(e,i){e&1&&(Sa(0,`ui-empty`,35),aC(1,`t`)),e&2&&qm(`title`,lC(1,1,`federation.empty`))}function rt(e,i){if(e&1&&(da(0,`span`),qS(1),aC(2,`t`),vd()),e&2){let a=SS(2);hD(),bd(` · `,uC(2,1,`common.updatedAt`,rC(4,G,a.stamp(i))))}}function st(e,i){if(e&1&&(da(0,`span`,63),Sa(1,`ui-icon`,64),da(2,`span`,65),qS(3),vd(),Sa(4,`i`,66),vd()),e&2){let a=i.$implicit,_=SS(3);Ar(`data-state`,a.state)(`title`,a.state),hD(),qm(`name`,_.capIcon(a.id))(`size`,15),hD(2),ey(a.id)}}function lt(e,i){if(e&1&&(da(0,`div`,39),mS(1,st,5,5,`span`,63,H),vd()),e&2){let a=SS(2);hD(),yS(a.store.capabilities())}}function dt(e,i){e&1&&(Sa(0,`ui-empty`,40),aC(1,`t`)),e&2&&qm(`title`,lC(1,1,`dashboard.none`))}function pt(e,i){if(e&1&&(da(0,`span`),qS(1),aC(2,`t`),vd()),e&2){let a=SS(2);hD(),bd(` · `,uC(2,1,`common.updatedAt`,rC(4,G,a.stamp(i))))}}function ct(e,i){e&1&&(da(0,`div`,32),Sa(1,`ui-state-badge`,16),da(2,`span`),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`ops.registry.unavailable`)))}function mt(e,i){if(e&1){let a=DS();da(0,`ui-error`,57),Ma(`retry`,function(){Hh(a);let f=SS(2);return Vh(f.loadVersions())}),vd()}e&2&&qm(`error`,i)}function _t(e,i){e&1&&(da(0,`div`,28),Sa(1,`ui-skeleton`,5),vd()),e&2&&(hD(),qm(`lines`,3))}function ut(e,i){e&1&&(da(0,`span`,60),qS(1),aC(2,`t`),vd()),e&2&&(hD(),ey(lC(2,1,`explorer.serving`)))}function vt(e,i){if(e&1&&(da(0,`code`),qS(1),vd()),e&2){let a=SS().$implicit;hD(),ey(a.version)}}function gt(e,i){e&1&&Sa(0,`ui-state-badge`,16)}function ft(e,i){if(e&1&&(da(0,`span`,67),qS(1),aC(2,`t`),vd()),e&2){let a=i;Ar(`data-update`,a),hD(),bd(` `,uC(2,2,`ops.versions.update`,rC(5,Ce,a)),` `)}}function yt(e,i){if(e&1&&(da(0,`code`),qS(1),vd()),e&2){let a=SS().$implicit;hD(),ey(a.pinned)}}function ht(e,i){e&1&&(da(0,`span`,61),qS(1,`—`),vd())}function xt(e,i){if(e&1&&(da(0,`code`),qS(1),vd()),e&2){let a=SS().$implicit;hD(),ey(a.method)}}function bt(e,i){e&1&&(da(0,`span`,61),qS(1,`—`),vd())}function St(e,i){if(e&1&&(da(0,`tr`)(1,`td`)(2,`a`,51),qS(3),vd(),dS(4,ut,3,3,`span`,60),vd(),da(5,`td`),dS(6,vt,2,1,`code`)(7,gt,1,0,`ui-state-badge`,16),dS(8,ft,3,7,`span`,67),vd(),da(9,`td`),dS(10,yt,2,1,`code`)(11,ht,2,0,`span`,61),vd(),da(12,`td`),dS(13,xt,2,1,`code`)(14,bt,2,0,`span`,61),vd(),da(15,`td`)(16,`code`,68),qS(17),vd()()()),e&2){let a,_=i.$implicit;Ar(`data-serving`,_.serving||null),hD(2),qm(`routerLink`,rC(9,Se,_.id)),hD(),ey(_.id),hD(),hS(_.serving?4:-1),hD(2),hS(_.version?6:7),hD(2),hS((a=_.updateTo)?8:-1,a),hD(2),hS(_.pinned?10:11),hD(3),hS(_.method?13:14),hD(4),ey(_.source)}}function Ct(e,i){if(e&1&&(da(0,`div`,34)(1,`table`,58)(2,`thead`)(3,`tr`)(4,`th`,59),qS(5),aC(6,`t`),vd(),da(7,`th`,59),qS(8),aC(9,`t`),vd(),da(10,`th`,59),qS(11),aC(12,`t`),vd(),da(13,`th`,59),qS(14),aC(15,`t`),vd(),da(16,`th`,59),qS(17),aC(18,`t`),vd()()(),da(19,`tbody`),mS(20,St,18,11,`tr`,null,H),vd()()()),e&2){let a=SS(2);hD(5),ey(lC(6,5,`table.id`)),hD(3),ey(lC(9,7,`ops.versions.col.installed`)),hD(3),ey(lC(12,9,`ops.versions.col.pinned`)),hD(3),ey(lC(15,11,`ops.versions.col.method`)),hD(3),ey(lC(18,13,`ops.versions.col.source`)),hD(3),yS(a.versionRows())}}function Et(e,i){e&1&&(Sa(0,`ui-empty`,42),aC(1,`t`),aC(2,`t`)),e&2&&qm(`title`,lC(1,2,`ops.versions.empty`))(`hint`,lC(2,4,`ops.versions.emptyHint`))}function kt(e,i){if(e&1&&(da(0,`span`,26),qS(1),vd()),e&2){let a=SS(2);Ar(`data-failures`,a.failures()),hD(),ey(a.failures())}}function Pt(e,i){if(e&1&&(da(0,`span`),qS(1),aC(2,`t`),vd()),e&2){let a=SS(2);hD(),bd(` · `,uC(2,1,`common.updatedAt`,rC(4,G,a.stamp(i))))}}function It(e,i){e&1&&(da(0,`div`,32),Sa(1,`ui-state-badge`,16),da(2,`span`),qS(3),aC(4,`t`),vd()()),e&2&&(hD(3),ey(lC(4,1,`federation.unavailable`)))}function Dt(e,i){if(e&1){let a=DS();da(0,`ui-error`,57),Ma(`retry`,function(){Hh(a);let f=SS(2);return Vh(f.loadTasks())}),vd()}e&2&&qm(`error`,i)}function Nt(e,i){e&1&&(da(0,`div`,28),Sa(1,`ui-skeleton`,5),vd()),e&2&&(hD(),qm(`lines`,3))}function wt(e,i){if(e&1&&(da(0,`tr`)(1,`td`)(2,`a`,69),qS(3),vd()(),da(4,`td`)(5,`code`),qS(6),vd()(),da(7,`td`),Sa(8,`ui-state-badge`,70),vd(),da(9,`td`),qS(10),vd()()),e&2){let a=i.$implicit,_=SS(3);Ar(`data-fail`,_.taskFailed(a)||null),hD(2),qm(`routerLink`,nC(8,Ee))(`queryParams`,rC(9,ke,a.id)),hD(),ey(a.label),hD(3),ey(a.verb),hD(2),qm(`state`,_.taskState(a))(`labelOverride`,a.stage),hD(2),ey(a.exit_code??`—`)}}function Tt(e,i){if(e&1&&(da(0,`div`,34)(1,`table`,58)(2,`thead`)(3,`tr`)(4,`th`,59),qS(5),aC(6,`t`),vd(),da(7,`th`,59),qS(8),aC(9,`t`),vd(),da(10,`th`,59),qS(11),aC(12,`t`),vd(),da(13,`th`,59),qS(14),aC(15,`t`),vd()()(),da(16,`tbody`),mS(17,wt,11,11,`tr`,null,H),vd()()()),e&2){let a=SS(2);hD(5),ey(lC(6,4,`table.task`)),hD(3),ey(lC(9,6,`table.verb`)),hD(3),ey(lC(12,8,`table.stage`)),hD(3),ey(lC(15,10,`table.exit`)),hD(3),yS(a.recentTasks())}}function Bt(e,i){e&1&&(Sa(0,`ui-empty`,45),aC(1,`t`)),e&2&&qm(`title`,lC(1,1,`tasks.empty`))}function Mt(e,i){if(e&1&&(da(0,`a`,49),Sa(1,`ui-icon`,64),da(2,`span`,71),qS(3),aC(4,`t`),vd(),Sa(5,`ui-icon`,37),vd()),e&2){let a=i.$implicit;qm(`routerLink`,a.route),Ar(`data-shortcut`,a.id),hD(),qm(`name`,a.icon)(`size`,16),hD(2),ey(lC(4,6,a.labelKey)),hD(2),qm(`size`,14)}}function Ft(e,i){if(e&1){let a=DS();da(0,`section`,6)(1,`div`,7)(2,`div`,8)(3,`strong`),qS(4),vd(),dS(5,De,2,1,`code`,9),dS(6,Ne,3,3,`span`,10),vd(),da(7,`button`,11),aC(8,`t`),Ma(`click`,function(){Hh(a);let f=SS();return Vh(f.store.refreshHealth())}),Sa(9,`ui-icon`,2),vd()(),da(10,`div`,12),Sa(11,`ui-state-badge`,13),da(12,`span`,14),Sa(13,`ui-icon`,15),qS(14),aC(15,`t`),vd(),da(16,`span`,14),qS(17),aC(18,`t`),dS(19,we,2,3)(20,Te,1,0,`ui-state-badge`,16),vd(),da(21,`span`,14),qS(22),aC(23,`t`),dS(24,Be,1,1,`ui-state-badge`,13)(25,Me,1,0,`ui-state-badge`,17),vd(),dS(26,Fe,7,8,`span`,14),vd(),da(27,`p`,18)(28,`code`),qS(29,`bootstrap · GET /api/v1/installation/status`),vd(),dS(30,Oe,3,6,`span`),vd()(),da(31,`section`,19)(32,`div`,20)(33,`div`,21)(34,`span`,22),Sa(35,`ui-state-badge`,13),vd(),da(36,`span`,23),qS(37),aC(38,`t`),vd()(),da(39,`div`,21)(40,`span`,22),qS(41),vd(),da(42,`span`,23),qS(43),aC(44,`t`),vd()(),da(45,`div`,21)(46,`span`,22),qS(47),vd(),da(48,`span`,23),qS(49),aC(50,`t`),vd()(),da(51,`div`,21)(52,`span`,22),dS(53,Ae,1,1)(54,Ve,1,0,`ui-state-badge`,16),vd(),da(55,`span`,23),qS(56),aC(57,`t`),vd()(),da(58,`div`,21)(59,`span`,22),dS(60,ze,1,1)(61,Le,1,0,`ui-state-badge`,16),vd(),da(62,`span`,23),qS(63),aC(64,`t`),vd()(),da(65,`div`,21)(66,`span`,22),qS(67),vd(),da(68,`span`,23),qS(69),aC(70,`t`),vd()()(),da(71,`p`,18)(72,`code`),qS(73,`bootstrap · GET /api/v1/installation/status · GET /api/v1/registry/state · GET /api/v1/federation`),vd(),dS(74,Re,3,6,`span`),vd()(),da(75,`section`,24)(76,`div`,25)(77,`div`)(78,`h2`),qS(79),aC(80,`t`),dS(81,Ge,2,2,`span`,26),vd(),da(82,`p`,18)(83,`code`),qS(84),vd()()(),da(85,`button`,11),aC(86,`t`),Ma(`click`,function(){Hh(a);let f=SS();return Vh(f.refreshAll())}),Sa(87,`ui-icon`,2),vd()(),da(88,`p`,27),qS(89),aC(90,`t`),vd(),dS(91,$e,2,1,`div`,28)(92,Ue,3,0,`ul`,29)(93,je,3,6,`ui-empty`,30),vd(),da(94,`section`,31)(95,`div`,25)(96,`div`)(97,`h2`),qS(98),aC(99,`t`),vd(),da(100,`p`,18)(101,`code`),qS(102,`GET /api/v1/federation`),vd(),dS(103,qe,3,6,`span`),vd()(),da(104,`button`,11),aC(105,`t`),Ma(`click`,function(){Hh(a);let f=SS();return Vh(f.loadFederation())}),Sa(106,`ui-icon`,2),vd()(),da(107,`p`,27),qS(108),aC(109,`t`),vd(),dS(110,Qe,5,3,`div`,32),dS(111,We,1,1,`ui-error`,33),dS(112,Je,2,1,`div`,28),dS(113,at,19,12,`div`,34)(114,ot,2,3,`ui-empty`,35),da(115,`a`,36),qS(116),aC(117,`t`),Sa(118,`ui-icon`,37),vd()(),da(119,`section`,38)(120,`div`,25)(121,`div`)(122,`h2`),qS(123),aC(124,`t`),vd(),da(125,`p`,18)(126,`code`),qS(127,`bootstrap`),vd(),dS(128,rt,3,6,`span`),vd()(),da(129,`button`,11),aC(130,`t`),Ma(`click`,function(){Hh(a);let f=SS();return Vh(f.store.refreshHealth())}),Sa(131,`ui-icon`,2),vd()(),dS(132,lt,3,0,`div`,39)(133,dt,2,3,`ui-empty`,40),vd(),Sa(134,`inventory-panel`),da(135,`section`,41)(136,`div`,25)(137,`div`)(138,`h2`),qS(139),aC(140,`t`),vd(),da(141,`p`,18)(142,`code`),qS(143,`GET /api/v1/registry/state · bootstrap · GET /api/v1/federation · GET /api/v1/versions`),vd(),dS(144,pt,3,6,`span`),vd()(),da(145,`button`,11),aC(146,`t`),Ma(`click`,function(){Hh(a);let f=SS();return Vh(f.loadVersions())}),Sa(147,`ui-icon`,2),vd()(),da(148,`p`,27),qS(149),aC(150,`t`),vd(),dS(151,ct,5,3,`div`,32),dS(152,mt,1,1,`ui-error`,33),dS(153,_t,2,1,`div`,28),dS(154,Ct,22,15,`div`,34)(155,Et,3,6,`ui-empty`,42),da(156,`a`,43),qS(157),aC(158,`t`),Sa(159,`ui-icon`,37),vd()(),da(160,`section`,44)(161,`div`,25)(162,`div`)(163,`h2`),qS(164),aC(165,`t`),dS(166,kt,2,2,`span`,26),vd(),da(167,`p`,18)(168,`code`),qS(169,`GET /api/v1/tasks`),vd(),dS(170,Pt,3,6,`span`),vd()(),da(171,`button`,11),aC(172,`t`),Ma(`click`,function(){Hh(a);let f=SS();return Vh(f.loadTasks())}),Sa(173,`ui-icon`,2),vd()(),dS(174,It,5,3,`div`,32),dS(175,Dt,1,1,`ui-error`,33),dS(176,Nt,2,1,`div`,28),dS(177,Tt,19,12,`div`,34)(178,Bt,2,3,`ui-empty`,45),da(179,`a`,46),qS(180),aC(181,`t`),Sa(182,`ui-icon`,37),vd()(),da(183,`section`,47)(184,`div`,25)(185,`div`)(186,`h2`),qS(187),aC(188,`t`),vd()()(),da(189,`p`,27),qS(190),aC(191,`t`),vd(),da(192,`div`,48),mS(193,Mt,6,8,`a`,49,Pe),vd()()}if(e&2){let a,_,f,I,w,M,y,h,E,T,F,$,L,U,r=SS();hD(4),ey(r.store.forgeName()),hD(),hS((a=r.descriptor()?.forge_version)?5:-1,a),hD(),hS(r.store.federated()?6:-1),hD(),Ar(`aria-label`,lC(8,88,`state.refresh`)),hD(2),qm(`size`,14),hD(2),qm(`state`,r.health()?.state??`UNVERIFIED`),hD(2),qm(`size`,13),hD(),bd(``,r.store.workspace()?.name??lC(15,90,`dashboard.noWorkspace`),` `),hD(3),bd(` `,lC(18,92,`dashboard.profile`),`: `),hD(2),hS((_=r.health())?19:20,_),hD(3),bd(` `,lC(23,94,`dashboard.accountEnvironment`),` `),hD(2),hS((f=r.store.accountEnvironment())?24:25,f),hD(2),hS((I=r.lastArea())?26:-1,I),hD(4),hS((w=r.store.refreshedAt())?30:-1,w),hD(3),Na(`--%NS%stat-rail`,`var(--accent)`),hD(2),qm(`state`,r.health()?.state??`UNVERIFIED`),hD(2),ey(lC(38,96,`dashboard.stat.state`)),hD(2),Na(`--%NS%stat-rail`,`var(--ok)`),hD(2),ty(``,r.capsSupported(),`/`,r.store.capabilities().length),hD(2),ey(lC(44,98,`dashboard.stat.capabilities`)),hD(2),Na(`--%NS%stat-rail`,`var(--info)`),hD(2),ty(``,r.checksOk(),`/`,r.health()?.checks.length??0),hD(2),ey(lC(50,100,`dashboard.stat.checks`)),hD(2),Na(`--%NS%stat-rail`,`var(--accent)`),hD(2),hS(r.registryCount()!==null?53:54),hD(3),ey(lC(57,102,`dashboard.stat.registryInstalls`)),hD(2),Na(`--%NS%stat-rail`,`var(--info)`),hD(2),hS((M=r.fed.data())?60:61,M),hD(3),ey(lC(64,104,`dashboard.stat.discovered`)),hD(2),Na(`--%NS%stat-rail`,`var(--fg-muted)`),hD(2),ey(r.descriptor()?.portal_version??`—`),hD(2),ey(lC(70,106,`dashboard.stat.portal`)),hD(5),hS((y=r.store.refreshedAt())?74:-1,y),hD(5),bd(` `,lC(80,108,`ops.alerts.title`),` `),hD(2),hS(r.alerts().length?81:-1),hD(3),bd(`derived · `,r.alertSources),hD(),Ar(`aria-label`,lC(86,110,`state.refresh`)),hD(2),qm(`size`,14),hD(2),ey(lC(90,112,`ops.alerts.hint`)),hD(2),hS(r.alertsLoading()?91:r.alerts().length?92:93),hD(7),ey(lC(99,114,`dashboard.forges`)),hD(5),hS((h=r.fed.loadedAt())?103:-1,h),hD(),Ar(`aria-label`,lC(105,116,`state.refresh`)),hD(2),qm(`size`,14),hD(2),ey(lC(109,118,`dashboard.forges.hint`)),hD(2),hS(r.fed.unavailable()?110:-1),hD(),hS((E=r.fed.error())?111:-1,E),hD(),hS(r.fed.loading()&&!r.fed.data()?112:-1),hD(),hS(r.forgesRows().length?113:r.fed.attempted()&&!r.fed.loading()&&!r.fed.error()?114:-1),hD(3),bd(` `,lC(117,120,`state.viewDetails`)),hD(2),qm(`size`,14),hD(5),ey(lC(124,122,`dashboard.capabilities`)),hD(5),hS((T=r.store.refreshedAt())?128:-1,T),hD(),Ar(`aria-label`,lC(130,124,`state.refresh`)),hD(2),qm(`size`,14),hD(),hS(r.store.capabilities().length?132:133),hD(7),ey(lC(140,126,`ops.versions.title`)),hD(5),hS((F=r.registrySrc.loadedAt())?144:-1,F),hD(),Ar(`aria-label`,lC(146,128,`state.refresh`)),hD(2),qm(`size`,14),hD(2),ey(lC(150,130,`ops.versions.hint`)),hD(2),hS(r.registrySrc.unavailable()?151:-1),hD(),hS(($=r.registrySrc.error())?152:-1,$),hD(),hS(r.versionsLoading()?153:-1),hD(),hS(r.versionRows().length?154:r.versionsSettled()?155:-1),hD(3),bd(` `,lC(158,132,`state.viewDetails`)),hD(2),qm(`size`,14),hD(5),bd(` `,lC(165,134,`tasks.recent`),` `),hD(2),hS(r.failures()?166:-1),hD(4),hS((L=r.tasksSrc.loadedAt())?170:-1,L),hD(),Ar(`aria-label`,lC(172,136,`state.refresh`)),hD(2),qm(`size`,14),hD(),hS(r.tasksSrc.unavailable()?174:-1),hD(),hS((U=r.tasksSrc.error())?175:-1,U),hD(),hS(r.tasksSrc.loading()&&!r.tasksSrc.data()?176:-1),hD(),hS(r.recentTasks().length?177:r.tasksSrc.attempted()&&!r.tasksSrc.loading()&&!r.tasksSrc.error()&&!r.tasksSrc.unavailable()?178:-1),hD(3),bd(` `,lC(181,138,`state.viewDetails`)),hD(2),qm(`size`,14),hD(5),ey(lC(188,140,`ops.diagnostics.title`)),hD(3),ey(lC(191,142,`ops.diagnostics.hint`)),hD(3),yS(r.shortcuts)}}var be=class e{store=p(g);api=p(g$1);prefs=p(rE);fed=new l$1;tasksSrc=new l$1;registrySrc=new l$1;mcpSrc=new l$1;hostsSrc=new l$1;versionsSrc=new l$1;graphsSrc=new l$1;inventory=LU(F);health=tn(()=>this.store.health());descriptor=tn(()=>this.store.descriptor());forgesRows=tn(()=>w(this.descriptor(),this.health(),this.fed.data()).slice(0,8));recentTasks=tn(()=>[...this.tasksSrc.data()??[]].sort((i,a)=>a.started_at.localeCompare(i.started_at)).slice(0,6));failures=tn(()=>this.recentTasks().filter(i=>this.taskFailed(i)).length);capsSupported=tn(()=>this.store.capabilities().filter(i=>i.state===`supported`).length);checksOk=tn(()=>(this.health()?.checks??[]).filter(i=>i.state===`PASS`).length);registryCount=tn(()=>xe(this.registrySrc.data()));lastArea=tn(()=>{let i=this.prefs.lastRoute();return!i||i===`/`||i===`/dashboard`?null:{url:i,labelKey:q$(i)}});opsSources=()=>[this.fed,this.tasksSrc,this.registrySrc,this.mcpSrc,this.hostsSrc,this.versionsSrc,this.graphsSrc];alertsLoading=tn(()=>this.opsSources().some(i=>i.loading()&&!i.attempted()));alerts=tn(()=>ye({health:this.health(),accountEnvironment:this.store.accountEnvironment(),federation:this.fed.data(),mcpServers:this.mcpSrc.data(),hosts:this.hostsSrc.data(),tasks:this.tasksSrc.data(),registry:this.registrySrc.data(),versions:this.versionsSrc.data(),graphs:this.graphsSrc.data()}));versionRows=tn(()=>he({registry:this.registrySrc.data(),federation:this.fed.data(),descriptor:this.descriptor(),versions:this.versionsSrc.data()}));versionsLoading=tn(()=>this.registrySrc.loading()&&!this.registrySrc.attempted());versionsSettled=tn(()=>this.registrySrc.attempted()&&!this.registrySrc.loading()&&!this.registrySrc.error()&&!this.registrySrc.unavailable());alertSources=`/health · /federation · /mcp/servers · /hosts · /tasks · /registry/state · /versions · /graphs`;shortcuts=[{id:`hosts`,route:`/hosts`,icon:`hosts`,labelKey:`nav.hosts`},{id:`observe`,route:`/observe`,icon:`pulse`,labelKey:`nav.observe`},{id:`config`,route:`/config`,icon:`key`,labelKey:`nav.config`},{id:`versions`,route:`/versions`,icon:`history`,labelKey:`nav.versions`},{id:`mcp`,route:`/mcp`,icon:`mcp`,labelKey:`nav.mcp`},{id:`tasks`,route:`/tasks`,icon:`tasks`,labelKey:`nav.tasks`}];stamp=y;capIcons={tasks:`tasks`,graph:`graph`,mcp:`mcp`,skills:`skills`,agents:`agents`,knowledge:`knowledge`,hosts:`hosts`,install:`install`,profiles:`profiles`,federation:`network`,scan:`search`,analyze:`search`,docs:`knowledge`};constructor(){this.refreshAll()}async refreshAll(){await Promise.allSettled([this.store.refreshHealth(),this.loadFederation(),this.loadTasks(),this.loadVersions(),this.loadMcp(),this.loadHosts(),this.loadGraphs(),this.inventory()?.loadCounts()??Promise.resolve()])}async loadFederation(){await this.fed.load(()=>this.api.federation())}async loadTasks(){await this.tasksSrc.load(()=>this.api.tasks())}async loadVersions(){await Promise.allSettled([this.registrySrc.load(()=>this.api.registryState()),this.versionsSrc.load(()=>this.api.versions())])}async loadMcp(){await this.mcpSrc.load(()=>this.api.mcpServers())}async loadHosts(){await this.hostsSrc.load(()=>this.api.hosts())}async loadGraphs(){await this.graphsSrc.load(()=>this.api.graphs())}taskFailed(i){return W(i)}taskState(i){let a=(i.stage||``).toLowerCase();return a===`completed`?`supported`:[`failed`,`refused`,`cancelled`].includes(a)?`error`:[`awaiting_approval`,`partial`].includes(a)?`warn`:[`running`,`planning`,`verifying`,`started`,`selected`].includes(a)?`info`:`muted`}capIcon(i){return this.capIcons[i]??`check`}static ɵfac=function(a){return new(a||e)};static ɵcmp=ei({type:e,selectors:[[`page-dashboard`]],viewQuery:function(a,_){a&1&&Km(_.inventory,F,5),a&2&&NS()},decls:9,vars:11,consts:[[`hintId`,`start`,3,`title`,`subtitle`],[1,`btn`,3,`click`],[`name`,`refresh`,3,`size`],[`role`,`status`,1,`boot`],[`kind`,`card`],[`kind`,`row`,3,`lines`],[`data-section`,`status`,1,`card`,`status`],[1,`status__top`],[1,`status__id`],[1,`ver`],[1,`fed`],[1,`icon-btn`,3,`click`],[1,`status__meta`],[3,`state`],[1,`meta`],[`name`,`folder`,3,`size`],[`state`,`UNVERIFIED`],[`state`,`MISSING`],[1,`src`],[`data-section`,`stats`],[1,`stats`,`stagger`],[1,`stat`],[1,`stat__value`],[1,`stat__label`],[`data-section`,`alerts`,1,`card`],[1,`sec__head`],[1,`failn`],[1,`muted`,`sec__hint`],[`role`,`status`],[1,`alerts`],[`icon`,`shield-check`,3,`title`,`hint`],[`data-section`,`forges`,1,`card`],[`role`,`note`,1,`unv`],[3,`error`],[1,`table-wrap`],[`icon`,`network`,3,`title`],[`routerLink`,`/forges`,1,`more`],[`name`,`chevron-right`,3,`size`],[`data-section`,`capabilities`,1,`card`],[1,`caps`],[`icon`,`dashboard`,3,`title`],[`data-section`,`versions`,1,`card`],[`icon`,`history`,3,`title`,`hint`],[`routerLink`,`/versions`,1,`more`],[`data-section`,`tasks`,1,`card`],[`icon`,`tasks`,3,`title`],[`routerLink`,`/tasks`,1,`more`],[`data-section`,`diagnostics`,1,`card`],[1,`shortcuts`],[1,`shortcut`,3,`routerLink`],[`name`,`history`,3,`size`],[1,`linklike`,3,`routerLink`],[1,`alert`],[`name`,`alert`,1,`alert__icon`,3,`size`],[1,`alert__body`],[1,`alert__detail`],[1,`alert__go`,3,`routerLink`],[3,`retry`,`error`],[1,`table`],[`scope`,`col`],[1,`chip`],[1,`muted`],[1,`path`],[1,`cap`],[3,`name`,`size`],[1,`cap__id`],[`aria-hidden`,`true`,1,`cap__dot`],[1,`chip`,`chip--update`],[1,`src-cell`],[1,`linklike`,3,`routerLink`,`queryParams`],[3,`state`,`labelOverride`],[1,`shortcut__label`]],template:function(a,_){a&1&&(da(0,`ui-page-header`,0),aC(1,`t`),aC(2,`t`),da(3,`button`,1),Ma(`click`,function(){return _.refreshAll()}),Sa(4,`ui-icon`,2),qS(5),aC(6,`t`),vd()(),dS(7,Ie,4,4,`div`,3)(8,Ft,195,144)),a&2&&(qm(`title`,lC(1,5,`dashboard.title`))(`subtitle`,lC(2,7,`dashboard.subtitle`)),hD(4),qm(`size`,15),hD(),bd(` `,lC(6,9,`state.refresh`),` `),hD(2),hS(_.store.status()===`booting`&&!_.health()?7:8))},dependencies:[vc,T,I,_,D,cE,k,F,aE],styles:[`.card[_ngcontent-%COMP%], .boot[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}.status__top[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3)}.status__id[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);font-size:var(--%NS%font-lg);font-weight:700;letter-spacing:-.01em;min-width:0}.ver[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);font-weight:600;background:var(--%NS%accent-bg);color:var(--%NS%accent-ink);border-radius:var(--%NS%radius-pill);padding:1px 8px}.fed[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);font-weight:700;color:var(--%NS%accent-ink);border:1px solid color-mix(in srgb,var(--%NS%accent) 55%,transparent);border-radius:var(--%NS%radius-pill);padding:1px 8px;background:var(--%NS%accent-bg)}.status__meta[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-2) var(--%NS%space-4);margin-top:var(--%NS%space-3)}.meta[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted)}.src[_ngcontent-%COMP%]{margin:var(--%NS%space-3) 0 0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.sec__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3)}.sec__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650}.sec__head[_ngcontent-%COMP%] .src[_ngcontent-%COMP%]{margin-top:4px}.sec__hint[_ngcontent-%COMP%]{margin:2px 0 var(--%NS%space-3);font-size:var(--%NS%font-sm)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.stats[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:var(--%NS%space-4);margin-bottom:var(--%NS%space-4)}.unv[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-3);margin-bottom:var(--%NS%space-3);border:1px dashed color-mix(in srgb,var(--%NS%warn) 55%,transparent);border-radius:var(--%NS%radius-md);background:var(--%NS%warn-bg);font-size:var(--%NS%font-sm)}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto;margin-top:var(--%NS%space-2)}.path[_ngcontent-%COMP%]{display:inline-block;max-width:34ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.chip[_ngcontent-%COMP%]{margin-left:6px}.chip--update[_ngcontent-%COMP%]{color:var(--%NS%info);background:var(--%NS%info-bg)}.src-cell[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.more[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;min-height:24px;margin-top:var(--%NS%space-3);padding-block:2px;font-size:var(--%NS%font-sm);font-weight:600;text-decoration:none;transition:color var(--%NS%motion-fast)}.more[_ngcontent-%COMP%]:hover{color:var(--%NS%accent-ink)}.failn[_ngcontent-%COMP%]{display:inline-grid;place-items:center;min-width:20px;height:20px;margin-left:6px;padding:0 6px;border-radius:var(--%NS%radius-pill);background:var(--%NS%error-bg);color:var(--%NS%error);font-size:var(--%NS%font-xs);font-weight:700;vertical-align:2px}tr[data-fail][_ngcontent-%COMP%] td[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--%NS%error-bg) 55%,transparent)}.caps[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2);margin-top:var(--%NS%space-3)}inventory-panel[_ngcontent-%COMP%]{display:block;margin-bottom:var(--%NS%space-4)}.alerts[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:var(--%NS%space-2)}.alert[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-2) var(--%NS%space-3);border:1px solid var(--%NS%border);border-left:3px solid var(--%NS%alert-fg, var(--%NS%border));border-radius:var(--%NS%radius-md);background:var(--%NS%bg-elevated);font-size:var(--%NS%font-sm)}.alert[data-severity=error][_ngcontent-%COMP%]{--%NS%alert-fg: var(--%NS%error);background:color-mix(in srgb,var(--%NS%error-bg) 45%,var(--%NS%bg-elevated))}.alert[data-severity=warn][_ngcontent-%COMP%]{--%NS%alert-fg: var(--%NS%warn)}.alert[data-severity=info][_ngcontent-%COMP%]{--%NS%alert-fg: var(--%NS%info)}.alert__icon[_ngcontent-%COMP%]{flex-shrink:0;color:var(--%NS%alert-fg, var(--%NS%fg-muted))}.alert__body[_ngcontent-%COMP%]{flex:1;min-width:0}.alert__detail[_ngcontent-%COMP%]{display:block;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.alert__go[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;min-height:24px;padding-block:1px;font-weight:600;text-decoration:none;white-space:nowrap}.shortcuts[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:var(--%NS%space-3);margin-top:var(--%NS%space-2)}.shortcut[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);padding:var(--%NS%space-3) var(--%NS%space-4);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-lg);background:var(--%NS%bg-elevated);color:var(--%NS%fg);font-size:var(--%NS%font-sm);font-weight:600;text-decoration:none}.shortcut[_ngcontent-%COMP%]:hover{border-color:var(--%NS%accent-ink)}.shortcut__label[_ngcontent-%COMP%]{flex:1}`]})};export{be as DashboardPage}; \ No newline at end of file diff --git a/portal/assets/chunk-vTT25rMv.js b/portal/assets/chunk-vTT25rMv.js deleted file mode 100644 index 20cc816..0000000 --- a/portal/assets/chunk-vTT25rMv.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as da,At as rn,Dt as pS,Et as p,F as Wm,G as _r,Gt as wS,K as aC,Lt as tn,M as Ta,Mt as sC,N as Uh,Ot as rC,P as WS,Pt as tC,Q as cE,S as Oo,St as nb,Tt as oC,U as _a,X as bS,Xt as yd,Yt as yc,Z as ba,at as ey,ct as gS,dt as hE,ft as hS,gt as k,h as Jm,ht as jh,it as ei,l as Dd,nt as eb,o as Ar,ot as fS,q as aE,ut as hD,xt as nC,yt as mS,zt as uS}from"./chunk-BelLryvf.js";import{i as n,r as g}from"./main-A2NKRJGT.js";import{i as x,n as f,t as M}from"./chunk-D-7Jr8A3.js";import{i as Zt,n as De$1,r as Yt,t as At$1}from"./chunk-DpHwlXuY.js";import{a as l}from"./chunk-0WpwvubF.js";import{t as _}from"./chunk-BKRLVsID.js";import{t as D}from"./chunk-CiuPOfJ0.js";import{n as k$1,t as I}from"./chunk-D2KAfPv6.js";import{t as T}from"./chunk-BBusSOqc.js";var A=()=>[];var ve=(n,i)=>i[0];var ye=(n,i)=>i.id;var ue=(n,i)=>i.path;var Ce=(n,i)=>i.path??i;var me=(n,i)=>i.member;function be(n,i){if(n&1&&(da(0,`span`,3),WS(1),yd()),n&2){let e=bS();hD(),Dd(`· `,e.operation)}}function ke(n,i){if(n&1&&(da(0,`div`,6)(1,`dt`),WS(2),oC(3,`t`),yd(),da(4,`dd`),WS(5),yd()()),n&2){let e=i.$implicit;hD(2),Jm(sC(3,2,e[0])),hD(3),Jm(e[1])}}function Se(n,i){if(n&1&&(da(0,`span`,14),WS(1),yd()),n&2){let e=bS().$implicit;hD(),Jm(e.detail)}}function he(n,i){n&1&&(da(0,`span`,15),WS(1),oC(2,`t`),yd()),n&2&&(hD(),Jm(sC(2,1,`fdoc.repairable`)))}function Ee(n,i){if(n&1&&(da(0,`li`),ba(1,`ui-state-badge`,12),da(2,`code`,13),WS(3),yd(),uS(4,Se,2,1,`span`,14),uS(5,he,3,3,`span`,15),yd()),n&2){let e=i.$implicit;hD(),Wm(`state`,e.status??`unverified`)(`labelOverride`,e.status??null),hD(2),Jm(e.id),hD(),fS(e.detail?4:-1),hD(),fS(e.repairable?5:-1)}}function Ie(n,i){if(n&1&&(da(0,`h3`),WS(1),oC(2,`t`),yd(),da(3,`ul`,11),gS(4,Ee,6,5,`li`,null,ye),yd()),n&2){let e=bS();hD(),Jm(sC(2,1,`fdoc.checks`)),hD(3),mS(e.checks)}}function Pe(n,i){if(n&1&&(da(0,`div`,20),ba(1,`ui-state-badge`,12),da(2,`code`),WS(3),yd()()),n&2){let e=i.$implicit;hD(),Wm(`state`,e.status??`modified`)(`labelOverride`,e.status??null),hD(2),Jm(e.path)}}function Te(n,i){if(n&1&&(da(0,`h3`),WS(1),oC(2,`t`),yd(),da(3,`p`,16)(4,`span`,17),WS(5),yd(),da(6,`span`,18),WS(7),oC(8,`t`),yd(),da(9,`span`,19),WS(10),oC(11,`t`),yd()(),gS(12,Pe,4,3,`div`,20,ue)),n&2){let e=bS(),l=bS(2);hD(),Jm(sC(2,6,`fdoc.drift`)),hD(4),Dd(`ok `,e.ok),hD(2),ey(``,sC(8,8,`fdoc.modified`),` `,e.modified?.length??0),hD(3),ey(``,sC(11,10,`fdoc.missing`),` `,e.missing?.length??0),hD(2),mS(l.driftFiles(e))}}function Ne(n,i){n&1&&uS(0,Te,14,12),n&2&&fS(i.ok!==void 0?0:-1)}function we(n,i){if(n&1&&(da(0,`div`,20)(1,`code`),WS(2),yd()()),n&2){let e=i.$implicit;hD(2),Jm(e.path??e)}}function Me(n,i){if(n&1&&(da(0,`p`,22),WS(1),oC(2,`t`),yd()),n&2){let e=bS(2);hD(),ey(`… `,e.list.length-8,` `,sC(2,2,`fdoc.more`))}}function Oe(n,i){if(n&1&&(da(0,`h3`),WS(1),oC(2,`t`),yd(),da(3,`p`,21),WS(4),yd(),gS(5,we,3,1,`div`,20,Ce),uS(7,Me,3,4,`p`,22)),n&2){let e=bS();hD(),Jm(sC(2,3,e.label)),hD(3),Jm(e.list.length),hD(),mS(e.list.slice(0,8)),hD(2),fS(e.list.length>8?7:-1)}}function Fe(n,i){n&1&&uS(0,Oe,8,5),n&2&&fS(i.list.length?0:-1)}function Be(n,i){if(n&1&&(da(0,`code`),WS(1),yd()),n&2){let e=bS();hD(),Jm(e.install_root??e.manifest)}}function De(n,i){n&1&&(da(0,`span`,22),WS(1),oC(2,`t`),yd()),n&2&&(hD(),Jm(sC(2,1,`fdoc.portal.vendored`)))}function Ue(n,i){if(n&1&&(da(0,`h3`),WS(1),oC(2,`t`),yd(),da(3,`p`,23),ba(4,`ui-state-badge`,12),uS(5,Be,2,1,`code`)(6,De,3,3,`span`,22),yd()),n&2){let e=i;hD(),Jm(sC(2,4,`fdoc.portal`)),hD(3),Wm(`state`,e.state??`unverified`)(`labelOverride`,e.state??null),hD(),fS(e.install_root||e.manifest?5:e.state===`vendored`?6:-1)}}function Ve(n,i){if(n&1&&(da(0,`div`,20)(1,`code`),WS(2),yd()()),n&2){let e=i.$implicit;hD(2),Jm(e.path)}}function ze(n,i){if(n&1&&(da(0,`div`,20),ba(1,`ui-state-badge`,24),da(2,`code`),WS(3),yd(),WS(4),yd()),n&2){let e=i.$implicit;hD(),Wm(`labelOverride`,`conflict`),hD(2),Jm(e.member),hD(),ey(` `,e.forge_id,`: `,e.decision,` `)}}function $e(n,i){if(n&1&&(da(0,`div`,20),ba(1,`ui-state-badge`,25),da(2,`code`),WS(3),yd()()),n&2){let e=i.$implicit;hD(),Wm(`labelOverride`,`unknown`),hD(2),Jm(e)}}function Ae(n,i){if(n&1&&(da(0,`div`,20),ba(1,`ui-state-badge`,12),da(2,`code`),WS(3),yd()()),n&2){let e=i.$implicit;hD(),Wm(`state`,e.status??`unverified`)(`labelOverride`,e.status??null),hD(2),Jm(e.member)}}function Re(n,i){if(n&1&&(da(0,`h3`),WS(1),oC(2,`t`),yd(),gS(3,Ve,3,1,`div`,20,ue),gS(5,ze,5,4,`div`,20,me),gS(7,$e,4,2,`div`,20,pS),gS(9,Ae,4,3,`div`,20,me)),n&2){let e=i;hD(),Jm(sC(2,1,`fdoc.workspace`)),hD(2),mS(e.members??tC(3,A)),hD(2),mS(e.conflicts??tC(4,A)),hD(2),mS(e.unknown_members??tC(5,A)),hD(2),mS(e.member_results??tC(6,A))}}function Le(n,i){if(n&1&&(da(0,`p`,7),WS(1),oC(2,`t`),ba(3,`ui-state-badge`,4),yd()),n&2){let e=bS();hD(),Dd(` `,sC(2,2,`fdoc.verification`),` `),hD(2),Wm(`state`,e.verification.status)}}function je(n,i){if(n&1&&(da(0,`p`),WS(1),yd()),n&2){let e=bS(2);hD(),Jm(e.error.detail)}}function Ke(n,i){if(n&1&&(da(0,`p`,26),WS(1),oC(2,`t`),yd()),n&2){let e=bS(2);hD(),ey(``,sC(2,2,`fdoc.unlock`),` `,e.error.unlock)}}function qe(n,i){if(n&1&&(da(0,`div`,8)(1,`p`)(2,`code`),WS(3),yd()(),uS(4,je,2,1,`p`),uS(5,Ke,3,4,`p`,26),yd()),n&2){let e=bS();hD(3),Jm(e.error.kind),hD(),fS(e.error.detail?4:-1),hD(),fS(e.error.unlock?5:-1)}}function Je(n,i){if(n&1&&(da(0,`p`,9),ba(1,`ui-icon`,27),WS(2),oC(3,`t`),da(4,`code`),WS(5),yd()()),n&2){let e=bS();hD(),Wm(`size`,13),hD(),Dd(` `,sC(3,3,`fdoc.repair`),` `),hD(3),Jm(e.repair_hint)}}function He(n,i){if(n&1&&(da(0,`div`,0)(1,`div`,1)(2,`span`,2),WS(3),yd(),uS(4,be,2,1,`span`,3),ba(5,`ui-state-badge`,4),yd(),da(6,`dl`,5),gS(7,ke,6,4,`div`,6,ve),yd(),uS(9,Ie,6,3),uS(10,Ne,1,1),uS(11,Fe,1,1),uS(12,Ue,7,6),uS(13,Re,11,7),uS(14,Le,4,4,`p`,7),uS(15,qe,6,3,`div`,8),uS(16,Je,6,5,`p`,9),da(17,`details`,10)(18,`summary`),WS(19),oC(20,`t`),yd(),da(21,`pre`),WS(22),yd()()()),n&2){let e,l,p,v,y=i,w=bS();hD(3),Jm(y.forge_id??`forge`),hD(),fS(y.operation?4:-1),hD(),Wm(`state`,y.status??`unverified`),hD(2),mS(w.meta(y)),hD(2),fS(y.checks?.length?9:-1),hD(),fS((e=y.drift)?10:-1,e),hD(),fS((l=w.files(y))?11:-1,l),hD(),fS((p=y.forge_portal)?12:-1,p),hD(),fS((v=y.workspace)?13:-1,v),hD(),fS(y.verification?.status?14:-1),hD(),fS(y.error&&(y.error.kind||y.error.detail)?15:-1),hD(),fS(y.repair_hint?16:-1),hD(3),Jm(sC(20,13,`fdoc.raw`)),hD(3),Jm(w.raw())}}var R=class n{doc=rn.required();raw=k(``);ngOnChanges(){this.raw.set(JSON.stringify(this.doc(),null,2))}meta(i){let e=[];i.target_root&&e.push([`doc.target`,i.target_root]),i.scope&&e.push([`doc.scope`,i.scope]),i.version&&e.push([`doc.version`,i.version]);let l=i.context?.profile??i.profile;return l&&e.push([`doc.profile`,l]),i.state_dir&&e.push([`doc.state_dir`,i.state_dir]),i.ledger_entries!==void 0&&e.push([`doc.managed`,`${i.ledger_entries}`]),e}driftFiles(i){return[...i.modified??[],...i.missing??[]].slice(0,8)}files(i){return i.managed_files?{label:`fdoc.managed_files`,list:i.managed_files}:i.planned_files?{label:`fdoc.planned_files`,list:i.planned_files}:null}static ɵfac=function(e){return new(e||n)};static ɵcmp=ei({type:n,selectors:[[`ui-forge-doc`]],inputs:{doc:[1,`doc`]},features:[_r],decls:1,vars:1,consts:[[1,`fdoc`],[1,`fdoc__head`],[1,`fdoc__title`],[1,`fdoc__op`],[3,`state`],[1,`fdoc__meta`],[1,`kv`],[1,`fdoc__verif`],[1,`fdoc__refusal`],[1,`fdoc__repair`],[1,`fdoc__raw`],[1,`fdoc__checks`],[3,`state`,`labelOverride`],[1,`cid`],[1,`detail`],[1,`repairable`],[1,`fdoc__drift`],[1,`ok`],[1,`warn`],[1,`bad`],[1,`fdoc__file`],[1,`fdoc__count`],[1,`muted`],[1,`fdoc__portal`],[`state`,`degraded`,3,`labelOverride`],[`state`,`unverified`,3,`labelOverride`],[1,`unlock`],[`name`,`refresh`,3,`size`]],template:function(e,l){if(e&1&&uS(0,He,23,15,`div`,0),e&2){let p;fS((p=l.doc())?0:-1,p)}},dependencies:[I,cE,aE],styles:[`.fdoc[_ngcontent-%COMP%]{font-size:var(--%NS%font-sm)}.fdoc__head[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.fdoc__title[_ngcontent-%COMP%]{font-weight:700;font-size:var(--%NS%font-lg);letter-spacing:-.01em}.fdoc__op[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);font-weight:600}.fdoc__meta[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--%NS%space-2) var(--%NS%space-4);margin:0 0 var(--%NS%space-3)}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);text-transform:uppercase;letter-spacing:.04em}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;font-weight:550;word-break:break-all}h3[_ngcontent-%COMP%]{margin:var(--%NS%space-3) 0 var(--%NS%space-2);font-size:var(--%NS%font-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--%NS%fg-muted)}.fdoc__checks[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:var(--%NS%space-2)}.fdoc__checks[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-2);flex-wrap:wrap}.cid[_ngcontent-%COMP%]{font-weight:650}.detail[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}.repairable[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);font-size:var(--%NS%font-xs);font-weight:650}.fdoc__drift[_ngcontent-%COMP%]{display:flex;gap:var(--%NS%space-3);font-weight:650}.ok[_ngcontent-%COMP%]{color:var(--%NS%ok)}.warn[_ngcontent-%COMP%]{color:var(--%NS%warn)}.bad[_ngcontent-%COMP%]{color:var(--%NS%bad)}.fdoc__file[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:var(--%NS%space-2);padding:2px 0}.fdoc__count[_ngcontent-%COMP%]{font-weight:650;margin:0}.fdoc__portal[_ngcontent-%COMP%], .fdoc__verif[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2)}.fdoc__refusal[_ngcontent-%COMP%]{border-left:3px solid var(--%NS%bad);padding:var(--%NS%space-1) var(--%NS%space-3);margin:var(--%NS%space-3) 0;color:var(--%NS%bad)}.fdoc__refusal[_ngcontent-%COMP%] .unlock[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.fdoc__repair[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);color:var(--%NS%accent-ink)}.fdoc__raw[_ngcontent-%COMP%]{margin-top:var(--%NS%space-4)}.fdoc__raw[_ngcontent-%COMP%] pre[_ngcontent-%COMP%]{background:var(--%NS%bg);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);padding:var(--%NS%space-3);overflow-x:auto;font-size:var(--%NS%font-xs)}.muted[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)}`]})};var Ge=n=>({count:n});var Qe=()=>[`/tasks`];var We=n=>({task:n});var Xe=()=>[`/observe`];var Ye=n=>({cid:n});var Ze=(n,i)=>({current:n,total:i});var et=(n,i)=>i[0];var tt=(n,i)=>i.task.id;var nt=(n,i)=>i.id;function it(n,i){n&1&&(da(0,`section`,11),ba(1,`div`,32),da(2,`p`,21),WS(3),oC(4,`t`),yd()()),n&2&&(hD(3),Jm(sC(4,1,`tasks.executing`)))}function at(n,i){if(n&1){let e=wS();da(0,`section`,12)(1,`h2`),WS(2),oC(3,`t`),yd(),da(4,`p`)(5,`code`),WS(6),yd(),WS(7),yd(),da(8,`p`,21),WS(9),oC(10,`t`),yd(),da(11,`div`,33)(12,`button`,34),Ta(`click`,function(){jh(e);let p=bS();return Uh(p.regenerate())}),ba(13,`ui-icon`,2),WS(14),oC(15,`t`),yd(),da(16,`button`,35),Ta(`click`,function(){jh(e);let p=bS();return Uh(p.stale.set(null))}),WS(17),oC(18,`t`),yd()()()}if(n&2){let e=i,l=bS();hD(2),Jm(sC(3,8,`tasks.stale.title`)),hD(4),Jm(e.body.code),hD(),Dd(` `,e.body.message,` `),hD(2),Jm(sC(10,10,`tasks.stale.hint`)),hD(3),Wm(`disabled`,l.busy()),hD(),Wm(`size`,14),hD(),Dd(` `,sC(15,12,`tasks.stale.regenerate`),` `),hD(3),Jm(sC(18,14,`state.close`))}}function ot(n,i){if(n&1&&(da(0,`div`,37)(1,`dt`)(2,`code`),WS(3),yd()(),da(4,`dd`),WS(5),yd()()),n&2){let e=i.$implicit;hD(3),Jm(e[0]),hD(2),Jm(e[1])}}function rt(n,i){if(n&1){let e=wS();da(0,`section`,13)(1,`h2`),WS(2),oC(3,`t`),yd(),da(4,`p`,21),WS(5),oC(6,`t`),yd(),da(7,`dl`,36)(8,`div`,37)(9,`dt`),WS(10),oC(11,`t`),yd(),da(12,`dd`),WS(13),yd()(),da(14,`div`,37)(15,`dt`),WS(16),oC(17,`t`),yd(),da(18,`dd`)(19,`code`),WS(20),yd()()(),da(21,`div`,37)(22,`dt`),WS(23),oC(24,`t`),yd(),da(25,`dd`),WS(26),yd()(),da(27,`div`,37)(28,`dt`),WS(29),oC(30,`t`),yd(),da(31,`dd`,38)(32,`code`),WS(33),yd()()(),gS(34,ot,6,2,`div`,37,et),yd(),da(36,`details`,39)(37,`summary`),WS(38),oC(39,`t`),yd(),da(40,`pre`),WS(41),yd()(),da(42,`div`,33)(43,`button`,40),Ta(`click`,function(){let p=jh(e),v=bS();return Uh(v.execute(p.plan,p.plan_token))}),ba(44,`ui-icon`,10),WS(45),oC(46,`t`),yd(),da(47,`button`,35),Ta(`click`,function(){jh(e);let p=bS();return Uh(p.pending.set(null))}),WS(48),oC(49,`t`),yd()()()}if(n&2){let e=i,l=bS();hD(2),Jm(sC(3,17,`tasks.plan`)),hD(3),Jm(sC(6,19,`tasks.plan.review`)),hD(5),Jm(sC(11,21,`tasks.plan.task`)),hD(3),Jm(l.planField(e.plan,`label`)||l.planField(e.plan,`verb`)),hD(3),Jm(sC(17,23,`tasks.plan.verb`)),hD(4),Jm(l.planField(e.plan,`verb`)),hD(3),Jm(sC(24,25,`tasks.plan.intent`)),hD(3),Jm(l.planField(e.plan,`intent`)),hD(3),Jm(sC(30,27,`tasks.correlation`)),hD(2),Ar(`title`,l.realCorrelation(l.planCorrelation(e))),hD(2),Jm(l.planCorrelation(e)),hD(),mS(l.planArgs(e.plan)),hD(4),Jm(sC(39,29,`fdoc.raw`)),hD(3),Jm(l.planText(e.plan)),hD(2),Wm(`disabled`,l.busy()),hD(),Wm(`size`,14),hD(),Dd(` `,sC(46,31,`tasks.execute`),` `),hD(3),Jm(sC(49,33,`state.cancel`))}}function lt(n,i){if(n&1&&ba(0,`ui-state-badge`,43),n&2){let e=bS(),l=bS();Wm(`state`,l.stageKind(e.task.stage))(`labelOverride`,e.task.stage)}}function dt(n,i){if(n&1&&(da(0,`span`,21),WS(1),yd()),n&2){let e=bS();hD(),Dd(`exit `,e.task.exit_code)}}function ct(n,i){if(n&1&&(da(0,`span`),WS(1),yd()),n&2){let e=bS();hD(),Jm(e.detail)}}function st(n,i){if(n&1&&(da(0,`div`,37)(1,`dt`),WS(2),oC(3,`t`),yd(),da(4,`dd`),WS(5),yd()(),da(6,`div`,37)(7,`dt`),WS(8),oC(9,`t`),yd(),da(10,`dd`,49),WS(11),yd()()),n&2){let e=bS(),l=bS();hD(2),Jm(sC(3,4,`table.task`)),hD(3),Jm(e.task.label),hD(3),Jm(sC(9,6,`table.duration`)),hD(3),Jm(l.duration(e.task))}}function pt(n,i){if(n&1&&WS(0),n&2){let e=bS(2);Dd(` — `,e.unlock,` `)}}function _t(n,i){if(n&1&&(da(0,`p`,44)(1,`code`),WS(2),yd(),uS(3,pt,1,1),yd()),n&2){let e=bS();hD(2),Jm(e.refusal??e.task.refusal),hD(),fS(e.unlock?3:-1)}}function mt(n,i){if(n&1&&(da(0,`li`)(1,`code`),WS(2),yd(),da(3,`code`,50),WS(4),yd(),da(5,`span`),WS(6),yd()()),n&2){let e=i.$implicit;hD(2),Jm(e.status),hD(2),Jm(e.kind),hD(2),Jm(e.path)}}function ut(n,i){if(n&1&&(da(0,`ul`,45),gS(1,mt,7,3,`li`,null,hS),yd()),n&2){let e=bS();hD(),mS(e.actions)}}function gt(n,i){n&1&&ba(0,`ui-forge-doc`,46),n&2&&Wm(`doc`,i)}function xt(n,i){if(n&1){let e=wS();da(0,`section`,14)(1,`h2`),WS(2),oC(3,`t`),yd(),da(4,`p`,41),ba(5,`ui-state-badge`,42),uS(6,lt,1,2,`ui-state-badge`,43),uS(7,dt,2,1,`span`,21),uS(8,ct,2,1,`span`),yd(),da(9,`dl`,36)(10,`div`,37)(11,`dt`),WS(12),oC(13,`t`),yd(),da(14,`dd`,38)(15,`code`),WS(16),yd()()(),uS(17,st,12,8),yd(),uS(18,_t,4,2,`p`,44),uS(19,ut,3,0,`ul`,45),uS(20,gt,1,1,`ui-forge-doc`,46),da(21,`details`,39)(22,`summary`),WS(23),oC(24,`t`),yd(),da(25,`pre`),WS(26),yd()(),da(27,`div`,33)(28,`button`,47),Ta(`click`,function(){let p=jh(e),v=bS();return Uh(v.exportReceipt(p))}),ba(29,`ui-icon`,48),WS(30),oC(31,`t`),yd(),da(32,`button`,35),Ta(`click`,function(){jh(e);let p=bS();return Uh(p.receipt.set(null))}),WS(33),oC(34,`t`),yd()()()}if(n&2){let e,l=i,p=bS();hD(2),Jm(sC(3,17,`tasks.result`)),hD(3),Wm(`state`,l.status),hD(),fS(l.task?.stage?6:-1),hD(),fS(l.task?.exit_code!==null&&l.task?.exit_code!==void 0?7:-1),hD(),fS(l.detail?8:-1),hD(4),Jm(sC(13,19,`tasks.correlation`)),hD(2),Ar(`title`,p.realCorrelation(p.receiptCorrelation(l))),hD(2),Jm(p.receiptCorrelation(l)),hD(),fS(l.task?17:-1),hD(),fS(l.refusal||l.task?.refusal?18:-1),hD(),fS(l.actions?.length?19:-1),hD(),fS((e=p.receiptDoc(l))?20:-1,e),hD(3),Jm(sC(24,21,`fdoc.raw`)),hD(3),Jm(p.receiptText(l)),hD(3),Wm(`size`,14),hD(),Dd(` `,sC(31,23,`tasks.export`),` `),hD(3),Jm(sC(34,25,`state.close`))}}function ft(n,i){if(n&1){let e=wS();da(0,`ui-error`,51),Ta(`retry`,function(){jh(e);let p=bS();return Uh(p.load())}),yd()}n&2&&Wm(`error`,i)}function vt(n,i){n&1&&ba(0,`ui-state-badge`,53)}function yt(n,i){if(n&1){let e=wS();da(0,`div`,57)(1,`button`,59),Ta(`click`,function(){let p=jh(e).$implicit,v=bS(4);return Uh(v.selectTask(p.task))}),da(2,`span`,60),WS(3),yd(),da(4,`span`,61),ba(5,`span`,62),yd(),da(6,`span`,63),WS(7),yd()()()}if(n&2){let e=i.$implicit,l=bS(4);hD(),Ar(`data-selected`,l.selectedId()===e.task.id||null),hD(),Ar(`title`,e.task.label||e.task.verb),hD(),Jm(e.task.label||e.task.verb),hD(2),_a(`left`,`clamp(0px, `+e.leftPct+`%, calc(100% - 3px))`)(`width`,e.widthPct,`%`),Wm(`title`,l.tipFor(e)),Ar(`data-kind`,l.stageKind(e.task.stage))(`data-open`,e.endMs===null||null),hD(2),Jm(l.duration(e.task))}}function Ct(n,i){if(n&1&&(da(0,`p`,58),WS(1),oC(2,`t`),yd()),n&2){let e=bS(2);hD(),Dd(` `,aC(2,1,`tasks.timeline.unplaced`,nC(4,Ge,e.unplaced.length)),` `)}}function bt(n,i){if(n&1&&(da(0,`div`,55),oC(1,`t`),da(2,`div`,56)(3,`span`),WS(4),yd(),da(5,`span`),WS(6),yd()(),gS(7,yt,8,11,`div`,57,tt),yd(),uS(9,Ct,3,6,`p`,58)),n&2){let e=bS(),l=bS(2);Ar(`aria-label`,sC(1,4,`tasks.timeline.title`)),hD(4),Jm(l.fmtAt(e.windowStart)),hD(2),Jm(l.fmtAt(e.windowEnd)),hD(),mS(e.rows),hD(2),fS(e.unplaced.length?9:-1)}}function kt(n,i){n&1&&(ba(0,`ui-empty`,54),oC(1,`t`)),n&2&&Wm(`title`,sC(1,1,`tasks.timeline.empty`))}function St(n,i){n&1&&uS(0,bt,10,6)(1,kt,2,3,`ui-empty`,54),n&2&&fS(i.rows.length?0:1)}function ht(n,i){if(n&1&&(da(0,`section`,27)(1,`h2`,52),WS(2),oC(3,`t`),uS(4,vt,1,0,`ui-state-badge`,53),yd(),da(5,`p`,21),WS(6),oC(7,`t`),yd(),uS(8,St,2,1),yd()),n&2){let e,l=bS();hD(2),Dd(` `,sC(3,4,`tasks.timeline.title`),` `),hD(2),fS(l.timeline().partial?4:-1),hD(2),Jm(sC(7,6,`tasks.timeline.hint`)),hD(2),fS((e=l.timeline())?8:-1,e)}}function Et(n,i){n&1&&ba(0,`ui-skeleton`,29)}function It(n,i){if(n&1&&(da(0,`tr`)(1,`td`)(2,`a`,66),WS(3),yd()(),da(4,`td`)(5,`code`),WS(6),yd()(),da(7,`td`),ba(8,`ui-state-badge`,43),yd(),da(9,`td`,38)(10,`code`),WS(11),yd()(),da(12,`td`,49),WS(13),yd(),da(14,`td`),WS(15),yd()()),n&2){let e=i.$implicit,l=bS(2);Ar(`data-selected`,l.selectedId()===e.id||null),hD(2),Wm(`routerLink`,tC(11,Qe))(`queryParams`,nC(12,We,e.id)),hD(),Dd(` `,e.label,` `),hD(3),Jm(e.verb),hD(2),Wm(`state`,l.stageKind(e.stage))(`labelOverride`,e.stage),hD(),Ar(`title`,e.correlation_id??null),hD(2),Jm(e.correlation_id??`—`),hD(2),Jm(l.duration(e)),hD(2),Jm(e.exit_code??`—`)}}function Pt(n,i){if(n&1&&(da(0,`table`,30)(1,`thead`)(2,`tr`)(3,`th`,64)(4,`span`,65),WS(5),oC(6,`t`),yd()(),da(7,`th`,64),WS(8),oC(9,`t`),yd(),da(10,`th`,64),WS(11),oC(12,`t`),yd(),da(13,`th`,64),WS(14),oC(15,`t`),yd(),da(16,`th`,64),WS(17),oC(18,`t`),yd(),da(19,`th`,64),WS(20),oC(21,`t`),yd()()(),da(22,`tbody`),gS(23,It,16,14,`tr`,null,nt),yd()()),n&2){let e=bS();hD(5),Jm(sC(6,6,`table.task`)),hD(3),Jm(sC(9,8,`table.verb`)),hD(3),Jm(sC(12,10,`table.stage`)),hD(3),Jm(sC(15,12,`table.correlation`)),hD(3),Jm(sC(18,14,`table.duration`)),hD(3),Jm(sC(21,16,`table.exit`)),hD(3),mS(e.tasks())}}function Tt(n,i){n&1&&(ba(0,`ui-empty`,54),oC(1,`t`)),n&2&&Wm(`title`,sC(1,1,`tasks.empty`))}function Nt(n,i){if(n&1&&uS(0,Tt,2,3,`ui-empty`,54),n&2){let e=bS();fS(e.loading()?-1:0)}}function wt(n,i){n&1&&(da(0,`a`,70),WS(1),oC(2,`t`),yd()),n&2&&(Wm(`routerLink`,tC(5,Xe))(`queryParams`,nC(6,Ye,i)),hD(),Dd(` `,sC(2,3,`tasks.events`),` `))}function Mt(n,i){if(n&1&&(da(0,`div`,37)(1,`dt`),WS(2),oC(3,`t`),yd(),da(4,`dd`)(5,`code`),WS(6),yd()()()),n&2){let e=bS();hD(2),Jm(sC(3,2,`tasks.refusal`)),hD(4),Jm(e.refusal)}}function Ot(n,i){n&1&&ba(0,`ui-state-badge`,53)}function Ft(n,i){if(n&1&&(da(0,`span`,49),WS(1),yd()),n&2){let e=bS().$implicit;hD(),Dd(``,e.duration_ms,` ms`)}}function Bt(n,i){if(n&1&&(da(0,`span`,85),WS(1),yd()),n&2){let e=bS().$implicit;hD(),Jm(e.detail)}}function Dt(n,i){if(n&1){let e=wS();da(0,`li`)(1,`button`,81),Ta(`click`,function(){let p=jh(e).$index,v=bS(4);return Uh(v.replayIdx.set(p))}),da(2,`code`,82),WS(3),yd(),da(4,`span`,83),WS(5),yd(),ba(6,`ui-state-badge`,43),uS(7,Ft,2,1,`span`,49),da(8,`span`,84),WS(9),yd(),uS(10,Bt,2,1,`span`,85),yd()()}if(n&2){let e=i.$implicit,l=i.$index,p=bS(4);Ar(`data-current`,l===p.replayIdx()||null)(`data-kind-tone`,p.statusKind(e.status)),hD(),Ar(`data-current`,l===p.replayIdx()||null),hD(2),Jm(e.kind),hD(2),Jm(p.fmtEventAt(e.at)),hD(),Wm(`state`,p.statusKind(e.status))(`labelOverride`,e.status),hD(),fS(e.duration_ms!==null?7:-1),hD(2),Jm(e.origin),hD(),fS(e.detail?10:-1)}}function Ut(n,i){if(n&1){let e=wS();da(0,`div`,77)(1,`button`,78),Ta(`click`,function(){jh(e);let p=bS(3);return Uh(p.replayIdx.set(p.replayIdx()-1))}),WS(2),oC(3,`t`),yd(),da(4,`span`,21),WS(5),oC(6,`t`),yd(),da(7,`button`,79),Ta(`click`,function(){jh(e);let p=bS(3);return Uh(p.replayIdx.set(p.replayIdx()+1))}),WS(8),oC(9,`t`),yd()(),da(10,`ol`,80),gS(11,Dt,11,10,`li`,null,hS),yd()}if(n&2){let e=bS(),l=bS(2);hD(),Wm(`disabled`,l.replayIdx()<=0),hD(),Dd(` `,sC(3,5,`tasks.replay.prev`),` `),hD(3),Dd(` `,aC(6,7,`tasks.replay.step`,rC(12,Ze,l.replayIdx()+1,e.steps.length)),` `),hD(2),Wm(`disabled`,l.replayIdx()>=e.steps.length-1),hD(),Dd(` `,sC(9,10,`tasks.replay.next`),` `),hD(3),mS(e.steps)}}function Vt(n,i){n&1&&(da(0,`p`,74),WS(1),oC(2,`t`),yd()),n&2&&(hD(),Jm(sC(2,1,`tasks.replay.empty`)))}function zt(n,i){n&1&&(da(0,`p`,75),WS(1),oC(2,`t`),yd()),n&2&&(hD(),Dd(` `,sC(2,1,`tasks.replay.noCorrelation`),` `))}function $t(n,i){n&1&&(da(0,`p`,76),ba(1,`ui-state-badge`,86),da(2,`span`,21),WS(3),oC(4,`t`),yd()()),n&2&&(hD(3),Jm(sC(4,1,`tasks.replay.unavailable`)))}function At(n,i){if(n&1&&(da(0,`div`,71)(1,`h3`,72),ba(2,`ui-icon`,73),WS(3),oC(4,`t`),uS(5,Ot,1,0,`ui-state-badge`,53),yd(),da(6,`p`,21),WS(7),oC(8,`t`),yd(),uS(9,Ut,13,15)(10,Vt,3,3,`p`,74)(11,zt,3,3,`p`,75)(12,$t,5,3,`p`,76),yd()),n&2){let e,l=i;hD(2),Wm(`size`,14),hD(),Dd(` `,sC(4,5,`tasks.replay.title`),` `),hD(2),fS(l.truncated?5:-1),hD(2),Jm(sC(8,7,`tasks.replay.hint`)),hD(2),fS((e=l.state)===`ready`?9:e===`empty`?10:e===`no-correlation`?11:e===`unavailable`?12:-1)}}function Rt(n,i){if(n&1){let e=wS();da(0,`section`,31)(1,`header`,67)(2,`h2`),ba(3,`ui-icon`,10),WS(4),yd(),da(5,`button`,68),oC(6,`t`),Ta(`click`,function(){jh(e);let p=bS();return Uh(p.selectedId.set(null))}),ba(7,`ui-icon`,69),yd()(),da(8,`dl`,36)(9,`div`,37)(10,`dt`),WS(11),oC(12,`t`),yd(),da(13,`dd`)(14,`code`),WS(15),yd()()(),da(16,`div`,37)(17,`dt`),WS(18),oC(19,`t`),yd(),da(20,`dd`)(21,`code`),WS(22),yd()()(),da(23,`div`,37)(24,`dt`),WS(25),oC(26,`t`),yd(),da(27,`dd`),ba(28,`ui-state-badge`,43),yd()(),da(29,`div`,37)(30,`dt`),WS(31),oC(32,`t`),yd(),da(33,`dd`),WS(34),yd()(),da(35,`div`,37)(36,`dt`),WS(37),oC(38,`t`),yd(),da(39,`dd`),WS(40),yd()(),da(41,`div`,37)(42,`dt`),WS(43),oC(44,`t`),yd(),da(45,`dd`,49),WS(46),yd()(),da(47,`div`,37)(48,`dt`),WS(49),oC(50,`t`),yd(),da(51,`dd`),WS(52),yd()(),da(53,`div`,37)(54,`dt`),WS(55),oC(56,`t`),yd(),da(57,`dd`,38)(58,`code`),WS(59),yd(),uS(60,wt,3,8,`a`,70),yd()(),uS(61,Mt,7,4,`div`,37),yd(),uS(62,At,13,9,`div`,71),yd()}if(n&2){let e,l,p=i,v=bS();hD(3),Wm(`size`,15),hD(),Jm(p.label||p.verb),hD(),Ar(`aria-label`,sC(6,25,`state.close`)),hD(2),Wm(`size`,14),hD(4),Jm(sC(12,27,`table.id`)),hD(4),Jm(p.id),hD(3),Jm(sC(19,29,`table.verb`)),hD(4),Jm(p.verb),hD(3),Jm(sC(26,31,`table.stage`)),hD(3),Wm(`state`,v.stageKind(p.stage))(`labelOverride`,p.stage),hD(3),Jm(sC(32,33,`table.started`)),hD(3),Jm(p.started_at?v.fmtEventAt(p.started_at):`—`),hD(3),Jm(sC(38,35,`table.finished`)),hD(3),Jm(p.finished_at?v.fmtEventAt(p.finished_at):`—`),hD(3),Jm(sC(44,37,`table.duration`)),hD(3),Jm(v.duration(p)),hD(3),Jm(sC(50,39,`table.exit`)),hD(3),Jm(p.exit_code??`—`),hD(3),Jm(sC(56,41,`tasks.correlation`)),hD(2),Ar(`title`,p.correlation_id??null),hD(2),Jm(p.correlation_id??`—`),hD(),fS((e=p.correlation_id)?60:-1,e),hD(),fS(p.refusal?61:-1),hD(),fS((l=v.replay())?62:-1,l)}}var ge=class n$1{api=p(g);task=rn(``);intent=k(``);pending=k(null);receipt=k(null);tasks=k([]);error=k(null);stale=k(null);busy=k(!1);executing=k(!1);loading=k(!0);metricsSrc=new l;selectedId=k(null);replayIdx=k(0);deepApplied=k(null);timeline=tn(()=>M(this.tasks()));selectedTask=tn(()=>this.tasks().find(i=>i.id===this.selectedId())??null);replay=tn(()=>x(this.metricsSrc.data(),this.selectedTask()));constructor(){Oo(()=>{let i=this.task();!i||i===this.deepApplied()||this.loading()||(this.deepApplied.set(i),this.tasks().some(e=>e.id===i)&&(this.selectedId.set(i),this.replayIdx.set(0)))}),this.load()}async load(){let i=this.metricsSrc.load(()=>this.api.metrics());try{this.tasks.set(await hE(this.api.tasks()))}catch(e){this.error.set(e instanceof n?e:new n(0))}finally{this.loading.set(!1)}await i}selectTask(i){this.selectedId.set(i.id),this.replayIdx.set(0)}fmtAt(i){return i===null?`—`:new Date(i).toLocaleString()}fmtEventAt(i){let e=Date.parse(i);return Number.isNaN(e)?i:new Date(e).toLocaleString()}tipFor(i){return`${this.fmtAt(i.startMs)} \u2192 ${i.endMs===null?`—`:this.fmtAt(i.endMs)}`}statusKind(i){let e=(i||``).toLowerCase();return[`ok`,`done`,`completed`,`success`,`succeeded`,`pass`,`passed`].includes(e)?`supported`:[`failed`,`fail`,`error`,`refused`,`denied`].includes(e)?`error`:[`skipped`,`cancelled`,`canceled`,`partial`,`degraded`].includes(e)?`warn`:[`running`,`pending`,`started`,`in_progress`,`planning`,`verifying`].includes(e)?`info`:`muted`}async plan(){if(!(this.busy()||!this.intent().trim())){this.busy.set(!0),this.error.set(null),this.stale.set(null),this.receipt.set(null);try{let i=await hE(this.api.tasksPlan({intent:this.intent()})),e=i.correlation_id;this.pending.set({plan_token:i.plan_token,plan:i.plan,correlation_id:typeof e==`string`&&e?e:null})}catch(i){this.error.set(i instanceof n?i:new n(0))}finally{this.busy.set(!1)}}}async execute(i,e){if(!this.busy()){this.busy.set(!0),this.executing.set(!0),this.error.set(null);try{this.receipt.set(await hE(this.api.tasksExecute(i,e))),this.pending.set(null),await this.load()}catch(l){let p=l instanceof n?l:new n(0);p.body.code===`PORTAL-PLAN-STALE`?(this.pending.set(null),this.stale.set(p)):this.error.set(p)}finally{this.busy.set(!1),this.executing.set(!1)}}}async regenerate(){this.busy()||!this.stale()||(this.stale.set(null),await this.plan())}exportReceipt(i){let e=new Blob([JSON.stringify(i,null,2)],{type:`application/json`}),l=URL.createObjectURL(e),p=document.createElement(`a`);p.href=l,p.download=i.task?.id?`receipt-${i.task.id}.json`:`receipt.json`,p.click(),URL.revokeObjectURL(l)}planText(i){return JSON.stringify(i,null,2)}receiptText(i){return JSON.stringify(i,null,2)}planCorrelation(i){if(i.correlation_id)return i.correlation_id;let e=i.plan.correlation_id;return typeof e==`string`&&e?e:`—`}receiptCorrelation(i){let e=i.task?.correlation_id;if(e)return e;let l=i.correlation_id;return typeof l==`string`&&l?l:`—`}realCorrelation(i){return i===`—`?null:i}duration(i){return f(i)}planField(i,e){let l=i[e];return l==null?``:String(l)}planArgs(i){let e=i.args;return!e||typeof e!=`object`?[]:Object.entries(e).map(([l,p])=>[l,typeof p==`object`?JSON.stringify(p):String(p)])}receiptDoc(i){let e=i.task?.receipt;return e&&typeof e==`object`?e:null}stageKind(i){let e=(i||``).toLowerCase();return e===`completed`?`supported`:[`failed`,`refused`,`cancelled`].includes(e)?`error`:[`awaiting_approval`,`partial`].includes(e)?`warn`:[`running`,`planning`,`verifying`].includes(e)?`info`:`muted`}static ɵfac=function(e){return new(e||n$1)};static ɵcmp=ei({type:n$1,selectors:[[`page-tasks`]],inputs:{task:[1,`task`]},decls:69,vars:61,consts:[[`hintId`,`diagnose`,3,`title`,`subtitle`],[1,`btn`,3,`click`,`disabled`],[`name`,`refresh`,3,`size`],[`data-section`,`intent`,1,`card`],[`for`,`intent`,1,`lbl`],[1,`intent-row`],[1,`search-field`,`intent-field`],[`name`,`terminal`,3,`size`],[`id`,`intent`,`type`,`text`,1,`input`,3,`ngModelChange`,`keydown.enter`,`placeholder`,`ngModel`,`disabled`],[`data-action`,`plan`,1,`btn`,`btn--primary`,3,`click`,`disabled`],[`name`,`tasks`,3,`size`],[`role`,`status`,`aria-live`,`polite`,`data-section`,`running`,1,`card`,`running`],[`role`,`alert`,`data-section`,`stale`,1,`card`,`stale`],[`data-lift`,``,`data-section`,`plan`,1,`card`],[`data-lift`,``,`data-section`,`receipt`,`aria-live`,`polite`,1,`card`],[3,`error`],[`aria-labelledby`,`ops-h`,`data-section`,`ops`,1,`card`,`ops`],[`id`,`ops-h`],[1,`ops__list`],[`data-op`,`plan`,1,`op`],[1,`op__body`],[1,`muted`],[`state`,`supported`],[`data-op`,`execute`,1,`op`],[`data-op`,`cancel`,`data-state`,`unverified`,1,`op`],[`state`,`unverified`],[1,`muted`,`limits`],[`data-section`,`timeline`,`aria-labelledby`,`tl-h`,1,`card`],[`data-section`,`history`,1,`card`],[`kind`,`card`],[1,`table`],[`data-section`,`task-detail`,`aria-live`,`polite`,1,`card`,`detail`,`fg-enter`],[`aria-hidden`,`true`,1,`running__spinner`],[1,`row`],[`data-action`,`regenerate`,1,`btn`,`btn--primary`,3,`click`,`disabled`],[1,`btn`,3,`click`],[1,`plan-card`],[1,`kv`],[1,`corr`],[1,`raw`],[`data-action`,`execute`,1,`btn`,`btn--primary`,3,`click`,`disabled`],[1,`receipt__status`],[3,`state`],[3,`state`,`labelOverride`],[`role`,`alert`,1,`refusal`],[1,`actions`],[3,`doc`],[`data-action`,`export`,1,`btn`,3,`click`],[`name`,`install`,3,`size`],[1,`num`],[1,`actions__kind`],[3,`retry`,`error`],[`id`,`tl-h`],[`state`,`PARTIAL`],[`icon`,`tasks`,3,`title`],[`role`,`list`,1,`tl`],[`aria-hidden`,`true`,1,`tl__axis`],[`role`,`listitem`,1,`tl__item`],[`data-note`,`unplaced`,1,`muted`,`tl__unplaced`],[`type`,`button`,1,`tl__row`,3,`click`],[1,`tl__label`],[1,`tl__track`],[1,`tl__bar`,3,`title`],[1,`tl__dur`,`num`],[`scope`,`col`],[1,`sr-only`],[`data-action`,`inspect`,1,`linklike`,3,`routerLink`,`queryParams`],[1,`detail__head`],[1,`icon-btn`,3,`click`],[`name`,`chevron-right`,3,`size`],[`data-action`,`correlated`,1,`linklike`,`corr__events`,3,`routerLink`,`queryParams`],[`data-section`,`replay`,1,`replay`],[1,`replay__title`],[`name`,`history`,3,`size`],[`data-state`,`empty`,1,`muted`],[`data-state`,`no-correlation`,1,`muted`],[`data-state`,`unavailable`,1,`unv-cell`],[1,`replay__controls`],[`data-action`,`prev`,1,`btn`,`btn--mini`,3,`click`,`disabled`],[`data-action`,`next`,1,`btn`,`btn--mini`,3,`click`,`disabled`],[1,`replay__steps`],[`type`,`button`,1,`replay__step`,3,`click`],[1,`replay__kind`],[1,`replay__at`],[1,`replay__origin`],[1,`replay__detail`],[`state`,`UNVERIFIED`]],template:function(e,l){if(e&1&&(da(0,`ui-page-header`,0),oC(1,`t`),oC(2,`t`),da(3,`button`,1),Ta(`click`,function(){return l.load()}),ba(4,`ui-icon`,2),WS(5),oC(6,`t`),yd()(),da(7,`section`,3)(8,`label`,4),WS(9),oC(10,`t`),yd(),da(11,`div`,5)(12,`div`,6),ba(13,`ui-icon`,7),da(14,`input`,8),oC(15,`t`),eb(),Ta(`ngModelChange`,function(v){return l.intent.set(v)})(`keydown.enter`,function(){return l.plan()}),yd()(),da(16,`button`,9),Ta(`click`,function(){return l.plan()}),ba(17,`ui-icon`,10),WS(18),oC(19,`t`),yd()()(),uS(20,it,5,3,`section`,11),uS(21,at,19,16,`section`,12),uS(22,rt,50,35,`section`,13),uS(23,xt,35,27,`section`,14),uS(24,ft,1,1,`ui-error`,15),da(25,`section`,16)(26,`h2`,17),WS(27),oC(28,`t`),yd(),da(29,`ul`,18)(30,`li`,19)(31,`span`,20)(32,`strong`),WS(33),oC(34,`t`),yd(),da(35,`small`,21),WS(36),oC(37,`t`),yd()(),ba(38,`ui-state-badge`,22),yd(),da(39,`li`,23)(40,`span`,20)(41,`strong`),WS(42),oC(43,`t`),yd(),da(44,`small`,21),WS(45),oC(46,`t`),yd()(),ba(47,`ui-state-badge`,22),yd(),da(48,`li`,24)(49,`span`,20)(50,`strong`),WS(51),oC(52,`t`),yd(),da(53,`small`,21),WS(54),oC(55,`t`),yd()(),ba(56,`ui-state-badge`,25),yd()(),da(57,`p`,26),WS(58),oC(59,`t`),yd()(),uS(60,ht,9,8,`section`,27),da(61,`section`,28)(62,`h2`),WS(63),oC(64,`t`),yd(),uS(65,Et,1,0,`ui-skeleton`,29),uS(66,Pt,25,18,`table`,30)(67,Nt,1,1),yd(),uS(68,Rt,63,43,`section`,31)),e&2){let p,v,y,w,K;Wm(`title`,sC(1,31,`tasks.title`))(`subtitle`,sC(2,33,`tasks.subtitle`)),hD(3),Wm(`disabled`,l.busy()),hD(),Wm(`size`,15),hD(),Dd(` `,sC(6,35,`state.refresh`),` `),hD(4),Jm(sC(10,37,`tasks.intent.label`)),hD(4),Wm(`size`,15),hD(),Wm(`placeholder`,sC(15,39,`tasks.intent.placeholder`))(`ngModel`,l.intent())(`disabled`,l.busy()),nb(),hD(2),Wm(`disabled`,l.busy()||!l.intent().trim()),hD(),Wm(`size`,14),hD(),Dd(` `,sC(19,41,`tasks.intent.run`),` `),hD(2),fS(l.executing()?20:-1),hD(),fS((p=l.stale())?21:-1,p),hD(),fS((v=l.pending())?22:-1,v),hD(),fS((y=l.receipt())?23:-1,y),hD(),fS((w=l.error())?24:-1,w),hD(3),Jm(sC(28,43,`tasks.ops.title`)),hD(6),Jm(sC(34,45,`tasks.intent.run`)),hD(3),Jm(sC(37,47,`tasks.ops.plan.hint`)),hD(6),Jm(sC(43,49,`tasks.execute`)),hD(3),Jm(sC(46,51,`tasks.ops.execute.hint`)),hD(6),Jm(sC(52,53,`state.cancel`)),hD(3),Jm(sC(55,55,`tasks.ops.cancel.hint`)),hD(4),Jm(sC(59,57,`tasks.limits`)),hD(2),fS(l.tasks().length?60:-1),hD(3),Jm(sC(64,59,`tasks.recent`)),hD(2),fS(l.loading()?65:-1),hD(),fS(l.tasks().length?66:67),hD(2),fS((K=l.selectedTask())?68:-1,K)}},dependencies:[Zt,De$1,Yt,At$1,yc,T,I,_,D,cE,R,k$1,aE],styles:[`.card[_ngcontent-%COMP%]{margin-bottom:var(--%NS%space-4)}h2[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-3);font-size:var(--%NS%font-lg);font-weight:650;letter-spacing:-.01em}.kv[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);text-transform:uppercase;letter-spacing:.04em}.kv[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;font-weight:550;word-break:break-all}.corr[_ngcontent-%COMP%]{max-width:170px}.corr[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.corr__events[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs)}.limits[_ngcontent-%COMP%]{margin:var(--%NS%space-3) 0 0;font-size:var(--%NS%font-xs)}.receipt__status[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--%NS%space-3)}.actions[_ngcontent-%COMP%]{font-family:var(--%NS%font-mono);font-size:var(--%NS%font-sm);margin:0 0 var(--%NS%space-3);max-height:200px;overflow:auto}.actions[_ngcontent-%COMP%] li[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{color:var(--%NS%accent-ink);flex:none}.actions__kind[_ngcontent-%COMP%]{color:var(--%NS%fg-muted)!important}.row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-2);margin-top:var(--%NS%space-3)}.tl[_ngcontent-%COMP%]{display:grid;gap:4px;margin-top:var(--%NS%space-3)}.tl__axis[_ngcontent-%COMP%]{display:flex;justify-content:space-between;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted);margin-left:12rem;font-variant-numeric:tabular-nums}.tl__row[_ngcontent-%COMP%]{display:grid;grid-template-columns:12rem 1fr 5.5rem;align-items:center;gap:var(--%NS%space-2);border:1px solid transparent;border-radius:var(--%NS%radius-md);background:none;font:inherit;color:inherit;text-align:left;padding:3px var(--%NS%space-2);cursor:pointer;width:100%;transition:background var(--%NS%motion-fast),border-color var(--%NS%motion-fast)}.tl__row[_ngcontent-%COMP%]:hover{background:var(--%NS%bg-hover)}.tl__row[data-selected][_ngcontent-%COMP%]{border-color:var(--%NS%accent-ink);background:var(--%NS%accent-bg)}.tl__label[_ngcontent-%COMP%]{font-size:var(--%NS%font-sm);font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl__track[_ngcontent-%COMP%]{position:relative;height:14px;border-radius:var(--%NS%radius-pill);background:var(--%NS%bg);border:1px solid var(--%NS%border);overflow:hidden}.tl__bar[_ngcontent-%COMP%]{position:absolute;top:0;bottom:0;min-width:3px;border-radius:var(--%NS%radius-pill);background:var(--%NS%bar-fg, var(--%NS%fg-muted))}.tl__bar[data-open][_ngcontent-%COMP%]{background:repeating-linear-gradient(-45deg,var(--%NS%bar-fg, var(--%NS%fg-muted)) 0 3px,transparent 3px 6px);border-right:2px dashed var(--%NS%bar-fg, var(--%NS%fg-muted))}.tl__bar[data-kind=supported][_ngcontent-%COMP%]{--%NS%bar-fg: var(--%NS%ok)}.tl__bar[data-kind=error][_ngcontent-%COMP%]{--%NS%bar-fg: var(--%NS%error)}.tl__bar[data-kind=warn][_ngcontent-%COMP%]{--%NS%bar-fg: var(--%NS%warn)}.tl__bar[data-kind=info][_ngcontent-%COMP%]{--%NS%bar-fg: var(--%NS%info)}.tl__dur[_ngcontent-%COMP%]{text-align:right}.tl__dur[_ngcontent-%COMP%], .tl__unplaced[_ngcontent-%COMP%], .replay__at[_ngcontent-%COMP%], .replay__origin[_ngcontent-%COMP%]{font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}.tl__unplaced[_ngcontent-%COMP%]{margin:var(--%NS%space-2) 0 0}.detail[_ngcontent-%COMP%]{border-left:3px solid var(--%NS%accent)}.detail__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:var(--%NS%space-2);margin-bottom:var(--%NS%space-3)}.replay[_ngcontent-%COMP%]{margin-top:var(--%NS%space-3);border-top:1px solid var(--%NS%border);padding-top:var(--%NS%space-3)}.replay__title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:0 0 var(--%NS%space-1);font-size:var(--%NS%font-md)}.replay__title[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.replay__controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);margin:var(--%NS%space-2) 0}.replay__steps[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;gap:4px}.replay__step[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--%NS%space-2);width:100%;border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-md);background:none;font:inherit;color:inherit;text-align:left;padding:var(--%NS%space-2) var(--%NS%space-3);cursor:pointer;transition:border-color var(--%NS%motion-fast),box-shadow var(--%NS%motion-fast),background var(--%NS%motion-fast)}.replay__step[_ngcontent-%COMP%]:hover, .replay__step[data-current][_ngcontent-%COMP%]{border-color:var(--%NS%accent-ink)}.replay__step[data-current][_ngcontent-%COMP%]{box-shadow:0 0 0 1px var(--%NS%accent);background:var(--%NS%accent-bg)}.replay__kind[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.replay__at[_ngcontent-%COMP%]{font-variant-numeric:tabular-nums}.replay__detail[_ngcontent-%COMP%]{flex-basis:100%;font-size:var(--%NS%font-sm);color:var(--%NS%fg-muted);overflow-wrap:anywhere}#tl-h[_ngcontent-%COMP%], .detail__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-2);flex-wrap:wrap}@media(max-width:720px){.tl__axis[_ngcontent-%COMP%]{margin-left:0}.tl__row[_ngcontent-%COMP%]{grid-template-columns:1fr;gap:2px}.tl__dur[_ngcontent-%COMP%]{text-align:left}}`]})};export{ge as TasksPage}; \ No newline at end of file diff --git a/portal/assets/chunk-DQvfYR07.js b/portal/assets/chunk-xLo56Uun.js similarity index 60% rename from portal/assets/chunk-DQvfYR07.js rename to portal/assets/chunk-xLo56Uun.js index 7eeffb2..dea114a 100644 --- a/portal/assets/chunk-DQvfYR07.js +++ b/portal/assets/chunk-xLo56Uun.js @@ -1 +1 @@ -import{$ as da,Et as p,F as Wm,Gt as wS,M as Ta,Mt as sC,N as Uh,P as WS,Q as cE,Tt as oC,X as bS,Xt as yd,Yt as yc,Z as ba,ct as gS,h as Jm,ht as jh,it as ei,o as Ar,ot as fS,q as aE,ut as hD,yt as mS,zt as uS}from"./chunk-BelLryvf.js";import{r as g}from"./main-A2NKRJGT.js";import{i as k,t as T}from"./chunk-0WpwvubF.js";import{n as k$1,t as I}from"./chunk-D2KAfPv6.js";var D=(n,i)=>i.id;function L(n,i){n&1&&ba(0,`ui-skeleton`,10)}function V(n,i){if(n&1&&(da(0,`strong`,11),WS(1),yd()),n&2){let e=bS().$implicit;hD(),Jm(e.src.data())}}function $(n,i){n&1&&ba(0,`ui-state-badge`,12)}function j(n,i){if(n&1){let e=wS();da(0,`article`,6)(1,`header`),ba(2,`ui-icon`,7),da(3,`a`,8),WS(4),oC(5,`t`),yd(),da(6,`button`,9),oC(7,`t`),Ta(`click`,function(){let f=jh(e).$implicit,B=bS();return Uh(B.reload(f))}),ba(8,`ui-icon`,4),yd()(),uS(9,L,1,0,`ui-skeleton`,10)(10,V,2,1,`strong`,11)(11,$,1,0,`ui-state-badge`,12),da(12,`p`,13)(13,`code`),WS(14),yd()()()}if(n&2){let e=i.$implicit;Ar(`data-count-id`,e.id),hD(2),Wm(`name`,e.icon)(`size`,15),hD(),Wm(`routerLink`,e.route),hD(),Jm(sC(5,9,e.labelKey)),hD(2),Ar(`aria-label`,sC(7,11,`state.refresh`)),hD(2),Wm(`size`,13),hD(),fS(e.src.loading()&&e.src.data()===null?9:e.src.data()!==null?10:11),hD(5),Jm(e.endpoint)}}var F=class n{api=p(g);tiles=k();constructor(){this.loadCounts()}async loadCounts(){await Promise.allSettled(this.tiles.map(i=>this.reload(i)))}async reload(i){await i.src.load(()=>T(this.api,i.id))}static ɵfac=function(e){return new(e||n)};static ɵcmp=ei({type:n,selectors:[[`inventory-panel`]],decls:15,vars:10,consts:[[`data-section`,`inventory`,1,`inv`],[1,`inv__head`],[1,`inv__hint`],[1,`icon-btn`,3,`click`],[`name`,`refresh`,3,`size`],[1,`inv__tiles`],[1,`tile`],[3,`name`,`size`],[1,`tile__label`,`tile__link`,3,`routerLink`],[1,`tile__reload`,3,`click`],[`kind`,`text`],[`data-count`,``,1,`tile__n`],[`state`,`UNVERIFIED`],[1,`tile__src`]],template:function(e,_){e&1&&(da(0,`section`,0)(1,`div`,1)(2,`div`)(3,`h2`),WS(4),oC(5,`t`),yd(),da(6,`p`,2),WS(7),oC(8,`t`),yd()(),da(9,`button`,3),oC(10,`t`),Ta(`click`,function(){return _.loadCounts()}),ba(11,`ui-icon`,4),yd()(),da(12,`div`,5),gS(13,j,15,13,`article`,6,D),yd()()),e&2&&(hD(4),Jm(sC(5,4,`dashboard.inventory`)),hD(3),Jm(sC(8,6,`dashboard.inventory.hint`)),hD(2),Ar(`aria-label`,sC(10,8,`state.refresh`)),hD(2),Wm(`size`,14),hD(2),mS(_.tiles))},dependencies:[yc,I,cE,k$1,aE],styles:[`.inv__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.inv__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650}.inv__hint[_ngcontent-%COMP%]{margin:2px 0 0;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm)}.inv__tiles[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--%NS%space-3)}.tile[_ngcontent-%COMP%]{display:grid;gap:6px;padding:var(--%NS%space-3) var(--%NS%space-4);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-lg);background:var(--%NS%bg-elevated);box-shadow:var(--%NS%elev-card)}.tile[_ngcontent-%COMP%] header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;color:var(--%NS%fg-muted)}.tile__label[_ngcontent-%COMP%]{flex:1;font-size:var(--%NS%font-xs);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.tile__link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;min-height:24px;color:inherit;text-decoration:none;transition:color var(--%NS%motion-fast)}.tile__link[_ngcontent-%COMP%]:hover{color:var(--%NS%accent-ink);text-decoration:underline}.tile__reload[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:var(--%NS%radius-sm);background:transparent;color:var(--%NS%fg-muted);cursor:pointer;transition:color var(--%NS%motion-fast),background var(--%NS%motion-fast)}.tile__reload[_ngcontent-%COMP%]:hover{color:var(--%NS%fg);background:var(--%NS%bg-hover)}.tile__n[_ngcontent-%COMP%]{font-size:1.375rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}.tile__src[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}`]})};export{F as t}; \ No newline at end of file +import{$ as dS,At as qm,Et as p,F as Sa,J as aC,Jt as vd,P as SS,Q as cE,Qt as yS,S as Ma,Y as aE,at as ey,ct as hD,et as da,i as Ar,it as ei,kt as qS,p as Hh,qt as vc,s as DS,ut as hS,vt as lC,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";import{r as g}from"./main-XW2ZMSO5.js";import{i as k,t as T}from"./chunk-BNDlNg-C.js";import{n as k$1,t as I}from"./chunk-DQtX_-dj.js";var D=(n,i)=>i.id;function L(n,i){n&1&&Sa(0,`ui-skeleton`,10)}function V(n,i){if(n&1&&(da(0,`strong`,11),qS(1),vd()),n&2){let e=SS().$implicit;hD(),ey(e.src.data())}}function $(n,i){n&1&&Sa(0,`ui-state-badge`,12)}function j(n,i){if(n&1){let e=DS();da(0,`article`,6)(1,`header`),Sa(2,`ui-icon`,7),da(3,`a`,8),qS(4),aC(5,`t`),vd(),da(6,`button`,9),aC(7,`t`),Ma(`click`,function(){let f=Hh(e).$implicit,B=SS();return Vh(B.reload(f))}),Sa(8,`ui-icon`,4),vd()(),dS(9,L,1,0,`ui-skeleton`,10)(10,V,2,1,`strong`,11)(11,$,1,0,`ui-state-badge`,12),da(12,`p`,13)(13,`code`),qS(14),vd()()()}if(n&2){let e=i.$implicit;Ar(`data-count-id`,e.id),hD(2),qm(`name`,e.icon)(`size`,15),hD(),qm(`routerLink`,e.route),hD(),ey(lC(5,9,e.labelKey)),hD(2),Ar(`aria-label`,lC(7,11,`state.refresh`)),hD(2),qm(`size`,13),hD(),hS(e.src.loading()&&e.src.data()===null?9:e.src.data()!==null?10:11),hD(5),ey(e.endpoint)}}var F=class n{api=p(g);tiles=k();constructor(){this.loadCounts()}async loadCounts(){await Promise.allSettled(this.tiles.map(i=>this.reload(i)))}async reload(i){await i.src.load(()=>T(this.api,i.id))}static ɵfac=function(e){return new(e||n)};static ɵcmp=ei({type:n,selectors:[[`inventory-panel`]],decls:15,vars:10,consts:[[`data-section`,`inventory`,1,`inv`],[1,`inv__head`],[1,`inv__hint`],[1,`icon-btn`,3,`click`],[`name`,`refresh`,3,`size`],[1,`inv__tiles`],[1,`tile`],[3,`name`,`size`],[1,`tile__label`,`tile__link`,3,`routerLink`],[1,`tile__reload`,3,`click`],[`kind`,`text`],[`data-count`,``,1,`tile__n`],[`state`,`UNVERIFIED`],[1,`tile__src`]],template:function(e,_){e&1&&(da(0,`section`,0)(1,`div`,1)(2,`div`)(3,`h2`),qS(4),aC(5,`t`),vd(),da(6,`p`,2),qS(7),aC(8,`t`),vd()(),da(9,`button`,3),aC(10,`t`),Ma(`click`,function(){return _.loadCounts()}),Sa(11,`ui-icon`,4),vd()(),da(12,`div`,5),mS(13,j,15,13,`article`,6,D),vd()()),e&2&&(hD(4),ey(lC(5,4,`dashboard.inventory`)),hD(3),ey(lC(8,6,`dashboard.inventory.hint`)),hD(2),Ar(`aria-label`,lC(10,8,`state.refresh`)),hD(2),qm(`size`,14),hD(2),yS(_.tiles))},dependencies:[vc,I,cE,k$1,aE],styles:[`.inv__head[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--%NS%space-3);margin-bottom:var(--%NS%space-3)}.inv__head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-lg);font-weight:650}.inv__hint[_ngcontent-%COMP%]{margin:2px 0 0;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm)}.inv__tiles[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--%NS%space-3)}.tile[_ngcontent-%COMP%]{display:grid;gap:6px;padding:var(--%NS%space-3) var(--%NS%space-4);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-lg);background:var(--%NS%bg-elevated);box-shadow:var(--%NS%elev-card)}.tile[_ngcontent-%COMP%] header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;color:var(--%NS%fg-muted)}.tile__label[_ngcontent-%COMP%]{flex:1;font-size:var(--%NS%font-xs);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.tile__link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;min-height:24px;color:inherit;text-decoration:none;transition:color var(--%NS%motion-fast)}.tile__link[_ngcontent-%COMP%]:hover{color:var(--%NS%accent-ink);text-decoration:underline}.tile__reload[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:var(--%NS%radius-sm);background:transparent;color:var(--%NS%fg-muted);cursor:pointer;transition:color var(--%NS%motion-fast),background var(--%NS%motion-fast)}.tile__reload[_ngcontent-%COMP%]:hover{color:var(--%NS%fg);background:var(--%NS%bg-hover)}.tile__n[_ngcontent-%COMP%]{font-size:1.375rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}.tile__src[_ngcontent-%COMP%]{margin:0;font-size:var(--%NS%font-xs);color:var(--%NS%fg-muted)}`]})};export{F as t}; \ No newline at end of file diff --git a/portal/assets/index.html b/portal/assets/index.html index fbbdb50..f63d541 100644 --- a/portal/assets/index.html +++ b/portal/assets/index.html @@ -6,8 +6,8 @@ - + - + diff --git a/portal/assets/main-A2NKRJGT.js b/portal/assets/main-A2NKRJGT.js deleted file mode 100644 index 6a0b234..0000000 --- a/portal/assets/main-A2NKRJGT.js +++ /dev/null @@ -1 +0,0 @@ -import{i as l,r as k$1}from"./chunk-DjkjLihA.js";import{$ as da,$t as ze$1,Bt as u_,Ct as no,E as Qm,Et as p$1,F as Wm,Ft as tT,Gt as wS,H as _T,Ht as vI,I as Xn,J as a_,Jt as y_,Lt as tn,M as Ta,Mt as sC,N as Uh,P as WS,Q as cE,Rt as tv,S as Oo,Tt as oC,Ut as vd,V as _S,Wt as ve,X as bS,Xt as yd,Yt as yc,Z as ba,_ as Km,_t as kU,b as NS,ct as gS,d as Ec,dt as hE,f as Ed,gt as k$2,h as Jm,ht as jh,it as ei,j as TT,k as T,kt as rE,l as Dd,lt as gf,o as Ar,ot as fS,pt as hn,q as aE,r as A,s as Bn,st as f_,t as $,ut as hD,v as MT,w as Ow,yt as mS,z as Ym,zt as uS}from"./chunk-BelLryvf.js";var g$2=[`page`,`forge`,`capability`,`skill`,`agent`,`mcp`,`host`,`operation`,`doc`,`error`];var o={page:0,forge:1,capability:2,skill:2,agent:2,mcp:2,host:2,operation:2,doc:2,error:2};var S={page:`command.kind.page`,forge:`command.kind.forge`,capability:`command.kind.capability`,skill:`command.kind.skill`,agent:`command.kind.agent`,mcp:`command.kind.mcp`,host:`command.kind.host`,operation:`command.kind.operation`,doc:`command.kind.doc`,error:`command.kind.error`};var a=r=>r.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().replace(/\s+/g,` `).trim();var i=(r,t)=>rt?1:0;function h$1(r){return l(k$1({},r),{normLabel:a(r.label),norm:a(`${r.label} ${r.sublabel??``}`)})}function u(r,t){return r.normLabel===t?0:r.normLabel.startsWith(t)?1:r.norm.includes(t)||r.kind===`doc`?2:-1}var p=r=>({id:r.id,kind:r.kind,label:r.label,sublabel:r.sublabel,icon:r.icon,route:r.route,url:r.url,run:r.run});function k(r,t,s=60){let l=a(r);if(!l)return t.slice().sort((n,e)=>o[n.kind]-o[e.kind]||i(n.normLabel,e.normLabel)||i(n.id,e.id)).slice(0,s).map(p);let c=[];for(let n of t){let e=u(n,l);e>=0&&c.push({e:n,s:e})}return c.sort((n,e)=>n.s-e.s||o[n.e.kind]-o[e.e.kind]||i(n.e.normLabel,e.e.normLabel)||i(n.e.id,e.e.id)),c.slice(0,s).map(n=>p(n.e))}var K=[`panel`];function V(o,n){if(o&1){let e=wS();vd(0,`div`,2),Qm(`click`,function(){jh(e);let i=bS();return Uh(i.cancel())}),vd(1,`div`,3,0),Qm(`click`,function(i){return i.stopPropagation()})(`keydown`,function(i){jh(e);let f=bS();return Uh(f.onKeydown(i))}),vd(3,`h2`,4),WS(4),Ed(),vd(5,`p`,5),WS(6),Ed(),vd(7,`div`,6)(8,`button`,7),Qm(`click`,function(){jh(e);let i=bS();return Uh(i.cancel())}),WS(9),Ed(),vd(10,`button`,7),Qm(`click`,function(){jh(e);let i=bS();return Uh(i.accept())}),WS(11),Ed()()()()}if(o&2){let e=n,t=bS();hD(4),Jm(t.text(e.title)),hD(2),Jm(t.text(e.message)),hD(3),Dd(` `,t.text(e.cancelKey??`state.cancel`),` `),hD(),Km(`btn--primary`,!e.danger)(`cd__danger`,!!e.danger),hD(),Dd(` `,t.text(e.confirmKey??`state.confirm`),` `)}}var y=class o{_pending=k$2(null);pending=this._pending.asReadonly();ask(n){return new Promise(e=>{this._pending()?.resolve(!1),this._pending.set(l(k$1({},n),{resolve:e}))})}settle(n){let e=this._pending();e&&(this._pending.set(null),e.resolve(n))}static ɵfac=function(e){return new(e||o)};static ɵprov=T({token:o,factory:o.ɵfac,providedIn:`root`})};var F=`button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])`;var L=class o{confirm=p$1(y);i18n=p$1(Ec);panel=kU(`panel`);isOpen=!1;prevFocus=null;constructor(){Oo(()=>{let n=this.confirm.pending()!==null;if(n&&!this.isOpen)this.isOpen=!0,this.prevFocus=document.activeElement,setTimeout(()=>this.focusInitial());else if(!n&&this.isOpen){this.isOpen=!1;let e=this.prevFocus;this.prevFocus=null,setTimeout(()=>{e?.isConnected&&e.focus()})}})}text(n){let e=this.i18n.t(n);return e.startsWith(`⟪`)?n:e}accept(){this.confirm.settle(!0)}cancel(){this.confirm.settle(!1)}onKeydown(n){if(n.key===`Escape`){n.preventDefault(),n.stopPropagation(),this.cancel();return}if(n.key!==`Tab`)return;let e=this.panel()?.nativeElement;if(!e)return;let t=[...e.querySelectorAll(F)].filter(D=>!D.hasAttribute(`disabled`));if(t.length===0){n.preventDefault(),e.focus();return}let i=t[0],f=t[t.length-1],u=document.activeElement;(n.shiftKey?u===i||!e.contains(u):u===f||!e.contains(u))&&(n.preventDefault(),(n.shiftKey?f:i).focus())}focusInitial(){let n=this.panel()?.nativeElement;if(!n)return;let e=n.querySelectorAll(`.cd__actions .btn`);((this.confirm.pending()?.danger?e[0]:e[e.length-1])??n).focus()}static ɵfac=function(e){return new(e||o)};static ɵcmp=ei({type:o,selectors:[[`ui-confirm-host`]],viewQuery:function(e,t){e&1&&Ym(t.panel,K,5),e&2&&_S()},hostBindings:function(e,t){e&1&&Ta(`keydown.escape`,function(){return t.cancel()},Ow)},decls:1,vars:1,consts:[[`panel`,``],[1,`cd`],[1,`cd`,3,`click`],[`role`,`dialog`,`aria-modal`,`true`,`aria-labelledby`,`ui-confirm-title`,`aria-describedby`,`ui-confirm-desc`,`tabindex`,`-1`,1,`cd__panel`,3,`click`,`keydown`],[`id`,`ui-confirm-title`,1,`cd__title`],[`id`,`ui-confirm-desc`,1,`cd__msg`],[1,`cd__actions`],[`type`,`button`,1,`btn`,3,`click`]],template:function(e,t){if(e&1&&uS(0,V,12,8,`div`,1),e&2){let i;fS((i=t.confirm.pending())?0:-1,i)}},styles:[`.cd[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:var(--%NS%z-dialog, 100);display:grid;place-items:center;padding:var(--%NS%space-4);background:var(--%NS%scrim)}.cd__panel[_ngcontent-%COMP%]{width:min(26rem,100%);padding:var(--%NS%space-5);background:var(--%NS%bg-elevated);border:1px solid var(--%NS%border-strong);border-radius:var(--%NS%radius-lg);box-shadow:var(--%NS%elev-pop);animation:_ngcontent-%COMP%_cd-in var(--%NS%fg-motion-med) var(--%NS%ease-out) both}.cd__panel[_ngcontent-%COMP%]:focus{outline:none}.cd__title[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-lg)}.cd__msg[_ngcontent-%COMP%]{margin:0;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm);max-width:60ch}.cd__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:var(--%NS%space-2);margin-top:var(--%NS%space-5)}.cd__danger[_ngcontent-%COMP%]{background:var(--%NS%error);border-color:var(--%NS%error);color:var(--%NS%on-color)}.cd__danger[_ngcontent-%COMP%]:hover{background:color-mix(in srgb,var(--%NS%error) 86%,black);border-color:color-mix(in srgb,var(--%NS%error) 86%,black);box-shadow:0 2px 10px color-mix(in srgb,var(--%NS%error) 40%,transparent)}@keyframes _ngcontent-%COMP%_cd-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.cd__panel[_ngcontent-%COMP%]{animation:none}}`]})};var D=(n,e)=>e.id;function E(n,e){if(n&1){let t=wS();vd(0,`div`,1)(1,`p`,2),WS(2),Ed(),vd(3,`button`,3),oC(4,`t`),Qm(`click`,function(){let o=jh(t).$implicit,r=bS();return Uh(r.toast.dismiss(o.id))}),vd(5,`span`,4),WS(6,`×`),Ed()()()}if(n&2){let t=e.$implicit;Ar(`data-kind`,t.kind)(`role`,t.kind===`error`?`alert`:null),hD(2),Jm(t.text),hD(),Ar(`aria-label`,sC(4,4,`notify.dismiss`))}}var R=3;var U={success:4500,info:4500,error:7e3};var f$1=class n{i18n=p$1(Ec);nextId=1;timers=new Map;_items=k$2([]);items=this._items.asReadonly();show(e,t=`info`,i){let o={id:this.nextId++,text:this.resolve(e,i?.params),kind:t},r=[...this._items(),o];for(;r.length>R;){let g=r.shift();g&&this.clearTimer(g.id)}return this._items.set(r),this.timers.set(o.id,setTimeout(()=>this.dismiss(o.id),U[t])),o.id}dismiss(e){this.clearTimer(e),this._items.update(t=>t.filter(i=>i.id!==e))}ngOnDestroy(){for(let e of this.timers.values())clearTimeout(e);this.timers.clear()}clearTimer(e){let t=this.timers.get(e);t!==void 0&&(clearTimeout(t),this.timers.delete(e))}resolve(e,t){let i=this.i18n.t(e,B(t));return i.startsWith(`⟪`)?e:i}static ɵfac=function(t){return new(t||n)};static ɵprov=T({token:n,factory:n.ɵfac,providedIn:`root`})};function B(n){if(!n)return;let e={};for(let[t,i]of Object.entries(n))typeof i==`string`||typeof i==`number`?e[t]=i:typeof i==`boolean`&&(e[t]=String(i));return e}var I=class n{toast=p$1(f$1);dismissNewest(){let e=this.toast.items(),t=e[e.length-1];t&&this.toast.dismiss(t.id)}static ɵfac=function(t){return new(t||n)};static ɵcmp=ei({type:n,selectors:[[`ui-toast-outlet`]],hostBindings:function(t,i){t&1&&Ta(`keydown.escape`,function(){return i.dismissNewest()},Ow)},decls:4,vars:3,consts:[[`role`,`region`,`aria-live`,`polite`,1,`toasts`],[1,`toast`],[1,`toast__text`],[`type`,`button`,1,`toast__close`,3,`click`],[`aria-hidden`,`true`]],template:function(t,i){t&1&&(vd(0,`div`,0),oC(1,`t`),gS(2,E,7,6,`div`,1,D),Ed()),t&2&&(Ar(`aria-label`,sC(1,1,`notify.region`)),hD(2),mS(i.toast.items()))},dependencies:[aE],styles:[`[_nghost-%COMP%]{position:fixed;right:var(--%NS%space-4);bottom:var(--%NS%space-4);z-index:var(--%NS%z-toast, 120);pointer-events:none}.toasts[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);width:min(360px,calc(100vw - 2 * var(--%NS%space-4)))}.toast[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:var(--%NS%space-3);padding:var(--%NS%space-3);padding-left:calc(var(--%NS%space-3) + 3px);background:color-mix(in srgb,var(--%NS%toast-c, var(--%NS%info)) 6%,var(--%NS%bg-elevated));border:1px solid var(--%NS%border-strong);border-left:3px solid var(--%NS%toast-c, var(--%NS%info));border-radius:var(--%NS%radius-lg);box-shadow:var(--%NS%elev-pop);color:var(--%NS%fg);pointer-events:auto;animation:_ngcontent-%COMP%_toast-in var(--%NS%fg-motion-med) var(--%NS%ease-out) both}.toast[_ngcontent-%COMP%]:before{content:"";width:8px;height:8px;border-radius:50%;margin-top:6px;flex:none;background:var(--%NS%toast-c, var(--%NS%info));box-shadow:0 0 0 3px color-mix(in srgb,var(--%NS%toast-c, var(--%NS%info)) 20%,transparent)}.toast[data-kind=success][_ngcontent-%COMP%]{--%NS%toast-c: var(--%NS%ok)}.toast[data-kind=error][_ngcontent-%COMP%]{--%NS%toast-c: var(--%NS%error)}.toast__text[_ngcontent-%COMP%]{flex:1;margin:0;font-size:var(--%NS%font-sm);line-height:1.4;overflow-wrap:anywhere}.toast__close[_ngcontent-%COMP%]{display:grid;place-items:center;width:26px;height:26px;flex:none;padding:0;border:0;border-radius:var(--%NS%radius-sm);background:transparent;color:var(--%NS%fg-muted);font-size:1rem;line-height:1;cursor:pointer;transition:color var(--%NS%motion-fast),background var(--%NS%motion-fast)}.toast__close[_ngcontent-%COMP%]:hover{color:var(--%NS%fg);background:var(--%NS%bg-hover)}@keyframes _ngcontent-%COMP%_toast-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.toast[_ngcontent-%COMP%]{animation:none}}`]})};function w(t){t||(t=p$1(ve));let i=new A(e=>{if(t.destroyed){e.next();return}return t.onDestroy(e.next.bind(e))});return e=>e.pipe(no(i))}var n$1=class extends Error{transport;status;body;constructor(t,e){let r=e?.message??`request failed (${t||`network`})`;super(r),this.status=t,this.transport=t===0,this.body={code:e?.code??(t===0?`PORTAL-UNREACHABLE`:`HTTP-${t}`),message:r,message_key:e?.message_key??(t===0?`error.unreachable`:void 0),details:e?.details,severity:e?.severity??`error`,retryable:e?.retryable??(t===0||t>=500),action:e?.action}}};var g$1=class i{http=p$1(tv);get(t){return this.http.get(`/api/v1${t}`).pipe($(e=>this.unwrap(e)))}post(t,e){return this.http.post(`/api/v1${t}`,e).pipe($(r=>this.unwrap(r)))}unwrap(t){if(t.schema!==`forge/PortalApi/1`)throw new n$1(0,{code:`PORTAL-BAD-ENVELOPE`,message:`unexpected response schema`});if(t.error)throw new n$1(200,t.error);if(t.data===void 0)throw new n$1(0,{code:`PORTAL-EMPTY-DATA`,message:`envelope carried no data`});return t.data}bootstrap(){return this.get(`/bootstrap`)}health(){return this.get(`/health`)}capabilities(){return this.get(`/capabilities`)}installationStatus(){return this.get(`/installation/status`)}accountEnvironment(){return this.get(`/environment`)}installationPlan(t){return this.post(`/installation/plan`,t)}installationApply(t,e,r=`apply`){return this.post(`/installation/apply`,{plan:t,plan_token:e,confirm:r})}installationRepair(){return this.post(`/installation/repair`,{confirm:`repair`})}installationUninstall(){return this.post(`/installation/uninstall`,{confirm:`uninstall`})}federation(){return this.get(`/federation`)}registryState(){return this.get(`/registry/state`)}registryPlan(t){return this.post(`/registry/plan`,t)}registryExecute(t){return this.post(`/registry/execute`,{action:t.action,forge:t.forge,plan:t.plan,plan_token:t.planToken,confirm:`execute`})}federationPlan(t){return this.post(`/federation/plan`,t)}federationInstallAuto(t,e){return this.post(`/federation/install-auto`,{plan:t,plan_token:e,confirm:`install`})}profiles(){return this.get(`/profiles`)}profilesApply(t){return this.post(`/profiles/apply`,{profile:t,confirm:`apply`})}hosts(){return this.get(`/hosts`)}hostsLaunch(t){return this.post(`/hosts/launch`,{host:t})}mcpServers(){return this.get(`/mcp/servers`)}mcpVerify(){return this.post(`/mcp/verify`,{confirm:`verify`})}skills(){return this.get(`/skills`).pipe($(t=>t.map(e=>l(k$1({},e),{hosts:e.hosts??[]}))))}agents(){return this.get(`/agents`).pipe($(t=>t.map(e=>l(k$1({},e),{domains:e.domains??[],skills:e.skills??[],hosts:e.hosts??[]}))))}tasks(){return this.get(`/tasks`)}metrics(){return this.get(`/metrics`)}events(t){let e=new URLSearchParams;t?.correlationId&&e.set(`correlation_id`,t.correlationId),t?.type&&e.set(`type`,t.type),t?.status&&e.set(`status`,t.status),t?.limit&&t.limit>0&&e.set(`limit`,String(t.limit));let r=e.size?`?${e.toString()}`:``;return this.get(`/events${r}`)}taskEvents(t){return this.get(`/tasks/${encodeURIComponent(t)}/events`)}versions(){return this.get(`/versions`)}lab(){return this.get(`/lab`)}tasksPlan(t){return this.post(`/tasks/plan`,t)}tasksExecute(t,e){return this.post(`/tasks/execute`,{plan:t,plan_token:e,confirm:`execute`})}graphs(){return this.get(`/graphs`)}docsSearch(t,e=20){return this.get(`/docs/search?q=${encodeURIComponent(t)}&limit=${e}`)}static ɵfac=function(e){return new(e||i)};static ɵprov=T({token:i,factory:i.ɵfac,providedIn:`root`})};var h=`forge-portal.scheme`;var f=[`the-forge`,`spark-forge-aws`,`spark-forge-azure`,`api-forge`,`platform-forge`,`forge-doctor-data`,`forge-doctor-api`];var n=class o{scheme=k$2(`dark`);forge=k$2(`the-forge`);media=globalThis.matchMedia?.(`(prefers-color-scheme: dark)`);constructor(){try{let e=globalThis.localStorage?.getItem(h);(e===`light`||e===`dark`||e===`system`)&&this.scheme.set(e)}catch{}this.media?.addEventListener(`change`,()=>this.apply()),this.apply()}setScheme(e){this.scheme.set(e);try{globalThis.localStorage?.setItem(h,e)}catch{}this.apply()}setForge(e){this.forge.set(this.normalizeForge(e)),this.apply()}normalizeForge(e){return f.includes(e)?e:`the-forge`}apply(){let e=globalThis.document?.documentElement;if(!e)return;let t=this.scheme()===`system`?this.media?.matches?`dark`:`light`:this.scheme();e.dataset.scheme=t,e.dataset.forge=this.forge()}static ɵfac=function(t){return new(t||o)};static ɵprov=T({token:o,factory:o.ɵfac,providedIn:`root`})};var g=class o{api=p$1(g$1);theme=p$1(n);status=k$2(`booting`);descriptor=k$2(null);health=k$2(null);accountEnvironment=k$2(null);lastError=k$2(null);refreshedAt=k$2(null);forgeId=tn(()=>this.descriptor()?.forge_id??`the-forge`);forgeName=tn(()=>this.descriptor()?.forge_name??`Forge Portal`);federated=tn(()=>this.descriptor()?.federated??!1);capabilities=tn(()=>this.descriptor()?.capabilities??[]);nav=tn(()=>this.descriptor()?.nav??[]);workspace=tn(()=>this.descriptor()?.workspace??null);hasCapability(e){return this.capabilities().find(m=>m.id===e)?.state===`supported`}async bootstrap(){this.status.set(`booting`);try{let e=await hE(this.api.bootstrap());this.applyBootstrap(e)}catch(e){let t=e instanceof n$1?e:new n$1(0);this.lastError.set(t),this.status.set(t.transport?`offline`:`error`)}}async refreshHealth(){try{let e=await hE(this.api.installationStatus());this.health.set(e),this.accountEnvironment.set(e.account_environment??this.accountEnvironment()),this.refreshedAt.set(new Date().toISOString()),this.lastError.set(null)}catch(e){let t=e instanceof n$1?e:new n$1(0);this.lastError.set(t),t.transport&&this.status.set(`offline`)}}applyBootstrap(e){this.descriptor.set(e.descriptor),this.health.set(e.health),this.accountEnvironment.set(e.account_environment??e.health.account_environment??null),this.lastError.set(null),this.refreshedAt.set(new Date().toISOString()),this.theme.setForge(e.descriptor.theme??e.descriptor.forge_id),this.status.set(e.health.state===`DEGRADED`?`degraded`:`ready`)}static ɵfac=function(t){return new(t||o)};static ɵprov=T({token:o,factory:o.ɵfac,providedIn:`root`})};var Ee=[{path:``,pathMatch:`full`,redirectTo:`dashboard`},{path:`dashboard`,loadComponent:()=>import(`./chunk-BiLsIL6D.js`).then(n=>n.DashboardPage)},{path:`install`,loadComponent:()=>import(`./chunk-Cci2spkQ.js`).then(n=>n.InstallPage)},{path:`config`,loadComponent:()=>import(`./chunk-DKmatQN-.js`).then(n=>n.ConfigPage)},{path:`forges`,loadComponent:()=>import(`./chunk-C5-CCisw.js`).then(n=>n.ExplorerPage)},{path:`forges/:id`,loadComponent:()=>import(`./chunk-BUdnTjRC.js`).then(n=>n.ForgeDetailPage)},{path:`match`,loadComponent:()=>import(`./chunk-Bqgc-mwk.js`).then(n=>n.MatchPage)},{path:`federation`,loadComponent:()=>import(`./chunk-DbK2Y3UO.js`).then(n=>n.FederationPage)},{path:`profiles`,loadComponent:()=>import(`./chunk-BZzb34kV.js`).then(n=>n.ProfilesPage)},{path:`hosts`,loadComponent:()=>import(`./chunk-D51YTy_x.js`).then(n=>n.HostsPage)},{path:`mcp`,loadComponent:()=>import(`./chunk-Dx9x1gxm.js`).then(n=>n.McpPage)},{path:`skills`,loadComponent:()=>import(`./chunk-BOg-dd4X.js`).then(n=>n.SkillsPage)},{path:`agents`,loadComponent:()=>import(`./chunk-CXfCkbMK.js`).then(n=>n.AgentsPage)},{path:`tasks`,loadComponent:()=>import(`./chunk-vTT25rMv.js`).then(n=>n.TasksPage)},{path:`graph`,loadComponent:()=>import(`./chunk-D84lgeyr.js`).then(n=>n.GraphPage)},{path:`observe`,loadComponent:()=>import(`./chunk-NryuIUhX.js`).then(n=>n.ObservePage)},{path:`execution`,loadComponent:()=>import(`./chunk-DvTxSJhT.js`).then(n=>n.ExecutionPage)},{path:`lab`,loadComponent:()=>import(`./chunk-1IC1Ht1p.js`).then(n=>n.LabPage)},{path:`versions`,loadComponent:()=>import(`./chunk-D67lmMI_.js`).then(n=>n.VersionsPage)},{path:`knowledge`,loadComponent:()=>import(`./chunk-BtsfId7c.js`).then(n=>n.KnowledgePage)},{path:`guide`,loadComponent:()=>import(`./chunk-D2-KpBLI.js`).then(n=>n.GuidePage)},{path:`settings`,loadComponent:()=>import(`./chunk-DcK6E10F.js`).then(n=>n.SettingsPage)},{path:`**`,redirectTo:`dashboard`}];var q=class n{tokenSignal=k$2(null);token=this.tokenSignal.asReadonly();constructor(){let e=new URL(globalThis.location.href),t=e.searchParams.get(`forge_session`);if(t){this.tokenSignal.set(t),e.searchParams.delete(`forge_session`),globalThis.history.replaceState(null,``,e.toString());return}let i=e.searchParams.get(`dev_session`);i&&this.tokenSignal.set(i)}hasSession(){return this.tokenSignal()!==null}static ɵfac=function(t){return new(t||n)};static ɵprov=T({token:n,factory:n.ɵfac,providedIn:`root`})};var Z=0;function De(){return Z=(Z+1)%65535,`ui-${Date.now().toString(36)}-${Z.toString(36)}`}var we=(n,e)=>{if(!n.url.startsWith(`/api/`))return e(n);let t=p$1(q),i=n.headers.set(`X-Correlation-Id`,De()),a=t.token();return a&&(i=i.set(`X-Forge-Session`,a)),n.method!==`GET`&&!n.headers.has(`Content-Type`)&&(i=i.set(`Content-Type`,`application/json`)),e(n.clone({headers:i,withCredentials:!0})).pipe($(r=>{if(r.type===4&&r.body&&typeof r.body==`object`){let d=r.body;if(d.schema===`forge/PortalApi/1`&&d.error)throw new n$1(r.status,d.error)}return r}),hn(r=>{if(r instanceof n$1)throw r;if(r instanceof Bn){let d=r.error;throw new n$1(r.status,d?.error??void 0)}throw new n$1(0)}))};var Ne={providers:[vI(),u_(Ee,y_(),f_({anchorScrolling:`enabled`,scrollPositionRestoration:`enabled`})),TT(_T(),MT([we]))]};var Me=[{route:`/dashboard`,labelKey:`nav.dashboard`,icon:`dashboard`},{route:`/guide`,labelKey:`nav.guide`,icon:`guide`},{route:`/install`,labelKey:`nav.install`,icon:`install`},{route:`/federation`,labelKey:`nav.federation`,icon:`network`},{route:`/forges`,labelKey:`nav.forges`,icon:`gem`},{route:`/profiles`,labelKey:`nav.profiles`,icon:`profiles`},{route:`/hosts`,labelKey:`nav.hosts`,icon:`hosts`},{route:`/mcp`,labelKey:`nav.mcp`,icon:`mcp`},{route:`/skills`,labelKey:`nav.skills`,icon:`skills`},{route:`/agents`,labelKey:`nav.agents`,icon:`agents`},{route:`/match`,labelKey:`nav.match`,icon:`compass`},{route:`/tasks`,labelKey:`nav.tasks`,icon:`tasks`,capability:`tasks`},{route:`/graph`,labelKey:`nav.graph`,icon:`graph`,capability:`graph`},{route:`/observe`,labelKey:`nav.observe`,icon:`pulse`},{route:`/execution`,labelKey:`nav.execution`,icon:`execution`},{route:`/lab`,labelKey:`nav.lab`,icon:`diff`},{route:`/versions`,labelKey:`nav.versions`,icon:`history`},{route:`/knowledge`,labelKey:`nav.knowledge`,icon:`knowledge`},{route:`/settings`,labelKey:`nav.settings`,icon:`settings`},{route:`/config`,labelKey:`nav.config`,icon:`settings`}];var G=class n$2{api=p$1(g$1);store=p$1(g);theme=p$1(n);i18n=p$1(Ec);results=k$2([]);loading=k$2(!1);searched=k$2(!1);indexFailures=k$2([]);docsFailed=k$2(!1);unverified=tn(()=>{let e=new Set(this.indexFailures());return this.docsFailed()&&e.add(`doc`),g$2.filter(t=>e.has(t))});cache=null;building=null;bump=0;seq=0;timer=null;lastQuery=``;constructor(){p$1(ve).onDestroy(()=>this.clearTimer())}setQuery(e){if(this.lastQuery=e,this.clearTimer(),!e.trim()){this.searchNow(``);return}this.timer=setTimeout(()=>{this.timer=null,this.searchNow(e)},250)}async searchNow(e){let t=++this.seq;this.lastQuery=e,this.searched.set(!0),this.loading.set(!0);try{let i=await this.ensureIndex(),a=e.trim()?await this.fetchDocs(e.trim(),t):[];if(t!==this.seq)return;this.results.set(k(e.trim(),[...i,...a]))}finally{t===this.seq&&this.loading.set(!1)}}refresh(){this.bump++,this.cache=null,this.docsFailed.set(!1),this.searched()&&this.searchNow(this.lastQuery)}version(){return`${this.store.refreshedAt()??`never`}|${this.i18n.locale()}|${this.bump}`}async ensureIndex(){let e=this.version();if(this.cache?.version===e)return this.cache.entries;this.building??=this.buildIndex().finally(()=>this.building=null);let t=await this.building;return this.version()!==e?this.ensureIndex():(this.cache={version:e,entries:t.entries},this.indexFailures.set(t.failed),t.entries)}async buildIndex(){let e=[],t=new Set;try{e.push(...this.pageEntries())}catch{t.add(`page`)}try{e.push(...this.capabilityEntries())}catch{t.add(`capability`)}let i=async(a,r)=>{try{e.push(...await r())}catch(d){d instanceof n$1&&d.status===404||t.add(a)}};return await Promise.all([i(`forge`,async()=>(await hE(this.api.federation())).specialists.map(a=>this.forgeEntry(a))),i(`skill`,async()=>(await hE(this.api.skills())).map(a=>this.skillEntry(a))),i(`agent`,async()=>(await hE(this.api.agents())).map(a=>this.agentEntry(a))),i(`mcp`,async()=>(await hE(this.api.mcpServers())).map(a=>this.mcpEntry(a))),i(`host`,async()=>(await hE(this.api.hosts())).map(a=>this.hostEntry(a))),(async()=>{try{e.push(...this.taskEntries(await hE(this.api.tasks())))}catch(a){a instanceof n$1&&a.status===404||(t.add(`operation`),t.add(`error`))}})()]),{entries:e,failed:g$2.filter(a=>t.has(a))}}async fetchDocs(e,t){try{let i=await hE(this.api.docsSearch(e));return t===this.seq&&this.docsFailed.set(!1),i.map(a=>this.docEntry(a))}catch(i){return t===this.seq&&this.docsFailed.set(!(i instanceof n$1&&i.status===404)),[]}}capVisible(e){if(!e)return!0;let t=this.store.capabilities();return t.length===0?!0:t.some(i=>i.id===e&&i.state!==`unsupported`)}pageEntries(){let e=[],t=new Set;for(let i of this.store.nav())!i.route||t.has(i.route)||!this.capVisible(i.requires_capability)||(t.add(i.route),e.push(h$1({id:`page:${i.route}`,kind:`page`,label:this.i18n.t(i.label_key),sublabel:i.route,icon:i.icon||`dashboard`,route:i.route})));for(let i of Me)t.has(i.route)||!this.capVisible(i.capability)||(t.add(i.route),e.push(h$1({id:`page:${i.route}`,kind:`page`,label:this.i18n.t(i.labelKey),sublabel:i.route,icon:i.icon,route:i.route})));return e.push(h$1({id:`act:refresh`,kind:`page`,label:this.i18n.t(`state.refresh`),icon:`refresh`,run:()=>{this.store.refreshHealth()}}),h$1({id:`act:theme`,kind:`page`,label:this.i18n.t(`settings.theme`),icon:`contrast`,run:()=>this.cycleTheme()}),h$1({id:`act:locale`,kind:`page`,label:this.i18n.t(`settings.language`),icon:`globe`,run:()=>this.toggleLocale()})),e}capabilityEntries(){return this.store.capabilities().map(e=>h$1({id:`cap:${e.id}`,kind:`capability`,label:e.label_key?this.i18n.t(e.label_key):e.id,sublabel:e.state,icon:`shield-check`,route:`/dashboard`}))}forgeEntry(e){return h$1({id:`forge:${e.provider}`,kind:`forge`,label:e.provider,sublabel:[e.state,e.status].filter(Boolean).join(` · `)||void 0,icon:`gem`,route:`/forges/${encodeURIComponent(e.provider)}`})}skillEntry(e){return h$1({id:`skill:${e.id}`,kind:`skill`,label:e.name||e.id,sublabel:[e.domain,e.state].filter(Boolean).join(` · `)||void 0,icon:`skills`,route:`/skills`})}agentEntry(e){return h$1({id:`agent:${e.id}`,kind:`agent`,label:e.name||e.id,sublabel:e.role||void 0,icon:`agents`,route:`/agents`})}mcpEntry(e){return h$1({id:`mcp:${e.id}`,kind:`mcp`,label:e.id,sublabel:[e.state,e.host].filter(Boolean).join(` · `)||void 0,icon:`mcp`,route:`/mcp`})}hostEntry(e){return h$1({id:`host:${e.host}`,kind:`host`,label:e.host,sublabel:[e.integration,e.version].filter(Boolean).join(` · `)||void 0,icon:`hosts`,route:`/hosts`})}taskEntries(e){let t=[];for(let i of e){t.push(h$1({id:`op:${i.id}`,kind:`operation`,label:i.label||i.verb,sublabel:[i.verb,i.stage].filter(Boolean).join(` · `)||void 0,icon:`tasks`,route:`/tasks`}));let a=i.receipt?.status;(i.refusal||typeof a==`string`&&a!==`ok`)&&t.push(h$1({id:`err:${i.id}`,kind:`error`,label:i.refusal??(i.label||i.verb),sublabel:[i.verb,i.stage].filter(Boolean).join(` · `)||void 0,icon:`alert`,route:`/tasks`}))}return t}docEntry(e){return h$1(k$1({id:`doc:${e.path}`,kind:`doc`,label:e.title||e.path,sublabel:e.category||e.path||void 0,icon:`knowledge`},e.url?{url:e.url}:{route:`/knowledge`}))}cycleTheme(){let e=this.theme.scheme()===`system`?`light`:this.theme.scheme()===`light`?`dark`:`system`;this.theme.setScheme(e)}toggleLocale(){this.i18n.applyPreference(this.i18n.locale()===`pt-BR`?`en`:`pt-BR`)}clearTimer(){this.timer&&(clearTimeout(this.timer),this.timer=null)}static ɵfac=function(t){return new(t||n$2)};static ɵprov=T({token:n$2,factory:n$2.ɵfac,providedIn:`root`})};var Ae=[`inp`];var Ie=[`list`];var Be=[`panel`];var Re=(n,e)=>e.kind;var Fe=(n,e)=>e.id;function He(n,e){n&1&&ba(0,`ui-icon`,14),n&2&&Wm(`size`,11)}function $e(n,e){if(n&1){let t=wS();da(0,`button`,13),oC(1,`t`),Ta(`click`,function(){let a=jh(t).$implicit,r=bS(2);return Uh(r.setFilter(a.kind))})(`keydown`,function(a){let r=jh(t).$index,d=bS(2);return Uh(d.onChipKey(a,r))}),WS(2),oC(3,`t`),uS(4,He,1,1,`ui-icon`,14),yd()}if(n&2){let t=e.$implicit,i=bS(2);Wm(`tabindex`,i.filter()===t.kind?0:-1),Ar(`aria-checked`,i.filter()===t.kind)(`data-active`,i.filter()===t.kind||null)(`data-unverified`,t.unverified||null)(`title`,t.unverified?sC(1,7,`command.unverified`):null),hD(2),Dd(` `,sC(3,9,t.labelKey),` `),hD(2),fS(t.unverified?4:-1)}}function Le(n,e){n&1&&(da(0,`li`,10),WS(1),oC(2,`t`),yd()),n&2&&(hD(),Jm(sC(2,1,`command.searching`)))}function Ve(n,e){if(n&1&&(da(0,`li`,15),WS(1),oC(2,`t`),yd()),n&2){let t=bS().$implicit,i=bS(2);hD(),Jm(sC(2,1,i.labels[t.kind]))}}function Oe(n,e){if(n&1&&(da(0,`span`,19),WS(1),yd()),n&2){let t=bS().$implicit;hD(),Jm(t.sublabel)}}function ze(n,e){if(n&1){let t=wS();uS(0,Ve,3,3,`li`,15),da(1,`li`,16),Ta(`click`,function(){let a=jh(t).$implicit,r=bS(2);return Uh(r.run(a))})(`mousemove`,function(){let a=jh(t).$index,r=bS(2);return Uh(r.active.set(a))}),ba(2,`ui-icon`,17),da(3,`span`,18),WS(4),yd(),uS(5,Oe,2,1,`span`,19),yd()}if(n&2){let t=e.$implicit,i=e.$index,a=bS(2);fS(i===0||a.flat()[i-1].kind!==t.kind?0:-1),hD(),Wm(`id`,`cp-opt-`+i),Ar(`aria-selected`,i===a.idx())(`data-active`,i===a.idx()||null),hD(),Wm(`name`,t.icon)(`size`,15),hD(2),Jm(t.label),hD(),fS(t.sublabel?5:-1)}}function Ue(n,e){n&1&&(da(0,`li`,11),WS(1),oC(2,`t`),yd()),n&2&&(hD(),Jm(sC(2,1,`command.empty`)))}function je(n,e){if(n&1){let t=wS();da(0,`div`,4),Ta(`click`,function(){jh(t);let a=bS();return Uh(a.close())}),da(1,`div`,5,0),oC(3,`t`),Ta(`click`,function(a){return a.stopPropagation()})(`keydown`,function(a){jh(t);let r=bS();return Uh(r.onPanelKey(a))}),da(4,`input`,6,1),oC(6,`t`),oC(7,`t`),Ta(`input`,function(a){jh(t);let r=bS();return Uh(r.onQuery(a))})(`keydown`,function(a){jh(t);let r=bS();return Uh(r.onKey(a))}),yd(),da(8,`div`,7),oC(9,`t`),gS(10,$e,5,11,`button`,8,Re),yd(),da(12,`ul`,9,2),uS(14,Le,3,3,`li`,10),gS(15,ze,6,8,null,null,Fe),uS(17,Ue,3,3,`li`,11),yd(),da(18,`div`,12),WS(19),oC(20,`t`),yd()()()}if(n&2){let t=bS();hD(),Ar(`aria-label`,sC(3,10,`command.open`)),hD(3),Wm(`value`,t.query())(`placeholder`,sC(6,12,`command.hint`)),Ar(`aria-activedescendant`,t.activeDesc())(`aria-label`,sC(7,14,`command.open`)),hD(4),Ar(`aria-label`,sC(9,16,`command.filters`)),hD(2),mS(t.chips()),hD(2),Ar(`aria-busy`,t.search.loading()||null),hD(2),fS(t.search.loading()?14:-1),hD(),mS(t.flat()),hD(2),fS(!t.search.loading()&&t.search.searched()&&t.flat().length===0?17:-1),hD(2),Jm(sC(20,18,`command.footer`))}}var Qe=`button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])`;var qe=/^(https?:|mailto:|ftp:|\/|#)/i;var X=class n{router=p$1(Xn);search=p$1(G);open=k$2(!1);query=k$2(``);active=k$2(0);filter=k$2(`all`);labels=S;input=kU(`inp`);list=kU(`list`);panel=kU(`panel`);prevFocus=null;flat=tn(()=>{let e=this.filter(),t=this.search.results();return e===`all`?t:t.filter(i=>i.kind===e)});idx=tn(()=>{let e=this.flat().length;return e?Math.min(this.active(),e-1):0});activeDesc=tn(()=>this.flat().length?`cp-opt-${this.idx()}`:null);chips=tn(()=>{let e=new Set(this.search.results().map(a=>a.kind)),t=new Set(this.search.unverified()),i=[{kind:`all`,labelKey:`state.all`,unverified:!1}];for(let a of g$2)(e.has(a)||t.has(a)||this.filter()===a)&&i.push({kind:a,labelKey:S[a],unverified:t.has(a)});return i});toggle(e){e?.preventDefault();let t=!this.open();this.open.set(t),t&&(this.prevFocus=document.activeElement,this.query.set(``),this.filter.set(`all`),this.active.set(0),this.search.setQuery(``),setTimeout(()=>this.input()?.nativeElement.focus()))}close(){if(!this.open())return;this.open.set(!1);let e=this.prevFocus;this.prevFocus=null,setTimeout(()=>{e?.isConnected&&e.focus()})}onQuery(e){let t=e.target.value;this.query.set(t),this.active.set(0),this.search.setQuery(t)}onKey(e){let t=this.flat().length;if(e.key===`ArrowDown`)e.preventDefault(),this.active.set(t?(this.idx()+1)%t:0),this.scrollActive();else if(e.key===`ArrowUp`)e.preventDefault(),this.active.set(t?(this.idx()-1+t)%t:0),this.scrollActive();else if(e.key===`Enter`){let i=this.flat()[this.idx()];i&&this.run(i)}else e.key===`Escape`&&this.close()}onChipKey(e,t){let i=this.chips(),a=i.length;if(a)if(e.key===`ArrowRight`||e.key===`ArrowLeft`){e.preventDefault();let r=e.key===`ArrowRight`?(t+1)%a:(t-1+a)%a,d=i[r];if(!d)return;this.filter.set(d.kind),this.active.set(0),e.currentTarget.parentElement?.children[r]?.focus()}else e.key===`ArrowDown`||e.key===`ArrowUp`?(e.preventDefault(),this.input()?.nativeElement.focus()):e.key===`Escape`&&this.close()}onPanelKey(e){if(e.key!==`Tab`)return;let t=this.panel()?.nativeElement;if(!t)return;let i=[...t.querySelectorAll(Qe)].filter(ee=>!ee.hasAttribute(`disabled`)&&ee.tabIndex>=0);if(i.length===0){e.preventDefault(),this.input()?.nativeElement.focus();return}let a=i[0],r=i[i.length-1],d=document.activeElement;(e.shiftKey?d===a||!t.contains(d):d===r||!t.contains(d))&&(e.preventDefault(),(e.shiftKey?r:a).focus())}setFilter(e){this.filter.set(e),this.active.set(0),this.input()?.nativeElement.focus()}run(e){this.close(),e.run?e.run():e.route?this.router.navigateByUrl(e.route):e.url&&qe.test(e.url)&&window.open(e.url,`_blank`,`noopener`)}scrollActive(){setTimeout(()=>{this.list()?.nativeElement.querySelector(`[data-active]`)?.scrollIntoView?.({block:`nearest`})})}static ɵfac=function(t){return new(t||n)};static ɵcmp=ei({type:n,selectors:[[`ui-command-palette`]],viewQuery:function(t,i){t&1&&Ym(i.input,Ae,5)(i.list,Ie,5)(i.panel,Be,5),t&2&&_S(3)},hostBindings:function(t,i){t&1&&Ta(`keydown.control.k`,function(r){return i.toggle(r)},Ow)(`keydown.meta.k`,function(r){return i.toggle(r)},Ow)},decls:1,vars:1,consts:[[`panel`,``],[`inp`,``],[`list`,``],[1,`cp`],[1,`cp`,3,`click`],[`role`,`dialog`,`aria-modal`,`true`,1,`cp__panel`,3,`click`,`keydown`],[`type`,`text`,`role`,`combobox`,`aria-expanded`,`true`,`aria-controls`,`cp-list`,1,`cp__input`,3,`input`,`keydown`,`value`,`placeholder`],[`role`,`radiogroup`,1,`cp__filters`],[`type`,`button`,`role`,`radio`,1,`cp__chip`,3,`tabindex`],[`id`,`cp-list`,`role`,`listbox`,1,`cp__list`],[`role`,`presentation`,1,`cp__status`],[`role`,`presentation`,1,`cp__empty`],[1,`cp__footer`],[`type`,`button`,`role`,`radio`,1,`cp__chip`,3,`click`,`keydown`,`tabindex`],[`name`,`alert`,3,`size`],[`role`,`presentation`,1,`cp__group`],[`role`,`option`,1,`cp__item`,3,`click`,`mousemove`,`id`],[3,`name`,`size`],[1,`cp__label`],[1,`cp__sub`]],template:function(t,i){t&1&&uS(0,je,21,20,`div`,3),t&2&&fS(i.open()?0:-1)},dependencies:[cE,aE],styles:[`.cp[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:90;background:#00000073;display:grid;place-items:start center;padding-top:14vh}.cp__panel[_ngcontent-%COMP%]{width:min(560px,calc(100vw - var(--%NS%space-6)));background:var(--%NS%bg-elevated);border:1px solid var(--%NS%border-strong);border-radius:var(--%NS%radius-lg);box-shadow:var(--%NS%elev-pop);overflow:hidden}.cp__input[_ngcontent-%COMP%]{width:100%;border:0;border-bottom:1px solid var(--%NS%border);background:transparent;color:var(--%NS%fg);padding:var(--%NS%space-3) var(--%NS%space-4);font:inherit;font-size:var(--%NS%font-lg);outline:none}.cp__filters[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-1);padding:var(--%NS%space-2) var(--%NS%space-3);border-bottom:1px solid var(--%NS%border)}.cp__chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-1);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-pill);background:transparent;color:var(--%NS%fg-muted);padding:1px var(--%NS%space-2);font:inherit;font-size:var(--%NS%font-xs);cursor:pointer}.cp__chip[data-active][_ngcontent-%COMP%]{background:var(--%NS%accent-bg);border-color:color-mix(in srgb,var(--%NS%accent) 40%,transparent);color:var(--%NS%accent-ink)}.cp__chip[data-unverified][_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%warning, var(--%NS%accent))}.cp__list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:var(--%NS%space-2);max-height:320px;overflow-y:auto}.cp__group[_ngcontent-%COMP%]{padding:var(--%NS%space-2) var(--%NS%space-3) var(--%NS%space-1);color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs);font-weight:600;text-transform:uppercase;letter-spacing:.06em;cursor:default}.cp__item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-2) var(--%NS%space-3);border-radius:var(--%NS%radius-md);color:var(--%NS%fg);cursor:pointer;font-size:var(--%NS%font-sm)}.cp__item[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);flex:none}.cp__item[data-active][_ngcontent-%COMP%]{background:var(--%NS%accent-bg);color:var(--%NS%accent-ink)}.cp__item[data-active][_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.cp__label[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cp__sub[_ngcontent-%COMP%]{margin-left:auto;flex:none;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.cp__status[_ngcontent-%COMP%], .cp__empty[_ngcontent-%COMP%]{padding:var(--%NS%space-2) var(--%NS%space-3);color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm);cursor:default}.cp__footer[_ngcontent-%COMP%]{border-top:1px solid var(--%NS%border);padding:var(--%NS%space-2) var(--%NS%space-4);color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}`]})};var Ge=(n,e)=>e.key;var Xe=(n,e)=>e.route;function We(n,e){if(n&1&&(da(0,`a`,27),ba(1,`ui-icon`,28),da(2,`span`,29),WS(3),oC(4,`t`),yd()()),n&2){let t=e.$implicit;Wm(`routerLink`,t.route),hD(),Wm(`name`,t.icon)(`size`,17),hD(2),Jm(sC(4,4,t.label))}}function Je(n,e){if(n&1&&(da(0,`div`,9)(1,`p`,26),WS(2),oC(3,`t`),yd(),gS(4,We,5,6,`a`,27,Xe),yd()),n&2){let t=e.$implicit;Ar(`aria-labelledby`,`nav-h-`+t.key),hD(),Wm(`id`,`nav-h-`+t.key),hD(),Jm(sC(3,3,t.label)),hD(2),mS(t.items)}}function Ye(n,e){n&1&&(da(0,`span`,18),WS(1),oC(2,`t`),yd()),n&2&&(hD(),Jm(sC(2,1,`settings.federated`)))}function Ze(n,e){if(n&1){let t=wS();da(0,`div`,25)(1,`p`),WS(2),oC(3,`t`),yd(),da(4,`button`,30),Ta(`click`,function(){jh(t);let a=bS();return Uh(a.store.bootstrap())}),WS(5),oC(6,`t`),yd()()}if(n&2){let t=bS();hD(2),Jm(sC(3,2,t.bannerMessageKey())),hD(3),Dd(` `,sC(6,4,`error.retry`),` `)}}var et=[{key:`overview`,label:`nav.section.overview`,items:[{route:`/dashboard`,label:`nav.dashboard`,icon:`dashboard`},{route:`/guide`,label:`nav.guide`,icon:`guide`},{route:`/federation`,label:`nav.federation`,icon:`network`,capability:`federation`}]},{key:`explore`,label:`nav.section.explore`,items:[{route:`/forges`,label:`nav.forges`,icon:`gem`,capability:`federation`},{route:`/agents`,label:`nav.agents`,icon:`agents`},{route:`/skills`,label:`nav.skills`,icon:`skills`},{route:`/mcp`,label:`nav.mcp`,icon:`mcp`},{route:`/knowledge`,label:`nav.knowledge`,icon:`knowledge`},{route:`/match`,label:`nav.match`,icon:`compass`}]},{key:`operate`,label:`nav.section.operate`,items:[{route:`/tasks`,label:`nav.tasks`,icon:`tasks`,capability:`tasks`},{route:`/install`,label:`nav.install`,icon:`install`},{route:`/profiles`,label:`nav.profiles`,icon:`profiles`},{route:`/hosts`,label:`nav.hosts`,icon:`hosts`},{route:`/config`,label:`nav.config`,icon:`key`}]},{key:`analyze`,label:`nav.section.analyze`,items:[{route:`/graph`,label:`nav.graph`,icon:`graph`,capability:`graph`},{route:`/observe`,label:`nav.observe`,icon:`pulse`},{route:`/execution`,label:`nav.execution`,icon:`execution`},{route:`/lab`,label:`nav.lab`,icon:`diff`},{route:`/versions`,label:`nav.versions`,icon:`history`}]},{key:`settings`,label:`nav.section.settings`,items:[{route:`/settings`,label:`nav.settings`,icon:`settings`}]}];var W=class n$3{store=p$1(g);i18n=p$1(Ec);theme=p$1(n);prefs=p$1(rE);router=p$1(Xn);destroyRef=p$1(ve);collapsed=k$2(this.prefs.navCollapsed());nav=et;navigated=!1;visibleNav=tn(()=>this.nav.map(e=>l(k$1({},e),{items:e.items.filter(t=>!t.capability||this.store.capabilities().length===0||this.store.capabilities().some(i=>i.id===t.capability&&i.state!==`unsupported`))})).filter(e=>e.items.length>0));schemeIcon=tn(()=>{let e=this.theme.scheme();return e===`dark`?`moon`:e===`light`?`sun`:`contrast`});bannerMessageKey=tn(()=>this.store.lastError?.()?.body.message_key??`error.unreachable`);constructor(){this.store.bootstrap(),this.router.events.pipe(w(this.destroyRef)).subscribe(e=>{if(!(e instanceof ze$1))return;if(this.prefs.recordRoute(e.urlAfterRedirects),!this.navigated){this.navigated=!0;return}let t=document.getElementById(`content`);t&&(t.focus(),t.scrollTop=0)})}toggleLocale(){this.i18n.applyPreference(this.i18n.locale()===`pt-BR`?`en`:`pt-BR`)}toggleCollapsed(){let e=!this.collapsed();this.collapsed.set(e),this.prefs.setNavCollapsed(e)}onDocKeydown(e){if(e.key!==`[`||e.ctrlKey||e.metaKey||e.altKey)return;let t=e.target,i=t?.tagName;i===`INPUT`||i===`TEXTAREA`||i===`SELECT`||t?.isContentEditable||this.toggleCollapsed()}cycleScheme(){let e=this.theme.scheme()===`system`?`light`:this.theme.scheme()===`light`?`dark`:`system`;this.theme.setScheme(e)}static ɵfac=function(t){return new(t||n$3)};static ɵcmp=ei({type:n$3,selectors:[[`app-root`]],hostBindings:function(t,i){t&1&&Ta(`keydown`,function(r){return i.onDocKeydown(r)},Ow)},decls:54,vars:55,consts:[[`palette`,``],[`href`,`#content`,1,`skip-link`],[1,`shell`],[1,`shell__side`],[`routerLink`,`/dashboard`,1,`brand`],[`aria-hidden`,`true`,1,`brand__mark`],[`name`,`gem`,3,`size`],[1,`brand__text`],[`id`,`shell-nav`,1,`nav`],[`role`,`group`,1,`nav__group`],[`aria-controls`,`shell-nav`,1,`nav__collapse`,3,`click`,`title`],[3,`name`,`size`],[1,`shell__main`],[1,`topbar`],[1,`topbar__status`],[`aria-hidden`,`true`,1,`dot`,3,`title`],[1,`topbar__workspace`],[`name`,`folder`,3,`size`],[1,`topbar__fed`],[1,`topbar__actions`],[1,`icon-btn`,`icon-btn--search`,3,`click`,`title`],[`name`,`search`,3,`size`],[`aria-hidden`,`true`,1,`icon-btn__kbd`],[1,`icon-btn`,3,`click`,`title`],[`id`,`content`,`tabindex`,`-1`,1,`content`],[`role`,`alert`,1,`offline-banner`],[1,`nav__section`,3,`id`],[`routerLinkActive`,`nav__item--active`,`ariaCurrentWhenActive`,`page`,1,`nav__item`,3,`routerLink`],[1,`nav__icon`,3,`name`,`size`],[1,`nav__label`],[1,`btn`,3,`click`]],template:function(t,i){if(t&1){let a=wS();da(0,`a`,1),WS(1),oC(2,`t`),yd(),da(3,`div`,2)(4,`aside`,3),oC(5,`t`),da(6,`a`,4)(7,`span`,5),ba(8,`ui-icon`,6),yd(),da(9,`span`,7)(10,`strong`),WS(11),yd(),da(12,`small`),WS(13),oC(14,`t`),yd()()(),da(15,`nav`,8),oC(16,`t`),gS(17,Je,6,5,`div`,9,Ge),yd(),da(19,`button`,10),oC(20,`t`),oC(21,`t`),Ta(`click`,function(){return i.toggleCollapsed()}),ba(22,`ui-icon`,11),yd()(),da(23,`div`,12)(24,`header`,13)(25,`div`,14),ba(26,`span`,15),da(27,`span`,16),ba(28,`ui-icon`,17),WS(29),oC(30,`t`),yd(),uS(31,Ye,3,3,`span`,18),yd(),da(32,`div`,19)(33,`button`,20),oC(34,`t`),oC(35,`t`),Ta(`click`,function(){jh(a);let d=NS(51);return Uh(d.toggle())}),ba(36,`ui-icon`,21),da(37,`kbd`,22),WS(38,`Ctrl K`),yd()(),da(39,`button`,23),oC(40,`t`),oC(41,`t`),Ta(`click`,function(){return i.toggleLocale()}),WS(42),yd(),da(43,`button`,23),oC(44,`t`),oC(45,`t`),Ta(`click`,function(){return i.cycleScheme()}),ba(46,`ui-icon`,11),yd()()(),da(47,`main`,24),uS(48,Ze,7,6,`div`,25),ba(49,`router-outlet`),yd()()(),ba(50,`ui-command-palette`,null,0)(52,`ui-toast-outlet`)(53,`ui-confirm-host`)}t&2&&(hD(),Jm(sC(2,29,`nav.skip`)),hD(3),Ar(`data-collapsed`,i.collapsed()||null)(`aria-label`,sC(5,31,`nav.primary`)),hD(4),Wm(`size`,18),hD(3),Jm(i.store.forgeName()),hD(2),Jm(sC(14,33,`app.tagline`)),hD(2),Ar(`aria-label`,sC(16,35,`nav.primary`)),hD(2),mS(i.visibleNav()),hD(2),Wm(`title`,sC(20,37,`nav.shortcut.collapse`)),Ar(`aria-label`,sC(21,39,i.collapsed()?`nav.expand`:`nav.collapse`))(`aria-expanded`,!i.collapsed()),hD(3),Wm(`name`,i.collapsed()?`chevron-right`:`chevron-left`)(`size`,14),hD(4),Wm(`title`,i.store.status()),Ar(`data-state`,i.store.status()),hD(),Ar(`title`,i.store.workspace()?.root??null),hD(),Wm(`size`,14),hD(),Dd(` `,i.store.workspace()?.name??sC(30,41,`dashboard.noWorkspace`),` `),hD(2),fS(i.store.federated()?31:-1),hD(2),Wm(`title`,sC(34,43,`command.open`)+` — Ctrl K`),Ar(`aria-label`,sC(35,45,`command.open`)+` — Ctrl K`),hD(3),Wm(`size`,15),hD(3),Wm(`title`,sC(40,47,`settings.language`)),Ar(`aria-label`,(i.i18n.locale()===`pt-BR`?`PT`:`EN`)+` — `+sC(41,49,`settings.language`)),hD(3),Dd(` `,i.i18n.locale()===`pt-BR`?`PT`:`EN`,` `),hD(),Wm(`title`,sC(44,51,`settings.theme`)),Ar(`aria-label`,sC(45,53,`settings.theme`)),hD(3),Wm(`name`,i.schemeIcon())(`size`,15),hD(2),fS(i.store.status()===`offline`||i.store.status()===`error`?48:-1))},dependencies:[gf,yc,a_,cE,X,I,L,aE],styles:[`[_nghost-%COMP%]{display:contents}`]})};tT(W,Ne).catch(n=>console.error(n));export{w as a,a as c,n$1 as i,n,f$1 as o,g$1 as r,y as s,g as t}; \ No newline at end of file diff --git a/portal/assets/main-XW2ZMSO5.js b/portal/assets/main-XW2ZMSO5.js new file mode 100644 index 0000000..920854e --- /dev/null +++ b/portal/assets/main-XW2ZMSO5.js @@ -0,0 +1 @@ +import{i as m,r as l}from"./chunk-BYYLUO5t.js";import{$ as dS,At as qm,Bt as tn,D as Oo,Et as p$1,F as Sa,G as Zm,H as Xm,I as T,J as aC,Jt as vd,Kt as vI,M as RT,Mt as rE,P as SS,Q as cE,Qt as yS,S as Ma,St as no,T as NT,Vt as tv,Wt as u_,Xt as xT,Y as aE,Yt as ve,Z as bd,_ as Jn,at as ey,b as LU,ct as hD,dt as h_,en as yf,et as da,ft as hn,g as Id,gt as k$1,h as Ic,i as Ar,it as ei,j as RS,k as Ow,kt as qS,lt as hE,m as I_,n as A,nn as zn,p as Hh,qt as vc,s as DS,st as g_,t as $,tn as ze$1,u as Ed,ut as hS,vt as lC,w as NS,wt as oT,y as Km,yt as mS,z as Vh}from"./chunk-BefGrJ9d.js";var g$2=[`page`,`forge`,`capability`,`skill`,`agent`,`mcp`,`host`,`operation`,`doc`,`error`];var o={page:0,forge:1,capability:2,skill:2,agent:2,mcp:2,host:2,operation:2,doc:2,error:2};var S={page:`command.kind.page`,forge:`command.kind.forge`,capability:`command.kind.capability`,skill:`command.kind.skill`,agent:`command.kind.agent`,mcp:`command.kind.mcp`,host:`command.kind.host`,operation:`command.kind.operation`,doc:`command.kind.doc`,error:`command.kind.error`};var a=r=>r.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().replace(/\s+/g,` `).trim();var i=(r,t)=>rt?1:0;function h$1(r){return m(l({},r),{normLabel:a(r.label),norm:a(`${r.label} ${r.sublabel??``}`)})}function u(r,t){return r.normLabel===t?0:r.normLabel.startsWith(t)?1:r.norm.includes(t)||r.kind===`doc`?2:-1}var p=r=>({id:r.id,kind:r.kind,label:r.label,sublabel:r.sublabel,icon:r.icon,route:r.route,url:r.url,run:r.run});function k(r,t,s=60){let l=a(r);if(!l)return t.slice().sort((n,e)=>o[n.kind]-o[e.kind]||i(n.normLabel,e.normLabel)||i(n.id,e.id)).slice(0,s).map(p);let c=[];for(let n of t){let e=u(n,l);e>=0&&c.push({e:n,s:e})}return c.sort((n,e)=>n.s-e.s||o[n.e.kind]-o[e.e.kind]||i(n.e.normLabel,e.e.normLabel)||i(n.e.id,e.e.id)),c.slice(0,s).map(n=>p(n.e))}var K=[`panel`];function V(o,n){if(o&1){let e=DS();Ed(0,`div`,2),Zm(`click`,function(){Hh(e);let i=SS();return Vh(i.cancel())}),Ed(1,`div`,3,0),Zm(`click`,function(i){return i.stopPropagation()})(`keydown`,function(i){Hh(e);let f=SS();return Vh(f.onKeydown(i))}),Ed(3,`h2`,4),qS(4),Id(),Ed(5,`p`,5),qS(6),Id(),Ed(7,`div`,6)(8,`button`,7),Zm(`click`,function(){Hh(e);let i=SS();return Vh(i.cancel())}),qS(9),Id(),Ed(10,`button`,7),Zm(`click`,function(){Hh(e);let i=SS();return Vh(i.accept())}),qS(11),Id()()()()}if(o&2){let e=n,t=SS();hD(4),ey(t.text(e.title)),hD(2),ey(t.text(e.message)),hD(3),bd(` `,t.text(e.cancelKey??`state.cancel`),` `),hD(),Xm(`btn--primary`,!e.danger)(`cd__danger`,!!e.danger),hD(),bd(` `,t.text(e.confirmKey??`state.confirm`),` `)}}var y=class o{_pending=k$1(null);pending=this._pending.asReadonly();ask(n){return new Promise(e=>{this._pending()?.resolve(!1),this._pending.set(m(l({},n),{resolve:e}))})}settle(n){let e=this._pending();e&&(this._pending.set(null),e.resolve(n))}static ɵfac=function(e){return new(e||o)};static ɵprov=T({token:o,factory:o.ɵfac,providedIn:`root`})};var F=`button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])`;var L=class o{confirm=p$1(y);i18n=p$1(Ic);panel=LU(`panel`);isOpen=!1;prevFocus=null;constructor(){Oo(()=>{let n=this.confirm.pending()!==null;if(n&&!this.isOpen)this.isOpen=!0,this.prevFocus=document.activeElement,setTimeout(()=>this.focusInitial());else if(!n&&this.isOpen){this.isOpen=!1;let e=this.prevFocus;this.prevFocus=null,setTimeout(()=>{e?.isConnected&&e.focus()})}})}text(n){let e=this.i18n.t(n);return e.startsWith(`⟪`)?n:e}accept(){this.confirm.settle(!0)}cancel(){this.confirm.settle(!1)}onKeydown(n){if(n.key===`Escape`){n.preventDefault(),n.stopPropagation(),this.cancel();return}if(n.key!==`Tab`)return;let e=this.panel()?.nativeElement;if(!e)return;let t=[...e.querySelectorAll(F)].filter(D=>!D.hasAttribute(`disabled`));if(t.length===0){n.preventDefault(),e.focus();return}let i=t[0],f=t[t.length-1],u=document.activeElement;(n.shiftKey?u===i||!e.contains(u):u===f||!e.contains(u))&&(n.preventDefault(),(n.shiftKey?f:i).focus())}focusInitial(){let n=this.panel()?.nativeElement;if(!n)return;let e=n.querySelectorAll(`.cd__actions .btn`);((this.confirm.pending()?.danger?e[0]:e[e.length-1])??n).focus()}static ɵfac=function(e){return new(e||o)};static ɵcmp=ei({type:o,selectors:[[`ui-confirm-host`]],viewQuery:function(e,t){e&1&&Km(t.panel,K,5),e&2&&NS()},hostBindings:function(e,t){e&1&&Ma(`keydown.escape`,function(){return t.cancel()},Ow)},decls:1,vars:1,consts:[[`panel`,``],[1,`cd`],[1,`cd`,3,`click`],[`role`,`dialog`,`aria-modal`,`true`,`aria-labelledby`,`ui-confirm-title`,`aria-describedby`,`ui-confirm-desc`,`tabindex`,`-1`,1,`cd__panel`,3,`click`,`keydown`],[`id`,`ui-confirm-title`,1,`cd__title`],[`id`,`ui-confirm-desc`,1,`cd__msg`],[1,`cd__actions`],[`type`,`button`,1,`btn`,3,`click`]],template:function(e,t){if(e&1&&dS(0,V,12,8,`div`,1),e&2){let i;hS((i=t.confirm.pending())?0:-1,i)}},styles:[`.cd[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:var(--%NS%z-dialog, 100);display:grid;place-items:center;padding:var(--%NS%space-4);background:var(--%NS%scrim)}.cd__panel[_ngcontent-%COMP%]{width:min(26rem,100%);padding:var(--%NS%space-5);background:var(--%NS%bg-elevated);border:1px solid var(--%NS%border-strong);border-radius:var(--%NS%radius-lg);box-shadow:var(--%NS%elev-pop);animation:_ngcontent-%COMP%_cd-in var(--%NS%fg-motion-med) var(--%NS%ease-out) both}.cd__panel[_ngcontent-%COMP%]:focus{outline:none}.cd__title[_ngcontent-%COMP%]{margin:0 0 var(--%NS%space-2);font-size:var(--%NS%font-lg)}.cd__msg[_ngcontent-%COMP%]{margin:0;color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm);max-width:60ch}.cd__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:var(--%NS%space-2);margin-top:var(--%NS%space-5)}.cd__danger[_ngcontent-%COMP%]{background:var(--%NS%error);border-color:var(--%NS%error);color:var(--%NS%on-color)}.cd__danger[_ngcontent-%COMP%]:hover{background:color-mix(in srgb,var(--%NS%error) 86%,black);border-color:color-mix(in srgb,var(--%NS%error) 86%,black);box-shadow:0 2px 10px color-mix(in srgb,var(--%NS%error) 40%,transparent)}@keyframes _ngcontent-%COMP%_cd-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){html:not([data-motion="full"])[_nghost-%COMP%] .cd__panel[_ngcontent-%COMP%], html:not([data-motion="full"]) [_nghost-%COMP%] .cd__panel[_ngcontent-%COMP%]{animation:none}}`]})};var D=(i,e)=>e.id;function E(i,e){if(i&1){let t=DS();Ed(0,`div`,1)(1,`p`,2),qS(2),Id(),Ed(3,`button`,3),aC(4,`t`),Zm(`click`,function(){let o=Hh(t).$implicit,r=SS();return Vh(r.toast.dismiss(o.id))}),Ed(5,`span`,4),qS(6,`×`),Id()()()}if(i&2){let t=e.$implicit;Ar(`data-kind`,t.kind)(`role`,t.kind===`error`?`alert`:null),hD(2),ey(t.text),hD(),Ar(`aria-label`,lC(4,4,`notify.dismiss`))}}var R=3;var U={success:4500,info:4500,error:7e3};var f$1=class i{i18n=p$1(Ic);nextId=1;timers=new Map;_items=k$1([]);items=this._items.asReadonly();show(e,t=`info`,n){let o={id:this.nextId++,text:this.resolve(e,n?.params),kind:t},r=[...this._items(),o];for(;r.length>R;){let g=r.shift();g&&this.clearTimer(g.id)}return this._items.set(r),this.timers.set(o.id,setTimeout(()=>this.dismiss(o.id),U[t])),o.id}dismiss(e){this.clearTimer(e),this._items.update(t=>t.filter(n=>n.id!==e))}ngOnDestroy(){for(let e of this.timers.values())clearTimeout(e);this.timers.clear()}clearTimer(e){let t=this.timers.get(e);t!==void 0&&(clearTimeout(t),this.timers.delete(e))}resolve(e,t){let n=this.i18n.t(e,B(t));return n.startsWith(`⟪`)?e:n}static ɵfac=function(t){return new(t||i)};static ɵprov=T({token:i,factory:i.ɵfac,providedIn:`root`})};function B(i){if(!i)return;let e={};for(let[t,n]of Object.entries(i))typeof n==`string`||typeof n==`number`?e[t]=n:typeof n==`boolean`&&(e[t]=String(n));return e}var I=class i{toast=p$1(f$1);dismissNewest(){let e=this.toast.items(),t=e[e.length-1];t&&this.toast.dismiss(t.id)}static ɵfac=function(t){return new(t||i)};static ɵcmp=ei({type:i,selectors:[[`ui-toast-outlet`]],hostBindings:function(t,n){t&1&&Ma(`keydown.escape`,function(){return n.dismissNewest()},Ow)},decls:4,vars:3,consts:[[`role`,`region`,`aria-live`,`polite`,1,`toasts`],[1,`toast`],[1,`toast__text`],[`type`,`button`,1,`toast__close`,3,`click`],[`aria-hidden`,`true`]],template:function(t,n){t&1&&(Ed(0,`div`,0),aC(1,`t`),mS(2,E,7,6,`div`,1,D),Id()),t&2&&(Ar(`aria-label`,lC(1,1,`notify.region`)),hD(2),yS(n.toast.items()))},dependencies:[aE],styles:[`[_nghost-%COMP%]{position:fixed;right:var(--%NS%space-4);bottom:var(--%NS%space-4);z-index:var(--%NS%z-toast, 120);pointer-events:none}.toasts[_ngcontent-%COMP%]{display:grid;gap:var(--%NS%space-2);width:min(360px,calc(100vw - 2 * var(--%NS%space-4)))}.toast[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:var(--%NS%space-3);padding:var(--%NS%space-3);padding-left:calc(var(--%NS%space-3) + 3px);background:color-mix(in srgb,var(--%NS%toast-c, var(--%NS%info)) 6%,var(--%NS%bg-elevated));border:1px solid var(--%NS%border-strong);border-left:3px solid var(--%NS%toast-c, var(--%NS%info));border-radius:var(--%NS%radius-lg);box-shadow:var(--%NS%elev-pop);color:var(--%NS%fg);pointer-events:auto;animation:_ngcontent-%COMP%_toast-in var(--%NS%fg-motion-med) var(--%NS%ease-out) both}.toast[_ngcontent-%COMP%]:before{content:"";width:8px;height:8px;border-radius:50%;margin-top:6px;flex:none;background:var(--%NS%toast-c, var(--%NS%info));box-shadow:0 0 0 3px color-mix(in srgb,var(--%NS%toast-c, var(--%NS%info)) 20%,transparent)}.toast[data-kind=success][_ngcontent-%COMP%]{--%NS%toast-c: var(--%NS%ok)}.toast[data-kind=error][_ngcontent-%COMP%]{--%NS%toast-c: var(--%NS%error)}.toast__text[_ngcontent-%COMP%]{flex:1;margin:0;font-size:var(--%NS%font-sm);line-height:1.4;overflow-wrap:anywhere}.toast__close[_ngcontent-%COMP%]{display:grid;place-items:center;width:26px;height:26px;flex:none;padding:0;border:0;border-radius:var(--%NS%radius-sm);background:transparent;color:var(--%NS%fg-muted);font-size:1rem;line-height:1;cursor:pointer;transition:color var(--%NS%motion-fast),background var(--%NS%motion-fast)}.toast__close[_ngcontent-%COMP%]:hover{color:var(--%NS%fg);background:var(--%NS%bg-hover)}@keyframes _ngcontent-%COMP%_toast-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){html:not([data-motion="full"])[_nghost-%COMP%] .toast[_ngcontent-%COMP%], html:not([data-motion="full"]) [_nghost-%COMP%] .toast[_ngcontent-%COMP%]{animation:none}}`]})};function w(t){t||(t=p$1(ve));let i=new A(e=>{if(t.destroyed){e.next();return}return t.onDestroy(e.next.bind(e))});return e=>e.pipe(no(i))}var n$1=class extends Error{transport;status;body;constructor(t,e){let r=e?.message??`request failed (${t||`network`})`;super(r),this.status=t,this.transport=t===0,this.body={code:e?.code??(t===0?`PORTAL-UNREACHABLE`:`HTTP-${t}`),message:r,message_key:e?.message_key??(t===0?`error.unreachable`:void 0),details:e?.details,severity:e?.severity??`error`,retryable:e?.retryable??(t===0||t>=500),action:e?.action}}};var g$1=class i{http=p$1(tv);get(t){return this.http.get(`/api/v1${t}`).pipe($(e=>this.unwrap(e)))}post(t,e){return this.http.post(`/api/v1${t}`,e).pipe($(r=>this.unwrap(r)))}unwrap(t){if(t.schema!==`forge/PortalApi/1`)throw new n$1(0,{code:`PORTAL-BAD-ENVELOPE`,message:`unexpected response schema`});if(t.error)throw new n$1(200,t.error);if(t.data===void 0)throw new n$1(0,{code:`PORTAL-EMPTY-DATA`,message:`envelope carried no data`});return t.data}bootstrap(){return this.get(`/bootstrap`)}health(){return this.get(`/health`)}capabilities(){return this.get(`/capabilities`)}installationStatus(){return this.get(`/installation/status`)}accountEnvironment(){return this.get(`/environment`)}installationPlan(t){return this.post(`/installation/plan`,t)}installationApply(t,e,r=`apply`){return this.post(`/installation/apply`,{plan:t,plan_token:e,confirm:r})}installationRepair(){return this.post(`/installation/repair`,{confirm:`repair`})}installationUninstall(){return this.post(`/installation/uninstall`,{confirm:`uninstall`})}federation(){return this.get(`/federation`)}registryState(){return this.get(`/registry/state`)}registryPlan(t){return this.post(`/registry/plan`,t)}registryExecute(t){return this.post(`/registry/execute`,{action:t.action,forge:t.forge,plan:t.plan,plan_token:t.planToken,confirm:`execute`})}federationPlan(t){return this.post(`/federation/plan`,t)}federationInstallAuto(t,e){return this.post(`/federation/install-auto`,{plan:t,plan_token:e,confirm:`install`})}profiles(){return this.get(`/profiles`)}profilesApply(t){return this.post(`/profiles/apply`,{profile:t,confirm:`apply`})}hosts(){return this.get(`/hosts`)}hostsLaunch(t){return this.post(`/hosts/launch`,{host:t})}mcpServers(){return this.get(`/mcp/servers`)}mcpVerify(){return this.post(`/mcp/verify`,{confirm:`verify`})}skills(){return this.get(`/skills`).pipe($(t=>t.map(e=>m(l({},e),{hosts:e.hosts??[]}))))}agents(){return this.get(`/agents`).pipe($(t=>t.map(e=>m(l({},e),{domains:e.domains??[],skills:e.skills??[],hosts:e.hosts??[]}))))}tasks(){return this.get(`/tasks`)}metrics(){return this.get(`/metrics`)}events(t){let e=new URLSearchParams;t?.correlationId&&e.set(`correlation_id`,t.correlationId),t?.type&&e.set(`type`,t.type),t?.status&&e.set(`status`,t.status),t?.limit&&t.limit>0&&e.set(`limit`,String(t.limit));let r=e.size?`?${e.toString()}`:``;return this.get(`/events${r}`)}taskEvents(t){return this.get(`/tasks/${encodeURIComponent(t)}/events`)}versions(){return this.get(`/versions`)}lab(){return this.get(`/lab`)}tasksPlan(t){return this.post(`/tasks/plan`,t)}tasksExecute(t,e){return this.post(`/tasks/execute`,{plan:t,plan_token:e,confirm:`execute`})}graphs(){return this.get(`/graphs`)}docsSearch(t,e=20){return this.get(`/docs/search?q=${encodeURIComponent(t)}&limit=${e}`)}static ɵfac=function(e){return new(e||i)};static ɵprov=T({token:i,factory:i.ɵfac,providedIn:`root`})};var h=`forge-portal.scheme`;var f=[`the-forge`,`spark-forge-aws`,`spark-forge-azure`,`api-forge`,`platform-forge`,`forge-doctor-data`,`forge-doctor-api`];var n=class o{scheme=k$1(`dark`);forge=k$1(`the-forge`);media=globalThis.matchMedia?.(`(prefers-color-scheme: dark)`);constructor(){try{let e=globalThis.localStorage?.getItem(h);(e===`light`||e===`dark`||e===`system`)&&this.scheme.set(e)}catch{}this.media?.addEventListener(`change`,()=>this.apply()),this.apply()}setScheme(e){this.scheme.set(e);try{globalThis.localStorage?.setItem(h,e)}catch{}this.apply()}setForge(e){this.forge.set(this.normalizeForge(e)),this.apply()}normalizeForge(e){return f.includes(e)?e:`the-forge`}apply(){let e=globalThis.document?.documentElement;if(!e)return;let t=this.scheme()===`system`?this.media?.matches?`dark`:`light`:this.scheme();e.dataset.scheme=t,e.dataset.forge=this.forge()}static ɵfac=function(t){return new(t||o)};static ɵprov=T({token:o,factory:o.ɵfac,providedIn:`root`})};var g=class o{api=p$1(g$1);theme=p$1(n);status=k$1(`booting`);descriptor=k$1(null);health=k$1(null);accountEnvironment=k$1(null);lastError=k$1(null);refreshedAt=k$1(null);forgeId=tn(()=>this.descriptor()?.forge_id??`the-forge`);forgeName=tn(()=>this.descriptor()?.forge_name??`Forge Portal`);federated=tn(()=>this.descriptor()?.federated??!1);capabilities=tn(()=>this.descriptor()?.capabilities??[]);nav=tn(()=>this.descriptor()?.nav??[]);workspace=tn(()=>this.descriptor()?.workspace??null);hasCapability(e){return this.capabilities().find(m=>m.id===e)?.state===`supported`}async bootstrap(){this.status.set(`booting`);try{let e=await hE(this.api.bootstrap());this.applyBootstrap(e)}catch(e){let t=e instanceof n$1?e:new n$1(0);this.lastError.set(t),this.status.set(t.transport?`offline`:`error`)}}async refreshHealth(){try{let e=await hE(this.api.installationStatus());this.health.set(e),this.accountEnvironment.set(e.account_environment??this.accountEnvironment()),this.refreshedAt.set(new Date().toISOString()),this.lastError.set(null)}catch(e){let t=e instanceof n$1?e:new n$1(0);this.lastError.set(t),t.transport&&this.status.set(`offline`)}}applyBootstrap(e){this.descriptor.set(e.descriptor),this.health.set(e.health),this.accountEnvironment.set(e.account_environment??e.health.account_environment??null),this.lastError.set(null),this.refreshedAt.set(new Date().toISOString()),this.theme.setForge(e.descriptor.theme??e.descriptor.forge_id),this.status.set(e.health.state===`DEGRADED`?`degraded`:`ready`)}static ɵfac=function(t){return new(t||o)};static ɵprov=T({token:o,factory:o.ɵfac,providedIn:`root`})};var Ee=[{path:``,pathMatch:`full`,redirectTo:`dashboard`},{path:`dashboard`,loadComponent:()=>import(`./chunk-tu0a_CEa.js`).then(n=>n.DashboardPage)},{path:`install`,loadComponent:()=>import(`./chunk-DgMFvN4-.js`).then(n=>n.InstallPage)},{path:`config`,loadComponent:()=>import(`./chunk-BkDXoz47.js`).then(n=>n.ConfigPage)},{path:`forges`,loadComponent:()=>import(`./chunk-CDQZIMhH.js`).then(n=>n.ExplorerPage)},{path:`forges/:id`,loadComponent:()=>import(`./chunk-IG0wRxY1.js`).then(n=>n.ForgeDetailPage)},{path:`match`,loadComponent:()=>import(`./chunk-ctcjU5we.js`).then(n=>n.MatchPage)},{path:`federation`,loadComponent:()=>import(`./chunk-NOjQgxo7.js`).then(n=>n.FederationPage)},{path:`profiles`,loadComponent:()=>import(`./chunk-92Xoau85.js`).then(n=>n.ProfilesPage)},{path:`hosts`,loadComponent:()=>import(`./chunk-BF4IykBc.js`).then(n=>n.HostsPage)},{path:`mcp`,loadComponent:()=>import(`./chunk-BYyT8UUn.js`).then(n=>n.McpPage)},{path:`skills`,loadComponent:()=>import(`./chunk-DNCrHYu6.js`).then(n=>n.SkillsPage)},{path:`agents`,loadComponent:()=>import(`./chunk-fHAvBZdv.js`).then(n=>n.AgentsPage)},{path:`tasks`,loadComponent:()=>import(`./chunk-CM-MlJlQ.js`).then(n=>n.TasksPage)},{path:`graph`,loadComponent:()=>import(`./chunk-D4lhtoQa.js`).then(n=>n.GraphPage)},{path:`observe`,loadComponent:()=>import(`./chunk-D5z0OfqY.js`).then(n=>n.ObservePage)},{path:`execution`,loadComponent:()=>import(`./chunk-hh6-Palp.js`).then(n=>n.ExecutionPage)},{path:`lab`,loadComponent:()=>import(`./chunk-N-Oj8_UM.js`).then(n=>n.LabPage)},{path:`versions`,loadComponent:()=>import(`./chunk-BflJ-4CO.js`).then(n=>n.VersionsPage)},{path:`knowledge`,loadComponent:()=>import(`./chunk-CR0uEECS.js`).then(n=>n.KnowledgePage)},{path:`guide`,loadComponent:()=>import(`./chunk-CygOa7EH.js`).then(n=>n.GuidePage)},{path:`settings`,loadComponent:()=>import(`./chunk-B_bDidf_.js`).then(n=>n.SettingsPage)},{path:`**`,redirectTo:`dashboard`}];var q=class n{tokenSignal=k$1(null);token=this.tokenSignal.asReadonly();constructor(){let e=new URL(globalThis.location.href),t=e.searchParams.get(`forge_session`);if(t){this.tokenSignal.set(t),e.searchParams.delete(`forge_session`),globalThis.history.replaceState(null,``,e.toString());return}let i=e.searchParams.get(`dev_session`);i&&this.tokenSignal.set(i)}hasSession(){return this.tokenSignal()!==null}static ɵfac=function(t){return new(t||n)};static ɵprov=T({token:n,factory:n.ɵfac,providedIn:`root`})};var Z=0;function De(){return Z=(Z+1)%65535,`ui-${Date.now().toString(36)}-${Z.toString(36)}`}var we=(n,e)=>{if(!n.url.startsWith(`/api/`))return e(n);let t=p$1(q),i=n.headers.set(`X-Correlation-Id`,De()),a=t.token();return a&&(i=i.set(`X-Forge-Session`,a)),n.method!==`GET`&&!n.headers.has(`Content-Type`)&&(i=i.set(`Content-Type`,`application/json`)),e(n.clone({headers:i,withCredentials:!0})).pipe($(r=>{if(r.type===4&&r.body&&typeof r.body==`object`){let d=r.body;if(d.schema===`forge/PortalApi/1`&&d.error)throw new n$1(r.status,d.error)}return r}),hn(r=>{if(r instanceof n$1)throw r;if(r instanceof zn){let d=r.error;throw new n$1(r.status,d?.error??void 0)}throw new n$1(0)}))};var Ne={providers:[vI(),h_(Ee,I_(),g_({anchorScrolling:`enabled`,scrollPositionRestoration:`enabled`})),NT(xT(),RT([we]))]};var Me=[{route:`/dashboard`,labelKey:`nav.dashboard`,icon:`dashboard`},{route:`/guide`,labelKey:`nav.guide`,icon:`guide`},{route:`/install`,labelKey:`nav.install`,icon:`install`},{route:`/federation`,labelKey:`nav.federation`,icon:`network`},{route:`/forges`,labelKey:`nav.forges`,icon:`gem`},{route:`/profiles`,labelKey:`nav.profiles`,icon:`profiles`},{route:`/hosts`,labelKey:`nav.hosts`,icon:`hosts`},{route:`/mcp`,labelKey:`nav.mcp`,icon:`mcp`},{route:`/skills`,labelKey:`nav.skills`,icon:`skills`},{route:`/agents`,labelKey:`nav.agents`,icon:`agents`},{route:`/match`,labelKey:`nav.match`,icon:`compass`},{route:`/tasks`,labelKey:`nav.tasks`,icon:`tasks`,capability:`tasks`},{route:`/graph`,labelKey:`nav.graph`,icon:`graph`,capability:`graph`},{route:`/observe`,labelKey:`nav.observe`,icon:`pulse`},{route:`/execution`,labelKey:`nav.execution`,icon:`execution`},{route:`/lab`,labelKey:`nav.lab`,icon:`diff`},{route:`/versions`,labelKey:`nav.versions`,icon:`history`},{route:`/knowledge`,labelKey:`nav.knowledge`,icon:`knowledge`},{route:`/settings`,labelKey:`nav.settings`,icon:`settings`},{route:`/config`,labelKey:`nav.config`,icon:`settings`}];var G=class n$2{api=p$1(g$1);store=p$1(g);theme=p$1(n);i18n=p$1(Ic);results=k$1([]);loading=k$1(!1);searched=k$1(!1);indexFailures=k$1([]);docsFailed=k$1(!1);unverified=tn(()=>{let e=new Set(this.indexFailures());return this.docsFailed()&&e.add(`doc`),g$2.filter(t=>e.has(t))});cache=null;building=null;bump=0;seq=0;timer=null;lastQuery=``;constructor(){p$1(ve).onDestroy(()=>this.clearTimer())}setQuery(e){if(this.lastQuery=e,this.clearTimer(),!e.trim()){this.searchNow(``);return}this.timer=setTimeout(()=>{this.timer=null,this.searchNow(e)},250)}async searchNow(e){let t=++this.seq;this.lastQuery=e,this.searched.set(!0),this.loading.set(!0);try{let i=await this.ensureIndex(),a=e.trim()?await this.fetchDocs(e.trim(),t):[];if(t!==this.seq)return;this.results.set(k(e.trim(),[...i,...a]))}finally{t===this.seq&&this.loading.set(!1)}}refresh(){this.bump++,this.cache=null,this.docsFailed.set(!1),this.searched()&&this.searchNow(this.lastQuery)}version(){return`${this.store.refreshedAt()??`never`}|${this.i18n.locale()}|${this.bump}`}async ensureIndex(){let e=this.version();if(this.cache?.version===e)return this.cache.entries;this.building??=this.buildIndex().finally(()=>this.building=null);let t=await this.building;return this.version()!==e?this.ensureIndex():(this.cache={version:e,entries:t.entries},this.indexFailures.set(t.failed),t.entries)}async buildIndex(){let e=[],t=new Set;try{e.push(...this.pageEntries())}catch{t.add(`page`)}try{e.push(...this.capabilityEntries())}catch{t.add(`capability`)}let i=async(a,r)=>{try{e.push(...await r())}catch(d){d instanceof n$1&&d.status===404||t.add(a)}};return await Promise.all([i(`forge`,async()=>(await hE(this.api.federation())).specialists.map(a=>this.forgeEntry(a))),i(`skill`,async()=>(await hE(this.api.skills())).map(a=>this.skillEntry(a))),i(`agent`,async()=>(await hE(this.api.agents())).map(a=>this.agentEntry(a))),i(`mcp`,async()=>(await hE(this.api.mcpServers())).map(a=>this.mcpEntry(a))),i(`host`,async()=>(await hE(this.api.hosts())).map(a=>this.hostEntry(a))),(async()=>{try{e.push(...this.taskEntries(await hE(this.api.tasks())))}catch(a){a instanceof n$1&&a.status===404||(t.add(`operation`),t.add(`error`))}})()]),{entries:e,failed:g$2.filter(a=>t.has(a))}}async fetchDocs(e,t){try{let i=await hE(this.api.docsSearch(e));return t===this.seq&&this.docsFailed.set(!1),i.map(a=>this.docEntry(a))}catch(i){return t===this.seq&&this.docsFailed.set(!(i instanceof n$1&&i.status===404)),[]}}capVisible(e){if(!e)return!0;let t=this.store.capabilities();return t.length===0?!0:t.some(i=>i.id===e&&i.state!==`unsupported`)}pageEntries(){let e=[],t=new Set;for(let i of this.store.nav())!i.route||t.has(i.route)||!this.capVisible(i.requires_capability)||(t.add(i.route),e.push(h$1({id:`page:${i.route}`,kind:`page`,label:this.i18n.t(i.label_key),sublabel:i.route,icon:i.icon||`dashboard`,route:i.route})));for(let i of Me)t.has(i.route)||!this.capVisible(i.capability)||(t.add(i.route),e.push(h$1({id:`page:${i.route}`,kind:`page`,label:this.i18n.t(i.labelKey),sublabel:i.route,icon:i.icon,route:i.route})));return e.push(h$1({id:`act:refresh`,kind:`page`,label:this.i18n.t(`state.refresh`),icon:`refresh`,run:()=>{this.store.refreshHealth()}}),h$1({id:`act:theme`,kind:`page`,label:this.i18n.t(`settings.theme`),icon:`contrast`,run:()=>this.cycleTheme()}),h$1({id:`act:locale`,kind:`page`,label:this.i18n.t(`settings.language`),icon:`globe`,run:()=>this.toggleLocale()})),e}capabilityEntries(){return this.store.capabilities().map(e=>h$1({id:`cap:${e.id}`,kind:`capability`,label:e.label_key?this.i18n.t(e.label_key):e.id,sublabel:e.state,icon:`shield-check`,route:`/dashboard`}))}forgeEntry(e){return h$1({id:`forge:${e.provider}`,kind:`forge`,label:e.provider,sublabel:[e.state,e.status].filter(Boolean).join(` · `)||void 0,icon:`gem`,route:`/forges/${encodeURIComponent(e.provider)}`})}skillEntry(e){return h$1({id:`skill:${e.id}`,kind:`skill`,label:e.name||e.id,sublabel:[e.domain,e.state].filter(Boolean).join(` · `)||void 0,icon:`skills`,route:`/skills`})}agentEntry(e){return h$1({id:`agent:${e.id}`,kind:`agent`,label:e.name||e.id,sublabel:e.role||void 0,icon:`agents`,route:`/agents`})}mcpEntry(e){return h$1({id:`mcp:${e.id}`,kind:`mcp`,label:e.id,sublabel:[e.state,e.host].filter(Boolean).join(` · `)||void 0,icon:`mcp`,route:`/mcp`})}hostEntry(e){return h$1({id:`host:${e.host}`,kind:`host`,label:e.host,sublabel:[e.integration,e.version].filter(Boolean).join(` · `)||void 0,icon:`hosts`,route:`/hosts`})}taskEntries(e){let t=[];for(let i of e){t.push(h$1({id:`op:${i.id}`,kind:`operation`,label:i.label||i.verb,sublabel:[i.verb,i.stage].filter(Boolean).join(` · `)||void 0,icon:`tasks`,route:`/tasks`}));let a=i.receipt?.status;(i.refusal||typeof a==`string`&&a!==`ok`)&&t.push(h$1({id:`err:${i.id}`,kind:`error`,label:i.refusal??(i.label||i.verb),sublabel:[i.verb,i.stage].filter(Boolean).join(` · `)||void 0,icon:`alert`,route:`/tasks`}))}return t}docEntry(e){return h$1(l({id:`doc:${e.path}`,kind:`doc`,label:e.title||e.path,sublabel:e.category||e.path||void 0,icon:`knowledge`},e.url?{url:e.url}:{route:`/knowledge`}))}cycleTheme(){let e=this.theme.scheme()===`system`?`light`:this.theme.scheme()===`light`?`dark`:`system`;this.theme.setScheme(e)}toggleLocale(){this.i18n.applyPreference(this.i18n.locale()===`pt-BR`?`en`:`pt-BR`)}clearTimer(){this.timer&&(clearTimeout(this.timer),this.timer=null)}static ɵfac=function(t){return new(t||n$2)};static ɵprov=T({token:n$2,factory:n$2.ɵfac,providedIn:`root`})};var Ae=[`inp`];var Ie=[`list`];var Be=[`panel`];var Re=(n,e)=>e.kind;var Fe=(n,e)=>e.id;function He(n,e){n&1&&Sa(0,`ui-icon`,14),n&2&&qm(`size`,11)}function $e(n,e){if(n&1){let t=DS();da(0,`button`,13),aC(1,`t`),Ma(`click`,function(){let a=Hh(t).$implicit,r=SS(2);return Vh(r.setFilter(a.kind))})(`keydown`,function(a){let r=Hh(t).$index,d=SS(2);return Vh(d.onChipKey(a,r))}),qS(2),aC(3,`t`),dS(4,He,1,1,`ui-icon`,14),vd()}if(n&2){let t=e.$implicit,i=SS(2);qm(`tabindex`,i.filter()===t.kind?0:-1),Ar(`aria-checked`,i.filter()===t.kind)(`data-active`,i.filter()===t.kind||null)(`data-unverified`,t.unverified||null)(`title`,t.unverified?lC(1,7,`command.unverified`):null),hD(2),bd(` `,lC(3,9,t.labelKey),` `),hD(2),hS(t.unverified?4:-1)}}function Le(n,e){n&1&&(da(0,`li`,10),qS(1),aC(2,`t`),vd()),n&2&&(hD(),ey(lC(2,1,`command.searching`)))}function Ve(n,e){if(n&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),n&2){let t=SS().$implicit,i=SS(2);hD(),ey(lC(2,1,i.labels[t.kind]))}}function Oe(n,e){if(n&1&&(da(0,`span`,19),qS(1),vd()),n&2){let t=SS().$implicit;hD(),ey(t.sublabel)}}function ze(n,e){if(n&1){let t=DS();dS(0,Ve,3,3,`li`,15),da(1,`li`,16),Ma(`click`,function(){let a=Hh(t).$implicit,r=SS(2);return Vh(r.run(a))})(`mousemove`,function(){let a=Hh(t).$index,r=SS(2);return Vh(r.active.set(a))}),Sa(2,`ui-icon`,17),da(3,`span`,18),qS(4),vd(),dS(5,Oe,2,1,`span`,19),vd()}if(n&2){let t=e.$implicit,i=e.$index,a=SS(2);hS(i===0||a.flat()[i-1].kind!==t.kind?0:-1),hD(),qm(`id`,`cp-opt-`+i),Ar(`aria-selected`,i===a.idx())(`data-active`,i===a.idx()||null),hD(),qm(`name`,t.icon)(`size`,15),hD(2),ey(t.label),hD(),hS(t.sublabel?5:-1)}}function Ue(n,e){n&1&&(da(0,`li`,11),qS(1),aC(2,`t`),vd()),n&2&&(hD(),ey(lC(2,1,`command.empty`)))}function je(n,e){if(n&1){let t=DS();da(0,`div`,4),Ma(`click`,function(){Hh(t);let a=SS();return Vh(a.close())}),da(1,`div`,5,0),aC(3,`t`),Ma(`click`,function(a){return a.stopPropagation()})(`keydown`,function(a){Hh(t);let r=SS();return Vh(r.onPanelKey(a))}),da(4,`input`,6,1),aC(6,`t`),aC(7,`t`),Ma(`input`,function(a){Hh(t);let r=SS();return Vh(r.onQuery(a))})(`keydown`,function(a){Hh(t);let r=SS();return Vh(r.onKey(a))}),vd(),da(8,`div`,7),aC(9,`t`),mS(10,$e,5,11,`button`,8,Re),vd(),da(12,`ul`,9,2),dS(14,Le,3,3,`li`,10),mS(15,ze,6,8,null,null,Fe),dS(17,Ue,3,3,`li`,11),vd(),da(18,`div`,12),qS(19),aC(20,`t`),vd()()()}if(n&2){let t=SS();hD(),Ar(`aria-label`,lC(3,10,`command.open`)),hD(3),qm(`value`,t.query())(`placeholder`,lC(6,12,`command.hint`)),Ar(`aria-activedescendant`,t.activeDesc())(`aria-label`,lC(7,14,`command.open`)),hD(4),Ar(`aria-label`,lC(9,16,`command.filters`)),hD(2),yS(t.chips()),hD(2),Ar(`aria-busy`,t.search.loading()||null),hD(2),hS(t.search.loading()?14:-1),hD(),yS(t.flat()),hD(2),hS(!t.search.loading()&&t.search.searched()&&t.flat().length===0?17:-1),hD(2),ey(lC(20,18,`command.footer`))}}var Qe=`button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])`;var qe=/^(https?:|mailto:|ftp:|\/|#)/i;var W=class n{router=p$1(Jn);search=p$1(G);open=k$1(!1);query=k$1(``);active=k$1(0);filter=k$1(`all`);labels=S;input=LU(`inp`);list=LU(`list`);panel=LU(`panel`);prevFocus=null;flat=tn(()=>{let e=this.filter(),t=this.search.results();return e===`all`?t:t.filter(i=>i.kind===e)});idx=tn(()=>{let e=this.flat().length;return e?Math.min(this.active(),e-1):0});activeDesc=tn(()=>this.flat().length?`cp-opt-${this.idx()}`:null);chips=tn(()=>{let e=new Set(this.search.results().map(a=>a.kind)),t=new Set(this.search.unverified()),i=[{kind:`all`,labelKey:`state.all`,unverified:!1}];for(let a of g$2)(e.has(a)||t.has(a)||this.filter()===a)&&i.push({kind:a,labelKey:S[a],unverified:t.has(a)});return i});toggle(e){e?.preventDefault();let t=!this.open();this.open.set(t),t&&(this.prevFocus=document.activeElement,this.query.set(``),this.filter.set(`all`),this.active.set(0),this.search.setQuery(``),setTimeout(()=>this.input()?.nativeElement.focus()))}close(){if(!this.open())return;this.open.set(!1);let e=this.prevFocus;this.prevFocus=null,setTimeout(()=>{e?.isConnected&&e.focus()})}onQuery(e){let t=e.target.value;this.query.set(t),this.active.set(0),this.search.setQuery(t)}onKey(e){let t=this.flat().length;if(e.key===`ArrowDown`)e.preventDefault(),this.active.set(t?(this.idx()+1)%t:0),this.scrollActive();else if(e.key===`ArrowUp`)e.preventDefault(),this.active.set(t?(this.idx()-1+t)%t:0),this.scrollActive();else if(e.key===`Enter`){let i=this.flat()[this.idx()];i&&this.run(i)}else e.key===`Escape`&&this.close()}onChipKey(e,t){let i=this.chips(),a=i.length;if(a)if(e.key===`ArrowRight`||e.key===`ArrowLeft`){e.preventDefault();let r=e.key===`ArrowRight`?(t+1)%a:(t-1+a)%a,d=i[r];if(!d)return;this.filter.set(d.kind),this.active.set(0),e.currentTarget.parentElement?.children[r]?.focus()}else e.key===`ArrowDown`||e.key===`ArrowUp`?(e.preventDefault(),this.input()?.nativeElement.focus()):e.key===`Escape`&&this.close()}onPanelKey(e){if(e.key!==`Tab`)return;let t=this.panel()?.nativeElement;if(!t)return;let i=[...t.querySelectorAll(Qe)].filter(ee=>!ee.hasAttribute(`disabled`)&&ee.tabIndex>=0);if(i.length===0){e.preventDefault(),this.input()?.nativeElement.focus();return}let a=i[0],r=i[i.length-1],d=document.activeElement;(e.shiftKey?d===a||!t.contains(d):d===r||!t.contains(d))&&(e.preventDefault(),(e.shiftKey?r:a).focus())}setFilter(e){this.filter.set(e),this.active.set(0),this.input()?.nativeElement.focus()}run(e){this.close(),e.run?e.run():e.route?this.router.navigateByUrl(e.route):e.url&&qe.test(e.url)&&window.open(e.url,`_blank`,`noopener`)}scrollActive(){setTimeout(()=>{this.list()?.nativeElement.querySelector(`[data-active]`)?.scrollIntoView?.({block:`nearest`})})}static ɵfac=function(t){return new(t||n)};static ɵcmp=ei({type:n,selectors:[[`ui-command-palette`]],viewQuery:function(t,i){t&1&&Km(i.input,Ae,5)(i.list,Ie,5)(i.panel,Be,5),t&2&&NS(3)},hostBindings:function(t,i){t&1&&Ma(`keydown.control.k`,function(r){return i.toggle(r)},Ow)(`keydown.meta.k`,function(r){return i.toggle(r)},Ow)},decls:1,vars:1,consts:[[`panel`,``],[`inp`,``],[`list`,``],[1,`cp`],[1,`cp`,3,`click`],[`role`,`dialog`,`aria-modal`,`true`,1,`cp__panel`,3,`click`,`keydown`],[`type`,`text`,`role`,`combobox`,`aria-expanded`,`true`,`aria-controls`,`cp-list`,1,`cp__input`,3,`input`,`keydown`,`value`,`placeholder`],[`role`,`radiogroup`,1,`cp__filters`],[`type`,`button`,`role`,`radio`,1,`cp__chip`,3,`tabindex`],[`id`,`cp-list`,`role`,`listbox`,1,`cp__list`],[`role`,`presentation`,1,`cp__status`],[`role`,`presentation`,1,`cp__empty`],[1,`cp__footer`],[`type`,`button`,`role`,`radio`,1,`cp__chip`,3,`click`,`keydown`,`tabindex`],[`name`,`alert`,3,`size`],[`role`,`presentation`,1,`cp__group`],[`role`,`option`,1,`cp__item`,3,`click`,`mousemove`,`id`],[3,`name`,`size`],[1,`cp__label`],[1,`cp__sub`]],template:function(t,i){t&1&&dS(0,je,21,20,`div`,3),t&2&&hS(i.open()?0:-1)},dependencies:[cE,aE],styles:[`.cp[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:90;background:#00000073;display:grid;place-items:start center;padding-top:14vh}.cp__panel[_ngcontent-%COMP%]{width:min(560px,calc(100vw - var(--%NS%space-6)));background:var(--%NS%bg-elevated);border:1px solid var(--%NS%border-strong);border-radius:var(--%NS%radius-lg);box-shadow:var(--%NS%elev-pop);overflow:hidden}.cp__input[_ngcontent-%COMP%]{width:100%;border:0;border-bottom:1px solid var(--%NS%border);background:transparent;color:var(--%NS%fg);padding:var(--%NS%space-3) var(--%NS%space-4);font:inherit;font-size:var(--%NS%font-lg);outline:none}.cp__filters[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--%NS%space-1);padding:var(--%NS%space-2) var(--%NS%space-3);border-bottom:1px solid var(--%NS%border)}.cp__chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--%NS%space-1);border:1px solid var(--%NS%border);border-radius:var(--%NS%radius-pill);background:transparent;color:var(--%NS%fg-muted);padding:1px var(--%NS%space-2);font:inherit;font-size:var(--%NS%font-xs);cursor:pointer}.cp__chip[data-active][_ngcontent-%COMP%]{background:var(--%NS%accent-bg);border-color:color-mix(in srgb,var(--%NS%accent) 40%,transparent);color:var(--%NS%accent-ink)}.cp__chip[data-unverified][_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%warning, var(--%NS%accent))}.cp__list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:var(--%NS%space-2);max-height:320px;overflow-y:auto}.cp__group[_ngcontent-%COMP%]{padding:var(--%NS%space-2) var(--%NS%space-3) var(--%NS%space-1);color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs);font-weight:600;text-transform:uppercase;letter-spacing:.06em;cursor:default}.cp__item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--%NS%space-3);padding:var(--%NS%space-2) var(--%NS%space-3);border-radius:var(--%NS%radius-md);color:var(--%NS%fg);cursor:pointer;font-size:var(--%NS%font-sm)}.cp__item[_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%fg-muted);flex:none}.cp__item[data-active][_ngcontent-%COMP%]{background:var(--%NS%accent-bg);color:var(--%NS%accent-ink)}.cp__item[data-active][_ngcontent-%COMP%] ui-icon[_ngcontent-%COMP%]{color:var(--%NS%accent-ink)}.cp__label[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cp__sub[_ngcontent-%COMP%]{margin-left:auto;flex:none;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}.cp__status[_ngcontent-%COMP%], .cp__empty[_ngcontent-%COMP%]{padding:var(--%NS%space-2) var(--%NS%space-3);color:var(--%NS%fg-muted);font-size:var(--%NS%font-sm);cursor:default}.cp__footer[_ngcontent-%COMP%]{border-top:1px solid var(--%NS%border);padding:var(--%NS%space-2) var(--%NS%space-4);color:var(--%NS%fg-muted);font-size:var(--%NS%font-xs)}`]})};var Ge=(n,e)=>e.key;var We=(n,e)=>e.route;function Xe(n,e){if(n&1&&(da(0,`a`,27),Sa(1,`ui-icon`,28),da(2,`span`,29),qS(3),aC(4,`t`),vd()()),n&2){let t=e.$implicit;qm(`routerLink`,t.route),hD(),qm(`name`,t.icon)(`size`,17),hD(2),ey(lC(4,4,t.label))}}function Je(n,e){if(n&1&&(da(0,`div`,9)(1,`p`,26),qS(2),aC(3,`t`),vd(),mS(4,Xe,5,6,`a`,27,We),vd()),n&2){let t=e.$implicit;Ar(`aria-labelledby`,`nav-h-`+t.key),hD(),qm(`id`,`nav-h-`+t.key),hD(),ey(lC(3,3,t.label)),hD(2),yS(t.items)}}function Ye(n,e){n&1&&(da(0,`span`,18),qS(1),aC(2,`t`),vd()),n&2&&(hD(),ey(lC(2,1,`settings.federated`)))}function Ze(n,e){if(n&1){let t=DS();da(0,`div`,25)(1,`p`),qS(2),aC(3,`t`),vd(),da(4,`button`,30),Ma(`click`,function(){Hh(t);let a=SS();return Vh(a.store.bootstrap())}),qS(5),aC(6,`t`),vd()()}if(n&2){let t=SS();hD(2),ey(lC(3,2,t.bannerMessageKey())),hD(3),bd(` `,lC(6,4,`error.retry`),` `)}}var et=[{key:`overview`,label:`nav.section.overview`,items:[{route:`/dashboard`,label:`nav.dashboard`,icon:`dashboard`},{route:`/guide`,label:`nav.guide`,icon:`guide`},{route:`/federation`,label:`nav.federation`,icon:`network`,capability:`federation`}]},{key:`explore`,label:`nav.section.explore`,items:[{route:`/forges`,label:`nav.forges`,icon:`gem`,capability:`federation`},{route:`/agents`,label:`nav.agents`,icon:`agents`},{route:`/skills`,label:`nav.skills`,icon:`skills`},{route:`/mcp`,label:`nav.mcp`,icon:`mcp`},{route:`/knowledge`,label:`nav.knowledge`,icon:`knowledge`},{route:`/match`,label:`nav.match`,icon:`compass`}]},{key:`operate`,label:`nav.section.operate`,items:[{route:`/tasks`,label:`nav.tasks`,icon:`tasks`,capability:`tasks`},{route:`/install`,label:`nav.install`,icon:`install`},{route:`/profiles`,label:`nav.profiles`,icon:`profiles`},{route:`/hosts`,label:`nav.hosts`,icon:`hosts`},{route:`/config`,label:`nav.config`,icon:`key`}]},{key:`analyze`,label:`nav.section.analyze`,items:[{route:`/graph`,label:`nav.graph`,icon:`graph`,capability:`graph`},{route:`/observe`,label:`nav.observe`,icon:`pulse`},{route:`/execution`,label:`nav.execution`,icon:`execution`},{route:`/lab`,label:`nav.lab`,icon:`diff`},{route:`/versions`,label:`nav.versions`,icon:`history`}]},{key:`settings`,label:`nav.section.settings`,items:[{route:`/settings`,label:`nav.settings`,icon:`settings`}]}];var X=class n$3{store=p$1(g);i18n=p$1(Ic);theme=p$1(n);prefs=p$1(rE);router=p$1(Jn);destroyRef=p$1(ve);collapsed=k$1(this.prefs.navCollapsed());nav=et;navigated=!1;visibleNav=tn(()=>this.nav.map(e=>m(l({},e),{items:e.items.filter(t=>!t.capability||this.store.capabilities().length===0||this.store.capabilities().some(i=>i.id===t.capability&&i.state!==`unsupported`))})).filter(e=>e.items.length>0));schemeIcon=tn(()=>{let e=this.theme.scheme();return e===`dark`?`moon`:e===`light`?`sun`:`contrast`});bannerMessageKey=tn(()=>this.store.lastError?.()?.body.message_key??`error.unreachable`);constructor(){this.store.bootstrap(),this.router.events.pipe(w(this.destroyRef)).subscribe(e=>{if(!(e instanceof ze$1))return;if(this.prefs.recordRoute(e.urlAfterRedirects),!this.navigated){this.navigated=!0;return}let t=document.getElementById(`content`);t&&(t.focus(),t.scrollTop=0)})}toggleLocale(){this.i18n.applyPreference(this.i18n.locale()===`pt-BR`?`en`:`pt-BR`)}toggleCollapsed(){let e=!this.collapsed();this.collapsed.set(e),this.prefs.setNavCollapsed(e)}onDocKeydown(e){if(e.key!==`[`||e.ctrlKey||e.metaKey||e.altKey)return;let t=e.target,i=t?.tagName;i===`INPUT`||i===`TEXTAREA`||i===`SELECT`||t?.isContentEditable||this.toggleCollapsed()}cycleScheme(){let e=this.theme.scheme()===`system`?`light`:this.theme.scheme()===`light`?`dark`:`system`;this.theme.setScheme(e)}static ɵfac=function(t){return new(t||n$3)};static ɵcmp=ei({type:n$3,selectors:[[`app-root`]],hostBindings:function(t,i){t&1&&Ma(`keydown`,function(r){return i.onDocKeydown(r)},Ow)},decls:55,vars:57,consts:[[`palette`,``],[`href`,`#content`,1,`skip-link`],[1,`shell`],[1,`shell__side`],[`routerLink`,`/dashboard`,1,`brand`],[`aria-hidden`,`true`,1,`brand__mark`],[`name`,`gem`,3,`size`],[1,`brand__text`],[`id`,`shell-nav`,1,`nav`],[`role`,`group`,1,`nav__group`],[`aria-controls`,`shell-nav`,1,`nav__collapse`,3,`click`,`title`],[3,`name`,`size`],[1,`shell__main`],[1,`topbar`],[1,`topbar__status`],[`aria-hidden`,`true`,1,`dot`,3,`title`],[1,`topbar__workspace`],[`name`,`folder`,3,`size`],[1,`topbar__fed`],[1,`topbar__actions`],[1,`icon-btn`,`icon-btn--search`,3,`click`,`title`],[`name`,`search`,3,`size`],[`aria-hidden`,`true`,1,`icon-btn__kbd`],[1,`icon-btn`,3,`click`,`title`],[`id`,`content`,`tabindex`,`-1`,1,`content`],[`role`,`alert`,1,`offline-banner`],[1,`nav__section`,3,`id`],[`routerLinkActive`,`nav__item--active`,`ariaCurrentWhenActive`,`page`,1,`nav__item`,3,`routerLink`],[1,`nav__icon`,3,`name`,`size`],[1,`nav__label`],[1,`btn`,3,`click`]],template:function(t,i){if(t&1){let a=DS();da(0,`a`,1),qS(1),aC(2,`t`),vd(),da(3,`div`,2)(4,`aside`,3),aC(5,`t`),da(6,`a`,4)(7,`span`,5),Sa(8,`ui-icon`,6),vd(),da(9,`span`,7)(10,`strong`),qS(11),vd(),da(12,`small`),qS(13),aC(14,`t`),vd()()(),da(15,`nav`,8),aC(16,`t`),mS(17,Je,6,5,`div`,9,Ge),vd(),da(19,`button`,10),aC(20,`t`),aC(21,`t`),Ma(`click`,function(){return i.toggleCollapsed()}),Sa(22,`ui-icon`,11),vd()(),da(23,`div`,12)(24,`header`,13)(25,`div`,14),Sa(26,`span`,15),da(27,`span`,16),aC(28,`t`),Sa(29,`ui-icon`,17),qS(30),aC(31,`t`),vd(),dS(32,Ye,3,3,`span`,18),vd(),da(33,`div`,19)(34,`button`,20),aC(35,`t`),aC(36,`t`),Ma(`click`,function(){Hh(a);let d=RS(52);return Vh(d.toggle())}),Sa(37,`ui-icon`,21),da(38,`kbd`,22),qS(39,`Ctrl K`),vd()(),da(40,`button`,23),aC(41,`t`),aC(42,`t`),Ma(`click`,function(){return i.toggleLocale()}),qS(43),vd(),da(44,`button`,23),aC(45,`t`),aC(46,`t`),Ma(`click`,function(){return i.cycleScheme()}),Sa(47,`ui-icon`,11),vd()()(),da(48,`main`,24),dS(49,Ze,7,6,`div`,25),Sa(50,`router-outlet`),vd()()(),Sa(51,`ui-command-palette`,null,0)(53,`ui-toast-outlet`)(54,`ui-confirm-host`)}t&2&&(hD(),ey(lC(2,29,`nav.skip`)),hD(3),Ar(`data-collapsed`,i.collapsed()||null)(`aria-label`,lC(5,31,`nav.primary`)),hD(4),qm(`size`,18),hD(3),ey(i.store.forgeName()),hD(2),ey(lC(14,33,`app.tagline`)),hD(2),Ar(`aria-label`,lC(16,35,`nav.primary`)),hD(2),yS(i.visibleNav()),hD(2),qm(`title`,lC(20,37,`nav.shortcut.collapse`)),Ar(`aria-label`,lC(21,39,i.collapsed()?`nav.expand`:`nav.collapse`))(`aria-expanded`,!i.collapsed()),hD(3),qm(`name`,i.collapsed()?`chevron-right`:`chevron-left`)(`size`,14),hD(4),qm(`title`,i.store.status()),Ar(`data-state`,i.store.status()),hD(),Ar(`title`,i.store.workspace()?.root??lC(28,41,`dashboard.noWorkspace`)),hD(2),qm(`size`,14),hD(),bd(` `,i.store.workspace()?.name??lC(31,43,`dashboard.noWorkspace`),` `),hD(2),hS(i.store.federated()?32:-1),hD(2),qm(`title`,lC(35,45,`command.open`)+` — Ctrl K`),Ar(`aria-label`,lC(36,47,`command.open`)+` — Ctrl K`),hD(3),qm(`size`,15),hD(3),qm(`title`,lC(41,49,`settings.language`)),Ar(`aria-label`,(i.i18n.locale()===`pt-BR`?`PT`:`EN`)+` — `+lC(42,51,`settings.language`)),hD(3),bd(` `,i.i18n.locale()===`pt-BR`?`PT`:`EN`,` `),hD(),qm(`title`,lC(45,53,`settings.theme`)),Ar(`aria-label`,lC(46,55,`settings.theme`)),hD(3),qm(`name`,i.schemeIcon())(`size`,15),hD(2),hS(i.store.status()===`offline`||i.store.status()===`error`?49:-1))},dependencies:[yf,vc,u_,cE,W,I,L,aE],styles:[`[_nghost-%COMP%]{display:contents}`]})};oT(X,Ne).catch(n=>console.error(n));export{w as a,a as c,n$1 as i,n,f$1 as o,g$1 as r,y as s,g as t}; \ No newline at end of file diff --git a/portal/assets/styles-B6ZRGG3C.css b/portal/assets/styles-B6ZRGG3C.css new file mode 100644 index 0000000..08a0548 --- /dev/null +++ b/portal/assets/styles-B6ZRGG3C.css @@ -0,0 +1 @@ +:root{--fg-space-1: .25rem;--fg-space-2: .5rem;--fg-space-3: .75rem;--fg-space-4: 1rem;--fg-space-5: 1.5rem;--fg-space-6: 2rem;--fg-space-7: 3rem;--fg-radius-sm: .375rem;--fg-radius-md: .625rem;--fg-radius-lg: .875rem;--fg-radius-pill: 999px;--fg-motion-fast: .12s;--fg-motion-press: .14s;--fg-motion-med: .22s;--fg-motion-ease: cubic-bezier(.2, .8, .2, 1);--fg-ease-out: cubic-bezier(.23, 1, .32, 1);--fg-ease-in-out: cubic-bezier(.77, 0, .175, 1);--fg-elev-1: 0 1px 2px rgb(0 0 0 / .12);--fg-elev-2: 0 4px 16px rgb(0 0 0 / .16);--fg-elev-3: 0 12px 40px rgb(0 0 0 / .24);--fg-font: "Segoe UI", system-ui, -apple-system, "Inter", "Roboto", sans-serif;--fg-font-mono: "Cascadia Code", ui-monospace, "SF Mono", Consolas, monospace;--fg-text-xs: .75rem;--fg-text-sm: .8125rem;--fg-text-md: .9375rem;--fg-text-lg: 1.125rem;--fg-text-xl: 1.25rem;--fg-text-2xl: 1.375rem;--fg-weight-regular: 400;--fg-weight-medium: 500;--fg-weight-semibold: 650;--fg-weight-bold: 700;--fg-leading-tight: 1.25;--fg-leading-base: 1.5;--fg-topbar-h: 3.25rem;--fg-sidebar-w: 15.5rem;--fg-sidebar-w-collapsed: 3.75rem;--fg-focus-width: 2px;--fg-focus-offset: 2px;--fg-focus-ring: 0 0 0 3px color-mix(in srgb, var(--fg-focus) 22%, transparent);--z-base: 0;--z-sticky: 10;--z-overlay: 90;--z-dialog: 100;--z-toast: 120;--fg-on-color: #ffffff;color-scheme:light}:root{--fg-bg: #f4f5f7;--fg-bg-raised: #ffffff;--fg-surface: #ffffff;--fg-surface-2: #eef0f3;--fg-border: #d9dde3;--fg-border-strong: #b9c0ca;--fg-text: #16191d;--fg-text-2: #4b5563;--fg-text-dim: #646c78;--fg-focus: #2563eb;--fg-success: #0b7a42;--fg-success-bg: #e3f5ea;--fg-warning: #a35c00;--fg-warning-bg: #fdf0dd;--fg-error: #c0392b;--fg-error-bg: #fdeceb;--fg-info: #1d5fd1;--fg-info-bg: #e8f0fe;--fg-unverified: #4b5a68;--fg-unverified-bg: #edf0f4;--fg-scrim: rgb(10 12 16 / .45);--skeleton: color-mix(in srgb, var(--fg-text) 10%, transparent)}[data-scheme=dark]{color-scheme:dark;--fg-bg: #0d1014;--fg-bg-raised: #13171d;--fg-surface: #161b22;--fg-surface-2: #1d232c;--fg-border: #2b333d;--fg-border-strong: #3d4754;--fg-text: #e6e9ee;--fg-text-2: #a9b3bf;--fg-text-dim: #7d8894;--fg-focus: #6ea8fe;--fg-success: #3fce7f;--fg-success-bg: #10331f;--fg-warning: #f0b35e;--fg-warning-bg: #3a2a10;--fg-error: #ff6f61;--fg-error-bg: #3d1512;--fg-info: #79a8ff;--fg-info-bg: #15233d;--fg-unverified: #9fb4c7;--fg-unverified-bg: #202a36;--fg-elev-1: 0 1px 2px rgb(0 0 0 / .5);--fg-elev-2: 0 4px 16px rgb(0 0 0 / .45);--fg-elev-3: 0 12px 40px rgb(0 0 0 / .55)}:root,[data-forge=the-forge]{--fg-accent: #e8611c;--fg-accent-strong: #c74e0f;--fg-accent-bg: #fdeee4;--fg-accent-ink: #a8430c;--fg-accent-fill: #a8430c;--fg-accent-contrast: #ffffff;--fg-gradient: linear-gradient(135deg, #e8611c 0%, #b93e6b 100%)}[data-scheme=dark][data-forge=the-forge],[data-scheme=dark] :root[data-forge=the-forge]{--fg-accent-bg: #3a1d0c}[data-forge=spark-forge-aws]{--fg-accent: #e08a00;--fg-accent-strong: #c07a00;--fg-accent-bg: #fdf2dc;--fg-accent-ink: #7d5200;--fg-accent-fill: #e08a00;--fg-accent-contrast: #1d1400;--fg-gradient: linear-gradient(135deg, #e08a00 0%, #c2571b 100%)}[data-forge=spark-forge-azure]{--fg-accent: #0078d4;--fg-accent-strong: #005a9e;--fg-accent-bg: #e2f0fc;--fg-accent-ink: #005a9e;--fg-accent-fill: #005a9e;--fg-accent-contrast: #ffffff;--fg-gradient: linear-gradient(135deg, #0078d4 0%, #2b88d8 100%)}[data-forge=api-forge]{--fg-accent: #0e8f8f;--fg-accent-strong: #0a6e6e;--fg-accent-bg: #def3f2;--fg-accent-ink: #096060;--fg-accent-fill: #096060;--fg-accent-contrast: #ffffff;--fg-gradient: linear-gradient(135deg, #0e8f8f 0%, #1167b1 100%)}[data-forge=platform-forge]{--fg-accent: #6d4bd8;--fg-accent-strong: #5537b8;--fg-accent-bg: #ece6fb;--fg-accent-ink: #5537b8;--fg-accent-fill: #5537b8;--fg-accent-contrast: #ffffff;--fg-gradient: linear-gradient(135deg, #6d4bd8 0%, #8f3fd1 100%)}[data-forge=forge-doctor-data]{--fg-accent: #178a50;--fg-accent-strong: #0f6e3e;--fg-accent-bg: #ddf3e6;--fg-accent-ink: #0d6338;--fg-accent-fill: #0d6338;--fg-accent-contrast: #ffffff;--fg-gradient: linear-gradient(135deg, #178a50 0%, #0d9488 100%)}[data-forge=forge-doctor-api]{--fg-accent: #c73565;--fg-accent-strong: #a02550;--fg-accent-bg: #fbe4ec;--fg-accent-ink: #a02550;--fg-accent-fill: #a02550;--fg-accent-contrast: #ffffff;--fg-gradient: linear-gradient(135deg, #c73565 0%, #9d4edd 100%)}[data-scheme=dark]{--fg-accent-bg: rgb(255 255 255 / .08)}[data-scheme=dark][data-forge=the-forge],[data-scheme=dark]{--fg-accent-ink: #f07a35}[data-scheme=dark][data-forge=spark-forge-aws]{--fg-accent-ink: #e08a00}[data-scheme=dark][data-forge=spark-forge-azure]{--fg-accent-ink: #3d9bff}[data-scheme=dark][data-forge=api-forge]{--fg-accent-ink: #2bb3b3}[data-scheme=dark][data-forge=platform-forge]{--fg-accent-ink: #a08cf0}[data-scheme=dark][data-forge=forge-doctor-data]{--fg-accent-ink: #33c07c}[data-scheme=dark][data-forge=forge-doctor-api]{--fg-accent-ink: #e86a93}:root{--space-1: var(--fg-space-1);--space-2: var(--fg-space-2);--space-3: var(--fg-space-3);--space-4: var(--fg-space-4);--space-5: var(--fg-space-5);--space-6: var(--fg-space-6);--space-8: var(--fg-space-7);--radius-sm: var(--fg-radius-sm);--radius-md: var(--fg-radius-md);--radius-lg: var(--fg-radius-lg);--radius-pill: var(--fg-radius-pill);--font-xs: var(--fg-text-xs);--font-sm: var(--fg-text-sm);--font-md: var(--fg-text-md);--font-lg: var(--fg-text-lg);--font-xl: var(--fg-text-xl);--font-2xl: var(--fg-text-2xl);--font-mono: var(--fg-font-mono);--font-weight-regular: var(--fg-weight-regular);--font-weight-medium: var(--fg-weight-medium);--font-weight-semibold: var(--fg-weight-semibold);--font-weight-bold: var(--fg-weight-bold);--fg: var(--fg-text);--fg-muted: var(--fg-text-2);--fg-dim: var(--fg-text-dim);--bg: var(--fg-bg);--bg-elevated: var(--fg-surface);--bg-hover: var(--fg-surface-2);--border: var(--fg-border);--border-strong: var(--fg-border-strong);--accent: var(--fg-accent);--accent-strong: var(--fg-accent-strong);--accent-bg: var(--fg-accent-bg);--accent-ink: var(--fg-accent-ink);--accent-fill: var(--fg-accent-fill);--accent-fg: var(--fg-accent-contrast);--gradient: var(--fg-gradient);--scrim: var(--fg-scrim);--on-color: var(--fg-on-color);--ok: var(--fg-success);--ok-bg: var(--fg-success-bg);--warn: var(--fg-warning);--warn-bg: var(--fg-warning-bg);--error: var(--fg-error);--error-bg: var(--fg-error-bg);--info: var(--fg-info);--info-bg: var(--fg-info-bg);--unverified: var(--fg-unverified);--unverified-bg: var(--fg-unverified-bg);--topbar-h: var(--fg-topbar-h);--motion: var(--fg-motion-med) var(--fg-motion-ease);--motion-fast: var(--fg-motion-fast) var(--fg-motion-ease);--ease-out: var(--fg-ease-out);--ease-in-out: var(--fg-ease-in-out);--press: var(--fg-motion-press) var(--fg-ease-out);--elev-card: var(--fg-elev-1);--elev-hover: var(--fg-elev-2);--elev-pop: var(--fg-elev-3);--focus-ring: var(--fg-focus-ring)}[data-density=compact]{--fg-space-3: .625rem;--fg-space-4: .75rem;--fg-space-5: 1.125rem;--fg-space-6: 1.5rem;--fg-space-7: 2.25rem}[data-motion=reduced]{--fg-motion-fast: 0ms;--fg-motion-press: 0ms;--fg-motion-med: 0ms}@media(prefers-contrast:more){:root{--fg-border: #9aa3ad;--fg-border-strong: #6b7280;--fg-text-2: #374151;--fg-text-dim: #4b5563;--fg-focus-width: 3px}[data-scheme=dark]{--fg-border: #4a5563;--fg-border-strong: #6b7885;--fg-text-2: #c6cfd9;--fg-text-dim: #9aa7b4;--fg-focus-width: 3px}}@media(prefers-reduced-motion:reduce){:root:not([data-motion=full]){--fg-motion-fast: 0ms;--fg-motion-press: 0ms;--fg-motion-med: 0ms}}*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:var(--fg-font);background:var(--fg-bg);color:var(--fg-text);font-size:.9375rem;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{line-height:1.25;margin:0;font-weight:650}h1{font-size:1.375rem}h2{font-size:1.125rem}h3{font-size:1rem}p{margin:0}a{color:var(--fg-info)}code,pre,.fg-mono{font-family:var(--fg-font-mono);font-size:.85em}button{font:inherit}:focus-visible{outline:var(--fg-focus-width) solid var(--fg-focus);outline-offset:var(--fg-focus-offset);border-radius:var(--fg-radius-sm)}::selection{background:color-mix(in srgb,var(--fg-accent) 26%,transparent)}*{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--fg-text-dim) 35%,transparent) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--fg-text-dim) 35%,transparent);border-radius:8px}::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--fg-text-dim) 55%,transparent)}::-webkit-scrollbar-track{background:transparent}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){:root:not([data-motion=full]) *,:root:not([data-motion=full]) *:before,:root:not([data-motion=full]) *:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.fg-card{background:var(--fg-surface);border:1px solid var(--fg-border);border-radius:var(--fg-radius-lg);padding:var(--fg-space-5);box-shadow:var(--fg-elev-1);transition:box-shadow var(--fg-motion-med) var(--fg-motion-ease),border-color var(--fg-motion-fast) var(--fg-motion-ease)}.fg-card[data-lift]{transition-duration:var(--fg-motion-fast),var(--fg-motion-fast)}.fg-card[data-lift]:hover{box-shadow:var(--fg-elev-2);border-color:var(--fg-border-strong)}.fg-pill{display:inline-flex;align-items:center;gap:var(--fg-space-2);border-radius:var(--fg-radius-pill);padding:.125rem .625rem;font-size:.75rem;font-weight:600;letter-spacing:.02em;border:1px solid var(--fg-border);background:var(--fg-surface-2);color:var(--fg-text-2);white-space:nowrap}button.fg-pill,a.fg-pill{cursor:pointer;transition:color var(--fg-motion-fast) var(--fg-motion-ease),background var(--fg-motion-fast) var(--fg-motion-ease),border-color var(--fg-motion-fast) var(--fg-motion-ease),transform var(--fg-motion-press) var(--fg-ease-out)}button.fg-pill:not([data-tone]):hover:not(:disabled),a.fg-pill:not([data-tone]):hover{color:var(--fg-text);background:var(--fg-surface);border-color:var(--fg-border-strong)}button.fg-pill:active:not(:disabled),a.fg-pill:active{transform:scale(.97)}button.fg-pill:disabled{opacity:.55;cursor:not-allowed}button.fg-pill[data-tone=accent]:hover:not(:disabled){background:color-mix(in srgb,var(--fg-accent-fill) 86%,black);color:var(--fg-accent-contrast)}.fg-pill[data-tone=success]{color:var(--fg-success);background:var(--fg-success-bg);border-color:transparent}.fg-pill[data-tone=warning]{color:var(--fg-warning);background:var(--fg-warning-bg);border-color:transparent}.fg-pill[data-tone=error]{color:var(--fg-error);background:var(--fg-error-bg);border-color:transparent}.fg-pill[data-tone=info]{color:var(--fg-info);background:var(--fg-info-bg);border-color:transparent}.fg-pill[data-tone=accent]{color:var(--fg-accent-contrast);background:var(--fg-accent-fill);border-color:transparent}.fg-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--fg-space-2);border-radius:var(--fg-radius-md);border:1px solid var(--fg-border);background:var(--fg-surface);color:var(--fg-text);padding:.5rem 1rem;cursor:pointer;font-weight:550;box-shadow:var(--fg-elev-1);transition:background var(--fg-motion-fast) var(--fg-motion-ease),border-color var(--fg-motion-fast) var(--fg-motion-ease),box-shadow var(--fg-motion-fast) var(--fg-motion-ease),transform var(--fg-motion-fast) var(--fg-motion-ease)}.fg-btn:hover{background:var(--fg-surface-2);border-color:var(--fg-border-strong)}.fg-btn:active{transform:scale(.98);box-shadow:none}.fg-btn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}.fg-btn[data-variant=accent]{background:var(--fg-accent-fill);border-color:var(--fg-accent-fill);color:var(--fg-accent-contrast)}.fg-btn[data-variant=accent]:hover{background:color-mix(in srgb,var(--fg-accent-fill) 86%,black);border-color:color-mix(in srgb,var(--fg-accent-fill) 86%,black);box-shadow:0 2px 8px color-mix(in srgb,var(--fg-accent-fill) 40%,transparent)}.fg-btn[data-variant=danger]{color:var(--fg-error);border-color:var(--fg-error)}.fg-btn[data-variant=danger]:hover{background:var(--fg-error-bg)}.fg-btn[data-variant=ghost]{border-color:transparent;background:transparent;box-shadow:none}.fg-btn[data-variant=ghost]:hover{background:var(--fg-surface-2)}.fg-input,.fg-select,.fg-textarea{width:100%;border:1px solid var(--fg-border);border-radius:var(--fg-radius-md);background:var(--fg-surface);color:var(--fg-text);padding:.5rem .75rem;font:inherit;transition:border-color var(--fg-motion-fast) var(--fg-motion-ease),box-shadow var(--fg-motion-fast) var(--fg-motion-ease)}.fg-input:hover:not(:focus),.fg-select:hover:not(:focus),.fg-textarea:hover:not(:focus){border-color:var(--fg-border-strong)}.fg-input:focus,.fg-select:focus,.fg-textarea:focus{border-color:var(--fg-focus);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--fg-focus) 22%,transparent)}.fg-table{width:100%;border-collapse:collapse;font-size:.875rem}.fg-table th{text-align:left;font-weight:600;color:var(--fg-text-dim);font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;padding:var(--fg-space-2) var(--fg-space-3);border-bottom:1px solid var(--fg-border)}.fg-table td{padding:var(--fg-space-3);border-bottom:1px solid var(--fg-border);vertical-align:top}.fg-table tbody tr{transition:background var(--fg-motion-fast) var(--fg-motion-ease)}.fg-table tbody tr:hover{background:var(--fg-surface-2)}.fg-table tr:last-child td{border-bottom:none}.fg-page{padding:var(--fg-space-6);max-width:76rem;margin:0 auto;display:block}.fg-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--fg-space-4);margin-bottom:var(--fg-space-5);flex-wrap:wrap}.fg-page-title{display:flex;flex-direction:column;gap:var(--fg-space-1)}.fg-page-sub{color:var(--fg-text-2);font-size:.875rem;max-width:46rem}.fg-grid{display:grid;gap:var(--fg-space-4)}.fg-grid[data-cols="2"]{grid-template-columns:repeat(auto-fit,minmax(20rem,1fr))}.fg-grid[data-cols="3"]{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))}.fg-muted{color:var(--fg-text-2)}.fg-dim{color:var(--fg-text-dim)}.fg-small{font-size:.8125rem}.fg-row{display:flex;align-items:center;gap:var(--fg-space-3)}.fg-row[data-wrap]{flex-wrap:wrap}.fg-spread{justify-content:space-between}.fg-stack{display:flex;flex-direction:column;gap:var(--fg-space-3)}.fg-kv{display:grid;grid-template-columns:minmax(9rem,auto) 1fr;gap:var(--fg-space-2) var(--fg-space-4);font-size:.875rem}.fg-kv dt{color:var(--fg-text-dim)}.fg-kv dd{margin:0;word-break:break-word}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-elevated);color:var(--fg);padding:.5rem 1rem;cursor:pointer;font-weight:550;font-size:.875rem;box-shadow:var(--elev-card);transition:background var(--motion-fast),border-color var(--motion-fast),box-shadow var(--motion-fast),transform var(--motion-fast)}.btn:hover{background:var(--bg-hover);border-color:var(--border-strong)}.btn:active{transform:scale(.97);box-shadow:none;transition-duration:var(--fg-motion-press)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}a.btn,a.btn:hover{text-decoration:none}.btn--primary{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--accent-fg)}.btn--primary:hover{background:color-mix(in srgb,var(--fg-accent-fill) 86%,black);border-color:color-mix(in srgb,var(--fg-accent-fill) 86%,black);box-shadow:0 2px 10px color-mix(in srgb,var(--accent-fill) 40%,transparent)}.btn--danger{color:var(--error);border-color:var(--error)}.btn--danger:hover{background:var(--error-bg)}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--elev-card);transition:box-shadow var(--motion),border-color var(--motion-fast),transform var(--motion)}.card[data-lift]{transition-duration:var(--fg-motion-fast),var(--fg-motion-fast),var(--fg-motion-fast)}.card[data-lift]:hover{box-shadow:var(--elev-hover);border-color:var(--border-strong);transform:translateY(-2px)}.input,.select,.textarea{width:100%;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-elevated);color:var(--fg);padding:.5rem .75rem;font:inherit;transition:border-color var(--motion-fast),box-shadow var(--motion-fast)}.input:hover:not(:focus),.select:hover:not(:focus),.textarea:hover:not(:focus){border-color:var(--border-strong)}.input:focus,.select:focus,.textarea:focus{border-color:var(--fg-focus);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--fg-focus) 22%,transparent)}.table{width:100%;border-collapse:collapse;font-size:.875rem}.table th{text-align:left;font-weight:600;color:var(--fg-muted);font-size:var(--font-xs);text-transform:uppercase;letter-spacing:.05em;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border)}.table td{padding:var(--space-3);border-bottom:1px solid var(--border);vertical-align:top}.table tbody tr{transition:background var(--motion-fast)}.table tbody tr:hover{background:var(--bg-hover)}.table tr:last-child td{border-bottom:none}.skeleton{border-radius:var(--radius-md);background:linear-gradient(100deg,var(--bg-hover) 40%,color-mix(in srgb,var(--bg-hover) 55%,var(--fg-muted) 12%) 50%,var(--bg-hover) 60%);background-size:200% 100%;animation:fg-shimmer 1.4s linear infinite}.skeleton--line{height:.875rem;margin:var(--space-2) 0}.skeleton--block{min-height:7rem;border-radius:var(--radius-lg)}@keyframes fg-shimmer{0%{background-position:180% 0}to{background-position:-20% 0}}.search-field{position:relative;max-width:360px;margin-bottom:var(--space-4)}.search-field ui-icon{position:absolute;left:10px;top:50%;translate:0 -50%;color:var(--fg-muted);pointer-events:none}.search-field .input{padding-left:32px}.stat{position:relative;display:grid;gap:2px;padding:var(--space-4) var(--space-5) var(--space-4) calc(var(--space-5) + 3px);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--elev-card);overflow:hidden;transition:box-shadow var(--motion),transform var(--motion),border-color var(--motion-fast)}.stat:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--stat-rail, var(--accent))}.stat{transition-duration:var(--fg-motion-fast),var(--fg-motion-fast),var(--fg-motion-fast)}.stat:hover{box-shadow:var(--elev-hover);border-color:var(--border-strong);transform:translateY(-2px)}.stat__value{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;line-height:1.15;font-variant-numeric:tabular-nums}.stat__label{font-size:var(--font-xs);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--fg-muted)}.stat__hint{font-size:var(--font-xs);color:var(--fg-muted)}@keyframes fg-page-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}page-dashboard,page-install,page-config,page-explorer,page-forge-detail,page-profiles,page-hosts,page-mcp,page-skills,page-agents,page-tasks,page-graph,page-knowledge,page-settings{display:block;animation:fg-page-in var(--fg-motion-med) var(--fg-motion-ease) both}@media(prefers-reduced-motion:reduce){:root:not([data-motion=full]) .skeleton,:root:not([data-motion=full]) page-dashboard,:root:not([data-motion=full]) page-install,:root:not([data-motion=full]) page-config,:root:not([data-motion=full]) page-explorer,:root:not([data-motion=full]) page-forge-detail,:root:not([data-motion=full]) page-profiles,:root:not([data-motion=full]) page-hosts,:root:not([data-motion=full]) page-mcp,:root:not([data-motion=full]) page-skills,:root:not([data-motion=full]) page-agents,:root:not([data-motion=full]) page-tasks,:root:not([data-motion=full]) page-graph,:root:not([data-motion=full]) page-knowledge,:root:not([data-motion=full]) page-settings{animation:none}}@keyframes fg-pop{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.fg-pop{animation:fg-pop var(--fg-motion-med) var(--fg-ease-out) both}.stagger>*{animation:fg-page-in var(--fg-motion-med) var(--fg-ease-out) both}.stagger>*:nth-child(2){animation-delay:40ms}.stagger>*:nth-child(3){animation-delay:80ms}.stagger>*:nth-child(4){animation-delay:.12s}.stagger>*:nth-child(n+5){animation-delay:.16s}.fg-enter{animation:fg-page-in var(--fg-motion-med) var(--fg-ease-out) both}@media(prefers-reduced-motion:reduce){:root:not([data-motion=full]) .stagger>*,:root:not([data-motion=full]) .fg-pop,:root:not([data-motion=full]) .fg-enter{animation:none}}.stepper{display:flex;list-style:none;margin:0;padding:0;gap:0}.stepper__step{position:relative;display:flex;align-items:center;gap:var(--space-2);flex:1;min-width:0;color:var(--fg-muted);font-size:var(--font-sm)}.stepper__step:not(:last-child):after{content:"";flex:1;height:2px;margin:0 var(--space-3);border-radius:1px;background:var(--border);transition:background var(--motion-med) var(--ease-out)}.stepper__dot{display:grid;place-items:center;width:26px;height:26px;flex:none;border-radius:50%;border:1.5px solid var(--border-strong);font-size:var(--font-xs);font-weight:650;transition:background var(--motion-med) var(--ease-out),border-color var(--motion-med) var(--ease-out),color var(--motion-fast)}.stepper__step[data-state=done]{color:var(--fg)}.stepper__step[data-state=done] .stepper__dot{background:var(--ok);border-color:var(--ok);color:var(--on-color);animation:fg-pop var(--fg-motion-med) var(--fg-ease-out) both}.stepper__step[data-state=done]:after{background:var(--ok)}.stepper__step[data-state=active]{color:var(--fg);font-weight:600}.stepper__step[data-state=active] .stepper__dot{border-color:var(--accent-ink);color:var(--accent-ink);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 15%,transparent)}.stepper__step[data-state=warn] .stepper__dot{background:var(--warn);border-color:var(--warn);color:var(--on-color)}@media(prefers-reduced-motion:reduce){:root:not([data-motion=full]) .stepper__step[data-state=done] .stepper__dot{animation:none}}@media(max-width:560px){.stepper{flex-wrap:wrap;gap:var(--space-2)}.stepper__step{flex:none}.stepper__step:not(:last-child):after{display:none}}.cap{display:inline-flex;align-items:center;gap:var(--space-2);padding:7px var(--space-3) 7px var(--space-2);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-hover);font-size:var(--font-sm);font-weight:550;color:var(--fg)}.cap ui-icon{color:var(--fg-muted)}.cap__dot{width:8px;height:8px;border-radius:50%;background:var(--fg-muted)}.cap[data-state=supported]{border-color:color-mix(in srgb,var(--ok) 40%,transparent);background:var(--ok-bg)}.cap[data-state=supported] ui-icon{color:var(--ok)}.cap[data-state=supported] .cap__dot{background:var(--ok)}.cap[data-state=unverified]{border-color:color-mix(in srgb,var(--unverified) 45%,transparent);background:var(--unverified-bg)}.cap[data-state=unverified] ui-icon{color:var(--unverified)}.cap[data-state=unverified] .cap__dot{background:var(--unverified)}.cap[data-state=unsupported],.cap[data-state=not_applicable]{opacity:.6}.portal-row{display:flex;align-items:flex-start;gap:var(--space-3);margin-top:var(--space-4);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--fg-muted)}.portal-row[data-state=installed]{border-color:color-mix(in srgb,var(--ok) 45%,var(--border));color:var(--fg)}.portal-row[data-state=installed] ui-icon{color:var(--ok)}.portal-row__body{display:grid;gap:2px;min-width:0}.portal-row__body small{overflow-wrap:anywhere}.skip-link{position:fixed;top:var(--space-3);left:var(--space-3);z-index:100;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);background:var(--bg-elevated);color:var(--fg);border:1px solid var(--border-strong);box-shadow:var(--elev-pop);transform:translateY(-200%);transition:transform var(--motion-fast)}.skip-link:focus-visible{transform:translateY(0)}details>summary{cursor:pointer;font-weight:600;color:var(--fg-muted);border-radius:var(--radius-sm);transition:color var(--motion-fast)}details>summary:hover{color:var(--fg)}details>summary::marker{color:var(--accent-ink)}.shell{display:grid;grid-template-columns:auto 1fr;height:100dvh;overflow:hidden}.shell__side{display:flex;flex-direction:column;min-height:0;width:var(--sidebar-w, var(--fg-sidebar-w));border-right:1px solid var(--border);background:var(--bg-elevated);transition:width var(--motion)}.shell__side[data-collapsed]{--sidebar-w: var(--fg-sidebar-w-collapsed)}.shell__side[data-collapsed] .brand__text,.shell__side[data-collapsed] .nav__label,.shell__side[data-collapsed] .nav__section{display:none}.shell__side[data-collapsed] .nav__item{justify-content:center;padding-inline:0}.shell__side[data-collapsed] .nav__item:before{display:none}.shell__side[data-collapsed] .nav__item--active{background:var(--accent-bg)}.brand{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);text-decoration:none;color:var(--fg);border-bottom:1px solid var(--border);min-height:var(--topbar-h)}.brand__mark{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--gradient);color:var(--accent-fg);font-size:13px;line-height:1;box-shadow:0 2px 8px color-mix(in srgb,var(--accent) 45%,transparent);flex-shrink:0}.brand__text{display:grid;line-height:1.25;min-width:0}.brand__text strong,.brand__text small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand__text strong{font-size:var(--font-sm);font-weight:650;letter-spacing:-.01em}.brand__text small{color:var(--fg-muted);font-size:var(--font-xs)}.nav{flex:1;min-height:0;overflow-y:scroll;overflow-x:hidden;padding:var(--space-3) var(--space-2);display:flex;flex-direction:column;gap:2px}.nav::-webkit-scrollbar-track{background:color-mix(in srgb,var(--fg-text-dim) 10%,transparent)}.nav__group{display:contents}.nav__section{margin:var(--space-4) var(--space-3) 4px;font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--fg-muted)}.nav__item{position:relative;display:flex;align-items:center;gap:var(--space-3);padding:8px var(--space-3) 8px calc(var(--space-3) + 3px);border-radius:var(--radius-md);color:var(--fg-muted);text-decoration:none;font-size:var(--font-sm);font-weight:500;transition:background var(--motion-fast),color var(--motion-fast),transform var(--motion-fast)}.nav__item:before{content:"";position:absolute;left:0;top:50%;translate:0 -50%;width:3px;height:0;border-radius:3px;background:var(--accent);transition:height var(--motion-fast)}.nav__item:hover{background:var(--bg-hover);color:var(--fg)}.nav__item--active{background:var(--accent-bg);color:var(--accent-ink);font-weight:600}.nav__item--active:before{height:60%}.nav__icon{flex-shrink:0;display:inline-flex}.nav__collapse,.icon-btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius-md);background:transparent;color:var(--fg-muted);cursor:pointer;transition:color var(--motion-fast),background var(--motion-fast),border-color var(--motion-fast),transform var(--motion-fast)}.nav__collapse{margin:var(--space-2);padding:6px}.icon-btn{min-width:32px;height:32px;padding:0 8px;font-size:var(--font-xs);font-weight:700}.nav__collapse:hover,.icon-btn:hover{color:var(--fg);background:var(--bg-hover);border-color:var(--border-strong)}.icon-btn:active{transform:scale(.96)}.icon-btn--search{gap:var(--space-2);padding:0 var(--space-3)}.icon-btn__kbd{font-family:var(--font-mono);font-size:.625rem;font-weight:600;color:var(--fg-muted);border:1px solid var(--border);border-radius:var(--radius-sm);padding:1px 5px;letter-spacing:.02em}@media(max-width:640px){.icon-btn__kbd{display:none}}.shell__main{display:flex;flex-direction:column;min-width:0;min-height:0;background:radial-gradient(1200px 300px at 30% -80px,color-mix(in srgb,var(--accent) 7%,transparent),transparent 70%),var(--bg)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);height:var(--topbar-h);padding:0 var(--space-5) 0 var(--space-4);border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg-elevated) 82%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.topbar__status{display:flex;align-items:center;gap:var(--space-2);min-width:0;font-size:var(--font-sm);color:var(--fg-muted)}.topbar__workspace{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--fg);font-weight:550}.topbar__fed{font-size:var(--font-xs);font-weight:700;letter-spacing:.02em;color:var(--accent-ink);border:1px solid color-mix(in srgb,var(--accent) 55%,transparent);border-radius:var(--radius-pill);padding:2px 9px;background:var(--accent-bg)}.topbar__actions{display:flex;gap:var(--space-2)}.dot{width:9px;height:9px;border-radius:50%;background:var(--dot-c, var(--fg-muted));flex-shrink:0}.dot[data-state=ready]{--dot-c: var(--ok)}.dot[data-state=degraded]{--dot-c: var(--warn)}.dot[data-state=offline]{--dot-c: var(--error)}.dot[data-state=ready],.dot[data-state=degraded],.dot[data-state=offline]{box-shadow:0 0 0 3px color-mix(in srgb,var(--dot-c) 22%,transparent)}.dot[data-state=booting]{background:var(--info);animation:fg-dot-pulse 1.2s infinite}@keyframes fg-dot-pulse{50%{opacity:.4}}.content{flex:1;min-height:0;overflow-y:scroll;padding:var(--space-6);overscroll-behavior:contain}.content::-webkit-scrollbar-track{background:color-mix(in srgb,var(--fg-text-dim) 7%,transparent)}.offline-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);border:1px solid color-mix(in srgb,var(--error) 55%,transparent);border-left-width:3px;border-radius:var(--radius-lg);background:var(--error-bg)}.offline-banner p{margin:0}@media(prefers-reduced-motion:reduce){:root:not([data-motion=full]) .dot[data-state=booting]{animation:none}:root:not([data-motion=full]) .nav__item,:root:not([data-motion=full]) .nav__collapse,:root:not([data-motion=full]) .icon-btn{transition:none}}@media(max-width:760px){.shell__side{--sidebar-w: var(--fg-sidebar-w-collapsed)}.brand__text,.nav__label,.nav__section,.nav__item:before,.nav__collapse{display:none}.nav__item{justify-content:center;padding-inline:0}}.muted{color:var(--fg-muted)}.refusal{color:var(--warn)}.num{font-variant-numeric:tabular-nums;white-space:nowrap}.mono{font-family:var(--font-mono)}.lbl{display:block;font-weight:600;margin-bottom:var(--space-2)}.running{display:flex;align-items:center;gap:var(--space-3)}.running p{margin:0}.running__spinner{width:18px;height:18px;flex:none;border-radius:50%;border:2px solid var(--accent-bg);border-top-color:var(--accent-ink);animation:fg-spin .8s linear infinite}@keyframes fg-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){:root:not([data-motion=full]) .running__spinner{animation:none;border-top-color:var(--border-strong)}}.raw{margin:var(--space-2) 0}.raw pre{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3);overflow-x:auto;font-size:var(--font-xs)}.actions{display:grid;gap:6px;list-style:none;padding:0;margin:0}.actions li{display:flex;gap:var(--space-2);overflow-wrap:anywhere}.checks{list-style:none;padding:0;display:grid;gap:6px}.checks li{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.ops__list{list-style:none;padding:0;margin:0;display:grid;gap:var(--space-2)}.op{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md)}.op[data-state=unverified]{border-style:dashed;opacity:.8}.op__body{display:grid;gap:2px;min-width:0}.op__body small{color:var(--fg-muted)}.capability{list-style:none;padding:0;margin:0;display:grid;gap:var(--space-2)}.capability li{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);border:1px dashed var(--border);border-radius:var(--radius-md)}.capability__body{display:grid;gap:2px}.capability__body small{color:var(--fg-muted)}.plan-card{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-2) var(--space-4);margin:var(--space-3) 0}.intent-row{display:flex;gap:var(--space-2)}.intent-field{flex:1;max-width:none;margin-bottom:0}.linklike{border:0;background:none;padding:0;font:inherit;font-weight:550;color:var(--accent-ink);cursor:pointer;text-align:left;text-decoration:none}.linklike:hover{text-decoration:underline}.chip{display:inline-flex;align-items:center;font-size:var(--font-xs);font-weight:700;color:var(--accent-ink);background:var(--accent-bg);border-radius:var(--radius-pill);padding:1px 8px;flex:none}.chip-link{font-size:var(--font-xs);font-weight:600;color:var(--accent-ink);background:var(--accent-bg);border-radius:var(--radius-pill);padding:1px 8px;border:0;cursor:pointer;text-decoration:none;flex:none;transition:background var(--motion-fast),color var(--motion-fast)}.chip-link:hover{text-decoration:underline;background:color-mix(in srgb,var(--accent) 22%,transparent)}.unv-cell{display:flex;align-items:center;gap:var(--space-2)}.stale{border-left:3px solid var(--warn)}.stale p code{color:var(--warn)}tr[data-selected] td{background:var(--accent-bg)}.stepnum{display:grid;place-items:center;width:22px;height:22px;flex:none;border-radius:50%;font-size:var(--font-xs);font-weight:700;color:var(--accent-ink);background:var(--accent-bg);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent)}.scopes{display:grid;gap:var(--space-2);grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.scope,.comp{display:flex;gap:var(--space-2);align-items:flex-start;border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3);cursor:pointer;transition:border-color var(--motion-fast),background var(--motion-fast),box-shadow var(--motion-fast)}.scope:hover,.comp:hover{border-color:var(--border-strong);background:var(--bg-hover)}.scope:focus-within,.comp:focus-within{border-color:var(--fg-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--fg-focus) 22%,transparent)}.scope[data-active],.comp[data-active]{border-color:color-mix(in srgb,var(--accent) 55%,transparent);background:var(--accent-bg)}.scope[data-active]{box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 22%,transparent)}.scope small{display:block;color:var(--fg-muted)}.scope input,.comp input{accent-color:var(--accent-ink)}.scope input{margin-top:2px}.scope input[disabled],.comp input[disabled]{cursor:not-allowed}.comps{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-2)}.comp{align-items:center;gap:6px;border-radius:var(--radius-pill);padding:4px var(--space-3);font-size:var(--font-sm)}.comp[data-active]{font-weight:600}.config-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,320px);gap:var(--space-4);align-items:start}@media(max-width:880px){.config-grid{grid-template-columns:1fr}}.summary__kv{display:grid;gap:var(--space-2);margin:0 0 var(--space-4)}.summary__kv>div{display:flex;justify-content:space-between;gap:var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--border);font-size:var(--font-sm)}.summary__kv>div:last-child{border-bottom:0}.summary__kv dt{color:var(--fg-muted)}.summary__kv dd{margin:0;font-weight:600;text-align:right}.summary__comps{display:flex;flex-wrap:wrap;gap:var(--space-1);justify-content:flex-end}.summary__chip{padding:2px var(--space-2);border-radius:var(--radius-sm);background:var(--accent-bg);color:var(--accent-ink);font-family:var(--font-mono);font-size:var(--font-xs);font-weight:600}.discover__kv{display:grid;gap:var(--space-2);margin:0 0 var(--space-3)}.discover__kv>div{display:flex;justify-content:space-between;gap:var(--space-3);font-size:var(--font-sm)}.discover__kv dt{color:var(--fg-muted)}.discover__kv dd{margin:0;font-weight:600;overflow-wrap:anywhere}.hostlist{list-style:none;padding:0;margin:0;display:grid;gap:6px}.hostlist li{display:flex;align-items:center;gap:var(--space-2);padding:6px var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md)}.hostlist strong{text-transform:capitalize;min-width:72px}.diff{list-style:none;padding:0;margin:0 0 var(--space-3);display:grid;gap:6px;max-height:320px;overflow:auto}.diff__row{display:grid;gap:4px;padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg)}.diff__path{font-weight:650;overflow-wrap:anywhere}.diff__pair{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;font-family:var(--font-mono);font-size:var(--font-xs)}.diff__before,.diff__after{overflow-wrap:anywhere}.diff__before{color:var(--error);text-decoration:line-through}.diff__after{color:var(--ok);text-decoration:none}.diff-none{display:flex;align-items:center;gap:var(--space-2);color:var(--warn);font-size:var(--font-sm)}.verify__row{display:grid;gap:var(--space-3)}.unverified{display:flex;align-items:center;gap:var(--space-2);margin:0;color:var(--warn);font-weight:550}.op-receipt{margin-top:var(--space-3);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg)}.op-receipt__head{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin:0 0 var(--space-2)}.fed__sources,.fed__groups,.fed__legend,.fed__edges,.fed__nodes,.fed__pathlist{list-style:none;margin:0;padding:0}.fed__groups{display:flex;flex-wrap:wrap;gap:var(--space-1)}.fed__groupsel{font-size:var(--font-sm);padding:3px 8px}.fed__snap,.fed__facts,.fed__honest,.fed__path{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin:var(--space-2) 0}.fed__diff{margin:var(--space-3) 0;border-left:3px solid var(--warn)}.fed__diff-cols,.fed__rel-cols{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.fed__rel-cols{margin-top:var(--space-2)}.fed__evidence,.fed__edges li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2)}.fed__edges{display:grid;gap:var(--space-1);font-size:var(--font-sm)}.fed__edge-ev{color:var(--fg-muted);font-size:var(--font-xs)}.fed__impact,.fed__impactsub{margin:var(--space-1) 0;font-weight:650}.fed__impactsec{border-top:1px solid var(--border);margin-top:var(--space-3);padding-top:var(--space-2)}.fed__depth{display:inline-flex;gap:var(--space-1);margin-left:var(--space-2)}.fg-pill--mini{font-size:var(--font-xs);padding:1px 8px}.fed__cycle{border:1px dashed var(--warn);border-radius:var(--radius-pill);padding:0 8px;font-size:var(--font-xs);color:var(--warn)}.fed__pathsel{max-width:22rem;font-size:var(--font-sm)}.fed__pathlist{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1)}.fed__pathlist li{display:inline-flex;align-items:center}.fed__pathlist li+li:before{content:"\2192";color:var(--fg-muted);margin-right:var(--space-1)}.fed__toponote{font-style:italic}.rp__title{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin:0;font-size:var(--font-lg);font-weight:650}.rp__title ui-icon{color:var(--accent-ink)}.rp__scope,.rp__gap,.rp__at,.rp__flow,.rp__unplaced{font-size:var(--font-xs);color:var(--fg-muted)}.rp__scope{font-weight:400}.rp__gap,.rp__at{font-variant-numeric:tabular-nums}.rp__controls{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);margin:var(--space-2) 0}.rp__speed{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-sm)}.rp__speed .select{padding:2px var(--space-2);font-size:var(--font-sm)}.rp__steps{list-style:none;margin:0;padding:0;display:grid;gap:4px;max-height:340px;overflow:auto}.rp__step{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);width:100%;border:1px solid var(--border);border-radius:var(--radius-md);background:none;font:inherit;color:inherit;text-align:left;padding:var(--space-2) var(--space-3);cursor:pointer;transition:box-shadow var(--motion-fast),border-color var(--motion-fast),background var(--motion-fast)}.rp__step:hover,.rp__step[data-current]{border-color:var(--accent-ink)}.rp__step[data-current]{box-shadow:0 0 0 1px var(--accent);background:var(--accent-bg)}.rp__gap{min-width:4.5rem;font-family:var(--font-mono)}.rp__compressed{color:var(--warn)}.rp__kind{color:var(--accent-ink)}.rp__flow{overflow-wrap:anywhere} diff --git a/portal/assets/styles-G23E7YXX.css b/portal/assets/styles-G23E7YXX.css deleted file mode 100644 index cb10139..0000000 --- a/portal/assets/styles-G23E7YXX.css +++ /dev/null @@ -1 +0,0 @@ -:root{--fg-space-1: .25rem;--fg-space-2: .5rem;--fg-space-3: .75rem;--fg-space-4: 1rem;--fg-space-5: 1.5rem;--fg-space-6: 2rem;--fg-space-7: 3rem;--fg-radius-sm: .375rem;--fg-radius-md: .625rem;--fg-radius-lg: .875rem;--fg-radius-pill: 999px;--fg-motion-fast: .12s;--fg-motion-press: .14s;--fg-motion-med: .22s;--fg-motion-ease: cubic-bezier(.2, .8, .2, 1);--fg-ease-out: cubic-bezier(.23, 1, .32, 1);--fg-ease-in-out: cubic-bezier(.77, 0, .175, 1);--fg-elev-1: 0 1px 2px rgb(0 0 0 / .12);--fg-elev-2: 0 4px 16px rgb(0 0 0 / .16);--fg-elev-3: 0 12px 40px rgb(0 0 0 / .24);--fg-font: "Segoe UI", system-ui, -apple-system, "Inter", "Roboto", sans-serif;--fg-font-mono: "Cascadia Code", ui-monospace, "SF Mono", Consolas, monospace;--fg-text-xs: .75rem;--fg-text-sm: .8125rem;--fg-text-md: .9375rem;--fg-text-lg: 1.125rem;--fg-text-xl: 1.25rem;--fg-text-2xl: 1.375rem;--fg-weight-regular: 400;--fg-weight-medium: 500;--fg-weight-semibold: 650;--fg-weight-bold: 700;--fg-leading-tight: 1.25;--fg-leading-base: 1.5;--fg-topbar-h: 3.25rem;--fg-sidebar-w: 15.5rem;--fg-sidebar-w-collapsed: 3.75rem;--fg-focus-width: 2px;--fg-focus-offset: 2px;--fg-focus-ring: 0 0 0 3px color-mix(in srgb, var(--fg-focus) 22%, transparent);--z-base: 0;--z-sticky: 10;--z-overlay: 90;--z-dialog: 100;--z-toast: 120;--fg-on-color: #ffffff;color-scheme:light}:root{--fg-bg: #f4f5f7;--fg-bg-raised: #ffffff;--fg-surface: #ffffff;--fg-surface-2: #eef0f3;--fg-border: #d9dde3;--fg-border-strong: #b9c0ca;--fg-text: #16191d;--fg-text-2: #4b5563;--fg-text-dim: #646c78;--fg-focus: #2563eb;--fg-success: #0b7a42;--fg-success-bg: #e3f5ea;--fg-warning: #a35c00;--fg-warning-bg: #fdf0dd;--fg-error: #c0392b;--fg-error-bg: #fdeceb;--fg-info: #1d5fd1;--fg-info-bg: #e8f0fe;--fg-unverified: #4b5a68;--fg-unverified-bg: #edf0f4;--fg-scrim: rgb(10 12 16 / .45);--skeleton: color-mix(in srgb, var(--fg-text) 10%, transparent)}[data-scheme=dark]{color-scheme:dark;--fg-bg: #0d1014;--fg-bg-raised: #13171d;--fg-surface: #161b22;--fg-surface-2: #1d232c;--fg-border: #2b333d;--fg-border-strong: #3d4754;--fg-text: #e6e9ee;--fg-text-2: #a9b3bf;--fg-text-dim: #7d8894;--fg-focus: #6ea8fe;--fg-success: #3fce7f;--fg-success-bg: #10331f;--fg-warning: #f0b35e;--fg-warning-bg: #3a2a10;--fg-error: #ff6f61;--fg-error-bg: #3d1512;--fg-info: #79a8ff;--fg-info-bg: #15233d;--fg-unverified: #9fb4c7;--fg-unverified-bg: #202a36;--fg-elev-1: 0 1px 2px rgb(0 0 0 / .5);--fg-elev-2: 0 4px 16px rgb(0 0 0 / .45);--fg-elev-3: 0 12px 40px rgb(0 0 0 / .55)}:root,[data-forge=the-forge]{--fg-accent: #e8611c;--fg-accent-strong: #c74e0f;--fg-accent-bg: #fdeee4;--fg-accent-ink: #a8430c;--fg-accent-fill: #a8430c;--fg-accent-contrast: #ffffff;--fg-gradient: linear-gradient(135deg, #e8611c 0%, #b93e6b 100%)}[data-scheme=dark][data-forge=the-forge],[data-scheme=dark] :root[data-forge=the-forge]{--fg-accent-bg: #3a1d0c}[data-forge=spark-forge-aws]{--fg-accent: #e08a00;--fg-accent-strong: #c07a00;--fg-accent-bg: #fdf2dc;--fg-accent-ink: #7d5200;--fg-accent-fill: #e08a00;--fg-accent-contrast: #1d1400;--fg-gradient: linear-gradient(135deg, #e08a00 0%, #c2571b 100%)}[data-forge=spark-forge-azure]{--fg-accent: #0078d4;--fg-accent-strong: #005a9e;--fg-accent-bg: #e2f0fc;--fg-accent-ink: #005a9e;--fg-accent-fill: #005a9e;--fg-accent-contrast: #ffffff;--fg-gradient: linear-gradient(135deg, #0078d4 0%, #2b88d8 100%)}[data-forge=api-forge]{--fg-accent: #0e8f8f;--fg-accent-strong: #0a6e6e;--fg-accent-bg: #def3f2;--fg-accent-ink: #096060;--fg-accent-fill: #096060;--fg-accent-contrast: #ffffff;--fg-gradient: linear-gradient(135deg, #0e8f8f 0%, #1167b1 100%)}[data-forge=platform-forge]{--fg-accent: #6d4bd8;--fg-accent-strong: #5537b8;--fg-accent-bg: #ece6fb;--fg-accent-ink: #5537b8;--fg-accent-fill: #5537b8;--fg-accent-contrast: #ffffff;--fg-gradient: linear-gradient(135deg, #6d4bd8 0%, #8f3fd1 100%)}[data-forge=forge-doctor-data]{--fg-accent: #178a50;--fg-accent-strong: #0f6e3e;--fg-accent-bg: #ddf3e6;--fg-accent-ink: #0d6338;--fg-accent-fill: #0d6338;--fg-accent-contrast: #ffffff;--fg-gradient: linear-gradient(135deg, #178a50 0%, #0d9488 100%)}[data-forge=forge-doctor-api]{--fg-accent: #c73565;--fg-accent-strong: #a02550;--fg-accent-bg: #fbe4ec;--fg-accent-ink: #a02550;--fg-accent-fill: #a02550;--fg-accent-contrast: #ffffff;--fg-gradient: linear-gradient(135deg, #c73565 0%, #9d4edd 100%)}[data-scheme=dark]{--fg-accent-bg: rgb(255 255 255 / .08)}[data-scheme=dark][data-forge=the-forge],[data-scheme=dark]{--fg-accent-ink: #f07a35}[data-scheme=dark][data-forge=spark-forge-aws]{--fg-accent-ink: #e08a00}[data-scheme=dark][data-forge=spark-forge-azure]{--fg-accent-ink: #3d9bff}[data-scheme=dark][data-forge=api-forge]{--fg-accent-ink: #2bb3b3}[data-scheme=dark][data-forge=platform-forge]{--fg-accent-ink: #a08cf0}[data-scheme=dark][data-forge=forge-doctor-data]{--fg-accent-ink: #33c07c}[data-scheme=dark][data-forge=forge-doctor-api]{--fg-accent-ink: #e86a93}:root{--space-1: var(--fg-space-1);--space-2: var(--fg-space-2);--space-3: var(--fg-space-3);--space-4: var(--fg-space-4);--space-5: var(--fg-space-5);--space-6: var(--fg-space-6);--space-8: var(--fg-space-7);--radius-sm: var(--fg-radius-sm);--radius-md: var(--fg-radius-md);--radius-lg: var(--fg-radius-lg);--radius-pill: var(--fg-radius-pill);--font-xs: var(--fg-text-xs);--font-sm: var(--fg-text-sm);--font-md: var(--fg-text-md);--font-lg: var(--fg-text-lg);--font-xl: var(--fg-text-xl);--font-2xl: var(--fg-text-2xl);--font-mono: var(--fg-font-mono);--font-weight-regular: var(--fg-weight-regular);--font-weight-medium: var(--fg-weight-medium);--font-weight-semibold: var(--fg-weight-semibold);--font-weight-bold: var(--fg-weight-bold);--fg: var(--fg-text);--fg-muted: var(--fg-text-2);--fg-dim: var(--fg-text-dim);--bg: var(--fg-bg);--bg-elevated: var(--fg-surface);--bg-hover: var(--fg-surface-2);--border: var(--fg-border);--border-strong: var(--fg-border-strong);--accent: var(--fg-accent);--accent-strong: var(--fg-accent-strong);--accent-bg: var(--fg-accent-bg);--accent-ink: var(--fg-accent-ink);--accent-fill: var(--fg-accent-fill);--accent-fg: var(--fg-accent-contrast);--gradient: var(--fg-gradient);--scrim: var(--fg-scrim);--on-color: var(--fg-on-color);--ok: var(--fg-success);--ok-bg: var(--fg-success-bg);--warn: var(--fg-warning);--warn-bg: var(--fg-warning-bg);--error: var(--fg-error);--error-bg: var(--fg-error-bg);--info: var(--fg-info);--info-bg: var(--fg-info-bg);--unverified: var(--fg-unverified);--unverified-bg: var(--fg-unverified-bg);--topbar-h: var(--fg-topbar-h);--motion: var(--fg-motion-med) var(--fg-motion-ease);--motion-fast: var(--fg-motion-fast) var(--fg-motion-ease);--ease-out: var(--fg-ease-out);--ease-in-out: var(--fg-ease-in-out);--press: var(--fg-motion-press) var(--fg-ease-out);--elev-card: var(--fg-elev-1);--elev-hover: var(--fg-elev-2);--elev-pop: var(--fg-elev-3);--focus-ring: var(--fg-focus-ring)}[data-density=compact]{--fg-space-3: .625rem;--fg-space-4: .75rem;--fg-space-5: 1.125rem;--fg-space-6: 1.5rem;--fg-space-7: 2.25rem}[data-motion=reduced]{--fg-motion-fast: 0ms;--fg-motion-press: 0ms;--fg-motion-med: 0ms}@media(prefers-contrast:more){:root{--fg-border: #9aa3ad;--fg-border-strong: #6b7280;--fg-text-2: #374151;--fg-text-dim: #4b5563;--fg-focus-width: 3px}[data-scheme=dark]{--fg-border: #4a5563;--fg-border-strong: #6b7885;--fg-text-2: #c6cfd9;--fg-text-dim: #9aa7b4;--fg-focus-width: 3px}}@media(prefers-reduced-motion:reduce){:root:not([data-motion=full]){--fg-motion-fast: 0ms;--fg-motion-press: 0ms;--fg-motion-med: 0ms}}*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:var(--fg-font);background:var(--fg-bg);color:var(--fg-text);font-size:.9375rem;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{line-height:1.25;margin:0;font-weight:650}h1{font-size:1.375rem}h2{font-size:1.125rem}h3{font-size:1rem}p{margin:0}a{color:var(--fg-info)}code,pre,.fg-mono{font-family:var(--fg-font-mono);font-size:.85em}button{font:inherit}:focus-visible{outline:var(--fg-focus-width) solid var(--fg-focus);outline-offset:var(--fg-focus-offset);border-radius:var(--fg-radius-sm)}::selection{background:color-mix(in srgb,var(--fg-accent) 26%,transparent)}*{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--fg-text-dim) 35%,transparent) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--fg-text-dim) 35%,transparent);border-radius:8px}::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--fg-text-dim) 55%,transparent)}::-webkit-scrollbar-track{background:transparent}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.fg-card{background:var(--fg-surface);border:1px solid var(--fg-border);border-radius:var(--fg-radius-lg);padding:var(--fg-space-5);box-shadow:var(--fg-elev-1);transition:box-shadow var(--fg-motion-med) var(--fg-motion-ease),border-color var(--fg-motion-fast) var(--fg-motion-ease)}.fg-card[data-lift]{transition-duration:var(--fg-motion-fast),var(--fg-motion-fast)}.fg-card[data-lift]:hover{box-shadow:var(--fg-elev-2);border-color:var(--fg-border-strong)}.fg-pill{display:inline-flex;align-items:center;gap:var(--fg-space-2);border-radius:var(--fg-radius-pill);padding:.125rem .625rem;font-size:.75rem;font-weight:600;letter-spacing:.02em;border:1px solid var(--fg-border);background:var(--fg-surface-2);color:var(--fg-text-2);white-space:nowrap}button.fg-pill,a.fg-pill{cursor:pointer;transition:color var(--fg-motion-fast) var(--fg-motion-ease),background var(--fg-motion-fast) var(--fg-motion-ease),border-color var(--fg-motion-fast) var(--fg-motion-ease),transform var(--fg-motion-press) var(--fg-ease-out)}button.fg-pill:not([data-tone]):hover:not(:disabled),a.fg-pill:not([data-tone]):hover{color:var(--fg-text);background:var(--fg-surface);border-color:var(--fg-border-strong)}button.fg-pill:active:not(:disabled),a.fg-pill:active{transform:scale(.97)}button.fg-pill:disabled{opacity:.55;cursor:not-allowed}button.fg-pill[data-tone=accent]:hover:not(:disabled){background:color-mix(in srgb,var(--fg-accent-fill) 86%,black);color:var(--fg-accent-contrast)}.fg-pill[data-tone=success]{color:var(--fg-success);background:var(--fg-success-bg);border-color:transparent}.fg-pill[data-tone=warning]{color:var(--fg-warning);background:var(--fg-warning-bg);border-color:transparent}.fg-pill[data-tone=error]{color:var(--fg-error);background:var(--fg-error-bg);border-color:transparent}.fg-pill[data-tone=info]{color:var(--fg-info);background:var(--fg-info-bg);border-color:transparent}.fg-pill[data-tone=accent]{color:var(--fg-accent-contrast);background:var(--fg-accent-fill);border-color:transparent}.fg-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--fg-space-2);border-radius:var(--fg-radius-md);border:1px solid var(--fg-border);background:var(--fg-surface);color:var(--fg-text);padding:.5rem 1rem;cursor:pointer;font-weight:550;box-shadow:var(--fg-elev-1);transition:background var(--fg-motion-fast) var(--fg-motion-ease),border-color var(--fg-motion-fast) var(--fg-motion-ease),box-shadow var(--fg-motion-fast) var(--fg-motion-ease),transform var(--fg-motion-fast) var(--fg-motion-ease)}.fg-btn:hover{background:var(--fg-surface-2);border-color:var(--fg-border-strong)}.fg-btn:active{transform:scale(.98);box-shadow:none}.fg-btn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}.fg-btn[data-variant=accent]{background:var(--fg-accent-fill);border-color:var(--fg-accent-fill);color:var(--fg-accent-contrast)}.fg-btn[data-variant=accent]:hover{background:color-mix(in srgb,var(--fg-accent-fill) 86%,black);border-color:color-mix(in srgb,var(--fg-accent-fill) 86%,black);box-shadow:0 2px 8px color-mix(in srgb,var(--fg-accent-fill) 40%,transparent)}.fg-btn[data-variant=danger]{color:var(--fg-error);border-color:var(--fg-error)}.fg-btn[data-variant=danger]:hover{background:var(--fg-error-bg)}.fg-btn[data-variant=ghost]{border-color:transparent;background:transparent;box-shadow:none}.fg-btn[data-variant=ghost]:hover{background:var(--fg-surface-2)}.fg-input,.fg-select,.fg-textarea{width:100%;border:1px solid var(--fg-border);border-radius:var(--fg-radius-md);background:var(--fg-surface);color:var(--fg-text);padding:.5rem .75rem;font:inherit;transition:border-color var(--fg-motion-fast) var(--fg-motion-ease),box-shadow var(--fg-motion-fast) var(--fg-motion-ease)}.fg-input:hover:not(:focus),.fg-select:hover:not(:focus),.fg-textarea:hover:not(:focus){border-color:var(--fg-border-strong)}.fg-input:focus,.fg-select:focus,.fg-textarea:focus{border-color:var(--fg-focus);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--fg-focus) 22%,transparent)}.fg-table{width:100%;border-collapse:collapse;font-size:.875rem}.fg-table th{text-align:left;font-weight:600;color:var(--fg-text-dim);font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;padding:var(--fg-space-2) var(--fg-space-3);border-bottom:1px solid var(--fg-border)}.fg-table td{padding:var(--fg-space-3);border-bottom:1px solid var(--fg-border);vertical-align:top}.fg-table tbody tr{transition:background var(--fg-motion-fast) var(--fg-motion-ease)}.fg-table tbody tr:hover{background:var(--fg-surface-2)}.fg-table tr:last-child td{border-bottom:none}.fg-page{padding:var(--fg-space-6);max-width:76rem;margin:0 auto;display:block}.fg-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--fg-space-4);margin-bottom:var(--fg-space-5);flex-wrap:wrap}.fg-page-title{display:flex;flex-direction:column;gap:var(--fg-space-1)}.fg-page-sub{color:var(--fg-text-2);font-size:.875rem;max-width:46rem}.fg-grid{display:grid;gap:var(--fg-space-4)}.fg-grid[data-cols="2"]{grid-template-columns:repeat(auto-fit,minmax(20rem,1fr))}.fg-grid[data-cols="3"]{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))}.fg-muted{color:var(--fg-text-2)}.fg-dim{color:var(--fg-text-dim)}.fg-small{font-size:.8125rem}.fg-row{display:flex;align-items:center;gap:var(--fg-space-3)}.fg-row[data-wrap]{flex-wrap:wrap}.fg-spread{justify-content:space-between}.fg-stack{display:flex;flex-direction:column;gap:var(--fg-space-3)}.fg-kv{display:grid;grid-template-columns:minmax(9rem,auto) 1fr;gap:var(--fg-space-2) var(--fg-space-4);font-size:.875rem}.fg-kv dt{color:var(--fg-text-dim)}.fg-kv dd{margin:0;word-break:break-word}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-elevated);color:var(--fg);padding:.5rem 1rem;cursor:pointer;font-weight:550;font-size:.875rem;box-shadow:var(--elev-card);transition:background var(--motion-fast),border-color var(--motion-fast),box-shadow var(--motion-fast),transform var(--motion-fast)}.btn:hover{background:var(--bg-hover);border-color:var(--border-strong)}.btn:active{transform:scale(.97);box-shadow:none;transition-duration:var(--fg-motion-press)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}a.btn,a.btn:hover{text-decoration:none}.btn--primary{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--accent-fg)}.btn--primary:hover{background:color-mix(in srgb,var(--fg-accent-fill) 86%,black);border-color:color-mix(in srgb,var(--fg-accent-fill) 86%,black);box-shadow:0 2px 10px color-mix(in srgb,var(--accent-fill) 40%,transparent)}.btn--danger{color:var(--error);border-color:var(--error)}.btn--danger:hover{background:var(--error-bg)}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--elev-card);transition:box-shadow var(--motion),border-color var(--motion-fast),transform var(--motion)}.card[data-lift]{transition-duration:var(--fg-motion-fast),var(--fg-motion-fast),var(--fg-motion-fast)}.card[data-lift]:hover{box-shadow:var(--elev-hover);border-color:var(--border-strong);transform:translateY(-2px)}.input,.select,.textarea{width:100%;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-elevated);color:var(--fg);padding:.5rem .75rem;font:inherit;transition:border-color var(--motion-fast),box-shadow var(--motion-fast)}.input:hover:not(:focus),.select:hover:not(:focus),.textarea:hover:not(:focus){border-color:var(--border-strong)}.input:focus,.select:focus,.textarea:focus{border-color:var(--fg-focus);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--fg-focus) 22%,transparent)}.table{width:100%;border-collapse:collapse;font-size:.875rem}.table th{text-align:left;font-weight:600;color:var(--fg-muted);font-size:var(--font-xs);text-transform:uppercase;letter-spacing:.05em;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border)}.table td{padding:var(--space-3);border-bottom:1px solid var(--border);vertical-align:top}.table tbody tr{transition:background var(--motion-fast)}.table tbody tr:hover{background:var(--bg-hover)}.table tr:last-child td{border-bottom:none}.skeleton{border-radius:var(--radius-md);background:linear-gradient(100deg,var(--bg-hover) 40%,color-mix(in srgb,var(--bg-hover) 55%,var(--fg-muted) 12%) 50%,var(--bg-hover) 60%);background-size:200% 100%;animation:fg-shimmer 1.4s linear infinite}.skeleton--line{height:.875rem;margin:var(--space-2) 0}.skeleton--block{min-height:7rem;border-radius:var(--radius-lg)}@keyframes fg-shimmer{0%{background-position:180% 0}to{background-position:-20% 0}}.search-field{position:relative;max-width:360px;margin-bottom:var(--space-4)}.search-field ui-icon{position:absolute;left:10px;top:50%;translate:0 -50%;color:var(--fg-muted);pointer-events:none}.search-field .input{padding-left:32px}.stat{position:relative;display:grid;gap:2px;padding:var(--space-4) var(--space-5) var(--space-4) calc(var(--space-5) + 3px);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--elev-card);overflow:hidden;transition:box-shadow var(--motion),transform var(--motion),border-color var(--motion-fast)}.stat:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--stat-rail, var(--accent))}.stat{transition-duration:var(--fg-motion-fast),var(--fg-motion-fast),var(--fg-motion-fast)}.stat:hover{box-shadow:var(--elev-hover);border-color:var(--border-strong);transform:translateY(-2px)}.stat__value{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;line-height:1.15;font-variant-numeric:tabular-nums}.stat__label{font-size:var(--font-xs);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--fg-muted)}.stat__hint{font-size:var(--font-xs);color:var(--fg-muted)}@keyframes fg-page-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}page-dashboard,page-install,page-config,page-explorer,page-forge-detail,page-profiles,page-hosts,page-mcp,page-skills,page-agents,page-tasks,page-graph,page-knowledge,page-settings{display:block;animation:fg-page-in var(--fg-motion-med) var(--fg-motion-ease) both}@media(prefers-reduced-motion:reduce){.skeleton{animation:none}page-dashboard,page-install,page-config,page-explorer,page-forge-detail,page-profiles,page-hosts,page-mcp,page-skills,page-agents,page-tasks,page-graph,page-knowledge,page-settings{animation:none}}@keyframes fg-pop{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.fg-pop{animation:fg-pop var(--fg-motion-med) var(--fg-ease-out) both}.stagger>*{animation:fg-page-in var(--fg-motion-med) var(--fg-ease-out) both}.stagger>*:nth-child(2){animation-delay:40ms}.stagger>*:nth-child(3){animation-delay:80ms}.stagger>*:nth-child(4){animation-delay:.12s}.stagger>*:nth-child(n+5){animation-delay:.16s}.fg-enter{animation:fg-page-in var(--fg-motion-med) var(--fg-ease-out) both}@media(prefers-reduced-motion:reduce){.stagger>*,.fg-pop,.fg-enter{animation:none}}.stepper{display:flex;list-style:none;margin:0;padding:0;gap:0}.stepper__step{position:relative;display:flex;align-items:center;gap:var(--space-2);flex:1;min-width:0;color:var(--fg-muted);font-size:var(--font-sm)}.stepper__step:not(:last-child):after{content:"";flex:1;height:2px;margin:0 var(--space-3);border-radius:1px;background:var(--border);transition:background var(--motion-med) var(--ease-out)}.stepper__dot{display:grid;place-items:center;width:26px;height:26px;flex:none;border-radius:50%;border:1.5px solid var(--border-strong);font-size:var(--font-xs);font-weight:650;transition:background var(--motion-med) var(--ease-out),border-color var(--motion-med) var(--ease-out),color var(--motion-fast)}.stepper__step[data-state=done]{color:var(--fg)}.stepper__step[data-state=done] .stepper__dot{background:var(--ok);border-color:var(--ok);color:var(--on-color);animation:fg-pop var(--fg-motion-med) var(--fg-ease-out) both}.stepper__step[data-state=done]:after{background:var(--ok)}.stepper__step[data-state=active]{color:var(--fg);font-weight:600}.stepper__step[data-state=active] .stepper__dot{border-color:var(--accent-ink);color:var(--accent-ink);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 15%,transparent)}.stepper__step[data-state=warn] .stepper__dot{background:var(--warn);border-color:var(--warn);color:var(--on-color)}@media(prefers-reduced-motion:reduce){.stepper__step[data-state=done] .stepper__dot{animation:none}}@media(max-width:560px){.stepper{flex-wrap:wrap;gap:var(--space-2)}.stepper__step{flex:none}.stepper__step:not(:last-child):after{display:none}}.cap{display:inline-flex;align-items:center;gap:var(--space-2);padding:7px var(--space-3) 7px var(--space-2);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-hover);font-size:var(--font-sm);font-weight:550;color:var(--fg)}.cap ui-icon{color:var(--fg-muted)}.cap__dot{width:8px;height:8px;border-radius:50%;background:var(--fg-muted)}.cap[data-state=supported]{border-color:color-mix(in srgb,var(--ok) 40%,transparent);background:var(--ok-bg)}.cap[data-state=supported] ui-icon{color:var(--ok)}.cap[data-state=supported] .cap__dot{background:var(--ok)}.cap[data-state=unverified]{border-color:color-mix(in srgb,var(--unverified) 45%,transparent);background:var(--unverified-bg)}.cap[data-state=unverified] ui-icon{color:var(--unverified)}.cap[data-state=unverified] .cap__dot{background:var(--unverified)}.cap[data-state=unsupported],.cap[data-state=not_applicable]{opacity:.6}.portal-row{display:flex;align-items:flex-start;gap:var(--space-3);margin-top:var(--space-4);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--fg-muted)}.portal-row[data-state=installed]{border-color:color-mix(in srgb,var(--ok) 45%,var(--border));color:var(--fg)}.portal-row[data-state=installed] ui-icon{color:var(--ok)}.portal-row__body{display:grid;gap:2px;min-width:0}.portal-row__body small{overflow-wrap:anywhere}.skip-link{position:fixed;top:var(--space-3);left:var(--space-3);z-index:100;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);background:var(--bg-elevated);color:var(--fg);border:1px solid var(--border-strong);box-shadow:var(--elev-pop);transform:translateY(-200%);transition:transform var(--motion-fast)}.skip-link:focus-visible{transform:translateY(0)}details>summary{cursor:pointer;font-weight:600;color:var(--fg-muted);border-radius:var(--radius-sm);transition:color var(--motion-fast)}details>summary:hover{color:var(--fg)}details>summary::marker{color:var(--accent-ink)}.shell{display:grid;grid-template-columns:auto 1fr;height:100dvh;overflow:hidden}.shell__side{display:flex;flex-direction:column;min-height:0;width:var(--sidebar-w, var(--fg-sidebar-w));border-right:1px solid var(--border);background:var(--bg-elevated);transition:width var(--motion)}.shell__side[data-collapsed]{--sidebar-w: var(--fg-sidebar-w-collapsed)}.shell__side[data-collapsed] .brand__text,.shell__side[data-collapsed] .nav__label,.shell__side[data-collapsed] .nav__section{display:none}.shell__side[data-collapsed] .nav__item{justify-content:center;padding-inline:0}.shell__side[data-collapsed] .nav__item:before{display:none}.shell__side[data-collapsed] .nav__item--active{background:var(--accent-bg)}.brand{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);text-decoration:none;color:var(--fg);border-bottom:1px solid var(--border);min-height:var(--topbar-h)}.brand__mark{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--gradient);color:var(--accent-fg);font-size:13px;line-height:1;box-shadow:0 2px 8px color-mix(in srgb,var(--accent) 45%,transparent);flex-shrink:0}.brand__text{display:grid;line-height:1.25;min-width:0}.brand__text strong,.brand__text small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand__text strong{font-size:var(--font-sm);font-weight:650;letter-spacing:-.01em}.brand__text small{color:var(--fg-muted);font-size:var(--font-xs)}.nav{flex:1;min-height:0;overflow-y:scroll;overflow-x:hidden;padding:var(--space-3) var(--space-2);display:flex;flex-direction:column;gap:2px}.nav::-webkit-scrollbar-track{background:color-mix(in srgb,var(--fg-text-dim) 10%,transparent)}.nav__group{display:contents}.nav__section{margin:var(--space-4) var(--space-3) 4px;font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--fg-muted)}.nav__item{position:relative;display:flex;align-items:center;gap:var(--space-3);padding:8px var(--space-3) 8px calc(var(--space-3) + 3px);border-radius:var(--radius-md);color:var(--fg-muted);text-decoration:none;font-size:var(--font-sm);font-weight:500;transition:background var(--motion-fast),color var(--motion-fast),transform var(--motion-fast)}.nav__item:before{content:"";position:absolute;left:0;top:50%;translate:0 -50%;width:3px;height:0;border-radius:3px;background:var(--accent);transition:height var(--motion-fast)}.nav__item:hover{background:var(--bg-hover);color:var(--fg)}.nav__item--active{background:var(--accent-bg);color:var(--accent-ink);font-weight:600}.nav__item--active:before{height:60%}.nav__icon{flex-shrink:0;display:inline-flex}.nav__collapse,.icon-btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius-md);background:transparent;color:var(--fg-muted);cursor:pointer;transition:color var(--motion-fast),background var(--motion-fast),border-color var(--motion-fast),transform var(--motion-fast)}.nav__collapse{margin:var(--space-2);padding:6px}.icon-btn{min-width:32px;height:32px;padding:0 8px;font-size:var(--font-xs);font-weight:700}.nav__collapse:hover,.icon-btn:hover{color:var(--fg);background:var(--bg-hover);border-color:var(--border-strong)}.icon-btn:active{transform:scale(.96)}.icon-btn--search{gap:var(--space-2);padding:0 var(--space-3)}.icon-btn__kbd{font-family:var(--font-mono);font-size:.625rem;font-weight:600;color:var(--fg-muted);border:1px solid var(--border);border-radius:var(--radius-sm);padding:1px 5px;letter-spacing:.02em}@media(max-width:640px){.icon-btn__kbd{display:none}}.shell__main{display:flex;flex-direction:column;min-width:0;min-height:0;background:radial-gradient(1200px 300px at 30% -80px,color-mix(in srgb,var(--accent) 7%,transparent),transparent 70%),var(--bg)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);height:var(--topbar-h);padding:0 var(--space-5) 0 var(--space-4);border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg-elevated) 82%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.topbar__status{display:flex;align-items:center;gap:var(--space-2);min-width:0;font-size:var(--font-sm);color:var(--fg-muted)}.topbar__workspace{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--fg);font-weight:550}.topbar__fed{font-size:var(--font-xs);font-weight:700;letter-spacing:.02em;color:var(--accent-ink);border:1px solid color-mix(in srgb,var(--accent) 55%,transparent);border-radius:var(--radius-pill);padding:2px 9px;background:var(--accent-bg)}.topbar__actions{display:flex;gap:var(--space-2)}.dot{width:9px;height:9px;border-radius:50%;background:var(--dot-c, var(--fg-muted));flex-shrink:0}.dot[data-state=ready]{--dot-c: var(--ok)}.dot[data-state=degraded]{--dot-c: var(--warn)}.dot[data-state=offline]{--dot-c: var(--error)}.dot[data-state=ready],.dot[data-state=degraded],.dot[data-state=offline]{box-shadow:0 0 0 3px color-mix(in srgb,var(--dot-c) 22%,transparent)}.dot[data-state=booting]{background:var(--info);animation:fg-dot-pulse 1.2s infinite}@keyframes fg-dot-pulse{50%{opacity:.4}}.content{flex:1;min-height:0;overflow-y:scroll;padding:var(--space-6);overscroll-behavior:contain}.content::-webkit-scrollbar-track{background:color-mix(in srgb,var(--fg-text-dim) 7%,transparent)}.offline-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);border:1px solid color-mix(in srgb,var(--error) 55%,transparent);border-left-width:3px;border-radius:var(--radius-lg);background:var(--error-bg)}.offline-banner p{margin:0}@media(prefers-reduced-motion:reduce){.dot[data-state=booting]{animation:none}.nav__item,.nav__collapse,.icon-btn{transition:none}}@media(max-width:760px){.shell__side{--sidebar-w: var(--fg-sidebar-w-collapsed)}.brand__text,.nav__label,.nav__section,.nav__item:before,.nav__collapse{display:none}.nav__item{justify-content:center;padding-inline:0}}.muted{color:var(--fg-muted)}.refusal{color:var(--warn)}.num{font-variant-numeric:tabular-nums;white-space:nowrap}.mono{font-family:var(--font-mono)}.lbl{display:block;font-weight:600;margin-bottom:var(--space-2)}.running{display:flex;align-items:center;gap:var(--space-3)}.running p{margin:0}.running__spinner{width:18px;height:18px;flex:none;border-radius:50%;border:2px solid var(--accent-bg);border-top-color:var(--accent-ink);animation:fg-spin .8s linear infinite}@keyframes fg-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.running__spinner{animation:none;border-top-color:var(--border-strong)}}.raw{margin:var(--space-2) 0}.raw pre{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3);overflow-x:auto;font-size:var(--font-xs)}.actions{display:grid;gap:6px;list-style:none;padding:0;margin:0}.actions li{display:flex;gap:var(--space-2);overflow-wrap:anywhere}.checks{list-style:none;padding:0;display:grid;gap:6px}.checks li{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.ops__list{list-style:none;padding:0;margin:0;display:grid;gap:var(--space-2)}.op{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md)}.op[data-state=unverified]{border-style:dashed;opacity:.8}.op__body{display:grid;gap:2px;min-width:0}.op__body small{color:var(--fg-muted)}.capability{list-style:none;padding:0;margin:0;display:grid;gap:var(--space-2)}.capability li{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);border:1px dashed var(--border);border-radius:var(--radius-md)}.capability__body{display:grid;gap:2px}.capability__body small{color:var(--fg-muted)}.plan-card{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-2) var(--space-4);margin:var(--space-3) 0}.intent-row{display:flex;gap:var(--space-2)}.intent-field{flex:1;max-width:none;margin-bottom:0}.linklike{border:0;background:none;padding:0;font:inherit;font-weight:550;color:var(--accent-ink);cursor:pointer;text-align:left;text-decoration:none}.linklike:hover{text-decoration:underline}.chip{display:inline-flex;align-items:center;font-size:var(--font-xs);font-weight:700;color:var(--accent-ink);background:var(--accent-bg);border-radius:var(--radius-pill);padding:1px 8px;flex:none}.chip-link{font-size:var(--font-xs);font-weight:600;color:var(--accent-ink);background:var(--accent-bg);border-radius:var(--radius-pill);padding:1px 8px;border:0;cursor:pointer;text-decoration:none;flex:none;transition:background var(--motion-fast),color var(--motion-fast)}.chip-link:hover{text-decoration:underline;background:color-mix(in srgb,var(--accent) 22%,transparent)}.unv-cell{display:flex;align-items:center;gap:var(--space-2)}.stale{border-left:3px solid var(--warn)}.stale p code{color:var(--warn)}tr[data-selected] td{background:var(--accent-bg)}.stepnum{display:grid;place-items:center;width:22px;height:22px;flex:none;border-radius:50%;font-size:var(--font-xs);font-weight:700;color:var(--accent-ink);background:var(--accent-bg);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent)}.scopes{display:grid;gap:var(--space-2);grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.scope,.comp{display:flex;gap:var(--space-2);align-items:flex-start;border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3);cursor:pointer;transition:border-color var(--motion-fast),background var(--motion-fast),box-shadow var(--motion-fast)}.scope:hover,.comp:hover{border-color:var(--border-strong);background:var(--bg-hover)}.scope:focus-within,.comp:focus-within{border-color:var(--fg-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--fg-focus) 22%,transparent)}.scope[data-active],.comp[data-active]{border-color:color-mix(in srgb,var(--accent) 55%,transparent);background:var(--accent-bg)}.scope[data-active]{box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 22%,transparent)}.scope small{display:block;color:var(--fg-muted)}.scope input,.comp input{accent-color:var(--accent-ink)}.scope input{margin-top:2px}.scope input[disabled],.comp input[disabled]{cursor:not-allowed}.comps{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-2)}.comp{align-items:center;gap:6px;border-radius:var(--radius-pill);padding:4px var(--space-3);font-size:var(--font-sm)}.comp[data-active]{font-weight:600}.config-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,320px);gap:var(--space-4);align-items:start}@media(max-width:880px){.config-grid{grid-template-columns:1fr}}.summary__kv{display:grid;gap:var(--space-2);margin:0 0 var(--space-4)}.summary__kv>div{display:flex;justify-content:space-between;gap:var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--border);font-size:var(--font-sm)}.summary__kv>div:last-child{border-bottom:0}.summary__kv dt{color:var(--fg-muted)}.summary__kv dd{margin:0;font-weight:600;text-align:right}.summary__comps{display:flex;flex-wrap:wrap;gap:var(--space-1);justify-content:flex-end}.summary__chip{padding:2px var(--space-2);border-radius:var(--radius-sm);background:var(--accent-bg);color:var(--accent-ink);font-family:var(--font-mono);font-size:var(--font-xs);font-weight:600}.discover__kv{display:grid;gap:var(--space-2);margin:0 0 var(--space-3)}.discover__kv>div{display:flex;justify-content:space-between;gap:var(--space-3);font-size:var(--font-sm)}.discover__kv dt{color:var(--fg-muted)}.discover__kv dd{margin:0;font-weight:600;overflow-wrap:anywhere}.hostlist{list-style:none;padding:0;margin:0;display:grid;gap:6px}.hostlist li{display:flex;align-items:center;gap:var(--space-2);padding:6px var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md)}.hostlist strong{text-transform:capitalize;min-width:72px}.diff{list-style:none;padding:0;margin:0 0 var(--space-3);display:grid;gap:6px;max-height:320px;overflow:auto}.diff__row{display:grid;gap:4px;padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg)}.diff__path{font-weight:650;overflow-wrap:anywhere}.diff__pair{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;font-family:var(--font-mono);font-size:var(--font-xs)}.diff__before,.diff__after{overflow-wrap:anywhere}.diff__before{color:var(--error);text-decoration:line-through}.diff__after{color:var(--ok);text-decoration:none}.diff-none{display:flex;align-items:center;gap:var(--space-2);color:var(--warn);font-size:var(--font-sm)}.verify__row{display:grid;gap:var(--space-3)}.unverified{display:flex;align-items:center;gap:var(--space-2);margin:0;color:var(--warn);font-weight:550}.op-receipt{margin-top:var(--space-3);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg)}.op-receipt__head{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin:0 0 var(--space-2)}.fed__sources,.fed__groups,.fed__legend,.fed__edges,.fed__nodes,.fed__pathlist{list-style:none;margin:0;padding:0}.fed__groups{display:flex;flex-wrap:wrap;gap:var(--space-1)}.fed__groupsel{font-size:var(--font-sm);padding:3px 8px}.fed__snap,.fed__facts,.fed__honest,.fed__path{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin:var(--space-2) 0}.fed__diff{margin:var(--space-3) 0;border-left:3px solid var(--warn)}.fed__diff-cols,.fed__rel-cols{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.fed__rel-cols{margin-top:var(--space-2)}.fed__evidence,.fed__edges li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2)}.fed__edges{display:grid;gap:var(--space-1);font-size:var(--font-sm)}.fed__edge-ev{color:var(--fg-muted);font-size:var(--font-xs)}.fed__impact,.fed__impactsub{margin:var(--space-1) 0;font-weight:650}.fed__impactsec{border-top:1px solid var(--border);margin-top:var(--space-3);padding-top:var(--space-2)}.fed__depth{display:inline-flex;gap:var(--space-1);margin-left:var(--space-2)}.fg-pill--mini{font-size:var(--font-xs);padding:1px 8px}.fed__cycle{border:1px dashed var(--warn);border-radius:var(--radius-pill);padding:0 8px;font-size:var(--font-xs);color:var(--warn)}.fed__pathsel{max-width:22rem;font-size:var(--font-sm)}.fed__pathlist{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1)}.fed__pathlist li{display:inline-flex;align-items:center}.fed__pathlist li+li:before{content:"\2192";color:var(--fg-muted);margin-right:var(--space-1)}.fed__toponote{font-style:italic}.rp__title{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin:0;font-size:var(--font-lg);font-weight:650}.rp__title ui-icon{color:var(--accent-ink)}.rp__scope,.rp__gap,.rp__at,.rp__flow,.rp__unplaced{font-size:var(--font-xs);color:var(--fg-muted)}.rp__scope{font-weight:400}.rp__gap,.rp__at{font-variant-numeric:tabular-nums}.rp__controls{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);margin:var(--space-2) 0}.rp__speed{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-sm)}.rp__speed .select{padding:2px var(--space-2);font-size:var(--font-sm)}.rp__steps{list-style:none;margin:0;padding:0;display:grid;gap:4px;max-height:340px;overflow:auto}.rp__step{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);width:100%;border:1px solid var(--border);border-radius:var(--radius-md);background:none;font:inherit;color:inherit;text-align:left;padding:var(--space-2) var(--space-3);cursor:pointer;transition:box-shadow var(--motion-fast),border-color var(--motion-fast),background var(--motion-fast)}.rp__step:hover,.rp__step[data-current]{border-color:var(--accent-ink)}.rp__step[data-current]{box-shadow:0 0 0 1px var(--accent);background:var(--accent-bg)}.rp__gap{min-width:4.5rem;font-family:var(--font-mono)}.rp__compressed{color:var(--warn)}.rp__kind{color:var(--accent-ink)}.rp__flow{overflow-wrap:anywhere} diff --git a/portal/manifest.json b/portal/manifest.json index 53406c6..ea0ece3 100644 --- a/portal/manifest.json +++ b/portal/manifest.json @@ -1,156 +1,164 @@ { "files": { - "chunk-0WpwvubF.js": { - "bytes": 2237, - "sha256": "8f68bda3f85cddc83d9d5a9719eca4389b27a33ca3519786894e0dbe5ade76d5" + "chunk-16deWS0U.js": { + "bytes": 1651, + "sha256": "6d7120bcb708c47de243af76fa67784feca7f76518ac006f2ae083c8181221fd" }, - "chunk-1IC1Ht1p.js": { - "bytes": 13063, - "sha256": "5dabe2ccd38002aad8b7f5c0e7ff674ba13a9515c359b60c072a03d151886b3a" + "chunk-92Xoau85.js": { + "bytes": 10855, + "sha256": "cc71ccca03ee9ea1202f22f43c90f0687cec730ff582d06b5d638850a03d5e50" }, - "chunk-B5UUjcvD.js": { - "bytes": 2527, - "sha256": "4778527f33105dc35c27d417a9b064a40f29b1a7943b8060faed75b9335bd087" + "chunk-BAgCErjk.js": { + "bytes": 457238, + "sha256": "c246b22df242ba02d8f16ea135cd52155fe6c118026d8028a35e4ad72b6f406e" + }, + "chunk-BF4IykBc.js": { + "bytes": 17669, + "sha256": "db9bd6e28af2c3d96cf22eac4ba5696e5ac8ecf9fc1d535e4885212cc14aa001" }, - "chunk-BBusSOqc.js": { + "chunk-BGgpmc9t.js": { "bytes": 4015, - "sha256": "5776a1ad081a5165df48c97dd0b72381d735db03b2ff53bd17e51423ee4e6ce3" + "sha256": "36b3c9bafee5cccc51c69849bff704edf9ce556a23fb8fa5b91b306c937d26c4" }, - "chunk-BKRLVsID.js": { - "bytes": 1648, - "sha256": "d06889f219e2d85c796e1a9a24fee63a32a849abd41de93542938090442a21bf" + "chunk-BNDlNg-C.js": { + "bytes": 2237, + "sha256": "346c28755acbb6e72925b04b0b3eef1205f148ac8edf6e43f020c83aeebd616b" }, - "chunk-BKcxAbqq.js": { - "bytes": 50790, - "sha256": "fae620ffb18b231552eca267be5cc54d4a4859fdfe5f68fd39867d0ef174b89d" + "chunk-BYYLUO5t.js": { + "bytes": 4774, + "sha256": "7cd8b868f4c81dbfaed000cafc5563c26df20a151a662f5272b38f395dcb6924" }, - "chunk-BOg-dd4X.js": { - "bytes": 16405, - "sha256": "c03c3939a1d34f7d876ca2d5e7eecefaf8238cdc2c1a6e1d5d97e8c1a64c80ea" + "chunk-BYyT8UUn.js": { + "bytes": 23904, + "sha256": "e76a2a7f77302d281fb6f675c8acc6cb41f4f95f5c55aeb9de78706ab3216aea" }, - "chunk-BUdnTjRC.js": { - "bytes": 15262, - "sha256": "66306b0dda3c8beb45a01915ccfcd254ce5bc5dcc3392e244be9d006b70113c0" + "chunk-B_bDidf_.js": { + "bytes": 7585, + "sha256": "755ef31e4c459b81756f03a5a9b1b8d1626a0dd5ac08228ea872c7892a70df5e" }, - "chunk-BZzb34kV.js": { - "bytes": 10854, - "sha256": "266afef2c2486a7531c183f831782d5ed144fd951489c0b0ea73154a4ac18f36" + "chunk-BefGrJ9d.js": { + "bytes": 281801, + "sha256": "9d87692ecafb803d308e283a9a721964b7208c27c362373e2b7930c768df360c" }, - "chunk-BelLryvf.js": { - "bytes": 281684, - "sha256": "c52942789451b9cffff0430d89b3ce02d2beb05662a107e9c706eaa6436bdcad" + "chunk-BflJ-4CO.js": { + "bytes": 12432, + "sha256": "cdb03a49be391ff1cdacd6fab673fe0b0123d0a6320e7b42e6f799593e3e4fba" }, - "chunk-BhLaTFvG.js": { - "bytes": 47917, - "sha256": "d39ecd967ac6dcb878ad44f60e4661556a6e87e8c1e9dab2174972124c17e1cc" + "chunk-Bg2lccQE.js": { + "bytes": 4857, + "sha256": "2bdda731fdd3d30e5add002e28ff87063933b5eea9f1a76eee14c69463a1f204" }, - "chunk-BiLsIL6D.js": { - "bytes": 33354, - "sha256": "c1c89af343c0d33e6eba8ece32bf588b7b6bc3868f4a8cdda7fd84aface18d41" + "chunk-BkDXoz47.js": { + "bytes": 11118, + "sha256": "d921c762d7dcc4837a56ce9e798d80109784c5207fcb53d382ca5e41ef87fb9b" }, - "chunk-Bqgc-mwk.js": { - "bytes": 12808, - "sha256": "eb42edc78b999d519f16ea889539b59a61e1c3a6238e295d60c5724d67416f3d" + "chunk-Br6NMJL9.js": { + "bytes": 2146, + "sha256": "187230a0e7850bbc622a04f252901ac2121abc65febdd30621285cdaaed24b62" + }, + "chunk-C0nXO1-7.js": { + "bytes": 1728, + "sha256": "39343c966b97d70d8886be7341235ecfa9a6795f5558ba6e48501d8dcf348f9a" }, - "chunk-BtsfId7c.js": { - "bytes": 30299, - "sha256": "1e1103eac9ad614c9112cf96bcc60ffb46fdc9b4c0ab28d0ee04f803bdd7d202" + "chunk-CCHwcZ3Q.js": { + "bytes": 2527, + "sha256": "c1537eac2c542616f7380fce6b32aa53203e60e1588fa2f282cd56ffd3146aba" }, - "chunk-C5-CCisw.js": { - "bytes": 23656, - "sha256": "360d6eabdcee510bec93e50a11007bb45d2cacf048489a9a3972e29f722490d5" + "chunk-CDQZIMhH.js": { + "bytes": 23657, + "sha256": "ab6854f493a0b6c3263e8f8cdbf9f2e09e4fb84192f9b4deb4eff02c2e4718f8" }, - "chunk-CXfCkbMK.js": { - "bytes": 31582, - "sha256": "b54a5b1f5e480f03bc898ca7875154634116f1a621180fc77c0add520998bbde" + "chunk-CM-MlJlQ.js": { + "bytes": 40190, + "sha256": "89c95c6643d573f9155c8640db03a98761d429dd2f205f91b49e2637aa1e73ae" }, - "chunk-Cci2spkQ.js": { - "bytes": 31472, - "sha256": "c0a7c6ff3f375b7098b78319a9690a85a3914b3ff9f28a4ead3440de806cbe14" + "chunk-CR0uEECS.js": { + "bytes": 30300, + "sha256": "87dc815073ac788d0f9bdd0661e0fd19a50ea7c09fa5001040144f84320b2ae6" }, - "chunk-CiuPOfJ0.js": { - "bytes": 4856, - "sha256": "ee537623c685b7933041dfc5afaa97976916554572c4da7306ff6cb992e8188e" + "chunk-CygOa7EH.js": { + "bytes": 4914, + "sha256": "c0d51c884a3cb33addf8d9e126b536987c54f77e7e82e4e8a1d903187a6f61e3" }, "chunk-D-7Jr8A3.js": { "bytes": 1514, "sha256": "6aab6cd467efb8913bfeeb6c0533ebf3eefa97bfc934cd33920a7bf1d15ef41d" }, - "chunk-D2-KpBLI.js": { - "bytes": 4911, - "sha256": "b39f65f7e08911d72555bb7cab15001ef6139ad4d29d5d802609c2d8cc5e1d0a" + "chunk-D4lhtoQa.js": { + "bytes": 58374, + "sha256": "9fd438606ff6f663f802b0e71a64e71071ea384c9720d02ad526145f0e341809" }, - "chunk-D2KAfPv6.js": { - "bytes": 5404, - "sha256": "03b7815f55109677c81bcc12c1f1d423cf9f7e58d284cef79f652c70bd43e0d9" + "chunk-D5z0OfqY.js": { + "bytes": 13196, + "sha256": "98ba29f6499169ed8dc3322e867355df0ff993b8bbcdd918a25d7916254aacb4" }, - "chunk-D34eMkm4.js": { - "bytes": 1583, - "sha256": "d5df33757c837f44d6b783470c2f3ed927239bc1d9a4ea4c31b69b10afbde344" + "chunk-DNCrHYu6.js": { + "bytes": 16405, + "sha256": "90289215feab6191b9d3ae3ddb3ee1a13af9219d19f5cd74dde4c4bb2cfdea90" }, - "chunk-D51YTy_x.js": { - "bytes": 17678, - "sha256": "1e27b38eca8051aecdc0cbb4dc3cfc1e9fda9681cb90043f4329aae8c3413fdb" + "chunk-DQFb71Td.js": { + "bytes": 29228, + "sha256": "fc9afcf4897d24c74d088e3c983da6a4ff6b5b38a56e1a821902d97fe17ec2ac" }, - "chunk-D67lmMI_.js": { - "bytes": 12431, - "sha256": "f8bfe7a28abd2017c9c5ac66985e08ef11413161880f7259e4d49b1445c8a034" + "chunk-DQJAW8AL.js": { + "bytes": 1585, + "sha256": "c2c7c259e71ccb43dddb44a3d9edd9882d476ecc629e631dac83c50494c6c1b9" }, - "chunk-D84lgeyr.js": { - "bytes": 52381, - "sha256": "2416f6001dde1584549b9e183903b6f7615d05bdf36fe4344a6bacd5045247fa" + "chunk-DQtX_-dj.js": { + "bytes": 5404, + "sha256": "b2de838a1000fe3dbba621eda09694fb48e1399057c8c4c00768fc16d33bb02e" }, - "chunk-DJd3bKJi.js": { - "bytes": 6212, - "sha256": "bee963130ad7666f5496c2d2a2a063ef3de4e68add8ed358f19a8e91e9da5ef0" + "chunk-DgMFvN4-.js": { + "bytes": 31473, + "sha256": "6931ef3e013404573b871dd83c1b7a889e9d712ab6854a35277c22d5099d40ab" }, - "chunk-DKmatQN-.js": { - "bytes": 11117, - "sha256": "63a1c977db5f34d383d893d7cc20b1024165f5c1d724bb8ab19afe444f7557c1" + "chunk-DsEeBzOB.js": { + "bytes": 51622, + "sha256": "e9498baea41b3c985adb658335b2f4f75edb00779f54f27a81f47f9f112ebbdc" }, - "chunk-DQvfYR07.js": { - "bytes": 4256, - "sha256": "ae1c0dcf996e20bd5a1dd8b4ec96ebafbc66fa087836fc4480a2c95afef022d4" + "chunk-DuZy_X7l.js": { + "bytes": 723, + "sha256": "6bf91e2568d57d20d28bfeb7f4bb2f46aedeaa94cf4e503a8cf4f7c1fbacf3e6" }, - "chunk-DbK2Y3UO.js": { - "bytes": 19964, - "sha256": "4d4ef80761e83db7790a6a85f55d0fee66ffa4789f33c37f2f23d7aedda7dfba" + "chunk-IG0wRxY1.js": { + "bytes": 15262, + "sha256": "762bf1aef575429e17abe8c14a6fe7beeef8881ff3d0c325bdddc0fdcfbb49ed" }, - "chunk-DcK6E10F.js": { - "bytes": 7585, - "sha256": "66231dbbfc6edd49217051c88fbf713962415730c5826451c0e6c136a83c1168" + "chunk-N-Oj8_UM.js": { + "bytes": 13056, + "sha256": "15b66cc1b9968f4d43307693ff61dad8938275a11621d6a5e1836a27c8cd7dc1" }, - "chunk-DjkjLihA.js": { - "bytes": 4605, - "sha256": "eee44831a0eba321b9af3ac4dc22f7481e3f3bd493f4c2f8321a9428ba077f4a" + "chunk-NOjQgxo7.js": { + "bytes": 20224, + "sha256": "9400151a47e190f2973ce8c606638e91fd3050f964775cdd3e5939d3ce99a859" }, - "chunk-DmeV4Ae_.js": { - "bytes": 453030, - "sha256": "4476902b1840d69514b5a3cdcac01e9bb81d2d5f3486eca37b77079f20be2b5a" + "chunk-O1vNs89S.js": { + "bytes": 48705, + "sha256": "4dbaa28dcad9f44b09323672b26a2b42cdc3d32f7e3d055eefffc3b4de085466" }, - "chunk-DpHwlXuY.js": { - "bytes": 29220, - "sha256": "4fca88ccb0801ba3edae7ebd1cea7720c8cb8a5589433617932be525117a0875" + "chunk-ctcjU5we.js": { + "bytes": 12808, + "sha256": "bd40dc05754b739fe793c5c12ffabf646cdeb3141b1e8886bc052c5537952967" }, - "chunk-DuZy_X7l.js": { - "bytes": 723, - "sha256": "6bf91e2568d57d20d28bfeb7f4bb2f46aedeaa94cf4e503a8cf4f7c1fbacf3e6" + "chunk-fHAvBZdv.js": { + "bytes": 31642, + "sha256": "165814510a454697f2f9d1de4de960aeedafcffb47b0240cafec28603e852de0" }, - "chunk-DvTxSJhT.js": { - "bytes": 34250, - "sha256": "0cbc1258c0a042348da30885ffd8ba2efbe497085afbe23b4381f00e7f49a27b" + "chunk-hh6-Palp.js": { + "bytes": 37116, + "sha256": "95d012b865dbf12a717c0b7f966ba129ffd04fca1be235d36a7adae4c6426c7b" }, - "chunk-Dx9x1gxm.js": { - "bytes": 23903, - "sha256": "25985dbdf19494b94883f40d089e0157f46baa99ef995158b27e21cea97d633d" + "chunk-pVzsnrcB.js": { + "bytes": 6210, + "sha256": "d68f380f1c18785be0bd8e669dfe0f1a286c490f6d80f87852cf6bd1c95471e3" }, - "chunk-NryuIUhX.js": { - "bytes": 12334, - "sha256": "d2cd8b01b2fb0e24e1349468f6edffc36b7c4b169505571af6cb7afc2ec10fea" + "chunk-tu0a_CEa.js": { + "bytes": 33366, + "sha256": "30ddcf1eb2b8d034e11cac1fba2f67741934948b8ad1a9e8b86a8e44e7c99d6c" }, - "chunk-vTT25rMv.js": { - "bytes": 38140, - "sha256": "10d7f919d36399af0c93698950279f6387d21c8c57b78cc0b840635b77c89f5d" + "chunk-xLo56Uun.js": { + "bytes": 4256, + "sha256": "7e0b78e09beb1b9df061ca8d2a90667a951f4408be59aa134399b46aef07260a" }, "favicon.ico": { "bytes": 15086, @@ -158,15 +166,15 @@ }, "index.html": { "bytes": 530, - "sha256": "ef357c8f90a4c6990ff2ce90291ea6f64897a4fc313aa423937f5f2f7479b311" + "sha256": "04250466504a5bcf8312f873ffe94712baf247f507b76e6050703e21d8b09831" }, - "main-A2NKRJGT.js": { - "bytes": 43310, - "sha256": "9172567da383f93260ed6d8309ad8f3c0ec72626a64fef9850013ed91d067908" + "main-XW2ZMSO5.js": { + "bytes": 43597, + "sha256": "dd04bb09cdc5b44b72d0a1fd934380c634324979efb5d79dcb712cad71ecbd3a" }, - "styles-G23E7YXX.css": { - "bytes": 39492, - "sha256": "4d6616a803154c34e2a49540606ff54bec3779e2d2c8e5362f58128a3b41913e" + "styles-B6ZRGG3C.css": { + "bytes": 40287, + "sha256": "e5323e468cbc803d360e35b5f1b6853ecdfda9859f91cf7ac3a2e7603fd2309c" } }, "portal_version": "1.0.0", From c04a1ee11be994eeb1b4fb63493f4a36f347be23 Mon Sep 17 00:00:00 2001 From: EdgarSocrates98 Date: Sun, 18 Oct 2026 09:16:58 -0300 Subject: [PATCH 2/2] chore(receipt): rebind validated_sha to branch tip --- docs/economy-parity/VALIDATION-RECEIPT.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/economy-parity/VALIDATION-RECEIPT.json b/docs/economy-parity/VALIDATION-RECEIPT.json index 724e457..b698248 100644 --- a/docs/economy-parity/VALIDATION-RECEIPT.json +++ b/docs/economy-parity/VALIDATION-RECEIPT.json @@ -1,7 +1,7 @@ { "benchmarks": { "control_plane_overhead": "docs/economy-parity/ECONOMY-BENCHMARKS.md", - "end_to_end": "insufficient evidence \u2014 no production corpus claimed" + "end_to_end": "insufficient evidence — no production corpus claimed" }, "closure_sha": null, "cycle": "economy-parity", @@ -50,7 +50,7 @@ }, "economy-receipt": { "ok": true, - "reproduce": "python -c import json, re, subprocess, sys\nfrom pathlib import Path\nsys.path.insert(0, 'scripts')\nimport validate as V\np = Path(V.ECONOMY_RECEIPT_PATH)\nif not p.is_file():\n print('missing receipt:', p); sys.exit(1)\nr = json.loads(p.read_text())\nbad = []\nif r.get('schema') != V.ECONOMY_RECEIPT_SCHEMA:\n bad.append(('schema', r.get('schema')))\nvs = r.get('validated_sha') or ''\nok_sha = subprocess.run(['git','cat-file','-e',\n vs + '^{commit}'], capture_output=True).returncode == 0\nif not ok_sha: bad.append(('validated_sha-not-a-commit', vs))\nhead = subprocess.run(['git','rev-parse','HEAD'],\n capture_output=True, text=True).stdout.strip()\n# PR merge ref: HEAD^2 is the pushed branch tip \u2014 the Option-A\n# pair (functional commit + receipt commit) sits one level down.\nhead2 = subprocess.run(['git','rev-parse','HEAD^2'],\n capture_output=True, text=True).stdout.strip()\nbase = head2 if __import__('re').fullmatch(r'[0-9a-f]{40}', head2) else head\nhead1 = subprocess.run(['git','rev-parse', base + '~1'],\n capture_output=True, text=True).stdout.strip()\nif vs not in (base, head1):\n bad.append(('validated_sha-stale', vs, head))\ncanon = set(V._economy_gate_names())\nextra = set(r.get('gates', {})) - canon\nif extra: bad.append(('noncanonical-gates', sorted(extra)))\npat = re.compile('tests/' + r'\\S+' + r'\\.py')\nfor g, e in r.get('gates', {}).items():\n for t in pat.findall(e.get('reproduce') or ''):\n if not Path(t).is_file():\n bad.append(('dead-reproduce-path', g, t))\nif r.get('verdict') not in ('validated', 'failed'):\n bad.append(('verdict', r.get('verdict')))\nif bad: print(bad); sys.exit(1)\nprint('receipt coherent:', len(r['gates']), 'gates,',\n 'sha bound')\n", + "reproduce": "python -c import json, re, subprocess, sys\nfrom pathlib import Path\nsys.path.insert(0, 'scripts')\nimport validate as V\np = Path(V.ECONOMY_RECEIPT_PATH)\nif not p.is_file():\n print('missing receipt:', p); sys.exit(1)\nr = json.loads(p.read_text())\nbad = []\nif r.get('schema') != V.ECONOMY_RECEIPT_SCHEMA:\n bad.append(('schema', r.get('schema')))\nvs = r.get('validated_sha') or ''\nok_sha = subprocess.run(['git','cat-file','-e',\n vs + '^{commit}'], capture_output=True).returncode == 0\nif not ok_sha: bad.append(('validated_sha-not-a-commit', vs))\nhead = subprocess.run(['git','rev-parse','HEAD'],\n capture_output=True, text=True).stdout.strip()\n# PR merge ref: HEAD^2 is the pushed branch tip — the Option-A\n# pair (functional commit + receipt commit) sits one level down.\nhead2 = subprocess.run(['git','rev-parse','HEAD^2'],\n capture_output=True, text=True).stdout.strip()\nbase = head2 if __import__('re').fullmatch(r'[0-9a-f]{40}', head2) else head\nhead1 = subprocess.run(['git','rev-parse', base + '~1'],\n capture_output=True, text=True).stdout.strip()\nif vs not in (base, head1):\n bad.append(('validated_sha-stale', vs, head))\ncanon = set(V._economy_gate_names())\nextra = set(r.get('gates', {})) - canon\nif extra: bad.append(('noncanonical-gates', sorted(extra)))\npat = re.compile('tests/' + r'\\S+' + r'\\.py')\nfor g, e in r.get('gates', {}).items():\n for t in pat.findall(e.get('reproduce') or ''):\n if not Path(t).is_file():\n bad.append(('dead-reproduce-path', g, t))\nif r.get('verdict') not in ('validated', 'failed'):\n bad.append(('verdict', r.get('verdict')))\nif bad: print(bad); sys.exit(1)\nprint('receipt coherent:', len(r['gates']), 'gates,',\n 'sha bound')\n", "seconds": 0.04 }, "economy-reconcile": { @@ -83,9 +83,9 @@ "kind": "platformforge/economy-validation-receipt/1", "known_gaps": [ "real provider pricing catalog not bundled (declared-rates engine only, by design)", - "money axis lacks a real model-call corpus \u2014 QPC money is unresolved without declared pricing + measured usage", + "money axis lacks a real model-call corpus — QPC money is unresolved without declared pricing + measured usage", "production savings unproven; microbench overhead only", - "analysis cache reuse requires identical evidence/policy/risk tuple \u2014 conservative by construction" + "analysis cache reuse requires identical evidence/policy/risk tuple — conservative by construction" ], "quality": { "note": "QPT/QPC floors enforced inside economy-qpt / economy-evals gates; quality floors gate every economy claim" @@ -93,7 +93,7 @@ "remote_ci": "PR pending; local gates canonical", "schema": "platformforge/economy-validation-receipt/v1", "spec": "prompt_evo_economy.md", - "validated_sha": "92849deb3d0f167b8f2e2eb34ea781eed396273b", + "validated_sha": "c96f048c17eca8f86060a096882038ac8b81ff4d", "validator": "scripts/validate.py", "validator_version": "economy-validation-receipt/v1", "verdict": "validated"