@skill-map/cli 0.21.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import{e as ye,l as ve}from"./chunk-OPPQMCMQ.js";import{$a as oe,Aa as p,Gb as P,Gc as z,Hc as h,I as re,Ib as ie,Ic as fe,J as B,Ja as m,Jc as j,K as E,M,Ma as K,Na as U,O as u,Oc as R,Pb as pe,Pc as X,S as C,Sa as i,T,Ta as f,U as q,Ua as b,Va as L,Vc as g,Wa as ee,Wb as ge,Wc as be,Xa as te,Ya as ne,Z as Q,Za as H,_a as G,_c as he,ad as _e,bc as k,cb as $,cc as ue,db as le,ea as _,eb as w,gb as r,hb as Z,ib as Y,ic as J,ja as ce,jb as N,lb as y,lc as W,mb as v,na as c,nc as V,oc as O,qb as se,tb as de,ub as d,va as I,vb as A,wa as S,wb as F,xc as me,ya as D,za as x}from"./chunk-25AWRVIC.js";var Ce=`
1
+ import{e as ye,l as ve}from"./chunk-KRNW54CI.js";import{Fb as P,Gc as z,Hb as ie,Hc as h,I as re,Ia as m,Ic as fe,J as B,Jc as j,K as E,La as K,M,Ma as U,Mc as R,Nc as X,O as u,Ob as pe,Ra as i,S as C,Sa as f,T,Ta as b,Tc as g,U as q,Ua as L,Uc as be,Va as ee,Vb as ge,Wa as te,Xa as ne,Ya as H,Yc as he,Z as Q,Za as G,_a as oe,_c as _e,ac as k,bb as $,bc as ue,cb as le,db as w,ea as _,fb as r,gb as Z,hb as Y,hc as J,ib as N,ja as ce,kb as y,kc as W,lb as v,ma as c,mc as V,nc as O,pb as se,sb as de,tb as d,ua as I,ub as A,va as S,vb as F,xa as D,xc as me,ya as x,za as p}from"./chunk-NJ4PSNK3.js";var Ce=`
2
2
  .p-tag {
3
3
  display: inline-flex;
4
4
  align-items: center;
@@ -0,0 +1,123 @@
1
+ import{a as Tt,b as w,c as It,d as Ot}from"./chunk-SCSYN7U2.js";import{a as vt,b as yt,c as we,d as ke,e as kt}from"./chunk-2TPMJJYQ.js";import{a as Pe,b as Ee,c as St,d as Pt,e as Et,f as Mt,g as oe,h as re}from"./chunk-GJJZ5QH6.js";import{e as Ct,f as Se,h as te,i as ne,j as ie,l as wt}from"./chunk-KRNW54CI.js";import{$c as Ce,Fb as J,Gb as dt,Gc as _t,Hb as ct,Hc as ye,I as qe,Ia as _,J as We,Jc as ht,K as Qe,La as h,M as Xe,Ma as f,Mc as ft,Na as it,O as M,Oa as Q,Pa as O,Qa as F,Ra as b,Rb as y,S as k,Sa as l,Sc as bt,T as S,Ta as s,Tc as ue,Ua as T,Ub as ve,Uc as xt,Va as u,Vb as N,Wa as m,Wb as gt,Xa as Y,Z as Ye,_a as ot,ac as Le,ad as ee,ba as v,bb as I,bc as pt,ca as L,cb as X,db as C,ea as Ne,fb as a,gd as H,hd as K,ia as Je,ib as rt,ja as ge,jb as at,kb as fe,lb as be,ma as r,mc as ut,nb as st,nc as mt,ob as lt,qb as Ve,rb as B,sb as xe,tb as pe,ua as A,ub as d,va as Ze,vb as p,wb as x,xa as et,xb as R,ya as tt,za as nt,zc as Z}from"./chunk-NJ4PSNK3.js";import"./chunk-3R7E3HPC.js";import{a as q,b as W}from"./chunk-Q7L6LLAK.js";function nn(t,n){if(t&1&&(u(0,"p",6),d(1),m()),t&2){let e=a();r(),R(" ",e.texts.aboutErrorPrefix," ",e.loadError()," ")}}var Me=class t{dataSource=M(H);updateCheck=M(Tt);theme=M(Ot);visible=N.required();texts=w;health=v(null);loadError=v(null);markSrc=y(()=>this.theme.resolved()==="dark"?"skill-map-mark-light.svg":"skill-map-mark-dark.svg");cliVersion=y(()=>this.updateCheck.current()??this.health()?.implVersion??this.texts.aboutUnknown);specVersion=y(()=>this.health()?.specVersion??this.texts.aboutLoading);schemaVersion=y(()=>this.health()?.schemaVersion??this.texts.aboutLoading);scope=y(()=>this.health()?.scope??this.texts.aboutLoading);cwd=y(()=>this.health()?.cwd??this.texts.aboutLoading);dbDisplay=y(()=>{let n=this.health();return n?this.texts.aboutDbValue(n.db,on(n.dbPath,n.cwd)):this.texts.aboutLoading});homeDir=y(()=>this.health()?.homeDir??this.texts.aboutLoading);constructor(){L(()=>{this.visible()&&this.health()===null&&this.load()})}async load(){this.loadError.set(null);try{let n=await this.dataSource.health();this.health.set(n)}catch(n){let e=n instanceof K||n instanceof Error?n.message:String(n);this.loadError.set(e)}}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=A({type:t,selectors:[["sm-settings-about"]],inputs:{visible:[1,"visible"]},decls:67,vars:29,consts:[["aria-labelledby","settings-about-heading","data-testid","settings-about",1,"settings-about"],[1,"settings-about__header"],["alt","","aria-hidden","true","data-testid","settings-about-logo",1,"settings-about__logo",3,"src"],[1,"settings-about__heading-text"],["id","settings-about-heading",1,"settings-about__title"],[1,"settings-about__intro"],["data-testid","settings-about-error",1,"settings-about__error"],["target","_blank","rel","noopener noreferrer","data-testid","settings-about-star",1,"settings-about__star",3,"href"],["aria-hidden","true",1,"fa-solid","fa-star","settings-about__star-icon"],[1,"settings-about__star-text"],[1,"settings-about__star-heading"],[1,"settings-about__star-body"],[1,"settings-about__star-cta"],["aria-hidden","true",1,"fa-solid","fa-star"],[1,"settings-about__list"],[1,"settings-about__row"],[1,"settings-about__label"],[1,"settings-about__value"],["target","_blank","rel","noopener noreferrer","data-testid","settings-about-website",1,"settings-about__link",3,"href"],["target","_blank","rel","noopener noreferrer","data-testid","settings-about-github",1,"settings-about__link",3,"href"],["data-testid","settings-about-cli",1,"settings-about__value"],["data-testid","settings-about-spec",1,"settings-about__value"],["data-testid","settings-about-schema",1,"settings-about__value"],["data-testid","settings-about-scope",1,"settings-about__value"],["data-testid","settings-about-cwd",1,"settings-about__value"],["data-testid","settings-about-db",1,"settings-about__value"],["data-testid","settings-about-home",1,"settings-about__value"]],template:function(e,i){e&1&&(u(0,"section",0)(1,"header",1),Y(2,"img",2),u(3,"div",3)(4,"h2",4),d(5),m(),u(6,"p",5),d(7),m()()(),h(8,nn,2,2,"p",6),u(9,"a",7),Y(10,"i",8),u(11,"span",9)(12,"span",10),d(13),m(),u(14,"span",11),d(15),m()(),u(16,"span",12),Y(17,"i",13),d(18),m()(),u(19,"dl",14)(20,"div",15)(21,"dt",16),d(22),m(),u(23,"dd",17)(24,"a",18),d(25),m()()(),u(26,"div",15)(27,"dt",16),d(28),m(),u(29,"dd",17)(30,"a",19),d(31),m()()(),u(32,"div",15)(33,"dt",16),d(34),m(),u(35,"dd",20),d(36),m()(),u(37,"div",15)(38,"dt",16),d(39),m(),u(40,"dd",21),d(41),m()(),u(42,"div",15)(43,"dt",16),d(44),m(),u(45,"dd",22),d(46),m()(),u(47,"div",15)(48,"dt",16),d(49),m(),u(50,"dd",23),d(51),m()(),u(52,"div",15)(53,"dt",16),d(54),m(),u(55,"dd",24),d(56),m()(),u(57,"div",15)(58,"dt",16),d(59),m(),u(60,"dd",25),d(61),m()(),u(62,"div",15)(63,"dt",16),d(64),m(),u(65,"dd",26),d(66),m()()()()),e&2&&(r(2),X("src",i.markSrc(),ge),r(3),x(" ",i.texts.aboutHeading," "),r(2),p(i.texts.aboutIntro),r(),f(i.loadError()?8:-1),r(),X("href",i.texts.aboutGithubUrl,ge),_("aria-label",i.texts.aboutStarA11y),r(4),p(i.texts.aboutStarHeading),r(2),p(i.texts.aboutStarBody),r(3),x(" ",i.texts.aboutStarCta," "),r(4),p(i.texts.aboutWebsiteLabel),r(2),X("href",i.texts.aboutWebsiteUrl,ge),r(),p(i.texts.aboutWebsiteUrl),r(3),p(i.texts.aboutGithubLabel),r(2),X("href",i.texts.aboutGithubUrl,ge),r(),p(i.texts.aboutGithubUrl),r(3),p(i.texts.aboutCliLabel),r(2),x(" ",i.cliVersion()," "),r(3),p(i.texts.aboutSpecLabel),r(2),x(" ",i.specVersion()," "),r(3),p(i.texts.aboutSchemaLabel),r(2),x(" ",i.schemaVersion()," "),r(3),p(i.texts.aboutScopeLabel),r(2),x(" ",i.scope()," "),r(3),p(i.texts.aboutFolderLabel),r(2),x(" ",i.cwd()," "),r(3),p(i.texts.aboutDbLabel),r(2),x(" ",i.dbDisplay()," "),r(3),p(i.texts.aboutHomeLabel),r(2),x(" ",i.homeDir()," "))},styles:["[_nghost-%COMP%]{display:block;height:100%;overflow-y:auto;padding:1.25rem 1.5rem}.settings-about[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.75rem}.settings-about__header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:1rem}.settings-about__logo[_ngcontent-%COMP%]{width:64px;height:64px;flex-shrink:0}.settings-about__heading-text[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem;min-width:0}.settings-about__title[_ngcontent-%COMP%]{font-size:1.15rem;font-weight:600;margin:0}.settings-about__intro[_ngcontent-%COMP%]{margin:0;color:var(--p-text-muted-color);font-size:.875rem}.settings-about__error[_ngcontent-%COMP%]{margin:0;padding:.5rem .75rem;border-radius:var(--p-border-radius);background:var(--p-message-error-background);color:var(--p-message-error-color);font-size:.875rem}.settings-about__list[_ngcontent-%COMP%]{margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}.settings-about__row[_ngcontent-%COMP%]{display:grid;grid-template-columns:180px 1fr;align-items:baseline;gap:.75rem;padding:.5rem .75rem;border-radius:var(--p-border-radius)}.settings-about__row[_ngcontent-%COMP%]:nth-child(odd){background:var(--p-content-hover-background)}.settings-about__label[_ngcontent-%COMP%]{margin:0;font-size:.875rem;color:var(--p-text-muted-color)}.settings-about__value[_ngcontent-%COMP%]{margin:0;font-family:var(--p-monospace-font-family);font-size:.875rem;word-break:break-all}.settings-about__link[_ngcontent-%COMP%]{color:var(--p-primary-color);text-decoration:none}.settings-about__link[_ngcontent-%COMP%]:hover, .settings-about__link[_ngcontent-%COMP%]:focus-visible{text-decoration:underline}.settings-about__star[_ngcontent-%COMP%]{--star-accent: #f4b400;display:flex;align-items:center;gap:.875rem;padding:.875rem 1rem;border-radius:var(--p-border-radius);border:1px solid color-mix(in oklab,var(--star-accent) 45%,transparent);background:color-mix(in oklab,var(--star-accent) 12%,transparent);color:var(--p-text-color);text-decoration:none;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .15s ease}.settings-about__star[_ngcontent-%COMP%]:hover, .settings-about__star[_ngcontent-%COMP%]:focus-visible{background:color-mix(in oklab,var(--star-accent) 22%,transparent);border-color:color-mix(in oklab,var(--star-accent) 70%,transparent);transform:translateY(-1px);outline:none}.app-dark[_nghost-%COMP%] .settings-about__star[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .settings-about__star[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--star-accent) 18%,transparent);border-color:color-mix(in oklab,var(--star-accent) 55%,transparent)}.app-dark[_nghost-%COMP%] .settings-about__star[_ngcontent-%COMP%]:hover, .app-dark [_nghost-%COMP%] .settings-about__star[_ngcontent-%COMP%]:hover, .app-dark[_nghost-%COMP%] .settings-about__star[_ngcontent-%COMP%]:focus-visible, .app-dark [_nghost-%COMP%] .settings-about__star[_ngcontent-%COMP%]:focus-visible{background:color-mix(in oklab,var(--star-accent) 30%,transparent);border-color:var(--star-accent)}.settings-about__star-icon[_ngcontent-%COMP%]{font-size:1.5rem;color:var(--star-accent);flex-shrink:0}.settings-about__star-text[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.125rem;flex:1;min-width:0}.settings-about__star-heading[_ngcontent-%COMP%]{font-weight:600;font-size:.95rem}.settings-about__star-body[_ngcontent-%COMP%]{font-size:.8125rem;color:var(--p-text-muted-color);line-height:1.4}.settings-about__star-cta[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;border-radius:var(--sm-radius-pill);background:var(--star-accent);color:#1a1a1a;font-weight:600;font-size:.8125rem;white-space:nowrap;flex-shrink:0}.settings-about__star[_ngcontent-%COMP%]:hover .settings-about__star-cta[_ngcontent-%COMP%], .settings-about__star[_ngcontent-%COMP%]:focus-visible .settings-about__star-cta[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--star-accent) 88%,white)}"],changeDetection:0})};function on(t,n){if(!t||!n)return t;let e=n.replace(/[/\\]+$/,"");return t.startsWith(e)?t.slice(e.length).replace(/^[/\\]+/,""):t}var Ft={schemaVersion:1,entries:[{version:"0.23.0",date:"2026-05-12",kind:"user-facing",highlights:[{body:'Node inspector will split actions into "Applicable" (always available) and "Recommended" (per finding). First pairing: stale sidecar recommends running `bump`. UI hookup lands in the next iteration; the spec field ships first.',packages:["@skill-map/cli","@skill-map/spec"]},{body:"`sm plugins create <id> -g` now scaffolds under `~/.skill-map/plugins/<id>` instead of the project dir. The flag was advertised in `--help` but previously ignored.",packages:["@skill-map/cli"]},{body:"`sm refresh`, `sm plugins doctor`, and `sm conformance run` now respect `--json` for machine-readable output. `sm graph --format json` is a new format that emits the full ScanResult. CI / scripts can parse these instead of the human text.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"`sm serve` now rejects browser requests whose `Host` or `Origin` is not a loopback name. Closes a DNS-rebinding lane where a malicious page could trigger scans or settings writes. `--dev-cors` still works for Vite-style dev UIs on a different loopback port.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"`sm` now refuses to grant the `.sm` write consent (or apply `scan.extraFolders` / `scan.referencePaths`) from user-level config. The first prompt re-appears per project. Move stray values into `<project>/.skill-map/settings.local.json` (gitignored).",packages:["@skill-map/cli"]}]},{version:"0.22.0",date:"2026-05-12",kind:"user-facing",highlights:[{body:'The "include HOME" toggle is gone. To scan paths outside the project, list them in **Extra folders to scan** (renamed from *Extra roots*). If you had `scan.includeHome: true`, add the paths you actually need (e.g. `~/.claude/agents`) \u2014 not one click anymore.',packages:["@skill-map/cli","@skill-map/spec"]}]},{version:"0.21.0",date:"2026-05-10",kind:"user-facing",highlights:[{body:"Expanded node cards now show the file path above the description and a provider chip (Claude, Gemini, Open Skills). Favorite toggle uses a star instead of a heart.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"Disabling a plugin now removes its card chips from the UI immediately. Previously the chips lingered until the next `sm scan`, making the toggle look broken.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"The card footer is cleaner: the three outgoing counters (`@`-mentions, markdown links, `/`-commands) share a single `\u2193` arrow glyph on the left, and the URL counter keeps its link glyph on the right. Three legacy hardcoded chips (in / out links, external URLs) were removed.",packages:["@skill-map/cli"]},{body:"`sm plugins show core/<ext>` now resolves like `enable`/`disable` do, and `sm plugins list` marks individually-disabled extensions with `\u2715`. The `sm tutorial` content is realigned with the v0.20.0 verbs (no more `sm graph --root` / `sm export --kind` / `kind: hook` claims).",packages:["@skill-map/cli"]},{body:"The view slot `card.footer.left.counter` was renamed to `card.footer.left` \u2014 symmetrical with `card.footer.right`. Plugin authors using the old literal in `plugin.json` need to update it; the scaffolder emits the new name automatically.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"The topbar now shows the full project path under the **skill-map** wordmark, so a screenshot or a quick glance at the UI is always self-identifying. Previously only the last folder segment was shown, and projects scanned from their own root saw no path at all.",packages:["@skill-map/cli"]}]},{version:"0.20.0",date:"2026-05-10",kind:"user-facing",highlights:[{body:'**Update-check is now a user preference.** Whether you see "Update available" notifications no longer depends on the project you are scanning. The toggle moved to **Settings \u2192 General**; the CLI equivalent is `sm config set -g updateCheck.enabled <bool>`.',packages:["@skill-map/cli"]},{body:"**`sm scan` now flags orphan job files.** A new check scans `.skill-map/jobs/` for MD files that no DB row references and reports each as a `warn` issue. To delete the files, run `sm bump prune --orphan-files` (unchanged).",packages:["@skill-map/cli"]},{body:"**`sm scan -g` now scans your HOME directory.** Run `sm scan -g` (without positional roots) to walk every active provider's HOME dir \u2014 typically `~/.claude`, `~/.gemini`, `~/.agents` \u2014 using the global config + DB.",packages:["@skill-map/cli"]},{body:"**Three new privacy-sensitive project settings** in Settings \u2192 Project: *include HOME provider directories*, *extra scan roots*, and *reference paths for link validation*. Every change that expands disk access beyond your project root requires explicit confirmation.",packages:["@skill-map/cli"]},{body:'**Reset Layout uses a proper dialog.** The "Reset all node positions" action used to fire a browser-native `confirm()` popup; it now uses the in-app dialog style with a destructive-styled "Reset" button and a "Cancel" escape.',packages:["@skill-map/cli"]},{body:'**Plugins can be locked by the host.** Settings \u2192 Plugins shows a "Locked" pill on plugins marked as mandatory (today only `core/markdown`, the universal `.md` fallback). The toggle stays visible but disabled, with a tooltip explaining why.',packages:["@skill-map/cli"]}]},{version:"0.19.0",date:"2026-05-09",kind:"user-facing",highlights:[{body:"**Settings \u2192 Changelog.** The Changelog tab in Settings now lists what's new in skill-map: one entry per release, newest first, bullet points for the user-facing changes. Bundled with the demo so it's available offline too.",packages:["@skill-map/cli"]},{body:"**Tags zoom-to-matching.** Clicking a tag chip in the inspector now pans + zooms the graph to fit every node that carries the tag. Click the same chip again to clear the selection and return to the previous view.",packages:["@skill-map/cli"]}]},{version:"0.18.0",date:"2026-05-07",kind:"user-facing",highlights:[{body:"**Bump sidecars in batch.** New `sm bump --pending` walks every node whose `.sm` sidecar reports drift and refreshes them in one pass. Single-node `sm bump <path>` also lands.",packages:["@skill-map/cli"]},{body:'**Annotation field dropped: `released`.** Redundant with `audit.lastBumpedAt`. The inspector and node card now read the activity timestamp from the `audit:` block \u2014 no more confusion between "officially released" and "last bumped".',packages:["@skill-map/cli"]}]},{version:"0.17.0",date:"2026-04-29",kind:"user-facing",highlights:[{body:"**Per-node chips in the graph card and inspector.** Plugins can now decorate nodes with counters, alerts, and key-value rows. Two come built-in: external-URL count per node, and in/out link counts.",packages:["@skill-map/cli"]},{body:"**Multi-provider graphs.** Claude, Gemini, and the open-standard `agent-skills` flavour now coexist in the same graph. Cards paint with each Provider's accent; the kind palette in the graph view filters on the actual node kind names.",packages:["@skill-map/cli"]}]}]};var Dt=Ft;var an=(t,n)=>n.version;function sn(t,n){if(t&1&&(u(0,"p",3),d(1),m()),t&2){let e=a();r(),x(" ",e.texts.changelogEmpty," ")}}function ln(t,n){if(t&1&&(u(0,"p",10),d(1),m()),t&2){let e=a(3);r(),x(" ",e.texts.changelogInternalRelease," ")}}function dn(t,n){if(t&1&&(u(0,"li",15),d(1),m()),t&2){let e=n.$implicit;r(),p(e)}}function cn(t,n){if(t&1&&(u(0,"ul",14),O(1,dn,2,1,"li",15,Q),m()),t&2){let e=a().$implicit,i=a(4);_("aria-label",i.texts.changelogAffectedPackages),r(),F(e.packages)}}function gn(t,n){if(t&1&&(u(0,"li",12),Y(1,"div",13),h(2,cn,3,1,"ul",14),m()),t&2){let e=n.$implicit;r(),X("innerHTML",e.bodyHtml,Je),r(),f(e.packages.length?2:-1)}}function pn(t,n){if(t&1&&(u(0,"ul",11),O(1,gn,3,2,"li",12,it),m()),t&2){let e=a().$implicit;r(),F(e.highlights)}}function un(t,n){if(t&1&&(u(0,"li",6)(1,"header",7)(2,"span",8),d(3),m(),u(4,"span",9),d(5),m()(),h(6,ln,2,1,"p",10)(7,pn,3,0,"ul",11),m()),t&2){let e=n.$implicit;B("settings-changelog__entry--internal",e.kind==="internal"),_("data-testid","settings-changelog-entry-"+e.version),r(3),x("v",e.version),r(2),p(e.date),r(),f(e.kind==="internal"?6:7)}}function mn(t,n){if(t&1&&(u(0,"ol",4),O(1,un,8,6,"li",5,an),m()),t&2){let e=a();r(),F(e.entries())}}var Te=class t{markdown=M(kt);texts=w;entries=v([]);hasEntries=y(()=>this.entries().length>0);ngOnInit(){this.renderAll()}async renderAll(){let n=[];for(let e of Dt.entries){let i=[];for(let o of e.highlights)i.push({bodyHtml:await this.markdown.render(o.body),packages:o.packages});n.push({version:e.version,date:this.formatDate(e.date),kind:e.kind,highlights:i})}this.entries.set(n)}formatDate(n){let e=new Date(n+"T00:00:00Z");return Number.isNaN(e.getTime())?n:new Intl.DateTimeFormat("en-GB",{day:"numeric",month:"long",year:"numeric",timeZone:"UTC"}).format(e)}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=A({type:t,selectors:[["sm-settings-changelog"]],decls:7,vars:4,consts:[["data-testid","settings-changelog",1,"settings-changelog"],["id","settings-changelog-heading",1,"settings-changelog__title"],[1,"settings-changelog__intro"],["data-testid","settings-changelog-empty",1,"settings-changelog__empty"],["role","list",1,"settings-changelog__list"],[1,"settings-changelog__entry",3,"settings-changelog__entry--internal"],[1,"settings-changelog__entry"],[1,"settings-changelog__entry-header"],[1,"settings-changelog__version"],[1,"settings-changelog__date"],[1,"settings-changelog__internal-body"],["role","list",1,"settings-changelog__highlights"],[1,"settings-changelog__highlight"],[1,"settings-changelog__highlight-body",3,"innerHTML"],["role","list",1,"settings-changelog__packages"],[1,"settings-changelog__package"]],template:function(e,i){e&1&&(u(0,"section",0)(1,"h2",1),d(2),m(),u(3,"p",2),d(4),m(),h(5,sn,2,1,"p",3)(6,mn,3,0,"ol",4),m()),e&2&&(_("aria-labelledby","settings-changelog-heading"),r(2),x(" ",i.texts.changelogHeading," "),r(2),p(i.texts.changelogIntro),r(),f(i.hasEntries()?6:5))},styles:["[_nghost-%COMP%]{display:block;height:100%;overflow-y:auto;padding:1.25rem 1.5rem}.settings-changelog__title[_ngcontent-%COMP%]{margin:0 0 .25rem;font-size:1.05rem;font-weight:600;color:var(--p-text-color)}.settings-changelog__intro[_ngcontent-%COMP%]{margin:0 0 1.25rem;font-size:.85rem;color:var(--sm-text-muted);line-height:1.5}.settings-changelog__empty[_ngcontent-%COMP%]{margin:1.5rem 0 0;font-size:.9rem;color:var(--sm-text-muted);font-style:italic}.settings-changelog__list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1.25rem}.settings-changelog__entry[_ngcontent-%COMP%]{border-left:2px solid var(--p-primary-color);padding:.25rem 0 .25rem .85rem}.settings-changelog__entry--internal[_ngcontent-%COMP%]{border-left-color:var(--sm-border)}.settings-changelog__entry-header[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:.6rem;margin-bottom:.45rem}.settings-changelog__version[_ngcontent-%COMP%]{font-family:var(--sm-font-mono);font-size:.95rem;font-weight:600;color:var(--p-text-color)}.settings-changelog__date[_ngcontent-%COMP%]{font-size:.78rem;color:var(--sm-text-muted)}.settings-changelog__internal-body[_ngcontent-%COMP%]{margin:0;font-size:.85rem;color:var(--sm-text-muted);font-style:italic}.settings-changelog__highlights[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.7rem}.settings-changelog__highlight[_ngcontent-%COMP%]{font-size:.88rem;line-height:1.5;color:var(--p-text-color)}.settings-changelog__highlight-body[_ngcontent-%COMP%]{margin:0}[_nghost-%COMP%] .settings-changelog__highlight-body p{margin:0}[_nghost-%COMP%] .settings-changelog__highlight-body p+p{margin-top:.45rem}[_nghost-%COMP%] .settings-changelog__highlight-body code{font-family:var(--sm-font-mono);font-size:.82rem;padding:.05rem .3rem;border-radius:var(--sm-radius-sm);background:var(--sm-bg-hover);color:var(--p-text-color)}[_nghost-%COMP%] .settings-changelog__highlight-body a{color:var(--p-primary-color);text-decoration:underline}[_nghost-%COMP%] .settings-changelog__highlight-body strong{font-weight:600}.settings-changelog__packages[_ngcontent-%COMP%]{list-style:none;margin:.4rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.3rem}.settings-changelog__package[_ngcontent-%COMP%]{font-family:var(--sm-font-mono);font-size:.7rem;padding:.1rem .4rem;border-radius:var(--sm-radius-sm);background:var(--sm-bg-hover);color:var(--sm-text-muted);border:1px solid var(--sm-border);line-height:1.4}"],changeDetection:0})};var At=`
2
+ .p-toggleswitch {
3
+ display: inline-block;
4
+ width: dt('toggleswitch.width');
5
+ height: dt('toggleswitch.height');
6
+ }
7
+
8
+ .p-toggleswitch-input {
9
+ cursor: pointer;
10
+ appearance: none;
11
+ position: absolute;
12
+ top: 0;
13
+ inset-inline-start: 0;
14
+ width: 100%;
15
+ height: 100%;
16
+ padding: 0;
17
+ margin: 0;
18
+ opacity: 0;
19
+ z-index: 1;
20
+ outline: 0 none;
21
+ border-radius: dt('toggleswitch.border.radius');
22
+ }
23
+
24
+ .p-toggleswitch-slider {
25
+ cursor: pointer;
26
+ width: 100%;
27
+ height: 100%;
28
+ border-width: dt('toggleswitch.border.width');
29
+ border-style: solid;
30
+ border-color: dt('toggleswitch.border.color');
31
+ background: dt('toggleswitch.background');
32
+ transition:
33
+ background dt('toggleswitch.transition.duration'),
34
+ color dt('toggleswitch.transition.duration'),
35
+ border-color dt('toggleswitch.transition.duration'),
36
+ outline-color dt('toggleswitch.transition.duration'),
37
+ box-shadow dt('toggleswitch.transition.duration');
38
+ border-radius: dt('toggleswitch.border.radius');
39
+ outline-color: transparent;
40
+ box-shadow: dt('toggleswitch.shadow');
41
+ }
42
+
43
+ .p-toggleswitch-handle {
44
+ position: absolute;
45
+ top: 50%;
46
+ display: flex;
47
+ justify-content: center;
48
+ align-items: center;
49
+ background: dt('toggleswitch.handle.background');
50
+ color: dt('toggleswitch.handle.color');
51
+ width: dt('toggleswitch.handle.size');
52
+ height: dt('toggleswitch.handle.size');
53
+ inset-inline-start: dt('toggleswitch.gap');
54
+ margin-block-start: calc(-1 * calc(dt('toggleswitch.handle.size') / 2));
55
+ border-radius: dt('toggleswitch.handle.border.radius');
56
+ transition:
57
+ background dt('toggleswitch.transition.duration'),
58
+ color dt('toggleswitch.transition.duration'),
59
+ inset-inline-start dt('toggleswitch.slide.duration'),
60
+ box-shadow dt('toggleswitch.slide.duration');
61
+ }
62
+
63
+ .p-toggleswitch.p-toggleswitch-checked .p-toggleswitch-slider {
64
+ background: dt('toggleswitch.checked.background');
65
+ border-color: dt('toggleswitch.checked.border.color');
66
+ }
67
+
68
+ .p-toggleswitch.p-toggleswitch-checked .p-toggleswitch-handle {
69
+ background: dt('toggleswitch.handle.checked.background');
70
+ color: dt('toggleswitch.handle.checked.color');
71
+ inset-inline-start: calc(dt('toggleswitch.width') - calc(dt('toggleswitch.handle.size') + dt('toggleswitch.gap')));
72
+ }
73
+
74
+ .p-toggleswitch:not(.p-disabled):has(.p-toggleswitch-input:hover) .p-toggleswitch-slider {
75
+ background: dt('toggleswitch.hover.background');
76
+ border-color: dt('toggleswitch.hover.border.color');
77
+ }
78
+
79
+ .p-toggleswitch:not(.p-disabled):has(.p-toggleswitch-input:hover) .p-toggleswitch-handle {
80
+ background: dt('toggleswitch.handle.hover.background');
81
+ color: dt('toggleswitch.handle.hover.color');
82
+ }
83
+
84
+ .p-toggleswitch:not(.p-disabled):has(.p-toggleswitch-input:hover).p-toggleswitch-checked .p-toggleswitch-slider {
85
+ background: dt('toggleswitch.checked.hover.background');
86
+ border-color: dt('toggleswitch.checked.hover.border.color');
87
+ }
88
+
89
+ .p-toggleswitch:not(.p-disabled):has(.p-toggleswitch-input:hover).p-toggleswitch-checked .p-toggleswitch-handle {
90
+ background: dt('toggleswitch.handle.checked.hover.background');
91
+ color: dt('toggleswitch.handle.checked.hover.color');
92
+ }
93
+
94
+ .p-toggleswitch:not(.p-disabled):has(.p-toggleswitch-input:focus-visible) .p-toggleswitch-slider {
95
+ box-shadow: dt('toggleswitch.focus.ring.shadow');
96
+ outline: dt('toggleswitch.focus.ring.width') dt('toggleswitch.focus.ring.style') dt('toggleswitch.focus.ring.color');
97
+ outline-offset: dt('toggleswitch.focus.ring.offset');
98
+ }
99
+
100
+ .p-toggleswitch.p-invalid > .p-toggleswitch-slider {
101
+ border-color: dt('toggleswitch.invalid.border.color');
102
+ }
103
+
104
+ .p-toggleswitch.p-disabled {
105
+ opacity: 1;
106
+ }
107
+
108
+ .p-toggleswitch.p-disabled .p-toggleswitch-slider {
109
+ background: dt('toggleswitch.disabled.background');
110
+ }
111
+
112
+ .p-toggleswitch.p-disabled .p-toggleswitch-handle {
113
+ background: dt('toggleswitch.handle.disabled.background');
114
+ }
115
+ `;var _n=["handle"],hn=["input"],fn=t=>({checked:t});function bn(t,n){t&1&&ot(0)}function xn(t,n){if(t&1&&nt(0,bn,1,0,"ng-container",3),t&2){let e=a();b("ngTemplateOutlet",e.handleTemplate||e._handleTemplate)("ngTemplateOutletContext",ct(2,fn,e.checked()))}}var vn=`
116
+ ${At}
117
+
118
+ p-toggleswitch.ng-invalid.ng-dirty > .p-toggleswitch-slider {
119
+ border-color: dt('toggleswitch.invalid.border.color');
120
+ }
121
+ `,yn={root:{position:"relative"}},Cn={root:({instance:t})=>["p-toggleswitch p-component",{"p-toggleswitch p-component":!0,"p-toggleswitch-checked":t.checked(),"p-disabled":t.$disabled(),"p-invalid":t.invalid()}],input:"p-toggleswitch-input",slider:"p-toggleswitch-slider",handle:"p-toggleswitch-handle"},jt=(()=>{class t extends ht{name="toggleswitch";style=vn;classes=Cn;inlineStyles=yn;static \u0275fac=(()=>{let e;return function(o){return(e||(e=Ne(t)))(o||t)}})();static \u0275prov=We({token:t,factory:t.\u0275fac})}return t})();var Nt=new Xe("TOGGLESWITCH_INSTANCE"),wn={provide:Ct,useExisting:qe(()=>se),multi:!0},se=(()=>{class t extends wt{componentName="ToggleSwitch";$pcToggleSwitch=M(Nt,{optional:!0,skipSelf:!0})??void 0;bindDirectiveInstance=M(ue,{self:!0});onAfterViewChecked(){this.bindDirectiveInstance.setAttrs(this.ptms(["host","root"]))}styleClass;tabindex;inputId;readonly;trueValue=!0;falseValue=!1;ariaLabel;size=N();ariaLabelledBy;autofocus;onChange=new Ye;input;handleTemplate;_handleTemplate;focused=!1;_componentStyle=M(jt);templates;onHostClick(e){this.onClick(e)}onAfterContentInit(){this.templates.forEach(e=>{e.getType()==="handle"?this._handleTemplate=e.template:this._handleTemplate=e.template})}onClick(e){!this.$disabled()&&!this.readonly&&(this.writeModelValue(this.checked()?this.falseValue:this.trueValue),this.onModelChange(this.modelValue()),this.onChange.emit({originalEvent:e,checked:this.modelValue()}),this.input.nativeElement.focus())}onFocus(){this.focused=!0}onBlur(){this.focused=!1,this.onModelTouched()}checked(){return this.modelValue()===this.trueValue}writeControlValue(e,i){i(e),this.cd.markForCheck()}get dataP(){return this.cn({checked:this.checked(),disabled:this.$disabled(),invalid:this.invalid()})}static \u0275fac=(()=>{let e;return function(o){return(e||(e=Ne(t)))(o||t)}})();static \u0275cmp=A({type:t,selectors:[["p-toggleswitch"],["p-toggleSwitch"],["p-toggle-switch"]],contentQueries:function(i,o,c){if(i&1&&rt(c,_n,4)(c,_t,4),i&2){let g;fe(g=be())&&(o.handleTemplate=g.first),fe(g=be())&&(o.templates=g)}},viewQuery:function(i,o){if(i&1&&at(hn,5),i&2){let c;fe(c=be())&&(o.input=c.first)}},hostVars:7,hostBindings:function(i,o){i&1&&C("click",function(g){return o.onHostClick(g)}),i&2&&(_("data-p-checked",o.checked())("data-p-disabled",o.$disabled())("data-p",o.dataP),xe(o.sx("root")),pe(o.cn(o.cx("root"),o.styleClass)))},inputs:{styleClass:"styleClass",tabindex:[2,"tabindex","tabindex",pt],inputId:"inputId",readonly:[2,"readonly","readonly",Le],trueValue:"trueValue",falseValue:"falseValue",ariaLabel:"ariaLabel",size:[1,"size"],ariaLabelledBy:"ariaLabelledBy",autofocus:[2,"autofocus","autofocus",Le]},outputs:{onChange:"onChange"},features:[J([wn,jt,{provide:Nt,useExisting:t},{provide:ft,useExisting:t}]),et([ue]),tt],decls:5,vars:22,consts:[["input",""],["type","checkbox","role","switch",3,"focus","blur","checked","pAutoFocus","pBind"],[3,"pBind"],[4,"ngTemplateOutlet","ngTemplateOutletContext"]],template:function(i,o){i&1&&(l(0,"input",1,0),C("focus",function(){return o.onFocus()})("blur",function(){return o.onBlur()}),s(),l(2,"div",2)(3,"div",2),h(4,xn,1,4,"ng-container"),s()()),i&2&&(pe(o.cx("input")),b("checked",o.checked())("pAutoFocus",o.autofocus)("pBind",o.ptm("input")),_("id",o.inputId)("required",o.required()?"":void 0)("disabled",o.$disabled()?"":void 0)("aria-checked",o.checked())("aria-labelledby",o.ariaLabelledBy)("aria-label",o.ariaLabel)("name",o.name())("tabindex",o.tabindex),r(2),pe(o.cx("slider")),b("pBind",o.ptm("slider")),_("data-p",o.dataP),r(),pe(o.cx("handle")),b("pBind",o.ptm("handle")),_("data-p",o.dataP),r(),f(o.handleTemplate||o._handleTemplate?4:-1))},dependencies:[mt,ut,bt,ye,xt,ue],encapsulation:2,changeDetection:0})}return t})(),Ie=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=Ze({type:t});static \u0275inj=Qe({imports:[se,ye,ye]})}return t})();var kn=(t,n)=>n.key;function Sn(t,n){if(t&1&&(l(0,"p-message",3),d(1),s()),t&2){let e=a();b("closable",!1),r(),R(" ",e.texts.general.loadErrorPrefix," ",n," ")}}function Pn(t,n){if(t&1&&(l(0,"p-message",4),d(1),s()),t&2){let e=a();b("closable",!1),r(),R(" ",e.texts.general.saveErrorPrefix," ",n," ")}}function En(t,n){if(t&1){let e=I();l(0,"li",6)(1,"div",7)(2,"div",8),d(3),s(),l(4,"div",9),d(5),s()(),l(6,"p-toggleswitch",10),C("ngModelChange",function(o){let c=k(e).$implicit,g=a();return S(g.onToggle(c,o))}),s()()}if(t&2){let e=n.$implicit,i=a();_("data-testid","settings-general-row-"+e.key),r(3),p(i.toggleLabel(e.key)),r(2),x(" ",i.toggleDescription(e.key)," "),r(),b("ngModel",i.valueOf(e))("disabled",i.loading()||i.isPending(e.key)||i.preferences()===null),_("data-testid","settings-general-toggle-"+e.key)}}var Mn=[{key:"updateCheck.enabled",read:t=>t.updateCheck.enabled,patch:t=>({updateCheck:{enabled:t}})}],Oe=class t{dataSource=M(H);visible=N.required();texts=w;toggles=Mn;loading=v(!1);loadError=v(null);saveError=v(null);preferences=v(null);pending=v(new Set);constructor(){L(()=>{this.visible()&&this.refresh()})}toggleLabel(n){return w.general.toggles[n].label}toggleDescription(n){return w.general.toggles[n].description}valueOf(n){let e=this.preferences();return e?n.read(e):!1}isPending(n){return this.pending().has(n)}onToggle(n,e){this.runToggle(n,e)}async refresh(){this.loading.set(!0),this.loadError.set(null),this.saveError.set(null);try{let n=await this.dataSource.getPreferences();this.preferences.set(n)}catch(n){this.loadError.set(Lt(n)),this.preferences.set(null)}finally{this.loading.set(!1)}}async runToggle(n,e){if(this.pending().has(n.key))return;let i=new Set(this.pending());i.add(n.key),this.pending.set(i),this.saveError.set(null);try{let o=await this.dataSource.setPreferences(n.patch(e));this.preferences.set(o)}catch(o){this.saveError.set(Lt(o))}finally{let o=new Set(this.pending());o.delete(n.key),this.pending.set(o)}}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=A({type:t,selectors:[["sm-settings-general"]],inputs:{visible:[1,"visible"]},decls:10,vars:5,consts:[["data-testid","settings-general",1,"settings-general"],["id","settings-general-heading",1,"settings-general__title"],[1,"settings-general__intro"],["severity","error","data-testid","settings-general-load-error",3,"closable"],["severity","error","data-testid","settings-general-save-error",3,"closable"],["role","list",1,"settings-general__list"],[1,"settings-general__row"],[1,"settings-general__row-text"],[1,"settings-general__row-label"],[1,"settings-general__row-description"],[3,"ngModelChange","ngModel","disabled"]],template:function(e,i){if(e&1&&(l(0,"section",0)(1,"h2",1),d(2),s(),l(3,"p",2),d(4),s(),h(5,Sn,2,3,"p-message",3),h(6,Pn,2,3,"p-message",4),l(7,"ul",5),O(8,En,7,6,"li",6,kn),s()()),e&2){let o,c;_("aria-labelledby","settings-general-heading"),r(2),x(" ",i.texts.general.heading," "),r(2),p(i.texts.general.intro),r(),f((o=i.loadError())?5:-1,o),r(),f((c=i.saveError())?6:-1,c),r(2),F(i.toggles)}},dependencies:[ie,te,ne,re,oe,Ie,se],styles:["[_nghost-%COMP%]{display:block;height:100%;overflow-y:auto;padding:1.25rem 1.5rem}.settings-general__title[_ngcontent-%COMP%]{margin:0 0 .25rem;font-size:1.05rem;font-weight:600;color:var(--p-text-color)}.settings-general__intro[_ngcontent-%COMP%]{margin:0 0 1.25rem;font-size:.85rem;color:var(--sm-text-muted);line-height:1.5}.settings-general__list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1rem}.settings-general__row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:.85rem 1rem;border:1px solid var(--p-content-border-color);border-radius:.5rem;background:var(--p-content-background)}.settings-general__row-text[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem;flex:1 1 auto;min-width:0}.settings-general__row-label[_ngcontent-%COMP%]{font-size:.9rem;font-weight:600;color:var(--p-text-color)}.settings-general__row-description[_ngcontent-%COMP%]{font-size:.8rem;color:var(--sm-text-muted);line-height:1.45}"],changeDetection:0})};function Lt(t){return t instanceof K||t instanceof Error?t.message:String(t)}var Re={provider:"#7C3AED",extractor:"#A78BFA",analyzer:"#5FD17C",action:"#00C853",formatter:"#5BC0EB",hook:"#FFB627"};function Bt(t){let n=t.toLowerCase();return Re[n]??"currentColor"}var Ae=["all",...Object.keys(Re)],Fe=["claude","gemini","agent-skills","core"],De=["provider","extractor","analyzer","action","formatter","hook"];function le(t,n){return`${t}/${n}`}function ze(t){let n=new Map;for(let e of t)if(!de(e.status)){if(e.granularity==="bundle"){n.set(e.id,e.status==="enabled");continue}if(e.granularity==="extension"&&e.extensions)for(let i of e.extensions)n.set(le(e.id,i.id),i.enabled)}return n}function Be(t){let n=t.target;return!n||typeof n.closest!="function"?!1:n.closest('label, button, input, [role="switch"], p-toggleswitch')!==null}function Kt(t,n){if(Tn(t,n))return[t];if(t.granularity!=="extension"||!t.extensions)return[];let e=t.extensions.filter(i=>In(i,n));return e.length===0?[]:[W(q({},t),{extensions:e})]}function $t(t,n){if(t.granularity==="bundle")return t.kinds.some(i=>i.toLowerCase()===n)?[t]:[];if(!t.extensions)return[];let e=t.extensions.filter(i=>i.kind.toLowerCase()===n);return e.length===0?[]:[W(q({},t),{extensions:e})]}function Ht(t){if(t.locked)return[];if(t.granularity!=="extension"||!t.extensions)return[t];let n=t.extensions.filter(e=>!e.locked);return n.length===0?[]:[W(q({},t),{extensions:n})]}function Gt(t){return t.slice().sort((e,i)=>{let o=Fe.indexOf(e.id),c=Fe.indexOf(i.id),g=o>=0?o:Fe.length,P=c>=0?c:Fe.length;return g!==P?g-P:e.id.localeCompare(i.id)}).map(e=>{if(e.granularity!=="extension"||!e.extensions)return e;let i=e.extensions.slice().sort((o,c)=>{let g=De.indexOf(o.kind.toLowerCase()),P=De.indexOf(c.kind.toLowerCase()),$=g>=0?g:De.length,V=P>=0?P:De.length;return $!==V?$-V:o.id.localeCompare(c.id)});return W(q({},e),{extensions:i})})}function Tn(t,n){return!!(t.id.toLowerCase().includes(n)||t.description&&t.description.toLowerCase().includes(n))}function In(t,n){return!!(t.id.toLowerCase().includes(n)||t.description&&t.description.toLowerCase().includes(n))}function de(t){return t==="incompatible-spec"||t==="invalid-manifest"||t==="load-error"||t==="id-collision"}function Ke(t){return t instanceof K||t instanceof Error?t.message:String(t)}function Ut(t,n){return de(t.status)?n.statusFailure[t.status]??t.status:t.status==="enabled"?n.enabledLabel:n.disabledLabel}function qt(t,n){switch(t){case"built-in":return n.sourceBuiltIn;case"project":return n.sourceProject;case"global":return n.sourceGlobal}}var $e="sm.settings.plugins.collapsed",He="sm.settings.plugins.kind-filter";function Wt(){let t=null;try{t=localStorage.getItem($e)}catch{return new Set}if(!t)return new Set;let n;try{n=JSON.parse(t)}catch{return new Set}if(!Array.isArray(n))return new Set;let e=new Set;for(let i of n)typeof i=="string"&&i.length>0&&e.add(i);return e}function Qt(t){try{if(t.size===0){localStorage.removeItem($e);return}localStorage.setItem($e,JSON.stringify([...t]))}catch{}}function Xt(){let t=null;try{t=localStorage.getItem(He)}catch{return"all"}return t&&Ae.includes(t)?t:"all"}function Yt(t){try{if(t==="all"){localStorage.removeItem(He);return}localStorage.setItem(He,t)}catch{}}function Jt(t){let n=v(""),e=y(()=>n().trim().length>0),i=v(Xt()),o=y(()=>i()!=="all");L(()=>Yt(i()));let c=y(()=>Gt(t.plugins().flatMap(Ht))),g=y(()=>{let V=n().trim().toLowerCase(),_e=i(),G=c();return _e!=="all"&&(G=G.flatMap(he=>$t(he,_e))),V.length>0&&(G=G.flatMap(he=>Kt(he,V))),G});return{searchText:n,searchActive:e,kindFilter:i,setKindFilter:V=>{i.set(V)},isKindFilterActive:V=>i()===V,kindFilterActive:o,kindFilterOptions:Ae,visiblePlugins:c,filteredPlugins:g}}function Zt(t){let n=v(!1),e=v(null),i=v(null),o=v([]),c=v(new Map),g=v(new Map),P=v(!1),$=y(()=>{let E=c(),D=g(),z=new Set;for(let[U,j]of D)E.get(U)!==j&&z.add(U);return z}),V=y(()=>$().size>0),_e=y(()=>o().some(E=>de(E.status))),G=y(()=>{let E=g();for(let D of o())if(D.startsAsDisabled===!0&&E.get(D.id)===!0)return!0;return!1});return{plugins:o,loading:n,loadError:e,toggleError:i,applying:P,hasFailureRows:_e,originalState:c,pendingState:g,dirtyIds:$,hasPendingChanges:V,restartRecommended:G,pendingEnabled:E=>g().get(E)??!1,isDirty:E=>$().has(E),refresh:async()=>{n.set(!0),e.set(null),i.set(null);try{let E=await t.dataSource.listPlugins();o.set([...E.items]);let D=ze(E.items);c.set(D),g.set(new Map(D))}catch(E){e.set(Ke(E)),o.set([]),c.set(new Map),g.set(new Map)}finally{n.set(!1)}},onBundleToggle:(E,D)=>{if(P())return;let z=new Map(g());z.set(E.id,D),g.set(z)},onExtensionToggle:(E,D,z)=>{if(P())return;let U=le(E,D.id),j=new Map(g());j.set(U,z),g.set(j)},applyChanges:async()=>{if(P())return{ok:!1};let E=$();if(E.size===0)return{ok:!1};let D=[],z=g();for(let j of E)D.push({id:j,enabled:z.get(j)??!1});P.set(!0),i.set(null);let U=!1;try{let j=await t.dataSource.applyPluginChanges(D);o.set([...j.items]);let Ue=ze(j.items);c.set(Ue),g.set(new Map(Ue)),t.scanTrigger.run(),U=!0}catch(j){i.set(Ke(j))}finally{P.set(!1)}return{ok:U}},discardChanges:()=>{g.set(new Map(c())),i.set(null)}}}var en=(t,n)=>n.id;function Dn(t,n){if(t&1){let e=I();l(0,"button",15),C("click",function(){let o=k(e).$implicit,c=a();return S(c.setKindFilter(o))}),d(1),s()}if(t&2){let e=n.$implicit,i=a();Ve("--kind-color",e==="all"?null:i.kindTint(e)),B("is-active",i.isKindFilterActive(e))("is-all",e==="all"),_("aria-pressed",i.isKindFilterActive(e))("aria-label",i.texts.pluginsKindFilterOptionA11y(e,!i.isKindFilterActive(e)))("data-testid","settings-plugins-kind-chip-"+e),r(),x(" ",e==="all"?i.texts.pluginsKindFilterAll:e," ")}}function An(t,n){if(t&1&&(l(0,"p-message",10),d(1),s()),t&2){let e=a();b("closable",!1),r(),x(" ",e.texts.unsavedChangesMessage(e.dirtyIds().size)," ")}}function jn(t,n){if(t&1&&(l(0,"p",11),T(1,"i",16),d(2),s()),t&2){let e=a();r(2),x(" ",e.texts.loading," ")}}function Nn(t,n){if(t&1&&(l(0,"p-message",12),d(1),s()),t&2){let e=a();b("closable",!1),r(),R(" ",e.texts.errorPrefix," ",e.loadError()," ")}}function Vn(t,n){if(t&1&&(l(0,"p",13),d(1),s()),t&2){let e=a();r(),x(" ",e.texts.empty," ")}}function Ln(t,n){if(t&1){let e=I();l(0,"p-message",21),C("onClose",function(){k(e);let o=a(2);return S(o.toggleError.set(null))}),d(1),s()}if(t&2){let e=a(2);b("closable",!0),r(),R(" ",e.texts.toggleErrorPrefix," ",e.toggleError()," ")}}function Rn(t,n){if(t&1&&(l(0,"p",18),T(1,"i",22),d(2),s()),t&2){let e=a(2);r(2),x(" ",e.texts.pluginsSearchEmpty(e.searchText())," ")}}function zn(t,n){if(t&1){let e=I();l(0,"button",40),C("click",function(o){k(e);let c=a().$implicit;return a(2).toggleExpanded(c.id),S(o.stopPropagation())}),T(1,"i",41),s()}if(t&2){let e=a().$implicit,i=a(2);_("aria-expanded",i.isExpanded(e.id))("aria-label",i.isExpanded(e.id)?i.texts.collapseLabel:i.texts.expandLabel)("data-testid","settings-bundle-expand-"+e.id),r(),B("fa-chevron-down",i.isExpanded(e.id))("fa-chevron-right",!i.isExpanded(e.id))}}function Bn(t,n){t&1&&T(0,"span",26)}function Kn(t,n){if(t&1&&T(0,"span",29),t&2){let e=a().$implicit;_("data-testid","settings-row-dirty-"+e.id)}}function $n(t,n){if(t&1&&(l(0,"span",32),d(1),s()),t&2){let e=a().$implicit;r(),x("v",e.version)}}function Hn(t,n){if(t&1&&(l(0,"span",33),T(1,"i",42),d(2),s()),t&2){let e=a().$implicit,i=a(2);b("title",i.texts.lockedTooltip),_("data-testid","settings-row-locked-"+e.id),r(2),x(" ",i.texts.lockedLabel," ")}}function Gn(t,n){if(t&1&&(l(0,"span",34),d(1),s()),t&2){let e=a().$implicit,i=a(2);r(),p(i.statusLabel(e))}}function Un(t,n){if(t&1&&(l(0,"p",35),d(1),s()),t&2){let e=a().$implicit;r(),p(e.description)}}function qn(t,n){if(t&1&&(l(0,"span",36),d(1),s()),t&2){let e=a().$implicit;r(),p(e.reason)}}function Wn(t,n){if(t&1&&(l(0,"p",37),T(1,"i",43),d(2),s()),t&2){let e=a().$implicit,i=a(2);_("data-testid","settings-row-starts-disabled-"+e.id),r(2),x(" ",i.texts.startsAsDisabledRowHint," ")}}function Qn(t,n){if(t&1){let e=I();l(0,"p-toggleswitch",44),C("ngModelChange",function(o){k(e);let c=a().$implicit,g=a(2);return S(g.onBundleToggle(c,o))}),s()}if(t&2){let e=a().$implicit,i=a(2);b("ngModel",i.pendingEnabled(e.id))("disabled",i.applying()||!!e.locked)("ariaLabel",i.texts.a11y.pluginToggle(e.id,!i.pendingEnabled(e.id))),_("data-testid","settings-toggle-"+e.id)}}function Xn(t,n){if(t&1&&T(0,"span",29),t&2){let e=a().$implicit,i=a(2).$implicit;_("data-testid","settings-extrow-dirty-"+i.id+"-"+e.id)}}function Yn(t,n){if(t&1&&(l(0,"span",33),T(1,"i",42),d(2),s()),t&2){let e=a().$implicit,i=a(2).$implicit,o=a(2);b("title",o.texts.lockedTooltip),_("data-testid","settings-extrow-locked-"+i.id+"-"+e.id),r(2),x(" ",o.texts.lockedLabel," ")}}function Jn(t,n){if(t&1&&(l(0,"p",52),d(1),s()),t&2){let e=a().$implicit;r(),p(e.description)}}function Zn(t,n){if(t&1){let e=I();l(0,"li",46),C("click",function(o){let c=k(e).$implicit,g=a(2).$implicit,P=a(2);return S(P.onSubrowClick(g.id,c,o))})("keydown.enter",function(o){let c=k(e).$implicit,g=a(2).$implicit,P=a(2);return S(P.onSubrowClick(g.id,c,o))})("keydown.space",function(o){let c=k(e).$implicit,g=a(2).$implicit,P=a(2);return o.preventDefault(),S(P.onSubrowClick(g.id,c,o))}),l(1,"div",47)(2,"div",48),h(3,Xn,1,1,"span",29),l(4,"span",49),d(5),s(),l(6,"span",50),d(7),s(),l(8,"span",51),d(9),s(),h(10,Yn,3,3,"span",33),s(),h(11,Jn,2,1,"p",52),s(),l(12,"p-toggleswitch",44),C("ngModelChange",function(o){let c=k(e).$implicit,g=a(2).$implicit,P=a(2);return S(P.onExtensionToggle(g.id,c,o))}),s()()}if(t&2){let e=n.$implicit,i=a(2).$implicit,o=a(2);B("is-clickable",o.extensionToggleInteractive(e))("is-dirty",o.isDirty(o.qualifiedExt(i.id,e.id))),_("aria-label",o.texts.a11y.extensionRow(o.qualifiedExt(i.id,e.id)))("data-testid","settings-extrow-"+i.id+"-"+e.id),r(3),f(o.isDirty(o.qualifiedExt(i.id,e.id))?3:-1),r(2),p(e.id),r(),Ve("--kind-color",o.kindTint(e.kind)),r(),p(e.kind),r(2),x("v",e.version),r(),f(e.locked?10:-1),r(),f(e.description?11:-1),r(),b("ngModel",o.pendingEnabled(o.qualifiedExt(i.id,e.id)))("disabled",o.applying()||!!e.locked)("ariaLabel",o.texts.a11y.extensionToggle(o.qualifiedExt(i.id,e.id),!o.pendingEnabled(o.qualifiedExt(i.id,e.id)))),_("data-testid","settings-ext-toggle-"+i.id+"-"+e.id)}}function ei(t,n){if(t&1&&(l(0,"ul",39),O(1,Zn,13,18,"li",45,en),s()),t&2){let e=a().$implicit;_("data-testid","settings-extensions-"+e.id),r(),F(e.extensions)}}function ti(t,n){if(t&1){let e=I();l(0,"li",23)(1,"div",24),C("click",function(o){let c=k(e).$implicit,g=a(2);return S(g.onRowClick(c,o))})("keydown.enter",function(o){let c=k(e).$implicit,g=a(2);return S(g.onRowClick(c,o))})("keydown.space",function(o){let c=k(e).$implicit,g=a(2);return o.preventDefault(),S(g.onRowClick(c,o))}),h(2,zn,2,7,"button",25)(3,Bn,1,0,"span",26),l(4,"div",27)(5,"div",28),h(6,Kn,1,1,"span",29),l(7,"span",30),d(8),s(),l(9,"span",31),d(10),s(),h(11,$n,2,1,"span",32),h(12,Hn,3,3,"span",33),h(13,Gn,2,1,"span",34),s(),h(14,Un,2,1,"p",35),h(15,qn,2,1,"span",36),h(16,Wn,3,2,"p",37),s(),h(17,Qn,1,4,"p-toggleswitch",38),s(),h(18,ei,3,1,"ul",39),s()}if(t&2){let e=n.$implicit,i=a(2);B("is-extension-bundle",e.granularity==="extension")("is-failed",!i.canToggleBundle(e)&&e.granularity==="bundle")("is-clickable",i.rowIsClickable(e))("is-dirty",e.granularity==="bundle"&&i.isDirty(e.id)),_("data-testid","settings-row-"+e.id),r(),_("aria-label",i.texts.a11y.pluginRow(e.id)),r(),f(e.granularity==="extension"&&(e.extensions!=null&&e.extensions.length)?2:3),r(4),f(e.granularity==="bundle"&&i.isDirty(e.id)?6:-1),r(2),p(e.id),r(2),p(i.sourceLabel(e.source)),r(),f(e.version?11:-1),r(),f(e.locked?12:-1),r(),f(!i.canToggleBundle(e)&&e.granularity==="bundle"?13:-1),r(),f(e.description?14:-1),r(),f(e.reason?15:-1),r(),f(i.showStartsAsDisabledHint(e)?16:-1),r(),f(i.canToggleBundle(e)?17:-1),r(),f(e.granularity==="extension"&&(e.extensions!=null&&e.extensions.length)&&i.isExpanded(e.id)?18:-1)}}function ni(t,n){if(t&1&&(h(0,Ln,2,3,"p-message",17),h(1,Rn,3,1,"p",18),l(2,"ul",19),O(3,ti,19,22,"li",20,en),s()),t&2){let e=a();f(e.toggleError()?0:-1),r(),f(e.searchActive()&&e.filteredPlugins().length===0?1:-1),r(2),F(e.filteredPlugins())}}function ii(t,n){if(t&1&&(l(0,"em",53),d(1),s()),t&2){let e=a(2);r(),x(" ",e.texts.startsAsDisabledFooterHint," ")}}function oi(t,n){if(t&1){let e=I();l(0,"footer",14),h(1,ii,2,1,"em",53),l(2,"p-button",54),C("onClick",function(){k(e);let o=a();return S(o.discardChanges())}),s(),l(3,"p-button",55),C("onClick",function(){k(e);let o=a();return S(o.applyChanges())}),s()()}if(t&2){let e=a();r(),f(e.restartRecommended()?1:-1),r(),b("text",!0)("label",e.texts.discardChanges)("ariaLabel",e.texts.discardA11y)("disabled",e.applying()),r(),b("label",e.texts.applyAndClose)("ariaLabel",e.texts.applyA11y)("disabled",e.applying())("loading",e.applying())}}var ce=class t{dataSource=M(H);scanTrigger=M(It);visible=N.required();applied=ve();texts=w;pluginState=Zt({dataSource:this.dataSource,scanTrigger:this.scanTrigger});plugins=this.pluginState.plugins;loading=this.pluginState.loading;loadError=this.pluginState.loadError;toggleError=this.pluginState.toggleError;applying=this.pluginState.applying;hasFailureRows=this.pluginState.hasFailureRows;originalState=this.pluginState.originalState;pendingState=this.pluginState.pendingState;dirtyIds=this.pluginState.dirtyIds;hasPendingChanges=this.pluginState.hasPendingChanges;restartRecommended=this.pluginState.restartRecommended;collapsed=v(Wt());pluginFilter=Jt({plugins:this.plugins});searchText=this.pluginFilter.searchText;searchActive=this.pluginFilter.searchActive;kindFilter=this.pluginFilter.kindFilter;kindFilterActive=this.pluginFilter.kindFilterActive;kindFilterOptions=this.pluginFilter.kindFilterOptions;visiblePlugins=this.pluginFilter.visiblePlugins;filteredPlugins=this.pluginFilter.filteredPlugins;constructor(){L(()=>{this.visible()&&this.pluginState.refresh()}),L(()=>Qt(this.collapsed()))}setKindFilter(n){this.pluginFilter.setKindFilter(n)}isKindFilterActive(n){return this.pluginFilter.isKindFilterActive(n)}toggleExpanded(n){let e=new Set(this.collapsed());e.has(n)?e.delete(n):e.add(n),this.collapsed.set(e)}isExpanded(n){return!this.collapsed().has(n)}pendingEnabled(n){return this.pluginState.pendingEnabled(n)}isDirty(n){return this.pluginState.isDirty(n)}showStartsAsDisabledHint(n){return n.startsAsDisabled?this.pendingEnabled(n.id):!1}onBundleToggle(n,e){this.pluginState.onBundleToggle(n,e)}onExtensionToggle(n,e,i){this.pluginState.onExtensionToggle(n,e,i)}async applyChanges(){(await this.pluginState.applyChanges()).ok&&this.applied.emit()}discardChanges(){this.pluginState.discardChanges()}canToggleBundle(n){return n.granularity==="extension"?!1:!de(n.status)}bundleToggleInteractive(n){return this.canToggleBundle(n)&&!n.locked}extensionToggleInteractive(n){return!n.locked}rowIsClickable(n){return!!(this.bundleToggleInteractive(n)||n.granularity==="extension"&&(n.extensions?.length??0)>0)}onRowClick(n,e){if(!Be(e)){if(this.bundleToggleInteractive(n)){this.onBundleToggle(n,!this.pendingEnabled(n.id));return}n.granularity==="extension"&&(n.extensions?.length??0)>0&&this.toggleExpanded(n.id)}}onSubrowClick(n,e,i){if(Be(i)||!this.extensionToggleInteractive(e))return;let o=le(n,e.id);this.onExtensionToggle(n,e,!this.pendingEnabled(o))}statusLabel(n){return Ut(n,this.texts)}sourceLabel(n){return qt(n,this.texts)}qualifiedExt(n,e){return le(n,e)}kindTint(n){return Bt(n)}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=A({type:t,selectors:[["sm-settings-plugins"]],inputs:{visible:[1,"visible"]},outputs:{applied:"applied"},decls:19,vars:9,consts:[["aria-labelledby","settings-plugins-heading",1,"settings-plugins"],[1,"settings-plugins__scroll"],[1,"settings-plugins__header"],["id","settings-plugins-heading",1,"settings-plugins__title"],[1,"settings-plugins__intro"],["iconPosition","left",1,"settings-plugins__search"],["styleClass","fa-solid fa-magnifying-glass"],["pInputText","","type","text","data-testid","settings-plugins-search",3,"ngModelChange","placeholder","ngModel"],["role","group","data-testid","settings-plugins-kind-filter",1,"settings-plugins__kind-filter"],["type","button",1,"settings-plugins__kind-chip",3,"is-active","is-all","--kind-color"],["severity","warn","styleClass","settings-plugins__banner","data-testid","settings-banner-unsaved",3,"closable"],["data-testid","settings-loading",1,"settings-plugins__hint"],["severity","error","data-testid","settings-error",3,"closable"],["data-testid","settings-empty",1,"settings-plugins__hint"],["data-testid","settings-plugins-footer",1,"settings-plugins__footer"],["type","button",1,"settings-plugins__kind-chip",3,"click"],["aria-hidden","true",1,"fa-solid","fa-spinner","fa-spin"],["severity","error","data-testid","settings-toggle-error",3,"closable"],["data-testid","settings-search-empty",1,"settings-plugins__hint"],["role","list",1,"settings-plugins__list"],[1,"settings-plugins__row",3,"is-extension-bundle","is-failed","is-clickable","is-dirty"],["severity","error","data-testid","settings-toggle-error",3,"onClose","closable"],["aria-hidden","true",1,"fa-solid","fa-magnifying-glass"],[1,"settings-plugins__row"],["role","button","tabindex","0",1,"settings-plugins__row-main",3,"click","keydown.enter","keydown.space"],["type","button",1,"settings-plugins__expand"],["aria-hidden","true",1,"settings-plugins__expand-spacer"],[1,"settings-plugins__row-text"],[1,"settings-plugins__row-headline"],["aria-hidden","true",1,"settings-plugins__dirty-dot"],[1,"settings-plugins__row-id"],[1,"settings-plugins__row-source"],[1,"settings-plugins__row-version"],[1,"settings-plugins__row-locked",3,"title"],[1,"settings-plugins__row-status"],[1,"settings-plugins__row-description"],[1,"settings-plugins__row-reason"],[1,"settings-plugins__row-hint"],[3,"ngModel","disabled","ariaLabel"],["role","list",1,"settings-plugins__sublist"],["type","button",1,"settings-plugins__expand",3,"click"],["aria-hidden","true",1,"fa-solid"],["aria-hidden","true",1,"fa-solid","fa-lock"],["aria-hidden","true",1,"fa-solid","fa-triangle-exclamation"],[3,"ngModelChange","ngModel","disabled","ariaLabel"],["role","button","tabindex","0",1,"settings-plugins__subrow",3,"is-clickable","is-dirty"],["role","button","tabindex","0",1,"settings-plugins__subrow",3,"click","keydown.enter","keydown.space"],[1,"settings-plugins__subrow-text"],[1,"settings-plugins__subrow-headline"],[1,"settings-plugins__subrow-id"],[1,"settings-plugins__subrow-kind"],[1,"settings-plugins__subrow-version"],[1,"settings-plugins__subrow-description"],["data-testid","settings-plugins-restart-hint",1,"settings-plugins__footer-hint"],["severity","secondary","data-testid","settings-plugins-discard",3,"onClick","text","label","ariaLabel","disabled"],["data-testid","settings-plugins-apply",3,"onClick","label","ariaLabel","disabled","loading"]],template:function(e,i){e&1&&(l(0,"section",0)(1,"div",1)(2,"header",2)(3,"h2",3),d(4),s(),l(5,"p",4),d(6),s()(),l(7,"p-iconfield",5),T(8,"p-inputicon",6),l(9,"input",7),C("ngModelChange",function(c){return i.searchText.set(c)}),s()(),l(10,"div",8),O(11,Dn,2,10,"button",9,Q),s(),h(13,An,2,2,"p-message",10),h(14,jn,3,1,"p",11)(15,Nn,2,3,"p-message",12)(16,Vn,2,1,"p",13)(17,ni,5,2),s(),h(18,oi,4,9,"footer",14),s()),e&2&&(r(4),x(" ",i.texts.pluginsHeading," "),r(2),p(i.texts.pluginsIntro),r(3),b("placeholder",i.texts.pluginsSearchPlaceholder)("ngModel",i.searchText()),_("aria-label",i.texts.pluginsSearchA11y),r(),_("aria-label",i.texts.pluginsKindFilterA11y),r(),F(i.kindFilterOptions),r(2),f(i.hasPendingChanges()?13:-1),r(),f(i.loading()?14:i.loadError()?15:i.plugins().length===0?16:17),r(4),f(i.hasPendingChanges()?18:-1))},dependencies:[ie,Se,te,ne,ee,Ce,Pt,St,Mt,Et,Ee,Pe,re,oe,Ie,se],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;height:100%;overflow:hidden}.settings-plugins[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex:1;min-height:0}.settings-plugins__scroll[_ngcontent-%COMP%]{flex:1;overflow-y:auto;padding:1.25rem 1.5rem;display:flex;flex-direction:column;gap:.75rem;min-height:0}.settings-plugins__header[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem}.settings-plugins__title[_ngcontent-%COMP%]{font-size:1.15rem;font-weight:600;margin:0}.settings-plugins__intro[_ngcontent-%COMP%]{margin:0;color:var(--p-text-muted-color);font-size:.875rem}.settings-plugins__search[_ngcontent-%COMP%]{display:block;width:100%}.settings-plugins__search[_ngcontent-%COMP%] :where(input[_ngcontent-%COMP%]){width:100%}.settings-plugins__kind-filter[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:.375rem}.settings-plugins__kind-chip[_ngcontent-%COMP%]{--chip-accent: var(--kind-color, var(--p-text-color));appearance:none;cursor:pointer;font:inherit;font-size:.75rem;font-weight:500;letter-spacing:.02em;text-transform:lowercase;padding:.25rem .625rem;border-radius:var(--sm-radius-pill);background:color-mix(in oklab,var(--chip-accent) 8%,transparent);border:1px solid color-mix(in oklab,var(--chip-accent) 35%,transparent);color:color-mix(in oklab,var(--chip-accent) 70%,var(--p-text-color));transition:background .12s ease,border-color .12s ease,color .12s ease}.settings-plugins__kind-chip[_ngcontent-%COMP%]:hover{background:color-mix(in oklab,var(--chip-accent) 18%,transparent);border-color:color-mix(in oklab,var(--chip-accent) 55%,transparent)}.settings-plugins__kind-chip[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--p-focus-ring-color);outline-offset:2px}.settings-plugins__kind-chip.is-active[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--chip-accent) 80%,transparent);border-color:var(--chip-accent);color:var(--p-surface-50)}.app-dark[_nghost-%COMP%] .settings-plugins__kind-chip[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .settings-plugins__kind-chip[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--chip-accent) 14%,transparent);border-color:color-mix(in oklab,var(--chip-accent) 50%,transparent);color:color-mix(in oklab,var(--chip-accent) 80%,var(--p-text-color))}.app-dark[_nghost-%COMP%] .settings-plugins__kind-chip[_ngcontent-%COMP%]:hover, .app-dark [_nghost-%COMP%] .settings-plugins__kind-chip[_ngcontent-%COMP%]:hover{background:color-mix(in oklab,var(--chip-accent) 26%,transparent);border-color:color-mix(in oklab,var(--chip-accent) 70%,transparent)}.app-dark[_nghost-%COMP%] .settings-plugins__kind-chip.is-active[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .settings-plugins__kind-chip.is-active[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--chip-accent) 70%,transparent);border-color:var(--chip-accent);color:var(--p-surface-900)}.settings-plugins__banner[_ngcontent-%COMP%]{display:block}.settings-plugins__banner-body[_ngcontent-%COMP%]{font-weight:400}.settings-plugins__hint[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;margin:0;padding:1rem 0;color:var(--p-text-muted-color);font-size:.875rem}.settings-plugins__list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}.settings-plugins__row[_ngcontent-%COMP%]{border:1px solid var(--p-content-border-color);border-radius:var(--p-border-radius);background:var(--p-content-background);padding:.75rem .875rem;display:flex;flex-direction:column;gap:.5rem}.settings-plugins__row.is-clickable[_ngcontent-%COMP%]{cursor:pointer;transition:background .12s ease}.settings-plugins__row.is-clickable[_ngcontent-%COMP%]:hover{background:var(--p-content-hover-background)}.settings-plugins__row.is-failed[_ngcontent-%COMP%]{border-color:var(--p-message-error-border-color);background:var(--p-message-error-background)}.settings-plugins__row.is-extension-bundle[_ngcontent-%COMP%]{background:var(--p-content-background)}.settings-plugins__row-main[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem}.settings-plugins__expand[_ngcontent-%COMP%], .settings-plugins__expand-spacer[_ngcontent-%COMP%]{width:1.75rem;height:1.75rem;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.settings-plugins__expand[_ngcontent-%COMP%]{border:none;background:transparent;cursor:pointer;color:var(--p-text-muted-color);border-radius:var(--p-border-radius)}.settings-plugins__expand[_ngcontent-%COMP%]:hover{color:var(--p-text-color);background:var(--p-content-hover-background)}.settings-plugins__row-text[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.125rem;flex:1;min-width:0}.settings-plugins__row-headline[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem .75rem}.settings-plugins__row-id[_ngcontent-%COMP%]{font-weight:600;font-family:var(--p-monospace-font-family)}.settings-plugins__row-source[_ngcontent-%COMP%], .settings-plugins__row-version[_ngcontent-%COMP%], .settings-plugins__subrow-kind[_ngcontent-%COMP%], .settings-plugins__subrow-version[_ngcontent-%COMP%]{display:inline-flex;align-items:center;font-size:.7rem;font-weight:500;letter-spacing:.02em;padding:.125rem .5rem;border-radius:var(--sm-radius-pill);white-space:nowrap}.settings-plugins__row-version[_ngcontent-%COMP%], .settings-plugins__subrow-version[_ngcontent-%COMP%]{font-family:var(--p-monospace-font-family)}.settings-plugins__row-source[_ngcontent-%COMP%], .settings-plugins__row-version[_ngcontent-%COMP%], .settings-plugins__subrow-version[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--p-text-color) 8%,transparent);border:1px solid color-mix(in oklab,var(--p-text-color) 18%,transparent);color:var(--p-text-color)}.app-dark[_nghost-%COMP%] .settings-plugins__row-source[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .settings-plugins__row-source[_ngcontent-%COMP%], .app-dark[_nghost-%COMP%] .settings-plugins__row-version[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .settings-plugins__row-version[_ngcontent-%COMP%], .app-dark[_nghost-%COMP%] .settings-plugins__subrow-version[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .settings-plugins__subrow-version[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--p-text-color) 14%,transparent);border-color:color-mix(in oklab,var(--p-text-color) 28%,transparent)}.settings-plugins__subrow-kind[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--kind-color, var(--p-text-color)) 14%,transparent);border:1px solid color-mix(in oklab,var(--kind-color, var(--p-text-color)) 38%,transparent);color:color-mix(in oklab,var(--kind-color, var(--p-text-color)) 70%,var(--p-surface-900))}.app-dark[_nghost-%COMP%] .settings-plugins__subrow-kind[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .settings-plugins__subrow-kind[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--kind-color, var(--p-text-color)) 22%,transparent);border-color:color-mix(in oklab,var(--kind-color, var(--p-text-color)) 55%,transparent);color:color-mix(in oklab,var(--kind-color, var(--p-text-color)) 80%,var(--p-surface-50))}.settings-plugins__row-status[_ngcontent-%COMP%]{font-weight:500}.settings-plugins__row-locked[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.25rem;font-size:.7rem;font-weight:500;letter-spacing:.02em;padding:.125rem .5rem;border-radius:var(--sm-radius-pill);white-space:nowrap;background:color-mix(in oklab,var(--p-message-warn-color) 14%,transparent);border:1px solid color-mix(in oklab,var(--p-message-warn-color) 35%,transparent);color:color-mix(in oklab,var(--p-message-warn-color) 70%,var(--p-surface-900))}.settings-plugins__row-locked[_ngcontent-%COMP%] > .pi[_ngcontent-%COMP%]{font-size:.7rem}.app-dark[_nghost-%COMP%] .settings-plugins__row-locked[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .settings-plugins__row-locked[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--p-message-warn-color) 22%,transparent);border-color:color-mix(in oklab,var(--p-message-warn-color) 55%,transparent);color:color-mix(in oklab,var(--p-message-warn-color) 85%,var(--p-surface-50))}.settings-plugins__row-description[_ngcontent-%COMP%]{margin:.25rem 0 0;font-size:.8125rem;line-height:1.4;color:var(--p-text-muted-color)}.settings-plugins__row-reason[_ngcontent-%COMP%]{font-size:.8125rem;color:var(--p-message-error-color);font-family:var(--p-monospace-font-family);margin-top:.25rem}.settings-plugins__sublist[_ngcontent-%COMP%]{list-style:none;margin:0;padding:.5rem 0 0 1.75rem;display:flex;flex-direction:column;gap:.25rem;border-top:1px dashed var(--p-content-border-color)}.settings-plugins__subrow[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.375rem .5rem;border-radius:var(--p-border-radius)}.settings-plugins__subrow.is-clickable[_ngcontent-%COMP%]{cursor:pointer;transition:background .12s ease}.settings-plugins__subrow.is-clickable[_ngcontent-%COMP%]:hover{background:var(--p-content-hover-background)}.settings-plugins__subrow-text[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.125rem;flex:1;min-width:0}.settings-plugins__subrow-headline[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem .75rem}.settings-plugins__subrow-id[_ngcontent-%COMP%]{font-family:var(--p-monospace-font-family);font-size:.875rem}.settings-plugins__subrow-description[_ngcontent-%COMP%]{margin:.25rem 0 0;font-size:.75rem;line-height:1.4;color:var(--p-text-muted-color)}.settings-plugins__dirty-dot[_ngcontent-%COMP%]{display:inline-block;width:.5rem;height:.5rem;border-radius:50%;background:var(--p-warn-color);flex-shrink:0}.settings-plugins__row-hint[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:.5rem;margin:.25rem 0 0;font-size:.75rem;line-height:1.4;color:var(--p-warn-color)}.settings-plugins__row-hint[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{margin-top:.125rem}.settings-plugins__footer[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;align-items:center;gap:.5rem;padding:.75rem 1.5rem;border-top:1px solid var(--p-content-border-color);background:var(--p-content-background)}.settings-plugins__footer-hint[_ngcontent-%COMP%]{font-style:italic;font-size:.75rem;line-height:1.4;color:var(--p-warn-color);margin-right:auto}"],changeDetection:0})};function ai(t,n){if(t&1&&(l(0,"p-message",3),d(1),s()),t&2){let e=a();b("closable",!1),r(),R(" ",e.texts.project.loadErrorPrefix," ",n," ")}}function si(t,n){if(t&1&&(l(0,"p-message",4),d(1),s()),t&2){let e=a();b("closable",!1),r(),R(" ",e.texts.project.saveErrorPrefix," ",n," ")}}function li(t,n){if(t&1){let e=I();l(0,"li",10)(1,"span",17),d(2),s(),l(3,"p-button",18),C("onClick",function(){let o=k(e).$implicit,c=a();return S(c.onExtraFolderRemove(o))}),s()()}if(t&2){let e=n.$implicit,i=a();r(2),p(e),r(),b("label",i.texts.project.removePathLabel)("outlined",!0)("disabled",i.isPending("scan.extraFolders")),_("data-testid","settings-project-extra-folders-remove")}}function di(t,n){if(t&1){let e=I();l(0,"li",10)(1,"span",17),d(2),s(),l(3,"p-button",18),C("onClick",function(){let o=k(e).$implicit,c=a();return S(c.onReferencePathRemove(o))}),s()()}if(t&2){let e=n.$implicit,i=a();r(2),p(e),r(),b("label",i.texts.project.removePathLabel)("outlined",!0)("disabled",i.isPending("scan.referencePaths")),_("data-testid","settings-project-reference-paths-remove")}}var je=class t{dataSource=M(H);confirmation=M(Z);visible=N.required();texts=w;loading=v(!1);loadError=v(null);saveError=v(null);preferences=v(null);pending=v(new Set);newExtraFolder=v("");newReferencePath=v("");extraFolders=y(()=>this.preferences()?.scan.extraFolders??[]);referencePaths=y(()=>this.preferences()?.scan.referencePaths??[]);constructor(){L(()=>{this.visible()&&this.refresh()})}isPending(n){return this.pending().has(n)}onExtraFolderAdd(){let n=this.newExtraFolder().trim();if(n.length===0)return;let e=[...this.extraFolders(),n];this.runPatch("scan.extraFolders",{scan:{extraFolders:e}}).then(()=>{this.newExtraFolder.set("")})}onExtraFolderRemove(n){let e=this.extraFolders().filter(i=>i!==n);this.runPatch("scan.extraFolders",{scan:{extraFolders:[...e]}})}onReferencePathAdd(){let n=this.newReferencePath().trim();if(n.length===0)return;let e=[...this.referencePaths(),n];this.runPatch("scan.referencePaths",{scan:{referencePaths:e}}).then(()=>{this.newReferencePath.set("")})}onReferencePathRemove(n){let e=this.referencePaths().filter(i=>i!==n);this.runPatch("scan.referencePaths",{scan:{referencePaths:[...e]}})}async refresh(){this.loading.set(!0),this.loadError.set(null),this.saveError.set(null);try{let n=await this.dataSource.getProjectPreferences();this.preferences.set(n)}catch(n){this.loadError.set(Ge(n)),this.preferences.set(null)}finally{this.loading.set(!1)}}async runPatch(n,e){if(this.pending().has(n))return;let i=new Set(this.pending());i.add(n),this.pending.set(i),this.saveError.set(null);try{let o=await this.dataSource.setProjectPreferences(e);this.preferences.set(o)}catch(o){if(o instanceof K&&o.code==="confirm-required"){let c=o.paths??[];this.confirmDialog(c,async()=>{try{let g=await this.dataSource.setProjectPreferences(W(q({},e),{confirm:!0}));this.preferences.set(g)}catch(g){this.saveError.set(Ge(g))}})}else this.saveError.set(Ge(o))}finally{let o=new Set(this.pending());o.delete(n),this.pending.set(o)}}confirmDialog(n,e){this.confirmation.confirm({header:w.project.confirmDialogHeader,message:w.project.confirmDialogIntro+`
122
+ `+n.map(i=>`\u2022 ${i}`).join(`
123
+ `),acceptLabel:w.project.confirmDialogAccept,rejectLabel:w.project.confirmDialogReject,acceptButtonProps:{severity:"primary"},rejectButtonProps:{severity:"secondary"},accept:()=>{e()}})}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=A({type:t,selectors:[["sm-settings-project"]],inputs:{visible:[1,"visible"]},features:[J([Z])],decls:32,vars:19,consts:[["data-testid","settings-project",1,"settings-project"],["id","settings-project-heading",1,"settings-project__title"],[1,"settings-project__intro"],["severity","error","data-testid","settings-project-load-error",3,"closable"],["severity","error","data-testid","settings-project-save-error",3,"closable"],["data-testid","settings-project-extra-folders-row",1,"settings-project__list-row"],[1,"settings-project__row-text"],[1,"settings-project__row-label"],[1,"settings-project__row-description"],["role","list",1,"settings-project__path-list"],[1,"settings-project__path-item"],[1,"settings-project__add-row"],["type","text","pInputText","","data-testid","settings-project-extra-folders-input",3,"ngModelChange","ngModel","placeholder","disabled"],["severity","primary","size","small","data-testid","settings-project-extra-folders-add",3,"onClick","label","disabled"],["data-testid","settings-project-reference-paths-row",1,"settings-project__list-row"],["type","text","pInputText","","data-testid","settings-project-reference-paths-input",3,"ngModelChange","ngModel","placeholder","disabled"],["severity","primary","size","small","data-testid","settings-project-reference-paths-add",3,"onClick","label","disabled"],[1,"settings-project__path-text"],["severity","secondary","size","small",3,"onClick","label","outlined","disabled"]],template:function(e,i){if(e&1&&(l(0,"section",0)(1,"h2",1),d(2),s(),l(3,"p",2),d(4),s(),h(5,ai,2,3,"p-message",3),h(6,si,2,3,"p-message",4),l(7,"div",5)(8,"div",6)(9,"div",7),d(10),s(),l(11,"div",8),d(12),s()(),l(13,"ul",9),O(14,li,4,5,"li",10,Q),s(),l(16,"div",11)(17,"input",12),C("ngModelChange",function(c){return i.newExtraFolder.set(c)}),s(),l(18,"p-button",13),C("onClick",function(){return i.onExtraFolderAdd()}),s()()(),l(19,"div",14)(20,"div",6)(21,"div",7),d(22),s(),l(23,"div",8),d(24),s()(),l(25,"ul",9),O(26,di,4,5,"li",10,Q),s(),l(28,"div",11)(29,"input",15),C("ngModelChange",function(c){return i.newReferencePath.set(c)}),s(),l(30,"p-button",16),C("onClick",function(){return i.onReferencePathAdd()}),s()()(),T(31,"p-confirmdialog"),s()),e&2){let o,c;_("aria-labelledby","settings-project-heading"),r(2),x(" ",i.texts.project.heading," "),r(2),p(i.texts.project.intro),r(),f((o=i.loadError())?5:-1,o),r(),f((c=i.saveError())?6:-1,c),r(4),p(i.texts.project.extraFoldersLabel),r(2),x(" ",i.texts.project.extraFoldersDescription," "),r(2),F(i.extraFolders()),r(3),b("ngModel",i.newExtraFolder())("placeholder",i.texts.project.extraFoldersPlaceholder)("disabled",i.isPending("scan.extraFolders")),r(),b("label",i.texts.project.addPathLabel)("disabled",i.isPending("scan.extraFolders")||i.newExtraFolder().trim().length===0),r(4),p(i.texts.project.referencePathsLabel),r(2),x(" ",i.texts.project.referencePathsDescription," "),r(2),F(i.referencePaths()),r(3),b("ngModel",i.newReferencePath())("placeholder",i.texts.project.referencePathsPlaceholder)("disabled",i.isPending("scan.referencePaths")),r(),b("label",i.texts.project.addPathLabel)("disabled",i.isPending("scan.referencePaths")||i.newReferencePath().trim().length===0)}},dependencies:[ie,Se,te,ne,ee,Ce,ke,we,Ee,Pe,re,oe],styles:["[_nghost-%COMP%]{display:block;height:100%;overflow-y:auto;padding:1.25rem 1.5rem}.settings-project__title[_ngcontent-%COMP%]{margin:0 0 .25rem;font-size:1.05rem;font-weight:600;color:var(--p-text-color)}.settings-project__intro[_ngcontent-%COMP%]{margin:0 0 1.25rem;font-size:.85rem;color:var(--sm-text-muted);line-height:1.5}.settings-project__row[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 1rem;border:1px solid var(--p-content-border-color);border-radius:.5rem;background:var(--p-content-background);margin-bottom:1rem}.settings-project__row[_ngcontent-%COMP%] > p-toggleswitch[_ngcontent-%COMP%]{flex:0 0 auto;align-self:center}.settings-project__list-row[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.75rem;padding:.85rem 1rem;border:1px solid var(--p-content-border-color);border-radius:.5rem;background:var(--p-content-background);margin-bottom:1rem}.settings-project__row-text[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem;flex:1 1 auto;min-width:0}.settings-project__row-label[_ngcontent-%COMP%]{font-size:.9rem;font-weight:600;color:var(--p-text-color)}.settings-project__row-description[_ngcontent-%COMP%]{font-size:.8rem;color:var(--sm-text-muted);line-height:1.45}.settings-project__path-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.settings-project__path-item[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.4rem .6rem;border-radius:.35rem;background:var(--p-content-hover-background)}.settings-project__path-text[_ngcontent-%COMP%]{font-family:var(--p-font-family-mono);font-size:.8rem;word-break:break-all;flex:1 1 auto}.settings-project__add-row[_ngcontent-%COMP%]{display:flex;gap:.5rem;align-items:center}.settings-project__add-row[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{flex:1 1 auto;font-family:var(--p-font-family-mono);font-size:.8rem}"],changeDetection:0})};function Ge(t){return t instanceof K||t instanceof Error?t.message:String(t)}var ci=()=>({width:"1024px",height:"720px",maxWidth:"92vw",maxHeight:"90vh"}),gi=(t,n)=>n.id;function pi(t,n){if(t&1){let e=I();l(0,"li")(1,"button",6),C("click",function(){let o=k(e).$implicit,c=a();return S(c.selectSection(o.id))}),l(2,"span",7),d(3),s()()()}if(t&2){let e=n.$implicit,i=a();r(),B("is-active",i.activeSection()===e.id),_("aria-current",i.activeSection()===e.id?"page":null)("data-testid","settings-nav-"+e.id),r(2),p(e.label)}}function ui(t,n){if(t&1){let e=I();l(0,"sm-settings-plugins",8),C("applied",function(){k(e);let o=a();return S(o.onPluginsApplied())}),s()}if(t&2){let e=a();b("visible",e.pluginsVisible())}}function mi(t,n){if(t&1&&T(0,"sm-settings-general",5),t&2){let e=a();b("visible",e.generalVisible())}}function _i(t,n){if(t&1&&T(0,"sm-settings-project",5),t&2){let e=a();b("visible",e.projectVisible())}}function hi(t,n){if(t&1&&T(0,"sm-settings-about",5),t&2){let e=a();b("visible",e.aboutVisible())}}function fi(t,n){t&1&&T(0,"sm-settings-changelog")}var bi=[{id:"general",label:w.sections.general},{id:"project",label:w.sections.project},{id:"plugins",label:w.sections.plugins},{id:"changelog",label:w.sections.changelog},{id:"about",label:w.sections.about}],tn=class t{visible=N.required();visibleChange=ve();confirmation=M(Z);pluginsPanel=gt(ce);texts=w;sections=bi;activeSection=v("plugins");pluginsVisible=y(()=>this.visible()&&this.activeSection()==="plugins");generalVisible=y(()=>this.visible()&&this.activeSection()==="general");projectVisible=y(()=>this.visible()&&this.activeSection()==="project");aboutVisible=y(()=>this.visible()&&this.activeSection()==="about");onVisibleChange(n){if(n){this.visibleChange.emit(!0);return}let e=this.pluginsPanel(),i=e?.dirtyIds().size??0;if(i===0){this.visibleChange.emit(!1);return}this.confirmation.confirm({header:this.texts.confirmCloseTitle,message:this.texts.confirmCloseBody(i),acceptLabel:this.texts.applyAndClose,rejectLabel:this.texts.discardChanges,acceptButtonProps:{severity:"primary"},rejectButtonProps:{severity:"secondary"},accept:()=>{e?.applyChanges()},reject:()=>{e?.discardChanges(),this.visibleChange.emit(!1)}})}selectSection(n){this.activeSection.set(n)}onPluginsApplied(){this.visibleChange.emit(!1)}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=A({type:t,selectors:[["sm-settings-modal"]],viewQuery:function(e,i){e&1&&st(i.pluginsPanel,ce,5),e&2&&lt()},inputs:{visible:[1,"visible"]},outputs:{visibleChange:"visibleChange"},features:[J([Z])],decls:13,vars:13,consts:[["contentStyleClass","settings-modal__content","data-testid","settings-modal",3,"visibleChange","visible","modal","draggable","resizable","closable","closeOnEscape","dismissableMask","header"],[1,"settings-modal__layout"],["data-testid","settings-modal-sidebar",1,"settings-modal__sidebar"],["role","list",1,"settings-modal__sidebar-list"],["data-testid","settings-modal-main",1,"settings-modal__main"],[3,"visible"],["type","button",1,"settings-modal__sidebar-item",3,"click"],[1,"settings-modal__sidebar-label"],[3,"applied","visible"]],template:function(e,i){if(e&1&&(l(0,"p-dialog",0),C("visibleChange",function(c){return i.onVisibleChange(c)}),l(1,"div",1)(2,"nav",2)(3,"ul",3),O(4,pi,4,5,"li",null,gi),s()(),l(6,"div",4),h(7,ui,1,1,"sm-settings-plugins",5)(8,mi,1,1,"sm-settings-general",5)(9,_i,1,1,"sm-settings-project",5)(10,hi,1,1,"sm-settings-about",5)(11,fi,1,0,"sm-settings-changelog"),s()(),T(12,"p-confirmdialog"),s()),e&2){let o;xe(dt(12,ci)),b("visible",i.visible())("modal",!0)("draggable",!1)("resizable",!1)("closable",!0)("closeOnEscape",!0)("dismissableMask",!0)("header",i.texts.modalTitle),r(2),_("aria-label",i.texts.modalTitle),r(2),F(i.sections),r(3),f((o=i.activeSection())==="plugins"?7:o==="general"?8:o==="project"?9:o==="about"?10:o==="changelog"?11:-1)}},dependencies:[ee,ke,we,yt,vt,Me,Te,Oe,ce,je],styles:["[_nghost-%COMP%]{display:contents}[_nghost-%COMP%] .settings-modal__content{padding:0;height:100%;display:flex;flex-direction:column;overflow:hidden}.settings-modal__layout[_ngcontent-%COMP%]{flex:1;display:grid;grid-template-columns:200px 1fr;min-height:0}.settings-modal__sidebar[_ngcontent-%COMP%]{border-right:1px solid var(--p-content-border-color);background:var(--p-content-background);padding:.5rem;overflow-y:auto}.settings-modal__sidebar-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.125rem}.settings-modal__sidebar-item[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%;padding:.5rem .75rem;border:none;border-radius:var(--p-border-radius);background:transparent;color:var(--p-text-color);font:inherit;text-align:left;cursor:pointer;transition:background .15s ease,color .15s ease}.settings-modal__sidebar-item[_ngcontent-%COMP%]:hover{background:var(--p-content-hover-background)}.settings-modal__sidebar-item.is-active[_ngcontent-%COMP%]{background:var(--p-highlight-background);color:var(--p-highlight-color)}.settings-modal__sidebar-label[_ngcontent-%COMP%]{flex:1;font-size:.9rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.settings-modal__main[_ngcontent-%COMP%]{min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column}.settings-modal__main[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{flex:1;min-height:0}"],changeDetection:0})};export{tn as SettingsModal};
@@ -0,0 +1 @@
1
+ import{J as r,O as s,Rb as n,W as l,ba as o,ca as d,gd as i,hd as c,ld as g}from"./chunk-NJ4PSNK3.js";var S={triggerLabel:"Settings",triggerTooltip:"Settings",modalTitle:"Settings",closeLabel:"Close",sections:{plugins:"Plugins",general:"General",project:"Project",changelog:"Changelog",about:"About"},general:{heading:"General",intro:"User-scope preferences. These settings live in your home directory (`~/.skill-map/settings.json`) and follow you across projects.",loadErrorPrefix:"Could not load preferences:",saveErrorPrefix:"Could not save preferences:",toggles:{"updateCheck.enabled":{label:"Check for updates",description:"Check npm for newer @skill-map/cli releases."}}},project:{heading:"Project",intro:"These settings apply only to this project and are saved in its `.skill-map/settings.local.json` file.",loadErrorPrefix:"Could not load project settings:",saveErrorPrefix:"Could not save project settings:",extraFoldersLabel:"Extra folders to scan",extraFoldersDescription:"Additional folders included in the scan. Their files show up in the graph next to this project. Use ~/ for paths inside your home folder. This is the only way to extend the scan beyond this project.",extraFoldersPlaceholder:"~/.claude/agents, /path/to/another/folder",referencePathsLabel:"Folders for link validation",referencePathsDescription:'Folders checked only to validate links. Files here are not indexed and do not appear in the graph, they just stop "broken link" warnings when a link points to a real file outside this project.',referencePathsPlaceholder:"~/Documents/research, ~/.claude",addPathLabel:"Add path",removePathLabel:"Remove",confirmDialogHeader:"Allow access to folders outside this project?",confirmDialogIntro:"This change lets the scan read files in:",confirmDialogAccept:"Allow access",confirmDialogReject:"Cancel"},changelogHeading:"Changelog",changelogIntro:"What's new in skill-map. Each entry covers a release of @skill-map/cli (the CLI + bundled UI) and lists the user-facing changes plus the workspace(s) each one affects.",changelogEmpty:"No release notes yet. Future releases will populate this list automatically from the changesets shipped in each PR.",changelogInternalRelease:"Internal release. Focus on stability, infra, and refactors. No user-facing changes this time.",changelogAffectedPackages:"Affected packages",aboutHeading:"About",aboutIntro:"Version information for the running CLI / server.",aboutCliLabel:"skill-map CLI",aboutSpecLabel:"Spec version",aboutSchemaLabel:"Schema version",aboutScopeLabel:"Scope",aboutFolderLabel:"Project folder",aboutDbLabel:"Project DB",aboutHomeLabel:"Skill-map home",aboutDbValue:(t,e)=>t==="present"?e:`${t} \xB7 ${e}`,aboutLoading:"Loading\u2026",aboutUnknown:"\u2014",aboutErrorPrefix:"Could not read health endpoint:",aboutLinksHeading:"Links",aboutWebsiteLabel:"Website",aboutGithubLabel:"GitHub",aboutWebsiteUrl:"https://skill-map.dev/",aboutGithubUrl:"https://github.com/crystian/skill-map",aboutStarHeading:"Enjoying skill-map?",aboutStarBody:"If it's useful to you, drop us a star on GitHub, it helps a lot and keeps the project alive.",aboutStarCta:"Star on GitHub",aboutStarA11y:"Open the skill-map repository on GitHub to give it a star",pluginsHeading:"Plugins",pluginsIntro:"Enable or disable installed plugins.",pluginsSearchPlaceholder:"Filter by name\u2026",pluginsSearchA11y:"Filter plugins by name",pluginsSearchEmpty:t=>`No plugins match "${t}".`,pluginsKindFilterAll:"All",pluginsKindFilterA11y:"Filter plugins by kind",pluginsKindFilterOptionA11y:(t,e)=>e?`Show only ${t} extensions`:"Show all kinds",unsavedChangesMessage:t=>t===1?'1 unsaved change. Click "Apply" to persist it.':`${t} unsaved changes. Click "Apply" to persist them.`,startsAsDisabledRowHint:"This plugin started disabled and is not loaded in memory. Restart `sm serve` for the change to take effect.",startsAsDisabledFooterHint:"Some plugins were disabled when the server started. Consider restarting `sm serve` so they take effect.",discardChanges:"Discard",applyAndClose:"Apply",discardA11y:"Discard pending plugin changes",applyA11y:"Apply pending plugin changes and refresh the graph",confirmCloseTitle:"Apply pending changes?",confirmCloseBody:t=>t===1?"You have 1 unsaved change.":`You have ${t} unsaved changes.`,keepEditing:"Keep editing",sourceBuiltIn:"Built-in",sourceProject:"Project",sourceGlobal:"Global",enabledLabel:"Enabled",disabledLabel:"Disabled",lockedLabel:"Locked",lockedTooltip:"Locked by the host (cannot be toggled).",expandLabel:"Show extensions",collapseLabel:"Hide extensions",statusFailure:{"incompatible-spec":"Incompatible spec version","invalid-manifest":"Invalid manifest","load-error":"Failed to load","id-collision":"Plugin id collision"},loading:"Loading plugins\u2026",empty:"No plugins installed.",errorPrefix:"Could not load plugins:",toggleErrorPrefix:"Toggle failed:",a11y:{triggerLabel:"Open settings",pluginToggle:(t,e)=>e?`Enable plugin ${t}`:`Disable plugin ${t}`,extensionToggle:(t,e)=>e?`Enable ${t}`:`Disable ${t}`,pluginRow:t=>`Plugin ${t} row`,extensionRow:t=>`Extension ${t} row`}};var u=class t{dataSource=s(i);status=o(null);isOutdated=n(()=>this.status()?.isOutdated===!0);latest=n(()=>this.status()?.latest??null);current=n(()=>this.status()?.current??null);async load(){try{let e=await this.dataSource.getUpdateStatus();this.status.set(e)}catch(e){let a=e instanceof Error?e.message:String(e);console.warn(`UpdateCheckService: fetch failed (${a})`)}}static \u0275fac=function(a){return new(a||t)};static \u0275prov=r({token:t,factory:t.\u0275fac,providedIn:"root"})};var h=class t{dataSource=s(i);loader=s(g);scanning=o(!1);scanError=o(null);async run(){if(!this.scanning()){this.scanning.set(!0),this.scanError.set(null);try{await this.dataSource.runScan(),await this.loader.load()}catch(e){let a=e instanceof c||e instanceof Error?e.message:String(e);this.scanError.set(a),console.warn(`scan-trigger failed: ${a}`)}finally{this.scanning.set(!1)}}}static \u0275fac=function(a){return new(a||t)};static \u0275prov=r({token:t,factory:t.\u0275fac,providedIn:"root"})};var m="skill-map.ui.theme",v="app-dark",k="dark",f="(prefers-color-scheme: dark)",b=class t{doc=s(l);mode=o(this.readInitial());systemPrefersDark=o(this.readSystemPref());resolved=n(()=>{let e=this.mode();return e==="auto"?this.systemPrefersDark()?"dark":"light":e});constructor(){this.subscribeToSystemPref(),d(()=>{let e=this.resolved()==="dark",a=this.doc.documentElement;a.classList.toggle(v,e),a.classList.toggle(k,e);try{this.doc.defaultView?.localStorage.setItem(m,this.mode())}catch{}})}toggle(){this.mode.update(e=>e==="auto"?"light":e==="light"?"dark":"auto")}set(e){this.mode.set(e)}readInitial(){try{let e=this.doc.defaultView?.localStorage.getItem(m);if(e==="auto"||e==="light"||e==="dark")return e}catch{}return"auto"}readSystemPref(){try{return this.doc.defaultView?.matchMedia(f).matches??!1}catch{return!1}}subscribeToSystemPref(){let e=this.doc.defaultView;if(!e||typeof e.matchMedia!="function")return;e.matchMedia(f).addEventListener("change",y=>{this.systemPrefersDark.set(y.matches)})}static \u0275fac=function(a){return new(a||t)};static \u0275prov=r({token:t,factory:t.\u0275fac,providedIn:"root"})};export{u as a,S as b,h as c,b as d};
@@ -20,8 +20,8 @@
20
20
  -->
21
21
  <link rel="icon" type="image/svg+xml" href="favicon.svg">
22
22
  <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
23
- <style>:root{--ff-white:#ffffff;--ff-black:#000000;--ff-gray-0:#ffffff;--ff-gray-25:#fcfcfc;--ff-gray-50:#f8f8f7;--ff-gray-75:#f2f2f0;--ff-gray-100:#e9e9e6;--ff-gray-150:#dcdcd7;--ff-gray-200:#c9c9c1;--ff-gray-300:#afafa5;--ff-gray-400:#8d8d81;--ff-gray-500:#69695f;--ff-gray-600:#505048;--ff-gray-700:#3c3c36;--ff-gray-800:#272722;--ff-gray-900:#1b1b18;--ff-gray-950:#141412;--ff-gray-1000:#0f0f0d;--ff-alpha-black-04:rgba(15, 15, 13, .04);--ff-alpha-black-06:rgba(15, 15, 13, .06);--ff-alpha-black-08:rgba(15, 15, 13, .08);--ff-alpha-black-10:rgba(15, 15, 13, .1);--ff-alpha-black-12:rgba(15, 15, 13, .12);--ff-alpha-black-15:rgba(15, 15, 13, .15);--ff-alpha-black-20:rgba(15, 15, 13, .2);--ff-alpha-black-30:rgba(15, 15, 13, .3);--ff-alpha-black-40:rgba(15, 15, 13, .4);--ff-alpha-black-60:rgba(15, 15, 13, .6);--ff-alpha-white-04:rgba(255, 255, 255, .04);--ff-alpha-white-06:rgba(255, 255, 255, .06);--ff-alpha-white-08:rgba(255, 255, 255, .08);--ff-alpha-white-10:rgba(255, 255, 255, .1);--ff-alpha-white-12:rgba(255, 255, 255, .12);--ff-alpha-white-15:rgba(255, 255, 255, .15);--ff-alpha-white-20:rgba(255, 255, 255, .2);--ff-alpha-white-30:rgba(255, 255, 255, .3);--ff-alpha-white-40:rgba(255, 255, 255, .4);--ff-alpha-white-60:rgba(255, 255, 255, .6);--ff-blue-100:#e8f2ff;--ff-blue-200:#bad8ff;--ff-blue-300:#7db7ff;--ff-blue-400:#4176ff;--ff-blue-500:#2759db;--ff-blue-600:#1b3f9e;--ff-green-100:#e7f7ef;--ff-green-300:#71c795;--ff-green-400:#2b9b5f;--ff-green-500:#1e7748;--ff-yellow-100:#fff5de;--ff-yellow-300:#e1b354;--ff-yellow-400:#bb8121;--ff-yellow-500:#916112;--ff-red-100:#feeceb;--ff-red-300:#e48d85;--ff-red-400:#c55245;--ff-red-500:#9e3a2f;--ff-radius-4:4px;--ff-radius-6:6px;--ff-radius-pill:999px;--ff-font-family-sans:"Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--ff-font-family-mono:ui-monospace, "SFMono-Regular", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;--ff-font-size-xs:12px;--ff-font-size-sm:14px;--ff-font-size-md:16px;--ff-font-size-lg:18px;--ff-shadow-1:0 1px 2px rgba(15, 15, 13, .05), 0 8px 20px rgba(15, 15, 13, .04);--ff-shadow-2:0 10px 28px rgba(15, 15, 13, .08), 0 3px 10px rgba(15, 15, 13, .05);--ff-shadow-3:0 18px 48px rgba(15, 15, 13, .12), 0 6px 16px rgba(15, 15, 13, .08)}:root{--ff-color-surface-page:var(--ff-gray-25);--ff-color-surface-canvas:var(--ff-gray-25);--ff-color-surface-card:var(--ff-white);--ff-color-surface-group:rgba(65, 118, 255, .14);--ff-color-surface-group-active:rgba(65, 118, 255, .2);--ff-color-surface-muted:var(--ff-gray-50);--ff-color-surface-soft:var(--ff-gray-75);--ff-color-surface-accent-soft:rgba(65, 118, 255, .1);--ff-color-border-default:var(--ff-alpha-black-12);--ff-color-border-subtle:var(--ff-alpha-black-08);--ff-color-border-strong:var(--ff-alpha-black-20);--ff-color-border-accent:var(--ff-blue-500);--ff-color-text-primary:var(--ff-gray-800);--ff-color-text-secondary:var(--ff-gray-500);--ff-color-text-tertiary:var(--ff-gray-400);--ff-color-text-inverse:var(--ff-white);--ff-color-accent:var(--ff-blue-500);--ff-color-accent-strong:var(--ff-blue-600);--ff-color-success:var(--ff-green-400);--ff-color-warning:var(--ff-yellow-400);--ff-color-danger:var(--ff-red-400);--ff-color-disabled-surface:var(--ff-gray-100);--ff-color-disabled-border:var(--ff-alpha-black-10);--ff-color-disabled-text:var(--ff-gray-300);--ff-color-selection-fill:rgba(65, 118, 255, .12);--ff-color-selection-stroke:rgba(65, 118, 255, .28);--ff-color-grid:var(--ff-alpha-black-08);--ff-color-grid-strong:var(--ff-alpha-black-15);--ff-color-connector-connected:var(--ff-blue-500);--ff-color-connection:var(--ff-gray-600);--ff-color-connection-muted:var(--ff-gray-300);--ff-color-connection-hover:var(--ff-alpha-black-12);--ff-color-grouping-drop-target-border:var(--ff-gray-800);--ff-color-grouping-drop-target-border-active:var(--ff-gray-800);--ff-color-waypoint-fill:var(--ff-white);--ff-color-waypoint-stroke:var(--ff-blue-500);--ff-color-waypoint-candidate-fill:var(--ff-white);--ff-color-waypoint-candidate-stroke:var(--ff-green-400);--ff-color-minimap-surface:var(--ff-white);--ff-color-minimap-node:var(--ff-gray-700);--ff-color-minimap-view:rgba(65, 118, 255, .14);--ff-color-magnetic-line:var(--ff-blue-500);--ff-color-magnetic-rect-fill:rgba(65, 118, 255, .08);--ff-color-magnetic-rect-border:rgba(65, 118, 255, .24);--ff-radius-node:var(--ff-radius-4);--ff-radius-group:var(--ff-radius-4);--ff-radius-control:var(--ff-radius-4);--ff-radius-socket-square:var(--ff-radius-6);--ff-radius-pill:var(--ff-radius-pill);--ff-font-sans:var(--ff-font-family-sans);--ff-font-mono:var(--ff-font-family-mono);--ff-font-size-body:var(--ff-font-size-sm);--ff-font-size-label:var(--ff-font-size-xs);--ff-shadow-surface:var(--ff-shadow-1);--ff-shadow-floating:var(--ff-shadow-2)}:root{--ff-flow-background-color:var(--ff-color-surface-page);--ff-flow-text-color:var(--ff-color-text-primary);--ff-flow-font-family:var(--ff-font-sans);--ff-flow-font-size:var(--ff-font-size-body);--ff-canvas-background-color:var(--ff-color-surface-canvas);--ff-node-background-color:var(--ff-color-surface-card);--ff-node-background-color-inverse:var(--ff-color-text-primary);--ff-node-border-color:var(--ff-color-border-default);--ff-node-border-color-selected:var(--ff-color-border-accent);--ff-node-color:var(--ff-color-text-primary);--ff-node-border-radius:var(--ff-radius-node);--ff-node-shadow:var(--ff-shadow-surface);--ff-node-shadow-selected:var(--ff-shadow-floating);--ff-node-width:120px;--ff-node-min-height:56px;--ff-node-padding:24px;--ff-group-background-color:var(--ff-color-surface-group);--ff-group-background-color-active:var(--ff-color-surface-group-active);--ff-group-border-color:var(--ff-color-border-subtle);--ff-group-border-color-selected:var(--ff-color-border-accent);--ff-group-border-color-active:var(--ff-color-border-accent);--ff-group-color:var(--ff-color-text-secondary);--ff-group-border-radius:var(--ff-radius-group);--ff-group-min-width:180px;--ff-group-min-height:120px;--ff-group-padding:24px;--ff-grouping-drop-target-border-color:var(--ff-color-grouping-drop-target-border);--ff-grouping-drop-target-border-style:dashed;--ff-grouping-drop-target-border-width:1px;--ff-grouping-drop-target-border-color-active:var(--ff-color-grouping-drop-target-border-active);--ff-grouping-drop-target-border-style-active:dashed;--ff-grouping-drop-target-border-width-active:2px;--ff-handle-background-color:var(--ff-color-surface-card);--ff-handle-border-color:var(--ff-color-border-strong);--ff-handle-color:var(--ff-color-text-secondary);--ff-handle-size:12px;--ff-handle-radius:var(--ff-radius-control);--ff-rotate-handle-size:16px;--ff-connector-background-color:var(--ff-color-surface-card);--ff-connector-border-color:var(--ff-color-border-default);--ff-connector-connected-color:var(--ff-color-connector-connected);--ff-connector-accent-color:var(--ff-color-accent);--ff-connector-disabled-color:var(--ff-color-disabled-surface);--ff-connector-disabled-border-color:var(--ff-color-disabled-border);--ff-connector-size:16px;--ff-connector-node-ring-color:var(--ff-canvas-background-color);--ff-outlet-background-color:var(--ff-color-surface-muted);--ff-outlet-border-color:var(--ff-color-border-default);--ff-outlet-color:var(--ff-color-accent);--ff-outlet-disabled-background-color:var(--ff-color-disabled-surface);--ff-outlet-disabled-border-color:var(--ff-color-disabled-border);--ff-outlet-disabled-color:var(--ff-color-disabled-text);--ff-outlet-border-radius:var(--ff-radius-pill);--ff-outlet-padding-y:6px;--ff-outlet-padding-x:12px;--ff-connection-color:var(--ff-color-connection);--ff-snap-connection-color:var(--ff-color-connection-muted);--ff-connection-hover-color:var(--ff-color-connection-hover);--ff-connection-selected-color:var(--ff-color-accent);--ff-connection-label-color:var(--ff-color-text-secondary);--ff-connection-content-color:var(--ff-node-color);--ff-connection-content-background-color:var(--ff-node-background-color);--ff-connection-content-border-color:var(--ff-node-border-color);--ff-connection-content-border-color-selected:var(--ff-connection-selected-color);--ff-connection-content-border-radius:var(--ff-node-border-radius);--ff-connection-content-font-size:13px;--ff-connection-content-padding-y:2px;--ff-connection-content-padding-x:8px;--ff-connection-width:2px;--ff-connection-hit-width:14px;--ff-connection-drag-handle-fill:var(--ff-color-surface-card);--ff-connection-drag-handle-stroke:var(--ff-color-accent);--ff-marker-color:var(--ff-connection-color);--ff-waypoint-fill:var(--ff-color-waypoint-fill);--ff-waypoint-stroke:var(--ff-color-waypoint-stroke);--ff-waypoint-candidate-fill:var(--ff-color-waypoint-candidate-fill);--ff-waypoint-candidate-stroke:var(--ff-color-waypoint-candidate-stroke);--ff-background-line-color:var(--ff-color-grid);--ff-background-dot-color:var(--ff-color-grid-strong);--ff-selection-area-color:var(--ff-color-selection-fill);--ff-selection-area-border-color:var(--ff-color-selection-stroke);--ff-minimap-background-color:var(--ff-color-minimap-surface);--ff-minimap-border-color:var(--ff-color-border-default);--ff-minimap-node-color:var(--ff-color-minimap-node);--ff-minimap-node-selected-color:var(--ff-color-accent);--ff-minimap-view-color:var(--ff-color-minimap-view);--ff-minimap-view-border-color:var(--ff-color-selection-stroke);--ff-minimap-border-radius:var(--ff-radius-node);--ff-minimap-shadow:var(--ff-shadow-floating);--ff-magnetic-line-color:var(--ff-color-magnetic-line);--ff-magnetic-rect-fill:var(--ff-color-magnetic-rect-fill);--ff-magnetic-rect-border-color:var(--ff-color-magnetic-rect-border);--ff-external-item-background-color:var(--ff-color-surface-card);--ff-external-item-border-color:var(--ff-color-border-default);--ff-external-item-color:var(--ff-color-text-primary);--ff-external-item-disabled-color:var(--ff-color-disabled-text);--ff-external-item-disabled-background-color:var(--ff-color-disabled-surface);--ff-external-item-border-radius:var(--ff-radius-node);--ff-external-item-shadow:var(--ff-shadow-surface);--ff-external-item-preview-shadow:var(--ff-shadow-floating);--ff-external-item-placeholder-background-color:var(--ff-color-surface-soft);--ff-external-item-placeholder-border-color:var(--ff-color-border-subtle)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}:root{--fa-family-brands:"Font Awesome 7 Brands";--fa-font-brands:normal 400 1em/1 var(--fa-family-brands)}:root{--fa-font-regular:normal 400 1em/1 var(--fa-family-classic)}:root{--fa-family-classic:"Font Awesome 7 Free";--fa-font-solid:normal 900 1em/1 var(--fa-family-classic);--fa-style-family-classic:var(--fa-family-classic)}:root{--sm-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--sm-bg-page:#f8fafc;--sm-bg-content:#ffffff;--sm-bg-hover:#f1f5f9;--sm-border:#e2e8f0;--sm-nav-active-bg:#eff6ff;--sm-violet-50:#F5F3FF;--sm-violet-100:#EDE9FE;--sm-violet-200:#DDD6FE;--sm-violet-300:#C4B5FD;--sm-violet-400:#A78BFA;--sm-violet-500:#8B5CF6;--sm-violet-600:#7C3AED;--sm-violet-700:#6D28D9;--sm-violet-800:#4C1D95;--sm-violet-900:#2E1065;--sm-edge-invokes:#f59e0b;--sm-edge-references:#3b82f6;--sm-edge-mentions:#9ca3af;--sm-edge-supersedes:#8b5cf6;--sm-link-in-bg:#e0e7ff;--sm-link-in-fg:#3730a3;--sm-link-out-bg:#fef3c7;--sm-link-out-fg:#92400e;--sm-severity-info:#1e3a8a;--sm-severity-success:#065f46;--sm-severity-warn:#ca8a04;--sm-severity-error:#991b1b;--sm-severity-info-bg:rgba(219, 234, 254, .35);--sm-severity-success-bg:rgba(209, 250, 229, .35);--sm-severity-warn-bg:rgba(254, 243, 199, .35);--sm-severity-error-bg:rgba(254, 226, 226, .35);--sm-stat-tokens-bg:rgba(59, 130, 246, .14);--sm-stat-bytes-bg:rgba(245, 158, 11, .16);--sm-shadow-topbar:0 1px 2px rgba(0, 0, 0, .03);--sm-shadow-eventlog:0 -4px 16px rgba(0, 0, 0, .08);--sm-shadow-floating:0 4px 14px rgba(0, 0, 0, .08);--sm-shadow-card:0 1px 2px rgba(0, 0, 0, .05);--sm-shadow-card-hover:0 3px 12px rgba(0, 0, 0, .12)}html,body{margin:0;padding:0;height:100dvh;overflow:hidden;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--sm-bg-page);color:var(--p-text-color)}*,*:before,*:after{box-sizing:border-box}</style><link rel="stylesheet" href="styles-M2FETVAG.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-M2FETVAG.css"></noscript></head>
23
+ <style>:root{--ff-white:#ffffff;--ff-black:#000000;--ff-gray-0:#ffffff;--ff-gray-25:#fcfcfc;--ff-gray-50:#f8f8f7;--ff-gray-75:#f2f2f0;--ff-gray-100:#e9e9e6;--ff-gray-150:#dcdcd7;--ff-gray-200:#c9c9c1;--ff-gray-300:#afafa5;--ff-gray-400:#8d8d81;--ff-gray-500:#69695f;--ff-gray-600:#505048;--ff-gray-700:#3c3c36;--ff-gray-800:#272722;--ff-gray-900:#1b1b18;--ff-gray-950:#141412;--ff-gray-1000:#0f0f0d;--ff-alpha-black-04:rgba(15, 15, 13, .04);--ff-alpha-black-06:rgba(15, 15, 13, .06);--ff-alpha-black-08:rgba(15, 15, 13, .08);--ff-alpha-black-10:rgba(15, 15, 13, .1);--ff-alpha-black-12:rgba(15, 15, 13, .12);--ff-alpha-black-15:rgba(15, 15, 13, .15);--ff-alpha-black-20:rgba(15, 15, 13, .2);--ff-alpha-black-30:rgba(15, 15, 13, .3);--ff-alpha-black-40:rgba(15, 15, 13, .4);--ff-alpha-black-60:rgba(15, 15, 13, .6);--ff-alpha-white-04:rgba(255, 255, 255, .04);--ff-alpha-white-06:rgba(255, 255, 255, .06);--ff-alpha-white-08:rgba(255, 255, 255, .08);--ff-alpha-white-10:rgba(255, 255, 255, .1);--ff-alpha-white-12:rgba(255, 255, 255, .12);--ff-alpha-white-15:rgba(255, 255, 255, .15);--ff-alpha-white-20:rgba(255, 255, 255, .2);--ff-alpha-white-30:rgba(255, 255, 255, .3);--ff-alpha-white-40:rgba(255, 255, 255, .4);--ff-alpha-white-60:rgba(255, 255, 255, .6);--ff-blue-100:#e8f2ff;--ff-blue-200:#bad8ff;--ff-blue-300:#7db7ff;--ff-blue-400:#4176ff;--ff-blue-500:#2759db;--ff-blue-600:#1b3f9e;--ff-green-100:#e7f7ef;--ff-green-300:#71c795;--ff-green-400:#2b9b5f;--ff-green-500:#1e7748;--ff-yellow-100:#fff5de;--ff-yellow-300:#e1b354;--ff-yellow-400:#bb8121;--ff-yellow-500:#916112;--ff-red-100:#feeceb;--ff-red-300:#e48d85;--ff-red-400:#c55245;--ff-red-500:#9e3a2f;--ff-radius-4:4px;--ff-radius-6:6px;--ff-radius-pill:999px;--ff-font-family-sans:"Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--ff-font-family-mono:ui-monospace, "SFMono-Regular", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;--ff-font-size-xs:12px;--ff-font-size-sm:14px;--ff-font-size-md:16px;--ff-font-size-lg:18px;--ff-shadow-1:0 1px 2px rgba(15, 15, 13, .05), 0 8px 20px rgba(15, 15, 13, .04);--ff-shadow-2:0 10px 28px rgba(15, 15, 13, .08), 0 3px 10px rgba(15, 15, 13, .05);--ff-shadow-3:0 18px 48px rgba(15, 15, 13, .12), 0 6px 16px rgba(15, 15, 13, .08)}:root{--ff-color-surface-page:var(--ff-gray-25);--ff-color-surface-canvas:var(--ff-gray-25);--ff-color-surface-card:var(--ff-white);--ff-color-surface-group:rgba(65, 118, 255, .14);--ff-color-surface-group-active:rgba(65, 118, 255, .2);--ff-color-surface-muted:var(--ff-gray-50);--ff-color-surface-soft:var(--ff-gray-75);--ff-color-surface-accent-soft:rgba(65, 118, 255, .1);--ff-color-border-default:var(--ff-alpha-black-12);--ff-color-border-subtle:var(--ff-alpha-black-08);--ff-color-border-strong:var(--ff-alpha-black-20);--ff-color-border-accent:var(--ff-blue-500);--ff-color-text-primary:var(--ff-gray-800);--ff-color-text-secondary:var(--ff-gray-500);--ff-color-text-tertiary:var(--ff-gray-400);--ff-color-text-inverse:var(--ff-white);--ff-color-accent:var(--ff-blue-500);--ff-color-accent-strong:var(--ff-blue-600);--ff-color-success:var(--ff-green-400);--ff-color-warning:var(--ff-yellow-400);--ff-color-danger:var(--ff-red-400);--ff-color-disabled-surface:var(--ff-gray-100);--ff-color-disabled-border:var(--ff-alpha-black-10);--ff-color-disabled-text:var(--ff-gray-300);--ff-color-selection-fill:rgba(65, 118, 255, .12);--ff-color-selection-stroke:rgba(65, 118, 255, .28);--ff-color-grid:var(--ff-alpha-black-08);--ff-color-grid-strong:var(--ff-alpha-black-15);--ff-color-connector-connected:var(--ff-blue-500);--ff-color-connection:var(--ff-gray-600);--ff-color-connection-muted:var(--ff-gray-300);--ff-color-connection-hover:var(--ff-alpha-black-12);--ff-color-grouping-drop-target-border:var(--ff-gray-800);--ff-color-grouping-drop-target-border-active:var(--ff-gray-800);--ff-color-waypoint-fill:var(--ff-white);--ff-color-waypoint-stroke:var(--ff-blue-500);--ff-color-waypoint-candidate-fill:var(--ff-white);--ff-color-waypoint-candidate-stroke:var(--ff-green-400);--ff-color-minimap-surface:var(--ff-white);--ff-color-minimap-node:var(--ff-gray-700);--ff-color-minimap-view:rgba(65, 118, 255, .14);--ff-color-magnetic-line:var(--ff-blue-500);--ff-color-magnetic-rect-fill:rgba(65, 118, 255, .08);--ff-color-magnetic-rect-border:rgba(65, 118, 255, .24);--ff-radius-node:var(--ff-radius-4);--ff-radius-group:var(--ff-radius-4);--ff-radius-control:var(--ff-radius-4);--ff-radius-socket-square:var(--ff-radius-6);--ff-radius-pill:var(--ff-radius-pill);--ff-font-sans:var(--ff-font-family-sans);--ff-font-mono:var(--ff-font-family-mono);--ff-font-size-body:var(--ff-font-size-sm);--ff-font-size-label:var(--ff-font-size-xs);--ff-shadow-surface:var(--ff-shadow-1);--ff-shadow-floating:var(--ff-shadow-2)}:root{--ff-flow-background-color:var(--ff-color-surface-page);--ff-flow-text-color:var(--ff-color-text-primary);--ff-flow-font-family:var(--ff-font-sans);--ff-flow-font-size:var(--ff-font-size-body);--ff-canvas-background-color:var(--ff-color-surface-canvas);--ff-node-background-color:var(--ff-color-surface-card);--ff-node-background-color-inverse:var(--ff-color-text-primary);--ff-node-border-color:var(--ff-color-border-default);--ff-node-border-color-selected:var(--ff-color-border-accent);--ff-node-color:var(--ff-color-text-primary);--ff-node-border-radius:var(--ff-radius-node);--ff-node-shadow:var(--ff-shadow-surface);--ff-node-shadow-selected:var(--ff-shadow-floating);--ff-node-width:120px;--ff-node-min-height:56px;--ff-node-padding:24px;--ff-group-background-color:var(--ff-color-surface-group);--ff-group-background-color-active:var(--ff-color-surface-group-active);--ff-group-border-color:var(--ff-color-border-subtle);--ff-group-border-color-selected:var(--ff-color-border-accent);--ff-group-border-color-active:var(--ff-color-border-accent);--ff-group-color:var(--ff-color-text-secondary);--ff-group-border-radius:var(--ff-radius-group);--ff-group-min-width:180px;--ff-group-min-height:120px;--ff-group-padding:24px;--ff-grouping-drop-target-border-color:var(--ff-color-grouping-drop-target-border);--ff-grouping-drop-target-border-style:dashed;--ff-grouping-drop-target-border-width:1px;--ff-grouping-drop-target-border-color-active:var(--ff-color-grouping-drop-target-border-active);--ff-grouping-drop-target-border-style-active:dashed;--ff-grouping-drop-target-border-width-active:2px;--ff-handle-background-color:var(--ff-color-surface-card);--ff-handle-border-color:var(--ff-color-border-strong);--ff-handle-color:var(--ff-color-text-secondary);--ff-handle-size:12px;--ff-handle-radius:var(--ff-radius-control);--ff-rotate-handle-size:16px;--ff-connector-background-color:var(--ff-color-surface-card);--ff-connector-border-color:var(--ff-color-border-default);--ff-connector-connected-color:var(--ff-color-connector-connected);--ff-connector-accent-color:var(--ff-color-accent);--ff-connector-disabled-color:var(--ff-color-disabled-surface);--ff-connector-disabled-border-color:var(--ff-color-disabled-border);--ff-connector-size:16px;--ff-connector-node-ring-color:var(--ff-canvas-background-color);--ff-outlet-background-color:var(--ff-color-surface-muted);--ff-outlet-border-color:var(--ff-color-border-default);--ff-outlet-color:var(--ff-color-accent);--ff-outlet-disabled-background-color:var(--ff-color-disabled-surface);--ff-outlet-disabled-border-color:var(--ff-color-disabled-border);--ff-outlet-disabled-color:var(--ff-color-disabled-text);--ff-outlet-border-radius:var(--ff-radius-pill);--ff-outlet-padding-y:6px;--ff-outlet-padding-x:12px;--ff-connection-color:var(--ff-color-connection);--ff-snap-connection-color:var(--ff-color-connection-muted);--ff-connection-hover-color:var(--ff-color-connection-hover);--ff-connection-selected-color:var(--ff-color-accent);--ff-connection-label-color:var(--ff-color-text-secondary);--ff-connection-content-color:var(--ff-node-color);--ff-connection-content-background-color:var(--ff-node-background-color);--ff-connection-content-border-color:var(--ff-node-border-color);--ff-connection-content-border-color-selected:var(--ff-connection-selected-color);--ff-connection-content-border-radius:var(--ff-node-border-radius);--ff-connection-content-font-size:13px;--ff-connection-content-padding-y:2px;--ff-connection-content-padding-x:8px;--ff-connection-width:2px;--ff-connection-hit-width:14px;--ff-connection-drag-handle-fill:var(--ff-color-surface-card);--ff-connection-drag-handle-stroke:var(--ff-color-accent);--ff-marker-color:var(--ff-connection-color);--ff-waypoint-fill:var(--ff-color-waypoint-fill);--ff-waypoint-stroke:var(--ff-color-waypoint-stroke);--ff-waypoint-candidate-fill:var(--ff-color-waypoint-candidate-fill);--ff-waypoint-candidate-stroke:var(--ff-color-waypoint-candidate-stroke);--ff-background-line-color:var(--ff-color-grid);--ff-background-dot-color:var(--ff-color-grid-strong);--ff-selection-area-color:var(--ff-color-selection-fill);--ff-selection-area-border-color:var(--ff-color-selection-stroke);--ff-minimap-background-color:var(--ff-color-minimap-surface);--ff-minimap-border-color:var(--ff-color-border-default);--ff-minimap-node-color:var(--ff-color-minimap-node);--ff-minimap-node-selected-color:var(--ff-color-accent);--ff-minimap-view-color:var(--ff-color-minimap-view);--ff-minimap-view-border-color:var(--ff-color-selection-stroke);--ff-minimap-border-radius:var(--ff-radius-node);--ff-minimap-shadow:var(--ff-shadow-floating);--ff-magnetic-line-color:var(--ff-color-magnetic-line);--ff-magnetic-rect-fill:var(--ff-color-magnetic-rect-fill);--ff-magnetic-rect-border-color:var(--ff-color-magnetic-rect-border);--ff-external-item-background-color:var(--ff-color-surface-card);--ff-external-item-border-color:var(--ff-color-border-default);--ff-external-item-color:var(--ff-color-text-primary);--ff-external-item-disabled-color:var(--ff-color-disabled-text);--ff-external-item-disabled-background-color:var(--ff-color-disabled-surface);--ff-external-item-border-radius:var(--ff-radius-node);--ff-external-item-shadow:var(--ff-shadow-surface);--ff-external-item-preview-shadow:var(--ff-shadow-floating);--ff-external-item-placeholder-background-color:var(--ff-color-surface-soft);--ff-external-item-placeholder-border-color:var(--ff-color-border-subtle)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}:root{--fa-family-brands:"Font Awesome 7 Brands";--fa-font-brands:normal 400 1em/1 var(--fa-family-brands)}:root{--fa-font-regular:normal 400 1em/1 var(--fa-family-classic)}:root{--fa-family-classic:"Font Awesome 7 Free";--fa-font-solid:normal 900 1em/1 var(--fa-family-classic);--fa-style-family-classic:var(--fa-family-classic)}:root{--sm-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--sm-radius-sm:3px;--sm-radius-md:4px;--sm-radius-lg:.5rem;--sm-radius-pill:999px;--sm-bg-page:#f8fafc;--sm-bg-content:#ffffff;--sm-bg-hover:#f1f5f9;--sm-border:#e2e8f0;--sm-nav-active-bg:#eff6ff;--sm-violet-50:#F5F3FF;--sm-violet-100:#EDE9FE;--sm-violet-200:#DDD6FE;--sm-violet-300:#C4B5FD;--sm-violet-400:#A78BFA;--sm-violet-500:#8B5CF6;--sm-violet-600:#7C3AED;--sm-violet-700:#6D28D9;--sm-violet-800:#4C1D95;--sm-violet-900:#2E1065;--sm-edge-invokes:#f59e0b;--sm-edge-references:#3b82f6;--sm-edge-mentions:#9ca3af;--sm-edge-supersedes:#8b5cf6;--sm-link-in-bg:#e0e7ff;--sm-link-in-fg:#3730a3;--sm-link-out-bg:#fef3c7;--sm-link-out-fg:#92400e;--sm-severity-info:#1e3a8a;--sm-severity-success:#065f46;--sm-severity-warn:#ca8a04;--sm-severity-error:#991b1b;--sm-severity-info-bg:rgba(219, 234, 254, .35);--sm-severity-success-bg:rgba(209, 250, 229, .35);--sm-severity-warn-bg:rgba(254, 243, 199, .35);--sm-severity-error-bg:rgba(254, 226, 226, .35);--sm-stat-tokens-bg:rgba(59, 130, 246, .14);--sm-stat-bytes-bg:rgba(245, 158, 11, .16);--sm-shadow-topbar:0 1px 2px rgba(0, 0, 0, .03);--sm-shadow-eventlog:0 -4px 16px rgba(0, 0, 0, .08);--sm-shadow-floating:0 4px 14px rgba(0, 0, 0, .08);--sm-shadow-card:0 1px 2px rgba(0, 0, 0, .05);--sm-shadow-card-hover:0 3px 12px rgba(0, 0, 0, .12)}html,body{margin:0;padding:0;height:100dvh;overflow:hidden;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--sm-bg-page);color:var(--p-text-color)}*,*:before,*:after{box-sizing:border-box}*{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--p-text-color) 30%,transparent) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background-color:color-mix(in srgb,var(--p-text-color) 25%,transparent);border-radius:var(--sm-radius-pill);border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background-color:color-mix(in srgb,var(--p-text-color) 45%,transparent)}</style><link rel="stylesheet" href="styles-ALBMEXCF.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-ALBMEXCF.css"></noscript></head>
24
24
  <body>
25
- <app-root></app-root>
26
- <link rel="modulepreload" href="chunk-MF2M6GYF.js"><link rel="modulepreload" href="chunk-V3SZQETX.js"><link rel="modulepreload" href="chunk-N366HMME.js"><link rel="modulepreload" href="chunk-25AWRVIC.js"><link rel="modulepreload" href="chunk-3R7E3HPC.js"><link rel="modulepreload" href="chunk-Q7L6LLAK.js"><script src="main-NIYE2VFS.js" type="module"></script></body>
25
+ <sm-root></sm-root>
26
+ <link rel="modulepreload" href="chunk-I7EELB7M.js"><link rel="modulepreload" href="chunk-4BVLXZO3.js"><link rel="modulepreload" href="chunk-SCSYN7U2.js"><link rel="modulepreload" href="chunk-NJ4PSNK3.js"><link rel="modulepreload" href="chunk-3R7E3HPC.js"><link rel="modulepreload" href="chunk-Q7L6LLAK.js"><script src="main-CVCJMGY5.js" type="module"></script></body>
27
27
  </html>
@@ -0,0 +1,2 @@
1
+ import{a as $e,b as W,c as je}from"./chunk-I7EELB7M.js";import{a as Ie,b as Pe,c as ke,d as Ae,e as Se,f as we,g as Ce,h as Re,i as Ee,j as Me,t as k,u as De,v as Ne}from"./chunk-4BVLXZO3.js";import{a as X,b as Fe,c as Ue,d as Be}from"./chunk-SCSYN7U2.js";import{$c as Q,Aa as me,Da as oe,Ga as ue,Ha as ge,Ia as P,J as E,Kc as Te,La as O,Lc as xe,Ma as L,N as F,O as s,Ra as g,Rb as m,S as U,Sa as l,T as B,Ta as p,Ua as y,X as le,_b as he,aa as pe,ad as J,ba as M,bb as H,ca as de,db as C,ed as Oe,f as ae,fb as _,gd as V,hd as c,id as N,ja as ce,jd as Le,kd as $,ld as G,m as x,ma as a,pc as fe,qc as ye,rb as se,rc as ve,sc as D,tc as be,ua as z,ub as u,uc as _e,vb as h,wb as K}from"./chunk-NJ4PSNK3.js";import"./chunk-3R7E3HPC.js";import"./chunk-Q7L6LLAK.js";var ze=[{path:"",pathMatch:"full",redirectTo:"graph"},{path:"graph",loadComponent:()=>import("./chunk-K47RR2IO.js").then(i=>i.GraphView),data:{title:"Graph"}},{path:"list",loadComponent:()=>import("./chunk-BMAKIDAV.js").then(i=>i.ListView),data:{title:"List"}},{path:"**",redirectTo:"graph"}];var I={errors:{unknownMode:i=>`SKILL_MAP_MODE: unknown value "${i}"`,restPrefix:i=>`BFF error [${i}]: `,malformedResponse:"BFF returned a malformed response",demoFetchFailed:(i,e)=>`Demo bundle fetch failed for "${i}": ${e}`,demoParseFailed:(i,e)=>`Demo bundle parse failed for "${i}": ${e}`,graphFormatNotInDemo:i=>`Graph format "${i}" is not bundled in demo mode (only "ascii").`}};function Y(i){let e=new TextEncoder().encode(i),t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}var d="/api",Z=class i{http;ws;kindRegistry;contributionsRegistry;constructor(e,t,n,r){this.http=e??s(D),this.ws=t??s($),this.kindRegistry=n??s(k),this.contributionsRegistry=r??s(W)}async health(){return this.getJson(`${d}/health`)}async loadScan(){let[e]=await Promise.all([this.getJson(`${d}/scan`),this.listNodes({limit:0}).catch(()=>null)]);return e}async runScan(){return this.patchJson(`${d}/scan`,{},"POST")}async listNodes(e={}){let t=tt(e),n=await this.getJson(`${d}/nodes${t}`);return this.ingestRegistry(n.kindRegistry),this.ingestContributionsRegistry(n.contributionsRegistry),n}async getNode(e,t={}){let n=Y(e),r=t.includeBody?"?include=body":"";try{let o=await this.getJson(`${d}/nodes/${n}${r}`);return this.ingestRegistry(o.kindRegistry),this.ingestContributionsRegistry(o.contributionsRegistry),o}catch(o){if(o instanceof c&&o.code==="not-found")return null;throw o}}async listLinks(e={}){let t=it(e),n=await this.getJson(`${d}/links${t}`);return this.ingestRegistry(n.kindRegistry),this.ingestContributionsRegistry(n.contributionsRegistry),n}async listIssues(e={}){let t=nt(e),n=await this.getJson(`${d}/issues${t}`);return this.ingestRegistry(n.kindRegistry),this.ingestContributionsRegistry(n.contributionsRegistry),n}async loadGraph(e="ascii"){let t=`${d}/graph?format=${encodeURIComponent(e)}`;try{return await x(this.http.get(t,{responseType:"text"}))}catch(n){throw this.translateError(n)}}async loadConfig(){let e=await this.getJson(`${d}/config`);return this.ingestRegistry(e.kindRegistry),this.ingestContributionsRegistry(e.contributionsRegistry),e.value}async listPlugins(){let e=await this.getJson(`${d}/plugins`);return this.ingestRegistry(e.kindRegistry),this.ingestContributionsRegistry(e.contributionsRegistry),e}async setPluginEnabled(e,t){let n=await this.patchJson(`${d}/plugins/${encodeURIComponent(e)}`,{enabled:t});return this.ingestRegistry(n.kindRegistry),this.ingestContributionsRegistry(n.contributionsRegistry),n}async setPluginExtensionEnabled(e,t,n){let r=await this.patchJson(`${d}/plugins/${encodeURIComponent(e)}/extensions/${encodeURIComponent(t)}`,{enabled:n});return this.ingestRegistry(r.kindRegistry),this.ingestContributionsRegistry(r.contributionsRegistry),r}async applyPluginChanges(e){let t=await this.patchJson(`${d}/plugins`,{changes:e});return this.ingestRegistry(t.kindRegistry),this.ingestContributionsRegistry(t.contributionsRegistry),t}async getPreferences(){return await this.getJson(`${d}/preferences`)}async setPreferences(e){return await this.patchJson(`${d}/preferences`,e)}async getProjectPreferences(){return await this.getJson(`${d}/project-preferences`)}async setProjectPreferences(e){return await this.patchJson(`${d}/project-preferences`,e)}async setFavorite(e){let t=Y(e);try{await x(this.http.put(`${d}/favorites/${t}`,null))}catch(n){throw this.translateError(n)}}async unsetFavorite(e){let t=Y(e);try{await x(this.http.delete(`${d}/favorites/${t}`))}catch(n){throw this.translateError(n)}}async bumpSidecar(e,t={}){let n={nodePath:e};return t.force!==void 0&&(n.force=t.force),t.confirm!==void 0&&(n.confirm=t.confirm),this.patchJson(`${d}/sidecar/bump`,n,"POST")}async getUpdateStatus(){return this.getJson(`${d}/update-status`)}async getRegisteredAnnotations(){return(await this.getJson(`${d}/annotations/registered`)).items}ingestRegistry(e){e&&this.kindRegistry.ingest(e)}ingestContributionsRegistry(e){this.contributionsRegistry.setRegistry(e)}async lookupContribution(e,t,n){let r=new URLSearchParams({path:n});try{return(await this.getJson(`${d}/contributions/${encodeURIComponent(e)}/${encodeURIComponent(t)}?${r.toString()}`)).items[0]??null}catch{return null}}events(){return this.ws.events$}async getJson(e){try{return await x(this.http.get(e))}catch(t){throw this.translateError(t)}}async patchJson(e,t,n="PATCH"){try{let r=n==="POST"?this.http.post(e,t):this.http.patch(e,t);return await x(r)}catch(r){throw this.translateError(r)}}translateError(e){if(e instanceof c)return e;if(e instanceof ve){let n=rt(e.error);return n?new c(n.error.code,n.error.message,n.error.details):new c("internal",e.message||I.errors.malformedResponse)}let t=e instanceof Error?e.message:String(e);return new c("internal",t)}static \u0275fac=function(t){return new(t||i)(F(D),F($),F(k),F(W))};static \u0275prov=E({token:i,factory:i.\u0275fac,providedIn:"root"})};function tt(i){let e=new URLSearchParams;i.kind&&i.kind.length>0&&e.set("kind",i.kind.join(",")),i.hasIssues!==void 0&&e.set("hasIssues",String(i.hasIssues)),i.path&&e.set("path",i.path),i.limit!==void 0&&e.set("limit",String(i.limit)),i.offset!==void 0&&e.set("offset",String(i.offset));let t=e.toString();return t?`?${t}`:""}function it(i){let e=new URLSearchParams;i.kind&&i.kind.length>0&&e.set("kind",i.kind.join(",")),i.from&&e.set("from",i.from),i.to&&e.set("to",i.to);let t=e.toString();return t?`?${t}`:""}function nt(i){let e=new URLSearchParams;i.severity&&e.set("severity",i.severity),i.analyzerId&&e.set("analyzerId",i.analyzerId),i.node&&e.set("node",i.node);let t=e.toString();return t?`?${t}`:""}function rt(i){if(typeof i!="object"||i===null)return null;let e=i;if(e.ok!==!1)return null;let t=e.error;if(typeof t!="object"||t===null)return null;let n=t;return typeof n.code!="string"||typeof n.message!="string"?null:{ok:!1,error:{code:n.code,message:n.message,details:n.details}}}var ot="data.json",st="data.meta.json",ee=class{constructor(e=globalThis.fetch.bind(globalThis),t){this.fetchImpl=e;this.kindRegistry=t??s(k)}metaPromise=null;dataPromise=null;kindRegistry;async health(){return(await this.loadMeta()).health}async loadScan(){let[e,t]=await Promise.all([this.loadData(),this.loadMeta()]);return this.kindRegistry.ingest(t.nodes.kindRegistry),e}async listNodes(e={}){let t=await this.loadMeta();if(at(e))return this.kindRegistry.ingest(t.nodes.kindRegistry),t.nodes;let n=await this.loadData(),r=n.issues,o=n.nodes;if(e.kind&&e.kind.length>0){let S=new Set(e.kind);o=o.filter(w=>S.has(w.kind))}if(e.path){let S=dt(e.path);o=o.filter(w=>S.test(w.path))}if(e.hasIssues===!0){let S=He(r);o=o.filter(w=>S.has(w.path))}else if(e.hasIssues===!1){let S=He(r);o=o.filter(w=>!S.has(w.path))}let f=o.length,b=e.offset??0,A=e.limit??1e3,v=o.slice(b,b+A);return this.kindRegistry.ingest(t.nodes.kindRegistry),{schemaVersion:"1",kind:"nodes",items:v,filters:{kind:e.kind??null,hasIssues:e.hasIssues??null,path:e.path?[e.path]:null},counts:{total:f,returned:v.length,page:{offset:b,limit:A}},kindRegistry:t.nodes.kindRegistry}}async getNode(e,t={}){let[n,r]=await Promise.all([this.loadData(),this.loadMeta()]),o=n.nodes.find(v=>v.path===e);if(!o)return null;let f=n.links.filter(v=>v.target===e),b=n.links.filter(v=>v.source===e),A=n.issues.filter(v=>v.nodeIds.includes(e));return this.kindRegistry.ingest(r.nodes.kindRegistry),{schemaVersion:"1",kind:"node",item:o,links:{incoming:f,outgoing:b},issues:A,kindRegistry:r.nodes.kindRegistry}}async listLinks(e={}){let t=await this.loadMeta();if(lt(e))return this.kindRegistry.ingest(t.links.kindRegistry),t.links;let r=(await this.loadData()).links;if(e.kind&&e.kind.length>0){let o=new Set(e.kind);r=r.filter(f=>o.has(f.kind))}return e.from&&(r=r.filter(o=>o.source===e.from)),e.to&&(r=r.filter(o=>o.target===e.to)),this.kindRegistry.ingest(t.links.kindRegistry),{schemaVersion:"1",kind:"links",items:r,filters:{kind:e.kind??null,from:e.from??null,to:e.to??null},counts:{total:r.length,returned:r.length},kindRegistry:t.links.kindRegistry}}async listIssues(e={}){let t=await this.loadMeta();if(pt(e))return this.kindRegistry.ingest(t.issues.kindRegistry),t.issues;let r=(await this.loadData()).issues;return e.severity&&(r=r.filter(o=>o.severity===e.severity)),e.analyzerId&&(r=r.filter(o=>o.analyzerId===e.analyzerId)),e.node&&(r=r.filter(o=>o.nodeIds.includes(e.node))),this.kindRegistry.ingest(t.issues.kindRegistry),{schemaVersion:"1",kind:"issues",items:r,filters:{severity:e.severity??null,analyzerId:e.analyzerId??null,node:e.node??null},counts:{total:r.length,returned:r.length},kindRegistry:t.issues.kindRegistry}}async loadGraph(e="ascii"){if(e!=="ascii")throw new c("bad-query",I.errors.graphFormatNotInDemo(e));return(await this.loadMeta()).graph.ascii}async loadConfig(){let e=await this.loadMeta();return this.kindRegistry.ingest(e.config.kindRegistry),e.config.value}async listPlugins(){let e=await this.loadMeta();return this.kindRegistry.ingest(e.plugins.kindRegistry),e.plugins}async setFavorite(e){throw new c("demo-readonly","Favorites are not available in demo mode (static bundle is immutable).")}async unsetFavorite(e){throw new c("demo-readonly","Favorites are not available in demo mode (static bundle is immutable).")}async setPluginEnabled(e,t){throw new c("demo-readonly","Plugin toggles are not available in demo mode (static bundle is immutable).")}async setPluginExtensionEnabled(e,t,n){throw new c("demo-readonly","Plugin toggles are not available in demo mode (static bundle is immutable).")}async applyPluginChanges(e){throw new c("demo-readonly","Plugin toggles are not available in demo mode (static bundle is immutable).")}async runScan(){throw new c("demo-readonly","Manual scan is not available in demo mode (static bundle is immutable).")}async getPreferences(){return{updateCheck:{enabled:!0}}}async setPreferences(e){throw new c("demo-readonly","Preference toggles are not available in demo mode (static bundle is immutable).")}async getProjectPreferences(){return{scan:{extraFolders:[],referencePaths:[]}}}async setProjectPreferences(e){throw new c("demo-readonly","Project preferences are not available in demo mode (static bundle is immutable).")}async lookupContribution(){return null}async bumpSidecar(e,t={}){throw new c("demo-readonly","Sidecar bump is not available in demo mode (static bundle is immutable).")}async getUpdateStatus(){return{current:(await this.loadMeta()).health.implVersion,latest:null,isOutdated:!1,checkedAt:null,shownAt:null}}async getRegisteredAnnotations(){return[]}events(){return ae}loadMeta(){return this.metaPromise||(this.metaPromise=this.fetchJson(st)),this.metaPromise}loadData(){return this.dataPromise||(this.dataPromise=this.fetchJson(ot)),this.dataPromise}async fetchJson(e){let t;try{t=await this.fetchImpl(e)}catch(n){let r=n instanceof Error?n.message:String(n);throw new c("internal",I.errors.demoFetchFailed(e,r))}if(!t.ok)throw new c("internal",I.errors.demoFetchFailed(e,`HTTP ${t.status}`));try{return await t.json()}catch(n){let r=n instanceof Error?n.message:String(n);throw new c("internal",I.errors.demoParseFailed(e,r))}}};function at(i){return!(i.kind&&i.kind.length>0||i.hasIssues!==void 0||i.path||i.offset!==void 0&&i.offset!==0||i.limit!==void 0)}function lt(i){return!(i.kind&&i.kind.length>0||i.from||i.to)}function pt(i){return!(i.severity||i.analyzerId||i.node)}function He(i){let e=new Set;for(let t of i)for(let n of t.nodeIds)e.add(n);return e}function dt(i){let t=i.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${t}$`)}function Ke(){let i=s(N);if(i==="live")return new Z(s(D),s($));if(i==="demo")return new ee;let e=i;throw new Error(I.errors.unknownMode(String(e)))}var j=class i{dataSource=s(V);status=M(null);cwd=m(()=>this.status()?.cwd??null);implVersion=m(()=>this.status()?.implVersion??null);async load(){try{let e=await this.dataSource.health();this.status.set(e)}catch(e){let t=e instanceof Error?e.message:String(e);console.warn(`ProjectInfoService: /api/health probe failed (${t})`)}}static \u0275fac=function(t){return new(t||i)};static \u0275prov=E({token:i,factory:i.\u0275fac,providedIn:"root"})};var Qe={providers:[pe(),Ce(ze,Re()),be(_e()),xe({}),oe(async()=>{let i=s(Te),[{default:e},{definePreset:t}]=await Promise.all([import("./chunk-FWFBO7KA.js"),import("./chunk-UJOZYR5I.js")]),n=t(e,{semantic:{primary:{50:"#F5F3FF",100:"#EDE9FE",200:"#DDD6FE",300:"#C4B5FD",400:"#A78BFA",500:"#8B5CF6",600:"#7C3AED",700:"#6D28D9",800:"#4C1D95",900:"#2E1065",950:"#1E0A4D"}}});i.setThemeConfig({theme:{preset:n,options:{darkModeSelector:".app-dark"}}})}),{provide:N,useFactory:Le},{provide:V,useFactory:Ke},oe(()=>{let i=s(G),e=s(X),t=s(j);i.load(),e.load(),t.load()})]};var te={brand:"skill-map",alpha:"ALPHA - do not use in production",nav:{graph:"Graph",list:"List",searchLabel:"Search nodes (coming soon)",searchTooltip:"Search (coming soon)",listLabel:"List view (coming soon)",listTooltip:"List (coming soon)"},actions:{},badge:{nodes:"nodes",graphInfo:(i,e)=>`Run scan
2
+ ${i.toLocaleString()} nodes \xB7 ${e.toLocaleString()} links`,graphInfoA11y:(i,e)=>`Graph contains ${i} nodes and ${e} links`},a11y:{viewSwitcher:"View switcher"},viewportWarning:{title:"Looks like you're on a small screen",subtitle:"skill-map is built for desktop",body:"The graph and inspector need room to breathe. Pop this open on a screen at least 768px wide. See you there."}};var R={toggleToAuto:"Switch to auto theme (follow system)",toggleToLight:"Switch to light theme",toggleToDark:"Switch to dark theme",currentAuto:"Auto theme (follows system)",currentLight:"Light theme",currentDark:"Dark theme"};var T={available:"Update available",tooltip:i=>`v${i} is available. Run \`npm i -g @skill-map/cli@latest\` to update.`,a11yLabel:i=>`Update available: version ${i}`,versionLabel:i=>`v${i}`,versionTooltip:i=>`skill-map CLI v${i}`,versionA11yLabel:i=>`Running version ${i}`};var Je="search",Ve="kinds",Ge="stabilities",We="hasIssues",Xe="staleOnly",Ye="favoritesOnly",ie=class i{filters=s(Ne);router=s(Ae);activatedRoute=s(Pe);kindRegistry=s(k);destroyRef=s(le);suppressUrlReadback=!1;constructor(){this.applyUrlToFilters(this.currentParams()),this.router.events.pipe(Oe(this.destroyRef)).subscribe(e=>{if(e instanceof Ie){if(this.suppressUrlReadback)return;this.applyUrlToFilters(this.currentParams())}}),de(()=>{let e=this.computeQueryParams();this.writeQueryParams(e)})}currentParams(){let e=this.router.parseUrl(this.router.url),t=new URLSearchParams;for(let[n,r]of Object.entries(e.queryParams))Array.isArray(r)?t.set(n,r.join(",")):r!=null&&t.set(n,String(r));return this.activatedRoute,t}applyUrlToFilters(e){let t=e.get(Je)??"";t!==this.filters.searchText()&&this.filters.setSearchText(t);let n=ct(e.get(Ve),this.kindRegistry.kinds().map(A=>A.name));Ze(n,this.filters.selectedKinds())||this.filters.setKinds(n);let r=mt(e.get(Ge));Ze(r,this.filters.selectedStabilities())||this.filters.setStabilities(r);let o=e.get(We)==="true";o!==this.filters.hasIssuesOnly()&&this.filters.setHasIssuesOnly(o);let f=e.get(Xe)==="true";f!==this.filters.staleOnly()&&this.filters.setStaleOnly(f);let b=e.get(Ye)==="true";b!==this.filters.favoritesOnly()&&this.filters.setFavoritesOnly(b)}computeQueryParams(){let e=this.filters.searchText().trim(),t=this.filters.selectedKinds(),n=this.filters.selectedStabilities(),r=this.filters.hasIssuesOnly(),o=this.filters.staleOnly(),f=this.filters.favoritesOnly();return{[Je]:e.length>0?e:null,[Ve]:t.length>0?t.join(","):null,[Ge]:n.length>0?n.join(","):null,[We]:r?"true":null,[Xe]:o?"true":null,[Ye]:f?"true":null}}writeQueryParams(e){let t=this.currentParams(),n=new Map(Object.entries(e)),r=!1;for(let[o,f]of n)if((t.get(o)??null)!==f){r=!0;break}r&&(this.suppressUrlReadback=!0,this.router.navigate([],{relativeTo:this.activatedRoute,queryParams:e,queryParamsHandling:"merge",replaceUrl:!0}).finally(()=>{setTimeout(()=>{this.suppressUrlReadback=!1},0)}))}static \u0275fac=function(t){return new(t||i)};static \u0275prov=E({token:i,factory:i.\u0275fac,providedIn:"root"})};function ct(i,e){if(!i)return[];let t=new Set(e);return i.split(",").map(n=>n.trim()).filter(n=>t.has(n))}function mt(i){if(!i)return[];let e=new Set(De);return i.split(",").map(t=>t.trim()).filter(t=>e.has(t))}function Ze(i,e){if(i.length!==e.length)return!1;for(let t=0;t<i.length;t++)if(i[t]!==e[t])return!1;return!0}var qe={body:"You are viewing a static demo of skill-map's UI. Install it:",installCommand:"npm i -g @skill-map/cli",homeCta:"\u2190 Back to skill-map.dev",homeHref:"/",dismissAria:"Dismiss demo banner"};function ht(i,e){if(i&1){let t=H();l(0,"div",0),y(1,"span",1),l(2,"p",2),u(3),l(4,"code",3),u(5),p()(),l(6,"a",4),u(7),p(),l(8,"p-button",5),C("onClick",function(){U(t);let r=_();return B(r.dismiss())}),p()()}if(i&2){let t=_();a(3),K(" ",t.texts.body," "),a(2),h(t.texts.installCommand),a(),g("href",t.texts.homeHref,ce),a(),h(t.texts.homeCta),a(),g("ariaLabel",t.texts.dismissAria)("text",!0)("rounded",!0)}}var et="sm.demoBannerDismissed",ne=class i{mode=s(N);texts=qe;dismissed=M(this.readDismissed());visible=m(()=>this.mode==="demo"&&!this.dismissed());dismiss(){this.dismissed.set(!0);try{globalThis.localStorage?.setItem(et,"1")}catch{}}readDismissed(){if(this.mode!=="demo")return!0;try{return globalThis.localStorage?.getItem(et)==="1"}catch{return!1}}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=z({type:i,selectors:[["sm-demo-banner"]],decls:1,vars:1,consts:[["role","status","data-testid","demo-banner",1,"demo-banner"],["aria-hidden","true",1,"demo-banner__icon","fa-solid","fa-circle-info"],[1,"demo-banner__body"],["data-testid","demo-banner-install",1,"demo-banner__cmd"],["data-testid","demo-banner-home",1,"demo-banner__home",3,"href"],["icon","fa-solid fa-xmark","severity","secondary","size","small","data-testid","demo-banner-dismiss",3,"onClick","ariaLabel","text","rounded"]],template:function(t,n){t&1&&O(0,ht,9,7,"div",0),t&2&&L(n.visible()?0:-1)},dependencies:[J,Q],styles:["[_nghost-%COMP%]{display:block}.demo-banner[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;border-bottom:1px solid var(--p-content-border-color);background:var(--p-highlight-background);color:var(--p-text-color);font-size:.875rem}.demo-banner__icon[_ngcontent-%COMP%]{font-size:1.1rem;color:var(--p-primary-color)}.demo-banner__body[_ngcontent-%COMP%]{flex:1 1 auto;margin:0;line-height:1.4}.demo-banner__cmd[_ngcontent-%COMP%]{font-family:var(--sm-font-mono);background:var(--p-content-background);border:1px solid var(--p-content-border-color);border-radius:var(--sm-radius-md);padding:.05rem .4rem;font-size:.85em;margin-left:.25rem}.demo-banner__home[_ngcontent-%COMP%]{color:var(--p-primary-color);font-weight:500;text-decoration:none;white-space:nowrap}.demo-banner__home[_ngcontent-%COMP%]:hover, .demo-banner__home[_ngcontent-%COMP%]:focus-visible{text-decoration:underline}"],changeDetection:0})};var ft=()=>[import("./chunk-QGRY6MDS.js").then(i=>i.SettingsModal)];function yt(i,e){if(i&1&&(l(0,"span",10),u(1),p()),i&2){let t=_();g("pTooltip",t.versionTooltip()),P("aria-label",t.versionA11y()),a(),h(t.versionLabel())}}function vt(i,e){if(i&1&&(l(0,"a",12),y(1,"i",26),l(2,"span"),u(3),p()()),i&2){let t=_();g("pTooltip",t.updateChipTooltip()),P("aria-label",t.updateChipA11y()),a(3),h(t.updateChipText)}}function bt(i,e){if(i&1&&(l(0,"p",13),u(1),p()),i&2){let t=_();a(),h(t.rootLabel())}}function _t(i,e){if(i&1){let t=H();l(0,"sm-settings-modal",27),C("visibleChange",function(r){U(t);let o=_();return B(o.settingsOpen.set(r))}),p()}if(i&2){let t=_();g("visible",t.settingsOpen())}}var re=class i{loader=s(G);theme=s(Be);projectInfo=s(j);scanTrigger=s(Ue);_filterUrlSync=s(ie);_debugSlots=s($e);updateCheck=s(X);texts=te;settingsTexts=Fe;settingsOpen=M(!1);openSettings(){this.settingsOpen.set(!0)}scanning=this.scanTrigger.scanning;scanError=this.scanTrigger.scanError;triggerScan(){return this.scanTrigger.run()}updateChipText=T.available;updateChipTooltip=m(()=>T.tooltip(this.updateCheck.latest()??""));updateChipA11y=m(()=>T.a11yLabel(this.updateCheck.latest()??""));versionLabel=m(()=>T.versionLabel(this.updateCheck.current()??""));versionTooltip=m(()=>T.versionTooltip(this.updateCheck.current()??""));versionA11y=m(()=>T.versionA11yLabel(this.updateCheck.current()??""));count=this.loader.count;linkCount=m(()=>this.loader.scan()?.links?.length??0);graphInfoTooltip=m(()=>te.badge.graphInfo(this.count(),this.linkCount()));graphInfoA11y=m(()=>te.badge.graphInfoA11y(this.count(),this.linkCount()));rootLabel=m(()=>{let e=this.projectInfo.cwd();if(e&&e!==".")return e;let t=this.loader.scan()?.roots??[];if(t.length===0)return"";let n=t[0].replace(/[\\/]+$/,"");return!n||n==="."?"":n});isDevMode=he();themeMode=this.theme.mode;markSrc=m(()=>this.theme.resolved()==="dark"?"skill-map-mark-light.svg":"skill-map-mark-dark.svg");themeIcon=m(()=>{switch(this.themeMode()){case"auto":return"pi pi-desktop";case"light":return"pi pi-sun";case"dark":return"fa-regular fa-moon"}});themeLabel=m(()=>{switch(this.themeMode()){case"auto":return R.toggleToLight;case"light":return R.toggleToDark;case"dark":return R.toggleToAuto}});themeTooltip=m(()=>{switch(this.themeMode()){case"auto":return R.currentAuto;case"light":return R.currentLight;case"dark":return R.currentDark}});toggleTheme(){this.theme.toggle()}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=z({type:i,selectors:[["sm-root"]],decls:40,vars:35,consts:[["role","alert","data-testid","viewport-warning",1,"viewport-warning"],[1,"viewport-warning__card"],["aria-hidden","true",1,"fa-solid","fa-desktop","viewport-warning__icon"],[1,"viewport-warning__title"],[1,"viewport-warning__subtitle"],[1,"viewport-warning__body"],["data-testid","shell",1,"shell"],["data-testid","shell-topbar",1,"shell__topbar"],[1,"shell__brand"],["width","32","height","32","priority","","alt","","aria-hidden","true",1,"shell__brand-mark",3,"ngSrc"],["tooltipPosition","bottom","data-testid","shell-version",1,"shell__version",3,"pTooltip"],[1,"shell__alpha"],["href","https://www.npmjs.com/package/@skill-map/cli","target","_blank","rel","noopener noreferrer","tooltipPosition","bottom","data-testid","shell-update-chip",1,"shell__update-chip",3,"pTooltip"],[1,"shell__tag"],["data-testid","shell-nav",1,"shell__nav"],["type","button","tooltipPosition","bottom","tabindex","-1","aria-disabled","true","data-testid","nav-search",1,"shell__nav-search",3,"pTooltip"],["aria-hidden","true",1,"pi","pi-search"],["slot","topbar.nav.start",3,"node"],["routerLink","/graph","routerLinkActive","is-active","data-testid","nav-graph"],["type","button","tooltipPosition","bottom","tabindex","-1","aria-disabled","true","data-testid","nav-list",1,"shell__nav-disabled",3,"pTooltip"],[1,"shell__actions"],["type","button","tooltipPosition","bottom","data-testid","shell-refresh",1,"shell__refresh",3,"click","pTooltip","disabled"],["aria-hidden","true",1,"pi","pi-sync"],["severity","secondary","size","small","data-testid","action-theme-toggle",3,"onClick","icon","ariaLabel","pTooltip","text","rounded"],["icon","pi pi-sliders-h","severity","secondary","size","small","data-testid","action-settings",3,"onClick","ariaLabel","pTooltip","text","rounded"],[1,"shell__main"],["aria-hidden","true",1,"pi","pi-download"],[3,"visibleChange","visible"]],template:function(t,n){if(t&1&&(l(0,"div",0)(1,"div",1),y(2,"i",2),l(3,"h2",3),u(4),p(),l(5,"p",4),u(6),p(),l(7,"p",5),u(8),p()()(),l(9,"div",6),y(10,"sm-demo-banner"),l(11,"header",7)(12,"div",8),y(13,"img",9),l(14,"div")(15,"h1"),u(16),O(17,yt,2,3,"span",10),l(18,"span",11),u(19),p(),O(20,vt,4,3,"a",12),p(),O(21,bt,2,1,"p",13),p()(),l(22,"nav",14)(23,"button",15),y(24,"i",16),p(),y(25,"sm-view-contributions-host",17),l(26,"a",18),u(27),p(),l(28,"button",19),u(29),p()(),l(30,"div",20)(31,"button",21),C("click",function(){return n.triggerScan()}),y(32,"i",22),p(),l(33,"p-button",23),C("onClick",function(){return n.toggleTheme()}),p(),l(34,"p-button",24),C("onClick",function(){return n.openSettings()}),p()()(),l(35,"main",25),y(36,"router-outlet"),p(),me(37,_t,1,1),ue(38,37,ft),p()),t&2){let r;a(4),h(n.texts.viewportWarning.title),a(2),h(n.texts.viewportWarning.subtitle),a(2),h(n.texts.viewportWarning.body),a(5),g("ngSrc",n.markSrc()),a(3),K(" ",n.texts.brand," "),a(),L((r=n.updateCheck.current())?17:-1,r),a(),P("aria-label",n.texts.alpha),a(),h(n.texts.alpha),a(),L(n.updateCheck.isOutdated()&&!n.isDevMode?20:-1),a(),L(n.rootLabel()?21:-1),a(),P("aria-label",n.texts.a11y.viewSwitcher),a(),g("pTooltip",n.texts.nav.searchTooltip),P("aria-label",n.texts.nav.searchLabel),a(2),g("node",null),a(2),h(n.texts.nav.graph),a(),g("pTooltip",n.texts.nav.listTooltip),P("aria-label",n.texts.nav.listLabel),a(),h(n.texts.nav.list),a(2),se("is-spinning",n.scanning()),g("pTooltip",n.graphInfoTooltip())("disabled",n.scanning()),P("aria-label",n.graphInfoA11y()),a(),se("pi-spin",n.scanning()),a(),g("icon",n.themeIcon())("ariaLabel",n.themeLabel())("pTooltip",n.themeTooltip())("text",!0)("rounded",!0),a(),g("ariaLabel",n.settingsTexts.a11y.triggerLabel)("pTooltip",n.settingsTexts.triggerTooltip)("text",!0)("rounded",!0),a(4),ge(n.settingsOpen())}},dependencies:[ke,Se,we,J,Q,Me,Ee,fe,ne,je],styles:["[_nghost-%COMP%]{display:block;height:100dvh;--shell-topbar-bg: #FFFFFF;--shell-topbar-border: var(--sm-violet-100);--shell-topbar-text: var(--sm-violet-800);--shell-topbar-text-strong: var(--sm-violet-900);--shell-topbar-text-muted: var(--sm-violet-600);--shell-topbar-hover-bg: color-mix(in srgb, var(--sm-violet-500) 10%, transparent);--shell-topbar-active-bg: var(--sm-violet-100);--shell-topbar-active-text: var(--sm-violet-800);--shell-topbar-badge-bg: var(--sm-violet-100)}.app-dark[_nghost-%COMP%], .app-dark [_nghost-%COMP%]{--shell-topbar-bg: #1A1B22;--shell-topbar-border: color-mix(in srgb, var(--sm-violet-300) 8%, transparent);--shell-topbar-text: var(--sm-violet-100);--shell-topbar-text-strong: var(--sm-violet-100);--shell-topbar-text-muted: var(--sm-violet-300);--shell-topbar-hover-bg: color-mix(in srgb, var(--sm-violet-400) 12%, transparent);--shell-topbar-active-bg: color-mix(in srgb, var(--sm-violet-500) 22%, transparent);--shell-topbar-active-text: var(--sm-violet-100);--shell-topbar-badge-bg: color-mix(in srgb, var(--sm-violet-500) 14%, transparent)}.shell[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100dvh}.shell__topbar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:1rem;padding:.75rem 1.5rem;background:color-mix(in srgb,var(--shell-topbar-bg) 85%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--shell-topbar-border);color:var(--shell-topbar-text)}.shell__brand[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem}.shell__brand-mark[_ngcontent-%COMP%]{width:2rem;height:2rem;display:block}.shell__brand[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{margin:0;font-size:1.05rem;font-weight:600;letter-spacing:-.01em;color:var(--shell-topbar-text-strong)}.shell__alpha[_ngcontent-%COMP%]{font-family:Geist,system-ui,sans-serif;font-weight:600;font-size:10px;line-height:1;letter-spacing:.06em;text-transform:uppercase;color:#ad322b;background:#ad322b14;border-radius:var(--sm-radius-sm);padding:4px 8px;margin-left:8px;-webkit-user-select:none;user-select:none;display:inline-block;vertical-align:middle;white-space:nowrap}.app-dark[_nghost-%COMP%] .shell__alpha[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .shell__alpha[_ngcontent-%COMP%]{color:#e07570;background:#cf464024}.shell__version[_ngcontent-%COMP%]{display:inline-block;margin-left:6px;padding:2px 6px;border-radius:var(--sm-radius-sm);font-family:var(--p-monospace-font-family);font-size:11px;line-height:1;font-weight:500;letter-spacing:.02em;color:var(--p-text-muted-color);background:var(--p-content-hover-background);vertical-align:middle;-webkit-user-select:text;user-select:text}.shell__update-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;margin-left:8px;padding:3px 8px;font-size:11px;line-height:1;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--p-primary-color);background:var(--p-primary-50);border:1px solid var(--p-primary-200);border-radius:var(--sm-radius-pill);text-decoration:none;transition:background-color .12s ease,color .12s ease;vertical-align:middle}.shell__update-chip[_ngcontent-%COMP%]:hover, .shell__update-chip[_ngcontent-%COMP%]:focus-visible{background:var(--p-primary-100);color:var(--p-primary-700)}.shell__update-chip[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:12px;transform:translateY(1px)}.app-dark[_nghost-%COMP%] .shell__update-chip[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .shell__update-chip[_ngcontent-%COMP%]{color:var(--p-primary-300);background:#ffffff0a;border-color:var(--p-primary-700)}.shell__tag[_ngcontent-%COMP%]{margin:.35rem 0 0;font-size:.72rem;color:var(--shell-topbar-text-muted);letter-spacing:.02em;text-transform:uppercase}.shell__nav[_ngcontent-%COMP%]{display:flex;gap:.25rem;margin-left:auto}.shell__nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{padding:.5rem .9rem;border-radius:.5rem;font-size:.9rem;font-weight:500;color:var(--shell-topbar-text-muted);transition:background .15s ease,color .15s ease}.shell__nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{background:var(--shell-topbar-hover-bg);color:var(--shell-topbar-text-strong)}.shell__nav[_ngcontent-%COMP%] a.is-active[_ngcontent-%COMP%]{background:var(--shell-topbar-active-bg);color:var(--shell-topbar-active-text)}.shell__nav-disabled[_ngcontent-%COMP%]{padding:.5rem .9rem;border:none;background:transparent;border-radius:.5rem;font-size:.9rem;font-weight:500;color:var(--shell-topbar-text-muted);cursor:not-allowed;opacity:.55;font-family:inherit}.shell__nav-search[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;padding:0;border:none;border-radius:.5rem;background:transparent;color:var(--shell-topbar-text-muted);cursor:not-allowed;opacity:.55;transition:background .15s ease,color .15s ease,opacity .15s ease}.shell__nav-search[_ngcontent-%COMP%]:hover:not([aria-disabled=true]){background:var(--shell-topbar-hover-bg);color:var(--shell-topbar-text-strong);opacity:1}.shell__nav-search[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:.95rem}.shell__actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem;--p-button-text-secondary-color: var(--shell-topbar-text-muted);--p-button-text-secondary-hover-color: var(--shell-topbar-text-strong);--p-button-text-secondary-hover-background: var(--shell-topbar-hover-bg);--p-button-text-secondary-active-color: var(--shell-topbar-text-strong);--p-button-text-secondary-active-background: var(--shell-topbar-hover-bg)}.shell__refresh[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:none;border-radius:var(--sm-radius-pill);background:transparent;color:var(--shell-topbar-text-muted);cursor:pointer;transition:background .15s ease,color .15s ease}.shell__refresh[_ngcontent-%COMP%]:hover:not(:disabled), .shell__refresh[_ngcontent-%COMP%]:focus-visible:not(:disabled){background:var(--shell-topbar-hover-bg);color:var(--shell-topbar-text-strong);outline:none}.shell__refresh[_ngcontent-%COMP%]:disabled{cursor:progress;opacity:.7}.shell__refresh[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:1rem}.shell__main[_ngcontent-%COMP%]{flex:1;min-height:0;overflow-y:auto;width:100%}@media(max-width:1280px){.shell__topbar[_ngcontent-%COMP%]{gap:1rem;padding:.5rem 1rem}.shell__tag[_ngcontent-%COMP%]{display:none}.shell__nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{padding:.4rem .7rem;font-size:.85rem}}.viewport-warning[_ngcontent-%COMP%]{display:none}@media(max-width:767px){.viewport-warning[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:var(--sm-bg-content)}.viewport-warning__card[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.85rem;max-width:22rem}.viewport-warning__icon[_ngcontent-%COMP%]{font-size:3rem;color:var(--p-primary-color);margin-bottom:.25rem}.viewport-warning__title[_ngcontent-%COMP%]{margin:0;font-size:1.35rem;font-weight:700;color:var(--p-text-color);line-height:1.25}.viewport-warning__subtitle[_ngcontent-%COMP%]{margin:0;font-size:1rem;font-weight:500;color:var(--p-primary-color);line-height:1.35}.viewport-warning__body[_ngcontent-%COMP%]{margin:0;color:var(--p-text-muted-color);line-height:1.5;font-size:.9rem}.shell[_ngcontent-%COMP%]{display:none}}"],changeDetection:0})};ye(re,Qe).catch(i=>console.error(i));