@easbot/skills 0.3.20 → 0.3.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,7 @@
3
3
  `)).digest("hex")},w=await C(d),$=await C(h);if(w&&$&&w===$){let S=(await chunkHOK3SUH4_cjs.Y(p,chunkHOK3SUH4_cjs.O(e,s),n))?.entry.computedHash;if(S)return {ok:true,hash:S,skipped:true}}try{await l(h,{recursive:!0,force:!0}),await utils.Filesystem.cp(d,h);}catch{return {ok:false}}let c=await gl(h);if(!c)return {ok:false};let g=e.type==="local"?e.localPath??e.url:utils.Filesystem.normalize(t);try{await chunkHOK3SUH4_cjs.aa([{skillName:n,parsed:e,sourceKey:p,sourcePath:g,storePath:u,skillPath:s,computedHash:c}]);}catch{}return {ok:true,hash:c}}function Ut(e,t,s){return e||!t||!s?true:t!==s}function Gn(e,t={}){let s={};t.cwd&&(s.cwd=t.cwd);let n=[];for(let l=0;l<e.length;l++){let o=e[l];if(o==="-g"||o==="--global")s.global=true;else if(o==="-p"||o==="--project")s.project=true;else if(o==="-y"||o==="--yes")s.yes=true;else if(o==="--all")s.all=true;else if(o==="--json")s.json=true;else if(o==="--force")s.force=true;else if(o==="-a"||o==="--agent")for(s.agent=s.agent??[];l+1<e.length&&!e[l+1].startsWith("-");)s.agent.push(e[++l]);else if(o==="-s"||o==="--skill")for(s.skills=s.skills??[];l+1<e.length&&!e[l+1].startsWith("-");)s.skills.push(e[++l]);else o&&!o.startsWith("-")&&n.push(o);}return n.length>0&&(s.skills=n),s}function qr(e){let t=e||process.cwd();return fs$1.existsSync(path.join(t,"skills-lock.json"))}async function Kn(e){if(e.skills&&e.skills.length>0)return e.global?"global":e.project?"project":"both";if(e.global&&e.project)return "both";if(e.global)return "global";if(e.project)return "project";if(e.yes||!process.stdin.isTTY)return "both";let t=await terminal.Prompt.select({message:"Update scope",options:[{value:"project",label:"Project",hint:"Update skills in current directory (committed with your project)"},{value:"global",label:"Global",hint:"Update skills in home directory (available across all projects)"},{value:"both",label:"Both",hint:"Update all skills (project + global)"}]});return terminal.Prompt.isCancel(t)&&terminal.Prompt.cancel("Cancelled"),t}function fl(e,t){if(!t||t.length===0)return true;let s=e.toLowerCase();return t.some(n=>{let l=n.toLowerCase();return l==="*"?true:l===s})}function Hn(e){return e.sourceType==="local"?"Local path":e.sourceType==="git"?"Git URL":e.sourceType==="well-known"?"Well-known skill":e.computedHash?e.skillPath?"No version tracking":"No skill path recorded":"Private or deleted repo"}function Wn(e){let t=e.sourceUrl;if(e.sourceType==="well-known"){let s=t.indexOf("/.well-known/");s!==-1&&(t=t.slice(0,s));}return as(t,e.ref)}function Nt(e){if(e.length===0)return;console.log(),console.log(`${a}${e.length} skill(s) cannot be checked automatically:${i}`);let t=new Map;for(let s of e){let n=Wn(s),l=t.get(n)||[];l.push(s),t.set(n,l);}for(let[s,n]of t){if(n.length===1){let l=n[0];console.log(` ${U}\u2022${i} ${chunkDNE3XPCJ_cjs.b(l.name)} ${a}(${l.reason})${i}`);}else {let l=n[0].reason,o=n.map(r=>chunkDNE3XPCJ_cjs.b(r.name)).join(", ");console.log(` ${U}\u2022${i} ${o} ${a}(${l})${i}`);}console.log(` ${a}To update: ${U}easbot skills add ${s} -g -y${i}`);}}async function ml(e){let t={skills:[],refreshedSkillCount:0,upToDateSkillCount:0,failedSkillCount:0},s=new Map,n=(c,g)=>{let m=`${g}::${c}`,S=s.get(m);return S||(S={skillName:c,scope:g,sharedAgents:[],copiedAgents:[],linkedAgents:[],upToDateAgents:[],deadLinkAgents:[],failed:[],ok:true,failedCount:0},s.set(m,S),t.skills.push(S)),S},l=e.scope??"both",o=chunkJUNIAQ2A_cjs.q(e.agentFilter??[]),r=o.length>0?o:void 0,u=(await chunkLJ63Q26N_cjs.a({scope:l,cwd:e.cwd,agentFilter:r})).map(c=>({name:c.name,description:"",path:c.skillDir,canonicalPath:c.skillDir,scope:c.scope,agents:[...c.agents]})),d=e.skillNames??[];if(!(d.length===1&&d[0]==="*")){let c=new Set(d.map(g=>g.toLowerCase()));u=u.filter(g=>c.has(g.name.toLowerCase()));}let{readLocalLock:h}=await import('./local-lock-KNX2RUIV.cjs'),{readSkillLock:f}=await import('./skill-lock-WPACLO4W.cjs'),C=await h(),w=await f();for(let c of u){let g=c.scope==="global"?w.skills[c.name]:C.skills[c.name];if(!g?.marketId||!g.pluginId)continue;let m=await chunkHOK3SUH4_cjs.Y(g.marketId,g.pluginId,c.name);if(!m)continue;let{readStoreIndex:S}=await import('./store-2ULHEVHS.cjs'),L=(await S()).markets[m.marketId];if(!L)continue;let y=`${L.storePath.replace(/\\/g,"/").replace(/\/+$/,"")}/${m.entry.skillPath}`.replace(/\\/g,"/");c.path=y,c.canonicalPath=y;}let $=new Map;for(let c of u){let g=`${c.scope}::${c.name}::${c.path}`;$.set(g,c);}for(let c of d){if(c==="*")continue;let g=c.replace(/\.+$/,""),m=d.indexOf(c),v=e.skillStorePaths?.[m]?.split(/[\\/]/).filter(Boolean).pop();if(v){for(let[L,j]of $)if(L.startsWith(`${j.scope}::`)&&L.endsWith(`::${v}`)){let y=`${j.scope}::${g}::${j.path}`;$.has(y)||$.set(y,j);break}}}if($.size===0)return t;for(let[c,g]of $){let S=c.split("::")[1].replace(/\.+$/,""),v=g.path,L=n(S,g.scope),y=fs$1.existsSync(v)?await chunkHOK3SUH4_cjs.y(`${v}/SKILL.md`.replace(/\\/g,"/")):void 0;if(!y){if(!await Bn(S,g.scope==="global"))continue;for(let O of g.agents)L.failed.push({agent:O,reason:"store source missing \u2014 run `easbot skills add <source>` to rebuild"}),L.failedCount++,L.ok=false;continue}let A=y;for(let R of g.agents){let O=chunkJUNIAQ2A_cjs.o(R,g.scope),N=await chunkIJI72D6W_cjs.h(A,R,{global:g.scope==="global",mode:"symlink",cwd:e.cwd});if(!N.success){L.failed.push({agent:R,reason:N.error??"install failed"}),L.failedCount++,L.ok=false;continue}N.skippedReason==="up-to-date"?L.upToDateAgents.push(R):O?L.sharedAgents.push(R):L.copiedAgents.push(R);}}for(let c of t.skills){let g=c.failedCount>0,m=c.sharedAgents.length+c.copiedAgents.length+c.linkedAgents.length>0,S=c.upToDateAgents.length+c.deadLinkAgents.length>0||m;g?t.failedSkillCount++:m?t.refreshedSkillCount++:S&&t.upToDateSkillCount++;}return t}async function Bn(e,t){return t?(await chunkBWDTT6SA_cjs.l()).skills[e]:(await chunkHOK3SUH4_cjs.t()).skills[e]}function zn(e){let t=[...e.skills].sort((o,r)=>o.skillName.localeCompare(r.skillName)),s=[];for(let o of t){let r=[...o.sharedAgents,...o.copiedAgents,...o.linkedAgents,...o.upToDateAgents];r.length!==0&&s.push({skill:o.skillName,agents:r});}let n=["global","project"],l=[];for(let o of n){let r=e.skills.filter(u=>u.scope===o);if(r.length===0)continue;let p=[...r].sort((u,d)=>u.skillName.localeCompare(d.skillName));for(let u of p){let d=[];u.sharedAgents.length>0&&d.push({label:"universal",agents:u.sharedAgents}),u.copiedAgents.length>0&&d.push({label:"copied",agents:u.copiedAgents}),u.linkedAgents.length>0&&d.push({label:"symlinked",agents:u.linkedAgents}),u.upToDateAgents.length>0&&d.push({label:"up-to-date",agents:u.upToDateAgents}),l.push({scope:o,skill:u.skillName,sections:d,failed:u.failed.map(h=>({agent:h.agent,reason:h.reason}))});}}return {updatingFor:s,sections:l,summary:{refreshed:e.refreshedSkillCount,upToDate:e.upToDateSkillCount,failed:e.failedSkillCount}}}function hl(e){if(e.skills.length===0)return;let t=zn(e),s=l=>{let o=l.map(r=>chunkJUNIAQ2A_cjs.b[r]?.displayName??r);return o.length<=5?o.join(", "):`${o.slice(0,5).join(", ")} +${o.length-5} more`};if(t.updatingFor.length>0){console.log(`${U}Updating for:${i}`);for(let l of t.updatingFor){let o=s(l.agents);console.log(` ${a}\u2514${i} ${Le}${chunkDNE3XPCJ_cjs.b(l.skill)}${i} ${a}(${o})${i}`);}}let n=null;for(let l of t.sections){if(l.scope!==n&&(console.log(`${G}${l.scope==="global"?"Global Skills":"Project Skills"}${i}`),n=l.scope),console.log(` ${a}\u2514${i} ${Le}${chunkDNE3XPCJ_cjs.b(l.skill)}${i}`),l.sections.length===0&&l.failed.length===0){console.log(` ${a}\u2514(no install targets)${i}`);continue}for(let o of l.sections)console.log(` ${a}\u2514${i} (${o.agents.length} agents) ${o.label}: ${s(o.agents)}`);for(let{agent:o,reason:r}of l.failed){let p=chunkJUNIAQ2A_cjs.b[o]?.displayName??o;console.log(` ${U}\u2717 ${p}:${i} ${a}${r}${i}`);}}console.log();}async function Jn(e){let t=await chunkHOK3SUH4_cjs.t(),s=[];for(let[n,l]of Object.entries(t.skills))fl(n,e)&&l.sourceType!=="node_modules"&&s.push({name:n,source:l.source,entry:l});return s}async function Yn(e={}){let t=e.cwd||process.cwd(),s=await chunkBWDTT6SA_cjs.l(),n=Object.keys(s.skills),l=0,o=0,r=0;if(n.length===0)return terminal.note(e.skills&&e.skills.length>0?`${chunkBWDTT6SA_cjs.d(`No installed skills found matching: ${e.skills.join(", ")}`)}`:`${chunkBWDTT6SA_cjs.a("No global skills tracked in lock file.")}`,chunkBWDTT6SA_cjs.e("Global Skills Update")),terminal.Prompt.outro(`${chunkBWDTT6SA_cjs.c("Done!")}${chunkBWDTT6SA_cjs.a(" Install with `easbot skills add <package> -g` to get started.")}`),{successCount:l,failCount:o,checkedCount:0};let{listInstalledSkills:p}=await import('./installer-3ZLHOVAO.cjs'),u=await p({scope:"global",agentFilter:e.agent,cwd:t}),d=new Set(u.map(g=>g.name)),h=[],f=[],C=[];for(let g of n){if(!fl(g,e.skills))continue;let m=s.skills[g];if(m){if(!m.skillPath){f.push({name:g,reason:Hn(m),sourceUrl:m.source,sourceType:m.sourceType,ref:m.ref});continue}d.has(g)&&C.push({name:g,entry:m});}}let w=new Map;for(let g of C){let m=g.entry.source,S=w.get(m)||[];S.push(g),w.set(m,S);}for(let[g,m]of w){let S=m[0].entry,v=S.source,L=S.sourceType,j=null;if(process.stdout.write(`\r${a}Checking skills from source: ${g}${i}\x1B[K
4
4
  `),L==="github"){let A=chunkHOK3SUH4_cjs.e(v),R=chunkHOK3SUH4_cjs.a(A);if(R)try{let{fetchGitHubMarketSnapshot:O}=await import('./blob-RYNC3CVY.cjs'),D=await Dt(O(R,S.ref??void 0),Et,`update market-snapshot ${g}`),F=(await chunkHOK3SUH4_cjs.S()).markets[chunkHOK3SUH4_cjs.L(A)]?.snapshotHash;if(D&&F&&F===D.snapshotHash){console.log(` ${a}\u2713 Source ${g} unchanged (market snapshotHash match)${i}`),r+=m.length;continue}}catch{}}let y=null;try{let A=L??"git",R=chunkHOK3SUH4_cjs.e(v),O=await Dt(chunkHOK3SUH4_cjs.Q({type:A,url:R.url,ref:S.ref??void 0,mode:"update"}),Et,`update fetch ${g}`);if(j=O.tempDir,O.cloneError&&(y=O.cloneError),!y&&j){let D=await chunkHOK3SUH4_cjs.A(j),N=j.replace(/\\/g,"/").replace(/\/+$/,""),F=D.map(V=>{let Q=V.path.replace(/\\/g,"/");return path.relative(N,Q).split(path.sep).join("/")});if(D.length===0)y=new Error(`Source returned 0 skills (network 404 / empty repo / cache corruption): ${g}`);else {let V=new Set,Q=new Set(F),we=chunkHOK3SUH4_cjs.e(v);for(let{name:le,entry:X}of m){if(V.has(le))continue;let Ae=X.skillPath.split(path.sep).join("/").replace(/\/SKILL\.md$/,"");if(!Q.has(Ae))continue;let he=await dl(we,j,Ae,le);if(!he.ok){f.push({name:le,reason:"Store sync failed",sourceUrl:X.source,sourceType:X.sourceType,ref:X.ref});continue}Ut(e.force,X.computedHash,he.hash)&&h.push({name:le,source:g,entry:X});}}}}catch(A){y=A instanceof Error?A:new Error(String(A));}finally{j&&L!=="local"&&!chunkHOK3SUH4_cjs.ga(j)&&await chunkHOK3SUH4_cjs.l(j);}y&&(console.log(` ${a}\u2717 Failed to check skills from ${g}: ${y.message}${i}`),f.push(...ul(y,m)));}C.length>0&&process.stdout.write("\r\x1B[K");let $=C.length+f.length+r;if(C.length===0&&f.length===0)return e.skills||console.log(`${a}No global skills to check.${i}`),{successCount:l,failCount:o,checkedCount:0};if(C.length===0&&f.length>0)return Nt(f),{successCount:l,failCount:o,checkedCount:$};if(h.length===0)return console.log(`${U}\u2713 All global skills are up to date${i}`),{successCount:l,failCount:o,checkedCount:$};if(console.log(`${U}Found ${h.length} global update(s)${i}`),console.log(),h.length===0)return Nt(f),{successCount:l,failCount:o,checkedCount:$};try{let g=[],m=[];for(let v of h){g.push(v.name);let L=chunkHOK3SUH4_cjs.e(v.entry.source),j=chunkHOK3SUH4_cjs.M(L),A=(v.entry.skillPath??v.name).split(/[\\/]/).join("/").replace(/\/SKILL\.md$/,"");m.push(path.join(j,A));}let S=await ml({skillNames:g,skillStorePaths:m,scope:"global",agentFilter:e.agent,cwd:t});hl(S),S.failedSkillCount>0?o+=S.failedSkillCount:l+=S.skills.length;}catch(g){o+=h.length,console.log(`${a}\u2717 Failed to refresh: ${g instanceof Error?g.message:String(g)}${i}`);}if(h.length>0)try{let g=await chunkBWDTT6SA_cjs.l(),m=new Date().toISOString(),S=!1,v=0;for(let L of h){let j=g.skills[L.name];if(!j)continue;let y=chunkHOK3SUH4_cjs.e(L.entry.source),A=chunkHOK3SUH4_cjs.M(y),O=(L.entry.skillPath??L.name).split(/[\\/]/).join("/").replace(/\/SKILL\.md$/,""),D=path.join(A,O),N=await gl(D);N&&j.computedHash!==N&&(j.computedHash=N,j.updatedAt=m,S=!0,v++);}S&&(await chunkBWDTT6SA_cjs.m(g),console.log(`${a}\u2192 updated global lock: ${v} skill(s) refreshed, ${Object.keys(g.skills).length} total tracked${i}`));}catch(g){console.log(`${a}\u26A0 Failed to write global lock: ${g instanceof Error?g.message:String(g)}${i}`);}Nt(f);let c=[];if(l>0&&o>0)c.push(`${chunkBWDTT6SA_cjs.c(`\u2713 ${l} refreshed`)} ${chunkBWDTT6SA_cjs.a("|")} ${chunkBWDTT6SA_cjs.b(`\u2717 ${o} failed`)}`);else if(l>0)c.push(`${chunkBWDTT6SA_cjs.c(`\u2713 ${l} refreshed`)}`);else if(o>0)c.push(`${chunkBWDTT6SA_cjs.b(`\u2717 ${o} failed`)}`);else if($>0)c.push(`${chunkBWDTT6SA_cjs.c("All global skills are up to date.")}`);else return {successCount:l,failCount:o,checkedCount:$};return f.length>0&&c.push(`${chunkBWDTT6SA_cjs.d(`\u26A0 ${f.length} skipped`)}`),console.log(),terminal.note(c.join(`
5
5
  `),chunkBWDTT6SA_cjs.e("Global Skills Update")),terminal.Prompt.outro(`${chunkBWDTT6SA_cjs.c("Done!")}${chunkBWDTT6SA_cjs.a(" Run `easbot skills list` to see current state.")}`),{successCount:l,failCount:o,checkedCount:$}}async function qn(e={}){let t=e.cwd||process.cwd(),s=await Jn(e.skills),n=0,l=0,o=[];if(s.length===0)return e.skills||(console.log(`${a}No project skills to update.${i}`),console.log(`${a}Install project skills with${i} ${U}easbot skills add <package>${i}`)),terminal.note(s.length===0&&e.skills?`${chunkBWDTT6SA_cjs.d(`No installed skills found matching: ${e.skills.join(", ")}`)}`:`${chunkBWDTT6SA_cjs.a("No project skills tracked in lock file.")}`,chunkBWDTT6SA_cjs.e("Project Skills Update")),terminal.Prompt.outro(`${chunkBWDTT6SA_cjs.c("Done!")}${chunkBWDTT6SA_cjs.a(" Install with `easbot skills add <package>` to get started.")}`),{successCount:n,failCount:l,foundCount:0};let{listInstalledSkills:r}=await import('./installer-3ZLHOVAO.cjs'),p=await r({scope:"project",agentFilter:e.agent,cwd:t}),u=new Set(p.map(c=>c.name)),d=s.filter(c=>u.has(c.name)),h=d.filter(c=>c.entry.skillPath),f=d.filter(c=>!c.entry.skillPath);if(h.length===0)return console.log(`${a}No project skills can be updated in place.${i}`),cl(f),{successCount:n,failCount:l,foundCount:s.length};console.log(`${U}Checking ${h.length} skill(s)...${i}`),console.log();let C=new Map;for(let c of h){let g=c.entry.source,m=C.get(g)||[];m.push(c),C.set(g,m);}let w=await chunkHOK3SUH4_cjs.t(),$=[];for(let[c,g]of C){let m=g[0].entry,S=m.source,v=m.ref;if(m.sourceType==="github"){let N=chunkHOK3SUH4_cjs.e(S),F=chunkHOK3SUH4_cjs.a(N);if(F)try{let{fetchGitHubMarketSnapshot:V}=await import('./blob-RYNC3CVY.cjs'),Q=await Dt(V(F,m.ref??void 0),Et,`update market-snapshot ${c}`),le=(await chunkHOK3SUH4_cjs.S()).markets[chunkHOK3SUH4_cjs.L(N)]?.snapshotHash;if(Q&&le&&le===Q.snapshotHash){console.log(` ${a}\u2713 Source ${c} unchanged (market snapshotHash match)${i}`);continue}}catch{}}Object.entries(w.skills).filter(([N,F])=>F.source===c).map(([N,F])=>N);let j=null,y=[],A=new Map,R=null;try{let N=m.sourceType??"git",F=chunkHOK3SUH4_cjs.e(S),V=await Dt(chunkHOK3SUH4_cjs.Q({type:N,url:F.url,ref:v,mode:"update"}),Et,`update fetch ${c}`);if(j=V.tempDir,V.cloneError)R=V.cloneError;else {let Q=await chunkHOK3SUH4_cjs.A(j);if(Q.length===0)R=new Error(`Source returned 0 skills (network 404 / empty repo / cache corruption): ${c}`);else {let we=Q.map(X=>{let ve=path.relative(j,X.path);return path.join(ve,"SKILL.md").split(path.sep).join("/")}),le=chunkHOK3SUH4_cjs.e(S);for(let X of Q){let Ae=path.join(path.relative(j,X.path),"SKILL.md").split(path.sep).join("/").replace(/\/SKILL\.md$/,""),he=await dl(le,j,Ae,X.name);he.ok&&he.hash&&A.set(X.name,he.hash);}}}}catch(N){R=N instanceof Error?N:new Error(String(N));}finally{j&&!chunkHOK3SUH4_cjs.ga(j)&&await chunkHOK3SUH4_cjs.l(j);}if(R){console.log(` ${a}\u2717 Failed to check for deleted skills from ${c}: ${R.message}${i}`);let N=g.map(F=>({name:F.name,entry:{source:F.source,sourceType:F.entry.sourceType,ref:F.entry.ref}}));$.push(...ul(R,N));continue}let O=g.filter(N=>!y.includes(N.name)),D=[];for(let N of O){let F=w.skills[N.name],V=A.get(N.name);if(!V)continue;let Q=F?.computedHash;if(!Ut(e.force,Q,V))continue;let we=chunkHOK3SUH4_cjs.e(N.entry.source),le=chunkHOK3SUH4_cjs.M(we),ve=(N.entry.skillPath??N.name).split(/[\\/]/).join("/").replace(/\/SKILL\.md$/,"");D.push({name:N.name,source:N.entry.source,skillPath:ve,storeRoot:le});}if(D.length!==0)try{let N=D.map(Q=>Q.name),F=D.map(Q=>path.join(Q.storeRoot,Q.skillPath)),V=await ml({skillNames:N,skillStorePaths:F,scope:"project",agentFilter:e.agent,cwd:t});hl(V),V.failedSkillCount>0?l+=V.failedSkillCount:n+=V.skills.length;for(let Q of D)o.push(Q.name);}catch(N){l+=D.length,console.log(` ${a}\u2717 Failed to refresh: ${N instanceof Error?N.message:String(N)}${i}`);}}if(cl(f),Nt($),h.length>0)if(console.log(),o.length>0||$.length>0||f.length>0){let c=[];o.length>0&&c.push(`${chunkBWDTT6SA_cjs.c(`\u2713 Refreshed ${o.length} skill(s)${chunkBWDTT6SA_cjs.i("")}`)}`),n>0&&l>0?c.push(`${chunkBWDTT6SA_cjs.c(`\u2713 ${n} ok`)} ${chunkBWDTT6SA_cjs.a("|")} ${chunkBWDTT6SA_cjs.b(`\u2717 ${l} failed`)}`):n>0?c.push(`${chunkBWDTT6SA_cjs.c(`\u2713 ${n} ok`)}`):l>0&&c.push(`${chunkBWDTT6SA_cjs.b(`\u2717 ${l} failed`)}`),$.length>0&&c.push(`${chunkBWDTT6SA_cjs.d(`\u26A0 ${$.length} skipped`)}`),f.length>0&&c.push(`${chunkBWDTT6SA_cjs.a(`${f.length} legacy (cannot update)`)}`),terminal.note(c.join(`
6
- `),chunkBWDTT6SA_cjs.e("Project Skills Update")),terminal.Prompt.outro(`${chunkBWDTT6SA_cjs.c("Done!")}${chunkBWDTT6SA_cjs.a(" Run `easbot skills list` to see current state.")}`);}else terminal.note(`${chunkBWDTT6SA_cjs.c("All project skills are up to date.")}`,chunkBWDTT6SA_cjs.e("Project Skills Update")),terminal.Prompt.outro(`${chunkBWDTT6SA_cjs.c("Done!")}`);if(n>0&&o.length>0)try{let c=await chunkHOK3SUH4_cjs.t(),g=new Date().toISOString(),m=!1,S=0;for(let v of o){let L=c.skills[v];if(!L)continue;let y=(await chunkHOK3SUH4_cjs.Y(L.marketId,L.pluginId,v))?.entry.computedHash;y&&L.computedHash!==y&&(L.computedHash=y,L.updatedAt=g,m=!0,S++);}if(m){let{writeLocalLock:v}=await import('./local-lock-KNX2RUIV.cjs');await v(c),console.log(`${a}\u2192 updated project lock: ${S} skill(s) refreshed, ${Object.keys(c.skills).length} total tracked${i}`);}}catch(c){console.log(`${a}\u26A0 Failed to write project lock: ${c instanceof Error?c.message:String(c)}${i}`);}return {successCount:n,failCount:l,foundCount:s.length}}function cl(e){if(e.length!==0){console.log(),console.log(`${a}${e.length} project skill(s) cannot be updated automatically (installed before skillPath tracking):${i}`);for(let t of e){let s=as(t.entry.source,t.entry.ref);console.log(` ${U}\u2022${i} ${chunkDNE3XPCJ_cjs.b(t.name)}`),console.log(` ${a}To refresh: ${U}easbot skills add ${s} -y${i}`);}}}async function kl(e=[],t={}){let s=Gn(e,t);if(s.skills?.every(p=>/^[^\s]+\.[a-zA-Z0-9]+$/.test(p))&&(s.skills=["*"]),s.all===true&&(s.yes=true,(!s.skills||s.skills.length===0||s.skills.every(p=>/^[^\s]+\.[a-zA-Z0-9]+$/.test(p)))&&(s.skills=["*"]),(!s.agent||s.agent.length===0)&&(s.agent=["*"])),s.agent&&s.agent.length>0){let p=chunkJUNIAQ2A_cjs.p(s.agent);if(p.length>0){let u=Object.keys(chunkJUNIAQ2A_cjs.b);console.log(`${Fe}Invalid agents: ${p.join(", ")}${i}`),console.log(`${a}Valid agents: ${u.join(", ")}${i}`),console.log(`${a}Tip: wrap '*' in quotes to avoid shell expansion: '-a' '"*"'${i}`),process.exit(1);}}let n=await Kn(s);s.skills?console.log(`${U}Updating ${s.skills.join(", ")}...${i}`):console.log(`${U}Checking for skill updates...${i}`),console.log();let l=0,o=0,r=0;if(n==="global"||n==="both"){n==="both"&&!s.skills&&console.log(`${G}Global Skills${i}`);let{successCount:p,failCount:u,checkedCount:d}=await Yn(s);l+=p,o+=u,r+=d,n==="both"&&!s.skills&&console.log();}if(n==="project"||n==="both"){n==="both"&&!s.skills&&console.log(`${G}Project Skills${i}`);let{successCount:p,failCount:u,foundCount:d}=await qn(s);l+=p,o+=u,r+=d;}s.skills&&r===0&&console.log(`${a}No installed skills found matching: ${s.skills.join(", ")}${i}`),console.log(),l>0&&console.log(`${U}\u2713 Updated ${l} skill(s)${i}`),o>0&&console.log(`${a}Failed to update ${o} skill(s)${i}`),chunkQ2MOP5ZW_cjs.d({event:"update",scope:n,skillCount:String(l+o),successCount:String(l),failCount:String(o)}),s.json&&J(z({scope:n,totals:{checked:r,refreshed:l,failed:o},detail:{project:r>0,global:r>0},...s.skills&&{skills:s.skills},...s.agent&&{agents:s.agent}},{scope:n,checked:r,refreshed:l,failed:o})),console.log();}var yl={version:"0.3.20"};var vl="eve agent";function Qn(e,t){return e.startsWith("git@")||e.startsWith("ssh://")?e:t}function Al(e){chunkQ2MOP5ZW_cjs.b(e);}async function eo(e,t,s,n){let{agent:l,subagent:o}=t,{installMode:r,installGlobally:p}=n,h=await chunkIJI72D6W_cjs.h(e,l,{global:p,mode:r,eveSubagent:o});return {skill:chunkHOK3SUH4_cjs.B(e),agent:dt(t),pluginName:e.pluginName,...h}}var to=(()=>{let e=process.env.SKILLS_AUDIT_DISPLAY_TIMEOUT_MS;if(!e)return 3e4;let t=Number.parseInt(e,10);return Number.isFinite(t)&&t>0?t:3e4})();function bl(e){switch(e){case "critical":return chunkBWDTT6SA_cjs.b(chunkBWDTT6SA_cjs.f("Critical Risk"));case "high":return chunkBWDTT6SA_cjs.b("High Risk");case "medium":return chunkBWDTT6SA_cjs.d("Med Risk");case "low":return chunkBWDTT6SA_cjs.c("Low Risk");case "safe":return chunkBWDTT6SA_cjs.c("Safe");default:return chunkBWDTT6SA_cjs.a("--")}}function so(e){if(!e)return chunkBWDTT6SA_cjs.a("--");let t=e.alerts??0;return t>0?chunkBWDTT6SA_cjs.b(`${t} alert${t!==1?"s":""}`):chunkBWDTT6SA_cjs.c("0 alerts")}function ot(e,t){let s=chunkDNE3XPCJ_cjs.a(e),n=Math.max(0,t-s.length);return e+" ".repeat(n)}function lo(e,t,s){if(!e)return [];if(!t.some(p=>{let u=e[p.slug];return u&&Object.keys(u).length>0}))return [];let l=Math.min(Math.max(...t.map(p=>p.displayName.length)),36),o=[],r=ot("",l+2)+ot(chunkBWDTT6SA_cjs.a("Gen"),18)+ot(chunkBWDTT6SA_cjs.a("Socket"),18)+chunkBWDTT6SA_cjs.a("Snyk");o.push(r);for(let p of t){let u=e[p.slug],d=p.displayName.length>l?p.displayName.slice(0,l-1)+"\u2026":p.displayName,h=u?.ath?bl(u.ath.risk):chunkBWDTT6SA_cjs.a("--"),f=u?.socket?so(u.socket):chunkBWDTT6SA_cjs.a("--"),C=u?.snyk?bl(u.snyk.risk):chunkBWDTT6SA_cjs.a("--");o.push(ot(chunkBWDTT6SA_cjs.e(d),l+2)+ot(h,18)+ot(f,18)+C);}return o.push(""),o.push(`${chunkBWDTT6SA_cjs.a("Details:")} ${chunkBWDTT6SA_cjs.a(`https://skills.sh/${s}`)}`),o}function gs(e,t){let s=os.homedir();return e===s||e.startsWith(s+path.sep)?"~"+e.slice(s.length):e===t||e.startsWith(t+path.sep)?"."+e.slice(t.length):e}function ye(e,t=5){if(e.length<=t)return e.join(", ");let s=e.slice(0,t),n=e.length-t;return `${s.join(", ")} +${n} more`}function no(e){let t=e.map(n=>chunkBWDTT6SA_cjs.e(chunkHOK3SUH4_cjs.B(n))),s=ye(t,3);return chunkDNE3XPCJ_cjs.a(s).length<=80?s:`${e.length} selected skills`}function oo(e){return `Detected an eve project. Install ${no(e)} for your ${vl} to use?`}function io(e,t,s){let n=[],l=[],o=[],r=new Map;if(e)for(let p of e)p.mode&&r.set(p.agent,p.mode);for(let p of t){let u=chunkJUNIAQ2A_cjs.b[p].displayName,d=r.get(u);chunkJUNIAQ2A_cjs.o(p,s?"global":"project")?n.push(u):d==="symlink"?o.push(u):l.push(u);}return {universal:n,copied:l,symlinked:o}}function dt(e){let t=chunkJUNIAQ2A_cjs.b[e.agent].displayName;return e.subagent?`${t} (${e.subagent})`:t}function Ft(e){return e.subagent?`${e.agent}:${e.subagent}`:e.agent}function ro(e,t){let s=[];for(let n of e)if(n==="eve")for(let l of t)s.push({agent:n,subagent:l});else s.push({agent:n});return s}function ao(e,t,s,n=[]){let l=[],o=e.filter(f=>!f.subagent).map(f=>f.agent),r=e.filter(f=>f.subagent).map(dt),p,u;if(n.length>0){let f=new Set(n);p=o.filter(C=>f.has(C)),u=o.filter(C=>!f.has(C));}else p=o.filter(f=>chunkJUNIAQ2A_cjs.o(f,s?"global":"project")),u=o.filter(f=>!chunkJUNIAQ2A_cjs.o(f,s?"global":"project"));let d=p.map(f=>chunkJUNIAQ2A_cjs.b[f].displayName),h=u.map(f=>chunkJUNIAQ2A_cjs.b[f].displayName);return t==="symlink"?(d.length>0&&l.push(` ${chunkBWDTT6SA_cjs.c("universal:")} ${ye(d)}`),h.length>0&&l.push(` ${chunkBWDTT6SA_cjs.a("symlinked:")} ${ye(h)}`),r.length>0&&l.push(` ${chunkBWDTT6SA_cjs.a("copied:")} ${ye(r)}`)):(d.length>0&&l.push(` ${chunkBWDTT6SA_cjs.c("universal:")} ${ye(d)}`),h.length>0&&l.push(` ${chunkBWDTT6SA_cjs.a("copied:")} ${ye(h)}`),r.length>0&&l.push(` ${chunkBWDTT6SA_cjs.a("copied (subagent):")} ${ye(r)}`)),l}function Sl(e,t){let s=chunkJUNIAQ2A_cjs.h(t),n=[...e];for(let l of s)n.includes(l)||n.push(l);return n}function co(e,t,s){let n=[],{universal:l,copied:o,symlinked:r}=io(e,t,s),p=o,u=e.filter(d=>d.symlinkFailed&&!d.skipped).map(d=>d.agent);return l.length>0&&n.push(` ${chunkBWDTT6SA_cjs.c("universal:")} ${ye(l)}`),p.length>0&&n.push(` ${chunkBWDTT6SA_cjs.e("copied:")} ${ye(p)}`),r.length>0&&n.push(` ${chunkBWDTT6SA_cjs.a("symlinked:")} ${ye(r)}`),u.length>0&&n.push(` ${chunkBWDTT6SA_cjs.d("symlink-failed:")} ${ye(u)}`),n}async function po(e,t){let s=[];return await terminal.Prompt.multiselect({message:e,options:t,initialValues:s,required:true})}async function wl(e){let t=e.global===true?"global":"project",s=u=>t!=="global"||chunkJUNIAQ2A_cjs.b[u].globalSkillsDir!==void 0,n=chunkJUNIAQ2A_cjs.h(t).filter(s),l=chunkJUNIAQ2A_cjs.i(t).filter(u=>u!=="eve"&&s(u)),o={title:"Universal (.agents/skills)",items:n.map(u=>({value:u,label:chunkJUNIAQ2A_cjs.b[u].displayName}))},r=l.map(u=>({value:u,label:chunkJUNIAQ2A_cjs.b[u].displayName,hint:e.global?chunkJUNIAQ2A_cjs.b[u].globalSkillsDir:chunkJUNIAQ2A_cjs.b[u].skillsDir})),p=await terminal.Prompt.multiselect({message:"Which agents do you want to install to?",options:r,initialValues:[],lockedSection:o});if(Array.isArray(p)){let u=p,d=new Set(n),h=[],f=[],C=new Set;for(let w of u)C.has(w)||(C.add(w),d.has(w)?h.push(w):f.push(w));return {locked:h,selected:f}}return p}var uo=yl.version;chunkQ2MOP5ZW_cjs.b(uo);async function ft(e,t={}){let s=e[0],n=false,l=()=>{n||(terminal.Prompt.Log.message(chunkBWDTT6SA_cjs.a("Tip: use the --yes (-y) and --global (-g) flags to install without prompts.")),n=true);};if(!s){let{readStoreIndex:u,resolveDefaultSource:d}=await import('./store-2ULHEVHS.cjs'),h=await u();s=await d(h);}t.all&&(t.skill=["*"],t.agent=["*"],t.yes=true);let o=t.global??false;if(!(t.global!==void 0)&&!t.yes&&!t.all&&process.stdin.isTTY&&Object.values(chunkJUNIAQ2A_cjs.b).some(f=>f.globalSkillsDir!==void 0)){let f=await terminal.Prompt.select({message:"Installation scope",options:[{value:false,label:"Project",hint:"Install in current directory (committed with your project)"},{value:true,label:"Global",hint:"Install in home directory (available across all projects)"}]});terminal.Prompt.isCancel(f)&&(await de(null),terminal.Prompt.cancel("Installation cancelled")),o=f,terminal.Prompt.Log.info(`${chunkBWDTT6SA_cjs.f(o?"Global":"Project")} scope selected`);}let r=await lt();if(r.isAgent&&(t.yes=true,!t.agent||t.agent.length===0)){let u=rl(r.agent.name);if(u){let d=o?"global":"project";t.agent=Sl([u],d);}}console.log(),r.isAgent||terminal.Prompt.intro(" skills "),r.isAgent?terminal.Prompt.Log.info(Ct(r.agent.name)+" Agent detected \u2014 installing non-interactively"):!process.stdin.isTTY&&!t.yes&&l();let p=null;try{let u=terminal.Prompt.spinner();u.start("Parsing source...");let d=chunkHOK3SUH4_cjs.e(s);u.stop(`Source: ${d.type==="local"?d.localPath:d.url}${d.ref?` #${chunkBWDTT6SA_cjs.d(d.ref)}`:""}${d.subpath?` @${chunkBWDTT6SA_cjs.e(d.subpath)}`:""}`);let h=chunkHOK3SUH4_cjs.a(d),f=(()=>{if(!h)return Promise.resolve(null);let k=chunkHOK3SUH4_cjs.b(h);return k?chunkHOK3SUH4_cjs.c(k.owner,k.repo).catch(()=>null):Promise.resolve(null)})(),C=Array.isArray(t?.skill)&&t.skill.length>0||t.fullDepth===!0||!!d.subpath;u.start("Loading source...");let w;try{w=await chunkHOK3SUH4_cjs.da(d,{includeInternal:C,fullDepth:t.fullDepth});}catch(k){throw k instanceof chunkHOK3SUH4_cjs.R&&(u.stop(chunkBWDTT6SA_cjs.b("Path not found")),terminal.Prompt.outro(chunkBWDTT6SA_cjs.b(`Local path does not exist: ${k.localPath}`)),process.exit(1)),k}p=w.storeDir,u.stop(w.cacheHit?"Repository loaded from cache":w.source==="blob-fetch"?"Fetched via GitHub API":w.source==="well-known-fetch"?"Well-known index fetched":w.source==="local-cp"?"Local path cached":"Repository cloned");let $=w.skills,c=d.subpath?$.filter(k=>k.path.includes(`/${d.subpath}/`)||k.path.endsWith(`/${d.subpath}`)):$;if(u.start("Discovering skills..."),c.length===0&&w.cloneError){u.stop(chunkBWDTT6SA_cjs.b("Failed to clone repository"));for(let k of w.cloneError.message.split(`
6
+ `),chunkBWDTT6SA_cjs.e("Project Skills Update")),terminal.Prompt.outro(`${chunkBWDTT6SA_cjs.c("Done!")}${chunkBWDTT6SA_cjs.a(" Run `easbot skills list` to see current state.")}`);}else terminal.note(`${chunkBWDTT6SA_cjs.c("All project skills are up to date.")}`,chunkBWDTT6SA_cjs.e("Project Skills Update")),terminal.Prompt.outro(`${chunkBWDTT6SA_cjs.c("Done!")}`);if(n>0&&o.length>0)try{let c=await chunkHOK3SUH4_cjs.t(),g=new Date().toISOString(),m=!1,S=0;for(let v of o){let L=c.skills[v];if(!L)continue;let y=(await chunkHOK3SUH4_cjs.Y(L.marketId,L.pluginId,v))?.entry.computedHash;y&&L.computedHash!==y&&(L.computedHash=y,L.updatedAt=g,m=!0,S++);}if(m){let{writeLocalLock:v}=await import('./local-lock-KNX2RUIV.cjs');await v(c),console.log(`${a}\u2192 updated project lock: ${S} skill(s) refreshed, ${Object.keys(c.skills).length} total tracked${i}`);}}catch(c){console.log(`${a}\u26A0 Failed to write project lock: ${c instanceof Error?c.message:String(c)}${i}`);}return {successCount:n,failCount:l,foundCount:s.length}}function cl(e){if(e.length!==0){console.log(),console.log(`${a}${e.length} project skill(s) cannot be updated automatically (installed before skillPath tracking):${i}`);for(let t of e){let s=as(t.entry.source,t.entry.ref);console.log(` ${U}\u2022${i} ${chunkDNE3XPCJ_cjs.b(t.name)}`),console.log(` ${a}To refresh: ${U}easbot skills add ${s} -y${i}`);}}}async function kl(e=[],t={}){let s=Gn(e,t);if(s.skills?.every(p=>/^[^\s]+\.[a-zA-Z0-9]+$/.test(p))&&(s.skills=["*"]),s.all===true&&(s.yes=true,(!s.skills||s.skills.length===0||s.skills.every(p=>/^[^\s]+\.[a-zA-Z0-9]+$/.test(p)))&&(s.skills=["*"]),(!s.agent||s.agent.length===0)&&(s.agent=["*"])),s.agent&&s.agent.length>0){let p=chunkJUNIAQ2A_cjs.p(s.agent);if(p.length>0){let u=Object.keys(chunkJUNIAQ2A_cjs.b);console.log(`${Fe}Invalid agents: ${p.join(", ")}${i}`),console.log(`${a}Valid agents: ${u.join(", ")}${i}`),console.log(`${a}Tip: wrap '*' in quotes to avoid shell expansion: '-a' '"*"'${i}`),process.exit(1);}}let n=await Kn(s);s.skills?console.log(`${U}Updating ${s.skills.join(", ")}...${i}`):console.log(`${U}Checking for skill updates...${i}`),console.log();let l=0,o=0,r=0;if(n==="global"||n==="both"){n==="both"&&!s.skills&&console.log(`${G}Global Skills${i}`);let{successCount:p,failCount:u,checkedCount:d}=await Yn(s);l+=p,o+=u,r+=d,n==="both"&&!s.skills&&console.log();}if(n==="project"||n==="both"){n==="both"&&!s.skills&&console.log(`${G}Project Skills${i}`);let{successCount:p,failCount:u,foundCount:d}=await qn(s);l+=p,o+=u,r+=d;}s.skills&&r===0&&console.log(`${a}No installed skills found matching: ${s.skills.join(", ")}${i}`),console.log(),l>0&&console.log(`${U}\u2713 Updated ${l} skill(s)${i}`),o>0&&console.log(`${a}Failed to update ${o} skill(s)${i}`),chunkQ2MOP5ZW_cjs.d({event:"update",scope:n,skillCount:String(l+o),successCount:String(l),failCount:String(o)}),s.json&&J(z({scope:n,totals:{checked:r,refreshed:l,failed:o},detail:{project:r>0,global:r>0},...s.skills&&{skills:s.skills},...s.agent&&{agents:s.agent}},{scope:n,checked:r,refreshed:l,failed:o})),console.log();}var yl={version:"0.3.22"};var vl="eve agent";function Qn(e,t){return e.startsWith("git@")||e.startsWith("ssh://")?e:t}function Al(e){chunkQ2MOP5ZW_cjs.b(e);}async function eo(e,t,s,n){let{agent:l,subagent:o}=t,{installMode:r,installGlobally:p}=n,h=await chunkIJI72D6W_cjs.h(e,l,{global:p,mode:r,eveSubagent:o});return {skill:chunkHOK3SUH4_cjs.B(e),agent:dt(t),pluginName:e.pluginName,...h}}var to=(()=>{let e=process.env.SKILLS_AUDIT_DISPLAY_TIMEOUT_MS;if(!e)return 3e4;let t=Number.parseInt(e,10);return Number.isFinite(t)&&t>0?t:3e4})();function bl(e){switch(e){case "critical":return chunkBWDTT6SA_cjs.b(chunkBWDTT6SA_cjs.f("Critical Risk"));case "high":return chunkBWDTT6SA_cjs.b("High Risk");case "medium":return chunkBWDTT6SA_cjs.d("Med Risk");case "low":return chunkBWDTT6SA_cjs.c("Low Risk");case "safe":return chunkBWDTT6SA_cjs.c("Safe");default:return chunkBWDTT6SA_cjs.a("--")}}function so(e){if(!e)return chunkBWDTT6SA_cjs.a("--");let t=e.alerts??0;return t>0?chunkBWDTT6SA_cjs.b(`${t} alert${t!==1?"s":""}`):chunkBWDTT6SA_cjs.c("0 alerts")}function ot(e,t){let s=chunkDNE3XPCJ_cjs.a(e),n=Math.max(0,t-s.length);return e+" ".repeat(n)}function lo(e,t,s){if(!e)return [];if(!t.some(p=>{let u=e[p.slug];return u&&Object.keys(u).length>0}))return [];let l=Math.min(Math.max(...t.map(p=>p.displayName.length)),36),o=[],r=ot("",l+2)+ot(chunkBWDTT6SA_cjs.a("Gen"),18)+ot(chunkBWDTT6SA_cjs.a("Socket"),18)+chunkBWDTT6SA_cjs.a("Snyk");o.push(r);for(let p of t){let u=e[p.slug],d=p.displayName.length>l?p.displayName.slice(0,l-1)+"\u2026":p.displayName,h=u?.ath?bl(u.ath.risk):chunkBWDTT6SA_cjs.a("--"),f=u?.socket?so(u.socket):chunkBWDTT6SA_cjs.a("--"),C=u?.snyk?bl(u.snyk.risk):chunkBWDTT6SA_cjs.a("--");o.push(ot(chunkBWDTT6SA_cjs.e(d),l+2)+ot(h,18)+ot(f,18)+C);}return o.push(""),o.push(`${chunkBWDTT6SA_cjs.a("Details:")} ${chunkBWDTT6SA_cjs.a(`https://skills.sh/${s}`)}`),o}function gs(e,t){let s=os.homedir();return e===s||e.startsWith(s+path.sep)?"~"+e.slice(s.length):e===t||e.startsWith(t+path.sep)?"."+e.slice(t.length):e}function ye(e,t=5){if(e.length<=t)return e.join(", ");let s=e.slice(0,t),n=e.length-t;return `${s.join(", ")} +${n} more`}function no(e){let t=e.map(n=>chunkBWDTT6SA_cjs.e(chunkHOK3SUH4_cjs.B(n))),s=ye(t,3);return chunkDNE3XPCJ_cjs.a(s).length<=80?s:`${e.length} selected skills`}function oo(e){return `Detected an eve project. Install ${no(e)} for your ${vl} to use?`}function io(e,t,s){let n=[],l=[],o=[],r=new Map;if(e)for(let p of e)p.mode&&r.set(p.agent,p.mode);for(let p of t){let u=chunkJUNIAQ2A_cjs.b[p].displayName,d=r.get(u);chunkJUNIAQ2A_cjs.o(p,s?"global":"project")?n.push(u):d==="symlink"?o.push(u):l.push(u);}return {universal:n,copied:l,symlinked:o}}function dt(e){let t=chunkJUNIAQ2A_cjs.b[e.agent].displayName;return e.subagent?`${t} (${e.subagent})`:t}function Ft(e){return e.subagent?`${e.agent}:${e.subagent}`:e.agent}function ro(e,t){let s=[];for(let n of e)if(n==="eve")for(let l of t)s.push({agent:n,subagent:l});else s.push({agent:n});return s}function ao(e,t,s,n=[]){let l=[],o=e.filter(f=>!f.subagent).map(f=>f.agent),r=e.filter(f=>f.subagent).map(dt),p,u;if(n.length>0){let f=new Set(n);p=o.filter(C=>f.has(C)),u=o.filter(C=>!f.has(C));}else p=o.filter(f=>chunkJUNIAQ2A_cjs.o(f,s?"global":"project")),u=o.filter(f=>!chunkJUNIAQ2A_cjs.o(f,s?"global":"project"));let d=p.map(f=>chunkJUNIAQ2A_cjs.b[f].displayName),h=u.map(f=>chunkJUNIAQ2A_cjs.b[f].displayName);return t==="symlink"?(d.length>0&&l.push(` ${chunkBWDTT6SA_cjs.c("universal:")} ${ye(d)}`),h.length>0&&l.push(` ${chunkBWDTT6SA_cjs.a("symlinked:")} ${ye(h)}`),r.length>0&&l.push(` ${chunkBWDTT6SA_cjs.a("copied:")} ${ye(r)}`)):(d.length>0&&l.push(` ${chunkBWDTT6SA_cjs.c("universal:")} ${ye(d)}`),h.length>0&&l.push(` ${chunkBWDTT6SA_cjs.a("copied:")} ${ye(h)}`),r.length>0&&l.push(` ${chunkBWDTT6SA_cjs.a("copied (subagent):")} ${ye(r)}`)),l}function Sl(e,t){let s=chunkJUNIAQ2A_cjs.h(t),n=[...e];for(let l of s)n.includes(l)||n.push(l);return n}function co(e,t,s){let n=[],{universal:l,copied:o,symlinked:r}=io(e,t,s),p=o,u=e.filter(d=>d.symlinkFailed&&!d.skipped).map(d=>d.agent);return l.length>0&&n.push(` ${chunkBWDTT6SA_cjs.c("universal:")} ${ye(l)}`),p.length>0&&n.push(` ${chunkBWDTT6SA_cjs.e("copied:")} ${ye(p)}`),r.length>0&&n.push(` ${chunkBWDTT6SA_cjs.a("symlinked:")} ${ye(r)}`),u.length>0&&n.push(` ${chunkBWDTT6SA_cjs.d("symlink-failed:")} ${ye(u)}`),n}async function po(e,t){let s=[];return await terminal.Prompt.multiselect({message:e,options:t,initialValues:s,required:true})}async function wl(e){let t=e.global===true?"global":"project",s=u=>t!=="global"||chunkJUNIAQ2A_cjs.b[u].globalSkillsDir!==void 0,n=chunkJUNIAQ2A_cjs.h(t).filter(s),l=chunkJUNIAQ2A_cjs.i(t).filter(u=>u!=="eve"&&s(u)),o={title:"Universal (.agents/skills)",items:n.map(u=>({value:u,label:chunkJUNIAQ2A_cjs.b[u].displayName}))},r=l.map(u=>({value:u,label:chunkJUNIAQ2A_cjs.b[u].displayName,hint:e.global?chunkJUNIAQ2A_cjs.b[u].globalSkillsDir:chunkJUNIAQ2A_cjs.b[u].skillsDir})),p=await terminal.Prompt.multiselect({message:"Which agents do you want to install to?",options:r,initialValues:[],lockedSection:o});if(Array.isArray(p)){let u=p,d=new Set(n),h=[],f=[],C=new Set;for(let w of u)C.has(w)||(C.add(w),d.has(w)?h.push(w):f.push(w));return {locked:h,selected:f}}return p}var uo=yl.version;chunkQ2MOP5ZW_cjs.b(uo);async function ft(e,t={}){let s=e[0],n=false,l=()=>{n||(terminal.Prompt.Log.message(chunkBWDTT6SA_cjs.a("Tip: use the --yes (-y) and --global (-g) flags to install without prompts.")),n=true);};if(!s){let{readStoreIndex:u,resolveDefaultSource:d}=await import('./store-2ULHEVHS.cjs'),h=await u();s=await d(h);}t.all&&(t.skill=["*"],t.agent=["*"],t.yes=true);let o=t.global??false;if(!(t.global!==void 0)&&!t.yes&&!t.all&&process.stdin.isTTY&&Object.values(chunkJUNIAQ2A_cjs.b).some(f=>f.globalSkillsDir!==void 0)){let f=await terminal.Prompt.select({message:"Installation scope",options:[{value:false,label:"Project",hint:"Install in current directory (committed with your project)"},{value:true,label:"Global",hint:"Install in home directory (available across all projects)"}]});terminal.Prompt.isCancel(f)&&(await de(null),terminal.Prompt.cancel("Installation cancelled")),o=f,terminal.Prompt.Log.info(`${chunkBWDTT6SA_cjs.f(o?"Global":"Project")} scope selected`);}let r=await lt();if(r.isAgent&&(t.yes=true,!t.agent||t.agent.length===0)){let u=rl(r.agent.name);if(u){let d=o?"global":"project";t.agent=Sl([u],d);}}console.log(),r.isAgent||terminal.Prompt.intro(" skills "),r.isAgent?terminal.Prompt.Log.info(Ct(r.agent.name)+" Agent detected \u2014 installing non-interactively"):!process.stdin.isTTY&&!t.yes&&l();let p=null;try{let u=terminal.Prompt.spinner();u.start("Parsing source...");let d=chunkHOK3SUH4_cjs.e(s);u.stop(`Source: ${d.type==="local"?d.localPath:d.url}${d.ref?` #${chunkBWDTT6SA_cjs.d(d.ref)}`:""}${d.subpath?` @${chunkBWDTT6SA_cjs.e(d.subpath)}`:""}`);let h=chunkHOK3SUH4_cjs.a(d),f=(()=>{if(!h)return Promise.resolve(null);let k=chunkHOK3SUH4_cjs.b(h);return k?chunkHOK3SUH4_cjs.c(k.owner,k.repo).catch(()=>null):Promise.resolve(null)})(),C=Array.isArray(t?.skill)&&t.skill.length>0||t.fullDepth===!0||!!d.subpath;u.start("Loading source...");let w;try{w=await chunkHOK3SUH4_cjs.da(d,{includeInternal:C,fullDepth:t.fullDepth});}catch(k){throw k instanceof chunkHOK3SUH4_cjs.R&&(u.stop(chunkBWDTT6SA_cjs.b("Path not found")),terminal.Prompt.outro(chunkBWDTT6SA_cjs.b(`Local path does not exist: ${k.localPath}`)),process.exit(1)),k}p=w.storeDir,u.stop(w.cacheHit?"Repository loaded from cache":w.source==="blob-fetch"?"Fetched via GitHub API":w.source==="well-known-fetch"?"Well-known index fetched":w.source==="local-cp"?"Local path cached":"Repository cloned");let $=w.skills,c=d.subpath?$.filter(k=>k.path.includes(`/${d.subpath}/`)||k.path.endsWith(`/${d.subpath}`)):$;if(u.start("Discovering skills..."),c.length===0&&w.cloneError){u.stop(chunkBWDTT6SA_cjs.b("Failed to clone repository"));for(let k of w.cloneError.message.split(`
7
7
  `))terminal.Prompt.Log.message(chunkBWDTT6SA_cjs.a(k));await de(p),process.exit(1);}if(c.length===0&&(u.stop(chunkBWDTT6SA_cjs.b("No skills found")),terminal.Prompt.outro(chunkBWDTT6SA_cjs.b("No valid skills found. Skills require a SKILL.md with name and description.")),await de(p),process.exit(1)),u.stop(`Found ${chunkBWDTT6SA_cjs.c(String(c.length))} skill${c.length>1?"s":""}`),t.list){console.log(),terminal.Prompt.Log.step(chunkBWDTT6SA_cjs.f("Available Skills"));let k={},x=[];for(let T of c)if(T.pluginName){let E=T.pluginName;k[E]||(k[E]=[]),k[E].push(T);}else x.push(T);let _=Object.keys(k).sort();for(let T of _){let E=T.split("-").map(H=>H.charAt(0).toUpperCase()+H.slice(1)).join(" ");console.log(chunkBWDTT6SA_cjs.f(E));for(let H of k[T])terminal.Prompt.Log.message(` ${chunkBWDTT6SA_cjs.e(chunkHOK3SUH4_cjs.B(H))}`),terminal.Prompt.Log.message(` ${chunkBWDTT6SA_cjs.a(H.description)}`);console.log();}if(x.length>0){_.length>0&&console.log(chunkBWDTT6SA_cjs.f("General"));for(let T of x)terminal.Prompt.Log.message(` ${chunkBWDTT6SA_cjs.e(chunkHOK3SUH4_cjs.B(T))}`),terminal.Prompt.Log.message(` ${chunkBWDTT6SA_cjs.a(T.description)}`);}console.log(),terminal.Prompt.outro("Use --skill <name> to install specific skills"),await de(p),process.exit(0);}let g;if(t.skill&&t.skill.length>0){let k=c.map(_=>chunkHOK3SUH4_cjs.B(_)),x=chunkHOK3SUH4_cjs.E(t.skill,k);if(x.wildcard)g=c,terminal.Prompt.Log.info(`Installing all ${c.length} skills`);else if(x.invalid.length>0){terminal.Prompt.Log.error(`No matching skills found for: ${x.invalid.join(", ")}`),terminal.Prompt.Log.info("Available skills:");for(let _ of c)terminal.Prompt.Log.message(` - ${chunkHOK3SUH4_cjs.B(_)}`);await de(p),process.exit(1);}else g=chunkHOK3SUH4_cjs.C(c,x.matched),g.length===0&&(terminal.Prompt.Log.error(`No matching skills found for: ${x.matched.join(", ")}`),await de(p),process.exit(1)),terminal.Prompt.Log.info(`Selected ${g.length} skill${g.length!==1?"s":""}: ${g.map(_=>chunkBWDTT6SA_cjs.e(chunkHOK3SUH4_cjs.B(_))).join(", ")}`);}else if(c.length===1){g=c;let k=c[0];terminal.Prompt.Log.info(`Skill: ${chunkBWDTT6SA_cjs.e(chunkHOK3SUH4_cjs.B(k))}`),terminal.Prompt.Log.message(chunkBWDTT6SA_cjs.a(k.description));}else if(t.yes)g=c,terminal.Prompt.Log.info(`Installing all ${c.length} skills`);else {let k=[...c].sort((T,E)=>T.pluginName&&!E.pluginName?-1:!T.pluginName&&E.pluginName?1:T.pluginName&&E.pluginName&&T.pluginName!==E.pluginName?T.pluginName.localeCompare(E.pluginName):chunkHOK3SUH4_cjs.B(T).localeCompare(chunkHOK3SUH4_cjs.B(E))),x=k.some(T=>T.pluginName),_;if(x){let T=H=>H.split("-").map(B=>B.charAt(0).toUpperCase()+B.slice(1)).join(" "),E={};for(let H of k){let B=H.pluginName?T(H.pluginName):"Other";E[B]||(E[B]=[]),E[B].push({value:H,label:chunkHOK3SUH4_cjs.B(H),hint:H.description.length>60?H.description.slice(0,57)+"...":H.description});}_=await terminal.Prompt.groupMultiselect({message:`Select skills to install ${chunkBWDTT6SA_cjs.a("(space to toggle)")}`,options:E,required:!0});}else {let T=k.map(E=>({value:E,label:chunkHOK3SUH4_cjs.B(E),hint:E.description.length>60?E.description.slice(0,57)+"...":E.description}));_=await terminal.Prompt.multiselect({message:"Select skills to install",options:T,required:!0});}terminal.Prompt.isCancel(_)&&(await de(p),terminal.Prompt.cancel("Installation cancelled")),g=_;}let m=chunkHOK3SUH4_cjs.a(d),S=m?chunkQ2MOP5ZW_cjs.c(m,g.map(k=>chunkHOK3SUH4_cjs.B(k))):Promise.resolve(null),v,L=Object.keys(chunkJUNIAQ2A_cjs.b),j=o?"global":"project",y=[];if(t.agent&&t.agent.length>0){let k=chunkJUNIAQ2A_cjs.p(t.agent);k.length>0&&(terminal.Prompt.Log.error(`Invalid agents: ${k.join(", ")}`),terminal.Prompt.Log.info(`Valid agents: ${L.join(", ")}`),await de(p),process.exit(1)),v=chunkJUNIAQ2A_cjs.q(t.agent),t.agent.includes("*")&&terminal.Prompt.Log.info(`Installing to all ${v.length} agents`);}else {u.start("Loading agents...");let k=await chunkJUNIAQ2A_cjs.c(),x=Object.keys(chunkJUNIAQ2A_cjs.b).length;if(u.stop(`${x} agents`),k.includes("eve")&&(t.yes||!r.isAgent)){let _=t.yes?!0:await terminal.Prompt.confirm({message:oo(g),initialValue:!0});if(terminal.Prompt.isCancel(_)&&(await de(p),terminal.Prompt.cancel("Installation cancelled")),_)v=["eve"],terminal.Prompt.Log.info(`Installing to: ${chunkBWDTT6SA_cjs.e(vl)}`);else {let T=await wl({global:j==="global"});terminal.Prompt.isCancel(T)&&(await de(p),terminal.Prompt.cancel("Installation cancelled")),y=T.locked,v=[...T.locked,...T.selected];}}else if(k.length===0)if(t.yes)v=L,terminal.Prompt.Log.info("Installing to all agents");else {terminal.Prompt.Log.info("Select agents to install skills to");let _=Object.entries(chunkJUNIAQ2A_cjs.b).filter(([E])=>E!=="eve").map(([E,H])=>({value:E,label:H.displayName})),T=await po("Which agents do you want to install to?",_);terminal.Prompt.isCancel(T)&&(await de(p),terminal.Prompt.cancel("Installation cancelled")),v=T;}else if(k.length===1||t.yes)if(v=Sl(k,j),k.length===1){let _=k[0];terminal.Prompt.Log.info(`Installing to: ${chunkBWDTT6SA_cjs.e(chunkJUNIAQ2A_cjs.b[_].displayName)}`);}else terminal.Prompt.Log.info(`Installing to: ${k.map(_=>chunkBWDTT6SA_cjs.e(chunkJUNIAQ2A_cjs.b[_].displayName)).join(", ")}`);else {let _=await wl({global:j==="global"});terminal.Prompt.isCancel(_)&&(await de(p),terminal.Prompt.cancel("Installation cancelled")),y=_.locked,v=[..._.locked,..._.selected];}}t.subagent&&t.subagent.length>0&&!v.includes("eve")&&(v=[...v,"eve"]);let A=[void 0];if(v.includes("eve")){let k=chunkJUNIAQ2A_cjs.f(process.cwd());if(t.subagent&&t.subagent.length>0)A=t.subagent.map(x=>x==="root"||x==="."?void 0:x);else if(k.length>0&&!t.yes){let x=[{value:"",label:"Root agent",hint:"agent/skills"},...k.map(T=>({value:T,label:T,hint:`agent/subagents/${T}/skills`}))],_=await terminal.Prompt.multiselect({message:"Where should Eve skills be installed?",options:x,initialValues:[""],required:!0});terminal.Prompt.isCancel(_)&&(await de(p),terminal.Prompt.cancel("Installation cancelled")),A=_.map(T=>T===""?void 0:T);}}let R=ro(v,A),O=t.copy?"copy":"symlink";if(R.every(k=>k.agent==="eve"))O="copy";else if(t.copy||t.yes)O="copy";else {let k=await terminal.Prompt.select({message:"Installation method",options:[{value:"symlink",label:"Share (Recommended)",hint:"Single source: 1 copy in .agents/skills + symlinks for non-universal agents"},{value:"copy",label:"Independent",hint:"Physical copy in each agent dir; updates must be re-run per agent"}]});terminal.Prompt.isCancel(k)&&(await de(p),terminal.Prompt.cancel("Installation cancelled")),O=k;}let N=process.cwd(),F=[],V=o?null:await chunkHOK3SUH4_cjs.t(N),Q=await Promise.all(g.flatMap(k=>R.map(async x=>{let _=await chunkIJI72D6W_cjs.l(k.name,x.agent,{global:o,eveSubagent:x.subagent}),T=_.installed,E;try{E=await chunkE7AHWFZN_cjs.b(k.path);}catch{E=void 0;}let B=V?.skills[k.name]?.computedHash,ee=!Ut(!1,B,E),ie=T&&_.mode==="copy"&&O==="copy"&&ee,ce=!!T;return {skillName:k.name,target:x,installed:T,installedMode:_.mode,sourceHash:E,upToDate:!!ie,overwrite:ce}}))),we=new Map,le=new Map;for(let{skillName:k,target:x,overwrite:_,upToDate:T}of Q)we.has(k)||(we.set(k,new Map),le.set(k,new Map)),we.get(k).set(Ft(x),_),le.get(k).set(Ft(x),T);let X={},ve=[];for(let k of g)if(k.pluginName){let x=k.pluginName;X[x]||(X[x]=[]),X[x].push(k);}else ve.push(k);let Ae=k=>{for(let x of k){F.length>0&&F.push("");let _=R[0];R.length>1&&(_=R.find(ie=>chunkJUNIAQ2A_cjs.o(ie.agent,o?"global":"project"))??R[0]);let T=chunkIJI72D6W_cjs.o(x.name,{global:o,agent:_.agent,eveSubagent:_.subagent}),E=gs(T,N);F.push(`${chunkBWDTT6SA_cjs.e(E)}`),F.push(...ao(R,O,o,y));let H=we.get(x.name),B=R.filter(ee=>!chunkJUNIAQ2A_cjs.o(ee.agent,o?"global":"project")&&H?.get(Ft(ee))).map(dt);B.length>0&&F.push(` ${chunkBWDTT6SA_cjs.d("overwrites:")} ${ye(B)}`);}},he=Object.keys(X).sort();for(let k of he){let x=k.split("-").map(_=>_.charAt(0).toUpperCase()+_.slice(1)).join(" ");F.push(""),F.push(chunkBWDTT6SA_cjs.f(x)),Ae(X[k]);}ve.length>0&&(he.length>0&&(F.push(""),F.push(chunkBWDTT6SA_cjs.f("General"))),Ae(ve)),console.log(),terminal.note(F.join(`
8
8
  `),"Installation Summary");try{let k=await Promise.race([S,new Promise(x=>setTimeout(()=>x(null),to))]);if(k&&m){let x=lo(k,g.map(_=>({slug:chunkHOK3SUH4_cjs.B(_),displayName:chunkHOK3SUH4_cjs.B(_)})),m);x.length>0&&terminal.note(x.join(`
9
9
  `),"Security Risk Assessments");}}catch{}if(!t.yes){let k=await terminal.Prompt.confirm({message:"Proceed with installation?"});(terminal.Prompt.isCancel(k)||!k)&&(await de(p),terminal.Prompt.cancel("Installation cancelled"));}u.start("Installing skills...");let Te=[],qe=await Promise.all(g.map(async k=>{let x=new Map;for(let T of R){let E=chunkIJI72D6W_cjs.g(T.agent,o,N,T.subagent),H=(T.agent==="eve"||T.agent==="easbot")&&O==="symlink",B=O==="copy"||H?E:chunkIJI72D6W_cjs.e(o,N),ee=chunkIJI72D6W_cjs.d(k.name||path.basename(k.path)),ie=path.join(B,ee),ce=path.join(E,ee),M=ie,Y=x.get(M);Y||(Y={canonicalDir:ie,members:[]},x.set(M,Y)),Y.members.push({target:T,agentDir:ce});}return (await Promise.all([...x.values()].map(async T=>{let[E,...H]=T.members;if(!E)return [];if(le.get(k.name)?.get(Ft(E.target))??!1)return T.members.map(({target:ce,agentDir:M})=>({skill:chunkHOK3SUH4_cjs.B(k),agent:dt(ce),pluginName:k.pluginName,success:!0,path:M,canonicalPath:M,mode:O,skipped:!0,skippedReason:"up-to-date"}));let ee=await eo(k,E.target,E.agentDir,{installMode:O,installGlobally:o,cwd:N,tempDir:p}),ie=await Promise.all(H.map(async({target:ce,agentDir:M})=>{let Y=O==="copy"?await chunkIJI72D6W_cjs.j(T.canonicalDir,M,{agentType:ce.agent}):await chunkIJI72D6W_cjs.i(T.canonicalDir,M,{isGlobal:o,agentType:ce.agent,cwd:N,storePath:k.path});return {skill:chunkHOK3SUH4_cjs.B(k),agent:dt(ce),pluginName:k.pluginName,...Y}}));return [ee,...ie]}))).flat()}));for(let k of qe)Te.push(...k);u.stop("Installation complete"),console.log();let Ne=Te.filter(k=>k.success),kt=Te.filter(k=>!k.success),Ke={};for(let k of g)if(p&&k.path===p)Ke[k.name]="SKILL.md";else if(p&&k.path.startsWith(p+path.sep))Ke[k.name]=`${k.path.slice(p.length+1).split(path.sep).join("/")}/SKILL.md`;else if(p&&k.path.startsWith(p)){let x=p.split(path.sep).join("/"),_=k.path.split(path.sep).join("/");_.startsWith(`${x}/`)&&(Ke[k.name]=`${_.slice(x.length+1)}/SKILL.md`);}let Ve=chunkHOK3SUH4_cjs.a(d),vs=Qn(d.url,Ve);if(Ve&&(chunkHOK3SUH4_cjs.b(Ve)?f.then(x=>{x===!1&&chunkQ2MOP5ZW_cjs.d({event:"install",source:Ve,skills:g.map(_=>_.name).join(","),agents:v.join(","),...o&&{global:"1"},skillFiles:JSON.stringify(Ke)});}):chunkQ2MOP5ZW_cjs.d({event:"install",source:Ve,skills:g.map(x=>x.name).join(","),agents:v.join(","),...o&&{global:"1"},skillFiles:JSON.stringify(Ke)})),Ne.length>0&&o){let k=new Set(Ne.map(x=>x.skill));for(let x of g){if(!k.has(chunkHOK3SUH4_cjs.B(x)))continue;let{derivePluginSlug:_,findSkillByLocation:T,readStoreIndex:E}=await import('./store-2ULHEVHS.cjs'),H=chunkHOK3SUH4_cjs.L(d),B;{let Y=(await E()).markets[H],fe=Y?.plugins&&Object.keys(Y.plugins).find(xe=>Y.plugins[xe]?.skills[x.name]);fe?B=fe.slice(H.length+1):B=_(d,void 0,x.pluginName);}let ee,ie;{let M=await T(H,`${H}:${B}`,x.name);ee=M?.entry.computedHash,ie=M?.entry.skillPath;}if(ie===void 0){let M=d.type==="local"?d.localPath??d.url:d.url;if(x.path.startsWith(M))ie=utils.Filesystem.relative(M,x.path).replace(/^\/+/,"");else {let Y=Ke[x.name];Y&&(ie=utils.Filesystem.toUnixPath(utils.Filesystem.dirname(Y)));}}ee===void 0&&(ee=await chunkE7AHWFZN_cjs.b(x.path));let ce=`${H}:${B}`;await chunkBWDTT6SA_cjs.r(x.name,{source:vs||Ve||d.url,sourceType:d.type,ref:d.ref,...ie&&{skillPath:ie},computedHash:ee,marketId:H,pluginId:ce});}}if(Ne.length>0&&!o){let k=new Set(Ne.map(T=>T.skill)),x=v.includes("eve")?A.map(T=>T??""):void 0,_=x&&(x.length>1||x.some(T=>T!==""));for(let T of g)if(k.has(chunkHOK3SUH4_cjs.B(T)))try{let{derivePluginSlug:E,findSkillByLocation:H,readStoreIndex:B}=await import('./store-2ULHEVHS.cjs'),ee=chunkHOK3SUH4_cjs.L(d),ie=g.find(xe=>chunkHOK3SUH4_cjs.B(xe)===T.name),ce;{let Ce=(await B()).markets[ee],ke=Ce?.plugins&&Object.keys(Ce.plugins).find(Oe=>Ce.plugins[Oe]?.skills[T.name]);ke?ce=ke.slice(ee.length+1):ce=E(d,void 0,ie?.pluginName);}let M,Y;{let xe=await H(ee,`${ee}:${ce}`,T.name);M=xe?.entry.computedHash,Y=xe?.entry.skillPath??Ke[T.name];}M===void 0&&(M=await chunkE7AHWFZN_cjs.b(T.path));let fe=`${ee}:${ce}`;await chunkHOK3SUH4_cjs.v(T.name,{source:vs||d.url,ref:d.ref,sourceType:d.type,...Y&&{skillPath:Y},computedHash:M,marketId:ee,pluginId:fe,..._&&{subagents:x}},N);}catch{}}if(Ne.length>0){let k=new Map,x={},_=[];for(let M of Ne){let Y=k.get(M.skill)||[];if(Y.push(M),k.set(M.skill,Y),Y.length===1)if(M.pluginName){let fe=M.pluginName;x[fe]||(x[fe]=[]),x[fe].push(M);}else _.push(M);}let T=k.size,E=Ne.filter(M=>M.mode==="symlink"&&M.symlinkFailed),H=E.map(M=>M.agent),B=[],ee=M=>{for(let Y of M){let fe=k.get(Y.skill)||[],xe=fe[0];if(B.push(`${terminal.Symbol.statusIcon("success")} ${Y.skill}`),xe.canonicalPath){let ke=gs(xe.canonicalPath,N);B.push(` ${chunkBWDTT6SA_cjs.a("source:")} ${ke}`);}let Ce=new Map;for(let ke of fe){if(ke.symlinkFailed||ke.skipped||xe.canonicalPath&&ke.path===xe.canonicalPath)continue;let Oe=ke.path;Ce.has(Oe)?Ce.get(Oe)!=="symlink"&&ke.mode==="symlink"&&Ce.set(Oe,"symlink"):Ce.set(Oe,ke.mode);}for(let[ke,Oe]of Ce){let pn=gs(ke,N),un=Oe==="symlink"?chunkBWDTT6SA_cjs.e("(link)"):chunkBWDTT6SA_cjs.a("(copied)");B.push(` ${chunkBWDTT6SA_cjs.a("target:")} ${pn} ${un}`);}B.push(...co(fe,v,o));}},ie=Object.keys(x).sort();for(let M of ie){let Y=M.split("-").map(fe=>fe.charAt(0).toUpperCase()+fe.slice(1)).join(" ");B.push(""),B.push(chunkBWDTT6SA_cjs.f(Y)),ee(x[M]);}_.length>0&&(ie.length>0&&(B.push(""),B.push(chunkBWDTT6SA_cjs.f("General"))),ee(_));let ce=chunkBWDTT6SA_cjs.c(`Installed ${T} skill${T!==1?"s":""}`);terminal.note(B.join(`
@@ -3,7 +3,7 @@ import {b as b$1,a as a$1,d,c as c$2}from'./chunk-CFMOYU7R.mjs';import {f as f$1
3
3
  `)).digest("hex")},w=await C(d),$=await C(h);if(w&&$&&w===$){let S=(await Y(p,O(e,s),n))?.entry.computedHash;if(S)return {ok:true,hash:S,skipped:true}}try{await l(h,{recursive:!0,force:!0}),await Filesystem.cp(d,h);}catch{return {ok:false}}let c=await dl(h);if(!c)return {ok:false};let g=e.type==="local"?e.localPath??e.url:Filesystem.normalize(t);try{await aa([{skillName:n,parsed:e,sourceKey:p,sourcePath:g,storePath:u,skillPath:s,computedHash:c}]);}catch{}return {ok:true,hash:c}}function Ft(e,t,s){return e||!t||!s?true:t!==s}function Kn(e,t={}){let s={};t.cwd&&(s.cwd=t.cwd);let n=[];for(let l=0;l<e.length;l++){let o=e[l];if(o==="-g"||o==="--global")s.global=true;else if(o==="-p"||o==="--project")s.project=true;else if(o==="-y"||o==="--yes")s.yes=true;else if(o==="--all")s.all=true;else if(o==="--json")s.json=true;else if(o==="--force")s.force=true;else if(o==="-a"||o==="--agent")for(s.agent=s.agent??[];l+1<e.length&&!e[l+1].startsWith("-");)s.agent.push(e[++l]);else if(o==="-s"||o==="--skill")for(s.skills=s.skills??[];l+1<e.length&&!e[l+1].startsWith("-");)s.skills.push(e[++l]);else o&&!o.startsWith("-")&&n.push(o);}return n.length>0&&(s.skills=n),s}function Vr(e){let t=e||process.cwd();return existsSync(join(t,"skills-lock.json"))}async function Hn(e){if(e.skills&&e.skills.length>0)return e.global?"global":e.project?"project":"both";if(e.global&&e.project)return "both";if(e.global)return "global";if(e.project)return "project";if(e.yes||!process.stdin.isTTY)return "both";let t=await Prompt.select({message:"Update scope",options:[{value:"project",label:"Project",hint:"Update skills in current directory (committed with your project)"},{value:"global",label:"Global",hint:"Update skills in home directory (available across all projects)"},{value:"both",label:"Both",hint:"Update all skills (project + global)"}]});return Prompt.isCancel(t)&&Prompt.cancel("Cancelled"),t}function ml(e,t){if(!t||t.length===0)return true;let s=e.toLowerCase();return t.some(n=>{let l=n.toLowerCase();return l==="*"?true:l===s})}function Wn(e){return e.sourceType==="local"?"Local path":e.sourceType==="git"?"Git URL":e.sourceType==="well-known"?"Well-known skill":e.computedHash?e.skillPath?"No version tracking":"No skill path recorded":"Private or deleted repo"}function Bn(e){let t=e.sourceUrl;if(e.sourceType==="well-known"){let s=t.indexOf("/.well-known/");s!==-1&&(t=t.slice(0,s));}return cs(t,e.ref)}function Ot(e){if(e.length===0)return;console.log(),console.log(`${a}${e.length} skill(s) cannot be checked automatically:${i}`);let t=new Map;for(let s of e){let n=Bn(s),l=t.get(n)||[];l.push(s),t.set(n,l);}for(let[s,n]of t){if(n.length===1){let l=n[0];console.log(` ${U}\u2022${i} ${b$6(l.name)} ${a}(${l.reason})${i}`);}else {let l=n[0].reason,o=n.map(r=>b$6(r.name)).join(", ");console.log(` ${U}\u2022${i} ${o} ${a}(${l})${i}`);}console.log(` ${a}To update: ${U}easbot skills add ${s} -g -y${i}`);}}async function hl(e){let t={skills:[],refreshedSkillCount:0,upToDateSkillCount:0,failedSkillCount:0},s=new Map,n=(c,g)=>{let m=`${g}::${c}`,S=s.get(m);return S||(S={skillName:c,scope:g,sharedAgents:[],copiedAgents:[],linkedAgents:[],upToDateAgents:[],deadLinkAgents:[],failed:[],ok:true,failedCount:0},s.set(m,S),t.skills.push(S)),S},l=e.scope??"both",o$1=q$1(e.agentFilter??[]),r=o$1.length>0?o$1:void 0,u=(await a$5({scope:l,cwd:e.cwd,agentFilter:r})).map(c=>({name:c.name,description:"",path:c.skillDir,canonicalPath:c.skillDir,scope:c.scope,agents:[...c.agents]})),d=e.skillNames??[];if(!(d.length===1&&d[0]==="*")){let c=new Set(d.map(g=>g.toLowerCase()));u=u.filter(g=>c.has(g.name.toLowerCase()));}let{readLocalLock:h}=await import('./local-lock-UYZTKIET.mjs'),{readSkillLock:f}=await import('./skill-lock-CDMLVBYH.mjs'),C=await h(),w=await f();for(let c of u){let g=c.scope==="global"?w.skills[c.name]:C.skills[c.name];if(!g?.marketId||!g.pluginId)continue;let m=await Y(g.marketId,g.pluginId,c.name);if(!m)continue;let{readStoreIndex:S}=await import('./store-FRXO6UWU.mjs'),L=(await S()).markets[m.marketId];if(!L)continue;let y=`${L.storePath.replace(/\\/g,"/").replace(/\/+$/,"")}/${m.entry.skillPath}`.replace(/\\/g,"/");c.path=y,c.canonicalPath=y;}let $=new Map;for(let c of u){let g=`${c.scope}::${c.name}::${c.path}`;$.set(g,c);}for(let c of d){if(c==="*")continue;let g=c.replace(/\.+$/,""),m=d.indexOf(c),v=e.skillStorePaths?.[m]?.split(/[\\/]/).filter(Boolean).pop();if(v){for(let[L,j]of $)if(L.startsWith(`${j.scope}::`)&&L.endsWith(`::${v}`)){let y=`${j.scope}::${g}::${j.path}`;$.has(y)||$.set(y,j);break}}}if($.size===0)return t;for(let[c,g]of $){let S=c.split("::")[1].replace(/\.+$/,""),v=g.path,L=n(S,g.scope),y$1=existsSync(v)?await y(`${v}/SKILL.md`.replace(/\\/g,"/")):void 0;if(!y$1){if(!await zn(S,g.scope==="global"))continue;for(let O of g.agents)L.failed.push({agent:O,reason:"store source missing \u2014 run `easbot skills add <source>` to rebuild"}),L.failedCount++,L.ok=false;continue}let A=y$1;for(let R of g.agents){let O=o(R,g.scope),N=await h$2(A,R,{global:g.scope==="global",mode:"symlink",cwd:e.cwd});if(!N.success){L.failed.push({agent:R,reason:N.error??"install failed"}),L.failedCount++,L.ok=false;continue}N.skippedReason==="up-to-date"?L.upToDateAgents.push(R):O?L.sharedAgents.push(R):L.copiedAgents.push(R);}}for(let c of t.skills){let g=c.failedCount>0,m=c.sharedAgents.length+c.copiedAgents.length+c.linkedAgents.length>0,S=c.upToDateAgents.length+c.deadLinkAgents.length>0||m;g?t.failedSkillCount++:m?t.refreshedSkillCount++:S&&t.upToDateSkillCount++;}return t}async function zn(e,t$1){return t$1?(await l$3()).skills[e]:(await t()).skills[e]}function Jn(e){let t=[...e.skills].sort((o,r)=>o.skillName.localeCompare(r.skillName)),s=[];for(let o of t){let r=[...o.sharedAgents,...o.copiedAgents,...o.linkedAgents,...o.upToDateAgents];r.length!==0&&s.push({skill:o.skillName,agents:r});}let n=["global","project"],l=[];for(let o of n){let r=e.skills.filter(u=>u.scope===o);if(r.length===0)continue;let p=[...r].sort((u,d)=>u.skillName.localeCompare(d.skillName));for(let u of p){let d=[];u.sharedAgents.length>0&&d.push({label:"universal",agents:u.sharedAgents}),u.copiedAgents.length>0&&d.push({label:"copied",agents:u.copiedAgents}),u.linkedAgents.length>0&&d.push({label:"symlinked",agents:u.linkedAgents}),u.upToDateAgents.length>0&&d.push({label:"up-to-date",agents:u.upToDateAgents}),l.push({scope:o,skill:u.skillName,sections:d,failed:u.failed.map(h=>({agent:h.agent,reason:h.reason}))});}}return {updatingFor:s,sections:l,summary:{refreshed:e.refreshedSkillCount,upToDate:e.upToDateSkillCount,failed:e.failedSkillCount}}}function kl(e){if(e.skills.length===0)return;let t=Jn(e),s=l=>{let o=l.map(r=>b$2[r]?.displayName??r);return o.length<=5?o.join(", "):`${o.slice(0,5).join(", ")} +${o.length-5} more`};if(t.updatingFor.length>0){console.log(`${U}Updating for:${i}`);for(let l of t.updatingFor){let o=s(l.agents);console.log(` ${a}\u2514${i} ${Te}${b$6(l.skill)}${i} ${a}(${o})${i}`);}}let n=null;for(let l of t.sections){if(l.scope!==n&&(console.log(`${G}${l.scope==="global"?"Global Skills":"Project Skills"}${i}`),n=l.scope),console.log(` ${a}\u2514${i} ${Te}${b$6(l.skill)}${i}`),l.sections.length===0&&l.failed.length===0){console.log(` ${a}\u2514(no install targets)${i}`);continue}for(let o of l.sections)console.log(` ${a}\u2514${i} (${o.agents.length} agents) ${o.label}: ${s(o.agents)}`);for(let{agent:o,reason:r}of l.failed){let p=b$2[o]?.displayName??o;console.log(` ${U}\u2717 ${p}:${i} ${a}${r}${i}`);}}console.log();}async function Yn(e){let t$1=await t(),s=[];for(let[n,l]of Object.entries(t$1.skills))ml(n,e)&&l.sourceType!=="node_modules"&&s.push({name:n,source:l.source,entry:l});return s}async function qn(e$2={}){let t=e$2.cwd||process.cwd(),s=await l$3(),n=Object.keys(s.skills),l=0,o=0,r=0;if(n.length===0)return note(e$2.skills&&e$2.skills.length>0?`${d$1(`No installed skills found matching: ${e$2.skills.join(", ")}`)}`:`${a$3("No global skills tracked in lock file.")}`,e$1("Global Skills Update")),Prompt.outro(`${c$1("Done!")}${a$3(" Install with `easbot skills add <package> -g` to get started.")}`),{successCount:l,failCount:o,checkedCount:0};let{listInstalledSkills:p}=await import('./installer-UUEXYC7I.mjs'),u=await p({scope:"global",agentFilter:e$2.agent,cwd:t}),d=new Set(u.map(g=>g.name)),h=[],f=[],C=[];for(let g of n){if(!ml(g,e$2.skills))continue;let m=s.skills[g];if(m){if(!m.skillPath){f.push({name:g,reason:Wn(m),sourceUrl:m.source,sourceType:m.sourceType,ref:m.ref});continue}d.has(g)&&C.push({name:g,entry:m});}}let w=new Map;for(let g of C){let m=g.entry.source,S=w.get(m)||[];S.push(g),w.set(m,S);}for(let[g,m]of w){let S$1=m[0].entry,v=S$1.source,L$1=S$1.sourceType,j=null;if(process.stdout.write(`\r${a}Checking skills from source: ${g}${i}\x1B[K
4
4
  `),L$1==="github"){let A=e(v),R=a$2(A);if(R)try{let{fetchGitHubMarketSnapshot:O}=await import('./blob-WZAGX4RO.mjs'),D=await Ut(O(R,S$1.ref??void 0),Dt,`update market-snapshot ${g}`),F=(await S()).markets[L(A)]?.snapshotHash;if(D&&F&&F===D.snapshotHash){console.log(` ${a}\u2713 Source ${g} unchanged (market snapshotHash match)${i}`),r+=m.length;continue}}catch{}}let y=null;try{let A$1=L$1??"git",R=e(v),O=await Ut(Q({type:A$1,url:R.url,ref:S$1.ref??void 0,mode:"update"}),Dt,`update fetch ${g}`);if(j=O.tempDir,O.cloneError&&(y=O.cloneError),!y&&j){let D=await A(j),N=j.replace(/\\/g,"/").replace(/\/+$/,""),F=D.map(V=>{let Z=V.path.replace(/\\/g,"/");return relative(N,Z).split(sep).join("/")});if(D.length===0)y=new Error(`Source returned 0 skills (network 404 / empty repo / cache corruption): ${g}`);else {let V=new Set,Z=new Set(F),ve=e(v);for(let{name:se,entry:X}of m){if(V.has(se))continue;let xe=X.skillPath.split(sep).join("/").replace(/\/SKILL\.md$/,"");if(!Z.has(xe))continue;let ke=await fl(ve,j,xe,se);if(!ke.ok){f.push({name:se,reason:"Store sync failed",sourceUrl:X.source,sourceType:X.sourceType,ref:X.ref});continue}Ft(e$2.force,X.computedHash,ke.hash)&&h.push({name:se,source:g,entry:X});}}}}catch(A){y=A instanceof Error?A:new Error(String(A));}finally{j&&L$1!=="local"&&!ga(j)&&await l$1(j);}y&&(console.log(` ${a}\u2717 Failed to check skills from ${g}: ${y.message}${i}`),f.push(...gl(y,m)));}C.length>0&&process.stdout.write("\r\x1B[K");let $=C.length+f.length+r;if(C.length===0&&f.length===0)return e$2.skills||console.log(`${a}No global skills to check.${i}`),{successCount:l,failCount:o,checkedCount:0};if(C.length===0&&f.length>0)return Ot(f),{successCount:l,failCount:o,checkedCount:$};if(h.length===0)return console.log(`${U}\u2713 All global skills are up to date${i}`),{successCount:l,failCount:o,checkedCount:$};if(console.log(`${U}Found ${h.length} global update(s)${i}`),console.log(),h.length===0)return Ot(f),{successCount:l,failCount:o,checkedCount:$};try{let g=[],m=[];for(let v of h){g.push(v.name);let L=e(v.entry.source),j=M(L),A=(v.entry.skillPath??v.name).split(/[\\/]/).join("/").replace(/\/SKILL\.md$/,"");m.push(join(j,A));}let S=await hl({skillNames:g,skillStorePaths:m,scope:"global",agentFilter:e$2.agent,cwd:t});kl(S),S.failedSkillCount>0?o+=S.failedSkillCount:l+=S.skills.length;}catch(g){o+=h.length,console.log(`${a}\u2717 Failed to refresh: ${g instanceof Error?g.message:String(g)}${i}`);}if(h.length>0)try{let g=await l$3(),m=new Date().toISOString(),S=!1,v=0;for(let L of h){let j=g.skills[L.name];if(!j)continue;let y=e(L.entry.source),A=M(y),O=(L.entry.skillPath??L.name).split(/[\\/]/).join("/").replace(/\/SKILL\.md$/,""),D=join(A,O),N=await dl(D);N&&j.computedHash!==N&&(j.computedHash=N,j.updatedAt=m,S=!0,v++);}S&&(await m$1(g),console.log(`${a}\u2192 updated global lock: ${v} skill(s) refreshed, ${Object.keys(g.skills).length} total tracked${i}`));}catch(g){console.log(`${a}\u26A0 Failed to write global lock: ${g instanceof Error?g.message:String(g)}${i}`);}Ot(f);let c=[];if(l>0&&o>0)c.push(`${c$1(`\u2713 ${l} refreshed`)} ${a$3("|")} ${b$4(`\u2717 ${o} failed`)}`);else if(l>0)c.push(`${c$1(`\u2713 ${l} refreshed`)}`);else if(o>0)c.push(`${b$4(`\u2717 ${o} failed`)}`);else if($>0)c.push(`${c$1("All global skills are up to date.")}`);else return {successCount:l,failCount:o,checkedCount:$};return f.length>0&&c.push(`${d$1(`\u26A0 ${f.length} skipped`)}`),console.log(),note(c.join(`
5
5
  `),e$1("Global Skills Update")),Prompt.outro(`${c$1("Done!")}${a$3(" Run `easbot skills list` to see current state.")}`),{successCount:l,failCount:o,checkedCount:$}}async function Vn(e$2={}){let t$1=e$2.cwd||process.cwd(),s=await Yn(e$2.skills),n=0,l=0,o=[];if(s.length===0)return e$2.skills||(console.log(`${a}No project skills to update.${i}`),console.log(`${a}Install project skills with${i} ${U}easbot skills add <package>${i}`)),note(s.length===0&&e$2.skills?`${d$1(`No installed skills found matching: ${e$2.skills.join(", ")}`)}`:`${a$3("No project skills tracked in lock file.")}`,e$1("Project Skills Update")),Prompt.outro(`${c$1("Done!")}${a$3(" Install with `easbot skills add <package>` to get started.")}`),{successCount:n,failCount:l,foundCount:0};let{listInstalledSkills:r}=await import('./installer-UUEXYC7I.mjs'),p=await r({scope:"project",agentFilter:e$2.agent,cwd:t$1}),u=new Set(p.map(c=>c.name)),d=s.filter(c=>u.has(c.name)),h=d.filter(c=>c.entry.skillPath),f=d.filter(c=>!c.entry.skillPath);if(h.length===0)return console.log(`${a}No project skills can be updated in place.${i}`),pl(f),{successCount:n,failCount:l,foundCount:s.length};console.log(`${U}Checking ${h.length} skill(s)...${i}`),console.log();let C=new Map;for(let c of h){let g=c.entry.source,m=C.get(g)||[];m.push(c),C.set(g,m);}let w=await t(),$=[];for(let[c,g]of C){let m=g[0].entry,S$1=m.source,v=m.ref;if(m.sourceType==="github"){let N=e(S$1),F=a$2(N);if(F)try{let{fetchGitHubMarketSnapshot:V}=await import('./blob-WZAGX4RO.mjs'),Z=await Ut(V(F,m.ref??void 0),Dt,`update market-snapshot ${c}`),se=(await S()).markets[L(N)]?.snapshotHash;if(Z&&se&&se===Z.snapshotHash){console.log(` ${a}\u2713 Source ${c} unchanged (market snapshotHash match)${i}`);continue}}catch{}}Object.entries(w.skills).filter(([N,F])=>F.source===c).map(([N,F])=>N);let j=null,y=[],A$1=new Map,R=null;try{let N=m.sourceType??"git",F=e(S$1),V=await Ut(Q({type:N,url:F.url,ref:v,mode:"update"}),Dt,`update fetch ${c}`);if(j=V.tempDir,V.cloneError)R=V.cloneError;else {let Z=await A(j);if(Z.length===0)R=new Error(`Source returned 0 skills (network 404 / empty repo / cache corruption): ${c}`);else {let ve=Z.map(X=>{let Ae=relative(j,X.path);return join(Ae,"SKILL.md").split(sep).join("/")}),se=e(S$1);for(let X of Z){let xe=join(relative(j,X.path),"SKILL.md").split(sep).join("/").replace(/\/SKILL\.md$/,""),ke=await fl(se,j,xe,X.name);ke.ok&&ke.hash&&A$1.set(X.name,ke.hash);}}}}catch(N){R=N instanceof Error?N:new Error(String(N));}finally{j&&!ga(j)&&await l$1(j);}if(R){console.log(` ${a}\u2717 Failed to check for deleted skills from ${c}: ${R.message}${i}`);let N=g.map(F=>({name:F.name,entry:{source:F.source,sourceType:F.entry.sourceType,ref:F.entry.ref}}));$.push(...gl(R,N));continue}let O=g.filter(N=>!y.includes(N.name)),D=[];for(let N of O){let F=w.skills[N.name],V=A$1.get(N.name);if(!V)continue;let Z=F?.computedHash;if(!Ft(e$2.force,Z,V))continue;let ve=e(N.entry.source),se=M(ve),Ae=(N.entry.skillPath??N.name).split(/[\\/]/).join("/").replace(/\/SKILL\.md$/,"");D.push({name:N.name,source:N.entry.source,skillPath:Ae,storeRoot:se});}if(D.length!==0)try{let N=D.map(Z=>Z.name),F=D.map(Z=>join(Z.storeRoot,Z.skillPath)),V=await hl({skillNames:N,skillStorePaths:F,scope:"project",agentFilter:e$2.agent,cwd:t$1});kl(V),V.failedSkillCount>0?l+=V.failedSkillCount:n+=V.skills.length;for(let Z of D)o.push(Z.name);}catch(N){l+=D.length,console.log(` ${a}\u2717 Failed to refresh: ${N instanceof Error?N.message:String(N)}${i}`);}}if(pl(f),Ot($),h.length>0)if(console.log(),o.length>0||$.length>0||f.length>0){let c=[];o.length>0&&c.push(`${c$1(`\u2713 Refreshed ${o.length} skill(s)${i$3("")}`)}`),n>0&&l>0?c.push(`${c$1(`\u2713 ${n} ok`)} ${a$3("|")} ${b$4(`\u2717 ${l} failed`)}`):n>0?c.push(`${c$1(`\u2713 ${n} ok`)}`):l>0&&c.push(`${b$4(`\u2717 ${l} failed`)}`),$.length>0&&c.push(`${d$1(`\u26A0 ${$.length} skipped`)}`),f.length>0&&c.push(`${a$3(`${f.length} legacy (cannot update)`)}`),note(c.join(`
6
- `),e$1("Project Skills Update")),Prompt.outro(`${c$1("Done!")}${a$3(" Run `easbot skills list` to see current state.")}`);}else note(`${c$1("All project skills are up to date.")}`,e$1("Project Skills Update")),Prompt.outro(`${c$1("Done!")}`);if(n>0&&o.length>0)try{let c=await t(),g=new Date().toISOString(),m=!1,S=0;for(let v of o){let L=c.skills[v];if(!L)continue;let y=(await Y(L.marketId,L.pluginId,v))?.entry.computedHash;y&&L.computedHash!==y&&(L.computedHash=y,L.updatedAt=g,m=!0,S++);}if(m){let{writeLocalLock:v}=await import('./local-lock-UYZTKIET.mjs');await v(c),console.log(`${a}\u2192 updated project lock: ${S} skill(s) refreshed, ${Object.keys(c.skills).length} total tracked${i}`);}}catch(c){console.log(`${a}\u26A0 Failed to write project lock: ${c instanceof Error?c.message:String(c)}${i}`);}return {successCount:n,failCount:l,foundCount:s.length}}function pl(e){if(e.length!==0){console.log(),console.log(`${a}${e.length} project skill(s) cannot be updated automatically (installed before skillPath tracking):${i}`);for(let t of e){let s=cs(t.entry.source,t.entry.ref);console.log(` ${U}\u2022${i} ${b$6(t.name)}`),console.log(` ${a}To refresh: ${U}easbot skills add ${s} -y${i}`);}}}async function yl(e=[],t={}){let s=Kn(e,t);if(s.skills?.every(p=>/^[^\s]+\.[a-zA-Z0-9]+$/.test(p))&&(s.skills=["*"]),s.all===true&&(s.yes=true,(!s.skills||s.skills.length===0||s.skills.every(p=>/^[^\s]+\.[a-zA-Z0-9]+$/.test(p)))&&(s.skills=["*"]),(!s.agent||s.agent.length===0)&&(s.agent=["*"])),s.agent&&s.agent.length>0){let p$1=p(s.agent);if(p$1.length>0){let u=Object.keys(b$2);console.log(`${Me}Invalid agents: ${p$1.join(", ")}${i}`),console.log(`${a}Valid agents: ${u.join(", ")}${i}`),console.log(`${a}Tip: wrap '*' in quotes to avoid shell expansion: '-a' '"*"'${i}`),process.exit(1);}}let n=await Hn(s);s.skills?console.log(`${U}Updating ${s.skills.join(", ")}...${i}`):console.log(`${U}Checking for skill updates...${i}`),console.log();let l=0,o=0,r=0;if(n==="global"||n==="both"){n==="both"&&!s.skills&&console.log(`${G}Global Skills${i}`);let{successCount:p,failCount:u,checkedCount:d}=await qn(s);l+=p,o+=u,r+=d,n==="both"&&!s.skills&&console.log();}if(n==="project"||n==="both"){n==="both"&&!s.skills&&console.log(`${G}Project Skills${i}`);let{successCount:p,failCount:u,foundCount:d}=await Vn(s);l+=p,o+=u,r+=d;}s.skills&&r===0&&console.log(`${a}No installed skills found matching: ${s.skills.join(", ")}${i}`),console.log(),l>0&&console.log(`${U}\u2713 Updated ${l} skill(s)${i}`),o>0&&console.log(`${a}Failed to update ${o} skill(s)${i}`),d({event:"update",scope:n,skillCount:String(l+o),successCount:String(l),failCount:String(o)}),s.json&&J(z({scope:n,totals:{checked:r,refreshed:l,failed:o},detail:{project:r>0,global:r>0},...s.skills&&{skills:s.skills},...s.agent&&{agents:s.agent}},{scope:n,checked:r,refreshed:l,failed:o})),console.log();}var $l={version:"0.3.20"};var Al="eve agent";function eo(e,t){return e.startsWith("git@")||e.startsWith("ssh://")?e:t}function xl(e){b$1(e);}async function to(e,t,s,n){let{agent:l,subagent:o}=t,{installMode:r,installGlobally:p}=n,h=await h$2(e,l,{global:p,mode:r,eveSubagent:o});return {skill:B(e),agent:ft(t),pluginName:e.pluginName,...h}}var so=(()=>{let e=process.env.SKILLS_AUDIT_DISPLAY_TIMEOUT_MS;if(!e)return 3e4;let t=Number.parseInt(e,10);return Number.isFinite(t)&&t>0?t:3e4})();function Sl(e){switch(e){case "critical":return b$4(f$1("Critical Risk"));case "high":return b$4("High Risk");case "medium":return d$1("Med Risk");case "low":return c$1("Low Risk");case "safe":return c$1("Safe");default:return a$3("--")}}function lo(e){if(!e)return a$3("--");let t=e.alerts??0;return t>0?b$4(`${t} alert${t!==1?"s":""}`):c$1("0 alerts")}function it(e,t){let s=a$6(e),n=Math.max(0,t-s.length);return e+" ".repeat(n)}function no(e,t,s){if(!e)return [];if(!t.some(p=>{let u=e[p.slug];return u&&Object.keys(u).length>0}))return [];let l=Math.min(Math.max(...t.map(p=>p.displayName.length)),36),o=[],r=it("",l+2)+it(a$3("Gen"),18)+it(a$3("Socket"),18)+a$3("Snyk");o.push(r);for(let p of t){let u=e[p.slug],d=p.displayName.length>l?p.displayName.slice(0,l-1)+"\u2026":p.displayName,h=u?.ath?Sl(u.ath.risk):a$3("--"),f=u?.socket?lo(u.socket):a$3("--"),C=u?.snyk?Sl(u.snyk.risk):a$3("--");o.push(it(e$1(d),l+2)+it(h,18)+it(f,18)+C);}return o.push(""),o.push(`${a$3("Details:")} ${a$3(`https://skills.sh/${s}`)}`),o}function ds(e,t){let s=homedir();return e===s||e.startsWith(s+sep)?"~"+e.slice(s.length):e===t||e.startsWith(t+sep)?"."+e.slice(t.length):e}function $e(e,t=5){if(e.length<=t)return e.join(", ");let s=e.slice(0,t),n=e.length-t;return `${s.join(", ")} +${n} more`}function oo(e){let t=e.map(n=>e$1(B(n))),s=$e(t,3);return a$6(s).length<=80?s:`${e.length} selected skills`}function io(e){return `Detected an eve project. Install ${oo(e)} for your ${Al} to use?`}function ro(e,t,s){let n=[],l=[],o$1=[],r=new Map;if(e)for(let p of e)p.mode&&r.set(p.agent,p.mode);for(let p of t){let u=b$2[p].displayName,d=r.get(u);o(p,s?"global":"project")?n.push(u):d==="symlink"?o$1.push(u):l.push(u);}return {universal:n,copied:l,symlinked:o$1}}function ft(e){let t=b$2[e.agent].displayName;return e.subagent?`${t} (${e.subagent})`:t}function Mt(e){return e.subagent?`${e.agent}:${e.subagent}`:e.agent}function ao(e,t){let s=[];for(let n of e)if(n==="eve")for(let l of t)s.push({agent:n,subagent:l});else s.push({agent:n});return s}function co(e,t,s,n=[]){let l=[],o$1=e.filter(f=>!f.subagent).map(f=>f.agent),r=e.filter(f=>f.subagent).map(ft),p,u;if(n.length>0){let f=new Set(n);p=o$1.filter(C=>f.has(C)),u=o$1.filter(C=>!f.has(C));}else p=o$1.filter(f=>o(f,s?"global":"project")),u=o$1.filter(f=>!o(f,s?"global":"project"));let d=p.map(f=>b$2[f].displayName),h=u.map(f=>b$2[f].displayName);return t==="symlink"?(d.length>0&&l.push(` ${c$1("universal:")} ${$e(d)}`),h.length>0&&l.push(` ${a$3("symlinked:")} ${$e(h)}`),r.length>0&&l.push(` ${a$3("copied:")} ${$e(r)}`)):(d.length>0&&l.push(` ${c$1("universal:")} ${$e(d)}`),h.length>0&&l.push(` ${a$3("copied:")} ${$e(h)}`),r.length>0&&l.push(` ${a$3("copied (subagent):")} ${$e(r)}`)),l}function wl(e,t){let s=h(t),n=[...e];for(let l of s)n.includes(l)||n.push(l);return n}function po(e,t,s){let n=[],{universal:l,copied:o,symlinked:r}=ro(e,t,s),p=o,u=e.filter(d=>d.symlinkFailed&&!d.skipped).map(d=>d.agent);return l.length>0&&n.push(` ${c$1("universal:")} ${$e(l)}`),p.length>0&&n.push(` ${e$1("copied:")} ${$e(p)}`),r.length>0&&n.push(` ${a$3("symlinked:")} ${$e(r)}`),u.length>0&&n.push(` ${d$1("symlink-failed:")} ${$e(u)}`),n}async function uo(e,t){let s=[];return await Prompt.multiselect({message:e,options:t,initialValues:s,required:true})}async function vl(e){let t=e.global===true?"global":"project",s=u=>t!=="global"||b$2[u].globalSkillsDir!==void 0,n=h(t).filter(s),l=i$2(t).filter(u=>u!=="eve"&&s(u)),o={title:"Universal (.agents/skills)",items:n.map(u=>({value:u,label:b$2[u].displayName}))},r=l.map(u=>({value:u,label:b$2[u].displayName,hint:e.global?b$2[u].globalSkillsDir:b$2[u].skillsDir})),p=await Prompt.multiselect({message:"Which agents do you want to install to?",options:r,initialValues:[],lockedSection:o});if(Array.isArray(p)){let u=p,d=new Set(n),h=[],f=[],C=new Set;for(let w of u)C.has(w)||(C.add(w),d.has(w)?h.push(w):f.push(w));return {locked:h,selected:f}}return p}var go=$l.version;b$1(go);async function mt(e$3,t$1={}){let s=e$3[0],n=false,l$1=()=>{n||(Prompt.Log.message(a$3("Tip: use the --yes (-y) and --global (-g) flags to install without prompts.")),n=true);};if(!s){let{readStoreIndex:u,resolveDefaultSource:d}=await import('./store-FRXO6UWU.mjs'),h=await u();s=await d(h);}t$1.all&&(t$1.skill=["*"],t$1.agent=["*"],t$1.yes=true);let o$2=t$1.global??false;if(!(t$1.global!==void 0)&&!t$1.yes&&!t$1.all&&process.stdin.isTTY&&Object.values(b$2).some(f=>f.globalSkillsDir!==void 0)){let f=await Prompt.select({message:"Installation scope",options:[{value:false,label:"Project",hint:"Install in current directory (committed with your project)"},{value:true,label:"Global",hint:"Install in home directory (available across all projects)"}]});Prompt.isCancel(f)&&(await fe(null),Prompt.cancel("Installation cancelled")),o$2=f,Prompt.Log.info(`${f$1(o$2?"Global":"Project")} scope selected`);}let r$1=await nt();if(r$1.isAgent&&(t$1.yes=true,!t$1.agent||t$1.agent.length===0)){let u=al(r$1.agent.name);if(u){let d=o$2?"global":"project";t$1.agent=wl([u],d);}}console.log(),r$1.isAgent||Prompt.intro(" skills "),r$1.isAgent?Prompt.Log.info(Rt(r$1.agent.name)+" Agent detected \u2014 installing non-interactively"):!process.stdin.isTTY&&!t$1.yes&&l$1();let p$1=null;try{let u=Prompt.spinner();u.start("Parsing source...");let d$3=e(s);u.stop(`Source: ${d$3.type==="local"?d$3.localPath:d$3.url}${d$3.ref?` #${d$1(d$3.ref)}`:""}${d$3.subpath?` @${e$1(d$3.subpath)}`:""}`);let h=a$2(d$3),f$2=(()=>{if(!h)return Promise.resolve(null);let k=b$3(h);return k?c(k.owner,k.repo).catch(()=>null):Promise.resolve(null)})(),C$1=Array.isArray(t$1?.skill)&&t$1.skill.length>0||t$1.fullDepth===!0||!!d$3.subpath;u.start("Loading source...");let w;try{w=await da(d$3,{includeInternal:C$1,fullDepth:t$1.fullDepth});}catch(k){throw k instanceof R&&(u.stop(b$4("Path not found")),Prompt.outro(b$4(`Local path does not exist: ${k.localPath}`)),process.exit(1)),k}p$1=w.storeDir,u.stop(w.cacheHit?"Repository loaded from cache":w.source==="blob-fetch"?"Fetched via GitHub API":w.source==="well-known-fetch"?"Well-known index fetched":w.source==="local-cp"?"Local path cached":"Repository cloned");let $=w.skills,c$4=d$3.subpath?$.filter(k=>k.path.includes(`/${d$3.subpath}/`)||k.path.endsWith(`/${d$3.subpath}`)):$;if(u.start("Discovering skills..."),c$4.length===0&&w.cloneError){u.stop(b$4("Failed to clone repository"));for(let k of w.cloneError.message.split(`
6
+ `),e$1("Project Skills Update")),Prompt.outro(`${c$1("Done!")}${a$3(" Run `easbot skills list` to see current state.")}`);}else note(`${c$1("All project skills are up to date.")}`,e$1("Project Skills Update")),Prompt.outro(`${c$1("Done!")}`);if(n>0&&o.length>0)try{let c=await t(),g=new Date().toISOString(),m=!1,S=0;for(let v of o){let L=c.skills[v];if(!L)continue;let y=(await Y(L.marketId,L.pluginId,v))?.entry.computedHash;y&&L.computedHash!==y&&(L.computedHash=y,L.updatedAt=g,m=!0,S++);}if(m){let{writeLocalLock:v}=await import('./local-lock-UYZTKIET.mjs');await v(c),console.log(`${a}\u2192 updated project lock: ${S} skill(s) refreshed, ${Object.keys(c.skills).length} total tracked${i}`);}}catch(c){console.log(`${a}\u26A0 Failed to write project lock: ${c instanceof Error?c.message:String(c)}${i}`);}return {successCount:n,failCount:l,foundCount:s.length}}function pl(e){if(e.length!==0){console.log(),console.log(`${a}${e.length} project skill(s) cannot be updated automatically (installed before skillPath tracking):${i}`);for(let t of e){let s=cs(t.entry.source,t.entry.ref);console.log(` ${U}\u2022${i} ${b$6(t.name)}`),console.log(` ${a}To refresh: ${U}easbot skills add ${s} -y${i}`);}}}async function yl(e=[],t={}){let s=Kn(e,t);if(s.skills?.every(p=>/^[^\s]+\.[a-zA-Z0-9]+$/.test(p))&&(s.skills=["*"]),s.all===true&&(s.yes=true,(!s.skills||s.skills.length===0||s.skills.every(p=>/^[^\s]+\.[a-zA-Z0-9]+$/.test(p)))&&(s.skills=["*"]),(!s.agent||s.agent.length===0)&&(s.agent=["*"])),s.agent&&s.agent.length>0){let p$1=p(s.agent);if(p$1.length>0){let u=Object.keys(b$2);console.log(`${Me}Invalid agents: ${p$1.join(", ")}${i}`),console.log(`${a}Valid agents: ${u.join(", ")}${i}`),console.log(`${a}Tip: wrap '*' in quotes to avoid shell expansion: '-a' '"*"'${i}`),process.exit(1);}}let n=await Hn(s);s.skills?console.log(`${U}Updating ${s.skills.join(", ")}...${i}`):console.log(`${U}Checking for skill updates...${i}`),console.log();let l=0,o=0,r=0;if(n==="global"||n==="both"){n==="both"&&!s.skills&&console.log(`${G}Global Skills${i}`);let{successCount:p,failCount:u,checkedCount:d}=await qn(s);l+=p,o+=u,r+=d,n==="both"&&!s.skills&&console.log();}if(n==="project"||n==="both"){n==="both"&&!s.skills&&console.log(`${G}Project Skills${i}`);let{successCount:p,failCount:u,foundCount:d}=await Vn(s);l+=p,o+=u,r+=d;}s.skills&&r===0&&console.log(`${a}No installed skills found matching: ${s.skills.join(", ")}${i}`),console.log(),l>0&&console.log(`${U}\u2713 Updated ${l} skill(s)${i}`),o>0&&console.log(`${a}Failed to update ${o} skill(s)${i}`),d({event:"update",scope:n,skillCount:String(l+o),successCount:String(l),failCount:String(o)}),s.json&&J(z({scope:n,totals:{checked:r,refreshed:l,failed:o},detail:{project:r>0,global:r>0},...s.skills&&{skills:s.skills},...s.agent&&{agents:s.agent}},{scope:n,checked:r,refreshed:l,failed:o})),console.log();}var $l={version:"0.3.22"};var Al="eve agent";function eo(e,t){return e.startsWith("git@")||e.startsWith("ssh://")?e:t}function xl(e){b$1(e);}async function to(e,t,s,n){let{agent:l,subagent:o}=t,{installMode:r,installGlobally:p}=n,h=await h$2(e,l,{global:p,mode:r,eveSubagent:o});return {skill:B(e),agent:ft(t),pluginName:e.pluginName,...h}}var so=(()=>{let e=process.env.SKILLS_AUDIT_DISPLAY_TIMEOUT_MS;if(!e)return 3e4;let t=Number.parseInt(e,10);return Number.isFinite(t)&&t>0?t:3e4})();function Sl(e){switch(e){case "critical":return b$4(f$1("Critical Risk"));case "high":return b$4("High Risk");case "medium":return d$1("Med Risk");case "low":return c$1("Low Risk");case "safe":return c$1("Safe");default:return a$3("--")}}function lo(e){if(!e)return a$3("--");let t=e.alerts??0;return t>0?b$4(`${t} alert${t!==1?"s":""}`):c$1("0 alerts")}function it(e,t){let s=a$6(e),n=Math.max(0,t-s.length);return e+" ".repeat(n)}function no(e,t,s){if(!e)return [];if(!t.some(p=>{let u=e[p.slug];return u&&Object.keys(u).length>0}))return [];let l=Math.min(Math.max(...t.map(p=>p.displayName.length)),36),o=[],r=it("",l+2)+it(a$3("Gen"),18)+it(a$3("Socket"),18)+a$3("Snyk");o.push(r);for(let p of t){let u=e[p.slug],d=p.displayName.length>l?p.displayName.slice(0,l-1)+"\u2026":p.displayName,h=u?.ath?Sl(u.ath.risk):a$3("--"),f=u?.socket?lo(u.socket):a$3("--"),C=u?.snyk?Sl(u.snyk.risk):a$3("--");o.push(it(e$1(d),l+2)+it(h,18)+it(f,18)+C);}return o.push(""),o.push(`${a$3("Details:")} ${a$3(`https://skills.sh/${s}`)}`),o}function ds(e,t){let s=homedir();return e===s||e.startsWith(s+sep)?"~"+e.slice(s.length):e===t||e.startsWith(t+sep)?"."+e.slice(t.length):e}function $e(e,t=5){if(e.length<=t)return e.join(", ");let s=e.slice(0,t),n=e.length-t;return `${s.join(", ")} +${n} more`}function oo(e){let t=e.map(n=>e$1(B(n))),s=$e(t,3);return a$6(s).length<=80?s:`${e.length} selected skills`}function io(e){return `Detected an eve project. Install ${oo(e)} for your ${Al} to use?`}function ro(e,t,s){let n=[],l=[],o$1=[],r=new Map;if(e)for(let p of e)p.mode&&r.set(p.agent,p.mode);for(let p of t){let u=b$2[p].displayName,d=r.get(u);o(p,s?"global":"project")?n.push(u):d==="symlink"?o$1.push(u):l.push(u);}return {universal:n,copied:l,symlinked:o$1}}function ft(e){let t=b$2[e.agent].displayName;return e.subagent?`${t} (${e.subagent})`:t}function Mt(e){return e.subagent?`${e.agent}:${e.subagent}`:e.agent}function ao(e,t){let s=[];for(let n of e)if(n==="eve")for(let l of t)s.push({agent:n,subagent:l});else s.push({agent:n});return s}function co(e,t,s,n=[]){let l=[],o$1=e.filter(f=>!f.subagent).map(f=>f.agent),r=e.filter(f=>f.subagent).map(ft),p,u;if(n.length>0){let f=new Set(n);p=o$1.filter(C=>f.has(C)),u=o$1.filter(C=>!f.has(C));}else p=o$1.filter(f=>o(f,s?"global":"project")),u=o$1.filter(f=>!o(f,s?"global":"project"));let d=p.map(f=>b$2[f].displayName),h=u.map(f=>b$2[f].displayName);return t==="symlink"?(d.length>0&&l.push(` ${c$1("universal:")} ${$e(d)}`),h.length>0&&l.push(` ${a$3("symlinked:")} ${$e(h)}`),r.length>0&&l.push(` ${a$3("copied:")} ${$e(r)}`)):(d.length>0&&l.push(` ${c$1("universal:")} ${$e(d)}`),h.length>0&&l.push(` ${a$3("copied:")} ${$e(h)}`),r.length>0&&l.push(` ${a$3("copied (subagent):")} ${$e(r)}`)),l}function wl(e,t){let s=h(t),n=[...e];for(let l of s)n.includes(l)||n.push(l);return n}function po(e,t,s){let n=[],{universal:l,copied:o,symlinked:r}=ro(e,t,s),p=o,u=e.filter(d=>d.symlinkFailed&&!d.skipped).map(d=>d.agent);return l.length>0&&n.push(` ${c$1("universal:")} ${$e(l)}`),p.length>0&&n.push(` ${e$1("copied:")} ${$e(p)}`),r.length>0&&n.push(` ${a$3("symlinked:")} ${$e(r)}`),u.length>0&&n.push(` ${d$1("symlink-failed:")} ${$e(u)}`),n}async function uo(e,t){let s=[];return await Prompt.multiselect({message:e,options:t,initialValues:s,required:true})}async function vl(e){let t=e.global===true?"global":"project",s=u=>t!=="global"||b$2[u].globalSkillsDir!==void 0,n=h(t).filter(s),l=i$2(t).filter(u=>u!=="eve"&&s(u)),o={title:"Universal (.agents/skills)",items:n.map(u=>({value:u,label:b$2[u].displayName}))},r=l.map(u=>({value:u,label:b$2[u].displayName,hint:e.global?b$2[u].globalSkillsDir:b$2[u].skillsDir})),p=await Prompt.multiselect({message:"Which agents do you want to install to?",options:r,initialValues:[],lockedSection:o});if(Array.isArray(p)){let u=p,d=new Set(n),h=[],f=[],C=new Set;for(let w of u)C.has(w)||(C.add(w),d.has(w)?h.push(w):f.push(w));return {locked:h,selected:f}}return p}var go=$l.version;b$1(go);async function mt(e$3,t$1={}){let s=e$3[0],n=false,l$1=()=>{n||(Prompt.Log.message(a$3("Tip: use the --yes (-y) and --global (-g) flags to install without prompts.")),n=true);};if(!s){let{readStoreIndex:u,resolveDefaultSource:d}=await import('./store-FRXO6UWU.mjs'),h=await u();s=await d(h);}t$1.all&&(t$1.skill=["*"],t$1.agent=["*"],t$1.yes=true);let o$2=t$1.global??false;if(!(t$1.global!==void 0)&&!t$1.yes&&!t$1.all&&process.stdin.isTTY&&Object.values(b$2).some(f=>f.globalSkillsDir!==void 0)){let f=await Prompt.select({message:"Installation scope",options:[{value:false,label:"Project",hint:"Install in current directory (committed with your project)"},{value:true,label:"Global",hint:"Install in home directory (available across all projects)"}]});Prompt.isCancel(f)&&(await fe(null),Prompt.cancel("Installation cancelled")),o$2=f,Prompt.Log.info(`${f$1(o$2?"Global":"Project")} scope selected`);}let r$1=await nt();if(r$1.isAgent&&(t$1.yes=true,!t$1.agent||t$1.agent.length===0)){let u=al(r$1.agent.name);if(u){let d=o$2?"global":"project";t$1.agent=wl([u],d);}}console.log(),r$1.isAgent||Prompt.intro(" skills "),r$1.isAgent?Prompt.Log.info(Rt(r$1.agent.name)+" Agent detected \u2014 installing non-interactively"):!process.stdin.isTTY&&!t$1.yes&&l$1();let p$1=null;try{let u=Prompt.spinner();u.start("Parsing source...");let d$3=e(s);u.stop(`Source: ${d$3.type==="local"?d$3.localPath:d$3.url}${d$3.ref?` #${d$1(d$3.ref)}`:""}${d$3.subpath?` @${e$1(d$3.subpath)}`:""}`);let h=a$2(d$3),f$2=(()=>{if(!h)return Promise.resolve(null);let k=b$3(h);return k?c(k.owner,k.repo).catch(()=>null):Promise.resolve(null)})(),C$1=Array.isArray(t$1?.skill)&&t$1.skill.length>0||t$1.fullDepth===!0||!!d$3.subpath;u.start("Loading source...");let w;try{w=await da(d$3,{includeInternal:C$1,fullDepth:t$1.fullDepth});}catch(k){throw k instanceof R&&(u.stop(b$4("Path not found")),Prompt.outro(b$4(`Local path does not exist: ${k.localPath}`)),process.exit(1)),k}p$1=w.storeDir,u.stop(w.cacheHit?"Repository loaded from cache":w.source==="blob-fetch"?"Fetched via GitHub API":w.source==="well-known-fetch"?"Well-known index fetched":w.source==="local-cp"?"Local path cached":"Repository cloned");let $=w.skills,c$4=d$3.subpath?$.filter(k=>k.path.includes(`/${d$3.subpath}/`)||k.path.endsWith(`/${d$3.subpath}`)):$;if(u.start("Discovering skills..."),c$4.length===0&&w.cloneError){u.stop(b$4("Failed to clone repository"));for(let k of w.cloneError.message.split(`
7
7
  `))Prompt.Log.message(a$3(k));await fe(p$1),process.exit(1);}if(c$4.length===0&&(u.stop(b$4("No skills found")),Prompt.outro(b$4("No valid skills found. Skills require a SKILL.md with name and description.")),await fe(p$1),process.exit(1)),u.stop(`Found ${c$1(String(c$4.length))} skill${c$4.length>1?"s":""}`),t$1.list){console.log(),Prompt.Log.step(f$1("Available Skills"));let k={},x=[];for(let T of c$4)if(T.pluginName){let E=T.pluginName;k[E]||(k[E]=[]),k[E].push(T);}else x.push(T);let _=Object.keys(k).sort();for(let T of _){let E=T.split("-").map(H=>H.charAt(0).toUpperCase()+H.slice(1)).join(" ");console.log(f$1(E));for(let H of k[T])Prompt.Log.message(` ${e$1(B(H))}`),Prompt.Log.message(` ${a$3(H.description)}`);console.log();}if(x.length>0){_.length>0&&console.log(f$1("General"));for(let T of x)Prompt.Log.message(` ${e$1(B(T))}`),Prompt.Log.message(` ${a$3(T.description)}`);}console.log(),Prompt.outro("Use --skill <name> to install specific skills"),await fe(p$1),process.exit(0);}let g$1;if(t$1.skill&&t$1.skill.length>0){let k=c$4.map(_=>B(_)),x=E(t$1.skill,k);if(x.wildcard)g$1=c$4,Prompt.Log.info(`Installing all ${c$4.length} skills`);else if(x.invalid.length>0){Prompt.Log.error(`No matching skills found for: ${x.invalid.join(", ")}`),Prompt.Log.info("Available skills:");for(let _ of c$4)Prompt.Log.message(` - ${B(_)}`);await fe(p$1),process.exit(1);}else g$1=C(c$4,x.matched),g$1.length===0&&(Prompt.Log.error(`No matching skills found for: ${x.matched.join(", ")}`),await fe(p$1),process.exit(1)),Prompt.Log.info(`Selected ${g$1.length} skill${g$1.length!==1?"s":""}: ${g$1.map(_=>e$1(B(_))).join(", ")}`);}else if(c$4.length===1){g$1=c$4;let k=c$4[0];Prompt.Log.info(`Skill: ${e$1(B(k))}`),Prompt.Log.message(a$3(k.description));}else if(t$1.yes)g$1=c$4,Prompt.Log.info(`Installing all ${c$4.length} skills`);else {let k=[...c$4].sort((T,E)=>T.pluginName&&!E.pluginName?-1:!T.pluginName&&E.pluginName?1:T.pluginName&&E.pluginName&&T.pluginName!==E.pluginName?T.pluginName.localeCompare(E.pluginName):B(T).localeCompare(B(E))),x=k.some(T=>T.pluginName),_;if(x){let T=H=>H.split("-").map(B=>B.charAt(0).toUpperCase()+B.slice(1)).join(" "),E={};for(let H of k){let B$1=H.pluginName?T(H.pluginName):"Other";E[B$1]||(E[B$1]=[]),E[B$1].push({value:H,label:B(H),hint:H.description.length>60?H.description.slice(0,57)+"...":H.description});}_=await Prompt.groupMultiselect({message:`Select skills to install ${a$3("(space to toggle)")}`,options:E,required:!0});}else {let T=k.map(E=>({value:E,label:B(E),hint:E.description.length>60?E.description.slice(0,57)+"...":E.description}));_=await Prompt.multiselect({message:"Select skills to install",options:T,required:!0});}Prompt.isCancel(_)&&(await fe(p$1),Prompt.cancel("Installation cancelled")),g$1=_;}let m=a$2(d$3),S=m?c$2(m,g$1.map(k=>B(k))):Promise.resolve(null),v$1,L$1=Object.keys(b$2),j$1=o$2?"global":"project",y=[];if(t$1.agent&&t$1.agent.length>0){let k=p(t$1.agent);k.length>0&&(Prompt.Log.error(`Invalid agents: ${k.join(", ")}`),Prompt.Log.info(`Valid agents: ${L$1.join(", ")}`),await fe(p$1),process.exit(1)),v$1=q$1(t$1.agent),t$1.agent.includes("*")&&Prompt.Log.info(`Installing to all ${v$1.length} agents`);}else {u.start("Loading agents...");let k=await c$3(),x=Object.keys(b$2).length;if(u.stop(`${x} agents`),k.includes("eve")&&(t$1.yes||!r$1.isAgent)){let _=t$1.yes?!0:await Prompt.confirm({message:io(g$1),initialValue:!0});if(Prompt.isCancel(_)&&(await fe(p$1),Prompt.cancel("Installation cancelled")),_)v$1=["eve"],Prompt.Log.info(`Installing to: ${e$1(Al)}`);else {let T=await vl({global:j$1==="global"});Prompt.isCancel(T)&&(await fe(p$1),Prompt.cancel("Installation cancelled")),y=T.locked,v$1=[...T.locked,...T.selected];}}else if(k.length===0)if(t$1.yes)v$1=L$1,Prompt.Log.info("Installing to all agents");else {Prompt.Log.info("Select agents to install skills to");let _=Object.entries(b$2).filter(([E])=>E!=="eve").map(([E,H])=>({value:E,label:H.displayName})),T=await uo("Which agents do you want to install to?",_);Prompt.isCancel(T)&&(await fe(p$1),Prompt.cancel("Installation cancelled")),v$1=T;}else if(k.length===1||t$1.yes)if(v$1=wl(k,j$1),k.length===1){let _=k[0];Prompt.Log.info(`Installing to: ${e$1(b$2[_].displayName)}`);}else Prompt.Log.info(`Installing to: ${k.map(_=>e$1(b$2[_].displayName)).join(", ")}`);else {let _=await vl({global:j$1==="global"});Prompt.isCancel(_)&&(await fe(p$1),Prompt.cancel("Installation cancelled")),y=_.locked,v$1=[..._.locked,..._.selected];}}t$1.subagent&&t$1.subagent.length>0&&!v$1.includes("eve")&&(v$1=[...v$1,"eve"]);let A=[void 0];if(v$1.includes("eve")){let k=f(process.cwd());if(t$1.subagent&&t$1.subagent.length>0)A=t$1.subagent.map(x=>x==="root"||x==="."?void 0:x);else if(k.length>0&&!t$1.yes){let x=[{value:"",label:"Root agent",hint:"agent/skills"},...k.map(T=>({value:T,label:T,hint:`agent/subagents/${T}/skills`}))],_=await Prompt.multiselect({message:"Where should Eve skills be installed?",options:x,initialValues:[""],required:!0});Prompt.isCancel(_)&&(await fe(p$1),Prompt.cancel("Installation cancelled")),A=_.map(T=>T===""?void 0:T);}}let R$1=ao(v$1,A),O=t$1.copy?"copy":"symlink";if(R$1.every(k=>k.agent==="eve"))O="copy";else if(t$1.copy||t$1.yes)O="copy";else {let k=await Prompt.select({message:"Installation method",options:[{value:"symlink",label:"Share (Recommended)",hint:"Single source: 1 copy in .agents/skills + symlinks for non-universal agents"},{value:"copy",label:"Independent",hint:"Physical copy in each agent dir; updates must be re-run per agent"}]});Prompt.isCancel(k)&&(await fe(p$1),Prompt.cancel("Installation cancelled")),O=k;}let N=process.cwd(),F=[],V=o$2?null:await t(N),Z=await Promise.all(g$1.flatMap(k=>R$1.map(async x=>{let _=await l(k.name,x.agent,{global:o$2,eveSubagent:x.subagent}),T=_.installed,E;try{E=await b$5(k.path);}catch{E=void 0;}let B=V?.skills[k.name]?.computedHash,Q=!Ft(!1,B,E),re=T&&_.mode==="copy"&&O==="copy"&&Q,pe=!!T;return {skillName:k.name,target:x,installed:T,installedMode:_.mode,sourceHash:E,upToDate:!!re,overwrite:pe}}))),ve=new Map,se=new Map;for(let{skillName:k,target:x,overwrite:_,upToDate:T}of Z)ve.has(k)||(ve.set(k,new Map),se.set(k,new Map)),ve.get(k).set(Mt(x),_),se.get(k).set(Mt(x),T);let X={},Ae=[];for(let k of g$1)if(k.pluginName){let x=k.pluginName;X[x]||(X[x]=[]),X[x].push(k);}else Ae.push(k);let xe=k=>{for(let x of k){F.length>0&&F.push("");let _=R$1[0];R$1.length>1&&(_=R$1.find(re=>o(re.agent,o$2?"global":"project"))??R$1[0]);let T=o$1(x.name,{global:o$2,agent:_.agent,eveSubagent:_.subagent}),E=ds(T,N);F.push(`${e$1(E)}`),F.push(...co(R$1,O,o$2,y));let H=ve.get(x.name),B=R$1.filter(Q=>!o(Q.agent,o$2?"global":"project")&&H?.get(Mt(Q))).map(ft);B.length>0&&F.push(` ${d$1("overwrites:")} ${$e(B)}`);}},ke=Object.keys(X).sort();for(let k of ke){let x=k.split("-").map(_=>_.charAt(0).toUpperCase()+_.slice(1)).join(" ");F.push(""),F.push(f$1(x)),xe(X[k]);}Ae.length>0&&(ke.length>0&&(F.push(""),F.push(f$1("General"))),xe(Ae)),console.log(),note(F.join(`
8
8
  `),"Installation Summary");try{let k=await Promise.race([S,new Promise(x=>setTimeout(()=>x(null),so))]);if(k&&m){let x=no(k,g$1.map(_=>({slug:B(_),displayName:B(_)})),m);x.length>0&&note(x.join(`
9
9
  `),"Security Risk Assessments");}}catch{}if(!t$1.yes){let k=await Prompt.confirm({message:"Proceed with installation?"});(Prompt.isCancel(k)||!k)&&(await fe(p$1),Prompt.cancel("Installation cancelled"));}u.start("Installing skills...");let Ie=[],Ve=await Promise.all(g$1.map(async k=>{let x=new Map;for(let T of R$1){let E=g(T.agent,o$2,N,T.subagent),H=(T.agent==="eve"||T.agent==="easbot")&&O==="symlink",B=O==="copy"||H?E:e$2(o$2,N),Q=d$2(k.name||basename(k.path)),re=join(B,Q),pe=join(E,Q),M=re,Y=x.get(M);Y||(Y={canonicalDir:re,members:[]},x.set(M,Y)),Y.members.push({target:T,agentDir:pe});}return (await Promise.all([...x.values()].map(async T=>{let[E,...H]=T.members;if(!E)return [];if(se.get(k.name)?.get(Mt(E.target))??!1)return T.members.map(({target:pe,agentDir:M})=>({skill:B(k),agent:ft(pe),pluginName:k.pluginName,success:!0,path:M,canonicalPath:M,mode:O,skipped:!0,skippedReason:"up-to-date"}));let Q=await to(k,E.target,E.agentDir,{installMode:O,installGlobally:o$2,cwd:N,tempDir:p$1}),re=await Promise.all(H.map(async({target:pe,agentDir:M})=>{let Y=O==="copy"?await j(T.canonicalDir,M,{agentType:pe.agent}):await i$1(T.canonicalDir,M,{isGlobal:o$2,agentType:pe.agent,cwd:N,storePath:k.path});return {skill:B(k),agent:ft(pe),pluginName:k.pluginName,...Y}}));return [Q,...re]}))).flat()}));for(let k of Ve)Ie.push(...k);u.stop("Installation complete"),console.log();let Oe=Ie.filter(k=>k.success),yt=Ie.filter(k=>!k.success),He={};for(let k of g$1)if(p$1&&k.path===p$1)He[k.name]="SKILL.md";else if(p$1&&k.path.startsWith(p$1+sep))He[k.name]=`${k.path.slice(p$1.length+1).split(sep).join("/")}/SKILL.md`;else if(p$1&&k.path.startsWith(p$1)){let x=p$1.split(sep).join("/"),_=k.path.split(sep).join("/");_.startsWith(`${x}/`)&&(He[k.name]=`${_.slice(x.length+1)}/SKILL.md`);}let Xe=a$2(d$3),As=eo(d$3.url,Xe);if(Xe&&(b$3(Xe)?f$2.then(x=>{x===!1&&d({event:"install",source:Xe,skills:g$1.map(_=>_.name).join(","),agents:v$1.join(","),...o$2&&{global:"1"},skillFiles:JSON.stringify(He)});}):d({event:"install",source:Xe,skills:g$1.map(x=>x.name).join(","),agents:v$1.join(","),...o$2&&{global:"1"},skillFiles:JSON.stringify(He)})),Oe.length>0&&o$2){let k=new Set(Oe.map(x=>x.skill));for(let x of g$1){if(!k.has(B(x)))continue;let{derivePluginSlug:_,findSkillByLocation:T,readStoreIndex:E}=await import('./store-FRXO6UWU.mjs'),H=L(d$3),B$1;{let Y=(await E()).markets[H],me=Y?.plugins&&Object.keys(Y.plugins).find(Le=>Y.plugins[Le]?.skills[x.name]);me?B$1=me.slice(H.length+1):B$1=_(d$3,void 0,x.pluginName);}let Q,re;{let M=await T(H,`${H}:${B$1}`,x.name);Q=M?.entry.computedHash,re=M?.entry.skillPath;}if(re===void 0){let M=d$3.type==="local"?d$3.localPath??d$3.url:d$3.url;if(x.path.startsWith(M))re=Filesystem.relative(M,x.path).replace(/^\/+/,"");else {let Y=He[x.name];Y&&(re=Filesystem.toUnixPath(Filesystem.dirname(Y)));}}Q===void 0&&(Q=await b$5(x.path));let pe=`${H}:${B$1}`;await r(x.name,{source:As||Xe||d$3.url,sourceType:d$3.type,ref:d$3.ref,...re&&{skillPath:re},computedHash:Q,marketId:H,pluginId:pe});}}if(Oe.length>0&&!o$2){let k=new Set(Oe.map(T=>T.skill)),x=v$1.includes("eve")?A.map(T=>T??""):void 0,_=x&&(x.length>1||x.some(T=>T!==""));for(let T of g$1)if(k.has(B(T)))try{let{derivePluginSlug:E,findSkillByLocation:H,readStoreIndex:B$1}=await import('./store-FRXO6UWU.mjs'),Q=L(d$3),re=g$1.find(Le=>B(Le)===T.name),pe;{let Re=(await B$1()).markets[Q],ye=Re?.plugins&&Object.keys(Re.plugins).find(Ee=>Re.plugins[Ee]?.skills[T.name]);ye?pe=ye.slice(Q.length+1):pe=E(d$3,void 0,re?.pluginName);}let M,Y;{let Le=await H(Q,`${Q}:${pe}`,T.name);M=Le?.entry.computedHash,Y=Le?.entry.skillPath??He[T.name];}M===void 0&&(M=await b$5(T.path));let me=`${Q}:${pe}`;await v(T.name,{source:As||d$3.url,ref:d$3.ref,sourceType:d$3.type,...Y&&{skillPath:Y},computedHash:M,marketId:Q,pluginId:me,..._&&{subagents:x}},N);}catch{}}if(Oe.length>0){let k=new Map,x={},_=[];for(let M of Oe){let Y=k.get(M.skill)||[];if(Y.push(M),k.set(M.skill,Y),Y.length===1)if(M.pluginName){let me=M.pluginName;x[me]||(x[me]=[]),x[me].push(M);}else _.push(M);}let T=k.size,E=Oe.filter(M=>M.mode==="symlink"&&M.symlinkFailed),H=E.map(M=>M.agent),B=[],Q=M=>{for(let Y of M){let me=k.get(Y.skill)||[],Le=me[0];if(B.push(`${Symbol.statusIcon("success")} ${Y.skill}`),Le.canonicalPath){let ye=ds(Le.canonicalPath,N);B.push(` ${a$3("source:")} ${ye}`);}let Re=new Map;for(let ye of me){if(ye.symlinkFailed||ye.skipped||Le.canonicalPath&&ye.path===Le.canonicalPath)continue;let Ee=ye.path;Re.has(Ee)?Re.get(Ee)!=="symlink"&&ye.mode==="symlink"&&Re.set(Ee,"symlink"):Re.set(Ee,ye.mode);}for(let[ye,Ee]of Re){let un=ds(ye,N),gn=Ee==="symlink"?e$1("(link)"):a$3("(copied)");B.push(` ${a$3("target:")} ${un} ${gn}`);}B.push(...po(me,v$1,o$2));}},re=Object.keys(x).sort();for(let M of re){let Y=M.split("-").map(me=>me.charAt(0).toUpperCase()+me.slice(1)).join(" ");B.push(""),B.push(f$1(Y)),Q(x[M]);}_.length>0&&(re.length>0&&(B.push(""),B.push(f$1("General"))),Q(_));let pe=c$1(`Installed ${T} skill${T!==1?"s":""}`);note(B.join(`
@@ -1 +1 @@
1
- export{M as handleSkillsCli,K as renderBanner,L as renderHelp}from'./chunk-RH7I27R4.mjs';import'./chunk-CFMOYU7R.mjs';import'./chunk-5DAHAO55.mjs';import'./chunk-BQ6QWQEM.mjs';import'./chunk-6OLPTZDO.mjs';import'./chunk-UUZB3HCD.mjs';import'./chunk-Y6D5Z6AU.mjs';import'./chunk-RWZ4LFSN.mjs';import'./chunk-ZJS7IO5V.mjs';import'./chunk-ZYDDQV73.mjs';import'./chunk-WQGSYA5D.mjs';
1
+ export{M as handleSkillsCli,K as renderBanner,L as renderHelp}from'./chunk-MYZQNUHR.mjs';import'./chunk-CFMOYU7R.mjs';import'./chunk-5DAHAO55.mjs';import'./chunk-BQ6QWQEM.mjs';import'./chunk-6OLPTZDO.mjs';import'./chunk-UUZB3HCD.mjs';import'./chunk-Y6D5Z6AU.mjs';import'./chunk-RWZ4LFSN.mjs';import'./chunk-ZJS7IO5V.mjs';import'./chunk-ZYDDQV73.mjs';import'./chunk-WQGSYA5D.mjs';
@@ -1 +1 @@
1
- 'use strict';var chunkTCZM6IC2_cjs=require('./chunk-TCZM6IC2.cjs');require('./chunk-Q2MOP5ZW.cjs'),require('./chunk-BWDTT6SA.cjs'),require('./chunk-LJ63Q26N.cjs'),require('./chunk-IJI72D6W.cjs'),require('./chunk-HOK3SUH4.cjs'),require('./chunk-JUNIAQ2A.cjs'),require('./chunk-XGUPIAAF.cjs'),require('./chunk-DNE3XPCJ.cjs'),require('./chunk-E7AHWFZN.cjs'),require('./chunk-BWPPLYIF.cjs');Object.defineProperty(exports,"handleSkillsCli",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.M}});Object.defineProperty(exports,"renderBanner",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.K}});Object.defineProperty(exports,"renderHelp",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.L}});
1
+ 'use strict';var chunk42XRKOEA_cjs=require('./chunk-42XRKOEA.cjs');require('./chunk-Q2MOP5ZW.cjs'),require('./chunk-BWDTT6SA.cjs'),require('./chunk-LJ63Q26N.cjs'),require('./chunk-IJI72D6W.cjs'),require('./chunk-HOK3SUH4.cjs'),require('./chunk-JUNIAQ2A.cjs'),require('./chunk-XGUPIAAF.cjs'),require('./chunk-DNE3XPCJ.cjs'),require('./chunk-E7AHWFZN.cjs'),require('./chunk-BWPPLYIF.cjs');Object.defineProperty(exports,"handleSkillsCli",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.M}});Object.defineProperty(exports,"renderBanner",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.K}});Object.defineProperty(exports,"renderHelp",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.L}});
package/dist/cli.cjs CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- 'use strict';var chunkBWPPLYIF_cjs=require('./chunks/chunk-BWPPLYIF.cjs'),fs=require('fs'),path=require('path'),url=require('url');var h=path.dirname(url.fileURLToPath(chunkBWPPLYIF_cjs.c));function b(){try{let e=path.join(h,"..","package.json");return JSON.parse(fs.readFileSync(e,"utf-8")).version}catch{return "0.0.0"}}var c=new Set(["DEBUG","INFO","WARN","ERROR"]);function O(e){let t={logLevel:"INFO",printLogs:false,debug:false};for(let n=0;n<e.length;n++){let o=e[n];if(o)if(o==="--log-level"&&n+1<e.length){let s=e[n+1];if(s&&!s.startsWith("-")){let i=s.toUpperCase();c.has(i)&&(t.logLevel=i,n++);}}else if(o.startsWith("--log-level=")){let s=o.slice(12).toUpperCase();c.has(s)&&(t.logLevel=s);}else o==="--print-logs"?t.printLogs=true:o==="--debug"&&(t.debug=true);}return t}async function w(){let e=process.argv.slice(2),t=b(),{loadEnv:n}=await import('@easbot/utils');if(n(),process.env.EASBOT_LANG||(process.env.EASBOT_LANG="en-US"),e.length===0){let{renderBanner:l}=await import('./chunks/cli-handler-TO3R23NY.cjs');l();return}if(e[0]==="--help"||e[0]==="-h"){let{renderHelp:l}=await import('./chunks/cli-handler-TO3R23NY.cjs');l();return}if(e[0]==="--version"||e[0]==="-v"){console.log(t);return}let o=O(e),{Log:s}=await import('@easbot/utils'),{getXdgData:i,setGlobalAdapter:g,resetGlobalAdapter:d}=await import('./chunks/interfaces-T3TO7GQW.cjs'),f=path.join(i(),"log");await s.init({logDir:f,print:o.printLogs,dev:o.debug||false,level:o.logLevel});let{handleSkillsCli:L}=await import('./chunks/cli-handler-TO3R23NY.cjs'),r=await L(e,{version:t});r.code!==0&&(process.exitCode=r.code);}w().catch(e=>{console.error(e),process.exitCode=1;}).finally(async()=>{try{let{flushTelemetry:e}=await import('./chunks/telemetry-TAVF3FAM.cjs');await e();}catch{}try{let{Log:e}=await import('@easbot/utils');await e.close();}catch{}process.exit(process.exitCode??0);});
2
+ 'use strict';var chunkBWPPLYIF_cjs=require('./chunks/chunk-BWPPLYIF.cjs'),fs=require('fs'),path=require('path'),url=require('url');var h=path.dirname(url.fileURLToPath(chunkBWPPLYIF_cjs.c));function b(){try{let e=path.join(h,"..","package.json");return JSON.parse(fs.readFileSync(e,"utf-8")).version}catch{return "0.0.0"}}var c=new Set(["DEBUG","INFO","WARN","ERROR"]);function O(e){let t={logLevel:"INFO",printLogs:false,debug:false};for(let n=0;n<e.length;n++){let o=e[n];if(o)if(o==="--log-level"&&n+1<e.length){let s=e[n+1];if(s&&!s.startsWith("-")){let i=s.toUpperCase();c.has(i)&&(t.logLevel=i,n++);}}else if(o.startsWith("--log-level=")){let s=o.slice(12).toUpperCase();c.has(s)&&(t.logLevel=s);}else o==="--print-logs"?t.printLogs=true:o==="--debug"&&(t.debug=true);}return t}async function w(){let e=process.argv.slice(2),t=b(),{loadEnv:n}=await import('@easbot/utils');if(n(),process.env.EASBOT_LANG||(process.env.EASBOT_LANG="en-US"),e.length===0){let{renderBanner:l}=await import('./chunks/cli-handler-GPMLSQIV.cjs');l();return}if(e[0]==="--help"||e[0]==="-h"){let{renderHelp:l}=await import('./chunks/cli-handler-GPMLSQIV.cjs');l();return}if(e[0]==="--version"||e[0]==="-v"){console.log(t);return}let o=O(e),{Log:s}=await import('@easbot/utils'),{getXdgData:i,setGlobalAdapter:g,resetGlobalAdapter:d}=await import('./chunks/interfaces-T3TO7GQW.cjs'),f=path.join(i(),"log");await s.init({logDir:f,print:o.printLogs,dev:o.debug||false,level:o.logLevel});let{handleSkillsCli:L}=await import('./chunks/cli-handler-GPMLSQIV.cjs'),r=await L(e,{version:t});r.code!==0&&(process.exitCode=r.code);}w().catch(e=>{console.error(e),process.exitCode=1;}).finally(async()=>{try{let{flushTelemetry:e}=await import('./chunks/telemetry-TAVF3FAM.cjs');await e();}catch{}try{let{Log:e}=await import('@easbot/utils');await e.close();}catch{}process.exit(process.exitCode??0);});
package/dist/cli.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import {readFileSync}from'fs';import {dirname,join}from'path';import {fileURLToPath}from'url';var m=dirname(fileURLToPath(import.meta.url));function h(){try{let e=join(m,"..","package.json");return JSON.parse(readFileSync(e,"utf-8")).version}catch{return "0.0.0"}}var a=new Set(["DEBUG","INFO","WARN","ERROR"]);function b(e){let t={logLevel:"INFO",printLogs:false,debug:false};for(let n=0;n<e.length;n++){let o=e[n];if(o)if(o==="--log-level"&&n+1<e.length){let s=e[n+1];if(s&&!s.startsWith("-")){let i=s.toUpperCase();a.has(i)&&(t.logLevel=i,n++);}}else if(o.startsWith("--log-level=")){let s=o.slice(12).toUpperCase();a.has(s)&&(t.logLevel=s);}else o==="--print-logs"?t.printLogs=true:o==="--debug"&&(t.debug=true);}return t}async function O(){let e=process.argv.slice(2),t=h(),{loadEnv:n}=await import('@easbot/utils');if(n(),process.env.EASBOT_LANG||(process.env.EASBOT_LANG="en-US"),e.length===0){let{renderBanner:l}=await import('./chunks/cli-handler-QEXCHZ26.mjs');l();return}if(e[0]==="--help"||e[0]==="-h"){let{renderHelp:l}=await import('./chunks/cli-handler-QEXCHZ26.mjs');l();return}if(e[0]==="--version"||e[0]==="-v"){console.log(t);return}let o=b(e),{Log:s}=await import('@easbot/utils'),{getXdgData:i,setGlobalAdapter:p,resetGlobalAdapter:g}=await import('./chunks/interfaces-S47ZGORM.mjs'),d=join(i(),"log");await s.init({logDir:d,print:o.printLogs,dev:o.debug||false,level:o.logLevel});let{handleSkillsCli:f}=await import('./chunks/cli-handler-QEXCHZ26.mjs'),r=await f(e,{version:t});r.code!==0&&(process.exitCode=r.code);}O().catch(e=>{console.error(e),process.exitCode=1;}).finally(async()=>{try{let{flushTelemetry:e}=await import('./chunks/telemetry-7T6MUW5A.mjs');await e();}catch{}try{let{Log:e}=await import('@easbot/utils');await e.close();}catch{}process.exit(process.exitCode??0);});
2
+ import {readFileSync}from'fs';import {dirname,join}from'path';import {fileURLToPath}from'url';var m=dirname(fileURLToPath(import.meta.url));function h(){try{let e=join(m,"..","package.json");return JSON.parse(readFileSync(e,"utf-8")).version}catch{return "0.0.0"}}var a=new Set(["DEBUG","INFO","WARN","ERROR"]);function b(e){let t={logLevel:"INFO",printLogs:false,debug:false};for(let n=0;n<e.length;n++){let o=e[n];if(o)if(o==="--log-level"&&n+1<e.length){let s=e[n+1];if(s&&!s.startsWith("-")){let i=s.toUpperCase();a.has(i)&&(t.logLevel=i,n++);}}else if(o.startsWith("--log-level=")){let s=o.slice(12).toUpperCase();a.has(s)&&(t.logLevel=s);}else o==="--print-logs"?t.printLogs=true:o==="--debug"&&(t.debug=true);}return t}async function O(){let e=process.argv.slice(2),t=h(),{loadEnv:n}=await import('@easbot/utils');if(n(),process.env.EASBOT_LANG||(process.env.EASBOT_LANG="en-US"),e.length===0){let{renderBanner:l}=await import('./chunks/cli-handler-CYTFKKZ2.mjs');l();return}if(e[0]==="--help"||e[0]==="-h"){let{renderHelp:l}=await import('./chunks/cli-handler-CYTFKKZ2.mjs');l();return}if(e[0]==="--version"||e[0]==="-v"){console.log(t);return}let o=b(e),{Log:s}=await import('@easbot/utils'),{getXdgData:i,setGlobalAdapter:p,resetGlobalAdapter:g}=await import('./chunks/interfaces-S47ZGORM.mjs'),d=join(i(),"log");await s.init({logDir:d,print:o.printLogs,dev:o.debug||false,level:o.logLevel});let{handleSkillsCli:f}=await import('./chunks/cli-handler-CYTFKKZ2.mjs'),r=await f(e,{version:t});r.code!==0&&(process.exitCode=r.code);}O().catch(e=>{console.error(e),process.exitCode=1;}).finally(async()=>{try{let{flushTelemetry:e}=await import('./chunks/telemetry-7T6MUW5A.mjs');await e();}catch{}try{let{Log:e}=await import('@easbot/utils');await e.close();}catch{}process.exit(process.exitCode??0);});
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunkTCZM6IC2_cjs=require('./chunks/chunk-TCZM6IC2.cjs'),chunkQ2MOP5ZW_cjs=require('./chunks/chunk-Q2MOP5ZW.cjs'),chunkBWDTT6SA_cjs=require('./chunks/chunk-BWDTT6SA.cjs');require('./chunks/chunk-LJ63Q26N.cjs');var chunkIJI72D6W_cjs=require('./chunks/chunk-IJI72D6W.cjs'),chunkHOK3SUH4_cjs=require('./chunks/chunk-HOK3SUH4.cjs'),chunkJUNIAQ2A_cjs=require('./chunks/chunk-JUNIAQ2A.cjs'),chunkXGUPIAAF_cjs=require('./chunks/chunk-XGUPIAAF.cjs'),chunkDNE3XPCJ_cjs=require('./chunks/chunk-DNE3XPCJ.cjs'),chunkE7AHWFZN_cjs=require('./chunks/chunk-E7AHWFZN.cjs'),chunkBWPPLYIF_cjs=require('./chunks/chunk-BWPPLYIF.cjs'),path=require('path');var g=class{constructor(){chunkBWPPLYIF_cjs.b(this,"providers",[]);}register(o){if(this.providers.some(t=>t.id===o.id))throw new Error(`Provider with id "${o.id}" already registered`);this.providers.push(o);}findProvider(o){for(let t of this.providers)if(t.match(o).matches)return t;return null}getProviders(){return [...this.providers]}},u=new g;function at(e){u.register(e);}function ct(e){return u.findProvider(e)}function ut(){return u.getProviders()}var c=new Map;function f(e){if(c.has(e.id))throw new Error(`PluginSource with id "${e.id}" already registered`);c.set(e.id,e);}function d(){return Array.from(c.values()).map(e=>e)}function k(e){return c.get(e)??null}function P(e){return Array.from(c.values()).filter(o=>o.category===e)}async function y(){let e=d();return await Promise.all(e.map(async t=>{try{let r=await t.fetch();return {sourceId:t.id,entries:r}}catch(r){return {sourceId:t.id,error:r instanceof Error?r:new Error(String(r))}}}))}function pt(e){return {name:e.name,description:e.description,scope:"all"}}function x(e){return {id:e.id??`well-known:${new URL(e.url).hostname}`,category:"well-known",async fetch(){return (await chunkHOK3SUH4_cjs.n.fetchAllSkills(e.url)).map(r=>({id:r.name,name:r.name,description:r.description,location:r.sourceUrl,category:"well-known",metadata:{installName:r.installName,sourceIdentifier:chunkHOK3SUH4_cjs.n.getSourceIdentifier(e.url),sourceUrl:r.sourceUrl}}))},async load(t){let l=(await chunkHOK3SUH4_cjs.n.fetchAllSkills(e.url)).find(n=>n.name===t.id);if(!l)throw new Error(`Skill "${t.id}" not found in well-known source ${e.url}`);return {skills:[pt(l)],version:"well-known",author:{name:new URL(e.url).hostname}}}}}async function h(e){try{let t=await(await import('fs/promises')).readFile(e,"utf-8");return JSON.parse(t)}catch{return null}}function A(e){let o=e.basePath.split(/[\\/]/).filter(Boolean).pop()??"local";return {id:e.id??`local:${o}`,category:"file",async fetch(){let r=[],l=await h(path.join(e.basePath,".claude-plugin/plugin.json"));l?.name&&r.push({id:l.name,name:l.name,description:l.description,location:e.basePath,category:"file",metadata:{skills:l.skills,manifest:"plugin.json"}});let n=await h(path.join(e.basePath,".claude-plugin/marketplace.json"));if(n?.plugins)for(let i of n.plugins)i.name&&(typeof i.source!="string"&&i.source!==void 0||r.push({id:i.name,name:i.name,description:i.description,location:i.source?path.join(e.basePath,n.metadata?.pluginRoot??"",i.source):e.basePath,category:"file",metadata:{skills:i.skills,manifest:"marketplace.json",pluginRoot:n.metadata?.pluginRoot}}));return r},async load(r){return {skills:(await chunkHOK3SUH4_cjs.A(r.location)).map(i=>({name:i.name,description:i.description,scope:"all"})),version:"local",author:{name:o}}}}}Object.defineProperty(exports,"applyActions",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.c}});Object.defineProperty(exports,"buildMatrix",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.d}});Object.defineProperty(exports,"buildUsePrompt",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.G}});Object.defineProperty(exports,"detectAgent",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.f}});Object.defineProperty(exports,"getAgentName",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.h}});Object.defineProperty(exports,"getAgentType",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.i}});Object.defineProperty(exports,"handleSkillsCli",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.M}});Object.defineProperty(exports,"hasProjectSkills",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.k}});Object.defineProperty(exports,"initTelemetry",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.o}});Object.defineProperty(exports,"isRunningInAgent",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.g}});Object.defineProperty(exports,"launchAgentInteractively",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.J}});Object.defineProperty(exports,"matchesSkillFilter",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.m}});Object.defineProperty(exports,"materializeUseSkill",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.H}});Object.defineProperty(exports,"parseAddOptions",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.q}});Object.defineProperty(exports,"parseFindOptions",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.x}});Object.defineProperty(exports,"parseListOptions",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.A}});Object.defineProperty(exports,"parseRemoveOptions",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.D}});Object.defineProperty(exports,"parseStoreOptions",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.r}});Object.defineProperty(exports,"parseUpdateOptions",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.j}});Object.defineProperty(exports,"parseUseOptions",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.F}});Object.defineProperty(exports,"planActions",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.b}});Object.defineProperty(exports,"probeCell",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.a}});Object.defineProperty(exports,"removeCommand",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.C}});Object.defineProperty(exports,"renderBanner",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.K}});Object.defineProperty(exports,"renderHelp",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.L}});Object.defineProperty(exports,"resolveUpdateScope",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.l}});Object.defineProperty(exports,"runAdd",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.p}});Object.defineProperty(exports,"runDoctor",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.E}});Object.defineProperty(exports,"runFind",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.z}});Object.defineProperty(exports,"runList",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.B}});Object.defineProperty(exports,"runPostInstallReconcile",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.e}});Object.defineProperty(exports,"runStore",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.s}});Object.defineProperty(exports,"runStoreClean",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.u}});Object.defineProperty(exports,"runStoreList",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.t}});Object.defineProperty(exports,"runStoreRemove",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.w}});Object.defineProperty(exports,"runStoreUpdate",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.v}});Object.defineProperty(exports,"runUpdate",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.n}});Object.defineProperty(exports,"runUse",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.I}});Object.defineProperty(exports,"searchSkillsAPI",{enumerable:true,get:function(){return chunkTCZM6IC2_cjs.y}});Object.defineProperty(exports,"fetchAuditData",{enumerable:true,get:function(){return chunkQ2MOP5ZW_cjs.c}});Object.defineProperty(exports,"flushTelemetry",{enumerable:true,get:function(){return chunkQ2MOP5ZW_cjs.e}});Object.defineProperty(exports,"setDetectedAgent",{enumerable:true,get:function(){return chunkQ2MOP5ZW_cjs.a}});Object.defineProperty(exports,"setVersion",{enumerable:true,get:function(){return chunkQ2MOP5ZW_cjs.b}});Object.defineProperty(exports,"track",{enumerable:true,get:function(){return chunkQ2MOP5ZW_cjs.d}});Object.defineProperty(exports,"addSkillToLock",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.r}});Object.defineProperty(exports,"computeContentHash",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.n}});Object.defineProperty(exports,"dismissPrompt",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.y}});Object.defineProperty(exports,"fetchSkillFolderHash",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.q}});Object.defineProperty(exports,"getAllLockedSkills",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.u}});Object.defineProperty(exports,"getGitHubToken",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.p}});Object.defineProperty(exports,"getSkillFromLock",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.t}});Object.defineProperty(exports,"getSkillLockPath",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.k}});Object.defineProperty(exports,"getSkillsBySource",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.v}});Object.defineProperty(exports,"isPromptDismissed",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.w}});Object.defineProperty(exports,"readSkillLock",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.l}});Object.defineProperty(exports,"removeSkillFromLock",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.s}});Object.defineProperty(exports,"resetGhAuthWarning",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.o}});Object.defineProperty(exports,"writeSkillLock",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.m}});Object.defineProperty(exports,"AGENTS_DIR",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.a}});Object.defineProperty(exports,"SKILLS_SUBDIR",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.b}});Object.defineProperty(exports,"UNIVERSAL_SKILLS_DIR",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.c}});Object.defineProperty(exports,"getAgentBaseDir",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.g}});Object.defineProperty(exports,"getCanonicalPath",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.o}});Object.defineProperty(exports,"getCanonicalSkillsDir",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.e}});Object.defineProperty(exports,"getEveSubagentSkillsDir",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.f}});Object.defineProperty(exports,"getInstallPath",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.m}});Object.defineProperty(exports,"installBlobSkillForAgent",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.r}});Object.defineProperty(exports,"installRemoteSkillForAgent",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.p}});Object.defineProperty(exports,"installSkillForAgent",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.h}});Object.defineProperty(exports,"installWellKnownSkillForAgent",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.q}});Object.defineProperty(exports,"isSkillInstalled",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.k}});Object.defineProperty(exports,"listInstalledSkills",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.s}});Object.defineProperty(exports,"sanitizeName",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.d}});Object.defineProperty(exports,"DEFAULT_CLONE_TIMEOUT",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.f}});Object.defineProperty(exports,"GitCloneError",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.g}});Object.defineProperty(exports,"WellKnownProvider",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.m}});Object.defineProperty(exports,"acquireSourceClone",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.Q}});Object.defineProperty(exports,"addSkillToLocalLock",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.v}});Object.defineProperty(exports,"cleanCache",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.ja}});Object.defineProperty(exports,"cleanCachedRepo",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.ia}});Object.defineProperty(exports,"cleanupTempDir",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.l}});Object.defineProperty(exports,"cloneRepo",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.k}});Object.defineProperty(exports,"discoverSkills",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.A}});Object.defineProperty(exports,"ensureCachedSource",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.ca}});Object.defineProperty(exports,"filterSkills",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.C}});Object.defineProperty(exports,"getCacheRepoDir",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.P}});Object.defineProperty(exports,"getCacheRoot",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.N}});Object.defineProperty(exports,"getLocalLockPath",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.r}});Object.defineProperty(exports,"getOwnerRepo",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.a}});Object.defineProperty(exports,"getSkillDisplayName",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.B}});Object.defineProperty(exports,"getSourceDir",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.I}});Object.defineProperty(exports,"installFromCache",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.ha}});Object.defineProperty(exports,"isGitHubHttpsCloneUrl",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.i}});Object.defineProperty(exports,"isGitHubSsoAuthError",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.j}});Object.defineProperty(exports,"isRepoPrivate",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.c}});Object.defineProperty(exports,"isSubpathSafe",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.z}});Object.defineProperty(exports,"parseGitHubRepoUrl",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.h}});Object.defineProperty(exports,"parseOwnerRepo",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.b}});Object.defineProperty(exports,"parseSkillMd",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.y}});Object.defineProperty(exports,"parseSource",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.e}});Object.defineProperty(exports,"readLocalLock",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.t}});Object.defineProperty(exports,"removeSkillFromLocalLock",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.w}});Object.defineProperty(exports,"sanitizeSubpath",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.d}});Object.defineProperty(exports,"shouldInstallInternalSkills",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.x}});Object.defineProperty(exports,"wellKnownProvider",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.n}});Object.defineProperty(exports,"writeLocalLock",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.u}});Object.defineProperty(exports,"EVE_SUBAGENTS_DIR",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.e}});Object.defineProperty(exports,"PROJECT_SKILLS_DIR_PATTERN",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.j}});Object.defineProperty(exports,"agents",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.b}});Object.defineProperty(exports,"detectInstalledAgents",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.c}});Object.defineProperty(exports,"getAgentConfig",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.d}});Object.defineProperty(exports,"getAgentGlobalSkillDirs",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.l}});Object.defineProperty(exports,"getAgentProjectSkillContainerPrefixes",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.n}});Object.defineProperty(exports,"getAgentProjectSkillDirs",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.k}});Object.defineProperty(exports,"getAgentSkillDirs",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.m}});Object.defineProperty(exports,"getEveSubagents",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.f}});Object.defineProperty(exports,"getNonUniversalAgents",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.i}});Object.defineProperty(exports,"getOpenClawGlobalSkillsDir",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.a}});Object.defineProperty(exports,"getUniversalAgents",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.h}});Object.defineProperty(exports,"isUniversalAgent",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.o}});Object.defineProperty(exports,"matchesUniversalScope",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.g}});Object.defineProperty(exports,"getAgentAdapter",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.h}});Object.defineProperty(exports,"getGlobal",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.c}});Object.defineProperty(exports,"getHomeDir",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.k}});Object.defineProperty(exports,"getInstance",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.f}});Object.defineProperty(exports,"getProjectDirectory",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.p}});Object.defineProperty(exports,"getXdgCache",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.o}});Object.defineProperty(exports,"getXdgConfig",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.l}});Object.defineProperty(exports,"getXdgData",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.m}});Object.defineProperty(exports,"getXdgState",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.n}});Object.defineProperty(exports,"hasAgentAdapter",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.i}});Object.defineProperty(exports,"requireAgentAdapter",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.j}});Object.defineProperty(exports,"resetGlobalAdapter",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.b}});Object.defineProperty(exports,"resetInstanceAdapter",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.e}});Object.defineProperty(exports,"setAgentAdapter",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.g}});Object.defineProperty(exports,"setGlobalAdapter",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.a}});Object.defineProperty(exports,"setInstanceAdapter",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.d}});Object.defineProperty(exports,"BLOB_ALLOWED_REPOS",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.c}});Object.defineProperty(exports,"fetchRepoTree",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.g}});Object.defineProperty(exports,"findSkillMdPaths",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.k}});Object.defineProperty(exports,"getSkillFolderHashFromTree",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.i}});Object.defineProperty(exports,"resetRepoTreeAuthState",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.f}});Object.defineProperty(exports,"sanitizeMetadata",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.b}});Object.defineProperty(exports,"stripTerminalEscapes",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.a}});Object.defineProperty(exports,"toSkillSlug",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.e}});Object.defineProperty(exports,"tryBlobInstall",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.l}});Object.defineProperty(exports,"computeFromDir",{enumerable:true,get:function(){return chunkE7AHWFZN_cjs.b}});Object.defineProperty(exports,"computeSnapshotHash",{enumerable:true,get:function(){return chunkE7AHWFZN_cjs.c}});Object.defineProperty(exports,"parseFrontmatter",{enumerable:true,get:function(){return chunkE7AHWFZN_cjs.a}});exports.createLocalPluginSource=A;exports.createWellKnownSource=x;exports.findProvider=ct;exports.findSource=k;exports.findSourcesByCategory=P;exports.getProviders=ut;exports.listAllEntries=y;exports.listSources=d;exports.registerProvider=at;exports.registerSource=f;exports.registry=u;
1
+ 'use strict';var chunk42XRKOEA_cjs=require('./chunks/chunk-42XRKOEA.cjs'),chunkQ2MOP5ZW_cjs=require('./chunks/chunk-Q2MOP5ZW.cjs'),chunkBWDTT6SA_cjs=require('./chunks/chunk-BWDTT6SA.cjs');require('./chunks/chunk-LJ63Q26N.cjs');var chunkIJI72D6W_cjs=require('./chunks/chunk-IJI72D6W.cjs'),chunkHOK3SUH4_cjs=require('./chunks/chunk-HOK3SUH4.cjs'),chunkJUNIAQ2A_cjs=require('./chunks/chunk-JUNIAQ2A.cjs'),chunkXGUPIAAF_cjs=require('./chunks/chunk-XGUPIAAF.cjs'),chunkDNE3XPCJ_cjs=require('./chunks/chunk-DNE3XPCJ.cjs'),chunkE7AHWFZN_cjs=require('./chunks/chunk-E7AHWFZN.cjs'),chunkBWPPLYIF_cjs=require('./chunks/chunk-BWPPLYIF.cjs'),path=require('path');var g=class{constructor(){chunkBWPPLYIF_cjs.b(this,"providers",[]);}register(o){if(this.providers.some(t=>t.id===o.id))throw new Error(`Provider with id "${o.id}" already registered`);this.providers.push(o);}findProvider(o){for(let t of this.providers)if(t.match(o).matches)return t;return null}getProviders(){return [...this.providers]}},u=new g;function at(e){u.register(e);}function ct(e){return u.findProvider(e)}function ut(){return u.getProviders()}var c=new Map;function f(e){if(c.has(e.id))throw new Error(`PluginSource with id "${e.id}" already registered`);c.set(e.id,e);}function d(){return Array.from(c.values()).map(e=>e)}function k(e){return c.get(e)??null}function P(e){return Array.from(c.values()).filter(o=>o.category===e)}async function y(){let e=d();return await Promise.all(e.map(async t=>{try{let r=await t.fetch();return {sourceId:t.id,entries:r}}catch(r){return {sourceId:t.id,error:r instanceof Error?r:new Error(String(r))}}}))}function pt(e){return {name:e.name,description:e.description,scope:"all"}}function x(e){return {id:e.id??`well-known:${new URL(e.url).hostname}`,category:"well-known",async fetch(){return (await chunkHOK3SUH4_cjs.n.fetchAllSkills(e.url)).map(r=>({id:r.name,name:r.name,description:r.description,location:r.sourceUrl,category:"well-known",metadata:{installName:r.installName,sourceIdentifier:chunkHOK3SUH4_cjs.n.getSourceIdentifier(e.url),sourceUrl:r.sourceUrl}}))},async load(t){let l=(await chunkHOK3SUH4_cjs.n.fetchAllSkills(e.url)).find(n=>n.name===t.id);if(!l)throw new Error(`Skill "${t.id}" not found in well-known source ${e.url}`);return {skills:[pt(l)],version:"well-known",author:{name:new URL(e.url).hostname}}}}}async function h(e){try{let t=await(await import('fs/promises')).readFile(e,"utf-8");return JSON.parse(t)}catch{return null}}function A(e){let o=e.basePath.split(/[\\/]/).filter(Boolean).pop()??"local";return {id:e.id??`local:${o}`,category:"file",async fetch(){let r=[],l=await h(path.join(e.basePath,".claude-plugin/plugin.json"));l?.name&&r.push({id:l.name,name:l.name,description:l.description,location:e.basePath,category:"file",metadata:{skills:l.skills,manifest:"plugin.json"}});let n=await h(path.join(e.basePath,".claude-plugin/marketplace.json"));if(n?.plugins)for(let i of n.plugins)i.name&&(typeof i.source!="string"&&i.source!==void 0||r.push({id:i.name,name:i.name,description:i.description,location:i.source?path.join(e.basePath,n.metadata?.pluginRoot??"",i.source):e.basePath,category:"file",metadata:{skills:i.skills,manifest:"marketplace.json",pluginRoot:n.metadata?.pluginRoot}}));return r},async load(r){return {skills:(await chunkHOK3SUH4_cjs.A(r.location)).map(i=>({name:i.name,description:i.description,scope:"all"})),version:"local",author:{name:o}}}}}Object.defineProperty(exports,"applyActions",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.c}});Object.defineProperty(exports,"buildMatrix",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.d}});Object.defineProperty(exports,"buildUsePrompt",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.G}});Object.defineProperty(exports,"detectAgent",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.f}});Object.defineProperty(exports,"getAgentName",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.h}});Object.defineProperty(exports,"getAgentType",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.i}});Object.defineProperty(exports,"handleSkillsCli",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.M}});Object.defineProperty(exports,"hasProjectSkills",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.k}});Object.defineProperty(exports,"initTelemetry",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.o}});Object.defineProperty(exports,"isRunningInAgent",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.g}});Object.defineProperty(exports,"launchAgentInteractively",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.J}});Object.defineProperty(exports,"matchesSkillFilter",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.m}});Object.defineProperty(exports,"materializeUseSkill",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.H}});Object.defineProperty(exports,"parseAddOptions",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.q}});Object.defineProperty(exports,"parseFindOptions",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.x}});Object.defineProperty(exports,"parseListOptions",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.A}});Object.defineProperty(exports,"parseRemoveOptions",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.D}});Object.defineProperty(exports,"parseStoreOptions",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.r}});Object.defineProperty(exports,"parseUpdateOptions",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.j}});Object.defineProperty(exports,"parseUseOptions",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.F}});Object.defineProperty(exports,"planActions",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.b}});Object.defineProperty(exports,"probeCell",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.a}});Object.defineProperty(exports,"removeCommand",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.C}});Object.defineProperty(exports,"renderBanner",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.K}});Object.defineProperty(exports,"renderHelp",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.L}});Object.defineProperty(exports,"resolveUpdateScope",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.l}});Object.defineProperty(exports,"runAdd",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.p}});Object.defineProperty(exports,"runDoctor",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.E}});Object.defineProperty(exports,"runFind",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.z}});Object.defineProperty(exports,"runList",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.B}});Object.defineProperty(exports,"runPostInstallReconcile",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.e}});Object.defineProperty(exports,"runStore",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.s}});Object.defineProperty(exports,"runStoreClean",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.u}});Object.defineProperty(exports,"runStoreList",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.t}});Object.defineProperty(exports,"runStoreRemove",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.w}});Object.defineProperty(exports,"runStoreUpdate",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.v}});Object.defineProperty(exports,"runUpdate",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.n}});Object.defineProperty(exports,"runUse",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.I}});Object.defineProperty(exports,"searchSkillsAPI",{enumerable:true,get:function(){return chunk42XRKOEA_cjs.y}});Object.defineProperty(exports,"fetchAuditData",{enumerable:true,get:function(){return chunkQ2MOP5ZW_cjs.c}});Object.defineProperty(exports,"flushTelemetry",{enumerable:true,get:function(){return chunkQ2MOP5ZW_cjs.e}});Object.defineProperty(exports,"setDetectedAgent",{enumerable:true,get:function(){return chunkQ2MOP5ZW_cjs.a}});Object.defineProperty(exports,"setVersion",{enumerable:true,get:function(){return chunkQ2MOP5ZW_cjs.b}});Object.defineProperty(exports,"track",{enumerable:true,get:function(){return chunkQ2MOP5ZW_cjs.d}});Object.defineProperty(exports,"addSkillToLock",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.r}});Object.defineProperty(exports,"computeContentHash",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.n}});Object.defineProperty(exports,"dismissPrompt",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.y}});Object.defineProperty(exports,"fetchSkillFolderHash",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.q}});Object.defineProperty(exports,"getAllLockedSkills",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.u}});Object.defineProperty(exports,"getGitHubToken",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.p}});Object.defineProperty(exports,"getSkillFromLock",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.t}});Object.defineProperty(exports,"getSkillLockPath",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.k}});Object.defineProperty(exports,"getSkillsBySource",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.v}});Object.defineProperty(exports,"isPromptDismissed",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.w}});Object.defineProperty(exports,"readSkillLock",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.l}});Object.defineProperty(exports,"removeSkillFromLock",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.s}});Object.defineProperty(exports,"resetGhAuthWarning",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.o}});Object.defineProperty(exports,"writeSkillLock",{enumerable:true,get:function(){return chunkBWDTT6SA_cjs.m}});Object.defineProperty(exports,"AGENTS_DIR",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.a}});Object.defineProperty(exports,"SKILLS_SUBDIR",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.b}});Object.defineProperty(exports,"UNIVERSAL_SKILLS_DIR",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.c}});Object.defineProperty(exports,"getAgentBaseDir",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.g}});Object.defineProperty(exports,"getCanonicalPath",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.o}});Object.defineProperty(exports,"getCanonicalSkillsDir",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.e}});Object.defineProperty(exports,"getEveSubagentSkillsDir",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.f}});Object.defineProperty(exports,"getInstallPath",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.m}});Object.defineProperty(exports,"installBlobSkillForAgent",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.r}});Object.defineProperty(exports,"installRemoteSkillForAgent",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.p}});Object.defineProperty(exports,"installSkillForAgent",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.h}});Object.defineProperty(exports,"installWellKnownSkillForAgent",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.q}});Object.defineProperty(exports,"isSkillInstalled",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.k}});Object.defineProperty(exports,"listInstalledSkills",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.s}});Object.defineProperty(exports,"sanitizeName",{enumerable:true,get:function(){return chunkIJI72D6W_cjs.d}});Object.defineProperty(exports,"DEFAULT_CLONE_TIMEOUT",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.f}});Object.defineProperty(exports,"GitCloneError",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.g}});Object.defineProperty(exports,"WellKnownProvider",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.m}});Object.defineProperty(exports,"acquireSourceClone",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.Q}});Object.defineProperty(exports,"addSkillToLocalLock",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.v}});Object.defineProperty(exports,"cleanCache",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.ja}});Object.defineProperty(exports,"cleanCachedRepo",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.ia}});Object.defineProperty(exports,"cleanupTempDir",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.l}});Object.defineProperty(exports,"cloneRepo",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.k}});Object.defineProperty(exports,"discoverSkills",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.A}});Object.defineProperty(exports,"ensureCachedSource",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.ca}});Object.defineProperty(exports,"filterSkills",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.C}});Object.defineProperty(exports,"getCacheRepoDir",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.P}});Object.defineProperty(exports,"getCacheRoot",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.N}});Object.defineProperty(exports,"getLocalLockPath",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.r}});Object.defineProperty(exports,"getOwnerRepo",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.a}});Object.defineProperty(exports,"getSkillDisplayName",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.B}});Object.defineProperty(exports,"getSourceDir",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.I}});Object.defineProperty(exports,"installFromCache",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.ha}});Object.defineProperty(exports,"isGitHubHttpsCloneUrl",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.i}});Object.defineProperty(exports,"isGitHubSsoAuthError",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.j}});Object.defineProperty(exports,"isRepoPrivate",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.c}});Object.defineProperty(exports,"isSubpathSafe",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.z}});Object.defineProperty(exports,"parseGitHubRepoUrl",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.h}});Object.defineProperty(exports,"parseOwnerRepo",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.b}});Object.defineProperty(exports,"parseSkillMd",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.y}});Object.defineProperty(exports,"parseSource",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.e}});Object.defineProperty(exports,"readLocalLock",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.t}});Object.defineProperty(exports,"removeSkillFromLocalLock",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.w}});Object.defineProperty(exports,"sanitizeSubpath",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.d}});Object.defineProperty(exports,"shouldInstallInternalSkills",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.x}});Object.defineProperty(exports,"wellKnownProvider",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.n}});Object.defineProperty(exports,"writeLocalLock",{enumerable:true,get:function(){return chunkHOK3SUH4_cjs.u}});Object.defineProperty(exports,"EVE_SUBAGENTS_DIR",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.e}});Object.defineProperty(exports,"PROJECT_SKILLS_DIR_PATTERN",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.j}});Object.defineProperty(exports,"agents",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.b}});Object.defineProperty(exports,"detectInstalledAgents",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.c}});Object.defineProperty(exports,"getAgentConfig",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.d}});Object.defineProperty(exports,"getAgentGlobalSkillDirs",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.l}});Object.defineProperty(exports,"getAgentProjectSkillContainerPrefixes",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.n}});Object.defineProperty(exports,"getAgentProjectSkillDirs",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.k}});Object.defineProperty(exports,"getAgentSkillDirs",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.m}});Object.defineProperty(exports,"getEveSubagents",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.f}});Object.defineProperty(exports,"getNonUniversalAgents",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.i}});Object.defineProperty(exports,"getOpenClawGlobalSkillsDir",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.a}});Object.defineProperty(exports,"getUniversalAgents",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.h}});Object.defineProperty(exports,"isUniversalAgent",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.o}});Object.defineProperty(exports,"matchesUniversalScope",{enumerable:true,get:function(){return chunkJUNIAQ2A_cjs.g}});Object.defineProperty(exports,"getAgentAdapter",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.h}});Object.defineProperty(exports,"getGlobal",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.c}});Object.defineProperty(exports,"getHomeDir",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.k}});Object.defineProperty(exports,"getInstance",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.f}});Object.defineProperty(exports,"getProjectDirectory",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.p}});Object.defineProperty(exports,"getXdgCache",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.o}});Object.defineProperty(exports,"getXdgConfig",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.l}});Object.defineProperty(exports,"getXdgData",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.m}});Object.defineProperty(exports,"getXdgState",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.n}});Object.defineProperty(exports,"hasAgentAdapter",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.i}});Object.defineProperty(exports,"requireAgentAdapter",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.j}});Object.defineProperty(exports,"resetGlobalAdapter",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.b}});Object.defineProperty(exports,"resetInstanceAdapter",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.e}});Object.defineProperty(exports,"setAgentAdapter",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.g}});Object.defineProperty(exports,"setGlobalAdapter",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.a}});Object.defineProperty(exports,"setInstanceAdapter",{enumerable:true,get:function(){return chunkXGUPIAAF_cjs.d}});Object.defineProperty(exports,"BLOB_ALLOWED_REPOS",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.c}});Object.defineProperty(exports,"fetchRepoTree",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.g}});Object.defineProperty(exports,"findSkillMdPaths",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.k}});Object.defineProperty(exports,"getSkillFolderHashFromTree",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.i}});Object.defineProperty(exports,"resetRepoTreeAuthState",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.f}});Object.defineProperty(exports,"sanitizeMetadata",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.b}});Object.defineProperty(exports,"stripTerminalEscapes",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.a}});Object.defineProperty(exports,"toSkillSlug",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.e}});Object.defineProperty(exports,"tryBlobInstall",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.l}});Object.defineProperty(exports,"computeFromDir",{enumerable:true,get:function(){return chunkE7AHWFZN_cjs.b}});Object.defineProperty(exports,"computeSnapshotHash",{enumerable:true,get:function(){return chunkE7AHWFZN_cjs.c}});Object.defineProperty(exports,"parseFrontmatter",{enumerable:true,get:function(){return chunkE7AHWFZN_cjs.a}});exports.createLocalPluginSource=A;exports.createWellKnownSource=x;exports.findProvider=ct;exports.findSource=k;exports.findSourcesByCategory=P;exports.getProviders=ut;exports.listAllEntries=y;exports.listSources=d;exports.registerProvider=at;exports.registerSource=f;exports.registry=u;
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- export{c as applyActions,d as buildMatrix,G as buildUsePrompt,f as detectAgent,h as getAgentName,i as getAgentType,M as handleSkillsCli,k as hasProjectSkills,o as initTelemetry,g as isRunningInAgent,J as launchAgentInteractively,m as matchesSkillFilter,H as materializeUseSkill,q as parseAddOptions,x as parseFindOptions,A as parseListOptions,D as parseRemoveOptions,r as parseStoreOptions,j as parseUpdateOptions,F as parseUseOptions,b as planActions,a as probeCell,C as removeCommand,K as renderBanner,L as renderHelp,l as resolveUpdateScope,p as runAdd,E as runDoctor,z as runFind,B as runList,e as runPostInstallReconcile,s as runStore,u as runStoreClean,t as runStoreList,w as runStoreRemove,v as runStoreUpdate,n as runUpdate,I as runUse,y as searchSkillsAPI}from'./chunks/chunk-RH7I27R4.mjs';export{c as fetchAuditData,e as flushTelemetry,a as setDetectedAgent,b as setVersion,d as track}from'./chunks/chunk-CFMOYU7R.mjs';export{r as addSkillToLock,n as computeContentHash,y as dismissPrompt,q as fetchSkillFolderHash,u as getAllLockedSkills,p as getGitHubToken,t as getSkillFromLock,k as getSkillLockPath,v as getSkillsBySource,w as isPromptDismissed,l as readSkillLock,s as removeSkillFromLock,o as resetGhAuthWarning,m as writeSkillLock}from'./chunks/chunk-5DAHAO55.mjs';import'./chunks/chunk-BQ6QWQEM.mjs';export{a as AGENTS_DIR,b as SKILLS_SUBDIR,c as UNIVERSAL_SKILLS_DIR,g as getAgentBaseDir,o as getCanonicalPath,e as getCanonicalSkillsDir,f as getEveSubagentSkillsDir,m as getInstallPath,r as installBlobSkillForAgent,p as installRemoteSkillForAgent,h as installSkillForAgent,q as installWellKnownSkillForAgent,k as isSkillInstalled,s as listInstalledSkills,d as sanitizeName}from'./chunks/chunk-6OLPTZDO.mjs';import {n,A as A$1}from'./chunks/chunk-UUZB3HCD.mjs';export{f as DEFAULT_CLONE_TIMEOUT,g as GitCloneError,m as WellKnownProvider,Q as acquireSourceClone,v as addSkillToLocalLock,ja as cleanCache,ia as cleanCachedRepo,l as cleanupTempDir,k as cloneRepo,A as discoverSkills,ca as ensureCachedSource,C as filterSkills,P as getCacheRepoDir,N as getCacheRoot,r as getLocalLockPath,a as getOwnerRepo,B as getSkillDisplayName,I as getSourceDir,ha as installFromCache,i as isGitHubHttpsCloneUrl,j as isGitHubSsoAuthError,c as isRepoPrivate,z as isSubpathSafe,h as parseGitHubRepoUrl,b as parseOwnerRepo,y as parseSkillMd,e as parseSource,t as readLocalLock,w as removeSkillFromLocalLock,d as sanitizeSubpath,x as shouldInstallInternalSkills,n as wellKnownProvider,u as writeLocalLock}from'./chunks/chunk-UUZB3HCD.mjs';export{e as EVE_SUBAGENTS_DIR,j as PROJECT_SKILLS_DIR_PATTERN,b as agents,c as detectInstalledAgents,d as getAgentConfig,l as getAgentGlobalSkillDirs,n as getAgentProjectSkillContainerPrefixes,k as getAgentProjectSkillDirs,m as getAgentSkillDirs,f as getEveSubagents,i as getNonUniversalAgents,a as getOpenClawGlobalSkillsDir,h as getUniversalAgents,o as isUniversalAgent,g as matchesUniversalScope}from'./chunks/chunk-Y6D5Z6AU.mjs';export{h as getAgentAdapter,c as getGlobal,k as getHomeDir,f as getInstance,p as getProjectDirectory,o as getXdgCache,l as getXdgConfig,m as getXdgData,n as getXdgState,i as hasAgentAdapter,j as requireAgentAdapter,b as resetGlobalAdapter,e as resetInstanceAdapter,g as setAgentAdapter,a as setGlobalAdapter,d as setInstanceAdapter}from'./chunks/chunk-RWZ4LFSN.mjs';export{c as BLOB_ALLOWED_REPOS,g as fetchRepoTree,k as findSkillMdPaths,i as getSkillFolderHashFromTree,f as resetRepoTreeAuthState,b as sanitizeMetadata,a as stripTerminalEscapes,e as toSkillSlug,l as tryBlobInstall}from'./chunks/chunk-ZJS7IO5V.mjs';export{b as computeFromDir,c as computeSnapshotHash,a as parseFrontmatter}from'./chunks/chunk-ZYDDQV73.mjs';import {b}from'./chunks/chunk-WQGSYA5D.mjs';import {join}from'path';var d=class{constructor(){b(this,"providers",[]);}register(o){if(this.providers.some(t=>t.id===o.id))throw new Error(`Provider with id "${o.id}" already registered`);this.providers.push(o);}findProvider(o){for(let t of this.providers)if(t.match(o).matches)return t;return null}getProviders(){return [...this.providers]}},p=new d;function ct(e){p.register(e);}function ut(e){return p.findProvider(e)}function pt(){return p.getProviders()}var u=new Map;function k(e){if(u.has(e.id))throw new Error(`PluginSource with id "${e.id}" already registered`);u.set(e.id,e);}function S(){return Array.from(u.values()).map(e=>e)}function P(e){return u.get(e)??null}function y(e){return Array.from(u.values()).filter(o=>o.category===e)}async function x(){let e=S();return await Promise.all(e.map(async t=>{try{let r=await t.fetch();return {sourceId:t.id,entries:r}}catch(r){return {sourceId:t.id,error:r instanceof Error?r:new Error(String(r))}}}))}function gt(e){return {name:e.name,description:e.description,scope:"all"}}function h(e){return {id:e.id??`well-known:${new URL(e.url).hostname}`,category:"well-known",async fetch(){return (await n.fetchAllSkills(e.url)).map(r=>({id:r.name,name:r.name,description:r.description,location:r.sourceUrl,category:"well-known",metadata:{installName:r.installName,sourceIdentifier:n.getSourceIdentifier(e.url),sourceUrl:r.sourceUrl}}))},async load(t){let l=(await n.fetchAllSkills(e.url)).find(n=>n.name===t.id);if(!l)throw new Error(`Skill "${t.id}" not found in well-known source ${e.url}`);return {skills:[gt(l)],version:"well-known",author:{name:new URL(e.url).hostname}}}}}async function A(e){try{let t=await(await import('fs/promises')).readFile(e,"utf-8");return JSON.parse(t)}catch{return null}}function w(e){let o=e.basePath.split(/[\\/]/).filter(Boolean).pop()??"local";return {id:e.id??`local:${o}`,category:"file",async fetch(){let r=[],l=await A(join(e.basePath,".claude-plugin/plugin.json"));l?.name&&r.push({id:l.name,name:l.name,description:l.description,location:e.basePath,category:"file",metadata:{skills:l.skills,manifest:"plugin.json"}});let n=await A(join(e.basePath,".claude-plugin/marketplace.json"));if(n?.plugins)for(let i of n.plugins)i.name&&(typeof i.source!="string"&&i.source!==void 0||r.push({id:i.name,name:i.name,description:i.description,location:i.source?join(e.basePath,n.metadata?.pluginRoot??"",i.source):e.basePath,category:"file",metadata:{skills:i.skills,manifest:"marketplace.json",pluginRoot:n.metadata?.pluginRoot}}));return r},async load(r){return {skills:(await A$1(r.location)).map(i=>({name:i.name,description:i.description,scope:"all"})),version:"local",author:{name:o}}}}}export{w as createLocalPluginSource,h as createWellKnownSource,ut as findProvider,P as findSource,y as findSourcesByCategory,pt as getProviders,x as listAllEntries,S as listSources,ct as registerProvider,k as registerSource,p as registry};
1
+ export{c as applyActions,d as buildMatrix,G as buildUsePrompt,f as detectAgent,h as getAgentName,i as getAgentType,M as handleSkillsCli,k as hasProjectSkills,o as initTelemetry,g as isRunningInAgent,J as launchAgentInteractively,m as matchesSkillFilter,H as materializeUseSkill,q as parseAddOptions,x as parseFindOptions,A as parseListOptions,D as parseRemoveOptions,r as parseStoreOptions,j as parseUpdateOptions,F as parseUseOptions,b as planActions,a as probeCell,C as removeCommand,K as renderBanner,L as renderHelp,l as resolveUpdateScope,p as runAdd,E as runDoctor,z as runFind,B as runList,e as runPostInstallReconcile,s as runStore,u as runStoreClean,t as runStoreList,w as runStoreRemove,v as runStoreUpdate,n as runUpdate,I as runUse,y as searchSkillsAPI}from'./chunks/chunk-MYZQNUHR.mjs';export{c as fetchAuditData,e as flushTelemetry,a as setDetectedAgent,b as setVersion,d as track}from'./chunks/chunk-CFMOYU7R.mjs';export{r as addSkillToLock,n as computeContentHash,y as dismissPrompt,q as fetchSkillFolderHash,u as getAllLockedSkills,p as getGitHubToken,t as getSkillFromLock,k as getSkillLockPath,v as getSkillsBySource,w as isPromptDismissed,l as readSkillLock,s as removeSkillFromLock,o as resetGhAuthWarning,m as writeSkillLock}from'./chunks/chunk-5DAHAO55.mjs';import'./chunks/chunk-BQ6QWQEM.mjs';export{a as AGENTS_DIR,b as SKILLS_SUBDIR,c as UNIVERSAL_SKILLS_DIR,g as getAgentBaseDir,o as getCanonicalPath,e as getCanonicalSkillsDir,f as getEveSubagentSkillsDir,m as getInstallPath,r as installBlobSkillForAgent,p as installRemoteSkillForAgent,h as installSkillForAgent,q as installWellKnownSkillForAgent,k as isSkillInstalled,s as listInstalledSkills,d as sanitizeName}from'./chunks/chunk-6OLPTZDO.mjs';import {n,A as A$1}from'./chunks/chunk-UUZB3HCD.mjs';export{f as DEFAULT_CLONE_TIMEOUT,g as GitCloneError,m as WellKnownProvider,Q as acquireSourceClone,v as addSkillToLocalLock,ja as cleanCache,ia as cleanCachedRepo,l as cleanupTempDir,k as cloneRepo,A as discoverSkills,ca as ensureCachedSource,C as filterSkills,P as getCacheRepoDir,N as getCacheRoot,r as getLocalLockPath,a as getOwnerRepo,B as getSkillDisplayName,I as getSourceDir,ha as installFromCache,i as isGitHubHttpsCloneUrl,j as isGitHubSsoAuthError,c as isRepoPrivate,z as isSubpathSafe,h as parseGitHubRepoUrl,b as parseOwnerRepo,y as parseSkillMd,e as parseSource,t as readLocalLock,w as removeSkillFromLocalLock,d as sanitizeSubpath,x as shouldInstallInternalSkills,n as wellKnownProvider,u as writeLocalLock}from'./chunks/chunk-UUZB3HCD.mjs';export{e as EVE_SUBAGENTS_DIR,j as PROJECT_SKILLS_DIR_PATTERN,b as agents,c as detectInstalledAgents,d as getAgentConfig,l as getAgentGlobalSkillDirs,n as getAgentProjectSkillContainerPrefixes,k as getAgentProjectSkillDirs,m as getAgentSkillDirs,f as getEveSubagents,i as getNonUniversalAgents,a as getOpenClawGlobalSkillsDir,h as getUniversalAgents,o as isUniversalAgent,g as matchesUniversalScope}from'./chunks/chunk-Y6D5Z6AU.mjs';export{h as getAgentAdapter,c as getGlobal,k as getHomeDir,f as getInstance,p as getProjectDirectory,o as getXdgCache,l as getXdgConfig,m as getXdgData,n as getXdgState,i as hasAgentAdapter,j as requireAgentAdapter,b as resetGlobalAdapter,e as resetInstanceAdapter,g as setAgentAdapter,a as setGlobalAdapter,d as setInstanceAdapter}from'./chunks/chunk-RWZ4LFSN.mjs';export{c as BLOB_ALLOWED_REPOS,g as fetchRepoTree,k as findSkillMdPaths,i as getSkillFolderHashFromTree,f as resetRepoTreeAuthState,b as sanitizeMetadata,a as stripTerminalEscapes,e as toSkillSlug,l as tryBlobInstall}from'./chunks/chunk-ZJS7IO5V.mjs';export{b as computeFromDir,c as computeSnapshotHash,a as parseFrontmatter}from'./chunks/chunk-ZYDDQV73.mjs';import {b}from'./chunks/chunk-WQGSYA5D.mjs';import {join}from'path';var d=class{constructor(){b(this,"providers",[]);}register(o){if(this.providers.some(t=>t.id===o.id))throw new Error(`Provider with id "${o.id}" already registered`);this.providers.push(o);}findProvider(o){for(let t of this.providers)if(t.match(o).matches)return t;return null}getProviders(){return [...this.providers]}},p=new d;function ct(e){p.register(e);}function ut(e){return p.findProvider(e)}function pt(){return p.getProviders()}var u=new Map;function k(e){if(u.has(e.id))throw new Error(`PluginSource with id "${e.id}" already registered`);u.set(e.id,e);}function S(){return Array.from(u.values()).map(e=>e)}function P(e){return u.get(e)??null}function y(e){return Array.from(u.values()).filter(o=>o.category===e)}async function x(){let e=S();return await Promise.all(e.map(async t=>{try{let r=await t.fetch();return {sourceId:t.id,entries:r}}catch(r){return {sourceId:t.id,error:r instanceof Error?r:new Error(String(r))}}}))}function gt(e){return {name:e.name,description:e.description,scope:"all"}}function h(e){return {id:e.id??`well-known:${new URL(e.url).hostname}`,category:"well-known",async fetch(){return (await n.fetchAllSkills(e.url)).map(r=>({id:r.name,name:r.name,description:r.description,location:r.sourceUrl,category:"well-known",metadata:{installName:r.installName,sourceIdentifier:n.getSourceIdentifier(e.url),sourceUrl:r.sourceUrl}}))},async load(t){let l=(await n.fetchAllSkills(e.url)).find(n=>n.name===t.id);if(!l)throw new Error(`Skill "${t.id}" not found in well-known source ${e.url}`);return {skills:[gt(l)],version:"well-known",author:{name:new URL(e.url).hostname}}}}}async function A(e){try{let t=await(await import('fs/promises')).readFile(e,"utf-8");return JSON.parse(t)}catch{return null}}function w(e){let o=e.basePath.split(/[\\/]/).filter(Boolean).pop()??"local";return {id:e.id??`local:${o}`,category:"file",async fetch(){let r=[],l=await A(join(e.basePath,".claude-plugin/plugin.json"));l?.name&&r.push({id:l.name,name:l.name,description:l.description,location:e.basePath,category:"file",metadata:{skills:l.skills,manifest:"plugin.json"}});let n=await A(join(e.basePath,".claude-plugin/marketplace.json"));if(n?.plugins)for(let i of n.plugins)i.name&&(typeof i.source!="string"&&i.source!==void 0||r.push({id:i.name,name:i.name,description:i.description,location:i.source?join(e.basePath,n.metadata?.pluginRoot??"",i.source):e.basePath,category:"file",metadata:{skills:i.skills,manifest:"marketplace.json",pluginRoot:n.metadata?.pluginRoot}}));return r},async load(r){return {skills:(await A$1(r.location)).map(i=>({name:i.name,description:i.description,scope:"all"})),version:"local",author:{name:o}}}}}export{w as createLocalPluginSource,h as createWellKnownSource,ut as findProvider,P as findSource,y as findSourcesByCategory,pt as getProviders,x as listAllEntries,S as listSources,ct as registerProvider,k as registerSource,p as registry};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@easbot/skills",
3
- "version": "0.3.20",
3
+ "version": "0.3.22",
4
4
  "description": "Skills management system for EAS Agent ecosystem (add / remove / list / find / update / sync / use)",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -51,10 +51,10 @@
51
51
  "xdg-basedir": "^5.1.0",
52
52
  "yaml": "^2.9.0",
53
53
  "zod": "^4.4.3",
54
- "@easbot/utils": "0.3.20",
55
- "@easbot/mcp": "0.3.20",
56
- "@easbot/types": "0.3.20",
57
- "@easbot/terminal": "0.3.20"
54
+ "@easbot/utils": "0.3.22",
55
+ "@easbot/terminal": "0.3.22",
56
+ "@easbot/types": "0.3.22",
57
+ "@easbot/mcp": "0.3.22"
58
58
  },
59
59
  "devDependencies": {
60
60
  "@types/node": "^25.9.5",
@@ -77,7 +77,7 @@
77
77
  "format": "biome format .",
78
78
  "format:fix": "biome format --write .",
79
79
  "type-check": "tsc --noEmit",
80
- "clean": "npx rimraf dist node_modules",
80
+ "clean": "rimraf dist node_modules",
81
81
  "publish:npm": "bash scripts/publish.sh",
82
82
  "publish:npm:win": "powershell -ExecutionPolicy Bypass -File scripts/publish.ps1"
83
83
  }