mirror of
https://github.com/railly/agentfiles.git
synced 2026-07-22 14:30:25 +00:00
Add a deep search toggle button in the search bar that controls whether search includes description and/or file content beyond just the name. - Default off (matching upstream name-only search behavior) - Settings: "Deep search by default" toggle + "Deep search scope" dropdown (description only / file content only / both) - Toggle button sits alongside existing filter and sort buttons Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3 lines
76 KiB
JavaScript
3 lines
76 KiB
JavaScript
var ve=Object.defineProperty;var xt=Object.getOwnPropertyDescriptor;var Et=Object.getOwnPropertyNames;var Ct=Object.prototype.hasOwnProperty;var Lt=(n,e)=>{for(var t in e)ve(n,t,{get:e[t],enumerable:!0})},Tt=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Et(e))!Ct.call(n,i)&&i!==t&&ve(n,i,{get:()=>e[i],enumerable:!(s=xt(e,i))||s.enumerable});return n};var Mt=n=>Tt(ve({},"__esModule",{value:!0}),n);var as={};Lt(as,{default:()=>ge});module.exports=Mt(as);var wt=require("obsidian");var kt=require("obsidian");var R=require("obsidian"),je=require("electron");var Fe=require("os"),b=require("fs"),p=require("path"),u=(0,Fe.homedir)(),V=process.env.XDG_CONFIG_HOME||(0,p.join)(u,".config");function Q(n){return(0,b.existsSync)(`/Applications/${n}.app`)||(0,b.existsSync)((0,p.join)(u,"Applications",`${n}.app`))}function F(n){let e=[`/usr/local/bin/${n}`,`/opt/homebrew/bin/${n}`,(0,p.join)(u,".local","bin",n)];for(let s of e)if((0,b.existsSync)(s))return!0;let t=(0,p.join)(u,".nvm","versions","node");try{for(let s of(0,b.readdirSync)(t))if((0,b.existsSync)((0,p.join)(t,s,"bin",n)))return!0}catch{}return!1}var E=[{id:"claude-code",name:"Claude Code",color:"#f97316",icon:"brain",paths:[{baseDir:(0,p.join)(u,".claude","skills"),type:"skill",pattern:"directory-with-skillmd"},{baseDir:(0,p.join)(u,".claude","commands"),type:"command",pattern:"flat-md"}],agentPaths:[{baseDir:(0,p.join)(u,".claude","agents"),type:"agent",pattern:"flat-md"}],isInstalled:()=>(0,b.existsSync)((0,p.join)(u,".claude","settings.json"))||(0,b.existsSync)((0,p.join)(u,".claude","CLAUDE.md"))||F("claude")},{id:"cursor",name:"Cursor",color:"#3b82f6",icon:"mouse-pointer",paths:[{baseDir:(0,p.join)(u,".cursor","skills"),type:"skill",pattern:"directory-with-skillmd"},{baseDir:(0,p.join)(u,".cursor","rules"),type:"rule",pattern:"flat-md"}],agentPaths:[{baseDir:(0,p.join)(u,".cursor","agents"),type:"agent",pattern:"flat-md"}],isInstalled:()=>Q("Cursor")||(0,b.existsSync)((0,p.join)(u,".cursor","argv.json"))},{id:"windsurf",name:"Windsurf",color:"#14b8a6",icon:"wind",paths:[{baseDir:(0,p.join)(u,".codeium","windsurf","memories"),type:"memory",pattern:"flat-md"},{baseDir:(0,p.join)(u,".windsurf","rules"),type:"rule",pattern:"flat-md"}],agentPaths:[],isInstalled:()=>Q("Windsurf")||(0,b.existsSync)((0,p.join)(u,".codeium","windsurf","argv.json"))},{id:"codex",name:"Codex",color:"#22c55e",icon:"book",paths:[{baseDir:(0,p.join)(u,".codex","skills"),type:"skill",pattern:"directory-with-skillmd"},{baseDir:(0,p.join)(u,".codex","prompts"),type:"command",pattern:"flat-md"},{baseDir:(0,p.join)(u,".codex","memories"),type:"memory",pattern:"flat-md"}],agentPaths:[{baseDir:(0,p.join)(u,".codex","agents"),type:"agent",pattern:"flat-md"}],isInstalled:()=>(0,b.existsSync)((0,p.join)(u,".codex","config.toml"))||(0,b.existsSync)((0,p.join)(u,".codex","auth.json"))||F("codex")},{id:"copilot",name:"Copilot",color:"#a855f7",icon:"plane",paths:[{baseDir:(0,p.join)(u,".copilot","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>(0,b.existsSync)((0,p.join)(u,".copilot"))||F("copilot")},{id:"amp",name:"Amp",color:"#ec4899",icon:"zap",paths:[{baseDir:(0,p.join)(V,"amp","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>(0,b.existsSync)((0,p.join)(V,"amp","config.json"))||(0,b.existsSync)((0,p.join)(V,"amp","settings.json"))||F("amp")},{id:"opencode",name:"OpenCode",color:"#ef4444",icon:"terminal",paths:[{baseDir:(0,p.join)(V,"opencode","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>Q("OpenCode")||(0,b.existsSync)((0,p.join)(V,"opencode","opencode.json"))||(0,b.existsSync)((0,p.join)(V,"opencode","opencode.jsonc"))||F("opencode")},{id:"pi",name:"Pi",color:"#06b6d4",icon:"sparkles",paths:[{baseDir:(0,p.join)(u,".pi","agent","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>F("pi")},{id:"antigravity",name:"Antigravity",color:"#ef4444",icon:"arrow-up-circle",paths:[{baseDir:(0,p.join)(u,".gemini","antigravity","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>Q("Antigravity")||(0,b.existsSync)((0,p.join)(u,".gemini","antigravity","skills"))||F("antigravity")},{id:"claude-desktop",name:"Claude Desktop",color:"#f97316",icon:"monitor",paths:[],agentPaths:[],isInstalled:()=>Q("Claude")},{id:"global-agents",name:"Global",color:"#a3e635",icon:"globe",paths:[{baseDir:(0,p.join)(u,".agents","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>(0,b.existsSync)((0,p.join)(u,".agents","skills"))},{id:"aider",name:"Aider",color:"#eab308",icon:"wrench",paths:[],agentPaths:[],isInstalled:()=>F("aider")}];var C={"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"/>'},goose:{viewBox:"0 0 24 24",paths:'<path d="M21.595 23.61c1.167-.254 2.405-.944 2.405-.944l-2.167-1.784a12.124 12.124 0 01-2.695-3.131 12.127 12.127 0 00-3.97-4.049l-.794-.462a1.115 1.115 0 01-.488-.815.844.844 0 01.154-.575c.413-.582 2.548-3.115 2.94-3.44.503-.416 1.065-.762 1.586-1.159.074-.056.148-.112.221-.17.003-.002.007-.004.009-.007.167-.131.325-.272.45-.438.453-.524.563-.988.59-1.193-.061-.197-.244-.639-.753-1.148.319.02.705.272 1.056.569.235-.376.481-.773.727-1.171.165-.266-.08-.465-.086-.471h-.001V3.22c-.007-.007-.206-.25-.471-.086-.567.35-1.134.702-1.639 1.021 0 0-.597-.012-1.305.599a2.464 2.464 0 00-.438.45l-.007.009c-.058.072-.114.147-.17.221-.397.521-.743 1.083-1.16 1.587-.323.391-2.857 2.526-3.44 2.94a.842.842 0 01-.574.153 1.115 1.115 0 01-.815-.488l-.462-.794a12.123 12.123 0 00-4.049-3.97 12.133 12.133 0 01-3.13-2.695L1.332 0S.643 1.238.39 2.405c.352.428 1.27 1.49 2.34 2.302C1.58 4.167.73 3.75.06 3.4c-.103.765-.063 1.92.043 2.816.726.317 1.961.806 3.219 1.066-1.006.236-2.11.278-2.961.262.15.554.358 1.119.64 1.688.119.263.25.52.39.77.452.125 2.222.383 3.164.171l-2.51.897a27.776 27.776 0 002.544 2.726c2.031-1.092 2.494-1.241 4.018-2.238-2.467 2.008-3.108 2.828-3.8 3.67l-.483.678c-.25.351-.469.725-.65 1.117-.61 1.31-1.47 4.1-1.47 4.1-.154.486.202.842.674.674 0 0 2.79-.861 4.1-1.47.392-.182.766-.4 1.118-.65l.677-.483c.227-.187.453-.37.701-.586 0 0 1.705 2.02 3.458 3.349l.896-2.511c-.211.942.046 2.712.17 3.163.252.142.509.272.772.392.569.28 1.134.49 1.688.64-.016-.853.026-1.956.261-2.962.26 1.258.75 2.493 1.067 3.219.895.106 2.051.146 2.816.043a73.87 73.87 0 01-1.308-2.67c.811 1.07 1.874 1.988 2.302 2.34h-.001z" fill="currentColor"/>'},cline:{viewBox:"0 0 24 24",paths:'<path d="M17.035 3.991c2.75 0 4.98 2.24 4.98 5.003v1.667l1.45 2.896a1.01 1.01 0 01-.002.909l-1.448 2.864v1.668c0 2.762-2.23 5.002-4.98 5.002H7.074c-2.751 0-4.98-2.24-4.98-5.002V17.33l-1.48-2.855a1.01 1.01 0 01-.003-.927l1.482-2.887V8.994c0-2.763 2.23-5.003 4.98-5.003h9.962zM8.265 9.6a2.274 2.274 0 00-2.274 2.274v4.042a2.274 2.274 0 004.547 0v-4.042A2.274 2.274 0 008.265 9.6zm7.326 0a2.274 2.274 0 00-2.274 2.274v4.042a2.274 2.274 0 104.548 0v-4.042A2.274 2.274 0 0015.59 9.6z" fill="currentColor"/><path d="M12.054 5.558a2.779 2.779 0 100-5.558 2.779 2.779 0 000 5.558z" fill="currentColor"/>'},continue:{viewBox:"0 0 26 24",paths:'<path d="M20.5286 3.26811L19.1512 5.65694L22.6328 11.6849C22.6582 11.7306 22.6735 11.7866 22.6735 11.8374C22.6735 11.8882 22.6582 11.9441 22.6328 11.9899L19.1512 18.0229L20.5286 20.4117L25.4791 11.8374L20.5286 3.26303V3.26811ZM18.6176 5.3469L19.995 2.95807H17.2402L15.8628 5.3469H18.6227H18.6176ZM15.8577 5.96697L19.075 11.5324H21.8298L18.6176 5.96697H15.8577ZM18.6176 17.7179L21.8298 12.1474H19.075L15.8577 17.7179H18.6176ZM15.8577 18.338L17.2351 20.7167H19.9899L18.6125 18.338H15.8526H15.8577ZM6.52098 21.3063L2.77002 15.1207H0.0152482L4.9657 23.69H14.8615L13.4841 21.3063H6.52606H6.52098ZM14.0178 20.9962L15.3952 23.38L16.7726 20.9911L15.3952 18.6023L14.0178 20.9911V20.9962ZM14.8615 18.2974H8.43712L7.05973 20.6862H13.4841L14.8615 18.2974ZM7.89836 17.9924L4.68108 12.4219L3.30369 14.8107L6.52098 20.3812L7.89836 17.9924ZM0.0101654 14.5007H2.76494L4.14232 12.1118H1.39263L0.0101654 14.5007ZM6.24143 2.5413L13.474 2.38882H13.474L14.8514 0H4.95045L0 8.57435H2.75477L6.23127 2.54638L6.24143 2.5413ZM4.14232 11.5782L2.76494 9.18934H0.0101654L1.38755 11.5782H4.14232ZM6.51081 3.31386L3.29861 8.8793L4.67599 11.2681L7.8882 5.70268L6.51081 3.31386ZM13.4791 3.00382H7.04448L8.42187 5.39264H14.8564L13.4791 3.00382ZM15.3952 5.0826L16.7675 2.69886L15.3952 0.310038L14.0178 2.69378L15.3952 5.0826Z" fill="currentColor"/>'},"roo-code":{viewBox:"0 0 96 96",paths:'<path d="M78.99,21.9l-1.73,6.24c-.09.33-.44.52-.77.42l-28.11-8.71c-.19-.06-.41-.02-.56.11l-28.95,23.22c-.08.07-.18.11-.29.13l-17.25,2.66c-.31.05-.53.32-.52.63l.11,2.47c.01.31.26.56.57.58l20.08,1.23c.11,0,.22-.02.31-.06l14.64-7.4c.21-.11.46-.08.64.06l9.37,7.03c.16.12.25.3.24.49l-.09,11.65c0,.13.04.25.11.35l14.74,21.15c.11.16.3.26.5.26h5.03c.46,0,.76-.5.54-.9l-10.87-19.92c-.1-.18-.1-.4,0-.58l5.51-10.48c.06-.11.15-.2.26-.26l19.56-9.92c.2-.1.43-.09.62.04l5.6,3.73c.1.07.22.1.34.1h5.15c.48,0,.77-.52.52-.93l-14.2-23.52c-.28-.46-.97-.36-1.11.15Z" fill="currentColor"/>'},replit:{viewBox:"0 0 24 24",paths:'<path d="M11.878 7.761H3.482A1.469 1.469 0 012 6.304V1.457C2 .644 2.67 0 3.482 0h6.913c.827 0 1.483.658 1.483 1.457v6.304zM20.882 16.215h-8.995V7.75h8.995c.87 0 1.588.717 1.588 1.586v5.294c0 .885-.717 1.586-1.588 1.586zM10.395 24H3.482C2.67 24 2 23.343 2 22.546v-4.853c0-.797.67-1.454 1.482-1.454h8.396v6.307c0 .797-.67 1.454-1.483 1.454z" fill="currentColor"/>'},"gemini-cli":{viewBox:"0 0 24 24",paths:'<path d="M11.538.392C11.722-.1 12.434-.093 12.608.407l.486 1.412A14.956 14.956 0 0022.135 10.9l1.569.569c.5.181.501.887.002 1.069l-1.573.576A14.953 14.953 0 0013.24 22.01l-.616 1.677c-.182.496-.884.497-1.068.002l-.643-1.731A14.953 14.953 0 002.05 13.127l-1.601-.588c-.496-.182-.497-.883-.002-1.067l1.633-.607A14.955 14.955 0 0010.895 2.14l.643-1.739v-.01z" fill="currentColor"/>'}};function j(n,e,t=16){let s=C[e];if(!s)return;let i=document.createElementNS("http://www.w3.org/2000/svg","svg");i.setAttribute("viewBox",s.viewBox),i.setAttribute("width",String(t)),i.setAttribute("height",String(t)),i.setAttribute("fill","none"),i.classList.add("as-tool-svg"),i.innerHTML=s.paths,n.appendChild(i)}var ee=class{containerEl;store;onToggleDashboard;onToggleMarketplace;dashboardActive=!1;marketplaceActive=!1;constructor(e,t,s,i){this.containerEl=e,this.store=t,this.onToggleDashboard=s,this.onToggleMarketplace=i}setDashboardActive(e){this.dashboardActive=e,e&&(this.marketplaceActive=!1)}setMarketplaceActive(e){this.marketplaceActive=e,e&&(this.dashboardActive=!1)}render(){this.containerEl.empty(),this.containerEl.addClass("as-sidebar"),this.renderLibrarySection(),this.renderTypeSection(),this.renderToolSection(),this.renderProjectSection(),this.renderCollectionSection(),this.store.hasSkillkit||this.renderSkillkitCta()}renderSection(e,t){let s=this.containerEl.createDiv("as-sidebar-section");s.createDiv({cls:"as-sidebar-title",text:e});for(let i of t){let a=s.createDiv("as-sidebar-item");!this.dashboardActive&&this.isActive(i.filter)&&a.addClass("is-active");let r=a.createSpan("as-sidebar-icon");(0,R.setIcon)(r,i.icon),a.createSpan({cls:"as-sidebar-label",text:i.label}),i.count!==void 0&&a.createSpan({cls:"as-sidebar-count",text:String(i.count)}),a.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(),t=E.filter(i=>i.isInstalled()&&e.has(i.id));if(t.length===0)return;let s=this.containerEl.createDiv("as-sidebar-section");s.createDiv({cls:"as-sidebar-title",text:"Tools"});for(let i of t){let a={kind:"tool",toolId:i.id},r=s.createDiv("as-sidebar-item");!this.dashboardActive&&this.isActive(a)&&r.addClass("is-active");let l=r.createSpan("as-sidebar-icon");C[i.id]?j(l,i.id,14):(0,R.setIcon)(l,i.icon),r.createSpan({cls:"as-sidebar-label",text:i.name}),r.createSpan({cls:"as-sidebar-count",text:String(e.get(i.id)||0)}),r.addEventListener("click",()=>{this.dashboardActive&&this.onToggleDashboard(),this.store.setFilter(a)})}}renderProjectSection(){let e=this.store.getProjectCounts();if(e.size===0)return;let t=[];for(let[s,i]of e)t.push({label:s,icon:"folder-git-2",filter:{kind:"project",project:s},count:i});t.sort((s,i)=>s.label.localeCompare(i.label)),this.renderSection("Projects",t)}renderCollectionSection(){let e=this.containerEl.createDiv("as-sidebar-section");e.createDiv({cls:"as-sidebar-title",text:"Collections"});let t=new Set;for(let s of this.store.allItems)for(let i of s.collections)t.add(i);if(t.size===0){e.createDiv({cls:"as-sidebar-empty",text:"No collections yet"});return}for(let s of t){let i={kind:"collection",name:s},a=e.createDiv("as-sidebar-item");!this.dashboardActive&&this.isActive(i)&&a.addClass("is-active");let r=a.createSpan("as-sidebar-icon");(0,R.setIcon)(r,"folder"),a.createSpan({cls:"as-sidebar-label",text:s}),a.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 t=[{label:"All Skills",icon:"layers",filter:{kind:"all"}},{label:"Favorites",icon:"star",filter:{kind:"favorites"}}],s=this.dashboardActive||this.marketplaceActive;for(let o of t){let c=e.createDiv("as-sidebar-item");!s&&this.isActive(o.filter)&&c.addClass("is-active");let d=c.createSpan("as-sidebar-icon");(0,R.setIcon)(d,o.icon),c.createSpan({cls:"as-sidebar-label",text:o.label}),c.addEventListener("click",()=>{this.dashboardActive&&this.onToggleDashboard(),this.marketplaceActive&&this.onToggleMarketplace(),this.store.setFilter(o.filter)})}let i=e.createDiv("as-sidebar-item");this.dashboardActive&&i.addClass("is-active");let a=i.createSpan("as-sidebar-icon");(0,R.setIcon)(a,"bar-chart-2"),i.createSpan({cls:"as-sidebar-label",text:"Dashboard"}),i.addEventListener("click",()=>{this.marketplaceActive&&this.onToggleMarketplace(),this.dashboardActive||this.onToggleDashboard()});let r=e.createDiv("as-sidebar-item");this.marketplaceActive&&r.addClass("is-active");let l=r.createSpan("as-sidebar-icon");(0,R.setIcon)(l,"shopping-bag"),r.createSpan({cls:"as-sidebar-label",text:"Marketplace"}),r.addEventListener("click",()=>{this.dashboardActive&&this.onToggleDashboard(),this.marketplaceActive||this.onToggleMarketplace()})}renderSkillkitCta(){let e=this.containerEl.createDiv("as-skillkit-cta"),t=e.createDiv("as-skillkit-icon");(0,R.setIcon)(t,"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 skillkit"}),e.createEl("a",{cls:"as-skillkit-link",text:"Learn more",href:"https://www.npmjs.com/package/skillkit"}).addEventListener("click",a=>{a.preventDefault(),je.shell.openExternal("https://www.npmjs.com/package/skillkit")})}isActive(e){let t=this.store.filter;return t.kind!==e.kind?!1:t.kind==="tool"&&e.kind==="tool"?t.toolId===e.toolId:t.kind==="type"&&e.kind==="type"?t.type===e.type:t.kind==="collection"&&e.kind==="collection"?t.name===e.name:t.kind==="project"&&e.kind==="project"?t.project===e.project:!0}};var U=require("obsidian");var te=class{containerEl;store;onSelect;selectedId=null;inputEl=null;deepToggleEl=null;listEl=null;typeFilter=null;sortBy="name";dropdownEl=null;constructor(e,t,s){this.containerEl=e,this.store=t,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)}),this.deepToggleEl=e.createDiv("as-deep-toggle"),(0,U.setIcon)(this.deepToggleEl,"search-code"),this.deepToggleEl.setAttribute("aria-label","Toggle deep search"),this.deepToggleEl.addEventListener("click",()=>{this.store.setDeepSearch(!this.store.deepSearch),this.updateDeepToggle()});let t=e.createDiv("as-filter-btn");(0,U.setIcon)(t,"filter"),t.setAttribute("aria-label","Filter by status"),t.addEventListener("click",i=>{i.stopPropagation(),this.toggleDropdown(t)});let s=e.createDiv("as-filter-btn");(0,U.setIcon)(s,this.sortBy==="usage"?"arrow-down-wide-narrow":"arrow-down-a-z"),s.setAttribute("aria-label",this.sortBy==="usage"?"Sorted by usage":"Sorted by name"),s.addEventListener("click",()=>{this.sortBy=this.sortBy==="name"?"usage":"name",(0,U.setIcon)(s,this.sortBy==="usage"?"arrow-down-wide-narrow":"arrow-down-a-z"),s.setAttribute("aria-label",this.sortBy==="usage"?"Sorted by usage":"Sorted by name"),this.renderList()}),this.listEl=this.containerEl.createDiv("as-list-items")}this.inputEl.value=this.store.searchQuery,this.updateDeepToggle(),this.renderList()}updateDeepToggle(){this.deepToggleEl&&(this.deepToggleEl.toggleClass("is-active",this.store.deepSearch),this.deepToggleEl.setAttribute("aria-label",this.store.deepSearch?"Deep search enabled \u2014 click to search names only":"Deep search disabled \u2014 click to search file content"))}toggleDropdown(e){if(this.dropdownEl){this.dropdownEl.remove(),this.dropdownEl=null;return}this.dropdownEl=e.createDiv("as-filter-dropdown");let t=[{id:"all",label:"All",cls:""},{id:"stale",label:"Stale",cls:"as-badge-stale"},{id:"heavy",label:"Heavy",cls:"as-badge-heavy"},{id:"oversized",label:"Oversized",cls:"as-badge-warn"},{id:"conflict",label:"Conflict",cls:"as-badge-conflict"}];for(let i of t){let a=this.dropdownEl.createDiv("as-filter-option");(i.id==="all"&&!this.typeFilter||i.id===this.typeFilter)&&a.addClass("is-active"),i.cls?a.createSpan({cls:i.cls,text:i.label}):a.setText(i.label),a.addEventListener("click",r=>{r.stopPropagation(),this.typeFilter=i.id==="all"?null:i.id,this.dropdownEl&&(this.dropdownEl.remove(),this.dropdownEl=null),this.renderList()})}let s=()=>{this.dropdownEl&&(this.dropdownEl.remove(),this.dropdownEl=null),document.removeEventListener("click",s)};setTimeout(()=>document.addEventListener("click",s),0)}renderList(){if(!this.listEl)return;this.listEl.empty();let e=this.store.filteredItems;if(this.typeFilter)switch(this.typeFilter){case"stale":e=e.filter(t=>t.usage?.isStale);break;case"heavy":e=e.filter(t=>t.usage?.isHeavy);break;case"oversized":e=e.filter(t=>t.warnings?.oversized);break;case"conflict":e=e.filter(t=>t.conflicts&&t.conflicts.length>0);break}if(this.sortBy==="usage"&&(e=[...e].sort((t,s)=>(s.usage?.uses??0)-(t.usage?.uses??0))),this.typeFilter){let t={stale:"Stale",heavy:"Heavy",oversized:"Oversized",conflict:"Conflict"},s=this.listEl.createDiv("as-active-filter");s.createSpan({text:`Showing: ${t[this.typeFilter]??this.typeFilter}`}),s.createSpan({cls:"as-filter-clear",text:"Clear"}).addEventListener("click",()=>{this.typeFilter=null,this.renderList()})}if(e.length===0){this.listEl.createDiv({cls:"as-list-empty",text:"No skills found"});return}for(let t of e)this.renderCard(this.listEl,t)}renderCard(e,t){let s=e.createDiv("as-skill-card");t.id===this.selectedId&&s.addClass("is-selected");let i=s.createDiv("as-skill-header");if(i.createSpan({cls:"as-skill-name",text:t.name}),t.isFavorite){let r=i.createSpan("as-skill-star");(0,U.setIcon)(r,"star")}t.description&&s.createDiv({cls:"as-skill-desc",text:t.description.length>80?t.description.slice(0,80)+"...":t.description});let a=s.createDiv("as-skill-meta");a.createSpan({cls:`as-type-tag as-type-${t.type}`,text:t.type});for(let r of t.tools){let l=E.find(c=>c.id===r);if(!l)continue;let o=a.createSpan("as-tool-badge");o.title=l.name,o.setAttribute("aria-label",l.name),o.setCssProps({"--tool-color":l.color}),C[r]?j(o,r,12):o.addClass("as-tool-badge-dot")}t.usage&&(t.usage.uses>0&&a.createSpan({cls:"as-usage-badge",text:`${t.usage.uses}`,attr:{"aria-label":`Used ${t.usage.uses} times`}}),t.usage.isStale&&a.createSpan({cls:"as-badge-stale",text:"stale"}),t.usage.isHeavy&&a.createSpan({cls:"as-badge-heavy",text:"heavy"})),t.warnings?.oversized&&a.createSpan({cls:"as-badge-warn",text:"oversized"}),t.conflicts&&t.conflicts.length>0&&a.createSpan({cls:"as-badge-conflict",text:"conflict"}),s.addEventListener("click",()=>{this.selectedId=t.id,this.onSelect(t)})}};var y=require("obsidian"),Je=require("fs"),Ze=require("electron");var ke=require("child_process"),_=require("fs"),k=require("path"),Re=require("os"),I=(0,Re.homedir)(),Pt=(0,k.join)(I,".skillkit","analytics.db");function Oe(){let n=["/usr/local/bin","/opt/homebrew/bin",(0,k.join)(I,".local","bin"),(0,k.join)(I,".bun","bin")],e=(0,k.join)(I,".nvm","versions","node");try{for(let s of(0,_.readdirSync)(e))n.push((0,k.join)(e,s,"bin"))}catch{}let t=(0,k.join)(I,".local","share","mise","installs");for(let s of["node","bun"])try{for(let i of(0,_.readdirSync)((0,k.join)(t,s)))n.push((0,k.join)(t,s,i,"bin"))}catch{}return[...n,process.env.PATH||""].join(":")}function It(){let n=["/usr/local/bin/skillkit","/opt/homebrew/bin/skillkit",(0,k.join)(I,".local","bin","skillkit"),(0,k.join)(I,".bun","bin","skillkit"),(0,k.join)(I,".local","share","mise","shims","skillkit")];for(let s of n)if((0,_.existsSync)(s))return s;let e=(0,k.join)(I,".nvm","versions","node");try{for(let s of(0,_.readdirSync)(e)){let i=(0,k.join)(e,s,"bin","skillkit");if((0,_.existsSync)(i))return i}}catch{}let t=(0,k.join)(I,".local","share","mise","installs");for(let s of["node","bun"])try{for(let i of(0,_.readdirSync)((0,k.join)(t,s))){let a=(0,k.join)(t,s,i,"bin","skillkit");if((0,_.existsSync)(a))return a}}catch{}return null}var be;function Se(){return be===void 0&&(be=It()),be}function L(){return Se()!==null||(0,_.existsSync)(Pt)}function $(n){let e=Se();if(!e)return null;try{let t=(0,ke.execSync)(`${e} ${n} --json`,{encoding:"utf-8",timeout:15e3,env:{...process.env,NO_COLOR:"1",PATH:Oe()},stdio:["pipe","pipe","pipe"]}).trim(),s=t.indexOf("{"),i=t.indexOf("["),a=s===-1?i:i===-1?s:Math.min(s,i);return a===-1?null:JSON.parse(t.slice(a))}catch{return null}}function Ne(){let n=new Map;if(!L())return n;let e=$("stats");if(!e?.top_skills)return n;let t=Date.now();for(let s of e.top_skills){let i=s.daily.length>0?s.daily[s.daily.length-1]?.date:null,a=null;i&&(a=Math.floor((t-new Date(i).getTime())/(1e3*60*60*24))),n.set(s.name,{uses:s.total,lastUsed:i||null,daysSinceUsed:a,isStale:a!==null&&a>30,isHeavy:!1,daily:s.daily})}return n}function Be(){let n=new Map;if(!L())return n;let e=$("conflicts --dry-run");if(!e||!("pairs"in e))return n;for(let t of e.pairs)n.has(t.skill_a)||n.set(t.skill_a,[]),n.has(t.skill_b)||n.set(t.skill_b,[]),n.get(t.skill_a).push({skillName:t.skill_b,similarity:t.similarity}),n.get(t.skill_b).push({skillName:t.skill_a,similarity:t.similarity});return n}function ze(n){if(!L())return[];let e=$(`trace --list --skill ${n} --limit 5`);return Array.isArray(e)?e.map(t=>({traceId:t.trace_id,timestamp:t.timestamp,tokens:t.tokens_total,cost:t.cost_estimate,duration:t.duration_ms,model:t.model||"unknown"})):[]}function We(){if(!L())return{oversized:[],longDesc:[]};let n=$("health");return n?.warnings?{oversized:n.warnings.oversized||[],longDesc:n.warnings.long_descriptions||[]}:{oversized:[],longDesc:[]}}function G(n){let e=Se();if(!e)return{success:!1,output:"skillkit not found"};try{return{success:!0,output:(0,ke.execSync)(`${e} ${n}`,{encoding:"utf-8",timeout:3e4,env:{...process.env,NO_COLOR:"1",PATH:Oe()},stdio:["pipe","pipe","pipe"]}).trim()}}catch(t){return{success:!1,output:t instanceof Error?t.message:"unknown error"}}}function ye(n){if(!n)return"never";let e=Date.now()-new Date(n).getTime(),t=Math.floor(e/6e4);if(t<60)return`${t}m ago`;let s=Math.floor(t/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 Ve(n,e,t=48,s=16){if(e.length===0)return;let i=Math.max(...e,1),a=e.map((o,c)=>{let d=c/(e.length-1||1)*t,m=s-o/i*s;return`${d.toFixed(1)},${m.toFixed(1)}`}),r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.setAttribute("viewBox",`0 0 ${t} ${s}`),r.setAttribute("width",String(t)),r.setAttribute("height",String(s)),r.classList.add("as-sparkline");let l=document.createElementNS("http://www.w3.org/2000/svg","polyline");l.setAttribute("points",a.join(" ")),l.setAttribute("fill","none"),l.setAttribute("stroke","currentColor"),l.setAttribute("stroke-width","1.5"),l.setAttribute("stroke-linecap","round"),l.setAttribute("stroke-linejoin","round"),r.appendChild(l),n.appendChild(r)}var Ue=require("obsidian");function B(n,e,t,s){new we(n,e,t,s).open()}var we=class extends Ue.Modal{title;message;onConfirm;constructor(e,t,s,i){super(e),this.title=t,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 t=e.createDiv("as-confirm-buttons");t.createEl("button",{cls:"as-confirm-cancel",text:"Cancel"}).addEventListener("click",()=>this.close()),t.createEl("button",{cls:"as-confirm-action mod-warning",text:"Confirm"}).addEventListener("click",()=>{this.close(),this.onConfirm()})}onClose(){this.contentEl.empty()}};function _t(n){return Math.ceil(n.length/4)}function At(n){return n<1024?`${n} B`:n<1024*1024?`${(n/1024).toFixed(1)} KB`:`${(n/(1024*1024)).toFixed(1)} MB`}function Ge(n){return n>=1e3?`${(n/1e3).toFixed(1)}k`:String(n)}function Ht(n){return new Date(n).toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}var se=class{containerEl;store;settings;saveSettings;currentItem=null;isEditing=!1;app;constructor(e,t,s,i,a){this.containerEl=e,this.store=t,this.settings=s,this.saveSettings=i,this.app=a.app}show(e){this.currentItem=e,this.isEditing=!1,this.render()}clear(){this.currentItem=null,this.containerEl.empty(),this.containerEl.addClass("as-detail");let e=this.containerEl.createDiv("as-detail-empty");(0,y.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 t=this.containerEl.createDiv("as-detail-toolbar"),s=t.createDiv("as-toolbar-top"),i=s.createDiv("as-toolbar-left");i.createSpan({cls:"as-detail-title",text:e.name});for(let g of e.tools){let f=E.find(fe=>fe.id===g);if(!f)continue;let W=i.createSpan("as-tool-name-badge");W.setCssProps({"--tool-color":f.color}),C[g]&&j(W,g,12),W.createSpan({text:f.name})}let a=s.createDiv("as-toolbar-right"),r=a.createEl("button",{cls:"as-toolbar-btn",attr:{"aria-label":"Toggle favorite"}});(0,y.setIcon)(r,e.isFavorite?"star":"star-off"),r.addEventListener("click",()=>{this.store.toggleFavorite(e.id,this.settings),this.saveSettings(),this.render()});let l=a.createEl("button",{cls:"as-toolbar-btn",attr:{"aria-label":this.isEditing?"Preview":"Edit"}});(0,y.setIcon)(l,this.isEditing?"eye":"pencil"),l.addEventListener("click",()=>{this.isEditing=!this.isEditing,this.render()});let o=a.createEl("button",{cls:"as-toolbar-btn",attr:{"aria-label":"Show in system explorer"}});if((0,y.setIcon)(o,"folder-open"),o.addEventListener("click",()=>{Ze.shell.showItemInFolder(e.filePath)}),L()){let g=a.createEl("button",{cls:"as-toolbar-btn as-toolbar-btn-danger",attr:{"aria-label":"Remove skill"}});(0,y.setIcon)(g,"trash-2"),g.addEventListener("click",()=>{B(this.app,"Remove skill",`Remove "${e.name}"? This will delete the skill files.`,()=>{let f=G(`prune --skill ${e.name} --yes`);f.success?(new y.Notice(`Removed ${e.name}`,5e3),this.store.refresh(this.settings),this.clear()):new y.Notice(`Failed to remove: ${f.output}`,5e3)})})}let c=t.createDiv("as-detail-meta-bar"),d=_t(e.content),m=e.content.length;if(c.createSpan({cls:"as-meta-item",text:At(e.fileSize)}),c.createSpan({cls:"as-meta-item",text:`${Ge(m)} chars`}),c.createSpan({cls:"as-meta-item",text:`~${Ge(d)} tokens`}),c.createSpan({cls:"as-meta-item",text:Ht(e.lastModified)}),c.createSpan({cls:"as-meta-item as-meta-type",text:e.type}),e.usage&&e.usage.uses>0){let g=t.createDiv("as-detail-usage-bar");g.createSpan({cls:"as-usage-stat",text:`${e.usage.uses} uses`}),g.createSpan({cls:"as-usage-stat",text:`last: ${ye(e.usage.lastUsed)}`}),e.usage.isStale&&g.createSpan({cls:"as-badge-stale",text:"stale"}),e.usage.isHeavy&&g.createSpan({cls:"as-badge-heavy",text:"heavy"})}}renderFrontmatter(e,t){let s=Object.keys(t.frontmatter),i=e.createDiv("as-frontmatter");if(t.filePath){let a=i.createDiv("as-fm-prop");a.createSpan({cls:"as-fm-key",text:"path"}),a.createSpan({cls:"as-fm-value",text:t.filePath})}if(!(s.length===0&&!t.filePath))for(let a of s){let r=t.frontmatter[a];if(r==null)continue;let l=i.createDiv("as-fm-prop");l.createSpan({cls:"as-fm-key",text:a});let o=typeof r=="object"||Array.isArray(r)?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(e){let t=this.containerEl.createDiv("as-detail-body");this.renderFrontmatter(t,e),this.renderWarnings(t,e),this.renderUsageSection(t,e),this.renderConflicts(t,e),this.renderTraces(t,e);let s=t.createDiv("as-detail-preview markdown-rendered");y.MarkdownRenderer.render(this.app,e.content,s,e.filePath,this)}renderWarnings(e,t){let s=[];if(t.warnings?.oversized&&s.push(`${t.warnings.lineCount} lines (recommended: <500)`),t.warnings?.longDesc&&s.push(`Description is ${t.warnings.descChars} chars (recommended: <1024)`),t.conflicts&&t.conflicts.length>0){let l=t.conflicts.map(o=>o.skillName).join(", ");s.push(`Conflicts with: ${l}`)}if(s.length===0)return;let i=e.createDiv("as-warnings"),a=i.createDiv("as-warnings-icon");(0,y.setIcon)(a,"alert-triangle");let r=i.createDiv("as-warnings-list");for(let l of s)r.createDiv({cls:"as-warnings-item",text:l})}renderUsageSection(e,t){if(!t.usage||t.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(t.usage.uses)}),i.createSpan({cls:"as-usage-label",text:"uses"}),i.createSpan({cls:"as-usage-last",text:ye(t.usage.lastUsed)}),t.usage.daily&&t.usage.daily.length>1){let a=s.createDiv("as-usage-spark");Ve(a,t.usage.daily.map(r=>r.count),80,20)}}renderConflicts(e,t){if(!t.conflicts||t.conflicts.length===0)return;let s=e.createDiv("as-conflicts-section");s.createDiv({cls:"as-section-title",text:`Conflicts (${t.conflicts.length})`});for(let i of t.conflicts){let a=s.createDiv("as-conflict-row");a.createSpan({cls:"as-conflict-name",text:i.skillName}),a.createDiv("as-conflict-bar-wrap").createDiv("as-conflict-bar").setCssProps({"--bar-w":`${(i.similarity*100).toFixed(0)}%`}),a.createSpan({cls:"as-conflict-score",text:`${(i.similarity*100).toFixed(0)}%`})}}renderTraces(e,t){if(!L())return;let s=ze(t.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 a=i.createDiv("as-traces-table");for(let r of s){let l=a.createDiv("as-trace-row"),o=new Date(r.timestamp);l.createSpan({cls:"as-trace-date",text:o.toLocaleDateString(void 0,{month:"short",day:"numeric"})}),l.createSpan({cls:"as-trace-model",text:r.model.replace("claude-","").replace("-4-6","")}),l.createSpan({cls:"as-trace-tokens",text:`${(r.tokens/1e3).toFixed(1)}k`}),l.createSpan({cls:"as-trace-cost",text:r.cost>0?`$${r.cost.toFixed(2)}`:""}),l.createSpan({cls:"as-trace-duration",text:`${(r.duration/1e3).toFixed(1)}s`})}i.createDiv({cls:"as-traces-hint",text:"skillkit trace --list --skill "+t.name})}renderPruneAction(e,t){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",()=>{B(this.app,"Remove skill",`Remove "${t.name}"? This will delete the skill files.`,()=>{let a=G(`prune --skill ${t.name} --yes`);a.success?(new y.Notice(`Removed ${t.name}`,5e3),this.store.refresh(this.settings)):new y.Notice(`Failed to remove: ${a.output}`,5e3)})})}renderEditor(e){let t=this.containerEl.createDiv("as-detail-body as-detail-body-editor"),s=t.createEl("textarea",{cls:"as-editor-textarea"});s.value=e.content,s.spellcheck=!1,s.addEventListener("keydown",r=>{if((r.metaKey||r.ctrlKey)&&r.key==="s"&&(r.preventDefault(),this.saveFile(e,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=t.createDiv("as-save-bar");i.createEl("button",{cls:"as-save-btn",text:"Save"}).addEventListener("click",()=>{this.saveFile(e,s.value)}),i.createSpan({cls:"as-save-hint",text:"Cmd+S to save"})}saveFile(e,t){try{(0,Je.writeFileSync)(e.filePath,t,"utf-8"),e.content=t,new y.Notice(`Saved ${e.name}`,5e3)}catch(s){new y.Notice(`Failed to save: ${s instanceof Error?s.message:String(s)}`,5e3)}}};var A=require("obsidian"),rt=require("electron");var De=require("child_process"),w=require("fs"),S=require("path"),Xe=require("os"),q=require("obsidian"),x=(0,Xe.homedir)(),Ke=(0,S.join)(x,".agents",".skill-lock.json"),$t="https://skills.sh/api";async function xe(n){if(n.length<2)return[];try{let t=(await(0,q.requestUrl)({url:`${$t}/search?q=${encodeURIComponent(n)}&limit=30`})).json;if(!t.skills)return[];let s=st();return t.skills.map(i=>({...i,installed:s.has(i.name)}))}catch{return[]}}var Qe=new Map;async function Ft(n){let e=Qe.get(n);if(e)return e;let s=(await(0,q.requestUrl)({url:`https://api.github.com/repos/${n}`})).json.default_branch||"main",a=(await(0,q.requestUrl)({url:`https://api.github.com/repos/${n}/git/trees/${s}?recursive=1`})).json.tree.filter(l=>l.path.endsWith("/SKILL.md")).map(l=>l.path),r={branch:s,files:a};return Qe.set(n,r),r}function jt(n,e,t){let s=e.split("/"),i=s[s.length-1]||n,a=new Set([i,n]);for(let r of t.split("/")){n.startsWith(r+"-")&&a.add(n.slice(r.length+1));for(let l of r.split("-"))n.startsWith(l+"-")&&a.add(n.slice(l.length+1))}return a}async function Ye(n,e,t){try{let{branch:s,files:i}=await Ft(n),a=jt(e,t,n),r=i.find(c=>{let d=c.replace("/SKILL.md","").split("/").pop()||"";return a.has(d)});r||(r=i.find(c=>{let d=c.replace("/SKILL.md","").split("/").pop()||"";return e.includes(d)||d.includes(e)}));let l=r||`skills/${e}/SKILL.md`;return(await(0,q.requestUrl)({url:`https://raw.githubusercontent.com/${n}/${s}/${l}`})).text}catch{return null}}async function et(){let n=["react","next","clerk","stripe","ai"],e=new Set,t=[];for(let s of n){let i=await xe(s);for(let a of i)e.has(a.id)||(e.add(a.id),t.push(a))}return t.sort((s,i)=>i.installs-s.installs).slice(0,20)}function Rt(){let n=["/usr/local/bin","/opt/homebrew/bin",(0,S.join)(x,".local","bin"),(0,S.join)(x,".bun","bin")],e=(0,S.join)(x,".nvm","versions","node");try{for(let t of(0,w.readdirSync)(e))n.push((0,S.join)(e,t,"bin"))}catch{}return[...n,process.env.PATH||""].join(":")}function qe(){let n=(0,S.join)(x,".bun","bin","bunx");return(0,w.existsSync)(n)?n:(0,w.existsSync)("/usr/local/bin/bunx")||(0,w.existsSync)("/opt/homebrew/bin/bunx")?"bunx":"npx"}function Ee(n="auto"){return n==="npx"?"npx":qe()}var tt=[{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:"roo",label:"Roo Code"},{id:"continue",label:"Continue"},{id:"antigravity",label:"Antigravity"},{id:"warp",label:"Warp"},{id:"pi",label:"Pi"},{id:"replit",label:"Replit"}],ie={"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"};function st(){let n=new Set;if(!(0,w.existsSync)(Ke))return n;try{let e=JSON.parse((0,w.readFileSync)(Ke,"utf-8"));if(e.skills)for(let t of Object.keys(e.skills))n.add(t)}catch{}return n}var Ot=[(0,S.join)(x,".claude","skills"),(0,S.join)(x,".cursor","skills"),(0,S.join)(x,".codex","skills"),(0,S.join)(x,".codeium","windsurf","skills"),(0,S.join)(x,".config","amp","skills"),(0,S.join)(x,".config","opencode","skills"),(0,S.join)(x,".copilot","skills"),(0,S.join)(x,".agents","skills")];function Nt(n){for(let e of Ot){let t=(0,S.join)(e,n);if((0,w.existsSync)(t))try{(0,w.rmSync)(t,{recursive:!0,force:!0})}catch{}}Bt(n)}function Bt(n){let e=(0,S.join)(x,".agents",".skill-lock.json");if((0,w.existsSync)(e))try{let t=JSON.parse((0,w.readFileSync)(e,"utf-8"));t.skills&&t.skills[n]&&(delete t.skills[n],(0,w.writeFileSync)(e,JSON.stringify(t,null,2)+`
|
|
`,"utf-8"))}catch{}}function ne(n){let e=st();for(let t of n)t.installed=e.has(t.name);return n}function Ce(n,e=12e4){return new Promise(t=>{(0,De.exec)(n,{encoding:"utf-8",timeout:e,env:{...process.env,PATH:Rt(),NO_COLOR:"1"}},(s,i)=>{let a=String(i??"");!s||a.includes("Done")||a.includes("Installed")||a.includes("Removed")||a.includes("Updated")?t({success:!0,output:a}):t({success:!1,output:s?.message??"Command failed"})})})}async function it(n,e,t={}){let s=e.length>0?`-a ${e.join(" ")}`:"-a '*'",i=t.global?"-g":"",r=`${Ee(t.runner||"auto")} skills add ${n} ${s} ${i} -y`.replace(/\s+/g," ").trim();return Ce(r)}async function nt(n,e="auto"){let s=`${Ee(e)} skills remove ${n} -y`,i=await Ce(s,3e4);return Nt(n),{success:!0,output:i.output||`Cleaned ${n}`}}async function at(n="auto"){let t=`${Ee(n)} skills update`,s=await Ce(t),i=s.output.match(/Updated (\d+) skill/);return{...s,count:i?parseInt(i[1]):0}}function Le(n){return n>=1e6?`${(n/1e6).toFixed(1)}M`:n>=1e3?`${(n/1e3).toFixed(1)}K`:String(n)}var J=require("fs"),ot=require("path"),lt=require("os");function zt(){let n=$("stats"),e=$("health"),t=$("burn"),s=$("context");return{stats:n,health:e,burn:t&&t.length>0?t[0]:null,context:s}}var Te=(0,ot.join)((0,lt.homedir)(),".skillkit","dashboard-cache.json"),H=null,O=null;function Wt(){if(!H&&(0,J.existsSync)(Te))try{let n=JSON.parse((0,J.readFileSync)(Te,"utf-8"));H=n.data,O=n.cachedAt}catch{}}function Vt(){if(H)try{(0,J.writeFileSync)(Te,JSON.stringify({data:H,cachedAt:O},null,2),"utf-8")}catch{}}Wt();var ae=class{containerEl;app;constructor(e,t){this.containerEl=e,this.app=t}render(){if(this.containerEl.empty(),this.containerEl.addClass("as-dashboard"),!L()){this.renderNoSkillkit();return}if(H)this.renderDashboard(H);else{let e=this.containerEl.createDiv("as-dash-loading");e.createDiv("as-dash-spinner"),e.createDiv({cls:"as-dash-loading-text",text:"Loading analytics..."}),setTimeout(()=>{let t=zt();H=t,O=Date.now(),Vt(),e.remove(),this.renderDashboard(t)},10)}}renderDashboard(e){if(this.renderActionBar(e),e.stats&&this.renderOverview(e.stats,e.health),e.stats&&this.renderTopSkills(e.stats),e.health||e.context){let t=this.containerEl.createDiv("as-dash-row");e.health&&this.renderHealth(e.health,t),e.context&&this.renderContext(e.context,t)}e.burn&&this.renderBurn(e.burn),e.health&&this.renderStale(e.health)}renderActionBar(e){let t=this.containerEl.createDiv("as-dash-action-bar");if(O){let r=Math.round((Date.now()-O)/1e3),l=r<5?"just now":r<60?`${r}s ago`:`${Math.round(r/60)}m ago`;t.createSpan({cls:"as-dash-updated",text:`Updated ${l}`})}let s=t.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,at().then(r=>{if(r.success){let l=r.count>0?`Updated ${r.count} skill(s)`:"All skills up to date";new A.Notice(l,5e3),H=null,O=null,this.render()}else new A.Notice(`Update failed: ${r.output}`,5e3);i.setText("Update skills"),i.disabled=!1})});let a=s.createEl("button",{cls:"as-action-btn",text:"Scan sessions"});if(a.addEventListener("click",()=>{a.setText("Scanning..."),a.disabled=!0,setTimeout(()=>{let r=G("scan");r.success?(new A.Notice("Scan complete",5e3),H=null,O=null,this.render()):new A.Notice(`Scan failed: ${r.output}`,5e3),a.setText("Scan sessions"),a.disabled=!1},10)}),e.health&&e.health.usage.unused_30d>0){let r=s.createEl("button",{cls:"as-action-btn as-action-btn-danger",text:`Prune ${e.health.usage.unused_30d} stale`});r.addEventListener("click",()=>{B(this.app,"Prune stale skills",`Remove ${e.health.usage.unused_30d} unused skills? This cannot be undone.`,()=>{r.setText("Pruning..."),r.disabled=!0,setTimeout(()=>{let l=G("prune --yes");l.success?(new A.Notice("Pruned stale skills",5e3),H=null,O=null,this.render()):new A.Notice(`Prune failed: ${l.output}`,5e3),r.setText(`Prune ${e.health.usage.unused_30d} stale`),r.disabled=!1},10)})})}}renderNoSkillkit(){let e=this.containerEl.createDiv("as-dash-empty"),t=e.createDiv("as-dash-empty-icon");(0,A.setIcon)(t,"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",a=>{a.preventDefault(),rt.shell.openExternal("https://www.npmjs.com/package/@crafter/skillkit")})}renderOverview(e,t){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(t?.installed??0),"installed","package"),this.statCard(i,String(t?.usage.unused_30d??0),"stale","alert-triangle"),e.streak&&e.streak.current>0){let a=s.createDiv("as-dash-streak-row");a.createSpan({cls:"as-streak-value",text:`${e.streak.current} day streak`}),e.streak.current>=7&&a.createSpan({cls:"as-streak-fire",text:"on fire"}),a.createSpan({cls:"as-streak-longest",text:`longest: ${e.streak.longest}d`})}if(e.velocity&&e.velocity.this_week>0){let a=s.createDiv("as-dash-velocity-row");a.createSpan({text:`This week: $${e.velocity.this_week.toFixed(0)}`}),a.createSpan({cls:"as-velocity-vs",text:`vs $${e.velocity.last_week.toFixed(0)} last week`});let r=e.velocity.change_pct,l=r>0?"as-velocity-up":r<0?"as-velocity-down":"",o=r>0?"+":"";a.createSpan({cls:`as-velocity-change ${l}`,text:`${o}${r.toFixed(0)}%`})}}statCard(e,t,s,i){let a=e.createDiv("as-stat-card"),r=a.createDiv("as-stat-icon");(0,A.setIcon)(r,i),a.createDiv({cls:"as-stat-value",text:t}),a.createDiv({cls:"as-stat-label",text:s})}renderTopSkills(e){if(e.top_skills.length===0)return;let t=this.containerEl.createDiv("as-dash-section");t.createDiv({cls:"as-dash-title",text:`Top Skills (${e.period.days}d)`});let s=e.top_skills[0]?.total||1,i=t.createDiv("as-dash-bars");for(let a of e.top_skills.slice(0,10)){let r=i.createDiv("as-bar-row");r.createSpan({cls:"as-bar-name",text:a.name}),r.createDiv("as-bar-wrap").createDiv("as-bar-fill").setCssProps({"--bar-w":`${a.total/s*100}%`}),r.createSpan({cls:"as-bar-count",text:String(a.total)})}}renderHealth(e,t){let s=(t||this.containerEl).createDiv("as-dash-section");s.createDiv({cls:"as-dash-title",text:"Health"});let i=e.usage.used_30d+e.usage.unused_30d,a=i>0?Math.round(e.usage.used_30d/i*100):0,r=s.createDiv("as-dash-health-row"),l=r.createDiv("as-donut");l.setCssProps({"--pct":`${a}`}),l.createDiv({cls:"as-donut-label",text:`${a}%`}),l.createDiv({cls:"as-donut-sub",text:"active"});let o=r.createDiv("as-health-details");o.createDiv({cls:"as-health-line",text:`${e.usage.used_30d} used in 30d`}),o.createDiv({cls:"as-health-line as-health-warn",text:`${e.usage.unused_30d} never triggered`});let d=o.createDiv("as-budget-bar").createDiv("as-budget-fill");d.setCssProps({"--bar-w":`${e.metadata.pct}%`}),e.metadata.pct>80&&d.addClass("as-budget-over"),o.createDiv({cls:"as-health-line",text:`Metadata budget: ${e.metadata.pct}%`})}renderBurn(e){let t=this.containerEl.createDiv("as-dash-section");t.createDiv({cls:"as-dash-title",text:`Burn Rate \u2014 ${e.agent} (${e.period.days}d)`});let s=t.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 l=t.createDiv("as-model-breakdown");for(let o of e.by_model.slice(0,4)){let c=l.createDiv("as-model-row");c.createSpan({cls:"as-model-name",text:o.model}),c.createSpan({cls:"as-model-calls",text:`${o.apiCalls.toLocaleString()} calls`}),o.costUsd>0&&c.createSpan({cls:"as-model-cost",text:`$${Math.round(o.costUsd).toLocaleString()}`})}}let i=e.by_day.slice(-14);if(i.length===0)return;let a=Math.max(...i.map(l=>l.costUsd),1),r=t.createDiv("as-burn-chart");for(let l of i){let o=r.createDiv("as-burn-col"),c=o.createDiv("as-burn-bar"),d=Math.max(2,l.costUsd/a*100);c.setCssProps({"--bar-h":`${d}%`}),c.title=`${l.date}: $${l.costUsd.toFixed(0)}`,o.createDiv({cls:"as-burn-date",text:l.date.slice(8)})}}renderContext(e,t){let s=(t||this.containerEl).createDiv("as-dash-section");s.createDiv({cls:"as-dash-title",text:"Context Tax"});let i=e.always_loaded.total_tokens,a=[{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"}],r=s.createDiv("as-ctx-bar");for(let c of a){let d=r.createDiv(`as-ctx-part ${c.cls}`);d.setCssProps({"--bar-w":`${c.tokens/i*100}%`}),d.title=`${c.label}: ${(c.tokens/1e3).toFixed(1)}k tokens`}let l=s.createDiv("as-ctx-legend");for(let c of a){let d=l.createDiv("as-ctx-legend-item");d.createSpan({cls:`as-ctx-dot ${c.cls}`}),d.createSpan({text:`${c.label}: ${(c.tokens/1e3).toFixed(1)}k`})}let o=s.createDiv("as-ctx-costs");o.createDiv({text:`Per session (cached): $${e.session_estimate.with_cache.toFixed(2)}`}),o.createDiv({text:`Without cache: $${e.session_estimate.without_cache.toFixed(2)}`}),o.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 t=this.containerEl.createDiv("as-dash-section");t.createDiv({cls:"as-dash-title",text:`Stale skills (${e.usage.unused_30d})`});let s=t.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 P=require("obsidian"),K=require("fs"),vt=require("path"),bt=require("os");var T=require("obsidian"),Z=require("fs"),gt=require("path"),ft=require("os");var h=require("fs"),v=require("path"),re=require("os"),dt=require("obsidian"),pt=require("crypto");var ct=new Set(["readme.md","license","license.md","changelog.md",".ds_store","thumbs.db"]);function Ut(n){return(0,pt.createHash)("sha256").update(n).digest("hex").slice(0,12)}function Gt(n){let e=n.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);if(!e)return{frontmatter:{},content:n};try{let t=(0,dt.parseYaml)(e[1]);return{frontmatter:typeof t=="object"&&t?t:{},content:e[2]}}catch{return{frontmatter:{},content:n}}}function Jt(n,e,t,s="auto"){if(s==="auto"){if(typeof n.name=="string"&&n.name)return n.name;let a=e.match(/^#\s+(.+)$/m);if(a)return a[1].trim()}let i=(0,v.basename)(t,(0,v.extname)(t));return i==="SKILL"?(0,v.basename)((0,v.join)(t,"..")):i}function Zt(n,e,t,s="auto"){if(!(0,h.existsSync)(n))return[];let i=[];for(let a of(0,h.readdirSync)(n,{withFileTypes:!0})){let r=(0,v.join)(n,a.name);if(!(a.isDirectory()||a.isSymbolicLink()&&(0,h.statSync)(r,{throwIfNoEntry:!1})?.isDirectory()))continue;let o=(0,v.join)(r,"SKILL.md");if(!(0,h.existsSync)(o))continue;let c=X(o,e,t,"directory-with-skillmd",s);c&&i.push(c)}return i}function Kt(n,e,t,s="auto"){if(!(0,h.existsSync)(n))return[];let i=[];for(let a of(0,h.readdirSync)(n,{withFileTypes:!0})){let r=(0,v.join)(n,a.name);if(a.isDirectory()||a.isSymbolicLink()&&(0,h.statSync)(r,{throwIfNoEntry:!1})?.isDirectory()){let d=(0,v.join)(r,"SKILL.md");if((0,h.existsSync)(d)){let f=X(d,e,t,"flat-md",s);f&&i.push(f);continue}let m=(0,h.readdirSync)(r).filter(f=>f.endsWith(".md")&&!ct.has(f.toLowerCase())),g=m.find(f=>f.toLowerCase()===`${a.name.toLowerCase()}.md`)||m[0];if(g){let f=X((0,v.join)(r,g),e,t,"flat-md",s);f&&i.push(f)}continue}let o=a.name.toLowerCase();if(!o.endsWith(".md")||ct.has(o))continue;let c=X(r,e,t,"flat-md",s);c&&i.push(c)}return i}function Qt(n,e,t,s="auto"){if(!(0,h.existsSync)(n))return[];let i=[];for(let a of(0,h.readdirSync)(n,{withFileTypes:!0})){if(!a.name.endsWith(".mdc")&&!a.name.endsWith(".md")||a.isDirectory())continue;let r=X((0,v.join)(n,a.name),e,t,"mdc",s);r&&i.push(r)}return i}function X(n,e,t,s="directory-with-skillmd",i="auto"){try{let a=(0,h.readFileSync)(n,"utf-8"),r=(0,h.statSync)(n),{frontmatter:l,content:o}=Gt(a),c=Jt(l,o,n,i),d=typeof l.description=="string"?l.description:"",m;try{m=(0,h.realpathSync)(n)}catch{m=n}return{id:Ut(m),name:c,description:d,type:e,tools:[t],filePath:n,realPath:m,dirPath:(0,v.join)(n,".."),content:a,frontmatter:l,lastModified:r.mtimeMs,fileSize:r.size,isFavorite:!1,collections:[]}}catch{return null}}function Me(n,e,t="auto"){switch(n.pattern){case"directory-with-skillmd":return Zt(n.baseDir,n.type,e,t);case"flat-md":return Kt(n.baseDir,n.type,e,t);case"mdc":return Qt(n.baseDir,n.type,e,t)}}function qt(n,e){let t=[],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 a=(0,v.join)(n,i.sub);if(!(0,h.existsSync)(a))continue;let r={baseDir:a,type:i.type,pattern:i.pattern};t.push(...Me(r,e))}return t}function ut(n){return n.projectsHomeDir||(0,re.homedir)()}function Xt(n,e){let t=(0,re.homedir)(),s=[];for(let i of[...e.paths,...e.agentPaths]){let a=(0,v.relative)(t,i.baseDir);if(a.startsWith("..")||a.startsWith("/"))continue;let r=(0,v.join)(n,a);if((0,h.existsSync)(r))try{s.push(...Me({...i,baseDir:r},e.id))}catch{}}return s}function Yt(n){let e=ut(n);if(!(0,h.existsSync)(e))return[];let t=[];try{let s=new Set(["node_modules",".Trash","Library","Applications","Music","Movies","Pictures","Public"]);for(let i of(0,h.readdirSync)(e,{withFileTypes:!0})){if(!i.isDirectory()&&!i.isSymbolicLink()||s.has(i.name))continue;let a=(0,v.join)(e,i.name);for(let r of E){if(!r.isInstalled())continue;let l=n.tools[r.id];if(l&&!l.enabled)continue;let o=Xt(a,r);o.length>0&&t.push({items:o,toolId:r.id})}}}catch{}return t}function Pe(n,e){let t=e||(0,re.homedir)();if(!n.startsWith(t+"/"))return"global";let i=n.slice(t.length+1).split("/");return i.length>1&&!i[0].startsWith(".")?i[0]:"global"}function ht(n){let e=n.namingMode||"auto",t=new Map,s=new Map;function i(a,r){let l=t.get(a.id);if(l){l.tools.includes(r)||l.tools.push(r);return}let o=s.get(a.name);if(o){let c=t.get(o);c&&!c.tools.includes(r)&&c.tools.push(r);return}a.isFavorite=n.favorites.includes(a.id);for(let[c,d]of Object.entries(n.collections))d.includes(a.id)&&a.collections.push(c);t.set(a.id,a),s.set(a.name,a.id)}for(let a of E){if(!a.isInstalled())continue;let r=n.tools[a.id];if(r&&!r.enabled)continue;let l=[...a.paths,...a.agentPaths];for(let o of l)for(let c of Me(o,a.id,e))i(c,a.id)}for(let a of n.customScanPaths)if((0,h.existsSync)(a))for(let r of qt(a,"claude-code"))i(r,"claude-code");if(n.projectScanEnabled)for(let{items:a,toolId:r}of Yt(n))for(let l of a)i(l,r);return t}function Ie(){return E.filter(n=>n.isInstalled()).map(n=>n.id)}function mt(n){let e=[];for(let t of E)if(t.isInstalled())for(let s of[...t.paths,...t.agentPaths])(0,h.existsSync)(s.baseDir)&&e.push(s.baseDir);if(n?.projectScanEnabled){let t=ut(n),s=new Set(["node_modules",".Trash","Library","Applications","Music","Movies","Pictures","Public"]);try{for(let i of(0,h.readdirSync)(t,{withFileTypes:!0})){if(!i.isDirectory()&&!i.isSymbolicLink()||s.has(i.name))continue;let a=(0,v.join)(t,i.name);for(let r of[".claude/skills",".claude/commands",".claude/agents",".cursor/skills",".codex/skills"]){let l=(0,v.join)(a,r);(0,h.existsSync)(l)&&e.push(l)}}}catch{}}return e}var _e={};for(let[n,e]of Object.entries(ie))_e[e]||(_e[e]=n);var Ae=(0,gt.join)((0,ft.homedir)(),".skillkit","install-prefs.json"),z=null,oe=!0;function es(){if(!z&&(0,Z.existsSync)(Ae))try{let n=JSON.parse((0,Z.readFileSync)(Ae,"utf-8"));z=new Set(n.agents||[]),oe=n.global??!0}catch{}}function ts(){try{(0,Z.writeFileSync)(Ae,JSON.stringify({agents:z?[...z]:[],global:oe}),"utf-8")}catch{}}es();var le=class extends T.Modal{skill;settings;onInstalled;selectedAgents;isGlobal;constructor(e,t,s,i){if(super(e),this.skill=t,this.settings=s,this.onInstalled=i,z)this.selectedAgents=new Set(z);else{this.selectedAgents=new Set;let a=Ie();for(let r of a){let l=ie[r];l&&this.selectedAgents.add(l)}}this.isGlobal=oe}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 T.Setting(e).setName("Install globally").setDesc("Shared across all projects (~/.agents/skills/)").addToggle(o=>o.setValue(this.isGlobal).onChange(c=>{this.isGlobal=c})),new T.Setting(e).setName("Agents").setHeading();let t=e.createDiv("as-install-scroll"),s=Ie(),i=new Set(s.map(o=>ie[o]).filter(Boolean));for(let o of tt){let c=i.has(o.id),d=_e[o.id],g=new T.Setting(t).addToggle(fe=>fe.setValue(this.selectedAgents.has(o.id)).onChange(Dt=>{Dt?this.selectedAgents.add(o.id):this.selectedAgents.delete(o.id)})).nameEl,f=d&&C[d]?d:C[o.id]?o.id:C[o.id+"-code"]?o.id+"-code":C[o.id+"-cli"]?o.id+"-cli":null,W=g.createSpan("as-install-agent-icon");f?j(W,f,14):W.addClass("as-install-agent-placeholder"),g.createSpan({text:o.label}),c&&g.createSpan({cls:"as-install-detected",text:"detected"})}let a=e.createDiv("as-install-footer");a.createEl("button",{text:"Cancel"}).addEventListener("click",()=>this.close());let l=a.createEl("button",{cls:"mod-cta",text:"Install"});l.addEventListener("click",()=>this.doInstall(l))}doInstall(e){let t=[...this.selectedAgents];if(t.length===0){new T.Notice("Select at least one agent",5e3);return}z=new Set(this.selectedAgents),oe=this.isGlobal,ts(),this.close(),new T.Notice(`Installing ${this.skill.name}...`,3e3),it(this.skill.source,t,{runner:this.settings.packageRunner,global:this.isGlobal}).then(s=>{s.success?(new T.Notice(`Installed ${this.skill.name}`,5e3),this.skill.installed=!0,this.onInstalled()):new T.Notice(`Failed to install ${this.skill.name}`,5e3)})}onClose(){this.contentEl.empty()}};var He=(0,vt.join)((0,bt.homedir)(),".skillkit","marketplace-popular.json"),M=null,ce="",N=null,ss=new P.Component;function is(){if(!M&&(0,K.existsSync)(He))try{let n=JSON.parse((0,K.readFileSync)(He,"utf-8"));M=ne(n)}catch{}}function ns(){if(M)try{(0,K.writeFileSync)(He,JSON.stringify(M),"utf-8")}catch{}}is();var de=class{containerEl;inputEl=null;listEl=null;previewEl=null;searchTimer=null;selectedSkill=null;app;settings;onRefresh;constructor(e,t,s,i){this.containerEl=e,this.app=t.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&&clearTimeout(this.searchTimer),this.searchTimer=setTimeout(()=>{this.doSearch(this.inputEl.value)},300)});let t=this.containerEl.createDiv("as-mp-body");this.listEl=t.createDiv("as-mp-list"),this.previewEl=t.createDiv("as-mp-preview"),this.previewEl.createDiv({cls:"as-mp-hint",text:"Select a skill to preview."})}this.inputEl.value=ce,ce.length>=2&&N?this.showResults(N):M?this.showPopular():this.loadPopular()}async loadPopular(){if(!this.listEl)return;this.listEl.empty(),this.listEl.createDiv({cls:"as-mp-loading",text:"Loading popular skills..."}),M=await et(),ns(),this.showPopular()}refreshList(){M&&ne(M),N&&ne(N),ce.length>=2&&N?this.showResults(N):this.showPopular()}showPopular(){if(this.listEl){if(this.listEl.empty(),!M||M.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 M)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 t of e)this.renderSkillCard(t)}}async doSearch(e){if(!this.listEl)return;if(ce=e,e.length<2){N=null,this.showPopular();return}this.listEl.empty(),this.listEl.createDiv({cls:"as-mp-loading",text:"Searching..."});let t=await xe(e);N=t,this.showResults(t)}renderSkillCard(e){if(!this.listEl)return;let t=this.listEl.createDiv("as-mp-card");this.selectedSkill?.id===e.id&&t.addClass("is-selected");let s=t.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"}),t.createDiv({cls:"as-mp-card-source",text:e.source});let i=t.createDiv("as-mp-card-meta"),a=i.createSpan("as-mp-dl-icon");(0,P.setIcon)(a,"download"),i.createSpan({cls:"as-mp-card-installs",text:Le(e.installs)}),t.addEventListener("click",()=>{this.selectedSkill=e,this.listEl&&this.listEl.querySelectorAll(".as-mp-card").forEach(r=>r.removeClass("is-selected")),t.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 a=i.createDiv("as-mp-preview-meta");a.createSpan({cls:"as-mp-preview-source",text:e.source});let r=a.createSpan("as-mp-dl-icon");(0,P.setIcon)(r,"download"),a.createSpan({cls:"as-mp-preview-installs",text:Le(e.installs)});let l=s.createDiv("as-mp-preview-right");if(!e.installed)this.renderInstallButton(l,e);else{l.createSpan({cls:"as-mp-installed-label",text:"Installed"});let d=l.createEl("button",{cls:"as-mp-uninstall-btn",text:"Uninstall"});d.addEventListener("click",()=>{B(this.app,"Uninstall skill",`Remove "${e.name}" from all agents?`,()=>{d.setText("Removing..."),d.disabled=!0,new P.Notice(`Removing ${e.name}...`,3e3),nt(e.name,this.settings.packageRunner).then(m=>{m.success?(new P.Notice(`Removed ${e.name}`,5e3),e.installed=!1,this.refreshList(),this.showPreview(e)):(new P.Notice(`Failed to remove ${e.name}`,5e3),d.setText("Uninstall"),d.disabled=!1)})})})}let o=this.previewEl.createDiv("as-mp-preview-content");o.createDiv({cls:"as-mp-loading",text:"Loading skill content..."});let c=await Ye(e.source,e.name,e.id);if(o.empty(),c){e.content=c;let d=o.createDiv("as-mp-rendered markdown-rendered");P.MarkdownRenderer.render(this.app,c,d,"",ss)}else o.createDiv({cls:"as-mp-hint",text:"Could not load skill content."})}renderInstallButton(e,t){e.createEl("button",{cls:"as-mp-install-btn",text:"Install"}).addEventListener("click",()=>{new le(this.app,t,this.settings,()=>{this.refreshList(),this.showPreview(t)}).open()})}};var Y="agentfiles-view",pe=class extends kt.ItemView{store;settings;saveSettings;sidebarPanel;listPanel;detailPanel;dashboardPanel;marketplacePanel;sidebarEl;listEl;detailEl;dashboardEl;marketplaceEl;resizeHandle1;resizeHandle2;isDashboard=!1;isMarketplace=!1;updateRef=null;dragCleanup=null;constructor(e,t,s,i){super(e),this.store=t,this.settings=s,this.saveSettings=i}getViewType(){return Y}getDisplayText(){return"Agentfiles"}getIcon(){return"cpu"}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.sidebarPanel=new ee(this.sidebarEl,this.store,()=>this.toggleDashboard(),()=>this.toggleMarketplace()),this.listPanel=new te(this.listEl,this.store,t=>this.onSelectItem(t)),this.detailPanel=new se(this.detailEl,this.store,this.settings,this.saveSettings,this),this.dashboardPanel=new ae(this.dashboardEl,this.app),this.marketplacePanel=new de(this.marketplaceEl,this,this.settings,()=>{this.store.refresh(this.settings)}),this.updateRef=this.store.on("updated",()=>this.renderAll()),this.renderAll()}toggleDashboard(){this.dragCleanup?.(),this.dragCleanup=null,this.isDashboard=!this.isDashboard,this.isMarketplace&&(this.isMarketplace=!1,this.marketplaceEl.addClass("as-hidden")),this.isDashboard?(this.listEl.addClass("as-hidden"),this.detailEl.addClass("as-hidden"),this.resizeHandle1.addClass("as-hidden"),this.resizeHandle2.addClass("as-hidden"),this.dashboardEl.removeClass("as-hidden"),this.dashboardPanel.render()):(this.listEl.removeClass("as-hidden"),this.detailEl.removeClass("as-hidden"),this.resizeHandle1.removeClass("as-hidden"),this.resizeHandle2.removeClass("as-hidden"),this.dashboardEl.addClass("as-hidden")),this.sidebarPanel.setDashboardActive(this.isDashboard),this.sidebarPanel.render()}toggleMarketplace(){this.dragCleanup?.(),this.dragCleanup=null,this.isMarketplace=!this.isMarketplace,this.isDashboard&&(this.isDashboard=!1,this.dashboardEl.addClass("as-hidden")),this.isMarketplace?(this.listEl.addClass("as-hidden"),this.detailEl.addClass("as-hidden"),this.resizeHandle1.addClass("as-hidden"),this.resizeHandle2.addClass("as-hidden"),this.marketplaceEl.removeClass("as-hidden"),this.marketplacePanel.render()):(this.listEl.removeClass("as-hidden"),this.detailEl.removeClass("as-hidden"),this.resizeHandle1.removeClass("as-hidden"),this.resizeHandle2.removeClass("as-hidden"),this.marketplaceEl.addClass("as-hidden")),this.sidebarPanel.setMarketplaceActive(this.isMarketplace),this.sidebarPanel.render()}renderAll(){this.sidebarPanel.render(),!this.isDashboard&&!this.isMarketplace&&(this.listPanel.render(),this.store.filteredItems.length||this.detailPanel.clear())}onSelectItem(e){this.isDashboard&&this.toggleDashboard(),this.isMarketplace&&this.toggleMarketplace(),this.listPanel.setSelected(e.id),this.listPanel.render(),this.detailPanel.show(e)}createResizeHandle(e,t,s,i,a){let r=e.createDiv("as-resize-handle"),l=0,o=0,c=m=>{let g=Math.min(a,Math.max(i,o+(m.clientX-l)));e.style.setProperty(s,`${g}px`)},d=()=>{r.removeClass("is-dragging"),document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",d),this.dragCleanup=null};return r.addEventListener("mousedown",m=>{m.preventDefault(),l=m.clientX,o=parseInt(e.style.getPropertyValue(s))||t.offsetWidth,r.addClass("is-dragging"),document.addEventListener("mousemove",c),document.addEventListener("mouseup",d),this.dragCleanup=d}),r}onClose(){this.dragCleanup?.(),this.updateRef&&this.store.offref(this.updateRef)}};var St=require("obsidian");var ue=class extends St.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(t=>t.isFavorite);break;case"tool":e=e.filter(t=>t.tools.includes(this._filter.toolId));break;case"type":e=e.filter(t=>t.type===this._filter.type);break;case"collection":e=e.filter(t=>t.collections.includes(this._filter.name));break;case"project":e=e.filter(t=>Pe(t.filePath,this._projectsHomeDir)===this._filter.project);break}if(this._searchQuery){let t=this._searchQuery.toLowerCase(),s=this._deepSearch&&(this._deepSearchScope==="description"||this._deepSearchScope==="both"),i=this._deepSearch&&(this._deepSearchScope==="content"||this._deepSearchScope==="both");e=e.filter(a=>a.name.toLowerCase().includes(t)||s&&a.description.toLowerCase().includes(t)||i&&a.content.toLowerCase().includes(t))}return e.sort((t,s)=>t.name.localeCompare(s.name))}getItem(e){return this.items.get(e)}get hasSkillkit(){return L()}refresh(e){this._projectsHomeDir=e.projectsHomeDir,this.items=ht(e),this.enrichWithSkillkit(),this.trigger("updated")}enrichWithSkillkit(){if(!L())return;let e=Ne(),t=Be(),s=We(),i=new Set(s.oversized.map(o=>o.name)),a=new Set(s.longDesc.map(o=>o.name)),r=new Map(s.oversized.map(o=>[o.name,o.lines])),l=new Map(s.longDesc.map(o=>[o.name,o.chars]));for(let o of this.items.values()){let c=o.filePath.split("/").slice(-2,-1)[0],d=o.name.toLowerCase().replace(/\s+/g,"-"),m=e.get(o.name)||e.get(c)||e.get(d);m?(m.isHeavy=o.content.length>5e3,o.usage=m):o.usage={uses:0,lastUsed:null,daysSinceUsed:null,isStale:!0,isHeavy:o.content.length>5e3};let g=o.content.split(`
|
|
`).length,f=o.description.length;o.warnings={oversized:i.has(o.name)||g>500,longDesc:a.has(o.name)||f>1024,lineCount:r.get(o.name)??g,descChars:l.get(o.name)??f},o.conflicts=t.get(o.name)||t.get(c)||[]}}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,t){let s=this.items.get(e);s&&(s.isFavorite=!s.isFavorite,s.isFavorite?t.favorites.includes(e)||t.favorites.push(e):t.favorites=t.favorites.filter(i=>i!==e),this.trigger("updated"))}getToolCounts(){let e=new Map;for(let t of this.items.values())for(let s of t.tools)e.set(s,(e.get(s)||0)+1);return e}getTypeCounts(){let e=new Map;for(let t of this.items.values())e.set(t.type,(e.get(t.type)||0)+1);return e}getProjectCounts(){let e=new Map;for(let t of this.items.values()){let s=Pe(t.filePath,this._projectsHomeDir);e.set(s,(e.get(s)||0)+1)}return e}};var yt=require("fs"),he=class{watchers=[];debounceTimer=null;debounceMs;onChange;constructor(e,t){this.debounceMs=e,this.onChange=t}watchPaths(e){this.close();for(let t of e)try{let s=(0,yt.watch)(t,{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 e of this.watchers)try{e.close()}catch{}this.watchers=[]}};var D=require("obsidian");var me=class extends D.PluginSettingTab{plugin;constructor(e,t){super(e,t),this.plugin=t}display(){let{containerEl:e}=this;e.empty(),new D.Setting(e).setName("File watching").setDesc("Automatically detect changes to skill files").addToggle(t=>t.setValue(this.plugin.settings.watchEnabled).onChange(async s=>{this.plugin.settings.watchEnabled=s,await this.plugin.saveSettings(),this.plugin.restartWatcher()})),new D.Setting(e).setName("Watch debounce (ms)").setDesc("Delay before re-scanning after file changes").addText(t=>t.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(e).setName("Display names").setDesc("How skill and command names are displayed in the list").addDropdown(t=>t.addOptions({auto:"Auto (frontmatter / heading / filename)",filename:"Filename only"}).setValue(this.plugin.settings.namingMode||"auto").onChange(async s=>{this.plugin.settings.namingMode=s,await this.plugin.saveSettings(),this.plugin.refreshStore()})),new D.Setting(e).setName("Deep search by default").setDesc("Enable deep search when the view opens (can always be toggled in the search bar)").addToggle(t=>t.setValue(this.plugin.settings.deepSearchDefault??!1).onChange(async s=>{this.plugin.settings.deepSearchDefault=s,await this.plugin.saveSettings()})),new D.Setting(e).setName("Deep search scope").setDesc("What to include when deep search is enabled").addDropdown(t=>t.addOptions({both:"Description and file content",description:"Description only",content:"File content only"}).setValue(this.plugin.settings.deepSearchScope??"both").onChange(async s=>{this.plugin.settings.deepSearchScope=s,await this.plugin.saveSettings()})),new D.Setting(e).setName("Marketplace").setHeading(),new D.Setting(e).setName("Package runner").setDesc("Command used to install skills from the marketplace").addDropdown(t=>t.addOptions({auto:"Auto-detect",npx:"npx",bunx:"bunx"}).setValue(this.plugin.settings.packageRunner).onChange(async s=>{this.plugin.settings.packageRunner=s,await this.plugin.saveSettings()})),new D.Setting(e).setName("Project scanning").setHeading(),new D.Setting(e).setName("Scan projects").setDesc("Scan all directories under the projects home folder for project-level skills").addToggle(t=>t.setValue(this.plugin.settings.projectScanEnabled).onChange(async s=>{this.plugin.settings.projectScanEnabled=s,await this.plugin.saveSettings(),this.plugin.refreshStore(),this.plugin.restartWatcher()})),new D.Setting(e).setName("Projects home directory").setDesc("Root directory to scan for project-level skills. Leave empty for home directory (~).").addText(t=>t.setPlaceholder("~").setValue(this.plugin.settings.projectsHomeDir).onChange(async s=>{this.plugin.settings.projectsHomeDir=s,await this.plugin.saveSettings(),this.plugin.refreshStore(),this.plugin.restartWatcher()})),new D.Setting(e).setName("Tools").setHeading();for(let t of E){let s=t.isInstalled(),i=this.plugin.settings.tools[t.id]||{enabled:!0,customPaths:[]};new D.Setting(e).setName(t.name).setDesc(s?"Installed":"Not detected").addToggle(a=>a.setValue(s&&i.enabled).setDisabled(!s).onChange(async r=>{this.plugin.settings.tools[t.id]={...i,enabled:r},await this.plugin.saveSettings(),this.plugin.refreshStore()}))}}};var $e={tools:{},watchEnabled:!0,watchDebounceMs:500,deepSearchDefault:!1,deepSearchScope:"both",favorites:[],collections:{},customScanPaths:[],namingMode:"auto",projectScanEnabled:!0,projectsHomeDir:"",packageRunner:"auto"};var ge=class extends wt.Plugin{settings=$e;store=new ue;watcher=null;async onload(){await this.loadSettings(),this.addVaultPath(),this.registerView(Y,e=>new pe(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 me(this.app,this)),this.refreshStore(),this.store.setDeepSearch(this.settings.deepSearchDefault??!1),this.store.setDeepSearchScope(this.settings.deepSearchScope??"both"),this.startWatcher()}addVaultPath(){let e=this.app.vault.adapter;if(!e.getBasePath)return;let t=e.getBasePath();this.settings.customScanPaths.includes(t)||this.settings.customScanPaths.push(t)}onunload(){this.stopWatcher()}refreshStore(){this.store.refresh(this.settings)}startWatcher(){this.settings.watchEnabled&&(this.watcher=new he(this.settings.watchDebounceMs,()=>this.refreshStore()),this.watcher.watchPaths(mt(this.settings)))}stopWatcher(){this.watcher&&(this.watcher.close(),this.watcher=null)}restartWatcher(){this.stopWatcher(),this.startWatcher()}async activateView(){let e=this.app.workspace.getLeavesOfType(Y);if(e.length>0){await this.app.workspace.revealLeaf(e[0]);return}let t=this.app.workspace.getLeaf("tab");await t.setViewState({type:Y,active:!0}),await this.app.workspace.revealLeaf(t)}async loadSettings(){this.settings=Object.assign({},$e,await this.loadData())}async saveSettings(){await this.saveData(this.settings)}};
|