diff --git a/CHANGELOG.md b/CHANGELOG.md index 9dd8c4d..94b6e5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes. Format: wave/feature, the "why", key commits. +## [0.1.2] - 2026-10-18 + +### Changed +- Portal 2.2 vendored generation (44-asset frontend, telemetry, + py3.10-safe server); hardened PyPI pipeline (build-once/ + publish-same-artifact, version gate, post-publish verify) + ## [0.1.1] - 2026-10-18 ### Fixed diff --git a/docs/economy-parity/VALIDATION-RECEIPT.json b/docs/economy-parity/VALIDATION-RECEIPT.json index d961379..d4a3d74 100644 --- a/docs/economy-parity/VALIDATION-RECEIPT.json +++ b/docs/economy-parity/VALIDATION-RECEIPT.json @@ -93,7 +93,7 @@ "remote_ci": "PR pending; local gates canonical", "schema": "platformforge/economy-validation-receipt/v1", "spec": "prompt_evo_economy.md", - "validated_sha": "eab6eac3dbd8ae14ef448a1407d2d9f1424d09d5", + "validated_sha": "11e2ace198d34d02cc0f6ca799317ce0ba78c4da", "validator": "scripts/validate.py", "validator_version": "economy-validation-receipt/v1", "verdict": "validated" diff --git a/platformforge/__init__.py b/platformforge/__init__.py index 95f06ea..bedc739 100644 --- a/platformforge/__init__.py +++ b/platformforge/__init__.py @@ -4,4 +4,4 @@ LLM SDKs, cloud SDKs, or MCP — those live behind optional adapters. """ -__version__ = "0.1.1" +__version__ = "0.1.2" diff --git a/portal/assets/chunk-CDQZIMhH.js b/portal/assets/chunk-B6-SnBYR.js similarity index 98% rename from portal/assets/chunk-CDQZIMhH.js rename to portal/assets/chunk-B6-SnBYR.js index db75adc..47ade82 100644 --- a/portal/assets/chunk-CDQZIMhH.js +++ b/portal/assets/chunk-B6-SnBYR.js @@ -1 +1 @@ -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,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,o as f,r as g,t as g$1}from"./main-XW2ZMSO5.js";import{a as l,o as w,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 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`),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 +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,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-CdjWoiPd.js";import{i as n,o as f,r as g,t as g$1}from"./main-GU444GPT.js";import{a as l,o as w,s as y}from"./chunk-YOPJhFLo.js";import{t as _}from"./chunk-CEkKt3jx.js";import{t as D}from"./chunk-Bz1rYEmS.js";import{n as k$1,t as I}from"./chunk-C8lOpg3j.js";import{t as T}from"./chunk-Cq-eK9ux.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`),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-BCNptXUN.js similarity index 98% rename from portal/assets/chunk-CM-MlJlQ.js rename to portal/assets/chunk-BCNptXUN.js index 5fe0fae..70b5418 100644 --- a/portal/assets/chunk-CM-MlJlQ.js +++ b/portal/assets/chunk-BCNptXUN.js @@ -1 +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 +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-CdjWoiPd.js";import{i as n,r as g}from"./main-GU444GPT.js";import{a as l}from"./chunk-YOPJhFLo.js";import{t as _}from"./chunk-CEkKt3jx.js";import{t as D}from"./chunk-Bz1rYEmS.js";import{n as k$1,t as I}from"./chunk-C8lOpg3j.js";import{t as T}from"./chunk-Cq-eK9ux.js";import{i as Zt,n as De$1,r as Yt,t as At$1}from"./chunk-NOzavK8E.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-yqMTkZh4.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-tu0a_CEa.js b/portal/assets/chunk-BLx5JhZj.js similarity index 98% rename from portal/assets/chunk-tu0a_CEa.js rename to portal/assets/chunk-BLx5JhZj.js index 47d8633..3280206 100644 --- a/portal/assets/chunk-tu0a_CEa.js +++ b/portal/assets/chunk-BLx5JhZj.js @@ -1 +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 +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-CdjWoiPd.js";import{r as g$1,t as g}from"./main-GU444GPT.js";import{a as l$1,o as w,r as f,s as y}from"./chunk-YOPJhFLo.js";import{t as _}from"./chunk-CEkKt3jx.js";import{t as D}from"./chunk-Bz1rYEmS.js";import{n as k,t as I}from"./chunk-C8lOpg3j.js";import{t as T}from"./chunk-Cq-eK9ux.js";import{t as F}from"./chunk-BiFkDKwK.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-B_bDidf_.js b/portal/assets/chunk-BhA7s971.js similarity index 97% rename from portal/assets/chunk-B_bDidf_.js rename to portal/assets/chunk-BhA7s971.js index 2223d8d..93afb19 100644 --- a/portal/assets/chunk-B_bDidf_.js +++ b/portal/assets/chunk-BhA7s971.js @@ -1 +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 +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-CdjWoiPd.js";import{n,t as g}from"./main-GU444GPT.js";import{t as T}from"./chunk-Cq-eK9ux.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-xLo56Uun.js b/portal/assets/chunk-BiFkDKwK.js similarity index 95% rename from portal/assets/chunk-xLo56Uun.js rename to portal/assets/chunk-BiFkDKwK.js index dea114a..fed176b 100644 --- a/portal/assets/chunk-xLo56Uun.js +++ b/portal/assets/chunk-BiFkDKwK.js @@ -1 +1 @@ -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 +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-CdjWoiPd.js";import{r as g}from"./main-GU444GPT.js";import{i as k,t as T}from"./chunk-YOPJhFLo.js";import{n as k$1,t as I}from"./chunk-C8lOpg3j.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/chunk-N-Oj8_UM.js b/portal/assets/chunk-BmwkYp7x.js similarity index 97% rename from portal/assets/chunk-N-Oj8_UM.js rename to portal/assets/chunk-BmwkYp7x.js index 38b7121..4a2b6bb 100644 --- a/portal/assets/chunk-N-Oj8_UM.js +++ b/portal/assets/chunk-BmwkYp7x.js @@ -1,3 +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(` +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-CdjWoiPd.js";import{r as g}from"./main-GU444GPT.js";import{a as l$1,s as y}from"./chunk-YOPJhFLo.js";import{t as _}from"./chunk-CEkKt3jx.js";import{t as D}from"./chunk-Bz1rYEmS.js";import{n as k$1,t as I}from"./chunk-C8lOpg3j.js";import{t as T$1}from"./chunk-Cq-eK9ux.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-92Xoau85.js b/portal/assets/chunk-BqMqB2xY.js similarity index 97% rename from portal/assets/chunk-92Xoau85.js rename to portal/assets/chunk-BqMqB2xY.js index 82f2cb9..30869e3 100644 --- a/portal/assets/chunk-92Xoau85.js +++ b/portal/assets/chunk-BqMqB2xY.js @@ -1 +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 +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-CdjWoiPd.js";import{i as n,r as g,s as y}from"./main-GU444GPT.js";import{t as _}from"./chunk-CEkKt3jx.js";import{t as D}from"./chunk-Bz1rYEmS.js";import{n as k$1,t as I}from"./chunk-C8lOpg3j.js";import{t as T}from"./chunk-Cq-eK9ux.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-BYyT8UUn.js b/portal/assets/chunk-BqWusG3k.js similarity index 98% rename from portal/assets/chunk-BYyT8UUn.js rename to portal/assets/chunk-BqWusG3k.js index 2724179..a8744d4 100644 --- a/portal/assets/chunk-BYyT8UUn.js +++ b/portal/assets/chunk-BqWusG3k.js @@ -1 +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 +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-CdjWoiPd.js";import{o as f,r as g}from"./main-GU444GPT.js";import{a as l,n as c,s as y}from"./chunk-YOPJhFLo.js";import{t as _}from"./chunk-CEkKt3jx.js";import{t as D}from"./chunk-Bz1rYEmS.js";import{n as k$2,t as I}from"./chunk-C8lOpg3j.js";import{t as T}from"./chunk-Cq-eK9ux.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-D5z0OfqY.js b/portal/assets/chunk-Bs3fXOeP.js similarity index 97% rename from portal/assets/chunk-D5z0OfqY.js rename to portal/assets/chunk-Bs3fXOeP.js index 32897f2..30ca47f 100644 --- a/portal/assets/chunk-D5z0OfqY.js +++ b/portal/assets/chunk-Bs3fXOeP.js @@ -1 +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 +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-CdjWoiPd.js";import{r as g}from"./main-GU444GPT.js";import{a as l,s as y}from"./chunk-YOPJhFLo.js";import{t as _}from"./chunk-CEkKt3jx.js";import{t as D}from"./chunk-Bz1rYEmS.js";import{n as k$1,t as I}from"./chunk-C8lOpg3j.js";import{t as T}from"./chunk-Cq-eK9ux.js";import{n as k$2,t as V}from"./chunk-yqMTkZh4.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-Bg2lccQE.js b/portal/assets/chunk-Bz1rYEmS.js similarity index 98% rename from portal/assets/chunk-Bg2lccQE.js rename to portal/assets/chunk-Bz1rYEmS.js index 7f4da1b..7437d8f 100644 --- a/portal/assets/chunk-Bg2lccQE.js +++ b/portal/assets/chunk-Bz1rYEmS.js @@ -1 +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 +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-CdjWoiPd.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-CR0uEECS.js b/portal/assets/chunk-C3EdlW-0.js similarity index 97% rename from portal/assets/chunk-CR0uEECS.js rename to portal/assets/chunk-C3EdlW-0.js index dc1dab3..53c7f65 100644 --- a/portal/assets/chunk-CR0uEECS.js +++ b/portal/assets/chunk-C3EdlW-0.js @@ -1 +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 +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-CdjWoiPd.js";import{c as a,r as g,t as g$1}from"./main-GU444GPT.js";import{t as r}from"./chunk-DuZy_X7l.js";import{a as T$1,i as M$1,n as G,r as H}from"./chunk-pVzsnrcB.js";import{a as l,n as c}from"./chunk-YOPJhFLo.js";import{t as _}from"./chunk-CEkKt3jx.js";import{t as D}from"./chunk-Bz1rYEmS.js";import{n as k$1,t as I}from"./chunk-C8lOpg3j.js";import{t as T$2}from"./chunk-Cq-eK9ux.js";import{i as Zt,n as De$1,r as Yt,t as At}from"./chunk-NOzavK8E.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$1[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$2,_,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-DQtX_-dj.js b/portal/assets/chunk-C8lOpg3j.js similarity index 98% rename from portal/assets/chunk-DQtX_-dj.js rename to portal/assets/chunk-C8lOpg3j.js index 63746f9..924e578 100644 --- a/portal/assets/chunk-DQtX_-dj.js +++ b/portal/assets/chunk-C8lOpg3j.js @@ -1 +1 @@ -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 +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-CdjWoiPd.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-16deWS0U.js b/portal/assets/chunk-CEkKt3jx.js similarity index 96% rename from portal/assets/chunk-16deWS0U.js rename to portal/assets/chunk-CEkKt3jx.js index 1824ac8..f41c51b 100644 --- a/portal/assets/chunk-16deWS0U.js +++ b/portal/assets/chunk-CEkKt3jx.js @@ -1 +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 +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-CdjWoiPd.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-CM0T98Hn.js b/portal/assets/chunk-CM0T98Hn.js new file mode 100644 index 0000000..d55b8e9 --- /dev/null +++ b/portal/assets/chunk-CM0T98Hn.js @@ -0,0 +1 @@ +import{$ as dS,At as qm,Bt as tn,C as Mt$1,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-CdjWoiPd.js";import{r as g}from"./main-GU444GPT.js";import{a as l,s as y}from"./chunk-YOPJhFLo.js";import{t as _}from"./chunk-CEkKt3jx.js";import{t as D$1}from"./chunk-Bz1rYEmS.js";import{n as k$1,t as I}from"./chunk-C8lOpg3j.js";import{t as T}from"./chunk-Cq-eK9ux.js";import{r as p$1}from"./chunk-D-7Jr8A3.js";import{n as k$2,t as V}from"./chunk-yqMTkZh4.js";function Ne(t){if(!t)return null;let n=Date.parse(t);return Number.isFinite(n)?n:null}var ve=t=>t.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().trim();function fe(t){let n=t.map((a,s)=>({event:a,idx:s,timeMs:Ne(a.timestamp)}));return{placed:n.filter(a=>a.timeMs!==null).sort((a,s)=>a.timeMs-s.timeMs||a.idx-s.idx),unplaced:n.filter(a=>a.timeMs===null)}}var Oe=new Set([`refused`,`failed`,`timeout`,`error`,`denied`]);function Be(t){return Oe.has((t.status??``).toLowerCase())}function Ce(t){let n=new Map,e=[];for(let m of t){let h=m.correlation_id;if(h){let N=n.get(h);N?N.push(m):n.set(h,[m])}else e.push(m)}let o=[],a=(m,h)=>{let{placed:N,unplaced:J}=fe(h),G=N.length?N[0].timeMs:null,z=N.length?N[N.length-1].timeMs:null;return{key:m??``,correlationId:m,events:[...N,...J],placed:N,unplaced:J,startMs:G,endMs:z,durationMs:G!==null&&z!==null?z-G:null,errorCount:h.filter(Be).length,spans:Ve(N),leftPct:0,widthPct:0,tickGradient:Fe(N,G,z),partial:J.length>0}};for(let[m,h]of n)o.push(a(m,h));let s=[];if(e.length){let m=a(null,e);s=m.events,o.push(m)}o.sort((m,h)=>m.startMs===null&&h.startMs===null?m.keym.startMs).filter(m=>m!==null),x=o.map(m=>m.endMs).filter(m=>m!==null),M=y.length?Math.min(...y):null,F=x.length?Math.max(...x):null,O=M!==null&&F!==null?F-M:0;for(let m of o){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 h of m.spans)M===null||!O?(h.leftPct=0,h.widthPct=0):(h.leftPct=(h.startMs-M)/O*100,h.widthPct=Math.max(0,(h.endMs-h.startMs)/O*100))}let Z=o.reduce((m,h)=>m+h.unplaced.length,0);return{groups:o,windowStart:M,windowEnd:F,unlinked:s,unplacedCount:Z,partial:Z>0}}function Ve(t){let n=new Map;for(let o of t){let a=o.timeMs;if(a===null)continue;let s=o.event.span_id??``,y=n.get(s)??{},x=o.event.duration_ms;typeof x==`number`&&x>=0&&(y.end=a,y.start=a-x),o.event.event_type.endsWith(`.start`)&&(y.start=y.start===void 0?a:Math.min(y.start,a)),n.set(s,y)}let e=[];for(let[o,a]of n)a.start===void 0||a.end===void 0||a.endo.startMs-a.startMs||(o.spanId+x.toFixed(3);if(o<=0){let x=t[t.length-1],M=H[D(x.event.status)]??H.muted;return`linear-gradient(90deg, ${M} 0%, ${M} ${j}%, transparent ${j}%)`}let s=t.map(x=>Math.max(0,Math.min((x.timeMs-n)/o*100,100-j))),y=[`transparent 0%`];for(let x=0;xM})}return a}function be(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(ve).join(` `)}function he(t){return new Map(t.map(n=>[n,be(n)]))}function Se(t,n,e){let o=n.correlation.trim(),a=ve(n.q);return t.filter(s=>n.type!==null&&s.event_type!==n.type||n.status!==null&&s.status!==n.status||o&&!(s.correlation_id??``).includes(o)?!1:a?(e?.get(s)??be(s)).includes(a):!0)}function Pe(t){let n=new Map,e=new Map,o=new Map;return t.forEach((a,s)=>{if(o.set(a,s),a.correlation_id){let y=n.get(a.correlation_id);y?y.push(a):n.set(a.correlation_id,[a])}if(a.span_id){let y=e.get(a.span_id);y?y.push(a):e.set(a.span_id,[a])}}),{byCorrelation:n,bySpan:e,pos:o}}function Me(t,n){let e=new Set;for(let o of n.byCorrelation.get(t.correlation_id??``)??[])o!==t&&e.add(o);for(let o of n.bySpan.get(t.span_id??``)??[])o!==t&&e.add(o);return[...e].sort((o,a)=>(n.pos.get(o)??0)-(n.pos.get(a)??0))}function we(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 U(t){if(!t)return`—`;let n=new Date(t);return Number.isNaN(n.getTime())?t:n.toLocaleString()}function Re(t){return t===null?`—`:`+${p$1(t)}`}function Ie(t,n=0){return t.map((e,o)=>({e,position:n+o+1,at:U(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 ke(t,n=0){return t.map((e,o)=>{let a=n+o,s=e.event.event;return{step:e,index:a,gap:Re(e.gapMs),at:U(s.timestamp),kind:D(s.status),label:s.status??`—`,dur:s.duration_ms!==void 0?`${s.duration_ms} ms`:null,flow:s.source||s.target?`${s.source??`—`} \u2192 ${s.target??`—`}`:null,unplaced:e.event.timeMs===null}})}var $e=t=>({time:t});var Ae=t=>({dropped:t});var Ge=t=>({count:t});var ze=(t,n)=>({current:t,total:n});var Le=()=>[`/tasks`];var Ke=t=>({task:t});var qe=(t,n)=>n.key||`unlinked`;var He=(t,n)=>n.spanId;var je=(t,n)=>n.step.event.idx;var Ue=(t,n)=>n.e.event_id??n.position;var Je=(t,n)=>n.event_id??t;function We(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 Qe(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 Xe(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 Ye(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,$e,e.stamp(n))))}}function Ze(t,n){if(t&1&&(da(0,`p`,23),Sa(1,`ui-icon`,31),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,Ae,e.dropped)))}}function et(t,n){if(t&1){let e=DS();da(0,`a`,32),Ma(`click`,function(a){Hh(e);let s=SS(2);return Vh(s.skipToEvents(a))}),qS(1),aC(2,`t`),vd()}t&2&&(hD(),ey(lC(2,1,`execution.skipToEvents`)))}function tt(t,n){t&1&&Sa(0,`ui-state-badge`,34)}function nt(t,n){if(t&1&&(da(0,`code`),qS(1),vd()),t&2){let e=SS().$implicit,o=SS(4);hD(),ey(o.shortId(e.correlationId))}}function it(t,n){t&1&&(da(0,`span`,9),qS(1),aC(2,`t`),vd()),t&2&&(hD(),ey(lC(2,1,`execution.unlinked`)))}function at(t,n){if(t&1&&Sa(0,`span`,47),t&2){let e=n.$implicit;Na(`left`,e.leftPct,`%`)(`width`,e.widthPct,`%`)}}function ot(t,n){if(t&1){let e=DS();da(0,`div`,38)(1,`button`,41),Ma(`click`,function(){let a=Hh(e).$implicit,s=SS(4);return Vh(s.selectExecution(a))}),da(2,`span`,42),dS(3,nt,2,1,`code`)(4,it,3,3,`span`,9),da(5,`span`,43),qS(6),vd()(),da(7,`span`,44),mS(8,at,1,4,`span`,45,He),vd(),da(10,`span`,46),qS(11),vd()()()}if(t&2){let e=n.$implicit,o=n.$index,a=SS(4);Ar(`aria-setsize`,a.executions().groups.length)(`aria-posinset`,a.tlSlice().start+o+1),hD(),Ar(`data-execution`,e.correlationId??`unlinked`)(`data-idx`,a.tlSlice().start+o)(`data-selected`,a.selectedCid()===e.correlationId||null)(`data-errors`,e.errorCount||null)(`tabindex`,a.tlSlice().start+o===a.tlTabIdx()?0:-1),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 rt(t,n){if(t&1&&(da(0,`p`,40),qS(1),aC(2,`t`),vd()),t&2){let e=SS(4);hD(),bd(` `,uC(2,1,`execution.timeline.unplaced`,rC(4,Ge,e.executions().unplacedCount)),` `)}}function lt(t,n){if(t&1){let e=DS();da(0,`div`,36),aC(1,`t`),Ma(`keydown`,function(a){Hh(e);let s=SS(3);return Vh(s.onTlKeys(a))}),da(2,`div`,37)(3,`span`),qS(4),vd(),da(5,`span`),qS(6),vd()(),mS(7,ot,12,14,`div`,38,qe),vd(),da(9,`ui-pager`,39),aC(10,`t`),Ma(`pageChange`,function(a){Hh(e);let s=SS(3);return Vh(s.tlPage.set(a))}),vd(),dS(11,rt,3,6,`p`,40)}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 dt(t,n){t&1&&(Sa(0,`ui-empty`,35),aC(1,`t`)),t&2&&qm(`title`,lC(1,1,`execution.timeline.empty`))}function st(t,n){if(t&1&&(da(0,`section`,25)(1,`h2`,33),qS(2),aC(3,`t`),dS(4,tt,1,0,`ui-state-badge`,34),vd(),da(5,`p`,9),qS(6),aC(7,`t`),vd(),dS(8,lt,12,12)(9,dt,2,3,`ui-empty`,35),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 ct(t,n){if(t&1){let e=DS();da(0,`button`,60),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 pt(t,n){if(t&1){let e=DS();da(0,`button`,61),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 ut(t,n){if(t&1&&(da(0,`option`,58),qS(1),vd()),t&2){let e=n.$implicit,o=SS(3);qm(`value`,e)(`selected`,o.speed()===e),hD(),bd(`×`,e)}}function _t(t,n){t&1&&(da(0,`span`,64),aC(1,`t`),qS(2,`⇥`),vd()),t&2&&qm(`title`,lC(1,1,`execution.replay.compressed`))}function mt(t,n){if(t&1&&(da(0,`span`,68),qS(1),vd()),t&2){let e=SS().$implicit;hD(),ey(e.dur)}}function xt(t,n){if(t&1&&(da(0,`span`,69),qS(1),vd()),t&2){let e=SS().$implicit;hD(),ey(e.flow)}}function gt(t,n){t&1&&(da(0,`span`,70),qS(1),aC(2,`t`),vd()),t&2&&(hD(),ey(lC(2,1,`execution.noTimestamp`)))}function yt(t,n){if(t&1){let e=DS();da(0,`li`)(1,`button`,62),Ma(`click`,function(){let a=Hh(e).$implicit,s=SS(3);return s.inspect(a.step.event.event),Vh(s.replayIdx.set(a.index))}),da(2,`span`,63),aC(3,`t`),qS(4),vd(),dS(5,_t,3,3,`span`,64),da(6,`code`,65),qS(7),vd(),da(8,`span`,66),qS(9),vd(),Sa(10,`ui-state-badge`,67),dS(11,mt,2,1,`span`,68),dS(12,xt,2,1,`span`,69),dS(13,gt,3,3,`span`,70),vd()()}if(t&2){let e=n.$implicit,o=SS(3);Ar(`data-current`,e.index===o.replayIdx()||null)(`aria-setsize`,o.replaySteps().length)(`aria-posinset`,e.index+1),hD(),Ar(`data-idx`,e.index)(`data-current`,e.index===o.replayIdx()||null)(`tabindex`,e.index===o.stepTabIdx()?0:-1),hD(),Ar(`title`,lC(3,16,`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 vt(t,n){if(t&1){let e=DS();da(0,`section`,26)(1,`h2`,48),Sa(2,`ui-icon`,49),qS(3),aC(4,`t`),da(5,`span`,50),qS(6),vd()(),da(7,`p`,9),qS(8),aC(9,`t`),vd(),da(10,`div`,51)(11,`button`,52),Ma(`click`,function(){Hh(e);let a=SS(2);return Vh(a.stepReplay(-1))}),qS(12),aC(13,`t`),vd(),dS(14,ct,3,3,`button`,53)(15,pt,3,4,`button`,54),da(16,`button`,55),Ma(`click`,function(){Hh(e);let a=SS(2);return Vh(a.stepReplay(1))}),qS(17),aC(18,`t`),vd(),da(19,`label`,56)(20,`span`,9),qS(21),aC(22,`t`),vd(),da(23,`select`,57),aC(24,`t`),Ma(`change`,function(a){Hh(e);let s=SS(2);return Vh(s.setSpeed(a))}),mS(25,ut,2,3,`option`,58,gS),vd()(),da(27,`span`,9),qS(28),aC(29,`t`),vd()(),da(30,`ol`,59),Ma(`keydown`,function(a){Hh(e);let s=SS(2);return Vh(s.onStepKeys(a))}),mS(31,yt,14,18,`li`,null,je),vd(),da(33,`ui-pager`,39),aC(34,`t`),Ma(`pageChange`,function(a){Hh(e);let s=SS(2);return Vh(s.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,ze,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 ft(t,n){if(t&1&&(da(0,`option`,58),qS(1),vd()),t&2){let e=n.$implicit,o=SS(3);qm(`value`,e)(`selected`,o.typeFilter()===e),hD(),ey(e)}}function Ct(t,n){if(t&1&&(da(0,`option`,58),qS(1),vd()),t&2){let e=n.$implicit,o=SS(3);qm(`value`,e)(`selected`,o.statusFilter()===e),hD(),ey(e)}}function Et(t,n){if(t&1){let e=DS();da(0,`div`,29)(1,`label`,71)(2,`span`,72),qS(3),aC(4,`t`),vd(),da(5,`select`,73),Ma(`change`,function(a){Hh(e);let s=SS(2);return Vh(s.setType(a))}),da(6,`option`,74),qS(7),aC(8,`t`),vd(),mS(9,ft,2,3,`option`,58,gS),vd()(),da(11,`label`,71)(12,`span`,72),qS(13),aC(14,`t`),vd(),da(15,`select`,75),Ma(`change`,function(a){Hh(e);let s=SS(2);return Vh(s.setStatus(a))}),da(16,`option`,74),qS(17),aC(18,`t`),vd(),mS(19,Ct,2,3,`option`,58,gS),vd()(),da(21,`label`,71)(22,`span`,72),qS(23),aC(24,`t`),vd(),da(25,`input`,76),aC(26,`t`),Ma(`input`,function(a){Hh(e);let s=SS(2);return Vh(s.setCorr(a))}),vd()(),da(27,`label`,71)(28,`span`,72),qS(29),aC(30,`t`),vd(),da(31,`input`,77),aC(32,`t`),Ma(`input`,function(a){Hh(e);let s=SS(2);return Vh(s.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 bt(t,n){if(t&1&&qS(0),t&2){let e=SS().$implicit;bd(` `,e.flow,` `)}}function ht(t,n){t&1&&(da(0,`span`,9),qS(1,`—`),vd())}function St(t,n){if(t&1&&qS(0),t&2){let e=SS().$implicit;bd(` `,e.dur,` `)}}function Pt(t,n){t&1&&(da(0,`span`,9),qS(1,`—`),vd())}function Mt(t,n){if(t&1&&(da(0,`code`,85),qS(1),vd()),t&2){let e=SS().$implicit;Ar(`title`,n),hD(),ey(e.cidShort)}}function wt(t,n){t&1&&(da(0,`span`,9),qS(1,`—`),vd())}function It(t,n){if(t&1){let e=DS();da(0,`tr`,83),Ma(`click`,function(){let a=Hh(e).$implicit,s=SS(3);return Vh(s.inspect(a.e))})(`keydown.enter`,function(){let a=Hh(e).$implicit,s=SS(3);return Vh(s.inspect(a.e))})(`keydown.space`,function(a){let s=Hh(e).$implicit;return SS(3).inspect(s.e),Vh(a.preventDefault())}),da(1,`td`)(2,`code`),qS(3),vd()(),da(4,`td`,68),qS(5),vd(),da(6,`td`),Sa(7,`ui-state-badge`,67),vd(),da(8,`td`,84),dS(9,bt,1,1)(10,ht,2,0,`span`,9),vd(),da(11,`td`,68),dS(12,St,1,1)(13,Pt,2,0,`span`,9),vd(),da(14,`td`),dS(15,Mt,2,2,`code`,85)(16,wt,2,0,`span`,9),vd()()}if(t&2){let e,o=n.$implicit,a=SS(3);qm(`tabindex`,o.position-1===a.evTabIdx()?0:-1),Ar(`data-idx`,o.position-1)(`data-selected`,a.inspected()===o.e||null)(`aria-rowindex`,o.position+1),hD(3),ey(o.e.event_type),hD(2),ey(o.at),hD(2),qm(`state`,o.kind)(`labelOverride`,o.label),hD(2),hS(o.flow?9:10),hD(3),hS(o.dur?12:13),hD(3),hS((e=o.cidFull)?15:16,e)}}function kt(t,n){if(t&1){let e=DS();da(0,`div`,78)(1,`table`,79)(2,`thead`)(3,`tr`)(4,`th`,80),qS(5),aC(6,`t`),vd(),da(7,`th`,80),qS(8),aC(9,`t`),vd(),da(10,`th`,80),qS(11),aC(12,`t`),vd(),da(13,`th`,80),qS(14),aC(15,`t`),vd(),da(16,`th`,80),qS(17),aC(18,`t`),vd(),da(19,`th`,80),qS(20),aC(21,`t`),vd()()(),da(22,`tbody`,81),Ma(`keydown`,function(a){Hh(e);let s=SS(2);return Vh(s.onEventKeys(a))}),mS(23,It,17,11,`tr`,82,Ue),vd()()(),da(25,`ui-pager`,39),aC(26,`t`),Ma(`pageChange`,function(a){Hh(e);let s=SS(2);return Vh(s.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 Tt(t,n){t&1&&(Sa(0,`ui-empty`,86),aC(1,`t`)),t&2&&qm(`title`,lC(1,1,`execution.noMatches`))}function Nt(t,n){t&1&&(Sa(0,`ui-empty`,87),aC(1,`t`),aC(2,`t`)),t&2&&qm(`title`,lC(1,2,`execution.empty`))(`hint`,lC(2,4,`execution.empty.hint`))}function Ot(t,n){if(t&1&&dS(0,Tt,2,3,`ui-empty`,86)(1,Nt,3,6,`ui-empty`,87),t&2){let e=SS(2);hS(e.events().length?0:1)}}function Bt(t,n){if(t&1&&(da(0,`span`,91),qS(1),vd()),t&2){let e=SS();hD(),ey(e.event_id)}}function Vt(t,n){if(t&1&&(da(0,`div`,95)(1,`dt`),qS(2),aC(3,`t`),vd(),da(4,`dd`)(5,`a`,99),qS(6),vd()()()),t&2){let e=n;hD(2),ey(lC(3,4,`execution.insp.task`)),hD(3),qm(`routerLink`,nC(6,Le))(`queryParams`,rC(7,Ke,e)),hD(),bd(` `,e,` `)}}function Ft(t,n){if(t&1){let e=DS();da(0,`p`,96),qS(1),aC(2,`t`),da(3,`button`,100),Ma(`click`,function(){let a=Hh(e),s=SS(3);return Vh(s.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 Dt(t,n){if(t&1&&(da(0,`details`,97)(1,`summary`),qS(2),aC(3,`t`),vd(),da(4,`pre`),qS(5),vd()()),t&2){let e=SS(),o=SS(2);hD(2),ey(lC(3,2,`execution.insp.metadata`)),hD(3),ey(o.json(e.metadata))}}function Rt(t,n){if(t&1&&(da(0,`details`,97)(1,`summary`),qS(2),aC(3,`t`),vd(),da(4,`pre`),qS(5),vd()()),t&2){let e=SS(),o=SS(2);hD(2),ey(lC(3,2,`execution.insp.evidence`)),hD(3),ey(o.json(e.evidence))}}function $t(t,n){if(t&1){let e=DS();da(0,`li`)(1,`button`,101),Ma(`click`,function(){let a=Hh(e).$implicit,s=SS(4);return Vh(s.inspect(a))}),da(2,`code`),qS(3),vd()(),da(4,`span`,9),qS(5),vd()()}if(t&2){let e=n.$implicit,o=SS(4);hD(3),ey(e.event_type),hD(2),ey(o.fmtAt(e.timestamp))}}function At(t,n){if(t&1&&(da(0,`div`,98)(1,`h3`),qS(2),aC(3,`t`),vd(),da(4,`ul`),mS(5,$t,6,2,`li`,null,Je),vd()()),t&2){let e=SS(),o=SS(2);hD(2),ey(lC(3,1,`execution.insp.related`)),hD(3),yS(o.related(e))}}function Gt(t,n){if(t&1){let e=DS();da(0,`section`,88),Ma(`keydown.escape`,function(){Hh(e);let a=SS(2);return Vh(a.closeInspector())}),da(1,`header`,89)(2,`h2`),Sa(3,`ui-icon`,90),da(4,`code`),qS(5),vd(),dS(6,Bt,2,1,`span`,91),vd(),da(7,`button`,92),aC(8,`t`),Ma(`click`,function(){Hh(e);let a=SS(2);return Vh(a.closeInspector())}),Sa(9,`ui-icon`,93),vd()(),da(10,`dl`,94)(11,`div`,95)(12,`dt`),qS(13),aC(14,`t`),vd(),da(15,`dd`)(16,`code`),qS(17),vd()()(),da(18,`div`,95)(19,`dt`),qS(20),aC(21,`t`),vd(),da(22,`dd`),qS(23),vd()(),da(24,`div`,95)(25,`dt`),qS(26),aC(27,`t`),vd(),da(28,`dd`),Sa(29,`ui-state-badge`,67),vd()(),da(30,`div`,95)(31,`dt`),qS(32),aC(33,`t`),vd(),da(34,`dd`,68),qS(35),vd()(),da(36,`div`,95)(37,`dt`),qS(38),aC(39,`t`),vd(),da(40,`dd`,85)(41,`code`),qS(42),vd()()(),da(43,`div`,95)(44,`dt`),qS(45),aC(46,`t`),vd(),da(47,`dd`)(48,`code`),qS(49),vd()()(),da(50,`div`,95)(51,`dt`),qS(52),aC(53,`t`),vd(),da(54,`dd`)(55,`code`),qS(56),vd()()(),da(57,`div`,95)(58,`dt`),qS(59),aC(60,`t`),vd(),da(61,`dd`)(62,`code`),qS(63),vd()()(),da(64,`div`,95)(65,`dt`),qS(66),aC(67,`t`),vd(),da(68,`dd`)(69,`code`),qS(70),vd()()(),da(71,`div`,95)(72,`dt`),qS(73),aC(74,`t`),vd(),da(75,`dd`)(76,`code`),qS(77),vd()()(),dS(78,Vt,7,9,`div`,95),vd(),dS(79,Ft,6,4,`p`,96),dS(80,Dt,6,4,`details`,97),dS(81,Rt,6,4,`details`,97),dS(82,At,7,3,`div`,98),vd()}if(t&2){let e,o,a=n,s=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(s.fmtAt(a.timestamp)),hD(3),ey(lC(27,38,`execution.insp.status`)),hD(3),qm(`state`,s.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=s.taskIdOf(a))?78:-1,e),hD(),hS((o=s.causedByOf(a))?79:-1,o),hD(),hS(a.metadata?80:-1),hD(),hS(a.evidence?81:-1),hD(),hS(s.related(a).length?82:-1)}}function zt(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,Ye,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,Ze,5,7,`p`,23),vd(),dS(36,et,3,3,`a`,24),dS(37,st,10,8,`section`,25),dS(38,vt,35,36,`section`,26),da(39,`section`,27)(40,`div`,13)(41,`div`)(42,`h2`,28),qS(43),aC(44,`t`),vd()()(),dS(45,Et,33,28,`div`,29),dS(46,kt,27,25)(47,Ot,2,1),vd(),dS(48,Gt,83,54,`section`,30)),t&2){let e,o,a=n,s=SS();hD(4),ey(lC(5,18,`execution.summary`)),hD(5),hS((e=s.src.loadedAt())?9:-1,e),hD(4),ey(a.count),hD(2),ey(lC(16,20,`execution.count.events`)),hD(4),ey(s.executions().groups.length),hD(2),ey(lC(22,22,`execution.count.executions`)),hD(4),ey(a.dropped),hD(2),ey(lC(28,24,`execution.count.dropped`)),hD(4),ey(a.capacity),hD(2),ey(lC(34,26,`execution.count.capacity`)),hD(2),hS(a.truncated?35:-1),hD(),hS(s.filteredEvents().length?36:-1),hD(),hS(s.executions().groups.length?37:-1),hD(),hS(s.replaySteps().length?38:-1),hD(5),ey(lC(44,28,`execution.events`)),hD(2),hS(s.events().length?45:-1),hD(),hS(s.filteredEvents().length?46:47),hD(2),hS((o=s.inspected())?48:-1,o)}}function Y(t,n){return n.end<=n.start?-1:Math.min(Math.max(t,n.start),n.end-1)}var Te=class t{api=p(g);destroyRef=p(ve$1);host=p(Mt$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;evCursor=k(0);tlCursor=k(0);stepCursor=k(0);replayTimer=null;deepApplied=k(null);events=tn(()=>this.report()?.events??[]);searchIndex=tn(()=>he(this.events()));relationIndex=tn(()=>Pe(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(()=>Se(this.events(),{type:this.typeFilter(),status:this.statusFilter(),correlation:this.corrFilter(),q:this.qFilter()},this.searchIndex()));executions=tn(()=>Ce(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));tlTabIdx=tn(()=>Y(this.tlCursor(),this.tlSlice()));eventSlice=tn(()=>V(this.filteredEvents().length,this.EVENTS_PAGE,this.eventsPage()));pagedEventRows=tn(()=>Ie(this.filteredEvents().slice(this.eventSlice().start,this.eventSlice().end),this.eventSlice().start));evTabIdx=tn(()=>Y(this.evCursor(),this.eventSlice()));selectedGroup=tn(()=>{let n=this.selectedCid();return n===void 0?null:this.executions().groups.find(e=>e.correlationId===n)??null});replaySteps=tn(()=>Ee(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(()=>ke(this.replaySteps().slice(this.stepSlice().start,this.stepSlice().end),this.stepSlice().start));stepTabIdx=tn(()=>Y(this.stepCursor(),this.stepSlice()));stamp=y;fmtAt=U;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)}closeInspector(){let n=this.inspected();if(this.inspected.set(null),!n)return;let e=this.filteredEvents().indexOf(n),o=e>=0?e:this.evTabIdx();o<0||(e>=0&&(this.evCursor.set(e),this.eventsPage.set(Math.floor(e/this.EVENTS_PAGE))),this.focusIdx(`.table tbody`,o))}skipToEvents(n){n.preventDefault();let e=this.evTabIdx();e>=0&&this.focusIdx(`.table tbody`,e)}listKeyNav(n,e,o,a){if(n.altKey||n.ctrlKey||n.metaKey)return;let s=n.target.closest(`[data-idx]`);if(!s)return;let y=Number(s.dataset.idx),x;switch(n.key){case`ArrowDown`:x=y+1;break;case`ArrowUp`:x=y-1;break;case`Home`:x=0;break;case`End`:x=e-1;break;case`PageDown`:x=y+o;break;case`PageUp`:x=y-o;break;default:return}n.preventDefault(),!(e<=0||!Number.isFinite(y))&&a(Math.min(Math.max(x,0),e-1))}onTlKeys(n){this.listKeyNav(n,this.executions().groups.length,this.TL_PAGE,e=>{this.tlCursor.set(e),this.tlPage.set(Math.floor(e/this.TL_PAGE)),this.focusIdx(`.tl`,e)})}onStepKeys(n){this.listKeyNav(n,this.replaySteps().length,this.STEPS_PAGE,e=>{this.stepCursor.set(e),this.stepManual.set(Math.floor(e/this.STEPS_PAGE)),this.focusIdx(`.rp__steps`,e)})}onEventKeys(n){if(n.key===`Escape`){this.closeInspector();return}this.listKeyNav(n,this.filteredEvents().length,this.EVENTS_PAGE,e=>{this.evCursor.set(e),this.eventsPage.set(Math.floor(e/this.EVENTS_PAGE)),this.focusIdx(`.table tbody`,e)})}focusIdx(n,e){setTimeout(()=>{this.host.nativeElement.querySelector(`${n} [data-idx="${e}"]`)?.focus()})}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 Me(n,this.relationIndex())}causedByOf(n){return we(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,o=this.replaySteps().length-1;this.replayIdx.set(Math.max(0,Math.min(e,o)))}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 o=e[n].waitMs/this.speed();this.replayTimer=setTimeout(()=>{this.replayTimer=null,this.stepManual.set(null),this.replayIdx.set(n),this.scheduleNext()},Math.min(o,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`],[`href`,`#ex-ev`,`data-action`,`skip-events`,1,`kb-skip`,`sr-only`],[`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`],[`href`,`#ex-ev`,`data-action`,`skip-events`,1,`kb-skip`,`sr-only`,3,`click`],[`id`,`ex-tl`],[`state`,`PARTIAL`],[`icon`,`execution`,3,`title`],[`role`,`list`,1,`tl`,3,`keydown`],[`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`,3,`keydown`],[`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`],[`aria-keyshortcuts`,`ArrowUp ArrowDown Home End PageUp PageDown Enter Escape`,1,`table`],[`scope`,`col`],[3,`keydown`],[`data-action`,`inspect`,3,`tabindex`],[`data-action`,`inspect`,3,`click`,`keydown.enter`,`keydown.space`,`tabindex`],[1,`flow`],[1,`corr`],[`icon`,`search`,`data-empty`,`no-matches`,3,`title`],[`icon`,`inbox`,`data-empty`,`events`,3,`title`,`hint`],[`data-section`,`inspector`,`aria-live`,`polite`,1,`card`,`detail`,`fg-enter`,3,`keydown.escape`],[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,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()(),da(7,`p`,3),Sa(8,`ui-icon`,4),da(9,`span`),qS(10),aC(11,`t`),vd()(),dS(12,We,5,3,`section`,5),dS(13,Qe,1,1,`ui-error`,6),dS(14,Xe,3,4,`section`,7),dS(15,zt,49,30)),e&2){let a,s;qm(`title`,lC(1,11,`execution.title`))(`subtitle`,lC(2,13,`execution.subtitle`)),hD(3),qm(`disabled`,o.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(o.src.unavailable()?12:-1),hD(),hS((a=o.src.error())?13:-1,a),hD(),hS(o.src.loading()&&!o.report()?14:-1),hD(),hS((s=o.report())?15:-1,s)}},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}.kb-skip[_ngcontent-%COMP%]:focus-visible{position:static;width:auto;height:auto;margin:0 0 var(--%NS%space-3);padding:var(--%NS%space-2) var(--%NS%space-3);overflow:visible;clip:auto;white-space:normal;border:1px solid var(--%NS%border-strong);border-radius:var(--%NS%radius-md);background:var(--%NS%bg-elevated)}.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{Te as ExecutionPage}; \ No newline at end of file diff --git a/portal/assets/chunk-BAgCErjk.js b/portal/assets/chunk-CMtL9dJD.js similarity index 97% rename from portal/assets/chunk-BAgCErjk.js rename to portal/assets/chunk-CMtL9dJD.js index 6562b79..3f68168 100644 --- a/portal/assets/chunk-BAgCErjk.js +++ b/portal/assets/chunk-CMtL9dJD.js @@ -1,4 +1,4 @@ -import{a as n,r as l,t as c}from"./chunk-BYYLUO5t.js";import{a as m,i as k,r as N,s as v,t as E}from"./chunk-CCHwcZ3Q.js";import"./chunk-pVzsnrcB.js";import{a as k$1,i as b,r as M,t as C}from"./chunk-C0nXO1-7.js";function Oo(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. +import{a as n,r as l,t as c}from"./chunk-BYYLUO5t.js";import{a as k,i as b,r as M,t as C}from"./chunk-C0nXO1-7.js";import{a as m,i as k$1,r as N,s as v,t as E}from"./chunk-CCHwcZ3Q.js";import"./chunk-pVzsnrcB.js";function Oo(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 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(` @@ -318,5 +318,5 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho `).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(` + `));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$1(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}),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$1(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-NOjQgxo7.js b/portal/assets/chunk-Ca0umSMB.js similarity index 98% rename from portal/assets/chunk-NOjQgxo7.js rename to portal/assets/chunk-Ca0umSMB.js index 1ed669a..cb47024 100644 --- a/portal/assets/chunk-NOjQgxo7.js +++ b/portal/assets/chunk-Ca0umSMB.js @@ -1 +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 +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-CdjWoiPd.js";import{i as n,r as g,t as g$1}from"./main-GU444GPT.js";import{t as D}from"./chunk-Bz1rYEmS.js";import{n as k$1,t as I}from"./chunk-C8lOpg3j.js";import{t as T}from"./chunk-Cq-eK9ux.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-BefGrJ9d.js b/portal/assets/chunk-CdjWoiPd.js similarity index 99% rename from portal/assets/chunk-BefGrJ9d.js rename to portal/assets/chunk-CdjWoiPd.js index d671af7..7215443 100644 --- a/portal/assets/chunk-BefGrJ9d.js +++ b/portal/assets/chunk-CdjWoiPd.js @@ -2,4 +2,4 @@ import{i as m,n as t,r as l}from"./chunk-BYYLUO5t.js";function tr(e){let n=e(r=> ${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 +`).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-uVK-pwMG.js`).then(e=>e.PT_BR),en:()=>import(`./chunk-OywyDaLv.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-BGgpmc9t.js b/portal/assets/chunk-Cq-eK9ux.js similarity index 98% rename from portal/assets/chunk-BGgpmc9t.js rename to portal/assets/chunk-Cq-eK9ux.js index c46926d..4d8fd41 100644 --- a/portal/assets/chunk-BGgpmc9t.js +++ b/portal/assets/chunk-Cq-eK9ux.js @@ -1 +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,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 +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-CdjWoiPd.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-BflJ-4CO.js b/portal/assets/chunk-CyIkteAc.js similarity index 97% rename from portal/assets/chunk-BflJ-4CO.js rename to portal/assets/chunk-CyIkteAc.js index 32f673a..1316b27 100644 --- a/portal/assets/chunk-BflJ-4CO.js +++ b/portal/assets/chunk-CyIkteAc.js @@ -1 +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 +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-CdjWoiPd.js";import{r as g}from"./main-GU444GPT.js";import{a as l,s as y}from"./chunk-YOPJhFLo.js";import{t as _}from"./chunk-CEkKt3jx.js";import{t as D}from"./chunk-Bz1rYEmS.js";import{n as k,t as I}from"./chunk-C8lOpg3j.js";import{t as T}from"./chunk-Cq-eK9ux.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-D4lhtoQa.js b/portal/assets/chunk-D4lhtoQa.js deleted file mode 100644 index 0df0030..0000000 --- a/portal/assets/chunk-D4lhtoQa.js +++ /dev/null @@ -1 +0,0 @@ -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-DDQs0Fva.js b/portal/assets/chunk-DDQs0Fva.js new file mode 100644 index 0000000..a593cdd --- /dev/null +++ b/portal/assets/chunk-DDQs0Fva.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-CdjWoiPd.js";import{r as g,t as g$1}from"./main-GU444GPT.js";import{t as r}from"./chunk-DuZy_X7l.js";import{i as b,n as G,o as v}from"./chunk-C0nXO1-7.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-DTTwuwxc.js";import{a as T,n as G$1,r as H}from"./chunk-pVzsnrcB.js";import{a as l$1,n as c,s as y}from"./chunk-YOPJhFLo.js";import{t as _}from"./chunk-CEkKt3jx.js";import{t as D$1}from"./chunk-Bz1rYEmS.js";import{n as k$1,t as I}from"./chunk-C8lOpg3j.js";import{t as T$1}from"./chunk-Cq-eK9ux.js";var qe=new WeakMap;function J(i){let e=qe.get(i);if(e)return e;let t=new Map,a=new Map,o=new Map;for(let _ of i.nodes)t.set(_.id,[]),a.set(_.id,[]),o.set(_.id,0);for(let _ of i.edges)t.get(_.source)?.push(_),a.get(_.target)?.push(_),o.set(_.source,(o.get(_.source)??0)+1),o.set(_.target,(o.get(_.target)??0)+1);let s={out:t,in:a,degree:o};return qe.set(i,s),s}var je=(i,e,t)=>e===`out`?i.out.get(t)??[]:e===`in`?i.in.get(t)??[]:[...i.out.get(t)??[],...i.in.get(t)??[]];var Ke=(i,e,t)=>e===`out`?i.target:e===`in`?i.source:i.source===t?i.target:i.source;function We(i,e,t=`out`,a=1/0){let o=J(i),s=new Map([[e,0]]),_=new Map,f=[e];for(let S=0;S=a))for(let M of je(o,t,G)){let V=Ke(M,t,G);s.has(V)||(s.set(V,h+1),_.set(M.id,M),f.push(V))}}s.delete(e);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])),t=o=>{let s=o;for(;e.get(s)!==s;)s=e.get(s);for(;e.get(o)!==o;){let _=e.get(o);e.set(o,s),o=_}return s};for(let o of i.edges){let s=t(o.source),_=t(o.target);s!==_&&e.set(s,_)}let a=new Map;for(let o of i.nodes){let s=t(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(t.has(N))continue;let S=[{v:N,it:[...e.out.get(N)??[]]}];for(t.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)===t.get(G.v)){let V=[],w;do w=s.pop(),o.delete(w),V.push(w);while(w!==G.v);(V.length>1||A.has(V[0]))&&_.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;t.has(M)?o.has(M)&&a.set(G.v,Math.min(a.get(G.v),t.get(M))):(t.set(M,f),a.set(M,f++),s.push(M),o.add(M),S.push({v:M,it:[...e.out.get(M)??[]]}))}}return _.sort((N,S)=>N[0]w.idw.id),...o.nodes.map(w=>w.id)]),A=ut(i).find(w=>w.includes(e)),N=J(i),G=_t(i).filter(w=>w.some(Z=>f.has(Z))),h=new Set(i.nodes.filter(w=>w.unverified).map(w=>w.id)),M=_.filter(w=>i.sources[w.evidence]?.state!==`loaded`||h.has(w.source)||h.has(w.target)),V=Object.keys(i.sources).filter(w=>i.sources[w].state!==`loaded`);return{root:e,depth:t,uses:a.nodes,usedBy:o.nodes,edges:_,componentSize:A?.length??1,cycles:G,orphan:(N.degree.get(e)??0)===0,unverifiedNodes:[...f].filter(w=>h.has(w)).sort(),unverifiedEdges:M,missingSources:V,coverage:{loaded:Object.keys(i.sources).length-V.length,total:Object.keys(i.sources).length}}}var de=`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 oe=i=>typeof i==`string`?i:null;var re=i=>typeof i==`number`&&Number.isFinite(i)?i:null;function vt(i){if(!i||typeof i!=`object`)return null;let e=i;if(e.schema!==Je)return null;let t=e.mode===`list`||e.mode===`canvas`?e.mode:null,a=ht.has(e.layout)?e.layout:null;if(!t||!a)return null;let o=e.viewport,s=o&&typeof o==`object`?(()=>{let f=o,A=re(f.zoom),N=re(f.panX),S=re(f.panY);return A!==null&&N!==null&&S!==null?{zoom:A,panX:N,panY:S}:null})():null,_=yt.has(e.groupBy)?e.groupBy:null;return{schema:Je,mode:t,layout:a,layoutAuto:e.layoutAuto!==!1,query:oe(e.query)??``,kind:ft.has(e.kind)?e.kind:null,selectedNode:oe(e.selectedNode),selectedEdge:oe(e.selectedEdge),viewport:s,groupBy:_,collapsedGroups:Array.isArray(e.collapsedGroups)?e.collapsedGroups.filter(f=>typeof f==`string`):[]}}function Qe(i){if(!i)return null;try{let e=i.getItem(de);return e?vt(JSON.parse(e)):null}catch{return null}}function Xe(i,e){if(!i)return!1;try{return i.setItem(de,JSON.stringify(e)),!0}catch{return!1}}function Ze(i){try{i?.removeItem(de)}catch{}}var le=`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,e){return{schema:et,capturedAt:e,nodes:i.nodes.map(tt),edges:i.edges.map(it)}}var xt=(i,e)=>i.kind===e.kind&&i.label===e.label&&i.unverified===e.unverified&&i.state===e.state&&i.origin===e.origin&&i.evidence.join(`,`)===e.evidence.join(`,`);var Ct=(i,e)=>i.kind===e.kind&&i.evidence===e.evidence;function se(i,e){let t=new Map(e.nodes.map(h=>[h.id,tt(h)])),a=new Map(e.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])),_=[...t.values()].filter(h=>!o.has(h.id)),f=[...o.values()].filter(h=>!t.has(h.id)),A=[...t.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:_,removedNodes:f,changedNodes:A,addedEdges:N,removedEdges:S,changedEdges:G,unchanged:!_.length&&!f.length&&!A.length&&!N.length&&!S.length&&!G.length}}function at(i){let e=new Map;for(let a of i.addedNodes)e.set(a.id,`added`);for(let a of i.changedNodes)e.set(a.id,`changed`);let t=new Map;for(let a of i.addedEdges)t.set(a.id,`added`);for(let a of i.changedEdges)t.set(a.id,`changed`);return{nodes:e,edges:t}}function ot(i){if(!i)return null;try{let e=i.getItem(le);if(!e)return null;let t=JSON.parse(e);return t?.schema!==et||!Array.isArray(t.nodes)||!Array.isArray(t.edges)||typeof t.capturedAt!=`string`?null:t}catch{return null}}function rt(i,e){if(!i)return!1;try{return i.setItem(le,JSON.stringify(e)),!0}catch{return!1}}function dt(i){try{i?.removeItem(le)}catch{}}var bt=[`canvasEl`];var X=i=>({count:i});var st=i=>({at:i});var St=()=>[1,2,3];var wt=(i,e)=>({loaded:i,total:e});var j=i=>({layout:i});var Et=(i,e)=>({done:i,total:e});var ct=(i,e)=>({layout:i,fallback:e});var D=(i,e)=>e.id;var pt=(i,e)=>e[0];function kt(i,e){if(i&1){let t=DS();da(0,`ui-error`,7),Ma(`retry`,function(){Hh(t);let o=SS();return Vh(o.load())}),vd()}i&2&&qm(`error`,e)}function Pt(i,e){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,e){if(i&1&&(da(0,`a`,11),qS(1),aC(2,`t`),Sa(3,`ui-icon`,13),vd()),i&2){let t=SS(2);qm(`href`,t.studio_url,Fg),hD(),bd(` `,lC(2,3,`graph.open`),` `),hD(2),qm(`size`,14)}}function Nt(i,e){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 t=e.$implicit,a=SS(3);hD(2),qm(`size`,14),hD(),ey(a.viewName(t)),hD(2),ty(` `,uC(6,4,`graph.nodes`,rC(10,X,a.viewNodes(t))),` · `,uC(7,7,`graph.edges`,rC(12,X,a.viewEdges(t))),` `)}}function It(i,e){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 t=SS();hD(),hS(t.studio_url?1:-1),hD(2),yS(t.views)}}function Tt(i,e){if(i&1&&(Sa(0,`ui-empty`,10),aC(1,`t`),aC(2,`t`)),i&2){let t=SS();qm(`title`,lC(1,2,`graph.unavailable`))(`hint`,t.availability.unlock??lC(2,4,`graph.buildHint`))}}function Bt(i,e){i&1&&dS(0,It,5,1,`section`,9)(1,Tt,3,6,`ui-empty`,10),i&2&&hS(e.availability.state===`available`?0:1)}function Ft(i,e){if(i&1&&(da(0,`li`)(1,`code`),qS(2),vd(),Sa(3,`ui-state-badge`,35),aC(4,`t`),vd()),i&2){let t=e.$implicit,a=SS(2);Ar(`data-source`,t.id)(`data-state`,t.info.state),hD(2),ey(t.info.endpoint),hD(),qm(`state`,a.sourceBadge(t.info.state))(`labelOverride`,lC(4,5,`graph.source.`+t.info.state))}}function Mt(i,e){if(i&1){let t=DS();da(0,`div`,27)(1,`span`),qS(2),aC(3,`t`),vd(),da(4,`button`,36),Ma(`click`,function(){Hh(t);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(t);let o=SS(2);return Vh(o.dropSnapshot())}),qS(9),aC(10,`t`),vd()()}if(i&2){let t=SS(2);hD(2),ey(uC(3,6,`graph.snap.at`,rC(13,st,t.stampAt(e.capturedAt)))),hD(2),Ar(`data-tone`,t.diff()?`accent`:null)(`aria-pressed`,t.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,e){if(i&1){let t=DS();da(0,`button`,40),Ma(`click`,function(){let o=Hh(t).$implicit,s=SS(3);return Vh(s.toggleKind(o))}),qS(1),vd()}if(i&2){let t=e.$implicit,a=SS(2),o=SS();Ar(`data-tone`,o.kind()===t?`accent`:null)(`aria-pressed`,o.kind()===t)(`data-kind-chip`,t),hD(),ty(` `,t,` · `,a.counts[t],` `)}}function Ot(i,e){if(i&1){let t=DS();da(0,`ui-filter-bar`,39),aC(1,`t`),oy(`queryChange`,function(o){Hh(t);let s=SS(2);return YS(s.query,o)||(s.query=o),Vh(o)}),da(2,`button`,40),Ma(`click`,function(){Hh(t);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 t=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`),` · `,t.nodes.length,` `),hD(2),yS(a.kindOptions(t))}}function At(i,e){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,e){if(i&1){let t=DS();da(0,`li`)(1,`button`,47),Ma(`click`,function(){let o=Hh(t).$implicit,s=SS(4);return Vh(s.selectFocus(o.id))}),qS(2),vd(),da(3,`code`,48),qS(4),vd()()}if(i&2){let t=e.$implicit;hD(2),bd(` `,t.label,` `),hD(2),ey(t.id)}}function Lt(i,e){if(i&1&&(da(0,`li`)(1,`code`,48),qS(2),vd(),da(3,`code`,48),qS(4),vd()()),i&2){let t=e.$implicit;hD(2),ey(t.kind),hD(2),ey(t.id)}}function Rt(i,e){i&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`state.none`)))}function $t(i,e){if(i&1&&(da(0,`li`)(1,`code`),qS(2),vd()()),i&2){let t=e.$implicit;hD(2),ey(t.id)}}function zt(i,e){if(i&1&&(da(0,`li`)(1,`code`,48),qS(2),vd()()),i&2){let t=e.$implicit;hD(2),ey(t.id)}}function Ht(i,e){i&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`state.none`)))}function qt(i,e){if(i&1){let t=DS();da(0,`li`)(1,`button`,47),Ma(`click`,function(){let o=Hh(t).$implicit,s=SS(4);return Vh(s.selectFocus(o.id))}),qS(2),vd()()}if(i&2){let t=e.$implicit;hD(2),bd(` `,t.id,` `)}}function jt(i,e){if(i&1&&(da(0,`li`)(1,`code`,48),qS(2),vd()()),i&2){let t=e.$implicit;hD(2),ey(t.id)}}function Kt(i,e){i&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`state.none`)))}function Wt(i,e){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 t=SS();hD(3),ey(lC(4,6,`graph.diff.added`)),hD(3),yS(t.addedNodes),hD(2),yS(t.addedEdges),hD(2),hS(!t.addedNodes.length&&!t.addedEdges.length?10:-1),hD(3),ey(lC(14,8,`graph.diff.removed`)),hD(3),yS(t.removedNodes),hD(2),yS(t.removedEdges),hD(2),hS(!t.removedNodes.length&&!t.removedEdges.length?20:-1),hD(3),ey(lC(24,10,`graph.diff.changed`)),hD(3),yS(t.changedNodes),hD(2),yS(t.changedEdges),hD(2),hS(!t.changedNodes.length&&!t.changedEdges.length?30:-1)}}function Ut(i,e){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 t=e,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(t.snapshot)))),hD(2),hS(t.unchanged?8:9)}}function Yt(i,e){i&1&&Sa(0,`ui-state-badge`,50)}function Jt(i,e){i&1&&(Sa(0,`ui-state-badge`,51),aC(1,`t`)),i&2&&qm(`labelOverride`,lC(1,1,`graph.fed.failed`))}function Qt(i,e){if(i&1&&(da(0,`a`,53),qS(1),aC(2,`t`),aC(3,`t`),Sa(4,`ui-icon`,55),vd()),i&2){let t=e;qm(`routerLink`,t.commands)(`queryParams`,t.queryParams??null)(`fragment`,t.fragment),hD(),ty(` `,lC(2,6,`entity.openIn`),` `,lC(3,8,t.navKey),` `),hD(3),qm(`size`,13)}}function Xt(i,e){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 t=SS();hD(2),ey(lC(3,2,`graph.fed.state`)),hD(4),ey(t.state)}}function Zt(i,e){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 t=SS();hD(2),ey(lC(3,2,`graph.fed.category`)),hD(4),ey(t.category)}}function ei(i,e){if(i&1){let t=DS();da(0,`div`)(1,`dt`),qS(2),aC(3,`t`),vd(),da(4,`dd`)(5,`button`,47),Ma(`click`,function(){Hh(t);let o=SS(),s=SS(2);return Vh(s.selectFocus(`forge:`+o.origin))}),qS(6),vd()()()}if(i&2){let t=SS();hD(2),ey(lC(3,2,`graph.fed.origin`)),hD(4),bd(` `,t.origin,` `)}}function ti(i,e){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 t=SS();hD(2),ey(lC(3,2,`graph.fed.version`)),hD(4),ey(t.version)}}function ii(i,e){if(i&1&&(da(0,`code`),qS(1),vd()),i&2){let t=e.$implicit,a=SS(3);hD(),ey(a.endpointFor(t))}}function ni(i,e){if(i&1&&(da(0,`div`)(1,`dt`),qS(2),vd(),da(3,`dd`)(4,`code`),qS(5),vd()()()),i&2){let t=e.$implicit;hD(2),ey(t[0]),hD(3),ey(t[1]??`—`)}}function ai(i,e){if(i&1){let t=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(t).$implicit,s=SS(3);return Vh(s.selectFocus(o.target))}),qS(6),vd(),da(7,`code`,48),qS(8),vd()()}if(i&2){let t=e.$implicit,a=SS(3);hD(2),ey(t.kind),hD(4),bd(` `,a.label(t.target),` `),hD(2),ey(a.endpointFor(t.evidence))}}function oi(i,e){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,e){if(i&1){let t=DS();da(0,`li`)(1,`button`,47),Ma(`click`,function(){let o=Hh(t).$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 t=e.$implicit,a=SS(3);hD(2),bd(` `,a.label(t.source),` `),hD(4),ey(t.kind),hD(2),ey(a.endpointFor(t.evidence))}}function di(i,e){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,e){if(i&1){let t=DS();da(0,`button`,80),Ma(`click`,function(){let o=Hh(t).$implicit,s=SS(4);return Vh(s.impactDepth.set(o))}),qS(1),vd()}if(i&2){let t=e.$implicit,a=SS(4);Ar(`data-depth`,t)(`data-tone`,a.impactDepth()===t?`accent`:null)(`aria-pressed`,a.impactDepth()===t),hD(),bd(` `,t,` `)}}function si(i,e){if(i&1){let t=DS();da(0,`li`)(1,`button`,47),Ma(`click`,function(){let o=Hh(t).$implicit,s=SS(4);return Vh(s.selectFocus(o.id))}),qS(2),vd(),da(3,`code`,48),qS(4),vd()()}if(i&2){let t=e.$implicit,a=SS(4);hD(2),bd(` `,a.label(t.id),` `),hD(2),bd(``,t.dist,`h`)}}function ci(i,e){i&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`graph.fed.noRelations`)))}function pi(i,e){if(i&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),i&2){let t=SS(),a=SS(3);hD(),bd(` `,uC(2,1,`graph.impact.more`,rC(4,X,t.usedBy.length-a.impactCap)),` `)}}function ui(i,e){if(i&1){let t=DS();da(0,`li`)(1,`button`,47),Ma(`click`,function(){let o=Hh(t).$implicit,s=SS(4);return Vh(s.selectFocus(o.id))}),qS(2),vd(),da(3,`code`,48),qS(4),vd()()}if(i&2){let t=e.$implicit,a=SS(4);hD(2),bd(` `,a.label(t.id),` `),hD(2),bd(``,t.dist,`h`)}}function _i(i,e){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,e){if(i&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),i&2){let t=SS(),a=SS(3);hD(),bd(` `,uC(2,1,`graph.impact.more`,rC(4,X,t.uses.length-a.impactCap)),` `)}}function mi(i,e){i&1&&(Sa(0,`ui-state-badge`,69),aC(1,`t`)),i&2&&qm(`labelOverride`,lC(1,1,`graph.impact.orphan`))}function hi(i,e){if(i&1&&(da(0,`span`,70),qS(1),aC(2,`t`),vd()),i&2){let t=e.$implicit;Ar(`title`,t.join(` → `)),hD(),ty(` `,lC(2,3,`graph.impact.cycle`),`: `,t.length,` `)}}function fi(i,e){if(i&1&&(da(0,`option`,75),qS(1),vd()),i&2){let t=e.$implicit;qm(`value`,t.id),hD(),ey(t.id)}}function yi(i,e){if(i&1){let t=DS();da(0,`li`)(1,`button`,47),Ma(`click`,function(){let o=Hh(t).$implicit,s=SS(6);return Vh(s.selectFocus(o))}),qS(2),vd()()}if(i&2){let t=e.$implicit,a=SS(6);hD(2),bd(` `,a.label(t),` `)}}function vi(i,e){if(i&1&&(da(0,`ol`,81),mS(1,yi,3,1,`li`,null,gS),vd()),i&2){let t=SS();hD(),yS(t.nodes)}}function xi(i,e){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,e){i&1&&dS(0,vi,3,0,`ol`,81)(1,xi,3,3,`span`,82),i&2&&hS(e.nodes?0:1)}function bi(i,e){if(i&1&&(da(0,`code`,48),qS(1),vd()),i&2){let t=e.$implicit,a=SS(4);hD(),ey(a.endpointFor(t))}}function Si(i,e){if(i&1){let t=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,ci,3,3,`li`,15),dS(17,pi,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,pt),vd(),da(34,`div`,71)(35,`label`,72),qS(36),aC(37,`t`),vd(),da(38,`select`,73),Ma(`change`,function(o){Hh(t);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(t);let o=SS(3);return Vh(o.pathDir.set(`out`))}),qS(46),aC(47,`t`),vd(),da(48,`button`,77),Ma(`click`,function(){Hh(t);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 t,a=e,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((t=s.pathResult())?51:-1,t),hD(3),ty(` `,lC(55,41,`graph.impact.unverified`),`: `,a.unverifiedEdges.length,` `),hD(3),bd(` `,uC(58,43,`graph.impact.coverage`,oC(49,wt,a.coverage.loaded,a.coverage.total)),` `),hD(2),yS(a.missingSources),hD(3),ey(lC(63,46,`graph.impact.topoNote`))}}function wi(i,e){if(i&1){let t=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(t);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,pt),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 t,a,o=e,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((t=s.openLink(o))?8:-1,t),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 Ei(i,e){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(e))}function ki(i,e){if(i&1){let t=DS();da(0,`li`)(1,`button`,47),Ma(`click`,function(){let o=Hh(t).$implicit,s=SS(3);return Vh(s.selectEdge(o.id))}),qS(2),vd(),da(3,`code`,48),qS(4),vd()()}if(i&2){let t=e.$implicit;hD(2),bd(` `,t.kind,` `),hD(2),ey(t.id)}}function Pi(i,e){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,e){if(i&1){let t=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(t);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(t),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(t),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,Ei,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 t,a=e,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((t=o.evidenceLoadedAt(a.evidence))?51:-1,t),hD(2),ey(lC(54,36,`graph.edge.related`)),hD(3),yS(o.relatedEdges(a))}}function Ni(i,e){if(i&1){let t=DS();da(0,`button`,40),Ma(`click`,function(){let o=Hh(t).$implicit,s=SS(3);return Vh(s.setLayout(o))}),qS(1),vd()}if(i&2){let t=e.$implicit,a=SS(3);Ar(`data-layout`,t)(`data-tone`,!a.layoutAuto()&&a.layoutName()===t?`accent`:null)(`aria-pressed`,!a.layoutAuto()&&a.layoutName()===t),hD(),bd(` `,t,` `)}}function Ii(i,e){if(i&1){let t=DS();da(0,`div`,99)(1,`span`),qS(2),aC(3,`t`),aC(4,`t`),vd(),da(5,`button`,111),Ma(`click`,function(){Hh(t);let o=SS(3);return Vh(o.confirmLayout())}),qS(6),aC(7,`t`),vd(),da(8,`button`,112),Ma(`click`,function(){Hh(t);let o=SS(3);return Vh(o.useRecommended())}),qS(9),aC(10,`t`),vd()()}if(i&2){let t=SS(3);hD(2),ty(` `,uC(3,4,`graph.layout.warn`,rC(15,j,e)),` `,uC(4,7,`graph.layout.recommended`,rC(17,j,t.layoutChoice().recommended)),` `),hD(4),bd(` `,lC(7,10,`graph.layout.runAnyway`),` `),hD(3),bd(` `,uC(10,12,`graph.layout.useRecommended`,rC(19,j,t.layoutChoice().recommended)),` `)}}function Ti(i,e){if(i&1){let t=DS();da(0,`div`,100)(1,`span`),qS(2),aC(3,`t`),aC(4,`t`),vd(),da(5,`button`,112),Ma(`click`,function(){Hh(t);let o=SS(3);return Vh(o.useRecommended())}),qS(6),aC(7,`t`),vd()()}if(i&2){let t=SS(3);hD(2),ty(` `,uC(3,3,`graph.layout.blocked`,rC(12,j,e)),` `,uC(4,6,`graph.layout.recommended`,rC(14,j,t.layoutChoice().recommended)),` `),hD(4),bd(` `,uC(7,9,`graph.layout.useRecommended`,rC(16,j,t.layoutChoice().recommended)),` `)}}function Bi(i,e){if(i&1&&(qS(0),aC(1,`t`)),i&2){let t=SS(5);bd(` `,uC(1,1,`graph.layout.rendering`,oC(4,Et,t.layoutStatus()?.done??0,t.layoutStatus()?.total??0)),` `)}}function Fi(i,e){if(i&1){let t=DS();qS(0),aC(1,`t`),da(2,`button`,113),Ma(`click`,function(){Hh(t);let o=SS(5);return Vh(o.cancelLayout())}),qS(3),aC(4,`t`),vd()}if(i&2){let t=SS(5);bd(` `,uC(1,2,`graph.layout.running`,rC(7,j,t.layoutStatus()?.layout??``)),` `),hD(3),bd(` `,lC(4,5,`state.cancel`),` `)}}function Mi(i,e){if(i&1&&dS(0,Bi,2,7)(1,Fi,5,9),i&2){let t=SS(4);hS(t.layoutStatus()?.type===`progress`?0:1)}}function Vi(i,e){if(i&1&&(qS(0),aC(1,`t`)),i&2){let t=SS(4);bd(` `,uC(1,1,`graph.layout.timeout`,oC(4,ct,t.layoutStatus()?.layout??``,t.layoutStatus()?.fallback??``)),` `)}}function Oi(i,e){if(i&1&&(qS(0),aC(1,`t`)),i&2){let t=SS(4);bd(` `,uC(1,1,`graph.layout.error`,oC(4,ct,t.layoutStatus()?.layout??``,t.layoutStatus()?.fallback??``)),` `)}}function Ai(i,e){i&1&&(qS(0),aC(1,`t`)),i&2&&bd(` `,lC(1,1,`graph.layout.cancelled`),` `)}function Di(i,e){if(i&1&&(da(0,`p`,101),dS(1,Mi,2,1)(2,Vi,2,7)(3,Oi,2,7)(4,Ai,2,3),vd()),i&2){let t=SS(3);hD(),hS(t.layoutBusy()?1:t.layoutStatus()?.type===`timeout`?2:t.layoutStatus()?.type===`error`?3:t.layoutStatus()?.type===`cancelled`?4:-1)}}function Li(i,e){if(i&1){let t=DS();da(0,`li`)(1,`button`,80),Ma(`click`,function(){let o=Hh(t).$implicit,s=SS(5);return Vh(s.toggleGroup(o.id))}),qS(2),vd()()}if(i&2){let t=e.$implicit,a=SS(5);hD(),Ar(`data-group`,t.id)(`data-tone`,a.collapsed().has(t.id)?`accent`:null)(`aria-pressed`,a.collapsed().has(t.id)),hD(),ty(` `,t.label,` · `,t.members.length,` `)}}function Ri(i,e){i&1&&(da(0,`li`,115),qS(1),aC(2,`t`),vd()),i&2&&(hD(),bd(` `,lC(2,1,`graph.group.autoNote`),` `))}function $i(i,e){if(i&1&&(da(0,`ul`,114),aC(1,`t`),mS(2,Li,3,5,`li`,null,D),dS(4,Ri,3,3,`li`,115),vd()),i&2){let t=SS(),a=SS(3);Ar(`aria-label`,lC(1,2,`graph.canvas.group`)),hD(2),yS(t.groups),hD(2),hS(a.autoClustered()?4:-1)}}function zi(i,e){i&1&&dS(0,$i,5,4,`ul`,114),i&2&&hS(e.groups.length?0:-1)}function Hi(i,e){if(i&1&&(da(0,`li`),Sa(1,`span`,116),qS(2),vd()),i&2){let t=e.$implicit,a=SS(3);Ar(`data-kind`,t),hD(),Na(`background`,a.kindColor(t)),Ar(`data-shape`,a.kindShape(t)),hD(),bd(` `,t,` `)}}function qi(i,e){if(i&1){let t=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(t);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(t);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(t);let o=SS(2);return Vh(o.resetLayout())}),qS(29),aC(30,`t`),vd(),da(31,`button`,94),Ma(`click`,function(){Hh(t);let o=SS(2);return Vh(o.fitCanvas())}),qS(32),aC(33,`t`),vd(),da(34,`button`,95),Ma(`click`,function(){Hh(t);let o=SS(2);return Vh(o.zoomToSelected())}),qS(35),aC(36,`t`),vd(),da(37,`button`,96),Ma(`click`,function(){Hh(t);let o=SS(2);return Vh(o.exportPng())}),qS(38,` PNG `),vd(),da(39,`button`,97),Ma(`click`,function(){Hh(t);let o=SS(2);return Vh(o.exportSvg())}),qS(40,` SVG `),vd(),da(41,`button`,98),Ma(`click`,function(){Hh(t);let o=SS(2);return Vh(o.resetView())}),qS(42),aC(43,`t`),vd()(),dS(44,Ii,11,21,`div`,99),dS(45,Ti,8,18,`div`,100),dS(46,Di,5,1,`p`,101),dS(47,zi,1,1),Sa(48,`div`,102,0),aC(50,`t`),da(51,`p`,103),qS(52),vd(),da(53,`ul`,104),aC(54,`t`),mS(55,Hi,3,5,`li`,null,gS),da(57,`li`,105),Sa(58,`span`,106),qS(59),aC(60,`t`),vd(),da(61,`li`,107),Sa(62,`span`,108),qS(63),aC(64,`t`),vd(),da(65,`li`,109),Sa(66,`span`,110),qS(67),aC(68,`t`),vd()()()}if(i&2){let t,a,o,s=SS(),_=SS();hD(),Ar(`aria-label`,lC(2,27,`graph.canvas.tools`)),hD(3),ey(lC(5,29,`graph.canvas.layout`)),hD(2),Ar(`data-tone`,_.layoutAuto()?`accent`:null)(`aria-pressed`,_.layoutAuto()),hD(),ty(` `,lC(8,31,`graph.canvas.auto`),` · `,_.effectiveLayout(),` `),hD(2),yS(_.layouts),hD(4),ey(lC(14,33,`graph.canvas.group`)),hD(2),qm(`value`,_.groupBy()??``),hD(2),ey(lC(18,35,`graph.group.none`)),hD(3),ey(lC(21,37,`graph.group.kind`)),hD(3),ey(lC(24,39,`graph.group.forge`)),hD(3),ey(lC(27,41,`graph.group.host`)),hD(3),bd(` `,lC(30,43,`graph.canvas.reset`),` `),hD(3),bd(` `,lC(33,45,`graph.canvas.fit`),` `),hD(2),qm(`disabled`,!_.selected()&&!_.selectedEdge()),hD(),bd(` `,lC(36,47,`graph.canvas.zoomSel`),` `),hD(7),bd(` `,lC(43,49,`graph.view.reset`),` `),hD(2),hS((t=_.pendingLayout())?44:-1,t),hD(),hS((a=_.blockedLayout())?45:-1,a),hD(),hS(_.layoutBusy()||_.layoutStatus()?46:-1),hD(),hS((o=_.groupSpec())?47:-1,o),hD(),Ar(`aria-label`,lC(50,51,`graph.canvas.aria`)),hD(4),ey(_.hoverLine()),hD(),Ar(`aria-label`,lC(54,53,`graph.canvas.legend`)),hD(2),yS(_.kindOptions(s)),hD(4),bd(``,lC(60,55,`graph.legend.declared`),` `),hD(4),bd(``,lC(64,57,`graph.legend.unverified`),` `),hD(4),bd(``,lC(68,59,`graph.legend.unavailable`),` `)}}function ji(i,e){if(i&1&&(da(0,`span`,119),qS(1),vd()),i&2){let t=SS().$implicit;Ar(`title`,t.state),hD(),ey(t.state)}}function Ki(i,e){i&1&&Sa(0,`ui-state-badge`,50)}function Wi(i,e){if(i&1){let t=DS();da(0,`li`)(1,`button`,117),Ma(`click`,function(){let o=Hh(t).$implicit,s=SS(3);return Vh(s.select(o))}),da(2,`span`,18),qS(3),vd(),da(4,`span`,118),qS(5),vd(),dS(6,ji,2,2,`span`,119),da(7,`code`,120),qS(8),vd(),dS(9,Ki,1,0,`ui-state-badge`,50),vd()()}if(i&2){let t=e.$implicit,a=SS(3);hD(),Ar(`data-unverified`,t.unverified||null)(`data-failed`,a.isFailed(t)||null)(`data-selected`,a.selected()?.id===t.id||null)(`data-neighbor`,a.isNeighbor(t)||null),hD(2),ey(t.kind),hD(),Ar(`title`,t.label),hD(),ey(t.label),hD(),hS(t.state?6:-1),hD(),Ar(`title`,t.id),hD(),ey(t.id),hD(),hS(t.unverified?9:-1)}}function Ui(i,e){i&1&&(da(0,`li`,15),qS(1),aC(2,`t`),vd()),i&2&&(hD(),ey(lC(2,1,`graph.fed.empty`)))}function Yi(i,e){if(i&1&&(da(0,`ul`,33),mS(1,Wi,10,11,`li`,null,D,!1,Ui,3,3,`li`,15),vd()),i&2){let t=SS(2);hD(),yS(t.filtered())}}function Ji(i,e){i&1&&(Sa(0,`ui-empty`,34),aC(1,`t`)),i&2&&qm(`title`,lC(1,1,`graph.fed.none`))}function Qi(i,e){if(i&1){let t=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(t);let o=SS();return Vh(o.setMode(`list`))}),qS(13),aC(14,`t`),vd(),da(15,`button`,22),Ma(`click`,function(){Hh(t);let o=SS();return Vh(o.setMode(`canvas`))}),qS(16),aC(17,`t`),vd()(),da(18,`button`,23),Ma(`click`,function(){Hh(t);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(t);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,wi,72,44,`section`,30),dS(37,Gi,59,38,`section`,31),dS(38,qi,69,61,`div`,32),dS(39,Yi,4,1,`ul`,33),dS(40,Ji,2,3,`ui-empty`,34),vd()}if(i&2){let t,a,o,s,_=e,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`,!_.nodes.length),hD(),qm(`size`,14),hD(),bd(` `,lC(21,36,`graph.snap.capture`),` `),hD(2),qm(`disabled`,!_.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(_)),hD(3),ey(lC(32,42,`graph.fed.evidenceNote`)),hD(2),hS((t=f.snap())?33:-1,t),hD(),hS(_.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(_.nodes.length&&f.mode()===`canvas`?38:-1),hD(),hS(_.nodes.length&&f.mode()===`list`?39:-1),hD(),hS(_.nodes.length?-1:40)}}var Q=i=>i.normalize(`NFD`).replace(new RegExp(`\\p{Diacritic}`,`gu`),``).toLowerCase().trim();var Xi=400;var Zi=24;var en={nodes:0,edges:0,density:0,components:0,largestShare:1};var K=()=>{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=Zi;pathTarget=k(null);pathDir=k(`out`);groupBy=k(null);collapsed=k(new Set);snap=k(ot(K()));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 e=new Map;for(let t of this.fed()?.nodes??[])e.set(t.id,t);return e});degreeMap=tn(()=>{let e=new Map;for(let t of this.fed()?.edges??[])e.set(t.source,(e.get(t.source)??0)+1),e.set(t.target,(e.get(t.target)??0)+1);return e});report=tn(()=>{let e=this.selected(),t=this.fed();return!e||!t?null:Ye(t,e.id,this.impactDepth())});pathResult=tn(()=>{let e=this.selected(),t=this.fed(),a=this.pathTarget();return!e||!t||!a?null:Ue(t,e.id,a,this.pathDir())});groupSpec=tn(()=>{let e=this.fed();if(!e)return null;let t=this.groupBy();return t?x(e,t):this.autoClustered()?x(e,`kind`):null});stats=tn(()=>{let e=this.fed();return e?b(e.nodes,e.edges):null});layoutChoice=tn(()=>G(this.stats()??en,{preferred:this.layoutAuto()?null:this.layoutName(),env:{grouped:this.groupBy()!==null}}));effectiveLayout=tn(()=>{let e=this.layoutChoice();return e.cost===`blocked`?e.recommended:e.layout});blockedLayout=tn(()=>{let e=this.layoutChoice();return e.source===`user`&&e.cost===`blocked`?e.layout:null});autoClustered=tn(()=>this.layoutChoice().cluster&&this.layoutAuto()&&this.groupBy()===null&&!this.userGroupChoice);relatedEdges(e){let t=this.fed();return t?t.edges.filter(a=>a.id!==e.id&&(a.source===e.source&&a.target===e.target||a.source===e.target&&a.target===e.source)):[]}normCache=new WeakMap;filtered=tn(()=>{let e=this.fed();if(!e)return[];let t=Q(this.query()),a=this.kind();return e.nodes.filter(o=>{if(a!==null&&o.kind!==a)return!1;if(!t)return!0;let s=this.normCache.get(o);return s||(s={id:Q(o.id),label:Q(o.label)},this.normCache.set(o,s)),s.id.includes(t)||s.label.includes(t)})});constructor(){Oo(()=>{let e=this.canvasEl()?.nativeElement??null;e&&!this.renderer&&this.mountCanvas(e),!e&&this.renderer&&this.destroyCanvas()}),Oo(()=>{this.rendererReady();let e=this.fed();this.renderer&&e&&(this.renderer.setData(F(e),{layout:this.effectiveLayout()}),this.pendingViewport&&(this.renderer.setViewport(this.pendingViewport),this.pendingViewport=null))}),Oo(()=>{this.rendererReady();let e=this.renderer;if(!e)return;let t=this.selected(),a=this.selectedEdge();e.select(t?.id??a?.id??null);let o=this.pathResult();if(o?.nodes){e.highlight(new Set(o.nodes),new Set(o.edges));return}if(t){let s=this.report();if(s){e.highlight(new Set([t.id,...s.uses.map(_=>_.id),...s.usedBy.map(_=>_.id)]),new Set(s.edges.map(_=>_.id)));return}}e.highlight(new Set,new Set)}),Oo(()=>{this.rendererReady();let e=this.renderer;if(!e)return;let t=Q(this.query())!==``||this.kind()!==null;e.dimExcept(t?new Set(this.filtered().map(a=>a.id)):null)}),Oo(()=>{this.rendererReady();let e=this.renderer;if(!e)return;let t=this.groupSpec();e.setGrouping(t?m(l({},t),{collapsed:this.collapsed()}):null)}),Oo(()=>{let e=this.groupSpec();this.autoClustered()&&e&&e.groups.length&&!this.userCollapseChoice&&this.collapsed().size===0&&this.collapsed.set(new Set(e.groups.map(t=>t.id)))}),Oo(()=>{this.rendererReady();let e=this.renderer;if(!e)return;let t=this.diff();e.setDiff(t?at(t):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(e){if(!this.mounting){this.mounting=e;try{let{createCytoscapeRenderer:t}=await import(`./chunk-CMtL9dJD.js`);if(this.canvasEl()?.nativeElement!==e||this.renderer)return;let a=document.documentElement.dataset.motion,s=t({animate:!(a===`reduced`||a!==`full`&&typeof matchMedia<`u`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches)});s.mount(e),s.onSelect(_=>this.onCanvasSelect(_)),s.onHover(_=>this.hovered.set(_)),s.onViewport(_=>this.vp.set(_)),s.onLayoutStatus(_=>{if(_.type!==`superseded`){if(_.type===`done`||_.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(_),this.layoutBusy.set(_.type===`started`||_.type===`progress`||_.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(e){e?.type===`node`?(this.selectedEdge.set(null),this.selectId(e.id)):e?.type===`edge`?(this.selected.set(null),this.selectedEdge.set(this.fed()?.edges.find(t=>t.id===e.id)??null)):(this.selected.set(null),this.selectedEdge.set(null))}setMode(e){this.mode.set(e)}setLayout(e){this.pendingLayout.set(null);let t=this.stats(),a=t?v(e,t):`ok`;if(a===`warn`){this.pendingLayout.set(e);return}if(a===`blocked`){this.layoutAuto.set(!1),this.layoutName.set(e);return}this.applyLayout(e)}applyLayout(e){this.layoutAuto.set(!1),this.layoutName.set(e),this.pendingLayout.set(null),this.renderer?.layout(this.effectiveLayout())}confirmLayout(){let e=this.pendingLayout();if(!e)return;let t=this.stats();if(t&&v(e,t)===`blocked`){this.pendingLayout.set(null),this.layoutAuto.set(!1),this.layoutName.set(e);return}this.applyLayout(e)}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 e=this.selected()?.id??this.selectedEdge()?.id;e&&this.renderer?.zoomTo(e)}selectFocus(e){this.selectId(e),this.renderer&&this.renderer.zoomTo(e)}onGroupBy(e){let t=e.target.value;this.userGroupChoice=!0,this.groupBy.set(t===`kind`||t===`forge`||t===`host`?t:null),this.collapsed.set(new Set)}toggleGroup(e){this.userCollapseChoice=!0;let t=new Set(this.collapsed());t.has(e)?t.delete(e):t.add(e),this.collapsed.set(t)}onPathTarget(e){let t=e.target.value;this.pathTarget.set(t||null)}pathOptions(e){return(this.fed()?.nodes??[]).filter(t=>t.id!==e).slice(0,Xi).map(t=>({id:t.id}))}takeSnapshot(){let e=this.fed();if(!e)return;let t=nt(e,new Date().toISOString());rt(K(),t),this.snap.set(t),this.diff.set(se(t,e))}toggleDiff(e){this.diff.set(this.diff()?null:se(this.snap(),e))}dropSnapshot(){dt(K()),this.snap.set(null),this.diff.set(null)}resetView(){Ze(K()),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 e={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(K(),e)},200)}applySaved(){if(this.restored)return;this.restored=!0;let e=Qe(K());if(!e)return;this.mode.set(e.mode),this.layoutAuto.set(e.layoutAuto!==!1),this.layoutName.set(e.layout),e.layoutAuto===!1&&(this.userGroupChoice=!0),this.query.set(e.query),this.kind.set(e.kind),this.groupBy.set(e.groupBy),this.collapsed.set(new Set(e.collapsedGroups)),e.viewport&&(this.pendingViewport=e.viewport);let t=this.nodeById();if(e.selectedNode&&t.has(e.selectedNode))this.selected.set(t.get(e.selectedNode));else if(e.selectedEdge){let a=this.fed()?.edges.find(o=>o.id===e.selectedEdge);a&&this.selectedEdge.set(a)}}exportPng(){let e=this.renderer?.exportPng();e&&this.download(e,`forge-federated-graph.png`)}exportSvg(){let e=this.renderer?.exportSvg();e&&this.download(`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`,`forge-federated-graph.svg`)}download(e,t){let a=document.createElement(`a`);a.href=e,a.download=t,a.click()}kindColor(e){return m$1[e].color}kindShape(e){return m$1[e].shape}isFailed=p$1;degreeOf(e){return this.degreeMap().get(e)??0}relsOut(e){return(this.fed()?.edges??[]).filter(t=>t.source===e)}relsIn(e){return(this.fed()?.edges??[]).filter(t=>t.target===e)}metaRows(e){return Object.entries(e.meta??{})}hoverLine(){let e=this.hovered();if(!e)return`\xA0`;let t=this.fed();if(!t)return e.id;if(e.type===`node`){let o=this.nodeById().get(e.id);return o?`${o.kind} \xB7 ${o.id}`:e.id}let a=t.edges.find(o=>o.id===e.id);return a?`${a.kind} \xB7 ${T[a.evidence]}`:e.id}evidenceState(e){return this.fed()?.sources[e]?.state??`unverified`}evidenceLoadedAt(e){if(e===`graphs`)return this.graphsLoadedAt();if(e===`bootstrap`)return this.store.refreshedAt();let a=this.srcs.find(o=>o.id===e)?.src.loadedAt();return a?y(a):null}stampAt(e){return y(e)}async load(){this.error.set(null),this.loading.set(!0),this.selected.set(null),this.selectedEdge.set(null);let e=hE(this.api.graphs()).then(t=>{this.bundle.set(t),this.graphsLoadedAt.set(new Date().toISOString())}).catch(t=>{this.bundle.set(null),this.error.set(c(t))});await Promise.allSettled([e,...this.srcs.map(t=>t.src.load(()=>this.read(t.id)))]),this.loading.set(!1),this.rebuild(),this.applySaved(),this.snap()&&this.diff()}read(e){switch(e){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 e=f=>f.data()!==null?`loaded`:f.unavailable()?`unavailable`:`unverified`,t=this.error(),a=this.bundle(),o=a?a.availability.state===`available`||a.availability.state===`no_graph`?`loaded`:`unverified`:t&&(t.status===404||t.body.code===`PORTAL-NOT-FOUND`)?`unavailable`:`unverified`,s=this.store.descriptor(),_={};for(let f of this.srcs)_[f.id]=e(f.src);_.graphs=o,_.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:_}))}data(e){return this.srcs.find(t=>t.id===e)?.src.data()??null}select(e){this.selectedEdge.set(null),this.pathTarget.set(null),this.selected.set(e)}selectId(e){let t=this.nodeById().get(e);t&&this.select(t)}selectEdge(e){let t=this.fed()?.edges.find(a=>a.id===e);t&&(this.selected.set(null),this.selectedEdge.set(t))}isNeighbor(e){let t=this.selected();if(!t||t.id===e.id)return!1;let a=this.report();return a?a.uses.some(o=>o.id===e.id)||a.usedBy.some(o=>o.id===e.id):!1}toggleKind(e){this.kind.set(this.kind()===e?null:e)}kindOptions(e){return G$1.filter(t=>(e.counts[t]??0)>0)}label(e){return this.nodeById().get(e)?.label??e}openLink(e){return r(e)}endpointFor(e){return T[e]}sourceList(e){return Object.entries(e.sources).map(([t,a])=>({id:t,info:a}))}sourceBadge(e){return e===`loaded`?`ok`:e===`unavailable`?`muted`:`warn`}exportJson(){return JSON.stringify(this.fed(),null,2)}exportGraph(){if(!this.fed())return;let e=document.createElement(`a`);e.href=`data:application/json;charset=utf-8,${encodeURIComponent(this.exportJson())}`,e.download=`forge-federated-graph.json`,e.click()}viewName(e){return String(e.view??e.name??`view`)}viewNodes(e){let t=e.nodes;return Array.isArray(t)?t.length:Number(e.node_count??0)}viewEdges(e){let t=e.edges;return Array.isArray(t)?t.length:Number(e.edge_count??0)}static ɵfac=function(t){return new(t||i)};static ɵcmp=ei$1({type:i,selectors:[[`page-graph`]],viewQuery:function(t,a){t&1&&Km(a.canvasEl,bt,5),t&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-section`,`layout-block`,`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(t,a){if(t&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,Qi,41,44,`section`,6)),t&2){let o,s,_;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((_=a.fed())?10:-1,_)}},dependencies:[vc,T$1,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-fHAvBZdv.js b/portal/assets/chunk-DOMhvl2h.js similarity index 98% rename from portal/assets/chunk-fHAvBZdv.js rename to portal/assets/chunk-DOMhvl2h.js index 1340fc4..da56082 100644 --- a/portal/assets/chunk-fHAvBZdv.js +++ b/portal/assets/chunk-DOMhvl2h.js @@ -1 +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 +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-CdjWoiPd.js";import{i as n,r as g,t as g$1}from"./main-GU444GPT.js";import{a as m$1,l as e,n as F}from"./chunk-CCHwcZ3Q.js";import{t as h}from"./chunk-DTTwuwxc.js";import{n as G$1,r as H,t as E}from"./chunk-pVzsnrcB.js";import{a as l$1}from"./chunk-YOPJhFLo.js";import{t as _}from"./chunk-CEkKt3jx.js";import{t as D}from"./chunk-Bz1rYEmS.js";import{n as k$1,t as I}from"./chunk-C8lOpg3j.js";import{t as T}from"./chunk-Cq-eK9ux.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-CMtL9dJD.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-DQJAW8AL.js b/portal/assets/chunk-DTTwuwxc.js similarity index 95% rename from portal/assets/chunk-DQJAW8AL.js rename to portal/assets/chunk-DTTwuwxc.js index 542c3a5..7c079b6 100644 --- a/portal/assets/chunk-DQJAW8AL.js +++ b/portal/assets/chunk-DTTwuwxc.js @@ -1 +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 +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-CdjWoiPd.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-IG0wRxY1.js b/portal/assets/chunk-DXn5h-qA.js similarity index 97% rename from portal/assets/chunk-IG0wRxY1.js rename to portal/assets/chunk-DXn5h-qA.js index 92ac6dc..d670de5 100644 --- a/portal/assets/chunk-IG0wRxY1.js +++ b/portal/assets/chunk-DXn5h-qA.js @@ -1 +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 +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-CdjWoiPd.js";import{a as w$1,r as g,t as g$1}from"./main-GU444GPT.js";import{a as l,r as f,s as y}from"./chunk-YOPJhFLo.js";import{t as _}from"./chunk-CEkKt3jx.js";import{t as D}from"./chunk-Bz1rYEmS.js";import{n as k$1,t as I}from"./chunk-C8lOpg3j.js";import{t as T}from"./chunk-Cq-eK9ux.js";import{t as F}from"./chunk-BiFkDKwK.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-BkDXoz47.js b/portal/assets/chunk-DYZh4vGE.js similarity index 97% rename from portal/assets/chunk-BkDXoz47.js rename to portal/assets/chunk-DYZh4vGE.js index 681ea50..4765d33 100644 --- a/portal/assets/chunk-BkDXoz47.js +++ b/portal/assets/chunk-DYZh4vGE.js @@ -1 +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 +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-CdjWoiPd.js";import{i as n,o as f,r as g}from"./main-GU444GPT.js";import{t as _}from"./chunk-CEkKt3jx.js";import{t as D}from"./chunk-Bz1rYEmS.js";import{n as k$1,t as I}from"./chunk-C8lOpg3j.js";import{t as T}from"./chunk-Cq-eK9ux.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-ctcjU5we.js b/portal/assets/chunk-DainJSmQ.js similarity index 98% rename from portal/assets/chunk-ctcjU5we.js rename to portal/assets/chunk-DainJSmQ.js index 45422e0..52b32a3 100644 --- a/portal/assets/chunk-ctcjU5we.js +++ b/portal/assets/chunk-DainJSmQ.js @@ -1 +1 @@ -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 +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-CdjWoiPd.js";import{i as n,r as g,t as g$1}from"./main-GU444GPT.js";import{t as h$1}from"./chunk-DTTwuwxc.js";import{t as _}from"./chunk-CEkKt3jx.js";import{n as k$1,t as I}from"./chunk-C8lOpg3j.js";import{t as T$2}from"./chunk-Cq-eK9ux.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-DNCrHYu6.js b/portal/assets/chunk-DiM6mH3O.js similarity index 98% rename from portal/assets/chunk-DNCrHYu6.js rename to portal/assets/chunk-DiM6mH3O.js index 75aff8e..76c19e7 100644 --- a/portal/assets/chunk-DNCrHYu6.js +++ b/portal/assets/chunk-DiM6mH3O.js @@ -1 +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 +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-CdjWoiPd.js";import{i as n,r as g,t as g$1}from"./main-GU444GPT.js";import{t as h}from"./chunk-DTTwuwxc.js";import{t as _}from"./chunk-CEkKt3jx.js";import{t as D}from"./chunk-Bz1rYEmS.js";import{n as k$1,t as I}from"./chunk-C8lOpg3j.js";import{t as T}from"./chunk-Cq-eK9ux.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-BF4IykBc.js b/portal/assets/chunk-Dr99IBD1.js similarity index 98% rename from portal/assets/chunk-BF4IykBc.js rename to portal/assets/chunk-Dr99IBD1.js index 4b87282..2396cd1 100644 --- a/portal/assets/chunk-BF4IykBc.js +++ b/portal/assets/chunk-Dr99IBD1.js @@ -1 +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 +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-CdjWoiPd.js";import{i as n,o as f,r as g}from"./main-GU444GPT.js";import{a as l$1,s as y}from"./chunk-YOPJhFLo.js";import{t as _}from"./chunk-CEkKt3jx.js";import{t as D}from"./chunk-Bz1rYEmS.js";import{n as k$1,t as I}from"./chunk-C8lOpg3j.js";import{t as T}from"./chunk-Cq-eK9ux.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-DsEeBzOB.js b/portal/assets/chunk-DsEeBzOB.js deleted file mode 100644 index f322a97..0000000 --- a/portal/assets/chunk-DsEeBzOB.js +++ /dev/null @@ -1 +0,0 @@ -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-DQFb71Td.js b/portal/assets/chunk-NOzavK8E.js similarity index 99% rename from portal/assets/chunk-DQFb71Td.js rename to portal/assets/chunk-NOzavK8E.js index 5c306f2..7c43fc1 100644 --- a/portal/assets/chunk-DQFb71Td.js +++ b/portal/assets/chunk-NOzavK8E.js @@ -1 +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 +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-CdjWoiPd.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-O1vNs89S.js b/portal/assets/chunk-O1vNs89S.js deleted file mode 100644 index f05d5af..0000000 --- a/portal/assets/chunk-O1vNs89S.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`,"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-DgMFvN4-.js b/portal/assets/chunk-Onvj36bT.js similarity index 98% rename from portal/assets/chunk-DgMFvN4-.js rename to portal/assets/chunk-Onvj36bT.js index 42434ae..5c2a350 100644 --- a/portal/assets/chunk-DgMFvN4-.js +++ b/portal/assets/chunk-Onvj36bT.js @@ -1 +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 +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-CdjWoiPd.js";import{i as n,r as g,s as y,t as g$1}from"./main-GU444GPT.js";import{t as _}from"./chunk-CEkKt3jx.js";import{t as D}from"./chunk-Bz1rYEmS.js";import{n as k$1,t as I}from"./chunk-C8lOpg3j.js";import{t as T}from"./chunk-Cq-eK9ux.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-OywyDaLv.js b/portal/assets/chunk-OywyDaLv.js new file mode 100644 index 0000000..34e9380 --- /dev/null +++ b/portal/assets/chunk-OywyDaLv.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.blocked":`{layout} is measured-unsafe at this scale — a single synchronous frame outlasts the watchdog, so it is blocked here.`,"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`,"execution.skipToEvents":`Skip to the events list`,"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-CygOa7EH.js b/portal/assets/chunk-VtbIXmp9.js similarity index 97% rename from portal/assets/chunk-CygOa7EH.js rename to portal/assets/chunk-VtbIXmp9.js index 757bc05..7f41707 100644 --- a/portal/assets/chunk-CygOa7EH.js +++ b/portal/assets/chunk-VtbIXmp9.js @@ -1 +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 +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-CdjWoiPd.js";import{t as T}from"./chunk-Cq-eK9ux.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-BNDlNg-C.js b/portal/assets/chunk-YOPJhFLo.js similarity index 94% rename from portal/assets/chunk-BNDlNg-C.js rename to portal/assets/chunk-YOPJhFLo.js index d81ea13..bad8b02 100644 --- a/portal/assets/chunk-BNDlNg-C.js +++ b/portal/assets/chunk-YOPJhFLo.js @@ -1 +1 @@ -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 +import{gt as k$1,lt as hE,t as $}from"./chunk-CdjWoiPd.js";import{i as n}from"./main-GU444GPT.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-hh6-Palp.js b/portal/assets/chunk-hh6-Palp.js deleted file mode 100644 index cac7711..0000000 --- a/portal/assets/chunk-hh6-Palp.js +++ /dev/null @@ -1 +0,0 @@ -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-uVK-pwMG.js b/portal/assets/chunk-uVK-pwMG.js new file mode 100644 index 0000000..8bfb9d6 --- /dev/null +++ b/portal/assets/chunk-uVK-pwMG.js @@ -0,0 +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`,"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.blocked":`{layout} é inseguro nesta escala (medido) — um único frame síncrono excede o watchdog, então está bloqueado aqui.`,"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`,"execution.skipToEvents":`Pular para a lista de eventos`,"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-Br6NMJL9.js b/portal/assets/chunk-yqMTkZh4.js similarity index 97% rename from portal/assets/chunk-Br6NMJL9.js rename to portal/assets/chunk-yqMTkZh4.js index 1e73052..e642c16 100644 --- a/portal/assets/chunk-Br6NMJL9.js +++ b/portal/assets/chunk-yqMTkZh4.js @@ -1 +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 +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-CdjWoiPd.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/index.html b/portal/assets/index.html index f63d541..69ac149 100644 --- a/portal/assets/index.html +++ b/portal/assets/index.html @@ -9,5 +9,5 @@ - + diff --git a/portal/assets/main-XW2ZMSO5.js b/portal/assets/main-GU444GPT.js similarity index 96% rename from portal/assets/main-XW2ZMSO5.js rename to portal/assets/main-GU444GPT.js index 920854e..2e8ce7a 100644 --- a/portal/assets/main-XW2ZMSO5.js +++ b/portal/assets/main-GU444GPT.js @@ -1 +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 +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-CdjWoiPd.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-BLx5JhZj.js`).then(n=>n.DashboardPage)},{path:`install`,loadComponent:()=>import(`./chunk-Onvj36bT.js`).then(n=>n.InstallPage)},{path:`config`,loadComponent:()=>import(`./chunk-DYZh4vGE.js`).then(n=>n.ConfigPage)},{path:`forges`,loadComponent:()=>import(`./chunk-B6-SnBYR.js`).then(n=>n.ExplorerPage)},{path:`forges/:id`,loadComponent:()=>import(`./chunk-DXn5h-qA.js`).then(n=>n.ForgeDetailPage)},{path:`match`,loadComponent:()=>import(`./chunk-DainJSmQ.js`).then(n=>n.MatchPage)},{path:`federation`,loadComponent:()=>import(`./chunk-Ca0umSMB.js`).then(n=>n.FederationPage)},{path:`profiles`,loadComponent:()=>import(`./chunk-BqMqB2xY.js`).then(n=>n.ProfilesPage)},{path:`hosts`,loadComponent:()=>import(`./chunk-Dr99IBD1.js`).then(n=>n.HostsPage)},{path:`mcp`,loadComponent:()=>import(`./chunk-BqWusG3k.js`).then(n=>n.McpPage)},{path:`skills`,loadComponent:()=>import(`./chunk-DiM6mH3O.js`).then(n=>n.SkillsPage)},{path:`agents`,loadComponent:()=>import(`./chunk-DOMhvl2h.js`).then(n=>n.AgentsPage)},{path:`tasks`,loadComponent:()=>import(`./chunk-BCNptXUN.js`).then(n=>n.TasksPage)},{path:`graph`,loadComponent:()=>import(`./chunk-DDQs0Fva.js`).then(n=>n.GraphPage)},{path:`observe`,loadComponent:()=>import(`./chunk-Bs3fXOeP.js`).then(n=>n.ObservePage)},{path:`execution`,loadComponent:()=>import(`./chunk-CM0T98Hn.js`).then(n=>n.ExecutionPage)},{path:`lab`,loadComponent:()=>import(`./chunk-BmwkYp7x.js`).then(n=>n.LabPage)},{path:`versions`,loadComponent:()=>import(`./chunk-CyIkteAc.js`).then(n=>n.VersionsPage)},{path:`knowledge`,loadComponent:()=>import(`./chunk-C3EdlW-0.js`).then(n=>n.KnowledgePage)},{path:`guide`,loadComponent:()=>import(`./chunk-VtbIXmp9.js`).then(n=>n.GuidePage)},{path:`settings`,loadComponent:()=>import(`./chunk-BhA7s971.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/manifest.json b/portal/manifest.json index ea0ece3..93ac831 100644 --- a/portal/manifest.json +++ b/portal/manifest.json @@ -1,164 +1,164 @@ { "files": { - "chunk-16deWS0U.js": { - "bytes": 1651, - "sha256": "6d7120bcb708c47de243af76fa67784feca7f76518ac006f2ae083c8181221fd" - }, - "chunk-92Xoau85.js": { - "bytes": 10855, - "sha256": "cc71ccca03ee9ea1202f22f43c90f0687cec730ff582d06b5d638850a03d5e50" - }, - "chunk-BAgCErjk.js": { - "bytes": 457238, - "sha256": "c246b22df242ba02d8f16ea135cd52155fe6c118026d8028a35e4ad72b6f406e" - }, - "chunk-BF4IykBc.js": { - "bytes": 17669, - "sha256": "db9bd6e28af2c3d96cf22eac4ba5696e5ac8ecf9fc1d535e4885212cc14aa001" + "chunk-B6-SnBYR.js": { + "bytes": 23657, + "sha256": "65b33434dfc7912bb5a591f58d5f5763009340ff3bf45da93fe09ea5d155dcab" }, - "chunk-BGgpmc9t.js": { - "bytes": 4015, - "sha256": "36b3c9bafee5cccc51c69849bff704edf9ce556a23fb8fa5b91b306c937d26c4" + "chunk-BCNptXUN.js": { + "bytes": 40190, + "sha256": "5ba20c128759b99f73a46cfbf694f0e666f11008f0d6f819d02603ca5007b5b8" }, - "chunk-BNDlNg-C.js": { - "bytes": 2237, - "sha256": "346c28755acbb6e72925b04b0b3eef1205f148ac8edf6e43f020c83aeebd616b" + "chunk-BLx5JhZj.js": { + "bytes": 33366, + "sha256": "927870c3cf0024070a9d3e477ec47adde2dd33ef9a79525d59da3917aaca3a92" }, "chunk-BYYLUO5t.js": { "bytes": 4774, "sha256": "7cd8b868f4c81dbfaed000cafc5563c26df20a151a662f5272b38f395dcb6924" }, - "chunk-BYyT8UUn.js": { - "bytes": 23904, - "sha256": "e76a2a7f77302d281fb6f675c8acc6cb41f4f95f5c55aeb9de78706ab3216aea" - }, - "chunk-B_bDidf_.js": { + "chunk-BhA7s971.js": { "bytes": 7585, - "sha256": "755ef31e4c459b81756f03a5a9b1b8d1626a0dd5ac08228ea872c7892a70df5e" + "sha256": "b6478792bfb46ae5b8c3025d4bc7cf44480df84fcc3de48fe05065830000f5e4" }, - "chunk-BefGrJ9d.js": { - "bytes": 281801, - "sha256": "9d87692ecafb803d308e283a9a721964b7208c27c362373e2b7930c768df360c" + "chunk-BiFkDKwK.js": { + "bytes": 4256, + "sha256": "ff4e08730e71f9a8a4236f1f35eccb90b35c4b2f334b3942ee2329e884060f0b" }, - "chunk-BflJ-4CO.js": { - "bytes": 12432, - "sha256": "cdb03a49be391ff1cdacd6fab673fe0b0123d0a6320e7b42e6f799593e3e4fba" + "chunk-BmwkYp7x.js": { + "bytes": 13056, + "sha256": "a949bc7b69aa82cd9394c6c7bcc939e54f1fd36b5e0c7cd10bc7799ae360f674" }, - "chunk-Bg2lccQE.js": { - "bytes": 4857, - "sha256": "2bdda731fdd3d30e5add002e28ff87063933b5eea9f1a76eee14c69463a1f204" + "chunk-BqMqB2xY.js": { + "bytes": 10855, + "sha256": "e36b59cfed20b1f8a4b7b368f4cf99f3dbee25fc04108ecb50f43724e2d9f623" }, - "chunk-BkDXoz47.js": { - "bytes": 11118, - "sha256": "d921c762d7dcc4837a56ce9e798d80109784c5207fcb53d382ca5e41ef87fb9b" + "chunk-BqWusG3k.js": { + "bytes": 23904, + "sha256": "08c6c50f7773cf7a2f2cab106667d35d6aadddcfcc0a76e0c7aed8899c583988" }, - "chunk-Br6NMJL9.js": { - "bytes": 2146, - "sha256": "187230a0e7850bbc622a04f252901ac2121abc65febdd30621285cdaaed24b62" + "chunk-Bs3fXOeP.js": { + "bytes": 13196, + "sha256": "2a6e7931b060ac6f5b5b7aae8bb279d1921972b13e1988dfe29d4f867d2b1782" + }, + "chunk-Bz1rYEmS.js": { + "bytes": 4857, + "sha256": "425bbed59ec37956a0b818a6c52ccbc4e2d2b40130a17b74539c574bdaf749ef" }, "chunk-C0nXO1-7.js": { "bytes": 1728, "sha256": "39343c966b97d70d8886be7341235ecfa9a6795f5558ba6e48501d8dcf348f9a" }, + "chunk-C3EdlW-0.js": { + "bytes": 30300, + "sha256": "4199d1637dcfe0873cd5874b97458a23f867dbd7aa1b77ea006c36876a0d6946" + }, + "chunk-C8lOpg3j.js": { + "bytes": 5404, + "sha256": "651844ecbd432a3f79fabf31763d09c3f543cba3b344703b3661d5fc8a52fcdc" + }, "chunk-CCHwcZ3Q.js": { "bytes": 2527, "sha256": "c1537eac2c542616f7380fce6b32aa53203e60e1588fa2f282cd56ffd3146aba" }, - "chunk-CDQZIMhH.js": { - "bytes": 23657, - "sha256": "ab6854f493a0b6c3263e8f8cdbf9f2e09e4fb84192f9b4deb4eff02c2e4718f8" + "chunk-CEkKt3jx.js": { + "bytes": 1651, + "sha256": "bb9b6f905026ff7613556d0f56f67f62ff80ff34060afc83f1faeb6e7edf267f" }, - "chunk-CM-MlJlQ.js": { - "bytes": 40190, - "sha256": "89c95c6643d573f9155c8640db03a98761d429dd2f205f91b49e2637aa1e73ae" + "chunk-CM0T98Hn.js": { + "bytes": 40320, + "sha256": "a3b5dd984331eaed19500a28000786161bd11bef5872f439d1f61ba03af0c001" }, - "chunk-CR0uEECS.js": { - "bytes": 30300, - "sha256": "87dc815073ac788d0f9bdd0661e0fd19a50ea7c09fa5001040144f84320b2ae6" + "chunk-CMtL9dJD.js": { + "bytes": 457240, + "sha256": "7d24f776843468a259c6bc4f1b0568b4a6da2bad3a20f43393f948d4f45e35cf" }, - "chunk-CygOa7EH.js": { - "bytes": 4914, - "sha256": "c0d51c884a3cb33addf8d9e126b536987c54f77e7e82e4e8a1d903187a6f61e3" + "chunk-Ca0umSMB.js": { + "bytes": 20224, + "sha256": "0e36dec3d0b0b5b772c722f8484cbc664b66ecb544abb5cff0b5fcd052ed89cd" + }, + "chunk-CdjWoiPd.js": { + "bytes": 281801, + "sha256": "075db79923aa02fa2181218f63b973af0d7345940461c73d1d1e707c7acbe6a2" + }, + "chunk-Cq-eK9ux.js": { + "bytes": 4015, + "sha256": "a1f44d272dedf37e5ce97784b5a1b6bba616e48f0039e881f56ba76576527ffd" + }, + "chunk-CyIkteAc.js": { + "bytes": 12432, + "sha256": "085aa1978e651b6f035c553a7dd21e8e0003ede7af217f3e04c603ac49d01025" }, "chunk-D-7Jr8A3.js": { "bytes": 1514, "sha256": "6aab6cd467efb8913bfeeb6c0533ebf3eefa97bfc934cd33920a7bf1d15ef41d" }, - "chunk-D4lhtoQa.js": { - "bytes": 58374, - "sha256": "9fd438606ff6f663f802b0e71a64e71071ea384c9720d02ad526145f0e341809" + "chunk-DDQs0Fva.js": { + "bytes": 59358, + "sha256": "f453625edacc021ed1bf4bf8c286fb7b77978d8ead68122fa53398e70e85cf59" }, - "chunk-D5z0OfqY.js": { - "bytes": 13196, - "sha256": "98ba29f6499169ed8dc3322e867355df0ff993b8bbcdd918a25d7916254aacb4" + "chunk-DOMhvl2h.js": { + "bytes": 31642, + "sha256": "42b27444386e16fa99c1c640474115e13f38b6d5cbf21627fd2985c4432ca6c2" }, - "chunk-DNCrHYu6.js": { - "bytes": 16405, - "sha256": "90289215feab6191b9d3ae3ddb3ee1a13af9219d19f5cd74dde4c4bb2cfdea90" + "chunk-DTTwuwxc.js": { + "bytes": 1585, + "sha256": "cbc32524dc037c948a22639519328888c2765d3443c75502f28eaa2c5dbb298f" }, - "chunk-DQFb71Td.js": { - "bytes": 29228, - "sha256": "fc9afcf4897d24c74d088e3c983da6a4ff6b5b38a56e1a821902d97fe17ec2ac" + "chunk-DXn5h-qA.js": { + "bytes": 15262, + "sha256": "daeac7528832d3ab12488f13d58faa30360316f0d441aeee6c495c2efb701966" }, - "chunk-DQJAW8AL.js": { - "bytes": 1585, - "sha256": "c2c7c259e71ccb43dddb44a3d9edd9882d476ecc629e631dac83c50494c6c1b9" + "chunk-DYZh4vGE.js": { + "bytes": 11118, + "sha256": "2481ee129384a5c0ec6c0056517fa321fb3eebe62f324e7cc14236406ecf372d" }, - "chunk-DQtX_-dj.js": { - "bytes": 5404, - "sha256": "b2de838a1000fe3dbba621eda09694fb48e1399057c8c4c00768fc16d33bb02e" + "chunk-DainJSmQ.js": { + "bytes": 12808, + "sha256": "d1cc3d2936ee24699640aaa44a7cc7272dab1c5a52ec06307e0120f79726f704" }, - "chunk-DgMFvN4-.js": { - "bytes": 31473, - "sha256": "6931ef3e013404573b871dd83c1b7a889e9d712ab6854a35277c22d5099d40ab" + "chunk-DiM6mH3O.js": { + "bytes": 16405, + "sha256": "253ef4ddb902ec6ca1a9ece362ea05a33f314fd8a1553867dfac7e00d770b65f" }, - "chunk-DsEeBzOB.js": { - "bytes": 51622, - "sha256": "e9498baea41b3c985adb658335b2f4f75edb00779f54f27a81f47f9f112ebbdc" + "chunk-Dr99IBD1.js": { + "bytes": 17669, + "sha256": "c067766c52992f120c84b7f33555bb19d71ce769456482c649f5c38b2cea9d7b" }, "chunk-DuZy_X7l.js": { "bytes": 723, "sha256": "6bf91e2568d57d20d28bfeb7f4bb2f46aedeaa94cf4e503a8cf4f7c1fbacf3e6" }, - "chunk-IG0wRxY1.js": { - "bytes": 15262, - "sha256": "762bf1aef575429e17abe8c14a6fe7beeef8881ff3d0c325bdddc0fdcfbb49ed" - }, - "chunk-N-Oj8_UM.js": { - "bytes": 13056, - "sha256": "15b66cc1b9968f4d43307693ff61dad8938275a11621d6a5e1836a27c8cd7dc1" - }, - "chunk-NOjQgxo7.js": { - "bytes": 20224, - "sha256": "9400151a47e190f2973ce8c606638e91fd3050f964775cdd3e5939d3ce99a859" + "chunk-NOzavK8E.js": { + "bytes": 29228, + "sha256": "236a284114b29373d94e5bc3b73324161ece0f21224a6b6ba8221554afa239f9" }, - "chunk-O1vNs89S.js": { - "bytes": 48705, - "sha256": "4dbaa28dcad9f44b09323672b26a2b42cdc3d32f7e3d055eefffc3b4de085466" + "chunk-Onvj36bT.js": { + "bytes": 31473, + "sha256": "939518ffc8917f1fe5b509557c79b4ad0ba87c92fde2e42f804c668623d5a448" }, - "chunk-ctcjU5we.js": { - "bytes": 12808, - "sha256": "bd40dc05754b739fe793c5c12ffabf646cdeb3141b1e8886bc052c5537952967" + "chunk-OywyDaLv.js": { + "bytes": 48900, + "sha256": "8e948192e3897a8be0bf0cbffabec3890cb1ef6d97172881cfe7c2ae48d788bc" }, - "chunk-fHAvBZdv.js": { - "bytes": 31642, - "sha256": "165814510a454697f2f9d1de4de960aeedafcffb47b0240cafec28603e852de0" + "chunk-VtbIXmp9.js": { + "bytes": 4914, + "sha256": "fe0aa1bac958f6bcd56953b967c489768d8cbf9999ae583c8d5de804133f6f9a" }, - "chunk-hh6-Palp.js": { - "bytes": 37116, - "sha256": "95d012b865dbf12a717c0b7f966ba129ffd04fca1be235d36a7adae4c6426c7b" + "chunk-YOPJhFLo.js": { + "bytes": 2237, + "sha256": "5f2965b3758044c701cb1759aa5f02cbbcbdd407d87628b7838c1e5f015edb9e" }, "chunk-pVzsnrcB.js": { "bytes": 6210, "sha256": "d68f380f1c18785be0bd8e669dfe0f1a286c490f6d80f87852cf6bd1c95471e3" }, - "chunk-tu0a_CEa.js": { - "bytes": 33366, - "sha256": "30ddcf1eb2b8d034e11cac1fba2f67741934948b8ad1a9e8b86a8e44e7c99d6c" + "chunk-uVK-pwMG.js": { + "bytes": 51825, + "sha256": "16a79e29d7fb9f0df167249cdbeebe771e5826f7774a5145496e6d2c59462944" }, - "chunk-xLo56Uun.js": { - "bytes": 4256, - "sha256": "7e0b78e09beb1b9df061ca8d2a90667a951f4408be59aa134399b46aef07260a" + "chunk-yqMTkZh4.js": { + "bytes": 2146, + "sha256": "25f0c11f691fb3712d6caa0d95be2b62b380dc4e292f36092c664d5fb6c53bc7" }, "favicon.ico": { "bytes": 15086, @@ -166,11 +166,11 @@ }, "index.html": { "bytes": 530, - "sha256": "04250466504a5bcf8312f873ffe94712baf247f507b76e6050703e21d8b09831" + "sha256": "8810cad915953a9d7b225ccb2d487410823def58f045b9d7e58abce6a28cab88" }, - "main-XW2ZMSO5.js": { + "main-GU444GPT.js": { "bytes": 43597, - "sha256": "dd04bb09cdc5b44b72d0a1fd934380c634324979efb5d79dcb712cad71ecbd3a" + "sha256": "b3412c3e438b8cfde65444b64119b86bc086bfd960896ed3a793c467ea9e2301" }, "styles-B6ZRGG3C.css": { "bytes": 40287, diff --git a/pyproject.toml b/pyproject.toml index 4ad96c0..c5bc151 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "platformforge" -version = "0.1.1" +version = "0.1.2" description = "Agentic Platform Engineering intelligence platform — deterministic, offline-first, evidence-first" readme = "README.md" license = { file = "LICENSE" } diff --git a/tests/test_contracts.py b/tests/test_contracts.py index ac1c52e..255b15b 100644 --- a/tests/test_contracts.py +++ b/tests/test_contracts.py @@ -58,6 +58,6 @@ def test_slo_contract_validates(tmp_path): def test_version_pinned(): - assert __version__ == "0.1.1" + assert __version__ == "0.1.2" import platformforge assert platformforge.__version__