@easbot/skills 0.3.5 → 0.3.8

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.
@@ -1,2 +1,2 @@
1
1
  import {createHash}from'crypto';import {parse}from'yaml';var C=Object.defineProperty;var P=(n,t,e)=>t in n?C(n,t,{enumerable:true,configurable:true,writable:true,value:e}):n[t]=e;var K=(n,t,e)=>P(n,typeof t!="symbol"?t+"":t,e);function y(n){let t=n.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);return t?{data:parse(t[1])??{},content:t[2]??""}:{data:{},content:n}}var I=/\x1b\[[\x30-\x3f]*[\x20-\x2f]*[\x40-\x7e]/g,E=/\x1b\][\s\S]*?(?:\x07|\x1b\\)/g,F=/\x1b[P^_][\s\S]*?(?:\x1b\\)/g,T=/\x1b[\x20-\x7e]/g,$=/[\x80-\x9f]/g,A=/[\x00-\x06\x07\x08\x0b\x0c\x0d-\x1a\x1c-\x1f\x7f]/g;function B(n){return n.replace(E,"").replace(F,"").replace(I,"").replace(T,"").replace($,"").replace(A,"")}function S(n){return B(n).replace(/[\r\n]+/g," ").trim()}var U=process.env.SKILLS_DOWNLOAD_URL||"https://skills.sh",M={"zapier/connectors":{downloadUrl:n=>`https://connectors-skills.zapier.com/download/${encodeURIComponent(n)}/snapshot.json`}},L=1e4;function m(n){return n.toLowerCase().replace(/[\s_]+/g,"-").replace(/[^a-z0-9-]/g,"").replace(/-+/g,"-").replace(/^-|-$/g,"")}var w=false;function tt(){w=false;}async function x(n,t,e){try{let l=`https://api.github.com/repos/${n}/git/trees/${encodeURIComponent(t)}?recursive=1`,i={Accept:"application/vnd.github.v3+json","User-Agent":"skills-cli"};e&&(i.Authorization=`Bearer ${e}`);let a=await fetch(l,{headers:i,signal:AbortSignal.timeout(L)});if(a.ok){let c=await a.json();return {tree:{sha:c.sha,branch:t,tree:c.tree},rateLimited:!1}}return {tree:null,rateLimited:a.status===403&&a.headers.get("x-ratelimit-remaining")==="0"}}catch{return {tree:null,rateLimited:false}}}async function O(n,t,e){let l=t?[t]:["HEAD","main","master"];if(w&&e){let o=e();if(!o)return null;for(let c of l){let p=await x(n,c,o);if(p.tree)return p.tree}return null}let i=false;for(let o of l){let c=await x(n,o,null);if(c.tree)return c.tree;if(c.rateLimited){i=true;break}}if(!i||!e)return null;w=true;let a=e();if(!a)return null;for(let o of l){let c=await x(n,o,a);if(c.tree)return c.tree}return null}function et(n,t){let e=t.replace(/\\/g,"/");return e.toLowerCase().endsWith("/skill.md")?e=e.slice(0,-9):e.toLowerCase().endsWith("skill.md")&&(e=e.slice(0,-8)),e.endsWith("/")&&(e=e.slice(0,-1)),e?n.tree.find(i=>i.type==="tree"&&i.path===e)?.sha??null:n.sha}var W=["","skills/","skills/.curated/","skills/.experimental/","skills/.system/",".agents/skills/",".claude/skills/",".cline/skills/",".codebuddy/skills/",".codex/skills/",".commandcode/skills/",".continue/skills/",".github/skills/",".goose/skills/",".iflow/skills/",".junie/skills/",".kilocode/skills/",".kiro/skills/",".mux/skills/",".neovate/skills/",".opencode/skills/",".openhands/skills/",".pi/skills/",".qoder/skills/",".roo/skills/",".trae/skills/",".windsurf/skills/",".zencoder/skills/"];function H(n,t){let e=n.tree.filter(d=>d.type==="blob"&&d.path.toLowerCase().endsWith("skill.md")).map(d=>d.path),l=t?t.endsWith("/")?t:t+"/":"",i=l?e.filter(d=>d.startsWith(l)||d===l+"SKILL.md"):e;if(i.length===0)return [];let a=[],o=new Set,c=new Set(["node_modules",".git","dist","build","__pycache__"]),p=new Set(i.map(d=>d.toLowerCase()));for(let d of W){let g=l+d,r=d!=="";for(let s of i){if(!s.startsWith(g))continue;let u=s.slice(g.length);if(u.toLowerCase()==="skill.md"){o.has(s)||(a.push(s),o.add(s));continue}let f=u.split("/");if(f.length===2&&f[1].toLowerCase()==="skill.md"){o.has(s)||(a.push(s),o.add(s));continue}if(r&&f.length===3&&f[2].toLowerCase()==="skill.md"&&!c.has(f[0])&&!c.has(f[1])){let h=`${g}${f[0]}/SKILL.md`.toLowerCase();!p.has(h)&&!o.has(s)&&(a.push(s),o.add(s));}}}return a.length>0?a:i.filter(d=>d.split("/").length<=6)}async function z(n,t,e){try{let l=`https://raw.githubusercontent.com/${n}/${t}/${e}`,i=await fetch(l,{signal:AbortSignal.timeout(L)});return i.ok?await i.text():null}catch{return null}}async function v(n,t){try{let[e,l]=n.split("/"),i=`${U}/api/download/${encodeURIComponent(e)}/${encodeURIComponent(l)}/${encodeURIComponent(t)}`,o=M[n.toLowerCase()]?.downloadUrl(t)??i,c=await fetch(o,{signal:AbortSignal.timeout(L)});return c.ok?await c.json():null}catch{return null}}function j(n){let t=createHash("sha256");for(let e of [...n].sort((l,i)=>l.path.localeCompare(i.path)))t.update(e.path),t.update(e.contents);return t.digest("hex")}async function nt(n,t={}){let e=await O(n,t.ref,t.getToken);if(!e)return null;let l=H(e,t.subpath);if(l.length===0)return null;if(t.skillFilter){let r=m(t.skillFilter),s=l.filter(u=>{let f=u.split("/");if(f.length<2)return false;let h=f[f.length-2];return m(h)===r});s.length>0&&(l=s);}let i=await Promise.all(l.map(async r=>{let s=await z(n,e.branch,r);return {mdPath:r,content:s}})),a=[];for(let{mdPath:r,content:s}of i){if(!s)continue;let{data:u}=y(s);if(!u.name||!u.description||typeof u.name!="string"||typeof u.description!="string"||u.metadata?.internal===true&&!t.includeInternal)continue;let h=S(u.name),k=S(u.description);a.push({mdPath:r,name:h,description:k,content:s,slug:m(h),metadata:u.metadata});}if(a.length===0)return null;let o=a;if(t.skillFilter){let r=m(t.skillFilter),s=a.filter(u=>u.slug===r);if(s.length>0&&(o=s),o.length===0)return null}let c=n.toLowerCase(),p=await Promise.all(o.map(async r=>{let s=await v(c,r.slug);return {skill:r,download:s}}));return p.every(r=>r.download!==null)?{skills:p.map(({skill:r,download:s})=>{let u=r.mdPath.toLowerCase(),h=(u.endsWith("/skill.md")?r.mdPath.slice(0,-9):u==="skill.md"?"":r.mdPath.slice(0,-9))?s.files:s.files.filter(k=>k.path.toLowerCase()==="skill.md");return {name:r.name,description:r.description,path:"",rawContent:r.content,metadata:r.metadata,files:h,snapshotHash:h.length===s.files.length?s.hash:j(h),repoPath:r.mdPath}}),tree:e}:null}
2
- export{K as a,y as b,B as c,S as d,M as e,m as f,tt as g,O as h,et as i,H as j,nt as k};
2
+ export{K as a,B as b,S as c,y as d,M as e,m as f,tt as g,O as h,et as i,H as j,nt as k};
package/dist/cli.cjs ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';var chunk3DP2YYBO_cjs=require('./chunks/chunk-3DP2YYBO.cjs'),chunkXDSGBJHO_cjs=require('./chunks/chunk-XDSGBJHO.cjs'),fs=require('fs'),path=require('path'),url=require('url');var m=path.dirname(url.fileURLToPath(chunkXDSGBJHO_cjs.b));function d(){try{let e=path.join(m,"..","package.json");return JSON.parse(fs.readFileSync(e,"utf-8")).version}catch{return "0.0.0"}}async function u(){let e=process.argv.slice(2),r=d();if(process.env.EASBOT_LANG||(process.env.EASBOT_LANG="en-US"),e.length===0){chunk3DP2YYBO_cjs.lb();return}if(e[0]==="--help"||e[0]==="-h"){chunk3DP2YYBO_cjs.mb();return}if(e[0]==="--version"||e[0]==="-v"){console.log(r);return}let o=await chunk3DP2YYBO_cjs.nb(e,{version:r});o.code!==0&&(process.exitCode=o.code);}u().catch(e=>{console.error(e),process.exitCode=1;}).finally(()=>{chunk3DP2YYBO_cjs.pa().then(()=>process.exit(process.exitCode??0));});
package/dist/cli.d.cts ADDED
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
package/dist/cli.d.ts ADDED
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
package/dist/cli.mjs ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import {pa,lb,mb,nb}from'./chunks/chunk-YNIIQUFJ.mjs';import'./chunks/chunk-ZEMGS5WR.mjs';import {readFileSync}from'fs';import {dirname,join}from'path';import {fileURLToPath}from'url';var m=dirname(fileURLToPath(import.meta.url));function f(){try{let e=join(m,"..","package.json");return JSON.parse(readFileSync(e,"utf-8")).version}catch{return "0.0.0"}}async function d(){let e=process.argv.slice(2),r=f();if(process.env.EASBOT_LANG||(process.env.EASBOT_LANG="en-US"),e.length===0){lb();return}if(e[0]==="--help"||e[0]==="-h"){mb();return}if(e[0]==="--version"||e[0]==="-v"){console.log(r);return}let o=await nb(e,{version:r});o.code!==0&&(process.exitCode=o.code);}d().catch(e=>{console.error(e),process.exitCode=1;}).finally(()=>{pa().then(()=>process.exit(process.exitCode??0));});