agentsmesh 0.30.1 → 0.30.2
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/CHANGELOG.md +8 -0
- package/dist/cli.js +147 -147
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {resolve,join,dirname,basename,sep,relative,extname,normalize,win32,posix,isAbsolute}from'path';import {rm as rm$1,readFile,readdir,stat,mkdir,writeFile,rename,realpath,lstat,unlink,chmod,access,readlink,symlink,mkdtemp,cp as cp$1,copyFile}from'fs/promises';import {setTimeout as setTimeout$1}from'timers/promises';import {realpathSync,rmSync,existsSync,mkdtempSync,readdirSync,symlinkSync,mkdirSync,readFileSync,writeFileSync,renameSync,constants,statSync,appendFileSync}from'fs';import {z as z$1}from'zod';import {stringify,parse,parseDocument,YAMLSeq,YAMLMap}from'yaml';import {homedir,tmpdir,hostname}from'os';import {fileURLToPath,URL,pathToFileURL}from'url';import {execFile}from'child_process';import {promisify}from'util';import*as
|
|
3
|
-
`);},warn(e){
|
|
4
|
-
`);},error(e){
|
|
5
|
-
`);},success(e){
|
|
6
|
-
`);},debug(e){
|
|
7
|
-
`);},table(e){if(
|
|
8
|
-
`);for(let o=0;o<e.length;o++){let a="| "+e[o].map((l,c)=>mY(l,r[c])).join(" | ")+" |";
|
|
9
|
-
`);}
|
|
10
|
-
`);}};});var os,mn,
|
|
11
|
-
`)}function T_(e){return RY.has(extname(e).toLowerCase())?493:void 0}var Ec,_Y,SY,RY,uf=d(()=>{Ec="\uFEFF",_Y=new Set([".md",".mdc",".mdx",".markdown",".txt",".json",".jsonc",".yaml",".yml",".toml",".ini",".sh",".bash",".zsh",".ps1",".js",".mjs",".cjs",".ts",".tsx",".html",".css"]),SY=new Set([".gitignore",".cursorignore",".cursorindexingignore",".aiignore",".agentignore",".clineignore",".geminiignore",".codeiumignore",".continueignore",".copilotignore",".windsurfignore",".junieignore",".kiroignore",".rooignore",".antigravityignore"]);s(mf,"shouldNormalizeLineEndings");s(pf,"normalizeLineEndings");RY=new Set([".sh",".bash",".zsh"]);s(T_,"executableModeFor");});function aO(e){if(e.length>bY)return true;let t=new Map;for(let r of e){let n=(t.get(r)??0)+1;if(n>=AY)return true;t.set(r,n);}return false}async function xi(e,t,r){let n=r??[basename(e)],o;try{o=await realpath(e);}catch(a){let l=a;if(l.code==="ENOENT"||l.code==="ENOTDIR"||l.code==="ELOOP")return [];throw new tr(e,`Failed to read directory ${e}: ${l.message}. Check permissions.`,{cause:a,errnoCode:l.code})}let i=t??new Set;if(i.has(o))return [];i.add(o);try{let a=await readdir(e,{withFileTypes:!0}),l=[];for(let c of a){let m=join(e,c.name);if(c.isDirectory()||c.isSymbolicLink()&&await stat(m).then(u=>u.isDirectory(),()=>!1)){let u=[...n,c.name];if(aO(u))continue;l.push(...await xi(m,i,u));}else l.push(m);}return l}catch(a){let l=a;if(l.code==="ENOENT"||l.code==="ENOTDIR"||l.code==="EACCES")return [];throw new tr(e,`Failed to read directory ${e}: ${l.message}. Check permissions.`,{cause:a,errnoCode:l.code})}}async function B(e,t){let r=t??[basename(e)];try{let n=await readdir(e,{withFileTypes:!0}),o=[];for(let i of n){if(i.isSymbolicLink())continue;let a=join(e,i.name);if(i.isDirectory()){let l=[...r,i.name];if(aO(l))continue;o.push(...await B(a,l));}else i.isFile()&&o.push(a);}return o}catch(n){let o=n;if(o.code==="ENOENT"||o.code==="ENOTDIR"||o.code==="EACCES")return [];throw new tr(e,`Failed to read directory ${e}: ${o.message}. Check permissions.`,{cause:n,errnoCode:o.code})}}async function x_(e,t){let r=resolve(e);try{if(!(await lstat(t)).isSymbolicLink()||resolve(dirname(t),await readlink(t))===r)return;await unlink(t);}catch(n){if(n.code!=="ENOENT")throw n}await symlink(r,t,"dir");}var bY,AY,P_=d(()=>{ss();bY=32,AY=3;s(aO,"shouldSkipRecursiveBranch");s(xi,"readDirRecursive");s(B,"readDirRecursiveNoSymlinks");s(x_,"ensureCacheSymlink");});async function D_(e,t,r={}){let n=r.attempts??5,o=r.delayMs??50;for(let i=0;;i++)try{await rename(e,t);return}catch(a){let l=a.code;if(!(l!==void 0&&PY.has(l))||i>=n-1)throw a;await setTimeout$1(o*2**i);}}var PY,lO=d(()=>{PY=new Set(["EPERM","EACCES","EBUSY","ENOTEMPTY","EEXIST"]);s(D_,"renameWithRetry");});async function I(e){try{let t=await readFile(e,"utf-8");return t.startsWith(Ec)?t.slice(Ec.length):t}catch(t){let r=t;if(r.code==="ENOENT")return null;throw new tr(e,`Failed to read ${e}: ${r.message}. Ensure the file exists and is readable.`,{cause:t,errnoCode:r.code})}}async function L(e,t,r){let n=dirname(e);await mkdir(n,{recursive:true});try{let l=await lstat(e);if(l.isDirectory())throw new tr(e,`Failed to write ${e}: target exists and is a directory. Remove it or choose a different path.`,{errnoCode:"EISDIR"});l.isSymbolicLink()&&await unlink(e).catch(c=>{if(c.code!=="ENOENT")throw c});}catch(l){if(l instanceof tr||l.code!=="ENOENT")throw l}let o=`${e}.tmp`,i=mf(e)?pf(t):t,a=r?.mode??T_(e);try{try{(await lstat(o)).isSymbolicLink()&&await unlink(o);}catch(c){if(c.code!=="ENOENT")throw c}let l={encoding:"utf-8",flag:"w"};a!==void 0&&(l.mode=a),await writeFile(o,i,l),await rename(o,e),a!==void 0&&await chmod(e,a);}catch(l){await rm$1(o,{force:true}).catch(()=>{});let c=l;throw new tr(e,`Failed to write ${e}: ${c.message}. Check permissions and disk space.`,{cause:l,errnoCode:c.code})}}async function j(e){try{return await access(e,constants.F_OK),!0}catch{return false}}async function O(e){await mkdir(e,{recursive:true});}var b=d(()=>{ss();uf();P_();uf();lO();s(I,"readFileSafe");s(L,"writeFileAtomic");s(j,"exists");s(O,"mkdirp");});function Kt(e){return Pp.includes(e)}var Pp,uO=d(()=>{Pp=["aider","amazon-q","amp","antigravity","augment-code","claude-code","cline","codex-cli","continue","copilot","crush","cursor","deepagents-cli","factory-droid","gemini-cli","goose","jules","junie","kilo-code","kiro","opencode","pi-agent","qwen-code","replit-agent","roo-code","rovodev","trae","warp","windsurf","zed"];s(Kt,"isBuiltinTargetId");});var Ue,N_,pn=d(()=>{uO();Ue=Pp,N_="codex-cli";});var dO,wr,Cc,UY,Np,BY,KY,Dp,WY,HY,za,is=d(()=>{pn();dO=["rules","commands","agents","skills","mcp","hooks","ignore","permissions"],wr=z$1.enum(Ue),Cc=z$1.enum(dO),UY=z$1.enum(["rules","commands","agents","skills"]),Np=z$1.object({skills:z$1.array(z$1.string()).optional(),commands:z$1.array(z$1.string()).optional(),rules:z$1.array(z$1.string()).optional(),agents:z$1.array(z$1.string()).optional()}).strict(),BY=z$1.object({name:z$1.string(),source:z$1.string(),version:z$1.string().optional(),target:wr.optional(),as:UY.optional(),features:z$1.array(Cc),path:z$1.string().optional(),pick:Np.optional(),accept:z$1.array(z$1.enum(["hooks","permissions","mcp"])).optional()}),KY=z$1.object({strategy:z$1.enum(["merge","lock","last-wins"]).default("merge"),lock_features:z$1.array(z$1.string()).default([])}),Dp=z$1.union([z$1.boolean(),z$1.object({project:z$1.boolean().optional(),global:z$1.boolean().optional()}).strict()]),WY=z$1.object({commands_to_skills:z$1.object({"codex-cli":Dp.optional()}).passthrough().optional(),agents_to_skills:z$1.object({"gemini-cli":Dp.optional(),cline:Dp.optional(),"codex-cli":Dp.optional(),windsurf:Dp.optional()}).passthrough().optional()}).strict().optional(),HY=z$1.object({id:z$1.string().regex(/^[a-z][a-z0-9-]*$/),source:z$1.string(),version:z$1.string().optional(),strict:z$1.boolean().optional()}).strict(),za=z$1.object({version:z$1.literal(1),targets:z$1.array(wr).default([...Ue]),features:z$1.array(Cc).default([...dO]),extends:z$1.array(BY).default([]),overrides:z$1.record(z$1.string(),z$1.record(z$1.string(),z$1.unknown())).default({}),collaboration:KY.default({strategy:"merge",lock_features:[]}),conversions:WY,plugins:z$1.array(HY).default([]),pluginTargets:z$1.array(z$1.string().regex(/^[a-z][a-z0-9-]*$/)).default([])});});async function JY(e){let t=resolve(e);for(;;){let r=join(t,F_);if(await j(r))return r;let n=dirname(t);if(n===t)return null;t=n;}}async function YY(e){let t=await I(e);if(t===null)throw new mn(e);let r=parse(t),n=za.safeParse(r);if(!n.success){let o=n.error.issues.map(i=>i.message);throw new kc(e,o,{cause:n.error})}return n.data}function v_(e,t){let r={...e};for(let[n,o]of Object.entries(t)){if(o==null||XY.has(n))continue;let i=r[n];typeof o=="object"&&!Array.isArray(o)&&o!==null&&typeof i=="object"&&i!==null&&!Array.isArray(i)?r[n]=v_(i,o):r[n]=o;}return r}function QY(e,t){let r={...e};return Array.isArray(t.targets)&&t.targets.length>0&&(r.targets=t.targets),Array.isArray(t.features)&&t.features.length>0&&(r.features=t.features),typeof t.overrides=="object"&&t.overrides!==null&&!Array.isArray(t.overrides)&&(r.overrides=v_(r.overrides??{},t.overrides)),typeof t.conversions=="object"&&t.conversions!==null&&!Array.isArray(t.conversions)&&(r.conversions=v_(r.conversions??{},t.conversions)),Array.isArray(t.extends)&&t.extends.length>0&&(r.extends=[...e.extends??[],...t.extends]),r}async function ff(e){let t=join(e,F_),r=await YY(t),n=join(e,VY),o=await I(n);if(o!==null){let i=parse(o);if(typeof i=="object"&&i!==null&&!Array.isArray(i)){let a=QY(r,i),l=za.safeParse(a);if(l.success)r=l.data;else {let c=l.error.issues.map(m=>m.message).join("; ");S.warn(`Ignoring invalid agentsmesh.local.yaml at ${n}: ${c}. Using project config instead.`);}}}return {config:r,configDir:e}}async function gf(e){let t=await JY(e);if(t===null)throw new mn(join(e,F_));return ff(dirname(t))}var F_,VY,XY,hf=d(()=>{b();ue();ss();is();F_="agentsmesh.yaml",VY="agentsmesh.local.yaml";s(JY,"findConfigPath");s(YY,"loadConfig");XY=new Set(["__proto__","constructor","prototype"]);s(v_,"deepMergeObjects");s(QY,"mergeLocalConfig");s(ff,"loadConfigFromExactDir");s(gf,"loadConfigFromDir");});function Va(e,t="project"){if(t==="project")return {scope:t,rootBase:e,configDir:e,canonicalDir:join(e,".agentsmesh")};let r=homedir(),n=join(r,".agentsmesh");return {scope:t,rootBase:r,configDir:n,canonicalDir:n}}async function _e(e,t="project"){if(t==="project"){let{config:n,configDir:o}=await gf(e);return {config:n,context:{scope:t,rootBase:o,configDir:o,canonicalDir:join(o,".agentsmesh")}}}let r=Va(e,t);try{let{config:n}=await ff(r.configDir);return {config:n,context:r}}catch(n){throw n instanceof mn?new mn(n.path,{cause:n,message:`agentsmesh.yaml not found at ${n.path} (global scope). Run 'agentsmesh init --global' to create it under ~/.agentsmesh, or drop the --global flag to operate on the current project.`}):n}}var nt=d(()=>{hf();ss();s(Va,"resolveScopeContext");s(_e,"loadScopedConfig");});function Pi(e){return e.replace(ZY,(t,r,n,o)=>`${r}***@${o}`)}var ZY,yf=d(()=>{ZY=/([a-zA-Z][a-zA-Z0-9+.-]*:\/\/)([^/@\s"'<>]+)@([^\s"'<>]+)/g;s(Pi,"redactUrlSecrets");});function hO(){let e=s(t=>t==="1"||t==="true","on");return {http:e(process.env.AGENTSMESH_ALLOW_INSECURE_GIT),file:e(process.env.AGENTSMESH_ALLOW_LOCAL_GIT)}}function yO(e){let t;try{t=new URL(e);}catch{return false}let{http:r,file:n}=hO(),o=["https:","ssh:"];return r&&o.push("http:"),n&&o.push("file:"),o.includes(t.protocol)}function _f(){let{http:e,file:t}=hO(),r=["https","ssh"];return e&&r.push("http"),t&&r.push("file"),r.join(":")}function vp(e){if(!yO(e))throw new Error(`agentsmesh refuses a git remote with a disallowed transport: "${Pi(e)}". Allowed: https, ssh. Set AGENTSMESH_ALLOW_INSECURE_GIT=1 to permit http, AGENTSMESH_ALLOW_LOCAL_GIT=1 to permit file.`)}function _O(e,t,r){if(!e.startsWith(t))return null;let n=e.slice(t.length).trim();if(!n)return null;let o=n.lastIndexOf("@");if(o<0)return [n,r];let i=n.slice(0,o).trim(),a=n.slice(o+1).trim();return !i||!a?null:[i,a]}function SO(e){let t=_O(e,"github:","latest");if(!t)return null;let[r,n]=t,o=r.indexOf("/");if(o<0)return null;let i=r.slice(0,o).trim(),a=r.slice(o+1).trim();return !i||!a||!n?null:{org:i,repo:a,tag:n}}function RO(e){let t=_O(e,"gitlab:");if(!t)return null;let[r,n]=t,o=r.lastIndexOf("/");if(o<0)return null;let i=r.slice(0,o).trim(),a=r.slice(o+1).trim();return !i||!a?null:{namespace:i,project:a,ref:n,cloneUrl:`https://gitlab.com/${i}/${a}.git`}}function IO(e){if(!e.startsWith("git+"))return null;let t=e.slice(4).trim();if(!t)return null;let r=t.lastIndexOf("#"),n=(r<0?t:t.slice(0,r)).trim(),o=r<0?void 0:t.slice(r+1).trim();return !n||r>=0&&!o||!yO(n)?null:{url:n,ref:o}}function Ja(e){let t=SO(e);if(t)return {kind:"github",...t};let r=RO(e);if(r)return {kind:"gitlab",...r};let n=IO(e);return n?{kind:"git",...n}:null}function G_(e){return Ja(e)!==null}var Ya=d(()=>{yf();s(hO,"gitProtocolOptIns");s(yO,"isAllowedGitProtocol");s(_f,"gitAllowProtocolEnv");s(vp,"assertAllowedGitUrl");s(_O,"splitSourceRef");s(SO,"parseGithubSource");s(RO,"parseGitlabSource");s(IO,"parseGitSource");s(Ja,"parseRemoteSource");s(G_,"isSupportedRemoteSource");});function EO(e,t){if(e.startsWith("-"))throw new Error(`agentsmesh refuses ${t} starting with "-" (option-injection guard): ${e}`)}async function Sf(e,t,r,n,o){let i="cloneUrl"in e?"gitlab":"git",a="cloneUrl"in e?`${e.namespace}/${e.project}`:e.url,l=e.ref??"HEAD",c=o(i,a,l),m=join(n,c),p=join(m,kO),u=`${m}.tmp`,f=join(u,kO);if(!r.refresh&&await LO(p))return U_(p);try{return await rm$1(u,{recursive:!0,force:!0}),await mkdir(u,{recursive:!0}),await a2(i2(e),f),e.ref&&await l2(f,e.ref),await rm$1(m,{recursive:!0,force:!0}),await D_(u,m),U_(p)}catch(g){if(await rm$1(u,{recursive:true,force:true}),r.allowOfflineFallback!==false&&await LO(p)){let y=g instanceof Error?g.message:String(g);return console.warn(`[agentsmesh] Remote fetch failed for ${t}; using cached version. Error: ${Pi(y)}`),U_(p)}throw g instanceof Error?Object.assign(new Error(Pi(g.message)),{cause:g.cause}):g}}async function U_(e){return {resolvedPath:e,version:await c2(e)}}async function LO(e){return j(e)}function i2(e){if("cloneUrl"in e){let t=process.env.AGENTSMESH_GITLAB_TOKEN;if(t){let r=new URL(e.cloneUrl);if(r.protocol==="https:")return r.username="oauth2",r.password=t,r.toString()}return e.cloneUrl}return e.url}async function a2(e,t){EO(e,"clone-url"),vp(e),await B_(["clone","-c","core.symlinks=false",e,t]);}async function l2(e,t){EO(t,"ref"),await B_(["checkout",t],e);}async function c2(e){return B_(["rev-parse","HEAD"],e)}async function B_(e,t){let{stdout:r}=await s2("git",e,{cwd:t,env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_ALLOW_PROTOCOL:_f()}});return r.trim()}var s2,kO,K_=d(()=>{b();yf();Ya();s2=promisify(execFile),kO="repo";s(EO,"ensureNotFlag");s(Sf,"fetchGitRemoteExtend");s(U_,"readCachedRepo");s(LO,"hasCachedRepo");s(i2,"resolveCloneUrl");s(a2,"cloneRepo");s(l2,"checkoutRef");s(c2,"getHeadSha");s(B_,"runGit");});function d2(){let e=process.env.AGENTSMESH_MAX_TARBALL_MB;if(e===void 0||e==="")return Mp*1024*1024;let t=Number(e);return !Number.isFinite(t)||!Number.isInteger(t)?(console.warn(`[agentsmesh] AGENTSMESH_MAX_TARBALL_MB="${e}" is not an integer; using default ${Mp} MiB.`),Mp*1024*1024):t<OO||t>wO?(console.warn(`[agentsmesh] AGENTSMESH_MAX_TARBALL_MB=${t} is outside [${OO}, ${wO}]; using default ${Mp} MiB.`),Mp*1024*1024):t*1024*1024}async function g2(e,t){let r=typeof e.headers?.get=="function"?e.headers.get("content-length"):null;if(r!==null){let m=Number(r);if(Number.isFinite(m)&&m>t)throw new Error(`remote response declared ${m} bytes; exceeds cap of ${t}`)}let n=e.body;if(!n){let m=await e.arrayBuffer();if(m.byteLength>t)throw new Error(`remote response is ${m.byteLength} bytes; exceeds cap of ${t}`);return new Uint8Array(m)}let o=n.getReader(),i=[],a=0;for(;;){let{done:m,value:p}=await o.read();if(m)break;if(p){if(a+=p.byteLength,a>t)throw await o.cancel().catch(()=>{}),new Error(`remote response exceeded cap of ${t} bytes during streaming`);i.push(p);}}let l=new Uint8Array(a),c=0;for(let m of i)l.set(m,c),c+=m.byteLength;return l}async function TO(e,t,r){let n=`https://api.github.com/repos/${e}/${t}/releases/latest`,o={Accept:"application/vnd.github+json"};r&&(o.Authorization=`Bearer ${r}`);let i=await globalThis.fetch(n,{headers:o});if(!i.ok)throw new Error(`Failed to resolve latest release for ${e}/${t}: ${i.status} ${i.statusText}`);let a=await i.json();if(!a.tag_name||typeof a.tag_name!="string")throw new Error(`No tag_name in releases/latest response for ${e}/${t}`);return a.tag_name}async function xO(e,t,r,n,o,i=false){let a=r.token??process.env.AGENTSMESH_GITHUB_TOKEN,l=r.refresh===true,c=e.tag;if(c==="latest")try{c=await TO(e.org,e.repo,a);}catch(R){if(!i)throw R;return y2(e,t,r,n,o,a)}let m=o("github",`${e.org}/${e.repo}`,c),p=join(n,m);if(!l&&await j(p)){let R=await W_(p);if(R)return {resolvedPath:join(p,R),version:c}}let u=`https://github.com/${e.org}/${e.repo}/tarball/${c}`,f={};a&&(f.Authorization=`Bearer ${a}`);let g;try{let R=await globalThis.fetch(u,{headers:f,redirect:"follow"});if(!R.ok)throw new Error(`HTTP ${R.status}: ${R.statusText}`);g=await g2(R,f2);}catch(R){if(r.allowOfflineFallback!==false&&await j(p)){let w=await W_(p);if(w){let D=R instanceof Error?R.message:String(R);return console.warn(`[agentsmesh] Network failed for ${t}; using cached version. Error: ${Pi(D)}`),{resolvedPath:join(p,w),version:c}}}throw R instanceof Error?Object.assign(new Error(Pi(R.message)),{cause:R.cause}):R}await rm$1(p,{recursive:true,force:true}),await mkdir(p,{recursive:true});let h=join(p,"archive.tar.gz");await writeFile(h,g);try{await AO.extract({file:h,cwd:p,strict:!0,filter:s((R,k)=>{if(h2(R))return !1;let w=k&&"type"in k?k.type:void 0;return w==="File"||w==="Directory"},"filter")});}finally{await rm$1(h,{force:true}).catch(()=>{});}let y=await W_(p);if(!y)throw new Error(`Extend "${t}": archive has no top-level directory. Expected a single top-level directory inside the archive.`);return {resolvedPath:join(p,y),version:c}}async function W_(e){let r=(await readdir(e,{withFileTypes:true})).filter(n=>n.isDirectory()&&!n.name.startsWith("."));return r.length===1?r[0].name:null}function bO(e,t,r){return r?`https://x-access-token:${encodeURIComponent(r)}@github.com/${e}/${t}.git`:`https://github.com/${e}/${t}.git`}function h2(e){let t=e.replace(/\\/g,"/");return t.startsWith("/")||t.split("/").includes("..")}async function y2(e,t,r,n,o,i){let a=i?[bO(e.org,e.repo,i)]:[bO(e.org,e.repo),`ssh://git@github.com/${e.org}/${e.repo}.git`],l;for(let c of a){let m={url:c};try{return await Sf(m,t,r,n,o)}catch(p){l=p;}}throw l instanceof Error?l:new Error("Failed to clone GitHub default branch")}var Mp,OO,wO,f2,PO=d(()=>{b();yf();K_();Mp=500,OO=1,wO=4096;s(d2,"resolveMaxTarballBytes");f2=d2();s(g2,"readBoundedResponse");s(TO,"resolveLatestTag");s(xO,"fetchGithubRemoteExtend");s(W_,"findExtractTopDir");s(bO,"buildGithubCloneUrl");s(h2,"isZipSlipPath");s(y2,"fetchGithubDefaultBranch");});function R2(e){let t=Ja(e);return t?t.kind==="github"?Oc("github",`${t.org}/${t.repo}`,t.tag):t.kind==="gitlab"?Oc("gitlab",`${t.namespace}/${t.project}`,t.ref??"HEAD"):Oc("git",t.url,t.ref??"HEAD"):null}async function vO(e,t){let r=R2(e);if(!r)return;let n=t??rr(),o=join(n,r);await rm$1(o,{recursive:true,force:true});}async function FO(e,t){let r=e??rr(),n=t??Number(process.env.AGENTSMESH_CACHE_MAX_AGE_DAYS??30)*864e5,o;try{o=await readdir(r);}catch{return}let i=Date.now();await Promise.all(o.map(async a=>{let l=join(r,a);try{let{mtimeMs:c}=await stat(l);i-c>n&&await rm$1(l,{recursive:!0,force:!0});}catch{}}));}var H_=d(()=>{Gp();Ya();s(R2,"cacheKeyFromSource");s(vO,"cleanInstallCache");s(FO,"sweepStaleCache");});function Oc(e,t,r){let n=s(i=>i.replace(/[^a-zA-Z0-9_.-]/g,"_").replace(/^\.+/,"_"),"safe"),o;if(e==="github"){let[i,a]=t.split("/",2);i&&a?o=`${n(i)}--${n(a)}--${n(r)}`:o=`${n(e)}__${n(t)}__${n(r)}`;}else o=`${n(e)}__${n(t)}__${n(r)}`;if(o.length>$O){let i=createHash("sha256").update(o).digest("hex").slice(0,16);o=`${o.slice(0,$O-18)}--${i}`;}return o}function rr(){let e=process.env.AGENTSMESH_CACHE;if(e){let t=e.trim();if(!t)return join(homedir(),".agentsmesh","cache");if(!/^([A-Za-z]:[\\/]|\/)/.test(t))throw new Error(`AGENTSMESH_CACHE must be an absolute path (got: "${t}").`);if(t==="/"||/^[A-Za-z]:[\\/]?$/.test(t))throw new Error(`AGENTSMESH_CACHE must not be the filesystem root (got: "${t}").`);return t}return join(homedir(),".agentsmesh","cache")}async function wc(e,t,r={}){let n=Ja(e);if(!n)throw e.startsWith("github:")?new Error(`Invalid github: source: "${e}" for extend "${t}"`):e.startsWith("gitlab:")?new Error(`Invalid gitlab: source: "${e}" for extend "${t}"`):e.startsWith("git+")?new Error(`Invalid git+ source: "${e}" for extend "${t}"`):new Error(`Invalid remote source: "${e}" for extend "${t}". Use github:org/repo@tag, gitlab:group/project@ref, or git+https://host/org/repo.git#ref.`);let o=r.cacheDir??rr();return FO(o).catch(()=>{}),n.kind==="github"?xO(n,t,r,o,Oc,!e.includes("@")):Sf(n,t,r,o,Oc)}var $O,Gp=d(()=>{K_();PO();Ya();H_();$O=80;s(Oc,"buildCacheKey");s(rr,"getCacheDir");s(wc,"fetchRemoteExtend");});function C2(e){return e.startsWith("http://")||e.startsWith("https://")}async function bc(e,t,r={}){if(e.extends.length===0)return [];if(r.refreshCache===true&&e.extends.some(o=>G_(o.source))){let o=rr();await rm$1(o,{recursive:true,force:true}),await mkdir(o,{recursive:true});}let n=[];for(let o of e.extends){if(C2(o.source))throw new Error(`Remote extends (http/https) not supported: "${o.source}" for extend "${o.name}". Use github:org/repo@tag, gitlab:group/project@ref, git+https://host/org/repo.git#ref, or a local path (e.g. ./shared/).`);if(G_(o.source)){let a=await wc(o.source,o.name,{cacheDir:rr(),refresh:r.refreshCache===true});n.push({name:o.name,resolvedPath:a.resolvedPath,features:[...o.features],target:o.target,as:o.as,version:a.version,path:o.path,pick:o.pick,isRemote:true,accept:o.accept});continue}let i=resolve(t,o.source);if(!await j(i))throw new Error(`Extend "${o.name}": path does not exist: ${i}. Check extends.source in agentsmesh.yaml.`);n.push({name:o.name,resolvedPath:i,features:[...o.features],target:o.target,as:o.as,path:o.path,pick:o.pick,isRemote:false,accept:o.accept});}return n}var Rf=d(()=>{b();Gp();Ya();s(C2,"isOtherRemoteSource");s(bc,"resolveExtendPaths");});function T(e){if(e.indexOf("---")!==0)return {frontmatter:{},body:e.trim()};let r=e.indexOf("---",3);if(r===-1)return {frontmatter:{},body:e.trim()};let n=e.slice(3,r).trim(),o=e.slice(r+3).trim();return {frontmatter:n===""?{}:parse(n)??{},body:o}}function b2(e){if(e.indexOf("---")!==0)return e.trim();let t=e.indexOf("---",3);return t===-1?e.trim():e.slice(t+3).trim()}function un(e,t){try{return {ok:!0,value:T(e)}}catch(r){let n=r instanceof Error?r.message:String(r);return {ok:false,error:new Error(`Failed to parse frontmatter in ${t}: ${n}`,{cause:r}),bodyFallback:b2(e)}}}function as(e,t,r){let n=un(e,t);if(n.ok)return n.value;if(r)return r(n.error,t),null;throw n.error}function x(e,t){return Object.keys(e).length===0?t:`---
|
|
2
|
+
import {resolve,join,dirname,basename,sep,relative,extname,normalize,win32,posix,isAbsolute}from'path';import {rm as rm$1,readFile,readdir,stat,mkdir,writeFile,rename,realpath,lstat,unlink,chmod,access,readlink,symlink,mkdtemp,cp as cp$1,copyFile}from'fs/promises';import {setTimeout as setTimeout$1}from'timers/promises';import {realpathSync,rmSync,existsSync,mkdtempSync,readdirSync,symlinkSync,mkdirSync,readFileSync,writeFileSync,renameSync,constants,statSync,appendFileSync}from'fs';import {z as z$1}from'zod';import {stringify,parse,parseDocument,YAMLSeq,YAMLMap}from'yaml';import {homedir,tmpdir,hostname}from'os';import {fileURLToPath,URL,pathToFileURL}from'url';import {execFile}from'child_process';import {promisify}from'util';import*as TO from'tar';import {createHash}from'crypto';import {parse as parse$1}from'smol-toml';import {Buffer as Buffer$1}from'buffer';import {createRequire}from'module';import*as Xt from'@clack/prompts';import AK from'picomatch';import {createTwoFilesPatch}from'diff';import bre from'chokidar';import*as Gz from'readline';import {Server}from'@modelcontextprotocol/sdk/server/index.js';import {StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import {ListToolsRequestSchema,CallToolRequestSchema,ListResourcesRequestSchema,ReadResourceRequestSchema}from'@modelcontextprotocol/sdk/types.js';import {toJSONSchema}from'zod/v4/core';var JC=Object.defineProperty;var s=(e,t)=>JC(e,"name",{value:t,configurable:true});var d=(e,t)=>()=>(e&&(t=e(e=0)),t);var w_=(e,t)=>{for(var r in t)JC(e,r,{get:t[r],enumerable:true});};function lY(){let e=process.env.NO_COLOR;return e!==void 0&&e!==""}function cY(){let e=process.env.FORCE_COLOR;if(e!==void 0)return e!=="0"&&e!=="false"}function Ai(e=process.stdout){let t=cY();return t!==void 0?t:lY()?false:e.isTTY===true}var Tp=d(()=>{s(lY,"noColorRequested");s(cY,"forceColorRequested");s(Ai,"colorEnabled");});function QC(){Ha=true;}function qC(){XC=true;}function of(){return XC?process.stderr:process.stdout}function Sc(e){of().write(e);}function xp(e,t,r){return Ai(r)?`${e}${t}${Rc.reset}`:t}function mY(e,t){let r=[...e].length;return e+" ".repeat(Math.max(0,t-r))}var Rc,Ha,XC,S,ue=d(()=>{Tp();Rc={green:"\x1B[32m",red:"\x1B[31m",yellow:"\x1B[33m",cyan:"\x1B[36m",reset:"\x1B[0m"},Ha=false,XC=false;s(QC,"muteLogger");s(qC,"redirectLoggerToStderr");s(of,"outStream");s(Sc,"out");s(xp,"c");s(mY,"pad");S={info(e){Ha||Sc(xp(Rc.cyan,e,of())+`
|
|
3
|
+
`);},warn(e){Ha||process.stderr.write(xp(Rc.yellow,"\u26A0 ",process.stderr)+e+`
|
|
4
|
+
`);},error(e){Ha||process.stderr.write(xp(Rc.red,"\u2717 ",process.stderr)+e+`
|
|
5
|
+
`);},success(e){Ha||Sc(xp(Rc.green,"\u2713 ",of())+e+`
|
|
6
|
+
`);},debug(e){Ha||process.env.AGENTSMESH_DEBUG==="1"&&Sc(xp(Rc.cyan,"[debug] ",of())+e+`
|
|
7
|
+
`);},table(e){if(Ha||e.length===0)return;let t=e[0].length,r=[];for(let o=0;o<t;o++){let i=0;for(let a=0;a<e.length;a++){let l=[...e[a][o]].length;l>i&&(i=l);}r[o]=i;}let n="+"+r.map(o=>"-".repeat(o+2)).join("+")+"+";Sc(n+`
|
|
8
|
+
`);for(let o=0;o<e.length;o++){let a="| "+e[o].map((l,c)=>mY(l,r[c])).join(" | ")+" |";Sc(a+`
|
|
9
|
+
`);}Sc(n+`
|
|
10
|
+
`);}};});var os,mn,Lc,Zn,Ec,tr,ss=d(()=>{os=class extends Error{static{s(this,"AgentsMeshError");}code;constructor(t,r,n){super(r,n),this.name="AgentsMeshError",this.code=t;}},mn=class extends os{static{s(this,"ConfigNotFoundError");}path;constructor(t,r){super("AM_CONFIG_NOT_FOUND",r?.message??`agentsmesh.yaml not found at ${t}. Run 'agentsmesh init' to create one.`,r),this.name="ConfigNotFoundError",this.path=t;}},Lc=class extends os{static{s(this,"ConfigValidationError");}issues;constructor(t,r,n){super("AM_CONFIG_INVALID",`Invalid config at ${t}: ${r.join("; ")}. Fix the YAML and try again.`,n),this.name="ConfigValidationError",this.issues=r;}},Zn=class extends os{static{s(this,"TargetNotFoundError");}target;constructor(t,r){let n=r?.supported?` Supported: ${r.supported.join(", ")}.`:"";super("AM_TARGET_NOT_FOUND",`Unknown target "${t}".${n}`,r),this.name="TargetNotFoundError",this.target=t;}},Ec=class extends os{static{s(this,"LockAcquisitionError");}lockPath;holder;label;constructor(t,r,n){let o=n?.label??"lock";super("AM_LOCK_ACQUISITION_FAILED",`Could not acquire ${o} at ${t}: currently held by ${r}. Wait for the other process to finish, or remove ${t} manually if you are sure no agentsmesh process is running.`,n),this.name="LockAcquisitionError",this.lockPath=t,this.holder=r,this.label=o;}},tr=class extends os{static{s(this,"FileSystemError");}path;errnoCode;constructor(t,r,n){super("AM_FILESYSTEM",r,n),this.name="FileSystemError",this.path=t,this.errnoCode=n?.errnoCode;}};});function mf(e){let t=extname(e).toLowerCase();if(t.length>0)return _Y.has(t);let r=basename(e).toLowerCase();return SY.has(r)}function pf(e){return e.replace(/\r\n?/g,`
|
|
11
|
+
`)}function T_(e){return RY.has(extname(e).toLowerCase())?493:void 0}var Cc,_Y,SY,RY,uf=d(()=>{Cc="\uFEFF",_Y=new Set([".md",".mdc",".mdx",".markdown",".txt",".json",".jsonc",".yaml",".yml",".toml",".ini",".sh",".bash",".zsh",".ps1",".js",".mjs",".cjs",".ts",".tsx",".html",".css"]),SY=new Set([".gitignore",".cursorignore",".cursorindexingignore",".aiignore",".agentignore",".clineignore",".geminiignore",".codeiumignore",".continueignore",".copilotignore",".windsurfignore",".junieignore",".kiroignore",".rooignore",".antigravityignore"]);s(mf,"shouldNormalizeLineEndings");s(pf,"normalizeLineEndings");RY=new Set([".sh",".bash",".zsh"]);s(T_,"executableModeFor");});function lO(e){if(e.length>bY)return true;let t=new Map;for(let r of e){let n=(t.get(r)??0)+1;if(n>=AY)return true;t.set(r,n);}return false}async function xi(e,t,r){let n=r??[basename(e)],o;try{o=await realpath(e);}catch(a){let l=a;if(l.code==="ENOENT"||l.code==="ENOTDIR"||l.code==="ELOOP")return [];throw new tr(e,`Failed to read directory ${e}: ${l.message}. Check permissions.`,{cause:a,errnoCode:l.code})}let i=t??new Set;if(i.has(o))return [];i.add(o);try{let a=await readdir(e,{withFileTypes:!0}),l=[];for(let c of a){let m=join(e,c.name);if(c.isDirectory()||c.isSymbolicLink()&&await stat(m).then(u=>u.isDirectory(),()=>!1)){let u=[...n,c.name];if(lO(u))continue;l.push(...await xi(m,i,u));}else l.push(m);}return l}catch(a){let l=a;if(l.code==="ENOENT"||l.code==="ENOTDIR"||l.code==="EACCES")return [];throw new tr(e,`Failed to read directory ${e}: ${l.message}. Check permissions.`,{cause:a,errnoCode:l.code})}}async function B(e,t){let r=t??[basename(e)];try{let n=await readdir(e,{withFileTypes:!0}),o=[];for(let i of n){if(i.isSymbolicLink())continue;let a=join(e,i.name);if(i.isDirectory()){let l=[...r,i.name];if(lO(l))continue;o.push(...await B(a,l));}else i.isFile()&&o.push(a);}return o}catch(n){let o=n;if(o.code==="ENOENT"||o.code==="ENOTDIR"||o.code==="EACCES")return [];throw new tr(e,`Failed to read directory ${e}: ${o.message}. Check permissions.`,{cause:n,errnoCode:o.code})}}async function x_(e,t){let r=resolve(e);try{if(!(await lstat(t)).isSymbolicLink()||resolve(dirname(t),await readlink(t))===r)return;await unlink(t);}catch(n){if(n.code!=="ENOENT")throw n}await symlink(r,t,"dir");}var bY,AY,P_=d(()=>{ss();bY=32,AY=3;s(lO,"shouldSkipRecursiveBranch");s(xi,"readDirRecursive");s(B,"readDirRecursiveNoSymlinks");s(x_,"ensureCacheSymlink");});async function D_(e,t,r={}){let n=r.attempts??5,o=r.delayMs??50;for(let i=0;;i++)try{await rename(e,t);return}catch(a){let l=a.code;if(!(l!==void 0&&PY.has(l))||i>=n-1)throw a;await setTimeout$1(o*2**i);}}var PY,cO=d(()=>{PY=new Set(["EPERM","EACCES","EBUSY","ENOTEMPTY","EEXIST"]);s(D_,"renameWithRetry");});async function I(e){try{let t=await readFile(e,"utf-8");return t.startsWith(Cc)?t.slice(Cc.length):t}catch(t){let r=t;if(r.code==="ENOENT")return null;throw new tr(e,`Failed to read ${e}: ${r.message}. Ensure the file exists and is readable.`,{cause:t,errnoCode:r.code})}}async function L(e,t,r){let n=dirname(e);await mkdir(n,{recursive:true});try{let l=await lstat(e);if(l.isDirectory())throw new tr(e,`Failed to write ${e}: target exists and is a directory. Remove it or choose a different path.`,{errnoCode:"EISDIR"});l.isSymbolicLink()&&await unlink(e).catch(c=>{if(c.code!=="ENOENT")throw c});}catch(l){if(l instanceof tr||l.code!=="ENOENT")throw l}let o=`${e}.tmp`,i=mf(e)?pf(t):t,a=r?.mode??T_(e);try{try{(await lstat(o)).isSymbolicLink()&&await unlink(o);}catch(c){if(c.code!=="ENOENT")throw c}let l={encoding:"utf-8",flag:"w"};a!==void 0&&(l.mode=a),await writeFile(o,i,l),await rename(o,e),a!==void 0&&await chmod(e,a);}catch(l){await rm$1(o,{force:true}).catch(()=>{});let c=l;throw new tr(e,`Failed to write ${e}: ${c.message}. Check permissions and disk space.`,{cause:l,errnoCode:c.code})}}async function j(e){try{return await access(e,constants.F_OK),!0}catch{return false}}async function O(e){await mkdir(e,{recursive:true});}var b=d(()=>{ss();uf();P_();uf();cO();s(I,"readFileSafe");s(L,"writeFileAtomic");s(j,"exists");s(O,"mkdirp");});function Kt(e){return Pp.includes(e)}var Pp,dO=d(()=>{Pp=["aider","amazon-q","amp","antigravity","augment-code","claude-code","cline","codex-cli","continue","copilot","crush","cursor","deepagents-cli","factory-droid","gemini-cli","goose","jules","junie","kilo-code","kiro","opencode","pi-agent","qwen-code","replit-agent","roo-code","rovodev","trae","warp","windsurf","zed"];s(Kt,"isBuiltinTargetId");});var Ue,N_,pn=d(()=>{dO();Ue=Pp,N_="codex-cli";});var fO,wr,Oc,UY,Np,BY,KY,Dp,WY,HY,Va,is=d(()=>{pn();fO=["rules","commands","agents","skills","mcp","hooks","ignore","permissions"],wr=z$1.enum(Ue),Oc=z$1.enum(fO),UY=z$1.enum(["rules","commands","agents","skills"]),Np=z$1.object({skills:z$1.array(z$1.string()).optional(),commands:z$1.array(z$1.string()).optional(),rules:z$1.array(z$1.string()).optional(),agents:z$1.array(z$1.string()).optional()}).strict(),BY=z$1.object({name:z$1.string(),source:z$1.string(),version:z$1.string().optional(),target:wr.optional(),as:UY.optional(),features:z$1.array(Oc),path:z$1.string().optional(),pick:Np.optional(),accept:z$1.array(z$1.enum(["hooks","permissions","mcp"])).optional()}),KY=z$1.object({strategy:z$1.enum(["merge","lock","last-wins"]).default("merge"),lock_features:z$1.array(z$1.string()).default([])}),Dp=z$1.union([z$1.boolean(),z$1.object({project:z$1.boolean().optional(),global:z$1.boolean().optional()}).strict()]),WY=z$1.object({commands_to_skills:z$1.object({"codex-cli":Dp.optional()}).passthrough().optional(),agents_to_skills:z$1.object({"gemini-cli":Dp.optional(),cline:Dp.optional(),"codex-cli":Dp.optional(),windsurf:Dp.optional()}).passthrough().optional()}).strict().optional(),HY=z$1.object({id:z$1.string().regex(/^[a-z][a-z0-9-]*$/),source:z$1.string(),version:z$1.string().optional(),strict:z$1.boolean().optional()}).strict(),Va=z$1.object({version:z$1.literal(1),targets:z$1.array(wr).default([...Ue]),features:z$1.array(Oc).default([...fO]),extends:z$1.array(BY).default([]),overrides:z$1.record(z$1.string(),z$1.record(z$1.string(),z$1.unknown())).default({}),collaboration:KY.default({strategy:"merge",lock_features:[]}),conversions:WY,plugins:z$1.array(HY).default([]),pluginTargets:z$1.array(z$1.string().regex(/^[a-z][a-z0-9-]*$/)).default([])});});async function JY(e){let t=resolve(e);for(;;){let r=join(t,F_);if(await j(r))return r;let n=dirname(t);if(n===t)return null;t=n;}}async function YY(e){let t=await I(e);if(t===null)throw new mn(e);let r=parse(t),n=Va.safeParse(r);if(!n.success){let o=n.error.issues.map(i=>i.message);throw new Lc(e,o,{cause:n.error})}return n.data}function v_(e,t){let r={...e};for(let[n,o]of Object.entries(t)){if(o==null||XY.has(n))continue;let i=r[n];typeof o=="object"&&!Array.isArray(o)&&o!==null&&typeof i=="object"&&i!==null&&!Array.isArray(i)?r[n]=v_(i,o):r[n]=o;}return r}function QY(e,t){let r={...e};return Array.isArray(t.targets)&&t.targets.length>0&&(r.targets=t.targets),Array.isArray(t.features)&&t.features.length>0&&(r.features=t.features),typeof t.overrides=="object"&&t.overrides!==null&&!Array.isArray(t.overrides)&&(r.overrides=v_(r.overrides??{},t.overrides)),typeof t.conversions=="object"&&t.conversions!==null&&!Array.isArray(t.conversions)&&(r.conversions=v_(r.conversions??{},t.conversions)),Array.isArray(t.extends)&&t.extends.length>0&&(r.extends=[...e.extends??[],...t.extends]),r}async function ff(e){let t=join(e,F_),r=await YY(t),n=join(e,VY),o=await I(n);if(o!==null){let i=parse(o);if(typeof i=="object"&&i!==null&&!Array.isArray(i)){let a=QY(r,i),l=Va.safeParse(a);if(l.success)r=l.data;else {let c=l.error.issues.map(m=>m.message).join("; ");S.warn(`Ignoring invalid agentsmesh.local.yaml at ${n}: ${c}. Using project config instead.`);}}}return {config:r,configDir:e}}async function gf(e){let t=await JY(e);if(t===null)throw new mn(join(e,F_));return ff(dirname(t))}var F_,VY,XY,hf=d(()=>{b();ue();ss();is();F_="agentsmesh.yaml",VY="agentsmesh.local.yaml";s(JY,"findConfigPath");s(YY,"loadConfig");XY=new Set(["__proto__","constructor","prototype"]);s(v_,"deepMergeObjects");s(QY,"mergeLocalConfig");s(ff,"loadConfigFromExactDir");s(gf,"loadConfigFromDir");});function Ja(e,t="project"){if(t==="project")return {scope:t,rootBase:e,configDir:e,canonicalDir:join(e,".agentsmesh")};let r=homedir(),n=join(r,".agentsmesh");return {scope:t,rootBase:r,configDir:n,canonicalDir:n}}async function _e(e,t="project"){if(t==="project"){let{config:n,configDir:o}=await gf(e);return {config:n,context:{scope:t,rootBase:o,configDir:o,canonicalDir:join(o,".agentsmesh")}}}let r=Ja(e,t);try{let{config:n}=await ff(r.configDir);return {config:n,context:r}}catch(n){throw n instanceof mn?new mn(n.path,{cause:n,message:`agentsmesh.yaml not found at ${n.path} (global scope). Run 'agentsmesh init --global' to create it under ~/.agentsmesh, or drop the --global flag to operate on the current project.`}):n}}var nt=d(()=>{hf();ss();s(Ja,"resolveScopeContext");s(_e,"loadScopedConfig");});function Pi(e){return e.replace(ZY,(t,r,n,o)=>`${r}***@${o}`)}var ZY,yf=d(()=>{ZY=/([a-zA-Z][a-zA-Z0-9+.-]*:\/\/)([^/@\s"'<>]+)@([^\s"'<>]+)/g;s(Pi,"redactUrlSecrets");});function yO(){let e=s(t=>t==="1"||t==="true","on");return {http:e(process.env.AGENTSMESH_ALLOW_INSECURE_GIT),file:e(process.env.AGENTSMESH_ALLOW_LOCAL_GIT)}}function _O(e){let t;try{t=new URL(e);}catch{return false}let{http:r,file:n}=yO(),o=["https:","ssh:"];return r&&o.push("http:"),n&&o.push("file:"),o.includes(t.protocol)}function _f(){let{http:e,file:t}=yO(),r=["https","ssh"];return e&&r.push("http"),t&&r.push("file"),r.join(":")}function vp(e){if(!_O(e))throw new Error(`agentsmesh refuses a git remote with a disallowed transport: "${Pi(e)}". Allowed: https, ssh. Set AGENTSMESH_ALLOW_INSECURE_GIT=1 to permit http, AGENTSMESH_ALLOW_LOCAL_GIT=1 to permit file.`)}function SO(e,t,r){if(!e.startsWith(t))return null;let n=e.slice(t.length).trim();if(!n)return null;let o=n.lastIndexOf("@");if(o<0)return [n,r];let i=n.slice(0,o).trim(),a=n.slice(o+1).trim();return !i||!a?null:[i,a]}function RO(e){let t=SO(e,"github:","latest");if(!t)return null;let[r,n]=t,o=r.indexOf("/");if(o<0)return null;let i=r.slice(0,o).trim(),a=r.slice(o+1).trim();return !i||!a||!n?null:{org:i,repo:a,tag:n}}function IO(e){let t=SO(e,"gitlab:");if(!t)return null;let[r,n]=t,o=r.lastIndexOf("/");if(o<0)return null;let i=r.slice(0,o).trim(),a=r.slice(o+1).trim();return !i||!a?null:{namespace:i,project:a,ref:n,cloneUrl:`https://gitlab.com/${i}/${a}.git`}}function kO(e){if(!e.startsWith("git+"))return null;let t=e.slice(4).trim();if(!t)return null;let r=t.lastIndexOf("#"),n=(r<0?t:t.slice(0,r)).trim(),o=r<0?void 0:t.slice(r+1).trim();return !n||r>=0&&!o||!_O(n)?null:{url:n,ref:o}}function Ya(e){let t=RO(e);if(t)return {kind:"github",...t};let r=IO(e);if(r)return {kind:"gitlab",...r};let n=kO(e);return n?{kind:"git",...n}:null}function G_(e){return Ya(e)!==null}var Xa=d(()=>{yf();s(yO,"gitProtocolOptIns");s(_O,"isAllowedGitProtocol");s(_f,"gitAllowProtocolEnv");s(vp,"assertAllowedGitUrl");s(SO,"splitSourceRef");s(RO,"parseGithubSource");s(IO,"parseGitlabSource");s(kO,"parseGitSource");s(Ya,"parseRemoteSource");s(G_,"isSupportedRemoteSource");});function CO(e,t){if(e.startsWith("-"))throw new Error(`agentsmesh refuses ${t} starting with "-" (option-injection guard): ${e}`)}async function Sf(e,t,r,n,o){let i="cloneUrl"in e?"gitlab":"git",a="cloneUrl"in e?`${e.namespace}/${e.project}`:e.url,l=e.ref??"HEAD",c=o(i,a,l),m=join(n,c),p=join(m,LO),u=`${m}.tmp`,f=join(u,LO);if(!r.refresh&&await EO(p))return U_(p);try{return await rm$1(u,{recursive:!0,force:!0}),await mkdir(u,{recursive:!0}),await a2(i2(e),f),e.ref&&await l2(f,e.ref),await rm$1(m,{recursive:!0,force:!0}),await D_(u,m),U_(p)}catch(g){if(await rm$1(u,{recursive:true,force:true}),r.allowOfflineFallback!==false&&await EO(p)){let y=g instanceof Error?g.message:String(g);return console.warn(`[agentsmesh] Remote fetch failed for ${t}; using cached version. Error: ${Pi(y)}`),U_(p)}throw g instanceof Error?Object.assign(new Error(Pi(g.message)),{cause:g.cause}):g}}async function U_(e){return {resolvedPath:e,version:await c2(e)}}async function EO(e){return j(e)}function i2(e){if("cloneUrl"in e){let t=process.env.AGENTSMESH_GITLAB_TOKEN;if(t){let r=new URL(e.cloneUrl);if(r.protocol==="https:")return r.username="oauth2",r.password=t,r.toString()}return e.cloneUrl}return e.url}async function a2(e,t){CO(e,"clone-url"),vp(e),await B_(["clone","-c","core.symlinks=false",e,t]);}async function l2(e,t){CO(t,"ref"),await B_(["checkout",t],e);}async function c2(e){return B_(["rev-parse","HEAD"],e)}async function B_(e,t){let{stdout:r}=await s2("git",e,{cwd:t,env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_ALLOW_PROTOCOL:_f()}});return r.trim()}var s2,LO,K_=d(()=>{b();yf();Xa();s2=promisify(execFile),LO="repo";s(CO,"ensureNotFlag");s(Sf,"fetchGitRemoteExtend");s(U_,"readCachedRepo");s(EO,"hasCachedRepo");s(i2,"resolveCloneUrl");s(a2,"cloneRepo");s(l2,"checkoutRef");s(c2,"getHeadSha");s(B_,"runGit");});function d2(){let e=process.env.AGENTSMESH_MAX_TARBALL_MB;if(e===void 0||e==="")return Mp*1024*1024;let t=Number(e);return !Number.isFinite(t)||!Number.isInteger(t)?(console.warn(`[agentsmesh] AGENTSMESH_MAX_TARBALL_MB="${e}" is not an integer; using default ${Mp} MiB.`),Mp*1024*1024):t<wO||t>bO?(console.warn(`[agentsmesh] AGENTSMESH_MAX_TARBALL_MB=${t} is outside [${wO}, ${bO}]; using default ${Mp} MiB.`),Mp*1024*1024):t*1024*1024}async function g2(e,t){let r=typeof e.headers?.get=="function"?e.headers.get("content-length"):null;if(r!==null){let m=Number(r);if(Number.isFinite(m)&&m>t)throw new Error(`remote response declared ${m} bytes; exceeds cap of ${t}`)}let n=e.body;if(!n){let m=await e.arrayBuffer();if(m.byteLength>t)throw new Error(`remote response is ${m.byteLength} bytes; exceeds cap of ${t}`);return new Uint8Array(m)}let o=n.getReader(),i=[],a=0;for(;;){let{done:m,value:p}=await o.read();if(m)break;if(p){if(a+=p.byteLength,a>t)throw await o.cancel().catch(()=>{}),new Error(`remote response exceeded cap of ${t} bytes during streaming`);i.push(p);}}let l=new Uint8Array(a),c=0;for(let m of i)l.set(m,c),c+=m.byteLength;return l}async function xO(e,t,r){let n=`https://api.github.com/repos/${e}/${t}/releases/latest`,o={Accept:"application/vnd.github+json"};r&&(o.Authorization=`Bearer ${r}`);let i=await globalThis.fetch(n,{headers:o});if(!i.ok)throw new Error(`Failed to resolve latest release for ${e}/${t}: ${i.status} ${i.statusText}`);let a=await i.json();if(!a.tag_name||typeof a.tag_name!="string")throw new Error(`No tag_name in releases/latest response for ${e}/${t}`);return a.tag_name}async function PO(e,t,r,n,o,i=false){let a=r.token??process.env.AGENTSMESH_GITHUB_TOKEN,l=r.refresh===true,c=e.tag;if(c==="latest")try{c=await xO(e.org,e.repo,a);}catch(R){if(!i)throw R;return y2(e,t,r,n,o,a)}let m=o("github",`${e.org}/${e.repo}`,c),p=join(n,m);if(!l&&await j(p)){let R=await W_(p);if(R)return {resolvedPath:join(p,R),version:c}}let u=`https://github.com/${e.org}/${e.repo}/tarball/${c}`,f={};a&&(f.Authorization=`Bearer ${a}`);let g;try{let R=await globalThis.fetch(u,{headers:f,redirect:"follow"});if(!R.ok)throw new Error(`HTTP ${R.status}: ${R.statusText}`);g=await g2(R,f2);}catch(R){if(r.allowOfflineFallback!==false&&await j(p)){let w=await W_(p);if(w){let D=R instanceof Error?R.message:String(R);return console.warn(`[agentsmesh] Network failed for ${t}; using cached version. Error: ${Pi(D)}`),{resolvedPath:join(p,w),version:c}}}throw R instanceof Error?Object.assign(new Error(Pi(R.message)),{cause:R.cause}):R}await rm$1(p,{recursive:true,force:true}),await mkdir(p,{recursive:true});let h=join(p,"archive.tar.gz");await writeFile(h,g);try{await TO.extract({file:h,cwd:p,strict:!0,filter:s((R,k)=>{if(h2(R))return !1;let w=k&&"type"in k?k.type:void 0;return w==="File"||w==="Directory"},"filter")});}finally{await rm$1(h,{force:true}).catch(()=>{});}let y=await W_(p);if(!y)throw new Error(`Extend "${t}": archive has no top-level directory. Expected a single top-level directory inside the archive.`);return {resolvedPath:join(p,y),version:c}}async function W_(e){let r=(await readdir(e,{withFileTypes:true})).filter(n=>n.isDirectory()&&!n.name.startsWith("."));return r.length===1?r[0].name:null}function AO(e,t,r){return r?`https://x-access-token:${encodeURIComponent(r)}@github.com/${e}/${t}.git`:`https://github.com/${e}/${t}.git`}function h2(e){let t=e.replace(/\\/g,"/");return t.startsWith("/")||t.split("/").includes("..")}async function y2(e,t,r,n,o,i){let a=i?[AO(e.org,e.repo,i)]:[AO(e.org,e.repo),`ssh://git@github.com/${e.org}/${e.repo}.git`],l;for(let c of a){let m={url:c};try{return await Sf(m,t,r,n,o)}catch(p){l=p;}}throw l instanceof Error?l:new Error("Failed to clone GitHub default branch")}var Mp,wO,bO,f2,DO=d(()=>{b();yf();K_();Mp=500,wO=1,bO=4096;s(d2,"resolveMaxTarballBytes");f2=d2();s(g2,"readBoundedResponse");s(xO,"resolveLatestTag");s(PO,"fetchGithubRemoteExtend");s(W_,"findExtractTopDir");s(AO,"buildGithubCloneUrl");s(h2,"isZipSlipPath");s(y2,"fetchGithubDefaultBranch");});function R2(e){let t=Ya(e);return t?t.kind==="github"?wc("github",`${t.org}/${t.repo}`,t.tag):t.kind==="gitlab"?wc("gitlab",`${t.namespace}/${t.project}`,t.ref??"HEAD"):wc("git",t.url,t.ref??"HEAD"):null}async function FO(e,t){let r=R2(e);if(!r)return;let n=t??rr(),o=join(n,r);await rm$1(o,{recursive:true,force:true});}async function MO(e,t){let r=e??rr(),n=t??Number(process.env.AGENTSMESH_CACHE_MAX_AGE_DAYS??30)*864e5,o;try{o=await readdir(r);}catch{return}let i=Date.now();await Promise.all(o.map(async a=>{let l=join(r,a);try{let{mtimeMs:c}=await stat(l);i-c>n&&await rm$1(l,{recursive:!0,force:!0});}catch{}}));}var H_=d(()=>{Gp();Xa();s(R2,"cacheKeyFromSource");s(FO,"cleanInstallCache");s(MO,"sweepStaleCache");});function wc(e,t,r){let n=s(i=>i.replace(/[^a-zA-Z0-9_.-]/g,"_").replace(/^\.+/,"_"),"safe"),o;if(e==="github"){let[i,a]=t.split("/",2);i&&a?o=`${n(i)}--${n(a)}--${n(r)}`:o=`${n(e)}__${n(t)}__${n(r)}`;}else o=`${n(e)}__${n(t)}__${n(r)}`;if(o.length>jO){let i=createHash("sha256").update(o).digest("hex").slice(0,16);o=`${o.slice(0,jO-18)}--${i}`;}return o}function rr(){let e=process.env.AGENTSMESH_CACHE;if(e){let t=e.trim();if(!t)return join(homedir(),".agentsmesh","cache");if(!/^([A-Za-z]:[\\/]|\/)/.test(t))throw new Error(`AGENTSMESH_CACHE must be an absolute path (got: "${t}").`);if(t==="/"||/^[A-Za-z]:[\\/]?$/.test(t))throw new Error(`AGENTSMESH_CACHE must not be the filesystem root (got: "${t}").`);return t}return join(homedir(),".agentsmesh","cache")}async function bc(e,t,r={}){let n=Ya(e);if(!n)throw e.startsWith("github:")?new Error(`Invalid github: source: "${e}" for extend "${t}"`):e.startsWith("gitlab:")?new Error(`Invalid gitlab: source: "${e}" for extend "${t}"`):e.startsWith("git+")?new Error(`Invalid git+ source: "${e}" for extend "${t}"`):new Error(`Invalid remote source: "${e}" for extend "${t}". Use github:org/repo@tag, gitlab:group/project@ref, or git+https://host/org/repo.git#ref.`);let o=r.cacheDir??rr();return MO(o).catch(()=>{}),n.kind==="github"?PO(n,t,r,o,wc,!e.includes("@")):Sf(n,t,r,o,wc)}var jO,Gp=d(()=>{K_();DO();Xa();H_();jO=80;s(wc,"buildCacheKey");s(rr,"getCacheDir");s(bc,"fetchRemoteExtend");});function C2(e){return e.startsWith("http://")||e.startsWith("https://")}async function Ac(e,t,r={}){if(e.extends.length===0)return [];if(r.refreshCache===true&&e.extends.some(o=>G_(o.source))){let o=rr();await rm$1(o,{recursive:true,force:true}),await mkdir(o,{recursive:true});}let n=[];for(let o of e.extends){if(C2(o.source))throw new Error(`Remote extends (http/https) not supported: "${o.source}" for extend "${o.name}". Use github:org/repo@tag, gitlab:group/project@ref, git+https://host/org/repo.git#ref, or a local path (e.g. ./shared/).`);if(G_(o.source)){let a=await bc(o.source,o.name,{cacheDir:rr(),refresh:r.refreshCache===true});n.push({name:o.name,resolvedPath:a.resolvedPath,features:[...o.features],target:o.target,as:o.as,version:a.version,path:o.path,pick:o.pick,isRemote:true,accept:o.accept});continue}let i=resolve(t,o.source);if(!await j(i))throw new Error(`Extend "${o.name}": path does not exist: ${i}. Check extends.source in agentsmesh.yaml.`);n.push({name:o.name,resolvedPath:i,features:[...o.features],target:o.target,as:o.as,path:o.path,pick:o.pick,isRemote:false,accept:o.accept});}return n}var Rf=d(()=>{b();Gp();Xa();s(C2,"isOtherRemoteSource");s(Ac,"resolveExtendPaths");});function T(e){if(e.indexOf("---")!==0)return {frontmatter:{},body:e.trim()};let r=e.indexOf("---",3);if(r===-1)return {frontmatter:{},body:e.trim()};let n=e.slice(3,r).trim(),o=e.slice(r+3).trim();return {frontmatter:n===""?{}:parse(n)??{},body:o}}function b2(e){if(e.indexOf("---")!==0)return e.trim();let t=e.indexOf("---",3);return t===-1?e.trim():e.slice(t+3).trim()}function un(e,t){try{return {ok:!0,value:T(e)}}catch(r){let n=r instanceof Error?r.message:String(r);return {ok:false,error:new Error(`Failed to parse frontmatter in ${t}: ${n}`,{cause:r}),bodyFallback:b2(e)}}}function as(e,t,r){let n=un(e,t);if(n.ok)return n.value;if(r)return r(n.error,t),null;throw n.error}function x(e,t){return Object.keys(e).length===0?t:`---
|
|
12
12
|
${stringify(e,{lineWidth:0}).trimEnd()}
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
-
${t}`}var U=d(()=>{s(T,"parseFrontmatter");s(b2,"extractBody");s(un,"tryParseFrontmatter");s(as,"parseOrSkipFrontmatter");s(x,"serializeFrontmatter");});function x2(e){let t=e.replace(/\.[^.]*$/,"").toUpperCase();return A2.has(t)}function
|
|
16
|
-
`;)r++;continue}t+=o,r++;}return t}async function dn(e){let t=await I(e);if(!t)return null;let r;try{r=JSON.parse(J2(t));}catch{return null}if(!r||typeof r!="object")return null;let n=r.mcpServers;if(n===void 0||typeof n!="object"||n===null)return null;let o={};for(let[i,a]of Object.entries(n)){let l=V2(a);l&&(o[i]=l);}return {mcpServers:o}}var Kp=d(()=>{b();s(ZO,"parseStringMap");s(V2,"parseServer");s(J2,"stripJsonComments");s(dn,"parseMcp");});function J_(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}async function wf(e){let t=await I(e);if(t===null)return null;if(!t.trim())return {allow:[],deny:[],ask:[]};let r;try{r=parse(t);}catch{return null}if(!r||typeof r!="object")return null;let n=r,o=J_(n.allow),i=J_(n.deny),a=J_(n.ask);return {allow:o,deny:i,ask:a}}var Y_=d(()=>{b();s(J_,"ensureStringArray");s(wf,"parsePermissions");});function ew(e){return typeof e=="string"?e.trim():""}function It(e){return ew(e.command)}function to(e){return ew(e.prompt)}function Pc(e){let t=It(e),r=to(e);return e.type==="prompt"?r||t:t||r}function fn(e){return It(e).length>0}function ms(e){return Pc(e).length>0}var gn=d(()=>{s(ew,"trimString");s(It,"getHookCommand");s(to,"getHookPrompt");s(Pc,"getHookText");s(fn,"hasHookCommand");s(ms,"hasHookText");});function q2(e){if(!e||typeof e!="object")return null;let t=e,r=t.matcher;if(typeof r!="string")return null;let n=Pc(t);if(!n)return null;let o=typeof t.type=="string"&&Q2.includes(t.type)?t.type:void 0,i=typeof t.timeout=="number"&&Number.isFinite(t.timeout)?t.timeout:void 0,a=to(t)||void 0;return {matcher:r,command:n,...i!==void 0&&{timeout:i},...o&&{type:o},...a&&{prompt:a}}}async function bf(e){let t=await I(e);if(t===null)return null;if(!t.trim())return {};let r;try{r=parse(t);}catch{return null}if(!r||typeof r!="object")return null;let n={},o=r;for(let[i,a]of Object.entries(o)){if(!Array.isArray(a))continue;let l=[];for(let c of a){let m=q2(c);m&&l.push(m);}l.length>0&&(n[i]=l);}return n}var Q2,X_=d(()=>{b();gn();Q2=["command","prompt"];s(q2,"toHookEntry");s(bf,"parseHooks");});async function Af(e){let t=await I(e);if(t===null||!t.trim())return [];let r=t.split(/\r?\n/),n=[];for(let o of r){let i=o.trim();i===""||i.startsWith("#")||n.push(i);}return n}var Q_=d(()=>{b();s(Af,"parseIgnore");});async function Wt(e,t={}){let r=join(e,".agentsmesh"),n=await j(r)?r:e,[o,i,a,l,c,m,p,u]=await Promise.all([Di(join(n,"rules"),t),Ni(join(n,"commands"),t),vi(join(n,"agents"),t),Fi(join(n,"skills"),t),dn(join(n,"mcp.json")),wf(join(n,"permissions.yaml")),bf(join(n,"hooks.yaml")),Af(join(n,"ignore"))]);return {rules:o,commands:i,agents:a,skills:l,mcp:c,permissions:m,hooks:p,ignore:u}}var Qa=d(()=>{jp();Up();Bp();xc();Kp();Y_();X_();Q_();b();s(Wt,"loadCanonicalFiles");});function tw(e){return basename(e.source,".md")}function Dc(e,t){let r=new Map(e.rules.map(p=>[tw(p),p]));for(let p of t.rules)r.set(tw(p),p);let n=new Map(e.commands.map(p=>[p.name,p]));for(let p of t.commands)n.set(p.name,p);let o=new Map(e.agents.map(p=>[p.name,p]));for(let p of t.agents)o.set(p.name,p);let i=new Map(e.skills.map(p=>[p.name,p]));for(let p of t.skills)i.set(p.name,p);let a=eX(e.mcp,t.mcp),l=tX(e.permissions,t.permissions),c=rX(e.hooks,t.hooks),m=nX(e.ignore,t.ignore);return {rules:Array.from(r.values()),commands:Array.from(n.values()),agents:Array.from(o.values()),skills:Array.from(i.values()),mcp:a,permissions:l,hooks:c,ignore:m}}function eX(e,t){if(!e&&!t)return null;let r=e?.mcpServers??{},n=t?.mcpServers??{};return {mcpServers:{...r,...n}}}function tX(e,t){if(!e&&!t)return null;let r=q_(e?.allow??[],t?.allow??[]),n=q_(e?.deny??[],t?.deny??[]),o=q_(e?.ask??[],t?.ask??[]);return {allow:r,deny:n,ask:o}}function q_(e,t){let r=new Set(e),n=[...e];for(let o of t)r.has(o)||(r.add(o),n.push(o));return n}function rX(e,t){if(!e&&!t)return null;let r={},n=new Set([...Object.keys(e??{}),...Object.keys(t??{})]);for(let o of n){let i=t?.[o],a=e?.[o];r[o]=i!==void 0&&i.length>0?i:a??[];}return r}function nX(e,t){let r=new Set(e),n=[...e];for(let o of t)r.has(o)||(r.add(o),n.push(o));return n}var Z_=d(()=>{s(tw,"ruleSlug");s(Dc,"mergeCanonicalFiles");s(eX,"mergeMcp");s(tX,"mergePermissions");s(q_,"mergeUniqueStrings");s(rX,"mergeHooks");s(nX,"mergeIgnore");});function mX(e){return typeof e=="string"?e:e.level}function pX(e){return cX.includes(e)}function rw(e,t,r,n){let o=n[0]==="globalSupport",i=o&&typeof e.globalSupport?.scopeExtras=="function";for(let a of lX){let l=mX(t[a.feature]);if(l==="none")continue;let c=pX(a.feature),m=typeof e.generators[a.generator]=="function",p=c&&typeof e.emitScopedSettings=="function";if(m||p||c&&i)continue;let f=c?o?" or emitScopedSettings or globalSupport.scopeExtras":" or emitScopedSettings":"";r.addIssue({code:"custom",path:[...n,a.feature],message:`Capability "${a.feature}" is "${l}" but generators.${a.generator}${f} is missing.`});}}function Tf(e){return yX.parse(e)}var us,nw,oX,sX,ow,iX,aX,lX,cX,uX,dX,fX,gX,hX,yX,eS=d(()=>{us=z$1.union([z$1.enum(["native","embedded","partial","none"]),z$1.object({level:z$1.enum(["native","embedded","partial","none"]),flavor:z$1.string().optional()})]),nw=z$1.object({rules:us,additionalRules:us,commands:us,agents:us,skills:us,mcp:us,hooks:us,ignore:us,permissions:us}),oX=z$1.object({name:z$1.string(),generateRules:z$1.function(),importFrom:z$1.function(),generateCommands:z$1.function().optional(),generateAgents:z$1.function().optional(),generateSkills:z$1.function().optional(),generateMcp:z$1.function().optional(),generatePermissions:z$1.function().optional(),generateHooks:z$1.function().optional(),generateIgnore:z$1.function().optional(),lint:z$1.function().optional()}).passthrough(),sX=z$1.object({rulePath:z$1.function(),commandPath:z$1.function(),agentPath:z$1.function()}),ow=z$1.object({paths:sX}).passthrough(),iX=z$1.object({capabilities:nw,detectionPaths:z$1.array(z$1.string()),layout:ow,scopeExtras:z$1.function().optional()}).passthrough(),aX=["global","globalCapabilities","globalDetectionPaths","generateScopeExtras"],lX=[{feature:"commands",generator:"generateCommands"},{feature:"agents",generator:"generateAgents"},{feature:"skills",generator:"generateSkills"},{feature:"mcp",generator:"generateMcp"},{feature:"hooks",generator:"generateHooks"},{feature:"ignore",generator:"generateIgnore"},{feature:"permissions",generator:"generatePermissions"}],cX=["mcp","hooks","ignore","permissions"];s(mX,"capabilityLevel");s(pX,"canUseScopedSettings");s(rw,"validateCapabilityImplementations");uX=z$1.object({commandsToSkills:z$1.boolean().optional(),agentsToSkills:z$1.boolean().optional()}).strict(),dX=z$1.object({displayName:z$1.string().min(1),category:z$1.enum(["cli","ide","agent-platform"]),officialUrl:z$1.string().min(1),shortDescription:z$1.string().min(1)}).passthrough(),fX=z$1.discriminatedUnion("kind",[z$1.object({kind:z$1.literal("basename"),suffix:z$1.string().min(1)}),z$1.object({kind:z$1.literal("skillDir")}),z$1.object({kind:z$1.literal("firstSegment")})]),gX=z$1.object({pickPaths:z$1.array(z$1.object({prefix:z$1.string().min(1),feature:z$1.enum(["commands","rules","agents","skills"]),strategy:fX})).optional(),inferPick:z$1.function().optional(),dialectHints:z$1.array(z$1.object({frontmatterKey:z$1.string().min(1)})).optional()}).strict(),hX=z$1.object({id:z$1.string().regex(/^[a-z][a-z0-9-]*$/,"Target id must be lowercase with hyphens"),metadata:dX,generators:oX,capabilities:nw,emptyImportMessage:z$1.string(),lintRules:z$1.union([z$1.function(),z$1.null()]),project:ow,globalSupport:iX.optional(),buildImportPaths:z$1.function(),detectionPaths:z$1.array(z$1.string()),nativeInstall:gX.optional(),excludeFromStarterInit:z$1.boolean().optional(),conversionDefaults:uX.optional(),emitScopedSettings:z$1.function().optional(),mergeGeneratedOutputContent:z$1.function().optional(),postProcessHookOutputs:z$1.function().optional(),preservesManualActivation:z$1.boolean().optional()}).passthrough(),yX=hX.superRefine((e,t)=>{for(let r of aX)r in e&&t.addIssue({code:"custom",path:[r],message:`Use globalSupport instead of legacy field "${r}".`});rw(e,e.capabilities,t,["capabilities"]),e.globalSupport!==void 0&&rw(e,e.globalSupport.capabilities,t,["globalSupport","capabilities"]);});s(Tf,"validateDescriptor");});function sw(){if(tS)return tS;let e=Ne.filter(r=>r!==void 0&&typeof r.id=="string"),t=new Map(e.map(r=>[r.id,r]));return e.length===Ne.length&&(tS=t),t}function Pf(e){let t=Tf(e);xf.set(t.id,t);}function ne(e){return xf.get(e)??sw().get(e)}function Df(){return [...xf.values()]}function Nf(){return [...new Set([...sw().keys(),...xf.keys()])]}var xf,tS,ot=d(()=>{Te();eS();xf=new Map;s(sw,"builtinDescriptors");s(Pf,"registerTargetDescriptor");s(ne,"getDescriptor");s(Df,"getAllDescriptors");s(Nf,"getAllRegisteredDescriptorIds");});function iw(e,t){return ne(e)?.conversionDefaults?.[t]}function aw(e,t){if(e!==void 0)return typeof e=="boolean"?e:e[t]}function Nc(e,t,r,n="project"){let o=e.conversions?.commands_to_skills?.[t],i=aw(o,n);if(i!==void 0)return i;let a=iw(t,"commandsToSkills");return a!==void 0?a:r??false}function ds(e,t,r,n="project"){let o=e.conversions?.agents_to_skills?.[t],i=aw(o,n);if(i!==void 0)return i;let a=iw(t,"agentsToSkills");return a!==void 0?a:r??false}var Wp=d(()=>{ot();s(iw,"builtinDefault");s(aw,"resolveConversionValue");s(Nc,"shouldConvertCommandsToSkills");s(ds,"shouldConvertAgentsToSkills");});function yn(e,t){return t!==void 0?{level:e,flavor:t}:{level:e}}function hn(e){return typeof e=="string"?{level:e}:e}function rS(e){return {rules:hn(e.rules),additionalRules:hn(e.additionalRules),commands:hn(e.commands),agents:hn(e.agents),skills:hn(e.skills),mcp:hn(e.mcp),hooks:hn(e.hooks),ignore:hn(e.ignore),permissions:hn(e.permissions)}}var qa=d(()=>{s(yn,"cap");s(hn,"normalizeCapabilityValue");s(rS,"normalizeTargetCapabilities");});function lw(e){for(let t of Ne)if(t.sharedArtifacts){for(let[r,n]of Object.entries(t.sharedArtifacts))if(n==="owner"&&e.startsWith(r))return t.id}return null}function _X(e){let t=[];for(let n of e)if(n.sharedArtifacts)for(let[o,i]of Object.entries(n.sharedArtifacts))i==="owner"&&t.push({targetId:n.id,prefix:o});let r=[];for(let n=0;n<t.length;n++)for(let o=n+1;o<t.length;o++){let i=t[n],a=t[o];i===void 0||a===void 0||(i.prefix===a.prefix||i.prefix.startsWith(a.prefix)||a.prefix.startsWith(i.prefix))&&r.push({a:i,b:a});}return r}function cw(e){let t=_X(e);if(t.length===0)return;let r=t.map(({a:n,b:o})=>` - "${n.targetId}" owns "${n.prefix}" and "${o.targetId}" owns "${o.prefix}"`);throw new Error(`Shared-artifact ownership conflict: two targets claim the same or overlapping prefix.
|
|
15
|
+
${t}`}var U=d(()=>{s(T,"parseFrontmatter");s(b2,"extractBody");s(un,"tryParseFrontmatter");s(as,"parseOrSkipFrontmatter");s(x,"serializeFrontmatter");});function x2(e){let t=e.replace(/\.[^.]*$/,"").toUpperCase();return A2.has(t)}function UO(e){let t=[],r=e.split(/[\\/]/);for(let n of r)if(!(n===""||n==="."||n==="..")){if(T2.test(n)){t.push({segment:n,reason:"illegal-character"});continue}if(/[. ]$/.test(n)){t.push({segment:n,reason:"trailing-dot-or-space"});continue}x2(n)&&t.push({segment:n,reason:"reserved-name"});}return t}var A2,T2,BO=d(()=>{A2=new Set(["CON","PRN","AUX","NUL","COM1","COM2","COM3","COM4","COM5","COM6","COM7","COM8","COM9","LPT1","LPT2","LPT3","LPT4","LPT5","LPT6","LPT7","LPT8","LPT9"]),T2=new RegExp('[<>:"|?*\\u0000-\\u001F]');s(x2,"segmentReservedName");s(UO,"findWindowsPathIssues");});function ls(e,t){let r=UO(t);if(r.length===0)return;let n=r.map(o=>`${o.segment} (${o.reason})`).join(", ");throw new If(e,t,`canonical ${e} name "${t}" is not portable to Windows: ${n}. Rename the file.`)}function Tc(e,t,r){let n=new Map;for(let o of t){let i=o.lastIndexOf("/"),a=o.lastIndexOf("\\"),l=Math.max(i,a),c=l===-1?o:o.slice(l+1),m=c.endsWith(r)?c.slice(0,-r.length):c,p=m.toLowerCase(),u=n.get(p);if(u!==void 0&&u.path!==o){let f=u.slug===m?`"${m}"`:`"${u.slug}" vs "${m}" (case-insensitive)`;throw new If(e,m,`canonical ${e} files collide on slug ${f}: ${u.path} vs ${o}. Rename one.`)}n.set(p,{path:o,slug:m});}}var If,$p=d(()=>{BO();If=class extends Error{static{s(this,"CanonicalNameError");}feature;name;constructor(t,r,n){super(n),this.feature=t,this.name=r;}};s(ls,"assertCanonicalName");s(Tc,"assertNoBasenameCollisions");});function xc(e,t,r,n,o={}){if(r.length===0)return;let i=new Set(n),a=o.handledByOtherReader,l=new Set,c=0;for(let p of r){if(i.has(p)||basename(p).startsWith("."))continue;let u=extname(p).toLowerCase();N2.has(u)&&(a?.has(u)||(l.add(u),c++));}if(c===0)return;let m=[...l].sort().join(", ");S.warn(`Skipped ${c} ${e} file(s) in ${t} (format${l.size===1?"":"s"}: ${m}). agentsmesh ${e} are parsed from .md files only.`);}var N2,kf=d(()=>{ue();N2=new Set([".toml",".yaml",".yml",".json"]);s(xc,"warnIfUnrecognizedResourceFormats");});function WO(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):typeof e=="string"?e?[e]:[]:[]}async function Di(e,t={}){let r=await B(e),n=r.filter(i=>{if(!i.endsWith(".md"))return false;let a=basename(i,".md");return a==="_root"||!a.startsWith("_")});xc("rules",e,r,n,{handledByOtherReader:t.handledByOtherReader}),Tc("rule",n,".md");let o=[];for(let i of n){let a=await I(i);if(!a)continue;let l=as(a,i,t.onParseError);if(!l)continue;let{frontmatter:c,body:m}=l,p=basename(i,".md");ls("rule",p);let u=p==="_root",f=c.root===true,g=c.trigger,h=typeof g=="string"&&v2.includes(g)?g:void 0,y=c.codex_emit,_=y==="execution"?"execution":y==="advisory"?"advisory":void 0,k=c.codex_instruction==="override"?"override":void 0;o.push({source:i,root:u||f,targets:WO(c.targets),description:typeof c.description=="string"?c.description:"",globs:WO(c.globs),body:m,...h!==void 0&&{trigger:h},..._!==void 0&&{codexEmit:_},...k!==void 0&&{codexInstructionVariant:k}});}return o}var v2,jp=d(()=>{b();U();$p();kf();v2=["always_on","model_decision","glob","manual"];s(WO,"toStrArray");s(Di,"parseRules");});function zO(e){return e===true||e==="true"||e===1||e==="1"}function VO(e){return Array.isArray(e)?e.filter(t=>typeof t=="string").map(t=>t.trim()).filter(Boolean):typeof e=="string"?e.split(",").map(t=>t.trim()).filter(Boolean):[]}async function Ni(e,t={}){let r=await B(e),n=r.filter(i=>i.endsWith(".md")&&!basename(i).startsWith("_"));xc("commands",e,r,n,{handledByOtherReader:t.handledByOtherReader}),Tc("command",n,".md");let o=[];for(let i of n){let a=await I(i);if(!a)continue;let l=as(a,i,t.onParseError);if(!l)continue;let{frontmatter:c,body:m}=l,p=basename(i,".md");ls("command",p);let u=VO(c.allowedTools),f=VO(c["allowed-tools"]),g=u.length>0?u:f;o.push({source:i,name:p,description:typeof c.description=="string"?c.description:"",allowedTools:g,outputStyle:zO(c.outputStyle)||zO(c["output-style"]),body:m});}return o}var Up=d(()=>{b();U();$p();kf();s(zO,"toBool");s(VO,"toToolsArray");s(Ni,"parseCommands");});function Qa(e){return Array.isArray(e)?e.filter(t=>typeof t=="string").map(t=>t.trim()).filter(Boolean):typeof e=="string"?e.split(",").map(t=>t.trim()).filter(Boolean):[]}function YO(e){return e===true||e==="true"||e===1||e==="1"}function XO(e){if(typeof e=="number"&&Number.isInteger(e)&&e>=0)return e;if(typeof e=="string"){let t=parseInt(e,10);return Number.isInteger(t)&&t>=0?t:0}return 0}function F2(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:{}}async function vi(e,t={}){let r=await B(e),n=r.filter(i=>i.endsWith(".md")&&!basename(i).startsWith("_"));xc("agents",e,r,n,{handledByOtherReader:t.handledByOtherReader}),Tc("agent",n,".md");let o=[];for(let i of n){let a=await I(i);if(!a)continue;let l=as(a,i,t.onParseError);if(!l)continue;let{frontmatter:c,body:m}=l,p=basename(i,".md");ls("agent",p);let u=Qa(c.tools),f=Qa(c.tools),g=u.length>0?u:f,h=Qa(c.disallowedTools),y=Qa(c["disallowed-tools"]),_=h.length>0?h:y,R=Qa(c.mcpServers),k=Qa(c["mcp-servers"]),w=R.length>0?R:k,D=Qa(c.skills),v=XO(c.maxTurns),K=XO(c["max-turns"]),ee=v>0?v:K>0?K:0;o.push({source:i,name:p,description:typeof c.description=="string"?c.description:"",tools:g,disallowedTools:_,model:typeof c.model=="string"?c.model:"",permissionMode:typeof c.permissionMode=="string"?c.permissionMode:typeof c["permission-mode"]=="string"?c["permission-mode"]:"",maxTurns:ee,mcpServers:w,hooks:F2(c.hooks),skills:D,memory:typeof c.memory=="string"?c.memory:"",outputStyle:YO(c.outputStyle)||YO(c["output-style"]),body:m});}return o}var Bp=d(()=>{b();U();$p();kf();s(Qa,"toStrArray");s(YO,"toBool");s(XO,"toInt");s(F2,"toHooks");s(vi,"parseAgents");});function z_(e){let t=e.toLowerCase(),r=t.lastIndexOf("."),n=r>0?t.slice(0,r):t;return M2.get(n)}function eo(e){return z_(e)!==void 0}function Lf(e){return z_(e)==="preserved"}function Ef(e){return z_(e)==="noise"}function QO(e){return G2.has(e)}function qO(e){return $2.has(e)}var M2,G2,$2,cs=d(()=>{M2=new Map([["contributing","noise"],["changelog","noise"],["changes","noise"],["history","noise"],["code_of_conduct","noise"],["security","noise"],["support","noise"],["maintainers","noise"],["governance","noise"],["authors","noise"],["contributors","noise"],["codeowners","noise"],["citation","noise"],["acknowledgments","noise"],["acknowledgements","noise"],["license","preserved"],["license-mit","preserved"],["license-apache","preserved"],["license-bsd","preserved"],["license-gpl","preserved"],["notice","preserved"],["copying","preserved"],["copyright","preserved"],["readme","preserved"]]),G2=new Set([".git",".github",".gitlab","node_modules",".vscode",".idea"]),$2=new Set(["package.json","package-lock.json","pnpm-lock.yaml","yarn.lock",".gitignore",".gitattributes",".editorconfig",".DS_Store"]);s(z_,"boilerplateKind");s(eo,"isBoilerplate");s(Lf,"isPreservedBoilerplate");s(Ef,"isNoiseBoilerplate");s(QO,"isRepoNonContentDir");s(qO,"isRepoNonContentFile");});async function B2(e){return await I(e)??""}function W2(e){let t=e.lastIndexOf(".");return t<0?true:K2.has(e.slice(t).toLowerCase())}function z2(e){return e.toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}async function ZO(e){let t=await B(e),r=[];for(let n of t){let i=n.slice(e.length+1).replace(/\\/g,"/");if(i===Cf||i.endsWith(`/${Cf}`))continue;let a=i.split("/")[0];if(H2.some(m=>a===m)||i===".DS_Store"||i.endsWith("/.DS_Store"))continue;let l=i.includes("/")?i.slice(i.lastIndexOf("/")+1):i;if(W2(l)&&Ef(l))continue;let c=await B2(n);r.push({relativePath:i,absolutePath:n,content:c});}return r.sort((n,o)=>n.relativePath.localeCompare(o.relativePath))}async function Of(e,t={}){let r=join(e,Cf),n=await I(r);if(!n)return null;let o=as(n,r,t.onParseError);if(!o)return null;let{frontmatter:i,body:a}=o,l=await ZO(e),m=(typeof i.name=="string"?z2(i.name):"")||basename(e);return ls("skill",m),{source:r,name:m,description:typeof i.description=="string"?i.description:"",body:a,supportingFiles:l}}async function Fi(e,t={}){let r;try{r=await readdir(e,{withFileTypes:!0});}catch{return []}let n=[];for(let o of r){if(!o.isDirectory()||o.name.startsWith("_"))continue;ls("skill",o.name);let i=join(e,o.name),a=join(i,Cf),l=await I(a);if(!l)continue;let c=as(l,a,t.onParseError);if(!c)continue;let{frontmatter:m,body:p}=c,u=await ZO(i);n.push({source:a,name:o.name,description:typeof m.description=="string"?m.description:"",body:p,supportingFiles:u});}return n.sort((o,i)=>o.name.localeCompare(i.name))}var Cf,K2,H2,Pc=d(()=>{b();P_();U();cs();$p();s(B2,"readContent");Cf="SKILL.md",K2=new Set([".md",".mdx",".rst",".txt"]);s(W2,"isMarkdownLikeDoc");H2=[".git","node_modules"];s(z2,"sanitizeSkillName");s(ZO,"listSupportingFiles");s(Of,"parseSkillDirectory");s(Fi,"parseSkills");});function ew(e){return e===null||typeof e!="object"||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="string"))}function V2(e){if(!e||typeof e!="object")return null;let t=e,r=typeof t.type=="string"?t.type:"stdio",n=ew(t.env),o=typeof t.description=="string"?t.description:void 0,i=typeof t.url=="string"?t.url:"";if(i)return {...o!==void 0&&{description:o},type:r,url:i,headers:ew(t.headers),env:n};let a=typeof t.command=="string"?t.command:"";if(!a)return null;let l=Array.isArray(t.args)?t.args.filter(c=>typeof c=="string"):[];return {...o!==void 0&&{description:o},type:r,command:a,args:l,env:n}}function J2(e){let t="",r=0,n=e.length;for(;r<n;){let o=e[r];if(o==='"'){for(t+=o,r++;r<n;){let i=e[r];if(t+=i,i==="\\")r++,r<n&&(t+=e[r]);else if(i==='"')break;r++;}r++;continue}if(o==="/"&&e[r+1]==="*"){for(r+=2;r<n;){if(e[r]==="*"&&e[r+1]==="/"){r+=2;break}r++;}continue}if(o==="/"&&e[r+1]==="/"){for(r+=2;r<n&&e[r]!==`
|
|
16
|
+
`;)r++;continue}t+=o,r++;}return t}async function dn(e){let t=await I(e);if(!t)return null;let r;try{r=JSON.parse(J2(t));}catch{return null}if(!r||typeof r!="object")return null;let n=r.mcpServers;if(n===void 0||typeof n!="object"||n===null)return null;let o={};for(let[i,a]of Object.entries(n)){let l=V2(a);l&&(o[i]=l);}return {mcpServers:o}}var Kp=d(()=>{b();s(ew,"parseStringMap");s(V2,"parseServer");s(J2,"stripJsonComments");s(dn,"parseMcp");});function J_(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}async function wf(e){let t=await I(e);if(t===null)return null;if(!t.trim())return {allow:[],deny:[],ask:[]};let r;try{r=parse(t);}catch{return null}if(!r||typeof r!="object")return null;let n=r,o=J_(n.allow),i=J_(n.deny),a=J_(n.ask);return {allow:o,deny:i,ask:a}}var Y_=d(()=>{b();s(J_,"ensureStringArray");s(wf,"parsePermissions");});function tw(e){return typeof e=="string"?e.trim():""}function It(e){return tw(e.command)}function to(e){return tw(e.prompt)}function Dc(e){let t=It(e),r=to(e);return e.type==="prompt"?r||t:t||r}function fn(e){return It(e).length>0}function ms(e){return Dc(e).length>0}var gn=d(()=>{s(tw,"trimString");s(It,"getHookCommand");s(to,"getHookPrompt");s(Dc,"getHookText");s(fn,"hasHookCommand");s(ms,"hasHookText");});function q2(e){if(!e||typeof e!="object")return null;let t=e,r=t.matcher;if(typeof r!="string")return null;let n=Dc(t);if(!n)return null;let o=typeof t.type=="string"&&Q2.includes(t.type)?t.type:void 0,i=typeof t.timeout=="number"&&Number.isFinite(t.timeout)?t.timeout:void 0,a=to(t)||void 0;return {matcher:r,command:n,...i!==void 0&&{timeout:i},...o&&{type:o},...a&&{prompt:a}}}async function bf(e){let t=await I(e);if(t===null)return null;if(!t.trim())return {};let r;try{r=parse(t);}catch{return null}if(!r||typeof r!="object")return null;let n={},o=r;for(let[i,a]of Object.entries(o)){if(!Array.isArray(a))continue;let l=[];for(let c of a){let m=q2(c);m&&l.push(m);}l.length>0&&(n[i]=l);}return n}var Q2,X_=d(()=>{b();gn();Q2=["command","prompt"];s(q2,"toHookEntry");s(bf,"parseHooks");});async function Af(e){let t=await I(e);if(t===null||!t.trim())return [];let r=t.split(/\r?\n/),n=[];for(let o of r){let i=o.trim();i===""||i.startsWith("#")||n.push(i);}return n}var Q_=d(()=>{b();s(Af,"parseIgnore");});async function Wt(e,t={}){let r=join(e,".agentsmesh"),n=await j(r)?r:e,[o,i,a,l,c,m,p,u]=await Promise.all([Di(join(n,"rules"),t),Ni(join(n,"commands"),t),vi(join(n,"agents"),t),Fi(join(n,"skills"),t),dn(join(n,"mcp.json")),wf(join(n,"permissions.yaml")),bf(join(n,"hooks.yaml")),Af(join(n,"ignore"))]);return {rules:o,commands:i,agents:a,skills:l,mcp:c,permissions:m,hooks:p,ignore:u}}var qa=d(()=>{jp();Up();Bp();Pc();Kp();Y_();X_();Q_();b();s(Wt,"loadCanonicalFiles");});function rw(e){return basename(e.source,".md")}function Nc(e,t){let r=new Map(e.rules.map(p=>[rw(p),p]));for(let p of t.rules)r.set(rw(p),p);let n=new Map(e.commands.map(p=>[p.name,p]));for(let p of t.commands)n.set(p.name,p);let o=new Map(e.agents.map(p=>[p.name,p]));for(let p of t.agents)o.set(p.name,p);let i=new Map(e.skills.map(p=>[p.name,p]));for(let p of t.skills)i.set(p.name,p);let a=eX(e.mcp,t.mcp),l=tX(e.permissions,t.permissions),c=rX(e.hooks,t.hooks),m=nX(e.ignore,t.ignore);return {rules:Array.from(r.values()),commands:Array.from(n.values()),agents:Array.from(o.values()),skills:Array.from(i.values()),mcp:a,permissions:l,hooks:c,ignore:m}}function eX(e,t){if(!e&&!t)return null;let r=e?.mcpServers??{},n=t?.mcpServers??{};return {mcpServers:{...r,...n}}}function tX(e,t){if(!e&&!t)return null;let r=q_(e?.allow??[],t?.allow??[]),n=q_(e?.deny??[],t?.deny??[]),o=q_(e?.ask??[],t?.ask??[]);return {allow:r,deny:n,ask:o}}function q_(e,t){let r=new Set(e),n=[...e];for(let o of t)r.has(o)||(r.add(o),n.push(o));return n}function rX(e,t){if(!e&&!t)return null;let r={},n=new Set([...Object.keys(e??{}),...Object.keys(t??{})]);for(let o of n){let i=t?.[o],a=e?.[o];r[o]=i!==void 0&&i.length>0?i:a??[];}return r}function nX(e,t){let r=new Set(e),n=[...e];for(let o of t)r.has(o)||(r.add(o),n.push(o));return n}var Z_=d(()=>{s(rw,"ruleSlug");s(Nc,"mergeCanonicalFiles");s(eX,"mergeMcp");s(tX,"mergePermissions");s(q_,"mergeUniqueStrings");s(rX,"mergeHooks");s(nX,"mergeIgnore");});function mX(e){return typeof e=="string"?e:e.level}function pX(e){return cX.includes(e)}function nw(e,t,r,n){let o=n[0]==="globalSupport",i=o&&typeof e.globalSupport?.scopeExtras=="function";for(let a of lX){let l=mX(t[a.feature]);if(l==="none")continue;let c=pX(a.feature),m=typeof e.generators[a.generator]=="function",p=c&&typeof e.emitScopedSettings=="function";if(m||p||c&&i)continue;let f=c?o?" or emitScopedSettings or globalSupport.scopeExtras":" or emitScopedSettings":"";r.addIssue({code:"custom",path:[...n,a.feature],message:`Capability "${a.feature}" is "${l}" but generators.${a.generator}${f} is missing.`});}}function Tf(e){return yX.parse(e)}var us,ow,oX,sX,sw,iX,aX,lX,cX,uX,dX,fX,gX,hX,yX,eS=d(()=>{us=z$1.union([z$1.enum(["native","embedded","partial","none"]),z$1.object({level:z$1.enum(["native","embedded","partial","none"]),flavor:z$1.string().optional()})]),ow=z$1.object({rules:us,additionalRules:us,commands:us,agents:us,skills:us,mcp:us,hooks:us,ignore:us,permissions:us}),oX=z$1.object({name:z$1.string(),generateRules:z$1.function(),importFrom:z$1.function(),generateCommands:z$1.function().optional(),generateAgents:z$1.function().optional(),generateSkills:z$1.function().optional(),generateMcp:z$1.function().optional(),generatePermissions:z$1.function().optional(),generateHooks:z$1.function().optional(),generateIgnore:z$1.function().optional(),lint:z$1.function().optional()}).passthrough(),sX=z$1.object({rulePath:z$1.function(),commandPath:z$1.function(),agentPath:z$1.function()}),sw=z$1.object({paths:sX}).passthrough(),iX=z$1.object({capabilities:ow,detectionPaths:z$1.array(z$1.string()),layout:sw,scopeExtras:z$1.function().optional()}).passthrough(),aX=["global","globalCapabilities","globalDetectionPaths","generateScopeExtras"],lX=[{feature:"commands",generator:"generateCommands"},{feature:"agents",generator:"generateAgents"},{feature:"skills",generator:"generateSkills"},{feature:"mcp",generator:"generateMcp"},{feature:"hooks",generator:"generateHooks"},{feature:"ignore",generator:"generateIgnore"},{feature:"permissions",generator:"generatePermissions"}],cX=["mcp","hooks","ignore","permissions"];s(mX,"capabilityLevel");s(pX,"canUseScopedSettings");s(nw,"validateCapabilityImplementations");uX=z$1.object({commandsToSkills:z$1.boolean().optional(),agentsToSkills:z$1.boolean().optional()}).strict(),dX=z$1.object({displayName:z$1.string().min(1),category:z$1.enum(["cli","ide","agent-platform"]),officialUrl:z$1.string().min(1),shortDescription:z$1.string().min(1)}).passthrough(),fX=z$1.discriminatedUnion("kind",[z$1.object({kind:z$1.literal("basename"),suffix:z$1.string().min(1)}),z$1.object({kind:z$1.literal("skillDir")}),z$1.object({kind:z$1.literal("firstSegment")})]),gX=z$1.object({pickPaths:z$1.array(z$1.object({prefix:z$1.string().min(1),feature:z$1.enum(["commands","rules","agents","skills"]),strategy:fX})).optional(),inferPick:z$1.function().optional(),dialectHints:z$1.array(z$1.object({frontmatterKey:z$1.string().min(1)})).optional()}).strict(),hX=z$1.object({id:z$1.string().regex(/^[a-z][a-z0-9-]*$/,"Target id must be lowercase with hyphens"),metadata:dX,generators:oX,capabilities:ow,emptyImportMessage:z$1.string(),lintRules:z$1.union([z$1.function(),z$1.null()]),project:sw,globalSupport:iX.optional(),buildImportPaths:z$1.function(),detectionPaths:z$1.array(z$1.string()),nativeInstall:gX.optional(),excludeFromStarterInit:z$1.boolean().optional(),conversionDefaults:uX.optional(),emitScopedSettings:z$1.function().optional(),mergeGeneratedOutputContent:z$1.function().optional(),postProcessHookOutputs:z$1.function().optional(),preservesManualActivation:z$1.boolean().optional()}).passthrough(),yX=hX.superRefine((e,t)=>{for(let r of aX)r in e&&t.addIssue({code:"custom",path:[r],message:`Use globalSupport instead of legacy field "${r}".`});nw(e,e.capabilities,t,["capabilities"]),e.globalSupport!==void 0&&nw(e,e.globalSupport.capabilities,t,["globalSupport","capabilities"]);});s(Tf,"validateDescriptor");});function iw(){if(tS)return tS;let e=Ne.filter(r=>r!==void 0&&typeof r.id=="string"),t=new Map(e.map(r=>[r.id,r]));return e.length===Ne.length&&(tS=t),t}function Pf(e){let t=Tf(e);xf.set(t.id,t);}function ne(e){return xf.get(e)??iw().get(e)}function Df(){return [...xf.values()]}function Nf(){return [...new Set([...iw().keys(),...xf.keys()])]}var xf,tS,ot=d(()=>{Te();eS();xf=new Map;s(iw,"builtinDescriptors");s(Pf,"registerTargetDescriptor");s(ne,"getDescriptor");s(Df,"getAllDescriptors");s(Nf,"getAllRegisteredDescriptorIds");});function aw(e,t){return ne(e)?.conversionDefaults?.[t]}function lw(e,t){if(e!==void 0)return typeof e=="boolean"?e:e[t]}function vc(e,t,r,n="project"){let o=e.conversions?.commands_to_skills?.[t],i=lw(o,n);if(i!==void 0)return i;let a=aw(t,"commandsToSkills");return a!==void 0?a:r??false}function ds(e,t,r,n="project"){let o=e.conversions?.agents_to_skills?.[t],i=lw(o,n);if(i!==void 0)return i;let a=aw(t,"agentsToSkills");return a!==void 0?a:r??false}var Wp=d(()=>{ot();s(aw,"builtinDefault");s(lw,"resolveConversionValue");s(vc,"shouldConvertCommandsToSkills");s(ds,"shouldConvertAgentsToSkills");});function yn(e,t){return t!==void 0?{level:e,flavor:t}:{level:e}}function hn(e){return typeof e=="string"?{level:e}:e}function rS(e){return {rules:hn(e.rules),additionalRules:hn(e.additionalRules),commands:hn(e.commands),agents:hn(e.agents),skills:hn(e.skills),mcp:hn(e.mcp),hooks:hn(e.hooks),ignore:hn(e.ignore),permissions:hn(e.permissions)}}var Za=d(()=>{s(yn,"cap");s(hn,"normalizeCapabilityValue");s(rS,"normalizeTargetCapabilities");});function cw(e){for(let t of Ne)if(t.sharedArtifacts){for(let[r,n]of Object.entries(t.sharedArtifacts))if(n==="owner"&&e.startsWith(r))return t.id}return null}function _X(e){let t=[];for(let n of e)if(n.sharedArtifacts)for(let[o,i]of Object.entries(n.sharedArtifacts))i==="owner"&&t.push({targetId:n.id,prefix:o});let r=[];for(let n=0;n<t.length;n++)for(let o=n+1;o<t.length;o++){let i=t[n],a=t[o];i===void 0||a===void 0||(i.prefix===a.prefix||i.prefix.startsWith(a.prefix)||a.prefix.startsWith(i.prefix))&&r.push({a:i,b:a});}return r}function mw(e){let t=_X(e);if(t.length===0)return;let r=t.map(({a:n,b:o})=>` - "${n.targetId}" owns "${n.prefix}" and "${o.targetId}" owns "${o.prefix}"`);throw new Error(`Shared-artifact ownership conflict: two targets claim the same or overlapping prefix.
|
|
17
17
|
`+r.join(`
|
|
18
18
|
`)+`
|
|
19
|
-
Resolve by changing one target's role to 'consumer' or by namespacing its prefix.`)}var nS=d(()=>{Te();s(
|
|
19
|
+
Resolve by changing one target's role to 'consumer' or by namespacing its prefix.`)}var nS=d(()=>{Te();s(cw,"ownerTargetIdForSharedPath");s(_X,"findSharedArtifactOwnershipConflicts");s(mw,"assertSharedArtifactOwnersUnique");});function SX(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):typeof e=="string"&&e.length>0?e.split(",").map(t=>t.trim()).filter(Boolean):[]}function Z(e){return `${Fc}${e}`}function Xe(e){let t={name:Z(e.name),description:e.description||void 0,"x-agentsmesh-kind":"command","x-agentsmesh-name":e.name,"x-agentsmesh-allowed-tools":e.allowedTools.length>0?e.allowedTools:void 0};return t.description===void 0&&delete t.description,t["x-agentsmesh-allowed-tools"]===void 0&&delete t["x-agentsmesh-allowed-tools"],x(t,e.body.trim()||"")}function vf(e,t){if(e["x-agentsmesh-kind"]!=="command")return null;let r=typeof e["x-agentsmesh-name"]=="string"?e["x-agentsmesh-name"]:"",n=t.startsWith(Fc)?t.slice(Fc.length):t.startsWith(Hp)?t.slice(Hp.length):"",o=(r||n).trim();return o?{name:o,description:typeof e.description=="string"?e.description:"",allowedTools:SX(e["x-agentsmesh-allowed-tools"])}:null}function Ff(e,t){return x({description:e.description,"allowed-tools":e.allowedTools},t.trim()||"")}var Fc,Hp,$e=d(()=>{U();Fc="am-command-",Hp="ab-command-";s(SX,"toStringArray");s(Z,"commandSkillDirName");s(Xe,"serializeCommandSkill");s(vf,"parseCommandSkillFrontmatter");s(Ff,"serializeImportedCommand");});function Mf(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):typeof e=="string"&&e.length>0?e.split(",").map(t=>t.trim()).filter(Boolean):[]}function RX(e){if(!e||typeof e!="object"||Array.isArray(e))return {};let t={};for(let[r,n]of Object.entries(e))Array.isArray(n)&&(t[r]=n.filter(o=>o!==null&&typeof o=="object"&&typeof o.matcher=="string"&&typeof o.command=="string"));return t}function V(e){return `${Mc}${e}`}function je(e){let t={name:V(e.name),description:e.description||void 0,"x-agentsmesh-kind":"agent","x-agentsmesh-name":e.name,"x-agentsmesh-tools":e.tools.length>0?e.tools:void 0,"x-agentsmesh-disallowed-tools":e.disallowedTools.length>0?e.disallowedTools:void 0,"x-agentsmesh-model":e.model||void 0,"x-agentsmesh-permission-mode":e.permissionMode||void 0,"x-agentsmesh-max-turns":e.maxTurns>0?e.maxTurns:void 0,"x-agentsmesh-mcp-servers":e.mcpServers.length>0?e.mcpServers:void 0,"x-agentsmesh-hooks":Object.keys(e.hooks).length>0?e.hooks:void 0,"x-agentsmesh-skills":e.skills.length>0?e.skills:void 0,"x-agentsmesh-memory":e.memory||void 0};return Object.keys(t).forEach(r=>{t[r]===void 0&&delete t[r];}),x(t,e.body.trim()||"")}function Gc(e,t){if(e["x-agentsmesh-kind"]!=="agent")return null;let r=typeof e["x-agentsmesh-name"]=="string"?e["x-agentsmesh-name"]:"",n=t.startsWith(Mc)?t.slice(Mc.length):t.startsWith(zp)?t.slice(zp.length):"",o=(r||n).trim();return o?{name:o,description:typeof e.description=="string"?e.description:"",tools:Mf(e["x-agentsmesh-tools"]),disallowedTools:Mf(e["x-agentsmesh-disallowed-tools"]),model:typeof e["x-agentsmesh-model"]=="string"?e["x-agentsmesh-model"]:"",permissionMode:typeof e["x-agentsmesh-permission-mode"]=="string"?e["x-agentsmesh-permission-mode"]:"",maxTurns:typeof e["x-agentsmesh-max-turns"]=="number"?e["x-agentsmesh-max-turns"]:Number(e["x-agentsmesh-max-turns"]??0),mcpServers:Mf(e["x-agentsmesh-mcp-servers"]),hooks:RX(e["x-agentsmesh-hooks"]),skills:Mf(e["x-agentsmesh-skills"]),memory:typeof e["x-agentsmesh-memory"]=="string"?e["x-agentsmesh-memory"]:""}:null}function Mi(e,t){let r={name:e.name,description:e.description,tools:e.tools,disallowedTools:e.disallowedTools.length>0?e.disallowedTools:void 0,model:e.model||void 0,permissionMode:e.permissionMode||void 0,maxTurns:e.maxTurns>0?e.maxTurns:void 0,mcpServers:e.mcpServers.length>0?e.mcpServers:void 0,hooks:Object.keys(e.hooks).length>0?e.hooks:void 0,skills:e.skills.length>0?e.skills:void 0,memory:e.memory||void 0};return Object.keys(r).forEach(n=>{r[n]===void 0&&delete r[n];}),x(r,t.trim()||"")}var Mc,zp,Se=d(()=>{U();Mc="am-agent-",zp="ab-agent-";s(Mf,"toStringArray");s(RX,"toHooks");s(V,"projectedAgentSkillDirName");s(je,"serializeProjectedAgentSkill");s(Gc,"parseProjectedAgentSkillFrontmatter");s(Mi,"serializeImportedAgent");});function Vp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function gw(e,t){return new RegExp(`${Vp(e)}[\\s\\S]*?${Vp(t)}`,"g")}function Yp(e,t,r){return e.replace(gw(t,r),"").trim()}function LX(e){if(e.indexOf("---")!==0)return {prefix:"",body:e.trim()};let t=e.indexOf("---",3);return t===-1?{prefix:"",body:e.trim()}:{prefix:e.slice(0,t+3),body:e.slice(t+3).trim()}}function jf(e,t){let{prefix:r,body:n}=LX(e),o=n?`${t}
|
|
20
20
|
|
|
21
21
|
${n}`:t;return r?`${r}
|
|
22
22
|
|
|
23
|
-
${o}`:o}function EX(e){let t=e.replace(/\\/g,"/"),r=t.lastIndexOf(".agentsmesh/");return r>=0?t.slice(r+12):t.startsWith("rules/")?t:join("rules",basename(t)).replace(/\\/g,"/")}function CX(e){return {source:EX(e.source),description:e.description,globs:e.globs,targets:e.targets}}function OX(e){return `${
|
|
23
|
+
${o}`:o}function EX(e){let t=e.replace(/\\/g,"/"),r=t.lastIndexOf(".agentsmesh/");return r>=0?t.slice(r+12):t.startsWith("rules/")?t:join("rules",basename(t)).replace(/\\/g,"/")}function CX(e){return {source:EX(e.source),description:e.description,globs:e.globs,targets:e.targets}}function OX(e){return `${dw}${JSON.stringify(CX(e))}${fw}`}function wX(e){let t=[OX(e)];return e.description.trim()&&t.push(`## ${e.description.trim()}`,""),t.push(e.body.trim(),uw),t.filter(r=>r.length>0).join(`
|
|
24
24
|
`)}function bX(e){return e.length===0?"":[Gf,...e.map(wX),$f].join(`
|
|
25
25
|
`)}function le(e,t){let r=bX(t),n=Yp(e,Gf,$f);return r?n?`${n}
|
|
26
26
|
|
|
27
|
-
${r}`:r:n}function
|
|
27
|
+
${r}`:r:n}function pw(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function AX(e){try{let t=JSON.parse(e);if(!t||typeof t!="object"||Array.isArray(t))return null;let r=t;return typeof r.source!="string"||!r.source.startsWith("rules/")?null:{source:r.source,description:typeof r.description=="string"?r.description:"",globs:pw(r.globs),targets:pw(r.targets)}}catch{return null}}function TX(e,t){let r=e.trim();if(!t.trim())return r;let n=`## ${t.trim()}`;return r.startsWith(n)?r.slice(n.length).trim():r}function hw(e){let t=[],r=gw(Gf,$f);return {rootContent:e.replace(r,o=>{let i=o.replace(Gf,"").replace($f,"").trim(),a=new RegExp(`${Vp(dw)}([\\s\\S]*?)${Vp(fw)}([\\s\\S]*?)${Vp(uw)}`,"g");for(let l of i.matchAll(a)){let c=l[1],m=l[2];if(c===void 0||m===void 0)continue;let p=AX(c);p&&t.push({...p,body:TX(m,p.description)});}return ""}).trim(),rules:t}}var oS,sS,Jp,iS,Gf,$f,uw,dw,fw,Be=d(()=>{oS="<!-- agentsmesh:root-generation-contract:start -->",sS="<!-- agentsmesh:root-generation-contract:end -->",Jp="<!-- agentsmesh:lessons-contract:start -->",iS="<!-- agentsmesh:lessons-contract:end -->",Gf="<!-- agentsmesh:embedded-rules:start -->",$f="<!-- agentsmesh:embedded-rules:end -->",uw="<!-- agentsmesh:embedded-rule:end -->",dw="<!-- agentsmesh:embedded-rule:start ",fw=" -->";s(Vp,"escapeRegExp");s(gw,"managedBlockPattern");s(Yp,"stripManagedBlock");s(LX,"splitFrontmatterPrefix");s(jf,"insertAtBodyTop");s(EX,"ruleSource");s(CX,"markerForRule");s(OX,"embeddedRuleStart");s(wX,"renderRule");s(bX,"renderEmbeddedRulesBlock");s(le,"appendEmbeddedRulesBlock");s(pw,"toStringArray");s(AX,"parseMarker");s(TX,"stripGeneratedHeading");s(hw,"extractEmbeddedRules");});function _w(e){let t=lS(e);return jf(t,yw)}function lS(e){let t=Yp(e,oS,sS);t=t.replace(`
|
|
28
28
|
|
|
29
|
-
${
|
|
29
|
+
${yw}`,"");for(let r of ZX)t=t.replace(`
|
|
30
30
|
|
|
31
|
-
${r}`,"");return t.trim()}var aS,xX,PX,DX,NX,vX,FX,MX,GX,$X,jX,UX,BX,KX,WX,HX,zX,VX,JX,YX,XX,QX,qX,
|
|
31
|
+
${r}`,"");return t.trim()}var aS,xX,PX,DX,NX,vX,FX,MX,GX,$X,jX,UX,BX,KX,WX,HX,zX,VX,JX,YX,XX,QX,qX,yw,ZX,cS=d(()=>{Be();aS="AgentsMesh is a config sync library for AI coding tools. The only canonical source of truth is `.agentsmesh/`; files emitted into target formats such as `AGENTS.md`, `.claude/`, `.cursor/`, `.junie/`, and similar directories are generated artifacts. When making changes, edit canonical config first, then regenerate and verify the target outputs. Preserve the library's bidirectional contract: import native tool config into canonical form, generate back to target-specific layouts, and keep projected or embedded features round-trippable rather than treating them as plain text exports.",xX="AgentsMesh is a config sync library for AI coding tools. The only canonical source of truth is the `.agentsmesh` directory at the project root; files emitted into target formats such as `AGENTS.md`, `.claude/`, `.cursor/`, `.junie/`, and similar directories are generated artifacts. When making changes, edit canonical config first, then regenerate and verify the target outputs. Preserve the library's bidirectional contract: import native tool config into canonical form, generate back to target-specific layouts, and keep projected or embedded features round-trippable rather than treating them as plain text exports.",PX="AgentsMesh syncs AI coding tool configuration from a single canonical `.agentsmesh` directory. All target-specific files (`.claude/`, `.cursor/`, `AGENTS.md`, etc.) are generated artifacts \u2014 edit canonical config first, then regenerate. The import/generate contract is bidirectional and lossless: embedded or projected features round-trip without data loss.",DX="Create agents, skills, commands, rules, hooks, and MCP in `.agentsmesh`, then run `agentsmesh generate` to sync each tool's native files. Edit `.agentsmesh`, not generated outputs.",NX="Use Claude-style Markdown in `.agentsmesh`: `agents/*.md`, `commands/*.md`, and `skills/*/SKILL.md`; keep rules in `rules/*.md`, hooks in `hooks.yaml`, MCP in `mcp.json`, permissions in `permissions.yaml`, and ignore patterns in `ignore`, then run `agentsmesh generate`.",vX="Create canonical files in `.agentsmesh`: `rules/_root.md` and `rules/*.md` are Markdown rules; `commands/*.md`, `agents/*.md`, and `skills/*/SKILL.md` plus supporting files use Claude-style frontmatter Markdown; `mcp.json` is MCP JSON; `hooks.yaml` and `permissions.yaml` are YAML; `ignore` is gitignore-style text. Then run `agentsmesh generate`.",FX="`.agentsmesh` is the only folder you edit or add these files in: `rules/_root.md` and `rules/*.md` are Markdown rules; `commands/*.md`, `agents/*.md`, and `skills/*/SKILL.md` plus supporting files use Claude-style frontmatter Markdown; `mcp.json` is MCP JSON; `hooks.yaml` and `permissions.yaml` are YAML; `ignore` is gitignore-style text. Do not edit generated tool files; run `agentsmesh generate`.",MX="`agentsmesh.yaml` selects targets/features (`agentsmesh.local.yaml` overrides locally), and `.agentsmesh` is the only place to add or edit canonical items: `rules/_root.md`, `rules/*.md`, `commands/*.md`, `agents/*.md`, `skills/*/SKILL.md` plus supporting files, `mcp.json`, `hooks.yaml`, `permissions.yaml`, and `ignore`; if missing run `agentsmesh init`, use `agentsmesh import --from <tool>` for native configs, `agentsmesh install <source>` or `install --sync` for reusable packs, then run `agentsmesh generate`. Use `diff`, `lint`, `check`, `watch`, `matrix`, and `merge` as needed; never edit generated tool files.",GX="`agentsmesh.yaml` selects targets/features (`agentsmesh.local.yaml` overrides locally), and `.agentsmesh` is the only place to add or edit canonical items: `rules/_root.md`, `rules/*.md`, `commands/*.md`, `agents/*.md`, `skills/*/SKILL.md` plus supporting files, `mcp.json`, `hooks.yaml`, `permissions.yaml`, and `ignore`; if missing run `agentsmesh init`, use `agentsmesh import --from <tool>` for native configs, `agentsmesh install <source>` or `install --sync` for reusable packs, then run `agentsmesh generate`. Use `diff`, `lint`, `check`, `watch`, `matrix`, `merge`, and `refresh` as needed; never edit generated tool files.",$X="**MUST follow when changing any rule, agent, command, skill, hook, MCP server, permission, or ignore pattern.** `agentsmesh.yaml` selects targets/features (`agentsmesh.local.yaml` overrides locally), and `.agentsmesh` is the only place to add or edit canonical items: `rules/_root.md`, `rules/*.md`, `commands/*.md`, `agents/*.md`, `skills/*/SKILL.md` plus supporting files, `mcp.json`, `hooks.yaml`, `permissions.yaml`, and `ignore`; if missing run `agentsmesh init`, use `agentsmesh import --from <tool>` for native configs, `agentsmesh install <source>` or `install --sync` for reusable packs, then run `agentsmesh generate`. Use `diff`, `lint`, `check`, `watch`, `matrix`, `merge`, and `refresh` as needed; never edit generated tool files.",jX="**NEVER edit generated files** (`.claude/`, `.cursor/`, `AGENTS.md`, `.github/copilot-instructions.md`, and similar target outputs) \u2014 `agentsmesh generate` overwrites them. **All changes MUST go through `.agentsmesh` first**: edit `rules/_root.md`, `rules/*.md`, `commands/*.md`, `agents/*.md`, `skills/*/SKILL.md` plus supporting files, `mcp.json`, `hooks.yaml`, `permissions.yaml`, and `ignore`; `agentsmesh.yaml` selects targets/features (`agentsmesh.local.yaml` overrides locally); if missing run `agentsmesh init`, use `agentsmesh import --from <tool>` for native configs, `agentsmesh install <source>` or `install --sync` for reusable packs, then run `agentsmesh generate`. Use `diff`, `lint`, `check`, `watch`, `matrix`, `merge`, and `refresh` as needed.",UX=aS,BX=`## Project-Specific Rules
|
|
32
32
|
|
|
33
33
|
${aS}`,KX=`## AgentsMesh Generation Contract
|
|
34
34
|
|
|
@@ -50,129 +50,129 @@ ${MX}`,QX=`## AgentsMesh Generation Contract
|
|
|
50
50
|
|
|
51
51
|
${GX}`,qX=`## AgentsMesh Generation Contract
|
|
52
52
|
|
|
53
|
-
${$X}`,
|
|
53
|
+
${$X}`,yw=`${oS}
|
|
54
54
|
## AgentsMesh Generation Contract
|
|
55
55
|
|
|
56
56
|
${jX}
|
|
57
|
-
${sS}`,ZX=[qX,QX,XX,YX,JX,VX,zX,HX,WX,KX,BX,UX];s(
|
|
58
|
-
`)}]}var
|
|
59
|
-
`)break;i+=a,o++;}return i===r}function
|
|
57
|
+
${sS}`,ZX=[qX,QX,XX,YX,JX,VX,zX,HX,WX,KX,BX,UX];s(_w,"appendAgentsmeshRootInstructionParagraph");s(lS,"stripAgentsmeshRootInstructionParagraph");});function Nt(e){return Array.isArray(e)?e.filter(t=>typeof t=="string").map(t=>t.trim()).filter(Boolean):typeof e=="string"?e.split(",").map(t=>t.trim()).filter(Boolean):[]}async function $c(e){let t=await I(e);return t?T(t).frontmatter:{}}function ut(e,t){return typeof e[t]=="string"?e[t]:void 0}function mS(e){let t=e.hooks;return t&&typeof t=="object"&&!Array.isArray(t)?t:void 0}function eQ(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function tQ(e,t){let r=basename(e,".md")==="_root",n={...t};return delete n.root,{root:r,...n}}async function z(e,t,r){let n=await $c(e),o=basename(e,".md")==="_root"?lS(r):r.trim(),i=tQ(e,eQ({...n,...t})),a={root:i.root===true,description:typeof i.description=="string"?i.description:""};a.root===false&&(a.globs=Nt(i.globs));for(let[l,c]of Object.entries(i))l==="root"||l==="description"||l==="globs"||c===void 0||(a[l]=c);return x(a,o||"")}var pS=d(()=>{b();U();cS();s(Nt,"toStringArray");s($c,"readExistingFrontmatter");s(ut,"readString");s(mS,"readHooks");s(eQ,"pruneUndefined");s(tQ,"serializeCanonicalRuleFrontmatter");s(z,"serializeImportedRuleWithFallback");});async function Ce(e,t,r){let n=await $c(e),o=(()=>{let l=Nt(n.allowedTools);return l.length>0?l:Nt(n["allowed-tools"])})(),i=t.hasDescription?t.description??"":typeof n.description=="string"?n.description:"",a=t.hasAllowedTools?t.allowedTools??[]:o;return x({description:i,"allowed-tools":a},r.trim()||"")}async function ro(e,t,r){let n=await $c(e),o=basename(dirname(e)),i=ut(t,"name")??ut(n,"name")??o,a=ut(t,"description")??ut(n,"description")??"";return x({name:i,description:a},r.trim()||"")}async function xe(e,t,r){let n=await $c(e),o=Object.prototype.hasOwnProperty.call(t,"tools")?Nt(t.tools):(()=>{let y=Nt(n.tools);return y.length>0?y:[]})(),i=Object.prototype.hasOwnProperty.call(t,"disallowedTools")?Nt(t.disallowedTools):Object.prototype.hasOwnProperty.call(t,"disallowed-tools")?Nt(t["disallowed-tools"]):Nt(n.disallowedTools),a=Object.prototype.hasOwnProperty.call(t,"mcpServers")?Nt(t.mcpServers):Object.prototype.hasOwnProperty.call(t,"mcp-servers")?Nt(t["mcp-servers"]):Nt(n.mcpServers),l=Object.prototype.hasOwnProperty.call(t,"skills")?Nt(t.skills):Nt(n.skills),c=t.maxTurns??t["max-turns"]??n.maxTurns,m=typeof c=="number"?c:Number(c??0),p=mS(t)??mS(n),u={name:ut(t,"name")??ut(n,"name")??basename(e,".md"),description:ut(t,"description")??ut(n,"description")??"",tools:o};i.length>0&&(u.disallowedTools=i);let f=ut(t,"model")??ut(n,"model");f&&(u.model=f);let g=ut(t,"permissionMode")??ut(t,"permission-mode")??ut(n,"permissionMode")??ut(n,"permission-mode");g&&(u.permissionMode=g),Number.isInteger(m)&&m>0&&(u.maxTurns=m),a.length>0&&(u.mcpServers=a),p&&Object.keys(p).length>0&&(u.hooks=p),l.length>0&&(u.skills=l);let h=ut(t,"memory")??ut(n,"memory");return h&&(u.memory=h),x(u,r.trim()||"")}var Iw=d(()=>{U();pS();s(Ce,"serializeImportedCommandWithFallback");s(ro,"serializeImportedSkillWithFallback");s(xe,"serializeImportedAgentWithFallback");});var de=d(()=>{pS();Iw();});function Uf(e){let t=e.split("/").filter(Boolean);return t.length===0||t.some(n=>n.startsWith("."))?false:!t.join("/").startsWith("tests/e2e/fixtures/")}async function no(e){await rm$1(e,{recursive:true,force:true});}var Xp=d(()=>{s(Uf,"shouldImportScopedAgentsRule");s(no,"removePathIfExists");});function ae(e,t){let r=[];for(let n of e.skills){let o={name:n.name,description:n.description||void 0};o.description===void 0&&delete o.description,r.push({path:`${t}/${n.name}/SKILL.md`,content:x(o,n.body.trim()||"")});for(let i of n.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");r.push({path:`${t}/${n.name}/${a}`,content:i.content});}}return r}async function oe(e,t,r,n,o){let i=await readdir(join(e,t),{encoding:"utf8",withFileTypes:true}).catch(()=>null);if(i!==null)for(let a of i){if(!a.isDirectory())continue;let l=join(e,t,a.name),c=join(l,"SKILL.md"),m=await I(c);if(m===null)continue;let p=join(e,Qp,a.name),u=join(p,"SKILL.md"),{frontmatter:f,body:g}=T(o(m,c,u)),h=vf(f,a.name);if(h){await no(join(e,Qp,a.name));let k=join(e,kw);await O(k);let w=join(k,`${h.name}.md`);await L(w,Ff(h,o(g,c,w))),n.push({fromTool:r,fromPath:c,toPath:`${kw}/${h.name}.md`,feature:"commands"});continue}let y=Gc(f,a.name);if(y){await no(join(e,Qp,a.name));let k=join(e,Lw);await O(k);let w=join(k,`${y.name}.md`);await L(w,Mi(y,o(g,c,w))),n.push({fromTool:r,fromPath:c,toPath:`${Lw}/${y.name}.md`,feature:"agents"});continue}let _=await ro(u,{...f,name:a.name},g);await O(p),await L(u,_),n.push({fromTool:r,fromPath:c,toPath:`${Qp}/${a.name}/SKILL.md`,feature:"skills"});let R=await B(l);for(let k of R){if(k===c)continue;let w=relative(l,k).replace(/\\/g,"/"),D=await I(k);if(D===null)continue;let v=join(p,w);await O(dirname(v)),await L(v,o(D,k,v)),n.push({fromTool:r,fromPath:k,toPath:`${Qp}/${a.name}/${w}`,feature:"skills"});}}}var Qp,kw,Lw,ie=d(()=>{b();U();de();Se();$e();Xp();Qp=".agentsmesh/skills",kw=".agentsmesh/commands",Lw=".agentsmesh/agents";s(ae,"generateEmbeddedSkills");s(oe,"importEmbeddedSkills");});var oo,Ht,kt,fs,jc,gs,Ar,el,Ew,Cw,Uc=d(()=>{oo="aider",Ht="CONVENTIONS.md",kt=".aider/skills",fs=".aiderignore",jc=".aider.conf.yml",gs="CONVENTIONS.md",Ar=".aider/skills",el=".aiderignore",Ew=".agentsmesh/rules",Cw=".agentsmesh/ignore";});function Ow(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(oo)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Ht,content:o},{path:jc,content:stringify({read:[Ht]})}]:[]}function ww(e){return ae(e,kt)}function bw(e){return e.commands.map(t=>({path:`${kt}/${Z(t.name)}/SKILL.md`,content:Xe(t)}))}function Aw(e){return e.agents.map(t=>({path:`${kt}/${V(t.name)}/SKILL.md`,content:je(t)}))}function Tw(e){return e.ignore.length===0?[]:[{path:fs,content:e.ignore.join(`
|
|
58
|
+
`)}]}var xw=d(()=>{ie();Be();Se();$e();Uc();s(Ow,"generateRules");s(ww,"generateSkills");s(bw,"generateCommands");s(Aw,"generateAgents");s(Tw,"generateIgnore");});function ce(e){return e.includes("\\")||_n.test(e)?win32:posix}function Ke(e){return e.replace(/\\/g,"/")}function Q(e,t){let r=ce(e),n=r.normalize(r===win32?t.replace(/\//g,"\\"):Ke(t));return n.endsWith(r.sep)&&n.length>1?n.slice(0,-1):n}function Dw(e,t){return ce(e).isAbsolute(t)||_n.test(t)}function Bc(e){let t=e,r="";for(;cQ.test(t);)r=t.at(-1)+r,t=t.slice(0,-1);return {candidate:t,suffix:r}}function Nw(e,t){let r=ce(t),n=e.replace(/^(\.\.\/)+/,"").replace(/^\.\//,"");return n&&n!==e?Q(t,r.join(t,n)):null}var _n,cQ,Lt=d(()=>{_n=/^[A-Za-z]:[\\/]/,cQ=/[.!?:;]+$/;s(ce,"pathApi");s(Ke,"normalizeSeparators");s(Q,"normalizeForProject");s(Dw,"isAbsoluteForProject");s(Bc,"stripTrailingPunctuation");s(Nw,"rootFallbackPath");});async function vw(e,t,r="project"){let n=new Map,o=ne(e);return o&&await o.buildImportPaths(n,t,r),n}var Fw=d(()=>{ot();s(vw,"buildImportReferenceMap");});function uQ(e){let t=[e.project,e.globalSupport?.layout].filter(o=>o!==void 0),r=[...e.detectionPaths,...t.flatMap(o=>o.managedOutputs?.dirs??[]),...t.flatMap(o=>o.managedOutputs?.files??[])],n=new Set;for(let o of r){let i=o.split("/")[0];i&&i.startsWith(".")&&i.length>1&&n.add(`${i}/`);}return n}function dQ(){let e=new Set([".agentsmesh/"]);for(let t of Ne)for(let r of uQ(t))e.add(r);return Array.from(e)}function fQ(){let e=new Set([...dQ(),...uS.rootRelativePrefixes]),t=new Set([...pQ,...uS.meshRootSegments]);return {protectedSchemes:[...mQ,...uS.protectedSchemes],rootRelativePrefixes:Array.from(e),meshRootSegments:t}}function Bf(){return dS||(dS=fQ()),dS}var mQ,pQ,uS,dS,Mw=d(()=>{Te();mQ=[/\b[A-Za-z][A-Za-z0-9+.-]+:[^\s<>()\]]+/g,/\b[\w.-]+@[\w.-]+:[^\s<>()\]]+/g,/\b[\w.+-]+@[\w.-]+\.[A-Za-z]{2,}\b/g,/\/\/[A-Za-z0-9][\w.-]*\.[A-Za-z]{2,}[^\s<>()\]]*/g],pQ=new Set(["skills","rules","commands","agents","packs"]),uS={protectedSchemes:[],rootRelativePrefixes:[],meshRootSegments:[]};s(uQ,"topLevelDotfilePrefixes");s(dQ,"buildDefaultRootRelativePrefixes");s(fQ,"rebuild");s(Bf,"getLinkFormatRegistry");});function Sn(e){let t=Ke(e);return Bf().rootRelativePrefixes.some(r=>t.startsWith(r))}function hQ(e){let t=Ke(e).replace(/^\.\//,"");if(t.startsWith("../")||t.startsWith("/")||_n.test(t)||/^[a-zA-Z]:/.test(t)||Sn(t))return false;let r=t.split("/").filter(n=>n.length>0)[0];return r!==void 0&&Bf().meshRootSegments.has(r)}function qp(e,t,r){let n=ce(t),o=Q(t,t),i=Q(t,r),a=Ke(e);if(_n.test(e)){let l=Q(t,e);return n===win32||l.startsWith(`${o}${n.sep}`)?[l]:[l]}if(n.isAbsolute(e)){let l=Q(t,e);return l.startsWith(o)||existsSync(e)?[l]:[Q(t,n.join(t,e))]}if(a.startsWith("./")||a.startsWith("../")){let l=Q(t,n.join(n.dirname(i),a)),c=Nw(a,o);return c&&c!==l?[l,c]:[l]}if(Sn(a))return [Q(t,n.join(o,a))];if(a.includes("/")){let l=Q(t,n.join(o,".agentsmesh")),c=hQ(a)?Q(t,n.join(l,a)):null,m=Q(t,n.join(o,a)),p=Q(t,n.join(n.dirname(i),a));return c!==null?[c,m,p]:[m,p]}return yQ.has(a)?[]:a.includes(".")?[Q(t,n.join(n.dirname(i),a))]:[]}function Zp(e,t){let r=[t];if(!Dw(e,t)||!existsSync(t))return r;try{let n=[realpathSync(t),realpathSync.native(t)];for(let o of n)o!==t&&!r.includes(o)&&r.push(o);}catch{}return r}function Uw(e,t,r){let n=t>0?e.at(t-1):"",o=r<e.length?e.at(r):"";return n==="*"||o==="*"}function Kf(e){let t=[];for(let r of Bf().protectedSchemes){let n=r.flags.includes("g")?r:new RegExp(r.source,`${r.flags}g`);for(let o of e.matchAll(n))t.push([o.index??0,(o.index??0)+o[0].length]);}for(let r of e.matchAll(_Q))t.push([r.index??0,(r.index??0)+r[0].length]);for(let r of e.matchAll(SQ))t.push([r.index??0,(r.index??0)+r[0].length]);for(let r of e.matchAll(RQ))t.push([r.index??0,(r.index??0)+r[0].length]);return t}var yQ,_Q,SQ,RQ,jw,Kc,Gi=d(()=>{Lt();Mw();s(Sn,"isRootRelativePathToken");s(hQ,"isMeshRootRelativePathToken");yQ=new Set(["AGENTS.md","CLAUDE.md","GEMINI.md","codex.md",".windsurfrules",".cursorrules"]),_Q=/^(?:```|~~~)[^\n]*\n[\s\S]*?^(?:```|~~~)/gm,SQ=/<!-- agentsmesh:root-generation-contract:start -->[\s\S]*?<!-- agentsmesh:root-generation-contract:end -->/g,RQ=/<!-- agentsmesh:embedded-rules:start -->[\s\S]*?<!-- agentsmesh:embedded-rules:end -->/g,jw=/(?:\.\.[\\/]|\.\/|\.\\|\/[A-Za-z0-9._-]|[A-Za-z]:[\\/][A-Za-z0-9._-]|\.agentsmesh[\\/]|\.claude[\\/]|\.cursor[\\/]|\.github[\\/]|\.continue[\\/]|\.junie[\\/]|\.kiro[\\/]|\.gemini[\\/]|\.clinerules[\\/]|\.cline[\\/]|\.codex[\\/]|\.agents[\\/]|\.windsurf[\\/]|\.roo[\\/]|(?:[A-Za-z0-9._-]+[\\/])+|[A-Za-z0-9._-]+\.[A-Za-z0-9._-]+)[A-Za-z0-9._@%+~:\\/-]*/g,Kc=/(?::(\d+)){1,2}$/;s(qp,"resolveProjectPath");s(Zp,"expandResolvedPaths");s(Uw,"isGlobAdjacent");s(Kf,"protectedRanges");});function IQ(e){return e===void 0||e.role==="inline-code"||e.role==="bracketed"||e.role==="quoted"||e.role==="at-prefix"||e.role==="bracket-label"||e.role==="bare-prose"}function Bw(e){return IQ(e.tokenContext)}function fS(e,t){let r=ce(e),n=Q(e,e),o=Q(e,t);if(o===n)return true;let i=n.endsWith(r.sep)?n:`${n}${r.sep}`;return o.startsWith(i)}function Kw(e){let t=ce(e);return Q(e,t.join(e,".agentsmesh"))}function Rn(e,t){let r=ce(e),n=Kw(e),o=Q(e,t);if(o===n)return true;let i=n.endsWith(r.sep)?n:`${n}${r.sep}`;return o.startsWith(i)}function Ww(e,t,r){let n=ce(e),o=Kw(e),i=Q(e,t);if(!Rn(e,i))return null;let a=n.relative(o,i).replace(/\\/g,"/");return a.startsWith("..")||a.length===0?null:r&&!a.endsWith("/")?`${a}/`:a}function gS(e,t,r){let o=ce(e).relative(Q(e,e),Q(e,t)).replace(/\\/g,"/");if(o.startsWith(".."))return null;let i=o.length>0?o:".";return r&&!i.endsWith("/")?`${i}/`:i}function Wc(e,t,r){let n=gS(e,t,r);return n===null?null:{kind:"projectRoot",rest:n,text:n}}function hS(e,t,r,n,o){let i=ce(e),a=Q(e,e),l=Q(e,t),c=Q(e,r);if(!fS(e,c))return Wc(e,c,n)?.text??null;let m=Q(e,i.dirname(l));if(!fS(e,m)&&m!==a)return Wc(e,c,n)?.text??null;let p=i.relative(m,c).replace(/\\/g,"/");if(i.isAbsolute(p)||_n.test(p))return gS(e,c,n);let u=Q(e,i.join(m,p));return fS(e,u)?(p===""||p==="."?p=".":o.explicitCurrentDirLinks===true&&m!==a&&!p.startsWith("../")&&!p.startsWith("./")&&(p=`./${p}`),n&&!p.endsWith("/")?`${p}/`:p):gS(e,c,n)}var yS=d(()=>{Lt();s(IQ,"isReadingContext");s(Bw,"isReadingContextOptions");s(fS,"isUnderProjectRoot");s(Kw,"agentsMeshRoot");s(Rn,"isUnderAgentsMesh");s(Ww,"toAgentsMeshRootRelative");s(gS,"toProjectRootRelative");s(Wc,"toProjectRootReference");s(hS,"formatLinkPathForDestinationLegacy");});function Hw(e,t,r,n,o={}){let i=o.scope??"project",a=Q(e,r);if(Bw(o)&&Rn(e,t)&&Rn(e,a)){let m=ce(e),p=Q(e,e),u=m.relative(p,a).replace(/\\/g,"/");if(!u.startsWith("..")&&u.length>0)return n&&!u.endsWith("/")?`${u}/`:u}if(o.forceRelative)return hS(e,t,r,n,o);if(i==="global"&&!Rn(e,t))return Wc(e,a,n)?.text??null;let l=(()=>{if(Rn(e,a))return a;let m=o.logicalMeshSourceAbsolute;return m&&Rn(e,Q(e,m))?Q(e,m):null})();if(!l)return Wc(e,a,n)?.text??null;if(n||(o.pathIsDirectory?.(a)??false)){let m=Ww(e,l,n);return m!==null?m:Wc(e,l,n)?.text??null}return hS(e,t,r,n,o)}var zw=d(()=>{Gi();Lt();yS();yS();s(Hw,"formatLinkPathForDestination");});function Vw(e,t,r,n){let o=ce(t),i=Ke(e);if(!Sn(i))return null;let a=i.split("/").filter(m=>m.length>0);if(a.length<3)return null;let l=Q(t,r),c=o.dirname(l);for(let m=1;m<=a.length-1;m++){let p=a.slice(m).join("/"),u=Q(t,o.join(c,p));if(u!==l&&n(u))return u}return null}var Jw=d(()=>{Lt();Gi();s(Vw,"resolveByDestinationSuffixStrip");});function Yw(e){let t=null,r=false,n=null,o=null,i=null;for(let c of qp(e.candidate,e.projectRoot,e.sourceFile)){let m=null,p=null;for(let u of Zp(e.projectRoot,c)){let f=Q(e.projectRoot,u),g=Q(e.projectRoot,e.translatePath(f)),h=e.pathExists(f),y=e.pathExists(g);if(y&&g!==f){t=g,n=f,r=true;break}(h||y)&&m===null&&(m=g,p=f),t===null&&(t=g);}if(!r&&m!==null&&o===null&&(o=m,i=p),r)break}if(!r){let c=Vw(e.candidate,e.projectRoot,e.destinationFile,e.pathExists);c!==null&&(t=c,r=true);}!r&&o!==null&&(t=o,i!==null&&(n=i),r=true);let a=Ke(e.destinationFile),l=a.includes("/.agentsmesh/")||a.startsWith(".agentsmesh/");return !r&&t!==null&&Ke(e.rawToken).startsWith(".agentsmesh/")&&l&&(r=true),{translatedPath:t,resolvedBeforeTranslate:n,matchedPath:r}}var Xw=d(()=>{Lt();Gi();Jw();s(Yw,"resolveLinkTarget");});function Qw(e,t,r){return t>=2&&e[t-2]==="~"&&e[t-1]==="/"?true:t>=1&&e[t-1]==="~"&&r.startsWith("/")}function qw(e,t,r){if(t<=0||e[t-1]!=="(")return false;let n=t+r.length,o=e[n];return o!==")"&&o!=="#"&&o!=="?"&&o!==" "&&o!==" "?false:e[t-2]==="]"}function Zw(e){let t=Ke(e);return t.startsWith("./")||t.startsWith("../")?true:t.startsWith("/")||_n.test(t)||Sn(t)?false:t.includes("/")}var eb=d(()=>{Lt();Gi();s(Qw,"isTildeHomeRelativePathToken");s(qw,"isMarkdownLinkDestinationToken");s(Zw,"isRelativePathToken");});function kQ(e,t,r){let n=t+r.length;if(e[n]!=="]"||e[n+1]!=="(")return false;let o=n+2,i="";for(;o<e.length;){let a=e[o];if(a===")"||a==="#"||a==="?"||a===" "||a===" "||a===`
|
|
59
|
+
`)break;i+=a,o++;}return i===r}function tb(e,t,r){let n=e.lastIndexOf(`
|
|
60
60
|
`,t-1)+1,o=e.slice(n,t);if(!/^\s*\[[^\]\n]+\]:\s*<?\s*$/.test(o))return false;let i=r<e.length?e[r]:"";return i===""||i===`
|
|
61
|
-
`||i==="\r"||i===">"||i===" "||i===" "||i==='"'||i==="'"||i===":"||i==="#"||i==="?"}function
|
|
61
|
+
`||i==="\r"||i===">"||i===" "||i===" "||i==='"'||i==="'"||i===":"||i==="#"||i==="?"}function rb(e,t,r){let n=t>0?e[t-1]:"",o=r<e.length?e[r]:"";return n==="`"&&o==="`"?{role:"inline-code"}:tb(e,t,r)?{role:"markdown-link-dest"}:n==="<"&&o===">"?{role:"bracketed"}:n==="'"&&o==="'"||n==='"'&&o==='"'?{role:"quoted"}:n==="@"?{role:"at-prefix"}:n==="("&&e[t-2]==="]"?{role:"markdown-link-dest"}:n==="["&&o==="]"?{role:"bracket-label"}:{role:"bare-prose"}}function nb(e,t,r,n,o){if(t<0||r>e.length)return false;let{candidate:i}=Bc(n),a=i.replace(Kc,""),l=Ke(a),c=t+a.length,m=e[t-1],p=e[r];return tb(e,t,c)||m==="`"&&p==="`"?true:m==="'"&&p==="'"||m==='"'&&p==='"'?false:m==="<"&&p===">"?true:m==="["&&p==="]"?!(!o&&!Sn(l)&&kQ(e,t,n)):m==="@"?true:m==="("&&e[t-2]==="]"?p===")"||p==="#"||p==="?"||p===" "||p===" ":o?Sn(l)?true:l.includes("/")||l.includes("\\")?l.startsWith("./")||l.startsWith("../")?true:(l.split(/[\\/]/).filter(Boolean).at(-1)??"").includes("."):false:false}var ob=d(()=>{Lt();Gi();s(kQ,"markdownBracketLabelDuplicatesDestination");s(tb,"isMarkdownReferenceDefinitionDestination");s(rb,"getTokenContext");s(nb,"shouldRewritePathToken");});function Wf(e){let t=new Set,r=Kf(e.content);return {content:e.content.replace(jw,(o,i,a)=>{if(r.some(([be,tt])=>i>=be&&i<tt)||!nb(a,i,i+o.length,o,e.rewriteBarePathTokens===true)||Qw(a,i,o)||Uw(a,i,i+o.length))return o;let{candidate:l,suffix:c}=Bc(o);if(!l)return o;let m=Kc.exec(l),p=m?l.slice(0,m.index):l,u=m?m[0]:"";if(!p)return o;let f=rb(a,i,i+p.length);if(f.role!=="markdown-link-dest"&&_n.test(p))return o;let{translatedPath:g,resolvedBeforeTranslate:h,matchedPath:y}=Yw({candidate:p,rawToken:l,projectRoot:e.projectRoot,sourceFile:e.sourceFile,destinationFile:e.destinationFile,translatePath:e.translatePath,pathExists:e.pathExists}),_=h;if(!y||!g)return g&&t.add(g),o;let R=Ke(p),k=p.endsWith("/")||e.pathIsDirectory?.(g)===true;if(k&&!R.includes("/")&&!R.includes("\\"))return o;if(_===null){let be=Ke(l);if(be.startsWith("agentsmesh/")&&(be=`.${be}`),be.startsWith(".agentsmesh/")||be.includes("/.agentsmesh/")){let tt=ce(e.projectRoot),mt=Q(e.projectRoot,e.projectRoot),Rt=be.replace(/^\.\//,"");_=Q(e.projectRoot,tt.join(mt,Rt));}}let w=ce(e.projectRoot);if(e.scope==="global"){let be=Ke(l),tt=be.startsWith(".agentsmesh/")||be.includes("/.agentsmesh/"),mt=Sn(be)||Zw(be),Rt=_!==null&&Rn(e.projectRoot,_),bi=Rn(e.projectRoot,g);if(_===g&&!bi&&!Rt&&!tt){let wp=Ke(w.relative(e.projectRoot,Q(e.projectRoot,e.sourceFile))).split("/").filter(Boolean)[0]??"",Ap=(_!==null?Ke(w.relative(e.projectRoot,_)):"").split("/").filter(Boolean)[0]??"";if(wp.length>0&&wp===Ap)return o}if(!mt&&!tt&&!Rt&&!bi)return o}let D=Q(e.projectRoot,e.destinationFile),v=Q(e.projectRoot,g),K=Ke(w.relative(e.projectRoot,D)),ee=Ke(w.relative(e.projectRoot,v)),se=K.split("/").filter(Boolean)[0]??"",Y=ee.split("/").filter(Boolean)[0]??"",De=!Ke(p).startsWith(".agentsmesh/")&&!k&&se.length>0&&se===Y&&se.startsWith(".")&&se!==".agentsmesh"||f.role==="markdown-link-dest"||qw(a,i,p),Dt=Hw(e.projectRoot,e.destinationFile,g,p.endsWith("/"),{explicitCurrentDirLinks:e.explicitCurrentDirLinks===true||De,scope:e.scope??"project",pathIsDirectory:e.pathIsDirectory,logicalMeshSourceAbsolute:k?null:_,forceRelative:De,tokenContext:f,originalToken:p});return Dt?`${Dt}${u}${c}`:o}),missing:[...t]}}var _S=d(()=>{Lt();Gi();zw();Xw();eb();ob();s(Wf,"rewriteFileLinks");});function ib(e,t){let r=[e.normalize(t)];if(!existsSync(t))return r;try{let n=[realpathSync(t),realpathSync.native(t)];for(let o of n){let i=e.normalize(o);r.includes(i)||r.push(i);}}catch{}return r}async function H(e,t,r="project"){let n=ce(t),o=new Map,i=Array.from(new Set([e,...Ue]));for(let c of i){let m=await vw(c,t,r);for(let[p,u]of m.entries())o.set(p,u);}let a=new Map;for(let[c,m]of o.entries()){let p=n.normalize(n.join(t,m));for(let u of ib(n,n.join(t,c)))a.set(u,p);}let l=new Set;for(let c of new Set(o.values())){let m=n.normalize(n.join(t,c));l.add(m);for(let p of ib(n,m))l.add(n.normalize(p));}return (c,m,p)=>Wf({content:c,projectRoot:t,sourceFile:m,destinationFile:p,translatePath:s(u=>a.get(u)??u,"translatePath"),pathExists:s(u=>{let f=n.normalize(u);return a.has(u)||a.has(f)||existsSync(u)||l.has(f)},"pathExists"),explicitCurrentDirLinks:false,rewriteBarePathTokens:true,scope:r,pathIsDirectory:s(u=>{try{return statSync(u).isDirectory()}catch{return false}},"pathIsDirectory")}).content}var he=d(()=>{Lt();Fw();_S();pn();s(ib,"pathVariants");s(H,"createImportReferenceNormalizer");});async function Qe(e,t,r){let n=join(e,t),i={...await OQ(n),...r};await O(dirname(n)),await L(n,JSON.stringify({mcpServers:i},null,2));}async function OQ(e){let t=await I(e);if(t===null)return {};let r;try{r=JSON.parse(t);}catch{return {}}if(!r||typeof r!="object"||Array.isArray(r))return {};let n=r.mcpServers;if(!n||typeof n!="object"||Array.isArray(n))return {};let o={};for(let[i,a]of Object.entries(n))!a||typeof a!="object"||Array.isArray(a)||(o[i]=a);return o}var In=d(()=>{b();s(Qe,"writeMcpWithMerge");s(OQ,"readExistingServers");});function hs(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):typeof e=="string"?e?[e]:[]:[]}function Tr(e){return Array.isArray(e)?e.filter(t=>typeof t=="string").map(t=>t.trim()).filter(Boolean):typeof e=="string"?e.split(",").map(t=>t.trim()).filter(Boolean):[]}function st(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function zt(e){return !e||typeof e!="object"||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="string"))}var vt=d(()=>{s(hs,"toGlobsArray");s(Tr,"toToolsArray");s(st,"toStringArray");s(zt,"toStringRecord");});function AQ(e,t){return t.some(r=>e.endsWith(r))}async function Re(e){let r=(await B(e.srcDir)).filter(o=>AQ(o,e.extensions)),n=[];for(let o of r){let i=await I(o);if(!i)continue;let a=relative(e.srcDir,o).replace(/\\/g,"/"),l=await e.mapEntry({srcPath:o,relativePath:a,content:i,normalizeTo:s((c,m=i)=>e.normalize(m,o,c),"normalizeTo")});l&&(await O(dirname(l.destPath)),await L(l.destPath,l.content),n.push({fromTool:e.fromTool,fromPath:o,toPath:l.toPath,feature:l.feature}));}return n}var nr=d(()=>{b();s(AQ,"matchesExtension");s(Re,"importFileDirectory");});function lb(e){return typeof e=="string"?e:void 0}function TQ(e){for(let t of Object.keys(e))e[t]===void 0&&delete e[t];return e}function RS(e,t){return t?t(e):e}function xQ(e){return async t=>{let r=join(t.destDir,t.relativePath),{frontmatter:n,body:o}=T(t.normalizeTo(r)),i=RS(n,e.frontmatterRemap),a=TQ({root:false,description:lb(i.description),globs:Array.isArray(i.globs)?i.globs:void 0,...i});return {destPath:r,toPath:`${e.canonicalDir}/${t.relativePath}`,content:await z(r,a,o)}}}function PQ(e){return async t=>{let r=join(t.destDir,t.relativePath),{frontmatter:n,body:o}=T(t.normalizeTo(r)),i=RS(n,e.frontmatterRemap),a=await Ce(r,{hasDescription:true,description:lb(i.description),hasAllowedTools:true,allowedTools:st(i["allowed-tools"])},o);return {destPath:r,toPath:`${e.canonicalDir}/${t.relativePath}`,content:a}}}function DQ(e){return async t=>{let r=join(t.destDir,t.relativePath),{frontmatter:n,body:o}=T(t.normalizeTo(r)),i=RS(n,e.frontmatterRemap);return {destPath:r,toPath:`${e.canonicalDir}/${t.relativePath}`,content:await xe(r,i,o)}}}function cb(e){if(e.map)return e.map;switch(e.preset){case "rule":return xQ(e);case "command":return PQ(e);case "agent":return DQ(e);default:throw new Error(`ImportFeatureSpec for ${e.feature} (mode: ${e.mode}) needs a \`preset\` or \`map\``)}}var mb=d(()=>{U();de();vt();s(lb,"pickString");s(TQ,"pruneUndefined");s(RS,"applyRemap");s(xQ,"ruleMapper");s(PQ,"commandMapper");s(DQ,"agentMapper");s(cb,"resolveMapper");});function IS(e,t){return e?e[t]??[]:[]}var pb,ub=d(()=>{pb=["rules","commands","agents","skills","mcp","hooks","permissions","ignore"];s(IS,"resolveScopedSources");});async function MQ(e,t,r,n,o){if(!e.canonicalRootFilename)throw new Error(`singleFile spec for ${e.feature} must set canonicalRootFilename`);let i=join(r,e.canonicalDir);for(let a of t){let l=join(r,a),c=await I(l);if(c===null)continue;await O(i);let m=join(i,e.canonicalRootFilename),p=s(R=>o(c,l,R),"normalizeTo");if(e.map){let R;try{R=await e.map({absolutePath:l,relativePath:a,content:c,destDir:i,normalizeTo:p});}catch(k){let w=k instanceof Error?k.message:String(k);process.stderr.write(`\u26A0 skipping ${l}: ${w}
|
|
62
62
|
`);continue}if(!R)continue;return await L(R.destPath,R.content),[{fromTool:n,fromPath:l,toPath:R.toPath,feature:e.feature}]}let u=un(p(m),l);if(!u.ok){process.stderr.write(`\u26A0 skipping ${l}: ${u.error.message}
|
|
63
|
-
`);continue}let{frontmatter:f,body:g}=u.value,h=e.frontmatterRemap?e.frontmatterRemap(f):f,y=e.markAsRoot?{...h,root:true}:h,_=await z(m,y,g);return await L(m,_),[{fromTool:n,fromPath:l,toPath:`${e.canonicalDir}/${e.canonicalRootFilename}`,feature:e.feature}]}return []}async function GQ(e,t,r,n,o){let i=
|
|
64
|
-
`),null}return y?{destPath:y.destPath,toPath:y.toPath,feature:e.feature,content:y.content}:null},"mapEntry")});l.push(...p);}return l}function db(e){let t=e.canonicalFilename;return t.includes("/")||t.includes("\\")?t:posix.join(e.canonicalDir,t)}async function $Q(e,t,r,n){if(!e.canonicalFilename)throw new Error(`flatFile spec for ${e.feature} must set canonicalFilename`);let o=db(e);for(let i of t){let a=join(r,i),l=await I(a);if(l===null)continue;let c=join(r,o);return await O(dirname(c)),await L(c,l.trimEnd()),[{fromTool:n,fromPath:a,toPath:o,feature:e.feature}]}return []}function jQ(e,t="mcpServers"){let r;try{r=JSON.parse(e);}catch{return {}}if(!r||typeof r!="object")return {};let n=r[t];if(!n||typeof n!="object"||Array.isArray(n))return {};let o={};for(let[i,a]of Object.entries(n)){if(!a||typeof a!="object"||Array.isArray(a))continue;let l=a,c=typeof l.description=="string"?l.description:void 0;if(typeof l.command=="string"){o[i]={type:typeof l.type=="string"?l.type:"stdio",command:l.command,args:st(l.args),env:zt(l.env),description:c};continue}typeof l.url=="string"&&(o[i]={type:typeof l.type=="string"?l.type:"http",url:l.url,headers:zt(l.headers),env:zt(l.env),description:c});}return o}async function UQ(e,t,r,n){if(!e.canonicalFilename)throw new Error(`mcpJson spec for ${e.feature} must set canonicalFilename`);let o=db(e);for(let i of t){let a=join(r,i),l=await I(a);if(l===null)continue;let c=jQ(l,e.mcpServersKey);return Object.keys(c).length===0?[]:(await Qe(r,o,c),[{fromTool:n,fromPath:a,toPath:o,feature:e.feature}])}return []}function ub(e,t,r,n,o){switch(e.mode){case "singleFile":return MQ(e,t,r,n,o);case "directory":return GQ(e,t,r,n,o);case "flatFile":return $Q(e,t,r,n);case "mcpJson":return UQ(e,t,r,n)}}async function BQ(e,t,r,n,o){let i=IS(e.source,t),a=IS(e.fallbacks,t);if(i.length===0&&a.length===0)return [];if(i.length>0){let l=await ub(e,i,r,n,o);if(l.length>0)return l}return a.length>0?ub(e,a,r,n,o):[]}function KQ(e,t){let r=e[t];return r?Array.isArray(r)?r:[r]:[]}async function X(e,t,r,n){let o=e.importer;if(!o)return [];let i=n?.normalize??await H(e.id,t,r),a=[];for(let l of mb)for(let c of KQ(o,l))a.push(...await BQ(c,r,t,e.id,i));return a}var Ae=d(()=>{he();b();In();U();vt();de();nr();cb();cs();pb();s(MQ,"runSingleFile");s(GQ,"runDirectory");s(db,"resolveCanonicalFilePath");s($Q,"runFlatFile");s(jQ,"parseMcpJson");s(UQ,"runMcpJson");s(ub,"dispatchSpec");s(BQ,"runSpec");s(KQ,"specsForFeature");s(X,"runDescriptorImport");});async function fb(e,t={}){let r=t.scope??"project",n=[],o=await H(oo,e,r);return n.push(...await X(Hf,e,r,{normalize:o})),await oe(e,r==="global"?Ar:kt,oo,n,o),n}var gb=d(()=>{he();ie();Ae();jc();kS();s(fb,"importFromAider");});function WQ(e,t){return yb(t).some(n=>HQ(e,n))}function hb(e,t){return e.filter(r=>WQ(r,t))}function yb(e){let t=e.match(/^(.+)\{([^}]+)\}(.*)$/);if(!t)return [e];let[,r,n,o]=t;if(!n)return [e];let i=n.split(",").map(l=>l.trim()),a=[];for(let l of i)for(let c of yb(r+l+o))a.push(c);return a}function HQ(e,t){return zQ(t).test(e)}function zQ(e){let t=[],r=0;for(;r<e.length;){if(e.startsWith("**",r)){let i=e.slice(r+2);if(i.length===0&&t.length===0)t.push(".*");else if(t.push(i.startsWith("/")?"(?:[^/]+/)*":"(?:/[^/]+)*?"),i.startsWith("/")){r+=3;continue}r+=2;continue}if(e[r]==="*"){t.push("[^/]*"),r+=1;continue}if(e[r]==="?"){t.push("[^/]"),r+=1;continue}if(e[r]==="{"){t.push("(?:"),r+=1;continue}if(e[r]==="}"){t.push(")"),r+=1;continue}if(e[r]===","){t.push("|"),r+=1;continue}".^$+?()[]{}|\\".includes(e[r])?t.push("\\"+e[r]):t.push(e[r]),r+=1;}let n="^"+t.join("")+"$";return new RegExp(n)}var _b=d(()=>{s(WQ,"globMatch");s(hb,"globFilter");s(yb,"expandBraces");s(HQ,"matchOne");s(zQ,"globToRegex");});function J(e,t,r,n={}){let o=[],{rules:i}=e;if(i.length===0)return [];if(i.some(l=>l.root)||o.push({level:"error",file:relative(t,i[0].source),message:"Rules exist but no root rule (_root.md or root: true). Add a root rule."}),n.checkGlobMatches===false)return o;for(let l of i){if(l.globs.length===0)continue;let c=false;for(let m of l.globs)if(hb(r,m).length>0){c=true;break}c||o.push({level:"warning",file:relative(t,l.source),message:`globs "${l.globs.join(", ")}" match 0 files in project`});}return o}var Oe=d(()=>{_b();s(J,"validateRules");});function Rb(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:oo}))}var Ib=d(()=>{Oe();jc();s(Rb,"lintRules");});var zf,LS=d(()=>{zf=new Set(["UserPromptSubmit","PostToolUseFailure","SessionStart"]);});function M(e,t,r){return {level:"warning",file:e,target:t,message:r}}function VQ(e){return e.length===0?"":e.length===1?e[0]:e.length===2?`${e[0]} and ${e[1]}`:`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}function ji(e,t){if(!e)return [];let r=new Set(t);return Object.keys(e).filter(n=>!r.has(n)&&!zf.has(n))}function Ui(e,t,r,n){let o=n?.unsupportedBy??t,i=VQ(r);return M(".agentsmesh/hooks.yaml",t,`${e} is not supported by ${o}; only ${i} are projected.`)}var Ie=d(()=>{LS();s(M,"createWarning");s(VQ,"formatOxfordComma");s(ji,"unsupportedHookEventNames");s(Ui,"createUnsupportedHookWarning");});function kb(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[M(".agentsmesh/hooks.yaml","aider","Aider has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function Lb(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[M(".agentsmesh/permissions.yaml","aider","Aider has no permissions config; canonical permissions are not projected.")]}function Eb(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[M(".agentsmesh/mcp.json","aider","Aider has no MCP config file; canonical MCP servers are not projected.")]}var Cb=d(()=>{Ie();s(kb,"lintHooks");s(Lb,"lintPermissions");s(Eb,"lintMcp");});function E(e,t){return ce(e).relative(e,t).replace(/\\/g,"/")}async function C(e,t){return xi(ce(e).join(e,t)).catch(()=>[])}function wb(e,t,r){e.set(t,r),e.set(`${t}/`,`${r}/`);}function ZQ(e,t,r,n){let o=posix.dirname(t),i=posix.dirname(r);for(;o!==n&&o!==".";)wb(e,o,i),o=posix.dirname(o),i=posix.dirname(i);}function P(e,t,r,n){e.set(t,`${r}/${basename(t,n)}.md`);}function $(e,t,r){if(!t.startsWith(`${r}/`))return;let n=t.slice(r.length+1);if(!n)return;if(!n.includes("/")){if(!n.endsWith(".md")||basename(n)==="SKILL.md")return;let u=basename(n,".md");e.set(t,`${Ob}/${u}/SKILL.md`);return}let[o,...i]=n.split("/"),a=i.join("/");if(!o||!a)return;let l=o.startsWith(vc)?vc:o.startsWith(Hp)?Hp:null;if(l&&a==="SKILL.md"){e.set(t,`${QQ}/${o.slice(l.length)}.md`);return}let c=o.startsWith(Fc)?Fc:o.startsWith(zp)?zp:null;if(c&&a==="SKILL.md"){e.set(t,`${qQ}/${o.slice(c.length)}.md`);return}let m=`${Ob}/${o}`;a==="SKILL.md"&&wb(e,`${r}/${o}`,m);let p=`${m}/${a}`;e.set(t,p),a!=="SKILL.md"&&ZQ(e,t,p,`${r}/${o}`);}function eq(e){return e.split("/").filter(Boolean)[0]??""}async function tq(){if(ES!==void 0)return ES;let{BUILTIN_TARGETS:e}=await Promise.resolve().then(()=>(Te(),bb)),t=new Set;for(let r of e)for(let n of [r.project.rootInstructionPath,r.project.skillDir,...r.project.managedOutputs?.dirs??[],...r.project.managedOutputs?.files??[],...r.detectionPaths,r.globalSupport?.layout.rootInstructionPath,r.globalSupport?.layout.skillDir,...r.globalSupport?.layout.managedOutputs?.dirs??[],...r.globalSupport?.layout.managedOutputs?.files??[],...r.globalSupport?.detectionPaths??[]])if(n!==void 0){let o=eq(n);o.startsWith(".")&&t.add(o);}return ES=t,t}function OS(e){return e.split("/").some(t=>t.startsWith("."))}async function rq(e){let t=[],r=await tq(),n=ce(e);async function o(i){let a=n.join(e,i),l=await readdir(a,{withFileTypes:true}).catch(()=>[]);for(let c of l){let m=i?`${i}/${c.name}`:c.name;if(c.isDirectory()){if(r.has(c.name)||OS(m))continue;await o(m);continue}if(c.isSymbolicLink()&&await stat(n.join(e,m)).then(p=>p.isDirectory(),()=>false)){if(r.has(c.name)||OS(m))continue;await o(m);continue}(c.name==="AGENTS.md"||c.name==="AGENTS.override.md")&&t.push(n.join(e,m));}}return s(o,"walk"),await o(""),t}async function Vf(e,t){let r=await rq(t);for(let n of r){let o=E(t,n),i=o.endsWith("/AGENTS.md")&&o!=="AGENTS.md"&&!o.endsWith("/AGENTS.override.md"),a=o.endsWith("/AGENTS.override.md")&&o!=="AGENTS.override.md";if(!i&&!a)continue;let l=posix.dirname(o);if(OS(l))continue;let c=l.replace(/\//g,"-");e.set(o,`${XQ}/${c}.md`);}}var XQ,QQ,qQ,Ob,ES,Le=d(()=>{Lt();b();$e();Se();XQ=".agentsmesh/rules",QQ=".agentsmesh/commands",qQ=".agentsmesh/agents",Ob=".agentsmesh/skills";s(E,"rel");s(C,"listFiles");s(wb,"addDirectoryMapping");s(ZQ,"addAncestorMappings");s(P,"addSimpleFileMapping");s($,"addSkillLikeMapping");s(eq,"firstPathSegment");s(tq,"targetRootSegments");s(OS,"hasHiddenSegment");s(rq,"listScopedAgentsFiles");s(Vf,"addScopedAgentsMappings");});var A,re,fe,Ee=d(()=>{A=".agentsmesh/rules",re=".agentsmesh/commands",fe=".agentsmesh/agents";});async function wS(e,t,r="project"){if(r==="global"){e.set(gs,`${A}/_root.md`);for(let n of await C(t,Ar))$(e,E(t,n),Ar);e.set(Za,".agentsmesh/ignore");return}e.set(Ht,`${A}/_root.md`);for(let n of await C(t,kt))$(e,E(t,n),kt);e.set(fs,".agentsmesh/ignore");}var Ab=d(()=>{Le();jc();Ee();s(wS,"buildAiderImportPaths");});var el,xr,Bi,so,ys,Wc,tl,Tb,xb,bS,Hc=d(()=>{el="amazon-q",xr=".amazonq/rules",Bi=".amazonq/mcp.json",so=".amazonq/cli-agents",ys=".aws/amazonq/rules",Wc=".aws/amazonq/mcp.json",tl=".aws/amazonq/cli-agents",Tb=".agentsmesh/rules",xb=".agentsmesh/mcp.json",bS=".agentsmesh/agents";});async function AS(e,t,r="project"){let n=r==="global"?ys:xr;for(let o of await C(t,n)){let i=E(t,o);P(e,i,A,".md");}}var Pb=d(()=>{Le();Hc();Ee();s(AS,"buildAmazonQImportPaths");});var Pr,Et,or,TS,_s,Dr,Ss,Db,rl=d(()=>{Pr="AGENTS.md",Et=".agents/skills",or=".amp/settings.json",TS=".config/amp",_s=`${TS}/AGENTS.md`,Dr=`${TS}/skills`,Ss=`${TS}/settings.json`,Db=".agentsmesh/rules";});async function xS(e,t,r="project"){if(r==="global"){e.set(_s,`${A}/_root.md`);for(let n of await C(t,Dr))$(e,E(t,n),Dr);e.set(Ss,".agentsmesh/mcp.json");return}e.set(Pr,`${A}/_root.md`);for(let n of await C(t,Et))$(e,E(t,n),Et);e.set(or,".agentsmesh/mcp.json");}var Nb=d(()=>{Le();rl();Ee();s(xS,"buildAmpImportPaths");});var nl,tu,kn,Nr,ru,Ln,io,nu,ou,PS,ao,lo,su,zc,DS,ol,Jf,vb,sl=d(()=>{nl="antigravity",tu=".agents",kn=`${tu}/rules`,Nr=`${kn}/general.md`,ru=`${kn}/_root.md`,Ln=`${tu}/skills`,io=`${tu}/workflows`,nu=`${tu}/antigravity/mcp_config.json`,ou=`${tu}/hooks.json`,PS=".gemini/config/hooks.json",ao=".gemini/antigravity/GEMINI.md",lo=".gemini/antigravity/skills",su=".gemini/antigravity/workflows",zc=".gemini/antigravity/mcp_config.json",DS=".agentsmesh/rules/_root.md",ol=".agentsmesh/rules",Jf=".agentsmesh/commands",vb=".agentsmesh/mcp.json";});async function NS(e,t,r="project"){if(r==="global"){e.set(ao,`${A}/_root.md`);for(let n of await C(t,lo))$(e,E(t,n),lo);e.set(zc,".agentsmesh/mcp.json");return}e.set(Nr,`${A}/_root.md`),e.set(ru,`${A}/_root.md`);for(let n of await C(t,kn)){let o=E(t,n);o===Nr||o===ru||P(e,o,A,".md");}for(let n of await C(t,io))P(e,E(t,n),re,".md");for(let n of await C(t,Ln))$(e,E(t,n),Ln);}var Fb=d(()=>{Le();sl();Ee();s(NS,"buildAntigravityImportPaths");});var it,iu,sr,vr,Rs,ir,co,mo,au,Is,ks,il,po,Ls,vS,FS,MS,GS,$S,jS,al=d(()=>{it="augment-code",iu=".augment",sr=`${iu}/rules`,vr=`${iu}/commands`,Rs=`${iu}/agents`,ir=`${iu}/skills`,co=`${iu}/settings.json`,mo=".augmentignore",au=".augment",Is=`${au}/rules`,ks=`${au}/commands`,il=`${au}/agents`,po=`${au}/skills`,Ls=`${au}/settings.json`,vS=".agentsmesh/rules",FS=".agentsmesh/agents",MS=".agentsmesh/mcp.json",GS=".agentsmesh/hooks.yaml",$S=".agentsmesh/ignore",jS=".agentsmesh/permissions.yaml";});async function US(e,t,r="project"){if(r==="global"){for(let n of await C(t,Is))P(e,E(t,n),A,".md");for(let n of await C(t,ks))P(e,E(t,n),re,".md");for(let n of await C(t,il))P(e,E(t,n),fe,".md");for(let n of await C(t,po))$(e,E(t,n),po);e.set(Ls,".agentsmesh/mcp.json");return}for(let n of await C(t,sr))P(e,E(t,n),A,".md");for(let n of await C(t,vr))P(e,E(t,n),re,".md");for(let n of await C(t,Rs))P(e,E(t,n),fe,".md");for(let n of await C(t,ir))$(e,E(t,n),ir);e.set(co,".agentsmesh/mcp.json"),e.set(mo,".agentsmesh/ignore");}var Mb=d(()=>{Le();al();Ee();s(US,"buildAugmentCodeImportPaths");});var Gb,Es,Ki,lu,cu,mu,pu,uu,Cs,BS,du,Vc,fu,gu,Yf,Xf,KS,hu,WS,ll,$b,Os=d(()=>{Gb="claude-code",Es="CLAUDE.md",Ki=".claude/CLAUDE.md",lu=".claude/rules",cu=".claude/commands",mu=".claude/agents",pu=".claude/skills",uu=".claude/settings.json",Cs=".claude/hooks.json",BS=".claude/output-styles",du=".claudeignore",Vc=".mcp.json",fu=".claude.json",gu=".agentsmesh/rules",Yf=".agentsmesh/commands",Xf=".agentsmesh/agents",KS=".agentsmesh/skills",hu=".agentsmesh/mcp.json",WS=".agentsmesh/permissions.yaml",ll=".agentsmesh/hooks.yaml",$b=".agentsmesh/ignore";});async function HS(e,t,r="project"){if(e.set(".claude/CLAUDE.md",`${A}/_root.md`),e.set(Cs,ll),r==="project"&&e.set("CLAUDE.md",`${A}/_root.md`),r==="global")for(let n of await C(t,".agents/skills"))$(e,E(t,n),".agents/skills");for(let n of await C(t,".claude/rules"))P(e,E(t,n),A,".md");for(let n of await C(t,".claude/commands"))P(e,E(t,n),re,".md");for(let n of await C(t,".claude/agents"))P(e,E(t,n),fe,".md");for(let n of await C(t,".claude/skills"))$(e,E(t,n),".claude/skills");}var jb=d(()=>{Le();Os();Ee();s(HS,"buildClaudeCodeImportPaths");});var Wi,ws,cl,bs,Ub,Ft,ar,As,Hi,ml,pl,ul,dl,zS,zi,Qf,VS,JS,yu,Bb,Fr=d(()=>{Wi="cline",ws=".clinerules",cl=".clineignore",bs=".cline/cline_mcp_settings.json",Ub=".cline/mcp_settings.json",Ft=".cline/skills",ar=".cline/agents",As=".clinerules/workflows",Hi="AGENTS.md",ml=".clinerules/hooks",pl="Documents/Cline/Rules",ul="Documents/Cline/Workflows",dl="Documents/Cline/Hooks",zS=".agentsmesh/hooks.yaml",zi=".agentsmesh/rules",Qf=".agentsmesh/commands",VS=".agentsmesh/ignore",JS=".agentsmesh/mcp.json",yu=".agentsmesh/agents",Bb=".agentsmesh/skills";});async function YS(e,t,r="project"){if(r==="global"){for(let n of await C(t,pl))P(e,E(t,n),A,".md");for(let n of await C(t,ul))P(e,E(t,n),re,".md");for(let n of await C(t,Ft))$(e,E(t,n),Ft);for(let n of await C(t,ar))P(e,E(t,n),fe,".md");e.set(bs,".agentsmesh/mcp.json");return}e.set(".clinerules/_root.md",`${A}/_root.md`);for(let n of await C(t,".clinerules")){let o=E(t,n);!o.endsWith(".md")||o.includes("/workflows/")||basename(o)==="_root.md"||P(e,o,A,".md");}for(let n of await C(t,".clinerules/workflows"))P(e,E(t,n),re,".md");for(let n of await C(t,".cline/skills"))$(e,E(t,n),".cline/skills");for(let n of await C(t,ar))P(e,E(t,n),fe,".md");}var Kb=d(()=>{Le();Fr();Ee();s(YS,"buildClineImportPaths");});async function XS(e,t,r="project"){if(r==="global"?(e.set(".codex/AGENTS.md",`${A}/_root.md`),e.set(".codex/AGENTS.override.md",`${A}/_root.md`)):(e.set("AGENTS.md",`${A}/_root.md`),e.set("codex.md",`${A}/_root.md`),await Vf(e,t)),r==="project")for(let n of await C(t,".codex/instructions"))P(e,E(t,n),A,".md");for(let n of await C(t,".codex/rules")){let o=E(t,n);o.endsWith(".rules")?P(e,o,A,".rules"):o.endsWith(".md")&&P(e,o,A,".md");}for(let n of await C(t,".codex/agents"))P(e,E(t,n),fe,".toml");for(let n of await C(t,".agents/skills"))$(e,E(t,n),".agents/skills");}var Wb=d(()=>{Le();Ee();s(XS,"buildCodexCliImportPaths");});var fl,En,uo,QS,qf,Ts,qS,lr,Jc,_u,gl,Zf,eg,ZS,eR,fo=d(()=>{fl="continue",En=".continue/rules",uo=".continue/prompts",QS=".continue/mcpServers",qf=`${QS}/agentsmesh.json`,Ts=`${En}/general.md`,qS=`${En}/_root.md`,lr=".continue/skills",Jc=".continue/AGENTS.md",_u=".continue/config.yaml",gl=".continue/permissions.yaml",Zf=".agentsmesh/rules",eg=".agentsmesh/commands",ZS=".agentsmesh/mcp.json",eR=".agentsmesh/permissions.yaml";});async function tR(e,t,r="project"){e.set(Ts,`${A}/_root.md`),e.set(qS,`${A}/_root.md`);for(let n of await C(t,".continue/rules")){let o=E(t,n);o===Ts||o===qS||P(e,o,A,".md");}for(let n of await C(t,".continue/prompts"))e.set(E(t,n),`${re}/${basename(n,".md")}.md`);for(let n of await C(t,".continue/skills"))$(e,E(t,n),".continue/skills");if(r==="global")for(let n of await C(t,".agents/skills"))$(e,E(t,n),".agents/skills");}var Hb=d(()=>{Le();fo();Ee();s(tR,"buildContinueImportPaths");});function sq(e,t){if(t.endsWith(".instructions.md")){e.set(t,`${A}/${basename(t,".instructions.md")}.md`);return}P(e,t,A,".md");}async function rR(e,t){e.set(".github/copilot-instructions.md",`${A}/_root.md`);for(let r of await C(t,".github/copilot"))e.set(E(t,r),`${A}/${basename(r,".instructions.md")}.md`);for(let r of await C(t,".github/instructions"))sq(e,E(t,r));for(let r of await C(t,".github/prompts"))e.set(E(t,r),`${re}/${basename(r,".prompt.md")}.md`);for(let r of await C(t,".github/agents"))e.set(E(t,r),`${fe}/${basename(r,".agent.md")}.md`);for(let r of await C(t,".github/skills"))$(e,E(t,r),".github/skills");}var zb=d(()=>{Le();Ee();s(sq,"addCopilotInstructionMapping");s(rR,"buildCopilotImportPaths");});var Mr,Gr,dt,cr,xs,Vb,Yc,mr,hl,rg,ng,og,Xc=d(()=>{Mr="crush",Gr="CRUSH.md",dt=".crush/skills",cr="crush.json",xs=".crushignore",Vb=".config/crush",Yc=`${Vb}/crush.json`,mr=".config/crush/skills",hl=`${Vb}/CRUSH.md`,rg=".agentsmesh/rules",ng=".agentsmesh/ignore",og=".agentsmesh/mcp.json";});async function nR(e,t,r="project"){if(r==="global"){for(let n of await C(t,mr))$(e,E(t,n),mr);return}e.set(Gr,`${rg}/_root.md`),e.set(cr,og),e.set(xs,ng);for(let n of await C(t,dt))$(e,E(t,n),dt);}var Jb=d(()=>{Le();Xc();s(nR,"buildCrushImportPaths");});var Yb,Vi,Xb,$r,Ps,jr,Ur,Ct,pr,go,sg,Cn,oR,iq,Qc,On,ho,Ji,Yi,Qb,qc,sR,Su,iR,qe=d(()=>{Yb="cursor",Vi="AGENTS.md",Xb=".cursorrules",$r=".cursor/rules",Ps=`${$r}/general.mdc`,jr=".cursor/commands",Ur=".cursor/agents",Ct=".cursor/skills",pr=".cursor/mcp.json",go=".cursor/hooks.json",sg=".cursor/settings.json",Cn=".cursorignore",oR=".cursorindexingignore",iq=".agentsmesh-exports/cursor",Qc=`${iq}/user-rules.md`,On=".cursor/AGENTS.md",ho=".agentsmesh/rules",Ji=".agentsmesh/commands",Yi=".agentsmesh/agents",Qb=".agentsmesh/skills",qc=".agentsmesh/mcp.json",sR=".agentsmesh/permissions.yaml",Su=".agentsmesh/hooks.yaml",iR=".agentsmesh/ignore";});async function aR(e,t,r="project"){if(r==="global"){e.set(pr,".agentsmesh/mcp.json"),e.set(".cursor/AGENTS.md",`${A}/_root.md`);for(let n of await C(t,".cursor/rules"))P(e,E(t,n),A,".mdc");for(let n of await C(t,".cursor/commands"))P(e,E(t,n),re,".md");for(let n of await C(t,".cursor/agents"))P(e,E(t,n),fe,".md");for(let n of await C(t,".cursor/skills"))$(e,E(t,n),".cursor/skills");return}e.set("AGENTS.md",`${A}/_root.md`);for(let n of await C(t,".cursor/rules"))P(e,E(t,n),A,".mdc");for(let n of await C(t,".cursor/commands"))P(e,E(t,n),re,".md");for(let n of await C(t,".cursor/agents"))P(e,E(t,n),fe,".md");for(let n of await C(t,".cursor/skills"))$(e,E(t,n),".cursor/skills");}var qb=d(()=>{Le();qe();Ee();s(aR,"buildCursorImportPaths");});var yo,Br,Ot,Ds,ig,Ns,wn,yl,Zb,eA,Zc=d(()=>{yo="deepagents-cli",Br=".deepagents/AGENTS.md",Ot=".deepagents/skills",Ds=".mcp.json",ig=".deepagents/hooks.json",Ns=".deepagents/AGENTS.md",wn=".deepagents/skills",yl=".deepagents/.mcp.json",Zb=".deepagents/hooks.json",eA=".agentsmesh/rules";});async function lR(e,t,r="project"){if(r==="global"){e.set(Ns,`${A}/_root.md`);for(let n of await C(t,wn))$(e,E(t,n),wn);e.set(yl,".agentsmesh/mcp.json");return}e.set(Br,`${A}/_root.md`);for(let n of await C(t,Ot))$(e,E(t,n),Ot);e.set(Ds,".agentsmesh/mcp.json");}var tA=d(()=>{Le();Zc();Ee();s(lR,"buildDeepagentsCliImportPaths");});var ur,Kr,Wr,Xi,bn,_o,vs,Fs,em,Qi,qi,tm,rA,nA,oA,sA,iA,_l=d(()=>{ur="factory-droid",Kr="AGENTS.md",Wr=".factory/skills",Xi=".factory/commands",bn=".factory/droids",_o=".factory/mcp.json",vs=".factory/AGENTS.md",Fs=".factory/skills",em=".factory/commands",Qi=".factory/droids",qi=".factory/mcp.json",tm=".factory/hooks.json",rA=".factory/hooks.json",nA=".agentsmesh/rules",oA=".agentsmesh/agents",sA=".agentsmesh/commands",iA=".agentsmesh/hooks.yaml";});async function cR(e,t,r="project"){if(r==="global"){e.set(vs,`${A}/_root.md`);for(let n of await C(t,em))P(e,E(t,n),re,".md");for(let n of await C(t,Qi))P(e,E(t,n),fe,".md");for(let n of await C(t,Fs))$(e,E(t,n),Fs);e.set(qi,".agentsmesh/mcp.json");return}e.set(Kr,`${A}/_root.md`);for(let n of await C(t,Xi))P(e,E(t,n),re,".md");for(let n of await C(t,bn))P(e,E(t,n),fe,".md");for(let n of await C(t,Wr))$(e,E(t,n),Wr);e.set(_o,".agentsmesh/mcp.json");}var aA=d(()=>{Le();_l();Ee();s(cR,"buildFactoryDroidImportPaths");});async function mR(e,t){for(let r of await C(t,".gemini/rules"))P(e,E(t,r),A,".md");for(let r of await C(t,".gemini/commands")){let n=E(t,r);if(!n.endsWith(".toml")&&!n.endsWith(".md"))continue;let o=n.replace(/\.(toml|md)$/i,""),i=".gemini/commands/",c=(o.startsWith(i)?o.slice(i.length):o).split("/").filter(Boolean).join(":");e.set(n,`${re}/${c}.md`);}for(let r of await C(t,".gemini/agents"))P(e,E(t,r),fe,".md");for(let r of await C(t,".gemini/skills"))$(e,E(t,r),".gemini/skills");}var lA=d(()=>{Le();Ee();s(mR,"buildGeminiCliImportPaths");});var Hr,dr,Vt,So,ag,Ro,Zi,Sl,zr,Rl,Il,cA,mA,pA,pR,ea=d(()=>{Hr="goose",dr=".goosehints",Vt=".agents/skills",So=".gooseignore",ag=".config/goose",Ro=`${ag}/.goosehints`,Zi=`${ag}/.gooseignore`,Sl=`${ag}/config.yaml`,zr=".agents/skills",Rl=`${ag}/permission.yaml`,Il=".agents/plugins/agentsmesh/hooks/hooks.json",cA=".agentsmesh/rules",mA=".agentsmesh/ignore",pA=".agentsmesh/hooks.yaml",pR=".agentsmesh/permissions.yaml";});async function uR(e,t,r="project"){if(r==="global"){e.set(Ro,`${A}/_root.md`);for(let n of await C(t,zr))$(e,E(t,n),zr);e.set(Zi,".agentsmesh/ignore");return}e.set(dr,`${A}/_root.md`);for(let n of await C(t,Vt))$(e,E(t,n),Vt);e.set(So,".agentsmesh/ignore");}var uA=d(()=>{Le();ea();Ee();s(uR,"buildGooseImportPaths");});var Ms,An,dA,rm=d(()=>{Ms="jules",An="AGENTS.md",dA=".agentsmesh/rules";});async function dR(e,t,r="project"){r!=="global"&&e.set(An,`${A}/_root.md`);}var fA=d(()=>{rm();Ee();s(dR,"buildJulesImportPaths");});var kl,ta,lg,gA,Io,hA,aq,Ru,Ll,Iu,nm,om,ku,Lu,Eu,Cu,Ou,lq,cg,El,yA,mg,fR,pg,_A,SA,RA,IA,sm=d(()=>{kl="junie",ta=".junie",lg=`${ta}/guidelines.md`,gA=`${ta}/ci-guidelines.md`,Io=`${ta}/AGENTS.md`,hA="AGENTS.md",aq=`${ta}/mcp`,Ru=`${aq}/mcp.json`,Ll=`${ta}/skills`,Iu=`${ta}/rules`,nm=`${ta}/commands`,om=`${ta}/agents`,ku=".aiignore",Lu=".junie",Eu=`${Lu}/skills`,Cu=`${Lu}/agents`,Ou=`${Lu}/commands`,lq=`${Lu}/mcp`,cg=`${lq}/mcp.json`,El=`${Lu}/AGENTS.md`,yA=".agents/skills",mg=".junie/allowlist.json",fR=".agentsmesh/rules/_root.md",pg=".agentsmesh/rules",_A=".agentsmesh/commands",SA=".agentsmesh/agents",RA=".agentsmesh/mcp.json",IA=".agentsmesh/ignore";});async function gR(e,t){e.set(lg,`${A}/_root.md`),e.set(Io,`${A}/_root.md`),e.set("AGENTS.md",`${A}/_root.md`);for(let r of await C(t,".junie/rules"))P(e,E(t,r),A,".md");for(let r of await C(t,".junie/commands"))P(e,E(t,r),re,".md");for(let r of await C(t,".junie/agents"))P(e,E(t,r),fe,".md");for(let r of await C(t,".junie/skills"))$(e,E(t,r),".junie/skills");}var kA=d(()=>{Le();sm();Ee();s(gR,"buildJunieImportPaths");});var Mt,Cl,wu,bu,Tn,ko,Lo,Eo,Vr,Gs,Ol,ug,wl,im,bl,Au,dg,am,$s,ra,na,oa,js,Al,Tu,LA,sa,lm,Tl,EA,CA,Us=d(()=>{Mt="kilo-code",Cl="kilo.jsonc",wu=".config/kilo/kilo.jsonc",bu=".kilo",Tn="AGENTS.md",ko=`${bu}/rules`,Lo=`${bu}/commands`,Eo=`${bu}/agents`,Vr=`${bu}/skills`,Gs=`${bu}/mcp.json`,Ol=".kilocodeignore",ug=".kilocode",wl=`${ug}/rules`,im=`${ug}/workflows`,bl=`${ug}/skills`,Au=`${ug}/mcp.json`,dg=".kilocodemodes",am=".kilo",$s=`${am}/AGENTS.md`,ra=`${am}/rules`,na=`${am}/commands`,oa=`${am}/agents`,js=`${am}/skills`,Al=`${am}/mcp.json`,Tu=".kilocodeignore",LA=".agents/skills",sa=".agentsmesh/rules",lm=".agentsmesh/commands",Tl=".agentsmesh/agents",EA=".agentsmesh/mcp.json",CA=".agentsmesh/ignore";});async function hR(e,t,r="project"){if(r==="global"){e.set($s,`${A}/_root.md`);for(let n of await C(t,ra))P(e,E(t,n),A,".md");for(let n of await C(t,na))P(e,E(t,n),re,".md");for(let n of await C(t,oa))P(e,E(t,n),fe,".md");for(let n of await C(t,js))$(e,E(t,n),js);e.set(Al,".agentsmesh/mcp.json");return}e.set(Tn,`${A}/_root.md`);for(let n of await C(t,ko))P(e,E(t,n),A,".md");for(let n of await C(t,Lo))P(e,E(t,n),re,".md");for(let n of await C(t,Eo))P(e,E(t,n),fe,".md");for(let n of await C(t,Vr))$(e,E(t,n),Vr);e.set(Gs,".agentsmesh/mcp.json");for(let n of await C(t,wl)){let o=E(t,n);if(basename(o)==="00-root.md"){e.set(o,`${A}/_root.md`);continue}P(e,o,A,".md");}for(let n of await C(t,im))P(e,E(t,n),re,".md");for(let n of await C(t,bl))$(e,E(t,n),bl);e.set(Au,".agentsmesh/mcp.json");}var OA=d(()=>{Le();Us();Ee();s(hR,"buildKiloCodeImportPaths");});var fr,xn,xu,Pn,Gt,Dn,ia,mq,cm,mm,xl,Nn,aa,Pl,Pu,Du,wA,yR,_R,bA,AA,SR,TA,pm=d(()=>{fr="kiro",xn="AGENTS.md",xu=".kiro",Pn=`${xu}/steering`,Gt=`${xu}/skills`,Dn=`${xu}/agents`,ia=`${xu}/hooks`,mq=`${xu}/settings`,cm=`${mq}/mcp.json`,mm=".kiroignore",xl=".kiro/steering",Nn=".kiro/steering/AGENTS.md",aa=".kiro/skills",Pl=".kiro/agents",Pu=".kiro/settings/mcp.json",Du=".kiro/settings/kiroignore",wA=".agents/skills",yR=".agentsmesh/rules/_root.md",_R=".agentsmesh/rules",bA=".agentsmesh/agents",AA=".agentsmesh/mcp.json",SR=".agentsmesh/hooks.yaml",TA=".agentsmesh/ignore";});async function RR(e,t,r="project"){if(r==="global"){e.set(Nn,`${A}/_root.md`);for(let n of await C(t,xl)){let o=E(t,n);o!==Nn&&P(e,o,A,".md");}for(let n of await C(t,aa))$(e,E(t,n),aa);for(let n of await C(t,Pl))P(e,E(t,n),fe,".md");return}e.set(xn,`${A}/_root.md`);for(let n of await C(t,Pn))P(e,E(t,n),A,".md");for(let n of await C(t,Gt))$(e,E(t,n),Gt);for(let n of await C(t,Dn))P(e,E(t,n),fe,".md");}var xA=d(()=>{Le();pm();Ee();s(RR,"buildKiroImportPaths");});var Jr,fg,vn,Co,Oo,wo,Yr,wt,um,Bs,la,ca,ma,Ks,Xr,PA,Nu,gg,hg,IR,kR,Ws=d(()=>{Jr="opencode",fg=".opencode",vn="AGENTS.md",Co=`${fg}/rules`,Oo=`${fg}/commands`,wo=`${fg}/agents`,Yr=`${fg}/skills`,wt="opencode.json",um=".config/opencode",Bs=`${um}/AGENTS.md`,la=`${um}/rules`,ca=`${um}/commands`,ma=`${um}/agents`,Ks=`${um}/skills`,Xr=`${um}/opencode.json`,PA=".agents/skills",Nu=".agentsmesh/rules",gg=".agentsmesh/commands",hg=".agentsmesh/agents",IR=".agentsmesh/mcp.json",kR=".agentsmesh/permissions.yaml";});async function LR(e,t,r="project"){if(r==="global"){e.set(Bs,`${A}/_root.md`);for(let n of await C(t,la))P(e,E(t,n),A,".md");for(let n of await C(t,ca))P(e,E(t,n),re,".md");for(let n of await C(t,ma))P(e,E(t,n),fe,".md");for(let n of await C(t,Ks))$(e,E(t,n),Ks);e.set(Xr,".agentsmesh/mcp.json");return}e.set(vn,`${A}/_root.md`);for(let n of await C(t,Co))P(e,E(t,n),A,".md");for(let n of await C(t,Oo))P(e,E(t,n),re,".md");for(let n of await C(t,wo))P(e,E(t,n),fe,".md");for(let n of await C(t,Yr))$(e,E(t,n),Yr);e.set(wt,".agentsmesh/mcp.json");}var DA=d(()=>{Le();Ws();Ee();s(LR,"buildOpencodeImportPaths");});var bo,Qr,$t,Ao,ER,Hs,Fn,Dl,NA,vA,dm=d(()=>{bo="pi-agent",Qr="AGENTS.md",$t=".pi/skills",Ao=".pi/prompts",ER=".pi/agent",Hs=`${ER}/AGENTS.md`,Fn=`${ER}/skills`,Dl=`${ER}/prompts`,NA=".agentsmesh/rules",vA=".agentsmesh/commands";});async function CR(e,t,r="project"){if(r==="global"){e.set(Hs,`${A}/_root.md`);for(let n of await C(t,Dl))P(e,E(t,n),re,".md");for(let n of await C(t,Fn))$(e,E(t,n),Fn);return}e.set(Qr,`${A}/_root.md`);for(let n of await C(t,Ao))P(e,E(t,n),re,".md");for(let n of await C(t,$t))$(e,E(t,n),$t);}var OR=d(()=>{Le();dm();Ee();s(CR,"buildPiAgentImportPaths");});var Mn,gr,To,Gn,$n,hr,qr,zs,xo,Vs,Js,Po,Ys,wR,FA,MA,Nl=d(()=>{Mn="qwen-code",gr="QWEN.md",To=".qwen/rules",Gn=".qwen/commands",$n=".qwen/agents",hr=".qwen/skills",qr=".qwen/settings.json",zs=".qwenignore",xo=".qwen/QWEN.md",Vs=".qwen/settings.json",Js=".qwen/commands",Po=".qwen/skills",Ys=".qwen/agents",wR=".agentsmesh/rules",FA=".agentsmesh/commands",MA=".agentsmesh/agents";});async function bR(e,t,r="project"){if(r==="global"){e.set(xo,`${A}/_root.md`),e.set(Vs,".agentsmesh/mcp.json");for(let n of await C(t,Js))P(e,E(t,n),re,".md");for(let n of await C(t,Ys))P(e,E(t,n),fe,".md");for(let n of await C(t,Po))$(e,E(t,n),Po);return}e.set(gr,`${A}/_root.md`),e.set(qr,".agentsmesh/mcp.json"),e.set(zs,".agentsmesh/ignore");for(let n of await C(t,To))P(e,E(t,n),A,".md");for(let n of await C(t,Gn))P(e,E(t,n),re,".md");for(let n of await C(t,$n))P(e,E(t,n),fe,".md");for(let n of await C(t,hr))$(e,E(t,n),hr);}var GA=d(()=>{Le();Ee();Nl();s(bR,"buildQwenCodeImportPaths");});var Do,jn,Jt,$A,fm=d(()=>{Do="replit-agent",jn="replit.md",Jt=".agents/skills",$A=".agentsmesh/rules";});async function AR(e,t,r="project"){if(r!=="global"){e.set(jn,`${A}/_root.md`);for(let n of await C(t,Jt))$(e,E(t,n),Jt);}}var TR=d(()=>{Le();fm();Ee();s(AR,"buildReplitAgentImportPaths");});var Xs,vl,Un,vu,Qs,qs,No,Fu,Mu,pa,Gu,yg,ua,da,Zs,Fl,$u,fa,jA,Ml,xR,_g,UA,BA,Gl=d(()=>{Xs="roo-code",vl=".roo",Un=`${vl}/rules/00-root.md`,vu=".roorules",Qs=`${vl}/rules`,qs=`${vl}/commands`,No=`${vl}/skills`,Fu=`${vl}/mcp.json`,Mu=".rooignore",pa=".roomodes",Gu="settings/custom_modes.yaml",yg=".roo",ua=`${yg}/rules`,da=`${yg}/commands`,Zs=`${yg}/skills`,Fl="mcp_settings.json",$u=".rooignore",fa=`${yg}/AGENTS.md`,jA=".agents/skills",Ml=".agentsmesh/rules",xR=".agentsmesh/agents",_g=".agentsmesh/commands",UA=".agentsmesh/mcp.json",BA=".agentsmesh/ignore";});async function PR(e,t,r="project"){if(r==="global"){e.set(fa,`${A}/_root.md`);for(let n of await C(t,ua))P(e,E(t,n),A,".md");for(let n of await C(t,da))P(e,E(t,n),re,".md");for(let n of await C(t,Zs))$(e,E(t,n),Zs);e.set(Fl,".agentsmesh/mcp.json");return}e.set(Un,`${A}/_root.md`),e.set(vu,`${A}/_root.md`);for(let n of await C(t,Qs)){let o=E(t,n);o!==Un&&P(e,o,A,".md");}for(let n of await C(t,".roo")){let o=E(t,n);/^\.roo\/rules-[^/]+\/.+\.md$/.test(o)&&P(e,o,A,".md");}for(let n of await C(t,qs))P(e,E(t,n),re,".md");for(let n of await C(t,No))$(e,E(t,n),No);}var KA=d(()=>{Le();Gl();Ee();s(PR,"buildRooCodeImportPaths");});var vo,Zr,WA,ft,ei,HA,ti,yr,gm,ju,zA,$l=d(()=>{vo="rovodev",Zr="AGENTS.md",WA=".rovodev",ft=`${WA}/skills`,ei=`${WA}/mcp.json`,HA=".rovodev",ti=".rovodev/AGENTS.md",yr=".rovodev/skills",gm=".rovodev/mcp.json",ju=".rovodev/config.yml",zA=".agentsmesh/rules";});async function DR(e,t,r="project"){if(r==="global"){e.set(ti,`${A}/_root.md`);for(let n of await C(t,yr))$(e,E(t,n),yr);e.set(gm,".agentsmesh/mcp.json");return}e.set(Zr,`${A}/_root.md`);for(let n of await C(t,ft))$(e,E(t,n),ft);e.set(ei,".agentsmesh/mcp.json");}var VA=d(()=>{Le();$l();Ee();s(DR,"buildRovodevImportPaths");});var en,Uu,_r,Sr,tn,jl,hm,ri,rn,Bn,Bu,JA,ga,ym,Ku,YA,XA,QA,_m=d(()=>{en="trae",Uu=".trae",_r=`${Uu}/rules`,Sr=`${_r}/project_rules.md`,tn=`${Uu}/skills`,jl=`${Uu}/mcp.json`,hm=`${Uu}/.ignore`,ri=".trae/user_rules",rn=".trae/user_rules/rules.md",Bn=".trae/skills",Bu=".trae/mcp.json",JA=".agents/skills",ga=`${Uu}/commands`,ym=".trae/commands",Ku=".agentsmesh/rules",YA=".agentsmesh/commands",XA=".agentsmesh/mcp.json",QA=".agentsmesh/ignore";});async function NR(e,t,r="project"){if(r==="global"){e.set(rn,`${A}/_root.md`);for(let n of await C(t,ri)){let o=E(t,n);o!==rn&&P(e,o,A,".md");}for(let n of await C(t,ym))P(e,E(t,n),re,".md");for(let n of await C(t,Bn))$(e,E(t,n),Bn);return}e.set(Sr,`${A}/_root.md`);for(let n of await C(t,_r)){let o=E(t,n);o!==Sr&&P(e,o,A,".md");}for(let n of await C(t,ga))P(e,E(t,n),re,".md");for(let n of await C(t,tn))$(e,E(t,n),tn);}var qA=d(()=>{Le();_m();Ee();s(NR,"buildTraeImportPaths");});var Fo,Kn,vR,bt,ha,Rr,ZA,Sm=d(()=>{Fo="warp",Kn="AGENTS.md",vR="WARP.md",bt=".warp/skills",ha=".mcp.json",Rr=".warp/skills",ZA=".agentsmesh/rules";});async function FR(e,t,r="project"){if(r==="global"){for(let n of await C(t,Rr))$(e,E(t,n),Rr);return}e.set(Kn,`${A}/_root.md`);for(let n of await C(t,bt))$(e,E(t,n),bt);e.set(ha,".agentsmesh/mcp.json");}var eT=d(()=>{Le();Sm();Ee();s(FR,"buildWarpImportPaths");});async function MR(e,t){e.set("AGENTS.md",`${A}/_root.md`),e.set(".windsurfrules",`${A}/_root.md`),await Vf(e,t);for(let r of await C(t,".windsurf/rules"))P(e,E(t,r),A,".md");for(let r of await C(t,".windsurf/workflows"))P(e,E(t,r),re,".md");for(let r of await C(t,".windsurf/skills"))$(e,E(t,r),".windsurf/skills");}var tT=d(()=>{Le();Ee();s(MR,"buildWindsurfImportPaths");});var Wn,Mo,Go,pq,$o,rT,Ul=d(()=>{Wn=".rules",Mo=".zed/settings.json",Go=".agents/skills",pq=".config/zed",$o=`${pq}/settings.json`,rT=".agentsmesh/rules";});async function GR(e,t,r="project"){if(r==="global"){e.set($o,".agentsmesh/mcp.json");return}e.set(Wn,`${A}/_root.md`);for(let n of await C(t,Go))$(e,E(t,n),Go);e.set(Mo,".agentsmesh/mcp.json");}var nT=d(()=>{Ul();Le();Ee();s(GR,"buildZedImportPaths");});var oT=d(()=>{Ab();Pb();Nb();Fb();Mb();jb();Kb();Wb();Hb();zb();Jb();qb();tA();aA();lA();uA();fA();kA();OA();xA();DA();OR();GA();TR();KA();VA();qA();eT();tT();nT();});var we=d(()=>{oT();});function fq(e,t){if(e===null)return t;let r;try{r=parse(e);}catch{return t}if(!r||typeof r!="object"||Array.isArray(r))return t;let n=r,o=new Set,i=n.read;if(typeof i=="string")o.add(i);else if(Array.isArray(i))for(let a of i)typeof a=="string"&&o.add(a);return o.add(Ht),n.read=[...o],stringify(n)}var gq,hq,yq,sT,Hf,kS=d(()=>{$e();Se();Tw();gb();Ib();Cb();we();jc();s(fq,"mergeAiderConf");gq={name:oo,primaryRootInstructionPath:Ht,generateRules:Cw,generateCommands:ww,generateAgents:bw,generateSkills:Ow,generateIgnore:Aw,importFrom:fb},hq={rootInstructionPath:Ht,skillDir:kt,managedOutputs:{dirs:[kt],files:[Ht,$c,fs]},paths:{rulePath(e){return Ht},commandPath(e){return `${kt}/${Z(e)}/SKILL.md`},agentPath(e){return `${kt}/${V(e)}/SKILL.md`}}},yq={rootInstructionPath:gs,skillDir:Ar,managedOutputs:{dirs:[Ar],files:[gs,Za]},rewriteGeneratedPath(e){return e===Ht?gs:e===fs?Za:e===$c?null:e.startsWith(`${kt}/`)?e.replace(`${kt}/`,`${Ar}/`):e},paths:{rulePath(e){return gs},commandPath(e){return `${Ar}/${Z(e)}/SKILL.md`},agentPath(e){return `${Ar}/${V(e)}/SKILL.md`}}},sT={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"native",permissions:"none"},Hf={id:oo,metadata:{displayName:"Aider",category:"cli",officialUrl:"https://aider.chat",shortDescription:"Open-source terminal AI pair programmer"},generators:gq,capabilities:sT,emptyImportMessage:"No Aider config found (CONVENTIONS.md, .aider/skills, or .aiderignore).",lintRules:Rb,lint:{hooks:kb,permissions:Lb,mcp:Eb},supportsConversion:{commands:true,agents:true},project:hq,globalSupport:{capabilities:sT,detectionPaths:[gs,Za,Ar],layout:yq},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Ht],global:[gs]},canonicalDir:Lw,canonicalRootFilename:"_root.md",markAsRoot:true},ignore:{feature:"ignore",mode:"flatFile",source:{project:[fs],global:[Za]},canonicalDir:".agentsmesh",canonicalFilename:Ew}},mergeGeneratedOutputContent(e,t,r,n){return n===$c?fq(e,r):null},buildImportPaths:wS,detectionPaths:[Ht,fs]};});function iT(e){let t=[];for(let r of e.rules){if(r.targets.length>0&&!r.targets.includes(el))continue;let n=r.root?"_root":basename(r.source,".md");t.push({path:`${xr}/${n}.md`,content:r.body.trim()});}return t}function aT(e){return e.agents.map(t=>({path:`${so}/${t.name}.json`,content:JSON.stringify({name:t.name,...t.description?{description:t.description}:{},prompt:t.body.trim(),...t.tools.length>0?{allowedTools:t.tools}:{}},null,2)}))}function lT(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Bi,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}var cT=d(()=>{Hc();s(iT,"generateRules");s(aT,"generateAgents");s(lT,"generateMcp");});async function mT(e,t){let r=t?.scope??"project";return X(Sg,e,r)}var pT=d(()=>{Ae();$R();s(mT,"importFromAmazonQ");});function uT(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:el}))}var dT=d(()=>{Oe();Hc();s(uT,"lintRules");});function fT(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[M(".agentsmesh/hooks.yaml","amazon-q","Amazon Q CLI hooks are per-agent only; canonical hooks are not projected as standalone config.")]:[]:[]}function gT(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[M(".agentsmesh/permissions.yaml","amazon-q","Amazon Q CLI permissions are per-agent (allowedTools); canonical permissions are not projected as standalone config.")]}var hT=d(()=>{Ie();s(fT,"lintHooks");s(gT,"lintPermissions");});async function Iq(e){let t=basename(e.relativePath,".json"),r=`${t}.md`,n=join(e.destDir,r),o;try{o=JSON.parse(e.content);}catch{return null}if(!o||typeof o!="object"||Array.isArray(o))return null;let i=o,a=typeof i.name=="string"?i.name:t,l=typeof i.description=="string"?i.description:"",c=Array.isArray(i.allowedTools)?i.allowedTools.filter(u=>typeof u=="string"):[],m=typeof i.prompt=="string"?i.prompt:typeof i.systemPrompt=="string"?i.systemPrompt:"",p=await xe(n,{name:a,description:l,tools:c},m);return {destPath:n,toPath:`${bS}/${r}`,content:p}}var yT,_T=d(()=>{de();Hc();s(Iq,"amazonQAgentMapper");yT={rules:{feature:"rules",mode:"directory",source:{project:[xr],global:[ys]},canonicalDir:Tb,extensions:[".md"],preset:"rule"},agents:{feature:"agents",mode:"directory",source:{project:[so],global:[tl]},canonicalDir:bS,extensions:[".json"],map:Iq},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Bi],global:[Wc]},canonicalDir:".agentsmesh",canonicalFilename:xb}};});var ST,RT,IT=d(()=>{ST={rules:"native",additionalRules:"native",commands:"none",agents:"native",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},RT={rules:"native",additionalRules:"none",commands:"none",agents:"native",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"};});var kq,Lq,Eq,Sg,$R=d(()=>{cT();pT();dT();hT();we();_T();IT();Hc();kq={name:el,generateRules:iT,generateMcp:lT,generateAgents:aT,importFrom:mT},Lq={managedOutputs:{dirs:[xr,so],files:[Bi]},paths:{rulePath(e,t){return `${xr}/${e}.md`},commandPath(e,t){return null},agentPath(e,t){return `${so}/${e}.json`}}},Eq={managedOutputs:{dirs:[ys,tl],files:[Wc]},rewriteGeneratedPath(e){return e.startsWith(`${so}/`)?e.replace(`${so}/`,`${tl}/`):e.startsWith(`${xr}/`)?e.replace(`${xr}/`,`${ys}/`):e===Bi?Wc:e},paths:{rulePath(e,t){return `${ys}/${e}.md`},commandPath(e,t){return null},agentPath(e,t){return `${tl}/${e}.json`}}},Sg={id:el,metadata:{displayName:"Amazon Q Developer",category:"ide",officialUrl:"https://aws.amazon.com/q/developer",shortDescription:"AWS AI coding assistant"},generators:kq,capabilities:ST,emptyImportMessage:"No Amazon Q Developer config found (.amazonq/rules/, .amazonq/cli-agents/, or .amazonq/mcp.json).",lintRules:uT,lint:{hooks:fT,permissions:gT},project:Lq,globalSupport:{capabilities:RT,detectionPaths:[ys,Wc,tl],layout:Eq},importer:yT,buildImportPaths:AS,detectionPaths:[xr,so,Bi]};});function jo(e){if(!e.hooks||Object.keys(e.hooks).length===0)return {};let t={};for(let[r,n]of Object.entries(e.hooks)){if(!Array.isArray(n))continue;let o=[];for(let i of n){if(!ms(i))continue;let a=It(i),l=to(i),c=i.type==="prompt"?l||a:a||l,m={type:i.type==="prompt"?"prompt":"command",[i.type==="prompt"?"prompt":"command"]:c};i.timeout!==void 0&&(m.timeout=i.timeout),o.push({matcher:i.matcher,hooks:[m]});}o.length>0&&(t[r]=o);}return t}var Rm=d(()=>{gn();s(jo,"buildClaudeHooksObjectFromCanonical");});function kT(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes("amp")),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Pr,content:o}]:[]}function LT(e){return ae(e,Et)}function ET(e){return e.commands.map(t=>({path:`${Et}/${Z(t.name)}/SKILL.md`,content:Xe(t)}))}function CT(e){return e.agents.map(t=>({path:`${Et}/${V(t.name)}/SKILL.md`,content:je(t)}))}function OT(e,t){let r=[];if(t.has("mcp")&&e.mcp&&Object.keys(e.mcp.mcpServers).length>0&&r.push({path:or,content:JSON.stringify({"amp.mcpServers":e.mcp.mcpServers},null,2)}),t.has("hooks")&&e.hooks&&Object.keys(e.hooks).length>0){let n=jo(e);Object.keys(n).length>0&&r.push({path:or,content:JSON.stringify({"amp.hooks":n},null,2)});}if(t.has("permissions")&&e.permissions){let{allow:n,deny:o}=e.permissions,i=e.permissions.ask??[];if(n.length>0||o.length>0||i.length>0){let a={};n.length>0&&(a.allow=n),o.length>0&&(a.deny=o),i.length>0&&(a.ask=i),r.push({path:or,content:JSON.stringify({"amp.permissions":a},null,2)});}}return r}var wT=d(()=>{ie();Be();Se();$e();Rm();rl();s(kT,"generateRules");s(LT,"generateSkills");s(ET,"generateCommands");s(CT,"generateAgents");s(OT,"buildAmpScopedSettings");});function ge(e,t,r){let n=r.some(o=>Cq.includes(o));return e.startsWith(`${t}/`)&&!n?`.agents/skills/${e.slice(t.length+1)}`:null}var Cq,gt=d(()=>{Cq=["amp","antigravity","codex-cli","goose","replit-agent","zed"];s(ge,"mirrorSkillsToAgents");});async function AT(e,t,r){let n=await I(join(e,t));if(n===null)return;let o;try{o=JSON.parse(n);}catch{return}if(o===null||typeof o!="object"||Array.isArray(o))return;let i=o,a=i["amp.mcpServers"]??i.mcpServers;if(a==null||typeof a!="object"||Array.isArray(a)||Object.keys(a).length===0)return;let l={};for(let[c,m]of Object.entries(a))!m||typeof m!="object"||Array.isArray(m)||(l[c]=m);Object.keys(l).length!==0&&(await Qe(e,bT,l),r.push({fromTool:"amp",fromPath:t,toPath:bT,feature:"mcp"}));}var bT,TT=d(()=>{b();In();rl();bT=".agentsmesh/mcp.json";s(AT,"importAmpMcp");});async function xT(e,t={}){let r=t.scope??"project",n=[],o=await H("amp",e,r);return n.push(...await X(Rg,e,r,{normalize:o})),await oe(e,r==="global"?Dr:Et,"amp",n,o),await AT(e,r==="global"?Ss:or,n),n}var PT=d(()=>{he();ie();Ae();TT();rl();jR();s(xT,"importFromAmp");});function DT(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:"amp"}))}var NT=d(()=>{Oe();rl();s(DT,"lintRules");});function vT(e){return e.ignore.length===0?[]:[M(".agentsmesh/ignore","amp","Amp has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}var FT=d(()=>{Ie();s(vT,"lintIgnore");});function Tq(e,t){if(e===null)return t;let r;try{let i=JSON.parse(e);r=i!==null&&typeof i=="object"&&!Array.isArray(i)?i:{};}catch{r={};}let n=JSON.parse(t);if(n===null||typeof n!="object"||Array.isArray(n))return e;let o=n;return o["amp.mcpServers"]!==void 0&&(r["amp.mcpServers"]=o["amp.mcpServers"]),o["amp.hooks"]!==void 0&&(r["amp.hooks"]=o["amp.hooks"]),o["amp.permissions"]!==void 0&&(r["amp.permissions"]=o["amp.permissions"]),JSON.stringify(r,null,2)}var wq,bq,Aq,MT,Rg,jR=d(()=>{$e();Se();wT();gt();PT();NT();FT();we();rl();wq={name:"amp",primaryRootInstructionPath:Pr,generateRules:kT,generateCommands:ET,generateAgents:CT,generateSkills:LT,importFrom:xT},bq={rootInstructionPath:Pr,skillDir:Et,managedOutputs:{dirs:[Et],files:[Pr,or]},paths:{rulePath(e){return Pr},commandPath(e){return `${Et}/${Z(e)}/SKILL.md`},agentPath(e){return `${Et}/${V(e)}/SKILL.md`}}},Aq={rootInstructionPath:_s,skillDir:Dr,managedOutputs:{dirs:[Dr],files:[_s,Ss]},rewriteGeneratedPath(e){return e===Pr?_s:e===or?Ss:e.startsWith(`${Et}/`)?e.replace(`${Et}/`,`${Dr}/`):e},mirrorGlobalPath(e,t){return ge(e,Dr,t)},paths:{rulePath(e){return _s},commandPath(e){return `${Dr}/${Z(e)}/SKILL.md`},agentPath(e){return `${Dr}/${V(e)}/SKILL.md`}}},MT={rules:"native",additionalRules:"embedded",commands:"native",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"native"};s(Tq,"mergeAmpSettings");Rg={id:"amp",metadata:{displayName:"Amp",category:"cli",officialUrl:"https://ampcode.com",shortDescription:"Sourcegraph's coding agent"},generators:wq,capabilities:MT,emptyImportMessage:"No Amp config found (AGENTS.md, .agents/skills, or .amp/settings.json).",lintRules:DT,lint:{ignore:vT},supportsConversion:{commands:true,agents:true},project:bq,globalSupport:{capabilities:MT,detectionPaths:[_s,Ss],layout:Aq},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Pr],global:[_s]},canonicalDir:Db,canonicalRootFilename:"_root.md",markAsRoot:true}},emitScopedSettings(e,t,r){return OT(e,r)},mergeGeneratedOutputContent(e,t,r,n){return n===or||n===Ss?Tq(t?.content??e,r):null},sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:xS,detectionPaths:[Pr,or],conversionDefaults:{commandsToSkills:true,agentsToSkills:true}};});function GT(e){let t=e.rules.find(n=>n.root);if(!t)return [];let r=[{path:Nr,content:t.body.trim()||""}];for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes("antigravity"))continue;let o=basename(n.source,".md");r.push({path:`${kn}/${o}.md`,content:n.body.trim()||""});}return r}function $T(e){return e.commands.map(t=>{let r=t.description.trim(),n=t.body.trim(),o=r&&n&&!n.startsWith(r)?`${r}
|
|
63
|
+
`);continue}let{frontmatter:f,body:g}=u.value,h=e.frontmatterRemap?e.frontmatterRemap(f):f,y=e.markAsRoot?{...h,root:true}:h,_=await z(m,y,g);return await L(m,_),[{fromTool:n,fromPath:l,toPath:`${e.canonicalDir}/${e.canonicalRootFilename}`,feature:e.feature}]}return []}async function GQ(e,t,r,n,o){let i=cb(e),a=join(r,e.canonicalDir),l=[];for(let c of t){let m=join(r,c),p=await Re({srcDir:m,destDir:a,extensions:[...e.extensions??[".md"]],fromTool:n,normalize:o,mapEntry:s(async({srcPath:u,relativePath:f,content:g,normalizeTo:h})=>{if(Lf(basename(u)))return null;let y;try{y=await i({absolutePath:u,relativePath:f,content:g,destDir:a,normalizeTo:s(_=>h(_),"normalizeTo")});}catch(_){let R=_ instanceof Error?_.message:String(_);return process.stderr.write(`\u26A0 skipping ${u}: ${R}
|
|
64
|
+
`),null}return y?{destPath:y.destPath,toPath:y.toPath,feature:e.feature,content:y.content}:null},"mapEntry")});l.push(...p);}return l}function fb(e){let t=e.canonicalFilename;return t.includes("/")||t.includes("\\")?t:posix.join(e.canonicalDir,t)}async function $Q(e,t,r,n){if(!e.canonicalFilename)throw new Error(`flatFile spec for ${e.feature} must set canonicalFilename`);let o=fb(e);for(let i of t){let a=join(r,i),l=await I(a);if(l===null)continue;let c=join(r,o);return await O(dirname(c)),await L(c,l.trimEnd()),[{fromTool:n,fromPath:a,toPath:o,feature:e.feature}]}return []}function jQ(e,t="mcpServers"){let r;try{r=JSON.parse(e);}catch{return {}}if(!r||typeof r!="object")return {};let n=r[t];if(!n||typeof n!="object"||Array.isArray(n))return {};let o={};for(let[i,a]of Object.entries(n)){if(!a||typeof a!="object"||Array.isArray(a))continue;let l=a,c=typeof l.description=="string"?l.description:void 0;if(typeof l.command=="string"){o[i]={type:typeof l.type=="string"?l.type:"stdio",command:l.command,args:st(l.args),env:zt(l.env),description:c};continue}typeof l.url=="string"&&(o[i]={type:typeof l.type=="string"?l.type:"http",url:l.url,headers:zt(l.headers),env:zt(l.env),description:c});}return o}async function UQ(e,t,r,n){if(!e.canonicalFilename)throw new Error(`mcpJson spec for ${e.feature} must set canonicalFilename`);let o=fb(e);for(let i of t){let a=join(r,i),l=await I(a);if(l===null)continue;let c=jQ(l,e.mcpServersKey);return Object.keys(c).length===0?[]:(await Qe(r,o,c),[{fromTool:n,fromPath:a,toPath:o,feature:e.feature}])}return []}function db(e,t,r,n,o){switch(e.mode){case "singleFile":return MQ(e,t,r,n,o);case "directory":return GQ(e,t,r,n,o);case "flatFile":return $Q(e,t,r,n);case "mcpJson":return UQ(e,t,r,n)}}async function BQ(e,t,r,n,o){let i=IS(e.source,t),a=IS(e.fallbacks,t);if(i.length===0&&a.length===0)return [];if(i.length>0){let l=await db(e,i,r,n,o);if(l.length>0)return l}return a.length>0?db(e,a,r,n,o):[]}function KQ(e,t){let r=e[t];return r?Array.isArray(r)?r:[r]:[]}async function X(e,t,r,n){let o=e.importer;if(!o)return [];let i=n?.normalize??await H(e.id,t,r),a=[];for(let l of pb)for(let c of KQ(o,l))a.push(...await BQ(c,r,t,e.id,i));return a}var Ae=d(()=>{he();b();In();U();vt();de();nr();mb();cs();ub();s(MQ,"runSingleFile");s(GQ,"runDirectory");s(fb,"resolveCanonicalFilePath");s($Q,"runFlatFile");s(jQ,"parseMcpJson");s(UQ,"runMcpJson");s(db,"dispatchSpec");s(BQ,"runSpec");s(KQ,"specsForFeature");s(X,"runDescriptorImport");});async function gb(e,t={}){let r=t.scope??"project",n=[],o=await H(oo,e,r);return n.push(...await X(Hf,e,r,{normalize:o})),await oe(e,r==="global"?Ar:kt,oo,n,o),n}var hb=d(()=>{he();ie();Ae();Uc();kS();s(gb,"importFromAider");});function WQ(e,t){return _b(t).some(n=>HQ(e,n))}function yb(e,t){return e.filter(r=>WQ(r,t))}function _b(e){let t=e.match(/^(.+)\{([^}]+)\}(.*)$/);if(!t)return [e];let[,r,n,o]=t;if(!n)return [e];let i=n.split(",").map(l=>l.trim()),a=[];for(let l of i)for(let c of _b(r+l+o))a.push(c);return a}function HQ(e,t){return zQ(t).test(e)}function zQ(e){let t=[],r=0;for(;r<e.length;){if(e.startsWith("**",r)){let i=e.slice(r+2);if(i.length===0&&t.length===0)t.push(".*");else if(t.push(i.startsWith("/")?"(?:[^/]+/)*":"(?:/[^/]+)*?"),i.startsWith("/")){r+=3;continue}r+=2;continue}if(e[r]==="*"){t.push("[^/]*"),r+=1;continue}if(e[r]==="?"){t.push("[^/]"),r+=1;continue}if(e[r]==="{"){t.push("(?:"),r+=1;continue}if(e[r]==="}"){t.push(")"),r+=1;continue}if(e[r]===","){t.push("|"),r+=1;continue}".^$+?()[]{}|\\".includes(e[r])?t.push("\\"+e[r]):t.push(e[r]),r+=1;}let n="^"+t.join("")+"$";return new RegExp(n)}var Sb=d(()=>{s(WQ,"globMatch");s(yb,"globFilter");s(_b,"expandBraces");s(HQ,"matchOne");s(zQ,"globToRegex");});function J(e,t,r,n={}){let o=[],{rules:i}=e;if(i.length===0)return [];if(i.some(l=>l.root)||o.push({level:"error",file:relative(t,i[0].source),message:"Rules exist but no root rule (_root.md or root: true). Add a root rule."}),n.checkGlobMatches===false)return o;for(let l of i){if(l.globs.length===0)continue;let c=false;for(let m of l.globs)if(yb(r,m).length>0){c=true;break}c||o.push({level:"warning",file:relative(t,l.source),message:`globs "${l.globs.join(", ")}" match 0 files in project`});}return o}var Oe=d(()=>{Sb();s(J,"validateRules");});function Ib(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:oo}))}var kb=d(()=>{Oe();Uc();s(Ib,"lintRules");});var zf,LS=d(()=>{zf=new Set(["UserPromptSubmit","PostToolUseFailure","SessionStart"]);});function M(e,t,r){return {level:"warning",file:e,target:t,message:r}}function VQ(e){return e.length===0?"":e.length===1?e[0]:e.length===2?`${e[0]} and ${e[1]}`:`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}function ji(e,t){if(!e)return [];let r=new Set(t);return Object.keys(e).filter(n=>!r.has(n)&&!zf.has(n))}function Ui(e,t,r,n){let o=n?.unsupportedBy??t,i=VQ(r);return M(".agentsmesh/hooks.yaml",t,`${e} is not supported by ${o}; only ${i} are projected.`)}var Ie=d(()=>{LS();s(M,"createWarning");s(VQ,"formatOxfordComma");s(ji,"unsupportedHookEventNames");s(Ui,"createUnsupportedHookWarning");});function Lb(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[M(".agentsmesh/hooks.yaml","aider","Aider has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function Eb(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[M(".agentsmesh/permissions.yaml","aider","Aider has no permissions config; canonical permissions are not projected.")]}function Cb(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[M(".agentsmesh/mcp.json","aider","Aider has no MCP config file; canonical MCP servers are not projected.")]}var Ob=d(()=>{Ie();s(Lb,"lintHooks");s(Eb,"lintPermissions");s(Cb,"lintMcp");});function E(e,t){return ce(e).relative(e,t).replace(/\\/g,"/")}async function C(e,t){return xi(ce(e).join(e,t)).catch(()=>[])}function bb(e,t,r){e.set(t,r),e.set(`${t}/`,`${r}/`);}function ZQ(e,t,r,n){let o=posix.dirname(t),i=posix.dirname(r);for(;o!==n&&o!==".";)bb(e,o,i),o=posix.dirname(o),i=posix.dirname(i);}function P(e,t,r,n){e.set(t,`${r}/${basename(t,n)}.md`);}function $(e,t,r){if(!t.startsWith(`${r}/`))return;let n=t.slice(r.length+1);if(!n)return;if(!n.includes("/")){if(!n.endsWith(".md")||basename(n)==="SKILL.md")return;let u=basename(n,".md");e.set(t,`${wb}/${u}/SKILL.md`);return}let[o,...i]=n.split("/"),a=i.join("/");if(!o||!a)return;let l=o.startsWith(Fc)?Fc:o.startsWith(Hp)?Hp:null;if(l&&a==="SKILL.md"){e.set(t,`${QQ}/${o.slice(l.length)}.md`);return}let c=o.startsWith(Mc)?Mc:o.startsWith(zp)?zp:null;if(c&&a==="SKILL.md"){e.set(t,`${qQ}/${o.slice(c.length)}.md`);return}let m=`${wb}/${o}`;a==="SKILL.md"&&bb(e,`${r}/${o}`,m);let p=`${m}/${a}`;e.set(t,p),a!=="SKILL.md"&&ZQ(e,t,p,`${r}/${o}`);}function eq(e){return e.split("/").filter(Boolean)[0]??""}async function tq(){if(ES!==void 0)return ES;let{BUILTIN_TARGETS:e}=await Promise.resolve().then(()=>(Te(),Ab)),t=new Set;for(let r of e)for(let n of [r.project.rootInstructionPath,r.project.skillDir,...r.project.managedOutputs?.dirs??[],...r.project.managedOutputs?.files??[],...r.detectionPaths,r.globalSupport?.layout.rootInstructionPath,r.globalSupport?.layout.skillDir,...r.globalSupport?.layout.managedOutputs?.dirs??[],...r.globalSupport?.layout.managedOutputs?.files??[],...r.globalSupport?.detectionPaths??[]])if(n!==void 0){let o=eq(n);o.startsWith(".")&&t.add(o);}return ES=t,t}function OS(e){return e.split("/").some(t=>t.startsWith("."))}async function rq(e){let t=[],r=await tq(),n=ce(e);async function o(i){let a=n.join(e,i),l=await readdir(a,{withFileTypes:true}).catch(()=>[]);for(let c of l){let m=i?`${i}/${c.name}`:c.name;if(c.isDirectory()){if(r.has(c.name)||OS(m))continue;await o(m);continue}if(c.isSymbolicLink()&&await stat(n.join(e,m)).then(p=>p.isDirectory(),()=>false)){if(r.has(c.name)||OS(m))continue;await o(m);continue}(c.name==="AGENTS.md"||c.name==="AGENTS.override.md")&&t.push(n.join(e,m));}}return s(o,"walk"),await o(""),t}async function Vf(e,t){let r=await rq(t);for(let n of r){let o=E(t,n),i=o.endsWith("/AGENTS.md")&&o!=="AGENTS.md"&&!o.endsWith("/AGENTS.override.md"),a=o.endsWith("/AGENTS.override.md")&&o!=="AGENTS.override.md";if(!i&&!a)continue;let l=posix.dirname(o);if(OS(l))continue;let c=l.replace(/\//g,"-");e.set(o,`${XQ}/${c}.md`);}}var XQ,QQ,qQ,wb,ES,Le=d(()=>{Lt();b();$e();Se();XQ=".agentsmesh/rules",QQ=".agentsmesh/commands",qQ=".agentsmesh/agents",wb=".agentsmesh/skills";s(E,"rel");s(C,"listFiles");s(bb,"addDirectoryMapping");s(ZQ,"addAncestorMappings");s(P,"addSimpleFileMapping");s($,"addSkillLikeMapping");s(eq,"firstPathSegment");s(tq,"targetRootSegments");s(OS,"hasHiddenSegment");s(rq,"listScopedAgentsFiles");s(Vf,"addScopedAgentsMappings");});var A,re,fe,Ee=d(()=>{A=".agentsmesh/rules",re=".agentsmesh/commands",fe=".agentsmesh/agents";});async function wS(e,t,r="project"){if(r==="global"){e.set(gs,`${A}/_root.md`);for(let n of await C(t,Ar))$(e,E(t,n),Ar);e.set(el,".agentsmesh/ignore");return}e.set(Ht,`${A}/_root.md`);for(let n of await C(t,kt))$(e,E(t,n),kt);e.set(fs,".agentsmesh/ignore");}var Tb=d(()=>{Le();Uc();Ee();s(wS,"buildAiderImportPaths");});var tl,xr,Bi,so,ys,Hc,rl,xb,Pb,bS,zc=d(()=>{tl="amazon-q",xr=".amazonq/rules",Bi=".amazonq/mcp.json",so=".amazonq/cli-agents",ys=".aws/amazonq/rules",Hc=".aws/amazonq/mcp.json",rl=".aws/amazonq/cli-agents",xb=".agentsmesh/rules",Pb=".agentsmesh/mcp.json",bS=".agentsmesh/agents";});async function AS(e,t,r="project"){let n=r==="global"?ys:xr;for(let o of await C(t,n)){let i=E(t,o);P(e,i,A,".md");}}var Db=d(()=>{Le();zc();Ee();s(AS,"buildAmazonQImportPaths");});var Pr,Et,or,TS,_s,Dr,Ss,Nb,nl=d(()=>{Pr="AGENTS.md",Et=".agents/skills",or=".amp/settings.json",TS=".config/amp",_s=`${TS}/AGENTS.md`,Dr=`${TS}/skills`,Ss=`${TS}/settings.json`,Nb=".agentsmesh/rules";});async function xS(e,t,r="project"){if(r==="global"){e.set(_s,`${A}/_root.md`);for(let n of await C(t,Dr))$(e,E(t,n),Dr);e.set(Ss,".agentsmesh/mcp.json");return}e.set(Pr,`${A}/_root.md`);for(let n of await C(t,Et))$(e,E(t,n),Et);e.set(or,".agentsmesh/mcp.json");}var vb=d(()=>{Le();nl();Ee();s(xS,"buildAmpImportPaths");});var ol,tu,kn,Nr,ru,Ln,io,nu,ou,PS,ao,lo,su,Vc,DS,sl,Jf,Fb,il=d(()=>{ol="antigravity",tu=".agents",kn=`${tu}/rules`,Nr=`${kn}/general.md`,ru=`${kn}/_root.md`,Ln=`${tu}/skills`,io=`${tu}/workflows`,nu=`${tu}/antigravity/mcp_config.json`,ou=`${tu}/hooks.json`,PS=".gemini/config/hooks.json",ao=".gemini/antigravity/GEMINI.md",lo=".gemini/antigravity/skills",su=".gemini/antigravity/workflows",Vc=".gemini/antigravity/mcp_config.json",DS=".agentsmesh/rules/_root.md",sl=".agentsmesh/rules",Jf=".agentsmesh/commands",Fb=".agentsmesh/mcp.json";});async function NS(e,t,r="project"){if(r==="global"){e.set(ao,`${A}/_root.md`);for(let n of await C(t,lo))$(e,E(t,n),lo);e.set(Vc,".agentsmesh/mcp.json");return}e.set(Nr,`${A}/_root.md`),e.set(ru,`${A}/_root.md`);for(let n of await C(t,kn)){let o=E(t,n);o===Nr||o===ru||P(e,o,A,".md");}for(let n of await C(t,io))P(e,E(t,n),re,".md");for(let n of await C(t,Ln))$(e,E(t,n),Ln);}var Mb=d(()=>{Le();il();Ee();s(NS,"buildAntigravityImportPaths");});var it,iu,sr,vr,Rs,ir,co,mo,au,Is,ks,al,po,Ls,vS,FS,MS,GS,$S,jS,ll=d(()=>{it="augment-code",iu=".augment",sr=`${iu}/rules`,vr=`${iu}/commands`,Rs=`${iu}/agents`,ir=`${iu}/skills`,co=`${iu}/settings.json`,mo=".augmentignore",au=".augment",Is=`${au}/rules`,ks=`${au}/commands`,al=`${au}/agents`,po=`${au}/skills`,Ls=`${au}/settings.json`,vS=".agentsmesh/rules",FS=".agentsmesh/agents",MS=".agentsmesh/mcp.json",GS=".agentsmesh/hooks.yaml",$S=".agentsmesh/ignore",jS=".agentsmesh/permissions.yaml";});async function US(e,t,r="project"){if(r==="global"){for(let n of await C(t,Is))P(e,E(t,n),A,".md");for(let n of await C(t,ks))P(e,E(t,n),re,".md");for(let n of await C(t,al))P(e,E(t,n),fe,".md");for(let n of await C(t,po))$(e,E(t,n),po);e.set(Ls,".agentsmesh/mcp.json");return}for(let n of await C(t,sr))P(e,E(t,n),A,".md");for(let n of await C(t,vr))P(e,E(t,n),re,".md");for(let n of await C(t,Rs))P(e,E(t,n),fe,".md");for(let n of await C(t,ir))$(e,E(t,n),ir);e.set(co,".agentsmesh/mcp.json"),e.set(mo,".agentsmesh/ignore");}var Gb=d(()=>{Le();ll();Ee();s(US,"buildAugmentCodeImportPaths");});var $b,Es,Ki,lu,cu,mu,pu,uu,Cs,BS,du,Jc,fu,gu,Yf,Xf,KS,hu,WS,cl,jb,Os=d(()=>{$b="claude-code",Es="CLAUDE.md",Ki=".claude/CLAUDE.md",lu=".claude/rules",cu=".claude/commands",mu=".claude/agents",pu=".claude/skills",uu=".claude/settings.json",Cs=".claude/hooks.json",BS=".claude/output-styles",du=".claudeignore",Jc=".mcp.json",fu=".claude.json",gu=".agentsmesh/rules",Yf=".agentsmesh/commands",Xf=".agentsmesh/agents",KS=".agentsmesh/skills",hu=".agentsmesh/mcp.json",WS=".agentsmesh/permissions.yaml",cl=".agentsmesh/hooks.yaml",jb=".agentsmesh/ignore";});async function HS(e,t,r="project"){if(e.set(".claude/CLAUDE.md",`${A}/_root.md`),e.set(Cs,cl),r==="project"&&e.set("CLAUDE.md",`${A}/_root.md`),r==="global")for(let n of await C(t,".agents/skills"))$(e,E(t,n),".agents/skills");for(let n of await C(t,".claude/rules"))P(e,E(t,n),A,".md");for(let n of await C(t,".claude/commands"))P(e,E(t,n),re,".md");for(let n of await C(t,".claude/agents"))P(e,E(t,n),fe,".md");for(let n of await C(t,".claude/skills"))$(e,E(t,n),".claude/skills");}var Ub=d(()=>{Le();Os();Ee();s(HS,"buildClaudeCodeImportPaths");});var Wi,ws,ml,bs,Bb,Ft,ar,As,Hi,pl,ul,dl,fl,zS,zi,Qf,VS,JS,yu,Kb,Fr=d(()=>{Wi="cline",ws=".clinerules",ml=".clineignore",bs=".cline/cline_mcp_settings.json",Bb=".cline/mcp_settings.json",Ft=".cline/skills",ar=".cline/agents",As=".clinerules/workflows",Hi="AGENTS.md",pl=".clinerules/hooks",ul="Documents/Cline/Rules",dl="Documents/Cline/Workflows",fl="Documents/Cline/Hooks",zS=".agentsmesh/hooks.yaml",zi=".agentsmesh/rules",Qf=".agentsmesh/commands",VS=".agentsmesh/ignore",JS=".agentsmesh/mcp.json",yu=".agentsmesh/agents",Kb=".agentsmesh/skills";});async function YS(e,t,r="project"){if(r==="global"){for(let n of await C(t,ul))P(e,E(t,n),A,".md");for(let n of await C(t,dl))P(e,E(t,n),re,".md");for(let n of await C(t,Ft))$(e,E(t,n),Ft);for(let n of await C(t,ar))P(e,E(t,n),fe,".md");e.set(bs,".agentsmesh/mcp.json");return}e.set(".clinerules/_root.md",`${A}/_root.md`);for(let n of await C(t,".clinerules")){let o=E(t,n);!o.endsWith(".md")||o.includes("/workflows/")||basename(o)==="_root.md"||P(e,o,A,".md");}for(let n of await C(t,".clinerules/workflows"))P(e,E(t,n),re,".md");for(let n of await C(t,".cline/skills"))$(e,E(t,n),".cline/skills");for(let n of await C(t,ar))P(e,E(t,n),fe,".md");}var Wb=d(()=>{Le();Fr();Ee();s(YS,"buildClineImportPaths");});async function XS(e,t,r="project"){if(r==="global"?(e.set(".codex/AGENTS.md",`${A}/_root.md`),e.set(".codex/AGENTS.override.md",`${A}/_root.md`)):(e.set("AGENTS.md",`${A}/_root.md`),e.set("codex.md",`${A}/_root.md`),await Vf(e,t)),r==="project")for(let n of await C(t,".codex/instructions"))P(e,E(t,n),A,".md");for(let n of await C(t,".codex/rules")){let o=E(t,n);o.endsWith(".rules")?P(e,o,A,".rules"):o.endsWith(".md")&&P(e,o,A,".md");}for(let n of await C(t,".codex/agents"))P(e,E(t,n),fe,".toml");for(let n of await C(t,".agents/skills"))$(e,E(t,n),".agents/skills");}var Hb=d(()=>{Le();Ee();s(XS,"buildCodexCliImportPaths");});var gl,En,uo,QS,qf,Ts,qS,lr,Yc,_u,hl,Zf,eg,ZS,eR,fo=d(()=>{gl="continue",En=".continue/rules",uo=".continue/prompts",QS=".continue/mcpServers",qf=`${QS}/agentsmesh.json`,Ts=`${En}/general.md`,qS=`${En}/_root.md`,lr=".continue/skills",Yc=".continue/AGENTS.md",_u=".continue/config.yaml",hl=".continue/permissions.yaml",Zf=".agentsmesh/rules",eg=".agentsmesh/commands",ZS=".agentsmesh/mcp.json",eR=".agentsmesh/permissions.yaml";});async function tR(e,t,r="project"){e.set(Ts,`${A}/_root.md`),e.set(qS,`${A}/_root.md`);for(let n of await C(t,".continue/rules")){let o=E(t,n);o===Ts||o===qS||P(e,o,A,".md");}for(let n of await C(t,".continue/prompts"))e.set(E(t,n),`${re}/${basename(n,".md")}.md`);for(let n of await C(t,".continue/skills"))$(e,E(t,n),".continue/skills");if(r==="global")for(let n of await C(t,".agents/skills"))$(e,E(t,n),".agents/skills");}var zb=d(()=>{Le();fo();Ee();s(tR,"buildContinueImportPaths");});function sq(e,t){if(t.endsWith(".instructions.md")){e.set(t,`${A}/${basename(t,".instructions.md")}.md`);return}P(e,t,A,".md");}async function rR(e,t){e.set(".github/copilot-instructions.md",`${A}/_root.md`);for(let r of await C(t,".github/copilot"))e.set(E(t,r),`${A}/${basename(r,".instructions.md")}.md`);for(let r of await C(t,".github/instructions"))sq(e,E(t,r));for(let r of await C(t,".github/prompts"))e.set(E(t,r),`${re}/${basename(r,".prompt.md")}.md`);for(let r of await C(t,".github/agents"))e.set(E(t,r),`${fe}/${basename(r,".agent.md")}.md`);for(let r of await C(t,".github/skills"))$(e,E(t,r),".github/skills");}var Vb=d(()=>{Le();Ee();s(sq,"addCopilotInstructionMapping");s(rR,"buildCopilotImportPaths");});var Mr,Gr,dt,cr,xs,Jb,Xc,mr,yl,rg,ng,og,Qc=d(()=>{Mr="crush",Gr="CRUSH.md",dt=".crush/skills",cr="crush.json",xs=".crushignore",Jb=".config/crush",Xc=`${Jb}/crush.json`,mr=".config/crush/skills",yl=`${Jb}/CRUSH.md`,rg=".agentsmesh/rules",ng=".agentsmesh/ignore",og=".agentsmesh/mcp.json";});async function nR(e,t,r="project"){if(r==="global"){for(let n of await C(t,mr))$(e,E(t,n),mr);return}e.set(Gr,`${rg}/_root.md`),e.set(cr,og),e.set(xs,ng);for(let n of await C(t,dt))$(e,E(t,n),dt);}var Yb=d(()=>{Le();Qc();s(nR,"buildCrushImportPaths");});var Xb,Vi,Qb,$r,Ps,jr,Ur,Ct,pr,go,sg,Cn,oR,iq,qc,On,ho,Ji,Yi,qb,Zc,sR,Su,iR,qe=d(()=>{Xb="cursor",Vi="AGENTS.md",Qb=".cursorrules",$r=".cursor/rules",Ps=`${$r}/general.mdc`,jr=".cursor/commands",Ur=".cursor/agents",Ct=".cursor/skills",pr=".cursor/mcp.json",go=".cursor/hooks.json",sg=".cursor/settings.json",Cn=".cursorignore",oR=".cursorindexingignore",iq=".agentsmesh-exports/cursor",qc=`${iq}/user-rules.md`,On=".cursor/AGENTS.md",ho=".agentsmesh/rules",Ji=".agentsmesh/commands",Yi=".agentsmesh/agents",qb=".agentsmesh/skills",Zc=".agentsmesh/mcp.json",sR=".agentsmesh/permissions.yaml",Su=".agentsmesh/hooks.yaml",iR=".agentsmesh/ignore";});async function aR(e,t,r="project"){if(r==="global"){e.set(pr,".agentsmesh/mcp.json"),e.set(".cursor/AGENTS.md",`${A}/_root.md`);for(let n of await C(t,".cursor/rules"))P(e,E(t,n),A,".mdc");for(let n of await C(t,".cursor/commands"))P(e,E(t,n),re,".md");for(let n of await C(t,".cursor/agents"))P(e,E(t,n),fe,".md");for(let n of await C(t,".cursor/skills"))$(e,E(t,n),".cursor/skills");return}e.set("AGENTS.md",`${A}/_root.md`);for(let n of await C(t,".cursor/rules"))P(e,E(t,n),A,".mdc");for(let n of await C(t,".cursor/commands"))P(e,E(t,n),re,".md");for(let n of await C(t,".cursor/agents"))P(e,E(t,n),fe,".md");for(let n of await C(t,".cursor/skills"))$(e,E(t,n),".cursor/skills");}var Zb=d(()=>{Le();qe();Ee();s(aR,"buildCursorImportPaths");});var yo,Br,Ot,Ds,ig,Ns,wn,_l,eA,tA,em=d(()=>{yo="deepagents-cli",Br=".deepagents/AGENTS.md",Ot=".deepagents/skills",Ds=".mcp.json",ig=".deepagents/hooks.json",Ns=".deepagents/AGENTS.md",wn=".deepagents/skills",_l=".deepagents/.mcp.json",eA=".deepagents/hooks.json",tA=".agentsmesh/rules";});async function lR(e,t,r="project"){if(r==="global"){e.set(Ns,`${A}/_root.md`);for(let n of await C(t,wn))$(e,E(t,n),wn);e.set(_l,".agentsmesh/mcp.json");return}e.set(Br,`${A}/_root.md`);for(let n of await C(t,Ot))$(e,E(t,n),Ot);e.set(Ds,".agentsmesh/mcp.json");}var rA=d(()=>{Le();em();Ee();s(lR,"buildDeepagentsCliImportPaths");});var ur,Kr,Wr,Xi,bn,_o,vs,Fs,tm,Qi,qi,rm,nA,oA,sA,iA,aA,Sl=d(()=>{ur="factory-droid",Kr="AGENTS.md",Wr=".factory/skills",Xi=".factory/commands",bn=".factory/droids",_o=".factory/mcp.json",vs=".factory/AGENTS.md",Fs=".factory/skills",tm=".factory/commands",Qi=".factory/droids",qi=".factory/mcp.json",rm=".factory/hooks.json",nA=".factory/hooks.json",oA=".agentsmesh/rules",sA=".agentsmesh/agents",iA=".agentsmesh/commands",aA=".agentsmesh/hooks.yaml";});async function cR(e,t,r="project"){if(r==="global"){e.set(vs,`${A}/_root.md`);for(let n of await C(t,tm))P(e,E(t,n),re,".md");for(let n of await C(t,Qi))P(e,E(t,n),fe,".md");for(let n of await C(t,Fs))$(e,E(t,n),Fs);e.set(qi,".agentsmesh/mcp.json");return}e.set(Kr,`${A}/_root.md`);for(let n of await C(t,Xi))P(e,E(t,n),re,".md");for(let n of await C(t,bn))P(e,E(t,n),fe,".md");for(let n of await C(t,Wr))$(e,E(t,n),Wr);e.set(_o,".agentsmesh/mcp.json");}var lA=d(()=>{Le();Sl();Ee();s(cR,"buildFactoryDroidImportPaths");});async function mR(e,t){for(let r of await C(t,".gemini/rules"))P(e,E(t,r),A,".md");for(let r of await C(t,".gemini/commands")){let n=E(t,r);if(!n.endsWith(".toml")&&!n.endsWith(".md"))continue;let o=n.replace(/\.(toml|md)$/i,""),i=".gemini/commands/",c=(o.startsWith(i)?o.slice(i.length):o).split("/").filter(Boolean).join(":");e.set(n,`${re}/${c}.md`);}for(let r of await C(t,".gemini/agents"))P(e,E(t,r),fe,".md");for(let r of await C(t,".gemini/skills"))$(e,E(t,r),".gemini/skills");}var cA=d(()=>{Le();Ee();s(mR,"buildGeminiCliImportPaths");});var Hr,dr,Vt,So,ag,Ro,Zi,Rl,zr,Il,kl,mA,pA,uA,pR,ea=d(()=>{Hr="goose",dr=".goosehints",Vt=".agents/skills",So=".gooseignore",ag=".config/goose",Ro=`${ag}/.goosehints`,Zi=`${ag}/.gooseignore`,Rl=`${ag}/config.yaml`,zr=".agents/skills",Il=`${ag}/permission.yaml`,kl=".agents/plugins/agentsmesh/hooks/hooks.json",mA=".agentsmesh/rules",pA=".agentsmesh/ignore",uA=".agentsmesh/hooks.yaml",pR=".agentsmesh/permissions.yaml";});async function uR(e,t,r="project"){if(r==="global"){e.set(Ro,`${A}/_root.md`);for(let n of await C(t,zr))$(e,E(t,n),zr);e.set(Zi,".agentsmesh/ignore");return}e.set(dr,`${A}/_root.md`);for(let n of await C(t,Vt))$(e,E(t,n),Vt);e.set(So,".agentsmesh/ignore");}var dA=d(()=>{Le();ea();Ee();s(uR,"buildGooseImportPaths");});var Ms,An,fA,nm=d(()=>{Ms="jules",An="AGENTS.md",fA=".agentsmesh/rules";});async function dR(e,t,r="project"){r!=="global"&&e.set(An,`${A}/_root.md`);}var gA=d(()=>{nm();Ee();s(dR,"buildJulesImportPaths");});var Ll,ta,lg,hA,Io,yA,aq,Ru,El,Iu,om,sm,ku,Lu,Eu,Cu,Ou,lq,cg,Cl,_A,mg,fR,pg,SA,RA,IA,kA,im=d(()=>{Ll="junie",ta=".junie",lg=`${ta}/guidelines.md`,hA=`${ta}/ci-guidelines.md`,Io=`${ta}/AGENTS.md`,yA="AGENTS.md",aq=`${ta}/mcp`,Ru=`${aq}/mcp.json`,El=`${ta}/skills`,Iu=`${ta}/rules`,om=`${ta}/commands`,sm=`${ta}/agents`,ku=".aiignore",Lu=".junie",Eu=`${Lu}/skills`,Cu=`${Lu}/agents`,Ou=`${Lu}/commands`,lq=`${Lu}/mcp`,cg=`${lq}/mcp.json`,Cl=`${Lu}/AGENTS.md`,_A=".agents/skills",mg=".junie/allowlist.json",fR=".agentsmesh/rules/_root.md",pg=".agentsmesh/rules",SA=".agentsmesh/commands",RA=".agentsmesh/agents",IA=".agentsmesh/mcp.json",kA=".agentsmesh/ignore";});async function gR(e,t){e.set(lg,`${A}/_root.md`),e.set(Io,`${A}/_root.md`),e.set("AGENTS.md",`${A}/_root.md`);for(let r of await C(t,".junie/rules"))P(e,E(t,r),A,".md");for(let r of await C(t,".junie/commands"))P(e,E(t,r),re,".md");for(let r of await C(t,".junie/agents"))P(e,E(t,r),fe,".md");for(let r of await C(t,".junie/skills"))$(e,E(t,r),".junie/skills");}var LA=d(()=>{Le();im();Ee();s(gR,"buildJunieImportPaths");});var Mt,Ol,wu,bu,Tn,ko,Lo,Eo,Vr,Gs,wl,ug,bl,am,Al,Au,dg,lm,$s,ra,na,oa,js,Tl,Tu,EA,sa,cm,xl,CA,OA,Us=d(()=>{Mt="kilo-code",Ol="kilo.jsonc",wu=".config/kilo/kilo.jsonc",bu=".kilo",Tn="AGENTS.md",ko=`${bu}/rules`,Lo=`${bu}/commands`,Eo=`${bu}/agents`,Vr=`${bu}/skills`,Gs=`${bu}/mcp.json`,wl=".kilocodeignore",ug=".kilocode",bl=`${ug}/rules`,am=`${ug}/workflows`,Al=`${ug}/skills`,Au=`${ug}/mcp.json`,dg=".kilocodemodes",lm=".kilo",$s=`${lm}/AGENTS.md`,ra=`${lm}/rules`,na=`${lm}/commands`,oa=`${lm}/agents`,js=`${lm}/skills`,Tl=`${lm}/mcp.json`,Tu=".kilocodeignore",EA=".agents/skills",sa=".agentsmesh/rules",cm=".agentsmesh/commands",xl=".agentsmesh/agents",CA=".agentsmesh/mcp.json",OA=".agentsmesh/ignore";});async function hR(e,t,r="project"){if(r==="global"){e.set($s,`${A}/_root.md`);for(let n of await C(t,ra))P(e,E(t,n),A,".md");for(let n of await C(t,na))P(e,E(t,n),re,".md");for(let n of await C(t,oa))P(e,E(t,n),fe,".md");for(let n of await C(t,js))$(e,E(t,n),js);e.set(Tl,".agentsmesh/mcp.json");return}e.set(Tn,`${A}/_root.md`);for(let n of await C(t,ko))P(e,E(t,n),A,".md");for(let n of await C(t,Lo))P(e,E(t,n),re,".md");for(let n of await C(t,Eo))P(e,E(t,n),fe,".md");for(let n of await C(t,Vr))$(e,E(t,n),Vr);e.set(Gs,".agentsmesh/mcp.json");for(let n of await C(t,bl)){let o=E(t,n);if(basename(o)==="00-root.md"){e.set(o,`${A}/_root.md`);continue}P(e,o,A,".md");}for(let n of await C(t,am))P(e,E(t,n),re,".md");for(let n of await C(t,Al))$(e,E(t,n),Al);e.set(Au,".agentsmesh/mcp.json");}var wA=d(()=>{Le();Us();Ee();s(hR,"buildKiloCodeImportPaths");});var fr,xn,xu,Pn,Gt,Dn,ia,mq,mm,pm,Pl,Nn,aa,Dl,Pu,Du,bA,yR,_R,AA,TA,SR,xA,um=d(()=>{fr="kiro",xn="AGENTS.md",xu=".kiro",Pn=`${xu}/steering`,Gt=`${xu}/skills`,Dn=`${xu}/agents`,ia=`${xu}/hooks`,mq=`${xu}/settings`,mm=`${mq}/mcp.json`,pm=".kiroignore",Pl=".kiro/steering",Nn=".kiro/steering/AGENTS.md",aa=".kiro/skills",Dl=".kiro/agents",Pu=".kiro/settings/mcp.json",Du=".kiro/settings/kiroignore",bA=".agents/skills",yR=".agentsmesh/rules/_root.md",_R=".agentsmesh/rules",AA=".agentsmesh/agents",TA=".agentsmesh/mcp.json",SR=".agentsmesh/hooks.yaml",xA=".agentsmesh/ignore";});async function RR(e,t,r="project"){if(r==="global"){e.set(Nn,`${A}/_root.md`);for(let n of await C(t,Pl)){let o=E(t,n);o!==Nn&&P(e,o,A,".md");}for(let n of await C(t,aa))$(e,E(t,n),aa);for(let n of await C(t,Dl))P(e,E(t,n),fe,".md");return}e.set(xn,`${A}/_root.md`);for(let n of await C(t,Pn))P(e,E(t,n),A,".md");for(let n of await C(t,Gt))$(e,E(t,n),Gt);for(let n of await C(t,Dn))P(e,E(t,n),fe,".md");}var PA=d(()=>{Le();um();Ee();s(RR,"buildKiroImportPaths");});var Jr,fg,vn,Co,Oo,wo,Yr,wt,dm,Bs,la,ca,ma,Ks,Xr,DA,Nu,gg,hg,IR,kR,Ws=d(()=>{Jr="opencode",fg=".opencode",vn="AGENTS.md",Co=`${fg}/rules`,Oo=`${fg}/commands`,wo=`${fg}/agents`,Yr=`${fg}/skills`,wt="opencode.json",dm=".config/opencode",Bs=`${dm}/AGENTS.md`,la=`${dm}/rules`,ca=`${dm}/commands`,ma=`${dm}/agents`,Ks=`${dm}/skills`,Xr=`${dm}/opencode.json`,DA=".agents/skills",Nu=".agentsmesh/rules",gg=".agentsmesh/commands",hg=".agentsmesh/agents",IR=".agentsmesh/mcp.json",kR=".agentsmesh/permissions.yaml";});async function LR(e,t,r="project"){if(r==="global"){e.set(Bs,`${A}/_root.md`);for(let n of await C(t,la))P(e,E(t,n),A,".md");for(let n of await C(t,ca))P(e,E(t,n),re,".md");for(let n of await C(t,ma))P(e,E(t,n),fe,".md");for(let n of await C(t,Ks))$(e,E(t,n),Ks);e.set(Xr,".agentsmesh/mcp.json");return}e.set(vn,`${A}/_root.md`);for(let n of await C(t,Co))P(e,E(t,n),A,".md");for(let n of await C(t,Oo))P(e,E(t,n),re,".md");for(let n of await C(t,wo))P(e,E(t,n),fe,".md");for(let n of await C(t,Yr))$(e,E(t,n),Yr);e.set(wt,".agentsmesh/mcp.json");}var NA=d(()=>{Le();Ws();Ee();s(LR,"buildOpencodeImportPaths");});var bo,Qr,$t,Ao,ER,Hs,Fn,Nl,vA,FA,fm=d(()=>{bo="pi-agent",Qr="AGENTS.md",$t=".pi/skills",Ao=".pi/prompts",ER=".pi/agent",Hs=`${ER}/AGENTS.md`,Fn=`${ER}/skills`,Nl=`${ER}/prompts`,vA=".agentsmesh/rules",FA=".agentsmesh/commands";});async function CR(e,t,r="project"){if(r==="global"){e.set(Hs,`${A}/_root.md`);for(let n of await C(t,Nl))P(e,E(t,n),re,".md");for(let n of await C(t,Fn))$(e,E(t,n),Fn);return}e.set(Qr,`${A}/_root.md`);for(let n of await C(t,Ao))P(e,E(t,n),re,".md");for(let n of await C(t,$t))$(e,E(t,n),$t);}var OR=d(()=>{Le();fm();Ee();s(CR,"buildPiAgentImportPaths");});var Mn,gr,To,Gn,$n,hr,qr,zs,xo,Vs,Js,Po,Ys,wR,MA,GA,vl=d(()=>{Mn="qwen-code",gr="QWEN.md",To=".qwen/rules",Gn=".qwen/commands",$n=".qwen/agents",hr=".qwen/skills",qr=".qwen/settings.json",zs=".qwenignore",xo=".qwen/QWEN.md",Vs=".qwen/settings.json",Js=".qwen/commands",Po=".qwen/skills",Ys=".qwen/agents",wR=".agentsmesh/rules",MA=".agentsmesh/commands",GA=".agentsmesh/agents";});async function bR(e,t,r="project"){if(r==="global"){e.set(xo,`${A}/_root.md`),e.set(Vs,".agentsmesh/mcp.json");for(let n of await C(t,Js))P(e,E(t,n),re,".md");for(let n of await C(t,Ys))P(e,E(t,n),fe,".md");for(let n of await C(t,Po))$(e,E(t,n),Po);return}e.set(gr,`${A}/_root.md`),e.set(qr,".agentsmesh/mcp.json"),e.set(zs,".agentsmesh/ignore");for(let n of await C(t,To))P(e,E(t,n),A,".md");for(let n of await C(t,Gn))P(e,E(t,n),re,".md");for(let n of await C(t,$n))P(e,E(t,n),fe,".md");for(let n of await C(t,hr))$(e,E(t,n),hr);}var $A=d(()=>{Le();Ee();vl();s(bR,"buildQwenCodeImportPaths");});var Do,jn,Jt,jA,gm=d(()=>{Do="replit-agent",jn="replit.md",Jt=".agents/skills",jA=".agentsmesh/rules";});async function AR(e,t,r="project"){if(r!=="global"){e.set(jn,`${A}/_root.md`);for(let n of await C(t,Jt))$(e,E(t,n),Jt);}}var TR=d(()=>{Le();gm();Ee();s(AR,"buildReplitAgentImportPaths");});var Xs,Fl,Un,vu,Qs,qs,No,Fu,Mu,pa,Gu,yg,ua,da,Zs,Ml,$u,fa,UA,Gl,xR,_g,BA,KA,$l=d(()=>{Xs="roo-code",Fl=".roo",Un=`${Fl}/rules/00-root.md`,vu=".roorules",Qs=`${Fl}/rules`,qs=`${Fl}/commands`,No=`${Fl}/skills`,Fu=`${Fl}/mcp.json`,Mu=".rooignore",pa=".roomodes",Gu="settings/custom_modes.yaml",yg=".roo",ua=`${yg}/rules`,da=`${yg}/commands`,Zs=`${yg}/skills`,Ml="mcp_settings.json",$u=".rooignore",fa=`${yg}/AGENTS.md`,UA=".agents/skills",Gl=".agentsmesh/rules",xR=".agentsmesh/agents",_g=".agentsmesh/commands",BA=".agentsmesh/mcp.json",KA=".agentsmesh/ignore";});async function PR(e,t,r="project"){if(r==="global"){e.set(fa,`${A}/_root.md`);for(let n of await C(t,ua))P(e,E(t,n),A,".md");for(let n of await C(t,da))P(e,E(t,n),re,".md");for(let n of await C(t,Zs))$(e,E(t,n),Zs);e.set(Ml,".agentsmesh/mcp.json");return}e.set(Un,`${A}/_root.md`),e.set(vu,`${A}/_root.md`);for(let n of await C(t,Qs)){let o=E(t,n);o!==Un&&P(e,o,A,".md");}for(let n of await C(t,".roo")){let o=E(t,n);/^\.roo\/rules-[^/]+\/.+\.md$/.test(o)&&P(e,o,A,".md");}for(let n of await C(t,qs))P(e,E(t,n),re,".md");for(let n of await C(t,No))$(e,E(t,n),No);}var WA=d(()=>{Le();$l();Ee();s(PR,"buildRooCodeImportPaths");});var vo,Zr,HA,ft,ei,zA,ti,yr,hm,ju,VA,jl=d(()=>{vo="rovodev",Zr="AGENTS.md",HA=".rovodev",ft=`${HA}/skills`,ei=`${HA}/mcp.json`,zA=".rovodev",ti=".rovodev/AGENTS.md",yr=".rovodev/skills",hm=".rovodev/mcp.json",ju=".rovodev/config.yml",VA=".agentsmesh/rules";});async function DR(e,t,r="project"){if(r==="global"){e.set(ti,`${A}/_root.md`);for(let n of await C(t,yr))$(e,E(t,n),yr);e.set(hm,".agentsmesh/mcp.json");return}e.set(Zr,`${A}/_root.md`);for(let n of await C(t,ft))$(e,E(t,n),ft);e.set(ei,".agentsmesh/mcp.json");}var JA=d(()=>{Le();jl();Ee();s(DR,"buildRovodevImportPaths");});var en,Uu,_r,Sr,tn,Ul,ym,ri,rn,Bn,Bu,YA,ga,_m,Ku,XA,QA,qA,Sm=d(()=>{en="trae",Uu=".trae",_r=`${Uu}/rules`,Sr=`${_r}/project_rules.md`,tn=`${Uu}/skills`,Ul=`${Uu}/mcp.json`,ym=`${Uu}/.ignore`,ri=".trae/user_rules",rn=".trae/user_rules/rules.md",Bn=".trae/skills",Bu=".trae/mcp.json",YA=".agents/skills",ga=`${Uu}/commands`,_m=".trae/commands",Ku=".agentsmesh/rules",XA=".agentsmesh/commands",QA=".agentsmesh/mcp.json",qA=".agentsmesh/ignore";});async function NR(e,t,r="project"){if(r==="global"){e.set(rn,`${A}/_root.md`);for(let n of await C(t,ri)){let o=E(t,n);o!==rn&&P(e,o,A,".md");}for(let n of await C(t,_m))P(e,E(t,n),re,".md");for(let n of await C(t,Bn))$(e,E(t,n),Bn);return}e.set(Sr,`${A}/_root.md`);for(let n of await C(t,_r)){let o=E(t,n);o!==Sr&&P(e,o,A,".md");}for(let n of await C(t,ga))P(e,E(t,n),re,".md");for(let n of await C(t,tn))$(e,E(t,n),tn);}var ZA=d(()=>{Le();Sm();Ee();s(NR,"buildTraeImportPaths");});var Fo,Kn,vR,bt,ha,Rr,eT,Rm=d(()=>{Fo="warp",Kn="AGENTS.md",vR="WARP.md",bt=".warp/skills",ha=".mcp.json",Rr=".warp/skills",eT=".agentsmesh/rules";});async function FR(e,t,r="project"){if(r==="global"){for(let n of await C(t,Rr))$(e,E(t,n),Rr);return}e.set(Kn,`${A}/_root.md`);for(let n of await C(t,bt))$(e,E(t,n),bt);e.set(ha,".agentsmesh/mcp.json");}var tT=d(()=>{Le();Rm();Ee();s(FR,"buildWarpImportPaths");});async function MR(e,t){e.set("AGENTS.md",`${A}/_root.md`),e.set(".windsurfrules",`${A}/_root.md`),await Vf(e,t);for(let r of await C(t,".windsurf/rules"))P(e,E(t,r),A,".md");for(let r of await C(t,".windsurf/workflows"))P(e,E(t,r),re,".md");for(let r of await C(t,".windsurf/skills"))$(e,E(t,r),".windsurf/skills");}var rT=d(()=>{Le();Ee();s(MR,"buildWindsurfImportPaths");});var Wn,Mo,Go,pq,$o,nT,Bl=d(()=>{Wn=".rules",Mo=".zed/settings.json",Go=".agents/skills",pq=".config/zed",$o=`${pq}/settings.json`,nT=".agentsmesh/rules";});async function GR(e,t,r="project"){if(r==="global"){e.set($o,".agentsmesh/mcp.json");return}e.set(Wn,`${A}/_root.md`);for(let n of await C(t,Go))$(e,E(t,n),Go);e.set(Mo,".agentsmesh/mcp.json");}var oT=d(()=>{Bl();Le();Ee();s(GR,"buildZedImportPaths");});var sT=d(()=>{Tb();Db();vb();Mb();Gb();Ub();Wb();Hb();zb();Vb();Yb();Zb();rA();lA();cA();dA();gA();LA();wA();PA();NA();OR();$A();TR();WA();JA();ZA();tT();rT();oT();});var we=d(()=>{sT();});function fq(e,t){if(e===null)return t;let r;try{r=parse(e);}catch{return t}if(!r||typeof r!="object"||Array.isArray(r))return t;let n=r,o=new Set,i=n.read;if(typeof i=="string")o.add(i);else if(Array.isArray(i))for(let a of i)typeof a=="string"&&o.add(a);return o.add(Ht),n.read=[...o],stringify(n)}var gq,hq,yq,iT,Hf,kS=d(()=>{$e();Se();xw();hb();kb();Ob();we();Uc();s(fq,"mergeAiderConf");gq={name:oo,primaryRootInstructionPath:Ht,generateRules:Ow,generateCommands:bw,generateAgents:Aw,generateSkills:ww,generateIgnore:Tw,importFrom:gb},hq={rootInstructionPath:Ht,skillDir:kt,managedOutputs:{dirs:[kt],files:[Ht,jc,fs]},paths:{rulePath(e){return Ht},commandPath(e){return `${kt}/${Z(e)}/SKILL.md`},agentPath(e){return `${kt}/${V(e)}/SKILL.md`}}},yq={rootInstructionPath:gs,skillDir:Ar,managedOutputs:{dirs:[Ar],files:[gs,el]},rewriteGeneratedPath(e){return e===Ht?gs:e===fs?el:e===jc?null:e.startsWith(`${kt}/`)?e.replace(`${kt}/`,`${Ar}/`):e},paths:{rulePath(e){return gs},commandPath(e){return `${Ar}/${Z(e)}/SKILL.md`},agentPath(e){return `${Ar}/${V(e)}/SKILL.md`}}},iT={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"native",permissions:"none"},Hf={id:oo,metadata:{displayName:"Aider",category:"cli",officialUrl:"https://aider.chat",shortDescription:"Open-source terminal AI pair programmer"},generators:gq,capabilities:iT,emptyImportMessage:"No Aider config found (CONVENTIONS.md, .aider/skills, or .aiderignore).",lintRules:Ib,lint:{hooks:Lb,permissions:Eb,mcp:Cb},supportsConversion:{commands:true,agents:true},project:hq,globalSupport:{capabilities:iT,detectionPaths:[gs,el,Ar],layout:yq},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Ht],global:[gs]},canonicalDir:Ew,canonicalRootFilename:"_root.md",markAsRoot:true},ignore:{feature:"ignore",mode:"flatFile",source:{project:[fs],global:[el]},canonicalDir:".agentsmesh",canonicalFilename:Cw}},mergeGeneratedOutputContent(e,t,r,n){return n===jc?fq(e,r):null},buildImportPaths:wS,detectionPaths:[Ht,fs]};});function aT(e){let t=[];for(let r of e.rules){if(r.targets.length>0&&!r.targets.includes(tl))continue;let n=r.root?"_root":basename(r.source,".md");t.push({path:`${xr}/${n}.md`,content:r.body.trim()});}return t}function lT(e){return e.agents.map(t=>({path:`${so}/${t.name}.json`,content:JSON.stringify({name:t.name,...t.description?{description:t.description}:{},prompt:t.body.trim(),...t.tools.length>0?{allowedTools:t.tools}:{}},null,2)}))}function cT(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Bi,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}var mT=d(()=>{zc();s(aT,"generateRules");s(lT,"generateAgents");s(cT,"generateMcp");});async function pT(e,t){let r=t?.scope??"project";return X(Sg,e,r)}var uT=d(()=>{Ae();$R();s(pT,"importFromAmazonQ");});function dT(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:tl}))}var fT=d(()=>{Oe();zc();s(dT,"lintRules");});function gT(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[M(".agentsmesh/hooks.yaml","amazon-q","Amazon Q CLI hooks are per-agent only; canonical hooks are not projected as standalone config.")]:[]:[]}function hT(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[M(".agentsmesh/permissions.yaml","amazon-q","Amazon Q CLI permissions are per-agent (allowedTools); canonical permissions are not projected as standalone config.")]}var yT=d(()=>{Ie();s(gT,"lintHooks");s(hT,"lintPermissions");});async function Iq(e){let t=basename(e.relativePath,".json"),r=`${t}.md`,n=join(e.destDir,r),o;try{o=JSON.parse(e.content);}catch{return null}if(!o||typeof o!="object"||Array.isArray(o))return null;let i=o,a=typeof i.name=="string"?i.name:t,l=typeof i.description=="string"?i.description:"",c=Array.isArray(i.allowedTools)?i.allowedTools.filter(u=>typeof u=="string"):[],m=typeof i.prompt=="string"?i.prompt:typeof i.systemPrompt=="string"?i.systemPrompt:"",p=await xe(n,{name:a,description:l,tools:c},m);return {destPath:n,toPath:`${bS}/${r}`,content:p}}var _T,ST=d(()=>{de();zc();s(Iq,"amazonQAgentMapper");_T={rules:{feature:"rules",mode:"directory",source:{project:[xr],global:[ys]},canonicalDir:xb,extensions:[".md"],preset:"rule"},agents:{feature:"agents",mode:"directory",source:{project:[so],global:[rl]},canonicalDir:bS,extensions:[".json"],map:Iq},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Bi],global:[Hc]},canonicalDir:".agentsmesh",canonicalFilename:Pb}};});var RT,IT,kT=d(()=>{RT={rules:"native",additionalRules:"native",commands:"none",agents:"native",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},IT={rules:"native",additionalRules:"none",commands:"none",agents:"native",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"};});var kq,Lq,Eq,Sg,$R=d(()=>{mT();uT();fT();yT();we();ST();kT();zc();kq={name:tl,generateRules:aT,generateMcp:cT,generateAgents:lT,importFrom:pT},Lq={managedOutputs:{dirs:[xr,so],files:[Bi]},paths:{rulePath(e,t){return `${xr}/${e}.md`},commandPath(e,t){return null},agentPath(e,t){return `${so}/${e}.json`}}},Eq={managedOutputs:{dirs:[ys,rl],files:[Hc]},rewriteGeneratedPath(e){return e.startsWith(`${so}/`)?e.replace(`${so}/`,`${rl}/`):e.startsWith(`${xr}/`)?e.replace(`${xr}/`,`${ys}/`):e===Bi?Hc:e},paths:{rulePath(e,t){return `${ys}/${e}.md`},commandPath(e,t){return null},agentPath(e,t){return `${rl}/${e}.json`}}},Sg={id:tl,metadata:{displayName:"Amazon Q Developer",category:"ide",officialUrl:"https://aws.amazon.com/q/developer",shortDescription:"AWS AI coding assistant"},generators:kq,capabilities:RT,emptyImportMessage:"No Amazon Q Developer config found (.amazonq/rules/, .amazonq/cli-agents/, or .amazonq/mcp.json).",lintRules:dT,lint:{hooks:gT,permissions:hT},project:Lq,globalSupport:{capabilities:IT,detectionPaths:[ys,Hc,rl],layout:Eq},importer:_T,buildImportPaths:AS,detectionPaths:[xr,so,Bi]};});function jo(e){if(!e.hooks||Object.keys(e.hooks).length===0)return {};let t={};for(let[r,n]of Object.entries(e.hooks)){if(!Array.isArray(n))continue;let o=[];for(let i of n){if(!ms(i))continue;let a=It(i),l=to(i),c=i.type==="prompt"?l||a:a||l,m={type:i.type==="prompt"?"prompt":"command",[i.type==="prompt"?"prompt":"command"]:c};i.timeout!==void 0&&(m.timeout=i.timeout),o.push({matcher:i.matcher,hooks:[m]});}o.length>0&&(t[r]=o);}return t}var Im=d(()=>{gn();s(jo,"buildClaudeHooksObjectFromCanonical");});function LT(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes("amp")),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Pr,content:o}]:[]}function ET(e){return ae(e,Et)}function CT(e){return e.commands.map(t=>({path:`${Et}/${Z(t.name)}/SKILL.md`,content:Xe(t)}))}function OT(e){return e.agents.map(t=>({path:`${Et}/${V(t.name)}/SKILL.md`,content:je(t)}))}function wT(e,t){let r=[];if(t.has("mcp")&&e.mcp&&Object.keys(e.mcp.mcpServers).length>0&&r.push({path:or,content:JSON.stringify({"amp.mcpServers":e.mcp.mcpServers},null,2)}),t.has("hooks")&&e.hooks&&Object.keys(e.hooks).length>0){let n=jo(e);Object.keys(n).length>0&&r.push({path:or,content:JSON.stringify({"amp.hooks":n},null,2)});}if(t.has("permissions")&&e.permissions){let{allow:n,deny:o}=e.permissions,i=e.permissions.ask??[];if(n.length>0||o.length>0||i.length>0){let a={};n.length>0&&(a.allow=n),o.length>0&&(a.deny=o),i.length>0&&(a.ask=i),r.push({path:or,content:JSON.stringify({"amp.permissions":a},null,2)});}}return r}var bT=d(()=>{ie();Be();Se();$e();Im();nl();s(LT,"generateRules");s(ET,"generateSkills");s(CT,"generateCommands");s(OT,"generateAgents");s(wT,"buildAmpScopedSettings");});function ge(e,t,r){let n=r.some(o=>Cq.includes(o));return e.startsWith(`${t}/`)&&!n?`.agents/skills/${e.slice(t.length+1)}`:null}var Cq,gt=d(()=>{Cq=["amp","antigravity","codex-cli","goose","replit-agent","zed"];s(ge,"mirrorSkillsToAgents");});async function TT(e,t,r){let n=await I(join(e,t));if(n===null)return;let o;try{o=JSON.parse(n);}catch{return}if(o===null||typeof o!="object"||Array.isArray(o))return;let i=o,a=i["amp.mcpServers"]??i.mcpServers;if(a==null||typeof a!="object"||Array.isArray(a)||Object.keys(a).length===0)return;let l={};for(let[c,m]of Object.entries(a))!m||typeof m!="object"||Array.isArray(m)||(l[c]=m);Object.keys(l).length!==0&&(await Qe(e,AT,l),r.push({fromTool:"amp",fromPath:t,toPath:AT,feature:"mcp"}));}var AT,xT=d(()=>{b();In();nl();AT=".agentsmesh/mcp.json";s(TT,"importAmpMcp");});async function PT(e,t={}){let r=t.scope??"project",n=[],o=await H("amp",e,r);return n.push(...await X(Rg,e,r,{normalize:o})),await oe(e,r==="global"?Dr:Et,"amp",n,o),await TT(e,r==="global"?Ss:or,n),n}var DT=d(()=>{he();ie();Ae();xT();nl();jR();s(PT,"importFromAmp");});function NT(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:"amp"}))}var vT=d(()=>{Oe();nl();s(NT,"lintRules");});function FT(e){return e.ignore.length===0?[]:[M(".agentsmesh/ignore","amp","Amp has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}var MT=d(()=>{Ie();s(FT,"lintIgnore");});function Tq(e,t){if(e===null)return t;let r;try{let i=JSON.parse(e);r=i!==null&&typeof i=="object"&&!Array.isArray(i)?i:{};}catch{r={};}let n=JSON.parse(t);if(n===null||typeof n!="object"||Array.isArray(n))return e;let o=n;return o["amp.mcpServers"]!==void 0&&(r["amp.mcpServers"]=o["amp.mcpServers"]),o["amp.hooks"]!==void 0&&(r["amp.hooks"]=o["amp.hooks"]),o["amp.permissions"]!==void 0&&(r["amp.permissions"]=o["amp.permissions"]),JSON.stringify(r,null,2)}var wq,bq,Aq,GT,Rg,jR=d(()=>{$e();Se();bT();gt();DT();vT();MT();we();nl();wq={name:"amp",primaryRootInstructionPath:Pr,generateRules:LT,generateCommands:CT,generateAgents:OT,generateSkills:ET,importFrom:PT},bq={rootInstructionPath:Pr,skillDir:Et,managedOutputs:{dirs:[Et],files:[Pr,or]},paths:{rulePath(e){return Pr},commandPath(e){return `${Et}/${Z(e)}/SKILL.md`},agentPath(e){return `${Et}/${V(e)}/SKILL.md`}}},Aq={rootInstructionPath:_s,skillDir:Dr,managedOutputs:{dirs:[Dr],files:[_s,Ss]},rewriteGeneratedPath(e){return e===Pr?_s:e===or?Ss:e.startsWith(`${Et}/`)?e.replace(`${Et}/`,`${Dr}/`):e},mirrorGlobalPath(e,t){return ge(e,Dr,t)},paths:{rulePath(e){return _s},commandPath(e){return `${Dr}/${Z(e)}/SKILL.md`},agentPath(e){return `${Dr}/${V(e)}/SKILL.md`}}},GT={rules:"native",additionalRules:"embedded",commands:"native",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"native"};s(Tq,"mergeAmpSettings");Rg={id:"amp",metadata:{displayName:"Amp",category:"cli",officialUrl:"https://ampcode.com",shortDescription:"Sourcegraph's coding agent"},generators:wq,capabilities:GT,emptyImportMessage:"No Amp config found (AGENTS.md, .agents/skills, or .amp/settings.json).",lintRules:NT,lint:{ignore:FT},supportsConversion:{commands:true,agents:true},project:bq,globalSupport:{capabilities:GT,detectionPaths:[_s,Ss],layout:Aq},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Pr],global:[_s]},canonicalDir:Nb,canonicalRootFilename:"_root.md",markAsRoot:true}},emitScopedSettings(e,t,r){return wT(e,r)},mergeGeneratedOutputContent(e,t,r,n){return n===or||n===Ss?Tq(t?.content??e,r):null},sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:xS,detectionPaths:[Pr,or],conversionDefaults:{commandsToSkills:true,agentsToSkills:true}};});function $T(e){let t=e.rules.find(n=>n.root);if(!t)return [];let r=[{path:Nr,content:t.body.trim()||""}];for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes("antigravity"))continue;let o=basename(n.source,".md");r.push({path:`${kn}/${o}.md`,content:n.body.trim()||""});}return r}function jT(e){return e.commands.map(t=>{let r=t.description.trim(),n=t.body.trim(),o=r&&n&&!n.startsWith(r)?`${r}
|
|
65
65
|
|
|
66
|
-
${n}`:n||r;return {path:`${io}/${t.name}.md`,content:o}})}function
|
|
67
|
-
`)}]}var
|
|
66
|
+
${n}`:n||r;return {path:`${io}/${t.name}.md`,content:o}})}function UT(e){return ae(e,Ln)}function BT(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:nu,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function KT(e){return e.agents.map(t=>({path:`${Ln}/${V(t.name)}/SKILL.md`,content:je(t)}))}function WT(e){let t=e.rules.find(n=>n.root),r=e.rules.filter(n=>n.root?false:n.targets.length===0||n.targets.includes("antigravity"));return le(t?.body.trim()??"",r)}function HT(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=jo(e);return Object.keys(t).length===0?[]:[{path:ou,content:JSON.stringify(t,null,2)}]}function zT(e){return []}var VT=d(()=>{ie();Be();Se();Im();il();s($T,"generateRules");s(jT,"generateCommands");s(UT,"generateSkills");s(BT,"generateMcp");s(KT,"generateAgents");s(WT,"renderAntigravityGlobalInstructions");s(HT,"generateHooks");s(zT,"generatePermissions");});var JT,YT,XT=d(()=>{Za();JT={rules:"native",additionalRules:"native",commands:yn("partial","workflows"),agents:"none",skills:"native",mcp:"none",hooks:"native",ignore:"none",permissions:"partial"},YT={rules:"native",additionalRules:"embedded",commands:yn("partial","workflows"),agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"partial"};});function Pq(e){let t=e.replace(/\\/g,"/");return !t.startsWith("rules/")||t.endsWith("/")||!t.endsWith(".md")?null:t}async function Uo(e){let t=hw(e.content),r=[];if(t.rules.length===0)return {rootContent:t.rootContent,results:r};await O(join(e.projectRoot,e.rulesDir));for(let n of t.rules){let o=Pq(n.source);if(o===null||o==="rules/_root.md")continue;let i=join(e.projectRoot,".agentsmesh",o),a=e.normalize(n.body,e.sourcePath,i),{frontmatter:l,body:c}=T(a),m=await z(i,{...l,root:false,description:n.description||void 0,globs:n.globs.length>0?n.globs:void 0,targets:n.targets.length>0?n.targets:void 0},c);await L(i,m),r.push({fromTool:e.fromTool,fromPath:e.sourcePath,toPath:`.agentsmesh/${o}`,feature:"rules"});}return {rootContent:t.rootContent,results:r}}var km=d(()=>{b();U();Be();de();s(Pq,"canonicalRulePath");s(Uo,"splitEmbeddedRulesToCanonical");});async function Dq(e,t,r,n){let o=n==="global"?ao:Nr,i=n==="project"?[o,ru]:[o];for(let a of i){let l=join(e,a),c=await I(l);if(c===null)continue;let m=join(e,DS),p=await Uo({content:c,projectRoot:e,rulesDir:sl,sourcePath:l,fromTool:ol,normalize:r});t.push(...p.results);let{body:u}=T(r(p.rootContent,l,m)),f=await z(m,{root:true},u);await O(join(e,sl)),await L(m,f),t.push({fromTool:ol,fromPath:l,toPath:DS,feature:"rules"});return}}async function qT(e,t={}){let r=t.scope??"project",n=[],o=await H(ol,e,r);return await Dq(e,n,o,r),n.push(...await X(Ig,e,r,{normalize:o})),await oe(e,r==="global"?lo:Ln,ol,n,o),n}var ZT=d(()=>{he();b();U();ie();Ae();de();km();il();BR();s(Dq,"importRootRule");s(qT,"importFromAntigravity");});var rx,nx,ox=d(()=>{U();de();il();rx=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{if(basename(e)==="general.md"||basename(e)==="_root.md")return null;let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${sl}/${e}`,content:await z(n,{root:false,description:typeof o.description=="string"?o.description:void 0,globs:Array.isArray(o.globs)?o.globs:void 0},i)}},"nonRootRuleMapper"),nx=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Jf}/${e}`,content:await Ce(n,{hasDescription:typeof o.description=="string",description:typeof o.description=="string"?o.description:void 0,hasAllowedTools:false,allowedTools:[]},i)}},"workflowMapper");});function sx(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:ol}))}var ix=d(()=>{Oe();il();s(sx,"lintRules");});function ax(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[M(".agentsmesh/permissions.yaml","antigravity","Antigravity permissions are managed via tool approval in Gemini IDE; canonical permissions are not projected as config files.")]}var lx=d(()=>{Ie();s(ax,"lintPermissions");});var Nq,vq,Fq,Ig,BR=d(()=>{Se();VT();il();XT();ZT();ox();ix();lx();we();Nq={name:"antigravity",primaryRootInstructionPath:Nr,generateRules:$T,generateCommands:jT,generateAgents:KT,generateSkills:UT,generateMcp:BT,generateHooks:HT,generatePermissions:zT,importFrom:qT},vq={rootInstructionPath:Nr,skillDir:".agents/skills",managedOutputs:{dirs:[kn,io,Ln],files:[Nr,ou]},rewriteGeneratedPath(e){return e===nu?null:e},paths:{rulePath(e,t){return `${kn}/${e}.md`},commandPath(e,t){return `${io}/${e}.md`},agentPath(e){return `${Ln}/${V(e)}/SKILL.md`}}},Fq={rootInstructionPath:ao,renderPrimaryRootInstruction:WT,skillDir:lo,managedOutputs:{dirs:[lo,su],files:[ao,Vc,PS]},rewriteGeneratedPath(e){return e===ou?PS:e===Nr?ao:e.startsWith(`${kn}/`)?null:e.startsWith(".agents/skills/")?e.replace(".agents/skills",lo):e.startsWith(`${io}/`)?e.replace(io,su):e===nu?Vc:e},paths:{rulePath(e,t){return ao},commandPath(e,t){return `${su}/${e}.md`},agentPath(e){return `${lo}/${V(e)}/SKILL.md`}}},Ig={id:"antigravity",metadata:{displayName:"Antigravity",category:"ide",officialUrl:"https://antigravity.google",shortDescription:"Google's agentic IDE"},generators:Nq,capabilities:JT,emptyImportMessage:"No Antigravity config found (.agents/rules/, .agents/skills/, or .agents/workflows/).",supportsConversion:{agents:true},lintRules:sx,lint:{permissions:ax},project:vq,globalSupport:{capabilities:YT,detectionPaths:[".gemini/antigravity/GEMINI.md",".gemini/antigravity/skills",".gemini/antigravity/workflows",".gemini/antigravity/mcp_config.json"],layout:Fq},importer:{rules:{feature:"rules",mode:"directory",source:{project:[kn]},canonicalDir:sl,extensions:[".md"],map:rx},commands:{feature:"commands",mode:"directory",source:{project:[io],global:[su]},canonicalDir:Jf,extensions:[".md"],map:nx},mcp:{feature:"mcp",mode:"flatFile",source:{global:[Vc]},canonicalDir:".agentsmesh",canonicalFilename:Fb}},buildImportPaths:NS,detectionPaths:[".agents/rules/general.md",".agents/rules/",".agents/skills/",".agents/workflows/"],conversionDefaults:{agentsToSkills:true}};});function Gq(e){let t={};return e.globs.length>0||e.trigger==="manual"||e.trigger==="model_decision"?(t.type="agent_requested",e.description&&(t.description=e.description),e.globs.length>0&&(t.globs=e.globs)):(t.type="always_apply",e.description&&(t.description=e.description)),t}function $q(e){let t={};return e.description&&(t.description=e.description),t}function cx(e){let t=[];for(let r of e.rules)if(!(r.targets.length>0&&!r.targets.includes(it)))if(r.root){let n={type:"always_apply"};r.description&&(n.description=r.description),t.push({path:`${sr}/_root.md`,content:x(n,r.body.trim())});}else {let n=basename(r.source,".md");t.push({path:`${sr}/${n}.md`,content:x(Gq(r),r.body.trim())});}return t}function mx(e){return e.commands.map(t=>({path:`${vr}/${t.name}.md`,content:x($q(t),t.body.trim())}))}function jq(e){let t={name:e.name};return e.description&&(t.description=e.description),t}function px(e){return e.agents.map(t=>({path:`${Rs}/${t.name}.md`,content:x(jq(t),t.body.trim())}))}function ux(e){return ae(e,ir)}function dx(e){return e.ignore.length===0?[]:[{path:mo,content:e.ignore.join(`
|
|
67
|
+
`)}]}var fx=d(()=>{ie();U();ll();s(Gq,"ruleFrontmatter");s($q,"commandFrontmatter");s(cx,"generateRules");s(mx,"generateCommands");s(jq,"agentFrontmatter");s(px,"generateAgents");s(ux,"generateSkills");s(dx,"generateIgnore");});function Uq(e){if(!Array.isArray(e))return null;let t=[],r=[],n=[];for(let i of e){if(!i||typeof i!="object")continue;let a=i,l=typeof a.toolName=="string"?a.toolName:void 0,c=a.permission;!l||!c||typeof c!="object"||a.shellInputRegex===void 0&&(c.type==="allow"?t.push(l):c.type==="deny"?r.push(l):c.type==="ask-user"&&n.push(l));}if(t.length===0&&r.length===0&&n.length===0)return null;let o={allow:t,deny:r};return n.length>0&&(o.ask=n),o}function Bq(e){let t={};for(let[r,n]of Object.entries(e)){if(!Array.isArray(n))continue;let o=[];for(let i of n){if(!i||typeof i!="object")continue;let a=i,l=typeof a.matcher=="string"?a.matcher:".*",c=Array.isArray(a.hooks)?a.hooks:[];for(let m of c){let p=typeof m.command=="string"?m.command:void 0;if(!p)continue;let u={matcher:l,type:"command",command:p};typeof m.timeout=="number"&&(u.timeout=m.timeout),o.push(u);}}o.length>0&&(t[r]=o);}return t}async function hx(e,t,r,n={}){let o=await I(join(e,t));if(o===null)return;let i;try{i=JSON.parse(o);}catch{return}if(i.mcpServers&&typeof i.mcpServers=="object"){let l=i.mcpServers;await Qe(e,MS,l),r.push({fromTool:it,fromPath:join(e,t),toPath:MS,feature:"mcp"});}let a=i.hooks;if(a&&typeof a=="object"&&!Array.isArray(a)){let l=Bq(a);if(Object.keys(l).length>0){let c=join(e,GS);await O(dirname(c)),await L(c,stringify(l)),r.push({fromTool:it,fromPath:join(e,t),toPath:GS,feature:"hooks"});}}if(n.includePermissions){let l=Uq(i.toolPermissions);if(l){let c=join(e,jS);await O(dirname(c)),await L(c,stringify(l)),r.push({fromTool:it,fromPath:join(e,t),toPath:jS,feature:"permissions"});}}}async function yx(e,t,r){let n=await I(join(e,t));if(n===null)return;let o=n.split(`
|
|
68
68
|
`).map(a=>a.trim()).filter(a=>a.length>0&&!a.startsWith("#"));if(o.length===0)return;let i=join(e,$S);await O(dirname(i)),await L(i,o.join(`
|
|
69
|
-
`)),r.push({fromTool:it,fromPath:join(e,t),toPath:$S,feature:"ignore"});}var
|
|
69
|
+
`)),r.push({fromTool:it,fromPath:join(e,t),toPath:$S,feature:"ignore"});}var _x=d(()=>{b();In();ll();s(Uq,"parseToolPermissions");s(Bq,"augmentHooksToCanonical");s(hx,"importAugmentSettings");s(yx,"importAugmentIgnore");});function Kq(e,t){let r={root:t,description:typeof e.description=="string"?e.description:void 0,globs:Array.isArray(e.globs)?e.globs:[]};return (e.type==="agent_requested"||e.agent_requested===true)&&(r.trigger="model_decision"),r}async function Wq(e,t,r,n){let o=n==="global"?Is:sr,i=join(e,vS);t.push(...await Re({srcDir:join(e,o),destDir:i,extensions:[".md"],fromTool:it,normalize:r,mapEntry:s(async({relativePath:a,normalizeTo:l})=>{let c=a==="_root.md"||basename(a)==="_root.md",m=join(i,a),{frontmatter:p,body:u}=T(l(m));return {destPath:m,toPath:`${vS}/${a}`,feature:"rules",content:await z(m,Kq(p,c),u)}},"mapEntry")}));}async function Hq(e,t,r,n){let o=n==="global"?ks:vr,i=join(e,".agentsmesh/commands");t.push(...await Re({srcDir:join(e,o),destDir:i,extensions:[".md"],fromTool:it,normalize:r,mapEntry:s(async({relativePath:a,normalizeTo:l})=>{let c=basename(a,".md"),m=join(i,`${c}.md`),{frontmatter:p,body:u}=T(l(m)),f=typeof p.description=="string"?p.description:"";return {destPath:m,toPath:`.agentsmesh/commands/${c}.md`,feature:"commands",content:await Ce(m,{description:f,hasDescription:true,hasAllowedTools:false},u)}},"mapEntry")}));}async function zq(e,t,r,n){let o=n==="global"?al:Rs,i=join(e,FS);t.push(...await Re({srcDir:join(e,o),destDir:i,extensions:[".md"],fromTool:it,normalize:r,mapEntry:s(async({relativePath:a,normalizeTo:l})=>{let c=join(i,a),{frontmatter:m,body:p}=T(l(c));return {destPath:c,toPath:`${FS}/${a}`,feature:"agents",content:await xe(c,m,p)}},"mapEntry")}));}async function Rx(e,t={}){let r=t.scope??"project",n=[],o=await H(it,e,r);return await Wq(e,n,o,r),await Hq(e,n,o,r),await zq(e,n,o,r),await oe(e,r==="global"?po:ir,it,n,o),await hx(e,r==="global"?Ls:co,n,{includePermissions:r==="global"}),r==="project"&&await yx(e,mo,n),n}var Ix=d(()=>{he();nr();ie();de();U();_x();ll();s(Kq,"canonicalRuleMeta");s(Wq,"importRules");s(Hq,"importCommands");s(zq,"importAgents");s(Rx,"importFromAugmentCode");});function kx(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:it}))}var Lx=d(()=>{Oe();ll();s(kx,"lintRules");});function Cx(e){return !e.hooks||Object.keys(e.hooks).length===0?[]:ji(e.hooks,Ex).map(t=>Ui(t,"augment-code",Ex,{unsupportedBy:"AugmentCode hooks"}))}var Ex,Ox=d(()=>{Ie();Ex=["PreToolUse","PostToolUse","SessionStart","SessionEnd","Stop"];s(Cx,"lintHooks");});function Vq(e){let t={};for(let[r,n]of Object.entries(e))!n||n.length===0||(t[r]=n.map(o=>({matcher:o.matcher,hooks:[{type:"command",command:o.command,...o.timeout!==void 0?{timeout:o.timeout}:{}}]})));return t}function Jq(e){if(!e)return;let t=[];for(let r of e.allow??[])t.push({toolName:r,permission:{type:"allow"}});for(let r of e.deny??[])t.push({toolName:r,permission:{type:"deny"}});for(let r of e.ask??[])t.push({toolName:r,permission:{type:"ask-user"}});return t.length>0?t:void 0}function wx(e,t,r){let n={};if(t.has("mcp")&&e.mcp&&Object.keys(e.mcp.mcpServers).length>0&&(n.mcpServers=e.mcp.mcpServers),t.has("hooks")&&e.hooks&&Object.keys(e.hooks).length>0&&(n.hooks=Vq(e.hooks)),r==="global"&&t.has("permissions")){let o=Jq(e.permissions);o&&(n.toolPermissions=o);}return Object.keys(n).length===0?null:JSON.stringify(n,null,2)}function bx(e,t){if(e===null)return t;let r;try{let i=JSON.parse(e);r=i!==null&&typeof i=="object"&&!Array.isArray(i)?i:{};}catch{r={};}let n=JSON.parse(t);if(n===null||typeof n!="object"||Array.isArray(n))return e;let o=n;return o.mcpServers!==void 0&&(r.mcpServers=o.mcpServers),o.hooks!==void 0&&(r.hooks=o.hooks),o.toolPermissions!==void 0&&(r.toolPermissions=o.toolPermissions),JSON.stringify(r,null,2)}var Ax=d(()=>{s(Vq,"serializeHooksForSettings");s(Jq,"serializeToolPermissions");s(wx,"buildSettingsContent");s(bx,"mergeAugmentSettings");});var Yq,Xq,Qq,qq,Zq,Tx,xx=d(()=>{fx();Ix();Lx();Ox();we();Ax();ll();Yq={name:it,generateRules:cx,generateCommands:mx,generateAgents:px,generateSkills:ux,generateIgnore:dx,importFrom:Rx},Xq={skillDir:ir,managedOutputs:{dirs:[sr,vr,Rs,ir],files:[co,mo]},paths:{rulePath(e){return `${sr}/${e}.md`},commandPath(e){return `${vr}/${e}.md`},agentPath(e){return `${Rs}/${e}.md`}}},Qq={skillDir:po,managedOutputs:{dirs:[Is,ks,al,po],files:[Ls]},rewriteGeneratedPath(e){return e.startsWith(`${sr}/`)?e.replace(`${sr}/`,`${Is}/`):e.startsWith(`${vr}/`)?e.replace(`${vr}/`,`${ks}/`):e.startsWith(`${ir}/`)?e.replace(`${ir}/`,`${po}/`):e===co?Ls:e===mo?null:e},paths:{rulePath(e){return `${Is}/${e}.md`},commandPath(e){return `${ks}/${e}.md`},agentPath(e){return `${al}/${e}.md`}}},qq={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},Zq={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"native"},Tx={id:it,metadata:{displayName:"Augment Code",category:"ide",officialUrl:"https://www.augmentcode.com",shortDescription:"Codebase-aware AI for IDEs"},generators:Yq,capabilities:qq,emptyImportMessage:"No AugmentCode config found (.augment/rules, .augment/commands, .augment/skills, .augment/settings.json, or .augmentignore).",lintRules:kx,lint:{hooks:Cx},project:Xq,globalSupport:{capabilities:Zq,detectionPaths:[Is,ks,po,Ls],layout:Qq},emitScopedSettings(e,t,r){let n=wx(e,r,t);return n===null?[]:[{path:co,content:n}]},mergeGeneratedOutputContent(e,t,r,n){return n===co||n===Ls?bx(e,r):null},buildImportPaths:US,detectionPaths:[sr,vr,ir,co,mo]};});function Px(e){let t=[],r=e.rules.find(o=>o.root);r&&t.push({path:Es,content:r.body.trim()?r.body:""});let n=e.rules.filter(o=>!o.root&&(o.targets.length===0||o.targets.includes("claude-code")));for(let o of n){let i=basename(o.source,".md"),a={};o.description&&(a.description=o.description),o.globs.length>0&&(a.globs=o.globs);let l=x(a,o.body.trim()||"");t.push({path:`${lu}/${i}.md`,content:l});}return t}function Dx(e){return e.commands.map(t=>{let r={description:t.description,"allowed-tools":t.allowedTools.length>0?t.allowedTools:void 0};r["allowed-tools"]===void 0&&delete r["allowed-tools"];let n=x(r,t.body.trim()||"");return {path:`${cu}/${t.name}.md`,content:n}})}function Nx(e){return e.agents.map(t=>{let r={name:t.name,description:t.description,tools:t.tools.length>0?t.tools:void 0,disallowedTools:t.disallowedTools.length>0?t.disallowedTools:void 0,model:t.model||void 0,permissionMode:t.permissionMode||void 0,maxTurns:t.maxTurns>0?t.maxTurns:void 0,mcpServers:t.mcpServers.length>0?t.mcpServers:void 0,hooks:Object.keys(t.hooks).length>0?t.hooks:void 0,skills:t.skills.length>0?t.skills:void 0,memory:t.memory||void 0};Object.keys(r).forEach(a=>{r[a]===void 0&&delete r[a];});let n=t.body.trim()||"",o=/^##\s*Role\b/m.test(n)?n:`## Role
|
|
70
70
|
|
|
71
|
-
${n}`,i=x(r,o);return {path:`${mu}/${t.name}.md`,content:i}})}function
|
|
71
|
+
${n}`,i=x(r,o);return {path:`${mu}/${t.name}.md`,content:i}})}function vx(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:Jc,content:t}]}function Fx(e){let t=[];for(let r of e.skills){let n={name:r.name,description:r.description||void 0};n.description===void 0&&delete n.description;let o=r.body.trim()||"",i=!o||/^##\s*Purpose\b/m.test(o)?o:`## Purpose
|
|
72
72
|
|
|
73
|
-
${o}`,a=x(n,i);t.push({path:`${pu}/${r.name}/SKILL.md`,content:a});for(let l of r.supportingFiles){let c=l.relativePath.replace(/\\/g,"/");t.push({path:`${pu}/${r.name}/${c}`,content:l.content});}}return t}function
|
|
74
|
-
`);return [{path:du,content:t}]}var
|
|
73
|
+
${o}`,a=x(n,i);t.push({path:`${pu}/${r.name}/SKILL.md`,content:a});for(let l of r.supportingFiles){let c=l.relativePath.replace(/\\/g,"/");t.push({path:`${pu}/${r.name}/${c}`,content:l.content});}}return t}function Mx(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];if(t.length===0&&r.length===0&&n.length===0)return [];let o=JSON.stringify({permissions:{allow:t,deny:r,ask:n}},null,2);return [{path:uu,content:o}]}function Gx(e,t){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let r=jo(e);if(Object.keys(r).length===0)return [];if(t?.scope==="global")return [{path:Cs,content:JSON.stringify(r,null,2)}];let n=JSON.stringify({hooks:r},null,2);return [{path:uu,content:n}]}function $x(e){if(!e.ignore||e.ignore.length===0)return [];let t=e.ignore.join(`
|
|
74
|
+
`);return [{path:du,content:t}]}var jx=d(()=>{U();Os();Im();s(Px,"generateRules");s(Dx,"generateCommands");s(Nx,"generateAgents");s(vx,"generateMcp");s(Fx,"generateSkills");s(Mx,"generatePermissions");s(Gx,"generateHooks");s($x,"generateIgnore");});function rZ(e){let t=e.description.trim();return t||(basename(e.source)||"rule").replace(/\.md$/i,"")||"Rule"}function Ux(e){let t=e.rules.find(o=>o.root),r=(t?.body??"").trim();return r?`# Global Instructions
|
|
75
75
|
|
|
76
76
|
## ${t?rZ(t):"Guidance"}
|
|
77
77
|
|
|
78
78
|
${r}
|
|
79
|
-
`:""}var
|
|
80
|
-
`);continue}let h=await B(c);for(let y of h){let _=await I(y);if(_===null)continue;let R=relative(c,y),k=join(p,R);await O(dirname(k));let w=r(_,y,k);await L(k,R==="SKILL.md"?await ro(k,g.value.frontmatter,g.value.body):w);let D=`${KS}/${m}/${R}`;t.push({fromTool:"claude-code",fromPath:y,toPath:D,feature:"skills"});}}}var
|
|
79
|
+
`:""}var Bx=d(()=>{s(rZ,"ruleSectionTitle");s(Ux,"renderClaudeGlobalPrimaryInstructions");});function Wx(e,t){return e===null?"created":e!==t?"updated":"unchanged"}async function Hx(e,t,r,n){if(r!=="global")return [];let o=n.has("agents"),i=n.has("commands");if(!o&&!i)return [];let a=[];if(o)for(let l of e.agents){if(!l.outputStyle)continue;let c={name:l.name,description:l.description||void 0},m=x(c,l.body.trim()),p=`${BS}/${l.name}.md`,u=await I(join(t,p));a.push({target:"claude-code",path:p,content:m,currentContent:u??void 0,status:Wx(u,m)});}if(i)for(let l of e.commands){if(!l.outputStyle)continue;let c={name:l.name,description:l.description||void 0},m=x(c,l.body.trim()),p=`${BS}/${l.name}.md`,u=await I(join(t,p));a.push({target:"claude-code",path:p,content:m,currentContent:u??void 0,status:Wx(u,m)});}return a}var zx=d(()=>{b();U();Os();s(Wx,"computeStatus");s(Hx,"generateClaudeGlobalExtras");});function Vx(e){let t={};for(let[r,n]of Object.entries(e)){if(!Array.isArray(n))continue;let o=[];for(let i of n){if(!i||typeof i!="object")continue;let a=i,l=typeof a.matcher=="string"?a.matcher:"";if(!l)continue;let c=Array.isArray(a.hooks)?a.hooks:[];for(let m of c){let p=m.type==="prompt"?"prompt":"command";if(!ms({...m,type:p}))continue;let u=p==="prompt"?to(m)||It(m):It(m)||to(m),f={matcher:l,type:p,command:u};typeof m.timeout=="number"&&(f.timeout=m.timeout),o.push(f);}}o.length>0&&(t[r]=o);}return t}async function Jx(e,t){let r=join(e,Cs),n=await I(r);if(n===null)return false;let o;try{o=JSON.parse(n);}catch{return false}if(!o||typeof o!="object"||Array.isArray(o))return false;let i=Vx(o);if(Object.keys(i).length===0)return false;let a=stringify(i),l=join(e,cl);return await O(dirname(l)),await L(l,a),t.push({fromTool:"claude-code",fromPath:r,toPath:cl,feature:"hooks"}),true}async function Yx(e,t){let r=t.some(m=>m.feature==="hooks"&&m.fromPath.replace(/\\/g,"/").endsWith(Cs)),n=join(e,uu),o=await I(n);if(!o)return;let i;try{i=JSON.parse(o);}catch{return}if(!t.some(m=>m.feature==="mcp")&&i.mcpServers&&typeof i.mcpServers=="object"){let m=i.mcpServers;await Qe(e,hu,m),t.push({fromTool:"claude-code",fromPath:n,toPath:hu,feature:"mcp"});}let l=i.permissions;if(l&&typeof l=="object"&&!Array.isArray(l)){let m=l,p=Array.isArray(m.allow)?m.allow.filter(g=>typeof g=="string"):[],u=Array.isArray(m.deny)?m.deny.filter(g=>typeof g=="string"):[],f=Array.isArray(m.ask)?m.ask.filter(g=>typeof g=="string"):[];if(p.length>0||u.length>0||f.length>0){let g=stringify({allow:p,deny:u,ask:f}),h=join(e,WS);await O(dirname(h)),await L(h,g),t.push({fromTool:"claude-code",fromPath:n,toPath:WS,feature:"permissions"});}}let c=i.hooks;if(!r&&c&&typeof c=="object"&&!Array.isArray(c)){let m=Vx(c);if(Object.keys(m).length>0){let p=stringify(m),u=join(e,cl);await O(dirname(u)),await L(u,p),t.push({fromTool:"claude-code",fromPath:n,toPath:cl,feature:"hooks"});}}}var Xx=d(()=>{gn();b();In();Os();s(Vx,"claudeHooksToCanonical");s(Jx,"importClaudeHooksJson");s(Yx,"importSettings");});async function qx(e,t,r){let n=join(e,pu),o=join(e,KS),a=(await B(n)).filter(l=>l.endsWith("SKILL.md"));for(let l of a){let c=dirname(l),m=basename(c),p=join(o,m),u=await I(l);if(u===null)continue;let f=r(u,l,join(p,"SKILL.md")),g=un(f,l);if(!g.ok){process.stderr.write(`\u26A0 skipping ${l}: ${g.error.message}
|
|
80
|
+
`);continue}let h=await B(c);for(let y of h){let _=await I(y);if(_===null)continue;let R=relative(c,y),k=join(p,R);await O(dirname(k));let w=r(_,y,k);await L(k,R==="SKILL.md"?await ro(k,g.value.frontmatter,g.value.body):w);let D=`${KS}/${m}/${R}`;t.push({fromTool:"claude-code",fromPath:y,toPath:D,feature:"skills"});}}}var Zx=d(()=>{b();U();de();Os();s(qx,"importClaudeSkills");});async function eP(e,t={}){let r=t.scope??"project",n=[],o=await H("claude-code",e,r);return n.push(...await X(kg,e,r,{normalize:o})),await qx(e,n,o),await Jx(e,n),await Yx(e,n),n}var tP=d(()=>{he();Ae();Xx();Zx();zR();s(eP,"importFromClaudeCode");});var rP,nP,oP,sP=d(()=>{U();de();vt();Os();rP=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${gu}/${e}`,content:await z(n,{...o,root:false},i)}},"claudeRuleMapper"),nP=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n)),a=Tr(o.allowedTools),l=a.length>0?a:Tr(o["allowed-tools"]);return {destPath:n,toPath:`${Yf}/${e}`,content:await Ce(n,{description:typeof o.description=="string"?o.description:void 0,hasDescription:Object.prototype.hasOwnProperty.call(o,"description"),allowedTools:l,hasAllowedTools:Object.prototype.hasOwnProperty.call(o,"allowedTools")||Object.prototype.hasOwnProperty.call(o,"allowed-tools")},i)}},"claudeCommandMapper"),oP=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Xf}/${e}`,content:await xe(n,o,i)}},"claudeAgentMapper");});function iP(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(i=>({...i,target:$b}))}var aP=d(()=>{Oe();Os();s(iP,"lintRules");});var sZ,lP,iZ,aZ,kg,zR=d(()=>{jx();Os();gt();Bx();zx();tP();sP();aP();we();sZ={name:"claude-code",primaryRootInstructionPath:Es,generateRules:Px,generateCommands:Dx,generateAgents:Nx,generateSkills:Fx,generateMcp:vx,generatePermissions:Mx,generateHooks:Gx,generateIgnore:$x,importFrom:eP},lP={rootInstructionPath:Es,skillDir:".claude/skills",managedOutputs:{dirs:[".claude/agents",".claude/commands",".claude/rules",".claude/skills"],files:[Es,Ki,".claude/settings.json",".claudeignore",".mcp.json"]},paths:{rulePath(e,t){return `.claude/rules/${e}.md`},commandPath(e,t){return `.claude/commands/${e}.md`},agentPath(e,t){return `.claude/agents/${e}.md`}}},iZ={rootInstructionPath:Ki,skillDir:".claude/skills",renderPrimaryRootInstruction:Ux,managedOutputs:{dirs:[".claude/agents",".claude/commands",".claude/rules",".claude/skills",".claude/output-styles",".agents/skills"],files:[Ki,".claude/settings.json",fu,Cs,".claudeignore"]},rewriteGeneratedPath(e){return e===Es?Ki:e===Jc?fu:e},mirrorGlobalPath(e,t){return ge(e,".claude/skills",t)},paths:lP.paths},aZ={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"native"},kg={id:"claude-code",metadata:{displayName:"Claude Code",category:"cli",officialUrl:"https://www.anthropic.com/claude-code",shortDescription:"Anthropic's terminal coding agent"},generators:sZ,capabilities:{rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"native"},emptyImportMessage:"No Claude Code config found (CLAUDE.md or .claude/rules/*.md).",lintRules:iP,project:lP,globalSupport:{capabilities:aZ,detectionPaths:[".claude/CLAUDE.md",".claude/rules",".claude/commands",".claude/agents",".claude/skills",".claude/settings.json",".claude/hooks.json",".claude/output-styles",".claudeignore",".claude.json",".agents/skills"],layout:iZ,scopeExtras:Hx},importer:{rules:[{feature:"rules",mode:"singleFile",source:{project:[Es,Ki],global:[Ki]},canonicalDir:gu,canonicalRootFilename:"_root.md",markAsRoot:true},{feature:"rules",mode:"directory",source:{project:[lu],global:[lu]},canonicalDir:gu,extensions:[".md"],map:rP}],commands:{feature:"commands",mode:"directory",source:{project:[cu],global:[cu]},canonicalDir:Yf,extensions:[".md"],map:nP},agents:{feature:"agents",mode:"directory",source:{project:[mu],global:[mu]},canonicalDir:Xf,extensions:[".md"],map:oP},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Jc],global:[fu]},canonicalDir:".agentsmesh",canonicalFilename:hu},ignore:{feature:"ignore",mode:"flatFile",source:{project:[du],global:[du]},canonicalDir:".agentsmesh",canonicalFilename:jb}},buildImportPaths:HS,detectionPaths:[Es,Ki,".claude/rules",".claude/commands"],nativeInstall:{pickPaths:[{prefix:".claude/commands",feature:"commands",strategy:{kind:"basename",suffix:".md"}},{prefix:".claude/rules",feature:"rules",strategy:{kind:"basename",suffix:".md"}},{prefix:".claude/agents",feature:"agents",strategy:{kind:"basename",suffix:".md"}},{prefix:".claude/skills/",feature:"skills",strategy:{kind:"firstSegment"}}]}};});function JR(e){return e.agents.map(t=>({path:`${ar}/${t.name}.md`,content:x({name:t.name,description:t.description||void 0,tools:t.tools.length>0?t.tools:void 0,model:t.model||void 0,"x-agentsmesh-disallowed-tools":t.disallowedTools.length>0?t.disallowedTools:void 0,"x-agentsmesh-permission-mode":t.permissionMode||void 0,"x-agentsmesh-max-turns":t.maxTurns>0?t.maxTurns:void 0,"x-agentsmesh-mcp-servers":t.mcpServers.length>0?t.mcpServers:void 0,"x-agentsmesh-hooks":Object.keys(t.hooks).length>0?t.hooks:void 0,"x-agentsmesh-skills":t.skills.length>0?t.skills:void 0,"x-agentsmesh-memory":t.memory||void 0},t.body.trim())}))}var cP=d(()=>{U();Fr();s(JR,"generateAgents");});function cZ(e){let t=basename(e,".md");return t==="_root"?"root":t}function mP(e){let t=[],r=e.rules.find(n=>n.root);if(r){let n=r.body.trim()?r.body:"";t.push({path:Hi,content:n});}for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes("cline"))continue;let o=cZ(n.source),i={description:n.description||void 0,paths:n.globs.length>0?n.globs:void 0};Object.keys(i).forEach(l=>{i[l]===void 0&&delete i[l];});let a=Object.keys(i).length>0?x(i,n.body.trim()||""):n.body.trim()||"";t.push({path:`${ws}/${o}.md`,content:a});}return t}function pP(e){return e.commands.map(t=>{let r=t.description.trim(),n=t.body.trim(),o=r&&n?`${r}
|
|
81
81
|
|
|
82
|
-
${n}`:r||n;return {path:`${As}/${t.name}.md`,content:o}})}function
|
|
83
|
-
`);return [{path:
|
|
84
|
-
`)}function
|
|
82
|
+
${n}`:r||n;return {path:`${As}/${t.name}.md`,content:o}})}function uP(e){if(!e.ignore||e.ignore.length===0)return [];let t=e.ignore.join(`
|
|
83
|
+
`);return [{path:ml,content:t}]}function dP(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:bs,content:t}]}function mZ(e){return e.replace(/[^a-zA-Z0-9]/g,"-").toLowerCase()}function YR(e){return e.replace(/[\r\n]+/g," ")}function pZ(e,t,r){return ["#!/usr/bin/env bash",`# agentsmesh-event: ${YR(e)}`,`# agentsmesh-matcher: ${YR(r)}`,`# agentsmesh-command: ${YR(t)}`,"set -eu",t,""].join(`
|
|
84
|
+
`)}function fP(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=[];for(let[r,n]of Object.entries(e.hooks)){if(!Array.isArray(n))continue;let o=0;for(let i of n)fn(i)&&(t.push({path:`${pl}/${mZ(r)}-${o}.sh`,content:pZ(r,i.command,i.matcher)}),o++);}return t}function gP(e){let t=[];for(let r of e.skills){let n={name:r.name,description:r.description||void 0};n.description===void 0&&delete n.description;let o=x(n,r.body.trim()||"");t.push({path:`${Ft}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${Ft}/${r.name}/${a}`,content:i.content});}}return t}var hP=d(()=>{gn();U();Fr();cP();s(cZ,"ruleSlug");s(mP,"generateRules");s(pP,"generateCommands");s(uP,"generateIgnore");s(dP,"generateMcp");s(mZ,"safeEventName");s(YR,"safeShellLine");s(pZ,"buildHookScript");s(fP,"generateHooks");s(gP,"generateSkills");});async function yP(e,t,r){if(e==="workflows"||e.startsWith("workflows/"))return null;let n=e.replace(/\\/g,"/");if(n==="_root.md")return null;let o=join(t,n),{frontmatter:i,body:a}=T(r(o)),l=hs(i.paths??i.globs),c={root:false,description:typeof i.description=="string"?i.description:void 0,globs:l.length>0?l:void 0};return Object.keys(c).forEach(m=>{c[m]===void 0&&delete c[m];}),{destPath:o,toPath:`${zi}/${n}`,feature:"rules",content:await z(o,c,a)}}async function _P(e,t,r){let n=join(t,e),{frontmatter:o,body:i}=T(r(n)),a=Object.prototype.hasOwnProperty.call(o,"description"),l=a&&typeof o.description=="string"?o.description:"",c=a,m=i;if(!c){let p=i.indexOf(`
|
|
85
85
|
|
|
86
86
|
`);if(p>0){let u=i.slice(0,p).trim();u&&!u.includes(`
|
|
87
|
-
`)&&(l=u,c=true,m=i.slice(p+2));}}return {destPath:n,toPath:`${Qf}/${e}`,feature:"commands",content:await Ce(n,{description:l,hasDescription:c,allowedTools:[],hasAllowedTools:Object.prototype.hasOwnProperty.call(o,"allowedTools")||Object.prototype.hasOwnProperty.call(o,"allowed-tools")},m)}}async function
|
|
88
|
-
`)),t.push({fromTool:"cline",fromPath:o,toPath:VS,feature:"ignore"});}}await
|
|
87
|
+
`)&&(l=u,c=true,m=i.slice(p+2));}}return {destPath:n,toPath:`${Qf}/${e}`,feature:"commands",content:await Ce(n,{description:l,hasDescription:c,allowedTools:[],hasAllowedTools:Object.prototype.hasOwnProperty.call(o,"allowedTools")||Object.prototype.hasOwnProperty.call(o,"allowed-tools")},m)}}async function SP(e,t,r){let n=join(t,e),{frontmatter:o,body:i}=T(r(n)),a={...o},l={disallowedTools:"x-agentsmesh-disallowed-tools",permissionMode:"x-agentsmesh-permission-mode",maxTurns:"x-agentsmesh-max-turns",mcpServers:"x-agentsmesh-mcp-servers",hooks:"x-agentsmesh-hooks",skills:"x-agentsmesh-skills",memory:"x-agentsmesh-memory"};for(let[c,m]of Object.entries(l))Object.prototype.hasOwnProperty.call(o,m)&&(a[c]=o[m]);return {destPath:n,toPath:`.agentsmesh/agents/${e}`,feature:"agents",content:await xe(n,a,i)}}var QR=d(()=>{U();de();vt();Fr();s(yP,"mapClineRuleFile");s(_P,"mapClineWorkflowFile");s(SP,"mapClineAgentFile");});async function RP(e,t,r){let n=join(e,zi),o=join(e,ws),i=join(e,ws),a=false;try{a=(await stat(i)).isFile();}catch{}if(a){let p=await I(i);if(p!==null){await O(n);let u=join(n,"_root.md"),{frontmatter:f,body:g}=T(r(p,i,u)),y=f.root===true?f:{...f,root:true},_=await z(u,y,g);await L(u,_),t.push({fromTool:"cline",fromPath:i,toPath:`${zi}/_root.md`,feature:"rules"});}return a}let l=null,c=join(o,"_root.md"),m=await I(c);if(m===null){let p=join(e,Hi),u=await I(p);if(u!==null){l=p,await O(n);let f=join(n,"_root.md"),{frontmatter:g,body:h}=T(r(u,p,f)),_=g.root===true?g:{...g,root:true},R=await z(f,_,h);await L(f,R),t.push({fromTool:"cline",fromPath:p,toPath:`${zi}/_root.md`,feature:"rules"});}else {let h=(await B(o)).filter(y=>y.endsWith(".md")&&!y.includes("/workflows/")).sort()[0];if(h){let y=await I(h);if(y!==null){l=h,await O(n);let _=join(n,"_root.md"),{frontmatter:R,body:k}=T(r(y,h,_)),D=R.root===true?R:{...R,root:true},v=await z(_,D,k);await L(_,v),t.push({fromTool:"cline",fromPath:h,toPath:`${zi}/_root.md`,feature:"rules"});}}}}else {l=c,await O(n);let p=join(n,"_root.md"),{frontmatter:u,body:f}=T(r(m,c,p)),h=u.root===true?u:{...u,root:true},y=await z(p,h,f);await L(p,y),t.push({fromTool:"cline",fromPath:c,toPath:`${zi}/_root.md`,feature:"rules"});}return t.push(...await Re({srcDir:o,destDir:n,extensions:[".md"],fromTool:"cline",normalize:r,mapEntry:s(async({srcPath:p,relativePath:u,normalizeTo:f})=>p===l?null:yP(u,n,f),"mapEntry")})),a}var IP=d(()=>{b();U();de();nr();QR();Fr();s(RP,"importClineRules");});function kP(e){return e===null||typeof e!="object"||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="string"))}function dZ(e){if(!e||typeof e!="object")return null;let t=e,r=typeof t.type=="string"?t.type:void 0,n=typeof t.transportType=="string"?t.transportType:void 0,o=kP(t.env),i=typeof t.description=="string"?t.description:void 0,a=typeof t.command=="string"?t.command:"";if(a){let l=Array.isArray(t.args)?t.args.filter(c=>typeof c=="string"):[];return {...i!==void 0&&{description:i},type:r??n??"stdio",command:a,args:l,env:o}}return typeof t.url=="string"?{...i!==void 0&&{description:i},type:r??n??"http",url:t.url,headers:kP(t.headers),env:o}:null}async function LP(e,t){let r=[bs,Bb].map(c=>join(e,c)),n=null,o=null;for(let c of r){let m=await I(c);if(m!==null){n=c,o=m;break}}if(o===null)return;let i=n??r[0],a;try{a=JSON.parse(o);}catch{}let l=a?.mcpServers;if(l!==void 0&&typeof l=="object"&&l!==null&&Object.keys(l).length>0){let c={};for(let[m,p]of Object.entries(l)){let u=dZ(p);u&&(c[m]=u);}Object.keys(c).length>0&&(await O(join(e,".agentsmesh")),await L(join(e,JS),JSON.stringify({mcpServers:c},null,2)),t.push({fromTool:Wi,fromPath:i,toPath:JS,feature:"mcp"}));}}var EP=d(()=>{b();Fr();s(kP,"toStringRecord");s(dZ,"mapClineServerToCanonical");s(LP,"importClineMcp");});function CP(e){return fZ.some(t=>t.test(e))}var fZ,OP=d(()=>{fZ=[/^\./,/^_ab-agent-/,/^_ab-command-/,/\.fixture\./,/\.test\./];s(CP,"isReservedArtifactName");});async function hZ(e){let t=await B(e).catch(()=>[]),r=[];for(let n of t){let o=relative(e,n).replace(/\\/g,"/"),i=basename(o);if(CP(i))continue;let a=await I(n);a!==null&&r.push({absolutePath:n,relativePath:o,content:a});}return r}async function zu(e,t,r){let n=await hZ(t),o=join(r.projectRoot,r.destCanonicalSkillsDir,e);for(let i of n){let a=join(o,i.relativePath);await O(dirname(a));let l=r.normalize(i.content,i.absolutePath,a);if(i.relativePath==="SKILL.md"){let{frontmatter:c,body:m}=T(l),p=await ro(a,{...c,name:e},m);await L(a,p);}else await L(a,l);r.results.push({fromTool:r.targetName,fromPath:i.absolutePath,toPath:`${r.destCanonicalSkillsDir}/${e}/${i.relativePath}`,feature:"skills"});}}async function bP(e,t,r,n){let o=join(n.projectRoot,n.destCanonicalSkillsDir,e);await O(o);let i=join(o,"SKILL.md"),a=n.normalize(r,t,i),{frontmatter:l,body:c}=T(a),m=await ro(i,{...l,name:e},c);await L(i,m),n.results.push({fromTool:n.targetName,fromPath:t,toPath:`${n.destCanonicalSkillsDir}/${e}/SKILL.md`,feature:"skills"});}async function Vu(e){let t=new Map;try{let n=(await B(e)).filter(o=>basename(o)==="SKILL.md");for(let o of n){let i=dirname(o),a=basename(i);t.set(a,i);}}catch{}return t}async function Lm(e,t,r=[]){for(let n of e){let o=join(t.projectRoot,n),i=await Vu(o);if(i.size===0)continue;let a=false;for(let[l,c]of i){let m=join(c,"SKILL.md"),p=await I(m);if(p===null)continue;a=true;let{frontmatter:u,body:f}=T(p),g={skillName:l,skillDir:c,skillMdPath:m,rawContent:p,frontmatter:u,rawBody:f,options:t},h=false;for(let y of r)if(await y.recognize(g)){h=true;break}h||await zu(l,c,t);}if(a)return}}function Em(e){return {async recognize(t){let r=Gc(t.frontmatter,t.skillName);if(!r)return false;let{options:n}=t;await no(join(n.projectRoot,n.destCanonicalSkillsDir,t.skillName));let o=join(n.projectRoot,e.canonicalAgentsDir);await O(o);let i=join(o,`${r.name}.md`),a=n.normalize(t.rawBody,t.skillMdPath,i);return await L(i,Mi(r,a)),n.results.push({fromTool:n.targetName,fromPath:t.skillMdPath,toPath:`${e.canonicalAgentsDir}/${r.name}.md`,feature:"agents"}),true}}}function AP(e){return {async recognize(t){let r=vf(t.frontmatter,t.skillName);if(!r)return false;let{options:n}=t;await no(join(n.projectRoot,n.destCanonicalSkillsDir,t.skillName));let o=join(n.projectRoot,e.canonicalCommandsDir);await O(o);let i=join(o,`${r.name}.md`),a=n.normalize(t.rawBody,t.skillMdPath,i);return await L(i,Ff(r,a)),n.results.push({fromTool:n.targetName,fromPath:t.skillMdPath,toPath:`${e.canonicalCommandsDir}/${r.name}.md`,feature:"commands"}),true}}}var Cm=d(()=>{b();U();de();OP();Se();$e();Xp();s(hZ,"readNativeSkill");s(zu,"importDirectorySkill");s(bP,"importFlatSkill");s(Vu,"findDirectorySkills");s(Lm,"importSkillsDirectory");s(Em,"projectedAgentRecognizer");s(AP,"commandSkillRecognizer");});async function TP(e,t,r,n=Ft){await Lm([n],{projectRoot:e,destCanonicalSkillsDir:Kb,targetName:"cline",normalize:r,results:t},[Em({canonicalAgentsDir:yu})]);}var xP=d(()=>{Cm();Fr();s(TP,"importClineSkills");});function eI(e,t){return e.match(new RegExp(`^# agentsmesh-${t}:\\s*(.+)$`,"m"))?.[1]?.trim()??null}async function PP(e,t){let n=(await B(e).catch(()=>[])).filter(o=>basename(o).endsWith(".sh")&&dirname(o)===e);for(let o of n){let i=await I(o);if(!i)continue;let a=eI(i,"event"),l=eI(i,"command");if(!a||!l)continue;let c=eI(i,"matcher")??"*";t[a]||(t[a]=[]),t[a].push({matcher:c,command:l});}}async function NP(e,t){let r={};if(await PP(join(e,pl),r),await PP(join(e,fl),r),Object.keys(r).length===0)return;let n=join(e,zS);await O(dirname(n)),await L(n,stringify(r)),t.push({fromTool:Wi,fromPath:join(e,fl),toPath:zS,feature:"hooks"});}var vP=d(()=>{b();Fr();s(eI,"extractMeta");s(PP,"loadHooksFromDir");s(NP,"importClineHooks");});async function FP(e){let t=[],r=await H(Wi,e),n=await RP(e,t,r),o=join(e,ml),i=await I(o);if(i!==null&&i.trim()){let l=i.split(/\r?\n/),c=[];for(let m of l){let p=m.trim();p&&!p.startsWith("#")&&c.push(p);}if(c.length>0){await O(join(e,".agentsmesh"));let m=join(e,VS);await L(m,c.join(`
|
|
88
|
+
`)),t.push({fromTool:"cline",fromPath:o,toPath:VS,feature:"ignore"});}}await LP(e,t);let a=join(e,Qf);return n||t.push(...await Re({srcDir:join(e,As),destDir:a,extensions:[".md"],fromTool:"cline",normalize:r,mapEntry:s(({relativePath:l,normalizeTo:c})=>_P(l,a,c),"mapEntry")})),await TP(e,t,r),t.push(...await Re({srcDir:join(e,ar),destDir:join(e,yu),extensions:[".md"],fromTool:"cline",normalize:r,mapEntry:s(({relativePath:l,normalizeTo:c})=>SP(l,join(e,yu),c),"mapEntry")})),await NP(e,t),t}var MP=d(()=>{he();b();nr();QR();IP();Fr();EP();xP();vP();s(FP,"importFromCline");});function GP(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(i=>({...i,target:Wi}))}var $P=d(()=>{Oe();Fr();s(GP,"lintRules");});function jP(e){return e.commands.filter(t=>t.description.length>0||t.allowedTools.length>0).map(t=>M(t.source,"cline","cline workflow files are plain Markdown; command description and allowed-tools metadata are not projected."))}function UP(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[M(".agentsmesh/hooks.yaml","cline","cline hooks are emitted as .clinerules/hooks/*.sh wrapper scripts with a `#!/usr/bin/env bash` header; they require a POSIX shell (git-bash or WSL) to execute on Windows.")]:[]:[]}var BP=d(()=>{Ie();s(jP,"lintCommands");s(UP,"lintHooks");});var SZ,RZ,IZ,kZ,KP,WP=d(()=>{hP();Za();Fr();MP();$P();BP();we();SZ={name:"cline",primaryRootInstructionPath:Hi,generateRules:mP,generateCommands:pP,generateAgents:JR,generateSkills:gP,generateMcp:dP,generateHooks:fP,generateIgnore:uP,importFrom:FP},RZ={rootInstructionPath:Hi,skillDir:".cline/skills",managedOutputs:{dirs:[ar,".cline/skills",".clinerules",".clinerules/hooks",".clinerules/workflows"],files:["AGENTS.md",".cline/cline_mcp_settings.json",".clineignore",".clinerules/typescript.md"]},paths:{rulePath(e,t){return `${ws}/${e}.md`},commandPath(e,t){return `${As}/${e}.md`},agentPath(e){return `${ar}/${e}.md`}}},IZ={skillDir:Ft,managedOutputs:{dirs:[ul,dl,fl,Ft,ar,".agents/skills"],files:[bs,ml]},rewriteGeneratedPath(e){return e===Hi?null:e.startsWith(`${pl}/`)?`${fl}/${e.slice(pl.length+1)}`:e.startsWith(`${As}/`)?`${dl}/${e.slice(As.length+1)}`:e.startsWith(`${ws}/`)?`${ul}/${e.slice(ws.length+1)}`:e},mirrorGlobalPath(e,t){return e.startsWith(`${Ft}/`)?`.agents/skills/${e.slice(Ft.length+1)}`:null},paths:{rulePath(e,t){return `${ul}/${e}.md`},commandPath(e,t){return `${dl}/${e}.md`},agentPath(e){return `${ar}/${e}.md`}}},kZ={rules:"native",additionalRules:"native",commands:yn("native","workflows"),agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},KP={id:"cline",metadata:{displayName:"Cline",category:"ide",officialUrl:"https://cline.bot",shortDescription:"Autonomous coding agent for VS Code"},generators:SZ,capabilities:{rules:"native",additionalRules:"native",commands:yn("native","workflows"),agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},emptyImportMessage:"No Cline config found (.clinerules, .clineignore, .cline/cline_mcp_settings.json, or .cline/skills).",supportsConversion:{agents:true},lintRules:GP,lint:{commands:jP,hooks:UP},project:RZ,globalSupport:{capabilities:kZ,detectionPaths:[ul,dl,fl,Ft,ar,bs,ml],layout:IZ},buildImportPaths:YS,detectionPaths:[".clinerules",".cline"],nativeInstall:{pickPaths:[{prefix:Ft,feature:"skills",strategy:{kind:"skillDir"}},{prefix:As,feature:"commands",strategy:{kind:"basename",suffix:".md"}}]},conversionDefaults:{agentsToSkills:true}};});var ht,HP,ii,Kl,zP,Bo,VP,Eg,ai,Wl,Ko,Hl,li,JP,Ju,YP,tI,XP,QP,rI,qP,ZP,nI,oI,sI,at=d(()=>{ht="codex-cli",HP="codex.md",ii="AGENTS.md",Kl=".codex/AGENTS.md",zP=".codex/AGENTS.override.md",Bo=".agents/skills",VP=".codex/skills",Eg=".codex/config.toml",ai=".codex/hooks.json",Wl=".codex/instructions",Ko=".codex/rules",Hl=".codex/agents",li=".agentsmesh/rules",JP=".agentsmesh/commands",Ju=".agentsmesh/agents",YP=".agentsmesh/skills",tI=".agentsmesh/mcp.json",XP=".agentsmesh/hooks.yaml",QP="am-codex-rule:v1",rI="# am-json: ",qP="# am-body-b64-begin",ZP="# am-body-b64-end",nI="# am64:",oI="<!-- agentsmesh:codex-rule-index:start -->",sI="<!-- agentsmesh:codex-rule-index:end -->";});function iI(e){return basename(e,".md")}function Yu(e){return `${Wl}/${iI(e.source)}.md`}function eD(e){let t={root:e.root,description:e.description||void 0,globs:e.globs.length>0?e.globs:void 0,targets:e.targets.length>0?e.targets:void 0,codex_emit:e.codexEmit||void 0,codex_instruction:e.codexInstructionVariant&&e.codexInstructionVariant!=="default"?e.codexInstructionVariant:void 0};return Object.keys(t).forEach(r=>{t[r]===void 0&&delete t[r];}),x(t,e.body.trim()||"")}function EZ(e){let t=[];return e.root?t.push("Applies to the whole project."):e.globs.length>0?t.push(`Applies to ${e.globs.map(r=>`\`${r}\``).join(", ")}.`):t.push("General guidance with no file glob restriction."),e.codexInstructionVariant==="override"&&t.push("Override guidance when this rule conflicts with broader instructions."),e.codexEmit==="execution"&&t.push(`Enforced in \`${Ko}/${iI(e.source)}.rules\`.`),e.targets.length>0&&t.push(`Targeted to ${e.targets.map(r=>`\`${r}\``).join(", ")}.`),t.join(" ")}function tD(e,t){let r=e.trim(),n=t.filter(a=>!a.root);if(n.length===0)return r;let o=n.map(a=>`- [${a.description||iI(a.source)}](${Yu(a)}): ${EZ(a)}`),i=[oI,"## Additional Rule Files",...o,sI].join(`
|
|
89
89
|
`);return r?`${r}
|
|
90
90
|
|
|
91
|
-
${i}`:i}function
|
|
92
|
-
`).trim()}var Cg=d(()=>{U();at();s(iI,"ruleSlug");s(Yu,"codexInstructionMirrorPath");s(
|
|
91
|
+
${i}`:i}function rD(e){let t=oI.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),r=sI.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return e.replace(new RegExp(`\\n?${t}[\\s\\S]*?${r}\\n?`,"g"),`
|
|
92
|
+
`).trim()}var Cg=d(()=>{U();at();s(iI,"ruleSlug");s(Yu,"codexInstructionMirrorPath");s(eD,"serializeCodexInstructionMirror");s(EZ,"summarizeRule");s(tD,"appendCodexRuleIndex");s(rD,"stripCodexRuleIndex");});function OZ(e){return /(^|\n)\s*[A-Za-z_][A-Za-z0-9_]*\s*\(/.test(e)}function wZ(e){return e.split(`
|
|
93
93
|
`).map(t=>t.length>0?`# ${t}`:"#").join(`
|
|
94
94
|
`)}function bZ(e){let t=e.trim();return t?OZ(t)?`${t}
|
|
95
95
|
`:`${["# agentsmesh: canonical execution rule body is not Codex DSL","# The original body is preserved below as comments.","# Replace with Codex rules DSL (for example prefix_rule(...)) to enforce behavior.","#",...wZ(t).split(`
|
|
96
96
|
`),"#","# Example template:","# prefix_rule(",'# pattern = ["git", "status"],','# decision = "allow",','# justification = "Allow safe status checks",',"# )"].join(`
|
|
97
97
|
`)}
|
|
98
|
-
`:""}function aI(e){let t=e.rules.find(n=>n.root),r=[];t&&r.push({path:ii,content:
|
|
98
|
+
`:""}function aI(e){let t=e.rules.find(n=>n.root),r=[];t&&r.push({path:ii,content:tD(t.body,e.rules)});for(let n of e.rules){if(n.root)continue;let o=basename(n.source,".md");n.targets.length>0&&!n.targets.includes("codex-cli")||(n.codexEmit==="execution"&&r.push({path:`${Ko}/${o}.rules`,content:bZ(n.body)}),r.push({path:Yu(n),content:eD(n)}));}return r}function lI(e){let t=e.rules.find(n=>n.root),r=e.rules.filter(n=>n.root||n.codexEmit==="execution"?false:n.targets.length===0||n.targets.includes("codex-cli"));return le(t?.body.trim()??"",r)}var nD=d(()=>{Be();at();Cg();s(OZ,"looksLikeCodexRulesDsl");s(wZ,"toCodexRulesComments");s(bZ,"toSafeCodexRulesContent");s(aI,"generateRules");s(lI,"renderCodexGlobalInstructions");});function cI(e){let t=[];for(let r of e.skills){let n={name:r.name,description:r.description||void 0};n.description===void 0&&delete n.description;let o=x(n,r.body.trim()||"");t.push({path:`${Bo}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${Bo}/${r.name}/${a}`,content:i.content});}}return t}function AZ(e){return {path:`${Bo}/${Z(e.name)}/SKILL.md`,content:Xe(e)}}function mI(e){return e.commands.map(AZ)}var oD=d(()=>{U();at();$e();s(cI,"generateSkills");s(AZ,"commandToSkillOutput");s(mI,"generateCommands");});function pI(e){return e.agents.map(t=>({path:`${Hl}/${t.name}.toml`,content:TZ(t)}))}function TZ(e){let t=[];t.push(`name = ${JSON.stringify(e.name)}`),e.description&&t.push(`description = ${JSON.stringify(e.description)}`),e.model&&t.push(`model = ${JSON.stringify(e.model)}`),e.permissionMode==="read-only"||e.permissionMode==="deny"?t.push('sandbox_mode = "read-only"'):e.permissionMode==="allow"&&t.push('sandbox_mode = "workspace-write"');let r=e.body.trim()||"";if(r.includes("'''")){let n=r.replace(/\\/g,"\\\\").replace(/"/g,'\\"');t.push(`developer_instructions = """
|
|
99
99
|
${n}
|
|
100
100
|
"""`);}else t.push(`developer_instructions = '''
|
|
101
101
|
${r}
|
|
102
102
|
'''`);return t.join(`
|
|
103
103
|
`)+`
|
|
104
|
-
`}var
|
|
104
|
+
`}var sD=d(()=>{at();s(pI,"generateAgents");s(TZ,"serializeAgentToCodexToml");});function Og(e){return "command"in e}function iD(e){return "url"in e}var wg=d(()=>{s(Og,"isStdioMcpServer");s(iD,"isUrlMcpServer");});function uI(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=Object.fromEntries(Object.entries(e.mcp.mcpServers).flatMap(([n,o])=>Og(o)?[[n,o]]:[]));if(Object.keys(t).length===0)return [];let r=xZ(t);return [{path:Eg,content:r}]}function xZ(e){let t=[];for(let[r,n]of Object.entries(e)){let o=aD(r)?`"${r}"`:r,i=[];i.push(`[mcp_servers.${o}]`),i.push(`command = ${JSON.stringify(n.command)}`);let a="["+n.args.map(c=>JSON.stringify(c)).join(", ")+"]";i.push(`args = ${a}`);let l=Object.entries(n.env);if(l.length>0){let c=l.map(([m,p])=>`${aD(m)?JSON.stringify(m):m} = ${JSON.stringify(p)}`).join(", ");i.push(`env = { ${c} }`);}t.push(i.join(`
|
|
105
105
|
`));}return t.join(`
|
|
106
106
|
|
|
107
107
|
`)+`
|
|
108
|
-
`}function
|
|
108
|
+
`}function aD(e){return !/^[A-Za-z0-9_-]+$/.test(e)}var lD=d(()=>{wg();at();s(uI,"generateMcp");s(xZ,"serializeMcpToToml");s(aD,"needsTomlQuoting");});function Om(e,t){if(!e.hooks)return [];let r={};for(let[n,o]of Object.entries(e.hooks)){if(!Array.isArray(o))continue;let i=o.flatMap(a=>{if(!fn(a)||a.type==="prompt")return [];let l={type:"command",command:It(a)};return a.timeout!==void 0&&(l.timeout=a.timeout),[{matcher:a.matcher,hooks:[l]}]});i.length>0&&(r[n]=i);}return Object.keys(r).length===0?[]:[{path:t,content:JSON.stringify({hooks:r},null,2)}]}async function wm(e){let{projectRoot:t,hooksFile:r,canonicalHooksPath:n,targetName:o,results:i}=e,a=join(t,r),l=await I(a);if(l===null)return;let c;try{c=JSON.parse(l);}catch{return}if(!c||typeof c!="object")return;let m=c.hooks;if(!m||typeof m!="object"||Array.isArray(m))return;let p={};for(let[f,g]of Object.entries(m))if(Array.isArray(g))for(let h of g){if(!h||typeof h!="object")continue;let y=h,_=typeof y.matcher=="string"?y.matcher:"*";if(Array.isArray(y.hooks))for(let R of y.hooks){if(!R||typeof R!="object")continue;let k=R;if(k.type!=="command"||typeof k.command!="string")continue;let w={matcher:_,command:k.command,type:"command"};typeof k.timeout=="number"&&(w.timeout=k.timeout),(p[f]??=[]).push(w);}}if(Object.keys(p).length===0)return;let u=join(t,n);await O(dirname(u)),await L(u,stringify(p)),i.push({fromTool:o,fromPath:a,toPath:n,feature:"hooks"});}var zl=d(()=>{gn();b();s(Om,"buildWrappedCommandHooks");s(wm,"importWrappedCommandHooks");});function dI(e){return Om(e,ai)}var mD=d(()=>{zl();at();s(dI,"generateHooks");});var pD=d(()=>{nD();oD();sD();lD();mD();});var uD=d(()=>{pD();});function FZ(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,r=typeof t.command=="string"?t.command:"";if(!r)return null;let n=Array.isArray(t.args)?t.args.filter(a=>typeof a=="string"):[],o=t.env,i=o!==null&&typeof o=="object"&&!Array.isArray(o)?Object.fromEntries(Object.entries(o).filter(a=>typeof a[1]=="string")):{};return {type:"stdio",command:r,args:n,env:i}}async function dD(e,t){let r=join(e,Eg),n=await I(r);if(n===null)return;let o;try{o=parse$1(n);}catch{return}let i=o.mcp_servers;if(!i||typeof i!="object"||Array.isArray(i)||Object.keys(i).length===0)return;let a={};for(let[l,c]of Object.entries(i)){let m=FZ(c);m&&(a[l]=m);}Object.keys(a).length!==0&&(await Qe(e,tI,a),t.push({fromTool:ht,fromPath:r,toPath:tI,feature:"mcp"}));}var fD=d(()=>{b();In();at();s(FZ,"mapTomlServerToCanonical");s(dD,"importMcp");});async function gD(e,t,r){await Lm([Bo,VP],{projectRoot:e,destCanonicalSkillsDir:YP,targetName:ht,normalize:r,results:t},[AP({canonicalCommandsDir:JP}),Em({canonicalAgentsDir:Ju})]);}var hD=d(()=>{Cm();at();s(gD,"importSkills");});async function yD(e,t,r){let n=join(e,Hl),o=join(e,Ju);try{let a=(await B(n)).filter(l=>l.endsWith(".toml"));for(let l of a){let c=await I(l);if(!c)continue;let m=parse$1(c);if(!m||typeof m!="object")continue;let p=typeof m.name=="string"?m.name:basename(l,".toml"),u=typeof m.description=="string"?m.description:"",f=typeof m.developer_instructions=="string"?m.developer_instructions.trim():"",g=typeof m.model=="string"?m.model:"",h=typeof m.sandbox_mode=="string"?m.sandbox_mode:"",y=h==="read-only"?"read-only":h==="workspace-write"?"allow":"",_=Array.isArray(m.mcp_servers)?m.mcp_servers.filter(v=>typeof v=="string"):[];await O(o);let R=join(o,`${p}.md`),k=r(f,l,R),D=Mi({name:p,description:u,tools:[],disallowedTools:[],model:g,permissionMode:y,maxTurns:0,mcpServers:_,hooks:{},skills:[],memory:""},k);await L(R,D),t.push({fromTool:ht,fromPath:l,toPath:`${Ju}/${p}.md`,feature:"agents"});}}catch{}}var _D=d(()=>{b();Se();at();s(yD,"importCodexAgentsFromToml");});function SD(e){if(!e.includes(QP))return null;let t=e.split(`
|
|
109
109
|
`).find(c=>c.startsWith(rI));if(!t)return null;let r;try{r=JSON.parse(t.slice(rI.length));}catch{return null}if(!r||typeof r!="object")return null;let n=r,o=typeof n.description=="string"?n.description:"",i=Array.isArray(n.globs)?n.globs.filter(c=>typeof c=="string"):[],a=[],l=false;for(let c of e.split(`
|
|
110
|
-
`)){let m=c.trimEnd();if(m===
|
|
111
|
-
`}function
|
|
112
|
-
`),t.push({fromTool:
|
|
110
|
+
`)){let m=c.trimEnd();if(m===qP){l=true;continue}if(m===ZP){l=false;continue}l&&m.startsWith(nI)&&a.push(m.slice(nI.length));}if(a.length===0)return null;try{let c=Buffer$1.from(a.join(""),"base64").toString("utf8");return {meta:{description:o,globs:i},body:c}}catch{return null}}var RD=d(()=>{at();s(SD,"tryParseEmbeddedCanonicalFromCodexRules");});async function kD(e,t,r){let n=[],o=join(e,Ko);try{let i=await B(o),a=i.filter(c=>c.endsWith(".md"));for(let c of a){let m=await I(c);if(!m)continue;let p=relative(o,c).replace(/\\/g,"/"),u=join(t,p),{frontmatter:f,body:g}=T(r(m,c,u));await O(t);let h=f.root===!0?f:{...f,root:!1},y=await z(u,h,g);await L(u,y),n.push({fromTool:ht,fromPath:c,toPath:`${li}/${p}`,feature:"rules"});}let l=i.filter(c=>c.endsWith(".rules"));for(let c of l){let m=await I(c);if(!m)continue;let p=relative(o,c).replace(/\\/g,"/").replace(/\.rules$/i,".md"),u=join(t,p);await O(t);let f=SD(m);if(f){let g=await z(u,{description:f.meta.description,globs:f.meta.globs,root:!1},r(f.body,c,u));await L(u,g);}else {let g=await z(u,{root:!1,description:"",globs:[],codex_emit:"execution"},r(m.trim(),c,u));await L(u,g);}n.push({fromTool:ht,fromPath:c,toPath:`${li}/${p}`,feature:"rules"});}}catch{}return n}var LD=d(()=>{b();U();de();at();RD();s(kD,"importCodexNonRootRuleFiles");});async function CD(e,t,r,n,o){let i=join(e,HP),a=join(e,ii),l=join(e,zP),c=join(e,Kl),m=o==="global"?await I(l):null,p=o==="global"?await I(c):null,u=o==="project"?await I(a):null,f=o==="project"?await I(i):null,g=m!==null?l:p!==null?c:u!==null?a:i,h=join(e,li),y=m??p??u??f;if(y!==null){await O(h);let _=join(h,"_root.md"),R=g===a||g===c||g===l?rD(y):y,k=await Uo({content:R,projectRoot:e,rulesDir:li,sourcePath:g,fromTool:"codex-cli",normalize:r});t.push(...k.results);let w=r(g===a||g===c||g===l?n(k.rootContent,g,_):k.rootContent,g,_),{frontmatter:D,body:v}=T(w),K=D.root===true?D:{...D,root:true},ee=await z(_,K,v);await L(_,ee),t.push({fromTool:"codex-cli",fromPath:g,toPath:`${li}/_root.md`,feature:"rules"});}await BZ(e,h,t,r),t.push(...await kD(e,h,r)),o!=="global"&&t.push(...await Re({srcDir:e,destDir:h,extensions:["AGENTS.md","AGENTS.override.md"],fromTool:"codex-cli",normalize:r,mapEntry:s(async({srcPath:_,normalizeTo:R})=>{let k=relative(e,dirname(_)).replace(/\\/g,"/"),w=basename(_),D=w==="AGENTS.override.md";if(!k||k==="."||!D&&w!=="AGENTS.md")return null;let v=k.replace(/\//g,"-");if(!Uf(k))return await no(join(h,`${v}.md`)),null;let K=join(h,`${v}.md`),{frontmatter:ee,body:se}=T(R(K));return {destPath:K,toPath:`${li}/${v}.md`,feature:"rules",content:await z(K,{...ee,root:false,globs:[`${k}/**`],...D?{codex_instruction:"override"}:{}},se)}},"mapEntry")}));}async function BZ(e,t,r,n){try{let i=(await B(join(e,Wl))).filter(l=>l.endsWith(".md")),a=join(e,Wl);for(let l of i){let c=relative(a,l).replace(/\\/g,"/");if(c==="_root.md")continue;let m=await I(l);if(!m)continue;let p=join(t,c),{frontmatter:u,body:f}=T(n(m,l,p));await O(t);let g=u.root===!0?u:{...u,root:!1},h=await z(p,g,f);await L(p,h),r.push({fromTool:ht,fromPath:l,toPath:`${li}/${c}`,feature:"rules"});}}catch{}}var OD=d(()=>{b();U();de();km();nr();Xp();at();LD();Cg();s(CD,"importCodexRules");s(BZ,"importInstructionMirrors");});async function wD(e,t){await wm({projectRoot:e,hooksFile:ai,canonicalHooksPath:XP,targetName:ht,results:t});}var bD=d(()=>{zl();at();s(wD,"importCodexHooks");});async function AD(e,t){let r=t?.scope??"project",n=[],o=await H(ht,e,r),i=await H("windsurf",e,r);return await CD(e,n,o,i,r),await gD(e,n,o),await yD(e,n,o),await dD(e,n),await wD(e,n),n}var TD=d(()=>{he();at();fD();hD();_D();OD();bD();s(AD,"importFromCodex");});function xD(e,t,r){let{rules:n}=e;return n.length===0?[]:n.some(i=>i.root)?[]:[{level:"warning",file:relative(t,n[0].source),target:ht,message:"Codex needs a root rule to generate AGENTS.md. Add root: true to a rule."}]}var PD=d(()=>{at();s(xD,"lintRules");});function DD(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=[];for(let[r,n]of Object.entries(e.mcp.mcpServers))if(typeof n.description=="string"&&n.description&&t.push(M(".agentsmesh/mcp.json","codex-cli",`MCP server "${r}" has a description, but codex-cli does not project MCP descriptions into .codex/config.toml.`)),"url"in n||"type"in n){let o="type"in n?n.type:"url";t.push(M(".agentsmesh/mcp.json","codex-cli",`MCP server "${r}" uses ${o} transport; codex-cli only generates stdio MCP servers.`));}return t}var ND=d(()=>{Ie();s(DD,"lintMcp");});function vD(e){return Yu(e)}var FD=d(()=>{Cg();s(vD,"codexAdvisoryInstructionPath");});var WZ,HZ,zZ,VZ,GD,$D=d(()=>{uD();at();TD();PD();ND();we();Wp();FD();$e();WZ={name:"codex-cli",primaryRootInstructionPath:ii,generateRules:aI,generateCommands:mI,generateAgents:pI,generateSkills:cI,generateMcp:uI,generateHooks:dI,importFrom:AD},HZ={rootInstructionPath:ii,extraRuleOutputPaths(e){if(e.root||e.codexEmit!=="execution")return [];let t=basename(e.source,".md");return [`${Ko}/${t}.rules`]},skillDir:".agents/skills",managedOutputs:{dirs:[".agents/skills",".codex/agents",".codex/instructions"],files:["AGENTS.md",".codex/config.toml",ai]},paths:{rulePath(e,t){return vD(t)},commandPath(e,t){return vc(t,"codex-cli")?`${Bo}/${Z(e)}/SKILL.md`:null},agentPath(e,t){return `${Hl}/${e}.toml`}}},zZ={rootInstructionPath:Kl,renderPrimaryRootInstruction:lI,extraRuleOutputPaths(e){if(e.root||e.codexEmit!=="execution")return [];let t=basename(e.source,".md");return [`${Ko}/${t}.rules`]},skillDir:Bo,managedOutputs:{dirs:[".agents/skills",".codex/agents",".codex/rules"],files:[Kl,".codex/config.toml",ai]},rewriteGeneratedPath(e){return e===ii?Kl:e.startsWith(`${Wl}/`)?null:e},paths:{rulePath(e,t){return t.codexEmit==="execution"?`${Ko}/${e}.rules`:Kl},commandPath(e,t){return vc(t,"codex-cli")?`${Bo}/${Z(e)}/SKILL.md`:null},agentPath(e,t){return `${Hl}/${e}.toml`}}},VZ={rules:"native",additionalRules:"embedded",commands:"embedded",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},GD={id:"codex-cli",metadata:{displayName:"Codex CLI",category:"cli",officialUrl:"https://github.com/openai/codex",shortDescription:"OpenAI's terminal coding agent"},generators:WZ,capabilities:{rules:"native",additionalRules:"native",commands:"embedded",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},emptyImportMessage:"No Codex config found (codex.md or AGENTS.md).",supportsConversion:{commands:true},lintRules:xD,lint:{mcp:DD},project:HZ,globalSupport:{capabilities:VZ,detectionPaths:[".codex/AGENTS.md",".codex/AGENTS.override.md",".codex/config.toml",".codex/agents",".codex/rules",ai,".agents/skills"],layout:zZ},buildImportPaths:XS,sharedArtifacts:{".agents/skills/":"owner"},detectionPaths:["codex.md","AGENTS.md","AGENTS.override.md",".codex/config.toml",".codex/agents",".codex/rules",ai],nativeInstall:{pickPaths:[{prefix:".codex",feature:"rules",strategy:{kind:"basename",suffix:".md"}}]},excludeFromStarterInit:true,conversionDefaults:{commandsToSkills:true,agentsToSkills:false}};});function YZ(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):typeof e=="string"&&e.length>0?e.split(",").map(t=>t.trim()).filter(Boolean):[]}function jD(e){return `${uo}/${e}.md`}function UD(e){let t={description:e.description||void 0,invokable:true,"x-agentsmesh-kind":"command","x-agentsmesh-name":e.name,"x-agentsmesh-allowed-tools":e.allowedTools.length>0?e.allowedTools:void 0};return t.description===void 0&&delete t.description,t["x-agentsmesh-allowed-tools"]===void 0&&delete t["x-agentsmesh-allowed-tools"],x(t,e.body.trim()||"")}function BD(e,t){let r=basename(t,".md");return {name:((typeof e["x-agentsmesh-name"]=="string"?e["x-agentsmesh-name"]:"")||r).trim(),description:typeof e.description=="string"?e.description:"",allowedTools:YZ(e["x-agentsmesh-allowed-tools"])}}function KD(e,t){let r={description:e.description||void 0,"allowed-tools":e.allowedTools.length>0?e.allowedTools:void 0};return r.description===void 0&&delete r.description,r["allowed-tools"]===void 0&&delete r["allowed-tools"],x(r,t.trim()||"")}var bg=d(()=>{U();fo();s(YZ,"toStringArray");s(jD,"continueCommandRulePath");s(UD,"serializeCommandRule");s(BD,"parseCommandRuleFrontmatter");s(KD,"serializeImportedCommand");});function WD(e){let t=[],r=e.rules.find(n=>n.root);if(r){let n={};r.description&&(n.description=r.description),t.push({path:Ts,content:x(n,r.body.trim()||"")});}for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes("continue"))continue;let o=basename(n.source,".md"),i={};n.description&&(i.description=n.description),n.globs.length>0&&(i.globs=n.globs),t.push({path:`${En}/${o}.md`,content:x(i,n.body.trim()||"")});}return t}function HD(e){return e.commands.map(t=>({path:`${uo}/${t.name}.md`,content:UD(t)}))}function zD(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:qf,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function VD(e){return e.agents.map(t=>({path:`${lr}/${V(t.name)}/SKILL.md`,content:je(t)}))}function JD(e){return ae(e,lr)}var YD=d(()=>{ie();Se();U();bg();fo();s(WD,"generateRules");s(HD,"generateCommands");s(zD,"generateMcp");s(VD,"generateAgents");s(JD,"generateSkills");});function XD(e){if(!e)return null;let t=e.allow??[],r=e.ask??[],n=e.deny??[];if(t.length===0&&r.length===0&&n.length===0)return null;let o={};return t.length>0&&(o.allow=t),r.length>0&&(o.ask=r),n.length>0&&(o.exclude=n),stringify(o).trimEnd()+`
|
|
111
|
+
`}function QD(e){let t;try{t=parse(e);}catch{return null}if(!t||typeof t!="object"||Array.isArray(t))return null;let r=t,n=st(r.allow),o=st(r.ask),i=st(r.exclude);if(n.length===0&&o.length===0&&i.length===0)return null;let a={allow:n,deny:i};return o.length>0&&(a.ask=o),a}var hI=d(()=>{vt();s(XD,"serializeContinuePermissions");s(QD,"parseContinuePermissions");});function r8(e,t){let n=(t===".json"?JSON.parse(e):parse(e)??{}).mcpServers;if(!n||typeof n!="object"||Array.isArray(n))return {};let o={};for(let[i,a]of Object.entries(n)){if(!a||typeof a!="object"||Array.isArray(a))continue;let l=a,c=typeof l.description=="string"?l.description:void 0;if(typeof l.command=="string"){o[i]={type:typeof l.type=="string"?l.type:"stdio",command:l.command,args:st(l.args),env:zt(l.env),description:c};continue}typeof l.url=="string"&&(o[i]={type:typeof l.type=="string"?l.type:"http",url:l.url,headers:zt(l.headers),env:zt(l.env),description:c});}return o}async function n8(e,t){let r=(await B(join(e,QS))).filter(i=>[".json",".yaml",".yml"].includes(extname(i))),n={},o=[];for(let i of r){let a=await I(i);a&&(Object.assign(n,r8(a,extname(i))),o.push(i));}if(Object.keys(n).length!==0){await Qe(e,ZS,n);for(let i of o)t.push({fromTool:gl,fromPath:i,toPath:ZS,feature:"mcp"});}}async function o8(e,t){let r=join(e,hl),n=await I(r);if(n===null)return;let o=QD(n);if(!o)return;let i=join(e,eR);await O(dirname(i)),await L(i,stringify(o).trimEnd()+`
|
|
112
|
+
`),t.push({fromTool:gl,fromPath:r,toPath:eR,feature:"permissions"});}async function ZD(e,t={}){let r=[],n=await H(gl,e);return r.push(...await X(Ag,e,"project",{normalize:n})),await oe(e,lr,gl,r,n),await n8(e,r),t.scope==="global"&&await o8(e,r),r}var eN=d(()=>{he();b();ie();Ae();In();vt();fo();hI();_I();s(r8,"readMcpServers");s(n8,"importMcp");s(o8,"importPermissions");s(ZD,"importFromContinue");});function s8(e){return e==="general.md"||e==="_root.md"}var tN,rN,nN=d(()=>{U();de();bg();fo();s(s8,"isContinueRootRulePath");tN=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=s8(e),o=n?"_root.md":e,i=join(r,o),{frontmatter:a,body:l}=T(t(i)),c={description:typeof a.description=="string"?a.description:void 0,globs:Array.isArray(a.globs)?a.globs:void 0,root:n};return c.description===void 0&&delete c.description,c.globs===void 0&&delete c.globs,{destPath:i,toPath:`${Zf}/${o}`,content:await z(i,c,l)}},"continueRuleMapper"),rN=s(async({absolutePath:e,relativePath:t,normalizeTo:r,destDir:n})=>{let o=join(n,t),{frontmatter:i,body:a}=T(r(o)),l=BD(i,e),c=l.name||t.replace(/\.md$/,"").replace(/^.*\//,""),m=t.includes("/")?t.slice(0,t.lastIndexOf("/")):"",p=m?`${m}/${c}.md`:`${c}.md`,u=join(n,p),f=await Ce(u,{description:l.description,hasDescription:!!l.description,allowedTools:l.allowedTools,hasAllowedTools:l.allowedTools.length>0},T(KD(l,a)).body);return {destPath:u,toPath:`${eg}/${p}`,content:f}},"continueCommandMapper");});function oN(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:gl}))}var sN=d(()=>{Oe();fo();s(oN,"lintRules");});function iN(e){return e.commands.filter(t=>t.allowedTools.length>0).map(t=>M(t.source,"continue","Continue invokable prompt rules do not natively enforce canonical allowed-tools metadata."))}var aN=d(()=>{Ie();s(iN,"lintCommands");});function c8(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var lN,cN=d(()=>{b();fo();s(c8,"computeStatus");lN=s(async(e,t,r,n)=>{if(r!=="global")return [];let o=n.has("rules"),i=n.has("commands"),a=n.has("mcp");if(!(o&&e.rules.length>0||i&&e.commands.length>0||a&&e.mcp!==null&&Object.keys(e.mcp.mcpServers).length>0))return [];let c={name:"agentsmesh",version:1,schema:"v1"};if(o&&e.rules.length>0&&(c.rules=e.rules.map(u=>({name:u.description||basename(u.source,".md"),rule:u.body.trim()}))),i&&e.commands.length>0&&(c.prompts=e.commands.map(u=>{let f={name:u.name};return u.description&&(f.description=u.description),f.prompt=u.body.trim(),f})),a&&e.mcp!==null){let u=Object.entries(e.mcp.mcpServers);u.length>0&&(c.mcpServers=u.map(([f,g])=>({name:f,...g})));}let m=stringify(c),p=await I(join(t,_u));return [{target:"continue",path:_u,content:m,currentContent:p??void 0,status:c8(p,m)}]},"generateContinueGlobalConfig");});function pN(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var uN,dN=d(()=>{b();fo();cN();hI();s(pN,"computeStatus");uN=s(async(e,t,r,n)=>{let o=await lN(e,t,r,n);if(r!=="global")return o;let i=[...o];if(n.has("permissions")){let a=XD(e.permissions);if(a){let l=await I(join(t,hl));i.push({target:"continue",path:hl,content:a,currentContent:l??void 0,status:pN(l,a)});}}if(n.has("rules")){let a=e.rules.find(l=>l.root);if(a){let l=a.body.trim(),c=await I(join(t,Yc));i.push({target:"continue",path:Yc,content:l,currentContent:c??void 0,status:pN(c,l)});}}return i},"generateContinueScopeExtras");});var m8,p8,u8,d8,Ag,_I=d(()=>{Se();YD();fo();eN();nN();sN();aN();bg();we();dN();m8={name:"continue",primaryRootInstructionPath:Ts,generateRules:WD,generateCommands:HD,generateAgents:VD,generateSkills:JD,generateMcp:zD,importFrom:ZD},p8={rootInstructionPath:Ts,skillDir:".continue/skills",managedOutputs:{dirs:[".continue/prompts",".continue/rules",".continue/skills"],files:[".continue/mcpServers/agentsmesh.json"]},paths:{rulePath(e,t){return `${En}/${e}.md`},commandPath(e,t){return jD(e)},agentPath(e){return `${lr}/${V(e)}/SKILL.md`}}},u8={rootInstructionPath:Ts,outputFamilies:[{id:"compat-agents",kind:"additional",explicitPaths:[Yc]}],skillDir:lr,managedOutputs:{dirs:[En,uo,lr,".agents/skills"],files:[qf,Yc,_u,hl]},mirrorGlobalPath(e,t){return e.startsWith(`${lr}/`)?`.agents/skills/${e.slice(lr.length+1)}`:null},paths:{rulePath(e,t){return `${En}/${e}.md`},commandPath(e,t){return `${uo}/${e}.md`},agentPath(e){return `${lr}/${V(e)}/SKILL.md`}}},d8={rules:"native",additionalRules:"native",commands:"native",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"native"},Ag={id:"continue",metadata:{displayName:"Continue",category:"ide",officialUrl:"https://continue.dev",shortDescription:"Open-source AI code assistant"},generators:m8,capabilities:{rules:"native",additionalRules:"native",commands:"native",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},emptyImportMessage:"No Continue config found (.continue/rules/*.md, .continue/skills, or .continue/mcpServers/*).",supportsConversion:{agents:true},lintRules:oN,lint:{commands:iN},project:p8,globalSupport:{capabilities:d8,detectionPaths:[En,uo,".continue/mcpServers",lr],layout:u8,scopeExtras:uN},importer:{rules:{feature:"rules",mode:"directory",source:{project:[En],global:[En]},canonicalDir:Zf,extensions:[".md"],map:tN},commands:{feature:"commands",mode:"directory",source:{project:[uo],global:[uo]},canonicalDir:eg,extensions:[".md"],map:rN}},buildImportPaths:tR,detectionPaths:[".continue/rules",".continue/skills",".continue/mcpServers"],nativeInstall:{pickPaths:[{prefix:".continue/rules",feature:"rules",strategy:{kind:"basename",suffix:".md"}},{prefix:".continue/prompts",feature:"commands",strategy:{kind:"basename",suffix:".md"}},{prefix:".continue/skills",feature:"skills",strategy:{kind:"skillDir"}}]},conversionDefaults:{agentsToSkills:true}};});var ci,_a,fN,Sa,mi,Wo,Ho,Ra,Vl,Tg,xg,gN,RI,hN,yN,pi,Jl,ui,Yl,Xl,II,kI,Ql,Yt=d(()=>{ci="copilot",_a=".github/copilot-instructions.md",fN=".github/copilot",Sa=".github/instructions",mi=".github/prompts",Wo=".github/hooks",Ho=".github/skills",Ra=".github/agents",Vl=".agentsmesh/rules",Tg=".agentsmesh/commands",xg=".agentsmesh/agents",gN=".agentsmesh/skills",RI=".agentsmesh/hooks.yaml",hN=".agentsmesh/mcp.json",yN=".github/copilot-hooks",pi=".copilot/copilot-instructions.md",Jl=".copilot/agents",ui=".copilot/skills",Yl=".copilot/prompts",Xl=".copilot/AGENTS.md",II=".claude/skills",kI=".agents/skills",Ql=".vscode/mcp.json";});function _N(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):typeof e=="string"&&e.length>0?e.split(",").map(t=>t.trim()).filter(Boolean):[]}function Pg(e){return `${mi}/${e}.prompt.md`}function SN(e){let t={agent:"agent",description:e.description||void 0,"x-agentsmesh-kind":"command","x-agentsmesh-name":e.name,"x-agentsmesh-allowed-tools":e.allowedTools.length>0?e.allowedTools:void 0};return t.description===void 0&&delete t.description,t["x-agentsmesh-allowed-tools"]===void 0&&delete t["x-agentsmesh-allowed-tools"],x(t,e.body.trim()||"")}function RN(e,t){let n=((typeof e["x-agentsmesh-name"]=="string"?e["x-agentsmesh-name"]:"")||basename(t,".prompt.md")).trim(),o=_N(e["x-agentsmesh-allowed-tools"]),i=o.length>0?o:_N(e.tools);return {name:n,description:typeof e.description=="string"?e.description:"",allowedTools:i}}var Dg=d(()=>{U();Yt();s(_N,"toStringArray");s(Pg,"commandPromptPath");s(SN,"serializeCommandPrompt");s(RN,"parseCommandPromptFrontmatter");});function Ng(e){return fn(e)}var LI=d(()=>{gn();s(Ng,"hasHookCommand");});function EI(e,t){return t?.scope==="global"?[]:!e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Ql,content:JSON.stringify({servers:e.mcp.mcpServers},null,2)}]}var IN=d(()=>{Yt();s(EI,"generateMcp");});function h8(e){let t=basename(e,".md");return t==="_root"?"root":t}function y8(e){switch(e){case "PreToolUse":return "preToolUse";case "PostToolUse":return "postToolUse";case "Notification":return "notification";case "UserPromptSubmit":return "userPromptSubmitted";default:return null}}function kN(e){let t=[],r=e.rules.find(n=>n.root);r?.body.trim()&&t.push(r.body.trim());for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes("copilot"))continue;let o=n.body.trim();if(!o)continue;let i=n.description?`## ${n.description}`:null;i?t.push(`${i}
|
|
113
113
|
|
|
114
114
|
${o}`):t.push(o);}return t.join(`
|
|
115
115
|
|
|
116
|
-
`)}function
|
|
117
|
-
`)}async function
|
|
116
|
+
`)}function LN(e){let t=e.rules.find(n=>n.root),r=[];t&&r.push({path:_a,content:t.body.trim()||""});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes("copilot")||n.globs.length===0)continue;let o=h8(n.source),i={description:n.description||void 0,applyTo:n.globs.length===1?n.globs[0]:n.globs};Object.keys(i).forEach(l=>{i[l]===void 0&&delete i[l];});let a=x(i,n.body.trim()||"");r.push({path:`${Sa}/${o}.instructions.md`,content:a});}return r}function EN(e){return e.commands.map(t=>({path:Pg(t.name),content:SN(t)}))}function CN(e){let t=[];for(let r of e.skills){let n={name:r.name,description:r.description||void 0};n.description===void 0&&delete n.description;let o=x(n,r.body.trim()||"");t.push({path:`${Ho}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${Ho}/${r.name}/${a}`,content:i.content});}}return t}function ON(e){return e.agents.map(t=>{let r={name:t.name,description:t.description,tools:t.tools.length>0?t.tools:void 0,model:t.model||void 0,"mcp-servers":t.mcpServers.length>0?t.mcpServers:void 0,skills:t.skills.length>0?t.skills:void 0};Object.keys(r).forEach(o=>{r[o]===void 0&&delete r[o];});let n=x(r,t.body.trim()||"");return {path:`${Ra}/${t.name}.agent.md`,content:n}})}function wN(e){if(!e.hooks)return [];let t=Object.fromEntries(Object.entries(e.hooks).flatMap(([r,n])=>{let o=y8(r);if(!o||!Array.isArray(n))return [];let i=n.filter(a=>typeof a=="object"&&a!==null&&Ng(a)).map((a,l)=>{let m={type:"command",bash:`./scripts/${r.replace(/[^a-zA-Z0-9]/g,"-").toLowerCase()}-${l}.sh`,comment:`Matcher: ${a.matcher}`};return a.timeout!==void 0&&(m.timeoutSec=Math.ceil(a.timeout/1e3)),m});return i.length>0?[[o,i]]:[]}));return Object.keys(t).length===0?[]:[{path:`${Wo}/agentsmesh.json`,content:JSON.stringify({version:1,hooks:t},null,2)}]}var bN=d(()=>{U();Yt();Dg();LI();IN();s(h8,"ruleSlug");s(y8,"mapHookEvent");s(kN,"renderCopilotGlobalInstructions");s(LN,"generateRules");s(EN,"generateCommands");s(CN,"generateSkills");s(ON,"generateAgents");s(wN,"generateHooks");});function S8(e){switch(e){case "preToolUse":return "PreToolUse";case "postToolUse":return "PostToolUse";case "notification":return "Notification";case "userPromptSubmitted":return "UserPromptSubmit";default:return null}}function R8(e){return typeof e!="string"?"*":e.match(/^Matcher:\s*(.+)$/)?.[1]?.trim()||"*"}function xN(e){let t=e.match(/^# agentsmesh-command:\s*(.+)$/m);return t?.[1]?t[1].trim():e.replace(/^#!.*\n/,"").replace(/^#.*\n/gm,"").replace(/^HOOK_DIR=.*\n/gm,"").replace(/^set -e[u]?\n?/m,"").trim()}async function PN(e,t){let r=join(e,Wo),o=(await B(r).catch(()=>[])).filter(p=>p.endsWith(".json")),i={};for(let p of o){let u=await I(p);if(!u)continue;let f;try{f=JSON.parse(u);}catch{continue}if(!(!f||typeof f.hooks!="object"||f.hooks===null))for(let[g,h]of Object.entries(f.hooks)){let y=S8(g);if(!(!y||!Array.isArray(h)))for(let _ of h){if(!_||typeof _!="object")continue;let R=_,k=typeof R.bash=="string"?R.bash:"";if(!k)continue;let w=join(r,k.replace(/^\.\//,"")),D=await I(w);if(!D)continue;let v=xN(D);v&&(i[y]||(i[y]=[]),i[y].push({matcher:R8(R.comment),command:v,type:"command"}));}}}let a=join(e,yN),c=(await B(a).catch(()=>[])).filter(p=>dirname(p)===a&&/^[^-]+-\d+\.sh$/i.test(basename(p)));for(let p of c){let u=await I(p);if(!u)continue;let f=basename(p,".sh"),g=f.lastIndexOf("-"),h=g>0?f.slice(0,g):f;i[h]||(i[h]=[]),i[h].push({matcher:"*",command:xN(u),type:"command"});}if(Object.keys(i).length===0)return;let m=join(e,RI);await O(dirname(m)),await L(m,stringify(i)),t.push({fromTool:ci,fromPath:join(e,Wo),toPath:RI,feature:"hooks"});}var DN=d(()=>{b();Yt();s(S8,"mapCopilotHookEvent");s(R8,"extractMatcher");s(xN,"extractWrapperCommand");s(PN,"importHooks");});async function NN(e,t,r,n=Ho){let o=join(e,n),i=await Vu(o),a={projectRoot:e,destCanonicalSkillsDir:gN,targetName:ci,normalize:r,results:t};for(let[l,c]of i)await zu(l,c,a);}var vN=d(()=>{Cm();Yt();s(NN,"importSkills");});async function FN(e,t={}){let r=t.scope??"project",n=[],o=await H(ci,e,r);return n.push(...await X(vg,e,r,{normalize:o})),await NN(e,n,o,r==="global"?ui:Ho),r==="project"&&await PN(e,n),n}var MN=d(()=>{he();Ae();Yt();DN();vN();CI();s(FN,"importFromCopilot");});async function Fg(e){let t=await B(e),r=new Set;for(let n of t){if(basename(n)==="SKILL.md"){r.add(basename(dirname(n)));continue}!relative(e,n).replace(/\\/g,"/").includes("/")&&n.toLowerCase().endsWith(".md")&&r.add(basename(n,".md"));}return [...r].filter(Boolean).sort()}var wI=d(()=>{b();s(Fg,"skillNamesFromNativeSkillDir");});async function GN(e,t){let r=join(e,...t.split("/"));if(t.startsWith(mi)){let n=await B(r),o=[...new Set(n.filter(i=>i.toLowerCase().endsWith(".prompt.md")).map(i=>basename(i,".prompt.md")))].sort();return o.length?{commands:o}:{}}if(t.startsWith(".github/copilot")&&!t.includes("copilot-instructions.md")){let n=await B(r),o=[...new Set(n.filter(i=>i.includes(".instructions.md")).map(i=>basename(i).replace(/\.instructions\.md$/i,"")))].sort();return o.length?{rules:o}:{}}if(t.startsWith(".github/instructions")){let n=await B(r),o=new Set;for(let a of n){let l=basename(a);l.toLowerCase().endsWith(".instructions.md")?o.add(l.replace(/\.instructions\.md$/i,"")):l.toLowerCase().endsWith(".md")&&o.add(basename(a,".md"));}let i=[...o].sort();return i.length?{rules:i}:{}}if(t.startsWith(".github/skills")){let n=await Fg(r);return n.length?{skills:n}:{}}if(t.startsWith(".github/agents")){let n=await B(r),o=[...new Set(n.filter(i=>i.toLowerCase().endsWith(".agent.md")).map(i=>basename(i,".agent.md")))].sort();return o.length?{agents:o}:{}}return {}}var $N=d(()=>{b();Yt();wI();s(GN,"inferCopilotPickFromPath");});function jN(e,t,r,n){let i=J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(l=>({...l,target:ci})),a=e.rules.filter(l=>!l.root&&l.globs.length===0);return [...i,...a.map(l=>({level:"warning",file:l.source,target:ci,message:"Copilot path-specific instructions require applyTo globs; non-root rules without globs are not generated."}))]}var UN=d(()=>{Oe();Yt();s(jN,"lintRules");});function BN(e){return e.commands.filter(t=>t.allowedTools.length>0).map(t=>M(t.source,"copilot","Copilot prompt files do not enforce canonical allowed-tools natively."))}function KN(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=["PreToolUse","PostToolUse","Notification","UserPromptSubmit"],r=ji(e.hooks,t).map(o=>Ui(o,"copilot",t,{unsupportedBy:"Copilot hooks"}));return Object.values(e.hooks).some(o=>Array.isArray(o)&&o.length>0)&&r.push(M(".agentsmesh/hooks.yaml","copilot","copilot hooks are emitted as .github/hooks/scripts/*.sh wrapper scripts with a `#!/usr/bin/env bash` header; they require a POSIX shell (git-bash or WSL) to execute on Windows.")),r}var WN=d(()=>{Ie();s(BN,"lintCommands");s(KN,"lintHooks");});function w8(e){return e.replace(/[^a-zA-Z0-9]/g,"-").toLowerCase()}function b8(e,t){let r=relative(e,t).replace(/\\/g,"/");return !r||r.startsWith("../")?null:r}function A8(e,t){let r=e.match(zN);if(!r?.groups)return e;let n=r.groups.prefix??"",o=r.groups.suffix??"";return `${n}"$HOOK_DIR/${t}"${o}`}async function T8(e,t){let n=t.match(zN)?.groups?.path;if(!n)return null;let o=join(e,n),i=await I(o);if(i===null)return null;let a=b8(e,o);return a?{assetPath:`${Wo}/scripts/${a}`,content:i,rewrittenCommand:A8(t,a)}:null}function x8(e,t){return `${Wo}/scripts/${w8(e)}-${t}.sh`}function HN(e){return e.replace(/[\r\n]+/g," ")}function P8(e,t){return ["#!/usr/bin/env bash",`# agentsmesh-matcher: ${HN(t)}`,`# agentsmesh-command: ${HN(e)}`,"set -eu",e,""].join(`
|
|
117
|
+
`)}async function VN(e,t,r){if(!t.hooks)return r;let n=[],o=new Map;for(let[i,a]of Object.entries(t.hooks)){if(!Array.isArray(a))continue;let l=0;for(let c of a){if(!Ng(c))continue;let m=x8(i,l),p=c.command,u=await T8(e,c.command);u&&(p=u.rewrittenCommand,o.has(u.assetPath)||o.set(u.assetPath,{path:u.assetPath,content:u.content}));let f=P8(p,c.matcher).replace(`set -eu
|
|
118
118
|
`,`set -eu
|
|
119
119
|
HOOK_DIR="$(cd "$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
|
|
120
|
-
`);n.push({path:m,content:f}),l++;}}return [...r,...n,...o.values()]}var
|
|
121
|
-
`);return [{path:xs,content:t}]}function j8(e){if(!e.hooks)return {};let t={};for(let[r,n]of Object.entries(e.hooks)){if(!Array.isArray(n))continue;let o=[];for(let i of n){let a=typeof i.command=="string"?i.command.trim():"";if(!a)continue;let l={matcher:i.matcher,command:a};i.timeout!==void 0&&(l.timeout=i.timeout),o.push(l);}o.length>0&&(t[r]=o);}return t}var
|
|
122
|
-
`)}var
|
|
120
|
+
`);n.push({path:m,content:f}),l++;}}return [...r,...n,...o.values()]}var zN,JN=d(()=>{b();Yt();LI();zN=/^(?<prefix>\s*(?:(?:bash|sh|zsh)\s+)?)["']?(?<path>(?:\.\.\/|\.\/|[^/\s"'`]+\/)[^\s"'`]+)["']?(?<suffix>(?:\s.*)?)$/;s(w8,"safePhaseName");s(b8,"toRepoRelative");s(A8,"rewriteWrapperCommand");s(T8,"buildAssetOutput");s(x8,"wrapperPath");s(HN,"safeShellLine");s(P8,"buildWrapper");s(VN,"addHookScriptAssets");});function N8(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var YN,XN=d(()=>{b();Yt();s(N8,"computeStatus");YN=s(async(e,t,r,n)=>{if(r!=="global"||!n.has("rules"))return [];let o=e.rules.find(l=>l.root);if(!o)return [];let i=o.body.trim(),a=await I(join(t,Xl));return [{target:"copilot",path:Xl,content:i,currentContent:a??void 0,status:N8(a,i)}]},"generateCopilotGlobalExtras");});function QN(e){for(let t of Object.keys(e))e[t]===void 0&&delete e[t];return e}var qN,ZN,ev,tv,rv=d(()=>{U();de();vt();Dg();Yt();s(QN,"pruneUndefined");qN=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=e.replace(/\.instructions\.md$/i,".md"),o=join(r,n),{frontmatter:i,body:a}=T(t(o)),l=hs(i.globs),c=QN({root:false,description:typeof i.description=="string"?i.description:void 0,globs:l.length>0?l:void 0});return {destPath:o,toPath:`${Vl}/${n}`,content:await z(o,c,a)}},"copilotLegacyRuleMapper"),ZN=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=e.endsWith(".instructions.md")?e.replace(/\.instructions\.md$/i,".md"):e,o=join(r,n),{frontmatter:i,body:a}=T(t(o)),l=hs(i.applyTo!==void 0?i.applyTo:i.globs),c=QN({root:false,description:typeof i.description=="string"?i.description:void 0,globs:l.length>0?l:void 0});return {destPath:o,toPath:`${Vl}/${n}`,content:await z(o,c,a)}},"copilotNewRuleMapper"),ev=s(async({absolutePath:e,relativePath:t,normalizeTo:r,destDir:n})=>{let o=t.replace(/\.prompt\.md$/i,".md"),i=join(n,o),{frontmatter:a,body:l}=T(r(i)),c=RN(a,e),m=o.includes("/")?o.slice(0,o.lastIndexOf("/")):"",p=`${c.name}.md`,u=m?`${m}/${p}`:p,f=join(n,u);return {destPath:f,toPath:`${Tg}/${u}`,content:await Ce(f,{description:c.description,hasDescription:Object.prototype.hasOwnProperty.call(a,"description"),allowedTools:c.allowedTools,hasAllowedTools:Object.prototype.hasOwnProperty.call(a,"tools")||Object.prototype.hasOwnProperty.call(a,"x-agentsmesh-allowed-tools")},l)}},"copilotCommandMapper"),tv=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{if(!e.endsWith(".agent.md"))return null;let n=e.replace(/\.agent\.md$/i,".md"),o=basename(n,".md"),i=join(r,n),{frontmatter:a,body:l}=T(t(i));return {destPath:i,toPath:`${xg}/${n}`,content:await xe(i,{...a,name:typeof a.name=="string"?a.name:o},l)}},"copilotAgentMapper");});var nv,ov=d(()=>{Yt();rv();nv={rules:[{feature:"rules",mode:"singleFile",source:{project:[_a],global:[pi]},canonicalDir:Vl,canonicalRootFilename:"_root.md",markAsRoot:true},{feature:"rules",mode:"directory",source:{project:[fN]},canonicalDir:Vl,extensions:[".instructions.md"],map:qN},{feature:"rules",mode:"directory",source:{project:[Sa]},canonicalDir:Vl,extensions:[".instructions.md",".md"],map:ZN}],commands:{feature:"commands",mode:"directory",source:{project:[mi],global:[Yl]},canonicalDir:Tg,extensions:[".prompt.md"],map:ev},agents:{feature:"agents",mode:"directory",source:{project:[Ra],global:[Jl]},canonicalDir:xg,extensions:[".agent.md"],map:tv},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Ql]},canonicalDir:".agentsmesh",canonicalFilename:hN,mcpServersKey:"servers"}};});var sv,iv,av=d(()=>{sv={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},iv={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"none",hooks:"none",ignore:"none",permissions:"none"};});var M8,G8,$8,vg,CI=d(()=>{bN();Yt();MN();$N();UN();we();Dg();WN();JN();XN();ov();av();M8={name:"copilot",primaryRootInstructionPath:_a,generateRules:LN,generateCommands:EN,generateAgents:ON,generateSkills:CN,generateHooks:wN,generateMcp:EI,importFrom:FN},G8={rootInstructionPath:_a,outputFamilies:[{id:"instructions",kind:"additional",pathPrefix:".github/instructions/"}],extraRuleOutputPaths(e){if(e.root||e.globs.length===0)return [];let t=basename(e.source,".md");return [`${Sa}/${t}.instructions.md`]},skillDir:".github/skills",managedOutputs:{dirs:[".github/agents",".github/instructions",".github/prompts",".github/skills",".github/hooks/scripts"],files:[".github/copilot-instructions.md",".github/hooks/agentsmesh.json",Ql]},paths:{rulePath(e,t){return `${Sa}/${e}.instructions.md`},commandPath(e,t){return Pg(e)},agentPath(e,t){return `${Ra}/${e}.agent.md`}}},$8={rootInstructionPath:pi,renderPrimaryRootInstruction:kN,outputFamilies:[{id:"compat-agents",kind:"additional",explicitPaths:[Xl]}],skillDir:ui,managedOutputs:{dirs:[Jl,ui,Yl,kI,II],files:[pi,Xl]},rewriteGeneratedPath(e){return e===_a?pi:e.startsWith(`${Sa}/`)?pi:e.startsWith(`${mi}/`)?e.replace(`${mi}/`,`${Yl}/`):e.startsWith(`${Ra}/`)?e.replace(`${Ra}/`,`${Jl}/`):e.startsWith(`${Ho}/`)?e.replace(`${Ho}/`,`${ui}/`):e.startsWith(`${Wo}/`)||e===Ql?null:e},mirrorGlobalPath(e,t){if(e.startsWith(`${ui}/`)&&!t.includes("codex-cli")){let r=e.slice(ui.length+1);return [`.agents/skills/${r}`,`${II}/${r}`]}return null},paths:{rulePath(e,t){return pi},commandPath(e,t){return `${Yl}/${e}.prompt.md`},agentPath(e,t){return `${Jl}/${e}.agent.md`}}},vg={id:"copilot",metadata:{displayName:"GitHub Copilot",category:"ide",officialUrl:"https://github.com/features/copilot",shortDescription:"GitHub's AI pair programmer"},generators:M8,capabilities:sv,emptyImportMessage:"No Copilot config found (.github/copilot-instructions.md, .github/copilot or .github/instructions, .github/prompts, .github/skills, .github/agents, or .github/hooks).",lintRules:jN,lint:{commands:BN,hooks:KN},postProcessHookOutputs:s(async(e,t,r)=>VN(e,t,[...r]),"postProcessHookOutputs"),project:G8,globalSupport:{capabilities:iv,detectionPaths:[pi,Xl,Jl,ui,Yl,kI],layout:$8,scopeExtras:YN},importer:nv,buildImportPaths:rR,detectionPaths:[".github/copilot-instructions.md",".github/copilot",".github/instructions",".github/prompts",".github/skills",".github/agents",".github/hooks"],nativeInstall:{inferPick:GN}};});function Mg(e){return {$schema:"https://charm.land/crush.json",...e}}var lv=d(()=>{s(Mg,"buildCrushConfigJson");});function cv(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(Mr)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Gr,content:o}]:[]}function mv(e){return ae(e,dt)}function pv(e){return e.commands.map(t=>({path:`${dt}/${Z(t.name)}/SKILL.md`,content:Xe(t)}))}function uv(e){return e.agents.map(t=>({path:`${dt}/${V(t.name)}/SKILL.md`,content:je(t)}))}function dv(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=Mg({mcp:e.mcp.mcpServers});return [{path:cr,content:JSON.stringify(t,null,2)}]}function fv(e){if(!e.hooks)return [];let t=j8(e);if(Object.keys(t).length===0)return [];let r=Mg({hooks:t});return [{path:cr,content:JSON.stringify(r,null,2)}]}function gv(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];if(t.length===0&&r.length===0&&n.length===0)return [];let o={};t.length>0&&(o.allowed_tools=t),r.length>0&&(o.denied_tools=r);let i=Mg({permissions:o});return [{path:cr,content:JSON.stringify(i,null,2)}]}function hv(e){if(!e.ignore||e.ignore.length===0)return [];let t=e.ignore.join(`
|
|
121
|
+
`);return [{path:xs,content:t}]}function j8(e){if(!e.hooks)return {};let t={};for(let[r,n]of Object.entries(e.hooks)){if(!Array.isArray(n))continue;let o=[];for(let i of n){let a=typeof i.command=="string"?i.command.trim():"";if(!a)continue;let l={matcher:i.matcher,command:a};i.timeout!==void 0&&(l.timeout=i.timeout),o.push(l);}o.length>0&&(t[r]=o);}return t}var yv=d(()=>{ie();Be();Se();$e();Qc();lv();s(cv,"generateRules");s(mv,"generateSkills");s(pv,"generateCommands");s(uv,"generateAgents");s(dv,"generateMcp");s(fv,"generateHooks");s(gv,"generatePermissions");s(hv,"generateIgnore");s(j8,"buildCrushHooksFromCanonical");});async function Sv(e,t={}){let r=t.scope??"project",n=[],o=await H(Mr,e,r);return n.push(...await X(Gg,e,r,{normalize:o})),await oe(e,r==="global"?mr:dt,Mr,n,o),await U8(e,r,n),n}async function U8(e,t,r){let o=join(e,t==="global"?Xc:cr),i=await I(o);if(i===null)return;let a;try{a=JSON.parse(i);}catch{return}if(!a||typeof a!="object"||Array.isArray(a))return;let l=a,c=B8(l.mcp);if(Object.keys(c).length>0){let p=og,u=join(e,p);await O(dirname(u)),await L(u,JSON.stringify({mcpServers:c},null,2)),r.push({fromTool:Mr,fromPath:o,toPath:p,feature:"mcp"});}let m=K8(l.hooks);if(m!==null&&Object.keys(m).length>0){let p=".agentsmesh/hooks.yaml",u=join(e,p);await O(dirname(u));let f=W8(m);await L(u,f),r.push({fromTool:Mr,fromPath:o,toPath:p,feature:"hooks"});}}function B8(e){if(!e||typeof e!="object"||Array.isArray(e))return {};let t={};for(let[r,n]of Object.entries(e)){if(!n||typeof n!="object"||Array.isArray(n))continue;let o=n,i=typeof o.description=="string"?o.description:void 0;if(typeof o.command=="string"){t[r]={type:typeof o.type=="string"?o.type:"stdio",command:o.command,args:st(o.args),env:zt(o.env),...i!==void 0?{description:i}:{}};continue}typeof o.url=="string"&&(t[r]={type:typeof o.type=="string"?o.type:"http",url:o.url,headers:zt(o.headers),env:zt(o.env),...i!==void 0?{description:i}:{}});}return t}function K8(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t={};for(let[r,n]of Object.entries(e)){if(!Array.isArray(n))continue;let o=[];for(let i of n){if(!i||typeof i!="object"||Array.isArray(i))continue;let a=i,l=typeof a.command=="string"?a.command.trim():"";if(!l)continue;let m={matcher:typeof a.matcher=="string"?a.matcher:"",command:l};typeof a.timeout=="number"&&(m.timeout=a.timeout),o.push(m);}o.length>0&&(t[r]=o);}return Object.keys(t).length>0?t:null}function W8(e){let t=[];for(let[r,n]of Object.entries(e)){t.push(`${r}:`);for(let o of n)t.push(` - matcher: ${JSON.stringify(o.matcher)}`),t.push(` command: ${JSON.stringify(o.command)}`),o.timeout!==void 0&&t.push(` timeout: ${o.timeout}`);}return t.join(`
|
|
122
|
+
`)}var Rv=d(()=>{he();ie();Ae();b();vt();AI();Qc();s(Sv,"importFromCrush");s(U8,"importCrushConfigJson");s(B8,"parseCrushMcpServers");s(K8,"parseCrushHooks");s(W8,"serializeHooksYaml");});function Iv(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Mr}))}var kv=d(()=>{Oe();Qc();s(Iv,"lintRules");});function Lv(e){return e.commands.length===0?[]:[M(".agentsmesh/commands","crush","Crush has no native slash-command format; commands are projected as skills via supportsConversion.")]}var Ev=d(()=>{Ie();s(Lv,"lintCommands");});function TI(e){try{let t=JSON.parse(e);return t!==null&&typeof t=="object"&&!Array.isArray(t)?t:{}}catch{return {}}}function $g(e,t){let r=TI(e),n=z8.parse(JSON.parse(t)),o={...r};n.permissions!==void 0&&(o.permissions=n.permissions),n.hooks!==void 0&&(o.hooks=n.hooks);let i=o.permissions;return i&&typeof i=="object"&&!Array.isArray(i)&&!("ask"in i)&&(i.ask=[]),JSON.stringify(o,null,2)}function Ov(e,t){let r=TI(e),n=V8.parse(JSON.parse(t)),o={...r};return n.mcpServers!==void 0&&(o.mcpServers=n.mcpServers),n.hooks!==void 0&&(o.hooks=n.hooks),n.experimental!==void 0&&(o.experimental=n.experimental),n.context!==void 0&&(o.context=n.context),JSON.stringify(o,null,2)}function wv(e,t){let r=TI(e),n=H8.parse(JSON.parse(t)),o={...r};return n.$schema!==void 0&&(o.$schema=n.$schema),n.mcp!==void 0&&(o.mcp=n.mcp),n.hooks!==void 0&&(o.hooks=n.hooks),n.permissions!==void 0&&(o.permissions=n.permissions),n.options!==void 0&&(o.options=n.options),JSON.stringify(o,null,2)}var Cv,H8,z8,V8,Zu=d(()=>{Cv=[".claude/settings.json",".gemini/settings.json"],H8=z$1.object({$schema:z$1.string().optional(),mcp:z$1.record(z$1.string(),z$1.unknown()).optional(),hooks:z$1.record(z$1.string(),z$1.unknown()).optional(),permissions:z$1.record(z$1.string(),z$1.unknown()).optional(),options:z$1.record(z$1.string(),z$1.unknown()).optional()}).passthrough(),z8=z$1.object({permissions:z$1.object({allow:z$1.array(z$1.string()).optional(),deny:z$1.array(z$1.string()).optional()}).passthrough().optional(),hooks:z$1.record(z$1.string(),z$1.unknown()).optional()}).passthrough(),V8=z$1.object({mcpServers:z$1.record(z$1.string(),z$1.unknown()).optional(),hooks:z$1.record(z$1.string(),z$1.unknown()).optional(),experimental:z$1.record(z$1.string(),z$1.unknown()).optional(),context:z$1.record(z$1.string(),z$1.unknown()).optional()}).passthrough();s(TI,"parseJsonObject");s($g,"mergeSettingsJson");s(Ov,"mergeGeminiSettingsJson");s(wv,"mergeCrushConfigJson");});var J8,Y8,X8,Q8,q8,Gg,AI=d(()=>{$e();Se();yv();gt();Rv();kv();Ev();we();Zu();Qc();J8={name:Mr,primaryRootInstructionPath:Gr,generateRules:cv,generateCommands:pv,generateAgents:uv,generateSkills:mv,generateMcp:dv,generateHooks:fv,generatePermissions:gv,generateIgnore:hv,importFrom:Sv},Y8={rootInstructionPath:Gr,skillDir:dt,managedOutputs:{dirs:[dt],files:[Gr,cr,xs]},paths:{rulePath(e){return Gr},commandPath(e){return `${dt}/${Z(e)}/SKILL.md`},agentPath(e){return `${dt}/${V(e)}/SKILL.md`}}},X8={rootInstructionPath:yl,skillDir:mr,managedOutputs:{dirs:[mr],files:[yl,Xc]},rewriteGeneratedPath(e){return e===Gr?yl:e===cr?Xc:e===xs?null:e.startsWith(`${dt}/`)?e.replace(`${dt}/`,`${mr}/`):e},mirrorGlobalPath(e,t){return ge(e,mr,t)},paths:{rulePath(e){return yl},commandPath(e){return `${mr}/${Z(e)}/SKILL.md`},agentPath(e){return `${mr}/${V(e)}/SKILL.md`}}},Q8={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"partial"},q8={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},Gg={id:Mr,metadata:{displayName:"Crush",category:"cli",officialUrl:"https://github.com/charmbracelet/crush",shortDescription:"Charm's TUI coding agent"},generators:J8,capabilities:Q8,emptyImportMessage:"No Crush config found (CRUSH.md, .crush/skills/, crush.json, or .crushignore).",lintRules:Iv,lint:{commands:Lv},supportsConversion:{commands:true,agents:true},project:Y8,globalSupport:{capabilities:q8,detectionPaths:[yl,Xc,mr],layout:X8},mergeGeneratedOutputContent(e,t,r,n){let o=t?.content??e;return o!==null&&n===cr?wv(o,r):null},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Gr],global:[yl]},canonicalDir:rg,canonicalRootFilename:"_root.md",markAsRoot:true},ignore:{feature:"ignore",mode:"flatFile",source:{project:[xs]},canonicalDir:".agentsmesh",canonicalFilename:ng}},buildImportPaths:nR,detectionPaths:[Gr,cr,dt,xs],sharedArtifacts:{".crush/skills/":"owner"}};});function xI(e){let t=[],r=e.rules.find(i=>i.root);if(r){let i=r.body.trim()?r.body:"";t.push({path:Vi,content:i});let a={alwaysApply:true};r.description&&(a.description=r.description);let l=x(a,i);t.push({path:Ps,content:l});}let n=e.rules.filter(i=>!i.root&&(i.targets.length===0||i.targets.includes("cursor")));for(let i of n){let a=basename(i.source,".md"),c={alwaysApply:i.trigger==="always_on"};i.description&&(c.description=i.description),i.globs.length>0&&(c.globs=i.globs);let m=x(c,i.body.trim()||"");t.push({path:`${$r}/${a}.mdc`,content:m});}let o=bv(e);return o.trim()&&t.push({path:On,content:o}),t}function bv(e){let t=e.rules.find(o=>o.root),r=e.rules.filter(o=>!o.root&&(o.targets.length===0||o.targets.includes("cursor"))),n=[];return t?.body.trim()?n.push(le(t.body,r)):r.length>0&&n.push(le("",r)),n.filter(Boolean).join(`
|
|
123
123
|
|
|
124
|
-
`)}var
|
|
125
|
-
`);return [{path:Cn,content:t}]}var
|
|
124
|
+
`)}var Av=d(()=>{U();Be();qe();s(xI,"generateRules");s(bv,"renderCursorGlobalUserRules");});function PI(e){return e.commands.map(t=>({path:`${jr}/${t.name}.md`,content:t.body.trim()||""}))}var Tv=d(()=>{qe();s(PI,"generateCommands");});function DI(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:pr,content:t}]}var xv=d(()=>{qe();s(DI,"generateMcp");});function NI(e){let t=[];for(let r of e.skills){let n={name:r.name,description:r.description||void 0};n.description===void 0&&delete n.description;let o=x(n,r.body.trim()||"");t.push({path:`${Ct}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${Ct}/${r.name}/${a}`,content:i.content});}}return t}var Pv=d(()=>{U();qe();s(NI,"generateSkills");});function vI(e){return e.agents.map(t=>{let r={name:t.name,description:t.description,tools:t.tools.length>0?t.tools:void 0,disallowedTools:t.disallowedTools.length>0?t.disallowedTools:void 0,model:t.model||void 0,permissionMode:t.permissionMode||void 0,maxTurns:t.maxTurns>0?t.maxTurns:void 0,mcpServers:t.mcpServers.length>0?t.mcpServers:void 0,hooks:Object.keys(t.hooks).length>0?t.hooks:void 0,skills:t.skills.length>0?t.skills:void 0,memory:t.memory||void 0};Object.keys(r).forEach(o=>{r[o]===void 0&&delete r[o];});let n=x(r,t.body.trim()||"");return {path:`${Ur}/${t.name}.md`,content:n}})}var Dv=d(()=>{U();qe();s(vI,"generateAgents");});function FI(e){return []}var Nv=d(()=>{s(FI,"generatePermissions");});function vv(e){return Object.keys(e).filter(t=>Array.isArray(e[t])&&e[t].length>0&&!(t in MI)&&!zf.has(t))}function Fv(e){let t={};for(let[r,n]of Object.entries(e)){let o=MI[r];if(!o||!Array.isArray(n))continue;let i=[];for(let a of n){if(!ms(a))continue;let l=Dc(a),c=a.type==="prompt"?{type:"prompt",prompt:l}:{type:"command",command:l};a.matcher&&(c.matcher=a.matcher),a.timeout!==void 0&&(c.timeout=a.timeout),i.push(c);}i.length>0&&(t[o]=i);}return t}function GI(e){let t={};for(let[r,n]of Object.entries(e)){let o=e3.get(r);if(!o||!Array.isArray(n))continue;let i=[];for(let a of n){if(!a||typeof a!="object")continue;let l=a,c=l.type==="prompt"?"prompt":"command";if(!ms({...l,type:c}))continue;let m=Dc({...l,type:c}),p={matcher:typeof l.matcher=="string"?l.matcher:"",type:c,command:m};typeof l.timeout=="number"&&(p.timeout=l.timeout),i.push(p);}i.length>0&&(t[o]=[...t[o]??[],...i]);}return t}var MI,e3,jg=d(()=>{LS();gn();MI={PreToolUse:"preToolUse",PostToolUse:"postToolUse",UserPromptSubmit:"beforeSubmitPrompt",SubagentStart:"subagentStart",SubagentStop:"subagentStop",Stop:"stop",SessionStart:"sessionStart",SessionEnd:"sessionEnd",PreCompact:"preCompact"},e3=new Map(Object.entries(MI).map(([e,t])=>[t,e]));s(vv,"unmappedCursorHookEvents");s(Fv,"toCursorHooks");s(GI,"cursorHooksToCanonical");});function $I(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=Fv(e.hooks);if(Object.keys(t).length===0)return [];let r=JSON.stringify({version:1,hooks:t},null,2);return [{path:go,content:r}]}var Mv=d(()=>{qe();jg();s($I,"generateHooks");});function jI(e){if(!e.ignore||e.ignore.length===0)return [];let t=e.ignore.join(`
|
|
125
|
+
`);return [{path:Cn,content:t}]}var Gv=d(()=>{qe();s(jI,"generateIgnore");});var $v=d(()=>{Av();Tv();xv();Pv();Dv();Nv();Mv();Gv();});var jv=d(()=>{$v();});async function Bg(e,t,r,n){let o=e.replace(/\.mdc$/i,".md"),i=join(t,o),l=T(r(i)).frontmatter.alwaysApply===true,c=l?join(t,"_root.md"):i,{frontmatter:m,body:p}=T(r(c));l&&n();let u={...m,root:l};if(delete u.alwaysApply,!l){let f=t3(m);f!==null&&(u.trigger=f);}return {destPath:c,toPath:`${ho}/${l?"_root.md":o}`,feature:"rules",content:await z(c,u,p)}}function t3(e){return e.alwaysApply!==false?null:(Array.isArray(e.globs)?e.globs:[]).length>0?"glob":(typeof e.description=="string"?e.description:"").trim().length>0?"model_decision":"manual"}async function Uv(e,t,r){let n=join(t,e),{frontmatter:o,body:i}=T(r(n)),a=Tr(o.allowedTools),l=a.length>0?a:Tr(o["allowed-tools"]);return {destPath:n,toPath:`${Ji}/${e}`,feature:"commands",content:await Ce(n,{description:typeof o.description=="string"?o.description:"",hasDescription:Object.prototype.hasOwnProperty.call(o,"description"),allowedTools:l,hasAllowedTools:Object.prototype.hasOwnProperty.call(o,"allowedTools")||Object.prototype.hasOwnProperty.call(o,"allowed-tools")},i)}}async function Bv(e,t,r){let n=join(t,e),{frontmatter:o,body:i}=T(r(n));return {destPath:n,toPath:`${Yi}/${e}`,feature:"agents",content:await xe(n,o,i)}}var UI=d(()=>{U();de();vt();qe();s(Bg,"mapCursorRuleFile");s(t3,"deriveCursorTrigger");s(Uv,"mapCursorCommandFile");s(Bv,"mapCursorAgentFile");});async function bm(e){let t=join(e.projectRoot,ho);await O(t);let r=join(t,"_root.md"),n=await Uo({content:e.content,projectRoot:e.projectRoot,rulesDir:ho,sourcePath:e.sourcePath,fromTool:"cursor",normalize:e.normalize});e.results.push(...n.results);let o=e.normalize(n.rootContent,e.sourcePath,r);if(!o.trim()&&n.results.length>0)return true;let{frontmatter:i,body:a}=T(o),l=i.root===true?i:{...i,root:true},c=await z(r,l,a);return await L(r,c),e.results.push({fromTool:"cursor",fromPath:e.sourcePath,toPath:`${ho}/_root.md`,feature:"rules"}),true}var BI=d(()=>{b();U();km();de();qe();s(bm,"importCursorRootFile");});async function Wv(e,t,r){let n=join(e,ho),o=false,i=join(e,$r);if(t.push(...await Re({srcDir:i,destDir:n,extensions:[".mdc"],fromTool:"cursor",normalize:r,mapEntry:s(async({srcPath:a,relativePath:l,normalizeTo:c})=>{if(o){let m=await I(a);if(m!==null){let{frontmatter:p}=T(m);if(p.alwaysApply===true)return null}}return Bg(l,n,c,()=>{o=true;})},"mapEntry")})),!o){let a=join(e,Vi),l=await I(a);l!==null&&(o=await bm({projectRoot:e,results:t,sourcePath:a,content:l,normalize:r}));}if(!o){let a=join(e,Qb),l=await I(a);l!==null&&await bm({projectRoot:e,results:t,sourcePath:a,content:l,normalize:r});}}var Hv=d(()=>{b();U();nr();UI();BI();qe();s(Wv,"importCursorRules");});async function Hg(e,t){let r=false,n=join(e,go),o=await I(n);if(o)try{let p=JSON.parse(o);if(p.hooks&&typeof p.hooks=="object"){let u=GI(p.hooks);if(Object.keys(u).length>0){let f=stringify(u),g=join(e,Su);await O(dirname(g)),await L(g,f),t.push({fromTool:"cursor",fromPath:n,toPath:Su,feature:"hooks"}),r=!0;}}}catch{}let i=join(e,sg),a=await I(i);if(!a)return;let l;try{l=JSON.parse(a);}catch{return}let c=l.permissions;if(c&&typeof c=="object"&&!Array.isArray(c)){let p=c,u=Array.isArray(p.allow)?p.allow.filter(g=>typeof g=="string"):[],f=Array.isArray(p.deny)?p.deny.filter(g=>typeof g=="string"):[];if(u.length>0||f.length>0){let g=stringify({allow:u,deny:f}),h=join(e,sR);await O(dirname(h)),await L(h,g),t.push({fromTool:"cursor",fromPath:i,toPath:sR,feature:"permissions"});}}let m=r?void 0:l.hooks;if(m&&typeof m=="object"&&!Array.isArray(m)){let p=GI(m);if(Object.keys(p).length>0){let u=stringify(p),f=join(e,Su);await O(dirname(f)),await L(f,u),t.push({fromTool:"cursor",fromPath:i,toPath:Su,feature:"hooks"});}}}async function zg(e,t){let r=[{path:join(e,Cn),label:Cn},{path:join(e,oR),label:oR}],n=[],o=[];for(let a of r){let l=await I(a.path);if(l!==null){o.push(a.label);for(let c of l.split(/\r?\n/)){let m=c.trim();m&&!n.includes(m)&&n.push(m);}}}if(n.length===0)return;let i=join(e,iR);await O(dirname(i)),await L(i,n.join(`
|
|
126
126
|
`)+`
|
|
127
|
-
`),t.push({fromTool:"cursor",fromPath:join(e,o[0]),toPath:iR,feature:"ignore"});}var WI=d(()=>{jg();b();qe();s(Hg,"importSettings");s(zg,"importIgnore");});async function Vg(e,t,r,n=Ct){let o=join(e,n),i=await Vu(o),a={projectRoot:e,destCanonicalSkillsDir:Qb,targetName:"cursor",normalize:r,results:t};for(let[p,u]of i)await zu(p,u,a);let l=await B(o).catch(()=>[]),c=l.filter(p=>p.endsWith(".md")),m=new Set(Array.from(i.values()).flatMap(p=>l.filter(u=>u.startsWith(p))));for(let p of c){if(m.has(p))continue;let u=await I(p);if(!u)continue;let f=basename(p,".md");await wP(f,p,u,a);}}var HI=d(()=>{b();Em();qe();s(Vg,"importSkills");});async function Hv(e){if(await j(join(e,$r)))return true;let t=[join(e,On),join(e,Qc),join(e,pr),join(e,go),join(e,Cn),join(e,Ct),join(e,Ur),join(e,jr)];for(let i of t){let a=await I(i);if(a!==null&&a.trim()!=="")return true}return !!((await B(join(e,Ct))).some(i=>i.endsWith(".md"))||(await B(join(e,Ur))).some(i=>i.endsWith(".md"))||(await B(join(e,jr))).some(i=>i.endsWith(".md")))}async function zv(e,t,r){let n=join(e,ho),o=false,i=join(e,$r),a=await Re({srcDir:i,destDir:n,extensions:[".mdc"],fromTool:bm,normalize:r,mapEntry:s(async({srcPath:l,relativePath:c,normalizeTo:m})=>{if(o){let p=await I(l);if(p!==null){let{frontmatter:u}=T(p);if(u.alwaysApply===true)return null}}return Bg(c,n,m,()=>{o=true;})},"mapEntry")});return t.push(...a),o}async function Vv(e,t,r){let n=join(e,Qc),o=await I(n);return o===null||o.trim()===""?false:wm({projectRoot:e,results:t,sourcePath:n,content:o.trim(),normalize:r})}async function Jv(e,t,r){let n=join(e,On),o=await I(n);return o===null||o.trim()===""?false:wm({projectRoot:e,results:t,sourcePath:n,content:o.trim(),normalize:r})}async function Yv(e,t){let r=join(e,pr),n=await I(r);if(n===null||n.trim()==="")return;let o;try{o=JSON.parse(n);}catch{return}if(!o||typeof o!="object"||!("mcpServers"in o))return;let i=join(e,qc);await O(dirname(i)),await L(i,n),t.push({fromTool:bm,fromPath:r,toPath:qc,feature:"mcp"});}async function Xv(e,t,r){let n=join(e,Ur),o=join(e,Yi);t.push(...await Re({srcDir:n,destDir:o,extensions:[".md"],fromTool:bm,normalize:r,mapEntry:s(({relativePath:i,normalizeTo:a})=>Uv(i,o,a),"mapEntry")}));}async function Qv(e,t,r){let n=join(e,jr),o=join(e,Ji);t.push(...await Re({srcDir:n,destDir:o,extensions:[".md"],fromTool:bm,normalize:r,mapEntry:s(({relativePath:i,normalizeTo:a})=>jv(i,o,a),"mapEntry")}));}var bm,qv=d(()=>{b();U();nr();qe();BI();UI();bm="cursor";s(Hv,"hasGlobalCursorArtifacts");s(zv,"importGlobalCursorRulesFromDir");s(Vv,"importGlobalUserRules");s(Jv,"importGlobalDotCursorAgents");s(Yv,"importGlobalMcp");s(Xv,"importGlobalAgents");s(Qv,"importGlobalCommands");});async function Zv(e){if(!await Hv(e))return [];let t=[],r=await H(bm,e,"global"),n=await zv(e,t,r);return n||(n=await Vv(e,t,r)),n||await Jv(e,t,r),await Yv(e,t),await Vg(e,t,r,Ct),await Xv(e,t,r),await Qv(e,t,r),await Hg(e,t),await zg(e,t),t}var eF=d(()=>{he();qe();HI();WI();qv();s(Zv,"importFromCursorGlobalExports");});async function i3(e,t){let r=join(e,pr),n=await I(r);if(!n)return;let o;try{o=JSON.parse(n);}catch{return}if(!o||typeof o!="object"||!("mcpServers"in o))return;let i=o.mcpServers;await Qe(e,qc,i),t.push({fromTool:"cursor",fromPath:r,toPath:qc,feature:"mcp"});}async function tF(e,t={}){if(t.scope==="global")return Zv(e);let r=[],n=await H("cursor",e);return await Kv(e,r,n),r.push(...await X(Jg,e,"project",{normalize:n})),await Vg(e,r,n),await i3(e,r),await Hg(e,r),await zg(e,r),r}var rF=d(()=>{he();b();Ae();In();Wv();WI();HI();eF();qe();zI();s(i3,"importMcp");s(tF,"importFromCursor");});var oF,sF,iF=d(()=>{U();de();vt();qe();oF=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n)),a=Tr(o.allowedTools),l=a.length>0?a:Tr(o["allowed-tools"]);return {destPath:n,toPath:`${Ji}/${e}`,content:await Ce(n,{description:typeof o.description=="string"?o.description:"",hasDescription:Object.prototype.hasOwnProperty.call(o,"description"),allowedTools:l,hasAllowedTools:Object.prototype.hasOwnProperty.call(o,"allowedTools")||Object.prototype.hasOwnProperty.call(o,"allowed-tools")},i)}},"cursorCommandMapper"),sF=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Yi}/${e}`,content:await xe(n,o,i)}},"cursorAgentMapper");});function aF(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(i=>({...i,target:Yb}))}var lF=d(()=>{Oe();qe();s(aF,"lintRules");});function cF(e){if(!e.hooks)return [];let t=Nv(e.hooks);return t.length===0?[]:[M(".agentsmesh/hooks.yaml","cursor",`Cursor has no equivalent for hook event(s) ${t.join(", ")}; they are not projected to .cursor/hooks.json.`)]}function mF(e){return e.commands.filter(t=>t.description.length>0||t.allowedTools.length>0).map(t=>M(t.source,"cursor","Cursor command files are plain Markdown; command description and allowed-tools metadata are not projected."))}function pF(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=[];for(let[r,n]of Object.entries(e.mcp.mcpServers)){let o=n.env&&Object.keys(n.env).length>0,i="url"in n,a="headers"in n;(o||i||a)&&t.push(M(".agentsmesh/mcp.json","cursor",`MCP server "${r}" uses env vars or URL/header interpolation; Cursor handling may differ from canonical MCP.`));}return t}function uF(e){if(!e.permissions)return [];let t=e.permissions.ask?.length??0;return e.permissions.allow.length>0||e.permissions.deny.length>0||t>0?[M(".agentsmesh/permissions.yaml","cursor","Cursor permissions are partial; tool-level allow/deny may lose fidelity.")]:[]}var dF=d(()=>{Ie();jg();s(cF,"lintHooks");s(mF,"lintCommands");s(pF,"lintMcp");s(uF,"lintPermissions");});var a3,l3,c3,m3,Jg,zI=d(()=>{$v();qe();gt();rF();iF();lF();we();dF();a3={name:"cursor",primaryRootInstructionPath:Ps,generateRules:xI,generateCommands:PI,generateAgents:vI,generateSkills:NI,generateMcp:DI,generatePermissions:FI,generateHooks:$I,generateIgnore:jI,importFrom:tF},l3={rootInstructionPath:Ps,outputFamilies:[{id:"root-mirrors",kind:"additional",explicitPaths:[Vi,On]}],skillDir:".cursor/skills",managedOutputs:{dirs:[".cursor/agents",".cursor/commands",".cursor/rules",".cursor/skills"],files:[".cursor/hooks.json",".cursor/mcp.json",".cursorignore","AGENTS.md"]},paths:{rulePath(e,t){return `.cursor/rules/${e}.mdc`},commandPath(e,t){return `.cursor/commands/${e}.md`},agentPath(e,t){return `.cursor/agents/${e}.md`}}},c3={rootInstructionPath:Ps,outputFamilies:[{id:"root-mirrors",kind:"additional",explicitPaths:[Vi,On]}],skillDir:Ct,managedOutputs:{dirs:[$r,jr,Ur,Ct],files:[Ps,On,pr,go,Cn,Qc]},rewriteGeneratedPath(e){return e===Vi?null:e===On||e===Ps||e.startsWith(`${$r}/`)||e.startsWith(`${jr}/`)||e.startsWith(`${Ur}/`)||e.startsWith(`${Ct}/`)||e===pr||e===go||e===Cn?e:e===sg?null:e},mirrorGlobalPath(e,t){return ge(e,Ct,t)},paths:{rulePath(e,t){return `${$r}/${e}.mdc`},commandPath(e,t){return `${jr}/${e}.md`},agentPath(e,t){return `${Ur}/${e}.md`}}},m3={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},Jg={id:"cursor",metadata:{displayName:"Cursor",category:"ide",officialUrl:"https://cursor.com",shortDescription:"AI-first code editor"},generators:a3,capabilities:{rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"partial"},emptyImportMessage:"No Cursor config found (AGENTS.md or .cursor/rules/*.mdc; with --global: ~/.cursor/{rules/*.mdc,AGENTS.md,mcp.json,hooks.json,cursorignore,skills/,agents/,commands/} and legacy ~/.agentsmesh-exports/cursor/user-rules.md).",lintRules:aF,lint:{commands:mF,mcp:pF,permissions:uF,hooks:cF},project:l3,globalSupport:{capabilities:m3,detectionPaths:[Ps,On,pr,go,Cn,Ct,Ur,jr,Qc],layout:c3},importer:{commands:{feature:"commands",mode:"directory",source:{project:[jr]},canonicalDir:Ji,extensions:[".md"],map:oF},agents:{feature:"agents",mode:"directory",source:{project:[Ur]},canonicalDir:Yi,extensions:[".md"],map:sF}},buildImportPaths:aR,detectionPaths:[".cursor/rules",".cursor/mcp.json"],nativeInstall:{pickPaths:[{prefix:".cursor/rules",feature:"rules",strategy:{kind:"basename",suffix:".mdc"}},{prefix:".cursor/commands",feature:"commands",strategy:{kind:"basename",suffix:".md"}},{prefix:".cursor/agents",feature:"agents",strategy:{kind:"basename",suffix:".md"}},{prefix:".cursor/skills",feature:"skills",strategy:{kind:"skillDir"}}],dialectHints:[{frontmatterKey:"alwaysApply"}]},preservesManualActivation:true};});function fF(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(yo)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Br,content:o}]:[]}function gF(e){return ae(e,Ot)}function hF(e){return e.commands.map(t=>({path:`${Ot}/${Z(t.name)}/SKILL.md`,content:Xe(t)}))}function yF(e){return e.agents.map(t=>({path:`${Ot}/${V(t.name)}/SKILL.md`,content:je(t)}))}function _F(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:Ds,content:t}]}function SF(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=jo(e);return Object.keys(t).length===0?[]:[{path:ig,content:JSON.stringify(t,null,2)}]}var RF=d(()=>{ie();Be();Se();$e();Rm();Zc();s(fF,"generateRules");s(gF,"generateSkills");s(hF,"generateCommands");s(yF,"generateAgents");s(_F,"generateMcp");s(SF,"generateHooks");});async function IF(e,t={}){let r=t.scope??"project",n=[],o=await H(yo,e,r);return n.push(...await X(Yg,e,r,{normalize:o})),await oe(e,r==="global"?wn:Ot,yo,n,o),n}var kF=d(()=>{he();ie();Ae();Zc();VI();s(IF,"importFromDeepagentsCli");});function LF(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:yo}))}var EF=d(()=>{Oe();Zc();s(LF,"lintRules");});function CF(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[M(".agentsmesh/permissions.yaml","deepagents-cli","Deep Agents CLI permissions are managed via shell allow-lists (--shell-allow-list); canonical permissions are not projected.")]}function OF(e){return e.ignore.length===0?[]:[M(".agentsmesh/ignore","deepagents-cli","Deep Agents CLI has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}var wF=d(()=>{Ie();s(CF,"lintPermissions");s(OF,"lintIgnore");});var p3,u3,d3,f3,g3,Yg,VI=d(()=>{$e();Se();RF();kF();EF();wF();we();Zc();p3={name:yo,primaryRootInstructionPath:Br,generateRules:fF,generateCommands:hF,generateAgents:yF,generateSkills:gF,generateMcp:_F,generateHooks:SF,importFrom:IF},u3={rootInstructionPath:Br,skillDir:Ot,managedOutputs:{dirs:[Ot],files:[Br,Ds,ig]},paths:{rulePath(e){return Br},commandPath(e){return `${Ot}/${Z(e)}/SKILL.md`},agentPath(e){return `${Ot}/${V(e)}/SKILL.md`}}},d3={rootInstructionPath:Ns,skillDir:wn,managedOutputs:{dirs:[wn],files:[Ns,yl,Zb]},rewriteGeneratedPath(e){return e===Br?Ns:e===Ds?yl:e.startsWith(`${Ot}/`)?e.replace(`${Ot}/`,`${wn}/`):e},paths:{rulePath(e){return Ns},commandPath(e){return `${wn}/${Z(e)}/SKILL.md`},agentPath(e){return `${wn}/${V(e)}/SKILL.md`}}},f3={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},g3={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},Yg={id:yo,metadata:{displayName:"Deep Agents CLI",category:"cli",officialUrl:"https://github.com/langchain-ai/deepagents",shortDescription:"LangChain Deep Agents framework CLI"},generators:p3,capabilities:f3,emptyImportMessage:"No Deep Agents CLI config found (.deepagents/AGENTS.md, .deepagents/skills, or .mcp.json).",lintRules:LF,lint:{permissions:CF,ignore:OF},supportsConversion:{commands:true,agents:true},project:u3,globalSupport:{capabilities:g3,detectionPaths:[Ns,yl],layout:d3},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Br],global:[Ns]},canonicalDir:eA,canonicalRootFilename:"_root.md",markAsRoot:true},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Ds],global:[yl]},canonicalDir:".agentsmesh",canonicalFilename:"mcp.json"}},buildImportPaths:lR,detectionPaths:[Br,Ds]};});function bF(e){let t={name:e.name};return e.description&&(t.description=e.description.slice(0,500)),e.model?t.model=e.model:t.model="inherit",e.tools.length>0&&(t.tools=e.tools),x(t,e.body.trim()||"")}var AF=d(()=>{U();s(bF,"serializeDroid");});function TF(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(ur)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Kr,content:o}]:[]}function xF(e){return ae(e,Wr)}function PF(e){return e.commands.map(t=>{let r={description:t.description||void 0,"allowed-tools":t.allowedTools.length>0?t.allowedTools:void 0};return r.description===void 0&&delete r.description,r["allowed-tools"]===void 0&&delete r["allowed-tools"],{path:`${Xi}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function DF(e){return e.agents.map(t=>({path:`${bn}/${t.name}.md`,content:bF(t)}))}function NF(e){return Cm(e,tm)}function vF(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:_o,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}var FF=d(()=>{ie();Be();U();Hl();AF();_l();s(TF,"generateRules");s(xF,"generateSkills");s(PF,"generateCommands");s(DF,"generateAgents");s(NF,"generateHooks");s(vF,"generateMcp");});async function GF(e,t,r){let n=await I(join(e,t));if(n===null)return;let o;try{o=JSON.parse(n);}catch{return}if(o===null||typeof o!="object"||Array.isArray(o))return;let a=o.mcpServers;if(a==null||typeof a!="object"||Array.isArray(a)||Object.keys(a).length===0)return;let l={};for(let[c,m]of Object.entries(a))!m||typeof m!="object"||Array.isArray(m)||(l[c]=m);Object.keys(l).length!==0&&(await Qe(e,MF,l),r.push({fromTool:ur,fromPath:t,toPath:MF,feature:"mcp"}));}var MF,$F=d(()=>{b();In();_l();MF=".agentsmesh/mcp.json";s(GF,"importFactoryDroidMcp");});async function jF(e,t={}){let r=t.scope??"project",n=[],o=await H(ur,e,r);return n.push(...await X(Xg,e,r,{normalize:o})),await oe(e,r==="global"?Fs:Wr,ur,n,o),await GF(e,r==="global"?qi:_o,n),await Om({projectRoot:e,hooksFile:tm,canonicalHooksPath:iA,targetName:ur,results:n}),n}var UF=d(()=>{he();ie();Ae();Hl();$F();_l();JI();s(jF,"importFromFactoryDroid");});function BF(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:ur}))}var KF=d(()=>{Oe();_l();s(BF,"lintRules");});function WF(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[M(".agentsmesh/permissions.yaml","factory-droid","Factory Droid permissions are managed via CLI flags (--skip-permissions-unsafe); canonical permissions are not projected.")]}function HF(e){return e.ignore.length===0?[]:[M(".agentsmesh/ignore","factory-droid","Factory Droid has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}var zF=d(()=>{Ie();s(WF,"lintPermissions");s(HF,"lintIgnore");});var y3,_3,S3,VF,Xg,JI=d(()=>{FF();_l();UF();KF();zF();we();y3={name:ur,primaryRootInstructionPath:Kr,generateRules:TF,generateCommands:PF,generateAgents:DF,generateSkills:xF,generateMcp:vF,generateHooks:NF,importFrom:jF},_3={rootInstructionPath:Kr,skillDir:Wr,managedOutputs:{dirs:[Wr,Xi,bn],files:[Kr,tm,_o]},paths:{rulePath(e){return Kr},commandPath(e){return `${Xi}/${e}.md`},agentPath(e){return `${bn}/${e}.md`}}},S3={rootInstructionPath:vs,skillDir:Fs,managedOutputs:{dirs:[Fs,em,Qi],files:[vs,rA,qi]},rewriteGeneratedPath(e){return e===Kr?vs:e===_o?qi:e.startsWith(`${Wr}/`)?e.replace(`${Wr}/`,`${Fs}/`):e.startsWith(`${bn}/`)?e.replace(`${bn}/`,`${Qi}/`):e},paths:{rulePath(e){return vs},commandPath(e){return `${em}/${e}.md`},agentPath(e){return `${Qi}/${e}.md`}}},VF={rules:"native",additionalRules:"embedded",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},Xg={id:ur,metadata:{displayName:"Factory Droid",category:"agent-platform",officialUrl:"https://www.factory.ai",shortDescription:"Factory.ai's coding droid"},generators:y3,capabilities:VF,emptyImportMessage:"No Factory Droid config found (AGENTS.md, .factory/skills, or .factory/mcp.json).",lintRules:BF,lint:{permissions:WF,ignore:HF},project:_3,globalSupport:{capabilities:VF,detectionPaths:[vs,qi,Qi],layout:S3},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Kr],global:[vs]},canonicalDir:nA,canonicalRootFilename:"_root.md",markAsRoot:true},commands:{feature:"commands",mode:"directory",source:{project:[Xi],global:[em]},canonicalDir:sA,extensions:[".md"],preset:"command"},agents:{feature:"agents",mode:"directory",source:{project:[bn],global:[Qi]},canonicalDir:oA,extensions:[".md"],preset:"agent"}},buildImportPaths:cR,detectionPaths:[Kr,_o,bn]};});var Ia,on,zo,JF,YF,Vo,Qg,Ql,qg,ed,ka,XF,QF,La,Zg,td,rd,YI,XI,Am,QI,Tm,xm,eh,Pm,ql,nd,qF,lt=d(()=>{Ia="gemini-cli",on="GEMINI.md",zo="AGENTS.md",JF=".gemini/rules",YF=".gemini/GEMINI.md",Vo=".gemini/commands",Qg=".gemini/policies",Ql=".gemini/settings.json",qg=".geminiignore",ed=".gemini/skills",ka=".gemini/agents",XF=".gemini/system.md",QF=`${Qg}/permissions.toml`,La=".agentsmesh/rules",Zg=".agentsmesh/commands",td=".agentsmesh/agents",rd=".agentsmesh/skills",YI=".agentsmesh/mcp.json",XI=".agentsmesh/hooks.yaml",Am=".agentsmesh/ignore",QI=".agentsmesh/permissions.yaml",Tm=".gemini/GEMINI.md",xm=".gemini/AGENTS.md",eh=".gemini/settings.json",Pm=".gemini/commands",ql=".gemini/skills",nd=".gemini/agents",qF=".gemini/policies/permissions.toml";});function qI(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>!(i.root||i.targets.length>0&&!i.targets.includes("gemini-cli")));if(!t&&r.length===0)return [];let n=le(t?.body.trim()??"",r),o=[{path:on,content:n}];return t&&o.push({path:zo,content:t.body.trim()}),o}var ZF=d(()=>{Be();lt();s(qI,"generateRules");});function eM(e,t){let r=e.split(":").filter(Boolean),n=r.length>0?r.pop():e;return [t,...r,`${n}.toml`].join("/")}var tM=d(()=>{s(eM,"canonicalCommandNameToGeminiTomlPath");});function R3(e){let t=e.replace(/\r\n/g,`
|
|
127
|
+
`),t.push({fromTool:"cursor",fromPath:join(e,o[0]),toPath:iR,feature:"ignore"});}var WI=d(()=>{jg();b();qe();s(Hg,"importSettings");s(zg,"importIgnore");});async function Vg(e,t,r,n=Ct){let o=join(e,n),i=await Vu(o),a={projectRoot:e,destCanonicalSkillsDir:qb,targetName:"cursor",normalize:r,results:t};for(let[p,u]of i)await zu(p,u,a);let l=await B(o).catch(()=>[]),c=l.filter(p=>p.endsWith(".md")),m=new Set(Array.from(i.values()).flatMap(p=>l.filter(u=>u.startsWith(p))));for(let p of c){if(m.has(p))continue;let u=await I(p);if(!u)continue;let f=basename(p,".md");await bP(f,p,u,a);}}var HI=d(()=>{b();Cm();qe();s(Vg,"importSkills");});async function zv(e){if(await j(join(e,$r)))return true;let t=[join(e,On),join(e,qc),join(e,pr),join(e,go),join(e,Cn),join(e,Ct),join(e,Ur),join(e,jr)];for(let i of t){let a=await I(i);if(a!==null&&a.trim()!=="")return true}return !!((await B(join(e,Ct))).some(i=>i.endsWith(".md"))||(await B(join(e,Ur))).some(i=>i.endsWith(".md"))||(await B(join(e,jr))).some(i=>i.endsWith(".md")))}async function Vv(e,t,r){let n=join(e,ho),o=false,i=join(e,$r),a=await Re({srcDir:i,destDir:n,extensions:[".mdc"],fromTool:Am,normalize:r,mapEntry:s(async({srcPath:l,relativePath:c,normalizeTo:m})=>{if(o){let p=await I(l);if(p!==null){let{frontmatter:u}=T(p);if(u.alwaysApply===true)return null}}return Bg(c,n,m,()=>{o=true;})},"mapEntry")});return t.push(...a),o}async function Jv(e,t,r){let n=join(e,qc),o=await I(n);return o===null||o.trim()===""?false:bm({projectRoot:e,results:t,sourcePath:n,content:o.trim(),normalize:r})}async function Yv(e,t,r){let n=join(e,On),o=await I(n);return o===null||o.trim()===""?false:bm({projectRoot:e,results:t,sourcePath:n,content:o.trim(),normalize:r})}async function Xv(e,t){let r=join(e,pr),n=await I(r);if(n===null||n.trim()==="")return;let o;try{o=JSON.parse(n);}catch{return}if(!o||typeof o!="object"||!("mcpServers"in o))return;let i=join(e,Zc);await O(dirname(i)),await L(i,n),t.push({fromTool:Am,fromPath:r,toPath:Zc,feature:"mcp"});}async function Qv(e,t,r){let n=join(e,Ur),o=join(e,Yi);t.push(...await Re({srcDir:n,destDir:o,extensions:[".md"],fromTool:Am,normalize:r,mapEntry:s(({relativePath:i,normalizeTo:a})=>Bv(i,o,a),"mapEntry")}));}async function qv(e,t,r){let n=join(e,jr),o=join(e,Ji);t.push(...await Re({srcDir:n,destDir:o,extensions:[".md"],fromTool:Am,normalize:r,mapEntry:s(({relativePath:i,normalizeTo:a})=>Uv(i,o,a),"mapEntry")}));}var Am,Zv=d(()=>{b();U();nr();qe();BI();UI();Am="cursor";s(zv,"hasGlobalCursorArtifacts");s(Vv,"importGlobalCursorRulesFromDir");s(Jv,"importGlobalUserRules");s(Yv,"importGlobalDotCursorAgents");s(Xv,"importGlobalMcp");s(Qv,"importGlobalAgents");s(qv,"importGlobalCommands");});async function eF(e){if(!await zv(e))return [];let t=[],r=await H(Am,e,"global"),n=await Vv(e,t,r);return n||(n=await Jv(e,t,r)),n||await Yv(e,t,r),await Xv(e,t),await Vg(e,t,r,Ct),await Qv(e,t,r),await qv(e,t,r),await Hg(e,t),await zg(e,t),t}var tF=d(()=>{he();qe();HI();WI();Zv();s(eF,"importFromCursorGlobalExports");});async function i3(e,t){let r=join(e,pr),n=await I(r);if(!n)return;let o;try{o=JSON.parse(n);}catch{return}if(!o||typeof o!="object"||!("mcpServers"in o))return;let i=o.mcpServers;await Qe(e,Zc,i),t.push({fromTool:"cursor",fromPath:r,toPath:Zc,feature:"mcp"});}async function rF(e,t={}){if(t.scope==="global")return eF(e);let r=[],n=await H("cursor",e);return await Wv(e,r,n),r.push(...await X(Jg,e,"project",{normalize:n})),await Vg(e,r,n),await i3(e,r),await Hg(e,r),await zg(e,r),r}var nF=d(()=>{he();b();Ae();In();Hv();WI();HI();tF();qe();zI();s(i3,"importMcp");s(rF,"importFromCursor");});var sF,iF,aF=d(()=>{U();de();vt();qe();sF=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n)),a=Tr(o.allowedTools),l=a.length>0?a:Tr(o["allowed-tools"]);return {destPath:n,toPath:`${Ji}/${e}`,content:await Ce(n,{description:typeof o.description=="string"?o.description:"",hasDescription:Object.prototype.hasOwnProperty.call(o,"description"),allowedTools:l,hasAllowedTools:Object.prototype.hasOwnProperty.call(o,"allowedTools")||Object.prototype.hasOwnProperty.call(o,"allowed-tools")},i)}},"cursorCommandMapper"),iF=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Yi}/${e}`,content:await xe(n,o,i)}},"cursorAgentMapper");});function lF(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(i=>({...i,target:Xb}))}var cF=d(()=>{Oe();qe();s(lF,"lintRules");});function mF(e){if(!e.hooks)return [];let t=vv(e.hooks);return t.length===0?[]:[M(".agentsmesh/hooks.yaml","cursor",`Cursor has no equivalent for hook event(s) ${t.join(", ")}; they are not projected to .cursor/hooks.json.`)]}function pF(e){return e.commands.filter(t=>t.description.length>0||t.allowedTools.length>0).map(t=>M(t.source,"cursor","Cursor command files are plain Markdown; command description and allowed-tools metadata are not projected."))}function uF(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=[];for(let[r,n]of Object.entries(e.mcp.mcpServers)){let o=n.env&&Object.keys(n.env).length>0,i="url"in n,a="headers"in n;(o||i||a)&&t.push(M(".agentsmesh/mcp.json","cursor",`MCP server "${r}" uses env vars or URL/header interpolation; Cursor handling may differ from canonical MCP.`));}return t}function dF(e){if(!e.permissions)return [];let t=e.permissions.ask?.length??0;return e.permissions.allow.length>0||e.permissions.deny.length>0||t>0?[M(".agentsmesh/permissions.yaml","cursor","Cursor permissions are partial; tool-level allow/deny may lose fidelity.")]:[]}var fF=d(()=>{Ie();jg();s(mF,"lintHooks");s(pF,"lintCommands");s(uF,"lintMcp");s(dF,"lintPermissions");});var a3,l3,c3,m3,Jg,zI=d(()=>{jv();qe();gt();nF();aF();cF();we();fF();a3={name:"cursor",primaryRootInstructionPath:Ps,generateRules:xI,generateCommands:PI,generateAgents:vI,generateSkills:NI,generateMcp:DI,generatePermissions:FI,generateHooks:$I,generateIgnore:jI,importFrom:rF},l3={rootInstructionPath:Ps,outputFamilies:[{id:"root-mirrors",kind:"additional",explicitPaths:[Vi,On]}],skillDir:".cursor/skills",managedOutputs:{dirs:[".cursor/agents",".cursor/commands",".cursor/rules",".cursor/skills"],files:[".cursor/hooks.json",".cursor/mcp.json",".cursorignore","AGENTS.md"]},paths:{rulePath(e,t){return `.cursor/rules/${e}.mdc`},commandPath(e,t){return `.cursor/commands/${e}.md`},agentPath(e,t){return `.cursor/agents/${e}.md`}}},c3={rootInstructionPath:Ps,outputFamilies:[{id:"root-mirrors",kind:"additional",explicitPaths:[Vi,On]}],skillDir:Ct,managedOutputs:{dirs:[$r,jr,Ur,Ct],files:[Ps,On,pr,go,Cn,qc]},rewriteGeneratedPath(e){return e===Vi?null:e===On||e===Ps||e.startsWith(`${$r}/`)||e.startsWith(`${jr}/`)||e.startsWith(`${Ur}/`)||e.startsWith(`${Ct}/`)||e===pr||e===go||e===Cn?e:e===sg?null:e},mirrorGlobalPath(e,t){return ge(e,Ct,t)},paths:{rulePath(e,t){return `${$r}/${e}.mdc`},commandPath(e,t){return `${jr}/${e}.md`},agentPath(e,t){return `${Ur}/${e}.md`}}},m3={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},Jg={id:"cursor",metadata:{displayName:"Cursor",category:"ide",officialUrl:"https://cursor.com",shortDescription:"AI-first code editor"},generators:a3,capabilities:{rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"partial"},emptyImportMessage:"No Cursor config found (AGENTS.md or .cursor/rules/*.mdc; with --global: ~/.cursor/{rules/*.mdc,AGENTS.md,mcp.json,hooks.json,cursorignore,skills/,agents/,commands/} and legacy ~/.agentsmesh-exports/cursor/user-rules.md).",lintRules:lF,lint:{commands:pF,mcp:uF,permissions:dF,hooks:mF},project:l3,globalSupport:{capabilities:m3,detectionPaths:[Ps,On,pr,go,Cn,Ct,Ur,jr,qc],layout:c3},importer:{commands:{feature:"commands",mode:"directory",source:{project:[jr]},canonicalDir:Ji,extensions:[".md"],map:sF},agents:{feature:"agents",mode:"directory",source:{project:[Ur]},canonicalDir:Yi,extensions:[".md"],map:iF}},buildImportPaths:aR,detectionPaths:[".cursor/rules",".cursor/mcp.json"],nativeInstall:{pickPaths:[{prefix:".cursor/rules",feature:"rules",strategy:{kind:"basename",suffix:".mdc"}},{prefix:".cursor/commands",feature:"commands",strategy:{kind:"basename",suffix:".md"}},{prefix:".cursor/agents",feature:"agents",strategy:{kind:"basename",suffix:".md"}},{prefix:".cursor/skills",feature:"skills",strategy:{kind:"skillDir"}}],dialectHints:[{frontmatterKey:"alwaysApply"}]},preservesManualActivation:true};});function gF(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(yo)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Br,content:o}]:[]}function hF(e){return ae(e,Ot)}function yF(e){return e.commands.map(t=>({path:`${Ot}/${Z(t.name)}/SKILL.md`,content:Xe(t)}))}function _F(e){return e.agents.map(t=>({path:`${Ot}/${V(t.name)}/SKILL.md`,content:je(t)}))}function SF(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:Ds,content:t}]}function RF(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=jo(e);return Object.keys(t).length===0?[]:[{path:ig,content:JSON.stringify(t,null,2)}]}var IF=d(()=>{ie();Be();Se();$e();Im();em();s(gF,"generateRules");s(hF,"generateSkills");s(yF,"generateCommands");s(_F,"generateAgents");s(SF,"generateMcp");s(RF,"generateHooks");});async function kF(e,t={}){let r=t.scope??"project",n=[],o=await H(yo,e,r);return n.push(...await X(Yg,e,r,{normalize:o})),await oe(e,r==="global"?wn:Ot,yo,n,o),n}var LF=d(()=>{he();ie();Ae();em();VI();s(kF,"importFromDeepagentsCli");});function EF(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:yo}))}var CF=d(()=>{Oe();em();s(EF,"lintRules");});function OF(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[M(".agentsmesh/permissions.yaml","deepagents-cli","Deep Agents CLI permissions are managed via shell allow-lists (--shell-allow-list); canonical permissions are not projected.")]}function wF(e){return e.ignore.length===0?[]:[M(".agentsmesh/ignore","deepagents-cli","Deep Agents CLI has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}var bF=d(()=>{Ie();s(OF,"lintPermissions");s(wF,"lintIgnore");});var p3,u3,d3,f3,g3,Yg,VI=d(()=>{$e();Se();IF();LF();CF();bF();we();em();p3={name:yo,primaryRootInstructionPath:Br,generateRules:gF,generateCommands:yF,generateAgents:_F,generateSkills:hF,generateMcp:SF,generateHooks:RF,importFrom:kF},u3={rootInstructionPath:Br,skillDir:Ot,managedOutputs:{dirs:[Ot],files:[Br,Ds,ig]},paths:{rulePath(e){return Br},commandPath(e){return `${Ot}/${Z(e)}/SKILL.md`},agentPath(e){return `${Ot}/${V(e)}/SKILL.md`}}},d3={rootInstructionPath:Ns,skillDir:wn,managedOutputs:{dirs:[wn],files:[Ns,_l,eA]},rewriteGeneratedPath(e){return e===Br?Ns:e===Ds?_l:e.startsWith(`${Ot}/`)?e.replace(`${Ot}/`,`${wn}/`):e},paths:{rulePath(e){return Ns},commandPath(e){return `${wn}/${Z(e)}/SKILL.md`},agentPath(e){return `${wn}/${V(e)}/SKILL.md`}}},f3={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},g3={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},Yg={id:yo,metadata:{displayName:"Deep Agents CLI",category:"cli",officialUrl:"https://github.com/langchain-ai/deepagents",shortDescription:"LangChain Deep Agents framework CLI"},generators:p3,capabilities:f3,emptyImportMessage:"No Deep Agents CLI config found (.deepagents/AGENTS.md, .deepagents/skills, or .mcp.json).",lintRules:EF,lint:{permissions:OF,ignore:wF},supportsConversion:{commands:true,agents:true},project:u3,globalSupport:{capabilities:g3,detectionPaths:[Ns,_l],layout:d3},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Br],global:[Ns]},canonicalDir:tA,canonicalRootFilename:"_root.md",markAsRoot:true},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Ds],global:[_l]},canonicalDir:".agentsmesh",canonicalFilename:"mcp.json"}},buildImportPaths:lR,detectionPaths:[Br,Ds]};});function AF(e){let t={name:e.name};return e.description&&(t.description=e.description.slice(0,500)),e.model?t.model=e.model:t.model="inherit",e.tools.length>0&&(t.tools=e.tools),x(t,e.body.trim()||"")}var TF=d(()=>{U();s(AF,"serializeDroid");});function xF(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(ur)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Kr,content:o}]:[]}function PF(e){return ae(e,Wr)}function DF(e){return e.commands.map(t=>{let r={description:t.description||void 0,"allowed-tools":t.allowedTools.length>0?t.allowedTools:void 0};return r.description===void 0&&delete r.description,r["allowed-tools"]===void 0&&delete r["allowed-tools"],{path:`${Xi}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function NF(e){return e.agents.map(t=>({path:`${bn}/${t.name}.md`,content:AF(t)}))}function vF(e){return Om(e,rm)}function FF(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:_o,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}var MF=d(()=>{ie();Be();U();zl();TF();Sl();s(xF,"generateRules");s(PF,"generateSkills");s(DF,"generateCommands");s(NF,"generateAgents");s(vF,"generateHooks");s(FF,"generateMcp");});async function $F(e,t,r){let n=await I(join(e,t));if(n===null)return;let o;try{o=JSON.parse(n);}catch{return}if(o===null||typeof o!="object"||Array.isArray(o))return;let a=o.mcpServers;if(a==null||typeof a!="object"||Array.isArray(a)||Object.keys(a).length===0)return;let l={};for(let[c,m]of Object.entries(a))!m||typeof m!="object"||Array.isArray(m)||(l[c]=m);Object.keys(l).length!==0&&(await Qe(e,GF,l),r.push({fromTool:ur,fromPath:t,toPath:GF,feature:"mcp"}));}var GF,jF=d(()=>{b();In();Sl();GF=".agentsmesh/mcp.json";s($F,"importFactoryDroidMcp");});async function UF(e,t={}){let r=t.scope??"project",n=[],o=await H(ur,e,r);return n.push(...await X(Xg,e,r,{normalize:o})),await oe(e,r==="global"?Fs:Wr,ur,n,o),await $F(e,r==="global"?qi:_o,n),await wm({projectRoot:e,hooksFile:rm,canonicalHooksPath:aA,targetName:ur,results:n}),n}var BF=d(()=>{he();ie();Ae();zl();jF();Sl();JI();s(UF,"importFromFactoryDroid");});function KF(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:ur}))}var WF=d(()=>{Oe();Sl();s(KF,"lintRules");});function HF(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[M(".agentsmesh/permissions.yaml","factory-droid","Factory Droid permissions are managed via CLI flags (--skip-permissions-unsafe); canonical permissions are not projected.")]}function zF(e){return e.ignore.length===0?[]:[M(".agentsmesh/ignore","factory-droid","Factory Droid has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}var VF=d(()=>{Ie();s(HF,"lintPermissions");s(zF,"lintIgnore");});var y3,_3,S3,JF,Xg,JI=d(()=>{MF();Sl();BF();WF();VF();we();y3={name:ur,primaryRootInstructionPath:Kr,generateRules:xF,generateCommands:DF,generateAgents:NF,generateSkills:PF,generateMcp:FF,generateHooks:vF,importFrom:UF},_3={rootInstructionPath:Kr,skillDir:Wr,managedOutputs:{dirs:[Wr,Xi,bn],files:[Kr,rm,_o]},paths:{rulePath(e){return Kr},commandPath(e){return `${Xi}/${e}.md`},agentPath(e){return `${bn}/${e}.md`}}},S3={rootInstructionPath:vs,skillDir:Fs,managedOutputs:{dirs:[Fs,tm,Qi],files:[vs,nA,qi]},rewriteGeneratedPath(e){return e===Kr?vs:e===_o?qi:e.startsWith(`${Wr}/`)?e.replace(`${Wr}/`,`${Fs}/`):e.startsWith(`${bn}/`)?e.replace(`${bn}/`,`${Qi}/`):e},paths:{rulePath(e){return vs},commandPath(e){return `${tm}/${e}.md`},agentPath(e){return `${Qi}/${e}.md`}}},JF={rules:"native",additionalRules:"embedded",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},Xg={id:ur,metadata:{displayName:"Factory Droid",category:"agent-platform",officialUrl:"https://www.factory.ai",shortDescription:"Factory.ai's coding droid"},generators:y3,capabilities:JF,emptyImportMessage:"No Factory Droid config found (AGENTS.md, .factory/skills, or .factory/mcp.json).",lintRules:KF,lint:{permissions:HF,ignore:zF},project:_3,globalSupport:{capabilities:JF,detectionPaths:[vs,qi,Qi],layout:S3},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Kr],global:[vs]},canonicalDir:oA,canonicalRootFilename:"_root.md",markAsRoot:true},commands:{feature:"commands",mode:"directory",source:{project:[Xi],global:[tm]},canonicalDir:iA,extensions:[".md"],preset:"command"},agents:{feature:"agents",mode:"directory",source:{project:[bn],global:[Qi]},canonicalDir:sA,extensions:[".md"],preset:"agent"}},buildImportPaths:cR,detectionPaths:[Kr,_o,bn]};});var Ia,on,zo,YF,XF,Vo,Qg,ql,qg,ed,ka,QF,qF,La,Zg,td,rd,YI,XI,Tm,QI,xm,Pm,eh,Dm,Zl,nd,ZF,lt=d(()=>{Ia="gemini-cli",on="GEMINI.md",zo="AGENTS.md",YF=".gemini/rules",XF=".gemini/GEMINI.md",Vo=".gemini/commands",Qg=".gemini/policies",ql=".gemini/settings.json",qg=".geminiignore",ed=".gemini/skills",ka=".gemini/agents",QF=".gemini/system.md",qF=`${Qg}/permissions.toml`,La=".agentsmesh/rules",Zg=".agentsmesh/commands",td=".agentsmesh/agents",rd=".agentsmesh/skills",YI=".agentsmesh/mcp.json",XI=".agentsmesh/hooks.yaml",Tm=".agentsmesh/ignore",QI=".agentsmesh/permissions.yaml",xm=".gemini/GEMINI.md",Pm=".gemini/AGENTS.md",eh=".gemini/settings.json",Dm=".gemini/commands",Zl=".gemini/skills",nd=".gemini/agents",ZF=".gemini/policies/permissions.toml";});function qI(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>!(i.root||i.targets.length>0&&!i.targets.includes("gemini-cli")));if(!t&&r.length===0)return [];let n=le(t?.body.trim()??"",r),o=[{path:on,content:n}];return t&&o.push({path:zo,content:t.body.trim()}),o}var eM=d(()=>{Be();lt();s(qI,"generateRules");});function tM(e,t){let r=e.split(":").filter(Boolean),n=r.length>0?r.pop():e;return [t,...r,`${n}.toml`].join("/")}var rM=d(()=>{s(tM,"canonicalCommandNameToGeminiTomlPath");});function R3(e){let t=e.replace(/\r\n/g,`
|
|
128
128
|
`);return t.includes('"""')?JSON.stringify(t):`"""
|
|
129
129
|
${t}
|
|
130
130
|
"""`}function I3(e){return [`description = ${JSON.stringify(e.description||e.name)}`,`prompt = ${R3(e.body.trim()||"")}`].join(`
|
|
131
131
|
`)+`
|
|
132
|
-
`}function ZI(e){return e.commands.map(t=>({path:
|
|
133
|
-
`)}]}var
|
|
134
|
-
`)}function
|
|
135
|
-
`)}]}var
|
|
132
|
+
`}function ZI(e){return e.commands.map(t=>({path:tM(t.name,Vo),content:I3(t)}))}var nM=d(()=>{lt();rM();s(R3,"serializeTomlMultilineLiteral");s(I3,"serializeGeminiCommand");s(ZI,"generateCommands");});function ek(e){return e.agents.map(t=>{let r={name:t.name,kind:"local",description:t.description||void 0,tools:t.tools.length>0?t.tools:void 0,model:t.model||void 0,maxTurns:t.maxTurns>0?t.maxTurns:void 0,permissionMode:t.permissionMode||void 0,disallowedTools:t.disallowedTools.length>0?t.disallowedTools:void 0};Object.keys(r).forEach(o=>{r[o]===void 0&&delete r[o];});let n=x(r,t.body.trim()||"");return {path:`${ka}/${t.name}.md`,content:n}})}var oM=d(()=>{U();lt();s(ek,"generateAgents");});function tk(e){let t=[];for(let r of e.skills){let n={name:r.name,description:r.description||void 0};n.description===void 0&&delete n.description;let o=x(n,r.body.trim()||"");t.push({path:`${ed}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${ed}/${r.name}/${a}`,content:i.content});}}return t}var sM=d(()=>{U();lt();s(tk,"generateSkills");});function k3(e){switch(e){case "PreToolUse":return "BeforeTool";case "PostToolUse":return "AfterTool";case "Notification":return "Notification";default:return null}}function rk(e,t){let r={},n=false;if(t.has("mcp")&&e.mcp&&Object.keys(e.mcp.mcpServers).length>0&&(r.mcpServers=e.mcp.mcpServers,n=true),t.has("agents")&&e.agents.length>0&&(r.experimental={enableAgents:true},n=true),t.has("hooks")&&e.hooks){let o=Object.entries(e.hooks).flatMap(([i,a])=>{let l=k3(i);if(!l||!Array.isArray(a))return [];let c=a.filter(m=>typeof m=="object"&&m!==null&&fn(m)).map((m,p)=>({matcher:m.matcher,hooks:[{name:`${l}-${p+1}`,type:"command",command:It(m),timeout:m.timeout}]}));return c.length>0?[[l,c]]:[]});o.length>0&&(r.hooks=Object.fromEntries(o),n=true);}return n&&(r.context={fileName:[on,zo]}),Object.keys(r).length===0?[]:[{path:ql,content:JSON.stringify(r,null,2)}]}var nk=d(()=>{gn();lt();s(k3,"mapHookEvent");s(rk,"generateGeminiSettingsFiles");});function ok(e){return !e.ignore||e.ignore.length===0?[]:[{path:qg,content:e.ignore.join(`
|
|
133
|
+
`)}]}var iM=d(()=>{lt();s(ok,"generateIgnore");});var aM=d(()=>{eM();nM();oM();sM();nk();iM();});var lM=d(()=>{aM();});function ec(e){return JSON.stringify(e)}function L3(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function E3(e){let t=e.match(/^Bash\((.*)\)$/);if(t&&typeof t[1]=="string")return {kind:"bash",prefix:t[1]};let r=e.match(/^Read\((.*)\)$/);return r&&typeof r[1]=="string"?{kind:"read",path:r[1]}:e==="Read"||e==="Grep"||e==="LS"||e==="WebFetch"?{kind:"tool",tool:e}:{kind:"unknown",raw:e}}function th(e,t,r){return ["[[rule]]",`decision = ${ec(e)}`,`priority = ${t}`,...r,""].join(`
|
|
134
|
+
`)}function cM(e,t,r){let n=E3(e),o={Read:"read_file",Grep:"grep_search",LS:"list_directory",WebFetch:"web_fetch",Bash:"run_shell_command"};if(n.kind==="tool"){let i=o[n.tool]??n.tool;return th(t,r,[`toolName = ${ec(i)}`])}if(n.kind==="bash"){let i=n.prefix.replace(/:\*$/u,"").replace(/\*$/u,"").trim();return th(t,r,[`toolName = ${ec(o.Bash)}`,`commandPrefix = ${ec(i)}`])}return n.kind==="read"?th(t,r,[`toolName = ${ec(o.Read)}`,`argsPattern = ${ec(L3(n.path))}`]):th(t,r,[`toolName = ${ec(n.raw)}`])}function mM(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions;if(t.length+r.length===0)return [];let o=[];return t.forEach((i,a)=>{let l=cM(i,"allow",100+a);l&&o.push(l);}),r.forEach((i,a)=>{let l=cM(i,"deny",200+a);l&&o.push(l);}),o.length===0?[]:[{path:qF,content:o.join(`
|
|
135
|
+
`)}]}var pM=d(()=>{lt();s(ec,"escapeTomlBasicString");s(L3,"escapeRegexLiteral");s(E3,"parsePermissionExpr");s(th,"ruleForDecision");s(cM,"permissionExprToGeminiRule");s(mM,"generateGeminiPermissionsPolicies");});function sk(e){switch(e){case "BeforeTool":case "preToolUse":return "PreToolUse";case "AfterTool":case "postToolUse":return "PostToolUse";case "Notification":case "notification":return "Notification";default:return null}}function rh(e){let t=e.indexOf("---"),r=e.indexOf("+++");if(t===0&&(r===-1||t<=r))return T(e);if(r===0){let n=e.indexOf("+++",3);if(n!==-1)try{let o=e.slice(3,n).trim(),i=e.slice(n+3).trim();return {frontmatter:o===""?{}:parse$1(o)??{},body:i}}catch{return {frontmatter:{},body:e.trim()}}}return {frontmatter:{},body:e.trim()}}var ik=d(()=>{U();s(sk,"mapGeminiHookEvent");s(rh,"parseFlexibleFrontmatter");});async function ak(e,t){let r=join(e,ql),n=await I(r);if(n===null)return;let o;try{o=JSON.parse(n);}catch{}if(!o)return;let i=o.mcpServers;if(i!==void 0&&typeof i=="object"&&i!==null&&Object.keys(i).length>0){let c=join(e,YI);await O(join(e,".agentsmesh")),await L(c,JSON.stringify({mcpServers:i},null,2)),t.push({fromTool:"gemini-cli",fromPath:r,toPath:YI,feature:"mcp"});}let a=o.ignorePatterns;if(Array.isArray(a)&&a.length>0&&a.every(c=>typeof c=="string")){let c=join(e,Tm);await O(join(e,".agentsmesh")),await L(c,a.join(`
|
|
136
136
|
`)+`
|
|
137
|
-
`),t.push({fromTool:"gemini-cli",fromPath:r,toPath:
|
|
137
|
+
`),t.push({fromTool:"gemini-cli",fromPath:r,toPath:Tm,feature:"ignore"});}let l=o.hooks;if(l!==void 0&&typeof l=="object"&&l!==null){let c=Object.entries(l).flatMap(([m,p])=>{let u=sk(m);if(!u||!Array.isArray(p))return [];let f=p.filter(g=>g!==null&&typeof g=="object"&&typeof g.matcher=="string"&&Array.isArray(g.hooks)).flatMap(g=>g.hooks.filter(h=>h!==null&&typeof h=="object"&&fn(h)).map(h=>({matcher:g.matcher,command:It(h),type:"command",timeout:typeof h.timeout=="number"?h.timeout:void 0})));if(f.length===0){let g=p.filter(h=>h!==null&&typeof h=="object"&&typeof h.matcher=="string"&&fn(h)).map(h=>({matcher:h.matcher,command:It(h),type:"command"}));return g.length>0?[[u,g]]:[]}return f.length>0?[[u,f]]:[]});if(c.length>0){let m=Object.fromEntries(c),p=join(e,XI);await O(join(e,".agentsmesh")),await L(p,stringify(m,{lineWidth:0}).trimEnd()),t.push({fromTool:"gemini-cli",fromPath:r,toPath:XI,feature:"hooks"});}}}var uM=d(()=>{gn();b();lt();ik();s(ak,"importGeminiSettings");});async function dM(e,t){let r=join(e,qg),n=await I(r);if(n!==null&&n.trim()){let o=n.split(/\r?\n/).map(i=>i.trim()).filter(i=>i&&!i.startsWith("#"));if(o.length>0){await O(join(e,".agentsmesh"));let i=join(e,Tm);await L(i,o.join(`
|
|
138
138
|
`)+`
|
|
139
|
-
`),t.push({fromTool:"gemini-cli",fromPath:r,toPath:
|
|
140
|
-
`),t.push({fromTool:Ia,fromPath:join(e,Qg),toPath:QI,feature:"permissions"}),t}var
|
|
141
|
-
`)}]}function
|
|
142
|
-
`}function
|
|
143
|
-
`),t.push({fromTool:Hr,fromPath:r,toPath:pR,feature:"permissions"});}var
|
|
144
|
-
`)}]}function
|
|
145
|
-
`)}]}function
|
|
139
|
+
`),t.push({fromTool:"gemini-cli",fromPath:r,toPath:Tm,feature:"ignore"});}}}var ck=d(()=>{b();lt();ik();uM();s(dM,"importGeminiIgnore");});function A3(e){return e.replace(/\\(.)/g,"$1")}function T3(e){switch(e){case "read_file":return "Read";case "grep_search":return "Grep";case "list_directory":return "LS";case "web_fetch":return "WebFetch";case "run_shell_command":return "Bash";default:return null}}function x3(e){return `Bash(${e}:*)`}function P3(e){return `Read(${A3(e)})`}async function fM(e){let t=[],r=join(e,Qg),n;try{n=await B(r);}catch{return t}let o=n.filter(u=>u.endsWith(".toml"));if(o.length===0)return t;let i=[],a=[],l=new Set,c=new Set;for(let u of o){let f=await I(u);if(!f)continue;let g;try{g=parse$1(f);}catch{continue}let h=g&&typeof g=="object"&&"rule"in g?g.rule:void 0;if(Array.isArray(h))for(let y of h){if(!y||typeof y!="object")continue;let _=y,R=typeof _.toolName=="string"?_.toolName:null,k=typeof _.decision=="string"?_.decision:null;if(!R||!k)continue;let w=T3(R);if(!w)continue;let D=null;w==="Bash"?typeof _.commandPrefix=="string"&&_.commandPrefix.trim()&&(D=x3(_.commandPrefix.trim())):w==="Read"?typeof _.argsPattern=="string"&&_.argsPattern.trim()?D=P3(_.argsPattern.trim()):D="Read":D=w,D&&(k==="allow"?l.has(D)||(l.add(D),i.push(D)):k==="deny"&&(c.has(D)||(c.add(D),a.push(D))));}}if(i.length===0&&a.length===0)return t;await O(join(e,".agentsmesh"));let m=join(e,QI),p=stringify({allow:i,deny:a});return await L(m,p.trimEnd()+`
|
|
140
|
+
`),t.push({fromTool:Ia,fromPath:join(e,Qg),toPath:QI,feature:"permissions"}),t}var gM=d(()=>{b();lt();s(A3,"unescapeRegexLiteral");s(T3,"toolNameToPermissionBase");s(x3,"commandPrefixToBashExpr");s(P3,"argsPatternToReadExpr");s(fM,"importGeminiPolicies");});function mk(e,t){let r=new Set([t,t.replace(/\\/g,"/"),t.replace(/\//g,"\\")]);try{r.add(realpathSync(t)),r.add(realpathSync.native(t));}catch{}return Array.from(r).reduce((o,i)=>{let a=i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return o.replace(new RegExp(`${a}[/\\\\]\\.agentsmesh[/\\\\]`,"g"),".agentsmesh/").replaceAll(`${i}/.agentsmesh`,".agentsmesh").replaceAll(`${i}\\.agentsmesh`,".agentsmesh")},e).replace(/(?:[A-Za-z]:)?[^\s"'`()<>]+[/\\]\.agentsmesh[/\\]/g,".agentsmesh/")}var yM=d(()=>{s(mk,"stripProjectRootCanonicalPrefix");});async function SM(e,t,r){let n=join(e,ed),i=(await B(n)).filter(l=>basename(l)==="SKILL.md");for(let l of i){let c=await I(l);if(!c)continue;let m=basename(l.slice(0,-9)),p=T(c),u=Gc(p.frontmatter,m);if(u){let k=join(e,td);await O(k);let w=join(k,`${u.name}.md`);await L(w,Mi(u,r(p.body,l,w))),t.push({fromTool:"gemini-cli",fromPath:l,toPath:`${td}/${u.name}.md`,feature:"agents"});continue}let f=join(e,rd,m,"SKILL.md"),g=r(c,l,f),h=join(e,rd,m);await O(h);let{frontmatter:y,body:_}=T(g);await L(f,await ro(f,{...y,name:m},_)),t.push({fromTool:"gemini-cli",fromPath:l,toPath:`${rd}/${m}/SKILL.md`,feature:"skills"});let R=await B(dirname(l));for(let k of R){if(k===l)continue;let w=await I(k);if(w===null)continue;let D=relative(dirname(l),k).replace(/\\/g,"/"),v=join(h,D);await O(dirname(v)),await L(v,r(w,k,v)),t.push({fromTool:"gemini-cli",fromPath:k,toPath:`${rd}/${m}/${D}`,feature:"skills"});}}let a=join(e,ka);try{let c=(await B(a)).filter(m=>m.endsWith(".md"));for(let m of c){let p=await I(m);if(!p)continue;let{frontmatter:u,body:f}=T(p),h=relative(a,m).replace(/\\/g,"/").replace(/\.md$/i,".md"),y=join(e,td);await O(y);let _=join(y,h),R=r(f,m,_);await L(_,await xe(_,{...u,name:typeof u.name=="string"?u.name:basename(h,".md"),maxTurns:u.maxTurns??u["max-turns"]??u.max_turns,permissionMode:u.permissionMode??u["permission-mode"]??u.permission_mode,disallowedTools:u.disallowedTools??u["disallowed-tools"]??u.disallowed_tools},R)),t.push({fromTool:"gemini-cli",fromPath:m,toPath:`${td}/${h}`,feature:"agents"});}}catch{}}var RM=d(()=>{b();U();de();Se();lt();s(SM,"importGeminiSkillsAndAgents");});async function D3(e,t,r){let n=await H("codex-cli",e),o=join(e,La),i=join(e,zo),a=join(e,XF),l=[i,a,join(e,on),join(e,QF)],c=null,m=l[l.length-1];for(let D of l){let v=await I(D);if(v!==null){c=v,m=D;break}}if(c===null)return;await O(o);let p=join(o,"_root.md"),u=m===i||m===a?n(c,m,p):c,f=await Uo({content:u,projectRoot:e,rulesDir:La,sourcePath:m,fromTool:Ia,normalize:r});t.push(...f.results);let g=r(f.rootContent,m,p),h=mk(g.replace(/\.agents\/skills\//g,".agentsmesh/skills/").replace(/\.agents\\skills\\/g,".agentsmesh/skills/"),e),{frontmatter:y,body:_}=T(h),k=y.root===true?y:{...y,root:true},w=mk(await z(p,k,_),e);await L(p,w),t.push({fromTool:Ia,fromPath:m,toPath:`${La}/_root.md`,feature:"rules"});}async function IM(e){let t=[],r=await H(Ia,e);return await D3(e,t,r),t.push(...await X(oh,e,"project",{normalize:r})),await SM(e,t,r),await ak(e,t),await dM(e,t),t.push(...await fM(e)),t}var kM=d(()=>{he();b();U();de();km();Ae();lt();dk();ck();gM();yM();RM();s(D3,"importRootRule");s(IM,"importFromGemini");});function v3(e){let t=e.replace(/^\/+|\/+$/g,"");return t===".gemini/commands"||t.startsWith(".gemini/commands/")}async function F3(e,t){let r=join(e,...Vo.split("/")),n=join(e,...t.split("/")),o=await B(n),i=[];for(let a of o){if(!/\.(toml|md)$/i.test(a))continue;let l=relative(r,a).replace(/\\/g,"/");if(l.startsWith("..")||l==="")continue;let m=l.replace(/\.(toml|md)$/i,"").split("/").filter(Boolean).join(":");m&&i.push(m);}return [...new Set(i)].sort()}async function EM(e,t){if(!v3(t))return {};let r=await F3(e,t);return r.length?{commands:r}:{}}var CM=d(()=>{b();lt();s(v3,"isUnderGeminiCommands");s(F3,"inferGeminiCommandNamesFromFiles");s(EM,"inferGeminiPick");});async function wM(e,t,r){let n=e.replace(/\\/g,"/"),o=join(t,n),{frontmatter:i,body:a}=rh(r(o)),l=hs(i.globs),c={root:false,description:typeof i.description=="string"?i.description:void 0,globs:l.length>0?l:void 0};return Object.keys(c).forEach(m=>{c[m]===void 0&&delete c[m];}),{destPath:o,toPath:`${La}/${n}`,feature:"rules",content:await z(o,c,a)}}async function bM(e,t,r){let n=e.replace(/\.(toml|md)$/i,".md").replace(/\\/g,"/"),o=join(t,n),i=r(o),{frontmatter:a,body:l}=e.endsWith(".toml")?G3(i):rh(i),c=Tr(a.allowedTools),m=Tr(a["allowed-tools"]),p=c.length>0?c:m;return {destPath:o,toPath:`${Zg}/${n}`,feature:"commands",content:await Ce(o,{description:typeof a.description=="string"?a.description:"",hasDescription:Object.prototype.hasOwnProperty.call(a,"description"),allowedTools:p,hasAllowedTools:Object.prototype.hasOwnProperty.call(a,"allowedTools")||Object.prototype.hasOwnProperty.call(a,"allowed-tools")},l)}}function G3(e){try{let t=parse$1(e);return {frontmatter:t,body:typeof t.prompt=="string"?t.prompt:""}}catch{return {frontmatter:{},body:e.trim()}}}var AM=d(()=>{de();vt();ck();lt();s(wM,"mapGeminiRuleFile");s(bM,"mapGeminiCommandFile");s(G3,"parseTomlCommand");});var TM,xM,PM=d(()=>{AM();TM=s(({relativePath:e,destDir:t,normalizeTo:r})=>wM(e,t,r),"geminiRuleMapper"),xM=s(({relativePath:e,destDir:t,normalizeTo:r})=>bM(e,t,r),"geminiCommandMapper");});function DM(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(i=>({...i,target:Ia}))}var NM=d(()=>{Oe();lt();s(DM,"lintRules");});function vM(e){return e.commands.filter(t=>t.allowedTools.length>0).map(t=>M(t.source,"gemini-cli","Gemini TOML command files do not project canonical allowed-tools metadata."))}function FM(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=["PreToolUse","PostToolUse","Notification"];return ji(e.hooks,t).map(r=>Ui(r,"gemini-cli",t))}var MM=d(()=>{Ie();s(vM,"lintCommands");s(FM,"lintHooks");});function GM(e,t,r){return t==="project"&&gi("gemini-cli",t)?.ignore.flavor!=="settings-embedded"?[]:rk(e,r)}var $M=d(()=>{Te();nk();s(GM,"emitScopedGeminiSettings");});var $3,j3,U3,B3,oh,dk=d(()=>{lM();Za();pM();lt();kM();CM();PM();NM();we();Wp();Se();MM();$M();gt();Zu();$3={name:"gemini-cli",primaryRootInstructionPath:on,generateRules:qI,generateCommands:ZI,generateAgents:ek,generateSkills:tk,generateIgnore:ok,generatePermissions:mM,importFrom:IM},j3={rootInstructionPath:on,outputFamilies:[{id:"compat-agents",kind:"additional",explicitPaths:[zo]}],extraRuleOutputPaths(){return [zo]},skillDir:".gemini/skills",managedOutputs:{dirs:[".gemini/agents",".gemini/commands",".gemini/skills",".agents/skills"],files:["AGENTS.md","GEMINI.md",".gemini/settings.json",".gemini/policies/permissions.toml",".geminiignore"]},mirrorGlobalPath(e,t){return ge(e,".gemini/skills",t)},paths:{rulePath(e,t){return on},commandPath(e,t){if(e.includes(":")){let r=e.split(":").filter(Boolean),n=r.pop()??e;return `${Vo}/${r.join("/")}/${n}.toml`}return `${Vo}/${e}.toml`},agentPath(e,t){return ds(t,"gemini-cli")?`.gemini/skills/${V(e)}/SKILL.md`:`${ka}/${e}.md`}}},U3={rootInstructionPath:xm,outputFamilies:[{id:"compat-agents",kind:"additional",explicitPaths:[Pm]}],extraRuleOutputPaths(){return [Pm]},skillDir:Zl,managedOutputs:{dirs:[Dm,Zl,nd],files:[xm,Pm,eh,ZF]},rewriteGeneratedPath(e){return e===on?xm:e===zo?Pm:e===ql?eh:e.startsWith(`${Vo}/`)?e.replace(`${Vo}/`,`${Dm}/`):e.startsWith(".gemini/skills/")?e.replace(".gemini/skills/",`${Zl}/`):e.startsWith(`${ka}/`)?e.replace(`${ka}/`,`${nd}/`):e===".geminiignore"?null:e},mirrorGlobalPath(e,t){return ge(e,Zl,t)},paths:{rulePath(e,t){return xm},commandPath(e,t){if(e.includes(":")){let r=e.split(":").filter(Boolean),n=r.pop()??e;return `${Dm}/${r.join("/")}/${n}.toml`}return `${Dm}/${e}.toml`},agentPath(e,t){return ds(t,"gemini-cli")?`${Zl}/${V(e)}/SKILL.md`:`${nd}/${e}.md`}}},B3={rules:"native",additionalRules:"embedded",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"partial",ignore:"none",permissions:"native"},oh={id:"gemini-cli",metadata:{displayName:"Gemini CLI",category:"cli",officialUrl:"https://github.com/google-gemini/gemini-cli",shortDescription:"Google's terminal Gemini agent"},generators:$3,capabilities:{rules:"native",additionalRules:"embedded",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"partial",ignore:yn("native","settings-embedded"),permissions:"partial"},emptyImportMessage:"No Gemini CLI config found (GEMINI.md or .gemini/rules, .gemini/commands, .gemini/settings.json).",lintRules:DM,lint:{commands:vM,hooks:FM},emitScopedSettings:GM,mergeGeneratedOutputContent(e,t,r,n){let o=t?.content??e;return o!==null&&n===ql?Ov(o,r):null},project:j3,globalSupport:{capabilities:B3,detectionPaths:[xm,Pm,eh,Dm,Zl,nd],layout:U3},importer:{rules:{feature:"rules",mode:"directory",source:{project:[YF]},canonicalDir:La,extensions:[".md"],map:TM},commands:{feature:"commands",mode:"directory",source:{project:[Vo]},canonicalDir:Zg,extensions:[".md",".toml"],map:xM}},buildImportPaths:mR,detectionPaths:["GEMINI.md",".gemini"],nativeInstall:{inferPick:EM},conversionDefaults:{agentsToSkills:false}};});function jM(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(Hr)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:dr,content:o}]:[]}function UM(e){return ae(e,Vt)}function BM(e){return e.commands.map(t=>({path:`${Vt}/${Z(t.name)}/SKILL.md`,content:Xe(t)}))}function KM(e){return e.agents.map(t=>({path:`${Vt}/${V(t.name)}/SKILL.md`,content:je(t)}))}function WM(e){return e.ignore.length===0?[]:[{path:So,content:e.ignore.join(`
|
|
141
|
+
`)}]}function HM(e){return Om(e,kl)}function W3(e,t){let r={bundled:null,description:t.description??"",enabled:true,env_keys:[],envs:t.env??{},name:e,timeout:30,type:"command"in t?"stdio":"sse"};return "command"in t?{...r,args:t.args??[],cmd:t.command}:{...r,uri:t.url}}function zM(e,t){if(t?.scope!=="global")return [];if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let r=Object.fromEntries(Object.entries(e.mcp.mcpServers).map(([n,o])=>[n,W3(n,o)]));return [{path:Rl,content:stringify({extensions:r})}]}var VM=d(()=>{ie();Be();Se();$e();zl();ea();s(jM,"generateRules");s(UM,"generateSkills");s(BM,"generateCommands");s(KM,"generateAgents");s(WM,"generateIgnore");s(HM,"generateHooks");s(W3,"mcpServerToExtension");s(zM,"generateMcp");});function JM(e){if(e===null)return {};try{let t=parse(e);if(t&&typeof t=="object"&&!Array.isArray(t))return t}catch{}return {}}function YM(e,t){let r=e?.allow??[],n=e?.ask??[],o=e?.deny??[];if(r.length===0&&n.length===0&&o.length===0)return null;let i={};r.length>0&&(i.always_allow=r),n.length>0&&(i.ask_before=n),o.length>0&&(i.never_allow=o);let a=JM(t);return a.user=i,stringify(a).trimEnd()+`
|
|
142
|
+
`}function XM(e){let r=JM(e).user;if(!r||typeof r!="object"||Array.isArray(r))return null;let n=r,o=st(n.always_allow),i=st(n.ask_before),a=st(n.never_allow);if(o.length===0&&i.length===0&&a.length===0)return null;let l={allow:o,deny:a};return i.length>0&&(l.ask=i),l}var fk=d(()=>{vt();s(JM,"parseYamlObject");s(YM,"serializeGoosePermissions");s(XM,"parseGoosePermissions");});async function qM(e,t={}){let r=t.scope??"project",n=[],o=await H(Hr,e,r);return n.push(...await X(sh,e,r,{normalize:o})),await oe(e,r==="global"?zr:Vt,Hr,n,o),await wm({projectRoot:e,hooksFile:kl,canonicalHooksPath:uA,targetName:Hr,results:n}),r==="global"&&await Y3(e,n),n}async function Y3(e,t){let r=join(e,Il),n=await I(r);if(n===null)return;let o=XM(n);if(!o)return;let i=join(e,pR);await O(dirname(i)),await L(i,stringify(o).trimEnd()+`
|
|
143
|
+
`),t.push({fromTool:Hr,fromPath:r,toPath:pR,feature:"permissions"});}var ZM=d(()=>{he();b();ie();Ae();zl();ea();fk();gk();s(qM,"importFromGoose");s(Y3,"importPermissions");});function e9(e){let t=typeof e.description=="string"?e.description:"",r=zt(e.envs);return e.type==="stdio"||typeof e.cmd=="string"?typeof e.cmd!="string"?null:{type:"stdio",command:e.cmd,args:st(e.args),env:r,...t!==""&&{description:t}}:typeof e.uri!="string"?null:{type:"sse",url:e.uri,headers:{},env:r,...t!==""&&{description:t}}}function t9(e){let t;try{t=parse(e);}catch{return {}}if(!t||typeof t!="object"||Array.isArray(t))return {};let r=t.extensions;if(!r||typeof r!="object"||Array.isArray(r))return {};let n={};for(let[o,i]of Object.entries(r)){if(!i||typeof i!="object"||Array.isArray(i))continue;let a=e9(i);a&&(n[o]=a);}return n}async function r9(e){let t=await I(e);if(t===null)return {};let r;try{r=JSON.parse(t);}catch{return {}}if(!r||typeof r!="object"||Array.isArray(r))return {};let n=r.mcpServers;if(!n||typeof n!="object"||Array.isArray(n))return {};let o={};for(let[i,a]of Object.entries(n))!a||typeof a!="object"||Array.isArray(a)||(o[i]=a);return o}async function eG(e){let t=t9(e.content);if(Object.keys(t).length===0)return null;let r=join(e.destDir,"mcp.json"),o={...await r9(r),...t};return {destPath:r,toPath:posix.normalize(Z3),content:JSON.stringify({mcpServers:o},null,2)}}var Z3,tG=d(()=>{vt();b();Z3=".agentsmesh/mcp.json";s(e9,"extensionToMcpServer");s(t9,"parseExtensions");s(r9,"readExistingServers");s(eG,"gooseMcpMap");});var rG,nG=d(()=>{tG();ea();rG={rules:{feature:"rules",mode:"singleFile",source:{project:[dr],global:[Ro]},canonicalDir:mA,canonicalRootFilename:"_root.md",markAsRoot:true},mcp:{feature:"mcp",mode:"singleFile",source:{global:[Rl]},canonicalDir:".agentsmesh",canonicalRootFilename:"mcp.json",map:eG},ignore:{feature:"ignore",mode:"flatFile",source:{project:[So],global:[Zi]},canonicalDir:".agentsmesh",canonicalFilename:pA}};});function o9(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var oG,sG=d(()=>{b();ea();fk();s(o9,"computeStatus");oG=s(async(e,t,r,n)=>{if(r!=="global"||!n.has("permissions"))return [];let o=await I(join(t,Il)),i=YM(e.permissions,o);return i?[{target:"goose",path:Il,content:i,currentContent:o??void 0,status:o9(o,i)}]:[]},"generateGooseScopeExtras");});function iG(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Hr}))}var aG=d(()=>{Oe();ea();s(iG,"lintRules");});function lG(e,t){if(t?.scope==="global")return [];if(!e.permissions)return [];let{allow:n,deny:o}=e.permissions,i=e.permissions.ask??[];return n.length===0&&o.length===0&&i.length===0?[]:[M(".agentsmesh/permissions.yaml","goose","Goose applies tool permissions only at global scope (~/.config/goose/permission.yaml); project-scope permissions are not projected.")]}function cG(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[M(".agentsmesh/mcp.json","goose","Goose MCP extensions are configured globally in ~/.config/goose/config.yaml; project-level MCP is not projected.")]}var mG=d(()=>{Ie();s(lG,"lintPermissions");s(cG,"lintMcp");});var s9,i9,a9,l9,c9,sh,gk=d(()=>{$e();Se();VM();gt();ZM();nG();sG();aG();mG();we();ea();s9={name:Hr,primaryRootInstructionPath:dr,generateRules:jM,generateCommands:BM,generateAgents:KM,generateSkills:UM,generateIgnore:WM,generateMcp:zM,generateHooks:HM,importFrom:qM},i9={rootInstructionPath:dr,skillDir:Vt,managedOutputs:{dirs:[Vt],files:[dr,So,kl]},paths:{rulePath(e){return dr},commandPath(e){return `${Vt}/${Z(e)}/SKILL.md`},agentPath(e){return `${Vt}/${V(e)}/SKILL.md`}}},a9={rootInstructionPath:Ro,skillDir:zr,managedOutputs:{dirs:[zr],files:[Ro,Zi,Rl,kl,Il]},rewriteGeneratedPath(e){return e===dr?Ro:e===So?Zi:e},mirrorGlobalPath(e,t){return ge(e,zr,t)},paths:{rulePath(e){return Ro},commandPath(e){return `${zr}/${Z(e)}/SKILL.md`},agentPath(e){return `${zr}/${V(e)}/SKILL.md`}}},l9={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"none",hooks:"native",ignore:"native",permissions:"none"},c9={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"native"},sh={id:Hr,metadata:{displayName:"Goose",category:"cli",officialUrl:"https://block.github.io/goose",shortDescription:"Block's open-source AI agent"},generators:s9,capabilities:l9,emptyImportMessage:"No Goose config found (.goosehints, .agents/skills, or .gooseignore).",lintRules:iG,lint:{permissions:lG,mcp:cG},supportsConversion:{commands:true,agents:true},project:i9,globalSupport:{capabilities:c9,detectionPaths:[Ro,Zi,zr,Rl],layout:a9,scopeExtras:oG},importer:rG,sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:uR,detectionPaths:[dr,So],conversionDefaults:{commandsToSkills:true,agentsToSkills:true}};});function pG(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(Ms)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:An,content:o}]:[]}var uG=d(()=>{Be();nm();s(pG,"generateRules");});async function dG(e,t={}){let r=t.scope??"project",n=await H(Ms,e,r);return X(ih,e,r,{normalize:n})}var fG=d(()=>{he();Ae();nm();hk();s(dG,"importFromJules");});function gG(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Ms}))}var hG=d(()=>{Oe();nm();s(gG,"lintRules");});function yG(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[M(".agentsmesh/hooks.yaml","jules","Jules has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function _G(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[M(".agentsmesh/permissions.yaml","jules","Jules has no permissions system; canonical permissions are not projected.")]}function SG(e){return e.ignore.length===0?[]:[M(".agentsmesh/ignore","jules","Jules is a cloud-based agent with no dedicated ignore file; canonical ignore patterns are not projected.")]}function RG(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[M(".agentsmesh/mcp.json","jules","Jules is a cloud-based agent with no MCP support; canonical MCP servers are not projected.")]}function IG(e){return e.commands.length===0?[]:[M(".agentsmesh/commands","jules","Jules has no command system; canonical commands are not projected.")]}var kG=d(()=>{Ie();s(yG,"lintHooks");s(_G,"lintPermissions");s(SG,"lintIgnore");s(RG,"lintMcp");s(IG,"lintCommands");});var m9,p9,u9,ih,hk=d(()=>{uG();fG();hG();kG();we();nm();m9={name:Ms,primaryRootInstructionPath:An,generateRules:pG,importFrom:dG},p9={rootInstructionPath:An,managedOutputs:{dirs:[],files:[An]},paths:{rulePath(e){return An},commandPath(){return null},agentPath(){return null}}},u9={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"none",mcp:"none",hooks:"none",ignore:"none",permissions:"none"},ih={id:Ms,metadata:{displayName:"Jules",category:"agent-platform",officialUrl:"https://jules.google",shortDescription:"Google's autonomous coding agent"},generators:m9,capabilities:u9,emptyImportMessage:"No Jules config found (AGENTS.md).",lintRules:gG,lint:{hooks:yG,permissions:_G,ignore:SG,mcp:RG,commands:IG},project:p9,importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[An]},canonicalDir:fA,canonicalRootFilename:"_root.md",markAsRoot:true}},buildImportPaths:dR,detectionPaths:[An]};});function LG(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:Io,content:r.body.trim()||""});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes("junie"))continue;let o=basename(n.source,".md");t.push({path:`${Iu}/${o}.md`,content:n.body.trim()||""});}return t}function f9(e){let t={};return e.description&&(t.description=e.description),e.type!=="stdio"&&(t.type=e.type),Og(e)?(t.command=e.command,t.args=e.args):(t.url=e.url,Object.keys(e.headers).length>0&&(t.headers=e.headers)),Object.keys(e.env).length>0&&(t.env=e.env),t}function EG(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=Object.fromEntries(Object.entries(e.mcp.mcpServers).map(([r,n])=>[r,f9(n)]));return [{path:Ru,content:JSON.stringify({mcpServers:t},null,2)}]}function CG(e){return e.commands.map(t=>{let r={description:t.description||void 0};return r.description===void 0&&delete r.description,{path:`${om}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function OG(e){return e.agents.map(t=>{let r={name:t.name,description:t.description||void 0,tools:t.tools.length>0?t.tools:void 0,disallowedTools:t.disallowedTools.length>0?t.disallowedTools:void 0,model:t.model||void 0,skills:t.skills.length>0?t.skills:void 0};return Object.keys(r).forEach(n=>{r[n]===void 0&&delete r[n];}),{path:`${sm}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function wG(e){return e.ignore.length===0?[]:[{path:ku,content:e.ignore.join(`
|
|
144
|
+
`)}]}function bG(e){return ae(e,El)}function AG(e){let t=e.rules.find(n=>n.root),r=e.rules.filter(n=>n.root?false:n.targets.length===0||n.targets.includes("junie"));return le(t?.body.trim()??"",r)}function TG(e,t){if(t?.scope!=="global")return [];if(!e.permissions)return [];let{allow:r,deny:n}=e.permissions,o=e.permissions.ask??[];return r.length===0&&n.length===0&&o.length===0?[]:[{path:mg,content:JSON.stringify({allow:r,deny:n,ask:o},null,2)}]}var xG=d(()=>{wg();ie();Be();U();im();s(LG,"generateRules");s(f9,"toJunieMcpServer");s(EG,"generateMcp");s(CG,"generateCommands");s(OG,"generateAgents");s(wG,"generateIgnore");s(bG,"generateSkills");s(AG,"renderJunieGlobalInstructions");s(TG,"generatePermissions");});async function g9(e,t,r){let n=[Io,lg,hA,yA],o=join(e,fR);for(let i of n){let a=join(e,i),l=await I(a);if(l===null)continue;let c=await Uo({content:l,projectRoot:e,rulesDir:pg,sourcePath:a,fromTool:Ll,normalize:r});t.push(...c.results);let{frontmatter:m,body:p}=T(r(c.rootContent,a,o)),u=await z(o,{root:true,description:typeof m.description=="string"?m.description:void 0,globs:Array.isArray(m.globs)?m.globs:void 0},p);await L(o,u),t.push({fromTool:Ll,fromPath:a,toPath:fR,feature:"rules"});return}}async function DG(e){let t=[],r=await H(Ll,e);return await g9(e,t,r),t.push(...await X(ah,e,"project",{normalize:r})),await oe(e,El,Ll,t,r),t}var NG=d(()=>{he();b();U();ie();km();de();Ae();im();yk();s(g9,"importRootRule");s(DG,"importFromJunie");});function vG(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Ll}))}var FG=d(()=>{Oe();im();s(vG,"lintRules");});function MG(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=[];for(let[r,n]of Object.entries(e.mcp.mcpServers))iD(n)&&t.push(M(".agentsmesh/mcp.json","junie",`MCP server "${r}" uses ${n.type} transport; Junie project mcp.json currently documents stdio MCP servers only.`));return t}var GG=d(()=>{wg();Ie();s(MG,"lintMcp");});var h9,y9,_9,S9,ah,yk=d(()=>{xG();im();gt();NG();FG();GG();we();h9={name:"junie",primaryRootInstructionPath:Io,generateRules:LG,generateCommands:CG,generateAgents:OG,generateSkills:bG,generateMcp:EG,generateIgnore:wG,generatePermissions:TG,importFrom:DG},y9={rootInstructionPath:Io,skillDir:".junie/skills",managedOutputs:{dirs:[".junie/agents",".junie/commands",".junie/rules",".junie/skills"],files:[".aiignore",".junie/AGENTS.md",".junie/mcp/mcp.json"]},paths:{rulePath(e,t){return `${Iu}/${e}.md`},commandPath(e,t){return `${om}/${e}.md`},agentPath(e,t){return `${sm}/${e}.md`}}},_9={rootInstructionPath:Cl,renderPrimaryRootInstruction:AG,skillDir:Eu,managedOutputs:{dirs:[Eu,Cu,Ou,_A],files:[Cl,cg,mg]},rewriteGeneratedPath(e){return e===Io?Cl:e.startsWith(`${Iu}/`)?Cl:e.startsWith(`${El}/`)?e.replace(`${El}/`,`${Eu}/`):e.startsWith(`${om}/`)?e.replace(`${om}/`,`${Ou}/`):e.startsWith(`${sm}/`)?e.replace(`${sm}/`,`${Cu}/`):e===Ru?cg:e===ku?null:e},mirrorGlobalPath(e,t){return ge(e,".junie/skills",t)},paths:{rulePath(e,t){return Cl},commandPath(e,t){return `${Ou}/${e}.md`},agentPath(e,t){return `${Cu}/${e}.md`}}},S9={rules:"native",additionalRules:"embedded",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"native"},ah={id:"junie",metadata:{displayName:"Junie",category:"ide",officialUrl:"https://www.jetbrains.com/junie",shortDescription:"JetBrains AI coding agent"},generators:h9,capabilities:{rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"none"},emptyImportMessage:"No Junie config found (.junie/guidelines.md, .junie/AGENTS.md, .junie/skills, .junie/mcp/mcp.json, or .aiignore).",lintRules:vG,lint:{mcp:MG},project:y9,globalSupport:{capabilities:S9,detectionPaths:[Cl,Eu,Cu,Ou,cg],layout:_9},importer:{rules:{feature:"rules",mode:"directory",source:{project:[".junie/rules"]},canonicalDir:pg,extensions:[".md"],preset:"rule"},commands:{feature:"commands",mode:"directory",source:{project:[".junie/commands"]},canonicalDir:SA,extensions:[".md"],preset:"command"},agents:{feature:"agents",mode:"directory",source:{project:[".junie/agents"]},canonicalDir:RA,extensions:[".md"],preset:"agent"},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Ru]},canonicalDir:".agentsmesh",canonicalFilename:IA},ignore:{feature:"ignore",mode:"flatFile",source:{project:[ku]},canonicalDir:".agentsmesh",canonicalFilename:kA}},buildImportPaths:gR,detectionPaths:[".junie/guidelines.md",".junie/AGENTS.md",".junie/skills",".junie/mcp/mcp.json",".aiignore"],nativeInstall:{pickPaths:[{prefix:".junie/commands",feature:"commands",strategy:{kind:"basename",suffix:".md"}},{prefix:".junie/rules",feature:"rules",strategy:{kind:"basename",suffix:".md"}},{prefix:".junie/agents",feature:"agents",strategy:{kind:"basename",suffix:".md"}},{prefix:".junie/skills",feature:"skills",strategy:{kind:"skillDir"}}]}};});function jG(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:Tn,content:r.body.trim()?r.body:""});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(Mt))continue;let o=basename(n.source,".md"),i={};n.description&&(i.description=n.description),n.globs.length>0&&(i.globs=n.globs);let a=Object.keys(i).length>0?x(i,n.body.trim()||""):n.body.trim()||"";t.push({path:`${ko}/${o}.md`,content:a});}return t}function UG(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${Lo}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function BG(e){return e.agents.map(t=>{let r=basename(t.source,".md"),n={mode:"subagent"};return t.description&&(n.description=t.description),t.model&&(n.model=t.model),t.tools.length>0&&(n.tools=t.tools),t.disallowedTools.length>0&&(n.disallowedTools=t.disallowedTools),{path:`${Eo}/${r}.md`,content:x(n,t.body.trim()||"")}})}function KG(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Gs,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function WG(e){return e.ignore.length===0?[]:[{path:wl,content:e.ignore.join(`
|
|
145
|
+
`)}]}function HG(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];if(t.length===0&&r.length===0&&n.length===0)return [];let o={};for(let i of t)o[i]="allow";for(let i of n)o[i]="ask";for(let i of r)o[i]="deny";return [{path:Ol,content:JSON.stringify({permission:o},null,2)}]}function zG(e){return ae(e,Vr)}var VG=d(()=>{ie();U();Us();s(jG,"generateRules");s(UG,"generateCommands");s(BG,"generateAgents");s(KG,"generateMcp");s(WG,"generateIgnore");s(HG,"generatePermissions");s(zG,"generateSkills");});var lh,ch,JG,Sk=d(()=>{U();de();Us();lh=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${sa}/${e}`,content:await z(n,{root:false,description:typeof o.description=="string"?o.description:void 0,globs:Array.isArray(o.globs)?o.globs:void 0},i)}},"kiloNonRootRuleMapper"),ch=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${cm}/${e}`,content:await Ce(n,{hasDescription:Object.prototype.hasOwnProperty.call(o,"description"),description:typeof o.description=="string"?o.description:void 0,hasAllowedTools:false,allowedTools:[]},i)}},"kiloCommandMapper"),JG=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${xl}/${e}`,content:await xe(n,o,i)}},"kiloAgentMapper");});async function YG(e){try{return await stat(e),!0}catch{return false}}async function k9(e,t,r){let n=join(e,bl);if(!await YG(n))return;let o=join(e,sa),i=join(n,Ik),l=t.some(c=>c.toPath===Rk)?null:await I(i);if(l!==null){let c=join(e,Rk),m=r(l,i,c),{body:p}=T(m),u=await z(c,{root:true},p);await L(c,u),t.push({feature:"rules",fromTool:Mt,fromPath:`${bl}/${Ik}`,toPath:Rk});}t.push(...await Re({srcDir:n,destDir:o,extensions:[".md"],fromTool:Mt,normalize:r,mapEntry:s(async({srcPath:c,relativePath:m,content:p,normalizeTo:u})=>{let f=await lh({absolutePath:c,relativePath:m,content:p,destDir:o,normalizeTo:u});return m===Ik||!f?null:{...f,feature:"rules"}},"mapEntry")}));}async function L9(e,t,r){let n=join(e,am);if(!await YG(n))return;let o=join(e,cm);t.push(...await Re({srcDir:n,destDir:o,extensions:[".md"],fromTool:Mt,normalize:r,mapEntry:s(async({srcPath:i,relativePath:a,content:l,normalizeTo:c})=>{let m=await ch({absolutePath:i,relativePath:a,content:l,destDir:o,normalizeTo:c});return m?{...m,feature:"commands"}:null},"mapEntry")}));}async function E9(e,t,r){let n=join(e,dg),o=await I(n);if(o===null)return;let i;try{i=parse(o);}catch{return}if(!(!i||!Array.isArray(i.customModes)))for(let a of i.customModes){if(!a||typeof a!="object")continue;let l=a;if(typeof l.slug!="string"||l.slug.length===0)continue;let c=l.slug,m=join(e,xl,`${c}.md`),p=typeof l.description=="string"?l.description:"",u=typeof l.roleDefinition=="string"?l.roleDefinition.trim():"",f=typeof l.whenToUse=="string"?l.whenToUse.trim():"",g=f?`${u}
|
|
146
146
|
|
|
147
147
|
## When to use
|
|
148
148
|
|
|
149
|
-
${f}`:u,h={};p&&(h.description=p),typeof l.name=="string"&&l.name.length>0&&(h.name=l.name);let y=await xe(m,h,g),_=r(y,n,m);await L(m,_),t.push({feature:"agents",fromTool:Mt,fromPath:n,toPath:`${
|
|
150
|
-
`)}]}var R$=d(()=>{ie();$e();U();Lk();pm();s(P9,"steeringFrontmatter");s(d$,"generateRules");s(f$,"generateCommands");s(g$,"generateSkills");s(h$,"generateMcp");s(y$,"generateHooks");s(_$,"generateAgents");s(S$,"generateIgnore");});function N9(e){let t=typeof e.inclusion=="string"?e.inclusion:"",r={root:false,description:typeof e.description=="string"?e.description:void 0,globs:hs(e.fileMatchPattern)};return t==="manual"&&(r.trigger="manual"),t==="auto"&&(r.trigger="model_decision"),t==="fileMatch"&&(r.trigger="glob"),r}async function v9(e,t,r,n){let o=n==="global"?[Nn,xn]:[xn,Nn];for(let i of o){let a=join(e,i),l=await I(a);if(l===null)continue;let c=join(e,yR),{frontmatter:m,body:p}=T(r(l,a,c));await L(c,await z(c,{...m,root:true},p)),t.push({fromTool:fr,fromPath:a,toPath:yR,feature:"rules"});return}}async function F9(e,t,r){let n=join(e,_R);t.push(...await Re({srcDir:join(e,Pn),destDir:n,extensions:[".md"],fromTool:fr,normalize:r,mapEntry:s(async({relativePath:o,normalizeTo:i})=>{if(basename(o)==="AGENTS.md")return null;let a=join(n,o),{frontmatter:l,body:c}=T(i(a));return {destPath:a,toPath:`${_R}/${o}`,feature:"rules",content:await z(a,N9(l),c)}},"mapEntry")}));}async function M9(e,t){let r={};for(let o of await B(join(e,ia))){if(!o.endsWith(".kiro.hook"))continue;let i=p$(await I(o)??"");i&&(r[i.event]??=[],r[i.event].push(i.entry));}if(Object.keys(r).length===0)return;let n=join(e,SR);await O(join(e,".agentsmesh")),await L(n,u$(r)),t.push({fromTool:fr,fromPath:join(e,ia),toPath:SR,feature:"hooks"});}async function I$(e,t={}){let r=t.scope??"project",n=[],o=await H(fr,e,r);return await v9(e,n,o,r),await F9(e,n,o),n.push(...await X(ph,e,r,{normalize:o})),await oe(e,Gt,fr,n,o),r==="project"&&await M9(e,n),n}var k$=d(()=>{he();ie();nr();Ae();de();vt();b();U();Lk();pm();Ek();s(N9,"canonicalRuleMeta");s(v9,"importRoot");s(F9,"importNonRootRules");s(M9,"importHooks");s(I$,"importFromKiro");});function L$(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:fr}))}var E$=d(()=>{Oe();pm();s(L$,"lintRules");});function C$(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=["PreToolUse","PostToolUse","UserPromptSubmit","SubagentStop"];return ji(e.hooks,t).map(r=>Ui(r,"kiro",t,{unsupportedBy:"Kiro hooks"}))}var O$=d(()=>{Ie();s(C$,"lintHooks");});var G9,$9,j9,U9,ph,Ek=d(()=>{$e();R$();gt();k$();E$();O$();we();pm();G9={name:fr,primaryRootInstructionPath:xn,generateRules:d$,generateCommands:f$,generateAgents:_$,generateSkills:g$,generateMcp:h$,generateHooks:y$,generateIgnore:S$,importFrom:I$},$9={rootInstructionPath:xn,skillDir:Gt,managedOutputs:{dirs:[".kiro/hooks",".kiro/skills",".kiro/steering",".kiro/agents"],files:["AGENTS.md",".kiro/settings/mcp.json",".kiroignore"]},paths:{rulePath(e,t){return `${Pn}/${e}.md`},commandPath(e){return `${Gt}/${Z(e)}/SKILL.md`},agentPath(e,t){return `${Dn}/${e}.md`}}},j9={rootInstructionPath:Nn,skillDir:aa,managedOutputs:{dirs:[xl,aa,Pl,wA],files:[Nn,Pu,Du]},rewriteGeneratedPath(e){return e===xn?Nn:e.startsWith(`${Pn}/`)?e.replace(`${Pn}/`,`${xl}/`):e.startsWith(`${Gt}/`)?e.replace(`${Gt}/`,`${aa}/`):e.startsWith(`${Dn}/`)?e.replace(`${Dn}/`,`${Pl}/`):e===cm?Pu:e===mm?Du:e.startsWith(`${ia}/`)?null:e},mirrorGlobalPath(e,t){return ge(e,".kiro/skills",t)},paths:{rulePath(e,t){return `${xl}/${e}.md`},commandPath(e){return `${Gt}/${Z(e)}/SKILL.md`},agentPath(e,t){return `${Pl}/${e}.md`}}},U9={rules:"native",additionalRules:"native",commands:"embedded",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"none"},ph={id:fr,metadata:{displayName:"Kiro",category:"ide",officialUrl:"https://kiro.dev",shortDescription:"AWS spec-driven AI IDE"},generators:G9,capabilities:{rules:"native",additionalRules:"native",commands:"embedded",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},emptyImportMessage:"No Kiro config found (AGENTS.md, .kiro/steering, .kiro/skills, .kiro/agents, .kiro/hooks, .kiro/settings/mcp.json, or .kiroignore).",supportsConversion:{commands:true},lintRules:L$,lint:{hooks:C$},project:$9,globalSupport:{capabilities:U9,detectionPaths:[xl,Nn,aa,Pl,Pu,Du],layout:j9},importer:{agents:{feature:"agents",mode:"directory",source:{project:[Dn],global:[Dn]},canonicalDir:bA,extensions:[".md"],preset:"agent"},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[cm],global:[Pu]},canonicalDir:".agentsmesh",canonicalFilename:AA},ignore:{feature:"ignore",mode:"flatFile",source:{project:[mm],global:[Du]},canonicalDir:".agentsmesh",canonicalFilename:TA}},buildImportPaths:RR,detectionPaths:[Pn,Gt,Dn,ia,cm,mm],conversionDefaults:{commandsToSkills:true}};});function b$(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:vn,content:r.body.trim()?r.body:""});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(Jr))continue;let o=basename(n.source,".md"),i={};n.description&&(i.description=n.description),n.globs.length>0&&(i.globs=n.globs);let a=Object.keys(i).length>0?x(i,n.body.trim()||""):n.body.trim()||"";t.push({path:`${Co}/${o}.md`,content:a});}return t}function A$(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${Oo}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function T$(e){return e.agents.map(t=>{let r=basename(t.source,".md"),n={mode:"subagent"};return t.description&&(n.description=t.description),t.model&&(n.model=t.model),t.tools.length>0&&(n.tools=t.tools),t.disallowedTools.length>0&&(n.disallowedTools=t.disallowedTools),{path:`${wo}/${r}.md`,content:x(n,t.body.trim()||"")}})}function B9(e){if("url"in e){let r={type:"remote",url:e.url};return Object.keys(e.headers).length>0&&(r.headers=e.headers),e.description&&(r.description=e.description),r}let t={type:"local",command:[e.command,...e.args]};return Object.keys(e.env).length>0&&(t.environment=e.env),e.description&&(t.description=e.description),t}function x$(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t={};for(let[r,n]of Object.entries(e.mcp.mcpServers))t[r]=B9(n);return [{path:wt,content:JSON.stringify({mcp:t},null,2)}]}function P$(e){if(!e.permissions)return [];let t={};for(let r of e.permissions.allow)t[r]="allow";for(let r of e.permissions.ask??[])t[r]="ask";for(let r of e.permissions.deny)t[r]="deny";return Object.keys(t).length===0?[]:[{path:wt,content:JSON.stringify({permission:t},null,2)}]}function D$(e){return ae(e,Yr)}var Ck=d(()=>{ie();U();Ws();s(b$,"generateRules");s(A$,"generateCommands");s(T$,"generateAgents");s(B9,"toOpenCodeMcpServer");s(x$,"generateMcp");s(P$,"generatePermissions");s(D$,"generateSkills");});function Ok(e){if(!e||typeof e!="object"||Array.isArray(e))return {};let t={};for(let[r,n]of Object.entries(e))typeof n=="string"&&(t[r]=n);return t}function W9(e){let t;try{t=JSON.parse(e);}catch{return {}}if(!t||typeof t!="object"||Array.isArray(t))return {};let r=t.mcp;if(!r||typeof r!="object"||Array.isArray(r))return {};let n={};for(let[o,i]of Object.entries(r)){if(!i||typeof i!="object"||Array.isArray(i))continue;let a=i;if(typeof a.url=="string"){n[o]={type:"url",url:a.url,headers:Ok(a.headers),env:Ok(a.environment),...typeof a.description=="string"?{description:a.description}:{}};continue}if(Array.isArray(a.command)&&a.command.length>0){let l=a.command,c=l[0];if(c===void 0)continue;let m=l.slice(1);n[o]={type:"stdio",command:c,args:m,env:Ok(a.environment),...typeof a.description=="string"?{description:a.description}:{}};}}return n}async function H9(e,t,r){let o=join(e,t==="global"?Xr:wt),i=await I(o);if(i===null)return;let a=W9(i);Object.keys(a).length!==0&&(await Qe(e,IR,a),r.push({feature:"mcp",fromTool:Jr,fromPath:o,toPath:IR}));}async function z9(e,t,r){let o=join(e,t==="global"?Xr:wt),i=await I(o);if(i===null)return;let a;try{a=JSON.parse(i);}catch{return}if(!a||typeof a!="object")return;let l=a.permission;if(!l||typeof l!="object"||Array.isArray(l))return;let c={allow:[],ask:[],deny:[]};for(let[p,u]of Object.entries(l))u==="allow"&&c.allow.push(p),u==="ask"&&c.ask.push(p),u==="deny"&&c.deny.push(p);if(c.allow.length+c.ask.length+c.deny.length===0)return;let m=join(e,kR);await O(join(e,".agentsmesh")),await L(m,stringify(c)),r.push({feature:"permissions",fromTool:Jr,fromPath:o,toPath:kR});}async function N$(e,t={}){let r=t.scope??"project",n=[],o=await H(Jr,e,r);return n.push(...await X(dh,e,r,{normalize:o})),await oe(e,Yr,Jr,n,o),await H9(e,r,n),await z9(e,r,n),n}var v$=d(()=>{he();ie();Ae();In();b();b();Ws();wk();s(Ok,"toStringRecord");s(W9,"parseOpenCodeMcp");s(H9,"importMcp");s(z9,"importPermissions");s(N$,"importFromOpenCode");});var F$,M$,G$,$$=d(()=>{U();de();Ws();F$=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Nu}/${e}`,content:await z(n,{root:false,description:typeof o.description=="string"?o.description:void 0,globs:Array.isArray(o.globs)?o.globs:void 0},i)}},"opencodeNonRootRuleMapper"),M$=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${gg}/${e}`,content:await Ce(n,{hasDescription:Object.prototype.hasOwnProperty.call(o,"description"),description:typeof o.description=="string"?o.description:void 0,hasAllowedTools:false,allowedTools:[]},i)}},"opencodeCommandMapper"),G$=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${hg}/${e}`,content:await xe(n,o,i)}},"opencodeAgentMapper");});function j$(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Jr}))}var U$=d(()=>{Oe();Ws();s(j$,"lintRules");});function B$(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[M(".agentsmesh/hooks.yaml","opencode","opencode hooks are plugin-based (TypeScript/JavaScript); canonical config hooks are not projected.")]:[]:[]}function K$(e){return e.ignore.length===0?[]:[M(".agentsmesh/ignore","opencode","opencode has no dedicated ignore file; canonical ignore patterns are not projected. Configure watcher.ignore in opencode.json manually.")]}var W$=d(()=>{Ie();s(B$,"lintHooks");s(K$,"lintIgnore");});function z$(e,t,r){let n={};if(r.has("mcp")&&e.mcp){let o=x$(e)[0];o&&Object.assign(n,JSON.parse(o.content));}if(r.has("permissions")&&e.permissions){let o=P$(e)[0];o&&Object.assign(n,JSON.parse(o.content));}return Object.keys(n).length===0?[]:[{path:wt,content:JSON.stringify(n,null,2)}]}var H$,V$=d(()=>{Zu();Ws();Ck();H$=s((e,t,r,n)=>{if(n!==wt&&n!==Xr)return null;let o=t?.content??e;return o===null?r:$g(o,r)},"mergeOpenCodeSettings");s(z$,"emitOpenCodeScopedSettings");});var J$,Y$,Ak,X$=d(()=>{gt();Ws();J$={rootInstructionPath:vn,skillDir:Yr,managedOutputs:{dirs:[Co,Oo,wo,Yr],files:[vn,wt]},paths:{rulePath:s(e=>`${Co}/${e}.md`,"rulePath"),commandPath:s(e=>`${Oo}/${e}.md`,"commandPath"),agentPath:s(e=>`${wo}/${e}.md`,"agentPath")}},Y$={rootInstructionPath:Bs,skillDir:Ks,managedOutputs:{dirs:[la,ca,ma,Ks,PA],files:[Bs,Xr]},rewriteGeneratedPath(e){return e===vn?Bs:e===wt?Xr:e},mirrorGlobalPath(e,t){return ge(e,Ks,t)},paths:{rulePath:s(e=>`${la}/${e}.md`,"rulePath"),commandPath:s(e=>`${ca}/${e}.md`,"commandPath"),agentPath:s(e=>`${ma}/${e}.md`,"agentPath")}},Ak={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"native"};});var V9,dh,wk=d(()=>{Ck();Ws();v$();$$();U$();W$();we();V$();X$();V9={name:Jr,primaryRootInstructionPath:vn,generateRules:b$,generateCommands:A$,generateAgents:T$,generateSkills:D$,importFrom:N$},dh={id:Jr,metadata:{displayName:"OpenCode",category:"cli",officialUrl:"https://opencode.ai",shortDescription:"Open-source terminal AI agent"},generators:V9,capabilities:Ak,emptyImportMessage:"No OpenCode config found (AGENTS.md, .opencode/rules, .opencode/commands, .opencode/agents, .opencode/skills, or opencode.json).",lintRules:j$,lint:{hooks:B$,ignore:K$},project:J$,globalSupport:{capabilities:Ak,detectionPaths:[Bs,la,ca,ma,Ks,Xr],layout:Y$},mergeGeneratedOutputContent:H$,emitScopedSettings:z$,importer:{rules:[{feature:"rules",mode:"singleFile",source:{project:[vn],global:[Bs]},canonicalDir:Nu,canonicalRootFilename:"_root.md",markAsRoot:true},{feature:"rules",mode:"directory",source:{project:[Co],global:[la]},canonicalDir:Nu,extensions:[".md"],map:F$}],commands:{feature:"commands",mode:"directory",source:{project:[Oo],global:[ca]},canonicalDir:gg,extensions:[".md"],map:M$},agents:{feature:"agents",mode:"directory",source:{project:[wo],global:[ma]},canonicalDir:hg,extensions:[".md"],map:G$}},buildImportPaths:LR,detectionPaths:[Co,Oo,wo,Yr,wt,"opencode.jsonc"]};});function Q$(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(bo)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Qr,content:o}]:[]}function q$(e){return ae(e,$t)}function Z$(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${Ao}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function ej(e){return e.agents.map(t=>({path:`${$t}/${V(t.name)}/SKILL.md`,content:je(t)}))}var tj=d(()=>{ie();Be();U();Se();dm();s(Q$,"generateRules");s(q$,"generateSkills");s(Z$,"generateCommands");s(ej,"generateAgents");});async function rj(e,t={}){let r=t.scope??"project",n=[],o=await H(bo,e,r);return n.push(...await X(fh,e,r,{normalize:o})),await oe(e,r==="global"?Fn:$t,bo,n,o),n}var nj=d(()=>{he();ie();Ae();dm();Tk();s(rj,"importFromPiAgent");});function oj(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:bo}))}var sj=d(()=>{Oe();dm();s(oj,"lintRules");});function ij(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[M(".agentsmesh/hooks.yaml","pi-agent","Pi Coding Agent has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function aj(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[M(".agentsmesh/permissions.yaml","pi-agent","Pi Coding Agent has no dedicated permissions config; canonical permissions are not projected.")]}function lj(e){return e.ignore.length===0?[]:[M(".agentsmesh/ignore","pi-agent","Pi Coding Agent has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}function cj(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[M(".agentsmesh/mcp.json","pi-agent","Pi Coding Agent manages MCP servers via extensions, not a dedicated config file; canonical MCP servers are not projected.")]}var mj=d(()=>{Ie();s(ij,"lintHooks");s(aj,"lintPermissions");s(lj,"lintIgnore");s(cj,"lintMcp");});var J9,Y9,X9,pj,fh,Tk=d(()=>{Se();tj();gt();nj();sj();mj();OR();dm();J9={name:bo,primaryRootInstructionPath:Qr,generateRules:Q$,generateCommands:Z$,generateAgents:ej,generateSkills:q$,importFrom:rj},Y9={rootInstructionPath:Qr,skillDir:$t,managedOutputs:{dirs:[$t,Ao],files:[Qr]},paths:{rulePath(e){return Qr},commandPath(e){return `${Ao}/${e}.md`},agentPath(e){return `${$t}/${V(e)}/SKILL.md`}}},X9={rootInstructionPath:Hs,skillDir:Fn,managedOutputs:{dirs:[Fn,Dl],files:[Hs]},rewriteGeneratedPath(e){return e===Qr?Hs:e.startsWith(`${Ao}/`)?e.replace(`${Ao}/`,`${Dl}/`):e.startsWith(`${$t}/`)?e.replace(`${$t}/`,`${Fn}/`):e},mirrorGlobalPath(e,t){return ge(e,Fn,t)},paths:{rulePath(e){return Hs},commandPath(e){return `${Dl}/${e}.md`},agentPath(e){return `${Fn}/${V(e)}/SKILL.md`}}},pj={rules:"native",additionalRules:"embedded",commands:"native",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"none",permissions:"none"},fh={id:bo,metadata:{displayName:"Pi Agent",category:"cli",officialUrl:"https://github.com/earendil-works/pi",shortDescription:"Pi coding agent"},generators:J9,capabilities:pj,emptyImportMessage:"No Pi Coding Agent config found (AGENTS.md or .pi/skills).",lintRules:oj,lint:{hooks:ij,permissions:aj,ignore:lj,mcp:cj},supportsConversion:{agents:true},project:Y9,globalSupport:{capabilities:pj,detectionPaths:[Hs],layout:X9},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Qr],global:[Hs]},canonicalDir:NA,canonicalRootFilename:"_root.md",markAsRoot:true},commands:{feature:"commands",mode:"directory",source:{project:[Ao],global:[Dl]},canonicalDir:vA,extensions:[".md"],preset:"command"}},sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:CR,detectionPaths:[Qr,$t]};});function uj(e){let t=[],r=e.rules.find(o=>o.root);r&&t.push({path:gr,content:r.body.trim()?r.body:""});let n=e.rules.filter(o=>!o.root&&(o.targets.length===0||o.targets.includes(Mn)));for(let o of n){let i=basename(o.source,".md"),a={};o.description&&(a.description=o.description),o.globs.length>0&&(a.globs=o.globs);let l=x(a,o.body.trim()||"");t.push({path:`${To}/${i}.md`,content:l});}return t}function dj(e){return e.commands.map(t=>{let r={description:t.description,"allowed-tools":t.allowedTools.length>0?t.allowedTools:void 0};r["allowed-tools"]===void 0&&delete r["allowed-tools"];let n=x(r,t.body.trim()||"");return {path:`${Gn}/${t.name}.md`,content:n}})}function fj(e){return e.agents.map(t=>{let r={name:t.name,description:t.description,tools:t.tools.length>0?t.tools:void 0};Object.keys(r).forEach(o=>{r[o]===void 0&&delete r[o];});let n=x(r,t.body.trim()||"");return {path:`${$n}/${t.name}.md`,content:n}})}function gj(e){let t=[];for(let r of e.skills){let n={name:r.name,description:r.description||void 0};n.description===void 0&&delete n.description;let o=x(n,r.body.trim()||"");t.push({path:`${hr}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${hr}/${r.name}/${a}`,content:i.content});}}return t}function hj(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:qr,content:t}]}function yj(e){return !e.ignore||e.ignore.length===0?[]:[{path:zs,content:e.ignore.join(`
|
|
151
|
-
`)}]}function
|
|
152
|
-
`)}]}function Vj(e){return ae(e,No)}function Jj(e){if(e.agents.length===0)return [];let t=e.agents.map(r=>{let o={slug:basename(r.source,".md"),name:r.name};return r.description&&(o.description=r.description),r.body.trim()&&(o.roleDefinition=r.body.trim()),o});return [{path:pa,content:stringify({customModes:t})}]}function Yj(e){return []}var Xj=d(()=>{ie();U();Gl();s(Kj,"generateRules");s(Wj,"generateCommands");s(Hj,"generateMcp");s(zj,"generateIgnore");s(Vj,"generateSkills");s(Jj,"generateAgents");s(Yj,"generatePermissions");});var yh,qj,Dk=d(()=>{U();de();Gl();yh=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{if(e==="00-root.md")return null;let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Ml}/${e}`,content:await z(n,{root:false,description:typeof o.description=="string"?o.description:void 0,globs:Array.isArray(o.globs)?o.globs:void 0},i)}},"rooNonRootRuleMapper"),qj=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${_g}/${e}`,content:await Ce(n,{hasDescription:true,description:typeof o.description=="string"?o.description:void 0,hasAllowedTools:false,allowedTools:[]},i)}},"rooCommandMapper");});async function u5(e,t,r){let n=join(e,pa),o=await I(n);if(o===null)return;let i;try{i=parse(o);}catch{return}let a=i?.customModes;if(!Array.isArray(a))return;let l=join(e,xR);for(let c of a){if(!c||typeof c!="object")continue;let m=c,p=typeof m.slug=="string"&&m.slug?m.slug:typeof m.name=="string"&&m.name?m.name:null;if(!p)continue;let u=typeof m.name=="string"?m.name:p,f=typeof m.description=="string"?m.description:"",g=typeof m.roleDefinition=="string"?m.roleDefinition:"",h=join(l,`${p}.md`),y=await xe(h,{name:u,description:f,tools:[]},r(g,n,h));await O(dirname(h)),await L(h,y),t.push({fromTool:Xs,fromPath:n,toPath:`${xR}/${p}.md`,feature:"agents"});}}async function d5(e,t,r){let n=join(e,vl),o;try{o=await readdir(n,{withFileTypes:!0});}catch{return}let i=o.filter(l=>l.isDirectory()&&l.name.startsWith("rules-")).map(l=>l.name),a=join(e,Ml);for(let l of i)t.push(...await Re({srcDir:join(n,l),destDir:a,extensions:[".md"],fromTool:Xs,normalize:r,mapEntry:s(async({srcPath:c,relativePath:m,content:p,normalizeTo:u})=>{let f=await yh({absolutePath:c,relativePath:m,content:p,destDir:a,normalizeTo:u});return f?{...f,feature:"rules"}:null},"mapEntry")}));}async function Zj(e,t={}){let r=t.scope??"project",n=[],o=await H(Xs,e,r);return n.push(...await X(_h,e,r,{normalize:o})),await d5(e,n,o),r==="project"&&await u5(e,n,o),await oe(e,No,Xs,n,o),n}var e0=d(()=>{he();b();ie();nr();Ae();de();Dk();Gl();Nk();s(u5,"importRooModes");s(d5,"importPerModeRules");s(Zj,"importFromRooCode");});function t0(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Xs}))}var r0=d(()=>{Oe();Gl();s(t0,"lintRules");});function n0(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[M(".agentsmesh/permissions.yaml","roo-code","Roo Code permissions (roo-cline.allowedCommands) live in VS Code settings.json; configure them via VS Code Settings UI.")]}var o0=d(()=>{Ie();s(n0,"lintPermissions");});function S5(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var y5,_5,R5,I5,k5,_h,Nk=d(()=>{b();Xj();Gl();gt();e0();Dk();r0();o0();we();y5={name:"roo-code",primaryRootInstructionPath:Un,generateRules:Kj,generateCommands:Wj,generateSkills:Vj,generateMcp:Hj,generateIgnore:zj,generateAgents:Jj,generatePermissions:Yj,importFrom:Zj},_5={rootInstructionPath:Un,skillDir:".roo/skills",managedOutputs:{dirs:[".roo/rules",".roo/commands",".roo/skills"],files:[".roo/mcp.json",".rooignore",".roorules",pa]},paths:{rulePath(e,t){return `${Qs}/${e}.md`},commandPath(e,t){return `${qs}/${e}.md`},agentPath(e,t){return null}}};s(S5,"computeStatus");R5=s(async(e,t,r,n)=>{if(r!=="global")return [];if(!n.has("agents")||e.agents.length===0)return [];let o=e.agents.map(l=>{let m={slug:basename(l.source,".md"),name:l.name};return l.description&&(m.description=l.description),l.body.trim()&&(m.roleDefinition=l.body.trim()),m}),i=stringify({customModes:o}),a=await I(join(t,Gu));return [{target:"roo-code",path:Gu,content:i,currentContent:a??void 0,status:S5(a,i)}]},"generateRooGlobalExtras"),I5={rootInstructionPath:fa,skillDir:Zs,managedOutputs:{dirs:[ua,da,Zs,jA],files:[fa,Fl,$u,Gu]},rewriteGeneratedPath(e){return e===Un?fa:e===pa?null:e.startsWith(`${Qs}/`)?e.replace(`${Qs}/`,`${ua}/`):e.startsWith(`${qs}/`)?e.replace(`${qs}/`,`${da}/`):e.startsWith(`${No}/`)?e.replace(`${No}/`,`${Zs}/`):e===Fu?Fl:e===Mu?$u:e},mirrorGlobalPath(e,t){return ge(e,Zs,t)},paths:{rulePath(e,t){return `${ua}/${e}.md`},commandPath(e,t){return `${da}/${e}.md`},agentPath(e,t){return null}}},k5={rules:"native",additionalRules:"native",commands:"native",agents:"partial",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"partial"},_h={id:"roo-code",metadata:{displayName:"Roo Code",category:"ide",officialUrl:"https://roocode.com",shortDescription:"Open-source AI VS Code extension"},generators:y5,capabilities:{rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"partial"},emptyImportMessage:"No Roo Code config found (.roo/rules, .roo/commands, .roo/skills, .roo/mcp.json, .rooignore, or .roorules).",lintRules:t0,lint:{permissions:n0},project:_5,globalSupport:{capabilities:k5,detectionPaths:[ua,da,Zs,Fl,$u,fa,Gu],layout:I5,scopeExtras:R5},importer:{rules:[{feature:"rules",mode:"singleFile",source:{project:[Un,vu],global:[fa,Un,vu]},canonicalDir:Ml,canonicalRootFilename:"_root.md",markAsRoot:true,frontmatterRemap:s(({description:e,globs:t})=>({description:typeof e=="string"?e:void 0,globs:Array.isArray(t)?t:void 0}),"frontmatterRemap")},{feature:"rules",mode:"directory",source:{project:[Qs],global:[ua]},canonicalDir:Ml,extensions:[".md"],map:yh}],commands:{feature:"commands",mode:"directory",source:{project:[qs],global:[da]},canonicalDir:_g,extensions:[".md"],map:qj},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Fu],global:[Fl]},canonicalDir:".agentsmesh",canonicalFilename:UA},ignore:{feature:"ignore",mode:"flatFile",source:{project:[Mu],global:[$u]},canonicalDir:".agentsmesh",canonicalFilename:BA}},buildImportPaths:PR,detectionPaths:[".roo/rules",".roo/commands",".roo/skills",".roo/mcp.json",".rooignore",".roorules",pa]};});function s0(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(vo)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Zr,content:o}]:[]}function i0(e){return ae(e,ft)}function a0(e){return e.commands.map(t=>({path:`${ft}/${Z(t.name)}/SKILL.md`,content:Xe(t)}))}function l0(e){return e.agents.map(t=>({path:`${ft}/${V(t.name)}/SKILL.md`,content:je(t)}))}function c0(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:ei,content:t}]}var m0=d(()=>{ie();Be();Se();$e();$l();s(s0,"generateRules");s(i0,"generateSkills");s(a0,"generateCommands");s(l0,"generateAgents");s(c0,"generateMcp");});async function p0(e,t={}){let r=t.scope??"project",n=[],o=await H(vo,e,r);return n.push(...await X(Sh,e,r,{normalize:o})),await oe(e,r==="global"?yr:ft,vo,n,o),n}var u0=d(()=>{he();ie();Ae();$l();vk();s(p0,"importFromRovodev");});function d0(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:vo}))}var f0=d(()=>{Oe();$l();s(d0,"lintRules");});function g0(e){return e.ignore.length===0?[]:[M(".agentsmesh/ignore","rovodev","Rovo Dev has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}var h0=d(()=>{Ie();s(g0,"lintIgnore");});function S0(e,t){let r={};if(t.has("hooks")&&e.hooks&&Object.values(e.hooks).some(o=>Array.isArray(o)&&o.length>0)&&(r.eventHooks=e.hooks),t.has("permissions")&&e.permissions){let{allow:n,deny:o}=e.permissions,i=e.permissions.ask??[];(n.length>0||o.length>0||i.length>0)&&(r.toolPermissions={allow:n.length>0?n:void 0,deny:o.length>0?o:void 0,ask:i.length>0?i:void 0});}return Object.keys(r).length===0?[]:[{path:ju,content:stringify(r)}]}function R0(e,t){if(e===null)return t;let r;try{let i=parse(e);r=i!==null&&typeof i=="object"&&!Array.isArray(i)?i:{};}catch{r={};}let n=parse(t);if(n===null||typeof n!="object"||Array.isArray(n))return e;let o=n;return o.eventHooks!==void 0&&(r.eventHooks=o.eventHooks),o.toolPermissions!==void 0&&(r.toolPermissions=o.toolPermissions),stringify(r)}var I0=d(()=>{$l();s(S0,"buildRovodevConfig");s(R0,"mergeRovodevConfig");});var L5,E5,C5,O5,w5,Sh,vk=d(()=>{$e();Se();m0();gt();u0();f0();h0();I0();we();$l();L5={name:vo,primaryRootInstructionPath:Zr,generateRules:s0,generateCommands:a0,generateAgents:l0,generateSkills:i0,generateMcp:c0,importFrom:p0},E5={rootInstructionPath:Zr,skillDir:ft,managedOutputs:{dirs:[ft],files:[Zr,ei]},paths:{rulePath(e){return Zr},commandPath(e){return `${ft}/${Z(e)}/SKILL.md`},agentPath(e){return `${ft}/${V(e)}/SKILL.md`}}},C5={rootInstructionPath:ti,skillDir:yr,managedOutputs:{dirs:[yr],files:[ti,gm,ju]},rewriteGeneratedPath(e){return e===Zr?ti:e.startsWith(`${ft}/`)?e.replace(`${ft}/`,`${yr}/`):e===ei?gm:e},mirrorGlobalPath(e,t){return ge(e,yr,t)},paths:{rulePath(e){return ti},commandPath(e){return `${yr}/${Z(e)}/SKILL.md`},agentPath(e){return `${yr}/${V(e)}/SKILL.md`}}},O5={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},w5={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"native"},Sh={id:vo,metadata:{displayName:"Rovo Dev",category:"cli",officialUrl:"https://www.atlassian.com/solutions/devops/rovo-dev",shortDescription:"Atlassian's coding agent"},generators:L5,capabilities:O5,emptyImportMessage:"No Rovo Dev config found (AGENTS.md, .rovodev/skills, or .rovodev/mcp.json).",lintRules:d0,lint:{ignore:g0},supportsConversion:{commands:true,agents:true},project:E5,globalSupport:{capabilities:w5,detectionPaths:[HA,ti,yr],layout:C5},emitScopedSettings(e,t,r){return t!=="global"?[]:S0(e,r)},mergeGeneratedOutputContent(e,t,r,n){return n!==ju?null:R0(e,r)},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Zr],global:[ti]},canonicalDir:zA,canonicalRootFilename:"_root.md",markAsRoot:true},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[ei],global:[gm]},canonicalDir:".agentsmesh",canonicalFilename:"mcp.json"}},buildImportPaths:DR,detectionPaths:[Zr,ft,ei]};});function k0(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:Sr,content:r.body.trim()});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(en))continue;let o=basename(n.source,".md");t.push({path:`${_r}/${o}.md`,content:n.body.trim()});}return t}function L0(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${ga}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function E0(e){return ae(e,tn)}function C0(e){return e.mcp===null||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:jl,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function O0(e){return e.ignore.length===0?[]:[{path:hm,content:e.ignore.join(`
|
|
153
|
-
`)}]}var
|
|
154
|
-
`)}]}var
|
|
155
|
-
`)),n.push({fromTool:"windsurf",fromPath:p,toPath:jk,feature:"ignore"});}}return await cU(e,n,o),await pU(e,n,o),await fU(e,n),await gU(e,n),n}var _U=d(()=>{he();b();U();de();nr();Xp();jt();mU();uU();hU();s(yU,"importFromWindsurf");});function SU(e,t,r){let n=[],{rules:o}=e;o.length>0&&(o.some(l=>l.root)||n.push({level:"warning",file:relative(t,o[0].source),target:Jo,message:"Windsurf needs a root rule to generate AGENTS.md. Add root: true to a rule."}));let i=[];return e.permissions&&(e.permissions.allow.length>0||e.permissions.deny.length>0)&&i.push("permissions"),i.length>0&&n.push({level:"warning",file:".agentsmesh",target:Jo,message:`Windsurf cannot project these features yet: ${i.join(", ")}.`}),n}var RU=d(()=>{jt();s(SU,"lintRules");});function IU(e){return e.commands.filter(t=>t.description.length>0||t.allowedTools.length>0).map(t=>M(t.source,"windsurf","windsurf workflow files are plain Markdown; command description and allowed-tools metadata are not projected."))}function kU(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[M(".agentsmesh/mcp.json","windsurf","Windsurf MCP is partial; generated .windsurf/mcp_config.example.json is a reference artifact and may require manual setup.")]}var LU=d(()=>{Ie();s(IU,"lintCommands");s(kU,"lintMcp");});function e6(e){if(e.length===0)return null;let t=e.map(r=>r.split("/")[0]??"").filter(r=>/^[A-Za-z0-9._-]+$/.test(r));return t.length!==e.length?null:t.every(r=>r===t[0])?t[0]:null}var t6,r6,n6,o6,EU,CU=d(()=>{aU();qa();jt();gt();_U();RU();LU();we();Wp();Se();s(e6,"directoryScopedRuleDir");t6={name:"windsurf",primaryRootInstructionPath:Yo,generateRules:Kk,generateCommands:Hk,generateAgents:zk,generateSkills:Yk,generateMcp:Vk,generateHooks:Jk,generateIgnore:Wk,importFrom:yU},r6={rootInstructionPath:Yo,extraRuleOutputPaths(e){if(e.root)return [Yo];let t=e6(e.globs);return t!==null?[`${t}/AGENTS.md`]:[]},skillDir:Vn,managedOutputs:{dirs:[".windsurf/rules",".windsurf/skills",".windsurf/workflows"],files:["AGENTS.md",".codeiumignore",".windsurf/hooks.json",".windsurf/mcp_config.example.json"]},paths:{rulePath(e,t){return `${Ca}/${e}.md`},commandPath(e,t){return `${Oa}/${e}.md`},agentPath(e,t){return ds(t,"windsurf")?`.windsurf/skills/${V(e)}/SKILL.md`:null}}},n6={rootInstructionPath:jm,skillDir:Um,managedOutputs:{dirs:[Um,od,q0],files:[jm,kh,Lh,Eh]},rewriteGeneratedPath(e){return e===Yo?jm:e.startsWith(`${Ca}/`)||/\/AGENTS\.md$/.test(e)?null:e.startsWith(`${Vn}/`)?e.replace(`${Vn}/`,`${Um}/`):e.startsWith(`${Oa}/`)?e.replace(`${Oa}/`,`${od}/`):e===Mm?kh:e===Gm?Lh:e===Fm?Eh:e},mirrorGlobalPath(e,t){return ge(e,".codeium/windsurf/skills",t)},paths:{rulePath(e,t){return jm},commandPath(e,t){return `${od}/${e}.md`},agentPath(e,t){return ds(t,"windsurf")?`${Um}/${V(e)}/SKILL.md`:null}}},o6={rules:"native",additionalRules:"partial",commands:yn("native","workflows"),agents:"embedded",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},EU={id:"windsurf",metadata:{displayName:"Windsurf",category:"ide",officialUrl:"https://windsurf.com",shortDescription:"Codeium's agentic IDE"},generators:t6,capabilities:{rules:"native",additionalRules:"native",commands:yn("native","workflows"),agents:"embedded",skills:"native",mcp:"partial",hooks:"native",ignore:"native",permissions:"none"},emptyImportMessage:"No Windsurf config found (.windsurfrules, .windsurf/rules, .windsurfignore, or .codeiumignore).",supportsConversion:{agents:true},lintRules:SU,lint:{commands:IU,mcp:kU},project:r6,globalSupport:{capabilities:o6,detectionPaths:[jm,Um,od,kh,Lh,Eh],layout:n6},buildImportPaths:MR,detectionPaths:[".windsurfrules",".windsurf"],nativeInstall:{pickPaths:[{prefix:".windsurf/rules",feature:"rules",strategy:{kind:"basename",suffix:".md"}}],dialectHints:[{frontmatterKey:"trigger"}]},conversionDefaults:{agentsToSkills:true}};});function OU(e){return ae(e,Go)}function wU(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes("zed")),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Wn,content:o}]:[]}var bU=d(()=>{ie();Be();Ul();s(OU,"generateSkills");s(wU,"generateRules");});async function TU(e,t,r){let n=await I(join(e,t));if(n===null)return;let o;try{o=JSON.parse(n);}catch{return}if(o===null||typeof o!="object"||Array.isArray(o))return;let a=o.context_servers;if(a==null||typeof a!="object"||Array.isArray(a)||Object.keys(a).length===0)return;let l={};for(let[c,m]of Object.entries(a)){if(!m||typeof m!="object"||Array.isArray(m))continue;let p={...m};delete p.source,l[c]=p;}Object.keys(l).length!==0&&(await Qe(e,AU,l),r.push({fromTool:"zed",fromPath:t,toPath:AU,feature:"mcp"}));}var AU,xU=d(()=>{b();In();Ul();AU=".agentsmesh/mcp.json";s(TU,"importZedMcp");});async function PU(e,t={}){let r=t.scope??"project",n=[],o=await H("zed",e,r);return n.push(...await X(Oh,e,r,{normalize:o})),r==="project"&&await oe(e,Go,"zed",n,o),await TU(e,r==="global"?$o:Mo,n),n}var DU=d(()=>{he();ie();Ae();xU();Ul();Qk();s(PU,"importFromZed");});function NU(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:"zed"}))}var vU=d(()=>{Oe();Ul();s(NU,"lintRules");});function FU(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[M(".agentsmesh/hooks.yaml","zed","Zed has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function MU(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[M(".agentsmesh/permissions.yaml","zed","Zed permissions are managed via agent.tool_permissions in settings.json; canonical permissions are not projected.")]}function GU(e){return e.ignore.length===0?[]:[M(".agentsmesh/ignore","zed","Zed has no dedicated ignore file and relies on file_scan_exclusions in settings.json; canonical ignore patterns are not projected.")]}var $U=d(()=>{Ie();s(FU,"lintHooks");s(MU,"lintPermissions");s(GU,"lintIgnore");});function p6(e,t){if(e===null)return t;let r;try{let i=JSON.parse(e);r=i!==null&&typeof i=="object"&&!Array.isArray(i)?i:{};}catch{r={};}let n=JSON.parse(t);if(n===null||typeof n!="object"||Array.isArray(n))return e;let o=n;return o.context_servers!==void 0&&(r.context_servers=o.context_servers),JSON.stringify(r,null,2)}var i6,a6,l6,c6,m6,Oh,Qk=d(()=>{bU();DU();vU();$U();we();Ul();i6={name:"zed",primaryRootInstructionPath:Wn,generateRules:wU,generateSkills:OU,importFrom:PU},a6={rootInstructionPath:Wn,skillDir:Go,managedOutputs:{dirs:[Go],files:[Wn,Mo]},paths:{rulePath(e){return Wn},commandPath(){return null},agentPath(){return null}}},l6={rootInstructionPath:void 0,managedOutputs:{dirs:[],files:[$o]},rewriteGeneratedPath(e){return e===Mo?$o:e},paths:{rulePath(){return $o},commandPath(){return null},agentPath(){return null}}},c6={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},m6={rules:"none",additionalRules:"none",commands:"none",agents:"none",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"};s(p6,"mergeZedSettings");Oh={id:"zed",metadata:{displayName:"Zed",category:"ide",officialUrl:"https://zed.dev",shortDescription:"Collaborative AI editor"},generators:i6,capabilities:c6,emptyImportMessage:"No Zed config found (.rules or .zed/settings.json).",lintRules:NU,lint:{hooks:FU,permissions:MU,ignore:GU},project:a6,globalSupport:{capabilities:m6,detectionPaths:[$o],layout:l6},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Wn],global:[]},canonicalDir:rT,canonicalRootFilename:"_root.md",markAsRoot:true}},emitScopedSettings(e,t,r){if(!r.has("mcp"))return [];if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let n={};for(let[o,i]of Object.entries(e.mcp.mcpServers))n[o]=i;return [{path:Mo,content:JSON.stringify({context_servers:n},null,2)}]},mergeGeneratedOutputContent(e,t,r,n){return n===Mo||n===$o?p6(e,r):null},sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:GR,detectionPaths:[Wn,Mo]};});var bb={};w_(bb,{BUILTIN_TARGETS:()=>Ne,TARGET_IDS:()=>Ue,getBuiltinTargetDefinition:()=>sn,getEffectiveTargetSupportLevel:()=>wh,getTargetCapabilities:()=>gi,getTargetDetectionPaths:()=>Zk,getTargetLayout:()=>We,getTargetManagedOutputs:()=>eL,getTargetPrimaryRootInstructionPath:()=>f6,getTargetSkillDir:()=>sd,isBuiltinTargetId:()=>Kt,resolveTargetFeatureGenerator:()=>Bm,rewriteGeneratedOutputPath:()=>tL});function d6(){return qk||(cw(Ne),qk=new Map(Ne.map(e=>[e.id,e]))),qk}function sn(e){return d6().get(e)}function gi(e,t="project"){let r=sn(e)??ne(e);if(!r)return;if(t==="global"&&!r.globalSupport)return rS(u6);let n=t==="global"?r.globalSupport.capabilities:r.capabilities;return rS(n)}function Zk(e,t="project"){let r=sn(e)??ne(e);return r?t==="global"?r.globalSupport?.detectionPaths??[]:r.detectionPaths:[]}function We(e,t="project"){let r=sn(e)??ne(e);if(r)return t==="global"?r.globalSupport?.layout:r.project}function f6(e,t="project"){return We(e,t)?.rootInstructionPath}function sd(e,t="project"){return We(e,t)?.skillDir}function eL(e,t="project"){return We(e,t)?.managedOutputs}function tL(e,t,r="project"){let n=We(e,r);return n?n.rewriteGeneratedPath?n.rewriteGeneratedPath(t):t:null}function jU(e,t,r,n){if(!e||!r)return false;let o=gi(e.id,n)?.[t]?.level??"none";return o==="native"||o==="partial"?false:t==="commands"&&e.supportsConversion?.commands?!Nc(r,e.id,true,n):t==="agents"&&e.supportsConversion?.agents?!ds(r,e.id,true,n):false}function g6(e,t,r,n){return !e||!r?false:t==="commands"&&e.supportsConversion?.commands?Nc(r,e.id,true,n):t==="agents"&&e.supportsConversion?.agents?ds(r,e.id,true,n):false}function wh(e,t,r,n="project"){let o=gi(e,n)?.[t]?.level??"none",i=sn(e)??ne(e);return n==="global"&&i&&!i.globalSupport?"none":o==="none"&&g6(i,t,r,n)?"embedded":o!=="embedded"?o:jU(i,t,r,n)?"none":o}function Bm(e,t,r,n="project"){let o=sn(e)??ne(e);if(!o?.generators||jU(o,t,r,n))return;let i=h6[t];return i===null?void 0:i(o.generators)}var u6,Ne,qk,h6,Te=d(()=>{Wp();qa();ot();nS();pn();kS();$R();jR();BR();Tx();zR();KP();GD();_I();CI();AI();zI();VI();JI();dk();gk();hk();yk();kk();Ek();wk();Tk();xk();Pk();Nk();vk();Fk();Mk();CU();Qk();u6={rules:"none",additionalRules:"none",commands:"none",agents:"none",skills:"none",mcp:"none",hooks:"none",ignore:"none",permissions:"none"},Ne=[Hf,Sg,Rg,Ig,Ax,kg,BP,MD,Ag,vg,Gg,Jg,Yg,Xg,oh,sh,ih,ah,mh,ph,dh,fh,gh,hh,_h,Sh,Rh,Ih,EU,Oh];s(d6,"builtinTargetsMap");s(sn,"getBuiltinTargetDefinition");s(gi,"getTargetCapabilities");s(Zk,"getTargetDetectionPaths");s(We,"getTargetLayout");s(f6,"getTargetPrimaryRootInstructionPath");s(sd,"getTargetSkillDir");s(eL,"getTargetManagedOutputs");s(tL,"rewriteGeneratedOutputPath");s(jU,"isFeatureSuppressedByConversion");s(g6,"isConversionUpgrading");s(wh,"getEffectiveTargetSupportLevel");h6={rules:s(e=>e.generateRules,"rules"),additionalRules:null,commands:s(e=>e.generateCommands,"commands"),agents:s(e=>e.generateAgents,"agents"),skills:s(e=>e.generateSkills,"skills"),mcp:s(e=>e.generateMcp,"mcp"),permissions:s(e=>e.generatePermissions,"permissions"),hooks:s(e=>e.generateHooks,"hooks"),ignore:s(e=>e.generateIgnore,"ignore")};s(Bm,"resolveTargetFeatureGenerator");});function S6(e,t){return e.uniqueHits!==t.uniqueHits?t.uniqueHits-e.uniqueHits:e.sharedScore!==t.sharedScore?t.sharedScore-e.sharedScore:e.id.localeCompare(t.id)}async function bh(e){let t=[];for(let n of Ne){let o=0,i=0;for(let a of n.detectionPaths){if(!await j(join(e,a)))continue;let l=_6.get(a)??1;l===1?o+=1:i+=1/l;}(o>0||i>0)&&t.push({id:n.id,uniqueHits:o,sharedScore:i});}if(t.length===0)return null;t.sort(S6);let r=t[0];return r.uniqueHits===0?null:r.id}var _6,UU,rL=d(()=>{b();Te();_6=(()=>{let e=new Map;for(let t of Ne)for(let r of t.detectionPaths)e.set(r,(e.get(r)??0)+1);return e})();s(S6,"compare");s(bh,"detectNativeFormat");UU=Ne.map(e=>e.detectionPaths[0]).filter(e=>e!==void 0);});async function id(e,t){let r=ne(t);if(!r)throw new Error(`No importer registered for native target: ${t}`);return r.generators.importFrom(e)}var nL=d(()=>{ot();s(id,"importNativeToCanonical");});async function tc(e){if(!await j(e))return false;if(await j(join(e,sL)))return true;try{let t=await readdir(e,{withFileTypes:!0});for(let r of t)if(!(!r.isDirectory()||r.name.startsWith("."))&&await j(join(e,r.name,sL)))return !0}catch{return false}return false}async function ad(e,t={}){if(!await j(e))return [];if(await j(join(e,sL))){let r=await Of(e,t);return r?[r]:[]}return Fi(e,t)}var sL,Ah=d(()=>{b();xc();sL="SKILL.md";s(tc,"isSkillPackLayout");s(ad,"loadSkillsAtExtendPath");});async function Th(e,t={}){return (await vi(e,t)).filter(n=>!eo(basename(n.source)))}async function xh(e,t={}){return (await Ni(e,t)).filter(n=>!eo(basename(n.source)))}async function Ph(e,t={}){return (await Di(e,t)).filter(n=>!eo(basename(n.source)))}async function BU(e,t={}){return Fi(e,t)}var Dh=d(()=>{Bp();Up();jp();xc();cs();s(Th,"importAgents");s(xh,"importCommands");s(Ph,"importRules");s(BU,"importSkills");});function aL(e,t){let r=e?.[t];if(!r)return [];let n=Array.isArray(r)?r:[r],o=[];for(let i of n)i.mode!=="directory"||!i.map||!i.extensions||o.push({extensions:i.extensions,map:i.map});return o}function lL(e){return e.toLowerCase().endsWith(".md")}function WU(e,t){for(let r of aL(ne(e)?.importer,t))if(r.extensions.some(n=>!lL(n)))return true;return false}function w6(e,t){let r=new Set;for(let n of aL(ne(e)?.importer,t))for(let o of n.extensions)lL(o)||r.add(o.toLowerCase());return r}function b6(e){return Nf().filter(t=>WU(t,e))}async function x6(e,t,r){return A6[e](t,r)}async function P6(e,t,r){return T6[e](t,r)}async function D6(e,t,r,n={}){let o=aL(ne(t)?.importer,r),i=await B(e),a=new Set;for(let p of o)for(let u of p.extensions)lL(u)||a.add(u.toLowerCase());let l=i.filter(p=>[...a].some(u=>p.toLowerCase().endsWith(u))&&!eo(basename(p)));if(l.length===0)return {entities:[],cleanup:s(async()=>{},"cleanup")};let c=await mkdtemp(join(tmpdir(),`am-tool-${r}-${t}-`)),m=s(async()=>{await rm$1(c,{recursive:true,force:true});},"cleanup");try{for(let u of l){let f=await I(u);if(f===null)continue;let g=relative(e,u).replaceAll("\\","/"),h=null;for(let y of o){if(!y.extensions.some(k=>u.toLowerCase().endsWith(k.toLowerCase())))continue;let R=await y.map({absolutePath:u,relativePath:g,content:f,destDir:c,normalizeTo:s(()=>f,"normalizeTo")});if(R){h=R;break}}h&&(await O(dirname(h.destPath)),await L(h.destPath,h.content));}return {entities:await x6(r,c,n),cleanup:m}}catch(p){throw await m(),p}}async function cL(e,t,r={}){let n=r.restrictToTarget,o=n?WU(n,t)?[n]:[]:b6(t),i=new Set;for(let f of o)for(let g of w6(f,t))i.add(g);let a=await P6(t,e,{...r.parseOpts,handledByOtherReader:i.size>0?i:void 0}),l=[],c=s(f=>basename(f.source).replace(/\.[^.]+$/,""),"slugOf"),m=new Map;for(let f of a)m.set(c(f),f);for(let f of o){let g=await D6(e,f,t,r.parseOpts??{});l.push(g.cleanup);for(let h of g.entities){let y=c(h);m.has(y)||m.set(y,h);}}return {entities:[...m.values()].sort((f,g)=>c(f).localeCompare(c(g))),cleanup:s(async()=>{await Promise.allSettled(l.map(f=>f()));},"cleanup")}}async function Nh(e,t={}){let r=await cL(e,"commands",t);return {commands:[...r.entities],cleanup:r.cleanup}}async function vh(e,t={}){let r=await cL(e,"rules",t);return {rules:[...r.entities],cleanup:r.cleanup}}async function Fh(e,t={}){let r=await cL(e,"agents",t);return {agents:[...r.entities],cleanup:r.cleanup}}var A6,T6,Mh=d(()=>{Bp();Up();jp();b();ot();cs();Dh();s(aL,"directorySpecsFor");s(lL,"isMarkdownExtension");s(WU,"hasNonMdEntityMapper");s(w6,"nonMdEntityExtensions");s(b6,"targetsWithNonMdEntityMapper");A6={rules:Di,commands:Ni,agents:vi},T6={rules:Ph,commands:xh,agents:Th};s(x6,"parseEntityDir");s(P6,"importEntities");s(D6,"readToolNativeEntities");s(cL,"readEntityDirWithMappers");s(Nh,"readCommandsDirWithMappers");s(vh,"readRulesDirWithMappers");s(Fh,"readAgentsDirWithMappers");});function F6(){return {rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}function M6(e){return e.rules.length===0&&e.commands.length===0&&e.agents.length===0&&e.skills.length===0&&e.mcp===null&&e.permissions===null&&e.hooks===null&&e.ignore.length===0}async function Gh(e){if(!await j(e))throw new Error(`Path does not exist: ${e}`);let t=await stat(e);if(t.isDirectory())return {sliceRoot:e};if(!t.isFile()||!e.toLowerCase().endsWith(".md"))throw new Error(`Install path must be a directory or a .md file inside rules/, commands/, or agents/: ${e}`);let r=dirname(e),n=basename(r),i=basename(e).replace(/\.md$/i,"");if(n==="rules")return {sliceRoot:r,implicitPick:{rules:[i]}};if(n==="commands")return {sliceRoot:r,implicitPick:{commands:[i]}};if(n==="agents")return {sliceRoot:r,implicitPick:{agents:[i]}};throw new Error(`Single-file install only supports .md files under rules/, commands/, or agents/. Got: ${e}`)}async function uL(e,t){if(basename(e)===t)return e;let r=join(e,t);return await j(r)?r:null}async function G6(e,t,r){let n=s(async()=>{},"noop"),o=await uL(e,"rules");if(!o)return {rules:[],cleanup:n};if(!r)return {rules:await Ph(o,t),cleanup:n};let i=await vh(o,{parseOpts:t});return {rules:[...i.rules],cleanup:i.cleanup}}async function $6(e,t,r){let n=s(async()=>{},"noop"),o=await uL(e,"commands");if(!o)return {commands:[],cleanup:n};if(!r)return {commands:await xh(o,t),cleanup:n};let i=await Nh(o,{parseOpts:t});return {commands:[...i.commands],cleanup:i.cleanup}}async function j6(e,t,r){let n=s(async()=>{},"noop"),o=await uL(e,"agents");if(!o)return {agents:[],cleanup:n};if(!r)return {agents:await Th(o,t),cleanup:n};let i=await Fh(o,{parseOpts:t});return {agents:[...i.agents],cleanup:i.cleanup}}async function U6(e,t){if(await tc(e))return ad(e,t);let r=join(e,"skills");return await tc(r)?ad(r,t):[]}async function $h(e,t={}){let r=s(async()=>{},"noop"),n=join(e,".agentsmesh");if(await j(n))return {canonical:await Wt(e,t),cleanup:r};let o=t.enableTargetEntityMappers??false,i=F6(),a=await G6(e,t,o);i.rules=a.rules;let l=await $6(e,t,o);i.commands=l.commands;let c=await j6(e,t,o);i.agents=c.agents,i.skills=await U6(e,t);let m=s(async()=>{await Promise.allSettled([a.cleanup(),l.cleanup(),c.cleanup()]);},"mergedCleanup");if(M6(i))throw await m(),new Error(`No installable resources at ${e}. Expected .agentsmesh/, or rules/, commands/, agents/, or Anthropic-style skills (SKILL.md). Hint: pass --as commands|agents|rules|skills to force a kind for flat markdown directories.`);return {canonical:i,cleanup:m}}var dL=d(()=>{b();Dh();Mh();Qa();Ah();s(F6,"emptyCanonical");s(M6,"isCanonicalSliceEmpty");s(Gh,"normalizeSlicePath");s(uL,"resolveEntityDir");s(G6,"parseRulesAt");s($6,"parseCommandsAt");s(j6,"parseAgentsAt");s(U6,"loadSkillsForPartialSlice");s($h,"loadCanonicalSliceAtPath");});async function jh(e){let t=await I(e);if(!t)return "";let r=un(t,e);if(!r.ok)return "";let{frontmatter:n}=r.value;return typeof n.name!="string"?"":n.name.toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}async function HU(e,t){await cp$1(e,t,{recursive:true,filter:s(r=>{let n=relative(e,r).replace(/\\/g,"/");if(n==="")return true;let o=n.split("/")[0];return !(XO(o)||!n.includes("/")&&(Ef(n)||QO(n)))},"filter")});}var fL=d(()=>{b();U();cs();s(jh,"readSkillFrontmatterName");s(HU,"cpFilteredSkill");});function gL(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):typeof e=="string"?e?[e]:[]:[]}function W6(e){let t={...e},r=e.alwaysApply===true;if(t.root=r,delete t.alwaysApply,!r){let n=gL(e.globs),o=typeof e.description=="string"?e.description.trim():"";n.length>0?t.trigger="glob":o.length>0?t.trigger="model_decision":t.trigger="manual";}return t}function H6(e){let t={...e};return t.trigger==="always"&&(t.trigger="always_on"),typeof t.glob=="string"&&(t.globs=gL(t.globs).length>0?gL(t.globs):[t.glob],delete t.glob),t}function hL(e){let t=un(e,"<mdc>");if(!t.ok)return t.bodyFallback;let{frontmatter:r,body:n}=t.value;if(Object.keys(r).length===0&&!e.startsWith("---"))return e;let o;return "alwaysApply"in r?o=W6(r):"trigger"in r||"glob"in r?o=H6(r):o=r,x(o,n.trim())}var zU=d(()=>{U();s(gL,"toStrArray");s(W6,"normalizeCursorKeys");s(H6,"normalizeWindsurfKeys");s(hL,"normalizeMdcToCanonical");});function yL(e){return e.toLowerCase().replace(/[^a-z0-9.-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}function _L(e){return e.toLowerCase().endsWith(".mdc")?basename(e).replace(/\.mdc$/i,".md"):basename(e)}function JU(e,t,r){let o=relative(e,t).replace(/\\/g,"/").split("/");if(o.pop(),o.length===0)return r;let i=yL(o[o.length-1]);return i?`${i}-${r}`:r}var YU=d(()=>{s(yL,"sanitizeNameSegment");s(_L,"computeDestName");s(JU,"namespacedName");});async function X6(){let e=await mkdtemp(join(tmpdir(),"am-install-manual-")),t=join(e,"repo");return await O(join(t,".agentsmesh")),{discoveryRoot:t,cleanup:s(async()=>{await rm$1(e,{recursive:true,force:true});},"cleanup")}}function ZU(e,t){let r=e.toLowerCase();return !!(r.endsWith(".md")||t&&r.endsWith(".mdc"))}async function Q6(e,t,r){if(!ZU(e,r))throw new Error(`Manual install only supports .md files for this collection: ${e}`);if(await O(t),e.toLowerCase().endsWith(".mdc")){let n=await I(e);if(!n)return;let o=basename(e).replace(/\.mdc$/i,".md");await writeFile(join(t,o),hL(n));}else await cp$1(e,join(t,basename(e)));}async function q6(e,t,r){if((await stat(e)).isFile())return Q6(e,t,r);let o=(await B(e)).filter(l=>ZU(l,r)&&!eo(basename(l)));if(o.length===0)throw new Error(`No installable files found under ${e} for manual install. Try a different --path to point at the directory holding *.md (or *.mdc) files, or omit --as so agentsmesh can auto-detect the layout.`);let i=new Map;for(let l of o){let c=_L(l);i.set(c,(i.get(c)??0)+1);}let a=new Map;await O(t);for(let l of o){let c=_L(l),p=(i.get(c)??0)>1?JU(e,l,c):c;if(a.has(p)&&a.get(p)!==l){let f=relative(e,l).replace(/\\/g,"/").split("/").map(yL).filter(Boolean),g=c.includes(".")?"."+c.split(".").pop():"";p=f.join("-").replace(/\.(md|mdc)$/i,"")+g||p;}if(a.has(p))throw new Error(`Manual install could not resolve duplicate name "${p}" under ${e} (${a.get(p)} and ${l}).`);if(a.set(p,l),l.toLowerCase().endsWith(".mdc")){let f=await I(l);if(!f)continue;await writeFile(join(t,p),hL(f));}else await cp$1(l,join(t,p));}}async function XU(e,t,r){if(r.length===0)return false;let n=new Set(r),o=new Map;for(let i of await B(e)){if(!i.endsWith("/SKILL.md")&&!i.endsWith("\\SKILL.md"))continue;let a=dirname(i),l=basename(a);if(!n.has(l))continue;let c=o.get(l);if(c&&c!==a)throw new Error(`Manual skill replay found duplicate skill "${l}" under ${e} (${c} and ${a}).`);o.set(l,a);}if(o.size!==r.length)return false;await O(t);for(let i of r)await cp$1(o.get(i),join(t,i),{recursive:true});return true}async function Z6(e,t,r={}){if((await stat(e)).isFile()){if(basename(e)!=="SKILL.md")throw new Error(`Manual skill install expects SKILL.md or a skill directory: ${e}`);let o=basename(dirname(e)),i=join(t,o);await O(i),await cp$1(dirname(e),i,{recursive:true});return}if(await tc(e)){if((await stat(join(e,"SKILL.md")).catch(()=>null))?.isFile()){if(await XU(e,t,r.preferredSkillNames??[]))return;let l=await jh(join(e,"SKILL.md"))||basename(e),c=join(t,l);await O(t),await HU(e,c);return}if(await XU(e,t,r.preferredSkillNames??[]))return;await O(t);let o=await B(e),i=new Set;for(let a of o.filter(l=>l.endsWith("/SKILL.md")||l.endsWith("\\SKILL.md")))i.add(relative(e,dirname(a)).split(/[\\/]/)[0]);for(let a of i)await cp$1(join(e,a),join(t,a),{recursive:true});return}throw new Error(`Manual skill install expects a skill directory or skills collection at ${e}.`)}async function Bh(e,t,r={}){let n=await X6();try{let o=join(n.discoveryRoot,".agentsmesh",t);return t==="skills"?await Z6(e,o,r):await q6(e,o,t==="rules"),n}catch(o){throw await n.cleanup(),o}}var RL=d(()=>{b();Ah();fL();cs();zU();YU();s(X6,"createStageRoot");s(ZU,"isAcceptedFile");s(Q6,"stageSingleFile");s(q6,"stageMarkdownCollection");s(XU,"stagePreferredSkills");s(Z6,"stageSkills");s(Bh,"stageManualInstallScope");});function e4(){return {rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}async function eB(e){let t=e.resolvedPath;if(e.as!==void 0){let o=e.path?join(t,e.path):t;if(!await j(o))throw new Error(`Extend "${e.name}": path does not exist: ${o}`);let i=await Bh(o,e.as);try{return Wt(join(i.discoveryRoot,".agentsmesh"))}finally{await i.cleanup();}}if(!e.path){let o=join(t,".agentsmesh");if(!await j(o)){if(await tc(t)){let a=await ad(t);return {...e4(),skills:a}}let i=e.target??await bh(t);if(!i)throw new Error(`Extend "${e.name}": No supported agent configuration found in ${t}.
|
|
156
|
-
Expected one of: .agentsmesh/, ${
|
|
149
|
+
${f}`:u,h={};p&&(h.description=p),typeof l.name=="string"&&l.name.length>0&&(h.name=l.name);let y=await xe(m,h,g),_=r(y,n,m);await L(m,_),t.push({feature:"agents",fromTool:Mt,fromPath:n,toPath:`${xl}/${c}.md`});}}async function XG(e,t={}){let r=t.scope??"project",n=[],o=await H(Mt,e,r);return n.push(...await X(mh,e,r,{normalize:o})),await oe(e,Vr,Mt,n,o),r==="project"&&(await k9(e,n,o),await L9(e,n,o),await E9(e,n,o),await oe(e,Al,Mt,n,o)),n}var Rk,Ik,QG=d(()=>{he();ie();nr();Ae();b();de();U();Sk();Us();kk();Rk=`${sa}/_root.md`,Ik="00-root.md";s(YG,"pathExists");s(k9,"importLegacyRules");s(L9,"importLegacyWorkflows");s(E9,"importLegacyModes");s(XG,"importFromKiloCode");});function qG(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Mt}))}var ZG=d(()=>{Oe();Us();s(qG,"lintRules");});function e$(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[M(".agentsmesh/hooks.yaml","kilo-code","kilo-code does not support user-defined lifecycle hooks; canonical hooks are not projected.")]:[]:[]}var t$=d(()=>{Ie();s(e$,"lintHooks");});var r$,n$=d(()=>{Us();r$=s((e,t,r,n)=>{if(n!==Ol&&n!==wu)return null;let o=t?.content??e;if(o===null)return r;let i;try{let c=JSON.parse(o);i=c!==null&&typeof c=="object"&&!Array.isArray(c)?c:{};}catch{i={};}let a=JSON.parse(r);if(a===null||typeof a!="object"||Array.isArray(a))return o;let l=a;return l.permission!==void 0&&(i.permission=l.permission),JSON.stringify(i,null,2)},"mergeKiloConfig");});var o$,s$,i$,a$,l$=d(()=>{Us();gt();o$={rootInstructionPath:Tn,skillDir:Vr,managedOutputs:{dirs:[ko,Lo,Eo,Vr],files:[Tn,Gs,wl,Ol]},paths:{rulePath(e,t){return `${ko}/${e}.md`},commandPath(e,t){return `${Lo}/${e}.md`},agentPath(e,t){return `${Eo}/${e}.md`}}},s$={rootInstructionPath:$s,skillDir:js,managedOutputs:{dirs:[ra,na,oa,js,EA],files:[$s,Tl,Tu,wu]},rewriteGeneratedPath(e){return e===Tn?$s:e===Ol?wu:e},mirrorGlobalPath(e,t){return ge(e,js,t)},paths:{rulePath(e,t){return `${ra}/${e}.md`},commandPath(e,t){return `${na}/${e}.md`},agentPath(e,t){return `${oa}/${e}.md`}}},i$={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"native"},a$={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"native"};});var C9,mh,kk=d(()=>{VG();Us();QG();Sk();ZG();t$();we();n$();l$();C9={name:Mt,primaryRootInstructionPath:Tn,generateRules:jG,generateCommands:UG,generateAgents:BG,generateSkills:zG,generateMcp:KG,generateIgnore:WG,generatePermissions:HG,importFrom:XG},mh={id:Mt,metadata:{displayName:"Kilo Code",category:"ide",officialUrl:"https://kilocode.ai",shortDescription:"Open-source AI coding agent for VS Code"},generators:C9,capabilities:i$,emptyImportMessage:"No Kilo Code config found (AGENTS.md, .kilo/rules, .kilo/commands, .kilo/agents, .kilo/skills, .kilo/mcp.json, .kilocodeignore, .kilocode/, or .kilocodemodes).",lintRules:qG,lint:{hooks:e$},mergeGeneratedOutputContent:r$,project:o$,globalSupport:{capabilities:a$,detectionPaths:[$s,ra,na,oa,js,Tl,Tu],layout:s$},importer:{rules:[{feature:"rules",mode:"singleFile",source:{project:[Tn],global:[$s]},canonicalDir:sa,canonicalRootFilename:"_root.md",markAsRoot:true},{feature:"rules",mode:"directory",source:{project:[ko],global:[ra]},canonicalDir:sa,extensions:[".md"],map:lh}],commands:{feature:"commands",mode:"directory",source:{project:[Lo],global:[na]},canonicalDir:cm,extensions:[".md"],map:ch},agents:{feature:"agents",mode:"directory",source:{project:[Eo],global:[oa]},canonicalDir:xl,extensions:[".md"],map:JG},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Gs,Au],global:[Tl]},canonicalDir:".agentsmesh",canonicalFilename:CA},ignore:{feature:"ignore",mode:"flatFile",source:{project:[wl],global:[Tu]},canonicalDir:".agentsmesh",canonicalFilename:OA}},buildImportPaths:hR,detectionPaths:[ko,Lo,Eo,Vr,Gs,bl,am,Al,Au,dg,wl,"kilo.jsonc","kilo.json"]};});function c$(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/_/g,"-").toLowerCase()}function b9(e){return e.type==="prompt"?e.prompt:e.command}function A9(e,t){let r=m$[e];return e==="PreToolUse"||e==="PostToolUse"?{type:r,tools:[t||"*"]}:{type:r}}function p$(e){let t=[];for(let[r,n]of Object.entries(e)){let o=r;if(!(o in m$)||!Array.isArray(n))continue;let i=1;for(let a of n){let l=b9(a);if(!l)continue;let c={name:`${c$(r)} ${i}`,version:"1",when:A9(o,a.matcher),then:a.type==="prompt"?{type:"askAgent",prompt:l}:{type:"shellCommand",command:l}};t.push({name:`${c$(r)}-${i}.kiro.hook`,content:JSON.stringify(c,null,2)}),i+=1;}}return t}function T9(e){let t=w9.get(e.when.type);if(!t)return null;let r=e.when.tools?.[0]??e.when.patterns?.[0]??"*";return e.then.type==="askAgent"&&typeof e.then.prompt=="string"?{event:t,entry:{matcher:r,command:e.then.prompt,prompt:e.then.prompt,type:"prompt"}}:e.then.type==="shellCommand"&&typeof e.then.command=="string"?{event:t,entry:{matcher:r,command:e.then.command,type:"command"}}:null}function u$(e){let t;try{t=JSON.parse(e);}catch{return null}if(!t||typeof t!="object"||Array.isArray(t))return null;let r=t;return !r.when||!r.then||typeof r.when.type!="string"?null:T9(r)}function d$(e){return stringify(e).trimEnd()}var m$,w9,Lk=d(()=>{m$={UserPromptSubmit:"promptSubmit",SubagentStop:"agentStop",PreToolUse:"preToolUse",PostToolUse:"postToolUse"},w9=new Map([["promptSubmit","UserPromptSubmit"],["agentStop","SubagentStop"],["preToolUse","PreToolUse"],["postToolUse","PostToolUse"]]);s(c$,"toKebab");s(b9,"hookText");s(A9,"toWhen");s(p$,"generateKiroHooks");s(T9,"toCanonicalEntry");s(u$,"parseKiroHookFile");s(d$,"serializeCanonicalHooks");});function P9(e){let t={};return e.globs.length>0?(t.inclusion="fileMatch",t.fileMatchPattern=e.globs.length===1?e.globs[0]:e.globs):e.trigger==="manual"?t.inclusion="manual":e.trigger==="model_decision"?t.inclusion="auto":t.inclusion="always",e.description&&(t.description=e.description),t}function f$(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:xn,content:r.body.trim()||""});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(fr))continue;let o=basename(n.source,".md");t.push({path:`${Pn}/${o}.md`,content:x(P9(n),n.body.trim()||"")});}return t}function g$(e){return e.commands.map(t=>({path:`${Gt}/${Z(t.name)}/SKILL.md`,content:Xe(t)}))}function h$(e){return ae(e,Gt)}function y$(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:mm,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function _$(e){return !e.hooks||Object.keys(e.hooks).length===0?[]:p$(e.hooks).map(t=>({path:`${ia}/${t.name}`,content:t.content}))}function S$(e){return e.agents.map(t=>{let r={name:t.name,description:t.description,tools:t.tools.length>0?t.tools:void 0,model:t.model||void 0};Object.keys(r).forEach(o=>{r[o]===void 0&&delete r[o];});let n=x(r,t.body.trim()||"");return {path:`${Dn}/${t.name}.md`,content:n}})}function R$(e){return e.ignore.length===0?[]:[{path:pm,content:e.ignore.join(`
|
|
150
|
+
`)}]}var I$=d(()=>{ie();$e();U();Lk();um();s(P9,"steeringFrontmatter");s(f$,"generateRules");s(g$,"generateCommands");s(h$,"generateSkills");s(y$,"generateMcp");s(_$,"generateHooks");s(S$,"generateAgents");s(R$,"generateIgnore");});function N9(e){let t=typeof e.inclusion=="string"?e.inclusion:"",r={root:false,description:typeof e.description=="string"?e.description:void 0,globs:hs(e.fileMatchPattern)};return t==="manual"&&(r.trigger="manual"),t==="auto"&&(r.trigger="model_decision"),t==="fileMatch"&&(r.trigger="glob"),r}async function v9(e,t,r,n){let o=n==="global"?[Nn,xn]:[xn,Nn];for(let i of o){let a=join(e,i),l=await I(a);if(l===null)continue;let c=join(e,yR),{frontmatter:m,body:p}=T(r(l,a,c));await L(c,await z(c,{...m,root:true},p)),t.push({fromTool:fr,fromPath:a,toPath:yR,feature:"rules"});return}}async function F9(e,t,r){let n=join(e,_R);t.push(...await Re({srcDir:join(e,Pn),destDir:n,extensions:[".md"],fromTool:fr,normalize:r,mapEntry:s(async({relativePath:o,normalizeTo:i})=>{if(basename(o)==="AGENTS.md")return null;let a=join(n,o),{frontmatter:l,body:c}=T(i(a));return {destPath:a,toPath:`${_R}/${o}`,feature:"rules",content:await z(a,N9(l),c)}},"mapEntry")}));}async function M9(e,t){let r={};for(let o of await B(join(e,ia))){if(!o.endsWith(".kiro.hook"))continue;let i=u$(await I(o)??"");i&&(r[i.event]??=[],r[i.event].push(i.entry));}if(Object.keys(r).length===0)return;let n=join(e,SR);await O(join(e,".agentsmesh")),await L(n,d$(r)),t.push({fromTool:fr,fromPath:join(e,ia),toPath:SR,feature:"hooks"});}async function k$(e,t={}){let r=t.scope??"project",n=[],o=await H(fr,e,r);return await v9(e,n,o,r),await F9(e,n,o),n.push(...await X(ph,e,r,{normalize:o})),await oe(e,Gt,fr,n,o),r==="project"&&await M9(e,n),n}var L$=d(()=>{he();ie();nr();Ae();de();vt();b();U();Lk();um();Ek();s(N9,"canonicalRuleMeta");s(v9,"importRoot");s(F9,"importNonRootRules");s(M9,"importHooks");s(k$,"importFromKiro");});function E$(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:fr}))}var C$=d(()=>{Oe();um();s(E$,"lintRules");});function O$(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=["PreToolUse","PostToolUse","UserPromptSubmit","SubagentStop"];return ji(e.hooks,t).map(r=>Ui(r,"kiro",t,{unsupportedBy:"Kiro hooks"}))}var w$=d(()=>{Ie();s(O$,"lintHooks");});var G9,$9,j9,U9,ph,Ek=d(()=>{$e();I$();gt();L$();C$();w$();we();um();G9={name:fr,primaryRootInstructionPath:xn,generateRules:f$,generateCommands:g$,generateAgents:S$,generateSkills:h$,generateMcp:y$,generateHooks:_$,generateIgnore:R$,importFrom:k$},$9={rootInstructionPath:xn,skillDir:Gt,managedOutputs:{dirs:[".kiro/hooks",".kiro/skills",".kiro/steering",".kiro/agents"],files:["AGENTS.md",".kiro/settings/mcp.json",".kiroignore"]},paths:{rulePath(e,t){return `${Pn}/${e}.md`},commandPath(e){return `${Gt}/${Z(e)}/SKILL.md`},agentPath(e,t){return `${Dn}/${e}.md`}}},j9={rootInstructionPath:Nn,skillDir:aa,managedOutputs:{dirs:[Pl,aa,Dl,bA],files:[Nn,Pu,Du]},rewriteGeneratedPath(e){return e===xn?Nn:e.startsWith(`${Pn}/`)?e.replace(`${Pn}/`,`${Pl}/`):e.startsWith(`${Gt}/`)?e.replace(`${Gt}/`,`${aa}/`):e.startsWith(`${Dn}/`)?e.replace(`${Dn}/`,`${Dl}/`):e===mm?Pu:e===pm?Du:e.startsWith(`${ia}/`)?null:e},mirrorGlobalPath(e,t){return ge(e,".kiro/skills",t)},paths:{rulePath(e,t){return `${Pl}/${e}.md`},commandPath(e){return `${Gt}/${Z(e)}/SKILL.md`},agentPath(e,t){return `${Dl}/${e}.md`}}},U9={rules:"native",additionalRules:"native",commands:"embedded",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"none"},ph={id:fr,metadata:{displayName:"Kiro",category:"ide",officialUrl:"https://kiro.dev",shortDescription:"AWS spec-driven AI IDE"},generators:G9,capabilities:{rules:"native",additionalRules:"native",commands:"embedded",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},emptyImportMessage:"No Kiro config found (AGENTS.md, .kiro/steering, .kiro/skills, .kiro/agents, .kiro/hooks, .kiro/settings/mcp.json, or .kiroignore).",supportsConversion:{commands:true},lintRules:E$,lint:{hooks:O$},project:$9,globalSupport:{capabilities:U9,detectionPaths:[Pl,Nn,aa,Dl,Pu,Du],layout:j9},importer:{agents:{feature:"agents",mode:"directory",source:{project:[Dn],global:[Dn]},canonicalDir:AA,extensions:[".md"],preset:"agent"},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[mm],global:[Pu]},canonicalDir:".agentsmesh",canonicalFilename:TA},ignore:{feature:"ignore",mode:"flatFile",source:{project:[pm],global:[Du]},canonicalDir:".agentsmesh",canonicalFilename:xA}},buildImportPaths:RR,detectionPaths:[Pn,Gt,Dn,ia,mm,pm],conversionDefaults:{commandsToSkills:true}};});function A$(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:vn,content:r.body.trim()?r.body:""});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(Jr))continue;let o=basename(n.source,".md"),i={};n.description&&(i.description=n.description),n.globs.length>0&&(i.globs=n.globs);let a=Object.keys(i).length>0?x(i,n.body.trim()||""):n.body.trim()||"";t.push({path:`${Co}/${o}.md`,content:a});}return t}function T$(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${Oo}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function x$(e){return e.agents.map(t=>{let r=basename(t.source,".md"),n={mode:"subagent"};return t.description&&(n.description=t.description),t.model&&(n.model=t.model),t.tools.length>0&&(n.tools=t.tools),t.disallowedTools.length>0&&(n.disallowedTools=t.disallowedTools),{path:`${wo}/${r}.md`,content:x(n,t.body.trim()||"")}})}function B9(e){if("url"in e){let r={type:"remote",url:e.url};return Object.keys(e.headers).length>0&&(r.headers=e.headers),e.description&&(r.description=e.description),r}let t={type:"local",command:[e.command,...e.args]};return Object.keys(e.env).length>0&&(t.environment=e.env),e.description&&(t.description=e.description),t}function P$(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t={};for(let[r,n]of Object.entries(e.mcp.mcpServers))t[r]=B9(n);return [{path:wt,content:JSON.stringify({mcp:t},null,2)}]}function D$(e){if(!e.permissions)return [];let t={};for(let r of e.permissions.allow)t[r]="allow";for(let r of e.permissions.ask??[])t[r]="ask";for(let r of e.permissions.deny)t[r]="deny";return Object.keys(t).length===0?[]:[{path:wt,content:JSON.stringify({permission:t},null,2)}]}function N$(e){return ae(e,Yr)}var Ck=d(()=>{ie();U();Ws();s(A$,"generateRules");s(T$,"generateCommands");s(x$,"generateAgents");s(B9,"toOpenCodeMcpServer");s(P$,"generateMcp");s(D$,"generatePermissions");s(N$,"generateSkills");});function Ok(e){if(!e||typeof e!="object"||Array.isArray(e))return {};let t={};for(let[r,n]of Object.entries(e))typeof n=="string"&&(t[r]=n);return t}function W9(e){let t;try{t=JSON.parse(e);}catch{return {}}if(!t||typeof t!="object"||Array.isArray(t))return {};let r=t.mcp;if(!r||typeof r!="object"||Array.isArray(r))return {};let n={};for(let[o,i]of Object.entries(r)){if(!i||typeof i!="object"||Array.isArray(i))continue;let a=i;if(typeof a.url=="string"){n[o]={type:"url",url:a.url,headers:Ok(a.headers),env:Ok(a.environment),...typeof a.description=="string"?{description:a.description}:{}};continue}if(Array.isArray(a.command)&&a.command.length>0){let l=a.command,c=l[0];if(c===void 0)continue;let m=l.slice(1);n[o]={type:"stdio",command:c,args:m,env:Ok(a.environment),...typeof a.description=="string"?{description:a.description}:{}};}}return n}async function H9(e,t,r){let o=join(e,t==="global"?Xr:wt),i=await I(o);if(i===null)return;let a=W9(i);Object.keys(a).length!==0&&(await Qe(e,IR,a),r.push({feature:"mcp",fromTool:Jr,fromPath:o,toPath:IR}));}async function z9(e,t,r){let o=join(e,t==="global"?Xr:wt),i=await I(o);if(i===null)return;let a;try{a=JSON.parse(i);}catch{return}if(!a||typeof a!="object")return;let l=a.permission;if(!l||typeof l!="object"||Array.isArray(l))return;let c={allow:[],ask:[],deny:[]};for(let[p,u]of Object.entries(l))u==="allow"&&c.allow.push(p),u==="ask"&&c.ask.push(p),u==="deny"&&c.deny.push(p);if(c.allow.length+c.ask.length+c.deny.length===0)return;let m=join(e,kR);await O(join(e,".agentsmesh")),await L(m,stringify(c)),r.push({feature:"permissions",fromTool:Jr,fromPath:o,toPath:kR});}async function v$(e,t={}){let r=t.scope??"project",n=[],o=await H(Jr,e,r);return n.push(...await X(dh,e,r,{normalize:o})),await oe(e,Yr,Jr,n,o),await H9(e,r,n),await z9(e,r,n),n}var F$=d(()=>{he();ie();Ae();In();b();b();Ws();wk();s(Ok,"toStringRecord");s(W9,"parseOpenCodeMcp");s(H9,"importMcp");s(z9,"importPermissions");s(v$,"importFromOpenCode");});var M$,G$,$$,j$=d(()=>{U();de();Ws();M$=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Nu}/${e}`,content:await z(n,{root:false,description:typeof o.description=="string"?o.description:void 0,globs:Array.isArray(o.globs)?o.globs:void 0},i)}},"opencodeNonRootRuleMapper"),G$=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${gg}/${e}`,content:await Ce(n,{hasDescription:Object.prototype.hasOwnProperty.call(o,"description"),description:typeof o.description=="string"?o.description:void 0,hasAllowedTools:false,allowedTools:[]},i)}},"opencodeCommandMapper"),$$=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${hg}/${e}`,content:await xe(n,o,i)}},"opencodeAgentMapper");});function U$(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Jr}))}var B$=d(()=>{Oe();Ws();s(U$,"lintRules");});function K$(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[M(".agentsmesh/hooks.yaml","opencode","opencode hooks are plugin-based (TypeScript/JavaScript); canonical config hooks are not projected.")]:[]:[]}function W$(e){return e.ignore.length===0?[]:[M(".agentsmesh/ignore","opencode","opencode has no dedicated ignore file; canonical ignore patterns are not projected. Configure watcher.ignore in opencode.json manually.")]}var H$=d(()=>{Ie();s(K$,"lintHooks");s(W$,"lintIgnore");});function V$(e,t,r){let n={};if(r.has("mcp")&&e.mcp){let o=P$(e)[0];o&&Object.assign(n,JSON.parse(o.content));}if(r.has("permissions")&&e.permissions){let o=D$(e)[0];o&&Object.assign(n,JSON.parse(o.content));}return Object.keys(n).length===0?[]:[{path:wt,content:JSON.stringify(n,null,2)}]}var z$,J$=d(()=>{Zu();Ws();Ck();z$=s((e,t,r,n)=>{if(n!==wt&&n!==Xr)return null;let o=t?.content??e;return o===null?r:$g(o,r)},"mergeOpenCodeSettings");s(V$,"emitOpenCodeScopedSettings");});var Y$,X$,Ak,Q$=d(()=>{gt();Ws();Y$={rootInstructionPath:vn,skillDir:Yr,managedOutputs:{dirs:[Co,Oo,wo,Yr],files:[vn,wt]},paths:{rulePath:s(e=>`${Co}/${e}.md`,"rulePath"),commandPath:s(e=>`${Oo}/${e}.md`,"commandPath"),agentPath:s(e=>`${wo}/${e}.md`,"agentPath")}},X$={rootInstructionPath:Bs,skillDir:Ks,managedOutputs:{dirs:[la,ca,ma,Ks,DA],files:[Bs,Xr]},rewriteGeneratedPath(e){return e===vn?Bs:e===wt?Xr:e},mirrorGlobalPath(e,t){return ge(e,Ks,t)},paths:{rulePath:s(e=>`${la}/${e}.md`,"rulePath"),commandPath:s(e=>`${ca}/${e}.md`,"commandPath"),agentPath:s(e=>`${ma}/${e}.md`,"agentPath")}},Ak={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"native"};});var V9,dh,wk=d(()=>{Ck();Ws();F$();j$();B$();H$();we();J$();Q$();V9={name:Jr,primaryRootInstructionPath:vn,generateRules:A$,generateCommands:T$,generateAgents:x$,generateSkills:N$,importFrom:v$},dh={id:Jr,metadata:{displayName:"OpenCode",category:"cli",officialUrl:"https://opencode.ai",shortDescription:"Open-source terminal AI agent"},generators:V9,capabilities:Ak,emptyImportMessage:"No OpenCode config found (AGENTS.md, .opencode/rules, .opencode/commands, .opencode/agents, .opencode/skills, or opencode.json).",lintRules:U$,lint:{hooks:K$,ignore:W$},project:Y$,globalSupport:{capabilities:Ak,detectionPaths:[Bs,la,ca,ma,Ks,Xr],layout:X$},mergeGeneratedOutputContent:z$,emitScopedSettings:V$,importer:{rules:[{feature:"rules",mode:"singleFile",source:{project:[vn],global:[Bs]},canonicalDir:Nu,canonicalRootFilename:"_root.md",markAsRoot:true},{feature:"rules",mode:"directory",source:{project:[Co],global:[la]},canonicalDir:Nu,extensions:[".md"],map:M$}],commands:{feature:"commands",mode:"directory",source:{project:[Oo],global:[ca]},canonicalDir:gg,extensions:[".md"],map:G$},agents:{feature:"agents",mode:"directory",source:{project:[wo],global:[ma]},canonicalDir:hg,extensions:[".md"],map:$$}},buildImportPaths:LR,detectionPaths:[Co,Oo,wo,Yr,wt,"opencode.jsonc"]};});function q$(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(bo)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Qr,content:o}]:[]}function Z$(e){return ae(e,$t)}function ej(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${Ao}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function tj(e){return e.agents.map(t=>({path:`${$t}/${V(t.name)}/SKILL.md`,content:je(t)}))}var rj=d(()=>{ie();Be();U();Se();fm();s(q$,"generateRules");s(Z$,"generateSkills");s(ej,"generateCommands");s(tj,"generateAgents");});async function nj(e,t={}){let r=t.scope??"project",n=[],o=await H(bo,e,r);return n.push(...await X(fh,e,r,{normalize:o})),await oe(e,r==="global"?Fn:$t,bo,n,o),n}var oj=d(()=>{he();ie();Ae();fm();Tk();s(nj,"importFromPiAgent");});function sj(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:bo}))}var ij=d(()=>{Oe();fm();s(sj,"lintRules");});function aj(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[M(".agentsmesh/hooks.yaml","pi-agent","Pi Coding Agent has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function lj(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[M(".agentsmesh/permissions.yaml","pi-agent","Pi Coding Agent has no dedicated permissions config; canonical permissions are not projected.")]}function cj(e){return e.ignore.length===0?[]:[M(".agentsmesh/ignore","pi-agent","Pi Coding Agent has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}function mj(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[M(".agentsmesh/mcp.json","pi-agent","Pi Coding Agent manages MCP servers via extensions, not a dedicated config file; canonical MCP servers are not projected.")]}var pj=d(()=>{Ie();s(aj,"lintHooks");s(lj,"lintPermissions");s(cj,"lintIgnore");s(mj,"lintMcp");});var J9,Y9,X9,uj,fh,Tk=d(()=>{Se();rj();gt();oj();ij();pj();OR();fm();J9={name:bo,primaryRootInstructionPath:Qr,generateRules:q$,generateCommands:ej,generateAgents:tj,generateSkills:Z$,importFrom:nj},Y9={rootInstructionPath:Qr,skillDir:$t,managedOutputs:{dirs:[$t,Ao],files:[Qr]},paths:{rulePath(e){return Qr},commandPath(e){return `${Ao}/${e}.md`},agentPath(e){return `${$t}/${V(e)}/SKILL.md`}}},X9={rootInstructionPath:Hs,skillDir:Fn,managedOutputs:{dirs:[Fn,Nl],files:[Hs]},rewriteGeneratedPath(e){return e===Qr?Hs:e.startsWith(`${Ao}/`)?e.replace(`${Ao}/`,`${Nl}/`):e.startsWith(`${$t}/`)?e.replace(`${$t}/`,`${Fn}/`):e},mirrorGlobalPath(e,t){return ge(e,Fn,t)},paths:{rulePath(e){return Hs},commandPath(e){return `${Nl}/${e}.md`},agentPath(e){return `${Fn}/${V(e)}/SKILL.md`}}},uj={rules:"native",additionalRules:"embedded",commands:"native",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"none",permissions:"none"},fh={id:bo,metadata:{displayName:"Pi Agent",category:"cli",officialUrl:"https://github.com/earendil-works/pi",shortDescription:"Pi coding agent"},generators:J9,capabilities:uj,emptyImportMessage:"No Pi Coding Agent config found (AGENTS.md or .pi/skills).",lintRules:sj,lint:{hooks:aj,permissions:lj,ignore:cj,mcp:mj},supportsConversion:{agents:true},project:Y9,globalSupport:{capabilities:uj,detectionPaths:[Hs],layout:X9},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Qr],global:[Hs]},canonicalDir:vA,canonicalRootFilename:"_root.md",markAsRoot:true},commands:{feature:"commands",mode:"directory",source:{project:[Ao],global:[Nl]},canonicalDir:FA,extensions:[".md"],preset:"command"}},sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:CR,detectionPaths:[Qr,$t]};});function dj(e){let t=[],r=e.rules.find(o=>o.root);r&&t.push({path:gr,content:r.body.trim()?r.body:""});let n=e.rules.filter(o=>!o.root&&(o.targets.length===0||o.targets.includes(Mn)));for(let o of n){let i=basename(o.source,".md"),a={};o.description&&(a.description=o.description),o.globs.length>0&&(a.globs=o.globs);let l=x(a,o.body.trim()||"");t.push({path:`${To}/${i}.md`,content:l});}return t}function fj(e){return e.commands.map(t=>{let r={description:t.description,"allowed-tools":t.allowedTools.length>0?t.allowedTools:void 0};r["allowed-tools"]===void 0&&delete r["allowed-tools"];let n=x(r,t.body.trim()||"");return {path:`${Gn}/${t.name}.md`,content:n}})}function gj(e){return e.agents.map(t=>{let r={name:t.name,description:t.description,tools:t.tools.length>0?t.tools:void 0};Object.keys(r).forEach(o=>{r[o]===void 0&&delete r[o];});let n=x(r,t.body.trim()||"");return {path:`${$n}/${t.name}.md`,content:n}})}function hj(e){let t=[];for(let r of e.skills){let n={name:r.name,description:r.description||void 0};n.description===void 0&&delete n.description;let o=x(n,r.body.trim()||"");t.push({path:`${hr}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${hr}/${r.name}/${a}`,content:i.content});}}return t}function yj(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:qr,content:t}]}function _j(e){return !e.ignore||e.ignore.length===0?[]:[{path:zs,content:e.ignore.join(`
|
|
151
|
+
`)}]}function Sj(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=jo(e);return Object.keys(t).length===0?[]:[{path:qr,content:JSON.stringify({hooks:t},null,2)}]}function Rj(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];if(t.length===0&&r.length===0&&n.length===0)return [];let o={};return t.length>0&&(o.allow=t),r.length>0&&(o.deny=r),n.length>0&&(o.ask=n),[{path:qr,content:JSON.stringify({permissions:o},null,2)}]}function Ij(e){let t=e.rules.find(n=>n.root),r=e.rules.filter(n=>n.root?false:n.targets.length===0||n.targets.includes(Mn));return le(t?.body.trim()??"",r)}var kj=d(()=>{U();Be();Im();vl();s(dj,"generateRules");s(fj,"generateCommands");s(gj,"generateAgents");s(hj,"generateSkills");s(yj,"generateMcp");s(_j,"generateIgnore");s(Sj,"generateHooks");s(Rj,"generatePermissions");s(Ij,"renderQwenGlobalInstructions");});async function Lj(e,t={}){let r=t.scope??"project",n=[],o=await H(Mn,e,r);return n.push(...await X(gh,e,r,{normalize:o})),await oe(e,r==="global"?Po:hr,Mn,n,o),n}var Ej=d(()=>{he();Ae();ie();vl();xk();s(Lj,"importFromQwenCode");});function Cj(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Mn}))}var Oj=d(()=>{Oe();vl();s(Cj,"lintRules");});var wj,bj=d(()=>{vl();wj={rules:[{feature:"rules",mode:"singleFile",source:{project:[gr],global:[xo]},canonicalDir:wR,canonicalRootFilename:"_root.md",markAsRoot:true},{feature:"rules",mode:"directory",source:{project:[To],global:[]},canonicalDir:wR,extensions:[".md"],preset:"rule"}],commands:{feature:"commands",mode:"directory",source:{project:[Gn],global:[Js]},canonicalDir:MA,extensions:[".md"],preset:"command"},agents:{feature:"agents",mode:"directory",source:{project:[$n],global:[Ys]},canonicalDir:GA,extensions:[".md"],preset:"agent"},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[qr],global:[Vs]},canonicalDir:".agentsmesh",canonicalFilename:".agentsmesh/mcp.json"},ignore:{feature:"ignore",mode:"flatFile",source:{project:[zs],global:[]},canonicalDir:".agentsmesh",canonicalFilename:".agentsmesh/ignore"}};});function n5(e){if(!e)return {};try{let t=JSON.parse(e);return t!==null&&typeof t=="object"&&!Array.isArray(t)?t:{}}catch{return {}}}var q9,Z9,e5,t5,r5,o5,gh,xk=d(()=>{kj();Ej();Oj();we();bj();vl();q9={name:Mn,primaryRootInstructionPath:gr,generateRules:dj,generateCommands:fj,generateAgents:gj,generateSkills:hj,generateMcp:yj,generateIgnore:_j,generateHooks:Sj,generatePermissions:Rj,importFrom:Lj},Z9={rootInstructionPath:gr,skillDir:hr,managedOutputs:{dirs:[To,Gn,$n,hr],files:[gr,qr,zs]},paths:{rulePath(e,t){return t.root?gr:`${To}/${e}.md`},commandPath(e){return `${Gn}/${e}.md`},agentPath(e){return `${$n}/${e}.md`}}},e5={rootInstructionPath:xo,renderPrimaryRootInstruction:Ij,skillDir:Po,managedOutputs:{dirs:[Js,Ys,Po],files:[xo,Vs]},rewriteGeneratedPath(e){return e===gr?xo:e===qr?Vs:e===zs?null:e.startsWith(`${Gn}/`)?e.replace(`${Gn}/`,`${Js}/`):e.startsWith(`${$n}/`)?e.replace(`${$n}/`,`${Ys}/`):e.startsWith(`${hr}/`)?e.replace(`${hr}/`,`${Po}/`):e.startsWith(`${To}/`)?null:e},paths:{rulePath(e,t){return xo},commandPath(e){return `${Js}/${e}.md`},agentPath(e){return `${Ys}/${e}.md`}}},t5={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"native"},r5={rules:"native",additionalRules:"embedded",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"native"};s(n5,"parseJsonObject");o5=s((e,t,r,n)=>{if(n!==qr&&n!==Vs)return null;let o=n5(t?.content??e);try{let i=JSON.parse(r);i.mcpServers!==void 0&&(o.mcpServers=i.mcpServers),i.hooks!==void 0&&(o.hooks=i.hooks),i.permissions!==void 0&&(o.permissions=i.permissions);}catch{return t?.content??e??r}return JSON.stringify(o,null,2)},"mergeQwenSettings"),gh={id:Mn,metadata:{displayName:"Qwen Code",category:"cli",officialUrl:"https://github.com/QwenLM/qwen-code",shortDescription:"Alibaba's Qwen coding CLI"},generators:q9,capabilities:t5,emptyImportMessage:"No Qwen Code config found (QWEN.md or .qwen/rules, .qwen/commands, .qwen/settings.json).",lintRules:Cj,project:Z9,globalSupport:{capabilities:r5,detectionPaths:[xo,Vs,Js,Ys,Po],layout:e5},mergeGeneratedOutputContent:o5,importer:wj,buildImportPaths:bR,detectionPaths:[gr,".qwen/settings.json",".qwen/commands",".qwen/rules"]};});function Aj(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(Do)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:jn,content:o}]:[]}function Tj(e){return ae(e,Jt)}function xj(e){return e.commands.map(t=>({path:`${Jt}/${Z(t.name)}/SKILL.md`,content:Xe(t)}))}function Pj(e){return e.agents.map(t=>({path:`${Jt}/${V(t.name)}/SKILL.md`,content:je(t)}))}var Dj=d(()=>{ie();Be();Se();$e();gm();s(Aj,"generateRules");s(Tj,"generateSkills");s(xj,"generateCommands");s(Pj,"generateAgents");});async function Nj(e,t={}){let r=t.scope??"project",n=[],o=await H(Do,e,r);return n.push(...await X(hh,e,r,{normalize:o})),await oe(e,Jt,Do,n,o),n}var vj=d(()=>{he();ie();Ae();gm();Pk();s(Nj,"importFromReplitAgent");});function Fj(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Do}))}var Mj=d(()=>{Oe();gm();s(Fj,"lintRules");});function Gj(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[M(".agentsmesh/hooks.yaml","replit-agent","Replit Agent has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function $j(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[M(".agentsmesh/permissions.yaml","replit-agent","Replit Agent permissions are managed in the cloud UI; canonical permissions are not projected.")]}function jj(e){return e.ignore.length===0?[]:[M(".agentsmesh/ignore","replit-agent","Replit Agent has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}function Uj(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[M(".agentsmesh/mcp.json","replit-agent","Replit Agent MCP servers are configured via the Integrations UI, not file-based; canonical MCP config is not projected.")]}var Bj=d(()=>{Ie();s(Gj,"lintHooks");s($j,"lintPermissions");s(jj,"lintIgnore");s(Uj,"lintMcp");});var s5,i5,a5,hh,Pk=d(()=>{$e();Se();Dj();vj();Mj();Bj();TR();gm();s5={name:Do,primaryRootInstructionPath:jn,generateRules:Aj,generateCommands:xj,generateAgents:Pj,generateSkills:Tj,importFrom:Nj},i5={rootInstructionPath:jn,skillDir:Jt,managedOutputs:{dirs:[Jt],files:[jn]},paths:{rulePath(e){return jn},commandPath(e){return `${Jt}/${Z(e)}/SKILL.md`},agentPath(e){return `${Jt}/${V(e)}/SKILL.md`}}},a5={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"none",permissions:"none"},hh={id:Do,metadata:{displayName:"Replit Agent",category:"agent-platform",officialUrl:"https://replit.com",shortDescription:"Replit's autonomous coding agent"},generators:s5,capabilities:a5,emptyImportMessage:"No Replit Agent config found (replit.md or .agents/skills).",lintRules:Fj,lint:{hooks:Gj,permissions:$j,ignore:jj,mcp:Uj},supportsConversion:{commands:true,agents:true},project:i5,sharedArtifacts:{".agents/skills/":"consumer"},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[jn]},canonicalDir:jA,canonicalRootFilename:"_root.md",markAsRoot:true}},buildImportPaths:AR,detectionPaths:[jn]};});function Wj(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:Un,content:r.body.trim()||""});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(Xs))continue;let o=basename(n.source,".md");t.push({path:`${Qs}/${o}.md`,content:n.body.trim()||""});}return t}function Hj(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${qs}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function zj(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Fu,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function Vj(e){return e.ignore.length===0?[]:[{path:Mu,content:e.ignore.join(`
|
|
152
|
+
`)}]}function Jj(e){return ae(e,No)}function Yj(e){if(e.agents.length===0)return [];let t=e.agents.map(r=>{let o={slug:basename(r.source,".md"),name:r.name};return r.description&&(o.description=r.description),r.body.trim()&&(o.roleDefinition=r.body.trim()),o});return [{path:pa,content:stringify({customModes:t})}]}function Xj(e){return []}var Qj=d(()=>{ie();U();$l();s(Wj,"generateRules");s(Hj,"generateCommands");s(zj,"generateMcp");s(Vj,"generateIgnore");s(Jj,"generateSkills");s(Yj,"generateAgents");s(Xj,"generatePermissions");});var yh,Zj,Dk=d(()=>{U();de();$l();yh=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{if(e==="00-root.md")return null;let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Gl}/${e}`,content:await z(n,{root:false,description:typeof o.description=="string"?o.description:void 0,globs:Array.isArray(o.globs)?o.globs:void 0},i)}},"rooNonRootRuleMapper"),Zj=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${_g}/${e}`,content:await Ce(n,{hasDescription:true,description:typeof o.description=="string"?o.description:void 0,hasAllowedTools:false,allowedTools:[]},i)}},"rooCommandMapper");});async function u5(e,t,r){let n=join(e,pa),o=await I(n);if(o===null)return;let i;try{i=parse(o);}catch{return}let a=i?.customModes;if(!Array.isArray(a))return;let l=join(e,xR);for(let c of a){if(!c||typeof c!="object")continue;let m=c,p=typeof m.slug=="string"&&m.slug?m.slug:typeof m.name=="string"&&m.name?m.name:null;if(!p)continue;let u=typeof m.name=="string"?m.name:p,f=typeof m.description=="string"?m.description:"",g=typeof m.roleDefinition=="string"?m.roleDefinition:"",h=join(l,`${p}.md`),y=await xe(h,{name:u,description:f,tools:[]},r(g,n,h));await O(dirname(h)),await L(h,y),t.push({fromTool:Xs,fromPath:n,toPath:`${xR}/${p}.md`,feature:"agents"});}}async function d5(e,t,r){let n=join(e,Fl),o;try{o=await readdir(n,{withFileTypes:!0});}catch{return}let i=o.filter(l=>l.isDirectory()&&l.name.startsWith("rules-")).map(l=>l.name),a=join(e,Gl);for(let l of i)t.push(...await Re({srcDir:join(n,l),destDir:a,extensions:[".md"],fromTool:Xs,normalize:r,mapEntry:s(async({srcPath:c,relativePath:m,content:p,normalizeTo:u})=>{let f=await yh({absolutePath:c,relativePath:m,content:p,destDir:a,normalizeTo:u});return f?{...f,feature:"rules"}:null},"mapEntry")}));}async function e0(e,t={}){let r=t.scope??"project",n=[],o=await H(Xs,e,r);return n.push(...await X(_h,e,r,{normalize:o})),await d5(e,n,o),r==="project"&&await u5(e,n,o),await oe(e,No,Xs,n,o),n}var t0=d(()=>{he();b();ie();nr();Ae();de();Dk();$l();Nk();s(u5,"importRooModes");s(d5,"importPerModeRules");s(e0,"importFromRooCode");});function r0(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Xs}))}var n0=d(()=>{Oe();$l();s(r0,"lintRules");});function o0(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[M(".agentsmesh/permissions.yaml","roo-code","Roo Code permissions (roo-cline.allowedCommands) live in VS Code settings.json; configure them via VS Code Settings UI.")]}var s0=d(()=>{Ie();s(o0,"lintPermissions");});function S5(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var y5,_5,R5,I5,k5,_h,Nk=d(()=>{b();Qj();$l();gt();t0();Dk();n0();s0();we();y5={name:"roo-code",primaryRootInstructionPath:Un,generateRules:Wj,generateCommands:Hj,generateSkills:Jj,generateMcp:zj,generateIgnore:Vj,generateAgents:Yj,generatePermissions:Xj,importFrom:e0},_5={rootInstructionPath:Un,skillDir:".roo/skills",managedOutputs:{dirs:[".roo/rules",".roo/commands",".roo/skills"],files:[".roo/mcp.json",".rooignore",".roorules",pa]},paths:{rulePath(e,t){return `${Qs}/${e}.md`},commandPath(e,t){return `${qs}/${e}.md`},agentPath(e,t){return null}}};s(S5,"computeStatus");R5=s(async(e,t,r,n)=>{if(r!=="global")return [];if(!n.has("agents")||e.agents.length===0)return [];let o=e.agents.map(l=>{let m={slug:basename(l.source,".md"),name:l.name};return l.description&&(m.description=l.description),l.body.trim()&&(m.roleDefinition=l.body.trim()),m}),i=stringify({customModes:o}),a=await I(join(t,Gu));return [{target:"roo-code",path:Gu,content:i,currentContent:a??void 0,status:S5(a,i)}]},"generateRooGlobalExtras"),I5={rootInstructionPath:fa,skillDir:Zs,managedOutputs:{dirs:[ua,da,Zs,UA],files:[fa,Ml,$u,Gu]},rewriteGeneratedPath(e){return e===Un?fa:e===pa?null:e.startsWith(`${Qs}/`)?e.replace(`${Qs}/`,`${ua}/`):e.startsWith(`${qs}/`)?e.replace(`${qs}/`,`${da}/`):e.startsWith(`${No}/`)?e.replace(`${No}/`,`${Zs}/`):e===Fu?Ml:e===Mu?$u:e},mirrorGlobalPath(e,t){return ge(e,Zs,t)},paths:{rulePath(e,t){return `${ua}/${e}.md`},commandPath(e,t){return `${da}/${e}.md`},agentPath(e,t){return null}}},k5={rules:"native",additionalRules:"native",commands:"native",agents:"partial",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"partial"},_h={id:"roo-code",metadata:{displayName:"Roo Code",category:"ide",officialUrl:"https://roocode.com",shortDescription:"Open-source AI VS Code extension"},generators:y5,capabilities:{rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"partial"},emptyImportMessage:"No Roo Code config found (.roo/rules, .roo/commands, .roo/skills, .roo/mcp.json, .rooignore, or .roorules).",lintRules:r0,lint:{permissions:o0},project:_5,globalSupport:{capabilities:k5,detectionPaths:[ua,da,Zs,Ml,$u,fa,Gu],layout:I5,scopeExtras:R5},importer:{rules:[{feature:"rules",mode:"singleFile",source:{project:[Un,vu],global:[fa,Un,vu]},canonicalDir:Gl,canonicalRootFilename:"_root.md",markAsRoot:true,frontmatterRemap:s(({description:e,globs:t})=>({description:typeof e=="string"?e:void 0,globs:Array.isArray(t)?t:void 0}),"frontmatterRemap")},{feature:"rules",mode:"directory",source:{project:[Qs],global:[ua]},canonicalDir:Gl,extensions:[".md"],map:yh}],commands:{feature:"commands",mode:"directory",source:{project:[qs],global:[da]},canonicalDir:_g,extensions:[".md"],map:Zj},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Fu],global:[Ml]},canonicalDir:".agentsmesh",canonicalFilename:BA},ignore:{feature:"ignore",mode:"flatFile",source:{project:[Mu],global:[$u]},canonicalDir:".agentsmesh",canonicalFilename:KA}},buildImportPaths:PR,detectionPaths:[".roo/rules",".roo/commands",".roo/skills",".roo/mcp.json",".rooignore",".roorules",pa]};});function i0(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(vo)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Zr,content:o}]:[]}function a0(e){return ae(e,ft)}function l0(e){return e.commands.map(t=>({path:`${ft}/${Z(t.name)}/SKILL.md`,content:Xe(t)}))}function c0(e){return e.agents.map(t=>({path:`${ft}/${V(t.name)}/SKILL.md`,content:je(t)}))}function m0(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:ei,content:t}]}var p0=d(()=>{ie();Be();Se();$e();jl();s(i0,"generateRules");s(a0,"generateSkills");s(l0,"generateCommands");s(c0,"generateAgents");s(m0,"generateMcp");});async function u0(e,t={}){let r=t.scope??"project",n=[],o=await H(vo,e,r);return n.push(...await X(Sh,e,r,{normalize:o})),await oe(e,r==="global"?yr:ft,vo,n,o),n}var d0=d(()=>{he();ie();Ae();jl();vk();s(u0,"importFromRovodev");});function f0(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:vo}))}var g0=d(()=>{Oe();jl();s(f0,"lintRules");});function h0(e){return e.ignore.length===0?[]:[M(".agentsmesh/ignore","rovodev","Rovo Dev has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}var y0=d(()=>{Ie();s(h0,"lintIgnore");});function R0(e,t){let r={};if(t.has("hooks")&&e.hooks&&Object.values(e.hooks).some(o=>Array.isArray(o)&&o.length>0)&&(r.eventHooks=e.hooks),t.has("permissions")&&e.permissions){let{allow:n,deny:o}=e.permissions,i=e.permissions.ask??[];(n.length>0||o.length>0||i.length>0)&&(r.toolPermissions={allow:n.length>0?n:void 0,deny:o.length>0?o:void 0,ask:i.length>0?i:void 0});}return Object.keys(r).length===0?[]:[{path:ju,content:stringify(r)}]}function I0(e,t){if(e===null)return t;let r;try{let i=parse(e);r=i!==null&&typeof i=="object"&&!Array.isArray(i)?i:{};}catch{r={};}let n=parse(t);if(n===null||typeof n!="object"||Array.isArray(n))return e;let o=n;return o.eventHooks!==void 0&&(r.eventHooks=o.eventHooks),o.toolPermissions!==void 0&&(r.toolPermissions=o.toolPermissions),stringify(r)}var k0=d(()=>{jl();s(R0,"buildRovodevConfig");s(I0,"mergeRovodevConfig");});var L5,E5,C5,O5,w5,Sh,vk=d(()=>{$e();Se();p0();gt();d0();g0();y0();k0();we();jl();L5={name:vo,primaryRootInstructionPath:Zr,generateRules:i0,generateCommands:l0,generateAgents:c0,generateSkills:a0,generateMcp:m0,importFrom:u0},E5={rootInstructionPath:Zr,skillDir:ft,managedOutputs:{dirs:[ft],files:[Zr,ei]},paths:{rulePath(e){return Zr},commandPath(e){return `${ft}/${Z(e)}/SKILL.md`},agentPath(e){return `${ft}/${V(e)}/SKILL.md`}}},C5={rootInstructionPath:ti,skillDir:yr,managedOutputs:{dirs:[yr],files:[ti,hm,ju]},rewriteGeneratedPath(e){return e===Zr?ti:e.startsWith(`${ft}/`)?e.replace(`${ft}/`,`${yr}/`):e===ei?hm:e},mirrorGlobalPath(e,t){return ge(e,yr,t)},paths:{rulePath(e){return ti},commandPath(e){return `${yr}/${Z(e)}/SKILL.md`},agentPath(e){return `${yr}/${V(e)}/SKILL.md`}}},O5={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},w5={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"native"},Sh={id:vo,metadata:{displayName:"Rovo Dev",category:"cli",officialUrl:"https://www.atlassian.com/solutions/devops/rovo-dev",shortDescription:"Atlassian's coding agent"},generators:L5,capabilities:O5,emptyImportMessage:"No Rovo Dev config found (AGENTS.md, .rovodev/skills, or .rovodev/mcp.json).",lintRules:f0,lint:{ignore:h0},supportsConversion:{commands:true,agents:true},project:E5,globalSupport:{capabilities:w5,detectionPaths:[zA,ti,yr],layout:C5},emitScopedSettings(e,t,r){return t!=="global"?[]:R0(e,r)},mergeGeneratedOutputContent(e,t,r,n){return n!==ju?null:I0(e,r)},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Zr],global:[ti]},canonicalDir:VA,canonicalRootFilename:"_root.md",markAsRoot:true},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[ei],global:[hm]},canonicalDir:".agentsmesh",canonicalFilename:"mcp.json"}},buildImportPaths:DR,detectionPaths:[Zr,ft,ei]};});function L0(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:Sr,content:r.body.trim()});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(en))continue;let o=basename(n.source,".md");t.push({path:`${_r}/${o}.md`,content:n.body.trim()});}return t}function E0(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${ga}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function C0(e){return ae(e,tn)}function O0(e){return e.mcp===null||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Ul,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function w0(e){return e.ignore.length===0?[]:[{path:ym,content:e.ignore.join(`
|
|
153
|
+
`)}]}var b0=d(()=>{ie();U();Sm();s(L0,"generateRules");s(E0,"generateCommands");s(C0,"generateSkills");s(O0,"generateMcp");s(w0,"generateIgnore");});async function T5(e,t,r,n){let o=n==="global"?[rn,Sr]:[Sr,rn];for(let i of o){let a=join(e,i),l=await I(a);if(l===null)continue;let c=join(e,A0),{frontmatter:m,body:p}=T(r(l,a,c));await O(join(e,Ku)),await L(c,await z(c,{...m,root:true},p)),t.push({fromTool:en,fromPath:a,toPath:A0,feature:"rules"});return}}async function x5(e,t,r,n){let o=join(e,n==="global"?ri:_r),i=join(e,Ku);t.push(...await Re({srcDir:o,destDir:i,extensions:[".md"],fromTool:en,normalize:r,mapEntry:s(async({relativePath:a,normalizeTo:l})=>{let c=basename(a);if(c==="project_rules.md"||c==="rules.md")return null;let m=join(i,a),{frontmatter:p,body:u}=T(l(m));return {destPath:m,toPath:`${Ku}/${a}`,feature:"rules",content:await z(m,{...p,root:false},u)}},"mapEntry")}));}async function T0(e,t={}){let r=t.scope??"project",n=[],o=await H(en,e,r);return await T5(e,n,o,r),await x5(e,n,o,r),n.push(...await X(Rh,e,r,{normalize:o})),await oe(e,r==="global"?Bn:tn,en,n,o),n}var A0,x0=d(()=>{he();ie();nr();Ae();de();b();U();Sm();Fk();A0=`${Ku}/_root.md`;s(T5,"importRoot");s(x5,"importNonRootRules");s(T0,"importFromTrae");});function P0(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:en}))}var D0=d(()=>{Oe();Sm();s(P0,"lintRules");});var P5,D5,N5,v5,Rh,Fk=d(()=>{b0();gt();x0();D0();we();Sm();P5={name:en,primaryRootInstructionPath:Sr,generateRules:L0,generateCommands:E0,generateSkills:C0,generateMcp:O0,generateIgnore:w0,importFrom:T0},D5={rootInstructionPath:Sr,skillDir:tn,managedOutputs:{dirs:[_r,ga,tn],files:[Ul,ym]},paths:{rulePath(e,t){return `${_r}/${e}.md`},commandPath(e,t){return `${ga}/${e}.md`},agentPath(e,t){return null}}},N5={rootInstructionPath:rn,skillDir:Bn,managedOutputs:{dirs:[ri,_m,Bn,YA],files:[rn,Bu]},rewriteGeneratedPath(e){return e===Sr?rn:e.startsWith(`${_r}/`)?e.replace(`${_r}/`,`${ri}/`):e.startsWith(`${tn}/`)?e.replace(`${tn}/`,`${Bn}/`):e===Ul?Bu:e===ym?null:e},mirrorGlobalPath(e,t){return ge(e,Bn,t)},paths:{rulePath(e,t){return e==="_root"?rn:`${ri}/${e}.md`},commandPath(e,t){return `${_m}/${e}.md`},agentPath(e,t){return null}}},v5={rules:"native",additionalRules:"native",commands:"native",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},Rh={id:en,metadata:{displayName:"Trae",category:"ide",officialUrl:"https://www.trae.ai",shortDescription:"ByteDance's adaptive AI IDE"},generators:P5,capabilities:{rules:"native",additionalRules:"native",commands:"native",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"none"},emptyImportMessage:"No Trae config found (.trae/rules/project_rules.md, .trae/rules/*.md, .trae/skills/, .trae/mcp.json, or .trae/.ignore).",lintRules:P0,project:D5,globalSupport:{capabilities:v5,detectionPaths:[rn,ri,Bn,Bu],layout:N5},importer:{commands:{feature:"commands",mode:"directory",source:{project:[ga],global:[_m]},canonicalDir:XA,extensions:[".md"],preset:"command"},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Ul],global:[Bu]},canonicalDir:".agentsmesh",canonicalFilename:QA},ignore:{feature:"ignore",mode:"flatFile",source:{project:[ym]},canonicalDir:".agentsmesh",canonicalFilename:qA}},buildImportPaths:NR,detectionPaths:[_r,Ul,Sr]};});function N0(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(Fo)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Kn,content:o}]:[]}function v0(e){return ae(e,bt)}function F0(e){return e.commands.map(t=>({path:`${bt}/${Z(t.name)}/SKILL.md`,content:Xe(t)}))}function M0(e){return e.agents.map(t=>({path:`${bt}/${V(t.name)}/SKILL.md`,content:je(t)}))}function G0(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:ha,content:t}]}function $0(e){return []}var j0=d(()=>{ie();Be();Se();$e();Rm();s(N0,"generateRules");s(v0,"generateSkills");s(F0,"generateCommands");s(M0,"generateAgents");s(G0,"generateMcp");s($0,"generatePermissions");});async function U0(e,t={}){let r=t.scope??"project",n=[],o=await H(Fo,e,r);return n.push(...await X(Ih,e,r,{normalize:o})),await oe(e,r==="global"?Rr:bt,Fo,n,o),n}var B0=d(()=>{he();ie();Ae();Rm();Mk();s(U0,"importFromWarp");});function K0(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Fo}))}var W0=d(()=>{Oe();Rm();s(K0,"lintRules");});function H0(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[M(".agentsmesh/hooks.yaml","warp","Warp has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function z0(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[M(".agentsmesh/permissions.yaml","warp","Warp permissions are managed via Agent Profiles in the Warp UI (Agent Profiles \u2192 Allowed/Blocked commands); canonical permissions are not projected as config files.")]}function V0(e){return e.ignore.length===0?[]:[M(".agentsmesh/ignore","warp","Warp has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}var J0=d(()=>{Ie();s(H0,"lintHooks");s(z0,"lintPermissions");s(V0,"lintIgnore");});var F5,M5,G5,$5,j5,Ih,Mk=d(()=>{$e();Se();j0();gt();B0();W0();J0();we();Rm();F5={name:Fo,primaryRootInstructionPath:Kn,generateRules:N0,generateCommands:F0,generateAgents:M0,generateSkills:v0,generateMcp:G0,generatePermissions:$0,importFrom:U0},M5={rootInstructionPath:Kn,skillDir:bt,managedOutputs:{dirs:[bt],files:[Kn,ha]},paths:{rulePath(e){return Kn},commandPath(e){return `${bt}/${Z(e)}/SKILL.md`},agentPath(e){return `${bt}/${V(e)}/SKILL.md`}}},G5={rootInstructionPath:void 0,skillDir:Rr,managedOutputs:{dirs:[Rr],files:[]},rewriteGeneratedPath(e){return e.startsWith(`${bt}/`)?e.replace(`${bt}/`,`${Rr}/`):e},mirrorGlobalPath(e,t){return ge(e,Rr,t)},paths:{rulePath(){return null},commandPath(e){return `${Rr}/${Z(e)}/SKILL.md`},agentPath(e){return `${Rr}/${V(e)}/SKILL.md`}}},$5={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"partial"},j5={rules:"none",additionalRules:"none",commands:"none",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"none",permissions:"partial"},Ih={id:Fo,metadata:{displayName:"Warp",category:"cli",officialUrl:"https://www.warp.dev",shortDescription:"AI-powered terminal"},generators:F5,capabilities:$5,emptyImportMessage:"No Warp config found (WARP.md, AGENTS.md, .warp/skills, or .mcp.json).",lintRules:K0,lint:{hooks:H0,permissions:z0,ignore:V0},supportsConversion:{commands:true,agents:true},project:M5,globalSupport:{capabilities:j5,detectionPaths:[Rr],layout:G5},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[vR,Kn]},canonicalDir:eT,canonicalRootFilename:"_root.md",markAsRoot:true},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[ha]},canonicalDir:".agentsmesh",canonicalFilename:"mcp.json"}},buildImportPaths:FR,detectionPaths:[Kn,vR,ha],conversionDefaults:{commandsToSkills:true,agentsToSkills:true}};});var Jo,Gk,Ca,Y0,Mm,Yo,Gm,$m,X0,Oa,Vn,jm,$k,Q0,q0,jk,Uk,Bk,Um,Bm,od,kh,Lh,Eh,Z0,jt=d(()=>{Jo="windsurf",Gk=".windsurfrules",Ca=".windsurf/rules",Y0=".windsurfignore",Mm=".codeiumignore",Yo="AGENTS.md",Gm=".windsurf/hooks.json",$m=".windsurf/mcp_config.example.json",X0=".windsurf/mcp_config.json",Oa=".windsurf/workflows",Vn=".windsurf/skills",jm=".agentsmesh/rules",$k=".agentsmesh/commands",Q0=".agentsmesh/agents",q0=".agentsmesh/skills",jk=".agentsmesh/ignore",Uk=".agentsmesh/hooks.yaml",Bk=".agentsmesh/mcp.json",Um=".codeium/windsurf/memories/global_rules.md",Bm=".codeium/windsurf/skills",od=".codeium/windsurf/global_workflows",kh=".codeium/windsurf/hooks.json",Lh=".codeium/windsurf/mcp_config.json",Eh=".codeium/.codeiumignore",Z0=".agents/skills";});function B5(e){let t=basename(e,".md");return t==="_root"?"root":t}function K5(e){if(e.length===0)return null;let t=e.map(r=>r.split("/")[0]??"").filter(r=>/^[A-Za-z0-9._-]+$/.test(r));return t.length!==e.length?null:t.every(r=>r===t[0])?t[0]:null}function Kk(e){let t=[],r=e.rules.find(n=>n.root);if(!r)return [];t.push({path:Yo,content:r.body.trim()});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes("windsurf"))continue;let o=B5(n.source),i=n.trigger||(n.globs.length>0?"glob":void 0),a={description:n.description||void 0,trigger:i,glob:n.globs.length===1?n.globs[0]:void 0,globs:n.globs.length>1?n.globs:void 0};Object.keys(a).forEach(m=>{a[m]===void 0&&delete a[m];});let l=Object.keys(a).length>0?x(a,n.body.trim()||""):n.body.trim()||"";t.push({path:`${Ca}/${o}.md`,content:l});let c=K5(n.globs);c&&(c!==o&&t.push({path:`${Ca}/${c}.md`,content:l}),t.push({path:`${c}/AGENTS.md`,content:n.body.trim()||""}));}return t}var eU=d(()=>{U();jt();s(B5,"ruleSlug");s(K5,"directoryScopedRuleDir");s(Kk,"generateRules");});function Wk(e){return !e.ignore||e.ignore.length===0?[]:[{path:Mm,content:e.ignore.join(`
|
|
154
|
+
`)}]}var tU=d(()=>{jt();s(Wk,"generateIgnore");});function Hk(e){return e.commands.map(t=>{let r={description:t.description.trim()||void 0,allowedTools:t.allowedTools.length>0?t.allowedTools:void 0};Object.keys(r).forEach(o=>{r[o]===void 0&&delete r[o];});let n=Object.keys(r).length>0?x(r,t.body.trim()||""):t.body.trim();return {path:`${Oa}/${t.name}.md`,content:n}})}var rU=d(()=>{U();jt();s(Hk,"generateCommands");});function zk(e){return e.agents.map(t=>({path:`${Vn}/${V(t.name)}/SKILL.md`,content:je(t)}))}var nU=d(()=>{Se();jt();s(zk,"generateAgents");});function Vk(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:$m,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}var oU=d(()=>{jt();s(Vk,"generateMcp");});function W5(e){let t={PreToolUse:"pre_tool_use",PostToolUse:"post_tool_use",Notification:"notification",UserPromptSubmit:"user_prompt_submit",SubagentStart:"subagent_start",SubagentStop:"subagent_stop"};return t[e]?t[e]:e.replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/[-\s]+/g,"_").toLowerCase()}function H5(e){let t={};for(let[r,n]of Object.entries(e)){if(!Array.isArray(n))continue;let o=[];for(let i of n){if(!ms(i))continue;let a=It(i),l=to(i),c=i.type==="prompt"?l||a:a||l;c&&o.push({command:c,show_output:true});}o.length>0&&(t[W5(r)]=o);}return t}function Jk(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=H5(e.hooks);return Object.keys(t).length===0?[]:[{path:Gm,content:JSON.stringify({hooks:t},null,2)}]}var sU=d(()=>{gn();jt();s(W5,"windsurfEventName");s(H5,"toWindsurfHooks");s(Jk,"generateHooks");});function Yk(e){let t=[];for(let r of e.skills){let n={name:r.name,description:r.description||void 0};n.description===void 0&&delete n.description;let o=Object.keys(n).length>0?x(n,r.body.trim()||""):r.body.trim()||"";t.push({path:`${Vn}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles)t.push({path:`${Vn}/${r.name}/${i.relativePath}`,content:i.content});}return t}var iU=d(()=>{U();jt();s(Yk,"generateSkills");});var aU=d(()=>{eU();tU();rU();nU();oU();sU();iU();});var lU=d(()=>{aU();});function cU(e){return Array.isArray(e)?e.filter(t=>typeof t=="string").map(t=>t.trim()).filter(Boolean):typeof e=="string"?e.split(",").map(t=>t.trim()).filter(Boolean):[]}async function mU(e,t,r){let n=join(e,Oa),i=(await B(n)).filter(l=>l.endsWith(".md")),a=join(e,$k);for(let l of i){let c=await I(l);if(!c)continue;let m=relative(n,l).replace(/\\/g,"/");await O(a);let p=join(a,m),u=r(c,l,p),{frontmatter:f,body:g}=T(u),h=await Ce(p,{description:typeof f.description=="string"?f.description:"",hasDescription:Object.prototype.hasOwnProperty.call(f,"description"),allowedTools:(()=>{let y=cU(f.allowedTools);return y.length>0?y:cU(f["allowed-tools"])})(),hasAllowedTools:Object.prototype.hasOwnProperty.call(f,"allowedTools")||Object.prototype.hasOwnProperty.call(f,"allowed-tools")},g);await L(p,h),t.push({fromTool:Jo,fromPath:l,toPath:`${$k}/${m}`,feature:"commands"});}}var pU=d(()=>{b();U();de();jt();s(cU,"toStringArray");s(mU,"importWorkflows");});async function uU(e,t,r,n=Vn){await Lm([n],{projectRoot:e,destCanonicalSkillsDir:q0,targetName:"windsurf",normalize:r,results:t},[Em({canonicalAgentsDir:Q0})]);}var dU=d(()=>{Cm();jt();s(uU,"importSkills");});async function gU(e,t){let r=join(e,Gm),n=await I(r);if(n)try{let o=JSON.parse(n);if(!o.hooks||typeof o.hooks!="object"||Array.isArray(o.hooks))return;let i=Y5(o.hooks);if(Object.keys(i).length===0)return;let a=join(e,Uk);await O(dirname(a)),await L(a,stringify(i)),t.push({fromTool:Jo,fromPath:r,toPath:Uk,feature:"hooks"});}catch{}}function J5(e){return {pre_tool_use:"PreToolUse",post_tool_use:"PostToolUse",notification:"Notification",user_prompt_submit:"UserPromptSubmit",subagent_start:"SubagentStart",subagent_stop:"SubagentStop"}[e]??e}function Y5(e){let t={};for(let[r,n]of Object.entries(e)){if(!Array.isArray(n))continue;let o=J5(r),i=[];for(let a of n){if(!a||typeof a!="object")continue;let l=a;if(typeof l.command=="string"&&l.command.trim()){i.push({matcher:".*",type:"command",command:l.command});continue}let c=typeof l.matcher=="string"&&l.matcher.trim()?l.matcher:".*",m=Array.isArray(l.hooks)?l.hooks:[];for(let p of m){if(!p||typeof p!="object")continue;let u=p,f=typeof u.command=="string"?u.command:typeof u.prompt=="string"?u.prompt:"";if(!f.trim())continue;let g={matcher:c,type:u.type==="prompt"?"prompt":"command",command:f};typeof u.timeout=="number"&&(g.timeout=u.timeout),i.push(g);}}i.length>0&&(t[o]=i);}return t}async function hU(e,t){let r=[$m,X0];for(let n of r){let o=join(e,n),i=await I(o);if(i)try{let a=JSON.parse(i);if(!a.mcpServers||typeof a.mcpServers!="object")continue;let l=join(e,Bk);await O(dirname(l)),await L(l,JSON.stringify({mcpServers:a.mcpServers},null,2)),t.push({fromTool:Jo,fromPath:o,toPath:Bk,feature:"mcp"});return}catch{}}}var yU=d(()=>{b();jt();s(gU,"importWindsurfHooks");s(J5,"canonicalHookEventName");s(Y5,"windsurfHooksToCanonical");s(hU,"importWindsurfMcp");});async function _U(e,t){let r=t?.scope??"project",n=[],o=await H(Jo,e),i=await H("codex-cli",e),a=join(e,jm),l=join(e,Gk),c=await I(l);if(c!==null){await O(a);let f=join(a,"_root.md"),g=o(c,l,f).trim(),h=await z(f,{root:true},g);await L(f,h),n.push({fromTool:"windsurf",fromPath:l,toPath:`${jm}/_root.md`,feature:"rules"});}if(c===null){let f=join(e,Yo),g=await I(f);if(g!==null){await O(a);let h=join(a,"_root.md"),y=o(i(g,f,h),f,h).trim(),_=await z(h,{root:true},y);await L(h,_),n.push({fromTool:"windsurf",fromPath:f,toPath:`${jm}/_root.md`,feature:"rules"});}}r!=="global"&&n.push(...await Re({srcDir:e,destDir:a,extensions:["AGENTS.md"],fromTool:"windsurf",normalize:o,mapEntry:s(async({srcPath:f,normalizeTo:g})=>{let h=relative(e,dirname(f)).replace(/\\/g,"/");if(!h||h==="."||basename(f)!=="AGENTS.md")return null;let y=h.replace(/\//g,"-");if(!Uf(h))return await no(join(a,`${y}.md`)),null;let _=join(a,`${y}.md`);return {destPath:_,toPath:`${jm}/${y}.md`,feature:"rules",content:await z(_,{root:false,globs:[`${h}/**`]},g(_))}},"mapEntry")}));let m=join(e,Ca);n.push(...await Re({srcDir:m,destDir:a,extensions:[".md"],fromTool:"windsurf",normalize:o,mapEntry:s(async({relativePath:f,normalizeTo:g})=>{if(f==="_root.md"&&c!==null)return null;let h=join(a,f),{frontmatter:y,body:_}=T(g(h)),R={...y};return typeof R.glob=="string"&&R.glob.trim()&&(R.globs=[R.glob],delete R.glob),{destPath:h,toPath:`${jm}/${f}`,feature:"rules",content:await z(h,{...R,root:false},_)}},"mapEntry")}));let p=join(e,Y0),u=await I(p);if((u===null||!u.trim())&&(p=join(e,Mm),u=await I(p)),u!==null&&u.trim()){let f=u.split(/\r?\n/),g=[];for(let h of f){let y=h.trim();y&&!y.startsWith("#")&&g.push(y);}if(g.length>0){await O(join(e,".agentsmesh"));let h=join(e,jk);await L(h,g.join(`
|
|
155
|
+
`)),n.push({fromTool:"windsurf",fromPath:p,toPath:jk,feature:"ignore"});}}return await mU(e,n,o),await uU(e,n,o),await gU(e,n),await hU(e,n),n}var SU=d(()=>{he();b();U();de();nr();Xp();jt();pU();dU();yU();s(_U,"importFromWindsurf");});function RU(e,t,r){let n=[],{rules:o}=e;o.length>0&&(o.some(l=>l.root)||n.push({level:"warning",file:relative(t,o[0].source),target:Jo,message:"Windsurf needs a root rule to generate AGENTS.md. Add root: true to a rule."}));let i=[];return e.permissions&&(e.permissions.allow.length>0||e.permissions.deny.length>0)&&i.push("permissions"),i.length>0&&n.push({level:"warning",file:".agentsmesh",target:Jo,message:`Windsurf cannot project these features yet: ${i.join(", ")}.`}),n}var IU=d(()=>{jt();s(RU,"lintRules");});function kU(e){return e.commands.filter(t=>t.description.length>0||t.allowedTools.length>0).map(t=>M(t.source,"windsurf","windsurf workflow files are plain Markdown; command description and allowed-tools metadata are not projected."))}function LU(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[M(".agentsmesh/mcp.json","windsurf","Windsurf MCP is partial; generated .windsurf/mcp_config.example.json is a reference artifact and may require manual setup.")]}var EU=d(()=>{Ie();s(kU,"lintCommands");s(LU,"lintMcp");});function e6(e){if(e.length===0)return null;let t=e.map(r=>r.split("/")[0]??"").filter(r=>/^[A-Za-z0-9._-]+$/.test(r));return t.length!==e.length?null:t.every(r=>r===t[0])?t[0]:null}var t6,r6,n6,o6,CU,OU=d(()=>{lU();Za();jt();gt();SU();IU();EU();we();Wp();Se();s(e6,"directoryScopedRuleDir");t6={name:"windsurf",primaryRootInstructionPath:Yo,generateRules:Kk,generateCommands:Hk,generateAgents:zk,generateSkills:Yk,generateMcp:Vk,generateHooks:Jk,generateIgnore:Wk,importFrom:_U},r6={rootInstructionPath:Yo,extraRuleOutputPaths(e){if(e.root)return [Yo];let t=e6(e.globs);return t!==null?[`${t}/AGENTS.md`]:[]},skillDir:Vn,managedOutputs:{dirs:[".windsurf/rules",".windsurf/skills",".windsurf/workflows"],files:["AGENTS.md",".codeiumignore",".windsurf/hooks.json",".windsurf/mcp_config.example.json"]},paths:{rulePath(e,t){return `${Ca}/${e}.md`},commandPath(e,t){return `${Oa}/${e}.md`},agentPath(e,t){return ds(t,"windsurf")?`.windsurf/skills/${V(e)}/SKILL.md`:null}}},n6={rootInstructionPath:Um,skillDir:Bm,managedOutputs:{dirs:[Bm,od,Z0],files:[Um,kh,Lh,Eh]},rewriteGeneratedPath(e){return e===Yo?Um:e.startsWith(`${Ca}/`)||/\/AGENTS\.md$/.test(e)?null:e.startsWith(`${Vn}/`)?e.replace(`${Vn}/`,`${Bm}/`):e.startsWith(`${Oa}/`)?e.replace(`${Oa}/`,`${od}/`):e===Gm?kh:e===$m?Lh:e===Mm?Eh:e},mirrorGlobalPath(e,t){return ge(e,".codeium/windsurf/skills",t)},paths:{rulePath(e,t){return Um},commandPath(e,t){return `${od}/${e}.md`},agentPath(e,t){return ds(t,"windsurf")?`${Bm}/${V(e)}/SKILL.md`:null}}},o6={rules:"native",additionalRules:"partial",commands:yn("native","workflows"),agents:"embedded",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},CU={id:"windsurf",metadata:{displayName:"Windsurf",category:"ide",officialUrl:"https://windsurf.com",shortDescription:"Codeium's agentic IDE"},generators:t6,capabilities:{rules:"native",additionalRules:"native",commands:yn("native","workflows"),agents:"embedded",skills:"native",mcp:"partial",hooks:"native",ignore:"native",permissions:"none"},emptyImportMessage:"No Windsurf config found (.windsurfrules, .windsurf/rules, .windsurfignore, or .codeiumignore).",supportsConversion:{agents:true},lintRules:RU,lint:{commands:kU,mcp:LU},project:r6,globalSupport:{capabilities:o6,detectionPaths:[Um,Bm,od,kh,Lh,Eh],layout:n6},buildImportPaths:MR,detectionPaths:[".windsurfrules",".windsurf"],nativeInstall:{pickPaths:[{prefix:".windsurf/rules",feature:"rules",strategy:{kind:"basename",suffix:".md"}}],dialectHints:[{frontmatterKey:"trigger"}]},conversionDefaults:{agentsToSkills:true}};});function wU(e){return ae(e,Go)}function bU(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes("zed")),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Wn,content:o}]:[]}var AU=d(()=>{ie();Be();Bl();s(wU,"generateSkills");s(bU,"generateRules");});async function xU(e,t,r){let n=await I(join(e,t));if(n===null)return;let o;try{o=JSON.parse(n);}catch{return}if(o===null||typeof o!="object"||Array.isArray(o))return;let a=o.context_servers;if(a==null||typeof a!="object"||Array.isArray(a)||Object.keys(a).length===0)return;let l={};for(let[c,m]of Object.entries(a)){if(!m||typeof m!="object"||Array.isArray(m))continue;let p={...m};delete p.source,l[c]=p;}Object.keys(l).length!==0&&(await Qe(e,TU,l),r.push({fromTool:"zed",fromPath:t,toPath:TU,feature:"mcp"}));}var TU,PU=d(()=>{b();In();Bl();TU=".agentsmesh/mcp.json";s(xU,"importZedMcp");});async function DU(e,t={}){let r=t.scope??"project",n=[],o=await H("zed",e,r);return n.push(...await X(Oh,e,r,{normalize:o})),r==="project"&&await oe(e,Go,"zed",n,o),await xU(e,r==="global"?$o:Mo,n),n}var NU=d(()=>{he();ie();Ae();PU();Bl();Qk();s(DU,"importFromZed");});function vU(e,t,r,n){return J(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:"zed"}))}var FU=d(()=>{Oe();Bl();s(vU,"lintRules");});function MU(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[M(".agentsmesh/hooks.yaml","zed","Zed has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function GU(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[M(".agentsmesh/permissions.yaml","zed","Zed permissions are managed via agent.tool_permissions in settings.json; canonical permissions are not projected.")]}function $U(e){return e.ignore.length===0?[]:[M(".agentsmesh/ignore","zed","Zed has no dedicated ignore file and relies on file_scan_exclusions in settings.json; canonical ignore patterns are not projected.")]}var jU=d(()=>{Ie();s(MU,"lintHooks");s(GU,"lintPermissions");s($U,"lintIgnore");});function p6(e,t){if(e===null)return t;let r;try{let i=JSON.parse(e);r=i!==null&&typeof i=="object"&&!Array.isArray(i)?i:{};}catch{r={};}let n=JSON.parse(t);if(n===null||typeof n!="object"||Array.isArray(n))return e;let o=n;return o.context_servers!==void 0&&(r.context_servers=o.context_servers),JSON.stringify(r,null,2)}var i6,a6,l6,c6,m6,Oh,Qk=d(()=>{AU();NU();FU();jU();we();Bl();i6={name:"zed",primaryRootInstructionPath:Wn,generateRules:bU,generateSkills:wU,importFrom:DU},a6={rootInstructionPath:Wn,skillDir:Go,managedOutputs:{dirs:[Go],files:[Wn,Mo]},paths:{rulePath(e){return Wn},commandPath(){return null},agentPath(){return null}}},l6={rootInstructionPath:void 0,managedOutputs:{dirs:[],files:[$o]},rewriteGeneratedPath(e){return e===Mo?$o:e},paths:{rulePath(){return $o},commandPath(){return null},agentPath(){return null}}},c6={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},m6={rules:"none",additionalRules:"none",commands:"none",agents:"none",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"};s(p6,"mergeZedSettings");Oh={id:"zed",metadata:{displayName:"Zed",category:"ide",officialUrl:"https://zed.dev",shortDescription:"Collaborative AI editor"},generators:i6,capabilities:c6,emptyImportMessage:"No Zed config found (.rules or .zed/settings.json).",lintRules:vU,lint:{hooks:MU,permissions:GU,ignore:$U},project:a6,globalSupport:{capabilities:m6,detectionPaths:[$o],layout:l6},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Wn],global:[]},canonicalDir:nT,canonicalRootFilename:"_root.md",markAsRoot:true}},emitScopedSettings(e,t,r){if(!r.has("mcp"))return [];if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let n={};for(let[o,i]of Object.entries(e.mcp.mcpServers))n[o]=i;return [{path:Mo,content:JSON.stringify({context_servers:n},null,2)}]},mergeGeneratedOutputContent(e,t,r,n){return n===Mo||n===$o?p6(e,r):null},sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:GR,detectionPaths:[Wn,Mo]};});var Ab={};w_(Ab,{BUILTIN_TARGETS:()=>Ne,TARGET_IDS:()=>Ue,getBuiltinTargetDefinition:()=>sn,getEffectiveTargetSupportLevel:()=>wh,getTargetCapabilities:()=>gi,getTargetDetectionPaths:()=>Zk,getTargetLayout:()=>We,getTargetManagedOutputs:()=>eL,getTargetPrimaryRootInstructionPath:()=>f6,getTargetSkillDir:()=>sd,isBuiltinTargetId:()=>Kt,resolveTargetFeatureGenerator:()=>Km,rewriteGeneratedOutputPath:()=>tL});function d6(){return qk||(mw(Ne),qk=new Map(Ne.map(e=>[e.id,e]))),qk}function sn(e){return d6().get(e)}function gi(e,t="project"){let r=sn(e)??ne(e);if(!r)return;if(t==="global"&&!r.globalSupport)return rS(u6);let n=t==="global"?r.globalSupport.capabilities:r.capabilities;return rS(n)}function Zk(e,t="project"){let r=sn(e)??ne(e);return r?t==="global"?r.globalSupport?.detectionPaths??[]:r.detectionPaths:[]}function We(e,t="project"){let r=sn(e)??ne(e);if(r)return t==="global"?r.globalSupport?.layout:r.project}function f6(e,t="project"){return We(e,t)?.rootInstructionPath}function sd(e,t="project"){return We(e,t)?.skillDir}function eL(e,t="project"){return We(e,t)?.managedOutputs}function tL(e,t,r="project"){let n=We(e,r);return n?n.rewriteGeneratedPath?n.rewriteGeneratedPath(t):t:null}function UU(e,t,r,n){if(!e||!r)return false;let o=gi(e.id,n)?.[t]?.level??"none";return o==="native"||o==="partial"?false:t==="commands"&&e.supportsConversion?.commands?!vc(r,e.id,true,n):t==="agents"&&e.supportsConversion?.agents?!ds(r,e.id,true,n):false}function g6(e,t,r,n){return !e||!r?false:t==="commands"&&e.supportsConversion?.commands?vc(r,e.id,true,n):t==="agents"&&e.supportsConversion?.agents?ds(r,e.id,true,n):false}function wh(e,t,r,n="project"){let o=gi(e,n)?.[t]?.level??"none",i=sn(e)??ne(e);return n==="global"&&i&&!i.globalSupport?"none":o==="none"&&g6(i,t,r,n)?"embedded":o!=="embedded"?o:UU(i,t,r,n)?"none":o}function Km(e,t,r,n="project"){let o=sn(e)??ne(e);if(!o?.generators||UU(o,t,r,n))return;let i=h6[t];return i===null?void 0:i(o.generators)}var u6,Ne,qk,h6,Te=d(()=>{Wp();Za();ot();nS();pn();kS();$R();jR();BR();xx();zR();WP();$D();_I();CI();AI();zI();VI();JI();dk();gk();hk();yk();kk();Ek();wk();Tk();xk();Pk();Nk();vk();Fk();Mk();OU();Qk();u6={rules:"none",additionalRules:"none",commands:"none",agents:"none",skills:"none",mcp:"none",hooks:"none",ignore:"none",permissions:"none"},Ne=[Hf,Sg,Rg,Ig,Tx,kg,KP,GD,Ag,vg,Gg,Jg,Yg,Xg,oh,sh,ih,ah,mh,ph,dh,fh,gh,hh,_h,Sh,Rh,Ih,CU,Oh];s(d6,"builtinTargetsMap");s(sn,"getBuiltinTargetDefinition");s(gi,"getTargetCapabilities");s(Zk,"getTargetDetectionPaths");s(We,"getTargetLayout");s(f6,"getTargetPrimaryRootInstructionPath");s(sd,"getTargetSkillDir");s(eL,"getTargetManagedOutputs");s(tL,"rewriteGeneratedOutputPath");s(UU,"isFeatureSuppressedByConversion");s(g6,"isConversionUpgrading");s(wh,"getEffectiveTargetSupportLevel");h6={rules:s(e=>e.generateRules,"rules"),additionalRules:null,commands:s(e=>e.generateCommands,"commands"),agents:s(e=>e.generateAgents,"agents"),skills:s(e=>e.generateSkills,"skills"),mcp:s(e=>e.generateMcp,"mcp"),permissions:s(e=>e.generatePermissions,"permissions"),hooks:s(e=>e.generateHooks,"hooks"),ignore:s(e=>e.generateIgnore,"ignore")};s(Km,"resolveTargetFeatureGenerator");});function S6(e,t){return e.uniqueHits!==t.uniqueHits?t.uniqueHits-e.uniqueHits:e.sharedScore!==t.sharedScore?t.sharedScore-e.sharedScore:e.id.localeCompare(t.id)}async function bh(e){let t=[];for(let n of Ne){let o=0,i=0;for(let a of n.detectionPaths){if(!await j(join(e,a)))continue;let l=_6.get(a)??1;l===1?o+=1:i+=1/l;}(o>0||i>0)&&t.push({id:n.id,uniqueHits:o,sharedScore:i});}if(t.length===0)return null;t.sort(S6);let r=t[0];return r.uniqueHits===0?null:r.id}var _6,BU,rL=d(()=>{b();Te();_6=(()=>{let e=new Map;for(let t of Ne)for(let r of t.detectionPaths)e.set(r,(e.get(r)??0)+1);return e})();s(S6,"compare");s(bh,"detectNativeFormat");BU=Ne.map(e=>e.detectionPaths[0]).filter(e=>e!==void 0);});async function id(e,t){let r=ne(t);if(!r)throw new Error(`No importer registered for native target: ${t}`);return r.generators.importFrom(e)}var nL=d(()=>{ot();s(id,"importNativeToCanonical");});async function rc(e){if(!await j(e))return false;if(await j(join(e,sL)))return true;try{let t=await readdir(e,{withFileTypes:!0});for(let r of t)if(!(!r.isDirectory()||r.name.startsWith("."))&&await j(join(e,r.name,sL)))return !0}catch{return false}return false}async function ad(e,t={}){if(!await j(e))return [];if(await j(join(e,sL))){let r=await Of(e,t);return r?[r]:[]}return Fi(e,t)}var sL,Ah=d(()=>{b();Pc();sL="SKILL.md";s(rc,"isSkillPackLayout");s(ad,"loadSkillsAtExtendPath");});async function Th(e,t={}){return (await vi(e,t)).filter(n=>!eo(basename(n.source)))}async function xh(e,t={}){return (await Ni(e,t)).filter(n=>!eo(basename(n.source)))}async function Ph(e,t={}){return (await Di(e,t)).filter(n=>!eo(basename(n.source)))}async function KU(e,t={}){return Fi(e,t)}var Dh=d(()=>{Bp();Up();jp();Pc();cs();s(Th,"importAgents");s(xh,"importCommands");s(Ph,"importRules");s(KU,"importSkills");});function aL(e,t){let r=e?.[t];if(!r)return [];let n=Array.isArray(r)?r:[r],o=[];for(let i of n)i.mode!=="directory"||!i.map||!i.extensions||o.push({extensions:i.extensions,map:i.map});return o}function lL(e){return e.toLowerCase().endsWith(".md")}function HU(e,t){for(let r of aL(ne(e)?.importer,t))if(r.extensions.some(n=>!lL(n)))return true;return false}function w6(e,t){let r=new Set;for(let n of aL(ne(e)?.importer,t))for(let o of n.extensions)lL(o)||r.add(o.toLowerCase());return r}function b6(e){return Nf().filter(t=>HU(t,e))}async function x6(e,t,r){return A6[e](t,r)}async function P6(e,t,r){return T6[e](t,r)}async function D6(e,t,r,n={}){let o=aL(ne(t)?.importer,r),i=await B(e),a=new Set;for(let p of o)for(let u of p.extensions)lL(u)||a.add(u.toLowerCase());let l=i.filter(p=>[...a].some(u=>p.toLowerCase().endsWith(u))&&!eo(basename(p)));if(l.length===0)return {entities:[],cleanup:s(async()=>{},"cleanup")};let c=await mkdtemp(join(tmpdir(),`am-tool-${r}-${t}-`)),m=s(async()=>{await rm$1(c,{recursive:true,force:true});},"cleanup");try{for(let u of l){let f=await I(u);if(f===null)continue;let g=relative(e,u).replaceAll("\\","/"),h=null;for(let y of o){if(!y.extensions.some(k=>u.toLowerCase().endsWith(k.toLowerCase())))continue;let R=await y.map({absolutePath:u,relativePath:g,content:f,destDir:c,normalizeTo:s(()=>f,"normalizeTo")});if(R){h=R;break}}h&&(await O(dirname(h.destPath)),await L(h.destPath,h.content));}return {entities:await x6(r,c,n),cleanup:m}}catch(p){throw await m(),p}}async function cL(e,t,r={}){let n=r.restrictToTarget,o=n?HU(n,t)?[n]:[]:b6(t),i=new Set;for(let f of o)for(let g of w6(f,t))i.add(g);let a=await P6(t,e,{...r.parseOpts,handledByOtherReader:i.size>0?i:void 0}),l=[],c=s(f=>basename(f.source).replace(/\.[^.]+$/,""),"slugOf"),m=new Map;for(let f of a)m.set(c(f),f);for(let f of o){let g=await D6(e,f,t,r.parseOpts??{});l.push(g.cleanup);for(let h of g.entities){let y=c(h);m.has(y)||m.set(y,h);}}return {entities:[...m.values()].sort((f,g)=>c(f).localeCompare(c(g))),cleanup:s(async()=>{await Promise.allSettled(l.map(f=>f()));},"cleanup")}}async function Nh(e,t={}){let r=await cL(e,"commands",t);return {commands:[...r.entities],cleanup:r.cleanup}}async function vh(e,t={}){let r=await cL(e,"rules",t);return {rules:[...r.entities],cleanup:r.cleanup}}async function Fh(e,t={}){let r=await cL(e,"agents",t);return {agents:[...r.entities],cleanup:r.cleanup}}var A6,T6,Mh=d(()=>{Bp();Up();jp();b();ot();cs();Dh();s(aL,"directorySpecsFor");s(lL,"isMarkdownExtension");s(HU,"hasNonMdEntityMapper");s(w6,"nonMdEntityExtensions");s(b6,"targetsWithNonMdEntityMapper");A6={rules:Di,commands:Ni,agents:vi},T6={rules:Ph,commands:xh,agents:Th};s(x6,"parseEntityDir");s(P6,"importEntities");s(D6,"readToolNativeEntities");s(cL,"readEntityDirWithMappers");s(Nh,"readCommandsDirWithMappers");s(vh,"readRulesDirWithMappers");s(Fh,"readAgentsDirWithMappers");});function F6(){return {rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}function M6(e){return e.rules.length===0&&e.commands.length===0&&e.agents.length===0&&e.skills.length===0&&e.mcp===null&&e.permissions===null&&e.hooks===null&&e.ignore.length===0}async function Gh(e){if(!await j(e))throw new Error(`Path does not exist: ${e}`);let t=await stat(e);if(t.isDirectory())return {sliceRoot:e};if(!t.isFile()||!e.toLowerCase().endsWith(".md"))throw new Error(`Install path must be a directory or a .md file inside rules/, commands/, or agents/: ${e}`);let r=dirname(e),n=basename(r),i=basename(e).replace(/\.md$/i,"");if(n==="rules")return {sliceRoot:r,implicitPick:{rules:[i]}};if(n==="commands")return {sliceRoot:r,implicitPick:{commands:[i]}};if(n==="agents")return {sliceRoot:r,implicitPick:{agents:[i]}};throw new Error(`Single-file install only supports .md files under rules/, commands/, or agents/. Got: ${e}`)}async function uL(e,t){if(basename(e)===t)return e;let r=join(e,t);return await j(r)?r:null}async function G6(e,t,r){let n=s(async()=>{},"noop"),o=await uL(e,"rules");if(!o)return {rules:[],cleanup:n};if(!r)return {rules:await Ph(o,t),cleanup:n};let i=await vh(o,{parseOpts:t});return {rules:[...i.rules],cleanup:i.cleanup}}async function $6(e,t,r){let n=s(async()=>{},"noop"),o=await uL(e,"commands");if(!o)return {commands:[],cleanup:n};if(!r)return {commands:await xh(o,t),cleanup:n};let i=await Nh(o,{parseOpts:t});return {commands:[...i.commands],cleanup:i.cleanup}}async function j6(e,t,r){let n=s(async()=>{},"noop"),o=await uL(e,"agents");if(!o)return {agents:[],cleanup:n};if(!r)return {agents:await Th(o,t),cleanup:n};let i=await Fh(o,{parseOpts:t});return {agents:[...i.agents],cleanup:i.cleanup}}async function U6(e,t){if(await rc(e))return ad(e,t);let r=join(e,"skills");return await rc(r)?ad(r,t):[]}async function $h(e,t={}){let r=s(async()=>{},"noop"),n=join(e,".agentsmesh");if(await j(n))return {canonical:await Wt(e,t),cleanup:r};let o=t.enableTargetEntityMappers??false,i=F6(),a=await G6(e,t,o);i.rules=a.rules;let l=await $6(e,t,o);i.commands=l.commands;let c=await j6(e,t,o);i.agents=c.agents,i.skills=await U6(e,t);let m=s(async()=>{await Promise.allSettled([a.cleanup(),l.cleanup(),c.cleanup()]);},"mergedCleanup");if(M6(i))throw await m(),new Error(`No installable resources at ${e}. Expected .agentsmesh/, or rules/, commands/, agents/, or Anthropic-style skills (SKILL.md). Hint: pass --as commands|agents|rules|skills to force a kind for flat markdown directories.`);return {canonical:i,cleanup:m}}var dL=d(()=>{b();Dh();Mh();qa();Ah();s(F6,"emptyCanonical");s(M6,"isCanonicalSliceEmpty");s(Gh,"normalizeSlicePath");s(uL,"resolveEntityDir");s(G6,"parseRulesAt");s($6,"parseCommandsAt");s(j6,"parseAgentsAt");s(U6,"loadSkillsForPartialSlice");s($h,"loadCanonicalSliceAtPath");});async function jh(e){let t=await I(e);if(!t)return "";let r=un(t,e);if(!r.ok)return "";let{frontmatter:n}=r.value;return typeof n.name!="string"?"":n.name.toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}async function zU(e,t){await cp$1(e,t,{recursive:true,filter:s(r=>{let n=relative(e,r).replace(/\\/g,"/");if(n==="")return true;let o=n.split("/")[0];return !(QO(o)||!n.includes("/")&&(Ef(n)||qO(n)))},"filter")});}var fL=d(()=>{b();U();cs();s(jh,"readSkillFrontmatterName");s(zU,"cpFilteredSkill");});function gL(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):typeof e=="string"?e?[e]:[]:[]}function W6(e){let t={...e},r=e.alwaysApply===true;if(t.root=r,delete t.alwaysApply,!r){let n=gL(e.globs),o=typeof e.description=="string"?e.description.trim():"";n.length>0?t.trigger="glob":o.length>0?t.trigger="model_decision":t.trigger="manual";}return t}function H6(e){let t={...e};return t.trigger==="always"&&(t.trigger="always_on"),typeof t.glob=="string"&&(t.globs=gL(t.globs).length>0?gL(t.globs):[t.glob],delete t.glob),t}function hL(e){let t=un(e,"<mdc>");if(!t.ok)return t.bodyFallback;let{frontmatter:r,body:n}=t.value;if(Object.keys(r).length===0&&!e.startsWith("---"))return e;let o;return "alwaysApply"in r?o=W6(r):"trigger"in r||"glob"in r?o=H6(r):o=r,x(o,n.trim())}var VU=d(()=>{U();s(gL,"toStrArray");s(W6,"normalizeCursorKeys");s(H6,"normalizeWindsurfKeys");s(hL,"normalizeMdcToCanonical");});function yL(e){return e.toLowerCase().replace(/[^a-z0-9.-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}function _L(e){return e.toLowerCase().endsWith(".mdc")?basename(e).replace(/\.mdc$/i,".md"):basename(e)}function YU(e,t,r){let o=relative(e,t).replace(/\\/g,"/").split("/");if(o.pop(),o.length===0)return r;let i=yL(o[o.length-1]);return i?`${i}-${r}`:r}var XU=d(()=>{s(yL,"sanitizeNameSegment");s(_L,"computeDestName");s(YU,"namespacedName");});async function X6(){let e=await mkdtemp(join(tmpdir(),"am-install-manual-")),t=join(e,"repo");return await O(join(t,".agentsmesh")),{discoveryRoot:t,cleanup:s(async()=>{await rm$1(e,{recursive:true,force:true});},"cleanup")}}function eB(e,t){let r=e.toLowerCase();return !!(r.endsWith(".md")||t&&r.endsWith(".mdc"))}async function Q6(e,t,r){if(!eB(e,r))throw new Error(`Manual install only supports .md files for this collection: ${e}`);if(await O(t),e.toLowerCase().endsWith(".mdc")){let n=await I(e);if(!n)return;let o=basename(e).replace(/\.mdc$/i,".md");await writeFile(join(t,o),hL(n));}else await cp$1(e,join(t,basename(e)));}async function q6(e,t,r){if((await stat(e)).isFile())return Q6(e,t,r);let o=(await B(e)).filter(l=>eB(l,r)&&!eo(basename(l)));if(o.length===0)throw new Error(`No installable files found under ${e} for manual install. Try a different --path to point at the directory holding *.md (or *.mdc) files, or omit --as so agentsmesh can auto-detect the layout.`);let i=new Map;for(let l of o){let c=_L(l);i.set(c,(i.get(c)??0)+1);}let a=new Map;await O(t);for(let l of o){let c=_L(l),p=(i.get(c)??0)>1?YU(e,l,c):c;if(a.has(p)&&a.get(p)!==l){let f=relative(e,l).replace(/\\/g,"/").split("/").map(yL).filter(Boolean),g=c.includes(".")?"."+c.split(".").pop():"";p=f.join("-").replace(/\.(md|mdc)$/i,"")+g||p;}if(a.has(p))throw new Error(`Manual install could not resolve duplicate name "${p}" under ${e} (${a.get(p)} and ${l}).`);if(a.set(p,l),l.toLowerCase().endsWith(".mdc")){let f=await I(l);if(!f)continue;await writeFile(join(t,p),hL(f));}else await cp$1(l,join(t,p));}}async function QU(e,t,r){if(r.length===0)return false;let n=new Set(r),o=new Map;for(let i of await B(e)){if(!i.endsWith("/SKILL.md")&&!i.endsWith("\\SKILL.md"))continue;let a=dirname(i),l=basename(a);if(!n.has(l))continue;let c=o.get(l);if(c&&c!==a)throw new Error(`Manual skill replay found duplicate skill "${l}" under ${e} (${c} and ${a}).`);o.set(l,a);}if(o.size!==r.length)return false;await O(t);for(let i of r)await cp$1(o.get(i),join(t,i),{recursive:true});return true}async function Z6(e,t,r={}){if((await stat(e)).isFile()){if(basename(e)!=="SKILL.md")throw new Error(`Manual skill install expects SKILL.md or a skill directory: ${e}`);let o=basename(dirname(e)),i=join(t,o);await O(i),await cp$1(dirname(e),i,{recursive:true});return}if(await rc(e)){if((await stat(join(e,"SKILL.md")).catch(()=>null))?.isFile()){if(await QU(e,t,r.preferredSkillNames??[]))return;let l=await jh(join(e,"SKILL.md"))||basename(e),c=join(t,l);await O(t),await zU(e,c);return}if(await QU(e,t,r.preferredSkillNames??[]))return;await O(t);let o=await B(e),i=new Set;for(let a of o.filter(l=>l.endsWith("/SKILL.md")||l.endsWith("\\SKILL.md")))i.add(relative(e,dirname(a)).split(/[\\/]/)[0]);for(let a of i)await cp$1(join(e,a),join(t,a),{recursive:true});return}throw new Error(`Manual skill install expects a skill directory or skills collection at ${e}.`)}async function Bh(e,t,r={}){let n=await X6();try{let o=join(n.discoveryRoot,".agentsmesh",t);return t==="skills"?await Z6(e,o,r):await q6(e,o,t==="rules"),n}catch(o){throw await n.cleanup(),o}}var RL=d(()=>{b();Ah();fL();cs();VU();XU();s(X6,"createStageRoot");s(eB,"isAcceptedFile");s(Q6,"stageSingleFile");s(q6,"stageMarkdownCollection");s(QU,"stagePreferredSkills");s(Z6,"stageSkills");s(Bh,"stageManualInstallScope");});function e4(){return {rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}async function tB(e){let t=e.resolvedPath;if(e.as!==void 0){let o=e.path?join(t,e.path):t;if(!await j(o))throw new Error(`Extend "${e.name}": path does not exist: ${o}`);let i=await Bh(o,e.as);try{return Wt(join(i.discoveryRoot,".agentsmesh"))}finally{await i.cleanup();}}if(!e.path){let o=join(t,".agentsmesh");if(!await j(o)){if(await rc(t)){let a=await ad(t);return {...e4(),skills:a}}let i=e.target??await bh(t);if(!i)throw new Error(`Extend "${e.name}": No supported agent configuration found in ${t}.
|
|
156
|
+
Expected one of: .agentsmesh/, ${BU.join(", ")}.`);S.info(`[agentsmesh] Extend "${e.name}": ${e.target?"specified":"detected"} ${i} format, importing to .agentsmesh/...`),await id(t,i);}return Wt(t)}let r=join(t,e.path);if(!await j(r))throw new Error(`Extend "${e.name}": path does not exist: ${r}`);if(e.target){let o=join(t,".agentsmesh");return await j(o)||(S.info(`[agentsmesh] Extend "${e.name}": path "${e.path}" with target "${e.target}" \u2014 importing at extend root, then loading canonical.`),await id(t,e.target)),Wt(t)}let{sliceRoot:n}=await Gh(r);try{let{canonical:o}=await $h(n);return o}catch(o){let i=o instanceof Error?o.message:String(o),a=new Error(`Extend "${e.name}": ${i}`);throw o instanceof Error&&(a.cause=o),a}}var rB=d(()=>{rL();b();ue();qa();nL();Ah();dL();RL();s(e4,"emptyCanonical");s(tB,"loadCanonicalForExtend");});function Kh(e,t,r,n){if(!r)return e;let o={...e};if(r.skills?.length&&t.includes("skills")){let i=new Set(r.skills),a=o.skills;o={...o,skills:a.filter(l=>i.has(l.name))};for(let l of r.skills)a.some(c=>c.name===l)||S.warn(`[agentsmesh] pick name "${l}" not found in skills from extend "${n}".`);}if(r.commands?.length&&t.includes("commands")){let i=new Set(r.commands),a=o.commands;o={...o,commands:a.filter(l=>i.has(l.name))};for(let l of r.commands)a.some(c=>c.name===l)||S.warn(`[agentsmesh] pick name "${l}" not found in commands from extend "${n}".`);}if(r.agents?.length&&t.includes("agents")){let i=new Set(r.agents),a=o.agents;o={...o,agents:a.filter(l=>i.has(l.name))};for(let l of r.agents)a.some(c=>c.name===l)||S.warn(`[agentsmesh] pick name "${l}" not found in agents from extend "${n}".`);}if(r.rules?.length&&t.includes("rules")){let i=new Set(r.rules),a=o.rules,l=s(c=>basename(c).replace(/\.md$/i,""),"stem");o={...o,rules:a.filter(c=>i.has(l(c.source)))};for(let c of r.rules)a.some(m=>l(m.source)===c)||S.warn(`[agentsmesh] pick name "${c}" not found in rules from extend "${n}".`);}return o}var IL=d(()=>{ue();s(Kh,"applyExtendPick");});function Wh(e,t){if(t.sourceKind==="local")return {canonical:e,stripped:[]};let r=[],n=e.hooks,o=e.permissions,i=e.mcp;return n!==null&&!t.acceptHooks&&(n=null,r.push("hooks")),o!==null&&!t.acceptPermissions&&(o=null,r.push("permissions")),i!==null&&!t.acceptMcp&&(i=null,r.push("mcp")),r.length===0?{canonical:e,stripped:[]}:{canonical:{...e,hooks:n,permissions:o,mcp:i},stripped:r}}var kL=d(()=>{s(Wh,"stripUntrustedElevatedArtifacts");});function nB(e,t){let r=t.accept??[];return Wh(e,{sourceKind:t.isRemote?"git":"local",acceptHooks:r.includes("hooks"),acceptPermissions:r.includes("permissions"),acceptMcp:r.includes("mcp")})}var oB=d(()=>{kL();s(nB,"gateExtendElevatedArtifacts");});var n4,Wm,Hh=d(()=>{n4=["rules","commands","agents","skills"],Wm=z$1.enum(n4);});var o4,sB,iB=d(()=>{is();Hh();o4=z$1.enum(["github","gitlab","git","local"]),sB=z$1.object({name:z$1.string().min(1),source:z$1.string().min(1),version:z$1.string().optional(),source_kind:o4,installed_at:z$1.string(),updated_at:z$1.string(),features:z$1.array(Oc).min(1),pick:Np.optional(),target:wr.optional(),path:z$1.string().optional(),paths:z$1.array(z$1.string().min(1)).min(1).optional(),as:Wm.optional(),content_hash:z$1.string(),license:z$1.string().nullable().optional()});});function aB(e){let t=Ya(e);return t?t.kind==="github"?`github:${t.org}/${t.repo}`:t.kind==="gitlab"?`gitlab:${t.namespace}/${t.project}`:`git+${t.url}`:e.trim()}function i4(e,t){return t?e.length===t.length&&[...e].sort().every((r,n)=>r===[...t].sort()[n]):true}async function wa(e){let t=join(e,"pack.yaml"),r=await I(t);if(r===null)return null;try{let n=parse(r);return sB.parse(n)}catch{return null}}async function cB(e,t,r){if(!await j(e))return null;let n=aB(t),o;try{o=await readdir(e,{withFileTypes:!0});}catch{return null}for(let i of o){if(!i.isDirectory())continue;let a=join(e,i.name),l=await wa(a);if(l&&aB(l.source)===n&&l.target===r.target&&l.as===r.as&&i4(l.features,r.features))return {meta:l,packDir:a,name:l.name}}return null}async function zh(e){if(!await j(e))return [];let t;try{t=await readdir(e,{withFileTypes:!0});}catch{return []}let r=[];for(let n of t){if(!n.isDirectory())continue;let o=join(e,n.name),i=await wa(o);i&&r.push({meta:i,packDir:o,name:i.name});}return r}var Hm=d(()=>{b();iB();Xa();s(aB,"sourceIdentity");s(i4,"sameFeatures");s(wa,"readPackMetadata");s(cB,"findExistingPack");s(zh,"listPacks");});function mB(){return {rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}async function a4(e){let[t,r,n,o,i,a,l,c]=await Promise.all([Di(join(e,"rules")),Ni(join(e,"commands")),vi(join(e,"agents")),Fi(join(e,"skills")),dn(join(e,"mcp.json")),wf(join(e,"permissions.yaml")),bf(join(e,"hooks.yaml")),Af(join(e,"ignore"))]);return {...mB(),rules:t,commands:r,agents:n,skills:o,mcp:i,permissions:a,hooks:l,ignore:c}}async function pB(e){let t=join(e,"packs"),r=await zh(t),n=mB();for(let{meta:o,packDir:i}of r){let a=await a4(i),l=EL(a,o.features),c=Kh(l,o.features,o.pick,o.name);n=Nc(n,c);}return n}var uB=d(()=>{jp();Up();Bp();Pc();Kp();Y_();X_();Q_();Z_();Xo();IL();Hm();s(mB,"emptyCanonical");s(a4,"loadPackCanonical");s(pB,"loadPacksCanonical");});function EL(e,t){if(t.length===0)return dB();let r=new Set(t.flatMap(n=>c4[n]??[]));return {rules:r.has("rules")?e.rules:[],commands:r.has("commands")?e.commands:[],agents:r.has("agents")?e.agents:[],skills:r.has("skills")?e.skills:[],mcp:r.has("mcp")?e.mcp:null,permissions:r.has("permissions")?e.permissions:null,hooks:r.has("hooks")?e.hooks:null,ignore:r.has("ignore")?e.ignore:[]}}function dB(){return {rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}async function Bt(e,t,r={},n=join(t,".agentsmesh")){let o=await Ac(e,t,{refreshCache:r.refreshRemoteCache===true}),i=dB();for(let c of o){let m=await tB(c),p=EL(m,c.features),u=nB(p,c);if(u.stripped.length>0){let g=u.stripped.join(", ");S.warn(`[agentsmesh] Extend "${c.name}": stripped elevated artifacts from a remote source: ${g}. Add \`accept: [${g}]\` to this extends entry in agentsmesh.yaml to keep them.`);}let f=Kh(u.canonical,c.features,c.pick,c.name);i=Nc(i,f);}let a=await pB(n);i=Nc(i,a);let l=await Wt(n);return i=Nc(i,l),{canonical:i,resolvedExtends:o}}var c4,Xo=d(()=>{Rf();qa();Z_();rB();IL();oB();uB();ue();c4={rules:["rules"],commands:["commands"],agents:["agents"],skills:["skills"],mcp:["mcp"],permissions:["permissions"],hooks:["hooks"],ignore:["ignore"]};s(EL,"filterCanonicalByFeatures");s(dB,"emptyCanonical");s(Bt,"loadCanonicalWithExtends");});function l7(e,t){let r=join(t,"node_modules",e),n=join(r,"package.json");if(!existsSync(n))throw new Error(`Cannot find package '${e}' in ${join(t,"node_modules")}`);let o=JSON.parse(readFileSync(n,"utf-8")),i=(typeof o.exports=="string"?o.exports:null)??(typeof o.main=="string"?o.main:null)??"index.js",a=resolve(r,i);if(!existsSync(a))throw new Error(`Package '${e}' entry '${i}' does not exist at ${a}`);return a}function c7(e){return e.startsWith("file:")||e.startsWith("./")||e.startsWith("../")||e.startsWith("/")||/^[A-Za-z]:[/\\]/.test(e)}function VB(e){try{return realpathSync(e)}catch{let t=resolve(e),r=[];for(;;){let n=dirname(t);if(n===t)return resolve(e);r.unshift(basename(t));try{return join(realpathSync(n),...r)}catch{t=n;}}}}function JB(e,t){let r=VB(resolve(t)),n=VB(e);if(!(n===r||n.startsWith(`${r}${sep}`)))throw new Error(`Plugin source resolves outside project root (escapes ${r}): ${n}`)}async function m7(e,t){let{source:r}=e,n;if(c7(r)){let i=r.startsWith("file:")?fileURLToPath(r):r,a=resolve(t,i);JB(a,t),n=pathToFileURL(a).href;}else {let i=l7(r,t);JB(i,t),n=pathToFileURL(i).href;}return await import(n)}function p7(e){return "descriptor"in e?[e.descriptor]:"descriptors"in e&&Array.isArray(e.descriptors)?e.descriptors:"default"in e?[e.default]:[]}async function iy(e,t){let r;try{r=await m7(e,t);}catch(i){throw new Error(`Plugin '${e.source}' failed to import: ${i instanceof Error?i.message:String(i)}`,{cause:i})}let n=p7(r),o=[];for(let i of n)try{let a=Tf(i);Pf(a),o.push(a);}catch(a){throw new Error(`Plugin '${e.source}' exported an invalid descriptor: ${a instanceof Error?a.message:String(a)}`,{cause:a})}return {entry:e,descriptors:o}}async function YB(e,t){let r=[],n=process.env.AGENTSMESH_STRICT_PLUGINS==="1"||process.env.AGENTSMESH_STRICT_PLUGINS==="true",i=(await Promise.all(e.map(async a=>{try{let l=await iy(a,t);return r.push(l),null}catch(l){let c=`Plugin '${a.source}' failed to load: ${l instanceof Error?l.message:String(l)}`;return a.strict===true||n?new Error(c):(S.warn(c),null)}}))).filter(a=>a!==null);if(i.length>0){let a=i.map(l=>` - ${l.message}`).join(`
|
|
157
157
|
`);throw new Error(`agentsmesh: ${i.length} plugin(s) failed strict load:
|
|
158
|
-
${a}`)}return r}var NL=d(()=>{eS();ot();ue();s(l7,"resolveNpmSpecifier");s(c7,"isLocalSource");s(
|
|
159
|
-
`)}var ln,$7,
|
|
158
|
+
${a}`)}return r}var NL=d(()=>{eS();ot();ue();s(l7,"resolveNpmSpecifier");s(c7,"isLocalSource");s(VB,"canonicalize");s(JB,"assertSourceInsideProjectRoot");s(m7,"importPluginModule");s(p7,"extractDescriptors");s(iy,"loadPlugin");s(YB,"loadAllPlugins");});async function Ve(e,t){e.plugins.length!==0&&await YB(e.plugins,t);}var an=d(()=>{NL();s(Ve,"bootstrapPlugins");});function ML(e,t,r="project"){let n=[],o=[...e.targets,...e.pluginTargets??[]];for(let i of e.features){let a,l;switch(i){case "rules":l=t.rules.length,a="rules";break;case "commands":l=t.commands.length,a=l>0?`commands (${l})`:"commands";break;case "agents":l=t.agents.length,a=l>0?`agents (${l})`:"agents";break;case "skills":l=t.skills.length,a=l>0?`skills (${l})`:"skills";break;case "mcp":l=t.mcp?Object.keys(t.mcp.mcpServers).length:0,a=l>0?`mcp (${l} servers)`:"mcp";break;case "hooks":l=N7(t.hooks),a=l>0?`hooks (${l})`:"hooks";break;case "ignore":l=t.ignore.length>0?1:0,a="ignore";break;case "permissions":l=t.permissions&&(t.permissions.allow.length>0||t.permissions.deny.length>0)?1:0,a="permissions";break;default:continue}let c={};for(let m of o)c[m]=wh(m,i,e,r);if(n.push({feature:a,count:l,support:c}),i==="rules"){let m=t.rules.filter(p=>!p.root);if(m.length>0){let p={};for(let u of o)p[u]=wh(u,"additionalRules",e,r);n.push({feature:`additional rules (${m.length})`,count:m.length,support:p});}}}return n}function N7(e){if(!e)return 0;let t=0;for(let r of Object.values(e))Array.isArray(r)&&(t+=r.length);return t}var oK=d(()=>{Te();s(ML,"buildCompatibilityMatrix");s(N7,"countHooks");});function sK(e){return v7[e]??e}var v7,iK=d(()=>{v7={"claude-code":"Claude"};s(sK,"matrixColumnLabel");});function aK(e){return Object.fromEntries(F7.map(t=>[t,Object.fromEntries(Ue.map(r=>{let o=gi(r,e)?.[t];return [r,o??{level:"none"}]}))]))}function M7(e,t){return Ai()?`${e}${t}${ud.reset}`:t}function cK(e){let t=GL[e];return M7(G7[e],t)}var F7,lK,GL,ud,G7,$L=d(()=>{pn();Te();Tp();F7=["rules","additionalRules","commands","agents","skills","mcp","hooks","ignore","permissions"];s(aK,"buildSupportMatrix");lK=aK("project"),aK("global"),GL={native:"\u2713",embedded:"\u25C6",partial:"\u25D0",none:"\u2013"},ud={green:"\x1B[32m",blue:"\x1B[34m",yellow:"\x1B[33m",dim:"\x1B[2m",cyan:"\x1B[36m",magenta:"\x1B[35m",bold:"\x1B[1m",reset:"\x1B[0m"};s(M7,"colorize");G7={native:ud.green,embedded:ud.blue,partial:ud.yellow,none:ud.dim};s(cK,"coloredSymbol");});function j7(e){return e.replace(/\s*\([^)]*\)\s*$/,"").trim()}function U7(e){let t=j7(e);return $7[t]??t.charAt(0).toUpperCase()+t.slice(1)}function B7(e,t){let r=Math.max(0,t-e.length),n=Math.floor(r/2);return " ".repeat(n)+e+" ".repeat(r-n)}function jL(e,t){let r=Ai(),n=s((y,_)=>r?`${y}${_}${ln.reset}`:_,"c"),o=e.map(y=>U7(y.feature)),i=o.map(y=>Math.max(3,y.length)),a=t.map(y=>({t:y,label:sK(y)})).sort((y,_)=>y.label.localeCompare(_.label)),l=Math.max(6,...a.map(y=>y.label.length)),c=[l,...i],m=s((y,_,R)=>n(ln.dim,y+c.map(k=>"\u2500".repeat(k+2)).join(_)+R),"hline"),p=n(ln.dim,"\u2502"),u=s(y=>p+y.map(_=>` ${_} `).join(p)+p,"wrapRow"),f=u([n(ln.bold+ln.cyan,"Target".padEnd(l)),...o.map((y,_)=>n(ln.bold+ln.magenta,B7(y,i[_])))]),g=[m("\u250C","\u252C","\u2510"),f,m("\u251C","\u253C","\u2524")];a.forEach(({t:y,label:_},R)=>{let k=[n(ln.cyan,_.padEnd(l)),...e.map((w,D)=>{let v=w.support[y]??"none",K=r?cK(v):GL[v],ee=i[D]-1,se=Math.floor(ee/2);return " ".repeat(se)+K+" ".repeat(ee-se)})];g.push(u(k)),g.push(R===a.length-1?m("\u2514","\u2534","\u2518"):m("\u251C","\u253C","\u2524"));}),a.length===0&&g.push(m("\u2514","\u2534","\u2518"));let h=n(ln.green,"\u2713")+" native "+n(ln.blue,"\u25C6")+" embedded "+n(ln.yellow,"\u25D0")+" partial "+n(ln.dim,"\u2013")+" none";return [...g,"",h].join(`
|
|
159
|
+
`)}var ln,$7,mK=d(()=>{iK();$L();Tp();ln={bold:"\x1B[1m",dim:"\x1B[2m",cyan:"\x1B[36m",magenta:"\x1B[35m",green:"\x1B[32m",blue:"\x1B[34m",yellow:"\x1B[33m",reset:"\x1B[0m"},$7={rules:"Rules","additional rules":"Additional Rules",commands:"Commands",agents:"Agents",skills:"Skills",mcp:"MCP",hooks:"Hooks",ignore:"Ignore",permissions:"Permissions"};s(j7,"baseName");s(U7,"featureLabel");s(B7,"center");s(jL,"formatMatrix");});function BL(e){let t=[];if(e.rules.length>0&&t.push(`rules: ${e.rules.map(r=>basename(r.source)).join(", ")}`),e.commands.length>0&&t.push(`commands: ${e.commands.map(r=>basename(r.source)).join(", ")}`),e.agents.length>0&&t.push(`agents: ${e.agents.map(r=>basename(r.source)).join(", ")}`),e.skills.length>0&&t.push(`skills: ${e.skills.map(r=>r.name).join(", ")}`),e.mcp&&Object.keys(e.mcp.mcpServers).length>0&&t.push(`mcp: ${Object.keys(e.mcp.mcpServers).join(", ")}`),e.hooks){let r=Object.values(e.hooks).reduce((n,o)=>n+(Array.isArray(o)?o.length:0),0);r>0&&t.push(`hooks: ${r} entries in hooks.yaml`);}return e.ignore.length>0&&t.push("ignore: .agentsmesh/ignore"),e.permissions&&e.permissions.allow.length+e.permissions.deny.length>0&&t.push("permissions: .agentsmesh/permissions.yaml"),t.length===0?"":`
|
|
160
160
|
Per-file details:
|
|
161
161
|
`+t.join(`
|
|
162
162
|
`)+`
|
|
163
|
-
`}var
|
|
163
|
+
`}var pK=d(()=>{s(BL,"formatVerboseDetails");});var KL=d(()=>{oK();mK();pK();});var WL={};w_(WL,{runMatrix:()=>Ym});async function Ym(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",o=e.targets,i=typeof o=="string"&&o?o.split(",").map(f=>f.trim()).filter(Boolean):void 0,{config:a,context:l}=await _e(r,n);await Ve(a,r);let{canonical:c}=await Bt(a,l.configDir,{},l.canonicalDir),m=i??[...a.targets,...a.pluginTargets??[]],p=ML(a,c,n),u=BL(c);return {exitCode:0,data:{targets:m,features:p.map(f=>({name:f.feature,support:f.support}))},verboseDetails:u||void 0}}var dd=d(()=>{nt();Xo();KL();an();s(Ym,"runMatrix");});var HL={};w_(HL,{renderMatrix:()=>Xm});function Xm(e,t){if(e.data.features.length===0){S.info("No features enabled. Enable features in agentsmesh.yaml.");return}let r=e.data.features.map(o=>({feature:o.name,count:0,support:o.support})),n=jL(r,e.data.targets);process.stdout.write(n),process.stdout.write(`
|
|
164
164
|
`),t?.verbose&&e.verboseDetails&&(process.stdout.write(e.verboseDetails),process.stdout.write(`
|
|
165
|
-
`));}var fd=d(()=>{ue();KL();s(
|
|
165
|
+
`));}var fd=d(()=>{ue();KL();s(Xm,"renderMatrix");});function YC(e){let t=Object.keys(e);return {async route(r,n,o){let i=e[r];if(i){await i(n,o);return}throw new Error(`Unknown command "${r}". Available: ${t.join(", ")}`)},commands:s(()=>[...t],"commands")}}s(YC,"createRouter");ue();var Ti={query:{usage:"agentsmesh lessons query [--file <path>] [--cmd <command>] [--keyword <text>] [--always] [--format plain|md|json] [--top <n>] [--all] [--max-tokens <n>] [--session <id>] [--no-dedup] [--ids]",example:'agentsmesh lessons query --file src/app/page.tsx --cmd "git commit -m wip"'},add:{usage:'agentsmesh lessons add "<rule>" --topic <id> [--trigger-file <glob>]... [--trigger-cmd <regex>]... [--trigger-kw <text>]... [--evidence <ref>]... [--rationale <text>] [--new-topic --topic-summary "..."] [--scope always]',example:'agentsmesh lessons add "Run tsc --noEmit before committing type changes" --topic build --trigger-file "src/**/*.ts" --evidence commit:abc1234'},topics:{usage:"agentsmesh lessons topics"},show:{usage:"agentsmesh lessons show <topic|lesson-id>",example:"agentsmesh lessons show build",summary:"a topic, or one lesson by id with its triggers resolved"},deprecate:{usage:"agentsmesh lessons deprecate <id> [--superseded-by <id>]",example:"agentsmesh lessons deprecate build-old-rule --superseded-by build-new-rule"},merge:{usage:"agentsmesh lessons merge <loser-id> <keeper-id>",example:"agentsmesh lessons merge build-duplicate build-canonical"},untrigger:{usage:"agentsmesh lessons untrigger <lesson-id> <trigger-id>",example:"agentsmesh lessons untrigger build-old-rule t-kw-8bdcf7aa",summary:"detach a trigger; GCs it if now unused"},"strip-markers":{usage:"agentsmesh lessons strip-markers [--dry-run]",example:"agentsmesh lessons strip-markers --dry-run"},journal:{usage:"agentsmesh lessons journal"},validate:{usage:"agentsmesh lessons validate"},stats:{usage:"agentsmesh lessons stats [--json]",summary:"recall telemetry summary; needs AGENTSMESH_LESSONS_TELEMETRY=1"},prune:{usage:"agentsmesh lessons prune [--apply] [--cap <n>]",example:"agentsmesh lessons prune --apply",summary:"dry-run by default; trims over-cap lessons + dead triggers"},"import-md":{usage:"agentsmesh lessons import-md [--merge] [--force] [--migrated-at <ISO date>]",example:"agentsmesh lessons import-md --merge"}},ZC=Object.keys(Ti);function sf(){let e=Ti.add;return `
|
|
166
166
|
Usage: ${e.usage}
|
|
167
|
-
Example: ${e.example}`}s(sf,"lessonsAddHint");var af=[{name:"--help",description:"Show this help output and exit"},{name:"--version",description:"Print CLI version and exit"},{name:"--verbose",description:"Show full error details on failure"},{name:"--json",description:"Output machine-readable JSON (single envelope to stdout)"}],b_=[{name:"init",usage:"agentsmesh init [flags]",description:"Create agentsmesh.yaml, agentsmesh.local.yaml, and canonical .agentsmesh scaffold. On a TTY runs an interactive wizard (targets, import, generate; plus lessons in project scope, never in --global); --yes, --json, and non-TTY/CI run non-interactively with current behavior.",flags:[{name:"--global",description:"Initialize canonical home config under ~/.agentsmesh/ (global targets include claude-code, antigravity, codex-cli, cursor, gemini-cli, kilo-code)"},{name:"--yes",description:"Auto-import detected tool configs, then add example scaffold only under empty canonical paths"},{name:"--lessons",description:"Scaffold the lessons recall + capture subsystem under .agentsmesh/lessons/ and append the procedural rule to .agentsmesh/rules/_root.md. Project mode only. Safe to run on an already-initialized project to retroactively add the subsystem."}]},{name:"generate",usage:"agentsmesh generate [flags]",description:"Generate target files from canonical sources",flags:[{name:"--global",description:"Generate user-level config from ~/.agentsmesh/ (e.g. claude-code, antigravity, codex-cli, gemini-cli, kilo-code; Cursor writes ~/.cursor/rules, ~/.cursor/AGENTS.md, hooks, ignore, MCP, skills, agents, commands; legacy ~/.agentsmesh-exports/cursor/user-rules.md is import-only)"},{name:"--targets <csv>",description:"Limit generation to target IDs (comma-separated)"},{name:"--check",description:"Check drift only; exit non-zero when out of sync"},{name:"--dry-run",description:"Preview file changes without writing outputs"},{name:"--force",description:"Bypass lock-strategy blocked feature violations"},{name:"--refresh-cache",description:"Refresh remote extends cache before loading"},{name:"--no-cache",description:"Alias for --refresh-cache"}]},{name:"import",usage:"agentsmesh import --from <target> [flags]",description:"Import existing tool config into canonical .agentsmesh files",flags:[{name:"--from <target>",description:"Source tool ID to import from (required)"},{name:"--global",description:"Import from user-level paths into ~/.agentsmesh/ (claude-code, antigravity, codex-cli, gemini-cli, kilo-code; cursor reads ~/.cursor/{rules,AGENTS.md,mcp.json,hooks.json,cursorignore,skills,agents,commands} and legacy ~/.agentsmesh-exports/cursor/user-rules.md)"}]},{name:"convert",usage:"agentsmesh convert --from <target> --to <target> [flags]",description:"Convert configuration directly from one tool to another",flags:[{name:"--from <target>",description:"Source tool ID to convert from (required)"},{name:"--to <target>",description:"Destination tool ID to convert to (required)"},{name:"--global",description:"Convert user-level config (use home directory paths)"},{name:"--dry-run",description:"Preview conversion without writing files"}]},{name:"install",usage:"agentsmesh install <source> [flags]",description:"Install rules/commands/agents/skills from a local path or remote repo. Auto-classifies anthropic-skill-pack / canonical-agentsmesh / tool-native sources. When auto-detection is ambiguous or refuses a non-standard layout, override with: --path <dir> to narrow scope, --as <kind> to force a flat collection (rules|commands|agents|skills), --target <id> to lock the native importer, or --all to install every sub-pack of a marketplace.",flags:[{name:"<source>",description:"GitHub/GitLab/tree/blob URL, git+ URL, SSH, or local path"},{name:"--sync",description:"Reinstall missing packs recorded in .agentsmesh/installs.yaml"},{name:"--path <dir>",description:"Subdirectory inside source repo when not embedded in URL"},{name:"--target <id>",description:"Native format used for import-at-root discovery (same as extends.target)"},{name:"--as <kind>",description:"Manual collection mode: rules, commands, agents, or skills"},{name:"--name <id>",description:"Override generated install entry/pack name"},{name:"--extends",description:"Write install as extends entry instead of materialized pack"},{name:"--dry-run",description:"Preview only (no YAML write, no pack write, no generate)"},{name:"--global",description:"Install into ~/.agentsmesh/ and regenerate user-level config"},{name:"--all",description:"Install every sub-pack from a marketplace source"},{name:"--force",description:"Non-interactive mode; include invalid resources and skip selection prompts (implied by --json)"},{name:"--accept-hooks",description:"Trust hooks.yaml from a non-local source. Stripped by default \u2014 hook commands run as shell on tool events."},{name:"--accept-permissions",description:"Trust permissions.yaml from a non-local source. Stripped by default \u2014 grants allowlist tool capabilities."},{name:"--accept-mcp",description:"Trust mcp.json from a non-local source. Stripped by default \u2014 MCP launch specs spawn child processes."},{name:"--accept-elevated",description:"Convenience for --accept-hooks --accept-permissions --accept-mcp together."}]},{name:"installs",usage:"agentsmesh installs <subcommand> [flags]",description:"Read-only inventory of installed packs (subcommands: list)",flags:[{name:"list",description:"List installed packs (NAME, SOURCE, FEATURES, INSTALLED)"},{name:"--global",description:"Read from ~/.agentsmesh/installs.yaml"}]},{name:"uninstall",usage:"agentsmesh uninstall <name>[,<name>...] [flags]",description:"Remove an installed pack; cleans installs.yaml, extends, and generated outputs",flags:[{name:"<name>",description:"Install entry name from installs.yaml (comma-separated for batch)"},{name:"--all",description:"Remove every installed pack in this scope"},{name:"--keep-pack",description:"Keep .agentsmesh/packs/<name>/ on disk; only drop yaml/extends entries"},{name:"--keep-generated",description:"Skip the post-uninstall generate pass; warn about stale target files"},{name:"--global",description:"Uninstall from ~/.agentsmesh/"},{name:"--dry-run",description:"Preview removal plan; no writes"},{name:"--force",description:"Non-interactive mode; accept all prompts (delete-anyway on modifications). Implied by --json."}]},{name:"refresh",usage:"agentsmesh refresh [<name>...] [flags]",description:"Re-fetch and re-apply installed packs from their recorded sources",flags:[{name:"<name>",description:"Pack name(s) to refresh (defaults to all installed packs)"},{name:"--dry-run",description:"Preview what would be refreshed without writing"},{name:"--force",description:"Skip drift-consent prompts; refresh even modified packs"},{name:"--global",description:"Refresh packs installed in ~/.agentsmesh/"}]},{name:"diff",usage:"agentsmesh diff [flags]",description:"Show patch-style output for what generate would change",flags:[{name:"--global",description:"Diff against outputs generated from ~/.agentsmesh/"},{name:"--targets <csv>",description:"Limit diff to target IDs (comma-separated)"}]},{name:"lint",usage:"agentsmesh lint [flags]",description:"Validate canonical files against target constraints",flags:[{name:"--global",description:"Lint canonical home config under ~/.agentsmesh/"},{name:"--targets <csv>",description:"Limit linting to target IDs (comma-separated)"}]},{name:"watch",usage:"agentsmesh watch [flags]",description:"Watch canonical files and regenerate on change",flags:[{name:"--global",description:"Watch ~/.agentsmesh/ and regenerate user-level config"},{name:"--targets <csv>",description:"Limit watched generate/matrix output to target IDs"}]},{name:"check",usage:"agentsmesh check",description:"Verify canonical files still match .agentsmesh/.lock",flags:[{name:"--global",description:"Check ~/.agentsmesh/.lock"}]},{name:"merge",usage:"agentsmesh merge",description:"Resolve .agentsmesh/.lock merge conflicts from current canonical state",flags:[{name:"--global",description:"Resolve ~/.agentsmesh/.lock conflicts"}]},{name:"matrix",usage:"agentsmesh matrix [flags]",description:"Print compatibility matrix for enabled features and targets",flags:[{name:"--global",description:"Show matrix for canonical home config under ~/.agentsmesh/"},{name:"--targets <csv>",description:"Limit matrix columns to target IDs"},{name:"--verbose",description:"Include expanded feature details in matrix output"}]},{name:"target",usage:"agentsmesh target scaffold <id> [--name <displayName>] [--force]",description:"Generate a new target skeleton (files, tests, fixture) under src/targets/<id>/.",flags:[{name:"--name <displayName>",description:"Human-readable name (defaults to id)"},{name:"--force",description:"Overwrite existing files"}]},{name:"plugin",usage:"agentsmesh plugin <add|list|remove|info> [args] [flags]",description:"Manage plugin-provided targets (npm packages exporting a TargetDescriptor).",flags:[{name:"--version <v>",description:"Pin plugin version (add)"},{name:"--id <id>",description:"Override derived plugin id (add)"}]},{name:"mcp",usage:"agentsmesh mcp",description:"Start the agentsmesh MCP server (stdio)",flags:[]},{name:"lessons",usage:"agentsmesh lessons <subcommand> [args] [flags]",description:`Query and capture lessons from .agentsmesh/lessons/lessons.json. Subcommands: ${qC.join(", ")}.`,flags:[{name:"--file <path>",description:"query: project-relative path of the file about to be edited"},{name:"--cmd <command>",description:"query: shell command about to run"},{name:"--keyword <text>",description:"query: free-form task description"},{name:"--format plain|md|json",description:"query: output format (default plain)"},{name:"--top <n>",description:"query: keep the top n ranked matches (default 10)"},{name:"--all",description:"query: return every match (no cap)"},{name:"--max-tokens <n>",description:"query: cap results by cumulative rule-token cost"},{name:'--rule "<text>"',description:"add: imperative rule (required)"},{name:"--topic <id>",description:"add: topic id (required; use --new-topic for new)"},{name:"--trigger-file <glob>",description:"add: file_glob trigger (repeat the flag; value is opaque)"},{name:"--trigger-cmd <regex>",description:"add: command_pattern trigger, valid regex (repeat the flag)"},{name:"--trigger-kw <text>",description:"add: keyword trigger (repeat the flag; value is opaque)"},{name:"--evidence <ref>",description:"add: evidence reference (commit:SHA, lesson:id, \u2026)"},{name:"--rationale <text>",description:"add: optional why-this-matters note stored on the lesson"},{name:'--new-topic --topic-summary "..."',description:"add: create a new topic"},{name:"--superseded-by <id>",description:"deprecate: replacement lesson id"},{name:"--dry-run",description:"strip-markers: preview changes; report the count without writing"},{name:"--json",description:"stats: emit the recall-telemetry report as JSON instead of the text summary"},{name:"--apply",description:"prune: write the curation (dry-run by default)"},{name:"--cap <n>",description:"prune: override the per-lesson trigger cap"},{name:"--merge",description:"import-md: fold legacy lessons into an existing lessons.json (recover stranded)"},{name:"--force",description:"import-md: overwrite existing lessons.json"},{name:"--migrated-at <ISO date>",description:"import-md: stamp on imported lessons"}]}];function Rc(e,t=18){if(e.length===0)return " (no command-specific flags)";let r=Math.max(t,...e.map(n=>n.name.length+2));return e.map(n=>` ${n.name.padEnd(r)}${n.description}`).join(`
|
|
168
|
-
`)}s(
|
|
167
|
+
Example: ${e.example}`}s(sf,"lessonsAddHint");var af=[{name:"--help",description:"Show this help output and exit"},{name:"--version",description:"Print CLI version and exit"},{name:"--verbose",description:"Show full error details on failure"},{name:"--json",description:"Output machine-readable JSON (single envelope to stdout)"}],b_=[{name:"init",usage:"agentsmesh init [flags]",description:"Create agentsmesh.yaml, agentsmesh.local.yaml, and canonical .agentsmesh scaffold. On a TTY runs an interactive wizard (targets, import, generate; plus lessons in project scope, never in --global); --yes, --json, and non-TTY/CI run non-interactively with current behavior.",flags:[{name:"--global",description:"Initialize canonical home config under ~/.agentsmesh/ (global targets include claude-code, antigravity, codex-cli, cursor, gemini-cli, kilo-code)"},{name:"--yes",description:"Auto-import detected tool configs, then add example scaffold only under empty canonical paths"},{name:"--lessons",description:"Scaffold the lessons recall + capture subsystem under .agentsmesh/lessons/ and append the procedural rule to .agentsmesh/rules/_root.md. Project mode only. Safe to run on an already-initialized project to retroactively add the subsystem."}]},{name:"generate",usage:"agentsmesh generate [flags]",description:"Generate target files from canonical sources",flags:[{name:"--global",description:"Generate user-level config from ~/.agentsmesh/ (e.g. claude-code, antigravity, codex-cli, gemini-cli, kilo-code; Cursor writes ~/.cursor/rules, ~/.cursor/AGENTS.md, hooks, ignore, MCP, skills, agents, commands; legacy ~/.agentsmesh-exports/cursor/user-rules.md is import-only)"},{name:"--targets <csv>",description:"Limit generation to target IDs (comma-separated)"},{name:"--check",description:"Check drift only; exit non-zero when out of sync"},{name:"--dry-run",description:"Preview file changes without writing outputs"},{name:"--force",description:"Bypass lock-strategy blocked feature violations"},{name:"--refresh-cache",description:"Refresh remote extends cache before loading"},{name:"--no-cache",description:"Alias for --refresh-cache"}]},{name:"import",usage:"agentsmesh import --from <target> [flags]",description:"Import existing tool config into canonical .agentsmesh files",flags:[{name:"--from <target>",description:"Source tool ID to import from (required)"},{name:"--global",description:"Import from user-level paths into ~/.agentsmesh/ (claude-code, antigravity, codex-cli, gemini-cli, kilo-code; cursor reads ~/.cursor/{rules,AGENTS.md,mcp.json,hooks.json,cursorignore,skills,agents,commands} and legacy ~/.agentsmesh-exports/cursor/user-rules.md)"}]},{name:"convert",usage:"agentsmesh convert --from <target> --to <target> [flags]",description:"Convert configuration directly from one tool to another",flags:[{name:"--from <target>",description:"Source tool ID to convert from (required)"},{name:"--to <target>",description:"Destination tool ID to convert to (required)"},{name:"--global",description:"Convert user-level config (use home directory paths)"},{name:"--dry-run",description:"Preview conversion without writing files"}]},{name:"install",usage:"agentsmesh install <source> [flags]",description:"Install rules/commands/agents/skills from a local path or remote repo. Auto-classifies anthropic-skill-pack / canonical-agentsmesh / tool-native sources. When auto-detection is ambiguous or refuses a non-standard layout, override with: --path <dir> to narrow scope, --as <kind> to force a flat collection (rules|commands|agents|skills), --target <id> to lock the native importer, or --all to install every sub-pack of a marketplace.",flags:[{name:"<source>",description:"GitHub/GitLab/tree/blob URL, git+ URL, SSH, or local path"},{name:"--sync",description:"Reinstall missing packs recorded in .agentsmesh/installs.yaml"},{name:"--path <dir>",description:"Subdirectory inside source repo when not embedded in URL"},{name:"--target <id>",description:"Native format used for import-at-root discovery (same as extends.target)"},{name:"--as <kind>",description:"Manual collection mode: rules, commands, agents, or skills"},{name:"--name <id>",description:"Override generated install entry/pack name"},{name:"--extends",description:"Write install as extends entry instead of materialized pack"},{name:"--dry-run",description:"Preview only (no YAML write, no pack write, no generate)"},{name:"--global",description:"Install into ~/.agentsmesh/ and regenerate user-level config"},{name:"--all",description:"Install every sub-pack from a marketplace source"},{name:"--force",description:"Non-interactive mode; include invalid resources and skip selection prompts (implied by --json)"},{name:"--accept-hooks",description:"Trust hooks.yaml from a non-local source. Stripped by default \u2014 hook commands run as shell on tool events."},{name:"--accept-permissions",description:"Trust permissions.yaml from a non-local source. Stripped by default \u2014 grants allowlist tool capabilities."},{name:"--accept-mcp",description:"Trust mcp.json from a non-local source. Stripped by default \u2014 MCP launch specs spawn child processes."},{name:"--accept-elevated",description:"Convenience for --accept-hooks --accept-permissions --accept-mcp together."}]},{name:"installs",usage:"agentsmesh installs <subcommand> [flags]",description:"Read-only inventory of installed packs (subcommands: list)",flags:[{name:"list",description:"List installed packs (NAME, SOURCE, FEATURES, INSTALLED)"},{name:"--global",description:"Read from ~/.agentsmesh/installs.yaml"}]},{name:"uninstall",usage:"agentsmesh uninstall <name>[,<name>...] [flags]",description:"Remove an installed pack; cleans installs.yaml, extends, and generated outputs",flags:[{name:"<name>",description:"Install entry name from installs.yaml (comma-separated for batch)"},{name:"--all",description:"Remove every installed pack in this scope"},{name:"--keep-pack",description:"Keep .agentsmesh/packs/<name>/ on disk; only drop yaml/extends entries"},{name:"--keep-generated",description:"Skip the post-uninstall generate pass; warn about stale target files"},{name:"--global",description:"Uninstall from ~/.agentsmesh/"},{name:"--dry-run",description:"Preview removal plan; no writes"},{name:"--force",description:"Non-interactive mode; accept all prompts (delete-anyway on modifications). Implied by --json."}]},{name:"refresh",usage:"agentsmesh refresh [<name>...] [flags]",description:"Re-fetch and re-apply installed packs from their recorded sources",flags:[{name:"<name>",description:"Pack name(s) to refresh (defaults to all installed packs)"},{name:"--dry-run",description:"Preview what would be refreshed without writing"},{name:"--force",description:"Skip drift-consent prompts; refresh even modified packs"},{name:"--global",description:"Refresh packs installed in ~/.agentsmesh/"}]},{name:"diff",usage:"agentsmesh diff [flags]",description:"Show patch-style output for what generate would change",flags:[{name:"--global",description:"Diff against outputs generated from ~/.agentsmesh/"},{name:"--targets <csv>",description:"Limit diff to target IDs (comma-separated)"}]},{name:"lint",usage:"agentsmesh lint [flags]",description:"Validate canonical files against target constraints",flags:[{name:"--global",description:"Lint canonical home config under ~/.agentsmesh/"},{name:"--targets <csv>",description:"Limit linting to target IDs (comma-separated)"}]},{name:"watch",usage:"agentsmesh watch [flags]",description:"Watch canonical files and regenerate on change",flags:[{name:"--global",description:"Watch ~/.agentsmesh/ and regenerate user-level config"},{name:"--targets <csv>",description:"Limit watched generate/matrix output to target IDs"}]},{name:"check",usage:"agentsmesh check",description:"Verify canonical files still match .agentsmesh/.lock",flags:[{name:"--global",description:"Check ~/.agentsmesh/.lock"}]},{name:"merge",usage:"agentsmesh merge",description:"Resolve .agentsmesh/.lock merge conflicts from current canonical state",flags:[{name:"--global",description:"Resolve ~/.agentsmesh/.lock conflicts"}]},{name:"matrix",usage:"agentsmesh matrix [flags]",description:"Print compatibility matrix for enabled features and targets",flags:[{name:"--global",description:"Show matrix for canonical home config under ~/.agentsmesh/"},{name:"--targets <csv>",description:"Limit matrix columns to target IDs"},{name:"--verbose",description:"Include expanded feature details in matrix output"}]},{name:"target",usage:"agentsmesh target scaffold <id> [--name <displayName>] [--force]",description:"Generate a new target skeleton (files, tests, fixture) under src/targets/<id>/.",flags:[{name:"--name <displayName>",description:"Human-readable name (defaults to id)"},{name:"--force",description:"Overwrite existing files"}]},{name:"plugin",usage:"agentsmesh plugin <add|list|remove|info> [args] [flags]",description:"Manage plugin-provided targets (npm packages exporting a TargetDescriptor).",flags:[{name:"--version <v>",description:"Pin plugin version (add)"},{name:"--id <id>",description:"Override derived plugin id (add)"}]},{name:"mcp",usage:"agentsmesh mcp",description:"Start the agentsmesh MCP server (stdio)",flags:[]},{name:"lessons",usage:"agentsmesh lessons <subcommand> [args] [flags]",description:`Query and capture lessons from .agentsmesh/lessons/lessons.json. Subcommands: ${ZC.join(", ")}.`,flags:[{name:"--file <path>",description:"query: project-relative path of the file about to be edited"},{name:"--cmd <command>",description:"query: shell command about to run"},{name:"--keyword <text>",description:"query: free-form task description"},{name:"--format plain|md|json",description:"query: output format (default plain)"},{name:"--top <n>",description:"query: keep the top n ranked matches (default 10)"},{name:"--all",description:"query: return every match (no cap)"},{name:"--max-tokens <n>",description:"query: cap results by cumulative rule-token cost"},{name:'--rule "<text>"',description:"add: imperative rule (required)"},{name:"--topic <id>",description:"add: topic id (required; use --new-topic for new)"},{name:"--trigger-file <glob>",description:"add: file_glob trigger (repeat the flag; value is opaque)"},{name:"--trigger-cmd <regex>",description:"add: command_pattern trigger, valid regex (repeat the flag)"},{name:"--trigger-kw <text>",description:"add: keyword trigger (repeat the flag; value is opaque)"},{name:"--evidence <ref>",description:"add: evidence reference (commit:SHA, lesson:id, \u2026)"},{name:"--rationale <text>",description:"add: optional why-this-matters note stored on the lesson"},{name:'--new-topic --topic-summary "..."',description:"add: create a new topic"},{name:"--superseded-by <id>",description:"deprecate: replacement lesson id"},{name:"--dry-run",description:"strip-markers: preview changes; report the count without writing"},{name:"--json",description:"stats: emit the recall-telemetry report as JSON instead of the text summary"},{name:"--apply",description:"prune: write the curation (dry-run by default)"},{name:"--cap <n>",description:"prune: override the per-lesson trigger cap"},{name:"--merge",description:"import-md: fold legacy lessons into an existing lessons.json (recover stranded)"},{name:"--force",description:"import-md: overwrite existing lessons.json"},{name:"--migrated-at <ISO date>",description:"import-md: stamp on imported lessons"}]}];function Ic(e,t=18){if(e.length===0)return " (no command-specific flags)";let r=Math.max(t,...e.map(n=>n.name.length+2));return e.map(n=>` ${n.name.padEnd(r)}${n.description}`).join(`
|
|
168
|
+
`)}s(Ic,"formatFlags");function A_(){let e=b_.map(t=>`- ${t.name.padEnd(8)} ${t.description}
|
|
169
169
|
Usage: ${t.usage}
|
|
170
|
-
${
|
|
170
|
+
${Ic(t.flags)}`).join(`
|
|
171
171
|
|
|
172
172
|
`);S.info(`agentsmesh <command> [flags]
|
|
173
173
|
|
|
174
174
|
Global flags:
|
|
175
|
-
${
|
|
175
|
+
${Ic(af)}
|
|
176
176
|
|
|
177
177
|
Commands:
|
|
178
178
|
${e}
|
|
@@ -182,56 +182,56 @@ Tip: run "agentsmesh <command> --help" for this same command reference.`);}s(A_,
|
|
|
182
182
|
${r.description}
|
|
183
183
|
|
|
184
184
|
Command flags:
|
|
185
|
-
${
|
|
185
|
+
${Ic(r.flags)}
|
|
186
186
|
|
|
187
187
|
Global flags:
|
|
188
|
-
${
|
|
188
|
+
${Ic(af)}`);}s(lf,"printCommandHelp");function pY(e,t){let r=e.flags.filter(i=>i.description.startsWith(`${t}:`)).map(i=>({name:i.name,description:i.description.slice(t.length+1).trim()})),n=Ti[t],o=n?.example!==void 0?`
|
|
189
189
|
|
|
190
190
|
Example:
|
|
191
191
|
${n.example}`:"";S.info(`${n?.usage??`agentsmesh lessons ${t} [flags]`}
|
|
192
192
|
|
|
193
193
|
Command flags:
|
|
194
|
-
${
|
|
194
|
+
${Ic(r)}
|
|
195
195
|
|
|
196
196
|
Global flags:
|
|
197
|
-
${
|
|
198
|
-
`);}s(
|
|
199
|
-
`);}s(
|
|
200
|
-
`):S.error(e.message),process.exit(r);}s(
|
|
197
|
+
${Ic(af)}${o}`);}s(pY,"printLessonsSubcommandHelp");var cf;function gY(){try{let e=createRequire(import.meta.url),t=dirname(fileURLToPath(import.meta.url)),r=t.endsWith("dist")?join(t,"..","package.json"):join(t,"..","..","package.json");return e(r).version}catch{return}}s(gY,"readPackageVersion");function hY(){if(typeof __AGENTSMESH_VERSION__<"u")return __AGENTSMESH_VERSION__;let e=globalThis.__AGENTSMESH_VERSION__;return typeof e=="string"?e:"unknown"}s(hY,"getVersionFallback");function za(){return cf||(cf=gY()??hY(),cf)}s(za,"getVersion");function tO(){process.stdout.write(`agentsmesh v${za()}
|
|
198
|
+
`);}s(tO,"printVersion");ue();function kc(e,t){let r={success:t.success,command:e};t.success?r.data=t.data:(r.error=t.error,t.data!==void 0&&(r.data=t.data)),process.stdout.write(JSON.stringify(r)+`
|
|
199
|
+
`);}s(kc,"emitJson");var qn=class extends Error{static{s(this,"CliUsageError");}constructor(t){super(t),this.name="CliUsageError";}};function rO(e,t){let r=e instanceof qn?2:1;if(t?.json)return kc(t.command??"unknown",{success:false,error:e.message}),process.exit(r);t?.verbose&&e.stack?process.stderr.write(e.stack+`
|
|
200
|
+
`):S.error(e.message),process.exit(r);}s(rO,"handleError");ue();function pt(e,t,r,n){if(r.json===true){let o=t.exitCode===0,i=t.error!==void 0&&t.error.length>0?t.error:`Command '${e}' failed`;kc(e,o?{success:true,data:t.data}:{success:false,error:i,data:t.data}),process.exit(t.exitCode);return}n(),t.exitCode!==0&&process.exit(t.exitCode);}s(pt,"handleResult");nt();Xo();b();uf();function Jh(e){return createHash("sha256").update(e,"utf8").digest("hex")}s(Jh,"hashContent");async function Yh(e){try{let t=await readFile(e);return createHash("sha256").update(t).digest("hex")}catch(t){if(t instanceof Error&&"code"in t&&t.code==="ENOENT")return null;throw t}}s(Yh,"hashFile");async function Xh(e){try{if(!mf(e)){let r=await readFile(e);return createHash("sha256").update(r).digest("hex")}let t=await readFile(e,"utf-8");return t.startsWith(Cc)&&(t=t.slice(Cc.length)),t=pf(t),createHash("sha256").update(t,"utf8").digest("hex")}catch(t){if(t instanceof Error&&"code"in t&&t.code==="ENOENT")return null;throw t}}s(Xh,"hashFileForManifest");Hm();var wL=".lock",d4=[e=>e.startsWith("rules/")&&e.endsWith(".md"),e=>e.startsWith("commands/")&&e.endsWith(".md"),e=>e.startsWith("agents/")&&e.endsWith(".md"),e=>e.match(/^skills\/[^/]+\/.+$/)!==null,e=>e==="mcp.json",e=>e==="permissions.yaml",e=>e==="hooks.yaml",e=>e==="ignore"];function f4(e){return e.startsWith("packs/")?false:d4.some(t=>t(e))}s(f4,"isCanonical");var g4={rules:s(e=>e.startsWith("rules/"),"rules"),commands:s(e=>e.startsWith("commands/"),"commands"),agents:s(e=>e.startsWith("agents/"),"agents"),skills:s(e=>/^skills\/[^/]+\/.+$/.test(e),"skills"),mcp:s(e=>e==="mcp.json","mcp"),permissions:s(e=>e==="permissions.yaml","permissions"),hooks:s(e=>e==="hooks.yaml","hooks"),ignore:s(e=>e==="ignore","ignore")};async function Qh(e){let t=join(e,wL),r=await I(t);if(r===null)return null;try{let n=parse(r);return !n||typeof n!="object"?null:{generatedAt:String(n.generated_at??""),generatedBy:String(n.generated_by??""),libVersion:String(n.lib_version??""),checksums:n.checksums&&typeof n.checksums=="object"?n.checksums:{},extends:n.extends&&typeof n.extends=="object"?n.extends:{},packs:n.packs&&typeof n.packs=="object"?n.packs:{}}}catch{return null}}s(Qh,"readLock");async function qh(e,t){let r=join(e,wL),n={generated_at:t.generatedAt,generated_by:t.generatedBy,lib_version:t.libVersion,checksums:t.checksums,extends:t.extends,packs:t.packs},o=`# Auto-generated. DO NOT EDIT MANUALLY.
|
|
201
201
|
# Tracks the state of all config files for team conflict resolution.
|
|
202
202
|
|
|
203
|
-
`+stringify(n);await L(r,o);}s(qh,"writeLock");async function _i(e){if(!await j(e))return {};let t=await xi(e),r={};for(let n of t){let o=relative(e,n).replace(/\\/g,"/");if(o===wL||!f4(o))continue;let i=await Yh(n);i!==null&&(r[o]=i.startsWith("sha256:")?i:`sha256:${i}`);}return r}s(_i,"buildChecksums");function Zh(e,t,r){if(r.length===0)return [];let n=r.map(a=>g4[a]).filter(a=>a!==void 0);if(n.length===0)return [];let o=new Set([...Object.keys(e),...Object.keys(t)]),i=[];for(let a of o)n.some(l=>l(a))&&e[a]!==t[a]&&i.push(a);return i}s(Zh,"detectLockedFeatureViolations");async function ey(e){let t=await zh(e),r={};for(let{meta:n}of t)r[n.name]=n.content_hash;return r}s(ey,"buildPackChecksums");async function
|
|
204
|
-
`),a=Jh(i),l=a.startsWith("sha256:")?a:`sha256:${a}`;t[r.name]=`local:${l}`;}return t}s(
|
|
203
|
+
`+stringify(n);await L(r,o);}s(qh,"writeLock");async function _i(e){if(!await j(e))return {};let t=await xi(e),r={};for(let n of t){let o=relative(e,n).replace(/\\/g,"/");if(o===wL||!f4(o))continue;let i=await Yh(n);i!==null&&(r[o]=i.startsWith("sha256:")?i:`sha256:${i}`);}return r}s(_i,"buildChecksums");function Zh(e,t,r){if(r.length===0)return [];let n=r.map(a=>g4[a]).filter(a=>a!==void 0);if(n.length===0)return [];let o=new Set([...Object.keys(e),...Object.keys(t)]),i=[];for(let a of o)n.some(l=>l(a))&&e[a]!==t[a]&&i.push(a);return i}s(Zh,"detectLockedFeatureViolations");async function ey(e){let t=await zh(e),r={};for(let{meta:n}of t)r[n.name]=n.content_hash;return r}s(ey,"buildPackChecksums");async function zm(e){let t={};for(let r of e){if(r.version!==void 0){t[r.name]=r.version;continue}let n=join(r.resolvedPath,".agentsmesh"),o=await _i(n),i=Object.keys(o).sort().map(c=>`${c}:${o[c]}`).join(`
|
|
204
|
+
`),a=Jh(i),l=a.startsWith("sha256:")?a:`sha256:${a}`;t[r.name]=`local:${l}`;}return t}s(zm,"buildExtendChecksums");Te();ot();function Vm(e){return e?(e.outputFamilies??[]).filter(t=>t.kind==="additional").flatMap(t=>[...t.explicitPaths??[]]):[]}s(Vm,"getAdditionalRootDecorationPaths");function fB(e,t){for(let r of e?.outputFamilies??[])if(r.pathPrefix!==void 0&&t.startsWith(r.pathPrefix)||r.explicitPaths?.includes(t))return r.id;return "default"}s(fB,"resolveRewriteFamilyId");Lt();_S();function h4(e,t,r){e.set(t,r),e.set(`${t}/`,`${r}/`);}s(h4,"addDirectoryMapping");function gB(e,t,r){let n=posix.dirname(t),o=posix.dirname(r);for(;n!==".agentsmesh/skills"&&n!==".";)h4(e,n,o),n=posix.dirname(n),o=posix.dirname(o);}s(gB,"addSkillDirectoryMappings");Te();function hB(e,t,r="project"){let n=We(e,r);if(!n)return null;if(t.root)return n.rootInstructionPath??null;if(t.targets.length>0&&!t.targets.includes(e))return null;let o=posix.basename(t.source.replace(/\\/g,"/"),".md");return n.paths.rulePath(o,t)}s(hB,"ruleTargetPath");function yB(e,t,r,n="project"){let o=We(e,n);return o?o.paths.commandPath(t,r):null}s(yB,"commandTargetPath");function _B(e,t,r,n="project"){let o=We(e,n);return o?o.paths.agentPath(t,r):null}s(_B,"agentTargetPath");at();lt();jt();Te();function S4(e,t,r){e.set(t,r),e.set(`${t}/`,`${r}/`);}s(S4,"addDirectoryMapping");function bL(e,t,r,n="project"){let o=new Map;for(let a of t.rules){let l=hB(e,a,n);l&&o.set(`.agentsmesh/rules/${basename(a.source)}`,l);}for(let a of t.commands){let l=yB(e,a.name,r,n);l&&o.set(`.agentsmesh/commands/${a.name}.md`,l);}for(let a of t.agents){let l=_B(e,a.name,r,n);l&&o.set(`.agentsmesh/agents/${a.name}.md`,l);}let i=sd(e,n);if(!i)return o;for(let a of t.skills){S4(o,`.agentsmesh/skills/${a.name}`,`${i}/${a.name}`),o.set(`.agentsmesh/skills/${a.name}/SKILL.md`,`${i}/${a.name}/SKILL.md`);for(let l of a.supportingFiles){let c=l.relativePath.replace(/\\/g,"/"),m=`.agentsmesh/skills/${a.name}/${c}`,p=`${i}/${a.name}/${c}`;o.set(m,p),gB(o,m,p);}}return o}s(bL,"buildReferenceMap");Lt();Lt();Te();function RB(e,t,r,n){let o=n.normalize(t),i=n.normalize(r);e.set(o,i),e.set(`${o}/`,`${i}/`);}s(RB,"addPackAbsoluteDirMapping");function R4(e){let t=new Set;for(let{relativePath:r}of e){let n=r.replace(/\\/g,"/"),o=posix.dirname(n);for(;o!=="."&&o.length>0;){t.add(o);let i=posix.dirname(o);if(i===o)break;o=i;}}return [...t]}s(R4,"skillSupportingDirPrefixes");function IB(e,t,r,n,o){let i=sd(t,o);if(!i)return;let a=ce(n),l=a.join(n,".agentsmesh","packs");for(let c of r.skills){let m=a.dirname(c.source);if(!m.startsWith(l))continue;let p=a.normalize(a.join(n,i,c.name));RB(e,m,p,a),e.set(a.normalize(c.source),a.normalize(a.join(p,"SKILL.md")));for(let u of c.supportingFiles){let f=a.normalize(a.join(p,u.relativePath));e.set(a.normalize(u.absolutePath),f);}for(let u of R4(c.supportingFiles))RB(e,a.join(m,u),a.join(p,u),a);}}s(IB,"addPackSkillArtifactMappings");Lt();function I4(e){return `.agentsmesh/rules/${basename(e.source)}`}s(I4,"canonicalRulePath");function k4(e){return `.github/instructions/${basename(e.source,".md")}.instructions.md`}s(k4,"copilotInstructionsPath");function LB(e,t,r,n,o){if(e!=="copilot"||!n?.startsWith(".github/instructions/"))return;let i=ce(r);for(let a of o.rules)a.root||a.globs.length===0||t.set(i.normalize(i.join(r,I4(a))),i.normalize(i.join(r,k4(a))));}s(LB,"applyCopilotInstructionArtifactRefs");Te();function AL(e,t){t!==void 0&&t.length>0&&!e.includes(t)&&e.push(t);}s(AL,"pushUnique");function EB(e,t,r,n){let o=[],i=r.get(`.agentsmesh/rules/${basename(t.source)}`);AL(o,i);let a=We(e,n);if(t.root)for(let l of Vm(a))AL(o,l);for(let l of a?.extraRuleOutputPaths?.(t,{refs:r,scope:n})??[])AL(o,l);return o}s(EB,"extraRuleOutputPaths");Te();function CB(e,t,r,n,o,i){let a=We(e,t);if(!a?.mirrorGlobalPath)return;let l=a.mirrorGlobalPath(r,i??[]),c=l===null?[]:Array.isArray(l)?l:[l];for(let m of c)m!==r&&o.set(m,n);}s(CB,"addSkillMirrorSourceEntry");function E4(e){return `.agentsmesh/commands/${e.name}.md`}s(E4,"canonicalCommandPath");function C4(e){return `.agentsmesh/agents/${e.name}.md`}s(C4,"canonicalAgentPath");function O4(e){return `.agentsmesh/skills/${e.name}/SKILL.md`}s(O4,"canonicalSkillPath");function OB(e,t,r,n,o,i){let a=i?.scope??"project",l=ce(n),c=new Map([...bL(e,t,r,a)].map(([m,p])=>[l.normalize(l.join(n,m)),l.normalize(l.join(n,p))]));return LB(e,c,n,o,t),IB(c,e,t,n,a),c}s(OB,"buildArtifactPathMap");function wB(e,t,r,n="project",o){let i=bL(e,t,r,n),a=new Map;for(let l of t.rules)for(let c of EB(e,l,i,n))a.set(c,l.source);for(let l of t.commands){let c=i.get(E4(l));c&&a.set(c,l.source);}for(let l of t.agents){let c=i.get(C4(l));c&&a.set(c,l.source);}for(let l of t.skills){let c=i.get(O4(l));c&&(a.set(c,l.source),CB(e,n,c,l.source,a,o));for(let m of l.supportingFiles){let p=`.agentsmesh/skills/${l.name}/${m.relativePath.replace(/\\/g,"/")}`,u=i.get(p);u&&(a.set(u,m.absolutePath),CB(e,n,u,m.absolutePath,a,o));}}return a}s(wB,"buildOutputSourceMap");Te();ot();nS();function A4(e,t){if(!t)return null;for(let r of t){let n=ne(r);if(n?.sharedArtifacts){for(let[o,i]of Object.entries(n.sharedArtifacts))if(i==="owner"&&e.startsWith(o))return r}}return null}s(A4,"findSharedArtifactOwner");function bB(e,t,r){if(t==="global"){let n=A4(e.path,r);if(n)return n;let o=cw(e.path);if(o)return o}return e.target}s(bB,"artifactMapTargetForResult");function T4(e,t){return `${e}\0${(t??[]).join(",")}`}s(T4,"sourceMapCacheKey");function TL(e,t){let r=ce(e),n=new Set;for(let o of t){let i=r.join(e,o.path);n.add(i);let a=r.dirname(i);for(;a.startsWith(e)&&!n.has(a)&&(n.add(a),a!==e);)a=r.dirname(a);}return n}s(TL,"collectPlannedPaths");function x4(e,t,r){let n=We(e.target,t),o=fB(n,e.path);if(o!=="default")return `${e.target}:${o}`;let i=bB(e,t,r);return i===e.target?e.target:`${e.target}~via~${i}`}s(x4,"artifactCacheKey");function AB(e,t,r,n,o="project",i,a){let l=TL(n,e),c=new Map,m=new Map;return e.map(p=>{if(a?.has(p.path))return p;let u=T4(p.target,i),g=(m.get(u)??(()=>{let k=wB(p.target,t,r,o,i);return m.set(u,k),k})()).get(p.path);if(!g)return p;let h=bB(p,o,i),y=x4(p,o,i),_=c.get(y)??(()=>{let k=OB(h,t,r,n,p.path,{scope:o});return c.set(y,k),k})(),R=Wf({content:p.content,projectRoot:n,sourceFile:g,destinationFile:ce(n).join(n,p.path),translatePath:s(k=>_.get(k)??k,"translatePath"),pathExists:s(k=>l.has(k)||existsSync(k),"pathExists"),explicitCurrentDirLinks:true,rewriteBarePathTokens:true,scope:o,pathIsDirectory:s(k=>{try{return statSync(k).isDirectory()}catch{return false}},"pathIsDirectory")});return R.content===p.content?p:{...p,content:R.content}})}s(AB,"rewriteGeneratedReferences");Lt();Gi();ue();var D4=/!?\[[^\]]*\]\(([^)]+)\)/g,N4=/^\s*\[[^\]\n]+\]:\s*(?:<([^>\n]*)>|(\S+))/gm;function v4(e){return e.endsWith(".md")||e.endsWith(".mdc")}s(v4,"isMarkdownLikeOutput");function F4(e,t){return t.some(([r,n])=>e>=r&&e<n)}s(F4,"isOffsetInRanges");function M4(e){let t=e.trim(),r=/^(.*?)\s+(["'])([\s\S]*?)\2\s*$/.exec(t);return r?.[1]!==void 0&&(t=r[1].trim()),t.startsWith("<")&&t.endsWith(">")&&(t=t.slice(1,-1).trim()),t}s(M4,"parseMarkdownLinkDestination");function G4(e,t){let r=e.trim();if(!r||r.startsWith("#")||/^https?:\/\//i.test(r)||/^mailto:/i.test(r)||/^data:/i.test(r)||/^javascript:/i.test(r)||/^ftp:/i.test(r))return true;if(/^[a-zA-Z]:[\\/]/.test(r))return false;if(/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(r))return true;if(r.startsWith("/")){let n=Q(t,t),o=Q(t,r);if(!o.startsWith(`${n}/`)&&o!==n)return true}return false}s(G4,"shouldSkipLocalValidation");function $4(e){return /(?:^|\/)[^/]+\/skills\/[^/]+\//.test(e)}s($4,"isSkillGeneratedOutput");var j4={rules:"rules",steering:"rules",commands:"commands",agents:"agents",skills:"skills",droids:"agents",instructions:"rules",prompts:"commands"},U4={".clinerules":"rules"},B4=[".agent.md",".instructions.md",".prompt.md"];function TB(e){for(let t of B4)if(e.endsWith(t))return e.slice(0,-t.length);return e.endsWith(".mdc")?e.slice(0,-4):e.endsWith(".md")?e.slice(0,-3):e}s(TB,"stripMarkdownExt");function K4(e){let t=/^[^/]+\/([^/]+)\/([^/]+)/.exec(e);if(t){let n=j4[t[1]??""];if(n){let o=t[2]??"";return n!=="skills"&&(o=TB(o)),`${n}/${o}`}}let r=/^([^/]+)\/([^/]+)/.exec(e);if(r){let n=U4[r[1]??""];if(n)return `${n}/${TB(r[2]??"")}`}return null}s(K4,"canonicalKeyFromOutputPath");function W4(e,t){if(t.has(e))return true;try{let r=statSync(e);return r.isFile()||r.isDirectory()}catch{return false}}s(W4,"pathExistsForGenerate");function H4(e,t,r){let o=M4(e).split("#")[0]??"",{candidate:i}=Bc(o),a=i,l=Kc.exec(a);l&&(a=a.slice(0,l.index));let c;try{c=decodeURIComponent(a);}catch{c=a;}if(G4(c,t))return [];let m=qp(c,t,r);if(m.length===0){let u=ce(t),f=Q(t,r);m=[Q(t,u.join(u.dirname(f),c)),Q(t,u.join(t,c))];}let p=[];for(let u of m)for(let f of Zp(t,u)){let g=Q(t,f);p.includes(g)||p.push(g);}return p}s(H4,"resolveMarkdownLinkTargets");function z4(e,t){let r=TL(t,e),n=[];for(let o of e){if(!v4(o.path))continue;let i=Q(t,ce(t).join(t,o.path)),a=Kf(o.content),l=s((c,m)=>{if(F4(m,a))return;let p=H4(c,t,i);p.length!==0&&(p.some(u=>W4(u,r))||n.push({generatePath:o.path,target:o.target,rawLink:c.trim(),checkedPaths:p}));},"visitDestination");for(let c of o.content.matchAll(D4)){let m=c[1];m!==void 0&&l(m,c.index??0);}for(let c of o.content.matchAll(N4)){let m=(c[1]??c[2]??"").trim();m&&l(m,c.index??0);}}return n}s(z4,"findBrokenMarkdownLinks");function xB(e,t,r={}){let n=z4(e,t);if(n.length===0)return;let o=r.packOriginatedKeys,i=[],a=[];for(let c of n){let m=K4(c.generatePath),p=o!==void 0&&m!==null&&o.has(m);$4(c.generatePath)||p?a.push(c):i.push(c);}if(a.length>0){let c=a.map(m=>` ${m.generatePath} (${m.target}): "${m.rawLink}" \u2192 not found`);S.warn(`Third-party content contains ${a.length} broken local link${a.length===1?"":"s"} (warning only; outputs from installed packs and skill subtrees are treated as advisory):
|
|
205
205
|
${c.join(`
|
|
206
206
|
`)}`);}if(i.length===0)return;let l=i.map(c=>` ${c.generatePath} (${c.target}): "${c.rawLink}" \u2192 not found (tried: ${c.checkedPaths.join(", ")})`);throw new Error(`Generated markdown contains broken local links:
|
|
207
207
|
${l.join(`
|
|
208
208
|
`)}
|
|
209
|
-
Fix canonical sources or generators so every local link targets an existing file or folder.`)}s(
|
|
209
|
+
Fix canonical sources or generators so every local link targets an existing file or folder.`)}s(xB,"validateGeneratedMarkdownLinks");var V4=[`${sep}.agentsmesh${sep}packs${sep}`,"/.agentsmesh/packs/"];function ry(e){return V4.some(t=>e.includes(t))}s(ry,"isUnderPacks");function PB(e){let t=new Set;for(let r of e.rules)if(ry(r.source)){let n=r.root?"_root":J4(r.source);n&&t.add(`rules/${n}`);}for(let r of e.agents)ry(r.source)&&t.add(`agents/${r.name}`);for(let r of e.commands)ry(r.source)&&t.add(`commands/${r.name}`);for(let r of e.skills)ry(r.source)&&t.add(`skills/${r.name}`);return t}s(PB,"buildPackOriginatedKeys");function J4(e){let r=e.replace(/\\/g,"/").split("/").pop()??"";return r.endsWith(".md")?r.slice(0,-3):r}s(J4,"ruleNameFromSource");pn();var FB="AGENTS.md";function DB(e){switch(e){case "created":return 3;case "updated":return 2;case "unchanged":return 1;case "skipped":return 0}}s(DB,"statusRank");function Y4(e,t){return DB(t.status)<=DB(e.status)?e:{...e,status:t.status,currentContent:t.currentContent??e.currentContent}}s(Y4,"mergeDuplicateMetadata");function ny(e){return e.trim()}s(ny,"trimmedContent");var X4=[/<!-- agentsmesh:embedded-rules:start -->[\s\S]*?<!-- agentsmesh:embedded-rules:end -->\n*/g];function NB(e){let t=e;for(let r of X4)t=t.replace(r,"");return t.trim().replace(/\n{2,}/g,`
|
|
210
210
|
|
|
211
|
-
`)}s(DB,"normalizeAgentsContent");function NB(e){return /<!-- agentsmesh:embedded-rules:start -->/.test(e)}s(NB,"hasOptionalAgentsBlock");function Q4(e,t){if(!e.path.endsWith(vB)||e.path!==t.path)return null;let r=ny(e.content),n=ny(t.content);if(!r||!n)return null;let o=r.includes(n),i=n.includes(r);if(o!==i)return o?e:t;if(DB(e.content)===DB(t.content)){let a=NB(e.content),l=NB(t.content);if(a!==l)return a?e:t}return null}s(Q4,"richerAgentsResult");function q4(e,t){if(!e.path.endsWith(vB)||e.path!==t.path)return null;let r=e.target===N_?e:t.target===N_?t:null,n=r===e?t:e;if(!r)return null;let o=ny(r.content).length,i=ny(n.content).length;return o===i?null:o>i?r:n}s(q4,"richerCodexAgentsResult");function oy(e){let t=[];for(let r of e){let n=t.findIndex(i=>i.path===r.path);if(n===-1){t.push(r);continue}let o=t[n];if(o.content!==r.content){let i=Q4(o,r);if(i){t[n]=i;continue}let a=q4(o,r);if(a){t[n]=a;continue}throw new Error(`Conflicting generated outputs for ${r.path}: ${o.target} and ${r.target} produce different content.`)}t[n]=Y4(o,r);}return Z4(t),t}s(oy,"resolveOutputCollisions");function Z4(e){let t=new Map;for(let r of e){let n=r.path.toLowerCase(),o=t.get(n);if(o!==void 0&&o.path!==r.path)throw new Error(`Case-only path collision: "${o.path}" (${o.target}) and "${r.path}" (${r.target}) resolve to the same file on case-insensitive filesystems (Windows/macOS). Rename one canonical source.`);t.set(n,r);}}s(Z4,"assertNoCaseOnlyPathCollisions");function FB(e){let t=e.currentContent===void 0?"created":e.currentContent!==e.content?"updated":"unchanged";return e.status===t?e:{...e,status:t}}s(FB,"refreshResultStatus");b();Te();ot();function GB(e,t){return e===null?"created":e!==t?"updated":"unchanged"}s(GB,"computeStatus");function e7(e,t,r){let n=tL(e,t,r);if(n!==null)return n;let o=ne(e);if(!o)return null;let i=r==="global"?o.globalSupport?.layout:o.project;return i?(n=i.rewriteGeneratedPath?i.rewriteGeneratedPath(t):t,n):null}s(e7,"resolveGeneratedOutputPath");async function md(e,t,r,n,o,i){let a=e7(t,r.path,o);if(a===null)return null;let l=await I(join(n,a)),c=e.findIndex(u=>u.path===a&&u.target===t),m=c>=0?e[c]:void 0,p=i?.mergeContent?.(l,m,r.content,a)??r.content;return c>=0&&e.splice(c,1),e.push({target:t,path:a,content:p,currentContent:l??void 0,status:GB(l,p)}),a}s(md,"emitGeneratedOutput");function PL(e,t,r){return {capability:gi(e,r)?.[t]??{level:"none"},scope:r}}s(PL,"featureContext");async function nc(e,t,r,n,o,i,a,l){if(o)for(let c of t){let m=l(c);if(!m)continue;let p=PL(c,a,i);for(let u of m(r,p)){let f=await md(e,c,u,n,i);if(f===null)continue;let g=We(c,i);if(g?.mirrorGlobalPath){let h=g.mirrorGlobalPath(f,t),y=h===null?[]:Array.isArray(h)?h:[h];for(let _ of y){let R=await I(join(n,_));e.push({target:c,path:_,content:u.content,currentContent:R??void 0,status:GB(R,u.content)});}}}}}s(nc,"generateFeature");cS();Te();function t7(e){return e?.rootInstructionPath?[e.rootInstructionPath,...zm(e)]:[]}s(t7,"rootDecorationPaths");function $B(e,t,r="project"){return e.map(n=>{let o=We(n.target,r);if(!o)return n;let i=t7(o);if(i.length===0||!i.includes(n.path))return n;let l=n.path===o.rootInstructionPath&&o.renderPrimaryRootInstruction?o.renderPrimaryRootInstruction(t):n.content,c=yw(l);return c===n.content?n:{...n,content:c}})}s($B,"decoratePrimaryRootInstructions");Te();ot();Zu();function DL(e,t,r,n,o){let a=(sn(e)??ne(e))?.mergeGeneratedOutputContent?.(t,r,n,o);if(a!=null)return a;let l=r?.content??t;return l!==null&&Ev.includes(o)?$g(l,n):n}s(DL,"mergeOutputContent");async function jB(e,t,r,n,o){for(let i of t){let a=Bm(i,"permissions",void 0,o)??ne(i)?.generators.generatePermissions;if(a)for(let l of a(r))await md(e,i,l,n,o,{mergeContent:s((c,m,p,u)=>DL(i,c,m,p,u),"mergeContent")});}}s(jB,"generatePermissionsFeature");async function UB(e,t,r,n,o,i){for(let a of t){let l=Bm(a,"hooks",i,o)??ne(a)?.generators.generateHooks;if(!l)continue;let c=PL(a,"hooks",o),m=[...l(r,c)],u=(sn(a)??ne(a))?.postProcessHookOutputs;u&&(m=[...await u(n,r,m)]);for(let f of m)await md(e,a,f,n,o,{mergeContent:s((g,h,y,_)=>DL(a,g,h,y,_),"mergeContent")});}}s(UB,"generateHooksFeature");async function BB(e,t,r,n,o,i){for(let a of t){let c=(sn(a)??ne(a))?.emitScopedSettings;if(!c)continue;let m=c(r,o,i);if(m.length!==0)for(let p of m)await md(e,a,p,n,o,{mergeContent:s((u,f,g,h)=>DL(a,u,f,g,h),"mergeContent")});}}s(BB,"generateScopedSettingsFeature");async function Qo(e){let{config:t,canonical:r,projectRoot:n,scope:o="project",targetFilter:i}=e,a=[...t.targets,...t.pluginTargets??[]],l=i?a.filter(K=>i.includes(K)):a;function c(K,ee){return Bm(K,ee,t,o)}s(c,"resolveGen");let m=t.features.includes("rules"),p=t.features.includes("commands"),u=t.features.includes("agents"),f=t.features.includes("skills"),g=t.features.includes("mcp"),h=t.features.includes("permissions"),y=t.features.includes("hooks"),_=t.features.includes("ignore"),R=[];await nc(R,l,r,n,m,o,"rules",K=>c(K,"rules")),await nc(R,l,r,n,p,o,"commands",K=>c(K,"commands")),await nc(R,l,r,n,u,o,"agents",K=>c(K,"agents")),await nc(R,l,r,n,f,o,"skills",K=>c(K,"skills")),await nc(R,l,r,n,g,o,"mcp",K=>c(K,"mcp")),h&&await jB(R,l,r,n,o),y&&await UB(R,l,r,n,o,t),await nc(R,l,r,n,_,o,"ignore",K=>c(K,"ignore"));let k=new Set(t.features);for(let K of l){let se=(sn(K)??ne(K))?.globalSupport?.scopeExtras;if(se){let Y=await se(r,n,o,k);R.push(...Y);}}(g||_||y||u||h)&&await BB(R,l,r,n,o,k);let w=$B(R,r,o),D=r7(w,o),v=bB(w,r,t,n,o,l,D);return TB(v,n,{packOriginatedKeys:xB(r)}),oy(v.map(FB))}s(Qo,"generate");function r7(e,t){let r=new Map;function n(a){let l=r.get(a);if(l)return l;let c=We(a,t),m=new Set;if(c?.rootInstructionPath){m.add(c.rootInstructionPath);for(let p of zm(c))m.add(p);}return r.set(a,m),m}s(n,"rootPathsFor");let o=new Map;for(let a of e){if(!n(a.target).has(a.path))continue;let l=o.get(a.path)??new Set;l.add(a.target),o.set(a.path,l);}let i=new Set;for(let[a,l]of o)l.size>1&&i.add(a);return i}s(r7,"computeSharedRootInstructionPaths");an();ue();b();ss();var _7=6e4,S7=30,R7=200,I7=2e3;async function Vm(e,t={}){let r=t.retries??S7,n=t.retryDelayMs??R7,o=t.staleMs??_7;await mkdir(dirname(e),{recursive:true});let i=0;for(;;){let a=await k7(e);if(a)return a;let l=await L7(e);if(l!=="young"&&E7(l,o)){await rm$1(e,{recursive:true,force:true}).catch(()=>{});continue}if(i>=r){let c=l==="young"?null:l;throw new Lc(e,O7(c),{label:t.label})}i++,await b7(n);}}s(Vm,"acquireProcessLock");async function k7(e){try{await mkdir(e,{recursive:!1});}catch(a){if(a.code==="EEXIST")return null;throw a}let t=join(e,"holder.json"),r={pid:process.pid,started:Date.now(),hostname:qB()};await writeFile(t,JSON.stringify(r),"utf-8");let n=false,o=s(()=>{if(!n){n=true;try{rmSync(e,{recursive:!0,force:!0});}catch{}}},"cleanup"),i=s(a=>{o(),process.kill(process.pid,a);},"signalHandler");return process.once("SIGINT",i),process.once("SIGTERM",i),process.once("exit",o),async()=>{n||(n=true,process.off("SIGINT",i),process.off("SIGTERM",i),process.off("exit",o),await rm$1(e,{recursive:true,force:true}).catch(()=>{}));}}s(k7,"tryAcquire");async function L7(e){try{let t=await readFile(join(e,"holder.json"),"utf-8"),r=JSON.parse(t);return w7(r)?r:null}catch{try{let t=await stat(e);if(Date.now()-t.mtimeMs<I7)return "young"}catch{}return null}}s(L7,"inspectLock");function E7(e,t){return !e||Date.now()-e.started>t?true:e.hostname&&e.hostname!==qB()?false:!C7(e.pid)}s(E7,"isStale");function C7(e){if(!Number.isInteger(e)||e<=0)return false;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}s(C7,"isProcessAlive");function O7(e){return e?`${e.hostname?`${e.hostname}:`:""}pid ${e.pid} (running ${Date.now()-e.started}ms)`:"unknown (unreadable lock metadata)"}s(O7,"describeHolder");function w7(e){if(typeof e!="object"||e===null)return false;let t=e;return typeof t.pid=="number"&&typeof t.started=="number"}s(w7,"isLockMetadata");function qB(){return hostname()}s(qB,"getHostname");function b7(e){return new Promise(t=>setTimeout(t,e))}s(b7,"sleep");b();Te();async function ZB(e,t=e){let r=await readdir(e,{withFileTypes:true}),n=[];for(let o of r){let i=join(e,o.name);if(o.isDirectory()){n.push(...await ZB(i,t));continue}n.push(relative(t,i).replace(/\\/g,"/"));}return n}s(ZB,"listFiles");async function P7(e,t,r){if(r.has(t))return;let n=join(e,t);await j(n)&&await rm$1(n,{recursive:true,force:true});}s(P7,"removeIfStale");async function eK(e){let t=new Set(e.expectedPaths),r=new Set,n=e.scope??"project";for(let o of e.targets){let i=eL(o,n);if(i){for(let a of i.files)r.add(a);for(let a of i.dirs){let l=join(e.projectRoot,a);if(await j(l))for(let c of await ZB(l))r.add(`${a}/${c}`.replace(/\/+/g,"/"));}}}for(let o of r)await P7(e.projectRoot,o,t);}s(eK,"cleanupStaleGeneratedOutputs");Te();function ay(e,t,r){let n=resolve(e),o=resolve(e,t);if(o===n||o.startsWith(`${n}${sep}`))return o;throw new Error(`Unsafe generated output path for ${r}: ${t}`)}s(ay,"ensurePathInsideRoot");Gp();b();ue();async function FL(e,t){let r=await _i(e.canonicalDir),n=t.length>0?await Hm(t):{},o=await ey(join(e.canonicalDir,"packs")),i=process.env.USER??process.env.USERNAME??"unknown";await qh(e.canonicalDir,{generatedAt:new Date().toISOString(),generatedBy:i,libVersion:Ha(),checksums:r,extends:n,packs:o});try{await x_(rr(),join(e.configDir,".agentsmeshcache"));}catch(a){S.warn(`Could not create .agentsmeshcache symlink: ${a instanceof Error?a.message:String(a)}`);}}s(FL,"writeLockFile");function W7(e,t){return e!=="global"||t.length===0?void 0:t.every(n=>We(n,"global")===void 0)?"no-global-support":void 0}s(W7,"resolveEmptyReason");async function pK(e){let{mode:t,scope:r,dryRun:n,context:o,resolvedExtends:i,flags:a,root:l,options:c,activeTargets:m}=e,p=W7(r,m);if(t==="check")return {exitCode:0,data:{scope:r,mode:t,files:[],summary:ly([]),emptyReason:p}};if(n||await FL(o,i),c.printMatrix!==false){let{runMatrix:u}=await Promise.resolve().then(()=>(dd(),WL)),{renderMatrix:f}=await Promise.resolve().then(()=>(fd(),HL)),g=await u(a,l);f(g,{verbose:a.verbose===true});}return {exitCode:0,data:{scope:r,mode:t,files:[],summary:ly([]),emptyReason:p}}}s(pK,"handleEmptyResults");function uK(e,t){let r=e.filter(a=>a.status!=="skipped"),n=r.filter(a=>a.status!=="unchanged"),o=r.map(a=>({path:a.path,target:a.target,status:a.status}));return {exitCode:n.length===0?0:1,data:{scope:t,mode:"check",files:o,summary:ly(r)}}}s(uK,"buildCheckResult");async function dK(e){let{results:t,dryRun:r,scope:n,mode:o,context:i,activeTargets:a,resolvedExtends:l,flags:c,root:m,options:p}=e,u=r?null:await Vm(join(i.canonicalDir,".generate.lock"),{label:"generate lock"});try{if(!r){for(let h of t)if(h.status==="created"||h.status==="updated"){let y=ay(i.rootBase,h.path,h.target);await L(y,h.content);}await eK({projectRoot:i.rootBase,targets:a,expectedPaths:t.map(h=>h.path),scope:n}),await FL(i,l);}}finally{u&&await u();}if(p.printMatrix!==false){let{runMatrix:h}=await Promise.resolve().then(()=>(dd(),WL)),{renderMatrix:y}=await Promise.resolve().then(()=>(fd(),HL)),_=await h(c,m);y(_,{verbose:c.verbose===true});}let f=t.filter(h=>h.status!=="skipped"),g=f.map(h=>({path:h.path,target:h.target,status:h.status}));return {exitCode:0,data:{scope:n,mode:o,files:g,summary:ly(f)}}}s(dK,"handleGenerateOrDryRun");function ly(e){return {created:e.filter(t=>t.status==="created").length,updated:e.filter(t=>t.status==="updated").length,unchanged:e.filter(t=>t.status==="unchanged").length}}s(ly,"buildSummary");async function qo(e,t,r={}){if(e.features!==void 0)throw new Error("--features is no longer supported. Configure features in agentsmesh.yaml.");let n=t??process.cwd(),o=e.check===true,i=e["dry-run"]===true,a=e.force===true,l=e.global===true?"global":"project",c=e["refresh-cache"]===true||e["no-cache"]===true,m=e.targets,p=typeof m=="string"&&m?m.split(",").map(D=>D.trim()).filter(Boolean):void 0,u=o?"check":i?"dry-run":"generate",{config:f,context:g}=await _e(n,l);await Ve(f,n);let h=f.collaboration?.lock_features??[];if(f.collaboration?.strategy==="lock"&&!a&&h.length>0){let D=await Qh(g.canonicalDir);if(D!==null){let v=await _i(g.canonicalDir),K=Zh(D.checksums,v,h);if(K.length>0){S.error("Locked feature violation (strategy: lock). Modified files:");for(let ee of K)S.error(` ${ee}`);throw S.error("Run 'agentsmesh generate --force' to accept these changes."),new Error("Locked feature violation. Use --force to override.")}}}let{canonical:y,resolvedExtends:_}=await Bt(f,g.configDir,{refreshRemoteCache:c},g.canonicalDir),R=[...f.targets,...f.pluginTargets??[]];if(p){let D=p.filter(v=>!R.includes(v));if(D.length>0)throw new Error(`Unknown target(s) in --targets: ${D.join(", ")}. Available: ${R.join(", ")}`)}let k=p?R.filter(D=>p.includes(D)):R,w=await Qo({config:f,canonical:y,projectRoot:g.rootBase,scope:l,targetFilter:p});return w.length===0?pK({mode:u,scope:l,dryRun:i,context:g,resolvedExtends:_,flags:e,root:n,options:r,activeTargets:k}):o?uK(w,l):dK({results:w,dryRun:i,scope:l,mode:u,context:g,activeTargets:k,resolvedExtends:_,flags:e,root:n,options:r})}s(qo,"runGenerate");ue();Tp();var H7={start(){},stop(){},message(){}};function z7(e){return e?.isTTY??Ai(process.stdout)?{intro:s(r=>Xt.intro(r),"intro"),outro:s(r=>Xt.outro(r),"outro"),note:s((r,n)=>Xt.note(r,n),"note"),spinner:s(()=>Xt.spinner(),"spinner"),success:s(r=>Xt.log.success(r),"success"),error:s(r=>Xt.log.error(r),"error"),warn:s(r=>Xt.log.warn(r),"warn"),info:s(r=>Xt.log.info(r),"info"),step:s(r=>Xt.log.step(r),"step")}:{intro:s(()=>{},"intro"),outro:s(()=>{},"outro"),note:s(()=>{},"note"),spinner:s(()=>H7,"spinner"),success:s(r=>S.success(r),"success"),error:s(r=>S.error(r),"error"),warn:s(r=>S.warn(r),"warn"),info:s(r=>S.info(r),"info"),step:s(r=>S.info(r),"step")}}s(z7,"createUi");var G=z7();function zL(e,t){return e==="global"?`~/${t}`:t}s(zL,"formatDisplayPath");function Xm(e){let{data:t}=e,{scope:r,mode:n,files:o}=t;if(o.length===0){t.emptyReason==="no-global-support"?G.info("No files to generate (target has no global mode \u2014 try without --global)."):G.info("No files to generate (no root rule or rules feature disabled)."),n==="check"&&G.success("Generated files are in sync.");return}if(n==="check"){let c=o.filter(m=>m.status!=="unchanged");if(c.length===0){G.success("Generated files are in sync.");return}for(let m of c)G.error(`[check] ${m.status} ${zL(r,m.path)} (${m.target})`);G.error("Generated files are out of sync. Run 'agentsmesh generate' to update them.");return}if(n==="dry-run"){for(let c of o)G.info(`[dry-run] ${c.status} ${zL(r,c.path)} (${c.target})`);return}for(let c of o)(c.status==="created"||c.status==="updated")&&G.success(`${c.status} ${zL(r,c.path)}`);let{created:i,updated:a,unchanged:l}=t.summary;i>0||a>0?(G.note(`${i} created \xB7 ${a} updated \xB7 ${l} unchanged`,"Generated"),G.info(`Generated: ${i} created, ${a} updated, ${l} unchanged`)):G.info(`Nothing changed. (${l} unchanged)`);}s(Xm,"renderGenerate");b();Te();pn();function cy(){return Ne.filter(e=>!e.excludeFromStarterInit).map(e=>e.id).filter(Kt)}s(cy,"starterInitTargetIds");function my(){return Ne.filter(e=>e.globalSupport!==void 0).map(e=>e.id).filter(Kt)}s(my,"globalInitTargetIds");nt();var Si=2,V7=z$1.union([z$1.literal(1),z$1.literal(2)]),qm=2e3,Qm=z$1.string().regex(/^[a-z0-9-]+$/,"id must be kebab-case"),J7=z$1.string().regex(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d{1,3})?Z?)?$/,"createdAt must be ISO-8601 date or datetime"),Y7=z$1.object({summary:z$1.string().min(1,"topic summary must not be empty")}).strict(),X7=z$1.enum(["file_glob","command_pattern","keyword"]),Q7=z$1.object({kind:X7,pattern:z$1.string().min(1,"trigger pattern must not be empty")}).strict(),q7=z$1.enum(["active","deprecated","superseded"]),Z7=z$1.object({rule:z$1.string().min(1,"lesson rule must not be empty"),rationale:z$1.string().min(1).optional(),topics:z$1.array(Qm).min(1,"lesson must reference at least one topic"),triggers:z$1.array(Qm),evidence:z$1.array(z$1.string().min(1)),status:q7,supersededBy:Qm.optional(),createdAt:J7,scope:z$1.literal("always").optional()}).strict(),oc=z$1.object({version:V7,lessons:z$1.record(Qm,Z7),topics:z$1.record(Qm,Y7),triggers:z$1.record(Qm,Q7)}).strict();function gd(e){return oc.parse(e)}s(gd,"parseGraph");var see=".agentsmesh/lessons/lessons.json";function Zo(e){return resolve(e,see)}s(Zo,"graphFilePath");function hd(e){let t=readFileSync(Zo(e),"utf8");return gd(JSON.parse(t))}s(hd,"loadLessonsGraph");function Ye(e){return existsSync(Zo(e))?hd(e):null}s(Ye,"tryLoadLessonsGraph");function ba(e){let t=Zo(e);if(!existsSync(t))return {status:"absent",graph:null};try{let r=JSON.parse(readFileSync(t,"utf8")),n=r?.version;return typeof n=="number"&&n>Si?{status:"newer-version",graph:null,version:n}:{status:"ok",graph:gd(r)}}catch(r){return {status:"corrupt",graph:null,error:r instanceof Error?r:new Error(String(r))}}}s(ba,"loadLessonsGraphResilient");function hK(e,t){let r=Zo(e);mkdirSync(dirname(r),{recursive:true});let n=`${r}.${process.pid}.tmp`;writeFileSync(n,yd(t),"utf8"),renameSync(n,r);}s(hK,"saveLessonsGraph");function yd(e){return `${JSON.stringify(py(e),null,2)}
|
|
212
|
-
`}s(yd,"serializeGraph");function uy(e){return JSON.stringify(py(e))}s(uy,"stableStringify");function py(e){if(e===null)return null;if(Array.isArray(e))return e.map(py);if(typeof e=="object"){let t=Object.entries(e).sort(([n],[o])=>n<o?-1:1),r={};for(let[n,o]of t)r[n]=py(o);return r}return e}s(py,"canonicalize");var mee=z$1.object({file_globs:z$1.array(z$1.string()),command_patterns:z$1.array(z$1.string()),keywords:z$1.array(z$1.string())}).refine(e=>e.file_globs.length+e.command_patterns.length+e.keywords.length>0,{message:"cluster must declare at least one trigger of any type"}),pee=z$1.object({topic:z$1.string().regex(/^[a-z0-9-]+$/),file:z$1.string().regex(/\.md$/),summary:z$1.string().min(1),triggers:mee}),
|
|
211
|
+
`)}s(NB,"normalizeAgentsContent");function vB(e){return /<!-- agentsmesh:embedded-rules:start -->/.test(e)}s(vB,"hasOptionalAgentsBlock");function Q4(e,t){if(!e.path.endsWith(FB)||e.path!==t.path)return null;let r=ny(e.content),n=ny(t.content);if(!r||!n)return null;let o=r.includes(n),i=n.includes(r);if(o!==i)return o?e:t;if(NB(e.content)===NB(t.content)){let a=vB(e.content),l=vB(t.content);if(a!==l)return a?e:t}return null}s(Q4,"richerAgentsResult");function q4(e,t){if(!e.path.endsWith(FB)||e.path!==t.path)return null;let r=e.target===N_?e:t.target===N_?t:null,n=r===e?t:e;if(!r)return null;let o=ny(r.content).length,i=ny(n.content).length;return o===i?null:o>i?r:n}s(q4,"richerCodexAgentsResult");function oy(e){let t=[];for(let r of e){let n=t.findIndex(i=>i.path===r.path);if(n===-1){t.push(r);continue}let o=t[n];if(o.content!==r.content){let i=Q4(o,r);if(i){t[n]=i;continue}let a=q4(o,r);if(a){t[n]=a;continue}throw new Error(`Conflicting generated outputs for ${r.path}: ${o.target} and ${r.target} produce different content.`)}t[n]=Y4(o,r);}return Z4(t),t}s(oy,"resolveOutputCollisions");function Z4(e){let t=new Map;for(let r of e){let n=r.path.toLowerCase(),o=t.get(n);if(o!==void 0&&o.path!==r.path)throw new Error(`Case-only path collision: "${o.path}" (${o.target}) and "${r.path}" (${r.target}) resolve to the same file on case-insensitive filesystems (Windows/macOS). Rename one canonical source.`);t.set(n,r);}}s(Z4,"assertNoCaseOnlyPathCollisions");function MB(e){let t=e.currentContent===void 0?"created":e.currentContent!==e.content?"updated":"unchanged";return e.status===t?e:{...e,status:t}}s(MB,"refreshResultStatus");b();Te();ot();function $B(e,t){return e===null?"created":e!==t?"updated":"unchanged"}s($B,"computeStatus");function e7(e,t,r){let n=tL(e,t,r);if(n!==null)return n;let o=ne(e);if(!o)return null;let i=r==="global"?o.globalSupport?.layout:o.project;return i?(n=i.rewriteGeneratedPath?i.rewriteGeneratedPath(t):t,n):null}s(e7,"resolveGeneratedOutputPath");async function md(e,t,r,n,o,i){let a=e7(t,r.path,o);if(a===null)return null;let l=await I(join(n,a)),c=e.findIndex(u=>u.path===a&&u.target===t),m=c>=0?e[c]:void 0,p=i?.mergeContent?.(l,m,r.content,a)??r.content;return c>=0&&e.splice(c,1),e.push({target:t,path:a,content:p,currentContent:l??void 0,status:$B(l,p)}),a}s(md,"emitGeneratedOutput");function PL(e,t,r){return {capability:gi(e,r)?.[t]??{level:"none"},scope:r}}s(PL,"featureContext");async function oc(e,t,r,n,o,i,a,l){if(o)for(let c of t){let m=l(c);if(!m)continue;let p=PL(c,a,i);for(let u of m(r,p)){let f=await md(e,c,u,n,i);if(f===null)continue;let g=We(c,i);if(g?.mirrorGlobalPath){let h=g.mirrorGlobalPath(f,t),y=h===null?[]:Array.isArray(h)?h:[h];for(let _ of y){let R=await I(join(n,_));e.push({target:c,path:_,content:u.content,currentContent:R??void 0,status:$B(R,u.content)});}}}}}s(oc,"generateFeature");cS();Te();function t7(e){return e?.rootInstructionPath?[e.rootInstructionPath,...Vm(e)]:[]}s(t7,"rootDecorationPaths");function jB(e,t,r="project"){return e.map(n=>{let o=We(n.target,r);if(!o)return n;let i=t7(o);if(i.length===0||!i.includes(n.path))return n;let l=n.path===o.rootInstructionPath&&o.renderPrimaryRootInstruction?o.renderPrimaryRootInstruction(t):n.content,c=_w(l);return c===n.content?n:{...n,content:c}})}s(jB,"decoratePrimaryRootInstructions");Te();ot();Zu();function DL(e,t,r,n,o){let a=(sn(e)??ne(e))?.mergeGeneratedOutputContent?.(t,r,n,o);if(a!=null)return a;let l=r?.content??t;return l!==null&&Cv.includes(o)?$g(l,n):n}s(DL,"mergeOutputContent");async function UB(e,t,r,n,o){for(let i of t){let a=Km(i,"permissions",void 0,o)??ne(i)?.generators.generatePermissions;if(a)for(let l of a(r))await md(e,i,l,n,o,{mergeContent:s((c,m,p,u)=>DL(i,c,m,p,u),"mergeContent")});}}s(UB,"generatePermissionsFeature");async function BB(e,t,r,n,o,i){for(let a of t){let l=Km(a,"hooks",i,o)??ne(a)?.generators.generateHooks;if(!l)continue;let c=PL(a,"hooks",o),m=[...l(r,c)],u=(sn(a)??ne(a))?.postProcessHookOutputs;u&&(m=[...await u(n,r,m)]);for(let f of m)await md(e,a,f,n,o,{mergeContent:s((g,h,y,_)=>DL(a,g,h,y,_),"mergeContent")});}}s(BB,"generateHooksFeature");async function KB(e,t,r,n,o,i){for(let a of t){let c=(sn(a)??ne(a))?.emitScopedSettings;if(!c)continue;let m=c(r,o,i);if(m.length!==0)for(let p of m)await md(e,a,p,n,o,{mergeContent:s((u,f,g,h)=>DL(a,u,f,g,h),"mergeContent")});}}s(KB,"generateScopedSettingsFeature");async function Qo(e){let{config:t,canonical:r,projectRoot:n,scope:o="project",targetFilter:i}=e,a=[...t.targets,...t.pluginTargets??[]],l=i?a.filter(K=>i.includes(K)):a;function c(K,ee){return Km(K,ee,t,o)}s(c,"resolveGen");let m=t.features.includes("rules"),p=t.features.includes("commands"),u=t.features.includes("agents"),f=t.features.includes("skills"),g=t.features.includes("mcp"),h=t.features.includes("permissions"),y=t.features.includes("hooks"),_=t.features.includes("ignore"),R=[];await oc(R,l,r,n,m,o,"rules",K=>c(K,"rules")),await oc(R,l,r,n,p,o,"commands",K=>c(K,"commands")),await oc(R,l,r,n,u,o,"agents",K=>c(K,"agents")),await oc(R,l,r,n,f,o,"skills",K=>c(K,"skills")),await oc(R,l,r,n,g,o,"mcp",K=>c(K,"mcp")),h&&await UB(R,l,r,n,o),y&&await BB(R,l,r,n,o,t),await oc(R,l,r,n,_,o,"ignore",K=>c(K,"ignore"));let k=new Set(t.features);for(let K of l){let se=(sn(K)??ne(K))?.globalSupport?.scopeExtras;if(se){let Y=await se(r,n,o,k);R.push(...Y);}}(g||_||y||u||h)&&await KB(R,l,r,n,o,k);let w=jB(R,r,o),D=r7(w,o),v=AB(w,r,t,n,o,l,D);return xB(v,n,{packOriginatedKeys:PB(r)}),oy(v.map(MB))}s(Qo,"generate");function r7(e,t){let r=new Map;function n(a){let l=r.get(a);if(l)return l;let c=We(a,t),m=new Set;if(c?.rootInstructionPath){m.add(c.rootInstructionPath);for(let p of Vm(c))m.add(p);}return r.set(a,m),m}s(n,"rootPathsFor");let o=new Map;for(let a of e){if(!n(a.target).has(a.path))continue;let l=o.get(a.path)??new Set;l.add(a.target),o.set(a.path,l);}let i=new Set;for(let[a,l]of o)l.size>1&&i.add(a);return i}s(r7,"computeSharedRootInstructionPaths");an();ue();b();ss();var _7=6e4,S7=30,R7=200,I7=2e3;async function Jm(e,t={}){let r=t.retries??S7,n=t.retryDelayMs??R7,o=t.staleMs??_7;await mkdir(dirname(e),{recursive:true});let i=0;for(;;){let a=await k7(e);if(a)return a;let l=await L7(e);if(l!=="young"&&E7(l,o)){await rm$1(e,{recursive:true,force:true}).catch(()=>{});continue}if(i>=r){let c=l==="young"?null:l;throw new Ec(e,O7(c),{label:t.label})}i++,await b7(n);}}s(Jm,"acquireProcessLock");async function k7(e){try{await mkdir(e,{recursive:!1});}catch(a){if(a.code==="EEXIST")return null;throw a}let t=join(e,"holder.json"),r={pid:process.pid,started:Date.now(),hostname:ZB()};await writeFile(t,JSON.stringify(r),"utf-8");let n=false,o=s(()=>{if(!n){n=true;try{rmSync(e,{recursive:!0,force:!0});}catch{}}},"cleanup"),i=s(a=>{o(),process.kill(process.pid,a);},"signalHandler");return process.once("SIGINT",i),process.once("SIGTERM",i),process.once("exit",o),async()=>{n||(n=true,process.off("SIGINT",i),process.off("SIGTERM",i),process.off("exit",o),await rm$1(e,{recursive:true,force:true}).catch(()=>{}));}}s(k7,"tryAcquire");async function L7(e){try{let t=await readFile(join(e,"holder.json"),"utf-8"),r=JSON.parse(t);return w7(r)?r:null}catch{try{let t=await stat(e);if(Date.now()-t.mtimeMs<I7)return "young"}catch{}return null}}s(L7,"inspectLock");function E7(e,t){return !e||Date.now()-e.started>t?true:e.hostname&&e.hostname!==ZB()?false:!C7(e.pid)}s(E7,"isStale");function C7(e){if(!Number.isInteger(e)||e<=0)return false;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}s(C7,"isProcessAlive");function O7(e){return e?`${e.hostname?`${e.hostname}:`:""}pid ${e.pid} (running ${Date.now()-e.started}ms)`:"unknown (unreadable lock metadata)"}s(O7,"describeHolder");function w7(e){if(typeof e!="object"||e===null)return false;let t=e;return typeof t.pid=="number"&&typeof t.started=="number"}s(w7,"isLockMetadata");function ZB(){return hostname()}s(ZB,"getHostname");function b7(e){return new Promise(t=>setTimeout(t,e))}s(b7,"sleep");b();Te();async function eK(e,t=e){let r=await readdir(e,{withFileTypes:true}),n=[];for(let o of r){let i=join(e,o.name);if(o.isDirectory()){n.push(...await eK(i,t));continue}n.push(relative(t,i).replace(/\\/g,"/"));}return n}s(eK,"listFiles");async function P7(e,t,r){if(r.has(t))return;let n=join(e,t);await j(n)&&await rm$1(n,{recursive:true,force:true});}s(P7,"removeIfStale");async function tK(e){let t=new Set(e.expectedPaths),r=new Set,n=e.scope??"project";for(let o of e.targets){let i=eL(o,n);if(i){for(let a of i.files)r.add(a);for(let a of i.dirs){let l=join(e.projectRoot,a);if(await j(l))for(let c of await eK(l))r.add(`${a}/${c}`.replace(/\/+/g,"/"));}}}for(let o of r)await P7(e.projectRoot,o,t);}s(tK,"cleanupStaleGeneratedOutputs");Te();function ay(e,t,r){let n=resolve(e),o=resolve(e,t);if(o===n||o.startsWith(`${n}${sep}`))return o;throw new Error(`Unsafe generated output path for ${r}: ${t}`)}s(ay,"ensurePathInsideRoot");Gp();b();ue();async function FL(e,t){let r=await _i(e.canonicalDir),n=t.length>0?await zm(t):{},o=await ey(join(e.canonicalDir,"packs")),i=process.env.USER??process.env.USERNAME??"unknown";await qh(e.canonicalDir,{generatedAt:new Date().toISOString(),generatedBy:i,libVersion:za(),checksums:r,extends:n,packs:o});try{await x_(rr(),join(e.configDir,".agentsmeshcache"));}catch(a){S.warn(`Could not create .agentsmeshcache symlink: ${a instanceof Error?a.message:String(a)}`);}}s(FL,"writeLockFile");function W7(e,t){return e!=="global"||t.length===0?void 0:t.every(n=>We(n,"global")===void 0)?"no-global-support":void 0}s(W7,"resolveEmptyReason");async function uK(e){let{mode:t,scope:r,dryRun:n,context:o,resolvedExtends:i,flags:a,root:l,options:c,activeTargets:m}=e,p=W7(r,m);if(t==="check")return {exitCode:0,data:{scope:r,mode:t,files:[],summary:ly([]),emptyReason:p}};if(n||await FL(o,i),c.printMatrix!==false){let{runMatrix:u}=await Promise.resolve().then(()=>(dd(),WL)),{renderMatrix:f}=await Promise.resolve().then(()=>(fd(),HL)),g=await u(a,l);f(g,{verbose:a.verbose===true});}return {exitCode:0,data:{scope:r,mode:t,files:[],summary:ly([]),emptyReason:p}}}s(uK,"handleEmptyResults");function dK(e,t){let r=e.filter(a=>a.status!=="skipped"),n=r.filter(a=>a.status!=="unchanged"),o=r.map(a=>({path:a.path,target:a.target,status:a.status}));return {exitCode:n.length===0?0:1,data:{scope:t,mode:"check",files:o,summary:ly(r)}}}s(dK,"buildCheckResult");async function fK(e){let{results:t,dryRun:r,scope:n,mode:o,context:i,activeTargets:a,resolvedExtends:l,flags:c,root:m,options:p}=e,u=r?null:await Jm(join(i.canonicalDir,".generate.lock"),{label:"generate lock"});try{if(!r){for(let h of t)if(h.status==="created"||h.status==="updated"){let y=ay(i.rootBase,h.path,h.target);await L(y,h.content);}await tK({projectRoot:i.rootBase,targets:a,expectedPaths:t.map(h=>h.path),scope:n}),await FL(i,l);}}finally{u&&await u();}if(p.printMatrix!==false){let{runMatrix:h}=await Promise.resolve().then(()=>(dd(),WL)),{renderMatrix:y}=await Promise.resolve().then(()=>(fd(),HL)),_=await h(c,m);y(_,{verbose:c.verbose===true});}let f=t.filter(h=>h.status!=="skipped"),g=f.map(h=>({path:h.path,target:h.target,status:h.status}));return {exitCode:0,data:{scope:n,mode:o,files:g,summary:ly(f)}}}s(fK,"handleGenerateOrDryRun");function ly(e){return {created:e.filter(t=>t.status==="created").length,updated:e.filter(t=>t.status==="updated").length,unchanged:e.filter(t=>t.status==="unchanged").length}}s(ly,"buildSummary");async function qo(e,t,r={}){if(e.features!==void 0)throw new Error("--features is no longer supported. Configure features in agentsmesh.yaml.");let n=t??process.cwd(),o=e.check===true,i=e["dry-run"]===true,a=e.force===true,l=e.global===true?"global":"project",c=e["refresh-cache"]===true||e["no-cache"]===true,m=e.targets,p=typeof m=="string"&&m?m.split(",").map(D=>D.trim()).filter(Boolean):void 0,u=o?"check":i?"dry-run":"generate",{config:f,context:g}=await _e(n,l);await Ve(f,n);let h=f.collaboration?.lock_features??[];if(f.collaboration?.strategy==="lock"&&!a&&h.length>0){let D=await Qh(g.canonicalDir);if(D!==null){let v=await _i(g.canonicalDir),K=Zh(D.checksums,v,h);if(K.length>0){S.error("Locked feature violation (strategy: lock). Modified files:");for(let ee of K)S.error(` ${ee}`);throw S.error("Run 'agentsmesh generate --force' to accept these changes."),new Error("Locked feature violation. Use --force to override.")}}}let{canonical:y,resolvedExtends:_}=await Bt(f,g.configDir,{refreshRemoteCache:c},g.canonicalDir),R=[...f.targets,...f.pluginTargets??[]];if(p){let D=p.filter(v=>!R.includes(v));if(D.length>0)throw new Error(`Unknown target(s) in --targets: ${D.join(", ")}. Available: ${R.join(", ")}`)}let k=p?R.filter(D=>p.includes(D)):R,w=await Qo({config:f,canonical:y,projectRoot:g.rootBase,scope:l,targetFilter:p});return w.length===0?uK({mode:u,scope:l,dryRun:i,context:g,resolvedExtends:_,flags:e,root:n,options:r,activeTargets:k}):o?dK(w,l):fK({results:w,dryRun:i,scope:l,mode:u,context:g,activeTargets:k,resolvedExtends:_,flags:e,root:n,options:r})}s(qo,"runGenerate");ue();Tp();var H7={start(){},stop(){},message(){}};function z7(e){return e?.isTTY??Ai(process.stdout)?{intro:s(r=>Xt.intro(r),"intro"),outro:s(r=>Xt.outro(r),"outro"),note:s((r,n)=>Xt.note(r,n),"note"),spinner:s(()=>Xt.spinner(),"spinner"),success:s(r=>Xt.log.success(r),"success"),error:s(r=>Xt.log.error(r),"error"),warn:s(r=>Xt.log.warn(r),"warn"),info:s(r=>Xt.log.info(r),"info"),step:s(r=>Xt.log.step(r),"step")}:{intro:s(()=>{},"intro"),outro:s(()=>{},"outro"),note:s(()=>{},"note"),spinner:s(()=>H7,"spinner"),success:s(r=>S.success(r),"success"),error:s(r=>S.error(r),"error"),warn:s(r=>S.warn(r),"warn"),info:s(r=>S.info(r),"info"),step:s(r=>S.info(r),"step")}}s(z7,"createUi");var G=z7();function zL(e,t){return e==="global"?`~/${t}`:t}s(zL,"formatDisplayPath");function Qm(e){let{data:t}=e,{scope:r,mode:n,files:o}=t;if(o.length===0){t.emptyReason==="no-global-support"?G.info("No files to generate (target has no global mode \u2014 try without --global)."):G.info("No files to generate (no root rule or rules feature disabled)."),n==="check"&&G.success("Generated files are in sync.");return}if(n==="check"){let c=o.filter(m=>m.status!=="unchanged");if(c.length===0){G.success("Generated files are in sync.");return}for(let m of c)G.error(`[check] ${m.status} ${zL(r,m.path)} (${m.target})`);G.error("Generated files are out of sync. Run 'agentsmesh generate' to update them.");return}if(n==="dry-run"){for(let c of o)G.info(`[dry-run] ${c.status} ${zL(r,c.path)} (${c.target})`);return}for(let c of o)(c.status==="created"||c.status==="updated")&&G.success(`${c.status} ${zL(r,c.path)}`);let{created:i,updated:a,unchanged:l}=t.summary;i>0||a>0?(G.note(`${i} created \xB7 ${a} updated \xB7 ${l} unchanged`,"Generated"),G.info(`Generated: ${i} created, ${a} updated, ${l} unchanged`)):G.info(`Nothing changed. (${l} unchanged)`);}s(Qm,"renderGenerate");b();Te();pn();function cy(){return Ne.filter(e=>!e.excludeFromStarterInit).map(e=>e.id).filter(Kt)}s(cy,"starterInitTargetIds");function my(){return Ne.filter(e=>e.globalSupport!==void 0).map(e=>e.id).filter(Kt)}s(my,"globalInitTargetIds");nt();var Si=2,V7=z$1.union([z$1.literal(1),z$1.literal(2)]),Zm=2e3,qm=z$1.string().regex(/^[a-z0-9-]+$/,"id must be kebab-case"),J7=z$1.string().regex(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d{1,3})?Z?)?$/,"createdAt must be ISO-8601 date or datetime"),Y7=z$1.object({summary:z$1.string().min(1,"topic summary must not be empty")}).strict(),X7=z$1.enum(["file_glob","command_pattern","keyword"]),Q7=z$1.object({kind:X7,pattern:z$1.string().min(1,"trigger pattern must not be empty")}).strict(),q7=z$1.enum(["active","deprecated","superseded"]),Z7=z$1.object({rule:z$1.string().min(1,"lesson rule must not be empty"),rationale:z$1.string().min(1).optional(),topics:z$1.array(qm).min(1,"lesson must reference at least one topic"),triggers:z$1.array(qm),evidence:z$1.array(z$1.string().min(1)),status:q7,supersededBy:qm.optional(),createdAt:J7,scope:z$1.literal("always").optional()}).strict(),sc=z$1.object({version:V7,lessons:z$1.record(qm,Z7),topics:z$1.record(qm,Y7),triggers:z$1.record(qm,Q7)}).strict();function gd(e){return sc.parse(e)}s(gd,"parseGraph");var see=".agentsmesh/lessons/lessons.json";function Zo(e){return resolve(e,see)}s(Zo,"graphFilePath");function hd(e){let t=readFileSync(Zo(e),"utf8");return gd(JSON.parse(t))}s(hd,"loadLessonsGraph");function Ye(e){return existsSync(Zo(e))?hd(e):null}s(Ye,"tryLoadLessonsGraph");function ba(e){let t=Zo(e);if(!existsSync(t))return {status:"absent",graph:null};try{let r=JSON.parse(readFileSync(t,"utf8")),n=r?.version;return typeof n=="number"&&n>Si?{status:"newer-version",graph:null,version:n}:{status:"ok",graph:gd(r)}}catch(r){return {status:"corrupt",graph:null,error:r instanceof Error?r:new Error(String(r))}}}s(ba,"loadLessonsGraphResilient");function yK(e,t){let r=Zo(e);mkdirSync(dirname(r),{recursive:true});let n=`${r}.${process.pid}.tmp`;writeFileSync(n,yd(t),"utf8"),renameSync(n,r);}s(yK,"saveLessonsGraph");function yd(e){return `${JSON.stringify(py(e),null,2)}
|
|
212
|
+
`}s(yd,"serializeGraph");function uy(e){return JSON.stringify(py(e))}s(uy,"stableStringify");function py(e){if(e===null)return null;if(Array.isArray(e))return e.map(py);if(typeof e=="object"){let t=Object.entries(e).sort(([n],[o])=>n<o?-1:1),r={};for(let[n,o]of t)r[n]=py(o);return r}return e}s(py,"canonicalize");var mee=z$1.object({file_globs:z$1.array(z$1.string()),command_patterns:z$1.array(z$1.string()),keywords:z$1.array(z$1.string())}).refine(e=>e.file_globs.length+e.command_patterns.length+e.keywords.length>0,{message:"cluster must declare at least one trigger of any type"}),pee=z$1.object({topic:z$1.string().regex(/^[a-z0-9-]+$/),file:z$1.string().regex(/\.md$/),summary:z$1.string().min(1),triggers:mee}),SK=z$1.object({version:z$1.literal(1),clusters:z$1.array(pee)});function RK(e,t,r){let n=[...e.triggers.file_globs.map(i=>({kind:"file_glob",pattern:i})),...e.triggers.command_patterns.map(i=>({kind:"command_pattern",pattern:i})),...e.triggers.keywords.map(i=>({kind:"keyword",pattern:i}))],o=[];for(let i of n){let a=`${i.kind}|${i.pattern}`,l=r.get(a);l===void 0&&(l=dee(i),r.set(a,l),t.set(l,{kind:i.kind,pattern:i.pattern})),o.includes(l)||o.push(l);}return o}s(RK,"collectClusterTriggerIds");var uee={file_glob:"glob",command_pattern:"cmd",keyword:"kw"};function dee(e){let t=createHash("sha1").update(`${e.kind}|${e.pattern}`).digest("hex").slice(0,8);return `t-${uee[e.kind]}-${t}`}s(dee,"makeTriggerId");var fee=/^##\s+Rules\b.*$/i,gee=/^##\s+/,hee=/^(\d+)\.\s+(.+?)\s*$/,_K=/\s*\(Evidence:?\s+([^)]+)\)\s*$/,yee=/L\d+/g;function IK(e){let t=e.split(/\r?\n/),r=false,n=[];for(let o of t){if(!r){fee.test(o)&&(r=true);continue}if(gee.test(o))break;let i=hee.exec(o);if(i===null)continue;let a=Number(i[1]),l=i[2],c=[],m=_K.exec(l);for(;m!==null;){let u=m[1].match(yee);u!==null&&c.unshift(...u),l=l.slice(0,m.index).trimEnd(),m=_K.exec(l);}n.push({index:a,body:l,evidence:c});}return n}s(IK,"parseRulesSection");var _ee=["index.yaml","journal.md","journal.legacy.md","topics","distill-ledger.yaml","distill-proposal.md"];function dy(e){let t=[];for(let r of _ee){let n=join(e,r);existsSync(n)&&(rmSync(n,{recursive:true,force:true}),t.push(n));}return t}s(dy,"deleteLegacyArtifacts");function JL(e){return e.trim().replace(/\s+/g," ").toLowerCase()}s(JL,"normalizeRule");function _d(e,t){let r=[...e];for(let n of t)r.includes(n)||r.push(n);return r}s(_d,"union");function LK(e,t){let r=[...(t.files??[]).map(a=>({kind:"file_glob",pattern:a.replaceAll("\\","/")})),...(t.commands??[]).map(a=>({kind:"command_pattern",pattern:a})),...(t.keywords??[]).map(a=>({kind:"keyword",pattern:a}))],n=new Map;for(let[a,l]of Object.entries(e.triggers))n.set(VL(l),a);let o=[],i=[];for(let a of r){let l=VL(a),c=n.get(l);if(c!==void 0){o.includes(c)||o.push(c);continue}let m=Ree(a);e.triggers[m]={kind:a.kind,pattern:a.pattern},n.set(l,m),o.push(m),i.push(m);}return {triggerIds:o,newTriggerIds:i}}s(LK,"mergeTriggers");function VL(e){return `${e.kind}|${e.pattern}`}s(VL,"triggerKey");var See={file_glob:"glob",command_pattern:"cmd",keyword:"kw"};function Ree(e){let t=createHash("sha1").update(VL(e)).digest("hex").slice(0,8);return `t-${See[e.kind]}-${t}`}s(Ree,"makeTriggerId");function EK(e,t,r){let n=Iee(r),o=n.length>0?`${t}-${n}`:`${t}-${createHash("sha1").update(r).digest("hex").slice(0,8)}`,i=o,a=2;for(;e.lessons[i]!==void 0;)i=`${o}-${a}`,a+=1;return i}s(EK,"makeLessonId");function Iee(e){return e.replace(/[^a-z0-9 ]+/g," ").split(/\s+/).filter(r=>r.length>0).slice(0,5).join("-").slice(0,40).replace(/-+$/,"")}s(Iee,"ruleToSlug");function CK(){let e=new Date,t=e.getUTCFullYear(),r=String(e.getUTCMonth()+1).padStart(2,"0"),n=String(e.getUTCDate()).padStart(2,"0");return `${t}-${r}-${n}`}s(CK,"todayIso");var Yn=class extends Error{constructor(r){super(`Unknown topic: ${r}. Pass allowNewTopic + topicSummary to create it.`);this.topic=r;this.name="UnknownTopicError";}static{s(this,"UnknownTopicError");}code="UNKNOWN_TOPIC"},Ri=class extends Error{constructor(r,n){super(`Lesson rule is ${r} characters (max ${n}). A rule should be one imperative sentence \u2014 trim it to the essential instruction, or split it into separate lessons.`);this.length=r;this.max=n;this.name="RuleTooLongError";}static{s(this,"RuleTooLongError");}code="OVERSIZED_RULE"},Ii=class extends Error{static{s(this,"NoTriggerError");}code="NO_TRIGGER";constructor(){super("A lesson needs at least one trigger to be recallable. Pass --trigger-file <glob> (preferred), --trigger-cmd <regex>, or --trigger-kw <text>."),this.name="NoTriggerError";}},ki=class extends Error{constructor(r){super(`This capture would create a lesson with no effective trigger \u2014 every trigger is dead on the mandatory --file/--cmd recall path, so the lesson could never be recalled there:
|
|
213
213
|
`+r.map(n=>` \u2022 ${n.kind} "${n.pattern}" \u2014 ${n.reason}`).join(`
|
|
214
214
|
`)+`
|
|
215
|
-
Fix: add a precise --trigger-file <glob> (preferred) or a valid --trigger-cmd <regex>; for a keyword, drop the stopwords (e.g. "state art" not "state of the art").`);this.deadTriggers=r;this.name="UnrecallableLessonError";}static{s(this,"UnrecallableLessonError");}code="UNRECALLABLE_LESSON"};var kee=new Set(["the","a","an","to","of","in","and","or","for","is","on","at","with","be","as","it","that","this","its","must"]);function yt(e){return e.toLowerCase().split(/[^a-z0-9]+/).filter(t=>t.length>=2&&!kee.has(t))}s(yt,"tokenize");function CK(e){let t=[];return e.keyword!==void 0&&t.push(e.keyword),e.file!==void 0&&t.push(e.file),e.command!==void 0&&t.push(e.command),yt(t.join(" "))}s(CK,"queryTerms");function OK(e){let t=[],r=new Map,n=0,o=0;for(let l of Object.values(e.lessons)){if(l.status!=="active")continue;let c=yt(l.rule);o+=1,n+=c.length,t.push(c.length);for(let m of new Set(c))r.set(m,(r.get(m)??0)+1);}let i=Math.max(o,1),a=new Map;for(let[l,c]of r)a.set(l,Math.log(1+(i-c+.5)/(c+.5)));return {idf:a,avgdl:n/i||1}}s(OK,"buildCorpus");function wK(e,t,r){let n=yt(t),o=n.length||1,i=new Map;for(let l of n)i.set(l,(i.get(l)??0)+1);let a=0;for(let l of new Set(e)){let c=i.get(l)??0;if(c===0)continue;let m=r.idf.get(l);a+=m*(c*(1.5+1))/(c+1.5*(1-.75+.75*o/r.avgdl));}return a}s(wK,"bm25");var Sd=5;function fy(e){return yt(e).length>Sd}s(fy,"isLowSignalKeyword");function Lee(e){return e.toLowerCase().split(/[^a-z0-9]+/).filter(t=>t.length>0)}s(Lee,"splitRawTokens");function Zm(e){let t=Lee(e);return t.length<2?false:yt(e).length!==t.length}s(Zm,"keywordNeedleLosesTokens");function AK(e){let t=new Set;for(let r of Object.values(e.lessons))if(r.status==="active")for(let n of r.triggers)t.add(n);return t}s(AK,"activeTriggerIds");function Rd(e,t){let r=AK(e),n=[...t],o=new Set;for(let[i,a]of Object.entries(e.triggers)){if(a.kind!=="file_glob"||!r.has(i))continue;let l=bK(a.pattern,{dot:true});n.some(c=>l(c))||o.add(i);}return o}s(Rd,"deadFileGlobIds");function TK(e,t,r){for(let n of Rd(e,r))t.push({level:"warning",code:"DEAD_FILE_GLOB",message:`file_glob trigger "${n}" (${e.triggers[n]?.pattern??""}) matches no file in the working tree \u2014 the lesson is unreachable via this trigger (a rename likely moved the path). Re-point it at the current path, or detach it with \`lessons untrigger\`, or run \`lessons prune --apply\`.`,triggerId:n});}s(TK,"collectDeadFileGlobs");function xK(e,t){let r=bK(e,{dot:true}),n=0;for(let o of t)r(o)&&(n+=1);return n}s(xK,"fileGlobMatchCount");var Eee=/^\^(pnpm|npm|npx|yarn|bun)\b/;function PK(e,t){let r=AK(e);for(let[n,o]of Object.entries(e.triggers))o.kind==="command_pattern"&&r.has(n)&&Eee.test(o.pattern)&&t.push({level:"warning",code:"RUNNER_ANCHORED_PATTERN",message:`command_pattern trigger "${n}" (${o.pattern}) is anchored to one runner \u2014 it won't fire for the same task via another runner (e.g. \`npx\` vs \`pnpm\`). Drop the \`^<runner>\` anchor and key on the task (e.g. \`\\bvitest\\b\`).`,triggerId:n});}s(PK,"collectRunnerAnchoredPatterns");var DK=40,gy=8;function NK(e){let t=e.trim();return t==="*"||t==="**"?true:t.includes("**")?t.slice(t.lastIndexOf("/")+1).startsWith("*"):false}s(NK,"isBroadGlob");function YL(e,t,r){let n=e.lessons[t];if(n===void 0)return [];let o=[];n.triggers.length>gy&&o.push({code:"OVERSIZED_LESSON_TRIGGERS",message:`Lesson "${t}" has ${n.triggers.length} triggers (recommended \u2264 ${gy}); broad trigger sets fire on too many edits and dilute recall \u2014 prefer a few specific triggers.`});let i=n.triggers.map(m=>e.triggers[m]).filter(m=>m!==void 0),a=i.filter(m=>m.kind==="file_glob"&&NK(m.pattern)).map(m=>m.pattern);a.length>0&&o.push({code:"BROAD_GLOB_TRIGGER",message:`Lesson "${t}" has broad file glob(s) (${a.join(", ")}) that match large swaths of the tree; prefer a path specific to the lesson.`}),i.length>0&&i.every(m=>m.kind==="keyword")&&o.push({code:"KEYWORD_ONLY_LESSON",message:`Lesson "${t}" has only keyword triggers; mandatory --file/--cmd recall surfaces these only when the keyword appears as a path/command token, so it fires less reliably \u2014 add a file_glob or command_pattern trigger for precise recall.`});let l=i.filter(m=>m.kind==="keyword"&&fy(m.pattern)).map(m=>m.pattern);l.length>0&&o.push({code:"LOW_SIGNAL_KEYWORD",message:`Lesson "${t}" has long keyword trigger(s) (${l.join(", ")}); recall matches a keyword only as a substring of --keyword or a contiguous token-run in the file/command, so a pattern past ${Sd} tokens rarely fires \u2014 use a short distinctive phrase.`});let c=i.filter(m=>m.kind==="keyword"&&Zm(m.pattern)).map(m=>m.pattern);if(c.length>0&&o.push({code:"STOPWORD_KEYWORD",message:`Lesson "${t}" has keyword trigger(s) containing stopwords/short words (${c.join(", ")}); recall filters them from the pattern but NOT from the file/command text, so the phrase can never match contiguously on the --file/--cmd path \u2014 drop the stopwords (e.g. "state art" instead of "state of the art").`}),r!==void 0){let m=Rd(e,r),p=n.triggers.filter(f=>m.has(f)).map(f=>e.triggers[f]?.pattern).filter(f=>f!==void 0);p.length>0&&o.push({code:"DEAD_GLOB",message:`Lesson "${t}" has file_glob trigger(s) (${p.join(", ")}) that match no file in the working tree \u2014 likely a rename. Re-point them at the current path, or the lesson is unreachable via those globs.`});let u=i.filter(f=>f.kind==="file_glob"&&!NK(f.pattern)).filter(f=>xK(f.pattern,r)>DK).map(f=>f.pattern);u.length>0&&o.push({code:"WIDE_GLOB_MATCH",message:`Lesson "${t}" has file glob(s) (${u.join(", ")}) matching more than ${DK} files in the working tree; narrow to the file-CLASS where the rule actually applies so it does not fire on unrelated edits.`});}return o}s(YL,"inspectCapturedLesson");var Cee=.6;function vK(e,t){let r=e.lessons[t];if(r===void 0)return null;let n=new Set(yt(r.rule));if(n.size===0)return null;let o=null;for(let[i,a]of Object.entries(e.lessons)){if(i===t||a.status!=="active")continue;let l=new Set(yt(a.rule));if(l.size===0)continue;let c=Oee(n,l);c>=Cee&&(o===null||c>o.score)&&(o={id:i,score:c});}return o===null?null:{code:"NEAR_DUPLICATE_LESSON",message:`Lesson "${t}" closely resembles active lesson "${o.id}" (~${Math.round(o.score*100)}% token overlap); consider updating "${o.id}" instead of adding a paraphrase (recall would surface both).`}}s(vK,"nearDuplicateWarning");function Oee(e,t){let r=0;for(let n of e)t.has(n)&&(r+=1);return r/(e.size+t.size-r)}s(Oee,"jaccard");var FK=".lessons.lock";function MK(e){return resolve(e,".agentsmesh/lessons",FK)}s(MK,"lessonsLockPath");async function hy(e,t={}){let r=MK(e);return await mkdir(dirname(r),{recursive:true}),Vm(r,{...t,label:"lessons lock"})}s(hy,"acquireLessonsLock");function $K(e,t){for(let[r,n]of Object.entries(e.lessons)){for(let o of n.topics)e.topics[o]===void 0&&t.push({level:"error",code:"DANGLING_TOPIC",message:`Lesson "${r}" references unknown topic "${o}".`,lessonId:r,topicId:o});for(let o of n.triggers)e.triggers[o]===void 0&&t.push({level:"error",code:"DANGLING_TRIGGER",message:`Lesson "${r}" references unknown trigger "${o}".`,lessonId:r,triggerId:o});n.supersededBy!==void 0&&e.lessons[n.supersededBy]===void 0&&t.push({level:"error",code:"DANGLING_SUPERSEDER",message:`Lesson "${r}" supersededBy unknown lesson "${n.supersededBy}".`,lessonId:r});}}s($K,"collectDanglingRefs");function jK(e,t){for(let[r,n]of Object.entries(e.lessons)){for(let o of GK(n.topics))t.push({level:"error",code:"DUPLICATE_TOPIC_REF",message:`Lesson "${r}" references topic "${o}" more than once.`,lessonId:r,topicId:o});for(let o of GK(n.triggers))t.push({level:"error",code:"DUPLICATE_TRIGGER_REF",message:`Lesson "${r}" references trigger "${o}" more than once.`,lessonId:r,triggerId:o});}}s(jK,"collectDuplicateRefs");function GK(e){let t=new Set,r=new Set;for(let n of e)t.has(n)?r.add(n):t.add(n);return [...r]}s(GK,"firstDuplicates");function UK(e,t){for(let[r,n]of Object.entries(e.lessons))n.status==="superseded"&&n.supersededBy===void 0&&t.push({level:"error",code:"SUPERSEDED_WITHOUT_TARGET",message:`Lesson "${r}" has status "superseded" but no supersededBy target.`,lessonId:r}),n.status==="active"&&n.supersededBy!==void 0&&t.push({level:"error",code:"ACTIVE_WITH_SUPERSEDER",message:`Lesson "${r}" has status "active" but declares supersededBy.`,lessonId:r});}s(UK,"collectStatusInvariants");function BK(e,t){for(let[r,n]of Object.entries(e.lessons)){if(n.supersededBy===void 0)continue;if(n.supersededBy===r){t.push({level:"error",code:"SELF_SUPERSEDED",message:`Lesson "${r}" is superseded by itself.`,lessonId:r});continue}let o=e.lessons[n.supersededBy];o!==void 0&&o.status!=="active"&&t.push({level:"error",code:"INACTIVE_SUPERSEDER",message:`Lesson "${r}" is superseded by "${n.supersededBy}", which is itself ${o.status} \u2014 the chain dead-ends with no live replacement.`,lessonId:r});}Tee(e,t);}s(BK,"collectLifecycleInvariants");function Tee(e,t){let r=new Set;for(let n of Object.keys(e.lessons)){let o=new Set,i=n;for(;i!==void 0;){if(o.has(i)){if(i!==n||r.has(i))break;r.add(i),t.push({level:"error",code:"SUPERSEDE_CYCLE",message:`Lesson "${n}" is part of a supersededBy cycle.`,lessonId:n});break}o.add(i);let a=e.lessons[i]?.supersededBy;if(a===i)break;i=a;}}}s(Tee,"collectSupersedeCycles");function KK(e,t){for(let[r,n]of Object.entries(e.lessons))n.status==="active"&&n.triggers.length===0&&t.push({level:"warning",code:"UNREACHABLE_LESSON",message:`Active lesson "${r}" has no triggers and can never be recalled.`,lessonId:r});}s(KK,"collectReachability");function WK(e,t){let r=new Set,n=new Set;for(let o of Object.values(e.lessons)){for(let i of o.topics)r.add(i);for(let i of o.triggers)n.add(i);}for(let o of Object.keys(e.topics))r.has(o)||t.push({level:"warning",code:"ORPHAN_TOPIC",message:`Topic "${o}" is not referenced by any lesson.`,topicId:o});for(let o of Object.keys(e.triggers))n.has(o)||t.push({level:"warning",code:"ORPHAN_TRIGGER",message:`Trigger "${o}" is not referenced by any lesson.`,triggerId:o});}s(WK,"collectOrphans");var XL=class{static{s(this,"Builder");}states=[];alloc(){if(this.states.length>=2e3)throw new Error("NFA state limit exceeded (2000); pattern expands too large");return this.states.push({eps:[],asserts:[],chars:[]}),this.states.length-1}};function xee(e){return e!==`
|
|
216
|
-
`&&e!=="\r"&&e!=="\u2028"&&e!=="\u2029"}s(xee,"isNonLineTerminator");function
|
|
217
|
-
`;case "r":return "\r";case "f":return "\f";case "v":return "\v";case "0":return "\0";default:return e}}s(tE,"escapeLiteral");function XK(e){let t=0,r=s(()=>e[t],"peek"),n=s(()=>e[t++],"eat");function o(){let h=[i()];for(;r()==="|";)t+=1,h.push(i());return h.length===1?h[0]:{k:"alt",opts:h}}s(o,"parseAlt");function i(){let h=[];for(;t<e.length&&r()!=="|"&&r()!==")";)h.push(a());return h.length===0?{k:"empty"}:h.length===1?h[0]:{k:"concat",items:h}}s(i,"parseConcat");function a(){let h=c(),y=r();if(y==="*"||y==="+"||y==="?")return t+=1,r()==="?"&&(t+=1),y==="*"?{k:"star",node:h}:y==="+"?{k:"plus",node:h}:{k:"opt",node:h};if(y==="{"){let _=l();if(_!==null)return YK(h,_.min,_.max)}return h}s(a,"parseQuantified");function l(){let h=/^\{(\d+)(,(\d*)?)?\}/.exec(e.slice(t));if(h===null)return null;t+=h[0].length,r()==="?"&&(t+=1);let y=Number(h[1]),_=h[2]===void 0?y:h[3]===""||h[3]===void 0?1/0:Number(h[3]);if(y>yy||_!==1/0&&_>yy)throw new Lr(`Repeat count over ${yy} not supported: {${h[1]}\u2026}`);return {min:y,max:_}}s(l,"tryParseBrace");function c(){let h=r();if(h==="(")return m();if(h==="[")return u();if(h==="\\")return p();if(h===".")return t+=1,{k:"any"};if(h==="^")return t+=1,{k:"assert",kind:"start"};if(h==="$")return t+=1,{k:"assert",kind:"end"};if(h===void 0||h==="*"||h==="+"||h==="?"||h===")")throw new Lr(`Unexpected '${h??"<end>"}' in pattern`);return t+=1,{k:"char",ch:h}}s(c,"parseAtom");function m(){if(t+=1,r()==="?"){let y=e[t+1];if((y==="="||y==="!"||y==="<")&&!(y==="<"&&/[A-Za-z]/.test(e[t+2]??"")))throw new Lr("Lookaround assertions are not supported");if(y===":")t+=2;else if(y==="<"){for(t+=2;t<e.length&&e[t]!==">";)t+=1;t+=1;}}let h=o();if(r()!==")")throw new Lr("Unbalanced group");return t+=1,h}s(m,"parseGroup");function p(){t+=1;let h=r();if(h===void 0)throw new Lr("Trailing backslash");if(/[1-9]/.test(h)||h==="k")throw new Lr("Backreferences are not supported");if(t+=1,h==="b")return {k:"assert",kind:"wordB"};if(h==="B")return {k:"assert",kind:"nonWordB"};let y=QL(h);if(y!==null)return {k:"class",test:y};if(h==="x"||h==="u"||h==="c"){let{ch:_,len:R}=h==="c"?ZL(e,t):qL(e,t,h);return t+=R,{k:"char",ch:_}}return {k:"char",ch:tE(h)}}s(p,"parseEscape");function u(){t+=1;let h=r()==="^";h&&(t+=1);let y=[];for(;t<e.length&&r()!=="]";)y.push(f());if(r()!=="]")throw new Lr("Unterminated character class");t+=1;let _=s(R=>y.some(k=>k(R)),"base");return {k:"class",test:h?R=>!_(R):_}}s(u,"parseClass");function f(){let h;if(r()==="\\"){t+=1;let y=n(),_=QL(y);if(_!==null)return _;let R=eE(e,t,y);t+=R.len,h=R.ch;}else h=n();if(r()==="-"&&e[t+1]!==void 0&&e[t+1]!=="]"){t+=1;let y;if(r()==="\\"){t+=1;let k=n(),w=eE(e,t,k);t+=w.len,y=w.ch;}else y=n();let _=h.codePointAt(0),R=y.codePointAt(0);return k=>{let w=k.codePointAt(0);return w>=_&&w<=R}}return y=>y===h}s(f,"parseClassMember");let g=o();if(t!==e.length)throw new Lr(`Unexpected '${r()}' at ${t}`);return g}s(XK,"parseRegex");var rE=new Map;function nE(e){let t=rE.get(e);if(t!==void 0||rE.has(e))return t??null;let r;try{r=VK(XK(e));}catch{r=null;}return rE.set(e,r),r}s(nE,"compileLinearMatcher");var QK=1e3;function Id(e){return e.length>QK?false:nE(e)!==null}s(Id,"isSafeRegexPattern");function qK(e){return e.length>QK?null:nE(e)}s(qK,"getCommandMatcher");function eW(e,t){let r=new Map;for(let[n,o]of Object.entries(e.lessons)){if(o.status!=="active")continue;let i=vee(o.rule),a=r.get(i)??[];a.push(n),r.set(i,a);}for(let[n,o]of r){if(o.length<2)continue;let i=[...o].sort();for(let a of i){let l=i.filter(c=>c!==a);t.push({level:"error",code:"DUPLICATE_RULE",message:`Lesson "${a}" duplicates rule text of: ${l.join(", ")} (normalized key: "${n.slice(0,60)}").`,lessonId:a});}}}s(eW,"collectDuplicateRules");function tW(e,t){for(let[r,n]of Object.entries(e.triggers))if(n.kind==="command_pattern"){try{new RegExp(n.pattern);}catch(o){t.push({level:"error",code:"INVALID_TRIGGER_PATTERN",message:`Trigger "${r}" has an invalid command_pattern regex (${n.pattern}): ${o instanceof Error?o.message:String(o)}.`,triggerId:r});continue}Id(n.pattern)||t.push({level:"error",code:"UNSAFE_TRIGGER_PATTERN",message:`Trigger "${r}" has a command_pattern regex outside the provably-linear subset (${n.pattern}): it can backtrack catastrophically (e.g. a quantified group like (a+)+ or (a|aa)+, adjacent repetition like a+a+, or a backreference/lookaround). Rewrite using a linear pattern.`,triggerId:r});}}s(tW,"collectInvalidTriggerPatterns");function rW(e,t){for(let[r,n]of Object.entries(e.triggers))n.kind==="file_glob"&&n.pattern.includes("\\")&&t.push({level:"error",code:"BACKSLASH_GLOB_PATTERN",message:`Trigger "${r}" has a file_glob pattern with a backslash (${n.pattern}); recall normalizes paths to forward slashes, so it never fires. Replace \\ with /.`,triggerId:r});}s(rW,"collectBackslashGlobPatterns");function nW(e,t){let r=new Map;for(let[n,o]of Object.entries(e.triggers)){let i=`${o.kind}|${o.pattern}`,a=r.get(i)??[];a.push(n),r.set(i,a);}for(let[n,o]of r){if(o.length<2)continue;let i=[...o].sort();for(let a of i){let l=i.filter(c=>c!==a);t.push({level:"error",code:"DUPLICATE_TRIGGER",message:`Trigger "${a}" duplicates (kind, pattern) of: ${l.join(", ")} (key: "${n}").`,triggerId:a});}}}s(nW,"collectDuplicateTriggers");var ZK=10;function oW(e,t){let r=new Map;for(let i of Object.values(e.lessons))if(i.status==="active")for(let a of i.triggers)r.set(a,(r.get(a)??0)+1);let n=0,o=0;for(let i of r.values())i>ZK&&(n+=1),i>o&&(o=i);n>0&&t.push({level:"warning",code:"HIGH_FANOUT_TRIGGERS",message:`${n} trigger(s) each match more than ${ZK} active lessons (max ${o}); recall returns the ranked top by default \u2014 consider per-lesson trigger refinement to improve precision.`});}s(oW,"collectFanout");function sW(e,t){let r=new Set;for(let n of Object.values(e.lessons))if(n.status==="active")for(let o of n.triggers)r.add(o);for(let[n,o]of Object.entries(e.triggers))o.kind==="keyword"&&r.has(n)&&fy(o.pattern)&&t.push({level:"warning",code:"LOW_SIGNAL_KEYWORD",message:`Keyword trigger "${n}" carries more than ${Sd} tokens (${o.pattern}); recall matches a keyword only as a substring of --keyword or a contiguous token-run in the file/command, so it rarely fires \u2014 use a short distinctive phrase.`,triggerId:n});}s(sW,"collectLowSignalKeywords");function iW(e,t){let r=new Set;for(let n of Object.values(e.lessons))if(n.status==="active")for(let o of n.triggers)r.add(o);for(let[n,o]of Object.entries(e.triggers))o.kind==="keyword"&&r.has(n)&&(yt(o.pattern).length!==0&&!Zm(o.pattern)||t.push({level:"warning",code:"STOPWORD_KEYWORD",message:`Keyword trigger "${n}" (${o.pattern}) loses tokens to stopword filtering, so its needle can never appear as a contiguous run on the mandatory --file/--cmd recall path \u2014 drop the stopwords (e.g. "state art" instead of "state of the art"), or detach it with \`lessons untrigger\`.`,triggerId:n}));}s(iW,"collectStopwordKeywords");function vee(e){return e.trim().replace(/\s+/g," ").toLowerCase()}s(vee,"normalizeRule");function Xn(e,t={}){let r=[],n=oc.safeParse(e);return n.success?($K(e,r),jK(e,r),UK(e,r),BK(e,r),eW(e,r),KK(e,r),tW(e,r),rW(e,r),nW(e,r),WK(e,r),oW(e,r),sW(e,r),iW(e,r),PK(e,r),t.knownPaths!==void 0&&TK(e,r,t.knownPaths),{ok:r.every(i=>i.level!=="error"),findings:r}):(r.push({level:"error",code:"SCHEMA_INVALID",message:n.error.issues.map(i=>`${i.path.join(".")}: ${i.message}`).join("; ")}),{ok:false,findings:r})}s(Xn,"validateLessonsGraph");function Fee(){return {version:Si,lessons:{},topics:{},triggers:{}}}s(Fee,"emptyGraph");function aW(e){return `${e.code}|${e.triggerId??""}|${e.lessonId??""}`}s(aW,"findingKey");function Mee(e){return new Set(e.findings.filter(t=>t.level==="error").map(aW))}s(Mee,"errorSignatures");async function ic(e,t,r={}){let n=await hy(e,{retries:r.retries});try{let o=Ye(e)??Fee(),i=Mee(Xn(o)),a=await t(o),c=Xn(o).findings.filter(m=>m.level==="error"&&!i.has(aW(m)));if(c.length>0){let m=c.map(p=>`${p.code}: ${p.message}`).join("; ");throw new Error(`mutateLessonsGraph: refusing to write \u2014 this change introduces ${m}. (Pre-existing graph issues are not blocking; run \`agentsmesh lessons validate\` to review and \`lessons untrigger\`/\`prune\` to repair them.)`)}return o.version=Si,hK(e,o),a}finally{await n();}}s(ic,"mutateLessonsGraphLocked");async function At(e,t,r={}){return await rt(e),ic(e,t,r)}s(At,"mutateLessonsGraph");function Gee(e,t){let r=[];for(let n of t){let o=e.triggers[n];if(o===void 0)continue;let i=$ee(o.kind,o.pattern);i!==null&&r.push({id:n,kind:o.kind,pattern:o.pattern,reason:i});}return r}s(Gee,"ineffectiveTriggers");function $ee(e,t){if(e==="keyword")return yt(t).length===0?"keyword has no matchable token after stopword filtering \u2014 it cannot fire on the mandatory --file/--cmd recall path":Zm(t)?"keyword contains stopwords/short words, so its needle can never appear as a contiguous run on the mandatory --file/--cmd recall path":null;if(e==="command_pattern"){let r=true;try{new RegExp(t);}catch{r=false;}return r?Id(t)?null:"regex is outside the provably-linear engine \u2014 recall skips it (ReDoS guard), so it never fires":"invalid regex \u2014 recall compiles it with new RegExp and swallows the throw as a non-match, so it never fires"}return null}s($ee,"ineffectiveReason");function lW(e,t){return Gee(e,t).filter(r=>r.kind!=="command_pattern")}s(lW,"blockingDeadTriggers");function jee(e){return (e.files?.length??0)+(e.commands?.length??0)+(e.keywords?.length??0)}s(jee,"countInputTriggers");async function _y(e,t,r={}){return At(e,n=>oE(n,t,r),{retries:r.retries})}s(_y,"addLesson");function oE(e,t,r){let n=JL(t.rule),o=t.rule.trim();if(o.length>qm)throw new Ri(o.length,qm);let i=Uee(e,n),a=e.topics[t.topic]===void 0;if(a){if(r.allowNewTopic!==true)throw new Yn(t.topic);if(r.topicSummary===void 0||r.topicSummary.length===0)throw new Error(`addLesson: new topic "${t.topic}" requires topicSummary.`);e.topics[t.topic]={summary:r.topicSummary};}let l=r.allowNoTrigger===true||t.scope==="always";if(!l){let g=i!==null?e.lessons[i]?.triggers.length??0:0;if(jee(t.triggers)===0&&g===0)throw new Ii}let{triggerIds:c,newTriggerIds:m}=kK(e,t.triggers);if(!l){let g=i!==null?_d(e.lessons[i].triggers,c):c,h=lW(e,g);if(g.length>0&&h.length===g.length)throw new ki(h)}if(i!==null){let g=e.lessons[i];return e.lessons[i]={...g,topics:_d(g.topics,[t.topic]),triggers:_d(g.triggers,c),evidence:_d(g.evidence,t.evidence??[]),...g.rationale===void 0&&t.rationale!==void 0?{rationale:t.rationale}:{},...t.scope==="always"?{scope:"always"}:{}},{id:i,isNewLesson:false,isNewTopic:a,newTriggerIds:m,warnings:YL(e,i,r.knownPaths)}}let p=LK(e,t.topic,n);e.lessons[p]={rule:o,topics:[t.topic],triggers:c,evidence:t.evidence===void 0?[]:[...t.evidence],status:"active",createdAt:t.createdAt??EK(),...t.rationale===void 0?{}:{rationale:t.rationale},...t.scope==="always"?{scope:"always"}:{}};let u=YL(e,p,r.knownPaths),f=vK(e,p);return {id:p,isNewLesson:true,isNewTopic:a,newTriggerIds:m,warnings:f===null?u:[...u,f]}}s(oE,"addLessonInto");function Uee(e,t){for(let[r,n]of Object.entries(e.lessons))if(n.status==="active"&&JL(n.rule)===t)return r;return null}s(Uee,"findExistingLessonByRule");async function cW(e,t,r,n,o){let i=0,a=new Set,l=new Set;await ic(e,m=>{i=0,a.clear(),l.clear();for(let p of r){let u=oE(m,p,{allowNewTopic:!0,topicSummary:n.get(p.topic),allowNoTrigger:!0});u.isNewLesson&&(i+=1);for(let f of u.newTriggerIds)a.add(f);l.add(p.topic);}});let c=o.deleteLegacy===false?[]:dy(t.base);return {wroteGraphPath:t.graph,deletedPaths:c,topicCount:l.size,lessonCount:i,triggerCount:a.size}}s(cW,"mergeLegacy");var Hee=".agentsmesh/lessons";function ve(e){let t=join(e,Hee);return {base:t,graph:join(t,"lessons.json"),config:join(t,"config.json"),journal:join(t,"journal.md"),index:join(t,"index.yaml"),topicsDir:join(t,"topics")}}s(ve,"lessonsPaths");function kd(e){return existsSync(ve(e).config)}s(kd,"lessonsActivated");function Ld(){return "lessons is not fully set up here \u2014 run `agentsmesh init --lessons`, then `agentsmesh generate`, to wire recall + capture into your AI tools."}s(Ld,"lessonsSetupHint");function Sy(e){let t=dirname(resolve(e)),r="";for(;t!==r;){if(existsSync(ve(t).graph))return t;r=t,t=dirname(t);}return null}s(Sy,"ancestorLessonsProjectDir");function Aa(e,t){return relative(e,t).split(sep).join("/")}s(Aa,"toRelPath");var Ed='## Lessons (BLOCKING)\n\nGraph `.agentsmesh/lessons/lessons.json` is canonical; never hand-edit it. Manual: `lessons` skill.\n\n**Recall:** before every file edit or state-changing command, MUST run `agentsmesh lessons query --file <path> --cmd <command>` and obey matches; at task start, ALSO run `agentsmesh lessons query --keyword "<task terms>" --always` for conceptual + universal rules no path/command names. Pure-read commands and recall itself are exempt.\n\n**Capture:** after any failure, user correction, regression, wrong assumption, useful surprise, repeated friction, or non-obvious fix, MUST self-critique and run `agentsmesh lessons add "<imperative rule>" --topic <id> --trigger-file <glob> --evidence <sha|lesson-id>`.\n\n**Before final:** report `Lesson: captured <id>` or `Lesson: none`. No recall/capture gate = task incomplete. No shell: use `lessons_query` / `lessons_add`.';var tp=class extends Error{static{s(this,"LessonsGraphExistsError");}code="LESSONS_GRAPH_EXISTS";constructor(){super("importLegacyLessons: a non-empty lessons.json already exists; pass force to overwrite."),this.name="LessonsGraphExistsError";}};async function rp(e,t){let r=ve(e),n=readFileSync(r.index,"utf8"),o=_K.parse(parse(n)),i={},a=new Map,l=new Map,c={},m=[],p=new Map;for(let g of o.clusters){i[g.topic]={summary:g.summary},p.set(g.topic,g.summary);let h=SK(g,a,l),y=join(e,g.file);if(!existsSync(y))throw new Error(`importLegacyLessons: declared topic file is missing: ${g.file}. Refusing to migrate (legacy artifacts left intact).`);let _=readFileSync(y,"utf8");for(let{index:R,body:k,evidence:w}of RK(_)){let D=[`legacy:${g.file}#rule-${R}`,...w.map(v=>`legacy:${v}`)];c[`${g.topic}-rule-${R}`]={rule:k,topics:[g.topic],triggers:h,evidence:D,status:"active",createdAt:t.migratedAt},m.push({rule:k,topic:g.topic,triggers:{files:g.triggers.file_globs,commands:g.triggers.command_patterns,keywords:g.triggers.keywords},evidence:D,createdAt:t.migratedAt});}}if(t.merge===true)return cW(e,r,m,p,t);let u=Object.fromEntries(a.entries());await ic(e,g=>{let h=Object.keys(g.lessons).length>0||Object.keys(g.topics).length>0||Object.keys(g.triggers).length>0;if(t.force!==!0&&h)throw new tp;g.version=Si,g.lessons=c,g.topics=i,g.triggers=u;});let f=t.deleteLegacy===false?[]:dy(r.base);return {wroteGraphPath:r.graph,deletedPaths:f,topicCount:Object.keys(i).length,lessonCount:Object.keys(c).length,triggerCount:a.size}}s(rp,"importLegacyLessons");function Yee(){let e=new Date,t=e.getUTCFullYear(),r=String(e.getUTCMonth()+1).padStart(2,"0"),n=String(e.getUTCDate()).padStart(2,"0");return `${t}-${r}-${n}`}s(Yee,"todayIso");async function rt(e){if(existsSync(Zo(e)))return false;let t=ve(e);if(!existsSync(t.index))return false;try{return await rp(e,{migratedAt:Yee()}),!0}catch(r){if(r instanceof tp)return false;throw r}}s(rt,"maybeAutoMigrateLessons");function np(e){return existsSync(e)}s(np,"logExists");function op(e,t,r){mkdirSync(dirname(e),{recursive:true}),appendFileSync(e,`${JSON.stringify(t)}
|
|
218
|
-
`,"utf8"),statSync(e).size>r.trimTriggerBytes&&
|
|
215
|
+
Fix: add a precise --trigger-file <glob> (preferred) or a valid --trigger-cmd <regex>; for a keyword, drop the stopwords (e.g. "state art" not "state of the art").`);this.deadTriggers=r;this.name="UnrecallableLessonError";}static{s(this,"UnrecallableLessonError");}code="UNRECALLABLE_LESSON"};var kee=new Set(["the","a","an","to","of","in","and","or","for","is","on","at","with","be","as","it","that","this","its","must"]);function yt(e){return e.toLowerCase().split(/[^a-z0-9]+/).filter(t=>t.length>=2&&!kee.has(t))}s(yt,"tokenize");function OK(e){let t=[];return e.keyword!==void 0&&t.push(e.keyword),e.file!==void 0&&t.push(e.file),e.command!==void 0&&t.push(e.command),yt(t.join(" "))}s(OK,"queryTerms");function wK(e){let t=[],r=new Map,n=0,o=0;for(let l of Object.values(e.lessons)){if(l.status!=="active")continue;let c=yt(l.rule);o+=1,n+=c.length,t.push(c.length);for(let m of new Set(c))r.set(m,(r.get(m)??0)+1);}let i=Math.max(o,1),a=new Map;for(let[l,c]of r)a.set(l,Math.log(1+(i-c+.5)/(c+.5)));return {idf:a,avgdl:n/i||1}}s(wK,"buildCorpus");function bK(e,t,r){let n=yt(t),o=n.length||1,i=new Map;for(let l of n)i.set(l,(i.get(l)??0)+1);let a=0;for(let l of new Set(e)){let c=i.get(l)??0;if(c===0)continue;let m=r.idf.get(l);a+=m*(c*(1.5+1))/(c+1.5*(1-.75+.75*o/r.avgdl));}return a}s(bK,"bm25");var Sd=5;function fy(e){return yt(e).length>Sd}s(fy,"isLowSignalKeyword");function Lee(e){return e.toLowerCase().split(/[^a-z0-9]+/).filter(t=>t.length>0)}s(Lee,"splitRawTokens");function ep(e){let t=Lee(e);return t.length<2?false:yt(e).length!==t.length}s(ep,"keywordNeedleLosesTokens");function TK(e){let t=new Set;for(let r of Object.values(e.lessons))if(r.status==="active")for(let n of r.triggers)t.add(n);return t}s(TK,"activeTriggerIds");function Rd(e,t){let r=TK(e),n=[...t],o=new Set;for(let[i,a]of Object.entries(e.triggers)){if(a.kind!=="file_glob"||!r.has(i))continue;let l=AK(a.pattern,{dot:true});n.some(c=>l(c))||o.add(i);}return o}s(Rd,"deadFileGlobIds");function xK(e,t,r){for(let n of Rd(e,r))t.push({level:"warning",code:"DEAD_FILE_GLOB",message:`file_glob trigger "${n}" (${e.triggers[n]?.pattern??""}) matches no file in the working tree \u2014 the lesson is unreachable via this trigger (a rename likely moved the path). Re-point it at the current path, or detach it with \`lessons untrigger\`, or run \`lessons prune --apply\`.`,triggerId:n});}s(xK,"collectDeadFileGlobs");function PK(e,t){let r=AK(e,{dot:true}),n=0;for(let o of t)r(o)&&(n+=1);return n}s(PK,"fileGlobMatchCount");var Eee=/^\^(pnpm|npm|npx|yarn|bun)\b/;function DK(e,t){let r=TK(e);for(let[n,o]of Object.entries(e.triggers))o.kind==="command_pattern"&&r.has(n)&&Eee.test(o.pattern)&&t.push({level:"warning",code:"RUNNER_ANCHORED_PATTERN",message:`command_pattern trigger "${n}" (${o.pattern}) is anchored to one runner \u2014 it won't fire for the same task via another runner (e.g. \`npx\` vs \`pnpm\`). Drop the \`^<runner>\` anchor and key on the task (e.g. \`\\bvitest\\b\`).`,triggerId:n});}s(DK,"collectRunnerAnchoredPatterns");var NK=40,gy=8;function vK(e){let t=e.trim();return t==="*"||t==="**"?true:t.includes("**")?t.slice(t.lastIndexOf("/")+1).startsWith("*"):false}s(vK,"isBroadGlob");function YL(e,t,r){let n=e.lessons[t];if(n===void 0)return [];let o=[];n.triggers.length>gy&&o.push({code:"OVERSIZED_LESSON_TRIGGERS",message:`Lesson "${t}" has ${n.triggers.length} triggers (recommended \u2264 ${gy}); broad trigger sets fire on too many edits and dilute recall \u2014 prefer a few specific triggers.`});let i=n.triggers.map(m=>e.triggers[m]).filter(m=>m!==void 0),a=i.filter(m=>m.kind==="file_glob"&&vK(m.pattern)).map(m=>m.pattern);a.length>0&&o.push({code:"BROAD_GLOB_TRIGGER",message:`Lesson "${t}" has broad file glob(s) (${a.join(", ")}) that match large swaths of the tree; prefer a path specific to the lesson.`}),i.length>0&&i.every(m=>m.kind==="keyword")&&o.push({code:"KEYWORD_ONLY_LESSON",message:`Lesson "${t}" has only keyword triggers; mandatory --file/--cmd recall surfaces these only when the keyword appears as a path/command token, so it fires less reliably \u2014 add a file_glob or command_pattern trigger for precise recall.`});let l=i.filter(m=>m.kind==="keyword"&&fy(m.pattern)).map(m=>m.pattern);l.length>0&&o.push({code:"LOW_SIGNAL_KEYWORD",message:`Lesson "${t}" has long keyword trigger(s) (${l.join(", ")}); recall matches a keyword only as a substring of --keyword or a contiguous token-run in the file/command, so a pattern past ${Sd} tokens rarely fires \u2014 use a short distinctive phrase.`});let c=i.filter(m=>m.kind==="keyword"&&ep(m.pattern)).map(m=>m.pattern);if(c.length>0&&o.push({code:"STOPWORD_KEYWORD",message:`Lesson "${t}" has keyword trigger(s) containing stopwords/short words (${c.join(", ")}); recall filters them from the pattern but NOT from the file/command text, so the phrase can never match contiguously on the --file/--cmd path \u2014 drop the stopwords (e.g. "state art" instead of "state of the art").`}),r!==void 0){let m=Rd(e,r),p=n.triggers.filter(f=>m.has(f)).map(f=>e.triggers[f]?.pattern).filter(f=>f!==void 0);p.length>0&&o.push({code:"DEAD_GLOB",message:`Lesson "${t}" has file_glob trigger(s) (${p.join(", ")}) that match no file in the working tree \u2014 likely a rename. Re-point them at the current path, or the lesson is unreachable via those globs.`});let u=i.filter(f=>f.kind==="file_glob"&&!vK(f.pattern)).filter(f=>PK(f.pattern,r)>NK).map(f=>f.pattern);u.length>0&&o.push({code:"WIDE_GLOB_MATCH",message:`Lesson "${t}" has file glob(s) (${u.join(", ")}) matching more than ${NK} files in the working tree; narrow to the file-CLASS where the rule actually applies so it does not fire on unrelated edits.`});}return o}s(YL,"inspectCapturedLesson");var Cee=.6;function FK(e,t){let r=e.lessons[t];if(r===void 0)return null;let n=new Set(yt(r.rule));if(n.size===0)return null;let o=null;for(let[i,a]of Object.entries(e.lessons)){if(i===t||a.status!=="active")continue;let l=new Set(yt(a.rule));if(l.size===0)continue;let c=Oee(n,l);c>=Cee&&(o===null||c>o.score)&&(o={id:i,score:c});}return o===null?null:{code:"NEAR_DUPLICATE_LESSON",message:`Lesson "${t}" closely resembles active lesson "${o.id}" (~${Math.round(o.score*100)}% token overlap); consider updating "${o.id}" instead of adding a paraphrase (recall would surface both).`}}s(FK,"nearDuplicateWarning");function Oee(e,t){let r=0;for(let n of e)t.has(n)&&(r+=1);return r/(e.size+t.size-r)}s(Oee,"jaccard");var MK=".lessons.lock";function GK(e){return resolve(e,".agentsmesh/lessons",MK)}s(GK,"lessonsLockPath");async function hy(e,t={}){let r=GK(e);return await mkdir(dirname(r),{recursive:true}),Jm(r,{...t,label:"lessons lock"})}s(hy,"acquireLessonsLock");function jK(e,t){for(let[r,n]of Object.entries(e.lessons)){for(let o of n.topics)e.topics[o]===void 0&&t.push({level:"error",code:"DANGLING_TOPIC",message:`Lesson "${r}" references unknown topic "${o}".`,lessonId:r,topicId:o});for(let o of n.triggers)e.triggers[o]===void 0&&t.push({level:"error",code:"DANGLING_TRIGGER",message:`Lesson "${r}" references unknown trigger "${o}".`,lessonId:r,triggerId:o});n.supersededBy!==void 0&&e.lessons[n.supersededBy]===void 0&&t.push({level:"error",code:"DANGLING_SUPERSEDER",message:`Lesson "${r}" supersededBy unknown lesson "${n.supersededBy}".`,lessonId:r});}}s(jK,"collectDanglingRefs");function UK(e,t){for(let[r,n]of Object.entries(e.lessons)){for(let o of $K(n.topics))t.push({level:"error",code:"DUPLICATE_TOPIC_REF",message:`Lesson "${r}" references topic "${o}" more than once.`,lessonId:r,topicId:o});for(let o of $K(n.triggers))t.push({level:"error",code:"DUPLICATE_TRIGGER_REF",message:`Lesson "${r}" references trigger "${o}" more than once.`,lessonId:r,triggerId:o});}}s(UK,"collectDuplicateRefs");function $K(e){let t=new Set,r=new Set;for(let n of e)t.has(n)?r.add(n):t.add(n);return [...r]}s($K,"firstDuplicates");function BK(e,t){for(let[r,n]of Object.entries(e.lessons))n.status==="superseded"&&n.supersededBy===void 0&&t.push({level:"error",code:"SUPERSEDED_WITHOUT_TARGET",message:`Lesson "${r}" has status "superseded" but no supersededBy target.`,lessonId:r}),n.status==="active"&&n.supersededBy!==void 0&&t.push({level:"error",code:"ACTIVE_WITH_SUPERSEDER",message:`Lesson "${r}" has status "active" but declares supersededBy.`,lessonId:r});}s(BK,"collectStatusInvariants");function KK(e,t){for(let[r,n]of Object.entries(e.lessons)){if(n.supersededBy===void 0)continue;if(n.supersededBy===r){t.push({level:"error",code:"SELF_SUPERSEDED",message:`Lesson "${r}" is superseded by itself.`,lessonId:r});continue}let o=e.lessons[n.supersededBy];o!==void 0&&o.status!=="active"&&t.push({level:"error",code:"INACTIVE_SUPERSEDER",message:`Lesson "${r}" is superseded by "${n.supersededBy}", which is itself ${o.status} \u2014 the chain dead-ends with no live replacement.`,lessonId:r});}Tee(e,t);}s(KK,"collectLifecycleInvariants");function Tee(e,t){let r=new Set;for(let n of Object.keys(e.lessons)){let o=new Set,i=n;for(;i!==void 0;){if(o.has(i)){if(i!==n||r.has(i))break;r.add(i),t.push({level:"error",code:"SUPERSEDE_CYCLE",message:`Lesson "${n}" is part of a supersededBy cycle.`,lessonId:n});break}o.add(i);let a=e.lessons[i]?.supersededBy;if(a===i)break;i=a;}}}s(Tee,"collectSupersedeCycles");function WK(e,t){for(let[r,n]of Object.entries(e.lessons))n.status==="active"&&n.triggers.length===0&&t.push({level:"warning",code:"UNREACHABLE_LESSON",message:`Active lesson "${r}" has no triggers and can never be recalled.`,lessonId:r});}s(WK,"collectReachability");function HK(e,t){let r=new Set,n=new Set;for(let o of Object.values(e.lessons)){for(let i of o.topics)r.add(i);for(let i of o.triggers)n.add(i);}for(let o of Object.keys(e.topics))r.has(o)||t.push({level:"warning",code:"ORPHAN_TOPIC",message:`Topic "${o}" is not referenced by any lesson.`,topicId:o});for(let o of Object.keys(e.triggers))n.has(o)||t.push({level:"warning",code:"ORPHAN_TRIGGER",message:`Trigger "${o}" is not referenced by any lesson.`,triggerId:o});}s(HK,"collectOrphans");var XL=class{static{s(this,"Builder");}states=[];alloc(){if(this.states.length>=2e3)throw new Error("NFA state limit exceeded (2000); pattern expands too large");return this.states.push({eps:[],asserts:[],chars:[]}),this.states.length-1}};function xee(e){return e!==`
|
|
216
|
+
`&&e!=="\r"&&e!=="\u2028"&&e!=="\u2029"}s(xee,"isNonLineTerminator");function ic(e,t){switch(t.k){case "empty":case "assert":{let r=e.alloc(),n=e.alloc();return t.k==="assert"?e.states[r].asserts.push({kind:t.kind,target:n}):e.states[r].eps.push(n),{start:r,end:n}}case "char":case "any":case "class":{let r=e.alloc(),n=e.alloc(),o=t.k==="char"?i=>i===t.ch:t.k==="any"?xee:t.test;return e.states[r].chars.push({test:o,target:n}),{start:r,end:n}}case "concat":{if(t.items.length===0)return ic(e,{k:"empty"});let r=null,n=-1;for(let o of t.items){let i=ic(e,o);r===null?r=i:e.states[n].eps.push(i.start),n=i.end;}return {start:r.start,end:n}}case "alt":{let r=e.alloc(),n=e.alloc();for(let o of t.opts){let i=ic(e,o);e.states[r].eps.push(i.start),e.states[i.end].eps.push(n);}return {start:r,end:n}}case "opt":{let r=e.alloc(),n=e.alloc(),o=ic(e,t.node);return e.states[r].eps.push(o.start,n),e.states[o.end].eps.push(n),{start:r,end:n}}case "star":{let r=e.alloc(),n=e.alloc(),o=ic(e,t.node);return e.states[r].eps.push(o.start,n),e.states[o.end].eps.push(o.start,n),{start:r,end:n}}case "plus":{let r=e.alloc(),n=ic(e,t.node);return e.states[n.end].eps.push(n.start,r),{start:n.start,end:r}}}}s(ic,"compileNode");function zK(e){let t=new XL,{start:r,end:n}=ic(t,e);return {states:t.states,start:r,accept:n}}s(zK,"compileNfa");function VK(e,t){let r=t>0&&/[A-Za-z0-9_]/.test(e[t-1]),n=t<e.length&&/[A-Za-z0-9_]/.test(e[t]);return r!==n}s(VK,"wordBoundary");function Pee(e,t,r){switch(e){case "start":return r===0;case "end":return r===t.length;case "wordB":return VK(t,r);case "nonWordB":return !VK(t,r)}}s(Pee,"assertHolds");function JK(e){let{states:t,start:r,accept:n}=zK(e),o=s((i,a,l,c,m)=>{let p=[a];for(;p.length>0;){if(m.remaining<=0)return;let u=p.pop();if(!i.has(u)){i.add(u),m.remaining-=1;for(let f of t[u].eps)i.has(f)||p.push(f);for(let f of t[u].asserts)Pee(f.kind,l,c)&&!i.has(f.target)&&p.push(f.target);}}},"closure");return {test(i,a){let l=a??{remaining:Number.POSITIVE_INFINITY};if(l.remaining<=0)return false;let c=new Set;for(let m=0;m<=i.length;m+=1){if(o(c,r,i,m,l),c.has(n))return true;if(l.remaining<=0)return false;if(m===i.length)break;let p=i[m],u=new Set;for(let f of c){l.remaining-=1;for(let g of t[f].chars)g.test(p)&&o(u,g.target,i,m+1,l);}c=u;}return c.has(n)}}}s(JK,"buildMatcher");var Lr=class extends Error{static{s(this,"UnsupportedRegexError");}constructor(t){super(t),this.name="UnsupportedRegexError";}};var yy=1e3,YK=s(e=>/[A-Za-z0-9_]/.test(e),"isWord");function XK(e,t,r){let n=[];for(let o=0;o<t;o+=1)n.push(e);if(r===1/0)n.push({k:"star",node:e});else for(let o=t;o<r;o+=1)n.push({k:"opt",node:e});return n.length===0?{k:"empty"}:n.length===1?n[0]:{k:"concat",items:n}}s(XK,"expandRepeat");function QL(e){switch(e){case "d":return t=>t>="0"&&t<="9";case "D":return t=>!(t>="0"&&t<="9");case "w":return YK;case "W":return t=>!YK(t);case "s":return t=>/\s/.test(t);case "S":return t=>!/\s/.test(t);default:return null}}s(QL,"escapeClass");var Dee=/^[0-9a-fA-F]{2}$/,Nee=/^[0-9a-fA-F]{4}$/;function qL(e,t,r){if(r==="x"){let o=e.slice(t,t+2);return Dee.test(o)?{ch:String.fromCharCode(parseInt(o,16)),len:2}:{ch:"x",len:0}}let n=e.slice(t,t+4);return Nee.test(n)?{ch:String.fromCharCode(parseInt(n,16)),len:4}:{ch:"u",len:0}}s(qL,"readUnicodeEscape");function ZL(e,t){let r=e[t];if(r===void 0||!/[A-Za-z]/.test(r))throw new Lr("\\c must be followed by a letter");return {ch:String.fromCharCode(r.charCodeAt(0)&31),len:1}}s(ZL,"readControlEscape");function eE(e,t,r){return r==="b"?{ch:"\b",len:0}:r==="c"?ZL(e,t):r==="x"||r==="u"?qL(e,t,r):{ch:tE(r),len:0}}s(eE,"classEscapeChar");function tE(e){switch(e){case "t":return " ";case "n":return `
|
|
217
|
+
`;case "r":return "\r";case "f":return "\f";case "v":return "\v";case "0":return "\0";default:return e}}s(tE,"escapeLiteral");function QK(e){let t=0,r=s(()=>e[t],"peek"),n=s(()=>e[t++],"eat");function o(){let h=[i()];for(;r()==="|";)t+=1,h.push(i());return h.length===1?h[0]:{k:"alt",opts:h}}s(o,"parseAlt");function i(){let h=[];for(;t<e.length&&r()!=="|"&&r()!==")";)h.push(a());return h.length===0?{k:"empty"}:h.length===1?h[0]:{k:"concat",items:h}}s(i,"parseConcat");function a(){let h=c(),y=r();if(y==="*"||y==="+"||y==="?")return t+=1,r()==="?"&&(t+=1),y==="*"?{k:"star",node:h}:y==="+"?{k:"plus",node:h}:{k:"opt",node:h};if(y==="{"){let _=l();if(_!==null)return XK(h,_.min,_.max)}return h}s(a,"parseQuantified");function l(){let h=/^\{(\d+)(,(\d*)?)?\}/.exec(e.slice(t));if(h===null)return null;t+=h[0].length,r()==="?"&&(t+=1);let y=Number(h[1]),_=h[2]===void 0?y:h[3]===""||h[3]===void 0?1/0:Number(h[3]);if(y>yy||_!==1/0&&_>yy)throw new Lr(`Repeat count over ${yy} not supported: {${h[1]}\u2026}`);return {min:y,max:_}}s(l,"tryParseBrace");function c(){let h=r();if(h==="(")return m();if(h==="[")return u();if(h==="\\")return p();if(h===".")return t+=1,{k:"any"};if(h==="^")return t+=1,{k:"assert",kind:"start"};if(h==="$")return t+=1,{k:"assert",kind:"end"};if(h===void 0||h==="*"||h==="+"||h==="?"||h===")")throw new Lr(`Unexpected '${h??"<end>"}' in pattern`);return t+=1,{k:"char",ch:h}}s(c,"parseAtom");function m(){if(t+=1,r()==="?"){let y=e[t+1];if((y==="="||y==="!"||y==="<")&&!(y==="<"&&/[A-Za-z]/.test(e[t+2]??"")))throw new Lr("Lookaround assertions are not supported");if(y===":")t+=2;else if(y==="<"){for(t+=2;t<e.length&&e[t]!==">";)t+=1;t+=1;}}let h=o();if(r()!==")")throw new Lr("Unbalanced group");return t+=1,h}s(m,"parseGroup");function p(){t+=1;let h=r();if(h===void 0)throw new Lr("Trailing backslash");if(/[1-9]/.test(h)||h==="k")throw new Lr("Backreferences are not supported");if(t+=1,h==="b")return {k:"assert",kind:"wordB"};if(h==="B")return {k:"assert",kind:"nonWordB"};let y=QL(h);if(y!==null)return {k:"class",test:y};if(h==="x"||h==="u"||h==="c"){let{ch:_,len:R}=h==="c"?ZL(e,t):qL(e,t,h);return t+=R,{k:"char",ch:_}}return {k:"char",ch:tE(h)}}s(p,"parseEscape");function u(){t+=1;let h=r()==="^";h&&(t+=1);let y=[];for(;t<e.length&&r()!=="]";)y.push(f());if(r()!=="]")throw new Lr("Unterminated character class");t+=1;let _=s(R=>y.some(k=>k(R)),"base");return {k:"class",test:h?R=>!_(R):_}}s(u,"parseClass");function f(){let h;if(r()==="\\"){t+=1;let y=n(),_=QL(y);if(_!==null)return _;let R=eE(e,t,y);t+=R.len,h=R.ch;}else h=n();if(r()==="-"&&e[t+1]!==void 0&&e[t+1]!=="]"){t+=1;let y;if(r()==="\\"){t+=1;let k=n(),w=eE(e,t,k);t+=w.len,y=w.ch;}else y=n();let _=h.codePointAt(0),R=y.codePointAt(0);return k=>{let w=k.codePointAt(0);return w>=_&&w<=R}}return y=>y===h}s(f,"parseClassMember");let g=o();if(t!==e.length)throw new Lr(`Unexpected '${r()}' at ${t}`);return g}s(QK,"parseRegex");var rE=new Map;function nE(e){let t=rE.get(e);if(t!==void 0||rE.has(e))return t??null;let r;try{r=JK(QK(e));}catch{r=null;}return rE.set(e,r),r}s(nE,"compileLinearMatcher");var qK=1e3;function Id(e){return e.length>qK?false:nE(e)!==null}s(Id,"isSafeRegexPattern");function ZK(e){return e.length>qK?null:nE(e)}s(ZK,"getCommandMatcher");function tW(e,t){let r=new Map;for(let[n,o]of Object.entries(e.lessons)){if(o.status!=="active")continue;let i=vee(o.rule),a=r.get(i)??[];a.push(n),r.set(i,a);}for(let[n,o]of r){if(o.length<2)continue;let i=[...o].sort();for(let a of i){let l=i.filter(c=>c!==a);t.push({level:"error",code:"DUPLICATE_RULE",message:`Lesson "${a}" duplicates rule text of: ${l.join(", ")} (normalized key: "${n.slice(0,60)}").`,lessonId:a});}}}s(tW,"collectDuplicateRules");function rW(e,t){for(let[r,n]of Object.entries(e.triggers))if(n.kind==="command_pattern"){try{new RegExp(n.pattern);}catch(o){t.push({level:"error",code:"INVALID_TRIGGER_PATTERN",message:`Trigger "${r}" has an invalid command_pattern regex (${n.pattern}): ${o instanceof Error?o.message:String(o)}.`,triggerId:r});continue}Id(n.pattern)||t.push({level:"error",code:"UNSAFE_TRIGGER_PATTERN",message:`Trigger "${r}" has a command_pattern regex outside the provably-linear subset (${n.pattern}): it can backtrack catastrophically (e.g. a quantified group like (a+)+ or (a|aa)+, adjacent repetition like a+a+, or a backreference/lookaround). Rewrite using a linear pattern.`,triggerId:r});}}s(rW,"collectInvalidTriggerPatterns");function nW(e,t){for(let[r,n]of Object.entries(e.triggers))n.kind==="file_glob"&&n.pattern.includes("\\")&&t.push({level:"error",code:"BACKSLASH_GLOB_PATTERN",message:`Trigger "${r}" has a file_glob pattern with a backslash (${n.pattern}); recall normalizes paths to forward slashes, so it never fires. Replace \\ with /.`,triggerId:r});}s(nW,"collectBackslashGlobPatterns");function oW(e,t){let r=new Map;for(let[n,o]of Object.entries(e.triggers)){let i=`${o.kind}|${o.pattern}`,a=r.get(i)??[];a.push(n),r.set(i,a);}for(let[n,o]of r){if(o.length<2)continue;let i=[...o].sort();for(let a of i){let l=i.filter(c=>c!==a);t.push({level:"error",code:"DUPLICATE_TRIGGER",message:`Trigger "${a}" duplicates (kind, pattern) of: ${l.join(", ")} (key: "${n}").`,triggerId:a});}}}s(oW,"collectDuplicateTriggers");var eW=10;function sW(e,t){let r=new Map;for(let i of Object.values(e.lessons))if(i.status==="active")for(let a of i.triggers)r.set(a,(r.get(a)??0)+1);let n=0,o=0;for(let i of r.values())i>eW&&(n+=1),i>o&&(o=i);n>0&&t.push({level:"warning",code:"HIGH_FANOUT_TRIGGERS",message:`${n} trigger(s) each match more than ${eW} active lessons (max ${o}); recall returns the ranked top by default \u2014 consider per-lesson trigger refinement to improve precision.`});}s(sW,"collectFanout");function iW(e,t){let r=new Set;for(let n of Object.values(e.lessons))if(n.status==="active")for(let o of n.triggers)r.add(o);for(let[n,o]of Object.entries(e.triggers))o.kind==="keyword"&&r.has(n)&&fy(o.pattern)&&t.push({level:"warning",code:"LOW_SIGNAL_KEYWORD",message:`Keyword trigger "${n}" carries more than ${Sd} tokens (${o.pattern}); recall matches a keyword only as a substring of --keyword or a contiguous token-run in the file/command, so it rarely fires \u2014 use a short distinctive phrase.`,triggerId:n});}s(iW,"collectLowSignalKeywords");function aW(e,t){let r=new Set;for(let n of Object.values(e.lessons))if(n.status==="active")for(let o of n.triggers)r.add(o);for(let[n,o]of Object.entries(e.triggers))o.kind==="keyword"&&r.has(n)&&(yt(o.pattern).length!==0&&!ep(o.pattern)||t.push({level:"warning",code:"STOPWORD_KEYWORD",message:`Keyword trigger "${n}" (${o.pattern}) loses tokens to stopword filtering, so its needle can never appear as a contiguous run on the mandatory --file/--cmd recall path \u2014 drop the stopwords (e.g. "state art" instead of "state of the art"), or detach it with \`lessons untrigger\`.`,triggerId:n}));}s(aW,"collectStopwordKeywords");function vee(e){return e.trim().replace(/\s+/g," ").toLowerCase()}s(vee,"normalizeRule");function Xn(e,t={}){let r=[],n=sc.safeParse(e);return n.success?(jK(e,r),UK(e,r),BK(e,r),KK(e,r),tW(e,r),WK(e,r),rW(e,r),nW(e,r),oW(e,r),HK(e,r),sW(e,r),iW(e,r),aW(e,r),DK(e,r),t.knownPaths!==void 0&&xK(e,r,t.knownPaths),{ok:r.every(i=>i.level!=="error"),findings:r}):(r.push({level:"error",code:"SCHEMA_INVALID",message:n.error.issues.map(i=>`${i.path.join(".")}: ${i.message}`).join("; ")}),{ok:false,findings:r})}s(Xn,"validateLessonsGraph");function Fee(){return {version:Si,lessons:{},topics:{},triggers:{}}}s(Fee,"emptyGraph");function lW(e){return `${e.code}|${e.triggerId??""}|${e.lessonId??""}`}s(lW,"findingKey");function Mee(e){return new Set(e.findings.filter(t=>t.level==="error").map(lW))}s(Mee,"errorSignatures");async function ac(e,t,r={}){let n=await hy(e,{retries:r.retries});try{let o=Ye(e)??Fee(),i=Mee(Xn(o)),a=await t(o),c=Xn(o).findings.filter(m=>m.level==="error"&&!i.has(lW(m)));if(c.length>0){let m=c.map(p=>`${p.code}: ${p.message}`).join("; ");throw new Error(`mutateLessonsGraph: refusing to write \u2014 this change introduces ${m}. (Pre-existing graph issues are not blocking; run \`agentsmesh lessons validate\` to review and \`lessons untrigger\`/\`prune\` to repair them.)`)}return o.version=Si,yK(e,o),a}finally{await n();}}s(ac,"mutateLessonsGraphLocked");async function At(e,t,r={}){return await rt(e),ac(e,t,r)}s(At,"mutateLessonsGraph");function Gee(e,t){let r=[];for(let n of t){let o=e.triggers[n];if(o===void 0)continue;let i=$ee(o.kind,o.pattern);i!==null&&r.push({id:n,kind:o.kind,pattern:o.pattern,reason:i});}return r}s(Gee,"ineffectiveTriggers");function $ee(e,t){if(e==="keyword")return yt(t).length===0?"keyword has no matchable token after stopword filtering \u2014 it cannot fire on the mandatory --file/--cmd recall path":ep(t)?"keyword contains stopwords/short words, so its needle can never appear as a contiguous run on the mandatory --file/--cmd recall path":null;if(e==="command_pattern"){let r=true;try{new RegExp(t);}catch{r=false;}return r?Id(t)?null:"regex is outside the provably-linear engine \u2014 recall skips it (ReDoS guard), so it never fires":"invalid regex \u2014 recall compiles it with new RegExp and swallows the throw as a non-match, so it never fires"}return null}s($ee,"ineffectiveReason");function cW(e,t){return Gee(e,t).filter(r=>r.kind!=="command_pattern")}s(cW,"blockingDeadTriggers");function jee(e){return (e.files?.length??0)+(e.commands?.length??0)+(e.keywords?.length??0)}s(jee,"countInputTriggers");async function _y(e,t,r={}){return At(e,n=>oE(n,t,r),{retries:r.retries})}s(_y,"addLesson");function oE(e,t,r){let n=JL(t.rule),o=t.rule.trim();if(o.length>Zm)throw new Ri(o.length,Zm);let i=Uee(e,n),a=e.topics[t.topic]===void 0;if(a){if(r.allowNewTopic!==true)throw new Yn(t.topic);if(r.topicSummary===void 0||r.topicSummary.length===0)throw new Error(`addLesson: new topic "${t.topic}" requires topicSummary.`);e.topics[t.topic]={summary:r.topicSummary};}let l=r.allowNoTrigger===true||t.scope==="always";if(!l){let g=i!==null?e.lessons[i]?.triggers.length??0:0;if(jee(t.triggers)===0&&g===0)throw new Ii}let{triggerIds:c,newTriggerIds:m}=LK(e,t.triggers);if(!l){let g=i!==null?_d(e.lessons[i].triggers,c):c,h=cW(e,g);if(g.length>0&&h.length===g.length)throw new ki(h)}if(i!==null){let g=e.lessons[i];return e.lessons[i]={...g,topics:_d(g.topics,[t.topic]),triggers:_d(g.triggers,c),evidence:_d(g.evidence,t.evidence??[]),...g.rationale===void 0&&t.rationale!==void 0?{rationale:t.rationale}:{},...t.scope==="always"?{scope:"always"}:{}},{id:i,isNewLesson:false,isNewTopic:a,newTriggerIds:m,warnings:YL(e,i,r.knownPaths)}}let p=EK(e,t.topic,n);e.lessons[p]={rule:o,topics:[t.topic],triggers:c,evidence:t.evidence===void 0?[]:[...t.evidence],status:"active",createdAt:t.createdAt??CK(),...t.rationale===void 0?{}:{rationale:t.rationale},...t.scope==="always"?{scope:"always"}:{}};let u=YL(e,p,r.knownPaths),f=FK(e,p);return {id:p,isNewLesson:true,isNewTopic:a,newTriggerIds:m,warnings:f===null?u:[...u,f]}}s(oE,"addLessonInto");function Uee(e,t){for(let[r,n]of Object.entries(e.lessons))if(n.status==="active"&&JL(n.rule)===t)return r;return null}s(Uee,"findExistingLessonByRule");async function mW(e,t,r,n,o){let i=0,a=new Set,l=new Set;await ac(e,m=>{i=0,a.clear(),l.clear();for(let p of r){let u=oE(m,p,{allowNewTopic:!0,topicSummary:n.get(p.topic),allowNoTrigger:!0});u.isNewLesson&&(i+=1);for(let f of u.newTriggerIds)a.add(f);l.add(p.topic);}});let c=o.deleteLegacy===false?[]:dy(t.base);return {wroteGraphPath:t.graph,deletedPaths:c,topicCount:l.size,lessonCount:i,triggerCount:a.size}}s(mW,"mergeLegacy");var Hee=".agentsmesh/lessons";function ve(e){let t=join(e,Hee);return {base:t,graph:join(t,"lessons.json"),config:join(t,"config.json"),journal:join(t,"journal.md"),index:join(t,"index.yaml"),topicsDir:join(t,"topics")}}s(ve,"lessonsPaths");function kd(e){return existsSync(ve(e).config)}s(kd,"lessonsActivated");function Ld(){return "lessons is not fully set up here \u2014 run `agentsmesh init --lessons`, then `agentsmesh generate`, to wire recall + capture into your AI tools."}s(Ld,"lessonsSetupHint");function Sy(e){let t=dirname(resolve(e)),r="";for(;t!==r;){if(existsSync(ve(t).graph))return t;r=t,t=dirname(t);}return null}s(Sy,"ancestorLessonsProjectDir");function Aa(e,t){return relative(e,t).split(sep).join("/")}s(Aa,"toRelPath");var Ed='## Lessons (BLOCKING)\n\nGraph `.agentsmesh/lessons/lessons.json` is canonical; never hand-edit it. Manual: `lessons` skill.\n\n**Recall:** before every file edit or state-changing command, MUST run `agentsmesh lessons query --file <path> --cmd <command>` and obey matches; at task start, ALSO run `agentsmesh lessons query --keyword "<task terms>" --always` for conceptual + universal rules no path/command names. Pure-read commands and recall itself are exempt.\n\n**Capture:** after any failure, user correction, regression, wrong assumption, useful surprise, repeated friction, or non-obvious fix, MUST self-critique and run `agentsmesh lessons add "<imperative rule>" --topic <id> --trigger-file <glob> --evidence <sha|lesson-id>`.\n\n**Before final:** report `Lesson: captured <id>` or `Lesson: none`. No recall/capture gate = task incomplete. No shell: use `lessons_query` / `lessons_add`.';var rp=class extends Error{static{s(this,"LessonsGraphExistsError");}code="LESSONS_GRAPH_EXISTS";constructor(){super("importLegacyLessons: a non-empty lessons.json already exists; pass force to overwrite."),this.name="LessonsGraphExistsError";}};async function np(e,t){let r=ve(e),n=readFileSync(r.index,"utf8"),o=SK.parse(parse(n)),i={},a=new Map,l=new Map,c={},m=[],p=new Map;for(let g of o.clusters){i[g.topic]={summary:g.summary},p.set(g.topic,g.summary);let h=RK(g,a,l),y=join(e,g.file);if(!existsSync(y))throw new Error(`importLegacyLessons: declared topic file is missing: ${g.file}. Refusing to migrate (legacy artifacts left intact).`);let _=readFileSync(y,"utf8");for(let{index:R,body:k,evidence:w}of IK(_)){let D=[`legacy:${g.file}#rule-${R}`,...w.map(v=>`legacy:${v}`)];c[`${g.topic}-rule-${R}`]={rule:k,topics:[g.topic],triggers:h,evidence:D,status:"active",createdAt:t.migratedAt},m.push({rule:k,topic:g.topic,triggers:{files:g.triggers.file_globs,commands:g.triggers.command_patterns,keywords:g.triggers.keywords},evidence:D,createdAt:t.migratedAt});}}if(t.merge===true)return mW(e,r,m,p,t);let u=Object.fromEntries(a.entries());await ac(e,g=>{let h=Object.keys(g.lessons).length>0||Object.keys(g.topics).length>0||Object.keys(g.triggers).length>0;if(t.force!==!0&&h)throw new rp;g.version=Si,g.lessons=c,g.topics=i,g.triggers=u;});let f=t.deleteLegacy===false?[]:dy(r.base);return {wroteGraphPath:r.graph,deletedPaths:f,topicCount:Object.keys(i).length,lessonCount:Object.keys(c).length,triggerCount:a.size}}s(np,"importLegacyLessons");function Yee(){let e=new Date,t=e.getUTCFullYear(),r=String(e.getUTCMonth()+1).padStart(2,"0"),n=String(e.getUTCDate()).padStart(2,"0");return `${t}-${r}-${n}`}s(Yee,"todayIso");async function rt(e){if(existsSync(Zo(e)))return false;let t=ve(e);if(!existsSync(t.index))return false;try{return await np(e,{migratedAt:Yee()}),!0}catch(r){if(r instanceof rp)return false;throw r}}s(rt,"maybeAutoMigrateLessons");function op(e){return existsSync(e)}s(op,"logExists");function sp(e,t,r){mkdirSync(dirname(e),{recursive:true}),appendFileSync(e,`${JSON.stringify(t)}
|
|
218
|
+
`,"utf8"),statSync(e).size>r.trimTriggerBytes&&hW(e,r.maxRecords);}s(sp,"appendJsonl");function hW(e,t){if(!existsSync(e))return;let r=readFileSync(e,"utf8").split(`
|
|
219
219
|
`).filter(i=>i.trim().length>0);if(r.length<=t)return;let n=r.slice(r.length-t),o=`${e}.${process.pid}.tmp`;writeFileSync(o,`${n.join(`
|
|
220
220
|
`)}
|
|
221
|
-
`,"utf8"),renameSync(o,e);}s(
|
|
222
|
-
`))if(r.trim().length!==0)try{t.push(JSON.parse(r));}catch{}return t}s(
|
|
221
|
+
`,"utf8"),renameSync(o,e);}s(hW,"capJsonl");function ip(e){if(!existsSync(e))return [];let t=[];for(let r of readFileSync(e,"utf8").split(`
|
|
222
|
+
`))if(r.trim().length!==0)try{t.push(JSON.parse(r));}catch{}return t}s(ip,"readJsonl");var nte=5e3,ote=2e6,ste="AGENTSMESH_LESSONS_TELEMETRY",ite="AGENTSMESH_SESSION_ID";function Li(e=process.env){let t=e[ite];return t!==void 0&&t.trim().length>0?t:void 0}s(Li,"sessionId");function Cd(e){return join(ve(e).base,"recall-log.jsonl")}s(Cd,"recallLogPath");function cn(e=process.env){return e[ste]==="1"}s(cn,"isTelemetryEnabled");function yW(e,t,r=process.env){cn(r)&&sp(Cd(e),t,{maxRecords:nte,trimTriggerBytes:ote});}s(yW,"appendRecallRecord");function _W(e){return op(Cd(e))}s(_W,"recallLogExists");function SW(e){return ip(Cd(e))}s(SW,"readRecallLog");var lte=5e3,cte=2e6;function Od(e){return join(ve(e).base,"capture-log.jsonl")}s(Od,"captureLogPath");function mte(e,t,r=process.env){cn(r)&&sp(Od(e),t,{maxRecords:lte,trimTriggerBytes:cte});}s(mte,"appendCaptureRecord");function RW(e){return op(Od(e))}s(RW,"captureLogExists");function IW(e){return ip(Od(e))}s(IW,"readCaptureLog");function iE(e,t,r,n=process.env){if(!cn(n))return;let o=Li(n);mte(e,{ts:new Date().toISOString(),isNewLesson:r?.isNewLesson??false,isNewTopic:r?.isNewTopic??false,newTriggerCount:r?.newTriggerIds.length??0,triggerKinds:t,blocked:r===null,warningCodes:r?.warnings.map(i=>i.code)??[],...o!==void 0?{session:o}:{},...r!==null?{lessonId:r.id}:{}},n);}s(iE,"recordCapture");var ute=5e3,dte=2e6;function wd(e){return join(ve(e).base,"outcome-log.jsonl")}s(wd,"outcomeLogPath");function LW(e,t,r=process.env){cn(r)&&sp(wd(e),t,{maxRecords:ute,trimTriggerBytes:dte});}s(LW,"appendOutcomeEvent");function ap(e){return ip(wd(e))}s(ap,"readOutcomeLog");function EW(e){return op(wd(e))}s(EW,"outcomeLogExists");function CW(e,t,r,n=process.env){if(!cn(n)||t.length===0)return;let o=new Date().toISOString(),i=Li(n);for(let a of t)LW(e,{ts:o,kind:"delivered",lessonId:a,contextKey:r,...i!==void 0?{session:i}:{}},n);}s(CW,"recordDelivered");function OW(e,t,r,n=process.env){if(!cn(n))return;let o=Li(n);LW(e,{ts:new Date().toISOString(),kind:"failure",contextKey:t,...r!==void 0?{errorClass:r}:{},...o!==void 0?{session:o}:{}},n);}s(OW,"recordFailure");function wW(e,t){let r=0,n;for(let o of ap(e))o.kind!=="failure"||o.contextKey!==t||(r+=1,o.errorClass!==void 0&&(n=o.errorClass));return {count:r,...n!==void 0?{lastErrorClass:n}:{}}}s(wW,"failuresForContext");function kW(e){return `${e.session??""}\0${e.contextKey}`}s(kW,"scopeKey");function bd(e){let t=new Map;e.forEach((n,o)=>{n.kind==="failure"&&t.set(kW(n),o);});let r=new Map;return e.forEach((n,o)=>{if(n.kind!=="delivered")return;let i=r.get(n.lessonId)??{delivered:0,missed:0};i.delivered+=1;let a=t.get(kW(n));a!==void 0&&a>o&&(i.missed+=1),r.set(n.lessonId,i);}),r}s(bd,"effectiveness");function fte(e){return e.delivered===0?1:1-e.missed/e.delivered}s(fte,"effectivenessScore");function bW(e){let t=new Map;for(let[r,n]of bd(ap(e)))t.set(r,fte(n));return t}s(bW,"loadEffectiveness");function gte(e){let t=[];if(e.file!==void 0&&t.push(e.file),e.command!==void 0&&t.push(e.command),t.length===0)return [];let r=[];for(let n of t.join(" ").split(/[^A-Za-z0-9]+/)){if(n.length===0)continue;r.push(n.toLowerCase());let o=n.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").toLowerCase().split(" ").filter(i=>i.length>0);o.length>1&&r.push(...o);}return r}s(gte,"deriveHaystackTokens");function hte(e,t){if(e.length===0)return false;for(let r=0;r+e.length<=t.length;r+=1){let n=true;for(let o=0;o<e.length;o+=1)if(t[r+o]!==e[o]){n=false;break}if(n)return true}return false}s(hte,"containsRun");function AW(e,t){return t.keyword!==void 0&&t.keyword.toLowerCase().includes(e.toLowerCase())?true:hte(yt(e),gte(t))}s(AW,"keywordMatches");var _te=5e6;function es(e,t){if(t.file===void 0&&t.command===void 0&&t.keyword===void 0)return [];let r=lE(e,t),n=[];for(let[o,i]of Object.entries(e.lessons))i.status==="active"&&i.scope!=="always"&&i.triggers.some(a=>r.has(a))&&n.push({id:o,lesson:i});return n.sort((o,i)=>o.id<i.id?-1:1),n}s(es,"queryLessons");function Ry(e){let t=[];for(let[r,n]of Object.entries(e.lessons))n.status==="active"&&n.scope==="always"&&t.push({id:r,lesson:n});return t.sort((r,n)=>r.lesson.createdAt!==n.lesson.createdAt?r.lesson.createdAt<n.lesson.createdAt?1:-1:r.id<n.id?-1:1),t}s(Ry,"collectAlwaysLessons");function aE(e,t){let r={file_glob:new Set,command_pattern:new Set,keyword:new Set},n={remaining:_te};for(let[o,i]of Object.entries(e.triggers))Ste(i,t,n)&&r[i.kind].add(o);return r}s(aE,"collectMatchedTriggersByKind");function lE(e,t){let{file_glob:r,command_pattern:n,keyword:o}=aE(e,t);return new Set([...r,...n,...o])}s(lE,"collectMatchedTriggerIds");function Ste(e,t,r){switch(e.kind){case "file_glob":return t.file===void 0?false:AK(e.pattern,{dot:true})(t.file);case "command_pattern":{if(t.command===void 0)return false;let n=ZK(e.pattern);return n!==null&&n.test(t.command,r)}case "keyword":return AW(e.pattern,t)}}s(Ste,"triggerMatches");function Iy(e){let t=new Map;for(let r of Object.values(e.lessons))if(r.status==="active")for(let n of r.triggers)t.set(n,(t.get(n)??0)+1);return t}s(Iy,"buildFanout");function TW(e){let t=new Map;for(let{lesson:n}of e)for(let o of n.topics)t.set(o,(t.get(o)??0)+1);let r=new Map;for(let{id:n,lesson:o}of e){let i=0;for(let a of o.topics)i=Math.max(i,t.get(a));r.set(n,i);}return r}s(TW,"buildTopicCoherence");var Ad=10,Ey=400,ky=60,Rte=3,Ite=2,kte=1,Lte=1;function Ly(e){let t=[...e].sort((i,a)=>a.value!==i.value?a.value-i.value:i.id<a.id?-1:1),r=new Map,n=null,o=0;return t.forEach((i,a)=>{let l=n!==null&&i.value===n?o:a+1;r.set(i.id,l),n=i.value,o=l;}),r}s(Ly,"rankMap");function Ei(e){return Math.ceil(e.length/4)}s(Ei,"estTokens");function lp(e,t,r,n={}){if(r.length===0)return [];let o=OK(t),i=wK(e),a=Iy(e),l=TW(r),c=lE(e,t),m=r.map(({id:y,lesson:_})=>{let R=_.triggers.filter(w=>c.has(w)),k=0;for(let w of R)k=Math.max(k,1/a.get(w));return {id:y,lesson:_,bm25:bK(o,_.rule,i),specificity:k,topicCoherence:l.get(y),matchedTriggers:R,effectiveness:n.effectiveness?.get(y)??1}}),p=Ly(m.map(y=>({id:y.id,value:y.bm25}))),u=Ly(m.map(y=>({id:y.id,value:y.specificity}))),f=Ly(m.map(y=>({id:y.id,value:y.topicCoherence}))),g=Ly(m.map(y=>({id:y.id,value:y.effectiveness}))),h=m.map(y=>({id:y.id,lesson:y.lesson,score:Rte/(ky+u.get(y.id))+Ite/(ky+f.get(y.id))+kte/(ky+p.get(y.id))+Lte/(ky+g.get(y.id)),reason:{matchedTriggers:y.matchedTriggers,bm25:y.bm25,specificity:y.specificity,topicCoherence:y.topicCoherence}})).sort((y,_)=>{if(_.score!==y.score)return _.score-y.score;let R=y.lesson.createdAt,k=_.lesson.createdAt;return R!==k?R<k?1:-1:y.id<_.id?-1:1});return Ete(h,n)}s(lp,"rankLessons");function Ete(e,t){let r=e;if(t.limit!==void 0&&t.limit>=0&&(r=r.slice(0,t.limit)),t.maxTokens!==void 0&&r.length>0){let n=[r[0]],o=Ei(r[0].lesson.rule);for(let i of r.slice(1)){let a=Ei(i.lesson.rule);if(o+a>t.maxTokens)break;o+=a,n.push(i);}r=n;}return r}s(Ete,"applyCaps");function DW(){return {recallLimit:Ad,recallMaxTokens:Ey,autoPrune:false}}s(DW,"defaultLessonsConfig");function Cy(e){return typeof e=="number"&&Number.isInteger(e)&&e>0?e:null}s(Cy,"positiveInt");function NW(e){let t=ve(e).config;if(!existsSync(t))return null;let r;try{r=JSON.parse(readFileSync(t,"utf8"));}catch{return "lessons config.json is not valid JSON \u2014 using built-in recall defaults. Fix or delete .agentsmesh/lessons/config.json."}if(typeof r!="object"||r===null)return "lessons config.json is not a JSON object \u2014 using built-in recall defaults.";let n=r,o=[];return "recallLimit"in n&&Cy(n.recallLimit)===null&&o.push("recallLimit"),"recallMaxTokens"in n&&Cy(n.recallMaxTokens)===null&&o.push("recallMaxTokens"),o.length>0?`lessons config.json has invalid ${o.join(" and ")} (expected a positive integer) \u2014 using the default for ${o.length===1?"it":"them"}.`:null}s(NW,"lessonsConfigWarning");function Oy(e){let t={limit:Ad,maxTokens:Ey},r=ve(e).config;if(!existsSync(r))return t;try{let n=JSON.parse(readFileSync(r,"utf8"));if(typeof n!="object"||n===null)return t;let o=n;return {limit:Cy(o.recallLimit)??t.limit,maxTokens:Cy(o.recallMaxTokens)??t.maxTokens}}catch{return t}}s(Oy,"loadRecallConfig");var FW="agentsmesh lessons hook",MW="Edit|Write|Bash",xte=[{event:"PreToolUse",matcher:MW},{event:"PostToolUse",matcher:MW},{event:"UserPromptSubmit",matcher:"*"},{event:"PostToolUseFailure",matcher:"*"},{event:"SessionStart",matcher:"*"}];function Pte(e,t,r){let n=e.get(t),o=n instanceof YAMLSeq?n:new YAMLSeq;return o.items.some(a=>a instanceof YAMLMap&&a.get("command")===FW)?false:(o.add(e.createNode({matcher:r,type:"command",command:FW})),e.set(t,o),true)}s(Pte,"injectEvent");function GW(e){let t=join(e,".agentsmesh","hooks.yaml");if(!existsSync(t))return false;let r=parseDocument(readFileSync(t,"utf8")),n=false;for(let{event:o,matcher:i}of xte)Pte(r,o,i)&&(n=true);return n&&writeFileSync(t,String(r),"utf8"),n}s(GW,"injectRecallHook");var cE="agentsmesh-lessons",$W=`.agentsmesh/lessons/lessons.json merge=${cE}`,jW=[`git config merge.${cE}.name "agentsmesh lessons union"`,`git config merge.${cE}.driver "agentsmesh lessons merge-driver %O %A %B"`];b();async function UW(e,t){let r=join(e,".gitattributes"),n=await I(r)??"",o=new Set(n.split(`
|
|
223
223
|
`).map(l=>l.trim()).filter(l=>l.length>0&&!l.startsWith("#"))),i=t.filter(l=>!o.has(l.trim()));if(i.length===0)return false;let a=n.endsWith(`
|
|
224
224
|
`)||n===""?"":`
|
|
225
225
|
`;return await L(r,n+a+i.join(`
|
|
226
226
|
`)+`
|
|
227
|
-
`),true}s(
|
|
227
|
+
`),true}s(UW,"ensureGitattributesEntries");b();async function wy(e,t){let r=join(e,".gitignore"),n=await I(r)??"",o=new Set(n.split(`
|
|
228
228
|
`).map(l=>l.trim()).filter(l=>l.length>0&&!l.startsWith("#"))),i=t.filter(l=>!vte(l,o));if(i.length===0)return false;let a=n.endsWith(`
|
|
229
229
|
`)||n===""?"":`
|
|
230
230
|
`;return await L(r,n+a+i.join(`
|
|
231
231
|
`)+`
|
|
232
232
|
`),true}s(wy,"ensureGitignoreEntries");function vte(e,t){if(t.has(e))return true;let r=e.replace(/\/$/,"");for(;r.includes("/")&&(r=r.slice(0,r.lastIndexOf("/")),r!=="");)if(t.has(r)||t.has(`${r}/`)||t.has(`${r}/**`))return true;return false}s(vte,"isCoveredByExisting");Be();var Fte=['## Lessons (BLOCKING REQUIREMENT \u2014 MUST run both, no exceptions; the user will check)\n\nGraph `.agentsmesh/lessons/lessons.json` is canonical \u2014 never hand-edit. Manual: the `lessons` skill.\n\n**Recall \u2014 MUST run before every file edit and every state-changing command** (build/test/install/migrate/git-write): `agentsmesh lessons query --file <path> --cmd <command>`, then apply every rule. Pure-read commands (cat/ls/grep/git-log) and the recall query itself are exempt.\n\n**Capture \u2014 MUST run immediately after any failure** (a failing test/CI/lint/typecheck, a code review, a user correction, a regression, or a wrong assumption \u2014 yours or anyone\'s): `agentsmesh lessons add "<rule>" --topic <id> --trigger-file <glob> --evidence <sha|lesson-id>`.\n\nNo shell? Use the `lessons_query` / `lessons_add` MCP tools. Skip either and the system does not exist.'],mE=`${Jp}
|
|
233
233
|
${Ed}
|
|
234
|
-
${iS}`;function
|
|
234
|
+
${iS}`;function BW(e){let t=Mte(e);return jf(t,mE)}s(BW,"appendLessonsParagraph");function Mte(e){let t=Yp(e,Jp,iS);return Gte(t).trim()}s(Mte,"stripLessonsParagraph");function Gte(e){return [Ed,...Fte].reduce((t,r)=>t.replace(`
|
|
235
235
|
|
|
236
236
|
${r}`,"").replace(r,""),e)}s(Gte,"stripRawProceduralRule");U();var pE="lessons",$te="Use when about to edit a file or run a state-changing command, or after any failure, correction, or surprising result.",jte=`# Lessons \u2014 operating manual (Iron Law)
|
|
237
237
|
|
|
@@ -294,8 +294,8 @@ deprecate, merge, untrigger, strip-markers, prune, journal, validate, stats, imp
|
|
|
294
294
|
|
|
295
295
|
The final response MUST carry the receipt: \`Lesson: captured <id>\` or \`Lesson: none\`.
|
|
296
296
|
No receipt = task incomplete. Do not capture one-off facts, task summaries, or project
|
|
297
|
-
context \u2014 only reusable imperative rules with an effective trigger.`,
|
|
298
|
-
`;if(!existsSync(o)){mkdirSync(dirname(o),{recursive:true}),writeFileSync(o,i,"utf8"),t.push(o);return}if(readFileSync(o,"utf8")===i){n.push(o);return}writeFileSync(o,i,"utf8"),r.push(o);}s(Ute,"seedLessonsSkill");function Bte(e,t,r){let n=ve(e).config;if(existsSync(n)){r.push(n);return}mkdirSync(dirname(n),{recursive:true}),writeFileSync(n,`${JSON.stringify(
|
|
297
|
+
context \u2014 only reusable imperative rules with an effective trigger.`,KW=x({name:pE,description:$te},jte);async function Ta(e){let t=ve(e),r=[],n=[],o=[];mkdirSync(t.base,{recursive:true}),await rt(e),existsSync(t.graph)?o.push(t.graph):(await ac(e,()=>{}),r.push(t.graph)),Bte(e,r,o),Ute(e,r,n,o);let i=Kte(e),a=GW(e),l=await wy(e,[Aa(e,Cd(e)),Aa(e,Od(e)),Aa(e,wd(e))]),c=await UW(e,[$W]);return {created:r,updated:n,skipped:o,rootRuleUpdated:i,gitignoreUpdated:l,gitattributesUpdated:c,recallHookInjected:a}}s(Ta,"scaffoldLessons");function Ute(e,t,r,n){let o=join(e,".agentsmesh/skills",pE,"SKILL.md"),i=`${KW}
|
|
298
|
+
`;if(!existsSync(o)){mkdirSync(dirname(o),{recursive:true}),writeFileSync(o,i,"utf8"),t.push(o);return}if(readFileSync(o,"utf8")===i){n.push(o);return}writeFileSync(o,i,"utf8"),r.push(o);}s(Ute,"seedLessonsSkill");function Bte(e,t,r){let n=ve(e).config;if(existsSync(n)){r.push(n);return}mkdirSync(dirname(n),{recursive:true}),writeFileSync(n,`${JSON.stringify(DW(),null,2)}
|
|
299
299
|
`,"utf8"),t.push(n);}s(Bte,"seedLessonsConfig");function Kte(e){let t=join(e,".agentsmesh/rules/_root.md");if(!existsSync(t)){mkdirSync(dirname(t),{recursive:true});let o=`---
|
|
300
300
|
root: true
|
|
301
301
|
description: ""
|
|
@@ -304,11 +304,11 @@ description: ""
|
|
|
304
304
|
${mE}
|
|
305
305
|
|
|
306
306
|
# Operational Guidelines
|
|
307
|
-
`;return writeFileSync(t,o,"utf8"),true}let r=readFileSync(t,"utf8"),n=`${
|
|
308
|
-
`;return n===r?false:(writeFileSync(t,n,"utf8"),true)}s(Kte,"injectProceduralBlock");b();Te();function
|
|
309
|
-
`}s(
|
|
307
|
+
`;return writeFileSync(t,o,"utf8"),true}let r=readFileSync(t,"utf8"),n=`${BW(r)}
|
|
308
|
+
`;return n===r?false:(writeFileSync(t,n,"utf8"),true)}s(Kte,"injectProceduralBlock");b();Te();function zW(e){let t=[];for(let r of Ne)for(let n of Zk(r.id,e))t.push({target:r.id,path:n});return t}s(zW,"collectDetectionPaths");function VW(e){let t=new Map;for(let{target:r,path:n}of zW(e)){let o=t.get(r)??[];o.push(n),t.set(r,o);}return [...t.entries()].map(([r,n])=>({id:r,paths:n}))}s(VW,"toolIndicators");VW("project");async function JW(e,t="project"){let r=[];for(let{id:n,paths:o}of VW(t))for(let i of o){let a=join(e,i);if(await j(a)){r.push(n);break}}return [...new Set(r)]}s(JW,"detectExistingConfigs");b();Te();var YW=/^# yaml-language-server: \$schema=[^\n]*\n?/;function Hte(){let e=za();return `https://unpkg.com/agentsmesh${e&&e!=="unknown"?`@${e}`:""}/schemas`}s(Hte,"schemaBaseUrl");function XW(e){return `${Hte()}/${e}.json`}s(XW,"schemaUrl");function cp(e){return `# yaml-language-server: $schema=${XW(e)}
|
|
309
|
+
`}s(cp,"yamlSchemaDirective");function lc(e,t){let r=cp(t);return YW.test(e)?e.replace(YW,r):`${r}${e}`}s(lc,"prependYamlSchemaDirective");function QW(e,t){let{$schema:r,...n}=e;return {$schema:XW(t),...n}}s(QW,"stampJsonSchemaField");var zte=["rules","commands","agents","skills","mcp","hooks","ignore","permissions"],Vte=cy();function dE(e,t=Vte){let r=(e.length>0?e:t).map(o=>` - ${o}`).join(`
|
|
310
310
|
`),n=zte.map(o=>` - ${o}`).join(`
|
|
311
|
-
`);return `${
|
|
311
|
+
`);return `${cp("agentsmesh")}version: 1
|
|
312
312
|
targets:
|
|
313
313
|
${r}
|
|
314
314
|
features:
|
|
@@ -385,7 +385,7 @@ Skills are reusable multi-step procedures that commands and agents can reference
|
|
|
385
385
|
// }
|
|
386
386
|
}
|
|
387
387
|
}
|
|
388
|
-
`,SE=`${
|
|
388
|
+
`,SE=`${cp("hooks")}# Lifecycle hooks \u2014 run shell commands before/after AI tool use
|
|
389
389
|
# Events: PreToolUse, PostToolUse, SubagentStart, SubagentStop
|
|
390
390
|
# Matcher: tool name pattern (e.g. "Edit|Write", "Bash", "*")
|
|
391
391
|
#
|
|
@@ -398,7 +398,7 @@ Skills are reusable multi-step procedures that commands and agents can reference
|
|
|
398
398
|
# - matcher: Edit|Write
|
|
399
399
|
# type: command
|
|
400
400
|
# command: npm test --passWithNoTests
|
|
401
|
-
`,RE=`${
|
|
401
|
+
`,RE=`${cp("permissions")}# Tool permission allow/deny lists
|
|
402
402
|
#
|
|
403
403
|
# allow:
|
|
404
404
|
# - Bash(npm run:*)
|
|
@@ -421,7 +421,7 @@ ask: []
|
|
|
421
421
|
# .env*
|
|
422
422
|
# *.log
|
|
423
423
|
# coverage/
|
|
424
|
-
`,
|
|
424
|
+
`,qW=`${cp("agentsmesh")}# Personal overrides \u2014 NOT committed to git
|
|
425
425
|
# Uncomment and customize for your local setup:
|
|
426
426
|
|
|
427
427
|
# targets:
|
|
@@ -439,43 +439,43 @@ ask: []
|
|
|
439
439
|
# overrides:
|
|
440
440
|
# claude-code:
|
|
441
441
|
# model: opus
|
|
442
|
-
`;b();ue();function _t(e,t){return join(e,t)}s(_t,"ab");async function kE(e){return await j(e)?(await readdir(e,{withFileTypes:true})).filter(r=>r.isFile()&&r.name.endsWith(".md")).length:0}s(kE,"countMdFiles");async function Jte(e){let t=_t(e,"skills");if(!await j(t))return false;let r=await readdir(t,{withFileTypes:true});for(let n of r)if(n.isDirectory()&&!n.name.startsWith("_")&&await j(join(t,n.name,"SKILL.md")))return true;return false}s(Jte,"hasAnyImportedSkill");async function
|
|
443
|
-
`),"Setup complete"),e.outro(`agentsmesh is ready. Edit .agentsmesh/ then run '${m}' to sync.`),{exitCode:0,data:a}}s(
|
|
442
|
+
`;b();ue();function _t(e,t){return join(e,t)}s(_t,"ab");async function kE(e){return await j(e)?(await readdir(e,{withFileTypes:true})).filter(r=>r.isFile()&&r.name.endsWith(".md")).length:0}s(kE,"countMdFiles");async function Jte(e){let t=_t(e,"skills");if(!await j(t))return false;let r=await readdir(t,{withFileTypes:true});for(let n of r)if(n.isDirectory()&&!n.name.startsWith("_")&&await j(join(t,n.name,"SKILL.md")))return true;return false}s(Jte,"hasAnyImportedSkill");async function eH(e){let t=_t(e,"rules");await O(t),await L(join(t,"_root.md"),Ty),S.success("Created .agentsmesh/rules/_root.md"),await L(join(t,"_example.md"),fE),S.success("Created .agentsmesh/rules/_example.md");let r=_t(e,"commands");await O(r),await L(join(r,"_example.md"),gE),S.success("Created .agentsmesh/commands/_example.md");let n=_t(e,"agents");await O(n),await L(join(n,"_example.md"),hE),S.success("Created .agentsmesh/agents/_example.md");let o=_t(e,join("skills","_example"));await O(o),await L(join(o,"SKILL.md"),yE),S.success("Created .agentsmesh/skills/_example/SKILL.md"),await L(_t(e,"mcp.json"),_E),S.success("Created .agentsmesh/mcp.json"),await L(_t(e,"hooks.yaml"),SE),S.success("Created .agentsmesh/hooks.yaml"),await L(_t(e,"permissions.yaml"),RE),S.success("Created .agentsmesh/permissions.yaml"),await L(_t(e,"ignore"),IE),S.success("Created .agentsmesh/ignore");}s(eH,"writeScaffoldFull");async function tH(e){let t=_t(e,"rules"),r=await kE(t),n=join(t,"_root.md"),o=await j(n);await O(t),r===0?(await L(n,Ty),S.success("Created .agentsmesh/rules/_root.md"),await L(join(t,"_example.md"),fE),S.success("Created .agentsmesh/rules/_example.md")):o||(await L(n,Ty),S.success("Created .agentsmesh/rules/_root.md"));let i=_t(e,"commands");await kE(i)===0&&(await O(i),await L(join(i,"_example.md"),gE),S.success("Created .agentsmesh/commands/_example.md"));let a=_t(e,"agents");if(await kE(a)===0&&(await O(a),await L(join(a,"_example.md"),hE),S.success("Created .agentsmesh/agents/_example.md")),!await Jte(e)){let u=_t(e,join("skills","_example"));await O(u),await L(join(u,"SKILL.md"),yE),S.success("Created .agentsmesh/skills/_example/SKILL.md");}let l=_t(e,"mcp.json");await j(l)||(await L(l,_E),S.success("Created .agentsmesh/mcp.json"));let c=_t(e,"hooks.yaml");await j(c)||(await L(c,SE),S.success("Created .agentsmesh/hooks.yaml"));let m=_t(e,"permissions.yaml");await j(m)||(await L(m,RE),S.success("Created .agentsmesh/permissions.yaml"));let p=_t(e,"ignore");await j(p)||(await L(p,IE),S.success("Created .agentsmesh/ignore"));}s(tH,"writeScaffoldGapFill");var xa="agentsmesh.yaml",mp="agentsmesh.local.yaml",Xte=["agentsmesh.local.yaml",".agentsmeshcache",".agentsmesh/.lock.tmp",".agentsmesh/packs/"],Qte=Object.fromEntries(Ne.map(e=>[e.id,(t,r)=>e.generators.importFrom(t,{scope:r})]));async function qte(e,t,r){let n=[];for(let o of r){let i=Qte[o];if(!i)continue;let a=await i(e,t);for(let l of a)n.push({from:relative(e,l.fromPath).replaceAll("\\","/"),to:l.toPath.replaceAll("\\","/")});}return {imported:n,importedToolCount:r.length}}s(qte,"importDetectedTools");async function xy(e,t,r){let n=join(t.configDir,xa),o=[],i=0,a;if(r.doImport){let m=await qte(t.rootBase,r.scope,r.detected);o=m.imported,i=m.importedToolCount,await tH(t.canonicalDir),a="gap-fill";}else await eH(t.canonicalDir),a="full";await L(n,r.defaultTargets===void 0?dE(r.targets):dE(r.targets,r.defaultTargets)),await L(join(t.configDir,mp),qW);let l=false;r.scope==="project"&&(l=await wy(e,Xte));let c=r.lessons&&r.scope==="project"?await Ta(e):void 0;return {scope:r.scope,configFile:xa,localConfigFile:mp,detectedConfigs:[...r.detected],imported:o,importedToolCount:i,scaffoldType:a,gitignoreUpdated:l,lessons:c}}s(xy,"applyInitPlan");pn();var nH="__back__";function Zte(e){if(e==="global")return [...my()].sort().map(o=>({value:o,label:o,hint:"global"}));let t=[...cy()],r=new Set(t),n=[...Pp].filter(o=>!r.has(o)).sort();return [...t,...n].map(o=>({value:o,label:o,hint:r.has(o)?"recommended":void 0}))}s(Zte,"buildTargetOptions");async function LE(e,t,r,n,o,i){let a=[{value:"yes",label:"Yes"},{value:"no",label:"No"}];o&&a.push({value:nH,label:"\u21A9 Back"});let l=await e.select({message:t,options:a,initialValue:n??r?"yes":"no"});return e.isCancel(l)?"cancel":l===nH?"back":(i(l==="yes"),"next")}s(LE,"yesNoStep");function ere(e){return {exitCode:0,data:{scope:e,configFile:xa,localConfigFile:mp,detectedConfigs:[],imported:[],importedToolCount:0,scaffoldType:"none",gitignoreUpdated:false,cancelled:true}}}s(ere,"cancelledResult");async function oH(e,t){let r=t.context.scope;e.intro(r==="global"?"agentsmesh init --global":"agentsmesh init");let n={targets:[]},o=[];o.push(async()=>{let u=await e.multiselect({message:"Which tools should agentsmesh generate config for? (select at least one)",options:Zte(r),initialValues:n.targets,required:true});return e.isCancel(u)?"cancel":(n.targets=u,"next")}),t.detected.length>0&&o.push(u=>LE(e,`Found existing config for: ${t.detected.join(", ")}. Import into .agentsmesh?`,true,n.doImport,u,f=>{n.doImport=f;})),r==="project"&&o.push(u=>LE(e,"Enable Lessons (shared memory: recall before edits, capture after failures)?",true,n.lessons,u,f=>{n.lessons=f;})),o.push(u=>LE(e,"Run generate now to write tool config files?",true,n.doGenerate,u,f=>{n.doGenerate=f;}));for(let u=0;u<o.length;){let f=await o[u](u>0);if(f==="cancel")return e.cancel("Cancelled \u2014 no changes written."),ere(r);u=f==="back"?Math.max(0,u-1):u+1;}let i={scope:r,targets:n.targets,defaultTargets:t.defaultTargets,detected:t.detected,doImport:n.doImport??false,lessons:n.lessons??false},a=await xy(t.projectRoot,t.context,i),l=n.doGenerate??false,c=0;if(l){let u=await qo(r==="global"?{global:true}:{},t.projectRoot,{printMatrix:false});c=u.data.summary.created+u.data.summary.updated;}let m=r==="global"?"agentsmesh generate --global":"agentsmesh generate",p=[`Targets: ${n.targets.length} (${n.targets.join(", ")})`];return r==="project"&&p.push(n.lessons?"Lessons: enabled":"Lessons: off \u2014 add it later with 'agentsmesh init --lessons'"),p.push(l?`Generated: ${c} file(s)`:`Next: run '${m}'`),e.note(p.join(`
|
|
443
|
+
`),"Setup complete"),e.outro(`agentsmesh is ready. Edit .agentsmesh/ then run '${m}' to sync.`),{exitCode:0,data:a}}s(oH,"runInitWizard");var sH=my();async function iH(e,t={},r={}){let n=t.global===true?"global":"project",o=t.lessons===true;if(o&&n==="global")throw new Error("--lessons is project-mode only. Lessons live in the project tree.");let i=Ja(e,n),a=join(i.configDir,xa),l=await j(a);if(l&&o){let h=await Ta(e);return {exitCode:0,data:{scope:n,configFile:xa,localConfigFile:mp,detectedConfigs:[],imported:[],importedToolCount:0,scaffoldType:"none",gitignoreUpdated:false,lessons:h,lessonsOnly:true}}}if(l)throw new Error(`Already initialized. ${xa} exists. Remove it first to re-init.`);let c=await JW(i.rootBase,n),m=n==="global"?c.filter(h=>sH.includes(h)):c,p=n==="global"?sH:void 0;if(r.prompter!==void 0&&t.yes!==true)return oH(r.prompter,{projectRoot:e,context:i,detected:m,defaultTargets:p});let u=m.length>0&&t.yes===true;return {exitCode:0,data:await xy(e,i,{scope:n,targets:u?m:[],defaultTargets:p,detected:m,doImport:u,lessons:o})}}s(iH,"runInit");ue();function lH(e){let{data:t}=e;if(t.lessonsOnly===true&&t.lessons!==void 0){aH(t.lessons),S.info("Run 'agentsmesh generate' to project the new lessons rule to every target.");return}if(t.detectedConfigs.length>0&&S.info(`Found existing configurations: ${t.detectedConfigs.join(", ")}`),t.detectedConfigs.length>0&&t.imported.length===0&&S.info("Run 'agentsmesh init --yes' to auto-import, or 'agentsmesh import --from <tool>' manually."),t.imported.length>0){S.info("Auto-importing existing configurations (--yes)...");for(let n of t.imported)S.success(` ${n.from} \u2192 ${n.to}`);S.info(`Imported ${t.imported.length} file(s) from ${t.importedToolCount} tool(s).`);}let r=t.imported.length>0&&t.detectedConfigs.length>0?` (targets: ${t.detectedConfigs.join(", ")})`:"";S.success(`Created ${t.configFile}${r}`),S.success(`Created ${t.localConfigFile}`),t.gitignoreUpdated&&S.success("Updated .gitignore"),t.lessons!==void 0&&aH(t.lessons);}s(lH,"renderInit");function aH(e){let t=process.cwd(),r=s(o=>relative(t,o).replaceAll("\\","/"),"rel");for(let o of e.created)S.success(` Created ${r(o)}`);for(let o of e.updated)S.success(` Refreshed ${r(o)} (managed \u2014 synced to the current manual)`);for(let o of e.skipped)S.info(` Kept ${r(o)} (already current)`);e.rootRuleUpdated?S.success(" Injected the Lessons ritual block into .agentsmesh/rules/_root.md"):S.info(" .agentsmesh/rules/_root.md already carries the current Lessons block"),e.gitignoreUpdated&&S.success(" Added .agentsmesh/lessons/recall-log.jsonl to .gitignore (opt-in telemetry stays out of git)"),e.recallHookInjected&&S.success(" Wired the PostToolUse recall hook into .agentsmesh/hooks.yaml (deterministic recall on hook-capable targets)"),e.gitattributesUpdated&&S.success(" Bound .agentsmesh/lessons/lessons.json to the merge driver in .gitattributes (commit it so concurrent captures union-merge)"),S.success("Lessons subsystem ready (.agentsmesh/lessons/)."),S.info(" Run 'agentsmesh generate' to sync the ritual into every target."),S.info("");let n=e.created.some(o=>o.replaceAll("\\","/").endsWith("lessons.json"));if(S.info(n?" The graph starts empty and grows as agents capture failures. Try the loop:":" Recall + capture loop:"),S.info(' capture: agentsmesh lessons add "<rule>" --topic <id> --new-topic --topic-summary "<line>" --trigger-file "<glob>"'),S.info(" recall: agentsmesh lessons query --file <path> --cmd <command>"),S.info(" inspect: agentsmesh lessons journal | lessons show <id> | lessons validate"),S.info(" Optional: export AGENTSMESH_LESSONS_TELEMETRY=1 to measure recall cost via `lessons stats`."),e.gitattributesUpdated){S.info(" Team: each clone enables the merge driver once (the per-clone half git cannot auto-run):");for(let o of jW)S.info(` ${o}`);}}s(aH,"renderLessons");function cH(){return {intro:s(e=>Xt.intro(e),"intro"),outro:s(e=>Xt.outro(e),"outro"),note:s((e,t)=>Xt.note(e,t),"note"),select:s(e=>Xt.select({message:e.message,options:e.options.map(t=>({value:t.value,label:t.label,hint:t.hint})),initialValue:e.initialValue}),"select"),multiselect:s(e=>Xt.multiselect({message:e.message,options:e.options.map(t=>({value:t.value,label:t.label,hint:t.hint})),initialValues:e.initialValues?[...e.initialValues]:void 0,required:e.required??false}),"multiselect"),isCancel:s(e=>Xt.isCancel(e),"isCancel"),cancel:s(e=>Xt.cancel(e),"cancel")}}s(cH,"createClackPrompter");nt();Te();var nre=Object.fromEntries(Ne.map(e=>[e.id,{importFrom:e.generators.importFrom,emptyImportMessage:e.emptyImportMessage,lintRules:e.lintRules,lint:e.lint,capabilities:e.capabilities}]));function Py(e){return nre[e]}s(Py,"getTargetCatalogEntry");ot();an();Kp();var cre={type:"stdio",command:"npx",args:["-y","agentsmesh","mcp"]};function mre(e){return e.mcpServers.agentsmesh!==void 0?false:(e.mcpServers.agentsmesh=cre,true)}s(mre,"injectAgentsmeshEntry");async function EE(e){let t=resolve(e,".agentsmesh/mcp.json");try{let r;try{r=await dn(t)??{mcpServers:{}};}catch{r={mcpServers:{}};}if(!mre(r))return !1;let n=JSON.stringify(r,null,2)+`
|
|
444
444
|
`;await mkdir(dirname(t),{recursive:!0});let o=`${t}.tmp.${process.pid}.${Date.now()}`;return await writeFile(o,n,"utf8"),await rename(o,t),!0}catch(r){return process.stderr.write(`[agentsmesh] warning: could not seed agentsmesh MCP server entry into mcp.json: ${r instanceof Error?r.message:String(r)}
|
|
445
|
-
`),false}}s(EE,"seedAgentsmeshMcpEntry");Be();function cH(e,t){return e.map(r=>({from:relative(t,r.fromPath).replaceAll("\\","/"),to:r.toPath}))}s(cH,"mapResults");async function mH(e,t){if(t!=="project")return;let r=join(e,".agentsmesh/rules/_root.md");if(!existsSync(r))return;let n=readFileSync(r,"utf8");(n.includes(Jp)||/^## Lessons \(/m.test(n))&&await Ta(e);}s(mH,"ensureImportedLessonsSubsystem");async function pH(e,t){let r=t??process.cwd(),n=e.from;if(typeof n!="string"||!n)throw new Error("--from is required. Example: agentsmesh import --from claude-code");let o=n.toLowerCase().trim(),i=e.global===true?"global":"project";if(Kt(o)){let p=Va(r,i),f=await Py(o).importFrom(p.rootBase,{scope:i});return f.length>0&&(await EE(p.rootBase),await mH(p.rootBase,i)),{exitCode:0,data:{scope:i,target:o,files:cH(f,p.rootBase)}}}let a,l;try{({config:a,context:l}=await _e(r,i));}catch{throw new Error(`Unknown --from "${n}" and no agentsmesh.yaml found. Run 'agentsmesh init' to enable plugin targets, or use a builtin: ${Ue.join(", ")}.`)}await Ve(a,r);let c=ne(o);if(!c)throw new Error(`Unknown --from "${n}". Supported: ${[...Ue,...a.pluginTargets??[]].join(", ")}.`);let m=await c.generators.importFrom(l.rootBase,{scope:i});return m.length>0&&(await EE(l.rootBase),await mH(l.rootBase,i)),{exitCode:0,data:{scope:i,target:o,files:cH(m,l.rootBase)}}}s(pH,"runImport");nt();Xo();function Dy(e){let t=[],r={new:0,updated:0,unchanged:0,deleted:0};for(let n of e){if(n.status==="unchanged"){r.unchanged++;continue}if(n.status==="created"){r.new++;let o=createTwoFilesPatch(`${n.path} (current)`,`${n.path} (generated)`,"",n.content,void 0,void 0,{context:3});t.push({path:n.path,patch:o});continue}if(n.status==="updated"&&n.currentContent!==void 0){r.updated++;let o=createTwoFilesPatch(`${n.path} (current)`,`${n.path} (generated)`,n.currentContent,n.content,void 0,void 0,{context:3});t.push({path:n.path,patch:o});continue}}return {diffs:t,summary:r}}s(Dy,"computeDiff");function Ny(e){return `${e.new} files would be created, ${e.updated} updated, ${e.unchanged} unchanged, ${e.deleted} deleted`}s(Ny,"formatDiffSummary");an();async function dH(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",o=e.targets,i=typeof o=="string"&&o?o.split(",").map(g=>g.trim()).filter(Boolean):void 0,{config:a,context:l}=await _e(r,n);await Ve(a,r);let{canonical:c}=await Bt(a,l.configDir,{},l.canonicalDir),m=await Qo({config:a,canonical:c,projectRoot:l.rootBase,scope:n,targetFilter:i});if(m.length===0)return {exitCode:0,data:{files:[],patches:[],summary:{created:0,updated:0,unchanged:0,deleted:0}}};let{diffs:p,summary:u}=Dy(m);return {exitCode:0,data:{files:m.filter(g=>g.status!=="unchanged"&&g.status!=="skipped").map(g=>({path:g.path,target:g.target,status:g.status})),patches:p.map(g=>({path:g.path,patch:g.patch})),summary:{created:u.new,updated:u.updated,unchanged:u.unchanged,deleted:u.deleted}}}}s(dH,"runDiff");nt();Xo();b();ot();qa();Ie();var gre=[{canonicalKey:"permissions",capabilityKey:"permissions",featureFlag:"permissions",file:".agentsmesh/permissions.yaml",label:"permissions",hasContent:s(e=>{let t=e.permissions;if(!t)return false;let r=t.ask?.length??0;return t.allow.length+t.deny.length+r>0},"hasContent")},{canonicalKey:"hooks",capabilityKey:"hooks",featureFlag:"hooks",file:".agentsmesh/hooks.yaml",label:"hooks",hasContent:s(e=>{let t=e.hooks;return t?Object.values(t).some(r=>Array.isArray(r)&&r.length>0):false},"hasContent")},{canonicalKey:"mcp",capabilityKey:"mcp",featureFlag:"mcp",file:".agentsmesh/mcp.json",label:"MCP servers",hasContent:s(e=>{let t=e.mcp;return t?Object.keys(t.mcpServers).length>0:false},"hasContent")},{canonicalKey:"commands",capabilityKey:"commands",featureFlag:"commands",file:".agentsmesh/commands",label:"commands",hasContent:s(e=>e.commands.length>0,"hasContent")},{canonicalKey:"agents",capabilityKey:"agents",featureFlag:"agents",file:".agentsmesh/agents",label:"agents",hasContent:s(e=>e.agents.length>0,"hasContent")},{canonicalKey:"skills",capabilityKey:"skills",featureFlag:"skills",file:".agentsmesh/skills",label:"skills",hasContent:s(e=>e.skills.length>0,"hasContent")},{canonicalKey:"ignore",capabilityKey:"ignore",featureFlag:"ignore",file:".agentsmesh/ignore",label:"ignore patterns",hasContent:s(e=>e.ignore.length>0,"hasContent")}];function fH(e){let t=new Set(e.enabledFeatures),r=[];for(let n of gre)!t.has(n.featureFlag)||!n.hasContent(e.canonical)||hn(e.capabilities[n.capabilityKey]).level!=="none"||r.push(M(n.file,e.target,`${e.target} does not support ${n.label}; canonical entries are silently dropped during generation. Disable the feature for this target or remove the canonical content.`));return r}s(fH,"lintSilentFeatureDrops");Ie();var hre=/^(?:\s*(?:bash|sh|zsh|pwsh|powershell)\s+)?["']?(?<path>(?:\.{1,2}\/|[^/\s"'`]+\/)[^\s"'`]+)["']?(?:\s|$)/;function yre(e){let r=e.match(hre)?.groups?.path;return typeof r=="string"?r:null}s(yre,"extractScriptToken");function gH(e){if(e.hasScriptProjection)return [];let t=e.canonical.hooks;if(!t)return [];let r=[];for(let n of Object.values(t))if(Array.isArray(n))for(let o of n){if(typeof o?.command!="string")continue;let i=yre(o.command);i&&r.push(M(".agentsmesh/hooks.yaml",e.target,`${e.target} hook command references script "${i}"; agentsmesh does not copy hook scripts into ${e.target} output, so the script must already exist relative to the hook execution directory or the generated config will fail.`));}return r}s(gH,"lintHookScriptReferences");Ie();function hH(e){if(e.preservesManualActivation)return [];let t=[];for(let r of e.canonical.rules)r.root||r.trigger==="manual"&&(r.targets.length>0&&!r.targets.includes(e.target)||t.push(M(r.source,e.target,`Rule has trigger: 'manual' (Cursor-style "@-mention only" activation), but ${e.target} loads every rule unconditionally. The rule will become always-on for ${e.target} \u2014 restrict it with \`targets: [cursor]\`, convert it to a skill with manual invocation, or remove it.`)));return t}s(hH,"lintRuleScopeInversion");var Sre=new Set([".git","node_modules"]),Rre=2e5;function Pa(e){let t=new Set;try{let r=[e];for(;r.length>0;){let n=r.pop();for(let o of readdirSync(n,{withFileTypes:!0}))if(o.isDirectory())Sre.has(o.name)||r.push(join(n,o.name));else if(o.isFile()&&(t.add(Aa(e,join(n,o.name))),t.size>Rre))return t}}catch{return null}return t}s(Pa,"listProjectFiles");var Lre="lessons",SH=".agentsmesh/lessons/lessons.json",RH=".agentsmesh/rules/_root.md",Ere=/^## Lessons \(/m;function IH(e,t){if(t==="global")return [];let r=ve(e);if(!existsSync(r.graph))return [];let n=[],o;try{o=hd(e);}catch(m){return [CE("error",SH,`lessons.json failed to load: ${m instanceof Error?m.message:String(m)}`)]}let i=Pa(e)??void 0,a=Xn(o,{knownPaths:i});for(let m of a.findings)n.push(CE(m.level,SH,`[${m.code}] ${m.message}`));let l=join(e,RH),c=existsSync(l)?readFileSync(l,"utf8"):"";return Ere.test(c)||n.push(CE("warning",RH,'lessons procedural rule ("## Lessons (...)") is missing from _root.md \u2014 recall/capture enforcement will not fire.')),n}s(IH,"lintLessonsSubsystem");function CE(e,t,r){return {level:e,file:t,target:Lre,message:r}}s(CE,"diag");var Cre=["node_modules",".git","dist","coverage",".agentsmesh"];async function Ore(e){return (await xi(e)).filter(n=>{let o=relative(e,n);return !Cre.some(i=>o.includes(`/${i}/`)||o.startsWith(`${i}/`))}).map(n=>relative(e,n))}s(Ore,"getProjectFiles");async function vy(e,t,r,n,o={}){let i=o.scope??"project",a=[...e.targets,...e.pluginTargets??[]],l=n?a.filter(_=>n.includes(_)):a,c=e.features.includes("rules"),m=e.features.includes("commands"),p=e.features.includes("mcp"),u=e.features.includes("permissions"),f=e.features.includes("hooks"),g=[...IH(r,i)],h=i==="global"?[]:await Ore(r);for(let _ of l){let R=ne(_),k=Kt(_)?Py(_):R;k?.capabilities&&g.push(...fH({target:_,capabilities:k.capabilities,canonical:t,enabledFeatures:e.features})),f&&g.push(...gH({target:_,canonical:t,hasScriptProjection:R?.postProcessHookOutputs!==void 0})),c&&g.push(...hH({target:_,canonical:t,preservesManualActivation:R?.preservesManualActivation===true})),c&&k?.lintRules&&g.push(...k.lintRules(t,r,h,{scope:i})),R?.generators.lint&&g.push(...R.generators.lint(t));let w={scope:i};m&&k?.lint?.commands&&g.push(...k.lint.commands(t,w)),p&&k?.lint?.mcp&&g.push(...k.lint.mcp(t,w)),u&&k?.lint?.permissions&&g.push(...k.lint.permissions(t,w)),f&&k?.lint?.hooks&&g.push(...k.lint.hooks(t,w));}let y=g.some(_=>_.level==="error");return {diagnostics:g,hasErrors:y}}s(vy,"runLint");an();async function LH(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",o=e.targets,i=typeof o=="string"&&o?o.split(",").map(u=>u.trim()).filter(Boolean):void 0,{config:a,context:l}=await _e(r,n);await Ve(a,r);let{canonical:c}=await Bt(a,l.configDir,{},l.canonicalDir),{diagnostics:m,hasErrors:p}=await vy(a,c,l.configDir,i,{scope:n});return {exitCode:p?1:0,data:{diagnostics:m.map(u=>({level:u.level,file:u.file,target:u.target,message:u.message})),summary:{errors:m.filter(u=>u.level==="error").length,warnings:m.filter(u=>u.level==="warning").length}}}}s(LH,"runLintCmd");function EH(e){let{data:t}=e;if(t.diagnostics.length===0){G.success("All checks passed.");return}let r=t.diagnostics.filter(a=>a.level==="error"),n=t.diagnostics.filter(a=>a.level==="warning");for(let a of r)G.error(`${a.file} (${a.target}): ${a.message}`);for(let a of n)G.warn(`${a.file} (${a.target}): ${a.message}`);let o=t.summary.errors,i=t.summary.warnings;G.info(`${o} error${o!==1?"s":""}, ${i} warning${i!==1?"s":""}`);}s(EH,"renderLint");function CH(e){let{data:t}=e;if(!t.hasLock){G.error("Not initialized for collaboration. Run 'agentsmesh generate' first.");return}if(t.inSync){G.note("Lock file is in sync.","Check"),G.success("Lock file is in sync.");return}let r=new Set(t.lockedViolations);G.error("Conflict detected:");for(let n of t.extendsModified)G.error(` extend "${n}" was modified`);for(let n of t.modified){let o=r.has(n)?" [LOCKED]":"";G.error(` ${n} was modified${o}`);}for(let n of t.added){let o=r.has(n)?" [LOCKED]":"";G.error(` ${n} was added${o}`);}for(let n of t.removed){let o=r.has(n)?" [LOCKED]":"";G.error(` ${n} was removed${o}`);}G.note("Generated files are out of sync.","Check"),G.info("Run 'agentsmesh merge' to resolve, or 'agentsmesh generate --force' to accept current state.");}s(CH,"renderCheck");function OH(e){let{data:t}=e;if(t.files.length===0){G.info(`Nothing to import from ${t.target}.`);return}for(let n of t.files)G.success(`${n.from} \u2192 ${n.to}`);let r=t.scope==="global"?" --global":"";G.info(`Imported ${t.files.length} file(s). Run 'agentsmesh generate${r}' to sync to other tools.`);}s(OH,"renderImport");ue();function wH(e){let{summary:t}=e.data;if(t.created+t.updated+t.unchanged+t.deleted===0){S.info("No files to generate (no root rule or rules feature disabled).");return}for(let n of e.data.patches)process.stdout.write(n.patch);S.info(Ny({new:t.created,updated:t.updated,unchanged:t.unchanged,deleted:t.deleted}));}s(wH,"renderDiff");function bH(e){if(!e.data.hadConflict){G.info("No conflicts to resolve.");return}G.success("Lock file conflict resolved.");}s(bH,"renderMerge");dd();fd();nt();Xo();dd();fd();ue();var Are=300;function Tre(e){return e.replace(/\\/g,"/").replace(/\/+$/,"")}s(Tre,"normalizeWatchPath");function xre(e,t){let r=Tre(relative(e,t));return r===""?true:r===".lock"||r===".lock.tmp"||r===".generate.lock"||r.endsWith("/.lock")||r.endsWith("/.lock.tmp")||r.endsWith("/.generate.lock")||r.includes("/.generate.lock/")||r.startsWith(".generate.lock/")}s(xre,"shouldIgnoreWatchPath");function Pre(e,t,r,n,o,i,a,l,c){return JSON.stringify({features:e,rulesCount:t,commandsCount:r,agentsCount:n,skillsCount:o,mcpServerCount:i,permissionsCount:a,hooksCount:l,ignoreCount:c})}s(Pre,"featureFingerprint");async function TH(e,t,r={}){let n=t??process.cwd(),o=e.global===true?"global":"project",{context:i}=await _e(n,o),a=[i.canonicalDir,join(i.configDir,"agentsmesh.yaml"),join(i.configDir,"agentsmesh.local.yaml")],l=null,c=null,m=false,p=null,u=s(async()=>{if(m)return;l=null;let{config:_,context:R}=await _e(n,o),{canonical:k}=await Bt(_,R.configDir,{},R.canonicalDir),w=k.mcp?Object.keys(k.mcp.mcpServers).length:0,D=k.permissions?k.permissions.allow.length+k.permissions.deny.length:0,v=k.hooks?Object.values(k.hooks).reduce((F,te)=>F+(Array.isArray(te)?te.length:0),0):0,K=k.ignore.length,ee=Pre(_.features,k.rules.length,k.commands.length,k.agents.length,k.skills.length,w,D,v,K),se=c!==null&&c!==ee;if(c=ee,m)return;let Y=await qo(e,n,{printMatrix:false});if(Xm(Y),!m){if(se){let F=await Jm(e,n);Ym(F,{verbose:e.verbose===true});}else S.info("Regenerated.");r.onCycle?.({featuresChanged:se});}},"run"),f=s(()=>{let _=u().catch(R=>{if(!m){let k=R instanceof Error?R.message:String(R);S.error(k);}}).finally(()=>{p===_&&(p=null);});p=_;},"scheduleRun"),g=s(()=>{m||(l&&clearTimeout(l),l=setTimeout(f,Are));},"schedule"),h=r.usePolling??process.platform==="win32",y=bre.watch(a,{ignoreInitial:true,usePolling:h,...h&&r.pollIntervalMs!==void 0?{interval:r.pollIntervalMs}:{}});return y.on("all",(_,R)=>{xre(i.canonicalDir,R)||g();}),await new Promise((_,R)=>{y.once("ready",_),y.once("error",R);}),S.info(o==="global"?"Watching ~/.agentsmesh/ and agentsmesh.yaml...":"Watching .agentsmesh/ and agentsmesh.yaml..."),p=u(),await p,p=null,{stop:s(async()=>{m=true,l&&(clearTimeout(l),l=null),await y.close(),p&&await p;},"stop")}}s(TH,"runWatch");nt();Rf();async function Fy(e){let{config:t,configDir:r,canonicalDir:n}=e,o=await Qh(n);if(o===null)return {inSync:false,hasLock:false,modified:[],added:[],removed:[],extendsModified:[],lockedViolations:[]};let i=await _i(n),a=await bc(t,r),l=a.length>0?await Hm(a):{},c=new Set(Object.keys(o.checksums)),m=new Set(Object.keys(i)),p=[],u=[],f=[];for(let R of c){let k=i[R];k===void 0?f.push(R):k!==o.checksums[R]&&p.push(R);}for(let R of m)c.has(R)||u.push(R);let g=new Set([...Object.keys(o.extends),...Object.keys(l)]),h=[];for(let R of g)l[R]!==o.extends[R]&&h.push(R);let y=Zh(o.checksums,i,t.collaboration?.lock_features??[]);return {inSync:p.length===0&&u.length===0&&f.length===0&&h.length===0,hasLock:true,modified:p,added:u,removed:f,extendsModified:h,lockedViolations:y}}s(Fy,"checkLockSync");an();async function xH(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",{config:o,context:i}=await _e(r,n);await Ve(o,r);let a=await Fy({config:o,configDir:i.configDir,canonicalDir:i.canonicalDir});return a.hasLock?{exitCode:a.inSync?0:1,data:{hasLock:true,inSync:a.inSync,modified:[...a.modified],added:[...a.added],removed:[...a.removed],extendsModified:[...a.extendsModified],lockedViolations:[...a.lockedViolations]}}:{exitCode:1,data:{hasLock:false,inSync:false,modified:[],added:[],removed:[],extendsModified:[],lockedViolations:[]}}}s(xH,"runCheck");nt();b();Rf();var Nre=".lock",vre="<<<<<<<";async function OE(e){let t=join(e,Nre),r=await I(t);return r===null?false:r.includes(vre)}s(OE,"hasLockConflict");async function DH(e,t,r){if(!await OE(e))throw new Error("No conflict to resolve.");let o=await _i(e),i=dirname(e),a=r?await bc(r,i):[],l=a.length>0?await Hm(a):{},c=await ey(join(e,"packs")),m=process.env.USER??process.env.USERNAME??"unknown";await qh(e,{generatedAt:new Date().toISOString(),generatedBy:m,libVersion:t,checksums:o,extends:l,packs:c});}s(DH,"resolveLockConflict");async function NH(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",{config:o,context:i}=await _e(r,n),a=i.canonicalDir;return await OE(a)?(await DH(a,Ha(),o),{exitCode:0,data:{hadConflict:true,resolved:true}}):{exitCode:0,data:{hadConflict:false,resolved:false}}}s(NH,"runMerge");nt();Hh();function vH(e){let t=typeof e.path=="string"?e.path.trim():void 0,r=typeof e.target=="string"?e.target.trim():void 0,n=typeof e.as=="string"?e.as.trim():void 0,o=e["accept-elevated"]===true;return {sync:e.sync===true,dryRun:e["dry-run"]===true,force:e.force===true,useExtends:e.extends===true,all:e.all===true,forceFreshMaterialize:e.forceFreshMaterialize===true,explicitPath:t||void 0,explicitTarget:r||void 0,explicitAs:n?Km.parse(n):void 0,nameOverride:typeof e.name=="string"?e.name.trim():"",acceptHooks:o||e["accept-hooks"]===true,acceptPermissions:o||e["accept-permissions"]===true,acceptMcp:o||e["accept-mcp"]===true}}s(vH,"readInstallFlags");var Gre=".install.lock";async function mp(e,t={}){return await mkdir(e,{recursive:true}),Vm(join(e,Gre),{...t,label:"install lock"})}s(mp,"acquireInstallLock");nt();b();Gp();Ya();var Ure=promisify(execFile);function My(e,t){if(e.startsWith("-"))throw new Error(`agentsmesh refuses ${t} starting with "-" (option-injection guard): ${e}`)}s(My,"ensureNotFlag");async function wE(e){let{stdout:t}=await Ure("git",e,{env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_ALLOW_PROTOCOL:_f()}});return t.trim()}s(wE,"runGit");async function FH(){try{return await wE(["--version"]),!0}catch{return false}}s(FH,"isGitAvailable");async function Bre(e,t){My(e,"remote-url"),My(t,"ref"),vp(e);let r=[t,`refs/heads/${t}`,`refs/tags/${t}`],n;for(let o of r)try{let a=(await wE(["ls-remote",e,o])).split(`
|
|
445
|
+
`),false}}s(EE,"seedAgentsmeshMcpEntry");Be();function mH(e,t){return e.map(r=>({from:relative(t,r.fromPath).replaceAll("\\","/"),to:r.toPath}))}s(mH,"mapResults");async function pH(e,t){if(t!=="project")return;let r=join(e,".agentsmesh/rules/_root.md");if(!existsSync(r))return;let n=readFileSync(r,"utf8");(n.includes(Jp)||/^## Lessons \(/m.test(n))&&await Ta(e);}s(pH,"ensureImportedLessonsSubsystem");async function uH(e,t){let r=t??process.cwd(),n=e.from;if(typeof n!="string"||!n)throw new Error("--from is required. Example: agentsmesh import --from claude-code");let o=n.toLowerCase().trim(),i=e.global===true?"global":"project";if(Kt(o)){let p=Ja(r,i),f=await Py(o).importFrom(p.rootBase,{scope:i});return f.length>0&&(await EE(p.rootBase),await pH(p.rootBase,i)),{exitCode:0,data:{scope:i,target:o,files:mH(f,p.rootBase)}}}let a,l;try{({config:a,context:l}=await _e(r,i));}catch{throw new Error(`Unknown --from "${n}" and no agentsmesh.yaml found. Run 'agentsmesh init' to enable plugin targets, or use a builtin: ${Ue.join(", ")}.`)}await Ve(a,r);let c=ne(o);if(!c)throw new Error(`Unknown --from "${n}". Supported: ${[...Ue,...a.pluginTargets??[]].join(", ")}.`);let m=await c.generators.importFrom(l.rootBase,{scope:i});return m.length>0&&(await EE(l.rootBase),await pH(l.rootBase,i)),{exitCode:0,data:{scope:i,target:o,files:mH(m,l.rootBase)}}}s(uH,"runImport");nt();Xo();function Dy(e){let t=[],r={new:0,updated:0,unchanged:0,deleted:0};for(let n of e){if(n.status==="unchanged"){r.unchanged++;continue}if(n.status==="created"){r.new++;let o=createTwoFilesPatch(`${n.path} (current)`,`${n.path} (generated)`,"",n.content,void 0,void 0,{context:3});t.push({path:n.path,patch:o});continue}if(n.status==="updated"&&n.currentContent!==void 0){r.updated++;let o=createTwoFilesPatch(`${n.path} (current)`,`${n.path} (generated)`,n.currentContent,n.content,void 0,void 0,{context:3});t.push({path:n.path,patch:o});continue}}return {diffs:t,summary:r}}s(Dy,"computeDiff");function Ny(e){return `${e.new} files would be created, ${e.updated} updated, ${e.unchanged} unchanged, ${e.deleted} deleted`}s(Ny,"formatDiffSummary");an();async function fH(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",o=e.targets,i=typeof o=="string"&&o?o.split(",").map(g=>g.trim()).filter(Boolean):void 0,{config:a,context:l}=await _e(r,n);await Ve(a,r);let{canonical:c}=await Bt(a,l.configDir,{},l.canonicalDir),m=await Qo({config:a,canonical:c,projectRoot:l.rootBase,scope:n,targetFilter:i});if(m.length===0)return {exitCode:0,data:{files:[],patches:[],summary:{created:0,updated:0,unchanged:0,deleted:0}}};let{diffs:p,summary:u}=Dy(m);return {exitCode:0,data:{files:m.filter(g=>g.status!=="unchanged"&&g.status!=="skipped").map(g=>({path:g.path,target:g.target,status:g.status})),patches:p.map(g=>({path:g.path,patch:g.patch})),summary:{created:u.new,updated:u.updated,unchanged:u.unchanged,deleted:u.deleted}}}}s(fH,"runDiff");nt();Xo();b();ot();Za();Ie();var gre=[{canonicalKey:"permissions",capabilityKey:"permissions",featureFlag:"permissions",file:".agentsmesh/permissions.yaml",label:"permissions",hasContent:s(e=>{let t=e.permissions;if(!t)return false;let r=t.ask?.length??0;return t.allow.length+t.deny.length+r>0},"hasContent")},{canonicalKey:"hooks",capabilityKey:"hooks",featureFlag:"hooks",file:".agentsmesh/hooks.yaml",label:"hooks",hasContent:s(e=>{let t=e.hooks;return t?Object.values(t).some(r=>Array.isArray(r)&&r.length>0):false},"hasContent")},{canonicalKey:"mcp",capabilityKey:"mcp",featureFlag:"mcp",file:".agentsmesh/mcp.json",label:"MCP servers",hasContent:s(e=>{let t=e.mcp;return t?Object.keys(t.mcpServers).length>0:false},"hasContent")},{canonicalKey:"commands",capabilityKey:"commands",featureFlag:"commands",file:".agentsmesh/commands",label:"commands",hasContent:s(e=>e.commands.length>0,"hasContent")},{canonicalKey:"agents",capabilityKey:"agents",featureFlag:"agents",file:".agentsmesh/agents",label:"agents",hasContent:s(e=>e.agents.length>0,"hasContent")},{canonicalKey:"skills",capabilityKey:"skills",featureFlag:"skills",file:".agentsmesh/skills",label:"skills",hasContent:s(e=>e.skills.length>0,"hasContent")},{canonicalKey:"ignore",capabilityKey:"ignore",featureFlag:"ignore",file:".agentsmesh/ignore",label:"ignore patterns",hasContent:s(e=>e.ignore.length>0,"hasContent")}];function gH(e){let t=new Set(e.enabledFeatures),r=[];for(let n of gre)!t.has(n.featureFlag)||!n.hasContent(e.canonical)||hn(e.capabilities[n.capabilityKey]).level!=="none"||r.push(M(n.file,e.target,`${e.target} does not support ${n.label}; canonical entries are silently dropped during generation. Disable the feature for this target or remove the canonical content.`));return r}s(gH,"lintSilentFeatureDrops");Ie();var hre=/^(?:\s*(?:bash|sh|zsh|pwsh|powershell)\s+)?["']?(?<path>(?:\.{1,2}\/|[^/\s"'`]+\/)[^\s"'`]+)["']?(?:\s|$)/;function yre(e){let r=e.match(hre)?.groups?.path;return typeof r=="string"?r:null}s(yre,"extractScriptToken");function hH(e){if(e.hasScriptProjection)return [];let t=e.canonical.hooks;if(!t)return [];let r=[];for(let n of Object.values(t))if(Array.isArray(n))for(let o of n){if(typeof o?.command!="string")continue;let i=yre(o.command);i&&r.push(M(".agentsmesh/hooks.yaml",e.target,`${e.target} hook command references script "${i}"; agentsmesh does not copy hook scripts into ${e.target} output, so the script must already exist relative to the hook execution directory or the generated config will fail.`));}return r}s(hH,"lintHookScriptReferences");Ie();function yH(e){if(e.preservesManualActivation)return [];let t=[];for(let r of e.canonical.rules)r.root||r.trigger==="manual"&&(r.targets.length>0&&!r.targets.includes(e.target)||t.push(M(r.source,e.target,`Rule has trigger: 'manual' (Cursor-style "@-mention only" activation), but ${e.target} loads every rule unconditionally. The rule will become always-on for ${e.target} \u2014 restrict it with \`targets: [cursor]\`, convert it to a skill with manual invocation, or remove it.`)));return t}s(yH,"lintRuleScopeInversion");var Sre=new Set([".git","node_modules"]),Rre=2e5;function Pa(e){let t=new Set;try{let r=[e];for(;r.length>0;){let n=r.pop();for(let o of readdirSync(n,{withFileTypes:!0}))if(o.isDirectory())Sre.has(o.name)||r.push(join(n,o.name));else if(o.isFile()&&(t.add(Aa(e,join(n,o.name))),t.size>Rre))return t}}catch{return null}return t}s(Pa,"listProjectFiles");var Lre="lessons",RH=".agentsmesh/lessons/lessons.json",IH=".agentsmesh/rules/_root.md",Ere=/^## Lessons \(/m;function kH(e,t){if(t==="global")return [];let r=ve(e);if(!existsSync(r.graph))return [];let n=[],o;try{o=hd(e);}catch(m){return [CE("error",RH,`lessons.json failed to load: ${m instanceof Error?m.message:String(m)}`)]}let i=Pa(e)??void 0,a=Xn(o,{knownPaths:i});for(let m of a.findings)n.push(CE(m.level,RH,`[${m.code}] ${m.message}`));let l=join(e,IH),c=existsSync(l)?readFileSync(l,"utf8"):"";return Ere.test(c)||n.push(CE("warning",IH,'lessons procedural rule ("## Lessons (...)") is missing from _root.md \u2014 recall/capture enforcement will not fire.')),n}s(kH,"lintLessonsSubsystem");function CE(e,t,r){return {level:e,file:t,target:Lre,message:r}}s(CE,"diag");var Cre=["node_modules",".git","dist","coverage",".agentsmesh"];async function Ore(e){return (await xi(e)).filter(n=>{let o=relative(e,n);return !Cre.some(i=>o.includes(`/${i}/`)||o.startsWith(`${i}/`))}).map(n=>relative(e,n))}s(Ore,"getProjectFiles");async function vy(e,t,r,n,o={}){let i=o.scope??"project",a=[...e.targets,...e.pluginTargets??[]],l=n?a.filter(_=>n.includes(_)):a,c=e.features.includes("rules"),m=e.features.includes("commands"),p=e.features.includes("mcp"),u=e.features.includes("permissions"),f=e.features.includes("hooks"),g=[...kH(r,i)],h=i==="global"?[]:await Ore(r);for(let _ of l){let R=ne(_),k=Kt(_)?Py(_):R;k?.capabilities&&g.push(...gH({target:_,capabilities:k.capabilities,canonical:t,enabledFeatures:e.features})),f&&g.push(...hH({target:_,canonical:t,hasScriptProjection:R?.postProcessHookOutputs!==void 0})),c&&g.push(...yH({target:_,canonical:t,preservesManualActivation:R?.preservesManualActivation===true})),c&&k?.lintRules&&g.push(...k.lintRules(t,r,h,{scope:i})),R?.generators.lint&&g.push(...R.generators.lint(t));let w={scope:i};m&&k?.lint?.commands&&g.push(...k.lint.commands(t,w)),p&&k?.lint?.mcp&&g.push(...k.lint.mcp(t,w)),u&&k?.lint?.permissions&&g.push(...k.lint.permissions(t,w)),f&&k?.lint?.hooks&&g.push(...k.lint.hooks(t,w));}let y=g.some(_=>_.level==="error");return {diagnostics:g,hasErrors:y}}s(vy,"runLint");an();async function EH(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",o=e.targets,i=typeof o=="string"&&o?o.split(",").map(u=>u.trim()).filter(Boolean):void 0,{config:a,context:l}=await _e(r,n);await Ve(a,r);let{canonical:c}=await Bt(a,l.configDir,{},l.canonicalDir),{diagnostics:m,hasErrors:p}=await vy(a,c,l.configDir,i,{scope:n});return {exitCode:p?1:0,data:{diagnostics:m.map(u=>({level:u.level,file:u.file,target:u.target,message:u.message})),summary:{errors:m.filter(u=>u.level==="error").length,warnings:m.filter(u=>u.level==="warning").length}}}}s(EH,"runLintCmd");function CH(e){let{data:t}=e;if(t.diagnostics.length===0){G.success("All checks passed.");return}let r=t.diagnostics.filter(a=>a.level==="error"),n=t.diagnostics.filter(a=>a.level==="warning");for(let a of r)G.error(`${a.file} (${a.target}): ${a.message}`);for(let a of n)G.warn(`${a.file} (${a.target}): ${a.message}`);let o=t.summary.errors,i=t.summary.warnings;G.info(`${o} error${o!==1?"s":""}, ${i} warning${i!==1?"s":""}`);}s(CH,"renderLint");function OH(e){let{data:t}=e;if(!t.hasLock){G.error("Not initialized for collaboration. Run 'agentsmesh generate' first.");return}if(t.inSync){G.note("Lock file is in sync.","Check"),G.success("Lock file is in sync.");return}let r=new Set(t.lockedViolations);G.error("Conflict detected:");for(let n of t.extendsModified)G.error(` extend "${n}" was modified`);for(let n of t.modified){let o=r.has(n)?" [LOCKED]":"";G.error(` ${n} was modified${o}`);}for(let n of t.added){let o=r.has(n)?" [LOCKED]":"";G.error(` ${n} was added${o}`);}for(let n of t.removed){let o=r.has(n)?" [LOCKED]":"";G.error(` ${n} was removed${o}`);}G.note("Generated files are out of sync.","Check"),G.info("Run 'agentsmesh merge' to resolve, or 'agentsmesh generate --force' to accept current state.");}s(OH,"renderCheck");function wH(e){let{data:t}=e;if(t.files.length===0){G.info(`Nothing to import from ${t.target}.`);return}for(let n of t.files)G.success(`${n.from} \u2192 ${n.to}`);let r=t.scope==="global"?" --global":"";G.info(`Imported ${t.files.length} file(s). Run 'agentsmesh generate${r}' to sync to other tools.`);}s(wH,"renderImport");ue();function bH(e){let{summary:t}=e.data;if(t.created+t.updated+t.unchanged+t.deleted===0){S.info("No files to generate (no root rule or rules feature disabled).");return}for(let n of e.data.patches)process.stdout.write(n.patch);S.info(Ny({new:t.created,updated:t.updated,unchanged:t.unchanged,deleted:t.deleted}));}s(bH,"renderDiff");function AH(e){if(!e.data.hadConflict){G.info("No conflicts to resolve.");return}G.success("Lock file conflict resolved.");}s(AH,"renderMerge");dd();fd();nt();Xo();dd();fd();ue();var Are=300;function Tre(e){return e.replace(/\\/g,"/").replace(/\/+$/,"")}s(Tre,"normalizeWatchPath");function xre(e,t){let r=Tre(relative(e,t));return r===""?true:r===".lock"||r===".lock.tmp"||r===".generate.lock"||r.endsWith("/.lock")||r.endsWith("/.lock.tmp")||r.endsWith("/.generate.lock")||r.includes("/.generate.lock/")||r.startsWith(".generate.lock/")}s(xre,"shouldIgnoreWatchPath");function Pre(e,t,r,n,o,i,a,l,c){return JSON.stringify({features:e,rulesCount:t,commandsCount:r,agentsCount:n,skillsCount:o,mcpServerCount:i,permissionsCount:a,hooksCount:l,ignoreCount:c})}s(Pre,"featureFingerprint");async function xH(e,t,r={}){let n=t??process.cwd(),o=e.global===true?"global":"project",{context:i}=await _e(n,o),a=[i.canonicalDir,join(i.configDir,"agentsmesh.yaml"),join(i.configDir,"agentsmesh.local.yaml")],l=null,c=null,m=false,p=null,u=s(async()=>{if(m)return;l=null;let{config:_,context:R}=await _e(n,o),{canonical:k}=await Bt(_,R.configDir,{},R.canonicalDir),w=k.mcp?Object.keys(k.mcp.mcpServers).length:0,D=k.permissions?k.permissions.allow.length+k.permissions.deny.length:0,v=k.hooks?Object.values(k.hooks).reduce((F,te)=>F+(Array.isArray(te)?te.length:0),0):0,K=k.ignore.length,ee=Pre(_.features,k.rules.length,k.commands.length,k.agents.length,k.skills.length,w,D,v,K),se=c!==null&&c!==ee;if(c=ee,m)return;let Y=await qo(e,n,{printMatrix:false});if(Qm(Y),!m){if(se){let F=await Ym(e,n);Xm(F,{verbose:e.verbose===true});}else S.info("Regenerated.");r.onCycle?.({featuresChanged:se});}},"run"),f=s(()=>{let _=u().catch(R=>{if(!m){let k=R instanceof Error?R.message:String(R);S.error(k);}}).finally(()=>{p===_&&(p=null);});p=_;},"scheduleRun"),g=s(()=>{m||(l&&clearTimeout(l),l=setTimeout(f,Are));},"schedule"),h=r.usePolling??process.platform==="win32",y=bre.watch(a,{ignoreInitial:true,usePolling:h,...h&&r.pollIntervalMs!==void 0?{interval:r.pollIntervalMs}:{}});return y.on("all",(_,R)=>{xre(i.canonicalDir,R)||g();}),await new Promise((_,R)=>{y.once("ready",_),y.once("error",R);}),S.info(o==="global"?"Watching ~/.agentsmesh/ and agentsmesh.yaml...":"Watching .agentsmesh/ and agentsmesh.yaml..."),p=u(),await p,p=null,{stop:s(async()=>{m=true,l&&(clearTimeout(l),l=null),await y.close(),p&&await p;},"stop")}}s(xH,"runWatch");nt();Rf();async function Fy(e){let{config:t,configDir:r,canonicalDir:n}=e,o=await Qh(n);if(o===null)return {inSync:false,hasLock:false,modified:[],added:[],removed:[],extendsModified:[],lockedViolations:[]};let i=await _i(n),a=await Ac(t,r),l=a.length>0?await zm(a):{},c=new Set(Object.keys(o.checksums)),m=new Set(Object.keys(i)),p=[],u=[],f=[];for(let R of c){let k=i[R];k===void 0?f.push(R):k!==o.checksums[R]&&p.push(R);}for(let R of m)c.has(R)||u.push(R);let g=new Set([...Object.keys(o.extends),...Object.keys(l)]),h=[];for(let R of g)l[R]!==o.extends[R]&&h.push(R);let y=Zh(o.checksums,i,t.collaboration?.lock_features??[]);return {inSync:p.length===0&&u.length===0&&f.length===0&&h.length===0,hasLock:true,modified:p,added:u,removed:f,extendsModified:h,lockedViolations:y}}s(Fy,"checkLockSync");an();async function PH(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",{config:o,context:i}=await _e(r,n);await Ve(o,r);let a=await Fy({config:o,configDir:i.configDir,canonicalDir:i.canonicalDir});return a.hasLock?{exitCode:a.inSync?0:1,data:{hasLock:true,inSync:a.inSync,modified:[...a.modified],added:[...a.added],removed:[...a.removed],extendsModified:[...a.extendsModified],lockedViolations:[...a.lockedViolations]}}:{exitCode:1,data:{hasLock:false,inSync:false,modified:[],added:[],removed:[],extendsModified:[],lockedViolations:[]}}}s(PH,"runCheck");nt();b();Rf();var Nre=".lock",vre="<<<<<<<";async function OE(e){let t=join(e,Nre),r=await I(t);return r===null?false:r.includes(vre)}s(OE,"hasLockConflict");async function NH(e,t,r){if(!await OE(e))throw new Error("No conflict to resolve.");let o=await _i(e),i=dirname(e),a=r?await Ac(r,i):[],l=a.length>0?await zm(a):{},c=await ey(join(e,"packs")),m=process.env.USER??process.env.USERNAME??"unknown";await qh(e,{generatedAt:new Date().toISOString(),generatedBy:m,libVersion:t,checksums:o,extends:l,packs:c});}s(NH,"resolveLockConflict");async function vH(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",{config:o,context:i}=await _e(r,n),a=i.canonicalDir;return await OE(a)?(await NH(a,za(),o),{exitCode:0,data:{hadConflict:true,resolved:true}}):{exitCode:0,data:{hadConflict:false,resolved:false}}}s(vH,"runMerge");nt();Hh();function FH(e){let t=typeof e.path=="string"?e.path.trim():void 0,r=typeof e.target=="string"?e.target.trim():void 0,n=typeof e.as=="string"?e.as.trim():void 0,o=e["accept-elevated"]===true;return {sync:e.sync===true,dryRun:e["dry-run"]===true,force:e.force===true,useExtends:e.extends===true,all:e.all===true,forceFreshMaterialize:e.forceFreshMaterialize===true,explicitPath:t||void 0,explicitTarget:r||void 0,explicitAs:n?Wm.parse(n):void 0,nameOverride:typeof e.name=="string"?e.name.trim():"",acceptHooks:o||e["accept-hooks"]===true,acceptPermissions:o||e["accept-permissions"]===true,acceptMcp:o||e["accept-mcp"]===true}}s(FH,"readInstallFlags");var Gre=".install.lock";async function pp(e,t={}){return await mkdir(e,{recursive:true}),Jm(join(e,Gre),{...t,label:"install lock"})}s(pp,"acquireInstallLock");nt();b();Gp();Xa();var Ure=promisify(execFile);function My(e,t){if(e.startsWith("-"))throw new Error(`agentsmesh refuses ${t} starting with "-" (option-injection guard): ${e}`)}s(My,"ensureNotFlag");async function wE(e){let{stdout:t}=await Ure("git",e,{env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_ALLOW_PROTOCOL:_f()}});return t.trim()}s(wE,"runGit");async function MH(){try{return await wE(["--version"]),!0}catch{return false}}s(MH,"isGitAvailable");async function Bre(e,t){My(e,"remote-url"),My(t,"ref"),vp(e);let r=[t,`refs/heads/${t}`,`refs/tags/${t}`],n;for(let o of r)try{let a=(await wE(["ls-remote",e,o])).split(`
|
|
446
446
|
`).map(c=>c.trim()).find(c=>c.length>0);if(!a)continue;let l=a.split(/\s+/)[0];if(l&&/^[0-9a-f]{40}$/i.test(l))return l}catch(i){n=i;}throw new Error(`Could not resolve ref "${t}" for ${e}: ${n instanceof Error?n.message:String(n)}`)}s(Bre,"gitLsRemoteResolve");async function Gy(e,t){My(t,"remote-url");let r=e===""?"HEAD":e;if(My(r,"ref"),/^[0-9a-f]{40}$/i.test(r))return r.toLowerCase();if(vp(t),r==="HEAD"){let o=(await wE(["ls-remote",t,"HEAD"])).split(`
|
|
447
|
-
`).find(a=>a.trim().length>0);if(!o)throw new Error(`Could not resolve HEAD for ${t}`);let i=o.split(/\s+/)[0];if(!i||!/^[0-9a-f]{40}$/i.test(i))throw new Error(`Invalid ls-remote HEAD line for ${t}`);return i.toLowerCase()}return Bre(t,r)}s(Gy,"resolveRemoteRefForInstall");async function MH(e){if(e.kind==="local")return {resolvedPath:e.localRoot,sourceForYaml:e.localSourceForYaml};let t=e.gitRemoteUrl;if(!t)throw new Error("Internal error: missing git remote URL");let r=await Gy(e.rawRef||"HEAD",t);if(e.kind==="github"){let l=`github:${e.org}/${e.repo}@${r}`;return {resolvedPath:(await wc(l,"install",{cacheDir:rr(),refresh:false,allowOfflineFallback:false})).resolvedPath,sourceForYaml:l,version:r}}if(e.kind==="gitlab"){let l=`gitlab:${e.org}/${e.repo}@${r}`;return {resolvedPath:(await wc(l,"install",{cacheDir:rr(),refresh:false,allowOfflineFallback:false})).resolvedPath,sourceForYaml:l,version:r}}let n=r,i=`git+${(e.gitPlusBase??t).split("#")[0]}#${n}`;return {resolvedPath:(await wc(i,"install",{cacheDir:rr(),refresh:false,allowOfflineFallback:false})).resolvedPath,sourceForYaml:i,version:r}}s(MH,"fetchInstallSource");async function GH(e,t){if(e.kind==="local")return {resolvedPath:e.localRoot,sourceForYaml:e.localSourceForYaml};try{let r=await MH(e);return {resolvedPath:r.resolvedPath,sourceForYaml:r.sourceForYaml,version:r.version}}catch(r){let n=r instanceof Error?r.message:String(r),o=new Error(`Failed to fetch from ${t}: ${n}. Check your network connection and try again.`);throw r instanceof Error&&(o.cause=r),o}}s(GH,"resolveInstallResolvedPath");function xd(e){try{let t=new URL(e);if(t.hostname!=="github.com")return null;let r=t.pathname.split("/").filter(Boolean),n=r.indexOf("tree");if(n<2||n+1>=r.length)return null;let o=r[0],i=r[1],a=r[n+1],l=r.slice(n+2).join("/");return !o||!i||!a?null:{org:o,repo:i,ref:a,path:l||""}}catch{return null}}s(xd,"parseGithubTreeUrl");function Pd(e){try{let t=new URL(e);if(t.hostname!=="github.com")return null;let r=t.pathname.split("/").filter(Boolean),n=r.indexOf("blob");if(n<2||n+1>=r.length)return null;let o=r[0],i=r[1],a=r[n+1],l=r.slice(n+2).join("/");return !o||!i||!a||!l?null:{org:o,repo:i,ref:a,path:l}}catch{return null}}s(Pd,"parseGithubBlobUrl");function Dd(e){try{let t=new URL(e);if(t.hostname!=="gitlab.com")return null;let r=t.pathname.split("/").filter(Boolean),n=r.indexOf("-");if(n<0||r[n+1]!=="tree")return null;let o=n+1;if(o+1>=r.length)return null;let i=r[o+1],a=r.slice(o+2).join("/"),l=r.slice(0,n);if(l.length<2)return null;let c=l[l.length-1],m=l.slice(0,-1).join("/");return !m||!c||!i?null:{namespace:m,project:c,ref:i,path:a||""}}catch{return null}}s(Dd,"parseGitlabTreeUrl");function Nd(e){try{let t=new URL(e);if(t.hostname!=="gitlab.com")return null;let r=t.pathname.split("/").filter(Boolean),n=r.indexOf("-");if(n<0||r[n+1]!=="blob")return null;let o=n+1;if(o+1>=r.length)return null;let i=r[o+1],a=r.slice(o+2).join("/"),l=r.slice(0,n);if(l.length<2)return null;let c=l[l.length-1],m=l.slice(0,-1).join("/");return !m||!c||!i||!a?null:{namespace:m,project:c,ref:i,path:a}}catch{return null}}s(Nd,"parseGitlabBlobUrl");var Kre=new Set(["tree","blob","commit","releases","actions","issues","pulls","settings","wiki","discussions","security","projects","packages"]);function vd(e){try{let t=new URL(e);if(t.hostname!=="github.com")return null;let r=t.pathname.split("/").filter(Boolean).map(i=>i.replace(/\.git$/i,""));if(r.length<2||r.length>2||Kre.has(r[1]))return null;let n=r[0],o=r[1];return {org:n,repo:o}}catch{return null}}s(vd,"parseGithubRepoUrl");function Fd(e){try{let t=new URL(e);if(t.hostname!=="gitlab.com")return null;let r=t.pathname.split("/").filter(Boolean).map(i=>i.replace(/\.git$/i,""));if(r.length<2||r.includes("-"))return null;let n=r[r.length-1],o=r.slice(0,-1).join("/");return !o||!n?null:{namespace:o,project:n}}catch{return null}}s(Fd,"parseGitlabRepoUrl");function Md(e){let t=e.match(/^git@github\.com:([^/]+)\/(.+?)(?:\.git)?$/i);return t?{org:t[1],repo:t[2].replace(/\.git$/i,"")}:null}s(Md,"parseGitSshGithub");function Gd(e){let t=e.match(/^git@gitlab\.com:(.+?)(?:\.git)?$/i);if(!t)return null;let n=t[1].replace(/\.git$/i,"").split("/").filter(Boolean);if(n.length<2)return null;let o=n[n.length-1];return {namespace:n.slice(0,-1).join("/"),project:o}}s(Gd,"parseGitSshGitlab");b();var zre=/^[A-Za-z]:[\\/]/,Vre=/^[A-Za-z]:\//;function $H(...e){return e.some(t=>t.includes("\\")||zre.test(t))?win32:posix}s($H,"pathApiFor");function jd(e){return e.replace(/\\/g,"/")}s(jd,"toPosixPath");function $d(e){return jd(e).replace(/^\/+|\/+$/g,"")}s($d,"normalizeInstallPathField");function $y(e){let t=jd(e);return t===""||t==="."||t==="./."?".":t.startsWith("./")||t.startsWith("../")||t.startsWith("/")||Vre.test(t)?t:`./${t}`}s($y,"normalizeLocalSourceForYaml");function Da(e){return {...e,source:e.source_kind==="local"?$y(e.source):e.source,...e.path!==void 0?{path:$d(e.path)}:{},...e.paths!==void 0?{paths:e.paths.map(t=>$d(t))}:{}}}s(Da,"normalizePersistedInstallPaths");function jH(e,t,r){let n=$H(e,t),o=n.normalize(e),i=n.normalize(t),a=$d(r),l=`${n.sep}.agentsmesh${n.sep}`,c=o.indexOf(l);if(c>=0){let p=o.slice(0,c),u=o.slice(c+l.length),f=$d(u),g=jd(n.relative(i,p))||".";return {kind:"local",rawRef:"",pathInRepo:a||f.replace(/\.md$/i,"").replace(/\/$/,""),localRoot:p,localSourceForYaml:$y(g)}}let m=jd(n.relative(i,o))||".";return {kind:"local",rawRef:"",pathInRepo:a,localRoot:o,localSourceForYaml:$y(m)}}s(jH,"localParsedFromAbsPath");async function bE(e,t,r){let n=e.trim(),o=r?.trim().replace(/\\/g,"/")??"";if(n.startsWith("git+")){let p=n.lastIndexOf("#"),u=p<0?n:n.slice(0,p),f=p<0?"HEAD":n.slice(p+1),g=u.slice(4);return {kind:"git",rawRef:f,gitPlusBase:g,gitRemoteUrl:g,pathInRepo:o}}if(n.startsWith("https://")||n.startsWith("http://")){let p=xd(n)??Pd(n);if(p)return {kind:"github",rawRef:p.ref,org:p.org,repo:p.repo,gitRemoteUrl:`https://github.com/${p.org}/${p.repo}.git`,pathInRepo:o||p.path};let u=vd(n);if(u)return {kind:"github",rawRef:"HEAD",org:u.org,repo:u.repo,gitRemoteUrl:`https://github.com/${u.org}/${u.repo}.git`,pathInRepo:o};let f=Dd(n)??Nd(n);if(f)return {kind:"gitlab",rawRef:f.ref,org:f.namespace,repo:f.project,gitRemoteUrl:`https://gitlab.com/${f.namespace}/${f.project}.git`,pathInRepo:o||f.path};let g=Fd(n);if(g)return {kind:"gitlab",rawRef:"HEAD",org:g.namespace,repo:g.project,gitRemoteUrl:`https://gitlab.com/${g.namespace}/${g.project}.git`,pathInRepo:o}}if(n.startsWith("git@github.com:")){let p=Md(n);if(!p)throw new Error(`Invalid GitHub SSH URL: ${n}`);return {kind:"github",rawRef:"HEAD",org:p.org,repo:p.repo,gitRemoteUrl:`https://github.com/${p.org}/${p.repo}.git`,pathInRepo:o}}if(n.startsWith("git@gitlab.com:")){let p=Gd(n);if(!p)throw new Error(`Invalid GitLab SSH URL: ${n}`);return {kind:"gitlab",rawRef:"HEAD",gitRemoteUrl:`https://gitlab.com/${p.namespace}/${p.project}.git`,pathInRepo:o}}if(n.startsWith("git@")){let p=n.match(/^git@([^:]+):(.+?)(?:\.git)?$/);if(!p)throw new Error(`Invalid SSH git URL: ${n}`);let u=p[1],f=p[2].replace(/\.git$/i,"");return {kind:"git",rawRef:"HEAD",gitRemoteUrl:`ssh://git@${u}/${f}.git`,pathInRepo:o}}let i=n.match(/^github:([^/]+)\/(.+?)@([^/@]+)$/);if(i){let p=i[1],u=i[2];return {kind:"github",rawRef:i[3],org:p,repo:u,gitRemoteUrl:`https://github.com/${p}/${u}.git`,pathInRepo:o}}let a=n.match(/^github:([^/]+)\/([^/@]+)$/);if(a){let p=a[1],u=a[2];return {kind:"github",rawRef:"HEAD",org:p,repo:u,gitRemoteUrl:`https://github.com/${p}/${u}.git`,pathInRepo:o}}let l=n.match(/^gitlab:(.+)\/([^/@]+)@([^/@]+)$/);if(l){let p=l[1],u=l[2];return {kind:"gitlab",rawRef:l[3],org:p,repo:u,gitRemoteUrl:`https://gitlab.com/${p}/${u}.git`,pathInRepo:o}}let c=n.match(/^gitlab:(.+)\/([^/@]+)$/);if(c){let p=c[1],u=c[2];return {kind:"gitlab",rawRef:"HEAD",org:p,repo:u,gitRemoteUrl:`https://gitlab.com/${p}/${u}.git`,pathInRepo:o}}let m=resolve(t,n);if(!await j(m))throw new Error(`Path does not exist: ${m}`);return jH(m,t,o)}s(bE,"parseInstallSource");function Ud(e){let t=e.trim();if(t.startsWith("local:"))return {kind:"local"};if(t.startsWith("git+")){let a=t.lastIndexOf("#"),l=a<0?t:t.slice(0,a),c=a<0?"HEAD":t.slice(a+1);return {kind:"git",remoteUrl:l.slice(4),ref:c}}let r=t.match(/^github:([^/]+)\/(.+?)@([^/@]+)$/);if(r!==null){let a=r[1],l=r[2],c=r[3];return {kind:"github",remoteUrl:`https://github.com/${a}/${l}.git`,ref:c}}let n=t.match(/^github:([^/]+)\/([^/@]+)$/);if(n!==null){let a=n[1],l=n[2];return {kind:"github",remoteUrl:`https://github.com/${a}/${l}.git`,ref:"HEAD"}}let o=t.match(/^gitlab:(.+)\/([^/@]+)@([^/@]+)$/);if(o!==null){let a=o[1],l=o[2],c=o[3];return {kind:"gitlab",remoteUrl:`https://gitlab.com/${a}/${l}.git`,ref:c}}let i=t.match(/^gitlab:(.+)\/([^/@]+)$/);if(i!==null){let a=i[1],l=i[2];return {kind:"gitlab",remoteUrl:`https://gitlab.com/${a}/${l}.git`,ref:"HEAD"}}if(t.startsWith("https://")||t.startsWith("http://")){let a=xd(t)??Pd(t);if(a!==null)return {kind:"github",remoteUrl:`https://github.com/${a.org}/${a.repo}.git`,ref:a.ref};let l=vd(t);if(l!==null)return {kind:"github",remoteUrl:`https://github.com/${l.org}/${l.repo}.git`,ref:"HEAD"};let c=Dd(t)??Nd(t);if(c!==null)return {kind:"gitlab",remoteUrl:`https://gitlab.com/${c.namespace}/${c.project}.git`,ref:c.ref};let m=Fd(t);return m!==null?{kind:"gitlab",remoteUrl:`https://gitlab.com/${m.namespace}/${m.project}.git`,ref:"HEAD"}:{kind:"git",remoteUrl:t,ref:"HEAD"}}if(t.startsWith("git@github.com:")){let a=Md(t);return a===null?null:{kind:"github",remoteUrl:`https://github.com/${a.org}/${a.repo}.git`,ref:"HEAD"}}if(t.startsWith("git@gitlab.com:")){let a=Gd(t);return a===null?null:{kind:"gitlab",remoteUrl:`https://gitlab.com/${a.namespace}/${a.project}.git`,ref:"HEAD"}}if(t.startsWith("git@")){let a=t.match(/^git@([^:]+):(.+?)(?:\.git)?$/);if(a===null)return null;let l=a[1],c=a[2].replace(/\.git$/i,"");return {kind:"git",remoteUrl:`ssh://git@${l}/${c}.git`,ref:"HEAD"}}return null}s(Ud,"parseSourceUrl");dL();function Qn(e){let t=[];return e.skills.length&&t.push("skills"),e.rules.length&&t.push("rules"),e.commands.length&&t.push("commands"),e.agents.length&&t.push("agents"),e.mcp!==null&&t.push("mcp"),e.permissions!==null&&t.push("permissions"),e.hooks!==null&&t.push("hooks"),e.ignore.length&&t.push("ignore"),t}s(Qn,"featuresFromCanonical");async function jy(e,t={}){let{sliceRoot:r,implicitPick:n}=await Gh(e),{canonical:o,cleanup:i}=await $h(r,{...t,enableTargetEntityMappers:true});return {canonical:o,features:Qn(o),implicitPick:n,cleanup:i}}s(jy,"discoverFromContentRoot");function UH(e){return e.description.trim()?{skill:e,ok:true}:{skill:e,ok:false,reason:"missing description in frontmatter"}}s(UH,"validateSkill");function BH(e){return e.description.trim()?{rule:e,ok:true}:{rule:e,ok:false,reason:"missing description in frontmatter"}}s(BH,"validateRule");function KH(e){return e.description.trim()?{command:e,ok:true}:{command:e,ok:false,reason:"missing description in frontmatter"}}s(KH,"validateCommand");function WH(e){return e.description.trim()?{agent:e,ok:true}:{agent:e,ok:false,reason:"missing description in frontmatter"}}s(WH,"validateAgent");function St(e){return basename(e.source).replace(/\.md$/i,"")}s(St,"ruleSlug");function Xre(e){if(!e)return;let t=[];return e.skills!==void 0&&t.push("skills"),e.rules!==void 0&&t.push("rules"),e.commands!==void 0&&t.push("commands"),e.agents!==void 0&&t.push("agents"),t.length>0?t:void 0}s(Xre,"featuresFromImplicitPick");function up(e,t){let{implicitPick:r}=t,n=t.scopedFeatures??Xre(r);if(!r&&!n)return e;let o=new Set(n??[]),i={...e,mcp:!n||o.has("mcp")?e.mcp:null,permissions:!n||o.has("permissions")?e.permissions:null,hooks:!n||o.has("hooks")?e.hooks:null,ignore:!n||o.has("ignore")?e.ignore:[]};if(r?.skills!==void 0){let a=new Set(r.skills);i={...i,skills:r.skills.length===0?[]:i.skills.filter(l=>a.has(l.name))};}else n&&!o.has("skills")&&(i={...i,skills:[]});if(r?.rules!==void 0){let a=new Set(r.rules);i={...i,rules:r.rules.length===0?[]:i.rules.filter(l=>a.has(St(l)))};}else n&&!o.has("rules")&&(i={...i,rules:[]});if(r?.commands!==void 0){let a=new Set(r.commands);i={...i,commands:r.commands.length===0?[]:i.commands.filter(l=>a.has(l.name))};}else n&&!o.has("commands")&&(i={...i,commands:[]});if(r?.agents!==void 0){let a=new Set(r.agents);i={...i,agents:r.agents.length===0?[]:i.agents.filter(l=>a.has(l.name))};}else n&&!o.has("agents")&&(i={...i,agents:[]});return i}s(up,"narrowDiscoveredForInstallScope");RL();async function HH(e,t,r,n,o={}){let i=await Bh(e,t,{preferredSkillNames:t==="skills"?n?.skills:void 0}),{canonical:a,cleanup:l}=await jy(i.discoveryRoot,o),c=up(a,{scopedFeatures:[t]});return {prep:{yamlTarget:r,scopedFeatures:[t],cleanup:s(async()=>{await Promise.allSettled([l(),i.cleanup()]);},"combinedCleanup")},narrowed:c,discoveredFeatures:Qn(c)}}s(HH,"resolveManualDiscoveredForInstall");is();rL();b();Te();var Qre=(()=>{let e=new Map;for(let r of Ne){let n=r.project.managedOutputs,o=[...n?.dirs??[],...n?.files??[],...r.detectionPaths];for(let i of o){let a=i.replace(/\/$/,""),l=e.get(a)??new Set;l.add(r.id),e.set(a,l);}}let t=[];for(let[r,n]of e){if(n.size!==1)continue;let[o]=[...n];t.push({prefix:r,target:o});}return t.sort((r,n)=>n.prefix.length-r.prefix.length)})();function qre(e){return e.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"")}s(qre,"norm");function Uy(e){let t=qre(e);if(t){for(let{prefix:r,target:n}of Qre)if(t===r||t.startsWith(`${r}/`))return n}}s(Uy,"targetHintFromNativePath");function AE(e,t){return Uy(e)===t}s(AE,"pathSupportsNativePick");function zH(e,t){if(!e||!t)return;let r=Uy(t);if(r&&r!==e)throw new Error(`--target "${e}" does not match the install path (native path suggests "${r}"). Omit --target to auto-detect, or point at a subtree for that target.`)}s(zH,"validateTargetMatchesPath");function VH(e){return (e.commands?.length??0)+(e.rules?.length??0)+(e.skills?.length??0)+(e.agents?.length??0)>0}s(VH,"extendPickHasArrays");ot();b();wI();async function tne(e,t,r,n){if(n.kind==="skillDir")return Fg(e);if(n.kind==="firstSegment"){let c=t.slice(r.prefix.length).split("/").filter(Boolean)[0];return c?[c]:[]}let o=await B(e),i=n.suffix,a=i.toLowerCase();return [...new Set(o.filter(l=>l.toLowerCase().endsWith(a)).map(l=>basename(l,i)))].sort()}s(tne,"namesForStrategy");async function JH(e,t,r){let n=ne(r)?.nativeInstall;if(!n)return {};let o=t.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"");if(n.inferPick)return n.inferPick(e,o);for(let i of n.pickPaths??[]){if(o!==i.prefix&&!o.startsWith(i.prefix))continue;let a=join(e,...o.split("/")),l=await tne(a,o,i,i.strategy);return l.length?{[i.feature]:l}:{}}return {}}s(JH,"inferImplicitPickFromNativePath");function YH(e){return (e.commands?.length??0)+(e.rules?.length??0)+(e.skills?.length??0)+(e.agents?.length??0)===0}s(YH,"isImplicitPickEmpty");nL();function Bd(e){return e.replace(/\\/g,"/").replace(/\/+$/,"")}s(Bd,"normalizePath");function ine(e,t){let r=Bd(e),n=Bd(t);return r===n||r.startsWith(`${n}/`)||n.startsWith(`${r}/`)}s(ine,"overlapsPath");function By(e,t){let r=e??[];return r.includes(t)||r.push(t),r}s(By,"addUnique");async function ane(e){let t=await mkdtemp(join(tmpdir(),"am-install-native-")),r=join(t,"repo"),n=s(async()=>{await rm$1(t,{recursive:true,force:true});},"cleanup");try{return await cp$1(e,r,{recursive:!0}),{stageRoot:r,cleanup:n}}catch(o){throw await n(),o}}s(ane,"makeStageRoot");function lne(e,t){let r;for(let o of e){if(o.feature==="rules"&&o.toPath.startsWith(".agentsmesh/rules/")){r={...r,rules:By(r?.rules,basename(o.toPath,".md"))};continue}if(o.feature==="commands"&&o.toPath.startsWith(".agentsmesh/commands/")){let i=Bd(relative(join(t,".agentsmesh","commands"),join(t,o.toPath)));r={...r,commands:By(r?.commands,i.replace(/\.md$/i,"").split("/").filter(Boolean).join(":"))};continue}if(o.feature==="agents"&&o.toPath.startsWith(".agentsmesh/agents/")){r={...r,agents:By(r?.agents,basename(o.toPath,".md"))};continue}if(o.feature==="skills"&&o.toPath.startsWith(".agentsmesh/skills/")){let a=Bd(relative(join(t,".agentsmesh","skills"),join(t,o.toPath))).split("/")[0];a&&(r={...r,skills:By(r?.skills,a)});}}return r&&(r.rules?.length??0)+(r.commands?.length??0)+(r.agents?.length??0)+(r.skills?.length??0)>0?r:void 0}s(lne,"buildPickFromResults");function cne(e,t,r,n){let o=join(t,...Bd(e).split("/")),i=r.filter(a=>ine(o,a.fromPath));if(i.length===0)throw new Error(`No installable native resources found under "${e}" for target "${n}". Try --path "${e}" without --target so agentsmesh can auto-detect the layout, or use --as <rules|commands|agents|skills> to install the directory as a flat collection.`);return {features:[...new Set(i.map(a=>a.feature))],pick:lne(i,t)}}s(cne,"scopeImportedResults");async function TE(e,t){let{stageRoot:r,cleanup:n}=await ane(e);try{let o=await id(r,t);return {stageRoot:r,results:o,cleanup:n}}catch(o){throw await n(),o}}s(TE,"stageImportedNativeRepo");async function xE(e,t,r){let n=await TE(e,r);try{return {stageRoot:n.stageRoot,cleanup:n.cleanup,...cne(t,n.stageRoot,n.results,r)}}catch(o){throw await n.cleanup(),o}}s(xE,"stageNativeInstallScope");async function ZH(e,t,r,n){let o=n.explicitTarget?.trim();o&&wr.parse(o);let i=r.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"");zH(o,i);let a=join(e,".agentsmesh"),l=await j(a),c=i?Uy(i):void 0,p=!l&&!o&&(!i||c!==void 0)?await bh(e)??void 0:void 0;if(!o&&c&&p&&c!==p)throw new Error(`Install path suggests native layout "${c}" but auto-detect imported "${p}". Use --target ${c} for this path, or install from the repo root without a conflicting subtree path.`);let u=o??c??p,f=!!i&&!!u&&!i.startsWith(".agentsmesh");if(!l&&u){if(f){let w=await xE(e,i,u);return {discoveryRoot:w.stageRoot,implicitPick:w.pick,scopedFeatures:w.features,yamlTarget:u,importHappened:true,cleanup:w.cleanup}}let k=await TE(e,u);return {discoveryRoot:i?join(k.stageRoot,i):k.stageRoot,yamlTarget:u,importHappened:true,cleanup:k.cleanup}}let g;l?i?u&&AE(i,u)?g=e:g=t:g=e:g=t;let h,y,_;if(f&&u){let k=await xE(e,i,u);g=k.stageRoot,h=k.pick,y=k.features,_=k.cleanup;}else if(g===e&&i&&u&&AE(i,u)&&(h=await JH(e,i,u),YH(h)))throw new Error(`No installable native resources found under "${i}" for target "${u}". Try --path "${i}" without --target so agentsmesh can auto-detect the layout, or use --as <rules|commands|agents|skills> to install the directory as a flat collection.`);let R;return o?R=o:u&&(h&&VH(h)||(y?.length??0)>0)&&(R=u),{discoveryRoot:g,implicitPick:h,scopedFeatures:y,yamlTarget:R,importHappened:_!==void 0,cleanup:_}}s(ZH,"prepareInstallDiscovery");async function PE(e,t,r,n,o={}){let i=await ZH(e,t,r,{explicitTarget:n}),{canonical:a,implicitPick:l,cleanup:c}=await jy(i.discoveryRoot,o),m=i.cleanup,u={...i,cleanup:s(async()=>{await Promise.allSettled([c(),...m?[m()]:[]]);},"mergedCleanup")},f=l??i.implicitPick,g=up(a,{implicitPick:f,scopedFeatures:i.scopedFeatures}),h=Qn(g);return {prep:u,discovered:a,implicitPick:f,narrowed:g,discoveredFeatures:h}}s(PE,"resolveDiscoveredForInstall");var une=[".claude-plugin","marketplace.json"];async function dne(e){try{return (await stat(e)).isDirectory()}catch{return false}}s(dne,"dirExists");function fne(e){if(typeof e!="string"||e.length===0||e.startsWith("/"))return null;let t=e.replace(/^\.\/+/,"").replace(/\/+$/,"");return t.split("/").some(r=>r==="..")?null:t}s(fne,"normalizeSource");async function tz(e,t,r){let n=join(e,...une),o;try{o=await readFile(n,"utf-8");}catch{return null}let i;try{i=JSON.parse(o);}catch{return null}if(typeof i!="object"||i===null||!Array.isArray(i.plugins))return null;let a=i.plugins,l=[];for(let c of a){if(typeof c!="object"||c===null)continue;let m=fne(c.source);if(!m)continue;let p=join(e,m);if(!await dne(p))continue;let u=await t(p,m);r(u)&&l.push({path:m,layout:u});}return l}s(tz,"detectMarketplaceSubPacks");async function Kd(e){try{return (await stat(e)).isDirectory()}catch{return false}}s(Kd,"dirExists");async function Na(e){try{return (await readdir(e,{withFileTypes:!0})).map(r=>({name:r.name,isDir:r.isDirectory(),isFile:r.isFile()}))}catch{return []}}s(Na,"listDirEntries");function rz(e){return e.endsWith(".instructions.md")?"copilot-instructions":e.endsWith(".md")?"md":e.endsWith(".mdc")?"mdc":e.endsWith(".toml")?"toml":null}s(rz,"classifyFileShape");var yne=["rules","commands","agents","skills","mcp.json","hooks.yaml","permissions.yaml","ignore"],_ne=[".cursorrules",".windsurfrules"];async function oz(e){let t=join(e,".agentsmesh");if(!await Kd(t))return null;let r=await Na(t),n=new Set(r.map(o=>o.name));for(let o of yne)if(n.has(o))return {path:".agentsmesh"};return null}s(oz,"detectCanonical");async function sz(e){for(let t of _ne)try{if((await stat(join(e,t))).isFile())return {path:t}}catch{}return null}s(sz,"detectRootRule");async function iz(e){try{if((await stat(join(e,"SKILL.md"))).isFile())return {path:"SKILL.md"}}catch{}return null}s(iz,"detectRootSkill");cs();var Rne={rules:"rules",commands:"commands",agents:"agents",skills:"skills"},Ine=[".claude-plugin",".codex-plugin",".cursor-plugin"],kne=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;async function az(e){let t=join(e,"skills"),r=await Na(t);for(let n of r)if(!(!n.isDir||n.name.startsWith("_")||!kne.test(n.name))&&await Kd(join(t,n.name)))try{if((await stat(join(t,n.name,"SKILL.md"))).isFile())return {path:"skills"}}catch{continue}return null}s(az,"detectSkillPack");async function lz(e){let t=[];for(let[r,n]of Object.entries(Rne)){let o=join(e,r),i=await Na(o),a=new Set;for(let l of i){if(!l.isFile||eo(l.name))continue;let c=rz(l.name);c&&a.add(c);}for(let l of a)t.push({path:r,suggestedAs:n,fileShape:l});}return t}s(lz,"detectFlatCollections");async function cz(e){let t=[];for(let r of Ine)await Kd(join(e,r))&&t.push({path:r});return t}s(cz,"detectToolNativeManifests");async function vE(e,t){let r=await oz(e);if(r)return {canonical:r,skillPack:null,rootSkill:null,rootRule:null,flatCollections:[],toolNativeManifests:[]};let n=await az(e),o=n?null:await iz(e),i=await lz(e),a=n||o||i.length>0?null:await sz(e),l=await cz(e);return {canonical:r,skillPack:n?{path:t?`${t}/skills`:"skills"}:null,rootSkill:o?{path:t?`${t}/SKILL.md`:"SKILL.md"}:null,rootRule:a?{path:t?`${t}/${a.path}`:a.path}:null,flatCollections:i.map(c=>({...c,path:t?`${t}/${c.path}`:c.path})),toolNativeManifests:l.map(c=>({path:t?`${t}/${c.path}`:c.path}))}}s(vE,"detectFlatLayout");function NE(e){return e.canonical!==null||e.skillPack!==null||e.rootSkill!==null||e.rootRule!==null||e.flatCollections.length>0}s(NE,"hasContent");async function mz(e,t){let r=await Na(e),n=[];for(let o of r){if(!o.isDir||o.name.startsWith("."))continue;let i=join(e,o.name),a=t?`${t}/${o.name}`:o.name,l=await vE(i,a);NE(l)&&n.push({path:a,layout:l});}return n}s(mz,"collectSubPackCandidates");async function Lne(e,t){if(NE(t))return [];let r=await tz(e,vE,NE);if(r&&r.length>0)return r;let n=await mz(e,"");if(n.length>=2)return n;let o=await Na(e);for(let i of o){if(!i.isDir||i.name.startsWith("."))continue;let a=await mz(join(e,i.name),i.name);if(a.length>=2)return a}return []}s(Lne,"detectSubPacks");async function uz(e){let t=await vE(e,"");if(t.canonical)return {...t,subPacks:[]};let r=await Lne(e,t);return {...t,subPacks:r}}s(uz,"detectLayout");ot();b();U();function Cne(e){let t=[];for(let r of Nf()){let n=ne(r)?.nativeInstall?.dialectHints;n?.length&&n.some(o=>o.frontmatterKey in e)&&t.push(r);}return t}s(Cne,"targetsMatchingFrontmatter");async function fz(e){let t;try{t=await readdir(e);}catch{return null}let r=t.sort().find(a=>a.toLowerCase().endsWith(".mdc"));if(!r)return null;let n=await I(join(e,r));if(!n)return null;let o=un(n,join(e,r));if(!o.ok)return null;let i=Cne(o.value.frontmatter);return i.length===1?i[0]??null:null}s(fz,"inferMdcTarget");Dh();Mh();function Tne(e){let t=e.indexOf("#");return t<0?{path:e,anchor:""}:{path:e.slice(0,t),anchor:e.slice(t)}}s(Tne,"splitAnchor");function xne(e){return e.split(sep).join("/")}s(xne,"toForwardSlash");async function Pne(e){try{return await stat(e),!0}catch{return false}}s(Pne,"pathExists");async function _z(e){let{link:t,fromFile:r,contentRoot:n,includedPaths:o}=e,{path:i,anchor:a}=Tne(t.path);if(i===""||isAbsolute(i))return {link:t,classification:"unresolvable",resolvedRelative:null,anchor:a};let l=join(n,r,".."),c=normalize(resolve(l,i)),m=normalize(resolve(n)),p=relative(m,c);if(p.startsWith("..")||isAbsolute(p))return {link:t,classification:"unresolvable",resolvedRelative:null,anchor:a};let u=xne(p);return await Pne(c)?o.has(u)?{link:t,classification:"in-tree-included",resolvedRelative:u,anchor:a}:{link:t,classification:"resolvable-outside",resolvedRelative:u,anchor:a}:{link:t,classification:"unresolvable",resolvedRelative:u,anchor:a}}s(_z,"resolveLink");var Dne=/^(?:```|~~~)[^\n]*\n[\s\S]*?^(?:```|~~~)/gm,Nne=/(!?)\[[^\]\n]*\]\(([^)\n]+)\)/dg,vne=/^\s*\[([^\]\n]+)\]:\s*(.+?)\s*$/dgm;function Fne(e){let t=[];for(let r of e.matchAll(Dne)){let n=r.index??0;t.push([n,n+r[0].length]);}return t}s(Fne,"getFencedCodeRanges");function Sz(e,t){for(let[r,n]of t)if(e>=r&&e<n)return true;return false}s(Sz,"isInRanges");function FE(e){let t=e.length-e.trimStart().length,r=e.trim(),n=r.length,o=/^(.*?)\s+(["'])([\s\S]*?)\2\s*$/.exec(r);o?.[1]!==void 0&&(n=o[1].trimEnd().length);let i=t,a=r.slice(0,n);return a.length>=2&&a.startsWith("<")&&a.endsWith(">")&&(i+=1,n-=2),{start:i,length:n}}s(FE,"destPathSpan");function Rz(e){let{start:t,length:r}=FE(e);return e.slice(t,t+r)}s(Rz,"normalizeDestination");function Ky(e){let t=Fne(e),r=[];for(let n of e.matchAll(Nne)){let o=n.index??0;if(Sz(o,t))continue;let i=n[1]==="!",a=n[2],l=n.indices?.[2];if(a===void 0||l===void 0)continue;let c=FE(a);r.push({kind:i?"image":"inline",destination:Rz(a),destinationOffset:l[0]+c.start,destinationLength:c.length});}for(let n of e.matchAll(vne)){let o=n.index??0;if(Sz(o,t))continue;let i=(n[1]??"").trim(),a=n[2]??"",l=n.indices?.[2];if(i===""||a.trim()===""||l===void 0)continue;let c=FE(a);r.push({kind:"reference-def",destination:Rz(a),label:i,destinationOffset:l[0]+c.start,destinationLength:c.length});}return r}s(Ky,"scanMarkdownLinks");function Iz(e,t){if(t.length===0)return e;let r=[...t].sort((o,i)=>i.offset-o.offset),n=e;for(let o of r)n=`${n.slice(0,o.offset)}${o.replacement}${n.slice(o.offset+o.length)}`;return n}s(Iz,"applyRangeRewrites");function Mne(e){return !(e.length===0||e.startsWith("#")||e.startsWith("/")||/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(e))}s(Mne,"isCandidateRelativePath");function Gne(e){let t=e.replaceAll("\\","/");return t==="{baseDir}"?".":t.startsWith("{baseDir}/")?t.slice(10):t}s(Gne,"stripPath");function $ne(e){let t=e.destination;return Mne(t)?{raw:t,path:Gne(t),kind:e.kind,...e.label!==void 0?{label:e.label}:{}}:null}s($ne,"toScannedLink");function kz(e){let t=[];for(let r of Ky(e)){let n=$ne(r);n!==null&&t.push(n);}return t}s(kz,"scanRelativeLinks");function dp(e,t){let r=e.replaceAll("\\","/"),n=t.replaceAll("\\","/"),o=r.endsWith("/")?r:`${r}/`;return n.startsWith(o)?n.slice(o.length):n}s(dp,"toForwardSlashRelative");function Lz(e,t,r,n,o){let i=new Set;for(let a of t){i.add(dp(e,a.source));for(let l of a.supportingFiles)i.add(dp(e,l.absolutePath));}for(let a of r)i.add(dp(e,a.source));for(let a of n)i.add(dp(e,a.source));for(let a of o)i.add(dp(e,a.source));return i}s(Lz,"buildIncludedPaths");function Une(e,t,r,n){let o=[];for(let i of e)o.push({kind:"skill",name:i.name,body:i.body,sourcePath:i.source});for(let i of t)o.push({kind:"agent",name:i.name,body:i.body,sourcePath:i.source});for(let i of r)o.push({kind:"command",name:i.name,body:i.body,sourcePath:i.source});for(let i of n)o.push({kind:"rule",name:basename(i.source,".md"),body:i.body,sourcePath:i.source});return o}s(Une,"listScannables");async function Ez(e,t,r,n,o,i){let a=Une(t,r,n,o),l=[];for(let c of a){let m=kz(c.body);if(m.length===0)continue;let p=dp(e,c.sourcePath),u=[];for(let f of m){let g=await _z({link:f,fromFile:p,contentRoot:e,includedPaths:i});g.classification!=="in-tree-included"&&u.push(g);}u.length>0&&l.push({entityKind:c.kind,entityName:c.name,resolved:u});}return l}s(Ez,"detectBrokenLinks");Mh();async function Cz(e,t,r={}){let n=new Map,o=new Map,i=[],a=[...t].sort((p,u)=>p.precedence-u.precedence);for(let p of a){let{commands:u,cleanup:f}=await Nh(join(e,p.dir),{restrictToTarget:p.target,parseOpts:r});i.push(f);for(let g of u){if(n.get(g.name)===void 0){n.set(g.name,{command:g,precedence:p.precedence});continue}let y=o.get(g.name)??[];y.push({path:g.source,precedence:p.precedence}),o.set(g.name,y);}}let l=[];for(let[p,u]of o){let f=n.get(p);if(f===void 0)throw new Error(`mergeCommands invariant: loser without winner for "${p}"`);l.push({basename:p,winnerPath:f.command.source,loserPaths:u.map(g=>g.path)});}return l.sort((p,u)=>p.basename.localeCompare(u.basename)),{commands:[...n.values()].map(p=>p.command).sort((p,u)=>p.name.localeCompare(u.name)),dedups:l,cleanup:s(async()=>{await Promise.allSettled(i.map(p=>p()));},"cleanup")}}s(Cz,"mergeCommands");async function Oz(e,t,r={}){let[n,o,i,a]=await Promise.all([BU(`${e}/skills`,r),Fh(`${e}/agents`,{parseOpts:r}),vh(`${e}/rules`,{parseOpts:r}),Cz(e,t.mergeFromToolDirs,r)]),l=[...o.agents],c=[...i.rules],m=Lz(e,n,l,a.commands,c),p=await Ez(e,n,l,a.commands,c,m),u=s(async()=>{await Promise.allSettled([i.cleanup(),o.cleanup(),a.cleanup()]);},"cleanup");return {skills:n,agents:l,commands:a.commands,rules:c,dedups:a.dedups,brokenLinks:p,cleanup:u}}s(Oz,"aggregateAnthropicSkillPack");var wz={mergeFromToolDirs:[{dir:"commands",precedence:0},{dir:".claude/commands",target:"claude-code",precedence:1},{dir:".gemini/commands",target:"gemini-cli",precedence:2}]};xc();function Wne(e){return {rules:[...e.rules],commands:[...e.commands],agents:[...e.agents],skills:[...e.skills],mcp:null,permissions:null,hooks:null,ignore:[]}}s(Wne,"aggregateToCanonical");function Wy(){return {}}s(Wy,"emptyPrep");async function Hne(e,t){let r=[];for(let n of t)if(n.fileShape==="mdc"&&!n.inferredTarget){let o=await fz(join(e,n.path));r.push(o?{...n,inferredTarget:o}:n);}else r.push(n);return r}s(Hne,"enrichMdcTargets");function Az(e){return e.canonical?"canonical-agentsmesh":e.skillPack||e.rootSkill?"anthropic-skill-pack":e.rootRule||e.toolNativeManifests.length>0?"tool-native":"unknown"}s(Az,"deriveSourceType");async function zne(e,t){let r=await Of(e,t);return {rules:[],commands:[],agents:[],skills:r?[r]:[],mcp:null,permissions:null,hooks:null,ignore:[]}}s(zne,"rootSkillToCanonical");async function Vne(e,t){let r=join(e,t),n=await readFile(r,"utf-8").catch(()=>""),o=`Imported from ${t}`;return {rules:n?[{source:r,root:true,targets:[],description:o,globs:[],body:n}]:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}s(Vne,"rootRuleToCanonical");async function Tz(e){let t=e.parseOpts??{};if(e.explicitAs)return {implicitPick:void 0,...await HH(e.contentRoot,e.explicitAs,e.explicitTarget,e.replayPick,t)};if(e.explicitTarget)return PE(e.resolvedPath,e.contentRoot,e.pathInRepo,e.explicitTarget,t);let r=await uz(e.contentRoot),n=await Hne(e.contentRoot,r.flatCollections),o={...r,flatCollections:n};if(o.skillPack&&!o.canonical){let a=await Oz(e.contentRoot,wz,t),l=Wne(a);return {prep:{cleanup:a.cleanup},implicitPick:void 0,narrowed:l,discoveredFeatures:Qn(l),layout:o,aggregate:a}}if(o.rootSkill&&!o.canonical&&!o.skillPack){let a=await zne(e.contentRoot,t);return {prep:Wy(),implicitPick:void 0,narrowed:a,discoveredFeatures:Qn(a),layout:o}}if(o.rootRule&&!o.canonical&&!o.skillPack&&!o.rootSkill&&o.flatCollections.length===0){let a=await Vne(e.contentRoot,o.rootRule.path);return {prep:Wy(),implicitPick:void 0,narrowed:a,discoveredFeatures:Qn(a),layout:o}}return o.subPacks.length>0?{prep:Wy(),implicitPick:void 0,narrowed:{rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]},discoveredFeatures:[],layout:o}:o.flatCollections.length>0?{prep:Wy(),implicitPick:void 0,narrowed:{rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]},discoveredFeatures:[],layout:o}:{...await PE(e.resolvedPath,e.contentRoot,e.pathInRepo,e.explicitTarget,t),layout:o}}s(Tz,"resolveInstallDiscovery");function Pz(e){let t=new Set;e.skillPack&&t.add("skills"),e.rootSkill&&t.add("skills");for(let r of e.flatCollections)t.add(r.suggestedAs);return [...t]}s(Pz,"featuresFromLayout");function Jne(e){return e.replace(/[/\\]+/g,"-").replace(/[^a-z0-9-]/gi,"").toLowerCase()}s(Jne,"subPackSlug");function xz(e,t,r){let n=Pz(e.layout),o=!e.layout.skillPack&&!e.layout.rootSkill&&n.length>0;return {name:`${t}-${Jne(e.path)}`,source:r,path:e.path,...o?{as:n[0]}:{},features:n}}s(xz,"targetFromSubPack");function Dz(e,t,r){return {name:t,source:r,path:e.path,as:e.suggestedAs,target:e.inferredTarget,features:[e.suggestedAs]}}s(Dz,"targetFromCollection");function Nz(e){let{layout:t,sourceName:r,sourceForYaml:n,explicitPath:o,explicitAs:i,explicitTarget:a}=e;if(o||i||a)return {targets:[],isMarketplace:false};if(t.canonical||t.skillPack)return {targets:[],isMarketplace:false};if(t.subPacks.length>=1)return Yne(e);if(t.flatCollections.length===1){let l=t.flatCollections[0];return {targets:[Dz(l,r,n)],isMarketplace:false}}return t.flatCollections.length>1?Xne(e):{targets:[],isMarketplace:false}}s(Nz,"selectInstallCandidates");function Yne(e){let{layout:t,sourceName:r,sourceForYaml:n}=e;if(e.all)return {targets:t.subPacks.map(a=>xz(a,r,n)),isMarketplace:true};if(e.force||!e.tty){let a=t.subPacks.map(l=>({path:l.path,features:Pz(l.layout)})).map(l=>` - ${l.path} (${l.features.join(", ")})`).join(`
|
|
447
|
+
`).find(a=>a.trim().length>0);if(!o)throw new Error(`Could not resolve HEAD for ${t}`);let i=o.split(/\s+/)[0];if(!i||!/^[0-9a-f]{40}$/i.test(i))throw new Error(`Invalid ls-remote HEAD line for ${t}`);return i.toLowerCase()}return Bre(t,r)}s(Gy,"resolveRemoteRefForInstall");async function GH(e){if(e.kind==="local")return {resolvedPath:e.localRoot,sourceForYaml:e.localSourceForYaml};let t=e.gitRemoteUrl;if(!t)throw new Error("Internal error: missing git remote URL");let r=await Gy(e.rawRef||"HEAD",t);if(e.kind==="github"){let l=`github:${e.org}/${e.repo}@${r}`;return {resolvedPath:(await bc(l,"install",{cacheDir:rr(),refresh:false,allowOfflineFallback:false})).resolvedPath,sourceForYaml:l,version:r}}if(e.kind==="gitlab"){let l=`gitlab:${e.org}/${e.repo}@${r}`;return {resolvedPath:(await bc(l,"install",{cacheDir:rr(),refresh:false,allowOfflineFallback:false})).resolvedPath,sourceForYaml:l,version:r}}let n=r,i=`git+${(e.gitPlusBase??t).split("#")[0]}#${n}`;return {resolvedPath:(await bc(i,"install",{cacheDir:rr(),refresh:false,allowOfflineFallback:false})).resolvedPath,sourceForYaml:i,version:r}}s(GH,"fetchInstallSource");async function $H(e,t){if(e.kind==="local")return {resolvedPath:e.localRoot,sourceForYaml:e.localSourceForYaml};try{let r=await GH(e);return {resolvedPath:r.resolvedPath,sourceForYaml:r.sourceForYaml,version:r.version}}catch(r){let n=r instanceof Error?r.message:String(r),o=new Error(`Failed to fetch from ${t}: ${n}. Check your network connection and try again.`);throw r instanceof Error&&(o.cause=r),o}}s($H,"resolveInstallResolvedPath");function xd(e){try{let t=new URL(e);if(t.hostname!=="github.com")return null;let r=t.pathname.split("/").filter(Boolean),n=r.indexOf("tree");if(n<2||n+1>=r.length)return null;let o=r[0],i=r[1],a=r[n+1],l=r.slice(n+2).join("/");return !o||!i||!a?null:{org:o,repo:i,ref:a,path:l||""}}catch{return null}}s(xd,"parseGithubTreeUrl");function Pd(e){try{let t=new URL(e);if(t.hostname!=="github.com")return null;let r=t.pathname.split("/").filter(Boolean),n=r.indexOf("blob");if(n<2||n+1>=r.length)return null;let o=r[0],i=r[1],a=r[n+1],l=r.slice(n+2).join("/");return !o||!i||!a||!l?null:{org:o,repo:i,ref:a,path:l}}catch{return null}}s(Pd,"parseGithubBlobUrl");function Dd(e){try{let t=new URL(e);if(t.hostname!=="gitlab.com")return null;let r=t.pathname.split("/").filter(Boolean),n=r.indexOf("-");if(n<0||r[n+1]!=="tree")return null;let o=n+1;if(o+1>=r.length)return null;let i=r[o+1],a=r.slice(o+2).join("/"),l=r.slice(0,n);if(l.length<2)return null;let c=l[l.length-1],m=l.slice(0,-1).join("/");return !m||!c||!i?null:{namespace:m,project:c,ref:i,path:a||""}}catch{return null}}s(Dd,"parseGitlabTreeUrl");function Nd(e){try{let t=new URL(e);if(t.hostname!=="gitlab.com")return null;let r=t.pathname.split("/").filter(Boolean),n=r.indexOf("-");if(n<0||r[n+1]!=="blob")return null;let o=n+1;if(o+1>=r.length)return null;let i=r[o+1],a=r.slice(o+2).join("/"),l=r.slice(0,n);if(l.length<2)return null;let c=l[l.length-1],m=l.slice(0,-1).join("/");return !m||!c||!i||!a?null:{namespace:m,project:c,ref:i,path:a}}catch{return null}}s(Nd,"parseGitlabBlobUrl");var Kre=new Set(["tree","blob","commit","releases","actions","issues","pulls","settings","wiki","discussions","security","projects","packages"]);function vd(e){try{let t=new URL(e);if(t.hostname!=="github.com")return null;let r=t.pathname.split("/").filter(Boolean).map(i=>i.replace(/\.git$/i,""));if(r.length<2||r.length>2||Kre.has(r[1]))return null;let n=r[0],o=r[1];return {org:n,repo:o}}catch{return null}}s(vd,"parseGithubRepoUrl");function Fd(e){try{let t=new URL(e);if(t.hostname!=="gitlab.com")return null;let r=t.pathname.split("/").filter(Boolean).map(i=>i.replace(/\.git$/i,""));if(r.length<2||r.includes("-"))return null;let n=r[r.length-1],o=r.slice(0,-1).join("/");return !o||!n?null:{namespace:o,project:n}}catch{return null}}s(Fd,"parseGitlabRepoUrl");function Md(e){let t=e.match(/^git@github\.com:([^/]+)\/(.+?)(?:\.git)?$/i);return t?{org:t[1],repo:t[2].replace(/\.git$/i,"")}:null}s(Md,"parseGitSshGithub");function Gd(e){let t=e.match(/^git@gitlab\.com:(.+?)(?:\.git)?$/i);if(!t)return null;let n=t[1].replace(/\.git$/i,"").split("/").filter(Boolean);if(n.length<2)return null;let o=n[n.length-1];return {namespace:n.slice(0,-1).join("/"),project:o}}s(Gd,"parseGitSshGitlab");b();var zre=/^[A-Za-z]:[\\/]/,Vre=/^[A-Za-z]:\//;function jH(...e){return e.some(t=>t.includes("\\")||zre.test(t))?win32:posix}s(jH,"pathApiFor");function jd(e){return e.replace(/\\/g,"/")}s(jd,"toPosixPath");function $d(e){return jd(e).replace(/^\/+|\/+$/g,"")}s($d,"normalizeInstallPathField");function $y(e){let t=jd(e);return t===""||t==="."||t==="./."?".":t.startsWith("./")||t.startsWith("../")||t.startsWith("/")||Vre.test(t)?t:`./${t}`}s($y,"normalizeLocalSourceForYaml");function Da(e){return {...e,source:e.source_kind==="local"?$y(e.source):e.source,...e.path!==void 0?{path:$d(e.path)}:{},...e.paths!==void 0?{paths:e.paths.map(t=>$d(t))}:{}}}s(Da,"normalizePersistedInstallPaths");function UH(e,t,r){let n=jH(e,t),o=n.normalize(e),i=n.normalize(t),a=$d(r),l=`${n.sep}.agentsmesh${n.sep}`,c=o.indexOf(l);if(c>=0){let p=o.slice(0,c),u=o.slice(c+l.length),f=$d(u),g=jd(n.relative(i,p))||".";return {kind:"local",rawRef:"",pathInRepo:a||f.replace(/\.md$/i,"").replace(/\/$/,""),localRoot:p,localSourceForYaml:$y(g)}}let m=jd(n.relative(i,o))||".";return {kind:"local",rawRef:"",pathInRepo:a,localRoot:o,localSourceForYaml:$y(m)}}s(UH,"localParsedFromAbsPath");async function bE(e,t,r){let n=e.trim(),o=r?.trim().replace(/\\/g,"/")??"";if(n.startsWith("git+")){let p=n.lastIndexOf("#"),u=p<0?n:n.slice(0,p),f=p<0?"HEAD":n.slice(p+1),g=u.slice(4);return {kind:"git",rawRef:f,gitPlusBase:g,gitRemoteUrl:g,pathInRepo:o}}if(n.startsWith("https://")||n.startsWith("http://")){let p=xd(n)??Pd(n);if(p)return {kind:"github",rawRef:p.ref,org:p.org,repo:p.repo,gitRemoteUrl:`https://github.com/${p.org}/${p.repo}.git`,pathInRepo:o||p.path};let u=vd(n);if(u)return {kind:"github",rawRef:"HEAD",org:u.org,repo:u.repo,gitRemoteUrl:`https://github.com/${u.org}/${u.repo}.git`,pathInRepo:o};let f=Dd(n)??Nd(n);if(f)return {kind:"gitlab",rawRef:f.ref,org:f.namespace,repo:f.project,gitRemoteUrl:`https://gitlab.com/${f.namespace}/${f.project}.git`,pathInRepo:o||f.path};let g=Fd(n);if(g)return {kind:"gitlab",rawRef:"HEAD",org:g.namespace,repo:g.project,gitRemoteUrl:`https://gitlab.com/${g.namespace}/${g.project}.git`,pathInRepo:o}}if(n.startsWith("git@github.com:")){let p=Md(n);if(!p)throw new Error(`Invalid GitHub SSH URL: ${n}`);return {kind:"github",rawRef:"HEAD",org:p.org,repo:p.repo,gitRemoteUrl:`https://github.com/${p.org}/${p.repo}.git`,pathInRepo:o}}if(n.startsWith("git@gitlab.com:")){let p=Gd(n);if(!p)throw new Error(`Invalid GitLab SSH URL: ${n}`);return {kind:"gitlab",rawRef:"HEAD",gitRemoteUrl:`https://gitlab.com/${p.namespace}/${p.project}.git`,pathInRepo:o}}if(n.startsWith("git@")){let p=n.match(/^git@([^:]+):(.+?)(?:\.git)?$/);if(!p)throw new Error(`Invalid SSH git URL: ${n}`);let u=p[1],f=p[2].replace(/\.git$/i,"");return {kind:"git",rawRef:"HEAD",gitRemoteUrl:`ssh://git@${u}/${f}.git`,pathInRepo:o}}let i=n.match(/^github:([^/]+)\/(.+?)@([^/@]+)$/);if(i){let p=i[1],u=i[2];return {kind:"github",rawRef:i[3],org:p,repo:u,gitRemoteUrl:`https://github.com/${p}/${u}.git`,pathInRepo:o}}let a=n.match(/^github:([^/]+)\/([^/@]+)$/);if(a){let p=a[1],u=a[2];return {kind:"github",rawRef:"HEAD",org:p,repo:u,gitRemoteUrl:`https://github.com/${p}/${u}.git`,pathInRepo:o}}let l=n.match(/^gitlab:(.+)\/([^/@]+)@([^/@]+)$/);if(l){let p=l[1],u=l[2];return {kind:"gitlab",rawRef:l[3],org:p,repo:u,gitRemoteUrl:`https://gitlab.com/${p}/${u}.git`,pathInRepo:o}}let c=n.match(/^gitlab:(.+)\/([^/@]+)$/);if(c){let p=c[1],u=c[2];return {kind:"gitlab",rawRef:"HEAD",org:p,repo:u,gitRemoteUrl:`https://gitlab.com/${p}/${u}.git`,pathInRepo:o}}let m=resolve(t,n);if(!await j(m))throw new Error(`Path does not exist: ${m}`);return UH(m,t,o)}s(bE,"parseInstallSource");function Ud(e){let t=e.trim();if(t.startsWith("local:"))return {kind:"local"};if(t.startsWith("git+")){let a=t.lastIndexOf("#"),l=a<0?t:t.slice(0,a),c=a<0?"HEAD":t.slice(a+1);return {kind:"git",remoteUrl:l.slice(4),ref:c}}let r=t.match(/^github:([^/]+)\/(.+?)@([^/@]+)$/);if(r!==null){let a=r[1],l=r[2],c=r[3];return {kind:"github",remoteUrl:`https://github.com/${a}/${l}.git`,ref:c}}let n=t.match(/^github:([^/]+)\/([^/@]+)$/);if(n!==null){let a=n[1],l=n[2];return {kind:"github",remoteUrl:`https://github.com/${a}/${l}.git`,ref:"HEAD"}}let o=t.match(/^gitlab:(.+)\/([^/@]+)@([^/@]+)$/);if(o!==null){let a=o[1],l=o[2],c=o[3];return {kind:"gitlab",remoteUrl:`https://gitlab.com/${a}/${l}.git`,ref:c}}let i=t.match(/^gitlab:(.+)\/([^/@]+)$/);if(i!==null){let a=i[1],l=i[2];return {kind:"gitlab",remoteUrl:`https://gitlab.com/${a}/${l}.git`,ref:"HEAD"}}if(t.startsWith("https://")||t.startsWith("http://")){let a=xd(t)??Pd(t);if(a!==null)return {kind:"github",remoteUrl:`https://github.com/${a.org}/${a.repo}.git`,ref:a.ref};let l=vd(t);if(l!==null)return {kind:"github",remoteUrl:`https://github.com/${l.org}/${l.repo}.git`,ref:"HEAD"};let c=Dd(t)??Nd(t);if(c!==null)return {kind:"gitlab",remoteUrl:`https://gitlab.com/${c.namespace}/${c.project}.git`,ref:c.ref};let m=Fd(t);return m!==null?{kind:"gitlab",remoteUrl:`https://gitlab.com/${m.namespace}/${m.project}.git`,ref:"HEAD"}:{kind:"git",remoteUrl:t,ref:"HEAD"}}if(t.startsWith("git@github.com:")){let a=Md(t);return a===null?null:{kind:"github",remoteUrl:`https://github.com/${a.org}/${a.repo}.git`,ref:"HEAD"}}if(t.startsWith("git@gitlab.com:")){let a=Gd(t);return a===null?null:{kind:"gitlab",remoteUrl:`https://gitlab.com/${a.namespace}/${a.project}.git`,ref:"HEAD"}}if(t.startsWith("git@")){let a=t.match(/^git@([^:]+):(.+?)(?:\.git)?$/);if(a===null)return null;let l=a[1],c=a[2].replace(/\.git$/i,"");return {kind:"git",remoteUrl:`ssh://git@${l}/${c}.git`,ref:"HEAD"}}return null}s(Ud,"parseSourceUrl");dL();function Qn(e){let t=[];return e.skills.length&&t.push("skills"),e.rules.length&&t.push("rules"),e.commands.length&&t.push("commands"),e.agents.length&&t.push("agents"),e.mcp!==null&&t.push("mcp"),e.permissions!==null&&t.push("permissions"),e.hooks!==null&&t.push("hooks"),e.ignore.length&&t.push("ignore"),t}s(Qn,"featuresFromCanonical");async function jy(e,t={}){let{sliceRoot:r,implicitPick:n}=await Gh(e),{canonical:o,cleanup:i}=await $h(r,{...t,enableTargetEntityMappers:true});return {canonical:o,features:Qn(o),implicitPick:n,cleanup:i}}s(jy,"discoverFromContentRoot");function BH(e){return e.description.trim()?{skill:e,ok:true}:{skill:e,ok:false,reason:"missing description in frontmatter"}}s(BH,"validateSkill");function KH(e){return e.description.trim()?{rule:e,ok:true}:{rule:e,ok:false,reason:"missing description in frontmatter"}}s(KH,"validateRule");function WH(e){return e.description.trim()?{command:e,ok:true}:{command:e,ok:false,reason:"missing description in frontmatter"}}s(WH,"validateCommand");function HH(e){return e.description.trim()?{agent:e,ok:true}:{agent:e,ok:false,reason:"missing description in frontmatter"}}s(HH,"validateAgent");function St(e){return basename(e.source).replace(/\.md$/i,"")}s(St,"ruleSlug");function Xre(e){if(!e)return;let t=[];return e.skills!==void 0&&t.push("skills"),e.rules!==void 0&&t.push("rules"),e.commands!==void 0&&t.push("commands"),e.agents!==void 0&&t.push("agents"),t.length>0?t:void 0}s(Xre,"featuresFromImplicitPick");function dp(e,t){let{implicitPick:r}=t,n=t.scopedFeatures??Xre(r);if(!r&&!n)return e;let o=new Set(n??[]),i={...e,mcp:!n||o.has("mcp")?e.mcp:null,permissions:!n||o.has("permissions")?e.permissions:null,hooks:!n||o.has("hooks")?e.hooks:null,ignore:!n||o.has("ignore")?e.ignore:[]};if(r?.skills!==void 0){let a=new Set(r.skills);i={...i,skills:r.skills.length===0?[]:i.skills.filter(l=>a.has(l.name))};}else n&&!o.has("skills")&&(i={...i,skills:[]});if(r?.rules!==void 0){let a=new Set(r.rules);i={...i,rules:r.rules.length===0?[]:i.rules.filter(l=>a.has(St(l)))};}else n&&!o.has("rules")&&(i={...i,rules:[]});if(r?.commands!==void 0){let a=new Set(r.commands);i={...i,commands:r.commands.length===0?[]:i.commands.filter(l=>a.has(l.name))};}else n&&!o.has("commands")&&(i={...i,commands:[]});if(r?.agents!==void 0){let a=new Set(r.agents);i={...i,agents:r.agents.length===0?[]:i.agents.filter(l=>a.has(l.name))};}else n&&!o.has("agents")&&(i={...i,agents:[]});return i}s(dp,"narrowDiscoveredForInstallScope");RL();async function zH(e,t,r,n,o={}){let i=await Bh(e,t,{preferredSkillNames:t==="skills"?n?.skills:void 0}),{canonical:a,cleanup:l}=await jy(i.discoveryRoot,o),c=dp(a,{scopedFeatures:[t]});return {prep:{yamlTarget:r,scopedFeatures:[t],cleanup:s(async()=>{await Promise.allSettled([l(),i.cleanup()]);},"combinedCleanup")},narrowed:c,discoveredFeatures:Qn(c)}}s(zH,"resolveManualDiscoveredForInstall");is();rL();b();Te();var Qre=(()=>{let e=new Map;for(let r of Ne){let n=r.project.managedOutputs,o=[...n?.dirs??[],...n?.files??[],...r.detectionPaths];for(let i of o){let a=i.replace(/\/$/,""),l=e.get(a)??new Set;l.add(r.id),e.set(a,l);}}let t=[];for(let[r,n]of e){if(n.size!==1)continue;let[o]=[...n];t.push({prefix:r,target:o});}return t.sort((r,n)=>n.prefix.length-r.prefix.length)})();function qre(e){return e.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"")}s(qre,"norm");function Uy(e){let t=qre(e);if(t){for(let{prefix:r,target:n}of Qre)if(t===r||t.startsWith(`${r}/`))return n}}s(Uy,"targetHintFromNativePath");function AE(e,t){return Uy(e)===t}s(AE,"pathSupportsNativePick");function VH(e,t){if(!e||!t)return;let r=Uy(t);if(r&&r!==e)throw new Error(`--target "${e}" does not match the install path (native path suggests "${r}"). Omit --target to auto-detect, or point at a subtree for that target.`)}s(VH,"validateTargetMatchesPath");function JH(e){return (e.commands?.length??0)+(e.rules?.length??0)+(e.skills?.length??0)+(e.agents?.length??0)>0}s(JH,"extendPickHasArrays");ot();b();wI();async function tne(e,t,r,n){if(n.kind==="skillDir")return Fg(e);if(n.kind==="firstSegment"){let c=t.slice(r.prefix.length).split("/").filter(Boolean)[0];return c?[c]:[]}let o=await B(e),i=n.suffix,a=i.toLowerCase();return [...new Set(o.filter(l=>l.toLowerCase().endsWith(a)).map(l=>basename(l,i)))].sort()}s(tne,"namesForStrategy");async function YH(e,t,r){let n=ne(r)?.nativeInstall;if(!n)return {};let o=t.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"");if(n.inferPick)return n.inferPick(e,o);for(let i of n.pickPaths??[]){if(o!==i.prefix&&!o.startsWith(i.prefix))continue;let a=join(e,...o.split("/")),l=await tne(a,o,i,i.strategy);return l.length?{[i.feature]:l}:{}}return {}}s(YH,"inferImplicitPickFromNativePath");function XH(e){return (e.commands?.length??0)+(e.rules?.length??0)+(e.skills?.length??0)+(e.agents?.length??0)===0}s(XH,"isImplicitPickEmpty");nL();function Bd(e){return e.replace(/\\/g,"/").replace(/\/+$/,"")}s(Bd,"normalizePath");function ine(e,t){let r=Bd(e),n=Bd(t);return r===n||r.startsWith(`${n}/`)||n.startsWith(`${r}/`)}s(ine,"overlapsPath");function By(e,t){let r=e??[];return r.includes(t)||r.push(t),r}s(By,"addUnique");async function ane(e){let t=await mkdtemp(join(tmpdir(),"am-install-native-")),r=join(t,"repo"),n=s(async()=>{await rm$1(t,{recursive:true,force:true});},"cleanup");try{return await cp$1(e,r,{recursive:!0}),{stageRoot:r,cleanup:n}}catch(o){throw await n(),o}}s(ane,"makeStageRoot");function lne(e,t){let r;for(let o of e){if(o.feature==="rules"&&o.toPath.startsWith(".agentsmesh/rules/")){r={...r,rules:By(r?.rules,basename(o.toPath,".md"))};continue}if(o.feature==="commands"&&o.toPath.startsWith(".agentsmesh/commands/")){let i=Bd(relative(join(t,".agentsmesh","commands"),join(t,o.toPath)));r={...r,commands:By(r?.commands,i.replace(/\.md$/i,"").split("/").filter(Boolean).join(":"))};continue}if(o.feature==="agents"&&o.toPath.startsWith(".agentsmesh/agents/")){r={...r,agents:By(r?.agents,basename(o.toPath,".md"))};continue}if(o.feature==="skills"&&o.toPath.startsWith(".agentsmesh/skills/")){let a=Bd(relative(join(t,".agentsmesh","skills"),join(t,o.toPath))).split("/")[0];a&&(r={...r,skills:By(r?.skills,a)});}}return r&&(r.rules?.length??0)+(r.commands?.length??0)+(r.agents?.length??0)+(r.skills?.length??0)>0?r:void 0}s(lne,"buildPickFromResults");function cne(e,t,r,n){let o=join(t,...Bd(e).split("/")),i=r.filter(a=>ine(o,a.fromPath));if(i.length===0)throw new Error(`No installable native resources found under "${e}" for target "${n}". Try --path "${e}" without --target so agentsmesh can auto-detect the layout, or use --as <rules|commands|agents|skills> to install the directory as a flat collection.`);return {features:[...new Set(i.map(a=>a.feature))],pick:lne(i,t)}}s(cne,"scopeImportedResults");async function TE(e,t){let{stageRoot:r,cleanup:n}=await ane(e);try{let o=await id(r,t);return {stageRoot:r,results:o,cleanup:n}}catch(o){throw await n(),o}}s(TE,"stageImportedNativeRepo");async function xE(e,t,r){let n=await TE(e,r);try{return {stageRoot:n.stageRoot,cleanup:n.cleanup,...cne(t,n.stageRoot,n.results,r)}}catch(o){throw await n.cleanup(),o}}s(xE,"stageNativeInstallScope");async function ez(e,t,r,n){let o=n.explicitTarget?.trim();o&&wr.parse(o);let i=r.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"");VH(o,i);let a=join(e,".agentsmesh"),l=await j(a),c=i?Uy(i):void 0,p=!l&&!o&&(!i||c!==void 0)?await bh(e)??void 0:void 0;if(!o&&c&&p&&c!==p)throw new Error(`Install path suggests native layout "${c}" but auto-detect imported "${p}". Use --target ${c} for this path, or install from the repo root without a conflicting subtree path.`);let u=o??c??p,f=!!i&&!!u&&!i.startsWith(".agentsmesh");if(!l&&u){if(f){let w=await xE(e,i,u);return {discoveryRoot:w.stageRoot,implicitPick:w.pick,scopedFeatures:w.features,yamlTarget:u,importHappened:true,cleanup:w.cleanup}}let k=await TE(e,u);return {discoveryRoot:i?join(k.stageRoot,i):k.stageRoot,yamlTarget:u,importHappened:true,cleanup:k.cleanup}}let g;l?i?u&&AE(i,u)?g=e:g=t:g=e:g=t;let h,y,_;if(f&&u){let k=await xE(e,i,u);g=k.stageRoot,h=k.pick,y=k.features,_=k.cleanup;}else if(g===e&&i&&u&&AE(i,u)&&(h=await YH(e,i,u),XH(h)))throw new Error(`No installable native resources found under "${i}" for target "${u}". Try --path "${i}" without --target so agentsmesh can auto-detect the layout, or use --as <rules|commands|agents|skills> to install the directory as a flat collection.`);let R;return o?R=o:u&&(h&&JH(h)||(y?.length??0)>0)&&(R=u),{discoveryRoot:g,implicitPick:h,scopedFeatures:y,yamlTarget:R,importHappened:_!==void 0,cleanup:_}}s(ez,"prepareInstallDiscovery");async function PE(e,t,r,n,o={}){let i=await ez(e,t,r,{explicitTarget:n}),{canonical:a,implicitPick:l,cleanup:c}=await jy(i.discoveryRoot,o),m=i.cleanup,u={...i,cleanup:s(async()=>{await Promise.allSettled([c(),...m?[m()]:[]]);},"mergedCleanup")},f=l??i.implicitPick,g=dp(a,{implicitPick:f,scopedFeatures:i.scopedFeatures}),h=Qn(g);return {prep:u,discovered:a,implicitPick:f,narrowed:g,discoveredFeatures:h}}s(PE,"resolveDiscoveredForInstall");var une=[".claude-plugin","marketplace.json"];async function dne(e){try{return (await stat(e)).isDirectory()}catch{return false}}s(dne,"dirExists");function fne(e){if(typeof e!="string"||e.length===0||e.startsWith("/"))return null;let t=e.replace(/^\.\/+/,"").replace(/\/+$/,"");return t.split("/").some(r=>r==="..")?null:t}s(fne,"normalizeSource");async function rz(e,t,r){let n=join(e,...une),o;try{o=await readFile(n,"utf-8");}catch{return null}let i;try{i=JSON.parse(o);}catch{return null}if(typeof i!="object"||i===null||!Array.isArray(i.plugins))return null;let a=i.plugins,l=[];for(let c of a){if(typeof c!="object"||c===null)continue;let m=fne(c.source);if(!m)continue;let p=join(e,m);if(!await dne(p))continue;let u=await t(p,m);r(u)&&l.push({path:m,layout:u});}return l}s(rz,"detectMarketplaceSubPacks");async function Kd(e){try{return (await stat(e)).isDirectory()}catch{return false}}s(Kd,"dirExists");async function Na(e){try{return (await readdir(e,{withFileTypes:!0})).map(r=>({name:r.name,isDir:r.isDirectory(),isFile:r.isFile()}))}catch{return []}}s(Na,"listDirEntries");function nz(e){return e.endsWith(".instructions.md")?"copilot-instructions":e.endsWith(".md")?"md":e.endsWith(".mdc")?"mdc":e.endsWith(".toml")?"toml":null}s(nz,"classifyFileShape");var yne=["rules","commands","agents","skills","mcp.json","hooks.yaml","permissions.yaml","ignore"],_ne=[".cursorrules",".windsurfrules"];async function sz(e){let t=join(e,".agentsmesh");if(!await Kd(t))return null;let r=await Na(t),n=new Set(r.map(o=>o.name));for(let o of yne)if(n.has(o))return {path:".agentsmesh"};return null}s(sz,"detectCanonical");async function iz(e){for(let t of _ne)try{if((await stat(join(e,t))).isFile())return {path:t}}catch{}return null}s(iz,"detectRootRule");async function az(e){try{if((await stat(join(e,"SKILL.md"))).isFile())return {path:"SKILL.md"}}catch{}return null}s(az,"detectRootSkill");cs();var Rne={rules:"rules",commands:"commands",agents:"agents",skills:"skills"},Ine=[".claude-plugin",".codex-plugin",".cursor-plugin"],kne=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;async function lz(e){let t=join(e,"skills"),r=await Na(t);for(let n of r)if(!(!n.isDir||n.name.startsWith("_")||!kne.test(n.name))&&await Kd(join(t,n.name)))try{if((await stat(join(t,n.name,"SKILL.md"))).isFile())return {path:"skills"}}catch{continue}return null}s(lz,"detectSkillPack");async function cz(e){let t=[];for(let[r,n]of Object.entries(Rne)){let o=join(e,r),i=await Na(o),a=new Set;for(let l of i){if(!l.isFile||eo(l.name))continue;let c=nz(l.name);c&&a.add(c);}for(let l of a)t.push({path:r,suggestedAs:n,fileShape:l});}return t}s(cz,"detectFlatCollections");async function mz(e){let t=[];for(let r of Ine)await Kd(join(e,r))&&t.push({path:r});return t}s(mz,"detectToolNativeManifests");async function vE(e,t){let r=await sz(e);if(r)return {canonical:r,skillPack:null,rootSkill:null,rootRule:null,flatCollections:[],toolNativeManifests:[]};let n=await lz(e),o=n?null:await az(e),i=await cz(e),a=n||o||i.length>0?null:await iz(e),l=await mz(e);return {canonical:r,skillPack:n?{path:t?`${t}/skills`:"skills"}:null,rootSkill:o?{path:t?`${t}/SKILL.md`:"SKILL.md"}:null,rootRule:a?{path:t?`${t}/${a.path}`:a.path}:null,flatCollections:i.map(c=>({...c,path:t?`${t}/${c.path}`:c.path})),toolNativeManifests:l.map(c=>({path:t?`${t}/${c.path}`:c.path}))}}s(vE,"detectFlatLayout");function NE(e){return e.canonical!==null||e.skillPack!==null||e.rootSkill!==null||e.rootRule!==null||e.flatCollections.length>0}s(NE,"hasContent");async function pz(e,t){let r=await Na(e),n=[];for(let o of r){if(!o.isDir||o.name.startsWith("."))continue;let i=join(e,o.name),a=t?`${t}/${o.name}`:o.name,l=await vE(i,a);NE(l)&&n.push({path:a,layout:l});}return n}s(pz,"collectSubPackCandidates");async function Lne(e,t){if(NE(t))return [];let r=await rz(e,vE,NE);if(r&&r.length>0)return r;let n=await pz(e,"");if(n.length>=2)return n;let o=await Na(e);for(let i of o){if(!i.isDir||i.name.startsWith("."))continue;let a=await pz(join(e,i.name),i.name);if(a.length>=2)return a}return []}s(Lne,"detectSubPacks");async function dz(e){let t=await vE(e,"");if(t.canonical)return {...t,subPacks:[]};let r=await Lne(e,t);return {...t,subPacks:r}}s(dz,"detectLayout");ot();b();U();function Cne(e){let t=[];for(let r of Nf()){let n=ne(r)?.nativeInstall?.dialectHints;n?.length&&n.some(o=>o.frontmatterKey in e)&&t.push(r);}return t}s(Cne,"targetsMatchingFrontmatter");async function gz(e){let t;try{t=await readdir(e);}catch{return null}let r=t.sort().find(a=>a.toLowerCase().endsWith(".mdc"));if(!r)return null;let n=await I(join(e,r));if(!n)return null;let o=un(n,join(e,r));if(!o.ok)return null;let i=Cne(o.value.frontmatter);return i.length===1?i[0]??null:null}s(gz,"inferMdcTarget");Dh();Mh();function Tne(e){let t=e.indexOf("#");return t<0?{path:e,anchor:""}:{path:e.slice(0,t),anchor:e.slice(t)}}s(Tne,"splitAnchor");function xne(e){return e.split(sep).join("/")}s(xne,"toForwardSlash");async function Pne(e){try{return await stat(e),!0}catch{return false}}s(Pne,"pathExists");async function Sz(e){let{link:t,fromFile:r,contentRoot:n,includedPaths:o}=e,{path:i,anchor:a}=Tne(t.path);if(i===""||isAbsolute(i))return {link:t,classification:"unresolvable",resolvedRelative:null,anchor:a};let l=join(n,r,".."),c=normalize(resolve(l,i)),m=normalize(resolve(n)),p=relative(m,c);if(p.startsWith("..")||isAbsolute(p))return {link:t,classification:"unresolvable",resolvedRelative:null,anchor:a};let u=xne(p);return await Pne(c)?o.has(u)?{link:t,classification:"in-tree-included",resolvedRelative:u,anchor:a}:{link:t,classification:"resolvable-outside",resolvedRelative:u,anchor:a}:{link:t,classification:"unresolvable",resolvedRelative:u,anchor:a}}s(Sz,"resolveLink");var Dne=/^(?:```|~~~)[^\n]*\n[\s\S]*?^(?:```|~~~)/gm,Nne=/(!?)\[[^\]\n]*\]\(([^)\n]+)\)/dg,vne=/^\s*\[([^\]\n]+)\]:\s*(.+?)\s*$/dgm;function Fne(e){let t=[];for(let r of e.matchAll(Dne)){let n=r.index??0;t.push([n,n+r[0].length]);}return t}s(Fne,"getFencedCodeRanges");function Rz(e,t){for(let[r,n]of t)if(e>=r&&e<n)return true;return false}s(Rz,"isInRanges");function FE(e){let t=e.length-e.trimStart().length,r=e.trim(),n=r.length,o=/^(.*?)\s+(["'])([\s\S]*?)\2\s*$/.exec(r);o?.[1]!==void 0&&(n=o[1].trimEnd().length);let i=t,a=r.slice(0,n);return a.length>=2&&a.startsWith("<")&&a.endsWith(">")&&(i+=1,n-=2),{start:i,length:n}}s(FE,"destPathSpan");function Iz(e){let{start:t,length:r}=FE(e);return e.slice(t,t+r)}s(Iz,"normalizeDestination");function Ky(e){let t=Fne(e),r=[];for(let n of e.matchAll(Nne)){let o=n.index??0;if(Rz(o,t))continue;let i=n[1]==="!",a=n[2],l=n.indices?.[2];if(a===void 0||l===void 0)continue;let c=FE(a);r.push({kind:i?"image":"inline",destination:Iz(a),destinationOffset:l[0]+c.start,destinationLength:c.length});}for(let n of e.matchAll(vne)){let o=n.index??0;if(Rz(o,t))continue;let i=(n[1]??"").trim(),a=n[2]??"",l=n.indices?.[2];if(i===""||a.trim()===""||l===void 0)continue;let c=FE(a);r.push({kind:"reference-def",destination:Iz(a),label:i,destinationOffset:l[0]+c.start,destinationLength:c.length});}return r}s(Ky,"scanMarkdownLinks");function kz(e,t){if(t.length===0)return e;let r=[...t].sort((o,i)=>i.offset-o.offset),n=e;for(let o of r)n=`${n.slice(0,o.offset)}${o.replacement}${n.slice(o.offset+o.length)}`;return n}s(kz,"applyRangeRewrites");function Mne(e){return !(e.length===0||e.startsWith("#")||e.startsWith("/")||/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(e))}s(Mne,"isCandidateRelativePath");function Gne(e){let t=e.replaceAll("\\","/");return t==="{baseDir}"?".":t.startsWith("{baseDir}/")?t.slice(10):t}s(Gne,"stripPath");function $ne(e){let t=e.destination;return Mne(t)?{raw:t,path:Gne(t),kind:e.kind,...e.label!==void 0?{label:e.label}:{}}:null}s($ne,"toScannedLink");function Lz(e){let t=[];for(let r of Ky(e)){let n=$ne(r);n!==null&&t.push(n);}return t}s(Lz,"scanRelativeLinks");function fp(e,t){let r=e.replaceAll("\\","/"),n=t.replaceAll("\\","/"),o=r.endsWith("/")?r:`${r}/`;return n.startsWith(o)?n.slice(o.length):n}s(fp,"toForwardSlashRelative");function Ez(e,t,r,n,o){let i=new Set;for(let a of t){i.add(fp(e,a.source));for(let l of a.supportingFiles)i.add(fp(e,l.absolutePath));}for(let a of r)i.add(fp(e,a.source));for(let a of n)i.add(fp(e,a.source));for(let a of o)i.add(fp(e,a.source));return i}s(Ez,"buildIncludedPaths");function Une(e,t,r,n){let o=[];for(let i of e)o.push({kind:"skill",name:i.name,body:i.body,sourcePath:i.source});for(let i of t)o.push({kind:"agent",name:i.name,body:i.body,sourcePath:i.source});for(let i of r)o.push({kind:"command",name:i.name,body:i.body,sourcePath:i.source});for(let i of n)o.push({kind:"rule",name:basename(i.source,".md"),body:i.body,sourcePath:i.source});return o}s(Une,"listScannables");async function Cz(e,t,r,n,o,i){let a=Une(t,r,n,o),l=[];for(let c of a){let m=Lz(c.body);if(m.length===0)continue;let p=fp(e,c.sourcePath),u=[];for(let f of m){let g=await Sz({link:f,fromFile:p,contentRoot:e,includedPaths:i});g.classification!=="in-tree-included"&&u.push(g);}u.length>0&&l.push({entityKind:c.kind,entityName:c.name,resolved:u});}return l}s(Cz,"detectBrokenLinks");Mh();async function Oz(e,t,r={}){let n=new Map,o=new Map,i=[],a=[...t].sort((p,u)=>p.precedence-u.precedence);for(let p of a){let{commands:u,cleanup:f}=await Nh(join(e,p.dir),{restrictToTarget:p.target,parseOpts:r});i.push(f);for(let g of u){if(n.get(g.name)===void 0){n.set(g.name,{command:g,precedence:p.precedence});continue}let y=o.get(g.name)??[];y.push({path:g.source,precedence:p.precedence}),o.set(g.name,y);}}let l=[];for(let[p,u]of o){let f=n.get(p);if(f===void 0)throw new Error(`mergeCommands invariant: loser without winner for "${p}"`);l.push({basename:p,winnerPath:f.command.source,loserPaths:u.map(g=>g.path)});}return l.sort((p,u)=>p.basename.localeCompare(u.basename)),{commands:[...n.values()].map(p=>p.command).sort((p,u)=>p.name.localeCompare(u.name)),dedups:l,cleanup:s(async()=>{await Promise.allSettled(i.map(p=>p()));},"cleanup")}}s(Oz,"mergeCommands");async function wz(e,t,r={}){let[n,o,i,a]=await Promise.all([KU(`${e}/skills`,r),Fh(`${e}/agents`,{parseOpts:r}),vh(`${e}/rules`,{parseOpts:r}),Oz(e,t.mergeFromToolDirs,r)]),l=[...o.agents],c=[...i.rules],m=Ez(e,n,l,a.commands,c),p=await Cz(e,n,l,a.commands,c,m),u=s(async()=>{await Promise.allSettled([i.cleanup(),o.cleanup(),a.cleanup()]);},"cleanup");return {skills:n,agents:l,commands:a.commands,rules:c,dedups:a.dedups,brokenLinks:p,cleanup:u}}s(wz,"aggregateAnthropicSkillPack");var bz={mergeFromToolDirs:[{dir:"commands",precedence:0},{dir:".claude/commands",target:"claude-code",precedence:1},{dir:".gemini/commands",target:"gemini-cli",precedence:2}]};Pc();function Wne(e){return {rules:[...e.rules],commands:[...e.commands],agents:[...e.agents],skills:[...e.skills],mcp:null,permissions:null,hooks:null,ignore:[]}}s(Wne,"aggregateToCanonical");function Wy(){return {}}s(Wy,"emptyPrep");async function Hne(e,t){let r=[];for(let n of t)if(n.fileShape==="mdc"&&!n.inferredTarget){let o=await gz(join(e,n.path));r.push(o?{...n,inferredTarget:o}:n);}else r.push(n);return r}s(Hne,"enrichMdcTargets");function Tz(e){return e.canonical?"canonical-agentsmesh":e.skillPack||e.rootSkill?"anthropic-skill-pack":e.rootRule||e.toolNativeManifests.length>0?"tool-native":"unknown"}s(Tz,"deriveSourceType");async function zne(e,t){let r=await Of(e,t);return {rules:[],commands:[],agents:[],skills:r?[r]:[],mcp:null,permissions:null,hooks:null,ignore:[]}}s(zne,"rootSkillToCanonical");async function Vne(e,t){let r=join(e,t),n=await readFile(r,"utf-8").catch(()=>""),o=`Imported from ${t}`;return {rules:n?[{source:r,root:true,targets:[],description:o,globs:[],body:n}]:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}s(Vne,"rootRuleToCanonical");async function xz(e){let t=e.parseOpts??{};if(e.explicitAs)return {implicitPick:void 0,...await zH(e.contentRoot,e.explicitAs,e.explicitTarget,e.replayPick,t)};if(e.explicitTarget)return PE(e.resolvedPath,e.contentRoot,e.pathInRepo,e.explicitTarget,t);let r=await dz(e.contentRoot),n=await Hne(e.contentRoot,r.flatCollections),o={...r,flatCollections:n};if(o.skillPack&&!o.canonical){let a=await wz(e.contentRoot,bz,t),l=Wne(a);return {prep:{cleanup:a.cleanup},implicitPick:void 0,narrowed:l,discoveredFeatures:Qn(l),layout:o,aggregate:a}}if(o.rootSkill&&!o.canonical&&!o.skillPack){let a=await zne(e.contentRoot,t);return {prep:Wy(),implicitPick:void 0,narrowed:a,discoveredFeatures:Qn(a),layout:o}}if(o.rootRule&&!o.canonical&&!o.skillPack&&!o.rootSkill&&o.flatCollections.length===0){let a=await Vne(e.contentRoot,o.rootRule.path);return {prep:Wy(),implicitPick:void 0,narrowed:a,discoveredFeatures:Qn(a),layout:o}}return o.subPacks.length>0?{prep:Wy(),implicitPick:void 0,narrowed:{rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]},discoveredFeatures:[],layout:o}:o.flatCollections.length>0?{prep:Wy(),implicitPick:void 0,narrowed:{rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]},discoveredFeatures:[],layout:o}:{...await PE(e.resolvedPath,e.contentRoot,e.pathInRepo,e.explicitTarget,t),layout:o}}s(xz,"resolveInstallDiscovery");function Dz(e){let t=new Set;e.skillPack&&t.add("skills"),e.rootSkill&&t.add("skills");for(let r of e.flatCollections)t.add(r.suggestedAs);return [...t]}s(Dz,"featuresFromLayout");function Jne(e){return e.replace(/[/\\]+/g,"-").replace(/[^a-z0-9-]/gi,"").toLowerCase()}s(Jne,"subPackSlug");function Pz(e,t,r){let n=Dz(e.layout),o=!e.layout.skillPack&&!e.layout.rootSkill&&n.length>0;return {name:`${t}-${Jne(e.path)}`,source:r,path:e.path,...o?{as:n[0]}:{},features:n}}s(Pz,"targetFromSubPack");function Nz(e,t,r){return {name:t,source:r,path:e.path,as:e.suggestedAs,target:e.inferredTarget,features:[e.suggestedAs]}}s(Nz,"targetFromCollection");function vz(e){let{layout:t,sourceName:r,sourceForYaml:n,explicitPath:o,explicitAs:i,explicitTarget:a}=e;if(o||i||a)return {targets:[],isMarketplace:false};if(t.canonical||t.skillPack)return {targets:[],isMarketplace:false};if(t.subPacks.length>=1)return Yne(e);if(t.flatCollections.length===1){let l=t.flatCollections[0];return {targets:[Nz(l,r,n)],isMarketplace:false}}return t.flatCollections.length>1?Xne(e):{targets:[],isMarketplace:false}}s(vz,"selectInstallCandidates");function Yne(e){let{layout:t,sourceName:r,sourceForYaml:n}=e;if(e.all)return {targets:t.subPacks.map(a=>Pz(a,r,n)),isMarketplace:true};if(e.force||!e.tty){let a=t.subPacks.map(l=>({path:l.path,features:Dz(l.layout)})).map(l=>` - ${l.path} (${l.features.join(", ")})`).join(`
|
|
448
448
|
`);throw new Error(`Marketplace source with ${t.subPacks.length} sub-packs. Pass --all to install all, or use --path <subpath>:
|
|
449
|
-
${a}`)}return {targets:t.subPacks.map(i=>
|
|
449
|
+
${a}`)}return {targets:t.subPacks.map(i=>Pz(i,r,n)),isMarketplace:true}}s(Yne,"selectMarketplace");function Xne(e){let{layout:t,sourceName:r,sourceForYaml:n}=e;if(e.force||!e.tty){let i=t.flatCollections.map(a=>` - ${a.path} (${a.suggestedAs}, .${a.fileShape})`).join(`
|
|
450
450
|
`);throw new Error(`Ambiguous source with ${t.flatCollections.length} resource collections. Pass --as <kind> to select, or --path <subpath>:
|
|
451
|
-
${i}`)}return {targets:t.flatCollections.map(i=>
|
|
451
|
+
${i}`)}return {targets:t.flatCollections.map(i=>Nz(i,r,n)),isMarketplace:false}}s(Xne,"selectMultipleCollections");an();fL();function gp(e){return e==="."||e===""?void 0:e}s(gp,"trimDot");function qne(e,t){let r=basename(t).replace(/\.md$/i,"");return e==="agents"?{agents:[r]}:e==="commands"?{commands:[r]}:{rules:[r]}}s(qne,"markdownPick");async function Mz(e){if(!e.as)return {pathInRepo:gp(e.pathInRepo)};let t=e.pathInRepo.replace(/^\/+|\/+$/g,""),r=await stat(e.contentRoot);if(e.as!=="skills"&&r.isFile()&&e.contentRoot.toLowerCase().endsWith(".md"))return {pathInRepo:gp(dirname(t)),pick:qne(e.as,t||e.contentRoot)};if(e.as==="skills"){if(r.isFile()&&basename(e.contentRoot)==="SKILL.md"){let n=t?dirname(t):dirname(e.contentRoot);return {pathInRepo:gp(dirname(n)),pick:{skills:[basename(n)]}}}if(r.isDirectory()){let n=t||basename(e.contentRoot),o=join(e.contentRoot.replace(/\/+$/g,""),"SKILL.md");try{if((await stat(o)).isFile()){let a=await jh(o);return {pathInRepo:gp(dirname(n)),pick:{skills:[a||basename(n)]}}}}catch{return {pathInRepo:gp(t)}}}}return {pathInRepo:gp(t)}}s(Mz,"resolveManualInstallPersistence");Xo();ue();ue();async function hp(e,t,r){let n=e==="install"?"Pack is installed":e==="refresh"?"Refresh is committed":"Uninstall is committed",o=t==="global"?" --global":"";try{let i=await qo(t==="global"?{global:!0}:{},r,{printMatrix:!1});Qm(i),i.exitCode!==0&&S.warn(`Generate failed after ${e}. ${n}; run agentsmesh generate${o}.`);}catch(i){let a=i instanceof Error?i.message:String(i);S.warn(`Generate failed after ${e}: ${a}`),S.warn(`${n}; run agentsmesh generate${o} after resolving the issue.`);}}s(hp,"runPostOperationGenerate");function va(e,t){let r=t?.input??process.stdin,n=t?.output??process.stdout;return new Promise(o=>{let i=Gz.createInterface({input:r,output:n,terminal:false}),a=false;i.on("close",()=>{a||o("");}),i.on("error",()=>{a||(a=true,o(""));}),i.question(e,l=>{a=true,i.close(),o(l);});})}s(va,"readLine");async function ts(e){if(!process.stdin.isTTY)return false;let t=(await va(`${e} (y/n) `)).trim().toLowerCase();return t==="y"||t==="yes"}s(ts,"confirm");function Zne(e){return !!(e.skills.length||e.rules.length||e.commands.length||e.agents.length)}s(Zne,"hasArrayResources");function $z(e){return Zne(e)||e.mcp!==null||e.permissions!==null||e.hooks!==null||e.ignore.length>0}s($z,"hasInstallableResources");async function jz(e,t,r,n){let o=e.skills.map(l=>BH(l)),i=o.filter(l=>l.ok).map(l=>l.skill),a=o.filter(l=>!l.ok);if(t)return o.map(l=>l.skill);if(!r&&n)for(let l of a)await ts(`Include invalid skill "${l.skill.name}" anyway? (${l.reason}). You can fix it later.`)&&i.push(l.skill);return i}s(jz,"resolveSkillPool");async function Uz(e,t,r,n){let o=e.rules.map(l=>KH(l)),i=o.filter(l=>l.ok).map(l=>l.rule),a=o.filter(l=>!l.ok);if(t)return o.map(l=>l.rule);if(!r&&n)for(let l of a)await ts(`Include invalid rule "${St(l.rule)}" anyway? (${l.reason}). You can fix it later.`)&&i.push(l.rule);return i}s(Uz,"resolveRulePool");async function Bz(e,t,r,n){let o=e.commands.map(l=>WH(l)),i=o.filter(l=>l.ok).map(l=>l.command),a=o.filter(l=>!l.ok);if(t)return o.map(l=>l.command);if(!r&&n)for(let l of a)await ts(`Include invalid command "${l.command.name}" anyway? (${l.reason}). You can fix it later.`)&&i.push(l.command);return i}s(Bz,"resolveCommandPool");async function Kz(e,t,r,n){let o=e.agents.map(l=>HH(l)),i=o.filter(l=>l.ok).map(l=>l.agent),a=o.filter(l=>!l.ok);if(t)return o.map(l=>l.agent);if(!r&&n)for(let l of a)await ts(`Include invalid agent "${l.agent.name}" anyway? (${l.reason}). You can fix it later.`)&&i.push(l.agent);return i}s(Kz,"resolveAgentPool");async function Wz(e,t){let r=t.skills.map(a=>a.name),n=t.rules.map(a=>St(a)),o=t.commands.map(a=>a.name),i=t.agents.map(a=>a.name);for(let a of t.skills)e.skills.some(l=>l.name===a.name)&&(await ts(`Skill "${a.name}" already exists in merged config. Add extend anyway?`)||(r=r.filter(c=>c!==a.name)));for(let a of t.rules){let l=St(a);e.rules.some(c=>St(c)===l)&&(await ts(`Rule "${l}" already exists in merged config. Add extend anyway?`)||(n=n.filter(m=>m!==l)));}for(let a of t.commands)e.commands.some(l=>l.name===a.name)&&(await ts(`Command "${a.name}" already exists in merged config. Add extend anyway?`)||(o=o.filter(c=>c!==a.name)));for(let a of t.agents)e.agents.some(l=>l.name===a.name)&&(await ts(`Agent "${a.name}" already exists in merged config. Add extend anyway?`)||(i=i.filter(c=>c!==a.name)));return {skillNames:r,ruleSlugs:n,commandNames:o,agentNames:i}}s(Wz,"resolveInstallConflicts");function Hz(e,t){if(!e)return;let r={},n=e.skills?.filter(l=>t.skillNames.includes(l)),o=e.rules?.filter(l=>t.ruleSlugs.includes(l)),i=e.commands?.filter(l=>t.commandNames.includes(l)),a=e.agents?.filter(l=>t.agentNames.includes(l));return n&&n.length>0&&(r.skills=n),o&&o.length>0&&(r.rules=o),i&&i.length>0&&(r.commands=i),a&&a.length>0&&(r.agents=a),Object.keys(r).length>0?r:void 0}s(Hz,"pickForSelectedResources");function eoe(e,t){let r=e.split("/").filter(Boolean);return r.length>0&&r[r.length-1]===t}s(eoe,"pathEndsWithName");function Hy(e,t,r){return r!==1||t.length!==1?false:eoe(e,t[0])}s(Hy,"inferSingleNamePick");function zz(e){let{pathInRepo:t,implicitPick:r,preConflictCounts:n,selected:o}=e,i={},a=o.skillNames.length>0&&(!!r?.skills?.length||o.skillNames.length<n.skills||Hy(t,o.skillNames,n.skills)),l=o.ruleSlugs.length>0&&(!!r?.rules?.length||o.ruleSlugs.length<n.rules||Hy(t,o.ruleSlugs,n.rules)),c=o.commandNames.length>0&&(!!r?.commands?.length||o.commandNames.length<n.commands||Hy(t,o.commandNames,n.commands)),m=o.agentNames.length>0&&(!!r?.agents?.length||o.agentNames.length<n.agents||Hy(t,o.agentNames,n.agents));return a&&(i.skills=[...o.skillNames]),l&&(i.rules=[...o.ruleSlugs]),c&&(i.commands=[...o.commandNames]),m&&(i.agents=[...o.agentNames]),Object.keys(i).length?i:void 0}s(zz,"buildInstallPick");function Vz(e,t){let r=new Set(e);return t.skillNames.length===0&&r.delete("skills"),t.ruleSlugs.length===0&&r.delete("rules"),t.commandNames.length===0&&r.delete("commands"),t.agentNames.length===0&&r.delete("agents"),[...r]}s(Vz,"deriveInstallFeatures");function toe(e){return e.skillNames.length===0&&e.ruleSlugs.length===0&&e.commandNames.length===0&&e.agentNames.length===0}s(toe,"isEmptyInstallSelection");function Jz(e){let{selected:t,discoveredFeatures:r,preConflict:n}=e,o=s(l=>r.includes(l),"had"),i=o("skills")&&t.skillNames.length===0&&n.skills>0&&"skills"||o("rules")&&t.ruleSlugs.length===0&&n.rules>0&&"rules"||o("commands")&&t.commandNames.length===0&&n.commands>0&&"commands"||o("agents")&&t.agentNames.length===0&&n.agents>0&&"agents";if(i)throw new Error(`No ${i} selected to install.`);let a=r.some(l=>["mcp","permissions","hooks","ignore"].includes(l));if(toe(t)&&!a)throw new Error("No resources selected to install.")}s(Jz,"ensureInstallSelection");is();function Yz(e,t){if(e.find(n=>n.name===t.name&&n.source!==t.source))throw new Error(`Extends entry "${t.name}" already exists with a different source. Use --name to provide a different name.`)}s(Yz,"assertExtendNameAvailable");function roe(e,t,r){if(r===void 0){if(!e)return;let o={...e};for(let i of ["skills","commands","rules","agents"])t.includes(i)&&delete o[i];return Object.keys(o).length?o:void 0}let n={...e};for(let o of ["skills","commands","rules","agents"]){if(!(o in r))continue;let i=r[o];if(i===void 0||i.length===0){delete n[o];continue}n[o]=[...new Set([...e?.[o]??[],...i])];}return Object.keys(n).length?n:void 0}s(roe,"mergePick");function Xz(e,t){let r=e.findIndex(a=>a.source===t.source);if(r<0)return [...e,{name:t.name,source:t.source,version:t.version,features:t.features,path:t.path,pick:t.pick,target:t.target,as:t.as}];let n=e[r],o=[...new Set([...n.features,...t.features])],i=roe(n.pick,t.features,t.pick);return e.map((a,l)=>l===r?{name:t.name,source:t.source,version:t.version??n.version,features:o,path:t.path!==void 0?t.path:n.path,pick:i,target:t.target??n.target,as:t.as??n.as}:a)}s(Xz,"mergeExtendList");b();async function Qz(e,t,r){let n=await I(e);if(n===null)throw new Error(`Missing config: ${e}`);let o=parse(n),i=Xz(t.extends,r);o.extends=i;let a=stringify(o,{indent:2,lineWidth:0});await L(e,a.endsWith(`
|
|
452
452
|
`)?a:`${a}
|
|
453
|
-
`);}s(
|
|
454
|
-
${JSON.stringify(i,null,2)}`);return}let a=join(t,"agentsmesh.yaml");await
|
|
455
|
-
`);return `sha256:${Jh(n)}`}s(zy,"hashPackContent");b();var Er=".agentsmesh-install-manifest.json",moe=["pack.yaml",Er];z$1.object({name:z$1.string().min(1),source:z$1.string().min(1),installed_at:z$1.string().min(1),extends_id:z$1.string().nullable(),source_type:z$1.enum(["anthropic-skill-pack","canonical-agentsmesh","tool-native","unknown"]).nullable(),files:z$1.record(z$1.string().min(1),z$1.string().regex(/^sha256:[0-9a-f]{64}$/))});function poe(e,t){return relative(e,t).replaceAll("\\","/")}s(poe,"toForwardSlashRelative");async function Vy(e){let t=await B(e),r=[];for(let n of t){let o=poe(e,n);if(moe.includes(o))continue;let i=await Xh(n);i!==null&&r.push([o,`sha256:${i}`]);}return r.sort(([n],[o])=>n.localeCompare(o)),Object.fromEntries(r)}s(Vy,"hashPackFiles");b();var uoe=/spdx-license-identifier:\s*([A-Za-z0-9.+-]+)/i,doe=[{id:"BSD-3-Clause",pattern:/redistribution and use in source and binary forms[\s\S]+?neither the name of[\s\S]+?contributors/i},{id:"BSD-2-Clause",pattern:/redistribution and use in source and binary forms/i},{id:"AGPL-3.0",pattern:/gnu affero general public license[\s\S]+?version 3/i},{id:"LGPL-3.0",pattern:/gnu lesser general public license[\s\S]+?version 3/i},{id:"LGPL-2.1",pattern:/gnu lesser general public license[\s\S]+?version 2\.1/i},{id:"GPL-3.0",pattern:/gnu general public license[\s\S]+?version 3/i},{id:"GPL-2.0",pattern:/gnu general public license[\s\S]+?version 2/i},{id:"MPL-2.0",pattern:/mozilla public license[\s\S]+?version 2\.0/i},{id:"Apache-2.0",pattern:/apache license[\s\S]+?version 2\.0/i},{id:"MIT",pattern:/permission is hereby granted, free of charge, to any person obtaining a copy/i},{id:"ISC",pattern:/permission to use, copy, modify,? and\/or distribute this software/i},{id:"Unlicense",pattern:/this is free and unencumbered software released into the public domain/i},{id:"CC0-1.0",pattern:/cc0 1\.0 universal/i}];function
|
|
453
|
+
`);}s(Qz,"writeAgentsmeshWithNewExtend");ue();async function qz(e){let{configDir:t,config:r,entryArgs:n,dryRun:o}=e,i=ioe(n);if(Yz(r.extends,i),o){S.info(`[dry-run] Would add extend:
|
|
454
|
+
${JSON.stringify(i,null,2)}`);return}let a=join(t,"agentsmesh.yaml");await Qz(a,r,i),S.success(`Wrote extends entry "${i.name}" to agentsmesh.yaml.`);}s(qz,"writeInstallAsExtend");function ioe(e){return {name:e.name,source:e.source,version:e.version,features:e.features,path:e.path,pick:e.pick,target:e.yamlTarget!==void 0?wr.parse(e.yamlTarget):void 0,as:e.as}}s(ioe,"toNewExtendEntry");b();ue();b();var loe="pack.yaml";async function zy(e){let t=await B(e),r=[];for(let i of t.sort()){let a=relative(e,i).replace(/\\/g,"/");if(a===loe)continue;let l=await Yh(i);l!==null&&r.push(`${a}:${l}`);}let n=r.join(`
|
|
455
|
+
`);return `sha256:${Jh(n)}`}s(zy,"hashPackContent");b();var Er=".agentsmesh-install-manifest.json",moe=["pack.yaml",Er];z$1.object({name:z$1.string().min(1),source:z$1.string().min(1),installed_at:z$1.string().min(1),extends_id:z$1.string().nullable(),source_type:z$1.enum(["anthropic-skill-pack","canonical-agentsmesh","tool-native","unknown"]).nullable(),files:z$1.record(z$1.string().min(1),z$1.string().regex(/^sha256:[0-9a-f]{64}$/))});function poe(e,t){return relative(e,t).replaceAll("\\","/")}s(poe,"toForwardSlashRelative");async function Vy(e){let t=await B(e),r=[];for(let n of t){let o=poe(e,n);if(moe.includes(o))continue;let i=await Xh(n);i!==null&&r.push([o,`sha256:${i}`]);}return r.sort(([n],[o])=>n.localeCompare(o)),Object.fromEntries(r)}s(Vy,"hashPackFiles");b();var uoe=/spdx-license-identifier:\s*([A-Za-z0-9.+-]+)/i,doe=[{id:"BSD-3-Clause",pattern:/redistribution and use in source and binary forms[\s\S]+?neither the name of[\s\S]+?contributors/i},{id:"BSD-2-Clause",pattern:/redistribution and use in source and binary forms/i},{id:"AGPL-3.0",pattern:/gnu affero general public license[\s\S]+?version 3/i},{id:"LGPL-3.0",pattern:/gnu lesser general public license[\s\S]+?version 3/i},{id:"LGPL-2.1",pattern:/gnu lesser general public license[\s\S]+?version 2\.1/i},{id:"GPL-3.0",pattern:/gnu general public license[\s\S]+?version 3/i},{id:"GPL-2.0",pattern:/gnu general public license[\s\S]+?version 2/i},{id:"MPL-2.0",pattern:/mozilla public license[\s\S]+?version 2\.0/i},{id:"Apache-2.0",pattern:/apache license[\s\S]+?version 2\.0/i},{id:"MIT",pattern:/permission is hereby granted, free of charge, to any person obtaining a copy/i},{id:"ISC",pattern:/permission to use, copy, modify,? and\/or distribute this software/i},{id:"Unlicense",pattern:/this is free and unencumbered software released into the public domain/i},{id:"CC0-1.0",pattern:/cc0 1\.0 universal/i}];function Zz(e){if(e.trim().length===0)return null;let t=uoe.exec(e);if(t)return t[1]??null;for(let{id:r,pattern:n}of doe)if(n.test(e))return r;return null}s(Zz,"detectSpdxLicense");var goe=["LICENSE","COPYING","NOTICE","COPYRIGHT"],hoe=["",".md",".txt",".rst"];async function e1(e){for(let t of goe)for(let r of hoe){let n=await I(join(e,`${t}${r}`));if(n===null)continue;let o=Zz(n);if(o!==null)return o}return null}s(e1,"detectLicenseInPackDir");async function Soe(e,t){if(e.rules.length===0)return;let r=join(t,"rules");await O(r);for(let n of e.rules){let o=join(r,basename(n.source));await copyFile(n.source,o);}}s(Soe,"writeRules");async function Roe(e,t){if(e.commands.length===0)return;let r=join(t,"commands");await O(r);for(let n of e.commands){let o=join(r,basename(n.source));await copyFile(n.source,o);}}s(Roe,"writeCommands");async function Ioe(e,t){if(e.agents.length===0)return;let r=join(t,"agents");await O(r);for(let n of e.agents){let o=join(r,basename(n.source));await copyFile(n.source,o);}}s(Ioe,"writeAgents");async function koe(e,t){if(e.skills.length===0)return;let r=join(t,"skills");await O(r);for(let n of e.skills){let o=join(r,n.name);await O(o),await copyFile(n.source,join(o,"SKILL.md"));for(let i of n.supportingFiles){let a=join(o,i.relativePath);await O(dirname(a)),await copyFile(i.absolutePath,a);}}}s(koe,"writeSkills");async function Loe(e,t){for(let r of e)await copyFile(r.absolutePath,join(t,r.relativePath));}s(Loe,"writePreservedRootFiles");async function Eoe(e,t){e.mcp!==null&&await L(join(t,"mcp.json"),`${JSON.stringify(e.mcp,null,2)}
|
|
456
456
|
`),e.permissions!==null&&await L(join(t,"permissions.yaml"),stringify(e.permissions)),e.hooks!==null&&await L(join(t,"hooks.yaml"),stringify(e.hooks)),e.ignore.length>0&&await L(join(t,"ignore"),`${e.ignore.join(`
|
|
457
457
|
`)}
|
|
458
|
-
`);}s(Eoe,"writeSettings");function Coe(e){if(e.includes("/")||e.includes("\\")||e===".."||e==="."||e.includes("\0"))throw new Error(`Invalid pack name "${e}". Pack names must be a single directory segment without path separators.`)}s(Coe,"validatePackName");async function Ooe(e,t,r){let n=await Vy(e),o=
|
|
459
|
-
`);}s(Ooe,"writeInstallManifest");async function
|
|
458
|
+
`);}s(Eoe,"writeSettings");function Coe(e){if(e.includes("/")||e.includes("\\")||e===".."||e==="."||e.includes("\0"))throw new Error(`Invalid pack name "${e}". Pack names must be a single directory segment without path separators.`)}s(Coe,"validatePackName");async function Ooe(e,t,r){let n=await Vy(e),o=QW({name:t.name,source:t.source,installed_at:t.installed_at,extends_id:r.extends_id??null,source_type:r.source_type??null,files:n},"install-manifest");await L(join(e,Er),`${JSON.stringify(o,null,2)}
|
|
459
|
+
`);}s(Ooe,"writeInstallManifest");async function t1(e,t,r,n,o={},i=[]){Coe(t);let a=join(e,`${t}.tmp`),l=join(e,`${t}.old`),c=join(e,t);await j(a)&&await rm$1(a,{recursive:true,force:true}),await j(l)&&await rm$1(l,{recursive:true,force:true});let m,p=false;try{await O(a),await Soe(r,a),await Roe(r,a),await Ioe(r,a),await koe(r,a),await Eoe(r,a),await Loe(i,a);let u=await zy(a),f=await e1(a);m=Da({...n,content_hash:u,license:f}),await L(join(a,"pack.yaml"),lc(stringify(m),"pack")),await Ooe(a,m,o),await mkdir(e,{recursive:!0}),await j(c)&&(await rename(c,l),p=!0);try{await rename(a,c);}catch(g){throw p&&(await rename(l,c).catch(h=>{let y=h instanceof Error?h.message:String(h);S.warn(`Failed to restore the previous pack after a failed atomic swap; the prior contents remain at "${l}". Recover them manually. (${y})`);}),p=!1),g}}catch(u){throw await rm$1(a,{recursive:true,force:true}).catch(()=>{}),u}return p&&await rm$1(l,{recursive:true,force:true}).catch(()=>{}),m}s(t1,"materializePack");Hm();b();function BE(e,t){return [...new Set([...e,...t])]}s(BE,"union");function boe(e,t){if(e.path===void 0&&e.paths===void 0||t===void 0)return {path:void 0,paths:void 0};let n=BE(e.paths??(e.path?[e.path]:[]),[t]);return n.length===1?{path:n[0],paths:void 0}:{path:void 0,paths:n}}s(boe,"mergePathScope");function Aoe(e,t,r){let n={...e};for(let i of t)r&&r[i]!==void 0?n[i]=BE(n[i]??[],r[i]):delete n[i];return (n.skills?.length??0)>0||(n.rules?.length??0)>0||(n.commands?.length??0)>0||(n.agents?.length??0)>0?n:void 0}s(Aoe,"mergePick");async function Toe(e,t){if(e.rules.length===0)return;let r=join(t,"rules");await O(r);for(let n of e.rules)await copyFile(n.source,join(r,basename(n.source)));}s(Toe,"mergeRules");async function xoe(e,t){if(e.commands.length===0)return;let r=join(t,"commands");await O(r);for(let n of e.commands)await copyFile(n.source,join(r,basename(n.source)));}s(xoe,"mergeCommands");async function Poe(e,t){if(e.agents.length===0)return;let r=join(t,"agents");await O(r);for(let n of e.agents)await copyFile(n.source,join(r,basename(n.source)));}s(Poe,"mergeAgents");async function Doe(e,t){if(e.skills.length===0)return;let r=join(t,"skills");await O(r);for(let n of e.skills){let o=join(r,n.name);await O(o),await copyFile(n.source,join(o,"SKILL.md"));for(let i of n.supportingFiles){let a=join(o,i.relativePath);await O(dirname(a)),await copyFile(i.absolutePath,a);}}}s(Doe,"mergeSkills");async function Noe(e,t){for(let r of e)await copyFile(r.absolutePath,join(t,r.relativePath));}s(Noe,"mergePreservedRootFiles");async function voe(e,t){e.mcp!==null&&await L(join(t,"mcp.json"),`${JSON.stringify(e.mcp,null,2)}
|
|
460
460
|
`),e.permissions!==null&&await L(join(t,"permissions.yaml"),stringify(e.permissions)),e.hooks!==null&&await L(join(t,"hooks.yaml"),stringify(e.hooks)),e.ignore.length>0&&await L(join(t,"ignore"),`${e.ignore.join(`
|
|
461
461
|
`)}
|
|
462
|
-
`);}s(voe,"mergeSettings");async function t1(e,t,r,n,o,i,a=[]){await Toe(r,e),await xoe(r,e),await Poe(r,e),await Doe(r,e),await voe(r,e),await Noe(a,e);let l=BE(t.features,n),c=Aoe(t.pick,n,o),m=boe(t,i?.path),p=await zy(e),u=new Date().toISOString(),f=Da({...t,source:i?.source??t.source,...i?.version!==void 0?{version:i.version}:t.version!==void 0?{version:t.version}:{},features:l,pick:c,...i?.target!==void 0?{target:i.target}:t.target!==void 0?{target:t.target}:{},...m,...i?.as!==void 0?{as:i.as}:t.as!==void 0?{as:t.as}:{},updated_at:u,content_hash:p});return await L(join(e,"pack.yaml"),ac(stringify(f),"pack")),f}s(t1,"mergeIntoPack");H_();cs();async function r1(e){let t=[];try{let r=await readdir(e,{withFileTypes:!0});for(let n of r)n.isFile()&&Lf(n.name)&&t.push({relativePath:n.name,absolutePath:join(e,n.name)});}catch{return []}return t.sort((r,n)=>r.relativePath.localeCompare(n.relativePath)),t}s(r1,"collectPreservedRootFiles");is();ue();is();b();Hh();function $oe(e){return e.toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}s($oe,"sanitize");function joe(e){try{let r=new URL(e.replace(/^git\+/,"https://").replace(/^ssh:\/\/git@/,"https://")).pathname.split("/").filter(Boolean);if(r.length===0)return "repo";let n=r[r.length-1].replace(/\.git$/i,"");return r.length>=2?`${r[r.length-2].replace(/\.git$/i,"")}-${n}`:n}catch{return "repo"}}s(joe,"gitUrlLastSegments");function n1(e,t,r){let n;if(e.kind==="local"){let l=(e.localRoot??"local").split(/[/\\]/).filter(Boolean);n=l[l.length-1]??"local";}else e.kind==="github"&&e.org&&e.repo?n=`${e.org}-${e.repo}`:e.kind==="gitlab"&&e.org&&e.repo?n=`${e.org.replace(/\//g,"-")}-${e.repo}`:e.gitRemoteUrl?n=joe(e.gitRemoteUrl):n="extend";t.featureHint?n=`${n}-${t.featureHint}`:n=`${n}-pack`;let o=$oe(n)||"extend";if(!r.has(o))return o;let i=2;for(;r.has(`${o}-${i}`);)i++;return `${o}-${i}`}s(n1,"suggestExtendName");function o1(e){let{config:t,parsed:r,entryFeatures:n,nameOverride:o}=e,i=new Set(t.extends.map(a=>a.name));return o||n1(r,{featureHint:n.length===1?n[0]:void 0},i)}s(o1,"selectInstallEntryName");function s1(e){let t=e.trim();for(;t.startsWith("git+");){let c=t.lastIndexOf("#");t=(c<0?t.slice(4):t.slice(4,c)).trim();}let r=t.match(/^github:([^/]+)\/([^/@]+?)(?:\.git)?(?:@[^/]+)?$/i);if(r)return `github:${r[1].toLowerCase()}/${r[2].toLowerCase()}`;let n=t.match(/^gitlab:(.+?)\/([^/@]+?)(?:\.git)?(?:@[^/]+)?$/i);if(n)return `gitlab:${n[1].toLowerCase()}/${n[2].toLowerCase()}`;let o=t.match(/^https?:\/\/github\.com\/([^/]+)\/([^/?#]+?)(?:\.git)?(?:[/?#].*)?$/i);if(o)return `github:${o[1].toLowerCase()}/${o[2].toLowerCase()}`;let i=t.match(/^https?:\/\/gitlab\.com\/(.+?)\/([^/?#]+?)(?:\.git)?(?:[/?#].*)?$/i);if(i)return `gitlab:${i[1].toLowerCase()}/${i[2].toLowerCase()}`;let a=t.match(/^git@github\.com:([^/]+)\/([^/]+?)(?:\.git)?$/i);if(a)return `github:${a[1].toLowerCase()}/${a[2].toLowerCase()}`;let l=t.match(/^git@gitlab\.com:(.+?)\/([^/]+?)(?:\.git)?$/i);return l?`gitlab:${l[1].toLowerCase()}/${l[2].toLowerCase()}`:null}s(s1,"canonicalRemoteIdentity");function Uoe(e){return e.kind==="github"&&e.org&&e.repo?`github:${e.org.toLowerCase()}/${e.repo.toLowerCase()}`:e.kind==="gitlab"&&e.org&&e.repo?`gitlab:${e.org.toLowerCase()}/${e.repo.toLowerCase()}`:e.gitRemoteUrl?s1(e.gitRemoteUrl):null}s(Uoe,"parsedSourceIdentity");function i1(e,t){let r=Uoe(t);if(r===null)return null;for(let n of e){let o=s1(n.source);if(o!==null&&o===r)return n.name}return null}s(i1,"findExistingInstallName");function KE(e,t){if(e.length!==t.length)return false;let r=[...e].sort(),n=[...t].sort();for(let o=0;o<r.length;o++)if(r[o]!==n[o])return false;return true}s(KE,"sameFeatureSet");function a1(e){let{manifest:t,parsed:r,entryFeatures:n,yamlTarget:o,explicitAs:i}=e,a=i1(t,r);if(a===null)return null;let l=t.find(c=>c.name===a);return l.target!==o||l.as!==i||!KE(l.features,n)?null:l.name}s(a1,"pickReuseEntryName");var Woe=s(e=>!e.includes("/")&&!e.includes("\\")&&!e.includes("\0")&&e!=="."&&e!=="..","isSafeInstallName"),c1=z$1.object({name:z$1.string().min(1).refine(Woe,{message:'install name must not contain path separators, NUL, or "."/".." segments'}),source:z$1.string().min(1),version:z$1.string().optional(),source_kind:z$1.enum(["github","gitlab","git","local"]),features:z$1.array(Cc).min(1),pick:Np.optional(),target:wr.optional(),path:z$1.string().optional(),paths:z$1.array(z$1.string().min(1)).min(1).optional(),as:Km.optional(),refreshed_at:z$1.string().min(1).optional(),original_ref:z$1.string().optional(),accepted_elevated:z$1.array(z$1.enum(["hooks","permissions","mcp"])).min(1).optional()}),Hoe=z$1.object({version:z$1.literal(1),installs:z$1.array(c1).default([])});function zoe(e,t){return e.source===t.source&&e.target===t.target&&e.as===t.as&&KE(e.features,t.features)}s(zoe,"sameInstallIdentity");function WE(e){return join(e,"installs.yaml")}s(WE,"manifestPath");async function er(e){let t=await I(WE(e));if(t===null)return [];try{return Hoe.parse(parse(t)).installs.map(r=>Da(r))}catch{return []}}s(er,"readInstallManifest");async function Yy(e,t){let r=Da(t),o=(await er(e)).filter(i=>i.name!==r.name&&!zoe(i,r));o.push(r),await L(WE(e),ac(stringify({version:1,installs:o.sort((i,a)=>i.name.localeCompare(a.name))}),"installs"));}s(Yy,"upsertInstallManifestEntry");async function m1(e,t){let r=await er(e),n=r.filter(o=>o.name!==t);return n.length===r.length?false:(await L(WE(e),ac(stringify({version:1,installs:n.sort((o,i)=>o.name.localeCompare(i.name))}),"installs")),true)}s(m1,"removeInstallManifestEntry");function p1(e){return Da(c1.parse({name:e.name,source:e.source,version:e.version,source_kind:e.sourceKind,features:e.features,pick:e.pick,target:e.target,path:e.path,paths:e.paths,as:e.as,refreshed_at:e.refreshed_at,original_ref:e.originalRef,accepted_elevated:e.acceptedElevated}))}s(p1,"buildInstallManifestEntry");b();function Joe(e){return e?{path:e,paths:void 0}:{path:void 0,paths:void 0}}s(Joe,"pathScope");function Yoe(e,t){let r=new Set(t.skillNames),n=new Set(t.ruleSlugs),o=new Set(t.commandNames),i=new Set(t.agentNames);return {...e,skills:e.skills.filter(a=>r.has(a.name)),rules:e.rules.filter(a=>n.has(St(a))),commands:e.commands.filter(a=>o.has(a.name)),agents:e.agents.filter(a=>i.has(a.name))}}s(Yoe,"applySelection");async function u1(e){let{canonicalDir:t,packName:r,narrowed:n,selected:o,sourceForYaml:i,version:a,sourceKind:l,entryFeatures:c,pick:m,yamlTarget:p,pathInRepo:u,manualAs:f,renameExistingPack:g,sourceType:h,contentRoot:y,forceFreshMaterialize:_,originalRef:R,acceptedElevated:k}=e,w=join(t,"packs"),D=Yoe(n,o),v=y?await r1(y):[],K=new Date().toISOString(),ee=p!==void 0?wr.parse(p):void 0,se=_?null:await lB(w,i,{target:ee,as:f,features:c}),Y=r,F=c,te=m,De=u,Dt;if(se){let be=se.packDir,tt=se.meta;if(g&&se.name!==r){let Rt=join(w,r);if(await j(Rt))throw new Error(`Auto-generated pack name "${r}" collides with an existing incompatible pack. Use --name to choose a different pack name.`);await rename(se.packDir,Rt),be=Rt,tt={...se.meta,name:r};}let mt=await t1(be,tt,D,c,m,{source:i,...a!==void 0?{version:a}:{},...ee!==void 0?{target:ee}:{},...u?{path:u}:{},...f!==void 0?{as:f}:{}},v);Y=mt.name,F=mt.features,te=mt.pick,De=mt.path,Dt=mt.paths,S.success(`Updated pack "${mt.name}" in .agentsmesh/packs/.`);}else {if(!_&&await wa(join(w,r)))throw new Error(`Auto-generated pack name "${r}" collides with an existing incompatible pack. Use --name to choose a different pack name.`);await e1(w,r,D,{name:r,source:i,...a!==void 0&&{version:a},source_kind:l,installed_at:K,updated_at:K,features:c,...m!==void 0&&{pick:m},...ee!==void 0&&{target:ee},...Joe(u),...f!==void 0&&{as:f}},h!==void 0?{source_type:h}:{},v),S.success(`Installed pack "${r}" to .agentsmesh/packs/.`);}await Yy(t,p1({name:Y,source:i,version:a,sourceKind:l,features:F,pick:te,target:ee,path:De,paths:Dt,as:f,originalRef:R,acceptedElevated:k})),l!=="local"&&await vO(i);}s(u1,"installAsPack");function d1(e,t,r){if(!r?.features&&!r?.pick)return {narrowed:e,discoveredFeatures:t};let n=up(e,{scopedFeatures:r.features,implicitPick:r.pick});return {narrowed:n,discoveredFeatures:Qn(n)}}s(d1,"applyReplayInstallScope");function f1(e,t){let r=[];for(let n of e.skillNames)r.push({kind:"skill",name:n,path:t});for(let n of e.ruleSlugs)r.push({kind:"rule",name:n,path:t});for(let n of e.commandNames)r.push({kind:"command",name:n,path:t});for(let n of e.agentNames)r.push({kind:"agent",name:n,path:t});return r}s(f1,"buildInstalledList");function g1(e,t,r,n,o){let i=[];for(let a of e)o.skillNames.includes(a.name)||i.push({kind:"skill",name:a.name,reason:"conflict"});for(let a of t){let l=St(a);o.ruleSlugs.includes(l)||i.push({kind:"rule",name:l,reason:"conflict"});}for(let a of r)o.commandNames.includes(a.name)||i.push({kind:"command",name:a.name,reason:"conflict"});for(let a of n)o.agentNames.includes(a.name)||i.push({kind:"agent",name:a.name,reason:"conflict"});return i}s(g1,"buildSkippedList");kL();var Xoe=["hooks","permissions","mcp"];function h1(e,t){let r=new Set(t?.acceptedElevated??[]);return {acceptHooks:e.acceptHooks||r.has("hooks"),acceptPermissions:e.acceptPermissions||r.has("permissions"),acceptMcp:e.acceptMcp||r.has("mcp")}}s(h1,"resolveElevatedConsent");function y1(e,t){let r={hooks:t.acceptHooks,permissions:t.acceptPermissions,mcp:t.acceptMcp},n=Xoe.filter(o=>e[o]!==null&&r[o]);return n.length>0?n:void 0}s(y1,"consentedArtifactsForManifest");function _1(e,t){return t?.originalRef!==void 0&&t.originalRef!==""?t.originalRef:e.rawRef!==""?e.rawRef:void 0}s(_1,"resolveOriginalRef");function S1(e,t){if(t.length===0)return e;let r=new Set(t);return e.filter(n=>!r.has(n))}s(S1,"featuresAfterStrip");async function R1(e){let{scope:t,force:r,dryRun:n,tty:o,useExtends:i,forceFreshMaterialize:a,nameOverride:l,explicitAs:c}=e,{config:m,context:p,parsed:u,sourceForYaml:f,version:g,pathInRepo:h,contentRoot:y,persisted:_}=e,{replay:R,prep:k,implicitPick:w,narrowed:D,discoveredFeatures:v,sourceType:K}=e,ee=h1({acceptHooks:e.acceptHooks,acceptPermissions:e.acceptPermissions,acceptMcp:e.acceptMcp},R),se=Wh(D,{sourceKind:u.kind,...ee});se.stripped.length>0&&S.warn(`[agentsmesh] Stripped ${se.stripped.join(", ")} from untrusted ${u.kind} source.
|
|
462
|
+
`);}s(voe,"mergeSettings");async function r1(e,t,r,n,o,i,a=[]){await Toe(r,e),await xoe(r,e),await Poe(r,e),await Doe(r,e),await voe(r,e),await Noe(a,e);let l=BE(t.features,n),c=Aoe(t.pick,n,o),m=boe(t,i?.path),p=await zy(e),u=new Date().toISOString(),f=Da({...t,source:i?.source??t.source,...i?.version!==void 0?{version:i.version}:t.version!==void 0?{version:t.version}:{},features:l,pick:c,...i?.target!==void 0?{target:i.target}:t.target!==void 0?{target:t.target}:{},...m,...i?.as!==void 0?{as:i.as}:t.as!==void 0?{as:t.as}:{},updated_at:u,content_hash:p});return await L(join(e,"pack.yaml"),lc(stringify(f),"pack")),f}s(r1,"mergeIntoPack");H_();cs();async function n1(e){let t=[];try{let r=await readdir(e,{withFileTypes:!0});for(let n of r)n.isFile()&&Lf(n.name)&&t.push({relativePath:n.name,absolutePath:join(e,n.name)});}catch{return []}return t.sort((r,n)=>r.relativePath.localeCompare(n.relativePath)),t}s(n1,"collectPreservedRootFiles");is();ue();is();b();Hh();function $oe(e){return e.toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}s($oe,"sanitize");function joe(e){try{let r=new URL(e.replace(/^git\+/,"https://").replace(/^ssh:\/\/git@/,"https://")).pathname.split("/").filter(Boolean);if(r.length===0)return "repo";let n=r[r.length-1].replace(/\.git$/i,"");return r.length>=2?`${r[r.length-2].replace(/\.git$/i,"")}-${n}`:n}catch{return "repo"}}s(joe,"gitUrlLastSegments");function o1(e,t,r){let n;if(e.kind==="local"){let l=(e.localRoot??"local").split(/[/\\]/).filter(Boolean);n=l[l.length-1]??"local";}else e.kind==="github"&&e.org&&e.repo?n=`${e.org}-${e.repo}`:e.kind==="gitlab"&&e.org&&e.repo?n=`${e.org.replace(/\//g,"-")}-${e.repo}`:e.gitRemoteUrl?n=joe(e.gitRemoteUrl):n="extend";t.featureHint?n=`${n}-${t.featureHint}`:n=`${n}-pack`;let o=$oe(n)||"extend";if(!r.has(o))return o;let i=2;for(;r.has(`${o}-${i}`);)i++;return `${o}-${i}`}s(o1,"suggestExtendName");function s1(e){let{config:t,parsed:r,entryFeatures:n,nameOverride:o}=e,i=new Set(t.extends.map(a=>a.name));return o||o1(r,{featureHint:n.length===1?n[0]:void 0},i)}s(s1,"selectInstallEntryName");function i1(e){let t=e.trim();for(;t.startsWith("git+");){let c=t.lastIndexOf("#");t=(c<0?t.slice(4):t.slice(4,c)).trim();}let r=t.match(/^github:([^/]+)\/([^/@]+?)(?:\.git)?(?:@[^/]+)?$/i);if(r)return `github:${r[1].toLowerCase()}/${r[2].toLowerCase()}`;let n=t.match(/^gitlab:(.+?)\/([^/@]+?)(?:\.git)?(?:@[^/]+)?$/i);if(n)return `gitlab:${n[1].toLowerCase()}/${n[2].toLowerCase()}`;let o=t.match(/^https?:\/\/github\.com\/([^/]+)\/([^/?#]+?)(?:\.git)?(?:[/?#].*)?$/i);if(o)return `github:${o[1].toLowerCase()}/${o[2].toLowerCase()}`;let i=t.match(/^https?:\/\/gitlab\.com\/(.+?)\/([^/?#]+?)(?:\.git)?(?:[/?#].*)?$/i);if(i)return `gitlab:${i[1].toLowerCase()}/${i[2].toLowerCase()}`;let a=t.match(/^git@github\.com:([^/]+)\/([^/]+?)(?:\.git)?$/i);if(a)return `github:${a[1].toLowerCase()}/${a[2].toLowerCase()}`;let l=t.match(/^git@gitlab\.com:(.+?)\/([^/]+?)(?:\.git)?$/i);return l?`gitlab:${l[1].toLowerCase()}/${l[2].toLowerCase()}`:null}s(i1,"canonicalRemoteIdentity");function Uoe(e){return e.kind==="github"&&e.org&&e.repo?`github:${e.org.toLowerCase()}/${e.repo.toLowerCase()}`:e.kind==="gitlab"&&e.org&&e.repo?`gitlab:${e.org.toLowerCase()}/${e.repo.toLowerCase()}`:e.gitRemoteUrl?i1(e.gitRemoteUrl):null}s(Uoe,"parsedSourceIdentity");function a1(e,t){let r=Uoe(t);if(r===null)return null;for(let n of e){let o=i1(n.source);if(o!==null&&o===r)return n.name}return null}s(a1,"findExistingInstallName");function KE(e,t){if(e.length!==t.length)return false;let r=[...e].sort(),n=[...t].sort();for(let o=0;o<r.length;o++)if(r[o]!==n[o])return false;return true}s(KE,"sameFeatureSet");function l1(e){let{manifest:t,parsed:r,entryFeatures:n,yamlTarget:o,explicitAs:i}=e,a=a1(t,r);if(a===null)return null;let l=t.find(c=>c.name===a);return l.target!==o||l.as!==i||!KE(l.features,n)?null:l.name}s(l1,"pickReuseEntryName");var Woe=s(e=>!e.includes("/")&&!e.includes("\\")&&!e.includes("\0")&&e!=="."&&e!=="..","isSafeInstallName"),m1=z$1.object({name:z$1.string().min(1).refine(Woe,{message:'install name must not contain path separators, NUL, or "."/".." segments'}),source:z$1.string().min(1),version:z$1.string().optional(),source_kind:z$1.enum(["github","gitlab","git","local"]),features:z$1.array(Oc).min(1),pick:Np.optional(),target:wr.optional(),path:z$1.string().optional(),paths:z$1.array(z$1.string().min(1)).min(1).optional(),as:Wm.optional(),refreshed_at:z$1.string().min(1).optional(),original_ref:z$1.string().optional(),accepted_elevated:z$1.array(z$1.enum(["hooks","permissions","mcp"])).min(1).optional()}),Hoe=z$1.object({version:z$1.literal(1),installs:z$1.array(m1).default([])});function zoe(e,t){return e.source===t.source&&e.target===t.target&&e.as===t.as&&KE(e.features,t.features)}s(zoe,"sameInstallIdentity");function WE(e){return join(e,"installs.yaml")}s(WE,"manifestPath");async function er(e){let t=await I(WE(e));if(t===null)return [];try{return Hoe.parse(parse(t)).installs.map(r=>Da(r))}catch{return []}}s(er,"readInstallManifest");async function Yy(e,t){let r=Da(t),o=(await er(e)).filter(i=>i.name!==r.name&&!zoe(i,r));o.push(r),await L(WE(e),lc(stringify({version:1,installs:o.sort((i,a)=>i.name.localeCompare(a.name))}),"installs"));}s(Yy,"upsertInstallManifestEntry");async function p1(e,t){let r=await er(e),n=r.filter(o=>o.name!==t);return n.length===r.length?false:(await L(WE(e),lc(stringify({version:1,installs:n.sort((o,i)=>o.name.localeCompare(i.name))}),"installs")),true)}s(p1,"removeInstallManifestEntry");function u1(e){return Da(m1.parse({name:e.name,source:e.source,version:e.version,source_kind:e.sourceKind,features:e.features,pick:e.pick,target:e.target,path:e.path,paths:e.paths,as:e.as,refreshed_at:e.refreshed_at,original_ref:e.originalRef,accepted_elevated:e.acceptedElevated}))}s(u1,"buildInstallManifestEntry");b();function Joe(e){return e?{path:e,paths:void 0}:{path:void 0,paths:void 0}}s(Joe,"pathScope");function Yoe(e,t){let r=new Set(t.skillNames),n=new Set(t.ruleSlugs),o=new Set(t.commandNames),i=new Set(t.agentNames);return {...e,skills:e.skills.filter(a=>r.has(a.name)),rules:e.rules.filter(a=>n.has(St(a))),commands:e.commands.filter(a=>o.has(a.name)),agents:e.agents.filter(a=>i.has(a.name))}}s(Yoe,"applySelection");async function d1(e){let{canonicalDir:t,packName:r,narrowed:n,selected:o,sourceForYaml:i,version:a,sourceKind:l,entryFeatures:c,pick:m,yamlTarget:p,pathInRepo:u,manualAs:f,renameExistingPack:g,sourceType:h,contentRoot:y,forceFreshMaterialize:_,originalRef:R,acceptedElevated:k}=e,w=join(t,"packs"),D=Yoe(n,o),v=y?await n1(y):[],K=new Date().toISOString(),ee=p!==void 0?wr.parse(p):void 0,se=_?null:await cB(w,i,{target:ee,as:f,features:c}),Y=r,F=c,te=m,De=u,Dt;if(se){let be=se.packDir,tt=se.meta;if(g&&se.name!==r){let Rt=join(w,r);if(await j(Rt))throw new Error(`Auto-generated pack name "${r}" collides with an existing incompatible pack. Use --name to choose a different pack name.`);await rename(se.packDir,Rt),be=Rt,tt={...se.meta,name:r};}let mt=await r1(be,tt,D,c,m,{source:i,...a!==void 0?{version:a}:{},...ee!==void 0?{target:ee}:{},...u?{path:u}:{},...f!==void 0?{as:f}:{}},v);Y=mt.name,F=mt.features,te=mt.pick,De=mt.path,Dt=mt.paths,S.success(`Updated pack "${mt.name}" in .agentsmesh/packs/.`);}else {if(!_&&await wa(join(w,r)))throw new Error(`Auto-generated pack name "${r}" collides with an existing incompatible pack. Use --name to choose a different pack name.`);await t1(w,r,D,{name:r,source:i,...a!==void 0&&{version:a},source_kind:l,installed_at:K,updated_at:K,features:c,...m!==void 0&&{pick:m},...ee!==void 0&&{target:ee},...Joe(u),...f!==void 0&&{as:f}},h!==void 0?{source_type:h}:{},v),S.success(`Installed pack "${r}" to .agentsmesh/packs/.`);}await Yy(t,u1({name:Y,source:i,version:a,sourceKind:l,features:F,pick:te,target:ee,path:De,paths:Dt,as:f,originalRef:R,acceptedElevated:k})),l!=="local"&&await FO(i);}s(d1,"installAsPack");function f1(e,t,r){if(!r?.features&&!r?.pick)return {narrowed:e,discoveredFeatures:t};let n=dp(e,{scopedFeatures:r.features,implicitPick:r.pick});return {narrowed:n,discoveredFeatures:Qn(n)}}s(f1,"applyReplayInstallScope");function g1(e,t){let r=[];for(let n of e.skillNames)r.push({kind:"skill",name:n,path:t});for(let n of e.ruleSlugs)r.push({kind:"rule",name:n,path:t});for(let n of e.commandNames)r.push({kind:"command",name:n,path:t});for(let n of e.agentNames)r.push({kind:"agent",name:n,path:t});return r}s(g1,"buildInstalledList");function h1(e,t,r,n,o){let i=[];for(let a of e)o.skillNames.includes(a.name)||i.push({kind:"skill",name:a.name,reason:"conflict"});for(let a of t){let l=St(a);o.ruleSlugs.includes(l)||i.push({kind:"rule",name:l,reason:"conflict"});}for(let a of r)o.commandNames.includes(a.name)||i.push({kind:"command",name:a.name,reason:"conflict"});for(let a of n)o.agentNames.includes(a.name)||i.push({kind:"agent",name:a.name,reason:"conflict"});return i}s(h1,"buildSkippedList");kL();var Xoe=["hooks","permissions","mcp"];function y1(e,t){let r=new Set(t?.acceptedElevated??[]);return {acceptHooks:e.acceptHooks||r.has("hooks"),acceptPermissions:e.acceptPermissions||r.has("permissions"),acceptMcp:e.acceptMcp||r.has("mcp")}}s(y1,"resolveElevatedConsent");function _1(e,t){let r={hooks:t.acceptHooks,permissions:t.acceptPermissions,mcp:t.acceptMcp},n=Xoe.filter(o=>e[o]!==null&&r[o]);return n.length>0?n:void 0}s(_1,"consentedArtifactsForManifest");function S1(e,t){return t?.originalRef!==void 0&&t.originalRef!==""?t.originalRef:e.rawRef!==""?e.rawRef:void 0}s(S1,"resolveOriginalRef");function R1(e,t){if(t.length===0)return e;let r=new Set(t);return e.filter(n=>!r.has(n))}s(R1,"featuresAfterStrip");async function I1(e){let{scope:t,force:r,dryRun:n,tty:o,useExtends:i,forceFreshMaterialize:a,nameOverride:l,explicitAs:c}=e,{config:m,context:p,parsed:u,sourceForYaml:f,version:g,pathInRepo:h,contentRoot:y,persisted:_}=e,{replay:R,prep:k,implicitPick:w,narrowed:D,discoveredFeatures:v,sourceType:K}=e,ee=y1({acceptHooks:e.acceptHooks,acceptPermissions:e.acceptPermissions,acceptMcp:e.acceptMcp},R),se=Wh(D,{sourceKind:u.kind,...ee});se.stripped.length>0&&S.warn(`[agentsmesh] Stripped ${se.stripped.join(", ")} from untrusted ${u.kind} source.
|
|
463
463
|
These artifacts control your tool settings (shell hooks, granted permissions, MCP launch specs).
|
|
464
|
-
To accept them explicitly, re-run with: ${se.stripped.map(ns=>`--accept-${ns}`).join(" ")} (or --accept-elevated for all three).`);let{narrowed:Y,discoveredFeatures:F}=
|
|
464
|
+
To accept them explicitly, re-run with: ${se.stripped.map(ns=>`--accept-${ns}`).join(" ")} (or --accept-elevated for all three).`);let{narrowed:Y,discoveredFeatures:F}=f1(se.canonical,R1(v,se.stripped),R);if(!$z(Y))throw new Error(w||k.scopedFeatures?"No resources match the install path or implicit selection (check pick names exist at that path).":"No supported resources found to install (skills, rules, commands, agents).");let te=await jz(Y,r,n,o),De=await Uz(Y,r,n,o),Dt=await Bz(Y,r,n,o),be=await Kz(Y,r,n,o),tt={skills:te.length,rules:De.length,commands:Dt.length,agents:be.length},{canonical:mt}=await Bt(m,p.configDir,{},p.canonicalDir),Rt=!r&&!n&&o?await Wz(mt,{skills:te,rules:De,commands:Dt,agents:be}):{skillNames:te.map(ns=>ns.name),ruleSlugs:De.map(ns=>St(ns)),commandNames:Dt.map(ns=>ns.name),agentNames:be.map(ns=>ns.name)};Jz({selected:Rt,discoveredFeatures:F,preConflict:tt});let bi=R?.features??Vz(F,Rt);if(bi.length===0)throw new Error("No features left to install after selection.");let C_=Hz(R?.pick,Rt)??_.pick??zz({pathInRepo:_.pathInRepo??h,implicitPick:w,preConflictCounts:tt,selected:Rt}),VC=await er(p.canonicalDir),wp=l1({manifest:VC,parsed:u,entryFeatures:bi,yamlTarget:k.yamlTarget,explicitAs:c}),bp=s1({config:m,parsed:u,entryFeatures:bi,nameOverride:l||wp||""}),Ap=g1(Rt,bp),O_=h1(te,De,Dt,be,Rt),iY=S1(u,R),aY=_1(Y,ee);if(i){if(await qz({configDir:p.configDir,config:m,entryArgs:{name:bp,source:f,version:g,features:bi,path:_.pathInRepo,pick:C_,yamlTarget:k.yamlTarget,as:c},dryRun:n}),n)return {installed:Ap,skipped:O_}}else {if(n)return S.info(`[dry-run] Would install pack "${bp}" to ${t==="global"?"~/.agentsmesh/packs/.":".agentsmesh/packs/."}`),{installed:Ap,skipped:O_};await d1({canonicalDir:p.canonicalDir,packName:bp,narrowed:Y,selected:Rt,sourceForYaml:f,version:g,sourceKind:u.kind,entryFeatures:bi,pick:C_,yamlTarget:k.yamlTarget,pathInRepo:_.pathInRepo,manualAs:c,renameExistingPack:l===""&&wp===null,sourceType:K,contentRoot:y,forceFreshMaterialize:a,originalRef:iY,acceptedElevated:aY});}return await hp("install",t,p.rootBase),{installed:Ap,skipped:O_}}s(I1,"executeRunInstallPoolsAndWrite");function k1(e,t){let r=t.resolved.length,n=r===1?"link":"links",o=[`Entity "${t.entityName}" (${t.entityKind}) has ${r} broken ${n}:`];for(let i of t.resolved)o.push(` - ${i.link.path} (${i.classification})`);o.push(""),e.write(`${o.join(`
|
|
465
465
|
`)}
|
|
466
|
-
`);}s(k1,"writeBanner");async function L1(e,t,r){let n=[];for(let o of e){if(o.resolved.length===0)continue;if(t.bypass){k1(r,o),n.push({entityKind:o.entityKind,entityName:o.entityName,action:"leave-with-warnings"});continue}k1(r,o);let i=(await r.ask("Action: [i]nclude resolvable as supporting files / [l]eave with warnings / [a]bort install ")).trim().toLowerCase();if(i==="i"){n.push({entityKind:o.entityKind,entityName:o.entityName,action:"include-resolvable"});continue}if(i==="l"){n.push({entityKind:o.entityKind,entityName:o.entityName,action:"leave-with-warnings"});continue}return {decisions:[],aborted:true}}return {decisions:n,aborted:false}}s(L1,"runBrokenLinkPrompt");var zE=["skills","agents","commands","rules"],VE={skills:"skill",agents:"agent",commands:"command",rules:"rule"},O1={skills:"skills",agents:"agents",commands:"commands",rules:"rules"};function
|
|
466
|
+
`);}s(k1,"writeBanner");async function L1(e,t,r){let n=[];for(let o of e){if(o.resolved.length===0)continue;if(t.bypass){k1(r,o),n.push({entityKind:o.entityKind,entityName:o.entityName,action:"leave-with-warnings"});continue}k1(r,o);let i=(await r.ask("Action: [i]nclude resolvable as supporting files / [l]eave with warnings / [a]bort install ")).trim().toLowerCase();if(i==="i"){n.push({entityKind:o.entityKind,entityName:o.entityName,action:"include-resolvable"});continue}if(i==="l"){n.push({entityKind:o.entityKind,entityName:o.entityName,action:"leave-with-warnings"});continue}return {decisions:[],aborted:true}}return {decisions:n,aborted:false}}s(L1,"runBrokenLinkPrompt");var zE=["skills","agents","commands","rules"],VE={skills:"skill",agents:"agent",commands:"command",rules:"rule"},O1={skills:"skills",agents:"agents",commands:"commands",rules:"rules"};function mc(e){return {skills:[],agents:[],commands:[],rules:[],aborted:e}}s(mc,"emptySelection");function E1(e){return {skills:[...e.skills],agents:[...e.agents],commands:[...e.commands],rules:[...e.rules],aborted:false}}s(E1,"selectAll");function C1(e,t,r){let n=[`Found in ${t}:`];for(let o of zE){let i=r[o];if(i.length===0)continue;let a=i.length===1?VE[o]:O1[o];n.push(` - ${i.length} ${a}`);}n.push(""),e.write(`${n.join(`
|
|
467
467
|
`)}
|
|
468
|
-
`);}s(C1,"writeBanner");async function Qoe(e,t,r){if(r.length===0)return {selected:[],aborted:false};let n=O1[t],o=(await e.ask(`Install all ${r.length} ${n}? [y/n/c] `)).trim().toLowerCase();if(o==="y")return {selected:[...r],aborted:false};if(o==="n")return {selected:[],aborted:false};if(o!=="c")return {selected:[],aborted:true};let i=VE[t],a=[];for(let l=0;l<r.length;l++){let c=r[l],m=(await e.ask(`Install ${i} "${c}"? [y/N/a/q] `)).trim().toLowerCase();if(m==="y"){a.push(c);continue}if(!(m===""||m==="n")){if(m==="a"){for(let p=l;p<r.length;p++)a.push(r[p]);return {selected:a,aborted:false}}return m==="q"?{selected:a,aborted:false}:{selected:[],aborted:true}}}return {selected:a,aborted:false}}s(Qoe,"walkType");function qoe(e){let t=null;for(let r of zE)for(let n of e[r]){if(t!==null)return null;t={kind:r,id:n};}return t}s(qoe,"findSingleEntity");async function Zoe(e,t){let r=VE[t.kind],n=(await e.ask(`Install ${r} "${t.id}"? [y/N] `)).trim().toLowerCase();return n==="y"?{...
|
|
468
|
+
`);}s(C1,"writeBanner");async function Qoe(e,t,r){if(r.length===0)return {selected:[],aborted:false};let n=O1[t],o=(await e.ask(`Install all ${r.length} ${n}? [y/n/c] `)).trim().toLowerCase();if(o==="y")return {selected:[...r],aborted:false};if(o==="n")return {selected:[],aborted:false};if(o!=="c")return {selected:[],aborted:true};let i=VE[t],a=[];for(let l=0;l<r.length;l++){let c=r[l],m=(await e.ask(`Install ${i} "${c}"? [y/N/a/q] `)).trim().toLowerCase();if(m==="y"){a.push(c);continue}if(!(m===""||m==="n")){if(m==="a"){for(let p=l;p<r.length;p++)a.push(r[p]);return {selected:a,aborted:false}}return m==="q"?{selected:a,aborted:false}:{selected:[],aborted:true}}}return {selected:a,aborted:false}}s(Qoe,"walkType");function qoe(e){let t=null;for(let r of zE)for(let n of e[r]){if(t!==null)return null;t={kind:r,id:n};}return t}s(qoe,"findSingleEntity");async function Zoe(e,t){let r=VE[t.kind],n=(await e.ask(`Install ${r} "${t.id}"? [y/N] `)).trim().toLowerCase();return n==="y"?{...mc(false),[t.kind]:[t.id]}:mc(!(n===""||n==="n"))}s(Zoe,"runSingleEntityPrompt");async function w1(e,t,r){if(t.bypass)return E1(e);let n=e.skills.length+e.agents.length+e.commands.length+e.rules.length;if(n===0)return mc(false);if(n===1){let a=qoe(e);if(a!==null)return C1(r,t.packName,e),Zoe(r,a)}C1(r,t.packName,e);let o=(await r.ask("Install [a]ll, [n]one, or [s]elect per type? [a/n/s] ")).trim().toLowerCase();if(o==="a")return E1(e);if(o==="n")return mc(false);if(o!=="s")return mc(true);let i={skills:[],agents:[],commands:[],rules:[]};for(let a of zE){let{selected:l,aborted:c}=await Qoe(r,a,e[a]);if(c)return mc(true);i[a]=l;}return {...i,aborted:false}}s(w1,"runBulkPrompt");ue();function nse(e,t,r){let n=[];for(let o of Ky(e))o.destination===t&&n.push({offset:o.destinationOffset,length:o.destinationLength,replacement:r});return n}s(nse,"buildLinkRewrites");function A1(e,t,r){e.warn(`Broken link in ${t.entityKind} "${t.entityName}": ${r.link.path} (${r.classification})`);}s(A1,"warnLink");function ose(e){let t=new Map;for(let n of e){let o=basename(n.resolvedRelative),i=t.get(o)??new Set;i.add(n.resolvedRelative),t.set(o,i);}let r=new Map;for(let[n,o]of t){if(o.size===1){let i=[...o][0];r.set(i,`references/${n}`);continue}for(let i of o){let a=i.replaceAll("/","-");r.set(i,`references/${a}`);}}return r}s(ose,"allocateSupportingFileNames");function b1(e,t,r){return e.find(n=>n.entityKind===t&&n.entityName===r)}s(b1,"findEntity");async function sse(e,t,r,n){let o=[...t],i=new Set(o.map(l=>l.relativePath)),a=new Set;for(let l of r){if(a.has(l.resolvedRelative))continue;a.add(l.resolvedRelative);let c=n.get(l.resolvedRelative);if(c===void 0||i.has(c))continue;i.add(c);let m=posix.join(e.replaceAll("\\","/"),l.resolvedRelative);o.push({relativePath:c,absolutePath:m,content:await readFile(m,"utf-8")});}return o}s(sse,"buildSupportingFiles");async function ise(e,t,r,n){let o=r.resolved.filter(p=>p.classification==="resolvable-outside"),i=ose(o),a=await sse(e,t.supportingFiles,o,i),l=[],c=new Set;for(let p of r.resolved)if(p.classification==="resolvable-outside"){if(c.has(p.link.raw))continue;let u=i.get(p.resolvedRelative);if(u===void 0)continue;c.add(p.link.raw);let f=`./${u}${p.anchor}`;l.push(...nse(t.body,p.link.raw,f));}else A1(n,r,p);let m=kz(t.body,l);return {...t,body:m,supportingFiles:a}}s(ise,"applySkillDecision");async function T1(e){let{contentRoot:t,aggregate:r,decisions:n,logger:o}=e;if(n.length===0)return r;let i=new Set;for(let l of n)l.entityKind==="skill"&&l.action==="include-resolvable"&&i.add(l.entityName);let a=[];for(let l of r.skills){let c=i.has(l.name)?b1(r.brokenLinks,"skill",l.name):void 0;a.push(c?await ise(t,l,c,o):l);}for(let l of n){if(l.entityKind==="skill"&&l.action==="include-resolvable")continue;let c=b1(r.brokenLinks,l.entityKind,l.entityName);if(c)for(let m of c.resolved)A1(o,c,m);}return {...r,skills:a}}s(T1,"applyBrokenLinkDecisions");var Sp=class extends Error{static{s(this,"InstallAbortError");}aborted=true;constructor(t){super(t),this.name="InstallAbortError";}};function lse(){return {ask:s(e=>va(e),"ask"),write:s(e=>process.stdout.write(e),"write")}}s(lse,"defaultAdapter");function cse(e){return {skills:e.skills.map(t=>t.name),agents:e.agents.map(t=>t.name),commands:e.commands.map(t=>t.name),rules:e.rules.map(t=>St(t))}}s(cse,"bulkCandidatesFrom");function x1(e,t){let r=new Set(t.skills),n=new Set(t.agents),o=new Set(t.commands),i=new Set(t.rules);return {skills:e.skills.filter(a=>r.has(a.name)),agents:e.agents.filter(a=>n.has(a.name)),commands:e.commands.filter(a=>o.has(a.name)),rules:e.rules.filter(a=>i.has(St(a))),mcp:null,permissions:null,hooks:null,ignore:[]}}s(x1,"filterCanonical");function mse(e){let t=[];return e.skills.length>0&&t.push("skills"),e.rules.length>0&&t.push("rules"),e.commands.length>0&&t.push("commands"),e.agents.length>0&&t.push("agents"),t}s(mse,"discoveredFeaturesOf");async function pse(e){let t=e.adapter??lse(),r=await L1(e.aggregate.brokenLinks,{bypass:e.bypass},t);if(r.aborted)throw new Sp("User aborted at broken-link prompt.");let n=[...r.decisions],o=await T1({contentRoot:e.contentRoot,aggregate:e.aggregate,decisions:n,logger:S}),i=cse(o);if(i.skills.length+i.agents.length+i.commands.length+i.rules.length===0)return {aggregate:o,narrowed:x1(o,{skills:[],agents:[],commands:[],rules:[]}),discoveredFeatures:[]};let l=await w1(i,{packName:e.displayName,bypass:e.bypass},t);if(l.aborted)throw new Sp("User aborted at bulk-select prompt.");let c=x1(o,l);return {aggregate:o,narrowed:c,discoveredFeatures:mse(c)}}s(pse,"runSkillPackPromptFlow");function use(e){return basename(e)||"install source"}s(use,"displayNameForContentRoot");async function P1(e){if(!e.discovery.aggregate)return {aborted:false};try{let t=await pse({contentRoot:e.contentRoot,aggregate:e.discovery.aggregate,narrowed:e.discovery.narrowed,bypass:e.bypass,displayName:use(e.contentRoot)});return {aborted:!1,narrowed:t.narrowed,discoveredFeatures:t.discoveredFeatures}}catch(t){if(t instanceof Sp)return S.warn(t.message),{aborted:true};throw t}}s(P1,"runPromptFlowWithAbort");async function D1(e){let{discovery:t,installReport:r,persisted:n,parsed:o,sourceForYaml:i,version:a,pathInRepo:l,contentRoot:c,config:m,context:p,dryRun:u,force:f,useExtends:g,forceFreshMaterialize:h,explicitAs:y,nameOverride:_,acceptHooks:R,acceptPermissions:k,acceptMcp:w,scope:D,sourceArg:v,replay:K}=e,ee=process.stdin.isTTY,{prep:se,implicitPick:Y}=t,{narrowed:F,discoveredFeatures:te}=t;try{let De=await P1({discovery:t,contentRoot:c,bypass:f||u||!ee});if(De.aborted)return {exitCode:130,data:{source:v,mode:"install",installed:[],skipped:[],dryRun:u}};if(F=De.narrowed??F,te=De.discoveredFeatures??te,te.length===0&&r.brokenResources.length>0){let be=r.brokenResources.map(tt=>` - ${tt.path}: ${tt.reason}`).join(`
|
|
469
469
|
`);throw new Error(`No installable resources after skipping invalid files (${r.brokenResources.length}):
|
|
470
470
|
${be}
|
|
471
|
-
Fix the frontmatter in the source files (most often: unquoted scalars containing colons or square brackets), or narrow --path to a subdirectory that excludes them.`)}let Dt=await
|
|
471
|
+
Fix the frontmatter in the source files (most often: unquoted scalars containing colons or square brackets), or narrow --path to a subdirectory that excludes them.`)}let Dt=await I1({scope:D,force:f,dryRun:u,tty:ee,useExtends:g,forceFreshMaterialize:h,nameOverride:_,explicitAs:y,acceptHooks:R,acceptPermissions:k,acceptMcp:w,config:m,context:p,parsed:o,sourceForYaml:i,version:a,pathInRepo:l,contentRoot:c,persisted:n,replay:K,prep:se,implicitPick:Y,narrowed:F,discoveredFeatures:te,sourceType:t.layout?Tz(t.layout):void 0});return {exitCode:0,data:{source:v,mode:"install",installed:Dt.installed,skipped:Dt.skipped,dryRun:u,...r.brokenResources.length>0?{brokenResources:r.brokenResources}:{}}}}finally{se.cleanup&&await se.cleanup();}}s(D1,"runSinglePackInstall");async function N1(e,t,r){let n=[],o=[],i=0;for(let a of e)try{let l=await t(a);n.push(...l.installed),o.push(...l.skipped),i+=1;}catch(l){let c=l instanceof Error?l.message:String(l);r.subPackFailures.push({name:a.name,path:a.path??".",error:c});}return {exitCode:i>0?0:1,installed:n,skipped:o}}s(N1,"runInstallMarketplace");async function v1(e){let{pickerResult:t,installReport:r,sourceArg:n,projectRoot:o,dryRun:i,force:a,useExtends:l,nameOverride:c,replay:m,recurseInstall:p}=e;if(t.isMarketplace&&t.targets.length>0){let u=await N1(t.targets,async f=>(await p({force:!0,"dry-run":i,path:f.path??"",as:f.as??"",target:f.target??"",name:f.name,extends:l},[n],o,{})).data,r);return {exitCode:u.exitCode,data:{source:n,mode:"install",installed:u.installed,skipped:u.skipped,dryRun:i,...r.brokenResources.length>0?{brokenResources:r.brokenResources}:{},...r.subPackFailures.length>0?{subPackFailures:r.subPackFailures}:{}}}}if(!t.isMarketplace&&t.targets.length===1){let u=t.targets[0];return p({force:a,"dry-run":i,path:u.path??"",as:u.as??"",target:u.target??"",name:c,extends:l},[n],o,m??{})}return null}s(v1,"routePickerResult");nt();b();ue();async function fse(e){let t=await er(e.canonicalDir);if(t.length===0){S.info("No recorded installs found in .agentsmesh/installs.yaml.");return}let r=[];for(let n of t){let o=join(e.canonicalDir,"packs",n.name);await j(o)||r.push(n);}if(r.length===0){S.info("All recorded packs are already installed.");return}for(let n of r)await e.reinstall(n);S.success(`Reinstalled ${r.length} pack(s) from .agentsmesh/installs.yaml.`);}s(fse,"syncInstalledPacks");async function F1(e){return e.sync?(await fse({canonicalDir:e.canonicalDir,reinstall:e.reinstall}),true):false}s(F1,"maybeRunInstallSync");async function M1(e){let{projectRoot:t,sync:r,dryRun:n,force:o,scope:i,recurseInstall:a}=e;if(!r)return;let{context:l}=await _e(t,i),c=[],m=[];if(await F1({sync:r,canonicalDir:l.canonicalDir,reinstall:s(async u=>{let f=u.paths&&u.paths.length>0?u.paths:[u.path];for(let g of f){let h=await a({...o?{force:true}:{},...n?{"dry-run":true}:{},...i==="global"?{global:true}:{},name:u.name,...u.target?{target:u.target}:{},...g?{path:g}:{},...u.as?{as:u.as}:{}},[u.source],t,{features:u.features,pick:u.pick,...u.original_ref!==void 0?{originalRef:u.original_ref}:{},...u.accepted_elevated!==void 0?{acceptedElevated:u.accepted_elevated}:{}});c.push(...h.data.installed),m.push(...h.data.skipped);}},"reinstall")}))return {exitCode:0,data:{source:"",mode:"sync",installed:c,skipped:m,dryRun:n}}}s(M1,"handleSync");function G1(){return {brokenResources:[],subPackFailures:[]}}s(G1,"createInstallReport");function yse(e,t){if(!e)return;let r=normalize(e).replace(/\\/g,"/");if(r===".."||r.startsWith("../"))throw new Error(`Install --path "${t}" escapes the source root. Path must stay within the source.`)}s(yse,"assertPathStaysInRepo");async function $1(e){let t=await M1(e);if(t)return t;let{projectRoot:r,replay:n,dryRun:o,force:i,useExtends:a,all:l,forceFreshMaterialize:c,explicitPath:m,explicitTarget:p,explicitAs:u,nameOverride:f,acceptHooks:g,acceptPermissions:h,acceptMcp:y,scope:_,sourceArg:R}=e;if(!R)throw new Error("Missing source. Usage: agentsmesh install <source> [--path ...] [--target ...]");let k=process.stdin.isTTY;if(!k&&!i&&!o)throw new Error("Non-interactive terminal: use --force or --dry-run for agentsmesh install.");let{config:w,context:D}=await _e(r,_);await Ve(w,r);let v=await bE(R,D.configDir,m);if(v.kind!=="local"&&!await MH())throw new Error("git is required for remote installs. Please install git and try again.");let{resolvedPath:K,sourceForYaml:ee,version:se}=await $H(v,R),Y=v.pathInRepo.replaceAll("\\","/").replace(/^\/+|\/+$/g,"");yse(Y,v.pathInRepo);let F=Y?join(K,Y):K;if(!await j(F))throw new Error(`Install path does not exist: ${F}`);let te=await Mz({as:u,contentRoot:F,pathInRepo:Y}),De=G1(),Dt={onParseError:s((tt,mt)=>{De.brokenResources.push({path:mt,kind:"frontmatter",reason:tt.message});},"onParseError")},be=await xz({resolvedPath:K,contentRoot:F,pathInRepo:Y,explicitTarget:p,explicitAs:u,replayPick:n?.pick,parseOpts:Dt});if(be.layout&&!u&&!p&&!m){let tt=vz({layout:be.layout,sourceName:f||(v.org&&v.repo?`${v.org}-${v.repo}`:"source"),sourceForYaml:ee,explicitPath:m,explicitAs:u,explicitTarget:p,all:l,force:i,tty:k}),mt=await v1({pickerResult:tt,installReport:De,sourceArg:R,projectRoot:r,dryRun:o,force:i,useExtends:a,nameOverride:f,replay:n,recurseInstall:e.recurseInstall});if(mt!==null)return mt}return D1({discovery:be,installReport:De,persisted:te,parsed:v,sourceForYaml:ee,version:se,pathInRepo:Y,contentRoot:F,config:w,context:D,dryRun:o,force:i,useExtends:a,forceFreshMaterialize:c,explicitAs:u,nameOverride:f,acceptHooks:g,acceptPermissions:h,acceptMcp:y,scope:_,sourceArg:R,replay:n})}s($1,"runInstallLocked");async function pc(e,t,r,n){let{sync:o,dryRun:i,force:a,useExtends:l,all:c,forceFreshMaterialize:m,explicitPath:p,explicitTarget:u,explicitAs:f,nameOverride:g,acceptHooks:h,acceptPermissions:y,acceptMcp:_}=FH(e),R=e.global===true?"global":"project",k=t[0]?.trim(),w;if(n===void 0){let{context:D}=await _e(r,R);w=await pp(D.canonicalDir);}try{return await $1({args:t,projectRoot:r,replay:n,sync:o,dryRun:i,force:a,useExtends:l,all:c,forceFreshMaterialize:m,explicitPath:p,explicitTarget:u,explicitAs:f,nameOverride:g,acceptHooks:h,acceptPermissions:y,acceptMcp:_,scope:R,sourceArg:k,recurseInstall:pc})}finally{await w?.();}}s(pc,"runInstall");async function j1(e,t,r){return pc(e,t,r)}s(j1,"runInstall");function U1(e){let{data:t}=e;if(!(t.mode==="sync"&&t.installed.length===0&&t.skipped.length===0)){if(t.installed.length>0&&!t.dryRun){let n=[...new Set(t.installed.map(o=>o.kind))].map(o=>{let i=t.installed.filter(a=>a.kind===o).length;return `${i} ${o}${i>1?"s":""}`}).join(", ");G.success(`Installed ${n}.`),G.note(`Installed ${n}.`,"Install");}if(t.skipped.length>0)for(let r of t.skipped)G.warn(`Skipped ${r.kind} "${r.name}": ${r.reason}`);if(t.brokenResources&&t.brokenResources.length>0){let r=t.brokenResources.length;G.warn(`Skipped ${r} file${r>1?"s":""} with invalid frontmatter; see --json for details.`);}if(t.subPackFailures&&t.subPackFailures.length>0)for(let r of t.subPackFailures)G.warn(`Sub-pack "${r.name}" (${r.path}) failed: ${r.error}`);}}s(U1,"renderInstall");nt();an();ue();function B1(e){let t=new Set,r=new Set;for(let n of e)t.has(n)?r.add(n):t.add(n);return [...r]}s(B1,"detectDuplicates");function Xy(e,t,r,n){let o=[];r.keepGenerated&&o.push(`--keep-generated: target trees will not be re-rendered; generated files derived from "${e}" may remain stale until the next generate.`);let i=r.keepPack||t===null?null:join(r.packsDir,e);return {name:e,packDir:i,manifestEntry:t,extendsEntry:n.get(e)??null,removeGenerated:!r.keepGenerated,warnings:o}}s(Xy,"buildPlan");function K1(e){if(!e.all&&e.names.length===0)throw new Error("uninstall: must provide at least one name or pass --all.");let t=new Map;for(let a of e.extends)t.has(a.name)||t.set(a.name,a);let r=new Map;for(let a of e.installs)r.set(a.name,a);if(e.all){let a=e.installs.map(m=>m.name),l=B1(a);if(l.length>0)throw new Error(`uninstall --all: installs.yaml has duplicate names: ${l.join(", ")}. Manifest is corrupt; remove the duplicates before retrying.`);let c=e.installs.map(m=>Xy(m.name,m,e,t));for(let m of e.extends)r.has(m.name)||c.push(Xy(m.name,null,e,t));return {removals:c,skipped:[]}}let n=B1(e.names);if(n.length>0)throw new Error(`uninstall: duplicate names requested: ${n.join(", ")}.`);let o=[],i=[];for(let a of e.names){let l=r.get(a);if(l!==void 0){o.push(Xy(a,l,e,t));continue}if(t.has(a)){o.push(Xy(a,null,e,t));continue}i.push(a);}return {removals:o,skipped:i}}s(K1,"planUninstall");b();b();Hm();async function W1(e,t){let r=join(e,Er);if(await j(r))return null;let n=await wa(e);if(n===null)throw new Error(`Cannot migrate legacy pack at ${e}: pack.yaml is missing or invalid; cannot recover install provenance.`);let o=await Vy(e),i={name:n.name,source:n.source,installed_at:n.installed_at,extends_id:null,source_type:null,files:o};return t.dryRun!==true&&await L(r,`${JSON.stringify(i,null,2)}
|
|
472
472
|
`),t.warn(`Legacy pack "${n.name}" detected; generated baseline install manifest from current contents. Local modifications since install cannot be detected.`),{manifest:i,manifestPath:r}}s(W1,"migrateLegacyManifest");b();var Ise=["pack.yaml",Er];function kse(e,t){return relative(e,t).replaceAll("\\","/")}s(kse,"toForwardSlashRelative");async function Qy(e,t){let r=await B(e),n=new Map;for(let i of r){let a=kse(e,i);Ise.includes(a)||n.set(a,i);}let o=[];for(let[i,a]of Object.entries(t)){let l=n.get(i);if(l===void 0){o.push({relativePath:i,status:"deleted"});continue}let c=await Xh(l);if(c===null){o.push({relativePath:i,status:"deleted"});continue}`sha256:${c}`!==a&&o.push({relativePath:i,status:"modified"});}for(let i of n.keys())i in t||o.push({relativePath:i,status:"added"});return o.sort((i,a)=>i.relativePath<a.relativePath?-1:i.relativePath>a.relativePath?1:0),o}s(Qy,"detectModifiedFiles");function H1(e,t){let r=t.modifications.length,n=r===1?"file":"files",o=[`Pack "${t.packName}" has ${r} locally modified ${n}:`];for(let i of t.modifications)o.push(` - ${i.relativePath} (${i.status})`);o.push(""),e.write(`${o.join(`
|
|
473
473
|
`)}
|
|
474
474
|
`);}s(H1,"writeBanner");async function z1(e,t,r){if(e.modifications.length===0)return {action:"proceed"};if(t.bypass)return H1(r,e),{action:"delete-anyway"};H1(r,e);let n=(await r.ask("Action: [d]elete anyway / [k]eep modified files (uninstall the rest) / [a]bort ")).trim().toLowerCase();return n==="d"?{action:"delete-anyway"}:n==="k"?{action:"keep-modified"}:{action:"abort"}}s(z1,"runModifiedFilesPrompt");async function Lse(e){let t=await I(join(e,Er));if(t===null)return null;try{return JSON.parse(t).files??{}}catch{return null}}s(Lse,"readManifestFiles");async function Ese(e,t,r){if(e.manifestEntry===null)return {plan:e,modifications:[],action:"proceed",legacyMigrated:false,packDirMissing:false};let n=join(t,e.name);if(!await j(n))return r.warn(`Pack "${e.name}" directory missing at ${n}; only manifest entries will be removed.`),{plan:e,modifications:[],action:"proceed",legacyMigrated:false,packDirMissing:true};let o=await W1(n,{warn:r.warn,dryRun:r.dryRun===true}),i=o!==null,a=o!==null&&r.dryRun===true?o.manifest.files:await Lse(n);if(a===null)return {plan:e,modifications:[],action:"proceed",legacyMigrated:i,packDirMissing:false};let l=await Qy(n,a);if(r.keepPack||l.length===0)return {plan:e,modifications:l,action:"proceed",legacyMigrated:i,packDirMissing:false};let c=await z1({packName:e.name,modifications:l},{bypass:r.bypassPrompts},r.adapter);return c.action==="abort"?"abort":{plan:e,modifications:l,action:c.action,legacyMigrated:i,packDirMissing:false}}s(Ese,"decideOne");async function J1(e,t,r){let n=[];for(let o of e){let i=await Ese(o,t,r);if(i==="abort")return {decisions:n,aborted:true};n.push(i);}return {decisions:n,aborted:false}}s(J1,"gatherUninstallDecisions");b();b();async function Y1(e,t,r){if(!t.extends.some(c=>c.name===r))return false;let n=await I(e);if(n===null)throw new Error(`Missing config: ${e}`);let o=parse(n),i=Array.isArray(o.extends)?o.extends:[],a=i.filter(c=>typeof c!="object"||c===null?true:c.name!==r);if(a.length===i.length)return false;o.extends=a;let l=stringify(o,{indent:2,lineWidth:0});return await L(e,l.endsWith(`
|
|
475
475
|
`)?l:`${l}
|
|
476
|
-
`),true}s(Y1,"removeAgentsmeshExtendByName");async function X1(e){let{plan:t,canonicalDir:r,configPath:n,config:o}=e,i=false;t.packDir!==null&&await j(t.packDir)&&(await rm$1(t.packDir,{recursive:true}),i=true);let a=await
|
|
477
|
-
`);switch(await Nse(n,t.timeoutMs,t)){case "y":return {proceed:true,perPack:false,declined:[]};case "per-pack":return {proceed:true,perPack:true,declined:[]};case "n":case "timeout":return {proceed:false,perPack:false,declined:e.map(i=>i.name)}}}s(YE,"runConsentPrompt");function Fse(e,t){let r=Ud(e.source);if(r===null||r.remoteUrl===void 0)return e.source;if(e.source_kind==="github"&&e.source.startsWith("github:")){let n=e.source.indexOf(":"),o=e.source.lastIndexOf("@");return `${o>n?e.source.slice(0,o):e.source}@${t}`}if(e.source_kind==="gitlab"&&e.source.startsWith("gitlab:")){let n=e.source.indexOf(":"),o=e.source.lastIndexOf("@");return `${o>n?e.source.slice(0,o):e.source}@${t}`}if(e.source.startsWith("git+")){let n=e.source.lastIndexOf("#");return `${n<0?e.source:e.source.slice(0,n)}#${t}`}return e.source}s(Fse,"buildSourceForRefresh");function cV(e){return async(t,r)=>{let n={force:true,forceFreshMaterialize:true};e.scope==="global"&&(n.global=true),t.target!==void 0&&(n.target=t.target),t.as!==void 0&&(n.as=t.as),t.path!==void 0&&(n.path=t.path),t.paths!==void 0&&t.paths.length>0&&(n.all=true),n.name=t.name;let o={features:t.features,pick:t.pick,...t.original_ref!==void 0?{originalRef:t.original_ref}:{},...t.accepted_elevated!==void 0?{acceptedElevated:t.accepted_elevated}:{}},i=Fse(t,r),a=await
|
|
478
|
-
`,o=parse(n)??{};if(o.plugins||(o.plugins=[]),o.plugins.some(a=>a.id===t.id))return;let i={id:t.id,source:t.source};t.version!==void 0&&(i.version=t.version),o.plugins.push(i),await L(r,stringify(o));}s(yV,"writePluginEntry");async function _V(e,t){let r=join(e,ZE),n=await I(r);if(n===null)return false;let o=parse(n)??{},i=(o.plugins??[]).length;o.plugins=(o.plugins??[]).filter(l=>l.id!==t),o.pluginTargets&&(o.pluginTargets=o.pluginTargets.filter(l=>l!==t));let a=o.plugins.length<i;return a&&await L(r,stringify(o)),a}s(_V,"removePluginEntry");async function SV(e,t,r){let n=t[0];if(n===void 0||n==="")return {exitCode:0,data:{subcommand:"list",plugins:[]},showHelp:true};switch(n){case "add":return Wse(e,t.slice(1),r);case "list":return Hse(r);case "remove":return zse(t.slice(1),r);case "info":return Vse(t.slice(1),r);default:return {exitCode:2,data:{subcommand:"list",plugins:[]},showHelp:true,error:`Unknown plugin subcommand: ${n}`}}}s(SV,"runPlugin");async function Wse(e,t,r){let n=t[0];if(!n)throw new qn("Usage: agentsmesh plugin add <source> [--version <v>] [--id <id>]");let o=typeof e.version=="string"?e.version:"latest",a=(typeof e.id=="string"?e.id:void 0)??Jse(n);return await yV(r,{id:a,source:n,version:o==="latest"?void 0:o}),{exitCode:0,data:{subcommand:"add",id:a,package:n,version:o}}}s(Wse,"runPluginAdd");async function Hse(e){let r=(await eC(e)).plugins??[],n=[];for(let o of r){let i="\u2717",a="";try{let l=await iy(o,e);i=l.descriptors.length>0?"\u2713":"\u2713 (0 descriptors)",a=l.descriptors.map(c=>c.id).join(", ");}catch{}n.push({id:o.id,package:o.source,version:o.version,status:i,targets:a});}return {exitCode:0,data:{subcommand:"list",plugins:n}}}s(Hse,"runPluginList");async function zse(e,t){let r=e[0];if(!r)throw new qn("Usage: agentsmesh plugin remove <id>");let n=await _V(t,r);return {exitCode:0,data:{subcommand:"remove",id:r,found:n}}}s(zse,"runPluginRemove");async function Vse(e,t){let r=e[0];if(!r)throw new qn("Usage: agentsmesh plugin info <id>");let o=((await eC(t)).plugins??[]).find(l=>l.id===r);if(!o)return {exitCode:1,data:{subcommand:"info",id:r,package:"",descriptors:[]}};let i;try{i=await iy(o,t);}catch{return {exitCode:1,data:{subcommand:"info",id:r,package:o.source,version:o.version,descriptors:[]}}}let a=i.descriptors.map(l=>({id:l.id,description:l.emptyImportMessage}));return {exitCode:0,data:{subcommand:"info",id:r,package:o.source,version:o.version,descriptors:a}}}s(Vse,"runPluginInfo");function Jse(e){let t=e;if(t.startsWith("@")){let n=t.indexOf("/");n!==-1&&(t=t.slice(n+1));}t.startsWith("agentsmesh-target-")&&(t=t.slice(18)),t.startsWith("file:")&&(t=t.slice(5));let r=t.replace(/\\/g,"/").split("/");return t=r[r.length-1]??t,t=t.replace(/\.(js|ts)$/,""),t=t.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),t||"plugin"}s(Jse,"derivePluginId");ue();function RV(e){if(e.error&&S.error(e.error),e.showHelp){Zse();return}let{data:t}=e;switch(t.subcommand){case "add":Yse(t.id,t.package,t.version);break;case "list":Xse(t.plugins);break;case "remove":Qse(t.id,t.found);break;case "info":qse(t,e.exitCode);break}}s(RV,"renderPlugin");function Yse(e,t,r){S.success(`Plugin '${e}' added to agentsmesh.yaml`),S.warn("Plugins load as trusted Node.js modules and run with full process privileges. Only install plugins from sources you trust.");let n=r!=="latest"?`@${r}`:"@latest";S.info(`Next: npm install ${t}${n}`),S.info(`Then add '${e}' to pluginTargets in agentsmesh.yaml to enable it.`);}s(Yse,"renderAdd");function Xse(e){if(e.length===0){S.info("No plugins configured. Use: agentsmesh plugin add <source>");return}S.info("Configured plugins:");for(let t of e){let r=t.version!==void 0?`@${t.version}`:"",n=t.status??"",o=t.targets??"";S.info(` ${t.id} | ${t.package}${r} | ${n} | ${o}`);}}s(Xse,"renderList");function Qse(e,t){t?S.success(`Plugin '${e}' removed from agentsmesh.yaml`):S.warn(`Plugin '${e}' was not found in agentsmesh.yaml`);}s(Qse,"renderRemove");function qse(e,t){if(t!==0&&e.package===""){S.error(`Plugin '${e.id}' not found in agentsmesh.yaml. Use: agentsmesh plugin add`);return}if(t!==0){S.error(`Failed to load plugin '${e.id}'`);return}S.info(`Plugin: ${e.id}`),S.info(`Source: ${e.package}${e.version!==void 0?`@${e.version}`:""}`),S.info(`Descriptors: ${e.descriptors.length}`);for(let r of e.descriptors)S.info(` - ${r.id}: ${r.description}`);}s(qse,"renderInfo");function Zse(){S.info("Usage: agentsmesh plugin <subcommand> [args] [flags]"),S.info(""),S.info("Subcommands:"),S.info(" add <source> Register a plugin package in agentsmesh.yaml"),S.info(" list Show all configured plugins and load status"),S.info(" remove <id> Remove a plugin from agentsmesh.yaml"),S.info(" info <id> Show descriptor details for a configured plugin"),S.info(""),S.info("Flags (add):"),S.info(" --version <v> Pin plugin version"),S.info(" --id <id> Override derived plugin id"),S.info(""),S.info("Note: plugins load as trusted Node.js modules and run with full process privileges."),S.info(" Only install plugins from sources you trust.");}s(Zse,"printPluginHelp");b();pn();function
|
|
476
|
+
`),true}s(Y1,"removeAgentsmeshExtendByName");async function X1(e){let{plan:t,canonicalDir:r,configPath:n,config:o}=e,i=false;t.packDir!==null&&await j(t.packDir)&&(await rm$1(t.packDir,{recursive:true}),i=true);let a=await p1(r,t.name),l=false;t.extendsEntry!==null&&(l=await Y1(n,o,t.name));let c=t.packDir!==null,m=t.manifestEntry!==null,p=t.extendsEntry!==null,u=c&&!i||m&&!a||p&&!l;return {name:t.name,packDirRemoved:i,manifestEntryRemoved:a,extendsEntryRemoved:l,partial:u}}s(X1,"applyUninstall");function Tse(e,t){return relative(e,t).replaceAll("\\","/")}s(Tse,"toForwardSlashRel");function JE(e){return e.map(t=>({name:t,reason:"not found in installs.yaml"}))}s(JE,"buildSkipped");function Q1(e,t,r){return e.plan.manifestEntry===null?null:Tse(t,join(r,e.plan.name))}s(Q1,"packPathFor");function q1(e,t,r){return e.map(n=>({name:n.plan.name,pack_path:Q1(n,t,r),manifest_entry_removed:false,extends_entry_removed:false,generated_files_removed:0,modified_files_kept:n.modifications.map(o=>({relativePath:o.relativePath,status:o.status})),legacy_migrated:n.legacyMigrated,partial:n.action==="keep-modified"||n.plan.packDir===null}))}s(q1,"previewEntries");function Z1(e,t,r,n){let o=e.action==="keep-modified"||!t.packDirRemoved;return {name:t.name,pack_path:Q1(e,r,n),manifest_entry_removed:t.manifestEntryRemoved,extends_entry_removed:t.extendsEntryRemoved,generated_files_removed:0,modified_files_kept:o?e.modifications.map(i=>({relativePath:i.relativePath,status:i.status})):[],legacy_migrated:e.legacyMigrated,partial:t.partial}}s(Z1,"appliedEntry");function xse(e){let t=[];for(let r of e)for(let n of r.split(",").map(o=>o.trim()).filter(Boolean))t.push(n);return t}s(xse,"parseNames");function Pse(){return {ask:s(e=>va(e),"ask"),write:s(e=>process.stdout.write(e),"write")}}s(Pse,"defaultAdapter");async function qy(e,t,r,n={}){let o=e.global===true?"global":"project",i=e.all===true,a=e.force===true,l=e["dry-run"]===true,c=e["keep-pack"]===true,m=e["keep-generated"]===true,p=n.assumeTty===true||process.stdin.isTTY,u=xse(t),f=e.json===true;function g(R){return f||S.error(R),{exitCode:1,data:{scope:o,mode:"uninstall",removed:[],skipped:[],failed:[],dryRun:l}}}if(s(g,"validationFailure"),!i&&u.length===0)return g("Missing install name. Usage: agentsmesh uninstall <name>[,<name>...] [--all]");if(!p&&!a&&!l)return g("Non-interactive terminal: use --force or --dry-run for agentsmesh uninstall.");let{config:h,context:y}=await _e(r,o);await Ve(h,r);let _=await pp(y.canonicalDir);try{let R=await er(y.canonicalDir),k=join(y.canonicalDir,"packs"),w=K1({names:u,all:i,keepPack:c,keepGenerated:m,installs:R,extends:h.extends,packsDir:k}),{decisions:D,aborted:v}=await J1(w.removals,k,{adapter:n.promptAdapter??Pse(),warn:s(Y=>S.warn(Y),"warn"),bypassPrompts:a||l||!p,keepPack:c,dryRun:l});if(v)return S.warn("Uninstall aborted at modification prompt."),{exitCode:130,data:{scope:o,mode:"uninstall",removed:[],skipped:[],failed:[],dryRun:l}};for(let Y of w.removals)for(let F of Y.warnings)S.warn(F);if(l){for(let Y of D)S.info(`[dry-run] Would uninstall pack "${Y.plan.name}".`);return {exitCode:0,data:{scope:o,mode:"uninstall",removed:q1(D,y.rootBase,k),skipped:JE(w.skipped),failed:[],dryRun:!0}}}let K=join(y.configDir,"agentsmesh.yaml"),ee=[],se=[];for(let Y of D){let F=Y.action==="keep-modified"?{...Y.plan,packDir:null}:Y.plan;try{let te=await X1({plan:F,canonicalDir:y.canonicalDir,configPath:K,config:h});ee.push(Z1(Y,te,y.rootBase,k));}catch(te){let De=te instanceof Error?te.message:String(te);se.push({name:Y.plan.name,reason:De}),f||S.error(`Failed to uninstall "${Y.plan.name}": ${De}`);}}return !m&&ee.length>0?await hp("uninstall",o,y.rootBase):m&&ee.length>0&&S.warn("--keep-generated: target files derived from the removed pack(s) may be stale until the next generate."),{exitCode:se.length>0?1:0,data:{scope:o,mode:"uninstall",removed:ee,skipped:JE(w.skipped),failed:se,dryRun:!1}}}finally{await _();}}s(qy,"runUninstall");async function tV(e,t,r){return qy(e,t,r)}s(tV,"runUninstall");function rV(e){let{data:t}=e;if(t.dryRun){if(t.removed.length===0){G.info("[dry-run] No installs matched.");return}G.info(`[dry-run] Would uninstall ${t.removed.length} pack(s):`);for(let r of t.removed){let n=r.pack_path===null?"extends-only":r.pack_path;G.info(` - ${r.name} (${n})`);}return}if(t.removed.length>0){let r=t.removed.map(n=>`"${n.name}"`).join(", ");G.success(`Uninstalled ${t.removed.length} pack(s): ${r}.`),G.note(`Uninstalled ${t.removed.length} pack(s): ${r}.`,"Uninstall");}for(let r of t.skipped)G.warn(`Skipped "${r.name}": ${r.reason}`);for(let r of t.failed)G.error(`Failed "${r.name}": ${r.reason}`);}s(rV,"renderUninstall");nt();an();ue();function nV(e){let t=e.json===true;return {dryRun:e["dry-run"]===true,force:e.force===true||t,global:e.global===true,json:t,verbose:e.verbose===true}}s(nV,"readRefreshFlags");function oV(e){let t=[];for(let r of e)for(let n of r.split(",").map(o=>o.trim()).filter(Boolean))t.push(n);return t}s(oV,"parseRefreshNames");b();function Dse(e){return e.modifications.length>0?"needs-consent":e.oldSha===e.newSha?"unchanged":"clean-update"}s(Dse,"classifyRefreshPlan");async function iV(e,t,r){let n=join(t,e.name),o=e.version??null,i=join(n,Er),a=await I(i);if(a===null)return {name:e.name,entry:e,oldSha:o,newSha:o??"",modifications:[],classification:"error",error:{phase:"plan",message:`Pack manifest missing at ${i}`}};let l;try{l=JSON.parse(a).files??{};}catch{return {name:e.name,entry:e,oldSha:o,newSha:o??"",modifications:[],classification:"error",error:{phase:"plan",message:`Pack manifest is corrupt at ${i}`}}}let c=[];await j(n)&&(c=await Qy(n,l));let m;try{m=await r.resolveRef(e);}catch(p){let u=p instanceof Error?p.message:String(p);return {name:e.name,entry:e,oldSha:o,newSha:o??"",modifications:c,classification:"error",error:{phase:"plan",message:u}}}return {name:e.name,entry:e,oldSha:o,newSha:m,modifications:c,classification:Dse({modifications:c,oldSha:o,newSha:m})}}s(iV,"planSinglePack");function aV(){return async e=>{if(e.source_kind==="local")return e.version??"local";let t=Ud(e.source);if(t===null||t.remoteUrl===void 0)throw new Error(`Cannot parse source for refresh: ${e.source}`);let r=e.original_ref!==void 0&&e.original_ref!==""?e.original_ref:t.ref??"HEAD";return Gy(r,t.remoteUrl)}}s(aV,"createDefaultResolveRef");async function lV(e,t,r){try{await r.runInstallForRefresh(e.entry,e.newSha);}catch(n){return {success:false,phase:"apply",error:n instanceof Error?n.message:String(n)}}try{let n=(r.now??(()=>new Date().toISOString()))(),i=(await er(t)).find(a=>a.name===e.entry.name);if(i===void 0)return {success:!1,phase:"manifest-update",error:`Entry "${e.entry.name}" not found after install`};await Yy(t,{...i,refreshed_at:n});}catch(n){return {success:false,phase:"manifest-update",error:n instanceof Error?n.message:String(n)}}return {success:true}}s(lV,"applySinglePack");async function Nse(e,t,r={}){let n=r.readLine??va,o,i=new Promise(a=>{o=setTimeout(()=>a("timeout"),t),o.unref?.();});try{let a=await Promise.race([n(e),i]);return a==="timeout"?"timeout":vse(a)}finally{o&&clearTimeout(o);}}s(Nse,"promptWithTimeout");function vse(e){let t=e.trim().toLowerCase();return t==="y"||t==="yes"?"y":t==="per-pack"?"per-pack":"n"}s(vse,"normalize");async function YE(e,t){let n=[`The following ${e.length} pack(s) have local edits that refresh will overwrite:`,...e.map(i=>` - ${i.name}: ${i.modifiedCount} modified file(s)`),"Continue? [y/N/per-pack] (5 min timeout, default N) "].join(`
|
|
477
|
+
`);switch(await Nse(n,t.timeoutMs,t)){case "y":return {proceed:true,perPack:false,declined:[]};case "per-pack":return {proceed:true,perPack:true,declined:[]};case "n":case "timeout":return {proceed:false,perPack:false,declined:e.map(i=>i.name)}}}s(YE,"runConsentPrompt");function Fse(e,t){let r=Ud(e.source);if(r===null||r.remoteUrl===void 0)return e.source;if(e.source_kind==="github"&&e.source.startsWith("github:")){let n=e.source.indexOf(":"),o=e.source.lastIndexOf("@");return `${o>n?e.source.slice(0,o):e.source}@${t}`}if(e.source_kind==="gitlab"&&e.source.startsWith("gitlab:")){let n=e.source.indexOf(":"),o=e.source.lastIndexOf("@");return `${o>n?e.source.slice(0,o):e.source}@${t}`}if(e.source.startsWith("git+")){let n=e.source.lastIndexOf("#");return `${n<0?e.source:e.source.slice(0,n)}#${t}`}return e.source}s(Fse,"buildSourceForRefresh");function cV(e){return async(t,r)=>{let n={force:true,forceFreshMaterialize:true};e.scope==="global"&&(n.global=true),t.target!==void 0&&(n.target=t.target),t.as!==void 0&&(n.as=t.as),t.path!==void 0&&(n.path=t.path),t.paths!==void 0&&t.paths.length>0&&(n.all=true),n.name=t.name;let o={features:t.features,pick:t.pick,...t.original_ref!==void 0?{originalRef:t.original_ref}:{},...t.accepted_elevated!==void 0?{acceptedElevated:t.accepted_elevated}:{}},i=Fse(t,r),a=await pc(n,[i],e.projectRoot,o);if(a.exitCode!==0)throw new Error(`Install for refresh "${t.name}" failed with exit code ${a.exitCode}`)}}s(cV,"createRunInstallForRefresh");var mV=300*1e3;async function Zy(e,t,r){let{dryRun:n,force:o,global:i,json:a}=nV(e),l=i?"global":"project",c=oV(t),m=s(()=>({scope:l,mode:"refresh",refreshed:[],unchanged:[],skipped:[],failed:[],dryRun:n}),"emptyData"),{config:p,context:u}=await _e(r,l);await Ve(p,r);let f=await pp(u.canonicalDir);try{let g=await er(u.canonicalDir);if(c.length>0){let F=new Set(g.map(De=>De.name)),te=c.filter(De=>!F.has(De));if(te.length>0)return a||S.error(`Unknown pack(s): ${te.join(", ")}`),{exitCode:2,data:m()}}let h=c.length>0?g.filter(F=>c.includes(F.name)):g;if(h.length===0)return a||S.info("No packs to refresh."),{exitCode:0,data:m()};let y=join(u.canonicalDir,"packs"),_=aV(),R=[];for(let F of h)R.push(await iV(F,y,{resolveRef:_}));let k=R.filter(F=>F.classification==="error"),w=R.filter(F=>F.classification==="unchanged"),D=R.filter(F=>F.classification==="clean-update"),v=R.filter(F=>F.classification==="needs-consent"),K=m();if(K.unchanged=w.map(F=>({name:F.name,ref:F.newSha})),K.failed=k.map(F=>({name:F.name,phase:"plan",error:F.error?.message??"unknown plan error"})),n){for(let F of D)K.refreshed.push({name:F.name,oldRef:F.oldSha,newRef:F.newSha,oldSha:F.oldSha,newSha:F.newSha,changedFiles:{added:[],removed:[],modified:[]}});for(let F of v)K.refreshed.push({name:F.name,oldRef:F.oldSha,newRef:F.newSha,oldSha:F.oldSha,newSha:F.newSha,changedFiles:{added:[],removed:[],modified:[]}});return {exitCode:k.length>0?1:0,data:K}}let ee=new Set(D.map(F=>F.name));if(v.length>0)if(o)for(let F of v)ee.add(F.name);else {let F=await YE(v.map(te=>({name:te.name,modifiedCount:te.modifications.length})),{timeoutMs:mV});if(F.proceed&&!F.perPack)for(let te of v)ee.add(te.name);else if(F.proceed&&F.perPack)for(let te of v)(await YE([{name:te.name,modifiedCount:te.modifications.length}],{timeoutMs:mV})).proceed?ee.add(te.name):K.skipped.push({name:te.name,reason:"user-declined"});else for(let te of F.declined)K.skipped.push({name:te,reason:"user-declined"});}let se=cV({projectRoot:r,scope:l});for(let F of [...D,...v]){if(!ee.has(F.name))continue;let te=await lV(F,u.canonicalDir,{runInstallForRefresh:se});te.success?K.refreshed.push({name:F.name,oldRef:F.oldSha,newRef:F.newSha,oldSha:F.oldSha,newSha:F.newSha,changedFiles:{added:[],removed:[],modified:[]}}):K.failed.push({name:F.name,phase:te.phase??"apply",error:te.error??"unknown"});}return K.refreshed.length>0&&await hp("refresh",l,u.rootBase),{exitCode:K.failed.length>0?1:0,data:K}}finally{await f();}}s(Zy,"runRefresh");async function pV(e,t,r){return Zy(e,t,r)}s(pV,"runRefresh");function uV(e){let{data:t}=e;if(t.dryRun){if(t.refreshed.length===0&&t.unchanged.length===0){G.info("[dry-run] No packs to refresh.");return}G.info(`[dry-run] Would refresh ${t.refreshed.length} pack(s); ${t.unchanged.length} unchanged.`);for(let r of t.refreshed)G.info(` - ${r.name}: ${r.oldSha??"\u2014"} \u2192 ${r.newSha}`);for(let r of t.unchanged)G.info(` - ${r.name}: unchanged at ${r.ref}`);return}if(t.refreshed.length>0){G.success(`Refreshed ${t.refreshed.length} pack(s):`),G.note(`Refreshed ${t.refreshed.length} pack(s).`,"Refresh");for(let r of t.refreshed)G.info(` - ${r.name}: ${r.oldSha??"\u2014"} \u2192 ${r.newSha}`);}for(let r of t.unchanged)G.info(`Pack "${r.name}" unchanged at ${r.ref}.`);for(let r of t.skipped)G.warn(`Skipped "${r.name}": ${r.reason}`);for(let r of t.failed)G.error(`Failed "${r.name}" (${r.phase}): ${r.error}`);}s(uV,"renderRefresh");nt();b();Hm();async function $se(e){let t=await I(join(e,Er));if(t===null)return {installed_at:null,source_type:null};try{let r=JSON.parse(t);return {installed_at:typeof r.installed_at=="string"?r.installed_at:null,source_type:typeof r.source_type=="string"?r.source_type:null}}catch{return {installed_at:null,source_type:null}}}s($se,"readPackManifestMeta");function jse(e,t){return relative(e,t).replaceAll("\\","/")}s(jse,"toForwardSlashRel");async function e_(e,t){let r=e.global===true?"global":"project",n=Ja(t,r),o=await er(n.canonicalDir),i=join(n.canonicalDir,"packs"),a=[];for(let l of o){let c=join(i,l.name),m=await $se(c),p=await wa(c);a.push({name:l.name,source:l.source,source_kind:l.source_kind,source_type:m.source_type,version:l.version??null,features:[...l.features],target:l.target??null,installed_at:m.installed_at,refreshed_at:l.refreshed_at??null,pack_path:jse(n.rootBase,c),license:p?.license??null});}return {exitCode:0,data:{scope:r,subcommand:"list",installs:a}}}s(e_,"runInstallsList");var Use=["list"];function dV(e){return {scope:e,subcommand:"list",installs:[]}}s(dV,"emptyData");async function fV(e,t,r){let n=e.global===true?"global":"project",o=t[0];return o===void 0||o===""?{exitCode:0,data:dV(n),showHelp:true}:o==="list"?e_(e,r):{exitCode:2,data:dV(n),showHelp:true,error:`Unknown installs subcommand: "${o}". Available: ${Use.join(", ")}. Did you mean \`agentsmesh install ${o}\`?`}}s(fV,"runInstalls");ue();var t_=[{key:"name",label:"NAME"},{key:"source",label:"SOURCE"},{key:"features",label:"FEATURES"},{key:"license",label:"LICENSE"},{key:"installed",label:"LAST TOUCHED"}];function Bse(e){let t=e.refreshed_at??e.installed_at??null;return {name:e.name,source:e.source,features:e.features.join(", "),license:e.license??"-",installed:t?t.slice(0,10):"-"}}s(Bse,"toRow");function Kse(e){let t={name:0,source:0,features:0,license:0,installed:0};for(let n of t_)t[n.key]=n.label.length;for(let n of e)for(let o of t_)t[o.key]=Math.max(t[o.key],n[o.key].length);let r=t_.map(n=>n.label.padEnd(t[n.key])).join(" ");S.info(r);for(let n of e)S.info(t_.map(o=>n[o.key].padEnd(t[o.key])).join(" "));}s(Kse,"renderTable");function gV(e){if(e.error&&S.error(e.error),e.showHelp){lf("installs");return}let{data:t}=e;if(t.installs.length===0){S.info("No installed packs.");return}Kse(t.installs.map(Bse));}s(gV,"renderInstalls");NL();b();var ZE="agentsmesh.yaml";async function eC(e){let t=join(e,ZE),r=await I(t);return r===null?{}:parse(r)??{}}s(eC,"readScopedConfigRaw");async function yV(e,t){let r=join(e,ZE),n=await I(r)??`version: 1
|
|
478
|
+
`,o=parse(n)??{};if(o.plugins||(o.plugins=[]),o.plugins.some(a=>a.id===t.id))return;let i={id:t.id,source:t.source};t.version!==void 0&&(i.version=t.version),o.plugins.push(i),await L(r,stringify(o));}s(yV,"writePluginEntry");async function _V(e,t){let r=join(e,ZE),n=await I(r);if(n===null)return false;let o=parse(n)??{},i=(o.plugins??[]).length;o.plugins=(o.plugins??[]).filter(l=>l.id!==t),o.pluginTargets&&(o.pluginTargets=o.pluginTargets.filter(l=>l!==t));let a=o.plugins.length<i;return a&&await L(r,stringify(o)),a}s(_V,"removePluginEntry");async function SV(e,t,r){let n=t[0];if(n===void 0||n==="")return {exitCode:0,data:{subcommand:"list",plugins:[]},showHelp:true};switch(n){case "add":return Wse(e,t.slice(1),r);case "list":return Hse(r);case "remove":return zse(t.slice(1),r);case "info":return Vse(t.slice(1),r);default:return {exitCode:2,data:{subcommand:"list",plugins:[]},showHelp:true,error:`Unknown plugin subcommand: ${n}`}}}s(SV,"runPlugin");async function Wse(e,t,r){let n=t[0];if(!n)throw new qn("Usage: agentsmesh plugin add <source> [--version <v>] [--id <id>]");let o=typeof e.version=="string"?e.version:"latest",a=(typeof e.id=="string"?e.id:void 0)??Jse(n);return await yV(r,{id:a,source:n,version:o==="latest"?void 0:o}),{exitCode:0,data:{subcommand:"add",id:a,package:n,version:o}}}s(Wse,"runPluginAdd");async function Hse(e){let r=(await eC(e)).plugins??[],n=[];for(let o of r){let i="\u2717",a="";try{let l=await iy(o,e);i=l.descriptors.length>0?"\u2713":"\u2713 (0 descriptors)",a=l.descriptors.map(c=>c.id).join(", ");}catch{}n.push({id:o.id,package:o.source,version:o.version,status:i,targets:a});}return {exitCode:0,data:{subcommand:"list",plugins:n}}}s(Hse,"runPluginList");async function zse(e,t){let r=e[0];if(!r)throw new qn("Usage: agentsmesh plugin remove <id>");let n=await _V(t,r);return {exitCode:0,data:{subcommand:"remove",id:r,found:n}}}s(zse,"runPluginRemove");async function Vse(e,t){let r=e[0];if(!r)throw new qn("Usage: agentsmesh plugin info <id>");let o=((await eC(t)).plugins??[]).find(l=>l.id===r);if(!o)return {exitCode:1,data:{subcommand:"info",id:r,package:"",descriptors:[]}};let i;try{i=await iy(o,t);}catch{return {exitCode:1,data:{subcommand:"info",id:r,package:o.source,version:o.version,descriptors:[]}}}let a=i.descriptors.map(l=>({id:l.id,description:l.emptyImportMessage}));return {exitCode:0,data:{subcommand:"info",id:r,package:o.source,version:o.version,descriptors:a}}}s(Vse,"runPluginInfo");function Jse(e){let t=e;if(t.startsWith("@")){let n=t.indexOf("/");n!==-1&&(t=t.slice(n+1));}t.startsWith("agentsmesh-target-")&&(t=t.slice(18)),t.startsWith("file:")&&(t=t.slice(5));let r=t.replace(/\\/g,"/").split("/");return t=r[r.length-1]??t,t=t.replace(/\.(js|ts)$/,""),t=t.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),t||"plugin"}s(Jse,"derivePluginId");ue();function RV(e){if(e.error&&S.error(e.error),e.showHelp){Zse();return}let{data:t}=e;switch(t.subcommand){case "add":Yse(t.id,t.package,t.version);break;case "list":Xse(t.plugins);break;case "remove":Qse(t.id,t.found);break;case "info":qse(t,e.exitCode);break}}s(RV,"renderPlugin");function Yse(e,t,r){S.success(`Plugin '${e}' added to agentsmesh.yaml`),S.warn("Plugins load as trusted Node.js modules and run with full process privileges. Only install plugins from sources you trust.");let n=r!=="latest"?`@${r}`:"@latest";S.info(`Next: npm install ${t}${n}`),S.info(`Then add '${e}' to pluginTargets in agentsmesh.yaml to enable it.`);}s(Yse,"renderAdd");function Xse(e){if(e.length===0){S.info("No plugins configured. Use: agentsmesh plugin add <source>");return}S.info("Configured plugins:");for(let t of e){let r=t.version!==void 0?`@${t.version}`:"",n=t.status??"",o=t.targets??"";S.info(` ${t.id} | ${t.package}${r} | ${n} | ${o}`);}}s(Xse,"renderList");function Qse(e,t){t?S.success(`Plugin '${e}' removed from agentsmesh.yaml`):S.warn(`Plugin '${e}' was not found in agentsmesh.yaml`);}s(Qse,"renderRemove");function qse(e,t){if(t!==0&&e.package===""){S.error(`Plugin '${e.id}' not found in agentsmesh.yaml. Use: agentsmesh plugin add`);return}if(t!==0){S.error(`Failed to load plugin '${e.id}'`);return}S.info(`Plugin: ${e.id}`),S.info(`Source: ${e.package}${e.version!==void 0?`@${e.version}`:""}`),S.info(`Descriptors: ${e.descriptors.length}`);for(let r of e.descriptors)S.info(` - ${r.id}: ${r.description}`);}s(qse,"renderInfo");function Zse(){S.info("Usage: agentsmesh plugin <subcommand> [args] [flags]"),S.info(""),S.info("Subcommands:"),S.info(" add <source> Register a plugin package in agentsmesh.yaml"),S.info(" list Show all configured plugins and load status"),S.info(" remove <id> Remove a plugin from agentsmesh.yaml"),S.info(" info <id> Show descriptor details for a configured plugin"),S.info(""),S.info("Flags (add):"),S.info(" --version <v> Pin plugin version"),S.info(" --id <id> Override derived plugin id"),S.info(""),S.info("Note: plugins load as trusted Node.js modules and run with full process privileges."),S.info(" Only install plugins from sources you trust.");}s(Zse,"printPluginHelp");b();pn();function Fa(e){return e.toUpperCase().replace(/-/g,"_")}s(Fa,"toPrefix");function Oi(e){return e.split("-").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join("")}s(Oi,"toPascal");function tC(e){let t=Fa(e.id),r=Oi(e.id);return `import type { TargetGenerators } from '../catalog/target.interface.js';
|
|
479
479
|
import type { TargetDescriptor, TargetLayout } from '../catalog/target-descriptor.js';
|
|
480
480
|
import { generateRules } from './generator.js';
|
|
481
481
|
import { importFrom${r} } from './importer.js';
|
|
@@ -624,7 +624,7 @@ describe('importFrom${t} (${e.id})', () => {
|
|
|
624
624
|
`}s(nC,"TEMPLATE_IMPORTER_TEST");function oC(e){return `# ${e.displayName} Workspace
|
|
625
625
|
|
|
626
626
|
Follow the ${e.displayName} configuration files and keep changes small.
|
|
627
|
-
`}s(oC,"TEMPLATE_FIXTURE_ROOT_MD");function IV(e){let t=
|
|
627
|
+
`}s(oC,"TEMPLATE_FIXTURE_ROOT_MD");function IV(e){let t=Fa(e.id);return `export const ${t}_TARGET = '${e.id}';
|
|
628
628
|
|
|
629
629
|
// Project-level paths
|
|
630
630
|
export const ${t}_DIR = '.${e.id}';
|
|
@@ -637,7 +637,7 @@ export const ${t}_GLOBAL_RULES_DIR = '~/.${e.id}/rules';
|
|
|
637
637
|
// Canonical paths
|
|
638
638
|
export const ${t}_CANONICAL_ROOT_RULE = '.agentsmesh/rules/_root.md';
|
|
639
639
|
export const ${t}_CANONICAL_RULES_DIR = '.agentsmesh/rules';
|
|
640
|
-
`}s(IV,"TEMPLATE_CONSTANTS");function kV(e){let t=
|
|
640
|
+
`}s(IV,"TEMPLATE_CONSTANTS");function kV(e){let t=Fa(e.id);return `import type { CanonicalFiles } from '../../core/types.js';
|
|
641
641
|
import { ${t}_TARGET, ${t}_DIR } from './constants.js';
|
|
642
642
|
|
|
643
643
|
export interface ${Oi(e.id)}Output {
|
|
@@ -651,7 +651,7 @@ export function generateRules(_canonical: CanonicalFiles): ${Oi(e.id)}Output[] {
|
|
|
651
651
|
void ${t}_DIR;
|
|
652
652
|
return [];
|
|
653
653
|
}
|
|
654
|
-
`}s(kV,"TEMPLATE_GENERATOR");function LV(e){let t=Oi(e.id),r=
|
|
654
|
+
`}s(kV,"TEMPLATE_GENERATOR");function LV(e){let t=Oi(e.id),r=Fa(e.id);return `import type { ImportResult } from '../../core/types.js';
|
|
655
655
|
import type { TargetLayoutScope } from '../catalog/target-descriptor.js';
|
|
656
656
|
import { ${r}_TARGET } from './constants.js';
|
|
657
657
|
|
|
@@ -663,7 +663,7 @@ export async function importFrom${t}(
|
|
|
663
663
|
void ${r}_TARGET;
|
|
664
664
|
return [];
|
|
665
665
|
}
|
|
666
|
-
`}s(LV,"TEMPLATE_IMPORTER");function EV(e){let t=
|
|
666
|
+
`}s(LV,"TEMPLATE_IMPORTER");function EV(e){let t=Fa(e.id);return `/** Lint rules for the ${e.id} target. */
|
|
667
667
|
import type { CanonicalFiles, LintDiagnostic } from '../../core/types.js';
|
|
668
668
|
import { validateRules } from '../../core/lint/validate-rules.js';
|
|
669
669
|
import { ${t}_TARGET } from './constants.js';
|
|
@@ -691,7 +691,7 @@ export function lintHooks(_canonical: CanonicalFiles): LintDiagnostic[] {
|
|
|
691
691
|
// TODO(agentsmesh-scaffold): implement target-specific hook validation for ${e.displayName}
|
|
692
692
|
return [];
|
|
693
693
|
}
|
|
694
|
-
`}s(CV,"TEMPLATE_LINT_HOOKS");function OV(e){let t=Oi(e.id),r=
|
|
694
|
+
`}s(CV,"TEMPLATE_LINT_HOOKS");function OV(e){let t=Oi(e.id),r=Fa(e.id);return `import type { TargetLayoutScope } from '../../../targets/catalog/target-descriptor.js';
|
|
695
695
|
import { ${r}_DIR } from '../../../targets/${e.id}/constants.js';
|
|
696
696
|
|
|
697
697
|
export async function build${t}ImportPaths(
|
|
@@ -703,31 +703,31 @@ export async function build${t}ImportPaths(
|
|
|
703
703
|
// Reference: src/core/reference/import-maps/kiro.ts for a full example
|
|
704
704
|
void ${r}_DIR;
|
|
705
705
|
}
|
|
706
|
-
`}s(OV,"TEMPLATE_IMPORT_MAP");var tie=/^[a-z][a-z0-9-]*$/;async function wV(e){let{id:t,projectRoot:r,force:n=false}=e,o=e.displayName??t,i={id:t,displayName:o};if(!tie.test(t))throw new Error(`Invalid target id "${t}". Must match /^[a-z][a-z0-9-]*$/ (lowercase letters, digits, hyphens; start with a letter).`);if(Ue.includes(t))throw new Error(`Target "${t}" already exists as a built-in target. Choose a different id.`);let a=[{rel:`src/targets/${t}/constants.ts`,content:IV(i)},{rel:`src/targets/${t}/index.ts`,content:tC(i)},{rel:`src/targets/${t}/generator.ts`,content:kV(i)},{rel:`src/targets/${t}/importer.ts`,content:LV(i)},{rel:`src/targets/${t}/linter.ts`,content:EV(i)},{rel:`src/targets/${t}/lint.ts`,content:CV(i)},{rel:`src/core/reference/import-maps/${t}.ts`,content:OV(i)},{rel:`tests/unit/targets/${t}/generator.test.ts`,content:rC(i)},{rel:`tests/unit/targets/${t}/importer.test.ts`,content:nC(i)},{rel:`tests/e2e/fixtures/${t}-project/AGENTS.md`,content:oC(i)}],l=[],c=[];for(let p of a){let u=join(r,p.rel);if(!n&&await j(u)){c.push(u);continue}await L(u,p.content),l.push(u);}let m=["1. Run: pnpm catalog:generate (auto-discovers the new target \u2014 updates IDs, descriptors, and import-map barrel)",`2. Fill in TODO(agentsmesh-scaffold) markers in src/targets/${t}/`,`3. Run: pnpm typecheck && pnpm test -- tests/unit/targets/${t}`,"4. Run: pnpm schemas:generate && pnpm matrix:generate"];return {written:l,skipped:c,postSteps:m}}s(wV,"writeTargetScaffold");async function AV(e,t,r){let n=t[0];return n===void 0||n===""?{exitCode:0,data:{id:"",written:[],skipped:[],postSteps:[]},showHelp:true}:n==="scaffold"?rie(e,t.slice(1),r):{exitCode:2,data:{id:"",written:[],skipped:[],postSteps:[]},showHelp:true,error:`Unknown target subcommand: ${n}`}}s(AV,"runTarget");async function rie(e,t,r){let n=t[0];if(!n)throw new qn("Usage: agentsmesh target scaffold <id> [--name <displayName>] [--force]");let o=typeof e.name=="string"?e.name:void 0,i=e.force===true,a;try{a=await wV({id:n,displayName:o,projectRoot:r,force:i});}catch(l){return {exitCode:1,data:{id:n,written:[],skipped:[],postSteps:[]},error:l instanceof Error?l.message:String(l)}}return {exitCode:0,data:{id:n,written:a.written.map(l=>bV(l,r)),skipped:a.skipped.map(l=>bV(l,r)),postSteps:a.postSteps}}}s(rie,"runScaffold");function bV(e,t){return (e.startsWith(t)?e.slice(t.length+1):e).replaceAll("\\","/")}s(bV,"relativize");ue();function TV(e){if(e.error&&S.error(e.error),e.showHelp){nie();return}let{data:t}=e;for(let r of t.written)S.success(`created ${r}`);for(let r of t.skipped)S.warn(`skipped ${r} (already exists \u2014 use --force to overwrite)`);if(t.written.length>0){S.info(""),S.info("Next steps:");for(let r of t.postSteps)S.info(` ${r}`);}}s(TV,"renderTarget");function nie(){S.info("Usage: agentsmesh target <subcommand> [args] [flags]"),S.info(""),S.info("Subcommands:"),S.info(" scaffold <id> Generate a new target skeleton (files, tests, fixture)"),S.info(""),S.info("Flags (scaffold):"),S.info(" --name <displayName> Human-readable name (defaults to id)"),S.info(" --force Overwrite existing files");}s(nie,"printTargetHelp");ot();
|
|
706
|
+
`}s(OV,"TEMPLATE_IMPORT_MAP");var tie=/^[a-z][a-z0-9-]*$/;async function wV(e){let{id:t,projectRoot:r,force:n=false}=e,o=e.displayName??t,i={id:t,displayName:o};if(!tie.test(t))throw new Error(`Invalid target id "${t}". Must match /^[a-z][a-z0-9-]*$/ (lowercase letters, digits, hyphens; start with a letter).`);if(Ue.includes(t))throw new Error(`Target "${t}" already exists as a built-in target. Choose a different id.`);let a=[{rel:`src/targets/${t}/constants.ts`,content:IV(i)},{rel:`src/targets/${t}/index.ts`,content:tC(i)},{rel:`src/targets/${t}/generator.ts`,content:kV(i)},{rel:`src/targets/${t}/importer.ts`,content:LV(i)},{rel:`src/targets/${t}/linter.ts`,content:EV(i)},{rel:`src/targets/${t}/lint.ts`,content:CV(i)},{rel:`src/core/reference/import-maps/${t}.ts`,content:OV(i)},{rel:`tests/unit/targets/${t}/generator.test.ts`,content:rC(i)},{rel:`tests/unit/targets/${t}/importer.test.ts`,content:nC(i)},{rel:`tests/e2e/fixtures/${t}-project/AGENTS.md`,content:oC(i)}],l=[],c=[];for(let p of a){let u=join(r,p.rel);if(!n&&await j(u)){c.push(u);continue}await L(u,p.content),l.push(u);}let m=["1. Run: pnpm catalog:generate (auto-discovers the new target \u2014 updates IDs, descriptors, and import-map barrel)",`2. Fill in TODO(agentsmesh-scaffold) markers in src/targets/${t}/`,`3. Run: pnpm typecheck && pnpm test -- tests/unit/targets/${t}`,"4. Run: pnpm schemas:generate && pnpm matrix:generate"];return {written:l,skipped:c,postSteps:m}}s(wV,"writeTargetScaffold");async function AV(e,t,r){let n=t[0];return n===void 0||n===""?{exitCode:0,data:{id:"",written:[],skipped:[],postSteps:[]},showHelp:true}:n==="scaffold"?rie(e,t.slice(1),r):{exitCode:2,data:{id:"",written:[],skipped:[],postSteps:[]},showHelp:true,error:`Unknown target subcommand: ${n}`}}s(AV,"runTarget");async function rie(e,t,r){let n=t[0];if(!n)throw new qn("Usage: agentsmesh target scaffold <id> [--name <displayName>] [--force]");let o=typeof e.name=="string"?e.name:void 0,i=e.force===true,a;try{a=await wV({id:n,displayName:o,projectRoot:r,force:i});}catch(l){return {exitCode:1,data:{id:n,written:[],skipped:[],postSteps:[]},error:l instanceof Error?l.message:String(l)}}return {exitCode:0,data:{id:n,written:a.written.map(l=>bV(l,r)),skipped:a.skipped.map(l=>bV(l,r)),postSteps:a.postSteps}}}s(rie,"runScaffold");function bV(e,t){return (e.startsWith(t)?e.slice(t.length+1):e).replaceAll("\\","/")}s(bV,"relativize");ue();function TV(e){if(e.error&&S.error(e.error),e.showHelp){nie();return}let{data:t}=e;for(let r of t.written)S.success(`created ${r}`);for(let r of t.skipped)S.warn(`skipped ${r} (already exists \u2014 use --force to overwrite)`);if(t.written.length>0){S.info(""),S.info("Next steps:");for(let r of t.postSteps)S.info(` ${r}`);}}s(TV,"renderTarget");function nie(){S.info("Usage: agentsmesh target <subcommand> [args] [flags]"),S.info(""),S.info("Subcommands:"),S.info(" scaffold <id> Generate a new target skeleton (files, tests, fixture)"),S.info(""),S.info("Flags (scaffold):"),S.info(" --name <displayName> Human-readable name (defaults to id)"),S.info(" --force Overwrite existing files");}s(nie,"printTargetHelp");ot();qa();b();nt();an();is();function pie(e,t){return e===".agentsmesh"?false:!!(e.startsWith(".")||!t)}s(pie,"shouldSymlink");function uie(e){let t=mkdtempSync(join(tmpdir(),"am-convert-")),r=readdirSync(e,{withFileTypes:true});for(let n of r){if(!pie(n.name,n.isDirectory()))continue;let o=join(e,n.name),i=join(t,n.name);symlinkSync(o,i,n.isDirectory()?"dir":"file");}return mkdirSync(join(t,".agentsmesh"),{recursive:true}),t}s(uie,"createTempProjectRoot");async function n_(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",o=n==="global"?homedir():r,i=e.from,a=e.to;if(typeof i!="string"||!i)throw new Error("--from is required. Example: agentsmesh convert --from cursor --to claude-code");if(typeof a!="string"||!a)throw new Error("--to is required. Example: agentsmesh convert --from cursor --to claude-code");let l=i.toLowerCase().trim(),c=a.toLowerCase().trim();if(l===c)throw new Error("--from and --to must be different targets.");let m=Kt(l),p=Kt(c);if(!m||!p)try{let{config:_}=await _e(r,"project");await Ve(_,r);}catch{let _=[];throw m||_.push(`--from "${i}"`),p||_.push(`--to "${a}"`),new Error(`Unknown ${_.join(" and ")}. Supported: ${Ue.join(", ")}.`)}let u=ne(l);if(!u)throw new Error(`Unknown --from "${i}". Supported: ${Ue.join(", ")}.`);if(!ne(c))throw new Error(`Unknown --to "${a}". Supported: ${Ue.join(", ")}.`);let g=e["dry-run"]===true,h=g?"dry-run":"convert",y=uie(o);try{await u.generators.importFrom(y,{scope:n});let _=await Wt(y),R=Va.parse({version:1,targets:p?[c]:[],pluginTargets:p?[]:[c]}),k=await Qo({config:R,canonical:_,projectRoot:o,scope:n,targetFilter:[c]});if(!g){for(let v of k)if(v.status==="created"||v.status==="updated"){let K=ay(o,v.path,v.target);await L(K,v.content);}}let w=k.filter(v=>v.status!=="skipped"),D=w.map(v=>({path:v.path,target:v.target,status:v.status}));return {exitCode:0,data:{from:l,to:c,mode:h,files:D,summary:{created:w.filter(v=>v.status==="created").length,updated:w.filter(v=>v.status==="updated").length,unchanged:w.filter(v=>v.status==="unchanged").length}}}}finally{rmSync(y,{recursive:true,force:true});}}s(n_,"runConvert");function xV(e){let{data:t}=e;if(t.files.length===0){G.info(`No files found to convert from ${t.from}.`);return}if(t.mode==="dry-run"){for(let i of t.files)G.info(`[dry-run] ${i.status} ${i.path} (${i.target})`);return}for(let i of t.files)(i.status==="created"||i.status==="updated")&&G.success(`${i.status} ${i.path}`);let{created:r,updated:n,unchanged:o}=t.summary;r>0||n>0?G.info(`Converted from ${t.from} \u2192 ${t.to}: ${r} created, ${n} updated, ${o} unchanged`):G.info(`Nothing changed. (${o} unchanged)`);}s(xV,"renderConvert");var die=/(^|\s)\/[A-Za-z]|^[A-Z]:[\\/]/,N=class extends Error{static{s(this,"McpError");}code;details;constructor(t,r,n){if(die.test(r))throw new Error(`McpError refuses absolute fs path in message: ${r}`);super(r),this.code=t,this.details=n;}toEnvelope(){return this.details===void 0?{code:this.code,message:this.message}:{code:this.code,message:this.message,details:this.details}}};function Rp(e){return e.replace(/(['"`])\/[^'"`\s]+\1/gu,"$1<redacted>$1").replace(/(['"`])[A-Z]:[\\/][^'"`\s]+\1/gu,"$1<redacted>$1").replace(/\/[A-Za-z][^\s'"`<>()]*/gu,"<redacted>").replace(/[A-Z]:[\\/][^\s'"`<>()]*/gu,"<redacted>")}s(Rp,"redactAbsolutePaths");async function s_(e){try{return await realpath(e)}catch(t){if(t.code!=="ENOENT")throw t;let r=dirname(e);return r===e?resolve(e):join(await s_(r),basename(e))}}s(s_,"canonicalize");async function et(e){let t,r,n;try{t=await s_(resolve(e.root)),r=await s_(resolve(e.target)),e.boundaryRoot!==void 0&&(n=await s_(resolve(e.boundaryRoot)));}catch{throw new N("PATH_TRAVERSAL",e.message)}if(n!==void 0&&!PV(t,n))throw new N("PATH_TRAVERSAL",e.message);if(!PV(r,t))throw new N("PATH_TRAVERSAL",e.message)}s(et,"assertContainedPath");function PV(e,t){return e===t||e.startsWith(`${t}${sep}`)}s(PV,"isInside");async function sC(e){let t=resolve(e.projectRoot,".agentsmesh",e.feature),r=resolve(t,e.relativePath);if(await et({root:t,target:r,boundaryRoot:e.projectRoot,message:`path escapes ${e.feature} directory`}),Buffer.byteLength(e.content,"utf8")>1048576)throw new N("LIMIT_EXCEEDED","file body exceeds 1 MiB cap",{limit:1048576,actual:Buffer.byteLength(e.content,"utf8")});await mkdir(dirname(r),{recursive:true});let n=`${r}.tmp.${process.pid}.${Date.now()}`;return await writeFile(n,e.content,"utf8"),await rename(n,r),r}s(sC,"safeWrite");var Cie=/^---\r?\n([\s\S]*?)\r?\n---\r?\n\r?\n?([\s\S]*)$/;function Ga(e){let t=Cie.exec(e);if(!t)return {frontmatter:{},body:e};let[,r,n]=t;return {frontmatter:parse(r)??{},body:n}}s(Ga,"parseMd");function Ip(e,t){return Object.keys(e).length===0?t:`---
|
|
707
707
|
${stringify(e).trimEnd()}
|
|
708
708
|
---
|
|
709
709
|
|
|
710
|
-
${t}`}s(Ip,"serializeMd");var Tie=/^[a-zA-Z0-9_][a-zA-Z0-9_-]*$/,xie={rules:"_root"};function i_(e){if(!Tie.test(e)||e.includes(".."))throw new N("INVALID_NAME",`invalid name: ${e}`)}s(i_,"checkName");function a_(e,t,r){return resolve(e,".agentsmesh",t,`${r}.md`)}s(a_,"pathFor");function kp(e){let{feature:t,frontmatterSchema:r,toSummary:n}=e,o=s(l=>resolve(l,".agentsmesh",t),"featureDir");async function i(l){try{return (await readdir(o(l),{withFileTypes:!0})).filter(m=>m.isFile()&&m.name.endsWith(".md")).map(m=>m.name)}catch{return []}}s(i,"listFiles");async function a(l){try{return await stat(l),!0}catch{return false}}return s(a,"exists"),{async list(l){await et({root:l.projectRoot,target:o(l.projectRoot),message:`path escapes ${t} directory`});let c=await i(l.projectRoot),m=[];for(let p of c){let u=p.replace(/\.md$/,""),f=await readFile(join(o(l.projectRoot),p),"utf8"),{frontmatter:g}=Ma(f);m.push(n(u,g));}return m},async get(l,{name:c}){i_(c);let m=a_(l.projectRoot,t,c);await et({root:o(l.projectRoot),target:m,boundaryRoot:l.projectRoot,message:`path escapes ${t} directory`});try{let p=await readFile(m,"utf8"),{frontmatter:u,body:f}=Ma(p);return {name:c,frontmatter:u,body:f}}catch(p){let u=p.code;throw u==="ENOENT"?new N("NOT_FOUND",`${t} "${c}" not found`):new N("IO_ERROR",`failed to read ${t}`,{errno:u})}},async create(l,{name:c,frontmatter:m,body:p,dry_run:u}){i_(c);let f=a_(l.projectRoot,t,c);await et({root:o(l.projectRoot),target:f,boundaryRoot:l.projectRoot,message:`path escapes ${t} directory`});let g=r.safeParse(m);if(!g.success)throw new N("VALIDATION_FAILED","invalid frontmatter",g.error.issues);if(await a(f))throw new N("ALREADY_EXISTS",`${t} "${c}" exists`);if((await i(l.projectRoot)).length>=1e3)throw new N("LIMIT_EXCEEDED",`${t} dir at ${1e3} entries`);let y=Ip(m,p);return u===true?{path:f,written:false}:(await sC({projectRoot:l.projectRoot,feature:t,relativePath:`${c}.md`,content:y}),{path:f,written:true})},async update(l,{name:c,frontmatter:m,body:p,merge:u,dry_run:f}){i_(c);let g=a_(l.projectRoot,t,c),h;await et({root:o(l.projectRoot),target:g,boundaryRoot:l.projectRoot,message:`path escapes ${t} directory`});try{let w=await readFile(g,"utf8");h=Ma(w);}catch(w){let D=w.code;throw D==="ENOENT"?new N("NOT_FOUND",`${t} "${c}" not found`):new N("IO_ERROR",`failed to read ${t}`,{errno:D})}let y=m===void 0?h.frontmatter:u===true?{...h.frontmatter,...m}:m,_=r.safeParse(y);if(!_.success)throw new N("VALIDATION_FAILED","invalid frontmatter",_.error.issues);let R=p!==void 0?p:h.body,k=Ip(y,R);return f===true?{path:g,written:false}:(await sC({projectRoot:l.projectRoot,feature:t,relativePath:`${c}.md`,content:k}),{path:g,written:true})},async delete(l,{name:c,force:m,dry_run:p}){if(i_(c),xie[t]===c&&m!==true)throw new N("PROTECTED_FILE",`${t} "${c}" requires force: true`);let u=a_(l.projectRoot,t,c);if(await et({root:o(l.projectRoot),target:u,boundaryRoot:l.projectRoot,message:`path escapes ${t} directory`}),!await a(u))throw new N("NOT_FOUND",`${t} "${c}" not found`);return p===true?{path:u,deleted:false}:(await rm$1(u),{path:u,deleted:true})}}}s(kp,"createCanonicalHandlers");var Pie=z$1.object({description:z$1.string().optional(),root:z$1.boolean().optional(),globs:z$1.array(z$1.string()).nullable().optional(),targets:z$1.array(z$1.string()).nullable().optional()}).passthrough(),vV=kp({feature:"rules",frontmatterSchema:Pie,toSummary:s((e,t)=>({name:e,description:t.description??null,root:!!t.root,globs:t.globs??null,targets:t.targets??null}),"toSummary")});var Die=z$1.object({description:z$1.string().optional(),"allowed-tools":z$1.array(z$1.string()).optional()}).passthrough(),FV=kp({feature:"commands",frontmatterSchema:Die,toSummary:s((e,t)=>({name:e,description:t.description??null,allowedTools:t["allowed-tools"]??null}),"toSummary")});var Nie=z$1.object({name:z$1.string().optional(),description:z$1.string().optional(),tools:z$1.array(z$1.string()).optional(),model:z$1.string().optional()}).passthrough(),MV=kp({feature:"agents",frontmatterSchema:Nie,toSummary:s((e,t)=>({name:e,description:t.description??null,tools:t.tools??null,model:t.model??null}),"toSummary")});var vie=z$1.object({name:z$1.string().describe('Item name (e.g. "auth", "code-review")')}),Fie=z$1.object({name:z$1.string().describe('Item name (e.g. "auth", "code-review")'),frontmatter:z$1.record(z$1.string(),z$1.unknown()).describe("YAML frontmatter fields (e.g. { description, globs, targets })"),body:z$1.string().describe("Markdown body content"),dry_run:z$1.boolean().optional().describe("Preview changes without writing to disk")}),Mie=z$1.object({}).strict();function aC(e,t){let r=e==="rule"?"rules":e==="command"?"commands":"agents";return [{name:`list_${r}`,description:`List ${r} with summary metadata`,inputSchema:Mie,handler:s(n=>t.list(n),"handler"),resourceUri:`agentsmesh://canonical/${r}`},{name:`get_${e}`,description:`Get a single ${e} by name`,inputSchema:vie,handler:s((n,o)=>t.get(n,o),"handler"),resourceUri:`agentsmesh://canonical/${r}/{name}`},{name:`create_${e}`,description:`Create a new ${e}`,inputSchema:Fie,handler:s((n,o)=>t.create(n,o),"handler")},{name:`update_${e}`,description:`Update a ${e}. Default: replace frontmatter entirely. Set merge=true to shallow-merge. Omitting body preserves the existing body.`,inputSchema:z$1.object({name:z$1.string().describe("Name of the item to update"),frontmatter:z$1.record(z$1.string(),z$1.unknown()).optional().describe("New frontmatter fields (replaces by default; set merge=true to shallow-merge)"),body:z$1.string().optional().describe("New markdown body (omit to preserve existing)"),merge:z$1.boolean().optional().describe("If true, shallow-merge frontmatter instead of replacing"),dry_run:z$1.boolean().optional().describe("Preview changes without writing to disk")}),handler:s((n,o)=>t.update(n,o),"handler")},{name:`delete_${e}`,description:`Delete a ${e}. For rules: deleting _root requires force=true.`,inputSchema:z$1.object({name:z$1.string().describe("Name of the item to delete"),force:z$1.boolean().optional().describe("Required to delete protected files like _root"),dry_run:z$1.boolean().optional().describe("Preview without deleting")}),handler:s((n,o)=>t.delete(n,o),"handler")}]}s(aC,"canonicalTools");var GV=[...aC("rule",vV),...aC("command",FV),...aC("agent",MV)];async function jV(e){let t=resolve(e.projectRoot,".agentsmesh/skills",e.skillName),r=resolve(t,e.filePath);await et({root:t,target:r,boundaryRoot:e.projectRoot,message:"file escapes skill directory"});try{return await readFile(r,"utf8")}catch(n){throw n.code==="ENOENT"?new N("NOT_FOUND",`skill file not found: ${e.filePath}`):new N("IO_ERROR","failed to read skill file")}}s(jV,"safeRead");var Kie=/^[a-zA-Z0-9_][a-zA-Z0-9_-]*$/,Wie=/^[a-zA-Z0-9_][a-zA-Z0-9_/-]*\.[a-zA-Z0-9]+$/,WV=z$1.object({name:z$1.string().optional(),description:z$1.string().optional()}).passthrough();function Vd(e){if(!Kie.test(e))throw new N("INVALID_NAME",`invalid skill name: ${e}`)}s(Vd,"checkName");function mC(e){if(!Wie.test(e)||e.includes("..")||e.includes("//"))throw new N("PATH_TRAVERSAL",`invalid supporting-file path: ${e}`)}s(mC,"checkSupportPath");async function m_(e,t,r,n){if(await et({root:t,target:r,boundaryRoot:e,message:"file escapes skill directory"}),Buffer.byteLength(n,"utf8")>1048576)throw new N("LIMIT_EXCEEDED","file body exceeds 1 MiB cap");await mkdir(dirname(r),{recursive:true});let o=`${r}.tmp.${process.pid}.${Date.now()}`;await writeFile(o,n,"utf8"),await rename(o,r);}s(m_,"atomicWrite");var Yd=s(e=>resolve(e,".agentsmesh/skills"),"skillsDir"),Jd=s((e,t)=>resolve(Yd(e),t),"skillDir");async function p_(e,t,r){await et({root:t,target:r,boundaryRoot:e,message:"file escapes skill directory"});}s(p_,"assertSkillFile");var uc={async list(e){await et({root:e.projectRoot,target:Yd(e.projectRoot),message:"skills directory escapes project"});let t;try{t=(await readdir(Yd(e.projectRoot),{withFileTypes:!0})).filter(n=>n.isDirectory()).map(n=>n.name);}catch{return []}let r=[];for(let n of t)try{let o=Jd(e.projectRoot,n),i=resolve(o,"SKILL.md");await p_(e.projectRoot,o,i);let a=await readFile(i,"utf8"),l=Ma(a).frontmatter;r.push({name:n,description:l.description??null});}catch{}return r},async get(e,{name:t}){Vd(t);let r=Jd(e.projectRoot,t),n=resolve(r,"SKILL.md");await p_(e.projectRoot,r,n);try{let o=await readFile(n,"utf8"),{frontmatter:i,body:a}=Ma(o),c=(await readdir(r)).filter(m=>m!=="SKILL.md").sort();return {name:t,frontmatter:i,body:a,supportingFiles:c}}catch(o){throw o.code==="ENOENT"?new N("NOT_FOUND",`skill "${t}" not found`):new N("IO_ERROR","failed to read skill")}},async getFile(e,{name:t,path:r}){return Vd(t),mC(r),{content:await jV({projectRoot:e.projectRoot,skillName:t,filePath:r}),encoding:"utf-8"}},async create(e,t){Vd(t.name);let r=Jd(e.projectRoot,t.name);await et({root:Yd(e.projectRoot),target:r,boundaryRoot:e.projectRoot,message:"skill escapes skills directory"});let n=WV.safeParse(t.frontmatter);if(!n.success)throw new N("VALIDATION_FAILED","invalid frontmatter",n.error.issues);let o=false;try{await stat(r),o=!0;}catch{}if(o)throw new N("ALREADY_EXISTS",`skill "${t.name}" exists`);let i=t.supportingFiles??{},a=Object.keys(i);if(a.forEach(mC),a.length+1>1e3)throw new N("LIMIT_EXCEEDED","supporting files exceed cap");if(t.dry_run===true)return {path:r,written:false,supportingFilesWritten:[]};let l=resolve(r,"SKILL.md");await m_(e.projectRoot,r,l,Ip(t.frontmatter,t.body));for(let[c,m]of Object.entries(i))await m_(e.projectRoot,r,resolve(r,c),m);return {path:r,written:true,supportingFilesWritten:a}},async update(e,t){Vd(t.name);let r=Jd(e.projectRoot,t.name),n=resolve(r,"SKILL.md");await p_(e.projectRoot,r,n);let o;try{let u=await readFile(n,"utf8");o=Ma(u);}catch(u){throw u.code==="ENOENT"?new N("NOT_FOUND",`skill "${t.name}" not found`):new N("IO_ERROR","failed to read skill")}let i=t.frontmatter===void 0?o.frontmatter:t.merge===true?{...o.frontmatter,...t.frontmatter}:t.frontmatter,a=WV.safeParse(i);if(!a.success)throw new N("VALIDATION_FAILED","invalid frontmatter",a.error.issues);let l=t.body!==void 0?t.body:o.body,c=t.supportingFiles??{};Object.keys(c).forEach(mC);let m=[],p=[];if(t.dry_run===true)return Object.entries(c).forEach(([u,f])=>(f===null?p:m).push(u)),{path:r,written:false,supportingFilesAffected:{written:m,deleted:p}};await m_(e.projectRoot,r,resolve(r,"SKILL.md"),Ip(i,l));for(let[u,f]of Object.entries(c)){let g=resolve(r,u);if(f===null)try{await p_(e.projectRoot,r,g),await rm$1(g),p.push(u);}catch(h){if(h instanceof N||h.code!=="ENOENT")throw h}else await m_(e.projectRoot,r,g,f),m.push(u);}return {path:r,written:true,supportingFilesAffected:{written:m,deleted:p}}},async delete(e,{name:t,dry_run:r}){Vd(t);let n=Jd(e.projectRoot,t);await et({root:Yd(e.projectRoot),target:n,boundaryRoot:e.projectRoot,message:"skill escapes skills directory"});try{await stat(n);}catch{throw new N("NOT_FOUND",`skill "${t}" not found`)}return r===true?{path:n,deleted:false}:(await rm$1(n,{recursive:true}),{path:n,deleted:true})}};var Hie=z$1.object({}).strict(),zie=z$1.object({name:z$1.string().describe("Item name")}),HV=[{name:"list_skills",description:"List skills",inputSchema:Hie,handler:s(e=>uc.list(e),"handler"),resourceUri:"agentsmesh://canonical/skills"},{name:"get_skill",description:"Get one skill (frontmatter + body + supporting filenames)",inputSchema:zie,handler:s((e,t)=>uc.get(e,t),"handler"),resourceUri:"agentsmesh://canonical/skills/{name}"},{name:"get_skill_file",description:"Read a skill supporting file by name and relative path",inputSchema:z$1.object({name:z$1.string().describe("Skill name"),path:z$1.string().describe('Relative path within the skill directory (e.g. "helper.md")')}),handler:s((e,t)=>uc.getFile(e,t),"handler"),resourceUri:"agentsmesh://canonical/skills/{name}/files/{path}"},{name:"create_skill",description:"Create a skill directory with SKILL.md and optional supporting files",inputSchema:z$1.object({name:z$1.string().describe("Skill name (becomes directory name)"),frontmatter:z$1.record(z$1.string(),z$1.unknown()).describe("YAML frontmatter for SKILL.md"),body:z$1.string().describe("Markdown body for SKILL.md"),supportingFiles:z$1.record(z$1.string(),z$1.string()).optional().describe("Map of relative-path \u2192 content for supporting files"),dry_run:z$1.boolean().optional().describe("Preview without writing")}),handler:s((e,t)=>uc.create(e,t),"handler")},{name:"update_skill",description:"Update a skill. supportingFiles: string value writes/replaces, null deletes, unlisted files are untouched.",inputSchema:z$1.object({name:z$1.string().describe("Skill name"),frontmatter:z$1.record(z$1.string(),z$1.unknown()).optional().describe("New frontmatter (replaces by default; merge=true to shallow-merge)"),body:z$1.string().optional().describe("New body (omit to preserve existing)"),merge:z$1.boolean().optional().describe("Shallow-merge frontmatter instead of replacing"),supportingFiles:z$1.record(z$1.string(),z$1.union([z$1.string(),z$1.null()])).optional().describe("Map of path \u2192 content (string=write, null=delete, absent=keep)"),dry_run:z$1.boolean().optional().describe("Preview without writing")}),handler:s((e,t)=>uc.update(e,t),"handler")},{name:"delete_skill",description:"Delete a skill",inputSchema:z$1.object({name:z$1.string(),dry_run:z$1.boolean().optional()}),handler:s((e,t)=>uc.delete(e,t),"handler")}];async function zV(e){if(e.filename!==void 0&&e.filename!=="agentsmesh.yaml")throw new N("PATH_TRAVERSAL","only agentsmesh.yaml is writable");if(Buffer.byteLength(e.content,"utf8")>1048576)throw new N("LIMIT_EXCEEDED","config exceeds 1 MiB cap");let t=resolve(e.projectRoot,"agentsmesh.yaml");await et({root:e.projectRoot,target:t,message:"config path escapes project directory"});let r=`${t}.tmp.${process.pid}.${Date.now()}`;return await writeFile(r,e.content,"utf8"),await rename(r,t),t}s(zV,"safeConfigWrite");function Xie(e){if(!e||typeof e!="object")return [e];let t=e,r=t.hooks;return Array.isArray(r)?r.map(n=>{let o=n&&typeof n=="object"?n:{};return {matcher:t.matcher,...o.type!==void 0&&{type:o.type},...o.command!==void 0&&{command:o.command},...o.prompt!==void 0&&{prompt:o.prompt},...o.timeout!==void 0&&{timeout:o.timeout}}}):[t]}s(Xie,"flattenEntry");function VV(e){let t={};for(let[r,n]of Object.entries(e))t[r]=Array.isArray(n)?n.flatMap(Xie):n;return t}s(VV,"normalizeHooksRecord");is();Kp();async function Ga(e,t){await et({root:e,target:t,message:"config path escapes project directory"});}s(Ga,"assertWithinProject");async function Xd(e,t){await Ga(e,t);try{return parse(await readFile(t,"utf8"))}catch(r){if(r.code==="ENOENT")return null;throw new N("IO_ERROR","failed to read yaml")}}s(Xd,"readYaml");async function Ep(e,t,r){if(await Ga(e,t),Buffer.byteLength(r,"utf8")>1048576)throw new N("LIMIT_EXCEEDED","file exceeds 1 MiB cap");let n=`${t}.tmp.${process.pid}.${Date.now()}`;await writeFile(n,r,"utf8"),await rename(n,t);}s(Ep,"atomicWrite");var Or={async getConfig(e){let t=await Xd(e.projectRoot,resolve(e.projectRoot,"agentsmesh.yaml"));if(t===null)throw new N("NO_PROJECT","agentsmesh.yaml missing");return t},async listMcpServers(e){let t=resolve(e.projectRoot,".agentsmesh/mcp.json");await Ga(e.projectRoot,t);try{return {servers:(await dn(t))?.mcpServers??null}}catch{return {servers:null}}},async getPermissions(e){return await Xd(e.projectRoot,resolve(e.projectRoot,".agentsmesh/permissions.yaml"))??null},async getHooks(e){return await Xd(e.projectRoot,resolve(e.projectRoot,".agentsmesh/hooks.yaml"))??null},async getIgnore(e){let t=resolve(e.projectRoot,".agentsmesh/ignore");await Ga(e.projectRoot,t);try{return {patterns:(await readFile(t,"utf8")).split(/\r?\n/).filter(n=>n!==""&&!n.startsWith("#"))}}catch{return {patterns:null}}},async updateConfig(e,t){let r=await Xd(e.projectRoot,resolve(e.projectRoot,"agentsmesh.yaml"))??{},n={...r},o=s((c,m)=>{m!==void 0&&(n[c]=t.merge===true&&Array.isArray(r[c])?Array.from(new Set([...r[c],...m])):m);},"apply");o("targets",t.targets),o("features",t.features),t.conversions!==void 0&&(n.conversions=t.merge===true&&r.conversions!==void 0?{...r.conversions,...t.conversions}:t.conversions);let i=za.safeParse(n);if(!i.success)throw new N("VALIDATION_FAILED","invalid config",i.error.issues);let a=stringify(n);return t.dry_run===true?{path:resolve(e.projectRoot,"agentsmesh.yaml"),written:false}:{path:await zV({projectRoot:e.projectRoot,content:a,filename:t.filename}),written:true}},async addMcpServer(e,t){let r=resolve(e.projectRoot,".agentsmesh/mcp.json");await Ga(e.projectRoot,r);let n=await dn(r).catch(()=>null)??{mcpServers:{}};if(n.mcpServers[t.name]!==void 0)throw new N("ALREADY_EXISTS",`server "${t.name}" exists`);return n.mcpServers[t.name]=t.server,t.dry_run===true?{path:r,written:false}:(await Ep(e.projectRoot,r,JSON.stringify(n,null,2)+`
|
|
711
|
-
`),{path:r,written:true})},async updateMcpServer(e,t){let r=resolve(e.projectRoot,".agentsmesh/mcp.json");await
|
|
712
|
-
`),{path:r,written:true})},async removeMcpServer(e,t){let r=resolve(e.projectRoot,".agentsmesh/mcp.json");await
|
|
713
|
-
`),{path:r,removed:true})},async updatePermissions(e,t){let r=resolve(e.projectRoot,".agentsmesh/permissions.yaml"),n=await Xd(e.projectRoot,r)??{allow:[],deny:[],ask:[]},o={...n},i=s((a,l)=>{l!==void 0&&(o[a]=t.mode==="append"?Array.from(new Set([...n[a]??[],...l])):l);},"apply");return i("allow",t.allow),i("deny",t.deny),i("ask",t.ask),t.dry_run===true?{path:r,written:false}:(await Ep(e.projectRoot,r,stringify(o)),{path:r,written:true})},async updateHooks(e,t){let r=resolve(e.projectRoot,".agentsmesh/hooks.yaml");return t.dry_run===true?{path:r,written:false}:(await Ep(e.projectRoot,r,stringify(VV(t.hooks))),{path:r,written:true})},async updateIgnore(e,t){let r=resolve(e.projectRoot,".agentsmesh/ignore"),n;if(t.mode==="append"){await
|
|
710
|
+
${t}`}s(Ip,"serializeMd");var Tie=/^[a-zA-Z0-9_][a-zA-Z0-9_-]*$/,xie={rules:"_root"};function i_(e){if(!Tie.test(e)||e.includes(".."))throw new N("INVALID_NAME",`invalid name: ${e}`)}s(i_,"checkName");function a_(e,t,r){return resolve(e,".agentsmesh",t,`${r}.md`)}s(a_,"pathFor");function kp(e){let{feature:t,frontmatterSchema:r,toSummary:n}=e,o=s(l=>resolve(l,".agentsmesh",t),"featureDir");async function i(l){try{return (await readdir(o(l),{withFileTypes:!0})).filter(m=>m.isFile()&&m.name.endsWith(".md")).map(m=>m.name)}catch{return []}}s(i,"listFiles");async function a(l){try{return await stat(l),!0}catch{return false}}return s(a,"exists"),{async list(l){await et({root:l.projectRoot,target:o(l.projectRoot),message:`path escapes ${t} directory`});let c=await i(l.projectRoot),m=[];for(let p of c){let u=p.replace(/\.md$/,""),f=await readFile(join(o(l.projectRoot),p),"utf8"),{frontmatter:g}=Ga(f);m.push(n(u,g));}return m},async get(l,{name:c}){i_(c);let m=a_(l.projectRoot,t,c);await et({root:o(l.projectRoot),target:m,boundaryRoot:l.projectRoot,message:`path escapes ${t} directory`});try{let p=await readFile(m,"utf8"),{frontmatter:u,body:f}=Ga(p);return {name:c,frontmatter:u,body:f}}catch(p){let u=p.code;throw u==="ENOENT"?new N("NOT_FOUND",`${t} "${c}" not found`):new N("IO_ERROR",`failed to read ${t}`,{errno:u})}},async create(l,{name:c,frontmatter:m,body:p,dry_run:u}){i_(c);let f=a_(l.projectRoot,t,c);await et({root:o(l.projectRoot),target:f,boundaryRoot:l.projectRoot,message:`path escapes ${t} directory`});let g=r.safeParse(m);if(!g.success)throw new N("VALIDATION_FAILED","invalid frontmatter",g.error.issues);if(await a(f))throw new N("ALREADY_EXISTS",`${t} "${c}" exists`);if((await i(l.projectRoot)).length>=1e3)throw new N("LIMIT_EXCEEDED",`${t} dir at ${1e3} entries`);let y=Ip(m,p);return u===true?{path:f,written:false}:(await sC({projectRoot:l.projectRoot,feature:t,relativePath:`${c}.md`,content:y}),{path:f,written:true})},async update(l,{name:c,frontmatter:m,body:p,merge:u,dry_run:f}){i_(c);let g=a_(l.projectRoot,t,c),h;await et({root:o(l.projectRoot),target:g,boundaryRoot:l.projectRoot,message:`path escapes ${t} directory`});try{let w=await readFile(g,"utf8");h=Ga(w);}catch(w){let D=w.code;throw D==="ENOENT"?new N("NOT_FOUND",`${t} "${c}" not found`):new N("IO_ERROR",`failed to read ${t}`,{errno:D})}let y=m===void 0?h.frontmatter:u===true?{...h.frontmatter,...m}:m,_=r.safeParse(y);if(!_.success)throw new N("VALIDATION_FAILED","invalid frontmatter",_.error.issues);let R=p!==void 0?p:h.body,k=Ip(y,R);return f===true?{path:g,written:false}:(await sC({projectRoot:l.projectRoot,feature:t,relativePath:`${c}.md`,content:k}),{path:g,written:true})},async delete(l,{name:c,force:m,dry_run:p}){if(i_(c),xie[t]===c&&m!==true)throw new N("PROTECTED_FILE",`${t} "${c}" requires force: true`);let u=a_(l.projectRoot,t,c);if(await et({root:o(l.projectRoot),target:u,boundaryRoot:l.projectRoot,message:`path escapes ${t} directory`}),!await a(u))throw new N("NOT_FOUND",`${t} "${c}" not found`);return p===true?{path:u,deleted:false}:(await rm$1(u),{path:u,deleted:true})}}}s(kp,"createCanonicalHandlers");var Pie=z$1.object({description:z$1.string().optional(),root:z$1.boolean().optional(),globs:z$1.array(z$1.string()).nullable().optional(),targets:z$1.array(z$1.string()).nullable().optional()}).passthrough(),vV=kp({feature:"rules",frontmatterSchema:Pie,toSummary:s((e,t)=>({name:e,description:t.description??null,root:!!t.root,globs:t.globs??null,targets:t.targets??null}),"toSummary")});var Die=z$1.object({description:z$1.string().optional(),"allowed-tools":z$1.array(z$1.string()).optional()}).passthrough(),FV=kp({feature:"commands",frontmatterSchema:Die,toSummary:s((e,t)=>({name:e,description:t.description??null,allowedTools:t["allowed-tools"]??null}),"toSummary")});var Nie=z$1.object({name:z$1.string().optional(),description:z$1.string().optional(),tools:z$1.array(z$1.string()).optional(),model:z$1.string().optional()}).passthrough(),MV=kp({feature:"agents",frontmatterSchema:Nie,toSummary:s((e,t)=>({name:e,description:t.description??null,tools:t.tools??null,model:t.model??null}),"toSummary")});var vie=z$1.object({name:z$1.string().describe('Item name (e.g. "auth", "code-review")')}),Fie=z$1.object({name:z$1.string().describe('Item name (e.g. "auth", "code-review")'),frontmatter:z$1.record(z$1.string(),z$1.unknown()).describe("YAML frontmatter fields (e.g. { description, globs, targets })"),body:z$1.string().describe("Markdown body content"),dry_run:z$1.boolean().optional().describe("Preview changes without writing to disk")}),Mie=z$1.object({}).strict();function aC(e,t){let r=e==="rule"?"rules":e==="command"?"commands":"agents";return [{name:`list_${r}`,description:`List ${r} with summary metadata`,inputSchema:Mie,handler:s(n=>t.list(n),"handler"),resourceUri:`agentsmesh://canonical/${r}`},{name:`get_${e}`,description:`Get a single ${e} by name`,inputSchema:vie,handler:s((n,o)=>t.get(n,o),"handler"),resourceUri:`agentsmesh://canonical/${r}/{name}`},{name:`create_${e}`,description:`Create a new ${e}`,inputSchema:Fie,handler:s((n,o)=>t.create(n,o),"handler")},{name:`update_${e}`,description:`Update a ${e}. Default: replace frontmatter entirely. Set merge=true to shallow-merge. Omitting body preserves the existing body.`,inputSchema:z$1.object({name:z$1.string().describe("Name of the item to update"),frontmatter:z$1.record(z$1.string(),z$1.unknown()).optional().describe("New frontmatter fields (replaces by default; set merge=true to shallow-merge)"),body:z$1.string().optional().describe("New markdown body (omit to preserve existing)"),merge:z$1.boolean().optional().describe("If true, shallow-merge frontmatter instead of replacing"),dry_run:z$1.boolean().optional().describe("Preview changes without writing to disk")}),handler:s((n,o)=>t.update(n,o),"handler")},{name:`delete_${e}`,description:`Delete a ${e}. For rules: deleting _root requires force=true.`,inputSchema:z$1.object({name:z$1.string().describe("Name of the item to delete"),force:z$1.boolean().optional().describe("Required to delete protected files like _root"),dry_run:z$1.boolean().optional().describe("Preview without deleting")}),handler:s((n,o)=>t.delete(n,o),"handler")}]}s(aC,"canonicalTools");var GV=[...aC("rule",vV),...aC("command",FV),...aC("agent",MV)];async function jV(e){let t=resolve(e.projectRoot,".agentsmesh/skills",e.skillName),r=resolve(t,e.filePath);await et({root:t,target:r,boundaryRoot:e.projectRoot,message:"file escapes skill directory"});try{return await readFile(r,"utf8")}catch(n){throw n.code==="ENOENT"?new N("NOT_FOUND",`skill file not found: ${e.filePath}`):new N("IO_ERROR","failed to read skill file")}}s(jV,"safeRead");var Kie=/^[a-zA-Z0-9_][a-zA-Z0-9_-]*$/,Wie=/^[a-zA-Z0-9_][a-zA-Z0-9_/-]*\.[a-zA-Z0-9]+$/,WV=z$1.object({name:z$1.string().optional(),description:z$1.string().optional()}).passthrough();function Vd(e){if(!Kie.test(e))throw new N("INVALID_NAME",`invalid skill name: ${e}`)}s(Vd,"checkName");function mC(e){if(!Wie.test(e)||e.includes("..")||e.includes("//"))throw new N("PATH_TRAVERSAL",`invalid supporting-file path: ${e}`)}s(mC,"checkSupportPath");async function m_(e,t,r,n){if(await et({root:t,target:r,boundaryRoot:e,message:"file escapes skill directory"}),Buffer.byteLength(n,"utf8")>1048576)throw new N("LIMIT_EXCEEDED","file body exceeds 1 MiB cap");await mkdir(dirname(r),{recursive:true});let o=`${r}.tmp.${process.pid}.${Date.now()}`;await writeFile(o,n,"utf8"),await rename(o,r);}s(m_,"atomicWrite");var Yd=s(e=>resolve(e,".agentsmesh/skills"),"skillsDir"),Jd=s((e,t)=>resolve(Yd(e),t),"skillDir");async function p_(e,t,r){await et({root:t,target:r,boundaryRoot:e,message:"file escapes skill directory"});}s(p_,"assertSkillFile");var dc={async list(e){await et({root:e.projectRoot,target:Yd(e.projectRoot),message:"skills directory escapes project"});let t;try{t=(await readdir(Yd(e.projectRoot),{withFileTypes:!0})).filter(n=>n.isDirectory()).map(n=>n.name);}catch{return []}let r=[];for(let n of t)try{let o=Jd(e.projectRoot,n),i=resolve(o,"SKILL.md");await p_(e.projectRoot,o,i);let a=await readFile(i,"utf8"),l=Ga(a).frontmatter;r.push({name:n,description:l.description??null});}catch{}return r},async get(e,{name:t}){Vd(t);let r=Jd(e.projectRoot,t),n=resolve(r,"SKILL.md");await p_(e.projectRoot,r,n);try{let o=await readFile(n,"utf8"),{frontmatter:i,body:a}=Ga(o),c=(await readdir(r)).filter(m=>m!=="SKILL.md").sort();return {name:t,frontmatter:i,body:a,supportingFiles:c}}catch(o){throw o.code==="ENOENT"?new N("NOT_FOUND",`skill "${t}" not found`):new N("IO_ERROR","failed to read skill")}},async getFile(e,{name:t,path:r}){return Vd(t),mC(r),{content:await jV({projectRoot:e.projectRoot,skillName:t,filePath:r}),encoding:"utf-8"}},async create(e,t){Vd(t.name);let r=Jd(e.projectRoot,t.name);await et({root:Yd(e.projectRoot),target:r,boundaryRoot:e.projectRoot,message:"skill escapes skills directory"});let n=WV.safeParse(t.frontmatter);if(!n.success)throw new N("VALIDATION_FAILED","invalid frontmatter",n.error.issues);let o=false;try{await stat(r),o=!0;}catch{}if(o)throw new N("ALREADY_EXISTS",`skill "${t.name}" exists`);let i=t.supportingFiles??{},a=Object.keys(i);if(a.forEach(mC),a.length+1>1e3)throw new N("LIMIT_EXCEEDED","supporting files exceed cap");if(t.dry_run===true)return {path:r,written:false,supportingFilesWritten:[]};let l=resolve(r,"SKILL.md");await m_(e.projectRoot,r,l,Ip(t.frontmatter,t.body));for(let[c,m]of Object.entries(i))await m_(e.projectRoot,r,resolve(r,c),m);return {path:r,written:true,supportingFilesWritten:a}},async update(e,t){Vd(t.name);let r=Jd(e.projectRoot,t.name),n=resolve(r,"SKILL.md");await p_(e.projectRoot,r,n);let o;try{let u=await readFile(n,"utf8");o=Ga(u);}catch(u){throw u.code==="ENOENT"?new N("NOT_FOUND",`skill "${t.name}" not found`):new N("IO_ERROR","failed to read skill")}let i=t.frontmatter===void 0?o.frontmatter:t.merge===true?{...o.frontmatter,...t.frontmatter}:t.frontmatter,a=WV.safeParse(i);if(!a.success)throw new N("VALIDATION_FAILED","invalid frontmatter",a.error.issues);let l=t.body!==void 0?t.body:o.body,c=t.supportingFiles??{};Object.keys(c).forEach(mC);let m=[],p=[];if(t.dry_run===true)return Object.entries(c).forEach(([u,f])=>(f===null?p:m).push(u)),{path:r,written:false,supportingFilesAffected:{written:m,deleted:p}};await m_(e.projectRoot,r,resolve(r,"SKILL.md"),Ip(i,l));for(let[u,f]of Object.entries(c)){let g=resolve(r,u);if(f===null)try{await p_(e.projectRoot,r,g),await rm$1(g),p.push(u);}catch(h){if(h instanceof N||h.code!=="ENOENT")throw h}else await m_(e.projectRoot,r,g,f),m.push(u);}return {path:r,written:true,supportingFilesAffected:{written:m,deleted:p}}},async delete(e,{name:t,dry_run:r}){Vd(t);let n=Jd(e.projectRoot,t);await et({root:Yd(e.projectRoot),target:n,boundaryRoot:e.projectRoot,message:"skill escapes skills directory"});try{await stat(n);}catch{throw new N("NOT_FOUND",`skill "${t}" not found`)}return r===true?{path:n,deleted:false}:(await rm$1(n,{recursive:true}),{path:n,deleted:true})}};var Hie=z$1.object({}).strict(),zie=z$1.object({name:z$1.string().describe("Item name")}),HV=[{name:"list_skills",description:"List skills",inputSchema:Hie,handler:s(e=>dc.list(e),"handler"),resourceUri:"agentsmesh://canonical/skills"},{name:"get_skill",description:"Get one skill (frontmatter + body + supporting filenames)",inputSchema:zie,handler:s((e,t)=>dc.get(e,t),"handler"),resourceUri:"agentsmesh://canonical/skills/{name}"},{name:"get_skill_file",description:"Read a skill supporting file by name and relative path",inputSchema:z$1.object({name:z$1.string().describe("Skill name"),path:z$1.string().describe('Relative path within the skill directory (e.g. "helper.md")')}),handler:s((e,t)=>dc.getFile(e,t),"handler"),resourceUri:"agentsmesh://canonical/skills/{name}/files/{path}"},{name:"create_skill",description:"Create a skill directory with SKILL.md and optional supporting files",inputSchema:z$1.object({name:z$1.string().describe("Skill name (becomes directory name)"),frontmatter:z$1.record(z$1.string(),z$1.unknown()).describe("YAML frontmatter for SKILL.md"),body:z$1.string().describe("Markdown body for SKILL.md"),supportingFiles:z$1.record(z$1.string(),z$1.string()).optional().describe("Map of relative-path \u2192 content for supporting files"),dry_run:z$1.boolean().optional().describe("Preview without writing")}),handler:s((e,t)=>dc.create(e,t),"handler")},{name:"update_skill",description:"Update a skill. supportingFiles: string value writes/replaces, null deletes, unlisted files are untouched.",inputSchema:z$1.object({name:z$1.string().describe("Skill name"),frontmatter:z$1.record(z$1.string(),z$1.unknown()).optional().describe("New frontmatter (replaces by default; merge=true to shallow-merge)"),body:z$1.string().optional().describe("New body (omit to preserve existing)"),merge:z$1.boolean().optional().describe("Shallow-merge frontmatter instead of replacing"),supportingFiles:z$1.record(z$1.string(),z$1.union([z$1.string(),z$1.null()])).optional().describe("Map of path \u2192 content (string=write, null=delete, absent=keep)"),dry_run:z$1.boolean().optional().describe("Preview without writing")}),handler:s((e,t)=>dc.update(e,t),"handler")},{name:"delete_skill",description:"Delete a skill",inputSchema:z$1.object({name:z$1.string(),dry_run:z$1.boolean().optional()}),handler:s((e,t)=>dc.delete(e,t),"handler")}];async function zV(e){if(e.filename!==void 0&&e.filename!=="agentsmesh.yaml")throw new N("PATH_TRAVERSAL","only agentsmesh.yaml is writable");if(Buffer.byteLength(e.content,"utf8")>1048576)throw new N("LIMIT_EXCEEDED","config exceeds 1 MiB cap");let t=resolve(e.projectRoot,"agentsmesh.yaml");await et({root:e.projectRoot,target:t,message:"config path escapes project directory"});let r=`${t}.tmp.${process.pid}.${Date.now()}`;return await writeFile(r,e.content,"utf8"),await rename(r,t),t}s(zV,"safeConfigWrite");function Xie(e){if(!e||typeof e!="object")return [e];let t=e,r=t.hooks;return Array.isArray(r)?r.map(n=>{let o=n&&typeof n=="object"?n:{};return {matcher:t.matcher,...o.type!==void 0&&{type:o.type},...o.command!==void 0&&{command:o.command},...o.prompt!==void 0&&{prompt:o.prompt},...o.timeout!==void 0&&{timeout:o.timeout}}}):[t]}s(Xie,"flattenEntry");function VV(e){let t={};for(let[r,n]of Object.entries(e))t[r]=Array.isArray(n)?n.flatMap(Xie):n;return t}s(VV,"normalizeHooksRecord");is();Kp();async function $a(e,t){await et({root:e,target:t,message:"config path escapes project directory"});}s($a,"assertWithinProject");async function Xd(e,t){await $a(e,t);try{return parse(await readFile(t,"utf8"))}catch(r){if(r.code==="ENOENT")return null;throw new N("IO_ERROR","failed to read yaml")}}s(Xd,"readYaml");async function Ep(e,t,r){if(await $a(e,t),Buffer.byteLength(r,"utf8")>1048576)throw new N("LIMIT_EXCEEDED","file exceeds 1 MiB cap");let n=`${t}.tmp.${process.pid}.${Date.now()}`;await writeFile(n,r,"utf8"),await rename(n,t);}s(Ep,"atomicWrite");var Or={async getConfig(e){let t=await Xd(e.projectRoot,resolve(e.projectRoot,"agentsmesh.yaml"));if(t===null)throw new N("NO_PROJECT","agentsmesh.yaml missing");return t},async listMcpServers(e){let t=resolve(e.projectRoot,".agentsmesh/mcp.json");await $a(e.projectRoot,t);try{return {servers:(await dn(t))?.mcpServers??null}}catch{return {servers:null}}},async getPermissions(e){return await Xd(e.projectRoot,resolve(e.projectRoot,".agentsmesh/permissions.yaml"))??null},async getHooks(e){return await Xd(e.projectRoot,resolve(e.projectRoot,".agentsmesh/hooks.yaml"))??null},async getIgnore(e){let t=resolve(e.projectRoot,".agentsmesh/ignore");await $a(e.projectRoot,t);try{return {patterns:(await readFile(t,"utf8")).split(/\r?\n/).filter(n=>n!==""&&!n.startsWith("#"))}}catch{return {patterns:null}}},async updateConfig(e,t){let r=await Xd(e.projectRoot,resolve(e.projectRoot,"agentsmesh.yaml"))??{},n={...r},o=s((c,m)=>{m!==void 0&&(n[c]=t.merge===true&&Array.isArray(r[c])?Array.from(new Set([...r[c],...m])):m);},"apply");o("targets",t.targets),o("features",t.features),t.conversions!==void 0&&(n.conversions=t.merge===true&&r.conversions!==void 0?{...r.conversions,...t.conversions}:t.conversions);let i=Va.safeParse(n);if(!i.success)throw new N("VALIDATION_FAILED","invalid config",i.error.issues);let a=stringify(n);return t.dry_run===true?{path:resolve(e.projectRoot,"agentsmesh.yaml"),written:false}:{path:await zV({projectRoot:e.projectRoot,content:a,filename:t.filename}),written:true}},async addMcpServer(e,t){let r=resolve(e.projectRoot,".agentsmesh/mcp.json");await $a(e.projectRoot,r);let n=await dn(r).catch(()=>null)??{mcpServers:{}};if(n.mcpServers[t.name]!==void 0)throw new N("ALREADY_EXISTS",`server "${t.name}" exists`);return n.mcpServers[t.name]=t.server,t.dry_run===true?{path:r,written:false}:(await Ep(e.projectRoot,r,JSON.stringify(n,null,2)+`
|
|
711
|
+
`),{path:r,written:true})},async updateMcpServer(e,t){let r=resolve(e.projectRoot,".agentsmesh/mcp.json");await $a(e.projectRoot,r);let n=await dn(r).catch(()=>null);if(n===null||n.mcpServers[t.name]===void 0)throw new N("NOT_FOUND",`server "${t.name}" not found`);return n.mcpServers[t.name]=t.merge===true?{...n.mcpServers[t.name],...t.server}:t.server,t.dry_run===true?{path:r,written:false}:(await Ep(e.projectRoot,r,JSON.stringify(n,null,2)+`
|
|
712
|
+
`),{path:r,written:true})},async removeMcpServer(e,t){let r=resolve(e.projectRoot,".agentsmesh/mcp.json");await $a(e.projectRoot,r);let n=await dn(r).catch(()=>null);if(n===null||n.mcpServers[t.name]===void 0)throw new N("NOT_FOUND",`server "${t.name}" not found`);return delete n.mcpServers[t.name],t.dry_run===true?{path:r,removed:false}:(await Ep(e.projectRoot,r,JSON.stringify(n,null,2)+`
|
|
713
|
+
`),{path:r,removed:true})},async updatePermissions(e,t){let r=resolve(e.projectRoot,".agentsmesh/permissions.yaml"),n=await Xd(e.projectRoot,r)??{allow:[],deny:[],ask:[]},o={...n},i=s((a,l)=>{l!==void 0&&(o[a]=t.mode==="append"?Array.from(new Set([...n[a]??[],...l])):l);},"apply");return i("allow",t.allow),i("deny",t.deny),i("ask",t.ask),t.dry_run===true?{path:r,written:false}:(await Ep(e.projectRoot,r,stringify(o)),{path:r,written:true})},async updateHooks(e,t){let r=resolve(e.projectRoot,".agentsmesh/hooks.yaml");return t.dry_run===true?{path:r,written:false}:(await Ep(e.projectRoot,r,stringify(VV(t.hooks))),{path:r,written:true})},async updateIgnore(e,t){let r=resolve(e.projectRoot,".agentsmesh/ignore"),n;if(t.mode==="append"){await $a(e.projectRoot,r);let o=(await readFile(r,"utf8").catch(()=>"")).split(/\r?\n/).filter(Boolean);n=Array.from(new Set([...o,...t.patterns]));}else n=t.patterns;return t.dry_run===true?{path:r,written:false}:(await Ep(e.projectRoot,r,n.join(`
|
|
714
714
|
`)+`
|
|
715
|
-
`),{path:r,written:true})}};var cae=/[;&|`$<>!\\\r\n]/u,mae=/^[A-Za-z_][A-Za-z0-9_]*$/u,pae=/^[A-Za-z][A-Za-z0-9_-]*$/u,uae=/^[A-Za-z][A-Za-z0-9_-]*(\([^)]*\))?$/u,XV=/[\r\n]/u,QV=/[\0\r\n]/u;function dae(e){return QV.test(e)?false:!e.split(/[/\\]/u).includes("..")}s(dae,"isSafeMcpCwd");function fae(e){return z$1.string().min(1).max(512).refine(t=>!cae.test(t),{message:`${e} must not contain shell metacharacters (;&|\`$<>!\\\\, newlines)`})}s(fae,"noShellMeta");var dC=z$1.object({type:z$1.enum(["stdio","sse","http","streamable-http","streamable_http"]).optional(),description:z$1.string().max(1024).refine(e=>!QV.test(e),{message:"description must not contain NUL or newline characters"}).optional(),command:fae("command").optional(),args:z$1.array(z$1.string().max(2048)).max(100).optional(),env:z$1.record(z$1.string().regex(mae,"env key must be a valid identifier"),z$1.string().max(8192)).optional(),url:z$1.string().url().max(2048).refine(e=>/^https?:\/\//u.test(e),{message:"url must use http(s) protocol"}).optional(),headers:z$1.record(z$1.string().regex(pae,"header name must be a valid identifier"),z$1.string().max(8192)).optional(),cwd:z$1.string().max(2048).refine(dae,{message:'cwd must not contain "..", NUL, or newline characters'}).optional(),disabled:z$1.boolean().optional(),timeout:z$1.number().int().nonnegative().max(36e5).optional()}).strict(),gae=z$1.object({type:z$1.enum(["command","prompt"]).optional(),command:z$1.string().min(1).max(8192).optional(),prompt:z$1.string().min(1).max(8192).optional(),timeout:z$1.number().int().nonnegative().max(36e5).optional()}).strict().refine(e=>(e.command??"").length>0||(e.prompt??"").length>0,{message:"hook entry must define command or prompt"}),qV=z$1.string().max(256).refine(e=>!XV.test(e),{message:"hook matcher must not contain newlines"}),hae=z$1.object({matcher:qV,type:z$1.enum(["command","prompt"]).optional(),command:z$1.string().min(1).max(8192).optional(),prompt:z$1.string().min(1).max(8192).optional(),timeout:z$1.number().int().nonnegative().max(36e5).optional()}).strict().refine(e=>(e.command??"").length>0||(e.prompt??"").length>0,{message:"hook entry must define command or prompt"}),yae=z$1.object({matcher:qV,hooks:z$1.array(gae).min(1).max(50)}).strict(),_ae=z$1.union([hae,yae]),ZV=z$1.record(z$1.string().min(1).max(64),z$1.array(_ae).max(100)),Sae=z$1.string().min(1).max(256).refine(e=>!XV.test(e),{message:"permission pattern must not contain newlines"}).refine(e=>uae.test(e),{message:"permission pattern must match Tool or Tool(matcher) form"}),d_=z$1.array(Sae).max(500);var Qd=z$1.object({}).strict(),Rae=[{name:"get_config",description:"Read agentsmesh.yaml",inputSchema:Qd,handler:s(e=>Or.getConfig(e),"handler"),resourceUri:"agentsmesh://config"},{name:"list_mcp_servers",description:"List MCP servers in canonical mcp.json",inputSchema:Qd,handler:s(e=>Or.listMcpServers(e),"handler"),resourceUri:"agentsmesh://canonical/mcp"},{name:"get_permissions",description:"Read permissions.yaml",inputSchema:Qd,handler:s(e=>Or.getPermissions(e),"handler"),resourceUri:"agentsmesh://canonical/permissions"},{name:"get_hooks",description:"Read hooks.yaml",inputSchema:Qd,handler:s(e=>Or.getHooks(e),"handler"),resourceUri:"agentsmesh://canonical/hooks"},{name:"get_ignore",description:"Read ignore patterns",inputSchema:Qd,handler:s(e=>Or.getIgnore(e),"handler"),resourceUri:"agentsmesh://canonical/ignore"}],Iae=[{name:"update_config",description:"Update agentsmesh.yaml. Default: replace listed fields. Set merge=true to union arrays and shallow-merge objects. Only writes agentsmesh.yaml, never agentsmesh.local.yaml.",inputSchema:z$1.object({targets:z$1.array(z$1.string()).optional().describe('Target tool IDs (e.g. ["claude-code", "cursor"])'),features:z$1.array(z$1.string()).optional().describe('Feature names (e.g. ["rules", "commands", "mcp"])'),conversions:z$1.record(z$1.string(),z$1.unknown()).optional().describe("Conversion overrides"),merge:z$1.boolean().optional().describe("If true, union arrays and shallow-merge objects instead of replacing"),dry_run:z$1.boolean().optional().describe("Preview without writing")}),handler:s((e,t)=>Or.updateConfig(e,t),"handler")},{name:"add_mcp_server",description:"Add an MCP server entry to .agentsmesh/mcp.json. Fails if name already exists.",inputSchema:z$1.object({name:z$1.string().describe('Server name (e.g. "github", "filesystem")'),server:dC.describe('Server config (e.g. { type: "stdio", command: "npx", args: [...], env: {...} })'),dry_run:z$1.boolean().optional().describe("Preview without writing")}),handler:s((e,t)=>Or.addMcpServer(e,t),"handler")},{name:"update_mcp_server",description:"Update an MCP server entry (replace or merge)",inputSchema:z$1.object({name:z$1.string(),server:dC,merge:z$1.boolean().optional(),dry_run:z$1.boolean().optional()}),handler:s((e,t)=>Or.updateMcpServer(e,t),"handler")},{name:"remove_mcp_server",description:"Remove an MCP server entry",inputSchema:z$1.object({name:z$1.string(),dry_run:z$1.boolean().optional()}),handler:s((e,t)=>Or.removeMcpServer(e,t),"handler")},{name:"update_permissions",description:"Update permissions.yaml. mode=replace (default) overwrites listed fields; mode=append unions and dedups.",inputSchema:z$1.object({allow:d_.optional().describe('Allowed tool patterns (e.g. ["Bash(npm run:*)"])'),deny:d_.optional().describe("Denied tool patterns"),ask:d_.optional().describe("Tools requiring confirmation"),mode:z$1.enum(["replace","append"]).optional().describe("replace=overwrite, append=union+dedup (default: replace)"),dry_run:z$1.boolean().optional().describe("Preview without writing")}),handler:s((e,t)=>Or.updatePermissions(e,t),"handler")},{name:"update_hooks",description:"Replace hooks.yaml content entirely. Read current hooks with get_hooks, modify, then write back.",inputSchema:z$1.object({hooks:ZV.describe("Full hooks structure (e.g. { PreToolUse: [...], PostToolUse: [...] })"),dry_run:z$1.boolean().optional().describe("Preview without writing")}),handler:s((e,t)=>Or.updateHooks(e,t),"handler")},{name:"update_ignore",description:"Update .agentsmesh/ignore patterns. mode=replace (default) overwrites; mode=append adds new patterns.",inputSchema:z$1.object({patterns:z$1.array(z$1.string()).describe('Gitignore-syntax patterns (e.g. ["node_modules/", "dist/", ".env*"])'),mode:z$1.enum(["replace","append"]).optional().describe("replace=overwrite, append=add (default: replace)"),dry_run:z$1.boolean().optional().describe("Preview without writing")}),handler:s((e,t)=>Or.updateIgnore(e,t),"handler")}],eJ=[...Rae,...Iae];$L();pn();function kae(){return Object.fromEntries(Ue.map(e=>[e,Object.fromEntries(Object.entries(aK).map(([t,r])=>[t,r[e]]))]))}s(kae,"buildTargetIndex");var tJ=kae(),fC={async list(){return tJ},async get(e){let t=tJ[e.targetId];if(t===void 0)throw new N("NOT_FOUND",`unknown target: ${e.targetId}`);return {targetId:e.targetId,capabilities:t}}};ss();ss();hf();nt();Xo();an();ot();pn();async function gC(e,t){let r=ne(e);if(!r)throw new Zn(e,{supported:[...Ue,...Df().map(n=>n.id)]});return r.generators.importFrom(t.root,{scope:t.scope??"project"})}s(gC,"importFrom");async function qd(e,t={}){let r=t.scope??"project",{config:n,context:o}=await _e(e,r);await Ve(n,e);let{canonical:i}=await Bt(n,o.configDir,{refreshRemoteCache:t.refreshRemoteCache===true},o.canonicalDir);return {config:n,canonical:i,projectRoot:o.rootBase,scope:r,configDir:o.configDir,canonicalDir:o.canonicalDir}}s(qd,"loadProjectContext");async function hC(e){let t=e.targetFilter?[...e.targetFilter]:void 0;return vy(e.config,e.canonical,e.projectRoot,t,{scope:e.scope})}s(hC,"lint");async function yC(e){let t=await Qo(e);return {...Dy(t),results:t}}s(yC,"diff");async function _C(e){return Fy(e)}s(_C,"check");ss();Xo();Qa();hf();Te();ot();Ae();function dc(e,t={}){let r=Math.max(1,t.cap??gy),n=Iy(e),o=[],i=new Map;for(let[f,g]of Object.entries(e.lessons)){if(g.status!=="active")continue;if(t.trimOverCap===false||g.triggers.length<=r){i.set(f,g.triggers);continue}let h=[...g.triggers].sort((R,k)=>{let w=n.get(R),D=n.get(k);return w!==D?w-D:R<k?-1:1}),y=new Set(h.slice(r)),_=g.triggers.filter(R=>!y.has(R));i.set(f,_),o.push({id:f,removedTriggers:[...y],keptCount:_.length});}let a=[],l=[];if(t.knownPaths!==void 0){let f=Rd(e,t.knownPaths);if(f.size>0){for(let[g,h]of i){let y=h.filter(R=>f.has(R));if(y.length===0)continue;let _=h.filter(R=>!f.has(R));_.length>=1?(i.set(g,_),a.push({id:g,removedTriggers:y,keptCount:_.length})):l.push(g);}l.sort();}}let c=new Set;for(let f of i.values())for(let g of f)c.add(g);let m=Object.keys(e.triggers).filter(f=>!c.has(f)).sort(),p=new Set;for(let f of Object.values(e.lessons))for(let g of f.topics)p.add(g);let u=Object.keys(e.topics).filter(f=>!p.has(f)).sort();return {removedTriggerIds:m,removedTopicIds:u,trimmedLessons:o,removedDeadGlobs:a,unreachableLessons:l,cap:r}}s(dc,"planPrune");function f_(e,t){for(let n of [...t.trimmedLessons,...t.removedDeadGlobs??[]]){let o=e.lessons[n.id];if(o===void 0)continue;let i=new Set(n.removedTriggers);e.lessons[n.id]={...o,triggers:o.triggers.filter(a=>!i.has(a))};}for(let n of t.removedTopicIds)delete e.topics[n];let r=new Set(t.removedTriggerIds);if(r.size!==0){for(let[n,o]of Object.entries(e.lessons))o.triggers.some(i=>r.has(i))&&(e.lessons[n]={...o,triggers:o.triggers.filter(i=>!r.has(i))});for(let n of r)delete e.triggers[n];}}s(f_,"applyPruneToGraph");function Zd(e){return e.removedTriggerIds.length===0&&e.removedTopicIds.length===0&&e.trimmedLessons.length===0&&e.removedDeadGlobs.length===0}s(Zd,"isEmptyPrunePlan");function bae(e){let t=ve(e).config;if(!existsSync(t))return false;try{let r=JSON.parse(readFileSync(t,"utf8"));return typeof r!="object"||r===null?!1:r.autoPrune===!0}catch{return false}}s(bae,"isAutoPruneEnabled");async function rJ(e,t){if(!bae(e))return null;let r=Ye(e);if(r===null||Zd(dc(r,{trimOverCap:false,knownPaths:t})))return null;let n={removedTriggers:0,removedTopics:0,detachedDeadGlobs:0};return await At(e,i=>{let a=dc(i,{trimOverCap:false,knownPaths:t});Zd(a)||(f_(i,a),n={removedTriggers:a.removedTriggerIds.length,removedTopics:a.removedTopicIds.length,detachedDeadGlobs:a.removedDeadGlobs.reduce((l,c)=>l+c.removedTriggers.length,0)});}),n.removedTriggers+n.removedTopics+n.detachedDeadGlobs>0?n:null}s(rJ,"maybeAutoPrune");function $a(e,t){let r=e.replaceAll("\\","/"),n=nJ(t,r);if(!n.startsWith("../"))return n;let o=nJ(SC(t),SC(resolve(t,r)));return o.startsWith("../")?n:o}s($a,"normalizeRecallFile");function nJ(e,t){let r=relative(e,resolve(e,t)).replaceAll("\\","/");return r===""?t.replaceAll("\\","/"):r}s(nJ,"relativize");function SC(e){try{return realpathSync(e)}catch{let t=dirname(e);return t===e?e:resolve(SC(t),basename(e))}}s(SC,"safeRealpath");var Kae="agentsmesh-lessons-seen";function ja(e={}){if(e.disabled===true)return null;let t=e.explicit!==void 0&&e.explicit.trim().length>0?e.explicit.trim():Li(e.env);if(t===void 0)return null;let r=oJ(t,e.projectRoot);return {sessionId:t,seen:Hae(r),path:r}}s(ja,"openSessionDedup");function Wae(e){let t=5381;for(let r=0;r<e.length;r+=1)t=(t<<5)+t+e.charCodeAt(r)>>>0;return t.toString(36)}s(Wae,"shortHash");function oJ(e,t){let r=e.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,200),n=t===void 0?r:`${r}__${Wae(resolve(t))}`;return join(tmpdir(),Kae,`${n}.json`)}s(oJ,"seenPath");function sJ(e,t){try{rmSync(oJ(e,t),{force:!0});}catch{}}s(sJ,"clearSeen");function Hae(e){if(!existsSync(e))return new Set;try{let t=JSON.parse(readFileSync(e,"utf8"));return Array.isArray(t)?new Set(t.filter(r=>typeof r=="string")):new Set}catch{return new Set}}s(Hae,"loadSeen");function Cp(e,t){return t.filter(r=>!e.seen.has(r.id))}s(Cp,"filterUnseen");function Ua(e,t){if(t.length===0)return;let r=new Set(e.seen);for(let n of t)r.add(n);if(r.size!==e.seen.size)try{mkdirSync(dirname(e.path),{recursive:!0});let n=`${e.path}.${process.pid}.tmp`;writeFileSync(n,JSON.stringify([...r]),"utf8"),renameSync(n,e.path);}catch{}}s(Ua,"commitSeen");async function fc(e,t,r={}){try{await rt(e);}catch{}let n=ba(e);if(n.status==="corrupt")return {lessons:[],totalMatches:0,suppressed:0,corrupt:true};if(n.status==="newer-version")return {lessons:[],totalMatches:0,suppressed:0,newerVersion:n.version};if(n.status==="absent")return {lessons:[],totalMatches:0,suppressed:0};let o=n.graph,i=t.file===void 0?t:{...t,file:$a(t.file,e)},a=es(o,i),l=ja({explicit:r.sessionId,disabled:r.noDedup,projectRoot:e}),c=l===null?a:Cp(l,a),m=Oy(e),p=ap(o,i,c,{limit:r.limit??m.limit,maxTokens:r.maxTokens===null?void 0:r.maxTokens??m.maxTokens,effectiveness:wW(e)});return l!==null&&Ua(l,p.map(u=>u.id)),IC(e,o,i,a,p,{bypassed:false}),{lessons:p,totalMatches:a.length,suppressed:a.length-c.length}}s(fc,"recallLessons");function IC(e,t,r,n,o,i={}){if(!cn())return;let a=aE(t,r),l=s(m=>n.filter(({lesson:p})=>p.triggers.some(u=>m.has(u))).length,"countVia"),c=Li();hW(e,{ts:new Date().toISOString(),hasFile:r.file!==void 0,hasCommand:r.command!==void 0,hasKeyword:r.keyword!==void 0,totalMatches:n.length,returnedCount:o.length,returnedTokens:o.reduce((m,p)=>m+Ei(p.lesson.rule),0),truncated:n.length>o.length,matchedByKind:{file:l(a.file_glob),command:l(a.command_pattern),keyword:l(a.keyword)},lessonIds:o.map(m=>m.id),bypassed:i.bypassed===true,...c!==void 0?{session:c}:{}});}s(IC,"recordRecallTelemetry");async function ef(e,t,r={}){await rt(e);let n={file:t.triggers.files?.length??0,command:t.triggers.commands?.length??0,keyword:t.triggers.keywords?.length??0},o=r.knownPaths??Pa(e)??void 0;try{let i=await _y(e,t,{...r,knownPaths:o});iE(e,n,i);let a=await rJ(e,o);return a===null?i:{...i,autoPruned:a}}catch(i){throw iE(e,n,null),i}}s(ef,"captureLesson");async function g_(e,t,r,n={}){return At(e,o=>zae(o,t,r),{retries:n.retries})}s(g_,"mergeLessons");function zae(e,t,r){if(t===r)throw new Error(`mergeLessons: cannot merge lesson "${t}" into itself.`);let n=e.lessons[t];if(n===void 0)throw new Error(`mergeLessons: unknown lesson "${t}".`);let o=e.lessons[r];if(o===void 0)throw new Error(`mergeLessons: unknown lesson "${r}".`);if(o.status!=="active")throw new Error(`mergeLessons: keeper "${r}" is not active (status: ${o.status}).`);if(n.status!=="active")throw new Error(`mergeLessons: loser "${t}" is already ${n.status}; nothing to merge.`);return e.lessons[r]={...o,triggers:kC(o.triggers,n.triggers),topics:kC(o.topics,n.topics),evidence:kC(o.evidence,n.evidence)},e.lessons[t]={...n,status:"superseded",supersededBy:r},{loserId:t,keeperId:r}}s(zae,"mergeInto");function kC(e,t){let r=[...e];for(let n of t)r.includes(n)||r.push(n);return r}s(kC,"union");var LC=String.raw`L\d+(?:\s*,\s*L\d+)*`,Vae=[new RegExp(String.raw`\s*\bSee\s+${LC}\.?`,"g"),new RegExp(String.raw`\s*\((?:${LC})\)\.?`,"g"),new RegExp(String.raw`\s*\[(?:${LC})\]\.?`,"g")],Jae=/\s*\(also relevant[^)]*\)\s*/g;function EC(e){let t=e;for(let r of Vae)t=t.replace(r,"");return t=t.replace(Jae," "),t.trim()}s(EC,"stripLegacyMarkers");function iJ(e){let t=[];for(let[r,n]of Object.entries(e.lessons)){let o=EC(n.rule);o===n.rule||o.length===0||(t.push(r),e.lessons[r]={...n,rule:o});}return t.sort()}s(iJ,"applyStrip");async function h_(e,t={}){await rt(e);let r=Ye(e);if(r===null)return {changedIds:[],changedCount:0};if(t.dryRun===true){let o=iJ(r);return {changedIds:o,changedCount:o.length}}let n=[];return await At(e,o=>{n=iJ(o);}),{changedIds:n,changedCount:n.length}}s(h_,"stripMarkersInGraph");function Ba(e){if(e instanceof N)throw e;if(e instanceof Zn)throw new N("VALIDATION_FAILED",e.message);let t=e instanceof Error?e.message:String(e);throw /unknown.*--from|unknown.*--to|unknown target/i.test(t)?new N("VALIDATION_FAILED",t):/lock/i.test(t)?new N("LOCK_HELD","generate lock is held"):new N("IO_ERROR","engine failure",{reason:t})}s(Ba,"wrapEngineError");async function aJ(e,t){if(t.dry_run===true)throw new N("VALIDATION_FAILED","dry_run is not supported for import \u2014 the engine writes files directly. Use diff to preview changes instead.");try{let r=await gC(t.from,{root:e.projectRoot,scope:"project"});return {imported:r.length,files:r.map(n=>({fromPath:n.fromPath,toPath:n.toPath,feature:n.feature})),warnings:[],errors:[]}}catch(r){if(r instanceof Zn)throw new N("VALIDATION_FAILED",`unknown target "${t.from}"`);let n=r instanceof Error?r.message:String(r);if(/unknown target|invalid target|not found/i.test(n))throw new N("VALIDATION_FAILED",n);Ba(r);}}s(aJ,"importFromTarget");async function lJ(e,t){try{let r={from:t.from,to:t.to,"dry-run":t.dry_run===!0},n=await n_(r,e.projectRoot);return {filesAffected:n.data.summary.created+n.data.summary.updated,dryRun:t.dry_run===!0,warnings:[],errors:[]}}catch(r){let n=r instanceof Error?r.message:String(r);if(/unknown.*--from|unknown.*--to|unknown target/i.test(n))throw new N("VALIDATION_FAILED",n);Ba(r);}}s(lJ,"convert");async function Yae(e,t){try{let r={"dry-run":t.dry_run===!0};t.targets&&t.targets.length>0&&(r.targets=t.targets.join(","));let{data:n}=await qo(r,e.projectRoot,{printMatrix:!1}),o=n.files.filter(l=>l.status==="created"||l.status==="updated"),i={};for(let l of o){let c=i[l.target]??{filesWritten:0};i[l.target]={filesWritten:c.filesWritten+1};}let a={filesWritten:o.length,byTarget:i,lockfileUpdated:t.dry_run!==!0,errors:[],warnings:[]};return t.verbose===!0&&(a.files=n.files.map(l=>l.path)),a}catch(r){Ba(r);}}s(Yae,"generate");async function Xae(e,t){try{let r=await qd(e.projectRoot),n=await hC({config:r.config,canonical:r.canonical,projectRoot:r.projectRoot,scope:r.scope});return {issues:(t.severity?n.diagnostics.filter(i=>i.level===t.severity):n.diagnostics).map(i=>({level:i.level,file:i.file,target:i.target,message:i.message}))}}catch(r){Ba(r);}}s(Xae,"lint");async function Qae(e){try{let t=await qd(e.projectRoot),r=await _C({config:t.config,configDir:t.configDir,canonicalDir:t.canonicalDir});return {drift:!r.inSync,missing:[...r.removed],extra:[...r.added],modified:[...r.modified]}}catch(t){Ba(t);}}s(Qae,"check");async function qae(e,t){try{let r=await qd(e.projectRoot),n=t.targets&&t.targets.length>0?t.targets:void 0,o=await yC({config:r.config,canonical:r.canonical,projectRoot:r.projectRoot,scope:r.scope,targetFilter:n});return {willCreate:o.summary.new,willModify:o.summary.updated,willDelete:o.summary.deleted}}catch(r){Ba(r);}}s(qae,"diff");var gc={generate:Yae,lint:Xae,check:Qae,diff:qae,import:aJ,convert:lJ};var cJ=z$1.object({}).strict(),mJ=[{name:"list_target_capabilities",description:"List support matrix for all targets",inputSchema:cJ,handler:s(()=>fC.list(),"handler"),resourceUri:"agentsmesh://capabilities"},{name:"get_target_capabilities",description:"Get feature support levels for a specific target (e.g. which features are native, mapped, or unsupported)",inputSchema:z$1.object({targetId:z$1.string().describe('Target tool ID (e.g. "claude-code", "cursor")')}),handler:s((e,t)=>fC.get(t),"handler"),resourceUri:"agentsmesh://capabilities/{targetId}"},{name:"generate",description:"Generate target-native config files from canonical .agentsmesh/ content. Propagates rules, commands, agents, skills, MCP, hooks, ignore, and permissions to all configured targets.",inputSchema:z$1.object({targets:z$1.array(z$1.string()).optional().describe("Filter to specific targets (default: all from agentsmesh.yaml)"),features:z$1.array(z$1.string()).optional().describe("Filter to specific features"),verbose:z$1.boolean().optional().describe("Include full file list in response"),dry_run:z$1.boolean().optional().describe("Preview without writing files")}),handler:s((e,t)=>gc.generate(e,t),"handler")},{name:"lint",description:"Lint canonical .agentsmesh/ files for schema errors, missing frontmatter, and other issues",inputSchema:z$1.object({severity:z$1.enum(["error","warning","info"]).optional().describe("Filter results by minimum severity")}),handler:s((e,t)=>gc.lint(e,t),"handler")},{name:"check",description:"Detect drift between canonical and lockfile",inputSchema:cJ,handler:s(e=>gc.check(e),"handler")},{name:"diff",description:"Preview what generate would create, modify, or delete without writing",inputSchema:z$1.object({targets:z$1.array(z$1.string()).optional().describe("Filter to specific targets"),features:z$1.array(z$1.string()).optional().describe("Filter to specific features")}),handler:s((e,t)=>gc.diff(e,t),"handler")},{name:"import",description:"Import another tool's native config into canonical .agentsmesh/. Note: dry_run is not supported (the engine writes directly).",inputSchema:z$1.object({from:z$1.string().describe('Source target ID to import from (e.g. "cursor", "claude-code")'),features:z$1.array(z$1.string()).optional().describe("Restrict import to specific features"),dry_run:z$1.boolean().optional().describe("NOT SUPPORTED \u2014 will throw VALIDATION_FAILED. Use diff instead.")}),handler:s((e,t)=>gc.import(e,t),"handler")},{name:"convert",description:"Convert config directly from one tool to another (e.g. Cursor \u2192 Claude Code) without creating canonical .agentsmesh/ files",inputSchema:z$1.object({from:z$1.string().describe('Source target ID (e.g. "cursor")'),to:z$1.string().describe('Destination target ID (e.g. "claude-code")'),dry_run:z$1.boolean().optional().describe("Preview conversion without writing files")}),handler:s((e,t)=>gc.convert(e,t),"handler")}];function CC(e){if(e instanceof N)throw e;let t=e instanceof Error?e.message:String(e),r=Rp(t);throw /lock|LockAcquisitionError/i.test(r)?new N("LOCK_HELD",".install.lock is held by another process"):/missing source|usage:|non-interactive|invalid|unknown|not found|escapes the source root/i.test(r)?new N("VALIDATION_FAILED",r):new N("IO_ERROR","install pipeline failure",{reason:r})}s(CC,"wrapInstallError");function Zae(e){let t={force:true};return e.path!==void 0&&(t.path=e.path),e.target!==void 0&&(t.target=e.target),e.as!==void 0&&(t.as=e.as),e.name!==void 0&&(t.name=e.name),e.extends===true&&(t.extends=true),e.all===true&&(t.all=true),e.sync===true&&(t.sync=true),e.dry_run===true&&(t["dry-run"]=true),e.global===true&&(t.global=true),t}s(Zae,"toInstallFlags");function ele(e){let t={force:true};return e.all===true&&(t.all=true),e.keep_pack===true&&(t["keep-pack"]=true),e.keep_generated===true&&(t["keep-generated"]=true),e.dry_run===true&&(t["dry-run"]=true),e.global===true&&(t.global=true),t}s(ele,"toUninstallFlags");async function tle(e,t){if(typeof t.source!="string"||t.source.trim().length===0)throw new N("VALIDATION_FAILED","install: `source` is required");try{let r=await mc(Zae(t),[t.source],e.projectRoot);if(r.exitCode!==0)throw new N("IO_ERROR",`install exited ${r.exitCode}`);return r.data}catch(r){CC(r);}}s(tle,"install");async function rle(e,t){if(t.all!==true&&(!Array.isArray(t.names)||t.names.length===0))throw new N("VALIDATION_FAILED","uninstall: pass `names: [...]` or set `all: true`");try{return (await qy(ele(t),t.names??[],e.projectRoot)).data}catch(r){CC(r);}}s(rle,"uninstall");async function nle(e,t={}){try{let r={};return t.global===!0&&(r.global=!0),(await e_(r,e.projectRoot)).data}catch(r){CC(r);}}s(nle,"installsList");var y_={install:tle,uninstall:rle,installsList:nle};function ole(e){let t={force:true};return e.dry_run===true&&(t["dry-run"]=true),e.global===true&&(t.global=true),t}s(ole,"toRefreshFlags");function sle(e){if(e instanceof N)throw e;let t=e instanceof Error?e.message:String(e),r=Rp(t);throw /lock|LockAcquisitionError/i.test(r)?new N("LOCK_HELD",".install.lock is held by another process"):/unknown pack|not found|usage:/i.test(r)?new N("VALIDATION_FAILED",r):/resolve|network|fetch/i.test(r)?new N("REFRESH_RESOLVE_FAILED",r):/materialize|apply|manifest-update/i.test(r)?new N("REFRESH_APPLY_FAILED",r):new N("IO_ERROR","refresh pipeline failure",{reason:r})}s(sle,"wrapRefreshError");async function ile(e,t={}){try{let r=await Zy(ole(t),[...t.names??[]],e.projectRoot);if(r.exitCode===2){let n=r.data.failed[0],o=t.names??[],i=n?.error??(o.length>0?`unknown pack(s): ${o.join(", ")}`:"refresh validation failed");throw new N("VALIDATION_FAILED",i)}return r.data}catch(r){sle(r);}}s(ile,"refresh");var pJ={refresh:ile};var ale=z$1.object({source:z$1.string().min(1).describe("Pack source \u2014 GitHub/GitLab shorthand (`github:org/repo[@ref]`), git URL, SSH URL, or local path (`local:./relative/dir`)."),path:z$1.string().optional().describe("Subdirectory within the source repo to install from. Combined with `as` for manual single-category installs."),target:z$1.string().optional().describe("Target tool ID hint for native-format auto-discovery (e.g. `claude-code`, `cursor`). Bypasses the multi-signal classifier."),as:z$1.enum(["rules","commands","agents","skills"]).optional().describe("Manual install kind. When set, the source is treated as a flat collection of that category (skips the auto-classifier)."),name:z$1.string().optional().describe("Override the generated install entry name (default: derived from `org-repo` shorthand or the source path)."),extends:z$1.boolean().optional().describe("Record as an `extends:` entry in `agentsmesh.yaml` instead of materializing a pack in `.agentsmesh/packs/`. Always-on-latest semantics; resolved every `generate`."),all:z$1.boolean().optional().describe("Install every sub-pack from a marketplace source (`.claude-plugin/marketplace.json`) or every flat collection in a multi-collection layout."),sync:z$1.boolean().optional().describe("Reinstall missing packs from `.agentsmesh/installs.yaml` instead of from `source`."),dry_run:z$1.boolean().optional().describe("Preview what would be installed without writing."),global:z$1.boolean().optional().describe("Install into the global scope (`~/.agentsmesh/`) instead of the project scope. Regenerates user-level outputs.")}),lle=z$1.object({names:z$1.array(z$1.string().min(1)).default([]).describe("Install names to remove (from `installs.yaml`). Required unless `all: true`. Each name removes the pack directory under `.agentsmesh/packs/`, the matching `installs.yaml` row, and the matching `agentsmesh.yaml` `extends:` row when present."),all:z$1.boolean().optional().describe("Remove every install in the current scope. `names` is ignored when `all: true`."),keep_pack:z$1.boolean().optional().describe("Leave `.agentsmesh/packs/<name>/` on disk; only drop yaml entries. Useful when the user has locally-modified files."),keep_generated:z$1.boolean().optional().describe("Skip the post-uninstall `generate` pass. Target trees keep now-stale files until the next manual `generate`; a warning lists what will be cleaned then."),dry_run:z$1.boolean().optional().describe("Preview the removal plan; no writes. Legacy-manifest migration runs in memory only."),global:z$1.boolean().optional().describe("Uninstall from the global scope (`~/.agentsmesh/`) instead of the project scope.")}),cle=z$1.object({global:z$1.boolean().optional().describe("Read from `~/.agentsmesh/installs.yaml` instead of the project scope.")}),mle=z$1.object({names:z$1.array(z$1.string().min(1)).optional().describe("Pack names to refresh. Omit or pass empty array to refresh every installed pack in the current scope."),dry_run:z$1.boolean().optional().describe("Preview the refresh plan (resolved refs, drift detection) without writing."),global:z$1.boolean().optional().describe("Refresh packs in the global scope (`~/.agentsmesh/`) instead of the project scope.")}),uJ=[{name:"install",description:"Install a community pack from a URL or local path. Auto-classifies the source layout (anthropic-skill-pack, canonical-agentsmesh, tool-native, or unknown) and dispatches accordingly; `--target` / `--as` override the classifier. Always runs non-interactively (every prompt accepts its documented `--force` default).",inputSchema:ale,handler:s((e,t)=>y_.install(e,t),"handler")},{name:"uninstall",description:"Remove one or more installed packs. Drops the pack directory, the `installs.yaml` row, and the matching `agentsmesh.yaml` `extends:` row (when present), then runs `generate` so stale target files are cleaned. Mid-batch failures are isolated; survivors still apply and the response surfaces failures in `data.failed[]`.",inputSchema:lle,handler:s((e,t)=>y_.uninstall(e,t),"handler")},{name:"installs_list",description:"List installed packs in the current scope. Read-only. Hydrates `installed_at` and `source_type` from each pack manifest where available; both are `null` for legacy packs without `.agentsmesh-install-manifest.json`.",inputSchema:cle,handler:s((e,t)=>y_.installsList(e,t),"handler"),resourceUri:"agentsmesh://installs"},{name:"refresh",description:"Re-fetch and re-apply installed packs against their originally-recorded source/ref. Branch pins re-resolve to the current tip; tag pins re-resolve in case the tag moved; SHA pins stay put. Per-pack atomic via `materializePack` \u2014 a failure leaves the affected pack at its prior state. Always runs non-interactively (force: true) over MCP.",inputSchema:mle,handler:s((e,t)=>pJ.refresh(e,t),"handler")}];var ple=600;async function __(e,t={}){try{await rt(e);}catch{}let r=ba(e);if(r.status!=="ok")return {lessons:[],total:0};let n=Ry(r.graph),o=n.length,i=ja({explicit:t.sessionId,projectRoot:e}),a=i===null?n:Cp(i,n),l=t.maxTokens===null?void 0:t.maxTokens??ple,c=[],m=0;for(let{id:p,lesson:u}of a){let f=Ei(u.rule);if(l!==void 0&&c.length>0&&m+f>l)break;m+=f,c.push({id:p,rule:u.rule});}return i!==null&&Ua(i,c.map(p=>p.id)),{lessons:c,total:o}}s(__,"recallAlwaysLessons");async function S_(e,t,r){return At(e,n=>{let o=n.lessons[t];if(o===void 0)throw new Error(`Unknown lesson: ${t}`);if(r!==null&&n.lessons[r]===void 0)throw new Error(`Unknown superseder: ${r}`);let i=r===null?"deprecated":"superseded";return n.lessons[t]={...o,status:i,...r===null?{}:{supersededBy:r}},{id:t,status:i,supersededBy:r}})}s(S_,"deprecateLesson");async function dJ(e,t){await rt(e.projectRoot);let r=Ye(e.projectRoot),n=r?.topics[t.topic];if(r===null||n===void 0)throw new N("NOT_FOUND",`lessons_show: unknown topic "${t.topic}".`);let o=Object.entries(r.lessons).filter(([,i])=>i.topics.includes(t.topic)).sort(([i],[a])=>i<a?-1:1).map(([i,a])=>({id:i,rule:a.rule,status:a.status,topics:[...a.topics],triggers:[...a.triggers],evidence:[...a.evidence]}));return {topic:t.topic,summary:n.summary,lessons:o}}s(dJ,"lessonsShow");async function fJ(e,t){try{return await S_(e.projectRoot,t.id,t.superseded_by??null)}catch(r){let n=r instanceof Error?r.message:String(r);throw /^Unknown lesson:|^Unknown superseder:/.test(n)?new N("NOT_FOUND",`lessons_deprecate: ${n}`):r}}s(fJ,"lessonsDeprecate");function OC(e){return e===void 0?[]:typeof e=="string"?e.length>0?[e]:[]:e.filter(t=>t.length>0)}s(OC,"toTriggerList");function ule(e){return e===void 0?[]:typeof e=="string"?e.split(",").map(t=>t.trim()).filter(t=>t.length>0):e.filter(t=>t.length>0)}s(ule,"toEvidenceList");var Op={async query(e,t){let r={file:t.file,command:t.command??t.cmd,keyword:t.keyword};if(t.always!==true&&r.file===void 0&&r.command===void 0&&r.keyword===void 0)throw new N("VALIDATION_FAILED","lessons_query: provide at least one of file, command, keyword, or always=true to recall against.");r.keyword!==void 0&&r.file===void 0&&r.command===void 0&&process.stderr.write(`agentsmesh: keyword-only recall misses file_glob/command_pattern lessons \u2014 pass file and/or command for complete recall.
|
|
716
|
-
`);let{lessons:n,totalMatches:o,suppressed:i,corrupt:a,newerVersion:l}=await
|
|
717
|
-
`);let c=t.always===true?(await __(e.projectRoot)).lessons:[],m=t.verbose===true;return {lessons:[...c.map(({id:p,rule:u})=>({id:p,rule:u})),...n.map(({id:p,lesson:u,score:f})=>m?{id:p,rule:u.rule,topics:[...u.topics],triggers:[...u.triggers],evidence:[...u.evidence],score:f}:{id:p,rule:u.rule})],totalMatches:o,...i>0?{suppressed:i}:{}}},async topics(e){await rt(e.projectRoot);let t=Ye(e.projectRoot);return t===null?{topics:[]}:{topics:Object.entries(t.topics).map(([r,n])=>({id:r,summary:n.summary})).sort((r,n)=>r.id<n.id?-1:1)}},show:dJ,deprecate:fJ,async add(e,t){if(t.scope!==void 0&&t.scope!=="always")throw new N("VALIDATION_FAILED",`lessons_add: scope must be "always" (got "${t.scope}").`);try{return await ef(e.projectRoot,{rule:t.rule,topic:t.topic,triggers:{files:OC(t.trigger_files??t.trigger_file),commands:OC(t.trigger_commands??t.trigger_cmd),keywords:OC(t.trigger_keywords??t.trigger_kw)},evidence:ule(t.evidence),rationale:t.rationale,...t.scope==="always"?{scope:"always"}:{}},{allowNewTopic:t.new_topic===!0,topicSummary:t.topic_summary})}catch(r){throw r instanceof Yn?new N("NOT_FOUND",`lessons_add: unknown topic "${r.topic}". Pass new_topic=true + topic_summary to create it.`,{code:r.code}):r instanceof Ii||r instanceof ki||r instanceof Ri?new N("VALIDATION_FAILED",`lessons_add: ${r.message}`,{code:r.code}):r}}};var dle=z$1.object({file:z$1.string().optional().describe("Project-relative path of the file about to be edited."),command:z$1.string().optional().describe("Shell command about to be executed (CLI flag: --cmd)."),cmd:z$1.string().optional().describe("Alias of `command` (matches the CLI `--cmd` flag). Use `command` if unsure."),keyword:z$1.string().optional().describe("Free-form description of the active task."),limit:z$1.number().int().positive().optional().describe("Max ranked lessons to return (default 10). Results are relevance-ranked."),max_tokens:z$1.number().int().positive().optional().describe("Cap results by cumulative estimated rule-token cost (CLI flag: --max-tokens)."),"max-tokens":z$1.number().int().positive().optional().describe("Alias of `max_tokens` (matches the CLI `--max-tokens` flag)."),verbose:z$1.boolean().optional().describe("Include topics/triggers/evidence/score. Default false (compact: id + rule only)."),always:z$1.boolean().optional().describe("Include the UNIVERSAL always-on lessons (standards that apply to every task, e.g. comment/test conventions) \u2014 they are excluded from triggered recall and delivered here. Set true at task start; no predicate is required when `always` is the only field.")}).strict(),hc=z$1.union([z$1.string(),z$1.array(z$1.string())]),fle=z$1.object({rule:z$1.string().min(1).describe("Imperative rule that prevents recurrence."),topic:z$1.string().min(1).describe("Topic id. Use new_topic + topic_summary to create one."),trigger_files:hc.optional().describe('file_glob triggers (e.g. ["src/cli/**/*.ts"] or a single "src/**").'),trigger_file:hc.optional().describe("Alias of `trigger_files` (matches the CLI `--trigger-file` flag)."),trigger_commands:hc.optional().describe("command_pattern triggers \u2014 regexes matched against shell commands."),trigger_cmd:hc.optional().describe("Alias of `trigger_commands` (matches the CLI `--trigger-cmd` flag)."),trigger_keywords:hc.optional().describe("keyword triggers \u2014 case-insensitive substrings of task descriptions."),trigger_kw:hc.optional().describe("Alias of `trigger_keywords` (matches the CLI `--trigger-kw` flag)."),evidence:hc.optional().describe("Evidence references (commit:SHA, lesson:id, \u2026). A scalar may be comma-separated."),rationale:z$1.string().optional().describe('Optional one-line "why" behind the rule.'),new_topic:z$1.boolean().optional().describe("Allow creating a new topic if missing."),topic_summary:z$1.string().optional().describe("Required when new_topic creates a topic. One-line summary."),scope:z$1.literal("always").optional().describe('Set "always" for a UNIVERSAL always-on lesson (a standard that applies to every task, e.g. a comment/test convention) \u2014 it needs no trigger and is delivered on every task instead of matched. Omit for a normal triggered lesson.')}).strict(),gJ=[{name:"lessons_query",description:"Recall primitive \u2014 return active lessons whose triggers match the supplied (file, command, keyword) predicates, relevance-ranked (trigger specificity + per-query topic coherence + BM25 over rule text) and capped to `limit` (default 10). Pass at least one predicate OR `always:true` (a call with neither is rejected); always include `file` for an edit and `command` for a shell command \u2014 keyword-only recall misses file/command-scoped lessons. `always:true` additionally prepends the universal always-on lessons. Returns compact `{id, rule}` by default; pass `verbose:true` for topics/triggers/evidence/score. Excludes deprecated and superseded lessons.",inputSchema:dle,handler:s((e,t)=>Op.query(e,t),"handler")},{name:"lessons_add",description:"Capture primitive \u2014 atomically add a new lesson. At least one EFFECTIVE trigger is REQUIRED \u2014 the add is rejected (UNRECALLABLE_LESSON, exit 2) when every trigger is dead on the mandatory file/command recall path (a stopword-only keyword whose needle loses all tokens to stopword filtering, or an invalid/ReDoS command regex). A lesson with a mix of live and dead triggers is NOT rejected. Prefer a precise `trigger_files` glob, the most reliable trigger. Deduplicates triggers against the graph. Idempotent on repeat (same rule + topic \u2192 same id, no duplicate triggers). Returns non-blocking `warnings` (trigger-hygiene nudges: oversized trigger set, broad globs, keyword-only, dead glob matching no file in the working tree [DEAD_GLOB], or rule closely paraphrasing an existing active lesson [NEAR_DUPLICATE_LESSON]) \u2014 heed them by preferring a few specific triggers.",inputSchema:fle,handler:s((e,t)=>Op.add(e,t),"handler")},{name:"lessons_topics",description:"List every topic id and summary \u2014 call before lessons_add to choose a valid --topic instead of guessing (which would create an unintended new topic).",inputSchema:z$1.object({}).strict(),handler:s(e=>Op.topics(e),"handler")},{name:"lessons_show",description:"Inspect a topic \u2014 return its summary and every lesson under it (id, rule, status, triggers, evidence), including deprecated/superseded ones. Use to find the id of a stale lesson before lessons_deprecate.",inputSchema:z$1.object({topic:z$1.string().min(1).describe("Topic id to inspect (see lessons_topics).")}).strict(),handler:s((e,t)=>Op.show(e,t),"handler")},{name:"lessons_deprecate",description:"Curation primitive \u2014 retire a lesson so recall stops returning it. With `superseded_by` the lesson is marked superseded by that replacement; without it the lesson is plainly deprecated. Throws on an unknown lesson or superseder.",inputSchema:z$1.object({id:z$1.string().min(1).describe("Lesson id to retire (see lessons_show)."),superseded_by:z$1.string().min(1).optional().describe("Replacement lesson id; omit for a plain deprecation.")}).strict(),handler:s((e,t)=>Op.deprecate(e,t),"handler")}];function hJ(e){let t=toJSONSchema(e,{target:"draft-07"});return delete t.$schema,t}s(hJ,"zodToMcpSchema");var R_=[...GV,...HV,...eJ,...mJ,...uJ,...gJ],wC=R_.filter(e=>e.resourceUri!==void 0).map(e=>({uri:e.resourceUri,name:e.name,description:e.description,read:s((t,r)=>e.handler(t,r),"read")}));Qa();async function _le(e){let t=resolve(e);for(;;){try{return await stat(resolve(t,"agentsmesh.yaml")),t}catch{}let r=dirname(t);if(r===t)throw new N("NO_PROJECT","agentsmesh.yaml not found");t=r;}}s(_le,"findProjectRoot");async function bC(e){let t=await _le(e.cwd);return {projectRoot:t,loadCanonical:s(()=>Wt(t),"loadCanonical")}}s(bC,"resolveContext");function _J(e,t){let r=Sle(e);return t.map(n=>{let o=n.path.map(i=>typeof i=="symbol"?i.toString():i);if(n.code==="unrecognized_keys"&&r.length>0&&n.path.length===0){let i=n.keys?.[0],a=i===void 0?void 0:Rle(i,r),l=a===void 0?"":` Did you mean "${a}"?`;return {code:n.code,path:o,message:`${n.message}. Expected one of: ${r.join(", ")}.${l}`,expected:r,...a===void 0?{}:{suggestion:a}}}return {code:n.code,path:o,message:n.message}})}s(_J,"enrichValidationIssues");function Sle(e){let t=e.shape;return t!==void 0&&typeof t=="object"?Object.keys(t):[]}s(Sle,"objectShapeKeys");function Rle(e,t){let r=e.toLowerCase(),n=t.find(c=>c.toLowerCase()===r);if(n!==void 0)return n;let o,i=1/0,a=Math.max(2,Math.ceil(e.length/3));for(let c of t){let m=Ile(r,c.toLowerCase());m<i&&(i=m,o=c);}return o!==void 0&&i<=a?o:t.filter(c=>c.toLowerCase().includes(r)||r.includes(c.toLowerCase())).sort((c,m)=>c.length-m.length)[0]}s(Rle,"nearestKey");function Ile(e,t){let r=Array.from({length:t.length+1},(n,o)=>o);for(let n=1;n<=e.length;n+=1){let o=r[0];r[0]=n;for(let i=1;i<=t.length;i+=1){let a=r[i],l=e[n-1]===t[i-1]?0:1;r[i]=Math.min(r[i]+1,r[i-1]+1,o+l),o=a;}}return r[t.length]}s(Ile,"editDistance");async function xle(){let e=dirname(fileURLToPath(import.meta.url));for(let t of [resolve(e,"../../package.json"),resolve(e,"../package.json"),resolve(e,"../../../package.json")])try{let r=JSON.parse(await readFile(t,"utf8"));if(r.name==="agentsmesh")return r.version}catch{}return "0.0.0"}s(xle,"pkgVersion");function Ple(e,t){return new RegExp("^"+e.replace(/\{[^}]+\}/g,"([^/]+)")+"$").test(t)}s(Ple,"matchTemplate");function Dle(e,t){let r=[...e.matchAll(/\{([^}]+)\}/g)].map(i=>i[1]),o=new RegExp("^"+e.replace(/\{[^}]+\}/g,"([^/]+)")+"$").exec(t);return o?Object.fromEntries(r.map((i,a)=>[i,o[a+1]])):{}}s(Dle,"extractTemplateParams");async function SJ(){let e=new Server({name:"agentsmesh-mcp",version:await xle()},{capabilities:{tools:{},resources:{}}});e.setRequestHandler(ListToolsRequestSchema,async()=>({tools:R_.map(t=>({name:t.name,description:t.description,inputSchema:hJ(t.inputSchema)}))})),e.setRequestHandler(CallToolRequestSchema,async t=>{let r=R_.find(n=>n.name===t.params.name);if(!r)return {isError:true,content:[{type:"text",text:JSON.stringify({code:"NOT_FOUND",message:`unknown tool: ${t.params.name}`})}]};try{let n=r.inputSchema.safeParse(t.params.arguments??{});if(!n.success){let a=_J(r.inputSchema,n.error.issues);throw new N("VALIDATION_FAILED","invalid input",a)}let o=await bC({cwd:process.cwd()}),i=await r.handler(o,n.data);return {content:[{type:"text",text:JSON.stringify(i)}]}}catch(n){let o=n instanceof N?n.toEnvelope():{code:"IO_ERROR",message:Rp(n instanceof Error?n.message:"unknown error")};return {isError:true,content:[{type:"text",text:JSON.stringify(o)}]}}}),e.setRequestHandler(ListResourcesRequestSchema,async()=>({resources:wC.map(t=>({uri:t.uri,name:t.name,description:t.description}))})),e.setRequestHandler(ReadResourceRequestSchema,async t=>{let r=wC.find(a=>a.uri===t.params.uri||Ple(a.uri,t.params.uri));if(!r)throw new N("NOT_FOUND",`resource not found: ${t.params.uri}`);let n=await bC({cwd:process.cwd()}),o=Dle(r.uri,t.params.uri),i=await r.read(n,o);return {contents:[{uri:t.params.uri,mimeType:"application/json",text:JSON.stringify(i)}]}}),await e.connect(new StdioServerTransport);}s(SJ,"startServer");ue();async function RJ(e,t){QC(),await SJ();}s(RJ,"runMcp");var Nle="__capture-nudge__",vle="__capture-nudge-recurrence__",TC=2;function Fle(e){return e.file!==void 0?`--trigger-file '${e.file}'`:e.command!==void 0?"--trigger-cmd '<regex matching the command>'":"--trigger-file '<glob>'"}s(Fle,"triggerHint");var Mle=" Trigger where it will RECUR: for general/library behavior use the file-CLASS (a '**/.../*Name*.ts'-style glob), not just this one file \u2014 and not a broad 'src/**'.";function Gle(e){return (e.failures??0)>=TC&&e.covered!==true}s(Gle,"isRecurringAndUncovered");function IJ(e){return ` agentsmesh lessons add "<imperative rule>" --topic <id> ${Fle(e)}
|
|
715
|
+
`),{path:r,written:true})}};var cae=/[;&|`$<>!\\\r\n]/u,mae=/^[A-Za-z_][A-Za-z0-9_]*$/u,pae=/^[A-Za-z][A-Za-z0-9_-]*$/u,uae=/^[A-Za-z][A-Za-z0-9_-]*(\([^)]*\))?$/u,XV=/[\r\n]/u,QV=/[\0\r\n]/u;function dae(e){return QV.test(e)?false:!e.split(/[/\\]/u).includes("..")}s(dae,"isSafeMcpCwd");function fae(e){return z$1.string().min(1).max(512).refine(t=>!cae.test(t),{message:`${e} must not contain shell metacharacters (;&|\`$<>!\\\\, newlines)`})}s(fae,"noShellMeta");var dC=z$1.object({type:z$1.enum(["stdio","sse","http","streamable-http","streamable_http"]).optional(),description:z$1.string().max(1024).refine(e=>!QV.test(e),{message:"description must not contain NUL or newline characters"}).optional(),command:fae("command").optional(),args:z$1.array(z$1.string().max(2048)).max(100).optional(),env:z$1.record(z$1.string().regex(mae,"env key must be a valid identifier"),z$1.string().max(8192)).optional(),url:z$1.string().url().max(2048).refine(e=>/^https?:\/\//u.test(e),{message:"url must use http(s) protocol"}).optional(),headers:z$1.record(z$1.string().regex(pae,"header name must be a valid identifier"),z$1.string().max(8192)).optional(),cwd:z$1.string().max(2048).refine(dae,{message:'cwd must not contain "..", NUL, or newline characters'}).optional(),disabled:z$1.boolean().optional(),timeout:z$1.number().int().nonnegative().max(36e5).optional()}).strict(),gae=z$1.object({type:z$1.enum(["command","prompt"]).optional(),command:z$1.string().min(1).max(8192).optional(),prompt:z$1.string().min(1).max(8192).optional(),timeout:z$1.number().int().nonnegative().max(36e5).optional()}).strict().refine(e=>(e.command??"").length>0||(e.prompt??"").length>0,{message:"hook entry must define command or prompt"}),qV=z$1.string().max(256).refine(e=>!XV.test(e),{message:"hook matcher must not contain newlines"}),hae=z$1.object({matcher:qV,type:z$1.enum(["command","prompt"]).optional(),command:z$1.string().min(1).max(8192).optional(),prompt:z$1.string().min(1).max(8192).optional(),timeout:z$1.number().int().nonnegative().max(36e5).optional()}).strict().refine(e=>(e.command??"").length>0||(e.prompt??"").length>0,{message:"hook entry must define command or prompt"}),yae=z$1.object({matcher:qV,hooks:z$1.array(gae).min(1).max(50)}).strict(),_ae=z$1.union([hae,yae]),ZV=z$1.record(z$1.string().min(1).max(64),z$1.array(_ae).max(100)),Sae=z$1.string().min(1).max(256).refine(e=>!XV.test(e),{message:"permission pattern must not contain newlines"}).refine(e=>uae.test(e),{message:"permission pattern must match Tool or Tool(matcher) form"}),d_=z$1.array(Sae).max(500);var Qd=z$1.object({}).strict(),Rae=[{name:"get_config",description:"Read agentsmesh.yaml",inputSchema:Qd,handler:s(e=>Or.getConfig(e),"handler"),resourceUri:"agentsmesh://config"},{name:"list_mcp_servers",description:"List MCP servers in canonical mcp.json",inputSchema:Qd,handler:s(e=>Or.listMcpServers(e),"handler"),resourceUri:"agentsmesh://canonical/mcp"},{name:"get_permissions",description:"Read permissions.yaml",inputSchema:Qd,handler:s(e=>Or.getPermissions(e),"handler"),resourceUri:"agentsmesh://canonical/permissions"},{name:"get_hooks",description:"Read hooks.yaml",inputSchema:Qd,handler:s(e=>Or.getHooks(e),"handler"),resourceUri:"agentsmesh://canonical/hooks"},{name:"get_ignore",description:"Read ignore patterns",inputSchema:Qd,handler:s(e=>Or.getIgnore(e),"handler"),resourceUri:"agentsmesh://canonical/ignore"}],Iae=[{name:"update_config",description:"Update agentsmesh.yaml. Default: replace listed fields. Set merge=true to union arrays and shallow-merge objects. Only writes agentsmesh.yaml, never agentsmesh.local.yaml.",inputSchema:z$1.object({targets:z$1.array(z$1.string()).optional().describe('Target tool IDs (e.g. ["claude-code", "cursor"])'),features:z$1.array(z$1.string()).optional().describe('Feature names (e.g. ["rules", "commands", "mcp"])'),conversions:z$1.record(z$1.string(),z$1.unknown()).optional().describe("Conversion overrides"),merge:z$1.boolean().optional().describe("If true, union arrays and shallow-merge objects instead of replacing"),dry_run:z$1.boolean().optional().describe("Preview without writing")}),handler:s((e,t)=>Or.updateConfig(e,t),"handler")},{name:"add_mcp_server",description:"Add an MCP server entry to .agentsmesh/mcp.json. Fails if name already exists.",inputSchema:z$1.object({name:z$1.string().describe('Server name (e.g. "github", "filesystem")'),server:dC.describe('Server config (e.g. { type: "stdio", command: "npx", args: [...], env: {...} })'),dry_run:z$1.boolean().optional().describe("Preview without writing")}),handler:s((e,t)=>Or.addMcpServer(e,t),"handler")},{name:"update_mcp_server",description:"Update an MCP server entry (replace or merge)",inputSchema:z$1.object({name:z$1.string(),server:dC,merge:z$1.boolean().optional(),dry_run:z$1.boolean().optional()}),handler:s((e,t)=>Or.updateMcpServer(e,t),"handler")},{name:"remove_mcp_server",description:"Remove an MCP server entry",inputSchema:z$1.object({name:z$1.string(),dry_run:z$1.boolean().optional()}),handler:s((e,t)=>Or.removeMcpServer(e,t),"handler")},{name:"update_permissions",description:"Update permissions.yaml. mode=replace (default) overwrites listed fields; mode=append unions and dedups.",inputSchema:z$1.object({allow:d_.optional().describe('Allowed tool patterns (e.g. ["Bash(npm run:*)"])'),deny:d_.optional().describe("Denied tool patterns"),ask:d_.optional().describe("Tools requiring confirmation"),mode:z$1.enum(["replace","append"]).optional().describe("replace=overwrite, append=union+dedup (default: replace)"),dry_run:z$1.boolean().optional().describe("Preview without writing")}),handler:s((e,t)=>Or.updatePermissions(e,t),"handler")},{name:"update_hooks",description:"Replace hooks.yaml content entirely. Read current hooks with get_hooks, modify, then write back.",inputSchema:z$1.object({hooks:ZV.describe("Full hooks structure (e.g. { PreToolUse: [...], PostToolUse: [...] })"),dry_run:z$1.boolean().optional().describe("Preview without writing")}),handler:s((e,t)=>Or.updateHooks(e,t),"handler")},{name:"update_ignore",description:"Update .agentsmesh/ignore patterns. mode=replace (default) overwrites; mode=append adds new patterns.",inputSchema:z$1.object({patterns:z$1.array(z$1.string()).describe('Gitignore-syntax patterns (e.g. ["node_modules/", "dist/", ".env*"])'),mode:z$1.enum(["replace","append"]).optional().describe("replace=overwrite, append=add (default: replace)"),dry_run:z$1.boolean().optional().describe("Preview without writing")}),handler:s((e,t)=>Or.updateIgnore(e,t),"handler")}],eJ=[...Rae,...Iae];$L();pn();function kae(){return Object.fromEntries(Ue.map(e=>[e,Object.fromEntries(Object.entries(lK).map(([t,r])=>[t,r[e]]))]))}s(kae,"buildTargetIndex");var tJ=kae(),fC={async list(){return tJ},async get(e){let t=tJ[e.targetId];if(t===void 0)throw new N("NOT_FOUND",`unknown target: ${e.targetId}`);return {targetId:e.targetId,capabilities:t}}};ss();ss();hf();nt();Xo();an();ot();pn();async function gC(e,t){let r=ne(e);if(!r)throw new Zn(e,{supported:[...Ue,...Df().map(n=>n.id)]});return r.generators.importFrom(t.root,{scope:t.scope??"project"})}s(gC,"importFrom");async function qd(e,t={}){let r=t.scope??"project",{config:n,context:o}=await _e(e,r);await Ve(n,e);let{canonical:i}=await Bt(n,o.configDir,{refreshRemoteCache:t.refreshRemoteCache===true},o.canonicalDir);return {config:n,canonical:i,projectRoot:o.rootBase,scope:r,configDir:o.configDir,canonicalDir:o.canonicalDir}}s(qd,"loadProjectContext");async function hC(e){let t=e.targetFilter?[...e.targetFilter]:void 0;return vy(e.config,e.canonical,e.projectRoot,t,{scope:e.scope})}s(hC,"lint");async function yC(e){let t=await Qo(e);return {...Dy(t),results:t}}s(yC,"diff");async function _C(e){return Fy(e)}s(_C,"check");ss();Xo();qa();hf();Te();ot();Ae();function fc(e,t={}){let r=Math.max(1,t.cap??gy),n=Iy(e),o=[],i=new Map;for(let[f,g]of Object.entries(e.lessons)){if(g.status!=="active")continue;if(t.trimOverCap===false||g.triggers.length<=r){i.set(f,g.triggers);continue}let h=[...g.triggers].sort((R,k)=>{let w=n.get(R),D=n.get(k);return w!==D?w-D:R<k?-1:1}),y=new Set(h.slice(r)),_=g.triggers.filter(R=>!y.has(R));i.set(f,_),o.push({id:f,removedTriggers:[...y],keptCount:_.length});}let a=[],l=[];if(t.knownPaths!==void 0){let f=Rd(e,t.knownPaths);if(f.size>0){for(let[g,h]of i){let y=h.filter(R=>f.has(R));if(y.length===0)continue;let _=h.filter(R=>!f.has(R));_.length>=1?(i.set(g,_),a.push({id:g,removedTriggers:y,keptCount:_.length})):l.push(g);}l.sort();}}let c=new Set;for(let f of i.values())for(let g of f)c.add(g);let m=Object.keys(e.triggers).filter(f=>!c.has(f)).sort(),p=new Set;for(let f of Object.values(e.lessons))for(let g of f.topics)p.add(g);let u=Object.keys(e.topics).filter(f=>!p.has(f)).sort();return {removedTriggerIds:m,removedTopicIds:u,trimmedLessons:o,removedDeadGlobs:a,unreachableLessons:l,cap:r}}s(fc,"planPrune");function f_(e,t){for(let n of [...t.trimmedLessons,...t.removedDeadGlobs??[]]){let o=e.lessons[n.id];if(o===void 0)continue;let i=new Set(n.removedTriggers);e.lessons[n.id]={...o,triggers:o.triggers.filter(a=>!i.has(a))};}for(let n of t.removedTopicIds)delete e.topics[n];let r=new Set(t.removedTriggerIds);if(r.size!==0){for(let[n,o]of Object.entries(e.lessons))o.triggers.some(i=>r.has(i))&&(e.lessons[n]={...o,triggers:o.triggers.filter(i=>!r.has(i))});for(let n of r)delete e.triggers[n];}}s(f_,"applyPruneToGraph");function Zd(e){return e.removedTriggerIds.length===0&&e.removedTopicIds.length===0&&e.trimmedLessons.length===0&&e.removedDeadGlobs.length===0}s(Zd,"isEmptyPrunePlan");function bae(e){let t=ve(e).config;if(!existsSync(t))return false;try{let r=JSON.parse(readFileSync(t,"utf8"));return typeof r!="object"||r===null?!1:r.autoPrune===!0}catch{return false}}s(bae,"isAutoPruneEnabled");async function rJ(e,t){if(!bae(e))return null;let r=Ye(e);if(r===null||Zd(fc(r,{trimOverCap:false,knownPaths:t})))return null;let n={removedTriggers:0,removedTopics:0,detachedDeadGlobs:0};return await At(e,i=>{let a=fc(i,{trimOverCap:false,knownPaths:t});Zd(a)||(f_(i,a),n={removedTriggers:a.removedTriggerIds.length,removedTopics:a.removedTopicIds.length,detachedDeadGlobs:a.removedDeadGlobs.reduce((l,c)=>l+c.removedTriggers.length,0)});}),n.removedTriggers+n.removedTopics+n.detachedDeadGlobs>0?n:null}s(rJ,"maybeAutoPrune");function ja(e,t){let r=e.replaceAll("\\","/"),n=nJ(t,r);if(!n.startsWith("../"))return n;let o=nJ(SC(t),SC(resolve(t,r)));return o.startsWith("../")?n:o}s(ja,"normalizeRecallFile");function nJ(e,t){let r=relative(e,resolve(e,t)).replaceAll("\\","/");return r===""?t.replaceAll("\\","/"):r}s(nJ,"relativize");function SC(e){try{return realpathSync(e)}catch{let t=dirname(e);return t===e?e:resolve(SC(t),basename(e))}}s(SC,"safeRealpath");var Kae="agentsmesh-lessons-seen";function Ua(e={}){if(e.disabled===true)return null;let t=e.explicit!==void 0&&e.explicit.trim().length>0?e.explicit.trim():Li(e.env);if(t===void 0)return null;let r=oJ(t,e.projectRoot);return {sessionId:t,seen:Hae(r),path:r}}s(Ua,"openSessionDedup");function Wae(e){let t=5381;for(let r=0;r<e.length;r+=1)t=(t<<5)+t+e.charCodeAt(r)>>>0;return t.toString(36)}s(Wae,"shortHash");function oJ(e,t){let r=e.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,200),n=t===void 0?r:`${r}__${Wae(resolve(t))}`;return join(tmpdir(),Kae,`${n}.json`)}s(oJ,"seenPath");function sJ(e,t){try{rmSync(oJ(e,t),{force:!0});}catch{}}s(sJ,"clearSeen");function Hae(e){if(!existsSync(e))return new Set;try{let t=JSON.parse(readFileSync(e,"utf8"));return Array.isArray(t)?new Set(t.filter(r=>typeof r=="string")):new Set}catch{return new Set}}s(Hae,"loadSeen");function Cp(e,t){return t.filter(r=>!e.seen.has(r.id))}s(Cp,"filterUnseen");function Ba(e,t){if(t.length===0)return;let r=new Set(e.seen);for(let n of t)r.add(n);if(r.size!==e.seen.size)try{mkdirSync(dirname(e.path),{recursive:!0});let n=`${e.path}.${process.pid}.tmp`;writeFileSync(n,JSON.stringify([...r]),"utf8"),renameSync(n,e.path);}catch{}}s(Ba,"commitSeen");async function gc(e,t,r={}){try{await rt(e);}catch{}let n=ba(e);if(n.status==="corrupt")return {lessons:[],totalMatches:0,suppressed:0,corrupt:true};if(n.status==="newer-version")return {lessons:[],totalMatches:0,suppressed:0,newerVersion:n.version};if(n.status==="absent")return {lessons:[],totalMatches:0,suppressed:0};let o=n.graph,i=t.file===void 0?t:{...t,file:ja(t.file,e)},a=es(o,i),l=Ua({explicit:r.sessionId,disabled:r.noDedup,projectRoot:e}),c=l===null?a:Cp(l,a),m=Oy(e),p=lp(o,i,c,{limit:r.limit??m.limit,maxTokens:r.maxTokens===null?void 0:r.maxTokens??m.maxTokens,effectiveness:bW(e)});return l!==null&&Ba(l,p.map(u=>u.id)),IC(e,o,i,a,p,{bypassed:false}),{lessons:p,totalMatches:a.length,suppressed:a.length-c.length}}s(gc,"recallLessons");function IC(e,t,r,n,o,i={}){if(!cn())return;let a=aE(t,r),l=s(m=>n.filter(({lesson:p})=>p.triggers.some(u=>m.has(u))).length,"countVia"),c=Li();yW(e,{ts:new Date().toISOString(),hasFile:r.file!==void 0,hasCommand:r.command!==void 0,hasKeyword:r.keyword!==void 0,totalMatches:n.length,returnedCount:o.length,returnedTokens:o.reduce((m,p)=>m+Ei(p.lesson.rule),0),truncated:n.length>o.length,matchedByKind:{file:l(a.file_glob),command:l(a.command_pattern),keyword:l(a.keyword)},lessonIds:o.map(m=>m.id),bypassed:i.bypassed===true,...c!==void 0?{session:c}:{}});}s(IC,"recordRecallTelemetry");async function ef(e,t,r={}){await rt(e);let n={file:t.triggers.files?.length??0,command:t.triggers.commands?.length??0,keyword:t.triggers.keywords?.length??0},o=r.knownPaths??Pa(e)??void 0;try{let i=await _y(e,t,{...r,knownPaths:o});iE(e,n,i);let a=await rJ(e,o);return a===null?i:{...i,autoPruned:a}}catch(i){throw iE(e,n,null),i}}s(ef,"captureLesson");async function g_(e,t,r,n={}){return At(e,o=>zae(o,t,r),{retries:n.retries})}s(g_,"mergeLessons");function zae(e,t,r){if(t===r)throw new Error(`mergeLessons: cannot merge lesson "${t}" into itself.`);let n=e.lessons[t];if(n===void 0)throw new Error(`mergeLessons: unknown lesson "${t}".`);let o=e.lessons[r];if(o===void 0)throw new Error(`mergeLessons: unknown lesson "${r}".`);if(o.status!=="active")throw new Error(`mergeLessons: keeper "${r}" is not active (status: ${o.status}).`);if(n.status!=="active")throw new Error(`mergeLessons: loser "${t}" is already ${n.status}; nothing to merge.`);return e.lessons[r]={...o,triggers:kC(o.triggers,n.triggers),topics:kC(o.topics,n.topics),evidence:kC(o.evidence,n.evidence)},e.lessons[t]={...n,status:"superseded",supersededBy:r},{loserId:t,keeperId:r}}s(zae,"mergeInto");function kC(e,t){let r=[...e];for(let n of t)r.includes(n)||r.push(n);return r}s(kC,"union");var LC=String.raw`L\d+(?:\s*,\s*L\d+)*`,Vae=[new RegExp(String.raw`\s*\bSee\s+${LC}\.?`,"g"),new RegExp(String.raw`\s*\((?:${LC})\)\.?`,"g"),new RegExp(String.raw`\s*\[(?:${LC})\]\.?`,"g")],Jae=/\s*\(also relevant[^)]*\)\s*/g;function EC(e){let t=e;for(let r of Vae)t=t.replace(r,"");return t=t.replace(Jae," "),t.trim()}s(EC,"stripLegacyMarkers");function iJ(e){let t=[];for(let[r,n]of Object.entries(e.lessons)){let o=EC(n.rule);o===n.rule||o.length===0||(t.push(r),e.lessons[r]={...n,rule:o});}return t.sort()}s(iJ,"applyStrip");async function h_(e,t={}){await rt(e);let r=Ye(e);if(r===null)return {changedIds:[],changedCount:0};if(t.dryRun===true){let o=iJ(r);return {changedIds:o,changedCount:o.length}}let n=[];return await At(e,o=>{n=iJ(o);}),{changedIds:n,changedCount:n.length}}s(h_,"stripMarkersInGraph");function Ka(e){if(e instanceof N)throw e;if(e instanceof Zn)throw new N("VALIDATION_FAILED",e.message);let t=e instanceof Error?e.message:String(e);throw /unknown.*--from|unknown.*--to|unknown target/i.test(t)?new N("VALIDATION_FAILED",t):/lock/i.test(t)?new N("LOCK_HELD","generate lock is held"):new N("IO_ERROR","engine failure",{reason:t})}s(Ka,"wrapEngineError");async function aJ(e,t){if(t.dry_run===true)throw new N("VALIDATION_FAILED","dry_run is not supported for import \u2014 the engine writes files directly. Use diff to preview changes instead.");try{let r=await gC(t.from,{root:e.projectRoot,scope:"project"});return {imported:r.length,files:r.map(n=>({fromPath:n.fromPath,toPath:n.toPath,feature:n.feature})),warnings:[],errors:[]}}catch(r){if(r instanceof Zn)throw new N("VALIDATION_FAILED",`unknown target "${t.from}"`);let n=r instanceof Error?r.message:String(r);if(/unknown target|invalid target|not found/i.test(n))throw new N("VALIDATION_FAILED",n);Ka(r);}}s(aJ,"importFromTarget");async function lJ(e,t){try{let r={from:t.from,to:t.to,"dry-run":t.dry_run===!0},n=await n_(r,e.projectRoot);return {filesAffected:n.data.summary.created+n.data.summary.updated,dryRun:t.dry_run===!0,warnings:[],errors:[]}}catch(r){let n=r instanceof Error?r.message:String(r);if(/unknown.*--from|unknown.*--to|unknown target/i.test(n))throw new N("VALIDATION_FAILED",n);Ka(r);}}s(lJ,"convert");async function Yae(e,t){try{let r={"dry-run":t.dry_run===!0};t.targets&&t.targets.length>0&&(r.targets=t.targets.join(","));let{data:n}=await qo(r,e.projectRoot,{printMatrix:!1}),o=n.files.filter(l=>l.status==="created"||l.status==="updated"),i={};for(let l of o){let c=i[l.target]??{filesWritten:0};i[l.target]={filesWritten:c.filesWritten+1};}let a={filesWritten:o.length,byTarget:i,lockfileUpdated:t.dry_run!==!0,errors:[],warnings:[]};return t.verbose===!0&&(a.files=n.files.map(l=>l.path)),a}catch(r){Ka(r);}}s(Yae,"generate");async function Xae(e,t){try{let r=await qd(e.projectRoot),n=await hC({config:r.config,canonical:r.canonical,projectRoot:r.projectRoot,scope:r.scope});return {issues:(t.severity?n.diagnostics.filter(i=>i.level===t.severity):n.diagnostics).map(i=>({level:i.level,file:i.file,target:i.target,message:i.message}))}}catch(r){Ka(r);}}s(Xae,"lint");async function Qae(e){try{let t=await qd(e.projectRoot),r=await _C({config:t.config,configDir:t.configDir,canonicalDir:t.canonicalDir});return {drift:!r.inSync,missing:[...r.removed],extra:[...r.added],modified:[...r.modified]}}catch(t){Ka(t);}}s(Qae,"check");async function qae(e,t){try{let r=await qd(e.projectRoot),n=t.targets&&t.targets.length>0?t.targets:void 0,o=await yC({config:r.config,canonical:r.canonical,projectRoot:r.projectRoot,scope:r.scope,targetFilter:n});return {willCreate:o.summary.new,willModify:o.summary.updated,willDelete:o.summary.deleted}}catch(r){Ka(r);}}s(qae,"diff");var hc={generate:Yae,lint:Xae,check:Qae,diff:qae,import:aJ,convert:lJ};var cJ=z$1.object({}).strict(),mJ=[{name:"list_target_capabilities",description:"List support matrix for all targets",inputSchema:cJ,handler:s(()=>fC.list(),"handler"),resourceUri:"agentsmesh://capabilities"},{name:"get_target_capabilities",description:"Get feature support levels for a specific target (e.g. which features are native, mapped, or unsupported)",inputSchema:z$1.object({targetId:z$1.string().describe('Target tool ID (e.g. "claude-code", "cursor")')}),handler:s((e,t)=>fC.get(t),"handler"),resourceUri:"agentsmesh://capabilities/{targetId}"},{name:"generate",description:"Generate target-native config files from canonical .agentsmesh/ content. Propagates rules, commands, agents, skills, MCP, hooks, ignore, and permissions to all configured targets.",inputSchema:z$1.object({targets:z$1.array(z$1.string()).optional().describe("Filter to specific targets (default: all from agentsmesh.yaml)"),features:z$1.array(z$1.string()).optional().describe("Filter to specific features"),verbose:z$1.boolean().optional().describe("Include full file list in response"),dry_run:z$1.boolean().optional().describe("Preview without writing files")}),handler:s((e,t)=>hc.generate(e,t),"handler")},{name:"lint",description:"Lint canonical .agentsmesh/ files for schema errors, missing frontmatter, and other issues",inputSchema:z$1.object({severity:z$1.enum(["error","warning","info"]).optional().describe("Filter results by minimum severity")}),handler:s((e,t)=>hc.lint(e,t),"handler")},{name:"check",description:"Detect drift between canonical and lockfile",inputSchema:cJ,handler:s(e=>hc.check(e),"handler")},{name:"diff",description:"Preview what generate would create, modify, or delete without writing",inputSchema:z$1.object({targets:z$1.array(z$1.string()).optional().describe("Filter to specific targets"),features:z$1.array(z$1.string()).optional().describe("Filter to specific features")}),handler:s((e,t)=>hc.diff(e,t),"handler")},{name:"import",description:"Import another tool's native config into canonical .agentsmesh/. Note: dry_run is not supported (the engine writes directly).",inputSchema:z$1.object({from:z$1.string().describe('Source target ID to import from (e.g. "cursor", "claude-code")'),features:z$1.array(z$1.string()).optional().describe("Restrict import to specific features"),dry_run:z$1.boolean().optional().describe("NOT SUPPORTED \u2014 will throw VALIDATION_FAILED. Use diff instead.")}),handler:s((e,t)=>hc.import(e,t),"handler")},{name:"convert",description:"Convert config directly from one tool to another (e.g. Cursor \u2192 Claude Code) without creating canonical .agentsmesh/ files",inputSchema:z$1.object({from:z$1.string().describe('Source target ID (e.g. "cursor")'),to:z$1.string().describe('Destination target ID (e.g. "claude-code")'),dry_run:z$1.boolean().optional().describe("Preview conversion without writing files")}),handler:s((e,t)=>hc.convert(e,t),"handler")}];function CC(e){if(e instanceof N)throw e;let t=e instanceof Error?e.message:String(e),r=Rp(t);throw /lock|LockAcquisitionError/i.test(r)?new N("LOCK_HELD",".install.lock is held by another process"):/missing source|usage:|non-interactive|invalid|unknown|not found|escapes the source root/i.test(r)?new N("VALIDATION_FAILED",r):new N("IO_ERROR","install pipeline failure",{reason:r})}s(CC,"wrapInstallError");function Zae(e){let t={force:true};return e.path!==void 0&&(t.path=e.path),e.target!==void 0&&(t.target=e.target),e.as!==void 0&&(t.as=e.as),e.name!==void 0&&(t.name=e.name),e.extends===true&&(t.extends=true),e.all===true&&(t.all=true),e.sync===true&&(t.sync=true),e.dry_run===true&&(t["dry-run"]=true),e.global===true&&(t.global=true),t}s(Zae,"toInstallFlags");function ele(e){let t={force:true};return e.all===true&&(t.all=true),e.keep_pack===true&&(t["keep-pack"]=true),e.keep_generated===true&&(t["keep-generated"]=true),e.dry_run===true&&(t["dry-run"]=true),e.global===true&&(t.global=true),t}s(ele,"toUninstallFlags");async function tle(e,t){if(typeof t.source!="string"||t.source.trim().length===0)throw new N("VALIDATION_FAILED","install: `source` is required");try{let r=await pc(Zae(t),[t.source],e.projectRoot);if(r.exitCode!==0)throw new N("IO_ERROR",`install exited ${r.exitCode}`);return r.data}catch(r){CC(r);}}s(tle,"install");async function rle(e,t){if(t.all!==true&&(!Array.isArray(t.names)||t.names.length===0))throw new N("VALIDATION_FAILED","uninstall: pass `names: [...]` or set `all: true`");try{return (await qy(ele(t),t.names??[],e.projectRoot)).data}catch(r){CC(r);}}s(rle,"uninstall");async function nle(e,t={}){try{let r={};return t.global===!0&&(r.global=!0),(await e_(r,e.projectRoot)).data}catch(r){CC(r);}}s(nle,"installsList");var y_={install:tle,uninstall:rle,installsList:nle};function ole(e){let t={force:true};return e.dry_run===true&&(t["dry-run"]=true),e.global===true&&(t.global=true),t}s(ole,"toRefreshFlags");function sle(e){if(e instanceof N)throw e;let t=e instanceof Error?e.message:String(e),r=Rp(t);throw /lock|LockAcquisitionError/i.test(r)?new N("LOCK_HELD",".install.lock is held by another process"):/unknown pack|not found|usage:/i.test(r)?new N("VALIDATION_FAILED",r):/resolve|network|fetch/i.test(r)?new N("REFRESH_RESOLVE_FAILED",r):/materialize|apply|manifest-update/i.test(r)?new N("REFRESH_APPLY_FAILED",r):new N("IO_ERROR","refresh pipeline failure",{reason:r})}s(sle,"wrapRefreshError");async function ile(e,t={}){try{let r=await Zy(ole(t),[...t.names??[]],e.projectRoot);if(r.exitCode===2){let n=r.data.failed[0],o=t.names??[],i=n?.error??(o.length>0?`unknown pack(s): ${o.join(", ")}`:"refresh validation failed");throw new N("VALIDATION_FAILED",i)}return r.data}catch(r){sle(r);}}s(ile,"refresh");var pJ={refresh:ile};var ale=z$1.object({source:z$1.string().min(1).describe("Pack source \u2014 GitHub/GitLab shorthand (`github:org/repo[@ref]`), git URL, SSH URL, or local path (`local:./relative/dir`)."),path:z$1.string().optional().describe("Subdirectory within the source repo to install from. Combined with `as` for manual single-category installs."),target:z$1.string().optional().describe("Target tool ID hint for native-format auto-discovery (e.g. `claude-code`, `cursor`). Bypasses the multi-signal classifier."),as:z$1.enum(["rules","commands","agents","skills"]).optional().describe("Manual install kind. When set, the source is treated as a flat collection of that category (skips the auto-classifier)."),name:z$1.string().optional().describe("Override the generated install entry name (default: derived from `org-repo` shorthand or the source path)."),extends:z$1.boolean().optional().describe("Record as an `extends:` entry in `agentsmesh.yaml` instead of materializing a pack in `.agentsmesh/packs/`. Always-on-latest semantics; resolved every `generate`."),all:z$1.boolean().optional().describe("Install every sub-pack from a marketplace source (`.claude-plugin/marketplace.json`) or every flat collection in a multi-collection layout."),sync:z$1.boolean().optional().describe("Reinstall missing packs from `.agentsmesh/installs.yaml` instead of from `source`."),dry_run:z$1.boolean().optional().describe("Preview what would be installed without writing."),global:z$1.boolean().optional().describe("Install into the global scope (`~/.agentsmesh/`) instead of the project scope. Regenerates user-level outputs.")}),lle=z$1.object({names:z$1.array(z$1.string().min(1)).default([]).describe("Install names to remove (from `installs.yaml`). Required unless `all: true`. Each name removes the pack directory under `.agentsmesh/packs/`, the matching `installs.yaml` row, and the matching `agentsmesh.yaml` `extends:` row when present."),all:z$1.boolean().optional().describe("Remove every install in the current scope. `names` is ignored when `all: true`."),keep_pack:z$1.boolean().optional().describe("Leave `.agentsmesh/packs/<name>/` on disk; only drop yaml entries. Useful when the user has locally-modified files."),keep_generated:z$1.boolean().optional().describe("Skip the post-uninstall `generate` pass. Target trees keep now-stale files until the next manual `generate`; a warning lists what will be cleaned then."),dry_run:z$1.boolean().optional().describe("Preview the removal plan; no writes. Legacy-manifest migration runs in memory only."),global:z$1.boolean().optional().describe("Uninstall from the global scope (`~/.agentsmesh/`) instead of the project scope.")}),cle=z$1.object({global:z$1.boolean().optional().describe("Read from `~/.agentsmesh/installs.yaml` instead of the project scope.")}),mle=z$1.object({names:z$1.array(z$1.string().min(1)).optional().describe("Pack names to refresh. Omit or pass empty array to refresh every installed pack in the current scope."),dry_run:z$1.boolean().optional().describe("Preview the refresh plan (resolved refs, drift detection) without writing."),global:z$1.boolean().optional().describe("Refresh packs in the global scope (`~/.agentsmesh/`) instead of the project scope.")}),uJ=[{name:"install",description:"Install a community pack from a URL or local path. Auto-classifies the source layout (anthropic-skill-pack, canonical-agentsmesh, tool-native, or unknown) and dispatches accordingly; `--target` / `--as` override the classifier. Always runs non-interactively (every prompt accepts its documented `--force` default).",inputSchema:ale,handler:s((e,t)=>y_.install(e,t),"handler")},{name:"uninstall",description:"Remove one or more installed packs. Drops the pack directory, the `installs.yaml` row, and the matching `agentsmesh.yaml` `extends:` row (when present), then runs `generate` so stale target files are cleaned. Mid-batch failures are isolated; survivors still apply and the response surfaces failures in `data.failed[]`.",inputSchema:lle,handler:s((e,t)=>y_.uninstall(e,t),"handler")},{name:"installs_list",description:"List installed packs in the current scope. Read-only. Hydrates `installed_at` and `source_type` from each pack manifest where available; both are `null` for legacy packs without `.agentsmesh-install-manifest.json`.",inputSchema:cle,handler:s((e,t)=>y_.installsList(e,t),"handler"),resourceUri:"agentsmesh://installs"},{name:"refresh",description:"Re-fetch and re-apply installed packs against their originally-recorded source/ref. Branch pins re-resolve to the current tip; tag pins re-resolve in case the tag moved; SHA pins stay put. Per-pack atomic via `materializePack` \u2014 a failure leaves the affected pack at its prior state. Always runs non-interactively (force: true) over MCP.",inputSchema:mle,handler:s((e,t)=>pJ.refresh(e,t),"handler")}];var ple=600;async function __(e,t={}){try{await rt(e);}catch{}let r=ba(e);if(r.status!=="ok")return {lessons:[],total:0};let n=Ry(r.graph),o=n.length,i=Ua({explicit:t.sessionId,projectRoot:e}),a=i===null?n:Cp(i,n),l=t.maxTokens===null?void 0:t.maxTokens??ple,c=[],m=0;for(let{id:p,lesson:u}of a){let f=Ei(u.rule);if(l!==void 0&&c.length>0&&m+f>l)break;m+=f,c.push({id:p,rule:u.rule});}return i!==null&&Ba(i,c.map(p=>p.id)),{lessons:c,total:o}}s(__,"recallAlwaysLessons");async function S_(e,t,r){return At(e,n=>{let o=n.lessons[t];if(o===void 0)throw new Error(`Unknown lesson: ${t}`);if(r!==null&&n.lessons[r]===void 0)throw new Error(`Unknown superseder: ${r}`);let i=r===null?"deprecated":"superseded";return n.lessons[t]={...o,status:i,...r===null?{}:{supersededBy:r}},{id:t,status:i,supersededBy:r}})}s(S_,"deprecateLesson");async function dJ(e,t){await rt(e.projectRoot);let r=Ye(e.projectRoot),n=r?.topics[t.topic];if(r===null||n===void 0)throw new N("NOT_FOUND",`lessons_show: unknown topic "${t.topic}".`);let o=Object.entries(r.lessons).filter(([,i])=>i.topics.includes(t.topic)).sort(([i],[a])=>i<a?-1:1).map(([i,a])=>({id:i,rule:a.rule,status:a.status,topics:[...a.topics],triggers:[...a.triggers],evidence:[...a.evidence]}));return {topic:t.topic,summary:n.summary,lessons:o}}s(dJ,"lessonsShow");async function fJ(e,t){try{return await S_(e.projectRoot,t.id,t.superseded_by??null)}catch(r){let n=r instanceof Error?r.message:String(r);throw /^Unknown lesson:|^Unknown superseder:/.test(n)?new N("NOT_FOUND",`lessons_deprecate: ${n}`):r}}s(fJ,"lessonsDeprecate");function OC(e){return e===void 0?[]:typeof e=="string"?e.length>0?[e]:[]:e.filter(t=>t.length>0)}s(OC,"toTriggerList");function ule(e){return e===void 0?[]:typeof e=="string"?e.split(",").map(t=>t.trim()).filter(t=>t.length>0):e.filter(t=>t.length>0)}s(ule,"toEvidenceList");var Op={async query(e,t){let r={file:t.file,command:t.command??t.cmd,keyword:t.keyword};if(t.always!==true&&r.file===void 0&&r.command===void 0&&r.keyword===void 0)throw new N("VALIDATION_FAILED","lessons_query: provide at least one of file, command, keyword, or always=true to recall against.");r.keyword!==void 0&&r.file===void 0&&r.command===void 0&&process.stderr.write(`agentsmesh: keyword-only recall misses file_glob/command_pattern lessons \u2014 pass file and/or command for complete recall.
|
|
716
|
+
`);let{lessons:n,totalMatches:o,suppressed:i,corrupt:a,newerVersion:l}=await gc(e.projectRoot,r,{limit:t.limit,maxTokens:t.max_tokens??t["max-tokens"]});a===true?process.stderr.write("agentsmesh: lessons.json is unreadable (corrupt) \u2014 recall returned no lessons. Run `agentsmesh lessons validate`.\n"):l!==void 0&&process.stderr.write(`agentsmesh: lessons.json is version ${l}, newer than this build supports \u2014 recall returned no lessons. Upgrade agentsmesh to read it.
|
|
717
|
+
`);let c=t.always===true?(await __(e.projectRoot)).lessons:[],m=t.verbose===true;return {lessons:[...c.map(({id:p,rule:u})=>({id:p,rule:u})),...n.map(({id:p,lesson:u,score:f})=>m?{id:p,rule:u.rule,topics:[...u.topics],triggers:[...u.triggers],evidence:[...u.evidence],score:f}:{id:p,rule:u.rule})],totalMatches:o,...i>0?{suppressed:i}:{}}},async topics(e){await rt(e.projectRoot);let t=Ye(e.projectRoot);return t===null?{topics:[]}:{topics:Object.entries(t.topics).map(([r,n])=>({id:r,summary:n.summary})).sort((r,n)=>r.id<n.id?-1:1)}},show:dJ,deprecate:fJ,async add(e,t){if(t.scope!==void 0&&t.scope!=="always")throw new N("VALIDATION_FAILED",`lessons_add: scope must be "always" (got "${t.scope}").`);try{return await ef(e.projectRoot,{rule:t.rule,topic:t.topic,triggers:{files:OC(t.trigger_files??t.trigger_file),commands:OC(t.trigger_commands??t.trigger_cmd),keywords:OC(t.trigger_keywords??t.trigger_kw)},evidence:ule(t.evidence),rationale:t.rationale,...t.scope==="always"?{scope:"always"}:{}},{allowNewTopic:t.new_topic===!0,topicSummary:t.topic_summary})}catch(r){throw r instanceof Yn?new N("NOT_FOUND",`lessons_add: unknown topic "${r.topic}". Pass new_topic=true + topic_summary to create it.`,{code:r.code}):r instanceof Ii||r instanceof ki||r instanceof Ri?new N("VALIDATION_FAILED",`lessons_add: ${r.message}`,{code:r.code}):r}}};var dle=z$1.object({file:z$1.string().optional().describe("Project-relative path of the file about to be edited."),command:z$1.string().optional().describe("Shell command about to be executed (CLI flag: --cmd)."),cmd:z$1.string().optional().describe("Alias of `command` (matches the CLI `--cmd` flag). Use `command` if unsure."),keyword:z$1.string().optional().describe("Free-form description of the active task."),limit:z$1.number().int().positive().optional().describe("Max ranked lessons to return (default 10). Results are relevance-ranked."),max_tokens:z$1.number().int().positive().optional().describe("Cap results by cumulative estimated rule-token cost (CLI flag: --max-tokens)."),"max-tokens":z$1.number().int().positive().optional().describe("Alias of `max_tokens` (matches the CLI `--max-tokens` flag)."),verbose:z$1.boolean().optional().describe("Include topics/triggers/evidence/score. Default false (compact: id + rule only)."),always:z$1.boolean().optional().describe("Include the UNIVERSAL always-on lessons (standards that apply to every task, e.g. comment/test conventions) \u2014 they are excluded from triggered recall and delivered here. Set true at task start; no predicate is required when `always` is the only field.")}).strict(),yc=z$1.union([z$1.string(),z$1.array(z$1.string())]),fle=z$1.object({rule:z$1.string().min(1).describe("Imperative rule that prevents recurrence."),topic:z$1.string().min(1).describe("Topic id. Use new_topic + topic_summary to create one."),trigger_files:yc.optional().describe('file_glob triggers (e.g. ["src/cli/**/*.ts"] or a single "src/**").'),trigger_file:yc.optional().describe("Alias of `trigger_files` (matches the CLI `--trigger-file` flag)."),trigger_commands:yc.optional().describe("command_pattern triggers \u2014 regexes matched against shell commands."),trigger_cmd:yc.optional().describe("Alias of `trigger_commands` (matches the CLI `--trigger-cmd` flag)."),trigger_keywords:yc.optional().describe("keyword triggers \u2014 case-insensitive substrings of task descriptions."),trigger_kw:yc.optional().describe("Alias of `trigger_keywords` (matches the CLI `--trigger-kw` flag)."),evidence:yc.optional().describe("Evidence references (commit:SHA, lesson:id, \u2026). A scalar may be comma-separated."),rationale:z$1.string().optional().describe('Optional one-line "why" behind the rule.'),new_topic:z$1.boolean().optional().describe("Allow creating a new topic if missing."),topic_summary:z$1.string().optional().describe("Required when new_topic creates a topic. One-line summary."),scope:z$1.literal("always").optional().describe('Set "always" for a UNIVERSAL always-on lesson (a standard that applies to every task, e.g. a comment/test convention) \u2014 it needs no trigger and is delivered on every task instead of matched. Omit for a normal triggered lesson.')}).strict(),gJ=[{name:"lessons_query",description:"Recall primitive \u2014 return active lessons whose triggers match the supplied (file, command, keyword) predicates, relevance-ranked (trigger specificity + per-query topic coherence + BM25 over rule text) and capped to `limit` (default 10). Pass at least one predicate OR `always:true` (a call with neither is rejected); always include `file` for an edit and `command` for a shell command \u2014 keyword-only recall misses file/command-scoped lessons. `always:true` additionally prepends the universal always-on lessons. Returns compact `{id, rule}` by default; pass `verbose:true` for topics/triggers/evidence/score. Excludes deprecated and superseded lessons.",inputSchema:dle,handler:s((e,t)=>Op.query(e,t),"handler")},{name:"lessons_add",description:"Capture primitive \u2014 atomically add a new lesson. At least one EFFECTIVE trigger is REQUIRED \u2014 the add is rejected (UNRECALLABLE_LESSON, exit 2) when every trigger is dead on the mandatory file/command recall path (a stopword-only keyword whose needle loses all tokens to stopword filtering, or an invalid/ReDoS command regex). A lesson with a mix of live and dead triggers is NOT rejected. Prefer a precise `trigger_files` glob, the most reliable trigger. Deduplicates triggers against the graph. Idempotent on repeat (same rule + topic \u2192 same id, no duplicate triggers). Returns non-blocking `warnings` (trigger-hygiene nudges: oversized trigger set, broad globs, keyword-only, dead glob matching no file in the working tree [DEAD_GLOB], or rule closely paraphrasing an existing active lesson [NEAR_DUPLICATE_LESSON]) \u2014 heed them by preferring a few specific triggers.",inputSchema:fle,handler:s((e,t)=>Op.add(e,t),"handler")},{name:"lessons_topics",description:"List every topic id and summary \u2014 call before lessons_add to choose a valid --topic instead of guessing (which would create an unintended new topic).",inputSchema:z$1.object({}).strict(),handler:s(e=>Op.topics(e),"handler")},{name:"lessons_show",description:"Inspect a topic \u2014 return its summary and every lesson under it (id, rule, status, triggers, evidence), including deprecated/superseded ones. Use to find the id of a stale lesson before lessons_deprecate.",inputSchema:z$1.object({topic:z$1.string().min(1).describe("Topic id to inspect (see lessons_topics).")}).strict(),handler:s((e,t)=>Op.show(e,t),"handler")},{name:"lessons_deprecate",description:"Curation primitive \u2014 retire a lesson so recall stops returning it. With `superseded_by` the lesson is marked superseded by that replacement; without it the lesson is plainly deprecated. Throws on an unknown lesson or superseder.",inputSchema:z$1.object({id:z$1.string().min(1).describe("Lesson id to retire (see lessons_show)."),superseded_by:z$1.string().min(1).optional().describe("Replacement lesson id; omit for a plain deprecation.")}).strict(),handler:s((e,t)=>Op.deprecate(e,t),"handler")}];function hJ(e){let t=toJSONSchema(e,{target:"draft-07"});return delete t.$schema,t}s(hJ,"zodToMcpSchema");var R_=[...GV,...HV,...eJ,...mJ,...uJ,...gJ],wC=R_.filter(e=>e.resourceUri!==void 0).map(e=>({uri:e.resourceUri,name:e.name,description:e.description,read:s((t,r)=>e.handler(t,r),"read")}));qa();async function _le(e){let t=resolve(e);for(;;){try{return await stat(resolve(t,"agentsmesh.yaml")),t}catch{}let r=dirname(t);if(r===t)throw new N("NO_PROJECT","agentsmesh.yaml not found");t=r;}}s(_le,"findProjectRoot");async function bC(e){let t=await _le(e.cwd);return {projectRoot:t,loadCanonical:s(()=>Wt(t),"loadCanonical")}}s(bC,"resolveContext");function _J(e,t){let r=Sle(e);return t.map(n=>{let o=n.path.map(i=>typeof i=="symbol"?i.toString():i);if(n.code==="unrecognized_keys"&&r.length>0&&n.path.length===0){let i=n.keys?.[0],a=i===void 0?void 0:Rle(i,r),l=a===void 0?"":` Did you mean "${a}"?`;return {code:n.code,path:o,message:`${n.message}. Expected one of: ${r.join(", ")}.${l}`,expected:r,...a===void 0?{}:{suggestion:a}}}return {code:n.code,path:o,message:n.message}})}s(_J,"enrichValidationIssues");function Sle(e){let t=e.shape;return t!==void 0&&typeof t=="object"?Object.keys(t):[]}s(Sle,"objectShapeKeys");function Rle(e,t){let r=e.toLowerCase(),n=t.find(c=>c.toLowerCase()===r);if(n!==void 0)return n;let o,i=1/0,a=Math.max(2,Math.ceil(e.length/3));for(let c of t){let m=Ile(r,c.toLowerCase());m<i&&(i=m,o=c);}return o!==void 0&&i<=a?o:t.filter(c=>c.toLowerCase().includes(r)||r.includes(c.toLowerCase())).sort((c,m)=>c.length-m.length)[0]}s(Rle,"nearestKey");function Ile(e,t){let r=Array.from({length:t.length+1},(n,o)=>o);for(let n=1;n<=e.length;n+=1){let o=r[0];r[0]=n;for(let i=1;i<=t.length;i+=1){let a=r[i],l=e[n-1]===t[i-1]?0:1;r[i]=Math.min(r[i]+1,r[i-1]+1,o+l),o=a;}}return r[t.length]}s(Ile,"editDistance");async function xle(){let e=dirname(fileURLToPath(import.meta.url));for(let t of [resolve(e,"../../package.json"),resolve(e,"../package.json"),resolve(e,"../../../package.json")])try{let r=JSON.parse(await readFile(t,"utf8"));if(r.name==="agentsmesh")return r.version}catch{}return "0.0.0"}s(xle,"pkgVersion");function Ple(e,t){return new RegExp("^"+e.replace(/\{[^}]+\}/g,"([^/]+)")+"$").test(t)}s(Ple,"matchTemplate");function Dle(e,t){let r=[...e.matchAll(/\{([^}]+)\}/g)].map(i=>i[1]),o=new RegExp("^"+e.replace(/\{[^}]+\}/g,"([^/]+)")+"$").exec(t);return o?Object.fromEntries(r.map((i,a)=>[i,o[a+1]])):{}}s(Dle,"extractTemplateParams");async function SJ(){let e=new Server({name:"agentsmesh-mcp",version:await xle()},{capabilities:{tools:{},resources:{}}});e.setRequestHandler(ListToolsRequestSchema,async()=>({tools:R_.map(t=>({name:t.name,description:t.description,inputSchema:hJ(t.inputSchema)}))})),e.setRequestHandler(CallToolRequestSchema,async t=>{let r=R_.find(n=>n.name===t.params.name);if(!r)return {isError:true,content:[{type:"text",text:JSON.stringify({code:"NOT_FOUND",message:`unknown tool: ${t.params.name}`})}]};try{let n=r.inputSchema.safeParse(t.params.arguments??{});if(!n.success){let a=_J(r.inputSchema,n.error.issues);throw new N("VALIDATION_FAILED","invalid input",a)}let o=await bC({cwd:process.cwd()}),i=await r.handler(o,n.data);return {content:[{type:"text",text:JSON.stringify(i)}]}}catch(n){let o=n instanceof N?n.toEnvelope():{code:"IO_ERROR",message:Rp(n instanceof Error?n.message:"unknown error")};return {isError:true,content:[{type:"text",text:JSON.stringify(o)}]}}}),e.setRequestHandler(ListResourcesRequestSchema,async()=>({resources:wC.map(t=>({uri:t.uri,name:t.name,description:t.description}))})),e.setRequestHandler(ReadResourceRequestSchema,async t=>{let r=wC.find(a=>a.uri===t.params.uri||Ple(a.uri,t.params.uri));if(!r)throw new N("NOT_FOUND",`resource not found: ${t.params.uri}`);let n=await bC({cwd:process.cwd()}),o=Dle(r.uri,t.params.uri),i=await r.read(n,o);return {contents:[{uri:t.params.uri,mimeType:"application/json",text:JSON.stringify(i)}]}}),await e.connect(new StdioServerTransport);}s(SJ,"startServer");ue();async function RJ(e,t){qC(),await SJ();}s(RJ,"runMcp");var Nle="__capture-nudge__",vle="__capture-nudge-recurrence__",TC=2;function Fle(e){return e.file!==void 0?`--trigger-file '${e.file}'`:e.command!==void 0?"--trigger-cmd '<regex matching the command>'":"--trigger-file '<glob>'"}s(Fle,"triggerHint");var Mle=" Trigger where it will RECUR: for general/library behavior use the file-CLASS (a '**/.../*Name*.ts'-style glob), not just this one file \u2014 and not a broad 'src/**'.";function Gle(e){return (e.failures??0)>=TC&&e.covered!==true}s(Gle,"isRecurringAndUncovered");function IJ(e){return ` agentsmesh lessons add "<imperative rule>" --topic <id> ${Fle(e)}
|
|
718
718
|
${Mle}`}s(IJ,"addCommandBlock");function $le(e){return `A tool call just failed. If this surfaced a reusable rule (a wrong assumption, a non-obvious fix, a regression, or repeated friction), capture it now \u2014 otherwise continue:
|
|
719
719
|
${IJ(e)}`}s($le,"genericNudge");function jle(e){let t=e.lastErrorClass!==void 0?` The recurring error: \xAB${e.lastErrorClass}\xBB.`:"";return `This action has failed ${e.failures}\xD7 and no lesson covers it \u2014 capture the rule now so recall can prevent the next repeat:${t}
|
|
720
|
-
${IJ(e)}`}s(jle,"recurrenceNudge");function kJ(e){let t=Gle(e),r=t?vle:Nle,n=
|
|
720
|
+
${IJ(e)}`}s(jle,"recurrenceNudge");function kJ(e){let t=Gle(e),r=t?vle:Nle,n=Ua({explicit:e.sessionId,projectRoot:e.projectRoot});if(n!==null&&n.seen.has(r))return null;let o=t?jle(e):$le(e);return n!==null&&Ba(n,[r]),o}s(kJ,"buildCaptureNudge");function Ule(e){let t=e.trim().split(/\s+/),r=0;for(;r<t.length&&/^[A-Za-z_][A-Za-z0-9_]*=/.test(t[r]);)r+=1;let n=t.slice(r),i=n.filter(a=>a.length>0&&!a.startsWith("-")&&!a.includes("/")&&!/^["'`]/.test(a)).slice(0,2).join(" ");return i.length>0?i:n[0]??""}s(Ule,"normalizeCommand");function I_(e,t){return e.file!==void 0&&e.file.length>0?`file:${ja(e.file,t)}`:e.command!==void 0&&e.command.length>0?`cmd:${Ule(e.command)}`:"none"}s(I_,"contextKey");var Ble=120;function LJ(e){let t=[],r=s(i=>{typeof i=="string"&&i.length>0&&t.push(i);},"push");if(r(e.new_string),r(e.content),Array.isArray(e.edits))for(let i of e.edits)i!==null&&typeof i=="object"&&r(i.new_string);if(t.length===0)return "";let n=new Set,o=[];for(let i of yt(t.join(`
|
|
721
721
|
`)))if(!n.has(i)&&(n.add(i),o.push(i),o.length>=Ble))break;return o.join(" ")}s(LJ,"diffTerms");function EJ(e){if(e===void 0)return;let t=e.split(`
|
|
722
|
-
`).map(o=>o.trim()).find(o=>o.length>0);if(t===void 0)return;let r=t.toLowerCase().replace(/'[^']*'|"[^"]*"|`[^`]*`/g,"\u2026").replace(/0x[0-9a-f]+/g,"\u2026").replace(/\d+/g,"\u2026").replace(/…+/g,"\u2026").replace(/\s+/g," ").trim();return (r.length>0?r:t.toLowerCase().trim()).slice(0,120)}s(EJ,"errorClass");var
|
|
722
|
+
`).map(o=>o.trim()).find(o=>o.length>0);if(t===void 0)return;let r=t.toLowerCase().replace(/'[^']*'|"[^"]*"|`[^`]*`/g,"\u2026").replace(/0x[0-9a-f]+/g,"\u2026").replace(/\d+/g,"\u2026").replace(/…+/g,"\u2026").replace(/\s+/g," ").trim();return (r.length>0?r:t.toLowerCase().trim()).slice(0,120)}s(EJ,"errorClass");var _c={output:""},Kle=5,CJ=" \u2026[truncated]";function Wle(e){return e.length<=Zm?e:e.slice(0,Zm-CJ.length)+CJ}s(Wle,"clampRule");async function OJ(e,t,r){let{lessons:n}=await gc(e,t,{sessionId:r.sessionId,limit:Kle});return n.length===0?_c:(CW(e,n.map(o=>o.id),I_({file:t.file,command:t.command},e)),xC(r.event,r.lead,n.map(o=>o.lesson.rule)))}s(OJ,"emitRecall");function xC(e,t,r){let n=r.map(o=>`- ${Wle(o)}`).join(`
|
|
723
723
|
`);return PC(e,`${t} \u2014 apply before your next action:
|
|
724
|
-
${n}`)}s(xC,"formatInjection");function PC(e,t){return {output:JSON.stringify({hookSpecificOutput:{hookEventName:e,additionalContext:t}})}}s(PC,"contextOutput");var rs=s(e=>typeof e=="string"&&e.length>0?e:void 0,"str");async function wJ(e,t){let r;try{r=JSON.parse(e);}catch{return
|
|
724
|
+
${n}`)}s(xC,"formatInjection");function PC(e,t){return {output:JSON.stringify({hookSpecificOutput:{hookEventName:e,additionalContext:t}})}}s(PC,"contextOutput");var rs=s(e=>typeof e=="string"&&e.length>0?e:void 0,"str");async function wJ(e,t){let r;try{r=JSON.parse(e);}catch{return _c}let n=rs(r.session_id);if(r.hook_event_name==="SessionStart"){let u=rs(r.source);return (u==="compact"||u==="clear")&&n!==void 0&&sJ(n,t),_c}if(r.hook_event_name==="UserPromptSubmit"){let u=rs(r.prompt)??rs(r.user_message),f=await __(t,{sessionId:n}),g=u===void 0?[]:(await gc(t,{keyword:u},{sessionId:n})).lessons,h=[...f.lessons.map(y=>y.rule),...g.map(y=>y.lesson.rule)];return h.length===0?_c:xC("UserPromptSubmit","Recalled agentsmesh lessons for this task",h)}let o=rs(r.tool_input?.file_path)??rs(r.tool_input?.notebook_path),i=rs(r.tool_input?.command),a=rs(r.tool_error);if(r.hook_event_name==="PostToolUseFailure"||a!==void 0){let u=0,f,g=false;if(o!==void 0||i!==void 0){let y=I_({file:o,command:i},t);OW(t,y,EJ(a??rs(r.tool_response)));let _=wW(t,y);u=_.count,f=_.lastErrorClass,g=u>=TC&&Hle(t,o,i);}let h=kJ({file:o,command:i,sessionId:n,projectRoot:t,failures:u,covered:g,...f!==void 0?{lastErrorClass:f}:{}});return h===null?_c:PC(rs(r.hook_event_name)??"PostToolUseFailure",h)}if(o===void 0&&i===void 0)return _c;let l=r.hook_event_name==="PreToolUse"?"PreToolUse":"PostToolUse",c=r.tool_input?LJ(r.tool_input):"",m={...o!==void 0?{file:o}:{},...i!==void 0?{command:i}:{},...c.length>0?{keyword:c}:{}};return OJ(t,m,{event:l,lead:`Recalled agentsmesh lessons for ${o??i??""}`,sessionId:n})}s(wJ,"buildRecallHookOutput");function Hle(e,t,r){let n=ba(e);if(n.status!=="ok")return false;let o={...t!==void 0?{file:ja(t,e)}:{},...r!==void 0?{command:r}:{}};return es(n.graph,o).length>0}s(Hle,"hasCoveringLesson");function bJ(e){let t=e.filter(r=>!r.blocked);return {total:e.length,blocked:e.filter(r=>r.blocked).length,newLessons:t.filter(r=>r.isNewLesson).length,upserts:t.filter(r=>!r.isNewLesson).length,newTopics:t.filter(r=>r.isNewTopic).length,withWarnings:t.filter(r=>r.warningCodes.length>0).length,byTriggerKind:{file:e.reduce((r,n)=>r+n.triggerKinds.file,0),command:e.reduce((r,n)=>r+n.triggerKinds.command,0),keyword:e.reduce((r,n)=>r+n.triggerKinds.keyword,0)}}}s(bJ,"summarizeCapture");var tf=3,zle=2;function AJ(e,t){let r=ap(e);if(r.length===0)return [];let n=[];return Vle(r,t,n),Yle(r,t,n),n}s(AJ,"collectHealthFindings");function Vle(e,t,r){let n=bd(e);for(let o of [...n.keys()].sort()){let i=n.get(o);i.delivered<tf||i.missed<i.delivered||t.lessons[o]?.status==="active"&&r.push({level:"warning",code:"INEFFECTIVE_LESSON",lessonId:o,message:`Delivered ${i.delivered}\xD7 but the same mistake recurred every time \u2014 the rule may be wrong, too vague, or mis-triggered. Refine it, or run: agentsmesh lessons deprecate ${o}`});}}s(Vle,"collectIneffective");function Jle(e){return e.startsWith("file:")?{file:e.slice(5)}:null}s(Jle,"queryFromContextKey");function Yle(e,t,r){let n=new Map;for(let o of e)o.kind==="failure"&&n.set(o.contextKey,(n.get(o.contextKey)??0)+1);for(let o of [...n.keys()].sort()){let i=n.get(o);if(i<zle)continue;let a=Jle(o);a===null||es(t,a).length>0||r.push({level:"warning",code:"UNCOVERED_FAILURE",message:`Failed ${i}\xD7 at ${o} with no lesson to prevent it \u2014 capture one: agentsmesh lessons add`});}}s(Yle,"collectUncovered");function TJ(e,t){let r=0,n=0,o=0,i=bd(e);for(let[a,l]of i)r+=l.delivered,n+=l.missed,l.delivered>=tf&&l.missed===l.delivered&&t.lessons[a]?.status==="active"&&(o+=1);return {deliveries:r,lessonsDelivered:i.size,failuresObserved:e.filter(a=>a.kind==="failure").length,heldRate:r===0?1:1-n/r,ineffectiveLessons:o}}s(TJ,"summarizeEffectiveness");var Xle=[{label:"0",test:s(e=>e===0,"test")},{label:"1",test:s(e=>e===1,"test")},{label:"2-3",test:s(e=>e>=2&&e<=3,"test")},{label:"4-9",test:s(e=>e>=4&&e<=9,"test")},{label:"10+",test:s(e=>e>=10,"test")}],Qle=1800*1e3;function xJ(e,t){if(e.length===0)return 0;let r=[...e].sort((o,i)=>o-i),n=Math.min(r.length-1,Math.floor(t/100*r.length));return r[n]}s(xJ,"percentile");function qle(e,t){return t.length>0&&t.every(r=>e.triggers[r]?.kind==="keyword")}s(qle,"isKeywordOnly");function Zle(e){let t=[],r=0;for(let n=0;n<e.length;n++){if(n===0){t.push(0);continue}let o=e[n],i=e[n-1];(o.session!==void 0||i.session!==void 0?o.session!==i.session:Date.parse(o.ts)-Date.parse(i.ts)>Qle)&&r++,t.push(r);}return t}s(Zle,"sessionIndices");function ece(e,t,r){let n=e.filter(l=>l.lessonIds!==void 0).length,o=new Map,i=0,a=0;for(let l=0;l<e.length;l++){let c=e[l].lessonIds;if(c===void 0)continue;let m=t[l],p=o.get(m);p===void 0&&(p=new Set,o.set(m,p));for(let u of c){let f=Ei(r.lessons[u]?.rule??"");a+=f,p.has(u)?i+=f:p.add(u);}}return {rate:a===0?0:i/a,coverage:e.length===0?0:n/e.length}}s(ece,"intraSessionRedundancy");function PJ(e,t){let r=e.length,n=e.filter(_=>_.totalMatches===0).length,o=e.map(_=>_.returnedTokens),i=o.reduce((_,R)=>_+R,0),a=Object.values(t.lessons).filter(_=>_.status==="active"),l=a.reduce((_,R)=>_+Ei(R.rule),0),c=Zle(e),m=r===0?0:c[c.length-1]+1,p=e.filter(_=>_.bypassed===true).length,u=e.filter(_=>_.bypassed!==true).reduce((_,R)=>_+R.returnedTokens,0),f=l*m,g=e.filter(_=>_.totalMatches>0),h=g.filter(_=>_.matchedByKind.keyword>0&&_.matchedByKind.file===0&&_.matchedByKind.command===0).length,y=a.filter(_=>qle(t,_.triggers)).length;return {totalRecalls:r,noMatchRate:r===0?0:n/r,matchCountHistogram:Xle.map(_=>({bucket:_.label,count:e.filter(R=>_.test(R.totalMatches)).length})),returnedTokens:{p50:xJ(o,50),p90:xJ(o,90),max:o.length===0?0:Math.max(...o)},cumulativeRecallTokens:i,wholeActiveSetTokens:l,bypassedRecalls:p,preloadBreakEven:{sessions:m,preloadTokens:f,mandatoryRecallTokens:u,recallCheaper:u<f,ratio:u===0?0:f/u},redundancy:ece(e,c,t),reachability:{keywordOnlyRecallRate:g.length===0?0:h/g.length,keywordOnlyUnreachableLessons:y}}}s(PJ,"summarizeRecall");function Pt(e,t){let r=e[t];return typeof r=="string"&&r.length>0?r:null}s(Pt,"stringFlag");function DJ(e,t){let r=e[t];return r===void 0||r===false||r===true?[]:Array.isArray(r)?r.filter(n=>n.length>0):r.split(",").map(n=>n.trim()).filter(n=>n.length>0)}s(DJ,"listFlag");function k_(e,t){let r=e[t];return r===void 0||r===false||r===true?[]:Array.isArray(r)?r.filter(n=>n.length>0):r.length>0?[r]:[]}s(k_,"repeatedFlag");function rf(e,t){let r=e[t];if(typeof r=="string"&&r.trim().length>0){let n=Number(r);return Number.isFinite(n)?n:null}return null}s(rf,"numberFlag");function NJ(e){let t=Pt(e,"format");return t==="md"||t==="json"||t==="plain"?t:"plain"}s(NJ,"parseFormat");function vJ(e){let t={},r=Pt(e,"file"),n=Pt(e,"cmd")??Pt(e,"command"),o=Pt(e,"keyword");return r!==null&&(t.file=r),n!==null&&(t.command=n),o!==null&&(t.keyword=o),t}s(vJ,"queryFromFlags");function Wa(){return {version:1,lessons:{},topics:{},triggers:{}}}s(Wa,"emptyGraph");function FJ(){let e=new Date,t=e.getUTCFullYear(),r=String(e.getUTCMonth()+1).padStart(2,"0"),n=String(e.getUTCDate()).padStart(2,"0");return `${t}-${r}-${n}`}s(FJ,"todayIso");function MJ(e,t,r){let n=[`# ${e}`,"",t,"","## Lessons",""];for(let[o,i]of r)n.push(`- **${o}** \u2014 ${i.rule}`);return `${n.join(`
|
|
725
725
|
`)}
|
|
726
726
|
`}s(MJ,"renderTopicMarkdown");function GJ(e,t,r){let n=[`# ${e}`,"",`**status:** ${t.status} **created:** ${t.createdAt}`,"",t.rule,"",`**topics:** ${t.topics.length>0?t.topics.join(", "):"(none)"}`,"","**triggers:**"];t.triggers.length===0&&n.push("- (none)");for(let o of t.triggers){let i=r[o];n.push(i?`- ${o} [${i.kind}] ${i.pattern}`:`- ${o} [missing trigger node]`);}return n.push("",`**evidence:** ${t.evidence.length>0?t.evidence.join(", "):"(none)"}`),t.supersededBy!==void 0&&n.push("",`**superseded by:** ${t.supersededBy}`),`${n.join(`
|
|
727
727
|
`)}
|
|
728
728
|
`}s(GJ,"renderLessonMarkdown");function Ge(e,t,r){switch(e){case "query":return {subcommand:e,exitCode:r,error:t,format:"plain",data:{lessons:[],query:{},autoMigrated:false,totalMatches:0}};case "add":return {subcommand:e,exitCode:r,error:t,data:{id:"",isNewLesson:false,isNewTopic:false,newTriggerIds:[],warnings:[]}};case "show":return {subcommand:e,exitCode:r,error:t,data:{subject:"",markdown:""}};case "deprecate":return {subcommand:e,exitCode:r,error:t,data:{id:"",supersededBy:null}};case "merge":return {subcommand:e,exitCode:r,error:t,data:{loserId:"",keeperId:""}};case "untrigger":return {subcommand:e,exitCode:r,error:t,data:{lessonId:"",triggerId:"",removedTriggerNode:false,remainingTriggerCount:0}};case "import-md":return {subcommand:e,exitCode:r,error:t,data:{topicCount:0,lessonCount:0,triggerCount:0,wroteGraphPath:"",deletedPaths:[]}};case "prune":return {subcommand:e,exitCode:r,error:t,data:{applied:false,cap:0,removedTriggerIds:[],removedTopicIds:[],trimmedLessons:[],removedDeadGlobs:[],unreachableLessons:[]}}}}s(Ge,"errorResult");function $J(e,t){let r=e[t];if(r===void 0||r===false)return null;let n=typeof r=="string"?Number(r):NaN;return !Number.isInteger(n)||n<1?`Invalid --${t}: expected a positive integer.`:null}s($J,"validatePositiveIntFlag");function nce(e){let t=e.format;return t===void 0||t==="plain"||t==="md"||t==="json"?null:"Invalid --format: expected plain|md|json."}s(nce,"validateFormatFlag");function L_(...e){let t=e.filter(r=>r!==void 0&&r.length>0);return t.length>0?t.join(`
|
|
729
|
-
`):void 0}s(L_,"mergeWarnings");function oce(e){if(existsSync(join(e,".agentsmesh")))return;let t=Sy(e);if(t!==null)return `no lessons graph here \u2014 this directory has no .agentsmesh, but a lessons project exists at ${t.replaceAll("\\","/")}. Run lessons from there (cd into it) for recall to work.`}s(oce,"strayDirWarning");function DC(e,t,r){let n=$J(e,"top");if(n!==null)return Ge("query",n,2);let o=$J(e,"max-tokens");if(o!==null)return Ge("query",o,2);let i=nce(e);if(i!==null)return Ge("query",i,2);let a=NJ(e),l=vJ(e),c=e.always===true;if(!c&&l.file===void 0&&l.command===void 0&&l.keyword===void 0)return Ge("query","Recall needs a predicate: pass at least one of --file <path-about-to-edit>, --cmd <command-about-to-run>, --keyword <text>, or --always.",2);let m=l.keyword!==void 0&&l.file===void 0&&l.command===void 0?"keyword-only recall misses file_glob and command_pattern lessons \u2014 pass --file <path-about-to-edit> and/or --cmd <command-about-to-run> for complete recall.":void 0,p=l.file===void 0?l:{...l,file:$a(l.file,t)},u=DW(t)??void 0,f=ba(t);if(f.status==="corrupt"){let Y={lessons:[],query:p,autoMigrated:r,totalMatches:0,warning:L_(`lessons.json is unreadable (corrupt) \u2014 recall returned no lessons. Run \`agentsmesh lessons validate\`. (${f.error.message})`,u)};return {subcommand:"query",exitCode:0,format:a,data:Y}}if(f.status==="newer-version"){let Y={lessons:[],query:p,autoMigrated:r,totalMatches:0,warning:L_(`lessons.json is version ${f.version}, newer than this build supports (${Si}) \u2014 recall returned no lessons. Upgrade agentsmesh to read it.`,u)};return {subcommand:"query",exitCode:0,format:a,data:Y}}if(f.status==="absent"){let Y=oce(t),F=L_(Y??Ld(),m,u);return {subcommand:"query",exitCode:0,format:a,data:{lessons:[],query:p,autoMigrated:r,totalMatches:0,warning:F}}}let g=f.graph,h=es(g,p),y=ja({explicit:Pt(e,"session")??void 0,disabled:e["no-dedup"]===true}),_=y===null?h:Cp(y,h),R=Oy(t),k=e.all===true?void 0:rf(e,"top")??R.limit,w=e.all===true?void 0:rf(e,"max-tokens")??R.maxTokens,D=ap(g,p,_,{limit:k,maxTokens:w});y!==null&&Ua(y,D.map(({id:Y})=>Y)),IC(t,g,p,h,D,{bypassed:e.all===true});let K=[...c?Ry(g).map(({id:Y,lesson:F})=>({id:Y,rule:F.rule,topics:[...F.topics],triggers:[...F.triggers],evidence:[...F.evidence],score:void 0})):[],...D.map(({id:Y,lesson:F,score:te})=>({id:Y,rule:F.rule,topics:[...F.topics],triggers:[...F.triggers],evidence:[...F.evidence],score:te}))],ee=h.length-_.length,se={lessons:K,query:p,autoMigrated:r,totalMatches:h.length,...ee>0?{suppressed:ee}:{},...e.ids===true?{showIds:true}:{},...(()=>{let Y=L_(m,u);return Y?{warning:Y}:{}})()};return {subcommand:"query",exitCode:0,format:a,data:se}}s(DC,"doQuery");function jJ(e){return typeof e=="object"&&e!==null&&e.status==="deprecated"}s(jJ,"isDeprecated");function sce(e,t,r){let n=uy(t),o=uy(r);if(n===o)return t;if(e!==void 0){let l=uy(e);if(n===l)return r;if(o===l)return t}let i=jJ(t),a=jJ(r);return i!==a?i?t:r:n>o?t:r}s(sce,"pick");function NC(e,t,r){let n={};for(let o of new Set([...Object.keys(t),...Object.keys(r)])){let i=t[o],a=r[o];n[o]=i!==void 0&&a!==void 0?sce(e[o],i,a):i??a;}return n}s(NC,"mergeRecord");function UJ(e,t,r){return {version:t.version,lessons:NC(e.lessons,t.lessons,r.lessons),topics:NC(e.topics,t.topics,r.topics),triggers:NC(e.triggers,t.triggers,r.triggers)}}s(UJ,"mergeGraphs");function vC(e){try{let t=oc.safeParse(JSON.parse(readFileSync(e,"utf8")));return t.success?t.data:null}catch{return null}}s(vC,"readGraphFile");function FC(e){let[t,r,n]=e,o={subcommand:"merge-driver",exitCode:1,data:{merged:false},error:"lessons merge-driver: could not merge \u2014 git will fall back to conflict markers."};if(t===void 0||r===void 0||n===void 0)return o;let i=vC(t),a=vC(r),l=vC(n);if(i===null||a===null||l===null)return o;let c=UJ(i,a,l);return Xn(c).ok?(writeFileSync(r,yd(c),"utf8"),{subcommand:"merge-driver",exitCode:0,data:{merged:true}}):o}s(FC,"doMergeDriver");function BJ(e,t,r){let n=e.lessons[t];if(n===void 0)throw new Error(`Unknown lesson: ${t}`);if(!n.triggers.includes(r))throw new Error(`Lesson "${t}" does not reference trigger "${r}".`);if(n.status==="active"&&n.triggers.length<=1)throw new Error(`Refusing to remove the only trigger of active lesson "${t}" \u2014 it would become unreachable. Add a replacement trigger first (lessons add "<same rule>" --topic ...), then untrigger.`);let o=n.triggers.filter(l=>l!==r);e.lessons[t]={...n,triggers:o};let i=Object.values(e.lessons).some(l=>l.triggers.includes(r)),a=false;return i||(delete e.triggers[r],a=true),{lessonId:t,triggerId:r,removedTriggerNode:a,remainingTriggerCount:o.length}}s(BJ,"untriggerLesson");function E_(e){return (e instanceof Error?e.message:String(e)).replace(/^(mutateLessonsGraph|mergeLessons):\s*/,"")}s(E_,"errMessage");async function MC(e,t,r){let n=t!==void 0&&t.length>0?t:null,o=Pt(e,"rule")??n,i=Pt(e,"topic");if(o===null)return Ge("add",`Missing rule \u2014 pass it positionally (\`add "<rule>"\`) or via --rule.${sf()}`,2);if(i===null)return Ge("add",`Missing --topic \u2014 every lesson needs a topic id (run \`agentsmesh lessons topics\` to list them, or pass --new-topic --topic-summary "..." for a new area).${sf()}`,2);let a=existsSync(join(r,".agentsmesh"))?null:Sy(r),l=a!==null?`Capturing into a new .agentsmesh here \u2014 a lessons project already exists at ${a.replaceAll("\\","/")}. If that was unintended, cd into it and re-run.`:void 0,c=kd(r)?void 0:"Captured \u2014 but recall is not wired into your AI tools yet (no `init --lessons`). Run `agentsmesh init --lessons`, then `agentsmesh generate`, so agents recall this automatically.",m=Pt(e,"scope")??void 0;try{if(m!==void 0&&m!=="always")throw new Error(`lessons add: --scope must be "always" (got "${m}").`);return {subcommand:"add",exitCode:0,data:{...await ef(r,{rule:o,topic:i,triggers:{files:k_(e,"trigger-file"),commands:k_(e,"trigger-cmd"),keywords:k_(e,"trigger-kw")},evidence:DJ(e,"evidence"),rationale:Pt(e,"rationale")??void 0,...m==="always"?{scope:"always"}:{}},{allowNewTopic:e["new-topic"]===!0,topicSummary:Pt(e,"topic-summary")??void 0}),...l?{locationNote:l}:{},...c?{activationNote:c}:{}}}}catch(p){return p instanceof Yn?Ge("add",`Unknown topic: ${p.topic}. Pass --new-topic --topic-summary "..." to create it.`,1):p instanceof Ii||p instanceof ki||p instanceof Ri?Ge("add",`${p.message}${sf()}`,2):Ge("add",E_(p),1)}}s(MC,"doAdd");async function GC(e,t,r){if(t===void 0||t==="")return Ge("deprecate","Usage: agentsmesh lessons deprecate <id> [--superseded-by <id>]",2);let n=Pt(e,"superseded-by");try{let{id:o,supersededBy:i}=await S_(r,t,n);return {subcommand:"deprecate",exitCode:0,data:{id:o,supersededBy:i}}}catch(o){let i=E_(o),a=i.startsWith("Unknown lesson")?" Run `agentsmesh lessons journal` to list lesson ids (or `lessons query --ids` to see what recalled).":"";return Ge("deprecate",`${i}${a}`,1)}}s(GC,"doDeprecate");async function $C(e,t,r){if(e===void 0||e===""||t===void 0||t==="")return Ge("untrigger","Usage: agentsmesh lessons untrigger <lesson-id> <trigger-id>",2);try{return {subcommand:"untrigger",exitCode:0,data:await At(r,i=>BJ(i,e,t))}}catch(n){return Ge("untrigger",E_(n),1)}}s($C,"doUntrigger");async function jC(e,t,r){if(e===void 0||e===""||t===void 0||t==="")return Ge("merge","Usage: agentsmesh lessons merge <loser-id> <keeper-id>",2);try{return {subcommand:"merge",exitCode:0,data:await g_(r,e,t)}}catch(n){return Ge("merge",E_(n),1)}}s(jC,"doMerge");async function UC(e,t){let r=e["dry-run"]===true,n=await h_(t,{dryRun:r});return {subcommand:"strip-markers",exitCode:0,data:{changedIds:n.changedIds,changedCount:n.changedCount,dryRun:r}}}s(UC,"doStripMarkers");async function BC(e,t){let r=e.force===true,n=e.merge===true;if(!r&&!n&&existsSync(Zo(t)))return Ge("import-md","lessons.json already exists. Pass --merge to fold legacy lessons into it (recommended \u2014 recovers stranded lessons without data loss), or --force to overwrite.",1);if(!existsSync(ve(t).index))return Ge("import-md","No legacy lessons store found (.agentsmesh/lessons/index.yaml) \u2014 nothing to migrate.",1);let o=Pt(e,"migrated-at")??FJ(),i=await rp(t,{migratedAt:o,force:r,merge:n});return {subcommand:"import-md",exitCode:0,data:{topicCount:i.topicCount,lessonCount:i.lessonCount,triggerCount:i.triggerCount,wroteGraphPath:i.wroteGraphPath,deletedPaths:i.deletedPaths}}}s(BC,"doImportMd");function KC(e,t){return {applied:t,cap:e.cap,removedTriggerIds:e.removedTriggerIds,removedTopicIds:e.removedTopicIds,trimmedLessons:e.trimmedLessons.map(r=>({id:r.id,removedCount:r.removedTriggers.length,keptCount:r.keptCount})),removedDeadGlobs:e.removedDeadGlobs.map(r=>({id:r.id,removedCount:r.removedTriggers.length,keptCount:r.keptCount})),unreachableLessons:e.unreachableLessons}}s(KC,"toPruneData");async function WC(e,t){let r=rf(e,"cap");if(r!==null&&(!Number.isInteger(r)||r<1))return Ge("prune","Invalid --cap: expected a positive integer.",2);let n=Pa(t)??void 0,o={...r!==null?{cap:r}:{},...n?{knownPaths:n}:{}};if(e.apply!==true){let c=Ye(t)??Ka();return {subcommand:"prune",exitCode:0,data:KC(dc(c,o),false)}}let i=Ye(t)??Ka(),a=dc(i,o);return Zd(a)?{subcommand:"prune",exitCode:0,data:KC(a,true)}:{subcommand:"prune",exitCode:0,data:await At(t,c=>{let m=dc(c,o);return f_(c,m),KC(m,true)})}}s(WC,"doPrune");function WJ(e){let t=Ye(e)??Ka(),r=Object.entries(t.topics).map(([o,i])=>({id:o,summary:i.summary})).sort((o,i)=>o.id<i.id?-1:1),n=kd(e)?void 0:Ld();return {subcommand:"topics",exitCode:0,data:{topics:r,...n?{setupHint:n}:{}}}}s(WJ,"doTopics");function HJ(e,t){if(e===void 0||e==="")return Ge("show","Usage: agentsmesh lessons show <topic|lesson-id>",2);let r=Ye(t);if(r!==null&&r.topics[e]!==void 0){let n=Object.entries(r.lessons).filter(([,i])=>i.topics.includes(e)&&i.status==="active").sort(([i],[a])=>i<a?-1:1),o=MJ(e,r.topics[e].summary,n);return {subcommand:"show",exitCode:0,data:{subject:e,markdown:o}}}if(r!==null&&r.lessons[e]!==void 0){let n=GJ(e,r.lessons[e],r.triggers);return {subcommand:"show",exitCode:0,data:{subject:e,markdown:n}}}return Ge("show",`Unknown topic or lesson id: ${e}. Run \`agentsmesh lessons topics\` to list topics, or \`agentsmesh lessons journal\` to list lesson ids.`,1)}s(HJ,"doShow");function zJ(e){let t=Ye(e)??Ka(),r=Object.entries(t.lessons).map(([i,a])=>({id:i,rule:a.rule,createdAt:a.createdAt,topics:[...a.topics]})).sort((i,a)=>i.createdAt!==a.createdAt?i.createdAt<a.createdAt?-1:1:i.id<a.id?-1:1),n=kd(e)?void 0:Ld();return {subcommand:"journal",exitCode:0,data:{entries:r,...n?{setupHint:n}:{}}}}s(zJ,"doJournal");function VJ(e,t){let r=Ye(t)??Ka(),n=PJ(_W(t),r),o=bJ(RW(t)),i=TJ(ip(t),r);return {subcommand:"stats",exitCode:0,format:e.json===true?"json":"text",data:{report:n,captureReport:o,effectiveness:i,hasLog:yW(t),hasCaptureLog:SW(t),hasOutcomeLog:LW(t),telemetryEnabled:cn()}}}s(VJ,"doStats");function JJ(e){let t;try{t=Ye(e)??Ka();}catch(a){return {subcommand:"validate",exitCode:1,data:{ok:false,findings:[{level:"error",code:"CORRUPT_GRAPH",message:`lessons.json could not be parsed (${a instanceof Error?a.message:String(a)}). The graph is git-tracked \u2014 restore it (e.g. \`git checkout -- .agentsmesh/lessons/lessons.json\`) or repair the JSON; recall degrades to empty until then.`}]}}}let r=Pa(e)??void 0,n=Xn(t,{knownPaths:r}),o=[...n.findings,...AJ(e,t)],i={ok:n.ok,findings:o};return {subcommand:"validate",exitCode:n.ok?0:1,data:i}}s(JJ,"doValidate");async function YJ(e){let t=await uce(),{output:r}=await wJ(t,e);return {subcommand:"hook",exitCode:0,data:{output:r}}}s(YJ,"doHook");var mce=1e6;async function pce(e,t=mce){let r=[],n=0;for await(let o of e){let i=o;if(n+=i.length,n>t)return "";r.push(i);}return Buffer.concat(r).toString("utf8")}s(pce,"readBoundedStream");async function uce(){return process.stdin.isTTY===true?"":pce(process.stdin)}s(uce,"readStdin");var dce=["json","verbose","help"],fce={query:["file","cmd","command","keyword","always","format","top","all","max-tokens","session","no-dedup","ids"],add:["rule","topic","trigger-file","trigger-cmd","trigger-kw","evidence","rationale","new-topic","topic-summary","scope"],topics:[],show:[],deprecate:["superseded-by"],merge:[],untrigger:[],"strip-markers":["dry-run"],journal:[],validate:[],stats:["json"],prune:["apply","cap"],"import-md":["merge","force","migrated-at"]};function XJ(e,t){let r=fce[e];if(r===void 0)return null;let n=new Set([...r,...dce]);for(let o of Object.keys(t))if(!n.has(o))return `Unknown flag --${o} for \`lessons ${e}\`.
|
|
729
|
+
`):void 0}s(L_,"mergeWarnings");function oce(e){if(existsSync(join(e,".agentsmesh")))return;let t=Sy(e);if(t!==null)return `no lessons graph here \u2014 this directory has no .agentsmesh, but a lessons project exists at ${t.replaceAll("\\","/")}. Run lessons from there (cd into it) for recall to work.`}s(oce,"strayDirWarning");function DC(e,t,r){let n=$J(e,"top");if(n!==null)return Ge("query",n,2);let o=$J(e,"max-tokens");if(o!==null)return Ge("query",o,2);let i=nce(e);if(i!==null)return Ge("query",i,2);let a=NJ(e),l=vJ(e),c=e.always===true;if(!c&&l.file===void 0&&l.command===void 0&&l.keyword===void 0)return Ge("query","Recall needs a predicate: pass at least one of --file <path-about-to-edit>, --cmd <command-about-to-run>, --keyword <text>, or --always.",2);let m=l.keyword!==void 0&&l.file===void 0&&l.command===void 0?"keyword-only recall misses file_glob and command_pattern lessons \u2014 pass --file <path-about-to-edit> and/or --cmd <command-about-to-run> for complete recall.":void 0,p=l.file===void 0?l:{...l,file:ja(l.file,t)},u=NW(t)??void 0,f=ba(t);if(f.status==="corrupt"){let Y={lessons:[],query:p,autoMigrated:r,totalMatches:0,warning:L_(`lessons.json is unreadable (corrupt) \u2014 recall returned no lessons. Run \`agentsmesh lessons validate\`. (${f.error.message})`,u)};return {subcommand:"query",exitCode:0,format:a,data:Y}}if(f.status==="newer-version"){let Y={lessons:[],query:p,autoMigrated:r,totalMatches:0,warning:L_(`lessons.json is version ${f.version}, newer than this build supports (${Si}) \u2014 recall returned no lessons. Upgrade agentsmesh to read it.`,u)};return {subcommand:"query",exitCode:0,format:a,data:Y}}if(f.status==="absent"){let Y=oce(t),F=L_(Y??Ld(),m,u);return {subcommand:"query",exitCode:0,format:a,data:{lessons:[],query:p,autoMigrated:r,totalMatches:0,warning:F}}}let g=f.graph,h=es(g,p),y=Ua({explicit:Pt(e,"session")??void 0,disabled:e["no-dedup"]===true}),_=y===null?h:Cp(y,h),R=Oy(t),k=e.all===true?void 0:rf(e,"top")??R.limit,w=e.all===true?void 0:rf(e,"max-tokens")??R.maxTokens,D=lp(g,p,_,{limit:k,maxTokens:w});y!==null&&Ba(y,D.map(({id:Y})=>Y)),IC(t,g,p,h,D,{bypassed:e.all===true});let K=[...c?Ry(g).map(({id:Y,lesson:F})=>({id:Y,rule:F.rule,topics:[...F.topics],triggers:[...F.triggers],evidence:[...F.evidence],score:void 0})):[],...D.map(({id:Y,lesson:F,score:te})=>({id:Y,rule:F.rule,topics:[...F.topics],triggers:[...F.triggers],evidence:[...F.evidence],score:te}))],ee=h.length-_.length,se={lessons:K,query:p,autoMigrated:r,totalMatches:h.length,...ee>0?{suppressed:ee}:{},...e.ids===true?{showIds:true}:{},...(()=>{let Y=L_(m,u);return Y?{warning:Y}:{}})()};return {subcommand:"query",exitCode:0,format:a,data:se}}s(DC,"doQuery");function jJ(e){return typeof e=="object"&&e!==null&&e.status==="deprecated"}s(jJ,"isDeprecated");function sce(e,t,r){let n=uy(t),o=uy(r);if(n===o)return t;if(e!==void 0){let l=uy(e);if(n===l)return r;if(o===l)return t}let i=jJ(t),a=jJ(r);return i!==a?i?t:r:n>o?t:r}s(sce,"pick");function NC(e,t,r){let n={};for(let o of new Set([...Object.keys(t),...Object.keys(r)])){let i=t[o],a=r[o];n[o]=i!==void 0&&a!==void 0?sce(e[o],i,a):i??a;}return n}s(NC,"mergeRecord");function UJ(e,t,r){return {version:t.version,lessons:NC(e.lessons,t.lessons,r.lessons),topics:NC(e.topics,t.topics,r.topics),triggers:NC(e.triggers,t.triggers,r.triggers)}}s(UJ,"mergeGraphs");function vC(e){try{let t=sc.safeParse(JSON.parse(readFileSync(e,"utf8")));return t.success?t.data:null}catch{return null}}s(vC,"readGraphFile");function FC(e){let[t,r,n]=e,o={subcommand:"merge-driver",exitCode:1,data:{merged:false},error:"lessons merge-driver: could not merge \u2014 git will fall back to conflict markers."};if(t===void 0||r===void 0||n===void 0)return o;let i=vC(t),a=vC(r),l=vC(n);if(i===null||a===null||l===null)return o;let c=UJ(i,a,l);return Xn(c).ok?(writeFileSync(r,yd(c),"utf8"),{subcommand:"merge-driver",exitCode:0,data:{merged:true}}):o}s(FC,"doMergeDriver");function BJ(e,t,r){let n=e.lessons[t];if(n===void 0)throw new Error(`Unknown lesson: ${t}`);if(!n.triggers.includes(r))throw new Error(`Lesson "${t}" does not reference trigger "${r}".`);if(n.status==="active"&&n.triggers.length<=1)throw new Error(`Refusing to remove the only trigger of active lesson "${t}" \u2014 it would become unreachable. Add a replacement trigger first (lessons add "<same rule>" --topic ...), then untrigger.`);let o=n.triggers.filter(l=>l!==r);e.lessons[t]={...n,triggers:o};let i=Object.values(e.lessons).some(l=>l.triggers.includes(r)),a=false;return i||(delete e.triggers[r],a=true),{lessonId:t,triggerId:r,removedTriggerNode:a,remainingTriggerCount:o.length}}s(BJ,"untriggerLesson");function E_(e){return (e instanceof Error?e.message:String(e)).replace(/^(mutateLessonsGraph|mergeLessons):\s*/,"")}s(E_,"errMessage");async function MC(e,t,r){let n=t!==void 0&&t.length>0?t:null,o=Pt(e,"rule")??n,i=Pt(e,"topic");if(o===null)return Ge("add",`Missing rule \u2014 pass it positionally (\`add "<rule>"\`) or via --rule.${sf()}`,2);if(i===null)return Ge("add",`Missing --topic \u2014 every lesson needs a topic id (run \`agentsmesh lessons topics\` to list them, or pass --new-topic --topic-summary "..." for a new area).${sf()}`,2);let a=existsSync(join(r,".agentsmesh"))?null:Sy(r),l=a!==null?`Capturing into a new .agentsmesh here \u2014 a lessons project already exists at ${a.replaceAll("\\","/")}. If that was unintended, cd into it and re-run.`:void 0,c=kd(r)?void 0:"Captured \u2014 but recall is not wired into your AI tools yet (no `init --lessons`). Run `agentsmesh init --lessons`, then `agentsmesh generate`, so agents recall this automatically.",m=Pt(e,"scope")??void 0;try{if(m!==void 0&&m!=="always")throw new Error(`lessons add: --scope must be "always" (got "${m}").`);return {subcommand:"add",exitCode:0,data:{...await ef(r,{rule:o,topic:i,triggers:{files:k_(e,"trigger-file"),commands:k_(e,"trigger-cmd"),keywords:k_(e,"trigger-kw")},evidence:DJ(e,"evidence"),rationale:Pt(e,"rationale")??void 0,...m==="always"?{scope:"always"}:{}},{allowNewTopic:e["new-topic"]===!0,topicSummary:Pt(e,"topic-summary")??void 0}),...l?{locationNote:l}:{},...c?{activationNote:c}:{}}}}catch(p){return p instanceof Yn?Ge("add",`Unknown topic: ${p.topic}. Pass --new-topic --topic-summary "..." to create it.`,1):p instanceof Ii||p instanceof ki||p instanceof Ri?Ge("add",`${p.message}${sf()}`,2):Ge("add",E_(p),1)}}s(MC,"doAdd");async function GC(e,t,r){if(t===void 0||t==="")return Ge("deprecate","Usage: agentsmesh lessons deprecate <id> [--superseded-by <id>]",2);let n=Pt(e,"superseded-by");try{let{id:o,supersededBy:i}=await S_(r,t,n);return {subcommand:"deprecate",exitCode:0,data:{id:o,supersededBy:i}}}catch(o){let i=E_(o),a=i.startsWith("Unknown lesson")?" Run `agentsmesh lessons journal` to list lesson ids (or `lessons query --ids` to see what recalled).":"";return Ge("deprecate",`${i}${a}`,1)}}s(GC,"doDeprecate");async function $C(e,t,r){if(e===void 0||e===""||t===void 0||t==="")return Ge("untrigger","Usage: agentsmesh lessons untrigger <lesson-id> <trigger-id>",2);try{return {subcommand:"untrigger",exitCode:0,data:await At(r,i=>BJ(i,e,t))}}catch(n){return Ge("untrigger",E_(n),1)}}s($C,"doUntrigger");async function jC(e,t,r){if(e===void 0||e===""||t===void 0||t==="")return Ge("merge","Usage: agentsmesh lessons merge <loser-id> <keeper-id>",2);try{return {subcommand:"merge",exitCode:0,data:await g_(r,e,t)}}catch(n){return Ge("merge",E_(n),1)}}s(jC,"doMerge");async function UC(e,t){let r=e["dry-run"]===true,n=await h_(t,{dryRun:r});return {subcommand:"strip-markers",exitCode:0,data:{changedIds:n.changedIds,changedCount:n.changedCount,dryRun:r}}}s(UC,"doStripMarkers");async function BC(e,t){let r=e.force===true,n=e.merge===true;if(!r&&!n&&existsSync(Zo(t)))return Ge("import-md","lessons.json already exists. Pass --merge to fold legacy lessons into it (recommended \u2014 recovers stranded lessons without data loss), or --force to overwrite.",1);if(!existsSync(ve(t).index))return Ge("import-md","No legacy lessons store found (.agentsmesh/lessons/index.yaml) \u2014 nothing to migrate.",1);let o=Pt(e,"migrated-at")??FJ(),i=await np(t,{migratedAt:o,force:r,merge:n});return {subcommand:"import-md",exitCode:0,data:{topicCount:i.topicCount,lessonCount:i.lessonCount,triggerCount:i.triggerCount,wroteGraphPath:i.wroteGraphPath,deletedPaths:i.deletedPaths}}}s(BC,"doImportMd");function KC(e,t){return {applied:t,cap:e.cap,removedTriggerIds:e.removedTriggerIds,removedTopicIds:e.removedTopicIds,trimmedLessons:e.trimmedLessons.map(r=>({id:r.id,removedCount:r.removedTriggers.length,keptCount:r.keptCount})),removedDeadGlobs:e.removedDeadGlobs.map(r=>({id:r.id,removedCount:r.removedTriggers.length,keptCount:r.keptCount})),unreachableLessons:e.unreachableLessons}}s(KC,"toPruneData");async function WC(e,t){let r=rf(e,"cap");if(r!==null&&(!Number.isInteger(r)||r<1))return Ge("prune","Invalid --cap: expected a positive integer.",2);let n=Pa(t)??void 0,o={...r!==null?{cap:r}:{},...n?{knownPaths:n}:{}};if(e.apply!==true){let c=Ye(t)??Wa();return {subcommand:"prune",exitCode:0,data:KC(fc(c,o),false)}}let i=Ye(t)??Wa(),a=fc(i,o);return Zd(a)?{subcommand:"prune",exitCode:0,data:KC(a,true)}:{subcommand:"prune",exitCode:0,data:await At(t,c=>{let m=fc(c,o);return f_(c,m),KC(m,true)})}}s(WC,"doPrune");function WJ(e){let t=Ye(e)??Wa(),r=Object.entries(t.topics).map(([o,i])=>({id:o,summary:i.summary})).sort((o,i)=>o.id<i.id?-1:1),n=kd(e)?void 0:Ld();return {subcommand:"topics",exitCode:0,data:{topics:r,...n?{setupHint:n}:{}}}}s(WJ,"doTopics");function HJ(e,t){if(e===void 0||e==="")return Ge("show","Usage: agentsmesh lessons show <topic|lesson-id>",2);let r=Ye(t);if(r!==null&&r.topics[e]!==void 0){let n=Object.entries(r.lessons).filter(([,i])=>i.topics.includes(e)&&i.status==="active").sort(([i],[a])=>i<a?-1:1),o=MJ(e,r.topics[e].summary,n);return {subcommand:"show",exitCode:0,data:{subject:e,markdown:o}}}if(r!==null&&r.lessons[e]!==void 0){let n=GJ(e,r.lessons[e],r.triggers);return {subcommand:"show",exitCode:0,data:{subject:e,markdown:n}}}return Ge("show",`Unknown topic or lesson id: ${e}. Run \`agentsmesh lessons topics\` to list topics, or \`agentsmesh lessons journal\` to list lesson ids.`,1)}s(HJ,"doShow");function zJ(e){let t=Ye(e)??Wa(),r=Object.entries(t.lessons).map(([i,a])=>({id:i,rule:a.rule,createdAt:a.createdAt,topics:[...a.topics]})).sort((i,a)=>i.createdAt!==a.createdAt?i.createdAt<a.createdAt?-1:1:i.id<a.id?-1:1),n=kd(e)?void 0:Ld();return {subcommand:"journal",exitCode:0,data:{entries:r,...n?{setupHint:n}:{}}}}s(zJ,"doJournal");function VJ(e,t){let r=Ye(t)??Wa(),n=PJ(SW(t),r),o=bJ(IW(t)),i=TJ(ap(t),r);return {subcommand:"stats",exitCode:0,format:e.json===true?"json":"text",data:{report:n,captureReport:o,effectiveness:i,hasLog:_W(t),hasCaptureLog:RW(t),hasOutcomeLog:EW(t),telemetryEnabled:cn()}}}s(VJ,"doStats");function JJ(e){let t;try{t=Ye(e)??Wa();}catch(a){return {subcommand:"validate",exitCode:1,data:{ok:false,findings:[{level:"error",code:"CORRUPT_GRAPH",message:`lessons.json could not be parsed (${a instanceof Error?a.message:String(a)}). The graph is git-tracked \u2014 restore it (e.g. \`git checkout -- .agentsmesh/lessons/lessons.json\`) or repair the JSON; recall degrades to empty until then.`}]}}}let r=Pa(e)??void 0,n=Xn(t,{knownPaths:r}),o=[...n.findings,...AJ(e,t)],i={ok:n.ok,findings:o};return {subcommand:"validate",exitCode:n.ok?0:1,data:i}}s(JJ,"doValidate");async function YJ(e){let t=await uce(),{output:r}=await wJ(t,e);return {subcommand:"hook",exitCode:0,data:{output:r}}}s(YJ,"doHook");var mce=1e6;async function pce(e,t=mce){let r=[],n=0;for await(let o of e){let i=o;if(n+=i.length,n>t)return "";r.push(i);}return Buffer.concat(r).toString("utf8")}s(pce,"readBoundedStream");async function uce(){return process.stdin.isTTY===true?"":pce(process.stdin)}s(uce,"readStdin");var dce=["json","verbose","help"],fce={query:["file","cmd","command","keyword","always","format","top","all","max-tokens","session","no-dedup","ids"],add:["rule","topic","trigger-file","trigger-cmd","trigger-kw","evidence","rationale","new-topic","topic-summary","scope"],topics:[],show:[],deprecate:["superseded-by"],merge:[],untrigger:[],"strip-markers":["dry-run"],journal:[],validate:[],stats:["json"],prune:["apply","cap"],"import-md":["merge","force","migrated-at"]};function XJ(e,t){let r=fce[e];if(r===void 0)return null;let n=new Set([...r,...dce]);for(let o of Object.keys(t))if(!n.has(o))return `Unknown flag --${o} for \`lessons ${e}\`.
|
|
730
730
|
Usage: ${Ti[e].usage}`;return null}s(XJ,"validateLessonsFlags");async function gce(e,t){if(e==="import-md")return false;if(e==="query"||e==="hook")try{return await rt(t)}catch{return false}return rt(t)}s(gce,"migrateForSubcommand");async function QJ(e,t,r){let n=t[0];if(n===void 0||n==="")return {subcommand:"help",exitCode:0,data:null};let o=XJ(n,e);if(o!==null)return {subcommand:"help",exitCode:2,error:o,data:null};let i=await gce(n,r);switch(n){case "query":return DC(e,r,i);case "add":return MC(e,t[1],r);case "topics":return WJ(r);case "show":return HJ(t[1],r);case "deprecate":return GC(e,t[1],r);case "merge":return jC(t[1],t[2],r);case "untrigger":return $C(t[1],t[2],r);case "strip-markers":return UC(e,r);case "journal":return zJ(r);case "validate":return JJ(r);case "stats":return VJ(e,r);case "prune":return WC(e,r);case "import-md":return BC(e,r);case "hook":return YJ(r);case "merge-driver":return FC(t.slice(1));default:return {subcommand:"help",exitCode:2,error:`Unknown lessons subcommand: ${n}`,data:null}}}s(QJ,"runLessons");ue();ue();function nf(e){return `${(e*100).toFixed(1)}%`}s(nf,"pct");function ZJ(e,t){if(t==="json"){process.stdout.write(`${JSON.stringify({...e.report,capture:e.captureReport,effectiveness:e.effectiveness},null,2)}
|
|
731
731
|
`);return}if(!e.hasLog&&!e.hasCaptureLog&&!e.hasOutcomeLog){yce(e.telemetryEnabled);return}e.hasLog&&_ce(e.report),e.hasCaptureLog&&Sce(e),e.hasOutcomeLog&&hce(e.effectiveness);}s(ZJ,"renderStats");function hce(e){S.info(`effectiveness (coarse): ${e.deliveries} deliveries of ${e.lessonsDelivered} lesson${e.lessonsDelivered===1?"":"s"}, held ${nf(e.heldRate)} (no repeat recorded on the same action after delivery \u2014 a weak upper bound, not proof)`),S.info(` ${e.ineffectiveLessons} ineffective (delivered \u2265${tf}\xD7, repeated every time), ${e.failuresObserved} failures observed \u2014 run \`lessons validate\` for the actionable list`);}s(hce,"renderEffectivenessStats");function yce(e){e?S.info("(telemetry is ON here, but nothing has been recorded yet \u2014 telemetry is written by `lessons query` recalls and `lessons add` captures, not by `stats`. Run some `agentsmesh lessons` calls, then re-run stats.)"):S.info("(no lessons telemetry yet \u2014 recording happens during `lessons query` recalls and `lessons add` captures, NOT during `stats`. Set AGENTSMESH_LESSONS_TELEMETRY=1 in the environment that runs them \u2014 your shell for CLI calls, and/or the MCP server process for agent calls \u2014 then re-run `stats`.)");}s(yce,"renderEmptyStatsHint");function _ce(e){let t=e.preloadBreakEven;S.info(`recalls: ${e.totalRecalls} no-match: ${nf(e.noMatchRate)} sessions: ${t.sessions} bypassed(--all): ${e.bypassedRecalls}`),S.info(`match counts: ${e.matchCountHistogram.map(r=>`${r.bucket}=${r.count}`).join(" ")}`),S.info(`returned tokens: p50=${e.returnedTokens.p50} p90=${e.returnedTokens.p90} max=${e.returnedTokens.max}`),S.info(`break-even (per session): preload ${t.sessions}\xD7${e.wholeActiveSetTokens}=${t.preloadTokens} vs mandatory recall=${t.mandatoryRecallTokens} \u2192 ${t.recallCheaper?"recall cheaper":"preload cheaper"} (ratio ${t.ratio.toFixed(2)})`),S.info(`redundancy: ${nf(e.redundancy.rate)} of delivered rule-tokens are intra-session repeats (coverage ${nf(e.redundancy.coverage)})`),S.info(`reachability: keyword-only recalls ${nf(e.reachability.keywordOnlyRecallRate)}, keyword-only-unreachable lessons ${e.reachability.keywordOnlyUnreachableLessons}`);}s(_ce,"renderRecallStats");function Sce(e){let t=e.captureReport,r=t.byTriggerKind,n=t.total===0?"\u2014":(e.report.totalRecalls/t.total).toFixed(2);S.info(`captures: ${t.total} blocked: ${t.blocked} new: ${t.newLessons} upsert: ${t.upserts} new-topics: ${t.newTopics} warned: ${t.withWarnings}`),S.info(`capture triggers by kind: file=${r.file} cmd=${r.command} kw=${r.keyword}`),S.info(`recall:capture ratio: ${n} recalls per capture`);}s(Sce,"renderCaptureStats");function eY(e){let t=e.removedTriggerIds.length,r=e.removedTopicIds.length,n=e.trimmedLessons.length,o=e.removedDeadGlobs.length;if(t===0&&r===0&&n===0&&o===0){S.success(`Lessons graph already lean (cap ${e.cap}) \u2014 nothing to prune.`),qJ(e.unreachableLessons);return}let i=e.applied?"Pruned":"Would prune";S.success(`${i}: ${o} dead glob${o===1?"":"s"} detached, ${t} dead trigger${t===1?"":"s"} removed, ${r} orphan topic${r===1?"":"s"} removed, ${n} over-cap lesson${n===1?"":"s"} trimmed (cap ${e.cap}).`);for(let a of e.trimmedLessons)S.info(` trim ${a.id}: -${a.removedCount} \u2192 ${a.keptCount} kept`);for(let a of e.removedDeadGlobs)S.info(` dead-glob ${a.id}: -${a.removedCount} \u2192 ${a.keptCount} kept`);qJ(e.unreachableLessons),e.applied||S.warn("Dry run \u2014 pass --apply to write. lessons.json is git-tracked, so prune is reversible.");}s(eY,"renderPrune");function qJ(e){e.length!==0&&S.warn(`${e.length} lesson${e.length===1?"":"s"} unreachable (every trigger is a dead glob) \u2014 left intact to avoid stranding; re-point a trigger or deprecate: ${e.join(", ")}`);}s(qJ,"renderUnreachable");function tY(e){for(let t of e.findings){let r=`${t.level.toUpperCase()} ${t.code}: ${t.message}`;t.level==="error"?S.error(r):S.warn(r);}e.ok&&S.success("Lessons graph: ok.");}s(tY,"renderValidate");function nY(e){if(e.error!==void 0&&e.error.length>0){S.error(e.error);return}switch(e.subcommand){case "help":return Oce();case "hook":e.data.output.length>0&&process.stdout.write(`${e.data.output}
|
|
732
732
|
`);return;case "merge-driver":return;case "query":return Rce(e.data,e.format);case "add":return Ice(e.data);case "topics":return kce(e.data);case "show":return Lce(e.data);case "deprecate":S.success(e.data.supersededBy===null?`Deprecated ${e.data.id}.`:`Superseded ${e.data.id} \u2192 ${e.data.supersededBy}.`);return;case "merge":e.exitCode===0&&S.success(`Merged ${e.data.loserId} \u2192 ${e.data.keeperId}.`);return;case "untrigger":S.success(`Removed trigger ${e.data.triggerId} from ${e.data.lessonId} (${e.data.remainingTriggerCount} trigger${e.data.remainingTriggerCount===1?"":"s"} left)${e.data.removedTriggerNode?"; trigger node garbage-collected (no other lesson used it)":""}.`);return;case "strip-markers":S.success(`${e.data.dryRun?"Would strip":"Stripped"} legacy markers from ${e.data.changedCount} lesson${e.data.changedCount===1?"":"s"}.`);return;case "journal":return Ece(e.data);case "validate":return tY(e.data);case "prune":return eY(e.data);case "stats":return ZJ(e.data,e.format);case "import-md":return Cce(e.data)}}s(nY,"renderLessons");function Rce(e,t){if(e.autoMigrated&&S.warn("lessons.json was auto-migrated from index.yaml on first invocation."),e.warning!==void 0&&e.warning.length>0&&S.warn(e.warning),t==="json"){process.stdout.write(`${JSON.stringify(e,null,2)}
|
|
733
|
-
`);return}if(e.lessons.length===0){S.info("(no matches)");return}let r=s((n,o)=>e.showIds===true?`[${n}] ${o}`:o,"withId");if(t==="md")e.lessons.forEach((n,o)=>S.info(`${o+1}. ${r(n.id,n.rule)}`));else for(let n of e.lessons)S.info(r(n.id,n.rule));e.totalMatches!==void 0&&e.totalMatches>e.lessons.length&&S.warn(`(showing ${e.lessons.length} of ${e.totalMatches} matches \u2014 raise --top <n> with --max-tokens <m>, or pass --all)`),e.suppressed!==void 0&&e.suppressed>0&&S.warn(`(${e.suppressed} already shown this session \u2014 deduped; pass --no-dedup to include)`);}s(Rce,"renderQuery");function Ice(e){if(!e.isNewLesson){if(e.newTriggerIds.length>0){let t=e.newTriggerIds.length;S.success(`Updated lesson: ${e.id} (+${t} trigger${t===1?"":"s"})`);}else S.info(`Existing lesson: ${e.id} (no change)`);rY(e);return}S.success(`Added lesson: ${e.id}`),e.isNewTopic&&S.info(" created new topic"),e.newTriggerIds.length>0&&S.info(` new triggers: ${e.newTriggerIds.join(", ")}`),rY(e);}s(Ice,"renderAdd");function rY(e){e.locationNote!==void 0&&S.warn(e.locationNote),e.activationNote!==void 0&&S.warn(e.activationNote);for(let r of e.warnings)S.warn(`${r.code}: ${r.message}`);let t=e.autoPruned;t!==void 0&&S.info(` auto-pruned: ${t.removedTriggers} orphan trigger${t.removedTriggers===1?"":"s"}, ${t.removedTopics} orphan topic${t.removedTopics===1?"":"s"}, ${t.detachedDeadGlobs} dead glob${t.detachedDeadGlobs===1?"":"s"} detached (git-reversible)`);}s(rY,"renderGuardrails");function kce(e){if(e.topics.length===0)S.info("(no topics)");else for(let t of e.topics)S.info(`${t.id} ${t.summary}`);e.setupHint!==void 0&&S.warn(e.setupHint);}s(kce,"renderTopics");function Lce(e){process.stdout.write(e.markdown);}s(Lce,"renderShow");function Ece(e){for(let t of e.entries)S.info(`${t.createdAt} ${t.id} ${t.rule}`);e.setupHint!==void 0&&S.warn(e.setupHint);}s(Ece,"renderJournal");function Cce(e){S.success(`Imported lessons: topics=${e.topicCount} lessons=${e.lessonCount} triggers=${e.triggerCount}`),S.info(` graph: ${e.wroteGraphPath.replaceAll("\\","/")}`),e.deletedPaths.length>0&&S.info(` removed legacy: ${e.deletedPaths.length} path${e.deletedPaths.length===1?"":"s"}`);}s(Cce,"renderImportMd");function Oce(){S.info("Usage: agentsmesh lessons <subcommand> [args] [flags]"),S.info(""),S.info("Subcommands:");for(let e of Object.values(Ti)){let t=e.usage.replace(/^agentsmesh lessons /,""),r=e.summary!==void 0?` (${e.summary})`:"";S.info(` ${t}${r}`);}}s(Oce,"printHelp");function ct(e){let t={};for(let[r,n]of Object.entries(e))t[r]=Array.isArray(n)?n[n.length-1]:n;return t}s(ct,"narrowFlags");var oY={generate:s(async(e,t)=>{let r=ct(e);G.intro("agentsmesh generate");let n=G.spinner();n.start("Generating tool config\u2026");let o=await qo(r,void 0,{printMatrix:false});if(n.stop("Generate complete"),pt("generate",o,r,()=>
|
|
733
|
+
`);return}if(e.lessons.length===0){S.info("(no matches)");return}let r=s((n,o)=>e.showIds===true?`[${n}] ${o}`:o,"withId");if(t==="md")e.lessons.forEach((n,o)=>S.info(`${o+1}. ${r(n.id,n.rule)}`));else for(let n of e.lessons)S.info(r(n.id,n.rule));e.totalMatches!==void 0&&e.totalMatches>e.lessons.length&&S.warn(`(showing ${e.lessons.length} of ${e.totalMatches} matches \u2014 raise --top <n> with --max-tokens <m>, or pass --all)`),e.suppressed!==void 0&&e.suppressed>0&&S.warn(`(${e.suppressed} already shown this session \u2014 deduped; pass --no-dedup to include)`);}s(Rce,"renderQuery");function Ice(e){if(!e.isNewLesson){if(e.newTriggerIds.length>0){let t=e.newTriggerIds.length;S.success(`Updated lesson: ${e.id} (+${t} trigger${t===1?"":"s"})`);}else S.info(`Existing lesson: ${e.id} (no change)`);rY(e);return}S.success(`Added lesson: ${e.id}`),e.isNewTopic&&S.info(" created new topic"),e.newTriggerIds.length>0&&S.info(` new triggers: ${e.newTriggerIds.join(", ")}`),rY(e);}s(Ice,"renderAdd");function rY(e){e.locationNote!==void 0&&S.warn(e.locationNote),e.activationNote!==void 0&&S.warn(e.activationNote);for(let r of e.warnings)S.warn(`${r.code}: ${r.message}`);let t=e.autoPruned;t!==void 0&&S.info(` auto-pruned: ${t.removedTriggers} orphan trigger${t.removedTriggers===1?"":"s"}, ${t.removedTopics} orphan topic${t.removedTopics===1?"":"s"}, ${t.detachedDeadGlobs} dead glob${t.detachedDeadGlobs===1?"":"s"} detached (git-reversible)`);}s(rY,"renderGuardrails");function kce(e){if(e.topics.length===0)S.info("(no topics)");else for(let t of e.topics)S.info(`${t.id} ${t.summary}`);e.setupHint!==void 0&&S.warn(e.setupHint);}s(kce,"renderTopics");function Lce(e){process.stdout.write(e.markdown);}s(Lce,"renderShow");function Ece(e){for(let t of e.entries)S.info(`${t.createdAt} ${t.id} ${t.rule}`);e.setupHint!==void 0&&S.warn(e.setupHint);}s(Ece,"renderJournal");function Cce(e){S.success(`Imported lessons: topics=${e.topicCount} lessons=${e.lessonCount} triggers=${e.triggerCount}`),S.info(` graph: ${e.wroteGraphPath.replaceAll("\\","/")}`),e.deletedPaths.length>0&&S.info(` removed legacy: ${e.deletedPaths.length} path${e.deletedPaths.length===1?"":"s"}`);}s(Cce,"renderImportMd");function Oce(){S.info("Usage: agentsmesh lessons <subcommand> [args] [flags]"),S.info(""),S.info("Subcommands:");for(let e of Object.values(Ti)){let t=e.usage.replace(/^agentsmesh lessons /,""),r=e.summary!==void 0?` (${e.summary})`:"";S.info(` ${t}${r}`);}}s(Oce,"printHelp");function ct(e){let t={};for(let[r,n]of Object.entries(e))t[r]=Array.isArray(n)?n[n.length-1]:n;return t}s(ct,"narrowFlags");function HC(e){return process.stdin.isTTY===true&&process.stdout.isTTY===true&&e.force!==true&&e["dry-run"]!==true}s(HC,"mayPrompt");var oY={generate:s(async(e,t)=>{let r=ct(e);G.intro("agentsmesh generate");let n=G.spinner();n.start("Generating tool config\u2026");let o=await qo(r,void 0,{printMatrix:false});if(n.stop("Generate complete"),pt("generate",o,r,()=>Qm(o)),G.outro("Done"),r.json!==true){let i=await Ym(r,process.cwd());Xm(i,{verbose:r.verbose===true});}},"generate"),init:s(async(e,t)=>{let r=process.stdin.isTTY===true&&process.stdout.isTTY===true&&e.yes!==true&&e.json!==true,n=r?{prompter:cH()}:{},o=await iH(process.cwd(),{yes:e.yes===true,global:e.global===true,lessons:e.lessons===true},n),i=r&&o.data.lessonsOnly!==true;pt("init",o,ct(e),i?()=>{}:()=>lH(o));},"init"),import:s(async(e,t)=>{let r=ct(e);G.intro("agentsmesh import");let n=G.spinner();n.start("Importing\u2026");let o=await uH(r);n.stop("Import complete"),pt("import",o,r,()=>wH(o)),G.outro("Done");},"import"),diff:s(async(e,t)=>{let r=ct(e),n=await fH(r);pt("diff",n,r,()=>bH(n));},"diff"),lint:s(async(e,t)=>{let r=ct(e),n=await EH(r);pt("lint",n,r,()=>CH(n));},"lint"),check:s(async(e,t)=>{let r=ct(e),n=await PH(r);pt("check",n,r,()=>OH(n));},"check"),merge:s(async(e,t)=>{let r=ct(e),n=await vH(r);pt("merge",n,r,()=>AH(n));},"merge"),matrix:s(async(e,t)=>{let r=ct(e),n=await Ym(r);pt("matrix",n,r,()=>Xm(n,{verbose:r.verbose===true}));},"matrix"),watch:s(async(e,t)=>{let r=ct(e);if(r.json===true){kc("watch",{success:false,error:"--json is not supported with watch"}),process.exit(1);return}let n=await xH(r),o=s(()=>{n.stop().then(()=>process.exit(0));},"stop");process.on("SIGINT",o),process.on("SIGTERM",o);},"watch"),install:s(async(e,t)=>{let r=ct(e);r.json===true&&(r.force=true),G.intro("agentsmesh install");let n=HC(r)?null:G.spinner();n?.start("Installing\u2026");let o=await j1(r,t,process.cwd());n?.stop("Install complete"),pt("install",o,r,()=>U1(o)),G.outro("Done");},"install"),uninstall:s(async(e,t)=>{let r=ct(e);r.json===true&&(r.force=true),G.intro("agentsmesh uninstall");let n=HC(r)?null:G.spinner();n?.start("Removing\u2026");let o=await tV(r,t,process.cwd());n?.stop("Uninstall complete"),pt("uninstall",o,r,()=>rV(o)),G.outro("Done");},"uninstall"),refresh:s(async(e,t)=>{let r=ct(e);G.intro("agentsmesh refresh");let n=HC(r)?null:G.spinner();n?.start("Refreshing\u2026");let o=await pV(r,t,process.cwd());n?.stop("Refresh complete"),pt("refresh",o,r,()=>uV(o)),G.outro("Done");},"refresh"),installs:s(async(e,t)=>{let r=ct(e),n=await fV(r,t,process.cwd());pt("installs",n,r,()=>gV(n));},"installs"),plugin:s(async(e,t)=>{let r=ct(e),n=await SV(r,t,process.cwd());pt("plugin",n,r,()=>RV(n));},"plugin"),target:s(async(e,t)=>{let r=ct(e),n=await AV(r,t,process.cwd());pt("target",n,r,()=>TV(n));},"target"),convert:s(async(e,t)=>{let r=ct(e);G.intro("agentsmesh convert");let n=G.spinner();n.start("Converting\u2026");let o=await n_(r);n.stop("Convert complete"),pt("convert",o,r,()=>xV(o)),G.outro("Done");},"convert"),mcp:s(async(e,t)=>{await RJ(ct(e));},"mcp"),lessons:s(async(e,t)=>{let r=await QJ(e,t,process.cwd());pt("lessons",r,ct(e),()=>nY(r)),r.exitCode!==0&&process.exit(r.exitCode);},"lessons")};var Ace=new Set(["json","verbose","help"]);function zC(e,t,r){let n=e[t];if(n===void 0||typeof r=="boolean"){e[t]=r;return}Array.isArray(n)?n.push(r):typeof n=="string"?e[t]=[n,r]:e[t]=r;}s(zC,"setFlag");function Tce(e){let t={},r=[],n="help";for(let o=0;o<e.length;o++){let i=e[o];if(n==="help"&&i==="--version")return {command:"version",flags:{},args:[]};if(n==="help"&&i==="--help")return {command:"help",flags:{},args:[]};if(i.startsWith("--")){let a=i.slice(2);if(Ace.has(a)){zC(t,a,true);continue}let l=e[o+1];l===void 0||l.startsWith("--")?zC(t,a,true):(zC(t,a,l),o++);continue}n==="help"?n=i:r.push(i);}return {command:n,flags:t,args:r}}s(Tce,"parseArgs");var xce=YC(oY);async function Pce(e){let{command:t,flags:r,args:n}=e;if(t==="help"){A_();return}if(t==="version"){tO();return}if(r.help===true){lf(t,n);return}r.json===true&&QC(),await xce.route(t,r,n);}s(Pce,"main");function Dce(){let e=process.argv[1];if(!e)return false;let t=fileURLToPath(import.meta.url);try{let r=resolve(process.cwd(),e);return r===t||realpathSync(r)===realpathSync(t)}catch{return e.endsWith("cli.js")||e.includes("agentsmesh")}}s(Dce,"isMainModule");if(Dce()){let e=Tce(process.argv.slice(2));Pce(e).catch(t=>rO(t instanceof Error?t:new Error(String(t)),{verbose:e.flags.verbose===true,json:e.flags.json===true,command:e.command}));}export{Tce as parseArgs};
|