agent-skill-manager 2.2.0 → 2.3.0
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/README.md +10 -1
- package/dist/agent-skill-manager.js +413 -383
- package/dist/{chunk-y89teqgt.js → chunk-76faq0t9.js} +41 -41
- package/dist/{chunk-d61nf7gg.js → chunk-83zxj8cj.js} +1 -1
- package/dist/{chunk-vgzgtfy6.js → chunk-chw0sgjp.js} +1 -1
- package/dist/chunk-dtg819nd.js +19 -0
- package/package.json +1 -1
- package/dist/chunk-796ss41d.js +0 -15
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{V as z,Y as B}from"./chunk-chw0sgjp.js";import{readFile as J,writeFile as K,mkdir as M,copyFile as N}from"fs/promises";import{execFile as O}from"child_process";import{promisify as Q}from"util";import{dirname as R}from"path";var S=Q(O);function G(){return{version:1,skills:{}}}async function H(){let j=B(),v;try{v=await J(j,"utf-8")}catch(q){if(q?.code==="ENOENT")return z("lock: file not found, returning empty lock"),G();throw q}try{let q=JSON.parse(v);if(q.version!==1||typeof q.skills!=="object"||q.skills===null)throw Error("invalid schema");return z(`lock: loaded ${Object.keys(q.skills).length} entries`),q}catch{let q=j+".bak";z(`lock: parse error, backing up to ${q}`);try{await N(j,q)}catch{}return console.error(`Warning: .skill-lock.json was corrupted. Backup saved to ${q}. Starting fresh.`),G()}}async function Z(j,v){let q=await H();q.skills[j]=v,await I(q),z(`lock: wrote entry for "${j}"`)}async function $(j){let v=await H();if(!(j in v.skills)){z(`lock: no entry for "${j}", nothing to remove`);return}delete v.skills[j],await I(v),z(`lock: removed entry for "${j}"`)}async function I(j){let v=B();await M(R(v),{recursive:!0}),await K(v,JSON.stringify(j,null,2)+`
|
|
2
2
|
`,"utf-8")}async function A(j){try{let{stdout:v}=await S("git",["rev-parse","HEAD"],{cwd:j,timeout:5000});return v.trim()||null}catch{return z("lock: could not read commit hash from cloned repo"),null}}export{Z as writeLockEntry,$ as removeLockEntry,H as readLock,A as getCommitHash};
|
|
3
3
|
export{H as a,Z as b,$ as c,A as d};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import{createRequire as k}from"node:module";var S=Object.create;var{getPrototypeOf:U,defineProperty:K,getOwnPropertyNames:j}=Object;var E=Object.prototype.hasOwnProperty;var F=(x,$,b)=>{b=x!=null?S(U(x)):{};let q=$||!x||!x.__esModule?K(b,"default",{value:x,enumerable:!0}):b;for(let V of j(x))if(!E.call(q,V))K(q,V,{get:()=>x[V],enumerable:!0});return q};var h=(x,$)=>()=>($||x(($={exports:{}}).exports,$),$.exports);var I=k(import.meta.url);import{readFile as W,writeFile as v,mkdir as R,copyFile as A}from"fs/promises";import{join as B,resolve as Z,dirname as s}from"path";import{fileURLToPath as H}from"url";import{homedir as G}from"os";var L=!1,M=0;function T(x){if(L=x,x)M=performance.now()}function z(x){if(!L)return;let $=Math.round(performance.now()-M),q=globalThis.__CLI_NO_COLOR?`[verbose] +${$}ms`:`\x1B[2m[verbose] +${$}ms\x1B[0m`;console.error(`${q} ${x}`)}var D=H(import.meta.url),X=s(D),w=G(),J=B(w,".config","agent-skill-manager"),y=B(J,"config.json"),O=B(J,".skill-lock.json"),m=B(J,"skill-index"),N=[{name:"claude",label:"Claude Code",global:"~/.claude/skills",project:".claude/skills",enabled:!0},{name:"agents",label:"Agents",global:"~/.agents/skills",project:".agents/skills",enabled:!0},{name:"codex",label:"Codex",global:"~/.codex/skills",project:".codex/skills",enabled:!0},{name:"opencode",label:"OpenCode",global:"~/.config/opencode/skills",project:".opencode/skills",enabled:!0},{name:"openclaw",label:"OpenClaw",global:"~/.openclaw/skills",project:".openclaw/skills",enabled:!0},{name:"cursor",label:"Cursor",global:"~/.cursor/rules",project:".cursor/rules",enabled:!0},{name:"copilot",label:"GitHub Copilot",global:"~/.github/instructions",project:".github/instructions",enabled:!0},{name:"windsurf",label:"Windsurf",global:"~/.windsurf/rules",project:".windsurf/rules",enabled:!0},{name:"antigravity",label:"Google Antigravity",global:"~/.antigravity/skills",project:".antigravity/skills",enabled:!0},{name:"gemini",label:"Gemini CLI",global:"~/.gemini/skills",project:".gemini/skills",enabled:!0},{name:"hermes",label:"Hermes",global:"~/.hermes/skills",project:".hermes/skills",enabled:!0},{name:"cline",label:"Cline",global:"~/Documents/Cline/Rules",project:".clinerules",enabled:!0},{name:"roocode",label:"Roo Code",global:"~/.roo/rules",project:".roo/rules",enabled:!0},{name:"continue",label:"Continue",global:"~/.continue/rules",project:".continue/rules",enabled:!0},{name:"aider",label:"Aider",global:"~/.aider/skills",project:".aider/skills",enabled:!0},{name:"zed",label:"Zed",global:"~/.config/zed/prompt_overrides",project:".zed/rules",enabled:!0},{name:"augment",label:"Augment",global:"~/.augment/rules",project:".augment/rules",enabled:!0},{name:"amp",label:"Amp",global:"~/.amp/skills",project:".amp/skills",enabled:!0}];function Q(){return{version:1,providers:N.map((x)=>({...x})),customPaths:[],preferences:{defaultScope:"both",defaultSort:"name"}}}function t(){return y}function f(){return O}function g(){return m}function i(){return Z(X,"..","data","skill-index")}function _(){return Z(X,"..","data","skill-index-resources.json")}async function a(){let x=_(),$=await W(x,"utf-8");return JSON.parse($)}function e(x){if(x.startsWith("~/"))return B(w,x.slice(2));if(x.startsWith("/"))return x;return Z(x)}function u(x){let $=Q(),b=x.providers||[],q=new Set(b.map((V)=>V.name));for(let V of $.providers)if(!q.has(V.name))b.push({...V});return{version:x.version??$.version,providers:b,customPaths:x.customPaths??[],preferences:{defaultScope:x.preferences?.defaultScope??$.preferences.defaultScope,defaultSort:x.preferences?.defaultSort??$.preferences.defaultSort,selectedTools:x.preferences?.selectedTools}}}async function C(){z(`config: checking ${y}`);let x;try{x=await W(y,"utf-8")}catch($){if($?.code==="ENOENT"){z("config: using defaults (file not found)");let b=Q();return await Y(b),b}throw $}try{let $=JSON.parse(x);return z(`config: loaded from ${y}`),u($)}catch{let $=y+".bak";z(`config: parse error, backing up to ${$}`),await A(y,$),console.error(`Warning: Config file was corrupted. Backup saved to ${$}. Using defaults.`);let b=Q();return await Y(b),b}}async function Y(x){await R(J,{recursive:!0}),await v(y,JSON.stringify(x,null,2)+`
|
|
2
2
|
`,"utf-8")}async function xx(x){let $=await C();$.preferences.selectedTools=x,await Y($)}export{xx as saveSelectedTools,Y as saveConfig,e as resolveProviderPath,a as loadSkillIndexResources,C as loadConfig,_ as getSkillIndexResourcesPath,f as getLockPath,g as getIndexDir,Q as getDefaultConfig,t as getConfigPath,i as getBundledIndexDir};
|
|
3
|
-
export{F as
|
|
3
|
+
export{F as R,h as S,I as T,T as U,z as V,Q as W,t as X,f as Y,g as Z,i as _,e as $,C as aa,Y as ba};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import{$ as x,V as N}from"./chunk-chw0sgjp.js";import{readdir as W,stat as S,lstat as $z,readlink as Dz,readFile as k,realpath as s}from"fs/promises";import{join as T,resolve as e,basename as Wz}from"path";import{homedir as c}from"os";function o(z){let Y={},$=z.split(`
|
|
2
|
+
`),Z=!1,J=!1,X=null,O=[],K="none",Q=-1,H=null;function U(){if(X){let B=O.join(" ").trim();if(B)Y[X]=B;X=null,O=[],K="none",Q=-1}}for(let B of $){if(B.trim()==="---")if(!J){J=!0,Z=!0;continue}else{U();break}if(!Z)continue;if(K!=="none"&&X){let L=B.replace(/^\s*/,""),V=B.length-L.length;if(V>0&&L.length>0){if(Q===-1)Q=V;O.push(L);continue}else if(L.length===0)continue;else U()}if(H!==null){let L=B.match(/^\s+(\w[\w-]*):\s*(.*?)\s*$/);if(L){let V=L[1],_=L[2].replace(/^["']|["']$/g,"");if(_)Y[`${H}.${V}`]=_;continue}if(B.trim().length>0)H=null;else continue}let F=B.match(/^(\w[\w-]*):\s*(.*?)\s*$/);if(F){U();let L=F[1],V=F[2];if(V==="|"||V===">")X=L,O=[],K=V==="|"?"literal":"folded";else if(V==="|+"||V===">+"||V==="|-"||V===">-")X=L,O=[],K=V.startsWith("|")?"literal":"folded";else{let j=V.replace(/^["']|["']$/g,"");if(j)Y[L]=j;else H=L}}}return U(),Y}function r(z){return z["metadata.version"]||z.version||"0.0.0"}function i(z){let Y=z["allowed-tools"]||"";if(!Y.trim())return[];return Y.split(/[\s,]+/).map(($)=>$.trim()).filter(Boolean)}function l(z){if(!z)return 0;let Y=z.split(/\s+/).map((Z)=>Z.trim()).filter(Boolean).length,$=0;for(let Z=0;Z<z.length;Z++)if(z.charCodeAt(Z)===32)$++;return Y+$}function m(z){if(!Number.isFinite(z)||z<0)return"~0 tokens";if(z<1000)return`~${z} tokens`;if(z<1e4)return`~${(z/1000).toFixed(1).replace(/\.0$/,"")}k tokens`;return`~${Math.round(z/1000)}k tokens`}var xz=T(c(),".claude","plugins","marketplaces"),Sz=T(c(),".codex","plugins","cache"),wz=T(c(),".codex","config.toml"),AY=T(c(),".agents","plugins","marketplace.json");function Cz(z,Y){let $=[];for(let Z of z.providers){if(!Z.enabled){N(`scan: skipping disabled provider "${Z.name}"`);continue}if(Y==="global"||Y==="both"){let J=x(Z.global);N(`scan: adding location ${J} (${Z.label}, global)`),$.push({dir:J,location:`global-${Z.name}`,scope:"global",providerName:Z.name,providerLabel:Z.label})}if(Y==="project"||Y==="both"){let J=x(Z.project);N(`scan: adding location ${J} (${Z.label}, project)`),$.push({dir:J,location:`project-${Z.name}`,scope:"project",providerName:Z.name,providerLabel:Z.label})}}for(let Z of z.customPaths)if(Y===Z.scope||Y==="both"){let J=x(Z.path);N(`scan: adding custom location ${J} (${Z.label}, ${Z.scope})`),$.push({dir:J,location:`${Z.scope}-custom`,scope:Z.scope,providerName:"custom",providerLabel:Z.label})}return $}async function zz(z){try{return(await W(z,{recursive:!0})).length}catch{return 0}}async function yz(z){let Y=[];N(`scanning: ${z.dir} (${z.location})`);let $;try{$=await W(z.dir)}catch{return N(`scanning: ${z.dir} — not found, skipping`),Y}for(let Z of $){let J=T(z.dir,Z);try{if(!(await S(J)).isDirectory()){N(` skip: "${Z}" — not a directory`);continue}}catch{N(` skip: "${Z}" — stat failed`);continue}let X=T(J,"SKILL.md"),O;try{O=await k(X,"utf-8")}catch{N(` skip: "${Z}" — no SKILL.md`);continue}let K=o(O),Q=!1,H=null;try{if((await $z(J)).isSymbolicLink())Q=!0,H=await Dz(J)}catch{}let U=e(J),B;try{B=await s(J)}catch{B=U}Y.push({name:K.name||Z,version:r(K),description:(K.description||"").replace(/\s*\n\s*/g," ").trim(),creator:K["metadata.creator"]||"",license:(K.license||"").trim(),compatibility:(K.compatibility||"").trim(),allowedTools:i(K),effort:K.effort||K["metadata.effort"]||void 0,dirName:Z,path:U,originalPath:J,location:z.location,scope:z.scope,provider:z.providerName,providerLabel:z.providerLabel,isSymlink:Q,symlinkTarget:H,realPath:B,tokenCount:l(O)})}return N(`found ${Y.length} skill(s) in ${z.dir}`),Y}async function Jz(z){let Y=[],$;try{$=await W(z)}catch{return Y}for(let Z of $){let J=T(z,Z),X;try{X=await $z(J)}catch{continue}if(X.isSymbolicLink())continue;if(X.isDirectory()){let O=T(J,"SKILL.md");try{await S(O),Y.push(J)}catch{let K=await Jz(J);Y.push(...K)}}}return Y}async function Pz(z){let Y=z??xz,$=[];N(`scan: checking plugin marketplaces at ${Y}`);let Z;try{Z=await W(Y)}catch{return N("scan: plugin marketplaces dir not found, skipping"),$}for(let J of Z){let X=T(Y,J),O;try{O=await S(X)}catch{continue}if(!O.isDirectory())continue;N(`scan: scanning marketplace "${J}"`);let K=await Jz(X);for(let Q of K){let H=T(Q,"SKILL.md"),U;try{U=await k(H,"utf-8")}catch{continue}let B=o(U),F=Wz(Q),L=e(Q),V;try{V=await s(Q)}catch{V=L}$.push({name:B.name||F,version:r(B),description:(B.description||"").replace(/\s*\n\s*/g," ").trim(),creator:B["metadata.creator"]||"",license:(B.license||"").trim(),compatibility:(B.compatibility||"").trim(),allowedTools:i(B),effort:B.effort||B["metadata.effort"]||void 0,dirName:F,path:L,originalPath:Q,location:`global-plugin-${J}`,scope:"global",provider:"plugin",providerLabel:`Plugin (${J})`,isSymlink:!1,symlinkTarget:null,realPath:V,marketplace:J,tokenCount:l(U)})}}return N(`scan: found ${$.length} plugin marketplace skill(s)`),$}function bz(z){let Y=new Map,$=null;for(let Z of z.split(`
|
|
3
|
+
`)){let J=Z.trim(),X=J.match(/^\[plugins\.([^\]]+)\]$/);if(X){$=X[1].trim().replace(/^["']|["']$/g,"");continue}if(J.startsWith("[")){$=null;continue}if($&&J.startsWith("enabled")){let O=J.match(/^enabled\s*=\s*(true|false)/i);if(O)Y.set($,O[1].toLowerCase()==="true")}}return Y}async function vz(z){let Y=z??wz;try{let $=await k(Y,"utf-8");return bz($)}catch{return N(`codex: config.toml not found at ${Y}, skipping enabled check`),new Map}}async function hz(z,Y){let $=z??Sz,Z=[];N(`codex: checking plugin cache at ${$}`);let J;try{J=await W($)}catch{return N("codex: plugin cache dir not found, skipping"),Z}let X=await vz(Y);for(let O of J){let K=T($,O),Q;try{Q=await S(K)}catch{continue}if(!Q.isDirectory())continue;let H;try{H=await W(K)}catch{continue}for(let U of H){let B=T(K,U),F;try{F=await S(B)}catch{continue}if(!F.isDirectory())continue;let L;try{L=await W(B)}catch{continue}let V=(await Promise.all(L.map(async(I)=>{try{return(await S(T(B,I))).isDirectory()?I:null}catch{return null}}))).filter((I)=>I!==null);if(V.length===0)continue;let j=V.sort(Xz).at(-1),_=T(B,j),M=T(_,".codex-plugin","plugin.json"),R;try{let I=await k(M,"utf-8");R=JSON.parse(I)}catch{N(`codex: no valid plugin.json at ${M}, skipping`);continue}let E=e(_),D;try{D=await s(_)}catch{D=E}let y=R.interface?.displayName||R.name||U,P=R.version||j,b=(R.description||"").replace(/\s*\n\s*/g," ").trim(),q=X.has(U)?X.get(U):!0;Z.push({name:y,version:P,description:b,creator:"",license:"",compatibility:"",allowedTools:[],dirName:U,path:E,originalPath:_,location:`global-codex-plugin-${O}`,scope:"global",provider:"codex-plugin",providerLabel:`Codex Plugin (${O})`,isSymlink:!1,symlinkTarget:null,realPath:D,marketplace:O,codexPlugin:{category:R.interface?.category,hasMcpConfig:R.mcp!=null&&Object.keys(R.mcp).length>0,pluginName:U,pluginVersion:j,enabled:q}})}}return N(`codex: found ${Z.length} plugin(s) in cache`),Z}async function FY(z,Y,$,Z){let J=Cz(z,Y),X=Y==="global"||Y==="both",[O,K,Q]=await Promise.all([Promise.all(J.map(yz)),X?Pz($):Promise.resolve([]),X?hz(Z):Promise.resolve([])]),H=O.flat(),U=new Set(H.map((F)=>F.realPath)),B=new Set(H.map((F)=>F.name.toLowerCase()));for(let F of K)if(!U.has(F.realPath)&&!B.has(F.name.toLowerCase()))H.push(F),U.add(F.realPath),B.add(F.name.toLowerCase());for(let F of Q)if(!U.has(F.realPath)&&!B.has(F.name.toLowerCase()))H.push(F),U.add(F.realPath),B.add(F.name.toLowerCase());return H}function _Y(z,Y){if(!Y.trim())return z;let $=Y.toLowerCase();return z.filter((Z)=>Z.name.toLowerCase().includes($)||Z.description.toLowerCase().includes($)||Z.creator.toLowerCase().includes($)||Z.effort&&Z.effort.toLowerCase().includes($)||Z.location.toLowerCase().includes($)||Z.providerLabel.toLowerCase().includes($))}function Xz(z,Y){let $=z.split("."),Z=Y.split("."),J=Math.max($.length,Z.length);for(let X=0;X<J;X++){let O=parseInt($[X]??"0",10),K=parseInt(Z[X]??"0",10);if(isNaN(O)||isNaN(K))return z.localeCompare(Y);if(O!==K)return O-K}return 0}function qY(z,Y){let $=[...z];switch(Y){case"name":$.sort((Z,J)=>Z.name.localeCompare(J.name));break;case"version":$.sort((Z,J)=>Xz(Z.version,J.version));break;case"location":$.sort((Z,J)=>Z.location.localeCompare(J.location));break}return $}import{rm as Yz,readFile as Uz,writeFile as fz,access as gz,lstat as mz,symlink as kz}from"fs/promises";import{join as Qz,resolve as w,dirname as Gz,relative as cz}from"path";import{homedir as pz}from"os";var uz=pz();function dz(z,Y){let $={directories:[],ruleFiles:[],agentsBlocks:[]};$.directories.push({path:z.originalPath,isSymlink:z.isSymlink});let Z=z.dirName;if(z.scope==="project")$.ruleFiles.push(w(".cursor","rules",`${Z}.mdc`),w(".windsurf","rules",`${Z}.md`),w(".github","instructions",`${Z}.instructions.md`)),$.agentsBlocks.push({file:w("AGENTS.md"),skillName:Z});if(z.scope==="global"){for(let O of Y.providers){if(!O.enabled)continue;let K=x(O.global),Q=Qz(Gz(K),"AGENTS.md");$.agentsBlocks.push({file:Q,skillName:Z})}let J=Qz(uz,".codex","AGENTS.md");if(!$.agentsBlocks.some((O)=>O.file===J))$.agentsBlocks.push({file:J,skillName:Z})}return $}function EY(z,Y,$){let Z=Y.filter((Q)=>Q.dirName===z);if(Z.length===0)return{directories:[],ruleFiles:[],agentsBlocks:[]};let J={directories:[],ruleFiles:[],agentsBlocks:[]},X=new Set,O=new Set,K=new Set;for(let Q of Z){let H=dz(Q,$);for(let U of H.directories)if(!X.has(U.path))X.add(U.path),J.directories.push(U);for(let U of H.ruleFiles)if(!O.has(U))O.add(U),J.ruleFiles.push(U);for(let U of H.agentsBlocks){let B=`${U.file}::${U.skillName}`;if(!K.has(B))K.add(B),J.agentsBlocks.push(U)}}return J}async function v(z){try{return await gz(z),!0}catch{return!1}}async function nz(z,Y){if(!await v(z))return;let $=await Uz(z,"utf-8");for(let Z of["agent-skill-manager","skill-manager","pskills"]){let J=`<!-- ${Z}: ${Y} -->`,X=`<!-- /${Z}: ${Y} -->`,O=$.indexOf(J),K=$.indexOf(X);if(O===-1||K===-1)continue;let Q=O;if(Q>0&&$[Q-1]===`
|
|
4
|
+
`)Q--;let U=K+X.length;if(U<$.length&&$[U]===`
|
|
5
|
+
`)U++;$=$.slice(0,Q)+$.slice(U)}await fz(z,$,"utf-8")}async function DY(z,Y){let $=[];for(let Z of z.directories)try{if(Z.isSymlink)await Yz(Z.path),$.push(`Removed symlink: ${Z.path}`);else await Yz(Z.path,{recursive:!0,force:!0}),$.push(`Removed directory: ${Z.path}`);if(Y&&w(Z.path)!==w(Y)){let J=Gz(Z.path),X=cz(J,Y);await kz(X,Z.path,"dir"),$.push(`Created symlink: ${Z.path} -> ${X}`)}}catch(J){$.push(`Failed to remove ${Z.path}: ${J.message}`)}for(let Z of z.ruleFiles)if(await v(Z))try{await Yz(Z),$.push(`Removed rule file: ${Z}`)}catch(J){$.push(`Failed to remove ${Z}: ${J.message}`)}for(let Z of z.agentsBlocks)try{await nz(Z.file,Z.skillName),$.push(`Cleaned AGENTS.md block in: ${Z.file}`)}catch(J){$.push(`Failed to clean AGENTS.md block: ${J.message}`)}return $}async function WY(z){let Y=[];for(let $ of z.directories)if(await v($.path)){let J=(await mz($.path)).isSymbolicLink()?"symlink":"directory";Y.push(`${$.path} (${J})`)}for(let $ of z.ruleFiles)if(await v($))Y.push($);for(let $ of z.agentsBlocks)if(await v($.file)){let Z=await Uz($.file,"utf-8");if(Z.includes(`<!-- agent-skill-manager: ${$.skillName} -->`)||Z.includes(`<!-- skill-manager: ${$.skillName} -->`)||Z.includes(`<!-- pskills: ${$.skillName} -->`))Y.push(`${$.file} (AGENTS.md block)`)}return Y}var A=()=>{if(process.env.NO_COLOR!==void 0)return!1;if(globalThis.__CLI_NO_COLOR)return!1;if(!process.stdout.isTTY)return!1;return!0},G={bold:(z)=>A()?`\x1B[1m${z}\x1B[0m`:z,cyan:(z)=>A()?`\x1B[36m${z}\x1B[0m`:z,green:(z)=>A()?`\x1B[32m${z}\x1B[0m`:z,yellow:(z)=>A()?`\x1B[33m${z}\x1B[0m`:z,dim:(z)=>A()?`\x1B[2m${z}\x1B[0m`:z,white:(z)=>A()?`\x1B[37m${z}\x1B[0m`:z,red:(z)=>A()?`\x1B[31m${z}\x1B[0m`:z,blue:(z)=>A()?`\x1B[34m${z}\x1B[0m`:z,blueBold:(z)=>A()?`\x1B[34;1m${z}\x1B[0m`:z,magenta:(z)=>A()?`\x1B[35m${z}\x1B[0m`:z,bgDim:(z)=>A()?`\x1B[48;5;236m${z}\x1B[0m`:z,bgRed:(z)=>A()?`\x1B[41m\x1B[37m\x1B[1m${z}\x1B[0m`:z,bgYellow:(z)=>A()?`\x1B[43m\x1B[30m\x1B[1m${z}\x1B[0m`:z,bgGreen:(z)=>A()?`\x1B[42m\x1B[30m\x1B[1m${z}\x1B[0m`:z,bgCyan:(z)=>A()?`\x1B[46m\x1B[30m\x1B[1m${z}\x1B[0m`:z};function h(z){if(!z)return"";switch(z.toLowerCase()){case"low":return G.green(z);case"medium":return G.yellow(z);case"high":return G.red(z);case"max":return G.magenta(z);default:return z}}var Bz={claude:G.blueBold,codex:G.cyan,"codex-plugin":G.cyan,openclaw:G.yellow,agents:G.green,custom:G.magenta,cursor:G.blue,windsurf:G.cyan,cline:G.green,roocode:G.magenta,continue:G.yellow,copilot:G.white,aider:G.red,opencode:G.cyan,zed:G.blue,augment:G.green,amp:G.yellow};function p(z,Y){return(Bz[z]||G.dim)(Y)}function u(z,Y){if(!A())return`[${Y}]`;return(Bz[z]||G.dim)(`[${Y}]`)}function C(z){let Y=process.env.HOME||process.env.USERPROFILE||"";if(Y&&z.startsWith(Y))return"~"+z.slice(Y.length);return z}function CY(z){if(z.length===0)return"No skills found.";let Y=["Name","Version","Creator","Effort","Tool","Scope","Type","Path"],$=z.map((Q)=>[Q.name,Q.version,Q.creator||"—",Q.effort||"—",Q.providerLabel,Q.scope,Q.isSymlink?"symlink":"directory",C(Q.path)]),Z=Y.map((Q,H)=>Math.max(Q.length,...$.map((U)=>U[H].length))),J=(Q,H)=>Q.padEnd(H),X=Y.map((Q,H)=>J(Q,Z[H])).join(" "),O=Z.map((Q)=>"-".repeat(Q)).join("--"),K=$.map((Q)=>Q.map((H,U)=>J(H,Z[U])).join(" "));return[A()?G.bold(X):X,O,...K].join(`
|
|
6
|
+
`)}function f(z){let Y=new Map;for(let Z of z){let J=`${Z.dirName}||${Z.scope}`,X=Y.get(J)??[];X.push(Z),Y.set(J,X)}let $=[];for(let[,Z]of Y){let J=Z[0],X=new Set(Z.map((K)=>K.scope)),O=new Set(Z.map((K)=>K.isSymlink?"symlink":"directory"));$.push({name:J.name,version:J.version,creator:J.creator||"",effort:J.effort||"",tokens:typeof J.tokenCount==="number"?m(J.tokenCount):"",providers:Z.map((K)=>({provider:K.provider,label:K.providerLabel})),scope:X.size>1?"mixed":J.scope,type:O.size>1?"mixed":J.isSymlink?"symlink":"directory",path:C(J.path),warningCount:Z.reduce((K,Q)=>K+(Q.warnings?.length??0),0)})}return $}var yY=50;function PY(z,Y={}){let $=Y.topN??5,Z=Y.showHint??!0;if(z.length===0)return"No skills found.";let J=[],O=f(z).length,K=z.length,Q=new Set(z.map((j)=>j.provider)),H=z.filter((j)=>j.scope==="global").length,U=z.filter((j)=>j.scope==="project").length,B=`${K} skills (${O} unique) across ${Q.size} tools | ${H} global, ${U} project`;J.push(A()?G.bold(B):B),J.push("");let F=new Map;for(let j of z){let _=F.get(j.provider)??{label:j.providerLabel,count:0};_.count+=1,F.set(j.provider,_)}let L=[...F.entries()].sort((j,_)=>_[1].count-j[1].count).slice(0,$);J.push(A()?G.bold("Top tools:"):"Top tools:");for(let[j,{label:_,count:M}]of L){let R=A()?p(j,`[${_}]`):`[${_}]`;J.push(` ${R} ${M} skill${M===1?"":"s"}`)}J.push(""),J.push(A()?G.bold("Scopes:"):"Scopes:"),J.push(` global ${H} skill${H===1?"":"s"}`),J.push(` project ${U} skill${U===1?"":"s"}`);let V=new Map;for(let j of z)if(j.effort)V.set(j.effort,(V.get(j.effort)??0)+1);if(V.size>0){let j=[...V.entries()].sort((_,M)=>M[1]-_[1]).slice(0,$);J.push(""),J.push(A()?G.bold("Top efforts:"):"Top efforts:");for(let[_,M]of j){let R=h(_),E=Math.max(0,6-_.length);J.push(` ${R}${" ".repeat(E)} ${M} skill${M===1?"":"s"}`)}}if(Z){J.push("");let j="Tip: refine with `asm list -p <tool>`, `asm search <query>`, or `asm list --compact`";J.push(A()?G.dim(j):j)}return J.join(`
|
|
7
|
+
`)}function az(z){if(z.length===0)return"No skills found.";let Y=f(z),$=[],Z=Math.max(4,...Y.map((L)=>L.name.length)),J=Math.max(7,...Y.map((L)=>L.version.length)),X=Y.map((L)=>L.providers.map((V)=>u(V.provider,V.label)).join(" ")),O=Y.map((L)=>L.providers.map((V)=>`[${V.label}]`).join(" ")),K=Math.max(5,...O.map((L)=>L.length)),Q=7,H=(L,V)=>L.padEnd(V);for(let L=0;L<Y.length;L++){let V=Y[L],j=H(V.name,Z),_=G.dim(H(V.version,J)),M=K-O[L].length,R=X[L]+" ".repeat(Math.max(0,M)),E=G.dim(H(V.scope,Q));$.push(`${j} ${_} ${R} ${E}`)}$.push("");let U=z.length,B=Y.length,F=`${U} skills (${B} unique)`;return $.push(G.dim(F)),$.join(`
|
|
8
|
+
`)}function bY(z,Y){if(z.length===0)return"No skills found.";let $=new Map,Z=(H)=>{switch(Y){case"tool":return[H.providerLabel];case"scope":return[H.scope];case"effort":return[H.effort&&H.effort.length>0?H.effort:"(unset)"]}};for(let H of z)for(let U of Z(H)){let B=$.get(U)??[];B.push(H),$.set(U,B)}let J=[...$.entries()].sort((H,U)=>{if(U[1].length!==H[1].length)return U[1].length-H[1].length;return H[0].localeCompare(U[0])}),X=[];for(let[H,U]of J){let B=`${H} (${U.length})`;X.push(A()?G.bold(B):B);let V=az(U).split(`
|
|
9
|
+
`).slice(0,-2).filter((j)=>j.length>0).map((j)=>` ${j}`);X.push(...V),X.push("")}let O=z.length,K=f(z).length,Q=`${O} skills (${K} unique), grouped by ${Y}`;return X.push(G.dim(Q)),X.join(`
|
|
10
|
+
`)}function vY(z,Y){if(!Number.isFinite(Y)||Y<=0||z.length<=Y)return{skills:z,hint:""};let $=z.slice(0,Y),Z=z.length-Y,J=G.dim(`... ${Z} more not shown. Re-run with --limit ${z.length} (or 0) to see all, or refine with -p <tool>.`);return{skills:$,hint:J}}function hY(z){if(z.length===0)return"No skills found.";let Y=f(z),$=[],Z=Math.max(4,...Y.map((q)=>q.name.length)),J=Math.max(7,...Y.map((q)=>q.version.length)),X=Math.max(7,...Y.map((q)=>Math.min((q.creator||"—").length,15))),O=Math.max(6,...Y.map((q)=>(q.effort||"—").length)),K=Y.some((q)=>q.tokens.length>0),Q=K?Math.max(6,...Y.map((q)=>(q.tokens||"—").length)):0,H=7,U=9,B=Y.map((q)=>q.providers.map((I)=>u(I.provider,I.label)).join(" ")),F=Y.map((q)=>q.providers.map((I)=>`[${I.label}]`).join(" ")),L=Math.max(9,...F.map((q)=>q.length)),V=(q,I)=>q.padEnd(I),j=K?` ${V("Tokens",Q)}`:"",_=`${V("Name",Z)} ${V("Version",J)} ${V("Creator",X)} ${V("Effort",O)}${j} ${V("Tools",L)} ${V("Scope",H)} ${V("Type",U)}`;$.push(A()?G.bold(_):_);let M=K?` ${"-".repeat(Q)}`:"";$.push(`${"-".repeat(Z)} ${"-".repeat(J)} ${"-".repeat(X)} ${"-".repeat(O)}${M} ${"-".repeat(L)} ${"-".repeat(H)} ${"-".repeat(U)}`);for(let q=0;q<Y.length;q++){let I=Y[q],g=V(I.name,Z),d=V(I.version,J),n=(I.creator||"—").slice(0,15),a=V(n,X),t=I.effort||"—",Fz=I.effort?h(I.effort):"—",_z=O-t.length,qz=Fz+" ".repeat(Math.max(0,_z)),Iz=K?` ${V(I.tokens||"—",Q)}`:"",Nz=L-F[q].length,Rz=B[q]+" ".repeat(Math.max(0,Nz)),Mz=V(I.scope,H),Tz=V(I.type,U),Ez=I.warningCount>0?` ${G.yellow(`(${I.warningCount} warning${I.warningCount>1?"s":""})`)}`:"";$.push(`${g} ${d} ${a} ${qz}${Iz} ${Rz} ${Mz} ${Tz}${Ez}`)}let R=Y.length,E=z.length,D=new Set(z.map((q)=>q.provider)),y=z.filter((q)=>q.scope==="global").length,P=z.filter((q)=>q.scope==="project").length;$.push("");let b=`${E} skills (${R} unique) across ${D.size} tools | ${y} global, ${P} project`;return $.push(G.dim(b)),$.join(`
|
|
11
|
+
`)}function tz(z,Y){if(!A()||!Y)return z;let $=z.toLowerCase().indexOf(Y.toLowerCase());if($===-1)return z;let Z=z.slice(0,$),J=z.slice($,$+Y.length),X=z.slice($+Y.length);return`${Z}${G.bold(G.yellow(J))}${X}`}function fY(z,Y){if(z.length===0)return`No skills matching "${Y}". Try ${G.bold("asm list")} to see all skills.`;let $=f(z),Z=[];Z.push(G.dim(`Found ${z.length} result${z.length===1?"":"s"} (${$.length} unique) matching "${Y}"`)+`
|
|
12
|
+
`);let J=Math.max(4,...$.map((j)=>j.name.length)),X=Math.max(7,...$.map((j)=>j.version.length)),O=Math.max(7,...$.map((j)=>Math.min((j.creator||"—").length,15))),K=Math.max(6,...$.map((j)=>(j.effort||"—").length)),Q=$.map((j)=>j.providers.map((_)=>u(_.provider,_.label)).join(" ")),H=$.map((j)=>j.providers.map((_)=>`[${_.label}]`).join(" ")),U=Math.max(9,...H.map((j)=>j.length)),B=7,F=9,L=(j,_)=>j.padEnd(_),V=`${L("Name",J)} ${L("Version",X)} ${L("Creator",O)} ${L("Effort",K)} ${L("Tools",U)} ${L("Scope",B)} ${L("Type",F)}`;Z.push(A()?G.bold(V):V),Z.push(`${"-".repeat(J)} ${"-".repeat(X)} ${"-".repeat(O)} ${"-".repeat(K)} ${"-".repeat(U)} ${"-".repeat(B)} ${"-".repeat(F)}`);for(let j=0;j<$.length;j++){let _=$[j],M=tz(_.name,Y),R=J-_.name.length,E=M+" ".repeat(Math.max(0,R)),D=L(_.version,X),y=(_.creator||"—").slice(0,15),P=L(y,O),b=_.effort||"—",q=_.effort?h(_.effort):"—",I=K-b.length,g=q+" ".repeat(Math.max(0,I)),d=U-H[j].length,n=Q[j]+" ".repeat(Math.max(0,d)),a=L(_.scope,B),t=L(_.type,F);Z.push(`${E} ${D} ${P} ${g} ${n} ${a} ${t}`)}return Z.join(`
|
|
13
|
+
`)}function gY(z,Y){if(z.length===0)return"";let $=[];$.push(G.dim(`Found ${z.length} available skill${z.length===1?"":"s"} matching "${Y}"`)+`
|
|
14
|
+
`);for(let Z of z){$.push(` ${G.dim("To install:")} ${G.green(`asm install ${Z.installUrl}`)}`);let J=Z.verified?G.blue(" [verified]"):"";$.push(` ${G.cyan(Z.name)} ${G.dim(`v${Z.version}`)}${J} ${G.dim(`[${Z.repoLabel}]`)}`);for(let X of Vz(Z.description,76))$.push(` ${X}`);$.push("")}return $.join(`
|
|
15
|
+
`)}var Hz=new Set(["Bash","Write","Edit","NotebookEdit"]),oz=new Set(["WebFetch","WebSearch"]);function rz(z){if(Hz.has(z))return G.red(z);if(oz.has(z))return G.yellow(z);return G.green(z)}function Oz(z){if(z.length===0)return"";return z.map(rz).join(" ")}function Kz(z){let Y=z.filter((Z)=>Hz.has(Z));if(Y.length===0)return null;let $=[];if(Y.includes("Bash"))$.push("execute shell commands");if(Y.includes("Write")||Y.includes("Edit")||Y.includes("NotebookEdit"))$.push("modify files");return`This skill can ${$.join(" and ")}`}async function iz(z){let Y=[],$=(X,O)=>`${A()?G.bold(X+":"):X+":"} ${O}`;if(Y.push($("Name",z.name)),Y.push($("Version",z.version)),Y.push($("Creator",z.creator||"—")),Y.push($("License",z.license||"—")),z.compatibility)Y.push($("Compatibility",z.compatibility));if(z.effort)Y.push($("Effort",h(z.effort)));if(Y.push($("Tool",z.providerLabel)),Y.push($("Scope",z.scope)),Y.push($("Location",z.location)),Y.push($("Path",C(z.path))),Y.push($("Type",z.isSymlink?"symlink":"directory")),z.isSymlink&&z.symlinkTarget)Y.push($("Symlink Target",z.symlinkTarget));let Z=z.fileCount??await zz(z.path);if(Y.push($("File Count",String(Z))),typeof z.tokenCount==="number")Y.push($("Est. Tokens",m(z.tokenCount)));if(z.description)Y.push(""),Y.push($("Description",z.description));if(z.allowedTools&&z.allowedTools.length>0){Y.push(""),Y.push(A()?G.bold("Allowed Tools:"):"Allowed Tools:"),Y.push(` ${Oz(z.allowedTools)}`);let X=Kz(z.allowedTools);if(X)Y.push(` ${A()?G.yellow("⚠"):"!"} ${X}`)}Y.push(""),Y.push(A()?G.bold("Eval Score:"):"Eval Score:");let J=jz(z);if(J.length>0){let X=J.length>1;for(let O of J){let K=Lz(O.overallScore),Q=O.providerId?`${O.providerId}@${O.providerVersion??"?"}`:"quality";if(X)Y.push(` ${Q}: ${K} / 100 (${O.grade})`);else Y.push(` Overall: ${K} / 100 (${O.grade})`);let H=O.evaluatedVersion?` — version ${O.evaluatedVersion}`:"";if(Y.push(` ${A()?G.dim("Evaluated:"):"Evaluated:"} ${O.evaluatedAt}${H}`),O.categories.length>0){if(X)Y.push(A()?G.dim(` Categories (${Q}):`):` Categories (${Q}):`);else Y.push(A()?G.dim(" Categories:"):" Categories:");for(let U of O.categories)Y.push(` ${U.name.padEnd(28)} ${U.score}/${U.max}`)}}}else Y.push(A()?G.dim(" Not available — run `asm eval "+z.path+"` to generate one."):" Not available — run `asm eval "+z.path+"` to generate one.");if(z.warnings&&z.warnings.length>0){Y.push(""),Y.push(A()?G.bold("Warnings:"):"Warnings:");for(let X of z.warnings)Y.push(` ${A()?G.yellow("!"):"!"} [${X.category}] ${X.message}`)}return Y.join(`
|
|
16
|
+
`)}function Lz(z){let Y=String(z);if(!A())return Y;if(z>=90)return G.green(Y);if(z>=80)return G.cyan(Y);if(z>=65)return G.yellow(Y);return G.red(Y)}function jz(z){if(z.evalSummaries&&Object.keys(z.evalSummaries).length>0)return Object.values(z.evalSummaries).sort(($,Z)=>{let J=$.providerId??"quality",X=Z.providerId??"quality";if(J==="quality"&&X!=="quality")return-1;if(X==="quality"&&J!=="quality")return 1;return J.localeCompare(X)});return z.evalSummary?[z.evalSummary]:[]}async function mY(z){if(z.length===0)return"No skills found.";if(z.length===1)return iz(z[0]);let Y=[],$=(U,B)=>`${A()?G.bold(U+":"):U+":"} ${B}`,Z=z[0],J=Z.name;if(Y.push(""),Y.push(A()?G.blueBold(` ${J}`):` ${J}`),Y.push(A()?G.dim(" "+"-".repeat(J.length+2)):" "+"-".repeat(J.length+2)),Y.push(""),Y.push($(" Version",Z.version)),Y.push($(" Creator",Z.creator||"—")),Y.push($(" License",Z.license||"—")),Z.compatibility)Y.push($(" Compatibility",Z.compatibility));if(Z.effort)Y.push($(" Effort",h(Z.effort)));let X=Z.fileCount??await zz(Z.path);if(Y.push($(" File Count",String(X))),typeof Z.tokenCount==="number")Y.push($(" Est. Tokens",m(Z.tokenCount)));let O=z.map((U)=>u(U.provider,U.providerLabel)).join(" ");Y.push($(" Installed in",O)),Y.push(""),Y.push(A()?G.bold(" Eval Score:"):" Eval Score:");let K=jz(Z);if(K.length>0){let U=K.length>1;for(let B of K){let F=Lz(B.overallScore),L=B.providerId?`${B.providerId}@${B.providerVersion??"?"}`:"quality";if(U)Y.push(` ${L}: ${F} / 100 (${B.grade})`);else Y.push(` Overall: ${F} / 100 (${B.grade})`);let V=B.evaluatedVersion?` — version ${B.evaluatedVersion}`:"";if(Y.push(` ${A()?G.dim("Evaluated:"):"Evaluated:"} ${B.evaluatedAt}${V}`),B.categories.length>0)for(let j of B.categories)Y.push(` ${j.name.padEnd(28)} ${j.score}/${j.max}`)}}else Y.push(A()?G.dim(` Not available — run \`asm eval ${Z.path}\` to generate one.`):` Not available — run \`asm eval ${Z.path}\` to generate one.`);if(Z.description){Y.push(""),Y.push(A()?G.bold(" Description:"):" Description:");let U=Vz(Z.description,72);for(let B of U)Y.push(" "+B)}if(Z.allowedTools&&Z.allowedTools.length>0){Y.push(""),Y.push(A()?G.bold(" Allowed Tools:"):" Allowed Tools:"),Y.push(` ${Oz(Z.allowedTools)}`);let U=Kz(Z.allowedTools);if(U)Y.push(` ${A()?G.yellow("⚠"):"!"} ${U}`)}Y.push("");let Q=` Installations (${z.length})`;Y.push(A()?G.bold(Q):Q);for(let U=0;U<z.length;U++){let B=z[U],F=p(B.provider,B.providerLabel),L=B.isSymlink?"symlink":"directory",V=G.dim(B.scope);if(Y.push(` ${F} (${V}, ${L})`),Y.push(` ${G.dim("Path:")} ${C(B.path)}`),B.isSymlink&&B.symlinkTarget)Y.push(` ${G.dim("Target:")} ${B.symlinkTarget}`)}let H=z.flatMap((U)=>{if(!U.warnings||U.warnings.length===0)return[];return U.warnings.map((B)=>({...B,provider:U.providerLabel}))});if(H.length>0){Y.push("");let U=` Warnings (${H.length})`;Y.push(A()?G.bold(U):U);for(let B of H){let F=A()?G.yellow("!"):"!";Y.push(` ${F} [${B.category}] ${B.message}`)}}return Y.push(""),Y.join(`
|
|
17
|
+
`)}function Vz(z,Y){let $=z.split(/\s+/),Z=[],J="";for(let X of $)if(J.length+X.length+1>Y&&J.length>0)Z.push(J),J=X;else J=J?J+" "+X:X;if(J)Z.push(J);return Z}function kY(z){return JSON.stringify(z,null,2)}function uY(z){let Y=[],$=new Set,Z=new Map,J=[];for(let Q of z){let H=Z.get(Q.realPath);if(H){if(Q.isSymlink)continue;if(H.isSymlink)J[J.indexOf(H)]=Q,Z.set(Q.realPath,Q);else J.push(Q)}else Z.set(Q.realPath,Q),J.push(Q)}let X=new Map;for(let Q of J){let H=X.get(Q.dirName)??[];H.push(Q),X.set(Q.dirName,H)}for(let[Q,H]of X)if(new Set(H.map((B)=>B.location)).size>=2){Y.push({key:Q,reason:"same-dirName",instances:H});for(let B of H)$.add(B.path)}let O=new Map;for(let Q of J){if(!Q.name)continue;let H=O.get(Q.name)??[];H.push(Q),O.set(Q.name,H)}for(let[Q,H]of O){if(new Set(H.map((L)=>L.dirName)).size<2)continue;let B=H.filter((L)=>!$.has(L.path));if(B.length<2)continue;if(new Set(B.map((L)=>L.dirName)).size<2)continue;Y.push({key:Q,reason:"same-frontmatterName",instances:B})}Y.sort((Q,H)=>{if(Q.reason!==H.reason)return Q.reason==="same-dirName"?-1:1;return Q.key.localeCompare(H.key)});let K=Y.reduce((Q,H)=>Q+H.instances.length,0);return{scannedAt:new Date().toISOString(),totalSkills:z.length,duplicateGroups:Y,totalDuplicateInstances:K}}function lz(z){return[...z].sort((Y,$)=>{if(Y.scope!==$.scope)return Y.scope==="global"?-1:1;let Z=Y.providerLabel.localeCompare($.providerLabel);if(Z!==0)return Z;return Y.path.localeCompare($.path)})}function sz(z){return z==="same-dirName"?"same dirName":"same name"}function dY(z){if(z.duplicateGroups.length===0)return G.green("No duplicate skills found.");let Y=[];Y.push(""),Y.push(G.bold(` Found ${z.duplicateGroups.length} duplicate group(s) (${z.totalDuplicateInstances} total instances):`)),Y.push("");for(let $ of z.duplicateGroups){Y.push(` ${G.yellow(`"${$.key}"`)} ${G.dim(`(${sz($.reason)})`)}`);let Z=lz($.instances);for(let J=0;J<Z.length;J++){let X=Z[J],O=p(X.provider,X.providerLabel),K=J===0?G.green(" [keep]"):G.dim(" "),Q=G.dim(`(${X.scope})`);Y.push(` ${K} ${O} ${Q} ${G.dim(C(X.path))}`)}Y.push("")}return Y.push(G.dim(` Run ${G.bold("asm audit -y")} to auto-remove duplicates`)),Y.push(""),Y.join(`
|
|
18
|
+
`)}function nY(z){return JSON.stringify(z,null,2)}function tY(z){let Y=z.trim();if(!Y)return["vi",[]];let $=[],Z="",J=!1,X=0;while(X<Y.length){let O=Y[X];if(O==='"'){J=!0,X++;while(X<Y.length&&Y[X]!=='"'){if(Y[X]==="\\"&&X+1<Y.length){let K=Y[X+1];if(K==='"'||K==="\\"){Z+=K,X+=2;continue}}Z+=Y[X],X++}X++}else if(O==="'"){J=!0,X++;while(X<Y.length&&Y[X]!=="'")Z+=Y[X],X++;X++}else if(O===" "||O==="\t"){if(Z.length>0||J)$.push(Z),Z="",J=!1;X++}else Z+=O,X++}if(Z.length>0||J)$.push(Z);if($.length===0)return["vi",[]];return[$[0],$.slice(1)]}import{readFileSync as ez}from"fs";import{resolve as zY,dirname as YY}from"path";import{fileURLToPath as ZY}from"url";import{execSync as $Y}from"child_process";var JY=YY(ZY(import.meta.url)),Az="2.3.0";try{let z=ez(zY(JY,"../../package.json"),"utf-8");Az=JSON.parse(z).version}catch{}var Zz="ce4f014";try{Zz=$Y("git rev-parse --short HEAD",{encoding:"utf-8",stdio:["pipe","pipe","ignore"]}).trim()||Zz}catch{}var XY=Az,QY=Zz,eY=`v${XY} (${QY})`;
|
|
19
|
+
export{o as e,r as f,i as g,l as h,m as i,zz as j,FY as k,_Y as l,qY as m,dz as n,EY as o,DY as p,WY as q,G as r,h as s,p as t,C as u,CY as v,yY as w,PY as x,az as y,bY as z,vY as A,hY as B,fY as C,gY as D,Hz as E,oz as F,mY as G,Vz as H,kY as I,uY as J,lz as K,sz as L,dY as M,nY as N,XY as O,eY as P,tY as Q};
|
package/package.json
CHANGED
package/dist/chunk-796ss41d.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import{Q as N,W}from"./chunk-vgzgtfy6.js";import{readdir as T,stat as x,lstat as Zz,readlink as Tz,readFile as g,realpath as i}from"fs/promises";import{join as E,resolve as r,basename as Sz}from"path";import{homedir as m}from"os";function n(z){let Y={},$=z.split(`
|
|
2
|
-
`),Z=!1,J=!1,X=null,L=[],H="none",U=-1,Q=null;function B(){if(X){let O=L.join(" ").trim();if(O)Y[X]=O;X=null,L=[],H="none",U=-1}}for(let O of $){if(O.trim()==="---")if(!J){J=!0,Z=!0;continue}else{B();break}if(!Z)continue;if(H!=="none"&&X){let j=O.replace(/^\s*/,""),A=O.length-j.length;if(A>0&&j.length>0){if(U===-1)U=A;L.push(j);continue}else if(j.length===0)continue;else B()}if(Q!==null){let j=O.match(/^\s+(\w[\w-]*):\s*(.*?)\s*$/);if(j){let A=j[1],_=j[2].replace(/^["']|["']$/g,"");if(_)Y[`${Q}.${A}`]=_;continue}if(O.trim().length>0)Q=null;else continue}let V=O.match(/^(\w[\w-]*):\s*(.*?)\s*$/);if(V){B();let j=V[1],A=V[2];if(A==="|"||A===">")X=j,L=[],H=A==="|"?"literal":"folded";else if(A==="|+"||A===">+"||A==="|-"||A===">-")X=j,L=[],H=A.startsWith("|")?"literal":"folded";else{let F=A.replace(/^["']|["']$/g,"");if(F)Y[j]=F;else Q=j}}}return B(),Y}function o(z){return z["metadata.version"]||z.version||"0.0.0"}function t(z){let Y=z["allowed-tools"]||"";if(!Y.trim())return[];return Y.split(/[\s,]+/).map(($)=>$.trim()).filter(Boolean)}function a(z){if(!z)return 0;let Y=z.split(/\s+/).map((Z)=>Z.trim()).filter(Boolean).length,$=0;for(let Z=0;Z<z.length;Z++)if(z.charCodeAt(Z)===32)$++;return Y+$}function f(z){if(!Number.isFinite(z)||z<0)return"~0 tokens";if(z<1000)return`~${z} tokens`;if(z<1e4)return`~${(z/1000).toFixed(1).replace(/\.0$/,"")}k tokens`;return`~${Math.round(z/1000)}k tokens`}var Dz=E(m(),".claude","plugins","marketplaces"),Wz=E(m(),".codex","plugins","cache"),xz=E(m(),".codex","config.toml"),KY=E(m(),".agents","plugins","marketplace.json");function wz(z,Y){let $=[];for(let Z of z.providers){if(!Z.enabled){N(`scan: skipping disabled provider "${Z.name}"`);continue}if(Y==="global"||Y==="both"){let J=W(Z.global);N(`scan: adding location ${J} (${Z.label}, global)`),$.push({dir:J,location:`global-${Z.name}`,scope:"global",providerName:Z.name,providerLabel:Z.label})}if(Y==="project"||Y==="both"){let J=W(Z.project);N(`scan: adding location ${J} (${Z.label}, project)`),$.push({dir:J,location:`project-${Z.name}`,scope:"project",providerName:Z.name,providerLabel:Z.label})}}for(let Z of z.customPaths)if(Y===Z.scope||Y==="both"){let J=W(Z.path);N(`scan: adding custom location ${J} (${Z.label}, ${Z.scope})`),$.push({dir:J,location:`${Z.scope}-custom`,scope:Z.scope,providerName:"custom",providerLabel:Z.label})}return $}async function l(z){try{return(await T(z,{recursive:!0})).length}catch{return 0}}async function Cz(z){let Y=[];N(`scanning: ${z.dir} (${z.location})`);let $;try{$=await T(z.dir)}catch{return N(`scanning: ${z.dir} — not found, skipping`),Y}for(let Z of $){let J=E(z.dir,Z);try{if(!(await x(J)).isDirectory()){N(` skip: "${Z}" — not a directory`);continue}}catch{N(` skip: "${Z}" — stat failed`);continue}let X=E(J,"SKILL.md"),L;try{L=await g(X,"utf-8")}catch{N(` skip: "${Z}" — no SKILL.md`);continue}let H=n(L),U=!1,Q=null;try{if((await Zz(J)).isSymbolicLink())U=!0,Q=await Tz(J)}catch{}let B=r(J),O;try{O=await i(J)}catch{O=B}Y.push({name:H.name||Z,version:o(H),description:(H.description||"").replace(/\s*\n\s*/g," ").trim(),creator:H["metadata.creator"]||"",license:(H.license||"").trim(),compatibility:(H.compatibility||"").trim(),allowedTools:t(H),effort:H.effort||H["metadata.effort"]||void 0,dirName:Z,path:B,originalPath:J,location:z.location,scope:z.scope,provider:z.providerName,providerLabel:z.providerLabel,isSymlink:U,symlinkTarget:Q,realPath:O,tokenCount:a(L)})}return N(`found ${Y.length} skill(s) in ${z.dir}`),Y}async function $z(z){let Y=[],$;try{$=await T(z)}catch{return Y}for(let Z of $){let J=E(z,Z),X;try{X=await Zz(J)}catch{continue}if(X.isSymbolicLink())continue;if(X.isDirectory()){let L=E(J,"SKILL.md");try{await x(L),Y.push(J)}catch{let H=await $z(J);Y.push(...H)}}}return Y}async function Pz(z){let Y=z??Dz,$=[];N(`scan: checking plugin marketplaces at ${Y}`);let Z;try{Z=await T(Y)}catch{return N("scan: plugin marketplaces dir not found, skipping"),$}for(let J of Z){let X=E(Y,J),L;try{L=await x(X)}catch{continue}if(!L.isDirectory())continue;N(`scan: scanning marketplace "${J}"`);let H=await $z(X);for(let U of H){let Q=E(U,"SKILL.md"),B;try{B=await g(Q,"utf-8")}catch{continue}let O=n(B),V=Sz(U),j=r(U),A;try{A=await i(U)}catch{A=j}$.push({name:O.name||V,version:o(O),description:(O.description||"").replace(/\s*\n\s*/g," ").trim(),creator:O["metadata.creator"]||"",license:(O.license||"").trim(),compatibility:(O.compatibility||"").trim(),allowedTools:t(O),effort:O.effort||O["metadata.effort"]||void 0,dirName:V,path:j,originalPath:U,location:`global-plugin-${J}`,scope:"global",provider:"plugin",providerLabel:`Plugin (${J})`,isSymlink:!1,symlinkTarget:null,realPath:A,marketplace:J,tokenCount:a(B)})}}return N(`scan: found ${$.length} plugin marketplace skill(s)`),$}function yz(z){let Y=new Map,$=null;for(let Z of z.split(`
|
|
3
|
-
`)){let J=Z.trim(),X=J.match(/^\[plugins\.([^\]]+)\]$/);if(X){$=X[1].trim().replace(/^["']|["']$/g,"");continue}if(J.startsWith("[")){$=null;continue}if($&&J.startsWith("enabled")){let L=J.match(/^enabled\s*=\s*(true|false)/i);if(L)Y.set($,L[1].toLowerCase()==="true")}}return Y}async function bz(z){let Y=z??xz;try{let $=await g(Y,"utf-8");return yz($)}catch{return N(`codex: config.toml not found at ${Y}, skipping enabled check`),new Map}}async function vz(z,Y){let $=z??Wz,Z=[];N(`codex: checking plugin cache at ${$}`);let J;try{J=await T($)}catch{return N("codex: plugin cache dir not found, skipping"),Z}let X=await bz(Y);for(let L of J){let H=E($,L),U;try{U=await x(H)}catch{continue}if(!U.isDirectory())continue;let Q;try{Q=await T(H)}catch{continue}for(let B of Q){let O=E(H,B),V;try{V=await x(O)}catch{continue}if(!V.isDirectory())continue;let j;try{j=await T(O)}catch{continue}let A=(await Promise.all(j.map(async(q)=>{try{return(await x(E(O,q))).isDirectory()?q:null}catch{return null}}))).filter((q)=>q!==null);if(A.length===0)continue;let F=A.sort(Jz).at(-1),_=E(O,F),S=E(_,".codex-plugin","plugin.json"),R;try{let q=await g(S,"utf-8");R=JSON.parse(q)}catch{N(`codex: no valid plugin.json at ${S}, skipping`);continue}let D=r(_),M;try{M=await i(_)}catch{M=D}let P=R.interface?.displayName||R.name||B,y=R.version||F,b=(R.description||"").replace(/\s*\n\s*/g," ").trim(),I=X.has(B)?X.get(B):!0;Z.push({name:P,version:y,description:b,creator:"",license:"",compatibility:"",allowedTools:[],dirName:B,path:D,originalPath:_,location:`global-codex-plugin-${L}`,scope:"global",provider:"codex-plugin",providerLabel:`Codex Plugin (${L})`,isSymlink:!1,symlinkTarget:null,realPath:M,marketplace:L,codexPlugin:{category:R.interface?.category,hasMcpConfig:R.mcp!=null&&Object.keys(R.mcp).length>0,pluginName:B,pluginVersion:F,enabled:I}})}}return N(`codex: found ${Z.length} plugin(s) in cache`),Z}async function VY(z,Y,$,Z){let J=wz(z,Y),X=Y==="global"||Y==="both",[L,H,U]=await Promise.all([Promise.all(J.map(Cz)),X?Pz($):Promise.resolve([]),X?vz(Z):Promise.resolve([])]),Q=L.flat(),B=new Set(Q.map((V)=>V.realPath)),O=new Set(Q.map((V)=>V.name.toLowerCase()));for(let V of H)if(!B.has(V.realPath)&&!O.has(V.name.toLowerCase()))Q.push(V),B.add(V.realPath),O.add(V.name.toLowerCase());for(let V of U)if(!B.has(V.realPath)&&!O.has(V.name.toLowerCase()))Q.push(V),B.add(V.realPath),O.add(V.name.toLowerCase());return Q}function AY(z,Y){if(!Y.trim())return z;let $=Y.toLowerCase();return z.filter((Z)=>Z.name.toLowerCase().includes($)||Z.description.toLowerCase().includes($)||Z.creator.toLowerCase().includes($)||Z.effort&&Z.effort.toLowerCase().includes($)||Z.location.toLowerCase().includes($)||Z.providerLabel.toLowerCase().includes($))}function Jz(z,Y){let $=z.split("."),Z=Y.split("."),J=Math.max($.length,Z.length);for(let X=0;X<J;X++){let L=parseInt($[X]??"0",10),H=parseInt(Z[X]??"0",10);if(isNaN(L)||isNaN(H))return z.localeCompare(Y);if(L!==H)return L-H}return 0}function IY(z,Y){let $=[...z];switch(Y){case"name":$.sort((Z,J)=>Z.name.localeCompare(J.name));break;case"version":$.sort((Z,J)=>Jz(Z.version,J.version));break;case"location":$.sort((Z,J)=>Z.location.localeCompare(J.location));break}return $}import{rm as s,readFile as Qz,writeFile as hz,access as fz,lstat as gz,symlink as mz}from"fs/promises";import{join as Xz,resolve as w,dirname as Uz,relative as kz}from"path";import{homedir as pz}from"os";var uz=pz();function cz(z,Y){let $={directories:[],ruleFiles:[],agentsBlocks:[]};$.directories.push({path:z.originalPath,isSymlink:z.isSymlink});let Z=z.dirName;if(z.scope==="project")$.ruleFiles.push(w(".cursor","rules",`${Z}.mdc`),w(".windsurf","rules",`${Z}.md`),w(".github","instructions",`${Z}.instructions.md`)),$.agentsBlocks.push({file:w("AGENTS.md"),skillName:Z});if(z.scope==="global"){for(let L of Y.providers){if(!L.enabled)continue;let H=W(L.global),U=Xz(Uz(H),"AGENTS.md");$.agentsBlocks.push({file:U,skillName:Z})}let J=Xz(uz,".codex","AGENTS.md");if(!$.agentsBlocks.some((L)=>L.file===J))$.agentsBlocks.push({file:J,skillName:Z})}return $}function RY(z,Y,$){let Z=Y.filter((U)=>U.dirName===z);if(Z.length===0)return{directories:[],ruleFiles:[],agentsBlocks:[]};let J={directories:[],ruleFiles:[],agentsBlocks:[]},X=new Set,L=new Set,H=new Set;for(let U of Z){let Q=cz(U,$);for(let B of Q.directories)if(!X.has(B.path))X.add(B.path),J.directories.push(B);for(let B of Q.ruleFiles)if(!L.has(B))L.add(B),J.ruleFiles.push(B);for(let B of Q.agentsBlocks){let O=`${B.file}::${B.skillName}`;if(!H.has(O))H.add(O),J.agentsBlocks.push(B)}}return J}async function v(z){try{return await fz(z),!0}catch{return!1}}async function dz(z,Y){if(!await v(z))return;let $=await Qz(z,"utf-8");for(let Z of["agent-skill-manager","skill-manager","pskills"]){let J=`<!-- ${Z}: ${Y} -->`,X=`<!-- /${Z}: ${Y} -->`,L=$.indexOf(J),H=$.indexOf(X);if(L===-1||H===-1)continue;let U=L;if(U>0&&$[U-1]===`
|
|
4
|
-
`)U--;let B=H+X.length;if(B<$.length&&$[B]===`
|
|
5
|
-
`)B++;$=$.slice(0,U)+$.slice(B)}await hz(z,$,"utf-8")}async function MY(z,Y){let $=[];for(let Z of z.directories)try{if(Z.isSymlink)await s(Z.path),$.push(`Removed symlink: ${Z.path}`);else await s(Z.path,{recursive:!0,force:!0}),$.push(`Removed directory: ${Z.path}`);if(Y&&w(Z.path)!==w(Y)){let J=Uz(Z.path),X=kz(J,Y);await mz(X,Z.path,"dir"),$.push(`Created symlink: ${Z.path} -> ${X}`)}}catch(J){$.push(`Failed to remove ${Z.path}: ${J.message}`)}for(let Z of z.ruleFiles)if(await v(Z))try{await s(Z),$.push(`Removed rule file: ${Z}`)}catch(J){$.push(`Failed to remove ${Z}: ${J.message}`)}for(let Z of z.agentsBlocks)try{await dz(Z.file,Z.skillName),$.push(`Cleaned AGENTS.md block in: ${Z.file}`)}catch(J){$.push(`Failed to clean AGENTS.md block: ${J.message}`)}return $}async function TY(z){let Y=[];for(let $ of z.directories)if(await v($.path)){let J=(await gz($.path)).isSymbolicLink()?"symlink":"directory";Y.push(`${$.path} (${J})`)}for(let $ of z.ruleFiles)if(await v($))Y.push($);for(let $ of z.agentsBlocks)if(await v($.file)){let Z=await Qz($.file,"utf-8");if(Z.includes(`<!-- agent-skill-manager: ${$.skillName} -->`)||Z.includes(`<!-- skill-manager: ${$.skillName} -->`)||Z.includes(`<!-- pskills: ${$.skillName} -->`))Y.push(`${$.file} (AGENTS.md block)`)}return Y}var K=()=>{if(process.env.NO_COLOR!==void 0)return!1;if(globalThis.__CLI_NO_COLOR)return!1;if(!process.stdout.isTTY)return!1;return!0},G={bold:(z)=>K()?`\x1B[1m${z}\x1B[0m`:z,cyan:(z)=>K()?`\x1B[36m${z}\x1B[0m`:z,green:(z)=>K()?`\x1B[32m${z}\x1B[0m`:z,yellow:(z)=>K()?`\x1B[33m${z}\x1B[0m`:z,dim:(z)=>K()?`\x1B[2m${z}\x1B[0m`:z,white:(z)=>K()?`\x1B[37m${z}\x1B[0m`:z,red:(z)=>K()?`\x1B[31m${z}\x1B[0m`:z,blue:(z)=>K()?`\x1B[34m${z}\x1B[0m`:z,blueBold:(z)=>K()?`\x1B[34;1m${z}\x1B[0m`:z,magenta:(z)=>K()?`\x1B[35m${z}\x1B[0m`:z,bgDim:(z)=>K()?`\x1B[48;5;236m${z}\x1B[0m`:z,bgRed:(z)=>K()?`\x1B[41m\x1B[37m\x1B[1m${z}\x1B[0m`:z,bgYellow:(z)=>K()?`\x1B[43m\x1B[30m\x1B[1m${z}\x1B[0m`:z,bgGreen:(z)=>K()?`\x1B[42m\x1B[30m\x1B[1m${z}\x1B[0m`:z,bgCyan:(z)=>K()?`\x1B[46m\x1B[30m\x1B[1m${z}\x1B[0m`:z};function k(z){if(!z)return"";switch(z.toLowerCase()){case"low":return G.green(z);case"medium":return G.yellow(z);case"high":return G.red(z);case"max":return G.magenta(z);default:return z}}var Gz={claude:G.blueBold,codex:G.cyan,"codex-plugin":G.cyan,openclaw:G.yellow,agents:G.green,custom:G.magenta,cursor:G.blue,windsurf:G.cyan,cline:G.green,roocode:G.magenta,continue:G.yellow,copilot:G.white,aider:G.red,opencode:G.cyan,zed:G.blue,augment:G.green,amp:G.yellow};function e(z,Y){return(Gz[z]||G.dim)(Y)}function zz(z,Y){if(!K())return`[${Y}]`;return(Gz[z]||G.dim)(`[${Y}]`)}function C(z){let Y=process.env.HOME||process.env.USERPROFILE||"";if(Y&&z.startsWith(Y))return"~"+z.slice(Y.length);return z}function xY(z){if(z.length===0)return"No skills found.";let Y=["Name","Version","Creator","Effort","Tool","Scope","Type","Path"],$=z.map((U)=>[U.name,U.version,U.creator||"—",U.effort||"—",U.providerLabel,U.scope,U.isSymlink?"symlink":"directory",C(U.path)]),Z=Y.map((U,Q)=>Math.max(U.length,...$.map((B)=>B[Q].length))),J=(U,Q)=>U.padEnd(Q),X=Y.map((U,Q)=>J(U,Z[Q])).join(" "),L=Z.map((U)=>"-".repeat(U)).join("--"),H=$.map((U)=>U.map((Q,B)=>J(Q,Z[B])).join(" "));return[K()?G.bold(X):X,L,...H].join(`
|
|
6
|
-
`)}function Bz(z){let Y=new Map;for(let Z of z){let J=`${Z.dirName}||${Z.scope}`,X=Y.get(J)??[];X.push(Z),Y.set(J,X)}let $=[];for(let[,Z]of Y){let J=Z[0],X=new Set(Z.map((H)=>H.scope)),L=new Set(Z.map((H)=>H.isSymlink?"symlink":"directory"));$.push({name:J.name,version:J.version,creator:J.creator||"",effort:J.effort||"",tokens:typeof J.tokenCount==="number"?f(J.tokenCount):"",providers:Z.map((H)=>({provider:H.provider,label:H.providerLabel})),scope:X.size>1?"mixed":J.scope,type:L.size>1?"mixed":J.isSymlink?"symlink":"directory",path:C(J.path),warningCount:Z.reduce((H,U)=>H+(U.warnings?.length??0),0)})}return $}function wY(z){if(z.length===0)return"No skills found.";let Y=Bz(z),$=[],Z=Math.max(4,...Y.map((I)=>I.name.length)),J=Math.max(7,...Y.map((I)=>I.version.length)),X=Math.max(7,...Y.map((I)=>Math.min((I.creator||"—").length,15))),L=Math.max(6,...Y.map((I)=>(I.effort||"—").length)),H=Y.some((I)=>I.tokens.length>0),U=H?Math.max(6,...Y.map((I)=>(I.tokens||"—").length)):0,Q=7,B=9,O=Y.map((I)=>I.providers.map((q)=>zz(q.provider,q.label)).join(" ")),V=Y.map((I)=>I.providers.map((q)=>`[${q.label}]`).join(" ")),j=Math.max(9,...V.map((I)=>I.length)),A=(I,q)=>I.padEnd(q),F=H?` ${A("Tokens",U)}`:"",_=`${A("Name",Z)} ${A("Version",J)} ${A("Creator",X)} ${A("Effort",L)}${F} ${A("Tools",j)} ${A("Scope",Q)} ${A("Type",B)}`;$.push(K()?G.bold(_):_);let S=H?` ${"-".repeat(U)}`:"";$.push(`${"-".repeat(Z)} ${"-".repeat(J)} ${"-".repeat(X)} ${"-".repeat(L)}${S} ${"-".repeat(j)} ${"-".repeat(Q)} ${"-".repeat(B)}`);for(let I=0;I<Y.length;I++){let q=Y[I],h=A(q.name,Z),p=A(q.version,J),u=(q.creator||"—").slice(0,15),c=A(u,X),d=q.effort||"—",Az=q.effort?k(q.effort):"—",Iz=L-d.length,Fz=Az+" ".repeat(Math.max(0,Iz)),qz=H?` ${A(q.tokens||"—",U)}`:"",_z=j-V[I].length,Nz=O[I]+" ".repeat(Math.max(0,_z)),Ez=A(q.scope,Q),Rz=A(q.type,B),Mz=q.warningCount>0?` ${G.yellow(`(${q.warningCount} warning${q.warningCount>1?"s":""})`)}`:"";$.push(`${h} ${p} ${c} ${Fz}${qz} ${Nz} ${Ez} ${Rz}${Mz}`)}let R=Y.length,D=z.length,M=new Set(z.map((I)=>I.provider)),P=z.filter((I)=>I.scope==="global").length,y=z.filter((I)=>I.scope==="project").length;$.push("");let b=`${D} skills (${R} unique) across ${M.size} tools | ${P} global, ${y} project`;return $.push(G.dim(b)),$.join(`
|
|
7
|
-
`)}function nz(z,Y){if(!K()||!Y)return z;let $=z.toLowerCase().indexOf(Y.toLowerCase());if($===-1)return z;let Z=z.slice(0,$),J=z.slice($,$+Y.length),X=z.slice($+Y.length);return`${Z}${G.bold(G.yellow(J))}${X}`}function CY(z,Y){if(z.length===0)return`No skills matching "${Y}". Try ${G.bold("asm list")} to see all skills.`;let $=Bz(z),Z=[];Z.push(G.dim(`Found ${z.length} result${z.length===1?"":"s"} (${$.length} unique) matching "${Y}"`)+`
|
|
8
|
-
`);let J=Math.max(4,...$.map((F)=>F.name.length)),X=Math.max(7,...$.map((F)=>F.version.length)),L=Math.max(7,...$.map((F)=>Math.min((F.creator||"—").length,15))),H=Math.max(6,...$.map((F)=>(F.effort||"—").length)),U=$.map((F)=>F.providers.map((_)=>zz(_.provider,_.label)).join(" ")),Q=$.map((F)=>F.providers.map((_)=>`[${_.label}]`).join(" ")),B=Math.max(9,...Q.map((F)=>F.length)),O=7,V=9,j=(F,_)=>F.padEnd(_),A=`${j("Name",J)} ${j("Version",X)} ${j("Creator",L)} ${j("Effort",H)} ${j("Tools",B)} ${j("Scope",O)} ${j("Type",V)}`;Z.push(K()?G.bold(A):A),Z.push(`${"-".repeat(J)} ${"-".repeat(X)} ${"-".repeat(L)} ${"-".repeat(H)} ${"-".repeat(B)} ${"-".repeat(O)} ${"-".repeat(V)}`);for(let F=0;F<$.length;F++){let _=$[F],S=nz(_.name,Y),R=J-_.name.length,D=S+" ".repeat(Math.max(0,R)),M=j(_.version,X),P=(_.creator||"—").slice(0,15),y=j(P,L),b=_.effort||"—",I=_.effort?k(_.effort):"—",q=H-b.length,h=I+" ".repeat(Math.max(0,q)),p=B-Q[F].length,u=U[F]+" ".repeat(Math.max(0,p)),c=j(_.scope,O),d=j(_.type,V);Z.push(`${D} ${M} ${y} ${h} ${u} ${c} ${d}`)}return Z.join(`
|
|
9
|
-
`)}function PY(z,Y){if(z.length===0)return"";let $=[];$.push(G.dim(`Found ${z.length} available skill${z.length===1?"":"s"} matching "${Y}"`)+`
|
|
10
|
-
`);for(let Z of z){$.push(` ${G.dim("To install:")} ${G.green(`asm install ${Z.installUrl}`)}`);let J=Z.verified?G.blue(" [verified]"):"";$.push(` ${G.cyan(Z.name)} ${G.dim(`v${Z.version}`)}${J} ${G.dim(`[${Z.repoLabel}]`)}`);for(let X of Kz(Z.description,76))$.push(` ${X}`);$.push("")}return $.join(`
|
|
11
|
-
`)}var Hz=new Set(["Bash","Write","Edit","NotebookEdit"]),oz=new Set(["WebFetch","WebSearch"]);function tz(z){if(Hz.has(z))return G.red(z);if(oz.has(z))return G.yellow(z);return G.green(z)}function Lz(z){if(z.length===0)return"";return z.map(tz).join(" ")}function Oz(z){let Y=z.filter((Z)=>Hz.has(Z));if(Y.length===0)return null;let $=[];if(Y.includes("Bash"))$.push("execute shell commands");if(Y.includes("Write")||Y.includes("Edit")||Y.includes("NotebookEdit"))$.push("modify files");return`This skill can ${$.join(" and ")}`}async function az(z){let Y=[],$=(J,X)=>`${K()?G.bold(J+":"):J+":"} ${X}`;if(Y.push($("Name",z.name)),Y.push($("Version",z.version)),Y.push($("Creator",z.creator||"—")),Y.push($("License",z.license||"—")),z.compatibility)Y.push($("Compatibility",z.compatibility));if(z.effort)Y.push($("Effort",k(z.effort)));if(Y.push($("Tool",z.providerLabel)),Y.push($("Scope",z.scope)),Y.push($("Location",z.location)),Y.push($("Path",C(z.path))),Y.push($("Type",z.isSymlink?"symlink":"directory")),z.isSymlink&&z.symlinkTarget)Y.push($("Symlink Target",z.symlinkTarget));let Z=z.fileCount??await l(z.path);if(Y.push($("File Count",String(Z))),typeof z.tokenCount==="number")Y.push($("Est. Tokens",f(z.tokenCount)));if(z.description)Y.push(""),Y.push($("Description",z.description));if(z.allowedTools&&z.allowedTools.length>0){Y.push(""),Y.push(K()?G.bold("Allowed Tools:"):"Allowed Tools:"),Y.push(` ${Lz(z.allowedTools)}`);let J=Oz(z.allowedTools);if(J)Y.push(` ${K()?G.yellow("⚠"):"!"} ${J}`)}if(Y.push(""),Y.push(K()?G.bold("Eval Score:"):"Eval Score:"),z.evalSummary){let J=z.evalSummary,X=jz(J.overallScore);Y.push(` Overall: ${X} / 100 (${J.grade})`);let L=J.evaluatedVersion?` — version ${J.evaluatedVersion}`:"";if(Y.push(` ${K()?G.dim("Evaluated:"):"Evaluated:"} ${J.evaluatedAt}${L}`),J.categories.length>0){Y.push(K()?G.dim(" Categories:"):" Categories:");for(let H of J.categories)Y.push(` ${H.name.padEnd(28)} ${H.score}/${H.max}`)}}else Y.push(K()?G.dim(" Not available — run `asm eval "+z.path+"` to generate one."):" Not available — run `asm eval "+z.path+"` to generate one.");if(z.warnings&&z.warnings.length>0){Y.push(""),Y.push(K()?G.bold("Warnings:"):"Warnings:");for(let J of z.warnings)Y.push(` ${K()?G.yellow("!"):"!"} [${J.category}] ${J.message}`)}return Y.join(`
|
|
12
|
-
`)}function jz(z){let Y=String(z);if(!K())return Y;if(z>=90)return G.green(Y);if(z>=80)return G.cyan(Y);if(z>=65)return G.yellow(Y);return G.red(Y)}async function yY(z){if(z.length===0)return"No skills found.";if(z.length===1)return az(z[0]);let Y=[],$=(Q,B)=>`${K()?G.bold(Q+":"):Q+":"} ${B}`,Z=z[0],J=Z.name;if(Y.push(""),Y.push(K()?G.blueBold(` ${J}`):` ${J}`),Y.push(K()?G.dim(" "+"-".repeat(J.length+2)):" "+"-".repeat(J.length+2)),Y.push(""),Y.push($(" Version",Z.version)),Y.push($(" Creator",Z.creator||"—")),Y.push($(" License",Z.license||"—")),Z.compatibility)Y.push($(" Compatibility",Z.compatibility));if(Z.effort)Y.push($(" Effort",k(Z.effort)));let X=Z.fileCount??await l(Z.path);if(Y.push($(" File Count",String(X))),typeof Z.tokenCount==="number")Y.push($(" Est. Tokens",f(Z.tokenCount)));let L=z.map((Q)=>zz(Q.provider,Q.providerLabel)).join(" ");if(Y.push($(" Installed in",L)),Y.push(""),Y.push(K()?G.bold(" Eval Score:"):" Eval Score:"),Z.evalSummary){let Q=Z.evalSummary,B=jz(Q.overallScore);Y.push(` Overall: ${B} / 100 (${Q.grade})`);let O=Q.evaluatedVersion?` — version ${Q.evaluatedVersion}`:"";if(Y.push(` ${K()?G.dim("Evaluated:"):"Evaluated:"} ${Q.evaluatedAt}${O}`),Q.categories.length>0)for(let V of Q.categories)Y.push(` ${V.name.padEnd(28)} ${V.score}/${V.max}`)}else Y.push(K()?G.dim(` Not available — run \`asm eval ${Z.path}\` to generate one.`):` Not available — run \`asm eval ${Z.path}\` to generate one.`);if(Z.description){Y.push(""),Y.push(K()?G.bold(" Description:"):" Description:");let Q=Kz(Z.description,72);for(let B of Q)Y.push(" "+B)}if(Z.allowedTools&&Z.allowedTools.length>0){Y.push(""),Y.push(K()?G.bold(" Allowed Tools:"):" Allowed Tools:"),Y.push(` ${Lz(Z.allowedTools)}`);let Q=Oz(Z.allowedTools);if(Q)Y.push(` ${K()?G.yellow("⚠"):"!"} ${Q}`)}Y.push("");let H=` Installations (${z.length})`;Y.push(K()?G.bold(H):H);for(let Q=0;Q<z.length;Q++){let B=z[Q],O=e(B.provider,B.providerLabel),V=B.isSymlink?"symlink":"directory",j=G.dim(B.scope);if(Y.push(` ${O} (${j}, ${V})`),Y.push(` ${G.dim("Path:")} ${C(B.path)}`),B.isSymlink&&B.symlinkTarget)Y.push(` ${G.dim("Target:")} ${B.symlinkTarget}`)}let U=z.flatMap((Q)=>{if(!Q.warnings||Q.warnings.length===0)return[];return Q.warnings.map((B)=>({...B,provider:Q.providerLabel}))});if(U.length>0){Y.push("");let Q=` Warnings (${U.length})`;Y.push(K()?G.bold(Q):Q);for(let B of U){let O=K()?G.yellow("!"):"!";Y.push(` ${O} [${B.category}] ${B.message}`)}}return Y.push(""),Y.join(`
|
|
13
|
-
`)}function Kz(z,Y){let $=z.split(/\s+/),Z=[],J="";for(let X of $)if(J.length+X.length+1>Y&&J.length>0)Z.push(J),J=X;else J=J?J+" "+X:X;if(J)Z.push(J);return Z}function bY(z){return JSON.stringify(z,null,2)}function fY(z){let Y=[],$=new Set,Z=new Map,J=[];for(let U of z){let Q=Z.get(U.realPath);if(Q){if(U.isSymlink)continue;if(Q.isSymlink)J[J.indexOf(Q)]=U,Z.set(U.realPath,U);else J.push(U)}else Z.set(U.realPath,U),J.push(U)}let X=new Map;for(let U of J){let Q=X.get(U.dirName)??[];Q.push(U),X.set(U.dirName,Q)}for(let[U,Q]of X)if(new Set(Q.map((O)=>O.location)).size>=2){Y.push({key:U,reason:"same-dirName",instances:Q});for(let O of Q)$.add(O.path)}let L=new Map;for(let U of J){if(!U.name)continue;let Q=L.get(U.name)??[];Q.push(U),L.set(U.name,Q)}for(let[U,Q]of L){if(new Set(Q.map((j)=>j.dirName)).size<2)continue;let O=Q.filter((j)=>!$.has(j.path));if(O.length<2)continue;if(new Set(O.map((j)=>j.dirName)).size<2)continue;Y.push({key:U,reason:"same-frontmatterName",instances:O})}Y.sort((U,Q)=>{if(U.reason!==Q.reason)return U.reason==="same-dirName"?-1:1;return U.key.localeCompare(Q.key)});let H=Y.reduce((U,Q)=>U+Q.instances.length,0);return{scannedAt:new Date().toISOString(),totalSkills:z.length,duplicateGroups:Y,totalDuplicateInstances:H}}function iz(z){return[...z].sort((Y,$)=>{if(Y.scope!==$.scope)return Y.scope==="global"?-1:1;let Z=Y.providerLabel.localeCompare($.providerLabel);if(Z!==0)return Z;return Y.path.localeCompare($.path)})}function rz(z){return z==="same-dirName"?"same dirName":"same name"}function gY(z){if(z.duplicateGroups.length===0)return G.green("No duplicate skills found.");let Y=[];Y.push(""),Y.push(G.bold(` Found ${z.duplicateGroups.length} duplicate group(s) (${z.totalDuplicateInstances} total instances):`)),Y.push("");for(let $ of z.duplicateGroups){Y.push(` ${G.yellow(`"${$.key}"`)} ${G.dim(`(${rz($.reason)})`)}`);let Z=iz($.instances);for(let J=0;J<Z.length;J++){let X=Z[J],L=e(X.provider,X.providerLabel),H=J===0?G.green(" [keep]"):G.dim(" "),U=G.dim(`(${X.scope})`);Y.push(` ${H} ${L} ${U} ${G.dim(C(X.path))}`)}Y.push("")}return Y.push(G.dim(` Run ${G.bold("asm audit -y")} to auto-remove duplicates`)),Y.push(""),Y.join(`
|
|
14
|
-
`)}function mY(z){return JSON.stringify(z,null,2)}function pY(z){let Y=z.trim();if(!Y)return["vi",[]];let $=[],Z="",J=!1,X=0;while(X<Y.length){let L=Y[X];if(L==='"'){J=!0,X++;while(X<Y.length&&Y[X]!=='"'){if(Y[X]==="\\"&&X+1<Y.length){let H=Y[X+1];if(H==='"'||H==="\\"){Z+=H,X+=2;continue}}Z+=Y[X],X++}X++}else if(L==="'"){J=!0,X++;while(X<Y.length&&Y[X]!=="'")Z+=Y[X],X++;X++}else if(L===" "||L==="\t"){if(Z.length>0||J)$.push(Z),Z="",J=!1;X++}else Z+=L,X++}if(Z.length>0||J)$.push(Z);if($.length===0)return["vi",[]];return[$[0],$.slice(1)]}import{readFileSync as lz}from"fs";import{resolve as sz,dirname as ez}from"path";import{fileURLToPath as zY}from"url";import{execSync as YY}from"child_process";var ZY=ez(zY(import.meta.url)),Vz="2.2.0";try{let z=lz(sz(ZY,"../../package.json"),"utf-8");Vz=JSON.parse(z).version}catch{}var Yz="8e0e2aa";try{Yz=YY("git rev-parse --short HEAD",{encoding:"utf-8",stdio:["pipe","pipe","ignore"]}).trim()||Yz}catch{}var $Y=Vz,JY=Yz,tY=`v${$Y} (${JY})`;
|
|
15
|
-
export{n as e,o as f,t as g,a as h,f as i,l as j,VY as k,AY as l,IY as m,cz as n,RY as o,MY as p,TY as q,G as r,k as s,e as t,C as u,xY as v,wY as w,CY as x,PY as y,Hz as z,oz as A,yY as B,Kz as C,bY as D,fY as E,iz as F,rz as G,gY as H,mY as I,$Y as J,tY as K,pY as L};
|