@easbot/skills 0.3.14 → 0.3.16
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-HI5IN4UL.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-S5OLAC7X.cjs} +46 -46
- package/dist/chunks/chunk-UUZB3HCD.mjs +22 -0
- package/dist/chunks/chunk-Y6D5Z6AU.mjs +1 -0
- package/dist/chunks/cli-handler-2G4ZYO2S.cjs +1 -0
- package/dist/chunks/cli-handler-F4DUEULA.mjs +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,22 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkISMGLHYS_cjs=require('./chunk-ISMGLHYS.cjs'),chunkXGUPIAAF_cjs=require('./chunk-XGUPIAAF.cjs'),chunkDNE3XPCJ_cjs=require('./chunk-DNE3XPCJ.cjs'),chunkE7AHWFZN_cjs=require('./chunk-E7AHWFZN.cjs'),chunkGWUDKZEH_cjs=require('./chunk-GWUDKZEH.cjs'),promises=require('fs/promises'),path=require('path'),crypto=require('crypto'),fs=require('fs'),utils=require('@easbot/utils'),pe=require('simple-git'),os=require('os'),child_process=require('child_process'),util=require('util'),zlib=require('zlib');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var pe__default=/*#__PURE__*/_interopDefault(pe);var K=6;function he(n){let t=n.indexOf(":");return t<0||t===n.length-1?null:{marketId:n.slice(0,t),pluginSlug:n.slice(t+1)}}function ge(n){let t=he(n);return t?`plugins/${t.pluginSlug}`:null}function It(n,t,e){if(!n.marketId||!n.pluginId)return null;let r=ge(n.pluginId);return r?`${t.replace(/\\/g,"/").replace(/\/+$/,"")}/${n.marketId}/${r}/${e}`:null}var At=3e5,nt=(()=>{let n=process.env.SKILLS_CLONE_TIMEOUT;if(!n)return At;let t=Number.parseInt(n,10);return Number.isFinite(t)&&t>0?t:At})(),Wt=util.promisify(child_process.execFile),L=class extends Error{constructor(e,r,s=false,i=false){super(e);chunkGWUDKZEH_cjs.b(this,"url");chunkGWUDKZEH_cjs.b(this,"isTimeout");chunkGWUDKZEH_cjs.b(this,"isAuthError");this.name="GitCloneError",this.url=r,this.isTimeout=s,this.isAuthError=i;}};function Pe(n){let t=n.match(/^git@github\.com:([^/]+)\/([^/]+?)(?:\.git)?$/i);if(t){let e=t[1],r=t[2];return {owner:e,repo:r,slug:`${e}/${r}`,sshUrl:`git@github.com:${e}/${r}.git`}}try{let e=new URL(n);if(e.hostname!=="github.com")return null;let r=e.pathname.match(/^\/([^/]+)\/([^/]+?)(?:\.git)?\/?$/);if(!r)return null;let s=r[1],i=r[2];return {owner:s,repo:i,slug:`${s}/${i}`,sshUrl:`git@github.com:${s}/${i}.git`}}catch{return null}}function Le(n){try{let t=new URL(n);return t.protocol==="https:"&&t.hostname==="github.com"}catch{return false}}function Dt(n){let t=n.toLowerCase();return t.includes("saml sso")||t.includes("enforced sso")||t.includes("enabled or enforced saml")||t.includes("re-authorize the oauth application")}function ve(n){return n.includes("Authentication failed")||n.includes("could not read Username")||n.includes("Permission denied")||n.includes("Repository not found")||n.includes("requested URL returned error: 403")||Dt(n)}function et(n){let t={...process.env};return delete t.GIT_ASKPASS,delete t.GIT_EDITOR,delete t.GIT_SEQUENCE_EDITOR,delete t.GIT_PAGER,delete t.GIT_SSH_COMMAND,delete t.GIT_CONFIG_GLOBAL,delete t.GIT_CONFIG_SYSTEM,delete t.PAGER,delete t.EDITOR,delete t.VISUAL,t.GIT_TERMINAL_PROMPT="0",t.GIT_LFS_SKIP_SMUDGE="1",Object.assign(t,n),pe__default.default({timeout:{block:nt},config:["filter.lfs.required=false","protocol.version=2","remote.origin.promisor=false"]}).env(t)}async function Kt(n){try{await promises.rm(n,{recursive:!0,force:!0});}catch{}await promises.mkdir(n,{recursive:true});}async function Ie(n,t,e){let r=n.slug;try{let{stdout:i,stderr:o}=await Wt("gh",["auth","status","-h","github.com"],{timeout:5e3,env:{...process.env,GIT_TERMINAL_PROMPT:"0"}}),l=`${i}${o}`;/Git operations protocol:\s+ssh/i.test(l)&&(r=n.sshUrl);}catch{return false}return await Wt("gh",["repo","clone",r,t,"--",...e?["--depth=1","--branch",e]:["--depth=1"]],{timeout:nt,env:{...process.env,GIT_TERMINAL_PROMPT:"0"}}),true}function $e(n,t,e){return t&&Dt(e)?`GitHub blocked HTTPS access to ${n} because the organization enforces SAML SSO.
|
|
2
|
-
skills tried your existing git credentials and available fallbacks, but none succeeded.
|
|
3
|
-
- Re-authorize your GitHub credentials/app for that org's SSO policy
|
|
4
|
-
- Or rerun with SSH: easbot skills add ${t.sshUrl}
|
|
5
|
-
- Verify access with: gh auth status -h github.com or ssh -T git@github.com`:t?`Authentication failed for ${n}.
|
|
6
|
-
- For private repos, ensure you have access
|
|
7
|
-
- Retry with SSH: easbot skills add ${t.sshUrl}
|
|
8
|
-
- Check access with: gh auth status -h github.com or ssh -T git@github.com`:`Authentication failed for ${n}.
|
|
9
|
-
- For private repos, ensure you have access
|
|
10
|
-
- For SSH: Check your keys with 'ssh -T git@github.com'
|
|
11
|
-
- For HTTPS: Run 'gh auth login' or configure git credentials`}async function Ut(n,t,e){if(e){await utils.Filesystem.mkdir(path.dirname(e),{recursive:true});let o=t?["--depth","1","--branch",t]:["--depth","1"];try{return await et().clone(n,e,o),e}catch(l){throw await promises.rm(e,{recursive:true,force:true}).catch(()=>{}),l}}let r=await promises.mkdtemp(path.join(os.tmpdir(),"skills-")),s=t?["--depth","1","--branch",t]:["--depth","1"],i=Pe(n);try{return await et().clone(n,r,s),r}catch(o){let l=o instanceof Error?o.message:String(o),a=l.includes("block timeout")||l.includes("timed out"),c=ve(l);if(a){try{await promises.rm(r,{recursive:!0,force:!0});}catch{}let f=Math.round(nt/1e3);throw new L(`Clone timed out after ${f}s. Common causes:
|
|
12
|
-
- Large repository: raise the timeout with SKILLS_CLONE_TIMEOUT=600000 (10m)
|
|
13
|
-
- Slow network: retry, or clone manually and pass the local path to 'skills add'
|
|
14
|
-
- Private repo without credentials: ensure auth is configured
|
|
15
|
-
- For SSH: ssh-add -l (to check loaded keys)
|
|
16
|
-
- For HTTPS: gh auth status (if using GitHub CLI)`,n,true,false)}if(c&&i&&Le(n)){try{if(await Kt(r),await Ie(i,r,t))return r}catch{}try{return await Kt(r),await et({GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND??"ssh -o BatchMode=yes"}).clone(i.sshUrl,r,s),r}catch{}}try{await promises.rm(r,{recursive:!0,force:!0});}catch{}if(c)throw new L($e(n,i,l),n,false,true);let u=l.includes("filter.smudge")?`
|
|
17
|
-
- The repo defines a smudge/clean filter that Git considers unsafe.
|
|
18
|
-
Enable it with: git config --global protocol.allowUnsafeFilter true
|
|
19
|
-
Or upgrade Git, or unset filter.<driver>.* in the source repo.`:"";throw new L(`Failed to clone ${n}: ${l}${u}`,n,false,false)}}async function In(n){let t=path.normalize(path.resolve(n)),e=path.normalize(path.resolve(os.tmpdir()));if(!t.startsWith(e+path.sep)&&t!==e)throw new Error("Attempted to clean up directory outside of temp directory");await promises.rm(n,{recursive:true,force:true});}function j(n){if(n.type==="local")return null;let t=n.url.match(/^git@[^:]+:(.+)$/);if(t){let e=t[1];return e=e.replace(/\.git$/,""),e.includes("/")?e:null}if(n.url.startsWith("ssh://"))try{let r=new URL(n.url).pathname.slice(1);return r=r.replace(/\.git$/,""),r.includes("/")?r:null}catch{return null}if(!n.url.startsWith("http://")&&!n.url.startsWith("https://"))return null;try{let r=new URL(n.url).pathname.slice(1);if(r=r.replace(/\.git$/,""),r.includes("/"))return r}catch{}return null}function Kn(n){let t=n.match(/^([^/]+)\/([^/]+)$/);return t?{owner:t[1],repo:t[2]}:null}async function Nn(n,t){try{let e=await fetch(`https://api.github.com/repos/${n}/${t}`);return e.ok?(await e.json()).private===!0:null}catch{return null}}async function Tt(n,t){try{let e=await fetch(`https://api.github.com/repos/${n}/${t}`,{headers:{Accept:"application/vnd.github+json"}});if(!e.ok)return null;let r=await e.json();return typeof r.default_branch=="string"&&r.default_branch.length>0?r.default_branch:null}catch{return null}}function O(n){let e=n.replace(/\\/g,"/").split("/");for(let r of e)if(r==="..")throw new Error(`Unsafe subpath: "${n}" contains path traversal segments. Subpaths must not contain ".." components.`);return n}function We(n){return path.isAbsolute(n)||n.startsWith("./")||n.startsWith("../")||n==="."||n===".."||/^[a-zA-Z]:[/\\]/.test(n)}var Ke={"coinbase/agentWallet":"coinbase/agentic-wallet-skills"};function rt(n){try{return decodeURIComponent(n)}catch{return n}}function Ne(n){if(n.startsWith("github:")||n.startsWith("gitlab:")||n.startsWith("git@")||/^ssh:\/\/.+\.git(?:$|[/?])/i.test(n))return true;if(n.startsWith("http://")||n.startsWith("https://"))try{let t=new URL(n),e=t.pathname;if(t.hostname==="github.com")return /^\/[^/]+\/[^/]+(?:\.git)?(?:\/tree\/[^/]+(?:\/.*)?)?\/?$/.test(e);if(t.hostname==="gitlab.com")return /^\/.+?\/[^/]+(?:\.git)?(?:\/-\/tree\/[^/]+(?:\/.*)?)?\/?$/.test(e)}catch{}return /^https?:\/\/.+\.git(?:$|[/?])/i.test(n)?true:!n.includes(":")&&!n.startsWith(".")&&!n.startsWith("/")&&/^([^/]+)\/([^/]+)(?:\/(.+)|@(.+))?$/.test(n)}function De(n){let t=n.indexOf("#");if(t<0)return {inputWithoutFragment:n};let e=n.slice(0,t),r=n.slice(t+1);if(!r)return {inputWithoutFragment:e};if(!Ne(e))return {inputWithoutFragment:n};let s=r.indexOf("@");if(s===-1)return {inputWithoutFragment:e,ref:rt(r)};let i=r.slice(0,s),o=r.slice(s+1);return {inputWithoutFragment:e,ref:i?rt(i):void 0,subpath:o?rt(o):void 0}}function Ct(n,t,e){return t?`${n}#${t}${e?`@${e}`:""}`:n}function Ft(n){if(We(n)){let k=path.resolve(n);return {type:"local",url:k,localPath:k}}let{inputWithoutFragment:t,ref:e,subpath:r}=De(n);n=t;let s=Ke[n];s&&(n=s);let i=n.match(/^github:(.+)$/);if(i)return Ft(Ct(i[1],e,r));let o=n.match(/^gitlab:(.+)$/);if(o)return Ft(Ct(`https://gitlab.com/${o[1]}`,e,r));let l=n.match(/github\.com\/([^/]+)\/([^/]+)\/tree\/([^/]+)\/(.+)/);if(l){let[,k,g,w,y]=l;return {type:"github",url:`https://github.com/${k}/${g}.git`,ref:w||e,subpath:y&&O(y)}}let a=n.match(/github\.com\/([^/]+)\/([^/]+)\/tree\/([^/]+)$/);if(a){let[,k,g,w]=a;return {type:"github",url:`https://github.com/${k}/${g}.git`,ref:w||e}}let c=n.match(/github\.com\/([^/]+)\/([^/]+)/);if(c){let[,k,g]=c,w=g.replace(/\.git$/,"");return {type:"github",url:`https://github.com/${k}/${w}.git`,...e?{ref:e}:{}}}let u=n.match(/^(https?):\/\/([^/]+)\/(.+?)\/-\/tree\/([^/]+)\/(.+)/);if(u){let[,k,g,w,y,p]=u;if(g!=="github.com"&&w)return {type:"gitlab",url:`${k}://${g}/${w.replace(/\.git$/,"")}.git`,ref:y||e,subpath:p&&O(p)}}let f=n.match(/^(https?):\/\/([^/]+)\/(.+?)\/-\/tree\/([^/]+)$/);if(f){let[,k,g,w,y]=f;if(g!=="github.com"&&w)return {type:"gitlab",url:`${k}://${g}/${w.replace(/\.git$/,"")}.git`,ref:y||e}}let h=n.match(/gitlab\.com\/(.+?)(?:\.git)?\/?$/);if(h){let k=h[1];if(k.includes("/"))return {type:"gitlab",url:`https://gitlab.com/${k}.git`,...e?{ref:e}:{}}}let x=n.match(/^([^/@]+)\/([^/@]+)@(.+)?$/);if(x&&!n.includes(":")&&!n.startsWith(".")&&!n.startsWith("/")){let k=x[1],g=x[2],w=x[3];if(!w)return {type:"github",url:`https://github.com/${k}/${g}.git`,...e?{ref:e}:{}};let y=O(w);return {type:"github",url:`https://github.com/${k}/${g}.git`,...e?{ref:e}:{},...y?{subpath:y}:{}}}let E=n.match(/^([^/@]+)\/([^/@]+)(?:\/(.+?))?\/?$/);if(E&&!n.includes(":")&&!n.startsWith(".")&&!n.startsWith("/")){let[,k,g,w]=E;return {type:"github",url:`https://github.com/${k}/${g}.git`,...e?{ref:e}:{},subpath:r??(w&&O(w))}}return Ue(n)?{type:"well-known",url:n}:{type:"git",url:n,...e?{ref:e}:{},...r?{subpath:r}:{}}}function Ue(n){if(!n.startsWith("http://")&&!n.startsWith("https://"))return false;try{let t=new URL(n);return !(["github.com","gitlab.com","raw.githubusercontent.com"].includes(t.hostname)||n.endsWith(".git"))}catch{return false}}var Mt="https://schemas.agentskills.io/discovery/0.2.0/schema.json",Me=/\/schemas\/agent-skills\/index\.v1\.json$/,_e=50*1024*1024,ze=1e3;function He(n,t){let e=n.skillPath;if(typeof e=="string"&&e.trim()!==""&&e!==null)return e.replace(/^\/+/,"").replace(/\/+$/,"");if(typeof n.sourceUrl=="string"&&n.sourceUrl)try{let s=new URL(n.sourceUrl).pathname,i=/\/\.well-known\/(?:agent-skills|skills)\/(.*?)\/SKILL\.md$/,o=s.match(i);if(o?.[1])return o[1];let l=s.match(/^(.*?)\/[^/]+\/SKILL\.md$/);if(l?.[1])return l[1]}catch{}if(typeof n.installName=="string"&&n.installName){let r=n.installName.lastIndexOf("@");if(r>=0){let s=n.installName.slice(r+1);if(s.includes("/"))return s.replace(/^\/+/,"")}}return t}var it=class{constructor(){chunkGWUDKZEH_cjs.b(this,"id","well-known");chunkGWUDKZEH_cjs.b(this,"displayName","Well-Known Skills");chunkGWUDKZEH_cjs.b(this,"WELL_KNOWN_PATHS",[".well-known/agent-skills",".well-known/skills"]);chunkGWUDKZEH_cjs.b(this,"INDEX_FILE","index.json");}match(t){if(!t.startsWith("http://")&&!t.startsWith("https://"))return {matches:false};try{let e=new URL(t);return ["github.com","gitlab.com","huggingface.co"].includes(e.hostname)?{matches:!1}:{matches:!0,sourceIdentifier:`wellknown/${e.hostname}`}}catch{return {matches:false}}}async fetchIndex(t){return (await this.fetchIndexCandidates(t))[0]??null}async fetchIndexCandidates(t){try{let e=new URL(t),r=e.pathname.replace(/\/$/,""),s=[],i=r.match(/\/\.well-known\/(agent-skills|skills)\/?$/);if(i?.[1]){let l=`.well-known/${i[1]}`;s.push({indexUrl:`${e.protocol}//${e.host}${r}/${this.INDEX_FILE}`,baseUrl:`${e.protocol}//${e.host}${r.replace(/\/\.well-known\/(?:agent-skills|skills)$/,"")}`,wellKnownPath:l});}for(let l of this.WELL_KNOWN_PATHS)s.push({indexUrl:`${e.protocol}//${e.host}${r}/${l}/${this.INDEX_FILE}`,baseUrl:`${e.protocol}//${e.host}${r}`,wellKnownPath:l}),r&&r!==""&&s.push({indexUrl:`${e.protocol}//${e.host}/${l}/${this.INDEX_FILE}`,baseUrl:`${e.protocol}//${e.host}`,wellKnownPath:l});let o=[];for(let{indexUrl:l,baseUrl:a,wellKnownPath:c}of s)try{let u=await fetch(l);if(!u.ok)continue;let f=await u.json(),h=this.normalizeIndex(f,l,c);if(!h)continue;o.push({index:h.index,entries:h.entries,resolvedBaseUrl:a,resolvedWellKnownPath:c,indexUrl:l});}catch{}return o}catch{return []}}normalizeIndex(t,e,r){if(!t||typeof t!="object")return null;let s=t;if(!Array.isArray(s.skills))return null;let i=s.$schema;if(i===Mt){let a=[],c=[];for(let u of s.skills){if(!this.isValidSkillEntryV2(u))continue;let f=new URL(u.url,e).toString();a.push({version:"0.2.0",name:u.name,description:u.description,type:u.type,artifactUrl:f,digest:u.digest,indexEntry:u}),c.push(u);}return a.length===0?null:{index:{$schema:Mt,skills:c},entries:a}}if(typeof i=="string"&&Me.test(i)){let a=[],c=[];for(let u of s.skills){if(!this.isValidSkillEntryEasbotV1(u))continue;let f=new URL(u.sourceUrl,e).toString();a.push({version:"easbot-v1",name:u.name,description:u.description,skillMdUrl:f,installName:u.installName,indexEntry:u}),c.push(u);}return a.length===0?null:{index:{$schema:i,skills:c},entries:a}}if(i!==void 0)return null;let o=[],l=[];for(let a of s.skills){if(!this.isValidSkillEntryV1(a))return null;o.push(a),l.push({version:"0.1.0",name:a.name,description:a.description,files:a.files,baseUrl:this.getLegacySkillBaseUrl(e,r),wellKnownPath:r,indexEntry:a});}return {index:{skills:o},entries:l}}getLegacySkillBaseUrl(t,e){let r=new URL(t),s=`/${e}/${this.INDEX_FILE}`;return `${r.protocol}//${r.host}${r.pathname.slice(0,-s.length)}`}isValidSkillName(t){return !(typeof t!="string"||t.length===0||t.length>64||!/^[a-z0-9-]+$/.test(t)||t.startsWith("-")||t.endsWith("-")||t.includes("--"))}isSafeLegacyFilePath(t){return !(typeof t!="string"||t.length===0||t.startsWith("/")||t.startsWith("\\")||t.includes("..")||t.includes("\0"))}isValidSkillEntryEasbotV1(t){if(!t||typeof t!="object")return false;let e=t;if(!this.isValidSkillName(e.name)||typeof e.description!="string"||!e.description||e.description.length>1024||typeof e.sourceUrl!="string"||!e.sourceUrl)return false;try{new URL(e.sourceUrl,"https://easbot.cn/.well-known/agent-skills/index.json");}catch{return false}return true}isValidSkillEntryV1(t){if(!t||typeof t!="object")return false;let e=t;if(!this.isValidSkillName(e.name)||typeof e.description!="string"||!e.description||!Array.isArray(e.files)||e.files.length===0)return false;for(let s of e.files)if(!this.isSafeLegacyFilePath(s))return false;return e.files.some(s=>typeof s=="string"&&s.toLowerCase()==="skill.md")}isValidSkillEntryV2(t){if(!t||typeof t!="object")return false;let e=t;if(!this.isValidSkillName(e.name)||typeof e.description!="string"||!e.description||e.description.length>1024||e.type!=="skill-md"&&e.type!=="archive"||typeof e.url!="string"||!e.url||typeof e.digest!="string"||!/^sha256:[a-f0-9]{64}$/.test(e.digest))return false;try{new URL(e.url,"https://example.com/.well-known/agent-skills/index.json");}catch{return false}return true}async fetchSkill(t){try{let e=new URL(t),r=await this.fetchIndexCandidates(t);for(let s of r){let{entries:i}=s,o=null,l=e.pathname.match(/\/.well-known\/(?:agent-skills|skills)\/([^/]+)\/?$/);if(l?.[1]&&l[1]!=="index.json"?o=l[1]:i.length===1&&(o=i[0].name),!o)continue;let a=i.find(u=>u.name===o);if(!a)continue;let c=await this.fetchSkillByEntry(a);if(c)return c}return null}catch{return null}}async fetchSkillByEntry(t,e,r){return typeof t=="string"?e?this.fetchLegacySkillByEntry({version:"0.1.0",name:e.name,description:e.description,files:e.files,baseUrl:t,wellKnownPath:r??this.WELL_KNOWN_PATHS[0],indexEntry:e}):null:t.version==="0.1.0"?this.fetchLegacySkillByEntry(t):t.version==="easbot-v1"?this.fetchEasbotV1SkillByEntry(t):this.fetchArtifactSkillByEntry(t)}async fetchEasbotV1SkillByEntry(t){try{let e=await fetch(t.skillMdUrl);if(!e.ok)return null;let r=await e.text(),{data:s}=chunkE7AHWFZN_cjs.a(r);if(typeof s.name!="string"||typeof s.description!="string")return null;let i=new Map;i.set("SKILL.md",r);let o=He(t.indexEntry,s.name);return this.createSkill({name:s.name,description:s.description,content:r,installName:o,sourceUrl:t.skillMdUrl,metadata:s.metadata,files:i,indexEntry:t.indexEntry})}catch{return null}}async fetchLegacySkillByEntry(t){try{let e=`${t.baseUrl.replace(/\/$/,"")}/${t.wellKnownPath}/${t.name}`,r=`${e}/SKILL.md`,s=await fetch(r);if(!s.ok)return null;let i=await s.text(),{data:o}=chunkE7AHWFZN_cjs.a(i);if(typeof o.name!="string"||typeof o.description!="string")return null;let l=new Map;l.set("SKILL.md",i);let c=t.files.filter(f=>f.toLowerCase()!=="skill.md").map(async f=>{try{let h=`${e}/${f}`,x=await fetch(h);if(x.ok){let E=await x.arrayBuffer();return {path:f,content:new Uint8Array(E)}}}catch{}return null}),u=await Promise.all(c);for(let f of u)f&&l.set(f.path,f.content);return this.createSkill({name:o.name,description:o.description,content:i,installName:t.name,sourceUrl:r,metadata:o.metadata,files:l,indexEntry:t.indexEntry})}catch{return null}}async fetchArtifactSkillByEntry(t){try{let e=await fetch(t.artifactUrl);if(!e.ok)return null;let r=e.headers.get("content-type")??"",s=new Uint8Array(await e.arrayBuffer());if(this.computeDigest(s)!==t.digest)return null;if(t.type==="skill-md"){let c=new TextDecoder().decode(s),{data:u}=chunkE7AHWFZN_cjs.a(c);if(typeof u.name!="string"||typeof u.description!="string")return null;let f=new Map;return f.set("SKILL.md",c),this.createSkill({name:u.name,description:u.description,content:c,installName:t.name,sourceUrl:t.artifactUrl,metadata:u.metadata,files:f,indexEntry:t.indexEntry})}let i=this.extractArchive(s,t.artifactUrl,r),o=i.get("SKILL.md");if(!o)return null;let l=typeof o=="string"?o:new TextDecoder().decode(o);i.set("SKILL.md",l);let{data:a}=chunkE7AHWFZN_cjs.a(l);return typeof a.name!="string"||typeof a.description!="string"?null:this.createSkill({name:a.name,description:a.description,content:l,installName:t.name,sourceUrl:t.artifactUrl,metadata:a.metadata,files:i,indexEntry:t.indexEntry})}catch{return null}}createSkill(t){return {name:chunkDNE3XPCJ_cjs.b(t.name),description:chunkDNE3XPCJ_cjs.b(t.description),content:t.content,installName:t.installName,sourceUrl:t.sourceUrl,metadata:t.metadata&&typeof t.metadata=="object"?t.metadata:void 0,files:t.files,indexEntry:t.indexEntry}}async fetchAllSkills(t){try{let e=await this.fetchIndexCandidates(t);for(let r of e){let s=r.entries.map(l=>this.fetchSkillByEntry(l)),o=(await Promise.all(s)).filter(l=>l!==null);if(o.length>0)return o}return []}catch{return []}}computeDigest(t){return `sha256:${crypto.createHash("sha256").update(t).digest("hex")}`}extractArchive(t,e,r){if(this.isZipArchive(t,e,r))return this.extractZip(t);if(this.isTarGzArchive(t,e,r))return this.extractTarGz(t);throw new Error("Unsupported archive format")}isZipArchive(t,e,r){return r.includes("application/zip")||e.toLowerCase().endsWith(".zip")||t[0]===80&&t[1]===75}isTarGzArchive(t,e,r){let s=e.toLowerCase();return r.includes("application/gzip")||r.includes("application/x-gzip")||s.endsWith(".tar.gz")||s.endsWith(".tgz")||t[0]===31&&t[1]===139}normalizeArchivePath(t){if(!t||t.includes("\0")||t.startsWith("/")||t.startsWith("\\")||/^[A-Za-z]:/.test(t)||t.includes("\\"))return null;let e=t.split("/").filter(Boolean);return e.length===0||e.some(r=>r==="."||r==="..")?null:e.join("/")}addArchiveFile(t,e,r,s){let i=this.normalizeArchivePath(e);if(!i)throw new Error(`Unsafe archive path: ${e}`);if(s.bytes+=r.byteLength,s.bytes>_e)throw new Error("Archive exceeds maximum unpacked size");if(t.size>=ze)throw new Error("Archive contains too many files");t.set(i,r);}extractTarGz(t){let e=zlib.gunzipSync(Buffer.from(t)),r=new Map,s={bytes:0},i=0;for(;i+512<=e.length;){let o=e.subarray(i,i+512);if(o.every(E=>E===0))break;let l=this.readTarString(o,0,100),a=this.readTarString(o,124,12).trim(),c=o[156],u=this.readTarString(o,345,155),f=u?`${u}/${l}`:l,h=Number.parseInt(a||"0",8);if(!Number.isFinite(h)||h<0)throw new Error("Invalid tar entry size");if(i+=512,c===50||c===49)throw new Error("Archive links are not supported");if(c===0||c===48){let E=e.subarray(i,i+h);this.addArchiveFile(r,f,new Uint8Array(E),s);}i+=Math.ceil(h/512)*512;}if(!r.has("SKILL.md"))throw new Error("Archive missing root SKILL.md");return r}readTarString(t,e,r){let s=t.subarray(e,e+r),i=s.indexOf(0);return new TextDecoder().decode(i>=0?s.subarray(0,i):s)}extractZip(t){let e=Buffer.from(t),r=this.findZipEndOfCentralDirectory(e);if(r<0)throw new Error("Invalid zip archive");let s=e.readUInt16LE(r+10),i=e.readUInt32LE(r+16),o=new Map,l={bytes:0},a=i;for(let c=0;c<s;c++){if(e.readUInt32LE(a)!==33639248)throw new Error("Invalid zip directory");let u=e.readUInt16LE(a+8),f=e.readUInt16LE(a+10),h=e.readUInt32LE(a+20),x=e.readUInt32LE(a+24),E=e.readUInt16LE(a+28),k=e.readUInt16LE(a+30),g=e.readUInt16LE(a+32),w=e.readUInt32LE(a+38),y=e.readUInt32LE(a+42),p=a+46,S=e.subarray(p,p+E),b=new TextDecoder(u&2048?"utf-8":void 0).decode(S);if(a=p+E+k+g,b.endsWith("/"))continue;if(u&1)throw new Error("Encrypted zip entries are not supported");let M=w>>>16&61440;if(M===40960||M===4096)throw new Error("Archive links are not supported");if(e.readUInt32LE(y)!==67324752)throw new Error("Invalid zip local header");let _=e.readUInt16LE(y+26),de=e.readUInt16LE(y+28),wt=y+30+_+de,yt=e.subarray(wt,wt+h),z;if(f===0)z=yt;else if(f===8)z=zlib.inflateRawSync(yt);else throw new Error(`Unsupported zip compression method: ${f}`);if(z.byteLength!==x)throw new Error("Zip entry size mismatch");this.addArchiveFile(o,b,new Uint8Array(z),l);}if(!o.has("SKILL.md"))throw new Error("Archive missing root SKILL.md");return o}findZipEndOfCentralDirectory(t){let e=Math.max(0,t.length-65535-22);for(let r=t.length-22;r>=e;r--)if(t.readUInt32LE(r)===101010256)return r;return -1}toRawUrl(t){try{let e=new URL(t);if(t.toLowerCase().endsWith("/skill.md"))return t;let r=this.WELL_KNOWN_PATHS[0],s=e.pathname.match(/\/.well-known\/(?:agent-skills|skills)\/([^/]+)\/?$/);if(s?.[1]){let o=e.pathname.replace(/\/.well-known\/(?:agent-skills|skills)\/.*$/,"");return `${e.protocol}//${e.host}${o}/${r}/${s[1]}/SKILL.md`}let i=e.pathname.replace(/\/$/,"");return `${e.protocol}//${e.host}${i}/${r}/${this.INDEX_FILE}`}catch{return t}}getSourceIdentifier(t){try{return new URL(t).hostname.replace(/^www\./,"")}catch{return "unknown"}}async hasSkillsIndex(t){return await this.fetchIndex(t)!==null}},_t=new it;function st(n,t){let e=path.normalize(path.resolve(t)),r=path.normalize(path.resolve(n));return r.startsWith(e+path.sep)||r===e}function V(n){return n.startsWith("./")}async function Ot(n){let t=new Map;try{let e=await promises.readFile(path.join(n,".claude-plugin/marketplace.json"),"utf-8"),r=JSON.parse(e),s=r.metadata?.pluginRoot;if(s===void 0||V(s))for(let o of r.plugins??[]){if(!o.name||typeof o.source!="string"&&o.source!==void 0||o.source!==void 0&&!V(o.source))continue;let l=path.join(n,s??"",o.source??"");if(st(l,n)&&o.skills&&o.skills.length>0)for(let a of o.skills){if(!V(a))continue;let c=path.join(l,a);st(c,n)&&t.set(path.resolve(c),o.name);}}}catch{}try{let e=await promises.readFile(path.join(n,".claude-plugin/plugin.json"),"utf-8"),r=JSON.parse(e);if(r.name&&r.skills&&r.skills.length>0)for(let s of r.skills){if(!V(s))continue;let i=path.join(n,s);st(i,n)&&t.set(path.resolve(i),r.name);}}catch{}return t}var Ge=["node_modules",".git","dist","build","__pycache__"];async function qe(n){let t=path.join(n,".gitignore");try{let e=await promises.readFile(t,"utf-8");return utils.Glob.parseGitignoreContent(e)}catch{return []}}function ot(n){return n.toLowerCase().replace(/[\s_]+/g,"-")}function Xe(n){return n.split(path.sep).join("/").replace(/\/+/g,"/")}function Je(){let n=process.env.INSTALL_INTERNAL_SKILLS;return n==="1"||n==="true"}async function Jt(n){try{let t=path.join(n,"SKILL.md");return (await promises.stat(t)).isFile()}catch{return false}}async function Vt(n,t){try{let e=await promises.readFile(n,"utf-8"),{data:r}=chunkE7AHWFZN_cjs.a(e);if(!r.name||!r.description||typeof r.name!="string"||typeof r.description!="string")return null;let s=r.metadata&&typeof r.metadata=="object"&&!Array.isArray(r.metadata)?r.metadata:void 0;return s?.internal===!0&&!Je()&&!t?.includeInternal?null:{name:chunkDNE3XPCJ_cjs.b(r.name),description:chunkDNE3XPCJ_cjs.b(r.description),path:path.dirname(n),rawContent:e,metadata:s}}catch{return null}}async function Zt(n,t=0,e=5){if(t>e)return [];try{let[r,s]=await Promise.all([Jt(n),promises.readdir(n,{withFileTypes:!0}).catch(()=>[])]),i=r?[n]:[],o=await Promise.all(s.filter(l=>l.isDirectory()&&!Ge.includes(l.name)).map(l=>Zt(path.join(n,l.name),t+1,e)));return [...i,...o.flat()]}catch{return []}}function Ze(n,t){let e=path.normalize(path.resolve(n)),r=path.normalize(path.resolve(path.join(n,t)));return r.startsWith(e+path.sep)||r===e}async function ct(n,t,e){let r=[],s=new Set,i=await q(n),o=new Set(Object.keys(i.skills).map(ot));if(t&&!Ze(n,t))throw new Error(`Invalid subpath: "${t}" resolves outside the repository directory. Subpath must not contain ".." segments that escape the base path.`);let l=t?path.join(n,t):n,a=await Ot(l),c=p=>{let S=path.resolve(p.path);return a.has(S)&&(p.pluginName=a.get(S)),p},u=chunkISMGLHYS_cjs.k(),f=p=>{if(o.size===0)return false;let S=Xe(path.relative(n,p.path));if(!u.some(_=>S===_||S.startsWith(`${_}/`)))return false;let kt=ot(p.name),M=ot(path.basename(p.path));return o.has(kt)||o.has(M)},h=async p=>{if(!await Jt(p))return false;let S=await Vt(path.join(p,"SKILL.md"),e);return !S||s.has(S.name)||f(S)||(S=c(S),r.push(S),s.add(S.name)),true},x=t?t.replace(/^\/+|\/+$/g,"").split("/").filter(p=>p.length>0):[],E=x.length>0?`**/${x.join("/")}/**/SKILL.md`:"**/SKILL.md",k=await utils.Glob.scan(E,{cwd:l,absolute:true,ignore:[...utils.Glob.DEFAULT_IGNORE_PATTERNS,...await qe(l)]}),g="/",w=l.split(path.sep).join(g);k.sort((p,S)=>p.split(g).length-S.split(g).length);let y=[];for(let p of k){if(y.some(b=>p.startsWith(`${b}${g}`)||p===b))continue;let S=path.dirname(p);if(await h(S)){let b=S.split(path.sep).join(g);if(b===w)continue;y.push(b);}}if(r.length===0||e?.fullDepth){let p=await Zt(l);for(let S of p){let b=await Vt(path.join(S,"SKILL.md"),e);b&&!s.has(b.name)&&!f(b)&&(b=c(b),r.push(b),s.add(b.name));}}return r}function Ye(n){return n.name||(n.path?path.basename(n.path):"")}function nr(n,t){let e=t.map(r=>r.toLowerCase());return n.filter(r=>{let s=r.name.toLowerCase(),i=Ye(r).toLowerCase();return e.some(o=>o===s||o===i)})}var Yt="*";function rr(n,t){if(!n||n.length===0)return [];let e=new Set(t),r=[];for(let s of n)if(s!==Yt){if(s.includes("/")||s.includes("**")){r.push(s);continue}Qt.test(s)?t.some(i=>utils.Wildcard.match(i,s))||r.push(s):e.has(s)||r.push(s);}return r}function ir(n,t){let e={wildcard:false,matched:[],invalid:[]};if(!n||n.length===0)return e;let r=new Set(t),s=new Set;for(let i of n){if(i===Yt){e.wildcard=true;continue}if(i.includes("/")||i.includes("**")){e.invalid.push(i);continue}if(Qt.test(i))for(let o of t)utils.Wildcard.match(o,i)&&s.add(o);else r.has(i)?s.add(i):e.invalid.push(i);}return e.matched=Array.from(s),e}var Qt=/[*?[{}]/;var ft="houjallen/agent-skills";async function Sr(n){let t=n.defaultPlugin;if(!t||typeof t.marketId!="string"||t.marketId.length===0)return ft;let e=n.markets[t.marketId];if(!e)return ft;let r=e.localPath??e.url;if(!r)return ft;let s=r;return e.subpath&&(s=`${s}@${e.subpath}`),e.ref&&(s=`${s}#${e.ref}`),s}function en(n){if(!n||typeof n!="object"||Array.isArray(n))return null;let t=n;if(typeof t.marketId!="string"||t.marketId.length===0)return null;let e={marketId:t.marketId};return typeof t.pluginId=="string"&&t.pluginId.length>0&&(e.pluginId=t.pluginId),e}function m(n){return utils.Filesystem.normalize(n)}function dt(n){if(n==="general"||n==="coder"||n==="all")return n}function nn({scope:n}){let t=n==="project"?chunkXGUPIAAF_cjs.p():chunkXGUPIAAF_cjs.m(),e=utils.Filesystem.join(t,n==="project"?".easbot":"easbot","skills");return utils.Filesystem.normalize(e)}function T(){return utils.Filesystem.join(chunkXGUPIAAF_cjs.m(),"skills","store")}function se(){return utils.Filesystem.join(T(),"index.json")}function X(n){let t=`${n.type}|${n.url}|${n.ref??""}`;return crypto.createHash("sha256").update(t).digest("hex")}function oe(n){let t=X(n);return utils.Filesystem.join(T(),t)}function D(){return utils.Filesystem.join(chunkXGUPIAAF_cjs.o(),"skills","cache")}function rn(n,t,e){if(e&&e.length>0)return N(e);let r=sn(n);if(r)return r;if(t?.includes("/")){let s=t.split("/")[0];if(s)return N(s)}return "default"}function sn(n){let t=n.localPath??n.url;if(!t)return null;if(n.type==="well-known")try{let s=new URL(t),i=s.hostname.replace(/^www\./,"").replace(/\./g,"-"),o=s.pathname.replace(/^\/+/,"").split("/")[0]||"";return o&&!i.endsWith(`-${o}`)?N(`${i}-${o}`):N(i)}catch{return null}let e=t.match(/^(?:https?:\/\/[^/]+\/|git@[^:]+:)([^/]+)\/([^/]+?)(?:\.git)?\/?$/);if(e)return N(e[2]??"");let r=t.split(/[\\/]/).filter(Boolean).pop();return r?N(r.replace(/\.git$/,"")):null}function N(n){let t=n.trim().replace(/[:\\/\0]/g,"-").replace(/\.git$/,"").replace(/\s+/g,"-");return t.length>64&&(t=t.slice(0,64)),t.length>0?t:"default"}function Y(n){if(n.type==="well-known")return on(n.url);let t=j(n);if(t)return utils.Filesystem.join(D(),n.type,t);let e=crypto.createHash("sha256").update(n.url).digest("hex").slice(0,16);return utils.Filesystem.join(D(),n.type,`unknown-${e}`)}function on(n){let t,e;try{let r=new URL(n);t=r.hostname.replace(/^www\./,"");let s=r.pathname.match(/\/\.well-known\/(agent-skills|skills)/);s?.[1]?e=`.well-known/${s[1]}`:e=".well-known/agent-skills";}catch{let r=crypto.createHash("sha256").update(n).digest("hex").slice(0,16);return utils.Filesystem.join(D(),"wellknown",`unknown-${r}`)}return utils.Filesystem.join(D(),"wellknown",t,e)}async function le(n){n.skillNames??[];if(n.type==="local")return ln(n);let e=n.mode??"install",{cacheDir:r,source:s,cloneError:i}=await an(n,e);return {tempDir:r,cacheHit:false,source:s,cloneError:i}}var gt=class extends Error{constructor(e){super(`Local source path does not exist: ${e}`);chunkGWUDKZEH_cjs.b(this,"localPath",e);this.name="LocalPathNotFoundError";}};async function ln(n,t){let e=n.localPath??n.url;if(!fs.existsSync(e))throw new gt(e);let r=oe(n);return fs.existsSync(r)&&await ae(r)?{tempDir:r,cacheHit:true,source:"local-cp",cloneError:null}:{tempDir:e,cacheHit:false,source:"local-cp",cloneError:null}}async function an(n,t){let e=n.ref;if(!e){let l=j(n);if(l){let[a,c]=l.split("/");if(a&&c){let u=await Tt(a,c);u&&(e=u);}}}e||(e="HEAD");let r=Y(n);if(n.type==="well-known")return fs.existsSync(r)?{cacheDir:r,source:"cache-pull",cloneError:null}:(await utils.Filesystem.mkdir(m(r),{recursive:true}),await dn(n.url,r),{cacheDir:r,source:"well-known-fetch",cloneError:null});if(fs.existsSync(r)){if(t==="update")try{let l=await utils.git(["fetch","origin",e],{cwd:r});if(l.exitCode!==0){let c=await(typeof l.text=="function"?l.text():Promise.resolve(String(l.stderr||"")));throw new Error(`git fetch failed (exit=${l.exitCode}): ${c.slice(0,500)}`)}let a=await utils.git(["reset","--hard",`origin/${e}`],{cwd:r});if(a.exitCode!==0){let c=await(typeof a.text=="function"?a.text():Promise.resolve(String(a.stderr||"")));throw new Error(`git reset --hard failed (exit=${a.exitCode}): ${c.slice(0,500)}`)}return {cacheDir:r,source:"cache-pull",cloneError:null}}catch(l){let a=l instanceof Error?l.message:String(l),c=new L(`Failed to fetch+reset ${n.url} (ref=${e}): ${a}`,n.url,false,false);return {cacheDir:r,source:"cache-pull",cloneError:c}}try{let l=await utils.git(["checkout",e],{cwd:r});if(l.exitCode!==0){let a=await(typeof l.text=="function"?l.text():Promise.resolve(String(l.stderr||"")));throw new Error(`git checkout failed (exit=${l.exitCode}): ${a.slice(0,500)}`)}return {cacheDir:r,source:"cache-pull",cloneError:null}}catch(l){let a=l instanceof Error?l.message:String(l),c=new L(`Failed to checkout ${n.url} (ref=${e}): ${a}`,n.url,false,false);return {cacheDir:r,source:"cache-pull",cloneError:c}}}async function s(l,a,c){return Ut(l,a,c)}let i=null,o=null;try{return await utils.Filesystem.mkdir(m(utils.Filesystem.dirname(r)),{recursive:!0}),i=`${r}.clone-tmp`,await s(n.url,e,i),await promises.rename(m(i),m(r)),{cacheDir:r,source:"cache-clone",cloneError:null}}catch(l){return l instanceof L?o=l:l instanceof Error&&(o=new L(`Failed to clone ${n.url}: ${l.message}`,n.url,false,false)),await utils.Filesystem.mkdir(m(r),{recursive:true}).catch(()=>{}),{cacheDir:r,source:"cache-pull",cloneError:o}}finally{if(i)try{await promises.rm(m(i),{recursive:!0,force:!0});}catch{}}}async function A(){let n=m(se()),t;try{t=await utils.Filesystem.readText(n);}catch{return {version:6,markets:{}}}let e;try{e=JSON.parse(t);}catch{try{await promises.rename(m(n),`${m(n)}.corrupt-${Date.now()}`);}catch{}return {version:6,markets:{}}}let r=e;if(r.version!==6||!r.markets)return {version:6,markets:{}};let s={version:6,markets:r.markets};if("defaultPlugin"in r){let i=en(r.defaultPlugin);i&&(s.defaultPlugin=i);}return s}async function Q(n){await utils.Filesystem.writeJson(m(se()),n);}async function xr(){let n=await A(),t={};for(let e of Object.values(n.markets))for(let r of Object.values(e.plugins))for(let[s,i]of Object.entries(r.skills))t[s]={marketId:e.id,pluginId:r.id,pluginName:r.name,storePath:e.storePath,pluginSlug:r.id.split(":").slice(1).join(":")||r.id,url:e.url,type:e.type,localPath:e.localPath,subpath:e.subpath,ref:e.ref,addedAt:e.addedAt,skillPath:i.skillPath,computedHash:i.computedHash,sourceKey:e.id,sourcePath:e.localPath??e.storePath};return t}async function Er(n,t,e,r,s){let i=await A(),o=i.markets[n];o||(o={...s,id:n,addedAt:s.addedAt??new Date().toISOString(),plugins:{}},i.markets[n]=o);let l=o.plugins[t];l||(l={id:t,name:t.split(":").slice(1).join(":")||t,skills:{}},o.plugins[t]=l),l.skills[e]=r,await Q(i);}async function cn(){let n=await A(),t=[];for(let e of Object.values(n.markets))for(let r of Object.values(e.plugins))for(let s of Object.values(r.skills))t.push({skillName:s.name,marketId:e.id,pluginId:r.id,entry:s});return t.sort((e,r)=>{let s=e.marketId.localeCompare(r.marketId);if(s!==0)return s;let i=e.pluginId.localeCompare(r.pluginId);return i!==0?i:e.skillName.localeCompare(r.skillName)}),t}async function un(n){return (await cn()).filter(e=>e.skillName===n)}async function br(n,t,e){let s=(await A()).markets[n];if(!s)return;let i=s.plugins[t];if(!i)return;let o=i.skills[e];if(o)return {skillName:o.name,marketId:n,pluginId:t,entry:o}}async function Pr(n,t,e){let r=await A(),s=r.markets[n];if(!s)return false;let i=s.plugins[t];return !i||!(e in i.skills)?false:(delete i.skills[e],await Q(r),true)}async function fn(n){let t=await un(n);if(t.length===0)return [];let e=await A(),r=[];for(let s of t){let i=e.markets[s.marketId]?.plugins[s.pluginId];i&&n in i.skills&&(delete i.skills[n],r.push(s));}return r.length>0&&await Q(e),r}async function Lr(n,t,e,r,s,i,o){await J([{skillName:n,parsed:t,sourceKey:e,sourcePath:r,storePath:s,skillPath:i,...o&&{computedHash:o}}]);}async function J(n){if(n.length===0)return;let t=await A(),e=new Date().toISOString();for(let i of n){let o=i.sourceKey,l=rn(i.parsed,i.skillPath,i.pluginName),a=`${o}:${l}`,c=t.markets[o];if(!c){let h=i.parsed.type==="local"?i.parsed.localPath??i.parsed.url:Y(i.parsed);c={id:o,type:i.parsed.type,url:i.parsed.url,localPath:i.parsed.localPath,subpath:i.parsed.subpath,ref:i.parsed.ref,storePath:i.storePath,cachePath:h,addedAt:e,plugins:{}},t.markets[o]=c;}let u=c.plugins[a];u||(u={id:a,name:l,sourcePath:i.parsed.subpath,skills:{}},c.plugins[a]=u);let f={name:i.skillName,description:i.description??"",skillPath:i.skillPath,computedHash:i.computedHash};i.scope&&(f.scope=i.scope),i.snapshotHash&&(f.snapshotHash=i.snapshotHash),u.skills[i.skillName]=f;}let r=new Set,s=new Map;for(let i of n)r.add(i.sourceKey),i.marketSnapshotHash&&s.set(i.sourceKey,i.marketSnapshotHash);for(let i of r){let o=t.markets[i];if(!o)continue;let l=s.get(i);if(l){o.snapshotHash=l;continue}let a=[];for(let c of Object.values(o.plugins))for(let u of Object.values(c.skills))a.push({name:u.name,snapshotHash:u.snapshotHash});o.snapshotHash=chunkE7AHWFZN_cjs.d(a);}await Q(t);}async function vr(n){return (await fn(n)).length>0}async function dn(n,t){let e;try{e=await _t.fetchAllSkills(n);}catch{return}if(e.length!==0)for(let r of e)try{await hn(r,t);}catch{}}async function hn(n,t){let e=utils.Filesystem.join(t,n.installName),r=utils.Filesystem.normalize(e),s=utils.Filesystem.normalize(t);if(!r.startsWith(`${s}/`)&&r!==s)throw new Error(`Unsafe skill dir: ${n.installName}`);await promises.mkdir(m(e),{recursive:true});for(let[i,o]of n.files){let l=utils.Filesystem.join(e,i),a=utils.Filesystem.normalize(l);if(!a.startsWith(`${r}/`)&&a!==r||i.includes("\0"))continue;let c=path.dirname(m(l));c!==m(e)&&await promises.mkdir(c,{recursive:true}),await promises.writeFile(m(l),typeof o=="string"?o:Buffer.from(o));}}async function Ir(n){return (await le({type:"git",url:n.url,ref:n.ref})).tempDir}async function $r(n,t={}){let e=oe(n),r=false;if(fs.existsSync(e)&&(r=await ae(e),!r))try{await promises.rmdir(m(e));}catch{}if(r)if(t.mode==="update"){try{await promises.rm(m(e),{recursive:!0,force:!0});}catch{}r=false;}else {let c=await ct(e,void 0,{includeInternal:t.includeInternal,fullDepth:t.fullDepth});if(c.length>0){let f=await Promise.all(c.map(async h=>{let x=ht(e,h.path);return {skillName:h.name,parsed:n,sourceKey:X(n),sourcePath:e,storePath:e,skillPath:x,description:h.description,scope:dt(h.metadata?.scope),...h.pluginName&&{pluginName:h.pluginName},computedHash:await chunkE7AHWFZN_cjs.b(h.path)}}));await J(f);}let u=n.type==="local"?"local-cp":"cache-pull";return {storeDir:e,cacheHit:true,source:u,skills:c,blobSkills:[],cloneError:null}}let s=[];if(n.type==="github"&&!t.fullDepth){let c=j(n),u=c?.split("/")[0]?.toLowerCase(),f=!!c&&Object.hasOwn(chunkDNE3XPCJ_cjs.c,c.toLowerCase());if(c&&u&&(f||chunkDNE3XPCJ_cjs.d.includes(u))){let h=await chunkDNE3XPCJ_cjs.l(c,{subpath:n.subpath,ref:n.ref,includeInternal:t.includeInternal});if(h&&h.skills.length>0){await te(h.skills,e);let x=Y(n);await te(h.skills,x);let E=h.skills.map(g=>({...g,path:utils.Filesystem.join(e,g.repoSubpath??"",g.name)})),k=await Promise.all(E.map(async(g,w)=>{let y=h.skills[w],p=`${y.repoSubpath??""}${y.repoSubpath?"/":""}${y.name}`;return {skillName:g.name,parsed:n,sourceKey:X(n),sourcePath:e,storePath:e,skillPath:p,description:g.description,scope:dt(g.metadata?.scope),...g.pluginName&&{pluginName:g.pluginName},computedHash:await chunkE7AHWFZN_cjs.b(utils.Filesystem.dirname(g.path)),snapshotHash:y.snapshotHash,marketSnapshotHash:h.snapshotHash}}));return await J(k),s=h.skills,{storeDir:e,cacheHit:false,source:"blob-fetch",skills:E,blobSkills:s,cloneError:null}}}}let i=await le(n);await utils.Filesystem.mkdir(m(e),{recursive:true}).catch(()=>{});let o=await ct(i.tempDir,void 0,{includeInternal:t.includeInternal,fullDepth:t.fullDepth}),l=[],a=utils.Filesystem.normalize(e).replace(/\\/g,"/");for(let c of o){let u=ht(i.tempDir,c.path),f=utils.Filesystem.join(e,u),h=`${ht(i.tempDir,c.path)}/SKILL.md`,x=utils.Filesystem.normalize(f).replace(/\\/g,"/"),E="/",k=a.endsWith(E)?a:a+E;if(!x.startsWith(k)&&x!==a)throw new Error(`[INVARIANT 0048-yyy] cp target escapes storeRoot: target=${x} storeRoot=${a}
|
|
20
|
-
source skill path=${c.path} (parsed.type=${n.type})
|
|
21
|
-
\u4E1A\u52A1\u4EFB\u4F55\u65F6\u5019\u4E0D\u80FD\u64CD\u4F5C\u7528\u6237\u7684 local \u76EE\u5F55\u6216\u6587\u4EF6\u3002`);let g;try{await utils.Filesystem.mkdir(m(utils.Filesystem.dirname(f)),{recursive:!0}),await promises.cp(m(c.path),m(f),{recursive:!0}),g=await chunkE7AHWFZN_cjs.b(f);}catch{}c.path=f,l.push({skill:c,skillRel:u,sourceSkillPath:h,targetPath:f,computedHash:g});}if(l.length>0){let c=l.filter(u=>u.computedHash).map(u=>({skillName:u.skill.name,parsed:n,sourceKey:X(n),sourcePath:i.tempDir,storePath:e,skillPath:u.skillRel,description:u.skill.description,scope:dt(u.skill.metadata?.scope),...u.skill.pluginName&&{pluginName:u.skill.pluginName},computedHash:u.computedHash}));await J(c);}return {storeDir:e,cacheHit:i.cacheHit,source:i.source,skills:o,blobSkills:[],cloneError:i.cloneError??null}}async function te(n,t){let e=utils.Filesystem.normalize(t);for(let r of n){let s=utils.Filesystem.join(t,r.repoSubpath??"",r.name),i=utils.Filesystem.normalize(s);if(!(!i.startsWith(`${e}/`)&&i!==e))try{await promises.mkdir(m(s),{recursive:!0});for(let o of r.files){let l=utils.Filesystem.join(s,o.path),a=utils.Filesystem.normalize(l);if(!a.startsWith(`${i}/`)&&a!==i||o.path.includes("\0"))continue;let c=path.dirname(m(l));c!==m(s)&&await promises.mkdir(c,{recursive:!0}),await promises.writeFile(m(l),o.contents,"utf-8");}}catch{}}}function ht(n,t){let r=utils.Filesystem.normalize(n).replace(/\\/g,"/"),s=utils.Filesystem.normalize(t).replace(/\\/g,"/"),i=r.toLowerCase();return s.toLowerCase().startsWith(`${i}/`)?s.slice(i.length+1):""}async function ae(n){try{return (await promises.readdir(m(n))).length>0}catch{return false}}function Rr(n){try{let t=utils.Filesystem.normalize(n);for(let e of [D(),T()]){let r=utils.Filesystem.normalize(e);if(t===r||t.startsWith(`${r}/`))return !0}return !1}catch{return false}}async function Ar({cachePath:n,skillName:t,scope:e}){let r=utils.Filesystem.join(nn({scope:e}),t);return fs.existsSync(r)&&await promises.rm(m(r),{recursive:true,force:true}),await promises.cp(m(n),m(r),{recursive:true}),r}async function Wr(n){let t=Y(n);fs.existsSync(t)&&await promises.rm(m(t),{recursive:true,force:true});}async function Kr(){let n=D();fs.existsSync(n)&&await promises.rm(m(n),{recursive:true,force:true});}var kn="skills-lock.json",ce=4;function ue(n){return path.join(n||process.cwd(),kn)}function _r(n,t){return n?It(n,T(),t):null}async function q(n){let t=ue(n);try{let e=await promises.readFile(t,"utf-8"),r=JSON.parse(e);return typeof r.version!="number"||!r.skills||r.version<ce?mt():r}catch{return mt()}}async function fe(n,t){let e=ue(t),r={};for(let o of Object.keys(n.skills).sort())r[o]=n.skills[o];let s={version:n.version,skills:r},i=JSON.stringify(s,null,2)+`
|
|
22
|
-
`;await promises.writeFile(e,i,"utf-8");}async function zr(n,t,e){let r=await q(e),s=new Date().toISOString(),i=r.skills[n];r.skills[n]={...t,installedAt:i?.installedAt??s,updatedAt:s},await fe(r,e);}async function Hr(n,t){let e=await q(t);return n in e.skills?(delete e.skills[n],await fe(e,t),true):false}function mt(){return {version:ce,skills:{}}}exports.$=Lr;exports.A=ct;exports.B=Ye;exports.C=nr;exports.D=rr;exports.E=ir;exports.F=ft;exports.G=Sr;exports.H=en;exports.I=nn;exports.J=T;exports.K=se;exports.L=X;exports.M=oe;exports.N=D;exports.O=rn;exports.P=Y;exports.Q=le;exports.R=gt;exports.S=A;exports.T=Q;exports.U=xr;exports.V=Er;exports.W=cn;exports.X=un;exports.Y=br;exports.Z=Pr;exports._=fn;exports.a=j;exports.aa=J;exports.b=Kn;exports.ba=vr;exports.c=Nn;exports.ca=Ir;exports.d=O;exports.da=$r;exports.e=Ft;exports.ea=ht;exports.f=At;exports.fa=ae;exports.g=L;exports.ga=Rr;exports.h=Pe;exports.ha=Ar;exports.i=Le;exports.ia=Wr;exports.j=Dt;exports.ja=Kr;exports.k=Ut;exports.l=In;exports.m=it;exports.n=_t;exports.o=K;exports.p=It;exports.q=ce;exports.r=ue;exports.s=_r;exports.t=q;exports.u=fe;exports.v=zr;exports.w=Hr;exports.x=Je;exports.y=Vt;exports.z=Ze;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import {l as l$1,k}from'./chunk-RWZ4LFSN.mjs';import {existsSync,readdirSync,readFileSync}from'fs';import {join,resolve}from'path';import {homedir}from'os';import {xdgConfig}from'xdg-basedir';import {Wildcard}from'@easbot/utils';function l(){return k()}function o(){return xdgConfig??join(k(),".config")}function p(){return process.env.CODEX_HOME?.trim()||join(l(),".codex")}function y(){return process.env.CLAUDE_CONFIG_DIR?.trim()||join(l(),".claude")}function D(){return process.env.VIBE_HOME?.trim()||join(l(),".vibe")}function b(){return process.env.HERMES_HOME?.trim()||join(l(),".hermes")}function f(){return process.env.AUTOHAND_HOME?.trim()||join(l(),".autohand")}function S(){return process.env.APPDATA?.trim()}function I(){return process.env.FLATPAK_XDG_CONFIG_HOME?.trim()}function G(t,n){try{let i=JSON.parse(readFileSync(t,"utf-8"));return !!(i.dependencies?.[n]||i.devDependencies?.[n])}catch{return false}}function E(t=l(),n=existsSync){return n(join(t,".openclaw"))?join(t,".openclaw/skills"):n(join(t,".clawdbot"))?join(t,".clawdbot/skills"):n(join(t,".moltbot"))?join(t,".moltbot/skills"):join(t,".openclaw/skills")}var a={easbot:{name:"easbot",displayName:"EASBot",skillsDir:".easbot/skills",get globalSkillsDir(){return join(l$1(),"easbot","skills")},detectInstalled:async()=>true},"aider-desk":{name:"aider-desk",displayName:"AiderDesk",skillsDir:".aider-desk/skills",get globalSkillsDir(){return join(l(),".aider-desk/skills")},detectInstalled:async()=>existsSync(join(l(),".aider-desk"))},amp:{name:"amp",displayName:"Amp",skillsDir:".agents/skills",get globalSkillsDir(){return join(o(),"agents/skills")},detectInstalled:async()=>existsSync(join(o(),"amp"))},antigravity:{name:"antigravity",displayName:"Antigravity",skillsDir:".agents/skills",get globalSkillsDir(){return join(l(),".gemini/antigravity/skills")},detectInstalled:async()=>existsSync(join(l(),".gemini/antigravity"))},"antigravity-cli":{name:"antigravity-cli",displayName:"Antigravity CLI",skillsDir:".agents/skills",get globalSkillsDir(){return join(l(),".gemini/antigravity-cli/skills")},detectInstalled:async()=>existsSync(join(l(),".gemini/antigravity-cli"))},astrbot:{name:"astrbot",displayName:"AstrBot",skillsDir:"data/skills",get globalSkillsDir(){return join(l(),".astrbot/data/skills")},detectInstalled:async()=>existsSync(join(process.cwd(),"data/skills"))||existsSync(join(l(),".astrbot"))},"autohand-code":{name:"autohand-code",displayName:"Autohand Code CLI",skillsDir:".autohand/skills",get globalSkillsDir(){return join(f(),"skills")},detectInstalled:async()=>existsSync(f())},augment:{name:"augment",displayName:"Augment",skillsDir:".augment/skills",get globalSkillsDir(){return join(l(),".augment/skills")},detectInstalled:async()=>existsSync(join(l(),".augment"))},bob:{name:"bob",displayName:"IBM Bob",skillsDir:".bob/skills",get globalSkillsDir(){return join(l(),".bob/skills")},detectInstalled:async()=>existsSync(join(l(),".bob"))},"claude-code":{name:"claude-code",displayName:"Claude Code",skillsDir:".claude/skills",get globalSkillsDir(){return join(y(),"skills")},detectInstalled:async()=>existsSync(y())},openclaw:{name:"openclaw",displayName:"OpenClaw",skillsDir:".openclaw/skills",get globalSkillsDir(){return E()},detectInstalled:async()=>existsSync(join(l(),".openclaw"))||existsSync(join(l(),".clawdbot"))||existsSync(join(l(),".moltbot"))},cline:{name:"cline",displayName:"Cline",skillsDir:".agents/skills",get globalSkillsDir(){return join(l(),".agents","skills")},detectInstalled:async()=>existsSync(join(l(),".cline"))},"codearts-agent":{name:"codearts-agent",displayName:"CodeArts Agent",skillsDir:".codeartsdoer/skills",get globalSkillsDir(){return join(l(),".codeartsdoer/skills")},detectInstalled:async()=>existsSync(join(l(),".codeartsdoer"))},codebuddy:{name:"codebuddy",displayName:"CodeBuddy",skillsDir:".codebuddy/skills",get globalSkillsDir(){return join(l(),".codebuddy/skills")},detectInstalled:async()=>existsSync(join(process.cwd(),".codebuddy"))||existsSync(join(l(),".codebuddy"))},codemaker:{name:"codemaker",displayName:"Codemaker",skillsDir:".codemaker/skills",get globalSkillsDir(){return join(l(),".codemaker/skills")},detectInstalled:async()=>existsSync(join(l(),".codemaker"))},codestudio:{name:"codestudio",displayName:"Code Studio",skillsDir:".codestudio/skills",get globalSkillsDir(){return join(l(),".codestudio/skills")},detectInstalled:async()=>existsSync(join(l(),".codestudio"))},codex:{name:"codex",displayName:"Codex",skillsDir:".agents/skills",get globalSkillsDir(){return join(p(),"skills")},detectInstalled:async()=>existsSync(p())||existsSync("/etc/codex")},"command-code":{name:"command-code",displayName:"Command Code",skillsDir:".commandcode/skills",get globalSkillsDir(){return join(l(),".commandcode/skills")},detectInstalled:async()=>existsSync(join(l(),".commandcode"))},continue:{name:"continue",displayName:"Continue",skillsDir:".continue/skills",get globalSkillsDir(){return join(l(),".continue/skills")},detectInstalled:async()=>existsSync(join(process.cwd(),".continue"))||existsSync(join(l(),".continue"))},cortex:{name:"cortex",displayName:"Cortex Code",skillsDir:".cortex/skills",get globalSkillsDir(){return join(l(),".snowflake/cortex/skills")},detectInstalled:async()=>existsSync(join(l(),".snowflake/cortex"))},crush:{name:"crush",displayName:"Crush",skillsDir:".crush/skills",get globalSkillsDir(){return join(l(),".config/crush/skills")},detectInstalled:async()=>existsSync(join(l(),".config/crush"))},cursor:{name:"cursor",displayName:"Cursor",skillsDir:".agents/skills",get globalSkillsDir(){return join(l(),".cursor/skills")},detectInstalled:async()=>existsSync(join(l(),".cursor"))},deepagents:{name:"deepagents",displayName:"Deep Agents",skillsDir:".agents/skills",get globalSkillsDir(){return join(l(),".deepagents/agent/skills")},detectInstalled:async()=>existsSync(join(l(),".deepagents"))},devin:{name:"devin",displayName:"Devin for Terminal",skillsDir:".devin/skills",get globalSkillsDir(){return join(o(),"devin/skills")},detectInstalled:async()=>existsSync(join(o(),"devin"))},dexto:{name:"dexto",displayName:"Dexto",skillsDir:".agents/skills",get globalSkillsDir(){return join(l(),".agents/skills")},detectInstalled:async()=>existsSync(join(l(),".dexto"))},droid:{name:"droid",displayName:"Droid",skillsDir:".factory/skills",get globalSkillsDir(){return join(l(),".factory/skills")},detectInstalled:async()=>existsSync(join(l(),".factory"))},eve:{name:"eve",displayName:"Eve",skillsDir:"agent/skills",globalSkillsDir:void 0,detectInstalled:async()=>{let t=process.cwd();return existsSync(join(t,"agent"))&&G(join(t,"package.json"),"eve")}},firebender:{name:"firebender",displayName:"Firebender",skillsDir:".agents/skills",get globalSkillsDir(){return join(l(),".firebender/skills")},detectInstalled:async()=>existsSync(join(l(),".firebender"))},forgecode:{name:"forgecode",displayName:"ForgeCode",skillsDir:".forge/skills",get globalSkillsDir(){return join(l(),".forge/skills")},detectInstalled:async()=>existsSync(join(l(),".forge"))},"gemini-cli":{name:"gemini-cli",displayName:"Gemini CLI",skillsDir:".agents/skills",get globalSkillsDir(){return join(l(),".gemini/skills")},detectInstalled:async()=>existsSync(join(l(),".gemini"))},"github-copilot":{name:"github-copilot",displayName:"GitHub Copilot",skillsDir:".agents/skills",get globalSkillsDir(){return join(l(),".copilot/skills")},detectInstalled:async()=>existsSync(join(l(),".copilot"))},goose:{name:"goose",displayName:"Goose",skillsDir:".goose/skills",get globalSkillsDir(){return join(o(),"goose/skills")},detectInstalled:async()=>existsSync(join(o(),"goose"))},"hermes-agent":{name:"hermes-agent",displayName:"Hermes Agent",skillsDir:".hermes/skills",get globalSkillsDir(){return join(b(),"skills")},detectInstalled:async()=>existsSync(b())},"inference-sh":{name:"inference-sh",displayName:"inference.sh",skillsDir:".inferencesh/skills",get globalSkillsDir(){return join(l(),".inferencesh/skills")},detectInstalled:async()=>existsSync(join(l(),".inferencesh"))},jazz:{name:"jazz",displayName:"Jazz",skillsDir:".jazz/skills",get globalSkillsDir(){return join(l(),".jazz/skills")},detectInstalled:async()=>existsSync(join(l(),".jazz"))||existsSync(join(process.cwd(),".jazz"))},junie:{name:"junie",displayName:"Junie",skillsDir:".junie/skills",get globalSkillsDir(){return join(l(),".junie/skills")},detectInstalled:async()=>existsSync(join(l(),".junie"))},"iflow-cli":{name:"iflow-cli",displayName:"iFlow CLI",skillsDir:".iflow/skills",get globalSkillsDir(){return join(l(),".iflow/skills")},detectInstalled:async()=>existsSync(join(l(),".iflow"))},kilo:{name:"kilo",displayName:"Kilo Code",skillsDir:".kilocode/skills",get globalSkillsDir(){return join(l(),".kilocode/skills")},detectInstalled:async()=>existsSync(join(l(),".kilocode"))},"kimi-code-cli":{name:"kimi-code-cli",displayName:"Kimi Code CLI",skillsDir:".agents/skills",get globalSkillsDir(){return join(l(),".agents/skills")},detectInstalled:async()=>existsSync(join(l(),".kimi-code"))||existsSync(join(l(),".kimi"))},"kiro-cli":{name:"kiro-cli",displayName:"Kiro CLI",skillsDir:".kiro/skills",get globalSkillsDir(){return join(l(),".kiro/skills")},detectInstalled:async()=>existsSync(join(l(),".kiro"))},kode:{name:"kode",displayName:"Kode",skillsDir:".kode/skills",get globalSkillsDir(){return join(l(),".kode/skills")},detectInstalled:async()=>existsSync(join(l(),".kode"))},lingma:{name:"lingma",displayName:"Lingma",skillsDir:".lingma/skills",get globalSkillsDir(){return join(l(),".lingma/skills")},detectInstalled:async()=>existsSync(join(l(),".lingma"))},loaf:{name:"loaf",displayName:"Loaf",skillsDir:".agents/skills",get globalSkillsDir(){return join(l(),".agents/skills")},detectInstalled:async()=>existsSync(join(l(),".loaf"))},mcpjam:{name:"mcpjam",displayName:"MCPJam",skillsDir:".mcpjam/skills",get globalSkillsDir(){return join(l(),".mcpjam/skills")},detectInstalled:async()=>existsSync(join(l(),".mcpjam"))},"mistral-vibe":{name:"mistral-vibe",displayName:"Mistral Vibe",skillsDir:".vibe/skills",get globalSkillsDir(){return join(D(),"skills")},detectInstalled:async()=>existsSync(D())},moxby:{name:"moxby",displayName:"Moxby",skillsDir:".moxby/skills",get globalSkillsDir(){return join(l(),".moxby/skills")},detectInstalled:async()=>existsSync(join(l(),".moxby"))},mux:{name:"mux",displayName:"Mux",skillsDir:".mux/skills",get globalSkillsDir(){return join(l(),".mux/skills")},detectInstalled:async()=>existsSync(join(l(),".mux"))},opencode:{name:"opencode",displayName:"OpenCode",skillsDir:".agents/skills",get globalSkillsDir(){return join(o(),"opencode/skills")},detectInstalled:async()=>existsSync(join(o(),"opencode"))},openhands:{name:"openhands",displayName:"OpenHands",skillsDir:".openhands/skills",get globalSkillsDir(){return join(l(),".openhands/skills")},detectInstalled:async()=>existsSync(join(l(),".openhands"))},ona:{name:"ona",displayName:"Ona",skillsDir:".ona/skills",get globalSkillsDir(){return join(l(),".ona/skills")},detectInstalled:async()=>existsSync(join(l(),".ona"))},pi:{name:"pi",displayName:"Pi",skillsDir:".pi/skills",get globalSkillsDir(){return join(l(),".pi/agent/skills")},detectInstalled:async()=>existsSync(join(l(),".pi/agent"))},qoder:{name:"qoder",displayName:"Qoder",skillsDir:".qoder/skills",get globalSkillsDir(){return join(l(),".qoder/skills")},detectInstalled:async()=>existsSync(join(l(),".qoder"))},"qoder-cn":{name:"qoder-cn",displayName:"Qoder CN",skillsDir:".qoder/skills",get globalSkillsDir(){return join(l(),".qoder-cn/skills")},detectInstalled:async()=>existsSync(join(l(),".qoder-cn"))},"qwen-code":{name:"qwen-code",displayName:"Qwen Code",skillsDir:".qwen/skills",get globalSkillsDir(){return join(l(),".qwen/skills")},detectInstalled:async()=>existsSync(join(l(),".qwen"))},replit:{name:"replit",displayName:"Replit",skillsDir:".agents/skills",get globalSkillsDir(){return join(o(),"agents/skills")},detectInstalled:async()=>existsSync(join(process.cwd(),".replit"))},reasonix:{name:"reasonix",displayName:"Reasonix",skillsDir:".reasonix/skills",get globalSkillsDir(){return join(l(),".reasonix/skills")},detectInstalled:async()=>existsSync(join(l(),".reasonix"))},rovodev:{name:"rovodev",displayName:"Rovo Dev",skillsDir:".rovodev/skills",get globalSkillsDir(){return join(l(),".rovodev/skills")},detectInstalled:async()=>existsSync(join(l(),".rovodev"))},roo:{name:"roo",displayName:"Roo Code",skillsDir:".roo/skills",get globalSkillsDir(){return join(l(),".roo/skills")},detectInstalled:async()=>existsSync(join(l(),".roo"))},"tabnine-cli":{name:"tabnine-cli",displayName:"Tabnine CLI",skillsDir:".tabnine/agent/skills",get globalSkillsDir(){return join(l(),".tabnine/agent/skills")},detectInstalled:async()=>existsSync(join(l(),".tabnine"))},terramind:{name:"terramind",displayName:"Terramind",skillsDir:".terramind/skills",get globalSkillsDir(){return join(l(),".terramind/skills")},detectInstalled:async()=>existsSync(join(l(),".terramind"))},tinycloud:{name:"tinycloud",displayName:"Tinycloud",skillsDir:".tinycloud/skills",get globalSkillsDir(){return join(l(),".tinycloud/skills")},detectInstalled:async()=>existsSync(join(l(),".tinycloud"))},trae:{name:"trae",displayName:"Trae",skillsDir:".trae/skills",get globalSkillsDir(){return join(l(),".trae/skills")},detectInstalled:async()=>existsSync(join(l(),".trae"))},"trae-cn":{name:"trae-cn",displayName:"Trae CN",skillsDir:".trae/skills",get globalSkillsDir(){return join(l(),".trae-cn/skills")},detectInstalled:async()=>existsSync(join(l(),".trae-cn"))},warp:{name:"warp",displayName:"Warp",skillsDir:".agents/skills",get globalSkillsDir(){return join(l(),".agents/skills")},detectInstalled:async()=>existsSync(join(l(),".warp"))},windsurf:{name:"windsurf",displayName:"Windsurf",skillsDir:".windsurf/skills",get globalSkillsDir(){return join(l(),".codeium/windsurf/skills")},detectInstalled:async()=>existsSync(join(l(),".codeium/windsurf"))},zed:{name:"zed",displayName:"Zed",skillsDir:".agents/skills",get globalSkillsDir(){return join(l(),".agents/skills")},detectInstalled:async()=>existsSync(join(o(),"zed"))||!!S()&&existsSync(join(S(),"Zed"))||!!I()&&existsSync(join(I(),"zed"))},zencoder:{name:"zencoder",displayName:"Zencoder",skillsDir:".zencoder/skills",get globalSkillsDir(){return join(l(),".zencoder/skills")},detectInstalled:async()=>existsSync(join(l(),".zencoder"))},zenflow:{name:"zenflow",displayName:"Zenflow",skillsDir:".zencoder/skills",get globalSkillsDir(){return join(l(),".zencoder/skills")},detectInstalled:async()=>existsSync(join(l(),".zencoder"))},neovate:{name:"neovate",displayName:"Neovate",skillsDir:".neovate/skills",get globalSkillsDir(){return join(l(),".neovate/skills")},detectInstalled:async()=>existsSync(join(l(),".neovate"))},pochi:{name:"pochi",displayName:"Pochi",skillsDir:".pochi/skills",get globalSkillsDir(){return join(l(),".pochi/skills")},detectInstalled:async()=>existsSync(join(l(),".pochi"))},promptscript:{name:"promptscript",displayName:"PromptScript",skillsDir:".agents/skills",globalSkillsDir:void 0,detectInstalled:async()=>existsSync(join(process.cwd(),".promptscript"))||existsSync(join(process.cwd(),"promptscript.yaml"))},adal:{name:"adal",displayName:"AdaL",skillsDir:".adal/skills",get globalSkillsDir(){return join(l(),".adal/skills")},detectInstalled:async()=>existsSync(join(l(),".adal"))},universal:{name:"universal",displayName:"Universal",skillsDir:".agents/skills",get globalSkillsDir(){return join(o(),"agents/skills")},detectInstalled:async()=>false}};async function V(){return (await Promise.all(Object.entries(a).map(async([n,i])=>({type:n,installed:await i.detectInstalled()})))).filter(n=>n.installed).map(n=>n.type)}function X(t){return a[t]}var v=join("agent","subagents");function R(t=process.cwd()){let n=join(t,v);if(!existsSync(n))return [];try{return readdirSync(n,{withFileTypes:!0}).filter(i=>i.isDirectory()).map(i=>i.name).sort()}catch{return []}}function w(t,n){let i=a[t];if(n==="project")return i.skillsDir===".agents/skills";if(i.globalSkillsDir===void 0)return false;let r=resolve(k()||homedir(),".agents","skills");return resolve(i.globalSkillsDir)===r}function _(t){return Object.entries(a).filter(([n])=>w(n,t)).map(([n])=>n)}function Y(t){let n=new Set(_(t));return Object.keys(a).filter(i=>!n.has(i))}var x=/^\.[^/]+\/skills$/;function C(){let t=new Set;for(let n of Object.values(a))n.skillsDir&&x.test(n.skillsDir)&&t.add(n.skillsDir);return Array.from(t).sort()}function q(){let t=new Set;for(let n of Object.values(a))n.globalSkillsDir!==void 0&&t.add(n.globalSkillsDir);return Array.from(t).sort()}function ee(){let t=C(),n=q(),i=Array.from(new Set([...t,...n])).sort();return {project:t,global:n,all:i}}function le(){return C().map(t=>`${t}/`)}function se(t,n){let i=a[t];return n==="global"?w(t,"global"):i.skillsDir===".agents/skills"}var h="*";function te(t){if(!t||t.length===0)return [];let n=Object.keys(a),i=[];for(let r of t)if(r!==h){if(r.includes("/")||r.includes("**")){i.push(r);continue}j.test(r)?n.some(d=>Wildcard.match(d,r))||i.push(r):n.includes(r)||i.push(r);}return i}function ne(t){if(!t||t.length===0)return [];let n=Object.keys(a);if(t.includes(h))return [...n];if(t.some(i=>j.test(i))){let i=new Set;for(let r of t)if(!(r.includes("/")||r.includes("**")))for(let d of n)Wildcard.match(d,r)&&i.add(d);return Array.from(i)}return Array.from(new Set(t.filter(i=>!i.includes("/")&&!i.includes("**"))))}var j=/[*?[{}]/;function F(t={}){let n=t.cwd??process.cwd(),i=t.agentFilter??Object.keys(a),r=new Set;for(let d of i){let k=a[d];if(!k.skillsDir||!x.test(k.skillsDir))continue;let T=k.skillsDir===".agents/skills"?join(n,".agents","skills"):join(n,k.skillsDir);if(d==="eve")for(let z of R(n)){let O=join(n,v,z,"skills");r.add(g(`${O}/**/SKILL.md`));}r.add(g(`${T}/**/SKILL.md`));}return Array.from(r).sort()}function M(t={}){let n=t.agentFilter??Object.keys(a),i=new Set;for(let r of n){let d=a[r];d.globalSkillsDir!==void 0&&i.add(g(`${d.globalSkillsDir}/**/SKILL.md`));}return Array.from(i).sort()}function ie(t={}){let n=F(t),i=M(t),r=Array.from(new Set([...n,...i])).sort();return {project:n,global:i,all:r}}function g(t){return t.replace(/\\/g,"/")}function re(){let t=new Set;for(let i of Object.values(a)){if(i.globalSkillsDir===void 0)continue;let r=g(i.globalSkillsDir);r!==""&&t.add(r);}let n=g(join(k()||homedir(),".agents","skills"));return t.add(n),Array.from(t).sort()}export{E as a,a as b,V as c,X as d,v as e,R as f,w as g,_ as h,Y as i,x as j,C as k,q as l,ee as m,le as n,se as o,te as p,ne as q,ie as r,re as s};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export{M as handleSkillsCli,K as renderBanner,L as renderHelp}from'./chunk-J6PRUXFG.mjs';import'./chunk-CFMOYU7R.mjs';import'./chunk-NH4TYEPW.mjs';import'./chunk-5BDDXFOF.mjs';import'./chunk-AQYRRXU5.mjs';import'./chunk-6NTEYECA.mjs';import'./chunk-ML6B4IQL.mjs';import'./chunk-RWZ4LFSN.mjs';import'./chunk-ZJS7IO5V.mjs';import'./chunk-ZYDDQV73.mjs';import'./chunk-WQGSYA5D.mjs';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
'use strict';var chunk2E6BHPFV_cjs=require('./chunk-2E6BHPFV.cjs');require('./chunk-Q2MOP5ZW.cjs'),require('./chunk-5RWSXDNO.cjs'),require('./chunk-DFBKA5A6.cjs'),require('./chunk-UGHF4GOW.cjs'),require('./chunk-JCOXRETY.cjs'),require('./chunk-ISMGLHYS.cjs'),require('./chunk-XGUPIAAF.cjs'),require('./chunk-DNE3XPCJ.cjs'),require('./chunk-E7AHWFZN.cjs'),require('./chunk-GWUDKZEH.cjs');Object.defineProperty(exports,"handleSkillsCli",{enumerable:true,get:function(){return chunk2E6BHPFV_cjs.M}});Object.defineProperty(exports,"renderBanner",{enumerable:true,get:function(){return chunk2E6BHPFV_cjs.K}});Object.defineProperty(exports,"renderHelp",{enumerable:true,get:function(){return chunk2E6BHPFV_cjs.L}});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkUGHF4GOW_cjs=require('./chunk-UGHF4GOW.cjs');require('./chunk-ISMGLHYS.cjs'),require('./chunk-XGUPIAAF.cjs'),require('./chunk-E7AHWFZN.cjs'),require('./chunk-GWUDKZEH.cjs');Object.defineProperty(exports,"copySkillDir",{enumerable:true,get:function(){return chunkUGHF4GOW_cjs.j}});Object.defineProperty(exports,"ensureCanonicalFromFiles",{enumerable:true,get:function(){return chunkUGHF4GOW_cjs.n}});Object.defineProperty(exports,"getAgentBaseDir",{enumerable:true,get:function(){return chunkUGHF4GOW_cjs.g}});Object.defineProperty(exports,"getCanonicalPath",{enumerable:true,get:function(){return chunkUGHF4GOW_cjs.o}});Object.defineProperty(exports,"getCanonicalSkillsDir",{enumerable:true,get:function(){return chunkUGHF4GOW_cjs.e}});Object.defineProperty(exports,"getEveSubagentSkillsDir",{enumerable:true,get:function(){return chunkUGHF4GOW_cjs.f}});Object.defineProperty(exports,"getInstallPath",{enumerable:true,get:function(){return chunkUGHF4GOW_cjs.m}});Object.defineProperty(exports,"getInstallStatus",{enumerable:true,get:function(){return chunkUGHF4GOW_cjs.l}});Object.defineProperty(exports,"installBlobSkillForAgent",{enumerable:true,get:function(){return chunkUGHF4GOW_cjs.r}});Object.defineProperty(exports,"installRemoteSkillForAgent",{enumerable:true,get:function(){return chunkUGHF4GOW_cjs.p}});Object.defineProperty(exports,"installSkillForAgent",{enumerable:true,get:function(){return chunkUGHF4GOW_cjs.h}});Object.defineProperty(exports,"installWellKnownSkillForAgent",{enumerable:true,get:function(){return chunkUGHF4GOW_cjs.q}});Object.defineProperty(exports,"isSkillInstalled",{enumerable:true,get:function(){return chunkUGHF4GOW_cjs.k}});Object.defineProperty(exports,"linkSkillDir",{enumerable:true,get:function(){return chunkUGHF4GOW_cjs.i}});Object.defineProperty(exports,"listInstalledSkills",{enumerable:true,get:function(){return chunkUGHF4GOW_cjs.s}});Object.defineProperty(exports,"sanitizeName",{enumerable:true,get:function(){return chunkUGHF4GOW_cjs.d}});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkJCOXRETY_cjs=require('./chunk-JCOXRETY.cjs');require('./chunk-ISMGLHYS.cjs'),require('./chunk-XGUPIAAF.cjs'),require('./chunk-DNE3XPCJ.cjs'),require('./chunk-E7AHWFZN.cjs'),require('./chunk-GWUDKZEH.cjs');Object.defineProperty(exports,"CURRENT_VERSION",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.q}});Object.defineProperty(exports,"addSkillToLocalLock",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.v}});Object.defineProperty(exports,"getLocalLockPath",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.r}});Object.defineProperty(exports,"readLocalLock",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.t}});Object.defineProperty(exports,"removeSkillFromLocalLock",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.w}});Object.defineProperty(exports,"storePathFromLocalLockEntry",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.s}});Object.defineProperty(exports,"writeLocalLock",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.u}});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export{a as scanInstalledSkillDirs,b as scanInstalledSkills}from'./chunk-5BDDXFOF.mjs';import'./chunk-AQYRRXU5.mjs';import'./chunk-6NTEYECA.mjs';import'./chunk-ML6B4IQL.mjs';import'./chunk-RWZ4LFSN.mjs';import'./chunk-ZJS7IO5V.mjs';import'./chunk-ZYDDQV73.mjs';import'./chunk-WQGSYA5D.mjs';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkDFBKA5A6_cjs=require('./chunk-DFBKA5A6.cjs');require('./chunk-UGHF4GOW.cjs'),require('./chunk-JCOXRETY.cjs'),require('./chunk-ISMGLHYS.cjs'),require('./chunk-XGUPIAAF.cjs'),require('./chunk-DNE3XPCJ.cjs'),require('./chunk-E7AHWFZN.cjs'),require('./chunk-GWUDKZEH.cjs');Object.defineProperty(exports,"scanInstalledSkillDirs",{enumerable:true,get:function(){return chunkDFBKA5A6_cjs.a}});Object.defineProperty(exports,"scanInstalledSkills",{enumerable:true,get:function(){return chunkDFBKA5A6_cjs.b}});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
'use strict';var chunk5RWSXDNO_cjs=require('./chunk-5RWSXDNO.cjs');require('./chunk-JCOXRETY.cjs'),require('./chunk-ISMGLHYS.cjs'),require('./chunk-XGUPIAAF.cjs'),require('./chunk-DNE3XPCJ.cjs'),require('./chunk-E7AHWFZN.cjs'),require('./chunk-GWUDKZEH.cjs');Object.defineProperty(exports,"CURRENT_VERSION",{enumerable:true,get:function(){return chunk5RWSXDNO_cjs.j}});Object.defineProperty(exports,"addSkillToLock",{enumerable:true,get:function(){return chunk5RWSXDNO_cjs.r}});Object.defineProperty(exports,"computeContentHash",{enumerable:true,get:function(){return chunk5RWSXDNO_cjs.n}});Object.defineProperty(exports,"dismissPrompt",{enumerable:true,get:function(){return chunk5RWSXDNO_cjs.y}});Object.defineProperty(exports,"fetchSkillFolderHash",{enumerable:true,get:function(){return chunk5RWSXDNO_cjs.q}});Object.defineProperty(exports,"getAllLockedSkills",{enumerable:true,get:function(){return chunk5RWSXDNO_cjs.u}});Object.defineProperty(exports,"getGitHubToken",{enumerable:true,get:function(){return chunk5RWSXDNO_cjs.p}});Object.defineProperty(exports,"getSkillFromLock",{enumerable:true,get:function(){return chunk5RWSXDNO_cjs.t}});Object.defineProperty(exports,"getSkillLockPath",{enumerable:true,get:function(){return chunk5RWSXDNO_cjs.k}});Object.defineProperty(exports,"getSkillsBySource",{enumerable:true,get:function(){return chunk5RWSXDNO_cjs.v}});Object.defineProperty(exports,"isPromptDismissed",{enumerable:true,get:function(){return chunk5RWSXDNO_cjs.w}});Object.defineProperty(exports,"readSkillLock",{enumerable:true,get:function(){return chunk5RWSXDNO_cjs.l}});Object.defineProperty(exports,"removeSkillFromLock",{enumerable:true,get:function(){return chunk5RWSXDNO_cjs.s}});Object.defineProperty(exports,"resetGhAuthWarning",{enumerable:true,get:function(){return chunk5RWSXDNO_cjs.o}});Object.defineProperty(exports,"storePathFromLockEntry",{enumerable:true,get:function(){return chunk5RWSXDNO_cjs.x}});Object.defineProperty(exports,"writeSkillLock",{enumerable:true,get:function(){return chunk5RWSXDNO_cjs.m}});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkJCOXRETY_cjs=require('./chunk-JCOXRETY.cjs');require('./chunk-ISMGLHYS.cjs'),require('./chunk-XGUPIAAF.cjs'),require('./chunk-DNE3XPCJ.cjs'),require('./chunk-E7AHWFZN.cjs'),require('./chunk-GWUDKZEH.cjs');Object.defineProperty(exports,"DEFAULT_SKILL_SOURCE",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.F}});Object.defineProperty(exports,"LocalPathNotFoundError",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.R}});Object.defineProperty(exports,"STORE_INDEX_VERSION",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.o}});Object.defineProperty(exports,"acquireSourceClone",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.Q}});Object.defineProperty(exports,"cleanCache",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.ja}});Object.defineProperty(exports,"cleanCachedRepo",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.ia}});Object.defineProperty(exports,"derivePluginSlug",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.O}});Object.defineProperty(exports,"deriveSourceKey",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.L}});Object.defineProperty(exports,"ensureCachedSource",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.ca}});Object.defineProperty(exports,"findSkillByLocation",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.Y}});Object.defineProperty(exports,"findSkillByName",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.X}});Object.defineProperty(exports,"getCacheRepoDir",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.P}});Object.defineProperty(exports,"getCacheRoot",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.N}});Object.defineProperty(exports,"getSourceDir",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.I}});Object.defineProperty(exports,"getStoreDefinitionsFile",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.K}});Object.defineProperty(exports,"getStoreDir",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.M}});Object.defineProperty(exports,"getStoreRoot",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.J}});Object.defineProperty(exports,"installFromCache",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.ha}});Object.defineProperty(exports,"isCachePath",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.ga}});Object.defineProperty(exports,"isDirNonEmpty",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.fa}});Object.defineProperty(exports,"listAllSkills",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.W}});Object.defineProperty(exports,"listSourceSkills",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.da}});Object.defineProperty(exports,"parseDefaultPluginConfig",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.H}});Object.defineProperty(exports,"readStoreDefinitions",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.U}});Object.defineProperty(exports,"readStoreIndex",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.S}});Object.defineProperty(exports,"removeSkillFromAllPlugins",{enumerable:true,get:function(){return chunkJCOXRETY_cjs._}});Object.defineProperty(exports,"removeSkillFromPlugin",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.Z}});Object.defineProperty(exports,"removeStoreDefinition",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.ba}});Object.defineProperty(exports,"resolveDefaultSource",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.G}});Object.defineProperty(exports,"toPosixRelative",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.ea}});Object.defineProperty(exports,"writeSkillToPlugin",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.V}});Object.defineProperty(exports,"writeStoreDefinition",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.$}});Object.defineProperty(exports,"writeStoreDefinitionsBatch",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.aa}});Object.defineProperty(exports,"writeStoreIndex",{enumerable:true,get:function(){return chunkJCOXRETY_cjs.T}});
|
|
File without changes
|