agent-skill-manager 1.13.0 → 1.14.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 +11 -1
- package/data/skill-index/Affitor_affiliate-skills.json +97 -1
- package/data/skill-index/Eronred_aso-skills.json +339 -0
- package/data/skill-index/Galaxy-Dawn_claude-scholar.json +526 -0
- package/data/skill-index/Leonxlnx_taste-skill.json +15 -1
- package/data/skill-index/MiniMax-AI_skills.json +21 -1
- package/data/skill-index/affaan-m_everything-claude-code.json +612 -3
- package/data/skill-index/agentskills_agentskills.json +1 -1
- package/data/skill-index/anthropics_skills.json +37 -1
- package/data/skill-index/coreyhaines31_marketingskills.json +67 -1
- package/data/skill-index/himself65_finance-skills.json +97 -0
- package/data/skill-index/kemiljk_fluid-design.json +20 -0
- package/data/skill-index/kepano_obsidian-skills.json +64 -0
- package/data/skill-index/luongnv89_skills.json +71 -1
- package/data/skill-index/mattpocock_skills.json +196 -0
- package/data/skill-index/msitarzewski_agency-agents.json +1 -1
- package/data/skill-index/nextlevelbuilder_ui-ux-pro-max-skill.json +15 -1
- package/data/skill-index/obra_superpowers.json +29 -1
- package/data/skill-index/sickn33_antigravity-awesome-skills.json +2660 -2
- package/data/skill-index/slavingia_skills.json +108 -0
- package/data/skill-index-resources.json +64 -1
- package/dist/agent-skill-manager.js +177 -170
- package/dist/{chunk-6c7f07w3.js → chunk-d8zyhd1t.js} +29 -29
- package/dist/{chunk-hw8kyyg5.js → chunk-gvpf7w25.js} +2 -2
- package/dist/chunk-vhkxjexp.js +3 -0
- package/package.json +2 -1
- package/dist/chunk-1nnaagv9.js +0 -12
- package/dist/chunk-7fa8jt74.js +0 -91
- package/dist/chunk-b7betbzn.js +0 -3
- package/dist/chunk-dykgxxyr.js +0 -3
- package/dist/chunk-es13zqy2.js +0 -91
- package/dist/chunk-f9v15smy.js +0 -91
- package/dist/chunk-gdjc7mam.js +0 -91
- package/dist/chunk-j64gxcw7.js +0 -91
- package/dist/chunk-jfdmhdsr.js +0 -3
- package/dist/chunk-jqby9n90.js +0 -12
- package/dist/chunk-s73mfpjt.js +0 -91
- package/dist/chunk-vvzggdyd.js +0 -12
- package/dist/chunk-xkxs2gj3.js +0 -12
- package/dist/chunk-y008z8jw.js +0 -12
- package/dist/chunk-zdwywb64.js +0 -12
package/dist/chunk-vvzggdyd.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import{F as R,K}from"./chunk-jfdmhdsr.js";import{readdir as n,stat as A$,lstat as z$,readlink as G$,readFile as X$,realpath as Y$}from"fs/promises";import{join as d,resolve as Z$}from"path";function t($){let L={},j=$.split(`
|
|
2
|
-
`),S=!1,A=!1,z=null,U=[],J="none",G=-1,X=null;function Y(){if(z){let B=U.join(" ").trim();if(B)L[z]=B;z=null,U=[],J="none",G=-1}}for(let B of j){if(B.trim()==="---")if(!A){A=!0,S=!0;continue}else{Y();break}if(!S)continue;if(J!=="none"&&z){let I=B.replace(/^\s*/,""),_=B.length-I.length;if(_>0&&I.length>0){if(G===-1)G=_;U.push(I);continue}else if(I.length===0)continue;else Y()}if(X!==null){let I=B.match(/^\s+(\w[\w-]*):\s*(.*?)\s*$/);if(I){let _=I[1],T=I[2].replace(/^["']|["']$/g,"");if(T)L[`${X}.${_}`]=T;continue}if(B.trim().length>0)X=null;else continue}let O=B.match(/^(\w[\w-]*):\s*(.*?)\s*$/);if(O){Y();let I=O[1],_=O[2];if(_==="|"||_===">")z=I,U=[],J=_==="|"?"literal":"folded";else if(_==="|+"||_===">+"||_==="|-"||_===">-")z=I,U=[],J=_.startsWith("|")?"literal":"folded";else{let H=_.replace(/^["']|["']$/g,"");if(H)L[I]=H;else X=I}}}return Y(),L}function o($){return $["metadata.version"]||$.version||"0.0.0"}function J$($,L){let j=[];for(let S of $.providers){if(!S.enabled){R(`scan: skipping disabled provider "${S.name}"`);continue}if(L==="global"||L==="both"){let A=K(S.global);R(`scan: adding location ${A} (${S.label}, global)`),j.push({dir:A,location:`global-${S.name}`,scope:"global",providerName:S.name,providerLabel:S.label})}if(L==="project"||L==="both"){let A=K(S.project);R(`scan: adding location ${A} (${S.label}, project)`),j.push({dir:A,location:`project-${S.name}`,scope:"project",providerName:S.name,providerLabel:S.label})}}for(let S of $.customPaths)if(L===S.scope||L==="both"){let A=K(S.path);R(`scan: adding custom location ${A} (${S.label}, ${S.scope})`),j.push({dir:A,location:`${S.scope}-custom`,scope:S.scope,providerName:"custom",providerLabel:S.label})}return j}async function g($){try{return(await n($,{recursive:!0})).length}catch{return 0}}async function U$($){let L=[];R(`scanning: ${$.dir} (${$.location})`);let j;try{j=await n($.dir)}catch{return R(`scanning: ${$.dir} — not found, skipping`),L}for(let S of j){let A=d($.dir,S);try{if(!(await A$(A)).isDirectory()){R(` skip: "${S}" — not a directory`);continue}}catch{R(` skip: "${S}" — stat failed`);continue}let z=d(A,"SKILL.md"),U;try{U=await X$(z,"utf-8")}catch{R(` skip: "${S}" — no SKILL.md`);continue}let J=t(U),G=!1,X=null;try{if((await z$(A)).isSymbolicLink())G=!0,X=await G$(A)}catch{}let Y=Z$(A),B;try{B=await Y$(A)}catch{B=Y}L.push({name:J.name||S,version:o(J),description:(J.description||"").replace(/\s*\n\s*/g," ").trim(),creator:J["metadata.creator"]||"",effort:J.effort||J["metadata.effort"]||void 0,dirName:S,path:Y,originalPath:A,location:$.location,scope:$.scope,provider:$.providerName,providerLabel:$.providerLabel,isSymlink:G,symlinkTarget:X,realPath:B})}return R(`found ${L.length} skill(s) in ${$.dir}`),L}async function p$($,L){let j=J$($,L);return(await Promise.all(j.map(U$))).flat()}function k$($,L){if(!L.trim())return $;let j=L.toLowerCase();return $.filter((S)=>S.name.toLowerCase().includes(j)||S.description.toLowerCase().includes(j)||S.creator.toLowerCase().includes(j)||S.effort&&S.effort.toLowerCase().includes(j)||S.location.toLowerCase().includes(j)||S.providerLabel.toLowerCase().includes(j))}function B$($,L){let j=$.split("."),S=L.split("."),A=Math.max(j.length,S.length);for(let z=0;z<A;z++){let U=parseInt(j[z]??"0",10),J=parseInt(S[z]??"0",10);if(isNaN(U)||isNaN(J))return $.localeCompare(L);if(U!==J)return U-J}return 0}function u$($,L){let j=[...$];switch(L){case"name":j.sort((S,A)=>S.name.localeCompare(A.name));break;case"version":j.sort((S,A)=>B$(S.version,A.version));break;case"location":j.sort((S,A)=>S.location.localeCompare(A.location));break}return j}import{rm as m,readFile as r,writeFile as I$,access as Q$,lstat as N$,symlink as H$}from"fs/promises";import{join as a,resolve as F,dirname as i,relative as O$}from"path";import{homedir as T$}from"os";var D$=T$();function _$($,L){let j={directories:[],ruleFiles:[],agentsBlocks:[]};j.directories.push({path:$.originalPath,isSymlink:$.isSymlink});let S=$.dirName;if($.scope==="project")j.ruleFiles.push(F(".cursor","rules",`${S}.mdc`),F(".windsurf","rules",`${S}.md`),F(".github","instructions",`${S}.instructions.md`)),j.agentsBlocks.push({file:F("AGENTS.md"),skillName:S});if($.scope==="global"){for(let U of L.providers){if(!U.enabled)continue;let J=K(U.global),G=a(i(J),"AGENTS.md");j.agentsBlocks.push({file:G,skillName:S})}let A=a(D$,".codex","AGENTS.md");if(!j.agentsBlocks.some((U)=>U.file===A))j.agentsBlocks.push({file:A,skillName:S})}return j}function r$($,L,j){let S=L.filter((G)=>G.dirName===$);if(S.length===0)return{directories:[],ruleFiles:[],agentsBlocks:[]};let A={directories:[],ruleFiles:[],agentsBlocks:[]},z=new Set,U=new Set,J=new Set;for(let G of S){let X=_$(G,j);for(let Y of X.directories)if(!z.has(Y.path))z.add(Y.path),A.directories.push(Y);for(let Y of X.ruleFiles)if(!U.has(Y))U.add(Y),A.ruleFiles.push(Y);for(let Y of X.agentsBlocks){let B=`${Y.file}::${Y.skillName}`;if(!J.has(B))J.add(B),A.agentsBlocks.push(Y)}}return A}async function M($){try{return await Q$($),!0}catch{return!1}}async function R$($,L){if(!await M($))return;let j=await r($,"utf-8");for(let S of["agent-skill-manager","skill-manager","pskills"]){let A=`<!-- ${S}: ${L} -->`,z=`<!-- /${S}: ${L} -->`,U=j.indexOf(A),J=j.indexOf(z);if(U===-1||J===-1)continue;let G=U;if(G>0&&j[G-1]===`
|
|
3
|
-
`)G--;let Y=J+z.length;if(Y<j.length&&j[Y]===`
|
|
4
|
-
`)Y++;j=j.slice(0,G)+j.slice(Y)}await I$($,j,"utf-8")}async function i$($,L){let j=[];for(let S of $.directories)try{if(S.isSymlink)await m(S.path),j.push(`Removed symlink: ${S.path}`);else await m(S.path,{recursive:!0,force:!0}),j.push(`Removed directory: ${S.path}`);if(L&&F(S.path)!==F(L)){let A=i(S.path),z=O$(A,L);await H$(z,S.path,"dir"),j.push(`Created symlink: ${S.path} -> ${z}`)}}catch(A){j.push(`Failed to remove ${S.path}: ${A.message}`)}for(let S of $.ruleFiles)if(await M(S))try{await m(S),j.push(`Removed rule file: ${S}`)}catch(A){j.push(`Failed to remove ${S}: ${A.message}`)}for(let S of $.agentsBlocks)try{await R$(S.file,S.skillName),j.push(`Cleaned AGENTS.md block in: ${S.file}`)}catch(A){j.push(`Failed to clean AGENTS.md block: ${A.message}`)}return j}async function l$($){let L=[];for(let j of $.directories)if(await M(j.path)){let A=(await N$(j.path)).isSymbolicLink()?"symlink":"directory";L.push(`${j.path} (${A})`)}for(let j of $.ruleFiles)if(await M(j))L.push(j);for(let j of $.agentsBlocks)if(await M(j.file)){let S=await r(j.file,"utf-8");if(S.includes(`<!-- agent-skill-manager: ${j.skillName} -->`)||S.includes(`<!-- skill-manager: ${j.skillName} -->`)||S.includes(`<!-- pskills: ${j.skillName} -->`))L.push(`${j.file} (AGENTS.md block)`)}return L}var Q=()=>{if(process.env.NO_COLOR!==void 0)return!1;if(globalThis.__CLI_NO_COLOR)return!1;if(!process.stdout.isTTY)return!1;return!0},Z={bold:($)=>Q()?`\x1B[1m${$}\x1B[0m`:$,cyan:($)=>Q()?`\x1B[36m${$}\x1B[0m`:$,green:($)=>Q()?`\x1B[32m${$}\x1B[0m`:$,yellow:($)=>Q()?`\x1B[33m${$}\x1B[0m`:$,dim:($)=>Q()?`\x1B[2m${$}\x1B[0m`:$,white:($)=>Q()?`\x1B[37m${$}\x1B[0m`:$,red:($)=>Q()?`\x1B[31m${$}\x1B[0m`:$,blue:($)=>Q()?`\x1B[34m${$}\x1B[0m`:$,blueBold:($)=>Q()?`\x1B[34;1m${$}\x1B[0m`:$,magenta:($)=>Q()?`\x1B[35m${$}\x1B[0m`:$,bgDim:($)=>Q()?`\x1B[48;5;236m${$}\x1B[0m`:$,bgRed:($)=>Q()?`\x1B[41m\x1B[37m\x1B[1m${$}\x1B[0m`:$,bgYellow:($)=>Q()?`\x1B[43m\x1B[30m\x1B[1m${$}\x1B[0m`:$,bgGreen:($)=>Q()?`\x1B[42m\x1B[30m\x1B[1m${$}\x1B[0m`:$,bgCyan:($)=>Q()?`\x1B[46m\x1B[30m\x1B[1m${$}\x1B[0m`:$};function V($){if(!$)return"";switch($.toLowerCase()){case"low":return Z.green($);case"medium":return Z.yellow($);case"high":return Z.red($);case"max":return Z.magenta($);default:return $}}var l={claude:Z.blueBold,codex:Z.cyan,openclaw:Z.yellow,agents:Z.green,custom:Z.magenta,cursor:Z.blue,windsurf:Z.cyan,cline:Z.green,roocode:Z.magenta,continue:Z.yellow,copilot:Z.white,aider:Z.red,opencode:Z.cyan,zed:Z.blue,augment:Z.green,amp:Z.yellow};function p($,L){return(l[$]||Z.dim)(L)}function k($,L){if(!Q())return`[${L}]`;return(l[$]||Z.dim)(`[${L}]`)}function q($){let L=process.env.HOME||process.env.USERPROFILE||"";if(L&&$.startsWith(L))return"~"+$.slice(L.length);return $}function $L($){if($.length===0)return"No skills found.";let L=["Name","Version","Creator","Effort","Tool","Scope","Type","Path"],j=$.map((G)=>[G.name,G.version,G.creator||"—",G.effort||"—",G.providerLabel,G.scope,G.isSymlink?"symlink":"directory",q(G.path)]),S=L.map((G,X)=>Math.max(G.length,...j.map((Y)=>Y[X].length))),A=(G,X)=>G.padEnd(X),z=L.map((G,X)=>A(G,S[X])).join(" "),U=S.map((G)=>"-".repeat(G)).join("--"),J=j.map((G)=>G.map((X,Y)=>A(X,S[Y])).join(" "));return[Q()?Z.bold(z):z,U,...J].join(`
|
|
5
|
-
`)}function s($){let L=new Map;for(let S of $){let A=`${S.dirName}||${S.scope}`,z=L.get(A)??[];z.push(S),L.set(A,z)}let j=[];for(let[,S]of L){let A=S[0],z=new Set(S.map((J)=>J.scope)),U=new Set(S.map((J)=>J.isSymlink?"symlink":"directory"));j.push({name:A.name,version:A.version,creator:A.creator||"",effort:A.effort||"",providers:S.map((J)=>({provider:J.provider,label:J.providerLabel})),scope:z.size>1?"mixed":A.scope,type:U.size>1?"mixed":A.isSymlink?"symlink":"directory",path:q(A.path),warningCount:S.reduce((J,G)=>J+(G.warnings?.length??0),0)})}return j}function LL($){if($.length===0)return"No skills found.";let L=s($),j=[],S=Math.max(4,...L.map((N)=>N.name.length)),A=Math.max(7,...L.map((N)=>N.version.length)),z=Math.max(7,...L.map((N)=>Math.min((N.creator||"—").length,15))),U=Math.max(6,...L.map((N)=>(N.effort||"—").length)),J=7,G=9,X=L.map((N)=>N.providers.map((D)=>k(D.provider,D.label)).join(" ")),Y=L.map((N)=>N.providers.map((D)=>`[${D.label}]`).join(" ")),B=Math.max(9,...Y.map((N)=>N.length)),O=(N,D)=>N.padEnd(D),I=`${O("Name",S)} ${O("Version",A)} ${O("Creator",z)} ${O("Effort",U)} ${O("Tools",B)} ${O("Scope",J)} ${O("Type",G)}`;j.push(Q()?Z.bold(I):I),j.push(`${"-".repeat(S)} ${"-".repeat(A)} ${"-".repeat(z)} ${"-".repeat(U)} ${"-".repeat(B)} ${"-".repeat(J)} ${"-".repeat(G)}`);for(let N=0;N<L.length;N++){let D=L[N],C=O(D.name,S),c=O(D.version,A),x=(D.creator||"—").slice(0,15),v=O(x,z),W=D.effort||"—",y=D.effort?V(D.effort):"—",b=U-W.length,h=y+" ".repeat(Math.max(0,b)),f=B-Y[N].length,$$=X[N]+" ".repeat(Math.max(0,f)),L$=O(D.scope,J),S$=O(D.type,G),j$=D.warningCount>0?` ${Z.yellow(`(${D.warningCount} warning${D.warningCount>1?"s":""})`)}`:"";j.push(`${C} ${c} ${v} ${h} ${$$} ${L$} ${S$}${j$}`)}let _=L.length,H=$.length,T=new Set($.map((N)=>N.provider)),E=$.filter((N)=>N.scope==="global").length,w=$.filter((N)=>N.scope==="project").length;j.push("");let P=`${H} skills (${_} unique) across ${T.size} tools | ${E} global, ${w} project`;return j.push(Z.dim(P)),j.join(`
|
|
6
|
-
`)}function K$($,L){if(!Q()||!L)return $;let j=$.toLowerCase().indexOf(L.toLowerCase());if(j===-1)return $;let S=$.slice(0,j),A=$.slice(j,j+L.length),z=$.slice(j+L.length);return`${S}${Z.bold(Z.yellow(A))}${z}`}function SL($,L){if($.length===0)return`No skills matching "${L}". Try ${Z.bold("asm list")} to see all skills.`;let j=s($),S=[];S.push(Z.dim(`Found ${$.length} result${$.length===1?"":"s"} (${j.length} unique) matching "${L}"`)+`
|
|
7
|
-
`);let A=Math.max(4,...j.map((H)=>H.name.length)),z=Math.max(7,...j.map((H)=>H.version.length)),U=Math.max(7,...j.map((H)=>Math.min((H.creator||"—").length,15))),J=Math.max(6,...j.map((H)=>(H.effort||"—").length)),G=j.map((H)=>H.providers.map((T)=>k(T.provider,T.label)).join(" ")),X=j.map((H)=>H.providers.map((T)=>`[${T.label}]`).join(" ")),Y=Math.max(9,...X.map((H)=>H.length)),B=7,O=9,I=(H,T)=>H.padEnd(T),_=`${I("Name",A)} ${I("Version",z)} ${I("Creator",U)} ${I("Effort",J)} ${I("Tools",Y)} ${I("Scope",B)} ${I("Type",O)}`;S.push(Q()?Z.bold(_):_),S.push(`${"-".repeat(A)} ${"-".repeat(z)} ${"-".repeat(U)} ${"-".repeat(J)} ${"-".repeat(Y)} ${"-".repeat(B)} ${"-".repeat(O)}`);for(let H=0;H<j.length;H++){let T=j[H],E=K$(T.name,L),w=A-T.name.length,P=E+" ".repeat(Math.max(0,w)),N=I(T.version,z),D=(T.creator||"—").slice(0,15),C=I(D,U),c=T.effort||"—",x=T.effort?V(T.effort):"—",v=J-c.length,W=x+" ".repeat(Math.max(0,v)),y=Y-X[H].length,b=G[H]+" ".repeat(Math.max(0,y)),h=I(T.scope,B),f=I(T.type,O);S.push(`${P} ${N} ${C} ${W} ${b} ${h} ${f}`)}return S.join(`
|
|
8
|
-
`)}async function F$($){let L=[],j=(A,z)=>`${Q()?Z.bold(A+":"):A+":"} ${z}`;if(L.push(j("Name",$.name)),L.push(j("Version",$.version)),L.push(j("Creator",$.creator||"—")),$.effort)L.push(j("Effort",V($.effort)));if(L.push(j("Tool",$.providerLabel)),L.push(j("Scope",$.scope)),L.push(j("Location",$.location)),L.push(j("Path",q($.path))),L.push(j("Type",$.isSymlink?"symlink":"directory")),$.isSymlink&&$.symlinkTarget)L.push(j("Symlink Target",$.symlinkTarget));let S=$.fileCount??await g($.path);if(L.push(j("File Count",String(S))),$.description)L.push(""),L.push(j("Description",$.description));if($.warnings&&$.warnings.length>0){L.push(""),L.push(Q()?Z.bold("Warnings:"):"Warnings:");for(let A of $.warnings)L.push(` ${Q()?Z.yellow("!"):"!"} [${A.category}] ${A.message}`)}return L.join(`
|
|
9
|
-
`)}async function jL($){if($.length===0)return"No skills found.";if($.length===1)return F$($[0]);let L=[],j=(X,Y)=>`${Q()?Z.bold(X+":"):X+":"} ${Y}`,S=$[0],A=S.name;if(L.push(""),L.push(Q()?Z.blueBold(` ${A}`):` ${A}`),L.push(Q()?Z.dim(" "+"-".repeat(A.length+2)):" "+"-".repeat(A.length+2)),L.push(""),L.push(j(" Version",S.version)),L.push(j(" Creator",S.creator||"—")),S.effort)L.push(j(" Effort",V(S.effort)));let z=S.fileCount??await g(S.path);L.push(j(" File Count",String(z)));let U=$.map((X)=>k(X.provider,X.providerLabel)).join(" ");if(L.push(j(" Installed in",U)),S.description){L.push(""),L.push(Q()?Z.bold(" Description:"):" Description:");let X=q$(S.description,72);for(let Y of X)L.push(" "+Y)}L.push("");let J=` Installations (${$.length})`;L.push(Q()?Z.bold(J):J);for(let X=0;X<$.length;X++){let Y=$[X],B=p(Y.provider,Y.providerLabel),O=Y.isSymlink?"symlink":"directory",I=Z.dim(Y.scope);if(L.push(` ${B} (${I}, ${O})`),L.push(` ${Z.dim("Path:")} ${q(Y.path)}`),Y.isSymlink&&Y.symlinkTarget)L.push(` ${Z.dim("Target:")} ${Y.symlinkTarget}`)}let G=$.flatMap((X)=>{if(!X.warnings||X.warnings.length===0)return[];return X.warnings.map((Y)=>({...Y,provider:X.providerLabel}))});if(G.length>0){L.push("");let X=` Warnings (${G.length})`;L.push(Q()?Z.bold(X):X);for(let Y of G){let B=Q()?Z.yellow("!"):"!";L.push(` ${B} [${Y.category}] ${Y.message}`)}}return L.push(""),L.join(`
|
|
10
|
-
`)}function q$($,L){let j=$.split(/\s+/),S=[],A="";for(let z of j)if(A.length+z.length+1>L&&A.length>0)S.push(A),A=z;else A=A?A+" "+z:z;if(A)S.push(A);return S}function AL($){return JSON.stringify($,null,2)}function XL($){let L=[],j=new Set,S=new Map,A=[];for(let G of $){let X=S.get(G.realPath);if(X){if(G.isSymlink)continue;if(X.isSymlink)A[A.indexOf(X)]=G,S.set(G.realPath,G);else A.push(G)}else S.set(G.realPath,G),A.push(G)}let z=new Map;for(let G of A){let X=z.get(G.dirName)??[];X.push(G),z.set(G.dirName,X)}for(let[G,X]of z)if(new Set(X.map((B)=>B.location)).size>=2){L.push({key:G,reason:"same-dirName",instances:X});for(let B of X)j.add(B.path)}let U=new Map;for(let G of A){if(!G.name)continue;let X=U.get(G.name)??[];X.push(G),U.set(G.name,X)}for(let[G,X]of U){if(new Set(X.map((I)=>I.dirName)).size<2)continue;let B=X.filter((I)=>!j.has(I.path));if(B.length<2)continue;if(new Set(B.map((I)=>I.dirName)).size<2)continue;L.push({key:G,reason:"same-frontmatterName",instances:B})}L.sort((G,X)=>{if(G.reason!==X.reason)return G.reason==="same-dirName"?-1:1;return G.key.localeCompare(X.key)});let J=L.reduce((G,X)=>G+X.instances.length,0);return{scannedAt:new Date().toISOString(),totalSkills:$.length,duplicateGroups:L,totalDuplicateInstances:J}}function M$($){return[...$].sort((L,j)=>{if(L.scope!==j.scope)return L.scope==="global"?-1:1;let S=L.providerLabel.localeCompare(j.providerLabel);if(S!==0)return S;return L.path.localeCompare(j.path)})}function V$($){return $==="same-dirName"?"same dirName":"same name"}function YL($){if($.duplicateGroups.length===0)return Z.green("No duplicate skills found.");let L=[];L.push(""),L.push(Z.bold(` Found ${$.duplicateGroups.length} duplicate group(s) (${$.totalDuplicateInstances} total instances):`)),L.push("");for(let j of $.duplicateGroups){L.push(` ${Z.yellow(`"${j.key}"`)} ${Z.dim(`(${V$(j.reason)})`)}`);let S=M$(j.instances);for(let A=0;A<S.length;A++){let z=S[A],U=p(z.provider,z.providerLabel),J=A===0?Z.green(" [keep]"):Z.dim(" "),G=Z.dim(`(${z.scope})`);L.push(` ${J} ${U} ${G} ${Z.dim(q(z.path))}`)}L.push("")}return L.push(Z.dim(` Run ${Z.bold("asm audit -y")} to auto-remove duplicates`)),L.push(""),L.join(`
|
|
11
|
-
`)}function ZL($){return JSON.stringify($,null,2)}function UL($){let L=$.trim();if(!L)return["vi",[]];let j=[],S="",A=!1,z=0;while(z<L.length){let U=L[z];if(U==='"'){A=!0,z++;while(z<L.length&&L[z]!=='"'){if(L[z]==="\\"&&z+1<L.length){let J=L[z+1];if(J==='"'||J==="\\"){S+=J,z+=2;continue}}S+=L[z],z++}z++}else if(U==="'"){A=!0,z++;while(z<L.length&&L[z]!=="'")S+=L[z],z++;z++}else if(U===" "||U==="\t"){if(S.length>0||A)j.push(S),S="",A=!1;z++}else S+=U,z++}if(S.length>0||A)j.push(S);if(j.length===0)return["vi",[]];return[j[0],j.slice(1)]}import{readFileSync as E$}from"fs";import{resolve as w$,dirname as P$}from"path";import{fileURLToPath as C$}from"url";import{execSync as c$}from"child_process";var x$=P$(C$(import.meta.url)),e="1.11.0";try{let $=E$(w$(x$,"../../package.json"),"utf-8");e=JSON.parse($).version}catch{}var u="fee399d";try{u=c$("git rev-parse --short HEAD",{encoding:"utf-8",stdio:["pipe","pipe","ignore"]}).trim()||u}catch{}var v$=e,W$=u,OL=`v${v$} (${W$})`;
|
|
12
|
-
export{t as a,o as b,g as c,p$ as d,k$ as e,u$ as f,_$ as g,r$ as h,i$ as i,l$ as j,Z as k,V as l,p as m,q as n,$L as o,LL as p,SL as q,jL as r,q$ as s,AL as t,XL as u,M$ as v,V$ as w,YL as x,ZL as y,OL as z,UL as A};
|
package/dist/chunk-xkxs2gj3.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import{F as R,K}from"./chunk-dykgxxyr.js";import{readdir as n,stat as A$,lstat as z$,readlink as G$,readFile as X$,realpath as Y$}from"fs/promises";import{join as d,resolve as Z$}from"path";function t($){let L={},j=$.split(`
|
|
2
|
-
`),S=!1,A=!1,z=null,U=[],J="none",G=-1,X=null;function Y(){if(z){let B=U.join(" ").trim();if(B)L[z]=B;z=null,U=[],J="none",G=-1}}for(let B of j){if(B.trim()==="---")if(!A){A=!0,S=!0;continue}else{Y();break}if(!S)continue;if(J!=="none"&&z){let I=B.replace(/^\s*/,""),_=B.length-I.length;if(_>0&&I.length>0){if(G===-1)G=_;U.push(I);continue}else if(I.length===0)continue;else Y()}if(X!==null){let I=B.match(/^\s+(\w[\w-]*):\s*(.*?)\s*$/);if(I){let _=I[1],T=I[2].replace(/^["']|["']$/g,"");if(T)L[`${X}.${_}`]=T;continue}if(B.trim().length>0)X=null;else continue}let O=B.match(/^(\w[\w-]*):\s*(.*?)\s*$/);if(O){Y();let I=O[1],_=O[2];if(_==="|"||_===">")z=I,U=[],J=_==="|"?"literal":"folded";else if(_==="|+"||_===">+"||_==="|-"||_===">-")z=I,U=[],J=_.startsWith("|")?"literal":"folded";else{let H=_.replace(/^["']|["']$/g,"");if(H)L[I]=H;else X=I}}}return Y(),L}function o($){return $["metadata.version"]||$.version||"0.0.0"}function J$($,L){let j=[];for(let S of $.providers){if(!S.enabled){R(`scan: skipping disabled provider "${S.name}"`);continue}if(L==="global"||L==="both"){let A=K(S.global);R(`scan: adding location ${A} (${S.label}, global)`),j.push({dir:A,location:`global-${S.name}`,scope:"global",providerName:S.name,providerLabel:S.label})}if(L==="project"||L==="both"){let A=K(S.project);R(`scan: adding location ${A} (${S.label}, project)`),j.push({dir:A,location:`project-${S.name}`,scope:"project",providerName:S.name,providerLabel:S.label})}}for(let S of $.customPaths)if(L===S.scope||L==="both"){let A=K(S.path);R(`scan: adding custom location ${A} (${S.label}, ${S.scope})`),j.push({dir:A,location:`${S.scope}-custom`,scope:S.scope,providerName:"custom",providerLabel:S.label})}return j}async function g($){try{return(await n($,{recursive:!0})).length}catch{return 0}}async function U$($){let L=[];R(`scanning: ${$.dir} (${$.location})`);let j;try{j=await n($.dir)}catch{return R(`scanning: ${$.dir} — not found, skipping`),L}for(let S of j){let A=d($.dir,S);try{if(!(await A$(A)).isDirectory()){R(` skip: "${S}" — not a directory`);continue}}catch{R(` skip: "${S}" — stat failed`);continue}let z=d(A,"SKILL.md"),U;try{U=await X$(z,"utf-8")}catch{R(` skip: "${S}" — no SKILL.md`);continue}let J=t(U),G=!1,X=null;try{if((await z$(A)).isSymbolicLink())G=!0,X=await G$(A)}catch{}let Y=Z$(A),B;try{B=await Y$(A)}catch{B=Y}L.push({name:J.name||S,version:o(J),description:(J.description||"").replace(/\s*\n\s*/g," ").trim(),creator:J["metadata.creator"]||"",effort:J.effort||J["metadata.effort"]||void 0,dirName:S,path:Y,originalPath:A,location:$.location,scope:$.scope,provider:$.providerName,providerLabel:$.providerLabel,isSymlink:G,symlinkTarget:X,realPath:B})}return R(`found ${L.length} skill(s) in ${$.dir}`),L}async function p$($,L){let j=J$($,L);return(await Promise.all(j.map(U$))).flat()}function k$($,L){if(!L.trim())return $;let j=L.toLowerCase();return $.filter((S)=>S.name.toLowerCase().includes(j)||S.description.toLowerCase().includes(j)||S.creator.toLowerCase().includes(j)||S.effort&&S.effort.toLowerCase().includes(j)||S.location.toLowerCase().includes(j)||S.providerLabel.toLowerCase().includes(j))}function B$($,L){let j=$.split("."),S=L.split("."),A=Math.max(j.length,S.length);for(let z=0;z<A;z++){let U=parseInt(j[z]??"0",10),J=parseInt(S[z]??"0",10);if(isNaN(U)||isNaN(J))return $.localeCompare(L);if(U!==J)return U-J}return 0}function u$($,L){let j=[...$];switch(L){case"name":j.sort((S,A)=>S.name.localeCompare(A.name));break;case"version":j.sort((S,A)=>B$(S.version,A.version));break;case"location":j.sort((S,A)=>S.location.localeCompare(A.location));break}return j}import{rm as m,readFile as r,writeFile as I$,access as Q$,lstat as N$,symlink as H$}from"fs/promises";import{join as a,resolve as F,dirname as i,relative as O$}from"path";import{homedir as T$}from"os";var D$=T$();function _$($,L){let j={directories:[],ruleFiles:[],agentsBlocks:[]};j.directories.push({path:$.originalPath,isSymlink:$.isSymlink});let S=$.dirName;if($.scope==="project")j.ruleFiles.push(F(".cursor","rules",`${S}.mdc`),F(".windsurf","rules",`${S}.md`),F(".github","instructions",`${S}.instructions.md`)),j.agentsBlocks.push({file:F("AGENTS.md"),skillName:S});if($.scope==="global"){for(let U of L.providers){if(!U.enabled)continue;let J=K(U.global),G=a(i(J),"AGENTS.md");j.agentsBlocks.push({file:G,skillName:S})}let A=a(D$,".codex","AGENTS.md");if(!j.agentsBlocks.some((U)=>U.file===A))j.agentsBlocks.push({file:A,skillName:S})}return j}function r$($,L,j){let S=L.filter((G)=>G.dirName===$);if(S.length===0)return{directories:[],ruleFiles:[],agentsBlocks:[]};let A={directories:[],ruleFiles:[],agentsBlocks:[]},z=new Set,U=new Set,J=new Set;for(let G of S){let X=_$(G,j);for(let Y of X.directories)if(!z.has(Y.path))z.add(Y.path),A.directories.push(Y);for(let Y of X.ruleFiles)if(!U.has(Y))U.add(Y),A.ruleFiles.push(Y);for(let Y of X.agentsBlocks){let B=`${Y.file}::${Y.skillName}`;if(!J.has(B))J.add(B),A.agentsBlocks.push(Y)}}return A}async function M($){try{return await Q$($),!0}catch{return!1}}async function R$($,L){if(!await M($))return;let j=await r($,"utf-8");for(let S of["agent-skill-manager","skill-manager","pskills"]){let A=`<!-- ${S}: ${L} -->`,z=`<!-- /${S}: ${L} -->`,U=j.indexOf(A),J=j.indexOf(z);if(U===-1||J===-1)continue;let G=U;if(G>0&&j[G-1]===`
|
|
3
|
-
`)G--;let Y=J+z.length;if(Y<j.length&&j[Y]===`
|
|
4
|
-
`)Y++;j=j.slice(0,G)+j.slice(Y)}await I$($,j,"utf-8")}async function i$($,L){let j=[];for(let S of $.directories)try{if(S.isSymlink)await m(S.path),j.push(`Removed symlink: ${S.path}`);else await m(S.path,{recursive:!0,force:!0}),j.push(`Removed directory: ${S.path}`);if(L&&F(S.path)!==F(L)){let A=i(S.path),z=O$(A,L);await H$(z,S.path,"dir"),j.push(`Created symlink: ${S.path} -> ${z}`)}}catch(A){j.push(`Failed to remove ${S.path}: ${A.message}`)}for(let S of $.ruleFiles)if(await M(S))try{await m(S),j.push(`Removed rule file: ${S}`)}catch(A){j.push(`Failed to remove ${S}: ${A.message}`)}for(let S of $.agentsBlocks)try{await R$(S.file,S.skillName),j.push(`Cleaned AGENTS.md block in: ${S.file}`)}catch(A){j.push(`Failed to clean AGENTS.md block: ${A.message}`)}return j}async function l$($){let L=[];for(let j of $.directories)if(await M(j.path)){let A=(await N$(j.path)).isSymbolicLink()?"symlink":"directory";L.push(`${j.path} (${A})`)}for(let j of $.ruleFiles)if(await M(j))L.push(j);for(let j of $.agentsBlocks)if(await M(j.file)){let S=await r(j.file,"utf-8");if(S.includes(`<!-- agent-skill-manager: ${j.skillName} -->`)||S.includes(`<!-- skill-manager: ${j.skillName} -->`)||S.includes(`<!-- pskills: ${j.skillName} -->`))L.push(`${j.file} (AGENTS.md block)`)}return L}var Q=()=>{if(process.env.NO_COLOR!==void 0)return!1;if(globalThis.__CLI_NO_COLOR)return!1;if(!process.stdout.isTTY)return!1;return!0},Z={bold:($)=>Q()?`\x1B[1m${$}\x1B[0m`:$,cyan:($)=>Q()?`\x1B[36m${$}\x1B[0m`:$,green:($)=>Q()?`\x1B[32m${$}\x1B[0m`:$,yellow:($)=>Q()?`\x1B[33m${$}\x1B[0m`:$,dim:($)=>Q()?`\x1B[2m${$}\x1B[0m`:$,white:($)=>Q()?`\x1B[37m${$}\x1B[0m`:$,red:($)=>Q()?`\x1B[31m${$}\x1B[0m`:$,blue:($)=>Q()?`\x1B[34m${$}\x1B[0m`:$,blueBold:($)=>Q()?`\x1B[34;1m${$}\x1B[0m`:$,magenta:($)=>Q()?`\x1B[35m${$}\x1B[0m`:$,bgDim:($)=>Q()?`\x1B[48;5;236m${$}\x1B[0m`:$,bgRed:($)=>Q()?`\x1B[41m\x1B[37m\x1B[1m${$}\x1B[0m`:$,bgYellow:($)=>Q()?`\x1B[43m\x1B[30m\x1B[1m${$}\x1B[0m`:$,bgGreen:($)=>Q()?`\x1B[42m\x1B[30m\x1B[1m${$}\x1B[0m`:$,bgCyan:($)=>Q()?`\x1B[46m\x1B[30m\x1B[1m${$}\x1B[0m`:$};function V($){if(!$)return"";switch($.toLowerCase()){case"low":return Z.green($);case"medium":return Z.yellow($);case"high":return Z.red($);case"max":return Z.magenta($);default:return $}}var l={claude:Z.blueBold,codex:Z.cyan,openclaw:Z.yellow,agents:Z.green,custom:Z.magenta,cursor:Z.blue,windsurf:Z.cyan,cline:Z.green,roocode:Z.magenta,continue:Z.yellow,copilot:Z.white,aider:Z.red,opencode:Z.cyan,zed:Z.blue,augment:Z.green,amp:Z.yellow};function p($,L){return(l[$]||Z.dim)(L)}function k($,L){if(!Q())return`[${L}]`;return(l[$]||Z.dim)(`[${L}]`)}function q($){let L=process.env.HOME||process.env.USERPROFILE||"";if(L&&$.startsWith(L))return"~"+$.slice(L.length);return $}function $L($){if($.length===0)return"No skills found.";let L=["Name","Version","Creator","Effort","Tool","Scope","Type","Path"],j=$.map((G)=>[G.name,G.version,G.creator||"—",G.effort||"—",G.providerLabel,G.scope,G.isSymlink?"symlink":"directory",q(G.path)]),S=L.map((G,X)=>Math.max(G.length,...j.map((Y)=>Y[X].length))),A=(G,X)=>G.padEnd(X),z=L.map((G,X)=>A(G,S[X])).join(" "),U=S.map((G)=>"-".repeat(G)).join("--"),J=j.map((G)=>G.map((X,Y)=>A(X,S[Y])).join(" "));return[Q()?Z.bold(z):z,U,...J].join(`
|
|
5
|
-
`)}function s($){let L=new Map;for(let S of $){let A=`${S.dirName}||${S.scope}`,z=L.get(A)??[];z.push(S),L.set(A,z)}let j=[];for(let[,S]of L){let A=S[0],z=new Set(S.map((J)=>J.scope)),U=new Set(S.map((J)=>J.isSymlink?"symlink":"directory"));j.push({name:A.name,version:A.version,creator:A.creator||"",effort:A.effort||"",providers:S.map((J)=>({provider:J.provider,label:J.providerLabel})),scope:z.size>1?"mixed":A.scope,type:U.size>1?"mixed":A.isSymlink?"symlink":"directory",path:q(A.path),warningCount:S.reduce((J,G)=>J+(G.warnings?.length??0),0)})}return j}function LL($){if($.length===0)return"No skills found.";let L=s($),j=[],S=Math.max(4,...L.map((N)=>N.name.length)),A=Math.max(7,...L.map((N)=>N.version.length)),z=Math.max(7,...L.map((N)=>Math.min((N.creator||"—").length,15))),U=Math.max(6,...L.map((N)=>(N.effort||"—").length)),J=7,G=9,X=L.map((N)=>N.providers.map((D)=>k(D.provider,D.label)).join(" ")),Y=L.map((N)=>N.providers.map((D)=>`[${D.label}]`).join(" ")),B=Math.max(9,...Y.map((N)=>N.length)),O=(N,D)=>N.padEnd(D),I=`${O("Name",S)} ${O("Version",A)} ${O("Creator",z)} ${O("Effort",U)} ${O("Tools",B)} ${O("Scope",J)} ${O("Type",G)}`;j.push(Q()?Z.bold(I):I),j.push(`${"-".repeat(S)} ${"-".repeat(A)} ${"-".repeat(z)} ${"-".repeat(U)} ${"-".repeat(B)} ${"-".repeat(J)} ${"-".repeat(G)}`);for(let N=0;N<L.length;N++){let D=L[N],C=O(D.name,S),c=O(D.version,A),x=(D.creator||"—").slice(0,15),v=O(x,z),W=D.effort||"—",y=D.effort?V(D.effort):"—",b=U-W.length,h=y+" ".repeat(Math.max(0,b)),f=B-Y[N].length,$$=X[N]+" ".repeat(Math.max(0,f)),L$=O(D.scope,J),S$=O(D.type,G),j$=D.warningCount>0?` ${Z.yellow(`(${D.warningCount} warning${D.warningCount>1?"s":""})`)}`:"";j.push(`${C} ${c} ${v} ${h} ${$$} ${L$} ${S$}${j$}`)}let _=L.length,H=$.length,T=new Set($.map((N)=>N.provider)),E=$.filter((N)=>N.scope==="global").length,w=$.filter((N)=>N.scope==="project").length;j.push("");let P=`${H} skills (${_} unique) across ${T.size} tools | ${E} global, ${w} project`;return j.push(Z.dim(P)),j.join(`
|
|
6
|
-
`)}function K$($,L){if(!Q()||!L)return $;let j=$.toLowerCase().indexOf(L.toLowerCase());if(j===-1)return $;let S=$.slice(0,j),A=$.slice(j,j+L.length),z=$.slice(j+L.length);return`${S}${Z.bold(Z.yellow(A))}${z}`}function SL($,L){if($.length===0)return`No skills matching "${L}". Try ${Z.bold("asm list")} to see all skills.`;let j=s($),S=[];S.push(Z.dim(`Found ${$.length} result${$.length===1?"":"s"} (${j.length} unique) matching "${L}"`)+`
|
|
7
|
-
`);let A=Math.max(4,...j.map((H)=>H.name.length)),z=Math.max(7,...j.map((H)=>H.version.length)),U=Math.max(7,...j.map((H)=>Math.min((H.creator||"—").length,15))),J=Math.max(6,...j.map((H)=>(H.effort||"—").length)),G=j.map((H)=>H.providers.map((T)=>k(T.provider,T.label)).join(" ")),X=j.map((H)=>H.providers.map((T)=>`[${T.label}]`).join(" ")),Y=Math.max(9,...X.map((H)=>H.length)),B=7,O=9,I=(H,T)=>H.padEnd(T),_=`${I("Name",A)} ${I("Version",z)} ${I("Creator",U)} ${I("Effort",J)} ${I("Tools",Y)} ${I("Scope",B)} ${I("Type",O)}`;S.push(Q()?Z.bold(_):_),S.push(`${"-".repeat(A)} ${"-".repeat(z)} ${"-".repeat(U)} ${"-".repeat(J)} ${"-".repeat(Y)} ${"-".repeat(B)} ${"-".repeat(O)}`);for(let H=0;H<j.length;H++){let T=j[H],E=K$(T.name,L),w=A-T.name.length,P=E+" ".repeat(Math.max(0,w)),N=I(T.version,z),D=(T.creator||"—").slice(0,15),C=I(D,U),c=T.effort||"—",x=T.effort?V(T.effort):"—",v=J-c.length,W=x+" ".repeat(Math.max(0,v)),y=Y-X[H].length,b=G[H]+" ".repeat(Math.max(0,y)),h=I(T.scope,B),f=I(T.type,O);S.push(`${P} ${N} ${C} ${W} ${b} ${h} ${f}`)}return S.join(`
|
|
8
|
-
`)}async function F$($){let L=[],j=(A,z)=>`${Q()?Z.bold(A+":"):A+":"} ${z}`;if(L.push(j("Name",$.name)),L.push(j("Version",$.version)),L.push(j("Creator",$.creator||"—")),$.effort)L.push(j("Effort",V($.effort)));if(L.push(j("Tool",$.providerLabel)),L.push(j("Scope",$.scope)),L.push(j("Location",$.location)),L.push(j("Path",q($.path))),L.push(j("Type",$.isSymlink?"symlink":"directory")),$.isSymlink&&$.symlinkTarget)L.push(j("Symlink Target",$.symlinkTarget));let S=$.fileCount??await g($.path);if(L.push(j("File Count",String(S))),$.description)L.push(""),L.push(j("Description",$.description));if($.warnings&&$.warnings.length>0){L.push(""),L.push(Q()?Z.bold("Warnings:"):"Warnings:");for(let A of $.warnings)L.push(` ${Q()?Z.yellow("!"):"!"} [${A.category}] ${A.message}`)}return L.join(`
|
|
9
|
-
`)}async function jL($){if($.length===0)return"No skills found.";if($.length===1)return F$($[0]);let L=[],j=(X,Y)=>`${Q()?Z.bold(X+":"):X+":"} ${Y}`,S=$[0],A=S.name;if(L.push(""),L.push(Q()?Z.blueBold(` ${A}`):` ${A}`),L.push(Q()?Z.dim(" "+"-".repeat(A.length+2)):" "+"-".repeat(A.length+2)),L.push(""),L.push(j(" Version",S.version)),L.push(j(" Creator",S.creator||"—")),S.effort)L.push(j(" Effort",V(S.effort)));let z=S.fileCount??await g(S.path);L.push(j(" File Count",String(z)));let U=$.map((X)=>k(X.provider,X.providerLabel)).join(" ");if(L.push(j(" Installed in",U)),S.description){L.push(""),L.push(Q()?Z.bold(" Description:"):" Description:");let X=q$(S.description,72);for(let Y of X)L.push(" "+Y)}L.push("");let J=` Installations (${$.length})`;L.push(Q()?Z.bold(J):J);for(let X=0;X<$.length;X++){let Y=$[X],B=p(Y.provider,Y.providerLabel),O=Y.isSymlink?"symlink":"directory",I=Z.dim(Y.scope);if(L.push(` ${B} (${I}, ${O})`),L.push(` ${Z.dim("Path:")} ${q(Y.path)}`),Y.isSymlink&&Y.symlinkTarget)L.push(` ${Z.dim("Target:")} ${Y.symlinkTarget}`)}let G=$.flatMap((X)=>{if(!X.warnings||X.warnings.length===0)return[];return X.warnings.map((Y)=>({...Y,provider:X.providerLabel}))});if(G.length>0){L.push("");let X=` Warnings (${G.length})`;L.push(Q()?Z.bold(X):X);for(let Y of G){let B=Q()?Z.yellow("!"):"!";L.push(` ${B} [${Y.category}] ${Y.message}`)}}return L.push(""),L.join(`
|
|
10
|
-
`)}function q$($,L){let j=$.split(/\s+/),S=[],A="";for(let z of j)if(A.length+z.length+1>L&&A.length>0)S.push(A),A=z;else A=A?A+" "+z:z;if(A)S.push(A);return S}function AL($){return JSON.stringify($,null,2)}function XL($){let L=[],j=new Set,S=new Map,A=[];for(let G of $){let X=S.get(G.realPath);if(X){if(G.isSymlink)continue;if(X.isSymlink)A[A.indexOf(X)]=G,S.set(G.realPath,G);else A.push(G)}else S.set(G.realPath,G),A.push(G)}let z=new Map;for(let G of A){let X=z.get(G.dirName)??[];X.push(G),z.set(G.dirName,X)}for(let[G,X]of z)if(new Set(X.map((B)=>B.location)).size>=2){L.push({key:G,reason:"same-dirName",instances:X});for(let B of X)j.add(B.path)}let U=new Map;for(let G of A){if(!G.name)continue;let X=U.get(G.name)??[];X.push(G),U.set(G.name,X)}for(let[G,X]of U){if(new Set(X.map((I)=>I.dirName)).size<2)continue;let B=X.filter((I)=>!j.has(I.path));if(B.length<2)continue;if(new Set(B.map((I)=>I.dirName)).size<2)continue;L.push({key:G,reason:"same-frontmatterName",instances:B})}L.sort((G,X)=>{if(G.reason!==X.reason)return G.reason==="same-dirName"?-1:1;return G.key.localeCompare(X.key)});let J=L.reduce((G,X)=>G+X.instances.length,0);return{scannedAt:new Date().toISOString(),totalSkills:$.length,duplicateGroups:L,totalDuplicateInstances:J}}function M$($){return[...$].sort((L,j)=>{if(L.scope!==j.scope)return L.scope==="global"?-1:1;let S=L.providerLabel.localeCompare(j.providerLabel);if(S!==0)return S;return L.path.localeCompare(j.path)})}function V$($){return $==="same-dirName"?"same dirName":"same name"}function YL($){if($.duplicateGroups.length===0)return Z.green("No duplicate skills found.");let L=[];L.push(""),L.push(Z.bold(` Found ${$.duplicateGroups.length} duplicate group(s) (${$.totalDuplicateInstances} total instances):`)),L.push("");for(let j of $.duplicateGroups){L.push(` ${Z.yellow(`"${j.key}"`)} ${Z.dim(`(${V$(j.reason)})`)}`);let S=M$(j.instances);for(let A=0;A<S.length;A++){let z=S[A],U=p(z.provider,z.providerLabel),J=A===0?Z.green(" [keep]"):Z.dim(" "),G=Z.dim(`(${z.scope})`);L.push(` ${J} ${U} ${G} ${Z.dim(q(z.path))}`)}L.push("")}return L.push(Z.dim(` Run ${Z.bold("asm audit -y")} to auto-remove duplicates`)),L.push(""),L.join(`
|
|
11
|
-
`)}function ZL($){return JSON.stringify($,null,2)}function UL($){let L=$.trim();if(!L)return["vi",[]];let j=[],S="",A=!1,z=0;while(z<L.length){let U=L[z];if(U==='"'){A=!0,z++;while(z<L.length&&L[z]!=='"'){if(L[z]==="\\"&&z+1<L.length){let J=L[z+1];if(J==='"'||J==="\\"){S+=J,z+=2;continue}}S+=L[z],z++}z++}else if(U==="'"){A=!0,z++;while(z<L.length&&L[z]!=="'")S+=L[z],z++;z++}else if(U===" "||U==="\t"){if(S.length>0||A)j.push(S),S="",A=!1;z++}else S+=U,z++}if(S.length>0||A)j.push(S);if(j.length===0)return["vi",[]];return[j[0],j.slice(1)]}import{readFileSync as E$}from"fs";import{resolve as w$,dirname as P$}from"path";import{fileURLToPath as C$}from"url";import{execSync as c$}from"child_process";var x$=P$(C$(import.meta.url)),e="1.11.0";try{let $=E$(w$(x$,"../../package.json"),"utf-8");e=JSON.parse($).version}catch{}var u="cc56d8f";try{u=c$("git rev-parse --short HEAD",{encoding:"utf-8",stdio:["pipe","pipe","ignore"]}).trim()||u}catch{}var v$=e,W$=u,OL=`v${v$} (${W$})`;
|
|
12
|
-
export{t as a,o as b,g as c,p$ as d,k$ as e,u$ as f,_$ as g,r$ as h,i$ as i,l$ as j,Z as k,V as l,p as m,q as n,$L as o,LL as p,SL as q,jL as r,q$ as s,AL as t,XL as u,M$ as v,V$ as w,YL as x,ZL as y,OL as z,UL as A};
|
package/dist/chunk-y008z8jw.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import{F as R,K}from"./chunk-dykgxxyr.js";import{readdir as n,stat as A$,lstat as z$,readlink as G$,readFile as X$,realpath as Y$}from"fs/promises";import{join as d,resolve as Z$}from"path";function t($){let L={},j=$.split(`
|
|
2
|
-
`),S=!1,A=!1,z=null,U=[],J="none",G=-1,X=null;function Y(){if(z){let B=U.join(" ").trim();if(B)L[z]=B;z=null,U=[],J="none",G=-1}}for(let B of j){if(B.trim()==="---")if(!A){A=!0,S=!0;continue}else{Y();break}if(!S)continue;if(J!=="none"&&z){let I=B.replace(/^\s*/,""),_=B.length-I.length;if(_>0&&I.length>0){if(G===-1)G=_;U.push(I);continue}else if(I.length===0)continue;else Y()}if(X!==null){let I=B.match(/^\s+(\w[\w-]*):\s*(.*?)\s*$/);if(I){let _=I[1],T=I[2].replace(/^["']|["']$/g,"");if(T)L[`${X}.${_}`]=T;continue}if(B.trim().length>0)X=null;else continue}let O=B.match(/^(\w[\w-]*):\s*(.*?)\s*$/);if(O){Y();let I=O[1],_=O[2];if(_==="|"||_===">")z=I,U=[],J=_==="|"?"literal":"folded";else if(_==="|+"||_===">+"||_==="|-"||_===">-")z=I,U=[],J=_.startsWith("|")?"literal":"folded";else{let H=_.replace(/^["']|["']$/g,"");if(H)L[I]=H;else X=I}}}return Y(),L}function o($){return $["metadata.version"]||$.version||"0.0.0"}function J$($,L){let j=[];for(let S of $.providers){if(!S.enabled){R(`scan: skipping disabled provider "${S.name}"`);continue}if(L==="global"||L==="both"){let A=K(S.global);R(`scan: adding location ${A} (${S.label}, global)`),j.push({dir:A,location:`global-${S.name}`,scope:"global",providerName:S.name,providerLabel:S.label})}if(L==="project"||L==="both"){let A=K(S.project);R(`scan: adding location ${A} (${S.label}, project)`),j.push({dir:A,location:`project-${S.name}`,scope:"project",providerName:S.name,providerLabel:S.label})}}for(let S of $.customPaths)if(L===S.scope||L==="both"){let A=K(S.path);R(`scan: adding custom location ${A} (${S.label}, ${S.scope})`),j.push({dir:A,location:`${S.scope}-custom`,scope:S.scope,providerName:"custom",providerLabel:S.label})}return j}async function g($){try{return(await n($,{recursive:!0})).length}catch{return 0}}async function U$($){let L=[];R(`scanning: ${$.dir} (${$.location})`);let j;try{j=await n($.dir)}catch{return R(`scanning: ${$.dir} — not found, skipping`),L}for(let S of j){let A=d($.dir,S);try{if(!(await A$(A)).isDirectory()){R(` skip: "${S}" — not a directory`);continue}}catch{R(` skip: "${S}" — stat failed`);continue}let z=d(A,"SKILL.md"),U;try{U=await X$(z,"utf-8")}catch{R(` skip: "${S}" — no SKILL.md`);continue}let J=t(U),G=!1,X=null;try{if((await z$(A)).isSymbolicLink())G=!0,X=await G$(A)}catch{}let Y=Z$(A),B;try{B=await Y$(A)}catch{B=Y}L.push({name:J.name||S,version:o(J),description:(J.description||"").replace(/\s*\n\s*/g," ").trim(),creator:J["metadata.creator"]||"",effort:J.effort||J["metadata.effort"]||void 0,dirName:S,path:Y,originalPath:A,location:$.location,scope:$.scope,provider:$.providerName,providerLabel:$.providerLabel,isSymlink:G,symlinkTarget:X,realPath:B})}return R(`found ${L.length} skill(s) in ${$.dir}`),L}async function p$($,L){let j=J$($,L);return(await Promise.all(j.map(U$))).flat()}function k$($,L){if(!L.trim())return $;let j=L.toLowerCase();return $.filter((S)=>S.name.toLowerCase().includes(j)||S.description.toLowerCase().includes(j)||S.creator.toLowerCase().includes(j)||S.effort&&S.effort.toLowerCase().includes(j)||S.location.toLowerCase().includes(j)||S.providerLabel.toLowerCase().includes(j))}function B$($,L){let j=$.split("."),S=L.split("."),A=Math.max(j.length,S.length);for(let z=0;z<A;z++){let U=parseInt(j[z]??"0",10),J=parseInt(S[z]??"0",10);if(isNaN(U)||isNaN(J))return $.localeCompare(L);if(U!==J)return U-J}return 0}function u$($,L){let j=[...$];switch(L){case"name":j.sort((S,A)=>S.name.localeCompare(A.name));break;case"version":j.sort((S,A)=>B$(S.version,A.version));break;case"location":j.sort((S,A)=>S.location.localeCompare(A.location));break}return j}import{rm as m,readFile as r,writeFile as I$,access as Q$,lstat as N$,symlink as H$}from"fs/promises";import{join as a,resolve as F,dirname as i,relative as O$}from"path";import{homedir as T$}from"os";var D$=T$();function _$($,L){let j={directories:[],ruleFiles:[],agentsBlocks:[]};j.directories.push({path:$.originalPath,isSymlink:$.isSymlink});let S=$.dirName;if($.scope==="project")j.ruleFiles.push(F(".cursor","rules",`${S}.mdc`),F(".windsurf","rules",`${S}.md`),F(".github","instructions",`${S}.instructions.md`)),j.agentsBlocks.push({file:F("AGENTS.md"),skillName:S});if($.scope==="global"){for(let U of L.providers){if(!U.enabled)continue;let J=K(U.global),G=a(i(J),"AGENTS.md");j.agentsBlocks.push({file:G,skillName:S})}let A=a(D$,".codex","AGENTS.md");if(!j.agentsBlocks.some((U)=>U.file===A))j.agentsBlocks.push({file:A,skillName:S})}return j}function r$($,L,j){let S=L.filter((G)=>G.dirName===$);if(S.length===0)return{directories:[],ruleFiles:[],agentsBlocks:[]};let A={directories:[],ruleFiles:[],agentsBlocks:[]},z=new Set,U=new Set,J=new Set;for(let G of S){let X=_$(G,j);for(let Y of X.directories)if(!z.has(Y.path))z.add(Y.path),A.directories.push(Y);for(let Y of X.ruleFiles)if(!U.has(Y))U.add(Y),A.ruleFiles.push(Y);for(let Y of X.agentsBlocks){let B=`${Y.file}::${Y.skillName}`;if(!J.has(B))J.add(B),A.agentsBlocks.push(Y)}}return A}async function M($){try{return await Q$($),!0}catch{return!1}}async function R$($,L){if(!await M($))return;let j=await r($,"utf-8");for(let S of["agent-skill-manager","skill-manager","pskills"]){let A=`<!-- ${S}: ${L} -->`,z=`<!-- /${S}: ${L} -->`,U=j.indexOf(A),J=j.indexOf(z);if(U===-1||J===-1)continue;let G=U;if(G>0&&j[G-1]===`
|
|
3
|
-
`)G--;let Y=J+z.length;if(Y<j.length&&j[Y]===`
|
|
4
|
-
`)Y++;j=j.slice(0,G)+j.slice(Y)}await I$($,j,"utf-8")}async function i$($,L){let j=[];for(let S of $.directories)try{if(S.isSymlink)await m(S.path),j.push(`Removed symlink: ${S.path}`);else await m(S.path,{recursive:!0,force:!0}),j.push(`Removed directory: ${S.path}`);if(L&&F(S.path)!==F(L)){let A=i(S.path),z=O$(A,L);await H$(z,S.path,"dir"),j.push(`Created symlink: ${S.path} -> ${z}`)}}catch(A){j.push(`Failed to remove ${S.path}: ${A.message}`)}for(let S of $.ruleFiles)if(await M(S))try{await m(S),j.push(`Removed rule file: ${S}`)}catch(A){j.push(`Failed to remove ${S}: ${A.message}`)}for(let S of $.agentsBlocks)try{await R$(S.file,S.skillName),j.push(`Cleaned AGENTS.md block in: ${S.file}`)}catch(A){j.push(`Failed to clean AGENTS.md block: ${A.message}`)}return j}async function l$($){let L=[];for(let j of $.directories)if(await M(j.path)){let A=(await N$(j.path)).isSymbolicLink()?"symlink":"directory";L.push(`${j.path} (${A})`)}for(let j of $.ruleFiles)if(await M(j))L.push(j);for(let j of $.agentsBlocks)if(await M(j.file)){let S=await r(j.file,"utf-8");if(S.includes(`<!-- agent-skill-manager: ${j.skillName} -->`)||S.includes(`<!-- skill-manager: ${j.skillName} -->`)||S.includes(`<!-- pskills: ${j.skillName} -->`))L.push(`${j.file} (AGENTS.md block)`)}return L}var Q=()=>{if(process.env.NO_COLOR!==void 0)return!1;if(globalThis.__CLI_NO_COLOR)return!1;if(!process.stdout.isTTY)return!1;return!0},Z={bold:($)=>Q()?`\x1B[1m${$}\x1B[0m`:$,cyan:($)=>Q()?`\x1B[36m${$}\x1B[0m`:$,green:($)=>Q()?`\x1B[32m${$}\x1B[0m`:$,yellow:($)=>Q()?`\x1B[33m${$}\x1B[0m`:$,dim:($)=>Q()?`\x1B[2m${$}\x1B[0m`:$,white:($)=>Q()?`\x1B[37m${$}\x1B[0m`:$,red:($)=>Q()?`\x1B[31m${$}\x1B[0m`:$,blue:($)=>Q()?`\x1B[34m${$}\x1B[0m`:$,blueBold:($)=>Q()?`\x1B[34;1m${$}\x1B[0m`:$,magenta:($)=>Q()?`\x1B[35m${$}\x1B[0m`:$,bgDim:($)=>Q()?`\x1B[48;5;236m${$}\x1B[0m`:$,bgRed:($)=>Q()?`\x1B[41m\x1B[37m\x1B[1m${$}\x1B[0m`:$,bgYellow:($)=>Q()?`\x1B[43m\x1B[30m\x1B[1m${$}\x1B[0m`:$,bgGreen:($)=>Q()?`\x1B[42m\x1B[30m\x1B[1m${$}\x1B[0m`:$,bgCyan:($)=>Q()?`\x1B[46m\x1B[30m\x1B[1m${$}\x1B[0m`:$};function V($){if(!$)return"";switch($.toLowerCase()){case"low":return Z.green($);case"medium":return Z.yellow($);case"high":return Z.red($);case"max":return Z.magenta($);default:return $}}var l={claude:Z.blueBold,codex:Z.cyan,openclaw:Z.yellow,agents:Z.green,custom:Z.magenta,cursor:Z.blue,windsurf:Z.cyan,cline:Z.green,roocode:Z.magenta,continue:Z.yellow,copilot:Z.white,aider:Z.red,opencode:Z.cyan,zed:Z.blue,augment:Z.green,amp:Z.yellow};function p($,L){return(l[$]||Z.dim)(L)}function k($,L){if(!Q())return`[${L}]`;return(l[$]||Z.dim)(`[${L}]`)}function q($){let L=process.env.HOME||process.env.USERPROFILE||"";if(L&&$.startsWith(L))return"~"+$.slice(L.length);return $}function $L($){if($.length===0)return"No skills found.";let L=["Name","Version","Creator","Effort","Tool","Scope","Type","Path"],j=$.map((G)=>[G.name,G.version,G.creator||"—",G.effort||"—",G.providerLabel,G.scope,G.isSymlink?"symlink":"directory",q(G.path)]),S=L.map((G,X)=>Math.max(G.length,...j.map((Y)=>Y[X].length))),A=(G,X)=>G.padEnd(X),z=L.map((G,X)=>A(G,S[X])).join(" "),U=S.map((G)=>"-".repeat(G)).join("--"),J=j.map((G)=>G.map((X,Y)=>A(X,S[Y])).join(" "));return[Q()?Z.bold(z):z,U,...J].join(`
|
|
5
|
-
`)}function s($){let L=new Map;for(let S of $){let A=`${S.dirName}||${S.scope}`,z=L.get(A)??[];z.push(S),L.set(A,z)}let j=[];for(let[,S]of L){let A=S[0],z=new Set(S.map((J)=>J.scope)),U=new Set(S.map((J)=>J.isSymlink?"symlink":"directory"));j.push({name:A.name,version:A.version,creator:A.creator||"",effort:A.effort||"",providers:S.map((J)=>({provider:J.provider,label:J.providerLabel})),scope:z.size>1?"mixed":A.scope,type:U.size>1?"mixed":A.isSymlink?"symlink":"directory",path:q(A.path),warningCount:S.reduce((J,G)=>J+(G.warnings?.length??0),0)})}return j}function LL($){if($.length===0)return"No skills found.";let L=s($),j=[],S=Math.max(4,...L.map((N)=>N.name.length)),A=Math.max(7,...L.map((N)=>N.version.length)),z=Math.max(7,...L.map((N)=>Math.min((N.creator||"—").length,15))),U=Math.max(6,...L.map((N)=>(N.effort||"—").length)),J=7,G=9,X=L.map((N)=>N.providers.map((D)=>k(D.provider,D.label)).join(" ")),Y=L.map((N)=>N.providers.map((D)=>`[${D.label}]`).join(" ")),B=Math.max(9,...Y.map((N)=>N.length)),O=(N,D)=>N.padEnd(D),I=`${O("Name",S)} ${O("Version",A)} ${O("Creator",z)} ${O("Effort",U)} ${O("Tools",B)} ${O("Scope",J)} ${O("Type",G)}`;j.push(Q()?Z.bold(I):I),j.push(`${"-".repeat(S)} ${"-".repeat(A)} ${"-".repeat(z)} ${"-".repeat(U)} ${"-".repeat(B)} ${"-".repeat(J)} ${"-".repeat(G)}`);for(let N=0;N<L.length;N++){let D=L[N],C=O(D.name,S),c=O(D.version,A),x=(D.creator||"—").slice(0,15),v=O(x,z),W=D.effort||"—",y=D.effort?V(D.effort):"—",b=U-W.length,h=y+" ".repeat(Math.max(0,b)),f=B-Y[N].length,$$=X[N]+" ".repeat(Math.max(0,f)),L$=O(D.scope,J),S$=O(D.type,G),j$=D.warningCount>0?` ${Z.yellow(`(${D.warningCount} warning${D.warningCount>1?"s":""})`)}`:"";j.push(`${C} ${c} ${v} ${h} ${$$} ${L$} ${S$}${j$}`)}let _=L.length,H=$.length,T=new Set($.map((N)=>N.provider)),E=$.filter((N)=>N.scope==="global").length,w=$.filter((N)=>N.scope==="project").length;j.push("");let P=`${H} skills (${_} unique) across ${T.size} tools | ${E} global, ${w} project`;return j.push(Z.dim(P)),j.join(`
|
|
6
|
-
`)}function K$($,L){if(!Q()||!L)return $;let j=$.toLowerCase().indexOf(L.toLowerCase());if(j===-1)return $;let S=$.slice(0,j),A=$.slice(j,j+L.length),z=$.slice(j+L.length);return`${S}${Z.bold(Z.yellow(A))}${z}`}function SL($,L){if($.length===0)return`No skills matching "${L}". Try ${Z.bold("asm list")} to see all skills.`;let j=s($),S=[];S.push(Z.dim(`Found ${$.length} result${$.length===1?"":"s"} (${j.length} unique) matching "${L}"`)+`
|
|
7
|
-
`);let A=Math.max(4,...j.map((H)=>H.name.length)),z=Math.max(7,...j.map((H)=>H.version.length)),U=Math.max(7,...j.map((H)=>Math.min((H.creator||"—").length,15))),J=Math.max(6,...j.map((H)=>(H.effort||"—").length)),G=j.map((H)=>H.providers.map((T)=>k(T.provider,T.label)).join(" ")),X=j.map((H)=>H.providers.map((T)=>`[${T.label}]`).join(" ")),Y=Math.max(9,...X.map((H)=>H.length)),B=7,O=9,I=(H,T)=>H.padEnd(T),_=`${I("Name",A)} ${I("Version",z)} ${I("Creator",U)} ${I("Effort",J)} ${I("Tools",Y)} ${I("Scope",B)} ${I("Type",O)}`;S.push(Q()?Z.bold(_):_),S.push(`${"-".repeat(A)} ${"-".repeat(z)} ${"-".repeat(U)} ${"-".repeat(J)} ${"-".repeat(Y)} ${"-".repeat(B)} ${"-".repeat(O)}`);for(let H=0;H<j.length;H++){let T=j[H],E=K$(T.name,L),w=A-T.name.length,P=E+" ".repeat(Math.max(0,w)),N=I(T.version,z),D=(T.creator||"—").slice(0,15),C=I(D,U),c=T.effort||"—",x=T.effort?V(T.effort):"—",v=J-c.length,W=x+" ".repeat(Math.max(0,v)),y=Y-X[H].length,b=G[H]+" ".repeat(Math.max(0,y)),h=I(T.scope,B),f=I(T.type,O);S.push(`${P} ${N} ${C} ${W} ${b} ${h} ${f}`)}return S.join(`
|
|
8
|
-
`)}async function F$($){let L=[],j=(A,z)=>`${Q()?Z.bold(A+":"):A+":"} ${z}`;if(L.push(j("Name",$.name)),L.push(j("Version",$.version)),L.push(j("Creator",$.creator||"—")),$.effort)L.push(j("Effort",V($.effort)));if(L.push(j("Tool",$.providerLabel)),L.push(j("Scope",$.scope)),L.push(j("Location",$.location)),L.push(j("Path",q($.path))),L.push(j("Type",$.isSymlink?"symlink":"directory")),$.isSymlink&&$.symlinkTarget)L.push(j("Symlink Target",$.symlinkTarget));let S=$.fileCount??await g($.path);if(L.push(j("File Count",String(S))),$.description)L.push(""),L.push(j("Description",$.description));if($.warnings&&$.warnings.length>0){L.push(""),L.push(Q()?Z.bold("Warnings:"):"Warnings:");for(let A of $.warnings)L.push(` ${Q()?Z.yellow("!"):"!"} [${A.category}] ${A.message}`)}return L.join(`
|
|
9
|
-
`)}async function jL($){if($.length===0)return"No skills found.";if($.length===1)return F$($[0]);let L=[],j=(X,Y)=>`${Q()?Z.bold(X+":"):X+":"} ${Y}`,S=$[0],A=S.name;if(L.push(""),L.push(Q()?Z.blueBold(` ${A}`):` ${A}`),L.push(Q()?Z.dim(" "+"-".repeat(A.length+2)):" "+"-".repeat(A.length+2)),L.push(""),L.push(j(" Version",S.version)),L.push(j(" Creator",S.creator||"—")),S.effort)L.push(j(" Effort",V(S.effort)));let z=S.fileCount??await g(S.path);L.push(j(" File Count",String(z)));let U=$.map((X)=>k(X.provider,X.providerLabel)).join(" ");if(L.push(j(" Installed in",U)),S.description){L.push(""),L.push(Q()?Z.bold(" Description:"):" Description:");let X=q$(S.description,72);for(let Y of X)L.push(" "+Y)}L.push("");let J=` Installations (${$.length})`;L.push(Q()?Z.bold(J):J);for(let X=0;X<$.length;X++){let Y=$[X],B=p(Y.provider,Y.providerLabel),O=Y.isSymlink?"symlink":"directory",I=Z.dim(Y.scope);if(L.push(` ${B} (${I}, ${O})`),L.push(` ${Z.dim("Path:")} ${q(Y.path)}`),Y.isSymlink&&Y.symlinkTarget)L.push(` ${Z.dim("Target:")} ${Y.symlinkTarget}`)}let G=$.flatMap((X)=>{if(!X.warnings||X.warnings.length===0)return[];return X.warnings.map((Y)=>({...Y,provider:X.providerLabel}))});if(G.length>0){L.push("");let X=` Warnings (${G.length})`;L.push(Q()?Z.bold(X):X);for(let Y of G){let B=Q()?Z.yellow("!"):"!";L.push(` ${B} [${Y.category}] ${Y.message}`)}}return L.push(""),L.join(`
|
|
10
|
-
`)}function q$($,L){let j=$.split(/\s+/),S=[],A="";for(let z of j)if(A.length+z.length+1>L&&A.length>0)S.push(A),A=z;else A=A?A+" "+z:z;if(A)S.push(A);return S}function AL($){return JSON.stringify($,null,2)}function XL($){let L=[],j=new Set,S=new Map,A=[];for(let G of $){let X=S.get(G.realPath);if(X){if(G.isSymlink)continue;if(X.isSymlink)A[A.indexOf(X)]=G,S.set(G.realPath,G);else A.push(G)}else S.set(G.realPath,G),A.push(G)}let z=new Map;for(let G of A){let X=z.get(G.dirName)??[];X.push(G),z.set(G.dirName,X)}for(let[G,X]of z)if(new Set(X.map((B)=>B.location)).size>=2){L.push({key:G,reason:"same-dirName",instances:X});for(let B of X)j.add(B.path)}let U=new Map;for(let G of A){if(!G.name)continue;let X=U.get(G.name)??[];X.push(G),U.set(G.name,X)}for(let[G,X]of U){if(new Set(X.map((I)=>I.dirName)).size<2)continue;let B=X.filter((I)=>!j.has(I.path));if(B.length<2)continue;if(new Set(B.map((I)=>I.dirName)).size<2)continue;L.push({key:G,reason:"same-frontmatterName",instances:B})}L.sort((G,X)=>{if(G.reason!==X.reason)return G.reason==="same-dirName"?-1:1;return G.key.localeCompare(X.key)});let J=L.reduce((G,X)=>G+X.instances.length,0);return{scannedAt:new Date().toISOString(),totalSkills:$.length,duplicateGroups:L,totalDuplicateInstances:J}}function M$($){return[...$].sort((L,j)=>{if(L.scope!==j.scope)return L.scope==="global"?-1:1;let S=L.providerLabel.localeCompare(j.providerLabel);if(S!==0)return S;return L.path.localeCompare(j.path)})}function V$($){return $==="same-dirName"?"same dirName":"same name"}function YL($){if($.duplicateGroups.length===0)return Z.green("No duplicate skills found.");let L=[];L.push(""),L.push(Z.bold(` Found ${$.duplicateGroups.length} duplicate group(s) (${$.totalDuplicateInstances} total instances):`)),L.push("");for(let j of $.duplicateGroups){L.push(` ${Z.yellow(`"${j.key}"`)} ${Z.dim(`(${V$(j.reason)})`)}`);let S=M$(j.instances);for(let A=0;A<S.length;A++){let z=S[A],U=p(z.provider,z.providerLabel),J=A===0?Z.green(" [keep]"):Z.dim(" "),G=Z.dim(`(${z.scope})`);L.push(` ${J} ${U} ${G} ${Z.dim(q(z.path))}`)}L.push("")}return L.push(Z.dim(` Run ${Z.bold("asm audit -y")} to auto-remove duplicates`)),L.push(""),L.join(`
|
|
11
|
-
`)}function ZL($){return JSON.stringify($,null,2)}function UL($){let L=$.trim();if(!L)return["vi",[]];let j=[],S="",A=!1,z=0;while(z<L.length){let U=L[z];if(U==='"'){A=!0,z++;while(z<L.length&&L[z]!=='"'){if(L[z]==="\\"&&z+1<L.length){let J=L[z+1];if(J==='"'||J==="\\"){S+=J,z+=2;continue}}S+=L[z],z++}z++}else if(U==="'"){A=!0,z++;while(z<L.length&&L[z]!=="'")S+=L[z],z++;z++}else if(U===" "||U==="\t"){if(S.length>0||A)j.push(S),S="",A=!1;z++}else S+=U,z++}if(S.length>0||A)j.push(S);if(j.length===0)return["vi",[]];return[j[0],j.slice(1)]}import{readFileSync as E$}from"fs";import{resolve as w$,dirname as P$}from"path";import{fileURLToPath as C$}from"url";import{execSync as c$}from"child_process";var x$=P$(C$(import.meta.url)),e="1.12.0";try{let $=E$(w$(x$,"../../package.json"),"utf-8");e=JSON.parse($).version}catch{}var u="72389bf";try{u=c$("git rev-parse --short HEAD",{encoding:"utf-8",stdio:["pipe","pipe","ignore"]}).trim()||u}catch{}var v$=e,W$=u,OL=`v${v$} (${W$})`;
|
|
12
|
-
export{t as a,o as b,g as c,p$ as d,k$ as e,u$ as f,_$ as g,r$ as h,i$ as i,l$ as j,Z as k,V as l,p as m,q as n,$L as o,LL as p,SL as q,jL as r,q$ as s,AL as t,XL as u,M$ as v,V$ as w,YL as x,ZL as y,OL as z,UL as A};
|
package/dist/chunk-zdwywb64.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import{F as R,K}from"./chunk-dykgxxyr.js";import{readdir as n,stat as A$,lstat as z$,readlink as G$,readFile as X$,realpath as Y$}from"fs/promises";import{join as d,resolve as Z$}from"path";function t($){let L={},j=$.split(`
|
|
2
|
-
`),S=!1,A=!1,z=null,U=[],J="none",G=-1,X=null;function Y(){if(z){let B=U.join(" ").trim();if(B)L[z]=B;z=null,U=[],J="none",G=-1}}for(let B of j){if(B.trim()==="---")if(!A){A=!0,S=!0;continue}else{Y();break}if(!S)continue;if(J!=="none"&&z){let I=B.replace(/^\s*/,""),_=B.length-I.length;if(_>0&&I.length>0){if(G===-1)G=_;U.push(I);continue}else if(I.length===0)continue;else Y()}if(X!==null){let I=B.match(/^\s+(\w[\w-]*):\s*(.*?)\s*$/);if(I){let _=I[1],T=I[2].replace(/^["']|["']$/g,"");if(T)L[`${X}.${_}`]=T;continue}if(B.trim().length>0)X=null;else continue}let O=B.match(/^(\w[\w-]*):\s*(.*?)\s*$/);if(O){Y();let I=O[1],_=O[2];if(_==="|"||_===">")z=I,U=[],J=_==="|"?"literal":"folded";else if(_==="|+"||_===">+"||_==="|-"||_===">-")z=I,U=[],J=_.startsWith("|")?"literal":"folded";else{let H=_.replace(/^["']|["']$/g,"");if(H)L[I]=H;else X=I}}}return Y(),L}function o($){return $["metadata.version"]||$.version||"0.0.0"}function J$($,L){let j=[];for(let S of $.providers){if(!S.enabled){R(`scan: skipping disabled provider "${S.name}"`);continue}if(L==="global"||L==="both"){let A=K(S.global);R(`scan: adding location ${A} (${S.label}, global)`),j.push({dir:A,location:`global-${S.name}`,scope:"global",providerName:S.name,providerLabel:S.label})}if(L==="project"||L==="both"){let A=K(S.project);R(`scan: adding location ${A} (${S.label}, project)`),j.push({dir:A,location:`project-${S.name}`,scope:"project",providerName:S.name,providerLabel:S.label})}}for(let S of $.customPaths)if(L===S.scope||L==="both"){let A=K(S.path);R(`scan: adding custom location ${A} (${S.label}, ${S.scope})`),j.push({dir:A,location:`${S.scope}-custom`,scope:S.scope,providerName:"custom",providerLabel:S.label})}return j}async function g($){try{return(await n($,{recursive:!0})).length}catch{return 0}}async function U$($){let L=[];R(`scanning: ${$.dir} (${$.location})`);let j;try{j=await n($.dir)}catch{return R(`scanning: ${$.dir} — not found, skipping`),L}for(let S of j){let A=d($.dir,S);try{if(!(await A$(A)).isDirectory()){R(` skip: "${S}" — not a directory`);continue}}catch{R(` skip: "${S}" — stat failed`);continue}let z=d(A,"SKILL.md"),U;try{U=await X$(z,"utf-8")}catch{R(` skip: "${S}" — no SKILL.md`);continue}let J=t(U),G=!1,X=null;try{if((await z$(A)).isSymbolicLink())G=!0,X=await G$(A)}catch{}let Y=Z$(A),B;try{B=await Y$(A)}catch{B=Y}L.push({name:J.name||S,version:o(J),description:(J.description||"").replace(/\s*\n\s*/g," ").trim(),creator:J["metadata.creator"]||"",effort:J.effort||J["metadata.effort"]||void 0,dirName:S,path:Y,originalPath:A,location:$.location,scope:$.scope,provider:$.providerName,providerLabel:$.providerLabel,isSymlink:G,symlinkTarget:X,realPath:B})}return R(`found ${L.length} skill(s) in ${$.dir}`),L}async function p$($,L){let j=J$($,L);return(await Promise.all(j.map(U$))).flat()}function k$($,L){if(!L.trim())return $;let j=L.toLowerCase();return $.filter((S)=>S.name.toLowerCase().includes(j)||S.description.toLowerCase().includes(j)||S.creator.toLowerCase().includes(j)||S.effort&&S.effort.toLowerCase().includes(j)||S.location.toLowerCase().includes(j)||S.providerLabel.toLowerCase().includes(j))}function B$($,L){let j=$.split("."),S=L.split("."),A=Math.max(j.length,S.length);for(let z=0;z<A;z++){let U=parseInt(j[z]??"0",10),J=parseInt(S[z]??"0",10);if(isNaN(U)||isNaN(J))return $.localeCompare(L);if(U!==J)return U-J}return 0}function u$($,L){let j=[...$];switch(L){case"name":j.sort((S,A)=>S.name.localeCompare(A.name));break;case"version":j.sort((S,A)=>B$(S.version,A.version));break;case"location":j.sort((S,A)=>S.location.localeCompare(A.location));break}return j}import{rm as m,readFile as r,writeFile as I$,access as Q$,lstat as N$,symlink as H$}from"fs/promises";import{join as a,resolve as F,dirname as i,relative as O$}from"path";import{homedir as T$}from"os";var D$=T$();function _$($,L){let j={directories:[],ruleFiles:[],agentsBlocks:[]};j.directories.push({path:$.originalPath,isSymlink:$.isSymlink});let S=$.dirName;if($.scope==="project")j.ruleFiles.push(F(".cursor","rules",`${S}.mdc`),F(".windsurf","rules",`${S}.md`),F(".github","instructions",`${S}.instructions.md`)),j.agentsBlocks.push({file:F("AGENTS.md"),skillName:S});if($.scope==="global"){for(let U of L.providers){if(!U.enabled)continue;let J=K(U.global),G=a(i(J),"AGENTS.md");j.agentsBlocks.push({file:G,skillName:S})}let A=a(D$,".codex","AGENTS.md");if(!j.agentsBlocks.some((U)=>U.file===A))j.agentsBlocks.push({file:A,skillName:S})}return j}function r$($,L,j){let S=L.filter((G)=>G.dirName===$);if(S.length===0)return{directories:[],ruleFiles:[],agentsBlocks:[]};let A={directories:[],ruleFiles:[],agentsBlocks:[]},z=new Set,U=new Set,J=new Set;for(let G of S){let X=_$(G,j);for(let Y of X.directories)if(!z.has(Y.path))z.add(Y.path),A.directories.push(Y);for(let Y of X.ruleFiles)if(!U.has(Y))U.add(Y),A.ruleFiles.push(Y);for(let Y of X.agentsBlocks){let B=`${Y.file}::${Y.skillName}`;if(!J.has(B))J.add(B),A.agentsBlocks.push(Y)}}return A}async function M($){try{return await Q$($),!0}catch{return!1}}async function R$($,L){if(!await M($))return;let j=await r($,"utf-8");for(let S of["agent-skill-manager","skill-manager","pskills"]){let A=`<!-- ${S}: ${L} -->`,z=`<!-- /${S}: ${L} -->`,U=j.indexOf(A),J=j.indexOf(z);if(U===-1||J===-1)continue;let G=U;if(G>0&&j[G-1]===`
|
|
3
|
-
`)G--;let Y=J+z.length;if(Y<j.length&&j[Y]===`
|
|
4
|
-
`)Y++;j=j.slice(0,G)+j.slice(Y)}await I$($,j,"utf-8")}async function i$($,L){let j=[];for(let S of $.directories)try{if(S.isSymlink)await m(S.path),j.push(`Removed symlink: ${S.path}`);else await m(S.path,{recursive:!0,force:!0}),j.push(`Removed directory: ${S.path}`);if(L&&F(S.path)!==F(L)){let A=i(S.path),z=O$(A,L);await H$(z,S.path,"dir"),j.push(`Created symlink: ${S.path} -> ${z}`)}}catch(A){j.push(`Failed to remove ${S.path}: ${A.message}`)}for(let S of $.ruleFiles)if(await M(S))try{await m(S),j.push(`Removed rule file: ${S}`)}catch(A){j.push(`Failed to remove ${S}: ${A.message}`)}for(let S of $.agentsBlocks)try{await R$(S.file,S.skillName),j.push(`Cleaned AGENTS.md block in: ${S.file}`)}catch(A){j.push(`Failed to clean AGENTS.md block: ${A.message}`)}return j}async function l$($){let L=[];for(let j of $.directories)if(await M(j.path)){let A=(await N$(j.path)).isSymbolicLink()?"symlink":"directory";L.push(`${j.path} (${A})`)}for(let j of $.ruleFiles)if(await M(j))L.push(j);for(let j of $.agentsBlocks)if(await M(j.file)){let S=await r(j.file,"utf-8");if(S.includes(`<!-- agent-skill-manager: ${j.skillName} -->`)||S.includes(`<!-- skill-manager: ${j.skillName} -->`)||S.includes(`<!-- pskills: ${j.skillName} -->`))L.push(`${j.file} (AGENTS.md block)`)}return L}var Q=()=>{if(process.env.NO_COLOR!==void 0)return!1;if(globalThis.__CLI_NO_COLOR)return!1;if(!process.stdout.isTTY)return!1;return!0},Z={bold:($)=>Q()?`\x1B[1m${$}\x1B[0m`:$,cyan:($)=>Q()?`\x1B[36m${$}\x1B[0m`:$,green:($)=>Q()?`\x1B[32m${$}\x1B[0m`:$,yellow:($)=>Q()?`\x1B[33m${$}\x1B[0m`:$,dim:($)=>Q()?`\x1B[2m${$}\x1B[0m`:$,white:($)=>Q()?`\x1B[37m${$}\x1B[0m`:$,red:($)=>Q()?`\x1B[31m${$}\x1B[0m`:$,blue:($)=>Q()?`\x1B[34m${$}\x1B[0m`:$,blueBold:($)=>Q()?`\x1B[34;1m${$}\x1B[0m`:$,magenta:($)=>Q()?`\x1B[35m${$}\x1B[0m`:$,bgDim:($)=>Q()?`\x1B[48;5;236m${$}\x1B[0m`:$,bgRed:($)=>Q()?`\x1B[41m\x1B[37m\x1B[1m${$}\x1B[0m`:$,bgYellow:($)=>Q()?`\x1B[43m\x1B[30m\x1B[1m${$}\x1B[0m`:$,bgGreen:($)=>Q()?`\x1B[42m\x1B[30m\x1B[1m${$}\x1B[0m`:$,bgCyan:($)=>Q()?`\x1B[46m\x1B[30m\x1B[1m${$}\x1B[0m`:$};function V($){if(!$)return"";switch($.toLowerCase()){case"low":return Z.green($);case"medium":return Z.yellow($);case"high":return Z.red($);case"max":return Z.magenta($);default:return $}}var l={claude:Z.blueBold,codex:Z.cyan,openclaw:Z.yellow,agents:Z.green,custom:Z.magenta,cursor:Z.blue,windsurf:Z.cyan,cline:Z.green,roocode:Z.magenta,continue:Z.yellow,copilot:Z.white,aider:Z.red,opencode:Z.cyan,zed:Z.blue,augment:Z.green,amp:Z.yellow};function p($,L){return(l[$]||Z.dim)(L)}function k($,L){if(!Q())return`[${L}]`;return(l[$]||Z.dim)(`[${L}]`)}function q($){let L=process.env.HOME||process.env.USERPROFILE||"";if(L&&$.startsWith(L))return"~"+$.slice(L.length);return $}function $L($){if($.length===0)return"No skills found.";let L=["Name","Version","Creator","Effort","Tool","Scope","Type","Path"],j=$.map((G)=>[G.name,G.version,G.creator||"—",G.effort||"—",G.providerLabel,G.scope,G.isSymlink?"symlink":"directory",q(G.path)]),S=L.map((G,X)=>Math.max(G.length,...j.map((Y)=>Y[X].length))),A=(G,X)=>G.padEnd(X),z=L.map((G,X)=>A(G,S[X])).join(" "),U=S.map((G)=>"-".repeat(G)).join("--"),J=j.map((G)=>G.map((X,Y)=>A(X,S[Y])).join(" "));return[Q()?Z.bold(z):z,U,...J].join(`
|
|
5
|
-
`)}function s($){let L=new Map;for(let S of $){let A=`${S.dirName}||${S.scope}`,z=L.get(A)??[];z.push(S),L.set(A,z)}let j=[];for(let[,S]of L){let A=S[0],z=new Set(S.map((J)=>J.scope)),U=new Set(S.map((J)=>J.isSymlink?"symlink":"directory"));j.push({name:A.name,version:A.version,creator:A.creator||"",effort:A.effort||"",providers:S.map((J)=>({provider:J.provider,label:J.providerLabel})),scope:z.size>1?"mixed":A.scope,type:U.size>1?"mixed":A.isSymlink?"symlink":"directory",path:q(A.path),warningCount:S.reduce((J,G)=>J+(G.warnings?.length??0),0)})}return j}function LL($){if($.length===0)return"No skills found.";let L=s($),j=[],S=Math.max(4,...L.map((N)=>N.name.length)),A=Math.max(7,...L.map((N)=>N.version.length)),z=Math.max(7,...L.map((N)=>Math.min((N.creator||"—").length,15))),U=Math.max(6,...L.map((N)=>(N.effort||"—").length)),J=7,G=9,X=L.map((N)=>N.providers.map((D)=>k(D.provider,D.label)).join(" ")),Y=L.map((N)=>N.providers.map((D)=>`[${D.label}]`).join(" ")),B=Math.max(9,...Y.map((N)=>N.length)),O=(N,D)=>N.padEnd(D),I=`${O("Name",S)} ${O("Version",A)} ${O("Creator",z)} ${O("Effort",U)} ${O("Tools",B)} ${O("Scope",J)} ${O("Type",G)}`;j.push(Q()?Z.bold(I):I),j.push(`${"-".repeat(S)} ${"-".repeat(A)} ${"-".repeat(z)} ${"-".repeat(U)} ${"-".repeat(B)} ${"-".repeat(J)} ${"-".repeat(G)}`);for(let N=0;N<L.length;N++){let D=L[N],C=O(D.name,S),c=O(D.version,A),x=(D.creator||"—").slice(0,15),v=O(x,z),W=D.effort||"—",y=D.effort?V(D.effort):"—",b=U-W.length,h=y+" ".repeat(Math.max(0,b)),f=B-Y[N].length,$$=X[N]+" ".repeat(Math.max(0,f)),L$=O(D.scope,J),S$=O(D.type,G),j$=D.warningCount>0?` ${Z.yellow(`(${D.warningCount} warning${D.warningCount>1?"s":""})`)}`:"";j.push(`${C} ${c} ${v} ${h} ${$$} ${L$} ${S$}${j$}`)}let _=L.length,H=$.length,T=new Set($.map((N)=>N.provider)),E=$.filter((N)=>N.scope==="global").length,w=$.filter((N)=>N.scope==="project").length;j.push("");let P=`${H} skills (${_} unique) across ${T.size} tools | ${E} global, ${w} project`;return j.push(Z.dim(P)),j.join(`
|
|
6
|
-
`)}function K$($,L){if(!Q()||!L)return $;let j=$.toLowerCase().indexOf(L.toLowerCase());if(j===-1)return $;let S=$.slice(0,j),A=$.slice(j,j+L.length),z=$.slice(j+L.length);return`${S}${Z.bold(Z.yellow(A))}${z}`}function SL($,L){if($.length===0)return`No skills matching "${L}". Try ${Z.bold("asm list")} to see all skills.`;let j=s($),S=[];S.push(Z.dim(`Found ${$.length} result${$.length===1?"":"s"} (${j.length} unique) matching "${L}"`)+`
|
|
7
|
-
`);let A=Math.max(4,...j.map((H)=>H.name.length)),z=Math.max(7,...j.map((H)=>H.version.length)),U=Math.max(7,...j.map((H)=>Math.min((H.creator||"—").length,15))),J=Math.max(6,...j.map((H)=>(H.effort||"—").length)),G=j.map((H)=>H.providers.map((T)=>k(T.provider,T.label)).join(" ")),X=j.map((H)=>H.providers.map((T)=>`[${T.label}]`).join(" ")),Y=Math.max(9,...X.map((H)=>H.length)),B=7,O=9,I=(H,T)=>H.padEnd(T),_=`${I("Name",A)} ${I("Version",z)} ${I("Creator",U)} ${I("Effort",J)} ${I("Tools",Y)} ${I("Scope",B)} ${I("Type",O)}`;S.push(Q()?Z.bold(_):_),S.push(`${"-".repeat(A)} ${"-".repeat(z)} ${"-".repeat(U)} ${"-".repeat(J)} ${"-".repeat(Y)} ${"-".repeat(B)} ${"-".repeat(O)}`);for(let H=0;H<j.length;H++){let T=j[H],E=K$(T.name,L),w=A-T.name.length,P=E+" ".repeat(Math.max(0,w)),N=I(T.version,z),D=(T.creator||"—").slice(0,15),C=I(D,U),c=T.effort||"—",x=T.effort?V(T.effort):"—",v=J-c.length,W=x+" ".repeat(Math.max(0,v)),y=Y-X[H].length,b=G[H]+" ".repeat(Math.max(0,y)),h=I(T.scope,B),f=I(T.type,O);S.push(`${P} ${N} ${C} ${W} ${b} ${h} ${f}`)}return S.join(`
|
|
8
|
-
`)}async function F$($){let L=[],j=(A,z)=>`${Q()?Z.bold(A+":"):A+":"} ${z}`;if(L.push(j("Name",$.name)),L.push(j("Version",$.version)),L.push(j("Creator",$.creator||"—")),$.effort)L.push(j("Effort",V($.effort)));if(L.push(j("Tool",$.providerLabel)),L.push(j("Scope",$.scope)),L.push(j("Location",$.location)),L.push(j("Path",q($.path))),L.push(j("Type",$.isSymlink?"symlink":"directory")),$.isSymlink&&$.symlinkTarget)L.push(j("Symlink Target",$.symlinkTarget));let S=$.fileCount??await g($.path);if(L.push(j("File Count",String(S))),$.description)L.push(""),L.push(j("Description",$.description));if($.warnings&&$.warnings.length>0){L.push(""),L.push(Q()?Z.bold("Warnings:"):"Warnings:");for(let A of $.warnings)L.push(` ${Q()?Z.yellow("!"):"!"} [${A.category}] ${A.message}`)}return L.join(`
|
|
9
|
-
`)}async function jL($){if($.length===0)return"No skills found.";if($.length===1)return F$($[0]);let L=[],j=(X,Y)=>`${Q()?Z.bold(X+":"):X+":"} ${Y}`,S=$[0],A=S.name;if(L.push(""),L.push(Q()?Z.blueBold(` ${A}`):` ${A}`),L.push(Q()?Z.dim(" "+"-".repeat(A.length+2)):" "+"-".repeat(A.length+2)),L.push(""),L.push(j(" Version",S.version)),L.push(j(" Creator",S.creator||"—")),S.effort)L.push(j(" Effort",V(S.effort)));let z=S.fileCount??await g(S.path);L.push(j(" File Count",String(z)));let U=$.map((X)=>k(X.provider,X.providerLabel)).join(" ");if(L.push(j(" Installed in",U)),S.description){L.push(""),L.push(Q()?Z.bold(" Description:"):" Description:");let X=q$(S.description,72);for(let Y of X)L.push(" "+Y)}L.push("");let J=` Installations (${$.length})`;L.push(Q()?Z.bold(J):J);for(let X=0;X<$.length;X++){let Y=$[X],B=p(Y.provider,Y.providerLabel),O=Y.isSymlink?"symlink":"directory",I=Z.dim(Y.scope);if(L.push(` ${B} (${I}, ${O})`),L.push(` ${Z.dim("Path:")} ${q(Y.path)}`),Y.isSymlink&&Y.symlinkTarget)L.push(` ${Z.dim("Target:")} ${Y.symlinkTarget}`)}let G=$.flatMap((X)=>{if(!X.warnings||X.warnings.length===0)return[];return X.warnings.map((Y)=>({...Y,provider:X.providerLabel}))});if(G.length>0){L.push("");let X=` Warnings (${G.length})`;L.push(Q()?Z.bold(X):X);for(let Y of G){let B=Q()?Z.yellow("!"):"!";L.push(` ${B} [${Y.category}] ${Y.message}`)}}return L.push(""),L.join(`
|
|
10
|
-
`)}function q$($,L){let j=$.split(/\s+/),S=[],A="";for(let z of j)if(A.length+z.length+1>L&&A.length>0)S.push(A),A=z;else A=A?A+" "+z:z;if(A)S.push(A);return S}function AL($){return JSON.stringify($,null,2)}function XL($){let L=[],j=new Set,S=new Map,A=[];for(let G of $){let X=S.get(G.realPath);if(X){if(G.isSymlink)continue;if(X.isSymlink)A[A.indexOf(X)]=G,S.set(G.realPath,G);else A.push(G)}else S.set(G.realPath,G),A.push(G)}let z=new Map;for(let G of A){let X=z.get(G.dirName)??[];X.push(G),z.set(G.dirName,X)}for(let[G,X]of z)if(new Set(X.map((B)=>B.location)).size>=2){L.push({key:G,reason:"same-dirName",instances:X});for(let B of X)j.add(B.path)}let U=new Map;for(let G of A){if(!G.name)continue;let X=U.get(G.name)??[];X.push(G),U.set(G.name,X)}for(let[G,X]of U){if(new Set(X.map((I)=>I.dirName)).size<2)continue;let B=X.filter((I)=>!j.has(I.path));if(B.length<2)continue;if(new Set(B.map((I)=>I.dirName)).size<2)continue;L.push({key:G,reason:"same-frontmatterName",instances:B})}L.sort((G,X)=>{if(G.reason!==X.reason)return G.reason==="same-dirName"?-1:1;return G.key.localeCompare(X.key)});let J=L.reduce((G,X)=>G+X.instances.length,0);return{scannedAt:new Date().toISOString(),totalSkills:$.length,duplicateGroups:L,totalDuplicateInstances:J}}function M$($){return[...$].sort((L,j)=>{if(L.scope!==j.scope)return L.scope==="global"?-1:1;let S=L.providerLabel.localeCompare(j.providerLabel);if(S!==0)return S;return L.path.localeCompare(j.path)})}function V$($){return $==="same-dirName"?"same dirName":"same name"}function YL($){if($.duplicateGroups.length===0)return Z.green("No duplicate skills found.");let L=[];L.push(""),L.push(Z.bold(` Found ${$.duplicateGroups.length} duplicate group(s) (${$.totalDuplicateInstances} total instances):`)),L.push("");for(let j of $.duplicateGroups){L.push(` ${Z.yellow(`"${j.key}"`)} ${Z.dim(`(${V$(j.reason)})`)}`);let S=M$(j.instances);for(let A=0;A<S.length;A++){let z=S[A],U=p(z.provider,z.providerLabel),J=A===0?Z.green(" [keep]"):Z.dim(" "),G=Z.dim(`(${z.scope})`);L.push(` ${J} ${U} ${G} ${Z.dim(q(z.path))}`)}L.push("")}return L.push(Z.dim(` Run ${Z.bold("asm audit -y")} to auto-remove duplicates`)),L.push(""),L.join(`
|
|
11
|
-
`)}function ZL($){return JSON.stringify($,null,2)}function UL($){let L=$.trim();if(!L)return["vi",[]];let j=[],S="",A=!1,z=0;while(z<L.length){let U=L[z];if(U==='"'){A=!0,z++;while(z<L.length&&L[z]!=='"'){if(L[z]==="\\"&&z+1<L.length){let J=L[z+1];if(J==='"'||J==="\\"){S+=J,z+=2;continue}}S+=L[z],z++}z++}else if(U==="'"){A=!0,z++;while(z<L.length&&L[z]!=="'")S+=L[z],z++;z++}else if(U===" "||U==="\t"){if(S.length>0||A)j.push(S),S="",A=!1;z++}else S+=U,z++}if(S.length>0||A)j.push(S);if(j.length===0)return["vi",[]];return[j[0],j.slice(1)]}import{readFileSync as E$}from"fs";import{resolve as w$,dirname as P$}from"path";import{fileURLToPath as C$}from"url";import{execSync as c$}from"child_process";var x$=P$(C$(import.meta.url)),e="1.12.0";try{let $=E$(w$(x$,"../../package.json"),"utf-8");e=JSON.parse($).version}catch{}var u="6e6ceea";try{u=c$("git rev-parse --short HEAD",{encoding:"utf-8",stdio:["pipe","pipe","ignore"]}).trim()||u}catch{}var v$=e,W$=u,OL=`v${v$} (${W$})`;
|
|
12
|
-
export{t as a,o as b,g as c,p$ as d,k$ as e,u$ as f,_$ as g,r$ as h,i$ as i,l$ as j,Z as k,V as l,p as m,q as n,$L as o,LL as p,SL as q,jL as r,q$ as s,AL as t,XL as u,M$ as v,V$ as w,YL as x,ZL as y,OL as z,UL as A};
|