skill-atlas-cli 0.11.0 → 0.11.1

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/bin/cli.js CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
- import e,{readFileSync as t}from"node:fs";import{cac as n}from"cac";import r from"chalk";import{agentRegister as i,checkForUpdate as a,logger as o}from"../lib/index.js";import{createHash as s,randomBytes as c,randomUUID as l}from"node:crypto";import u,{join as d}from"node:path";import f from"semver";import p from"node:os";import{spawn as m}from"node:child_process";import*as h from"@clack/prompts";import g from"axios";import _,{basename as v,dirname as y,join as b,normalize as x,relative as ee,resolve as S,sep as te}from"path";import{existsSync as C,writeFileSync as ne}from"fs";import re,{homedir as ie,platform as ae,tmpdir as oe}from"os";import*as se from"readline";import{Writable as ce}from"stream";import{cp as le,lstat as ue,mkdir as de,readFile as fe,readdir as pe,readlink as me,realpath as he,rename as ge,rm as w,stat as _e,symlink as ve,unlink as ye,writeFile as be}from"fs/promises";import{fileURLToPath as xe}from"url";import{info as Se}from"console";import{execFileSync as Ce}from"child_process";import{createConsola as we}from"consola";import Te from"secp256k1";var Ee=Object.create,De=Object.defineProperty,Oe=Object.getOwnPropertyDescriptor,ke=Object.getOwnPropertyNames,Ae=Object.getPrototypeOf,je=Object.prototype.hasOwnProperty,Me=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Ne=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=ke(t),a=0,o=i.length,s;a<o;a++)s=i[a],!je.call(e,s)&&s!==n&&De(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=Oe(t,s))||r.enumerable});return e},Pe=(e,t,n)=>(n=e==null?{}:Ee(Ae(e)),Ne(t||!e||!e.__esModule?De(n,`default`,{value:e,enumerable:!0}):n,e));const T=process.env.SKILLATLAS_CONFIG_DIR||u.join(p.homedir(),`.skillatlas`),Fe=u.join(T,`auth.json`),E=u.join(T,`skillatlas-meta.json`),Ie={production:{apiBase:`https://skillhub.wanuai.cn/`},pre:{apiBase:`https://pre-skillhub.aliyun-inc.com/`}},Le=process.env.SKILLATLAS_ENV||`production`;let Re=process.env.SKILLATLAS_API_BASE||Ie[Le].apiBase;const D=process.env.OPENCLAW_STATE_DIR||u.join(p.homedir(),`.openclaw`),O=u.join(D,`seafood-lock.json`),ze=u.join(D,`identity`,`device.json`),Be={skill:`skills`,plugin:`plugins`,trigger:`triggers`,channel:`channels`,experience:`experiences`},Ve={project:`maas-skill-hub`,logStore:`cli`,endpoint:process.env.SKILLATLAS_SLS_ENDPOINT||`cn-hangzhou.log.aliyuncs.com`};function He(){let e=process.env.SKILLATLAS_DISABLE_TELEMETRY;return e===`1`||e===`true`}function Ue(){return Ve}function We(){return Le}function k(){e.existsSync(T)||e.mkdirSync(T,{recursive:!0})}function Ge(e){let t=Be[e];if(!t)throw Error(`Unknown asset type: ${e}. Valid types: ${Object.keys(Be).join(`, `)}`);return u.join(D,t)}function Ke(){return Re}function qe(e){Re=e.replace(/\/+$/,``)}function Je(){qe(Ie.pre.apiBase)}function Ye(){if(process.env.OPENCLAWMP_TOKEN)return process.env.OPENCLAWMP_TOKEN;if(k(),e.existsSync(Fe))try{let t=JSON.parse(e.readFileSync(Fe,`utf-8`));if(t.token)return t.token}catch{}return null}function Xe(t,n={}){k();let r={token:t,savedAt:new Date().toISOString(),...n};e.writeFileSync(Fe,JSON.stringify(r,null,2)+`
2
+ import e,{readFileSync as t}from"node:fs";import{cac as n}from"cac";import r from"chalk";import{agentRegister as i,checkForUpdate as a,logger as o}from"../lib/index.js";import{createHash as s,randomBytes as c,randomUUID as l}from"node:crypto";import u,{join as d}from"node:path";import f from"semver";import p from"node:os";import{spawn as m}from"node:child_process";import*as h from"@clack/prompts";import g from"axios";import _,{basename as v,dirname as y,join as b,normalize as x,relative as ee,resolve as S,sep as te}from"path";import{existsSync as C,writeFileSync as ne}from"fs";import re,{homedir as ie,platform as ae,tmpdir as oe}from"os";import*as se from"readline";import{Writable as ce}from"stream";import{cp as le,lstat as ue,mkdir as de,readFile as fe,readdir as pe,readlink as me,realpath as he,rename as ge,rm as w,stat as _e,symlink as ve,unlink as ye,writeFile as be}from"fs/promises";import{fileURLToPath as xe}from"url";import{info as Se}from"console";import{execFileSync as Ce}from"child_process";import{createConsola as we}from"consola";import Te from"secp256k1";var Ee=Object.create,De=Object.defineProperty,Oe=Object.getOwnPropertyDescriptor,ke=Object.getOwnPropertyNames,Ae=Object.getPrototypeOf,je=Object.prototype.hasOwnProperty,Me=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Ne=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=ke(t),a=0,o=i.length,s;a<o;a++)s=i[a],!je.call(e,s)&&s!==n&&De(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=Oe(t,s))||r.enumerable});return e},Pe=(e,t,n)=>(n=e==null?{}:Ee(Ae(e)),Ne(t||!e||!e.__esModule?De(n,`default`,{value:e,enumerable:!0}):n,e));const T=process.env.SKILLATLAS_CONFIG_DIR||u.join(p.homedir(),`.skillatlas`),Fe=u.join(T,`auth.json`),E=u.join(T,`skillatlas-meta.json`),Ie={production:{apiBase:`https://skillhub.wanuai.cn`},pre:{apiBase:`https://pre-skillhub.aliyun-inc.com`}},Le=process.env.SKILLATLAS_ENV||`production`;let Re=process.env.SKILLATLAS_API_BASE||Ie[Le].apiBase;const D=process.env.OPENCLAW_STATE_DIR||u.join(p.homedir(),`.openclaw`),O=u.join(D,`seafood-lock.json`),ze=u.join(D,`identity`,`device.json`),Be={skill:`skills`,plugin:`plugins`,trigger:`triggers`,channel:`channels`,experience:`experiences`},Ve={project:`maas-skill-hub`,logStore:`cli`,endpoint:process.env.SKILLATLAS_SLS_ENDPOINT||`cn-hangzhou.log.aliyuncs.com`};function He(){let e=process.env.SKILLATLAS_DISABLE_TELEMETRY;return e===`1`||e===`true`}function Ue(){return Ve}function We(){return Le}function k(){e.existsSync(T)||e.mkdirSync(T,{recursive:!0})}function Ge(e){let t=Be[e];if(!t)throw Error(`Unknown asset type: ${e}. Valid types: ${Object.keys(Be).join(`, `)}`);return u.join(D,t)}function Ke(){return Re}function qe(e){Re=e.replace(/\/+$/,``)}function Je(){qe(Ie.pre.apiBase)}function Ye(){if(process.env.OPENCLAWMP_TOKEN)return process.env.OPENCLAWMP_TOKEN;if(k(),e.existsSync(Fe))try{let t=JSON.parse(e.readFileSync(Fe,`utf-8`));if(t.token)return t.token}catch{}return null}function Xe(t,n={}){k();let r={token:t,savedAt:new Date().toISOString(),...n};e.writeFileSync(Fe,JSON.stringify(r,null,2)+`
3
3
  `)}function Ze(){if(!e.existsSync(ze))return null;try{return JSON.parse(e.readFileSync(ze,`utf-8`)).deviceId||null}catch{return null}}function Qe(){k();let t={};if(e.existsSync(E))try{if(t=JSON.parse(e.readFileSync(E,`utf-8`)),t.agentId)return t.agentId}catch{}return null}function $e(t,n,r,i){k();let a={};if(e.existsSync(E))try{a=JSON.parse(e.readFileSync(E,`utf-8`))}catch{}a.agentId=t,a.token=n,r&&(a.registeredAt=r),i&&(a.expiresAt=i),a.credentialsSavedAt=new Date().toISOString(),e.writeFileSync(E,JSON.stringify(a,null,2)+`
4
4
  `)}function et(){if(!e.existsSync(E))return null;try{let t=JSON.parse(e.readFileSync(E,`utf-8`));return t.agentId&&t.token?{agentId:t.agentId,token:t.token,registeredAt:t.registeredAt,expiresAt:t.expiresAt}:null}catch{return null}}function tt(){if(!e.existsSync(O)){let t=u.dirname(O);e.existsSync(t)||e.mkdirSync(t,{recursive:!0}),e.writeFileSync(O,JSON.stringify({version:1,installed:{}},null,2)+`
5
5
  `)}}function nt(){tt();try{return JSON.parse(e.readFileSync(O,`utf-8`))}catch{return{version:1,installed:{}}}}function rt(t,n,r){let i=nt();i.installed[t]={version:n,installedAt:new Date().toISOString(),location:r},e.writeFileSync(O,JSON.stringify(i,null,2)+`
6
6
  `)}function it(t){let n=nt();delete n.installed[t],e.writeFileSync(O,JSON.stringify(n,null,2)+`
7
- `)}var A={CONFIG_DIR:T,OPENCLAW_STATE_DIR:D,LOCKFILE:O,DEVICE_JSON:ze,ASSET_TYPES:Be,ensureConfigDir:k,installDirForType:Ge,getApiBase:Ke,setApiBase:qe,applyPreEnvironment:Je,getAuthToken:Ye,saveAuthToken:Xe,getDeviceId:Ze,initLockfile:tt,readLockfile:nt,updateLockfile:rt,removeLockfile:it,getAgentId:Qe,saveAgentCredentials:$e,getAgentCredentials:et,getSlsConfig:Ue,isTelemetryDisabled:He,getCurrentEnv:We};const at=`https://unpkg.com/skill-atlas-cli`,ot=`curl -fsSL ${at}/install.sh | bash`,st=`irm ${at}/install.ps1 | iex`;function ct(){return process.platform===`win32`?st:ot}function lt(e,t=`latest`){return new Promise(n=>{let r=m(`npm`,[`install`,`-g`,`${e}@${t}`,`--force`],{stdio:`inherit`,shell:!0});r.on(`close`,e=>n(e??0)),r.on(`error`,()=>n(1))})}function ut(){return new Promise(e=>{let t=process.platform===`win32`?m(`powershell.exe`,[`-NoProfile`,`-ExecutionPolicy`,`Bypass`,`-Command`,st],{stdio:`inherit`,windowsHide:!0}):m(`bash`,[`-c`,ot],{stdio:`inherit`});t.on(`close`,t=>e(t??0)),t.on(`error`,()=>e(1))})}const dt=`https://maas-skill-hub-cli.oss-cn-hangzhou.aliyuncs.com/uninstall.sh`,ft=`curl -fsSL ${dt} | bash`,pt=`irm ${dt} | iex`;function mt(){return process.platform===`win32`?pt:ft}function ht(){return new Promise(e=>{let t=process.platform===`win32`?m(`powershell.exe`,[`-NoProfile`,`-ExecutionPolicy`,`Bypass`,`-Command`,pt],{stdio:`inherit`,windowsHide:!0}):m(`bash`,[`-c`,ft],{stdio:`inherit`});t.on(`close`,t=>e(t??0)),t.on(`error`,()=>e(1))})}const gt=A.CONFIG_DIR;d(gt,`update-check.json`);var j=Pe(Me(((e,t)=>{let n=process||{},r=n.argv||[],i=n.env||{},a=!(i.NO_COLOR||r.includes(`--no-color`))&&(!!i.FORCE_COLOR||r.includes(`--color`)||n.platform===`win32`||(n.stdout||{}).isTTY&&i.TERM!==`dumb`||!!i.CI),o=(e,t,n=e)=>r=>{let i=``+r,a=i.indexOf(t,e.length);return~a?e+s(i,t,n,a)+t:e+i+t},s=(e,t,n,r)=>{let i=``,a=0;do i+=e.substring(a,r)+n,a=r+t.length,r=e.indexOf(t,a);while(~r);return i+e.substring(a)},c=(e=a)=>{let t=e?o:()=>String;return{isColorSupported:e,reset:t(`\x1B[0m`,`\x1B[0m`),bold:t(`\x1B[1m`,`\x1B[22m`,`\x1B[22m\x1B[1m`),dim:t(`\x1B[2m`,`\x1B[22m`,`\x1B[22m\x1B[2m`),italic:t(`\x1B[3m`,`\x1B[23m`),underline:t(`\x1B[4m`,`\x1B[24m`),inverse:t(`\x1B[7m`,`\x1B[27m`),hidden:t(`\x1B[8m`,`\x1B[28m`),strikethrough:t(`\x1B[9m`,`\x1B[29m`),black:t(`\x1B[30m`,`\x1B[39m`),red:t(`\x1B[31m`,`\x1B[39m`),green:t(`\x1B[32m`,`\x1B[39m`),yellow:t(`\x1B[33m`,`\x1B[39m`),blue:t(`\x1B[34m`,`\x1B[39m`),magenta:t(`\x1B[35m`,`\x1B[39m`),cyan:t(`\x1B[36m`,`\x1B[39m`),white:t(`\x1B[37m`,`\x1B[39m`),gray:t(`\x1B[90m`,`\x1B[39m`),bgBlack:t(`\x1B[40m`,`\x1B[49m`),bgRed:t(`\x1B[41m`,`\x1B[49m`),bgGreen:t(`\x1B[42m`,`\x1B[49m`),bgYellow:t(`\x1B[43m`,`\x1B[49m`),bgBlue:t(`\x1B[44m`,`\x1B[49m`),bgMagenta:t(`\x1B[45m`,`\x1B[49m`),bgCyan:t(`\x1B[46m`,`\x1B[49m`),bgWhite:t(`\x1B[47m`,`\x1B[49m`),blackBright:t(`\x1B[90m`,`\x1B[39m`),redBright:t(`\x1B[91m`,`\x1B[39m`),greenBright:t(`\x1B[92m`,`\x1B[39m`),yellowBright:t(`\x1B[93m`,`\x1B[39m`),blueBright:t(`\x1B[94m`,`\x1B[39m`),magentaBright:t(`\x1B[95m`,`\x1B[39m`),cyanBright:t(`\x1B[96m`,`\x1B[39m`),whiteBright:t(`\x1B[97m`,`\x1B[39m`),bgBlackBright:t(`\x1B[100m`,`\x1B[49m`),bgRedBright:t(`\x1B[101m`,`\x1B[49m`),bgGreenBright:t(`\x1B[102m`,`\x1B[49m`),bgYellowBright:t(`\x1B[103m`,`\x1B[49m`),bgBlueBright:t(`\x1B[104m`,`\x1B[49m`),bgMagentaBright:t(`\x1B[105m`,`\x1B[49m`),bgCyanBright:t(`\x1B[106m`,`\x1B[49m`),bgWhiteBright:t(`\x1B[107m`,`\x1B[49m`)}};t.exports=c(),t.exports.createColors=c}))(),1);const _t=[`token`,`password`,`secret`,`authorization`];let vt;function yt(){if(!vt){let e=A.getSlsConfig();vt=`https://${e.project}.${e.endpoint}/logstores/${e.logStore}/track?APIVersion=0.6.0`}return vt}const bt={os:p.platform(),nodeVersion:process.version};function xt(e){let t=e.toLowerCase();return _t.some(e=>t.includes(e))}function M(e,t){return e.length>t?e.slice(0,t)+`...`:e}function St(e){if(e instanceof Error){let t=e.name||`Error`,n=e.code,r=e.status??e.statusCode;return`${t}${n===void 0?``:` [${n}]`}${r===void 0?``:` (HTTP ${r})`}: ${M(e.message||`Unknown error`,200)}`}return M(String(e),200)}function Ct(e){if(!(e instanceof Error))return{};let t={},n=e.code,r=e.status??e.statusCode,i=e.responseData;return n!==void 0&&(t.errorCode=n),r!==void 0&&(t.errorHttpStatus=r),i!=null&&(t.errorResponseData=i),t}let wt;function Tt(e){wt=e}function Et(){let e=wt;return wt=void 0,e}const N=new Set;async function Dt(e=3e3){if(N.size===0)return;let t=setTimeout(()=>{},e);await Promise.race([Promise.allSettled([...N]),new Promise(t=>setTimeout(t,e))]),clearTimeout(t),N.clear()}function Ot(e,t){let n=JSON.stringify({__logs__:[e],__topic__:`cli-telemetry`,__source__:t}),r=fetch(yt(),{method:`POST`,headers:{"Content-Type":`application/json`,"x-log-apiversion":`0.6.0`,"x-log-bodyrawsize":String(Buffer.byteLength(n,`utf-8`))},body:n,signal:AbortSignal.timeout(5e3)}).then(()=>{}).catch(()=>{}).finally(()=>N.delete(r));N.add(r)}function kt(e){let t={};for(let[n,r]of Object.entries(e))r!=null&&(xt(n)||(t[n]=typeof r==`object`?M(JSON.stringify(r),500):String(r)));return t}function At(e,t,n,r){if(!A.isTelemetryDisabled())try{let i=A.getAgentId()??void 0,{error:a,...o}=r??{};Ot(kt({event:e,command:t,version:n,...bt,env:A.getCurrentEnv(),timestamp:Math.floor(Date.now()/1e3),...i&&{agentId:i},...o,...a!==void 0&&{error:St(a),...Ct(a)}}),i||`anonymous`)}catch{}}function jt(e,t=500){if(e==null)return``;if(typeof e==`string`)return M(e,t);if(typeof e!=`object`)return M(String(e),t);let n={};for(let[t,r]of Object.entries(e))xt(t)?n[t]=`***`:n[t]=r;return M(JSON.stringify(n),t)}function Mt(e){if(!A.isTelemetryDisabled())try{let t=A.getAgentId()??void 0;Ot(kt({event:`api_request`,method:e.method.toUpperCase(),path:e.path,...bt,env:A.getCurrentEnv(),timestamp:Math.floor(Date.now()/1e3),...t&&{agentId:t},duration:e.duration,...e.statusCode!==void 0&&{statusCode:e.statusCode},...e.requestData!==void 0&&{requestData:jt(e.requestData)},...e.responseData!==void 0&&{responseData:jt(e.responseData)},...e.error!==void 0&&{error:St(e.error),...Ct(e.error)}}),t||`anonymous`)}catch{}}var P={trackEvent:At,trackApiCall:Mt,flush:Dt,setLastError:Tt,consumeLastError:Et,_internal:{sanitizeError:St,extractErrorDetails:Ct,toSlsRecord:kt,sendToSls:Ot,getSlsUrl:yt,sanitizePayload:jt}},F=class extends Error{code;responseData;constructor(e,t,n){super(e),this.name=`ApiError`,this.code=t,this.responseData=n}};const I=g.create({timeout:1e4,headers:{"Content-Type":`application/json`}});I.interceptors.request.use(e=>(e.baseURL=A.getApiBase(),e.headers.set(`X-SkillAtlas-Agent-Id`,A.getAgentId()),e._slsStartTime=Date.now(),e)),I.interceptors.response.use(e=>{let t=e.config,n=t._slsStartTime,r=n?Date.now()-n:0,i=(t.method||`GET`).toUpperCase(),a=t.url||``,o=i===`GET`?t.params:t.data,s=String(t.headers?.[`Content-Type`]||``).includes(`multipart`);return P.trackApiCall({method:i,path:a,statusCode:e.status,duration:r,requestData:s?`[multipart/form-data]`:o,responseData:e.data}),e},e=>{if(e.config){let t=e.config,n=t._slsStartTime,r=n?Date.now()-n:0,i=(t.method||`GET`).toUpperCase(),a=t.url||``,o=i===`GET`?t.params:t.data,s=String(t.headers?.[`Content-Type`]||``).includes(`multipart`);P.trackApiCall({method:i,path:a,statusCode:e.response?.status,duration:r,requestData:s?`[multipart/form-data]`:o,responseData:e.response?.data,error:e})}if(e.response){let{data:t,statusText:n}=e.response;throw new F(t?.message||t?.error||n,t?.code,t)}throw e});async function L(e,t={}){let n=Object.fromEntries(Object.entries(t).filter(([,e])=>e!=null&&e!==``));return(await I.get(e,{params:n})).data}async function Nt(e,t={}){return(await I.post(e,t)).data}async function R(e,t,n){return(await I.post(e,t,{headers:{Authorization:`Bearer ${n}`}})).data}async function z(e,t,n){let r=Object.fromEntries(Object.entries(t).filter(([,e])=>e!=null&&e!==``));return(await I.get(e,{params:r,headers:{Authorization:`Bearer ${n}`}})).data}async function B(e){try{return await e()}catch(e){if(e instanceof F&&e.responseData&&typeof e.responseData==`object`)return e.responseData;throw e}}function Pt(e){let{items:t,page:n,pageSize:r,total:i}=(e&&typeof e==`object`&&`data`in e?e.data:e)??{};return{items:Array.isArray(t)?t:[],page:n??1,pageSize:r??20,total:i??0}}async function Ft(e={}){return Pt(await L(`/api/v1/skills`,{page:1,pageSize:20,...e}))}async function It(e){try{return await L(`/api/v1/skills/${e}`)}catch{return null}}async function Lt(e,t){let n=await I.get(`/api/v1/download`,{params:{slug:e,version:t},responseType:`arraybuffer`});return Buffer.from(n.data)}async function Rt(e){return B(()=>Nt(`/api/v1/agents/register`,e))}async function zt(e){return B(()=>L(`/api/v1/agents/${e}/challenge`))}async function Bt(e){return B(()=>Nt(`/api/v1/agents/authenticate`,e))}async function Vt(e,t){return B(()=>R(`/api/v1/community/skills/reviews`,e,t))}async function Ht(e,t){return(await I.delete(e,{headers:{Authorization:`Bearer ${t}`}})).data}async function Ut(e,t,n,r={},i){return(await I.post(e,t,{headers:{Authorization:`Bearer ${n}`,...r},...i!==void 0&&{timeout:i}})).data}async function Wt(e,t,n){return(await I.post(e,t,{headers:{Authorization:`Bearer ${n}`,"Content-Type":`multipart/form-data`}})).data}async function Gt(e,t,n){let r=new FormData,i=new Uint8Array(e.file);return r.append(`file`,new Blob([i]),n),r.append(`slug`,e.slug),r.append(`version`,e.version),r.append(`displayName`,e.displayName),e.summary&&r.append(`summary`,e.summary),e.tags&&e.tags.length>0&&e.tags.forEach(e=>r.append(`tags`,e)),B(()=>Wt(`/api/v1/skills/upload`,r,t))}async function Kt(e){return B(()=>L(`/api/v1/agents/${e}/skills/published`))}async function qt(e,t){return B(()=>z(`/api/v1/skills/uploads`,{page:1,pageSize:20,...e},t))}function Jt(){return crypto.randomUUID()}async function Yt(e,t,n,r,i){let a=r||Jt();return B(()=>Ut(`/api/v1/service-gateway/services/${e}/invoke`,t,n,{"X-Idempotency-Key":a},i))}async function Xt(e){let t=await L(`/api/v1/skills/combinations`,{...e});if(t&&typeof t==`object`&&`data`in t){let e=t.data;return Array.isArray(e)?e:[]}return Array.isArray(t)?t:[]}async function Zt(e,t){return B(()=>z(`/api/v1/agents/${e}`,{},t))}async function Qt(e,t){return B(()=>z(`/api/v1/agents/me/credits/records`,{page:1,pageSize:20,...e},t))}const $t=It;async function en(e,t){return B(()=>R(`/api/mailboxes`,e,t))}async function tn(e,t){return B(()=>z(`/api/mailboxes`,{page:1,pageSize:20,...e},t))}async function nn(e,t){return B(()=>R(`/api/mailboxes/emails`,e,t))}async function rn(e,t,n){return B(()=>z(`/api/mailboxes/emails/sent`,{address:e,page:1,pageSize:20,...t},n))}async function an(e,t,n){return B(()=>z(`/api/mailboxes/emails/sent/detail`,{address:e,emailId:t},n))}async function on(e,t,n){return B(()=>z(`/api/mailboxes/emails/received`,{address:e,page:1,pageSize:20,...t},n))}async function sn(e,t,n){return B(()=>z(`/api/mailboxes/emails/received/detail`,{address:e,emailId:t},n))}async function cn(e,t){return B(()=>R(`/api/vault/secrets`,e,t))}async function ln(e,t){return B(()=>z(`/api/vault/secrets/${encodeURIComponent(e)}`,{},t))}async function un(e){return B(()=>z(`/api/vault/secrets`,{},e))}async function dn(e,t){return B(()=>Ht(`/api/vault/secrets/${encodeURIComponent(e)}`,t))}const V=re.homedir(),{env:H}=process,fn=H.XDG_DATA_HOME||(V?_.join(V,`.local`,`share`):void 0),pn=H.XDG_CONFIG_HOME||(V?_.join(V,`.config`):void 0);H.XDG_STATE_HOME||V&&_.join(V,`.local`,`state`),H.XDG_CACHE_HOME||V&&_.join(V,`.cache`),H.XDG_RUNTIME_DIR;const mn=(H.XDG_DATA_DIRS||`/usr/local/share/:/usr/share/`).split(`:`);fn&&mn.unshift(fn);const hn=(H.XDG_CONFIG_DIRS||`/etc/xdg`).split(`:`);pn&&hn.unshift(pn);const U=ie(),gn=pn??b(U,`.config`),_n=process.env.CODEX_HOME?.trim()||b(U,`.codex`),vn=process.env.CLAUDE_CONFIG_DIR?.trim()||b(U,`.claude`);function yn(e=U,t=C){return t(b(e,`.openclaw`))?b(e,`.openclaw/skills`):t(b(e,`.clawdbot`))?b(e,`.clawdbot/skills`):t(b(e,`.moltbot`))?b(e,`.moltbot/skills`):b(e,`.openclaw/skills`)}const W={"claude-code":{name:`claude-code`,displayName:`Claude Code`,skillsDir:`.claude/skills`,globalSkillsDir:b(vn,`skills`),detectInstalled:async()=>C(vn)},openclaw:{name:`openclaw`,displayName:`OpenClaw`,skillsDir:`skills`,globalSkillsDir:yn(),detectInstalled:async()=>C(b(U,`.openclaw`))||C(b(U,`.clawdbot`))||C(b(U,`.moltbot`))},cline:{name:`cline`,displayName:`Cline`,skillsDir:`.cline/skills`,globalSkillsDir:b(U,`.cline`,`skills`),detectInstalled:async()=>C(b(U,`.cline`))},antigravity:{name:`antigravity`,displayName:`Antigravity`,skillsDir:`.agent/skills`,globalSkillsDir:b(U,`.gemini/antigravity/skills`),detectInstalled:async()=>C(b(U,`.gemini/antigravity`))},hermes:{name:`hermes`,displayName:`Hermes`,skillsDir:`.hermes/skills`,globalSkillsDir:b(U,`.hermes`,`skills`),detectInstalled:async()=>C(b(U,`.hermes`))},codex:{name:`codex`,displayName:`Codex`,skillsDir:`.agents/skills`,globalSkillsDir:b(_n,`skills`),detectInstalled:async()=>C(_n)||C(`/etc/codex`)},cursor:{name:`cursor`,displayName:`Cursor`,skillsDir:`.agents/skills`,globalSkillsDir:b(U,`.cursor/skills`),detectInstalled:async()=>C(b(U,`.cursor`))},"gemini-cli":{name:`gemini-cli`,displayName:`Gemini CLI`,skillsDir:`.agents/skills`,globalSkillsDir:b(U,`.gemini/skills`),detectInstalled:async()=>C(b(U,`.gemini`))},"github-copilot":{name:`github-copilot`,displayName:`GitHub Copilot`,skillsDir:`.github/skills`,globalSkillsDir:b(U,`.copilot/skills`),detectInstalled:async()=>C(b(U,`.copilot`))},"iflow-cli":{name:`iflow-cli`,displayName:`iFlow CLI`,skillsDir:`.iflow/skills`,globalSkillsDir:b(U,`.iflow/skills`),detectInstalled:async()=>C(b(U,`.iflow`))},kilo:{name:`kilo`,displayName:`Kilo Code`,skillsDir:`.kilocode/skills`,globalSkillsDir:b(U,`.kilocode/skills`),detectInstalled:async()=>C(b(U,`.kilocode`))},"kimi-cli":{name:`kimi-cli`,displayName:`Kimi Code CLI`,skillsDir:`.agents/skills`,globalSkillsDir:b(U,`.config/agents/skills`),detectInstalled:async()=>C(b(U,`.kimi`))},"kiro-cli":{name:`kiro-cli`,displayName:`Kiro CLI`,skillsDir:`.kiro/skills`,globalSkillsDir:b(U,`.kiro/skills`),detectInstalled:async()=>C(b(U,`.kiro`))},opencode:{name:`opencode`,displayName:`OpenCode`,skillsDir:`.agents/skills`,globalSkillsDir:b(gn,`opencode/skills`),detectInstalled:async()=>C(b(gn,`opencode`))},qoder:{name:`qoder`,displayName:`Qoder`,skillsDir:`.qoder/skills`,globalSkillsDir:b(U,`.qoder/skills`),detectInstalled:async()=>C(b(U,`.qoder`))},qoderwork:{name:`qoderwork`,displayName:`QoderWork`,skillsDir:`.qoderwork/skills`,globalSkillsDir:b(U,`.qoderwork/skills`),detectInstalled:async()=>C(b(U,`.qoderwork`))},"qwen-code":{name:`qwen-code`,displayName:`Qwen Code`,skillsDir:`.qwen/skills`,globalSkillsDir:b(U,`.qwen/skills`),detectInstalled:async()=>C(b(U,`.qwen`))},trae:{name:`trae`,displayName:`Trae`,skillsDir:`.trae/skills`,globalSkillsDir:b(U,`.trae/skills`),detectInstalled:async()=>C(b(U,`.trae`))},"trae-cn":{name:`trae-cn`,displayName:`Trae CN`,skillsDir:`.trae/skills`,globalSkillsDir:b(U,`.trae-cn/skills`),detectInstalled:async()=>C(b(U,`.trae-cn`))},windsurf:{name:`windsurf`,displayName:`Windsurf`,skillsDir:`.windsurf/skills`,globalSkillsDir:b(U,`.codeium/windsurf/skills`),detectInstalled:async()=>C(b(U,`.codeium/windsurf`))},universal:{name:`universal`,displayName:`Universal`,skillsDir:`.agents/skills`,globalSkillsDir:b(gn,`agents/skills`),showInUniversalList:!1,detectInstalled:async()=>!1}},bn=new ce({write(e,t,n){n()}}),xn=j.default.green(`◆`),Sn=j.default.red(`■`),Cn=j.default.green(`◇`),wn=j.default.green(`●`),Tn=j.default.dim(`○`);j.default.green(`✓`);const En=j.default.green(`•`),G=j.default.dim(`│`),K=j.default.dim(`─`),Dn=Symbol(`cancel`);async function On(e){let{message:t,items:n,maxVisible:r=8,initialSelected:i=[],required:a=!1,lockedSection:o,leadingSpacer:s=0}=e;return new Promise(e=>{let c=se.createInterface({input:process.stdin,output:bn,terminal:!!process.stdin.isTTY});process.stdin.isTTY&&process.stdin.setRawMode(!0),se.emitKeypressEvents(process.stdin,c);let l=``,u=0,d=new Set(i),f=0,p=o?o.items.map(e=>e.value):[],m=(e,t)=>{if(!t)return!0;let n=t.toLowerCase();return e.label.toLowerCase().includes(n)||String(e.value).toLowerCase().includes(n)},h=()=>n.filter(e=>m(e,l)),g=process.stderr.isTTY?process.stderr:process.stdout,_=()=>{if(f>0&&g.isTTY)for(let e=0;e<f;e++)g.write(`\x1B[1A\x1B[2K`)},v=(e=`active`)=>{_();let i=[],a=h(),c=e===`active`?xn:e===`cancel`?Sn:Cn;for(let e=0;e<s;e++)i.push(`${G}`);if(i.push(`${c} ${j.default.bold(t)}`),e===`active`){if(o&&o.items.length>0){i.push(`${G}`);let e=`${j.default.bold(o.title)} ${j.default.dim(`── always included`)}`;i.push(`${G} ${K}${K} ${e} ${K.repeat(12)}`);for(let e of o.items)i.push(`${G} ${En} ${j.default.bold(e.label)}`);i.push(`${G}`),i.push(`${G} ${K}${K} ${j.default.bold(`Additional agents`)} ${K.repeat(29)}`)}let e=`${G} ${j.default.dim(`Search:`)} ${l}${j.default.inverse(` `)}`;i.push(e),i.push(`${G} ${j.default.dim(`↑↓ move, space select, enter confirm`)}`),i.push(`${G}`);let t=Math.max(0,Math.min(u-Math.floor(r/2),a.length-r)),s=Math.min(a.length,t+r),c=a.slice(t,s);if(a.length===0)i.push(`${G} ${j.default.dim(`No matches found`)}`);else{for(let e=0;e<c.length;e++){let n=c[e],r=t+e,a=d.has(n.value),o=r===u,s=a?wn:Tn,l=o?j.default.underline(n.label):n.label,f=n.hint?j.default.dim(` (${n.hint})`):``,p=o?j.default.cyan(`❯`):` `;i.push(`${G} ${p} ${s} ${l}${f}`)}let e=t,n=a.length-s;if(e>0||n>0){let t=[];e>0&&t.push(`↑ ${e} more`),n>0&&t.push(`↓ ${n} more`),i.push(`${G} ${j.default.dim(t.join(` `))}`)}}i.push(`${G}`);let f=[...o?o.items.map(e=>e.label):[],...n.filter(e=>d.has(e.value)).map(e=>e.label)];if(f.length===0)i.push(`${G} ${j.default.dim(`Selected: (none)`)}`);else{let e=f.length<=3?f.join(`, `):`${f.slice(0,3).join(`, `)} +${f.length-3} more`;i.push(`${G} ${j.default.green(`Selected:`)} ${e}`)}i.push(`${j.default.dim(`└`)}`)}else if(e===`submit`){let e=[...o?o.items.map(e=>e.label):[],...n.filter(e=>d.has(e.value)).map(e=>e.label)];i.push(`${G} ${j.default.dim(e.join(`, `))}`)}else e===`cancel`&&i.push(`${G} ${j.default.strikethrough(j.default.dim(`Cancelled`))}`);g.write(i.join(`
7
+ `)}var A={CONFIG_DIR:T,OPENCLAW_STATE_DIR:D,LOCKFILE:O,DEVICE_JSON:ze,ASSET_TYPES:Be,ensureConfigDir:k,installDirForType:Ge,getApiBase:Ke,setApiBase:qe,applyPreEnvironment:Je,getAuthToken:Ye,saveAuthToken:Xe,getDeviceId:Ze,initLockfile:tt,readLockfile:nt,updateLockfile:rt,removeLockfile:it,getAgentId:Qe,saveAgentCredentials:$e,getAgentCredentials:et,getSlsConfig:Ue,isTelemetryDisabled:He,getCurrentEnv:We};const at=`https://unpkg.com/skill-atlas-cli`,ot=`curl -fsSL ${at}/install.sh | bash`,st=`irm ${at}/install.ps1 | iex`;function ct(){return process.platform===`win32`?st:ot}function lt(e,t=`latest`){return new Promise(n=>{let r=m(`npm`,[`install`,`-g`,`${e}@${t}`,`--force`],{stdio:`inherit`,shell:!0});r.on(`close`,e=>n(e??0)),r.on(`error`,()=>n(1))})}function ut(){return new Promise(e=>{let t=process.platform===`win32`?m(`powershell.exe`,[`-NoProfile`,`-ExecutionPolicy`,`Bypass`,`-Command`,st],{stdio:`inherit`,windowsHide:!0}):m(`bash`,[`-c`,ot],{stdio:`inherit`});t.on(`close`,t=>e(t??0)),t.on(`error`,()=>e(1))})}const dt=`https://maas-skill-hub-cli.oss-cn-hangzhou.aliyuncs.com/uninstall.sh`,ft=`curl -fsSL ${dt} | bash`,pt=`irm ${dt} | iex`;function mt(){return process.platform===`win32`?pt:ft}function ht(){return new Promise(e=>{let t=process.platform===`win32`?m(`powershell.exe`,[`-NoProfile`,`-ExecutionPolicy`,`Bypass`,`-Command`,pt],{stdio:`inherit`,windowsHide:!0}):m(`bash`,[`-c`,ft],{stdio:`inherit`});t.on(`close`,t=>e(t??0)),t.on(`error`,()=>e(1))})}const gt=A.CONFIG_DIR;d(gt,`update-check.json`);var j=Pe(Me(((e,t)=>{let n=process||{},r=n.argv||[],i=n.env||{},a=!(i.NO_COLOR||r.includes(`--no-color`))&&(!!i.FORCE_COLOR||r.includes(`--color`)||n.platform===`win32`||(n.stdout||{}).isTTY&&i.TERM!==`dumb`||!!i.CI),o=(e,t,n=e)=>r=>{let i=``+r,a=i.indexOf(t,e.length);return~a?e+s(i,t,n,a)+t:e+i+t},s=(e,t,n,r)=>{let i=``,a=0;do i+=e.substring(a,r)+n,a=r+t.length,r=e.indexOf(t,a);while(~r);return i+e.substring(a)},c=(e=a)=>{let t=e?o:()=>String;return{isColorSupported:e,reset:t(`\x1B[0m`,`\x1B[0m`),bold:t(`\x1B[1m`,`\x1B[22m`,`\x1B[22m\x1B[1m`),dim:t(`\x1B[2m`,`\x1B[22m`,`\x1B[22m\x1B[2m`),italic:t(`\x1B[3m`,`\x1B[23m`),underline:t(`\x1B[4m`,`\x1B[24m`),inverse:t(`\x1B[7m`,`\x1B[27m`),hidden:t(`\x1B[8m`,`\x1B[28m`),strikethrough:t(`\x1B[9m`,`\x1B[29m`),black:t(`\x1B[30m`,`\x1B[39m`),red:t(`\x1B[31m`,`\x1B[39m`),green:t(`\x1B[32m`,`\x1B[39m`),yellow:t(`\x1B[33m`,`\x1B[39m`),blue:t(`\x1B[34m`,`\x1B[39m`),magenta:t(`\x1B[35m`,`\x1B[39m`),cyan:t(`\x1B[36m`,`\x1B[39m`),white:t(`\x1B[37m`,`\x1B[39m`),gray:t(`\x1B[90m`,`\x1B[39m`),bgBlack:t(`\x1B[40m`,`\x1B[49m`),bgRed:t(`\x1B[41m`,`\x1B[49m`),bgGreen:t(`\x1B[42m`,`\x1B[49m`),bgYellow:t(`\x1B[43m`,`\x1B[49m`),bgBlue:t(`\x1B[44m`,`\x1B[49m`),bgMagenta:t(`\x1B[45m`,`\x1B[49m`),bgCyan:t(`\x1B[46m`,`\x1B[49m`),bgWhite:t(`\x1B[47m`,`\x1B[49m`),blackBright:t(`\x1B[90m`,`\x1B[39m`),redBright:t(`\x1B[91m`,`\x1B[39m`),greenBright:t(`\x1B[92m`,`\x1B[39m`),yellowBright:t(`\x1B[93m`,`\x1B[39m`),blueBright:t(`\x1B[94m`,`\x1B[39m`),magentaBright:t(`\x1B[95m`,`\x1B[39m`),cyanBright:t(`\x1B[96m`,`\x1B[39m`),whiteBright:t(`\x1B[97m`,`\x1B[39m`),bgBlackBright:t(`\x1B[100m`,`\x1B[49m`),bgRedBright:t(`\x1B[101m`,`\x1B[49m`),bgGreenBright:t(`\x1B[102m`,`\x1B[49m`),bgYellowBright:t(`\x1B[103m`,`\x1B[49m`),bgBlueBright:t(`\x1B[104m`,`\x1B[49m`),bgMagentaBright:t(`\x1B[105m`,`\x1B[49m`),bgCyanBright:t(`\x1B[106m`,`\x1B[49m`),bgWhiteBright:t(`\x1B[107m`,`\x1B[49m`)}};t.exports=c(),t.exports.createColors=c}))(),1);const _t=[`token`,`password`,`secret`,`authorization`];let vt;function yt(){if(!vt){let e=A.getSlsConfig();vt=`https://${e.project}.${e.endpoint}/logstores/${e.logStore}/track?APIVersion=0.6.0`}return vt}const bt={os:p.platform(),nodeVersion:process.version};function xt(e){let t=e.toLowerCase();return _t.some(e=>t.includes(e))}function M(e,t){return e.length>t?e.slice(0,t)+`...`:e}function St(e){if(e instanceof Error){let t=e.name||`Error`,n=e.code,r=e.status??e.statusCode;return`${t}${n===void 0?``:` [${n}]`}${r===void 0?``:` (HTTP ${r})`}: ${M(e.message||`Unknown error`,200)}`}return M(String(e),200)}function Ct(e){if(!(e instanceof Error))return{};let t={},n=e.code,r=e.status??e.statusCode,i=e.responseData;return n!==void 0&&(t.errorCode=n),r!==void 0&&(t.errorHttpStatus=r),i!=null&&(t.errorResponseData=i),t}let wt;function Tt(e){wt=e}function Et(){let e=wt;return wt=void 0,e}const N=new Set;async function Dt(e=3e3){if(N.size===0)return;let t=setTimeout(()=>{},e);await Promise.race([Promise.allSettled([...N]),new Promise(t=>setTimeout(t,e))]),clearTimeout(t),N.clear()}function Ot(e,t){let n=JSON.stringify({__logs__:[e],__topic__:`cli-telemetry`,__source__:t}),r=fetch(yt(),{method:`POST`,headers:{"Content-Type":`application/json`,"x-log-apiversion":`0.6.0`,"x-log-bodyrawsize":String(Buffer.byteLength(n,`utf-8`))},body:n,signal:AbortSignal.timeout(5e3)}).then(()=>{}).catch(()=>{}).finally(()=>N.delete(r));N.add(r)}function kt(e){let t={};for(let[n,r]of Object.entries(e))r!=null&&(xt(n)||(t[n]=typeof r==`object`?M(JSON.stringify(r),500):String(r)));return t}function At(e,t,n,r){if(!A.isTelemetryDisabled())try{let i=A.getAgentId()??void 0,{error:a,...o}=r??{};Ot(kt({event:e,command:t,version:n,...bt,env:A.getCurrentEnv(),timestamp:Math.floor(Date.now()/1e3),...i&&{agentId:i},...o,...a!==void 0&&{error:St(a),...Ct(a)}}),i||`anonymous`)}catch{}}function jt(e,t=500){if(e==null)return``;if(typeof e==`string`)return M(e,t);if(typeof e!=`object`)return M(String(e),t);let n={};for(let[t,r]of Object.entries(e))xt(t)?n[t]=`***`:n[t]=r;return M(JSON.stringify(n),t)}function Mt(e){if(!A.isTelemetryDisabled())try{let t=A.getAgentId()??void 0;Ot(kt({event:`api_request`,method:e.method.toUpperCase(),path:e.path,...e.fullUrl!==void 0&&{fullUrl:e.fullUrl},...bt,env:A.getCurrentEnv(),timestamp:Math.floor(Date.now()/1e3),...t&&{agentId:t},duration:e.duration,...e.statusCode!==void 0&&{statusCode:e.statusCode},...e.requestData!==void 0&&{requestData:jt(e.requestData)},...e.responseData!==void 0&&{responseData:jt(e.responseData)},...e.error!==void 0&&{error:St(e.error),...Ct(e.error)}}),t||`anonymous`)}catch{}}var P={trackEvent:At,trackApiCall:Mt,flush:Dt,setLastError:Tt,consumeLastError:Et,_internal:{sanitizeError:St,extractErrorDetails:Ct,toSlsRecord:kt,sendToSls:Ot,getSlsUrl:yt,sanitizePayload:jt}},F=class extends Error{code;responseData;constructor(e,t,n){super(e),this.name=`ApiError`,this.code=t,this.responseData=n}};const I=g.create({timeout:1e4,headers:{"Content-Type":`application/json`}});I.interceptors.request.use(e=>(e.baseURL=A.getApiBase(),e.headers.set(`X-SkillAtlas-Agent-Id`,A.getAgentId()),e._slsStartTime=Date.now(),e)),I.interceptors.response.use(e=>{let t=e.config,n=t._slsStartTime,r=n?Date.now()-n:0,i=(t.method||`GET`).toUpperCase(),a=t.url||``,o=`${t.baseURL||``}${a}`,s=i===`GET`?t.params:t.data,c=String(t.headers?.[`Content-Type`]||``).includes(`multipart`);return P.trackApiCall({method:i,path:a,fullUrl:o,statusCode:e.status,duration:r,requestData:c?`[multipart/form-data]`:s,responseData:e.data}),e},e=>{if(e.config){let t=e.config,n=t._slsStartTime,r=n?Date.now()-n:0,i=(t.method||`GET`).toUpperCase(),a=t.url||``,o=`${t.baseURL||``}${a}`,s=i===`GET`?t.params:t.data,c=String(t.headers?.[`Content-Type`]||``).includes(`multipart`);P.trackApiCall({method:i,path:a,fullUrl:o,statusCode:e.response?.status,duration:r,requestData:c?`[multipart/form-data]`:s,responseData:e.response?.data,error:e})}if(e.response){let{data:t,statusText:n}=e.response;throw new F(t?.message||t?.error||n,t?.code,t)}throw e});async function L(e,t={}){let n=Object.fromEntries(Object.entries(t).filter(([,e])=>e!=null&&e!==``));return(await I.get(e,{params:n})).data}async function Nt(e,t={}){return(await I.post(e,t)).data}async function R(e,t,n){return(await I.post(e,t,{headers:{Authorization:`Bearer ${n}`}})).data}async function z(e,t,n){let r=Object.fromEntries(Object.entries(t).filter(([,e])=>e!=null&&e!==``));return(await I.get(e,{params:r,headers:{Authorization:`Bearer ${n}`}})).data}async function B(e){try{return await e()}catch(e){if(e instanceof F&&e.responseData&&typeof e.responseData==`object`)return e.responseData;throw e}}function Pt(e){let{items:t,page:n,pageSize:r,total:i}=(e&&typeof e==`object`&&`data`in e?e.data:e)??{};return{items:Array.isArray(t)?t:[],page:n??1,pageSize:r??20,total:i??0}}async function Ft(e={}){return Pt(await L(`/api/v1/skills`,{page:1,pageSize:20,...e}))}async function It(e){try{return await L(`/api/v1/skills/${e}`)}catch{return null}}async function Lt(e,t){let n=await I.get(`/api/v1/download`,{params:{slug:e,version:t},responseType:`arraybuffer`});return Buffer.from(n.data)}async function Rt(e){return B(()=>Nt(`/api/v1/agents/register`,e))}async function zt(e){return B(()=>L(`/api/v1/agents/${e}/challenge`))}async function Bt(e){return B(()=>Nt(`/api/v1/agents/authenticate`,e))}async function Vt(e,t){return B(()=>R(`/api/v1/community/skills/reviews`,e,t))}async function Ht(e,t){return(await I.delete(e,{headers:{Authorization:`Bearer ${t}`}})).data}async function Ut(e,t,n,r={},i){return(await I.post(e,t,{headers:{Authorization:`Bearer ${n}`,...r},...i!==void 0&&{timeout:i}})).data}async function Wt(e,t,n){return(await I.post(e,t,{headers:{Authorization:`Bearer ${n}`,"Content-Type":`multipart/form-data`}})).data}async function Gt(e,t,n){let r=new FormData,i=new Uint8Array(e.file);return r.append(`file`,new Blob([i]),n),r.append(`slug`,e.slug),r.append(`version`,e.version),r.append(`displayName`,e.displayName),e.summary&&r.append(`summary`,e.summary),e.tags&&e.tags.length>0&&e.tags.forEach(e=>r.append(`tags`,e)),B(()=>Wt(`/api/v1/skills/upload`,r,t))}async function Kt(e){return B(()=>L(`/api/v1/agents/${e}/skills/published`))}async function qt(e,t){return B(()=>z(`/api/v1/skills/uploads`,{page:1,pageSize:20,...e},t))}function Jt(){return crypto.randomUUID()}async function Yt(e,t,n,r,i){let a=r||Jt();return B(()=>Ut(`/api/v1/service-gateway/services/${e}/invoke`,t,n,{"X-Idempotency-Key":a},i))}async function Xt(e){let t=await L(`/api/v1/skills/combinations`,{...e});if(t&&typeof t==`object`&&`data`in t){let e=t.data;return Array.isArray(e)?e:[]}return Array.isArray(t)?t:[]}async function Zt(e,t){return B(()=>z(`/api/v1/agents/${e}`,{},t))}async function Qt(e,t){return B(()=>z(`/api/v1/agents/me/credits/records`,{page:1,pageSize:20,...e},t))}const $t=It;async function en(e,t){return B(()=>R(`/api/mailboxes`,e,t))}async function tn(e,t){return B(()=>z(`/api/mailboxes`,{page:1,pageSize:20,...e},t))}async function nn(e,t){return B(()=>R(`/api/mailboxes/emails`,e,t))}async function rn(e,t,n){return B(()=>z(`/api/mailboxes/emails/sent`,{address:e,page:1,pageSize:20,...t},n))}async function an(e,t,n){return B(()=>z(`/api/mailboxes/emails/sent/detail`,{address:e,emailId:t},n))}async function on(e,t,n){return B(()=>z(`/api/mailboxes/emails/received`,{address:e,page:1,pageSize:20,...t},n))}async function sn(e,t,n){return B(()=>z(`/api/mailboxes/emails/received/detail`,{address:e,emailId:t},n))}async function cn(e,t){return B(()=>R(`/api/vault/secrets`,e,t))}async function ln(e,t){return B(()=>z(`/api/vault/secrets/${encodeURIComponent(e)}`,{},t))}async function un(e){return B(()=>z(`/api/vault/secrets`,{},e))}async function dn(e,t){return B(()=>Ht(`/api/vault/secrets/${encodeURIComponent(e)}`,t))}const V=re.homedir(),{env:H}=process,fn=H.XDG_DATA_HOME||(V?_.join(V,`.local`,`share`):void 0),pn=H.XDG_CONFIG_HOME||(V?_.join(V,`.config`):void 0);H.XDG_STATE_HOME||V&&_.join(V,`.local`,`state`),H.XDG_CACHE_HOME||V&&_.join(V,`.cache`),H.XDG_RUNTIME_DIR;const mn=(H.XDG_DATA_DIRS||`/usr/local/share/:/usr/share/`).split(`:`);fn&&mn.unshift(fn);const hn=(H.XDG_CONFIG_DIRS||`/etc/xdg`).split(`:`);pn&&hn.unshift(pn);const U=ie(),gn=pn??b(U,`.config`),_n=process.env.CODEX_HOME?.trim()||b(U,`.codex`),vn=process.env.CLAUDE_CONFIG_DIR?.trim()||b(U,`.claude`);function yn(e=U,t=C){return t(b(e,`.openclaw`))?b(e,`.openclaw/skills`):t(b(e,`.clawdbot`))?b(e,`.clawdbot/skills`):t(b(e,`.moltbot`))?b(e,`.moltbot/skills`):b(e,`.openclaw/skills`)}const W={"claude-code":{name:`claude-code`,displayName:`Claude Code`,skillsDir:`.claude/skills`,globalSkillsDir:b(vn,`skills`),detectInstalled:async()=>C(vn)},openclaw:{name:`openclaw`,displayName:`OpenClaw`,skillsDir:`skills`,globalSkillsDir:yn(),detectInstalled:async()=>C(b(U,`.openclaw`))||C(b(U,`.clawdbot`))||C(b(U,`.moltbot`))},cline:{name:`cline`,displayName:`Cline`,skillsDir:`.cline/skills`,globalSkillsDir:b(U,`.cline`,`skills`),detectInstalled:async()=>C(b(U,`.cline`))},antigravity:{name:`antigravity`,displayName:`Antigravity`,skillsDir:`.agent/skills`,globalSkillsDir:b(U,`.gemini/antigravity/skills`),detectInstalled:async()=>C(b(U,`.gemini/antigravity`))},hermes:{name:`hermes`,displayName:`Hermes`,skillsDir:`.hermes/skills`,globalSkillsDir:b(U,`.hermes`,`skills`),detectInstalled:async()=>C(b(U,`.hermes`))},codex:{name:`codex`,displayName:`Codex`,skillsDir:`.agents/skills`,globalSkillsDir:b(_n,`skills`),detectInstalled:async()=>C(_n)||C(`/etc/codex`)},cursor:{name:`cursor`,displayName:`Cursor`,skillsDir:`.agents/skills`,globalSkillsDir:b(U,`.cursor/skills`),detectInstalled:async()=>C(b(U,`.cursor`))},"gemini-cli":{name:`gemini-cli`,displayName:`Gemini CLI`,skillsDir:`.agents/skills`,globalSkillsDir:b(U,`.gemini/skills`),detectInstalled:async()=>C(b(U,`.gemini`))},"github-copilot":{name:`github-copilot`,displayName:`GitHub Copilot`,skillsDir:`.github/skills`,globalSkillsDir:b(U,`.copilot/skills`),detectInstalled:async()=>C(b(U,`.copilot`))},"iflow-cli":{name:`iflow-cli`,displayName:`iFlow CLI`,skillsDir:`.iflow/skills`,globalSkillsDir:b(U,`.iflow/skills`),detectInstalled:async()=>C(b(U,`.iflow`))},kilo:{name:`kilo`,displayName:`Kilo Code`,skillsDir:`.kilocode/skills`,globalSkillsDir:b(U,`.kilocode/skills`),detectInstalled:async()=>C(b(U,`.kilocode`))},"kimi-cli":{name:`kimi-cli`,displayName:`Kimi Code CLI`,skillsDir:`.agents/skills`,globalSkillsDir:b(U,`.config/agents/skills`),detectInstalled:async()=>C(b(U,`.kimi`))},"kiro-cli":{name:`kiro-cli`,displayName:`Kiro CLI`,skillsDir:`.kiro/skills`,globalSkillsDir:b(U,`.kiro/skills`),detectInstalled:async()=>C(b(U,`.kiro`))},opencode:{name:`opencode`,displayName:`OpenCode`,skillsDir:`.agents/skills`,globalSkillsDir:b(gn,`opencode/skills`),detectInstalled:async()=>C(b(gn,`opencode`))},qoder:{name:`qoder`,displayName:`Qoder`,skillsDir:`.qoder/skills`,globalSkillsDir:b(U,`.qoder/skills`),detectInstalled:async()=>C(b(U,`.qoder`))},qoderwork:{name:`qoderwork`,displayName:`QoderWork`,skillsDir:`.qoderwork/skills`,globalSkillsDir:b(U,`.qoderwork/skills`),detectInstalled:async()=>C(b(U,`.qoderwork`))},"qwen-code":{name:`qwen-code`,displayName:`Qwen Code`,skillsDir:`.qwen/skills`,globalSkillsDir:b(U,`.qwen/skills`),detectInstalled:async()=>C(b(U,`.qwen`))},trae:{name:`trae`,displayName:`Trae`,skillsDir:`.trae/skills`,globalSkillsDir:b(U,`.trae/skills`),detectInstalled:async()=>C(b(U,`.trae`))},"trae-cn":{name:`trae-cn`,displayName:`Trae CN`,skillsDir:`.trae/skills`,globalSkillsDir:b(U,`.trae-cn/skills`),detectInstalled:async()=>C(b(U,`.trae-cn`))},windsurf:{name:`windsurf`,displayName:`Windsurf`,skillsDir:`.windsurf/skills`,globalSkillsDir:b(U,`.codeium/windsurf/skills`),detectInstalled:async()=>C(b(U,`.codeium/windsurf`))},universal:{name:`universal`,displayName:`Universal`,skillsDir:`.agents/skills`,globalSkillsDir:b(gn,`agents/skills`),showInUniversalList:!1,detectInstalled:async()=>!1}},bn=new ce({write(e,t,n){n()}}),xn=j.default.green(`◆`),Sn=j.default.red(`■`),Cn=j.default.green(`◇`),wn=j.default.green(`●`),Tn=j.default.dim(`○`);j.default.green(`✓`);const En=j.default.green(`•`),G=j.default.dim(`│`),K=j.default.dim(`─`),Dn=Symbol(`cancel`);async function On(e){let{message:t,items:n,maxVisible:r=8,initialSelected:i=[],required:a=!1,lockedSection:o,leadingSpacer:s=0}=e;return new Promise(e=>{let c=se.createInterface({input:process.stdin,output:bn,terminal:!!process.stdin.isTTY});process.stdin.isTTY&&process.stdin.setRawMode(!0),se.emitKeypressEvents(process.stdin,c);let l=``,u=0,d=new Set(i),f=0,p=o?o.items.map(e=>e.value):[],m=(e,t)=>{if(!t)return!0;let n=t.toLowerCase();return e.label.toLowerCase().includes(n)||String(e.value).toLowerCase().includes(n)},h=()=>n.filter(e=>m(e,l)),g=process.stderr.isTTY?process.stderr:process.stdout,_=()=>{if(f>0&&g.isTTY)for(let e=0;e<f;e++)g.write(`\x1B[1A\x1B[2K`)},v=(e=`active`)=>{_();let i=[],a=h(),c=e===`active`?xn:e===`cancel`?Sn:Cn;for(let e=0;e<s;e++)i.push(`${G}`);if(i.push(`${c} ${j.default.bold(t)}`),e===`active`){if(o&&o.items.length>0){i.push(`${G}`);let e=`${j.default.bold(o.title)} ${j.default.dim(`── always included`)}`;i.push(`${G} ${K}${K} ${e} ${K.repeat(12)}`);for(let e of o.items)i.push(`${G} ${En} ${j.default.bold(e.label)}`);i.push(`${G}`),i.push(`${G} ${K}${K} ${j.default.bold(`Additional agents`)} ${K.repeat(29)}`)}let e=`${G} ${j.default.dim(`Search:`)} ${l}${j.default.inverse(` `)}`;i.push(e),i.push(`${G} ${j.default.dim(`↑↓ move, space select, enter confirm`)}`),i.push(`${G}`);let t=Math.max(0,Math.min(u-Math.floor(r/2),a.length-r)),s=Math.min(a.length,t+r),c=a.slice(t,s);if(a.length===0)i.push(`${G} ${j.default.dim(`No matches found`)}`);else{for(let e=0;e<c.length;e++){let n=c[e],r=t+e,a=d.has(n.value),o=r===u,s=a?wn:Tn,l=o?j.default.underline(n.label):n.label,f=n.hint?j.default.dim(` (${n.hint})`):``,p=o?j.default.cyan(`❯`):` `;i.push(`${G} ${p} ${s} ${l}${f}`)}let e=t,n=a.length-s;if(e>0||n>0){let t=[];e>0&&t.push(`↑ ${e} more`),n>0&&t.push(`↓ ${n} more`),i.push(`${G} ${j.default.dim(t.join(` `))}`)}}i.push(`${G}`);let f=[...o?o.items.map(e=>e.label):[],...n.filter(e=>d.has(e.value)).map(e=>e.label)];if(f.length===0)i.push(`${G} ${j.default.dim(`Selected: (none)`)}`);else{let e=f.length<=3?f.join(`, `):`${f.slice(0,3).join(`, `)} +${f.length-3} more`;i.push(`${G} ${j.default.green(`Selected:`)} ${e}`)}i.push(`${j.default.dim(`└`)}`)}else if(e===`submit`){let e=[...o?o.items.map(e=>e.label):[],...n.filter(e=>d.has(e.value)).map(e=>e.label)];i.push(`${G} ${j.default.dim(e.join(`, `))}`)}else e===`cancel`&&i.push(`${G} ${j.default.strikethrough(j.default.dim(`Cancelled`))}`);g.write(i.join(`
8
8
  `)+`
9
9
  `),f=i.length},y=()=>{process.stdin.removeListener(`keypress`,ee),process.stdin.isTTY&&process.stdin.setRawMode(!1),c.close()},b=()=>{a&&d.size===0&&p.length===0||(v(`submit`),y(),e([...p,...Array.from(d)]))},x=()=>{v(`cancel`),y(),e(Dn)},ee=(e,t)=>{if(!t)return;let n=h();if(t.name===`return`){b();return}if(t.name===`escape`||t.ctrl&&t.name===`c`){x();return}if(t.name===`up`){u=Math.max(0,u-1),v();return}if(t.name===`down`){u=Math.min(n.length-1,u+1),v();return}if(t.name===`space`){let e=n[u];e&&(d.has(e.value)?d.delete(e.value):d.add(e.value)),v();return}if(t.name===`backspace`){l=l.slice(0,-1),u=0,v();return}if(t.sequence&&!t.ctrl&&!t.meta&&t.sequence.length===1){l+=t.sequence,u=0,v();return}};process.stdin.on(`keypress`,ee),v()})}const kn=y(xe(import.meta.url));function q(e,t){let n=x(S(e)),r=x(S(t));return r.startsWith(n+te)||r===n}async function An(e){let t=S(e),n=y(t),r=v(t);try{return b(await he(n),r)}catch{return t}}function jn(e,t){return S(y(e),t)}async function Mn(e,t){try{let n=S(e),r=S(t),[i,a]=await Promise.all([he(n).catch(()=>n),he(r).catch(()=>r)]);if(i===a||await An(e)===await An(t))return!0;try{if((await ue(t)).isSymbolicLink()){if(jn(t,await me(t))===n)return!0;await w(t)}else await w(t,{recursive:!0})}catch(e){if(e&&typeof e==`object`&&`code`in e&&e.code===`ELOOP`)try{await w(t,{force:!0})}catch{}}let o=y(t);return await de(o,{recursive:!0}),await ve(ee(await An(o),e),t,ae()===`win32`?`junction`:void 0),!0}catch{return!1}}async function Nn(e){try{await w(e,{recursive:!0,force:!0})}catch{}await de(e,{recursive:!0})}async function Pn(e,t){let n=!1,r=e.currentVersion?.version??``;if(!e.slug||!r)return Yn(e,t),await Vn(t),!1;let i=await Lt(e.slug,r);return i&&i.length>0&&(n=await Wn(i,t)),n||(Se(`No package available, generating from metadata...`),Yn(e,t),await Vn(t),console.log(` Generated: SKILL.md from metadata`)),n}function Fn(e,t,n){let r=W[e],i=t?ie():n||process.cwd();return t?r.globalSkillsDir===void 0?b(i,r.skillsDir):r.globalSkillsDir:b(i,r.skillsDir)}async function In(e,t,n={}){let r=W[t],i=n.global??!1,a=n.cwd||process.cwd(),o=n.mode??`symlink`,s=n.path?.trim(),c=Ln(e.slug),l;if(s){let n=S(s);if(l=b(n,c),!q(n,l))return{success:!1,path:l,mode:`copy`,error:`Invalid path: potential path traversal detected`};try{await Nn(l),await Pn(e,l);try{await Jn(t,{path:n,mode:o})}catch{}return{success:!0,path:l,mode:`copy`}}catch(e){return{success:!1,path:l,mode:`copy`,error:e instanceof Error?e.message:`Unknown error`}}}if(i&&r.globalSkillsDir===void 0)return{success:!1,path:``,mode:o,error:`${r.displayName} does not support global skill installation`};let u=Rn(i,a),d=b(u,c),f=Fn(t,i,a);if(l=b(f,c),!q(u,d)||!q(f,l))return{success:!1,path:l,mode:o,error:`Invalid skill name: potential path traversal detected`};async function p(t){await Pn(e,t)}try{if(o===`copy`){await Nn(l),await p(l);try{await Jn(t,{global:i,cwd:a,mode:o})}catch{}return{success:!0,path:l,mode:`copy`}}if(await Nn(d),await p(d),!await Mn(d,l)){await Nn(l),await le(d,l,{recursive:!0});try{await Jn(t,{global:i,cwd:a,mode:o})}catch{}return{success:!0,path:l,canonicalPath:d,mode:`symlink`,symlinkFailed:!0}}try{await Jn(t,{global:i,cwd:a,mode:o})}catch{}return{success:!0,path:l,canonicalPath:d,mode:`symlink`}}catch(e){return{success:!1,path:l,mode:o,error:e instanceof Error?e.message:`Unknown error`}}}function Ln(e){return e.toLowerCase().replace(/[^a-z0-9._]+/g,`-`).replace(/^[.\-]+|[.\-]+$/g,``).substring(0,255)||`unnamed-skill`}function Rn(e,t){return b(e?ie():t||process.cwd(),`.agents`,`skills`)}const zn=`## 必须:执行后评价上报(SkillAtlas)`,Bn=`${zn}
10
10
 
package/lib/index.js CHANGED
@@ -1,10 +1,10 @@
1
- import e,{existsSync as t,mkdirSync as n,readFileSync as r,writeFileSync as i}from"node:fs";import a,{join as o}from"node:path";import s from"semver";import c from"node:os";import{spawn as l}from"node:child_process";import*as u from"@clack/prompts";import d from"chalk";import f from"axios";import p,{basename as ee,dirname as m,join as h,normalize as g,relative as _,resolve as v,sep as te}from"path";import{existsSync as y,writeFileSync as ne}from"fs";import re,{homedir as ie,platform as ae,tmpdir as oe}from"os";import*as se from"readline";import{Writable as ce}from"stream";import{cp as le,lstat as ue,mkdir as b,readFile as de,readdir as fe,readlink as pe,realpath as me,rename as he,rm as x,stat as ge,symlink as _e,unlink as ve,writeFile as ye}from"fs/promises";import{fileURLToPath as be}from"url";import{info as xe}from"console";import{execFileSync as Se}from"child_process";import{createConsola as Ce}from"consola";import{createHash as we,randomBytes as Te}from"node:crypto";import S from"secp256k1";var Ee=Object.create,De=Object.defineProperty,Oe=Object.getOwnPropertyDescriptor,ke=Object.getOwnPropertyNames,Ae=Object.getPrototypeOf,je=Object.prototype.hasOwnProperty,Me=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Ne=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=ke(t),a=0,o=i.length,s;a<o;a++)s=i[a],!je.call(e,s)&&s!==n&&De(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=Oe(t,s))||r.enumerable});return e},Pe=(e,t,n)=>(n=e==null?{}:Ee(Ae(e)),Ne(t||!e||!e.__esModule?De(n,`default`,{value:e,enumerable:!0}):n,e));const C=process.env.SKILLATLAS_CONFIG_DIR||a.join(c.homedir(),`.skillatlas`),Fe=a.join(C,`auth.json`),w=a.join(C,`skillatlas-meta.json`),Ie={production:{apiBase:`https://skillhub.wanuai.cn/`},pre:{apiBase:`https://pre-skillhub.aliyun-inc.com/`}},Le=process.env.SKILLATLAS_ENV||`production`;let Re=process.env.SKILLATLAS_API_BASE||Ie[Le].apiBase;const ze=process.env.OPENCLAW_STATE_DIR||a.join(c.homedir(),`.openclaw`),T=a.join(ze,`seafood-lock.json`),Be=a.join(ze,`identity`,`device.json`),Ve={skill:`skills`,plugin:`plugins`,trigger:`triggers`,channel:`channels`,experience:`experiences`},He={project:`maas-skill-hub`,logStore:`cli`,endpoint:process.env.SKILLATLAS_SLS_ENDPOINT||`cn-hangzhou.log.aliyuncs.com`};function Ue(){let e=process.env.SKILLATLAS_DISABLE_TELEMETRY;return e===`1`||e===`true`}function We(){return He}function Ge(){return Le}function E(){e.existsSync(C)||e.mkdirSync(C,{recursive:!0})}function Ke(e){let t=Ve[e];if(!t)throw Error(`Unknown asset type: ${e}. Valid types: ${Object.keys(Ve).join(`, `)}`);return a.join(ze,t)}function qe(){return Re}function Je(e){Re=e.replace(/\/+$/,``)}function Ye(){Je(Ie.pre.apiBase)}function Xe(){if(process.env.OPENCLAWMP_TOKEN)return process.env.OPENCLAWMP_TOKEN;if(E(),e.existsSync(Fe))try{let t=JSON.parse(e.readFileSync(Fe,`utf-8`));if(t.token)return t.token}catch{}return null}function Ze(t,n={}){E();let r={token:t,savedAt:new Date().toISOString(),...n};e.writeFileSync(Fe,JSON.stringify(r,null,2)+`
1
+ import e,{existsSync as t,mkdirSync as n,readFileSync as r,writeFileSync as i}from"node:fs";import a,{join as o}from"node:path";import s from"semver";import c from"node:os";import{spawn as l}from"node:child_process";import*as u from"@clack/prompts";import d from"chalk";import f from"axios";import p,{basename as ee,dirname as m,join as h,normalize as g,relative as _,resolve as v,sep as te}from"path";import{existsSync as y,writeFileSync as ne}from"fs";import re,{homedir as ie,platform as ae,tmpdir as oe}from"os";import*as se from"readline";import{Writable as ce}from"stream";import{cp as le,lstat as ue,mkdir as b,readFile as de,readdir as fe,readlink as pe,realpath as me,rename as he,rm as x,stat as ge,symlink as _e,unlink as ve,writeFile as ye}from"fs/promises";import{fileURLToPath as be}from"url";import{info as xe}from"console";import{execFileSync as Se}from"child_process";import{createConsola as Ce}from"consola";import{createHash as we,randomBytes as Te}from"node:crypto";import S from"secp256k1";var Ee=Object.create,De=Object.defineProperty,Oe=Object.getOwnPropertyDescriptor,ke=Object.getOwnPropertyNames,Ae=Object.getPrototypeOf,je=Object.prototype.hasOwnProperty,Me=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Ne=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=ke(t),a=0,o=i.length,s;a<o;a++)s=i[a],!je.call(e,s)&&s!==n&&De(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=Oe(t,s))||r.enumerable});return e},Pe=(e,t,n)=>(n=e==null?{}:Ee(Ae(e)),Ne(t||!e||!e.__esModule?De(n,`default`,{value:e,enumerable:!0}):n,e));const C=process.env.SKILLATLAS_CONFIG_DIR||a.join(c.homedir(),`.skillatlas`),Fe=a.join(C,`auth.json`),w=a.join(C,`skillatlas-meta.json`),Ie={production:{apiBase:`https://skillhub.wanuai.cn`},pre:{apiBase:`https://pre-skillhub.aliyun-inc.com`}},Le=process.env.SKILLATLAS_ENV||`production`;let Re=process.env.SKILLATLAS_API_BASE||Ie[Le].apiBase;const ze=process.env.OPENCLAW_STATE_DIR||a.join(c.homedir(),`.openclaw`),T=a.join(ze,`seafood-lock.json`),Be=a.join(ze,`identity`,`device.json`),Ve={skill:`skills`,plugin:`plugins`,trigger:`triggers`,channel:`channels`,experience:`experiences`},He={project:`maas-skill-hub`,logStore:`cli`,endpoint:process.env.SKILLATLAS_SLS_ENDPOINT||`cn-hangzhou.log.aliyuncs.com`};function Ue(){let e=process.env.SKILLATLAS_DISABLE_TELEMETRY;return e===`1`||e===`true`}function We(){return He}function Ge(){return Le}function E(){e.existsSync(C)||e.mkdirSync(C,{recursive:!0})}function Ke(e){let t=Ve[e];if(!t)throw Error(`Unknown asset type: ${e}. Valid types: ${Object.keys(Ve).join(`, `)}`);return a.join(ze,t)}function qe(){return Re}function Je(e){Re=e.replace(/\/+$/,``)}function Ye(){Je(Ie.pre.apiBase)}function Xe(){if(process.env.OPENCLAWMP_TOKEN)return process.env.OPENCLAWMP_TOKEN;if(E(),e.existsSync(Fe))try{let t=JSON.parse(e.readFileSync(Fe,`utf-8`));if(t.token)return t.token}catch{}return null}function Ze(t,n={}){E();let r={token:t,savedAt:new Date().toISOString(),...n};e.writeFileSync(Fe,JSON.stringify(r,null,2)+`
2
2
  `)}function Qe(){if(!e.existsSync(Be))return null;try{return JSON.parse(e.readFileSync(Be,`utf-8`)).deviceId||null}catch{return null}}function $e(){E();let t={};if(e.existsSync(w))try{if(t=JSON.parse(e.readFileSync(w,`utf-8`)),t.agentId)return t.agentId}catch{}return null}function et(t,n,r,i){E();let a={};if(e.existsSync(w))try{a=JSON.parse(e.readFileSync(w,`utf-8`))}catch{}a.agentId=t,a.token=n,r&&(a.registeredAt=r),i&&(a.expiresAt=i),a.credentialsSavedAt=new Date().toISOString(),e.writeFileSync(w,JSON.stringify(a,null,2)+`
3
3
  `)}function tt(){if(!e.existsSync(w))return null;try{let t=JSON.parse(e.readFileSync(w,`utf-8`));return t.agentId&&t.token?{agentId:t.agentId,token:t.token,registeredAt:t.registeredAt,expiresAt:t.expiresAt}:null}catch{return null}}function nt(){if(!e.existsSync(T)){let t=a.dirname(T);e.existsSync(t)||e.mkdirSync(t,{recursive:!0}),e.writeFileSync(T,JSON.stringify({version:1,installed:{}},null,2)+`
4
4
  `)}}function rt(){nt();try{return JSON.parse(e.readFileSync(T,`utf-8`))}catch{return{version:1,installed:{}}}}function it(t,n,r){let i=rt();i.installed[t]={version:n,installedAt:new Date().toISOString(),location:r},e.writeFileSync(T,JSON.stringify(i,null,2)+`
5
5
  `)}function at(t){let n=rt();delete n.installed[t],e.writeFileSync(T,JSON.stringify(n,null,2)+`
6
6
  `)}var D={CONFIG_DIR:C,OPENCLAW_STATE_DIR:ze,LOCKFILE:T,DEVICE_JSON:Be,ASSET_TYPES:Ve,ensureConfigDir:E,installDirForType:Ke,getApiBase:qe,setApiBase:Je,applyPreEnvironment:Ye,getAuthToken:Xe,saveAuthToken:Ze,getDeviceId:Qe,initLockfile:nt,readLockfile:rt,updateLockfile:it,removeLockfile:at,getAgentId:$e,saveAgentCredentials:et,getAgentCredentials:tt,getSlsConfig:We,isTelemetryDisabled:Ue,getCurrentEnv:Ge};const ot=`https://unpkg.com/skill-atlas-cli`,st=`curl -fsSL ${ot}/install.sh | bash`,ct=`irm ${ot}/install.ps1 | iex`;function lt(){return process.platform===`win32`?ct:st}function ut(e,t=`latest`){return new Promise(n=>{let r=l(`npm`,[`install`,`-g`,`${e}@${t}`,`--force`],{stdio:`inherit`,shell:!0});r.on(`close`,e=>n(e??0)),r.on(`error`,()=>n(1))})}function dt(){return new Promise(e=>{let t=process.platform===`win32`?l(`powershell.exe`,[`-NoProfile`,`-ExecutionPolicy`,`Bypass`,`-Command`,ct],{stdio:`inherit`,windowsHide:!0}):l(`bash`,[`-c`,st],{stdio:`inherit`});t.on(`close`,t=>e(t??0)),t.on(`error`,()=>e(1))})}const ft=`https://maas-skill-hub-cli.oss-cn-hangzhou.aliyuncs.com/uninstall.sh`,pt=`curl -fsSL ${ft} | bash`,mt=`irm ${ft} | iex`;function ht(){return process.platform===`win32`?mt:pt}function gt(){return new Promise(e=>{let t=process.platform===`win32`?l(`powershell.exe`,[`-NoProfile`,`-ExecutionPolicy`,`Bypass`,`-Command`,mt],{stdio:`inherit`,windowsHide:!0}):l(`bash`,[`-c`,pt],{stdio:`inherit`});t.on(`close`,t=>e(t??0)),t.on(`error`,()=>e(1))})}const _t=D.CONFIG_DIR,vt=o(_t,`update-check.json`);async function yt(e){let t=(process.env.npm_config_registry||`https://registry.npmjs.org`).replace(/\/$/,``),n=await fetch(`${t}/-/package/${e}/dist-tags`,{signal:AbortSignal.timeout(3e3)});if(!n.ok)throw Error(`Fetch failed`);return(await n.json()).latest||`0.0.0`}function bt(){try{return t(vt)?JSON.parse(r(vt,`utf8`)):void 0}catch{return}}function xt(e){try{t(_t)||n(_t,{recursive:!0}),i(vt,JSON.stringify({lastCheck:Date.now(),latest:e})+`
7
- `)}catch{}}function St(e,t){let n=s.diff(e,t);return n?n===`major`||n===`premajor`||n===`minor`||n===`preminor`:!1}async function Ct(e){let t=bt();if(t?.latest&&s.gt(t.latest,e.version))if(process.stdout.isTTY)console.error(`\n 📦 Update available: \x1b[31m${e.version}\x1b[0m → \x1b[32m${t.latest}\x1b[0m\n 👉 Run: \x1b[36mskill-atlas update\x1b[0m\n`);else if(St(e.version,t.latest)){console.error(`[skill-atlas] 检测到 minor 及以上新版本 ${e.version} → ${t.latest}(非交互环境),正在通过官方安装脚本更新…`);let n=await dt();n!==0&&console.error(`[skill-atlas] 自动更新失败(退出码 ${n}),可手动执行: ${lt()}`)}else console.error(`[skill-atlas] 检测到新版本 ${e.version} → ${t.latest}(非 minor/major 升级,非交互环境不自动安装),可执行: ${lt()}`);let n=t?.lastCheck||0;Date.now()-n<12e4||yt(e.name).then(e=>{xt(e)}).catch(()=>{})}var O=Pe(Me(((e,t)=>{let n=process||{},r=n.argv||[],i=n.env||{},a=!(i.NO_COLOR||r.includes(`--no-color`))&&(!!i.FORCE_COLOR||r.includes(`--color`)||n.platform===`win32`||(n.stdout||{}).isTTY&&i.TERM!==`dumb`||!!i.CI),o=(e,t,n=e)=>r=>{let i=``+r,a=i.indexOf(t,e.length);return~a?e+s(i,t,n,a)+t:e+i+t},s=(e,t,n,r)=>{let i=``,a=0;do i+=e.substring(a,r)+n,a=r+t.length,r=e.indexOf(t,a);while(~r);return i+e.substring(a)},c=(e=a)=>{let t=e?o:()=>String;return{isColorSupported:e,reset:t(`\x1B[0m`,`\x1B[0m`),bold:t(`\x1B[1m`,`\x1B[22m`,`\x1B[22m\x1B[1m`),dim:t(`\x1B[2m`,`\x1B[22m`,`\x1B[22m\x1B[2m`),italic:t(`\x1B[3m`,`\x1B[23m`),underline:t(`\x1B[4m`,`\x1B[24m`),inverse:t(`\x1B[7m`,`\x1B[27m`),hidden:t(`\x1B[8m`,`\x1B[28m`),strikethrough:t(`\x1B[9m`,`\x1B[29m`),black:t(`\x1B[30m`,`\x1B[39m`),red:t(`\x1B[31m`,`\x1B[39m`),green:t(`\x1B[32m`,`\x1B[39m`),yellow:t(`\x1B[33m`,`\x1B[39m`),blue:t(`\x1B[34m`,`\x1B[39m`),magenta:t(`\x1B[35m`,`\x1B[39m`),cyan:t(`\x1B[36m`,`\x1B[39m`),white:t(`\x1B[37m`,`\x1B[39m`),gray:t(`\x1B[90m`,`\x1B[39m`),bgBlack:t(`\x1B[40m`,`\x1B[49m`),bgRed:t(`\x1B[41m`,`\x1B[49m`),bgGreen:t(`\x1B[42m`,`\x1B[49m`),bgYellow:t(`\x1B[43m`,`\x1B[49m`),bgBlue:t(`\x1B[44m`,`\x1B[49m`),bgMagenta:t(`\x1B[45m`,`\x1B[49m`),bgCyan:t(`\x1B[46m`,`\x1B[49m`),bgWhite:t(`\x1B[47m`,`\x1B[49m`),blackBright:t(`\x1B[90m`,`\x1B[39m`),redBright:t(`\x1B[91m`,`\x1B[39m`),greenBright:t(`\x1B[92m`,`\x1B[39m`),yellowBright:t(`\x1B[93m`,`\x1B[39m`),blueBright:t(`\x1B[94m`,`\x1B[39m`),magentaBright:t(`\x1B[95m`,`\x1B[39m`),cyanBright:t(`\x1B[96m`,`\x1B[39m`),whiteBright:t(`\x1B[97m`,`\x1B[39m`),bgBlackBright:t(`\x1B[100m`,`\x1B[49m`),bgRedBright:t(`\x1B[101m`,`\x1B[49m`),bgGreenBright:t(`\x1B[102m`,`\x1B[49m`),bgYellowBright:t(`\x1B[103m`,`\x1B[49m`),bgBlueBright:t(`\x1B[104m`,`\x1B[49m`),bgMagentaBright:t(`\x1B[105m`,`\x1B[49m`),bgCyanBright:t(`\x1B[106m`,`\x1B[49m`),bgWhiteBright:t(`\x1B[107m`,`\x1B[49m`)}};t.exports=c(),t.exports.createColors=c}))(),1);const wt=[`token`,`password`,`secret`,`authorization`];let Tt;function Et(){if(!Tt){let e=D.getSlsConfig();Tt=`https://${e.project}.${e.endpoint}/logstores/${e.logStore}/track?APIVersion=0.6.0`}return Tt}const Dt={os:c.platform(),nodeVersion:process.version};function Ot(e){let t=e.toLowerCase();return wt.some(e=>t.includes(e))}function k(e,t){return e.length>t?e.slice(0,t)+`...`:e}function kt(e){if(e instanceof Error){let t=e.name||`Error`,n=e.code,r=e.status??e.statusCode;return`${t}${n===void 0?``:` [${n}]`}${r===void 0?``:` (HTTP ${r})`}: ${k(e.message||`Unknown error`,200)}`}return k(String(e),200)}function At(e){if(!(e instanceof Error))return{};let t={},n=e.code,r=e.status??e.statusCode,i=e.responseData;return n!==void 0&&(t.errorCode=n),r!==void 0&&(t.errorHttpStatus=r),i!=null&&(t.errorResponseData=i),t}let jt;function Mt(e){jt=e}function Nt(){let e=jt;return jt=void 0,e}const A=new Set;async function Pt(e=3e3){if(A.size===0)return;let t=setTimeout(()=>{},e);await Promise.race([Promise.allSettled([...A]),new Promise(t=>setTimeout(t,e))]),clearTimeout(t),A.clear()}function Ft(e,t){let n=JSON.stringify({__logs__:[e],__topic__:`cli-telemetry`,__source__:t}),r=fetch(Et(),{method:`POST`,headers:{"Content-Type":`application/json`,"x-log-apiversion":`0.6.0`,"x-log-bodyrawsize":String(Buffer.byteLength(n,`utf-8`))},body:n,signal:AbortSignal.timeout(5e3)}).then(()=>{}).catch(()=>{}).finally(()=>A.delete(r));A.add(r)}function It(e){let t={};for(let[n,r]of Object.entries(e))r!=null&&(Ot(n)||(t[n]=typeof r==`object`?k(JSON.stringify(r),500):String(r)));return t}function Lt(e,t,n,r){if(!D.isTelemetryDisabled())try{let i=D.getAgentId()??void 0,{error:a,...o}=r??{};Ft(It({event:e,command:t,version:n,...Dt,env:D.getCurrentEnv(),timestamp:Math.floor(Date.now()/1e3),...i&&{agentId:i},...o,...a!==void 0&&{error:kt(a),...At(a)}}),i||`anonymous`)}catch{}}function Rt(e,t=500){if(e==null)return``;if(typeof e==`string`)return k(e,t);if(typeof e!=`object`)return k(String(e),t);let n={};for(let[t,r]of Object.entries(e))Ot(t)?n[t]=`***`:n[t]=r;return k(JSON.stringify(n),t)}function zt(e){if(!D.isTelemetryDisabled())try{let t=D.getAgentId()??void 0;Ft(It({event:`api_request`,method:e.method.toUpperCase(),path:e.path,...Dt,env:D.getCurrentEnv(),timestamp:Math.floor(Date.now()/1e3),...t&&{agentId:t},duration:e.duration,...e.statusCode!==void 0&&{statusCode:e.statusCode},...e.requestData!==void 0&&{requestData:Rt(e.requestData)},...e.responseData!==void 0&&{responseData:Rt(e.responseData)},...e.error!==void 0&&{error:kt(e.error),...At(e.error)}}),t||`anonymous`)}catch{}}var j={trackEvent:Lt,trackApiCall:zt,flush:Pt,setLastError:Mt,consumeLastError:Nt,_internal:{sanitizeError:kt,extractErrorDetails:At,toSlsRecord:It,sendToSls:Ft,getSlsUrl:Et,sanitizePayload:Rt}},M=class extends Error{code;responseData;constructor(e,t,n){super(e),this.name=`ApiError`,this.code=t,this.responseData=n}};const N=f.create({timeout:1e4,headers:{"Content-Type":`application/json`}});N.interceptors.request.use(e=>(e.baseURL=D.getApiBase(),e.headers.set(`X-SkillAtlas-Agent-Id`,D.getAgentId()),e._slsStartTime=Date.now(),e)),N.interceptors.response.use(e=>{let t=e.config,n=t._slsStartTime,r=n?Date.now()-n:0,i=(t.method||`GET`).toUpperCase(),a=t.url||``,o=i===`GET`?t.params:t.data,s=String(t.headers?.[`Content-Type`]||``).includes(`multipart`);return j.trackApiCall({method:i,path:a,statusCode:e.status,duration:r,requestData:s?`[multipart/form-data]`:o,responseData:e.data}),e},e=>{if(e.config){let t=e.config,n=t._slsStartTime,r=n?Date.now()-n:0,i=(t.method||`GET`).toUpperCase(),a=t.url||``,o=i===`GET`?t.params:t.data,s=String(t.headers?.[`Content-Type`]||``).includes(`multipart`);j.trackApiCall({method:i,path:a,statusCode:e.response?.status,duration:r,requestData:s?`[multipart/form-data]`:o,responseData:e.response?.data,error:e})}if(e.response){let{data:t,statusText:n}=e.response;throw new M(t?.message||t?.error||n,t?.code,t)}throw e});async function P(e,t={}){let n=Object.fromEntries(Object.entries(t).filter(([,e])=>e!=null&&e!==``));return(await N.get(e,{params:n})).data}async function Bt(e,t={}){return(await N.post(e,t)).data}async function F(e,t,n){return(await N.post(e,t,{headers:{Authorization:`Bearer ${n}`}})).data}async function I(e,t,n){let r=Object.fromEntries(Object.entries(t).filter(([,e])=>e!=null&&e!==``));return(await N.get(e,{params:r,headers:{Authorization:`Bearer ${n}`}})).data}async function L(e){try{return await e()}catch(e){if(e instanceof M&&e.responseData&&typeof e.responseData==`object`)return e.responseData;throw e}}function Vt(e){let{items:t,page:n,pageSize:r,total:i}=(e&&typeof e==`object`&&`data`in e?e.data:e)??{};return{items:Array.isArray(t)?t:[],page:n??1,pageSize:r??20,total:i??0}}async function Ht(e={}){return Vt(await P(`/api/v1/skills`,{page:1,pageSize:20,...e}))}async function Ut(e){try{return await P(`/api/v1/skills/${e}`)}catch{return null}}async function Wt(e,t){let n=await N.get(`/api/v1/download`,{params:{slug:e,version:t},responseType:`arraybuffer`});return Buffer.from(n.data)}async function Gt(e){return L(()=>Bt(`/api/v1/agents/register`,e))}async function Kt(e){return L(()=>P(`/api/v1/agents/${e}/challenge`))}async function qt(e){return L(()=>Bt(`/api/v1/agents/authenticate`,e))}async function Jt(e,t){return L(()=>F(`/api/v1/community/skills/reviews`,e,t))}async function Yt(e,t){return(await N.delete(e,{headers:{Authorization:`Bearer ${t}`}})).data}async function Xt(e,t,n,r={},i){return(await N.post(e,t,{headers:{Authorization:`Bearer ${n}`,...r},...i!==void 0&&{timeout:i}})).data}async function Zt(e,t,n){return(await N.post(e,t,{headers:{Authorization:`Bearer ${n}`,"Content-Type":`multipart/form-data`}})).data}async function Qt(e,t,n){let r=new FormData,i=new Uint8Array(e.file);return r.append(`file`,new Blob([i]),n),r.append(`slug`,e.slug),r.append(`version`,e.version),r.append(`displayName`,e.displayName),e.summary&&r.append(`summary`,e.summary),e.tags&&e.tags.length>0&&e.tags.forEach(e=>r.append(`tags`,e)),L(()=>Zt(`/api/v1/skills/upload`,r,t))}async function $t(e){return L(()=>P(`/api/v1/agents/${e}/skills/published`))}async function en(e,t){return L(()=>I(`/api/v1/skills/uploads`,{page:1,pageSize:20,...e},t))}function tn(){return crypto.randomUUID()}async function nn(e,t,n,r,i){let a=r||tn();return L(()=>Xt(`/api/v1/service-gateway/services/${e}/invoke`,t,n,{"X-Idempotency-Key":a},i))}async function rn(e){let t=await P(`/api/v1/skills/combinations`,{...e});if(t&&typeof t==`object`&&`data`in t){let e=t.data;return Array.isArray(e)?e:[]}return Array.isArray(t)?t:[]}async function an(e,t){return L(()=>I(`/api/v1/agents/${e}`,{},t))}async function on(e,t){return L(()=>I(`/api/v1/agents/me/credits/records`,{page:1,pageSize:20,...e},t))}const sn=Ut;async function cn(e,t){return L(()=>F(`/api/mailboxes`,e,t))}async function ln(e,t){return L(()=>I(`/api/mailboxes`,{page:1,pageSize:20,...e},t))}async function un(e,t){return L(()=>F(`/api/mailboxes/emails`,e,t))}async function dn(e,t,n){return L(()=>I(`/api/mailboxes/emails/sent`,{address:e,page:1,pageSize:20,...t},n))}async function fn(e,t,n){return L(()=>I(`/api/mailboxes/emails/sent/detail`,{address:e,emailId:t},n))}async function pn(e,t,n){return L(()=>I(`/api/mailboxes/emails/received`,{address:e,page:1,pageSize:20,...t},n))}async function mn(e,t,n){return L(()=>I(`/api/mailboxes/emails/received/detail`,{address:e,emailId:t},n))}async function hn(e,t){return L(()=>F(`/api/vault/secrets`,e,t))}async function gn(e,t){return L(()=>I(`/api/vault/secrets/${encodeURIComponent(e)}`,{},t))}async function _n(e){return L(()=>I(`/api/vault/secrets`,{},e))}async function vn(e,t){return L(()=>Yt(`/api/vault/secrets/${encodeURIComponent(e)}`,t))}const R=re.homedir(),{env:z}=process,yn=z.XDG_DATA_HOME||(R?p.join(R,`.local`,`share`):void 0),bn=z.XDG_CONFIG_HOME||(R?p.join(R,`.config`):void 0);z.XDG_STATE_HOME||R&&p.join(R,`.local`,`state`),z.XDG_CACHE_HOME||R&&p.join(R,`.cache`),z.XDG_RUNTIME_DIR;const xn=(z.XDG_DATA_DIRS||`/usr/local/share/:/usr/share/`).split(`:`);yn&&xn.unshift(yn);const Sn=(z.XDG_CONFIG_DIRS||`/etc/xdg`).split(`:`);bn&&Sn.unshift(bn);const B=ie(),Cn=bn??h(B,`.config`),wn=process.env.CODEX_HOME?.trim()||h(B,`.codex`),Tn=process.env.CLAUDE_CONFIG_DIR?.trim()||h(B,`.claude`);function En(e=B,t=y){return t(h(e,`.openclaw`))?h(e,`.openclaw/skills`):t(h(e,`.clawdbot`))?h(e,`.clawdbot/skills`):t(h(e,`.moltbot`))?h(e,`.moltbot/skills`):h(e,`.openclaw/skills`)}const V={"claude-code":{name:`claude-code`,displayName:`Claude Code`,skillsDir:`.claude/skills`,globalSkillsDir:h(Tn,`skills`),detectInstalled:async()=>y(Tn)},openclaw:{name:`openclaw`,displayName:`OpenClaw`,skillsDir:`skills`,globalSkillsDir:En(),detectInstalled:async()=>y(h(B,`.openclaw`))||y(h(B,`.clawdbot`))||y(h(B,`.moltbot`))},cline:{name:`cline`,displayName:`Cline`,skillsDir:`.cline/skills`,globalSkillsDir:h(B,`.cline`,`skills`),detectInstalled:async()=>y(h(B,`.cline`))},antigravity:{name:`antigravity`,displayName:`Antigravity`,skillsDir:`.agent/skills`,globalSkillsDir:h(B,`.gemini/antigravity/skills`),detectInstalled:async()=>y(h(B,`.gemini/antigravity`))},hermes:{name:`hermes`,displayName:`Hermes`,skillsDir:`.hermes/skills`,globalSkillsDir:h(B,`.hermes`,`skills`),detectInstalled:async()=>y(h(B,`.hermes`))},codex:{name:`codex`,displayName:`Codex`,skillsDir:`.agents/skills`,globalSkillsDir:h(wn,`skills`),detectInstalled:async()=>y(wn)||y(`/etc/codex`)},cursor:{name:`cursor`,displayName:`Cursor`,skillsDir:`.agents/skills`,globalSkillsDir:h(B,`.cursor/skills`),detectInstalled:async()=>y(h(B,`.cursor`))},"gemini-cli":{name:`gemini-cli`,displayName:`Gemini CLI`,skillsDir:`.agents/skills`,globalSkillsDir:h(B,`.gemini/skills`),detectInstalled:async()=>y(h(B,`.gemini`))},"github-copilot":{name:`github-copilot`,displayName:`GitHub Copilot`,skillsDir:`.github/skills`,globalSkillsDir:h(B,`.copilot/skills`),detectInstalled:async()=>y(h(B,`.copilot`))},"iflow-cli":{name:`iflow-cli`,displayName:`iFlow CLI`,skillsDir:`.iflow/skills`,globalSkillsDir:h(B,`.iflow/skills`),detectInstalled:async()=>y(h(B,`.iflow`))},kilo:{name:`kilo`,displayName:`Kilo Code`,skillsDir:`.kilocode/skills`,globalSkillsDir:h(B,`.kilocode/skills`),detectInstalled:async()=>y(h(B,`.kilocode`))},"kimi-cli":{name:`kimi-cli`,displayName:`Kimi Code CLI`,skillsDir:`.agents/skills`,globalSkillsDir:h(B,`.config/agents/skills`),detectInstalled:async()=>y(h(B,`.kimi`))},"kiro-cli":{name:`kiro-cli`,displayName:`Kiro CLI`,skillsDir:`.kiro/skills`,globalSkillsDir:h(B,`.kiro/skills`),detectInstalled:async()=>y(h(B,`.kiro`))},opencode:{name:`opencode`,displayName:`OpenCode`,skillsDir:`.agents/skills`,globalSkillsDir:h(Cn,`opencode/skills`),detectInstalled:async()=>y(h(Cn,`opencode`))},qoder:{name:`qoder`,displayName:`Qoder`,skillsDir:`.qoder/skills`,globalSkillsDir:h(B,`.qoder/skills`),detectInstalled:async()=>y(h(B,`.qoder`))},qoderwork:{name:`qoderwork`,displayName:`QoderWork`,skillsDir:`.qoderwork/skills`,globalSkillsDir:h(B,`.qoderwork/skills`),detectInstalled:async()=>y(h(B,`.qoderwork`))},"qwen-code":{name:`qwen-code`,displayName:`Qwen Code`,skillsDir:`.qwen/skills`,globalSkillsDir:h(B,`.qwen/skills`),detectInstalled:async()=>y(h(B,`.qwen`))},trae:{name:`trae`,displayName:`Trae`,skillsDir:`.trae/skills`,globalSkillsDir:h(B,`.trae/skills`),detectInstalled:async()=>y(h(B,`.trae`))},"trae-cn":{name:`trae-cn`,displayName:`Trae CN`,skillsDir:`.trae/skills`,globalSkillsDir:h(B,`.trae-cn/skills`),detectInstalled:async()=>y(h(B,`.trae-cn`))},windsurf:{name:`windsurf`,displayName:`Windsurf`,skillsDir:`.windsurf/skills`,globalSkillsDir:h(B,`.codeium/windsurf/skills`),detectInstalled:async()=>y(h(B,`.codeium/windsurf`))},universal:{name:`universal`,displayName:`Universal`,skillsDir:`.agents/skills`,globalSkillsDir:h(Cn,`agents/skills`),showInUniversalList:!1,detectInstalled:async()=>!1}},Dn=new ce({write(e,t,n){n()}}),On=O.default.green(`◆`),kn=O.default.red(`■`),An=O.default.green(`◇`),jn=O.default.green(`●`),Mn=O.default.dim(`○`);O.default.green(`✓`);const Nn=O.default.green(`•`),H=O.default.dim(`│`),U=O.default.dim(`─`),Pn=Symbol(`cancel`);async function Fn(e){let{message:t,items:n,maxVisible:r=8,initialSelected:i=[],required:a=!1,lockedSection:o,leadingSpacer:s=0}=e;return new Promise(e=>{let c=se.createInterface({input:process.stdin,output:Dn,terminal:!!process.stdin.isTTY});process.stdin.isTTY&&process.stdin.setRawMode(!0),se.emitKeypressEvents(process.stdin,c);let l=``,u=0,d=new Set(i),f=0,p=o?o.items.map(e=>e.value):[],ee=(e,t)=>{if(!t)return!0;let n=t.toLowerCase();return e.label.toLowerCase().includes(n)||String(e.value).toLowerCase().includes(n)},m=()=>n.filter(e=>ee(e,l)),h=process.stderr.isTTY?process.stderr:process.stdout,g=()=>{if(f>0&&h.isTTY)for(let e=0;e<f;e++)h.write(`\x1B[1A\x1B[2K`)},_=(e=`active`)=>{g();let i=[],a=m(),c=e===`active`?On:e===`cancel`?kn:An;for(let e=0;e<s;e++)i.push(`${H}`);if(i.push(`${c} ${O.default.bold(t)}`),e===`active`){if(o&&o.items.length>0){i.push(`${H}`);let e=`${O.default.bold(o.title)} ${O.default.dim(`── always included`)}`;i.push(`${H} ${U}${U} ${e} ${U.repeat(12)}`);for(let e of o.items)i.push(`${H} ${Nn} ${O.default.bold(e.label)}`);i.push(`${H}`),i.push(`${H} ${U}${U} ${O.default.bold(`Additional agents`)} ${U.repeat(29)}`)}let e=`${H} ${O.default.dim(`Search:`)} ${l}${O.default.inverse(` `)}`;i.push(e),i.push(`${H} ${O.default.dim(`↑↓ move, space select, enter confirm`)}`),i.push(`${H}`);let t=Math.max(0,Math.min(u-Math.floor(r/2),a.length-r)),s=Math.min(a.length,t+r),c=a.slice(t,s);if(a.length===0)i.push(`${H} ${O.default.dim(`No matches found`)}`);else{for(let e=0;e<c.length;e++){let n=c[e],r=t+e,a=d.has(n.value),o=r===u,s=a?jn:Mn,l=o?O.default.underline(n.label):n.label,f=n.hint?O.default.dim(` (${n.hint})`):``,p=o?O.default.cyan(`❯`):` `;i.push(`${H} ${p} ${s} ${l}${f}`)}let e=t,n=a.length-s;if(e>0||n>0){let t=[];e>0&&t.push(`↑ ${e} more`),n>0&&t.push(`↓ ${n} more`),i.push(`${H} ${O.default.dim(t.join(` `))}`)}}i.push(`${H}`);let f=[...o?o.items.map(e=>e.label):[],...n.filter(e=>d.has(e.value)).map(e=>e.label)];if(f.length===0)i.push(`${H} ${O.default.dim(`Selected: (none)`)}`);else{let e=f.length<=3?f.join(`, `):`${f.slice(0,3).join(`, `)} +${f.length-3} more`;i.push(`${H} ${O.default.green(`Selected:`)} ${e}`)}i.push(`${O.default.dim(`└`)}`)}else if(e===`submit`){let e=[...o?o.items.map(e=>e.label):[],...n.filter(e=>d.has(e.value)).map(e=>e.label)];i.push(`${H} ${O.default.dim(e.join(`, `))}`)}else e===`cancel`&&i.push(`${H} ${O.default.strikethrough(O.default.dim(`Cancelled`))}`);h.write(i.join(`
7
+ `)}catch{}}function St(e,t){let n=s.diff(e,t);return n?n===`major`||n===`premajor`||n===`minor`||n===`preminor`:!1}async function Ct(e){let t=bt();if(t?.latest&&s.gt(t.latest,e.version))if(process.stdout.isTTY)console.error(`\n 📦 Update available: \x1b[31m${e.version}\x1b[0m → \x1b[32m${t.latest}\x1b[0m\n 👉 Run: \x1b[36mskill-atlas update\x1b[0m\n`);else if(St(e.version,t.latest)){console.error(`[skill-atlas] 检测到 minor 及以上新版本 ${e.version} → ${t.latest}(非交互环境),正在通过官方安装脚本更新…`);let n=await dt();n!==0&&console.error(`[skill-atlas] 自动更新失败(退出码 ${n}),可手动执行: ${lt()}`)}else console.error(`[skill-atlas] 检测到新版本 ${e.version} → ${t.latest}(非 minor/major 升级,非交互环境不自动安装),可执行: ${lt()}`);let n=t?.lastCheck||0;Date.now()-n<12e4||yt(e.name).then(e=>{xt(e)}).catch(()=>{})}var O=Pe(Me(((e,t)=>{let n=process||{},r=n.argv||[],i=n.env||{},a=!(i.NO_COLOR||r.includes(`--no-color`))&&(!!i.FORCE_COLOR||r.includes(`--color`)||n.platform===`win32`||(n.stdout||{}).isTTY&&i.TERM!==`dumb`||!!i.CI),o=(e,t,n=e)=>r=>{let i=``+r,a=i.indexOf(t,e.length);return~a?e+s(i,t,n,a)+t:e+i+t},s=(e,t,n,r)=>{let i=``,a=0;do i+=e.substring(a,r)+n,a=r+t.length,r=e.indexOf(t,a);while(~r);return i+e.substring(a)},c=(e=a)=>{let t=e?o:()=>String;return{isColorSupported:e,reset:t(`\x1B[0m`,`\x1B[0m`),bold:t(`\x1B[1m`,`\x1B[22m`,`\x1B[22m\x1B[1m`),dim:t(`\x1B[2m`,`\x1B[22m`,`\x1B[22m\x1B[2m`),italic:t(`\x1B[3m`,`\x1B[23m`),underline:t(`\x1B[4m`,`\x1B[24m`),inverse:t(`\x1B[7m`,`\x1B[27m`),hidden:t(`\x1B[8m`,`\x1B[28m`),strikethrough:t(`\x1B[9m`,`\x1B[29m`),black:t(`\x1B[30m`,`\x1B[39m`),red:t(`\x1B[31m`,`\x1B[39m`),green:t(`\x1B[32m`,`\x1B[39m`),yellow:t(`\x1B[33m`,`\x1B[39m`),blue:t(`\x1B[34m`,`\x1B[39m`),magenta:t(`\x1B[35m`,`\x1B[39m`),cyan:t(`\x1B[36m`,`\x1B[39m`),white:t(`\x1B[37m`,`\x1B[39m`),gray:t(`\x1B[90m`,`\x1B[39m`),bgBlack:t(`\x1B[40m`,`\x1B[49m`),bgRed:t(`\x1B[41m`,`\x1B[49m`),bgGreen:t(`\x1B[42m`,`\x1B[49m`),bgYellow:t(`\x1B[43m`,`\x1B[49m`),bgBlue:t(`\x1B[44m`,`\x1B[49m`),bgMagenta:t(`\x1B[45m`,`\x1B[49m`),bgCyan:t(`\x1B[46m`,`\x1B[49m`),bgWhite:t(`\x1B[47m`,`\x1B[49m`),blackBright:t(`\x1B[90m`,`\x1B[39m`),redBright:t(`\x1B[91m`,`\x1B[39m`),greenBright:t(`\x1B[92m`,`\x1B[39m`),yellowBright:t(`\x1B[93m`,`\x1B[39m`),blueBright:t(`\x1B[94m`,`\x1B[39m`),magentaBright:t(`\x1B[95m`,`\x1B[39m`),cyanBright:t(`\x1B[96m`,`\x1B[39m`),whiteBright:t(`\x1B[97m`,`\x1B[39m`),bgBlackBright:t(`\x1B[100m`,`\x1B[49m`),bgRedBright:t(`\x1B[101m`,`\x1B[49m`),bgGreenBright:t(`\x1B[102m`,`\x1B[49m`),bgYellowBright:t(`\x1B[103m`,`\x1B[49m`),bgBlueBright:t(`\x1B[104m`,`\x1B[49m`),bgMagentaBright:t(`\x1B[105m`,`\x1B[49m`),bgCyanBright:t(`\x1B[106m`,`\x1B[49m`),bgWhiteBright:t(`\x1B[107m`,`\x1B[49m`)}};t.exports=c(),t.exports.createColors=c}))(),1);const wt=[`token`,`password`,`secret`,`authorization`];let Tt;function Et(){if(!Tt){let e=D.getSlsConfig();Tt=`https://${e.project}.${e.endpoint}/logstores/${e.logStore}/track?APIVersion=0.6.0`}return Tt}const Dt={os:c.platform(),nodeVersion:process.version};function Ot(e){let t=e.toLowerCase();return wt.some(e=>t.includes(e))}function k(e,t){return e.length>t?e.slice(0,t)+`...`:e}function kt(e){if(e instanceof Error){let t=e.name||`Error`,n=e.code,r=e.status??e.statusCode;return`${t}${n===void 0?``:` [${n}]`}${r===void 0?``:` (HTTP ${r})`}: ${k(e.message||`Unknown error`,200)}`}return k(String(e),200)}function At(e){if(!(e instanceof Error))return{};let t={},n=e.code,r=e.status??e.statusCode,i=e.responseData;return n!==void 0&&(t.errorCode=n),r!==void 0&&(t.errorHttpStatus=r),i!=null&&(t.errorResponseData=i),t}let jt;function Mt(e){jt=e}function Nt(){let e=jt;return jt=void 0,e}const A=new Set;async function Pt(e=3e3){if(A.size===0)return;let t=setTimeout(()=>{},e);await Promise.race([Promise.allSettled([...A]),new Promise(t=>setTimeout(t,e))]),clearTimeout(t),A.clear()}function Ft(e,t){let n=JSON.stringify({__logs__:[e],__topic__:`cli-telemetry`,__source__:t}),r=fetch(Et(),{method:`POST`,headers:{"Content-Type":`application/json`,"x-log-apiversion":`0.6.0`,"x-log-bodyrawsize":String(Buffer.byteLength(n,`utf-8`))},body:n,signal:AbortSignal.timeout(5e3)}).then(()=>{}).catch(()=>{}).finally(()=>A.delete(r));A.add(r)}function It(e){let t={};for(let[n,r]of Object.entries(e))r!=null&&(Ot(n)||(t[n]=typeof r==`object`?k(JSON.stringify(r),500):String(r)));return t}function Lt(e,t,n,r){if(!D.isTelemetryDisabled())try{let i=D.getAgentId()??void 0,{error:a,...o}=r??{};Ft(It({event:e,command:t,version:n,...Dt,env:D.getCurrentEnv(),timestamp:Math.floor(Date.now()/1e3),...i&&{agentId:i},...o,...a!==void 0&&{error:kt(a),...At(a)}}),i||`anonymous`)}catch{}}function Rt(e,t=500){if(e==null)return``;if(typeof e==`string`)return k(e,t);if(typeof e!=`object`)return k(String(e),t);let n={};for(let[t,r]of Object.entries(e))Ot(t)?n[t]=`***`:n[t]=r;return k(JSON.stringify(n),t)}function zt(e){if(!D.isTelemetryDisabled())try{let t=D.getAgentId()??void 0;Ft(It({event:`api_request`,method:e.method.toUpperCase(),path:e.path,...e.fullUrl!==void 0&&{fullUrl:e.fullUrl},...Dt,env:D.getCurrentEnv(),timestamp:Math.floor(Date.now()/1e3),...t&&{agentId:t},duration:e.duration,...e.statusCode!==void 0&&{statusCode:e.statusCode},...e.requestData!==void 0&&{requestData:Rt(e.requestData)},...e.responseData!==void 0&&{responseData:Rt(e.responseData)},...e.error!==void 0&&{error:kt(e.error),...At(e.error)}}),t||`anonymous`)}catch{}}var j={trackEvent:Lt,trackApiCall:zt,flush:Pt,setLastError:Mt,consumeLastError:Nt,_internal:{sanitizeError:kt,extractErrorDetails:At,toSlsRecord:It,sendToSls:Ft,getSlsUrl:Et,sanitizePayload:Rt}},M=class extends Error{code;responseData;constructor(e,t,n){super(e),this.name=`ApiError`,this.code=t,this.responseData=n}};const N=f.create({timeout:1e4,headers:{"Content-Type":`application/json`}});N.interceptors.request.use(e=>(e.baseURL=D.getApiBase(),e.headers.set(`X-SkillAtlas-Agent-Id`,D.getAgentId()),e._slsStartTime=Date.now(),e)),N.interceptors.response.use(e=>{let t=e.config,n=t._slsStartTime,r=n?Date.now()-n:0,i=(t.method||`GET`).toUpperCase(),a=t.url||``,o=`${t.baseURL||``}${a}`,s=i===`GET`?t.params:t.data,c=String(t.headers?.[`Content-Type`]||``).includes(`multipart`);return j.trackApiCall({method:i,path:a,fullUrl:o,statusCode:e.status,duration:r,requestData:c?`[multipart/form-data]`:s,responseData:e.data}),e},e=>{if(e.config){let t=e.config,n=t._slsStartTime,r=n?Date.now()-n:0,i=(t.method||`GET`).toUpperCase(),a=t.url||``,o=`${t.baseURL||``}${a}`,s=i===`GET`?t.params:t.data,c=String(t.headers?.[`Content-Type`]||``).includes(`multipart`);j.trackApiCall({method:i,path:a,fullUrl:o,statusCode:e.response?.status,duration:r,requestData:c?`[multipart/form-data]`:s,responseData:e.response?.data,error:e})}if(e.response){let{data:t,statusText:n}=e.response;throw new M(t?.message||t?.error||n,t?.code,t)}throw e});async function P(e,t={}){let n=Object.fromEntries(Object.entries(t).filter(([,e])=>e!=null&&e!==``));return(await N.get(e,{params:n})).data}async function Bt(e,t={}){return(await N.post(e,t)).data}async function F(e,t,n){return(await N.post(e,t,{headers:{Authorization:`Bearer ${n}`}})).data}async function I(e,t,n){let r=Object.fromEntries(Object.entries(t).filter(([,e])=>e!=null&&e!==``));return(await N.get(e,{params:r,headers:{Authorization:`Bearer ${n}`}})).data}async function L(e){try{return await e()}catch(e){if(e instanceof M&&e.responseData&&typeof e.responseData==`object`)return e.responseData;throw e}}function Vt(e){let{items:t,page:n,pageSize:r,total:i}=(e&&typeof e==`object`&&`data`in e?e.data:e)??{};return{items:Array.isArray(t)?t:[],page:n??1,pageSize:r??20,total:i??0}}async function Ht(e={}){return Vt(await P(`/api/v1/skills`,{page:1,pageSize:20,...e}))}async function Ut(e){try{return await P(`/api/v1/skills/${e}`)}catch{return null}}async function Wt(e,t){let n=await N.get(`/api/v1/download`,{params:{slug:e,version:t},responseType:`arraybuffer`});return Buffer.from(n.data)}async function Gt(e){return L(()=>Bt(`/api/v1/agents/register`,e))}async function Kt(e){return L(()=>P(`/api/v1/agents/${e}/challenge`))}async function qt(e){return L(()=>Bt(`/api/v1/agents/authenticate`,e))}async function Jt(e,t){return L(()=>F(`/api/v1/community/skills/reviews`,e,t))}async function Yt(e,t){return(await N.delete(e,{headers:{Authorization:`Bearer ${t}`}})).data}async function Xt(e,t,n,r={},i){return(await N.post(e,t,{headers:{Authorization:`Bearer ${n}`,...r},...i!==void 0&&{timeout:i}})).data}async function Zt(e,t,n){return(await N.post(e,t,{headers:{Authorization:`Bearer ${n}`,"Content-Type":`multipart/form-data`}})).data}async function Qt(e,t,n){let r=new FormData,i=new Uint8Array(e.file);return r.append(`file`,new Blob([i]),n),r.append(`slug`,e.slug),r.append(`version`,e.version),r.append(`displayName`,e.displayName),e.summary&&r.append(`summary`,e.summary),e.tags&&e.tags.length>0&&e.tags.forEach(e=>r.append(`tags`,e)),L(()=>Zt(`/api/v1/skills/upload`,r,t))}async function $t(e){return L(()=>P(`/api/v1/agents/${e}/skills/published`))}async function en(e,t){return L(()=>I(`/api/v1/skills/uploads`,{page:1,pageSize:20,...e},t))}function tn(){return crypto.randomUUID()}async function nn(e,t,n,r,i){let a=r||tn();return L(()=>Xt(`/api/v1/service-gateway/services/${e}/invoke`,t,n,{"X-Idempotency-Key":a},i))}async function rn(e){let t=await P(`/api/v1/skills/combinations`,{...e});if(t&&typeof t==`object`&&`data`in t){let e=t.data;return Array.isArray(e)?e:[]}return Array.isArray(t)?t:[]}async function an(e,t){return L(()=>I(`/api/v1/agents/${e}`,{},t))}async function on(e,t){return L(()=>I(`/api/v1/agents/me/credits/records`,{page:1,pageSize:20,...e},t))}const sn=Ut;async function cn(e,t){return L(()=>F(`/api/mailboxes`,e,t))}async function ln(e,t){return L(()=>I(`/api/mailboxes`,{page:1,pageSize:20,...e},t))}async function un(e,t){return L(()=>F(`/api/mailboxes/emails`,e,t))}async function dn(e,t,n){return L(()=>I(`/api/mailboxes/emails/sent`,{address:e,page:1,pageSize:20,...t},n))}async function fn(e,t,n){return L(()=>I(`/api/mailboxes/emails/sent/detail`,{address:e,emailId:t},n))}async function pn(e,t,n){return L(()=>I(`/api/mailboxes/emails/received`,{address:e,page:1,pageSize:20,...t},n))}async function mn(e,t,n){return L(()=>I(`/api/mailboxes/emails/received/detail`,{address:e,emailId:t},n))}async function hn(e,t){return L(()=>F(`/api/vault/secrets`,e,t))}async function gn(e,t){return L(()=>I(`/api/vault/secrets/${encodeURIComponent(e)}`,{},t))}async function _n(e){return L(()=>I(`/api/vault/secrets`,{},e))}async function vn(e,t){return L(()=>Yt(`/api/vault/secrets/${encodeURIComponent(e)}`,t))}const R=re.homedir(),{env:z}=process,yn=z.XDG_DATA_HOME||(R?p.join(R,`.local`,`share`):void 0),bn=z.XDG_CONFIG_HOME||(R?p.join(R,`.config`):void 0);z.XDG_STATE_HOME||R&&p.join(R,`.local`,`state`),z.XDG_CACHE_HOME||R&&p.join(R,`.cache`),z.XDG_RUNTIME_DIR;const xn=(z.XDG_DATA_DIRS||`/usr/local/share/:/usr/share/`).split(`:`);yn&&xn.unshift(yn);const Sn=(z.XDG_CONFIG_DIRS||`/etc/xdg`).split(`:`);bn&&Sn.unshift(bn);const B=ie(),Cn=bn??h(B,`.config`),wn=process.env.CODEX_HOME?.trim()||h(B,`.codex`),Tn=process.env.CLAUDE_CONFIG_DIR?.trim()||h(B,`.claude`);function En(e=B,t=y){return t(h(e,`.openclaw`))?h(e,`.openclaw/skills`):t(h(e,`.clawdbot`))?h(e,`.clawdbot/skills`):t(h(e,`.moltbot`))?h(e,`.moltbot/skills`):h(e,`.openclaw/skills`)}const V={"claude-code":{name:`claude-code`,displayName:`Claude Code`,skillsDir:`.claude/skills`,globalSkillsDir:h(Tn,`skills`),detectInstalled:async()=>y(Tn)},openclaw:{name:`openclaw`,displayName:`OpenClaw`,skillsDir:`skills`,globalSkillsDir:En(),detectInstalled:async()=>y(h(B,`.openclaw`))||y(h(B,`.clawdbot`))||y(h(B,`.moltbot`))},cline:{name:`cline`,displayName:`Cline`,skillsDir:`.cline/skills`,globalSkillsDir:h(B,`.cline`,`skills`),detectInstalled:async()=>y(h(B,`.cline`))},antigravity:{name:`antigravity`,displayName:`Antigravity`,skillsDir:`.agent/skills`,globalSkillsDir:h(B,`.gemini/antigravity/skills`),detectInstalled:async()=>y(h(B,`.gemini/antigravity`))},hermes:{name:`hermes`,displayName:`Hermes`,skillsDir:`.hermes/skills`,globalSkillsDir:h(B,`.hermes`,`skills`),detectInstalled:async()=>y(h(B,`.hermes`))},codex:{name:`codex`,displayName:`Codex`,skillsDir:`.agents/skills`,globalSkillsDir:h(wn,`skills`),detectInstalled:async()=>y(wn)||y(`/etc/codex`)},cursor:{name:`cursor`,displayName:`Cursor`,skillsDir:`.agents/skills`,globalSkillsDir:h(B,`.cursor/skills`),detectInstalled:async()=>y(h(B,`.cursor`))},"gemini-cli":{name:`gemini-cli`,displayName:`Gemini CLI`,skillsDir:`.agents/skills`,globalSkillsDir:h(B,`.gemini/skills`),detectInstalled:async()=>y(h(B,`.gemini`))},"github-copilot":{name:`github-copilot`,displayName:`GitHub Copilot`,skillsDir:`.github/skills`,globalSkillsDir:h(B,`.copilot/skills`),detectInstalled:async()=>y(h(B,`.copilot`))},"iflow-cli":{name:`iflow-cli`,displayName:`iFlow CLI`,skillsDir:`.iflow/skills`,globalSkillsDir:h(B,`.iflow/skills`),detectInstalled:async()=>y(h(B,`.iflow`))},kilo:{name:`kilo`,displayName:`Kilo Code`,skillsDir:`.kilocode/skills`,globalSkillsDir:h(B,`.kilocode/skills`),detectInstalled:async()=>y(h(B,`.kilocode`))},"kimi-cli":{name:`kimi-cli`,displayName:`Kimi Code CLI`,skillsDir:`.agents/skills`,globalSkillsDir:h(B,`.config/agents/skills`),detectInstalled:async()=>y(h(B,`.kimi`))},"kiro-cli":{name:`kiro-cli`,displayName:`Kiro CLI`,skillsDir:`.kiro/skills`,globalSkillsDir:h(B,`.kiro/skills`),detectInstalled:async()=>y(h(B,`.kiro`))},opencode:{name:`opencode`,displayName:`OpenCode`,skillsDir:`.agents/skills`,globalSkillsDir:h(Cn,`opencode/skills`),detectInstalled:async()=>y(h(Cn,`opencode`))},qoder:{name:`qoder`,displayName:`Qoder`,skillsDir:`.qoder/skills`,globalSkillsDir:h(B,`.qoder/skills`),detectInstalled:async()=>y(h(B,`.qoder`))},qoderwork:{name:`qoderwork`,displayName:`QoderWork`,skillsDir:`.qoderwork/skills`,globalSkillsDir:h(B,`.qoderwork/skills`),detectInstalled:async()=>y(h(B,`.qoderwork`))},"qwen-code":{name:`qwen-code`,displayName:`Qwen Code`,skillsDir:`.qwen/skills`,globalSkillsDir:h(B,`.qwen/skills`),detectInstalled:async()=>y(h(B,`.qwen`))},trae:{name:`trae`,displayName:`Trae`,skillsDir:`.trae/skills`,globalSkillsDir:h(B,`.trae/skills`),detectInstalled:async()=>y(h(B,`.trae`))},"trae-cn":{name:`trae-cn`,displayName:`Trae CN`,skillsDir:`.trae/skills`,globalSkillsDir:h(B,`.trae-cn/skills`),detectInstalled:async()=>y(h(B,`.trae-cn`))},windsurf:{name:`windsurf`,displayName:`Windsurf`,skillsDir:`.windsurf/skills`,globalSkillsDir:h(B,`.codeium/windsurf/skills`),detectInstalled:async()=>y(h(B,`.codeium/windsurf`))},universal:{name:`universal`,displayName:`Universal`,skillsDir:`.agents/skills`,globalSkillsDir:h(Cn,`agents/skills`),showInUniversalList:!1,detectInstalled:async()=>!1}},Dn=new ce({write(e,t,n){n()}}),On=O.default.green(`◆`),kn=O.default.red(`■`),An=O.default.green(`◇`),jn=O.default.green(`●`),Mn=O.default.dim(`○`);O.default.green(`✓`);const Nn=O.default.green(`•`),H=O.default.dim(`│`),U=O.default.dim(`─`),Pn=Symbol(`cancel`);async function Fn(e){let{message:t,items:n,maxVisible:r=8,initialSelected:i=[],required:a=!1,lockedSection:o,leadingSpacer:s=0}=e;return new Promise(e=>{let c=se.createInterface({input:process.stdin,output:Dn,terminal:!!process.stdin.isTTY});process.stdin.isTTY&&process.stdin.setRawMode(!0),se.emitKeypressEvents(process.stdin,c);let l=``,u=0,d=new Set(i),f=0,p=o?o.items.map(e=>e.value):[],ee=(e,t)=>{if(!t)return!0;let n=t.toLowerCase();return e.label.toLowerCase().includes(n)||String(e.value).toLowerCase().includes(n)},m=()=>n.filter(e=>ee(e,l)),h=process.stderr.isTTY?process.stderr:process.stdout,g=()=>{if(f>0&&h.isTTY)for(let e=0;e<f;e++)h.write(`\x1B[1A\x1B[2K`)},_=(e=`active`)=>{g();let i=[],a=m(),c=e===`active`?On:e===`cancel`?kn:An;for(let e=0;e<s;e++)i.push(`${H}`);if(i.push(`${c} ${O.default.bold(t)}`),e===`active`){if(o&&o.items.length>0){i.push(`${H}`);let e=`${O.default.bold(o.title)} ${O.default.dim(`── always included`)}`;i.push(`${H} ${U}${U} ${e} ${U.repeat(12)}`);for(let e of o.items)i.push(`${H} ${Nn} ${O.default.bold(e.label)}`);i.push(`${H}`),i.push(`${H} ${U}${U} ${O.default.bold(`Additional agents`)} ${U.repeat(29)}`)}let e=`${H} ${O.default.dim(`Search:`)} ${l}${O.default.inverse(` `)}`;i.push(e),i.push(`${H} ${O.default.dim(`↑↓ move, space select, enter confirm`)}`),i.push(`${H}`);let t=Math.max(0,Math.min(u-Math.floor(r/2),a.length-r)),s=Math.min(a.length,t+r),c=a.slice(t,s);if(a.length===0)i.push(`${H} ${O.default.dim(`No matches found`)}`);else{for(let e=0;e<c.length;e++){let n=c[e],r=t+e,a=d.has(n.value),o=r===u,s=a?jn:Mn,l=o?O.default.underline(n.label):n.label,f=n.hint?O.default.dim(` (${n.hint})`):``,p=o?O.default.cyan(`❯`):` `;i.push(`${H} ${p} ${s} ${l}${f}`)}let e=t,n=a.length-s;if(e>0||n>0){let t=[];e>0&&t.push(`↑ ${e} more`),n>0&&t.push(`↓ ${n} more`),i.push(`${H} ${O.default.dim(t.join(` `))}`)}}i.push(`${H}`);let f=[...o?o.items.map(e=>e.label):[],...n.filter(e=>d.has(e.value)).map(e=>e.label)];if(f.length===0)i.push(`${H} ${O.default.dim(`Selected: (none)`)}`);else{let e=f.length<=3?f.join(`, `):`${f.slice(0,3).join(`, `)} +${f.length-3} more`;i.push(`${H} ${O.default.green(`Selected:`)} ${e}`)}i.push(`${O.default.dim(`└`)}`)}else if(e===`submit`){let e=[...o?o.items.map(e=>e.label):[],...n.filter(e=>d.has(e.value)).map(e=>e.label)];i.push(`${H} ${O.default.dim(e.join(`, `))}`)}else e===`cancel`&&i.push(`${H} ${O.default.strikethrough(O.default.dim(`Cancelled`))}`);h.write(i.join(`
8
8
  `)+`
9
9
  `),f=i.length},v=()=>{process.stdin.removeListener(`keypress`,ne),process.stdin.isTTY&&process.stdin.setRawMode(!1),c.close()},te=()=>{a&&d.size===0&&p.length===0||(_(`submit`),v(),e([...p,...Array.from(d)]))},y=()=>{_(`cancel`),v(),e(Pn)},ne=(e,t)=>{if(!t)return;let n=m();if(t.name===`return`){te();return}if(t.name===`escape`||t.ctrl&&t.name===`c`){y();return}if(t.name===`up`){u=Math.max(0,u-1),_();return}if(t.name===`down`){u=Math.min(n.length-1,u+1),_();return}if(t.name===`space`){let e=n[u];e&&(d.has(e.value)?d.delete(e.value):d.add(e.value)),_();return}if(t.name===`backspace`){l=l.slice(0,-1),u=0,_();return}if(t.sequence&&!t.ctrl&&!t.meta&&t.sequence.length===1){l+=t.sequence,u=0,_();return}};process.stdin.on(`keypress`,ne),_()})}const In=m(be(import.meta.url));function W(e,t){let n=g(v(e)),r=g(v(t));return r.startsWith(n+te)||r===n}async function Ln(e){let t=v(e),n=m(t),r=ee(t);try{return h(await me(n),r)}catch{return t}}function Rn(e,t){return v(m(e),t)}async function zn(e,t){try{let n=v(e),r=v(t),[i,a]=await Promise.all([me(n).catch(()=>n),me(r).catch(()=>r)]);if(i===a||await Ln(e)===await Ln(t))return!0;try{if((await ue(t)).isSymbolicLink()){if(Rn(t,await pe(t))===n)return!0;await x(t)}else await x(t,{recursive:!0})}catch(e){if(e&&typeof e==`object`&&`code`in e&&e.code===`ELOOP`)try{await x(t,{force:!0})}catch{}}let o=m(t);return await b(o,{recursive:!0}),await _e(_(await Ln(o),e),t,ae()===`win32`?`junction`:void 0),!0}catch{return!1}}async function G(e){try{await x(e,{recursive:!0,force:!0})}catch{}await b(e,{recursive:!0})}async function Bn(e,t){let n=!1,r=e.currentVersion?.version??``;if(!e.slug||!r)return Qn(e,t),await Kn(t),!1;let i=await Wt(e.slug,r);return i&&i.length>0&&(n=await Yn(i,t)),n||(xe(`No package available, generating from metadata...`),Qn(e,t),await Kn(t),console.log(` Generated: SKILL.md from metadata`)),n}function Vn(e,t,n){let r=V[e],i=t?ie():n||process.cwd();return t?r.globalSkillsDir===void 0?h(i,r.skillsDir):r.globalSkillsDir:h(i,r.skillsDir)}async function K(e,t,n={}){let r=V[t],i=n.global??!1,a=n.cwd||process.cwd(),o=n.mode??`symlink`,s=n.path?.trim(),c=Hn(e.slug),l;if(s){let n=v(s);if(l=h(n,c),!W(n,l))return{success:!1,path:l,mode:`copy`,error:`Invalid path: potential path traversal detected`};try{await G(l),await Bn(e,l);try{await Y(t,{path:n,mode:o})}catch{}return{success:!0,path:l,mode:`copy`}}catch(e){return{success:!1,path:l,mode:`copy`,error:e instanceof Error?e.message:`Unknown error`}}}if(i&&r.globalSkillsDir===void 0)return{success:!1,path:``,mode:o,error:`${r.displayName} does not support global skill installation`};let u=Un(i,a),d=h(u,c),f=Vn(t,i,a);if(l=h(f,c),!W(u,d)||!W(f,l))return{success:!1,path:l,mode:o,error:`Invalid skill name: potential path traversal detected`};async function p(t){await Bn(e,t)}try{if(o===`copy`){await G(l),await p(l);try{await Y(t,{global:i,cwd:a,mode:o})}catch{}return{success:!0,path:l,mode:`copy`}}if(await G(d),await p(d),!await zn(d,l)){await G(l),await le(d,l,{recursive:!0});try{await Y(t,{global:i,cwd:a,mode:o})}catch{}return{success:!0,path:l,canonicalPath:d,mode:`symlink`,symlinkFailed:!0}}try{await Y(t,{global:i,cwd:a,mode:o})}catch{}return{success:!0,path:l,canonicalPath:d,mode:`symlink`}}catch(e){return{success:!1,path:l,mode:o,error:e instanceof Error?e.message:`Unknown error`}}}function Hn(e){return e.toLowerCase().replace(/[^a-z0-9._]+/g,`-`).replace(/^[.\-]+|[.\-]+$/g,``).substring(0,255)||`unnamed-skill`}function Un(e,t){return h(e?ie():t||process.cwd(),`.agents`,`skills`)}const Wn=`## 必须:执行后评价上报(SkillAtlas)`,Gn=`${Wn}
10
10
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skill-atlas-cli",
3
- "version": "0.11.0",
3
+ "version": "0.11.1",
4
4
  "description": "skill-atlas CLI - 虾小宝 命令行工具",
5
5
  "homepage": "https://skillhub.wanuai.cn/",
6
6
  "type": "module",