@skill-map/cli 0.20.0 → 0.20.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.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/kernel/index.js +1 -1
- package/dist/kernel/index.js.map +1 -1
- package/dist/ui/{chunk-LQTUSDHD.js → chunk-4NLC7QD2.js} +1 -1
- package/dist/ui/{chunk-DLT5AP43.js → chunk-6BZZQV42.js} +1 -1
- package/dist/ui/{chunk-QICH7GU2.js → chunk-6GUHSAP5.js} +1 -1
- package/dist/ui/{chunk-HJSRMZTK.js → chunk-E4ALROJS.js} +1 -1
- package/dist/ui/{chunk-2W62S3FU.js → chunk-EZZF5RL5.js} +1 -1
- package/dist/ui/{chunk-HOBQ4G4O.js → chunk-FWX4RRDF.js} +1 -1
- package/dist/ui/{chunk-UJRROL5X.js → chunk-GGMXMGRJ.js} +1 -1
- package/dist/ui/{chunk-IBUV6OG2.js → chunk-K5PULFK7.js} +1 -1
- package/dist/ui/{chunk-VLNLJAUB.js → chunk-OJ6W6OIB.js} +1 -1
- package/dist/ui/{chunk-C7QWBAYP.js → chunk-PTCD42GB.js} +1 -1
- package/dist/ui/{chunk-W3JLG7BI.js → chunk-ZSRIBCAW.js} +5 -5
- package/dist/ui/index.html +1 -1
- package/dist/ui/main-5FJWWH5I.js +1 -0
- package/package.json +1 -1
- package/dist/ui/main-QHE47BCM.js +0 -1
package/dist/ui/index.html
CHANGED
|
@@ -31,5 +31,5 @@
|
|
|
31
31
|
<style>:root{--ff-white:#ffffff;--ff-black:#000000;--ff-gray-0:#ffffff;--ff-gray-25:#fcfcfc;--ff-gray-50:#f8f8f7;--ff-gray-75:#f2f2f0;--ff-gray-100:#e9e9e6;--ff-gray-150:#dcdcd7;--ff-gray-200:#c9c9c1;--ff-gray-300:#afafa5;--ff-gray-400:#8d8d81;--ff-gray-500:#69695f;--ff-gray-600:#505048;--ff-gray-700:#3c3c36;--ff-gray-800:#272722;--ff-gray-900:#1b1b18;--ff-gray-950:#141412;--ff-gray-1000:#0f0f0d;--ff-alpha-black-04:rgba(15, 15, 13, .04);--ff-alpha-black-06:rgba(15, 15, 13, .06);--ff-alpha-black-08:rgba(15, 15, 13, .08);--ff-alpha-black-10:rgba(15, 15, 13, .1);--ff-alpha-black-12:rgba(15, 15, 13, .12);--ff-alpha-black-15:rgba(15, 15, 13, .15);--ff-alpha-black-20:rgba(15, 15, 13, .2);--ff-alpha-black-30:rgba(15, 15, 13, .3);--ff-alpha-black-40:rgba(15, 15, 13, .4);--ff-alpha-black-60:rgba(15, 15, 13, .6);--ff-alpha-white-04:rgba(255, 255, 255, .04);--ff-alpha-white-06:rgba(255, 255, 255, .06);--ff-alpha-white-08:rgba(255, 255, 255, .08);--ff-alpha-white-10:rgba(255, 255, 255, .1);--ff-alpha-white-12:rgba(255, 255, 255, .12);--ff-alpha-white-15:rgba(255, 255, 255, .15);--ff-alpha-white-20:rgba(255, 255, 255, .2);--ff-alpha-white-30:rgba(255, 255, 255, .3);--ff-alpha-white-40:rgba(255, 255, 255, .4);--ff-alpha-white-60:rgba(255, 255, 255, .6);--ff-blue-100:#e8f2ff;--ff-blue-200:#bad8ff;--ff-blue-300:#7db7ff;--ff-blue-400:#4176ff;--ff-blue-500:#2759db;--ff-blue-600:#1b3f9e;--ff-green-100:#e7f7ef;--ff-green-300:#71c795;--ff-green-400:#2b9b5f;--ff-green-500:#1e7748;--ff-yellow-100:#fff5de;--ff-yellow-300:#e1b354;--ff-yellow-400:#bb8121;--ff-yellow-500:#916112;--ff-red-100:#feeceb;--ff-red-300:#e48d85;--ff-red-400:#c55245;--ff-red-500:#9e3a2f;--ff-radius-4:4px;--ff-radius-6:6px;--ff-radius-pill:999px;--ff-font-family-sans:"Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--ff-font-family-mono:ui-monospace, "SFMono-Regular", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;--ff-font-size-xs:12px;--ff-font-size-sm:14px;--ff-font-size-md:16px;--ff-font-size-lg:18px;--ff-shadow-1:0 1px 2px rgba(15, 15, 13, .05), 0 8px 20px rgba(15, 15, 13, .04);--ff-shadow-2:0 10px 28px rgba(15, 15, 13, .08), 0 3px 10px rgba(15, 15, 13, .05);--ff-shadow-3:0 18px 48px rgba(15, 15, 13, .12), 0 6px 16px rgba(15, 15, 13, .08)}:root{--ff-color-surface-page:var(--ff-gray-25);--ff-color-surface-canvas:var(--ff-gray-25);--ff-color-surface-card:var(--ff-white);--ff-color-surface-group:rgba(65, 118, 255, .14);--ff-color-surface-group-active:rgba(65, 118, 255, .2);--ff-color-surface-muted:var(--ff-gray-50);--ff-color-surface-soft:var(--ff-gray-75);--ff-color-surface-accent-soft:rgba(65, 118, 255, .1);--ff-color-border-default:var(--ff-alpha-black-12);--ff-color-border-subtle:var(--ff-alpha-black-08);--ff-color-border-strong:var(--ff-alpha-black-20);--ff-color-border-accent:var(--ff-blue-500);--ff-color-text-primary:var(--ff-gray-800);--ff-color-text-secondary:var(--ff-gray-500);--ff-color-text-tertiary:var(--ff-gray-400);--ff-color-text-inverse:var(--ff-white);--ff-color-accent:var(--ff-blue-500);--ff-color-accent-strong:var(--ff-blue-600);--ff-color-success:var(--ff-green-400);--ff-color-warning:var(--ff-yellow-400);--ff-color-danger:var(--ff-red-400);--ff-color-disabled-surface:var(--ff-gray-100);--ff-color-disabled-border:var(--ff-alpha-black-10);--ff-color-disabled-text:var(--ff-gray-300);--ff-color-selection-fill:rgba(65, 118, 255, .12);--ff-color-selection-stroke:rgba(65, 118, 255, .28);--ff-color-grid:var(--ff-alpha-black-08);--ff-color-grid-strong:var(--ff-alpha-black-15);--ff-color-connector-connected:var(--ff-blue-500);--ff-color-connection:var(--ff-gray-600);--ff-color-connection-muted:var(--ff-gray-300);--ff-color-connection-hover:var(--ff-alpha-black-12);--ff-color-grouping-drop-target-border:var(--ff-gray-800);--ff-color-grouping-drop-target-border-active:var(--ff-gray-800);--ff-color-waypoint-fill:var(--ff-white);--ff-color-waypoint-stroke:var(--ff-blue-500);--ff-color-waypoint-candidate-fill:var(--ff-white);--ff-color-waypoint-candidate-stroke:var(--ff-green-400);--ff-color-minimap-surface:var(--ff-white);--ff-color-minimap-node:var(--ff-gray-700);--ff-color-minimap-view:rgba(65, 118, 255, .14);--ff-color-magnetic-line:var(--ff-blue-500);--ff-color-magnetic-rect-fill:rgba(65, 118, 255, .08);--ff-color-magnetic-rect-border:rgba(65, 118, 255, .24);--ff-radius-node:var(--ff-radius-4);--ff-radius-group:var(--ff-radius-4);--ff-radius-control:var(--ff-radius-4);--ff-radius-socket-square:var(--ff-radius-6);--ff-radius-pill:var(--ff-radius-pill);--ff-font-sans:var(--ff-font-family-sans);--ff-font-mono:var(--ff-font-family-mono);--ff-font-size-body:var(--ff-font-size-sm);--ff-font-size-label:var(--ff-font-size-xs);--ff-shadow-surface:var(--ff-shadow-1);--ff-shadow-floating:var(--ff-shadow-2)}:root{--ff-flow-background-color:var(--ff-color-surface-page);--ff-flow-text-color:var(--ff-color-text-primary);--ff-flow-font-family:var(--ff-font-sans);--ff-flow-font-size:var(--ff-font-size-body);--ff-canvas-background-color:var(--ff-color-surface-canvas);--ff-node-background-color:var(--ff-color-surface-card);--ff-node-background-color-inverse:var(--ff-color-text-primary);--ff-node-border-color:var(--ff-color-border-default);--ff-node-border-color-selected:var(--ff-color-border-accent);--ff-node-color:var(--ff-color-text-primary);--ff-node-border-radius:var(--ff-radius-node);--ff-node-shadow:var(--ff-shadow-surface);--ff-node-shadow-selected:var(--ff-shadow-floating);--ff-node-width:120px;--ff-node-min-height:56px;--ff-node-padding:24px;--ff-group-background-color:var(--ff-color-surface-group);--ff-group-background-color-active:var(--ff-color-surface-group-active);--ff-group-border-color:var(--ff-color-border-subtle);--ff-group-border-color-selected:var(--ff-color-border-accent);--ff-group-border-color-active:var(--ff-color-border-accent);--ff-group-color:var(--ff-color-text-secondary);--ff-group-border-radius:var(--ff-radius-group);--ff-group-min-width:180px;--ff-group-min-height:120px;--ff-group-padding:24px;--ff-grouping-drop-target-border-color:var(--ff-color-grouping-drop-target-border);--ff-grouping-drop-target-border-style:dashed;--ff-grouping-drop-target-border-width:1px;--ff-grouping-drop-target-border-color-active:var(--ff-color-grouping-drop-target-border-active);--ff-grouping-drop-target-border-style-active:dashed;--ff-grouping-drop-target-border-width-active:2px;--ff-handle-background-color:var(--ff-color-surface-card);--ff-handle-border-color:var(--ff-color-border-strong);--ff-handle-color:var(--ff-color-text-secondary);--ff-handle-size:12px;--ff-handle-radius:var(--ff-radius-control);--ff-rotate-handle-size:16px;--ff-connector-background-color:var(--ff-color-surface-card);--ff-connector-border-color:var(--ff-color-border-default);--ff-connector-connected-color:var(--ff-color-connector-connected);--ff-connector-accent-color:var(--ff-color-accent);--ff-connector-disabled-color:var(--ff-color-disabled-surface);--ff-connector-disabled-border-color:var(--ff-color-disabled-border);--ff-connector-size:16px;--ff-connector-node-ring-color:var(--ff-canvas-background-color);--ff-outlet-background-color:var(--ff-color-surface-muted);--ff-outlet-border-color:var(--ff-color-border-default);--ff-outlet-color:var(--ff-color-accent);--ff-outlet-disabled-background-color:var(--ff-color-disabled-surface);--ff-outlet-disabled-border-color:var(--ff-color-disabled-border);--ff-outlet-disabled-color:var(--ff-color-disabled-text);--ff-outlet-border-radius:var(--ff-radius-pill);--ff-outlet-padding-y:6px;--ff-outlet-padding-x:12px;--ff-connection-color:var(--ff-color-connection);--ff-snap-connection-color:var(--ff-color-connection-muted);--ff-connection-hover-color:var(--ff-color-connection-hover);--ff-connection-selected-color:var(--ff-color-accent);--ff-connection-label-color:var(--ff-color-text-secondary);--ff-connection-content-color:var(--ff-node-color);--ff-connection-content-background-color:var(--ff-node-background-color);--ff-connection-content-border-color:var(--ff-node-border-color);--ff-connection-content-border-color-selected:var(--ff-connection-selected-color);--ff-connection-content-border-radius:var(--ff-node-border-radius);--ff-connection-content-font-size:13px;--ff-connection-content-padding-y:2px;--ff-connection-content-padding-x:8px;--ff-connection-width:2px;--ff-connection-hit-width:14px;--ff-connection-drag-handle-fill:var(--ff-color-surface-card);--ff-connection-drag-handle-stroke:var(--ff-color-accent);--ff-marker-color:var(--ff-connection-color);--ff-waypoint-fill:var(--ff-color-waypoint-fill);--ff-waypoint-stroke:var(--ff-color-waypoint-stroke);--ff-waypoint-candidate-fill:var(--ff-color-waypoint-candidate-fill);--ff-waypoint-candidate-stroke:var(--ff-color-waypoint-candidate-stroke);--ff-background-line-color:var(--ff-color-grid);--ff-background-dot-color:var(--ff-color-grid-strong);--ff-selection-area-color:var(--ff-color-selection-fill);--ff-selection-area-border-color:var(--ff-color-selection-stroke);--ff-minimap-background-color:var(--ff-color-minimap-surface);--ff-minimap-border-color:var(--ff-color-border-default);--ff-minimap-node-color:var(--ff-color-minimap-node);--ff-minimap-node-selected-color:var(--ff-color-accent);--ff-minimap-view-color:var(--ff-color-minimap-view);--ff-minimap-view-border-color:var(--ff-color-selection-stroke);--ff-minimap-border-radius:var(--ff-radius-node);--ff-minimap-shadow:var(--ff-shadow-floating);--ff-magnetic-line-color:var(--ff-color-magnetic-line);--ff-magnetic-rect-fill:var(--ff-color-magnetic-rect-fill);--ff-magnetic-rect-border-color:var(--ff-color-magnetic-rect-border);--ff-external-item-background-color:var(--ff-color-surface-card);--ff-external-item-border-color:var(--ff-color-border-default);--ff-external-item-color:var(--ff-color-text-primary);--ff-external-item-disabled-color:var(--ff-color-disabled-text);--ff-external-item-disabled-background-color:var(--ff-color-disabled-surface);--ff-external-item-border-radius:var(--ff-radius-node);--ff-external-item-shadow:var(--ff-shadow-surface);--ff-external-item-preview-shadow:var(--ff-shadow-floating);--ff-external-item-placeholder-background-color:var(--ff-color-surface-soft);--ff-external-item-placeholder-border-color:var(--ff-color-border-subtle)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}:root{--sm-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--sm-bg-page:#f8fafc;--sm-bg-content:#ffffff;--sm-bg-hover:#f1f5f9;--sm-border:#e2e8f0;--sm-nav-active-bg:#eff6ff;--sm-violet-50:#F5F3FF;--sm-violet-100:#EDE9FE;--sm-violet-200:#DDD6FE;--sm-violet-300:#C4B5FD;--sm-violet-400:#A78BFA;--sm-violet-500:#8B5CF6;--sm-violet-600:#7C3AED;--sm-violet-700:#6D28D9;--sm-violet-800:#4C1D95;--sm-violet-900:#2E1065;--sm-edge-invokes:#f59e0b;--sm-edge-references:#3b82f6;--sm-edge-mentions:#9ca3af;--sm-edge-supersedes:#8b5cf6;--sm-link-in-bg:#e0e7ff;--sm-link-in-fg:#3730a3;--sm-link-out-bg:#fef3c7;--sm-link-out-fg:#92400e;--sm-severity-info:#1e3a8a;--sm-severity-success:#065f46;--sm-severity-warn:#92400e;--sm-severity-error:#991b1b;--sm-severity-info-bg:rgba(219, 234, 254, .35);--sm-severity-success-bg:rgba(209, 250, 229, .35);--sm-severity-warn-bg:rgba(254, 243, 199, .35);--sm-severity-error-bg:rgba(254, 226, 226, .35);--sm-shadow-topbar:0 1px 2px rgba(0, 0, 0, .03);--sm-shadow-eventlog:0 -4px 16px rgba(0, 0, 0, .08);--sm-shadow-floating:0 4px 14px rgba(0, 0, 0, .08);--sm-shadow-card:0 1px 2px rgba(0, 0, 0, .05);--sm-shadow-card-hover:0 3px 12px rgba(0, 0, 0, .12)}html,body{margin:0;padding:0;height:100dvh;overflow:hidden;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--sm-bg-page);color:var(--p-text-color)}*,*:before,*:after{box-sizing:border-box}</style><link rel="stylesheet" href="styles-VJ5Q6D2X.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-VJ5Q6D2X.css"></noscript></head>
|
|
32
32
|
<body>
|
|
33
33
|
<app-root></app-root>
|
|
34
|
-
<link rel="modulepreload" href="chunk-
|
|
34
|
+
<link rel="modulepreload" href="chunk-K5PULFK7.js"><link rel="modulepreload" href="chunk-OJ6W6OIB.js"><link rel="modulepreload" href="chunk-GGMXMGRJ.js"><link rel="modulepreload" href="chunk-ZSRIBCAW.js"><link rel="modulepreload" href="chunk-3R7E3HPC.js"><link rel="modulepreload" href="chunk-Q7L6LLAK.js"><script src="main-5FJWWH5I.js" type="module"></script></body>
|
|
35
35
|
</html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as q,b as ze,c as We}from"./chunk-K5PULFK7.js";import{a as Se,b as Ae,c as Ce,d as Te,e as Ee,f as xe,g as Re,h as Me,i as De,k as $e,l as Fe,m as Ne,p as S,q as je,r as Ue}from"./chunk-OJ6W6OIB.js";import{a as A,b as Be,c as He,d as Ke,e as Qe}from"./chunk-GGMXMGRJ.js";import{$b as _e,$c as X,B as me,Ba as ge,Ea as he,Ha as fe,Ia as ve,J as w,Ja as x,Kc as Le,Lc as Oe,Ma as D,N as j,Na as $,O as s,S as W,Sa as g,Sb as m,T as B,Ta as l,Ua as c,Va as f,X as H,aa as ue,ad as Y,ba as _,c as de,ca as K,cb as G,d as pe,eb as R,ed as Z,f as z,fd as d,gb as I,ja as Q,m as O,na as a,qc as Ie,rc as ke,sb as ye,sc as F,tc as Pe,ub as be,uc as we,va as J,vb as u,wb as h,xb as V}from"./chunk-ZSRIBCAW.js";import"./chunk-3R7E3HPC.js";import"./chunk-Q7L6LLAK.js";var Je=[{path:"",pathMatch:"full",redirectTo:"graph"},{path:"graph",loadComponent:()=>import("./chunk-PTCD42GB.js").then(n=>n.GraphView),data:{title:"Graph"}},{path:"list",loadComponent:()=>import("./chunk-EZZF5RL5.js").then(n=>n.ListView),data:{title:"List"}},{path:"**",redirectTo:"graph"}];var k={errors:{unknownMode:n=>`SKILL_MAP_MODE: unknown value "${n}"`,restPrefix:n=>`BFF error [${n}]: `,malformedResponse:"BFF returned a malformed response",demoFetchFailed:(n,e)=>`Demo bundle fetch failed for "${n}": ${e}`,demoParseFailed:(n,e)=>`Demo bundle parse failed for "${n}": ${e}`,graphFormatNotInDemo:n=>`Graph format "${n}" is not bundled in demo mode (only "ascii").`}};var v={connected:n=>`[ws] connected to ${n}`,closed:(n,e)=>`[ws] closed (code=${n}, reason="${e}")`,malformedFrame:n=>`[ws] malformed frame dropped: ${n}`,socketError:n=>`[ws] socket error: ${n}`,reconnectScheduled:(n,e)=>`[ws] reconnect attempt ${e} scheduled in ${n}ms`,reconnectGiveUp:n=>`[ws] giving up after ${n} failed reconnect attempts`};var Ge=[1e3,2e3,4e3,8e3,16e3,3e4],ce=10,st=new Set([1e3,1001]);function at(){return typeof window>"u"||!window.location?"ws://127.0.0.1:4242/ws":`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws`}var C=class n{mode=s(A);destroyRef=s(H);subject=new pe;socket=null;reconnectTimer=null;reconnectAttempt=0;disposed=!1;socketFactory=e=>new WebSocket(e);url=at();events$;_setSocketFactory(e){this.socketFactory=e}_setUrl(e){this.url=e}constructor(){this.mode!=="live"?this.events$=z:this.events$=new de(e=>{!this.socket&&!this.disposed&&this.connect();let t=this.subject.subscribe(e);return()=>t.unsubscribe()}).pipe(me({resetOnRefCountZero:!1})),this.destroyRef.onDestroy(()=>this.disconnect())}disconnect(){if(!this.disposed){if(this.disposed=!0,this.reconnectTimer!==null&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.socket){try{this.socket.close(1e3,"client disconnect")}catch{}this.socket=null}this.subject.complete()}}ngOnDestroy(){this.disconnect()}connect(){if(this.disposed)return;let e;try{e=this.socketFactory(this.url)}catch(t){let i=t instanceof Error?t.message:String(t);console.warn(v.socketError(i)),this.scheduleReconnect();return}this.socket=e,e.onopen=()=>{this.reconnectAttempt=0,console.info(v.connected(this.url))},e.onmessage=t=>{this.handleFrame(t.data)},e.onerror=t=>{let i=typeof t=="object"&&t!==null&&"message"in t?String(t.message??"unknown"):"unknown";console.warn(v.socketError(i))},e.onclose=t=>{console.info(v.closed(t.code,t.reason)),this.socket=null,!this.disposed&&(st.has(t.code)||this.scheduleReconnect())}}handleFrame(e){if(typeof e!="string"){console.warn(v.malformedFrame("non-string frame"));return}let t;try{t=JSON.parse(e)}catch(i){let r=i instanceof Error?i.message:String(i);console.warn(v.malformedFrame(r));return}if(!We(t)){console.warn(v.malformedFrame("envelope shape"));return}this.subject.next(t)}scheduleReconnect(){if(this.disposed)return;if(this.reconnectAttempt>=ce){console.warn(v.reconnectGiveUp(ce)),this.subject.error(new Error(v.reconnectGiveUp(ce)));return}let e=Math.min(this.reconnectAttempt,Ge.length-1),t=Ge[e];this.reconnectAttempt+=1,console.info(v.reconnectScheduled(t,this.reconnectAttempt)),this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},t)}get _reconnectAttempt(){return this.reconnectAttempt}static \u0275fac=function(t){return new(t||n)};static \u0275prov=w({token:n,factory:n.\u0275fac,providedIn:"root"})};function ee(n){let e=new TextEncoder().encode(n),t="";for(let i=0;i<e.length;i++)t+=String.fromCharCode(e[i]);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}var p="/api",te=class n{http;ws;kindRegistry;contributionsRegistry;constructor(e,t,i,r){this.http=e??s(F),this.ws=t??s(C),this.kindRegistry=i??s(S),this.contributionsRegistry=r??s(q)}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 t=ct(e),i=await this.getJson(`${p}/nodes${t}`);return this.ingestRegistry(i.kindRegistry),this.ingestContributionsRegistry(i.contributionsRegistry),i}async getNode(e,t={}){let i=ee(e),r=t.includeBody?"?include=body":"";try{let o=await this.getJson(`${p}/nodes/${i}${r}`);return this.ingestRegistry(o.kindRegistry),this.ingestContributionsRegistry(o.contributionsRegistry),o}catch(o){if(o instanceof d&&o.code==="not-found")return null;throw o}}async listLinks(e={}){let t=dt(e),i=await this.getJson(`${p}/links${t}`);return this.ingestRegistry(i.kindRegistry),this.ingestContributionsRegistry(i.contributionsRegistry),i}async listIssues(e={}){let t=pt(e),i=await this.getJson(`${p}/issues${t}`);return this.ingestRegistry(i.kindRegistry),this.ingestContributionsRegistry(i.contributionsRegistry),i}async loadGraph(e="ascii"){let t=`${p}/graph?format=${encodeURIComponent(e)}`;try{return await O(this.http.get(t,{responseType:"text"}))}catch(i){throw this.translateError(i)}}async loadConfig(){let e=await this.getJson(`${p}/config`);return this.ingestRegistry(e.kindRegistry),this.ingestContributionsRegistry(e.contributionsRegistry),e.value}async listPlugins(){let e=await this.getJson(`${p}/plugins`);return this.ingestRegistry(e.kindRegistry),this.ingestContributionsRegistry(e.contributionsRegistry),e}async setPluginEnabled(e,t){let i=await this.patchJson(`${p}/plugins/${encodeURIComponent(e)}`,{enabled:t});return this.ingestRegistry(i.kindRegistry),this.ingestContributionsRegistry(i.contributionsRegistry),i}async setPluginExtensionEnabled(e,t,i){let r=await this.patchJson(`${p}/plugins/${encodeURIComponent(e)}/extensions/${encodeURIComponent(t)}`,{enabled:i});return this.ingestRegistry(r.kindRegistry),this.ingestContributionsRegistry(r.contributionsRegistry),r}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 setFavorite(e){let t=ee(e);try{await O(this.http.put(`${p}/favorites/${t}`,null))}catch(i){throw this.translateError(i)}}async unsetFavorite(e){let t=ee(e);try{await O(this.http.delete(`${p}/favorites/${t}`))}catch(i){throw this.translateError(i)}}ingestRegistry(e){e&&this.kindRegistry.ingest(e)}ingestContributionsRegistry(e){this.contributionsRegistry.setRegistry(e)}async lookupContribution(e,t,i){let r=new URLSearchParams({path:i});try{return(await this.getJson(`${p}/contributions/${encodeURIComponent(e)}/${encodeURIComponent(t)}?${r.toString()}`)).items[0]??null}catch{return null}}events(){return this.ws.events$}async getJson(e){try{return await O(this.http.get(e))}catch(t){throw this.translateError(t)}}async patchJson(e,t,i="PATCH"){try{let r=i==="POST"?this.http.post(e,t):this.http.patch(e,t);return await O(r)}catch(r){throw this.translateError(r)}}translateError(e){if(e instanceof d)return e;if(e instanceof ke){let i=mt(e.error);return i?new d(i.error.code,i.error.message,i.error.details):new d("internal",e.message||k.errors.malformedResponse)}let t=e instanceof Error?e.message:String(e);return new d("internal",t)}static \u0275fac=function(t){return new(t||n)(j(F),j(C),j(S),j(q))};static \u0275prov=w({token:n,factory:n.\u0275fac,providedIn:"root"})};function ct(n){let e=new URLSearchParams;n.kind&&n.kind.length>0&&e.set("kind",n.kind.join(",")),n.hasIssues!==void 0&&e.set("hasIssues",String(n.hasIssues)),n.path&&e.set("path",n.path),n.limit!==void 0&&e.set("limit",String(n.limit)),n.offset!==void 0&&e.set("offset",String(n.offset));let t=e.toString();return t?`?${t}`:""}function dt(n){let e=new URLSearchParams;n.kind&&n.kind.length>0&&e.set("kind",n.kind.join(",")),n.from&&e.set("from",n.from),n.to&&e.set("to",n.to);let t=e.toString();return t?`?${t}`:""}function pt(n){let e=new URLSearchParams;n.severity&&e.set("severity",n.severity),n.analyzerId&&e.set("analyzerId",n.analyzerId),n.node&&e.set("node",n.node);let t=e.toString();return t?`?${t}`:""}function mt(n){if(typeof n!="object"||n===null)return null;let e=n;if(e.ok!==!1)return null;let t=e.error;if(typeof t!="object"||t===null)return null;let i=t;return typeof i.code!="string"||typeof i.message!="string"?null:{ok:!1,error:{code:i.code,message:i.message,details:i.details}}}var ut="data.json",gt="data.meta.json",ne=class{constructor(e=globalThis.fetch.bind(globalThis),t){this.fetchImpl=e;this.kindRegistry=t??s(S)}metaPromise=null;dataPromise=null;kindRegistry;async health(){return(await this.loadMeta()).health}async loadScan(){let[e,t]=await Promise.all([this.loadData(),this.loadMeta()]);return this.kindRegistry.ingest(t.nodes.kindRegistry),e}async listNodes(e={}){let t=await this.loadMeta();if(ht(e))return this.kindRegistry.ingest(t.nodes.kindRegistry),t.nodes;let i=await this.loadData(),r=i.issues,o=i.nodes;if(e.kind&&e.kind.length>0){let T=new Set(e.kind);o=o.filter(E=>T.has(E.kind))}if(e.path){let T=yt(e.path);o=o.filter(E=>T.test(E.path))}if(e.hasIssues===!0){let T=Ve(r);o=o.filter(E=>T.has(E.path))}else if(e.hasIssues===!1){let T=Ve(r);o=o.filter(E=>!T.has(E.path))}let y=o.length,P=e.offset??0,N=e.limit??1e3,b=o.slice(P,P+N);return this.kindRegistry.ingest(t.nodes.kindRegistry),{schemaVersion:"1",kind:"nodes",items:b,filters:{kind:e.kind??null,hasIssues:e.hasIssues??null,path:e.path?[e.path]:null},counts:{total:y,returned:b.length,page:{offset:P,limit:N}},kindRegistry:t.nodes.kindRegistry}}async getNode(e,t={}){let[i,r]=await Promise.all([this.loadData(),this.loadMeta()]),o=i.nodes.find(b=>b.path===e);if(!o)return null;let y=i.links.filter(b=>b.target===e),P=i.links.filter(b=>b.source===e),N=i.issues.filter(b=>b.nodeIds.includes(e));return this.kindRegistry.ingest(r.nodes.kindRegistry),{schemaVersion:"1",kind:"node",item:o,links:{incoming:y,outgoing:P},issues:N,kindRegistry:r.nodes.kindRegistry}}async listLinks(e={}){let t=await this.loadMeta();if(ft(e))return this.kindRegistry.ingest(t.links.kindRegistry),t.links;let r=(await this.loadData()).links;if(e.kind&&e.kind.length>0){let o=new Set(e.kind);r=r.filter(y=>o.has(y.kind))}return e.from&&(r=r.filter(o=>o.source===e.from)),e.to&&(r=r.filter(o=>o.target===e.to)),this.kindRegistry.ingest(t.links.kindRegistry),{schemaVersion:"1",kind:"links",items:r,filters:{kind:e.kind??null,from:e.from??null,to:e.to??null},counts:{total:r.length,returned:r.length},kindRegistry:t.links.kindRegistry}}async listIssues(e={}){let t=await this.loadMeta();if(vt(e))return this.kindRegistry.ingest(t.issues.kindRegistry),t.issues;let r=(await this.loadData()).issues;return e.severity&&(r=r.filter(o=>o.severity===e.severity)),e.analyzerId&&(r=r.filter(o=>o.analyzerId===e.analyzerId)),e.node&&(r=r.filter(o=>o.nodeIds.includes(e.node))),this.kindRegistry.ingest(t.issues.kindRegistry),{schemaVersion:"1",kind:"issues",items:r,filters:{severity:e.severity??null,analyzerId:e.analyzerId??null,node:e.node??null},counts:{total:r.length,returned:r.length},kindRegistry:t.issues.kindRegistry}}async loadGraph(e="ascii"){if(e!=="ascii")throw new d("bad-query",k.errors.graphFormatNotInDemo(e));return(await this.loadMeta()).graph.ascii}async loadConfig(){let e=await this.loadMeta();return this.kindRegistry.ingest(e.config.kindRegistry),e.config.value}async listPlugins(){let e=await this.loadMeta();return this.kindRegistry.ingest(e.plugins.kindRegistry),e.plugins}async setFavorite(e){throw new d("demo-readonly","Favorites are not available in demo mode (static bundle is immutable).")}async unsetFavorite(e){throw new d("demo-readonly","Favorites are not available in demo mode (static bundle is immutable).")}async setPluginEnabled(e,t){throw new d("demo-readonly","Plugin toggles are not available in demo mode (static bundle is immutable).")}async setPluginExtensionEnabled(e,t,i){throw new d("demo-readonly","Plugin toggles are not available in demo mode (static bundle is immutable).")}async runScan(){throw new d("demo-readonly","Manual scan is not available in demo mode (static bundle is immutable).")}async getPreferences(){return{updateCheck:{enabled:!0}}}async setPreferences(e){throw new d("demo-readonly","Preference toggles are not available in demo mode (static bundle is immutable).")}async getProjectPreferences(){return{scan:{includeHome:!1,extraRoots:[],referencePaths:[]}}}async setProjectPreferences(e){throw new d("demo-readonly","Project preferences are not available in demo mode (static bundle is immutable).")}async lookupContribution(){return null}events(){return z}loadMeta(){return this.metaPromise||(this.metaPromise=this.fetchJson(gt)),this.metaPromise}loadData(){return this.dataPromise||(this.dataPromise=this.fetchJson(ut)),this.dataPromise}async fetchJson(e){let t;try{t=await this.fetchImpl(e)}catch(i){let r=i instanceof Error?i.message:String(i);throw new d("internal",k.errors.demoFetchFailed(e,r))}if(!t.ok)throw new d("internal",k.errors.demoFetchFailed(e,`HTTP ${t.status}`));try{return await t.json()}catch(i){let r=i instanceof Error?i.message:String(i);throw new d("internal",k.errors.demoParseFailed(e,r))}}};function ht(n){return!(n.kind&&n.kind.length>0||n.hasIssues!==void 0||n.path||n.offset!==void 0&&n.offset!==0||n.limit!==void 0)}function ft(n){return!(n.kind&&n.kind.length>0||n.from||n.to)}function vt(n){return!(n.severity||n.analyzerId||n.node)}function Ve(n){let e=new Set;for(let t of n)for(let i of t.nodeIds)e.add(i);return e}function yt(n){let t=n.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${t}$`)}function Xe(){let n=s(A);if(n==="live")return new te(s(F),s(C));if(n==="demo")return new ne;let e=n;throw new Error(k.errors.unknownMode(String(e)))}var Ye={providers:[ue(),Re(Je,Me()),Pe(we()),Oe({}),he(async()=>{let n=s(Le),[{default:e},{definePreset:t}]=await Promise.all([import("./chunk-FWFBO7KA.js"),import("./chunk-UJOZYR5I.js")]),i=t(e,{semantic:{primary:{50:"#F5F3FF",100:"#EDE9FE",200:"#DDD6FE",300:"#C4B5FD",400:"#A78BFA",500:"#8B5CF6",600:"#7C3AED",700:"#6D28D9",800:"#4C1D95",900:"#2E1065",950:"#1E0A4D"}}});n.setThemeConfig({theme:{preset:i,options:{darkModeSelector:".app-dark"}}})}),{provide:A,useFactory:Be},{provide:Z,useFactory:Xe}]};var ie={brand:"skill-map",beta:"Beta",nav:{graph:"Graph",list:"List",searchLabel:"Search nodes (coming soon)",searchTooltip:"Search \u2014 coming soon"},actions:{},badge:{nodes:"nodes",graphInfo:(n,e)=>`${n.toLocaleString()} nodes \xB7 ${e.toLocaleString()} links`,graphInfoA11y:(n,e)=>`Graph contains ${n} nodes and ${e} links`},a11y:{viewSwitcher:"View switcher"},viewportWarning:{title:"Looks like you're on a small screen",subtitle:"skill-map is built for desktop",body:"The graph and inspector need room to breathe. Pop this open on a screen at least 768px wide \u2014 see you there."}};var M={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 L={available:"Update available",tooltip:n=>`v${n} is available. Run \`npm i -g @skill-map/cli@latest\` to update.`,a11yLabel:n=>`Update available: version ${n}`,versionLabel:n=>`v${n}`,versionTooltip:n=>`skill-map CLI v${n}`,versionA11yLabel:n=>`Running version ${n}`};var re="sm-debug-slots",bt="debug-slots",_t="is-debug-slots",oe=class n{visible=_(!1);constructor(){this.visible.set(this.resolveInitial()),K(()=>{let e=this.visible();document.documentElement.classList.toggle(_t,e)})}toggle(){let e=!this.visible();this.visible.set(e);try{localStorage.setItem(re,e?"1":"0")}catch{}}resolveInitial(){let t=new URLSearchParams(window.location.search).get(bt);if(t==="1"||t==="true"){try{localStorage.setItem(re,"1")}catch{}return!0}if(t==="0"||t==="false"){try{localStorage.setItem(re,"0")}catch{}return!1}try{return localStorage.getItem(re)==="1"}catch{return!1}}static \u0275fac=function(t){return new(t||n)};static \u0275prov=w({token:n,factory:n.\u0275fac,providedIn:"root"})};var Ze="search",qe="kinds",et="stabilities",tt="hasIssues",nt="staleOnly",se=class n{filters=s(Ue);router=s(Te);activatedRoute=s(Ae);kindRegistry=s(S);destroyRef=s(H);suppressUrlReadback=!1;constructor(){this.applyUrlToFilters(this.currentParams()),this.router.events.pipe(De(this.destroyRef)).subscribe(e=>{if(e instanceof Se){if(this.suppressUrlReadback)return;this.applyUrlToFilters(this.currentParams())}}),K(()=>{let e=this.computeQueryParams();this.writeQueryParams(e)})}currentParams(){let e=this.router.parseUrl(this.router.url),t=new URLSearchParams;for(let[i,r]of Object.entries(e.queryParams))Array.isArray(r)?t.set(i,r.join(",")):r!=null&&t.set(i,String(r));return this.activatedRoute,t}applyUrlToFilters(e){let t=e.get(Ze)??"";t!==this.filters.searchText()&&this.filters.setSearchText(t);let i=It(e.get(qe),this.kindRegistry.kinds().map(P=>P.name));it(i,this.filters.selectedKinds())||this.filters.setKinds(i);let r=kt(e.get(et));it(r,this.filters.selectedStabilities())||this.filters.setStabilities(r);let o=e.get(tt)==="true";o!==this.filters.hasIssuesOnly()&&this.filters.setHasIssuesOnly(o);let y=e.get(nt)==="true";y!==this.filters.staleOnly()&&this.filters.setStaleOnly(y)}computeQueryParams(){let e=this.filters.searchText().trim(),t=this.filters.selectedKinds(),i=this.filters.selectedStabilities(),r=this.filters.hasIssuesOnly(),o=this.filters.staleOnly();return{[Ze]:e.length>0?e:null,[qe]:t.length>0?t.join(","):null,[et]:i.length>0?i.join(","):null,[tt]:r?"true":null,[nt]:o?"true":null}}writeQueryParams(e){let t=this.currentParams(),i=new Map(Object.entries(e)),r=!1;for(let[o,y]of i)if((t.get(o)??null)!==y){r=!0;break}r&&(this.suppressUrlReadback=!0,this.router.navigate([],{relativeTo:this.activatedRoute,queryParams:e,queryParamsHandling:"merge",replaceUrl:!0}).finally(()=>{setTimeout(()=>{this.suppressUrlReadback=!1},0)}))}static \u0275fac=function(t){return new(t||n)};static \u0275prov=w({token:n,factory:n.\u0275fac,providedIn:"root"})};function It(n,e){if(!n)return[];let t=new Set(e);return n.split(",").map(i=>i.trim()).filter(i=>t.has(i))}function kt(n){if(!n)return[];let e=new Set(je);return n.split(",").map(t=>t.trim()).filter(t=>e.has(t))}function it(n,e){if(n.length!==e.length)return!1;for(let t=0;t<n.length;t++)if(n[t]!==e[t])return!1;return!0}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.dev",homeHref:"/",dismissAria:"Dismiss demo banner"};function St(n,e){if(n&1){let t=G();l(0,"div",0),f(1,"span",1),l(2,"p",2),u(3),l(4,"code",3),u(5),c()(),l(6,"a",4),u(7),c(),l(8,"p-button",5),R("onClick",function(){W(t);let r=I();return B(r.dismiss())}),c()()}if(n&2){let t=I();a(3),V(" ",t.texts.body," "),a(2),h(t.texts.installCommand),a(),g("href",t.texts.homeHref,Q),a(),h(t.texts.homeCta),a(),g("ariaLabel",t.texts.dismissAria)("text",!0)("rounded",!0)}}var ot="sm.demoBannerDismissed",ae=class n{mode=s(A);texts=rt;dismissed=_(this.readDismissed());visible=m(()=>this.mode==="demo"&&!this.dismissed());dismiss(){this.dismissed.set(!0);try{globalThis.localStorage?.setItem(ot,"1")}catch{}}readDismissed(){if(this.mode!=="demo")return!0;try{return globalThis.localStorage?.getItem(ot)==="1"}catch{return!1}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=J({type:n,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","pi","pi-info-circle"],[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","pi pi-times","severity","secondary","size","small","data-testid","demo-banner-dismiss",3,"onClick","ariaLabel","text","rounded"]],template:function(t,i){t&1&&D(0,St,9,7,"div",0),t&2&&$(i.visible()?0:-1)},dependencies:[Y,X],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(--font-family-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);background:var(--p-content-background);border:1px solid var(--p-content-border-color);border-radius:.25rem;padding:.05rem .4rem;font-size:.85em;margin-left:.25rem}.demo-banner__home[_ngcontent-%COMP%]{color:var(--p-primary-color);font-weight:500;text-decoration:none;white-space:nowrap}.demo-banner__home[_ngcontent-%COMP%]:hover, .demo-banner__home[_ngcontent-%COMP%]:focus-visible{text-decoration:underline}"],changeDetection:0})};var At=()=>[import("./chunk-FWX4RRDF.js").then(n=>n.SettingsModal)];function Ct(n,e){if(n&1&&(l(0,"span",10),u(1),c()),n&2){let t=I();g("pTooltip",t.versionTooltip()),x("aria-label",t.versionA11y()),a(),h(t.versionLabel())}}function Tt(n,e){if(n&1&&(l(0,"a",12),f(1,"i",27),l(2,"span"),u(3),c()()),n&2){let t=I();g("pTooltip",t.updateChipTooltip()),x("aria-label",t.updateChipA11y()),a(3),h(t.updateChipText)}}function Et(n,e){if(n&1&&(l(0,"p",13),u(1),c()),n&2){let t=I();a(),h(t.rootLabel())}}function xt(n,e){if(n&1){let t=G();l(0,"sm-settings-modal",28),R("visibleChange",function(r){W(t);let o=I();return B(o.settingsOpen.set(r))}),c()}if(n&2){let t=I();g("visible",t.settingsOpen())}}var le=class n{loader=s(Ne);theme=s(Qe);dataSource=s(Z);_filterUrlSync=s(se);_debugSlots=s(oe);updateCheck=s(Ke);texts=ie;settingsTexts=He;settingsOpen=_(!1);openSettings(){this.settingsOpen.set(!0)}scanning=_(!1);scanError=_(null);async triggerScan(){if(!this.scanning()){this.scanning.set(!0),this.scanError.set(null);try{await this.dataSource.runScan(),await this.loader.load()}catch(e){let t=e instanceof d||e instanceof Error?e.message:String(e);this.scanError.set(t),console.warn(`triggerScan failed: ${t}`)}finally{this.scanning.set(!1)}}}updateChipText=L.available;updateChipTooltip=m(()=>L.tooltip(this.updateCheck.latest()??""));updateChipA11y=m(()=>L.a11yLabel(this.updateCheck.latest()??""));versionLabel=m(()=>L.versionLabel(this.updateCheck.current()??""));versionTooltip=m(()=>L.versionTooltip(this.updateCheck.current()??""));versionA11y=m(()=>L.versionA11yLabel(this.updateCheck.current()??""));count=this.loader.count;linkCount=m(()=>this.loader.scan()?.links?.length??0);graphInfoTooltip=m(()=>ie.badge.graphInfo(this.count(),this.linkCount()));graphInfoA11y=m(()=>ie.badge.graphInfoA11y(this.count(),this.linkCount()));rootLabel=m(()=>{let e=this.healthCwd();if(e&&e!==".")return e;let t=this.loader.scan()?.roots??[];if(t.length===0)return"";let i=t[0].replace(/[\\/]+$/,"");return!i||i==="."?"":i});healthCwd=_(null);isDevMode=_e();themeMode=this.theme.mode;markSrc=m(()=>this.theme.resolved()==="dark"?"skill-map-mark-light.svg":"skill-map-mark-dark.svg");themeIcon=m(()=>{switch(this.themeMode()){case"auto":return"pi pi-desktop";case"light":return"pi pi-sun";case"dark":return"pi pi-moon"}});themeLabel=m(()=>{switch(this.themeMode()){case"auto":return M.toggleToLight;case"light":return M.toggleToDark;case"dark":return M.toggleToAuto}});themeTooltip=m(()=>{switch(this.themeMode()){case"auto":return M.currentAuto;case"light":return M.currentLight;case"dark":return M.currentDark}});ngOnInit(){this.loader.load(),this.updateCheck.load(),this.loadHealth()}async loadHealth(){try{let e=await this.dataSource.health();this.healthCwd.set(e.cwd)}catch(e){let t=e instanceof Error?e.message:String(e);console.warn(`App: /api/health probe failed (${t})`)}}toggleTheme(){this.theme.toggle()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=J({type:n,selectors:[["app-root"]],decls:41,vars:33,consts:[["role","alert","data-testid","viewport-warning",1,"viewport-warning"],[1,"viewport-warning__card"],["aria-hidden","true",1,"pi","pi-desktop","viewport-warning__icon"],[1,"viewport-warning__title"],[1,"viewport-warning__subtitle"],[1,"viewport-warning__body"],["data-testid","shell",1,"shell"],["data-testid","shell-topbar",1,"shell__topbar"],[1,"shell__brand"],["alt","","aria-hidden","true",1,"shell__brand-mark",3,"src"],["tooltipPosition","bottom","data-testid","shell-version",1,"shell__version",3,"pTooltip"],[1,"shell__beta"],["href","https://www.npmjs.com/package/@skill-map/cli","target","_blank","rel","noopener noreferrer","tooltipPosition","bottom","data-testid","shell-update-chip",1,"shell__update-chip",3,"pTooltip"],[1,"shell__tag"],["data-testid","shell-nav",1,"shell__nav"],["routerLink","/graph","routerLinkActive","is-active","data-testid","nav-graph"],["routerLink","/list","routerLinkActive","is-active","data-testid","nav-list"],["type","button","tooltipPosition","bottom","disabled","","data-testid","nav-search",1,"shell__nav-search",3,"pTooltip"],["aria-hidden","true",1,"pi","pi-search"],[1,"shell__actions"],["data-debug-slot","topbar.actions.indicator",1,"sm-debug-slot"],["slot","topbar.actions.indicator",3,"node"],["type","button","tooltipPosition","bottom","data-testid","shell-refresh",1,"shell__refresh",3,"click","pTooltip","disabled"],["aria-hidden","true"],["severity","secondary","size","small","data-testid","action-theme-toggle",3,"onClick","icon","ariaLabel","pTooltip","text","rounded"],["icon","pi pi-cog","severity","secondary","size","small","data-testid","action-settings",3,"onClick","ariaLabel","pTooltip","text","rounded"],[1,"shell__main"],["aria-hidden","true",1,"pi","pi-arrow-circle-up"],[3,"visibleChange","visible"]],template:function(t,i){if(t&1&&(l(0,"div",0)(1,"div",1),f(2,"i",2),l(3,"h2",3),u(4),c(),l(5,"p",4),u(6),c(),l(7,"p",5),u(8),c()()(),l(9,"div",6),f(10,"sm-demo-banner"),l(11,"header",7)(12,"div",8),f(13,"img",9),l(14,"div")(15,"h1"),u(16),D(17,Ct,2,3,"span",10),l(18,"span",11),u(19),c(),D(20,Tt,4,3,"a",12),c(),D(21,Et,2,1,"p",13),c()(),l(22,"nav",14)(23,"a",15),u(24),c(),l(25,"a",16),u(26),c(),l(27,"button",17),f(28,"i",18),c()(),l(29,"div",19)(30,"div",20),f(31,"sm-view-contributions-host",21),c(),l(32,"button",22),R("click",function(){return i.triggerScan()}),f(33,"i",23),c(),l(34,"p-button",24),R("onClick",function(){return i.toggleTheme()}),c(),l(35,"p-button",25),R("onClick",function(){return i.openSettings()}),c()()(),l(36,"main",26),f(37,"router-outlet"),c(),ge(38,xt,1,1),fe(39,38,At),c()),t&2){let r;a(4),h(i.texts.viewportWarning.title),a(2),h(i.texts.viewportWarning.subtitle),a(2),h(i.texts.viewportWarning.body),a(5),g("src",i.markSrc(),Q),a(3),V(" ",i.texts.brand," "),a(),$((r=i.updateCheck.current())?17:-1,r),a(),x("aria-label",i.texts.beta),a(),h(i.texts.beta),a(),$(i.updateCheck.isOutdated()&&!i.isDevMode?20:-1),a(),$(i.rootLabel()?21:-1),a(),x("aria-label",i.texts.a11y.viewSwitcher),a(2),h(i.texts.nav.graph),a(2),h(i.texts.nav.list),a(),g("pTooltip",i.texts.nav.searchTooltip),x("aria-label",i.texts.nav.searchLabel),a(4),g("node",null),a(),ye("is-spinning",i.scanning()),g("pTooltip",i.graphInfoTooltip())("disabled",i.scanning()),x("aria-label",i.graphInfoA11y()),a(),be(i.scanning()?"pi pi-refresh pi-spin":"pi pi-refresh"),a(),g("icon",i.themeIcon())("ariaLabel",i.themeLabel())("pTooltip",i.themeTooltip())("text",!0)("rounded",!0),a(),g("ariaLabel",i.settingsTexts.a11y.triggerLabel)("pTooltip",i.settingsTexts.triggerTooltip)("text",!0)("rounded",!0),a(4),ve(i.settingsOpen())}},dependencies:[Ce,Ee,xe,Y,X,Fe,$e,ae,ze],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:2rem;padding:.75rem 1.5rem;background:var(--shell-topbar-bg);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__beta[_ngcontent-%COMP%]{font-family:Stardos Stencil,Geist,system-ui,sans-serif;font-weight:700;font-size:11px;line-height:1;letter-spacing:.12em;text-transform:uppercase;color:#ad322b;border:1.5px solid #ad322b;border-radius:3px;padding:3px 7px 2px;margin-left:6px;transform:rotate(-4deg);transform-origin:center;opacity:.92;-webkit-user-select:none;user-select:none;display:inline-block;vertical-align:middle}.app-dark[_nghost-%COMP%] .shell__beta[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .shell__beta[_ngcontent-%COMP%]{color:#cf4640;border-color:#cf4640}.shell__version[_ngcontent-%COMP%]{display:inline-block;margin-left:6px;padding:2px 6px;border-radius:3px;font-family:var(--p-monospace-font-family, ui-monospace, monospace);font-size:11px;line-height:1;font-weight:500;letter-spacing:.02em;color:var(--p-text-muted-color);background:var(--p-content-hover-background);vertical-align:middle;-webkit-user-select:text;user-select:text}.shell__update-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;margin-left:8px;padding:3px 8px 2px;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:999px;text-decoration:none;transition:background-color .12s ease,color .12s ease;vertical-align:middle}.shell__update-chip[_ngcontent-%COMP%]:hover, .shell__update-chip[_ngcontent-%COMP%]:focus-visible{background:var(--p-primary-100);color:var(--p-primary-700)}.shell__update-chip[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:12px}.app-dark[_nghost-%COMP%] .shell__update-chip[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .shell__update-chip[_ngcontent-%COMP%]{color:var(--p-primary-300);background:#ffffff0a;border-color:var(--p-primary-700)}.shell__tag[_ngcontent-%COMP%]{margin:.35rem 0 0;font-size:.72rem;color:var(--shell-topbar-text-muted);letter-spacing:.02em;text-transform:uppercase}.shell__nav[_ngcontent-%COMP%]{display:flex;gap:.25rem;margin-left:auto}.shell__nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{padding:.5rem .9rem;border-radius:.5rem;font-size:.9rem;font-weight:500;color:var(--shell-topbar-text-muted);transition:background .15s ease,color .15s ease}.shell__nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{background:var(--shell-topbar-hover-bg);color:var(--shell-topbar-text-strong)}.shell__nav[_ngcontent-%COMP%] a.is-active[_ngcontent-%COMP%]{background:var(--shell-topbar-active-bg);color:var(--shell-topbar-active-text)}.shell__nav-search[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;padding:0;margin-left:.25rem;border:none;border-radius:.5rem;background:transparent;color:var(--shell-topbar-text-muted);cursor:not-allowed;opacity:.55;transition:background .15s ease,color .15s ease,opacity .15s ease}.shell__nav-search[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--shell-topbar-hover-bg);color:var(--shell-topbar-text-strong);opacity:1}.shell__nav-search[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:.95rem}.shell__actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem}.shell__refresh[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:none;border-radius:999px;background:transparent;color:var(--shell-topbar-text-muted);cursor:pointer;transition:background .15s ease,color .15s ease}.shell__refresh[_ngcontent-%COMP%]:hover:not(:disabled), .shell__refresh[_ngcontent-%COMP%]:focus-visible:not(:disabled){background:var(--shell-topbar-hover-bg);color:var(--shell-topbar-text-strong);outline:none}.shell__refresh[_ngcontent-%COMP%]:disabled{cursor:progress;opacity:.7}.shell__refresh[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:1rem}.shell__main[_ngcontent-%COMP%]{flex:1;min-height:0;overflow-y:auto;width:100%}@media(max-width:1280px){.shell__topbar[_ngcontent-%COMP%]{gap:1rem;padding:.5rem 1rem}.shell__tag[_ngcontent-%COMP%]{display:none}.shell__nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{padding:.4rem .7rem;font-size:.85rem}}.viewport-warning[_ngcontent-%COMP%]{display:none}@media(max-width:767px){.viewport-warning[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:var(--sm-bg-content)}.viewport-warning__card[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.85rem;max-width:22rem}.viewport-warning__icon[_ngcontent-%COMP%]{font-size:3rem;color:var(--p-primary-color);margin-bottom:.25rem}.viewport-warning__title[_ngcontent-%COMP%]{margin:0;font-size:1.35rem;font-weight:700;color:var(--p-text-color);line-height:1.25}.viewport-warning__subtitle[_ngcontent-%COMP%]{margin:0;font-size:1rem;font-weight:500;color:var(--p-primary-color);line-height:1.35}.viewport-warning__body[_ngcontent-%COMP%]{margin:0;color:var(--p-text-muted-color);line-height:1.5;font-size:.9rem}.shell[_ngcontent-%COMP%]{display:none}}"],changeDetection:0})};Ie(le,Ye).catch(n=>console.error(n));
|
package/package.json
CHANGED
package/dist/ui/main-QHE47BCM.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as q,b as Ue,c as ze}from"./chunk-IBUV6OG2.js";import{a as we,b as Se,c as Ae,d as Ce,e as Te,f as Ee,g as xe,h as Re,i as Oe,k as De,l as Fe,m as $e,p as S,q as Ne,r as je}from"./chunk-VLNLJAUB.js";import{a as A,b as We,c as Be,d as He,e as Ke}from"./chunk-UJRROL5X.js";import{$c as Y,B as me,Ba as ge,Ea as he,Ha as fe,Ia as ve,J as P,Ja as x,Jc as Me,Kc as Le,Ma as D,N as j,Na as F,O as s,S as W,Sa as g,Sb as m,T as B,Ta as l,Ua as c,Va as f,X as H,_c as X,aa as ue,ba as w,c as de,ca as K,cb as G,d as pe,dd as Z,eb as R,ed as d,f as z,gb as _,ja as Q,m as O,na as a,pc as _e,qc as Ie,rc as $,sb as ye,sc as ke,tc as Pe,ub as be,va as J,vb as u,wb as h,xb as V}from"./chunk-W3JLG7BI.js";import"./chunk-3R7E3HPC.js";import"./chunk-Q7L6LLAK.js";var Qe=[{path:"",pathMatch:"full",redirectTo:"graph"},{path:"graph",loadComponent:()=>import("./chunk-C7QWBAYP.js").then(n=>n.GraphView),data:{title:"Graph"}},{path:"list",loadComponent:()=>import("./chunk-2W62S3FU.js").then(n=>n.ListView),data:{title:"List"}},{path:"**",redirectTo:"graph"}];var I={errors:{unknownMode:n=>`SKILL_MAP_MODE: unknown value "${n}"`,restPrefix:n=>`BFF error [${n}]: `,malformedResponse:"BFF returned a malformed response",demoFetchFailed:(n,e)=>`Demo bundle fetch failed for "${n}": ${e}`,demoParseFailed:(n,e)=>`Demo bundle parse failed for "${n}": ${e}`,graphFormatNotInDemo:n=>`Graph format "${n}" is not bundled in demo mode (only "ascii").`}};var v={connected:n=>`[ws] connected to ${n}`,closed:(n,e)=>`[ws] closed (code=${n}, reason="${e}")`,malformedFrame:n=>`[ws] malformed frame dropped: ${n}`,socketError:n=>`[ws] socket error: ${n}`,reconnectScheduled:(n,e)=>`[ws] reconnect attempt ${e} scheduled in ${n}ms`,reconnectGiveUp:n=>`[ws] giving up after ${n} failed reconnect attempts`};var Je=[1e3,2e3,4e3,8e3,16e3,3e4],ce=10,ot=new Set([1e3,1001]);function st(){return typeof window>"u"||!window.location?"ws://127.0.0.1:4242/ws":`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws`}var C=class n{mode=s(A);destroyRef=s(H);subject=new pe;socket=null;reconnectTimer=null;reconnectAttempt=0;disposed=!1;socketFactory=e=>new WebSocket(e);url=st();events$;_setSocketFactory(e){this.socketFactory=e}_setUrl(e){this.url=e}constructor(){this.mode!=="live"?this.events$=z:this.events$=new de(e=>{!this.socket&&!this.disposed&&this.connect();let t=this.subject.subscribe(e);return()=>t.unsubscribe()}).pipe(me({resetOnRefCountZero:!1})),this.destroyRef.onDestroy(()=>this.disconnect())}disconnect(){if(!this.disposed){if(this.disposed=!0,this.reconnectTimer!==null&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.socket){try{this.socket.close(1e3,"client disconnect")}catch{}this.socket=null}this.subject.complete()}}ngOnDestroy(){this.disconnect()}connect(){if(this.disposed)return;let e;try{e=this.socketFactory(this.url)}catch(t){let i=t instanceof Error?t.message:String(t);console.warn(v.socketError(i)),this.scheduleReconnect();return}this.socket=e,e.onopen=()=>{this.reconnectAttempt=0,console.info(v.connected(this.url))},e.onmessage=t=>{this.handleFrame(t.data)},e.onerror=t=>{let i=typeof t=="object"&&t!==null&&"message"in t?String(t.message??"unknown"):"unknown";console.warn(v.socketError(i))},e.onclose=t=>{console.info(v.closed(t.code,t.reason)),this.socket=null,!this.disposed&&(ot.has(t.code)||this.scheduleReconnect())}}handleFrame(e){if(typeof e!="string"){console.warn(v.malformedFrame("non-string frame"));return}let t;try{t=JSON.parse(e)}catch(i){let r=i instanceof Error?i.message:String(i);console.warn(v.malformedFrame(r));return}if(!ze(t)){console.warn(v.malformedFrame("envelope shape"));return}this.subject.next(t)}scheduleReconnect(){if(this.disposed)return;if(this.reconnectAttempt>=ce){console.warn(v.reconnectGiveUp(ce)),this.subject.error(new Error(v.reconnectGiveUp(ce)));return}let e=Math.min(this.reconnectAttempt,Je.length-1),t=Je[e];this.reconnectAttempt+=1,console.info(v.reconnectScheduled(t,this.reconnectAttempt)),this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},t)}get _reconnectAttempt(){return this.reconnectAttempt}static \u0275fac=function(t){return new(t||n)};static \u0275prov=P({token:n,factory:n.\u0275fac,providedIn:"root"})};function ee(n){let e=new TextEncoder().encode(n),t="";for(let i=0;i<e.length;i++)t+=String.fromCharCode(e[i]);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}var p="/api",te=class n{http;ws;kindRegistry;contributionsRegistry;constructor(e,t,i,r){this.http=e??s($),this.ws=t??s(C),this.kindRegistry=i??s(S),this.contributionsRegistry=r??s(q)}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 t=lt(e),i=await this.getJson(`${p}/nodes${t}`);return this.ingestRegistry(i.kindRegistry),this.ingestContributionsRegistry(i.contributionsRegistry),i}async getNode(e,t={}){let i=ee(e),r=t.includeBody?"?include=body":"";try{let o=await this.getJson(`${p}/nodes/${i}${r}`);return this.ingestRegistry(o.kindRegistry),this.ingestContributionsRegistry(o.contributionsRegistry),o}catch(o){if(o instanceof d&&o.code==="not-found")return null;throw o}}async listLinks(e={}){let t=ct(e),i=await this.getJson(`${p}/links${t}`);return this.ingestRegistry(i.kindRegistry),this.ingestContributionsRegistry(i.contributionsRegistry),i}async listIssues(e={}){let t=dt(e),i=await this.getJson(`${p}/issues${t}`);return this.ingestRegistry(i.kindRegistry),this.ingestContributionsRegistry(i.contributionsRegistry),i}async loadGraph(e="ascii"){let t=`${p}/graph?format=${encodeURIComponent(e)}`;try{return await O(this.http.get(t,{responseType:"text"}))}catch(i){throw this.translateError(i)}}async loadConfig(){let e=await this.getJson(`${p}/config`);return this.ingestRegistry(e.kindRegistry),this.ingestContributionsRegistry(e.contributionsRegistry),e.value}async listPlugins(){let e=await this.getJson(`${p}/plugins`);return this.ingestRegistry(e.kindRegistry),this.ingestContributionsRegistry(e.contributionsRegistry),e}async setPluginEnabled(e,t){let i=await this.patchJson(`${p}/plugins/${encodeURIComponent(e)}`,{enabled:t});return this.ingestRegistry(i.kindRegistry),this.ingestContributionsRegistry(i.contributionsRegistry),i}async setPluginExtensionEnabled(e,t,i){let r=await this.patchJson(`${p}/plugins/${encodeURIComponent(e)}/extensions/${encodeURIComponent(t)}`,{enabled:i});return this.ingestRegistry(r.kindRegistry),this.ingestContributionsRegistry(r.contributionsRegistry),r}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 setFavorite(e){let t=ee(e);try{await O(this.http.put(`${p}/favorites/${t}`,null))}catch(i){throw this.translateError(i)}}async unsetFavorite(e){let t=ee(e);try{await O(this.http.delete(`${p}/favorites/${t}`))}catch(i){throw this.translateError(i)}}ingestRegistry(e){e&&this.kindRegistry.ingest(e)}ingestContributionsRegistry(e){this.contributionsRegistry.setRegistry(e)}async lookupContribution(e,t,i){let r=new URLSearchParams({path:i});try{return(await this.getJson(`${p}/contributions/${encodeURIComponent(e)}/${encodeURIComponent(t)}?${r.toString()}`)).items[0]??null}catch{return null}}events(){return this.ws.events$}async getJson(e){try{return await O(this.http.get(e))}catch(t){throw this.translateError(t)}}async patchJson(e,t,i="PATCH"){try{let r=i==="POST"?this.http.post(e,t):this.http.patch(e,t);return await O(r)}catch(r){throw this.translateError(r)}}translateError(e){if(e instanceof d)return e;if(e instanceof Ie){let i=pt(e.error);return i?new d(i.error.code,i.error.message,i.error.details):new d("internal",e.message||I.errors.malformedResponse)}let t=e instanceof Error?e.message:String(e);return new d("internal",t)}static \u0275fac=function(t){return new(t||n)(j($),j(C),j(S),j(q))};static \u0275prov=P({token:n,factory:n.\u0275fac,providedIn:"root"})};function lt(n){let e=new URLSearchParams;n.kind&&n.kind.length>0&&e.set("kind",n.kind.join(",")),n.hasIssues!==void 0&&e.set("hasIssues",String(n.hasIssues)),n.path&&e.set("path",n.path),n.limit!==void 0&&e.set("limit",String(n.limit)),n.offset!==void 0&&e.set("offset",String(n.offset));let t=e.toString();return t?`?${t}`:""}function ct(n){let e=new URLSearchParams;n.kind&&n.kind.length>0&&e.set("kind",n.kind.join(",")),n.from&&e.set("from",n.from),n.to&&e.set("to",n.to);let t=e.toString();return t?`?${t}`:""}function dt(n){let e=new URLSearchParams;n.severity&&e.set("severity",n.severity),n.analyzerId&&e.set("analyzerId",n.analyzerId),n.node&&e.set("node",n.node);let t=e.toString();return t?`?${t}`:""}function pt(n){if(typeof n!="object"||n===null)return null;let e=n;if(e.ok!==!1)return null;let t=e.error;if(typeof t!="object"||t===null)return null;let i=t;return typeof i.code!="string"||typeof i.message!="string"?null:{ok:!1,error:{code:i.code,message:i.message,details:i.details}}}var mt="data.json",ut="data.meta.json",ne=class{constructor(e=globalThis.fetch.bind(globalThis),t){this.fetchImpl=e;this.kindRegistry=t??s(S)}metaPromise=null;dataPromise=null;kindRegistry;async health(){return(await this.loadMeta()).health}async loadScan(){let[e,t]=await Promise.all([this.loadData(),this.loadMeta()]);return this.kindRegistry.ingest(t.nodes.kindRegistry),e}async listNodes(e={}){let t=await this.loadMeta();if(gt(e))return this.kindRegistry.ingest(t.nodes.kindRegistry),t.nodes;let i=await this.loadData(),r=i.issues,o=i.nodes;if(e.kind&&e.kind.length>0){let T=new Set(e.kind);o=o.filter(E=>T.has(E.kind))}if(e.path){let T=vt(e.path);o=o.filter(E=>T.test(E.path))}if(e.hasIssues===!0){let T=Ge(r);o=o.filter(E=>T.has(E.path))}else if(e.hasIssues===!1){let T=Ge(r);o=o.filter(E=>!T.has(E.path))}let y=o.length,k=e.offset??0,N=e.limit??1e3,b=o.slice(k,k+N);return this.kindRegistry.ingest(t.nodes.kindRegistry),{schemaVersion:"1",kind:"nodes",items:b,filters:{kind:e.kind??null,hasIssues:e.hasIssues??null,path:e.path?[e.path]:null},counts:{total:y,returned:b.length,page:{offset:k,limit:N}},kindRegistry:t.nodes.kindRegistry}}async getNode(e,t={}){let[i,r]=await Promise.all([this.loadData(),this.loadMeta()]),o=i.nodes.find(b=>b.path===e);if(!o)return null;let y=i.links.filter(b=>b.target===e),k=i.links.filter(b=>b.source===e),N=i.issues.filter(b=>b.nodeIds.includes(e));return this.kindRegistry.ingest(r.nodes.kindRegistry),{schemaVersion:"1",kind:"node",item:o,links:{incoming:y,outgoing:k},issues:N,kindRegistry:r.nodes.kindRegistry}}async listLinks(e={}){let t=await this.loadMeta();if(ht(e))return this.kindRegistry.ingest(t.links.kindRegistry),t.links;let r=(await this.loadData()).links;if(e.kind&&e.kind.length>0){let o=new Set(e.kind);r=r.filter(y=>o.has(y.kind))}return e.from&&(r=r.filter(o=>o.source===e.from)),e.to&&(r=r.filter(o=>o.target===e.to)),this.kindRegistry.ingest(t.links.kindRegistry),{schemaVersion:"1",kind:"links",items:r,filters:{kind:e.kind??null,from:e.from??null,to:e.to??null},counts:{total:r.length,returned:r.length},kindRegistry:t.links.kindRegistry}}async listIssues(e={}){let t=await this.loadMeta();if(ft(e))return this.kindRegistry.ingest(t.issues.kindRegistry),t.issues;let r=(await this.loadData()).issues;return e.severity&&(r=r.filter(o=>o.severity===e.severity)),e.analyzerId&&(r=r.filter(o=>o.analyzerId===e.analyzerId)),e.node&&(r=r.filter(o=>o.nodeIds.includes(e.node))),this.kindRegistry.ingest(t.issues.kindRegistry),{schemaVersion:"1",kind:"issues",items:r,filters:{severity:e.severity??null,analyzerId:e.analyzerId??null,node:e.node??null},counts:{total:r.length,returned:r.length},kindRegistry:t.issues.kindRegistry}}async loadGraph(e="ascii"){if(e!=="ascii")throw new d("bad-query",I.errors.graphFormatNotInDemo(e));return(await this.loadMeta()).graph.ascii}async loadConfig(){let e=await this.loadMeta();return this.kindRegistry.ingest(e.config.kindRegistry),e.config.value}async listPlugins(){let e=await this.loadMeta();return this.kindRegistry.ingest(e.plugins.kindRegistry),e.plugins}async setFavorite(e){throw new d("demo-readonly","Favorites are not available in demo mode (static bundle is immutable).")}async unsetFavorite(e){throw new d("demo-readonly","Favorites are not available in demo mode (static bundle is immutable).")}async setPluginEnabled(e,t){throw new d("demo-readonly","Plugin toggles are not available in demo mode (static bundle is immutable).")}async setPluginExtensionEnabled(e,t,i){throw new d("demo-readonly","Plugin toggles are not available in demo mode (static bundle is immutable).")}async runScan(){throw new d("demo-readonly","Manual scan is not available in demo mode (static bundle is immutable).")}async getPreferences(){return{updateCheck:{enabled:!0}}}async setPreferences(e){throw new d("demo-readonly","Preference toggles are not available in demo mode (static bundle is immutable).")}async getProjectPreferences(){return{scan:{includeHome:!1,extraRoots:[],referencePaths:[]}}}async setProjectPreferences(e){throw new d("demo-readonly","Project preferences are not available in demo mode (static bundle is immutable).")}async lookupContribution(){return null}events(){return z}loadMeta(){return this.metaPromise||(this.metaPromise=this.fetchJson(ut)),this.metaPromise}loadData(){return this.dataPromise||(this.dataPromise=this.fetchJson(mt)),this.dataPromise}async fetchJson(e){let t;try{t=await this.fetchImpl(e)}catch(i){let r=i instanceof Error?i.message:String(i);throw new d("internal",I.errors.demoFetchFailed(e,r))}if(!t.ok)throw new d("internal",I.errors.demoFetchFailed(e,`HTTP ${t.status}`));try{return await t.json()}catch(i){let r=i instanceof Error?i.message:String(i);throw new d("internal",I.errors.demoParseFailed(e,r))}}};function gt(n){return!(n.kind&&n.kind.length>0||n.hasIssues!==void 0||n.path||n.offset!==void 0&&n.offset!==0||n.limit!==void 0)}function ht(n){return!(n.kind&&n.kind.length>0||n.from||n.to)}function ft(n){return!(n.severity||n.analyzerId||n.node)}function Ge(n){let e=new Set;for(let t of n)for(let i of t.nodeIds)e.add(i);return e}function vt(n){let t=n.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${t}$`)}function Ve(){let n=s(A);if(n==="live")return new te(s($),s(C));if(n==="demo")return new ne;let e=n;throw new Error(I.errors.unknownMode(String(e)))}var Xe={providers:[ue(),xe(Qe,Re()),ke(Pe()),Le({}),he(async()=>{let n=s(Me),[{default:e},{definePreset:t}]=await Promise.all([import("./chunk-FWFBO7KA.js"),import("./chunk-UJOZYR5I.js")]),i=t(e,{semantic:{primary:{50:"#F5F3FF",100:"#EDE9FE",200:"#DDD6FE",300:"#C4B5FD",400:"#A78BFA",500:"#8B5CF6",600:"#7C3AED",700:"#6D28D9",800:"#4C1D95",900:"#2E1065",950:"#1E0A4D"}}});n.setThemeConfig({theme:{preset:i,options:{darkModeSelector:".app-dark"}}})}),{provide:A,useFactory:We},{provide:Z,useFactory:Ve}]};var ie={brand:"skill-map",beta:"Beta",nav:{graph:"Graph",list:"List",searchLabel:"Search nodes (coming soon)",searchTooltip:"Search \u2014 coming soon"},actions:{},badge:{nodes:"nodes",graphInfo:(n,e)=>`${n.toLocaleString()} nodes \xB7 ${e.toLocaleString()} links`,graphInfoA11y:(n,e)=>`Graph contains ${n} nodes and ${e} links`},a11y:{viewSwitcher:"View switcher"},viewportWarning:{title:"Looks like you're on a small screen",subtitle:"skill-map is built for desktop",body:"The graph and inspector need room to breathe. Pop this open on a screen at least 768px wide \u2014 see you there."}};var M={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 L={available:"Update available",tooltip:n=>`v${n} is available. Run \`npm i -g @skill-map/cli@latest\` to update.`,a11yLabel:n=>`Update available: version ${n}`,versionLabel:n=>`v${n}`,versionTooltip:n=>`skill-map CLI v${n}`,versionA11yLabel:n=>`Running version ${n}`};var re="sm-debug-slots",yt="debug-slots",bt="is-debug-slots",oe=class n{visible=w(!1);constructor(){this.visible.set(this.resolveInitial()),K(()=>{let e=this.visible();document.documentElement.classList.toggle(bt,e)})}toggle(){let e=!this.visible();this.visible.set(e);try{localStorage.setItem(re,e?"1":"0")}catch{}}resolveInitial(){let t=new URLSearchParams(window.location.search).get(yt);if(t==="1"||t==="true"){try{localStorage.setItem(re,"1")}catch{}return!0}if(t==="0"||t==="false"){try{localStorage.setItem(re,"0")}catch{}return!1}try{return localStorage.getItem(re)==="1"}catch{return!1}}static \u0275fac=function(t){return new(t||n)};static \u0275prov=P({token:n,factory:n.\u0275fac,providedIn:"root"})};var Ye="search",Ze="kinds",qe="stabilities",et="hasIssues",tt="staleOnly",se=class n{filters=s(je);router=s(Ce);activatedRoute=s(Se);kindRegistry=s(S);destroyRef=s(H);suppressUrlReadback=!1;constructor(){this.applyUrlToFilters(this.currentParams()),this.router.events.pipe(Oe(this.destroyRef)).subscribe(e=>{if(e instanceof we){if(this.suppressUrlReadback)return;this.applyUrlToFilters(this.currentParams())}}),K(()=>{let e=this.computeQueryParams();this.writeQueryParams(e)})}currentParams(){let e=this.router.parseUrl(this.router.url),t=new URLSearchParams;for(let[i,r]of Object.entries(e.queryParams))Array.isArray(r)?t.set(i,r.join(",")):r!=null&&t.set(i,String(r));return this.activatedRoute,t}applyUrlToFilters(e){let t=e.get(Ye)??"";t!==this.filters.searchText()&&this.filters.setSearchText(t);let i=_t(e.get(Ze),this.kindRegistry.kinds().map(k=>k.name));nt(i,this.filters.selectedKinds())||this.filters.setKinds(i);let r=It(e.get(qe));nt(r,this.filters.selectedStabilities())||this.filters.setStabilities(r);let o=e.get(et)==="true";o!==this.filters.hasIssuesOnly()&&this.filters.setHasIssuesOnly(o);let y=e.get(tt)==="true";y!==this.filters.staleOnly()&&this.filters.setStaleOnly(y)}computeQueryParams(){let e=this.filters.searchText().trim(),t=this.filters.selectedKinds(),i=this.filters.selectedStabilities(),r=this.filters.hasIssuesOnly(),o=this.filters.staleOnly();return{[Ye]:e.length>0?e:null,[Ze]:t.length>0?t.join(","):null,[qe]:i.length>0?i.join(","):null,[et]:r?"true":null,[tt]:o?"true":null}}writeQueryParams(e){let t=this.currentParams(),i=new Map(Object.entries(e)),r=!1;for(let[o,y]of i)if((t.get(o)??null)!==y){r=!0;break}r&&(this.suppressUrlReadback=!0,this.router.navigate([],{relativeTo:this.activatedRoute,queryParams:e,queryParamsHandling:"merge",replaceUrl:!0}).finally(()=>{setTimeout(()=>{this.suppressUrlReadback=!1},0)}))}static \u0275fac=function(t){return new(t||n)};static \u0275prov=P({token:n,factory:n.\u0275fac,providedIn:"root"})};function _t(n,e){if(!n)return[];let t=new Set(e);return n.split(",").map(i=>i.trim()).filter(i=>t.has(i))}function It(n){if(!n)return[];let e=new Set(Ne);return n.split(",").map(t=>t.trim()).filter(t=>e.has(t))}function nt(n,e){if(n.length!==e.length)return!1;for(let t=0;t<n.length;t++)if(n[t]!==e[t])return!1;return!0}var it={body:"You are viewing a static demo of skill-map's UI. Install it:",installCommand:"npm i -g @skill-map/cli",homeCta:"\u2190 Back to skill-map.dev",homeHref:"/",dismissAria:"Dismiss demo banner"};function wt(n,e){if(n&1){let t=G();l(0,"div",0),f(1,"span",1),l(2,"p",2),u(3),l(4,"code",3),u(5),c()(),l(6,"a",4),u(7),c(),l(8,"p-button",5),R("onClick",function(){W(t);let r=_();return B(r.dismiss())}),c()()}if(n&2){let t=_();a(3),V(" ",t.texts.body," "),a(2),h(t.texts.installCommand),a(),g("href",t.texts.homeHref,Q),a(),h(t.texts.homeCta),a(),g("ariaLabel",t.texts.dismissAria)("text",!0)("rounded",!0)}}var rt="sm.demoBannerDismissed",ae=class n{mode=s(A);texts=it;dismissed=w(this.readDismissed());visible=m(()=>this.mode==="demo"&&!this.dismissed());dismiss(){this.dismissed.set(!0);try{globalThis.localStorage?.setItem(rt,"1")}catch{}}readDismissed(){if(this.mode!=="demo")return!0;try{return globalThis.localStorage?.getItem(rt)==="1"}catch{return!1}}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=J({type:n,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","pi","pi-info-circle"],[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","pi pi-times","severity","secondary","size","small","data-testid","demo-banner-dismiss",3,"onClick","ariaLabel","text","rounded"]],template:function(t,i){t&1&&D(0,wt,9,7,"div",0),t&2&&F(i.visible()?0:-1)},dependencies:[Y,X],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(--font-family-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);background:var(--p-content-background);border:1px solid var(--p-content-border-color);border-radius:.25rem;padding:.05rem .4rem;font-size:.85em;margin-left:.25rem}.demo-banner__home[_ngcontent-%COMP%]{color:var(--p-primary-color);font-weight:500;text-decoration:none;white-space:nowrap}.demo-banner__home[_ngcontent-%COMP%]:hover, .demo-banner__home[_ngcontent-%COMP%]:focus-visible{text-decoration:underline}"],changeDetection:0})};var St=()=>[import("./chunk-HOBQ4G4O.js").then(n=>n.SettingsModal)];function At(n,e){if(n&1&&(l(0,"span",10),u(1),c()),n&2){let t=_();g("pTooltip",t.versionTooltip()),x("aria-label",t.versionA11y()),a(),h(t.versionLabel())}}function Ct(n,e){if(n&1&&(l(0,"a",12),f(1,"i",27),l(2,"span"),u(3),c()()),n&2){let t=_();g("pTooltip",t.updateChipTooltip()),x("aria-label",t.updateChipA11y()),a(3),h(t.updateChipText)}}function Tt(n,e){if(n&1&&(l(0,"p",13),u(1),c()),n&2){let t=_();a(),h(t.rootLabel())}}function Et(n,e){if(n&1){let t=G();l(0,"sm-settings-modal",28),R("visibleChange",function(r){W(t);let o=_();return B(o.settingsOpen.set(r))}),c()}if(n&2){let t=_();g("visible",t.settingsOpen())}}var le=class n{loader=s($e);theme=s(Ke);dataSource=s(Z);_filterUrlSync=s(se);_debugSlots=s(oe);updateCheck=s(He);texts=ie;settingsTexts=Be;settingsOpen=w(!1);openSettings(){this.settingsOpen.set(!0)}scanning=w(!1);scanError=w(null);async triggerScan(){if(!this.scanning()){this.scanning.set(!0),this.scanError.set(null);try{await this.dataSource.runScan(),await this.loader.load()}catch(e){let t=e instanceof d||e instanceof Error?e.message:String(e);this.scanError.set(t),console.warn(`triggerScan failed: ${t}`)}finally{this.scanning.set(!1)}}}updateChipText=L.available;updateChipTooltip=m(()=>L.tooltip(this.updateCheck.latest()??""));updateChipA11y=m(()=>L.a11yLabel(this.updateCheck.latest()??""));versionLabel=m(()=>L.versionLabel(this.updateCheck.current()??""));versionTooltip=m(()=>L.versionTooltip(this.updateCheck.current()??""));versionA11y=m(()=>L.versionA11yLabel(this.updateCheck.current()??""));count=this.loader.count;linkCount=m(()=>this.loader.scan()?.links?.length??0);graphInfoTooltip=m(()=>ie.badge.graphInfo(this.count(),this.linkCount()));graphInfoA11y=m(()=>ie.badge.graphInfoA11y(this.count(),this.linkCount()));rootLabel=m(()=>{let e=this.loader.scan()?.roots??[];if(e.length===0)return"";let t=e[0].replace(/[\\/]+$/,"");if(!t||t===".")return"";let i=t.split(/[\\/]/);return i[i.length-1]??""});themeMode=this.theme.mode;markSrc=m(()=>this.theme.resolved()==="dark"?"skill-map-mark-light.svg":"skill-map-mark-dark.svg");themeIcon=m(()=>{switch(this.themeMode()){case"auto":return"pi pi-desktop";case"light":return"pi pi-sun";case"dark":return"pi pi-moon"}});themeLabel=m(()=>{switch(this.themeMode()){case"auto":return M.toggleToLight;case"light":return M.toggleToDark;case"dark":return M.toggleToAuto}});themeTooltip=m(()=>{switch(this.themeMode()){case"auto":return M.currentAuto;case"light":return M.currentLight;case"dark":return M.currentDark}});ngOnInit(){this.loader.load(),this.updateCheck.load()}toggleTheme(){this.theme.toggle()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=J({type:n,selectors:[["app-root"]],decls:41,vars:33,consts:[["role","alert","data-testid","viewport-warning",1,"viewport-warning"],[1,"viewport-warning__card"],["aria-hidden","true",1,"pi","pi-desktop","viewport-warning__icon"],[1,"viewport-warning__title"],[1,"viewport-warning__subtitle"],[1,"viewport-warning__body"],["data-testid","shell",1,"shell"],["data-testid","shell-topbar",1,"shell__topbar"],[1,"shell__brand"],["alt","","aria-hidden","true",1,"shell__brand-mark",3,"src"],["tooltipPosition","bottom","data-testid","shell-version",1,"shell__version",3,"pTooltip"],[1,"shell__beta"],["href","https://www.npmjs.com/package/@skill-map/cli","target","_blank","rel","noopener noreferrer","tooltipPosition","bottom","data-testid","shell-update-chip",1,"shell__update-chip",3,"pTooltip"],[1,"shell__tag"],["data-testid","shell-nav",1,"shell__nav"],["routerLink","/graph","routerLinkActive","is-active","data-testid","nav-graph"],["routerLink","/list","routerLinkActive","is-active","data-testid","nav-list"],["type","button","tooltipPosition","bottom","disabled","","data-testid","nav-search",1,"shell__nav-search",3,"pTooltip"],["aria-hidden","true",1,"pi","pi-search"],[1,"shell__actions"],["data-debug-slot","topbar.actions.indicator",1,"sm-debug-slot"],["slot","topbar.actions.indicator",3,"node"],["type","button","tooltipPosition","bottom","data-testid","shell-refresh",1,"shell__refresh",3,"click","pTooltip","disabled"],["aria-hidden","true"],["severity","secondary","size","small","data-testid","action-theme-toggle",3,"onClick","icon","ariaLabel","pTooltip","text","rounded"],["icon","pi pi-cog","severity","secondary","size","small","data-testid","action-settings",3,"onClick","ariaLabel","pTooltip","text","rounded"],[1,"shell__main"],["aria-hidden","true",1,"pi","pi-arrow-circle-up"],[3,"visibleChange","visible"]],template:function(t,i){if(t&1&&(l(0,"div",0)(1,"div",1),f(2,"i",2),l(3,"h2",3),u(4),c(),l(5,"p",4),u(6),c(),l(7,"p",5),u(8),c()()(),l(9,"div",6),f(10,"sm-demo-banner"),l(11,"header",7)(12,"div",8),f(13,"img",9),l(14,"div")(15,"h1"),u(16),D(17,At,2,3,"span",10),l(18,"span",11),u(19),c(),D(20,Ct,4,3,"a",12),c(),D(21,Tt,2,1,"p",13),c()(),l(22,"nav",14)(23,"a",15),u(24),c(),l(25,"a",16),u(26),c(),l(27,"button",17),f(28,"i",18),c()(),l(29,"div",19)(30,"div",20),f(31,"sm-view-contributions-host",21),c(),l(32,"button",22),R("click",function(){return i.triggerScan()}),f(33,"i",23),c(),l(34,"p-button",24),R("onClick",function(){return i.toggleTheme()}),c(),l(35,"p-button",25),R("onClick",function(){return i.openSettings()}),c()()(),l(36,"main",26),f(37,"router-outlet"),c(),ge(38,Et,1,1),fe(39,38,St),c()),t&2){let r;a(4),h(i.texts.viewportWarning.title),a(2),h(i.texts.viewportWarning.subtitle),a(2),h(i.texts.viewportWarning.body),a(5),g("src",i.markSrc(),Q),a(3),V(" ",i.texts.brand," "),a(),F((r=i.updateCheck.current())?17:-1,r),a(),x("aria-label",i.texts.beta),a(),h(i.texts.beta),a(),F(i.updateCheck.isOutdated()?20:-1),a(),F(i.rootLabel()?21:-1),a(),x("aria-label",i.texts.a11y.viewSwitcher),a(2),h(i.texts.nav.graph),a(2),h(i.texts.nav.list),a(),g("pTooltip",i.texts.nav.searchTooltip),x("aria-label",i.texts.nav.searchLabel),a(4),g("node",null),a(),ye("is-spinning",i.scanning()),g("pTooltip",i.graphInfoTooltip())("disabled",i.scanning()),x("aria-label",i.graphInfoA11y()),a(),be(i.scanning()?"pi pi-refresh pi-spin":"pi pi-refresh"),a(),g("icon",i.themeIcon())("ariaLabel",i.themeLabel())("pTooltip",i.themeTooltip())("text",!0)("rounded",!0),a(),g("ariaLabel",i.settingsTexts.a11y.triggerLabel)("pTooltip",i.settingsTexts.triggerTooltip)("text",!0)("rounded",!0),a(4),ve(i.settingsOpen())}},dependencies:[Ae,Te,Ee,Y,X,Fe,De,ae,Ue],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:2rem;padding:.75rem 1.5rem;background:var(--shell-topbar-bg);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__beta[_ngcontent-%COMP%]{font-family:Stardos Stencil,Geist,system-ui,sans-serif;font-weight:700;font-size:11px;line-height:1;letter-spacing:.12em;text-transform:uppercase;color:#ad322b;border:1.5px solid #ad322b;border-radius:3px;padding:3px 7px 2px;margin-left:6px;transform:rotate(-4deg);transform-origin:center;opacity:.92;-webkit-user-select:none;user-select:none;display:inline-block;vertical-align:middle}.app-dark[_nghost-%COMP%] .shell__beta[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .shell__beta[_ngcontent-%COMP%]{color:#cf4640;border-color:#cf4640}.shell__version[_ngcontent-%COMP%]{display:inline-block;margin-left:6px;padding:2px 6px;border-radius:3px;font-family:var(--p-monospace-font-family, ui-monospace, monospace);font-size:11px;line-height:1;font-weight:500;letter-spacing:.02em;color:var(--p-text-muted-color);background:var(--p-content-hover-background);vertical-align:middle;-webkit-user-select:text;user-select:text}.shell__update-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;margin-left:8px;padding:3px 8px 2px;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:999px;text-decoration:none;transition:background-color .12s ease,color .12s ease;vertical-align:middle}.shell__update-chip[_ngcontent-%COMP%]:hover, .shell__update-chip[_ngcontent-%COMP%]:focus-visible{background:var(--p-primary-100);color:var(--p-primary-700)}.shell__update-chip[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:12px}.app-dark[_nghost-%COMP%] .shell__update-chip[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .shell__update-chip[_ngcontent-%COMP%]{color:var(--p-primary-300);background:#ffffff0a;border-color:var(--p-primary-700)}.shell__tag[_ngcontent-%COMP%]{margin:0;font-size:.72rem;color:var(--shell-topbar-text-muted);letter-spacing:.02em;text-transform:uppercase}.shell__nav[_ngcontent-%COMP%]{display:flex;gap:.25rem;margin-left:auto}.shell__nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{padding:.5rem .9rem;border-radius:.5rem;font-size:.9rem;font-weight:500;color:var(--shell-topbar-text-muted);transition:background .15s ease,color .15s ease}.shell__nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{background:var(--shell-topbar-hover-bg);color:var(--shell-topbar-text-strong)}.shell__nav[_ngcontent-%COMP%] a.is-active[_ngcontent-%COMP%]{background:var(--shell-topbar-active-bg);color:var(--shell-topbar-active-text)}.shell__nav-search[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;padding:0;margin-left:.25rem;border:none;border-radius:.5rem;background:transparent;color:var(--shell-topbar-text-muted);cursor:not-allowed;opacity:.55;transition:background .15s ease,color .15s ease,opacity .15s ease}.shell__nav-search[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--shell-topbar-hover-bg);color:var(--shell-topbar-text-strong);opacity:1}.shell__nav-search[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:.95rem}.shell__actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem}.shell__refresh[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:none;border-radius:999px;background:transparent;color:var(--shell-topbar-text-muted);cursor:pointer;transition:background .15s ease,color .15s ease}.shell__refresh[_ngcontent-%COMP%]:hover:not(:disabled), .shell__refresh[_ngcontent-%COMP%]:focus-visible:not(:disabled){background:var(--shell-topbar-hover-bg);color:var(--shell-topbar-text-strong);outline:none}.shell__refresh[_ngcontent-%COMP%]:disabled{cursor:progress;opacity:.7}.shell__refresh[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:1rem}.shell__main[_ngcontent-%COMP%]{flex:1;min-height:0;overflow-y:auto;width:100%}@media(max-width:1280px){.shell__topbar[_ngcontent-%COMP%]{gap:1rem;padding:.5rem 1rem}.shell__tag[_ngcontent-%COMP%]{display:none}.shell__nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{padding:.4rem .7rem;font-size:.85rem}}.viewport-warning[_ngcontent-%COMP%]{display:none}@media(max-width:767px){.viewport-warning[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:var(--sm-bg-content)}.viewport-warning__card[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.85rem;max-width:22rem}.viewport-warning__icon[_ngcontent-%COMP%]{font-size:3rem;color:var(--p-primary-color);margin-bottom:.25rem}.viewport-warning__title[_ngcontent-%COMP%]{margin:0;font-size:1.35rem;font-weight:700;color:var(--p-text-color);line-height:1.25}.viewport-warning__subtitle[_ngcontent-%COMP%]{margin:0;font-size:1rem;font-weight:500;color:var(--p-primary-color);line-height:1.35}.viewport-warning__body[_ngcontent-%COMP%]{margin:0;color:var(--p-text-muted-color);line-height:1.5;font-size:.9rem}.shell[_ngcontent-%COMP%]{display:none}}"],changeDetection:0})};_e(le,Xe).catch(n=>console.error(n));
|