@skill-map/cli 0.46.0 → 0.47.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{a as Ht,b as Nt,c as Ui,d as qt,e as Yt,f as mn,g as Wt,h as hn,i as _n,j as Zt,k as hi,l as fn,m as gn,o as bn,p as yn,q as xn}from"./chunk-SF4FUT4U.js";import{a as Qe,b as Qt}from"./chunk-S32E6ZCZ.js";import{a as tn,b as ln,c as cn,e as dn,f as pn,g as un}from"./chunk-EYBKZOMF.js";import{a as ct,b as qi,d as $t,e as mt,f as an,g as on}from"./chunk-ERUALZOV.js";import{c as Wi,e as Zi,h as Ji,i as Xi,k as en,m as Ut,n as rn,p as sn}from"./chunk-K365TVPA.js";import{A as G,B as mi,C as Kt,D as Xe,E as dt,F as j,G as Qi,H as pt,I as Gt,J as Yi,R as jt,S as Ae,T as nn,U as ut,V as et,W as tt,X as $e,a as re,d as Hi,e as pi,f as zt,g as st,h as Ni,i as Ki,j as pe,k as Z,l as _e,m as ye,p as xe,q as Ke,r as $,s as $i,t as At,u as ui,v as qe,w as q,x as Ee,y as Gi,z as ji}from"./chunk-P4E74ZOS.js";import{A as Oi,D as Vi,F as Bi,J as Ri,O as It,R as Pi,T as Ne,U as Ze,V as Je,W as Li,X as St,a as Oe,aa as zi,b as li,ba as Mt,ca as Ai,k as si,l as ci,m as Di,n as Ei,p as di,t as ze,u as oe,v as We,w as Tt,x as Fi,z as kt}from"./chunk-4SG4352Z.js";import{g as Le,i as je,j as we,k as Ue,l as Ce,m as he,q as Ct}from"./chunk-VNA3TMIO.js";import{$b as le,Ab as H,Bb as O,Cb as V,Db as P,Gb as A,Hb as ce,Ib as I,Ic as C,Jc as W,K as Re,Ka as c,Kb as s,L as de,Lb as Rt,M as fe,Mb as lt,Nb as Me,O as ue,Ob as De,Pb as y,Q as N,Qb as x,Ta as Se,Ub as Pe,Vb as ve,W as _,Wb as gt,X as f,Xb as ke,Y as k,Yb as b,Za as E,Zb as T,_ as Vt,_a as ge,_b as K,ab as be,ac as bt,bb as R,ca as D,cb as p,cc as yt,d as rt,da as Ye,dc as xt,ec as vt,ha as Te,ic as me,ja as Bt,jc as oi,kc as Y,la as F,lb as w,lc as Ie,mb as Ii,mc as Pt,nb as Si,nc as ri,ob as te,oc as Lt,pb as ie,pc as wt,qc as Mi,rc as ae,ub as r,uc as ne,vb as u,wb as m,xb as S,yb as X,yc as se,zb as ee}from"./chunk-HAWX5WNM.js";import{a as Be,b as ot}from"./chunk-WCABR6TI.js";var vn=`
1
+ import{a as Ht,b as Nt,c as Ui,d as qt,e as Yt,f as mn,g as Wt,h as hn,i as _n,j as Zt,k as hi,l as fn,m as gn,o as bn,p as yn,q as xn}from"./chunk-7K36273M.js";import{a as Qe,b as Qt}from"./chunk-CO2ZOUSD.js";import{a as tn,b as ln,c as cn,e as dn,f as pn,g as un}from"./chunk-UIUGLD7F.js";import{a as ct,b as qi,d as $t,e as mt,f as an,g as on}from"./chunk-UV3QRBRR.js";import{c as Wi,e as Zi,h as Ji,i as Xi,k as en,m as Ut,n as rn,p as sn}from"./chunk-K365TVPA.js";import{A as G,B as mi,C as Kt,D as Xe,E as dt,F as j,G as Qi,H as pt,I as Gt,J as Yi,R as jt,S as Ae,T as nn,U as ut,V as et,W as tt,X as $e,a as re,d as Hi,e as pi,f as zt,g as st,h as Ni,i as Ki,j as pe,k as Z,l as _e,m as ye,p as xe,q as Ke,r as $,s as $i,t as At,u as ui,v as qe,w as q,x as Ee,y as Gi,z as ji}from"./chunk-WPUUCIS3.js";import{A as Oi,D as Vi,F as Bi,J as Ri,O as It,R as Pi,T as Ne,U as Ze,V as Je,W as Li,X as St,a as Oe,aa as zi,b as li,ba as Mt,ca as Ai,k as si,l as ci,m as Di,n as Ei,p as di,t as ze,u as oe,v as We,w as Tt,x as Fi,z as kt}from"./chunk-4SG4352Z.js";import{g as Le,i as je,j as we,k as Ue,l as Ce,m as he,q as Ct}from"./chunk-VNA3TMIO.js";import{$b as le,Ab as H,Bb as O,Cb as V,Db as P,Gb as A,Hb as ce,Ib as I,Ic as C,Jc as W,K as Re,Ka as c,Kb as s,L as de,Lb as Rt,M as fe,Mb as lt,Nb as Me,O as ue,Ob as De,Pb as y,Q as N,Qb as x,Ta as Se,Ub as Pe,Vb as ve,W as _,Wb as gt,X as f,Xb as ke,Y as k,Yb as b,Za as E,Zb as T,_ as Vt,_a as ge,_b as K,ab as be,ac as bt,bb as R,ca as D,cb as p,cc as yt,d as rt,da as Ye,dc as xt,ec as vt,ha as Te,ic as me,ja as Bt,jc as oi,kc as Y,la as F,lb as w,lc as Ie,mb as Ii,mc as Pt,nb as Si,nc as ri,ob as te,oc as Lt,pb as ie,pc as wt,qc as Mi,rc as ae,ub as r,uc as ne,vb as u,wb as m,xb as S,yb as X,yc as se,zb as ee}from"./chunk-HAWX5WNM.js";import{a as Be,b as ot}from"./chunk-WCABR6TI.js";var vn=`
2
2
  .p-datatable {
3
3
  position: relative;
4
4
  display: block;
@@ -30,5 +30,5 @@
30
30
  <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-font-display-brand:"Geist", system-ui, sans-serif;--sm-radius-sm:3px;--sm-radius-md:4px;--sm-radius-lg:.5rem;--sm-radius-pill:999px;--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}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)}:root{--sm-bg-page:#f8fafc;--sm-bg-content:#ffffff;--sm-bg-hover:#f1f5f9;--sm-border:#e2e8f0;--sm-nav-active-bg:#eff6ff;--sm-edge-invokes:#b8843a;--sm-edge-invokes-active:#f59e0b;--sm-edge-references:#7daa90;--sm-edge-references-active:#10b981;--sm-edge-mentions:#6fa2c0;--sm-edge-mentions-active:#0ea5e9;--sm-edge-supersedes:#9ca3af;--sm-edge-supersedes-active:#4b5563;--sm-edge-neutral:#6b7280;--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-accent-fg:#ffffff;--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)}</style><link rel="stylesheet" href="styles-HI4A6IWA.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-HI4A6IWA.css"></noscript></head>
31
31
  <body>
32
32
  <sm-root></sm-root>
33
- <link rel="modulepreload" href="chunk-F4RIBZ4P.js"><link rel="modulepreload" href="chunk-N3RUQDAR.js"><link rel="modulepreload" href="chunk-VW2A6WZ3.js"><link rel="modulepreload" href="chunk-S32E6ZCZ.js"><link rel="modulepreload" href="chunk-K365TVPA.js"><link rel="modulepreload" href="chunk-P4E74ZOS.js"><link rel="modulepreload" href="chunk-4SG4352Z.js"><link rel="modulepreload" href="chunk-ZZJ7XWDX.js"><link rel="modulepreload" href="chunk-EPBUSS3I.js"><link rel="modulepreload" href="chunk-VNA3TMIO.js"><script src="main-NF5GO3JR.js" type="module"></script></body>
33
+ <link rel="modulepreload" href="chunk-CRWK2NFZ.js"><link rel="modulepreload" href="chunk-3AKR33GE.js"><link rel="modulepreload" href="chunk-VW2A6WZ3.js"><link rel="modulepreload" href="chunk-CO2ZOUSD.js"><link rel="modulepreload" href="chunk-K365TVPA.js"><link rel="modulepreload" href="chunk-WPUUCIS3.js"><link rel="modulepreload" href="chunk-4SG4352Z.js"><link rel="modulepreload" href="chunk-ZZJ7XWDX.js"><link rel="modulepreload" href="chunk-EPBUSS3I.js"><link rel="modulepreload" href="chunk-VNA3TMIO.js"><script src="main-55GYZX6C.js" type="module"></script></body>
34
34
  </html>
@@ -0,0 +1,4 @@
1
+ import{a as J,b as w,c as pe,d as at,e as lt}from"./chunk-CRWK2NFZ.js";import{l as qe,m as ce,n as et,o as ee,p as ot}from"./chunk-3AKR33GE.js";import{a as fe,b as tt,c as nt,e as it,g as rt}from"./chunk-VW2A6WZ3.js";import{b as st}from"./chunk-CO2ZOUSD.js";import{i as We,k as Ye,l as Qe,m as Ge,n as V}from"./chunk-K365TVPA.js";import{D as se,E as ae,I as le,J as de,K as He,M as q,N as h,O as j,P as Xe,Q as U,R as B,X as Ze,n as Je,o as Ke}from"./chunk-WPUUCIS3.js";import"./chunk-4SG4352Z.js";import{b as $e,f as Ne,g as ze,h as oe,i as Fe,j as je,k as Ue,l as Be,m as Ve}from"./chunk-ZZJ7XWDX.js";import{a as Ee,b as Ie,c as Y,d as Ae,e as De,f as Le}from"./chunk-EPBUSS3I.js";import{s as Oe}from"./chunk-VNA3TMIO.js";import{$b as P,Ab as Z,Dc as Re,Gb as E,Ha as ne,Ib as M,Jb as ie,Ka as a,Kb as v,L as A,P as X,Q as s,Vb as Me,W as R,Wb as he,X as O,Yb as Te,Za as D,Zb as m,_b as b,aa as ke,db as Pe,ea as Ce,f as ye,ga as xe,gb as G,ha as z,ja as te,jb as we,kb as Se,lb as _,m as H,ob as k,pb as C,ub as y,uc as c,vb as l,wb as p,xb as x,xc as re,yb as F,zb as W}from"./chunk-HAWX5WNM.js";import"./chunk-WCABR6TI.js";var ve="skill-map",L={brand:ve,alpha:"ALPHA - do not use in production",devChip:"dev",devChipTooltip:"BFF launched from a local checkout (not the npm install).",devChipA11y:"Development build: BFF is running from a local checkout.",lensChipTooltip:t=>`Active lens: ${t}. The map reflects how ${t} interprets your files.`,lensChipA11y:t=>`Active provider lens: ${t}.`,nav:{map:"Map",files:"Files",searchLabel:"Search nodes by name or tag",searchTooltip:"Search",searchPlaceholder:"Search by name or tag...",searchAriaLabel:"Search nodes by name or tag",searchClearLabel:"Clear search"},actions:{},badge:{nodes:"nodes",mapInfo:(t,n)=>{let e=`Run scan
2
+ ${t.toLocaleString()} nodes \xB7 ${n.raw.toLocaleString()} links`;if(n.raw===n.drawn)return e;let i=[],r=n.brokenSource+n.brokenTarget;return r>0&&i.push(`${r} broken`),n.selfLoops>0&&i.push(`${n.selfLoops} self-loop${n.selfLoops===1?"":"s"}`),n.duplicates>0&&i.push(`${n.duplicates} duplicate${n.duplicates===1?"":"s"}`),`${e}
3
+ ${n.drawn.toLocaleString()} drawn (${i.join(", ")})`},mapInfoA11y:(t,n)=>`Map contains ${t} nodes and ${n.raw} links; ${n.drawn} drawn on the canvas`},a11y:{viewSwitcher:"View switcher"},viewportWarning:{title:"Looks like you're on a small screen",subtitle:"skill-map is built for desktop",body:"The map and inspector need room to breathe. Pop this open on a screen at least 768px wide. See you there."},documentTitle:(t,n)=>{let e=t?`${t} - ${ve}`:ve;return n?`${e} v${n}`:e}};var dt=[{path:"",pathMatch:"full",redirectTo:"map"},{path:"map",loadComponent:()=>import("./chunk-XWU3YFSM.js").then(t=>t.GraphView),title:L.nav.map},{path:"files",loadComponent:()=>import("./chunk-YOF6HQCQ.js").then(t=>t.FilesView),title:L.nav.files},{path:"intentional-fail",loadComponent:()=>import("./chunk-22CKFAEU.js").then(t=>t.IntentionalFail)},{path:"**",redirectTo:"map"}];var $={errors:{unknownMode:t=>`SKILL_MAP_MODE: unknown value "${t}"`,restPrefix:t=>`BFF error [${t}]: `,malformedResponse:"BFF returned a malformed response",demoFetchFailed:(t,n)=>`Demo bundle fetch failed for "${t}": ${n}`,demoParseFailed:(t,n)=>`Demo bundle parse failed for "${t}": ${n}`,graphFormatNotInDemo:t=>`Graph format "${t}" is not bundled in demo mode (only "ascii").`}};function me(t){let n=new TextEncoder().encode(t),e="";for(let i=0;i<n.length;i++)e+=String.fromCharCode(n[i]);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}var g="/api",ct=(()=>{class t{http;ws;kindRegistry;providerRegistry;contributionsRegistry;constructor(e,i,r,o,d){this.http=e??s(Y),this.ws=i??s(U),this.kindRegistry=r??s(V),this.contributionsRegistry=o??s(ce),this.providerRegistry=d??s(J)}async health(){return this.getJson(`${g}/health`)}async loadScan(){let[e]=await Promise.all([this.getJson(`${g}/scan`),this.listNodes({limit:0}).catch(()=>null)]);return e}async runScan(){return this.patchJson(`${g}/scan`,{},"POST")}async listNodes(e={}){let i=jt(e),r=await this.getJson(`${g}/nodes${i}`);return this.ingestRegistry(r.kindRegistry),this.ingestContributionsRegistry(r.contributionsRegistry),this.ingestProviderRegistry(r.providerRegistry),r}async getNode(e,i={}){let r=me(e),o=i.includeBody?"?include=body":"";try{let d=await this.getJson(`${g}/nodes/${r}${o}`);return this.ingestRegistry(d.kindRegistry),this.ingestContributionsRegistry(d.contributionsRegistry),this.ingestProviderRegistry(d.providerRegistry),d}catch(d){if(d instanceof h&&d.code==="not-found")return null;throw d}}async listLinks(e={}){let i=Ut(e),r=await this.getJson(`${g}/links${i}`);return this.ingestRegistry(r.kindRegistry),this.ingestContributionsRegistry(r.contributionsRegistry),this.ingestProviderRegistry(r.providerRegistry),r}async listIssues(e={}){let i=Bt(e),r=await this.getJson(`${g}/issues${i}`);return this.ingestRegistry(r.kindRegistry),this.ingestContributionsRegistry(r.contributionsRegistry),this.ingestProviderRegistry(r.providerRegistry),r}async loadGraph(e="ascii"){let i=`${g}/graph?format=${encodeURIComponent(e)}`;try{return await H(this.http.get(i,{responseType:"text"}))}catch(r){throw this.translateError(r)}}async loadConfig(){let e=await this.getJson(`${g}/config`);return this.ingestRegistry(e.kindRegistry),this.ingestContributionsRegistry(e.contributionsRegistry),this.ingestProviderRegistry(e.providerRegistry),e.value}async listPlugins(){let e=await this.getJson(`${g}/plugins`);return this.ingestRegistry(e.kindRegistry),this.ingestContributionsRegistry(e.contributionsRegistry),this.ingestProviderRegistry(e.providerRegistry),e}async setPluginEnabled(e,i){let r=await this.patchJson(`${g}/plugins/${encodeURIComponent(e)}`,{enabled:i});return this.ingestRegistry(r.kindRegistry),this.ingestContributionsRegistry(r.contributionsRegistry),this.ingestProviderRegistry(r.providerRegistry),r}async setPluginExtensionEnabled(e,i,r){let o=await this.patchJson(`${g}/plugins/${encodeURIComponent(e)}/extensions/${encodeURIComponent(i)}`,{enabled:r});return this.ingestRegistry(o.kindRegistry),this.ingestContributionsRegistry(o.contributionsRegistry),this.ingestProviderRegistry(o.providerRegistry),o}async applyPluginChanges(e){let i=await this.patchJson(`${g}/plugins`,{changes:e});return this.ingestRegistry(i.kindRegistry),this.ingestContributionsRegistry(i.contributionsRegistry),this.ingestProviderRegistry(i.providerRegistry),i}async getPreferences(){return await this.getJson(`${g}/preferences`)}async setPreferences(e){return await this.patchJson(`${g}/preferences`,e)}async getProjectPreferences(){return await this.getJson(`${g}/project-preferences`)}async setProjectPreferences(e){return await this.patchJson(`${g}/project-preferences`,e)}async getProjectIgnore(){return await this.getJson(`${g}/project-ignore`)}async setProjectIgnore(e){return await this.patchJson(`${g}/project-ignore`,e)}async getActiveProvider(){return await this.getJson(`${g}/active-provider`)}async setActiveProvider(e){return await this.patchJson(`${g}/active-provider`,{activeProvider:e})}async setFavorite(e){let i=me(e);try{await H(this.http.put(`${g}/favorites/${i}`,null))}catch(r){throw this.translateError(r)}}async unsetFavorite(e){let i=me(e);try{await H(this.http.delete(`${g}/favorites/${i}`))}catch(r){throw this.translateError(r)}}async bumpSidecar(e,i={}){let r={nodePath:e};return i.force!==void 0&&(r.force=i.force),i.confirm!==void 0&&(r.confirm=i.confirm),this.patchJson(`${g}/sidecar/bump`,r,"POST")}async getUpdateStatus(){return this.getJson(`${g}/update-status`)}async getRegisteredAnnotations(){return(await this.getJson(`${g}/annotations/registered`)).items}ingestRegistry(e){e&&this.kindRegistry.ingest(e)}ingestProviderRegistry(e){e&&this.providerRegistry.ingest(e)}ingestContributionsRegistry(e){this.contributionsRegistry.setRegistry(e)}async lookupContribution(e,i,r){let o=new URLSearchParams({path:r});try{return(await this.getJson(`${g}/contributions/${encodeURIComponent(e)}/${encodeURIComponent(i)}?${o.toString()}`)).items[0]??null}catch{return null}}events(){return this.ws.events$}async getJson(e){try{return await H(this.http.get(e))}catch(i){throw this.translateError(i)}}async patchJson(e,i,r="PATCH"){try{let o=r==="POST"?this.http.post(e,i):this.http.patch(e,i);return await H(o)}catch(o){throw this.translateError(o)}}translateError(e){if(e instanceof h)return e;if(e instanceof Ie){let r=Vt(e.error);return r?new h(r.error.code,r.error.message,r.error.details):new h("internal",e.message||$.errors.malformedResponse)}let i=e instanceof Error?e.message:String(e);return new h("internal",i)}static \u0275fac=function(i){return new(i||t)(X(Y),X(U),X(V),X(ce),X(J))};static \u0275prov=A({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function jt(t){let n=new URLSearchParams;t.kind&&t.kind.length>0&&n.set("kind",t.kind.join(",")),t.hasIssues!==void 0&&n.set("hasIssues",String(t.hasIssues)),t.path&&n.set("path",t.path),t.limit!==void 0&&n.set("limit",String(t.limit)),t.offset!==void 0&&n.set("offset",String(t.offset));let e=n.toString();return e?`?${e}`:""}function Ut(t){let n=new URLSearchParams;t.kind&&t.kind.length>0&&n.set("kind",t.kind.join(",")),t.from&&n.set("from",t.from),t.to&&n.set("to",t.to);let e=n.toString();return e?`?${e}`:""}function Bt(t){let n=new URLSearchParams;t.severity&&n.set("severity",t.severity),t.analyzerId&&n.set("analyzerId",t.analyzerId),t.node&&n.set("node",t.node),t.nodes&&t.nodes.length>0&&n.set("nodes",t.nodes.join(","));let e=n.toString();return e?`?${e}`:""}function Vt(t){if(typeof t!="object"||t===null)return null;let n=t;if(n.ok!==!1)return null;let e=n.error;if(typeof e!="object"||e===null)return null;let i=e;return typeof i.code!="string"||typeof i.message!="string"?null:{ok:!1,error:{code:i.code,message:i.message,details:i.details}}}var Jt="data.json",Kt="data.meta.json",ge=class{fetchImpl;metaPromise=null;dataPromise=null;kindRegistry;providerRegistry;constructor(n=globalThis.fetch.bind(globalThis),e,i){this.fetchImpl=n,this.kindRegistry=e??s(V),this.providerRegistry=i??s(J)}async health(){return(await this.loadMeta()).health}async loadScan(){let[n,e]=await Promise.all([this.loadData(),this.loadMeta()]);return this.kindRegistry.ingest(e.nodes.kindRegistry),this.providerRegistry.ingest(e.nodes.providerRegistry),n}async listNodes(n={}){let e=await this.loadMeta();if(Ht(n))return this.kindRegistry.ingest(e.nodes.kindRegistry),this.providerRegistry.ingest(e.nodes.providerRegistry),e.nodes;let i=await this.loadData(),r=i.issues,o=i.nodes;if(n.kind&&n.kind.length>0){let I=new Set(n.kind);o=o.filter(T=>I.has(T.kind))}if(n.path){let I=Yt(n.path);o=o.filter(T=>I.test(T.path))}if(n.hasIssues===!0){let I=pt(r);o=o.filter(T=>I.has(T.path))}else if(n.hasIssues===!1){let I=pt(r);o=o.filter(T=>!I.has(T.path))}let d=o.length,u=n.offset??0,S=n.limit??1e3,f=o.slice(u,u+S);return this.kindRegistry.ingest(e.nodes.kindRegistry),this.providerRegistry.ingest(e.nodes.providerRegistry),{schemaVersion:"1",kind:"nodes",items:f,filters:{kind:n.kind??null,hasIssues:n.hasIssues??null,path:n.path?[n.path]:null},counts:{total:d,returned:f.length,page:{offset:u,limit:S}},kindRegistry:e.nodes.kindRegistry,providerRegistry:e.nodes.providerRegistry}}async getNode(n,e={}){let[i,r]=await Promise.all([this.loadData(),this.loadMeta()]),o=i.nodes.find(f=>f.path===n);if(!o)return null;let d=i.links.filter(f=>f.target===n),u=i.links.filter(f=>f.source===n),S=i.issues.filter(f=>f.nodeIds.includes(n));return this.kindRegistry.ingest(r.nodes.kindRegistry),this.providerRegistry.ingest(r.nodes.providerRegistry),{schemaVersion:"1",kind:"node",item:o,links:{incoming:d,outgoing:u},issues:S,kindRegistry:r.nodes.kindRegistry,providerRegistry:r.nodes.providerRegistry}}async listLinks(n={}){let e=await this.loadMeta();if(Xt(n))return this.kindRegistry.ingest(e.links.kindRegistry),this.providerRegistry.ingest(e.links.providerRegistry),e.links;let r=(await this.loadData()).links;if(n.kind&&n.kind.length>0){let o=new Set(n.kind);r=r.filter(d=>o.has(d.kind))}return n.from&&(r=r.filter(o=>o.source===n.from)),n.to&&(r=r.filter(o=>o.target===n.to)),this.kindRegistry.ingest(e.links.kindRegistry),this.providerRegistry.ingest(e.links.providerRegistry),{schemaVersion:"1",kind:"links",items:r,filters:{kind:n.kind??null,from:n.from??null,to:n.to??null},counts:{total:r.length,returned:r.length},kindRegistry:e.links.kindRegistry,providerRegistry:e.links.providerRegistry}}async listIssues(n={}){let e=await this.loadMeta();if(Wt(n))return this.kindRegistry.ingest(e.issues.kindRegistry),this.providerRegistry.ingest(e.issues.providerRegistry),e.issues;let r=(await this.loadData()).issues;if(n.severity&&(r=r.filter(o=>o.severity===n.severity)),n.analyzerId&&(r=r.filter(o=>o.analyzerId===n.analyzerId)),n.node&&(r=r.filter(o=>o.nodeIds.includes(n.node))),n.nodes&&n.nodes.length>0){let o=new Set(n.nodes);r=r.filter(d=>d.nodeIds.some(u=>o.has(u)))}return this.kindRegistry.ingest(e.issues.kindRegistry),this.providerRegistry.ingest(e.issues.providerRegistry),{schemaVersion:"1",kind:"issues",items:r,filters:{severity:n.severity??null,analyzerId:n.analyzerId??null,node:n.node??null,nodes:n.nodes&&n.nodes.length>0?[...n.nodes]:null},counts:{total:r.length,returned:r.length},kindRegistry:e.issues.kindRegistry,providerRegistry:e.issues.providerRegistry}}async loadGraph(n="ascii"){if(n!=="ascii")throw new h("bad-query",$.errors.graphFormatNotInDemo(n));return(await this.loadMeta()).graph.ascii}async loadConfig(){let n=await this.loadMeta();return this.kindRegistry.ingest(n.config.kindRegistry),this.providerRegistry.ingest(n.config.providerRegistry),n.config.value}async listPlugins(){let n=await this.loadMeta();return this.kindRegistry.ingest(n.plugins.kindRegistry),this.providerRegistry.ingest(n.plugins.providerRegistry),n.plugins}async setFavorite(n){throw new h("demo-readonly","Favorites are not available in demo mode (static bundle is immutable).")}async unsetFavorite(n){throw new h("demo-readonly","Favorites are not available in demo mode (static bundle is immutable).")}async setPluginEnabled(n,e){throw new h("demo-readonly","Plugin toggles are not available in demo mode (static bundle is immutable).")}async setPluginExtensionEnabled(n,e,i){throw new h("demo-readonly","Plugin toggles are not available in demo mode (static bundle is immutable).")}async applyPluginChanges(n){throw new h("demo-readonly","Plugin toggles are not available in demo mode (static bundle is immutable).")}async runScan(){throw new h("demo-readonly","Manual scan is not available in demo mode (static bundle is immutable).")}async getPreferences(){return{updateCheck:{enabled:!0},telemetry:{errorsEnabled:!1,usageCliEnabled:!1,usageUiEnabled:!1,anonymousId:null,environment:"prod"}}}async setPreferences(n){throw new h("demo-readonly","Preference toggles are not available in demo mode (static bundle is immutable).")}async getProjectPreferences(){return{scan:{referencePaths:[]}}}async setProjectPreferences(n){throw new h("demo-readonly","Project preferences are not available in demo mode (static bundle is immutable).")}async getProjectIgnore(){return{patterns:[]}}async setProjectIgnore(n){throw new h("demo-readonly","Ignore patterns are not available in demo mode (static bundle is immutable).")}async getActiveProvider(){return{activeProvider:null,detected:[],source:"none"}}async setActiveProvider(n){throw new h("demo-readonly","Active provider lens is not available in demo mode (static bundle is immutable).")}async lookupContribution(){return null}async bumpSidecar(n,e={}){throw new h("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 ye}loadMeta(){return this.metaPromise||(this.metaPromise=this.fetchJson(Kt)),this.metaPromise}loadData(){return this.dataPromise||(this.dataPromise=this.fetchJson(Jt)),this.dataPromise}async fetchJson(n){let e;try{e=await this.fetchImpl(n)}catch(i){let r=i instanceof Error?i.message:String(i);throw new h("internal",$.errors.demoFetchFailed(n,r))}if(!e.ok)throw new h("internal",$.errors.demoFetchFailed(n,`HTTP ${e.status}`));try{return await e.json()}catch(i){let r=i instanceof Error?i.message:String(i);throw new h("internal",$.errors.demoParseFailed(n,r))}}};function Ht(t){return!(t.kind&&t.kind.length>0||t.hasIssues!==void 0||t.path||t.offset!==void 0&&t.offset!==0||t.limit!==void 0)}function Xt(t){return!(t.kind&&t.kind.length>0||t.from||t.to)}function Wt(t){return!(t.severity||t.analyzerId||t.node||t.nodes&&t.nodes.length>0)}function pt(t){let n=new Set;for(let e of t)for(let i of e.nodeIds)n.add(i);return n}function Yt(t){let e=t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${e}$`)}function mt(){let t=s(j);if(t==="live")return new ct(s(Y),s(U));if(t==="demo")return new ge;let n=t;throw new Error($.errors.unknownMode(String(n)))}var gt="search",ut="kinds",ht="linkKinds",ft="stabilities",vt="hasIssues",bt="staleOnly",_t="favoritesOnly",yt="severities",Qt=["error","warn"],kt=(()=>{class t{filters=s(Ge);router=s(Fe);activatedRoute=s(Ne);kindRegistry=s(V);destroyRef=s(ke);suppressUrlReadback=!1;constructor(){this.applyUrlToFilters(this.currentParams()),this.router.events.pipe(He(this.destroyRef)).subscribe(e=>{if(e instanceof $e){if(this.suppressUrlReadback)return;this.applyUrlToFilters(this.currentParams())}}),te(()=>{let e=this.computeQueryParams();this.writeQueryParams(e)})}currentParams(){let e=this.router.parseUrl(this.router.url),i=new URLSearchParams;for(let[r,o]of Object.entries(e.queryParams))Array.isArray(o)?i.set(r,o.join(",")):o!=null&&i.set(r,String(o));return this.activatedRoute,i}applyUrlToFilters(e){let i=e.get(gt)??"";i!==this.filters.searchText()&&this.filters.setSearchText(i);let r=Gt(e.get(ut),this.kindRegistry.kinds().map(Ft=>Ft.name));ue(r,this.filters.selectedKinds())||this.filters.setKinds(r);let o=Zt(e.get(ft));ue(o,this.filters.selectedStabilities())||this.filters.setStabilities(o);let d=e.get(vt)==="true";d!==this.filters.hasIssuesOnly()&&this.filters.setHasIssuesOnly(d);let u=e.get(bt)==="true";u!==this.filters.staleOnly()&&this.filters.setStaleOnly(u);let S=e.get(_t)==="true";S!==this.filters.favoritesOnly()&&this.filters.setFavoritesOnly(S);let f=qt(e.get(ht));ue(f,this.filters.selectedLinkKinds())||this.filters.setLinkKinds(f);let I=en(e.get(yt)),T=[];this.filters.severityErrorActive()&&T.push("error"),this.filters.severityWarnActive()&&T.push("warn"),ue(I,T)||this.filters.setSeverityFilters(I)}computeQueryParams(){let e=this.filters.searchText().trim(),i=this.filters.selectedKinds(),r=this.filters.selectedLinkKinds(),o=this.filters.selectedStabilities(),d=this.filters.hasIssuesOnly(),u=this.filters.staleOnly(),S=this.filters.favoritesOnly(),f=[];return this.filters.severityErrorActive()&&f.push("error"),this.filters.severityWarnActive()&&f.push("warn"),{[gt]:e.length>0?e:null,[ut]:i.length>0?i.join(","):null,[ht]:r.length>0?r.join(","):null,[ft]:o.length>0?o.join(","):null,[vt]:d?"true":null,[bt]:u?"true":null,[_t]:S?"true":null,[yt]:f.length>0?f.join(","):null}}writeQueryParams(e){let i=this.currentParams(),r=new Map(Object.entries(e)),o=!1;for(let[d,u]of r)if((i.get(d)??null)!==u){o=!0;break}o&&(this.suppressUrlReadback=!0,this.router.navigate([],{relativeTo:this.activatedRoute,queryParams:e,queryParamsHandling:"merge",replaceUrl:!0}).finally(()=>{setTimeout(()=>{this.suppressUrlReadback=!1},0)}))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=A({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Gt(t,n){if(!t)return[];let e=new Set(n);return t.split(",").map(i=>i.trim()).filter(i=>e.has(i))}function Zt(t){if(!t)return[];let n=new Set(Ye);return t.split(",").map(e=>e.trim()).filter(e=>n.has(e))}function qt(t){if(!t)return[];let n=new Set(Qe);return t.split(",").map(e=>e.trim()).filter(e=>n.has(e))}function en(t){if(!t)return[];let n=new Set(Qt);return t.split(",").map(e=>e.trim()).filter(e=>n.has(e))}function ue(t,n){if(t.length!==n.length)return!1;for(let e=0;e<t.length;e++)if(t[e]!==n[e])return!1;return!0}var Ct={healthFailed:t=>`ProjectInfoService: /api/health probe failed (${t})`};var Q=(()=>{class t{dataSource=s(q);status=z(null);cwd=c(()=>this.status()?.cwd??null);implVersion=c(()=>this.status()?.implVersion??null);dev=c(()=>this.status()?.dev===!0);activeProviderState=z(null);activeProvider=c(()=>this.activeProviderState());async load(){try{let e=await this.dataSource.health();this.status.set(e)}catch(e){let i=e instanceof Error?e.message:String(e);console.warn(Ct.healthFailed(i))}await this.reloadActiveProvider()}async reloadActiveProvider(){try{let e=await this.dataSource.getActiveProvider();this.activeProviderState.set(e.activeProvider)}catch{}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=A({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Pt=(()=>{class t extends oe{title=s(Le);projectInfo=s(Q);constructor(){super(),te(()=>{let e=xt(this.projectInfo.cwd()),i=this.projectInfo.implVersion();this.title.setTitle(L.documentTitle(e,i))})}updateTitle(e){let i=xt(this.projectInfo.cwd()),r=this.projectInfo.implVersion();this.title.setTitle(L.documentTitle(i,r))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=A({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function xt(t){if(!t)return null;let n=t.replace(/[\\/]+$/,"");if(!n||n===".")return null;let e=Math.max(n.lastIndexOf("/"),n.lastIndexOf("\\"));return(e>=0?n.slice(e+1):n)||null}var be=!1,_e=null;async function wt(t){if(be||fe===""||!t.consentEnabled)return;let n=await import("./chunk-RT7E4S5B.js");n.init({dsn:fe,release:t.release??void 0,environment:t.environment,integrations:e=>e.filter(i=>i.name!=="BrowserSession"),tracesSampleRate:0,sendDefaultPii:!1,allowUrls:[/^https?:\/\/(localhost|127\.0\.0\.1)(:\d+)?\//],beforeSend:e=>tt(e)}),_e=n,be=!0}function St(t){!be||_e===null||_e.captureException(t)}var Mt=(()=>{class t{handleError(e){console.error(e),St(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=A({token:t,factory:t.\u0275fac})}return t})();function tn(...t){for(let n of t)Promise.resolve(n.load())}var Tt={providers:[xe(),{provide:Ce,useClass:Mt},Be(dt,Ve()),{provide:oe,useClass:Pt},Ae(De()),Ke({}),G(async()=>{let t=s(Je),[{default:n},{definePreset:e}]=await Promise.all([import("./chunk-43S72FTV.js"),import("./chunk-5ITZXW3A.js")]),i=e(n,{semantic:{primary:{50:"#F5F3FF",100:"#EDE9FE",200:"#DDD6FE",300:"#C4B5FD",400:"#A78BFA",500:"#8B5CF6",600:"#7C3AED",700:"#6D28D9",800:"#4C1D95",900:"#2E1065",950:"#1E0A4D"}}});t.setThemeConfig({theme:{preset:i,options:{darkModeSelector:".app-dark"}}})}),{provide:j,useFactory:Xe},{provide:q,useFactory:mt},G(async()=>{let t=s(q),n=s(ee);try{let[e,i]=await Promise.all([t.getPreferences(),t.health()]);await Promise.all([wt({consentEnabled:e.telemetry.errorsEnabled,release:i.implVersion?`skill-map-cli@${i.implVersion}`:null,environment:e.telemetry.environment}),nt({consentEnabled:e.telemetry.usageUiEnabled,distinctId:e.telemetry.anonymousId})]),it({environment:e.telemetry.environment}),n.syncTheme()}catch{}}),G(()=>{tn(s(B),s(pe),s(Q))}),G(()=>{s(kt),s(qe),s(ee)})]};var K={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 Rt={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.ai",homeHref:"/",dismissAria:"Dismiss demo banner"};function rn(t,n){if(t&1){let e=E();l(0,"div",0),x(1,"span",1),l(2,"p",2),m(3),l(4,"code",3),m(5),p()(),l(6,"a",4),m(7),p(),l(8,"p-button",5),M("onClick",function(){R(e);let r=v();return O(r.dismiss())}),p()()}if(t&2){let e=v();a(3),P(" ",e.texts.body," "),a(2),b(e.texts.installCommand),a(),y("href",e.texts.homeHref,ne),a(),b(e.texts.homeCta),a(),y("ariaLabel",e.texts.dismissAria)("text",!0)("rounded",!0)}}var Ot="sm.demoBannerDismissed",Et=(()=>{class t{mode=s(j);texts=Rt;dismissed=z(this.readDismissed());visible=c(()=>this.mode==="demo"&&!this.dismissed());dismiss(){this.dismissed.set(!0);try{globalThis.localStorage?.setItem(Ot,"1")}catch{}}readDismissed(){if(this.mode!=="demo")return!0;try{return globalThis.localStorage?.getItem(Ot)==="1"}catch{return!1}}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=D({type:t,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(i,r){i&1&&k(0,rn,9,7,"div",0),i&2&&C(r.visible()?0:-1)},dependencies:[ae,se],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})}return t})();var It={bodyAtLimit:(t,n)=>`Your graph has ${t} ${t===1?"node":"nodes"}, at the recommended limit of ${n}. Past this point the map gets hard to read and analyzer signal degrades.`,bodyOverLimit:(t,n,e)=>`Your graph has ${t} nodes, over the recommended limit of ${n} (currently allowed via --max-nodes ${e}). Past this point the map gets hard to read and analyzer signal degrades.`,bodyCapped:(t,n,e)=>`Scan capped at ${n} ${n===1?"node":"nodes"} (${e==="override"?"--max-nodes":"scan.maxNodes"}). The walker stopped at ${t} ${t===1?"file":"files"}, additional files were dropped. The map and analyzers only see what made it through.`,cta:"Edit .skillmapignore",ctaAria:"Open Settings to edit ignored patterns"};function on(t,n){if(t&1){let e=E();F(0,"div",0),Z(1,"span",1),F(2,"p",2),m(3),W(),F(4,"button",3),ie("click",function(){R(e);let r=v();return O(r.onCta())}),m(5),W()()}if(t&2){let e=v();_("data-mode",e.state().mode),a(3),P(" ",e.state().body," "),a(),_("aria-label",e.texts.ctaAria),a(),P(" ",e.texts.cta," ")}}var At=(()=>{class t{loader=s(B);texts=It;openSettings=re();state=c(()=>{let e=this.loader.scan();if(!e)return{mode:"hidden",body:""};let i=e.recommendedNodeLimit;if(i===void 0)return{mode:"hidden",body:""};let r=e.overrideMaxNodes??null,o=r??i,d=e.stats.filesWalked,u=e.stats.nodesCount;return d>o?{mode:"capped",body:this.texts.bodyCapped(d,o,r!==null?"override":"setting")}:u<i?{mode:"hidden",body:""}:r!==null&&u>i?{mode:"overLimit",body:this.texts.bodyOverLimit(u,i,r)}:{mode:"atLimit",body:this.texts.bodyAtLimit(u,i)}});visible=c(()=>this.state().mode!=="hidden");onCta(){this.openSettings.emit()}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=D({type:t,selectors:[["sm-oversized-banner"]],outputs:{openSettings:"openSettings"},decls:1,vars:1,consts:[["role","status","data-testid","oversized-banner",1,"oversized-banner"],["aria-hidden","true",1,"oversized-banner__icon","fa-solid","fa-triangle-exclamation"],["data-testid","oversized-banner-body",1,"oversized-banner__body"],["type","button","data-testid","oversized-banner-cta",1,"oversized-banner__cta",3,"click"]],template:function(i,r){i&1&&k(0,on,6,4,"div",0),i&2&&C(r.visible()?0:-1)},styles:["[_nghost-%COMP%]{display:block}.oversized-banner[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;border-bottom:1px solid var(--p-content-border-color);font-size:.875rem}.oversized-banner[data-mode=capped][_ngcontent-%COMP%]{background:var(--sm-severity-error-bg);color:var(--sm-severity-error)}.oversized-banner[data-mode=overLimit][_ngcontent-%COMP%], .oversized-banner[data-mode=atLimit][_ngcontent-%COMP%]{background:var(--sm-severity-warn-bg);color:var(--sm-severity-warn)}.oversized-banner__icon[_ngcontent-%COMP%]{font-size:1.1rem}.oversized-banner[data-mode=capped][_ngcontent-%COMP%] .oversized-banner__icon[_ngcontent-%COMP%]{color:var(--sm-severity-error)}.oversized-banner[data-mode=overLimit][_ngcontent-%COMP%] .oversized-banner__icon[_ngcontent-%COMP%], .oversized-banner[data-mode=atLimit][_ngcontent-%COMP%] .oversized-banner__icon[_ngcontent-%COMP%]{color:var(--sm-severity-warn)}.oversized-banner__body[_ngcontent-%COMP%]{flex:1 1 auto;margin:0;line-height:1.4}.oversized-banner__cta[_ngcontent-%COMP%]{flex:0 0 auto;background:transparent;color:inherit;border:1px solid currentColor;padding:.25rem .75rem;border-radius:var(--p-border-radius);font:inherit;font-size:.8125rem;font-weight:500;cursor:pointer;transition:background .15s ease}.oversized-banner__cta[_ngcontent-%COMP%]:hover, .oversized-banner__cta[_ngcontent-%COMP%]:focus-visible{background:color-mix(in srgb,currentColor 12%,transparent)}.oversized-banner__cta[_ngcontent-%COMP%]:focus-visible{outline:2px solid currentColor;outline-offset:2px}"],changeDetection:0})}return t})();var Dt={headline:t=>`${t} ${t===1?"file":"files"} skipped, ${t===1?"it exceeds":"they exceed"} the max file size.`,more:"...",seeConsole:"See the full list in the console.",cta:"Open Project settings",ctaAria:"Open Settings to adjust the max file size or ignore patterns"};function an(t,n){if(t&1&&(l(0,"span",4),m(1),p()),t&2){let e=v(2);y("pTooltip",e.state().tooltip),a(),b(e.texts.more)}}function ln(t,n){if(t&1){let e=E();l(0,"div",0),x(1,"span",1),l(2,"p",2),m(3),l(4,"span",3),m(5),p(),k(6,an,2,2,"span",4),p(),l(7,"button",5),M("click",function(){R(e);let r=v();return O(r.onCta())}),m(8),p()()}if(t&2){let e=v();a(3),P(" ",e.texts.headline(e.state().count)," "),a(2),P(" ",e.state().first," "),a(),C(e.state().hasMore?6:-1),a(),_("aria-label",e.texts.ctaAria),a(),P(" ",e.texts.cta," ")}}var dn=5,Lt=(()=>{class t{loader=s(B);texts=Dt;openSettings=re();state=c(()=>{let e=this.loader.scan(),i=e?.oversizedFiles??[],r=e?.stats?.filesOversized??i.length;if(r<=0)return{visible:!1,count:0,first:"",hasMore:!1,tooltip:""};let o=i[0]?this.describe(i[0]):"",d=r>1,u="";if(d){let S=i.slice(1);r-1>dn?u=this.texts.seeConsole:u=S.map(f=>this.describe(f)).join(`
4
+ `)}return{visible:!0,count:r,first:o,hasMore:d,tooltip:u}});visible=c(()=>this.state().visible);describe(e){return`${e.path.split("/").pop()??e.path} (${We(e.bytes)})`}onCta(){this.openSettings.emit()}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=D({type:t,selectors:[["sm-skipped-files-banner"]],outputs:{openSettings:"openSettings"},decls:1,vars:1,consts:[["role","status","data-testid","skipped-files-banner",1,"skipped-files-banner"],["aria-hidden","true",1,"skipped-files-banner__icon","fa-solid","fa-triangle-exclamation"],["data-testid","skipped-files-banner-body",1,"skipped-files-banner__body"],["data-testid","skipped-files-banner-first",1,"skipped-files-banner__first"],["data-testid","skipped-files-banner-more",1,"skipped-files-banner__more",3,"pTooltip"],["type","button","data-testid","skipped-files-banner-cta",1,"skipped-files-banner__cta",3,"click"]],template:function(i,r){i&1&&k(0,ln,9,5,"div",0),i&2&&C(r.visible()?0:-1)},dependencies:[de,le],styles:["[_nghost-%COMP%]{display:block}.skipped-files-banner[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;border-bottom:1px solid var(--p-content-border-color);font-size:.875rem;background:var(--sm-severity-warn-bg);color:var(--sm-severity-warn)}.skipped-files-banner__icon[_ngcontent-%COMP%]{font-size:1.1rem;color:var(--sm-severity-warn)}.skipped-files-banner__body[_ngcontent-%COMP%]{flex:1 1 auto;margin:0;line-height:1.4}.skipped-files-banner__first[_ngcontent-%COMP%]{font-weight:600}.skipped-files-banner__more[_ngcontent-%COMP%]{font-weight:600;cursor:help}.skipped-files-banner__cta[_ngcontent-%COMP%]{flex:0 0 auto;background:transparent;color:inherit;border:1px solid currentColor;padding:.25rem .75rem;border-radius:var(--p-border-radius);font:inherit;font-size:.8125rem;font-weight:500;cursor:pointer;transition:background .15s ease}.skipped-files-banner__cta[_ngcontent-%COMP%]:hover, .skipped-files-banner__cta[_ngcontent-%COMP%]:focus-visible{background:color-mix(in srgb,currentColor 12%,transparent)}.skipped-files-banner__cta[_ngcontent-%COMP%]:focus-visible{outline:2px solid currentColor;outline-offset:2px}"],changeDetection:0})}return t})();var $t={body:"Connection to the server was lost. Live updates are paused.",reconnectCta:"Reconnect",reconnectAria:"Retry the connection to the server"};function cn(t,n){if(t&1){let e=E();F(0,"div",0),Z(1,"span",1),F(2,"p",2),m(3),W(),F(4,"button",3),ie("click",function(){R(e);let r=v();return O(r.reconnect())}),Z(5,"span",4),m(6),W()()}if(t&2){let e=v();a(3),b(e.texts.body),a(),_("aria-label",e.texts.reconnectAria),a(2),P(" ",e.texts.reconnectCta," ")}}var Nt=(()=>{class t{mode=s(j);ws=s(U);texts=$t;visible=c(()=>this.mode==="live"&&this.ws.connectionState()==="lost");reconnect(){this.ws.reconnect()}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=D({type:t,selectors:[["sm-connection-banner"]],decls:1,vars:1,consts:[["role","alert","data-testid","connection-banner",1,"connection-banner"],["aria-hidden","true",1,"connection-banner__icon","fa-solid","fa-plug-circle-xmark"],[1,"connection-banner__body"],["type","button","data-testid","connection-banner-reconnect",1,"connection-banner__cta",3,"click"],["aria-hidden","true",1,"fa-solid","fa-rotate-right"]],template:function(i,r){i&1&&k(0,cn,7,3,"div",0),i&2&&C(r.visible()?0:-1)},styles:["[_nghost-%COMP%]{display:block}.connection-banner[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;border-bottom:1px solid var(--p-content-border-color);background:var(--sm-severity-error-bg);color:var(--sm-severity-error);font-size:.875rem}.connection-banner__icon[_ngcontent-%COMP%]{font-size:1.1rem;color:var(--sm-severity-error)}.connection-banner__body[_ngcontent-%COMP%]{flex:1 1 auto;margin:0;line-height:1.4}.connection-banner__cta[_ngcontent-%COMP%]{flex:0 0 auto;display:inline-flex;align-items:center;gap:.4rem;background:transparent;color:inherit;border:1px solid currentColor;padding:.25rem .75rem;border-radius:var(--p-border-radius);font:inherit;font-size:.8125rem;font-weight:500;cursor:pointer;transition:background .15s ease}.connection-banner__cta[_ngcontent-%COMP%]:hover, .connection-banner__cta[_ngcontent-%COMP%]:focus-visible{background:color-mix(in srgb,currentColor 12%,transparent)}.connection-banner__cta[_ngcontent-%COMP%]:focus-visible{outline:2px solid currentColor;outline-offset:2px}"],changeDetection:0})}return t})();var pn=()=>[import("./chunk-PO2VZMOB.js").then(t=>t.SettingsModal)];function mn(t,n){if(t&1&&(l(0,"span",11),m(1),p()),t&2){let e=v();y("pTooltip",e.versionTooltip()),_("aria-label",e.texts.devChipA11y),a(),b(e.texts.devChip)}}function gn(t,n){if(t&1&&(l(0,"span",12),m(1),p()),t&2){let e=v();y("pTooltip",e.versionTooltip()),_("aria-label",e.versionA11y()),a(),b(e.versionLabel())}}function un(t,n){if(t&1&&(l(0,"span",26),m(1),p()),t&2){let e=n,i=v();Me("--provider-color",e.color)("--provider-color-dark",e.colorDark??e.color),y("pTooltip",i.texts.lensChipTooltip(e.label)),_("aria-label",i.texts.lensChipA11y(e.label)),a(),b(e.label)}}function hn(t,n){if(t&1){let e=E();l(0,"button",27),M("click",function(){R(e);let r=v();return O(r.copyUpdateCommand())}),x(1,"i",28),l(2,"span"),m(3),p()(),l(4,"a",29),x(5,"i",30),p()}if(t&2){let e=v();y("pTooltip",e.updateChipTooltip()),_("aria-label",e.updateChipA11y()),a(),Te(e.updateChipIcon()),a(2),b(e.updateChipText()),a(),y("href",e.npmLinkUrl,ne)("pTooltip",e.npmLinkTooltip),_("aria-label",e.npmLinkA11y)}}function fn(t,n){if(t&1&&(l(0,"p",15)(1,"bdi",31),m(2),p()()),t&2){let e=n;_("title",e),a(2),b(e)}}function vn(t,n){if(t&1){let e=E();l(0,"sm-settings-modal",32),M("visibleChange",function(r){R(e);let o=v();return O(o.onSettingsVisibleChange(r))}),p()}if(t&2){let e=v();y("visible",e.settingsOpen())}}var zt=(()=>{class t{loader=s(B);theme=s(rt);projectInfo=s(Q);providerRegistry=s(J);scanTrigger=s(lt);usageTracker=s(ee);updateCheck=s(pe);texts=L;settingsTexts=at;settingsOpen=z(!1);openSettings(){this.settingsOpen.set(!0),this.usageTracker.trackFeature("settings")}onSettingsVisibleChange(e){this.settingsOpen.set(e),e||this.projectInfo.reloadActiveProvider()}scanning=this.scanTrigger.scanning;scanError=this.scanTrigger.scanError;triggerScan(){return this.scanTrigger.run()}updateChipCopied=z(!1);updateChipText=c(()=>this.updateChipCopied()?w.copiedLabel:w.available);updateChipIcon=c(()=>this.updateChipCopied()?"pi pi-check":"pi pi-download");updateChipTooltip=c(()=>this.updateChipCopied()?w.copiedTooltip:w.tooltip(this.updateCheck.latest()??""));updateChipA11y=c(()=>w.a11yLabel(this.updateCheck.latest()??""));npmLinkUrl=w.npmLinkUrl;npmLinkTooltip=w.npmLinkTooltip;npmLinkA11y=w.npmLinkA11y;async copyUpdateCommand(){try{await navigator.clipboard.writeText(w.copyCommand),this.updateChipCopied.set(!0),setTimeout(()=>this.updateChipCopied.set(!1),2e3)}catch{}}versionLabel=c(()=>w.versionLabel(this.updateCheck.current()??""));versionTooltip=c(()=>w.versionTooltip(this.updateCheck.current()??""));versionA11y=c(()=>w.versionA11yLabel(this.updateCheck.current()??""));isDevBuild=this.projectInfo.dev;lensChip=c(()=>this.providerRegistry.lensChip(this.projectInfo.activeProvider()));count=this.loader.count;linkAnalysis=c(()=>ot(this.loader.nodes(),this.loader.scan()));linkCount=c(()=>this.linkAnalysis().raw);mapInfoTooltip=c(()=>L.badge.mapInfo(this.count(),this.linkAnalysis()));mapInfoA11y=c(()=>L.badge.mapInfoA11y(this.count(),this.linkAnalysis()));rootLabel=c(()=>{let e=this.projectInfo.cwd();if(e&&e!==".")return e;let i=this.loader.scan()?.roots??[];if(i.length===0)return"";let r=i[0].replace(/[\\/]+$/,"");return!r||r==="."?"":r});isDevMode=Re();themeMode=this.theme.mode;markSrc=c(()=>this.theme.extraTheme()==="matrix"?"skill-map-mark-matrix.svg":this.theme.resolved()==="dark"?"skill-map-mark-light.svg":"skill-map-mark-dark.svg");themeIcon=c(()=>{switch(this.themeMode()){case"auto":return"pi pi-desktop";case"light":return"pi pi-sun";case"dark":return"fa-regular fa-moon"}});themeLabel=c(()=>{switch(this.themeMode()){case"auto":return K.toggleToLight;case"light":return K.toggleToDark;case"dark":return K.toggleToAuto}});themeTooltip=c(()=>{switch(this.themeMode()){case"auto":return K.currentAuto;case"light":return K.currentLight;case"dark":return K.currentDark}});toggleTheme(){this.theme.toggle()}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=D({type:t,selectors:[["sm-root"]],decls:43,vars:32,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"],[3,"openSettings"],["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-dev",1,"shell__dev",3,"pTooltip"],["tooltipPosition","bottom","data-testid","shell-version",1,"shell__version",3,"pTooltip"],["tooltipPosition","bottom","data-testid","shell-lens",1,"shell__lens",3,"--provider-color","--provider-color-dark","pTooltip"],[1,"shell__alpha"],["data-testid","shell-root-label",1,"shell__tag"],["data-testid","shell-nav",1,"shell__nav"],["slot","topbar.nav.start",3,"node"],["routerLink","/map","routerLinkActive","is-active","queryParamsHandling","preserve","data-testid","nav-graph"],["routerLink","/files","routerLinkActive","is-active","queryParamsHandling","preserve","data-testid","nav-files"],[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"],["tooltipPosition","bottom","data-testid","shell-lens",1,"shell__lens",3,"pTooltip"],["type","button","tooltipPosition","bottom","data-testid","shell-update-chip",1,"shell__update-chip",3,"click","pTooltip"],["aria-hidden","true"],["target","_blank","rel","noopener noreferrer","tooltipPosition","bottom","data-testid","shell-update-npm-link",1,"shell__update-npm-link",3,"href","pTooltip"],["aria-hidden","true",1,"pi","pi-external-link"],["dir","ltr"],[3,"visibleChange","visible"]],template:function(i,r){if(i&1&&(l(0,"div",0)(1,"div",1),x(2,"i",2),l(3,"h2",3),m(4),p(),l(5,"p",4),m(6),p(),l(7,"p",5),m(8),p()()(),l(9,"div",6),x(10,"sm-demo-banner"),l(11,"sm-oversized-banner",7),M("openSettings",function(){return r.openSettings()}),p(),l(12,"sm-skipped-files-banner",7),M("openSettings",function(){return r.openSettings()}),p(),x(13,"sm-connection-banner"),l(14,"header",8)(15,"div",9),x(16,"img",10),l(17,"div")(18,"h1"),m(19),k(20,mn,2,3,"span",11)(21,gn,2,3,"span",12),k(22,un,2,7,"span",13),l(23,"span",14),m(24),p(),k(25,hn,6,8),p(),k(26,fn,3,2,"p",15),p()(),l(27,"nav",16),x(28,"sm-view-contributions-host",17),l(29,"a",18),m(30),p(),l(31,"a",19),m(32),p()(),l(33,"div",20)(34,"button",21),M("click",function(){return r.triggerScan()}),x(35,"i",22),p(),l(36,"p-button",23),M("onClick",function(){return r.toggleTheme()}),p(),l(37,"p-button",24),M("onClick",function(){return r.openSettings()}),p()()(),l(38,"main",25),x(39,"router-outlet"),p(),Pe(40,vn,1,1),we(41,40,pn),p()),i&2){let o,d,u;a(4),b(r.texts.viewportWarning.title),a(2),b(r.texts.viewportWarning.subtitle),a(2),b(r.texts.viewportWarning.body),a(8),y("ngSrc",r.markSrc()),a(3),P(" ",r.texts.brand," "),a(),C(r.isDevBuild()?20:(o=r.updateCheck.current())?21:-1,o),a(2),C((d=r.lensChip())?22:-1,d),a(),_("aria-label",r.texts.alpha),a(),b(r.texts.alpha),a(),C(r.updateCheck.isOutdated()&&!r.isDevMode?25:-1),a(),C((u=r.rootLabel())?26:-1,u),a(),_("aria-label",r.texts.a11y.viewSwitcher),a(),y("node",null),a(2),b(r.texts.nav.map),a(2),b(r.texts.nav.files),a(2),he("is-spinning",r.scanning()),y("pTooltip",r.mapInfoTooltip())("disabled",r.scanning()),_("aria-label",r.mapInfoA11y()),a(),he("pi-spin",r.scanning()),a(),y("icon",r.themeIcon())("ariaLabel",r.themeLabel())("pTooltip",r.themeTooltip())("text",!0)("rounded",!0),a(),y("ariaLabel",r.settingsTexts.a11y.triggerLabel)("pTooltip",r.settingsTexts.triggerTooltip)("text",!0)("rounded",!0),a(4),Se(r.settingsOpen())}},dependencies:[ze,je,Ue,ae,se,st,de,le,Ze,Oe,Et,At,Lt,Nt,et],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:var(--sm-font-display-brand);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__dev[_ngcontent-%COMP%]{display:inline-block;margin-left:6px;padding:2px 8px;border-radius:var(--sm-radius-sm);font-family:var(--sm-font-display-brand);font-size:10px;line-height:1;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#8a5a00;background:#d69e2e29;vertical-align:middle;-webkit-user-select:none;user-select:none}.app-dark[_nghost-%COMP%] .shell__dev[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .shell__dev[_ngcontent-%COMP%]{color:#fbd38d;background:#d69e2e38}.shell__lens[_ngcontent-%COMP%]{display:inline-block;margin-left:6px;padding:2px 8px;border-radius:var(--sm-radius-sm);font-size:11px;line-height:1;font-weight:600;letter-spacing:.02em;color:var(--provider-color);background:color-mix(in srgb,var(--provider-color) 14%,transparent);vertical-align:middle;-webkit-user-select:none;user-select:none}.app-dark[_nghost-%COMP%] .shell__lens[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .shell__lens[_ngcontent-%COMP%]{color:var(--provider-color-dark);background:color-mix(in srgb,var(--provider-color-dark) 24%,transparent)}.shell__update-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;margin-left:8px;padding:3px 8px;font-family:inherit;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;cursor:pointer;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__update-npm-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;margin-left:4px;padding:3px 4px;color:var(--p-primary-color);text-decoration:none;border-radius:var(--sm-radius-pill);transition:color .12s ease,background-color .12s ease;vertical-align:middle}.shell__update-npm-link[_ngcontent-%COMP%]:hover, .shell__update-npm-link[_ngcontent-%COMP%]:focus-visible{color:var(--p-primary-700);background:var(--p-primary-50)}.shell__update-npm-link[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:12px;transform:translateY(1px)}.app-dark[_nghost-%COMP%] .shell__update-npm-link[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .shell__update-npm-link[_ngcontent-%COMP%]{color:var(--p-primary-300)}.app-dark[_nghost-%COMP%] .shell__update-npm-link[_ngcontent-%COMP%]:hover, .app-dark [_nghost-%COMP%] .shell__update-npm-link[_ngcontent-%COMP%]:hover, .app-dark[_nghost-%COMP%] .shell__update-npm-link[_ngcontent-%COMP%]:focus-visible, .app-dark [_nghost-%COMP%] .shell__update-npm-link[_ngcontent-%COMP%]:focus-visible{color:var(--p-primary-200);background:#ffffff0a}.shell__tag[_ngcontent-%COMP%]{margin:.35rem 0 0;font-size:.72rem;color:var(--shell-topbar-text-muted);letter-spacing:.02em;text-transform:uppercase;max-width:40rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;direction:rtl}.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__search[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.25rem;position:relative}.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:pointer;transition:background .15s ease,color .15s ease,opacity .15s ease}.shell__nav-search[_ngcontent-%COMP%]:hover{background:var(--shell-topbar-hover-bg);color:var(--shell-topbar-text-strong)}.shell__search.is-open[_ngcontent-%COMP%] .shell__nav-search[_ngcontent-%COMP%]{color:var(--shell-topbar-text-strong)}.shell__nav-search[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:.95rem}.shell__search.has-query[_ngcontent-%COMP%]:not(.is-open) .shell__nav-search[_ngcontent-%COMP%]{position:relative;color:var(--shell-topbar-text-strong)}.shell__search.has-query[_ngcontent-%COMP%]:not(.is-open) .shell__nav-search[_ngcontent-%COMP%]:after{content:"";position:absolute;top:.45rem;right:.45rem;width:6px;height:6px;border-radius:50%;background:var(--p-primary-color)}.shell__search-input[_ngcontent-%COMP%]{width:240px;height:2.25rem}.shell__search-clear[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem;padding:0;border:none;border-radius:50%;background:transparent;color:var(--shell-topbar-text-muted);cursor:pointer;line-height:1}.shell__search-clear[_ngcontent-%COMP%]:hover{background:var(--shell-topbar-hover-bg);color:var(--shell-topbar-text-strong)}.shell__search-clear[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:.7rem}.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%]{max-width:26rem}.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})}return t})();Ee(zt,Tt).catch(t=>console.error(t));
@@ -299,6 +299,22 @@ CREATE TABLE scan_meta (
299
299
  -- serve terminal warns on and the UI banner lists. NULL when no file was skipped.
300
300
  files_oversized INTEGER NOT NULL DEFAULT 0,
301
301
  oversized_files_json TEXT,
302
+ -- Resolved offline tokenizer (encoder) that produced this scan's per-node
303
+ -- token counts (see project-config.schema.json §tokenizer, closed enum
304
+ -- `cl100k_base` / `o200k_base`). Recorded so the next incremental scan can
305
+ -- compare the persisted encoder against the resolved one and force a token
306
+ -- recompute when they differ (changing the tokenizer invalidates prior
307
+ -- counts). NULL on a pre-feature DB / never-tokenized scan; a NULL prior is
308
+ -- treated as "different encoder" so the next scan recomputes.
309
+ tokenizer TEXT,
310
+ -- Schema-drift fingerprint (see spec/db-schema.md §Schema drift (pre-1.0)).
311
+ -- sha256 (hex) of the concatenated migration DDL the schema was built from,
312
+ -- written at persist time. NULL on a DB created by a pre-fingerprint CLI; a
313
+ -- NULL or mismatching value is read as schema drift on the next write-side
314
+ -- open so an inline `001_initial.sql` column add (no version bump,
315
+ -- greenfield posture) forces a one-time cache rebuild instead of surfacing
316
+ -- later as a "no such column" query error.
317
+ schema_fingerprint TEXT,
302
318
  CONSTRAINT ck_scan_meta_singleton CHECK (id = 1)
303
319
  );
304
320
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skill-map/cli",
3
- "version": "0.46.0",
3
+ "version": "0.47.0",
4
4
  "description": "skill-map reference implementation — kernel + CLI + adapters.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -61,7 +61,7 @@
61
61
  "smol-toml": "1.6.1",
62
62
  "typanion": "3.14.0",
63
63
  "ws": "8.21.0",
64
- "@skill-map/spec": "0.43.0"
64
+ "@skill-map/spec": "0.44.0"
65
65
  },
66
66
  "devDependencies": {
67
67
  "@eslint/js": "10.0.1",
@@ -1,123 +0,0 @@
1
- import{a as Nt,c as Lt,d as y,e as At}from"./chunk-F4RIBZ4P.js";import{a as bt,b as vt,c as ye,d as ke,e as kt}from"./chunk-RXQYLVSJ.js";import{d as Pt,f as St,g as Se}from"./chunk-VW2A6WZ3.js";import{e as Et,f as Mt,g as Tt,h as Ot,l as It,m as jt,n as Dt,o as Ft,p as ge,q as pe}from"./chunk-SF4FUT4U.js";import{a as Ee,b as Me}from"./chunk-S32E6ZCZ.js";import{e as Ct,f as wt,g as yt}from"./chunk-ERUALZOV.js";import{D as we,E as se,M as W,N as H,S as xt,T as Pe,V as le,W as de,X as ce,c as ae,j as xe,k as Ce,m as ut,p as ht,v as _t,w as he,x as ft}from"./chunk-P4E74ZOS.js";import"./chunk-4SG4352Z.js";import"./chunk-EPBUSS3I.js";import{l as pt,m as mt}from"./chunk-VNA3TMIO.js";import{$b as p,Ab as oe,Db as rt,Ga as et,Gb as N,Ha as Z,Hb as q,Ib as w,Ic as Ve,Jc as gt,K as We,Ka as o,Kb as c,L as _e,M as Xe,Nb as at,O as Qe,Ob as st,Pb as fe,Q as k,Qb as be,V as Ye,Vb as Ae,W as S,Wb as G,X as E,Xb as lt,Yb as ue,Za as L,Zb as l,_a as tt,_b as m,aa as Je,ab as nt,ac as I,bb as it,ca as Ze,cb as ie,ha as u,ic as re,ja as V,kc as dt,la as Le,lb as v,ob as h,pb as _,qb as ot,rb as ee,rc as ct,sb as D,tb as F,ub as f,uc as C,vb as s,wb as a,xb as O,xc as ve,yb as b,yc as R,zb as x}from"./chunk-HAWX5WNM.js";import{a as K,b as J}from"./chunk-WCABR6TI.js";function mn(t,r){if(t&1&&(b(0,"p",6),l(1),x()),t&2){let e=c();o(),I(" ",e.texts.aboutErrorPrefix," ",e.loadError()," ")}}var Vt=(()=>{class t{dataSource=k(W);updateCheck=k(Lt);theme=k(Se);visible=R.required();texts=y;health=u(null);loadError=u(null);markSrc=C(()=>this.theme.resolved()==="dark"?"skill-map-mark-light.svg":"skill-map-mark-dark.svg");cliVersion=C(()=>this.updateCheck.current()??this.health()?.implVersion??this.texts.aboutUnknown);specVersion=C(()=>this.health()?.specVersion??this.texts.aboutLoading);schemaVersion=C(()=>this.health()?.schemaVersion??this.texts.aboutLoading);cwd=C(()=>this.health()?.cwd??this.texts.aboutLoading);dbDisplay=C(()=>{let e=this.health();return e?this.texts.aboutDbValue(e.db,un(e.dbPath,e.cwd)):this.texts.aboutLoading});constructor(){V(()=>{this.visible()&&this.health()===null&&this.load()})}async load(){this.loadError.set(null);try{let e=await this.dataSource.health();this.health.set(e)}catch(e){let i=e instanceof H||e instanceof Error?e.message:String(e);this.loadError.set(i)}}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=L({type:t,selectors:[["sm-settings-about"]],inputs:{visible:[1,"visible"]},decls:57,vars:25,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-cwd",1,"settings-about__value"],["data-testid","settings-about-db",1,"settings-about__value"]],template:function(i,n){i&1&&(b(0,"section",0)(1,"header",1),oe(2,"img",2),b(3,"div",3)(4,"h2",4),l(5),x(),b(6,"p",5),l(7),x()()(),h(8,mn,2,2,"p",6),b(9,"a",7),oe(10,"i",8),b(11,"span",9)(12,"span",10),l(13),x(),b(14,"span",11),l(15),x()(),b(16,"span",12),oe(17,"i",13),l(18),x()(),b(19,"dl",14)(20,"div",15)(21,"dt",16),l(22),x(),b(23,"dd",17)(24,"a",18),l(25),x()()(),b(26,"div",15)(27,"dt",16),l(28),x(),b(29,"dd",17)(30,"a",19),l(31),x()()(),b(32,"div",15)(33,"dt",16),l(34),x(),b(35,"dd",20),l(36),x()(),b(37,"div",15)(38,"dt",16),l(39),x(),b(40,"dd",21),l(41),x()(),b(42,"div",15)(43,"dt",16),l(44),x(),b(45,"dd",22),l(46),x()(),b(47,"div",15)(48,"dt",16),l(49),x(),b(50,"dd",23),l(51),x()(),b(52,"div",15)(53,"dt",16),l(54),x(),b(55,"dd",24),l(56),x()()()()),i&2&&(o(2),q("src",n.markSrc(),Z),o(3),p(" ",n.texts.aboutHeading," "),o(2),m(n.texts.aboutIntro),o(),_(n.loadError()?8:-1),o(),q("href",n.texts.aboutGithubUrl,Z),v("aria-label",n.texts.aboutStarA11y),o(4),m(n.texts.aboutStarHeading),o(2),m(n.texts.aboutStarBody),o(3),p(" ",n.texts.aboutStarCta," "),o(4),m(n.texts.aboutWebsiteLabel),o(2),q("href",n.texts.aboutWebsiteUrl,Z),o(),m(n.texts.aboutWebsiteUrl),o(3),m(n.texts.aboutGithubLabel),o(2),q("href",n.texts.aboutGithubUrl,Z),o(),m(n.texts.aboutGithubUrl),o(3),m(n.texts.aboutCliLabel),o(2),p(" ",n.cliVersion()," "),o(3),m(n.texts.aboutSpecLabel),o(2),p(" ",n.specVersion()," "),o(3),m(n.texts.aboutSchemaLabel),o(2),p(" ",n.schemaVersion()," "),o(3),m(n.texts.aboutFolderLabel),o(2),p(" ",n.cwd()," "),o(3),m(n.texts.aboutDbLabel),o(2),p(" ",n.dbDisplay()," "))},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})}return t})();function un(t,r){if(!t||!r)return t;let e=r.replace(/[/\\]+$/,"");return t.startsWith(e)?t.slice(e.length).replace(/^[/\\]+/,""):t}var Te=(()=>{class t{ownerSig=u(null);dirtyCount=C(()=>{let e=this.ownerSig();return e?e.dirtyIds().size:0});register(e){this.ownerSig.set(e)}deregister(e){this.ownerSig()===e&&this.ownerSig.set(null)}async applyChanges(){let e=this.ownerSig();return e?e.applyChanges():{ok:!1}}discardChanges(){this.ownerSig()?.discardChanges()}static \u0275fac=function(i){return new(i||t)};static \u0275prov=_e({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Rt={schemaVersion:1,entries:[{version:"0.46.0",date:"2026-05-31",kind:"user-facing",highlights:[{body:"`sm scan` no longer glues the `Auto-detected activeProvider` notice onto the results line. The auto-detect message now prints on its own line, right above the scan summary.",packages:["@skill-map/cli"]},{body:"`sm plugins --help` (and `db`, `config`, `job`, and the other command groups) now print a tidy overview with a one-line description and a list of their subcommands, matching the look of `sm scan --help`, instead of a terse internal list.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"**Config cleanup.** Several settings.json keys that never did anything (`i18n`, `providers`, `history`, `autoMigrate`, `scan.followSymlinks`, per-plugin `config` / `extensions`) were removed. If still present they are now ignored and reported with a warning on load.",packages:["@skill-map/cli","@skill-map/spec"]},{body:'`sm plugins list` / `show` and the Settings \u2192 Plugins UI now consistently say "plugin" instead of "bundle". The only place "bundle" remains is the name for toggling a whole plugin (all its extensions) at once.',packages:["@skill-map/cli","@skill-map/spec"]}]},{version:"0.45.1",date:"2026-05-30",kind:"internal",highlights:[]},{version:"0.45.0",date:"2026-05-30",kind:"user-facing",highlights:[{body:"`sm tutorial` can now target other agents: `--for agent-skills` (open-standard layout, used by Antigravity and OpenAI Codex) or `--for claude` (default). It now requires an empty directory: run it in a fresh folder, or pass `--force` to seed into the current one.",packages:["@skill-map/cli","@skill-map/spec"]}]},{version:"0.44.0",date:"2026-05-30",kind:"user-facing",highlights:[{body:"Under the Antigravity lens, `sm scan` now warns when a `.agents/skills` skill shadows a built-in `agy` slash command (e.g. a skill named `goal` collides with `/goal`), so you can rename it before the runtime silently ignores the file.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"skill-map can now report crashes anonymously to help fix bugs, and it is OFF by default. Turn it on or off in Settings, or set `SKILL_MAP_TELEMETRY=0` to force it off. File contents, paths, and your settings are never sent.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"skill-map can now share anonymous usage (which commands and views you use) to guide development, OFF by default. Toggle CLI usage, UI usage, and error reports independently in Settings, or set `SKILL_MAP_TELEMETRY=0` to force all off. Files and paths are never sent.",packages:["@skill-map/cli","@skill-map/spec"]}]},{version:"0.43.0",date:"2026-05-29",kind:"user-facing",highlights:[{body:"The skill-map website and in-app links (Settings, About and the demo banner) now point to **skill-map.ai** (previously skill-map.dev). Spec schema URLs are now `https://skill-map.ai/spec/v0/...`.",packages:["@skill-map/cli","@skill-map/spec","@skill-map/web"]},{body:"Claude skills and commands now show their `disallowed-tools` in the inspector. Tags come only from `.sm` sidecars now: the `sm list --tag-source` flag is removed and cards show a single tag style. Agent Skills `license` / `compatibility` / `metadata` fields are recognized.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"After updating skill-map, the next `sm scan` rebuilds the local database when it was created by an older version (your `.sm` sidecar files are never touched). On a terminal it asks first; pass `--yes` to skip the prompt.",packages:["@skill-map/cli","@skill-map/spec"]}]},{version:"0.42.0",date:"2026-05-28",kind:"user-facing",highlights:[{body:"The lens picker in **Settings \u2192 Project** now lists exactly the providers installed in your project. The phantom **Gemini** and **Cursor** options are gone, and **OpenAI Codex** / **Antigravity** now show their correct name and colour on node cards.",packages:["@skill-map/cli","@skill-map/spec"]}]},{version:"0.41.0",date:"2026-05-27",kind:"user-facing",highlights:[{body:"New `--max-nodes <N>` on `sm scan` / `sm watch` / `sm serve` caps how many files the walker accepts (default 256, bidirectional). Past the limit, a persistent banner links to **Settings \u2192 Project** to trim `.skillmapignore`.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"`sm -version` and `sm -help` now suggest `--version` / `--help` consistently, even from a directory with no skill-map project.",packages:["@skill-map/cli"]}]},{version:"0.40.1",date:"2026-05-26",kind:"user-facing",highlights:[{body:"Update chip copies the install command on click. Settings copy polished across General + Project. Path is now the second column in the list view. Filtered-empty views unified across List + Graph with a Reset button. Matrix theme retints dropdowns and toggle buttons.",packages:["@skill-map/cli"]}]},{version:"0.40.0",date:"2026-05-26",kind:"user-facing",highlights:[{body:"**Changelog tab is now bounded.** The Settings \u2192 Changelog tab shows the most recent 10 releases and links out to the full changelog on GitHub for older entries.",packages:["@skill-map/cli"]},{body:"Plugins no longer have a bundle-level switch; each extension toggles on its own. `sm plugins disable <bundle>` cascades across the bundle's extensions (multi-extension bundles need `--yes`). The kind filter narrows extensions inside matched bundles instead of leaking siblings.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"**Cleaner Plugins view.** Settings \u2192 Plugins and `sm plugins show <bundle>` no longer print a per-extension version chip for built-in plugins (they all share the CLI version). External (user-authored) plugins are unchanged and still show per-extension semver.",packages:["@skill-map/cli"]},{body:'`sm scan` summary now splits findings per severity (`N errors \xB7 M warnings \xB7 K info`), colored and collapsed when zero. The graph view gains a third palette to filter cards with errors / warnings; the perf-HUD says "links" instead of "edges".',packages:["@skill-map/cli"]},{body:"**List view** is live. Click **List** in the topbar for a sortable, filterable table of every node (Kind, Name, Tags, Path, Tokens, Stability, Stale, Issues). Click a row to inspect on the graph. Graph card chips now share the same icons as the list.",packages:["@skill-map/cli"]},{body:'Graph cards drop the corner badge for routine warnings; count + tooltip stay on the footer chip. Broken refs now escalate `sm scan` to exit 1 (were exit 0). `sm init` prints the "no provider markers" advisory as a two-line yellow `\u26A0` block.',packages:["@skill-map/cli","@skill-map/spec"]},{body:'`sm check --analyzers <id>` now errors with the valid id list when mistyped, instead of silently saying "No issues." `/invoke` and `@mention` links from any markdown body now contribute to the target\'s `IN`. `sm plugins doctor` summary spells out its bundle + extension split.',packages:["@skill-map/cli","@skill-map/spec"]}]},{version:"0.39.0",date:"2026-05-25",kind:"user-facing",highlights:[{body:"Renamed `core/field-unknown` to `core/annotation-field-unknown` so the sidecar typo-guard rule groups with the other `core/annotation-*` rules. Update references in `settings.json` or `sm check --analyzers <id>` to the new name.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"Renamed 14 built-in extension ids to a `<area>-<detail>` shape (e.g. `core/broken-ref` is now `core/reference-broken`). If you reference these by qualified id in `settings.json` or via `sm check --analyzers <id>`, update to the new names.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"In dev builds the topbar and the `sm serve` banner now show only the `dev` marker instead of pairing it with the published version number.",packages:["@skill-map/cli"]},{body:"When a scan adds or removes nodes, the graph view animates the camera to frame the new layout, refreshes auto positions so nodes never land on top of each other, and keeps your manually-dragged pins where you put them.",packages:["@skill-map/cli"]},{body:"`sm` log lines now lead with a coloured glyph per level (`\u26A0 WARN`, `\u2715 ERROR`, `\u2139 INFO`) so advisories stand out from the rest of the output.",packages:["@skill-map/cli"]},{body:"In Settings, expanding a bundle plugin (claude, antigravity, openai, agent-skills) now shows the correct per-extension state and the toggles persist, the next scan honours them. `sm plugins list` reflects effective state too.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"Plugins always list `core` first across CLI, BFF, and Settings; the project path stays visible in the topbar (truncated with `\u2026` on the LEFT so the project name reaches the eye); and the SPA reconnects on its own when `sm serve` restarts.",packages:["@skill-map/cli"]},{body:'`sm list` IN counts and the inspector\'s "Linked nodes \u2192 INCOMING" now include every `@mention` and `/invoke`, not just markdown links. `sm plugins doctor` no longer raises a spurious `claude/agent` warning on a clean install.',packages:["@skill-map/cli"]}]},{version:"0.38.0",date:"2026-05-24",kind:"user-facing",highlights:[{body:"`sm <verb> --json` now also suppresses info banners on stderr, keeping both streams clean for piping into `jq`.",packages:["@skill-map/cli"]}]},{version:"0.37.0",date:"2026-05-23",kind:"user-facing",highlights:[{body:"`sm scan` now warns once when provider markers on disk drifted since `activeProvider` was set (e.g. you added `.codex/` after picking the `claude` lens). Run `sm config set activeProvider <id>` to switch the lens, or ignore the warn and keep going, it never blocks the scan.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"**Clearer CLI errors.** Errors from `sm serve`, `bump`, `db`, `plugins`, `refresh`, `list`, `watch`, `graph`, `hooks`, and `sidecar` now print a `\u2715` headline plus a dim hint on the next line. Fixes a `sm refresh` persist-failure that rendered `{{glyph}}` literally.",packages:["@skill-map/cli"]},{body:"`sm` now detects when the local `.skill-map/` DB was written by an incompatible CLI version: newer minor or different major refuses to open with a clear hint; older same-major prints a one-shot warning and continues. Defensive parse errors include the same hint.",packages:["@skill-map/cli"]},{body:'`sm init --force` now also resets the DB (was overwriting only the config files). Solves the "Failed to read scan rows" crash on the first auto-scan when re-initialising a project that already had a DB from an older CLI version.',packages:["@skill-map/cli"]},{body:"**Two scan-time bugs fixed.** Resolved `/slash` and `@mention` links now correctly land at confidence `1.0` (were stuck at the emit floor), and the markdown-link extractor no longer flags `[label](path)` shown inside backticks or fenced code blocks as broken references.",packages:["@skill-map/cli"]},{body:"Cross-provider files (e.g. a `.codex/agents/*.toml` while the lens is `claude`) are no longer claimed by the foreign provider. They surface as plain markdown / unclassified instead, matching how the agent itself would see them at runtime.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"Card chips for incoming / outgoing links no longer count self-loops, so a node that links back to itself stops showing inflated 1 in / 1 out. The `core/self-loop` analyzer still surfaces the self-reference as a warning, only the misleading count goes away.",packages:["@skill-map/cli"]},{body:"**CLI + inspector polish.** `sm init` now prompts for the active lens when markers compete; `sm config set activeProvider` rejects unknown ids upfront; error blocks across the CLI gain a `\u2715` glyph + hint; the inspector hides self-loops and paints kinds in their canonical colour.",packages:["@skill-map/cli"]},{body:'**Inspector overhaul.** Links show numeric confidence, a Findings list, per-row issue chips, and per-site "Occurs at" lines. New "External references" section. Self-loops hidden by default. Two new analyzers flag redundant multi-form references and self-loops.',packages:["@skill-map/cli","@skill-map/spec"]},{body:"`sm scan` now warns when two extractors detect overlapping byte ranges. The graph keeps the winner; the issue panel explains which detection lost and why, so a markdown link wrapping an `@`-directive no longer looks like silent disappearing intent.",packages:["@skill-map/cli","@skill-map/spec"]}]},{version:"0.36.0",date:"2026-05-22",kind:"user-facing",highlights:[{body:"**Gemini CLI support retired.** Antigravity CLI projects (Google's May 2026 replacement) scan via the open-standard `.agents/skills/` paths under the existing `agent-skills` lens. Run `sm config set activeProvider antigravity` to flag a project as Antigravity-flavoured.",packages:["@skill-map/cli","@skill-map/spec"]},{body:"**Files whose name shadows a built-in are flagged.** A file like `.claude/commands/help.md` now emits a `warn` (Claude's runtime ignores it for its own `/help`), and incoming `/help` edges resolve to it at confidence `0.1` instead of `1.0`.",packages:["@skill-map/cli","@skill-map/spec"]}]}]};var zt=Rt;var _n=(t,r)=>r.version;function fn(t,r){if(t&1&&(b(0,"p",3),l(1),x()),t&2){let e=c();o(),p(" ",e.texts.changelogEmpty," ")}}function bn(t,r){if(t&1&&(b(0,"p",12),l(1),x()),t&2){let e=c(3);o(),p(" ",e.texts.changelogInternalRelease," ")}}function vn(t,r){if(t&1&&(b(0,"li",17),l(1),x()),t&2){let e=r.$implicit;o(),m(e)}}function xn(t,r){if(t&1&&(b(0,"ul",16),D(1,vn,2,1,"li",17,ee),x()),t&2){let e=c().$implicit,i=c(4);v("aria-label",i.texts.changelogAffectedPackages),o(),F(e.packages)}}function Cn(t,r){if(t&1&&(b(0,"li",14),oe(1,"div",15),h(2,xn,3,1,"ul",16),x()),t&2){let e=r.$implicit;o(),q("innerHTML",e.bodyHtml,et),o(),_(e.packages.length?2:-1)}}function wn(t,r){if(t&1&&(b(0,"ul",13),D(1,Cn,3,2,"li",14,ot),x()),t&2){let e=c().$implicit;o(),F(e.highlights)}}function yn(t,r){if(t&1&&(b(0,"li",8)(1,"header",9)(2,"span",10),l(3),x(),b(4,"span",11),l(5),x()(),h(6,bn,2,1,"p",12)(7,wn,3,0,"ul",13),x()),t&2){let e=r.$implicit;G("settings-changelog__entry--internal",e.kind==="internal"),v("data-testid","settings-changelog-entry-"+e.version),o(3),p("v",e.version),o(2),m(e.date),o(),_(e.kind==="internal"?6:7)}}function kn(t,r){if(t&1&&(b(0,"ol",4),D(1,yn,8,6,"li",7,_n),x()),t&2){let e=c();o(),F(e.entries())}}var Pn=10,Bt=(()=>{class t{markdown=k(kt);texts=y;entries=u([]);hasEntries=C(()=>this.entries().length>0);ngOnInit(){this.renderAll()}async renderAll(){let e=[],i=zt.entries.slice(0,Pn);for(let n of i){let d=[];for(let g of n.highlights)d.push({bodyHtml:await this.markdown.render(g.body),packages:g.packages});e.push({version:n.version,date:this.formatDate(n.date),kind:n.kind,highlights:d})}this.entries.set(e)}formatDate(e){let i=new Date(e+"T00:00:00Z");return Number.isNaN(i.getTime())?e:new Intl.DateTimeFormat("en-GB",{day:"numeric",month:"long",year:"numeric",timeZone:"UTC"}).format(i)}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=L({type:t,selectors:[["sm-settings-changelog"]],decls:11,vars:7,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"],["data-testid","settings-changelog-footer",1,"settings-changelog__footer"],["target","_blank","rel","noopener noreferrer",1,"settings-changelog__footer-link",3,"href"],[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(i,n){i&1&&(b(0,"section",0)(1,"h2",1),l(2),x(),b(3,"p",2),l(4),x(),h(5,fn,2,1,"p",3)(6,kn,3,0,"ol",4),b(7,"p",5),l(8),b(9,"a",6),l(10),x()()()),i&2&&(v("aria-labelledby","settings-changelog-heading"),o(2),p(" ",n.texts.changelogHeading," "),o(2),m(n.texts.changelogIntro),o(),_(n.hasEntries()?6:5),o(3),p(" ",n.texts.changelogFooterText," "),o(),q("href",n.texts.changelogFooterUrl,Z),o(),p(" ",n.texts.changelogFooterLinkLabel," "))},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}.settings-changelog__footer[_ngcontent-%COMP%]{margin:1.75rem 0 0;padding-top:1rem;border-top:1px solid var(--sm-border);font-size:.82rem;color:var(--sm-text-muted);text-align:center}.settings-changelog__footer-link[_ngcontent-%COMP%]{margin-left:.3rem;color:var(--p-primary-color);text-decoration:none;font-weight:500}.settings-changelog__footer-link[_ngcontent-%COMP%]:hover{text-decoration:underline}"],changeDetection:0})}return t})();var $t=`
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 Sn=["handle"],En=["input"],Mn=t=>({checked:t});function Tn(t,r){t&1&&rt(0)}function On(t,r){if(t&1&&ie(0,Tn,1,0,"ng-container",3),t&2){let e=c();f("ngTemplateOutlet",e.handleTemplate||e._handleTemplate)("ngTemplateOutletContext",dt(2,Mn,e.checked()))}}var In=`
116
- ${$t}
117
-
118
- p-toggleswitch.ng-invalid.ng-dirty > .p-toggleswitch-slider {
119
- border-color: dt('toggleswitch.invalid.border.color');
120
- }
121
- `,jn={root:{position:"relative"}},Dn={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"},Gt=(()=>{class t extends ut{name="toggleswitch";style=In;classes=Dn;inlineStyles=jn;static \u0275fac=(()=>{let e;return function(n){return(e||(e=Le(t)))(n||t)}})();static \u0275prov=_e({token:t,factory:t.\u0275fac})}return t})();var Ht=new Qe("TOGGLESWITCH_INSTANCE"),Fn={provide:xt,useExisting:We(()=>me),multi:!0},me=(()=>{class t extends Ct{componentName="ToggleSwitch";$pcToggleSwitch=k(Ht,{optional:!0,skipSelf:!0})??void 0;bindDirectiveInstance=k(he,{self:!0});onAfterViewChecked(){this.bindDirectiveInstance.setAttrs(this.ptms(["host","root"]))}styleClass;tabindex;inputId;readonly;trueValue=!0;falseValue=!1;ariaLabel;size=R();ariaLabelledBy;autofocus;onChange=new Ze;input;handleTemplate;_handleTemplate;focused=!1;_componentStyle=k(Gt);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(n){return(e||(e=Le(t)))(n||t)}})();static \u0275cmp=L({type:t,selectors:[["p-toggleswitch"],["p-toggleSwitch"],["p-toggle-switch"]],contentQueries:function(i,n,d){if(i&1&&at(d,Sn,4)(d,xe,4),i&2){let g;fe(g=be())&&(n.handleTemplate=g.first),fe(g=be())&&(n.templates=g)}},viewQuery:function(i,n){if(i&1&&st(En,5),i&2){let d;fe(d=be())&&(n.input=d.first)}},hostVars:7,hostBindings:function(i,n){i&1&&w("click",function(g){return n.onHostClick(g)}),i&2&&(v("data-p-checked",n.checked())("data-p-disabled",n.$disabled())("data-p",n.dataP),lt(n.sx("root")),ue(n.cn(n.cx("root"),n.styleClass)))},inputs:{styleClass:"styleClass",tabindex:[2,"tabindex","tabindex",gt],inputId:"inputId",readonly:[2,"readonly","readonly",Ve],trueValue:"trueValue",falseValue:"falseValue",ariaLabel:"ariaLabel",size:[1,"size"],ariaLabelledBy:"ariaLabelledBy",autofocus:[2,"autofocus","autofocus",Ve]},outputs:{onChange:"onChange"},features:[re([Fn,Gt,{provide:Ht,useExisting:t},{provide:ht,useExisting:t}]),nt([he]),it],decls:5,vars:22,consts:[["input",""],["type","checkbox","role","switch",3,"focus","blur","checked","pAutoFocus","pBind"],[3,"pBind"],[4,"ngTemplateOutlet","ngTemplateOutletContext"]],template:function(i,n){i&1&&(s(0,"input",1,0),w("focus",function(){return n.onFocus()})("blur",function(){return n.onBlur()}),a(),s(2,"div",2)(3,"div",2),h(4,On,1,4,"ng-container"),a()()),i&2&&(ue(n.cx("input")),f("checked",n.checked())("pAutoFocus",n.autofocus)("pBind",n.ptm("input")),v("id",n.inputId)("required",n.required()?"":void 0)("disabled",n.$disabled()?"":void 0)("aria-checked",n.checked())("aria-labelledby",n.ariaLabelledBy)("aria-label",n.ariaLabel)("name",n.name())("tabindex",n.tabindex),o(2),ue(n.cx("slider")),f("pBind",n.ptm("slider")),v("data-p",n.dataP),o(),ue(n.cx("handle")),f("pBind",n.ptm("handle")),v("data-p",n.dataP),o(),_(n.handleTemplate||n._handleTemplate?4:-1))},dependencies:[mt,pt,_t,Ce,ft,he],encapsulation:2,changeDetection:0})}return t})(),Oe=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=tt({type:t});static \u0275inj=Xe({imports:[me,Ce,Ce]})}return t})();var Nn=(t,r)=>r.key;function Ln(t,r){if(t&1&&(s(0,"p-message",3),l(1),a()),t&2){let e=c();f("closable",!1),o(),I(" ",e.texts.general.loadErrorPrefix," ",r," ")}}function An(t,r){if(t&1&&(s(0,"p-message",4),l(1),a()),t&2){let e=c();f("closable",!1),o(),I(" ",e.texts.general.saveErrorPrefix," ",r," ")}}function Vn(t,r){t&1&&(s(0,"div",15),l(1),a()),t&2&&(o(),m(r))}function Rn(t,r){if(t&1){let e=N();s(0,"li",6)(1,"div",8)(2,"div",9),l(3),a(),s(4,"div",10),l(5),a(),h(6,Vn,2,1,"div",15),a(),s(7,"p-toggleswitch",16),w("ngModelChange",function(n){let d=S(e).$implicit,g=c();return E(g.onToggle(d,n))}),a()()}if(t&2){let e,i=r.$implicit,n=c();v("data-testid","settings-general-row-"+i.key),o(3),m(n.toggleLabel(i.key)),o(2),p(" ",n.toggleDescription(i.key)," "),o(),_((e=n.toggleHint(i.key))?6:-1,e),o(),f("ngModel",n.valueOf(i))("disabled",n.loading()||n.isPending(i.key)||n.preferences()===null),v("data-testid","settings-general-toggle-"+i.key)}}function zn(t,r){if(t&1&&(s(0,"span",17),l(1),a()),t&2){let e=r.$implicit;o(),p(" ",e.label," ")}}var Bn=[{key:"updateCheck.enabled",read:t=>t.updateCheck.enabled,patch:t=>({updateCheck:{enabled:t}})},{key:"telemetry",read:t=>t.telemetry.errorsEnabled&&t.telemetry.usageCliEnabled&&t.telemetry.usageUiEnabled,patch:t=>({telemetry:{errorsEnabled:t,usageCliEnabled:t,usageUiEnabled:t}})}],Ie="none";function $n(t){return t===null?Ie:t}function Gn(t){return t===Ie?null:t}var Xt=(()=>{class t{dataSource=k(W);themeService=k(Se);visible=R.required();texts=y;toggles=Bn;extraThemeOptions=[{value:Ie,label:y.general.extraTheme.options.none.label,description:y.general.extraTheme.options.none.description},...St.map(e=>({value:e.id,label:e.label,description:e.description}))];extraThemeWire=C(()=>$n(this.themeService.extraTheme()));loading=u(!1);loadError=u(null);saveError=u(null);preferences=u(null);pending=u(new Set);constructor(){V(()=>{this.visible()&&this.refresh()})}toggleLabel(e){return y.general.toggles[e].label}toggleDescription(e){return y.general.toggles[e].description}toggleHint(e){let i=y.general.toggles[e];return"hint"in i?i.hint:null}valueOf(e){let i=this.preferences();return i?e.read(i):!1}isPending(e){return this.pending().has(e)}onToggle(e,i){this.runToggle(e,i)}onExtraThemeChange(e){this.themeService.setExtraTheme(Gn(e??Ie))}async refresh(){this.loading.set(!0),this.loadError.set(null),this.saveError.set(null);try{let e=await this.dataSource.getPreferences();this.preferences.set(e)}catch(e){this.loadError.set(Kt(e)),this.preferences.set(null)}finally{this.loading.set(!1)}}async runToggle(e,i){if(this.pending().has(e.key))return;let n=new Set(this.pending());n.add(e.key),this.pending.set(n),this.saveError.set(null);try{let d=await this.dataSource.setPreferences(e.patch(i));this.preferences.set(d)}catch(d){this.saveError.set(Kt(d))}finally{let d=new Set(this.pending());d.delete(e.key),this.pending.set(d)}}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=L({type:t,selectors:[["sm-settings-general"]],inputs:{visible:[1,"visible"]},decls:22,vars:12,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"],["data-testid","settings-general-row-extra-theme",1,"settings-general__row"],[1,"settings-general__row-text"],[1,"settings-general__row-label"],[1,"settings-general__row-description"],["optionLabel","label","optionValue","value","data-testid","settings-general-extra-theme",3,"ngModelChange","options","ngModel","allowEmpty"],["pTemplate","item"],["data-testid","settings-general-storage-hint",1,"settings-general__storage-hint"],[1,"settings-general__storage-hint-path"],[1,"settings-general__row-hint"],[3,"ngModelChange","ngModel","disabled"],["data-testid","settings-general-extra-theme-option"]],template:function(i,n){if(i&1&&(s(0,"section",0)(1,"h2",1),l(2),a(),s(3,"p",2),l(4),a(),h(5,Ln,2,3,"p-message",3),h(6,An,2,3,"p-message",4),s(7,"ul",5),D(8,Rn,8,7,"li",6,Nn),s(10,"li",7)(11,"div",8)(12,"div",9),l(13),a(),s(14,"div",10),l(15),a()(),s(16,"p-selectbutton",11),w("ngModelChange",function(g){return n.onExtraThemeChange(g)}),ie(17,zn,2,1,"ng-template",12),a()()(),s(18,"p",13),l(19),s(20,"code",14),l(21),a()()()),i&2){let d,g;v("aria-labelledby","settings-general-heading"),o(2),p(" ",n.texts.general.heading," "),o(2),m(n.texts.general.intro),o(),_((d=n.loadError())?5:-1,d),o(),_((g=n.saveError())?6:-1,g),o(2),F(n.toggles),o(5),p(" ",n.texts.general.extraTheme.label," "),o(2),p(" ",n.texts.general.extraTheme.description," "),o(),f("options",n.extraThemeOptions)("ngModel",n.extraThemeWire())("allowEmpty",!1),o(3),p(" ",n.texts.general.storageHintLabel," "),o(2),m(n.texts.general.storageHintPath)}},dependencies:[ce,le,de,pe,ge,xe,Ft,Dt,Oe,me],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[_ngcontent-%COMP%] p-toggleswitch[_ngcontent-%COMP%]{flex-shrink: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}.settings-general__row-hint[_ngcontent-%COMP%]{margin-top:.2rem;font-size:.75rem;font-style:italic;color:var(--sm-text-muted)}.settings-general__storage-hint[_ngcontent-%COMP%]{margin:2rem 0 0;font-size:.75rem;line-height:1.5;color:var(--sm-text-muted);opacity:.65}.settings-general__storage-hint-path[_ngcontent-%COMP%]{font-family:var(--p-monospace-font-family);font-size:.72rem;padding:.05rem .3rem;border-radius:.25rem;background:var(--p-content-background);border:1px solid var(--p-content-border-color)}"],changeDetection:0})}return t})();function Kt(t){return t instanceof H||t instanceof Error?t.message:String(t)}var Re={provider:"#7C3AED",extractor:"#A78BFA",analyzer:"#5FD17C",action:"#00C853",formatter:"#5BC0EB",hook:"#FFB627"};function Qt(t){let r=t.toLowerCase();return Re[r]??"currentColor"}var De=["all",...Object.keys(Re)],je=["core","claude","antigravity","openai","agent-skills"];function X(t,r){return`${t}/${r}`}function ze(t){let r=new Map;for(let e of t)if(!Fe(e.status)&&e.extensions)for(let i of e.extensions)r.set(X(e.id,i.id),i.enabled);return r}function Be(t){let r=t.target;return!r||typeof r.closest!="function"?!1:r.closest('label, button, input, [role="switch"], p-toggleswitch')!==null}function Yt(t,r){if(Hn(t,r))return[t];if(!t.extensions)return[];let e=t.extensions.filter(i=>Un(i,r));return e.length===0?[]:[J(K({},t),{extensions:e})]}function Jt(t,r){if(!t.extensions)return[];let e=t.extensions.filter(i=>i.kind.toLowerCase()===r);return e.length===0?[]:[J(K({},t),{extensions:e})]}function Zt(t){if(t.locked)return[];if(!t.extensions)return[t];let r=t.extensions.filter(e=>!e.locked);return r.length===0?[]:[J(K({},t),{extensions:r})]}function en(t){return t.slice().sort((e,i)=>{let n=je.indexOf(e.id),d=je.indexOf(i.id),g=n>=0?n:je.length,P=d>=0?d:je.length;return g!==P?g-P:e.id.localeCompare(i.id)}).map(e=>{if(!e.extensions)return e;let i=e.extensions.slice().sort((n,d)=>n.id.localeCompare(d.id));return J(K({},e),{extensions:i})})}function Hn(t,r){return!!(t.id.toLowerCase().includes(r)||t.description&&t.description.toLowerCase().includes(r))}function Un(t,r){return!!(t.id.toLowerCase().includes(r)||t.description&&t.description.toLowerCase().includes(r))}function Fe(t){return t==="incompatible-spec"||t==="invalid-manifest"||t==="load-error"||t==="id-collision"}function $e(t){return t instanceof H||t instanceof Error?t.message:String(t)}function tn(t,r){return Fe(t.status)?r.statusFailure[t.status]??t.status:t.status==="enabled"?r.enabledLabel:r.disabledLabel}function nn(t,r){switch(t){case"built-in":return r.sourceBuiltIn;case"project":return r.sourceProject}}var Ge="sm.settings.plugins.collapsed",He="sm.settings.plugins.kind-filter";function on(){let t=null;try{t=localStorage.getItem(Ge)}catch{return new Set}if(!t)return new Set;let r;try{r=JSON.parse(t)}catch{return new Set}if(!Array.isArray(r))return new Set;let e=new Set;for(let i of r)typeof i=="string"&&i.length>0&&e.add(i);return e}function rn(t){try{if(t.size===0){localStorage.removeItem(Ge);return}localStorage.setItem(Ge,JSON.stringify([...t]))}catch{}}function an(){let t=null;try{t=localStorage.getItem(He)}catch{return"all"}return t&&De.includes(t)?t:"all"}function sn(t){try{if(t==="all"){localStorage.removeItem(He);return}localStorage.setItem(He,t)}catch{}}function Ue(){Ye(Ue);let t=u(on());V(()=>rn(t()));let r=i=>{let n=new Set(t());n.has(i)?n.delete(i):n.add(i),t.set(n)},e=i=>!t().has(i);return{collapsed:t.asReadonly(),toggleExpanded:r,isExpanded:e}}function ln(t){let r=u(""),e=C(()=>r().trim().length>0),i=u(an()),n=C(()=>i()!=="all");V(()=>sn(i()));let d=C(()=>en(t.plugins().flatMap(Zt))),g=C(()=>{let z=r().trim().toLowerCase(),Q=i(),B=d();return Q!=="all"&&(B=B.flatMap(Y=>Jt(Y,Q))),z.length>0&&(B=B.flatMap(Y=>Yt(Y,z))),B});return{searchText:r,searchActive:e,kindFilter:i,setKindFilter:z=>{i.set(z)},isKindFilterActive:z=>i()===z,kindFilterActive:n,kindFilterOptions:De,visiblePlugins:d,filteredPlugins:g}}var Kn=new Set(["claude","antigravity","openai","agent-skills","core"]),qn="external_plugin";function Wn(t){let r=t.indexOf("/"),e=r>0?t.slice(0,r):t;return Kn.has(e)?t:qn}function Ke(t){let r=new Set;for(let e of t)r.add(Wn(e));return[...r].sort()}function dn(t){let r=u(!1),e=u(null),i=u(null),n=u([]),d=u(new Map),g=u(new Map),P=u(!1),A=C(()=>{let T=d(),j=g(),U=new Set;for(let[$,M]of j)T.get($)!==M&&U.add($);return U}),z=C(()=>A().size>0),Q=C(()=>n().some(T=>Fe(T.status))),B=C(()=>{let T=g();for(let j of n()){if(j.startsAsDisabled!==!0)continue;let U=j.extensions??[];for(let $ of U)if(T.get(X(j.id,$.id))===!0)return!0}return!1});return{plugins:n,loading:r,loadError:e,toggleError:i,applying:P,hasFailureRows:Q,originalState:d,pendingState:g,dirtyIds:A,hasPendingChanges:z,restartRecommended:B,pendingEnabled:T=>g().get(T)??!1,isDirty:T=>A().has(T),refresh:async()=>{r.set(!0),e.set(null),i.set(null);try{let T=await t.dataSource.listPlugins();n.set([...T.items]);let j=ze(T.items);d.set(j),g.set(new Map(j))}catch(T){e.set($e(T)),n.set([]),d.set(new Map),g.set(new Map)}finally{r.set(!1)}},onExtensionToggle:(T,j,U)=>{if(P())return;let $=X(T,j.id),M=new Map(g());M.set($,U),g.set(M)},applyChanges:async()=>{if(P())return{ok:!1};let T=A();if(T.size===0)return{ok:!1};let j=[],U=g();for(let M of T)j.push({id:M,enabled:U.get(M)??!1});P.set(!0),i.set(null);let $=!1;try{let M=await t.dataSource.applyPluginChanges(j);n.set([...M.items]);let qe=ze(M.items);d.set(qe),g.set(new Map(qe)),t.scanTrigger.run(),$=!0}catch(M){i.set($e(M))}finally{P.set(!1)}return $&&Pt("plugin.apply",{enabled:Ke(j.filter(M=>M.enabled).map(M=>M.id)),disabled:Ke(j.filter(M=>!M.enabled).map(M=>M.id))}),{ok:$}},discardChanges:()=>{g.set(new Map(d())),i.set(null)}}}var cn=(t,r)=>r.id;function Yn(t,r){if(t&1&&l(0),t&2){let e=c().$implicit,i=c();p(" ",e==="all"?i.texts.pluginsKindFilterAll:e," ")}}function Jn(t,r){if(t&1){let e=N();s(0,"p-togglebutton",16),w("ngModelChange",function(){let n=S(e).$implicit,d=c();return E(d.setKindFilter(n))}),ie(1,Yn,1,1,"ng-template",null,0,ct),a()}if(t&2){let e=r.$implicit,i=c();Ae("--kind-color",e==="all"?null:i.kindTint(e)),f("ngModel",i.isKindFilterActive(e))("styleClass","settings-plugins__kind-chip"+(e==="all"?" is-all":""))("ariaLabel",i.texts.pluginsKindFilterOptionA11y(e,!i.isKindFilterActive(e))),v("data-testid","settings-plugins-kind-chip-"+e)}}function Zn(t,r){if(t&1&&(s(0,"p-message",11),l(1),a()),t&2){let e=c();f("closable",!1),o(),p(" ",e.texts.unsavedChangesMessage(e.dirtyIds().size)," ")}}function ei(t,r){if(t&1&&(s(0,"p",12),O(1,"i",17),l(2),a()),t&2){let e=c();o(2),p(" ",e.texts.loading," ")}}function ti(t,r){if(t&1&&(s(0,"p-message",13),l(1),a()),t&2){let e=c();f("closable",!1),o(),I(" ",e.texts.errorPrefix," ",e.loadError()," ")}}function ni(t,r){if(t&1&&(s(0,"p",14),l(1),a()),t&2){let e=c();o(),p(" ",e.texts.empty," ")}}function ii(t,r){if(t&1){let e=N();s(0,"p-message",22),w("onClose",function(){S(e);let n=c(2);return E(n.toggleError.set(null))}),l(1),a()}if(t&2){let e=c(2);f("closable",!0),o(),I(" ",e.texts.toggleErrorPrefix," ",e.toggleError()," ")}}function oi(t,r){if(t&1&&(s(0,"p",19),O(1,"i",23),l(2),a()),t&2){let e=c(2);o(2),p(" ",e.texts.pluginsSearchEmpty(e.searchText())," ")}}function ri(t,r){if(t&1){let e=N();s(0,"button",38),w("click",function(n){S(e);let d=c().$implicit;return c(2).toggleExpanded(d.id),E(n.stopPropagation())}),O(1,"i",39),a()}if(t&2){let e=c().$implicit,i=c(2);v("aria-expanded",i.isExpanded(e.id))("aria-label",i.isExpanded(e.id)?i.texts.collapseLabel:i.texts.expandLabel)("data-testid","settings-plugin-expand-"+e.id),o(),G("fa-chevron-down",i.isExpanded(e.id))("fa-chevron-right",!i.isExpanded(e.id))}}function ai(t,r){t&1&&O(0,"span",27)}function si(t,r){if(t&1&&(s(0,"span",32),l(1),a()),t&2){let e=c().$implicit;o(),p("v",e.version)}}function li(t,r){if(t&1&&(s(0,"span",33),O(1,"i",40),l(2),a()),t&2){let e=c().$implicit,i=c(2);f("title",i.texts.lockedTooltip),v("data-testid","settings-row-locked-"+e.id),o(2),p(" ",i.texts.lockedLabel," ")}}function di(t,r){if(t&1&&(s(0,"p",34),l(1),a()),t&2){let e=c().$implicit;o(),m(e.description)}}function ci(t,r){if(t&1&&(s(0,"span",35),l(1),a()),t&2){let e=c().$implicit;o(),m(e.reason)}}function gi(t,r){if(t&1&&(s(0,"p",36),O(1,"i",41),l(2),a()),t&2){let e=c().$implicit,i=c(2);v("data-testid","settings-row-starts-disabled-"+e.id),o(2),p(" ",i.texts.startsAsDisabledRowHint," ")}}function pi(t,r){if(t&1&&(s(0,"span",49),l(1),a()),t&2){let e=c().$implicit;o(),p("v",e.version)}}function mi(t,r){if(t&1&&(s(0,"span",33),O(1,"i",40),l(2),a()),t&2){let e=c().$implicit,i=c(2).$implicit,n=c(2);f("title",n.texts.lockedTooltip),v("data-testid","settings-extrow-locked-"+i.id+"-"+e.id),o(2),p(" ",n.texts.lockedLabel," ")}}function ui(t,r){if(t&1&&(s(0,"p",50),l(1),a()),t&2){let e=c().$implicit;o(),m(e.description)}}function hi(t,r){if(t&1){let e=N();s(0,"li",43),w("click",function(n){let d=S(e).$implicit,g=c(2).$implicit,P=c(2);return E(P.onSubrowClick(g.id,d,n))})("keydown.enter",function(n){let d=S(e).$implicit,g=c(2).$implicit,P=c(2);return E(P.onSubrowClick(g.id,d,n))})("keydown.space",function(n){let d=S(e).$implicit,g=c(2).$implicit,P=c(2);return n.preventDefault(),E(P.onSubrowClick(g.id,d,n))}),s(1,"div",44)(2,"div",45),O(3,"span",46),s(4,"span",47),l(5),a(),s(6,"span",48),l(7),a(),h(8,pi,2,1,"span",49),h(9,mi,3,3,"span",33),a(),h(10,ui,2,1,"p",50),a(),s(11,"p-toggleswitch",51),w("ngModelChange",function(n){let d=S(e).$implicit,g=c(2).$implicit,P=c(2);return E(P.onExtensionToggle(g.id,d,n))}),a()()}if(t&2){let e=r.$implicit,i=c(2).$implicit,n=c(2);G("is-clickable",n.extensionToggleInteractive(e))("is-dirty",n.isDirty(n.qualifiedExt(i.id,e.id))),v("aria-label",n.texts.a11y.extensionRow(n.qualifiedExt(i.id,e.id)))("data-testid","settings-extrow-"+i.id+"-"+e.id),o(3),G("settings-plugins__dirty-dot--visible",n.isDirty(n.qualifiedExt(i.id,e.id))),v("data-testid","settings-extrow-dirty-"+i.id+"-"+e.id),o(2),m(e.id),o(),Ae("--kind-color",n.kindTint(e.kind)),o(),m(e.kind),o(),_(i.source==="project"?8:-1),o(),_(e.locked?9:-1),o(),_(e.description?10:-1),o(),f("ngModel",n.pendingEnabled(n.qualifiedExt(i.id,e.id)))("disabled",n.applying()||!!e.locked)("ariaLabel",n.texts.a11y.extensionToggle(n.qualifiedExt(i.id,e.id),!n.pendingEnabled(n.qualifiedExt(i.id,e.id)))),v("data-testid","settings-ext-toggle-"+i.id+"-"+e.id)}}function _i(t,r){if(t&1&&(s(0,"ul",37),D(1,hi,12,20,"li",42,cn),a()),t&2){let e=c().$implicit;v("data-testid","settings-extensions-"+e.id),o(),F(e.extensions)}}function fi(t,r){if(t&1){let e=N();s(0,"li",24)(1,"div",25),w("click",function(n){let d=S(e).$implicit,g=c(2);return E(g.onRowClick(d,n))})("keydown.enter",function(n){let d=S(e).$implicit,g=c(2);return E(g.onRowClick(d,n))})("keydown.space",function(n){let d=S(e).$implicit,g=c(2);return n.preventDefault(),E(g.onRowClick(d,n))}),h(2,ri,2,7,"button",26)(3,ai,1,0,"span",27),s(4,"div",28)(5,"div",29)(6,"span",30),l(7),a(),s(8,"span",31),l(9),a(),h(10,si,2,1,"span",32),h(11,li,3,3,"span",33),a(),h(12,di,2,1,"p",34),h(13,ci,2,1,"span",35),h(14,gi,3,2,"p",36),a()(),h(15,_i,3,1,"ul",37),a()}if(t&2){let e=r.$implicit,i=c(2);G("is-clickable",i.rowIsClickable(e)),v("data-testid","settings-row-"+e.id),o(),v("aria-label",i.texts.a11y.pluginRow(e.id)),o(),_(i.canExpandExtensions(e)?2:3),o(5),m(e.id),o(2),m(i.sourceLabel(e.source)),o(),_(e.source==="project"&&e.version?10:-1),o(),_(e.locked?11:-1),o(),_(e.description?12:-1),o(),_(e.reason?13:-1),o(),_(i.showStartsAsDisabledHint(e)?14:-1),o(),_(i.canExpandExtensions(e)&&i.isExpanded(e.id)?15:-1)}}function bi(t,r){if(t&1&&(h(0,ii,2,3,"p-message",18),h(1,oi,3,1,"p",19),s(2,"ul",20),D(3,fi,16,13,"li",21,cn),a()),t&2){let e=c();_(e.toggleError()?0:-1),o(),_(e.searchActive()&&e.filteredPlugins().length===0?1:-1),o(2),F(e.filteredPlugins())}}function vi(t,r){if(t&1&&(s(0,"em",52),l(1),a()),t&2){let e=c(2);o(),p(" ",e.texts.startsAsDisabledFooterHint," ")}}function xi(t,r){if(t&1){let e=N();s(0,"footer",15),h(1,vi,2,1,"em",52),s(2,"p-button",53),w("onClick",function(){S(e);let n=c();return E(n.discardChanges())}),a(),s(3,"p-button",54),w("onClick",function(){S(e);let n=c();return E(n.applyChanges())}),a()()}if(t&2){let e=c();o(),_(e.restartRecommended()?1:-1),o(),f("text",!0)("label",e.texts.discardChanges)("ariaLabel",e.texts.discardA11y)("disabled",e.applying()),o(),f("label",e.texts.applyAndClose)("ariaLabel",e.texts.applyA11y)("disabled",e.applying())("loading",e.applying())}}var gn=(()=>{class t{dataSource=k(W);scanTrigger=k(At);buffer=k(Te);destroyRef=k(Je);visible=R.required();applied=ve();texts=y;pluginState=dn({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;pluginCollapse=Ue();collapsed=this.pluginCollapse.collapsed;pluginFilter=ln({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(){V(()=>{this.visible()&&this.pluginState.refresh()});let e={dirtyIds:this.pluginState.dirtyIds,applyChanges:async()=>{let i=await this.pluginState.applyChanges();return i.ok&&this.applied.emit(),i},discardChanges:()=>this.pluginState.discardChanges()};this.buffer.register(e),this.destroyRef.onDestroy(()=>this.buffer.deregister(e))}setKindFilter(e){this.pluginFilter.setKindFilter(e)}isKindFilterActive(e){return this.pluginFilter.isKindFilterActive(e)}toggleExpanded(e){this.pluginCollapse.toggleExpanded(e)}isExpanded(e){return this.pluginCollapse.isExpanded(e)}pendingEnabled(e){return this.pluginState.pendingEnabled(e)}isDirty(e){return this.pluginState.isDirty(e)}showStartsAsDisabledHint(e){return!e.startsAsDisabled||!e.extensions?!1:e.extensions.some(i=>this.pendingEnabled(X(e.id,i.id)))}onExtensionToggle(e,i,n){this.pluginState.onExtensionToggle(e,i,n)}async applyChanges(){(await this.pluginState.applyChanges()).ok&&this.applied.emit()}discardChanges(){this.pluginState.discardChanges()}canExpandExtensions(e){return(e.extensions?.length??0)>0}extensionToggleInteractive(e){return!e.locked}rowIsClickable(e){return this.canExpandExtensions(e)}onRowClick(e,i){Be(i)||this.canExpandExtensions(e)&&this.toggleExpanded(e.id)}onSubrowClick(e,i,n){if(Be(n)||!this.extensionToggleInteractive(i))return;let d=X(e,i.id);this.onExtensionToggle(e,i,!this.pendingEnabled(d))}statusLabel(e){return tn(e,this.texts)}sourceLabel(e){return nn(e,this.texts)}qualifiedExt(e,i){return X(e,i)}kindTint(e){return Qt(e)}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=L({type:t,selectors:[["sm-settings-plugins"]],inputs:{visible:[1,"visible"]},outputs:{applied:"applied"},decls:19,vars:9,consts:[["content",""],["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"],[3,"ngModel","styleClass","--kind-color","ariaLabel"],["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"],[3,"ngModelChange","ngModel","styleClass","ariaLabel"],["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-clickable"],["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"],[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-description"],[1,"settings-plugins__row-reason"],[1,"settings-plugins__row-hint"],["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"],["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"],["aria-hidden","true",1,"settings-plugins__dirty-dot"],[1,"settings-plugins__subrow-id"],[1,"settings-plugins__subrow-kind"],[1,"settings-plugins__subrow-version"],[1,"settings-plugins__subrow-description"],[3,"ngModelChange","ngModel","disabled","ariaLabel"],["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(i,n){i&1&&(s(0,"section",1)(1,"div",2)(2,"header",3)(3,"h2",4),l(4),a(),s(5,"p",5),l(6),a()(),s(7,"p-iconfield",6),O(8,"p-inputicon",7),s(9,"input",8),w("ngModelChange",function(g){return n.searchText.set(g)}),a()(),s(10,"div",9),D(11,Jn,3,6,"p-togglebutton",10,ee),a(),h(13,Zn,2,2,"p-message",11),h(14,ei,3,1,"p",12)(15,ti,2,3,"p-message",13)(16,ni,2,1,"p",14)(17,bi,5,2),a(),h(18,xi,4,9,"footer",15),a()),i&2&&(o(4),p(" ",n.texts.pluginsHeading," "),o(2),m(n.texts.pluginsIntro),o(3),f("placeholder",n.texts.pluginsSearchPlaceholder)("ngModel",n.searchText()),v("aria-label",n.texts.pluginsSearchA11y),o(),v("aria-label",n.texts.pluginsKindFilterA11y),o(),F(n.kindFilterOptions),o(2),_(n.hasPendingChanges()?13:-1),o(),_(n.loading()?14:n.loadError()?15:n.plugins().length===0?16:17),o(4),_(n.hasPendingChanges()?18:-1))},dependencies:[ce,Pe,le,de,se,we,Mt,Et,Ot,Tt,Me,Ee,pe,ge,yt,wt,Oe,me],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;height:100%;overflow:hidden;--kind-color: var(--p-text-color)}.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);--p-togglebutton-padding: .25rem .625rem;--p-togglebutton-content-padding: 0;--p-togglebutton-content-checked-background: transparent;--p-togglebutton-content-checked-shadow: none;--p-togglebutton-border-radius: var(--sm-radius-pill);--p-togglebutton-background: color-mix(in oklab, var(--chip-accent) 8%, transparent);--p-togglebutton-hover-background: color-mix(in oklab, var(--chip-accent) 18%, transparent);--p-togglebutton-checked-background: color-mix(in oklab, var(--chip-accent) 80%, transparent);--p-togglebutton-border-color: color-mix(in oklab, var(--chip-accent) 35%, transparent);--p-togglebutton-hover-border-color: color-mix(in oklab, var(--chip-accent) 55%, transparent);--p-togglebutton-checked-border-color: var(--chip-accent);--p-togglebutton-color: color-mix(in oklab, var(--chip-accent) 70%, var(--p-text-color));--p-togglebutton-hover-color: color-mix(in oklab, var(--chip-accent) 70%, var(--p-text-color));--p-togglebutton-checked-color: var(--p-surface-50);font-size:.75rem;font-weight:500;letter-spacing:.02em;text-transform:lowercase}.app-dark[_nghost-%COMP%] .settings-plugins__kind-chip[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .settings-plugins__kind-chip[_ngcontent-%COMP%]{--p-togglebutton-background: color-mix(in oklab, var(--chip-accent) 14%, transparent);--p-togglebutton-hover-background: color-mix(in oklab, var(--chip-accent) 26%, transparent);--p-togglebutton-checked-background: color-mix(in oklab, var(--chip-accent) 70%, transparent);--p-togglebutton-border-color: color-mix(in oklab, var(--chip-accent) 50%, transparent);--p-togglebutton-hover-border-color: color-mix(in oklab, var(--chip-accent) 70%, transparent);--p-togglebutton-color: color-mix(in oklab, var(--chip-accent) 80%, var(--p-text-color));--p-togglebutton-hover-color: color-mix(in oklab, var(--chip-accent) 80%, var(--p-text-color));--p-togglebutton-checked-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-plugin[_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;position:relative}.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) 14%,transparent);border:1px solid color-mix(in oklab,var(--kind-color) 38%,transparent);color:color-mix(in oklab,var(--kind-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) 22%,transparent);border-color:color-mix(in oklab,var(--kind-color) 55%,transparent);color:color-mix(in oklab,var(--kind-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;position:relative}.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%]{position:absolute;left:-.75rem;top:50%;transform:translateY(-50%);width:.5rem;height:.5rem;border-radius:50%;background:var(--p-warn-color);visibility:hidden}.settings-plugins__dirty-dot--visible[_ngcontent-%COMP%]{visibility:visible}.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})}return t})();function wi(t,r){if(t&1&&(s(0,"p-message",4),l(1),a()),t&2){let e=c();f("closable",!1),o(),I(" ",e.texts.project.loadErrorPrefix," ",r," ")}}function yi(t,r){if(t&1&&(s(0,"p-message",5),l(1),a()),t&2){let e=c();f("closable",!1),o(),I(" ",e.texts.project.saveErrorPrefix," ",r," ")}}function ki(t,r){t&1&&(s(0,"p-message",6),l(1),a()),t&2&&(f("closable",!1),o(),p(" ",r," "))}function Pi(t,r){if(t&1&&(s(0,"span",12),l(1),a()),t&2){let e=c();o(),m(e.texts.project.activeProviderSourceAutodetect)}}function Si(t,r){if(t&1&&(s(0,"span",12),l(1),a()),t&2){let e=c();o(),m(e.texts.project.activeProviderSourceNone)}}function Ei(t,r){if(t&1&&(s(0,"span",12),l(1),a()),t&2){let e=c(),i=c();o(),I(" ",i.texts.project.activeProviderDetectedPrefix," ",e," ")}}function Mi(t,r){t&1&&h(0,Ei,2,2,"span",12),t&2&&_(r.length>0?0:-1)}function Ti(t,r){if(t&1&&(s(0,"p-message",15),l(1),a()),t&2){let e=c();f("closable",!1),o(),I(" ",e.texts.project.loadErrorPrefix," ",r," ")}}function Oi(t,r){if(t&1&&(s(0,"p-message",16),l(1),a()),t&2){let e=c();f("closable",!1),o(),I(" ",e.texts.project.saveErrorPrefix," ",r," ")}}function Ii(t,r){if(t&1){let e=N();s(0,"li",19)(1,"span",27),l(2),a(),s(3,"p-button",28),w("onClick",function(){let n=S(e).$implicit,d=c();return E(d.onReferencePathRemove(n))}),a()()}if(t&2){let e=r.$implicit,i=c();o(2),m(e),o(),f("label",i.texts.project.removePathLabel)("outlined",!0)("disabled",i.isPending("scan.referencePaths")),v("data-testid","settings-project-reference-paths-remove")}}function ji(t,r){if(t&1&&(s(0,"p-message",22),l(1),a()),t&2){let e=c();f("closable",!1),o(),I(" ",e.texts.project.loadErrorPrefix," ",r," ")}}function Di(t,r){if(t&1&&(s(0,"p-message",23),l(1),a()),t&2){let e=c();f("closable",!1),o(),I(" ",e.texts.project.saveErrorPrefix," ",r," ")}}function Fi(t,r){if(t&1){let e=N();s(0,"li",19)(1,"span",27),l(2),a(),s(3,"p-button",28),w("onClick",function(){let n=S(e).$implicit,d=c();return E(d.onIgnorePatternRemove(n))}),a()()}if(t&2){let e=r.$implicit,i=c();o(2),m(e),o(),f("label",i.texts.project.removeIgnorePatternLabel)("outlined",!0)("disabled",i.isPending("ignore.patterns")),v("data-testid","settings-project-ignore-patterns-remove")}}var Ni=/[\n\r\x00-\x1F\x7F]/,pn=(()=>{class t{dataSource=k(W);confirmation=k(ae);providerRegistry=k(Nt);visible=R.required();texts=y;loading=u(!1);loadError=u(null);saveError=u(null);preferences=u(null);pending=u(new Set);newReferencePath=u("");referencePaths=C(()=>this.preferences()?.scan.referencePaths??[]);ignoreLoadError=u(null);ignoreSaveError=u(null);ignoreEnvelope=u(null);newIgnorePattern=u("");ignorePatterns=C(()=>this.ignoreEnvelope()?.patterns??[]);activeProviderEnvelope=u(null);activeProviderLoadError=u(null);activeProviderSaveError=u(null);activeProviderSwitchAnnouncement=u(null);providerOptions=C(()=>[{id:"",label:y.project.activeProviderEmptyOption},...this.providerRegistry.providers().map(e=>({id:e.id,label:e.label}))]);activeProviderValue=C(()=>this.activeProviderEnvelope()?.activeProvider??"");activeProviderDetectedLabel=C(()=>(this.activeProviderEnvelope()?.detected??[]).join(", "));activeProviderSource=C(()=>this.activeProviderEnvelope()?.source??"none");constructor(){V(()=>{this.visible()&&(this.refresh(),this.refreshIgnore(),this.refreshActiveProvider())})}isPending(e){return this.pending().has(e)}onReferencePathAdd(){let e=this.newReferencePath().trim();if(e.length===0)return;if(e.includes(",")){this.saveError.set(this.texts.project.commaForbidden);return}let i=[...this.referencePaths(),e];this.runPatch("scan.referencePaths",{scan:{referencePaths:i}}).then(n=>{n&&this.newReferencePath.set("")})}onReferencePathRemove(e){let i=this.referencePaths().filter(n=>n!==e);this.runPatch("scan.referencePaths",{scan:{referencePaths:[...i]}})}onIgnorePatternAdd(){let e=this.newIgnorePattern().trim();if(e.length===0){this.ignoreSaveError.set(this.texts.project.ignorePatternEmpty);return}if(Ni.test(e)){this.ignoreSaveError.set(this.texts.project.ignorePatternHasControlChar);return}let i=this.ignorePatterns();if(i.includes(e)){this.ignoreSaveError.set(this.texts.project.ignorePatternDuplicate);return}let n=[...i,e];this.runIgnorePatch({patterns:n}).then(d=>{d&&this.newIgnorePattern.set("")})}onIgnorePatternRemove(e){let i=this.ignorePatterns().filter(n=>n!==e);this.runIgnorePatch({patterns:[...i]})}onActiveProviderChange(e){e===""||e===this.activeProviderValue()||this.confirmActiveProviderSwitch(e,async()=>{await this.runActiveProviderSwitch(e)})}async refresh(){this.loading.set(!0),this.loadError.set(null),this.saveError.set(null);try{let e=await this.dataSource.getProjectPreferences();this.preferences.set(e)}catch(e){this.loadError.set(ne(e)),this.preferences.set(null)}finally{this.loading.set(!1)}}async refreshIgnore(){this.ignoreLoadError.set(null),this.ignoreSaveError.set(null);try{let e=await this.dataSource.getProjectIgnore();this.ignoreEnvelope.set(e)}catch(e){this.ignoreLoadError.set(ne(e)),this.ignoreEnvelope.set(null)}}async refreshActiveProvider(){this.activeProviderLoadError.set(null),this.activeProviderSaveError.set(null);try{let e=await this.dataSource.getActiveProvider();this.activeProviderEnvelope.set(e)}catch(e){this.activeProviderLoadError.set(ne(e)),this.activeProviderEnvelope.set(null)}}async runActiveProviderSwitch(e){this.activeProviderSaveError.set(null),this.activeProviderSwitchAnnouncement.set(null);try{let i=await this.dataSource.setActiveProvider(e);this.activeProviderEnvelope.set({activeProvider:i.activeProvider,detected:i.detected,source:i.source});let n=i.switch.dropped;if(n===null)this.activeProviderSwitchAnnouncement.set(this.texts.project.activeProviderSwitchedNoDb);else{let d=this.texts.project;this.activeProviderSwitchAnnouncement.set(`${d.activeProviderSwitchedPrefix} ${n.tableCount} ${d.activeProviderSwitchedSuffix}`)}}catch(i){this.activeProviderSaveError.set(ne(i))}}confirmActiveProviderSwitch(e,i){this.confirmation.confirm({header:this.texts.project.activeProviderConfirmHeader,message:this.texts.project.activeProviderConfirmIntro,acceptLabel:this.texts.project.activeProviderConfirmAccept,rejectLabel:this.texts.project.activeProviderConfirmReject,acceptButtonProps:{severity:"primary"},rejectButtonProps:{severity:"secondary"},accept:()=>{i()},reject:()=>{let n=this.activeProviderEnvelope();n&&this.activeProviderEnvelope.set(K({},n))}})}async runPatch(e,i){if(this.pending().has(e))return!1;let n=new Set(this.pending());n.add(e),this.pending.set(n),this.saveError.set(null);let d=!1;try{let g=await this.dataSource.setProjectPreferences(i);this.preferences.set(g),d=!0}catch(g){if(g instanceof H&&g.code==="confirm-required"){let P=g.paths??[];this.confirmDialog(P,async()=>{try{let A=await this.dataSource.setProjectPreferences(J(K({},i),{confirm:!0}));this.preferences.set(A),this.newReferencePath.set("")}catch(A){this.saveError.set(ne(A))}})}else this.saveError.set(ne(g))}finally{let g=new Set(this.pending());g.delete(e),this.pending.set(g)}return d}async runIgnorePatch(e){let i="ignore.patterns";if(this.pending().has(i))return!1;let n=new Set(this.pending());n.add(i),this.pending.set(n),this.ignoreSaveError.set(null);let d=!1;try{let g=await this.dataSource.setProjectIgnore(e);this.ignoreEnvelope.set(g),d=!0}catch(g){this.ignoreSaveError.set(ne(g))}finally{let g=new Set(this.pending());g.delete(i),this.pending.set(g)}return d}confirmDialog(e,i){this.confirmation.confirm({header:y.project.confirmDialogHeader,message:y.project.confirmDialogIntro+`
122
- `+e.map(n=>`\u2022 ${n}`).join(`
123
- `),acceptLabel:y.project.confirmDialogAccept,rejectLabel:y.project.confirmDialogReject,acceptButtonProps:{severity:"primary"},rejectButtonProps:{severity:"secondary"},accept:()=>{i()}})}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=L({type:t,selectors:[["sm-settings-project"]],inputs:{visible:[1,"visible"]},features:[re([ae])],decls:58,vars:36,consts:[["data-testid","settings-project",1,"settings-project"],["id","settings-project-heading",1,"settings-project__title"],[1,"settings-project__intro"],[1,"settings-project__intro-path"],["severity","error","data-testid","settings-project-active-provider-load-error",3,"closable"],["severity","error","data-testid","settings-project-active-provider-save-error",3,"closable"],["severity","info","data-testid","settings-project-active-provider-switch-announce",3,"closable"],["data-testid","settings-project-active-provider-row",1,"settings-project__list-row"],[1,"settings-project__row-text"],[1,"settings-project__row-label"],[1,"settings-project__row-description"],[1,"settings-project__row-meta"],[1,"settings-project__meta-line"],[1,"settings-project__add-row"],["optionLabel","label","optionValue","id","appendTo","body","data-testid","settings-project-active-provider-select",1,"settings-project__provider-select",3,"ngModelChange","options","ngModel"],["severity","error","data-testid","settings-project-load-error",3,"closable"],["severity","error","data-testid","settings-project-save-error",3,"closable"],["data-testid","settings-project-reference-paths-row",1,"settings-project__list-row"],["role","list",1,"settings-project__path-list"],[1,"settings-project__path-item"],["type","text","pInputText","","data-testid","settings-project-reference-paths-input",3,"ngModelChange","keydown.enter","ngModel","placeholder","disabled"],["severity","primary","size","small","data-testid","settings-project-reference-paths-add",3,"onClick","label","disabled"],["severity","error","data-testid","settings-project-ignore-load-error",3,"closable"],["severity","error","data-testid","settings-project-ignore-save-error",3,"closable"],["data-testid","settings-project-ignore-patterns-row",1,"settings-project__list-row"],["type","text","pInputText","","data-testid","settings-project-ignore-patterns-input",3,"ngModelChange","keydown.enter","ngModel","placeholder","disabled"],["severity","primary","size","small","data-testid","settings-project-ignore-patterns-add",3,"onClick","label","disabled"],[1,"settings-project__path-text"],["severity","secondary","size","small",3,"onClick","label","outlined","disabled"]],template:function(i,n){if(i&1&&(s(0,"section",0)(1,"h2",1),l(2),a(),s(3,"p",2),l(4),s(5,"code",3),l(6),a(),l(7),a(),h(8,wi,2,3,"p-message",4),h(9,yi,2,3,"p-message",5),h(10,ki,2,2,"p-message",6),s(11,"div",7)(12,"div",8)(13,"div",9),l(14),a(),s(15,"div",10),l(16),a(),s(17,"div",11),h(18,Pi,2,1,"span",12)(19,Si,2,1,"span",12),h(20,Mi,1,1),a()(),s(21,"div",13)(22,"p-select",14),w("ngModelChange",function(g){return n.onActiveProviderChange(g)}),a()()(),h(23,Ti,2,3,"p-message",15),h(24,Oi,2,3,"p-message",16),s(25,"div",17)(26,"div",8)(27,"div",9),l(28),a(),s(29,"div",10),l(30),a()(),s(31,"ul",18),D(32,Ii,4,5,"li",19,ee),a(),s(34,"div",13)(35,"input",20),w("ngModelChange",function(g){return n.newReferencePath.set(g)})("keydown.enter",function(){return n.onReferencePathAdd()}),a(),s(36,"p-button",21),w("onClick",function(){return n.onReferencePathAdd()}),a()()(),h(37,ji,2,3,"p-message",22),h(38,Di,2,3,"p-message",23),s(39,"div",24)(40,"div",8)(41,"div",9),l(42),a(),s(43,"div",10),l(44),s(45,"code",3),l(46),a(),l(47),s(48,"code",3),l(49),a(),l(50),a()(),s(51,"ul",18),D(52,Fi,4,5,"li",19,ee),a(),s(54,"div",13)(55,"input",25),w("ngModelChange",function(g){return n.newIgnorePattern.set(g)})("keydown.enter",function(){return n.onIgnorePatternAdd()}),a(),s(56,"p-button",26),w("onClick",function(){return n.onIgnorePatternAdd()}),a()()(),O(57,"p-confirmdialog"),a()),i&2){let d,g,P,A,z,Q,B,Y,Ne;v("aria-labelledby","settings-project-heading"),o(2),p(" ",n.texts.project.heading," "),o(2),p(" ",n.texts.project.introPrefix," "),o(2),m(n.texts.project.introPath),o(),p("",n.texts.project.introSuffix," "),o(),_((d=n.activeProviderLoadError())?8:-1,d),o(),_((g=n.activeProviderSaveError())?9:-1,g),o(),_((P=n.activeProviderSwitchAnnouncement())?10:-1,P),o(4),m(n.texts.project.activeProviderLabel),o(2),p(" ",n.texts.project.activeProviderDescription," "),o(2),_((A=n.activeProviderSource())==="autodetect"?18:A==="none"?19:-1),o(2),_((z=n.activeProviderDetectedLabel())?20:-1,z),o(2),f("options",n.providerOptions())("ngModel",n.activeProviderValue()),o(),_((Q=n.loadError())?23:-1,Q),o(),_((B=n.saveError())?24:-1,B),o(4),m(n.texts.project.referencePathsLabel),o(2),p(" ",n.texts.project.referencePathsDescription," "),o(2),F(n.referencePaths()),o(3),f("ngModel",n.newReferencePath())("placeholder",n.texts.project.referencePathsPlaceholder)("disabled",n.isPending("scan.referencePaths")),o(),f("label",n.texts.project.addPathLabel)("disabled",n.isPending("scan.referencePaths")||n.newReferencePath().trim().length===0),o(),_((Y=n.ignoreLoadError())?37:-1,Y),o(),_((Ne=n.ignoreSaveError())?38:-1,Ne),o(4),m(n.texts.project.ignorePatternsLabel),o(2),p(" ",n.texts.project.ignorePatternsDescriptionPrefix," "),o(2),m(n.texts.project.ignorePatternsDescriptionFile),o(),p(" ",n.texts.project.ignorePatternsDescriptionMiddle," "),o(2),m(n.texts.project.ignorePatternsDescriptionGitignore),o(),p(" ",n.texts.project.ignorePatternsDescriptionSuffix," "),o(2),F(n.ignorePatterns()),o(3),f("ngModel",n.newIgnorePattern())("placeholder",n.texts.project.ignorePatternsPlaceholder)("disabled",n.isPending("ignore.patterns")),o(),f("label",n.texts.project.addIgnorePatternLabel)("disabled",n.isPending("ignore.patterns")||n.newIgnorePattern().trim().length===0)}},dependencies:[ce,Pe,le,de,se,we,ke,ye,Me,Ee,pe,ge,jt,It],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__intro-path[_ngcontent-%COMP%]{font-family:var(--p-monospace-font-family);font-size:.8rem;padding:.05rem .3rem;border-radius:.25rem;background:var(--p-content-background);border:1px solid var(--p-content-border-color)}[_nghost-%COMP%] p-message[_ngcontent-%COMP%]{display:block;margin-bottom:1rem}.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}.settings-project__row-meta[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.15rem;font-size:.75rem;color:var(--p-text-muted-color)}.settings-project__meta-line[_ngcontent-%COMP%]{line-height:1.3}.settings-project__provider-select[_ngcontent-%COMP%]{flex:1 1 auto}.settings-project__provider-select[_ngcontent-%COMP%] .p-select[_ngcontent-%COMP%]{width:100%}"],changeDetection:0})}return t})();function ne(t){return t instanceof H||t instanceof Error?t.message:String(t)}var Li=(t,r)=>r.id;function Ai(t,r){if(t&1){let e=N();s(0,"li")(1,"button",6),w("click",function(){let n=S(e).$implicit,d=c();return E(d.selectSection(n.id))}),s(2,"span",7),l(3),a()()()}if(t&2){let e=r.$implicit,i=c();o(),G("is-active",i.activeSection()===e.id),v("aria-current",i.activeSection()===e.id?"page":null)("data-testid","settings-nav-"+e.id),o(2),m(e.label)}}function Vi(t,r){if(t&1){let e=N();s(0,"sm-settings-plugins",8),w("applied",function(){S(e);let n=c();return E(n.onPluginsApplied())}),a()}if(t&2){let e=c();f("visible",e.pluginsVisible())}}function Ri(t,r){if(t&1&&O(0,"sm-settings-general",5),t&2){let e=c();f("visible",e.generalVisible())}}function zi(t,r){if(t&1&&O(0,"sm-settings-project",5),t&2){let e=c();f("visible",e.projectVisible())}}function Bi(t,r){if(t&1&&O(0,"sm-settings-about",5),t&2){let e=c();f("visible",e.aboutVisible())}}function $i(t,r){t&1&&O(0,"sm-settings-changelog")}var Gi=[{id:"general",label:y.sections.general},{id:"project",label:y.sections.project},{id:"plugins",label:y.sections.plugins},{id:"changelog",label:y.sections.changelog},{id:"about",label:y.sections.about}],ya=(()=>{class t{visible=R.required();visibleChange=ve();confirmation=k(ae);buffer=k(Te);texts=y;sections=Gi;activeSection=u("plugins");pluginsVisible=C(()=>this.visible()&&this.activeSection()==="plugins");generalVisible=C(()=>this.visible()&&this.activeSection()==="general");projectVisible=C(()=>this.visible()&&this.activeSection()==="project");aboutVisible=C(()=>this.visible()&&this.activeSection()==="about");onVisibleChange(e){if(e){this.visibleChange.emit(!0);return}let i=this.buffer.dirtyCount();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:()=>{this.buffer.applyChanges()},reject:()=>{this.buffer.discardChanges(),this.visibleChange.emit(!1)}})}selectSection(e){this.activeSection.set(e)}onPluginsApplied(){this.visibleChange.emit(!1)}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=L({type:t,selectors:[["sm-settings-modal"]],inputs:{visible:[1,"visible"]},outputs:{visibleChange:"visibleChange"},features:[re([ae])],decls:13,vars:10,consts:[["styleClass","settings-modal__dialog","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(i,n){if(i&1&&(s(0,"p-dialog",0),w("visibleChange",function(g){return n.onVisibleChange(g)}),s(1,"div",1)(2,"nav",2)(3,"ul",3),D(4,Ai,4,5,"li",null,Li),a()(),s(6,"div",4),h(7,Vi,1,1,"sm-settings-plugins",5)(8,Ri,1,1,"sm-settings-general",5)(9,zi,1,1,"sm-settings-project",5)(10,Bi,1,1,"sm-settings-about",5)(11,$i,1,0,"sm-settings-changelog"),a()(),O(12,"p-confirmdialog"),a()),i&2){let d;f("visible",n.visible())("modal",!0)("draggable",!1)("resizable",!1)("closable",!0)("closeOnEscape",!0)("dismissableMask",!0)("header",n.texts.modalTitle),o(2),v("aria-label",n.texts.modalTitle),o(2),F(n.sections),o(3),_((d=n.activeSection())==="plugins"?7:d==="general"?8:d==="project"?9:d==="about"?10:d==="changelog"?11:-1)}},dependencies:[se,ke,ye,vt,bt,Vt,Bt,Xt,gn,pn],styles:["[_nghost-%COMP%]{display:contents;--p-message-error-color: #fca5a5;--p-message-error-background: color-mix(in srgb, #ef4444 14%, transparent);--p-message-error-border-color: color-mix(in srgb, #ef4444 45%, transparent)}[_nghost-%COMP%] .settings-modal__dialog{width:1024px;height:720px;max-width:92vw;max-height:90vh}[_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})}return t})();export{ya as SettingsModal};