@skill-map/cli 0.44.0 → 0.45.1
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.
- package/dist/cli/tutorial/sm-tutorial/SKILL.md +91 -114
- package/dist/cli.js +361 -187
- package/dist/cli.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/kernel/index.d.ts +35 -0
- package/dist/kernel/index.js +1 -1
- package/dist/kernel/index.js.map +1 -1
- package/dist/ui/chunk-2RAE3FAN.js +1 -0
- package/dist/ui/{chunk-DL5EA245.js → chunk-ZIGUUDUX.js} +3 -3
- package/dist/ui/index.html +1 -1
- package/dist/ui/main-KMSUFJ6Y.js +3 -0
- package/package.json +2 -2
- package/dist/ui/chunk-IUZRAD7S.js +0 -1
- package/dist/ui/main-O3CWFYKV.js +0 -3
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{a as D,b as k,c as oe,d as st,e as at}from"./chunk-2RAE3FAN.js";import{l as Ze,m as re,n as qe,o as G,p as rt}from"./chunk-27WQPOXP.js";import{a as pe,b as et,c as tt,e as nt,g as it}from"./chunk-F7I6KMHX.js";import{b as ot}from"./chunk-MFLFIA7C.js";import{k as We,l as Ye,m as Qe,n as A}from"./chunk-QDUSFOBE.js";import{D as ne,E as ie,I as Je,J as Ke,K as He,M as Q,N as h,O as K,P as Xe,Q as H,R as X,X as Ge,n as Be,o as Ve}from"./chunk-A7PRWMQD.js";import"./chunk-4SG4352Z.js";import{b as De,f as Le,g as $e,h as te,i as ze,j as je,k as Ne,l as Fe,m as Ue}from"./chunk-555ST76V.js";import{a as Te,b as Oe,c as J,d as Ee,e as Ie,f as Ae}from"./chunk-VGPYYAVI.js";import{Bb as z,Db as O,Eb as Pe,Fa as q,Fb as y,Ia as a,L as S,P as B,Q as s,Qb as we,Rb as ce,Tb as xe,Ua as V,Ub as u,Vb as b,W as L,Wb as j,X as $,Xc as Re,_a as ye,aa as fe,bb as Y,ea as ve,eb as _e,f as ue,fb as ke,ga as be,gb as _,ha as I,ja as Z,jb as R,kb as T,m as U,pb as v,pc as c,qb as d,rb as m,sb as P,sc as Se,tb as ee,ub as de,vb as Ce,yc as Me}from"./chunk-PZQHB7GS.js";import"./chunk-WCABR6TI.js";var me="skill-map",M={brand:me,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} - ${me}`:me;return n?`${e} v${n}`:e}};var lt=[{path:"",pathMatch:"full",redirectTo:"map"},{path:"map",loadComponent:()=>import("./chunk-MS6B7344.js").then(t=>t.GraphView),title:M.nav.map},{path:"files",loadComponent:()=>import("./chunk-I5AX4U2N.js").then(t=>t.FilesView),title:M.nav.files},{path:"**",redirectTo:"map"}];var E={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 se(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 p="/api",dt=(()=>{class t{http;ws;kindRegistry;providerRegistry;contributionsRegistry;constructor(e,i,r,o,l){this.http=e??s(J),this.ws=i??s(H),this.kindRegistry=r??s(A),this.contributionsRegistry=o??s(re),this.providerRegistry=l??s(D)}async health(){return this.getJson(`${p}/health`)}async loadScan(){let[e]=await Promise.all([this.getJson(`${p}/scan`),this.listNodes({limit:0}).catch(()=>null)]);return e}async runScan(){return this.patchJson(`${p}/scan`,{},"POST")}async listNodes(e={}){let i=Lt(e),r=await this.getJson(`${p}/nodes${i}`);return this.ingestRegistry(r.kindRegistry),this.ingestContributionsRegistry(r.contributionsRegistry),this.ingestProviderRegistry(r.providerRegistry),r}async getNode(e,i={}){let r=se(e),o=i.includeBody?"?include=body":"";try{let l=await this.getJson(`${p}/nodes/${r}${o}`);return this.ingestRegistry(l.kindRegistry),this.ingestContributionsRegistry(l.contributionsRegistry),this.ingestProviderRegistry(l.providerRegistry),l}catch(l){if(l instanceof h&&l.code==="not-found")return null;throw l}}async listLinks(e={}){let i=$t(e),r=await this.getJson(`${p}/links${i}`);return this.ingestRegistry(r.kindRegistry),this.ingestContributionsRegistry(r.contributionsRegistry),this.ingestProviderRegistry(r.providerRegistry),r}async listIssues(e={}){let i=zt(e),r=await this.getJson(`${p}/issues${i}`);return this.ingestRegistry(r.kindRegistry),this.ingestContributionsRegistry(r.contributionsRegistry),this.ingestProviderRegistry(r.providerRegistry),r}async loadGraph(e="ascii"){let i=`${p}/graph?format=${encodeURIComponent(e)}`;try{return await U(this.http.get(i,{responseType:"text"}))}catch(r){throw this.translateError(r)}}async loadConfig(){let e=await this.getJson(`${p}/config`);return this.ingestRegistry(e.kindRegistry),this.ingestContributionsRegistry(e.contributionsRegistry),this.ingestProviderRegistry(e.providerRegistry),e.value}async listPlugins(){let e=await this.getJson(`${p}/plugins`);return this.ingestRegistry(e.kindRegistry),this.ingestContributionsRegistry(e.contributionsRegistry),this.ingestProviderRegistry(e.providerRegistry),e}async setPluginEnabled(e,i){let r=await this.patchJson(`${p}/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(`${p}/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(`${p}/plugins`,{changes:e});return this.ingestRegistry(i.kindRegistry),this.ingestContributionsRegistry(i.contributionsRegistry),this.ingestProviderRegistry(i.providerRegistry),i}async getPreferences(){return await this.getJson(`${p}/preferences`)}async setPreferences(e){return await this.patchJson(`${p}/preferences`,e)}async getProjectPreferences(){return await this.getJson(`${p}/project-preferences`)}async setProjectPreferences(e){return await this.patchJson(`${p}/project-preferences`,e)}async getProjectIgnore(){return await this.getJson(`${p}/project-ignore`)}async setProjectIgnore(e){return await this.patchJson(`${p}/project-ignore`,e)}async getActiveProvider(){return await this.getJson(`${p}/active-provider`)}async setActiveProvider(e){return await this.patchJson(`${p}/active-provider`,{activeProvider:e})}async setFavorite(e){let i=se(e);try{await U(this.http.put(`${p}/favorites/${i}`,null))}catch(r){throw this.translateError(r)}}async unsetFavorite(e){let i=se(e);try{await U(this.http.delete(`${p}/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(`${p}/sidecar/bump`,r,"POST")}async getUpdateStatus(){return this.getJson(`${p}/update-status`)}async getRegisteredAnnotations(){return(await this.getJson(`${p}/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(`${p}/contributions/${encodeURIComponent(e)}/${encodeURIComponent(i)}?${o.toString()}`)).items[0]??null}catch{return null}}events(){return this.ws.events$}async getJson(e){try{return await U(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 U(o)}catch(o){throw this.translateError(o)}}translateError(e){if(e instanceof h)return e;if(e instanceof Oe){let r=jt(e.error);return r?new h(r.error.code,r.error.message,r.error.details):new h("internal",e.message||E.errors.malformedResponse)}let i=e instanceof Error?e.message:String(e);return new h("internal",i)}static \u0275fac=function(i){return new(i||t)(B(J),B(H),B(A),B(re),B(D))};static \u0275prov=S({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Lt(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 $t(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 zt(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 jt(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 Nt="data.json",Ft="data.meta.json",ae=class{fetchImpl;metaPromise=null;dataPromise=null;kindRegistry;providerRegistry;constructor(n=globalThis.fetch.bind(globalThis),e,i){this.fetchImpl=n,this.kindRegistry=e??s(A),this.providerRegistry=i??s(D)}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(Ut(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 x=new Set(n.kind);o=o.filter(C=>x.has(C.kind))}if(n.path){let x=Jt(n.path);o=o.filter(C=>x.test(C.path))}if(n.hasIssues===!0){let x=ct(r);o=o.filter(C=>x.has(C.path))}else if(n.hasIssues===!1){let x=ct(r);o=o.filter(C=>!x.has(C.path))}let l=o.length,g=n.offset??0,w=n.limit??1e3,f=o.slice(g,g+w);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:l,returned:f.length,page:{offset:g,limit:w}},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 l=i.links.filter(f=>f.target===n),g=i.links.filter(f=>f.source===n),w=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:l,outgoing:g},issues:w,kindRegistry:r.nodes.kindRegistry,providerRegistry:r.nodes.providerRegistry}}async listLinks(n={}){let e=await this.loadMeta();if(Bt(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(l=>o.has(l.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(Vt(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(l=>l.nodeIds.some(g=>o.has(g)))}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",E.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 ue}loadMeta(){return this.metaPromise||(this.metaPromise=this.fetchJson(Ft)),this.metaPromise}loadData(){return this.dataPromise||(this.dataPromise=this.fetchJson(Nt)),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",E.errors.demoFetchFailed(n,r))}if(!e.ok)throw new h("internal",E.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",E.errors.demoParseFailed(n,r))}}};function Ut(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 Bt(t){return!(t.kind&&t.kind.length>0||t.from||t.to)}function Vt(t){return!(t.severity||t.analyzerId||t.node||t.nodes&&t.nodes.length>0)}function ct(t){let n=new Set;for(let e of t)for(let i of e.nodeIds)n.add(i);return n}function Jt(t){let e=t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${e}$`)}function pt(){let t=s(K);if(t==="live")return new dt(s(J),s(H));if(t==="demo")return new ae;let n=t;throw new Error(E.errors.unknownMode(String(n)))}var mt="search",gt="kinds",ht="linkKinds",ut="stabilities",ft="hasIssues",vt="staleOnly",bt="favoritesOnly",yt="severities",Kt=["error","warn"],_t=(()=>{class t{filters=s(Qe);router=s(ze);activatedRoute=s(Le);kindRegistry=s(A);destroyRef=s(fe);suppressUrlReadback=!1;constructor(){this.applyUrlToFilters(this.currentParams()),this.router.events.pipe(He(this.destroyRef)).subscribe(e=>{if(e instanceof De){if(this.suppressUrlReadback)return;this.applyUrlToFilters(this.currentParams())}}),Z(()=>{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(mt)??"";i!==this.filters.searchText()&&this.filters.setSearchText(i);let r=Ht(e.get(gt),this.kindRegistry.kinds().map(Dt=>Dt.name));le(r,this.filters.selectedKinds())||this.filters.setKinds(r);let o=Xt(e.get(ut));le(o,this.filters.selectedStabilities())||this.filters.setStabilities(o);let l=e.get(ft)==="true";l!==this.filters.hasIssuesOnly()&&this.filters.setHasIssuesOnly(l);let g=e.get(vt)==="true";g!==this.filters.staleOnly()&&this.filters.setStaleOnly(g);let w=e.get(bt)==="true";w!==this.filters.favoritesOnly()&&this.filters.setFavoritesOnly(w);let f=Wt(e.get(ht));le(f,this.filters.selectedLinkKinds())||this.filters.setLinkKinds(f);let x=Yt(e.get(yt)),C=[];this.filters.severityErrorActive()&&C.push("error"),this.filters.severityWarnActive()&&C.push("warn"),le(x,C)||this.filters.setSeverityFilters(x)}computeQueryParams(){let e=this.filters.searchText().trim(),i=this.filters.selectedKinds(),r=this.filters.selectedLinkKinds(),o=this.filters.selectedStabilities(),l=this.filters.hasIssuesOnly(),g=this.filters.staleOnly(),w=this.filters.favoritesOnly(),f=[];return this.filters.severityErrorActive()&&f.push("error"),this.filters.severityWarnActive()&&f.push("warn"),{[mt]:e.length>0?e:null,[gt]:i.length>0?i.join(","):null,[ht]:r.length>0?r.join(","):null,[ut]:o.length>0?o.join(","):null,[ft]:l?"true":null,[vt]:g?"true":null,[bt]:w?"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[l,g]of r)if((i.get(l)??null)!==g){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=S({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Ht(t,n){if(!t)return[];let e=new Set(n);return t.split(",").map(i=>i.trim()).filter(i=>e.has(i))}function Xt(t){if(!t)return[];let n=new Set(We);return t.split(",").map(e=>e.trim()).filter(e=>n.has(e))}function Wt(t){if(!t)return[];let n=new Set(Ye);return t.split(",").map(e=>e.trim()).filter(e=>n.has(e))}function Yt(t){if(!t)return[];let n=new Set(Kt);return t.split(",").map(e=>e.trim()).filter(e=>n.has(e))}function le(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 kt={healthFailed:t=>`ProjectInfoService: /api/health probe failed (${t})`};var W=(()=>{class t{dataSource=s(Q);status=I(null);cwd=c(()=>this.status()?.cwd??null);implVersion=c(()=>this.status()?.implVersion??null);dev=c(()=>this.status()?.dev===!0);activeProviderState=I(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(kt.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=S({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Pt=(()=>{class t extends te{title=s(Ae);projectInfo=s(W);constructor(){super(),Z(()=>{let e=Ct(this.projectInfo.cwd()),i=this.projectInfo.implVersion();this.title.setTitle(M.documentTitle(e,i))})}updateTitle(e){let i=Ct(this.projectInfo.cwd()),r=this.projectInfo.implVersion();this.title.setTitle(M.documentTitle(i,r))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=S({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Ct(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 ge=!1,he=null;async function wt(t){if(ge||pe===""||!t.consentEnabled)return;let n=await import("./chunk-X227ITGS.js");n.init({dsn:pe,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=>et(e)}),he=n,ge=!0}function xt(t){!ge||he===null||he.captureException(t)}var St=(()=>{class t{handleError(e){console.error(e),xt(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=S({token:t,factory:t.\u0275fac})}return t})();function Qt(...t){for(let n of t)Promise.resolve(n.load())}var Mt={providers:[be(),{provide:ve,useClass:St},Fe(lt,Ue()),{provide:te,useClass:Pt},Ee(Ie()),Ve({}),Y(async()=>{let t=s(Be),[{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:K,useFactory:Xe},{provide:Q,useFactory:pt},Y(async()=>{let t=s(Q),n=s(G);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}),tt({consentEnabled:e.telemetry.usageUiEnabled,distinctId:e.telemetry.anonymousId})]),nt({environment:e.telemetry.environment}),n.syncTheme()}catch{}}),Y(()=>{Qt(s(X),s(oe),s(W))}),Y(()=>{s(_t),s(Ze),s(G)})]};var F={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 Zt(t,n){if(t&1){let e=z();d(0,"div",0),P(1,"span",1),d(2,"p",2),u(3),d(4,"code",3),u(5),m()(),d(6,"a",4),u(7),m(),d(8,"p-button",5),O("onClick",function(){L(e);let r=y();return $(r.dismiss())}),m()()}if(t&2){let e=y();a(3),j(" ",e.texts.body," "),a(2),b(e.texts.installCommand),a(),v("href",e.texts.homeHref,q),a(),b(e.texts.homeCta),a(),v("ariaLabel",e.texts.dismissAria)("text",!0)("rounded",!0)}}var Tt="sm.demoBannerDismissed",Ot=(()=>{class t{mode=s(K);texts=Rt;dismissed=I(this.readDismissed());visible=c(()=>this.mode==="demo"&&!this.dismissed());dismiss(){this.dismissed.set(!0);try{globalThis.localStorage?.setItem(Tt,"1")}catch{}}readDismissed(){if(this.mode!=="demo")return!0;try{return globalThis.localStorage?.getItem(Tt)==="1"}catch{return!1}}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=V({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&&R(0,Zt,9,7,"div",0),i&2&&T(r.visible()?0:-1)},dependencies:[ie,ne],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 Et={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 qt(t,n){if(t&1){let e=z();ee(0,"div",0),Ce(1,"span",1),ee(2,"p",2),u(3),de(),ee(4,"button",3),Pe("click",function(){L(e);let r=y();return $(r.onCta())}),u(5),de()()}if(t&2){let e=y();_("data-mode",e.state().mode),a(3),j(" ",e.state().body," "),a(),_("aria-label",e.texts.ctaAria),a(),j(" ",e.texts.cta," ")}}var It=(()=>{class t{loader=s(X);texts=Et;openSettings=Se();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,l=e.stats.filesWalked,g=e.stats.nodesCount;return l>o?{mode:"capped",body:this.texts.bodyCapped(l,o,r!==null?"override":"setting")}:g<i?{mode:"hidden",body:""}:r!==null&&g>i?{mode:"overLimit",body:this.texts.bodyOverLimit(g,i,r)}:{mode:"atLimit",body:this.texts.bodyAtLimit(g,i)}});visible=c(()=>this.state().mode!=="hidden");onCta(){this.openSettings.emit()}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=V({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&&R(0,qt,6,4,"div",0),i&2&&T(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 en=()=>[import("./chunk-ZIGUUDUX.js").then(t=>t.SettingsModal)];function tn(t,n){if(t&1&&(d(0,"span",11),u(1),m()),t&2){let e=y();v("pTooltip",e.versionTooltip()),_("aria-label",e.texts.devChipA11y),a(),b(e.texts.devChip)}}function nn(t,n){if(t&1&&(d(0,"span",12),u(1),m()),t&2){let e=y();v("pTooltip",e.versionTooltip()),_("aria-label",e.versionA11y()),a(),b(e.versionLabel())}}function rn(t,n){if(t&1&&(d(0,"span",26),u(1),m()),t&2){let e=n,i=y();we("--provider-color",e.color)("--provider-color-dark",e.colorDark??e.color),v("pTooltip",i.texts.lensChipTooltip(e.label)),_("aria-label",i.texts.lensChipA11y(e.label)),a(),b(e.label)}}function on(t,n){if(t&1){let e=z();d(0,"button",27),O("click",function(){L(e);let r=y();return $(r.copyUpdateCommand())}),P(1,"i",28),d(2,"span"),u(3),m()(),d(4,"a",29),P(5,"i",30),m()}if(t&2){let e=y();v("pTooltip",e.updateChipTooltip()),_("aria-label",e.updateChipA11y()),a(),xe(e.updateChipIcon()),a(2),b(e.updateChipText()),a(),v("href",e.npmLinkUrl,q)("pTooltip",e.npmLinkTooltip),_("aria-label",e.npmLinkA11y)}}function sn(t,n){if(t&1&&(d(0,"p",15)(1,"bdi",31),u(2),m()()),t&2){let e=n;_("title",e),a(2),b(e)}}function an(t,n){if(t&1){let e=z();d(0,"sm-settings-modal",32),O("visibleChange",function(r){L(e);let o=y();return $(o.onSettingsVisibleChange(r))}),m()}if(t&2){let e=y();v("visible",e.settingsOpen())}}var At=(()=>{class t{loader=s(X);theme=s(it);projectInfo=s(W);providerRegistry=s(D);scanTrigger=s(at);usageTracker=s(G);updateCheck=s(oe);texts=M;settingsTexts=st;settingsOpen=I(!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=I(!1);updateChipText=c(()=>this.updateChipCopied()?k.copiedLabel:k.available);updateChipIcon=c(()=>this.updateChipCopied()?"pi pi-check":"pi pi-download");updateChipTooltip=c(()=>this.updateChipCopied()?k.copiedTooltip:k.tooltip(this.updateCheck.latest()??""));updateChipA11y=c(()=>k.a11yLabel(this.updateCheck.latest()??""));npmLinkUrl=k.npmLinkUrl;npmLinkTooltip=k.npmLinkTooltip;npmLinkA11y=k.npmLinkA11y;async copyUpdateCommand(){try{await navigator.clipboard.writeText(k.copyCommand),this.updateChipCopied.set(!0),setTimeout(()=>this.updateChipCopied.set(!1),2e3)}catch{}}versionLabel=c(()=>k.versionLabel(this.updateCheck.current()??""));versionTooltip=c(()=>k.versionTooltip(this.updateCheck.current()??""));versionA11y=c(()=>k.versionA11yLabel(this.updateCheck.current()??""));isDevBuild=this.projectInfo.dev;lensChip=c(()=>this.providerRegistry.lensChip(this.projectInfo.activeProvider()));count=this.loader.count;linkAnalysis=c(()=>rt(this.loader.nodes(),this.loader.scan()));linkCount=c(()=>this.linkAnalysis().raw);mapInfoTooltip=c(()=>M.badge.mapInfo(this.count(),this.linkAnalysis()));mapInfoA11y=c(()=>M.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=Me();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 F.toggleToLight;case"light":return F.toggleToDark;case"dark":return F.toggleToAuto}});themeTooltip=c(()=>{switch(this.themeMode()){case"auto":return F.currentAuto;case"light":return F.currentLight;case"dark":return F.currentDark}});toggleTheme(){this.theme.toggle()}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=V({type:t,selectors:[["sm-root"]],decls:41,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&&(d(0,"div",0)(1,"div",1),P(2,"i",2),d(3,"h2",3),u(4),m(),d(5,"p",4),u(6),m(),d(7,"p",5),u(8),m()()(),d(9,"div",6),P(10,"sm-demo-banner"),d(11,"sm-oversized-banner",7),O("openSettings",function(){return r.openSettings()}),m(),d(12,"header",8)(13,"div",9),P(14,"img",10),d(15,"div")(16,"h1"),u(17),R(18,tn,2,3,"span",11)(19,nn,2,3,"span",12),R(20,rn,2,7,"span",13),d(21,"span",14),u(22),m(),R(23,on,6,8),m(),R(24,sn,3,2,"p",15),m()(),d(25,"nav",16),P(26,"sm-view-contributions-host",17),d(27,"a",18),u(28),m(),d(29,"a",19),u(30),m()(),d(31,"div",20)(32,"button",21),O("click",function(){return r.triggerScan()}),P(33,"i",22),m(),d(34,"p-button",23),O("onClick",function(){return r.toggleTheme()}),m(),d(35,"p-button",24),O("onClick",function(){return r.openSettings()}),m()()(),d(36,"main",25),P(37,"router-outlet"),m(),ye(38,an,1,1),_e(39,38,en),m()),i&2){let o,l,g;a(4),b(r.texts.viewportWarning.title),a(2),b(r.texts.viewportWarning.subtitle),a(2),b(r.texts.viewportWarning.body),a(6),v("ngSrc",r.markSrc()),a(3),j(" ",r.texts.brand," "),a(),T(r.isDevBuild()?18:(o=r.updateCheck.current())?19:-1,o),a(2),T((l=r.lensChip())?20:-1,l),a(),_("aria-label",r.texts.alpha),a(),b(r.texts.alpha),a(),T(r.updateCheck.isOutdated()&&!r.isDevMode?23:-1),a(),T((g=r.rootLabel())?24:-1,g),a(),_("aria-label",r.texts.a11y.viewSwitcher),a(),v("node",null),a(2),b(r.texts.nav.map),a(2),b(r.texts.nav.files),a(2),ce("is-spinning",r.scanning()),v("pTooltip",r.mapInfoTooltip())("disabled",r.scanning()),_("aria-label",r.mapInfoA11y()),a(),ce("pi-spin",r.scanning()),a(),v("icon",r.themeIcon())("ariaLabel",r.themeLabel())("pTooltip",r.themeTooltip())("text",!0)("rounded",!0),a(),v("ariaLabel",r.settingsTexts.a11y.triggerLabel)("pTooltip",r.settingsTexts.triggerTooltip)("text",!0)("rounded",!0),a(4),ke(r.settingsOpen())}},dependencies:[$e,je,Ne,ie,ne,ot,Ke,Je,Ge,Re,Ot,It,qe],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})();Te(At,Mt).catch(t=>console.error(t));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skill-map/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.45.1",
|
|
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.
|
|
64
|
+
"@skill-map/spec": "0.42.0"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
67
|
"@eslint/js": "10.0.1",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{M as l,N as d,R as p}from"./chunk-A7PRWMQD.js";import{L as o,Q as s,ha as i,pc as r}from"./chunk-PZQHB7GS.js";import{a as c}from"./chunk-WCABR6TI.js";var S={triggerLabel:"Settings",triggerTooltip:"Settings",modalTitle:"Settings",closeLabel:"Close",sections:{plugins:"Plugins",general:"General",project:"Project",changelog:"Changelog",about:"About"},general:{heading:"General",intro:"Per-machine preferences.",loadErrorPrefix:"Could not load preferences:",saveErrorPrefix:"Could not save preferences:",toggles:{"updateCheck.enabled":{label:"Check for updates",description:"Check npm for newer @skill-map/cli releases."},telemetry:{label:"Send anonymous error & usage reports",description:"Report crashes and which features you use. No file contents or paths.",hint:"Reload the page to apply in-app changes."}},extraTheme:{label:"Theme",description:"Pick a specialty theme.",options:{none:{label:"None",description:"Use the topbar dark/light toggle."}}},storageHintLabel:"Settings are stored in:",storageHintPath:"~/.skill-map/settings.json"},project:{heading:"Project",introPrefix:"These settings apply only to this project and are saved in",introPath:".skill-map/settings.local.json",introSuffix:".",loadErrorPrefix:"Could not load project settings:",saveErrorPrefix:"Could not save project settings:",referencePathsLabel:"Folders for link validation",referencePathsDescription:"If your notes link to files outside this project, list those folders here. Skill-map checks them only to confirm the links work, nothing from these folders shows up in the map.",referencePathsPlaceholder:"~/Documents/research",commaForbidden:"Add one path at a time, without commas.",addPathLabel:"Add path",removePathLabel:"Remove",confirmDialogHeader:"Allow access to folders outside this project?",confirmDialogIntro:"This change lets the scan read files in:",confirmDialogAccept:"Allow access",confirmDialogReject:"Cancel",ignorePatternsLabel:"Ignored patterns",ignorePatternsDescriptionPrefix:"Patterns that exclude files and folders from the scan, stored in",ignorePatternsDescriptionFile:".skillmapignore",ignorePatternsDescriptionMiddle:"at the project root. Same syntax as",ignorePatternsDescriptionGitignore:".gitignore",ignorePatternsDescriptionSuffix:"(one pattern per line).",ignorePatternsPlaceholder:"secrets.md",ignorePatternEmpty:"Pattern cannot be empty or whitespace-only.",ignorePatternHasControlChar:"Pattern must be a single line without control characters.",ignorePatternDuplicate:"This pattern is already in the list.",addIgnorePatternLabel:"Add pattern",removeIgnorePatternLabel:"Remove",activeProviderLabel:"Active provider",activeProviderDescription:"Selects which provider sees this project. The map reflects how the chosen provider interprets your files.",activeProviderSourceAutodetect:"Auto-detected from your files (no value saved yet).",activeProviderSourceNone:"No provider detected. Install or enable a provider to start.",activeProviderDetectedPrefix:"Detected:",activeProviderEmptyOption:"(none)",activeProviderConfirmHeader:"Switch the active provider?",activeProviderConfirmIntro:"Switching will clear the persisted scan (nodes, links, issues). Jobs and history are kept. You will need to run `sm scan` after the switch.",activeProviderConfirmAccept:"Switch and clear scan",activeProviderConfirmReject:"Cancel",activeProviderSwitchedPrefix:"Lens switched. Cleared",activeProviderSwitchedSuffix:"scan table(s). Run `sm scan` to repopulate.",activeProviderSwitchedNoDb:"Lens switched. Run `sm scan` to populate the map under the new lens."},changelogHeading:"Changelog",changelogIntro:"What's new in skill-map. Each entry covers a release of @skill-map/cli (the CLI + bundled UI) and lists the user-facing changes plus the workspace(s) each one affects.",changelogEmpty:"No release notes yet. Future releases will populate this list automatically from the changesets shipped in each PR.",changelogInternalRelease:"Internal release. Focus on stability, infra, and refactors. No user-facing changes this time.",changelogAffectedPackages:"Affected packages",changelogFooterText:"Want the full changelog?",changelogFooterLinkLabel:"See it on GitHub \u2192",changelogFooterUrl:"https://github.com/crystian/skill-map/blob/main/src/CHANGELOG.md",aboutHeading:"About",aboutIntro:"Version information for the running CLI / server.",aboutCliLabel:"skill-map CLI",aboutSpecLabel:"Spec version",aboutSchemaLabel:"Schema version",aboutFolderLabel:"Project folder",aboutDbLabel:"Project DB",aboutDbValue:(e,a)=>e==="present"?a:`${e} \xB7 ${a}`,aboutLoading:"Loading\u2026",aboutUnknown:"-",aboutErrorPrefix:"Could not read health endpoint:",aboutLinksHeading:"Links",aboutWebsiteLabel:"Website",aboutGithubLabel:"GitHub",aboutWebsiteUrl:"https://skill-map.ai/",aboutGithubUrl:"https://github.com/crystian/skill-map",aboutStarHeading:"Enjoying skill-map?",aboutStarBody:"If it's useful to you, drop us a star on GitHub, it helps a lot and keeps the project alive.",aboutStarCta:"Star on GitHub",aboutStarA11y:"Open the skill-map repository on GitHub to give it a star",pluginsHeading:"Plugins",pluginsIntro:"Enable or disable installed plugins.",pluginsSearchPlaceholder:"Filter by name\u2026",pluginsSearchA11y:"Filter plugins by name",pluginsSearchEmpty:e=>`No plugins match "${e}".`,pluginsKindFilterAll:"All",pluginsKindFilterA11y:"Filter plugins by kind",pluginsKindFilterOptionA11y:(e,a)=>a?`Show only ${e} extensions`:"Show all kinds",unsavedChangesMessage:e=>e===1?'1 unsaved change. Click "Apply" to persist it.':`${e} unsaved changes. Click "Apply" to persist them.`,startsAsDisabledRowHint:"This plugin started disabled and is not loaded in memory. Restart `sm serve` for the change to take effect.",startsAsDisabledFooterHint:"Some plugins were disabled when the server started. Consider restarting `sm serve` so they take effect.",discardChanges:"Discard",applyAndClose:"Apply",discardA11y:"Discard pending plugin changes",applyA11y:"Apply pending plugin changes and refresh the map",confirmCloseTitle:"Apply pending changes?",confirmCloseBody:e=>e===1?"You have 1 unsaved change.":`You have ${e} unsaved changes.`,keepEditing:"Keep editing",sourceBuiltIn:"Built-in",sourceProject:"Project",enabledLabel:"Enabled",disabledLabel:"Disabled",lockedLabel:"Locked",lockedTooltip:"Locked by the host (cannot be toggled).",expandLabel:"Show extensions",collapseLabel:"Hide extensions",statusFailure:{"incompatible-spec":"Incompatible spec version","invalid-manifest":"Invalid manifest","load-error":"Failed to load","id-collision":"Plugin id collision"},loading:"Loading plugins\u2026",empty:"No plugins installed.",errorPrefix:"Could not load plugins:",toggleErrorPrefix:"Toggle failed:",a11y:{triggerLabel:"Open settings",pluginToggle:(e,a)=>a?`Enable plugin ${e}`:`Disable plugin ${e}`,extensionToggle:(e,a)=>a?`Enable ${e}`:`Disable ${e}`,pluginRow:e=>`Plugin ${e} row`,extensionRow:e=>`Extension ${e} row`}};var y="#9ca3af",k="#6b7280",A=(()=>{class e{_entries=i([]);providers=this._entries.asReadonly();index=r(()=>{let t=new Map;for(let n of this._entries())t.set(n.id,n);return t});ingest(t){if(!t)return;let n=[];for(let[b,v]of Object.entries(t))n.push(c({id:b},v));P(this._entries(),n)||this._entries.set(n)}lookup(t){return this.index().get(t)}cardChip(t){if(!t)return null;let n=this.lookup(t);return n?n.hideChip?null:u(n):g(t)}lensChip(t){if(!t)return null;let n=this.lookup(t);return n?u(n):g(t)}static \u0275fac=function(n){return new(n||e)};static \u0275prov=o({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function u(e){let a={label:e.label,color:e.color};return e.colorDark!==void 0&&(a.colorDark=e.colorDark),a}function g(e){return{label:e,color:y,colorDark:k}}function P(e,a){if(e.length!==a.length)return!1;for(let t=0;t<e.length;t++)if(JSON.stringify(e[t])!==JSON.stringify(a[t]))return!1;return!0}var f={available:"Update available",copiedLabel:"Copied!",tooltip:e=>`v${e} is available. Click to copy the install command.`,copyCommand:"npm i -g @skill-map/cli@latest",copiedTooltip:"Copied! Paste it in your terminal.",npmLinkUrl:"https://www.npmjs.com/package/@skill-map/cli",npmLinkTooltip:"Open on npm",npmLinkA11y:"Open the @skill-map/cli package page on npm",a11yLabel:e=>`Update available: version ${e}, click to copy the install command`,versionLabel:e=>`v${e}`,versionTooltip:e=>`skill-map CLI v${e}`,versionA11yLabel:e=>`Running version ${e}`,fetchFailed:e=>`UpdateCheckService: fetch failed (${e})`};var R=(()=>{class e{dataSource=s(l);status=i(null);isOutdated=r(()=>this.status()?.isOutdated===!0);latest=r(()=>this.status()?.latest??null);current=r(()=>this.status()?.current??null);async load(){try{let t=await this.dataSource.getUpdateStatus();this.status.set(t)}catch(t){let n=t instanceof Error?t.message:String(t);console.warn(f.fetchFailed(n))}}static \u0275fac=function(n){return new(n||e)};static \u0275prov=o({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var m={scanFailed:e=>`scan-trigger failed: ${e}`};var M=(()=>{class e{dataSource=s(l);loader=s(p);scanning=i(!1);scanError=i(null);async run(){if(!this.scanning()){this.scanning.set(!0),this.scanError.set(null);try{await this.dataSource.runScan(),await this.loader.load()}catch(t){let n=t instanceof d||t instanceof Error?t.message:String(t);this.scanError.set(n),console.warn(m.scanFailed(n))}finally{this.scanning.set(!1)}}}static \u0275fac=function(n){return new(n||e)};static \u0275prov=o({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();export{A as a,f as b,R as c,S as d,M as e};
|
package/dist/ui/main-O3CWFYKV.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{a as D,b as k,c as oe,d as st,e as at}from"./chunk-IUZRAD7S.js";import{l as Ze,m as re,n as qe,o as G,p as rt}from"./chunk-27WQPOXP.js";import{a as pe,b as et,c as tt,e as nt,g as it}from"./chunk-F7I6KMHX.js";import{b as ot}from"./chunk-MFLFIA7C.js";import{k as We,l as Ye,m as Qe,n as A}from"./chunk-QDUSFOBE.js";import{D as ne,E as ie,I as Je,J as Ke,K as He,M as Q,N as h,O as K,P as Xe,Q as H,R as X,X as Ge,n as Be,o as Ve}from"./chunk-A7PRWMQD.js";import"./chunk-4SG4352Z.js";import{b as De,f as Le,g as $e,h as te,i as ze,j as je,k as Ne,l as Fe,m as Ue}from"./chunk-555ST76V.js";import{a as Te,b as Oe,c as J,d as Ee,e as Ie,f as Ae}from"./chunk-VGPYYAVI.js";import{Bb as z,Db as O,Eb as Pe,Fa as q,Fb as y,Ia as a,L as S,P as B,Q as s,Qb as we,Rb as ce,Tb as xe,Ua as V,Ub as u,Vb as b,W as L,Wb as j,X as $,Xc as Re,_a as ye,aa as fe,bb as Y,ea as ve,eb as _e,f as ue,fb as ke,ga as be,gb as _,ha as I,ja as Z,jb as R,kb as T,m as U,pb as v,pc as c,qb as d,rb as m,sb as P,sc as Se,tb as ee,ub as de,vb as Ce,yc as Me}from"./chunk-PZQHB7GS.js";import"./chunk-WCABR6TI.js";var me="skill-map",M={brand:me,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} - ${me}`:me;return n?`${e} v${n}`:e}};var lt=[{path:"",pathMatch:"full",redirectTo:"map"},{path:"map",loadComponent:()=>import("./chunk-MS6B7344.js").then(t=>t.GraphView),title:M.nav.map},{path:"files",loadComponent:()=>import("./chunk-I5AX4U2N.js").then(t=>t.FilesView),title:M.nav.files},{path:"**",redirectTo:"map"}];var E={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 se(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 p="/api",dt=(()=>{class t{http;ws;kindRegistry;providerRegistry;contributionsRegistry;constructor(e,i,r,o,l){this.http=e??s(J),this.ws=i??s(H),this.kindRegistry=r??s(A),this.contributionsRegistry=o??s(re),this.providerRegistry=l??s(D)}async health(){return this.getJson(`${p}/health`)}async loadScan(){let[e]=await Promise.all([this.getJson(`${p}/scan`),this.listNodes({limit:0}).catch(()=>null)]);return e}async runScan(){return this.patchJson(`${p}/scan`,{},"POST")}async listNodes(e={}){let i=Lt(e),r=await this.getJson(`${p}/nodes${i}`);return this.ingestRegistry(r.kindRegistry),this.ingestContributionsRegistry(r.contributionsRegistry),this.ingestProviderRegistry(r.providerRegistry),r}async getNode(e,i={}){let r=se(e),o=i.includeBody?"?include=body":"";try{let l=await this.getJson(`${p}/nodes/${r}${o}`);return this.ingestRegistry(l.kindRegistry),this.ingestContributionsRegistry(l.contributionsRegistry),this.ingestProviderRegistry(l.providerRegistry),l}catch(l){if(l instanceof h&&l.code==="not-found")return null;throw l}}async listLinks(e={}){let i=$t(e),r=await this.getJson(`${p}/links${i}`);return this.ingestRegistry(r.kindRegistry),this.ingestContributionsRegistry(r.contributionsRegistry),this.ingestProviderRegistry(r.providerRegistry),r}async listIssues(e={}){let i=zt(e),r=await this.getJson(`${p}/issues${i}`);return this.ingestRegistry(r.kindRegistry),this.ingestContributionsRegistry(r.contributionsRegistry),this.ingestProviderRegistry(r.providerRegistry),r}async loadGraph(e="ascii"){let i=`${p}/graph?format=${encodeURIComponent(e)}`;try{return await U(this.http.get(i,{responseType:"text"}))}catch(r){throw this.translateError(r)}}async loadConfig(){let e=await this.getJson(`${p}/config`);return this.ingestRegistry(e.kindRegistry),this.ingestContributionsRegistry(e.contributionsRegistry),this.ingestProviderRegistry(e.providerRegistry),e.value}async listPlugins(){let e=await this.getJson(`${p}/plugins`);return this.ingestRegistry(e.kindRegistry),this.ingestContributionsRegistry(e.contributionsRegistry),this.ingestProviderRegistry(e.providerRegistry),e}async setPluginEnabled(e,i){let r=await this.patchJson(`${p}/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(`${p}/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(`${p}/plugins`,{changes:e});return this.ingestRegistry(i.kindRegistry),this.ingestContributionsRegistry(i.contributionsRegistry),this.ingestProviderRegistry(i.providerRegistry),i}async getPreferences(){return await this.getJson(`${p}/preferences`)}async setPreferences(e){return await this.patchJson(`${p}/preferences`,e)}async getProjectPreferences(){return await this.getJson(`${p}/project-preferences`)}async setProjectPreferences(e){return await this.patchJson(`${p}/project-preferences`,e)}async getProjectIgnore(){return await this.getJson(`${p}/project-ignore`)}async setProjectIgnore(e){return await this.patchJson(`${p}/project-ignore`,e)}async getActiveProvider(){return await this.getJson(`${p}/active-provider`)}async setActiveProvider(e){return await this.patchJson(`${p}/active-provider`,{activeProvider:e})}async setFavorite(e){let i=se(e);try{await U(this.http.put(`${p}/favorites/${i}`,null))}catch(r){throw this.translateError(r)}}async unsetFavorite(e){let i=se(e);try{await U(this.http.delete(`${p}/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(`${p}/sidecar/bump`,r,"POST")}async getUpdateStatus(){return this.getJson(`${p}/update-status`)}async getRegisteredAnnotations(){return(await this.getJson(`${p}/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(`${p}/contributions/${encodeURIComponent(e)}/${encodeURIComponent(i)}?${o.toString()}`)).items[0]??null}catch{return null}}events(){return this.ws.events$}async getJson(e){try{return await U(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 U(o)}catch(o){throw this.translateError(o)}}translateError(e){if(e instanceof h)return e;if(e instanceof Oe){let r=jt(e.error);return r?new h(r.error.code,r.error.message,r.error.details):new h("internal",e.message||E.errors.malformedResponse)}let i=e instanceof Error?e.message:String(e);return new h("internal",i)}static \u0275fac=function(i){return new(i||t)(B(J),B(H),B(A),B(re),B(D))};static \u0275prov=S({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Lt(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 $t(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 zt(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 jt(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 Nt="data.json",Ft="data.meta.json",ae=class{fetchImpl;metaPromise=null;dataPromise=null;kindRegistry;providerRegistry;constructor(n=globalThis.fetch.bind(globalThis),e,i){this.fetchImpl=n,this.kindRegistry=e??s(A),this.providerRegistry=i??s(D)}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(Ut(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 x=new Set(n.kind);o=o.filter(C=>x.has(C.kind))}if(n.path){let x=Jt(n.path);o=o.filter(C=>x.test(C.path))}if(n.hasIssues===!0){let x=ct(r);o=o.filter(C=>x.has(C.path))}else if(n.hasIssues===!1){let x=ct(r);o=o.filter(C=>!x.has(C.path))}let l=o.length,g=n.offset??0,w=n.limit??1e3,f=o.slice(g,g+w);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:l,returned:f.length,page:{offset:g,limit:w}},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 l=i.links.filter(f=>f.target===n),g=i.links.filter(f=>f.source===n),w=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:l,outgoing:g},issues:w,kindRegistry:r.nodes.kindRegistry,providerRegistry:r.nodes.providerRegistry}}async listLinks(n={}){let e=await this.loadMeta();if(Bt(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(l=>o.has(l.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(Vt(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(l=>l.nodeIds.some(g=>o.has(g)))}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",E.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 ue}loadMeta(){return this.metaPromise||(this.metaPromise=this.fetchJson(Ft)),this.metaPromise}loadData(){return this.dataPromise||(this.dataPromise=this.fetchJson(Nt)),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",E.errors.demoFetchFailed(n,r))}if(!e.ok)throw new h("internal",E.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",E.errors.demoParseFailed(n,r))}}};function Ut(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 Bt(t){return!(t.kind&&t.kind.length>0||t.from||t.to)}function Vt(t){return!(t.severity||t.analyzerId||t.node||t.nodes&&t.nodes.length>0)}function ct(t){let n=new Set;for(let e of t)for(let i of e.nodeIds)n.add(i);return n}function Jt(t){let e=t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${e}$`)}function pt(){let t=s(K);if(t==="live")return new dt(s(J),s(H));if(t==="demo")return new ae;let n=t;throw new Error(E.errors.unknownMode(String(n)))}var mt="search",gt="kinds",ht="linkKinds",ut="stabilities",ft="hasIssues",vt="staleOnly",bt="favoritesOnly",yt="severities",Kt=["error","warn"],_t=(()=>{class t{filters=s(Qe);router=s(ze);activatedRoute=s(Le);kindRegistry=s(A);destroyRef=s(fe);suppressUrlReadback=!1;constructor(){this.applyUrlToFilters(this.currentParams()),this.router.events.pipe(He(this.destroyRef)).subscribe(e=>{if(e instanceof De){if(this.suppressUrlReadback)return;this.applyUrlToFilters(this.currentParams())}}),Z(()=>{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(mt)??"";i!==this.filters.searchText()&&this.filters.setSearchText(i);let r=Ht(e.get(gt),this.kindRegistry.kinds().map(Dt=>Dt.name));le(r,this.filters.selectedKinds())||this.filters.setKinds(r);let o=Xt(e.get(ut));le(o,this.filters.selectedStabilities())||this.filters.setStabilities(o);let l=e.get(ft)==="true";l!==this.filters.hasIssuesOnly()&&this.filters.setHasIssuesOnly(l);let g=e.get(vt)==="true";g!==this.filters.staleOnly()&&this.filters.setStaleOnly(g);let w=e.get(bt)==="true";w!==this.filters.favoritesOnly()&&this.filters.setFavoritesOnly(w);let f=Wt(e.get(ht));le(f,this.filters.selectedLinkKinds())||this.filters.setLinkKinds(f);let x=Yt(e.get(yt)),C=[];this.filters.severityErrorActive()&&C.push("error"),this.filters.severityWarnActive()&&C.push("warn"),le(x,C)||this.filters.setSeverityFilters(x)}computeQueryParams(){let e=this.filters.searchText().trim(),i=this.filters.selectedKinds(),r=this.filters.selectedLinkKinds(),o=this.filters.selectedStabilities(),l=this.filters.hasIssuesOnly(),g=this.filters.staleOnly(),w=this.filters.favoritesOnly(),f=[];return this.filters.severityErrorActive()&&f.push("error"),this.filters.severityWarnActive()&&f.push("warn"),{[mt]:e.length>0?e:null,[gt]:i.length>0?i.join(","):null,[ht]:r.length>0?r.join(","):null,[ut]:o.length>0?o.join(","):null,[ft]:l?"true":null,[vt]:g?"true":null,[bt]:w?"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[l,g]of r)if((i.get(l)??null)!==g){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=S({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Ht(t,n){if(!t)return[];let e=new Set(n);return t.split(",").map(i=>i.trim()).filter(i=>e.has(i))}function Xt(t){if(!t)return[];let n=new Set(We);return t.split(",").map(e=>e.trim()).filter(e=>n.has(e))}function Wt(t){if(!t)return[];let n=new Set(Ye);return t.split(",").map(e=>e.trim()).filter(e=>n.has(e))}function Yt(t){if(!t)return[];let n=new Set(Kt);return t.split(",").map(e=>e.trim()).filter(e=>n.has(e))}function le(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 kt={healthFailed:t=>`ProjectInfoService: /api/health probe failed (${t})`};var W=(()=>{class t{dataSource=s(Q);status=I(null);cwd=c(()=>this.status()?.cwd??null);implVersion=c(()=>this.status()?.implVersion??null);dev=c(()=>this.status()?.dev===!0);activeProviderState=I(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(kt.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=S({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Pt=(()=>{class t extends te{title=s(Ae);projectInfo=s(W);constructor(){super(),Z(()=>{let e=Ct(this.projectInfo.cwd()),i=this.projectInfo.implVersion();this.title.setTitle(M.documentTitle(e,i))})}updateTitle(e){let i=Ct(this.projectInfo.cwd()),r=this.projectInfo.implVersion();this.title.setTitle(M.documentTitle(i,r))}static \u0275fac=function(i){return new(i||t)};static \u0275prov=S({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Ct(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 ge=!1,he=null;async function wt(t){if(ge||pe===""||!t.consentEnabled)return;let n=await import("./chunk-X227ITGS.js");n.init({dsn:pe,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=>et(e)}),he=n,ge=!0}function xt(t){!ge||he===null||he.captureException(t)}var St=(()=>{class t{handleError(e){console.error(e),xt(e)}static \u0275fac=function(i){return new(i||t)};static \u0275prov=S({token:t,factory:t.\u0275fac})}return t})();function Qt(...t){for(let n of t)Promise.resolve(n.load())}var Mt={providers:[be(),{provide:ve,useClass:St},Fe(lt,Ue()),{provide:te,useClass:Pt},Ee(Ie()),Ve({}),Y(async()=>{let t=s(Be),[{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:K,useFactory:Xe},{provide:Q,useFactory:pt},Y(async()=>{let t=s(Q),n=s(G);try{let[e,i]=await Promise.all([t.getPreferences(),t.health()]);await Promise.all([wt({consentEnabled:e.telemetry.errorsEnabled,release:i.implVersion??null,environment:e.telemetry.environment}),tt({consentEnabled:e.telemetry.usageUiEnabled,distinctId:e.telemetry.anonymousId})]),nt({environment:e.telemetry.environment}),n.syncTheme()}catch{}}),Y(()=>{Qt(s(X),s(oe),s(W))}),Y(()=>{s(_t),s(Ze),s(G)})]};var F={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 Zt(t,n){if(t&1){let e=z();d(0,"div",0),P(1,"span",1),d(2,"p",2),u(3),d(4,"code",3),u(5),m()(),d(6,"a",4),u(7),m(),d(8,"p-button",5),O("onClick",function(){L(e);let r=y();return $(r.dismiss())}),m()()}if(t&2){let e=y();a(3),j(" ",e.texts.body," "),a(2),b(e.texts.installCommand),a(),v("href",e.texts.homeHref,q),a(),b(e.texts.homeCta),a(),v("ariaLabel",e.texts.dismissAria)("text",!0)("rounded",!0)}}var Tt="sm.demoBannerDismissed",Ot=(()=>{class t{mode=s(K);texts=Rt;dismissed=I(this.readDismissed());visible=c(()=>this.mode==="demo"&&!this.dismissed());dismiss(){this.dismissed.set(!0);try{globalThis.localStorage?.setItem(Tt,"1")}catch{}}readDismissed(){if(this.mode!=="demo")return!0;try{return globalThis.localStorage?.getItem(Tt)==="1"}catch{return!1}}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=V({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&&R(0,Zt,9,7,"div",0),i&2&&T(r.visible()?0:-1)},dependencies:[ie,ne],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 Et={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 qt(t,n){if(t&1){let e=z();ee(0,"div",0),Ce(1,"span",1),ee(2,"p",2),u(3),de(),ee(4,"button",3),Pe("click",function(){L(e);let r=y();return $(r.onCta())}),u(5),de()()}if(t&2){let e=y();_("data-mode",e.state().mode),a(3),j(" ",e.state().body," "),a(),_("aria-label",e.texts.ctaAria),a(),j(" ",e.texts.cta," ")}}var It=(()=>{class t{loader=s(X);texts=Et;openSettings=Se();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,l=e.stats.filesWalked,g=e.stats.nodesCount;return l>o?{mode:"capped",body:this.texts.bodyCapped(l,o,r!==null?"override":"setting")}:g<i?{mode:"hidden",body:""}:r!==null&&g>i?{mode:"overLimit",body:this.texts.bodyOverLimit(g,i,r)}:{mode:"atLimit",body:this.texts.bodyAtLimit(g,i)}});visible=c(()=>this.state().mode!=="hidden");onCta(){this.openSettings.emit()}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=V({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&&R(0,qt,6,4,"div",0),i&2&&T(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 en=()=>[import("./chunk-DL5EA245.js").then(t=>t.SettingsModal)];function tn(t,n){if(t&1&&(d(0,"span",11),u(1),m()),t&2){let e=y();v("pTooltip",e.versionTooltip()),_("aria-label",e.texts.devChipA11y),a(),b(e.texts.devChip)}}function nn(t,n){if(t&1&&(d(0,"span",12),u(1),m()),t&2){let e=y();v("pTooltip",e.versionTooltip()),_("aria-label",e.versionA11y()),a(),b(e.versionLabel())}}function rn(t,n){if(t&1&&(d(0,"span",26),u(1),m()),t&2){let e=n,i=y();we("--provider-color",e.color)("--provider-color-dark",e.colorDark??e.color),v("pTooltip",i.texts.lensChipTooltip(e.label)),_("aria-label",i.texts.lensChipA11y(e.label)),a(),b(e.label)}}function on(t,n){if(t&1){let e=z();d(0,"button",27),O("click",function(){L(e);let r=y();return $(r.copyUpdateCommand())}),P(1,"i",28),d(2,"span"),u(3),m()(),d(4,"a",29),P(5,"i",30),m()}if(t&2){let e=y();v("pTooltip",e.updateChipTooltip()),_("aria-label",e.updateChipA11y()),a(),xe(e.updateChipIcon()),a(2),b(e.updateChipText()),a(),v("href",e.npmLinkUrl,q)("pTooltip",e.npmLinkTooltip),_("aria-label",e.npmLinkA11y)}}function sn(t,n){if(t&1&&(d(0,"p",15)(1,"bdi",31),u(2),m()()),t&2){let e=n;_("title",e),a(2),b(e)}}function an(t,n){if(t&1){let e=z();d(0,"sm-settings-modal",32),O("visibleChange",function(r){L(e);let o=y();return $(o.onSettingsVisibleChange(r))}),m()}if(t&2){let e=y();v("visible",e.settingsOpen())}}var At=(()=>{class t{loader=s(X);theme=s(it);projectInfo=s(W);providerRegistry=s(D);scanTrigger=s(at);usageTracker=s(G);updateCheck=s(oe);texts=M;settingsTexts=st;settingsOpen=I(!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=I(!1);updateChipText=c(()=>this.updateChipCopied()?k.copiedLabel:k.available);updateChipIcon=c(()=>this.updateChipCopied()?"pi pi-check":"pi pi-download");updateChipTooltip=c(()=>this.updateChipCopied()?k.copiedTooltip:k.tooltip(this.updateCheck.latest()??""));updateChipA11y=c(()=>k.a11yLabel(this.updateCheck.latest()??""));npmLinkUrl=k.npmLinkUrl;npmLinkTooltip=k.npmLinkTooltip;npmLinkA11y=k.npmLinkA11y;async copyUpdateCommand(){try{await navigator.clipboard.writeText(k.copyCommand),this.updateChipCopied.set(!0),setTimeout(()=>this.updateChipCopied.set(!1),2e3)}catch{}}versionLabel=c(()=>k.versionLabel(this.updateCheck.current()??""));versionTooltip=c(()=>k.versionTooltip(this.updateCheck.current()??""));versionA11y=c(()=>k.versionA11yLabel(this.updateCheck.current()??""));isDevBuild=this.projectInfo.dev;lensChip=c(()=>this.providerRegistry.lensChip(this.projectInfo.activeProvider()));count=this.loader.count;linkAnalysis=c(()=>rt(this.loader.nodes(),this.loader.scan()));linkCount=c(()=>this.linkAnalysis().raw);mapInfoTooltip=c(()=>M.badge.mapInfo(this.count(),this.linkAnalysis()));mapInfoA11y=c(()=>M.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=Me();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 F.toggleToLight;case"light":return F.toggleToDark;case"dark":return F.toggleToAuto}});themeTooltip=c(()=>{switch(this.themeMode()){case"auto":return F.currentAuto;case"light":return F.currentLight;case"dark":return F.currentDark}});toggleTheme(){this.theme.toggle()}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=V({type:t,selectors:[["sm-root"]],decls:41,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&&(d(0,"div",0)(1,"div",1),P(2,"i",2),d(3,"h2",3),u(4),m(),d(5,"p",4),u(6),m(),d(7,"p",5),u(8),m()()(),d(9,"div",6),P(10,"sm-demo-banner"),d(11,"sm-oversized-banner",7),O("openSettings",function(){return r.openSettings()}),m(),d(12,"header",8)(13,"div",9),P(14,"img",10),d(15,"div")(16,"h1"),u(17),R(18,tn,2,3,"span",11)(19,nn,2,3,"span",12),R(20,rn,2,7,"span",13),d(21,"span",14),u(22),m(),R(23,on,6,8),m(),R(24,sn,3,2,"p",15),m()(),d(25,"nav",16),P(26,"sm-view-contributions-host",17),d(27,"a",18),u(28),m(),d(29,"a",19),u(30),m()(),d(31,"div",20)(32,"button",21),O("click",function(){return r.triggerScan()}),P(33,"i",22),m(),d(34,"p-button",23),O("onClick",function(){return r.toggleTheme()}),m(),d(35,"p-button",24),O("onClick",function(){return r.openSettings()}),m()()(),d(36,"main",25),P(37,"router-outlet"),m(),ye(38,an,1,1),_e(39,38,en),m()),i&2){let o,l,g;a(4),b(r.texts.viewportWarning.title),a(2),b(r.texts.viewportWarning.subtitle),a(2),b(r.texts.viewportWarning.body),a(6),v("ngSrc",r.markSrc()),a(3),j(" ",r.texts.brand," "),a(),T(r.isDevBuild()?18:(o=r.updateCheck.current())?19:-1,o),a(2),T((l=r.lensChip())?20:-1,l),a(),_("aria-label",r.texts.alpha),a(),b(r.texts.alpha),a(),T(r.updateCheck.isOutdated()&&!r.isDevMode?23:-1),a(),T((g=r.rootLabel())?24:-1,g),a(),_("aria-label",r.texts.a11y.viewSwitcher),a(),v("node",null),a(2),b(r.texts.nav.map),a(2),b(r.texts.nav.files),a(2),ce("is-spinning",r.scanning()),v("pTooltip",r.mapInfoTooltip())("disabled",r.scanning()),_("aria-label",r.mapInfoA11y()),a(),ce("pi-spin",r.scanning()),a(),v("icon",r.themeIcon())("ariaLabel",r.themeLabel())("pTooltip",r.themeTooltip())("text",!0)("rounded",!0),a(),v("ariaLabel",r.settingsTexts.a11y.triggerLabel)("pTooltip",r.settingsTexts.triggerTooltip)("text",!0)("rounded",!0),a(4),ke(r.settingsOpen())}},dependencies:[$e,je,Ne,ie,ne,ot,Ke,Je,Ge,Re,Ot,It,qe],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})();Te(At,Mt).catch(t=>console.error(t));
|