@easbot/skills 0.3.14 → 0.3.17
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.
- package/dist/chunks/{blob-SCUVTYVE.cjs → blob-RYNC3CVY.cjs} +1 -1
- package/dist/chunks/{chunk-NH4TYEPW.mjs → chunk-5DAHAO55.mjs} +1 -1
- package/dist/chunks/{chunk-AQYRRXU5.mjs → chunk-6OLPTZDO.mjs} +2 -2
- package/dist/chunks/{chunk-5BDDXFOF.mjs → chunk-BQ6QWQEM.mjs} +1 -1
- package/dist/chunks/{chunk-5RWSXDNO.cjs → chunk-BWDTT6SA.cjs} +2 -2
- package/dist/chunks/chunk-CF3VBJAY.mjs +265 -0
- package/dist/chunks/chunk-HOK3SUH4.cjs +22 -0
- package/dist/chunks/{chunk-UGHF4GOW.cjs → chunk-IJI72D6W.cjs} +2 -2
- package/dist/chunks/{chunk-ISMGLHYS.cjs → chunk-JUNIAQ2A.cjs} +1 -1
- package/dist/chunks/{chunk-DFBKA5A6.cjs → chunk-LJ63Q26N.cjs} +1 -1
- package/dist/chunks/{chunk-2E6BHPFV.cjs → chunk-TXYXJIUS.cjs} +46 -46
- package/dist/chunks/chunk-UUZB3HCD.mjs +22 -0
- package/dist/chunks/chunk-Y6D5Z6AU.mjs +1 -0
- package/dist/chunks/cli-handler-5WWBIOMA.mjs +1 -0
- package/dist/chunks/cli-handler-PQCHQKLK.cjs +1 -0
- package/dist/chunks/installer-3ZLHOVAO.cjs +1 -0
- package/dist/chunks/{installer-NJN3PT5F.mjs → installer-UUEXYC7I.mjs} +1 -1
- package/dist/chunks/{interfaces-5BH4K5TM.cjs → interfaces-T3TO7GQW.cjs} +1 -1
- package/dist/chunks/local-lock-KNX2RUIV.cjs +1 -0
- package/dist/chunks/{local-lock-ZHTDWYXF.mjs → local-lock-UYZTKIET.mjs} +1 -1
- package/dist/chunks/scan-6EBCZDVK.cjs +1 -0
- package/dist/chunks/scan-BZA5LEZN.mjs +1 -0
- package/dist/chunks/{skill-lock-MNRZ7TIX.mjs → skill-lock-CDMLVBYH.mjs} +1 -1
- package/dist/chunks/skill-lock-WPACLO4W.cjs +1 -0
- package/dist/chunks/store-2ULHEVHS.cjs +1 -0
- package/dist/chunks/{store-UJPPYDBG.mjs → store-FRXO6UWU.mjs} +1 -1
- package/dist/chunks/{telemetry-B4PS27S5.cjs → telemetry-TAVF3FAM.cjs} +1 -1
- package/dist/cli.cjs +1 -1
- package/dist/cli.mjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +1 -1
- package/package.json +7 -7
- package/dist/chunks/chunk-6NTEYECA.mjs +0 -22
- package/dist/chunks/chunk-J6PRUXFG.mjs +0 -265
- package/dist/chunks/chunk-JCOXRETY.cjs +0 -22
- package/dist/chunks/chunk-ML6B4IQL.mjs +0 -1
- package/dist/chunks/cli-handler-3FSM4C7L.mjs +0 -1
- package/dist/chunks/cli-handler-B6H4RZEM.cjs +0 -1
- package/dist/chunks/installer-YDJBZTQ7.cjs +0 -1
- package/dist/chunks/local-lock-SPZB3AB7.cjs +0 -1
- package/dist/chunks/scan-6W47D2KJ.mjs +0 -1
- package/dist/chunks/scan-L6UNVP3V.cjs +0 -1
- package/dist/chunks/skill-lock-VX2HGPTY.cjs +0 -1
- package/dist/chunks/store-TSS4BMBF.cjs +0 -1
- /package/dist/chunks/{chunk-GWUDKZEH.cjs → chunk-BWPPLYIF.cjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var chunkDNE3XPCJ_cjs=require('./chunk-DNE3XPCJ.cjs');require('./chunk-E7AHWFZN.cjs'),require('./chunk-
|
|
1
|
+
'use strict';var chunkDNE3XPCJ_cjs=require('./chunk-DNE3XPCJ.cjs');require('./chunk-E7AHWFZN.cjs'),require('./chunk-BWPPLYIF.cjs');Object.defineProperty(exports,"BLOB_ALLOWED_OWNERS",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.d}});Object.defineProperty(exports,"BLOB_ALLOWED_REPOS",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.c}});Object.defineProperty(exports,"fetchGitHubMarketSnapshot",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.h}});Object.defineProperty(exports,"fetchRepoTree",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.g}});Object.defineProperty(exports,"fetchSkillFolderHash",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.j}});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,"toSkillSlug",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.e}});Object.defineProperty(exports,"tryBlobInstall",{enumerable:true,get:function(){return chunkDNE3XPCJ_cjs.l}});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {p as p$1,J as J$1}from'./chunk-
|
|
1
|
+
import {p as p$1,J as J$1}from'./chunk-UUZB3HCD.mjs';import {m}from'./chunk-RWZ4LFSN.mjs';import {readFile,mkdir,writeFile}from'fs/promises';import {join,dirname}from'path';import {createHash}from'crypto';import {execSync}from'child_process';import {isRich,theme,colorize,Symbol}from'@easbot/terminal';function e(t,r){return i=>colorize(t,r,i)}var o=isRich(),y=e(o,theme.muted),$=e(o,theme.error),K=e(o,theme.success),x=e(o,theme.warn),a=e(o,theme.info);e(o,theme.accentBright);var C=e(o,theme.heading),U=e(o,theme.heading);var j=e(o,theme.info);e(o,theme.error);var J=t=>t;var I=".skill-lock.json",S=6;function h(){return join(m(),"skills",I)}async function l(){let t=h();return await N(t)??_()}async function N(t){try{let r=await readFile(t,"utf-8"),i=JSON.parse(r);return typeof i.version!="number"||!i.skills||i.version<S?null:i}catch{return null}}async function k(t){let r=h();await mkdir(dirname(r),{recursive:true});let i=JSON.stringify(t,null,2);await writeFile(r,i,"utf-8");}function rt(t){return createHash("sha256").update(t,"utf-8").digest("hex")}var p=false;function it(){p=false;}function nt(){if(process.env.GITHUB_TOKEN)return process.env.GITHUB_TOKEN;if(process.env.GH_TOKEN)return process.env.GH_TOKEN;p||(process.stderr.write(`${Symbol.colorize(Symbol.bar.vertical,"warning")} ${x("GitHub rate limit reached")} \u2014 using your ${a("gh")} login to continue.
|
|
2
2
|
${Symbol.colorize(Symbol.bar.vertical,"warning")} ${y(`Tip: set ${a("GITHUB_TOKEN")} to avoid this prompt, or use ${a("--full-depth")} to clone instead.
|
|
3
3
|
`)}`),p=true);try{let t=execSync("gh auth token",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim();if(t)return t}catch{}return null}async function et(t,r,i,s){let{fetchRepoTree:c,getSkillFolderHashFromTree:w}=await import('./blob-WZAGX4RO.mjs'),g=await c(t,s,i??void 0);return g?w(g,r):null}async function ot(t,r){let i=await l(),s=new Date().toISOString(),c=i.skills[t];i.skills[t]={...r,installedAt:c?.installedAt??s,updatedAt:s},await k(i);}async function st(t){let r=await l();return t in r.skills?(delete r.skills[t],await k(r),true):false}async function lt(t){return (await l()).skills[t]??null}async function ct(){return (await l()).skills}async function at(){let t=await l(),r=new Map;for(let[i,s]of Object.entries(t.skills)){let c=r.get(s.source);c?c.skills.push(i):r.set(s.source,{skills:[i],entry:s});}return r}function _(){return {version:S,skills:{},dismissed:{}}}async function ut(t){return (await l()).dismissed?.[t]===true}function pt(t,r){return t?p$1(t,J$1(),r):null}async function kt(t){let r=await l();r.dismissed||(r.dismissed={}),r.dismissed[t]=true,await k(r);}export{y as a,$ as b,K as c,x as d,a as e,C as f,U as g,j as h,J as i,S as j,h as k,l,k as m,rt as n,it as o,nt as p,et as q,ot as r,st as s,lt as t,ct as u,at as v,ut as w,pt as x,kt as y};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {e,o,b,c}from'./chunk-
|
|
1
|
+
import {e,o,b,c}from'./chunk-Y6D5Z6AU.mjs';import {k,p,q}from'./chunk-RWZ4LFSN.mjs';import {a,b as b$1}from'./chunk-ZYDDQV73.mjs';import {mkdir,readdir,writeFile,readFile,cp,lstat,access,rm,realpath,readlink,symlink}from'fs/promises';import {existsSync}from'fs';import {join,basename,dirname,normalize,resolve,sep,relative,extname}from'path';import {homedir,platform}from'os';var V=".agents",X="skills",Se=".agents/skills";async function ge(t){try{return await b$1(t)}catch{return}}async function G(t,e,a,r,n={}){if(n.expectedMode&&n.agentType){let l=await ne(t,n.agentType,{global:a,cwd:r});if(!l.installed||l.mode!==n.expectedMode)return false}let i=await ge(e);if(!i)return false;let s;if(a){let{readSkillLock:l}=await import('./skill-lock-CDMLVBYH.mjs');s=(await l()).skills[t]?.computedHash;}else {let{readLocalLock:l}=await import('./local-lock-UYZTKIET.mjs');s=(await l(r)).skills[t]?.computedHash;}return s?s===i:false}function P(t){return t.toLowerCase().replace(/[^a-z0-9._]+/g,"-").replace(/^[.-]+|[.-]+$/g,"").substring(0,255)||"unnamed-skill"}function w(t,e){let a=normalize(resolve(t)),r=normalize(resolve(e));return r.startsWith(a+sep)||r===a}function Y(t,e){return w(t,e)||w(e,t)}function N(t,e){let a=t?k()||homedir():e||p()||process.cwd();return join(a,V,X)}function te(t,e$1){let a=e$1||p()||process.cwd();return join(a,e,P(t),"skills")}function D(t,e,a,r){if(o(t,e?"global":"project"))return N(e,a);if(t==="eve"&&r)return te(r,a);let n=b[t],i=k()||homedir(),s=e?i:a||p()||process.cwd();return e?n.globalSkillsDir===void 0?join(s,n.skillsDir):n.globalSkillsDir:join(s,n.skillsDir)}function he(t,e){return resolve(dirname(t),e)}async function S(t){try{await rm(t,{recursive:!0,force:!0});}catch{}await mkdir(t,{recursive:true});}async function j(t,e){try{let a=resolve(t),r=resolve(e),[n,i]=await Promise.all([realpath(a).catch(()=>a),realpath(r).catch(()=>r)]);if(n===i)return !0;let s=q(t),l=q(e);if(s===l)return !0;try{if((await lstat(e)).isSymbolicLink()){let d=await readlink(e);if(he(e,d)===a)return !0;await rm(e);}else await rm(e,{recursive:!0});}catch(k){if(k&&typeof k=="object"&&"code"in k&&k.code==="ELOOP")try{await rm(e,{force:!0});}catch{}}let u=dirname(e);await mkdir(u,{recursive:!0});let h=q(u),g=relative(h,t),f=platform()==="win32"?"junction":void 0;return await symlink(f==="junction"?a:g,e,f),!0}catch{return false}}async function Me(t,e,a={}){let r=b[e],n=a.global??false,i=a.cwd||process.cwd(),s=a.eveSubagent;if(n&&r.globalSkillsDir===void 0)return {success:false,path:"",mode:a.mode??"symlink",error:`${r.displayName} does not support global skill installation`};let l=t.name||basename(t.path),u=P(l),h=a.mode??"symlink",f=e==="eve"&&h==="symlink"?D(e,n,i,s):N(n,i),o$1=join(f,u),k=D(e,n,i,s),d=join(k,P(t.name||basename(t.path))),c=q(d),m=q(o$1);if(!w(f,o$1))return {success:false,path:d,mode:h,error:"Invalid skill name: potential path traversal detected"};if(!w(k,d))return {success:false,path:d,mode:h,error:"Invalid skill name: potential path traversal detected"};try{if(Y(t.path,c))return {success:!0,path:c,mode:h,skipped:!0};if(h==="copy")return await G(u,t.path,n,i,{expectedMode:"copy",agentType:e})&&existsSync(c)?{success:!0,path:c,canonicalPath:m,mode:"copy",skipped:!0,skippedReason:"up-to-date"}:(await S(c),await R(t.path,c,e),{success:!0,path:c,canonicalPath:m,mode:"copy"});if(Y(t.path,c))return {success:!0,path:c,canonicalPath:m,mode:"symlink",skipped:!0};if(await G(u,t.path,n,i)&&existsSync(m)||(await S(m),await R(t.path,m,e)),!n&&o(e,"project"))return {success:!0,path:m,canonicalPath:m,mode:"copy"};if(n&&o(e,"global"))return {success:!0,path:m,canonicalPath:m,mode:"symlink"};if(!n){let z=join(i,b[e].skillsDir.split("/")[0]);if(!existsSync(z))return {success:!0,path:m,canonicalPath:m,mode:"symlink",skipped:!0}}return o$1===d?{success:!0,path:d,canonicalPath:o$1,mode:"copy"}:await j(t.path,c)?{success:!0,path:c,canonicalPath:m,mode:"symlink"}:await G(u,t.path,n,i,{expectedMode:"copy",agentType:e})&&existsSync(c)?{success:!0,path:c,canonicalPath:m,mode:"symlink",skipped:!0,skippedReason:"up-to-date"}:(await S(c),await R(t.path,c,e),{success:!0,path:c,canonicalPath:m,mode:"symlink",symlinkFailed:!0})}catch(b){return {success:false,path:c,mode:h,error:b instanceof Error?b.message:"Unknown error"}}}async function je(t,e,a={}){let{isGlobal:r=false,agentType:n,cwd:i,storePath:s}=a,l=q(t),u=q(e);if(l===u)return {success:true,path:u,canonicalPath:t,mode:"copy"};if(!r&&n&&i&&!o(n,"project")){let f=join(i,b[n].skillsDir.split("/")[0]);if(!existsSync(f))return {success:true,path:e,canonicalPath:t,mode:"symlink",skipped:true}}let h=s?q(s):l;return await j(h,u)?{success:true,path:e,canonicalPath:t,mode:"symlink"}:{success:true,path:e,canonicalPath:t,mode:"symlink",symlinkFailed:true}}async function _e(t,e,a={}){let{agentType:r="easbot"}=a,n=q(t),i=q(e);if(n===i)return {success:true,path:i,canonicalPath:t,mode:"copy"};try{return await S(i),await R(n,i,r),{success:!0,path:i,canonicalPath:t,mode:"copy"}}catch(s){return {success:false,path:e,mode:"copy",error:s instanceof Error?s.message:"Unknown error"}}}var ke=new Set(["metadata.json"]),we=new Set([".git","__pycache__","__pypackages__"]),ye=(t,e=false)=>!!(ke.has(t)||e&&we.has(t));function L(t){let{data:e,content:a$1}=a(t),r={};if(typeof e.description=="string"&&(r.description=e.description),typeof e.license=="string"&&(r.license=e.license),e.metadata&&typeof e.metadata=="object"&&!Array.isArray(e.metadata)){let s=Object.fromEntries(Object.entries(e.metadata).filter(l=>typeof l[1]=="string"));Object.keys(s).length>0&&(r.metadata=s);}let n=Object.keys(r);return n.length===0?a$1.replace(/^\r?\n/u,""):`---
|
|
2
2
|
${n.map(s=>`${s}: ${JSON.stringify(r[s])}`).join(`
|
|
3
3
|
`)}
|
|
4
4
|
---
|
|
5
|
-
${a$1.replace(/^\r?\n/u,"")}`}async function R(t,e,a){await mkdir(e,{recursive:true});let r=await readdir(t,{withFileTypes:true});await Promise.all(r.filter(n=>!ye(n.name,n.isDirectory())).map(async n=>{let i=join(t,n.name),s=join(e,n.name);if(n.isDirectory())await R(i,s,a);else try{if(a==="eve"&&n.name.toLowerCase()==="skill.md"){await writeFile(s,L(await readFile(i,"utf-8")));return}await cp(i,s,{dereference:!0,recursive:!0});}catch(l){if(l instanceof Error&&"code"in l&&l.code==="ENOENT"&&n.isSymbolicLink())console.warn(`Skipping broken symlink: ${i}`);else throw l}}));}function be(t){return t.some(e=>basename(e.path).toLowerCase()==="skill.md")}function U(t){return `${P(t)}.md`}function ve(t){let e=t.find(r=>basename(r.path).toLowerCase()==="skill.md");if(e)return L(e.contents);let a=t.find(r=>extname(r.path).toLowerCase()===".md");return a?L(a.contents):""}async function Ue(t,e,a={}){return (await ne(t,e,a)).installed}async function ne(t,e,a={}){let r=b[e],n=P(t);if(a.global&&r.globalSkillsDir===void 0)return {installed:false,mode:null,path:""};let i=a.global?r.globalSkillsDir:e==="eve"&&a.eveSubagent?te(a.eveSubagent,a.cwd):join(a.cwd||process.cwd(),r.skillsDir),s=join(i,n);if(!w(i,s))return {installed:false,mode:null,path:""};try{let l=await lstat(s);return l.isSymbolicLink()?{installed:!0,mode:"symlink",path:s}:l.isDirectory()?{installed:!0,mode:"copy",path:s}:{installed:!1,mode:null,path:s}}catch{return {installed:false,mode:null,path:s}}}function Be(t,e,a={}){let r=P(t),n=D(e,a.global??false,a.cwd,a.eveSubagent),i=join(n,r);if(!w(n,i))throw new Error("Invalid skill name: potential path traversal detected");return i}async function O(t,e){try{return await access(join(t,"SKILL.md")),{created:!1}}catch{}return await mkdir(t,{recursive:true}),await e(t),{created:true}}function $e(t,e={}){let a=P(t),r=e.agent==="eve"?D("eve",e.global??false,e.cwd,e.eveSubagent):N(e.global??false,e.cwd),n=join(r,a);if(!w(r,n))throw new Error("Invalid skill name: potential path traversal detected");return n}async function ze(t,e,a={}){let r=b[e],n=a.global??false,i=a.cwd||process.cwd(),s=a.mode??"symlink",l=a.eveSubagent;if(n&&r.globalSkillsDir===void 0)return {success:false,path:"",mode:s,error:`${r.displayName} does not support global skill installation`};let u=P(t.installName),h=e==="eve"&&s==="symlink"?D(e,n,i,l):N(n,i),g=join(h,u),f=D(e,n,i,l),o$1=join(f,u);if(!w(h,g))return {success:false,path:o$1,mode:s,error:"Invalid skill name: potential path traversal detected"};if(!w(f,o$1))return {success:false,path:o$1,mode:s,error:"Invalid skill name: potential path traversal detected"};try{if(s==="copy"){await S(o$1);let c=e==="eve"?U(t.installName):"SKILL.md",m=join(o$1,c);return await writeFile(m,e==="eve"?L(t.content):t.content,"utf-8"),{success:!0,path:o$1,mode:"copy"}}let k=e==="eve"?U(t.installName):"SKILL.md";if(await O(g,async c=>{let m=join(c,k);await writeFile(m,e==="eve"?L(t.content):t.content,"utf-8");}),n&&o(e,"global"))return {success:!0,path:g,canonicalPath:g,mode:"symlink"};if(!await j(g,o$1)){await S(o$1);let c=e==="eve"?U(t.installName):"SKILL.md",m=join(o$1,c);return await writeFile(m,e==="eve"?L(t.content):t.content,"utf-8"),{success:!0,path:o$1,canonicalPath:g,mode:"symlink",symlinkFailed:!0}}return {success:!0,path:o$1,canonicalPath:g,mode:"symlink"}}catch(k){return {success:false,path:o$1,mode:s,error:k instanceof Error?k.message:"Unknown error"}}}async function Ke(t,e,a={}){let r=b[e],n=a.global??false,i=a.cwd||process.cwd(),s=a.mode??"symlink",l=a.eveSubagent;if(n&&r.globalSkillsDir===void 0)return {success:false,path:"",mode:s,error:`${r.displayName} does not support global skill installation`};let u=P(t.installName),h=e==="eve"&&s==="symlink"?D(e,n,i,l):N(n,i),g=join(h,u),f=D(e,n,i,l),o$1=join(f,u);if(!w(h,g))return {success:false,path:o$1,mode:s,error:"Invalid skill name: potential path traversal detected"};if(!w(f,o$1))return {success:false,path:o$1,mode:s,error:"Invalid skill name: potential path traversal detected"};async function k(d){for(let[c,m]of t.files){let b=join(d,c);if(!w(d,b))continue;let $=dirname(b);$!==d&&await mkdir($,{recursive:true}),await writeFile(b,e==="eve"&&basename(c).toLowerCase()==="skill.md"&&typeof m=="string"?L(m):m);}}try{return s==="copy"?(await S(o$1),await k(o$1),{success:!0,path:o$1,mode:"copy"}):(await O(g,k),n&&o(e,"global")?{success:!0,path:g,canonicalPath:g,mode:"symlink"}:await j(g,o$1)?{success:!0,path:o$1,canonicalPath:g,mode:"symlink"}:(await S(o$1),await k(o$1),{success:!0,path:o$1,canonicalPath:g,mode:"symlink",symlinkFailed:!0}))}catch(d){return {success:false,path:o$1,mode:s,error:d instanceof Error?d.message:"Unknown error"}}}async function Ge(t,e,a={}){let r=b[e],n=a.global??false,i=a.cwd||process.cwd(),s=a.mode??"symlink",l=a.eveSubagent;if(n&&r.globalSkillsDir===void 0)return {success:false,path:"",mode:s,error:`${r.displayName} does not support global skill installation`};let u=P(t.installName),h=D(e,n,i,l);if(e==="eve"&&!be(t.files)){let d=join(h,U(t.installName));if(!w(h,d))return {success:false,path:d,mode:s,error:"Invalid skill name: potential path traversal detected"};try{return await mkdir(h,{recursive:!0}),await rm(d,{recursive:!0,force:!0}),await writeFile(d,ve(t.files),"utf-8"),{success:!0,path:d,mode:"copy"}}catch(c){return {success:false,path:d,mode:s,error:c instanceof Error?c.message:"Unknown error"}}}let g=e==="eve"&&s==="symlink"?D(e,n,i,l):N(n,i),f=join(g,u),o$1=join(h,u);if(!w(g,f))return {success:false,path:o$1,mode:s,error:"Invalid skill name: potential path traversal detected"};if(!w(h,o$1))return {success:false,path:o$1,mode:s,error:"Invalid skill name: potential path traversal detected"};async function k(d){for(let c of t.files){let m=join(d,c.path);if(!w(d,m))continue;let b=dirname(m);b!==d&&await mkdir(b,{recursive:true}),await writeFile(m,e==="eve"&&basename(c.path).toLowerCase()==="skill.md"?L(c.contents):c.contents,"utf-8");}}try{if(s==="copy")return await S(o$1),await k(o$1),{success:!0,path:o$1,mode:"copy"};if(await O(f,k),n&&o(e,"global"))return {success:!0,path:f,canonicalPath:f,mode:"symlink"};if(!n&&!o(e,"project")){let c=join(i,b[e].skillsDir.split("/")[0]);if(!existsSync(c))return {success:!0,path:f,canonicalPath:f,mode:"symlink",skipped:!0}}return await j(f,o$1)?{success:!0,path:o$1,canonicalPath:f,mode:"symlink"}:(await S(o$1),await k(o$1),{success:!0,path:o$1,canonicalPath:f,mode:"symlink",symlinkFailed:!0})}catch(d){return {success:false,path:o$1,mode:s,error:d instanceof Error?d.message:"Unknown error"}}}async function Oe(t={}){let e=t.cwd||process.cwd(),{scanInstalledSkillDirs:a}=await import('./scan-
|
|
5
|
+
${a$1.replace(/^\r?\n/u,"")}`}async function R(t,e,a){await mkdir(e,{recursive:true});let r=await readdir(t,{withFileTypes:true});await Promise.all(r.filter(n=>!ye(n.name,n.isDirectory())).map(async n=>{let i=join(t,n.name),s=join(e,n.name);if(n.isDirectory())await R(i,s,a);else try{if(a==="eve"&&n.name.toLowerCase()==="skill.md"){await writeFile(s,L(await readFile(i,"utf-8")));return}await cp(i,s,{dereference:!0,recursive:!0});}catch(l){if(l instanceof Error&&"code"in l&&l.code==="ENOENT"&&n.isSymbolicLink())console.warn(`Skipping broken symlink: ${i}`);else throw l}}));}function be(t){return t.some(e=>basename(e.path).toLowerCase()==="skill.md")}function U(t){return `${P(t)}.md`}function ve(t){let e=t.find(r=>basename(r.path).toLowerCase()==="skill.md");if(e)return L(e.contents);let a=t.find(r=>extname(r.path).toLowerCase()===".md");return a?L(a.contents):""}async function Ue(t,e,a={}){return (await ne(t,e,a)).installed}async function ne(t,e,a={}){let r=b[e],n=P(t);if(a.global&&r.globalSkillsDir===void 0)return {installed:false,mode:null,path:""};let i=a.global?r.globalSkillsDir:e==="eve"&&a.eveSubagent?te(a.eveSubagent,a.cwd):join(a.cwd||process.cwd(),r.skillsDir),s=join(i,n);if(!w(i,s))return {installed:false,mode:null,path:""};try{let l=await lstat(s);return l.isSymbolicLink()?{installed:!0,mode:"symlink",path:s}:l.isDirectory()?{installed:!0,mode:"copy",path:s}:{installed:!1,mode:null,path:s}}catch{return {installed:false,mode:null,path:s}}}function Be(t,e,a={}){let r=P(t),n=D(e,a.global??false,a.cwd,a.eveSubagent),i=join(n,r);if(!w(n,i))throw new Error("Invalid skill name: potential path traversal detected");return i}async function O(t,e){try{return await access(join(t,"SKILL.md")),{created:!1}}catch{}return await mkdir(t,{recursive:true}),await e(t),{created:true}}function $e(t,e={}){let a=P(t),r=e.agent==="eve"?D("eve",e.global??false,e.cwd,e.eveSubagent):N(e.global??false,e.cwd),n=join(r,a);if(!w(r,n))throw new Error("Invalid skill name: potential path traversal detected");return n}async function ze(t,e,a={}){let r=b[e],n=a.global??false,i=a.cwd||process.cwd(),s=a.mode??"symlink",l=a.eveSubagent;if(n&&r.globalSkillsDir===void 0)return {success:false,path:"",mode:s,error:`${r.displayName} does not support global skill installation`};let u=P(t.installName),h=e==="eve"&&s==="symlink"?D(e,n,i,l):N(n,i),g=join(h,u),f=D(e,n,i,l),o$1=join(f,u);if(!w(h,g))return {success:false,path:o$1,mode:s,error:"Invalid skill name: potential path traversal detected"};if(!w(f,o$1))return {success:false,path:o$1,mode:s,error:"Invalid skill name: potential path traversal detected"};try{if(s==="copy"){await S(o$1);let c=e==="eve"?U(t.installName):"SKILL.md",m=join(o$1,c);return await writeFile(m,e==="eve"?L(t.content):t.content,"utf-8"),{success:!0,path:o$1,mode:"copy"}}let k=e==="eve"?U(t.installName):"SKILL.md";if(await O(g,async c=>{let m=join(c,k);await writeFile(m,e==="eve"?L(t.content):t.content,"utf-8");}),n&&o(e,"global"))return {success:!0,path:g,canonicalPath:g,mode:"symlink"};if(!await j(g,o$1)){await S(o$1);let c=e==="eve"?U(t.installName):"SKILL.md",m=join(o$1,c);return await writeFile(m,e==="eve"?L(t.content):t.content,"utf-8"),{success:!0,path:o$1,canonicalPath:g,mode:"symlink",symlinkFailed:!0}}return {success:!0,path:o$1,canonicalPath:g,mode:"symlink"}}catch(k){return {success:false,path:o$1,mode:s,error:k instanceof Error?k.message:"Unknown error"}}}async function Ke(t,e,a={}){let r=b[e],n=a.global??false,i=a.cwd||process.cwd(),s=a.mode??"symlink",l=a.eveSubagent;if(n&&r.globalSkillsDir===void 0)return {success:false,path:"",mode:s,error:`${r.displayName} does not support global skill installation`};let u=P(t.installName),h=e==="eve"&&s==="symlink"?D(e,n,i,l):N(n,i),g=join(h,u),f=D(e,n,i,l),o$1=join(f,u);if(!w(h,g))return {success:false,path:o$1,mode:s,error:"Invalid skill name: potential path traversal detected"};if(!w(f,o$1))return {success:false,path:o$1,mode:s,error:"Invalid skill name: potential path traversal detected"};async function k(d){for(let[c,m]of t.files){let b=join(d,c);if(!w(d,b))continue;let $=dirname(b);$!==d&&await mkdir($,{recursive:true}),await writeFile(b,e==="eve"&&basename(c).toLowerCase()==="skill.md"&&typeof m=="string"?L(m):m);}}try{return s==="copy"?(await S(o$1),await k(o$1),{success:!0,path:o$1,mode:"copy"}):(await O(g,k),n&&o(e,"global")?{success:!0,path:g,canonicalPath:g,mode:"symlink"}:await j(g,o$1)?{success:!0,path:o$1,canonicalPath:g,mode:"symlink"}:(await S(o$1),await k(o$1),{success:!0,path:o$1,canonicalPath:g,mode:"symlink",symlinkFailed:!0}))}catch(d){return {success:false,path:o$1,mode:s,error:d instanceof Error?d.message:"Unknown error"}}}async function Ge(t,e,a={}){let r=b[e],n=a.global??false,i=a.cwd||process.cwd(),s=a.mode??"symlink",l=a.eveSubagent;if(n&&r.globalSkillsDir===void 0)return {success:false,path:"",mode:s,error:`${r.displayName} does not support global skill installation`};let u=P(t.installName),h=D(e,n,i,l);if(e==="eve"&&!be(t.files)){let d=join(h,U(t.installName));if(!w(h,d))return {success:false,path:d,mode:s,error:"Invalid skill name: potential path traversal detected"};try{return await mkdir(h,{recursive:!0}),await rm(d,{recursive:!0,force:!0}),await writeFile(d,ve(t.files),"utf-8"),{success:!0,path:d,mode:"copy"}}catch(c){return {success:false,path:d,mode:s,error:c instanceof Error?c.message:"Unknown error"}}}let g=e==="eve"&&s==="symlink"?D(e,n,i,l):N(n,i),f=join(g,u),o$1=join(h,u);if(!w(g,f))return {success:false,path:o$1,mode:s,error:"Invalid skill name: potential path traversal detected"};if(!w(h,o$1))return {success:false,path:o$1,mode:s,error:"Invalid skill name: potential path traversal detected"};async function k(d){for(let c of t.files){let m=join(d,c.path);if(!w(d,m))continue;let b=dirname(m);b!==d&&await mkdir(b,{recursive:true}),await writeFile(m,e==="eve"&&basename(c.path).toLowerCase()==="skill.md"?L(c.contents):c.contents,"utf-8");}}try{if(s==="copy")return await S(o$1),await k(o$1),{success:!0,path:o$1,mode:"copy"};if(await O(f,k),n&&o(e,"global"))return {success:!0,path:f,canonicalPath:f,mode:"symlink"};if(!n&&!o(e,"project")){let c=join(i,b[e].skillsDir.split("/")[0]);if(!existsSync(c))return {success:!0,path:f,canonicalPath:f,mode:"symlink",skipped:!0}}return await j(f,o$1)?{success:!0,path:o$1,canonicalPath:f,mode:"symlink"}:(await S(o$1),await k(o$1),{success:!0,path:o$1,canonicalPath:f,mode:"symlink",symlinkFailed:!0})}catch(d){return {success:false,path:o$1,mode:s,error:d instanceof Error?d.message:"Unknown error"}}}async function Oe(t={}){let e=t.cwd||process.cwd(),{scanInstalledSkillDirs:a}=await import('./scan-BZA5LEZN.mjs'),r=t.agentFilter?null:await c(),n=t.agentFilter??r??void 0,i=await a({scope:t.scope,cwd:e,agentFilter:n}),s=u=>u.replace(/\\/g,"/").replace(/\/[^/]+\/?$/,"").replace(/\/+$/,""),l=new Map;for(let u of i){let h=s(u.skillDir),g=`${u.scope}::${h}::${u.name}`,f=l.get(g);if(f){for(let o of u.agents)f.agents.includes(o)||f.agents.push(o);continue}l.set(g,{name:u.name,description:"",path:u.skillDir,canonicalPath:u.skillDir,scope:u.scope,agents:[...u.agents]});}return Array.from(l.values())}export{V as a,X as b,Se as c,P as d,N as e,te as f,D as g,Me as h,je as i,_e as j,Ue as k,ne as l,Be as m,O as n,$e as o,ze as p,Ke as q,Ge as r,Oe as s};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {g}from'./chunk-
|
|
1
|
+
import {g}from'./chunk-6OLPTZDO.mjs';import {y}from'./chunk-UUZB3HCD.mjs';import {r,s,b}from'./chunk-Y6D5Z6AU.mjs';import {Glob}from'@easbot/utils';import {stat,realpath}from'fs/promises';import {dirname,join}from'path';async function v(i={}){let o=i.cwd??process.cwd(),e=i.scope??"project",r$1=r({cwd:o,agentFilter:i.agentFilter}),s$1;if(e==="project"?s$1=r$1.project:e==="global"?s$1=r$1.global:s$1=r$1.all,s$1.length===0)return [];let a=new Set,c=[],T=await Promise.all(s$1.map(n=>Glob.scan(n,{cwd:o,absolute:true,ignore:Glob.DEFAULT_IGNORE_PATTERNS,follow:true})));for(let n of T)for(let l of n)a.has(l)||(a.add(l),c.push(l));let $=Object.keys(b),G="/",m=[],F=o.replace(/\\/g,"/"),M=s();for(let n of c){let l=dirname(n),g$1=l.replace(/\\/g,"/"),p=g$1.split(G),B=p.length>=3?`${p[p.length-3]??""}/${p[p.length-2]??""}`:"",d=await y(n);if(!d)continue;let E=g$1.startsWith(`${F}/`),I=M.some(t=>t!==""&&g$1.startsWith(`${t}/`)),f=E&&!I?"project":"global",k=[],R=e==="both"?f==="project":e==="project",C=e==="both"?f==="global":e==="global",b$1=t=>t.replace(/\\/g,"/"),L=b$1(l).replace(/\/[^/]+\/?$/,"");for(let t of $){let P=b[t],S=[];R&&P.skillsDir!==void 0&&S.push(g(t,false,o)),C&&P.globalSkillsDir!==void 0&&S.push(g(t,true,o));for(let w of S)if(b$1(w).replace(/\/+$/,"")===L)try{let D=join(w,d.name);if(!(await stat(D)).isDirectory())continue;await realpath(D),k.includes(t)||k.push(t);break}catch{}}m.push({name:d.name,skillDir:l,skillMdPath:n,parentDir:B,scope:f,agents:k});}return m}async function Z(i={}){let o=await v(i),e=new Set,r=[];for(let s of o){let a=`${s.scope}:${s.name}`;if(e.has(a))continue;e.add(a);let c=await y(s.skillMdPath);c&&r.push(c);}return r}export{v as a,Z as b};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunkHOK3SUH4_cjs=require('./chunk-HOK3SUH4.cjs'),chunkXGUPIAAF_cjs=require('./chunk-XGUPIAAF.cjs'),promises=require('fs/promises'),path=require('path'),crypto=require('crypto'),child_process=require('child_process'),terminal=require('@easbot/terminal');function e(t,r){return i=>terminal.colorize(t,r,i)}var o=terminal.isRich(),y=e(o,terminal.theme.muted),D=e(o,terminal.theme.error),$=e(o,terminal.theme.success),x=e(o,terminal.theme.warn),a=e(o,terminal.theme.info);e(o,terminal.theme.accentBright);var B=e(o,terminal.theme.heading),C=e(o,terminal.theme.heading);var U=e(o,terminal.theme.info);e(o,terminal.theme.error);var z=t=>t;var G=".skill-lock.json",S=6;function h(){return path.join(chunkXGUPIAAF_cjs.m(),"skills",G)}async function l(){let t=h();return await I(t)??N()}async function I(t){try{let r=await promises.readFile(t,"utf-8"),i=JSON.parse(r);return typeof i.version!="number"||!i.skills||i.version<S?null:i}catch{return null}}async function k(t){let r=h();await promises.mkdir(path.dirname(r),{recursive:true});let i=JSON.stringify(t,null,2);await promises.writeFile(r,i,"utf-8");}function tt(t){return crypto.createHash("sha256").update(t,"utf-8").digest("hex")}var p=false;function rt(){p=false;}function it(){if(process.env.GITHUB_TOKEN)return process.env.GITHUB_TOKEN;if(process.env.GH_TOKEN)return process.env.GH_TOKEN;p||(process.stderr.write(`${terminal.Symbol.colorize(terminal.Symbol.bar.vertical,"warning")} ${x("GitHub rate limit reached")} \u2014 using your ${a("gh")} login to continue.
|
|
2
2
|
${terminal.Symbol.colorize(terminal.Symbol.bar.vertical,"warning")} ${y(`Tip: set ${a("GITHUB_TOKEN")} to avoid this prompt, or use ${a("--full-depth")} to clone instead.
|
|
3
|
-
`)}`),p=true);try{let t=child_process.execSync("gh auth token",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim();if(t)return t}catch{}return null}async function nt(t,r,i,s){let{fetchRepoTree:c,getSkillFolderHashFromTree:w}=await import('./blob-
|
|
3
|
+
`)}`),p=true);try{let t=child_process.execSync("gh auth token",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim();if(t)return t}catch{}return null}async function nt(t,r,i,s){let{fetchRepoTree:c,getSkillFolderHashFromTree:w}=await import('./blob-RYNC3CVY.cjs'),g=await c(t,s,i??void 0);return g?w(g,r):null}async function et(t,r){let i=await l(),s=new Date().toISOString(),c=i.skills[t];i.skills[t]={...r,installedAt:c?.installedAt??s,updatedAt:s},await k(i);}async function ot(t){let r=await l();return t in r.skills?(delete r.skills[t],await k(r),true):false}async function st(t){return (await l()).skills[t]??null}async function lt(){return (await l()).skills}async function ct(){let t=await l(),r=new Map;for(let[i,s]of Object.entries(t.skills)){let c=r.get(s.source);c?c.skills.push(i):r.set(s.source,{skills:[i],entry:s});}return r}function N(){return {version:S,skills:{},dismissed:{}}}async function at(t){return (await l()).dismissed?.[t]===true}function ut(t,r){return t?chunkHOK3SUH4_cjs.p(t,chunkHOK3SUH4_cjs.J(),r):null}async function pt(t){let r=await l();r.dismissed||(r.dismissed={}),r.dismissed[t]=true,await k(r);}exports.a=y;exports.b=D;exports.c=$;exports.d=x;exports.e=a;exports.f=B;exports.g=C;exports.h=U;exports.i=z;exports.j=S;exports.k=h;exports.l=l;exports.m=k;exports.n=tt;exports.o=rt;exports.p=it;exports.q=nt;exports.r=et;exports.s=ot;exports.t=st;exports.u=lt;exports.v=ct;exports.w=at;exports.x=ut;exports.y=pt;
|