railly_agentfiles/main.js
2026-04-03 21:18:15 -05:00

11 lines
118 KiB
JavaScript

var Jt=Object.defineProperty;var ys=Object.getOwnPropertyDescriptor;var ws=Object.getOwnPropertyNames;var Ds=Object.prototype.hasOwnProperty;var Cs=(n,t)=>{for(var e in t)Jt(n,e,{get:t[e],enumerable:!0})},Es=(n,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ws(t))!Ds.call(n,i)&&i!==e&&Jt(n,i,{get:()=>t[i],enumerable:!(s=ys(t,i))||s.enumerable});return n};var xs=n=>Es(Jt({},"__esModule",{value:!0}),n);var Ti={};Cs(Ti,{default:()=>Gt});module.exports=xs(Ti);var bs=require("obsidian");var ms=require("obsidian");var _=require("obsidian"),ke=require("electron");var St=require("os"),y=require("fs"),u=require("path"),g=(0,St.homedir)(),it=(0,St.platform)()==="win32",st=process.env.XDG_CONFIG_HOME||(it?(0,u.join)(g,".config"):(0,u.join)(g,".config")),Zt=new Map;function Se(){Zt.clear()}function H(n,t){let e=Zt.get(n);if(e!==void 0)return e;let s=t();return Zt.set(n,s),s}function mt(n){if(it){let t=process.env.ProgramFiles||"C:\\Program Files",e=process.env.LOCALAPPDATA||(0,u.join)(g,"AppData","Local");return(0,y.existsSync)((0,u.join)(t,n))||(0,y.existsSync)((0,u.join)(e,"Programs",n))}return(0,y.existsSync)(`/Applications/${n}.app`)||(0,y.existsSync)((0,u.join)(g,"Applications",`${n}.app`))}function q(n){let t=it?[`${n}.cmd`,`${n}.exe`,n]:[n],e=[];if(it){let i=process.env.APPDATA||(0,u.join)(g,"AppData","Roaming");e.push((0,u.join)(i,"npm"),(0,u.join)(g,".bun","bin"),(0,u.join)(g,"AppData","Local","npm"))}else e.push("/usr/local/bin","/opt/homebrew/bin",(0,u.join)(g,".local","bin"));for(let i of e)for(let a of t)if((0,y.existsSync)((0,u.join)(i,a)))return!0;let s=it?(0,u.join)(g,"AppData","Roaming","nvm"):(0,u.join)(g,".nvm","versions","node");try{for(let i of(0,y.readdirSync)(s)){let a=it?(0,u.join)(s,i):(0,u.join)(s,i,"bin");for(let r of t)if((0,y.existsSync)((0,u.join)(a,r)))return!0}}catch{}return!1}var T=[{id:"claude-code",name:"Claude Code",color:"#f97316",icon:"brain",paths:[{baseDir:(0,u.join)(g,".claude","skills"),type:"skill",pattern:"directory-with-skillmd"},{baseDir:(0,u.join)(g,".claude","commands"),type:"command",pattern:"flat-md"}],agentPaths:[{baseDir:(0,u.join)(g,".claude","agents"),type:"agent",pattern:"flat-md"}],isInstalled:()=>H("claude-code",()=>(0,y.existsSync)((0,u.join)(g,".claude","settings.json"))||(0,y.existsSync)((0,u.join)(g,".claude","CLAUDE.md"))||q("claude"))},{id:"cursor",name:"Cursor",color:"#3b82f6",icon:"mouse-pointer",paths:[{baseDir:(0,u.join)(g,".cursor","skills"),type:"skill",pattern:"directory-with-skillmd"},{baseDir:(0,u.join)(g,".cursor","rules"),type:"rule",pattern:"flat-md"}],agentPaths:[{baseDir:(0,u.join)(g,".cursor","agents"),type:"agent",pattern:"flat-md"}],isInstalled:()=>H("cursor",()=>mt("Cursor")||(0,y.existsSync)((0,u.join)(g,".cursor","argv.json")))},{id:"windsurf",name:"Windsurf",color:"#14b8a6",icon:"wind",paths:[{baseDir:(0,u.join)(g,".codeium","windsurf","memories"),type:"memory",pattern:"flat-md"},{baseDir:(0,u.join)(g,".windsurf","rules"),type:"rule",pattern:"flat-md"}],agentPaths:[],isInstalled:()=>H("windsurf",()=>mt("Windsurf")||(0,y.existsSync)((0,u.join)(g,".codeium","windsurf","argv.json")))},{id:"codex",name:"Codex",color:"#22c55e",icon:"book",paths:[{baseDir:(0,u.join)(g,".codex","skills"),type:"skill",pattern:"directory-with-skillmd"},{baseDir:(0,u.join)(g,".codex","prompts"),type:"command",pattern:"flat-md"},{baseDir:(0,u.join)(g,".codex","memories"),type:"memory",pattern:"flat-md"}],agentPaths:[{baseDir:(0,u.join)(g,".codex","agents"),type:"agent",pattern:"flat-md"}],isInstalled:()=>H("codex",()=>(0,y.existsSync)((0,u.join)(g,".codex","config.toml"))||(0,y.existsSync)((0,u.join)(g,".codex","auth.json"))||q("codex"))},{id:"copilot",name:"Copilot",color:"#a855f7",icon:"plane",paths:[{baseDir:(0,u.join)(g,".copilot","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>H("copilot",()=>(0,y.existsSync)((0,u.join)(g,".copilot"))||q("copilot"))},{id:"amp",name:"Amp",color:"#ec4899",icon:"zap",paths:[{baseDir:(0,u.join)(st,"amp","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>H("amp",()=>(0,y.existsSync)((0,u.join)(st,"amp","config.json"))||(0,y.existsSync)((0,u.join)(st,"amp","settings.json"))||q("amp"))},{id:"opencode",name:"OpenCode",color:"#ef4444",icon:"terminal",paths:[{baseDir:(0,u.join)(st,"opencode","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>H("opencode",()=>mt("OpenCode")||(0,y.existsSync)((0,u.join)(st,"opencode","opencode.json"))||(0,y.existsSync)((0,u.join)(st,"opencode","opencode.jsonc"))||q("opencode"))},{id:"pi",name:"Pi",color:"#06b6d4",icon:"sparkles",paths:[{baseDir:(0,u.join)(g,".pi","agent","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>H("pi",()=>q("pi"))},{id:"antigravity",name:"Antigravity",color:"#ef4444",icon:"arrow-up-circle",paths:[{baseDir:(0,u.join)(g,".gemini","antigravity","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>H("antigravity",()=>mt("Antigravity")||(0,y.existsSync)((0,u.join)(g,".gemini","antigravity","skills"))||q("antigravity"))},{id:"claude-desktop",name:"Claude Desktop",color:"#f97316",icon:"monitor",paths:[],agentPaths:[],isInstalled:()=>H("claude-desktop",()=>mt("Claude"))},{id:"global-agents",name:"Global",color:"#a3e635",icon:"globe",paths:[{baseDir:(0,u.join)(g,".agents","skills"),type:"skill",pattern:"directory-with-skillmd"}],agentPaths:[],isInstalled:()=>H("global-agents",()=>(0,y.existsSync)((0,u.join)(g,".agents","skills")))},{id:"aider",name:"Aider",color:"#eab308",icon:"wrench",paths:[],agentPaths:[],isInstalled:()=>H("aider",()=>q("aider"))}];var L={"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"/>'},amp:{viewBox:"0 0 21 21",paths:'<path d="M3.769 18.302l4.73-4.797 1.72 6.535 2.5-.684-2.49-9.489-9.338-2.529-.665 2.555 6.425 1.746-4.71 4.789 1.828 1.874z" fill="currentColor"/><path d="M17.407 12.741l2.5-.683-2.49-9.489-9.339-2.529-.664 2.555 7.885 2.142 2.108 8.004z" fill="currentColor"/><path d="M13.818 16.388l2.5-.684-2.49-9.488-9.339-2.53-.664 2.556 7.885 2.142 2.108 8.004z" fill="currentColor"/>'},antigravity:{viewBox:"0 0 112 96",paths:'<path d="M89.7 93.7c4.667 3.5 11.667 1.167 5.25-5.25C75.7 69.778 79.783 18.445 55.866 18.445S36.033 69.778 16.783 88.445c-7 7-.417 8.75 4.25 5.25 18.083-12.25 16.916-33.834 33.833-33.834s16.834 21.584 34.834 33.834z" fill="currentColor"/>'}};function F(n,t,e=16){let s=L[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,n.appendChild(i)}var kt=class{containerEl;store;onToggleDashboard;onToggleMarketplace;onCreateSkill;onToggleConversations;conversationStore;dashboardActive=!1;marketplaceActive=!1;conversationsActive=!1;constructor(t,e,s,i,a,r,l){this.containerEl=t,this.store=e,this.onToggleDashboard=s,this.onToggleMarketplace=i,this.onCreateSkill=a,this.onToggleConversations=r||(()=>{}),this.conversationStore=l||null}setDashboardActive(t){this.dashboardActive=t}setMarketplaceActive(t){this.marketplaceActive=t}setConversationsActive(t){this.conversationsActive=t}render(){this.containerEl.empty(),this.containerEl.addClass("as-sidebar"),this.renderLibrarySection(),this.conversationsActive&&this.conversationStore?this.renderConversationFilters():(this.renderTypeSection(),this.renderToolSection(),this.renderProjectSection(),this.renderCollectionSection(),this.store.hasSkillkit||this.renderSkillkitCta())}renderSection(t,e){let s=this.containerEl.createDiv("as-sidebar-section");s.createDiv({cls:"as-sidebar-title",text:t});for(let i of e){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,_.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 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=T.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 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");L[i.id]?F(l,i.id,14):(0,_.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(a)})}}renderProjectSection(){let t=this.store.getProjectCounts();if(t.size===0)return;let e=[];for(let[s,i]of t)e.push({label:s,icon:"folder-git-2",filter:{kind:"project",project:s},count:i});e.sort((s,i)=>s.label.localeCompare(i.label)),this.renderSection("Projects",e)}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},a=t.createDiv("as-sidebar-item");!this.dashboardActive&&this.isActive(i)&&a.addClass("is-active");let r=a.createSpan("as-sidebar-icon");(0,_.setIcon)(r,"folder"),a.createSpan({cls:"as-sidebar-label",text:s}),a.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"}}],s=this.dashboardActive||this.marketplaceActive||this.conversationsActive;for(let h of e){let m=t.createDiv("as-sidebar-item");!s&&this.isActive(h.filter)&&m.addClass("is-active");let k=m.createSpan("as-sidebar-icon");(0,_.setIcon)(k,h.icon),m.createSpan({cls:"as-sidebar-label",text:h.label}),m.addEventListener("click",()=>{this.dashboardActive&&this.onToggleDashboard(),this.marketplaceActive&&this.onToggleMarketplace(),this.conversationsActive&&this.onToggleConversations(),this.store.setFilter(h.filter)})}let i=t.createDiv("as-sidebar-item");this.dashboardActive&&i.addClass("is-active");let a=i.createSpan("as-sidebar-icon");(0,_.setIcon)(a,"bar-chart-2"),i.createSpan({cls:"as-sidebar-label",text:"Dashboard"}),i.addEventListener("click",()=>{this.marketplaceActive&&this.onToggleMarketplace(),this.conversationsActive&&this.onToggleConversations(),this.dashboardActive||this.onToggleDashboard()});let r=t.createDiv("as-sidebar-item");this.marketplaceActive&&r.addClass("is-active");let l=r.createSpan("as-sidebar-icon");(0,_.setIcon)(l,"shopping-bag"),r.createSpan({cls:"as-sidebar-label",text:"Marketplace"}),r.addEventListener("click",()=>{this.dashboardActive&&this.onToggleDashboard(),this.conversationsActive&&this.onToggleConversations(),this.marketplaceActive||this.onToggleMarketplace()});let o=t.createDiv("as-sidebar-item");this.conversationsActive&&o.addClass("is-active");let c=o.createSpan("as-sidebar-icon");(0,_.setIcon)(c,"message-circle"),o.createSpan({cls:"as-sidebar-label",text:"Conversations"}),o.addEventListener("click",()=>{this.dashboardActive&&this.onToggleDashboard(),this.marketplaceActive&&this.onToggleMarketplace(),this.conversationsActive||this.onToggleConversations()});let d=t.createDiv("as-sidebar-item as-sidebar-create"),p=d.createSpan("as-sidebar-icon");(0,_.setIcon)(p,"plus"),d.createSpan({cls:"as-sidebar-label",text:"Create"}),d.addEventListener("click",()=>this.onCreateSkill())}renderSkillkitCta(){let t=this.containerEl.createDiv("as-skillkit-cta"),e=t.createDiv("as-skillkit-icon");(0,_.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 @crafter/skillkit"}),t.createEl("a",{cls:"as-skillkit-link",text:"Learn more",href:"https://www.npmjs.com/package/@crafter/skillkit"}).addEventListener("click",a=>{a.preventDefault(),ke.shell.openExternal("https://www.npmjs.com/package/@crafter/skillkit")})}renderConversationFilters(){if(!this.conversationStore)return;let t=this.conversationStore.getProjectCounts();if(t.size>0){let e=this.containerEl.createDiv("as-sidebar-section");e.createDiv({cls:"as-sidebar-title",text:"Projects"});let s=e.createDiv("as-sidebar-item"),i=this.conversationStore.filter;i.kind==="all-conversations"&&s.addClass("is-active");let a=s.createSpan("as-sidebar-icon");(0,_.setIcon)(a,"layers"),s.createSpan({cls:"as-sidebar-label",text:"All"}),s.createSpan({cls:"as-sidebar-count",text:String(this.conversationStore.allItems.length)}),s.addEventListener("click",()=>{this.conversationStore.setFilter({kind:"all-conversations"})});let r=e.createDiv("as-sidebar-item");i.kind==="conversation-favorites"&&r.addClass("is-active");let l=r.createSpan("as-sidebar-icon");(0,_.setIcon)(l,"star"),r.createSpan({cls:"as-sidebar-label",text:"Favorites"}),r.addEventListener("click",()=>{this.conversationStore.setFilter({kind:"conversation-favorites"})});for(let[o,c]of Array.from(t.entries()).sort((d,p)=>p[1]-d[1])){let d=e.createDiv("as-sidebar-item");i.kind==="conversation-project"&&i.project===o&&d.addClass("is-active");let p=d.createSpan("as-sidebar-icon");(0,_.setIcon)(p,"folder-git-2"),d.createSpan({cls:"as-sidebar-label",text:o}),d.createSpan({cls:"as-sidebar-count",text:String(c)}),d.addEventListener("click",()=>{this.conversationStore.setFilter({kind:"conversation-project",project:o})})}}}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:e.kind==="project"&&t.kind==="project"?e.project===t.project:!0}};var K=require("obsidian"),ye=require("electron");var yt=class{containerEl;store;onSelect;selectedId=null;inputEl=null;listEl=null;typeFilter=null;sortBy="name";openDropdown=null;menuDropdownEl=null;outsideClickCleanup=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)});let e=t.createDiv("as-conv-search-actions"),s=e.createEl("button",{cls:"as-conv-icon-btn"}),i=s.createSpan("as-conv-icon-btn-icon");(0,K.setIcon)(i,"file-search"),s.setAttribute("aria-label","Search file content"),this.store.deepSearch&&s.addClass("has-active"),s.addEventListener("click",()=>{this.store.setDeepSearch(!this.store.deepSearch),s.toggleClass("has-active",this.store.deepSearch)});let a=e.createDiv("as-conv-dropdown-wrap"),r=a.createEl("button",{cls:"as-conv-icon-btn"}),l=r.createSpan("as-conv-icon-btn-icon");(0,K.setIcon)(l,"sliders-horizontal"),r.setAttribute("aria-label","Filter & sort"),(this.typeFilter||this.sortBy!=="name")&&r.addClass("has-active"),this.menuDropdownEl=a.createDiv("as-conv-dropdown as-conv-dropdown-wide"),this.renderMenuDropdown(),r.addEventListener("click",o=>{if(o.stopPropagation(),this.openDropdown==="menu")this.closeDropdown();else{this.closeDropdown(),this.openDropdown="menu",this.menuDropdownEl?.addClass("is-open");let c=d=>{a.contains(d.target)||this.closeDropdown()};setTimeout(()=>document.addEventListener("click",c),0),this.outsideClickCleanup=()=>document.removeEventListener("click",c)}}),this.listEl=this.containerEl.createDiv("as-list-items")}this.inputEl.value=this.store.searchQuery,this.renderList()}closeDropdown(){this.openDropdown=null,this.menuDropdownEl?.removeClass("is-open"),this.outsideClickCleanup&&(this.outsideClickCleanup(),this.outsideClickCleanup=null)}renderMenuDropdown(){if(!this.menuDropdownEl)return;this.menuDropdownEl.empty(),this.menuDropdownEl.createDiv("as-conv-dropdown-header").setText("Sort");let e=[{label:"Name",value:"name",icon:"arrow-up-az"},{label:"Usage",value:"usage",icon:"trending-up"}];for(let a of e){let r=this.menuDropdownEl.createDiv(`as-conv-dropdown-item ${this.sortBy===a.value?"is-active":""}`),l=r.createSpan("as-conv-dropdown-check");this.sortBy===a.value&&(0,K.setIcon)(l,"check"),r.createSpan({cls:"as-conv-dropdown-item-label",text:a.label}),r.addEventListener("click",o=>{o.stopPropagation(),this.sortBy=a.value,this.updateMenuBtnState(),this.renderMenuDropdown(),this.renderList()})}this.menuDropdownEl.createDiv("as-conv-dropdown-header").setText("Filter");let i=[{id:null,label:"All"},{id:"stale",label:"Stale"},{id:"heavy",label:"Heavy"},{id:"oversized",label:"Oversized"},{id:"conflict",label:"Conflicts"}];for(let a of i){let r=this.typeFilter===a.id,l=this.menuDropdownEl.createDiv(`as-conv-dropdown-item ${r?"is-active":""}`),o=l.createSpan("as-conv-dropdown-check");r&&(0,K.setIcon)(o,"check"),l.createSpan({cls:"as-conv-dropdown-item-label",text:a.label}),l.addEventListener("click",c=>{c.stopPropagation(),this.typeFilter=a.id,this.updateMenuBtnState(),this.renderMenuDropdown(),this.renderList()})}}updateMenuBtnState(){let t=this.containerEl.querySelector(".as-conv-dropdown-wrap .as-conv-icon-btn");if(t){let e=this.typeFilter!==null||this.sortBy!=="name";t.toggleClass("has-active",e)}}renderList(){if(!this.listEl)return;this.listEl.empty();let t=this.store.filteredItems;if(this.typeFilter)switch(this.typeFilter){case"stale":t=t.filter(e=>e.usage?.isStale);break;case"heavy":t=t.filter(e=>e.usage?.isHeavy);break;case"oversized":t=t.filter(e=>e.warnings?.oversized);break;case"conflict":t=t.filter(e=>e.conflicts&&e.conflicts.length>0);break}if(this.sortBy==="usage"&&(t=[...t].sort((e,s)=>(s.usage?.uses??0)-(e.usage?.uses??0))),this.typeFilter){let e={stale:"Stale",heavy:"Heavy",oversized:"Oversized",conflict:"Conflict"},s=this.listEl.createDiv("as-active-filter");s.createSpan({text:`Showing: ${e[this.typeFilter]??this.typeFilter}`}),s.createSpan({cls:"as-filter-clear",text:"Clear"}).addEventListener("click",()=>{this.typeFilter=null,this.updateMenuBtn(),this.renderList()})}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,K.setIcon)(r,"star")}e.description&&s.createDiv({cls:"as-skill-desc",text:e.description.length>80?e.description.slice(0,80)+"...":e.description});let a=s.createDiv("as-skill-meta");a.createSpan({cls:`as-type-tag as-type-${e.type}`,text:e.type});for(let r of e.tools){let l=T.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}),L[r]?F(o,r,12):o.addClass("as-tool-badge-dot")}e.usage&&(e.usage.uses>0&&a.createSpan({cls:"as-usage-badge",text:`${e.usage.uses}`,attr:{"aria-label":`Used ${e.usage.uses} times`}}),e.usage.isStale&&a.createSpan({cls:"as-badge-stale",text:"stale"}),e.usage.isHeavy&&a.createSpan({cls:"as-badge-heavy",text:"heavy"})),e.warnings?.oversized&&a.createSpan({cls:"as-badge-warn",text:"oversized"}),e.conflicts&&e.conflicts.length>0&&a.createSpan({cls:"as-badge-conflict",text:"conflict"}),s.addEventListener("click",()=>{this.selectedId=e.id,this.onSelect(e)}),s.addEventListener("contextmenu",r=>{r.preventDefault();let l=new K.Menu;l.addItem(o=>o.setTitle("Reveal in system explorer").setIcon("folder-open").onClick(()=>ye.shell.showItemInFolder(e.filePath))),l.addItem(o=>o.setTitle("Copy file path").setIcon("copy").onClick(()=>navigator.clipboard.writeText(e.filePath))),l.showAtMouseEvent(r)})}};var x=require("obsidian"),Me=require("fs"),_e=require("electron");var nt=require("child_process"),B=require("fs"),v=require("path"),wt=require("os"),Ts=new Set(["Read","Write","Edit","MultiEdit","Bash","Glob","Grep","WebSearch","WebFetch","TodoRead","TodoWrite","Task","Agent","Skill","LSP","NotebookEdit","AskFollowupQuestion","AttemptCompletion","SearchReplace","InsertCodeBlock","ReadImages","ExecuteCommand","ListFiles","SearchFiles","ReadFile","WriteFile","ReplaceInFile","ListCodeDefinitionNames","BrowserAction","UseMcp","shell","shell_command","update_plan","create_plan","read_file","write_file","execute_command","spawn_agent","write_stdin","multi_tool_use.parallel"]);function Ls(n){return!(Ts.has(n)||n.startsWith("mcp__")||n.startsWith("mcp_"))}var E=(0,wt.homedir)(),I=(0,wt.platform)()==="win32",Ps=(0,v.join)(E,".skillkit","analytics.db"),we=I?["skillkit.cmd","skillkit.exe","skillkit"]:["skillkit"];function Dt(){let n=[];if(I){let e=process.env.APPDATA||(0,v.join)(E,"AppData","Roaming");n.push((0,v.join)(e,"npm"),(0,v.join)(E,".bun","bin"),(0,v.join)(E,"AppData","Local","npm"))}else n.push("/usr/local/bin","/opt/homebrew/bin",(0,v.join)(E,".local","bin"),(0,v.join)(E,".bun","bin"));let t=I?(0,v.join)(E,"AppData","Roaming","nvm"):(0,v.join)(E,".nvm","versions","node");try{for(let e of(0,B.readdirSync)(t))n.push(I?(0,v.join)(t,e):(0,v.join)(t,e,"bin"))}catch{}if(!I){let e=(0,v.join)(E,".local","share","mise","installs");for(let s of["node","bun"])try{for(let i of(0,B.readdirSync)((0,v.join)(e,s)))n.push((0,v.join)(e,s,i,"bin"))}catch{}}return[...n,process.env.PATH||""].join(v.delimiter)}function As(n){try{return(0,nt.execSync)(`"${n}" help`,{encoding:"utf-8",timeout:5e3,env:{...process.env,NO_COLOR:"1",PATH:Dt()},stdio:["pipe","pipe","pipe"],shell:I?"cmd.exe":void 0}).includes("Analytics for AI agent skills")}catch{return!1}}function Ms(){let n=[],t=[];if(I){let s=process.env.APPDATA||(0,v.join)(E,"AppData","Roaming");t.push((0,v.join)(s,"npm"),(0,v.join)(E,".bun","bin"),(0,v.join)(E,"AppData","Local","npm"))}else t.push("/usr/local/bin","/opt/homebrew/bin",(0,v.join)(E,".local","bin"),(0,v.join)(E,".bun","bin"),(0,v.join)(E,".local","share","mise","shims"));for(let s of t)for(let i of we){let a=(0,v.join)(s,i);(0,B.existsSync)(a)&&n.push(a)}let e=I?(0,v.join)(E,"AppData","Roaming","nvm"):(0,v.join)(E,".nvm","versions","node");try{for(let s of(0,B.readdirSync)(e)){let i=I?(0,v.join)(e,s):(0,v.join)(e,s,"bin");for(let a of we){let r=(0,v.join)(i,a);(0,B.existsSync)(r)&&n.push(r)}}}catch{}if(!I){let s=(0,v.join)(E,".local","share","mise","installs");for(let i of["node","bun"])try{for(let a of(0,B.readdirSync)((0,v.join)(s,i))){let r=(0,v.join)(s,i,a,"bin","skillkit");(0,B.existsSync)(r)&&n.push(r)}}catch{}}for(let s of n)if(As(s))return s;return null}var qt;function Ct(){return qt===void 0&&(qt=Ms()),qt}function $(){return Ct()!==null||(0,B.existsSync)(Ps)}function at(n){let t=Ct();if(!t)return null;try{let e=(0,nt.execSync)(`${t} ${n} --json`,{encoding:"utf-8",timeout:15e3,env:{...process.env,NO_COLOR:"1",PATH:Dt()},stdio:["pipe","pipe","pipe"],shell:I?"cmd.exe":void 0}).trim();return De(e)}catch{return null}}function De(n){let t=n.indexOf("{"),e=n.indexOf("["),s=t===-1?e:e===-1?t:Math.min(t,e);return s===-1?null:JSON.parse(n.slice(s))}function Kt(n){let t=Ct();return t?new Promise(e=>{(0,nt.exec)(`${t} ${n} --json`,{encoding:"utf-8",timeout:15e3,env:{...process.env,NO_COLOR:"1",PATH:Dt()},shell:I?"cmd.exe":void 0},(s,i)=>{if(s){e(null);return}try{e(De(String(i).trim()))}catch{e(null)}})}):Promise.resolve(null)}function Ce(n){if(!$())return[];let t=at(`trace --list --skill ${n} --limit 5`);return Array.isArray(t)?t.map(e=>({traceId:e.trace_id,timestamp:e.timestamp,tokens:e.tokens_total,cost:e.cost_estimate,duration:e.duration_ms,model:e.model||"unknown"})):[]}async function Ee(){let n=new Map;if(!$())return n;let t=await Kt("stats");if(!t?.top_skills)return n;let e=Date.now();for(let s of t.top_skills){if(!Ls(s.name))continue;let i=s.daily.length>0?s.daily[s.daily.length-1]?.date:null,a=null;i&&(a=Math.floor((e-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}async function xe(){let n=new Map;if(!$())return n;let t=await Kt("conflicts --dry-run");if(!t||!("pairs"in t))return n;for(let e of t.pairs)n.has(e.skill_a)||n.set(e.skill_a,[]),n.has(e.skill_b)||n.set(e.skill_b,[]),n.get(e.skill_a).push({skillName:e.skill_b,similarity:e.similarity}),n.get(e.skill_b).push({skillName:e.skill_a,similarity:e.similarity});return n}async function Te(){if(!$())return{oversized:[],longDesc:[]};let n=await Kt("health");return n?.warnings?{oversized:n.warnings.oversized||[],longDesc:n.warnings.long_descriptions||[]}:{oversized:[],longDesc:[]}}function rt(n){let t=Ct();if(!t)return{success:!1,output:"skillkit not found"};try{return{success:!0,output:(0,nt.execSync)(`${t} ${n}`,{encoding:"utf-8",timeout:3e4,env:{...process.env,NO_COLOR:"1",PATH:Dt()},stdio:["pipe","pipe","pipe"],shell:I?"cmd.exe":void 0}).trim()}}catch(e){return{success:!1,output:e instanceof Error?e.message:"unknown error"}}}function Qt(n){if(!n)return"never";let t=Date.now()-new Date(n).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 Le(n,t,e=48,s=16){if(t.length===0)return;let i=Math.max(...t,1),a=t.map((o,c)=>{let d=c/(t.length-1||1)*e,p=s-o/i*s;return`${d.toFixed(1)},${p.toFixed(1)}`}),r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.setAttribute("viewBox",`0 0 ${e} ${s}`),r.setAttribute("width",String(e)),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 Pe=require("obsidian");function Y(n,t,e,s){new Xt(n,t,e,s).open()}var Xt=class extends Pe.Modal{title;message;onConfirm;constructor(t,e,s,i){super(t),this.title=e,this.message=s,this.onConfirm=i}onOpen(){let{contentEl:t}=this;t.addClass("as-confirm-modal"),t.createEl("p",{cls:"as-confirm-title",text:this.title}),t.createEl("p",{cls:"as-confirm-message",text:this.message});let e=t.createDiv("as-confirm-buttons");e.createEl("button",{cls:"as-confirm-cancel",text:"Cancel"}).addEventListener("click",()=>this.close()),e.createEl("button",{cls:"as-confirm-action mod-warning",text:"Confirm"}).addEventListener("click",()=>{this.close(),this.onConfirm()})}onClose(){this.contentEl.empty()}};function _s(n){return Math.ceil(n.length/4)}function Is(n){return n<1024?`${n} B`:n<1024*1024?`${(n/1024).toFixed(1)} KB`:`${(n/(1024*1024)).toFixed(1)} MB`}function Ae(n){return n>=1e3?`${(n/1e3).toFixed(1)}k`:String(n)}function $s(n){return new Date(n).toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}var Hs=new x.Component,Et=class{containerEl;store;settings;saveSettings;currentItem=null;isEditing=!1;app;constructor(t,e,s,i,a){this.containerEl=t,this.store=e,this.settings=s,this.saveSettings=i,this.app=a.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,x.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 h of t.tools){let m=T.find(C=>C.id===h);if(!m)continue;let k=i.createSpan("as-tool-name-badge");k.setCssProps({"--tool-color":m.color}),L[h]&&F(k,h,12),k.createSpan({text:m.name})}let a=s.createDiv("as-toolbar-right"),r=a.createEl("button",{cls:"as-toolbar-btn",attr:{"aria-label":"Toggle favorite"}});(0,x.setIcon)(r,t.isFavorite?"star":"star-off"),r.addEventListener("click",()=>{this.store.toggleFavorite(t.id,this.settings),this.saveSettings(),this.render()});let l=a.createEl("button",{cls:"as-toolbar-btn",attr:{"aria-label":this.isEditing?"Preview":"Edit"}});(0,x.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,x.setIcon)(o,"folder-open"),o.addEventListener("click",()=>{_e.shell.showItemInFolder(t.filePath)}),$()){let h=a.createEl("button",{cls:"as-toolbar-btn as-toolbar-btn-danger",attr:{"aria-label":"Remove skill"}});(0,x.setIcon)(h,"trash-2"),h.addEventListener("click",()=>{Y(this.app,"Remove skill",`Remove "${t.name}"? This will delete the skill files.`,()=>{let m=rt(`prune --skill ${t.name} --yes`);m.success?(new x.Notice(`Removed ${t.name}`,5e3),this.store.refresh(this.settings),this.clear()):new x.Notice(`Failed to remove: ${m.output}`,5e3)})})}let c=e.createDiv("as-detail-meta-bar"),d=_s(t.content),p=t.content.length;if(c.createSpan({cls:"as-meta-item",text:Is(t.fileSize)}),c.createSpan({cls:"as-meta-item",text:`${Ae(p)} chars`}),c.createSpan({cls:"as-meta-item",text:`~${Ae(d)} tokens`}),c.createSpan({cls:"as-meta-item",text:$s(t.lastModified)}),c.createSpan({cls:"as-meta-item as-meta-type",text:t.type}),t.usage&&t.usage.uses>0){let h=e.createDiv("as-detail-usage-bar");h.createSpan({cls:"as-usage-stat",text:`${t.usage.uses} uses`}),h.createSpan({cls:"as-usage-stat",text:`last: ${Qt(t.usage.lastUsed)}`}),t.usage.isStale&&h.createSpan({cls:"as-badge-stale",text:"stale"}),t.usage.isHeavy&&h.createSpan({cls:"as-badge-heavy",text:"heavy"})}}renderFrontmatter(t,e){let s=Object.keys(e.frontmatter),i=t.createDiv("as-frontmatter");if(e.filePath){let a=i.createDiv("as-fm-prop");a.createSpan({cls:"as-fm-key",text:"path"}),a.createSpan({cls:"as-fm-value",text:e.filePath})}if(!(s.length===0&&!e.filePath))for(let a of s){let r=e.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(t){let e=this.containerEl.createDiv("as-detail-body");this.renderFrontmatter(e,t),this.renderWarnings(e,t),this.renderUsageSection(e,t),this.renderConflicts(e,t),this.renderTraces(e,t);let s=e.createDiv("as-detail-preview markdown-rendered");x.MarkdownRenderer.render(this.app,t.content,s,t.filePath,Hs)}renderWarnings(t,e){let s=[];if(e.warnings?.oversized&&s.push(`${e.warnings.lineCount} lines (recommended: <500)`),e.warnings?.longDesc&&s.push(`Description is ${e.warnings.descChars} chars (recommended: <1024)`),e.conflicts&&e.conflicts.length>0){let l=e.conflicts.map(o=>o.skillName).join(", ");s.push(`Conflicts with: ${l}`)}if(s.length===0)return;let i=t.createDiv("as-warnings"),a=i.createDiv("as-warnings-icon");(0,x.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(t,e){if(!e.usage||e.usage.uses===0)return;let s=t.createDiv("as-usage-section"),i=s.createDiv("as-usage-left");if(i.createSpan({cls:"as-usage-count",text:String(e.usage.uses)}),i.createSpan({cls:"as-usage-label",text:"uses"}),i.createSpan({cls:"as-usage-last",text:Qt(e.usage.lastUsed)}),e.usage.daily&&e.usage.daily.length>1){let a=s.createDiv("as-usage-spark");Le(a,e.usage.daily.map(r=>r.count),80,20)}}renderConflicts(t,e){if(!e.conflicts||e.conflicts.length===0)return;let s=t.createDiv("as-conflicts-section");s.createDiv({cls:"as-section-title",text:`Conflicts (${e.conflicts.length})`});for(let i of e.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(t,e){if(!$())return;let s=Ce(e.name);if(s.length===0)return;let i=t.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 "+e.name})}renderPruneAction(t,e){let s=t.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",()=>{Y(this.app,"Remove skill",`Remove "${e.name}"? This will delete the skill files.`,()=>{let a=rt(`prune --skill ${e.name} --yes`);a.success?(new x.Notice(`Removed ${e.name}`,5e3),this.store.refresh(this.settings)):new x.Notice(`Failed to remove: ${a.output}`,5e3)})})}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,Me.writeFileSync)(t.filePath,e,"utf-8"),t.content=e,new x.Notice(`Saved ${t.name}`,5e3)}catch(s){new x.Notice(`Failed to save: ${s instanceof Error?s.message:String(s)}`,5e3)}}};var W=require("obsidian"),Ue=require("electron");var Yt=require("child_process"),A=require("fs"),f=require("path"),xt=require("os"),gt=require("obsidian"),w=(0,xt.homedir)(),ot=(0,xt.platform)()==="win32",Ie=(0,f.join)(w,".agents",".skill-lock.json"),js="https://skills.sh/api";async function te(n){if(n.length<2)return[];try{let e=(await(0,gt.requestUrl)({url:`${js}/search?q=${encodeURIComponent(n)}&limit=30`})).json;if(!e.skills)return[];let s=Oe();return e.skills.map(i=>({...i,installed:s.has(i.name)}))}catch{return[]}}var $e=new Map;async function Fs(n){let t=$e.get(n);if(t)return t;let s=(await(0,gt.requestUrl)({url:`https://api.github.com/repos/${n}`})).json.default_branch||"main",a=(await(0,gt.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 $e.set(n,r),r}function Rs(n,t,e){let s=t.split("/"),i=s[s.length-1]||n,a=new Set([i,n]);for(let r of e.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 je(n,t,e){try{let{branch:s,files:i}=await Fs(n),a=Rs(t,e,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 t.includes(d)||d.includes(t)}));let l=r||`skills/${t}/SKILL.md`;return(await(0,gt.requestUrl)({url:`https://raw.githubusercontent.com/${n}/${s}/${l}`})).text}catch{return null}}async function Fe(){let n=["react","next","clerk","stripe","ai"],t=new Set,e=[];for(let s of n){let i=await te(s);for(let a of i)t.has(a.id)||(t.add(a.id),e.push(a))}return e.sort((s,i)=>i.installs-s.installs).slice(0,20)}function Os(){let n=[];if(ot){let e=process.env.APPDATA||(0,f.join)(w,"AppData","Roaming");n.push((0,f.join)(e,"npm"),(0,f.join)(w,".bun","bin"),(0,f.join)(w,"AppData","Local","npm"))}else n.push("/usr/local/bin","/opt/homebrew/bin",(0,f.join)(w,".local","bin"),(0,f.join)(w,".bun","bin"));let t=ot?(0,f.join)(w,"AppData","Roaming","nvm"):(0,f.join)(w,".nvm","versions","node");try{for(let e of(0,A.readdirSync)(t))n.push(ot?(0,f.join)(t,e):(0,f.join)(t,e,"bin"))}catch{}return[...n,process.env.PATH||""].join(f.delimiter)}function He(){let n=ot?["bunx.cmd","bunx.exe","bunx"]:["bunx"],t=[];if(ot){let e=process.env.APPDATA||(0,f.join)(w,"AppData","Roaming");t.push((0,f.join)(w,".bun","bin"),(0,f.join)(e,"npm"))}else t.push((0,f.join)(w,".bun","bin"),"/usr/local/bin","/opt/homebrew/bin");for(let e of t)for(let s of n)if((0,A.existsSync)((0,f.join)(e,s)))return(0,f.join)(e,s);return"npx"}function ee(n="auto"){return n==="npx"?"npx":He()}var Re=[{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"}],Tt={"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 Oe(){let n=new Set;if(!(0,A.existsSync)(Ie))return n;try{let t=JSON.parse((0,A.readFileSync)(Ie,"utf-8"));if(t.skills)for(let e of Object.keys(t.skills))n.add(e)}catch{}return n}var Ns=[(0,f.join)(w,".claude","skills"),(0,f.join)(w,".cursor","skills"),(0,f.join)(w,".codex","skills"),(0,f.join)(w,".codeium","windsurf","skills"),(0,f.join)(w,".config","amp","skills"),(0,f.join)(w,".config","opencode","skills"),(0,f.join)(w,".copilot","skills"),(0,f.join)(w,".agents","skills")];function Bs(n){for(let t of Ns){let e=(0,f.join)(t,n);if((0,A.existsSync)(e))try{(0,A.rmSync)(e,{recursive:!0,force:!0})}catch{}}Ws(n)}function Ws(n){let t=(0,f.join)(w,".agents",".skill-lock.json");if((0,A.existsSync)(t))try{let e=JSON.parse((0,A.readFileSync)(t,"utf-8"));e.skills&&e.skills[n]&&(delete e.skills[n],(0,A.writeFileSync)(t,JSON.stringify(e,null,2)+`
`,"utf-8"))}catch{}}function Lt(n){let t=Oe();for(let e of n)e.installed=t.has(e.name);return n}function se(n,t=12e4){return new Promise(e=>{(0,Yt.exec)(n,{encoding:"utf-8",timeout:t,env:{...process.env,PATH:Os(),NO_COLOR:"1"},shell:ot?"cmd.exe":void 0},(s,i)=>{let a=String(i??"");!s||a.includes("Done")||a.includes("Installed")||a.includes("Removed")||a.includes("Updated")?e({success:!0,output:a}):e({success:!1,output:s?.message??"Command failed"})})})}async function Ne(n,t,e={}){let s=t.length>0?`-a ${t.join(" ")}`:"-a '*'",i=e.global?"-g":"",a=e.skillName?`-s ${e.skillName}`:"",l=`${ee(e.runner||"auto")} skills add ${n} ${s} ${i} ${a} -y`.replace(/\s+/g," ").trim();return se(l)}async function Be(n,t="auto"){let s=`${ee(t)} skills remove ${n} -y`,i=await se(s,3e4);return Bs(n),{success:!0,output:i.output||`Cleaned ${n}`}}async function We(n="auto"){let e=`${ee(n)} skills update`,s=await se(e),i=s.output.match(/Updated (\d+) skill/);return{...s,count:i?parseInt(i[1]):0}}function ie(n){return n>=1e6?`${(n/1e6).toFixed(1)}M`:n>=1e3?`${(n/1e3).toFixed(1)}K`:String(n)}var lt=require("fs"),Ve=require("path"),Ge=require("os"),zs=new Set(["Read","Write","Edit","MultiEdit","Bash","Glob","Grep","WebSearch","WebFetch","TodoRead","TodoWrite","Task","Agent","Skill","LSP","NotebookEdit","AskFollowupQuestion","AttemptCompletion","SearchReplace","InsertCodeBlock","ReadImages","ExecuteCommand","ListFiles","SearchFiles","ReadFile","WriteFile","ReplaceInFile","ListCodeDefinitionNames","BrowserAction","UseMcp","shell","shell_command","update_plan","create_plan","read_file","write_file","execute_command","spawn_agent","write_stdin","multi_tool_use.parallel"]);function ze(n){return!(zs.has(n)||n.startsWith("mcp__")||n.startsWith("mcp_"))}function Us(n){let t=n.top_skills.filter(s=>ze(s.name)),e=n.top_skills.filter(s=>!ze(s.name)).reduce((s,i)=>s+i.total,0);return{...n,top_skills:t,total_invocations:Math.max(0,n.total_invocations-e),unique_skills:t.length}}function Vs(){let n=at("stats"),t=at("health"),e=at("burn"),s=at("context");return{stats:n,health:t,burn:e&&e.length>0?e[0]:null,context:s}}var ne=(0,Ve.join)((0,Ge.homedir)(),".skillkit","dashboard-cache.json"),z=null,Q=null;function Gs(){if(!z&&(0,lt.existsSync)(ne))try{let n=JSON.parse((0,lt.readFileSync)(ne,"utf-8"));z=n.data,Q=n.cachedAt}catch{}}function Js(){if(z)try{(0,lt.writeFileSync)(ne,JSON.stringify({data:z,cachedAt:Q},null,2),"utf-8")}catch{}}Gs();var Pt=class{containerEl;app;constructor(t,e){this.containerEl=t,this.app=e}render(){if(this.containerEl.empty(),this.containerEl.addClass("as-dashboard"),!$()){this.renderNoSkillkit();return}if(z)this.renderDashboard(z);else{let t=this.containerEl.createDiv("as-dash-loading");t.createDiv("as-dash-spinner"),t.createDiv({cls:"as-dash-loading-text",text:"Loading analytics..."}),setTimeout(()=>{let e=Vs();z=e,Q=Date.now(),Js(),t.remove(),this.renderDashboard(e)},10)}}renderDashboard(t){this.renderActionBar(t);let e=t.stats?Us(t.stats):null;if(e&&this.renderOverview(e,t.health),e&&this.renderTopSkills(e),t.health||t.context){let s=this.containerEl.createDiv("as-dash-row");t.health&&this.renderHealth(t.health,s),t.context&&this.renderContext(t.context,s)}t.burn&&this.renderBurn(t.burn),t.health&&this.renderStale(t.health)}renderActionBar(t){let e=this.containerEl.createDiv("as-dash-action-bar");if(Q){let r=Math.round((Date.now()-Q)/1e3),l=r<5?"just now":r<60?`${r}s ago`:`${Math.round(r/60)}m ago`;e.createSpan({cls:"as-dash-updated",text:`Updated ${l}`})}let s=e.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,We().then(r=>{if(r.success){let l=r.count>0?`Updated ${r.count} skill(s)`:"All skills up to date";new W.Notice(l,5e3),z=null,Q=null,this.render()}else new W.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=rt("scan");r.success?(new W.Notice("Scan complete",5e3),z=null,Q=null,this.render()):new W.Notice(`Scan failed: ${r.output}`,5e3),a.setText("Scan sessions"),a.disabled=!1},10)}),t.health&&t.health.usage.unused_30d>0){let r=s.createEl("button",{cls:"as-action-btn as-action-btn-danger",text:`Prune ${t.health.usage.unused_30d} stale`});r.addEventListener("click",()=>{Y(this.app,"Prune stale skills",`Remove ${t.health.usage.unused_30d} unused skills? This cannot be undone.`,()=>{r.setText("Pruning..."),r.disabled=!0,setTimeout(()=>{let l=rt("prune --yes");l.success?(new W.Notice("Pruned stale skills",5e3),z=null,Q=null,this.render()):new W.Notice(`Prune failed: ${l.output}`,5e3),r.setText(`Prune ${t.health.usage.unused_30d} stale`),r.disabled=!1},10)})})}}renderNoSkillkit(){let t=this.containerEl.createDiv("as-dash-empty"),e=t.createDiv("as-dash-empty-icon");(0,W.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",a=>{a.preventDefault(),Ue.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");if(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"),t.streak&&t.streak.current>0){let a=s.createDiv("as-dash-streak-row");a.createSpan({cls:"as-streak-value",text:`${t.streak.current} day streak`}),t.streak.current>=7&&a.createSpan({cls:"as-streak-fire",text:"on fire"}),a.createSpan({cls:"as-streak-longest",text:`longest: ${t.streak.longest}d`})}if(t.velocity&&t.velocity.this_week>0){let a=s.createDiv("as-dash-velocity-row");a.createSpan({text:`This week: $${t.velocity.this_week.toFixed(0)}`}),a.createSpan({cls:"as-velocity-vs",text:`vs $${t.velocity.last_week.toFixed(0)} last week`});let r=t.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(t,e,s,i){let a=t.createDiv("as-stat-card"),r=a.createDiv("as-stat-icon");(0,W.setIcon)(r,i),a.createDiv({cls:"as-stat-value",text:e}),a.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 a of t.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(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,a=i>0?Math.round(t.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:`${t.usage.used_30d} used in 30d`}),o.createDiv({cls:"as-health-line as-health-warn",text:`${t.usage.unused_30d} never triggered`});let d=o.createDiv("as-budget-bar").createDiv("as-budget-fill");d.setCssProps({"--bar-w":`${t.metadata.pct}%`}),t.metadata.pct>80&&d.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,`$${Math.round(t.cost.total).toLocaleString()}`,"total cost","flame"),this.statCard(s,`$${Math.round(t.cost.total/(t.period.days||1)).toLocaleString()}`,"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 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=t.by_day.slice(-14);if(i.length===0)return;let a=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"),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(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,a=[{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 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): $${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 i of t.usage.never_used.slice(0,20))s.createDiv("as-stale-item").createSpan({text:i});t.usage.never_used.length>20&&s.createDiv({cls:"as-stale-more",text:`+${t.usage.never_used.length-20} more`})}};var N=require("obsidian"),dt=require("fs"),ss=require("path"),is=require("os");var R=require("obsidian"),ct=require("fs"),ts=require("path"),es=require("os");var b=require("fs"),S=require("path"),At=require("os"),Ze=require("obsidian"),qe=require("crypto");var Je=new Set(["readme.md","license","license.md","changelog.md",".ds_store","thumbs.db"]);function Zs(n){return(0,qe.createHash)("sha256").update(n).digest("hex").slice(0,12)}function qs(n){let t=n.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);if(!t)return{frontmatter:{},content:n};try{let e=(0,Ze.parseYaml)(t[1]);return{frontmatter:typeof e=="object"&&e?e:{},content:t[2]}}catch{return{frontmatter:{},content:n}}}function Ks(n,t,e,s="auto",i="skill"){if(i==="command")return typeof n.name=="string"&&n.name?n.name:(0,S.basename)(e,(0,S.extname)(e));if(s==="auto"){if(typeof n.name=="string"&&n.name)return n.name;let r=t.match(/^#\s+(.+)$/m);if(r)return r[1].trim()}let a=(0,S.basename)(e,(0,S.extname)(e));return a==="SKILL"?(0,S.basename)((0,S.join)(e,"..")):a}function Ke(n,t,e,s="auto",i=0){if(!(0,b.existsSync)(n)||i>3)return[];let a=[];for(let r of(0,b.readdirSync)(n,{withFileTypes:!0})){let l=(0,S.join)(n,r.name);if(!(r.isDirectory()||r.isSymbolicLink()&&(0,b.statSync)(l,{throwIfNoEntry:!1})?.isDirectory()))continue;let c=(0,S.join)(l,"SKILL.md");if((0,b.existsSync)(c)){let d=vt(c,t,e,"directory-with-skillmd",s);d&&a.push(d)}else a.push(...Ke(l,t,e,s,i+1))}return a}function Qs(n,t,e,s="auto"){if(!(0,b.existsSync)(n))return[];let i=[];for(let a of(0,b.readdirSync)(n,{withFileTypes:!0})){let r=(0,S.join)(n,a.name);if(a.isDirectory()||a.isSymbolicLink()&&(0,b.statSync)(r,{throwIfNoEntry:!1})?.isDirectory()){let d=(0,S.join)(r,"SKILL.md");if((0,b.existsSync)(d)){let m=vt(d,t,e,"flat-md",s);m&&i.push(m);continue}let p=(0,b.readdirSync)(r).filter(m=>m.endsWith(".md")&&!Je.has(m.toLowerCase())),h=p.find(m=>m.toLowerCase()===`${a.name.toLowerCase()}.md`)||p[0];if(h){let m=vt((0,S.join)(r,h),t,e,"flat-md",s);m&&i.push(m)}continue}let o=a.name.toLowerCase();if(!o.endsWith(".md")||Je.has(o))continue;let c=vt(r,t,e,"flat-md",s);c&&i.push(c)}return i}function Xs(n,t,e,s="auto"){if(!(0,b.existsSync)(n))return[];let i=[];for(let a of(0,b.readdirSync)(n,{withFileTypes:!0})){if(!a.name.endsWith(".mdc")&&!a.name.endsWith(".md")||a.isDirectory())continue;let r=vt((0,S.join)(n,a.name),t,e,"mdc",s);r&&i.push(r)}return i}function vt(n,t,e,s="directory-with-skillmd",i="auto"){try{let a=(0,b.readFileSync)(n,"utf-8"),r=(0,b.statSync)(n),{frontmatter:l,content:o}=qs(a),c=Ks(l,o,n,i,t),d=typeof l.description=="string"?l.description:"",p;try{p=(0,b.realpathSync)(n)}catch{p=n}return{id:Zs(p),name:c,description:d,type:t,tools:[e],filePath:n,realPath:p,dirPath:(0,S.join)(n,".."),content:a,frontmatter:l,lastModified:r.mtimeMs,fileSize:r.size,isFavorite:!1,collections:[]}}catch{return null}}function ae(n,t,e="auto"){switch(n.pattern){case"directory-with-skillmd":return Ke(n.baseDir,n.type,t,e);case"flat-md":return Qs(n.baseDir,n.type,t,e);case"mdc":return Xs(n.baseDir,n.type,t,e)}}function Ys(n,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 a=(0,S.join)(n,i.sub);if(!(0,b.existsSync)(a))continue;let r={baseDir:a,type:i.type,pattern:i.pattern};e.push(...ae(r,t))}return e}function Qe(n){return n.projectsHomeDir||(0,At.homedir)()}function ti(n,t){let e=(0,At.homedir)(),s=[];for(let i of[...t.paths,...t.agentPaths]){let a=(0,S.relative)(e,i.baseDir);if(a.startsWith("..")||a.startsWith("/"))continue;let r=(0,S.join)(n,a);if((0,b.existsSync)(r))try{s.push(...ae({...i,baseDir:r},t.id))}catch{}}return s}function ei(n){let t=Qe(n);if(!(0,b.existsSync)(t))return[];let e=[];try{let s=new Set(["node_modules",".Trash","Library","Applications","Music","Movies","Pictures","Public"]);for(let i of(0,b.readdirSync)(t,{withFileTypes:!0})){if(!i.isDirectory()&&!i.isSymbolicLink()||s.has(i.name))continue;let a=(0,S.join)(t,i.name);for(let r of T){if(!r.isInstalled())continue;let l=n.tools[r.id];if(l&&!l.enabled)continue;let o=ti(a,r);o.length>0&&e.push({items:o,toolId:r.id})}}}catch{}return e}function re(n,t){let e=t||(0,At.homedir)();if(!n.startsWith(e+S.sep))return"global";let i=n.slice(e.length+1).split(S.sep);return i.length>1&&!i[0].startsWith(".")?i[0]:"global"}function Xe(n){Se();let t=n.namingMode||"auto",e=new Map,s=new Map;function i(a,r){let l=e.get(a.id);if(l){l.tools.includes(r)||l.tools.push(r);return}let o=s.get(a.name);if(o){let c=e.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);e.set(a.id,a),s.set(a.name,a.id)}for(let a of T){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 ae(o,a.id,t))i(c,a.id)}for(let a of n.customScanPaths)if((0,b.existsSync)(a))for(let r of Ys(a,"claude-code"))i(r,"claude-code");if(n.projectScanEnabled)for(let{items:a,toolId:r}of ei(n))for(let l of a)i(l,r);return e}function oe(){return T.filter(n=>n.isInstalled()).map(n=>n.id)}function Ye(n){let t=[];for(let e of T)if(e.isInstalled())for(let s of[...e.paths,...e.agentPaths])(0,b.existsSync)(s.baseDir)&&t.push(s.baseDir);if(n?.projectScanEnabled){let e=Qe(n),s=new Set(["node_modules",".Trash","Library","Applications","Music","Movies","Pictures","Public"]);try{for(let i of(0,b.readdirSync)(e,{withFileTypes:!0})){if(!i.isDirectory()&&!i.isSymbolicLink()||s.has(i.name))continue;let a=(0,S.join)(e,i.name);for(let r of[".claude/skills",".claude/commands",".claude/agents",".cursor/skills",".codex/skills"]){let l=(0,S.join)(a,r);(0,b.existsSync)(l)&&t.push(l)}}}catch{}}return t}var le={};for(let[n,t]of Object.entries(Tt))le[t]||(le[t]=n);var ce=(0,ts.join)((0,es.homedir)(),".skillkit","install-prefs.json"),tt=null,Mt=!0;function si(){if(!tt&&(0,ct.existsSync)(ce))try{let n=JSON.parse((0,ct.readFileSync)(ce,"utf-8"));tt=new Set(n.agents||[]),Mt=n.global??!0}catch{}}function ii(){try{(0,ct.writeFileSync)(ce,JSON.stringify({agents:tt?[...tt]:[],global:Mt}),"utf-8")}catch{}}si();var _t=class extends R.Modal{skill;settings;onInstalled;selectedAgents;isGlobal;constructor(t,e,s,i){if(super(t),this.skill=e,this.settings=s,this.onInstalled=i,tt)this.selectedAgents=new Set(tt);else{this.selectedAgents=new Set;let a=oe();for(let r of a){let l=Tt[r];l&&this.selectedAgents.add(l)}}this.isGlobal=Mt}onOpen(){let{contentEl:t}=this;t.addClass("as-install-modal"),t.createEl("h3",{text:`Install ${this.skill.name}`}),t.createEl("p",{cls:"as-install-source",text:this.skill.source}),new R.Setting(t).setName("Install globally").setDesc("Shared across all projects (~/.agents/skills/)").addToggle(o=>o.setValue(this.isGlobal).onChange(c=>{this.isGlobal=c})),new R.Setting(t).setName("Agents").setHeading();let e=t.createDiv("as-install-scroll"),s=oe(),i=new Set(s.map(o=>Tt[o]).filter(Boolean));for(let o of Re){let c=i.has(o.id),d=le[o.id],h=new R.Setting(e).addToggle(C=>C.setValue(this.selectedAgents.has(o.id)).onChange(M=>{M?this.selectedAgents.add(o.id):this.selectedAgents.delete(o.id)})).nameEl,m=d&&L[d]?d:L[o.id]?o.id:L[o.id+"-code"]?o.id+"-code":L[o.id+"-cli"]?o.id+"-cli":null,k=h.createSpan("as-install-agent-icon");m?F(k,m,14):k.addClass("as-install-agent-placeholder"),h.createSpan({text:o.label}),c&&h.createSpan({cls:"as-install-detected",text:"detected"})}let a=t.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(t){let e=[...this.selectedAgents];if(e.length===0){new R.Notice("Select at least one agent",5e3);return}tt=new Set(this.selectedAgents),Mt=this.isGlobal,ii(),this.close(),new R.Notice(`Installing ${this.skill.name}...`,3e3),Ne(this.skill.source,e,{runner:this.settings.packageRunner,global:this.isGlobal,skillName:this.skill.name}).then(s=>{s.success?(new R.Notice(`Installed ${this.skill.name}`,5e3),this.skill.installed=!0,this.onInstalled()):new R.Notice(`Failed to install ${this.skill.name}`,5e3)})}onClose(){this.contentEl.empty()}};var de=(0,ss.join)((0,is.homedir)(),".skillkit","marketplace-popular.json"),O=null,It="",X=null,ni=new N.Component;function ai(){if(!O&&(0,dt.existsSync)(de))try{let n=JSON.parse((0,dt.readFileSync)(de,"utf-8"));O=Lt(n)}catch{}}function ri(){if(O)try{(0,dt.writeFileSync)(de,JSON.stringify(O),"utf-8")}catch{}}ai();var $t=class{containerEl;inputEl=null;listEl=null;previewEl=null;searchTimer=null;selectedSkill=null;app;settings;onRefresh;constructor(t,e,s,i){this.containerEl=t,this.app=e.app,this.settings=s,this.onRefresh=i}render(){if(!this.inputEl){this.containerEl.empty(),this.containerEl.addClass("as-marketplace");let t=this.containerEl.createDiv("as-mp-search");this.inputEl=t.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 e=this.containerEl.createDiv("as-mp-body");this.listEl=e.createDiv("as-mp-list"),this.previewEl=e.createDiv("as-mp-preview"),this.previewEl.createDiv({cls:"as-mp-hint",text:"Select a skill to preview."})}this.inputEl.value=It,It.length>=2&&X?this.showResults(X):O?this.showPopular():this.loadPopular()}async loadPopular(){if(!this.listEl)return;this.listEl.empty(),this.listEl.createDiv({cls:"as-mp-loading",text:"Loading popular skills..."}),O=await Fe(),ri(),this.showPopular()}refreshList(){O&&Lt(O),X&&Lt(X),It.length>=2&&X?this.showResults(X):this.showPopular()}showPopular(){if(this.listEl){if(this.listEl.empty(),!O||O.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 t of O)this.renderSkillCard(t)}}showResults(t){if(this.listEl){if(this.listEl.empty(),t.length===0){this.listEl.createDiv({cls:"as-mp-hint",text:"No skills found."});return}for(let e of t)this.renderSkillCard(e)}}async doSearch(t){if(!this.listEl)return;if(It=t,t.length<2){X=null,this.showPopular();return}this.listEl.empty(),this.listEl.createDiv({cls:"as-mp-loading",text:"Searching..."});let e=await te(t);X=e,this.showResults(e)}renderSkillCard(t){if(!this.listEl)return;let e=this.listEl.createDiv("as-mp-card");this.selectedSkill?.id===t.id&&e.addClass("is-selected");let s=e.createDiv("as-mp-card-header");s.createSpan({cls:"as-mp-card-name",text:t.name}),t.installed&&s.createSpan({cls:"as-mp-installed-badge",text:"Installed"}),e.createDiv({cls:"as-mp-card-source",text:t.source});let i=e.createDiv("as-mp-card-meta"),a=i.createSpan("as-mp-dl-icon");(0,N.setIcon)(a,"download"),i.createSpan({cls:"as-mp-card-installs",text:ie(t.installs)}),e.addEventListener("click",()=>{this.selectedSkill=t,this.listEl&&this.listEl.querySelectorAll(".as-mp-card").forEach(r=>r.removeClass("is-selected")),e.addClass("is-selected"),this.showPreview(t)})}async showPreview(t){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:t.name});let a=i.createDiv("as-mp-preview-meta");a.createSpan({cls:"as-mp-preview-source",text:t.source});let r=a.createSpan("as-mp-dl-icon");(0,N.setIcon)(r,"download"),a.createSpan({cls:"as-mp-preview-installs",text:ie(t.installs)});let l=s.createDiv("as-mp-preview-right");if(!t.installed)this.renderInstallButton(l,t);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",()=>{Y(this.app,"Uninstall skill",`Remove "${t.name}" from all agents?`,()=>{d.setText("Removing..."),d.disabled=!0,new N.Notice(`Removing ${t.name}...`,3e3),Be(t.name,this.settings.packageRunner).then(p=>{p.success?(new N.Notice(`Removed ${t.name}`,5e3),t.installed=!1,this.refreshList(),this.showPreview(t)):(new N.Notice(`Failed to remove ${t.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 je(t.source,t.name,t.id);if(o.empty(),c){t.content=c;let d=o.createDiv("as-mp-rendered markdown-rendered");N.MarkdownRenderer.render(this.app,c,d,"",ni)}else o.createDiv({cls:"as-mp-hint",text:"Could not load skill content."})}renderInstallButton(t,e){t.createEl("button",{cls:"as-mp-install-btn",text:"Install"}).addEventListener("click",()=>{new _t(this.app,e,this.settings,()=>{this.refreshList(),this.showPreview(e)}).open()})}};var et=require("obsidian"),U=require("fs"),Ht=require("path");function oi(){let n=[];for(let t of T){if(!t.isInstalled())continue;let e=[];for(let s of[...t.paths,...t.agentPaths])s.type==="rule"||s.type==="memory"||e.push({sp:s,label:s.type});e.length>0&&n.push({tool:t,paths:e})}return n}var li={skill:"sparkles",command:"terminal",agent:"bot"},jt=class extends et.Modal{onCreated;toolOptions;selectedTool=null;selectedPath=null;name="";step="tool";constructor(t,e){super(t),this.onCreated=e,this.toolOptions=oi()}onOpen(){this.modalEl.addClass("as-create-modal"),this.render()}render(){let{contentEl:t}=this;t.empty(),this.step==="tool"?this.renderToolStep(t):this.step==="type"?this.renderTypeStep(t):this.renderNameStep(t)}renderToolStep(t){this.renderHeader(t,"Choose tool",null);let e=t.createDiv("as-create-grid");for(let s of this.toolOptions){let i=e.createDiv("as-create-card");i.style.setProperty("--tool-color",s.tool.color);let a=i.createDiv("as-create-card-icon");L[s.tool.id]&&F(a,s.tool.id,24),i.createDiv({cls:"as-create-card-name",text:s.tool.name}),i.addEventListener("click",()=>{this.selectedTool=s,s.paths.length===1?(this.selectedPath=s.paths[0],this.step="name"):this.step="type",this.render()})}}renderTypeStep(t){if(!this.selectedTool)return;this.renderHeader(t,`${this.selectedTool.tool.name}`,()=>{this.step="tool",this.render()}),t.createDiv("as-create-subtitle").setText("What do you want to create?");let s=t.createDiv("as-create-type-grid");for(let i of this.selectedTool.paths){let a=s.createDiv("as-create-type-card");a.style.setProperty("--tool-color",this.selectedTool.tool.color);let r=li[i.label]||"file",o=a.createDiv("as-create-type-icon").createSvg("svg",{attr:{viewBox:"0 0 24 24",width:"20",height:"20",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}});r==="sparkles"?o.innerHTML='<path d="M12 3l1.5 5.5L19 10l-5.5 1.5L12 17l-1.5-5.5L5 10l5.5-1.5z"/>':r==="terminal"?o.innerHTML='<polyline points="4 17 10 11 4 5"/><line x1="12" y1="19" x2="20" y2="19"/>':r==="bot"&&(o.innerHTML='<rect x="3" y="11" width="18" height="10" rx="2"/><circle cx="12" cy="5" r="2"/><path d="M12 7v4"/><line x1="8" y1="16" x2="8" y2="16"/><line x1="16" y1="16" x2="16" y2="16"/>'),a.createDiv({cls:"as-create-type-label",text:i.label}),a.addEventListener("click",()=>{this.selectedPath=i,this.step="name",this.render()})}}renderNameStep(t){if(!this.selectedTool||!this.selectedPath)return;let e=this.selectedTool.paths.length>1?"type":"tool";this.renderHeader(t,`New ${this.selectedPath.label}`,()=>{this.step=e,this.render()});let s=t.createDiv("as-create-badge");s.style.setProperty("--tool-color",this.selectedTool.tool.color);let i=s.createSpan("as-create-badge-icon");L[this.selectedTool.tool.id]&&F(i,this.selectedTool.tool.id,14),s.createSpan({text:this.selectedTool.tool.name});let r=t.createDiv("as-create-input-wrap").createEl("input",{type:"text",placeholder:`my-${this.selectedPath.label}-name`,cls:"as-create-input"});r.value=this.name,r.addEventListener("input",()=>{this.name=r.value.trim()}),r.addEventListener("keydown",c=>{c.key==="Enter"&&this.name&&this.create()}),setTimeout(()=>r.focus(),10);let o=t.createDiv("as-create-actions").createEl("button",{text:`Create ${this.selectedPath.label}`,cls:"as-create-submit"});o.style.setProperty("--tool-color",this.selectedTool.tool.color),o.addEventListener("click",()=>this.create())}renderHeader(t,e,s){let i=t.createDiv("as-create-header");if(s){let a=i.createDiv("as-create-back");a.innerHTML='<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="15 18 9 12 15 6"/></svg>',a.addEventListener("click",s)}i.createDiv({cls:"as-create-title",text:e})}create(){if(!this.name||!this.selectedPath)return;let t=this.name.toLowerCase().replace(/\s+/g,"-").replace(/[^a-z0-9-]/g,"");if(!t){new et.Notice("Invalid name");return}let e=this.selectedPath.sp,s;if(e.pattern==="directory-with-skillmd"){let i=(0,Ht.join)(e.baseDir,t);if((0,U.existsSync)(i)){new et.Notice(`Already exists: ${t}`);return}(0,U.mkdirSync)(i,{recursive:!0}),s=(0,Ht.join)(i,"SKILL.md"),(0,U.writeFileSync)(s,["---",`name: ${this.name}`,'description: ""',"---","",`# ${this.name}`,"","## Instructions","",""].join(`
`),"utf-8")}else{if((0,U.existsSync)(e.baseDir)||(0,U.mkdirSync)(e.baseDir,{recursive:!0}),s=(0,Ht.join)(e.baseDir,`${t}.md`),(0,U.existsSync)(s)){new et.Notice(`Already exists: ${t}.md`);return}(0,U.writeFileSync)(s,["---",'description: ""',"---","",""].join(`
`),"utf-8")}new et.Notice(`Created ${this.name}`),this.close(),this.onCreated(s)}onClose(){this.contentEl.empty()}};var cs=require("obsidian"),pt=require("fs"),ds=require("path"),ps=require("os");var pe={customTags:{},favorites:[]},ue={tools:{},watchEnabled:!0,watchDebounceMs:500,deepSearchDefault:!1,deepSearchScope:"both",favorites:[],collections:{},customScanPaths:[],namingMode:"auto",projectScanEnabled:!0,projectsHomeDir:"",packageRunner:"auto"};var j=require("fs"),G=require("path"),ge=require("os"),ns=require("readline"),ci=(0,G.join)((0,ge.homedir)(),".claude"),he=(0,G.join)(ci,"projects"),di=5*1024*1024,me=500;function pi(n){let t=(0,ge.homedir)().split(G.sep).filter(Boolean),e=t.join("-"),s=n;if(s.startsWith(e+"-"))s=s.slice(e.length+1);else if(s.startsWith("-")){s=s.slice(1);let a=t.join("-")+"-";s.startsWith(a)&&(s=s.slice(a.length))}let i=s.split("-").filter(Boolean);return i.length<=2?i.join("-")||"root":i.slice(-2).join("-")}function Ft(n){if(typeof n=="string")return n;if(Array.isArray(n)){let t=[];for(let e of n)if(typeof e=="object"&&e!==null){let s=e;s.type==="text"&&typeof s.text=="string"&&t.push(s.text)}return t.join(`
`)}return""}function as(n){if(!Array.isArray(n))return[];let t=[];for(let e of n)if(typeof e=="object"&&e!==null){let s=e;s.type==="tool_use"&&typeof s.name=="string"&&t.push(s.name)}return t}function ui(n){let t=[],e="",s="";for(let i of n)try{let a=JSON.parse(i),r=a.timestamp;if(r&&(e||(e=r),s=r),a.type==="user"){let l=a.message;if(!l)continue;let o=Ft(l.content);o&&t.push({role:"human",text:o,timestamp:r||""})}if(a.type==="assistant"){let l=a.message;if(!l)continue;let o=Ft(l.content),c=as(l.content);o&&t.push({role:"assistant",text:o,timestamp:r||"",toolCalls:c.length>0?c:void 0})}}catch{}return{messages:t,firstTimestamp:e,lastTimestamp:s}}function hi(){let n=[];if(!(0,j.existsSync)(he))return n;let t;try{t=(0,j.readdirSync)(he)}catch{return n}for(let e of t){let s=(0,G.join)(he,e);try{if(!(0,j.statSync)(s).isDirectory())continue}catch{continue}let i=pi(e),a;try{a=(0,j.readdirSync)(s).filter(r=>r.endsWith(".jsonl"))}catch{continue}for(let r of a){let l=(0,G.join)(s,r);try{let o=(0,j.statSync)(l);n.push({uuid:(0,G.basename)(r,".jsonl"),project:i,projectPath:s,filePath:l,fileSize:o.size})}catch{continue}}}return n}function mi(n){try{let e=(0,j.readFileSync)(n.filePath,"utf-8").split(`
`).filter(c=>c.trim());if(e.length===0)return null;let s=e.length>me?e.slice(0,me):e,{messages:i,firstTimestamp:a,lastTimestamp:r}=ui(s);if(i.length===0)return null;let l=i.find(c=>c.role==="human"),o=l?l.text.slice(0,120).replace(/\n/g," "):"(empty conversation)";return{id:n.uuid,uuid:n.uuid,project:n.project,projectPath:n.projectPath,title:o,messages:i,messageCount:i.length,firstTimestamp:a,lastTimestamp:r,tags:[],customTags:[],isFavorite:!1,filePath:n.filePath}}catch{return null}}async function gi(n){return new Promise(t=>{let e=[],s="",i="",a=0,r=(0,ns.createInterface)({input:(0,j.createReadStream)(n.filePath,{encoding:"utf-8"}),crlfDelay:Number.POSITIVE_INFINITY});r.on("line",l=>{if(l.trim()){if(a++,a>me){r.close();return}try{let o=JSON.parse(l),c=o.timestamp;if(c&&(s||(s=c),i=c),o.type==="user"){let d=o.message;if(!d)return;let p=Ft(d.content);p&&e.push({role:"human",text:p,timestamp:c||""})}if(o.type==="assistant"){let d=o.message;if(!d)return;let p=Ft(d.content),h=as(d.content);p&&e.push({role:"assistant",text:p,timestamp:c||"",toolCalls:h.length>0?h:void 0})}}catch{}}}),r.on("close",()=>{if(e.length===0){t(null);return}let l=e.find(c=>c.role==="human"),o=l?l.text.slice(0,120).replace(/\n/g," "):"(empty conversation)";t({id:n.uuid,uuid:n.uuid,project:n.project,projectPath:n.projectPath,title:o,messages:e,messageCount:e.length,firstTimestamp:s,lastTimestamp:i,tags:[],customTags:[],isFavorite:!1,filePath:n.filePath})}),r.on("error",()=>t(null))})}async function rs(){let n=hi(),t=[],e=20;n.sort((s,i)=>i.fileSize-s.fileSize);for(let s=0;s<n.length;s+=e){let i=n.slice(s,s+e),a=await Promise.all(i.map(r=>r.fileSize>di?gi(r):Promise.resolve(mi(r))));for(let r of a)r&&t.push(r)}return t.sort((s,i)=>(i.lastTimestamp||"").localeCompare(s.lastTimestamp||"")),t}var vi=[{tag:"react",patterns:[/\breact\b/i,/\.tsx\b/,/\.jsx\b/,/usestate|useeffect|useref/i]},{tag:"react-native",patterns:[/react.native/i,/\bexpo\b/i,/react-navigation/i]},{tag:"nextjs",patterns:[/next\.js/i,/\bnextjs\b/i,/next\.config/i]},{tag:"vue",patterns:[/\bvue\b/i,/\.vue\b/,/vuex|pinia/i]},{tag:"angular",patterns:[/\bangular\b/i,/\.component\.ts/i]},{tag:"svelte",patterns:[/\bsvelte\b/i,/\.svelte\b/]},{tag:"typescript",patterns:[/typescript/i,/tsconfig/i,/\.tsx\b/]},{tag:"javascript",patterns:[/javascript/i,/\.js\b/,/\.mjs\b/]},{tag:"python",patterns:[/\bpython\b/i,/\.py\b/,/\bpip\b/i,/django|flask|fastapi/i]},{tag:"rust",patterns:[/\brust\b/i,/\.rs\b/,/cargo\.toml/i]},{tag:"go",patterns:[/\bgolang\b/i,/\.go\b/,/go\.mod/i]},{tag:"java",patterns:[/\bjava\b/i,/\.java\b/,/gradle|maven/i]},{tag:"csharp",patterns:[/\bc#\b/i,/\.cs\b/,/unity|dotnet/i]},{tag:"swift",patterns:[/\bswift\b/i,/\.swift\b/,/swiftui/i]},{tag:"nestjs",patterns:[/nestjs/i,/\bnest\b/i,/@nestjs\//]},{tag:"tailwind",patterns:[/tailwind/i,/tailwindcss/i]},{tag:"css",patterns:[/\.css\b/,/\.scss\b/,/\.sass\b/,/styled-components/i]},{tag:"node",patterns:[/node\.js/i,/\bnodejs\b/i,/package\.json/i,/\bnpm\b/i]},{tag:"docker",patterns:[/\bdocker\b/i,/dockerfile/i,/docker-compose/i]},{tag:"sql",patterns:[/\bsql\b/i,/postgres|mysql|sqlite/i,/prisma|typeorm|sequelize/i]},{tag:"mongodb",patterns:[/\bmongo\b/i,/mongodb/i,/mongoose/i]},{tag:"graphql",patterns:[/graphql/i,/\.graphql\b/,/apollo/i]},{tag:"git",patterns:[/\bgit\s+(commit|push|pull|merge|rebase|checkout|branch)/i]},{tag:"unity",patterns:[/\bunity\b/i,/gameobject|monobehaviour/i,/\.unity\b/]},{tag:"blender",patterns:[/\bblender\b/i,/\.blend\b/,/bpy\./i]},{tag:"threejs",patterns:[/three\.js/i,/threejs/i,/\br3f\b/i,/react-three/i]},{tag:"aws",patterns:[/\baws\b/i,/lambda|s3|ec2|dynamodb/i]},{tag:"firebase",patterns:[/firebase/i,/firestore/i]},{tag:"testing",patterns:[/\bjest\b/i,/\bvitest\b/i,/\.test\.|\.spec\./i,/testing/i]}],fi=[{tag:"bug-fix",patterns:[/\bfix\b/i,/\bbug\b/i,/\berror\b/i,/broken/i,/not working/i,/no funciona/i,/arregl/i]},{tag:"feature",patterns:[/\badd\b/i,/\bcreate\b/i,/\bimplement\b/i,/\bnew\b/i,/agreg/i,/crea /i]},{tag:"refactor",patterns:[/refactor/i,/restructur/i,/reorganiz/i,/clean.?up/i]},{tag:"styling",patterns:[/\bcss\b/i,/\bstyle\b/i,/\bdesign\b/i,/layout/i,/responsive/i,/color/i,/estilo/i]},{tag:"config",patterns:[/config/i,/setup/i,/install/i,/\.env\b/i,/configur/i]},{tag:"api",patterns:[/\bapi\b/i,/endpoint/i,/fetch|axios/i,/request/i,/rest\b/i]},{tag:"auth",patterns:[/auth/i,/login/i,/password/i,/token/i,/session/i,/jwt/i]},{tag:"database",patterns:[/database/i,/migration/i,/schema/i,/seed/i,/query/i]},{tag:"deployment",patterns:[/deploy/i,/ci.?cd/i,/pipeline/i,/production/i,/vercel|netlify|heroku/i]},{tag:"documentation",patterns:[/\bdocs?\b/i,/readme/i,/documentation/i,/comment/i]},{tag:"performance",patterns:[/performance/i,/optimi[zs]/i,/slow/i,/fast/i,/cache/i,/lazy/i]},{tag:"ui-ux",patterns:[/\bui\b/i,/\bux\b/i,/component/i,/button|modal|dialog|form/i,/animation/i]}];function bi(n,t){let e=new RegExp(t.source,t.flags.includes("g")?t.flags:t.flags+"g"),s=n.match(e);return s?s.length:0}function os(n,t,e=1){let s=[];for(let i of t){let a=0;for(let r of i.patterns)a+=bi(n,r);a>=e&&s.push(i.tag)}return s}function Si(n){let t=new Set;n.project&&n.project!=="root"&&t.add(n.project);let s=n.messages.filter(r=>r.role==="human").slice(0,5).map(r=>r.text.replace(/<system-reminder>[\s\S]*?<\/system-reminder>/g,"")).join(" "),a=n.messages.filter(r=>r.role==="assistant").flatMap(r=>r.toolCalls||[]);for(let r of os(s,vi,3))t.add(r);for(let r of os(s,fi,2))t.add(r);return a.some(r=>r.includes("mcp__blender"))&&t.add("blender"),a.some(r=>r.includes("mcp-unity")||r.includes("mcp__mcp-unity"))&&t.add("unity"),Array.from(t).sort()}function ls(n){for(let t of n)t.tags=Si(t)}var ve=(0,ds.join)((0,ps.homedir)(),".claude","agentfiles-conversations.json"),Rt=class extends cs.Events{items=[];_filter={kind:"all-conversations"};_sort="date";_dateRange="today";_activeTags=[];_searchQuery="";_loading=!1;tagData={...pe};get filter(){return this._filter}get sort(){return this._sort}get dateRange(){return this._dateRange}get activeTags(){return this._activeTags}get searchQuery(){return this._searchQuery}get loading(){return this._loading}get allItems(){return this.items}get filteredItems(){let t=this.items;switch(this._filter.kind){case"conversation-project":t=t.filter(e=>e.project===this._filter.project);break;case"conversation-tag":t=t.filter(e=>e.tags.includes(this._filter.tag)||e.customTags.includes(this._filter.tag));break;case"conversation-favorites":t=t.filter(e=>e.isFavorite);break}if(this._dateRange!=="all"){let e=Date.now(),s={today:1,"7d":7,"30d":30,"90d":90,"180d":180}[this._dateRange],i=e-s*864e5;t=t.filter(a=>new Date(a.lastTimestamp).getTime()>=i)}if(this._activeTags.length>0&&(t=t.filter(e=>{let s=[...e.tags,...e.customTags];return this._activeTags.every(i=>s.includes(i))})),this._searchQuery){let e=this._searchQuery.toLowerCase();t=t.filter(s=>s.title.toLowerCase().includes(e)||s.project.toLowerCase().includes(e)||s.tags.some(i=>i.includes(e))||s.customTags.some(i=>i.includes(e))||s.messages.some(i=>i.text.toLowerCase().includes(e)))}return this._sort==="messages"&&(t=[...t].sort((e,s)=>s.messageCount-e.messageCount)),t}getProjectCounts(){let t=new Map;for(let e of this.items)t.set(e.project,(t.get(e.project)||0)+1);return t}getAllTags(){let t=new Map;for(let e of this.items)for(let s of[...e.tags,...e.customTags])t.set(s,(t.get(s)||0)+1);return t}refresh(){this._loading=!0,this.trigger("conversations-updated"),this.refreshAsync()}async refreshAsync(){this.loadTagData(),this.items=await rs(),ls(this.items),this.applyTagData(),this._loading=!1,this.trigger("conversations-updated")}loadTagData(){try{(0,pt.existsSync)(ve)&&(this.tagData=JSON.parse((0,pt.readFileSync)(ve,"utf-8")))}catch{this.tagData={...pe}}}saveTagData(){try{(0,pt.writeFileSync)(ve,JSON.stringify(this.tagData,null,2),"utf-8")}catch{}}applyTagData(){for(let t of this.items)t.customTags=this.tagData.customTags[t.uuid]||[],t.isFavorite=this.tagData.favorites.includes(t.uuid)}setFilter(t){this._filter=t,this.trigger("conversations-updated")}setSort(t){this._sort=t,this.trigger("conversations-updated")}setDateRange(t){this._dateRange=t,this.trigger("conversations-updated")}toggleTag(t){let e=this._activeTags.indexOf(t);e>=0?this._activeTags.splice(e,1):this._activeTags.push(t),this.trigger("conversations-updated")}clearTags(){this._activeTags=[],this.trigger("conversations-updated")}setSearch(t){this._searchQuery=t,this.trigger("conversations-updated")}toggleFavorite(t){let e=this.tagData.favorites.indexOf(t);e>=0?this.tagData.favorites.splice(e,1):this.tagData.favorites.push(t),this.saveTagData();let s=this.items.find(i=>i.uuid===t);s&&(s.isFavorite=!s.isFavorite),this.trigger("conversations-updated")}addCustomTag(t,e){this.tagData.customTags[t]||(this.tagData.customTags[t]=[]);let s=this.tagData.customTags[t];s.includes(e)||s.push(e),this.saveTagData();let i=this.items.find(a=>a.uuid===t);i&&!i.customTags.includes(e)&&i.customTags.push(e),this.trigger("conversations-updated")}removeCustomTag(t,e){this.tagData.customTags[t]&&(this.tagData.customTags[t]=this.tagData.customTags[t].filter(i=>i!==e)),this.saveTagData();let s=this.items.find(i=>i.uuid===t);s&&(s.customTags=s.customTags.filter(i=>i!==e)),this.trigger("conversations-updated")}getItem(t){return this.items.find(e=>e.uuid===t)}};var J=require("obsidian");function ki(n){return n.replace(/<[^>]+>/g,"").replace(/\[Image #?\d*\]/gi,"").replace(/\s+/g," ").trim()||"(untitled)"}function yi(n){if(!n)return"";let t=Date.now()-new Date(n).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 wi(n){return n?new Date(n).toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"}):""}var Ot=class{containerEl;store;onSelect;selectedUuid=null;inputEl=null;toolbarEl=null;listEl=null;constructor(t,e,s){this.containerEl=t,this.store=e,this.onSelect=s}setSelected(t){this.selectedUuid=t}render(){this.inputEl||(this.containerEl.empty(),this.containerEl.addClass("as-list"),this.searchRowEl=this.containerEl.createDiv("as-search"),this.inputEl=this.searchRowEl.createEl("input",{type:"text",placeholder:"Search conversations...",cls:"as-search-input"}),this.inputEl.addEventListener("input",()=>{this.store.setSearch(this.inputEl.value)}),this.toolbarEl=this.containerEl.createDiv("as-conv-toolbar"),this.listEl=this.containerEl.createDiv("as-list-items as-conv-list")),this.inputEl.value=this.store.searchQuery,this.renderSearchActions(),this.renderTagStrip(),this.renderList()}searchRowEl=null;searchActionsEl=null;outsideClickCleanup=null;dateDropdownEl=null;tagDropdownEl=null;openDropdown=null;closeAllDropdowns(){this.openDropdown=null,this.dateDropdownEl?.removeClass("is-open"),this.tagDropdownEl?.removeClass("is-open"),this.outsideClickCleanup&&(this.outsideClickCleanup(),this.outsideClickCleanup=null)}toggleDropdown(t,e){if(this.openDropdown===t){this.closeAllDropdowns();return}this.closeAllDropdowns(),this.openDropdown=t,(t==="date"?this.dateDropdownEl:this.tagDropdownEl)?.addClass("is-open");let i=a=>{e.contains(a.target)||this.closeAllDropdowns()};setTimeout(()=>document.addEventListener("click",i),0),this.outsideClickCleanup=()=>document.removeEventListener("click",i)}renderSearchActions(){if(!this.searchRowEl)return;this.searchActionsEl&&this.searchActionsEl.remove(),this.searchActionsEl=this.searchRowEl.createDiv("as-conv-search-actions");let t=this.searchActionsEl.createDiv("as-conv-dropdown-wrap"),e=t.createEl("button",{cls:"as-conv-icon-btn"}),s=e.createSpan("as-conv-icon-btn-icon");(0,J.setIcon)(s,"calendar"),this.dateDropdownEl=t.createDiv("as-conv-dropdown"),this.openDropdown==="date"&&this.dateDropdownEl.addClass("is-open");let i=[{label:"Today",value:"today"},{label:"Last 7 days",value:"7d"},{label:"Last 30 days",value:"30d"},{label:"Last 90 days",value:"90d"},{label:"Last 6 months",value:"180d"},{label:"All time",value:"all"}];for(let k of i){let C=this.store.dateRange===k.value,M=this.dateDropdownEl.createDiv(`as-conv-dropdown-item ${C?"is-active":""}`),V=M.createSpan("as-conv-dropdown-check");C&&(0,J.setIcon)(V,"check"),M.createSpan({cls:"as-conv-dropdown-item-label",text:k.label}),M.addEventListener("click",Z=>{Z.stopPropagation(),this.store.setDateRange(k.value),this.closeAllDropdowns()})}e.addEventListener("click",k=>{k.stopPropagation(),this.toggleDropdown("date",t)});let a=this.store.getAllTags(),r=this.store.activeTags,l=a.size>0,o=this.searchActionsEl.createDiv("as-conv-dropdown-wrap"),c=o.createEl("button",{cls:"as-conv-icon-btn"});l||c.addClass("is-disabled"),r.length>0&&c.addClass("has-active");let d=c.createSpan("as-conv-icon-btn-icon");if((0,J.setIcon)(d,"tag"),this.tagDropdownEl=o.createDiv("as-conv-dropdown"),this.openDropdown==="tag"&&this.tagDropdownEl.addClass("is-open"),l){if(r.length>0){let C=this.tagDropdownEl.createDiv("as-conv-dropdown-item as-conv-dropdown-clear"),M=C.createSpan("as-conv-dropdown-item-icon");(0,J.setIcon)(M,"x"),C.createSpan({text:"Clear filters"}),C.addEventListener("click",V=>{V.stopPropagation(),this.store.clearTags()})}let k=Array.from(a.entries()).sort((C,M)=>M[1]-C[1]).slice(0,25);for(let[C,M]of k){let V=r.includes(C),Z=this.tagDropdownEl.createDiv(`as-conv-dropdown-item ${V?"is-active":""}`),Ss=Z.createSpan("as-conv-dropdown-check");V&&(0,J.setIcon)(Ss,"check"),Z.createSpan({cls:"as-conv-dropdown-item-label",text:C}),Z.createSpan({cls:"as-conv-dropdown-item-count",text:String(M)}),Z.addEventListener("click",ks=>{ks.stopPropagation(),this.store.toggleTag(C)})}}c.addEventListener("click",k=>{k.stopPropagation(),l&&this.toggleDropdown("tag",o)});let p=this.store.sort==="date"?"messages":"date",h=this.searchActionsEl.createEl("button",{cls:"as-conv-icon-btn"}),m=h.createSpan("as-conv-icon-btn-icon");(0,J.setIcon)(m,this.store.sort==="date"?"clock":"hash"),h.setAttribute("aria-label",`Sort by ${p}`),h.addEventListener("click",()=>this.store.setSort(p))}renderTagStrip(){if(!this.toolbarEl)return;this.toolbarEl.empty();let t=this.store.activeTags,e=this.store.filteredItems.length;if(t.length===0&&e===this.store.allItems.length)return;let s=this.toolbarEl.createDiv("as-conv-tag-strip");s.createSpan({cls:"as-conv-result-count",text:`${e} results`});for(let i of t){let a=s.createEl("button",{cls:"as-conv-tag-pill is-active"});a.createSpan({text:i});let r=a.createSpan("as-conv-tag-pill-x");(0,J.setIcon)(r,"x"),a.addEventListener("click",()=>this.store.toggleTag(i))}if(t.length>0){let i=s.createEl("button",{cls:"as-conv-tag-pill as-conv-tag-clear"});i.createSpan({text:"Clear all"}),i.addEventListener("click",()=>this.store.clearTags())}}renderList(){if(!this.listEl)return;if(this.listEl.empty(),this.store.loading){this.listEl.createDiv({cls:"as-list-empty",text:"Loading conversations..."});return}let t=this.store.filteredItems;if(t.length===0){this.listEl.createDiv({cls:"as-list-empty",text:"No conversations found"});return}let e="";for(let s of t){let i=wi(s.lastTimestamp);i!==e&&(e=i,this.listEl.createDiv({cls:"as-conv-date-header",text:i})),this.renderCard(this.listEl,s)}}renderCard(t,e){let s=t.createDiv("as-skill-card");e.uuid===this.selectedUuid&&s.addClass("is-selected");let i=s.createDiv("as-skill-header"),a=ki(e.title),r=a.length>60?a.slice(0,60)+"...":a;if(i.createSpan({cls:"as-skill-name",text:r}),e.isFavorite){let c=i.createSpan("as-skill-star");(0,J.setIcon)(c,"star")}let l=[e.project,yi(e.lastTimestamp),`${e.messageCount} msgs`].filter(Boolean).join(" \xB7 ");s.createDiv({cls:"as-skill-desc",text:l});let o=[...e.tags,...e.customTags].filter(c=>c!==e.project);if(o.length>0){let c=s.createDiv("as-skill-meta"),d=3;for(let p of o.slice(0,d)){let h=e.customTags.includes(p);c.createSpan({cls:`as-conv-tag ${h?"as-conv-tag-custom":""}`,text:p})}o.length>d&&c.createSpan({cls:"as-conv-tag as-conv-tag-more",text:`+${o.length-d}`})}s.addEventListener("click",()=>{this.selectedUuid=e.uuid,this.onSelect(e)})}};var D=require("obsidian"),ut=require("fs"),ft=require("path");function fe(n){return n?new Date(n).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):""}function Di(n){return n.replace(/[<>:"/\\|?*]/g,"").replace(/\.{2,}/g,"").replace(/\s+/g,"-").slice(0,80)}function us(n,t){let e=n.firstTimestamp?new Date(n.firstTimestamp).toISOString().slice(0,10):"unknown-date",s=Di(n.title.slice(0,60));return`${t}/Claude Sessions/${e}-${s}.md`}function hs(n){let{selectedMessages:t,conversation:e}=n,s=[...e.tags,...e.customTags],i=s.map(r=>`"${r}"`).join(", "),a=[];if(a.push("---"),a.push(`tags: [claude-session, ${i}]`),a.push(`session: ${e.uuid}`),a.push(`project: ${e.project}`),a.push(`date: ${e.firstTimestamp?new Date(e.firstTimestamp).toISOString().slice(0,10):"unknown"}`),a.push(`messages: ${e.messageCount}`),a.push("---"),a.push(""),a.push(`# ${e.title.slice(0,100)}`),a.push(""),a.push("## Context"),a.push(`- **Project:** ${e.project}`),a.push(`- **Started:** ${fe(e.firstTimestamp)}`),a.push(`- **Last activity:** ${fe(e.lastTimestamp)}`),a.push(`- **Messages:** ${e.messageCount}`),s.length>0&&a.push(`- **Tags:** ${s.map(r=>`\`${r}\``).join(" ")}`),a.push(""),t.length>0){a.push("## Key Snippets"),a.push("");for(let r of t){let l=r.role==="human"?"You":"Claude",o=fe(r.timestamp);a.push(`### ${l} ${o?`(${o})`:""}`),a.push(""),r.role==="human"?a.push(`> ${r.text.replace(/\n/g,`
> `)}`):a.push(r.text),a.push("")}}return a.push("## Resume"),a.push(""),a.push("```bash"),a.push(`claude --resume ${e.uuid}`),a.push("```"),a.join(`
`)}function Ci(n){return n?new Date(n).toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):""}var Nt=class{containerEl;store;app;vaultPath;currentItem=null;selectedMessages=new Set;visibleCount=20;renderComponent=new D.Component;constructor(t,e,s,i){this.containerEl=t,this.store=e,this.app=s,this.vaultPath=i}show(t){this.currentItem=t,this.selectedMessages.clear(),this.visibleCount=20,this.render()}clear(){this.currentItem=null,this.containerEl.empty(),this.containerEl.addClass("as-detail");let t=this.containerEl.createDiv("as-detail-empty");(0,D.setIcon)(t.createDiv("as-detail-empty-icon"),"message-circle"),t.createDiv({text:"Select a conversation to view"})}render(){this.containerEl.empty(),this.containerEl.addClass("as-detail");let t=this.currentItem;if(!t)return this.clear();this.renderToolbar(t),this.renderBody(t)}renderToolbar(t){let e=this.containerEl.createDiv("as-detail-toolbar"),s=e.createDiv("as-toolbar-top"),i=s.createDiv("as-toolbar-left"),a=t.title.length>100?t.title.slice(0,100)+"...":t.title;i.createSpan({cls:"as-detail-title",text:a});let r=s.createDiv("as-toolbar-right"),l=r.createEl("button",{cls:"as-toolbar-btn",attr:{"aria-label":"Toggle favorite"}});(0,D.setIcon)(l,t.isFavorite?"star":"star-off"),l.addEventListener("click",()=>{this.store.toggleFavorite(t.uuid),this.render()});let o=r.createEl("button",{cls:"as-toolbar-btn",attr:{"aria-label":"Copy resume command"}});(0,D.setIcon)(o,"terminal"),o.addEventListener("click",()=>{navigator.clipboard.writeText(`claude --resume ${t.uuid}`),new D.Notice("Resume command copied!",3e3)});let c=r.createEl("button",{cls:"as-toolbar-btn as-toolbar-btn-primary",attr:{"aria-label":"Save to vault"}});(0,D.setIcon)(c,"download"),c.addEventListener("click",()=>this.saveToVault(t));let d=e.createDiv("as-detail-meta-bar");d.createSpan({cls:"as-meta-item",text:t.project}),d.createSpan({cls:"as-meta-item",text:`${t.messageCount} messages`}),t.firstTimestamp&&d.createSpan({cls:"as-meta-item",text:new Date(t.firstTimestamp).toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})});let p=[...t.tags,...t.customTags];if(p.length>0){let h=e.createDiv("as-conv-detail-tags");for(let k of p){let C=t.customTags.includes(k),M=h.createSpan({cls:`as-conv-tag ${C?"as-conv-tag-custom":""}`,text:k});if(C){let V=M.createSpan("as-conv-tag-remove");(0,D.setIcon)(V,"x"),V.addEventListener("click",Z=>{Z.stopPropagation(),this.store.removeCustomTag(t.uuid,k),this.render()})}}let m=h.createSpan("as-conv-tag as-conv-tag-add");(0,D.setIcon)(m,"plus"),m.addEventListener("click",()=>this.promptAddTag(t))}}renderBody(t){let e=this.containerEl.createDiv("as-detail-body");if(this.selectedMessages.size>0){let o=e.createDiv("as-conv-selection-bar");o.createSpan({text:`${this.selectedMessages.size} message${this.selectedMessages.size>1?"s":""} selected`}),o.createEl("button",{cls:"as-conv-save-selected-btn",text:"Save selected to vault"}).addEventListener("click",()=>this.saveToVault(t))}let s=20,i=t.messages.length,a=t.messages.slice(0,this.visibleCount);for(let o=0;o<a.length;o++)this.renderMessage(e,a[o],o);if(this.visibleCount<i){let o=i-this.visibleCount,c=Math.min(s,o),d=e.createDiv("as-conv-show-more");d.createEl("button",{text:`Show next ${c} messages`,cls:"as-conv-show-more-btn"}).addEventListener("click",()=>{this.visibleCount+=s,this.render()}),d.createEl("button",{text:`Show all ${i} messages`,cls:"as-conv-show-all-btn"}).addEventListener("click",()=>{this.visibleCount=i,this.render()})}let r=e.createDiv("as-conv-resume-section");r.createDiv({cls:"as-section-title",text:"Resume this conversation"}),r.createEl("code",{cls:"as-conv-resume-cmd",text:`claude --resume ${t.uuid}`}).addEventListener("click",()=>{navigator.clipboard.writeText(`claude --resume ${t.uuid}`),new D.Notice("Copied!",2e3)})}renderMessage(t,e,s){let i=e.role==="human",a=t.createDiv(`as-conv-msg ${i?"as-conv-msg-human":"as-conv-msg-assistant"}`);this.selectedMessages.has(s)&&a.addClass("as-conv-msg-selected");let r=a.createDiv("as-conv-msg-header"),l=r.createSpan("as-conv-msg-role-icon");(0,D.setIcon)(l,i?"user":"bot"),r.createSpan({cls:"as-conv-msg-role",text:i?"You":"Claude"}),e.timestamp&&r.createSpan({cls:"as-conv-msg-time",text:Ci(e.timestamp)});let o=r.createSpan("as-conv-msg-select");(0,D.setIcon)(o,this.selectedMessages.has(s)?"check-square":"square"),o.setAttribute("aria-label","Select message for export"),o.addEventListener("click",p=>{p.stopPropagation(),this.selectedMessages.has(s)?this.selectedMessages.delete(s):this.selectedMessages.add(s),this.render()});let c=a.createDiv("as-conv-msg-content"),d=e.text.length>2e3&&!i?e.text.slice(0,2e3)+`
*... (truncated)*`:e.text;if(D.MarkdownRenderer.render(this.app,d,c,"",this.renderComponent),e.toolCalls&&e.toolCalls.length>0){let p=a.createDiv("as-conv-msg-tools"),h=[...new Set(e.toolCalls)];for(let m of h.slice(0,5))p.createSpan({cls:"as-conv-tool-badge",text:m});h.length>5&&p.createSpan({cls:"as-conv-tool-badge",text:`+${h.length-5}`})}}promptAddTag(t){let e=this.containerEl.querySelector(".as-conv-detail-tags");if(!e)return;let s=e.querySelector(".as-conv-tag-add");if(!s)return;let i=createEl("input",{type:"text",placeholder:"Enter tag...",cls:"as-conv-tag-input"});s.replaceWith(i),i.focus();let a=!1,r=()=>{if(a)return;a=!0;let l=i.value.trim().toLowerCase().replace(/\s+/g,"-");l&&this.store.addCustomTag(t.uuid,l),this.render()};i.addEventListener("keydown",l=>{l.key==="Enter"&&r(),l.key==="Escape"&&this.render()}),i.addEventListener("blur",r)}saveToVault(t){if(this.selectedMessages.size===0){new D.Notice("Select messages to export first",3e3);return}let e=Array.from(this.selectedMessages).sort((r,l)=>r-l).map(r=>t.messages[r]).filter(Boolean),s=hs({selectedMessages:e,conversation:t,vaultPath:this.vaultPath}),i=(0,ft.resolve)(us(t,this.vaultPath));if(!i.startsWith((0,ft.resolve)(this.vaultPath))){new D.Notice("Invalid path \u2014 cannot save outside vault",5e3);return}let a=(0,ft.dirname)(i);try{(0,ut.existsSync)(a)||(0,ut.mkdirSync)(a,{recursive:!0}),(0,ut.writeFileSync)(i,s,"utf-8"),new D.Notice(`Saved to ${i.split("/").slice(-2).join("/")}`,5e3)}catch(r){new D.Notice(`Failed to save: ${r instanceof Error?r.message:String(r)}`,5e3)}}};var bt="agentfiles-view",Bt=class extends ms.ItemView{store;settings;saveSettings;sidebarPanel;listPanel;detailPanel;dashboardPanel;marketplacePanel;conversationStore=new Rt;convListPanel;convDetailPanel;sidebarEl;listEl;detailEl;dashboardEl;marketplaceEl;convListWrapperEl;convDetailWrapperEl;skillListWrapperEl;skillDetailWrapperEl;resizeHandle1;resizeHandle2;isDashboard=!1;isMarketplace=!1;isConversations=!1;updateRef=null;convUpdateRef=null;dragCleanup=null;constructor(t,e,s,i){super(t),this.store=e,this.settings=s,this.saveSettings=i}getViewType(){return bt}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.resizeHandle1=this.createResizeHandle(t,this.sidebarEl,"--as-sidebar-width",120,400),this.listEl=t.createDiv("as-panel as-panel-list"),this.resizeHandle2=this.createResizeHandle(t,this.listEl,"--as-list-width",180,600),this.detailEl=t.createDiv("as-panel as-panel-detail"),this.dashboardEl=t.createDiv("as-panel as-panel-dashboard as-hidden"),this.marketplaceEl=t.createDiv("as-panel as-panel-marketplace as-hidden"),this.skillListWrapperEl=this.listEl.createDiv("as-wrapper"),this.convListWrapperEl=this.listEl.createDiv("as-wrapper as-hidden"),this.skillDetailWrapperEl=this.detailEl.createDiv("as-wrapper"),this.convDetailWrapperEl=this.detailEl.createDiv("as-wrapper as-hidden");let e=this.app.vault.adapter.getBasePath?.()||"";this.sidebarPanel=new kt(this.sidebarEl,this.store,()=>this.toggleDashboard(),()=>this.toggleMarketplace(),()=>this.openCreateModal(),()=>this.toggleConversations(),this.conversationStore),this.listPanel=new yt(this.skillListWrapperEl,this.store,s=>this.onSelectItem(s)),this.detailPanel=new Et(this.skillDetailWrapperEl,this.store,this.settings,this.saveSettings,this),this.dashboardPanel=new Pt(this.dashboardEl,this.app),this.marketplacePanel=new $t(this.marketplaceEl,this,this.settings,()=>{this.store.refresh(this.settings)}),this.convListPanel=new Ot(this.convListWrapperEl,this.conversationStore,s=>this.onSelectConversation(s)),this.convDetailPanel=new Nt(this.convDetailWrapperEl,this.conversationStore,this.app,e),this.updateRef=this.store.on("updated",()=>this.renderAll()),this.convUpdateRef=this.conversationStore.on("conversations-updated",()=>{this.isConversations&&(this.convListPanel.render(),this.sidebarPanel.render())}),this.renderAll(),this.store.revalidate()}hideAllSpecialPanels(){this.listEl.addClass("as-hidden"),this.detailEl.addClass("as-hidden"),this.resizeHandle1.addClass("as-hidden"),this.resizeHandle2.addClass("as-hidden"),this.dashboardEl.addClass("as-hidden"),this.marketplaceEl.addClass("as-hidden")}showDefaultPanels(){this.listEl.removeClass("as-hidden"),this.detailEl.removeClass("as-hidden"),this.resizeHandle1.removeClass("as-hidden"),this.resizeHandle2.removeClass("as-hidden")}showSkillPanels(){this.skillListWrapperEl.removeClass("as-hidden"),this.skillDetailWrapperEl.removeClass("as-hidden"),this.convListWrapperEl.addClass("as-hidden"),this.convDetailWrapperEl.addClass("as-hidden")}showConversationPanels(){this.skillListWrapperEl.addClass("as-hidden"),this.skillDetailWrapperEl.addClass("as-hidden"),this.convListWrapperEl.removeClass("as-hidden"),this.convDetailWrapperEl.removeClass("as-hidden")}toggleDashboard(){this.dragCleanup?.(),this.dragCleanup=null,this.isDashboard=!this.isDashboard,this.isMarketplace=!1,this.isConversations=!1,this.hideAllSpecialPanels(),this.isDashboard?(this.dashboardEl.removeClass("as-hidden"),this.dashboardPanel.render()):(this.showDefaultPanels(),this.showSkillPanels()),this.sidebarPanel.setDashboardActive(this.isDashboard),this.sidebarPanel.setMarketplaceActive(!1),this.sidebarPanel.setConversationsActive(!1),this.sidebarPanel.render()}toggleMarketplace(){this.dragCleanup?.(),this.dragCleanup=null,this.isMarketplace=!this.isMarketplace,this.isDashboard=!1,this.isConversations=!1,this.hideAllSpecialPanels(),this.isMarketplace?(this.marketplaceEl.removeClass("as-hidden"),this.marketplacePanel.render()):(this.showDefaultPanels(),this.showSkillPanels()),this.sidebarPanel.setMarketplaceActive(this.isMarketplace),this.sidebarPanel.setDashboardActive(!1),this.sidebarPanel.setConversationsActive(!1),this.sidebarPanel.render()}toggleConversations(){this.dragCleanup?.(),this.dragCleanup=null,this.isConversations=!this.isConversations,this.isDashboard=!1,this.isMarketplace=!1,this.hideAllSpecialPanels(),this.isConversations?(this.showDefaultPanels(),this.showConversationPanels(),this.conversationStore.refresh(),this.convListPanel.render(),this.convDetailPanel.clear()):(this.showDefaultPanels(),this.showSkillPanels()),this.sidebarPanel.setConversationsActive(this.isConversations),this.sidebarPanel.setDashboardActive(!1),this.sidebarPanel.setMarketplaceActive(!1),this.sidebarPanel.render()}renderAll(){this.sidebarPanel.render(),!this.isDashboard&&!this.isMarketplace&&!this.isConversations&&(this.listPanel.render(),this.store.filteredItems.length||this.detailPanel.clear())}openCreateModal(){new jt(this.app,t=>{this.store.refresh(this.settings),setTimeout(()=>{let e=this.store.allItems.find(s=>s.filePath===t||s.realPath===t);e&&this.onSelectItem(e)},100)}).open()}onSelectItem(t){this.isDashboard&&this.toggleDashboard(),this.isMarketplace&&this.toggleMarketplace(),this.isConversations&&this.toggleConversations(),this.listPanel.setSelected(t.id),this.listPanel.render(),this.detailPanel.show(t)}onSelectConversation(t){this.convListPanel.setSelected(t.uuid),this.convListPanel.render(),this.convDetailPanel.show(t)}createResizeHandle(t,e,s,i,a){let r=t.createDiv("as-resize-handle"),l=0,o=0,c=p=>{let h=Math.min(a,Math.max(i,o+(p.clientX-l)));t.style.setProperty(s,`${h}px`)},d=()=>{r.removeClass("is-dragging"),document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",d),this.dragCleanup=null};return r.addEventListener("mousedown",p=>{p.preventDefault(),l=p.clientX,o=parseInt(t.style.getPropertyValue(s))||e.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),this.convUpdateRef&&this.conversationStore.offref(this.convUpdateRef)}};var gs=require("obsidian"),zt=require("path"),ht=require("fs"),vs=require("os");var be=(0,zt.join)((0,vs.homedir)(),".skillkit","enrichment-cache.json");function Ei(){if(!(0,ht.existsSync)(be))return null;try{return JSON.parse((0,ht.readFileSync)(be,"utf-8"))}catch{return null}}function xi(n){try{(0,ht.writeFileSync)(be,JSON.stringify(n),"utf-8")}catch{}}var Wt=class extends gs.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 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;case"project":t=t.filter(e=>re(e.filePath,this._projectsHomeDir)===this._filter.project);break}if(this._searchQuery){let e=this._searchQuery.toLowerCase(),s=this._deepSearch&&(this._deepSearchScope==="description"||this._deepSearchScope==="both"),i=this._deepSearch&&(this._deepSearchScope==="content"||this._deepSearchScope==="both");t=t.filter(a=>a.name.toLowerCase().includes(e)||s&&a.description.toLowerCase().includes(e)||i&&a.content.toLowerCase().includes(e))}return t.sort((e,s)=>e.name.localeCompare(s.name))}getItem(t){return this.items.get(t)}get hasSkillkit(){return $()}_enrichGeneration=0;refresh(t){this._projectsHomeDir=t.projectsHomeDir,this.items=Xe(t),$()&&this.applyEnrichmentFromCache(),this.trigger("updated")}revalidate(){$()&&this.revalidateAsync()}applyEnrichmentFromCache(){let t=Ei();if(!t)return;let e=new Map(Object.entries(t.stats)),s=new Map(Object.entries(t.conflicts));this.applyEnrichment(e,s,t.warnings)}async revalidateAsync(){let t=++this._enrichGeneration,[e,s,i]=await Promise.all([Ee(),xe(),Te()]);t===this._enrichGeneration&&(this.applyEnrichment(e,s,i),this.trigger("updated"),xi({stats:Object.fromEntries(e),conflicts:Object.fromEntries(s),warnings:i}))}applyEnrichment(t,e,s){let 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(zt.sep).slice(-2,-1)[0],d=o.name.toLowerCase().replace(/\s+/g,"-"),p=t.get(o.name)||t.get(c)||t.get(d);p?(p.isHeavy=o.content.length>5e3,o.usage=p):o.usage={uses:0,lastUsed:null,daysSinceUsed:null,isStale:!0,isHeavy:o.content.length>5e3};let h=o.content.split(`
`).length,m=o.description.length;o.warnings={oversized:i.has(o.name)||h>500,longDesc:a.has(o.name)||m>1024,lineCount:r.get(o.name)??h,descChars:l.get(o.name)??m},o.conflicts=e.get(o.name)||e.get(c)||[]}}setFilter(t){this._filter=t,this.trigger("updated")}setSearch(t){this._searchQuery=t,this.trigger("updated")}setDeepSearch(t){this._deepSearch!==t&&(this._deepSearch=t,this.trigger("updated"))}setDeepSearchScope(t){this._deepSearchScope!==t&&(this._deepSearchScope=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}getProjectCounts(){let t=new Map;for(let e of this.items.values()){let s=re(e.filePath,this._projectsHomeDir);t.set(s,(t.get(s)||0)+1)}return t}};var fs=require("fs"),Ut=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,fs.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 P=require("obsidian");var Vt=class extends P.PluginSettingTab{plugin;constructor(t,e){super(t,e),this.plugin=e}display(){let{containerEl:t}=this;t.empty(),new P.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 P.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 P.Setting(t).setName("Display names").setDesc("How skill and command names are displayed in the list").addDropdown(e=>e.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 P.Setting(t).setName("Deep search by default").setDesc("Enable deep search when the view opens (can always be toggled in the search bar)").addToggle(e=>e.setValue(this.plugin.settings.deepSearchDefault??!1).onChange(async s=>{this.plugin.settings.deepSearchDefault=s,await this.plugin.saveSettings()})),new P.Setting(t).setName("Deep search scope").setDesc("What to include when deep search is enabled").addDropdown(e=>e.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 P.Setting(t).setName("Marketplace").setHeading(),new P.Setting(t).setName("Package runner").setDesc("Command used to install skills from the marketplace").addDropdown(e=>e.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 P.Setting(t).setName("Project scanning").setHeading(),new P.Setting(t).setName("Scan projects").setDesc("Scan all directories under the projects home folder for project-level skills").addToggle(e=>e.setValue(this.plugin.settings.projectScanEnabled).onChange(async s=>{this.plugin.settings.projectScanEnabled=s,await this.plugin.saveSettings(),this.plugin.refreshStore(),this.plugin.restartWatcher()})),new P.Setting(t).setName("Projects home directory").setDesc("Root directory to scan for project-level skills. Leave empty for home directory (~).").addText(e=>e.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 P.Setting(t).setName("Tools").setHeading();for(let e of T){let s=e.isInstalled(),i=this.plugin.settings.tools[e.id]||{enabled:!0,customPaths:[]};new P.Setting(t).setName(e.name).setDesc(s?"Installed":"Not detected").addToggle(a=>a.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 Gt=class extends bs.Plugin{settings=ue;store=new Wt;watcher=null;async onload(){await this.loadSettings(),this.addVaultPath(),this.registerView(bt,t=>new Bt(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 Vt(this.app,this)),this.store.setDeepSearch(this.settings.deepSearchDefault??!1),this.store.setDeepSearchScope(this.settings.deepSearchScope??"both"),setTimeout(()=>{this.refreshStore(),this.startWatcher()},0)}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 Ut(this.settings.watchDebounceMs,()=>this.refreshStore()),this.watcher.watchPaths(Ye(this.settings)))}stopWatcher(){this.watcher&&(this.watcher.close(),this.watcher=null)}restartWatcher(){this.stopWatcher(),this.startWatcher()}async activateView(){let t=this.app.workspace.getLeavesOfType(bt);if(t.length>0){await this.app.workspace.revealLeaf(t[0]);return}let e=this.app.workspace.getLeaf("tab");await e.setViewState({type:bt,active:!0}),await this.app.workspace.revealLeaf(e)}async loadSettings(){this.settings=Object.assign({},ue,await this.loadData())}async saveSettings(){await this.saveData(this.settings)}};