diff --git a/main.js b/main.js
index 1bb79e8..2cf800d 100644
--- a/main.js
+++ b/main.js
@@ -1,4 +1,4 @@
-var ra=Object.defineProperty;var Rn=Object.getOwnPropertyDescriptor;var Ln=Object.getOwnPropertyNames;var Yn=Object.prototype.hasOwnProperty;var Dn=(t,e)=>{for(var a in e)ra(t,a,{get:e[a],enumerable:!0})},zn=(t,e,a,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ln(e))!Yn.call(t,i)&&i!==a&&ra(t,i,{get:()=>e[i],enumerable:!(s=Rn(e,i))||s.enumerable});return t};var An=t=>zn(ra({},"__esModule",{value:!0}),t);var wc={};Dn(wc,{default:()=>ia});module.exports=An(wc);var jn=require("obsidian");var Tn=require("obsidian");var K=require("obsidian");function bs(){try{let t=window.require;return typeof t!="function"?null:t("electron")?.shell??null}catch{return null}}function ut(t){let e=bs();if(e){e.openExternal(t);return}window.open(t,"_blank")}function ht(t){let e=bs();e&&e.showItemInFolder(t)}var mt=require("os"),T=require("fs"),Q=require("path"),v=(0,mt.homedir)(),Ce=(0,mt.platform)()==="win32",Se=process.env.XDG_CONFIG_HOME||(Ce?(0,Q.join)(v,".config"):(0,Q.join)(v,".config")),oa=new Map;function Ps(){oa.clear()}function M(t,e){let a=oa.get(t);if(a!==void 0)return a;let s=e();return oa.set(t,s),s}function Fe(t){if(Ce){let e=process.env.ProgramFiles||"C:\\Program Files",a=process.env.LOCALAPPDATA||(0,Q.join)(v,"AppData","Local");return(0,T.existsSync)((0,Q.join)(e,t))||(0,T.existsSync)((0,Q.join)(a,"Programs",t))}return(0,T.existsSync)(`/Applications/${t}.app`)||(0,T.existsSync)((0,Q.join)(v,"Applications",`${t}.app`))}function ie(t){let e=Ce?[`${t}.cmd`,`${t}.exe`,t]:[t],a=[];if(Ce){let i=process.env.APPDATA||(0,Q.join)(v,"AppData","Roaming");a.push((0,Q.join)(i,"npm"),(0,Q.join)(v,".bun","bin"),(0,Q.join)(v,"AppData","Local","npm"))}else a.push("/usr/local/bin","/opt/homebrew/bin",(0,Q.join)(v,".local","bin"));for(let i of a)for(let r of e)if((0,T.existsSync)((0,Q.join)(i,r)))return!0;let s=Ce?(0,Q.join)(v,"AppData","Roaming","nvm"):(0,Q.join)(v,".nvm","versions","node");try{for(let i of(0,T.readdirSync)(s)){let r=Ce?(0,Q.join)(s,i):(0,Q.join)(s,i,"bin");for(let n of e)if((0,T.existsSync)((0,Q.join)(r,n)))return!0}}catch{}return!1}var na=["Code","Code - Insiders","Cursor","VSCodium","Windsurf"];function ks(t){let e;if(process.platform==="darwin")e=na.map(a=>(0,Q.join)(v,"Library","Application Support",a,"User","globalStorage",t));else if(Ce){let a=process.env.APPDATA||(0,Q.join)(v,"AppData","Roaming");e=na.map(s=>(0,Q.join)(a,s,"User","globalStorage",t))}else e=na.map(a=>(0,Q.join)(Se,a,"User","globalStorage",t));return e.some(a=>(0,T.existsSync)(a))}var G=[{id:"claude-code",name:"Claude Code",color:"#f97316",icon:"brain",paths:[{baseDir:(0,Q.join)(v,".claude","skills"),type:"skill",pattern:"directory-with-skillmd"},{baseDir:(0,Q.join)(v,".claude","commands"),type:"command",pattern:"flat-md"}],agentPaths:[{baseDir:(0,Q.join)(v,".claude","agents"),type:"agent",pattern:"flat-md"}],isInstalled:()=>M("claude-code",()=>(0,T.existsSync)((0,Q.join)(v,".claude","settings.json"))||(0,T.existsSync)((0,Q.join)(v,".claude","CLAUDE.md"))||ie("claude"))},{id:"cursor",name:"Cursor",color:"#3b82f6",icon:"mouse-pointer",paths:[{baseDir:(0,Q.join)(v,".cursor","skills"),type:"skill",pattern:"directory-with-skillmd"},{baseDir:(0,Q.join)(v,".cursor","rules"),type:"rule",pattern:"flat-md"}],agentPaths:[{baseDir:(0,Q.join)(v,".cursor","agents"),type:"agent",pattern:"flat-md"}],isInstalled:()=>M("cursor",()=>Fe("Cursor")||(0,T.existsSync)((0,Q.join)(v,".cursor","argv.json")))},{id:"windsurf",name:"Windsurf",color:"#14b8a6",icon:"wind",paths:[{baseDir:(0,Q.join)(v,".codeium","windsurf","skills"),type:"skill",pattern:"directory-with-skillmd"},{baseDir:(0,Q.join)(v,".codeium","windsurf","memories"),type:"memory",pattern:"flat-md"},{baseDir:(0,Q.join)(v,".windsurf","rules"),type:"rule",pattern:"flat-md"}],agentPaths:[],isInstalled:()=>M("windsurf",()=>Fe("Windsurf")||(0,T.existsSync)((0,Q.join)(v,".codeium","windsurf","argv.json")))},{id:"codex",name:"Codex",color:"#22c55e",icon:"book",paths:[{baseDir:(0,Q.join)(v,".codex","skills"),type:"skill",pattern:"directory-with-skillmd"},{baseDir:(0,Q.join)(v,".codex","prompts"),type:"command",pattern:"flat-md"},{baseDir:(0,Q.join)(v,".codex","memories"),type:"memory",pattern:"flat-md"}],agentPaths:[{baseDir:(0,Q.join)(v,".codex","agents"),type:"agent",pattern:"flat-md"}],isInstalled:()=>M("codex",()=>(0,T.existsSync)((0,Q.join)(v,".codex","config.toml"))||(0,T.existsSync)((0,Q.join)(v,".codex","auth.json"))||ie("codex"))},{id:"copilot",name:"Copilot",color:"#a855f7",icon:"plane",paths:[{baseDir:(0,Q.join)(v,".copilot","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>M("copilot",()=>(0,T.existsSync)((0,Q.join)(v,".copilot"))||ie("copilot"))},{id:"amp",name:"Amp",color:"#ec4899",icon:"zap",paths:[{baseDir:(0,Q.join)(Se,"amp","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>M("amp",()=>(0,T.existsSync)((0,Q.join)(Se,"amp","config.json"))||(0,T.existsSync)((0,Q.join)(Se,"amp","settings.json"))||ie("amp"))},{id:"opencode",name:"OpenCode",color:"#ef4444",icon:"terminal",paths:[{baseDir:(0,Q.join)(Se,"opencode","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>M("opencode",()=>Fe("OpenCode")||(0,T.existsSync)((0,Q.join)(Se,"opencode","opencode.json"))||(0,T.existsSync)((0,Q.join)(Se,"opencode","opencode.jsonc"))||ie("opencode"))},{id:"pi",name:"Pi",color:"#06b6d4",icon:"sparkles",paths:[{baseDir:(0,Q.join)(v,".pi","agent","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>M("pi",()=>ie("pi"))},{id:"antigravity",name:"Antigravity",color:"#ef4444",icon:"arrow-up-circle",paths:[{baseDir:(0,Q.join)(v,".gemini","antigravity","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>M("antigravity",()=>Fe("Antigravity")||(0,T.existsSync)((0,Q.join)(v,".gemini","antigravity","skills"))||ie("antigravity"))},{id:"claude-desktop",name:"Claude Desktop",color:"#f97316",icon:"monitor",paths:[],agentPaths:[],isInstalled:()=>M("claude-desktop",()=>Fe("Claude"))},{id:"global-agents",name:"Global",color:"#a3e635",icon:"globe",paths:[{baseDir:(0,Q.join)(v,".agents","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>M("global-agents",()=>(0,T.existsSync)((0,Q.join)(v,".agents","skills")))},{id:"cline",name:"Cline",color:"#8b5cf6",icon:"bot",paths:[],agentPaths:[],isInstalled:()=>M("cline",()=>(0,T.existsSync)((0,Q.join)(v,".cline"))||ks("saoudrizwan.claude-dev"))},{id:"roo-code",name:"Roo Code",color:"#0ea5e9",icon:"rocket",paths:[{baseDir:(0,Q.join)(v,".roo","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>M("roo-code",()=>(0,T.existsSync)((0,Q.join)(v,".roo"))||ks("RooVeterinaryInc.roo-cline"))},{id:"kilocode",name:"Kilo Code",color:"#facc15",icon:"square",paths:[{baseDir:(0,Q.join)(v,".kilocode","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>M("kilocode",()=>(0,T.existsSync)((0,Q.join)(v,".kilocode"))||(0,T.existsSync)((0,Q.join)(v,".local","share","kilo"))||ie("kilo"))},{id:"continue",name:"Continue",color:"#64748b",icon:"play",paths:[{baseDir:(0,Q.join)(v,".continue","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>M("continue",()=>(0,T.existsSync)((0,Q.join)(v,".continue"))||ie("cn"))},{id:"openhands",name:"OpenHands",color:"#fbbf24",icon:"hand",paths:[{baseDir:(0,Q.join)(v,".openhands","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>M("openhands",()=>(0,T.existsSync)((0,Q.join)(v,".openhands"))||ie("openhands"))},{id:"goose",name:"Goose",color:"#3b82f6",icon:"feather",paths:[{baseDir:(0,Q.join)(Se,"goose","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>M("goose",()=>(0,T.existsSync)((0,Q.join)(Se,"goose"))||ie("goose"))},{id:"aider",name:"Aider",color:"#eab308",icon:"wrench",paths:[],agentPaths:[],isInstalled:()=>M("aider",()=>ie("aider"))}];var U={"claude-code":{viewBox:"0 0 24 24",paths:''},cursor:{viewBox:"0 0 466.73 532.09",paths:''},windsurf:{viewBox:"0 0 24 24",paths:''},codex:{viewBox:"0 0 24 24",paths:''},copilot:{viewBox:"0 0 24 24",paths:''},opencode:{viewBox:"0 0 24 36",paths:''},"claude-desktop":{viewBox:"0 0 24 24",paths:''},"global-agents":{viewBox:"0 0 24 24",paths:''},goose:{viewBox:"0 0 24 24",paths:''},cline:{viewBox:"0 0 24 24",paths:''},continue:{viewBox:"0 0 26 24",paths:''},"roo-code":{viewBox:"0 0 96 96",paths:''},replit:{viewBox:"0 0 24 24",paths:''},"gemini-cli":{viewBox:"0 0 24 24",paths:''},amp:{viewBox:"0 0 21 21",paths:''},antigravity:{viewBox:"0 0 112 96",paths:''},kilocode:{viewBox:"0 0 39.9997627 39.9999944",paths:''},openhands:{viewBox:"0 -24 148 148",paths:''}};function oe(t,e,a=16){let s=U[e];if(!s)return;let i=createSvg("svg");i.setAttribute("viewBox",s.viewBox),i.setAttribute("width",String(a)),i.setAttribute("height",String(a)),i.setAttribute("fill","none"),i.classList.add("as-tool-svg");let n=new DOMParser().parseFromString(``,"image/svg+xml");for(let o of Array.from(n.documentElement.childNodes))i.appendChild(i.ownerDocument.importNode(o,!0));t.appendChild(i)}var ft=class{containerEl;store;onToggleDashboard;onToggleMarketplace;onCreateSkill;onToggleConversations;conversationStore;dashboardActive=!1;marketplaceActive=!1;conversationsActive=!1;constructor(e,a,s,i,r,n,o){this.containerEl=e,this.store=a,this.onToggleDashboard=s,this.onToggleMarketplace=i,this.onCreateSkill=r,this.onToggleConversations=n||(()=>{}),this.conversationStore=o||null}setDashboardActive(e){this.dashboardActive=e}setMarketplaceActive(e){this.marketplaceActive=e}setConversationsActive(e){this.conversationsActive=e}render(){this.containerEl.empty(),this.containerEl.addClass("as-sidebar"),this.renderLibrarySection(),this.conversationsActive&&this.conversationStore?this.renderConversationFilters():(this.renderTypeSection(),this.renderToolSection(),this.renderProjectSection(),this.renderCollectionSection(),this.store.hasSkillkit||this.renderSkillkitCta())}renderSection(e,a){let s=this.containerEl.createDiv("as-sidebar-section");s.createDiv({cls:"as-sidebar-title",text:e});for(let i of a){let r=s.createDiv("as-sidebar-item");!this.dashboardActive&&this.isActive(i.filter)&&r.addClass("is-active");let n=r.createSpan("as-sidebar-icon");(0,K.setIcon)(n,i.icon),r.createSpan({cls:"as-sidebar-label",text:i.label}),i.count!==void 0&&r.createSpan({cls:"as-sidebar-count",text:String(i.count)}),r.addEventListener("click",()=>{this.dashboardActive&&this.onToggleDashboard(),this.marketplaceActive&&this.onToggleMarketplace(),this.store.setFilter(i.filter)})}}renderTypeSection(){let e=this.store.getTypeCounts(),s=[{label:"Skills",icon:"sparkles",type:"skill"},{label:"Commands",icon:"terminal",type:"command"},{label:"Agents",icon:"bot",type:"agent"},{label:"Rules",icon:"scroll",type:"rule"}].filter(i=>e.has(i.type)).map(i=>({label:i.label,icon:i.icon,filter:{kind:"type",type:i.type},count:e.get(i.type)||0}));s.length>0&&this.renderSection("Types",s)}renderToolSection(){let e=this.store.getToolCounts(),a=G.filter(i=>i.isInstalled()&&e.has(i.id));if(a.length===0)return;let s=this.containerEl.createDiv("as-sidebar-section");s.createDiv({cls:"as-sidebar-title",text:"Tools"});for(let i of a){let r={kind:"tool",toolId:i.id},n=s.createDiv("as-sidebar-item");!this.dashboardActive&&this.isActive(r)&&n.addClass("is-active");let o=n.createSpan("as-sidebar-icon");U[i.id]?oe(o,i.id,14):(0,K.setIcon)(o,i.icon),n.createSpan({cls:"as-sidebar-label",text:i.name}),n.createSpan({cls:"as-sidebar-count",text:String(e.get(i.id)||0)}),n.addEventListener("click",()=>{this.dashboardActive&&this.onToggleDashboard(),this.store.setFilter(r)})}}renderProjectSection(){let e=this.store.getProjectCounts();if(e.size===0)return;let a=[];for(let[s,i]of e)a.push({label:s,icon:"folder-git-2",filter:{kind:"project",project:s},count:i});a.sort((s,i)=>s.label.localeCompare(i.label)),this.renderSection("Projects",a)}renderCollectionSection(){let e=this.containerEl.createDiv("as-sidebar-section");e.createDiv({cls:"as-sidebar-title",text:"Collections"});let a=new Set;for(let s of this.store.allItems)for(let i of s.collections)a.add(i);if(a.size===0){e.createDiv({cls:"as-sidebar-empty",text:"No collections yet"});return}for(let s of a){let i={kind:"collection",name:s},r=e.createDiv("as-sidebar-item");!this.dashboardActive&&this.isActive(i)&&r.addClass("is-active");let n=r.createSpan("as-sidebar-icon");(0,K.setIcon)(n,"folder"),r.createSpan({cls:"as-sidebar-label",text:s}),r.addEventListener("click",()=>{this.dashboardActive&&this.onToggleDashboard(),this.store.setFilter(i)})}}renderLibrarySection(){let e=this.containerEl.createDiv("as-sidebar-section");e.createDiv({cls:"as-sidebar-title",text:"Library"});let a=[{label:"All Skills",icon:"layers",filter:{kind:"all"}},{label:"Favorites",icon:"star",filter:{kind:"favorites"}}],s=this.dashboardActive||this.marketplaceActive||this.conversationsActive;for(let p of a){let u=e.createDiv("as-sidebar-item");!s&&this.isActive(p.filter)&&u.addClass("is-active");let g=u.createSpan("as-sidebar-icon");(0,K.setIcon)(g,p.icon),u.createSpan({cls:"as-sidebar-label",text:p.label}),u.addEventListener("click",()=>{this.dashboardActive&&this.onToggleDashboard(),this.marketplaceActive&&this.onToggleMarketplace(),this.conversationsActive&&this.onToggleConversations(),this.store.setFilter(p.filter)})}let i=e.createDiv("as-sidebar-item");this.dashboardActive&&i.addClass("is-active");let r=i.createSpan("as-sidebar-icon");(0,K.setIcon)(r,"bar-chart-2"),i.createSpan({cls:"as-sidebar-label",text:"Dashboard"}),i.addEventListener("click",()=>{this.marketplaceActive&&this.onToggleMarketplace(),this.conversationsActive&&this.onToggleConversations(),this.dashboardActive||this.onToggleDashboard()});let n=e.createDiv("as-sidebar-item");this.marketplaceActive&&n.addClass("is-active");let o=n.createSpan("as-sidebar-icon");(0,K.setIcon)(o,"shopping-bag"),n.createSpan({cls:"as-sidebar-label",text:"Marketplace"}),n.addEventListener("click",()=>{this.dashboardActive&&this.onToggleDashboard(),this.conversationsActive&&this.onToggleConversations(),this.marketplaceActive||this.onToggleMarketplace()});let l=e.createDiv("as-sidebar-item");this.conversationsActive&&l.addClass("is-active");let O=l.createSpan("as-sidebar-icon");(0,K.setIcon)(O,"message-circle"),l.createSpan({cls:"as-sidebar-label",text:"Conversations"}),l.addEventListener("click",()=>{this.dashboardActive&&this.onToggleDashboard(),this.marketplaceActive&&this.onToggleMarketplace(),this.conversationsActive||this.onToggleConversations()});let c=e.createDiv("as-sidebar-item as-sidebar-create"),d=c.createSpan("as-sidebar-icon");(0,K.setIcon)(d,"plus"),c.createSpan({cls:"as-sidebar-label",text:"Create"}),c.addEventListener("click",()=>this.onCreateSkill())}renderSkillkitCta(){let e=this.containerEl.createDiv("as-skillkit-cta"),a=e.createDiv("as-skillkit-icon");(0,K.setIcon)(a,"bar-chart-2"),e.createDiv({cls:"as-skillkit-title",text:"Unlock analytics"}),e.createDiv({cls:"as-skillkit-desc",text:"Install skillkit to see usage stats, stale badges, and heavy skill warnings."}),e.createDiv("as-skillkit-cmd").createEl("code",{text:"npm i -g @crafter/skillkit"}),e.createEl("a",{cls:"as-skillkit-link",text:"Learn more",href:"https://www.npmjs.com/package/@crafter/skillkit"}).addEventListener("click",r=>{r.preventDefault(),ut("https://www.npmjs.com/package/@crafter/skillkit")})}renderConversationFilters(){if(!this.conversationStore)return;let e=this.conversationStore.getProjectCounts();if(e.size>0){let a=this.containerEl.createDiv("as-sidebar-section");a.createDiv({cls:"as-sidebar-title",text:"Projects"});let s=a.createDiv("as-sidebar-item"),i=this.conversationStore.filter;i.kind==="all-conversations"&&s.addClass("is-active");let r=s.createSpan("as-sidebar-icon");(0,K.setIcon)(r,"layers"),s.createSpan({cls:"as-sidebar-label",text:"All"}),s.createSpan({cls:"as-sidebar-count",text:String(this.conversationStore.allItems.length)}),s.addEventListener("click",()=>{this.conversationStore.setFilter({kind:"all-conversations"})});let n=a.createDiv("as-sidebar-item");i.kind==="conversation-favorites"&&n.addClass("is-active");let o=n.createSpan("as-sidebar-icon");(0,K.setIcon)(o,"star"),n.createSpan({cls:"as-sidebar-label",text:"Favorites"}),n.addEventListener("click",()=>{this.conversationStore.setFilter({kind:"conversation-favorites"})});for(let[l,O]of Array.from(e.entries()).sort((c,d)=>d[1]-c[1])){let c=a.createDiv("as-sidebar-item");i.kind==="conversation-project"&&i.project===l&&c.addClass("is-active");let d=c.createSpan("as-sidebar-icon");(0,K.setIcon)(d,"folder-git-2"),c.createSpan({cls:"as-sidebar-label",text:l}),c.createSpan({cls:"as-sidebar-count",text:String(O)}),c.addEventListener("click",()=>{this.conversationStore.setFilter({kind:"conversation-project",project:l})})}}}isActive(e){let a=this.store.filter;return a.kind!==e.kind?!1:a.kind==="tool"&&e.kind==="tool"?a.toolId===e.toolId:a.kind==="type"&&e.kind==="type"?a.type===e.type:a.kind==="collection"&&e.kind==="collection"?a.name===e.name:a.kind==="project"&&e.kind==="project"?a.project===e.project:!0}};var ye=require("obsidian");var gt=class{containerEl;store;onSelect;selectedId=null;inputEl=null;listEl=null;typeFilter=null;sortBy="name";openDropdown=null;menuDropdownEl=null;outsideClickCleanup=null;constructor(e,a,s){this.containerEl=e,this.store=a,this.onSelect=s}setSelected(e){this.selectedId=e}render(){if(!this.inputEl){this.containerEl.empty(),this.containerEl.addClass("as-list");let e=this.containerEl.createDiv("as-search");this.inputEl=e.createEl("input",{type:"text",placeholder:"Search skills...",cls:"as-search-input"}),this.inputEl.addEventListener("input",()=>{this.store.setSearch(this.inputEl.value)});let a=e.createDiv("as-conv-search-actions"),s=a.createEl("button",{cls:"as-conv-icon-btn"}),i=s.createSpan("as-conv-icon-btn-icon");(0,ye.setIcon)(i,"file-search"),s.setAttribute("aria-label","Search file content"),this.store.deepSearch&&s.addClass("has-active"),s.addEventListener("click",()=>{this.store.setDeepSearch(!this.store.deepSearch),s.toggleClass("has-active",this.store.deepSearch)});let r=a.createDiv("as-conv-dropdown-wrap"),n=r.createEl("button",{cls:"as-conv-icon-btn"}),o=n.createSpan("as-conv-icon-btn-icon");(0,ye.setIcon)(o,"sliders-horizontal"),n.setAttribute("aria-label","Filter & sort"),(this.typeFilter||this.sortBy!=="name")&&n.addClass("has-active"),this.menuDropdownEl=r.createDiv("as-conv-dropdown as-conv-dropdown-wide"),this.renderMenuDropdown(),n.addEventListener("click",l=>{if(l.stopPropagation(),this.openDropdown==="menu")this.closeDropdown();else{this.closeDropdown(),this.openDropdown="menu",this.menuDropdownEl?.addClass("is-open");let O=c=>{r.contains(c.target)||this.closeDropdown()};window.setTimeout(()=>activeDocument.addEventListener("click",O),0),this.outsideClickCleanup=()=>activeDocument.removeEventListener("click",O)}}),this.listEl=this.containerEl.createDiv("as-list-items")}this.inputEl.value=this.store.searchQuery,this.renderList()}closeDropdown(){this.openDropdown=null,this.menuDropdownEl?.removeClass("is-open"),this.outsideClickCleanup&&(this.outsideClickCleanup(),this.outsideClickCleanup=null)}renderMenuDropdown(){if(!this.menuDropdownEl)return;this.menuDropdownEl.empty(),this.menuDropdownEl.createDiv("as-conv-dropdown-header").setText("Sort");let a=[{label:"Name",value:"name",icon:"arrow-up-az"},{label:"Usage",value:"usage",icon:"trending-up"}];for(let r of a){let n=this.menuDropdownEl.createDiv(`as-conv-dropdown-item ${this.sortBy===r.value?"is-active":""}`),o=n.createSpan("as-conv-dropdown-check");this.sortBy===r.value&&(0,ye.setIcon)(o,"check"),n.createSpan({cls:"as-conv-dropdown-item-label",text:r.label}),n.addEventListener("click",l=>{l.stopPropagation(),this.sortBy=r.value,this.updateMenuBtnState(),this.renderMenuDropdown(),this.renderList()})}this.menuDropdownEl.createDiv("as-conv-dropdown-header").setText("Filter");let i=[{id:null,label:"All"},{id:"stale",label:"Stale"},{id:"heavy",label:"Heavy"},{id:"oversized",label:"Oversized"},{id:"conflict",label:"Conflicts"}];for(let r of i){let n=this.typeFilter===r.id,o=this.menuDropdownEl.createDiv(`as-conv-dropdown-item ${n?"is-active":""}`),l=o.createSpan("as-conv-dropdown-check");n&&(0,ye.setIcon)(l,"check"),o.createSpan({cls:"as-conv-dropdown-item-label",text:r.label}),o.addEventListener("click",O=>{O.stopPropagation(),this.typeFilter=r.id,this.updateMenuBtnState(),this.renderMenuDropdown(),this.renderList()})}}updateMenuBtnState(){let e=this.containerEl.querySelector(".as-conv-dropdown-wrap .as-conv-icon-btn");if(e){let a=this.typeFilter!==null||this.sortBy!=="name";e.toggleClass("has-active",a)}}renderList(){if(!this.listEl)return;this.listEl.empty();let e=this.store.filteredItems;if(this.typeFilter)switch(this.typeFilter){case"stale":e=e.filter(a=>a.usage?.isStale);break;case"heavy":e=e.filter(a=>a.usage?.isHeavy);break;case"oversized":e=e.filter(a=>a.warnings?.oversized);break;case"conflict":e=e.filter(a=>a.conflicts&&a.conflicts.length>0);break}if(this.sortBy==="usage"&&(e=[...e].sort((a,s)=>(s.usage?.uses??0)-(a.usage?.uses??0))),this.typeFilter){let a={stale:"Stale",heavy:"Heavy",oversized:"Oversized",conflict:"Conflict"},s=this.listEl.createDiv("as-active-filter");s.createSpan({text:`Showing: ${a[this.typeFilter]??this.typeFilter}`}),s.createSpan({cls:"as-filter-clear",text:"Clear"}).addEventListener("click",()=>{this.typeFilter=null,this.updateMenuBtnState(),this.renderList()})}if(e.length===0){this.listEl.createDiv({cls:"as-list-empty",text:"No skills found"});return}for(let a of e)this.renderCard(this.listEl,a)}renderCard(e,a){let s=e.createDiv("as-skill-card");a.id===this.selectedId&&s.addClass("is-selected");let i=s.createDiv("as-skill-header");if(i.createSpan({cls:"as-skill-name",text:a.name}),a.isFavorite){let n=i.createSpan("as-skill-star");(0,ye.setIcon)(n,"star")}a.description&&s.createDiv({cls:"as-skill-desc",text:a.description.length>80?a.description.slice(0,80)+"...":a.description});let r=s.createDiv("as-skill-meta");r.createSpan({cls:`as-type-tag as-type-${a.type}`,text:a.type});for(let n of a.tools){let o=G.find(O=>O.id===n);if(!o)continue;let l=r.createSpan("as-tool-badge");l.title=o.name,l.setAttribute("aria-label",o.name),l.setCssProps({"--tool-color":o.color}),U[n]?oe(l,n,12):l.addClass("as-tool-badge-dot")}a.usage&&(a.usage.uses>0&&r.createSpan({cls:"as-usage-badge",text:`${a.usage.uses}`,attr:{"aria-label":`Used ${a.usage.uses} times`}}),a.usage.isStale&&r.createSpan({cls:"as-badge-stale",text:"stale"}),a.usage.isHeavy&&r.createSpan({cls:"as-badge-heavy",text:"heavy"})),a.warnings?.oversized&&r.createSpan({cls:"as-badge-warn",text:"oversized"}),a.conflicts&&a.conflicts.length>0&&r.createSpan({cls:"as-badge-conflict",text:"conflict"}),s.addEventListener("click",()=>{this.selectedId=a.id,this.onSelect(a)}),s.addEventListener("contextmenu",n=>{n.preventDefault();let o=new ye.Menu;o.addItem(l=>l.setTitle("Reveal in system explorer").setIcon("folder-open").onClick(()=>ht(a.filePath))),o.addItem(l=>l.setTitle("Copy file path").setIcon("copy").onClick(()=>navigator.clipboard.writeText(a.filePath))),o.showAtMouseEvent(n)})}};var V=require("obsidian"),Ur=require("fs");var _e=require("child_process"),le=require("fs"),$=require("path"),Qt=require("os"),Mn=new Set(["Read","Write","Edit","MultiEdit","Bash","Glob","Grep","WebSearch","WebFetch","TodoRead","TodoWrite","Task","Agent","Skill","LSP","NotebookEdit","AskFollowupQuestion","AttemptCompletion","SearchReplace","InsertCodeBlock","ReadImages","ExecuteCommand","ListFiles","SearchFiles","ReadFile","WriteFile","ReplaceInFile","ListCodeDefinitionNames","BrowserAction","UseMcp","shell","shell_command","update_plan","create_plan","read_file","write_file","execute_command","spawn_agent","write_stdin","multi_tool_use.parallel"]);function Vn(t){return!(Mn.has(t)||t.startsWith("mcp__")||t.startsWith("mcp_"))}var x=(0,Qt.homedir)(),H=(0,Qt.platform)()==="win32",qn=(0,$.join)(x,".skillkit","analytics.db"),la=H?["skillkit.cmd","skillkit.exe","skillkit"]:["skillkit"];function St(){let t=[];if(H){let a=process.env.APPDATA||(0,$.join)(x,"AppData","Roaming");t.push((0,$.join)(a,"npm"),(0,$.join)(x,".bun","bin"),(0,$.join)(x,"AppData","Local","npm"))}else t.push("/usr/local/bin","/opt/homebrew/bin",(0,$.join)(x,".local","bin"),(0,$.join)(x,".bun","bin"),(0,$.join)(x,".local","share","pnpm"),(0,$.join)(x,".volta","bin"),(0,$.join)(x,".yarn","bin"),(0,$.join)(x,".config","yarn","global","node_modules",".bin"),(0,$.join)(x,".fnm","aliases","default","bin"),(0,$.join)(x,".asdf","shims"),(0,$.join)(x,".proto","bin"));let e=H?(0,$.join)(x,"AppData","Roaming","nvm"):(0,$.join)(x,".nvm","versions","node");try{for(let a of(0,le.readdirSync)(e))t.push(H?(0,$.join)(e,a):(0,$.join)(e,a,"bin"))}catch{}if(!H){let a=(0,$.join)(x,".local","share","mise","installs");for(let s of["node","bun"])try{for(let i of(0,le.readdirSync)((0,$.join)(a,s)))t.push((0,$.join)(a,s,i,"bin"))}catch{}}return[...t,process.env.PATH||""].join($.delimiter)}function ys(t){try{return(0,_e.execSync)(`"${t}" help`,{encoding:"utf-8",timeout:5e3,env:{...process.env,NO_COLOR:"1",PATH:St()},stdio:["pipe","pipe","pipe"],shell:H?"cmd.exe":void 0}).includes("Analytics for AI agent skills")}catch{return!1}}function Wn(){let t=[],e=[];if(H){let s=process.env.APPDATA||(0,$.join)(x,"AppData","Roaming");e.push((0,$.join)(s,"npm"),(0,$.join)(x,".bun","bin"),(0,$.join)(x,"AppData","Local","npm"))}else e.push("/usr/local/bin","/opt/homebrew/bin",(0,$.join)(x,".local","bin"),(0,$.join)(x,".bun","bin"),(0,$.join)(x,".local","share","mise","shims"),(0,$.join)(x,".local","share","pnpm"),(0,$.join)(x,".volta","bin"),(0,$.join)(x,".yarn","bin"),(0,$.join)(x,".config","yarn","global","node_modules",".bin"),(0,$.join)(x,".fnm","aliases","default","bin"),(0,$.join)(x,".asdf","shims"),(0,$.join)(x,".proto","bin"));for(let s of e)for(let i of la){let r=(0,$.join)(s,i);(0,le.existsSync)(r)&&t.push(r)}let a=H?(0,$.join)(x,"AppData","Roaming","nvm"):(0,$.join)(x,".nvm","versions","node");try{for(let s of(0,le.readdirSync)(a)){let i=H?(0,$.join)(a,s):(0,$.join)(a,s,"bin");for(let r of la){let n=(0,$.join)(i,r);(0,le.existsSync)(n)&&t.push(n)}}}catch{}if(!H){let s=(0,$.join)(x,".local","share","mise","installs");for(let i of["node","bun"])try{for(let r of(0,le.readdirSync)((0,$.join)(s,i))){let n=(0,$.join)(s,i,r,"bin","skillkit");(0,le.existsSync)(n)&&t.push(n)}}catch{}}if(t.length===0&&!H){let s=[["pnpm","bin","-g"],["yarn","global","bin"],["npm","bin","-g"]];for(let i of s)try{let r=(0,_e.execSync)(i.join(" "),{encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]}).trim();if(r)for(let n of la){let o=(0,$.join)(r,n);if((0,le.existsSync)(o)&&ys(o))return o}}catch{}}for(let s of t)if(ys(s))return s;return null}var Oa;function vt(){return Oa===void 0&&(Oa=Wn()),Oa}function ee(){return vt()!==null||(0,le.existsSync)(qn)}function De(t){let e=vt();if(!e)return null;try{let a=(0,_e.execSync)(`${e} ${t} --json`,{encoding:"utf-8",timeout:15e3,env:{...process.env,NO_COLOR:"1",PATH:St()},stdio:["pipe","pipe","pipe"],shell:H?"cmd.exe":void 0}).trim();return ws(a)}catch{return null}}function ws(t){let e=t.indexOf("{"),a=t.indexOf("["),s=e===-1?a:a===-1?e:Math.min(e,a);return s===-1?null:JSON.parse(t.slice(s))}function ca(t){let e=vt();return e?new Promise(a=>{(0,_e.exec)(`${e} ${t} --json`,{encoding:"utf-8",timeout:15e3,env:{...process.env,NO_COLOR:"1",PATH:St()},shell:H?"cmd.exe":void 0},(s,i)=>{if(s){a(null);return}try{a(ws(String(i).trim()))}catch{a(null)}})}):Promise.resolve(null)}function xs(t){if(!ee())return[];let e=De(`trace --list --skill ${t} --limit 5`);return Array.isArray(e)?e.map(a=>({traceId:a.trace_id,timestamp:a.timestamp,tokens:a.tokens_total,cost:a.cost_estimate,duration:a.duration_ms,model:a.model||"unknown"})):[]}async function Zs(){let t=new Map;if(!ee())return t;let e=await ca("stats");if(!e?.top_skills)return t;let a=Date.now();for(let s of e.top_skills){if(!Vn(s.name))continue;let i=s.daily.length>0?s.daily[s.daily.length-1]?.date:null,r=null;i&&(r=Math.floor((a-new Date(i).getTime())/(1e3*60*60*24))),t.set(s.name,{uses:s.total,lastUsed:i||null,daysSinceUsed:r,isStale:r!==null&&r>30,isHeavy:!1,daily:s.daily})}return t}async function Ts(){let t=new Map;if(!ee())return t;let e=await ca("conflicts --dry-run");if(!e||!("pairs"in e))return t;for(let a of e.pairs)t.has(a.skill_a)||t.set(a.skill_a,[]),t.has(a.skill_b)||t.set(a.skill_b,[]),t.get(a.skill_a).push({skillName:a.skill_b,similarity:a.similarity}),t.get(a.skill_b).push({skillName:a.skill_a,similarity:a.similarity});return t}async function Xs(){if(!ee())return{oversized:[],longDesc:[]};let t=await ca("health");return t?.warnings?{oversized:t.warnings.oversized||[],longDesc:t.warnings.long_descriptions||[]}:{oversized:[],longDesc:[]}}function ze(t){let e=vt();if(!e)return{success:!1,output:"skillkit not found"};try{return{success:!0,output:(0,_e.execSync)(`${e} ${t}`,{encoding:"utf-8",timeout:3e4,env:{...process.env,NO_COLOR:"1",PATH:St()},stdio:["pipe","pipe","pipe"],shell:H?"cmd.exe":void 0}).trim()}}catch(a){return{success:!1,output:a instanceof Error?a.message:"unknown error"}}}function da(t){if(!t)return"never";let e=Date.now()-new Date(t).getTime(),a=Math.floor(e/6e4);if(a<60)return`${a}m ago`;let s=Math.floor(a/60);if(s<24)return`${s}h ago`;let i=Math.floor(s/24);return i<30?`${i}d ago`:`${Math.floor(i/30)}mo ago`}function Cs(t,e,a=48,s=16){if(e.length===0)return;let i=Math.max(...e,1),r=e.map((l,O)=>{let c=O/(e.length-1||1)*a,d=s-l/i*s;return`${c.toFixed(1)},${d.toFixed(1)}`}),n=createSvg("svg");n.setAttribute("viewBox",`0 0 ${a} ${s}`),n.setAttribute("width",String(a)),n.setAttribute("height",String(s)),n.classList.add("as-sparkline");let o=createSvg("polyline");o.setAttribute("points",r.join(" ")),o.setAttribute("fill","none"),o.setAttribute("stroke","currentColor"),o.setAttribute("stroke-width","1.5"),o.setAttribute("stroke-linecap","round"),o.setAttribute("stroke-linejoin","round"),n.appendChild(o),t.appendChild(n)}var _s=require("obsidian");function je(t,e,a,s){new pa(t,e,a,s).open()}var pa=class extends _s.Modal{title;message;onConfirm;constructor(e,a,s,i){super(e),this.title=a,this.message=s,this.onConfirm=i}onOpen(){let{contentEl:e}=this;e.addClass("as-confirm-modal"),e.createEl("p",{cls:"as-confirm-title",text:this.title}),e.createEl("p",{cls:"as-confirm-message",text:this.message});let a=e.createDiv("as-confirm-buttons");a.createEl("button",{cls:"as-confirm-cancel",text:"Cancel"}).addEventListener("click",()=>this.close()),a.createEl("button",{cls:"as-confirm-action mod-warning",text:"Confirm"}).addEventListener("click",()=>{this.close(),this.onConfirm()})}onClose(){this.contentEl.empty()}};var I=require("@codemirror/view"),qr=require("@codemirror/state"),ue=require("@codemirror/language"),xe=require("@codemirror/commands"),Rt=require("@codemirror/autocomplete"),Wr=require("@codemirror/search"),Lt=require("@codemirror/lint");var W=require("@codemirror/state"),Et=require("@codemirror/view"),_=require("@codemirror/language"),wr=require("@codemirror/autocomplete");var E=require("@lezer/common"),b=require("@lezer/highlight"),kt=class t{static create(e,a,s,i,r){let n=i+(i<<8)+e+(a<<4)|0;return new t(e,a,s,n,r,[],[])}constructor(e,a,s,i,r,n,o){this.type=e,this.value=a,this.from=s,this.hash=i,this.end=r,this.children=n,this.positions=o,this.hashProp=[[E.NodeProp.contextHash,i]]}addChild(e,a){e.prop(E.NodeProp.contextHash)!=this.hash&&(e=new E.Tree(e.type,e.children,e.positions,e.length,this.hashProp)),this.children.push(e),this.positions.push(a)}toTree(e,a=this.end){let s=this.children.length-1;return s>=0&&(a=Math.max(a,this.positions[s]+this.children[s].length+this.from)),new E.Tree(e.types[this.type],this.children,this.positions,a-this.from).balance({makeTree:(i,r,n)=>new E.Tree(E.NodeType.none,i,r,n,this.hashProp)})}},h;(function(t){t[t.Document=1]="Document",t[t.CodeBlock=2]="CodeBlock",t[t.FencedCode=3]="FencedCode",t[t.Blockquote=4]="Blockquote",t[t.HorizontalRule=5]="HorizontalRule",t[t.BulletList=6]="BulletList",t[t.OrderedList=7]="OrderedList",t[t.ListItem=8]="ListItem",t[t.ATXHeading1=9]="ATXHeading1",t[t.ATXHeading2=10]="ATXHeading2",t[t.ATXHeading3=11]="ATXHeading3",t[t.ATXHeading4=12]="ATXHeading4",t[t.ATXHeading5=13]="ATXHeading5",t[t.ATXHeading6=14]="ATXHeading6",t[t.SetextHeading1=15]="SetextHeading1",t[t.SetextHeading2=16]="SetextHeading2",t[t.HTMLBlock=17]="HTMLBlock",t[t.LinkReference=18]="LinkReference",t[t.Paragraph=19]="Paragraph",t[t.CommentBlock=20]="CommentBlock",t[t.ProcessingInstructionBlock=21]="ProcessingInstructionBlock",t[t.Escape=22]="Escape",t[t.Entity=23]="Entity",t[t.HardBreak=24]="HardBreak",t[t.Emphasis=25]="Emphasis",t[t.StrongEmphasis=26]="StrongEmphasis",t[t.Link=27]="Link",t[t.Image=28]="Image",t[t.InlineCode=29]="InlineCode",t[t.HTMLTag=30]="HTMLTag",t[t.Comment=31]="Comment",t[t.ProcessingInstruction=32]="ProcessingInstruction",t[t.Autolink=33]="Autolink",t[t.HeaderMark=34]="HeaderMark",t[t.QuoteMark=35]="QuoteMark",t[t.ListMark=36]="ListMark",t[t.LinkMark=37]="LinkMark",t[t.EmphasisMark=38]="EmphasisMark",t[t.CodeMark=39]="CodeMark",t[t.CodeText=40]="CodeText",t[t.CodeInfo=41]="CodeInfo",t[t.LinkTitle=42]="LinkTitle",t[t.LinkLabel=43]="LinkLabel",t[t.URL=44]="URL"})(h||(h={}));var ma=class{constructor(e,a){this.start=e,this.content=a,this.marks=[],this.parsers=[]}},fa=class{constructor(){this.text="",this.baseIndent=0,this.basePos=0,this.depth=0,this.markers=[],this.pos=0,this.indent=0,this.next=-1}forward(){this.basePos>this.pos&&this.forwardInner()}forwardInner(){let e=this.skipSpace(this.basePos);this.indent=this.countIndent(e,this.pos,this.indent),this.pos=e,this.next=e==this.text.length?-1:this.text.charCodeAt(e)}skipSpace(e){return Ke(this.text,e)}reset(e){for(this.text=e,this.baseIndent=this.basePos=this.pos=this.indent=0,this.forwardInner(),this.depth=1;this.markers.length;)this.markers.pop()}moveBase(e){this.basePos=e,this.baseIndent=this.countIndent(e,this.pos,this.indent)}moveBaseColumn(e){this.baseIndent=e,this.basePos=this.findColumn(e)}addMarker(e){this.markers.push(e)}countIndent(e,a=0,s=0){for(let i=a;i=e.stack[a.depth+1].value+a.baseIndent)return!0;if(a.indent>=a.baseIndent+4)return!1;let s=(t.type==h.OrderedList?Za:xa)(a,e,!1);return s>0&&(t.type!=h.BulletList||wa(a,e,!1)<0)&&a.text.charCodeAt(a.pos+s-1)==t.value}var Ws={[h.Blockquote](t,e,a){return a.next!=62?!1:(a.markers.push(y(h.QuoteMark,e.lineStart+a.pos,e.lineStart+a.pos+1)),a.moveBase(a.pos+(re(a.text.charCodeAt(a.pos+1))?2:1)),t.end=e.lineStart+a.text.length,!0)},[h.ListItem](t,e,a){return a.indent-1?!1:(a.moveBaseColumn(a.baseIndent+t.value),!0)},[h.OrderedList]:js,[h.BulletList]:js,[h.Document](){return!0}};function re(t){return t==32||t==9||t==10||t==13}function Ke(t,e=0){for(;ea&&re(t.charCodeAt(e-1));)e--;return e}function Is(t){if(t.next!=96&&t.next!=126)return-1;let e=t.pos+1;for(;e-1&&t.depth==e.stack.length&&e.parser.leafBlockParsers.indexOf(Ks.SetextHeading)>-1||s<3?-1:1}function Us(t,e){for(let a=t.stack.length-1;a>=0;a--)if(t.stack[a].type==e)return!0;return!1}function xa(t,e,a){return(t.next==45||t.next==43||t.next==42)&&(t.pos==t.text.length-1||re(t.text.charCodeAt(t.pos+1)))&&(!a||Us(e,h.BulletList)||t.skipSpace(t.pos+2)=48&&i<=57;){s++;if(s==t.text.length)return-1;i=t.text.charCodeAt(s)}return s==t.pos||s>t.pos+9||i!=46&&i!=41||st.pos+1||t.next!=49)?-1:s+1-t.pos}function Ns(t){if(t.next!=35)return-1;let e=t.pos+1;for(;e6?-1:a}function Bs(t){if(t.next!=45&&t.next!=61||t.indent>=t.baseIndent+4)return-1;let e=t.pos+1;for(;e/,Fs=/\?>/,Qa=[[/^<(?:script|pre|style)(?:\s|>|$)/i,/<\/(?:script|pre|style)>/i],[/^\s*/,Fs=/\?>/,Qa=[[/^<(?:script|pre|style)(?:\s|>|$)/i,/<\/(?:script|pre|style)>/i],[/^\s*"}},indentOnInput:/^\s*<\/\w+\W$/,wordChars:"-_"}}),_t=br.configure({wrap:La(vr,$r)});function kr(t={}){let e="",a;t.matchClosingTags===!1&&(e="noMatch"),t.selfClosingTags===!0&&(e=(e?e+" ":"")+"selfClosing"),(t.nestedLanguages&&t.nestedLanguages.length||t.nestedAttributes&&t.nestedAttributes.length)&&(a=La((t.nestedLanguages||[]).concat(vr),(t.nestedAttributes||[]).concat($r)));let s=a?br.configure({wrap:a,dialect:e}):e?_t.configure({dialect:e}):_t;return new se.LanguageSupport(s,[_t.data.of({autocomplete:cO(t)}),t.autoCloseTags!==!1?pO:[],lr().support,Gi().support])}var dr=new Set("area base br col command embed frame hr img input keygen link meta param source track wbr menuitem".split(" ")),pO=pr.EditorView.inputHandler.of((t,e,a,s,i)=>{if(t.composing||t.state.readOnly||e!=a||s!=">"&&s!="/"||!_t.isActiveAt(t.state,e,-1))return!1;let r=i(),{state:n}=r,o=n.changeByRange(l=>{var O,c,d;let p=n.doc.sliceString(l.from-1,l.to)==s,{head:u}=l,g=(0,se.syntaxTree)(n).resolveInner(u,-1),f;if(p&&s==">"&&g.name=="EndTag"){let w=g.parent;if(((c=(O=w.parent)===null||O===void 0?void 0:O.lastChild)===null||c===void 0?void 0:c.name)!="CloseTag"&&(f=Me(n.doc,w.parent,u))&&!dr.has(f)){let P=u+(n.doc.sliceString(u,u+1)===">"?1:0),Z=`${f}>`;return{range:l,changes:{from:u,to:P,insert:Z}}}}else if(p&&s=="/"&&g.name=="IncompleteCloseTag"){let w=g.parent;if(g.from==u-2&&((d=w.lastChild)===null||d===void 0?void 0:d.name)!="CloseTag"&&(f=Me(n.doc,w,u))&&!dr.has(f)){let P=u+(n.doc.sliceString(u,u+1)===">"?1:0),Z=`${f}>`;return{range:ur.EditorSelection.cursor(u+Z.length,-1),changes:{from:u,to:P,insert:Z}}}}return{range:l}});return o.changes.empty?!1:(t.dispatch([r,n.update(o,{userEvent:"input.complete",scrollIntoView:!0})]),!0)});var xr=require("@lezer/common"),Zr=(0,_.defineLanguageFacet)({commentTokens:{block:{open:""}}}),Tr=new xr.NodeProp,Xr=li.configure({props:[_.foldNodeProp.add(t=>!t.is("Block")||t.is("Document")||Ja(t)!=null||uO(t)?void 0:(e,a)=>({from:a.doc.lineAt(e.from).to,to:e.to})),Tr.add(Ja),_.indentNodeProp.add({Document:()=>null}),_.languageDataProp.add({Document:Zr})]});function Ja(t){let e=/^(?:ATX|Setext)Heading(\d)$/.exec(t.name);return e?+e[1]:void 0}function uO(t){return t.name=="OrderedList"||t.name=="BulletList"}function hO(t,e){let a=t;for(;;){let s=a.nextSibling,i;if(!s||(i=Ja(s.type))!=null&&i<=e)break;a=s}return a.to}var mO=_.foldService.of((t,e,a)=>{for(let s=(0,_.syntaxTree)(t).resolveInner(a,-1);s&&!(s.froma)return{from:a,to:r}}return null});function Ka(t){return new _.Language(Zr,t,[],"markdown")}var fO=Ka(Xr),gO=Xr.configure([di,hi,ui,mi,{props:[_.foldNodeProp.add({Table:(t,e)=>({from:e.doc.lineAt(t.from).to,to:t.to})})]}]),jt=Ka(gO);function QO(t,e){return a=>{if(a&&t){let s=null;if(a=/\S*/.exec(a)[0],typeof t=="function"?s=t(a):s=_.LanguageDescription.matchLanguageName(t,a,!0),s instanceof _.LanguageDescription)return s.support?s.support.language.parser:_.ParseContext.getSkippingParser(s.load());if(s)return s.parser}return e?e.parser:null}}var lt=class{constructor(e,a,s,i,r,n,o){this.node=e,this.from=a,this.to=s,this.spaceBefore=i,this.spaceAfter=r,this.type=n,this.item=o}blank(e,a=!0){let s=this.spaceBefore+(this.node.name=="Blockquote"?">":"");if(e!=null){for(;s.length0;i--)s+=" ";return s+(a?this.spaceAfter:"")}}marker(e,a){let s=this.node.name=="OrderedList"?String(+_r(this.item,e)[2]+a):"";return this.spaceBefore+s+this.type+this.spaceAfter}};function Cr(t,e){let a=[],s=[];for(let i=t;i;i=i.parent){if(i.name=="FencedCode")return s;(i.name=="ListItem"||i.name=="Blockquote")&&a.push(i)}for(let i=a.length-1;i>=0;i--){let r=a[i],n,o=e.lineAt(r.from),l=r.from-o.from;if(r.name=="Blockquote"&&(n=/^ *>( ?)/.exec(o.text.slice(l))))s.push(new lt(r,l,l+n[0].length,"",n[1],">",null));else if(r.name=="ListItem"&&r.parent.name=="OrderedList"&&(n=/^( *)\d+([.)])( *)/.exec(o.text.slice(l)))){let O=n[3],c=n[0].length;O.length>=4&&(O=O.slice(0,O.length-4),c-=4),s.push(new lt(r.parent,l,l+c,n[1],O,n[2],r))}else if(r.name=="ListItem"&&r.parent.name=="BulletList"&&(n=/^( *)([-+*])( {1,4}\[[ xX]\])?( +)/.exec(o.text.slice(l)))){let O=n[4],c=n[0].length;O.length>4&&(O=O.slice(0,O.length-4),c-=4);let d=n[2];n[3]&&(d+=n[3].replace(/[xX]/," ")),s.push(new lt(r.parent,l,l+c,n[1],O,d,r))}}return s}function _r(t,e){return/^(\s*)(\d+)(?=[.)])/.exec(e.sliceString(t.from,t.from+10))}function Ha(t,e,a,s=0){for(let i=-1,r=t;;){if(r.name=="ListItem"){let o=_r(r,e),l=+o[2];if(i>=0){if(l!=i+1)return;a.push({from:r.from+o[1].length,to:r.from+o[0].length,insert:String(i+2+s)})}i=l}let n=r.nextSibling;if(!n)break;r=n}}function es(t,e){let a=/^[ \t]*/.exec(t)[0].length;if(!a||e.facet(_.indentUnit)!=" ")return t;let s=(0,W.countColumn)(t,4,a),i="";for(let r=s;r>0;)r>=4?(i+=" ",r-=4):(i+=" ",r--);return i+t.slice(a)}var SO=(t={})=>({state:e,dispatch:a})=>{let s=(0,_.syntaxTree)(e),{doc:i}=e,r=null,n=e.changeByRange(o=>{if(!o.empty||!jt.isActiveAt(e,o.from,-1)&&!jt.isActiveAt(e,o.from,1))return r={range:o};let l=o.from,O=i.lineAt(l),c=Cr(s.resolveInner(l,-1),i);for(;c.length&&c[c.length-1].from>l-O.from;)c.pop();if(!c.length)return r={range:o};let d=c[c.length-1];if(d.to-d.spaceAfter.length>l-O.from)return r={range:o};let p=l>=d.to-d.spaceAfter.length&&!/\S/.test(O.text.slice(d.to));if(d.item&&p){let P=d.node.firstChild,Z=d.node.getChild("ListItem","ListItem");if(P.to>=l||Z&&Z.to0&&!/[^\s>]/.test(i.lineAt(O.from-1).text)||t.nonTightLists===!1){let Y=c.length>1?c[c.length-2]:null,Qe,Xe="";Y&&Y.item?(Qe=O.from+Y.from,Xe=Y.marker(i,1)):Qe=O.from+(Y?Y.to:0);let He=[{from:Qe,to:l,insert:Xe}];return d.node.name=="OrderedList"&&Ha(d.item,i,He,-2),Y&&Y.node.name=="OrderedList"&&Ha(Y.item,i,He),{range:W.EditorSelection.cursor(Qe+Xe.length),changes:He}}else{let Y=yr(c,e,O);return{range:W.EditorSelection.cursor(l+Y.length+1),changes:{from:O.from,insert:Y+e.lineBreak}}}}if(d.node.name=="Blockquote"&&p&&O.from){let P=i.lineAt(O.from-1),Z=/>\s*$/.exec(P.text);if(Z&&Z.index==d.from){let Y=e.changes([{from:P.from+Z.index,to:P.to},{from:O.from+d.from,to:O.to}]);return{range:o.map(Y),changes:Y}}}let u=[];d.node.name=="OrderedList"&&Ha(d.item,i,u);let g=d.item&&d.item.from]*/.exec(O.text)[0].length>=d.to)for(let P=0,Z=c.length-1;P<=Z;P++)f+=P==Z&&!g?c[P].marker(i,1):c[P].blank(PO.from&&/\s/.test(O.text.charAt(w-O.from-1));)w--;return f=es(f,e),$O(d.node,e.doc)&&(f=yr(c,e,O)+e.lineBreak+f),u.push({from:w,to:l,insert:e.lineBreak+f}),{range:W.EditorSelection.cursor(w+f.length+1),changes:u}});return r?!1:(a(e.update(n,{scrollIntoView:!0,userEvent:"input"})),!0)},vO=SO();function Pr(t){return t.name=="QuoteMark"||t.name=="ListMark"}function $O(t,e){if(t.name!="OrderedList"&&t.name!="BulletList")return!1;let a=t.firstChild,s=t.getChild("ListItem","ListItem");if(!s)return!1;let i=e.lineAt(a.to),r=e.lineAt(s.from),n=/^[\s>]*$/.test(i.text);return i.number+(n?0:1){let a=(0,_.syntaxTree)(t),s=null,i=t.changeByRange(r=>{let n=r.from,{doc:o}=t;if(r.empty&&jt.isActiveAt(t,r.from)){let l=o.lineAt(n),O=Cr(bO(a,n),o);if(O.length){let c=O[O.length-1],d=c.to-c.spaceAfter.length+(c.spaceAfter?1:0);if(n-l.from>d&&!/\S/.test(l.text.slice(d,n-l.from)))return{range:W.EditorSelection.cursor(l.from+d),changes:{from:l.from+d,to:n}};if(n-l.from==d&&(!c.item||l.from<=c.item.from||!/\S/.test(l.text.slice(0,c.to)))){let p=l.from+c.from;if(c.item&&c.node.from{var a;let{main:s}=e.state.selection;if(s.empty)return!1;let i=(a=t.clipboardData)===null||a===void 0?void 0:a.getData("text/plain");if(!i||!/^(https?:\/\/|mailto:|xmpp:|www\.)/.test(i)||(/^www\./.test(i)&&(i="https://"+i),!jt.isActiveAt(e.state,s.from,1)))return!1;let r=(0,_.syntaxTree)(e.state),n=!1;return r.iterate({from:s.from,to:s.to,enter:o=>{(o.from>s.from||xO.test(o.name))&&(n=!0)},leave:o=>{o.to{let e=[],a=t.state.doc.toString();if(!a.startsWith("---"))return e;let s=a.indexOf(`
+}`,{label:"class",detail:"definition",type:"keyword"}),(0,A.snippetCompletion)('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),(0,A.snippetCompletion)('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],Jl=tr.concat([(0,A.snippetCompletion)("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),(0,A.snippetCompletion)("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),(0,A.snippetCompletion)("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),Hi=new Ct.NodeWeakMap,ar=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function nt(t){return(e,a)=>{let s=e.node.getChild("VariableDefinition");return s&&a(s,t),!0}}var Kl=["FunctionDeclaration"],eO={FunctionDeclaration:nt("function"),ClassDeclaration:nt("class"),ClassExpression:()=>!0,EnumDeclaration:nt("constant"),TypeAliasDeclaration:nt("type"),NamespaceDeclaration:nt("namespace"),VariableDefinition(t,e){t.matchContext(Kl)||e(t,"variable")},TypeDefinition(t,e){e(t,"type")},__proto__:null};function sr(t,e){let a=Hi.get(e);if(a)return a;let s=[],i=!0;function r(n,o){let l=t.sliceString(n.from,n.to);s.push({label:l,type:o})}return e.cursor(Ct.IterMode.IncludeAnonymous).iterate(n=>{if(i)i=!1;else if(n.name){let o=eO[n.name];if(o&&o(n,r)||ar.has(n.name))return!1}else if(n.to-n.from>8192){for(let o of sr(t,n.node))s.push(o);return!1}}),Hi.set(e,s),s}var Fi=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,ir=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function tO(t){let e=(0,R.syntaxTree)(t.state).resolveInner(t.pos,-1);if(ir.indexOf(e.name)>-1)return null;let a=e.name=="VariableName"||e.to-e.from<20&&Fi.test(t.state.sliceDoc(e.from,e.to));if(!a&&!t.explicit)return null;let s=[];for(let i=e;i;i=i.parent)ar.has(i.name)&&(s=s.concat(sr(t.state.doc,i)));return{options:s,from:a?e.from:t.pos,validFor:Fi}}var Oe=R.LRLanguage.define({name:"javascript",parser:Bi.configure({props:[R.indentNodeProp.add({IfStatement:(0,R.continuedIndent)({except:/^\s*({|else\b)/}),TryStatement:(0,R.continuedIndent)({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:R.flatIndent,SwitchBody:t=>{let e=t.textAfter,a=/^\s*\}/.test(e),s=/^\s*(case|default)\b/.test(e);return t.baseIndent+(a?0:s?1:2)*t.unit},Block:(0,R.delimitedIndent)({closing:"}"}),ArrowFunction:t=>t.baseIndent+t.unit,"TemplateString BlockComment":()=>null,"Statement Property":(0,R.continuedIndent)({except:/^\s*{/}),JSXElement(t){let e=/^\s*<\//.test(t.textAfter);return t.lineIndent(t.node.from)+(e?0:t.unit)},JSXEscape(t){let e=/\s*\}/.test(t.textAfter);return t.lineIndent(t.node.from)+(e?0:t.unit)},"JSXOpenTag JSXSelfClosingTag"(t){return t.column(t.node.from)+t.unit}}),R.foldNodeProp.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":R.foldInside,BlockComment(t){return{from:t.from+2,to:t.to-2}},JSXElement(t){let e=t.firstChild;if(!e||e.name=="JSXSelfClosingTag")return null;let a=t.lastChild;return{from:e.to,to:a.type.isError?t.to:a.from}},"JSXSelfClosingTag JSXOpenTag"(t){var e;let a=(e=t.firstChild)===null||e===void 0?void 0:e.nextSibling,s=t.lastChild;return!a||a.type.isError?null:{from:a.to,to:s.type.isError?t.to:s.from}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),rr={test:t=>/^JSX/.test(t.name),facet:(0,R.defineLanguageFacet)({commentTokens:{block:{open:"{/*",close:"*/}"}}})},qa=Oe.configure({dialect:"ts"},"typescript"),Wa=Oe.configure({dialect:"jsx",props:[R.sublanguageProp.add(t=>t.isTop?[rr]:void 0)]}),Ia=Oe.configure({dialect:"jsx ts",props:[R.sublanguageProp.add(t=>t.isTop?[rr]:void 0)]},"typescript"),nr=t=>({label:t,type:"keyword"}),or="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(nr),aO=or.concat(["declare","implements","private","protected","public"].map(nr));function lr(t={}){let e=t.jsx?t.typescript?Ia:Wa:t.typescript?qa:Oe,a=t.typescript?Jl.concat(aO):tr.concat(or);return new R.LanguageSupport(e,[Oe.data.of({autocomplete:(0,A.ifNotIn)(ir,(0,A.completeFromList)(a))}),Oe.data.of({autocomplete:tO}),t.jsx?rO:[]])}function sO(t){for(;;){if(t.name=="JSXOpenTag"||t.name=="JSXSelfClosingTag"||t.name=="JSXFragmentTag")return t;if(t.name=="JSXEscape"||!t.parent)return null;t=t.parent}}function Ji(t,e,a=t.length){for(let s=e?.firstChild;s;s=s.nextSibling)if(s.name=="JSXIdentifier"||s.name=="JSXBuiltin"||s.name=="JSXNamespacedName"||s.name=="JSXMemberExpression")return t.sliceString(s.from,Math.min(s.to,a));return""}var iO=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),rO=er.EditorView.inputHandler.of((t,e,a,s,i)=>{if((iO?t.composing:t.compositionStarted)||t.state.readOnly||e!=a||s!=">"&&s!="/"||!Oe.isActiveAt(t.state,e,-1))return!1;let r=i(),{state:n}=r,o=n.changeByRange(l=>{var O;let{head:c}=l,d=(0,R.syntaxTree)(n).resolveInner(c-1,-1),p;if(d.name=="JSXStartTag"&&(d=d.parent),!(n.doc.sliceString(c-1,c)!=s||d.name=="JSXAttributeValue"&&d.to>c)){if(s==">"&&d.name=="JSXFragmentTag")return{range:l,changes:{from:c,insert:">"}};if(s=="/"&&d.name=="JSXStartCloseTag"){let u=d.parent,g=u.parent;if(g&&u.from==c-2&&((p=Ji(n.doc,g.firstChild,c))||((O=g.firstChild)===null||O===void 0?void 0:O.name)=="JSXFragmentTag")){let f=`${p}>`;return{range:Ki.EditorSelection.cursor(c+f.length,-1),changes:{from:c,insert:f}}}}else if(s==">"){let u=sO(d);if(u&&u.name=="JSXOpenTag"&&!/^\/?>|^<\//.test(n.doc.sliceString(c,c+2))&&(p=Ji(n.doc,u,c)))return{range:l,changes:{from:c,insert:`${p}>`}}}}return{range:l}});return o.changes.empty?!1:(t.dispatch([r,n.update(o,{userEvent:"input.complete",scrollIntoView:!0})]),!0)});var pr=require("@codemirror/view"),ur=require("@codemirror/state"),se=require("@codemirror/language"),ot=["_blank","_self","_top","_parent"],Ga=["ascii","utf-8","utf-16","latin1","latin1"],Ua=["get","post","put","delete"],Na=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],ae=["true","false"],S={},nO={a:{attrs:{href:null,ping:null,type:null,media:null,target:ot,hreflang:null}},abbr:S,address:S,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:["default","rect","circle","poly"]}},article:S,aside:S,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["autoplay"],loop:["loop"],controls:["controls"]}},b:S,base:{attrs:{href:null,target:ot}},bdi:S,bdo:S,blockquote:{attrs:{cite:null}},body:S,br:S,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["autofocus"],disabled:["autofocus"],formenctype:Na,formmethod:Ua,formnovalidate:["novalidate"],formtarget:ot,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:S,center:S,cite:S,code:S,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:["command","checkbox","radio"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:["disabled"],checked:["checked"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:["disabled"],multiple:["multiple"]}},datalist:{attrs:{data:null}},dd:S,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["open"]}},dfn:S,div:S,dl:S,dt:S,em:S,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["disabled"],form:null,name:null}},figcaption:S,figure:S,footer:S,form:{attrs:{action:null,name:null,"accept-charset":Ga,autocomplete:["on","off"],enctype:Na,method:Ua,novalidate:["novalidate"],target:ot}},h1:S,h2:S,h3:S,h4:S,h5:S,h6:S,head:{children:["title","base","link","style","meta","script","noscript","command"]},header:S,hgroup:S,hr:S,html:{attrs:{manifest:null}},i:S,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:["allow-top-navigation","allow-same-origin","allow-forms","allow-scripts"],seamless:["seamless"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:["anonymous","use-credentials"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:["audio/*","video/*","image/*"],autocomplete:["on","off"],autofocus:["autofocus"],checked:["checked"],disabled:["disabled"],formenctype:Na,formmethod:Ua,formnovalidate:["novalidate"],formtarget:ot,multiple:["multiple"],readonly:["readonly"],required:["required"],type:["hidden","text","search","tel","url","email","password","datetime","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]}},ins:{attrs:{cite:null,datetime:null}},kbd:S,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["autofocus"],disabled:["disabled"],keytype:["RSA"]}},label:{attrs:{for:null,form:null}},legend:S,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:null,media:null,sizes:["all","16x16","16x16 32x32","16x16 32x32 64x64"]}},map:{attrs:{name:null}},mark:S,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:Ga,name:["viewport","application-name","author","description","generator","keywords"],"http-equiv":["content-language","content-type","default-style","refresh"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:S,noscript:S,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:["typemustmatch"]}},ol:{attrs:{reversed:["reversed"],start:null,type:["1","a","A","i","I"]},children:["li","script","template","ul","ol"]},optgroup:{attrs:{disabled:["disabled"],label:null}},option:{attrs:{disabled:["disabled"],label:null,selected:["selected"],value:null}},output:{attrs:{for:null,form:null,name:null}},p:S,param:{attrs:{name:null,value:null}},pre:S,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:S,rt:S,ruby:S,samp:S,script:{attrs:{type:["text/javascript"],src:null,async:["async"],defer:["defer"],charset:Ga}},section:S,select:{attrs:{form:null,name:null,size:null,autofocus:["autofocus"],disabled:["disabled"],multiple:["multiple"]}},slot:{attrs:{name:null}},small:S,source:{attrs:{src:null,type:null,media:null}},span:S,strong:S,style:{attrs:{type:["text/css"],media:null,scoped:null}},sub:S,summary:S,sup:S,table:S,tbody:S,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:S,textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:["autofocus"],disabled:["disabled"],readonly:["readonly"],required:["required"],wrap:["soft","hard"]}},tfoot:S,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:S,time:{attrs:{datetime:null}},title:S,tr:S,track:{attrs:{src:null,label:null,default:null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:null}},ul:{children:["li","script","template","ul","ol"]},var:S,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:["anonymous","use-credentials"],preload:["auto","metadata","none"],autoplay:["autoplay"],mediagroup:["movie"],muted:["muted"],controls:["controls"]}},wbr:S},hr={accesskey:null,class:null,contenteditable:ae,contextmenu:null,dir:["ltr","rtl","auto"],draggable:["true","false","auto"],dropzone:["copy","move","link","string:","file:"],hidden:["hidden"],id:null,inert:["inert"],itemid:null,itemprop:null,itemref:null,itemscope:["itemscope"],itemtype:null,lang:["ar","bn","de","en-GB","en-US","es","fr","hi","id","ja","pa","pt","ru","tr","zh"],spellcheck:ae,autocorrect:ae,autocapitalize:ae,style:null,tabindex:null,title:null,translate:["yes","no"],rel:["stylesheet","alternate","author","bookmark","help","license","next","nofollow","noreferrer","prefetch","prev","search","tag"],role:"alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer".split(" "),"aria-activedescendant":null,"aria-atomic":ae,"aria-autocomplete":["inline","list","both","none"],"aria-busy":ae,"aria-checked":["true","false","mixed","undefined"],"aria-controls":null,"aria-describedby":null,"aria-disabled":ae,"aria-dropeffect":null,"aria-expanded":["true","false","undefined"],"aria-flowto":null,"aria-grabbed":["true","false","undefined"],"aria-haspopup":ae,"aria-hidden":ae,"aria-invalid":["true","false","grammar","spelling"],"aria-label":null,"aria-labelledby":null,"aria-level":null,"aria-live":["off","polite","assertive"],"aria-multiline":ae,"aria-multiselectable":ae,"aria-owns":null,"aria-posinset":null,"aria-pressed":["true","false","mixed","undefined"],"aria-readonly":ae,"aria-relevant":null,"aria-required":ae,"aria-selected":["true","false","undefined"],"aria-setsize":null,"aria-sort":["ascending","descending","none","other"],"aria-valuemax":null,"aria-valuemin":null,"aria-valuenow":null,"aria-valuetext":null},mr="beforeunload copy cut dragstart dragover dragleave dragenter dragend drag paste focus blur change click load mousedown mouseenter mouseleave mouseup keydown keyup resize scroll unload".split(" ").map(t=>"on"+t);for(let t of mr)hr[t]=null;var Le=class{constructor(e,a){this.tags={...nO,...e},this.globalAttrs={...hr,...a},this.allTags=Object.keys(this.tags),this.globalAttrNames=Object.keys(this.globalAttrs)}};Le.default=new Le;function Me(t,e,a=t.length){if(!e)return"";let s=e.firstChild,i=s&&s.getChild("TagName");return i?t.sliceString(i.from,Math.min(i.to,a)):""}function Ve(t,e=!1){for(;t;t=t.parent)if(t.name=="Element")if(e)e=!1;else return t;return null}function fr(t,e,a){let s=a.tags[Me(t,Ve(e))];return s?.children||a.allTags}function Ba(t,e){let a=[];for(let s=Ve(e);s&&!s.type.isTop;s=Ve(s.parent)){let i=Me(t,s);if(i&&s.lastChild.name=="CloseTag")break;i&&a.indexOf(i)<0&&(e.name=="EndTag"||e.from>=s.firstChild.to)&&a.push(i)}return a}var gr=/^[:\-\.\w\u00b7-\uffff]*$/;function Or(t,e,a,s,i){let r=/\s*>/.test(t.sliceDoc(i,i+5))?"":">",n=Ve(a,a.name=="StartTag"||a.name=="TagName");return{from:s,to:i,options:fr(t.doc,n,e).map(o=>({label:o,type:"type"})).concat(Ba(t.doc,a).map((o,l)=>({label:"/"+o,apply:"/"+o+r,type:"type",boost:99-l}))),validFor:/^\/?[:\-\.\w\u00b7-\uffff]*$/}}function cr(t,e,a,s){let i=/\s*>/.test(t.sliceDoc(s,s+5))?"":">";return{from:a,to:s,options:Ba(t.doc,e).map((r,n)=>({label:r,apply:r+i,type:"type",boost:99-n})),validFor:gr}}function oO(t,e,a,s){let i=[],r=0;for(let n of fr(t.doc,a,e))i.push({label:"<"+n,type:"type"});for(let n of Ba(t.doc,a))i.push({label:""+n+">",type:"type",boost:99-r++});return{from:s,to:s,options:i,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}function lO(t,e,a,s,i){let r=Ve(a),n=r?e.tags[Me(t.doc,r)]:null,o=n&&n.attrs?Object.keys(n.attrs):[],l=n&&n.globalAttrs===!1?o:o.length?o.concat(e.globalAttrNames):e.globalAttrNames;return{from:s,to:i,options:l.map(O=>({label:O,type:"property"})),validFor:gr}}function OO(t,e,a,s,i){var r;let n=(r=a.parent)===null||r===void 0?void 0:r.getChild("AttributeName"),o=[],l;if(n){let O=t.sliceDoc(n.from,n.to),c=e.globalAttrs[O];if(!c){let d=Ve(a),p=d?e.tags[Me(t.doc,d)]:null;c=p?.attrs&&p.attrs[O]}if(c){let d=t.sliceDoc(s,i).toLowerCase(),p='"',u='"';/^['"]/.test(d)?(l=d[0]=='"'?/^[^"]*$/:/^[^']*$/,p="",u=t.sliceDoc(i,i+1)==d[0]?"":d[0],d=d.slice(1),s++):l=/^[^\s<>='"]*$/;for(let g of c)o.push({label:g,apply:p+g+u,type:"constant"})}}return{from:s,to:i,options:o,validFor:l}}function Qr(t,e){let{state:a,pos:s}=e,i=(0,se.syntaxTree)(a).resolveInner(s,-1),r=i.resolve(s);for(let n=s,o;r==i&&(o=i.childBefore(n));){let l=o.lastChild;if(!l||!l.type.isError||l.fromQr(s,i)}var dO=Oe.parser.configure({top:"SingleExpression"}),vr=[{tag:"script",attrs:t=>t.type=="text/typescript"||t.lang=="ts",parser:qa.parser},{tag:"script",attrs:t=>t.type=="text/babel"||t.type=="text/jsx",parser:Wa.parser},{tag:"script",attrs:t=>t.type=="text/typescript-jsx",parser:Ia.parser},{tag:"script",attrs(t){return/^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(t.type)},parser:dO},{tag:"script",attrs(t){return!t.type||/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(t.type)},parser:Oe.parser},{tag:"style",attrs(t){return(!t.lang||t.lang=="css")&&(!t.type||/^(text\/)?(x-)?(stylesheet|css)$/i.test(t.type))},parser:rt.parser}],$r=[{name:"style",parser:rt.parser.configure({top:"Styles"})}].concat(mr.map(t=>({name:t,parser:Oe.parser}))),br=se.LRLanguage.define({name:"html",parser:ji.configure({props:[se.indentNodeProp.add({Element(t){let e=/^(\s*)(<\/)?/.exec(t.textAfter);return t.node.to<=t.pos+e[0].length?t.continue():t.lineIndent(t.node.from)+(e[2]?0:t.unit)},"OpenTag CloseTag SelfClosingTag"(t){return t.column(t.node.from)+t.unit},Document(t){if(t.pos+/\s*/.exec(t.textAfter)[0].lengtht.getChild("TagName")})]}),languageData:{commentTokens:{block:{open:""}},indentOnInput:/^\s*<\/\w+\W$/,wordChars:"-_"}}),_t=br.configure({wrap:La(vr,$r)});function kr(t={}){let e="",a;t.matchClosingTags===!1&&(e="noMatch"),t.selfClosingTags===!0&&(e=(e?e+" ":"")+"selfClosing"),(t.nestedLanguages&&t.nestedLanguages.length||t.nestedAttributes&&t.nestedAttributes.length)&&(a=La((t.nestedLanguages||[]).concat(vr),(t.nestedAttributes||[]).concat($r)));let s=a?br.configure({wrap:a,dialect:e}):e?_t.configure({dialect:e}):_t;return new se.LanguageSupport(s,[_t.data.of({autocomplete:cO(t)}),t.autoCloseTags!==!1?pO:[],lr().support,Gi().support])}var dr=new Set("area base br col command embed frame hr img input keygen link meta param source track wbr menuitem".split(" ")),pO=pr.EditorView.inputHandler.of((t,e,a,s,i)=>{if(t.composing||t.state.readOnly||e!=a||s!=">"&&s!="/"||!_t.isActiveAt(t.state,e,-1))return!1;let r=i(),{state:n}=r,o=n.changeByRange(l=>{var O,c,d;let p=n.doc.sliceString(l.from-1,l.to)==s,{head:u}=l,g=(0,se.syntaxTree)(n).resolveInner(u,-1),f;if(p&&s==">"&&g.name=="EndTag"){let w=g.parent;if(((c=(O=w.parent)===null||O===void 0?void 0:O.lastChild)===null||c===void 0?void 0:c.name)!="CloseTag"&&(f=Me(n.doc,w.parent,u))&&!dr.has(f)){let P=u+(n.doc.sliceString(u,u+1)===">"?1:0),Z=`${f}>`;return{range:l,changes:{from:u,to:P,insert:Z}}}}else if(p&&s=="/"&&g.name=="IncompleteCloseTag"){let w=g.parent;if(g.from==u-2&&((d=w.lastChild)===null||d===void 0?void 0:d.name)!="CloseTag"&&(f=Me(n.doc,w,u))&&!dr.has(f)){let P=u+(n.doc.sliceString(u,u+1)===">"?1:0),Z=`${f}>`;return{range:ur.EditorSelection.cursor(u+Z.length,-1),changes:{from:u,to:P,insert:Z}}}}return{range:l}});return o.changes.empty?!1:(t.dispatch([r,n.update(o,{userEvent:"input.complete",scrollIntoView:!0})]),!0)});var xr=require("@lezer/common"),Zr=(0,_.defineLanguageFacet)({commentTokens:{block:{open:""}}}),Tr=new xr.NodeProp,Xr=li.configure({props:[_.foldNodeProp.add(t=>!t.is("Block")||t.is("Document")||Ja(t)!=null||uO(t)?void 0:(e,a)=>({from:a.doc.lineAt(e.from).to,to:e.to})),Tr.add(Ja),_.indentNodeProp.add({Document:()=>null}),_.languageDataProp.add({Document:Zr})]});function Ja(t){let e=/^(?:ATX|Setext)Heading(\d)$/.exec(t.name);return e?+e[1]:void 0}function uO(t){return t.name=="OrderedList"||t.name=="BulletList"}function hO(t,e){let a=t;for(;;){let s=a.nextSibling,i;if(!s||(i=Ja(s.type))!=null&&i<=e)break;a=s}return a.to}var mO=_.foldService.of((t,e,a)=>{for(let s=(0,_.syntaxTree)(t).resolveInner(a,-1);s&&!(s.froma)return{from:a,to:r}}return null});function Ka(t){return new _.Language(Zr,t,[],"markdown")}var fO=Ka(Xr),gO=Xr.configure([di,hi,ui,mi,{props:[_.foldNodeProp.add({Table:(t,e)=>({from:e.doc.lineAt(t.from).to,to:t.to})})]}]),jt=Ka(gO);function QO(t,e){return a=>{if(a&&t){let s=null;if(a=/\S*/.exec(a)[0],typeof t=="function"?s=t(a):s=_.LanguageDescription.matchLanguageName(t,a,!0),s instanceof _.LanguageDescription)return s.support?s.support.language.parser:_.ParseContext.getSkippingParser(s.load());if(s)return s.parser}return e?e.parser:null}}var lt=class{constructor(e,a,s,i,r,n,o){this.node=e,this.from=a,this.to=s,this.spaceBefore=i,this.spaceAfter=r,this.type=n,this.item=o}blank(e,a=!0){let s=this.spaceBefore+(this.node.name=="Blockquote"?">":"");if(e!=null){for(;s.length0;i--)s+=" ";return s+(a?this.spaceAfter:"")}}marker(e,a){let s=this.node.name=="OrderedList"?String(+_r(this.item,e)[2]+a):"";return this.spaceBefore+s+this.type+this.spaceAfter}};function Cr(t,e){let a=[],s=[];for(let i=t;i;i=i.parent){if(i.name=="FencedCode")return s;(i.name=="ListItem"||i.name=="Blockquote")&&a.push(i)}for(let i=a.length-1;i>=0;i--){let r=a[i],n,o=e.lineAt(r.from),l=r.from-o.from;if(r.name=="Blockquote"&&(n=/^ *>( ?)/.exec(o.text.slice(l))))s.push(new lt(r,l,l+n[0].length,"",n[1],">",null));else if(r.name=="ListItem"&&r.parent.name=="OrderedList"&&(n=/^( *)\d+([.)])( *)/.exec(o.text.slice(l)))){let O=n[3],c=n[0].length;O.length>=4&&(O=O.slice(0,O.length-4),c-=4),s.push(new lt(r.parent,l,l+c,n[1],O,n[2],r))}else if(r.name=="ListItem"&&r.parent.name=="BulletList"&&(n=/^( *)([-+*])( {1,4}\[[ xX]\])?( +)/.exec(o.text.slice(l)))){let O=n[4],c=n[0].length;O.length>4&&(O=O.slice(0,O.length-4),c-=4);let d=n[2];n[3]&&(d+=n[3].replace(/[xX]/," ")),s.push(new lt(r.parent,l,l+c,n[1],O,d,r))}}return s}function _r(t,e){return/^(\s*)(\d+)(?=[.)])/.exec(e.sliceString(t.from,t.from+10))}function Ha(t,e,a,s=0){for(let i=-1,r=t;;){if(r.name=="ListItem"){let o=_r(r,e),l=+o[2];if(i>=0){if(l!=i+1)return;a.push({from:r.from+o[1].length,to:r.from+o[0].length,insert:String(i+2+s)})}i=l}let n=r.nextSibling;if(!n)break;r=n}}function es(t,e){let a=/^[ \t]*/.exec(t)[0].length;if(!a||e.facet(_.indentUnit)!=" ")return t;let s=(0,I.countColumn)(t,4,a),i="";for(let r=s;r>0;)r>=4?(i+=" ",r-=4):(i+=" ",r--);return i+t.slice(a)}var SO=(t={})=>({state:e,dispatch:a})=>{let s=(0,_.syntaxTree)(e),{doc:i}=e,r=null,n=e.changeByRange(o=>{if(!o.empty||!jt.isActiveAt(e,o.from,-1)&&!jt.isActiveAt(e,o.from,1))return r={range:o};let l=o.from,O=i.lineAt(l),c=Cr(s.resolveInner(l,-1),i);for(;c.length&&c[c.length-1].from>l-O.from;)c.pop();if(!c.length)return r={range:o};let d=c[c.length-1];if(d.to-d.spaceAfter.length>l-O.from)return r={range:o};let p=l>=d.to-d.spaceAfter.length&&!/\S/.test(O.text.slice(d.to));if(d.item&&p){let P=d.node.firstChild,Z=d.node.getChild("ListItem","ListItem");if(P.to>=l||Z&&Z.to0&&!/[^\s>]/.test(i.lineAt(O.from-1).text)||t.nonTightLists===!1){let Y=c.length>1?c[c.length-2]:null,Qe,Xe="";Y&&Y.item?(Qe=O.from+Y.from,Xe=Y.marker(i,1)):Qe=O.from+(Y?Y.to:0);let He=[{from:Qe,to:l,insert:Xe}];return d.node.name=="OrderedList"&&Ha(d.item,i,He,-2),Y&&Y.node.name=="OrderedList"&&Ha(Y.item,i,He),{range:I.EditorSelection.cursor(Qe+Xe.length),changes:He}}else{let Y=yr(c,e,O);return{range:I.EditorSelection.cursor(l+Y.length+1),changes:{from:O.from,insert:Y+e.lineBreak}}}}if(d.node.name=="Blockquote"&&p&&O.from){let P=i.lineAt(O.from-1),Z=/>\s*$/.exec(P.text);if(Z&&Z.index==d.from){let Y=e.changes([{from:P.from+Z.index,to:P.to},{from:O.from+d.from,to:O.to}]);return{range:o.map(Y),changes:Y}}}let u=[];d.node.name=="OrderedList"&&Ha(d.item,i,u);let g=d.item&&d.item.from]*/.exec(O.text)[0].length>=d.to)for(let P=0,Z=c.length-1;P<=Z;P++)f+=P==Z&&!g?c[P].marker(i,1):c[P].blank(PO.from&&/\s/.test(O.text.charAt(w-O.from-1));)w--;return f=es(f,e),$O(d.node,e.doc)&&(f=yr(c,e,O)+e.lineBreak+f),u.push({from:w,to:l,insert:e.lineBreak+f}),{range:I.EditorSelection.cursor(w+f.length+1),changes:u}});return r?!1:(a(e.update(n,{scrollIntoView:!0,userEvent:"input"})),!0)},vO=SO();function Pr(t){return t.name=="QuoteMark"||t.name=="ListMark"}function $O(t,e){if(t.name!="OrderedList"&&t.name!="BulletList")return!1;let a=t.firstChild,s=t.getChild("ListItem","ListItem");if(!s)return!1;let i=e.lineAt(a.to),r=e.lineAt(s.from),n=/^[\s>]*$/.test(i.text);return i.number+(n?0:1){let a=(0,_.syntaxTree)(t),s=null,i=t.changeByRange(r=>{let n=r.from,{doc:o}=t;if(r.empty&&jt.isActiveAt(t,r.from)){let l=o.lineAt(n),O=Cr(bO(a,n),o);if(O.length){let c=O[O.length-1],d=c.to-c.spaceAfter.length+(c.spaceAfter?1:0);if(n-l.from>d&&!/\S/.test(l.text.slice(d,n-l.from)))return{range:I.EditorSelection.cursor(l.from+d),changes:{from:l.from+d,to:n}};if(n-l.from==d&&(!c.item||l.from<=c.item.from||!/\S/.test(l.text.slice(0,c.to)))){let p=l.from+c.from;if(c.item&&c.node.from{var a;let{main:s}=e.state.selection;if(s.empty)return!1;let i=(a=t.clipboardData)===null||a===void 0?void 0:a.getData("text/plain");if(!i||!/^(https?:\/\/|mailto:|xmpp:|www\.)/.test(i)||(/^www\./.test(i)&&(i="https://"+i),!jt.isActiveAt(e.state,s.from,1)))return!1;let r=(0,_.syntaxTree)(e.state),n=!1;return r.iterate({from:s.from,to:s.to,enter:o=>{(o.from>s.from||xO.test(o.name))&&(n=!0)},leave:o=>{o.to{let e=[],a=t.state.doc.toString();if(!a.startsWith("---"))return e;let s=a.indexOf(`
---`,3);if(s===-1)return e.push({from:0,to:3,severity:"error",message:"Unclosed frontmatter block, missing closing ---"}),e;let r=a.slice(4,s).split(`
-`),n=4,o=[];for(let l of r){let O=l.match(/^(\w[\w-]*)\s*:(.*)/);if(O){let c=O[1],d=O[2].trim();o.includes(c)&&e.push({from:n,to:n+c.length,severity:"warning",message:`Duplicate key: "${c}"`}),o.push(c),c==="name"&&(d?d.length>64?e.push({from:n,to:n+l.length,severity:"warning",message:`name exceeds 64 chars (${d.length})`}):TO.test(d)||e.push({from:n+c.length+2,to:n+l.length,severity:"warning",message:"name must be lowercase alphanumeric with single hyphens, no leading/trailing hyphens"}):e.push({from:n,to:n+l.length,severity:"error",message:"name is required"})),c==="description"&&(d?d.length>1024&&e.push({from:n,to:n+l.length,severity:"warning",message:`description exceeds 1024 chars (${d.length})`}):e.push({from:n,to:n+l.length,severity:"warning",message:"description is empty"})),c==="compatibility"&&d.length>500&&e.push({from:n,to:n+l.length,severity:"warning",message:`compatibility exceeds 500 chars (${d.length})`})}n+=l.length+1}return e});var Mr=require("@codemirror/language"),Vr=Mr.foldService.of((t,e,a)=>{let s=t.doc.lineAt(e);if(s.number!==1||s.text.trim()!=="---")return null;for(let i=s.number+1;i<=t.doc.lines;i++){let r=t.doc.line(i);if(r.text.trim()==="---")return{from:s.to,to:r.to}}return null});function Ir(t){let{doc:e,parent:a,onSave:s}=t,i=[Dr,(0,I.lineNumbers)(),(0,I.highlightActiveLineGutter)(),(0,I.highlightActiveLine)(),(0,I.highlightSpecialChars)(),(0,xe.history)(),(0,ue.foldGutter)(),(0,I.drawSelection)(),(0,ue.indentOnInput)(),(0,ue.bracketMatching)(),(0,Rt.closeBrackets)(),(0,ue.syntaxHighlighting)(Yr),I.EditorView.darkTheme.of(activeDocument.body.classList.contains("theme-dark")),Ar,Vr,(0,Lt.lintGutter)(),I.EditorView.lineWrapping,I.keymap.of([{key:"Mod-s",run:r=>(s(r.state.doc.toString()),!0)},xe.indentWithTab,...Rt.closeBracketsKeymap,...xe.defaultKeymap,...xe.historyKeymap,...ue.foldKeymap,...Wr.searchKeymap,...Lt.lintKeymap])];return i.push(Er()),new I.EditorView({state:qr.EditorState.create({doc:e,extensions:i}),parent:a})}function XO(t){return Math.ceil(t.length/4)}function CO(t){return t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`}function Gr(t){return t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function _O(t){return new Date(t).toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}var jO=new V.Component,Yt=class{containerEl;store;settings;saveSettings;currentItem=null;isEditing=!1;app;editorView=null;constructor(e,a,s,i,r){this.containerEl=e,this.store=a,this.settings=s,this.saveSettings=i,this.app=r.app}show(e){this.destroyEditor(),this.currentItem=e,this.isEditing=!1,this.render()}clear(){this.destroyEditor(),this.currentItem=null,this.containerEl.empty(),this.containerEl.addClass("as-detail");let e=this.containerEl.createDiv("as-detail-empty");(0,V.setIcon)(e.createDiv("as-detail-empty-icon"),"file-text"),e.createDiv({text:"Select a skill to view"})}render(){this.containerEl.empty(),this.containerEl.addClass("as-detail");let e=this.currentItem;if(!e)return this.clear();this.renderToolbar(e),this.isEditing?this.renderEditor(e):this.renderPreview(e)}renderToolbar(e){let a=this.containerEl.createDiv("as-detail-toolbar"),s=a.createDiv("as-toolbar-top"),i=s.createDiv("as-toolbar-left");i.createSpan({cls:"as-detail-title",text:e.name});for(let p of e.tools){let u=G.find(f=>f.id===p);if(!u)continue;let g=i.createSpan("as-tool-name-badge");g.setCssProps({"--tool-color":u.color}),U[p]&&oe(g,p,12),g.createSpan({text:u.name})}let r=s.createDiv("as-toolbar-right"),n=r.createEl("button",{cls:"as-toolbar-btn",attr:{"aria-label":"Toggle favorite"}});(0,V.setIcon)(n,e.isFavorite?"star":"star-off"),n.addEventListener("click",()=>{this.store.toggleFavorite(e.id,this.settings),this.saveSettings(),this.render()});let o=r.createEl("button",{cls:"as-toolbar-btn",attr:{"aria-label":this.isEditing?"Preview":"Edit"}});(0,V.setIcon)(o,this.isEditing?"eye":"pencil"),o.addEventListener("click",()=>{this.isEditing=!this.isEditing,this.render()});let l=r.createEl("button",{cls:"as-toolbar-btn",attr:{"aria-label":"Show in system explorer"}});if((0,V.setIcon)(l,"folder-open"),l.addEventListener("click",()=>{ht(e.filePath)}),ee()){let p=r.createEl("button",{cls:"as-toolbar-btn as-toolbar-btn-danger",attr:{"aria-label":"Remove skill"}});(0,V.setIcon)(p,"trash-2"),p.addEventListener("click",()=>{je(this.app,"Remove skill",`Remove "${e.name}"? This will delete the skill files.`,()=>{let u=ze(`prune --skill ${e.name} --yes`);u.success?(new V.Notice(`Removed ${e.name}`,5e3),this.store.refresh(this.settings),this.clear()):new V.Notice(`Failed to remove: ${u.output}`,5e3)})})}let O=a.createDiv("as-detail-meta-bar"),c=XO(e.content),d=e.content.length;if(O.createSpan({cls:"as-meta-item",text:CO(e.fileSize)}),O.createSpan({cls:"as-meta-item",text:`${Gr(d)} chars`}),O.createSpan({cls:"as-meta-item",text:`~${Gr(c)} tokens`}),O.createSpan({cls:"as-meta-item",text:_O(e.lastModified)}),O.createSpan({cls:"as-meta-item as-meta-type",text:e.type}),e.usage&&e.usage.uses>0){let p=a.createDiv("as-detail-usage-bar");p.createSpan({cls:"as-usage-stat",text:`${e.usage.uses} uses`}),p.createSpan({cls:"as-usage-stat",text:`last: ${da(e.usage.lastUsed)}`}),e.usage.isStale&&p.createSpan({cls:"as-badge-stale",text:"stale"}),e.usage.isHeavy&&p.createSpan({cls:"as-badge-heavy",text:"heavy"})}}renderFrontmatter(e,a){let s=Object.keys(a.frontmatter),i=e.createDiv("as-frontmatter");if(a.filePath){let r=i.createDiv("as-fm-prop");r.createSpan({cls:"as-fm-key",text:"path"}),r.createSpan({cls:"as-fm-value",text:a.filePath})}if(!(s.length===0&&!a.filePath))for(let r of s){let n=a.frontmatter[r];if(n==null)continue;let o=i.createDiv("as-fm-prop");o.createSpan({cls:"as-fm-key",text:r});let l=typeof n=="object"?JSON.stringify(n):typeof n=="string"?n:typeof n=="number"||typeof n=="boolean"?String(n):JSON.stringify(n);l.length>200?o.createDiv({cls:"as-fm-value-long",text:l}):o.createSpan({cls:"as-fm-value",text:l})}}renderPreview(e){let a=this.containerEl.createDiv("as-detail-body");this.renderFrontmatter(a,e),this.renderWarnings(a,e),this.renderUsageSection(a,e),this.renderConflicts(a,e),this.renderTraces(a,e);let s=a.createDiv("as-detail-preview markdown-rendered");V.MarkdownRenderer.render(this.app,e.content,s,e.filePath,jO)}renderWarnings(e,a){let s=[];if(a.warnings?.oversized&&s.push(`${a.warnings.lineCount} lines (recommended: <500)`),a.warnings?.longDesc&&s.push(`Description is ${a.warnings.descChars} chars (recommended: <1024)`),a.conflicts&&a.conflicts.length>0){let o=a.conflicts.map(l=>l.skillName).join(", ");s.push(`Conflicts with: ${o}`)}if(s.length===0)return;let i=e.createDiv("as-warnings"),r=i.createDiv("as-warnings-icon");(0,V.setIcon)(r,"alert-triangle");let n=i.createDiv("as-warnings-list");for(let o of s)n.createDiv({cls:"as-warnings-item",text:o})}renderUsageSection(e,a){if(!a.usage||a.usage.uses===0)return;let s=e.createDiv("as-usage-section"),i=s.createDiv("as-usage-left");if(i.createSpan({cls:"as-usage-count",text:String(a.usage.uses)}),i.createSpan({cls:"as-usage-label",text:"uses"}),i.createSpan({cls:"as-usage-last",text:da(a.usage.lastUsed)}),a.usage.daily&&a.usage.daily.length>1){let r=s.createDiv("as-usage-spark");Cs(r,a.usage.daily.map(n=>n.count),80,20)}}renderConflicts(e,a){if(!a.conflicts||a.conflicts.length===0)return;let s=e.createDiv("as-conflicts-section");s.createDiv({cls:"as-section-title",text:`Conflicts (${a.conflicts.length})`});for(let i of a.conflicts){let r=s.createDiv("as-conflict-row");r.createSpan({cls:"as-conflict-name",text:i.skillName}),r.createDiv("as-conflict-bar-wrap").createDiv("as-conflict-bar").setCssProps({"--bar-w":`${(i.similarity*100).toFixed(0)}%`}),r.createSpan({cls:"as-conflict-score",text:`${(i.similarity*100).toFixed(0)}%`})}}renderTraces(e,a){if(!ee())return;let s=xs(a.name);if(s.length===0)return;let i=e.createDiv("as-traces-section");i.createDiv({cls:"as-section-title",text:`Recent traces (${s.length})`});let r=i.createDiv("as-traces-table");for(let n of s){let o=r.createDiv("as-trace-row"),l=new Date(n.timestamp);o.createSpan({cls:"as-trace-date",text:l.toLocaleDateString(void 0,{month:"short",day:"numeric"})}),o.createSpan({cls:"as-trace-model",text:n.model.replace("claude-","").replace("-4-6","")}),o.createSpan({cls:"as-trace-tokens",text:`${(n.tokens/1e3).toFixed(1)}k`}),o.createSpan({cls:"as-trace-cost",text:n.cost>0?`$${n.cost.toFixed(2)}`:""}),o.createSpan({cls:"as-trace-duration",text:`${(n.duration/1e3).toFixed(1)}s`})}i.createDiv({cls:"as-traces-hint",text:"skillkit trace --list --skill "+a.name})}renderPruneAction(e,a){let s=e.createDiv("as-prune-section"),i=s.createEl("button",{cls:"as-prune-btn",text:"Remove this skill"});s.createSpan({cls:"as-prune-hint",text:"This skill hasn't been used in 30+ days"}),i.addEventListener("click",()=>{je(this.app,"Remove skill",`Remove "${a.name}"? This will delete the skill files.`,()=>{let r=ze(`prune --skill ${a.name} --yes`);r.success?(new V.Notice(`Removed ${a.name}`,5e3),this.store.refresh(this.settings)):new V.Notice(`Failed to remove: ${r.output}`,5e3)})})}renderEditor(e){this.destroyEditor();let a=this.containerEl.createDiv("as-detail-body as-detail-body-editor"),s=a.createDiv("as-editor-cm");this.editorView=Ir({doc:e.content,parent:s,onSave:n=>this.saveFile(e,n)});let i=a.createDiv("as-save-bar");i.createEl("button",{cls:"as-save-btn",text:"Save"}).addEventListener("click",()=>{this.editorView&&this.saveFile(e,this.editorView.state.doc.toString())}),i.createSpan({cls:"as-save-hint",text:"Cmd+S to save"})}destroyEditor(){this.editorView&&(this.editorView.destroy(),this.editorView=null)}saveFile(e,a){try{(0,Ur.writeFileSync)(e.filePath,a,"utf-8"),e.content=a,new V.Notice(`Saved ${e.name}`,5e3)}catch(s){new V.Notice(`Failed to save: ${s instanceof Error?s.message:String(s)}`,5e3)}}};var he=require("obsidian");var ts=require("child_process"),J=require("fs"),C=require("path"),Dt=require("os"),Ot=require("obsidian"),D=(0,Dt.homedir)(),qe=(0,Dt.platform)()==="win32",Nr=(0,C.join)(D,".agents",".skill-lock.json"),EO="https://skills.sh/api";async function as(t){if(t.length<2)return[];try{let a=(await(0,Ot.requestUrl)({url:`${EO}/search?q=${encodeURIComponent(t)}&limit=30`})).json;if(!a.skills)return[];let s=en();return a.skills.map(i=>({...i,installed:s.has(i.name)}))}catch{return[]}}var Br=new Map;async function RO(t){let e=Br.get(t);if(e)return e;let i=(await(0,Ot.requestUrl)({url:`https://api.github.com/repos/${t}`})).json.default_branch||"main",o=((await(0,Ot.requestUrl)({url:`https://api.github.com/repos/${t}/git/trees/${i}?recursive=1`})).json.tree??[]).filter(O=>O.path.endsWith("/SKILL.md")).map(O=>O.path),l={branch:i,files:o};return Br.set(t,l),l}function LO(t,e,a){let s=e.split("/"),i=s[s.length-1]||t,r=new Set([i,t]);for(let n of a.split("/")){t.startsWith(n+"-")&&r.add(t.slice(n.length+1));for(let o of n.split("-"))t.startsWith(o+"-")&&r.add(t.slice(o.length+1))}return r}async function Fr(t,e,a){try{let{branch:s,files:i}=await RO(t),r=LO(e,a,t),n=i.find(O=>{let c=O.replace("/SKILL.md","").split("/").pop()||"";return r.has(c)});n||(n=i.find(O=>{let c=O.replace("/SKILL.md","").split("/").pop()||"";return e.includes(c)||c.includes(e)}));let o=n||`skills/${e}/SKILL.md`;return(await(0,Ot.requestUrl)({url:`https://raw.githubusercontent.com/${t}/${s}/${o}`})).text}catch{return null}}async function Jr(){let t=["react","next","clerk","stripe","ai"],e=new Set,a=[];for(let s of t){let i=await as(s);for(let r of i)e.has(r.id)||(e.add(r.id),a.push(r))}return a.sort((s,i)=>i.installs-s.installs).slice(0,20)}function YO(){let t=[];if(qe){let a=process.env.APPDATA||(0,C.join)(D,"AppData","Roaming");t.push((0,C.join)(a,"npm"),(0,C.join)(D,".bun","bin"),(0,C.join)(D,"AppData","Local","npm"))}else t.push("/usr/local/bin","/opt/homebrew/bin",(0,C.join)(D,".local","bin"),(0,C.join)(D,".bun","bin"));let e=qe?(0,C.join)(D,"AppData","Roaming","nvm"):(0,C.join)(D,".nvm","versions","node");try{for(let a of(0,J.readdirSync)(e))t.push(qe?(0,C.join)(e,a):(0,C.join)(e,a,"bin"))}catch{}return[...t,process.env.PATH||""].join(C.delimiter)}function Hr(){let t=qe?["bunx.cmd","bunx.exe","bunx"]:["bunx"],e=[];if(qe){let a=process.env.APPDATA||(0,C.join)(D,"AppData","Roaming");e.push((0,C.join)(D,".bun","bin"),(0,C.join)(a,"npm"))}else e.push((0,C.join)(D,".bun","bin"),"/usr/local/bin","/opt/homebrew/bin");for(let a of e)for(let s of t)if((0,J.existsSync)((0,C.join)(a,s)))return(0,C.join)(a,s);return"npx"}function ss(t="auto"){return t==="npx"?"npx":Hr()}var Kr=[{id:"claude-code",label:"Claude Code"},{id:"cursor",label:"Cursor"},{id:"codex",label:"Codex"},{id:"github-copilot",label:"GitHub Copilot"},{id:"windsurf",label:"Windsurf"},{id:"amp",label:"Amp"},{id:"opencode",label:"OpenCode"},{id:"cline",label:"Cline"},{id:"gemini-cli",label:"Gemini CLI"},{id:"goose",label:"Goose"},{id:"kiro-cli",label:"Kiro"},{id:"kilo",label:"Kilo Code"},{id:"roo",label:"Roo Code"},{id:"continue",label:"Continue"},{id:"openhands",label:"OpenHands"},{id:"antigravity",label:"Antigravity"},{id:"warp",label:"Warp"},{id:"pi",label:"Pi"},{id:"replit",label:"Replit"}],zt={"claude-code":"claude-code",cursor:"cursor",codex:"codex",copilot:"github-copilot",windsurf:"windsurf",amp:"amp",opencode:"opencode",antigravity:"antigravity","claude-desktop":"claude-code",pi:"pi","global-agents":"claude-code",aider:"claude-code",cline:"cline","roo-code":"roo",kilocode:"kilo",continue:"continue",openhands:"openhands",goose:"goose"};function en(){let t=new Set;if(!(0,J.existsSync)(Nr))return t;try{let e=JSON.parse((0,J.readFileSync)(Nr,"utf-8"));if(e.skills)for(let a of Object.keys(e.skills))t.add(a)}catch{}return t}var DO=[(0,C.join)(D,".claude","skills"),(0,C.join)(D,".cursor","skills"),(0,C.join)(D,".codex","skills"),(0,C.join)(D,".codeium","windsurf","skills"),(0,C.join)(D,".config","amp","skills"),(0,C.join)(D,".config","opencode","skills"),(0,C.join)(D,".copilot","skills"),(0,C.join)(D,".agents","skills")];function zO(t){for(let e of DO){let a=(0,C.join)(e,t);if((0,J.existsSync)(a))try{(0,J.rmSync)(a,{recursive:!0,force:!0})}catch{}}AO(t)}function AO(t){let e=(0,C.join)(D,".agents",".skill-lock.json");if((0,J.existsSync)(e))try{let a=JSON.parse((0,J.readFileSync)(e,"utf-8"));a.skills&&a.skills[t]&&(delete a.skills[t],(0,J.writeFileSync)(e,JSON.stringify(a,null,2)+`
-`,"utf-8"))}catch{}}function At(t){let e=en();for(let a of t)a.installed=e.has(a.name);return t}function is(t,e=12e4){return new Promise(a=>{(0,ts.exec)(t,{encoding:"utf-8",timeout:e,env:{...process.env,PATH:YO(),NO_COLOR:"1"},shell:qe?"cmd.exe":void 0},(s,i)=>{let r=String(i??"");!s||r.includes("Done")||r.includes("Installed")||r.includes("Removed")||r.includes("Updated")?a({success:!0,output:r}):a({success:!1,output:s?.message??"Command failed"})})})}async function tn(t,e,a={}){let s=e.length>0?`-a ${e.join(" ")}`:"-a '*'",i=a.globalInstall?"-g":"",r=a.skillName?`-s ${a.skillName}`:"",o=`${ss(a.runner||"auto")} skills add ${t} ${s} ${i} ${r} -y`.replace(/\s+/g," ").trim();return is(o)}async function an(t,e="auto"){let s=`${ss(e)} skills remove ${t} -y`,i=await is(s,3e4);return zO(t),{success:!0,output:i.output||`Cleaned ${t}`}}async function sn(t="auto"){let a=`${ss(t)} skills update`,s=await is(a),i=s.output.match(/Updated (\d+) skill/);return{...s,count:i?parseInt(i[1]):0}}function rs(t){return t>=1e6?`${(t/1e6).toFixed(1)}M`:t>=1e3?`${(t/1e3).toFixed(1)}K`:String(t)}var We=require("fs"),nn=require("path"),on=require("os"),MO=new Set(["Read","Write","Edit","MultiEdit","Bash","Glob","Grep","WebSearch","WebFetch","TodoRead","TodoWrite","Task","Agent","Skill","LSP","NotebookEdit","AskFollowupQuestion","AttemptCompletion","SearchReplace","InsertCodeBlock","ReadImages","ExecuteCommand","ListFiles","SearchFiles","ReadFile","WriteFile","ReplaceInFile","ListCodeDefinitionNames","BrowserAction","UseMcp","shell","shell_command","update_plan","create_plan","read_file","write_file","execute_command","spawn_agent","write_stdin","multi_tool_use.parallel"]);function rn(t){return!(MO.has(t)||t.startsWith("mcp__")||t.startsWith("mcp_"))}function VO(t){let e=t.top_skills.filter(s=>rn(s.name)),a=t.top_skills.filter(s=>!rn(s.name)).reduce((s,i)=>s+i.total,0);return{...t,top_skills:e,total_invocations:Math.max(0,t.total_invocations-a),unique_skills:e.length}}function qO(){let t=De("stats"),e=De("health"),a=De("burn"),s=De("context");return{stats:t,health:e,burn:a&&a.length>0?a[0]:null,context:s}}var ns=(0,nn.join)((0,on.homedir)(),".skillkit","dashboard-cache.json"),me=null,Ze=null;function WO(){if(!me&&(0,We.existsSync)(ns))try{let t=JSON.parse((0,We.readFileSync)(ns,"utf-8"));me=t.data,Ze=t.cachedAt}catch{}}function IO(){if(me)try{(0,We.writeFileSync)(ns,JSON.stringify({data:me,cachedAt:Ze},null,2),"utf-8")}catch{}}WO();var Mt=class{containerEl;app;constructor(e,a){this.containerEl=e,this.app=a}render(){if(this.containerEl.empty(),this.containerEl.addClass("as-dashboard"),!ee()){this.renderNoSkillkit();return}if(me)this.renderDashboard(me);else{let e=this.containerEl.createDiv("as-dash-loading");e.createDiv("as-dash-spinner"),e.createDiv({cls:"as-dash-loading-text",text:"Loading analytics..."}),window.setTimeout(()=>{let a=qO();me=a,Ze=Date.now(),IO(),e.remove(),this.renderDashboard(a)},10)}}renderDashboard(e){this.renderActionBar(e);let a=e.stats?VO(e.stats):null;if(a&&this.renderOverview(a,e.health),a&&this.renderTopSkills(a),e.health||e.context){let s=this.containerEl.createDiv("as-dash-row");e.health&&this.renderHealth(e.health,s),e.context&&this.renderContext(e.context,s)}e.burn&&this.renderBurn(e.burn),e.health&&this.renderStale(e.health)}renderActionBar(e){let a=this.containerEl.createDiv("as-dash-action-bar");if(Ze){let n=Math.round((Date.now()-Ze)/1e3),o=n<5?"just now":n<60?`${n}s ago`:`${Math.round(n/60)}m ago`;a.createSpan({cls:"as-dash-updated",text:`Updated ${o}`})}let s=a.createDiv("as-dash-action-buttons"),i=s.createEl("button",{cls:"as-action-btn",text:"Update skills"});i.addEventListener("click",()=>{i.setText("Updating..."),i.disabled=!0,sn().then(n=>{if(n.success){let o=n.count>0?`Updated ${n.count} skill(s)`:"All skills up to date";new he.Notice(o,5e3),me=null,Ze=null,this.render()}else new he.Notice(`Update failed: ${n.output}`,5e3);i.setText("Update skills"),i.disabled=!1})});let r=s.createEl("button",{cls:"as-action-btn",text:"Scan sessions"});if(r.addEventListener("click",()=>{r.setText("Scanning..."),r.disabled=!0,window.setTimeout(()=>{let n=ze("scan");n.success?(new he.Notice("Scan complete",5e3),me=null,Ze=null,this.render()):new he.Notice(`Scan failed: ${n.output}`,5e3),r.setText("Scan sessions"),r.disabled=!1},10)}),e.health&&e.health.usage.unused_30d>0){let n=s.createEl("button",{cls:"as-action-btn as-action-btn-danger",text:`Prune ${e.health.usage.unused_30d} stale`});n.addEventListener("click",()=>{je(this.app,"Prune stale skills",`Remove ${e.health.usage.unused_30d} unused skills? This cannot be undone.`,()=>{n.setText("Pruning..."),n.disabled=!0,window.setTimeout(()=>{let o=ze("prune --yes");o.success?(new he.Notice("Pruned stale skills",5e3),me=null,Ze=null,this.render()):new he.Notice(`Prune failed: ${o.output}`,5e3),n.setText(`Prune ${e.health.usage.unused_30d} stale`),n.disabled=!1},10)})})}}renderNoSkillkit(){let e=this.containerEl.createDiv("as-dash-empty"),a=e.createDiv("as-dash-empty-icon");(0,he.setIcon)(a,"bar-chart-2"),e.createEl("h3",{text:"Dashboard requires skillkit"}),e.createEl("p",{text:"Install skillkit to unlock usage analytics, burn rate, context tax, and more."}),e.createDiv("as-dash-install-cmd").createEl("code",{text:"npm i -g @crafter/skillkit && skillkit scan"}),e.createEl("a",{cls:"as-skillkit-link",text:"Learn more",href:"https://www.npmjs.com/package/@crafter/skillkit"}).addEventListener("click",r=>{r.preventDefault(),ut("https://www.npmjs.com/package/@crafter/skillkit")})}renderOverview(e,a){let s=this.containerEl.createDiv("as-dash-section");s.createDiv({cls:"as-dash-title",text:"Overview"});let i=s.createDiv("as-dash-stats");if(this.statCard(i,String(e.total_invocations),"invocations","activity"),this.statCard(i,String(e.unique_skills),"active skills","sparkles"),this.statCard(i,String(a?.installed??0),"installed","package"),this.statCard(i,String(a?.usage.unused_30d??0),"stale","alert-triangle"),e.streak&&e.streak.current>0){let r=s.createDiv("as-dash-streak-row");r.createSpan({cls:"as-streak-value",text:`${e.streak.current} day streak`}),e.streak.current>=7&&r.createSpan({cls:"as-streak-fire",text:"on fire"}),r.createSpan({cls:"as-streak-longest",text:`longest: ${e.streak.longest}d`})}if(e.velocity&&e.velocity.this_week>0){let r=s.createDiv("as-dash-velocity-row");r.createSpan({text:`This week: $${e.velocity.this_week.toFixed(0)}`}),r.createSpan({cls:"as-velocity-vs",text:`vs $${e.velocity.last_week.toFixed(0)} last week`});let n=e.velocity.change_pct,o=n>0?"as-velocity-up":n<0?"as-velocity-down":"",l=n>0?"+":"";r.createSpan({cls:`as-velocity-change ${o}`,text:`${l}${n.toFixed(0)}%`})}}statCard(e,a,s,i){let r=e.createDiv("as-stat-card"),n=r.createDiv("as-stat-icon");(0,he.setIcon)(n,i),r.createDiv({cls:"as-stat-value",text:a}),r.createDiv({cls:"as-stat-label",text:s})}renderTopSkills(e){if(e.top_skills.length===0)return;let a=this.containerEl.createDiv("as-dash-section");a.createDiv({cls:"as-dash-title",text:`Top Skills (${e.period.days}d)`});let s=e.top_skills[0]?.total||1,i=a.createDiv("as-dash-bars");for(let r of e.top_skills.slice(0,10)){let n=i.createDiv("as-bar-row");n.createSpan({cls:"as-bar-name",text:r.name}),n.createDiv("as-bar-wrap").createDiv("as-bar-fill").setCssProps({"--bar-w":`${r.total/s*100}%`}),n.createSpan({cls:"as-bar-count",text:String(r.total)})}}renderHealth(e,a){let s=(a||this.containerEl).createDiv("as-dash-section");s.createDiv({cls:"as-dash-title",text:"Health"});let i=e.usage.used_30d+e.usage.unused_30d,r=i>0?Math.round(e.usage.used_30d/i*100):0,n=s.createDiv("as-dash-health-row"),o=n.createDiv("as-donut");o.setCssProps({"--pct":`${r}`}),o.createDiv({cls:"as-donut-label",text:`${r}%`}),o.createDiv({cls:"as-donut-sub",text:"active"});let l=n.createDiv("as-health-details");l.createDiv({cls:"as-health-line",text:`${e.usage.used_30d} used in 30d`}),l.createDiv({cls:"as-health-line as-health-warn",text:`${e.usage.unused_30d} never triggered`});let c=l.createDiv("as-budget-bar").createDiv("as-budget-fill");c.setCssProps({"--bar-w":`${e.metadata.pct}%`}),e.metadata.pct>80&&c.addClass("as-budget-over"),l.createDiv({cls:"as-health-line",text:`Metadata budget: ${e.metadata.pct}%`})}renderBurn(e){let a=this.containerEl.createDiv("as-dash-section");a.createDiv({cls:"as-dash-title",text:`Burn Rate \u2014 ${e.agent} (${e.period.days}d)`});let s=a.createDiv("as-dash-stats as-dash-stats-sm");if(this.statCard(s,`$${Math.round(e.cost.total).toLocaleString()}`,"total cost","flame"),this.statCard(s,`$${Math.round(e.cost.total/(e.period.days||1)).toLocaleString()}`,"daily avg","trending-up"),this.statCard(s,`${(e.period.sessions||0).toLocaleString()}`,"sessions","terminal"),this.statCard(s,`${((e.period.api_calls||0)/1e3).toFixed(0)}k`,"API calls","zap"),e.by_model&&e.by_model.length>0){let o=a.createDiv("as-model-breakdown");for(let l of e.by_model.slice(0,4)){let O=o.createDiv("as-model-row");O.createSpan({cls:"as-model-name",text:l.model}),O.createSpan({cls:"as-model-calls",text:`${l.apiCalls.toLocaleString()} calls`}),l.costUsd>0&&O.createSpan({cls:"as-model-cost",text:`$${Math.round(l.costUsd).toLocaleString()}`})}}let i=e.by_day.slice(-14);if(i.length===0)return;let r=Math.max(...i.map(o=>o.costUsd),1),n=a.createDiv("as-burn-chart");for(let o of i){let l=n.createDiv("as-burn-col"),O=l.createDiv("as-burn-bar"),c=Math.max(2,o.costUsd/r*100);O.setCssProps({"--bar-h":`${c}%`}),O.title=`${o.date}: $${o.costUsd.toFixed(0)}`,l.createDiv({cls:"as-burn-date",text:o.date.slice(8)})}}renderContext(e,a){let s=(a||this.containerEl).createDiv("as-dash-section");s.createDiv({cls:"as-dash-title",text:"Context Tax"});let i=e.always_loaded.total_tokens,r=[{label:"CLAUDE.md",tokens:e.always_loaded.claude_md_tokens,cls:"as-ctx-claude"},{label:"Skills metadata",tokens:e.always_loaded.skill_metadata_tokens,cls:"as-ctx-skills"},{label:"Memory",tokens:e.always_loaded.memory_tokens,cls:"as-ctx-memory"}],n=s.createDiv("as-ctx-bar");for(let O of r){let c=n.createDiv(`as-ctx-part ${O.cls}`);c.setCssProps({"--bar-w":`${O.tokens/i*100}%`}),c.title=`${O.label}: ${(O.tokens/1e3).toFixed(1)}k tokens`}let o=s.createDiv("as-ctx-legend");for(let O of r){let c=o.createDiv("as-ctx-legend-item");c.createSpan({cls:`as-ctx-dot ${O.cls}`}),c.createSpan({text:`${O.label}: ${(O.tokens/1e3).toFixed(1)}k`})}let l=s.createDiv("as-ctx-costs");l.createDiv({text:`Per session (cached): $${e.session_estimate.with_cache.toFixed(2)}`}),l.createDiv({text:`Without cache: $${e.session_estimate.without_cache.toFixed(2)}`}),l.createDiv({cls:"as-ctx-savings",text:`Cache saves ${e.session_estimate.savings_pct.toFixed(0)}%`})}renderStale(e){if(e.usage.never_used.length===0)return;let a=this.containerEl.createDiv("as-dash-section");a.createDiv({cls:"as-dash-title",text:`Stale skills (${e.usage.unused_30d})`});let s=a.createDiv("as-stale-list");for(let i of e.usage.never_used.slice(0,20))s.createDiv("as-stale-item").createSpan({text:i});e.usage.never_used.length>20&&s.createDiv({cls:"as-stale-more",text:`+${e.usage.never_used.length-20} more`})}};var pe=require("obsidian"),Ge=require("fs"),gn=require("path"),Qn=require("os");var ce=require("obsidian"),Ie=require("fs"),mn=require("path"),fn=require("os");var j=require("fs"),L=require("path"),Vt=require("os"),On=require("obsidian"),cn=require("crypto");var ln=new Set(["readme.md","license","license.md","changelog.md",".ds_store","thumbs.db"]);function GO(t){return(0,cn.createHash)("sha256").update(t).digest("hex").slice(0,12)}function UO(t){let e=t.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);if(!e)return{frontmatter:{},content:t};try{let a=(0,On.parseYaml)(e[1]);return{frontmatter:typeof a=="object"&&a?a:{},content:e[2]}}catch{return{frontmatter:{},content:t}}}function NO(t,e,a,s="auto",i="skill"){if(i==="command")return typeof t.name=="string"&&t.name?t.name:(0,L.basename)(a,(0,L.extname)(a));if(s==="auto"){if(typeof t.name=="string"&&t.name)return t.name;let n=e.match(/^#\s+(.+)$/m);if(n)return n[1].trim()}let r=(0,L.basename)(a,(0,L.extname)(a));return r==="SKILL"?(0,L.basename)((0,L.join)(a,"..")):r}function dn(t,e,a,s="auto",i=0){if(!(0,j.existsSync)(t)||i>3)return[];let r=[];for(let n of(0,j.readdirSync)(t,{withFileTypes:!0})){let o=(0,L.join)(t,n.name);if(!(n.isDirectory()||n.isSymbolicLink()&&(0,j.statSync)(o,{throwIfNoEntry:!1})?.isDirectory()))continue;let O=(0,L.join)(o,"SKILL.md");if((0,j.existsSync)(O)){let c=ct(O,e,a,"directory-with-skillmd",s);c&&r.push(c)}else r.push(...dn(o,e,a,s,i+1))}return r}function BO(t,e,a,s="auto"){if(!(0,j.existsSync)(t))return[];let i=[];for(let r of(0,j.readdirSync)(t,{withFileTypes:!0})){let n=(0,L.join)(t,r.name);if(r.isDirectory()||r.isSymbolicLink()&&(0,j.statSync)(n,{throwIfNoEntry:!1})?.isDirectory()){let c=(0,L.join)(n,"SKILL.md");if((0,j.existsSync)(c)){let u=ct(c,e,a,"flat-md",s);u&&i.push(u);continue}let d=(0,j.readdirSync)(n).filter(u=>u.endsWith(".md")&&!ln.has(u.toLowerCase())),p=d.find(u=>u.toLowerCase()===`${r.name.toLowerCase()}.md`)||d[0];if(p){let u=ct((0,L.join)(n,p),e,a,"flat-md",s);u&&i.push(u)}continue}let l=r.name.toLowerCase();if(!l.endsWith(".md")||ln.has(l))continue;let O=ct(n,e,a,"flat-md",s);O&&i.push(O)}return i}function HO(t,e,a,s="auto"){if(!(0,j.existsSync)(t))return[];let i=[];for(let r of(0,j.readdirSync)(t,{withFileTypes:!0})){if(!r.name.endsWith(".mdc")&&!r.name.endsWith(".md")||r.isDirectory())continue;let n=ct((0,L.join)(t,r.name),e,a,"mdc",s);n&&i.push(n)}return i}function ct(t,e,a,s="directory-with-skillmd",i="auto"){try{let r=(0,j.readFileSync)(t,"utf-8"),n=(0,j.statSync)(t),{frontmatter:o,content:l}=UO(r),O=NO(o,l,t,i,e),c=typeof o.description=="string"?o.description:"",d;try{d=(0,j.realpathSync)(t)}catch{d=t}return{id:GO(d),name:O,description:c,type:e,tools:[a],filePath:t,realPath:d,dirPath:(0,L.join)(t,".."),content:r,frontmatter:o,lastModified:n.mtimeMs,fileSize:n.size,isFavorite:!1,collections:[]}}catch{return null}}function os(t,e,a="auto"){switch(t.pattern){case"directory-with-skillmd":return dn(t.baseDir,t.type,e,a);case"flat-md":return BO(t.baseDir,t.type,e,a);case"mdc":return HO(t.baseDir,t.type,e,a)}}function FO(t,e){let a=[],s=[{sub:".claude/skills",type:"skill",pattern:"directory-with-skillmd"},{sub:".claude/commands",type:"command",pattern:"flat-md"},{sub:".claude/agents",type:"agent",pattern:"flat-md"},{sub:".cursor/skills",type:"skill",pattern:"directory-with-skillmd"},{sub:".codex/skills",type:"skill",pattern:"directory-with-skillmd"}];for(let i of s){let r=(0,L.join)(t,i.sub);if(!(0,j.existsSync)(r))continue;let n={baseDir:r,type:i.type,pattern:i.pattern};a.push(...os(n,e))}return a}function pn(t){return t.projectsHomeDir||(0,Vt.homedir)()}function JO(t,e){let a=(0,Vt.homedir)(),s=[];for(let i of[...e.paths,...e.agentPaths]){let r=(0,L.relative)(a,i.baseDir);if(r.startsWith("..")||r.startsWith("/"))continue;let n=(0,L.join)(t,r);if((0,j.existsSync)(n))try{s.push(...os({...i,baseDir:n},e.id))}catch{}}return s}function KO(t){let e=pn(t);if(!(0,j.existsSync)(e))return[];let a=[];try{let s=new Set(["node_modules",".Trash","Library","Applications","Music","Movies","Pictures","Public"]);for(let i of(0,j.readdirSync)(e,{withFileTypes:!0})){if(!i.isDirectory()&&!i.isSymbolicLink()||s.has(i.name))continue;let r=(0,L.join)(e,i.name);for(let n of G){if(!n.isInstalled())continue;let o=t.tools[n.id];if(o&&!o.enabled)continue;let l=JO(r,n);l.length>0&&a.push({items:l,toolId:n.id})}}}catch{}return a}function ls(t,e){let a=e||(0,Vt.homedir)();if(!t.startsWith(a+L.sep))return"global";let i=t.slice(a.length+1).split(L.sep);return i.length>1&&!i[0].startsWith(".")?i[0]:"global"}function un(t){Ps();let e=t.namingMode||"auto",a=new Map,s=new Map;function i(r,n){let o=a.get(r.id);if(o){o.tools.includes(n)||o.tools.push(n);return}let l=s.get(r.name);if(l){let O=a.get(l);O&&!O.tools.includes(n)&&O.tools.push(n);return}r.isFavorite=t.favorites.includes(r.id);for(let[O,c]of Object.entries(t.collections))c.includes(r.id)&&r.collections.push(O);a.set(r.id,r),s.set(r.name,r.id)}for(let r of G){if(!r.isInstalled())continue;let n=t.tools[r.id];if(n&&!n.enabled)continue;let o=[...r.paths,...r.agentPaths];for(let l of o)for(let O of os(l,r.id,e))i(O,r.id)}for(let r of t.customScanPaths)if((0,j.existsSync)(r))for(let n of FO(r,"claude-code"))i(n,"claude-code");if(t.projectScanEnabled)for(let{items:r,toolId:n}of KO(t))for(let o of r)i(o,n);return a}function Os(){return G.filter(t=>t.isInstalled()).map(t=>t.id)}function hn(t){let e=[];for(let a of G)if(a.isInstalled())for(let s of[...a.paths,...a.agentPaths])(0,j.existsSync)(s.baseDir)&&e.push(s.baseDir);if(t?.projectScanEnabled){let a=pn(t),s=new Set(["node_modules",".Trash","Library","Applications","Music","Movies","Pictures","Public"]);try{for(let i of(0,j.readdirSync)(a,{withFileTypes:!0})){if(!i.isDirectory()&&!i.isSymbolicLink()||s.has(i.name))continue;let r=(0,L.join)(a,i.name);for(let n of[".claude/skills",".claude/commands",".claude/agents",".cursor/skills",".codex/skills"]){let o=(0,L.join)(r,n);(0,j.existsSync)(o)&&e.push(o)}}}catch{}}return e}var cs={};for(let[t,e]of Object.entries(zt))cs[e]||(cs[e]=t);var ds=(0,mn.join)((0,fn.homedir)(),".skillkit","install-prefs.json"),Ye=null,qt=!0;function ec(){if(!Ye&&(0,Ie.existsSync)(ds))try{let t=JSON.parse((0,Ie.readFileSync)(ds,"utf-8"));Ye=new Set(t.agents||[]),qt=t.globalInstall??!0}catch{}}function tc(){try{(0,Ie.writeFileSync)(ds,JSON.stringify({agents:Ye?[...Ye]:[],globalInstall:qt}),"utf-8")}catch{}}ec();var Wt=class extends ce.Modal{skill;settings;onInstalled;selectedAgents;isGlobal;constructor(e,a,s,i){if(super(e),this.skill=a,this.settings=s,this.onInstalled=i,Ye)this.selectedAgents=new Set(Ye);else{this.selectedAgents=new Set;let r=Os();for(let n of r){let o=zt[n];o&&this.selectedAgents.add(o)}}this.isGlobal=qt}onOpen(){let{contentEl:e}=this;e.addClass("as-install-modal"),e.createEl("h3",{text:`Install ${this.skill.name}`}),e.createEl("p",{cls:"as-install-source",text:this.skill.source}),new ce.Setting(e).setName("Install globally").setDesc("Shared across all projects (~/.agents/skills/)").addToggle(l=>l.setValue(this.isGlobal).onChange(O=>{this.isGlobal=O})),new ce.Setting(e).setName("Agents").setHeading();let a=e.createDiv("as-install-scroll"),s=Os(),i=new Set(s.map(l=>zt[l]).filter(Boolean));for(let l of Kr){let O=i.has(l.id),c=cs[l.id],p=new ce.Setting(a).addToggle(f=>f.setValue(this.selectedAgents.has(l.id)).onChange(w=>{w?this.selectedAgents.add(l.id):this.selectedAgents.delete(l.id)})).nameEl,u=c&&U[c]?c:U[l.id]?l.id:U[l.id+"-code"]?l.id+"-code":U[l.id+"-cli"]?l.id+"-cli":null,g=p.createSpan("as-install-agent-icon");u?oe(g,u,14):g.addClass("as-install-agent-placeholder"),p.createSpan({text:l.label}),O&&p.createSpan({cls:"as-install-detected",text:"detected"})}let r=e.createDiv("as-install-footer");r.createEl("button",{text:"Cancel"}).addEventListener("click",()=>this.close()),r.createEl("button",{cls:"mod-cta",text:"Install"}).addEventListener("click",()=>this.doInstall())}doInstall(){let e=[...this.selectedAgents];if(e.length===0){new ce.Notice("Select at least one agent",5e3);return}Ye=new Set(this.selectedAgents),qt=this.isGlobal,tc(),this.close(),new ce.Notice(`Installing ${this.skill.name}...`,3e3),tn(this.skill.source,e,{runner:this.settings.packageRunner,globalInstall:this.isGlobal,skillName:this.skill.name}).then(a=>{a.success?(new ce.Notice(`Installed ${this.skill.name}`,5e3),this.skill.installed=!0,this.onInstalled()):new ce.Notice(`Failed to install ${this.skill.name}`,5e3)})}onClose(){this.contentEl.empty()}};var ps=(0,gn.join)((0,Qn.homedir)(),".skillkit","marketplace-popular.json"),de=null,It="",Te=null,ac=new pe.Component;function sc(){if(!de&&(0,Ge.existsSync)(ps))try{let t=JSON.parse((0,Ge.readFileSync)(ps,"utf-8"));de=At(t)}catch{}}function ic(){if(de)try{(0,Ge.writeFileSync)(ps,JSON.stringify(de),"utf-8")}catch{}}sc();var Gt=class{containerEl;inputEl=null;listEl=null;previewEl=null;searchTimer=null;selectedSkill=null;app;settings;onRefresh;constructor(e,a,s,i){this.containerEl=e,this.app=a.app,this.settings=s,this.onRefresh=i}render(){if(!this.inputEl){this.containerEl.empty(),this.containerEl.addClass("as-marketplace");let e=this.containerEl.createDiv("as-mp-search");this.inputEl=e.createEl("input",{type:"text",placeholder:"Search skills on skills.sh...",cls:"as-mp-search-input"}),this.inputEl.addEventListener("input",()=>{this.searchTimer&&window.clearTimeout(this.searchTimer),this.searchTimer=window.setTimeout(()=>{this.doSearch(this.inputEl.value)},300)});let a=this.containerEl.createDiv("as-mp-body");this.listEl=a.createDiv("as-mp-list"),this.previewEl=a.createDiv("as-mp-preview"),this.previewEl.createDiv({cls:"as-mp-hint",text:"Select a skill to preview."})}this.inputEl.value=It,It.length>=2&&Te?this.showResults(Te):de?this.showPopular():this.loadPopular()}async loadPopular(){if(!this.listEl)return;this.listEl.empty(),this.listEl.createDiv({cls:"as-mp-loading",text:"Loading popular skills..."}),de=await Jr(),ic(),this.showPopular()}refreshList(){de&&At(de),Te&&At(Te),It.length>=2&&Te?this.showResults(Te):this.showPopular()}showPopular(){if(this.listEl){if(this.listEl.empty(),!de||de.length===0){this.listEl.createDiv({cls:"as-mp-hint",text:"Search for skills to browse and install."});return}this.listEl.createDiv({cls:"as-mp-section-title",text:"Popular"});for(let e of de)this.renderSkillCard(e)}}showResults(e){if(this.listEl){if(this.listEl.empty(),e.length===0){this.listEl.createDiv({cls:"as-mp-hint",text:"No skills found."});return}for(let a of e)this.renderSkillCard(a)}}async doSearch(e){if(!this.listEl)return;if(It=e,e.length<2){Te=null,this.showPopular();return}this.listEl.empty(),this.listEl.createDiv({cls:"as-mp-loading",text:"Searching..."});let a=await as(e);Te=a,this.showResults(a)}renderSkillCard(e){if(!this.listEl)return;let a=this.listEl.createDiv("as-mp-card");this.selectedSkill?.id===e.id&&a.addClass("is-selected");let s=a.createDiv("as-mp-card-header");s.createSpan({cls:"as-mp-card-name",text:e.name}),e.installed&&s.createSpan({cls:"as-mp-installed-badge",text:"Installed"}),a.createDiv({cls:"as-mp-card-source",text:e.source});let i=a.createDiv("as-mp-card-meta"),r=i.createSpan("as-mp-dl-icon");(0,pe.setIcon)(r,"download"),i.createSpan({cls:"as-mp-card-installs",text:rs(e.installs)}),a.addEventListener("click",()=>{this.selectedSkill=e,this.listEl&&this.listEl.querySelectorAll(".as-mp-card").forEach(n=>n.removeClass("is-selected")),a.addClass("is-selected"),this.showPreview(e)})}async showPreview(e){if(!this.previewEl)return;this.previewEl.empty();let s=this.previewEl.createDiv("as-mp-preview-header").createDiv("as-mp-preview-top"),i=s.createDiv("as-mp-preview-left");i.createDiv({cls:"as-mp-preview-name",text:e.name});let r=i.createDiv("as-mp-preview-meta");r.createSpan({cls:"as-mp-preview-source",text:e.source});let n=r.createSpan("as-mp-dl-icon");(0,pe.setIcon)(n,"download"),r.createSpan({cls:"as-mp-preview-installs",text:rs(e.installs)});let o=s.createDiv("as-mp-preview-right");if(!e.installed)this.renderInstallButton(o,e);else{o.createSpan({cls:"as-mp-installed-label",text:"Installed"});let c=o.createEl("button",{cls:"as-mp-uninstall-btn",text:"Uninstall"});c.addEventListener("click",()=>{je(this.app,"Uninstall skill",`Remove "${e.name}" from all agents?`,()=>{c.setText("Removing..."),c.disabled=!0,new pe.Notice(`Removing ${e.name}...`,3e3),an(e.name,this.settings.packageRunner).then(d=>{d.success?(new pe.Notice(`Removed ${e.name}`,5e3),e.installed=!1,this.refreshList(),this.showPreview(e)):(new pe.Notice(`Failed to remove ${e.name}`,5e3),c.setText("Uninstall"),c.disabled=!1)})})})}let l=this.previewEl.createDiv("as-mp-preview-content");l.createDiv({cls:"as-mp-loading",text:"Loading skill content..."});let O=await Fr(e.source,e.name,e.id);if(l.empty(),O){e.content=O;let c=l.createDiv("as-mp-rendered markdown-rendered");pe.MarkdownRenderer.render(this.app,O,c,"",ac)}else l.createDiv({cls:"as-mp-hint",text:"Could not load skill content."})}renderInstallButton(e,a){e.createEl("button",{cls:"as-mp-install-btn",text:"Install"}).addEventListener("click",()=>{new Wt(this.app,a,this.settings,()=>{this.refreshList(),this.showPreview(a)}).open()})}};var fe=require("obsidian"),ge=require("fs"),Ut=require("path");function rc(){let t=[];for(let e of G){if(!e.isInstalled())continue;let a=[];for(let s of[...e.paths,...e.agentPaths])s.type==="rule"||s.type==="memory"||a.push({sp:s,label:s.type});a.length>0&&t.push({tool:e,paths:a})}return t}var nc={skill:"sparkles",command:"terminal",agent:"bot"},Nt=class extends fe.Modal{onCreated;toolOptions;selectedTool=null;selectedPath=null;name="";step="tool";constructor(e,a){super(e),this.onCreated=a,this.toolOptions=rc()}onOpen(){this.modalEl.addClass("as-create-modal"),this.render()}render(){let{contentEl:e}=this;e.empty(),this.step==="tool"?this.renderToolStep(e):this.step==="type"?this.renderTypeStep(e):this.renderNameStep(e)}renderToolStep(e){this.renderHeader(e,"Choose tool",null);let a=e.createDiv("as-create-grid");for(let s of this.toolOptions){let i=a.createDiv("as-create-card");i.style.setProperty("--tool-color",s.tool.color);let r=i.createDiv("as-create-card-icon");U[s.tool.id]&&oe(r,s.tool.id,24),i.createDiv({cls:"as-create-card-name",text:s.tool.name}),i.addEventListener("click",()=>{this.selectedTool=s,s.paths.length===1?(this.selectedPath=s.paths[0],this.step="name"):this.step="type",this.render()})}}renderTypeStep(e){if(!this.selectedTool)return;this.renderHeader(e,`${this.selectedTool.tool.name}`,()=>{this.step="tool",this.render()}),e.createDiv("as-create-subtitle").setText("What do you want to create?");let s=e.createDiv("as-create-type-grid");for(let i of this.selectedTool.paths){let r=s.createDiv("as-create-type-card");r.style.setProperty("--tool-color",this.selectedTool.tool.color);let n=nc[i.label]||"file",o=r.createDiv("as-create-type-icon");(0,fe.setIcon)(o,n),r.createDiv({cls:"as-create-type-label",text:i.label}),r.addEventListener("click",()=>{this.selectedPath=i,this.step="name",this.render()})}}renderNameStep(e){if(!this.selectedTool||!this.selectedPath)return;let a=this.selectedTool.paths.length>1?"type":"tool";this.renderHeader(e,`New ${this.selectedPath.label}`,()=>{this.step=a,this.render()});let s=e.createDiv("as-create-badge");s.style.setProperty("--tool-color",this.selectedTool.tool.color);let i=s.createSpan("as-create-badge-icon");U[this.selectedTool.tool.id]&&oe(i,this.selectedTool.tool.id,14),s.createSpan({text:this.selectedTool.tool.name});let n=e.createDiv("as-create-input-wrap").createEl("input",{type:"text",placeholder:`my-${this.selectedPath.label}-name`,cls:"as-create-input"});n.value=this.name,n.addEventListener("input",()=>{this.name=n.value.trim()}),n.addEventListener("keydown",O=>{O.key==="Enter"&&this.name&&this.create()}),window.setTimeout(()=>n.focus(),10);let l=e.createDiv("as-create-actions").createEl("button",{text:`Create ${this.selectedPath.label}`,cls:"as-create-submit"});l.style.setProperty("--tool-color",this.selectedTool.tool.color),l.addEventListener("click",()=>this.create())}renderHeader(e,a,s){let i=e.createDiv("as-create-header");if(s){let r=i.createDiv("as-create-back");(0,fe.setIcon)(r,"chevron-left"),r.addEventListener("click",s)}i.createDiv({cls:"as-create-title",text:a})}create(){if(!this.name||!this.selectedPath)return;let e=this.name.toLowerCase().replace(/\s+/g,"-").replace(/[^a-z0-9-]/g,"");if(!e){new fe.Notice("Invalid name");return}let a=this.selectedPath.sp,s;if(a.pattern==="directory-with-skillmd"){let i=(0,Ut.join)(a.baseDir,e);if((0,ge.existsSync)(i)){new fe.Notice(`Already exists: ${e}`);return}(0,ge.mkdirSync)(i,{recursive:!0}),s=(0,Ut.join)(i,"SKILL.md"),(0,ge.writeFileSync)(s,["---",`name: ${this.name}`,'description: ""',"---","",`# ${this.name}`,"","## Instructions","",""].join(`
+`),n=4,o=[];for(let l of r){let O=l.match(/^(\w[\w-]*)\s*:(.*)/);if(O){let c=O[1],d=O[2].trim();o.includes(c)&&e.push({from:n,to:n+c.length,severity:"warning",message:`Duplicate key: "${c}"`}),o.push(c),c==="name"&&(d?d.length>64?e.push({from:n,to:n+l.length,severity:"warning",message:`name exceeds 64 chars (${d.length})`}):TO.test(d)||e.push({from:n+c.length+2,to:n+l.length,severity:"warning",message:"name must be lowercase alphanumeric with single hyphens, no leading/trailing hyphens"}):e.push({from:n,to:n+l.length,severity:"error",message:"name is required"})),c==="description"&&(d?d.length>1024&&e.push({from:n,to:n+l.length,severity:"warning",message:`description exceeds 1024 chars (${d.length})`}):e.push({from:n,to:n+l.length,severity:"warning",message:"description is empty"})),c==="compatibility"&&d.length>500&&e.push({from:n,to:n+l.length,severity:"warning",message:`compatibility exceeds 500 chars (${d.length})`})}n+=l.length+1}return e});var Mr=require("@codemirror/language"),Vr=Mr.foldService.of((t,e,a)=>{let s=t.doc.lineAt(e);if(s.number!==1||s.text.trim()!=="---")return null;for(let i=s.number+1;i<=t.doc.lines;i++){let r=t.doc.line(i);if(r.text.trim()==="---")return{from:s.to,to:r.to}}return null});function Ir(t){let{doc:e,parent:a,onSave:s}=t,i=[Dr,(0,G.lineNumbers)(),(0,G.highlightActiveLineGutter)(),(0,G.highlightActiveLine)(),(0,G.highlightSpecialChars)(),(0,xe.history)(),(0,ue.foldGutter)(),(0,G.drawSelection)(),(0,ue.indentOnInput)(),(0,ue.bracketMatching)(),(0,Rt.closeBrackets)(),(0,ue.syntaxHighlighting)(Yr),G.EditorView.darkTheme.of(activeDocument.body.classList.contains("theme-dark")),Ar,Vr,(0,Lt.lintGutter)(),G.EditorView.lineWrapping,G.keymap.of([{key:"Mod-s",run:r=>(s(r.state.doc.toString()),!0)},xe.indentWithTab,...Rt.closeBracketsKeymap,...xe.defaultKeymap,...xe.historyKeymap,...ue.foldKeymap,...Wr.searchKeymap,...Lt.lintKeymap])];return i.push(Er()),new G.EditorView({state:qr.EditorState.create({doc:e,extensions:i}),parent:a})}function XO(t){return Math.ceil(t.length/4)}function CO(t){return t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`}function Gr(t){return t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function _O(t){return new Date(t).toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}var jO=new V.Component,Yt=class{containerEl;store;settings;saveSettings;currentItem=null;isEditing=!1;app;editorView=null;constructor(e,a,s,i,r){this.containerEl=e,this.store=a,this.settings=s,this.saveSettings=i,this.app=r.app}show(e){this.destroyEditor(),this.currentItem=e,this.isEditing=!1,this.render()}clear(){this.destroyEditor(),this.currentItem=null,this.containerEl.empty(),this.containerEl.addClass("as-detail");let e=this.containerEl.createDiv("as-detail-empty");(0,V.setIcon)(e.createDiv("as-detail-empty-icon"),"file-text"),e.createDiv({text:"Select a skill to view"})}render(){this.containerEl.empty(),this.containerEl.addClass("as-detail");let e=this.currentItem;if(!e)return this.clear();this.renderToolbar(e),this.isEditing?this.renderEditor(e):this.renderPreview(e)}renderToolbar(e){let a=this.containerEl.createDiv("as-detail-toolbar"),s=a.createDiv("as-toolbar-top"),i=s.createDiv("as-toolbar-left");i.createSpan({cls:"as-detail-title",text:e.name});for(let p of e.tools){let u=U.find(f=>f.id===p);if(!u)continue;let g=i.createSpan("as-tool-name-badge");g.setCssProps({"--tool-color":u.color}),W[p]&&oe(g,p,12),g.createSpan({text:u.name})}let r=s.createDiv("as-toolbar-right"),n=r.createEl("button",{cls:"as-toolbar-btn",attr:{"aria-label":"Toggle favorite"}});(0,V.setIcon)(n,e.isFavorite?"star":"star-off"),n.addEventListener("click",()=>{this.store.toggleFavorite(e.id,this.settings),this.saveSettings(),this.render()});let o=r.createEl("button",{cls:"as-toolbar-btn",attr:{"aria-label":this.isEditing?"Preview":"Edit"}});(0,V.setIcon)(o,this.isEditing?"eye":"pencil"),o.addEventListener("click",()=>{this.isEditing=!this.isEditing,this.render()});let l=r.createEl("button",{cls:"as-toolbar-btn",attr:{"aria-label":"Show in system explorer"}});if((0,V.setIcon)(l,"folder-open"),l.addEventListener("click",()=>{ht(e.filePath)}),ee()){let p=r.createEl("button",{cls:"as-toolbar-btn as-toolbar-btn-danger",attr:{"aria-label":"Remove skill"}});(0,V.setIcon)(p,"trash-2"),p.addEventListener("click",()=>{je(this.app,"Remove skill",`Remove "${e.name}"? This will delete the skill files.`,()=>{let u=ze(`prune --skill ${e.name} --yes`);u.success?(new V.Notice(`Removed ${e.name}`,5e3),this.store.refresh(this.settings),this.clear()):new V.Notice(`Failed to remove: ${u.output}`,5e3)})})}let O=a.createDiv("as-detail-meta-bar"),c=XO(e.content),d=e.content.length;if(O.createSpan({cls:"as-meta-item",text:CO(e.fileSize)}),O.createSpan({cls:"as-meta-item",text:`${Gr(d)} chars`}),O.createSpan({cls:"as-meta-item",text:`~${Gr(c)} tokens`}),O.createSpan({cls:"as-meta-item",text:_O(e.lastModified)}),O.createSpan({cls:"as-meta-item as-meta-type",text:e.type}),e.usage&&e.usage.uses>0){let p=a.createDiv("as-detail-usage-bar");p.createSpan({cls:"as-usage-stat",text:`${e.usage.uses} uses`}),p.createSpan({cls:"as-usage-stat",text:`last: ${da(e.usage.lastUsed)}`}),e.usage.isStale&&p.createSpan({cls:"as-badge-stale",text:"stale"}),e.usage.isHeavy&&p.createSpan({cls:"as-badge-heavy",text:"heavy"})}}renderFrontmatter(e,a){let s=Object.keys(a.frontmatter),i=e.createDiv("as-frontmatter");if(a.filePath){let r=i.createDiv("as-fm-prop");r.createSpan({cls:"as-fm-key",text:"path"}),r.createSpan({cls:"as-fm-value",text:a.filePath})}if(!(s.length===0&&!a.filePath))for(let r of s){let n=a.frontmatter[r];if(n==null)continue;let o=i.createDiv("as-fm-prop");o.createSpan({cls:"as-fm-key",text:r});let l=typeof n=="object"?JSON.stringify(n):typeof n=="string"?n:typeof n=="number"||typeof n=="boolean"?String(n):JSON.stringify(n);l.length>200?o.createDiv({cls:"as-fm-value-long",text:l}):o.createSpan({cls:"as-fm-value",text:l})}}renderPreview(e){let a=this.containerEl.createDiv("as-detail-body");this.renderFrontmatter(a,e),this.renderWarnings(a,e),this.renderUsageSection(a,e),this.renderConflicts(a,e),this.renderTraces(a,e);let s=a.createDiv("as-detail-preview markdown-rendered");V.MarkdownRenderer.render(this.app,e.content,s,e.filePath,jO)}renderWarnings(e,a){let s=[];if(a.warnings?.oversized&&s.push(`${a.warnings.lineCount} lines (recommended: <500)`),a.warnings?.longDesc&&s.push(`Description is ${a.warnings.descChars} chars (recommended: <1024)`),a.conflicts&&a.conflicts.length>0){let o=a.conflicts.map(l=>l.skillName).join(", ");s.push(`Conflicts with: ${o}`)}if(s.length===0)return;let i=e.createDiv("as-warnings"),r=i.createDiv("as-warnings-icon");(0,V.setIcon)(r,"alert-triangle");let n=i.createDiv("as-warnings-list");for(let o of s)n.createDiv({cls:"as-warnings-item",text:o})}renderUsageSection(e,a){if(!a.usage||a.usage.uses===0)return;let s=e.createDiv("as-usage-section"),i=s.createDiv("as-usage-left");if(i.createSpan({cls:"as-usage-count",text:String(a.usage.uses)}),i.createSpan({cls:"as-usage-label",text:"uses"}),i.createSpan({cls:"as-usage-last",text:da(a.usage.lastUsed)}),a.usage.daily&&a.usage.daily.length>1){let r=s.createDiv("as-usage-spark");Cs(r,a.usage.daily.map(n=>n.count),80,20)}}renderConflicts(e,a){if(!a.conflicts||a.conflicts.length===0)return;let s=e.createDiv("as-conflicts-section");s.createDiv({cls:"as-section-title",text:`Conflicts (${a.conflicts.length})`});for(let i of a.conflicts){let r=s.createDiv("as-conflict-row");r.createSpan({cls:"as-conflict-name",text:i.skillName}),r.createDiv("as-conflict-bar-wrap").createDiv("as-conflict-bar").setCssProps({"--bar-w":`${(i.similarity*100).toFixed(0)}%`}),r.createSpan({cls:"as-conflict-score",text:`${(i.similarity*100).toFixed(0)}%`})}}renderTraces(e,a){if(!ee())return;let s=xs(a.name);if(s.length===0)return;let i=e.createDiv("as-traces-section");i.createDiv({cls:"as-section-title",text:`Recent traces (${s.length})`});let r=i.createDiv("as-traces-table");for(let n of s){let o=r.createDiv("as-trace-row"),l=new Date(n.timestamp);o.createSpan({cls:"as-trace-date",text:l.toLocaleDateString(void 0,{month:"short",day:"numeric"})}),o.createSpan({cls:"as-trace-model",text:n.model.replace("claude-","").replace("-4-6","")}),o.createSpan({cls:"as-trace-tokens",text:`${(n.tokens/1e3).toFixed(1)}k`}),o.createSpan({cls:"as-trace-cost",text:n.cost>0?`$${n.cost.toFixed(2)}`:""}),o.createSpan({cls:"as-trace-duration",text:`${(n.duration/1e3).toFixed(1)}s`})}i.createDiv({cls:"as-traces-hint",text:"skillkit trace --list --skill "+a.name})}renderPruneAction(e,a){let s=e.createDiv("as-prune-section"),i=s.createEl("button",{cls:"as-prune-btn",text:"Remove this skill"});s.createSpan({cls:"as-prune-hint",text:"This skill hasn't been used in 30+ days"}),i.addEventListener("click",()=>{je(this.app,"Remove skill",`Remove "${a.name}"? This will delete the skill files.`,()=>{let r=ze(`prune --skill ${a.name} --yes`);r.success?(new V.Notice(`Removed ${a.name}`,5e3),this.store.refresh(this.settings)):new V.Notice(`Failed to remove: ${r.output}`,5e3)})})}renderEditor(e){this.destroyEditor();let a=this.containerEl.createDiv("as-detail-body as-detail-body-editor"),s=a.createDiv("as-editor-cm");this.editorView=Ir({doc:e.content,parent:s,onSave:n=>this.saveFile(e,n)});let i=a.createDiv("as-save-bar");i.createEl("button",{cls:"as-save-btn",text:"Save"}).addEventListener("click",()=>{this.editorView&&this.saveFile(e,this.editorView.state.doc.toString())}),i.createSpan({cls:"as-save-hint",text:"Cmd+S to save"})}destroyEditor(){this.editorView&&(this.editorView.destroy(),this.editorView=null)}saveFile(e,a){try{(0,Ur.writeFileSync)(e.filePath,a,"utf-8"),e.content=a,new V.Notice(`Saved ${e.name}`,5e3)}catch(s){new V.Notice(`Failed to save: ${s instanceof Error?s.message:String(s)}`,5e3)}}};var he=require("obsidian");var ts=require("child_process"),J=require("fs"),C=require("path"),Dt=require("os"),Ot=require("obsidian"),D=(0,Dt.homedir)(),qe=(0,Dt.platform)()==="win32",Nr=(0,C.join)(D,".agents",".skill-lock.json"),EO="https://skills.sh/api";async function as(t){if(t.length<2)return[];try{let a=(await(0,Ot.requestUrl)({url:`${EO}/search?q=${encodeURIComponent(t)}&limit=30`})).json;if(!a.skills)return[];let s=en();return a.skills.map(i=>({...i,installed:s.has(i.name)}))}catch{return[]}}var Br=new Map;async function RO(t){let e=Br.get(t);if(e)return e;let i=(await(0,Ot.requestUrl)({url:`https://api.github.com/repos/${t}`})).json.default_branch||"main",o=((await(0,Ot.requestUrl)({url:`https://api.github.com/repos/${t}/git/trees/${i}?recursive=1`})).json.tree??[]).filter(O=>O.path.endsWith("/SKILL.md")).map(O=>O.path),l={branch:i,files:o};return Br.set(t,l),l}function LO(t,e,a){let s=e.split("/"),i=s[s.length-1]||t,r=new Set([i,t]);for(let n of a.split("/")){t.startsWith(n+"-")&&r.add(t.slice(n.length+1));for(let o of n.split("-"))t.startsWith(o+"-")&&r.add(t.slice(o.length+1))}return r}async function Fr(t,e,a){try{let{branch:s,files:i}=await RO(t),r=LO(e,a,t),n=i.find(O=>{let c=O.replace("/SKILL.md","").split("/").pop()||"";return r.has(c)});n||(n=i.find(O=>{let c=O.replace("/SKILL.md","").split("/").pop()||"";return e.includes(c)||c.includes(e)}));let o=n||`skills/${e}/SKILL.md`;return(await(0,Ot.requestUrl)({url:`https://raw.githubusercontent.com/${t}/${s}/${o}`})).text}catch{return null}}async function Jr(){let t=["react","next","clerk","stripe","ai"],e=new Set,a=[];for(let s of t){let i=await as(s);for(let r of i)e.has(r.id)||(e.add(r.id),a.push(r))}return a.sort((s,i)=>i.installs-s.installs).slice(0,20)}function YO(){let t=[];if(qe){let a=process.env.APPDATA||(0,C.join)(D,"AppData","Roaming");t.push((0,C.join)(a,"npm"),(0,C.join)(D,".bun","bin"),(0,C.join)(D,"AppData","Local","npm"))}else t.push("/usr/local/bin","/opt/homebrew/bin",(0,C.join)(D,".local","bin"),(0,C.join)(D,".bun","bin"));let e=qe?(0,C.join)(D,"AppData","Roaming","nvm"):(0,C.join)(D,".nvm","versions","node");try{for(let a of(0,J.readdirSync)(e))t.push(qe?(0,C.join)(e,a):(0,C.join)(e,a,"bin"))}catch{}return[...t,process.env.PATH||""].join(C.delimiter)}function Hr(){let t=qe?["bunx.cmd","bunx.exe","bunx"]:["bunx"],e=[];if(qe){let a=process.env.APPDATA||(0,C.join)(D,"AppData","Roaming");e.push((0,C.join)(D,".bun","bin"),(0,C.join)(a,"npm"))}else e.push((0,C.join)(D,".bun","bin"),"/usr/local/bin","/opt/homebrew/bin");for(let a of e)for(let s of t)if((0,J.existsSync)((0,C.join)(a,s)))return(0,C.join)(a,s);return"npx"}function ss(t="auto"){return t==="npx"?"npx":Hr()}var Kr=[{id:"claude-code",label:"Claude Code"},{id:"cursor",label:"Cursor"},{id:"codex",label:"Codex"},{id:"github-copilot",label:"GitHub Copilot"},{id:"windsurf",label:"Windsurf"},{id:"amp",label:"Amp"},{id:"opencode",label:"OpenCode"},{id:"cline",label:"Cline"},{id:"gemini-cli",label:"Gemini CLI"},{id:"goose",label:"Goose"},{id:"kiro-cli",label:"Kiro"},{id:"kilo",label:"Kilo Code"},{id:"roo",label:"Roo Code"},{id:"continue",label:"Continue"},{id:"openhands",label:"OpenHands"},{id:"antigravity",label:"Antigravity"},{id:"warp",label:"Warp"},{id:"pi",label:"Pi"},{id:"replit",label:"Replit"}],zt={"claude-code":"claude-code",cursor:"cursor",codex:"codex",copilot:"github-copilot",windsurf:"windsurf",amp:"amp",opencode:"opencode",antigravity:"antigravity","claude-desktop":"claude-code",pi:"pi","global-agents":"claude-code",aider:"claude-code",cline:"cline","roo-code":"roo",kilocode:"kilo",continue:"continue",openhands:"openhands",goose:"goose"};function en(){let t=new Set;if(!(0,J.existsSync)(Nr))return t;try{let e=JSON.parse((0,J.readFileSync)(Nr,"utf-8"));if(e.skills)for(let a of Object.keys(e.skills))t.add(a)}catch{}return t}var DO=[(0,C.join)(D,".claude","skills"),(0,C.join)(D,".cursor","skills"),(0,C.join)(D,".codex","skills"),(0,C.join)(D,".codeium","windsurf","skills"),(0,C.join)(D,".config","amp","skills"),(0,C.join)(D,".config","opencode","skills"),(0,C.join)(D,".copilot","skills"),(0,C.join)(D,".agents","skills")];function zO(t){for(let e of DO){let a=(0,C.join)(e,t);if((0,J.existsSync)(a))try{(0,J.rmSync)(a,{recursive:!0,force:!0})}catch{}}AO(t)}function AO(t){let e=(0,C.join)(D,".agents",".skill-lock.json");if((0,J.existsSync)(e))try{let a=JSON.parse((0,J.readFileSync)(e,"utf-8"));a.skills&&a.skills[t]&&(delete a.skills[t],(0,J.writeFileSync)(e,JSON.stringify(a,null,2)+`
+`,"utf-8"))}catch{}}function At(t){let e=en();for(let a of t)a.installed=e.has(a.name);return t}function is(t,e=12e4){return new Promise(a=>{(0,ts.exec)(t,{encoding:"utf-8",timeout:e,env:{...process.env,PATH:YO(),NO_COLOR:"1"},shell:qe?"cmd.exe":void 0},(s,i)=>{let r=String(i??"");!s||r.includes("Done")||r.includes("Installed")||r.includes("Removed")||r.includes("Updated")?a({success:!0,output:r}):a({success:!1,output:s?.message??"Command failed"})})})}async function tn(t,e,a={}){let s=e.length>0?`-a ${e.join(" ")}`:"-a '*'",i=a.globalInstall?"-g":"",r=a.skillName?`-s ${a.skillName}`:"",o=`${ss(a.runner||"auto")} skills add ${t} ${s} ${i} ${r} -y`.replace(/\s+/g," ").trim();return is(o)}async function an(t,e="auto"){let s=`${ss(e)} skills remove ${t} -y`,i=await is(s,3e4);return zO(t),{success:!0,output:i.output||`Cleaned ${t}`}}async function sn(t="auto"){let a=`${ss(t)} skills update`,s=await is(a),i=s.output.match(/Updated (\d+) skill/);return{...s,count:i?parseInt(i[1]):0}}function rs(t){return t>=1e6?`${(t/1e6).toFixed(1)}M`:t>=1e3?`${(t/1e3).toFixed(1)}K`:String(t)}var We=require("fs"),nn=require("path"),on=require("os"),MO=new Set(["Read","Write","Edit","MultiEdit","Bash","Glob","Grep","WebSearch","WebFetch","TodoRead","TodoWrite","Task","Agent","Skill","LSP","NotebookEdit","AskFollowupQuestion","AttemptCompletion","SearchReplace","InsertCodeBlock","ReadImages","ExecuteCommand","ListFiles","SearchFiles","ReadFile","WriteFile","ReplaceInFile","ListCodeDefinitionNames","BrowserAction","UseMcp","shell","shell_command","update_plan","create_plan","read_file","write_file","execute_command","spawn_agent","write_stdin","multi_tool_use.parallel"]);function rn(t){return!(MO.has(t)||t.startsWith("mcp__")||t.startsWith("mcp_"))}function VO(t){let e=t.top_skills.filter(s=>rn(s.name)),a=t.top_skills.filter(s=>!rn(s.name)).reduce((s,i)=>s+i.total,0);return{...t,top_skills:e,total_invocations:Math.max(0,t.total_invocations-a),unique_skills:e.length}}function qO(){let t=De("stats"),e=De("health"),a=De("burn"),s=De("context");return{stats:t,health:e,burn:a&&a.length>0?a[0]:null,context:s}}var ns=(0,nn.join)((0,on.homedir)(),".skillkit","dashboard-cache.json"),me=null,Ze=null;function WO(){if(!me&&(0,We.existsSync)(ns))try{let t=JSON.parse((0,We.readFileSync)(ns,"utf-8"));me=t.data,Ze=t.cachedAt}catch{}}function IO(){if(me)try{(0,We.writeFileSync)(ns,JSON.stringify({data:me,cachedAt:Ze},null,2),"utf-8")}catch{}}WO();var Mt=class{containerEl;app;constructor(e,a){this.containerEl=e,this.app=a}render(){if(this.containerEl.empty(),this.containerEl.addClass("as-dashboard"),!ee()){this.renderNoSkillkit();return}if(me)this.renderDashboard(me);else{let e=this.containerEl.createDiv("as-dash-loading");e.createDiv("as-dash-spinner"),e.createDiv({cls:"as-dash-loading-text",text:"Loading analytics..."}),window.setTimeout(()=>{let a=qO();me=a,Ze=Date.now(),IO(),e.remove(),this.renderDashboard(a)},10)}}renderDashboard(e){this.renderActionBar(e);let a=e.stats?VO(e.stats):null;if(a&&this.renderOverview(a,e.health),a&&this.renderTopSkills(a),e.health||e.context){let s=this.containerEl.createDiv("as-dash-row");e.health&&this.renderHealth(e.health,s),e.context&&this.renderContext(e.context,s)}e.burn&&this.renderBurn(e.burn),e.health&&this.renderStale(e.health)}renderActionBar(e){let a=this.containerEl.createDiv("as-dash-action-bar");if(Ze){let n=Math.round((Date.now()-Ze)/1e3),o=n<5?"just now":n<60?`${n}s ago`:`${Math.round(n/60)}m ago`;a.createSpan({cls:"as-dash-updated",text:`Updated ${o}`})}let s=a.createDiv("as-dash-action-buttons"),i=s.createEl("button",{cls:"as-action-btn",text:"Update skills"});i.addEventListener("click",()=>{i.setText("Updating..."),i.disabled=!0,sn().then(n=>{if(n.success){let o=n.count>0?`Updated ${n.count} skill(s)`:"All skills up to date";new he.Notice(o,5e3),me=null,Ze=null,this.render()}else new he.Notice(`Update failed: ${n.output}`,5e3);i.setText("Update skills"),i.disabled=!1})});let r=s.createEl("button",{cls:"as-action-btn",text:"Scan sessions"});if(r.addEventListener("click",()=>{r.setText("Scanning..."),r.disabled=!0,window.setTimeout(()=>{let n=ze("scan");n.success?(new he.Notice("Scan complete",5e3),me=null,Ze=null,this.render()):new he.Notice(`Scan failed: ${n.output}`,5e3),r.setText("Scan sessions"),r.disabled=!1},10)}),e.health&&e.health.usage.unused_30d>0){let n=s.createEl("button",{cls:"as-action-btn as-action-btn-danger",text:`Prune ${e.health.usage.unused_30d} stale`});n.addEventListener("click",()=>{je(this.app,"Prune stale skills",`Remove ${e.health.usage.unused_30d} unused skills? This cannot be undone.`,()=>{n.setText("Pruning..."),n.disabled=!0,window.setTimeout(()=>{let o=ze("prune --yes");o.success?(new he.Notice("Pruned stale skills",5e3),me=null,Ze=null,this.render()):new he.Notice(`Prune failed: ${o.output}`,5e3),n.setText(`Prune ${e.health.usage.unused_30d} stale`),n.disabled=!1},10)})})}}renderNoSkillkit(){let e=this.containerEl.createDiv("as-dash-empty"),a=e.createDiv("as-dash-empty-icon");(0,he.setIcon)(a,"bar-chart-2"),e.createEl("h3",{text:"Dashboard requires skillkit"}),e.createEl("p",{text:"Install skillkit to unlock usage analytics, burn rate, context tax, and more."}),e.createDiv("as-dash-install-cmd").createEl("code",{text:"npm i -g @crafter/skillkit && skillkit scan"}),e.createEl("a",{cls:"as-skillkit-link",text:"Learn more",href:"https://www.npmjs.com/package/@crafter/skillkit"}).addEventListener("click",r=>{r.preventDefault(),ut("https://www.npmjs.com/package/@crafter/skillkit")})}renderOverview(e,a){let s=this.containerEl.createDiv("as-dash-section");s.createDiv({cls:"as-dash-title",text:"Overview"});let i=s.createDiv("as-dash-stats");if(this.statCard(i,String(e.total_invocations),"invocations","activity"),this.statCard(i,String(e.unique_skills),"active skills","sparkles"),this.statCard(i,String(a?.installed??0),"installed","package"),this.statCard(i,String(a?.usage.unused_30d??0),"stale","alert-triangle"),e.streak&&e.streak.current>0){let r=s.createDiv("as-dash-streak-row");r.createSpan({cls:"as-streak-value",text:`${e.streak.current} day streak`}),e.streak.current>=7&&r.createSpan({cls:"as-streak-fire",text:"on fire"}),r.createSpan({cls:"as-streak-longest",text:`longest: ${e.streak.longest}d`})}if(e.velocity&&e.velocity.this_week>0){let r=s.createDiv("as-dash-velocity-row");r.createSpan({text:`This week: $${e.velocity.this_week.toFixed(0)}`}),r.createSpan({cls:"as-velocity-vs",text:`vs $${e.velocity.last_week.toFixed(0)} last week`});let n=e.velocity.change_pct,o=n>0?"as-velocity-up":n<0?"as-velocity-down":"",l=n>0?"+":"";r.createSpan({cls:`as-velocity-change ${o}`,text:`${l}${n.toFixed(0)}%`})}}statCard(e,a,s,i){let r=e.createDiv("as-stat-card"),n=r.createDiv("as-stat-icon");(0,he.setIcon)(n,i),r.createDiv({cls:"as-stat-value",text:a}),r.createDiv({cls:"as-stat-label",text:s})}renderTopSkills(e){if(e.top_skills.length===0)return;let a=this.containerEl.createDiv("as-dash-section");a.createDiv({cls:"as-dash-title",text:`Top Skills (${e.period.days}d)`});let s=e.top_skills[0]?.total||1,i=a.createDiv("as-dash-bars");for(let r of e.top_skills.slice(0,10)){let n=i.createDiv("as-bar-row");n.createSpan({cls:"as-bar-name",text:r.name}),n.createDiv("as-bar-wrap").createDiv("as-bar-fill").setCssProps({"--bar-w":`${r.total/s*100}%`}),n.createSpan({cls:"as-bar-count",text:String(r.total)})}}renderHealth(e,a){let s=(a||this.containerEl).createDiv("as-dash-section");s.createDiv({cls:"as-dash-title",text:"Health"});let i=e.usage.used_30d+e.usage.unused_30d,r=i>0?Math.round(e.usage.used_30d/i*100):0,n=s.createDiv("as-dash-health-row"),o=n.createDiv("as-donut");o.setCssProps({"--pct":`${r}`}),o.createDiv({cls:"as-donut-label",text:`${r}%`}),o.createDiv({cls:"as-donut-sub",text:"active"});let l=n.createDiv("as-health-details");l.createDiv({cls:"as-health-line",text:`${e.usage.used_30d} used in 30d`}),l.createDiv({cls:"as-health-line as-health-warn",text:`${e.usage.unused_30d} never triggered`});let c=l.createDiv("as-budget-bar").createDiv("as-budget-fill");c.setCssProps({"--bar-w":`${e.metadata.pct}%`}),e.metadata.pct>80&&c.addClass("as-budget-over"),l.createDiv({cls:"as-health-line",text:`Metadata budget: ${e.metadata.pct}%`})}renderBurn(e){let a=this.containerEl.createDiv("as-dash-section");a.createDiv({cls:"as-dash-title",text:`Burn Rate \u2014 ${e.agent} (${e.period.days}d)`});let s=a.createDiv("as-dash-stats as-dash-stats-sm");if(this.statCard(s,`$${Math.round(e.cost.total).toLocaleString()}`,"total cost","flame"),this.statCard(s,`$${Math.round(e.cost.total/(e.period.days||1)).toLocaleString()}`,"daily avg","trending-up"),this.statCard(s,`${(e.period.sessions||0).toLocaleString()}`,"sessions","terminal"),this.statCard(s,`${((e.period.api_calls||0)/1e3).toFixed(0)}k`,"API calls","zap"),e.by_model&&e.by_model.length>0){let o=a.createDiv("as-model-breakdown");for(let l of e.by_model.slice(0,4)){let O=o.createDiv("as-model-row");O.createSpan({cls:"as-model-name",text:l.model}),O.createSpan({cls:"as-model-calls",text:`${l.apiCalls.toLocaleString()} calls`}),l.costUsd>0&&O.createSpan({cls:"as-model-cost",text:`$${Math.round(l.costUsd).toLocaleString()}`})}}let i=e.by_day.slice(-14);if(i.length===0)return;let r=Math.max(...i.map(o=>o.costUsd),1),n=a.createDiv("as-burn-chart");for(let o of i){let l=n.createDiv("as-burn-col"),O=l.createDiv("as-burn-bar"),c=Math.max(2,o.costUsd/r*100);O.setCssProps({"--bar-h":`${c}%`}),O.title=`${o.date}: $${o.costUsd.toFixed(0)}`,l.createDiv({cls:"as-burn-date",text:o.date.slice(8)})}}renderContext(e,a){let s=(a||this.containerEl).createDiv("as-dash-section");s.createDiv({cls:"as-dash-title",text:"Context Tax"});let i=e.always_loaded.total_tokens,r=[{label:"CLAUDE.md",tokens:e.always_loaded.claude_md_tokens,cls:"as-ctx-claude"},{label:"Skills metadata",tokens:e.always_loaded.skill_metadata_tokens,cls:"as-ctx-skills"},{label:"Memory",tokens:e.always_loaded.memory_tokens,cls:"as-ctx-memory"}],n=s.createDiv("as-ctx-bar");for(let O of r){let c=n.createDiv(`as-ctx-part ${O.cls}`);c.setCssProps({"--bar-w":`${O.tokens/i*100}%`}),c.title=`${O.label}: ${(O.tokens/1e3).toFixed(1)}k tokens`}let o=s.createDiv("as-ctx-legend");for(let O of r){let c=o.createDiv("as-ctx-legend-item");c.createSpan({cls:`as-ctx-dot ${O.cls}`}),c.createSpan({text:`${O.label}: ${(O.tokens/1e3).toFixed(1)}k`})}let l=s.createDiv("as-ctx-costs");l.createDiv({text:`Per session (cached): $${e.session_estimate.with_cache.toFixed(2)}`}),l.createDiv({text:`Without cache: $${e.session_estimate.without_cache.toFixed(2)}`}),l.createDiv({cls:"as-ctx-savings",text:`Cache saves ${e.session_estimate.savings_pct.toFixed(0)}%`})}renderStale(e){if(e.usage.never_used.length===0)return;let a=this.containerEl.createDiv("as-dash-section");a.createDiv({cls:"as-dash-title",text:`Stale skills (${e.usage.unused_30d})`});let s=a.createDiv("as-stale-list");for(let i of e.usage.never_used.slice(0,20))s.createDiv("as-stale-item").createSpan({text:i});e.usage.never_used.length>20&&s.createDiv({cls:"as-stale-more",text:`+${e.usage.never_used.length-20} more`})}};var pe=require("obsidian"),Ge=require("fs"),gn=require("path"),Qn=require("os");var ce=require("obsidian"),Ie=require("fs"),mn=require("path"),fn=require("os");var j=require("fs"),L=require("path"),Vt=require("os"),On=require("obsidian"),cn=require("crypto");var ln=new Set(["readme.md","license","license.md","changelog.md",".ds_store","thumbs.db"]);function GO(t){return(0,cn.createHash)("sha256").update(t).digest("hex").slice(0,12)}function UO(t){let e=t.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);if(!e)return{frontmatter:{},content:t};try{let a=(0,On.parseYaml)(e[1]);return{frontmatter:typeof a=="object"&&a?a:{},content:e[2]}}catch{return{frontmatter:{},content:t}}}function NO(t,e,a,s="auto",i="skill"){if(i==="command")return typeof t.name=="string"&&t.name?t.name:(0,L.basename)(a,(0,L.extname)(a));if(s==="auto"){if(typeof t.name=="string"&&t.name)return t.name;let n=e.match(/^#\s+(.+)$/m);if(n)return n[1].trim()}let r=(0,L.basename)(a,(0,L.extname)(a));return r==="SKILL"?(0,L.basename)((0,L.join)(a,"..")):r}function dn(t,e,a,s="auto",i=0){if(!(0,j.existsSync)(t)||i>3)return[];let r=[];for(let n of(0,j.readdirSync)(t,{withFileTypes:!0})){let o=(0,L.join)(t,n.name);if(!(n.isDirectory()||n.isSymbolicLink()&&(0,j.statSync)(o,{throwIfNoEntry:!1})?.isDirectory()))continue;let O=(0,L.join)(o,"SKILL.md");if((0,j.existsSync)(O)){let c=ct(O,e,a,"directory-with-skillmd",s);c&&r.push(c)}else r.push(...dn(o,e,a,s,i+1))}return r}function BO(t,e,a,s="auto"){if(!(0,j.existsSync)(t))return[];let i=[];for(let r of(0,j.readdirSync)(t,{withFileTypes:!0})){let n=(0,L.join)(t,r.name);if(r.isDirectory()||r.isSymbolicLink()&&(0,j.statSync)(n,{throwIfNoEntry:!1})?.isDirectory()){let c=(0,L.join)(n,"SKILL.md");if((0,j.existsSync)(c)){let u=ct(c,e,a,"flat-md",s);u&&i.push(u);continue}let d=(0,j.readdirSync)(n).filter(u=>u.endsWith(".md")&&!ln.has(u.toLowerCase())),p=d.find(u=>u.toLowerCase()===`${r.name.toLowerCase()}.md`)||d[0];if(p){let u=ct((0,L.join)(n,p),e,a,"flat-md",s);u&&i.push(u)}continue}let l=r.name.toLowerCase();if(!l.endsWith(".md")||ln.has(l))continue;let O=ct(n,e,a,"flat-md",s);O&&i.push(O)}return i}function HO(t,e,a,s="auto"){if(!(0,j.existsSync)(t))return[];let i=[];for(let r of(0,j.readdirSync)(t,{withFileTypes:!0})){if(!r.name.endsWith(".mdc")&&!r.name.endsWith(".md")||r.isDirectory())continue;let n=ct((0,L.join)(t,r.name),e,a,"mdc",s);n&&i.push(n)}return i}function ct(t,e,a,s="directory-with-skillmd",i="auto"){try{let r=(0,j.readFileSync)(t,"utf-8"),n=(0,j.statSync)(t),{frontmatter:o,content:l}=UO(r),O=NO(o,l,t,i,e),c=typeof o.description=="string"?o.description:"",d;try{d=(0,j.realpathSync)(t)}catch{d=t}return{id:GO(d),name:O,description:c,type:e,tools:[a],filePath:t,realPath:d,dirPath:(0,L.join)(t,".."),content:r,frontmatter:o,lastModified:n.mtimeMs,fileSize:n.size,isFavorite:!1,collections:[]}}catch{return null}}function os(t,e,a="auto"){switch(t.pattern){case"directory-with-skillmd":return dn(t.baseDir,t.type,e,a);case"flat-md":return BO(t.baseDir,t.type,e,a);case"mdc":return HO(t.baseDir,t.type,e,a)}}function FO(t,e){let a=[],s=[{sub:".claude/skills",type:"skill",pattern:"directory-with-skillmd"},{sub:".claude/commands",type:"command",pattern:"flat-md"},{sub:".claude/agents",type:"agent",pattern:"flat-md"},{sub:".cursor/skills",type:"skill",pattern:"directory-with-skillmd"},{sub:".codex/skills",type:"skill",pattern:"directory-with-skillmd"}];for(let i of s){let r=(0,L.join)(t,i.sub);if(!(0,j.existsSync)(r))continue;let n={baseDir:r,type:i.type,pattern:i.pattern};a.push(...os(n,e))}return a}function pn(t){return t.projectsHomeDir||(0,Vt.homedir)()}function JO(t,e){let a=(0,Vt.homedir)(),s=[];for(let i of[...e.paths,...e.agentPaths]){let r=(0,L.relative)(a,i.baseDir);if(r.startsWith("..")||r.startsWith("/"))continue;let n=(0,L.join)(t,r);if((0,j.existsSync)(n))try{s.push(...os({...i,baseDir:n},e.id))}catch{}}return s}function KO(t){let e=pn(t);if(!(0,j.existsSync)(e))return[];let a=[];try{let s=new Set(["node_modules",".Trash","Library","Applications","Music","Movies","Pictures","Public"]);for(let i of(0,j.readdirSync)(e,{withFileTypes:!0})){if(!i.isDirectory()&&!i.isSymbolicLink()||s.has(i.name))continue;let r=(0,L.join)(e,i.name);for(let n of U){if(!n.isInstalled())continue;let o=t.tools[n.id];if(o&&!o.enabled)continue;let l=JO(r,n);l.length>0&&a.push({items:l,toolId:n.id})}}}catch{}return a}function ls(t,e){let a=e||(0,Vt.homedir)();if(!t.startsWith(a+L.sep))return"global";let i=t.slice(a.length+1).split(L.sep);return i.length>1&&!i[0].startsWith(".")?i[0]:"global"}function un(t){Ps();let e=t.namingMode||"auto",a=new Map,s=new Map;function i(r,n){let o=a.get(r.id);if(o){o.tools.includes(n)||o.tools.push(n);return}let l=s.get(r.name);if(l){let O=a.get(l);O&&!O.tools.includes(n)&&O.tools.push(n);return}r.isFavorite=t.favorites.includes(r.id);for(let[O,c]of Object.entries(t.collections))c.includes(r.id)&&r.collections.push(O);a.set(r.id,r),s.set(r.name,r.id)}for(let r of U){if(!r.isInstalled())continue;let n=t.tools[r.id];if(n&&!n.enabled)continue;let o=[...r.paths,...r.agentPaths];for(let l of o)for(let O of os(l,r.id,e))i(O,r.id)}for(let r of t.customScanPaths)if((0,j.existsSync)(r))for(let n of FO(r,"claude-code"))i(n,"claude-code");if(t.projectScanEnabled)for(let{items:r,toolId:n}of KO(t))for(let o of r)i(o,n);return a}function Os(){return U.filter(t=>t.isInstalled()).map(t=>t.id)}function hn(t){let e=[];for(let a of U)if(a.isInstalled())for(let s of[...a.paths,...a.agentPaths])(0,j.existsSync)(s.baseDir)&&e.push(s.baseDir);if(t?.projectScanEnabled){let a=pn(t),s=new Set(["node_modules",".Trash","Library","Applications","Music","Movies","Pictures","Public"]);try{for(let i of(0,j.readdirSync)(a,{withFileTypes:!0})){if(!i.isDirectory()&&!i.isSymbolicLink()||s.has(i.name))continue;let r=(0,L.join)(a,i.name);for(let n of[".claude/skills",".claude/commands",".claude/agents",".cursor/skills",".codex/skills"]){let o=(0,L.join)(r,n);(0,j.existsSync)(o)&&e.push(o)}}}catch{}}return e}var cs={};for(let[t,e]of Object.entries(zt))cs[e]||(cs[e]=t);var ds=(0,mn.join)((0,fn.homedir)(),".skillkit","install-prefs.json"),Ye=null,qt=!0;function ec(){if(!Ye&&(0,Ie.existsSync)(ds))try{let t=JSON.parse((0,Ie.readFileSync)(ds,"utf-8"));Ye=new Set(t.agents||[]),qt=t.globalInstall??!0}catch{}}function tc(){try{(0,Ie.writeFileSync)(ds,JSON.stringify({agents:Ye?[...Ye]:[],globalInstall:qt}),"utf-8")}catch{}}ec();var Wt=class extends ce.Modal{skill;settings;onInstalled;selectedAgents;isGlobal;constructor(e,a,s,i){if(super(e),this.skill=a,this.settings=s,this.onInstalled=i,Ye)this.selectedAgents=new Set(Ye);else{this.selectedAgents=new Set;let r=Os();for(let n of r){let o=zt[n];o&&this.selectedAgents.add(o)}}this.isGlobal=qt}onOpen(){let{contentEl:e}=this;e.addClass("as-install-modal"),e.createEl("h3",{text:`Install ${this.skill.name}`}),e.createEl("p",{cls:"as-install-source",text:this.skill.source}),new ce.Setting(e).setName("Install globally").setDesc("Shared across all projects (~/.agents/skills/)").addToggle(l=>l.setValue(this.isGlobal).onChange(O=>{this.isGlobal=O})),new ce.Setting(e).setName("Agents").setHeading();let a=e.createDiv("as-install-scroll"),s=Os(),i=new Set(s.map(l=>zt[l]).filter(Boolean));for(let l of Kr){let O=i.has(l.id),c=cs[l.id],p=new ce.Setting(a).addToggle(f=>f.setValue(this.selectedAgents.has(l.id)).onChange(w=>{w?this.selectedAgents.add(l.id):this.selectedAgents.delete(l.id)})).nameEl,u=c&&W[c]?c:W[l.id]?l.id:W[l.id+"-code"]?l.id+"-code":W[l.id+"-cli"]?l.id+"-cli":null,g=p.createSpan("as-install-agent-icon");u?oe(g,u,14):g.addClass("as-install-agent-placeholder"),p.createSpan({text:l.label}),O&&p.createSpan({cls:"as-install-detected",text:"detected"})}let r=e.createDiv("as-install-footer");r.createEl("button",{text:"Cancel"}).addEventListener("click",()=>this.close()),r.createEl("button",{cls:"mod-cta",text:"Install"}).addEventListener("click",()=>this.doInstall())}doInstall(){let e=[...this.selectedAgents];if(e.length===0){new ce.Notice("Select at least one agent",5e3);return}Ye=new Set(this.selectedAgents),qt=this.isGlobal,tc(),this.close(),new ce.Notice(`Installing ${this.skill.name}...`,3e3),tn(this.skill.source,e,{runner:this.settings.packageRunner,globalInstall:this.isGlobal,skillName:this.skill.name}).then(a=>{a.success?(new ce.Notice(`Installed ${this.skill.name}`,5e3),this.skill.installed=!0,this.onInstalled()):new ce.Notice(`Failed to install ${this.skill.name}`,5e3)})}onClose(){this.contentEl.empty()}};var ps=(0,gn.join)((0,Qn.homedir)(),".skillkit","marketplace-popular.json"),de=null,It="",Te=null,ac=new pe.Component;function sc(){if(!de&&(0,Ge.existsSync)(ps))try{let t=JSON.parse((0,Ge.readFileSync)(ps,"utf-8"));de=At(t)}catch{}}function ic(){if(de)try{(0,Ge.writeFileSync)(ps,JSON.stringify(de),"utf-8")}catch{}}sc();var Gt=class{containerEl;inputEl=null;listEl=null;previewEl=null;searchTimer=null;selectedSkill=null;app;settings;onRefresh;constructor(e,a,s,i){this.containerEl=e,this.app=a.app,this.settings=s,this.onRefresh=i}render(){if(!this.inputEl){this.containerEl.empty(),this.containerEl.addClass("as-marketplace");let e=this.containerEl.createDiv("as-mp-search");this.inputEl=e.createEl("input",{type:"text",placeholder:"Search skills on skills.sh...",cls:"as-mp-search-input"}),this.inputEl.addEventListener("input",()=>{this.searchTimer&&window.clearTimeout(this.searchTimer),this.searchTimer=window.setTimeout(()=>{this.doSearch(this.inputEl.value)},300)});let a=this.containerEl.createDiv("as-mp-body");this.listEl=a.createDiv("as-mp-list"),this.previewEl=a.createDiv("as-mp-preview"),this.previewEl.createDiv({cls:"as-mp-hint",text:"Select a skill to preview."})}this.inputEl.value=It,It.length>=2&&Te?this.showResults(Te):de?this.showPopular():this.loadPopular()}async loadPopular(){if(!this.listEl)return;this.listEl.empty(),this.listEl.createDiv({cls:"as-mp-loading",text:"Loading popular skills..."}),de=await Jr(),ic(),this.showPopular()}refreshList(){de&&At(de),Te&&At(Te),It.length>=2&&Te?this.showResults(Te):this.showPopular()}showPopular(){if(this.listEl){if(this.listEl.empty(),!de||de.length===0){this.listEl.createDiv({cls:"as-mp-hint",text:"Search for skills to browse and install."});return}this.listEl.createDiv({cls:"as-mp-section-title",text:"Popular"});for(let e of de)this.renderSkillCard(e)}}showResults(e){if(this.listEl){if(this.listEl.empty(),e.length===0){this.listEl.createDiv({cls:"as-mp-hint",text:"No skills found."});return}for(let a of e)this.renderSkillCard(a)}}async doSearch(e){if(!this.listEl)return;if(It=e,e.length<2){Te=null,this.showPopular();return}this.listEl.empty(),this.listEl.createDiv({cls:"as-mp-loading",text:"Searching..."});let a=await as(e);Te=a,this.showResults(a)}renderSkillCard(e){if(!this.listEl)return;let a=this.listEl.createDiv("as-mp-card");this.selectedSkill?.id===e.id&&a.addClass("is-selected");let s=a.createDiv("as-mp-card-header");s.createSpan({cls:"as-mp-card-name",text:e.name}),e.installed&&s.createSpan({cls:"as-mp-installed-badge",text:"Installed"}),a.createDiv({cls:"as-mp-card-source",text:e.source});let i=a.createDiv("as-mp-card-meta"),r=i.createSpan("as-mp-dl-icon");(0,pe.setIcon)(r,"download"),i.createSpan({cls:"as-mp-card-installs",text:rs(e.installs)}),a.addEventListener("click",()=>{this.selectedSkill=e,this.listEl&&this.listEl.querySelectorAll(".as-mp-card").forEach(n=>n.removeClass("is-selected")),a.addClass("is-selected"),this.showPreview(e)})}async showPreview(e){if(!this.previewEl)return;this.previewEl.empty();let s=this.previewEl.createDiv("as-mp-preview-header").createDiv("as-mp-preview-top"),i=s.createDiv("as-mp-preview-left");i.createDiv({cls:"as-mp-preview-name",text:e.name});let r=i.createDiv("as-mp-preview-meta");r.createSpan({cls:"as-mp-preview-source",text:e.source});let n=r.createSpan("as-mp-dl-icon");(0,pe.setIcon)(n,"download"),r.createSpan({cls:"as-mp-preview-installs",text:rs(e.installs)});let o=s.createDiv("as-mp-preview-right");if(!e.installed)this.renderInstallButton(o,e);else{o.createSpan({cls:"as-mp-installed-label",text:"Installed"});let c=o.createEl("button",{cls:"as-mp-uninstall-btn",text:"Uninstall"});c.addEventListener("click",()=>{je(this.app,"Uninstall skill",`Remove "${e.name}" from all agents?`,()=>{c.setText("Removing..."),c.disabled=!0,new pe.Notice(`Removing ${e.name}...`,3e3),an(e.name,this.settings.packageRunner).then(d=>{d.success?(new pe.Notice(`Removed ${e.name}`,5e3),e.installed=!1,this.refreshList(),this.showPreview(e)):(new pe.Notice(`Failed to remove ${e.name}`,5e3),c.setText("Uninstall"),c.disabled=!1)})})})}let l=this.previewEl.createDiv("as-mp-preview-content");l.createDiv({cls:"as-mp-loading",text:"Loading skill content..."});let O=await Fr(e.source,e.name,e.id);if(l.empty(),O){e.content=O;let c=l.createDiv("as-mp-rendered markdown-rendered");pe.MarkdownRenderer.render(this.app,O,c,"",ac)}else l.createDiv({cls:"as-mp-hint",text:"Could not load skill content."})}renderInstallButton(e,a){e.createEl("button",{cls:"as-mp-install-btn",text:"Install"}).addEventListener("click",()=>{new Wt(this.app,a,this.settings,()=>{this.refreshList(),this.showPreview(a)}).open()})}};var fe=require("obsidian"),ge=require("fs"),Ut=require("path");function rc(){let t=[];for(let e of U){if(!e.isInstalled())continue;let a=[];for(let s of[...e.paths,...e.agentPaths])s.type==="rule"||s.type==="memory"||a.push({sp:s,label:s.type});a.length>0&&t.push({tool:e,paths:a})}return t}var nc={skill:"sparkles",command:"terminal",agent:"bot"},Nt=class extends fe.Modal{onCreated;toolOptions;selectedTool=null;selectedPath=null;name="";step="tool";constructor(e,a){super(e),this.onCreated=a,this.toolOptions=rc()}onOpen(){this.modalEl.addClass("as-create-modal"),this.render()}render(){let{contentEl:e}=this;e.empty(),this.step==="tool"?this.renderToolStep(e):this.step==="type"?this.renderTypeStep(e):this.renderNameStep(e)}renderToolStep(e){this.renderHeader(e,"Choose tool",null);let a=e.createDiv("as-create-grid");for(let s of this.toolOptions){let i=a.createDiv("as-create-card");i.style.setProperty("--tool-color",s.tool.color);let r=i.createDiv("as-create-card-icon");W[s.tool.id]&&oe(r,s.tool.id,24),i.createDiv({cls:"as-create-card-name",text:s.tool.name}),i.addEventListener("click",()=>{this.selectedTool=s,s.paths.length===1?(this.selectedPath=s.paths[0],this.step="name"):this.step="type",this.render()})}}renderTypeStep(e){if(!this.selectedTool)return;this.renderHeader(e,`${this.selectedTool.tool.name}`,()=>{this.step="tool",this.render()}),e.createDiv("as-create-subtitle").setText("What do you want to create?");let s=e.createDiv("as-create-type-grid");for(let i of this.selectedTool.paths){let r=s.createDiv("as-create-type-card");r.style.setProperty("--tool-color",this.selectedTool.tool.color);let n=nc[i.label]||"file",o=r.createDiv("as-create-type-icon");(0,fe.setIcon)(o,n),r.createDiv({cls:"as-create-type-label",text:i.label}),r.addEventListener("click",()=>{this.selectedPath=i,this.step="name",this.render()})}}renderNameStep(e){if(!this.selectedTool||!this.selectedPath)return;let a=this.selectedTool.paths.length>1?"type":"tool";this.renderHeader(e,`New ${this.selectedPath.label}`,()=>{this.step=a,this.render()});let s=e.createDiv("as-create-badge");s.style.setProperty("--tool-color",this.selectedTool.tool.color);let i=s.createSpan("as-create-badge-icon");W[this.selectedTool.tool.id]&&oe(i,this.selectedTool.tool.id,14),s.createSpan({text:this.selectedTool.tool.name});let n=e.createDiv("as-create-input-wrap").createEl("input",{type:"text",placeholder:`my-${this.selectedPath.label}-name`,cls:"as-create-input"});n.value=this.name,n.addEventListener("input",()=>{this.name=n.value.trim()}),n.addEventListener("keydown",O=>{O.key==="Enter"&&this.name&&this.create()}),window.setTimeout(()=>n.focus(),10);let l=e.createDiv("as-create-actions").createEl("button",{text:`Create ${this.selectedPath.label}`,cls:"as-create-submit"});l.style.setProperty("--tool-color",this.selectedTool.tool.color),l.addEventListener("click",()=>this.create())}renderHeader(e,a,s){let i=e.createDiv("as-create-header");if(s){let r=i.createDiv("as-create-back");(0,fe.setIcon)(r,"chevron-left"),r.addEventListener("click",s)}i.createDiv({cls:"as-create-title",text:a})}create(){if(!this.name||!this.selectedPath)return;let e=this.name.toLowerCase().replace(/\s+/g,"-").replace(/[^a-z0-9-]/g,"");if(!e){new fe.Notice("Invalid name");return}let a=this.selectedPath.sp,s;if(a.pattern==="directory-with-skillmd"){let i=(0,Ut.join)(a.baseDir,e);if((0,ge.existsSync)(i)){new fe.Notice(`Already exists: ${e}`);return}(0,ge.mkdirSync)(i,{recursive:!0}),s=(0,Ut.join)(i,"SKILL.md"),(0,ge.writeFileSync)(s,["---",`name: ${this.name}`,'description: ""',"---","",`# ${this.name}`,"","## Instructions","",""].join(`
`),"utf-8")}else{if((0,ge.existsSync)(a.baseDir)||(0,ge.mkdirSync)(a.baseDir,{recursive:!0}),s=(0,Ut.join)(a.baseDir,`${e}.md`),(0,ge.existsSync)(s)){new fe.Notice(`Already exists: ${e}.md`);return}(0,ge.writeFileSync)(s,["---",'description: ""',"---","",""].join(`
`),"utf-8")}new fe.Notice(`Created ${this.name}`),this.close(),this.onCreated(s)}onClose(){this.contentEl.empty()}};var Pn=require("obsidian"),Ue=require("fs"),yn=require("path"),wn=require("os");var us={customTags:{},favorites:[]},hs={tools:{},watchEnabled:!0,watchDebounceMs:500,deepSearchDefault:!1,deepSearchScope:"both",favorites:[],collections:{},customScanPaths:[],namingMode:"auto",projectScanEnabled:!0,projectsHomeDir:"",packageRunner:"auto"};var ne=require("fs"),ke=require("path"),gs=require("os"),Sn=require("readline"),oc=(0,ke.join)((0,gs.homedir)(),".claude"),ms=(0,ke.join)(oc,"projects"),lc=5*1024*1024,fs=500;function Oc(t){let e=(0,gs.homedir)().split(ke.sep).filter(Boolean),a=e.join("-"),s=t;if(s.startsWith(a+"-"))s=s.slice(a.length+1);else if(s.startsWith("-")){s=s.slice(1);let r=e.join("-")+"-";s.startsWith(r)&&(s=s.slice(r.length))}let i=s.split("-").filter(Boolean);return i.length<=2?i.join("-")||"root":i.slice(-2).join("-")}function Bt(t){if(typeof t=="string")return t;if(Array.isArray(t)){let e=[];for(let a of t)if(typeof a=="object"&&a!==null){let s=a;s.type==="text"&&typeof s.text=="string"&&e.push(s.text)}return e.join(`
`)}return""}function vn(t){if(!Array.isArray(t))return[];let e=[];for(let a of t)if(typeof a=="object"&&a!==null){let s=a;s.type==="tool_use"&&typeof s.name=="string"&&e.push(s.name)}return e}function cc(t){let e=[],a="",s="";for(let i of t)try{let r=JSON.parse(i),n=typeof r.timestamp=="string"?r.timestamp:void 0;if(n&&(a||(a=n),s=n),r.type==="user"){let o=r.message;if(!o)continue;let l=Bt(o.content);l&&e.push({role:"human",text:l,timestamp:n||""})}if(r.type==="assistant"){let o=r.message;if(!o)continue;let l=Bt(o.content),O=vn(o.content);l&&e.push({role:"assistant",text:l,timestamp:n||"",toolCalls:O.length>0?O:void 0})}}catch{}return{messages:e,firstTimestamp:a,lastTimestamp:s}}function dc(){let t=[];if(!(0,ne.existsSync)(ms))return t;let e;try{e=(0,ne.readdirSync)(ms)}catch{return t}for(let a of e){let s=(0,ke.join)(ms,a);try{if(!(0,ne.statSync)(s).isDirectory())continue}catch{continue}let i=Oc(a),r;try{r=(0,ne.readdirSync)(s).filter(n=>n.endsWith(".jsonl"))}catch{continue}for(let n of r){let o=(0,ke.join)(s,n);try{let l=(0,ne.statSync)(o);t.push({uuid:(0,ke.basename)(n,".jsonl"),project:i,projectPath:s,filePath:o,fileSize:l.size})}catch{continue}}}return t}function pc(t){try{let a=(0,ne.readFileSync)(t.filePath,"utf-8").split(`
@@ -27,4 +27,4 @@ var ra=Object.defineProperty;var Rn=Object.getOwnPropertyDescriptor;var Ln=Objec
`)}function bc(t){return t?new Date(t).toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):""}var Jt=class{containerEl;store;app;vaultPath;currentItem=null;selectedMessages=new Set;visibleCount=20;renderComponent=new z.Component;constructor(e,a,s,i){this.containerEl=e,this.store=a,this.app=s,this.vaultPath=i}show(e){this.currentItem=e,this.selectedMessages.clear(),this.visibleCount=20,this.render()}clear(){this.currentItem=null,this.containerEl.empty(),this.containerEl.addClass("as-detail");let e=this.containerEl.createDiv("as-detail-empty");(0,z.setIcon)(e.createDiv("as-detail-empty-icon"),"message-circle"),e.createDiv({text:"Select a conversation to view"})}render(){this.containerEl.empty(),this.containerEl.addClass("as-detail");let e=this.currentItem;if(!e)return this.clear();this.renderToolbar(e),this.renderBody(e)}renderToolbar(e){let a=this.containerEl.createDiv("as-detail-toolbar"),s=a.createDiv("as-toolbar-top"),i=s.createDiv("as-toolbar-left"),r=e.title.length>100?e.title.slice(0,100)+"...":e.title;i.createSpan({cls:"as-detail-title",text:r});let n=s.createDiv("as-toolbar-right"),o=n.createEl("button",{cls:"as-toolbar-btn",attr:{"aria-label":"Toggle favorite"}});(0,z.setIcon)(o,e.isFavorite?"star":"star-off"),o.addEventListener("click",()=>{this.store.toggleFavorite(e.uuid),this.render()});let l=n.createEl("button",{cls:"as-toolbar-btn",attr:{"aria-label":"Copy resume command"}});(0,z.setIcon)(l,"terminal"),l.addEventListener("click",()=>{navigator.clipboard.writeText(`claude --resume ${e.uuid}`),new z.Notice("Resume command copied!",3e3)});let O=n.createEl("button",{cls:"as-toolbar-btn as-toolbar-btn-primary",attr:{"aria-label":"Save to vault"}});(0,z.setIcon)(O,"download"),O.addEventListener("click",()=>this.saveToVault(e));let c=a.createDiv("as-detail-meta-bar");c.createSpan({cls:"as-meta-item",text:e.project}),c.createSpan({cls:"as-meta-item",text:`${e.messageCount} messages`}),e.firstTimestamp&&c.createSpan({cls:"as-meta-item",text:new Date(e.firstTimestamp).toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})});let d=[...e.tags,...e.customTags];if(d.length>0){let p=a.createDiv("as-conv-detail-tags");for(let g of d){let f=e.customTags.includes(g),w=p.createSpan({cls:`as-conv-tag ${f?"as-conv-tag-custom":""}`,text:g});if(f){let P=w.createSpan("as-conv-tag-remove");(0,z.setIcon)(P,"x"),P.addEventListener("click",Z=>{Z.stopPropagation(),this.store.removeCustomTag(e.uuid,g),this.render()})}}let u=p.createSpan("as-conv-tag as-conv-tag-add");(0,z.setIcon)(u,"plus"),u.addEventListener("click",()=>this.promptAddTag(e))}}renderBody(e){let a=this.containerEl.createDiv("as-detail-body");if(this.selectedMessages.size>0){let l=a.createDiv("as-conv-selection-bar");l.createSpan({text:`${this.selectedMessages.size} message${this.selectedMessages.size>1?"s":""} selected`}),l.createEl("button",{cls:"as-conv-save-selected-btn",text:"Save selected to vault"}).addEventListener("click",()=>this.saveToVault(e))}let s=20,i=e.messages.length,r=e.messages.slice(0,this.visibleCount);for(let l=0;l{this.visibleCount+=s,this.render()}),c.createEl("button",{text:`Show all ${i} messages`,cls:"as-conv-show-all-btn"}).addEventListener("click",()=>{this.visibleCount=i,this.render()})}let n=a.createDiv("as-conv-resume-section");n.createDiv({cls:"as-section-title",text:"Resume this conversation"}),n.createEl("code",{cls:"as-conv-resume-cmd",text:`claude --resume ${e.uuid}`}).addEventListener("click",()=>{navigator.clipboard.writeText(`claude --resume ${e.uuid}`),new z.Notice("Copied!",2e3)})}renderMessage(e,a,s){let i=a.role==="human",r=e.createDiv(`as-conv-msg ${i?"as-conv-msg-human":"as-conv-msg-assistant"}`);this.selectedMessages.has(s)&&r.addClass("as-conv-msg-selected");let n=r.createDiv("as-conv-msg-header"),o=n.createSpan("as-conv-msg-role-icon");(0,z.setIcon)(o,i?"user":"bot"),n.createSpan({cls:"as-conv-msg-role",text:i?"You":"Claude"}),a.timestamp&&n.createSpan({cls:"as-conv-msg-time",text:bc(a.timestamp)});let l=n.createSpan("as-conv-msg-select");(0,z.setIcon)(l,this.selectedMessages.has(s)?"check-square":"square"),l.setAttribute("aria-label","Select message for export"),l.addEventListener("click",d=>{d.stopPropagation(),this.selectedMessages.has(s)?this.selectedMessages.delete(s):this.selectedMessages.add(s),this.render()});let O=r.createDiv("as-conv-msg-content"),c=a.text.length>2e3&&!i?a.text.slice(0,2e3)+`
*... (truncated)*`:a.text;if(z.MarkdownRenderer.render(this.app,c,O,"",this.renderComponent),a.toolCalls&&a.toolCalls.length>0){let d=r.createDiv("as-conv-msg-tools"),p=[...new Set(a.toolCalls)];for(let u of p.slice(0,5))d.createSpan({cls:"as-conv-tool-badge",text:u});p.length>5&&d.createSpan({cls:"as-conv-tool-badge",text:`+${p.length-5}`})}}promptAddTag(e){let a=this.containerEl.querySelector(".as-conv-detail-tags");if(!a)return;let s=a.querySelector(".as-conv-tag-add");if(!s)return;let i=createEl("input",{type:"text",placeholder:"Enter tag...",cls:"as-conv-tag-input"});s.replaceWith(i),i.focus();let r=!1,n=()=>{if(r)return;r=!0;let o=i.value.trim().toLowerCase().replace(/\s+/g,"-");o&&this.store.addCustomTag(e.uuid,o),this.render()};i.addEventListener("keydown",o=>{o.key==="Enter"&&n(),o.key==="Escape"&&this.render()}),i.addEventListener("blur",n)}saveToVault(e){if(this.selectedMessages.size===0){new z.Notice("Select messages to export first",3e3);return}let a=Array.from(this.selectedMessages).sort((n,o)=>n-o).map(n=>e.messages[n]).filter(Boolean),s=Zn({selectedMessages:a,conversation:e,vaultPath:this.vaultPath}),i=(0,dt.resolve)(xn(e,this.vaultPath));if(!i.startsWith((0,dt.resolve)(this.vaultPath))){new z.Notice("Invalid path \u2014 cannot save outside vault",5e3);return}let r=(0,dt.dirname)(i);try{(0,Ne.existsSync)(r)||(0,Ne.mkdirSync)(r,{recursive:!0}),(0,Ne.writeFileSync)(i,s,"utf-8"),new z.Notice(`Saved to ${i.split("/").slice(-2).join("/")}`,5e3)}catch(n){new z.Notice(`Failed to save: ${n instanceof Error?n.message:String(n)}`,5e3)}}};var pt="agentfiles-view",Kt=class extends Tn.ItemView{store;settings;saveSettings;sidebarPanel;listPanel;detailPanel;dashboardPanel;marketplacePanel;conversationStore=new Ht;convListPanel;convDetailPanel;sidebarEl;listEl;detailEl;dashboardEl;marketplaceEl;convListWrapperEl;convDetailWrapperEl;skillListWrapperEl;skillDetailWrapperEl;resizeHandle1;resizeHandle2;isDashboard=!1;isMarketplace=!1;isConversations=!1;updateRef=null;convUpdateRef=null;dragCleanup=null;constructor(e,a,s,i){super(e),this.store=a,this.settings=s,this.saveSettings=i}getViewType(){return pt}getDisplayText(){return"Agentfiles"}getIcon(){return"cpu"}async onOpen(){let e=this.contentEl;e.empty(),e.addClass("as-container"),this.sidebarEl=e.createDiv("as-panel as-panel-sidebar"),this.resizeHandle1=this.createResizeHandle(e,this.sidebarEl,"--as-sidebar-width",120,400),this.listEl=e.createDiv("as-panel as-panel-list"),this.resizeHandle2=this.createResizeHandle(e,this.listEl,"--as-list-width",180,600),this.detailEl=e.createDiv("as-panel as-panel-detail"),this.dashboardEl=e.createDiv("as-panel as-panel-dashboard as-hidden"),this.marketplaceEl=e.createDiv("as-panel as-panel-marketplace as-hidden"),this.skillListWrapperEl=this.listEl.createDiv("as-wrapper"),this.convListWrapperEl=this.listEl.createDiv("as-wrapper as-hidden"),this.skillDetailWrapperEl=this.detailEl.createDiv("as-wrapper"),this.convDetailWrapperEl=this.detailEl.createDiv("as-wrapper as-hidden");let a=this.app.vault.adapter.getBasePath?.()||"";this.sidebarPanel=new ft(this.sidebarEl,this.store,()=>this.toggleDashboard(),()=>this.toggleMarketplace(),()=>this.openCreateModal(),()=>this.toggleConversations(),this.conversationStore),this.listPanel=new gt(this.skillListWrapperEl,this.store,s=>this.onSelectItem(s)),this.detailPanel=new Yt(this.skillDetailWrapperEl,this.store,this.settings,this.saveSettings,this),this.dashboardPanel=new Mt(this.dashboardEl,this.app),this.marketplacePanel=new Gt(this.marketplaceEl,this,this.settings,()=>{this.store.refresh(this.settings)}),this.convListPanel=new Ft(this.convListWrapperEl,this.conversationStore,s=>this.onSelectConversation(s)),this.convDetailPanel=new Jt(this.convDetailWrapperEl,this.conversationStore,this.app,a),this.updateRef=this.store.on("updated",()=>this.renderAll()),this.convUpdateRef=this.conversationStore.on("conversations-updated",()=>{this.isConversations&&(this.convListPanel.render(),this.sidebarPanel.render())}),this.renderAll(),this.store.revalidate()}hideAllSpecialPanels(){this.listEl.addClass("as-hidden"),this.detailEl.addClass("as-hidden"),this.resizeHandle1.addClass("as-hidden"),this.resizeHandle2.addClass("as-hidden"),this.dashboardEl.addClass("as-hidden"),this.marketplaceEl.addClass("as-hidden")}showDefaultPanels(){this.listEl.removeClass("as-hidden"),this.detailEl.removeClass("as-hidden"),this.resizeHandle1.removeClass("as-hidden"),this.resizeHandle2.removeClass("as-hidden")}showSkillPanels(){this.skillListWrapperEl.removeClass("as-hidden"),this.skillDetailWrapperEl.removeClass("as-hidden"),this.convListWrapperEl.addClass("as-hidden"),this.convDetailWrapperEl.addClass("as-hidden")}showConversationPanels(){this.skillListWrapperEl.addClass("as-hidden"),this.skillDetailWrapperEl.addClass("as-hidden"),this.convListWrapperEl.removeClass("as-hidden"),this.convDetailWrapperEl.removeClass("as-hidden")}toggleDashboard(){this.dragCleanup?.(),this.dragCleanup=null,this.isDashboard=!this.isDashboard,this.isMarketplace=!1,this.isConversations=!1,this.hideAllSpecialPanels(),this.isDashboard?(this.dashboardEl.removeClass("as-hidden"),this.dashboardPanel.render()):(this.showDefaultPanels(),this.showSkillPanels()),this.sidebarPanel.setDashboardActive(this.isDashboard),this.sidebarPanel.setMarketplaceActive(!1),this.sidebarPanel.setConversationsActive(!1),this.sidebarPanel.render()}toggleMarketplace(){this.dragCleanup?.(),this.dragCleanup=null,this.isMarketplace=!this.isMarketplace,this.isDashboard=!1,this.isConversations=!1,this.hideAllSpecialPanels(),this.isMarketplace?(this.marketplaceEl.removeClass("as-hidden"),this.marketplacePanel.render()):(this.showDefaultPanels(),this.showSkillPanels()),this.sidebarPanel.setMarketplaceActive(this.isMarketplace),this.sidebarPanel.setDashboardActive(!1),this.sidebarPanel.setConversationsActive(!1),this.sidebarPanel.render()}toggleConversations(){this.dragCleanup?.(),this.dragCleanup=null,this.isConversations=!this.isConversations,this.isDashboard=!1,this.isMarketplace=!1,this.hideAllSpecialPanels(),this.isConversations?(this.showDefaultPanels(),this.showConversationPanels(),this.conversationStore.refresh(),this.convListPanel.render(),this.convDetailPanel.clear()):(this.showDefaultPanels(),this.showSkillPanels()),this.sidebarPanel.setConversationsActive(this.isConversations),this.sidebarPanel.setDashboardActive(!1),this.sidebarPanel.setMarketplaceActive(!1),this.sidebarPanel.render()}renderAll(){this.sidebarPanel.render(),!this.isDashboard&&!this.isMarketplace&&!this.isConversations&&(this.listPanel.render(),this.store.filteredItems.length||this.detailPanel.clear())}openCreateModal(){new Nt(this.app,e=>{this.store.refresh(this.settings),window.setTimeout(()=>{let a=this.store.allItems.find(s=>s.filePath===e||s.realPath===e);a&&this.onSelectItem(a)},100)}).open()}onSelectItem(e){this.isDashboard&&this.toggleDashboard(),this.isMarketplace&&this.toggleMarketplace(),this.isConversations&&this.toggleConversations(),this.listPanel.setSelected(e.id),this.listPanel.render(),this.detailPanel.show(e)}onSelectConversation(e){this.convListPanel.setSelected(e.uuid),this.convListPanel.render(),this.convDetailPanel.show(e)}createResizeHandle(e,a,s,i,r){let n=e.createDiv("as-resize-handle"),o=0,l=0,O=d=>{let p=Math.min(r,Math.max(i,l+(d.clientX-o)));e.style.setProperty(s,`${p}px`)},c=()=>{n.removeClass("is-dragging"),activeDocument.removeEventListener("mousemove",O),activeDocument.removeEventListener("mouseup",c),this.dragCleanup=null};return n.addEventListener("mousedown",d=>{d.preventDefault(),o=d.clientX,l=parseInt(e.style.getPropertyValue(s))||a.offsetWidth,n.addClass("is-dragging"),activeDocument.addEventListener("mousemove",O),activeDocument.addEventListener("mouseup",c),this.dragCleanup=c}),n}async onClose(){this.dragCleanup?.(),this.updateRef&&this.store.offref(this.updateRef),this.convUpdateRef&&this.conversationStore.offref(this.convUpdateRef)}};var Xn=require("obsidian"),ta=require("path"),Be=require("fs"),Cn=require("os");var vs=(0,ta.join)((0,Cn.homedir)(),".skillkit","enrichment-cache.json");function kc(){if(!(0,Be.existsSync)(vs))return null;try{return JSON.parse((0,Be.readFileSync)(vs,"utf-8"))}catch{return null}}function Pc(t){try{(0,Be.writeFileSync)(vs,JSON.stringify(t),"utf-8")}catch{}}var ea=class extends Xn.Events{items=new Map;_filter={kind:"all"};_searchQuery="";_deepSearch=!1;_deepSearchScope="both";_projectsHomeDir="";get filter(){return this._filter}get searchQuery(){return this._searchQuery}get deepSearch(){return this._deepSearch}get allItems(){return Array.from(this.items.values())}get filteredItems(){let e=this.allItems;switch(this._filter.kind){case"favorites":e=e.filter(a=>a.isFavorite);break;case"tool":{let a=this._filter.toolId;e=e.filter(s=>s.tools.includes(a));break}case"type":{let a=this._filter.type;e=e.filter(s=>s.type===a);break}case"collection":{let a=this._filter.name;e=e.filter(s=>s.collections.includes(a));break}case"project":{let a=this._filter.project;e=e.filter(s=>ls(s.filePath,this._projectsHomeDir)===a);break}}if(this._searchQuery){let a=this._searchQuery.toLowerCase(),s=this._deepSearch&&(this._deepSearchScope==="description"||this._deepSearchScope==="both"),i=this._deepSearch&&(this._deepSearchScope==="content"||this._deepSearchScope==="both");e=e.filter(r=>r.name.toLowerCase().includes(a)||s&&r.description.toLowerCase().includes(a)||i&&r.content.toLowerCase().includes(a))}return e.sort((a,s)=>a.name.localeCompare(s.name))}getItem(e){return this.items.get(e)}get hasSkillkit(){return ee()}_enrichGeneration=0;refresh(e){this._projectsHomeDir=e.projectsHomeDir,this.items=un(e),ee()&&this.applyEnrichmentFromCache(),this.trigger("updated")}revalidate(){ee()&&this.revalidateAsync()}applyEnrichmentFromCache(){let e=kc();if(!e)return;let a=new Map(Object.entries(e.stats)),s=new Map(Object.entries(e.conflicts));this.applyEnrichment(a,s,e.warnings)}async revalidateAsync(){let e=++this._enrichGeneration,[a,s,i]=await Promise.all([Zs(),Ts(),Xs()]);e===this._enrichGeneration&&(this.applyEnrichment(a,s,i),this.trigger("updated"),Pc({stats:Object.fromEntries(a),conflicts:Object.fromEntries(s),warnings:i}))}applyEnrichment(e,a,s){let i=new Set(s.oversized.map(l=>l.name)),r=new Set(s.longDesc.map(l=>l.name)),n=new Map(s.oversized.map(l=>[l.name,l.lines])),o=new Map(s.longDesc.map(l=>[l.name,l.chars]));for(let l of this.items.values()){let O=l.filePath.split(ta.sep).slice(-2,-1)[0],c=l.name.toLowerCase().replace(/\s+/g,"-"),d=e.get(l.name)||e.get(O)||e.get(c);d?(d.isHeavy=l.content.length>5e3,l.usage=d):l.usage={uses:0,lastUsed:null,daysSinceUsed:null,isStale:!0,isHeavy:l.content.length>5e3};let p=l.content.split(`
-`).length,u=l.description.length;l.warnings={oversized:i.has(l.name)||p>500,longDesc:r.has(l.name)||u>1024,lineCount:n.get(l.name)??p,descChars:o.get(l.name)??u},l.conflicts=a.get(l.name)||a.get(O)||[]}}setFilter(e){this._filter=e,this.trigger("updated")}setSearch(e){this._searchQuery=e,this.trigger("updated")}setDeepSearch(e){this._deepSearch!==e&&(this._deepSearch=e,this.trigger("updated"))}setDeepSearchScope(e){this._deepSearchScope!==e&&(this._deepSearchScope=e,this.trigger("updated"))}toggleFavorite(e,a){let s=this.items.get(e);s&&(s.isFavorite=!s.isFavorite,s.isFavorite?a.favorites.includes(e)||a.favorites.push(e):a.favorites=a.favorites.filter(i=>i!==e),this.trigger("updated"))}getToolCounts(){let e=new Map;for(let a of this.items.values())for(let s of a.tools)e.set(s,(e.get(s)||0)+1);return e}getTypeCounts(){let e=new Map;for(let a of this.items.values())e.set(a.type,(e.get(a.type)||0)+1);return e}getProjectCounts(){let e=new Map;for(let a of this.items.values()){let s=ls(a.filePath,this._projectsHomeDir);e.set(s,(e.get(s)||0)+1)}return e}};var _n=require("fs"),aa=class{watchers=[];debounceTimer=null;debounceMs;onChange;constructor(e,a){this.debounceMs=e,this.onChange=a}watchPaths(e){this.close();for(let a of e)try{let s=(0,_n.watch)(a,{recursive:!0},()=>this.scheduleUpdate());this.watchers.push(s)}catch{}}scheduleUpdate(){this.debounceTimer&&window.clearTimeout(this.debounceTimer),this.debounceTimer=window.setTimeout(()=>{this.debounceTimer=null,this.onChange()},this.debounceMs)}close(){this.debounceTimer&&(window.clearTimeout(this.debounceTimer),this.debounceTimer=null);for(let e of this.watchers)try{e.close()}catch{}this.watchers=[]}};var $s=require("os"),q=require("obsidian");function yc(t){return t==="~"?(0,$s.homedir)():t.startsWith("~/")?(0,$s.homedir)()+t.slice(1):t}var sa=class extends q.PluginSettingTab{plugin;constructor(e,a){super(e,a),this.plugin=a}display(){let{containerEl:e}=this;e.empty(),new q.Setting(e).setName("File watching").setDesc("Automatically detect changes to skill files").addToggle(s=>s.setValue(this.plugin.settings.watchEnabled).onChange(async i=>{this.plugin.settings.watchEnabled=i,await this.plugin.saveSettings(),this.plugin.restartWatcher()})),new q.Setting(e).setName("Watch debounce (ms)").setDesc("Delay before re-scanning after file changes").addText(s=>s.setValue(String(this.plugin.settings.watchDebounceMs)).onChange(async i=>{let r=parseInt(i);!isNaN(r)&&r>=100&&(this.plugin.settings.watchDebounceMs=r,await this.plugin.saveSettings())})),new q.Setting(e).setName("Display names").setDesc("How skill and command names are displayed in the list").addDropdown(s=>s.addOptions({auto:"Auto (frontmatter / heading / filename)",filename:"Filename only"}).setValue(this.plugin.settings.namingMode||"auto").onChange(async i=>{this.plugin.settings.namingMode=i,await this.plugin.saveSettings(),this.plugin.refreshStore()})),new q.Setting(e).setName("Deep search by default").setDesc("Enable deep search when the view opens (can always be toggled in the search bar)").addToggle(s=>s.setValue(this.plugin.settings.deepSearchDefault??!1).onChange(async i=>{this.plugin.settings.deepSearchDefault=i,await this.plugin.saveSettings()})),new q.Setting(e).setName("Deep search scope").setDesc("What to include when deep search is enabled").addDropdown(s=>s.addOptions({both:"Description and file content",description:"Description only",content:"File content only"}).setValue(this.plugin.settings.deepSearchScope??"both").onChange(async i=>{this.plugin.settings.deepSearchScope=i,await this.plugin.saveSettings()})),new q.Setting(e).setName("Marketplace").setHeading(),new q.Setting(e).setName("Package runner").setDesc("Command used to install skills from the marketplace").addDropdown(s=>s.addOptions({auto:"Auto-detect",npx:"npx",bunx:"bunx"}).setValue(this.plugin.settings.packageRunner).onChange(async i=>{this.plugin.settings.packageRunner=i,await this.plugin.saveSettings()})),new q.Setting(e).setName("Project scanning").setHeading(),new q.Setting(e).setName("Scan projects").setDesc("Scan all directories under the projects home folder for project-level skills").addToggle(s=>s.setValue(this.plugin.settings.projectScanEnabled).onChange(async i=>{this.plugin.settings.projectScanEnabled=i,await this.plugin.saveSettings(),this.plugin.refreshStore(),this.plugin.restartWatcher()})),new q.Setting(e).setName("Projects home directory").setDesc("Root directory to scan for project-level skills. Leave empty for home directory (~).").addText(s=>s.setPlaceholder("~").setValue(this.plugin.settings.projectsHomeDir).onChange(async i=>{this.plugin.settings.projectsHomeDir=i,await this.plugin.saveSettings(),this.plugin.refreshStore(),this.plugin.restartWatcher()})),new q.Setting(e).setName("Custom paths").setHeading();for(let s of this.plugin.settings.customScanPaths)new q.Setting(e).setName(s).addExtraButton(i=>i.setIcon("trash").setTooltip("Remove").onClick(async()=>{this.plugin.settings.customScanPaths=this.plugin.settings.customScanPaths.filter(r=>r!==s),await this.plugin.saveSettings(),this.plugin.refreshStore(),this.plugin.restartWatcher(),this.display()}));let a="";new q.Setting(e).setName("Add custom path").setDesc("Additional directories to scan for project-level skills (looks for .claude/skills, .claude/commands, .claude/agents, .cursor/skills, .codex/skills inside each path)").addText(s=>s.setPlaceholder("~/projects/some-project").onChange(i=>{a=i})).addButton(s=>s.setButtonText("Add").onClick(async()=>{let i=a.trim();if(!i)return;let r=yc(i);this.plugin.settings.customScanPaths.includes(r)||(this.plugin.settings.customScanPaths.push(r),await this.plugin.saveSettings(),this.plugin.refreshStore(),this.plugin.restartWatcher(),this.display())})),new q.Setting(e).setName("Tools").setHeading();for(let s of G){let i=s.isInstalled(),r=this.plugin.settings.tools[s.id]||{enabled:!0,customPaths:[]};new q.Setting(e).setName(s.name).setDesc(i?"Installed":"Not detected").addToggle(n=>n.setValue(i&&r.enabled).setDisabled(!i).onChange(async o=>{this.plugin.settings.tools[s.id]={...r,enabled:o},await this.plugin.saveSettings(),this.plugin.refreshStore()}))}}};var ia=class extends jn.Plugin{settings=hs;store=new ea;watcher=null;async onload(){await this.loadSettings(),this.addVaultPath(),this.registerView(pt,e=>new Kt(e,this.store,this.settings,()=>this.saveSettings())),this.addRibbonIcon("cpu","Agentfiles",()=>this.activateView()),this.addCommand({id:"open",name:"Open",callback:()=>this.activateView()}),this.addSettingTab(new sa(this.app,this)),this.store.setDeepSearch(this.settings.deepSearchDefault??!1),this.store.setDeepSearchScope(this.settings.deepSearchScope??"both"),this.app.workspace.onLayoutReady(()=>{this.refreshStore(),this.startWatcher()})}addVaultPath(){let e=this.app.vault.adapter;if(!e.getBasePath)return;let a=e.getBasePath();this.settings.customScanPaths.includes(a)||this.settings.customScanPaths.push(a)}onunload(){this.stopWatcher()}refreshStore(){this.store.refresh(this.settings)}startWatcher(){this.settings.watchEnabled&&(this.watcher=new aa(this.settings.watchDebounceMs,()=>this.refreshStore()),this.watcher.watchPaths(hn(this.settings)))}stopWatcher(){this.watcher&&(this.watcher.close(),this.watcher=null)}restartWatcher(){this.stopWatcher(),this.startWatcher()}async activateView(){let e=this.app.workspace.getLeavesOfType(pt);if(e.length>0){await this.app.workspace.revealLeaf(e[0]);return}let a=this.app.workspace.getLeaf("tab");await a.setViewState({type:pt,active:!0}),await this.app.workspace.revealLeaf(a)}async loadSettings(){let e=await this.loadData();this.settings=Object.assign({},hs,e)}async saveSettings(){await this.saveData(this.settings)}};
+`).length,u=l.description.length;l.warnings={oversized:i.has(l.name)||p>500,longDesc:r.has(l.name)||u>1024,lineCount:n.get(l.name)??p,descChars:o.get(l.name)??u},l.conflicts=a.get(l.name)||a.get(O)||[]}}setFilter(e){this._filter=e,this.trigger("updated")}setSearch(e){this._searchQuery=e,this.trigger("updated")}setDeepSearch(e){this._deepSearch!==e&&(this._deepSearch=e,this.trigger("updated"))}setDeepSearchScope(e){this._deepSearchScope!==e&&(this._deepSearchScope=e,this.trigger("updated"))}toggleFavorite(e,a){let s=this.items.get(e);s&&(s.isFavorite=!s.isFavorite,s.isFavorite?a.favorites.includes(e)||a.favorites.push(e):a.favorites=a.favorites.filter(i=>i!==e),this.trigger("updated"))}getToolCounts(){let e=new Map;for(let a of this.items.values())for(let s of a.tools)e.set(s,(e.get(s)||0)+1);return e}getTypeCounts(){let e=new Map;for(let a of this.items.values())e.set(a.type,(e.get(a.type)||0)+1);return e}getProjectCounts(){let e=new Map;for(let a of this.items.values()){let s=ls(a.filePath,this._projectsHomeDir);e.set(s,(e.get(s)||0)+1)}return e}};var _n=require("fs"),aa=class{watchers=[];debounceTimer=null;debounceMs;onChange;constructor(e,a){this.debounceMs=e,this.onChange=a}watchPaths(e){this.close();for(let a of e)try{let s=(0,_n.watch)(a,{recursive:!0},()=>this.scheduleUpdate());this.watchers.push(s)}catch{}}scheduleUpdate(){this.debounceTimer&&window.clearTimeout(this.debounceTimer),this.debounceTimer=window.setTimeout(()=>{this.debounceTimer=null,this.onChange()},this.debounceMs)}close(){this.debounceTimer&&(window.clearTimeout(this.debounceTimer),this.debounceTimer=null);for(let e of this.watchers)try{e.close()}catch{}this.watchers=[]}};var $s=require("os"),q=require("obsidian");function yc(t){return t==="~"?(0,$s.homedir)():t.startsWith("~/")?(0,$s.homedir)()+t.slice(1):t}var sa=class extends q.PluginSettingTab{plugin;constructor(e,a){super(e,a),this.plugin=a}display(){let{containerEl:e}=this;e.empty(),new q.Setting(e).setName("File watching").setDesc("Automatically detect changes to skill files").addToggle(s=>s.setValue(this.plugin.settings.watchEnabled).onChange(async i=>{this.plugin.settings.watchEnabled=i,await this.plugin.saveSettings(),this.plugin.restartWatcher()})),new q.Setting(e).setName("Watch debounce (ms)").setDesc("Delay before re-scanning after file changes").addText(s=>s.setValue(String(this.plugin.settings.watchDebounceMs)).onChange(async i=>{let r=parseInt(i);!isNaN(r)&&r>=100&&(this.plugin.settings.watchDebounceMs=r,await this.plugin.saveSettings())})),new q.Setting(e).setName("Display names").setDesc("How skill and command names are displayed in the list").addDropdown(s=>s.addOptions({auto:"Auto (frontmatter / heading / filename)",filename:"Filename only"}).setValue(this.plugin.settings.namingMode||"auto").onChange(async i=>{this.plugin.settings.namingMode=i,await this.plugin.saveSettings(),this.plugin.refreshStore()})),new q.Setting(e).setName("Deep search by default").setDesc("Enable deep search when the view opens (can always be toggled in the search bar)").addToggle(s=>s.setValue(this.plugin.settings.deepSearchDefault??!1).onChange(async i=>{this.plugin.settings.deepSearchDefault=i,await this.plugin.saveSettings()})),new q.Setting(e).setName("Deep search scope").setDesc("What to include when deep search is enabled").addDropdown(s=>s.addOptions({both:"Description and file content",description:"Description only",content:"File content only"}).setValue(this.plugin.settings.deepSearchScope??"both").onChange(async i=>{this.plugin.settings.deepSearchScope=i,await this.plugin.saveSettings()})),new q.Setting(e).setName("Marketplace").setHeading(),new q.Setting(e).setName("Package runner").setDesc("Command used to install skills from the marketplace").addDropdown(s=>s.addOptions({auto:"Auto-detect",npx:"npx",bunx:"bunx"}).setValue(this.plugin.settings.packageRunner).onChange(async i=>{this.plugin.settings.packageRunner=i,await this.plugin.saveSettings()})),new q.Setting(e).setName("Project scanning").setHeading(),new q.Setting(e).setName("Scan projects").setDesc("Scan all directories under the projects home folder for project-level skills").addToggle(s=>s.setValue(this.plugin.settings.projectScanEnabled).onChange(async i=>{this.plugin.settings.projectScanEnabled=i,await this.plugin.saveSettings(),this.plugin.refreshStore(),this.plugin.restartWatcher()})),new q.Setting(e).setName("Projects home directory").setDesc("Root directory to scan for project-level skills. Leave empty for home directory (~).").addText(s=>s.setPlaceholder("~").setValue(this.plugin.settings.projectsHomeDir).onChange(async i=>{this.plugin.settings.projectsHomeDir=i,await this.plugin.saveSettings(),this.plugin.refreshStore(),this.plugin.restartWatcher()})),new q.Setting(e).setName("Custom paths").setHeading();for(let s of this.plugin.settings.customScanPaths)new q.Setting(e).setName(s).addExtraButton(i=>i.setIcon("trash").setTooltip("Remove").onClick(async()=>{this.plugin.settings.customScanPaths=this.plugin.settings.customScanPaths.filter(r=>r!==s),await this.plugin.saveSettings(),this.plugin.refreshStore(),this.plugin.restartWatcher(),this.display()}));let a="";new q.Setting(e).setName("Add custom path").setDesc("Additional directories to scan for project-level skills (looks for .claude/skills, .claude/commands, .claude/agents, .cursor/skills, .codex/skills inside each path)").addText(s=>s.setPlaceholder("~/projects/some-project").onChange(i=>{a=i})).addButton(s=>s.setButtonText("Add").onClick(async()=>{let i=a.trim();if(!i)return;let r=yc(i);this.plugin.settings.customScanPaths.includes(r)||(this.plugin.settings.customScanPaths.push(r),await this.plugin.saveSettings(),this.plugin.refreshStore(),this.plugin.restartWatcher(),this.display())})),new q.Setting(e).setName("Tools").setHeading();for(let s of U){let i=s.isInstalled(),r=this.plugin.settings.tools[s.id]||{enabled:!0,customPaths:[]};new q.Setting(e).setName(s.name).setDesc(i?"Installed":"Not detected").addToggle(n=>n.setValue(i&&r.enabled).setDisabled(!i).onChange(async o=>{this.plugin.settings.tools[s.id]={...r,enabled:o},await this.plugin.saveSettings(),this.plugin.refreshStore()}))}}};var ia=class extends jn.Plugin{settings=hs;store=new ea;watcher=null;async onload(){await this.loadSettings(),this.addVaultPath(),this.registerView(pt,e=>new Kt(e,this.store,this.settings,()=>this.saveSettings())),this.addRibbonIcon("cpu","Agentfiles",()=>this.activateView()),this.addCommand({id:"open",name:"Open",callback:()=>this.activateView()}),this.addSettingTab(new sa(this.app,this)),this.store.setDeepSearch(this.settings.deepSearchDefault??!1),this.store.setDeepSearchScope(this.settings.deepSearchScope??"both"),this.app.workspace.onLayoutReady(()=>{this.refreshStore(),this.startWatcher()})}addVaultPath(){let e=this.app.vault.adapter;if(!e.getBasePath)return;let a=e.getBasePath();this.settings.customScanPaths.includes(a)||this.settings.customScanPaths.push(a)}onunload(){this.stopWatcher()}refreshStore(){this.store.refresh(this.settings)}startWatcher(){this.settings.watchEnabled&&(this.watcher=new aa(this.settings.watchDebounceMs,()=>this.refreshStore()),this.watcher.watchPaths(hn(this.settings)))}stopWatcher(){this.watcher&&(this.watcher.close(),this.watcher=null)}restartWatcher(){this.stopWatcher(),this.startWatcher()}async activateView(){let e=this.app.workspace.getLeavesOfType(pt);if(e.length>0){await this.app.workspace.revealLeaf(e[0]);return}let a=this.app.workspace.getLeaf("tab");await a.setViewState({type:pt,active:!0}),await this.app.workspace.revealLeaf(a)}async loadSettings(){let e=await this.loadData();this.settings=Object.assign({},hs,e)}async saveSettings(){await this.saveData(this.settings)}};
diff --git a/src/tool-icons.ts b/src/tool-icons.ts
index 6019a12..38ada3b 100644
--- a/src/tool-icons.ts
+++ b/src/tool-icons.ts
@@ -1,77 +1,5 @@
-export const TOOL_SVGS: Record = {
- "claude-code": {
- viewBox: "0 0 24 24",
- paths: ``,
- },
- cursor: {
- viewBox: "0 0 466.73 532.09",
- paths: ``,
- },
- windsurf: {
- viewBox: "0 0 24 24",
- paths: ``,
- },
- codex: {
- viewBox: "0 0 24 24",
- paths: ``,
- },
- copilot: {
- viewBox: "0 0 24 24",
- paths: ``,
- },
- opencode: {
- viewBox: "0 0 24 36",
- paths: ``,
- },
- "claude-desktop": {
- viewBox: "0 0 24 24",
- paths: ``,
- },
- "global-agents": {
- viewBox: "0 0 24 24",
- paths: ``,
- },
- goose: {
- viewBox: "0 0 24 24",
- paths: ``,
- },
- cline: {
- viewBox: "0 0 24 24",
- paths: ``,
- },
- continue: {
- viewBox: "0 0 26 24",
- paths: ``,
- },
- "roo-code": {
- viewBox: "0 0 96 96",
- paths: ``,
- },
- replit: {
- viewBox: "0 0 24 24",
- paths: ``,
- },
- "gemini-cli": {
- viewBox: "0 0 24 24",
- paths: ``,
- },
- amp: {
- viewBox: "0 0 21 21",
- paths: ``,
- },
- antigravity: {
- viewBox: "0 0 112 96",
- paths: ``,
- },
- kilocode: {
- viewBox: "0 0 39.9997627 39.9999944",
- paths: ``,
- },
- openhands: {
- viewBox: "0 -24 148 148",
- paths: ``,
- },
-};
+export { TOOL_SVGS } from "./tool-svgs";
+import { TOOL_SVGS } from "./tool-svgs";
export function renderToolIcon(
container: HTMLElement,
diff --git a/src/tool-svgs.ts b/src/tool-svgs.ts
new file mode 100644
index 0000000..c1f5400
--- /dev/null
+++ b/src/tool-svgs.ts
@@ -0,0 +1,74 @@
+export const TOOL_SVGS: Record = {
+ "claude-code": {
+ viewBox: "0 0 24 24",
+ paths: ``,
+ },
+ cursor: {
+ viewBox: "0 0 466.73 532.09",
+ paths: ``,
+ },
+ windsurf: {
+ viewBox: "0 0 24 24",
+ paths: ``,
+ },
+ codex: {
+ viewBox: "0 0 24 24",
+ paths: ``,
+ },
+ copilot: {
+ viewBox: "0 0 24 24",
+ paths: ``,
+ },
+ opencode: {
+ viewBox: "0 0 24 36",
+ paths: ``,
+ },
+ "claude-desktop": {
+ viewBox: "0 0 24 24",
+ paths: ``,
+ },
+ "global-agents": {
+ viewBox: "0 0 24 24",
+ paths: ``,
+ },
+ goose: {
+ viewBox: "0 0 24 24",
+ paths: ``,
+ },
+ cline: {
+ viewBox: "0 0 24 24",
+ paths: ``,
+ },
+ continue: {
+ viewBox: "0 0 26 24",
+ paths: ``,
+ },
+ "roo-code": {
+ viewBox: "0 0 96 96",
+ paths: ``,
+ },
+ replit: {
+ viewBox: "0 0 24 24",
+ paths: ``,
+ },
+ "gemini-cli": {
+ viewBox: "0 0 24 24",
+ paths: ``,
+ },
+ amp: {
+ viewBox: "0 0 21 21",
+ paths: ``,
+ },
+ antigravity: {
+ viewBox: "0 0 112 96",
+ paths: ``,
+ },
+ kilocode: {
+ viewBox: "0 0 39.9997627 39.9999944",
+ paths: ``,
+ },
+ openhands: {
+ viewBox: "0 -24 148 148",
+ paths: ``,
+ },
+};
diff --git a/vscode/.gitignore b/vscode/.gitignore
new file mode 100644
index 0000000..a08e1da
--- /dev/null
+++ b/vscode/.gitignore
@@ -0,0 +1,3 @@
+node_modules/
+dist/
+*.vsix
diff --git a/vscode/.vscodeignore b/vscode/.vscodeignore
new file mode 100644
index 0000000..715072d
--- /dev/null
+++ b/vscode/.vscodeignore
@@ -0,0 +1,5 @@
+src/**
+esbuild.config.mjs
+tsconfig.json
+node_modules/**
+*.tmp.mjs
diff --git a/vscode/bun.lock b/vscode/bun.lock
new file mode 100644
index 0000000..c1554c4
--- /dev/null
+++ b/vscode/bun.lock
@@ -0,0 +1,661 @@
+{
+ "lockfileVersion": 1,
+ "configVersion": 1,
+ "workspaces": {
+ "": {
+ "name": "agentfiles-vscode",
+ "devDependencies": {
+ "@types/js-yaml": "^4.0.9",
+ "@types/node": "^20.14.0",
+ "@types/vscode": "^1.90.0",
+ "@vscode/vsce": "^3.2.1",
+ "esbuild": "^0.24.0",
+ "js-yaml": "^4.1.1",
+ "typescript": "^5.6.0",
+ },
+ },
+ },
+ "packages": {
+ "@azu/format-text": ["@azu/format-text@1.0.2", "", {}, "sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg=="],
+
+ "@azu/style-format": ["@azu/style-format@1.0.1", "", { "dependencies": { "@azu/format-text": "^1.0.1" } }, "sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g=="],
+
+ "@azure/abort-controller": ["@azure/abort-controller@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-fNAjWnA/nZ2jz31kxR/AqRaUT8ewHBw/WuBIosK0moMy1C9e5ValbDfFdIxJzVOOYaYkV/b2F1S4H/aHiqfVQg=="],
+
+ "@azure/core-auth": ["@azure/core-auth@1.11.0", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-util": "^1.13.0", "tslib": "^2.6.2" } }, "sha512-IUZydyTUkDnYdstOW9pFOOUQlBjAepK5teihDE3x6yxsPJs/hsAaaYpeGxdxrgtOiJbBKSjKW7MDk7AEhb4LRg=="],
+
+ "@azure/core-client": ["@azure/core-client@1.11.0", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.10.0", "@azure/core-rest-pipeline": "^1.22.0", "@azure/core-tracing": "^1.3.0", "@azure/core-util": "^1.13.0", "@azure/logger": "^1.3.0", "tslib": "^2.6.2" } }, "sha512-JjQWO6akOck45PH/XBrxzsQGAiKrfFl4m5iggJ0ItMIz5omRufOXWpqCPpdjKN3vKDzlSUvFjaMb7Zwf0gvAdA=="],
+
+ "@azure/core-rest-pipeline": ["@azure/core-rest-pipeline@1.25.0", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.10.0", "@azure/core-tracing": "^1.3.0", "@azure/core-util": "^1.13.0", "@azure/logger": "^1.3.0", "@typespec/ts-http-runtime": "^0.3.4", "tslib": "^2.6.2" } }, "sha512-bMs8ekJLjX8wPV+9IPBges1SLPyuDtE9g5gLDWOpxzKcoOFQnpLGkbcT1tdw3FaAmDS1gnPmMmJ6y/T5B96kIA=="],
+
+ "@azure/core-tracing": ["@azure/core-tracing@1.4.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-eGwxD0AtncrxeBM4tG8R55Pc3rdX1hNW2WibJAgYpCVA6E93mvvVH+LcssoVjOBrSKWS55yEIHsk0X8ctHmfOQ=="],
+
+ "@azure/core-util": ["@azure/core-util@1.14.0", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" } }, "sha512-9n2pWK61veAuN0V20t9lOuoV4CFMdyAZ1ygZzvBGk/pBBJRib/PjL9PLXa/aI2CcPpyHfqVsxxqLCYl6uZlfDw=="],
+
+ "@azure/identity": ["@azure/identity@4.13.1", "", { "dependencies": { "@azure/abort-controller": "^2.0.0", "@azure/core-auth": "^1.9.0", "@azure/core-client": "^1.9.2", "@azure/core-rest-pipeline": "^1.17.0", "@azure/core-tracing": "^1.0.0", "@azure/core-util": "^1.11.0", "@azure/logger": "^1.0.0", "@azure/msal-browser": "^5.5.0", "@azure/msal-node": "^5.1.0", "open": "^10.1.0", "tslib": "^2.2.0" } }, "sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw=="],
+
+ "@azure/logger": ["@azure/logger@1.4.0", "", { "dependencies": { "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" } }, "sha512-rbAE25KUfjU/s3XHUdJgceoCP5dEOpMx85J04kF+QMdta73XkuG9JGHHinch+XIoKpBdqljin+KqURpJriSzLA=="],
+
+ "@azure/msal-browser": ["@azure/msal-browser@5.17.1", "", { "dependencies": { "@azure/msal-common": "16.11.2" } }, "sha512-zBhRGzABKSI7hfWh5EaZmril5ybZ7imBN1qEZl5sDTaelr+l8SnPjZO50Q4dnKnm347YPIlBMSnXKZyh3Yu5DQ=="],
+
+ "@azure/msal-common": ["@azure/msal-common@16.11.2", "", {}, "sha512-yDhtBOGDCdK9ipQ9g3+wmlMEPnZx2pXaDicDd9jYyR1L+7lEbvEohTDmF5qejZDutZY3m9pWPxeYxzNC701A2w=="],
+
+ "@azure/msal-node": ["@azure/msal-node@5.4.2", "", { "dependencies": { "@azure/msal-common": "16.11.2", "jsonwebtoken": "^9.0.0" } }, "sha512-fnqOpGYAV+i0RH4W5HB6Oy1IhqGZoCdnp7Y2Sa9k18FlT8aBkCA7L8Hv19hUHLDUK6kVjUO29AfnGX6wgAHyNg=="],
+
+ "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="],
+
+ "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="],
+
+ "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.24.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA=="],
+
+ "@esbuild/android-arm": ["@esbuild/android-arm@0.24.2", "", { "os": "android", "cpu": "arm" }, "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q=="],
+
+ "@esbuild/android-arm64": ["@esbuild/android-arm64@0.24.2", "", { "os": "android", "cpu": "arm64" }, "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg=="],
+
+ "@esbuild/android-x64": ["@esbuild/android-x64@0.24.2", "", { "os": "android", "cpu": "x64" }, "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw=="],
+
+ "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.24.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA=="],
+
+ "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.24.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA=="],
+
+ "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.24.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg=="],
+
+ "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.24.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q=="],
+
+ "@esbuild/linux-arm": ["@esbuild/linux-arm@0.24.2", "", { "os": "linux", "cpu": "arm" }, "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA=="],
+
+ "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.24.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg=="],
+
+ "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.24.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw=="],
+
+ "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ=="],
+
+ "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw=="],
+
+ "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.24.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw=="],
+
+ "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q=="],
+
+ "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.24.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw=="],
+
+ "@esbuild/linux-x64": ["@esbuild/linux-x64@0.24.2", "", { "os": "linux", "cpu": "x64" }, "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q=="],
+
+ "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.24.2", "", { "os": "none", "cpu": "arm64" }, "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw=="],
+
+ "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.24.2", "", { "os": "none", "cpu": "x64" }, "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw=="],
+
+ "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.24.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A=="],
+
+ "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.24.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA=="],
+
+ "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.24.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig=="],
+
+ "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.24.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ=="],
+
+ "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.24.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA=="],
+
+ "@esbuild/win32-x64": ["@esbuild/win32-x64@0.24.2", "", { "os": "win32", "cpu": "x64" }, "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg=="],
+
+ "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="],
+
+ "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="],
+
+ "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="],
+
+ "@secretlint/config-creator": ["@secretlint/config-creator@10.2.2", "", { "dependencies": { "@secretlint/types": "^10.2.2" } }, "sha512-BynOBe7Hn3LJjb3CqCHZjeNB09s/vgf0baBaHVw67w7gHF0d25c3ZsZ5+vv8TgwSchRdUCRrbbcq5i2B1fJ2QQ=="],
+
+ "@secretlint/config-loader": ["@secretlint/config-loader@10.2.2", "", { "dependencies": { "@secretlint/profiler": "^10.2.2", "@secretlint/resolver": "^10.2.2", "@secretlint/types": "^10.2.2", "ajv": "^8.17.1", "debug": "^4.4.1", "rc-config-loader": "^4.1.3" } }, "sha512-ndjjQNgLg4DIcMJp4iaRD6xb9ijWQZVbd9694Ol2IszBIbGPPkwZHzJYKICbTBmh6AH/pLr0CiCaWdGJU7RbpQ=="],
+
+ "@secretlint/core": ["@secretlint/core@10.2.2", "", { "dependencies": { "@secretlint/profiler": "^10.2.2", "@secretlint/types": "^10.2.2", "debug": "^4.4.1", "structured-source": "^4.0.0" } }, "sha512-6rdwBwLP9+TO3rRjMVW1tX+lQeo5gBbxl1I5F8nh8bgGtKwdlCMhMKsBWzWg1ostxx/tIG7OjZI0/BxsP8bUgw=="],
+
+ "@secretlint/formatter": ["@secretlint/formatter@10.2.2", "", { "dependencies": { "@secretlint/resolver": "^10.2.2", "@secretlint/types": "^10.2.2", "@textlint/linter-formatter": "^15.2.0", "@textlint/module-interop": "^15.2.0", "@textlint/types": "^15.2.0", "chalk": "^5.4.1", "debug": "^4.4.1", "pluralize": "^8.0.0", "strip-ansi": "^7.1.0", "table": "^6.9.0", "terminal-link": "^4.0.0" } }, "sha512-10f/eKV+8YdGKNQmoDUD1QnYL7TzhI2kzyx95vsJKbEa8akzLAR5ZrWIZ3LbcMmBLzxlSQMMccRmi05yDQ5YDA=="],
+
+ "@secretlint/node": ["@secretlint/node@10.2.2", "", { "dependencies": { "@secretlint/config-loader": "^10.2.2", "@secretlint/core": "^10.2.2", "@secretlint/formatter": "^10.2.2", "@secretlint/profiler": "^10.2.2", "@secretlint/source-creator": "^10.2.2", "@secretlint/types": "^10.2.2", "debug": "^4.4.1", "p-map": "^7.0.3" } }, "sha512-eZGJQgcg/3WRBwX1bRnss7RmHHK/YlP/l7zOQsrjexYt6l+JJa5YhUmHbuGXS94yW0++3YkEJp0kQGYhiw1DMQ=="],
+
+ "@secretlint/profiler": ["@secretlint/profiler@10.2.2", "", {}, "sha512-qm9rWfkh/o8OvzMIfY8a5bCmgIniSpltbVlUVl983zDG1bUuQNd1/5lUEeWx5o/WJ99bXxS7yNI4/KIXfHexig=="],
+
+ "@secretlint/resolver": ["@secretlint/resolver@10.2.2", "", {}, "sha512-3md0cp12e+Ae5V+crPQYGd6aaO7ahw95s28OlULGyclyyUtf861UoRGS2prnUrKh7MZb23kdDOyGCYb9br5e4w=="],
+
+ "@secretlint/secretlint-formatter-sarif": ["@secretlint/secretlint-formatter-sarif@10.2.2", "", { "dependencies": { "node-sarif-builder": "^3.2.0" } }, "sha512-ojiF9TGRKJJw308DnYBucHxkpNovDNu1XvPh7IfUp0A12gzTtxuWDqdpuVezL7/IP8Ua7mp5/VkDMN9OLp1doQ=="],
+
+ "@secretlint/secretlint-rule-no-dotenv": ["@secretlint/secretlint-rule-no-dotenv@10.2.2", "", { "dependencies": { "@secretlint/types": "^10.2.2" } }, "sha512-KJRbIShA9DVc5Va3yArtJ6QDzGjg3PRa1uYp9As4RsyKtKSSZjI64jVca57FZ8gbuk4em0/0Jq+uy6485wxIdg=="],
+
+ "@secretlint/secretlint-rule-preset-recommend": ["@secretlint/secretlint-rule-preset-recommend@10.2.2", "", {}, "sha512-K3jPqjva8bQndDKJqctnGfwuAxU2n9XNCPtbXVI5JvC7FnQiNg/yWlQPbMUlBXtBoBGFYp08A94m6fvtc9v+zA=="],
+
+ "@secretlint/source-creator": ["@secretlint/source-creator@10.2.2", "", { "dependencies": { "@secretlint/types": "^10.2.2", "istextorbinary": "^9.5.0" } }, "sha512-h6I87xJfwfUTgQ7irWq7UTdq/Bm1RuQ/fYhA3dtTIAop5BwSFmZyrchph4WcoEvbN460BWKmk4RYSvPElIIvxw=="],
+
+ "@secretlint/types": ["@secretlint/types@10.2.2", "", {}, "sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg=="],
+
+ "@sindresorhus/merge-streams": ["@sindresorhus/merge-streams@2.3.0", "", {}, "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg=="],
+
+ "@textlint/ast-node-types": ["@textlint/ast-node-types@15.7.1", "", {}, "sha512-Wii5UgUKFEh9Uv6wbq1zr4/Kf+dtjiUuzPrrXzKp8H+ifkvKNzi23V4Nz+6wVyHQn5T28AFuc8VH8OtzvGYecA=="],
+
+ "@textlint/linter-formatter": ["@textlint/linter-formatter@15.7.1", "", { "dependencies": { "@azu/format-text": "^1.0.2", "@azu/style-format": "^1.0.1", "@textlint/module-interop": "15.7.1", "@textlint/resolver": "15.7.1", "@textlint/types": "15.7.1", "chalk": "^4.1.2", "debug": "^4.4.3", "js-yaml": "^4.1.1", "lodash": "^4.18.1", "pluralize": "^2.0.0", "string-width": "^4.2.3", "strip-ansi": "^6.0.1", "table": "^6.9.0", "text-table": "^0.2.0" } }, "sha512-TdwZ/debWYFD05K3CcoHtwvnCrza29wZxD+BjDTk/V5N7iRqkK1dTTHSD4A8AIgROLiDkHJmIKQbasbmsg8AvA=="],
+
+ "@textlint/module-interop": ["@textlint/module-interop@15.7.1", "", {}, "sha512-Jg+sQW2L/cRJypk59wtcMUVVpt8vmit5ZMT3gUnFwevP3A6Qp1HfOtUy9ObT4hBX3lOSGT/ekcCDxR1pL7uH1g=="],
+
+ "@textlint/resolver": ["@textlint/resolver@15.7.1", "", {}, "sha512-8XnO0pgF6mXnm41VvWmBbEIdGPhiCUt31uLZkOis1ECeg/1SoUcIT6Mx/F0e1rukq8l0UlOSeY9a31CsvRMK0g=="],
+
+ "@textlint/types": ["@textlint/types@15.7.1", "", { "dependencies": { "@textlint/ast-node-types": "15.7.1" } }, "sha512-Vye/GmFNBTgVzZFtIFJTmLB+s2A7oIADxNG6r9UhfPuY+Czv0z5G3xeyFZZudPlfxURsKUyPIU5XsjOFqVp33A=="],
+
+ "@types/js-yaml": ["@types/js-yaml@4.0.9", "", {}, "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg=="],
+
+ "@types/node": ["@types/node@20.19.43", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA=="],
+
+ "@types/normalize-package-data": ["@types/normalize-package-data@2.4.4", "", {}, "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA=="],
+
+ "@types/sarif": ["@types/sarif@2.1.7", "", {}, "sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ=="],
+
+ "@types/vscode": ["@types/vscode@1.125.0", "", {}, "sha512-0icm/ZQAaism87P0ekHqi4/Ju9du+Tm0RUW+y7vqRsxY2cY0FNRX1nAnaW7nT6npPt2tfHiheZ55Zm9UhqonFA=="],
+
+ "@typespec/ts-http-runtime": ["@typespec/ts-http-runtime@0.3.7", "", { "dependencies": { "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", "tslib": "^2.6.2" } }, "sha512-JVUD8X2tfDMWjcjLs4yVxxVrS8yR5vnh386GAXT9Qj79nBxxXSaHFQZg5FweLmT8HlPQ3kii6noUB+Z9RN7DvQ=="],
+
+ "@vscode/vsce": ["@vscode/vsce@3.9.2", "", { "dependencies": { "@azure/identity": "^4.1.0", "@secretlint/node": "^10.1.2", "@secretlint/secretlint-formatter-sarif": "^10.1.2", "@secretlint/secretlint-rule-no-dotenv": "^10.1.2", "@secretlint/secretlint-rule-preset-recommend": "^10.1.2", "@vscode/vsce-sign": "^2.0.0", "azure-devops-node-api": "^12.5.0", "chalk": "^4.1.2", "cheerio": "^1.0.0-rc.9", "cockatiel": "^3.1.2", "commander": "^12.1.0", "form-data": "^4.0.0", "glob": "^13.0.6", "hosted-git-info": "^4.0.2", "jsonc-parser": "^3.2.0", "leven": "^3.1.0", "markdown-it": "^14.1.0", "mime": "^1.3.4", "minimatch": "^10.2.2", "parse-semver": "^1.1.1", "read": "^1.0.7", "secretlint": "^10.1.2", "semver": "^7.5.2", "tmp": "^0.2.3", "typed-rest-client": "^1.8.4", "url-join": "^4.0.1", "xml2js": "^0.5.0", "yauzl": "^3.2.1", "yazl": "^2.2.2" }, "optionalDependencies": { "keytar": "^7.7.0" }, "bin": { "vsce": "vsce" } }, "sha512-XSxMosEEDO6vLxELAHVkwmhC0qe0ijZni2jB9Rcs8kQsW4lhTDQ/wMzmwFs/buotAWSnpmUp/dRWD2ufG3UYKA=="],
+
+ "@vscode/vsce-sign": ["@vscode/vsce-sign@2.0.9", "", { "optionalDependencies": { "@vscode/vsce-sign-alpine-arm64": "2.0.6", "@vscode/vsce-sign-alpine-x64": "2.0.6", "@vscode/vsce-sign-darwin-arm64": "2.0.6", "@vscode/vsce-sign-darwin-x64": "2.0.6", "@vscode/vsce-sign-linux-arm": "2.0.6", "@vscode/vsce-sign-linux-arm64": "2.0.6", "@vscode/vsce-sign-linux-x64": "2.0.6", "@vscode/vsce-sign-win32-arm64": "2.0.6", "@vscode/vsce-sign-win32-x64": "2.0.6" } }, "sha512-8IvaRvtFyzUnGGl3f5+1Cnor3LqaUWvhaUjAYO8Y39OUYlOf3cRd+dowuQYLpZcP3uwSG+mURwjEBOSq4SOJ0g=="],
+
+ "@vscode/vsce-sign-alpine-arm64": ["@vscode/vsce-sign-alpine-arm64@2.0.6", "", { "os": "none", "cpu": "arm64" }, "sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q=="],
+
+ "@vscode/vsce-sign-alpine-x64": ["@vscode/vsce-sign-alpine-x64@2.0.6", "", { "os": "none", "cpu": "x64" }, "sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w=="],
+
+ "@vscode/vsce-sign-darwin-arm64": ["@vscode/vsce-sign-darwin-arm64@2.0.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ=="],
+
+ "@vscode/vsce-sign-darwin-x64": ["@vscode/vsce-sign-darwin-x64@2.0.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw=="],
+
+ "@vscode/vsce-sign-linux-arm": ["@vscode/vsce-sign-linux-arm@2.0.6", "", { "os": "linux", "cpu": "arm" }, "sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA=="],
+
+ "@vscode/vsce-sign-linux-arm64": ["@vscode/vsce-sign-linux-arm64@2.0.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA=="],
+
+ "@vscode/vsce-sign-linux-x64": ["@vscode/vsce-sign-linux-x64@2.0.6", "", { "os": "linux", "cpu": "x64" }, "sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA=="],
+
+ "@vscode/vsce-sign-win32-arm64": ["@vscode/vsce-sign-win32-arm64@2.0.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg=="],
+
+ "@vscode/vsce-sign-win32-x64": ["@vscode/vsce-sign-win32-x64@2.0.6", "", { "os": "win32", "cpu": "x64" }, "sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ=="],
+
+ "agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="],
+
+ "ajv": ["ajv@8.20.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="],
+
+ "ansi-escapes": ["ansi-escapes@7.3.0", "", { "dependencies": { "environment": "^1.0.0" } }, "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg=="],
+
+ "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="],
+
+ "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
+
+ "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
+
+ "astral-regex": ["astral-regex@2.0.0", "", {}, "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ=="],
+
+ "asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="],
+
+ "azure-devops-node-api": ["azure-devops-node-api@12.5.0", "", { "dependencies": { "tunnel": "0.0.6", "typed-rest-client": "^1.8.4" } }, "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og=="],
+
+ "balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="],
+
+ "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="],
+
+ "binaryextensions": ["binaryextensions@6.11.0", "", { "dependencies": { "editions": "^6.21.0" } }, "sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw=="],
+
+ "bl": ["bl@4.1.0", "", { "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="],
+
+ "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="],
+
+ "boundary": ["boundary@2.0.0", "", {}, "sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA=="],
+
+ "brace-expansion": ["brace-expansion@5.0.7", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA=="],
+
+ "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],
+
+ "buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="],
+
+ "buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="],
+
+ "buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="],
+
+ "bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="],
+
+ "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="],
+
+ "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="],
+
+ "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
+
+ "cheerio": ["cheerio@1.2.0", "", { "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", "domutils": "^3.2.2", "encoding-sniffer": "^0.2.1", "htmlparser2": "^10.1.0", "parse5": "^7.3.0", "parse5-htmlparser2-tree-adapter": "^7.1.0", "parse5-parser-stream": "^7.1.2", "undici": "^7.19.0", "whatwg-mimetype": "^4.0.0" } }, "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg=="],
+
+ "cheerio-select": ["cheerio-select@2.1.0", "", { "dependencies": { "boolbase": "^1.0.0", "css-select": "^5.1.0", "css-what": "^6.1.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1" } }, "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g=="],
+
+ "chownr": ["chownr@1.1.4", "", {}, "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="],
+
+ "cockatiel": ["cockatiel@3.2.1", "", {}, "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q=="],
+
+ "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
+
+ "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
+
+ "combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="],
+
+ "commander": ["commander@12.1.0", "", {}, "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA=="],
+
+ "css-select": ["css-select@5.2.2", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw=="],
+
+ "css-what": ["css-what@6.2.2", "", {}, "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA=="],
+
+ "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
+
+ "decompress-response": ["decompress-response@6.0.0", "", { "dependencies": { "mimic-response": "^3.1.0" } }, "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ=="],
+
+ "deep-extend": ["deep-extend@0.6.0", "", {}, "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="],
+
+ "default-browser": ["default-browser@5.5.0", "", { "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" } }, "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw=="],
+
+ "default-browser-id": ["default-browser-id@5.0.1", "", {}, "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q=="],
+
+ "define-lazy-prop": ["define-lazy-prop@3.0.0", "", {}, "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg=="],
+
+ "delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="],
+
+ "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="],
+
+ "dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="],
+
+ "domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="],
+
+ "domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="],
+
+ "domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="],
+
+ "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="],
+
+ "ecdsa-sig-formatter": ["ecdsa-sig-formatter@1.0.11", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ=="],
+
+ "editions": ["editions@6.22.0", "", { "dependencies": { "version-range": "^4.15.0" } }, "sha512-UgGlf8IW75je7HZjNDpJdCv4cGJWIi6yumFdZ0R7A8/CIhQiWUjyGLCxdHpd8bmyD1gnkfUNK0oeOXqUS2cpfQ=="],
+
+ "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
+
+ "encoding-sniffer": ["encoding-sniffer@0.2.1", "", { "dependencies": { "iconv-lite": "^0.6.3", "whatwg-encoding": "^3.1.1" } }, "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw=="],
+
+ "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="],
+
+ "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="],
+
+ "environment": ["environment@1.1.0", "", {}, "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q=="],
+
+ "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="],
+
+ "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="],
+
+ "es-object-atoms": ["es-object-atoms@1.1.2", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw=="],
+
+ "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="],
+
+ "esbuild": ["esbuild@0.24.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.24.2", "@esbuild/android-arm": "0.24.2", "@esbuild/android-arm64": "0.24.2", "@esbuild/android-x64": "0.24.2", "@esbuild/darwin-arm64": "0.24.2", "@esbuild/darwin-x64": "0.24.2", "@esbuild/freebsd-arm64": "0.24.2", "@esbuild/freebsd-x64": "0.24.2", "@esbuild/linux-arm": "0.24.2", "@esbuild/linux-arm64": "0.24.2", "@esbuild/linux-ia32": "0.24.2", "@esbuild/linux-loong64": "0.24.2", "@esbuild/linux-mips64el": "0.24.2", "@esbuild/linux-ppc64": "0.24.2", "@esbuild/linux-riscv64": "0.24.2", "@esbuild/linux-s390x": "0.24.2", "@esbuild/linux-x64": "0.24.2", "@esbuild/netbsd-arm64": "0.24.2", "@esbuild/netbsd-x64": "0.24.2", "@esbuild/openbsd-arm64": "0.24.2", "@esbuild/openbsd-x64": "0.24.2", "@esbuild/sunos-x64": "0.24.2", "@esbuild/win32-arm64": "0.24.2", "@esbuild/win32-ia32": "0.24.2", "@esbuild/win32-x64": "0.24.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA=="],
+
+ "expand-template": ["expand-template@2.0.3", "", {}, "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg=="],
+
+ "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
+
+ "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="],
+
+ "fast-uri": ["fast-uri@3.1.4", "", {}, "sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw=="],
+
+ "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="],
+
+ "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],
+
+ "form-data": ["form-data@4.0.6", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.4", "mime-types": "^2.1.35" } }, "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ=="],
+
+ "fs-constants": ["fs-constants@1.0.0", "", {}, "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="],
+
+ "fs-extra": ["fs-extra@11.3.6", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-w8ZNZr2mKIc7qeNaQ9AVPT1+iFaI+Avd4xudVOvdDJ8VytREi1Ft5Ih7hd9jjehod8vAM5GMsfQ/TpPf4EyoEA=="],
+
+ "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="],
+
+ "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="],
+
+ "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="],
+
+ "github-from-package": ["github-from-package@0.0.0", "", {}, "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw=="],
+
+ "glob": ["glob@13.0.6", "", { "dependencies": { "minimatch": "^10.2.2", "minipass": "^7.1.3", "path-scurry": "^2.0.2" } }, "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw=="],
+
+ "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
+
+ "globby": ["globby@14.1.0", "", { "dependencies": { "@sindresorhus/merge-streams": "^2.1.0", "fast-glob": "^3.3.3", "ignore": "^7.0.3", "path-type": "^6.0.0", "slash": "^5.1.0", "unicorn-magic": "^0.3.0" } }, "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA=="],
+
+ "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="],
+
+ "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="],
+
+ "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="],
+
+ "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="],
+
+ "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="],
+
+ "hasown": ["hasown@2.0.4", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A=="],
+
+ "hosted-git-info": ["hosted-git-info@4.1.0", "", { "dependencies": { "lru-cache": "^6.0.0" } }, "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA=="],
+
+ "htmlparser2": ["htmlparser2@10.1.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.2.2", "entities": "^7.0.1" } }, "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ=="],
+
+ "http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="],
+
+ "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="],
+
+ "iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
+
+ "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="],
+
+ "ignore": ["ignore@7.0.6", "", {}, "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw=="],
+
+ "index-to-position": ["index-to-position@1.2.0", "", {}, "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw=="],
+
+ "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
+
+ "ini": ["ini@1.3.8", "", {}, "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="],
+
+ "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="],
+
+ "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
+
+ "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
+
+ "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
+
+ "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="],
+
+ "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],
+
+ "is-wsl": ["is-wsl@3.1.1", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw=="],
+
+ "istextorbinary": ["istextorbinary@9.5.0", "", { "dependencies": { "binaryextensions": "^6.11.0", "editions": "^6.21.0", "textextensions": "^6.11.0" } }, "sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw=="],
+
+ "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="],
+
+ "js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="],
+
+ "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="],
+
+ "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="],
+
+ "jsonc-parser": ["jsonc-parser@3.3.1", "", {}, "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ=="],
+
+ "jsonfile": ["jsonfile@6.2.1", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q=="],
+
+ "jsonwebtoken": ["jsonwebtoken@9.0.3", "", { "dependencies": { "jws": "^4.0.1", "lodash.includes": "^4.3.0", "lodash.isboolean": "^3.0.3", "lodash.isinteger": "^4.0.4", "lodash.isnumber": "^3.0.3", "lodash.isplainobject": "^4.0.6", "lodash.isstring": "^4.0.1", "lodash.once": "^4.0.0", "ms": "^2.1.1", "semver": "^7.5.4" } }, "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g=="],
+
+ "jwa": ["jwa@2.0.1", "", { "dependencies": { "buffer-equal-constant-time": "^1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg=="],
+
+ "jws": ["jws@4.0.1", "", { "dependencies": { "jwa": "^2.0.1", "safe-buffer": "^5.0.1" } }, "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA=="],
+
+ "keytar": ["keytar@7.9.0", "", { "dependencies": { "node-addon-api": "^4.3.0", "prebuild-install": "^7.0.1" } }, "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ=="],
+
+ "leven": ["leven@3.1.0", "", {}, "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="],
+
+ "linkify-it": ["linkify-it@5.0.2", "", { "dependencies": { "uc.micro": "^2.0.0" } }, "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q=="],
+
+ "lodash": ["lodash@4.18.1", "", {}, "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q=="],
+
+ "lodash.includes": ["lodash.includes@4.3.0", "", {}, "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="],
+
+ "lodash.isboolean": ["lodash.isboolean@3.0.3", "", {}, "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="],
+
+ "lodash.isinteger": ["lodash.isinteger@4.0.4", "", {}, "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="],
+
+ "lodash.isnumber": ["lodash.isnumber@3.0.3", "", {}, "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="],
+
+ "lodash.isplainobject": ["lodash.isplainobject@4.0.6", "", {}, "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="],
+
+ "lodash.isstring": ["lodash.isstring@4.0.1", "", {}, "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="],
+
+ "lodash.once": ["lodash.once@4.1.1", "", {}, "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="],
+
+ "lodash.truncate": ["lodash.truncate@4.4.2", "", {}, "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw=="],
+
+ "lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="],
+
+ "markdown-it": ["markdown-it@14.3.0", "", { "dependencies": { "argparse": "^2.0.1", "entities": "^4.5.0", "linkify-it": "^5.0.2", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" }, "bin": { "markdown-it": "bin/markdown-it.mjs" } }, "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw=="],
+
+ "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="],
+
+ "mdurl": ["mdurl@2.1.0", "", {}, "sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg=="],
+
+ "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="],
+
+ "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="],
+
+ "mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="],
+
+ "mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],
+
+ "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],
+
+ "mimic-response": ["mimic-response@3.1.0", "", {}, "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="],
+
+ "minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="],
+
+ "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="],
+
+ "minipass": ["minipass@7.1.3", "", {}, "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A=="],
+
+ "mkdirp-classic": ["mkdirp-classic@0.5.3", "", {}, "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="],
+
+ "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
+
+ "mute-stream": ["mute-stream@0.0.8", "", {}, "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA=="],
+
+ "napi-build-utils": ["napi-build-utils@2.0.0", "", {}, "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA=="],
+
+ "node-abi": ["node-abi@3.94.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-W5ZNO5KRPB5TkYmGVD9F6YqhsglXJzE6etpbmT+f6EQElhiX/UTG551cnsRGvLG3fyZEg9HwaDmNmj5nwJ4z9g=="],
+
+ "node-addon-api": ["node-addon-api@4.3.0", "", {}, "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ=="],
+
+ "node-sarif-builder": ["node-sarif-builder@3.4.0", "", { "dependencies": { "@types/sarif": "^2.1.7", "fs-extra": "^11.1.1" } }, "sha512-tGnJW6OKRii9u/b2WiUViTJS+h7Apxx17qsMUjsUeNDiMMX5ZFf8F8Fcz7PAQ6omvOxHZtvDTmOYKJQwmfpjeg=="],
+
+ "normalize-package-data": ["normalize-package-data@6.0.2", "", { "dependencies": { "hosted-git-info": "^7.0.0", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" } }, "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g=="],
+
+ "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="],
+
+ "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="],
+
+ "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="],
+
+ "open": ["open@10.2.0", "", { "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", "wsl-utils": "^0.1.0" } }, "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA=="],
+
+ "p-map": ["p-map@7.0.6", "", {}, "sha512-I4Prw6ivkd6p8PiYR1tXASOAOBzIJwu0TB7fqaX0c/8c3QAehNYmX57EijyGGGBt3c/BIowGwV03RVBtXvHEVg=="],
+
+ "parse-json": ["parse-json@8.3.0", "", { "dependencies": { "@babel/code-frame": "^7.26.2", "index-to-position": "^1.1.0", "type-fest": "^4.39.1" } }, "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ=="],
+
+ "parse-semver": ["parse-semver@1.1.1", "", { "dependencies": { "semver": "^5.1.0" } }, "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ=="],
+
+ "parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="],
+
+ "parse5-htmlparser2-tree-adapter": ["parse5-htmlparser2-tree-adapter@7.1.0", "", { "dependencies": { "domhandler": "^5.0.3", "parse5": "^7.0.0" } }, "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g=="],
+
+ "parse5-parser-stream": ["parse5-parser-stream@7.1.2", "", { "dependencies": { "parse5": "^7.0.0" } }, "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow=="],
+
+ "path-scurry": ["path-scurry@2.0.2", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg=="],
+
+ "path-type": ["path-type@6.0.0", "", {}, "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ=="],
+
+ "pend": ["pend@1.2.0", "", {}, "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="],
+
+ "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
+
+ "picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="],
+
+ "pluralize": ["pluralize@8.0.0", "", {}, "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA=="],
+
+ "prebuild-install": ["prebuild-install@7.1.3", "", { "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", "github-from-package": "0.0.0", "minimist": "^1.2.3", "mkdirp-classic": "^0.5.3", "napi-build-utils": "^2.0.0", "node-abi": "^3.3.0", "pump": "^3.0.0", "rc": "^1.2.7", "simple-get": "^4.0.0", "tar-fs": "^2.0.0", "tunnel-agent": "^0.6.0" }, "bin": { "prebuild-install": "bin.js" } }, "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug=="],
+
+ "pump": ["pump@3.0.4", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA=="],
+
+ "punycode.js": ["punycode.js@2.3.1", "", {}, "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA=="],
+
+ "qs": ["qs@6.15.3", "", { "dependencies": { "es-define-property": "^1.0.1", "side-channel": "^1.1.1" } }, "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A=="],
+
+ "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="],
+
+ "rc": ["rc@1.2.8", "", { "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" }, "bin": { "rc": "./cli.js" } }, "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw=="],
+
+ "rc-config-loader": ["rc-config-loader@4.1.4", "", { "dependencies": { "debug": "^4.4.3", "js-yaml": "^4.1.1", "json5": "^2.2.3", "require-from-string": "^2.0.2" } }, "sha512-3GiwEzklkbXTDp52UR5nT8iXgYAx1V9ZG/kDZT7p60u2GCv2XTwQq4NzinMoMpNtXhmt3WkhYXcj6HH8HdwCEQ=="],
+
+ "read": ["read@1.0.7", "", { "dependencies": { "mute-stream": "~0.0.4" } }, "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ=="],
+
+ "read-pkg": ["read-pkg@9.0.1", "", { "dependencies": { "@types/normalize-package-data": "^2.4.3", "normalize-package-data": "^6.0.0", "parse-json": "^8.0.0", "type-fest": "^4.6.0", "unicorn-magic": "^0.1.0" } }, "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA=="],
+
+ "readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="],
+
+ "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="],
+
+ "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="],
+
+ "run-applescript": ["run-applescript@7.1.0", "", {}, "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q=="],
+
+ "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="],
+
+ "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],
+
+ "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="],
+
+ "sax": ["sax@1.6.0", "", {}, "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA=="],
+
+ "secretlint": ["secretlint@10.2.2", "", { "dependencies": { "@secretlint/config-creator": "^10.2.2", "@secretlint/formatter": "^10.2.2", "@secretlint/node": "^10.2.2", "@secretlint/profiler": "^10.2.2", "debug": "^4.4.1", "globby": "^14.1.0", "read-pkg": "^9.0.1" }, "bin": "./bin/secretlint.js" }, "sha512-xVpkeHV/aoWe4vP4TansF622nBEImzCY73y/0042DuJ29iKIaqgoJ8fGxre3rVSHHbxar4FdJobmTnLp9AU0eg=="],
+
+ "semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="],
+
+ "side-channel": ["side-channel@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4", "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ=="],
+
+ "side-channel-list": ["side-channel-list@1.0.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4" } }, "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w=="],
+
+ "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="],
+
+ "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="],
+
+ "simple-concat": ["simple-concat@1.0.1", "", {}, "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="],
+
+ "simple-get": ["simple-get@4.0.1", "", { "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", "simple-concat": "^1.0.0" } }, "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA=="],
+
+ "slash": ["slash@5.1.0", "", {}, "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg=="],
+
+ "slice-ansi": ["slice-ansi@4.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" } }, "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ=="],
+
+ "spdx-correct": ["spdx-correct@3.2.0", "", { "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA=="],
+
+ "spdx-exceptions": ["spdx-exceptions@2.5.0", "", {}, "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w=="],
+
+ "spdx-expression-parse": ["spdx-expression-parse@3.0.1", "", { "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q=="],
+
+ "spdx-license-ids": ["spdx-license-ids@3.0.23", "", {}, "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw=="],
+
+ "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
+
+ "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="],
+
+ "strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="],
+
+ "strip-json-comments": ["strip-json-comments@2.0.1", "", {}, "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="],
+
+ "structured-source": ["structured-source@4.0.0", "", { "dependencies": { "boundary": "^2.0.0" } }, "sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA=="],
+
+ "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
+
+ "supports-hyperlinks": ["supports-hyperlinks@3.2.0", "", { "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" } }, "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig=="],
+
+ "table": ["table@6.9.0", "", { "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.3", "strip-ansi": "^6.0.1" } }, "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A=="],
+
+ "tar-fs": ["tar-fs@2.1.5", "", { "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", "tar-stream": "^2.1.4" } }, "sha512-OboTd8mmMhZDNPV+UjQcK9yKAatXu2aJ+r1w4im1Otd4M4fl2hwvdoXUxIYHFTHWK/3y3FarBP70v3vwmGlOxw=="],
+
+ "tar-stream": ["tar-stream@2.2.0", "", { "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" } }, "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ=="],
+
+ "terminal-link": ["terminal-link@4.0.0", "", { "dependencies": { "ansi-escapes": "^7.0.0", "supports-hyperlinks": "^3.2.0" } }, "sha512-lk+vH+MccxNqgVqSnkMVKx4VLJfnLjDBGzH16JVZjKE2DoxP57s6/vt6JmXV5I3jBcfGrxNrYtC+mPtU7WJztA=="],
+
+ "text-table": ["text-table@0.2.0", "", {}, "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="],
+
+ "textextensions": ["textextensions@6.11.0", "", { "dependencies": { "editions": "^6.21.0" } }, "sha512-tXJwSr9355kFJI3lbCkPpUH5cP8/M0GGy2xLO34aZCjMXBaK3SoPnZwr/oWmo1FdCnELcs4npdCIOFtq9W3ruQ=="],
+
+ "tmp": ["tmp@0.2.7", "", {}, "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw=="],
+
+ "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],
+
+ "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
+
+ "tunnel": ["tunnel@0.0.6", "", {}, "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="],
+
+ "tunnel-agent": ["tunnel-agent@0.6.0", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w=="],
+
+ "type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="],
+
+ "typed-rest-client": ["typed-rest-client@1.8.11", "", { "dependencies": { "qs": "^6.9.1", "tunnel": "0.0.6", "underscore": "^1.12.1" } }, "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA=="],
+
+ "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
+
+ "uc.micro": ["uc.micro@2.1.0", "", {}, "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A=="],
+
+ "underscore": ["underscore@1.13.8", "", {}, "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ=="],
+
+ "undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="],
+
+ "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
+
+ "unicorn-magic": ["unicorn-magic@0.3.0", "", {}, "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA=="],
+
+ "universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="],
+
+ "url-join": ["url-join@4.0.1", "", {}, "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA=="],
+
+ "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="],
+
+ "validate-npm-package-license": ["validate-npm-package-license@3.0.4", "", { "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew=="],
+
+ "version-range": ["version-range@4.15.0", "", {}, "sha512-Ck0EJbAGxHwprkzFO966t4/5QkRuzh+/I1RxhLgUKKwEn+Cd8NwM60mE3AqBZg5gYODoXW0EFsQvbZjRlvdqbg=="],
+
+ "whatwg-encoding": ["whatwg-encoding@3.1.1", "", { "dependencies": { "iconv-lite": "0.6.3" } }, "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ=="],
+
+ "whatwg-mimetype": ["whatwg-mimetype@4.0.0", "", {}, "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg=="],
+
+ "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="],
+
+ "wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="],
+
+ "xml2js": ["xml2js@0.5.0", "", { "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" } }, "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA=="],
+
+ "xmlbuilder": ["xmlbuilder@11.0.1", "", {}, "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="],
+
+ "yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="],
+
+ "yauzl": ["yauzl@3.4.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw=="],
+
+ "yazl": ["yazl@2.5.1", "", { "dependencies": { "buffer-crc32": "~0.2.3" } }, "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw=="],
+
+ "@secretlint/formatter/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
+
+ "@textlint/linter-formatter/pluralize": ["pluralize@2.0.0", "", {}, "sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw=="],
+
+ "@textlint/linter-formatter/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "htmlparser2/entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="],
+
+ "normalize-package-data/hosted-git-info": ["hosted-git-info@7.0.2", "", { "dependencies": { "lru-cache": "^10.0.1" } }, "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w=="],
+
+ "parse-semver/semver": ["semver@5.7.2", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="],
+
+ "parse5/entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="],
+
+ "path-scurry/lru-cache": ["lru-cache@11.5.2", "", {}, "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g=="],
+
+ "read-pkg/unicorn-magic": ["unicorn-magic@0.1.0", "", {}, "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ=="],
+
+ "string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "table/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "@textlint/linter-formatter/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "normalize-package-data/hosted-git-info/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
+
+ "string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "table/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+ }
+}
diff --git a/vscode/esbuild.config.mjs b/vscode/esbuild.config.mjs
new file mode 100644
index 0000000..f0b6978
--- /dev/null
+++ b/vscode/esbuild.config.mjs
@@ -0,0 +1,36 @@
+import esbuild from "esbuild";
+import { fileURLToPath } from "url";
+import { dirname, join } from "path";
+
+const here = dirname(fileURLToPath(import.meta.url));
+const production = process.argv[2] === "production";
+
+const obsidianShim = {
+ name: "obsidian-shim",
+ setup(build) {
+ build.onResolve({ filter: /^obsidian$/ }, () => ({
+ path: join(here, "src", "obsidian-shim.ts"),
+ }));
+ },
+};
+
+const ctx = await esbuild.context({
+ entryPoints: [join(here, "src", "extension.ts")],
+ bundle: true,
+ external: ["vscode"],
+ format: "cjs",
+ platform: "node",
+ target: "node18",
+ outfile: join(here, "dist", "extension.js"),
+ plugins: [obsidianShim],
+ sourcemap: production ? false : "inline",
+ minify: production,
+ logLevel: "info",
+});
+
+if (production) {
+ await ctx.rebuild();
+ process.exit(0);
+} else {
+ await ctx.watch();
+}
diff --git a/vscode/media/icon.svg b/vscode/media/icon.svg
new file mode 100644
index 0000000..eeddd06
--- /dev/null
+++ b/vscode/media/icon.svg
@@ -0,0 +1 @@
+
diff --git a/vscode/package.json b/vscode/package.json
new file mode 100644
index 0000000..0437018
--- /dev/null
+++ b/vscode/package.json
@@ -0,0 +1,81 @@
+{
+ "name": "agentfiles-vscode",
+ "displayName": "agentfiles",
+ "description": "Browse, open, and install AI agent skills across 18 tools from one panel",
+ "version": "0.1.0",
+ "publisher": "railly",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/Railly/agentfiles",
+ "directory": "vscode"
+ },
+ "engines": {
+ "vscode": "^1.90.0"
+ },
+ "categories": ["Other"],
+ "activationEvents": [],
+ "main": "./dist/extension.js",
+ "contributes": {
+ "viewsContainers": {
+ "activitybar": [
+ {
+ "id": "agentfiles",
+ "title": "agentfiles",
+ "icon": "media/icon.svg"
+ }
+ ]
+ },
+ "views": {
+ "agentfiles": [
+ {
+ "id": "agentfilesSkills",
+ "name": "Skills"
+ }
+ ]
+ },
+ "commands": [
+ {
+ "command": "agentfiles.refresh",
+ "title": "agentfiles: Refresh skills",
+ "icon": "$(refresh)"
+ },
+ {
+ "command": "agentfiles.installSkill",
+ "title": "agentfiles: Install skill from GitHub"
+ },
+ {
+ "command": "agentfiles.openSkill",
+ "title": "agentfiles: Open skill file"
+ }
+ ],
+ "menus": {
+ "view/title": [
+ {
+ "command": "agentfiles.refresh",
+ "when": "view == agentfilesSkills",
+ "group": "navigation"
+ },
+ {
+ "command": "agentfiles.installSkill",
+ "when": "view == agentfilesSkills"
+ }
+ ]
+ }
+ },
+ "scripts": {
+ "build": "node esbuild.config.mjs production",
+ "dev": "node esbuild.config.mjs",
+ "typecheck": "tsc --noEmit",
+ "package": "vsce package --no-dependencies"
+ },
+ "devDependencies": {
+ "@types/js-yaml": "^4.0.9",
+ "@types/node": "^20.14.0",
+ "@types/vscode": "^1.90.0",
+ "@vscode/vsce": "^3.2.1",
+ "esbuild": "^0.24.0",
+ "js-yaml": "^4.1.1",
+ "typescript": "^5.6.0"
+ }
+}
diff --git a/vscode/src/extension.ts b/vscode/src/extension.ts
new file mode 100644
index 0000000..28e748a
--- /dev/null
+++ b/vscode/src/extension.ts
@@ -0,0 +1,147 @@
+import * as vscode from "vscode";
+import { scanAll } from "../../src/scanner";
+import { TOOL_CONFIGS } from "../../src/tool-configs";
+import { TOOL_SVGS } from "../../src/tool-svgs";
+import { DEFAULT_SETTINGS, type SkillItem } from "../../src/types";
+import { installSkillAsync, TOOL_TO_AGENT, VALID_AGENTS } from "../../src/marketplace";
+
+type TreeNode = ToolNode | SkillNode;
+
+interface ToolNode {
+ kind: "tool";
+ id: string;
+ name: string;
+ count: number;
+}
+
+interface SkillNode {
+ kind: "skill";
+ item: SkillItem;
+ toolId: string;
+}
+
+class SkillsProvider implements vscode.TreeDataProvider {
+ private emitter = new vscode.EventEmitter();
+ readonly onDidChangeTreeData = this.emitter.event;
+ private byTool = new Map();
+ private iconCache = new Map();
+
+ constructor(private storageUri: vscode.Uri) {}
+
+ async refresh(): Promise {
+ const items = scanAll(DEFAULT_SETTINGS);
+ this.byTool.clear();
+ for (const item of items.values()) {
+ for (const toolId of item.tools) {
+ const list = this.byTool.get(toolId) || [];
+ list.push(item);
+ this.byTool.set(toolId, list);
+ }
+ }
+ for (const list of this.byTool.values()) {
+ list.sort((a, b) => a.name.localeCompare(b.name));
+ }
+ await Promise.all([...this.byTool.keys()].map((toolId) => this.ensureToolIcon(toolId)));
+ this.emitter.fire(undefined);
+ }
+
+ private async ensureToolIcon(toolId: string): Promise {
+ if (this.iconCache.has(toolId)) return;
+ const svg = TOOL_SVGS[toolId];
+ if (!svg) return;
+ const content = ``;
+ const uri = vscode.Uri.joinPath(this.storageUri, `${toolId}.svg`);
+ await vscode.workspace.fs.writeFile(uri, new TextEncoder().encode(content));
+ this.iconCache.set(toolId, uri);
+ }
+
+ getChildren(node?: TreeNode): TreeNode[] {
+ if (!node) {
+ return TOOL_CONFIGS.filter((t) => this.byTool.has(t.id))
+ .map((t) => ({
+ kind: "tool" as const,
+ id: t.id,
+ name: t.name,
+ count: this.byTool.get(t.id)?.length ?? 0,
+ }));
+ }
+ if (node.kind === "tool") {
+ return (this.byTool.get(node.id) || []).map((item) => ({
+ kind: "skill" as const,
+ item,
+ toolId: node.id,
+ }));
+ }
+ return [];
+ }
+
+ getTreeItem(node: TreeNode): vscode.TreeItem {
+ if (node.kind === "tool") {
+ const el = new vscode.TreeItem(node.name, vscode.TreeItemCollapsibleState.Collapsed);
+ el.description = String(node.count);
+ el.contextValue = "tool";
+ const icon = this.toolIcon(node.id);
+ if (icon) el.iconPath = icon;
+ return el;
+ }
+ const el = new vscode.TreeItem(node.item.name, vscode.TreeItemCollapsibleState.None);
+ el.description = node.item.type;
+ el.tooltip = node.item.description || node.item.filePath;
+ el.resourceUri = vscode.Uri.file(node.item.filePath);
+ el.command = {
+ command: "vscode.open",
+ title: "Open skill",
+ arguments: [vscode.Uri.file(node.item.filePath)],
+ };
+ el.contextValue = "skill";
+ return el;
+ }
+
+ private toolIcon(toolId: string): vscode.Uri | undefined {
+ return this.iconCache.get(toolId);
+ }
+}
+
+export async function activate(context: vscode.ExtensionContext): Promise {
+ await vscode.workspace.fs.createDirectory(context.globalStorageUri);
+ const provider = new SkillsProvider(context.globalStorageUri);
+
+ context.subscriptions.push(
+ vscode.window.registerTreeDataProvider("agentfilesSkills", provider),
+ vscode.commands.registerCommand("agentfiles.refresh", () => provider.refresh()),
+ vscode.commands.registerCommand("agentfiles.installSkill", async () => {
+ const source = await vscode.window.showInputBox({
+ prompt: "GitHub source (owner/repo or owner/repo@skill)",
+ placeHolder: "vercel-labs/agent-skills",
+ });
+ if (!source) return;
+ const installedToolIds = TOOL_CONFIGS.filter((t) => t.isInstalled()).map((t) => t.id);
+ const agentIds = [...new Set(installedToolIds.map((t) => TOOL_TO_AGENT[t]).filter(Boolean))];
+ const picks = await vscode.window.showQuickPick(
+ VALID_AGENTS.filter((a) => agentIds.includes(a.id)).map((a) => ({
+ label: a.label,
+ id: a.id,
+ picked: true,
+ })),
+ { canPickMany: true, title: "Install for which agents?" },
+ );
+ if (!picks || picks.length === 0) return;
+ await vscode.window.withProgress(
+ { location: vscode.ProgressLocation.Notification, title: `Installing ${source}...` },
+ async () => {
+ const result = await installSkillAsync(source, picks.map((p) => p.id));
+ if (result.success) {
+ vscode.window.showInformationMessage(`Installed ${source}`);
+ await provider.refresh();
+ } else {
+ vscode.window.showErrorMessage(`Install failed: ${result.output.slice(0, 300)}`);
+ }
+ },
+ );
+ }),
+ );
+
+ await provider.refresh();
+}
+
+export function deactivate(): void {}
diff --git a/vscode/src/obsidian-shim.ts b/vscode/src/obsidian-shim.ts
new file mode 100644
index 0000000..03a745c
--- /dev/null
+++ b/vscode/src/obsidian-shim.ts
@@ -0,0 +1,46 @@
+import { load } from "js-yaml";
+
+export function parseYaml(text: string): unknown {
+ return load(text);
+}
+
+export interface RequestUrlParam {
+ url: string;
+ method?: string;
+ headers?: Record;
+ body?: string;
+ throw?: boolean;
+}
+
+export interface RequestUrlResponse {
+ status: number;
+ text: string;
+ json: unknown;
+ arrayBuffer: ArrayBuffer;
+ headers: Record;
+}
+
+export async function requestUrl(param: RequestUrlParam | string): Promise {
+ const p: RequestUrlParam = typeof param === "string" ? { url: param } : param;
+ const res = await fetch(p.url, {
+ method: p.method || "GET",
+ headers: p.headers,
+ body: p.body,
+ });
+ const buf = await res.arrayBuffer();
+ const text = new TextDecoder().decode(buf);
+ if (p.throw !== false && res.status >= 400) {
+ throw new Error(`Request failed, status ${res.status}`);
+ }
+ let json: unknown = null;
+ try {
+ json = JSON.parse(text);
+ } catch {
+ json = null;
+ }
+ const headers: Record = {};
+ res.headers.forEach((v, k) => {
+ headers[k] = v;
+ });
+ return { status: res.status, text, json, arrayBuffer: buf, headers };
+}
diff --git a/vscode/tsconfig.json b/vscode/tsconfig.json
new file mode 100644
index 0000000..f604f63
--- /dev/null
+++ b/vscode/tsconfig.json
@@ -0,0 +1,27 @@
+{
+ "compilerOptions": {
+ "target": "ES2022",
+ "module": "commonjs",
+ "moduleResolution": "node",
+ "lib": ["ES2022"],
+ "strict": true,
+ "esModuleInterop": true,
+ "skipLibCheck": true,
+ "noEmit": true,
+ "paths": {
+ "obsidian": ["./src/obsidian-shim.ts"]
+ }
+ },
+ "include": ["src/**/*.ts", "../src/**/*.ts"],
+ "exclude": [
+ "../src/main.ts",
+ "../src/views/**",
+ "../src/editor/**",
+ "../src/settings.ts",
+ "../src/watcher.ts",
+ "../src/store.ts",
+ "../src/conversations/**",
+ "../src/tool-icons.ts",
+ "../src/utils/shell.ts"
+ ]
+}