forked from Railly/agentfiles
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
1 lines (1 loc) · 39.5 KB
/
Copy pathmain.js
File metadata and controls
1 lines (1 loc) · 39.5 KB
1
var R=Object.defineProperty;var bt=Object.getOwnPropertyDescriptor;var kt=Object.getOwnPropertyNames;var St=Object.prototype.hasOwnProperty;var yt=(a,t)=>{for(var e in t)R(a,e,{get:t[e],enumerable:!0})},wt=(a,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of kt(t))!St.call(a,i)&&i!==e&&R(a,i,{get:()=>t[i],enumerable:!(s=bt(t,i))||s.enumerable});return a};var Dt=a=>wt(R({},"__esModule",{value:!0}),a);var Vt={};yt(Vt,{default:()=>U});module.exports=Dt(Vt);var ft=require("obsidian");var rt=require("obsidian");var E=require("obsidian"),K=require("electron");var Z=require("os"),m=require("fs"),c=require("path"),h=(0,Z.homedir)(),C=process.env.XDG_CONFIG_HOME||(0,c.join)(h,".config");function P(a){return(0,m.existsSync)(`/Applications/${a}.app`)||(0,m.existsSync)((0,c.join)(h,"Applications",`${a}.app`))}function w(a){let t=[`/usr/local/bin/${a}`,`/opt/homebrew/bin/${a}`,(0,c.join)(h,".local","bin",a)];for(let s of t)if((0,m.existsSync)(s))return!0;let e=(0,c.join)(h,".nvm","versions","node");try{let{readdirSync:s}=require("fs");for(let i of s(e))if((0,m.existsSync)((0,c.join)(e,i,"bin",a)))return!0}catch{}return!1}var v=[{id:"claude-code",name:"Claude Code",color:"#f97316",icon:"brain",paths:[{baseDir:(0,c.join)(h,".claude","skills"),type:"skill",pattern:"directory-with-skillmd"},{baseDir:(0,c.join)(h,".claude","commands"),type:"command",pattern:"flat-md"}],agentPaths:[{baseDir:(0,c.join)(h,".claude","agents"),type:"agent",pattern:"flat-md"}],isInstalled:()=>(0,m.existsSync)((0,c.join)(h,".claude","settings.json"))||(0,m.existsSync)((0,c.join)(h,".claude","CLAUDE.md"))||w("claude")},{id:"cursor",name:"Cursor",color:"#3b82f6",icon:"mouse-pointer",paths:[{baseDir:(0,c.join)(h,".cursor","skills"),type:"skill",pattern:"directory-with-skillmd"},{baseDir:(0,c.join)(h,".cursor","rules"),type:"rule",pattern:"flat-md"}],agentPaths:[{baseDir:(0,c.join)(h,".cursor","agents"),type:"agent",pattern:"flat-md"}],isInstalled:()=>P("Cursor")||(0,m.existsSync)((0,c.join)(h,".cursor","argv.json"))},{id:"windsurf",name:"Windsurf",color:"#14b8a6",icon:"wind",paths:[{baseDir:(0,c.join)(h,".codeium","windsurf","memories"),type:"memory",pattern:"flat-md"},{baseDir:(0,c.join)(h,".windsurf","rules"),type:"rule",pattern:"flat-md"}],agentPaths:[],isInstalled:()=>P("Windsurf")||(0,m.existsSync)((0,c.join)(h,".codeium","windsurf","argv.json"))},{id:"codex",name:"Codex",color:"#22c55e",icon:"book",paths:[{baseDir:(0,c.join)(h,".codex","skills"),type:"skill",pattern:"directory-with-skillmd"},{baseDir:(0,c.join)(h,".codex","prompts"),type:"command",pattern:"flat-md"},{baseDir:(0,c.join)(h,".codex","memories"),type:"memory",pattern:"flat-md"}],agentPaths:[{baseDir:(0,c.join)(h,".codex","agents"),type:"agent",pattern:"flat-md"}],isInstalled:()=>(0,m.existsSync)((0,c.join)(h,".codex","config.toml"))||(0,m.existsSync)((0,c.join)(h,".codex","auth.json"))||w("codex")},{id:"copilot",name:"Copilot",color:"#a855f7",icon:"plane",paths:[{baseDir:(0,c.join)(h,".copilot","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>(0,m.existsSync)((0,c.join)(h,".copilot"))||w("copilot")},{id:"amp",name:"Amp",color:"#ec4899",icon:"zap",paths:[{baseDir:(0,c.join)(C,"amp","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>(0,m.existsSync)((0,c.join)(C,"amp","config.json"))||(0,m.existsSync)((0,c.join)(C,"amp","settings.json"))||w("amp")},{id:"opencode",name:"OpenCode",color:"#ef4444",icon:"terminal",paths:[{baseDir:(0,c.join)(C,"opencode","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>P("OpenCode")||(0,m.existsSync)((0,c.join)(C,"opencode","opencode.json"))||(0,m.existsSync)((0,c.join)(C,"opencode","opencode.jsonc"))||w("opencode")},{id:"pi",name:"Pi",color:"#06b6d4",icon:"sparkles",paths:[{baseDir:(0,c.join)(h,".pi","agent","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>w("pi")},{id:"antigravity",name:"Antigravity",color:"#ef4444",icon:"arrow-up-circle",paths:[{baseDir:(0,c.join)(h,".gemini","antigravity","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>P("Antigravity")||(0,m.existsSync)((0,c.join)(h,".gemini","antigravity","skills"))||w("antigravity")},{id:"claude-desktop",name:"Claude Desktop",color:"#f97316",icon:"monitor",paths:[],agentPaths:[],isInstalled:()=>P("Claude")},{id:"global-agents",name:"Global",color:"#a3e635",icon:"globe",paths:[{baseDir:(0,c.join)(h,".agents","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>(0,m.existsSync)((0,c.join)(h,".agents","skills"))},{id:"aider",name:"Aider",color:"#eab308",icon:"wrench",paths:[],agentPaths:[],isInstalled:()=>w("aider")}];var x={"claude-code":{viewBox:"0 0 24 24",paths:'<path d="M20.998 10.949H24v3.102h-3v3.028h-1.487V20H18v-2.921h-1.487V20H15v-2.921H9V20H7.488v-2.921H6V20H4.487v-2.921H3V14.05H0V10.95h3V5h17.998v5.949zM6 10.949h1.488V8.102H6v2.847zm10.51 0H18V8.102h-1.49v2.847z" fill="currentColor"/>'},cursor:{viewBox:"0 0 466.73 532.09",paths:'<path d="M457.43 125.94 244.42 2.96a22.127 22.127 0 0 0-22.12 0L9.3 125.94C3.55 129.26 0 135.4 0 142.05v247.99c0 6.65 3.55 12.79 9.3 16.11l213.01 122.98a22.127 22.127 0 0 0 22.12 0l213.01-122.98c5.75-3.32 9.3-9.46 9.3-16.11V142.05c0-6.65-3.55-12.79-9.3-16.11h-.01Zm-13.38 26.05L238.42 508.15c-1.39 2.4-5.06 1.42-5.06-1.36V273.58c0-4.66-2.49-8.97-6.53-11.31L24.87 145.67c-2.4-1.39-1.42-5.06 1.36-5.06h411.26c5.84 0 9.49 6.33 6.57 11.39h-.01Z" fill="currentColor"/>'},windsurf:{viewBox:"0 0 24 24",paths:'<path d="M23.55 5.067c-1.2038-.002-2.1806.973-2.1806 2.1765v4.8676c0 .972-.8035 1.7594-1.7597 1.7594-.568 0-1.1352-.286-1.4718-.7659l-4.9713-7.1003c-.4125-.5896-1.0837-.941-1.8103-.941-1.1334 0-2.1533.9635-2.1533 2.153v4.8957c0 .972-.7969 1.7594-1.7596 1.7594-.57 0-1.1363-.286-1.4728-.7658L.4076 5.1598C.2822 4.9798 0 5.0688 0 5.2882v4.2452c0 .2147.0656.4228.1884.599l5.4748 7.8183c.3234.462.8006.8052 1.3509.9298 1.3771.313 2.6446-.747 2.6446-2.0977v-4.893c0-.972.7875-1.7593 1.7596-1.7593h.003a1.798 1.798 0 0 1 1.4718.7658l4.9723 7.0994c.4135.5905 1.05.941 1.8093.941 1.1587 0 2.1515-.9645 2.1515-2.153v-4.8948c0-.972.7875-1.7594 1.7596-1.7594h.194a.22.22 0 0 0 .2204-.2202v-4.622a.22.22 0 0 0-.2203-.2203Z" fill="currentColor"/>'},codex:{viewBox:"0 0 24 24",paths:'<path d="M8.086.457a6.105 6.105 0 013.046-.415c1.333.153 2.521.72 3.564 1.7a.117.117 0 00.107.029c1.408-.346 2.762-.224 4.061.366l.063.03.154.076c1.357.703 2.33 1.77 2.918 3.198.278.679.418 1.388.421 2.126a5.655 5.655 0 01-.18 1.631.167.167 0 00.04.155 5.982 5.982 0 011.578 2.891c.385 1.901-.01 3.615-1.183 5.14l-.182.22a6.063 6.063 0 01-2.934 1.851.162.162 0 00-.108.102c-.255.736-.511 1.364-.987 1.992-1.199 1.582-2.962 2.462-4.948 2.451-1.583-.008-2.986-.587-4.21-1.736a.145.145 0 00-.14-.032c-.518.167-1.04.191-1.604.185a5.924 5.924 0 01-2.595-.622 6.058 6.058 0 01-2.146-1.781c-.203-.269-.404-.522-.551-.821a7.74 7.74 0 01-.495-1.283 6.11 6.11 0 01-.017-3.064.166.166 0 00.008-.074.115.115 0 00-.037-.064 5.958 5.958 0 01-1.38-2.202 5.196 5.196 0 01-.333-1.589 6.915 6.915 0 01.188-2.132c.45-1.484 1.309-2.648 2.577-3.493.282-.188.55-.334.802-.438.286-.12.573-.22.861-.304a.129.129 0 00.087-.087A6.016 6.016 0 015.635 2.31C6.315 1.464 7.132.846 8.086.457zm-.804 7.85a.848.848 0 00-1.473.842l1.694 2.965-1.688 2.848a.849.849 0 001.46.864l1.94-3.272a.849.849 0 00.007-.854l-1.94-3.393zm5.446 6.24a.849.849 0 000 1.695h4.848a.849.849 0 000-1.696h-4.848z" fill="currentColor"/>'},copilot:{viewBox:"0 0 24 24",paths:'<path d="M23.922 16.997C23.061 18.492 18.063 22.02 12 22.02 5.937 22.02.939 18.492.078 16.997A.641.641 0 0 1 0 16.741v-2.869a.883.883 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.098 10.098 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952C7.255 2.937 9.248 1.98 11.978 1.98c2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.841.841 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256Zm-11.75-5.992h-.344a4.359 4.359 0 0 1-.355.508c-.77.947-1.918 1.492-3.508 1.492-1.725 0-2.989-.359-3.782-1.259a2.137 2.137 0 0 1-.085-.104L4 11.746v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.359 4.359 0 0 1-.355-.508Zm2.328 3.25c.549 0 1 .451 1 1v2c0 .549-.451 1-1 1-.549 0-1-.451-1-1v-2c0-.549.451-1 1-1Zm-5 0c.549 0 1 .451 1 1v2c0 .549-.451 1-1 1-.549 0-1-.451-1-1v-2c0-.549.451-1 1-1Zm3.313-6.185c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z" fill="currentColor"/>'},opencode:{viewBox:"0 0 24 36",paths:'<path d="M18 30H6V18H18V30Z" fill="currentColor" opacity="0.4"/><path d="M18 12H6V30H18V12ZM24 36H0V6H24V36Z" fill="currentColor" opacity="0.6"/>'},"claude-desktop":{viewBox:"0 0 24 24",paths:'<path d="M4.709 12.739l3.986-7.639a.209.209 0 01.37 0l3.987 7.639a.209.209 0 01-.185.308H4.894a.209.209 0 01-.185-.308zm6.262-10.658L5.158 13.376a.209.209 0 00.185.308h11.628a.209.209 0 00.185-.308L11.341 2.08a.209.209 0 00-.37 0z" fill="currentColor"/>'},"global-agents":{viewBox:"0 0 24 24",paths:'<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z" fill="currentColor"/>'}};function T(a,t,e=16){let s=x[t];if(!s)return;let i=document.createElementNS("http://www.w3.org/2000/svg","svg");i.setAttribute("viewBox",s.viewBox),i.setAttribute("width",String(e)),i.setAttribute("height",String(e)),i.setAttribute("fill","none"),i.classList.add("as-tool-svg"),i.innerHTML=s.paths,a.appendChild(i)}var H=class{containerEl;store;onToggleDashboard;dashboardActive=!1;constructor(t,e,s){this.containerEl=t,this.store=e,this.onToggleDashboard=s}setDashboardActive(t){this.dashboardActive=t}render(){this.containerEl.empty(),this.containerEl.addClass("as-sidebar"),this.renderLibrarySection(),this.renderTypeSection(),this.renderToolSection(),this.renderCollectionSection(),this.store.hasSkillkit||this.renderSkillkitCta()}renderSection(t,e){let s=this.containerEl.createDiv("as-sidebar-section");s.createDiv({cls:"as-sidebar-title",text:t});for(let i of e){let n=s.createDiv("as-sidebar-item");!this.dashboardActive&&this.isActive(i.filter)&&n.addClass("is-active");let r=n.createSpan("as-sidebar-icon");(0,E.setIcon)(r,i.icon),n.createSpan({cls:"as-sidebar-label",text:i.label}),i.count!==void 0&&n.createSpan({cls:"as-sidebar-count",text:String(i.count)}),n.addEventListener("click",()=>{this.dashboardActive&&this.onToggleDashboard(),this.store.setFilter(i.filter)})}}renderTypeSection(){let t=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=>t.has(i.type)).map(i=>({label:i.label,icon:i.icon,filter:{kind:"type",type:i.type},count:t.get(i.type)||0}));s.length>0&&this.renderSection("Types",s)}renderToolSection(){let t=this.store.getToolCounts(),e=v.filter(i=>i.isInstalled()&&t.has(i.id));if(e.length===0)return;let s=this.containerEl.createDiv("as-sidebar-section");s.createDiv({cls:"as-sidebar-title",text:"Tools"});for(let i of e){let n={kind:"tool",toolId:i.id},r=s.createDiv("as-sidebar-item");!this.dashboardActive&&this.isActive(n)&&r.addClass("is-active");let l=r.createSpan("as-sidebar-icon");x[i.id]?T(l,i.id,14):(0,E.setIcon)(l,i.icon),r.createSpan({cls:"as-sidebar-label",text:i.name}),r.createSpan({cls:"as-sidebar-count",text:String(t.get(i.id)||0)}),r.addEventListener("click",()=>{this.dashboardActive&&this.onToggleDashboard(),this.store.setFilter(n)})}}renderCollectionSection(){let t=this.containerEl.createDiv("as-sidebar-section");t.createDiv({cls:"as-sidebar-title",text:"Collections"});let e=new Set;for(let s of this.store.allItems)for(let i of s.collections)e.add(i);if(e.size===0){t.createDiv({cls:"as-sidebar-empty",text:"No collections yet"});return}for(let s of e){let i={kind:"collection",name:s},n=t.createDiv("as-sidebar-item");!this.dashboardActive&&this.isActive(i)&&n.addClass("is-active");let r=n.createSpan("as-sidebar-icon");(0,E.setIcon)(r,"folder"),n.createSpan({cls:"as-sidebar-label",text:s}),n.addEventListener("click",()=>{this.dashboardActive&&this.onToggleDashboard(),this.store.setFilter(i)})}}renderLibrarySection(){let t=this.containerEl.createDiv("as-sidebar-section");t.createDiv({cls:"as-sidebar-title",text:"Library"});let e=[{label:"All Skills",icon:"layers",filter:{kind:"all"}},{label:"Favorites",icon:"star",filter:{kind:"favorites"}}];for(let n of e){let r=t.createDiv("as-sidebar-item");!this.dashboardActive&&this.isActive(n.filter)&&r.addClass("is-active");let l=r.createSpan("as-sidebar-icon");(0,E.setIcon)(l,n.icon),r.createSpan({cls:"as-sidebar-label",text:n.label}),r.addEventListener("click",()=>{this.dashboardActive&&this.onToggleDashboard(),this.store.setFilter(n.filter)})}let s=t.createDiv("as-sidebar-item");this.dashboardActive&&s.addClass("is-active");let i=s.createSpan("as-sidebar-icon");(0,E.setIcon)(i,"bar-chart-2"),s.createSpan({cls:"as-sidebar-label",text:"Dashboard"}),s.addEventListener("click",()=>{this.dashboardActive||this.onToggleDashboard()})}renderSkillkitCta(){let t=this.containerEl.createDiv("as-skillkit-cta"),e=t.createDiv("as-skillkit-icon");(0,E.setIcon)(e,"bar-chart-2"),t.createDiv({cls:"as-skillkit-title",text:"Unlock analytics"}),t.createDiv({cls:"as-skillkit-desc",text:"Install skillkit to see usage stats, stale badges, and heavy skill warnings."}),t.createDiv("as-skillkit-cmd").createEl("code",{text:"npm i -g skillkit"}),t.createEl("a",{cls:"as-skillkit-link",text:"Learn more",href:"https://www.npmjs.com/package/skillkit"}).addEventListener("click",n=>{n.preventDefault(),K.shell.openExternal("https://www.npmjs.com/package/skillkit")})}isActive(t){let e=this.store.filter;return e.kind!==t.kind?!1:e.kind==="tool"&&t.kind==="tool"?e.toolId===t.toolId:e.kind==="type"&&t.kind==="type"?e.type===t.type:e.kind==="collection"&&t.kind==="collection"?e.name===t.name:!0}};var Q=require("obsidian");var $=class{containerEl;store;onSelect;selectedId=null;inputEl=null;listEl=null;constructor(t,e,s){this.containerEl=t,this.store=e,this.onSelect=s}setSelected(t){this.selectedId=t}render(){if(!this.inputEl){this.containerEl.empty(),this.containerEl.addClass("as-list");let t=this.containerEl.createDiv("as-search");this.inputEl=t.createEl("input",{type:"text",placeholder:"Search skills...",cls:"as-search-input"}),this.inputEl.addEventListener("input",()=>{this.store.setSearch(this.inputEl.value)}),this.listEl=this.containerEl.createDiv("as-list-items")}this.inputEl.value=this.store.searchQuery,this.renderList()}renderList(){if(!this.listEl)return;this.listEl.empty();let t=this.store.filteredItems;if(t.length===0){this.listEl.createDiv({cls:"as-list-empty",text:"No skills found"});return}for(let e of t)this.renderCard(this.listEl,e)}renderCard(t,e){let s=t.createDiv("as-skill-card");e.id===this.selectedId&&s.addClass("is-selected");let i=s.createDiv("as-skill-header");if(i.createSpan({cls:"as-skill-name",text:e.name}),e.isFavorite){let r=i.createSpan("as-skill-star");(0,Q.setIcon)(r,"star")}e.description&&s.createDiv({cls:"as-skill-desc",text:e.description.length>80?e.description.slice(0,80)+"...":e.description});let n=s.createDiv("as-skill-meta");n.createSpan({cls:`as-type-tag as-type-${e.type}`,text:e.type});for(let r of e.tools){let l=v.find(d=>d.id===r);if(!l)continue;let o=n.createSpan("as-tool-badge");o.title=l.name,o.setAttribute("aria-label",l.name),x[r]?(o.style.color=l.color,T(o,r,12)):(o.style.backgroundColor=l.color,o.addClass("as-tool-badge-dot"))}e.usage&&(e.usage.uses>0&&n.createSpan({cls:"as-usage-badge",text:`${e.usage.uses}`,attr:{"aria-label":`Used ${e.usage.uses} times`}}),e.usage.isStale&&n.createSpan({cls:"as-badge-stale",text:"stale"}),e.usage.isHeavy&&n.createSpan({cls:"as-badge-heavy",text:"heavy"})),s.addEventListener("click",()=>{this.selectedId=e.id,this.onSelect(e)})}};var S=require("obsidian"),it=require("fs"),at=require("electron");var q=require("child_process"),k=require("fs"),f=require("path"),Y=require("os"),b=(0,Y.homedir)(),xt=(0,f.join)(b,".skillkit","analytics.db");function Et(){let a=["/usr/local/bin","/opt/homebrew/bin",(0,f.join)(b,".local","bin"),(0,f.join)(b,".bun","bin")],t=(0,f.join)(b,".nvm","versions","node");try{for(let s of(0,k.readdirSync)(t))a.push((0,f.join)(t,s,"bin"))}catch{}let e=(0,f.join)(b,".local","share","mise","installs");for(let s of["node","bun"])try{for(let i of(0,k.readdirSync)((0,f.join)(e,s)))a.push((0,f.join)(e,s,i,"bin"))}catch{}return[...a,process.env.PATH||""].join(":")}function Ct(){let a=["/usr/local/bin/skillkit","/opt/homebrew/bin/skillkit",(0,f.join)(b,".local","bin","skillkit"),(0,f.join)(b,".bun","bin","skillkit"),(0,f.join)(b,".local","share","mise","shims","skillkit")];for(let s of a)if((0,k.existsSync)(s))return s;let t=(0,f.join)(b,".nvm","versions","node");try{for(let s of(0,k.readdirSync)(t)){let i=(0,f.join)(t,s,"bin","skillkit");if((0,k.existsSync)(i))return i}}catch{}let e=(0,f.join)(b,".local","share","mise","installs");for(let s of["node","bun"])try{for(let i of(0,k.readdirSync)((0,f.join)(e,s))){let n=(0,f.join)(e,s,i,"bin","skillkit");if((0,k.existsSync)(n))return n}}catch{}return null}var z;function X(){return z===void 0&&(z=Ct()),z}function I(){return X()!==null||(0,k.existsSync)(xt)}function _(a){let t=X();if(!t)return null;try{let e=(0,q.execSync)(`${t} ${a} --json`,{encoding:"utf-8",timeout:15e3,env:{...process.env,NO_COLOR:"1",PATH:Et()},stdio:["pipe","pipe","pipe"]}).trim(),s=e.indexOf("{"),i=e.indexOf("["),n=s===-1?i:i===-1?s:Math.min(s,i);return n===-1?null:JSON.parse(e.slice(n))}catch{return null}}function tt(){let a=new Map;if(!I())return a;let t=_("stats");if(!t?.top_skills)return a;let e=Date.now();for(let s of t.top_skills){let i=s.daily.length>0?s.daily[s.daily.length-1]?.date:null,n=null;i&&(n=Math.floor((e-new Date(i).getTime())/(1e3*60*60*24))),a.set(s.name,{uses:s.total,lastUsed:i||null,daysSinceUsed:n,isStale:n!==null&&n>30,isHeavy:!1})}return a}function et(a){if(!a)return"never";let t=Date.now()-new Date(a).getTime(),e=Math.floor(t/6e4);if(e<60)return`${e}m ago`;let s=Math.floor(e/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 Tt(a){return Math.ceil(a.length/4)}function It(a){return a<1024?`${a} B`:a<1024*1024?`${(a/1024).toFixed(1)} KB`:`${(a/(1024*1024)).toFixed(1)} MB`}function st(a){return a>=1e3?`${(a/1e3).toFixed(1)}k`:String(a)}function _t(a){return new Date(a).toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}var O=class{containerEl;store;settings;saveSettings;currentItem=null;isEditing=!1;app;constructor(t,e,s,i,n){this.containerEl=t,this.store=e,this.settings=s,this.saveSettings=i,this.app=n.app}show(t){this.currentItem=t,this.isEditing=!1,this.render()}clear(){this.currentItem=null,this.containerEl.empty(),this.containerEl.addClass("as-detail");let t=this.containerEl.createDiv("as-detail-empty");(0,S.setIcon)(t.createDiv("as-detail-empty-icon"),"file-text"),t.createDiv({text:"Select a skill to view"})}render(){this.containerEl.empty(),this.containerEl.addClass("as-detail");let t=this.currentItem;if(!t)return this.clear();this.renderToolbar(t),this.isEditing?this.renderEditor(t):this.renderPreview(t)}renderToolbar(t){let e=this.containerEl.createDiv("as-detail-toolbar"),s=e.createDiv("as-toolbar-top"),i=s.createDiv("as-toolbar-left");i.createSpan({cls:"as-detail-title",text:t.name});for(let y of t.tools){let F=v.find(vt=>vt.id===y);if(!F)continue;let A=i.createSpan("as-tool-name-badge");A.style.borderColor=F.color,A.style.color=F.color,x[y]&&T(A,y,12),A.createSpan({text:F.name})}let n=s.createDiv("as-toolbar-right"),r=n.createEl("button",{cls:"as-toolbar-btn",attr:{"aria-label":"Toggle favorite"}});(0,S.setIcon)(r,t.isFavorite?"star":"star-off"),r.addEventListener("click",()=>{this.store.toggleFavorite(t.id,this.settings),this.saveSettings(),this.render()});let l=n.createEl("button",{cls:"as-toolbar-btn",attr:{"aria-label":this.isEditing?"Preview":"Edit"}});(0,S.setIcon)(l,this.isEditing?"eye":"pencil"),l.addEventListener("click",()=>{this.isEditing=!this.isEditing,this.render()});let o=n.createEl("button",{cls:"as-toolbar-btn",attr:{"aria-label":"Open in Finder"}});(0,S.setIcon)(o,"folder-open"),o.addEventListener("click",()=>{at.shell.showItemInFolder(t.filePath)});let d=e.createDiv("as-detail-meta-bar"),p=Tt(t.content),gt=t.content.length;if(d.createSpan({cls:"as-meta-item",text:It(t.fileSize)}),d.createSpan({cls:"as-meta-item",text:`${st(gt)} chars`}),d.createSpan({cls:"as-meta-item",text:`~${st(p)} tokens`}),d.createSpan({cls:"as-meta-item",text:_t(t.lastModified)}),d.createSpan({cls:"as-meta-item as-meta-type",text:t.type}),t.usage&&t.usage.uses>0){let y=e.createDiv("as-detail-usage-bar");y.createSpan({cls:"as-usage-stat",text:`${t.usage.uses} uses`}),y.createSpan({cls:"as-usage-stat",text:`last: ${et(t.usage.lastUsed)}`}),t.usage.isStale&&y.createSpan({cls:"as-badge-stale",text:"stale"}),t.usage.isHeavy&&y.createSpan({cls:"as-badge-heavy",text:"heavy"})}}renderFrontmatter(t,e){let s=Object.keys(e.frontmatter);if(s.length===0)return;let i=t.createDiv("as-frontmatter");for(let n of s){let r=e.frontmatter[n];if(r==null)continue;let l=i.createDiv("as-fm-prop");l.createSpan({cls:"as-fm-key",text:n});let o=typeof r=="object"?JSON.stringify(r):String(r);o.length>200?l.createDiv({cls:"as-fm-value-long",text:o}):l.createSpan({cls:"as-fm-value",text:o})}}renderPreview(t){let e=this.containerEl.createDiv("as-detail-body");this.renderFrontmatter(e,t);let s=e.createDiv("as-detail-preview markdown-rendered");S.MarkdownRenderer.render(this.app,t.content,s,t.filePath,this)}renderEditor(t){let e=this.containerEl.createDiv("as-detail-body as-detail-body-editor"),s=e.createEl("textarea",{cls:"as-editor-textarea"});s.value=t.content,s.spellcheck=!1,s.addEventListener("keydown",r=>{if((r.metaKey||r.ctrlKey)&&r.key==="s"&&(r.preventDefault(),this.saveFile(t,s.value)),r.key==="Tab"){r.preventDefault();let l=s.selectionStart,o=s.selectionEnd;s.value=s.value.substring(0,l)+" "+s.value.substring(o),s.selectionStart=s.selectionEnd=l+1}});let i=e.createDiv("as-save-bar");i.createEl("button",{cls:"as-save-btn",text:"Save"}).addEventListener("click",()=>{this.saveFile(t,s.value)}),i.createSpan({cls:"as-save-hint",text:"Cmd+S to save"})}saveFile(t,e){try{(0,it.writeFileSync)(t.filePath,e,"utf-8"),t.content=e,new S.Notice(`Saved ${t.name}`)}catch(s){new S.Notice(`Failed to save: ${s instanceof Error?s.message:String(s)}`)}}};var J=require("obsidian"),nt=require("electron");function Pt(){let a=_("stats"),t=_("health"),e=_("burn"),s=_("context");return{stats:a,health:t,burn:e&&e.length>0?e[0]:null,context:s}}var V=class{containerEl;constructor(t){this.containerEl=t}render(){if(this.containerEl.empty(),this.containerEl.addClass("as-dashboard"),!I()){this.renderNoSkillkit();return}let t=this.containerEl.createDiv("as-dash-loading"),e=t.createDiv("as-dash-spinner");t.createDiv({cls:"as-dash-loading-text",text:"Loading analytics..."}),setTimeout(()=>{let s=Pt();if(t.remove(),s.stats&&this.renderOverview(s.stats,s.health),s.stats&&this.renderTopSkills(s.stats),s.health||s.context){let i=this.containerEl.createDiv("as-dash-row");s.health&&this.renderHealth(s.health,i),s.context&&this.renderContext(s.context,i)}s.burn&&this.renderBurn(s.burn),s.health&&this.renderStale(s.health)},10)}renderNoSkillkit(){let t=this.containerEl.createDiv("as-dash-empty"),e=t.createDiv("as-dash-empty-icon");(0,J.setIcon)(e,"bar-chart-2"),t.createEl("h3",{text:"Dashboard requires skillkit"}),t.createEl("p",{text:"Install skillkit to unlock usage analytics, burn rate, context tax, and more."}),t.createDiv("as-dash-install-cmd").createEl("code",{text:"npm i -g @crafter/skillkit && skillkit scan"}),t.createEl("a",{cls:"as-skillkit-link",text:"Learn more",href:"https://www.npmjs.com/package/@crafter/skillkit"}).addEventListener("click",n=>{n.preventDefault(),nt.shell.openExternal("https://www.npmjs.com/package/@crafter/skillkit")})}renderOverview(t,e){let s=this.containerEl.createDiv("as-dash-section");s.createDiv({cls:"as-dash-title",text:"Overview"});let i=s.createDiv("as-dash-stats");this.statCard(i,String(t.total_invocations),"invocations","activity"),this.statCard(i,String(t.unique_skills),"active skills","sparkles"),this.statCard(i,String(e?.installed??0),"installed","package"),this.statCard(i,String(e?.usage.unused_30d??0),"stale","alert-triangle")}statCard(t,e,s,i){let n=t.createDiv("as-stat-card"),r=n.createDiv("as-stat-icon");(0,J.setIcon)(r,i),n.createDiv({cls:"as-stat-value",text:e}),n.createDiv({cls:"as-stat-label",text:s})}renderTopSkills(t){if(t.top_skills.length===0)return;let e=this.containerEl.createDiv("as-dash-section");e.createDiv({cls:"as-dash-title",text:`Top Skills (${t.period.days}d)`});let s=t.top_skills[0]?.total||1,i=e.createDiv("as-dash-bars");for(let n of t.top_skills.slice(0,10)){let r=i.createDiv("as-bar-row");r.createSpan({cls:"as-bar-name",text:n.name});let o=r.createDiv("as-bar-wrap").createDiv("as-bar-fill");o.style.width=`${n.total/s*100}%`,r.createSpan({cls:"as-bar-count",text:String(n.total)})}}renderHealth(t,e){let s=(e||this.containerEl).createDiv("as-dash-section");s.createDiv({cls:"as-dash-title",text:"Health"});let i=t.usage.used_30d+t.usage.unused_30d,n=i>0?Math.round(t.usage.used_30d/i*100):0,r=s.createDiv("as-dash-health-row"),l=r.createDiv("as-donut");l.style.setProperty("--pct",`${n}`),l.createDiv({cls:"as-donut-label",text:`${n}%`}),l.createDiv({cls:"as-donut-sub",text:"active"});let o=r.createDiv("as-health-details");o.createDiv({cls:"as-health-line",text:`${t.usage.used_30d} used in 30d`}),o.createDiv({cls:"as-health-line as-health-warn",text:`${t.usage.unused_30d} never triggered`});let p=o.createDiv("as-budget-bar").createDiv("as-budget-fill");p.style.width=`${t.metadata.pct}%`,t.metadata.pct>80&&p.addClass("as-budget-over"),o.createDiv({cls:"as-health-line",text:`Metadata budget: ${t.metadata.pct}%`})}renderBurn(t){let e=this.containerEl.createDiv("as-dash-section");e.createDiv({cls:"as-dash-title",text:`Burn Rate \u2014 ${t.agent} (${t.period.days}d)`});let s=e.createDiv("as-dash-stats as-dash-stats-sm");if(this.statCard(s,`$${t.cost.total.toFixed(0)}`,"total cost","flame"),this.statCard(s,`$${(t.cost.total/(t.period.days||1)).toFixed(0)}`,"daily avg","trending-up"),this.statCard(s,`${(t.period.sessions||0).toLocaleString()}`,"sessions","terminal"),this.statCard(s,`${((t.period.api_calls||0)/1e3).toFixed(0)}k`,"API calls","zap"),t.by_model&&t.by_model.length>0){let l=e.createDiv("as-model-breakdown");for(let o of t.by_model.slice(0,4)){let d=l.createDiv("as-model-row");d.createSpan({cls:"as-model-name",text:o.model}),d.createSpan({cls:"as-model-calls",text:`${o.apiCalls.toLocaleString()} calls`}),o.costUsd>0&&d.createSpan({cls:"as-model-cost",text:`$${o.costUsd.toFixed(0)}`})}}let i=t.by_day.slice(-14);if(i.length===0)return;let n=Math.max(...i.map(l=>l.costUsd),1),r=e.createDiv("as-burn-chart");for(let l of i){let o=r.createDiv("as-burn-col"),d=o.createDiv("as-burn-bar"),p=Math.max(2,l.costUsd/n*100);d.style.height=`${p}%`,d.title=`${l.date}: $${l.costUsd.toFixed(0)}`,o.createDiv({cls:"as-burn-date",text:l.date.slice(8)})}}renderContext(t,e){let s=(e||this.containerEl).createDiv("as-dash-section");s.createDiv({cls:"as-dash-title",text:"Context Tax"});let i=t.always_loaded.total_tokens,n=[{label:"CLAUDE.md",tokens:t.always_loaded.claude_md_tokens,cls:"as-ctx-claude"},{label:"Skills metadata",tokens:t.always_loaded.skill_metadata_tokens,cls:"as-ctx-skills"},{label:"Memory",tokens:t.always_loaded.memory_tokens,cls:"as-ctx-memory"}],r=s.createDiv("as-ctx-bar");for(let d of n){let p=r.createDiv(`as-ctx-part ${d.cls}`);p.style.width=`${d.tokens/i*100}%`,p.title=`${d.label}: ${(d.tokens/1e3).toFixed(1)}k tokens`}let l=s.createDiv("as-ctx-legend");for(let d of n){let p=l.createDiv("as-ctx-legend-item");p.createSpan({cls:`as-ctx-dot ${d.cls}`}),p.createSpan({text:`${d.label}: ${(d.tokens/1e3).toFixed(1)}k`})}let o=s.createDiv("as-ctx-costs");o.createDiv({text:`Per session (cached): $${t.session_estimate.with_cache.toFixed(2)}`}),o.createDiv({text:`Without cache: $${t.session_estimate.without_cache.toFixed(2)}`}),o.createDiv({cls:"as-ctx-savings",text:`Cache saves ${t.session_estimate.savings_pct.toFixed(0)}%`})}renderStale(t){if(t.usage.never_used.length===0)return;let e=this.containerEl.createDiv("as-dash-section");e.createDiv({cls:"as-dash-title",text:`Stale Skills (${t.usage.unused_30d})`});let s=e.createDiv("as-stale-list");for(let n of t.usage.never_used.slice(0,20))s.createDiv("as-stale-item").createSpan({text:n});t.usage.never_used.length>20&&s.createDiv({cls:"as-stale-more",text:`+${t.usage.never_used.length-20} more`});let i=e.createDiv("as-stale-hint");i.createEl("code",{text:"skillkit prune"}),i.createSpan({text:" to remove unused skills"})}};var L="agentfiles-view",B=class extends rt.ItemView{store;settings;saveSettings;sidebarPanel;listPanel;detailPanel;dashboardPanel;sidebarEl;listEl;detailEl;dashboardEl;isDashboard=!1;updateRef=null;constructor(t,e,s,i){super(t),this.store=e,this.settings=s,this.saveSettings=i}getViewType(){return L}getDisplayText(){return"Agentfiles"}getIcon(){return"cpu"}onOpen(){let t=this.contentEl;t.empty(),t.addClass("as-container"),this.sidebarEl=t.createDiv("as-panel as-panel-sidebar"),this.listEl=t.createDiv("as-panel as-panel-list"),this.detailEl=t.createDiv("as-panel as-panel-detail"),this.dashboardEl=t.createDiv("as-panel as-panel-dashboard"),this.dashboardEl.style.display="none",this.sidebarPanel=new H(this.sidebarEl,this.store,()=>this.toggleDashboard()),this.listPanel=new $(this.listEl,this.store,e=>this.onSelectItem(e)),this.detailPanel=new O(this.detailEl,this.store,this.settings,this.saveSettings,this),this.dashboardPanel=new V(this.dashboardEl),this.updateRef=this.store.on("updated",()=>this.renderAll()),this.renderAll()}toggleDashboard(){this.isDashboard=!this.isDashboard,this.isDashboard?(this.listEl.style.display="none",this.detailEl.style.display="none",this.dashboardEl.style.display="block",this.dashboardPanel.render()):(this.listEl.style.display="",this.detailEl.style.display="",this.dashboardEl.style.display="none"),this.sidebarPanel.setDashboardActive(this.isDashboard),this.sidebarPanel.render()}renderAll(){this.sidebarPanel.render(),this.isDashboard||(this.listPanel.render(),this.store.filteredItems.length||this.detailPanel.clear())}onSelectItem(t){this.isDashboard&&this.toggleDashboard(),this.listPanel.setSelected(t.id),this.listPanel.render(),this.detailPanel.show(t)}onClose(){this.updateRef&&this.store.offref(this.updateRef)}};var ut=require("obsidian");var u=require("fs"),g=require("path"),lt=require("obsidian"),ct=require("crypto");var ot=new Set(["readme.md","license","license.md","changelog.md",".ds_store","thumbs.db"]);function Lt(a){return(0,ct.createHash)("sha256").update(a).digest("hex").slice(0,12)}function Mt(a){let t=a.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);if(!t)return{frontmatter:{},content:a};try{let e=(0,lt.parseYaml)(t[1]);return{frontmatter:typeof e=="object"&&e?e:{},content:t[2]}}catch{return{frontmatter:{},content:a}}}function Ft(a,t,e,s){if(typeof a.name=="string"&&a.name)return a.name;let i=(0,g.basename)(e,(0,g.extname)(e));if(i==="SKILL")return(0,g.basename)((0,g.join)(e,".."));if(s==="flat-md"||s==="mdc")return i;let n=t.match(/^#\s+(.+)$/m);return n?n[1].trim():i}function At(a,t,e){if(!(0,u.existsSync)(a))return[];let s=[];for(let i of(0,u.readdirSync)(a,{withFileTypes:!0})){if(!i.isDirectory()&&!i.isSymbolicLink())continue;let n=(0,g.join)(a,i.name,"SKILL.md");if(!(0,u.existsSync)(n))continue;let r=M(n,t,e);r&&s.push(r)}return s}function Ht(a,t,e){if(!(0,u.existsSync)(a))return[];let s=[];for(let i of(0,u.readdirSync)(a,{withFileTypes:!0})){if(i.isDirectory()||i.isSymbolicLink()){let l=(0,g.join)(a,i.name,"SKILL.md");if((0,u.existsSync)(l)){let p=M(l,t,e);p&&s.push(p);continue}let o=(0,u.readdirSync)((0,g.join)(a,i.name)).filter(p=>p.endsWith(".md")&&!ot.has(p.toLowerCase())),d=o.find(p=>p.toLowerCase()===`${i.name.toLowerCase()}.md`)||o[0];if(d){let p=M((0,g.join)(a,i.name,d),t,e);p&&s.push(p)}continue}let n=i.name.toLowerCase();if(!n.endsWith(".md")||ot.has(n))continue;let r=M((0,g.join)(a,i.name),t,e,"flat-md");r&&s.push(r)}return s}function $t(a,t,e){if(!(0,u.existsSync)(a))return[];let s=[];for(let i of(0,u.readdirSync)(a,{withFileTypes:!0})){if(!i.name.endsWith(".mdc")&&!i.name.endsWith(".md")||i.isDirectory())continue;let n=M((0,g.join)(a,i.name),t,e,"mdc");n&&s.push(n)}return s}function M(a,t,e,s="directory-with-skillmd"){try{let i=(0,u.readFileSync)(a,"utf-8"),n=(0,u.statSync)(a),{frontmatter:r,content:l}=Mt(i),o=Ft(r,l,a,s),d=typeof r.description=="string"?r.description:"",p;try{p=(0,u.realpathSync)(a)}catch{p=a}return{id:Lt(p),name:o,description:d,type:t,tools:[e],filePath:a,realPath:p,dirPath:(0,g.join)(a,".."),content:i,frontmatter:r,lastModified:n.mtimeMs,fileSize:n.size,isFavorite:!1,collections:[]}}catch{return null}}function dt(a,t){switch(a.pattern){case"directory-with-skillmd":return At(a.baseDir,a.type,t);case"flat-md":return Ht(a.baseDir,a.type,t);case"mdc":return $t(a.baseDir,a.type,t)}}function Ot(a,t){let e=[],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 n=(0,g.join)(a,i.sub);if(!(0,u.existsSync)(n))continue;let r={baseDir:n,type:i.type,pattern:i.pattern};e.push(...dt(r,t))}return e}function ht(a){let t=new Map,e=new Map;function s(i,n){let r=t.get(i.id);if(r){r.tools.includes(n)||r.tools.push(n);return}let l=e.get(i.name);if(l){let o=t.get(l);o&&!o.tools.includes(n)&&o.tools.push(n);return}i.isFavorite=a.favorites.includes(i.id);for(let[o,d]of Object.entries(a.collections))d.includes(i.id)&&i.collections.push(o);t.set(i.id,i),e.set(i.name,i.id)}for(let i of v){if(!i.isInstalled())continue;let n=a.tools[i.id];if(n&&!n.enabled)continue;let r=[...i.paths,...i.agentPaths];for(let l of r)for(let o of dt(l,i.id))s(o,i.id)}for(let i of a.customScanPaths)if((0,u.existsSync)(i))for(let n of Ot(i,"claude-code"))s(n,"claude-code");return t}function pt(){let a=[];for(let t of v)if(t.isInstalled())for(let e of[...t.paths,...t.agentPaths])(0,u.existsSync)(e.baseDir)&&a.push(e.baseDir);return a}var N=class extends ut.Events{items=new Map;_filter={kind:"all"};_searchQuery="";get filter(){return this._filter}get searchQuery(){return this._searchQuery}get allItems(){return Array.from(this.items.values())}get filteredItems(){let t=this.allItems;switch(this._filter.kind){case"favorites":t=t.filter(e=>e.isFavorite);break;case"tool":t=t.filter(e=>e.tools.includes(this._filter.toolId));break;case"type":t=t.filter(e=>e.type===this._filter.type);break;case"collection":t=t.filter(e=>e.collections.includes(this._filter.name));break}if(this._searchQuery){let e=this._searchQuery.toLowerCase();t=t.filter(s=>s.name.toLowerCase().includes(e)||s.description.toLowerCase().includes(e)||s.content.toLowerCase().includes(e))}return t.sort((e,s)=>e.name.localeCompare(s.name))}getItem(t){return this.items.get(t)}get hasSkillkit(){return I()}refresh(t){this.items=ht(t),this.enrichWithSkillkit(),this.trigger("updated")}enrichWithSkillkit(){if(!I())return;let t=tt();for(let e of this.items.values()){let s=e.filePath.split("/").slice(-2,-1)[0],i=e.name.toLowerCase().replace(/\s+/g,"-"),n=t.get(e.name)||t.get(s)||t.get(i);n?(n.isHeavy=e.content.length>5e3,e.usage=n):e.usage={uses:0,lastUsed:null,daysSinceUsed:null,isStale:!1,isHeavy:e.content.length>5e3}}}setFilter(t){this._filter=t,this.trigger("updated")}setSearch(t){this._searchQuery=t,this.trigger("updated")}toggleFavorite(t,e){let s=this.items.get(t);s&&(s.isFavorite=!s.isFavorite,s.isFavorite?e.favorites.includes(t)||e.favorites.push(t):e.favorites=e.favorites.filter(i=>i!==t),this.trigger("updated"))}getToolCounts(){let t=new Map;for(let e of this.items.values())for(let s of e.tools)t.set(s,(t.get(s)||0)+1);return t}getTypeCounts(){let t=new Map;for(let e of this.items.values())t.set(e.type,(t.get(e.type)||0)+1);return t}};var mt=require("fs"),W=class{watchers=[];debounceTimer=null;debounceMs;onChange;constructor(t,e){this.debounceMs=t,this.onChange=e}watchPaths(t){this.close();for(let e of t)try{let s=(0,mt.watch)(e,{recursive:!0},()=>this.scheduleUpdate());this.watchers.push(s)}catch{}}scheduleUpdate(){this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(()=>{this.debounceTimer=null,this.onChange()},this.debounceMs)}close(){this.debounceTimer&&(clearTimeout(this.debounceTimer),this.debounceTimer=null);for(let t of this.watchers)try{t.close()}catch{}this.watchers=[]}};var D=require("obsidian");var j=class extends D.PluginSettingTab{plugin;constructor(t,e){super(t,e),this.plugin=e}display(){let{containerEl:t}=this;t.empty(),new D.Setting(t).setName("Agentfiles").setHeading(),new D.Setting(t).setName("File watching").setDesc("Automatically detect changes to skill files").addToggle(e=>e.setValue(this.plugin.settings.watchEnabled).onChange(async s=>{this.plugin.settings.watchEnabled=s,await this.plugin.saveSettings(),this.plugin.restartWatcher()})),new D.Setting(t).setName("Watch debounce (ms)").setDesc("Delay before re-scanning after file changes").addText(e=>e.setValue(String(this.plugin.settings.watchDebounceMs)).onChange(async s=>{let i=parseInt(s);!isNaN(i)&&i>=100&&(this.plugin.settings.watchDebounceMs=i,await this.plugin.saveSettings())})),new D.Setting(t).setName("Tools").setHeading();for(let e of v){let s=e.isInstalled(),i=this.plugin.settings.tools[e.id]||{enabled:!0,customPaths:[]};new D.Setting(t).setName(e.name).setDesc(s?"Installed":"Not detected").addToggle(n=>n.setValue(s&&i.enabled).setDisabled(!s).onChange(async r=>{this.plugin.settings.tools[e.id]={...i,enabled:r},await this.plugin.saveSettings(),this.plugin.refreshStore()}))}}};var G={tools:{},watchEnabled:!0,watchDebounceMs:500,favorites:[],collections:{},customScanPaths:[]};var U=class extends ft.Plugin{settings=G;store=new N;watcher=null;async onload(){await this.loadSettings(),this.addVaultPath(),this.registerView(L,t=>new B(t,this.store,this.settings,()=>this.saveSettings())),this.addRibbonIcon("cpu","Agentfiles",()=>this.activateView()),this.addCommand({id:"open",name:"Open",callback:()=>this.activateView()}),this.addSettingTab(new j(this.app,this)),this.refreshStore(),this.startWatcher()}addVaultPath(){let t=this.app.vault.adapter;if(!t.getBasePath)return;let e=t.getBasePath();this.settings.customScanPaths.includes(e)||this.settings.customScanPaths.push(e)}onunload(){this.stopWatcher()}refreshStore(){this.store.refresh(this.settings)}startWatcher(){this.settings.watchEnabled&&(this.watcher=new W(this.settings.watchDebounceMs,()=>this.refreshStore()),this.watcher.watchPaths(pt()))}stopWatcher(){this.watcher&&(this.watcher.close(),this.watcher=null)}restartWatcher(){this.stopWatcher(),this.startWatcher()}async activateView(){let t=this.app.workspace.getLeavesOfType(L);if(t.length>0){this.app.workspace.revealLeaf(t[0]);return}let e=this.app.workspace.getLeaf("tab");await e.setViewState({type:L,active:!0}),this.app.workspace.revealLeaf(e)}async loadSettings(){this.settings=Object.assign({},G,await this.loadData())}async saveSettings(){await this.saveData(this.settings)}};