agentsmesh 0.23.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -0
- package/README.md +14 -13
- package/dist/canonical.js +1988 -1083
- package/dist/canonical.js.map +1 -1
- package/dist/cli.js +236 -189
- package/dist/engine.d.ts +1 -1
- package/dist/engine.js +1968 -1061
- package/dist/engine.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2043 -1123
- package/dist/index.js.map +1 -1
- package/dist/{init-YKxF2zpQ.d.ts → init-B0aI-g8W.d.ts} +1 -1
- package/dist/lessons.d.ts +2 -2
- package/dist/lessons.js +73 -60
- package/dist/lessons.js.map +1 -1
- package/dist/{target-descriptor-D6vLDI1w.d.ts → target-descriptor-ItDY3NR0.d.ts} +5 -0
- package/dist/targets.d.ts +2 -2
- package/dist/targets.js +1889 -984
- package/dist/targets.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,223 +1,223 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {resolve,join,sep,dirname,extname,basename,relative,win32,posix,normalize,isAbsolute}from'path';import {rm as rm$1,readFile,readdir,stat,mkdir,writeFile,rename,lstat,unlink,chmod,access,realpath,mkdtemp,cp as cp$1,readlink,symlink,copyFile}from'fs/promises';import {setTimeout as setTimeout$1}from'timers/promises';import {realpathSync,rmSync,existsSync,statSync,mkdtempSync,readdirSync,symlinkSync,mkdirSync,readFileSync,writeFileSync,renameSync,constants,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 {
|
|
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)=>
|
|
9
|
-
`);}
|
|
10
|
-
`);}};});var
|
|
11
|
-
`)}function dy(e){return jz.has(extname(e).toLowerCase())?493:void 0}var bl,$z,Gz,jz,Qu=d(()=>{bl="\uFEFF",$z=new Set([".md",".mdc",".mdx",".markdown",".txt",".json",".jsonc",".yaml",".yml",".toml",".ini",".sh",".bash",".zsh",".ps1",".js",".mjs",".cjs",".ts",".tsx",".html",".css"]),Gz=new Set([".gitignore",".cursorignore",".cursorindexingignore",".aiignore",".agentignore",".clineignore",".geminiignore",".codeiumignore",".continueignore",".copilotignore",".windsurfignore",".junieignore",".kiroignore",".rooignore",".antigravityignore"]);s(Xu,"shouldNormalizeLineEndings");s(qu,"normalizeLineEndings");jz=new Set([".sh",".bash",".zsh"]);s(dy,"executableModeFor");});function wC(e){if(e.length>Jz)return true;let t=new Map;for(let r of e){let n=(t.get(r)??0)+1;if(n>=Yz)return true;t.set(r,n);}return false}async function U(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 zt(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(wC(u))continue;l.push(...await U(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 zt(e,`Failed to read directory ${e}: ${l.message}. Check permissions.`,{cause:a,errnoCode:l.code})}}async function Ws(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(wC(l))continue;o.push(...await Ws(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 zt(e,`Failed to read directory ${e}: ${o.message}. Check permissions.`,{cause:n,errnoCode:o.code})}}async function fy(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 Jz,Yz,gy=d(()=>{No();Jz=32,Yz=3;s(wC,"shouldSkipRecursiveBranch");s(U,"readDirRecursive");s(Ws,"readDirRecursiveNoSymlinks");s(fy,"ensureCacheSymlink");});async function hy(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&&Qz.has(l))||i>=n-1)throw a;await setTimeout$1(o*2**i);}}var Qz,bC=d(()=>{Qz=new Set(["EPERM","EACCES","EBUSY","ENOTEMPTY","EEXIST"]);s(hy,"renameWithRetry");});async function k(e){try{let t=await readFile(e,"utf-8");return t.startsWith(bl)?t.slice(bl.length):t}catch(t){let r=t;if(r.code==="ENOENT")return null;throw new zt(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 zt(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 zt||l.code!=="ENOENT")throw l}let o=`${e}.tmp`,i=Xu(e)?qu(t):t,a=r?.mode??dy(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 zt(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 w(e){await mkdir(e,{recursive:true});}var A=d(()=>{No();Qu();gy();Qu();bC();s(k,"readFileSafe");s(L,"writeFileAtomic");s(j,"exists");s(w,"mkdirp");});function Vt(e){return yy.includes(e)}var yy,TC=d(()=>{yy=["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(Vt,"isBuiltinTargetId");});var je,Ry,Nn=d(()=>{TC();je=yy,Ry="codex-cli";});var PC,fr,Ol,a1,Pm,l1,c1,Tm,m1,p1,Yi,vo=d(()=>{Nn();PC=["rules","commands","agents","skills","mcp","hooks","ignore","permissions"],fr=z$1.enum(je),Ol=z$1.enum(PC),a1=z$1.enum(["rules","commands","agents","skills"]),Pm=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(),l1=z$1.object({name:z$1.string(),source:z$1.string(),version:z$1.string().optional(),target:fr.optional(),as:a1.optional(),features:z$1.array(Ol),path:z$1.string().optional(),pick:Pm.optional()}),c1=z$1.object({strategy:z$1.enum(["merge","lock","last-wins"]).default("merge"),lock_features:z$1.array(z$1.string()).default([])}),Tm=z$1.union([z$1.boolean(),z$1.object({project:z$1.boolean().optional(),global:z$1.boolean().optional()}).strict()]),m1=z$1.object({commands_to_skills:z$1.object({"codex-cli":Tm.optional()}).passthrough().optional(),agents_to_skills:z$1.object({"gemini-cli":Tm.optional(),cline:Tm.optional(),"codex-cli":Tm.optional(),windsurf:Tm.optional()}).passthrough().optional()}).strict().optional(),p1=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(),Yi=z$1.object({version:z$1.literal(1),targets:z$1.array(fr).default([...je]),features:z$1.array(Ol).default([...PC]),extends:z$1.array(l1).default([]),overrides:z$1.record(z$1.string(),z$1.record(z$1.string(),z$1.unknown())).default({}),collaboration:c1.default({strategy:"merge",lock_features:[]}),conversions:m1,plugins:z$1.array(p1).default([]),pluginTargets:z$1.array(z$1.string().regex(/^[a-z][a-z0-9-]*$/)).default([])});});async function f1(e){let t=resolve(e);for(;;){let r=join(t,Sy);if(await j(r))return r;let n=dirname(t);if(n===t)return null;t=n;}}async function g1(e){let t=await k(e);if(t===null)throw new Jr(e);let r=parse(t),n=Yi.safeParse(r);if(!n.success){let o=n.error.issues.map(i=>i.message);throw new El(e,o,{cause:n.error})}return n.data}function _y(e,t){let r={...e};for(let[n,o]of Object.entries(t)){if(o==null||h1.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]=_y(i,o):r[n]=o;}return r}function y1(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=_y(r.overrides??{},t.overrides)),typeof t.conversions=="object"&&t.conversions!==null&&!Array.isArray(t.conversions)&&(r.conversions=_y(r.conversions??{},t.conversions)),Array.isArray(t.extends)&&t.extends.length>0&&(r.extends=[...e.extends??[],...t.extends]),r}async function ed(e){let t=join(e,Sy),r=await g1(t),n=join(e,d1),o=await k(n);if(o!==null){let i=parse(o);if(typeof i=="object"&&i!==null&&!Array.isArray(i)){let a=y1(r,i),l=Yi.safeParse(a);if(l.success)r=l.data;else {let c=l.error.issues.map(m=>m.message).join("; ");y.warn(`Ignoring invalid agentsmesh.local.yaml at ${n}: ${c}. Using project config instead.`);}}}return {config:r,configDir:e}}async function td(e){let t=await f1(e);if(t===null)throw new Jr(join(e,Sy));return ed(dirname(t))}var Sy,d1,h1,rd=d(()=>{A();ne();No();vo();Sy="agentsmesh.yaml",d1="agentsmesh.local.yaml";s(f1,"findConfigPath");s(g1,"loadConfig");h1=new Set(["__proto__","constructor","prototype"]);s(_y,"deepMergeObjects");s(y1,"mergeLocalConfig");s(ed,"loadConfigFromExactDir");s(td,"loadConfigFromDir");});function Xi(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 ye(e,t="project"){if(t==="project"){let{config:n,configDir:o}=await td(e);return {config:n,context:{scope:t,rootBase:o,configDir:o,canonicalDir:join(o,".agentsmesh")}}}let r=Xi(e,t);try{let{config:n}=await ed(r.configDir);return {config:n,context:r}}catch(n){throw n instanceof Jr?new Jr(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 tt=d(()=>{rd();No();s(Xi,"resolveScopeContext");s(ye,"loadScopedConfig");});function Al(e){return e.replace(_1,(t,r,n,o)=>`${r}***@${o}`)}var _1,Iy=d(()=>{_1=/([a-zA-Z][a-zA-Z0-9+.-]*:\/\/)([^/@\s"'<>]+)@([^\s"'<>]+)/g;s(Al,"redactUrlSecrets");});function MC(e,t){if(e.startsWith("-"))throw new Error(`agentsmesh refuses ${t} starting with "-" (option-injection guard): ${e}`)}async function nd(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,vC),u=`${m}.tmp`,f=join(u,vC);if(!r.refresh&&await FC(p))return Ey(p);try{return await rm$1(u,{recursive:!0,force:!0}),await mkdir(u,{recursive:!0}),await w1(E1(e),f),e.ref&&await b1(f,e.ref),await rm$1(m,{recursive:!0,force:!0}),await hy(u,m),Ey(p)}catch(g){if(await rm$1(u,{recursive:true,force:true}),r.allowOfflineFallback!==false&&await FC(p)){let R=g instanceof Error?g.message:String(g);return console.warn(`[agentsmesh] Remote fetch failed for ${t}; using cached version. Error: ${Al(R)}`),Ey(p)}throw g instanceof Error?Object.assign(new Error(Al(g.message)),{cause:g.cause}):g}}async function Ey(e){return {resolvedPath:e,version:await O1(e)}}async function FC(e){return j(e)}function E1(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 w1(e,t){MC(e,"clone-url"),await wy(["clone",e,t]);}async function b1(e,t){MC(t,"ref"),await wy(["checkout",t],e);}async function O1(e){return wy(["rev-parse","HEAD"],e)}async function wy(e,t){let{stdout:r}=await C1("git",e,{cwd:t,env:{...process.env,GIT_TERMINAL_PROMPT:"0"}});return r.trim()}var C1,vC,by=d(()=>{A();Iy();C1=promisify(execFile),vC="repo";s(MC,"ensureNotFlag");s(nd,"fetchGitRemoteExtend");s(Ey,"readCachedRepo");s(FC,"hasCachedRepo");s(E1,"resolveCloneUrl");s(w1,"cloneRepo");s(b1,"checkoutRef");s(O1,"getHeadSha");s(wy,"runGit");});function P1(){let e=process.env.AGENTSMESH_MAX_TARBALL_MB;if(e===void 0||e==="")return Nm*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 ${Nm} MiB.`),Nm*1024*1024):t<GC||t>jC?(console.warn(`[agentsmesh] AGENTSMESH_MAX_TARBALL_MB=${t} is outside [${GC}, ${jC}]; using default ${Nm} MiB.`),Nm*1024*1024):t*1024*1024}async function N1(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 KC(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 WC(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 KC(e.org,e.repo,a);}catch(S){if(!i)throw S;return F1(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 S=await Oy(p);if(S)return {resolvedPath:join(p,S),version:c}}let u=`https://github.com/${e.org}/${e.repo}/tarball/${c}`,f={};a&&(f.Authorization=`Bearer ${a}`);let g;try{let S=await globalThis.fetch(u,{headers:f,redirect:"follow"});if(!S.ok)throw new Error(`HTTP ${S.status}: ${S.statusText}`);g=await N1(S,D1);}catch(S){if(r.allowOfflineFallback!==false&&await j(p)){let b=await Oy(p);if(b){let P=S instanceof Error?S.message:String(S);return console.warn(`[agentsmesh] Network failed for ${t}; using cached version. Error: ${Al(P)}`),{resolvedPath:join(p,b),version:c}}}throw S instanceof Error?Object.assign(new Error(Al(S.message)),{cause:S.cause}):S}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 BC.extract({file:h,cwd:p,strict:!0,filter:s((S,I)=>{if(v1(S))return !1;let b=I&&"type"in I?I.type:void 0;return b==="File"||b==="Directory"},"filter")});}finally{await rm$1(h,{force:true}).catch(()=>{});}let R=await Oy(p);if(!R)throw new Error(`Extend "${t}": archive has no top-level directory. Expected a single top-level directory inside the archive.`);return {resolvedPath:join(p,R),version:c}}async function Oy(e){let r=(await readdir(e,{withFileTypes:true})).filter(n=>n.isDirectory()&&!n.name.startsWith("."));return r.length===1?r[0].name:null}function UC(e,t,r){return r?`https://x-access-token:${encodeURIComponent(r)}@github.com/${e}/${t}.git`:`https://github.com/${e}/${t}.git`}function v1(e){let t=e.replace(/\\/g,"/");return t.startsWith("/")||t.split("/").includes("..")}async function F1(e,t,r,n,o,i){let a=i?[UC(e.org,e.repo,i)]:[UC(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 nd(m,t,r,n,o)}catch(p){l=p;}}throw l instanceof Error?l:new Error("Failed to clone GitHub default branch")}var Nm,GC,jC,D1,HC=d(()=>{A();Iy();by();Nm=500,GC=1,jC=4096;s(P1,"resolveMaxTarballBytes");D1=P1();s(N1,"readBoundedResponse");s(KC,"resolveLatestTag");s(WC,"fetchGithubRemoteExtend");s(Oy,"findExtractTopDir");s(UC,"buildGithubCloneUrl");s(v1,"isZipSlipPath");s(F1,"fetchGithubDefaultBranch");});function zC(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 VC(e){let t=zC(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 JC(e){let t=zC(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 YC(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();if(!n||r>=0&&!o)return null;let i;try{i=new URL(n);}catch{return null}let a=process.env.AGENTSMESH_ALLOW_INSECURE_GIT==="1"||process.env.AGENTSMESH_ALLOW_INSECURE_GIT==="true",l=process.env.AGENTSMESH_ALLOW_LOCAL_GIT==="1"||process.env.AGENTSMESH_ALLOW_LOCAL_GIT==="true",c=["https:","ssh:"];return a&&c.push("http:"),l&&c.push("file:"),c.includes(i.protocol)?{url:n,ref:o}:null}function qi(e){let t=VC(e);if(t)return {kind:"github",...t};let r=JC(e);if(r)return {kind:"gitlab",...r};let n=YC(e);return n?{kind:"git",...n}:null}function Ay(e){return qi(e)!==null}var vm=d(()=>{s(zC,"splitSourceRef");s(VC,"parseGithubSource");s(JC,"parseGitlabSource");s(YC,"parseGitSource");s(qi,"parseRemoteSource");s(Ay,"isSupportedRemoteSource");});function j1(e){let t=qi(e);return t?t.kind==="github"?xl("github",`${t.org}/${t.repo}`,t.tag):t.kind==="gitlab"?xl("gitlab",`${t.namespace}/${t.project}`,t.ref??"HEAD"):xl("git",t.url,t.ref??"HEAD"):null}async function QC(e,t){let r=j1(e);if(!r)return;let n=t??Jt(),o=join(n,r);await rm$1(o,{recursive:true,force:true});}async function ZC(e,t){let r=e??Jt(),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 xy=d(()=>{Fm();vm();s(j1,"cacheKeyFromSource");s(QC,"cleanInstallCache");s(ZC,"sweepStaleCache");});function xl(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>rE){let i=createHash("sha256").update(o).digest("hex").slice(0,16);o=`${o.slice(0,rE-18)}--${i}`;}return o}function Jt(){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 Tl(e,t,r={}){let n=qi(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??Jt();return ZC(o).catch(()=>{}),n.kind==="github"?WC(n,t,r,o,xl,!e.includes("@")):nd(n,t,r,o,xl)}var rE,Fm=d(()=>{by();HC();vm();xy();rE=80;s(xl,"buildCacheKey");s(Jt,"getCacheDir");s(Tl,"fetchRemoteExtend");});function H1(e){return e.startsWith("http://")||e.startsWith("https://")}async function Pl(e,t,r={}){if(e.extends.length===0)return [];if(r.refreshCache===true&&e.extends.some(o=>Ay(o.source))){let o=Jt();await rm$1(o,{recursive:true,force:true}),await mkdir(o,{recursive:true});}let n=[];for(let o of e.extends){if(H1(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(Ay(o.source)){let a=await Tl(o.source,o.name,{cacheDir:Jt(),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});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});}return n}var od=d(()=>{A();Fm();vm();s(H1,"isOtherRemoteSource");s(Pl,"resolveExtendPaths");});function x(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 J1(e){if(e.indexOf("---")!==0)return e.trim();let t=e.indexOf("---",3);return t===-1?e.trim():e.slice(t+3).trim()}function Yr(e,t){try{return {ok:!0,value:x(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:J1(e)}}}function Fo(e,t,r){let n=Yr(e,t);if(n.ok)return n.value;if(r)return r(n.error,t),null;throw n.error}function D(e,t){return Object.keys(e).length===0?t:`---
|
|
2
|
+
import {resolve,join,sep,dirname,extname,basename,relative,win32,posix,normalize,isAbsolute}from'path';import {rm as rm$1,readFile,readdir,stat,mkdir,writeFile,rename,lstat,unlink,chmod,access,realpath,mkdtemp,cp as cp$1,readlink,symlink,copyFile}from'fs/promises';import {setTimeout as setTimeout$1}from'timers/promises';import {realpathSync,rmSync,existsSync,statSync,mkdtempSync,readdirSync,symlinkSync,mkdirSync,readFileSync,writeFileSync,renameSync,constants,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 PE 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 g6 from'picomatch';import {createTwoFilesPatch}from'diff';import oee from'chokidar';import*as ZW 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 XC=Object.defineProperty;var s=(e,t)=>XC(e,"name",{value:t,configurable:true});var d=(e,t)=>()=>(e&&(t=e(e=0)),t);var Fy=(e,t)=>{for(var r in t)XC(e,r,{get:t[r],enumerable:true});};function hV(){let e=process.env.NO_COLOR;return e!==void 0&&e!==""}function yV(){let e=process.env.FORCE_COLOR;if(e!==void 0)return e!=="0"&&e!=="false"}function Wl(e=process.stdout){let t=yV();return t!==void 0?t:hV()?false:e.isTTY===true}var hd=d(()=>{s(hV,"noColorRequested");s(yV,"forceColorRequested");s(Wl,"colorEnabled");});function ZC(){ya=true;}function eE(){qC=true;}function yd(){return qC?process.stderr:process.stdout}function Hl(e){yd().write(e);}function Vm(e,t,r){return Wl(r)?`${e}${t}${zl.reset}`:t}function _V(e,t){let r=[...e].length;return e+" ".repeat(Math.max(0,t-r))}var zl,ya,qC,y,se=d(()=>{hd();zl={green:"\x1B[32m",red:"\x1B[31m",yellow:"\x1B[33m",cyan:"\x1B[36m",reset:"\x1B[0m"},ya=false,qC=false;s(ZC,"muteLogger");s(eE,"redirectLoggerToStderr");s(yd,"outStream");s(Hl,"out");s(Vm,"c");s(_V,"pad");y={info(e){ya||Hl(Vm(zl.cyan,e,yd())+`
|
|
3
|
+
`);},warn(e){ya||process.stderr.write(Vm(zl.yellow,"\u26A0 ",process.stderr)+e+`
|
|
4
|
+
`);},error(e){ya||process.stderr.write(Vm(zl.red,"\u2717 ",process.stderr)+e+`
|
|
5
|
+
`);},success(e){ya||Hl(Vm(zl.green,"\u2713 ",yd())+e+`
|
|
6
|
+
`);},debug(e){ya||process.env.AGENTSMESH_DEBUG==="1"&&Hl(Vm(zl.cyan,"[debug] ",yd())+e+`
|
|
7
|
+
`);},table(e){if(ya||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("+")+"+";Hl(n+`
|
|
8
|
+
`);for(let o=0;o<e.length;o++){let a="| "+e[o].map((l,c)=>_V(l,r[c])).join(" | ")+" |";Hl(a+`
|
|
9
|
+
`);}Hl(n+`
|
|
10
|
+
`);}};});var Xo,an,Yl,zn,Xl,Yt,Qo=d(()=>{Xo=class extends Error{static{s(this,"AgentsMeshError");}code;constructor(t,r,n){super(r,n),this.name="AgentsMeshError",this.code=t;}},an=class extends Xo{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;}},Yl=class extends Xo{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 Xo{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;}},Xl=class extends Xo{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;}},Yt=class extends Xo{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 Id(e){let t=extname(e).toLowerCase();if(t.length>0)return OV.has(t);let r=basename(e).toLowerCase();return wV.has(r)}function Ld(e){return e.replace(/\r\n?/g,`
|
|
11
|
+
`)}function $y(e){return bV.has(extname(e).toLowerCase())?493:void 0}var Ql,OV,wV,bV,Cd=d(()=>{Ql="\uFEFF",OV=new Set([".md",".mdc",".mdx",".markdown",".txt",".json",".jsonc",".yaml",".yml",".toml",".ini",".sh",".bash",".zsh",".ps1",".js",".mjs",".cjs",".ts",".tsx",".html",".css"]),wV=new Set([".gitignore",".cursorignore",".cursorindexingignore",".aiignore",".agentignore",".clineignore",".geminiignore",".codeiumignore",".continueignore",".copilotignore",".windsurfignore",".junieignore",".kiroignore",".rooignore",".antigravityignore"]);s(Id,"shouldNormalizeLineEndings");s(Ld,"normalizeLineEndings");bV=new Set([".sh",".bash",".zsh"]);s($y,"executableModeFor");});function mE(e){if(e.length>FV)return true;let t=new Map;for(let r of e){let n=(t.get(r)??0)+1;if(n>=MV)return true;t.set(r,n);}return false}async function gi(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 Yt(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(mE(u))continue;l.push(...await gi(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 Yt(e,`Failed to read directory ${e}: ${l.message}. Check permissions.`,{cause:a,errnoCode:l.code})}}async function U(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(mE(l))continue;o.push(...await U(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 Yt(e,`Failed to read directory ${e}: ${o.message}. Check permissions.`,{cause:n,errnoCode:o.code})}}async function jy(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 FV,MV,Uy=d(()=>{Qo();FV=32,MV=3;s(mE,"shouldSkipRecursiveBranch");s(gi,"readDirRecursive");s(U,"readDirRecursiveNoSymlinks");s(jy,"ensureCacheSymlink");});async function By(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&&jV.has(l))||i>=n-1)throw a;await setTimeout$1(o*2**i);}}var jV,pE=d(()=>{jV=new Set(["EPERM","EACCES","EBUSY","ENOTEMPTY","EEXIST"]);s(By,"renameWithRetry");});async function k(e){try{let t=await readFile(e,"utf-8");return t.startsWith(Ql)?t.slice(Ql.length):t}catch(t){let r=t;if(r.code==="ENOENT")return null;throw new Yt(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 Yt(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 Yt||l.code!=="ENOENT")throw l}let o=`${e}.tmp`,i=Id(e)?Ld(t):t,a=r?.mode??$y(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 Yt(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(()=>{Qo();Cd();Uy();Cd();pE();s(k,"readFileSafe");s(L,"writeFileAtomic");s(j,"exists");s(O,"mkdirp");});function Xt(e){return Ky.includes(e)}var Ky,gE=d(()=>{Ky=["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(Xt,"isBuiltinTargetId");});var Ue,Wy,Vn=d(()=>{gE();Ue=Ky,Wy="codex-cli";});var hE,Ir,ql,YV,Ym,XV,QV,Jm,qV,ZV,Sa,qo=d(()=>{Vn();hE=["rules","commands","agents","skills","mcp","hooks","ignore","permissions"],Ir=z$1.enum(Ue),ql=z$1.enum(hE),YV=z$1.enum(["rules","commands","agents","skills"]),Ym=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(),XV=z$1.object({name:z$1.string(),source:z$1.string(),version:z$1.string().optional(),target:Ir.optional(),as:YV.optional(),features:z$1.array(ql),path:z$1.string().optional(),pick:Ym.optional()}),QV=z$1.object({strategy:z$1.enum(["merge","lock","last-wins"]).default("merge"),lock_features:z$1.array(z$1.string()).default([])}),Jm=z$1.union([z$1.boolean(),z$1.object({project:z$1.boolean().optional(),global:z$1.boolean().optional()}).strict()]),qV=z$1.object({commands_to_skills:z$1.object({"codex-cli":Jm.optional()}).passthrough().optional(),agents_to_skills:z$1.object({"gemini-cli":Jm.optional(),cline:Jm.optional(),"codex-cli":Jm.optional(),windsurf:Jm.optional()}).passthrough().optional()}).strict().optional(),ZV=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(),Sa=z$1.object({version:z$1.literal(1),targets:z$1.array(Ir).default([...Ue]),features:z$1.array(ql).default([...hE]),extends:z$1.array(XV).default([]),overrides:z$1.record(z$1.string(),z$1.record(z$1.string(),z$1.unknown())).default({}),collaboration:QV.default({strategy:"merge",lock_features:[]}),conversions:qV,plugins:z$1.array(ZV).default([]),pluginTargets:z$1.array(z$1.string().regex(/^[a-z][a-z0-9-]*$/)).default([])});});async function rJ(e){let t=resolve(e);for(;;){let r=join(t,zy);if(await j(r))return r;let n=dirname(t);if(n===t)return null;t=n;}}async function nJ(e){let t=await k(e);if(t===null)throw new an(e);let r=parse(t),n=Sa.safeParse(r);if(!n.success){let o=n.error.issues.map(i=>i.message);throw new Yl(e,o,{cause:n.error})}return n.data}function Hy(e,t){let r={...e};for(let[n,o]of Object.entries(t)){if(o==null||oJ.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]=Hy(i,o):r[n]=o;}return r}function sJ(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=Hy(r.overrides??{},t.overrides)),typeof t.conversions=="object"&&t.conversions!==null&&!Array.isArray(t.conversions)&&(r.conversions=Hy(r.conversions??{},t.conversions)),Array.isArray(t.extends)&&t.extends.length>0&&(r.extends=[...e.extends??[],...t.extends]),r}async function Od(e){let t=join(e,zy),r=await nJ(t),n=join(e,tJ),o=await k(n);if(o!==null){let i=parse(o);if(typeof i=="object"&&i!==null&&!Array.isArray(i)){let a=sJ(r,i),l=Sa.safeParse(a);if(l.success)r=l.data;else {let c=l.error.issues.map(m=>m.message).join("; ");y.warn(`Ignoring invalid agentsmesh.local.yaml at ${n}: ${c}. Using project config instead.`);}}}return {config:r,configDir:e}}async function wd(e){let t=await rJ(e);if(t===null)throw new an(join(e,zy));return Od(dirname(t))}var zy,tJ,oJ,bd=d(()=>{b();se();Qo();qo();zy="agentsmesh.yaml",tJ="agentsmesh.local.yaml";s(rJ,"findConfigPath");s(nJ,"loadConfig");oJ=new Set(["__proto__","constructor","prototype"]);s(Hy,"deepMergeObjects");s(sJ,"mergeLocalConfig");s(Od,"loadConfigFromExactDir");s(wd,"loadConfigFromDir");});function Ra(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 ye(e,t="project"){if(t==="project"){let{config:n,configDir:o}=await wd(e);return {config:n,context:{scope:t,rootBase:o,configDir:o,canonicalDir:join(o,".agentsmesh")}}}let r=Ra(e,t);try{let{config:n}=await Od(r.configDir);return {config:n,context:r}}catch(n){throw n instanceof an?new an(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 tt=d(()=>{bd();Qo();s(Ra,"resolveScopeContext");s(ye,"loadScopedConfig");});function hi(e){return e.replace(aJ,(t,r,n,o)=>`${r}***@${o}`)}var aJ,Ad=d(()=>{aJ=/([a-zA-Z][a-zA-Z0-9+.-]*:\/\/)([^/@\s"'<>]+)@([^\s"'<>]+)/g;s(hi,"redactUrlSecrets");});function SE(){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 RE(e){let t;try{t=new URL(e);}catch{return false}let{http:r,file:n}=SE(),o=["https:","ssh:"];return r&&o.push("http:"),n&&o.push("file:"),o.includes(t.protocol)}function xd(){let{http:e,file:t}=SE(),r=["https","ssh"];return e&&r.push("http"),t&&r.push("file"),r.join(":")}function Xm(e){if(!RE(e))throw new Error(`agentsmesh refuses a git remote with a disallowed transport: "${hi(e)}". Allowed: https, ssh. Set AGENTSMESH_ALLOW_INSECURE_GIT=1 to permit http, AGENTSMESH_ALLOW_LOCAL_GIT=1 to permit file.`)}function kE(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 IE(e){let t=kE(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 LE(e){let t=kE(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 CE(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||!RE(n)?null:{url:n,ref:o}}function ka(e){let t=IE(e);if(t)return {kind:"github",...t};let r=LE(e);if(r)return {kind:"gitlab",...r};let n=CE(e);return n?{kind:"git",...n}:null}function Jy(e){return ka(e)!==null}var Ia=d(()=>{Ad();s(SE,"gitProtocolOptIns");s(RE,"isAllowedGitProtocol");s(xd,"gitAllowProtocolEnv");s(Xm,"assertAllowedGitUrl");s(kE,"splitSourceRef");s(IE,"parseGithubSource");s(LE,"parseGitlabSource");s(CE,"parseGitSource");s(ka,"parseRemoteSource");s(Jy,"isSupportedRemoteSource");});function wE(e,t){if(e.startsWith("-"))throw new Error(`agentsmesh refuses ${t} starting with "-" (option-injection guard): ${e}`)}async function Td(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,EE),u=`${m}.tmp`,f=join(u,EE);if(!r.refresh&&await OE(p))return Qy(p);try{return await rm$1(u,{recursive:!0,force:!0}),await mkdir(u,{recursive:!0}),await gJ(fJ(e),f),e.ref&&await hJ(f,e.ref),await rm$1(m,{recursive:!0,force:!0}),await By(u,m),Qy(p)}catch(g){if(await rm$1(u,{recursive:true,force:true}),r.allowOfflineFallback!==false&&await OE(p)){let _=g instanceof Error?g.message:String(g);return console.warn(`[agentsmesh] Remote fetch failed for ${t}; using cached version. Error: ${hi(_)}`),Qy(p)}throw g instanceof Error?Object.assign(new Error(hi(g.message)),{cause:g.cause}):g}}async function Qy(e){return {resolvedPath:e,version:await yJ(e)}}async function OE(e){return j(e)}function fJ(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 gJ(e,t){wE(e,"clone-url"),Xm(e),await qy(["clone","-c","core.symlinks=false",e,t]);}async function hJ(e,t){wE(t,"ref"),await qy(["checkout",t],e);}async function yJ(e){return qy(["rev-parse","HEAD"],e)}async function qy(e,t){let{stdout:r}=await dJ("git",e,{cwd:t,env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_ALLOW_PROTOCOL:xd()}});return r.trim()}var dJ,EE,Zy=d(()=>{b();Ad();Ia();dJ=promisify(execFile),EE="repo";s(wE,"ensureNotFlag");s(Td,"fetchGitRemoteExtend");s(Qy,"readCachedRepo");s(OE,"hasCachedRepo");s(fJ,"resolveCloneUrl");s(gJ,"cloneRepo");s(hJ,"checkoutRef");s(yJ,"getHeadSha");s(qy,"runGit");});function kJ(){let e=process.env.AGENTSMESH_MAX_TARBALL_MB;if(e===void 0||e==="")return qm*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 ${qm} MiB.`),qm*1024*1024):t<AE||t>xE?(console.warn(`[agentsmesh] AGENTSMESH_MAX_TARBALL_MB=${t} is outside [${AE}, ${xE}]; using default ${qm} MiB.`),qm*1024*1024):t*1024*1024}async function LJ(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 DE(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 NE(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 DE(e.org,e.repo,a);}catch(R){if(!i)throw R;return EJ(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 e_(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 LJ(R,IJ);}catch(R){if(r.allowOfflineFallback!==false&&await j(p)){let w=await e_(p);if(w){let D=R instanceof Error?R.message:String(R);return console.warn(`[agentsmesh] Network failed for ${t}; using cached version. Error: ${hi(D)}`),{resolvedPath:join(p,w),version:c}}}throw R instanceof Error?Object.assign(new Error(hi(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 PE.extract({file:h,cwd:p,strict:!0,filter:s((R,I)=>{if(CJ(R))return !1;let w=I&&"type"in I?I.type:void 0;return w==="File"||w==="Directory"},"filter")});}finally{await rm$1(h,{force:true}).catch(()=>{});}let _=await e_(p);if(!_)throw new Error(`Extend "${t}": archive has no top-level directory. Expected a single top-level directory inside the archive.`);return {resolvedPath:join(p,_),version:c}}async function e_(e){let r=(await readdir(e,{withFileTypes:true})).filter(n=>n.isDirectory()&&!n.name.startsWith("."));return r.length===1?r[0].name:null}function TE(e,t,r){return r?`https://x-access-token:${encodeURIComponent(r)}@github.com/${e}/${t}.git`:`https://github.com/${e}/${t}.git`}function CJ(e){let t=e.replace(/\\/g,"/");return t.startsWith("/")||t.split("/").includes("..")}async function EJ(e,t,r,n,o,i){let a=i?[TE(e.org,e.repo,i)]:[TE(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 Td(m,t,r,n,o)}catch(p){l=p;}}throw l instanceof Error?l:new Error("Failed to clone GitHub default branch")}var qm,AE,xE,IJ,vE=d(()=>{b();Ad();Zy();qm=500,AE=1,xE=4096;s(kJ,"resolveMaxTarballBytes");IJ=kJ();s(LJ,"readBoundedResponse");s(DE,"resolveLatestTag");s(NE,"fetchGithubRemoteExtend");s(e_,"findExtractTopDir");s(TE,"buildGithubCloneUrl");s(CJ,"isZipSlipPath");s(EJ,"fetchGithubDefaultBranch");});function bJ(e){let t=ka(e);return t?t.kind==="github"?Zl("github",`${t.org}/${t.repo}`,t.tag):t.kind==="gitlab"?Zl("gitlab",`${t.namespace}/${t.project}`,t.ref??"HEAD"):Zl("git",t.url,t.ref??"HEAD"):null}async function GE(e,t){let r=bJ(e);if(!r)return;let n=t??Qt(),o=join(n,r);await rm$1(o,{recursive:true,force:true});}async function $E(e,t){let r=e??Qt(),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 t_=d(()=>{Zm();Ia();s(bJ,"cacheKeyFromSource");s(GE,"cleanInstallCache");s($E,"sweepStaleCache");});function Zl(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>BE){let i=createHash("sha256").update(o).digest("hex").slice(0,16);o=`${o.slice(0,BE-18)}--${i}`;}return o}function Qt(){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 ec(e,t,r={}){let n=ka(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??Qt();return $E(o).catch(()=>{}),n.kind==="github"?NE(n,t,r,o,Zl,!e.includes("@")):Td(n,t,r,o,Zl)}var BE,Zm=d(()=>{Zy();vE();Ia();t_();BE=80;s(Zl,"buildCacheKey");s(Qt,"getCacheDir");s(ec,"fetchRemoteExtend");});function DJ(e){return e.startsWith("http://")||e.startsWith("https://")}async function tc(e,t,r={}){if(e.extends.length===0)return [];if(r.refreshCache===true&&e.extends.some(o=>Jy(o.source))){let o=Qt();await rm$1(o,{recursive:true,force:true}),await mkdir(o,{recursive:true});}let n=[];for(let o of e.extends){if(DJ(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(Jy(o.source)){let a=await ec(o.source,o.name,{cacheDir:Qt(),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});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});}return n}var Pd=d(()=>{b();Zm();Ia();s(DJ,"isOtherRemoteSource");s(tc,"resolveExtendPaths");});function x(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 FJ(e){if(e.indexOf("---")!==0)return e.trim();let t=e.indexOf("---",3);return t===-1?e.trim():e.slice(t+3).trim()}function ln(e,t){try{return {ok:!0,value:x(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:FJ(e)}}}function Zo(e,t,r){let n=ln(e,t);if(n.ok)return n.value;if(r)return r(n.error,t),null;throw n.error}function T(e,t){return Object.keys(e).length===0?t:`---
|
|
12
12
|
${stringify(e,{lineWidth:0}).trimEnd()}
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
-
${t}`}var B=d(()=>{s(x,"parseFrontmatter");s(
|
|
16
|
-
`;)r++;continue}t+=o,r++;}return t}async function Xr(e){let t=await k(e);if(!t)return null;let r;try{r=JSON.parse(fV(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=dV(a);l&&(o[i]=l);}return {mcpServers:o}}var Um=d(()=>{A();s(hE,"parseStringMap");s(dV,"parseServer");s(fV,"stripJsonComments");s(Xr,"parseMcp");});function Dy(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}async function ud(e){let t=await k(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=Dy(n.allow),i=Dy(n.deny),a=Dy(n.ask);return {allow:o,deny:i,ask:a}}var Ny=d(()=>{A();s(Dy,"ensureStringArray");s(ud,"parsePermissions");});function yE(e){return typeof e=="string"?e.trim():""}function Ze(e){return yE(e.command)}function At(e){return yE(e.prompt)}function vy(e){let t=Ze(e),r=At(e);return e.type==="prompt"?r||t:t||r}function Go(e){return Ze(e).length>0}function Fn(e){return vy(e).length>0}var qr=d(()=>{s(yE,"trimString");s(Ze,"getHookCommand");s(At,"getHookPrompt");s(vy,"getHookText");s(Go,"hasHookCommand");s(Fn,"hasHookText");});function RV(e){if(!e||typeof e!="object")return null;let t=e,r=t.matcher;if(typeof r!="string")return null;let n=vy(t);if(!n)return null;let o=typeof t.type=="string"&&yV.includes(t.type)?t.type:void 0,i=typeof t.timeout=="number"&&Number.isFinite(t.timeout)?t.timeout:void 0,a=At(t)||void 0;return {matcher:r,command:n,...i!==void 0&&{timeout:i},...o&&{type:o},...a&&{prompt:a}}}async function dd(e){let t=await k(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=RV(c);m&&l.push(m);}l.length>0&&(n[i]=l);}return n}var yV,Fy=d(()=>{A();qr();yV=["command","prompt"];s(RV,"toHookEntry");s(dd,"parseHooks");});async function fd(e){let t=await k(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 My=d(()=>{A();s(fd,"parseIgnore");});async function Gt(e,t={}){let r=join(e,".agentsmesh"),n=await j(r)?r:e,[o,i,a,l,c,m,p,u]=await Promise.all([Hs(join(n,"rules"),t),zs(join(n,"commands"),t),Vs(join(n,"agents"),t),Js(join(n,"skills"),t),Xr(join(n,"mcp.json")),ud(join(n,"permissions.yaml")),dd(join(n,"hooks.yaml")),fd(join(n,"ignore"))]);return {rules:o,commands:i,agents:a,skills:l,mcp:c,permissions:m,hooks:p,ignore:u}}var Zi=d(()=>{$m();Gm();jm();Nl();Um();Ny();Fy();My();A();s(Gt,"loadCanonicalFiles");});function RE(e){return basename(e.source,".md")}function vl(e,t){let r=new Map(e.rules.map(p=>[RE(p),p]));for(let p of t.rules)r.set(RE(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=SV(e.mcp,t.mcp),l=kV(e.permissions,t.permissions),c=IV(e.hooks,t.hooks),m=LV(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 SV(e,t){if(!e&&!t)return null;let r=e?.mcpServers??{},n=t?.mcpServers??{};return {mcpServers:{...r,...n}}}function kV(e,t){if(!e&&!t)return null;let r=$y(e?.allow??[],t?.allow??[]),n=$y(e?.deny??[],t?.deny??[]),o=$y(e?.ask??[],t?.ask??[]);return {allow:r,deny:n,ask:o}}function $y(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 IV(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 LV(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 Gy=d(()=>{s(RE,"ruleSlug");s(vl,"mergeCanonicalFiles");s(SV,"mergeMcp");s(kV,"mergePermissions");s($y,"mergeUniqueStrings");s(IV,"mergeHooks");s(LV,"mergeIgnore");});function xV(e){return typeof e=="string"?e:e.level}function _E(e){return AV.includes(e)}function SE(e,t,r,n){for(let o of OV){let i=xV(t[o.feature]);if(i==="none")continue;let a=typeof e.generators[o.generator]=="function",l=_E(o.feature)&&typeof e.emitScopedSettings=="function";a||l||r.addIssue({code:"custom",path:[...n,o.feature],message:`Capability "${o.feature}" is "${i}" but generators.${o.generator}`+(_E(o.feature)?" or emitScopedSettings":"")+" is missing."});}}function gd(e){return FV.parse(e)}var Uo,kE,CV,EV,IE,wV,bV,OV,AV,TV,PV,DV,NV,vV,FV,jy=d(()=>{Uo=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()})]),kE=z$1.object({rules:Uo,additionalRules:Uo,commands:Uo,agents:Uo,skills:Uo,mcp:Uo,hooks:Uo,ignore:Uo,permissions:Uo}),CV=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(),EV=z$1.object({rulePath:z$1.function(),commandPath:z$1.function(),agentPath:z$1.function()}),IE=z$1.object({paths:EV}).passthrough(),wV=z$1.object({capabilities:kE,detectionPaths:z$1.array(z$1.string()),layout:IE,scopeExtras:z$1.function().optional()}).passthrough(),bV=["global","globalCapabilities","globalDetectionPaths","generateScopeExtras"],OV=[{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"}],AV=["mcp","hooks","ignore","permissions"];s(xV,"capabilityLevel");s(_E,"canUseScopedSettings");s(SE,"validateCapabilityImplementations");TV=z$1.object({commandsToSkills:z$1.boolean().optional(),agentsToSkills:z$1.boolean().optional()}).strict(),PV=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(),DV=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")})]),NV=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:DV})).optional(),inferPick:z$1.function().optional(),dialectHints:z$1.array(z$1.object({frontmatterKey:z$1.string().min(1)})).optional()}).strict(),vV=z$1.object({id:z$1.string().regex(/^[a-z][a-z0-9-]*$/,"Target id must be lowercase with hyphens"),metadata:PV,generators:CV,capabilities:kE,emptyImportMessage:z$1.string(),lintRules:z$1.union([z$1.function(),z$1.null()]),project:IE,globalSupport:wV.optional(),buildImportPaths:z$1.function(),detectionPaths:z$1.array(z$1.string()),nativeInstall:NV.optional(),excludeFromStarterInit:z$1.boolean().optional(),conversionDefaults:TV.optional(),emitScopedSettings:z$1.function().optional(),mergeGeneratedOutputContent:z$1.function().optional(),postProcessHookOutputs:z$1.function().optional(),preservesManualActivation:z$1.boolean().optional()}).passthrough(),FV=vV.superRefine((e,t)=>{for(let r of bV)r in e&&t.addIssue({code:"custom",path:[r],message:`Use globalSupport instead of legacy field "${r}".`});SE(e,e.capabilities,t,["capabilities"]),e.globalSupport!==void 0&&SE(e,e.globalSupport.capabilities,t,["globalSupport","capabilities"]);});s(gd,"validateDescriptor");});function LE(){if(Uy)return Uy;let e=Pe.filter(r=>r!==void 0&&typeof r.id=="string"),t=new Map(e.map(r=>[r.id,r]));return e.length===Pe.length&&(Uy=t),t}function yd(e){let t=gd(e);hd.set(t.id,t);}function re(e){return hd.get(e)??LE().get(e)}function Rd(){return [...hd.values()]}function _d(){return [...new Set([...LE().keys(),...hd.keys()])]}var hd,Uy,rt=d(()=>{xe();jy();hd=new Map;s(LE,"builtinDescriptors");s(yd,"registerTargetDescriptor");s(re,"getDescriptor");s(Rd,"getAllDescriptors");s(_d,"getAllRegisteredDescriptorIds");});function CE(e,t){return re(e)?.conversionDefaults?.[t]}function EE(e,t){if(e!==void 0)return typeof e=="boolean"?e:e[t]}function Fl(e,t,r,n="project"){let o=e.conversions?.commands_to_skills?.[t],i=EE(o,n);if(i!==void 0)return i;let a=CE(t,"commandsToSkills");return a!==void 0?a:r??false}function gr(e,t,r,n="project"){let o=e.conversions?.agents_to_skills?.[t],i=EE(o,n);if(i!==void 0)return i;let a=CE(t,"agentsToSkills");return a!==void 0?a:r??false}var Ml=d(()=>{rt();s(CE,"builtinDefault");s(EE,"resolveConversionValue");s(Fl,"shouldConvertCommandsToSkills");s(gr,"shouldConvertAgentsToSkills");});function Zr(e,t){return t!==void 0?{level:e,flavor:t}:{level:e}}function Qr(e){return typeof e=="string"?{level:e}:e}function By(e){return {rules:Qr(e.rules),additionalRules:Qr(e.additionalRules),commands:Qr(e.commands),agents:Qr(e.agents),skills:Qr(e.skills),mcp:Qr(e.mcp),hooks:Qr(e.hooks),ignore:Qr(e.ignore),permissions:Qr(e.permissions)}}var ea=d(()=>{s(Zr,"cap");s(Qr,"normalizeCapabilityValue");s(By,"normalizeTargetCapabilities");});function wE(e){for(let t of Pe)if(t.sharedArtifacts){for(let[r,n]of Object.entries(t.sharedArtifacts))if(n==="owner"&&e.startsWith(r))return t.id}return null}function MV(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 bE(e){let t=MV(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 B=d(()=>{s(x,"parseFrontmatter");s(FJ,"extractBody");s(ln,"tryParseFrontmatter");s(Zo,"parseOrSkipFrontmatter");s(T,"serializeFrontmatter");});function $J(e){let t=e.replace(/\.[^.]*$/,"").toUpperCase();return MJ.has(t)}function KE(e){let t=[],r=e.split(/[\\/]/);for(let n of r)if(!(n===""||n==="."||n==="..")){if(GJ.test(n)){t.push({segment:n,reason:"illegal-character"});continue}if(/[. ]$/.test(n)){t.push({segment:n,reason:"trailing-dot-or-space"});continue}$J(n)&&t.push({segment:n,reason:"reserved-name"});}return t}var MJ,GJ,WE=d(()=>{MJ=new Set(["CON","PRN","AUX","NUL","COM1","COM2","COM3","COM4","COM5","COM6","COM7","COM8","COM9","LPT1","LPT2","LPT3","LPT4","LPT5","LPT6","LPT7","LPT8","LPT9"]),GJ=new RegExp('[<>:"|?*\\u0000-\\u001F]');s($J,"segmentReservedName");s(KE,"findWindowsPathIssues");});function es(e,t){let r=KE(t);if(r.length===0)return;let n=r.map(o=>`${o.segment} (${o.reason})`).join(", ");throw new Dd(e,t,`canonical ${e} name "${t}" is not portable to Windows: ${n}. Rename the file.`)}function rc(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 Dd(e,m,`canonical ${e} files collide on slug ${f}: ${u.path} vs ${o}. Rename one.`)}n.set(p,{path:o,slug:m});}}var Dd,ep=d(()=>{WE();Dd=class extends Error{static{s(this,"CanonicalNameError");}feature;name;constructor(t,r,n){super(n),this.feature=t,this.name=r;}};s(es,"assertCanonicalName");s(rc,"assertNoBasenameCollisions");});function nc(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();BJ.has(u)&&(a?.has(u)||(l.add(u),c++));}if(c===0)return;let m=[...l].sort().join(", ");y.warn(`Skipped ${c} ${e} file(s) in ${t} (format${l.size===1?"":"s"}: ${m}). agentsmesh ${e} are parsed from .md files only.`);}var BJ,Nd=d(()=>{se();BJ=new Set([".toml",".yaml",".yml",".json"]);s(nc,"warnIfUnrecognizedResourceFormats");});function zE(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):typeof e=="string"?e?[e]:[]:[]}async function yi(e,t={}){let r=await U(e),n=r.filter(i=>{if(!i.endsWith(".md"))return false;let a=basename(i,".md");return a==="_root"||!a.startsWith("_")});nc("rules",e,r,n,{handledByOtherReader:t.handledByOtherReader}),rc("rule",n,".md");let o=[];for(let i of n){let a=await k(i);if(!a)continue;let l=Zo(a,i,t.onParseError);if(!l)continue;let{frontmatter:c,body:m}=l,p=basename(i,".md");es("rule",p);let u=p==="_root",f=c.root===true,g=c.trigger,h=typeof g=="string"&&KJ.includes(g)?g:void 0,_=c.codex_emit,S=_==="execution"?"execution":_==="advisory"?"advisory":void 0,I=c.codex_instruction==="override"?"override":void 0;o.push({source:i,root:u||f,targets:zE(c.targets),description:typeof c.description=="string"?c.description:"",globs:zE(c.globs),body:m,...h!==void 0&&{trigger:h},...S!==void 0&&{codexEmit:S},...I!==void 0&&{codexInstructionVariant:I}});}return o}var KJ,tp=d(()=>{b();B();ep();Nd();KJ=["always_on","model_decision","glob","manual"];s(zE,"toStrArray");s(yi,"parseRules");});function JE(e){return e===true||e==="true"||e===1||e==="1"}function YE(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 _i(e,t={}){let r=await U(e),n=r.filter(i=>i.endsWith(".md")&&!basename(i).startsWith("_"));nc("commands",e,r,n,{handledByOtherReader:t.handledByOtherReader}),rc("command",n,".md");let o=[];for(let i of n){let a=await k(i);if(!a)continue;let l=Zo(a,i,t.onParseError);if(!l)continue;let{frontmatter:c,body:m}=l,p=basename(i,".md");es("command",p);let u=YE(c.allowedTools),f=YE(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:JE(c.outputStyle)||JE(c["output-style"]),body:m});}return o}var rp=d(()=>{b();B();ep();Nd();s(JE,"toBool");s(YE,"toToolsArray");s(_i,"parseCommands");});function La(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 QE(e){return e===true||e==="true"||e===1||e==="1"}function qE(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 WJ(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:{}}async function Si(e,t={}){let r=await U(e),n=r.filter(i=>i.endsWith(".md")&&!basename(i).startsWith("_"));nc("agents",e,r,n,{handledByOtherReader:t.handledByOtherReader}),rc("agent",n,".md");let o=[];for(let i of n){let a=await k(i);if(!a)continue;let l=Zo(a,i,t.onParseError);if(!l)continue;let{frontmatter:c,body:m}=l,p=basename(i,".md");es("agent",p);let u=La(c.tools),f=La(c.tools),g=u.length>0?u:f,h=La(c.disallowedTools),_=La(c["disallowed-tools"]),S=h.length>0?h:_,R=La(c.mcpServers),I=La(c["mcp-servers"]),w=R.length>0?R:I,D=La(c.skills),P=qE(c.maxTurns),K=qE(c["max-turns"]),G=P>0?P:K>0?K:0;o.push({source:i,name:p,description:typeof c.description=="string"?c.description:"",tools:g,disallowedTools:S,model:typeof c.model=="string"?c.model:"",permissionMode:typeof c.permissionMode=="string"?c.permissionMode:typeof c["permission-mode"]=="string"?c["permission-mode"]:"",maxTurns:G,mcpServers:w,hooks:WJ(c.hooks),skills:D,memory:typeof c.memory=="string"?c.memory:"",outputStyle:QE(c.outputStyle)||QE(c["output-style"]),body:m});}return o}var np=d(()=>{b();B();ep();Nd();s(La,"toStrArray");s(QE,"toBool");s(qE,"toInt");s(WJ,"toHooks");s(Si,"parseAgents");});function r_(e){let t=e.toLowerCase(),r=t.lastIndexOf("."),n=r>0?t.slice(0,r):t;return HJ.get(n)}function Jn(e){return r_(e)!==void 0}function vd(e){return r_(e)==="preserved"}function Fd(e){return r_(e)==="noise"}function ZE(e){return zJ.has(e)}function eO(e){return VJ.has(e)}var HJ,zJ,VJ,ts=d(()=>{HJ=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"]]),zJ=new Set([".git",".github",".gitlab","node_modules",".vscode",".idea"]),VJ=new Set(["package.json","package-lock.json","pnpm-lock.yaml","yarn.lock",".gitignore",".gitattributes",".editorconfig",".DS_Store"]);s(r_,"boilerplateKind");s(Jn,"isBoilerplate");s(vd,"isPreservedBoilerplate");s(Fd,"isNoiseBoilerplate");s(ZE,"isRepoNonContentDir");s(eO,"isRepoNonContentFile");});async function XJ(e){return await k(e)??""}function qJ(e){let t=e.lastIndexOf(".");return t<0?true:QJ.has(e.slice(t).toLowerCase())}function eY(e){return e.toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}async function tO(e){let t=await U(e),r=[];for(let n of t){let i=n.slice(e.length+1).replace(/\\/g,"/");if(i===Md||i.endsWith(`/${Md}`))continue;let a=i.split("/")[0];if(ZJ.some(m=>a===m)||i===".DS_Store"||i.endsWith("/.DS_Store"))continue;let l=i.includes("/")?i.slice(i.lastIndexOf("/")+1):i;if(qJ(l)&&Fd(l))continue;let c=await XJ(n);r.push({relativePath:i,absolutePath:n,content:c});}return r.sort((n,o)=>n.relativePath.localeCompare(o.relativePath))}async function Gd(e,t={}){let r=join(e,Md),n=await k(r);if(!n)return null;let o=Zo(n,r,t.onParseError);if(!o)return null;let{frontmatter:i,body:a}=o,l=await tO(e),m=(typeof i.name=="string"?eY(i.name):"")||basename(e);return es("skill",m),{source:r,name:m,description:typeof i.description=="string"?i.description:"",body:a,supportingFiles:l}}async function Ri(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;es("skill",o.name);let i=join(e,o.name),a=join(i,Md),l=await k(a);if(!l)continue;let c=Zo(l,a,t.onParseError);if(!c)continue;let{frontmatter:m,body:p}=c,u=await tO(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 Md,QJ,ZJ,oc=d(()=>{b();Uy();B();ts();ep();s(XJ,"readContent");Md="SKILL.md",QJ=new Set([".md",".mdx",".rst",".txt"]);s(qJ,"isMarkdownLikeDoc");ZJ=[".git","node_modules"];s(eY,"sanitizeSkillName");s(tO,"listSupportingFiles");s(Gd,"parseSkillDirectory");s(Ri,"parseSkills");});function rO(e){return e===null||typeof e!="object"||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="string"))}function tY(e){if(!e||typeof e!="object")return null;let t=e,r=typeof t.type=="string"?t.type:"stdio",n=rO(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:rO(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 rY(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 cn(e){let t=await k(e);if(!t)return null;let r;try{r=JSON.parse(rY(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=tY(a);l&&(o[i]=l);}return {mcpServers:o}}var op=d(()=>{b();s(rO,"parseStringMap");s(tY,"parseServer");s(rY,"stripJsonComments");s(cn,"parseMcp");});function o_(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}async function $d(e){let t=await k(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=o_(n.allow),i=o_(n.deny),a=o_(n.ask);return {allow:o,deny:i,ask:a}}var s_=d(()=>{b();s(o_,"ensureStringArray");s($d,"parsePermissions");});function nO(e){return typeof e=="string"?e.trim():""}function Je(e){return nO(e.command)}function xt(e){return nO(e.prompt)}function i_(e){let t=Je(e),r=xt(e);return e.type==="prompt"?r||t:t||r}function mn(e){return Je(e).length>0}function Yn(e){return i_(e).length>0}var Lr=d(()=>{s(nO,"trimString");s(Je,"getHookCommand");s(xt,"getHookPrompt");s(i_,"getHookText");s(mn,"hasHookCommand");s(Yn,"hasHookText");});function iY(e){if(!e||typeof e!="object")return null;let t=e,r=t.matcher;if(typeof r!="string")return null;let n=i_(t);if(!n)return null;let o=typeof t.type=="string"&&sY.includes(t.type)?t.type:void 0,i=typeof t.timeout=="number"&&Number.isFinite(t.timeout)?t.timeout:void 0,a=xt(t)||void 0;return {matcher:r,command:n,...i!==void 0&&{timeout:i},...o&&{type:o},...a&&{prompt:a}}}async function jd(e){let t=await k(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=iY(c);m&&l.push(m);}l.length>0&&(n[i]=l);}return n}var sY,a_=d(()=>{b();Lr();sY=["command","prompt"];s(iY,"toHookEntry");s(jd,"parseHooks");});async function Ud(e){let t=await k(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 l_=d(()=>{b();s(Ud,"parseIgnore");});async function jt(e,t={}){let r=join(e,".agentsmesh"),n=await j(r)?r:e,[o,i,a,l,c,m,p,u]=await Promise.all([yi(join(n,"rules"),t),_i(join(n,"commands"),t),Si(join(n,"agents"),t),Ri(join(n,"skills"),t),cn(join(n,"mcp.json")),$d(join(n,"permissions.yaml")),jd(join(n,"hooks.yaml")),Ud(join(n,"ignore"))]);return {rules:o,commands:i,agents:a,skills:l,mcp:c,permissions:m,hooks:p,ignore:u}}var Ca=d(()=>{tp();rp();np();oc();op();s_();a_();l_();b();s(jt,"loadCanonicalFiles");});function oO(e){return basename(e.source,".md")}function sc(e,t){let r=new Map(e.rules.map(p=>[oO(p),p]));for(let p of t.rules)r.set(oO(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=lY(e.mcp,t.mcp),l=cY(e.permissions,t.permissions),c=mY(e.hooks,t.hooks),m=pY(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 lY(e,t){if(!e&&!t)return null;let r=e?.mcpServers??{},n=t?.mcpServers??{};return {mcpServers:{...r,...n}}}function cY(e,t){if(!e&&!t)return null;let r=c_(e?.allow??[],t?.allow??[]),n=c_(e?.deny??[],t?.deny??[]),o=c_(e?.ask??[],t?.ask??[]);return {allow:r,deny:n,ask:o}}function c_(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 mY(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 pY(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 m_=d(()=>{s(oO,"ruleSlug");s(sc,"mergeCanonicalFiles");s(lY,"mergeMcp");s(cY,"mergePermissions");s(c_,"mergeUniqueStrings");s(mY,"mergeHooks");s(pY,"mergeIgnore");});function _Y(e){return typeof e=="string"?e:e.level}function sO(e){return yY.includes(e)}function iO(e,t,r,n){for(let o of hY){let i=_Y(t[o.feature]);if(i==="none")continue;let a=typeof e.generators[o.generator]=="function",l=sO(o.feature)&&typeof e.emitScopedSettings=="function";a||l||r.addIssue({code:"custom",path:[...n,o.feature],message:`Capability "${o.feature}" is "${i}" but generators.${o.generator}`+(sO(o.feature)?" or emitScopedSettings":"")+" is missing."});}}function Bd(e){return CY.parse(e)}var ns,aO,uY,dY,lO,fY,gY,hY,yY,SY,RY,kY,IY,LY,CY,p_=d(()=>{ns=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()})]),aO=z$1.object({rules:ns,additionalRules:ns,commands:ns,agents:ns,skills:ns,mcp:ns,hooks:ns,ignore:ns,permissions:ns}),uY=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(),dY=z$1.object({rulePath:z$1.function(),commandPath:z$1.function(),agentPath:z$1.function()}),lO=z$1.object({paths:dY}).passthrough(),fY=z$1.object({capabilities:aO,detectionPaths:z$1.array(z$1.string()),layout:lO,scopeExtras:z$1.function().optional()}).passthrough(),gY=["global","globalCapabilities","globalDetectionPaths","generateScopeExtras"],hY=[{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"}],yY=["mcp","hooks","ignore","permissions"];s(_Y,"capabilityLevel");s(sO,"canUseScopedSettings");s(iO,"validateCapabilityImplementations");SY=z$1.object({commandsToSkills:z$1.boolean().optional(),agentsToSkills:z$1.boolean().optional()}).strict(),RY=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(),kY=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")})]),IY=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:kY})).optional(),inferPick:z$1.function().optional(),dialectHints:z$1.array(z$1.object({frontmatterKey:z$1.string().min(1)})).optional()}).strict(),LY=z$1.object({id:z$1.string().regex(/^[a-z][a-z0-9-]*$/,"Target id must be lowercase with hyphens"),metadata:RY,generators:uY,capabilities:aO,emptyImportMessage:z$1.string(),lintRules:z$1.union([z$1.function(),z$1.null()]),project:lO,globalSupport:fY.optional(),buildImportPaths:z$1.function(),detectionPaths:z$1.array(z$1.string()),nativeInstall:IY.optional(),excludeFromStarterInit:z$1.boolean().optional(),conversionDefaults:SY.optional(),emitScopedSettings:z$1.function().optional(),mergeGeneratedOutputContent:z$1.function().optional(),postProcessHookOutputs:z$1.function().optional(),preservesManualActivation:z$1.boolean().optional()}).passthrough(),CY=LY.superRefine((e,t)=>{for(let r of gY)r in e&&t.addIssue({code:"custom",path:[r],message:`Use globalSupport instead of legacy field "${r}".`});iO(e,e.capabilities,t,["capabilities"]),e.globalSupport!==void 0&&iO(e,e.globalSupport.capabilities,t,["globalSupport","capabilities"]);});s(Bd,"validateDescriptor");});function cO(){if(u_)return u_;let e=Pe.filter(r=>r!==void 0&&typeof r.id=="string"),t=new Map(e.map(r=>[r.id,r]));return e.length===Pe.length&&(u_=t),t}function Wd(e){let t=Bd(e);Kd.set(t.id,t);}function re(e){return Kd.get(e)??cO().get(e)}function Hd(){return [...Kd.values()]}function zd(){return [...new Set([...cO().keys(),...Kd.keys()])]}var Kd,u_,rt=d(()=>{xe();p_();Kd=new Map;s(cO,"builtinDescriptors");s(Wd,"registerTargetDescriptor");s(re,"getDescriptor");s(Hd,"getAllDescriptors");s(zd,"getAllRegisteredDescriptorIds");});function mO(e,t){return re(e)?.conversionDefaults?.[t]}function pO(e,t){if(e!==void 0)return typeof e=="boolean"?e:e[t]}function ic(e,t,r,n="project"){let o=e.conversions?.commands_to_skills?.[t],i=pO(o,n);if(i!==void 0)return i;let a=mO(t,"commandsToSkills");return a!==void 0?a:r??false}function os(e,t,r,n="project"){let o=e.conversions?.agents_to_skills?.[t],i=pO(o,n);if(i!==void 0)return i;let a=mO(t,"agentsToSkills");return a!==void 0?a:r??false}var sp=d(()=>{rt();s(mO,"builtinDefault");s(pO,"resolveConversionValue");s(ic,"shouldConvertCommandsToSkills");s(os,"shouldConvertAgentsToSkills");});function un(e,t){return t!==void 0?{level:e,flavor:t}:{level:e}}function pn(e){return typeof e=="string"?{level:e}:e}function d_(e){return {rules:pn(e.rules),additionalRules:pn(e.additionalRules),commands:pn(e.commands),agents:pn(e.agents),skills:pn(e.skills),mcp:pn(e.mcp),hooks:pn(e.hooks),ignore:pn(e.ignore),permissions:pn(e.permissions)}}var Ea=d(()=>{s(un,"cap");s(pn,"normalizeCapabilityValue");s(d_,"normalizeTargetCapabilities");});function uO(e){for(let t of Pe)if(t.sharedArtifacts){for(let[r,n]of Object.entries(t.sharedArtifacts))if(n==="owner"&&e.startsWith(r))return t.id}return null}function EY(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 dO(e){let t=EY(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
|
|
19
|
+
Resolve by changing one target's role to 'consumer' or by namespacing its prefix.`)}var f_=d(()=>{xe();s(uO,"ownerTargetIdForSharedPath");s(EY,"findSharedArtifactOwnershipConflicts");s(dO,"assertSharedArtifactOwnersUnique");});function OY(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 J(e){return `${ac}${e}`}function Ge(e){let t={name:J(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"],T(t,e.body.trim()||"")}function Vd(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(ac)?t.slice(ac.length):t.startsWith(ip)?t.slice(ip.length):"",o=(r||n).trim();return o?{name:o,description:typeof e.description=="string"?e.description:"",allowedTools:OY(e["x-agentsmesh-allowed-tools"])}:null}function Jd(e,t){return T({description:e.description,"allowed-tools":e.allowedTools},t.trim()||"")}var ac,ip,be=d(()=>{B();ac="am-command-",ip="ab-command-";s(OY,"toStringArray");s(J,"commandSkillDirName");s(Ge,"serializeCommandSkill");s(Vd,"parseCommandSkillFrontmatter");s(Jd,"serializeImportedCommand");});function Yd(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 wY(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 `${lc}${e}`}function $e(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];}),T(t,e.body.trim()||"")}function cc(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(lc)?t.slice(lc.length):t.startsWith(ap)?t.slice(ap.length):"",o=(r||n).trim();return o?{name:o,description:typeof e.description=="string"?e.description:"",tools:Yd(e["x-agentsmesh-tools"]),disallowedTools:Yd(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:Yd(e["x-agentsmesh-mcp-servers"]),hooks:wY(e["x-agentsmesh-hooks"]),skills:Yd(e["x-agentsmesh-skills"]),memory:typeof e["x-agentsmesh-memory"]=="string"?e["x-agentsmesh-memory"]:""}:null}function ki(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];}),T(r,t.trim()||"")}var lc,ap,_e=d(()=>{B();lc="am-agent-",ap="ab-agent-";s(Yd,"toStringArray");s(wY,"toHooks");s(V,"projectedAgentSkillDirName");s($e,"serializeProjectedAgentSkill");s(cc,"parseProjectedAgentSkillFrontmatter");s(ki,"serializeImportedAgent");});function lp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function _O(e,t){return new RegExp(`${lp(e)}[\\s\\S]*?${lp(t)}`,"g")}function mp(e,t,r){return e.replace(_O(t,r),"").trim()}function xY(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 qd(e,t){let{prefix:r,body:n}=xY(e),o=n?`${t}
|
|
20
20
|
|
|
21
21
|
${n}`:t;return r?`${r}
|
|
22
22
|
|
|
23
|
-
${o}`:o}function
|
|
24
|
-
`)}function
|
|
25
|
-
`)}function
|
|
23
|
+
${o}`:o}function TY(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 PY(e){return {source:TY(e.source),description:e.description,globs:e.globs,targets:e.targets}}function DY(e){return `${hO}${JSON.stringify(PY(e))}${yO}`}function NY(e){let t=[DY(e)];return e.description.trim()&&t.push(`## ${e.description.trim()}`,""),t.push(e.body.trim(),gO),t.filter(r=>r.length>0).join(`
|
|
24
|
+
`)}function vY(e){return e.length===0?"":[Xd,...e.map(NY),Qd].join(`
|
|
25
|
+
`)}function le(e,t){let r=vY(t),n=mp(e,Xd,Qd);return r?n?`${n}
|
|
26
26
|
|
|
27
|
-
${r}`:r:n}function
|
|
27
|
+
${r}`:r:n}function fO(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function FY(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:fO(r.globs),targets:fO(r.targets)}}catch{return null}}function MY(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 SO(e){let t=[],r=_O(Xd,Qd);return {rootContent:e.replace(r,o=>{let i=o.replace(Xd,"").replace(Qd,"").trim(),a=new RegExp(`${lp(hO)}([\\s\\S]*?)${lp(yO)}([\\s\\S]*?)${lp(gO)}`,"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=FY(c);p&&t.push({...p,body:MY(m,p.description)});}return ""}).trim(),rules:t}}var g_,h_,cp,y_,Xd,Qd,gO,hO,yO,Be=d(()=>{g_="<!-- agentsmesh:root-generation-contract:start -->",h_="<!-- agentsmesh:root-generation-contract:end -->",cp="<!-- agentsmesh:lessons-contract:start -->",y_="<!-- agentsmesh:lessons-contract:end -->",Xd="<!-- agentsmesh:embedded-rules:start -->",Qd="<!-- agentsmesh:embedded-rules:end -->",gO="<!-- agentsmesh:embedded-rule:end -->",hO="<!-- agentsmesh:embedded-rule:start ",yO=" -->";s(lp,"escapeRegExp");s(_O,"managedBlockPattern");s(mp,"stripManagedBlock");s(xY,"splitFrontmatterPrefix");s(qd,"insertAtBodyTop");s(TY,"ruleSource");s(PY,"markerForRule");s(DY,"embeddedRuleStart");s(NY,"renderRule");s(vY,"renderEmbeddedRulesBlock");s(le,"appendEmbeddedRulesBlock");s(fO,"toStringArray");s(FY,"parseMarker");s(MY,"stripGeneratedHeading");s(SO,"extractEmbeddedRules");});function kO(e){let t=S_(e);return qd(t,RO)}function S_(e){let t=mp(e,g_,h_);t=t.replace(`
|
|
28
28
|
|
|
29
|
-
${
|
|
29
|
+
${RO}`,"");for(let r of i2)t=t.replace(`
|
|
30
30
|
|
|
31
|
-
${r}`,"");return t.trim()}var
|
|
31
|
+
${r}`,"");return t.trim()}var __,GY,$Y,jY,UY,BY,KY,WY,HY,zY,VY,JY,YY,XY,QY,qY,ZY,e2,t2,r2,n2,o2,s2,RO,i2,R_=d(()=>{Be();__="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.",GY="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.",$Y="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.",jY="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.",UY="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`.",BY="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`.",KY="`.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`.",WY="`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.",HY="`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.",zY="**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.",VY="**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.",JY=__,YY=`## Project-Specific Rules
|
|
32
32
|
|
|
33
|
-
${
|
|
33
|
+
${__}`,XY=`## AgentsMesh Generation Contract
|
|
34
34
|
|
|
35
|
-
${
|
|
35
|
+
${__}`,QY=`## AgentsMesh Generation Contract
|
|
36
36
|
|
|
37
|
-
${
|
|
37
|
+
${GY}`,qY=`## AgentsMesh Generation Contract
|
|
38
38
|
|
|
39
|
-
${
|
|
39
|
+
${$Y}`,ZY=`## AgentsMesh Generation Contract
|
|
40
40
|
|
|
41
|
-
${
|
|
41
|
+
${jY}`,e2=`## AgentsMesh Generation Contract
|
|
42
42
|
|
|
43
|
-
${
|
|
43
|
+
${UY}`,t2=`## AgentsMesh Generation Contract
|
|
44
44
|
|
|
45
|
-
${
|
|
45
|
+
${BY}`,r2=`## AgentsMesh Generation Contract
|
|
46
46
|
|
|
47
|
-
${
|
|
47
|
+
${KY}`,n2=`## AgentsMesh Generation Contract
|
|
48
48
|
|
|
49
|
-
${
|
|
49
|
+
${WY}`,o2=`## AgentsMesh Generation Contract
|
|
50
50
|
|
|
51
|
-
${
|
|
51
|
+
${HY}`,s2=`## AgentsMesh Generation Contract
|
|
52
52
|
|
|
53
|
-
${
|
|
53
|
+
${zY}`,RO=`${g_}
|
|
54
54
|
## AgentsMesh Generation Contract
|
|
55
55
|
|
|
56
|
-
${
|
|
57
|
-
${
|
|
58
|
-
`)}]}var
|
|
59
|
-
`)break;i+=a,o++;}return i===r}function
|
|
56
|
+
${VY}
|
|
57
|
+
${h_}`,i2=[s2,o2,n2,r2,t2,e2,ZY,qY,QY,XY,YY,JY];s(kO,"appendAgentsmeshRootInstructionParagraph");s(S_,"stripAgentsmeshRootInstructionParagraph");});function Tt(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 mc(e){let t=await k(e);return t?x(t).frontmatter:{}}function lt(e,t){return typeof e[t]=="string"?e[t]:void 0}function k_(e){let t=e.hooks;return t&&typeof t=="object"&&!Array.isArray(t)?t:void 0}function a2(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function l2(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 mc(e),o=basename(e,".md")==="_root"?S_(r):r.trim(),i=l2(e,a2({...n,...t})),a={root:i.root===true,description:typeof i.description=="string"?i.description:""};a.root===false&&(a.globs=Tt(i.globs));for(let[l,c]of Object.entries(i))l==="root"||l==="description"||l==="globs"||c===void 0||(a[l]=c);return T(a,o||"")}var I_=d(()=>{b();B();R_();s(Tt,"toStringArray");s(mc,"readExistingFrontmatter");s(lt,"readString");s(k_,"readHooks");s(a2,"pruneUndefined");s(l2,"serializeCanonicalRuleFrontmatter");s(z,"serializeImportedRuleWithFallback");});async function Ce(e,t,r){let n=await mc(e),o=(()=>{let l=Tt(n.allowedTools);return l.length>0?l:Tt(n["allowed-tools"])})(),i=t.hasDescription?t.description??"":typeof n.description=="string"?n.description:"",a=t.hasAllowedTools?t.allowedTools??[]:o;return T({description:i,"allowed-tools":a},r.trim()||"")}async function Xn(e,t,r){let n=await mc(e),o=basename(dirname(e)),i=lt(t,"name")??lt(n,"name")??o,a=lt(t,"description")??lt(n,"description")??"";return T({name:i,description:a},r.trim()||"")}async function ve(e,t,r){let n=await mc(e),o=Object.prototype.hasOwnProperty.call(t,"tools")?Tt(t.tools):(()=>{let _=Tt(n.tools);return _.length>0?_:[]})(),i=Object.prototype.hasOwnProperty.call(t,"disallowedTools")?Tt(t.disallowedTools):Object.prototype.hasOwnProperty.call(t,"disallowed-tools")?Tt(t["disallowed-tools"]):Tt(n.disallowedTools),a=Object.prototype.hasOwnProperty.call(t,"mcpServers")?Tt(t.mcpServers):Object.prototype.hasOwnProperty.call(t,"mcp-servers")?Tt(t["mcp-servers"]):Tt(n.mcpServers),l=Object.prototype.hasOwnProperty.call(t,"skills")?Tt(t.skills):Tt(n.skills),c=t.maxTurns??t["max-turns"]??n.maxTurns,m=typeof c=="number"?c:Number(c??0),p=k_(t)??k_(n),u={name:lt(t,"name")??lt(n,"name")??basename(e,".md"),description:lt(t,"description")??lt(n,"description")??"",tools:o};i.length>0&&(u.disallowedTools=i);let f=lt(t,"model")??lt(n,"model");f&&(u.model=f);let g=lt(t,"permissionMode")??lt(t,"permission-mode")??lt(n,"permissionMode")??lt(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=lt(t,"memory")??lt(n,"memory");return h&&(u.memory=h),T(u,r.trim()||"")}var CO=d(()=>{B();I_();s(Ce,"serializeImportedCommandWithFallback");s(Xn,"serializeImportedSkillWithFallback");s(ve,"serializeImportedAgentWithFallback");});var de=d(()=>{I_();CO();});function Zd(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 Qn(e){await rm$1(e,{recursive:true,force:true});}var pp=d(()=>{s(Zd,"shouldImportScopedAgentsRule");s(Qn,"removePathIfExists");});function ie(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:T(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 ne(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 k(c);if(m===null)continue;let p=join(e,up,a.name),u=join(p,"SKILL.md"),{frontmatter:f,body:g}=x(o(m,c,u)),h=Vd(f,a.name);if(h){await Qn(join(e,up,a.name));let I=join(e,EO);await O(I);let w=join(I,`${h.name}.md`);await L(w,Jd(h,o(g,c,w))),n.push({fromTool:r,fromPath:c,toPath:`${EO}/${h.name}.md`,feature:"commands"});continue}let _=cc(f,a.name);if(_){await Qn(join(e,up,a.name));let I=join(e,OO);await O(I);let w=join(I,`${_.name}.md`);await L(w,ki(_,o(g,c,w))),n.push({fromTool:r,fromPath:c,toPath:`${OO}/${_.name}.md`,feature:"agents"});continue}let S=await Xn(u,{...f,name:a.name},g);await O(p),await L(u,S),n.push({fromTool:r,fromPath:c,toPath:`${up}/${a.name}/SKILL.md`,feature:"skills"});let R=await U(l);for(let I of R){if(I===c)continue;let w=relative(l,I).replace(/\\/g,"/"),D=await k(I);if(D===null)continue;let P=join(p,w);await O(dirname(P)),await L(P,o(D,I,P)),n.push({fromTool:r,fromPath:I,toPath:`${up}/${a.name}/${w}`,feature:"skills"});}}}var up,EO,OO,oe=d(()=>{b();B();de();_e();be();pp();up=".agentsmesh/skills",EO=".agentsmesh/commands",OO=".agentsmesh/agents";s(ie,"generateEmbeddedSkills");s(ne,"importEmbeddedSkills");});var qn,Er,St,ss,is,Or,Oa,wO,bO,pc=d(()=>{qn="aider",Er="CONVENTIONS.md",St=".aider/skills",ss=".aiderignore",is="CONVENTIONS.md",Or=".aider/skills",Oa=".aiderignore",wO=".agentsmesh/rules",bO=".agentsmesh/ignore";});function AO(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(qn)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Er,content:o}]:[]}function xO(e){return ie(e,St)}function TO(e){return e.commands.map(t=>({path:`${St}/${J(t.name)}/SKILL.md`,content:Ge(t)}))}function PO(e){return e.agents.map(t=>({path:`${St}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function DO(e){return e.ignore.length===0?[]:[{path:ss,content:e.ignore.join(`
|
|
58
|
+
`)}]}var NO=d(()=>{oe();Be();_e();be();pc();s(AO,"generateRules");s(xO,"generateSkills");s(TO,"generateCommands");s(PO,"generateAgents");s(DO,"generateIgnore");});function ce(e){return e.includes("\\")||dn.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 FO(e,t){return ce(e).isAbsolute(t)||dn.test(t)}function uc(e){let t=e,r="";for(;g2.test(t);)r=t.at(-1)+r,t=t.slice(0,-1);return {candidate:t,suffix:r}}function MO(e,t){let r=ce(t),n=e.replace(/^(\.\.\/)+/,"").replace(/^\.\//,"");return n&&n!==e?q(t,r.join(t,n)):null}var dn,g2,Rt=d(()=>{dn=/^[A-Za-z]:[\\/]/,g2=/[.!?:;]+$/;s(ce,"pathApi");s(Ke,"normalizeSeparators");s(q,"normalizeForProject");s(FO,"isAbsoluteForProject");s(uc,"stripTrailingPunctuation");s(MO,"rootFallbackPath");});async function GO(e,t,r="project"){let n=new Map,o=re(e);return o&&await o.buildImportPaths(n,t,r),n}var $O=d(()=>{rt();s(GO,"buildImportReferenceMap");});function _2(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 S2(){let e=new Set([".agentsmesh/"]);for(let t of Pe)for(let r of _2(t))e.add(r);return Array.from(e)}function R2(){let e=new Set([...S2(),...L_.rootRelativePrefixes]),t=new Set([...y2,...L_.meshRootSegments]);return {protectedSchemes:[...h2,...L_.protectedSchemes],rootRelativePrefixes:Array.from(e),meshRootSegments:t}}function ef(){return C_||(C_=R2()),C_}var h2,y2,L_,C_,jO=d(()=>{xe();h2=[/\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],y2=new Set(["skills","rules","commands","agents","packs"]),L_={protectedSchemes:[],rootRelativePrefixes:[],meshRootSegments:[]};s(_2,"topLevelDotfilePrefixes");s(S2,"buildDefaultRootRelativePrefixes");s(R2,"rebuild");s(ef,"getLinkFormatRegistry");});function fn(e){let t=Ke(e);return ef().rootRelativePrefixes.some(r=>t.startsWith(r))}function I2(e){let t=Ke(e).replace(/^\.\//,"");if(t.startsWith("../")||t.startsWith("/")||dn.test(t)||/^[a-zA-Z]:/.test(t)||fn(t))return false;let r=t.split("/").filter(n=>n.length>0)[0];return r!==void 0&&ef().meshRootSegments.has(r)}function dp(e,t,r){let n=ce(t),o=q(t,t),i=q(t,r),a=Ke(e);if(dn.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=MO(a,o);return c&&c!==l?[l,c]:[l]}if(fn(a))return [q(t,n.join(o,a))];if(a.includes("/")){let l=q(t,n.join(o,".agentsmesh")),c=I2(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 L2.has(a)?[]:a.includes(".")?[q(t,n.join(n.dirname(i),a))]:[]}function fp(e,t){let r=[t];if(!FO(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 WO(e,t,r){let n=t>0?e.at(t-1):"",o=r<e.length?e.at(r):"";return n==="*"||o==="*"}function tf(e){let t=[];for(let r of ef().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(C2))t.push([r.index??0,(r.index??0)+r[0].length]);for(let r of e.matchAll(E2))t.push([r.index??0,(r.index??0)+r[0].length]);for(let r of e.matchAll(O2))t.push([r.index??0,(r.index??0)+r[0].length]);return t}var L2,C2,E2,O2,KO,dc,Ii=d(()=>{Rt();jO();s(fn,"isRootRelativePathToken");s(I2,"isMeshRootRelativePathToken");L2=new Set(["AGENTS.md","CLAUDE.md","GEMINI.md","codex.md",".windsurfrules",".cursorrules"]),C2=/^(?:```|~~~)[^\n]*\n[\s\S]*?^(?:```|~~~)/gm,E2=/<!-- agentsmesh:root-generation-contract:start -->[\s\S]*?<!-- agentsmesh:root-generation-contract:end -->/g,O2=/<!-- agentsmesh:embedded-rules:start -->[\s\S]*?<!-- agentsmesh:embedded-rules:end -->/g,KO=/(?:\.\.[\\/]|\.\/|\.\\|\/[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,dc=/(?::(\d+)){1,2}$/;s(dp,"resolveProjectPath");s(fp,"expandResolvedPaths");s(WO,"isGlobAdjacent");s(tf,"protectedRanges");});function w2(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 HO(e){return w2(e.tokenContext)}function E_(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 zO(e){let t=ce(e);return q(e,t.join(e,".agentsmesh"))}function gn(e,t){let r=ce(e),n=zO(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 VO(e,t,r){let n=ce(e),o=zO(e),i=q(e,t);if(!gn(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 O_(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 fc(e,t,r){let n=O_(e,t,r);return n===null?null:{kind:"projectRoot",rest:n,text:n}}function w_(e,t,r,n,o){let i=ce(e),a=q(e,e),l=q(e,t),c=q(e,r);if(!E_(e,c))return fc(e,c,n)?.text??null;let m=q(e,i.dirname(l));if(!E_(e,m)&&m!==a)return fc(e,c,n)?.text??null;let p=i.relative(m,c).replace(/\\/g,"/");if(i.isAbsolute(p)||dn.test(p))return O_(e,c,n);let u=q(e,i.join(m,p));return E_(e,u)?(p===""||p==="."?p=".":o.explicitCurrentDirLinks===true&&m!==a&&!p.startsWith("../")&&!p.startsWith("./")&&(p=`./${p}`),n&&!p.endsWith("/")?`${p}/`:p):O_(e,c,n)}var b_=d(()=>{Rt();s(w2,"isReadingContext");s(HO,"isReadingContextOptions");s(E_,"isUnderProjectRoot");s(zO,"agentsMeshRoot");s(gn,"isUnderAgentsMesh");s(VO,"toAgentsMeshRootRelative");s(O_,"toProjectRootRelative");s(fc,"toProjectRootReference");s(w_,"formatLinkPathForDestinationLegacy");});function JO(e,t,r,n,o={}){let i=o.scope??"project",a=q(e,r);if(HO(o)&&gn(e,t)&&gn(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 w_(e,t,r,n,o);if(i==="global"&&!gn(e,t))return fc(e,a,n)?.text??null;let l=(()=>{if(gn(e,a))return a;let m=o.logicalMeshSourceAbsolute;return m&&gn(e,q(e,m))?q(e,m):null})();if(!l)return fc(e,a,n)?.text??null;if(n||(o.pathIsDirectory?.(a)??false)){let m=VO(e,l,n);return m!==null?m:fc(e,l,n)?.text??null}return w_(e,t,r,n,o)}var YO=d(()=>{Ii();Rt();b_();b_();s(JO,"formatLinkPathForDestination");});function XO(e,t,r,n){let o=ce(t),i=Ke(e);if(!fn(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 QO=d(()=>{Rt();Ii();s(XO,"resolveByDestinationSuffixStrip");});function qO(e){let t=null,r=false,n=null,o=null,i=null;for(let c of dp(e.candidate,e.projectRoot,e.sourceFile)){let m=null,p=null;for(let u of fp(e.projectRoot,c)){let f=q(e.projectRoot,u),g=q(e.projectRoot,e.translatePath(f)),h=e.pathExists(f),_=e.pathExists(g);if(_&&g!==f){t=g,n=f,r=true;break}(h||_)&&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=XO(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 ZO=d(()=>{Rt();Ii();QO();s(qO,"resolveLinkTarget");});function ew(e,t,r){return t>=2&&e[t-2]==="~"&&e[t-1]==="/"?true:t>=1&&e[t-1]==="~"&&r.startsWith("/")}function tw(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 rw(e){let t=Ke(e);return t.startsWith("./")||t.startsWith("../")?true:t.startsWith("/")||dn.test(t)||fn(t)?false:t.includes("/")}var nw=d(()=>{Rt();Ii();s(ew,"isTildeHomeRelativePathToken");s(tw,"isMarkdownLinkDestinationToken");s(rw,"isRelativePathToken");});function b2(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 ow(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
|
|
62
|
-
`);continue}if(!
|
|
63
|
-
`);continue}let{frontmatter:f,body:g}=u.value,h=e.frontmatterRemap?e.frontmatterRemap(f):f,
|
|
64
|
-
`),null}return R?{destPath:R.destPath,toPath:R.toPath,feature:e.feature,content:R.content}:null},"mapEntry")});l.push(...p);}return l}function Tw(e){let t=e.canonicalFilename;return t.includes("/")||t.includes("\\")?t:posix.join(e.canonicalDir,t)}async function nY(e,t,r,n){if(!e.canonicalFilename)throw new Error(`flatFile spec for ${e.feature} must set canonicalFilename`);let o=Tw(e);for(let i of t){let a=join(r,i),l=await k(a);if(l===null)continue;let c=join(r,o);return await w(dirname(c)),await L(c,l.trimEnd()),[{fromTool:n,fromPath:a,toPath:o,feature:e.feature}]}return []}function oY(e){let t;try{t=JSON.parse(e);}catch{return {}}if(!t||typeof t!="object")return {};let r=t.mcpServers;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,l=typeof a.description=="string"?a.description:void 0;if(typeof a.command=="string"){n[o]={type:typeof a.type=="string"?a.type:"stdio",command:a.command,args:qs(a.args),env:jn(a.env),description:l};continue}typeof a.url=="string"&&(n[o]={type:typeof a.type=="string"?a.type:"http",url:a.url,headers:jn(a.headers),env:jn(a.env),description:l});}return n}async function sY(e,t,r,n){if(!e.canonicalFilename)throw new Error(`mcpJson spec for ${e.feature} must set canonicalFilename`);let o=Tw(e);for(let i of t){let a=join(r,i),l=await k(a);if(l===null)continue;let c=oY(l);return Object.keys(c).length===0?[]:(await Je(r,o,c),[{fromTool:n,fromPath:a,toPath:o,feature:e.feature}])}return []}function xw(e,t,r,n,o){switch(e.mode){case "singleFile":return tY(e,t,r,n,o);case "directory":return rY(e,t,r,n,o);case "flatFile":return nY(e,t,r,n);case "mcpJson":return sY(e,t,r,n)}}async function iY(e,t,r,n,o){let i=aR(e.source,t),a=aR(e.fallbacks,t);if(i.length===0&&a.length===0)return [];if(i.length>0){let l=await xw(e,i,r,n,o);if(l.length>0)return l}return a.length>0?xw(e,a,r,n,o):[]}function aY(e,t){let r=e[t];return r?Array.isArray(r)?r:[r]:[]}async function q(e,t,r,n){let o=e.importer;if(!o)return [];let i=n?.normalize??await z(e.id,t,r),a=[];for(let l of Ow)for(let c of aY(o,l))a.push(...await iY(c,r,t,e.id,i));return a}var be=d(()=>{ge();A();nn();B();Sr();fe();Yt();bw();$o();Aw();s(tY,"runSingleFile");s(rY,"runDirectory");s(Tw,"resolveCanonicalFilePath");s(nY,"runFlatFile");s(oY,"parseMcpJson");s(sY,"runMcpJson");s(xw,"dispatchSpec");s(iY,"runSpec");s(aY,"specsForFeature");s(q,"runDescriptorImport");});async function Pw(e,t={}){let r=t.scope??"project",n=[],o=await z(Gn,e,r);return n.push(...await q(xd,e,r,{normalize:o})),await oe(e,r==="global"?Rr:ht,Gn,n,o),n}var Dw=d(()=>{ge();se();be();Bl();lR();s(Pw,"importFromAider");});function lY(e,t){return vw(t).some(n=>cY(e,n))}function Nw(e,t){return e.filter(r=>lY(r,t))}function vw(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 vw(r+l+o))a.push(c);return a}function cY(e,t){return mY(t).test(e)}function mY(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 Fw=d(()=>{s(lY,"globMatch");s(Nw,"globFilter");s(vw,"expandBraces");s(cY,"matchOne");s(mY,"globToRegex");});function X(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(Nw(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 Ie=d(()=>{Fw();s(X,"validateRules");});function $w(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Gn}))}var Gw=d(()=>{Ie();Bl();s($w,"lintRules");});function v(e,t,r){return {level:"warning",file:e,target:t,message:r}}function pY(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 Zs(e,t,r,n){let o=n?.unsupportedBy??t,i=pY(r);return v(".agentsmesh/hooks.yaml",t,`${e} is not supported by ${o}; only ${i} are projected.`)}var Oe=d(()=>{s(v,"createWarning");s(pY,"formatOxfordComma");s(Zs,"createUnsupportedHookWarning");});function jw(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[v(".agentsmesh/hooks.yaml","aider","Aider has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function Uw(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?[]:[v(".agentsmesh/permissions.yaml","aider","Aider has no permissions config; canonical permissions are not projected.")]}function Bw(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[v(".agentsmesh/mcp.json","aider","Aider has no MCP config file; canonical MCP servers are not projected.")]}var Kw=d(()=>{Oe();s(jw,"lintHooks");s(Uw,"lintPermissions");s(Bw,"lintMcp");});function C(e,t){return le(e).relative(e,t).replace(/\\/g,"/")}async function E(e,t){return U(le(e).join(e,t)).catch(()=>[])}function Hw(e,t,r){e.set(t,r),e.set(`${t}/`,`${r}/`);}function yY(e,t,r,n){let o=posix.dirname(t),i=posix.dirname(r);for(;o!==n&&o!==".";)Hw(e,o,i),o=posix.dirname(o),i=posix.dirname(i);}function F(e,t,r,n){e.set(t,`${r}/${basename(t,n)}.md`);}function G(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,`${Ww}/${u}/SKILL.md`);return}let[o,...i]=n.split("/"),a=i.join("/");if(!o||!a)return;let l=o.startsWith($l)?$l:o.startsWith(Bm)?Bm:null;if(l&&a==="SKILL.md"){e.set(t,`${gY}/${o.slice(l.length)}.md`);return}let c=o.startsWith(Gl)?Gl:o.startsWith(Km)?Km:null;if(c&&a==="SKILL.md"){e.set(t,`${hY}/${o.slice(c.length)}.md`);return}let m=`${Ww}/${o}`;a==="SKILL.md"&&Hw(e,`${r}/${o}`,m);let p=`${m}/${a}`;e.set(t,p),a!=="SKILL.md"&&yY(e,t,p,`${r}/${o}`);}function RY(e){return e.split("/").filter(Boolean)[0]??""}async function _Y(){if(cR!==void 0)return cR;let{BUILTIN_TARGETS:e}=await Promise.resolve().then(()=>(xe(),zw)),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=RY(n);o.startsWith(".")&&t.add(o);}return cR=t,t}function pR(e){return e.split("/").some(t=>t.startsWith("."))}async function SY(e){let t=[],r=await _Y(),n=le(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)||pR(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)||pR(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 Td(e,t){let r=await SY(t);for(let n of r){let o=C(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(pR(l))continue;let c=l.replace(/\//g,"-");e.set(o,`${fY}/${c}.md`);}}var fY,gY,hY,Ww,cR,Le=d(()=>{yt();A();we();ue();fY=".agentsmesh/rules",gY=".agentsmesh/commands",hY=".agentsmesh/agents",Ww=".agentsmesh/skills";s(C,"rel");s(E,"listFiles");s(Hw,"addDirectoryMapping");s(yY,"addAncestorMappings");s(F,"addSimpleFileMapping");s(G,"addSkillLikeMapping");s(RY,"firstPathSegment");s(_Y,"targetRootSegments");s(pR,"hasHiddenSegment");s(SY,"listScopedAgentsFiles");s(Td,"addScopedAgentsMappings");});var O,ce,Ae,_e=d(()=>{O=".agentsmesh/rules",ce=".agentsmesh/commands",Ae=".agentsmesh/agents";});async function uR(e,t,r="project"){if(r==="global"){e.set(Ko,`${O}/_root.md`);for(let n of await E(t,Rr))G(e,C(t,n),Rr);e.set(ta,".agentsmesh/ignore");return}e.set(yr,`${O}/_root.md`);for(let n of await E(t,ht))G(e,C(t,n),ht);e.set(Bo,".agentsmesh/ignore");}var Vw=d(()=>{Le();Bl();_e();s(uR,"buildAiderImportPaths");});var ra,on,na,ei,Qm,Jw,Yw,Zm=d(()=>{ra="amazon-q",on=".amazonq/rules",na=".amazonq/mcp.json",ei=".aws/amazonq/rules",Qm=".aws/amazonq/mcp.json",Jw=".agentsmesh/rules",Yw=".agentsmesh/mcp.json";});async function dR(e,t,r="project"){let n=r==="global"?ei:on;for(let o of await E(t,n)){let i=C(t,o);F(e,i,O,".md");}}var Xw=d(()=>{Le();Zm();_e();s(dR,"buildAmazonQImportPaths");});var kr,Rt,Un,fR,Ho,Ir,zo,qw,oa=d(()=>{kr="AGENTS.md",Rt=".agents/skills",Un=".amp/settings.json",fR=".config/amp",Ho=`${fR}/AGENTS.md`,Ir=`${fR}/skills`,zo=`${fR}/settings.json`,qw=".agentsmesh/rules";});async function gR(e,t,r="project"){if(r==="global"){e.set(Ho,`${O}/_root.md`);for(let n of await E(t,Ir))G(e,C(t,n),Ir);e.set(zo,".agentsmesh/mcp.json");return}e.set(kr,`${O}/_root.md`);for(let n of await E(t,Rt))G(e,C(t,n),Rt);e.set(Un,".agentsmesh/mcp.json");}var Qw=d(()=>{Le();oa();_e();s(gR,"buildAmpImportPaths");});var sa,Pd,sn,Lr,ep,an,Bn,tp,Kn,Wn,rp,zl,hR,ia,Dd,Zw,aa=d(()=>{sa="antigravity",Pd=".agents",sn=`${Pd}/rules`,Lr=`${sn}/general.md`,ep=`${sn}/_root.md`,an=`${Pd}/skills`,Bn=`${Pd}/workflows`,tp=`${Pd}/antigravity/mcp_config.json`,Kn=".gemini/antigravity/GEMINI.md",Wn=".gemini/antigravity/skills",rp=".gemini/antigravity/workflows",zl=".gemini/antigravity/mcp_config.json",hR=".agentsmesh/rules/_root.md",ia=".agentsmesh/rules",Dd=".agentsmesh/commands",Zw=".agentsmesh/mcp.json";});async function yR(e,t,r="project"){if(r==="global"){e.set(Kn,`${O}/_root.md`);for(let n of await E(t,Wn))G(e,C(t,n),Wn);e.set(zl,".agentsmesh/mcp.json");return}e.set(Lr,`${O}/_root.md`),e.set(ep,`${O}/_root.md`);for(let n of await E(t,sn)){let o=C(t,n);o===Lr||o===ep||F(e,o,O,".md");}for(let n of await E(t,Bn))F(e,C(t,n),ce,".md");for(let n of await E(t,an))G(e,C(t,n),an);}var eb=d(()=>{Le();aa();_e();s(yR,"buildAntigravityImportPaths");});var _t,Nd,Xt,Cr,qt,Hn,zn,vd,Vo,Jo,Vn,Yo,RR,_R,SR,kR,la=d(()=>{_t="augment-code",Nd=".augment",Xt=`${Nd}/rules`,Cr=`${Nd}/commands`,qt=`${Nd}/skills`,Hn=`${Nd}/settings.json`,zn=".augmentignore",vd=".augment",Vo=`${vd}/rules`,Jo=`${vd}/commands`,Vn=`${vd}/skills`,Yo=`${vd}/settings.json`,RR=".agentsmesh/rules",_R=".agentsmesh/mcp.json",SR=".agentsmesh/hooks.yaml",kR=".agentsmesh/ignore";});async function IR(e,t,r="project"){if(r==="global"){for(let n of await E(t,Vo))F(e,C(t,n),O,".md");for(let n of await E(t,Jo))F(e,C(t,n),ce,".md");for(let n of await E(t,Vn))G(e,C(t,n),Vn);e.set(Yo,".agentsmesh/mcp.json");return}for(let n of await E(t,Xt))F(e,C(t,n),O,".md");for(let n of await E(t,Cr))F(e,C(t,n),ce,".md");for(let n of await E(t,qt))G(e,C(t,n),qt);e.set(Hn,".agentsmesh/mcp.json"),e.set(zn,".agentsmesh/ignore");}var tb=d(()=>{Le();la();_e();s(IR,"buildAugmentCodeImportPaths");});var rb,Xo,ti,np,op,sp,ip,ap,qo,LR,lp,Vl,cp,mp,Fd,Md,CR,pp,ER,ca,nb,Qo=d(()=>{rb="claude-code",Xo="CLAUDE.md",ti=".claude/CLAUDE.md",np=".claude/rules",op=".claude/commands",sp=".claude/agents",ip=".claude/skills",ap=".claude/settings.json",qo=".claude/hooks.json",LR=".claude/output-styles",lp=".claudeignore",Vl=".mcp.json",cp=".claude.json",mp=".agentsmesh/rules",Fd=".agentsmesh/commands",Md=".agentsmesh/agents",CR=".agentsmesh/skills",pp=".agentsmesh/mcp.json",ER=".agentsmesh/permissions.yaml",ca=".agentsmesh/hooks.yaml",nb=".agentsmesh/ignore";});async function wR(e,t,r="project"){if(e.set(".claude/CLAUDE.md",`${O}/_root.md`),e.set(qo,ca),r==="project"&&e.set("CLAUDE.md",`${O}/_root.md`),r==="global")for(let n of await E(t,".agents/skills"))G(e,C(t,n),".agents/skills");for(let n of await E(t,".claude/rules"))F(e,C(t,n),O,".md");for(let n of await E(t,".claude/commands"))F(e,C(t,n),ce,".md");for(let n of await E(t,".claude/agents"))F(e,C(t,n),Ae,".md");for(let n of await E(t,".claude/skills"))G(e,C(t,n),".claude/skills");}var ob=d(()=>{Le();Qo();_e();s(wR,"buildClaudeCodeImportPaths");});var ri,Zo,ma,es,sb,St,ts,ni,pa,ua,da,fa,bR,oi,$d,OR,AR,ib,ab,ln=d(()=>{ri="cline",Zo=".clinerules",ma=".clineignore",es=".cline/cline_mcp_settings.json",sb=".cline/mcp_settings.json",St=".cline/skills",ts=".clinerules/workflows",ni="AGENTS.md",pa=".clinerules/hooks",ua="Documents/Cline/Rules",da="Documents/Cline/Workflows",fa="Documents/Cline/Hooks",bR=".agentsmesh/hooks.yaml",oi=".agentsmesh/rules",$d=".agentsmesh/commands",OR=".agentsmesh/ignore",AR=".agentsmesh/mcp.json",ib=".agentsmesh/agents",ab=".agentsmesh/skills";});async function xR(e,t,r="project"){if(r==="global"){for(let n of await E(t,ua))F(e,C(t,n),O,".md");for(let n of await E(t,da))F(e,C(t,n),ce,".md");for(let n of await E(t,St))G(e,C(t,n),St);e.set(es,".agentsmesh/mcp.json");return}e.set(".clinerules/_root.md",`${O}/_root.md`);for(let n of await E(t,".clinerules")){let o=C(t,n);!o.endsWith(".md")||o.includes("/workflows/")||basename(o)==="_root.md"||F(e,o,O,".md");}for(let n of await E(t,".clinerules/workflows"))F(e,C(t,n),ce,".md");for(let n of await E(t,".cline/skills"))G(e,C(t,n),".cline/skills");}var lb=d(()=>{Le();ln();_e();s(xR,"buildClineImportPaths");});async function TR(e,t,r="project"){if(r==="global"?(e.set(".codex/AGENTS.md",`${O}/_root.md`),e.set(".codex/AGENTS.override.md",`${O}/_root.md`)):(e.set("AGENTS.md",`${O}/_root.md`),e.set("codex.md",`${O}/_root.md`),await Td(e,t)),r==="project")for(let n of await E(t,".codex/instructions"))F(e,C(t,n),O,".md");for(let n of await E(t,".codex/rules")){let o=C(t,n);o.endsWith(".rules")?F(e,o,O,".rules"):o.endsWith(".md")&&F(e,o,O,".md");}for(let n of await E(t,".codex/agents"))F(e,C(t,n),Ae,".toml");for(let n of await E(t,".agents/skills"))G(e,C(t,n),".agents/skills");}var cb=d(()=>{Le();_e();s(TR,"buildCodexCliImportPaths");});var Jl,cn,Jn,PR,Gd,rs,DR,Qt,Yl,up,jd,Ud,NR,Yn=d(()=>{Jl="continue",cn=".continue/rules",Jn=".continue/prompts",PR=".continue/mcpServers",Gd=`${PR}/agentsmesh.json`,rs=`${cn}/general.md`,DR=`${cn}/_root.md`,Qt=".continue/skills",Yl=".continue/AGENTS.md",up=".continue/config.yaml",jd=".agentsmesh/rules",Ud=".agentsmesh/commands",NR=".agentsmesh/mcp.json";});async function vR(e,t,r="project"){e.set(rs,`${O}/_root.md`),e.set(DR,`${O}/_root.md`);for(let n of await E(t,".continue/rules")){let o=C(t,n);o===rs||o===DR||F(e,o,O,".md");}for(let n of await E(t,".continue/prompts"))e.set(C(t,n),`${ce}/${basename(n,".md")}.md`);for(let n of await E(t,".continue/skills"))G(e,C(t,n),".continue/skills");if(r==="global")for(let n of await E(t,".agents/skills"))G(e,C(t,n),".agents/skills");}var mb=d(()=>{Le();Yn();_e();s(vR,"buildContinueImportPaths");});function LY(e,t){if(t.endsWith(".instructions.md")){e.set(t,`${O}/${basename(t,".instructions.md")}.md`);return}F(e,t,O,".md");}async function FR(e,t){e.set(".github/copilot-instructions.md",`${O}/_root.md`);for(let r of await E(t,".github/copilot"))e.set(C(t,r),`${O}/${basename(r,".instructions.md")}.md`);for(let r of await E(t,".github/instructions"))LY(e,C(t,r));for(let r of await E(t,".github/prompts"))e.set(C(t,r),`${ce}/${basename(r,".prompt.md")}.md`);for(let r of await E(t,".github/agents"))e.set(C(t,r),`${Ae}/${basename(r,".agent.md")}.md`);for(let r of await E(t,".github/skills"))G(e,C(t,r),".github/skills");}var pb=d(()=>{Le();_e();s(LY,"addCopilotInstructionMapping");s(FR,"buildCopilotImportPaths");});var Er,wr,lt,Zt,ns,ub,Kd,er,ga,Wd,Hd,zd,Xl=d(()=>{Er="crush",wr="CRUSH.md",lt=".crush/skills",Zt="crush.json",ns=".crushignore",ub=".config/crush",Kd=`${ub}/crush.json`,er=".config/crush/skills",ga=`${ub}/CRUSH.md`,Wd=".agentsmesh/rules",Hd=".agentsmesh/ignore",zd=".agentsmesh/mcp.json";});async function MR(e,t,r="project"){if(r==="global"){for(let n of await E(t,er))G(e,C(t,n),er);return}e.set(wr,`${Wd}/_root.md`),e.set(Zt,zd),e.set(ns,Hd);for(let n of await E(t,lt))G(e,C(t,n),lt);}var db=d(()=>{Le();Xl();s(MR,"buildCrushImportPaths");});var fb,si,gb,br,os,Or,Ar,kt,tr,Xn,Vd,mn,$R,CY,ql,pn,qn,ii,ai,hb,Ql,GR,dp,jR,Ye=d(()=>{fb="cursor",si="AGENTS.md",gb=".cursorrules",br=".cursor/rules",os=`${br}/general.mdc`,Or=".cursor/commands",Ar=".cursor/agents",kt=".cursor/skills",tr=".cursor/mcp.json",Xn=".cursor/hooks.json",Vd=".cursor/settings.json",mn=".cursorignore",$R=".cursorindexingignore",CY=".agentsmesh-exports/cursor",ql=`${CY}/user-rules.md`,pn=".cursor/AGENTS.md",qn=".agentsmesh/rules",ii=".agentsmesh/commands",ai=".agentsmesh/agents",hb=".agentsmesh/skills",Ql=".agentsmesh/mcp.json",GR=".agentsmesh/permissions.yaml",dp=".agentsmesh/hooks.yaml",jR=".agentsmesh/ignore";});async function UR(e,t,r="project"){if(r==="global"){e.set(tr,".agentsmesh/mcp.json"),e.set(".cursor/AGENTS.md",`${O}/_root.md`);for(let n of await E(t,".cursor/rules"))F(e,C(t,n),O,".mdc");for(let n of await E(t,".cursor/commands"))F(e,C(t,n),ce,".md");for(let n of await E(t,".cursor/agents"))F(e,C(t,n),Ae,".md");for(let n of await E(t,".cursor/skills"))G(e,C(t,n),".cursor/skills");return}e.set("AGENTS.md",`${O}/_root.md`);for(let n of await E(t,".cursor/rules"))F(e,C(t,n),O,".mdc");for(let n of await E(t,".cursor/commands"))F(e,C(t,n),ce,".md");for(let n of await E(t,".cursor/agents"))F(e,C(t,n),Ae,".md");for(let n of await E(t,".cursor/skills"))G(e,C(t,n),".cursor/skills");}var yb=d(()=>{Le();Ye();_e();s(UR,"buildCursorImportPaths");});var Qn,xr,It,ss,is,un,ha,Rb,Zl=d(()=>{Qn="deepagents-cli",xr=".deepagents/AGENTS.md",It=".deepagents/skills",ss=".mcp.json",is=".deepagents/AGENTS.md",un=".deepagents/skills",ha=".deepagents/.mcp.json",Rb=".agentsmesh/rules";});async function BR(e,t,r="project"){if(r==="global"){e.set(is,`${O}/_root.md`);for(let n of await E(t,un))G(e,C(t,n),un);e.set(ha,".agentsmesh/mcp.json");return}e.set(xr,`${O}/_root.md`);for(let n of await E(t,It))G(e,C(t,n),It);e.set(ss,".agentsmesh/mcp.json");}var _b=d(()=>{Le();Zl();_e();s(BR,"buildDeepagentsCliImportPaths");});var Tr,Pr,jt,Zn,eo,as,to,ya,li,Sb,Ra=d(()=>{Tr="factory-droid",Pr="AGENTS.md",jt=".factory/skills",Zn=".factory/droids",eo=".factory/mcp.json",as=".factory/AGENTS.md",to=".factory/skills",ya=".factory/droids",li=".factory/mcp.json",Sb=".agentsmesh/rules";});async function KR(e,t,r="project"){if(r==="global"){e.set(as,`${O}/_root.md`);for(let n of await E(t,ya))F(e,C(t,n),Ae,".md");for(let n of await E(t,to))G(e,C(t,n),to);e.set(li,".agentsmesh/mcp.json");return}e.set(Pr,`${O}/_root.md`);for(let n of await E(t,Zn))F(e,C(t,n),Ae,".md");for(let n of await E(t,jt))G(e,C(t,n),jt);e.set(eo,".agentsmesh/mcp.json");}var kb=d(()=>{Le();Ra();_e();s(KR,"buildFactoryDroidImportPaths");});async function WR(e,t){for(let r of await E(t,".gemini/rules"))F(e,C(t,r),O,".md");for(let r of await E(t,".gemini/commands")){let n=C(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,`${ce}/${c}.md`);}for(let r of await E(t,".gemini/agents"))F(e,C(t,r),Ae,".md");for(let r of await E(t,".gemini/skills"))G(e,C(t,r),".gemini/skills");}var Ib=d(()=>{Le();_e();s(WR,"buildGeminiCliImportPaths");});var ro,Dr,Ut,ls,Lb,cs,_a,Nr,Cb,Eb,ec=d(()=>{ro="goose",Dr=".goosehints",Ut=".agents/skills",ls=".gooseignore",Lb=".config/goose",cs=`${Lb}/.goosehints`,_a=`${Lb}/.gooseignore`,Nr=".agents/skills",Cb=".agentsmesh/rules",Eb=".agentsmesh/ignore";});async function HR(e,t,r="project"){if(r==="global"){e.set(cs,`${O}/_root.md`);for(let n of await E(t,Nr))G(e,C(t,n),Nr);e.set(_a,".agentsmesh/ignore");return}e.set(Dr,`${O}/_root.md`);for(let n of await E(t,Ut))G(e,C(t,n),Ut);e.set(ls,".agentsmesh/ignore");}var wb=d(()=>{Le();ec();_e();s(HR,"buildGooseImportPaths");});var ms,dn,bb,tc=d(()=>{ms="jules",dn="AGENTS.md",bb=".agentsmesh/rules";});async function zR(e,t,r="project"){r!=="global"&&e.set(dn,`${O}/_root.md`);}var Ob=d(()=>{tc();_e();s(zR,"buildJulesImportPaths");});var Sa,ci,Jd,Ab,no,xb,EY,fp,ka,gp,rc,nc,hp,yp,Rp,_p,Sp,wY,Yd,Ia,Tb,VR,Xd,Pb,Db,Nb,vb,oc=d(()=>{Sa="junie",ci=".junie",Jd=`${ci}/guidelines.md`,Ab=`${ci}/ci-guidelines.md`,no=`${ci}/AGENTS.md`,xb="AGENTS.md",EY=`${ci}/mcp`,fp=`${EY}/mcp.json`,ka=`${ci}/skills`,gp=`${ci}/rules`,rc=`${ci}/commands`,nc=`${ci}/agents`,hp=".aiignore",yp=".junie",Rp=`${yp}/skills`,_p=`${yp}/agents`,Sp=`${yp}/commands`,wY=`${yp}/mcp`,Yd=`${wY}/mcp.json`,Ia=`${yp}/AGENTS.md`,Tb=".agents/skills",VR=".agentsmesh/rules/_root.md",Xd=".agentsmesh/rules",Pb=".agentsmesh/commands",Db=".agentsmesh/agents",Nb=".agentsmesh/mcp.json",vb=".agentsmesh/ignore";});async function JR(e,t){e.set(Jd,`${O}/_root.md`),e.set(no,`${O}/_root.md`),e.set("AGENTS.md",`${O}/_root.md`);for(let r of await E(t,".junie/rules"))F(e,C(t,r),O,".md");for(let r of await E(t,".junie/commands"))F(e,C(t,r),ce,".md");for(let r of await E(t,".junie/agents"))F(e,C(t,r),Ae,".md");for(let r of await E(t,".junie/skills"))G(e,C(t,r),".junie/skills");}var Fb=d(()=>{Le();oc();_e();s(JR,"buildJunieImportPaths");});var Tt,kp,oo,ps,us,ds,fn,mi,sc,qd,La,ic,Ca,Ip,Qd,ac,pi,Ea,wa,ba,ui,lc,Zd,Mb,di,cc,Oa,$b,Gb,Aa=d(()=>{Tt="kilo-code",kp=".kilo",oo="AGENTS.md",ps=`${kp}/rules`,us=`${kp}/commands`,ds=`${kp}/agents`,fn=`${kp}/skills`,mi=`${kp}/mcp.json`,sc=".kilocodeignore",qd=".kilocode",La=`${qd}/rules`,ic=`${qd}/workflows`,Ca=`${qd}/skills`,Ip=`${qd}/mcp.json`,Qd=".kilocodemodes",ac=".kilo",pi=`${ac}/AGENTS.md`,Ea=`${ac}/rules`,wa=`${ac}/commands`,ba=`${ac}/agents`,ui=`${ac}/skills`,lc=`${ac}/mcp.json`,Zd=".kilocodeignore",Mb=".agents/skills",di=".agentsmesh/rules",cc=".agentsmesh/commands",Oa=".agentsmesh/agents",$b=".agentsmesh/mcp.json",Gb=".agentsmesh/ignore";});async function YR(e,t,r="project"){if(r==="global"){e.set(pi,`${O}/_root.md`);for(let n of await E(t,Ea))F(e,C(t,n),O,".md");for(let n of await E(t,wa))F(e,C(t,n),ce,".md");for(let n of await E(t,ba))F(e,C(t,n),Ae,".md");for(let n of await E(t,ui))G(e,C(t,n),ui);e.set(lc,".agentsmesh/mcp.json");return}e.set(oo,`${O}/_root.md`);for(let n of await E(t,ps))F(e,C(t,n),O,".md");for(let n of await E(t,us))F(e,C(t,n),ce,".md");for(let n of await E(t,ds))F(e,C(t,n),Ae,".md");for(let n of await E(t,fn))G(e,C(t,n),fn);e.set(mi,".agentsmesh/mcp.json");for(let n of await E(t,La)){let o=C(t,n);if(basename(o)==="00-root.md"){e.set(o,`${O}/_root.md`);continue}F(e,o,O,".md");}for(let n of await E(t,ic))F(e,C(t,n),ce,".md");for(let n of await E(t,Ca))G(e,C(t,n),Ca);e.set(Ip,".agentsmesh/mcp.json");}var jb=d(()=>{Le();Aa();_e();s(YR,"buildKiloCodeImportPaths");});var rr,gn,Lp,hn,Pt,yn,fi,OY,mc,pc,xa,Rn,gi,Ta,Cp,Ep,Ub,XR,qR,Bb,Kb,QR,Wb,uc=d(()=>{rr="kiro",gn="AGENTS.md",Lp=".kiro",hn=`${Lp}/steering`,Pt=`${Lp}/skills`,yn=`${Lp}/agents`,fi=`${Lp}/hooks`,OY=`${Lp}/settings`,mc=`${OY}/mcp.json`,pc=".kiroignore",xa=".kiro/steering",Rn=".kiro/steering/AGENTS.md",gi=".kiro/skills",Ta=".kiro/agents",Cp=".kiro/settings/mcp.json",Ep=".kiro/settings/kiroignore",Ub=".agents/skills",XR=".agentsmesh/rules/_root.md",qR=".agentsmesh/rules",Bb=".agentsmesh/agents",Kb=".agentsmesh/mcp.json",QR=".agentsmesh/hooks.yaml",Wb=".agentsmesh/ignore";});async function ZR(e,t,r="project"){if(r==="global"){e.set(Rn,`${O}/_root.md`);for(let n of await E(t,xa)){let o=C(t,n);o!==Rn&&F(e,o,O,".md");}for(let n of await E(t,gi))G(e,C(t,n),gi);for(let n of await E(t,Ta))F(e,C(t,n),Ae,".md");return}e.set(gn,`${O}/_root.md`);for(let n of await E(t,hn))F(e,C(t,n),O,".md");for(let n of await E(t,Pt))G(e,C(t,n),Pt);for(let n of await E(t,yn))F(e,C(t,n),Ae,".md");}var Hb=d(()=>{Le();uc();_e();s(ZR,"buildKiroImportPaths");});var _n,ef,so,fs,gs,hs,Sn,io,dc,hi,Pa,Da,Na,yi,Ri,zb,wp,tf,rf,e_,va=d(()=>{_n="opencode",ef=".opencode",so="AGENTS.md",fs=`${ef}/rules`,gs=`${ef}/commands`,hs=`${ef}/agents`,Sn=`${ef}/skills`,io="opencode.json",dc=".config/opencode",hi=`${dc}/AGENTS.md`,Pa=`${dc}/rules`,Da=`${dc}/commands`,Na=`${dc}/agents`,yi=`${dc}/skills`,Ri=`${dc}/opencode.json`,zb=".agents/skills",wp=".agentsmesh/rules",tf=".agentsmesh/commands",rf=".agentsmesh/agents",e_=".agentsmesh/mcp.json";});async function t_(e,t,r="project"){if(r==="global"){e.set(hi,`${O}/_root.md`);for(let n of await E(t,Pa))F(e,C(t,n),O,".md");for(let n of await E(t,Da))F(e,C(t,n),ce,".md");for(let n of await E(t,Na))F(e,C(t,n),Ae,".md");for(let n of await E(t,yi))G(e,C(t,n),yi);e.set(Ri,".agentsmesh/mcp.json");return}e.set(so,`${O}/_root.md`);for(let n of await E(t,fs))F(e,C(t,n),O,".md");for(let n of await E(t,gs))F(e,C(t,n),ce,".md");for(let n of await E(t,hs))F(e,C(t,n),Ae,".md");for(let n of await E(t,Sn))G(e,C(t,n),Sn);e.set(io,".agentsmesh/mcp.json");}var Vb=d(()=>{Le();va();_e();s(t_,"buildOpencodeImportPaths");});var ao,vr,ct,Jb,ys,Fr,Yb,fc=d(()=>{ao="pi-agent",vr="AGENTS.md",ct=".pi/skills",Jb=".pi/agent",ys=`${Jb}/AGENTS.md`,Fr=`${Jb}/skills`,Yb=".agentsmesh/rules";});async function r_(e,t,r="project"){if(r==="global"){e.set(ys,`${O}/_root.md`);for(let n of await E(t,Fr))G(e,C(t,n),Fr);return}e.set(vr,`${O}/_root.md`);for(let n of await E(t,ct))G(e,C(t,n),ct);}var n_=d(()=>{Le();fc();_e();s(r_,"buildPiAgentImportPaths");});var kn,Mr,Rs,lo,co,nr,_i,Si,_s,Fa,ki,mo,Ii,o_,Xb,qb,gc=d(()=>{kn="qwen-code",Mr="QWEN.md",Rs=".qwen/rules",lo=".qwen/commands",co=".qwen/agents",nr=".qwen/skills",_i=".qwen/settings.json",Si=".qwenignore",_s=".qwen/QWEN.md",Fa=".qwen/settings.json",ki=".qwen/commands",mo=".qwen/skills",Ii=".qwen/agents",o_=".agentsmesh/rules",Xb=".agentsmesh/commands",qb=".agentsmesh/agents";});async function s_(e,t,r="project"){if(r==="global"){e.set(_s,`${O}/_root.md`),e.set(Fa,".agentsmesh/mcp.json");for(let n of await E(t,ki))F(e,C(t,n),ce,".md");for(let n of await E(t,Ii))F(e,C(t,n),Ae,".md");for(let n of await E(t,mo))G(e,C(t,n),mo);return}e.set(Mr,`${O}/_root.md`),e.set(_i,".agentsmesh/mcp.json"),e.set(Si,".agentsmesh/ignore");for(let n of await E(t,Rs))F(e,C(t,n),O,".md");for(let n of await E(t,lo))F(e,C(t,n),ce,".md");for(let n of await E(t,co))F(e,C(t,n),Ae,".md");for(let n of await E(t,nr))G(e,C(t,n),nr);}var Qb=d(()=>{Le();_e();gc();s(s_,"buildQwenCodeImportPaths");});var po,In,Bt,Zb,hc=d(()=>{po="replit-agent",In="replit.md",Bt=".agents/skills",Zb=".agentsmesh/rules";});async function i_(e,t,r="project"){if(r!=="global"){e.set(In,`${O}/_root.md`);for(let n of await E(t,Bt))G(e,C(t,n),Bt);}}var a_=d(()=>{Le();hc();_e();s(i_,"buildReplitAgentImportPaths");});var Li,Ma,Ln,bp,Ss,ks,uo,Op,Ap,yc,xp,nf,Ci,Ei,Is,$a,Tp,wi,eO,Ga,of,tO,rO,ja=d(()=>{Li="roo-code",Ma=".roo",Ln=`${Ma}/rules/00-root.md`,bp=".roorules",Ss=`${Ma}/rules`,ks=`${Ma}/commands`,uo=`${Ma}/skills`,Op=`${Ma}/mcp.json`,Ap=".rooignore",yc=".roomodes",xp="settings/custom_modes.yaml",nf=".roo",Ci=`${nf}/rules`,Ei=`${nf}/commands`,Is=`${nf}/skills`,$a="mcp_settings.json",Tp=".rooignore",wi=`${nf}/AGENTS.md`,eO=".agents/skills",Ga=".agentsmesh/rules",of=".agentsmesh/commands",tO=".agentsmesh/mcp.json",rO=".agentsmesh/ignore";});async function l_(e,t,r="project"){if(r==="global"){e.set(wi,`${O}/_root.md`);for(let n of await E(t,Ci))F(e,C(t,n),O,".md");for(let n of await E(t,Ei))F(e,C(t,n),ce,".md");for(let n of await E(t,Is))G(e,C(t,n),Is);e.set($a,".agentsmesh/mcp.json");return}e.set(Ln,`${O}/_root.md`),e.set(bp,`${O}/_root.md`);for(let n of await E(t,Ss)){let o=C(t,n);o!==Ln&&F(e,o,O,".md");}for(let n of await E(t,".roo")){let o=C(t,n);/^\.roo\/rules-[^/]+\/.+\.md$/.test(o)&&F(e,o,O,".md");}for(let n of await E(t,ks))F(e,C(t,n),ce,".md");for(let n of await E(t,uo))G(e,C(t,n),uo);}var nO=d(()=>{Le();ja();_e();s(l_,"buildRooCodeImportPaths");});var fo,$r,oO,mt,Ls,sO,Cs,or,Rc,iO,_c=d(()=>{fo="rovodev",$r="AGENTS.md",oO=".rovodev",mt=`${oO}/skills`,Ls=`${oO}/mcp.json`,sO=".rovodev",Cs=".rovodev/AGENTS.md",or=".rovodev/skills",Rc=".rovodev/mcp.json",iO=".agentsmesh/rules";});async function c_(e,t,r="project"){if(r==="global"){e.set(Cs,`${O}/_root.md`);for(let n of await E(t,or))G(e,C(t,n),or);e.set(Rc,".agentsmesh/mcp.json");return}e.set($r,`${O}/_root.md`);for(let n of await E(t,mt))G(e,C(t,n),mt);e.set(Ls,".agentsmesh/mcp.json");}var aO=d(()=>{Le();_c();_e();s(c_,"buildRovodevImportPaths");});var Gr,sf,sr,ir,jr,Ua,Sc,Es,Ur,Cn,Pp,lO,Dp,cO,mO,kc=d(()=>{Gr="trae",sf=".trae",sr=`${sf}/rules`,ir=`${sr}/project_rules.md`,jr=`${sf}/skills`,Ua=`${sf}/mcp.json`,Sc=`${sf}/.ignore`,Es=".trae/user_rules",Ur=".trae/user_rules/rules.md",Cn=".trae/skills",Pp=".trae/mcp.json",lO=".agents/skills",Dp=".agentsmesh/rules",cO=".agentsmesh/mcp.json",mO=".agentsmesh/ignore";});async function m_(e,t,r="project"){if(r==="global"){e.set(Ur,`${O}/_root.md`);for(let n of await E(t,Es)){let o=C(t,n);o!==Ur&&F(e,o,O,".md");}for(let n of await E(t,Cn))G(e,C(t,n),Cn);return}e.set(ir,`${O}/_root.md`);for(let n of await E(t,sr)){let o=C(t,n);o!==ir&&F(e,o,O,".md");}for(let n of await E(t,jr))G(e,C(t,n),jr);}var pO=d(()=>{Le();kc();_e();s(m_,"buildTraeImportPaths");});var go,En,p_,Lt,bi,ar,uO,Ic=d(()=>{go="warp",En="AGENTS.md",p_="WARP.md",Lt=".warp/skills",bi=".mcp.json",ar=".warp/skills",uO=".agentsmesh/rules";});async function u_(e,t,r="project"){if(r==="global"){for(let n of await E(t,ar))G(e,C(t,n),ar);return}e.set(En,`${O}/_root.md`);for(let n of await E(t,Lt))G(e,C(t,n),Lt);e.set(bi,".agentsmesh/mcp.json");}var dO=d(()=>{Le();Ic();_e();s(u_,"buildWarpImportPaths");});async function d_(e,t){e.set("AGENTS.md",`${O}/_root.md`),e.set(".windsurfrules",`${O}/_root.md`),await Td(e,t);for(let r of await E(t,".windsurf/rules"))F(e,C(t,r),O,".md");for(let r of await E(t,".windsurf/workflows"))F(e,C(t,r),ce,".md");for(let r of await E(t,".windsurf/skills"))G(e,C(t,r),".windsurf/skills");}var fO=d(()=>{Le();_e();s(d_,"buildWindsurfImportPaths");});var wn,ho,AY,yo,gO,Ba=d(()=>{wn=".rules",ho=".zed/settings.json",AY=".config/zed",yo=`${AY}/settings.json`,gO=".agentsmesh/rules";});async function f_(e,t,r="project"){if(r==="global"){e.set(yo,".agentsmesh/mcp.json");return}e.set(wn,`${O}/_root.md`),e.set(ho,".agentsmesh/mcp.json");}var hO=d(()=>{Ba();_e();s(f_,"buildZedImportPaths");});var yO=d(()=>{Vw();Xw();Qw();eb();tb();ob();lb();cb();mb();pb();db();yb();_b();kb();Ib();wb();Ob();Fb();jb();Hb();Vb();n_();Qb();a_();nO();aO();pO();dO();fO();hO();});var Ce=d(()=>{yO();});var xY,TY,PY,RO,xd,lR=d(()=>{we();ue();JE();Dw();Gw();Kw();Ce();Bl();xY={name:Gn,primaryRootInstructionPath:yr,generateRules:KE,generateCommands:HE,generateAgents:zE,generateSkills:WE,generateIgnore:VE,importFrom:Pw},TY={rootInstructionPath:yr,skillDir:ht,managedOutputs:{dirs:[ht],files:[yr,Bo]},paths:{rulePath(e){return yr},commandPath(e){return `${ht}/${J(e)}/SKILL.md`},agentPath(e){return `${ht}/${K(e)}/SKILL.md`}}},PY={rootInstructionPath:Ko,skillDir:Rr,managedOutputs:{dirs:[Rr],files:[Ko,ta]},rewriteGeneratedPath(e){return e===yr?Ko:e===Bo?ta:e.startsWith(`${ht}/`)?e.replace(`${ht}/`,`${Rr}/`):e},paths:{rulePath(e){return Ko},commandPath(e){return `${Rr}/${J(e)}/SKILL.md`},agentPath(e){return `${Rr}/${K(e)}/SKILL.md`}}},RO={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"native",permissions:"none"},xd={id:Gn,metadata:{displayName:"Aider",category:"cli",officialUrl:"https://aider.chat",shortDescription:"Open-source terminal AI pair programmer"},generators:xY,capabilities:RO,emptyImportMessage:"No Aider config found (CONVENTIONS.md, .aider/skills, or .aiderignore).",lintRules:$w,lint:{hooks:jw,permissions:Uw,mcp:Bw},supportsConversion:{commands:true,agents:true},project:TY,globalSupport:{capabilities:RO,detectionPaths:[Ko,ta,Rr],layout:PY},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[yr],global:[Ko]},canonicalDir:UE,canonicalRootFilename:"_root.md",markAsRoot:true},ignore:{feature:"ignore",mode:"flatFile",source:{project:[Bo],global:[ta]},canonicalDir:".agentsmesh",canonicalFilename:BE}},buildImportPaths:uR,detectionPaths:[yr,Bo]};});function _O(e){let t=[];for(let r of e.rules){if(r.targets.length>0&&!r.targets.includes(ra))continue;let n=r.root?"_root":basename(r.source,".md");t.push({path:`${on}/${n}.md`,content:r.body.trim()});}return t}function SO(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:na,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}var kO=d(()=>{Zm();s(_O,"generateRules");s(SO,"generateMcp");});async function IO(e,t){let r=t?.scope??"project";return q(af,e,r)}var LO=d(()=>{be();g_();s(IO,"importFromAmazonQ");});function CO(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:ra}))}var EO=d(()=>{Ie();Zm();s(CO,"lintRules");});var NY,vY,FY,MY,af,g_=d(()=>{kO();LO();EO();Ce();Zm();NY={name:ra,generateRules:_O,generateMcp:SO,importFrom:IO},vY={managedOutputs:{dirs:[on],files:[na]},paths:{rulePath(e,t){return `${on}/${e}.md`},commandPath(e,t){return null},agentPath(e,t){return null}}},FY={managedOutputs:{dirs:[ei],files:[Qm]},rewriteGeneratedPath(e){return e.startsWith(`${on}/`)?e.replace(`${on}/`,`${ei}/`):e===na?Qm:e},paths:{rulePath(e,t){return `${ei}/${e}.md`},commandPath(e,t){return null},agentPath(e,t){return null}}},MY={rules:"native",additionalRules:"none",commands:"none",agents:"none",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},af={id:ra,metadata:{displayName:"Amazon Q Developer",category:"ide",officialUrl:"https://aws.amazon.com/q/developer",shortDescription:"AWS AI coding assistant"},generators:NY,capabilities:{rules:"native",additionalRules:"none",commands:"none",agents:"none",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},emptyImportMessage:"No Amazon Q Developer config found (.amazonq/rules/ or .amazonq/mcp.json).",lintRules:CO,project:vY,globalSupport:{capabilities:MY,detectionPaths:[ei,Qm],layout:FY},importer:{rules:{feature:"rules",mode:"directory",source:{project:[on],global:[ei]},canonicalDir:Jw,extensions:[".md"],preset:"rule"},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[na],global:[Qm]},canonicalDir:".agentsmesh",canonicalFilename:Yw}},buildImportPaths:dR,detectionPaths:[on,na]};});function wO(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=ae(n,r);return o?[{path:kr,content:o}]:[]}function bO(e){return ie(e,Rt)}function OO(e){return e.commands.map(t=>({path:`${Rt}/${J(t.name)}/SKILL.md`,content:$e(t)}))}function AO(e){return e.agents.map(t=>({path:`${Rt}/${K(t.name)}/SKILL.md`,content:De(t)}))}var xO=d(()=>{se();Ue();ue();we();oa();s(wO,"generateRules");s(bO,"generateSkills");s(OO,"generateCommands");s(AO,"generateAgents");});function de(e,t,r){let n=r.some(o=>$Y.includes(o));return e.startsWith(`${t}/`)&&!n?`.agents/skills/${e.slice(t.length+1)}`:null}var $Y,pt=d(()=>{$Y=["amp","antigravity","codex-cli","goose","replit-agent"];s(de,"mirrorSkillsToAgents");});async function PO(e,t,r){let n=await k(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 Je(e,TO,l),r.push({fromTool:"amp",fromPath:t,toPath:TO,feature:"mcp"}));}var TO,DO=d(()=>{A();nn();oa();TO=".agentsmesh/mcp.json";s(PO,"importAmpMcp");});async function NO(e,t={}){let r=t.scope??"project",n=[],o=await z("amp",e,r);return n.push(...await q(lf,e,r,{normalize:o})),await oe(e,r==="global"?Ir:Rt,"amp",n,o),await PO(e,r==="global"?zo:Un,n),n}var vO=d(()=>{ge();se();be();DO();oa();h_();s(NO,"importFromAmp");});function FO(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:"amp"}))}var MO=d(()=>{Ie();oa();s(FO,"lintRules");});function $O(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[v(".agentsmesh/hooks.yaml","amp","Amp has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function GO(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?[]:[v(".agentsmesh/permissions.yaml","amp","Amp permissions are managed via amp.permissions in settings.json; canonical permissions are not projected.")]}function jO(e){return e.ignore.length===0?[]:[v(".agentsmesh/ignore","amp","Amp has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}var UO=d(()=>{Oe();s($O,"lintHooks");s(GO,"lintPermissions");s(jO,"lintIgnore");});function KY(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"]),JSON.stringify(r,null,2)}var jY,UY,BY,BO,lf,h_=d(()=>{we();ue();xO();pt();vO();MO();UO();Ce();oa();jY={name:"amp",primaryRootInstructionPath:kr,generateRules:wO,generateCommands:OO,generateAgents:AO,generateSkills:bO,importFrom:NO},UY={rootInstructionPath:kr,skillDir:Rt,managedOutputs:{dirs:[Rt],files:[kr,Un]},paths:{rulePath(e){return kr},commandPath(e){return `${Rt}/${J(e)}/SKILL.md`},agentPath(e){return `${Rt}/${K(e)}/SKILL.md`}}},BY={rootInstructionPath:Ho,skillDir:Ir,managedOutputs:{dirs:[Ir],files:[Ho,zo]},rewriteGeneratedPath(e){return e===kr?Ho:e===Un?zo:e.startsWith(`${Rt}/`)?e.replace(`${Rt}/`,`${Ir}/`):e},mirrorGlobalPath(e,t){return de(e,Ir,t)},paths:{rulePath(e){return Ho},commandPath(e){return `${Ir}/${J(e)}/SKILL.md`},agentPath(e){return `${Ir}/${K(e)}/SKILL.md`}}},BO={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"};s(KY,"mergeAmpSettings");lf={id:"amp",metadata:{displayName:"Amp",category:"cli",officialUrl:"https://ampcode.com",shortDescription:"Sourcegraph's coding agent"},generators:jY,capabilities:BO,emptyImportMessage:"No Amp config found (AGENTS.md, .agents/skills, or .amp/settings.json).",lintRules:FO,lint:{hooks:$O,permissions:GO,ignore:jO},supportsConversion:{commands:true,agents:true},project:UY,globalSupport:{capabilities:BO,detectionPaths:[Ho,zo],layout:BY},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[kr],global:[Ho]},canonicalDir:qw,canonicalRootFilename:"_root.md",markAsRoot:true}},emitScopedSettings(e,t,r){return r.has("mcp")?!e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Un,content:JSON.stringify({"amp.mcpServers":e.mcp.mcpServers},null,2)}]:[]},mergeGeneratedOutputContent(e,t,r,n){return n===Un||n===zo?KY(e,r):null},sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:gR,detectionPaths:[kr,Un],conversionDefaults:{commandsToSkills:true,agentsToSkills:true}};});function KO(e){let t=e.rules.find(n=>n.root);if(!t)return [];let r=[{path:Lr,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:`${sn}/${o}.md`,content:n.body.trim()||""});}return r}function WO(e){return e.commands.map(t=>{let r=t.description.trim(),n=t.body.trim(),o=r&&n&&!n.startsWith(r)?`${r}
|
|
61
|
+
`||i==="\r"||i===">"||i===" "||i===" "||i==='"'||i==="'"||i===":"||i==="#"||i==="?"}function sw(e,t,r){let n=t>0?e[t-1]:"",o=r<e.length?e[r]:"";return n==="`"&&o==="`"?{role:"inline-code"}:ow(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 iw(e,t,r,n,o){if(t<0||r>e.length)return false;let{candidate:i}=uc(n),a=i.replace(dc,""),l=Ke(a),c=t+a.length,m=e[t-1],p=e[r];return ow(e,t,c)||m==="`"&&p==="`"?true:m==="'"&&p==="'"||m==='"'&&p==='"'?false:m==="<"&&p===">"?true:m==="["&&p==="]"?!(!o&&!fn(l)&&b2(e,t,n)):m==="@"?true:m==="("&&e[t-2]==="]"?p===")"||p==="#"||p==="?"||p===" "||p===" ":o?fn(l)?true:l.includes("/")||l.includes("\\")?l.startsWith("./")||l.startsWith("../")?true:(l.split(/[\\/]/).filter(Boolean).at(-1)??"").includes("."):false:false}var aw=d(()=>{Rt();Ii();s(b2,"markdownBracketLabelDuplicatesDestination");s(ow,"isMarkdownReferenceDefinitionDestination");s(sw,"getTokenContext");s(iw,"shouldRewritePathToken");});function rf(e){let t=new Set,r=tf(e.content);return {content:e.content.replace(KO,(o,i,a)=>{if(r.some(([we,et])=>i>=we&&i<et)||!iw(a,i,i+o.length,o,e.rewriteBarePathTokens===true)||ew(a,i,o)||WO(a,i,i+o.length))return o;let{candidate:l,suffix:c}=uc(o);if(!l)return o;let m=dc.exec(l),p=m?l.slice(0,m.index):l,u=m?m[0]:"";if(!p)return o;let f=sw(a,i,i+p.length);if(f.role!=="markdown-link-dest"&&dn.test(p))return o;let{translatedPath:g,resolvedBeforeTranslate:h,matchedPath:_}=qO({candidate:p,rawToken:l,projectRoot:e.projectRoot,sourceFile:e.sourceFile,destinationFile:e.destinationFile,translatePath:e.translatePath,pathExists:e.pathExists}),S=h;if(!_||!g)return g&&t.add(g),o;let R=Ke(p),I=p.endsWith("/")||e.pathIsDirectory?.(g)===true;if(I&&!R.includes("/")&&!R.includes("\\"))return o;if(S===null){let we=Ke(l);if(we.startsWith("agentsmesh/")&&(we=`.${we}`),we.startsWith(".agentsmesh/")||we.includes("/.agentsmesh/")){let et=ce(e.projectRoot),it=q(e.projectRoot,e.projectRoot),_t=we.replace(/^\.\//,"");S=q(e.projectRoot,et.join(it,_t));}}let w=ce(e.projectRoot);if(e.scope==="global"){let we=Ke(l),et=we.startsWith(".agentsmesh/")||we.includes("/.agentsmesh/"),it=fn(we)||rw(we),_t=S!==null&&gn(e.projectRoot,S),di=gn(e.projectRoot,g);if(S===g&&!di&&!_t&&!et){let Wm=Ke(w.relative(e.projectRoot,q(e.projectRoot,e.sourceFile))).split("/").filter(Boolean)[0]??"",zm=(S!==null?Ke(w.relative(e.projectRoot,S)):"").split("/").filter(Boolean)[0]??"";if(Wm.length>0&&Wm===zm)return o}if(!it&&!et&&!_t&&!di)return o}let D=q(e.projectRoot,e.destinationFile),P=q(e.projectRoot,g),K=Ke(w.relative(e.projectRoot,D)),G=Ke(w.relative(e.projectRoot,P)),Y=K.split("/").filter(Boolean)[0]??"",ee=G.split("/").filter(Boolean)[0]??"",Te=!Ke(p).startsWith(".agentsmesh/")&&!I&&Y.length>0&&Y===ee&&Y.startsWith(".")&&Y!==".agentsmesh"||f.role==="markdown-link-dest"||tw(a,i,p),At=JO(e.projectRoot,e.destinationFile,g,p.endsWith("/"),{explicitCurrentDirLinks:e.explicitCurrentDirLinks===true||Te,scope:e.scope??"project",pathIsDirectory:e.pathIsDirectory,logicalMeshSourceAbsolute:I?null:S,forceRelative:Te,tokenContext:f,originalToken:p});return At?`${At}${u}${c}`:o}),missing:[...t]}}var A_=d(()=>{Rt();Ii();YO();ZO();nw();aw();s(rf,"rewriteFileLinks");});function cw(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 GO(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 cw(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 cw(n,m))l.add(n.normalize(p));}return (c,m,p)=>rf({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 ge=d(()=>{Rt();$O();A_();Vn();s(cw,"pathVariants");s(H,"createImportReferenceNormalizer");});async function Xe(e,t,r){let n=join(e,t),i={...await P2(n),...r};await O(dirname(n)),await L(n,JSON.stringify({mcpServers:i},null,2));}async function P2(e){let t=await k(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 hn=d(()=>{b();s(Xe,"writeMcpWithMerge");s(P2,"readExistingServers");});function as(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):typeof e=="string"?e?[e]:[]:[]}function wr(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 Zn(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function Ut(e){return !e||typeof e!="object"||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="string"))}var qt=d(()=>{s(as,"toGlobsArray");s(wr,"toToolsArray");s(Zn,"toStringArray");s(Ut,"toStringRecord");});function v2(e,t){return t.some(r=>e.endsWith(r))}async function Se(e){let r=(await U(e.srcDir)).filter(o=>v2(o,e.extensions)),n=[];for(let o of r){let i=await k(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 Zt=d(()=>{b();s(v2,"matchesExtension");s(Se,"importFileDirectory");});function pw(e){return typeof e=="string"?e:void 0}function F2(e){for(let t of Object.keys(e))e[t]===void 0&&delete e[t];return e}function T_(e,t){return t?t(e):e}function M2(e){return async t=>{let r=join(t.destDir,t.relativePath),{frontmatter:n,body:o}=x(t.normalizeTo(r)),i=T_(n,e.frontmatterRemap),a=F2({root:false,description:pw(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 G2(e){return async t=>{let r=join(t.destDir,t.relativePath),{frontmatter:n,body:o}=x(t.normalizeTo(r)),i=T_(n,e.frontmatterRemap),a=await Ce(r,{hasDescription:true,description:pw(i.description),hasAllowedTools:true,allowedTools:Zn(i["allowed-tools"])},o);return {destPath:r,toPath:`${e.canonicalDir}/${t.relativePath}`,content:a}}}function $2(e){return async t=>{let r=join(t.destDir,t.relativePath),{frontmatter:n,body:o}=x(t.normalizeTo(r)),i=T_(n,e.frontmatterRemap);return {destPath:r,toPath:`${e.canonicalDir}/${t.relativePath}`,content:await ve(r,i,o)}}}function uw(e){if(e.map)return e.map;switch(e.preset){case "rule":return M2(e);case "command":return G2(e);case "agent":return $2(e);default:throw new Error(`ImportFeatureSpec for ${e.feature} (mode: ${e.mode}) needs a \`preset\` or \`map\``)}}var dw=d(()=>{B();de();qt();s(pw,"pickString");s(F2,"pruneUndefined");s(T_,"applyRemap");s(M2,"ruleMapper");s(G2,"commandMapper");s($2,"agentMapper");s(uw,"resolveMapper");});function P_(e,t){return e?e[t]??[]:[]}var fw,gw=d(()=>{fw=["rules","commands","agents","skills","mcp","hooks","permissions","ignore"];s(P_,"resolveScopedSources");});async function K2(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 k(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(I){let w=I instanceof Error?I.message:String(I);process.stderr.write(`\u26A0 skipping ${l}: ${w}
|
|
62
|
+
`);continue}if(!R)continue;return await L(R.destPath,R.content),[{fromTool:n,fromPath:l,toPath:R.toPath,feature:e.feature}]}let u=ln(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,_=e.markAsRoot?{...h,root:true}:h,S=await z(m,_,g);return await L(m,S),[{fromTool:n,fromPath:l,toPath:`${e.canonicalDir}/${e.canonicalRootFilename}`,feature:e.feature}]}return []}async function W2(e,t,r,n,o){let i=uw(e),a=join(r,e.canonicalDir),l=[];for(let c of t){let m=join(r,c),p=await Se({srcDir:m,destDir:a,extensions:[...e.extensions??[".md"]],fromTool:n,normalize:o,mapEntry:s(async({srcPath:u,relativePath:f,content:g,normalizeTo:h})=>{if(vd(basename(u)))return null;let _;try{_=await i({absolutePath:u,relativePath:f,content:g,destDir:a,normalizeTo:s(S=>h(S),"normalizeTo")});}catch(S){let R=S instanceof Error?S.message:String(S);return process.stderr.write(`\u26A0 skipping ${u}: ${R}
|
|
64
|
+
`),null}return _?{destPath:_.destPath,toPath:_.toPath,feature:e.feature,content:_.content}:null},"mapEntry")});l.push(...p);}return l}function yw(e){let t=e.canonicalFilename;return t.includes("/")||t.includes("\\")?t:posix.join(e.canonicalDir,t)}async function H2(e,t,r,n){if(!e.canonicalFilename)throw new Error(`flatFile spec for ${e.feature} must set canonicalFilename`);let o=yw(e);for(let i of t){let a=join(r,i),l=await k(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 z2(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:Zn(l.args),env:Ut(l.env),description:c};continue}typeof l.url=="string"&&(o[i]={type:typeof l.type=="string"?l.type:"http",url:l.url,headers:Ut(l.headers),env:Ut(l.env),description:c});}return o}async function V2(e,t,r,n){if(!e.canonicalFilename)throw new Error(`mcpJson spec for ${e.feature} must set canonicalFilename`);let o=yw(e);for(let i of t){let a=join(r,i),l=await k(a);if(l===null)continue;let c=z2(l,e.mcpServersKey);return Object.keys(c).length===0?[]:(await Xe(r,o,c),[{fromTool:n,fromPath:a,toPath:o,feature:e.feature}])}return []}function hw(e,t,r,n,o){switch(e.mode){case "singleFile":return K2(e,t,r,n,o);case "directory":return W2(e,t,r,n,o);case "flatFile":return H2(e,t,r,n);case "mcpJson":return V2(e,t,r,n)}}async function J2(e,t,r,n,o){let i=P_(e.source,t),a=P_(e.fallbacks,t);if(i.length===0&&a.length===0)return [];if(i.length>0){let l=await hw(e,i,r,n,o);if(l.length>0)return l}return a.length>0?hw(e,a,r,n,o):[]}function Y2(e,t){let r=e[t];return r?Array.isArray(r)?r:[r]:[]}async function Q(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 fw)for(let c of Y2(o,l))a.push(...await J2(c,r,t,e.id,i));return a}var Ae=d(()=>{ge();b();hn();B();qt();de();Zt();dw();ts();gw();s(K2,"runSingleFile");s(W2,"runDirectory");s(yw,"resolveCanonicalFilePath");s(H2,"runFlatFile");s(z2,"parseMcpJson");s(V2,"runMcpJson");s(hw,"dispatchSpec");s(J2,"runSpec");s(Y2,"specsForFeature");s(Q,"runDescriptorImport");});async function _w(e,t={}){let r=t.scope??"project",n=[],o=await H(qn,e,r);return n.push(...await Q(nf,e,r,{normalize:o})),await ne(e,r==="global"?Or:St,qn,n,o),n}var Sw=d(()=>{ge();oe();Ae();pc();D_();s(_w,"importFromAider");});function X2(e,t){return kw(t).some(n=>Q2(e,n))}function Rw(e,t){return e.filter(r=>X2(r,t))}function kw(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 kw(r+l+o))a.push(c);return a}function Q2(e,t){return q2(t).test(e)}function q2(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 Iw=d(()=>{s(X2,"globMatch");s(Rw,"globFilter");s(kw,"expandBraces");s(Q2,"matchOne");s(q2,"globToRegex");});function X(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(Rw(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 Ee=d(()=>{Iw();s(X,"validateRules");});function Cw(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:qn}))}var Ew=d(()=>{Ee();pc();s(Cw,"lintRules");});function F(e,t,r){return {level:"warning",file:e,target:t,message:r}}function Z2(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 Ci(e,t,r,n){let o=n?.unsupportedBy??t,i=Z2(r);return F(".agentsmesh/hooks.yaml",t,`${e} is not supported by ${o}; only ${i} are projected.`)}var Re=d(()=>{s(F,"createWarning");s(Z2,"formatOxfordComma");s(Ci,"createUnsupportedHookWarning");});function Ow(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[F(".agentsmesh/hooks.yaml","aider","Aider has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function ww(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?[]:[F(".agentsmesh/permissions.yaml","aider","Aider has no permissions config; canonical permissions are not projected.")]}function bw(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[F(".agentsmesh/mcp.json","aider","Aider has no MCP config file; canonical MCP servers are not projected.")]}var Aw=d(()=>{Re();s(Ow,"lintHooks");s(ww,"lintPermissions");s(bw,"lintMcp");});function C(e,t){return ce(e).relative(e,t).replace(/\\/g,"/")}async function E(e,t){return gi(ce(e).join(e,t)).catch(()=>[])}function Tw(e,t,r){e.set(t,r),e.set(`${t}/`,`${r}/`);}function sX(e,t,r,n){let o=posix.dirname(t),i=posix.dirname(r);for(;o!==n&&o!==".";)Tw(e,o,i),o=posix.dirname(o),i=posix.dirname(i);}function N(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,`${xw}/${u}/SKILL.md`);return}let[o,...i]=n.split("/"),a=i.join("/");if(!o||!a)return;let l=o.startsWith(ac)?ac:o.startsWith(ip)?ip:null;if(l&&a==="SKILL.md"){e.set(t,`${nX}/${o.slice(l.length)}.md`);return}let c=o.startsWith(lc)?lc:o.startsWith(ap)?ap:null;if(c&&a==="SKILL.md"){e.set(t,`${oX}/${o.slice(c.length)}.md`);return}let m=`${xw}/${o}`;a==="SKILL.md"&&Tw(e,`${r}/${o}`,m);let p=`${m}/${a}`;e.set(t,p),a!=="SKILL.md"&&sX(e,t,p,`${r}/${o}`);}function iX(e){return e.split("/").filter(Boolean)[0]??""}async function aX(){if(N_!==void 0)return N_;let{BUILTIN_TARGETS:e}=await Promise.resolve().then(()=>(xe(),Pw)),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=iX(n);o.startsWith(".")&&t.add(o);}return N_=t,t}function F_(e){return e.split("/").some(t=>t.startsWith("."))}async function lX(e){let t=[],r=await aX(),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)||F_(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)||F_(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 of(e,t){let r=await lX(t);for(let n of r){let o=C(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(F_(l))continue;let c=l.replace(/\//g,"-");e.set(o,`${rX}/${c}.md`);}}var rX,nX,oX,xw,N_,Ie=d(()=>{Rt();b();be();_e();rX=".agentsmesh/rules",nX=".agentsmesh/commands",oX=".agentsmesh/agents",xw=".agentsmesh/skills";s(C,"rel");s(E,"listFiles");s(Tw,"addDirectoryMapping");s(sX,"addAncestorMappings");s(N,"addSimpleFileMapping");s($,"addSkillLikeMapping");s(iX,"firstPathSegment");s(aX,"targetRootSegments");s(F_,"hasHiddenSegment");s(lX,"listScopedAgentsFiles");s(of,"addScopedAgentsMappings");});var A,ae,ue,Le=d(()=>{A=".agentsmesh/rules",ae=".agentsmesh/commands",ue=".agentsmesh/agents";});async function M_(e,t,r="project"){if(r==="global"){e.set(is,`${A}/_root.md`);for(let n of await E(t,Or))$(e,C(t,n),Or);e.set(Oa,".agentsmesh/ignore");return}e.set(Er,`${A}/_root.md`);for(let n of await E(t,St))$(e,C(t,n),St);e.set(ss,".agentsmesh/ignore");}var Dw=d(()=>{Ie();pc();Le();s(M_,"buildAiderImportPaths");});var wa,br,Ei,eo,ls,gc,ba,Nw,vw,G_,hc=d(()=>{wa="amazon-q",br=".amazonq/rules",Ei=".amazonq/mcp.json",eo=".amazonq/cli-agents",ls=".aws/amazonq/rules",gc=".aws/amazonq/mcp.json",ba=".aws/amazonq/cli-agents",Nw=".agentsmesh/rules",vw=".agentsmesh/mcp.json",G_=".agentsmesh/agents";});async function $_(e,t,r="project"){let n=r==="global"?ls:br;for(let o of await E(t,n)){let i=C(t,o);N(e,i,A,".md");}}var Fw=d(()=>{Ie();hc();Le();s($_,"buildAmazonQImportPaths");});var Ar,kt,er,j_,cs,xr,ms,Mw,Aa=d(()=>{Ar="AGENTS.md",kt=".agents/skills",er=".amp/settings.json",j_=".config/amp",cs=`${j_}/AGENTS.md`,xr=`${j_}/skills`,ms=`${j_}/settings.json`,Mw=".agentsmesh/rules";});async function U_(e,t,r="project"){if(r==="global"){e.set(cs,`${A}/_root.md`);for(let n of await E(t,xr))$(e,C(t,n),xr);e.set(ms,".agentsmesh/mcp.json");return}e.set(Ar,`${A}/_root.md`);for(let n of await E(t,kt))$(e,C(t,n),kt);e.set(er,".agentsmesh/mcp.json");}var Gw=d(()=>{Ie();Aa();Le();s(U_,"buildAmpImportPaths");});var xa,hp,yn,Tr,yp,_n,to,_p,Sp,B_,ro,no,Rp,yc,K_,Ta,sf,$w,Pa=d(()=>{xa="antigravity",hp=".agents",yn=`${hp}/rules`,Tr=`${yn}/general.md`,yp=`${yn}/_root.md`,_n=`${hp}/skills`,to=`${hp}/workflows`,_p=`${hp}/antigravity/mcp_config.json`,Sp=`${hp}/hooks.json`,B_=".gemini/config/hooks.json",ro=".gemini/antigravity/GEMINI.md",no=".gemini/antigravity/skills",Rp=".gemini/antigravity/workflows",yc=".gemini/antigravity/mcp_config.json",K_=".agentsmesh/rules/_root.md",Ta=".agentsmesh/rules",sf=".agentsmesh/commands",$w=".agentsmesh/mcp.json";});async function W_(e,t,r="project"){if(r==="global"){e.set(ro,`${A}/_root.md`);for(let n of await E(t,no))$(e,C(t,n),no);e.set(yc,".agentsmesh/mcp.json");return}e.set(Tr,`${A}/_root.md`),e.set(yp,`${A}/_root.md`);for(let n of await E(t,yn)){let o=C(t,n);o===Tr||o===yp||N(e,o,A,".md");}for(let n of await E(t,to))N(e,C(t,n),ae,".md");for(let n of await E(t,_n))$(e,C(t,n),_n);}var jw=d(()=>{Ie();Pa();Le();s(W_,"buildAntigravityImportPaths");});var ct,kp,tr,Pr,ps,rr,oo,so,Ip,us,ds,Da,io,fs,H_,z_,V_,J_,Y_,Na=d(()=>{ct="augment-code",kp=".augment",tr=`${kp}/rules`,Pr=`${kp}/commands`,ps=`${kp}/agents`,rr=`${kp}/skills`,oo=`${kp}/settings.json`,so=".augmentignore",Ip=".augment",us=`${Ip}/rules`,ds=`${Ip}/commands`,Da=`${Ip}/agents`,io=`${Ip}/skills`,fs=`${Ip}/settings.json`,H_=".agentsmesh/rules",z_=".agentsmesh/agents",V_=".agentsmesh/mcp.json",J_=".agentsmesh/hooks.yaml",Y_=".agentsmesh/ignore";});async function X_(e,t,r="project"){if(r==="global"){for(let n of await E(t,us))N(e,C(t,n),A,".md");for(let n of await E(t,ds))N(e,C(t,n),ae,".md");for(let n of await E(t,Da))N(e,C(t,n),ue,".md");for(let n of await E(t,io))$(e,C(t,n),io);e.set(fs,".agentsmesh/mcp.json");return}for(let n of await E(t,tr))N(e,C(t,n),A,".md");for(let n of await E(t,Pr))N(e,C(t,n),ae,".md");for(let n of await E(t,ps))N(e,C(t,n),ue,".md");for(let n of await E(t,rr))$(e,C(t,n),rr);e.set(oo,".agentsmesh/mcp.json"),e.set(so,".agentsmesh/ignore");}var Uw=d(()=>{Ie();Na();Le();s(X_,"buildAugmentCodeImportPaths");});var Bw,gs,Oi,Lp,Cp,Ep,Op,wp,hs,Q_,bp,_c,Ap,xp,af,lf,q_,Tp,Z_,va,Kw,ys=d(()=>{Bw="claude-code",gs="CLAUDE.md",Oi=".claude/CLAUDE.md",Lp=".claude/rules",Cp=".claude/commands",Ep=".claude/agents",Op=".claude/skills",wp=".claude/settings.json",hs=".claude/hooks.json",Q_=".claude/output-styles",bp=".claudeignore",_c=".mcp.json",Ap=".claude.json",xp=".agentsmesh/rules",af=".agentsmesh/commands",lf=".agentsmesh/agents",q_=".agentsmesh/skills",Tp=".agentsmesh/mcp.json",Z_=".agentsmesh/permissions.yaml",va=".agentsmesh/hooks.yaml",Kw=".agentsmesh/ignore";});async function eS(e,t,r="project"){if(e.set(".claude/CLAUDE.md",`${A}/_root.md`),e.set(hs,va),r==="project"&&e.set("CLAUDE.md",`${A}/_root.md`),r==="global")for(let n of await E(t,".agents/skills"))$(e,C(t,n),".agents/skills");for(let n of await E(t,".claude/rules"))N(e,C(t,n),A,".md");for(let n of await E(t,".claude/commands"))N(e,C(t,n),ae,".md");for(let n of await E(t,".claude/agents"))N(e,C(t,n),ue,".md");for(let n of await E(t,".claude/skills"))$(e,C(t,n),".claude/skills");}var Ww=d(()=>{Ie();ys();Le();s(eS,"buildClaudeCodeImportPaths");});var wi,_s,Fa,Ss,Hw,Pt,nr,Rs,bi,Ma,Ga,$a,ja,tS,Ai,cf,rS,nS,Pp,zw,Dr=d(()=>{wi="cline",_s=".clinerules",Fa=".clineignore",Ss=".cline/cline_mcp_settings.json",Hw=".cline/mcp_settings.json",Pt=".cline/skills",nr=".cline/agents",Rs=".clinerules/workflows",bi="AGENTS.md",Ma=".clinerules/hooks",Ga="Documents/Cline/Rules",$a="Documents/Cline/Workflows",ja="Documents/Cline/Hooks",tS=".agentsmesh/hooks.yaml",Ai=".agentsmesh/rules",cf=".agentsmesh/commands",rS=".agentsmesh/ignore",nS=".agentsmesh/mcp.json",Pp=".agentsmesh/agents",zw=".agentsmesh/skills";});async function oS(e,t,r="project"){if(r==="global"){for(let n of await E(t,Ga))N(e,C(t,n),A,".md");for(let n of await E(t,$a))N(e,C(t,n),ae,".md");for(let n of await E(t,Pt))$(e,C(t,n),Pt);for(let n of await E(t,nr))N(e,C(t,n),ue,".md");e.set(Ss,".agentsmesh/mcp.json");return}e.set(".clinerules/_root.md",`${A}/_root.md`);for(let n of await E(t,".clinerules")){let o=C(t,n);!o.endsWith(".md")||o.includes("/workflows/")||basename(o)==="_root.md"||N(e,o,A,".md");}for(let n of await E(t,".clinerules/workflows"))N(e,C(t,n),ae,".md");for(let n of await E(t,".cline/skills"))$(e,C(t,n),".cline/skills");for(let n of await E(t,nr))N(e,C(t,n),ue,".md");}var Vw=d(()=>{Ie();Dr();Le();s(oS,"buildClineImportPaths");});async function sS(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 of(e,t)),r==="project")for(let n of await E(t,".codex/instructions"))N(e,C(t,n),A,".md");for(let n of await E(t,".codex/rules")){let o=C(t,n);o.endsWith(".rules")?N(e,o,A,".rules"):o.endsWith(".md")&&N(e,o,A,".md");}for(let n of await E(t,".codex/agents"))N(e,C(t,n),ue,".toml");for(let n of await E(t,".agents/skills"))$(e,C(t,n),".agents/skills");}var Jw=d(()=>{Ie();Le();s(sS,"buildCodexCliImportPaths");});var Sc,Sn,ao,iS,mf,ks,aS,or,Rc,Dp,pf,uf,lS,lo=d(()=>{Sc="continue",Sn=".continue/rules",ao=".continue/prompts",iS=".continue/mcpServers",mf=`${iS}/agentsmesh.json`,ks=`${Sn}/general.md`,aS=`${Sn}/_root.md`,or=".continue/skills",Rc=".continue/AGENTS.md",Dp=".continue/config.yaml",pf=".agentsmesh/rules",uf=".agentsmesh/commands",lS=".agentsmesh/mcp.json";});async function cS(e,t,r="project"){e.set(ks,`${A}/_root.md`),e.set(aS,`${A}/_root.md`);for(let n of await E(t,".continue/rules")){let o=C(t,n);o===ks||o===aS||N(e,o,A,".md");}for(let n of await E(t,".continue/prompts"))e.set(C(t,n),`${ae}/${basename(n,".md")}.md`);for(let n of await E(t,".continue/skills"))$(e,C(t,n),".continue/skills");if(r==="global")for(let n of await E(t,".agents/skills"))$(e,C(t,n),".agents/skills");}var Yw=d(()=>{Ie();lo();Le();s(cS,"buildContinueImportPaths");});function pX(e,t){if(t.endsWith(".instructions.md")){e.set(t,`${A}/${basename(t,".instructions.md")}.md`);return}N(e,t,A,".md");}async function mS(e,t){e.set(".github/copilot-instructions.md",`${A}/_root.md`);for(let r of await E(t,".github/copilot"))e.set(C(t,r),`${A}/${basename(r,".instructions.md")}.md`);for(let r of await E(t,".github/instructions"))pX(e,C(t,r));for(let r of await E(t,".github/prompts"))e.set(C(t,r),`${ae}/${basename(r,".prompt.md")}.md`);for(let r of await E(t,".github/agents"))e.set(C(t,r),`${ue}/${basename(r,".agent.md")}.md`);for(let r of await E(t,".github/skills"))$(e,C(t,r),".github/skills");}var Xw=d(()=>{Ie();Le();s(pX,"addCopilotInstructionMapping");s(mS,"buildCopilotImportPaths");});var Nr,vr,mt,sr,Is,Qw,ff,ir,Ua,gf,hf,yf,kc=d(()=>{Nr="crush",vr="CRUSH.md",mt=".crush/skills",sr="crush.json",Is=".crushignore",Qw=".config/crush",ff=`${Qw}/crush.json`,ir=".config/crush/skills",Ua=`${Qw}/CRUSH.md`,gf=".agentsmesh/rules",hf=".agentsmesh/ignore",yf=".agentsmesh/mcp.json";});async function pS(e,t,r="project"){if(r==="global"){for(let n of await E(t,ir))$(e,C(t,n),ir);return}e.set(vr,`${gf}/_root.md`),e.set(sr,yf),e.set(Is,hf);for(let n of await E(t,mt))$(e,C(t,n),mt);}var qw=d(()=>{Ie();kc();s(pS,"buildCrushImportPaths");});var Zw,xi,eb,Fr,Ls,Mr,Gr,It,ar,co,_f,Rn,uS,uX,Ic,kn,mo,Ti,Pi,tb,Lc,dS,Np,fS,Qe=d(()=>{Zw="cursor",xi="AGENTS.md",eb=".cursorrules",Fr=".cursor/rules",Ls=`${Fr}/general.mdc`,Mr=".cursor/commands",Gr=".cursor/agents",It=".cursor/skills",ar=".cursor/mcp.json",co=".cursor/hooks.json",_f=".cursor/settings.json",Rn=".cursorignore",uS=".cursorindexingignore",uX=".agentsmesh-exports/cursor",Ic=`${uX}/user-rules.md`,kn=".cursor/AGENTS.md",mo=".agentsmesh/rules",Ti=".agentsmesh/commands",Pi=".agentsmesh/agents",tb=".agentsmesh/skills",Lc=".agentsmesh/mcp.json",dS=".agentsmesh/permissions.yaml",Np=".agentsmesh/hooks.yaml",fS=".agentsmesh/ignore";});async function gS(e,t,r="project"){if(r==="global"){e.set(ar,".agentsmesh/mcp.json"),e.set(".cursor/AGENTS.md",`${A}/_root.md`);for(let n of await E(t,".cursor/rules"))N(e,C(t,n),A,".mdc");for(let n of await E(t,".cursor/commands"))N(e,C(t,n),ae,".md");for(let n of await E(t,".cursor/agents"))N(e,C(t,n),ue,".md");for(let n of await E(t,".cursor/skills"))$(e,C(t,n),".cursor/skills");return}e.set("AGENTS.md",`${A}/_root.md`);for(let n of await E(t,".cursor/rules"))N(e,C(t,n),A,".mdc");for(let n of await E(t,".cursor/commands"))N(e,C(t,n),ae,".md");for(let n of await E(t,".cursor/agents"))N(e,C(t,n),ue,".md");for(let n of await E(t,".cursor/skills"))$(e,C(t,n),".cursor/skills");}var rb=d(()=>{Ie();Qe();Le();s(gS,"buildCursorImportPaths");});var po,$r,Lt,Cs,Sf,Es,In,Ba,nb,ob,Cc=d(()=>{po="deepagents-cli",$r=".deepagents/AGENTS.md",Lt=".deepagents/skills",Cs=".mcp.json",Sf=".deepagents/hooks.json",Es=".deepagents/AGENTS.md",In=".deepagents/skills",Ba=".deepagents/.mcp.json",nb=".deepagents/hooks.json",ob=".agentsmesh/rules";});async function hS(e,t,r="project"){if(r==="global"){e.set(Es,`${A}/_root.md`);for(let n of await E(t,In))$(e,C(t,n),In);e.set(Ba,".agentsmesh/mcp.json");return}e.set($r,`${A}/_root.md`);for(let n of await E(t,Lt))$(e,C(t,n),Lt);e.set(Cs,".agentsmesh/mcp.json");}var sb=d(()=>{Ie();Cc();Le();s(hS,"buildDeepagentsCliImportPaths");});var jr,Ur,Bt,uo,fo,Os,go,Ka,Di,Rf,ib,ab,Wa=d(()=>{jr="factory-droid",Ur="AGENTS.md",Bt=".factory/skills",uo=".factory/droids",fo=".factory/mcp.json",Os=".factory/AGENTS.md",go=".factory/skills",Ka=".factory/droids",Di=".factory/mcp.json",Rf=".factory/hooks.json",ib=".factory/hooks.json",ab=".agentsmesh/rules";});async function yS(e,t,r="project"){if(r==="global"){e.set(Os,`${A}/_root.md`);for(let n of await E(t,Ka))N(e,C(t,n),ue,".md");for(let n of await E(t,go))$(e,C(t,n),go);e.set(Di,".agentsmesh/mcp.json");return}e.set(Ur,`${A}/_root.md`);for(let n of await E(t,uo))N(e,C(t,n),ue,".md");for(let n of await E(t,Bt))$(e,C(t,n),Bt);e.set(fo,".agentsmesh/mcp.json");}var lb=d(()=>{Ie();Wa();Le();s(yS,"buildFactoryDroidImportPaths");});async function _S(e,t){for(let r of await E(t,".gemini/rules"))N(e,C(t,r),A,".md");for(let r of await E(t,".gemini/commands")){let n=C(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,`${ae}/${c}.md`);}for(let r of await E(t,".gemini/agents"))N(e,C(t,r),ue,".md");for(let r of await E(t,".gemini/skills"))$(e,C(t,r),".gemini/skills");}var cb=d(()=>{Ie();Le();s(_S,"buildGeminiCliImportPaths");});var ho,lr,Kt,yo,SS,_o,Ni,Ha,Br,mb,pb,za=d(()=>{ho="goose",lr=".goosehints",Kt=".agents/skills",yo=".gooseignore",SS=".config/goose",_o=`${SS}/.goosehints`,Ni=`${SS}/.gooseignore`,Ha=`${SS}/config.yaml`,Br=".agents/skills",mb=".agentsmesh/rules",pb=".agentsmesh/ignore";});async function RS(e,t,r="project"){if(r==="global"){e.set(_o,`${A}/_root.md`);for(let n of await E(t,Br))$(e,C(t,n),Br);e.set(Ni,".agentsmesh/ignore");return}e.set(lr,`${A}/_root.md`);for(let n of await E(t,Kt))$(e,C(t,n),Kt);e.set(yo,".agentsmesh/ignore");}var ub=d(()=>{Ie();za();Le();s(RS,"buildGooseImportPaths");});var ws,Ln,db,Ec=d(()=>{ws="jules",Ln="AGENTS.md",db=".agentsmesh/rules";});async function kS(e,t,r="project"){r!=="global"&&e.set(Ln,`${A}/_root.md`);}var fb=d(()=>{Ec();Le();s(kS,"buildJulesImportPaths");});var Va,vi,kf,gb,So,hb,dX,vp,Ja,Fp,Oc,wc,Mp,Gp,$p,jp,Up,fX,If,Ya,yb,Lf,IS,Cf,_b,Sb,Rb,kb,bc=d(()=>{Va="junie",vi=".junie",kf=`${vi}/guidelines.md`,gb=`${vi}/ci-guidelines.md`,So=`${vi}/AGENTS.md`,hb="AGENTS.md",dX=`${vi}/mcp`,vp=`${dX}/mcp.json`,Ja=`${vi}/skills`,Fp=`${vi}/rules`,Oc=`${vi}/commands`,wc=`${vi}/agents`,Mp=".aiignore",Gp=".junie",$p=`${Gp}/skills`,jp=`${Gp}/agents`,Up=`${Gp}/commands`,fX=`${Gp}/mcp`,If=`${fX}/mcp.json`,Ya=`${Gp}/AGENTS.md`,yb=".agents/skills",Lf=".junie/allowlist.json",IS=".agentsmesh/rules/_root.md",Cf=".agentsmesh/rules",_b=".agentsmesh/commands",Sb=".agentsmesh/agents",Rb=".agentsmesh/mcp.json",kb=".agentsmesh/ignore";});async function LS(e,t){e.set(kf,`${A}/_root.md`),e.set(So,`${A}/_root.md`),e.set("AGENTS.md",`${A}/_root.md`);for(let r of await E(t,".junie/rules"))N(e,C(t,r),A,".md");for(let r of await E(t,".junie/commands"))N(e,C(t,r),ae,".md");for(let r of await E(t,".junie/agents"))N(e,C(t,r),ue,".md");for(let r of await E(t,".junie/skills"))$(e,C(t,r),".junie/skills");}var Ib=d(()=>{Ie();bc();Le();s(LS,"buildJunieImportPaths");});var Dt,Xa,Bp,Kp,Cn,Ro,ko,Io,Kr,bs,Qa,Ef,qa,Ac,Za,Wp,Of,xc,As,Fi,Mi,Gi,xs,el,Hp,Lb,$i,Tc,tl,Cb,Eb,Ts=d(()=>{Dt="kilo-code",Xa="kilo.jsonc",Bp=".config/kilo/kilo.jsonc",Kp=".kilo",Cn="AGENTS.md",Ro=`${Kp}/rules`,ko=`${Kp}/commands`,Io=`${Kp}/agents`,Kr=`${Kp}/skills`,bs=`${Kp}/mcp.json`,Qa=".kilocodeignore",Ef=".kilocode",qa=`${Ef}/rules`,Ac=`${Ef}/workflows`,Za=`${Ef}/skills`,Wp=`${Ef}/mcp.json`,Of=".kilocodemodes",xc=".kilo",As=`${xc}/AGENTS.md`,Fi=`${xc}/rules`,Mi=`${xc}/commands`,Gi=`${xc}/agents`,xs=`${xc}/skills`,el=`${xc}/mcp.json`,Hp=".kilocodeignore",Lb=".agents/skills",$i=".agentsmesh/rules",Tc=".agentsmesh/commands",tl=".agentsmesh/agents",Cb=".agentsmesh/mcp.json",Eb=".agentsmesh/ignore";});async function CS(e,t,r="project"){if(r==="global"){e.set(As,`${A}/_root.md`);for(let n of await E(t,Fi))N(e,C(t,n),A,".md");for(let n of await E(t,Mi))N(e,C(t,n),ae,".md");for(let n of await E(t,Gi))N(e,C(t,n),ue,".md");for(let n of await E(t,xs))$(e,C(t,n),xs);e.set(el,".agentsmesh/mcp.json");return}e.set(Cn,`${A}/_root.md`);for(let n of await E(t,Ro))N(e,C(t,n),A,".md");for(let n of await E(t,ko))N(e,C(t,n),ae,".md");for(let n of await E(t,Io))N(e,C(t,n),ue,".md");for(let n of await E(t,Kr))$(e,C(t,n),Kr);e.set(bs,".agentsmesh/mcp.json");for(let n of await E(t,qa)){let o=C(t,n);if(basename(o)==="00-root.md"){e.set(o,`${A}/_root.md`);continue}N(e,o,A,".md");}for(let n of await E(t,Ac))N(e,C(t,n),ae,".md");for(let n of await E(t,Za))$(e,C(t,n),Za);e.set(Wp,".agentsmesh/mcp.json");}var Ob=d(()=>{Ie();Ts();Le();s(CS,"buildKiloCodeImportPaths");});var cr,En,zp,On,Nt,wn,ji,hX,Pc,Dc,rl,bn,Ui,nl,Vp,Jp,wb,ES,OS,bb,Ab,wS,xb,Nc=d(()=>{cr="kiro",En="AGENTS.md",zp=".kiro",On=`${zp}/steering`,Nt=`${zp}/skills`,wn=`${zp}/agents`,ji=`${zp}/hooks`,hX=`${zp}/settings`,Pc=`${hX}/mcp.json`,Dc=".kiroignore",rl=".kiro/steering",bn=".kiro/steering/AGENTS.md",Ui=".kiro/skills",nl=".kiro/agents",Vp=".kiro/settings/mcp.json",Jp=".kiro/settings/kiroignore",wb=".agents/skills",ES=".agentsmesh/rules/_root.md",OS=".agentsmesh/rules",bb=".agentsmesh/agents",Ab=".agentsmesh/mcp.json",wS=".agentsmesh/hooks.yaml",xb=".agentsmesh/ignore";});async function bS(e,t,r="project"){if(r==="global"){e.set(bn,`${A}/_root.md`);for(let n of await E(t,rl)){let o=C(t,n);o!==bn&&N(e,o,A,".md");}for(let n of await E(t,Ui))$(e,C(t,n),Ui);for(let n of await E(t,nl))N(e,C(t,n),ue,".md");return}e.set(En,`${A}/_root.md`);for(let n of await E(t,On))N(e,C(t,n),A,".md");for(let n of await E(t,Nt))$(e,C(t,n),Nt);for(let n of await E(t,wn))N(e,C(t,n),ue,".md");}var Tb=d(()=>{Ie();Nc();Le();s(bS,"buildKiroImportPaths");});var Wr,wf,An,Lo,Co,Eo,Hr,Ct,vc,Ps,Bi,Ki,Wi,Ds,zr,Pb,Yp,bf,Af,AS,xS,Ns=d(()=>{Wr="opencode",wf=".opencode",An="AGENTS.md",Lo=`${wf}/rules`,Co=`${wf}/commands`,Eo=`${wf}/agents`,Hr=`${wf}/skills`,Ct="opencode.json",vc=".config/opencode",Ps=`${vc}/AGENTS.md`,Bi=`${vc}/rules`,Ki=`${vc}/commands`,Wi=`${vc}/agents`,Ds=`${vc}/skills`,zr=`${vc}/opencode.json`,Pb=".agents/skills",Yp=".agentsmesh/rules",bf=".agentsmesh/commands",Af=".agentsmesh/agents",AS=".agentsmesh/mcp.json",xS=".agentsmesh/permissions.yaml";});async function TS(e,t,r="project"){if(r==="global"){e.set(Ps,`${A}/_root.md`);for(let n of await E(t,Bi))N(e,C(t,n),A,".md");for(let n of await E(t,Ki))N(e,C(t,n),ae,".md");for(let n of await E(t,Wi))N(e,C(t,n),ue,".md");for(let n of await E(t,Ds))$(e,C(t,n),Ds);e.set(zr,".agentsmesh/mcp.json");return}e.set(An,`${A}/_root.md`);for(let n of await E(t,Lo))N(e,C(t,n),A,".md");for(let n of await E(t,Co))N(e,C(t,n),ae,".md");for(let n of await E(t,Eo))N(e,C(t,n),ue,".md");for(let n of await E(t,Hr))$(e,C(t,n),Hr);e.set(Ct,".agentsmesh/mcp.json");}var Db=d(()=>{Ie();Ns();Le();s(TS,"buildOpencodeImportPaths");});var Oo,Vr,pt,Nb,vs,Jr,vb,Fc=d(()=>{Oo="pi-agent",Vr="AGENTS.md",pt=".pi/skills",Nb=".pi/agent",vs=`${Nb}/AGENTS.md`,Jr=`${Nb}/skills`,vb=".agentsmesh/rules";});async function PS(e,t,r="project"){if(r==="global"){e.set(vs,`${A}/_root.md`);for(let n of await E(t,Jr))$(e,C(t,n),Jr);return}e.set(Vr,`${A}/_root.md`);for(let n of await E(t,pt))$(e,C(t,n),pt);}var DS=d(()=>{Ie();Fc();Le();s(PS,"buildPiAgentImportPaths");});var xn,mr,wo,Tn,Pn,pr,Yr,Fs,bo,Ms,Gs,Ao,$s,NS,Fb,Mb,ol=d(()=>{xn="qwen-code",mr="QWEN.md",wo=".qwen/rules",Tn=".qwen/commands",Pn=".qwen/agents",pr=".qwen/skills",Yr=".qwen/settings.json",Fs=".qwenignore",bo=".qwen/QWEN.md",Ms=".qwen/settings.json",Gs=".qwen/commands",Ao=".qwen/skills",$s=".qwen/agents",NS=".agentsmesh/rules",Fb=".agentsmesh/commands",Mb=".agentsmesh/agents";});async function vS(e,t,r="project"){if(r==="global"){e.set(bo,`${A}/_root.md`),e.set(Ms,".agentsmesh/mcp.json");for(let n of await E(t,Gs))N(e,C(t,n),ae,".md");for(let n of await E(t,$s))N(e,C(t,n),ue,".md");for(let n of await E(t,Ao))$(e,C(t,n),Ao);return}e.set(mr,`${A}/_root.md`),e.set(Yr,".agentsmesh/mcp.json"),e.set(Fs,".agentsmesh/ignore");for(let n of await E(t,wo))N(e,C(t,n),A,".md");for(let n of await E(t,Tn))N(e,C(t,n),ae,".md");for(let n of await E(t,Pn))N(e,C(t,n),ue,".md");for(let n of await E(t,pr))$(e,C(t,n),pr);}var Gb=d(()=>{Ie();Le();ol();s(vS,"buildQwenCodeImportPaths");});var xo,Dn,Wt,$b,Mc=d(()=>{xo="replit-agent",Dn="replit.md",Wt=".agents/skills",$b=".agentsmesh/rules";});async function FS(e,t,r="project"){if(r!=="global"){e.set(Dn,`${A}/_root.md`);for(let n of await E(t,Wt))$(e,C(t,n),Wt);}}var MS=d(()=>{Ie();Mc();Le();s(FS,"buildReplitAgentImportPaths");});var Hi,sl,Nn,Xp,js,Us,To,Qp,qp,Gc,Zp,xf,zi,Vi,Bs,il,eu,Ji,jb,al,Tf,Ub,Bb,ll=d(()=>{Hi="roo-code",sl=".roo",Nn=`${sl}/rules/00-root.md`,Xp=".roorules",js=`${sl}/rules`,Us=`${sl}/commands`,To=`${sl}/skills`,Qp=`${sl}/mcp.json`,qp=".rooignore",Gc=".roomodes",Zp="settings/custom_modes.yaml",xf=".roo",zi=`${xf}/rules`,Vi=`${xf}/commands`,Bs=`${xf}/skills`,il="mcp_settings.json",eu=".rooignore",Ji=`${xf}/AGENTS.md`,jb=".agents/skills",al=".agentsmesh/rules",Tf=".agentsmesh/commands",Ub=".agentsmesh/mcp.json",Bb=".agentsmesh/ignore";});async function GS(e,t,r="project"){if(r==="global"){e.set(Ji,`${A}/_root.md`);for(let n of await E(t,zi))N(e,C(t,n),A,".md");for(let n of await E(t,Vi))N(e,C(t,n),ae,".md");for(let n of await E(t,Bs))$(e,C(t,n),Bs);e.set(il,".agentsmesh/mcp.json");return}e.set(Nn,`${A}/_root.md`),e.set(Xp,`${A}/_root.md`);for(let n of await E(t,js)){let o=C(t,n);o!==Nn&&N(e,o,A,".md");}for(let n of await E(t,".roo")){let o=C(t,n);/^\.roo\/rules-[^/]+\/.+\.md$/.test(o)&&N(e,o,A,".md");}for(let n of await E(t,Us))N(e,C(t,n),ae,".md");for(let n of await E(t,To))$(e,C(t,n),To);}var Kb=d(()=>{Ie();ll();Le();s(GS,"buildRooCodeImportPaths");});var Po,Xr,Wb,ut,Ks,Hb,Ws,ur,$c,tu,zb,cl=d(()=>{Po="rovodev",Xr="AGENTS.md",Wb=".rovodev",ut=`${Wb}/skills`,Ks=`${Wb}/mcp.json`,Hb=".rovodev",Ws=".rovodev/AGENTS.md",ur=".rovodev/skills",$c=".rovodev/mcp.json",tu=".rovodev/config.yml",zb=".agentsmesh/rules";});async function $S(e,t,r="project"){if(r==="global"){e.set(Ws,`${A}/_root.md`);for(let n of await E(t,ur))$(e,C(t,n),ur);e.set($c,".agentsmesh/mcp.json");return}e.set(Xr,`${A}/_root.md`);for(let n of await E(t,ut))$(e,C(t,n),ut);e.set(Ks,".agentsmesh/mcp.json");}var Vb=d(()=>{Ie();cl();Le();s($S,"buildRovodevImportPaths");});var Qr,ru,dr,fr,qr,ml,jc,Hs,Zr,vn,nu,Jb,Yi,Uc,ou,Yb,Xb,Qb,Bc=d(()=>{Qr="trae",ru=".trae",dr=`${ru}/rules`,fr=`${dr}/project_rules.md`,qr=`${ru}/skills`,ml=`${ru}/mcp.json`,jc=`${ru}/.ignore`,Hs=".trae/user_rules",Zr=".trae/user_rules/rules.md",vn=".trae/skills",nu=".trae/mcp.json",Jb=".agents/skills",Yi=`${ru}/commands`,Uc=".trae/commands",ou=".agentsmesh/rules",Yb=".agentsmesh/commands",Xb=".agentsmesh/mcp.json",Qb=".agentsmesh/ignore";});async function jS(e,t,r="project"){if(r==="global"){e.set(Zr,`${A}/_root.md`);for(let n of await E(t,Hs)){let o=C(t,n);o!==Zr&&N(e,o,A,".md");}for(let n of await E(t,Uc))N(e,C(t,n),ae,".md");for(let n of await E(t,vn))$(e,C(t,n),vn);return}e.set(fr,`${A}/_root.md`);for(let n of await E(t,dr)){let o=C(t,n);o!==fr&&N(e,o,A,".md");}for(let n of await E(t,Yi))N(e,C(t,n),ae,".md");for(let n of await E(t,qr))$(e,C(t,n),qr);}var qb=d(()=>{Ie();Bc();Le();s(jS,"buildTraeImportPaths");});var Do,Fn,US,Et,Xi,gr,Zb,Kc=d(()=>{Do="warp",Fn="AGENTS.md",US="WARP.md",Et=".warp/skills",Xi=".mcp.json",gr=".warp/skills",Zb=".agentsmesh/rules";});async function BS(e,t,r="project"){if(r==="global"){for(let n of await E(t,gr))$(e,C(t,n),gr);return}e.set(Fn,`${A}/_root.md`);for(let n of await E(t,Et))$(e,C(t,n),Et);e.set(Xi,".agentsmesh/mcp.json");}var eA=d(()=>{Ie();Kc();Le();s(BS,"buildWarpImportPaths");});async function KS(e,t){e.set("AGENTS.md",`${A}/_root.md`),e.set(".windsurfrules",`${A}/_root.md`),await of(e,t);for(let r of await E(t,".windsurf/rules"))N(e,C(t,r),A,".md");for(let r of await E(t,".windsurf/workflows"))N(e,C(t,r),ae,".md");for(let r of await E(t,".windsurf/skills"))$(e,C(t,r),".windsurf/skills");}var tA=d(()=>{Ie();Le();s(KS,"buildWindsurfImportPaths");});var Mn,No,vo,yX,Fo,rA,pl=d(()=>{Mn=".rules",No=".zed/settings.json",vo=".agents/skills",yX=".config/zed",Fo=`${yX}/settings.json`,rA=".agentsmesh/rules";});async function WS(e,t,r="project"){if(r==="global"){e.set(Fo,".agentsmesh/mcp.json");return}e.set(Mn,`${A}/_root.md`);for(let n of await E(t,vo))$(e,C(t,n),vo);e.set(No,".agentsmesh/mcp.json");}var nA=d(()=>{pl();Ie();Le();s(WS,"buildZedImportPaths");});var oA=d(()=>{Dw();Fw();Gw();jw();Uw();Ww();Vw();Jw();Yw();Xw();qw();rb();sb();lb();cb();ub();fb();Ib();Ob();Tb();Db();DS();Gb();MS();Kb();Vb();qb();eA();tA();nA();});var Oe=d(()=>{oA();});var _X,SX,RX,sA,nf,D_=d(()=>{be();_e();NO();Sw();Ew();Aw();Oe();pc();_X={name:qn,primaryRootInstructionPath:Er,generateRules:AO,generateCommands:TO,generateAgents:PO,generateSkills:xO,generateIgnore:DO,importFrom:_w},SX={rootInstructionPath:Er,skillDir:St,managedOutputs:{dirs:[St],files:[Er,ss]},paths:{rulePath(e){return Er},commandPath(e){return `${St}/${J(e)}/SKILL.md`},agentPath(e){return `${St}/${V(e)}/SKILL.md`}}},RX={rootInstructionPath:is,skillDir:Or,managedOutputs:{dirs:[Or],files:[is,Oa]},rewriteGeneratedPath(e){return e===Er?is:e===ss?Oa:e.startsWith(`${St}/`)?e.replace(`${St}/`,`${Or}/`):e},paths:{rulePath(e){return is},commandPath(e){return `${Or}/${J(e)}/SKILL.md`},agentPath(e){return `${Or}/${V(e)}/SKILL.md`}}},sA={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"native",permissions:"none"},nf={id:qn,metadata:{displayName:"Aider",category:"cli",officialUrl:"https://aider.chat",shortDescription:"Open-source terminal AI pair programmer"},generators:_X,capabilities:sA,emptyImportMessage:"No Aider config found (CONVENTIONS.md, .aider/skills, or .aiderignore).",lintRules:Cw,lint:{hooks:Ow,permissions:ww,mcp:bw},supportsConversion:{commands:true,agents:true},project:SX,globalSupport:{capabilities:sA,detectionPaths:[is,Oa,Or],layout:RX},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Er],global:[is]},canonicalDir:wO,canonicalRootFilename:"_root.md",markAsRoot:true},ignore:{feature:"ignore",mode:"flatFile",source:{project:[ss],global:[Oa]},canonicalDir:".agentsmesh",canonicalFilename:bO}},buildImportPaths:M_,detectionPaths:[Er,ss]};});function iA(e){let t=[];for(let r of e.rules){if(r.targets.length>0&&!r.targets.includes(wa))continue;let n=r.root?"_root":basename(r.source,".md");t.push({path:`${br}/${n}.md`,content:r.body.trim()});}return t}function aA(e){return e.agents.map(t=>({path:`${eo}/${t.name}.json`,content:JSON.stringify({name:t.name,...t.description?{description:t.description}:{},systemPrompt:t.body.trim(),...t.tools.length>0?{allowedTools:t.tools}:{}},null,2)}))}function lA(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Ei,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}var cA=d(()=>{hc();s(iA,"generateRules");s(aA,"generateAgents");s(lA,"generateMcp");});async function mA(e,t){let r=t?.scope??"project";return Q(Pf,e,r)}var pA=d(()=>{Ae();HS();s(mA,"importFromAmazonQ");});function uA(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:wa}))}var dA=d(()=>{Ee();hc();s(uA,"lintRules");});function fA(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[F(".agentsmesh/hooks.yaml","amazon-q","Amazon Q CLI hooks are per-agent only; canonical hooks are not projected as standalone config.")]:[]:[]}function gA(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?[]:[F(".agentsmesh/permissions.yaml","amazon-q","Amazon Q CLI permissions are per-agent (allowedTools); canonical permissions are not projected as standalone config.")]}var hA=d(()=>{Re();s(fA,"lintHooks");s(gA,"lintPermissions");});async function CX(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.systemPrompt=="string"?i.systemPrompt:"",p=await ve(n,{name:a,description:l,tools:c},m);return {destPath:n,toPath:`${G_}/${r}`,content:p}}var yA,_A=d(()=>{de();hc();s(CX,"amazonQAgentMapper");yA={rules:{feature:"rules",mode:"directory",source:{project:[br],global:[ls]},canonicalDir:Nw,extensions:[".md"],preset:"rule"},agents:{feature:"agents",mode:"directory",source:{project:[eo],global:[ba]},canonicalDir:G_,extensions:[".json"],map:CX},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Ei],global:[gc]},canonicalDir:".agentsmesh",canonicalFilename:vw}};});var SA,RA,kA=d(()=>{SA={rules:"native",additionalRules:"none",commands:"none",agents:"native",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},RA={rules:"native",additionalRules:"none",commands:"none",agents:"native",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"};});var EX,OX,wX,Pf,HS=d(()=>{cA();pA();dA();hA();Oe();_A();kA();hc();EX={name:wa,generateRules:iA,generateMcp:lA,generateAgents:aA,importFrom:mA},OX={managedOutputs:{dirs:[br,eo],files:[Ei]},paths:{rulePath(e,t){return `${br}/${e}.md`},commandPath(e,t){return null},agentPath(e,t){return `${eo}/${e}.json`}}},wX={managedOutputs:{dirs:[ls,ba],files:[gc]},rewriteGeneratedPath(e){return e.startsWith(`${eo}/`)?e.replace(`${eo}/`,`${ba}/`):e.startsWith(`${br}/`)?e.replace(`${br}/`,`${ls}/`):e===Ei?gc:e},paths:{rulePath(e,t){return `${ls}/${e}.md`},commandPath(e,t){return null},agentPath(e,t){return `${ba}/${e}.json`}}},Pf={id:wa,metadata:{displayName:"Amazon Q Developer",category:"ide",officialUrl:"https://aws.amazon.com/q/developer",shortDescription:"AWS AI coding assistant"},generators:EX,capabilities:SA,emptyImportMessage:"No Amazon Q Developer config found (.amazonq/rules/, .amazonq/cli-agents/, or .amazonq/mcp.json).",lintRules:uA,lint:{hooks:fA,permissions:gA},project:OX,globalSupport:{capabilities:RA,detectionPaths:[ls,gc,ba],layout:wX},importer:yA,buildImportPaths:$_,detectionPaths:[br,eo,Ei]};});function en(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(!Yn(i))continue;let a=Je(i),l=xt(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 ul=d(()=>{Lr();s(en,"buildClaudeHooksObjectFromCanonical");});function IA(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:Ar,content:o}]:[]}function LA(e){return ie(e,kt)}function CA(e){return e.commands.map(t=>({path:`${kt}/${J(t.name)}/SKILL.md`,content:Ge(t)}))}function EA(e){return e.agents.map(t=>({path:`${kt}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function OA(e,t){let r=[];if(t.has("mcp")&&e.mcp&&Object.keys(e.mcp.mcpServers).length>0&&r.push({path:er,content:JSON.stringify({"amp.mcpServers":e.mcp.mcpServers},null,2)}),t.has("hooks")&&e.hooks&&Object.keys(e.hooks).length>0){let n=en(e);Object.keys(n).length>0&&r.push({path:er,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:er,content:JSON.stringify({"amp.permissions":a},null,2)});}}return r}var wA=d(()=>{oe();Be();_e();be();ul();Aa();s(IA,"generateRules");s(LA,"generateSkills");s(CA,"generateCommands");s(EA,"generateAgents");s(OA,"buildAmpScopedSettings");});function fe(e,t,r){let n=r.some(o=>bX.includes(o));return e.startsWith(`${t}/`)&&!n?`.agents/skills/${e.slice(t.length+1)}`:null}var bX,dt=d(()=>{bX=["amp","antigravity","codex-cli","goose","replit-agent","zed"];s(fe,"mirrorSkillsToAgents");});async function AA(e,t,r){let n=await k(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 Xe(e,bA,l),r.push({fromTool:"amp",fromPath:t,toPath:bA,feature:"mcp"}));}var bA,xA=d(()=>{b();hn();Aa();bA=".agentsmesh/mcp.json";s(AA,"importAmpMcp");});async function TA(e,t={}){let r=t.scope??"project",n=[],o=await H("amp",e,r);return n.push(...await Q(Df,e,r,{normalize:o})),await ne(e,r==="global"?xr:kt,"amp",n,o),await AA(e,r==="global"?ms:er,n),n}var PA=d(()=>{ge();oe();Ae();xA();Aa();zS();s(TA,"importFromAmp");});function DA(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:"amp"}))}var NA=d(()=>{Ee();Aa();s(DA,"lintRules");});function vA(e){return e.ignore.length===0?[]:[F(".agentsmesh/ignore","amp","Amp has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}var FA=d(()=>{Re();s(vA,"lintIgnore");});function DX(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 xX,TX,PX,MA,Df,zS=d(()=>{be();_e();wA();dt();PA();NA();FA();Oe();Aa();xX={name:"amp",primaryRootInstructionPath:Ar,generateRules:IA,generateCommands:CA,generateAgents:EA,generateSkills:LA,importFrom:TA},TX={rootInstructionPath:Ar,skillDir:kt,managedOutputs:{dirs:[kt],files:[Ar,er]},paths:{rulePath(e){return Ar},commandPath(e){return `${kt}/${J(e)}/SKILL.md`},agentPath(e){return `${kt}/${V(e)}/SKILL.md`}}},PX={rootInstructionPath:cs,skillDir:xr,managedOutputs:{dirs:[xr],files:[cs,ms]},rewriteGeneratedPath(e){return e===Ar?cs:e===er?ms:e.startsWith(`${kt}/`)?e.replace(`${kt}/`,`${xr}/`):e},mirrorGlobalPath(e,t){return fe(e,xr,t)},paths:{rulePath(e){return cs},commandPath(e){return `${xr}/${J(e)}/SKILL.md`},agentPath(e){return `${xr}/${V(e)}/SKILL.md`}}},MA={rules:"native",additionalRules:"embedded",commands:"native",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"native"};s(DX,"mergeAmpSettings");Df={id:"amp",metadata:{displayName:"Amp",category:"cli",officialUrl:"https://ampcode.com",shortDescription:"Sourcegraph's coding agent"},generators:xX,capabilities:MA,emptyImportMessage:"No Amp config found (AGENTS.md, .agents/skills, or .amp/settings.json).",lintRules:DA,lint:{ignore:vA},supportsConversion:{commands:true,agents:true},project:TX,globalSupport:{capabilities:MA,detectionPaths:[cs,ms],layout:PX},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Ar],global:[cs]},canonicalDir:Mw,canonicalRootFilename:"_root.md",markAsRoot:true}},emitScopedSettings(e,t,r){return OA(e,r)},mergeGeneratedOutputContent(e,t,r,n){return n===er||n===ms?DX(t?.content??e,r):null},sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:U_,detectionPaths:[Ar,er],conversionDefaults:{commandsToSkills:true,agentsToSkills:true}};});function GA(e){let t=e.rules.find(n=>n.root);if(!t)return [];let r=[{path:Tr,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:`${yn}/${o}.md`,content:n.body.trim()||""});}return r}function $A(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:`${
|
|
67
|
-
`)}]}var
|
|
68
|
-
`).map(a=>a.trim()).filter(a=>a.length>0&&!a.startsWith("#"));if(o.length===0)return;let i=join(e,
|
|
69
|
-
`)),r.push({fromTool:
|
|
66
|
+
${n}`:n||r;return {path:`${to}/${t.name}.md`,content:o}})}function jA(e){return ie(e,_n)}function UA(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:_p,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function BA(e){return e.agents.map(t=>({path:`${_n}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function KA(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 WA(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=en(e);return Object.keys(t).length===0?[]:[{path:Sp,content:JSON.stringify(t,null,2)}]}function HA(e){return []}var zA=d(()=>{oe();Be();_e();ul();Pa();s(GA,"generateRules");s($A,"generateCommands");s(jA,"generateSkills");s(UA,"generateMcp");s(BA,"generateAgents");s(KA,"renderAntigravityGlobalInstructions");s(WA,"generateHooks");s(HA,"generatePermissions");});var VA,JA,YA=d(()=>{Ea();VA={rules:"native",additionalRules:"native",commands:un("partial","workflows"),agents:"none",skills:"native",mcp:"none",hooks:"native",ignore:"none",permissions:"partial"},JA={rules:"native",additionalRules:"embedded",commands:un("partial","workflows"),agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"partial"};});function vX(e){let t=e.replace(/\\/g,"/");return !t.startsWith("rules/")||t.endsWith("/")||!t.endsWith(".md")?null:t}async function Mo(e){let t=SO(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=vX(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}=x(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 Wc=d(()=>{b();B();Be();de();s(vX,"canonicalRulePath");s(Mo,"splitEmbeddedRulesToCanonical");});async function FX(e,t,r,n){let o=n==="global"?ro:Tr,i=n==="project"?[o,yp]:[o];for(let a of i){let l=join(e,a),c=await k(l);if(c===null)continue;let m=join(e,K_),p=await Mo({content:c,projectRoot:e,rulesDir:Ta,sourcePath:l,fromTool:xa,normalize:r});t.push(...p.results);let{body:u}=x(r(p.rootContent,l,m)),f=await z(m,{root:true},u);await O(join(e,Ta)),await L(m,f),t.push({fromTool:xa,fromPath:l,toPath:K_,feature:"rules"});return}}async function QA(e,t={}){let r=t.scope??"project",n=[],o=await H(xa,e,r);return await FX(e,n,o,r),n.push(...await Q(Nf,e,r,{normalize:o})),await ne(e,r==="global"?no:_n,xa,n,o),n}var qA=d(()=>{ge();b();B();oe();Ae();de();Wc();Pa();JS();s(FX,"importRootRule");s(QA,"importFromAntigravity");});var tx,rx,nx=d(()=>{B();de();Pa();tx=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}=x(t(n));return {destPath:n,toPath:`${Ta}/${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"),rx=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n));return {destPath:n,toPath:`${sf}/${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 ox(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:xa}))}var sx=d(()=>{Ee();Pa();s(ox,"lintRules");});function ix(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?[]:[F(".agentsmesh/permissions.yaml","antigravity","Antigravity permissions are managed via tool approval in Gemini IDE; canonical permissions are not projected as config files.")]}var ax=d(()=>{Re();s(ix,"lintPermissions");});var MX,GX,$X,Nf,JS=d(()=>{_e();zA();Pa();YA();qA();nx();sx();ax();Oe();MX={name:"antigravity",primaryRootInstructionPath:Tr,generateRules:GA,generateCommands:$A,generateAgents:BA,generateSkills:jA,generateMcp:UA,generateHooks:WA,generatePermissions:HA,importFrom:QA},GX={rootInstructionPath:Tr,skillDir:".agents/skills",managedOutputs:{dirs:[yn,to,_n],files:[Tr,Sp]},rewriteGeneratedPath(e){return e===_p?null:e},paths:{rulePath(e,t){return `${yn}/${e}.md`},commandPath(e,t){return `${to}/${e}.md`},agentPath(e){return `${_n}/${V(e)}/SKILL.md`}}},$X={rootInstructionPath:ro,renderPrimaryRootInstruction:KA,skillDir:no,managedOutputs:{dirs:[no,Rp],files:[ro,yc,B_]},rewriteGeneratedPath(e){return e===Sp?B_:e===Tr?ro:e.startsWith(`${yn}/`)?null:e.startsWith(".agents/skills/")?e.replace(".agents/skills",no):e.startsWith(`${to}/`)?e.replace(to,Rp):e===_p?yc:e},paths:{rulePath(e,t){return ro},commandPath(e,t){return `${Rp}/${e}.md`},agentPath(e){return `${no}/${V(e)}/SKILL.md`}}},Nf={id:"antigravity",metadata:{displayName:"Antigravity",category:"ide",officialUrl:"https://antigravity.google",shortDescription:"Google's agentic IDE"},generators:MX,capabilities:VA,emptyImportMessage:"No Antigravity config found (.agents/rules/, .agents/skills/, or .agents/workflows/).",supportsConversion:{agents:true},lintRules:ox,lint:{permissions:ix},project:GX,globalSupport:{capabilities:JA,detectionPaths:[".gemini/antigravity/GEMINI.md",".gemini/antigravity/skills",".gemini/antigravity/workflows",".gemini/antigravity/mcp_config.json"],layout:$X},importer:{rules:{feature:"rules",mode:"directory",source:{project:[yn]},canonicalDir:Ta,extensions:[".md"],map:tx},commands:{feature:"commands",mode:"directory",source:{project:[to],global:[Rp]},canonicalDir:sf,extensions:[".md"],map:rx},mcp:{feature:"mcp",mode:"flatFile",source:{global:[yc]},canonicalDir:".agentsmesh",canonicalFilename:$w}},buildImportPaths:W_,detectionPaths:[".agents/rules/general.md",".agents/rules/",".agents/skills/",".agents/workflows/"],conversionDefaults:{agentsToSkills:true}};});function UX(e){let t={};return e.description&&(t.description=e.description),e.globs.length>0||e.trigger==="manual"||e.trigger==="model_decision"?(t.agent_requested=true,e.globs.length>0&&(t.globs=e.globs)):t.always_apply=true,t}function BX(e){let t={};return e.description&&(t.description=e.description),t}function lx(e){let t=[];for(let r of e.rules)if(!(r.targets.length>0&&!r.targets.includes(ct)))if(r.root){let n={always_apply:true};r.description&&(n.description=r.description),t.push({path:`${tr}/_root.md`,content:T(n,r.body.trim())});}else {let n=basename(r.source,".md");t.push({path:`${tr}/${n}.md`,content:T(UX(r),r.body.trim())});}return t}function cx(e){return e.commands.map(t=>({path:`${Pr}/${t.name}.md`,content:T(BX(t),t.body.trim())}))}function KX(e){let t={name:e.name};return e.description&&(t.description=e.description),t}function mx(e){return e.agents.map(t=>({path:`${ps}/${t.name}.md`,content:T(KX(t),t.body.trim())}))}function px(e){return ie(e,rr)}function ux(e){return e.ignore.length===0?[]:[{path:so,content:e.ignore.join(`
|
|
67
|
+
`)}]}var dx=d(()=>{oe();B();Na();s(UX,"ruleFrontmatter");s(BX,"commandFrontmatter");s(lx,"generateRules");s(cx,"generateCommands");s(KX,"agentFrontmatter");s(mx,"generateAgents");s(px,"generateSkills");s(ux,"generateIgnore");});function HX(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 gx(e,t,r){let n=await k(join(e,t));if(n===null)return;let o;try{o=JSON.parse(n);}catch{return}if(o.mcpServers&&typeof o.mcpServers=="object"){let a=o.mcpServers;await Xe(e,V_,a),r.push({fromTool:ct,fromPath:join(e,t),toPath:V_,feature:"mcp"});}let i=o.hooks;if(i&&typeof i=="object"&&!Array.isArray(i)){let a=HX(i);if(Object.keys(a).length>0){let l=join(e,J_);await O(dirname(l)),await L(l,stringify(a)),r.push({fromTool:ct,fromPath:join(e,t),toPath:J_,feature:"hooks"});}}}async function hx(e,t,r){let n=await k(join(e,t));if(n===null)return;let o=n.split(`
|
|
68
|
+
`).map(a=>a.trim()).filter(a=>a.length>0&&!a.startsWith("#"));if(o.length===0)return;let i=join(e,Y_);await O(dirname(i)),await L(i,o.join(`
|
|
69
|
+
`)),r.push({fromTool:ct,fromPath:join(e,t),toPath:Y_,feature:"ignore"});}var yx=d(()=>{b();hn();Na();s(HX,"augmentHooksToCanonical");s(gx,"importAugmentSettings");s(hx,"importAugmentIgnore");});function zX(e,t){let r={root:t,description:typeof e.description=="string"?e.description:void 0,globs:Array.isArray(e.globs)?e.globs:[]};return e.agent_requested===true&&(r.trigger="model_decision"),r}async function VX(e,t,r,n){let o=n==="global"?us:tr,i=join(e,H_);t.push(...await Se({srcDir:join(e,o),destDir:i,extensions:[".md"],fromTool:ct,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}=x(l(m));return {destPath:m,toPath:`${H_}/${a}`,feature:"rules",content:await z(m,zX(p,c),u)}},"mapEntry")}));}async function JX(e,t,r,n){let o=n==="global"?ds:Pr,i=join(e,".agentsmesh/commands");t.push(...await Se({srcDir:join(e,o),destDir:i,extensions:[".md"],fromTool:ct,normalize:r,mapEntry:s(async({relativePath:a,normalizeTo:l})=>{let c=basename(a,".md"),m=join(i,`${c}.md`),{frontmatter:p,body:u}=x(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 YX(e,t,r,n){let o=n==="global"?Da:ps,i=join(e,z_);t.push(...await Se({srcDir:join(e,o),destDir:i,extensions:[".md"],fromTool:ct,normalize:r,mapEntry:s(async({relativePath:a,normalizeTo:l})=>{let c=join(i,a),{frontmatter:m,body:p}=x(l(c));return {destPath:c,toPath:`${z_}/${a}`,feature:"agents",content:await ve(c,m,p)}},"mapEntry")}));}async function Sx(e,t={}){let r=t.scope??"project",n=[],o=await H(ct,e,r);return await VX(e,n,o,r),await JX(e,n,o,r),await YX(e,n,o,r),await ne(e,r==="global"?io:rr,ct,n,o),await gx(e,r==="global"?fs:oo,n),r==="project"&&await hx(e,so,n),n}var Rx=d(()=>{ge();Zt();oe();de();B();yx();Na();s(zX,"canonicalRuleMeta");s(VX,"importRules");s(JX,"importCommands");s(YX,"importAgents");s(Sx,"importFromAugmentCode");});function kx(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:ct}))}var Ix=d(()=>{Ee();Na();s(kx,"lintRules");});function Cx(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=new Set(Lx);return Object.keys(e.hooks).filter(r=>!t.has(r)).map(r=>Ci(r,"augment-code",Lx,{unsupportedBy:"AugmentCode hooks"}))}var Lx,Ex=d(()=>{Re();Lx=["PreToolUse","PostToolUse","SessionStart","SessionEnd","Stop"];s(Cx,"lintHooks");});function QX(e){let t={};for(let[r,n]of Object.entries(e)){if(!n||n.length===0)continue;let o=n.map(i=>({matcher:i.matcher,hooks:[{type:"command",command:i.command,...i.timeout!==void 0?{timeout:i.timeout}:{}}]}));t[r]=o;}return t}function qX(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),JSON.stringify(r,null,2)}function ZX(e,t){let r={};return t.has("mcp")&&e.mcp&&Object.keys(e.mcp.mcpServers).length>0&&(r.mcpServers=e.mcp.mcpServers),t.has("hooks")&&e.hooks&&Object.keys(e.hooks).length>0&&(r.hooks=QX(e.hooks)),Object.keys(r).length===0?null:JSON.stringify(r,null,2)}var XX,eQ,tQ,rQ,nQ,Ox,wx=d(()=>{dx();Rx();Ix();Ex();Oe();Na();XX={name:ct,generateRules:lx,generateCommands:cx,generateAgents:mx,generateSkills:px,generateIgnore:ux,importFrom:Sx};s(QX,"serializeHooksForSettings");s(qX,"mergeAugmentSettings");s(ZX,"buildSettingsContent");eQ={skillDir:rr,managedOutputs:{dirs:[tr,Pr,ps,rr],files:[oo,so]},paths:{rulePath(e){return `${tr}/${e}.md`},commandPath(e){return `${Pr}/${e}.md`},agentPath(e){return `${ps}/${e}.md`}}},tQ={skillDir:io,managedOutputs:{dirs:[us,ds,Da,io],files:[fs]},rewriteGeneratedPath(e){return e.startsWith(`${tr}/`)?e.replace(`${tr}/`,`${us}/`):e.startsWith(`${Pr}/`)?e.replace(`${Pr}/`,`${ds}/`):e.startsWith(`${rr}/`)?e.replace(`${rr}/`,`${io}/`):e===oo?fs:e===so?null:e},paths:{rulePath(e){return `${us}/${e}.md`},commandPath(e){return `${ds}/${e}.md`},agentPath(e){return `${Da}/${e}.md`}}},rQ={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},nQ={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},Ox={id:ct,metadata:{displayName:"Augment Code",category:"ide",officialUrl:"https://www.augmentcode.com",shortDescription:"Codebase-aware AI for IDEs"},generators:XX,capabilities:rQ,emptyImportMessage:"No AugmentCode config found (.augment/rules, .augment/commands, .augment/skills, .augment/settings.json, or .augmentignore).",lintRules:kx,lint:{hooks:Cx},project:eQ,globalSupport:{capabilities:nQ,detectionPaths:[us,ds,io,fs],layout:tQ},emitScopedSettings(e,t,r){let n=ZX(e,r);return n===null?[]:[{path:oo,content:n}]},mergeGeneratedOutputContent(e,t,r,n){return n===oo||n===fs?qX(e,r):null},buildImportPaths:X_,detectionPaths:[tr,Pr,rr,oo,so]};});function bx(e){let t=[],r=e.rules.find(o=>o.root);r&&t.push({path:gs,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=T(a,o.body.trim()||"");t.push({path:`${Lp}/${i}.md`,content:l});}return t}function Ax(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=T(r,t.body.trim()||"");return {path:`${Cp}/${t.name}.md`,content:n}})}function xx(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=
|
|
71
|
+
${n}`,i=T(r,o);return {path:`${Ep}/${t.name}.md`,content:i}})}function Tx(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:_c,content:t}]}function Px(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=
|
|
74
|
-
`);return [{path:
|
|
73
|
+
${o}`,a=T(n,i);t.push({path:`${Op}/${r.name}/SKILL.md`,content:a});for(let l of r.supportingFiles){let c=l.relativePath.replace(/\\/g,"/");t.push({path:`${Op}/${r.name}/${c}`,content:l.content});}}return t}function Dx(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:wp,content:o}]}function Nx(e,t){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let r=en(e);if(Object.keys(r).length===0)return [];if(t?.scope==="global")return [{path:hs,content:JSON.stringify(r,null,2)}];let n=JSON.stringify({hooks:r},null,2);return [{path:wp,content:n}]}function vx(e){if(!e.ignore||e.ignore.length===0)return [];let t=e.ignore.join(`
|
|
74
|
+
`);return [{path:bp,content:t}]}var Fx=d(()=>{B();ys();ul();s(bx,"generateRules");s(Ax,"generateCommands");s(xx,"generateAgents");s(Tx,"generateMcp");s(Px,"generateSkills");s(Dx,"generatePermissions");s(Nx,"generateHooks");s(vx,"generateIgnore");});function iQ(e){let t=e.description.trim();return t||(basename(e.source)||"rule").replace(/\.md$/i,"")||"Rule"}function Mx(e){let t=e.rules.find(o=>o.root),r=(t?.body??"").trim();return r?`# Global Instructions
|
|
75
75
|
|
|
76
|
-
## ${t?
|
|
76
|
+
## ${t?iQ(t):"Guidance"}
|
|
77
77
|
|
|
78
78
|
${r}
|
|
79
|
-
`:""}var
|
|
80
|
-
`);continue}let h=await U(c);for(let
|
|
79
|
+
`:""}var Gx=d(()=>{s(iQ,"ruleSectionTitle");s(Mx,"renderClaudeGlobalPrimaryInstructions");});function jx(e,t){return e===null?"created":e!==t?"updated":"unchanged"}async function Ux(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=T(c,l.body.trim()),p=`${Q_}/${l.name}.md`,u=await k(join(t,p));a.push({target:"claude-code",path:p,content:m,currentContent:u??void 0,status:jx(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=T(c,l.body.trim()),p=`${Q_}/${l.name}.md`,u=await k(join(t,p));a.push({target:"claude-code",path:p,content:m,currentContent:u??void 0,status:jx(u,m)});}return a}var Bx=d(()=>{b();B();ys();s(jx,"computeStatus");s(Ux,"generateClaudeGlobalExtras");});function Kx(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(!Yn({...m,type:p}))continue;let u=p==="prompt"?xt(m)||Je(m):Je(m)||xt(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 Wx(e,t){let r=join(e,hs),n=await k(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=Kx(o);if(Object.keys(i).length===0)return false;let a=stringify(i),l=join(e,va);return await O(dirname(l)),await L(l,a),t.push({fromTool:"claude-code",fromPath:r,toPath:va,feature:"hooks"}),true}async function Hx(e,t){let r=t.some(m=>m.feature==="hooks"&&m.fromPath.replace(/\\/g,"/").endsWith(hs)),n=join(e,wp),o=await k(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 Xe(e,Tp,m),t.push({fromTool:"claude-code",fromPath:n,toPath:Tp,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,Z_);await O(dirname(h)),await L(h,g),t.push({fromTool:"claude-code",fromPath:n,toPath:Z_,feature:"permissions"});}}let c=i.hooks;if(!r&&c&&typeof c=="object"&&!Array.isArray(c)){let m=Kx(c);if(Object.keys(m).length>0){let p=stringify(m),u=join(e,va);await O(dirname(u)),await L(u,p),t.push({fromTool:"claude-code",fromPath:n,toPath:va,feature:"hooks"});}}}var zx=d(()=>{Lr();b();hn();ys();s(Kx,"claudeHooksToCanonical");s(Wx,"importClaudeHooksJson");s(Hx,"importSettings");});async function Jx(e,t,r){let n=join(e,Op),o=join(e,q_),a=(await U(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 k(l);if(u===null)continue;let f=r(u,l,join(p,"SKILL.md")),g=ln(f,l);if(!g.ok){process.stderr.write(`\u26A0 skipping ${l}: ${g.error.message}
|
|
80
|
+
`);continue}let h=await U(c);for(let _ of h){let S=await k(_);if(S===null)continue;let R=relative(c,_),I=join(p,R);await O(dirname(I));let w=r(S,_,I);await L(I,R==="SKILL.md"?await Xn(I,g.value.frontmatter,g.value.body):w);let D=`${q_}/${m}/${R}`;t.push({fromTool:"claude-code",fromPath:_,toPath:D,feature:"skills"});}}}var Yx=d(()=>{b();B();de();ys();s(Jx,"importClaudeSkills");});async function Xx(e,t={}){let r=t.scope??"project",n=[],o=await H("claude-code",e,r);return n.push(...await Q(vf,e,r,{normalize:o})),await Jx(e,n,o),await Wx(e,n),await Hx(e,n),n}var Qx=d(()=>{ge();Ae();zx();Yx();QS();s(Xx,"importFromClaudeCode");});var qx,Zx,eT,tT=d(()=>{B();de();qt();ys();qx=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n));return {destPath:n,toPath:`${xp}/${e}`,content:await z(n,{...o,root:false},i)}},"claudeRuleMapper"),Zx=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n)),a=wr(o.allowedTools),l=a.length>0?a:wr(o["allowed-tools"]);return {destPath:n,toPath:`${af}/${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"),eT=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n));return {destPath:n,toPath:`${lf}/${e}`,content:await ve(n,o,i)}},"claudeAgentMapper");});function rT(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(i=>({...i,target:Bw}))}var nT=d(()=>{Ee();ys();s(rT,"lintRules");});var cQ,oT,mQ,pQ,vf,QS=d(()=>{Fx();ys();dt();Gx();Bx();Qx();tT();nT();Oe();cQ={name:"claude-code",primaryRootInstructionPath:gs,generateRules:bx,generateCommands:Ax,generateAgents:xx,generateSkills:Px,generateMcp:Tx,generatePermissions:Dx,generateHooks:Nx,generateIgnore:vx,importFrom:Xx},oT={rootInstructionPath:gs,skillDir:".claude/skills",managedOutputs:{dirs:[".claude/agents",".claude/commands",".claude/rules",".claude/skills"],files:[gs,Oi,".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`}}},mQ={rootInstructionPath:Oi,skillDir:".claude/skills",renderPrimaryRootInstruction:Mx,managedOutputs:{dirs:[".claude/agents",".claude/commands",".claude/rules",".claude/skills",".claude/output-styles",".agents/skills"],files:[Oi,".claude/settings.json",Ap,hs,".claudeignore"]},rewriteGeneratedPath(e){return e===gs?Oi:e===_c?Ap:e},mirrorGlobalPath(e,t){return fe(e,".claude/skills",t)},paths:oT.paths},pQ={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"native"},vf={id:"claude-code",metadata:{displayName:"Claude Code",category:"cli",officialUrl:"https://www.anthropic.com/claude-code",shortDescription:"Anthropic's terminal coding agent"},generators:cQ,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:rT,project:oT,globalSupport:{capabilities:pQ,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:mQ,scopeExtras:Ux},importer:{rules:[{feature:"rules",mode:"singleFile",source:{project:[gs,Oi],global:[Oi]},canonicalDir:xp,canonicalRootFilename:"_root.md",markAsRoot:true},{feature:"rules",mode:"directory",source:{project:[Lp],global:[Lp]},canonicalDir:xp,extensions:[".md"],map:qx}],commands:{feature:"commands",mode:"directory",source:{project:[Cp],global:[Cp]},canonicalDir:af,extensions:[".md"],map:Zx},agents:{feature:"agents",mode:"directory",source:{project:[Ep],global:[Ep]},canonicalDir:lf,extensions:[".md"],map:eT},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[_c],global:[Ap]},canonicalDir:".agentsmesh",canonicalFilename:Tp},ignore:{feature:"ignore",mode:"flatFile",source:{project:[bp],global:[bp]},canonicalDir:".agentsmesh",canonicalFilename:Kw}},buildImportPaths:eS,detectionPaths:[gs,Oi,".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 ZS(e){return e.agents.map(t=>({path:`${nr}/${t.name}.md`,content:T({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 sT=d(()=>{B();Dr();s(ZS,"generateAgents");});function dQ(e){let t=basename(e,".md");return t==="_root"?"root":t}function iT(e){let t=[],r=e.rules.find(n=>n.root);if(r){let n=r.body.trim()?r.body:"";t.push({path:bi,content:n});}for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes("cline"))continue;let o=dQ(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?T(i,n.body.trim()||""):n.body.trim()||"";t.push({path:`${_s}/${o}.md`,content:a});}return t}function aT(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:`${
|
|
83
|
-
`);return [{path:
|
|
84
|
-
`)}function
|
|
82
|
+
${n}`:r||n;return {path:`${Rs}/${t.name}.md`,content:o}})}function lT(e){if(!e.ignore||e.ignore.length===0)return [];let t=e.ignore.join(`
|
|
83
|
+
`);return [{path:Fa,content:t}]}function cT(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:Ss,content:t}]}function fQ(e){return e.replace(/[^a-zA-Z0-9]/g,"-").toLowerCase()}function eR(e){return e.replace(/[\r\n]+/g," ")}function gQ(e,t,r){return ["#!/usr/bin/env bash",`# agentsmesh-event: ${eR(e)}`,`# agentsmesh-matcher: ${eR(r)}`,`# agentsmesh-command: ${eR(t)}`,"set -eu",t,""].join(`
|
|
84
|
+
`)}function mT(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)mn(i)&&(t.push({path:`${Ma}/${fQ(r)}-${o}.sh`,content:gQ(r,i.command,i.matcher)}),o++);}return t}function pT(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=T(n,r.body.trim()||"");t.push({path:`${Pt}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${Pt}/${r.name}/${a}`,content:i.content});}}return t}var uT=d(()=>{Lr();B();Dr();sT();s(dQ,"ruleSlug");s(iT,"generateRules");s(aT,"generateCommands");s(lT,"generateIgnore");s(cT,"generateMcp");s(fQ,"safeEventName");s(eR,"safeShellLine");s(gQ,"buildHookScript");s(mT,"generateHooks");s(pT,"generateSkills");});async function dT(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}=x(r(o)),l=as(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:`${Ai}/${n}`,feature:"rules",content:await z(o,c,a)}}async function fT(e,t,r){let n=join(t,e),{frontmatter:o,body:i}=x(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:`${
|
|
88
|
-
`)),t.push({fromTool:"cline",fromPath:o,toPath:
|
|
87
|
+
`)&&(l=u,c=true,m=i.slice(p+2));}}return {destPath:n,toPath:`${cf}/${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 gT(e,t,r){let n=join(t,e),{frontmatter:o,body:i}=x(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 ve(n,a,i)}}var rR=d(()=>{B();de();qt();Dr();s(dT,"mapClineRuleFile");s(fT,"mapClineWorkflowFile");s(gT,"mapClineAgentFile");});async function hT(e,t,r){let n=join(e,Ai),o=join(e,_s),i=join(e,_s),a=false;try{a=(await stat(i)).isFile();}catch{}if(a){let p=await k(i);if(p!==null){await O(n);let u=join(n,"_root.md"),{frontmatter:f,body:g}=x(r(p,i,u)),_=f.root===true?f:{...f,root:true},S=await z(u,_,g);await L(u,S),t.push({fromTool:"cline",fromPath:i,toPath:`${Ai}/_root.md`,feature:"rules"});}return a}let l=null,c=join(o,"_root.md"),m=await k(c);if(m===null){let p=join(e,bi),u=await k(p);if(u!==null){l=p,await O(n);let f=join(n,"_root.md"),{frontmatter:g,body:h}=x(r(u,p,f)),S=g.root===true?g:{...g,root:true},R=await z(f,S,h);await L(f,R),t.push({fromTool:"cline",fromPath:p,toPath:`${Ai}/_root.md`,feature:"rules"});}else {let h=(await U(o)).filter(_=>_.endsWith(".md")&&!_.includes("/workflows/")).sort()[0];if(h){let _=await k(h);if(_!==null){l=h,await O(n);let S=join(n,"_root.md"),{frontmatter:R,body:I}=x(r(_,h,S)),D=R.root===true?R:{...R,root:true},P=await z(S,D,I);await L(S,P),t.push({fromTool:"cline",fromPath:h,toPath:`${Ai}/_root.md`,feature:"rules"});}}}}else {l=c,await O(n);let p=join(n,"_root.md"),{frontmatter:u,body:f}=x(r(m,c,p)),h=u.root===true?u:{...u,root:true},_=await z(p,h,f);await L(p,_),t.push({fromTool:"cline",fromPath:c,toPath:`${Ai}/_root.md`,feature:"rules"});}return t.push(...await Se({srcDir:o,destDir:n,extensions:[".md"],fromTool:"cline",normalize:r,mapEntry:s(async({srcPath:p,relativePath:u,normalizeTo:f})=>p===l?null:dT(u,n,f),"mapEntry")})),a}var yT=d(()=>{b();B();de();Zt();rR();Dr();s(hT,"importClineRules");});function _T(e){return e===null||typeof e!="object"||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="string"))}function yQ(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=_T(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:_T(t.headers),env:o}:null}async function ST(e,t){let r=[Ss,Hw].map(c=>join(e,c)),n=null,o=null;for(let c of r){let m=await k(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=yQ(p);u&&(c[m]=u);}Object.keys(c).length>0&&(await O(join(e,".agentsmesh")),await L(join(e,nS),JSON.stringify({mcpServers:c},null,2)),t.push({fromTool:wi,fromPath:i,toPath:nS,feature:"mcp"}));}}var RT=d(()=>{b();Dr();s(_T,"toStringRecord");s(yQ,"mapClineServerToCanonical");s(ST,"importClineMcp");});function kT(e){return _Q.some(t=>t.test(e))}var _Q,IT=d(()=>{_Q=[/^\./,/^_ab-agent-/,/^_ab-command-/,/\.fixture\./,/\.test\./];s(kT,"isReservedArtifactName");});async function RQ(e){let t=await U(e).catch(()=>[]),r=[];for(let n of t){let o=relative(e,n).replace(/\\/g,"/"),i=basename(o);if(kT(i))continue;let a=await k(n);a!==null&&r.push({absolutePath:n,relativePath:o,content:a});}return r}async function au(e,t,r){let n=await RQ(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}=x(l),p=await Xn(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 CT(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}=x(a),m=await Xn(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 lu(e){let t=new Map;try{let n=(await U(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 Hc(e,t,r=[]){for(let n of e){let o=join(t.projectRoot,n),i=await lu(o);if(i.size===0)continue;let a=false;for(let[l,c]of i){let m=join(c,"SKILL.md"),p=await k(m);if(p===null)continue;a=true;let{frontmatter:u,body:f}=x(p),g={skillName:l,skillDir:c,skillMdPath:m,rawContent:p,frontmatter:u,rawBody:f,options:t},h=false;for(let _ of r)if(await _.recognize(g)){h=true;break}h||await au(l,c,t);}if(a)return}}function zc(e){return {async recognize(t){let r=cc(t.frontmatter,t.skillName);if(!r)return false;let{options:n}=t;await Qn(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,ki(r,a)),n.results.push({fromTool:n.targetName,fromPath:t.skillMdPath,toPath:`${e.canonicalAgentsDir}/${r.name}.md`,feature:"agents"}),true}}}function ET(e){return {async recognize(t){let r=Vd(t.frontmatter,t.skillName);if(!r)return false;let{options:n}=t;await Qn(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,Jd(r,a)),n.results.push({fromTool:n.targetName,fromPath:t.skillMdPath,toPath:`${e.canonicalCommandsDir}/${r.name}.md`,feature:"commands"}),true}}}var Vc=d(()=>{b();B();de();IT();_e();be();pp();s(RQ,"readNativeSkill");s(au,"importDirectorySkill");s(CT,"importFlatSkill");s(lu,"findDirectorySkills");s(Hc,"importSkillsDirectory");s(zc,"projectedAgentRecognizer");s(ET,"commandSkillRecognizer");});async function OT(e,t,r,n=Pt){await Hc([n],{projectRoot:e,destCanonicalSkillsDir:zw,targetName:"cline",normalize:r,results:t},[zc({canonicalAgentsDir:Pp})]);}var wT=d(()=>{Vc();Dr();s(OT,"importClineSkills");});function sR(e,t){return e.match(new RegExp(`^# agentsmesh-${t}:\\s*(.+)$`,"m"))?.[1]?.trim()??null}async function bT(e,t){let n=(await U(e).catch(()=>[])).filter(o=>basename(o).endsWith(".sh")&&dirname(o)===e);for(let o of n){let i=await k(o);if(!i)continue;let a=sR(i,"event"),l=sR(i,"command");if(!a||!l)continue;let c=sR(i,"matcher")??"*";t[a]||(t[a]=[]),t[a].push({matcher:c,command:l});}}async function xT(e,t){let r={};if(await bT(join(e,Ma),r),await bT(join(e,ja),r),Object.keys(r).length===0)return;let n=join(e,tS);await O(dirname(n)),await L(n,stringify(r)),t.push({fromTool:wi,fromPath:join(e,ja),toPath:tS,feature:"hooks"});}var TT=d(()=>{b();Dr();s(sR,"extractMeta");s(bT,"loadHooksFromDir");s(xT,"importClineHooks");});async function PT(e){let t=[],r=await H(wi,e),n=await hT(e,t,r),o=join(e,Fa),i=await k(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,rS);await L(m,c.join(`
|
|
88
|
+
`)),t.push({fromTool:"cline",fromPath:o,toPath:rS,feature:"ignore"});}}await ST(e,t);let a=join(e,cf);return n||t.push(...await Se({srcDir:join(e,Rs),destDir:a,extensions:[".md"],fromTool:"cline",normalize:r,mapEntry:s(({relativePath:l,normalizeTo:c})=>fT(l,a,c),"mapEntry")})),await OT(e,t,r),t.push(...await Se({srcDir:join(e,nr),destDir:join(e,Pp),extensions:[".md"],fromTool:"cline",normalize:r,mapEntry:s(({relativePath:l,normalizeTo:c})=>gT(l,join(e,Pp),c),"mapEntry")})),await xT(e,t),t}var DT=d(()=>{ge();b();Zt();rR();yT();Dr();RT();wT();TT();s(PT,"importFromCline");});function NT(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(i=>({...i,target:wi}))}var vT=d(()=>{Ee();Dr();s(NT,"lintRules");});function FT(e){return e.commands.filter(t=>t.description.length>0||t.allowedTools.length>0).map(t=>F(t.source,"cline","cline workflow files are plain Markdown; command description and allowed-tools metadata are not projected."))}function MT(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[F(".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 GT=d(()=>{Re();s(FT,"lintCommands");s(MT,"lintHooks");});var LQ,CQ,EQ,OQ,$T,jT=d(()=>{uT();Ea();Dr();DT();vT();GT();Oe();LQ={name:"cline",primaryRootInstructionPath:bi,generateRules:iT,generateCommands:aT,generateAgents:ZS,generateSkills:pT,generateMcp:cT,generateHooks:mT,generateIgnore:lT,importFrom:PT},CQ={rootInstructionPath:bi,skillDir:".cline/skills",managedOutputs:{dirs:[nr,".cline/skills",".clinerules",".clinerules/hooks",".clinerules/workflows"],files:["AGENTS.md",".cline/cline_mcp_settings.json",".clineignore",".clinerules/typescript.md"]},paths:{rulePath(e,t){return `${_s}/${e}.md`},commandPath(e,t){return `${Rs}/${e}.md`},agentPath(e){return `${nr}/${e}.md`}}},EQ={skillDir:Pt,managedOutputs:{dirs:[Ga,$a,ja,Pt,nr,".agents/skills"],files:[Ss,Fa]},rewriteGeneratedPath(e){return e===bi?null:e.startsWith(`${Ma}/`)?`${ja}/${e.slice(Ma.length+1)}`:e.startsWith(`${Rs}/`)?`${$a}/${e.slice(Rs.length+1)}`:e.startsWith(`${_s}/`)?`${Ga}/${e.slice(_s.length+1)}`:e},mirrorGlobalPath(e,t){return e.startsWith(`${Pt}/`)?`.agents/skills/${e.slice(Pt.length+1)}`:null},paths:{rulePath(e,t){return `${Ga}/${e}.md`},commandPath(e,t){return `${$a}/${e}.md`},agentPath(e){return `${nr}/${e}.md`}}},OQ={rules:"native",additionalRules:"native",commands:un("native","workflows"),agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},$T={id:"cline",metadata:{displayName:"Cline",category:"ide",officialUrl:"https://cline.bot",shortDescription:"Autonomous coding agent for VS Code"},generators:LQ,capabilities:{rules:"native",additionalRules:"native",commands:un("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:NT,lint:{commands:FT,hooks:MT},project:CQ,globalSupport:{capabilities:OQ,detectionPaths:[Ga,$a,ja,Pt,nr,Ss,Fa],layout:EQ},buildImportPaths:oS,detectionPaths:[".clinerules",".cline"],nativeInstall:{pickPaths:[{prefix:Pt,feature:"skills",strategy:{kind:"skillDir"}},{prefix:Rs,feature:"commands",strategy:{kind:"basename",suffix:".md"}}]},conversionDefaults:{agentsToSkills:true}};});var ft,UT,Js,fl,BT,Go,KT,Mf,Ys,gl,$o,hl,Xs,WT,cu,HT,iR,aR,zT,lR,VT,JT,cR,mR,pR,nt=d(()=>{ft="codex-cli",UT="codex.md",Js="AGENTS.md",fl=".codex/AGENTS.md",BT=".codex/AGENTS.override.md",Go=".agents/skills",KT=".codex/skills",Mf=".codex/config.toml",Ys=".codex/hooks.json",gl=".codex/instructions",$o=".codex/rules",hl=".codex/agents",Xs=".agentsmesh/rules",WT=".agentsmesh/commands",cu=".agentsmesh/agents",HT=".agentsmesh/skills",iR=".agentsmesh/mcp.json",aR=".agentsmesh/hooks.yaml",zT="am-codex-rule:v1",lR="# am-json: ",VT="# am-body-b64-begin",JT="# am-body-b64-end",cR="# am64:",mR="<!-- agentsmesh:codex-rule-index:start -->",pR="<!-- agentsmesh:codex-rule-index:end -->";});function uR(e){return basename(e,".md")}function mu(e){return `${gl}/${uR(e.source)}.md`}function YT(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];}),T(t,e.body.trim()||"")}function bQ(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 \`${$o}/${uR(e.source)}.rules\`.`),e.targets.length>0&&t.push(`Targeted to ${e.targets.map(r=>`\`${r}\``).join(", ")}.`),t.join(" ")}function XT(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||uR(a.source)}](${mu(a)}): ${bQ(a)}`),i=[mR,"## Additional Rule Files",...o,pR].join(`
|
|
89
89
|
`);return r?`${r}
|
|
90
90
|
|
|
91
|
-
${i}`:i}function
|
|
92
|
-
`).trim()}var
|
|
91
|
+
${i}`:i}function QT(e){let t=mR.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),r=pR.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return e.replace(new RegExp(`\\n?${t}[\\s\\S]*?${r}\\n?`,"g"),`
|
|
92
|
+
`).trim()}var Gf=d(()=>{B();nt();s(uR,"ruleSlug");s(mu,"codexInstructionMirrorPath");s(YT,"serializeCodexInstructionMirror");s(bQ,"summarizeRule");s(XT,"appendCodexRuleIndex");s(QT,"stripCodexRuleIndex");});function xQ(e){return /(^|\n)\s*[A-Za-z_][A-Za-z0-9_]*\s*\(/.test(e)}function TQ(e){return e.split(`
|
|
93
93
|
`).map(t=>t.length>0?`# ${t}`:"#").join(`
|
|
94
|
-
`)}function
|
|
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.","#",...
|
|
94
|
+
`)}function PQ(e){let t=e.trim();return t?xQ(t)?`${t}
|
|
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.","#",...TQ(t).split(`
|
|
96
96
|
`),"#","# Example template:","# prefix_rule(",'# pattern = ["git", "status"],','# decision = "allow",','# justification = "Allow safe status checks",',"# )"].join(`
|
|
97
97
|
`)}
|
|
98
|
-
`:""}function
|
|
98
|
+
`:""}function dR(e){let t=e.rules.find(n=>n.root),r=[];t&&r.push({path:Js,content:XT(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:`${$o}/${o}.rules`,content:PQ(n.body)}),r.push({path:mu(n),content:YT(n)}));}return r}function fR(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 qT=d(()=>{Be();nt();Gf();s(xQ,"looksLikeCodexRulesDsl");s(TQ,"toCodexRulesComments");s(PQ,"toSafeCodexRulesContent");s(dR,"generateRules");s(fR,"renderCodexGlobalInstructions");});function gR(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=T(n,r.body.trim()||"");t.push({path:`${Go}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${Go}/${r.name}/${a}`,content:i.content});}}return t}function DQ(e){return {path:`${Go}/${J(e.name)}/SKILL.md`,content:Ge(e)}}function hR(e){return e.commands.map(DQ)}var ZT=d(()=>{B();nt();be();s(gR,"generateSkills");s(DQ,"commandToSkillOutput");s(hR,"generateCommands");});function yR(e){return e.agents.map(t=>({path:`${hl}/${t.name}.toml`,content:NQ(t)}))}function NQ(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 eP=d(()=>{nt();s(yR,"generateAgents");s(NQ,"serializeAgentToCodexToml");});function $f(e){return "command"in e}function tP(e){return "url"in e}var jf=d(()=>{s($f,"isStdioMcpServer");s(tP,"isUrlMcpServer");});function _R(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=Object.fromEntries(Object.entries(e.mcp.mcpServers).flatMap(([n,o])=>$f(o)?[[n,o]]:[]));if(Object.keys(t).length===0)return [];let r=vQ(t);return [{path:Mf,content:r}]}function vQ(e){let t=[];for(let[r,n]of Object.entries(e)){let o=rP(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])=>`${rP(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
|
|
109
|
-
`).find(c=>c.startsWith(
|
|
110
|
-
`)){let m=c.trimEnd();if(m===Hx){l=true;continue}if(m===zx){l=false;continue}l&&m.startsWith(x_)&&a.push(m.slice(x_.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 pT=d(()=>{Ct();s(mT,"tryParseEmbeddedCanonicalFromCodexRules");});async function dT(e,t,r){let n=[],o=join(e,So);try{let i=await U(o),a=i.filter(c=>c.endsWith(".md"));for(let c of a){let m=await k(c);if(!m)continue;let p=relative(o,c).replace(/\\/g,"/"),u=join(t,p),{frontmatter:f,body:g}=x(r(m,c,u));await w(t);let h=f.root===!0?f:{...f,root:!1},R=await V(u,h,g);await L(u,R),n.push({fromTool:Dt,fromPath:c,toPath:`${Os}/${p}`,feature:"rules"});}let l=i.filter(c=>c.endsWith(".rules"));for(let c of l){let m=await k(c);if(!m)continue;let p=relative(o,c).replace(/\\/g,"/").replace(/\.rules$/i,".md"),u=join(t,p);await w(t);let f=mT(m);if(f){let g=await V(u,{description:f.meta.description,globs:f.meta.globs,root:!1},r(f.body,c,u));await L(u,g);}else {let g=await V(u,{root:!1,description:"",globs:[],codex_emit:"execution"},r(m.trim(),c,u));await L(u,g);}n.push({fromTool:Dt,fromPath:c,toPath:`${Os}/${p}`,feature:"rules"});}}catch{}return n}var fT=d(()=>{A();B();fe();Ct();pT();s(dT,"importCodexNonRootRuleFiles");});async function hT(e,t,r,n,o){let i=join(e,Gx),a=join(e,bs),l=join(e,jx),c=join(e,Wa),m=o==="global"?await k(l):null,p=o==="global"?await k(c):null,u=o==="project"?await k(a):null,f=o==="project"?await k(i):null,g=m!==null?l:p!==null?c:u!==null?a:i,h=join(e,Os),R=m??p??u??f;if(R!==null){await w(h);let _=join(h,"_root.md"),S=g===a||g===c||g===l?Yx(R):R,I=await Ro({content:S,projectRoot:e,rulesDir:Os,sourcePath:g,fromTool:"codex-cli",normalize:r});t.push(...I.results);let b=r(g===a||g===c||g===l?n(I.rootContent,g,_):I.rootContent,g,_),{frontmatter:P,body:T}=x(b),W=P.root===true?P:{...P,root:true},$=await V(_,W,T);await L(_,$),t.push({fromTool:"codex-cli",fromPath:g,toPath:`${Os}/_root.md`,feature:"rules"});}await Z2(e,h,t,r),t.push(...await dT(e,h,r)),o!=="global"&&t.push(...await ke({srcDir:e,destDir:h,extensions:["AGENTS.md","AGENTS.override.md"],fromTool:"codex-cli",normalize:r,mapEntry:s(async({srcPath:_,normalizeTo:S})=>{let I=relative(e,dirname(_)).replace(/\\/g,"/"),b=basename(_),P=b==="AGENTS.override.md";if(!I||I==="."||!P&&b!=="AGENTS.md")return null;let T=I.replace(/\//g,"-");if(!wd(I))return await $n(join(h,`${T}.md`)),null;let W=join(h,`${T}.md`),{frontmatter:$,body:Y}=x(S(W));return {destPath:W,toPath:`${Os}/${T}.md`,feature:"rules",content:await V(W,{...$,root:false,globs:[`${I}/**`],...P?{codex_instruction:"override"}:{}},Y)}},"mapEntry")}));}async function Z2(e,t,r,n){try{let i=(await U(join(e,Ha))).filter(l=>l.endsWith(".md")),a=join(e,Ha);for(let l of i){let c=relative(a,l).replace(/\\/g,"/");if(c==="_root.md")continue;let m=await k(l);if(!m)continue;let p=join(t,c),{frontmatter:u,body:f}=x(n(m,l,p));await w(t);let g=u.root===!0?u:{...u,root:!1},h=await V(p,g,f);await L(p,h),r.push({fromTool:Dt,fromPath:l,toPath:`${Os}/${c}`,feature:"rules"});}}catch{}}var yT=d(()=>{A();B();fe();Lc();Yt();Vm();Ct();fT();df();s(hT,"importCodexRules");s(Z2,"importInstructionMirrors");});async function RT(e,t){let r=t?.scope??"project",n=[],o=await z(Dt,e,r),i=await z("windsurf",e,r);return await hT(e,n,o,i,r),await iT(e,n,o),await lT(e,n,o),await oT(e,n),n}var _T=d(()=>{ge();Ct();sT();aT();cT();yT();s(RT,"importFromCodex");});function ST(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:Dt,message:"Codex needs a root rule to generate AGENTS.md. Add root: true to a rule."}]}var kT=d(()=>{Ct();s(ST,"lintRules");});function IT(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(v(".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(v(".agentsmesh/mcp.json","codex-cli",`MCP server "${r}" uses ${o} transport; codex-cli only generates stdio MCP servers.`));}return t}var LT=d(()=>{Oe();s(IT,"lintMcp");});function CT(e){return jp(e)}var ET=d(()=>{df();s(CT,"codexAdvisoryInstructionPath");});var tX,rX,nX,oX,bT,OT=d(()=>{nT();Ct();_T();kT();LT();Ce();Ml();ET();we();tX={name:"codex-cli",primaryRootInstructionPath:bs,generateRules:N_,generateCommands:M_,generateAgents:$_,generateSkills:F_,generateMcp:G_,importFrom:RT},rX={rootInstructionPath:bs,extraRuleOutputPaths(e){if(e.root||e.codexEmit!=="execution")return [];let t=basename(e.source,".md");return [`${So}/${t}.rules`]},skillDir:".agents/skills",managedOutputs:{dirs:[".agents/skills",".codex/agents",".codex/instructions"],files:["AGENTS.md",".codex/config.toml"]},paths:{rulePath(e,t){return CT(t)},commandPath(e,t){return Fl(t,"codex-cli")?`${_o}/${J(e)}/SKILL.md`:null},agentPath(e,t){return `${za}/${e}.toml`}}},nX={rootInstructionPath:Wa,renderPrimaryRootInstruction:v_,extraRuleOutputPaths(e){if(e.root||e.codexEmit!=="execution")return [];let t=basename(e.source,".md");return [`${So}/${t}.rules`]},skillDir:_o,managedOutputs:{dirs:[".agents/skills",".codex/agents",".codex/rules"],files:[Wa,".codex/config.toml"]},rewriteGeneratedPath(e){return e===bs?Wa:e.startsWith(`${Ha}/`)?null:e},paths:{rulePath(e,t){return t.codexEmit==="execution"?`${So}/${e}.rules`:Wa},commandPath(e,t){return Fl(t,"codex-cli")?`${_o}/${J(e)}/SKILL.md`:null},agentPath(e,t){return `${za}/${e}.toml`}}},oX={rules:"native",additionalRules:"embedded",commands:"embedded",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},bT={id:"codex-cli",metadata:{displayName:"Codex CLI",category:"cli",officialUrl:"https://github.com/openai/codex",shortDescription:"OpenAI's terminal coding agent"},generators:tX,capabilities:{rules:"native",additionalRules:"native",commands:"embedded",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},emptyImportMessage:"No Codex config found (codex.md or AGENTS.md).",supportsConversion:{commands:true},lintRules:ST,lint:{mcp:IT},project:rX,globalSupport:{capabilities:oX,detectionPaths:[".codex/AGENTS.md",".codex/AGENTS.override.md",".codex/config.toml",".codex/agents",".codex/rules",".agents/skills"],layout:nX},buildImportPaths:TR,sharedArtifacts:{".agents/skills/":"owner"},detectionPaths:["codex.md","AGENTS.md","AGENTS.override.md",".codex/config.toml",".codex/agents",".codex/rules"],nativeInstall:{pickPaths:[{prefix:".codex",feature:"rules",strategy:{kind:"basename",suffix:".md"}}]},excludeFromStarterInit:true,conversionDefaults:{commandsToSkills:true,agentsToSkills:false}};});function iX(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 AT(e){return `${Jn}/${e}.md`}function xT(e){let t={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"],D(t,e.body.trim()||"")}function TT(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:iX(e["x-agentsmesh-allowed-tools"])}}function PT(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"],D(r,t.trim()||"")}var hf=d(()=>{B();Yn();s(iX,"toStringArray");s(AT,"continueCommandRulePath");s(xT,"serializeCommandRule");s(TT,"parseCommandRuleFrontmatter");s(PT,"serializeImportedCommand");});function DT(e){let t=[],r=e.rules.find(n=>n.root);if(r){let n={};r.description&&(n.description=r.description),t.push({path:rs,content:D(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:`${cn}/${o}.md`,content:D(i,n.body.trim()||"")});}return t}function NT(e){return e.commands.map(t=>({path:`${Jn}/${t.name}.md`,content:xT(t)}))}function vT(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Gd,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function FT(e){return e.agents.map(t=>({path:`${Qt}/${K(t.name)}/SKILL.md`,content:De(t)}))}function MT(e){return ie(e,Qt)}var $T=d(()=>{se();ue();B();hf();Yn();s(DT,"generateRules");s(NT,"generateCommands");s(vT,"generateMcp");s(FT,"generateAgents");s(MT,"generateSkills");});function mX(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;typeof l.command=="string"&&(o[i]={type:typeof l.type=="string"?l.type:"stdio",command:l.command,args:qs(l.args),env:jn(l.env),description:typeof l.description=="string"?l.description:void 0});}return o}async function pX(e,t){let r=(await U(join(e,PR))).filter(i=>[".json",".yaml",".yml"].includes(extname(i))),n={},o=[];for(let i of r){let a=await k(i);a&&(Object.assign(n,mX(a,extname(i))),o.push(i));}if(Object.keys(n).length!==0){await Je(e,NR,n);for(let i of o)t.push({fromTool:Jl,fromPath:i,toPath:NR,feature:"mcp"});}}async function jT(e){let t=[],r=await z(Jl,e);return t.push(...await q(yf,e,"project",{normalize:r})),await oe(e,Qt,Jl,t,r),await pX(e,t),t}var UT=d(()=>{ge();A();se();be();nn();Sr();Yn();B_();s(mX,"readMcpServers");s(pX,"importMcp");s(jT,"importFromContinue");});function uX(e){return e==="general.md"||e==="_root.md"}var BT,KT,WT=d(()=>{B();fe();hf();Yn();s(uX,"isContinueRootRulePath");BT=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=uX(e),o=n?"_root.md":e,i=join(r,o),{frontmatter:a,body:l}=x(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:`${jd}/${o}`,content:await V(i,c,l)}},"continueRuleMapper"),KT=s(async({absolutePath:e,relativePath:t,normalizeTo:r,destDir:n})=>{let o=join(n,t),{frontmatter:i,body:a}=x(r(o)),l=TT(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 Se(u,{description:l.description,hasDescription:!!l.description,allowedTools:l.allowedTools,hasAllowedTools:l.allowedTools.length>0},x(PT(l,a)).body);return {destPath:u,toPath:`${Ud}/${p}`,content:f}},"continueCommandMapper");});function HT(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Jl}))}var zT=d(()=>{Ie();Yn();s(HT,"lintRules");});function VT(e){return e.commands.filter(t=>t.allowedTools.length>0).map(t=>v(t.source,"continue","Continue invokable prompt rules do not natively enforce canonical allowed-tools metadata."))}var JT=d(()=>{Oe();s(VT,"lintCommands");});function hX(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var YT,XT=d(()=>{A();Yn();s(hX,"computeStatus");YT=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 k(join(t,up));return [{target:"continue",path:up,content:m,currentContent:p??void 0,status:hX(p,m)}]},"generateContinueGlobalConfig");});function RX(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var qT,QT=d(()=>{A();Yn();XT();s(RX,"computeStatus");qT=s(async(e,t,r,n)=>{let o=await YT(e,t,r,n);if(r!=="global"||!n.has("rules"))return o;let i=e.rules.find(c=>c.root);if(!i)return o;let a=i.body.trim(),l=await k(join(t,Yl));return [...o,{target:"continue",path:Yl,content:a,currentContent:l??void 0,status:RX(l,a)}]},"generateContinueScopeExtras");});var _X,SX,kX,IX,yf,B_=d(()=>{ue();$T();Yn();UT();WT();zT();JT();hf();Ce();QT();_X={name:"continue",primaryRootInstructionPath:rs,generateRules:DT,generateCommands:NT,generateAgents:FT,generateSkills:MT,generateMcp:vT,importFrom:jT},SX={rootInstructionPath:rs,skillDir:".continue/skills",managedOutputs:{dirs:[".continue/prompts",".continue/rules",".continue/skills"],files:[".continue/mcpServers/agentsmesh.json"]},paths:{rulePath(e,t){return `${cn}/${e}.md`},commandPath(e,t){return AT(e)},agentPath(e){return `${Qt}/${K(e)}/SKILL.md`}}},kX={rootInstructionPath:rs,outputFamilies:[{id:"compat-agents",kind:"additional",explicitPaths:[Yl]}],skillDir:Qt,managedOutputs:{dirs:[cn,Jn,Qt,".agents/skills"],files:[Gd,Yl,up]},mirrorGlobalPath(e,t){return e.startsWith(`${Qt}/`)?`.agents/skills/${e.slice(Qt.length+1)}`:null},paths:{rulePath(e,t){return `${cn}/${e}.md`},commandPath(e,t){return `${Jn}/${e}.md`},agentPath(e){return `${Qt}/${K(e)}/SKILL.md`}}},IX={rules:"native",additionalRules:"native",commands:"native",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},yf={id:"continue",metadata:{displayName:"Continue",category:"ide",officialUrl:"https://continue.dev",shortDescription:"Open-source AI code assistant"},generators:_X,capabilities:{rules:"native",additionalRules:"native",commands:"embedded",agents:"none",skills:"embedded",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:HT,lint:{commands:VT},project:SX,globalSupport:{capabilities:IX,detectionPaths:[cn,Jn,".continue/mcpServers",Qt],layout:kX,scopeExtras:qT},importer:{rules:{feature:"rules",mode:"directory",source:{project:[cn],global:[cn]},canonicalDir:jd,extensions:[".md"],map:BT},commands:{feature:"commands",mode:"directory",source:{project:[Jn],global:[Jn]},canonicalDir:Ud,extensions:[".md"],map:KT}},buildImportPaths:vR,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 As,Va,ZT,Ja,Oi,ko,Io,Ya,Xa,Rf,_f,eP,W_,tP,Ai,Oc,xs,Ac,qa,H_,z_,Kr=d(()=>{As="copilot",Va=".github/copilot-instructions.md",ZT=".github/copilot",Ja=".github/instructions",Oi=".github/prompts",ko=".github/hooks",Io=".github/skills",Ya=".github/agents",Xa=".agentsmesh/rules",Rf=".agentsmesh/commands",_f=".agentsmesh/agents",eP=".agentsmesh/skills",W_=".agentsmesh/hooks.yaml",tP=".github/copilot-hooks",Ai=".copilot/copilot-instructions.md",Oc=".copilot/agents",xs=".copilot/skills",Ac=".copilot/prompts",qa=".copilot/AGENTS.md",H_=".claude/skills",z_=".agents/skills";});function rP(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 Sf(e){return `${Oi}/${e}.prompt.md`}function nP(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"],D(t,e.body.trim()||"")}function oP(e,t){let n=((typeof e["x-agentsmesh-name"]=="string"?e["x-agentsmesh-name"]:"")||basename(t,".prompt.md")).trim(),o=rP(e["x-agentsmesh-allowed-tools"]),i=o.length>0?o:rP(e.tools);return {name:n,description:typeof e.description=="string"?e.description:"",allowedTools:i}}var kf=d(()=>{B();Kr();s(rP,"toStringArray");s(Sf,"commandPromptPath");s(nP,"serializeCommandPrompt");s(oP,"parseCommandPromptFrontmatter");});function If(e){return Go(e)}var V_=d(()=>{qr();s(If,"hasHookCommand");});function EX(e){let t=basename(e,".md");return t==="_root"?"root":t}function wX(e){switch(e){case "PreToolUse":return "preToolUse";case "PostToolUse":return "postToolUse";case "Notification":return "notification";case "UserPromptSubmit":return "userPromptSubmitted";default:return null}}function sP(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}
|
|
108
|
+
`}function rP(e){return !/^[A-Za-z0-9_-]+$/.test(e)}var nP=d(()=>{jf();nt();s(_R,"generateMcp");s(vQ,"serializeMcpToToml");s(rP,"needsTomlQuoting");});function SR(e){if(!e.hooks)return [];let t={};for(let[r,n]of Object.entries(e.hooks)){if(!Array.isArray(n))continue;let o=n.flatMap(i=>{if(!mn(i)||i.type==="prompt")return [];let a={type:"command",command:Je(i)};return i.timeout!==void 0&&(a.timeout=i.timeout),[{matcher:i.matcher,hooks:[a]}]});o.length>0&&(t[r]=o);}return Object.keys(t).length===0?[]:[{path:Ys,content:JSON.stringify({hooks:t},null,2)}]}var oP=d(()=>{Lr();nt();s(SR,"generateHooks");});var sP=d(()=>{qT();ZT();eP();nP();oP();});var iP=d(()=>{sP();});function GQ(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 aP(e,t){let r=join(e,Mf),n=await k(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=GQ(c);m&&(a[l]=m);}Object.keys(a).length!==0&&(await Xe(e,iR,a),t.push({fromTool:ft,fromPath:r,toPath:iR,feature:"mcp"}));}var lP=d(()=>{b();hn();nt();s(GQ,"mapTomlServerToCanonical");s(aP,"importMcp");});async function cP(e,t,r){await Hc([Go,KT],{projectRoot:e,destCanonicalSkillsDir:HT,targetName:ft,normalize:r,results:t},[ET({canonicalCommandsDir:WT}),zc({canonicalAgentsDir:cu})]);}var mP=d(()=>{Vc();nt();s(cP,"importSkills");});async function pP(e,t,r){let n=join(e,hl),o=join(e,cu);try{let a=(await U(n)).filter(l=>l.endsWith(".toml"));for(let l of a){let c=await k(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:"",_=h==="read-only"?"read-only":h==="workspace-write"?"allow":"",S=Array.isArray(m.mcp_servers)?m.mcp_servers.filter(P=>typeof P=="string"):[];await O(o);let R=join(o,`${p}.md`),I=r(f,l,R),D=ki({name:p,description:u,tools:[],disallowedTools:[],model:g,permissionMode:_,maxTurns:0,mcpServers:S,hooks:{},skills:[],memory:""},I);await L(R,D),t.push({fromTool:ft,fromPath:l,toPath:`${cu}/${p}.md`,feature:"agents"});}}catch{}}var uP=d(()=>{b();_e();nt();s(pP,"importCodexAgentsFromToml");});function dP(e){if(!e.includes(zT))return null;let t=e.split(`
|
|
109
|
+
`).find(c=>c.startsWith(lR));if(!t)return null;let r;try{r=JSON.parse(t.slice(lR.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===VT){l=true;continue}if(m===JT){l=false;continue}l&&m.startsWith(cR)&&a.push(m.slice(cR.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 fP=d(()=>{nt();s(dP,"tryParseEmbeddedCanonicalFromCodexRules");});async function hP(e,t,r){let n=[],o=join(e,$o);try{let i=await U(o),a=i.filter(c=>c.endsWith(".md"));for(let c of a){let m=await k(c);if(!m)continue;let p=relative(o,c).replace(/\\/g,"/"),u=join(t,p),{frontmatter:f,body:g}=x(r(m,c,u));await O(t);let h=f.root===!0?f:{...f,root:!1},_=await z(u,h,g);await L(u,_),n.push({fromTool:ft,fromPath:c,toPath:`${Xs}/${p}`,feature:"rules"});}let l=i.filter(c=>c.endsWith(".rules"));for(let c of l){let m=await k(c);if(!m)continue;let p=relative(o,c).replace(/\\/g,"/").replace(/\.rules$/i,".md"),u=join(t,p);await O(t);let f=dP(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:ft,fromPath:c,toPath:`${Xs}/${p}`,feature:"rules"});}}catch{}return n}var yP=d(()=>{b();B();de();nt();fP();s(hP,"importCodexNonRootRuleFiles");});async function SP(e,t,r,n,o){let i=join(e,UT),a=join(e,Js),l=join(e,BT),c=join(e,fl),m=o==="global"?await k(l):null,p=o==="global"?await k(c):null,u=o==="project"?await k(a):null,f=o==="project"?await k(i):null,g=m!==null?l:p!==null?c:u!==null?a:i,h=join(e,Xs),_=m??p??u??f;if(_!==null){await O(h);let S=join(h,"_root.md"),R=g===a||g===c||g===l?QT(_):_,I=await Mo({content:R,projectRoot:e,rulesDir:Xs,sourcePath:g,fromTool:"codex-cli",normalize:r});t.push(...I.results);let w=r(g===a||g===c||g===l?n(I.rootContent,g,S):I.rootContent,g,S),{frontmatter:D,body:P}=x(w),K=D.root===true?D:{...D,root:true},G=await z(S,K,P);await L(S,G),t.push({fromTool:"codex-cli",fromPath:g,toPath:`${Xs}/_root.md`,feature:"rules"});}await WQ(e,h,t,r),t.push(...await hP(e,h,r)),o!=="global"&&t.push(...await Se({srcDir:e,destDir:h,extensions:["AGENTS.md","AGENTS.override.md"],fromTool:"codex-cli",normalize:r,mapEntry:s(async({srcPath:S,normalizeTo:R})=>{let I=relative(e,dirname(S)).replace(/\\/g,"/"),w=basename(S),D=w==="AGENTS.override.md";if(!I||I==="."||!D&&w!=="AGENTS.md")return null;let P=I.replace(/\//g,"-");if(!Zd(I))return await Qn(join(h,`${P}.md`)),null;let K=join(h,`${P}.md`),{frontmatter:G,body:Y}=x(R(K));return {destPath:K,toPath:`${Xs}/${P}.md`,feature:"rules",content:await z(K,{...G,root:false,globs:[`${I}/**`],...D?{codex_instruction:"override"}:{}},Y)}},"mapEntry")}));}async function WQ(e,t,r,n){try{let i=(await U(join(e,gl))).filter(l=>l.endsWith(".md")),a=join(e,gl);for(let l of i){let c=relative(a,l).replace(/\\/g,"/");if(c==="_root.md")continue;let m=await k(l);if(!m)continue;let p=join(t,c),{frontmatter:u,body:f}=x(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:ft,fromPath:l,toPath:`${Xs}/${c}`,feature:"rules"});}}catch{}}var RP=d(()=>{b();B();de();Wc();Zt();pp();nt();yP();Gf();s(SP,"importCodexRules");s(WQ,"importInstructionMirrors");});async function IP(e,t){let r=join(e,Ys),n=await k(r);if(n===null)return;let o;try{o=JSON.parse(n);}catch{return}if(!o||typeof o!="object")return;let i=o.hooks;if(!i||typeof i!="object"||Array.isArray(i))return;let a={};for(let[c,m]of Object.entries(i))if(Array.isArray(m))for(let p of m){if(!p||typeof p!="object")continue;let u=p,f=typeof u.matcher=="string"?u.matcher:"*";if(Array.isArray(u.hooks))for(let g of u.hooks){if(!g||typeof g!="object")continue;let h=g;if(h.type!=="command"||typeof h.command!="string")continue;let _={matcher:f,command:h.command,type:"command"};typeof h.timeout=="number"&&(_.timeout=h.timeout),(a[c]??=[]).push(_);}}if(Object.keys(a).length===0)return;let l=join(e,aR);await O(dirname(l)),await L(l,stringify(a)),t.push({fromTool:ft,fromPath:r,toPath:aR,feature:"hooks"});}var LP=d(()=>{b();nt();s(IP,"importCodexHooks");});async function CP(e,t){let r=t?.scope??"project",n=[],o=await H(ft,e,r),i=await H("windsurf",e,r);return await SP(e,n,o,i,r),await cP(e,n,o),await pP(e,n,o),await aP(e,n),await IP(e,n),n}var EP=d(()=>{ge();nt();lP();mP();uP();RP();LP();s(CP,"importFromCodex");});function OP(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:ft,message:"Codex needs a root rule to generate AGENTS.md. Add root: true to a rule."}]}var wP=d(()=>{nt();s(OP,"lintRules");});function bP(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(F(".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(F(".agentsmesh/mcp.json","codex-cli",`MCP server "${r}" uses ${o} transport; codex-cli only generates stdio MCP servers.`));}return t}var AP=d(()=>{Re();s(bP,"lintMcp");});function xP(e){return mu(e)}var TP=d(()=>{Gf();s(xP,"codexAdvisoryInstructionPath");});var JQ,YQ,XQ,QQ,DP,NP=d(()=>{iP();nt();EP();wP();AP();Oe();sp();TP();be();JQ={name:"codex-cli",primaryRootInstructionPath:Js,generateRules:dR,generateCommands:hR,generateAgents:yR,generateSkills:gR,generateMcp:_R,generateHooks:SR,importFrom:CP},YQ={rootInstructionPath:Js,extraRuleOutputPaths(e){if(e.root||e.codexEmit!=="execution")return [];let t=basename(e.source,".md");return [`${$o}/${t}.rules`]},skillDir:".agents/skills",managedOutputs:{dirs:[".agents/skills",".codex/agents",".codex/instructions"],files:["AGENTS.md",".codex/config.toml",Ys]},paths:{rulePath(e,t){return xP(t)},commandPath(e,t){return ic(t,"codex-cli")?`${Go}/${J(e)}/SKILL.md`:null},agentPath(e,t){return `${hl}/${e}.toml`}}},XQ={rootInstructionPath:fl,renderPrimaryRootInstruction:fR,extraRuleOutputPaths(e){if(e.root||e.codexEmit!=="execution")return [];let t=basename(e.source,".md");return [`${$o}/${t}.rules`]},skillDir:Go,managedOutputs:{dirs:[".agents/skills",".codex/agents",".codex/rules"],files:[fl,".codex/config.toml",Ys]},rewriteGeneratedPath(e){return e===Js?fl:e.startsWith(`${gl}/`)?null:e},paths:{rulePath(e,t){return t.codexEmit==="execution"?`${$o}/${e}.rules`:fl},commandPath(e,t){return ic(t,"codex-cli")?`${Go}/${J(e)}/SKILL.md`:null},agentPath(e,t){return `${hl}/${e}.toml`}}},QQ={rules:"native",additionalRules:"embedded",commands:"embedded",agents:"native",skills:"native",mcp:"native",hooks:"partial",ignore:"none",permissions:"none"},DP={id:"codex-cli",metadata:{displayName:"Codex CLI",category:"cli",officialUrl:"https://github.com/openai/codex",shortDescription:"OpenAI's terminal coding agent"},generators:JQ,capabilities:{rules:"native",additionalRules:"native",commands:"embedded",agents:"native",skills:"native",mcp:"native",hooks:"partial",ignore:"none",permissions:"none"},emptyImportMessage:"No Codex config found (codex.md or AGENTS.md).",supportsConversion:{commands:true},lintRules:OP,lint:{mcp:bP},project:YQ,globalSupport:{capabilities:QQ,detectionPaths:[".codex/AGENTS.md",".codex/AGENTS.override.md",".codex/config.toml",".codex/agents",".codex/rules",Ys,".agents/skills"],layout:XQ},buildImportPaths:sS,sharedArtifacts:{".agents/skills/":"owner"},detectionPaths:["codex.md","AGENTS.md","AGENTS.override.md",".codex/config.toml",".codex/agents",".codex/rules",Ys],nativeInstall:{pickPaths:[{prefix:".codex",feature:"rules",strategy:{kind:"basename",suffix:".md"}}]},excludeFromStarterInit:true,conversionDefaults:{commandsToSkills:true,agentsToSkills:false}};});function ZQ(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 vP(e){return `${ao}/${e}.md`}function FP(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"],T(t,e.body.trim()||"")}function MP(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:ZQ(e["x-agentsmesh-allowed-tools"])}}function GP(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"],T(r,t.trim()||"")}var Uf=d(()=>{B();lo();s(ZQ,"toStringArray");s(vP,"continueCommandRulePath");s(FP,"serializeCommandRule");s(MP,"parseCommandRuleFrontmatter");s(GP,"serializeImportedCommand");});function $P(e){let t=[],r=e.rules.find(n=>n.root);if(r){let n={};r.description&&(n.description=r.description),t.push({path:ks,content:T(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:`${Sn}/${o}.md`,content:T(i,n.body.trim()||"")});}return t}function jP(e){return e.commands.map(t=>({path:`${ao}/${t.name}.md`,content:FP(t)}))}function UP(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:mf,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function BP(e){return e.agents.map(t=>({path:`${or}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function KP(e){return ie(e,or)}var WP=d(()=>{oe();_e();B();Uf();lo();s($P,"generateRules");s(jP,"generateCommands");s(UP,"generateMcp");s(BP,"generateAgents");s(KP,"generateSkills");});function nq(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:Zn(l.args),env:Ut(l.env),description:c};continue}typeof l.url=="string"&&(o[i]={type:typeof l.type=="string"?l.type:"http",url:l.url,headers:Ut(l.headers),env:Ut(l.env),description:c});}return o}async function oq(e,t){let r=(await U(join(e,iS))).filter(i=>[".json",".yaml",".yml"].includes(extname(i))),n={},o=[];for(let i of r){let a=await k(i);a&&(Object.assign(n,nq(a,extname(i))),o.push(i));}if(Object.keys(n).length!==0){await Xe(e,lS,n);for(let i of o)t.push({fromTool:Sc,fromPath:i,toPath:lS,feature:"mcp"});}}async function zP(e){let t=[],r=await H(Sc,e);return t.push(...await Q(Bf,e,"project",{normalize:r})),await ne(e,or,Sc,t,r),await oq(e,t),t}var VP=d(()=>{ge();b();oe();Ae();hn();qt();lo();IR();s(nq,"readMcpServers");s(oq,"importMcp");s(zP,"importFromContinue");});function sq(e){return e==="general.md"||e==="_root.md"}var JP,YP,XP=d(()=>{B();de();Uf();lo();s(sq,"isContinueRootRulePath");JP=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=sq(e),o=n?"_root.md":e,i=join(r,o),{frontmatter:a,body:l}=x(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:`${pf}/${o}`,content:await z(i,c,l)}},"continueRuleMapper"),YP=s(async({absolutePath:e,relativePath:t,normalizeTo:r,destDir:n})=>{let o=join(n,t),{frontmatter:i,body:a}=x(r(o)),l=MP(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},x(GP(l,a)).body);return {destPath:u,toPath:`${uf}/${p}`,content:f}},"continueCommandMapper");});function QP(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Sc}))}var qP=d(()=>{Ee();lo();s(QP,"lintRules");});function ZP(e){return e.commands.filter(t=>t.allowedTools.length>0).map(t=>F(t.source,"continue","Continue invokable prompt rules do not natively enforce canonical allowed-tools metadata."))}var eD=d(()=>{Re();s(ZP,"lintCommands");});function cq(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var tD,rD=d(()=>{b();lo();s(cq,"computeStatus");tD=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 k(join(t,Dp));return [{target:"continue",path:Dp,content:m,currentContent:p??void 0,status:cq(p,m)}]},"generateContinueGlobalConfig");});function pq(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var nD,oD=d(()=>{b();lo();rD();s(pq,"computeStatus");nD=s(async(e,t,r,n)=>{let o=await tD(e,t,r,n);if(r!=="global"||!n.has("rules"))return o;let i=e.rules.find(c=>c.root);if(!i)return o;let a=i.body.trim(),l=await k(join(t,Rc));return [...o,{target:"continue",path:Rc,content:a,currentContent:l??void 0,status:pq(l,a)}]},"generateContinueScopeExtras");});var uq,dq,fq,gq,Bf,IR=d(()=>{_e();WP();lo();VP();XP();qP();eD();Uf();Oe();oD();uq={name:"continue",primaryRootInstructionPath:ks,generateRules:$P,generateCommands:jP,generateAgents:BP,generateSkills:KP,generateMcp:UP,importFrom:zP},dq={rootInstructionPath:ks,skillDir:".continue/skills",managedOutputs:{dirs:[".continue/prompts",".continue/rules",".continue/skills"],files:[".continue/mcpServers/agentsmesh.json"]},paths:{rulePath(e,t){return `${Sn}/${e}.md`},commandPath(e,t){return vP(e)},agentPath(e){return `${or}/${V(e)}/SKILL.md`}}},fq={rootInstructionPath:ks,outputFamilies:[{id:"compat-agents",kind:"additional",explicitPaths:[Rc]}],skillDir:or,managedOutputs:{dirs:[Sn,ao,or,".agents/skills"],files:[mf,Rc,Dp]},mirrorGlobalPath(e,t){return e.startsWith(`${or}/`)?`.agents/skills/${e.slice(or.length+1)}`:null},paths:{rulePath(e,t){return `${Sn}/${e}.md`},commandPath(e,t){return `${ao}/${e}.md`},agentPath(e){return `${or}/${V(e)}/SKILL.md`}}},gq={rules:"native",additionalRules:"native",commands:"native",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},Bf={id:"continue",metadata:{displayName:"Continue",category:"ide",officialUrl:"https://continue.dev",shortDescription:"Open-source AI code assistant"},generators:uq,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:QP,lint:{commands:ZP},project:dq,globalSupport:{capabilities:gq,detectionPaths:[Sn,ao,".continue/mcpServers",or],layout:fq,scopeExtras:nD},importer:{rules:{feature:"rules",mode:"directory",source:{project:[Sn],global:[Sn]},canonicalDir:pf,extensions:[".md"],map:JP},commands:{feature:"commands",mode:"directory",source:{project:[ao],global:[ao]},canonicalDir:uf,extensions:[".md"],map:YP}},buildImportPaths:cS,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 Qs,qi,sD,Zi,qs,jo,Uo,ea,yl,Kf,Wf,iD,CR,aD,lD,Zs,_l,ei,Sl,Rl,ER,OR,kl,Ht=d(()=>{Qs="copilot",qi=".github/copilot-instructions.md",sD=".github/copilot",Zi=".github/instructions",qs=".github/prompts",jo=".github/hooks",Uo=".github/skills",ea=".github/agents",yl=".agentsmesh/rules",Kf=".agentsmesh/commands",Wf=".agentsmesh/agents",iD=".agentsmesh/skills",CR=".agentsmesh/hooks.yaml",aD=".agentsmesh/mcp.json",lD=".github/copilot-hooks",Zs=".copilot/copilot-instructions.md",_l=".copilot/agents",ei=".copilot/skills",Sl=".copilot/prompts",Rl=".copilot/AGENTS.md",ER=".claude/skills",OR=".agents/skills",kl=".vscode/mcp.json";});function cD(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 Hf(e){return `${qs}/${e}.prompt.md`}function mD(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"],T(t,e.body.trim()||"")}function pD(e,t){let n=((typeof e["x-agentsmesh-name"]=="string"?e["x-agentsmesh-name"]:"")||basename(t,".prompt.md")).trim(),o=cD(e["x-agentsmesh-allowed-tools"]),i=o.length>0?o:cD(e.tools);return {name:n,description:typeof e.description=="string"?e.description:"",allowedTools:i}}var zf=d(()=>{B();Ht();s(cD,"toStringArray");s(Hf,"commandPromptPath");s(mD,"serializeCommandPrompt");s(pD,"parseCommandPromptFrontmatter");});function Vf(e){return mn(e)}var wR=d(()=>{Lr();s(Vf,"hasHookCommand");});function bR(e,t){return t?.scope==="global"?[]:!e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:kl,content:JSON.stringify({servers:e.mcp.mcpServers},null,2)}]}var uD=d(()=>{Ht();s(bR,"generateMcp");});function _q(e){let t=basename(e,".md");return t==="_root"?"root":t}function Sq(e){switch(e){case "PreToolUse":return "preToolUse";case "PostToolUse":return "postToolUse";case "Notification":return "notification";case "UserPromptSubmit":return "userPromptSubmitted";default:return null}}function dD(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}
|
|
111
111
|
|
|
112
112
|
${o}`):t.push(o);}return t.join(`
|
|
113
113
|
|
|
114
|
-
`)}function
|
|
115
|
-
`)}async function
|
|
114
|
+
`)}function fD(e){let t=e.rules.find(n=>n.root),r=[];t&&r.push({path:qi,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=_q(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=T(i,n.body.trim()||"");r.push({path:`${Zi}/${o}.instructions.md`,content:a});}return r}function gD(e){return e.commands.map(t=>({path:Hf(t.name),content:mD(t)}))}function hD(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=T(n,r.body.trim()||"");t.push({path:`${Uo}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${Uo}/${r.name}/${a}`,content:i.content});}}return t}function yD(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=T(r,t.body.trim()||"");return {path:`${ea}/${t.name}.agent.md`,content:n}})}function _D(e){if(!e.hooks)return [];let t=Object.fromEntries(Object.entries(e.hooks).flatMap(([r,n])=>{let o=Sq(r);if(!o||!Array.isArray(n))return [];let i=n.filter(a=>typeof a=="object"&&a!==null&&Vf(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:`${jo}/agentsmesh.json`,content:JSON.stringify({version:1,hooks:t},null,2)}]}var SD=d(()=>{B();Ht();zf();wR();uD();s(_q,"ruleSlug");s(Sq,"mapHookEvent");s(dD,"renderCopilotGlobalInstructions");s(fD,"generateRules");s(gD,"generateCommands");s(hD,"generateSkills");s(yD,"generateAgents");s(_D,"generateHooks");});function kq(e){switch(e){case "preToolUse":return "PreToolUse";case "postToolUse":return "PostToolUse";case "notification":return "Notification";case "userPromptSubmitted":return "UserPromptSubmit";default:return null}}function Iq(e){return typeof e!="string"?"*":e.match(/^Matcher:\s*(.+)$/)?.[1]?.trim()||"*"}function ID(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 LD(e,t){let r=join(e,jo),o=(await U(r).catch(()=>[])).filter(p=>p.endsWith(".json")),i={};for(let p of o){let u=await k(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 _=kq(g);if(!(!_||!Array.isArray(h)))for(let S of h){if(!S||typeof S!="object")continue;let R=S,I=typeof R.bash=="string"?R.bash:"";if(!I)continue;let w=join(r,I.replace(/^\.\//,"")),D=await k(w);if(!D)continue;let P=ID(D);P&&(i[_]||(i[_]=[]),i[_].push({matcher:Iq(R.comment),command:P,type:"command"}));}}}let a=join(e,lD),c=(await U(a).catch(()=>[])).filter(p=>dirname(p)===a&&/^[^-]+-\d+\.sh$/i.test(basename(p)));for(let p of c){let u=await k(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:ID(u),type:"command"});}if(Object.keys(i).length===0)return;let m=join(e,CR);await O(dirname(m)),await L(m,stringify(i)),t.push({fromTool:Qs,fromPath:join(e,jo),toPath:CR,feature:"hooks"});}var CD=d(()=>{b();Ht();s(kq,"mapCopilotHookEvent");s(Iq,"extractMatcher");s(ID,"extractWrapperCommand");s(LD,"importHooks");});async function ED(e,t,r,n=Uo){let o=join(e,n),i=await lu(o),a={projectRoot:e,destCanonicalSkillsDir:iD,targetName:Qs,normalize:r,results:t};for(let[l,c]of i)await au(l,c,a);}var OD=d(()=>{Vc();Ht();s(ED,"importSkills");});async function wD(e,t={}){let r=t.scope??"project",n=[],o=await H(Qs,e,r);return n.push(...await Q(Jf,e,r,{normalize:o})),await ED(e,n,o,r==="global"?ei:Uo),r==="project"&&await LD(e,n),n}var bD=d(()=>{ge();Ae();Ht();CD();OD();AR();s(wD,"importFromCopilot");});async function Yf(e){let t=await U(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 TR=d(()=>{b();s(Yf,"skillNamesFromNativeSkillDir");});async function AD(e,t){let r=join(e,...t.split("/"));if(t.startsWith(qs)){let n=await U(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 U(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 U(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 Yf(r);return n.length?{skills:n}:{}}if(t.startsWith(".github/agents")){let n=await U(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 xD=d(()=>{b();Ht();TR();s(AD,"inferCopilotPickFromPath");});function TD(e,t,r,n){let i=X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(l=>({...l,target:Qs})),a=e.rules.filter(l=>!l.root&&l.globs.length===0);return [...i,...a.map(l=>({level:"warning",file:l.source,target:Qs,message:"Copilot path-specific instructions require applyTo globs; non-root rules without globs are not generated."}))]}var PD=d(()=>{Ee();Ht();s(TD,"lintRules");});function DD(e){return e.commands.filter(t=>t.allowedTools.length>0).map(t=>F(t.source,"copilot","Copilot prompt files do not enforce canonical allowed-tools natively."))}function ND(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=["PreToolUse","PostToolUse","Notification","UserPromptSubmit"],r=new Set(t),n=Object.keys(e.hooks).filter(i=>!r.has(i)).map(i=>Ci(i,"copilot",t,{unsupportedBy:"Copilot hooks"}));return Object.values(e.hooks).some(i=>Array.isArray(i)&&i.length>0)&&n.push(F(".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.")),n}var vD=d(()=>{Re();s(DD,"lintCommands");s(ND,"lintHooks");});function Aq(e){return e.replace(/[^a-zA-Z0-9]/g,"-").toLowerCase()}function xq(e,t){let r=relative(e,t).replace(/\\/g,"/");return !r||r.startsWith("../")?null:r}function Tq(e,t){let r=e.match(MD);if(!r?.groups)return e;let n=r.groups.prefix??"",o=r.groups.suffix??"";return `${n}"$HOOK_DIR/${t}"${o}`}async function Pq(e,t){let n=t.match(MD)?.groups?.path;if(!n)return null;let o=join(e,n),i=await k(o);if(i===null)return null;let a=xq(e,o);return a?{assetPath:`${jo}/scripts/${a}`,content:i,rewrittenCommand:Tq(t,a)}:null}function Dq(e,t){return `${jo}/scripts/${Aq(e)}-${t}.sh`}function FD(e){return e.replace(/[\r\n]+/g," ")}function Nq(e,t){return ["#!/usr/bin/env bash",`# agentsmesh-matcher: ${FD(t)}`,`# agentsmesh-command: ${FD(e)}`,"set -eu",e,""].join(`
|
|
115
|
+
`)}async function GD(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(!Vf(c))continue;let m=Dq(i,l),p=c.command,u=await Pq(e,c.command);u&&(p=u.rewrittenCommand,o.has(u.assetPath)||o.set(u.assetPath,{path:u.assetPath,content:u.content}));let f=Nq(p,c.matcher).replace(`set -eu
|
|
116
116
|
`,`set -eu
|
|
117
117
|
HOOK_DIR="$(cd "$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
|
|
118
|
-
`);n.push({path:m,content:f}),l++;}}return [...r,...n,...o.values()]}var
|
|
119
|
-
`);return [{path:
|
|
120
|
-
`)}var
|
|
118
|
+
`);n.push({path:m,content:f}),l++;}}return [...r,...n,...o.values()]}var MD,$D=d(()=>{b();Ht();wR();MD=/^(?<prefix>\s*(?:(?:bash|sh|zsh)\s+)?)["']?(?<path>(?:\.\.\/|\.\/|[^/\s"'`]+\/)[^\s"'`]+)["']?(?<suffix>(?:\s.*)?)$/;s(Aq,"safePhaseName");s(xq,"toRepoRelative");s(Tq,"rewriteWrapperCommand");s(Pq,"buildAssetOutput");s(Dq,"wrapperPath");s(FD,"safeShellLine");s(Nq,"buildWrapper");s(GD,"addHookScriptAssets");});function Fq(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var jD,UD=d(()=>{b();Ht();s(Fq,"computeStatus");jD=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 k(join(t,Rl));return [{target:"copilot",path:Rl,content:i,currentContent:a??void 0,status:Fq(a,i)}]},"generateCopilotGlobalExtras");});function BD(e){for(let t of Object.keys(e))e[t]===void 0&&delete e[t];return e}var KD,WD,HD,zD,VD=d(()=>{B();de();qt();zf();Ht();s(BD,"pruneUndefined");KD=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=e.replace(/\.instructions\.md$/i,".md"),o=join(r,n),{frontmatter:i,body:a}=x(t(o)),l=as(i.globs),c=BD({root:false,description:typeof i.description=="string"?i.description:void 0,globs:l.length>0?l:void 0});return {destPath:o,toPath:`${yl}/${n}`,content:await z(o,c,a)}},"copilotLegacyRuleMapper"),WD=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}=x(t(o)),l=as(i.applyTo!==void 0?i.applyTo:i.globs),c=BD({root:false,description:typeof i.description=="string"?i.description:void 0,globs:l.length>0?l:void 0});return {destPath:o,toPath:`${yl}/${n}`,content:await z(o,c,a)}},"copilotNewRuleMapper"),HD=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}=x(r(i)),c=pD(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:`${Kf}/${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"),zD=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}=x(t(i));return {destPath:i,toPath:`${Wf}/${n}`,content:await ve(i,{...a,name:typeof a.name=="string"?a.name:o},l)}},"copilotAgentMapper");});var JD,YD=d(()=>{Ht();VD();JD={rules:[{feature:"rules",mode:"singleFile",source:{project:[qi],global:[Zs]},canonicalDir:yl,canonicalRootFilename:"_root.md",markAsRoot:true},{feature:"rules",mode:"directory",source:{project:[sD]},canonicalDir:yl,extensions:[".instructions.md"],map:KD},{feature:"rules",mode:"directory",source:{project:[Zi]},canonicalDir:yl,extensions:[".instructions.md",".md"],map:WD}],commands:{feature:"commands",mode:"directory",source:{project:[qs],global:[Sl]},canonicalDir:Kf,extensions:[".prompt.md"],map:HD},agents:{feature:"agents",mode:"directory",source:{project:[ea],global:[_l]},canonicalDir:Wf,extensions:[".agent.md"],map:zD},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[kl]},canonicalDir:".agentsmesh",canonicalFilename:aD,mcpServersKey:"servers"}};});var XD,QD,qD=d(()=>{XD={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"partial",ignore:"none",permissions:"none"},QD={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"none",hooks:"none",ignore:"none",permissions:"none"};});var $q,jq,Uq,Jf,AR=d(()=>{SD();Ht();bD();xD();PD();Oe();zf();vD();$D();UD();YD();qD();$q={name:"copilot",primaryRootInstructionPath:qi,generateRules:fD,generateCommands:gD,generateAgents:yD,generateSkills:hD,generateHooks:_D,generateMcp:bR,importFrom:wD},jq={rootInstructionPath:qi,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 [`${Zi}/${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",kl]},paths:{rulePath(e,t){return `${Zi}/${e}.instructions.md`},commandPath(e,t){return Hf(e)},agentPath(e,t){return `${ea}/${e}.agent.md`}}},Uq={rootInstructionPath:Zs,renderPrimaryRootInstruction:dD,outputFamilies:[{id:"compat-agents",kind:"additional",explicitPaths:[Rl]}],skillDir:ei,managedOutputs:{dirs:[_l,ei,Sl,OR,ER],files:[Zs,Rl]},rewriteGeneratedPath(e){return e===qi?Zs:e.startsWith(`${Zi}/`)?Zs:e.startsWith(`${qs}/`)?e.replace(`${qs}/`,`${Sl}/`):e.startsWith(`${ea}/`)?e.replace(`${ea}/`,`${_l}/`):e.startsWith(`${Uo}/`)?e.replace(`${Uo}/`,`${ei}/`):e.startsWith(`${jo}/`)||e===kl?null:e},mirrorGlobalPath(e,t){if(e.startsWith(`${ei}/`)&&!t.includes("codex-cli")){let r=e.slice(ei.length+1);return [`.agents/skills/${r}`,`${ER}/${r}`]}return null},paths:{rulePath(e,t){return Zs},commandPath(e,t){return `${Sl}/${e}.prompt.md`},agentPath(e,t){return `${_l}/${e}.agent.md`}}},Jf={id:"copilot",metadata:{displayName:"GitHub Copilot",category:"ide",officialUrl:"https://github.com/features/copilot",shortDescription:"GitHub's AI pair programmer"},generators:$q,capabilities:XD,emptyImportMessage:"No Copilot config found (.github/copilot-instructions.md, .github/copilot or .github/instructions, .github/prompts, .github/skills, .github/agents, or .github/hooks).",lintRules:TD,lint:{commands:DD,hooks:ND},postProcessHookOutputs:s(async(e,t,r)=>GD(e,t,[...r]),"postProcessHookOutputs"),project:jq,globalSupport:{capabilities:QD,detectionPaths:[Zs,Rl,_l,ei,Sl,OR],layout:Uq,scopeExtras:jD},importer:JD,buildImportPaths:mS,detectionPaths:[".github/copilot-instructions.md",".github/copilot",".github/instructions",".github/prompts",".github/skills",".github/agents",".github/hooks"],nativeInstall:{inferPick:AD}};});function Xf(e){return {$schema:"https://charm.land/crush.json",...e}}var ZD=d(()=>{s(Xf,"buildCrushConfigJson");});function eN(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(Nr)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:vr,content:o}]:[]}function tN(e){return ie(e,mt)}function rN(e){return e.commands.map(t=>({path:`${mt}/${J(t.name)}/SKILL.md`,content:Ge(t)}))}function nN(e){return e.agents.map(t=>({path:`${mt}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function oN(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=Xf({mcp:e.mcp.mcpServers});return [{path:sr,content:JSON.stringify(t,null,2)}]}function sN(e){if(!e.hooks)return [];let t=Bq(e);if(Object.keys(t).length===0)return [];let r=Xf({hooks:t});return [{path:sr,content:JSON.stringify(r,null,2)}]}function iN(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=Xf({permissions:o});return [{path:sr,content:JSON.stringify(i,null,2)}]}function aN(e){if(!e.ignore||e.ignore.length===0)return [];let t=e.ignore.join(`
|
|
119
|
+
`);return [{path:Is,content:t}]}function Bq(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 lN=d(()=>{oe();Be();_e();be();kc();ZD();s(eN,"generateRules");s(tN,"generateSkills");s(rN,"generateCommands");s(nN,"generateAgents");s(oN,"generateMcp");s(sN,"generateHooks");s(iN,"generatePermissions");s(aN,"generateIgnore");s(Bq,"buildCrushHooksFromCanonical");});async function mN(e,t={}){let r=t.scope??"project",n=[],o=await H(Nr,e,r);return n.push(...await Q(Qf,e,r,{normalize:o})),await ne(e,r==="global"?ir:mt,Nr,n,o),await Kq(e,n),n}async function Kq(e,t){let r=join(e,sr),n=await k(r);if(n===null)return;let o;try{o=JSON.parse(n);}catch{return}if(!o||typeof o!="object"||Array.isArray(o))return;let i=o,a=Wq(i.mcp);if(Object.keys(a).length>0){let c=yf,m=join(e,c);await O(dirname(m)),await L(m,JSON.stringify({mcpServers:a},null,2)),t.push({fromTool:Nr,fromPath:r,toPath:c,feature:"mcp"});}let l=Hq(i.hooks);if(l!==null&&Object.keys(l).length>0){let c=".agentsmesh/hooks.yaml",m=join(e,c);await O(dirname(m));let p=zq(l);await L(m,p),t.push({fromTool:Nr,fromPath:r,toPath:c,feature:"hooks"});}}function Wq(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:Zn(o.args),env:Ut(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:Ut(o.headers),env:Ut(o.env),...i!==void 0?{description:i}:{}});}return t}function Hq(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 zq(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(`
|
|
120
|
+
`)}var pN=d(()=>{ge();oe();Ae();b();qt();DR();kc();s(mN,"importFromCrush");s(Kq,"importCrushConfigJson");s(Wq,"parseCrushMcpServers");s(Hq,"parseCrushHooks");s(zq,"serializeHooksYaml");});function uN(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Nr}))}var dN=d(()=>{Ee();kc();s(uN,"lintRules");});function fN(e){return e.commands.length===0?[]:[F(".agentsmesh/commands","crush","Crush has no native slash-command format; commands are projected as skills via supportsConversion.")]}var gN=d(()=>{Re();s(fN,"lintCommands");});function NR(e){try{let t=JSON.parse(e);return t!==null&&typeof t=="object"&&!Array.isArray(t)?t:{}}catch{return {}}}function qf(e,t){let r=NR(e),n=Jq.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 yN(e,t){let r=NR(e),n=Yq.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 _N(e,t){let r=NR(e),n=Vq.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 hN,Vq,Jq,Yq,fu=d(()=>{hN=[".claude/settings.json",".gemini/settings.json"],Vq=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(),Jq=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(),Yq=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(NR,"parseJsonObject");s(qf,"mergeSettingsJson");s(yN,"mergeGeminiSettingsJson");s(_N,"mergeCrushConfigJson");});var Xq,Qq,qq,Zq,eZ,Qf,DR=d(()=>{be();_e();lN();dt();pN();dN();gN();Oe();fu();kc();Xq={name:Nr,primaryRootInstructionPath:vr,generateRules:eN,generateCommands:rN,generateAgents:nN,generateSkills:tN,generateMcp:oN,generateHooks:sN,generatePermissions:iN,generateIgnore:aN,importFrom:mN},Qq={rootInstructionPath:vr,skillDir:mt,managedOutputs:{dirs:[mt],files:[vr,sr,Is]},paths:{rulePath(e){return vr},commandPath(e){return `${mt}/${J(e)}/SKILL.md`},agentPath(e){return `${mt}/${V(e)}/SKILL.md`}}},qq={rootInstructionPath:Ua,skillDir:ir,managedOutputs:{dirs:[ir],files:[Ua,ff]},rewriteGeneratedPath(e){return e===vr?Ua:e===sr?ff:e===Is?null:e.startsWith(`${mt}/`)?e.replace(`${mt}/`,`${ir}/`):e},mirrorGlobalPath(e,t){return fe(e,ir,t)},paths:{rulePath(e){return Ua},commandPath(e){return `${ir}/${J(e)}/SKILL.md`},agentPath(e){return `${ir}/${V(e)}/SKILL.md`}}},Zq={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"partial"},eZ={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},Qf={id:Nr,metadata:{displayName:"Crush",category:"cli",officialUrl:"https://github.com/charmbracelet/crush",shortDescription:"Charm's TUI coding agent"},generators:Xq,capabilities:Zq,emptyImportMessage:"No Crush config found (CRUSH.md, .crush/skills/, crush.json, or .crushignore).",lintRules:uN,lint:{commands:fN},supportsConversion:{commands:true,agents:true},project:Qq,globalSupport:{capabilities:eZ,detectionPaths:[Ua,ff,ir],layout:qq},mergeGeneratedOutputContent(e,t,r,n){let o=t?.content??e;return o!==null&&n===sr?_N(o,r):null},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[vr],global:[Ua]},canonicalDir:gf,canonicalRootFilename:"_root.md",markAsRoot:true},ignore:{feature:"ignore",mode:"flatFile",source:{project:[Is]},canonicalDir:".agentsmesh",canonicalFilename:hf}},buildImportPaths:pS,detectionPaths:[vr,sr,mt,Is],sharedArtifacts:{".crush/skills/":"owner"}};});function vR(e){let t=[],r=e.rules.find(i=>i.root);if(r){let i=r.body.trim()?r.body:"";t.push({path:xi,content:i});let a={alwaysApply:true};r.description&&(a.description=r.description);let l=T(a,i);t.push({path:Ls,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=T(c,i.body.trim()||"");t.push({path:`${Fr}/${a}.mdc`,content:m});}let o=SN(e);return o.trim()&&t.push({path:kn,content:o}),t}function SN(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(`
|
|
121
121
|
|
|
122
|
-
`)}var
|
|
123
|
-
`);return [{path:
|
|
122
|
+
`)}var RN=d(()=>{B();Be();Qe();s(vR,"generateRules");s(SN,"renderCursorGlobalUserRules");});function FR(e){return e.commands.map(t=>({path:`${Mr}/${t.name}.md`,content:t.body.trim()||""}))}var kN=d(()=>{Qe();s(FR,"generateCommands");});function MR(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:ar,content:t}]}var IN=d(()=>{Qe();s(MR,"generateMcp");});function GR(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=T(n,r.body.trim()||"");t.push({path:`${It}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${It}/${r.name}/${a}`,content:i.content});}}return t}var LN=d(()=>{B();Qe();s(GR,"generateSkills");});function $R(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=T(r,t.body.trim()||"");return {path:`${Gr}/${t.name}.md`,content:n}})}var CN=d(()=>{B();Qe();s($R,"generateAgents");});function jR(e){return []}var EN=d(()=>{s(jR,"generatePermissions");});function rZ(e){let t={};for(let[r,n]of Object.entries(e)){if(!Array.isArray(n))continue;let o=[];for(let i of n){if(!Yn(i))continue;let a=Je(i),l=xt(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}function UR(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=rZ(e.hooks);if(Object.keys(t).length===0)return [];let r=JSON.stringify({version:1,hooks:t},null,2);return [{path:co,content:r}]}var ON=d(()=>{Lr();Qe();s(rZ,"toCursorHooks");s(UR,"generateHooks");});function BR(e){if(!e.ignore||e.ignore.length===0)return [];let t=e.ignore.join(`
|
|
123
|
+
`);return [{path:Rn,content:t}]}var wN=d(()=>{Qe();s(BR,"generateIgnore");});var bN=d(()=>{RN();kN();IN();LN();CN();EN();ON();wN();});var AN=d(()=>{bN();});async function eg(e,t,r,n){let o=e.replace(/\.mdc$/i,".md"),i=join(t,o),l=x(r(i)).frontmatter.alwaysApply===true,c=l?join(t,"_root.md"):i,{frontmatter:m,body:p}=x(r(c));l&&n();let u={...m,root:l};if(delete u.alwaysApply,!l){let f=nZ(m);f!==null&&(u.trigger=f);}return {destPath:c,toPath:`${mo}/${l?"_root.md":o}`,feature:"rules",content:await z(c,u,p)}}function nZ(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 xN(e,t,r){let n=join(t,e),{frontmatter:o,body:i}=x(r(n)),a=wr(o.allowedTools),l=a.length>0?a:wr(o["allowed-tools"]);return {destPath:n,toPath:`${Ti}/${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 TN(e,t,r){let n=join(t,e),{frontmatter:o,body:i}=x(r(n));return {destPath:n,toPath:`${Pi}/${e}`,feature:"agents",content:await ve(n,o,i)}}var KR=d(()=>{B();de();qt();Qe();s(eg,"mapCursorRuleFile");s(nZ,"deriveCursorTrigger");s(xN,"mapCursorCommandFile");s(TN,"mapCursorAgentFile");});async function Jc(e){let t=join(e.projectRoot,mo);await O(t);let r=join(t,"_root.md"),n=await Mo({content:e.content,projectRoot:e.projectRoot,rulesDir:mo,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}=x(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:`${mo}/_root.md`,feature:"rules"}),true}var WR=d(()=>{b();B();Wc();de();Qe();s(Jc,"importCursorRootFile");});async function DN(e,t,r){let n=join(e,mo),o=false,i=join(e,Fr);if(t.push(...await Se({srcDir:i,destDir:n,extensions:[".mdc"],fromTool:"cursor",normalize:r,mapEntry:s(async({srcPath:a,relativePath:l,normalizeTo:c})=>{if(o){let m=await k(a);if(m!==null){let{frontmatter:p}=x(m);if(p.alwaysApply===true)return null}}return eg(l,n,c,()=>{o=true;})},"mapEntry")})),!o){let a=join(e,xi),l=await k(a);l!==null&&(o=await Jc({projectRoot:e,results:t,sourcePath:a,content:l,normalize:r}));}if(!o){let a=join(e,eb),l=await k(a);l!==null&&await Jc({projectRoot:e,results:t,sourcePath:a,content:l,normalize:r});}}var NN=d(()=>{b();B();Zt();KR();WR();Qe();s(DN,"importCursorRules");});function vN(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(!Yn({...m,type:p}))continue;let u=p==="prompt"?xt(m)||Je(m):Je(m)||xt(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 ng(e,t){let r=false,n=join(e,co),o=await k(n);if(o)try{let p=JSON.parse(o);if(p.hooks&&typeof p.hooks=="object"){let u=vN(p.hooks);if(Object.keys(u).length>0){let f=stringify(u),g=join(e,Np);await O(dirname(g)),await L(g,f),t.push({fromTool:"cursor",fromPath:n,toPath:Np,feature:"hooks"}),r=!0;}}}catch{}let i=join(e,_f),a=await k(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,dS);await O(dirname(h)),await L(h,g),t.push({fromTool:"cursor",fromPath:i,toPath:dS,feature:"permissions"});}}let m=r?void 0:l.hooks;if(m&&typeof m=="object"&&!Array.isArray(m)){let p=vN(m);if(Object.keys(p).length>0){let u=stringify(p),f=join(e,Np);await O(dirname(f)),await L(f,u),t.push({fromTool:"cursor",fromPath:i,toPath:Np,feature:"hooks"});}}}async function og(e,t){let r=[{path:join(e,Rn),label:Rn},{path:join(e,uS),label:uS}],n=[],o=[];for(let a of r){let l=await k(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,fS);await O(dirname(i)),await L(i,n.join(`
|
|
124
124
|
`)+`
|
|
125
|
-
`),t.push({fromTool:"cursor",fromPath:join(e,o[0]),toPath:jR,feature:"ignore"});}var pS=d(()=>{qr();A();Ye();s(LD,"cursorHooksToCanonical");s(Pf,"importSettings");s(Df,"importIgnore");});async function Nf(e,t,r,n=kt){let o=join(e,n),i=await Mp(o),a={projectRoot:e,destCanonicalSkillsDir:hb,targetName:"cursor",normalize:r,results:t};for(let[p,u]of i)await Fp(p,u,a);let l=await U(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 k(p);if(!u)continue;let f=basename(p,".md");await Ix(f,p,u,a);}}var uS=d(()=>{A();bc();Ye();s(Nf,"importSkills");});async function CD(e){if(await j(join(e,br)))return true;let t=[join(e,pn),join(e,ql),join(e,tr),join(e,Xn),join(e,mn),join(e,kt),join(e,Ar),join(e,Or)];for(let i of t){let a=await k(i);if(a!==null&&a.trim()!=="")return true}return !!((await U(join(e,kt))).some(i=>i.endsWith(".md"))||(await U(join(e,Ar))).some(i=>i.endsWith(".md"))||(await U(join(e,Or))).some(i=>i.endsWith(".md")))}async function ED(e,t,r){let n=join(e,qn),o=false,i=join(e,br),a=await ke({srcDir:i,destDir:n,extensions:[".mdc"],fromTool:Tc,normalize:r,mapEntry:s(async({srcPath:l,relativePath:c,normalizeTo:m})=>{if(o){let p=await k(l);if(p!==null){let{frontmatter:u}=x(p);if(u.alwaysApply===true)return null}}return Af(c,n,m,()=>{o=true;})},"mapEntry")});return t.push(...a),o}async function wD(e,t,r){let n=join(e,ql),o=await k(n);return o===null||o.trim()===""?false:xc({projectRoot:e,results:t,sourcePath:n,content:o.trim(),normalize:r})}async function bD(e,t,r){let n=join(e,pn),o=await k(n);return o===null||o.trim()===""?false:xc({projectRoot:e,results:t,sourcePath:n,content:o.trim(),normalize:r})}async function OD(e,t){let r=join(e,tr),n=await k(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,Ql);await w(dirname(i)),await L(i,n),t.push({fromTool:Tc,fromPath:r,toPath:Ql,feature:"mcp"});}async function AD(e,t,r){let n=join(e,Ar),o=join(e,ai);t.push(...await ke({srcDir:n,destDir:o,extensions:[".md"],fromTool:Tc,normalize:r,mapEntry:s(({relativePath:i,normalizeTo:a})=>_D(i,o,a),"mapEntry")}));}async function xD(e,t,r){let n=join(e,Or),o=join(e,ii);t.push(...await ke({srcDir:n,destDir:o,extensions:[".md"],fromTool:Tc,normalize:r,mapEntry:s(({relativePath:i,normalizeTo:a})=>RD(i,o,a),"mapEntry")}));}var Tc,TD=d(()=>{A();B();Yt();Ye();cS();lS();Tc="cursor";s(CD,"hasGlobalCursorArtifacts");s(ED,"importGlobalCursorRulesFromDir");s(wD,"importGlobalUserRules");s(bD,"importGlobalDotCursorAgents");s(OD,"importGlobalMcp");s(AD,"importGlobalAgents");s(xD,"importGlobalCommands");});async function PD(e){if(!await CD(e))return [];let t=[],r=await z(Tc,e,"global"),n=await ED(e,t,r);return n||(n=await wD(e,t,r)),n||await bD(e,t,r),await OD(e,t),await Nf(e,t,r,kt),await AD(e,t,r),await xD(e,t,r),await Pf(e,t),await Df(e,t),t}var DD=d(()=>{ge();Ye();uS();pS();TD();s(PD,"importFromCursorGlobalExports");});async function hq(e,t){let r=join(e,tr),n=await k(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 Je(e,Ql,i),t.push({fromTool:"cursor",fromPath:r,toPath:Ql,feature:"mcp"});}async function ND(e,t={}){if(t.scope==="global")return PD(e);let r=[],n=await z("cursor",e);return await kD(e,r,n),r.push(...await q(vf,e,"project",{normalize:n})),await Nf(e,r,n),await hq(e,r),await Pf(e,r),await Df(e,r),r}var vD=d(()=>{ge();A();be();nn();ID();pS();uS();DD();Ye();dS();s(hq,"importMcp");s(ND,"importFromCursor");});var MD,$D,GD=d(()=>{B();fe();Sr();Ye();MD=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n)),a=_r(o.allowedTools),l=a.length>0?a:_r(o["allowed-tools"]);return {destPath:n,toPath:`${ii}/${e}`,content:await Se(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"),$D=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n));return {destPath:n,toPath:`${ai}/${e}`,content:await et(n,o,i)}},"cursorAgentMapper");});function jD(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(i=>({...i,target:fb}))}var UD=d(()=>{Ie();Ye();s(jD,"lintRules");});function BD(e){return e.commands.filter(t=>t.description.length>0||t.allowedTools.length>0).map(t=>v(t.source,"cursor","Cursor command files are plain Markdown; command description and allowed-tools metadata are not projected."))}function KD(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(v(".agentsmesh/mcp.json","cursor",`MCP server "${r}" uses env vars or URL/header interpolation; Cursor handling may differ from canonical MCP.`));}return t}function WD(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?[v(".agentsmesh/permissions.yaml","cursor","Cursor permissions are partial; tool-level allow/deny may lose fidelity.")]:[]}var HD=d(()=>{Oe();s(BD,"lintCommands");s(KD,"lintMcp");s(WD,"lintPermissions");});var yq,Rq,_q,Sq,vf,dS=d(()=>{yD();Ye();pt();vD();GD();UD();Ce();HD();yq={name:"cursor",primaryRootInstructionPath:os,generateRules:eS,generateCommands:tS,generateAgents:oS,generateSkills:nS,generateMcp:rS,generatePermissions:sS,generateHooks:iS,generateIgnore:aS,importFrom:ND},Rq={rootInstructionPath:os,outputFamilies:[{id:"root-mirrors",kind:"additional",explicitPaths:[si,pn]}],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`}}},_q={rootInstructionPath:os,outputFamilies:[{id:"root-mirrors",kind:"additional",explicitPaths:[si,pn]}],skillDir:kt,managedOutputs:{dirs:[br,Or,Ar,kt],files:[os,pn,tr,Xn,mn,ql]},rewriteGeneratedPath(e){return e===si?null:e===pn||e===os||e.startsWith(`${br}/`)||e.startsWith(`${Or}/`)||e.startsWith(`${Ar}/`)||e.startsWith(`${kt}/`)||e===tr||e===Xn||e===mn?e:e===Vd?null:e},mirrorGlobalPath(e,t){return de(e,kt,t)},paths:{rulePath(e,t){return `${br}/${e}.mdc`},commandPath(e,t){return `${Or}/${e}.md`},agentPath(e,t){return `${Ar}/${e}.md`}}},Sq={rules:"native",additionalRules:"embedded",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},vf={id:"cursor",metadata:{displayName:"Cursor",category:"ide",officialUrl:"https://cursor.com",shortDescription:"AI-first code editor"},generators:yq,capabilities:{rules:"native",additionalRules:"embedded",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:jD,lint:{commands:BD,mcp:KD,permissions:WD},project:Rq,globalSupport:{capabilities:Sq,detectionPaths:[os,pn,tr,Xn,mn,kt,Ar,Or,ql],layout:_q},importer:{commands:{feature:"commands",mode:"directory",source:{project:[Or]},canonicalDir:ii,extensions:[".md"],map:MD},agents:{feature:"agents",mode:"directory",source:{project:[Ar]},canonicalDir:ai,extensions:[".md"],map:$D}},buildImportPaths:UR,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 zD(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(Qn)),n=t?.body.trim()??"",o=ae(n,r);return o?[{path:xr,content:o}]:[]}function VD(e){return ie(e,It)}function JD(e){return e.commands.map(t=>({path:`${It}/${J(t.name)}/SKILL.md`,content:$e(t)}))}function YD(e){return e.agents.map(t=>({path:`${It}/${K(t.name)}/SKILL.md`,content:De(t)}))}function XD(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:ss,content:t}]}var qD=d(()=>{se();Ue();ue();we();Zl();s(zD,"generateRules");s(VD,"generateSkills");s(JD,"generateCommands");s(YD,"generateAgents");s(XD,"generateMcp");});async function QD(e,t={}){let r=t.scope??"project",n=[],o=await z(Qn,e,r);return n.push(...await q(Ff,e,r,{normalize:o})),await oe(e,r==="global"?un:It,Qn,n,o),n}var ZD=d(()=>{ge();se();be();Zl();fS();s(QD,"importFromDeepagentsCli");});function eN(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Qn}))}var tN=d(()=>{Ie();Zl();s(eN,"lintRules");});function rN(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[v(".agentsmesh/hooks.yaml","deepagents-cli","Deep Agents CLI hooks are global-only (~/.deepagents/hooks.json); project-level canonical hooks are not projected.")]:[]:[]}function nN(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?[]:[v(".agentsmesh/permissions.yaml","deepagents-cli","Deep Agents CLI permissions are managed via shell allow-lists (--shell-allow-list); canonical permissions are not projected.")]}function oN(e){return e.ignore.length===0?[]:[v(".agentsmesh/ignore","deepagents-cli","Deep Agents CLI has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}var sN=d(()=>{Oe();s(rN,"lintHooks");s(nN,"lintPermissions");s(oN,"lintIgnore");});var kq,Iq,Lq,Cq,Eq,Ff,fS=d(()=>{we();ue();qD();ZD();tN();sN();Ce();Zl();kq={name:Qn,primaryRootInstructionPath:xr,generateRules:zD,generateCommands:JD,generateAgents:YD,generateSkills:VD,generateMcp:XD,importFrom:QD},Iq={rootInstructionPath:xr,skillDir:It,managedOutputs:{dirs:[It],files:[xr,ss]},paths:{rulePath(e){return xr},commandPath(e){return `${It}/${J(e)}/SKILL.md`},agentPath(e){return `${It}/${K(e)}/SKILL.md`}}},Lq={rootInstructionPath:is,skillDir:un,managedOutputs:{dirs:[un],files:[is,ha]},rewriteGeneratedPath(e){return e===xr?is:e===ss?ha:e.startsWith(`${It}/`)?e.replace(`${It}/`,`${un}/`):e},paths:{rulePath(e){return is},commandPath(e){return `${un}/${J(e)}/SKILL.md`},agentPath(e){return `${un}/${K(e)}/SKILL.md`}}},Cq={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},Eq={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},Ff={id:Qn,metadata:{displayName:"Deep Agents CLI",category:"cli",officialUrl:"https://github.com/langchain-ai/deepagents",shortDescription:"LangChain Deep Agents framework CLI"},generators:kq,capabilities:Cq,emptyImportMessage:"No Deep Agents CLI config found (.deepagents/AGENTS.md, .deepagents/skills, or .mcp.json).",lintRules:eN,lint:{hooks:rN,permissions:nN,ignore:oN},supportsConversion:{commands:true,agents:true},project:Iq,globalSupport:{capabilities:Eq,detectionPaths:[is,ha],layout:Lq},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[xr],global:[is]},canonicalDir:Rb,canonicalRootFilename:"_root.md",markAsRoot:true},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[ss],global:[ha]},canonicalDir:".agentsmesh",canonicalFilename:"mcp.json"}},buildImportPaths:BR,detectionPaths:[xr,ss]};});function iN(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),D(t,e.body.trim()||"")}var aN=d(()=>{B();s(iN,"serializeDroid");});function lN(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(Tr)),n=t?.body.trim()??"",o=ae(n,r);return o?[{path:Pr,content:o}]:[]}function cN(e){return ie(e,jt)}function mN(e){return e.commands.map(t=>({path:`${jt}/${J(t.name)}/SKILL.md`,content:$e(t)}))}function pN(e){return e.agents.map(t=>({path:`${Zn}/${t.name}.md`,content:iN(t)}))}function uN(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:eo,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}var dN=d(()=>{se();Ue();we();aN();Ra();s(lN,"generateRules");s(cN,"generateSkills");s(mN,"generateCommands");s(pN,"generateAgents");s(uN,"generateMcp");});async function gN(e,t,r){let n=await k(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 Je(e,fN,l),r.push({fromTool:Tr,fromPath:t,toPath:fN,feature:"mcp"}));}var fN,hN=d(()=>{A();nn();Ra();fN=".agentsmesh/mcp.json";s(gN,"importFactoryDroidMcp");});async function yN(e,t={}){let r=t.scope??"project",n=[],o=await z(Tr,e,r);return n.push(...await q(Mf,e,r,{normalize:o})),await oe(e,r==="global"?to:jt,Tr,n,o),await gN(e,r==="global"?li:eo,n),n}var RN=d(()=>{ge();se();be();hN();Ra();gS();s(yN,"importFromFactoryDroid");});function _N(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Tr}))}var SN=d(()=>{Ie();Ra();s(_N,"lintRules");});function kN(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[v(".agentsmesh/hooks.yaml","factory-droid","Factory Droid hooks are configured via settings.json events (PreToolUse/PostToolUse), not standalone files; canonical hooks are not projected.")]:[]:[]}function IN(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?[]:[v(".agentsmesh/permissions.yaml","factory-droid","Factory Droid permissions are managed via CLI flags (--skip-permissions-unsafe); canonical permissions are not projected.")]}function LN(e){return e.ignore.length===0?[]:[v(".agentsmesh/ignore","factory-droid","Factory Droid has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}var CN=d(()=>{Oe();s(kN,"lintHooks");s(IN,"lintPermissions");s(LN,"lintIgnore");});var bq,Oq,Aq,EN,Mf,gS=d(()=>{dN();Ra();RN();SN();CN();Ce();we();bq={name:Tr,primaryRootInstructionPath:Pr,generateRules:lN,generateCommands:mN,generateAgents:pN,generateSkills:cN,generateMcp:uN,importFrom:yN},Oq={rootInstructionPath:Pr,skillDir:jt,managedOutputs:{dirs:[jt,Zn],files:[Pr,eo]},paths:{rulePath(e){return Pr},commandPath(e){return `${jt}/${J(e)}/SKILL.md`},agentPath(e){return `${Zn}/${e}.md`}}},Aq={rootInstructionPath:as,skillDir:to,managedOutputs:{dirs:[to,ya],files:[as,li]},rewriteGeneratedPath(e){return e===Pr?as:e===eo?li:e.startsWith(`${jt}/`)?e.replace(`${jt}/`,`${to}/`):e.startsWith(`${Zn}/`)?e.replace(`${Zn}/`,`${ya}/`):e},paths:{rulePath(e){return as},commandPath(e){return `${to}/${J(e)}/SKILL.md`},agentPath(e){return `${ya}/${e}.md`}}},EN={rules:"native",additionalRules:"embedded",commands:"none",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},Mf={id:Tr,metadata:{displayName:"Factory Droid",category:"agent-platform",officialUrl:"https://www.factory.ai",shortDescription:"Factory.ai's coding droid"},generators:bq,capabilities:EN,emptyImportMessage:"No Factory Droid config found (AGENTS.md, .factory/skills, or .factory/mcp.json).",lintRules:_N,lint:{hooks:kN,permissions:IN,ignore:LN},supportsConversion:{commands:true},project:Oq,globalSupport:{capabilities:EN,detectionPaths:[as,li,ya],layout:Aq},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Pr],global:[as]},canonicalDir:Sb,canonicalRootFilename:"_root.md",markAsRoot:true}},buildImportPaths:KR,detectionPaths:[Pr,eo,Zn]};});var xi,Wr,Lo,wN,bN,Co,$f,Qa,Gf,Wp,Ti,ON,AN,Pi,jf,Hp,zp,hS,yS,Pc,RS,Dc,Nc,Uf,vc,Za,Vp,nt=d(()=>{xi="gemini-cli",Wr="GEMINI.md",Lo="AGENTS.md",wN=".gemini/rules",bN=".gemini/GEMINI.md",Co=".gemini/commands",$f=".gemini/policies",Qa=".gemini/settings.json",Gf=".geminiignore",Wp=".gemini/skills",Ti=".gemini/agents",ON=".gemini/system.md",AN=`${$f}/permissions.toml`,Pi=".agentsmesh/rules",jf=".agentsmesh/commands",Hp=".agentsmesh/agents",zp=".agentsmesh/skills",hS=".agentsmesh/mcp.json",yS=".agentsmesh/hooks.yaml",Pc=".agentsmesh/ignore",RS=".agentsmesh/permissions.yaml",Dc=".gemini/GEMINI.md",Nc=".gemini/AGENTS.md",Uf=".gemini/settings.json",vc=".gemini/commands",Za=".gemini/skills",Vp=".gemini/agents";});function _S(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=ae(t?.body.trim()??"",r),o=[{path:Wr,content:n}];return t&&o.push({path:Lo,content:t.body.trim()}),o}var xN=d(()=>{Ue();nt();s(_S,"generateRules");});function TN(e,t){let r=e.split(":").filter(Boolean),n=r.length>0?r.pop():e;return [t,...r,`${n}.toml`].join("/")}var PN=d(()=>{s(TN,"canonicalCommandNameToGeminiTomlPath");});function xq(e){let t=e.replace(/\r\n/g,`
|
|
125
|
+
`),t.push({fromTool:"cursor",fromPath:join(e,o[0]),toPath:fS,feature:"ignore"});}var zR=d(()=>{Lr();b();Qe();s(vN,"cursorHooksToCanonical");s(ng,"importSettings");s(og,"importIgnore");});async function sg(e,t,r,n=It){let o=join(e,n),i=await lu(o),a={projectRoot:e,destCanonicalSkillsDir:tb,targetName:"cursor",normalize:r,results:t};for(let[p,u]of i)await au(p,u,a);let l=await U(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 k(p);if(!u)continue;let f=basename(p,".md");await CT(f,p,u,a);}}var VR=d(()=>{b();Vc();Qe();s(sg,"importSkills");});async function FN(e){if(await j(join(e,Fr)))return true;let t=[join(e,kn),join(e,Ic),join(e,ar),join(e,co),join(e,Rn),join(e,It),join(e,Gr),join(e,Mr)];for(let i of t){let a=await k(i);if(a!==null&&a.trim()!=="")return true}return !!((await U(join(e,It))).some(i=>i.endsWith(".md"))||(await U(join(e,Gr))).some(i=>i.endsWith(".md"))||(await U(join(e,Mr))).some(i=>i.endsWith(".md")))}async function MN(e,t,r){let n=join(e,mo),o=false,i=join(e,Fr),a=await Se({srcDir:i,destDir:n,extensions:[".mdc"],fromTool:Yc,normalize:r,mapEntry:s(async({srcPath:l,relativePath:c,normalizeTo:m})=>{if(o){let p=await k(l);if(p!==null){let{frontmatter:u}=x(p);if(u.alwaysApply===true)return null}}return eg(c,n,m,()=>{o=true;})},"mapEntry")});return t.push(...a),o}async function GN(e,t,r){let n=join(e,Ic),o=await k(n);return o===null||o.trim()===""?false:Jc({projectRoot:e,results:t,sourcePath:n,content:o.trim(),normalize:r})}async function $N(e,t,r){let n=join(e,kn),o=await k(n);return o===null||o.trim()===""?false:Jc({projectRoot:e,results:t,sourcePath:n,content:o.trim(),normalize:r})}async function jN(e,t){let r=join(e,ar),n=await k(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,Lc);await O(dirname(i)),await L(i,n),t.push({fromTool:Yc,fromPath:r,toPath:Lc,feature:"mcp"});}async function UN(e,t,r){let n=join(e,Gr),o=join(e,Pi);t.push(...await Se({srcDir:n,destDir:o,extensions:[".md"],fromTool:Yc,normalize:r,mapEntry:s(({relativePath:i,normalizeTo:a})=>TN(i,o,a),"mapEntry")}));}async function BN(e,t,r){let n=join(e,Mr),o=join(e,Ti);t.push(...await Se({srcDir:n,destDir:o,extensions:[".md"],fromTool:Yc,normalize:r,mapEntry:s(({relativePath:i,normalizeTo:a})=>xN(i,o,a),"mapEntry")}));}var Yc,KN=d(()=>{b();B();Zt();Qe();WR();KR();Yc="cursor";s(FN,"hasGlobalCursorArtifacts");s(MN,"importGlobalCursorRulesFromDir");s(GN,"importGlobalUserRules");s($N,"importGlobalDotCursorAgents");s(jN,"importGlobalMcp");s(UN,"importGlobalAgents");s(BN,"importGlobalCommands");});async function WN(e){if(!await FN(e))return [];let t=[],r=await H(Yc,e,"global"),n=await MN(e,t,r);return n||(n=await GN(e,t,r)),n||await $N(e,t,r),await jN(e,t),await sg(e,t,r,It),await UN(e,t,r),await BN(e,t,r),await ng(e,t),await og(e,t),t}var HN=d(()=>{ge();Qe();VR();zR();KN();s(WN,"importFromCursorGlobalExports");});async function lZ(e,t){let r=join(e,ar),n=await k(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 Xe(e,Lc,i),t.push({fromTool:"cursor",fromPath:r,toPath:Lc,feature:"mcp"});}async function zN(e,t={}){if(t.scope==="global")return WN(e);let r=[],n=await H("cursor",e);return await DN(e,r,n),r.push(...await Q(ig,e,"project",{normalize:n})),await sg(e,r,n),await lZ(e,r),await ng(e,r),await og(e,r),r}var VN=d(()=>{ge();b();Ae();hn();NN();zR();VR();HN();Qe();JR();s(lZ,"importMcp");s(zN,"importFromCursor");});var YN,XN,QN=d(()=>{B();de();qt();Qe();YN=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n)),a=wr(o.allowedTools),l=a.length>0?a:wr(o["allowed-tools"]);return {destPath:n,toPath:`${Ti}/${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"),XN=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n));return {destPath:n,toPath:`${Pi}/${e}`,content:await ve(n,o,i)}},"cursorAgentMapper");});function qN(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(i=>({...i,target:Zw}))}var ZN=d(()=>{Ee();Qe();s(qN,"lintRules");});function ev(e){return e.commands.filter(t=>t.description.length>0||t.allowedTools.length>0).map(t=>F(t.source,"cursor","Cursor command files are plain Markdown; command description and allowed-tools metadata are not projected."))}function tv(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(F(".agentsmesh/mcp.json","cursor",`MCP server "${r}" uses env vars or URL/header interpolation; Cursor handling may differ from canonical MCP.`));}return t}function rv(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?[F(".agentsmesh/permissions.yaml","cursor","Cursor permissions are partial; tool-level allow/deny may lose fidelity.")]:[]}var nv=d(()=>{Re();s(ev,"lintCommands");s(tv,"lintMcp");s(rv,"lintPermissions");});var cZ,mZ,pZ,uZ,ig,JR=d(()=>{AN();Qe();dt();VN();QN();ZN();Oe();nv();cZ={name:"cursor",primaryRootInstructionPath:Ls,generateRules:vR,generateCommands:FR,generateAgents:$R,generateSkills:GR,generateMcp:MR,generatePermissions:jR,generateHooks:UR,generateIgnore:BR,importFrom:zN},mZ={rootInstructionPath:Ls,outputFamilies:[{id:"root-mirrors",kind:"additional",explicitPaths:[xi,kn]}],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`}}},pZ={rootInstructionPath:Ls,outputFamilies:[{id:"root-mirrors",kind:"additional",explicitPaths:[xi,kn]}],skillDir:It,managedOutputs:{dirs:[Fr,Mr,Gr,It],files:[Ls,kn,ar,co,Rn,Ic]},rewriteGeneratedPath(e){return e===xi?null:e===kn||e===Ls||e.startsWith(`${Fr}/`)||e.startsWith(`${Mr}/`)||e.startsWith(`${Gr}/`)||e.startsWith(`${It}/`)||e===ar||e===co||e===Rn?e:e===_f?null:e},mirrorGlobalPath(e,t){return fe(e,It,t)},paths:{rulePath(e,t){return `${Fr}/${e}.mdc`},commandPath(e,t){return `${Mr}/${e}.md`},agentPath(e,t){return `${Gr}/${e}.md`}}},uZ={rules:"native",additionalRules:"embedded",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},ig={id:"cursor",metadata:{displayName:"Cursor",category:"ide",officialUrl:"https://cursor.com",shortDescription:"AI-first code editor"},generators:cZ,capabilities:{rules:"native",additionalRules:"embedded",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:qN,lint:{commands:ev,mcp:tv,permissions:rv},project:mZ,globalSupport:{capabilities:uZ,detectionPaths:[Ls,kn,ar,co,Rn,It,Gr,Mr,Ic],layout:pZ},importer:{commands:{feature:"commands",mode:"directory",source:{project:[Mr]},canonicalDir:Ti,extensions:[".md"],map:YN},agents:{feature:"agents",mode:"directory",source:{project:[Gr]},canonicalDir:Pi,extensions:[".md"],map:XN}},buildImportPaths:gS,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 ov(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(po)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:$r,content:o}]:[]}function sv(e){return ie(e,Lt)}function iv(e){return e.commands.map(t=>({path:`${Lt}/${J(t.name)}/SKILL.md`,content:Ge(t)}))}function av(e){return e.agents.map(t=>({path:`${Lt}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function lv(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:Cs,content:t}]}function cv(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=en(e);return Object.keys(t).length===0?[]:[{path:Sf,content:JSON.stringify(t,null,2)}]}var mv=d(()=>{oe();Be();_e();be();ul();Cc();s(ov,"generateRules");s(sv,"generateSkills");s(iv,"generateCommands");s(av,"generateAgents");s(lv,"generateMcp");s(cv,"generateHooks");});async function pv(e,t={}){let r=t.scope??"project",n=[],o=await H(po,e,r);return n.push(...await Q(ag,e,r,{normalize:o})),await ne(e,r==="global"?In:Lt,po,n,o),n}var uv=d(()=>{ge();oe();Ae();Cc();YR();s(pv,"importFromDeepagentsCli");});function dv(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:po}))}var fv=d(()=>{Ee();Cc();s(dv,"lintRules");});function gv(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?[]:[F(".agentsmesh/permissions.yaml","deepagents-cli","Deep Agents CLI permissions are managed via shell allow-lists (--shell-allow-list); canonical permissions are not projected.")]}function hv(e){return e.ignore.length===0?[]:[F(".agentsmesh/ignore","deepagents-cli","Deep Agents CLI has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}var yv=d(()=>{Re();s(gv,"lintPermissions");s(hv,"lintIgnore");});var dZ,fZ,gZ,hZ,yZ,ag,YR=d(()=>{be();_e();mv();uv();fv();yv();Oe();Cc();dZ={name:po,primaryRootInstructionPath:$r,generateRules:ov,generateCommands:iv,generateAgents:av,generateSkills:sv,generateMcp:lv,generateHooks:cv,importFrom:pv},fZ={rootInstructionPath:$r,skillDir:Lt,managedOutputs:{dirs:[Lt],files:[$r,Cs,Sf]},paths:{rulePath(e){return $r},commandPath(e){return `${Lt}/${J(e)}/SKILL.md`},agentPath(e){return `${Lt}/${V(e)}/SKILL.md`}}},gZ={rootInstructionPath:Es,skillDir:In,managedOutputs:{dirs:[In],files:[Es,Ba,nb]},rewriteGeneratedPath(e){return e===$r?Es:e===Cs?Ba:e.startsWith(`${Lt}/`)?e.replace(`${Lt}/`,`${In}/`):e},paths:{rulePath(e){return Es},commandPath(e){return `${In}/${J(e)}/SKILL.md`},agentPath(e){return `${In}/${V(e)}/SKILL.md`}}},hZ={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},yZ={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},ag={id:po,metadata:{displayName:"Deep Agents CLI",category:"cli",officialUrl:"https://github.com/langchain-ai/deepagents",shortDescription:"LangChain Deep Agents framework CLI"},generators:dZ,capabilities:hZ,emptyImportMessage:"No Deep Agents CLI config found (.deepagents/AGENTS.md, .deepagents/skills, or .mcp.json).",lintRules:dv,lint:{permissions:gv,ignore:hv},supportsConversion:{commands:true,agents:true},project:fZ,globalSupport:{capabilities:yZ,detectionPaths:[Es,Ba],layout:gZ},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[$r],global:[Es]},canonicalDir:ob,canonicalRootFilename:"_root.md",markAsRoot:true},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Cs],global:[Ba]},canonicalDir:".agentsmesh",canonicalFilename:"mcp.json"}},buildImportPaths:hS,detectionPaths:[$r,Cs]};});function _v(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),T(t,e.body.trim()||"")}var Sv=d(()=>{B();s(_v,"serializeDroid");});function Rv(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(jr)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Ur,content:o}]:[]}function kv(e){return ie(e,Bt)}function Iv(e){return e.commands.map(t=>({path:`${Bt}/${J(t.name)}/SKILL.md`,content:Ge(t)}))}function Lv(e){return e.agents.map(t=>({path:`${uo}/${t.name}.md`,content:_v(t)}))}function Cv(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=en(e);return Object.keys(t).length===0?[]:[{path:Rf,content:JSON.stringify(t,null,2)}]}function Ev(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:fo,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}var Ov=d(()=>{oe();Be();be();ul();Sv();Wa();s(Rv,"generateRules");s(kv,"generateSkills");s(Iv,"generateCommands");s(Lv,"generateAgents");s(Cv,"generateHooks");s(Ev,"generateMcp");});async function bv(e,t,r){let n=await k(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 Xe(e,wv,l),r.push({fromTool:jr,fromPath:t,toPath:wv,feature:"mcp"}));}var wv,Av=d(()=>{b();hn();Wa();wv=".agentsmesh/mcp.json";s(bv,"importFactoryDroidMcp");});async function xv(e,t={}){let r=t.scope??"project",n=[],o=await H(jr,e,r);return n.push(...await Q(lg,e,r,{normalize:o})),await ne(e,r==="global"?go:Bt,jr,n,o),await bv(e,r==="global"?Di:fo,n),n}var Tv=d(()=>{ge();oe();Ae();Av();Wa();XR();s(xv,"importFromFactoryDroid");});function Pv(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:jr}))}var Dv=d(()=>{Ee();Wa();s(Pv,"lintRules");});function Nv(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?[]:[F(".agentsmesh/permissions.yaml","factory-droid","Factory Droid permissions are managed via CLI flags (--skip-permissions-unsafe); canonical permissions are not projected.")]}function vv(e){return e.ignore.length===0?[]:[F(".agentsmesh/ignore","factory-droid","Factory Droid has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}var Fv=d(()=>{Re();s(Nv,"lintPermissions");s(vv,"lintIgnore");});var SZ,RZ,kZ,Mv,lg,XR=d(()=>{Ov();Wa();Tv();Dv();Fv();Oe();be();SZ={name:jr,primaryRootInstructionPath:Ur,generateRules:Rv,generateCommands:Iv,generateAgents:Lv,generateSkills:kv,generateMcp:Ev,generateHooks:Cv,importFrom:xv},RZ={rootInstructionPath:Ur,skillDir:Bt,managedOutputs:{dirs:[Bt,uo],files:[Ur,Rf,fo]},paths:{rulePath(e){return Ur},commandPath(e){return `${Bt}/${J(e)}/SKILL.md`},agentPath(e){return `${uo}/${e}.md`}}},kZ={rootInstructionPath:Os,skillDir:go,managedOutputs:{dirs:[go,Ka],files:[Os,ib,Di]},rewriteGeneratedPath(e){return e===Ur?Os:e===fo?Di:e.startsWith(`${Bt}/`)?e.replace(`${Bt}/`,`${go}/`):e.startsWith(`${uo}/`)?e.replace(`${uo}/`,`${Ka}/`):e},paths:{rulePath(e){return Os},commandPath(e){return `${go}/${J(e)}/SKILL.md`},agentPath(e){return `${Ka}/${e}.md`}}},Mv={rules:"native",additionalRules:"embedded",commands:"none",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},lg={id:jr,metadata:{displayName:"Factory Droid",category:"agent-platform",officialUrl:"https://www.factory.ai",shortDescription:"Factory.ai's coding droid"},generators:SZ,capabilities:Mv,emptyImportMessage:"No Factory Droid config found (AGENTS.md, .factory/skills, or .factory/mcp.json).",lintRules:Pv,lint:{permissions:Nv,ignore:vv},supportsConversion:{commands:true},project:RZ,globalSupport:{capabilities:Mv,detectionPaths:[Os,Di,Ka],layout:kZ},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Ur],global:[Os]},canonicalDir:ab,canonicalRootFilename:"_root.md",markAsRoot:true}},buildImportPaths:yS,detectionPaths:[Ur,fo,uo]};});var ta,rn,Bo,Gv,$v,Ko,cg,Il,mg,gu,ra,jv,Uv,na,pg,hu,yu,QR,qR,Xc,ZR,Qc,qc,ug,Zc,Ll,_u,ot=d(()=>{ta="gemini-cli",rn="GEMINI.md",Bo="AGENTS.md",Gv=".gemini/rules",$v=".gemini/GEMINI.md",Ko=".gemini/commands",cg=".gemini/policies",Il=".gemini/settings.json",mg=".geminiignore",gu=".gemini/skills",ra=".gemini/agents",jv=".gemini/system.md",Uv=`${cg}/permissions.toml`,na=".agentsmesh/rules",pg=".agentsmesh/commands",hu=".agentsmesh/agents",yu=".agentsmesh/skills",QR=".agentsmesh/mcp.json",qR=".agentsmesh/hooks.yaml",Xc=".agentsmesh/ignore",ZR=".agentsmesh/permissions.yaml",Qc=".gemini/GEMINI.md",qc=".gemini/AGENTS.md",ug=".gemini/settings.json",Zc=".gemini/commands",Ll=".gemini/skills",_u=".gemini/agents";});function ek(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:rn,content:n}];return t&&o.push({path:Bo,content:t.body.trim()}),o}var Bv=d(()=>{Be();ot();s(ek,"generateRules");});function Kv(e,t){let r=e.split(":").filter(Boolean),n=r.length>0?r.pop():e;return [t,...r,`${n}.toml`].join("/")}var Wv=d(()=>{s(Kv,"canonicalCommandNameToGeminiTomlPath");});function IZ(e){let t=e.replace(/\r\n/g,`
|
|
126
126
|
`);return t.includes('"""')?JSON.stringify(t):`"""
|
|
127
127
|
${t}
|
|
128
|
-
"""`}function
|
|
128
|
+
"""`}function LZ(e){return [`description = ${JSON.stringify(e.description||e.name)}`,`prompt = ${IZ(e.body.trim()||"")}`].join(`
|
|
129
129
|
`)+`
|
|
130
|
-
`}function
|
|
131
|
-
`)}]}var
|
|
132
|
-
`)}function
|
|
133
|
-
`)}]}var
|
|
130
|
+
`}function tk(e){return e.commands.map(t=>({path:Kv(t.name,Ko),content:LZ(t)}))}var Hv=d(()=>{ot();Wv();s(IZ,"serializeTomlMultilineLiteral");s(LZ,"serializeGeminiCommand");s(tk,"generateCommands");});function rk(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=T(r,t.body.trim()||"");return {path:`${ra}/${t.name}.md`,content:n}})}var zv=d(()=>{B();ot();s(rk,"generateAgents");});function nk(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=T(n,r.body.trim()||"");t.push({path:`${gu}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${gu}/${r.name}/${a}`,content:i.content});}}return t}var Vv=d(()=>{B();ot();s(nk,"generateSkills");});function CZ(e){switch(e){case "PreToolUse":return "BeforeTool";case "PostToolUse":return "AfterTool";case "Notification":return "Notification";default:return null}}function ok(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=CZ(i);if(!l||!Array.isArray(a))return [];let c=a.filter(m=>typeof m=="object"&&m!==null&&mn(m)).map((m,p)=>({matcher:m.matcher,hooks:[{name:`${l}-${p+1}`,type:"command",command:Je(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:[rn,Bo]}),Object.keys(r).length===0?[]:[{path:Il,content:JSON.stringify(r,null,2)}]}var sk=d(()=>{Lr();ot();s(CZ,"mapHookEvent");s(ok,"generateGeminiSettingsFiles");});function ik(e){return !e.ignore||e.ignore.length===0?[]:[{path:mg,content:e.ignore.join(`
|
|
131
|
+
`)}]}var Jv=d(()=>{ot();s(ik,"generateIgnore");});var Yv=d(()=>{Bv();Hv();zv();Vv();sk();Jv();});var Xv=d(()=>{Yv();});function Cl(e){return JSON.stringify(e)}function EZ(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function OZ(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 dg(e,t,r){return ["[[rule]]",`decision = ${Cl(e)}`,`priority = ${t}`,...r,""].join(`
|
|
132
|
+
`)}function Qv(e,t,r){let n=OZ(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 dg(t,r,[`toolName = ${Cl(i)}`])}if(n.kind==="bash"){let i=n.prefix.replace(/:\*$/u,"").replace(/\*$/u,"").trim();return dg(t,r,[`toolName = ${Cl(o.Bash)}`,`commandPrefix = ${Cl(i)}`])}return n.kind==="read"?dg(t,r,[`toolName = ${Cl(o.Read)}`,`argsPattern = ${Cl(EZ(n.path))}`]):dg(t,r,[`toolName = ${Cl(n.raw)}`])}function qv(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=Qv(i,"allow",100+a);l&&o.push(l);}),r.forEach((i,a)=>{let l=Qv(i,"deny",200+a);l&&o.push(l);}),o.length===0?[]:[{path:Uv,content:o.join(`
|
|
133
|
+
`)}]}var Zv=d(()=>{ot();s(Cl,"escapeTomlBasicString");s(EZ,"escapeRegexLiteral");s(OZ,"parsePermissionExpr");s(dg,"ruleForDecision");s(Qv,"permissionExprToGeminiRule");s(qv,"generateGeminiPermissionsPolicies");});function ak(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 fg(e){let t=e.indexOf("---"),r=e.indexOf("+++");if(t===0&&(r===-1||t<=r))return x(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 lk=d(()=>{B();s(ak,"mapGeminiHookEvent");s(fg,"parseFlexibleFrontmatter");});async function ck(e,t){let r=join(e,Il),n=await k(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,QR);await O(join(e,".agentsmesh")),await L(c,JSON.stringify({mcpServers:i},null,2)),t.push({fromTool:"gemini-cli",fromPath:r,toPath:QR,feature:"mcp"});}let a=o.ignorePatterns;if(Array.isArray(a)&&a.length>0&&a.every(c=>typeof c=="string")){let c=join(e,Xc);await O(join(e,".agentsmesh")),await L(c,a.join(`
|
|
134
134
|
`)+`
|
|
135
|
-
`),t.push({fromTool:"gemini-cli",fromPath:r,toPath:
|
|
135
|
+
`),t.push({fromTool:"gemini-cli",fromPath:r,toPath:Xc,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=ak(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"&&mn(h)).map(h=>({matcher:g.matcher,command:Je(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"&&mn(h)).map(h=>({matcher:h.matcher,command:Je(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,qR);await O(join(e,".agentsmesh")),await L(p,stringify(m,{lineWidth:0}).trimEnd()),t.push({fromTool:"gemini-cli",fromPath:r,toPath:qR,feature:"hooks"});}}}var eF=d(()=>{Lr();b();ot();lk();s(ck,"importGeminiSettings");});async function tF(e,t){let r=join(e,mg),n=await k(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,Xc);await L(i,o.join(`
|
|
136
136
|
`)+`
|
|
137
|
-
`),t.push({fromTool:"gemini-cli",fromPath:r,toPath:
|
|
138
|
-
`),t.push({fromTool:
|
|
139
|
-
`)}]}var
|
|
140
|
-
`)}]}function
|
|
141
|
-
`)}]}function
|
|
137
|
+
`),t.push({fromTool:"gemini-cli",fromPath:r,toPath:Xc,feature:"ignore"});}}}var pk=d(()=>{b();ot();lk();eF();s(tF,"importGeminiIgnore");});function TZ(e){return e.replace(/\\(.)/g,"$1")}function PZ(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 DZ(e){return `Bash(${e}:*)`}function NZ(e){return `Read(${TZ(e)})`}async function rF(e){let t=[],r=join(e,cg),n;try{n=await U(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 k(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 _ of h){if(!_||typeof _!="object")continue;let S=_,R=typeof S.toolName=="string"?S.toolName:null,I=typeof S.decision=="string"?S.decision:null;if(!R||!I)continue;let w=PZ(R);if(!w)continue;let D=null;w==="Bash"?typeof S.commandPrefix=="string"&&S.commandPrefix.trim()&&(D=DZ(S.commandPrefix.trim())):w==="Read"?typeof S.argsPattern=="string"&&S.argsPattern.trim()?D=NZ(S.argsPattern.trim()):D="Read":D=w,D&&(I==="allow"?l.has(D)||(l.add(D),i.push(D)):I==="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,ZR),p=stringify({allow:i,deny:a});return await L(m,p.trimEnd()+`
|
|
138
|
+
`),t.push({fromTool:ta,fromPath:join(e,cg),toPath:ZR,feature:"permissions"}),t}var nF=d(()=>{b();ot();s(TZ,"unescapeRegexLiteral");s(PZ,"toolNameToPermissionBase");s(DZ,"commandPrefixToBashExpr");s(NZ,"argsPatternToReadExpr");s(rF,"importGeminiPolicies");});function uk(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 sF=d(()=>{s(uk,"stripProjectRootCanonicalPrefix");});async function aF(e,t,r){let n=join(e,gu),i=(await U(n)).filter(l=>basename(l)==="SKILL.md");for(let l of i){let c=await k(l);if(!c)continue;let m=basename(l.slice(0,-9)),p=x(c),u=cc(p.frontmatter,m);if(u){let I=join(e,hu);await O(I);let w=join(I,`${u.name}.md`);await L(w,ki(u,r(p.body,l,w))),t.push({fromTool:"gemini-cli",fromPath:l,toPath:`${hu}/${u.name}.md`,feature:"agents"});continue}let f=join(e,yu,m,"SKILL.md"),g=r(c,l,f),h=join(e,yu,m);await O(h);let{frontmatter:_,body:S}=x(g);await L(f,await Xn(f,{..._,name:m},S)),t.push({fromTool:"gemini-cli",fromPath:l,toPath:`${yu}/${m}/SKILL.md`,feature:"skills"});let R=await U(dirname(l));for(let I of R){if(I===l)continue;let w=await k(I);if(w===null)continue;let D=relative(dirname(l),I).replace(/\\/g,"/"),P=join(h,D);await O(dirname(P)),await L(P,r(w,I,P)),t.push({fromTool:"gemini-cli",fromPath:I,toPath:`${yu}/${m}/${D}`,feature:"skills"});}}let a=join(e,ra);try{let c=(await U(a)).filter(m=>m.endsWith(".md"));for(let m of c){let p=await k(m);if(!p)continue;let{frontmatter:u,body:f}=x(p),h=relative(a,m).replace(/\\/g,"/").replace(/\.md$/i,".md"),_=join(e,hu);await O(_);let S=join(_,h),R=r(f,m,S);await L(S,await ve(S,{...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:`${hu}/${h}`,feature:"agents"});}}catch{}}var lF=d(()=>{b();B();de();_e();ot();s(aF,"importGeminiSkillsAndAgents");});async function vZ(e,t,r){let n=await H("codex-cli",e),o=join(e,na),i=join(e,Bo),a=join(e,$v),l=[i,a,join(e,rn),join(e,jv)],c=null,m=l[l.length-1];for(let D of l){let P=await k(D);if(P!==null){c=P,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 Mo({content:u,projectRoot:e,rulesDir:na,sourcePath:m,fromTool:ta,normalize:r});t.push(...f.results);let g=r(f.rootContent,m,p),h=uk(g.replace(/\.agents\/skills\//g,".agentsmesh/skills/").replace(/\.agents\\skills\\/g,".agentsmesh/skills/"),e),{frontmatter:_,body:S}=x(h),I=_.root===true?_:{..._,root:true},w=uk(await z(p,I,S),e);await L(p,w),t.push({fromTool:ta,fromPath:m,toPath:`${na}/_root.md`,feature:"rules"});}async function cF(e){let t=[],r=await H(ta,e);return await vZ(e,t,r),t.push(...await Q(hg,e,"project",{normalize:r})),await aF(e,t,r),await ck(e,t),await tF(e,t),t.push(...await rF(e)),t}var mF=d(()=>{ge();b();B();de();Wc();Ae();ot();gk();pk();nF();sF();lF();s(vZ,"importRootRule");s(cF,"importFromGemini");});function MZ(e){let t=e.replace(/^\/+|\/+$/g,"");return t===".gemini/commands"||t.startsWith(".gemini/commands/")}async function GZ(e,t){let r=join(e,...Ko.split("/")),n=join(e,...t.split("/")),o=await U(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 uF(e,t){if(!MZ(t))return {};let r=await GZ(e,t);return r.length?{commands:r}:{}}var dF=d(()=>{b();ot();s(MZ,"isUnderGeminiCommands");s(GZ,"inferGeminiCommandNamesFromFiles");s(uF,"inferGeminiPick");});async function gF(e,t,r){let n=e.replace(/\\/g,"/"),o=join(t,n),{frontmatter:i,body:a}=fg(r(o)),l=as(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:`${na}/${n}`,feature:"rules",content:await z(o,c,a)}}async function hF(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")?jZ(i):fg(i),c=wr(a.allowedTools),m=wr(a["allowed-tools"]),p=c.length>0?c:m;return {destPath:o,toPath:`${pg}/${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 jZ(e){try{let t=parse$1(e);return {frontmatter:t,body:typeof t.prompt=="string"?t.prompt:""}}catch{return {frontmatter:{},body:e.trim()}}}var yF=d(()=>{de();qt();pk();ot();s(gF,"mapGeminiRuleFile");s(hF,"mapGeminiCommandFile");s(jZ,"parseTomlCommand");});var _F,SF,RF=d(()=>{yF();_F=s(({relativePath:e,destDir:t,normalizeTo:r})=>gF(e,t,r),"geminiRuleMapper"),SF=s(({relativePath:e,destDir:t,normalizeTo:r})=>hF(e,t,r),"geminiCommandMapper");});function kF(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(i=>({...i,target:ta}))}var IF=d(()=>{Ee();ot();s(kF,"lintRules");});function LF(e){return e.commands.filter(t=>t.allowedTools.length>0).map(t=>F(t.source,"gemini-cli","Gemini TOML command files do not project canonical allowed-tools metadata."))}function CF(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=["PreToolUse","PostToolUse","Notification"],r=new Set(t);return Object.keys(e.hooks).filter(n=>!r.has(n)).map(n=>Ci(n,"gemini-cli",t))}var EF=d(()=>{Re();s(LF,"lintCommands");s(CF,"lintHooks");});function OF(e,t,r){return t==="project"&&ni("gemini-cli",t)?.ignore.flavor!=="settings-embedded"?[]:ok(e,r)}var wF=d(()=>{xe();sk();s(OF,"emitScopedGeminiSettings");});var UZ,BZ,KZ,WZ,hg,gk=d(()=>{Xv();Ea();Zv();ot();mF();dF();RF();IF();Oe();sp();_e();EF();wF();dt();fu();UZ={name:"gemini-cli",primaryRootInstructionPath:rn,generateRules:ek,generateCommands:tk,generateAgents:rk,generateSkills:nk,generateIgnore:ik,generatePermissions:qv,importFrom:cF},BZ={rootInstructionPath:rn,outputFamilies:[{id:"compat-agents",kind:"additional",explicitPaths:[Bo]}],extraRuleOutputPaths(){return [Bo]},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 fe(e,".gemini/skills",t)},paths:{rulePath(e,t){return rn},commandPath(e,t){if(e.includes(":")){let r=e.split(":").filter(Boolean),n=r.pop()??e;return `${Ko}/${r.join("/")}/${n}.toml`}return `${Ko}/${e}.toml`},agentPath(e,t){return os(t,"gemini-cli")?`.gemini/skills/${V(e)}/SKILL.md`:`${ra}/${e}.md`}}},KZ={rootInstructionPath:Qc,outputFamilies:[{id:"compat-agents",kind:"additional",explicitPaths:[qc]}],extraRuleOutputPaths(){return [qc]},skillDir:Ll,managedOutputs:{dirs:[Zc,Ll,_u],files:[Qc,qc,ug]},rewriteGeneratedPath(e){return e===rn?Qc:e===Bo?qc:e===Il?ug:e.startsWith(`${Ko}/`)?e.replace(`${Ko}/`,`${Zc}/`):e.startsWith(".gemini/skills/")?e.replace(".gemini/skills/",`${Ll}/`):e.startsWith(`${ra}/`)?e.replace(`${ra}/`,`${_u}/`):e.startsWith(".gemini/policies/")||e===".geminiignore"?null:e},mirrorGlobalPath(e,t){return fe(e,Ll,t)},paths:{rulePath(e,t){return Qc},commandPath(e,t){if(e.includes(":")){let r=e.split(":").filter(Boolean),n=r.pop()??e;return `${Zc}/${r.join("/")}/${n}.toml`}return `${Zc}/${e}.toml`},agentPath(e,t){return os(t,"gemini-cli")?`${Ll}/${V(e)}/SKILL.md`:`${_u}/${e}.md`}}},WZ={rules:"native",additionalRules:"embedded",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"partial",ignore:"none",permissions:"none"},hg={id:"gemini-cli",metadata:{displayName:"Gemini CLI",category:"cli",officialUrl:"https://github.com/google-gemini/gemini-cli",shortDescription:"Google's terminal Gemini agent"},generators:UZ,capabilities:{rules:"native",additionalRules:"embedded",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"partial",ignore:un("native","settings-embedded"),permissions:"partial"},emptyImportMessage:"No Gemini CLI config found (GEMINI.md or .gemini/rules, .gemini/commands, .gemini/settings.json).",lintRules:kF,lint:{commands:LF,hooks:CF},emitScopedSettings:OF,mergeGeneratedOutputContent(e,t,r,n){let o=t?.content??e;return o!==null&&n===Il?yN(o,r):null},project:BZ,globalSupport:{capabilities:WZ,detectionPaths:[Qc,qc,ug,Zc,Ll,_u],layout:KZ},importer:{rules:{feature:"rules",mode:"directory",source:{project:[Gv]},canonicalDir:na,extensions:[".md"],map:_F},commands:{feature:"commands",mode:"directory",source:{project:[Ko]},canonicalDir:pg,extensions:[".md",".toml"],map:SF}},buildImportPaths:_S,detectionPaths:["GEMINI.md",".gemini"],nativeInstall:{inferPick:uF},conversionDefaults:{agentsToSkills:false}};});function bF(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(ho)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:lr,content:o}]:[]}function AF(e){return ie(e,Kt)}function xF(e){return e.commands.map(t=>({path:`${Kt}/${J(t.name)}/SKILL.md`,content:Ge(t)}))}function TF(e){return e.agents.map(t=>({path:`${Kt}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function PF(e){return e.ignore.length===0?[]:[{path:yo,content:e.ignore.join(`
|
|
139
|
+
`)}]}function zZ(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 DF(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,zZ(n,o)]));return [{path:Ha,content:stringify({extensions:r})}]}var NF=d(()=>{oe();Be();_e();be();za();s(bF,"generateRules");s(AF,"generateSkills");s(xF,"generateCommands");s(TF,"generateAgents");s(PF,"generateIgnore");s(zZ,"mcpServerToExtension");s(DF,"generateMcp");});async function vF(e,t={}){let r=t.scope??"project",n=[],o=await H(ho,e,r);return n.push(...await Q(yg,e,r,{normalize:o})),await ne(e,r==="global"?Br:Kt,ho,n,o),n}var FF=d(()=>{ge();oe();Ae();za();hk();s(vF,"importFromGoose");});function QZ(e){let t=typeof e.description=="string"?e.description:"",r=Ut(e.envs);return e.type==="stdio"||typeof e.cmd=="string"?typeof e.cmd!="string"?null:{type:"stdio",command:e.cmd,args:Zn(e.args),env:r,...t!==""&&{description:t}}:typeof e.uri!="string"?null:{type:"sse",url:e.uri,headers:{},env:r,...t!==""&&{description:t}}}function qZ(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=QZ(i);a&&(n[o]=a);}return n}async function ZZ(e){let t=await k(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 MF(e){let t=qZ(e.content);if(Object.keys(t).length===0)return null;let r=join(e.destDir,"mcp.json"),o={...await ZZ(r),...t};return {destPath:r,toPath:posix.normalize(XZ),content:JSON.stringify({mcpServers:o},null,2)}}var XZ,GF=d(()=>{qt();b();XZ=".agentsmesh/mcp.json";s(QZ,"extensionToMcpServer");s(qZ,"parseExtensions");s(ZZ,"readExistingServers");s(MF,"gooseMcpMap");});var $F,jF=d(()=>{GF();za();$F={rules:{feature:"rules",mode:"singleFile",source:{project:[lr],global:[_o]},canonicalDir:mb,canonicalRootFilename:"_root.md",markAsRoot:true},mcp:{feature:"mcp",mode:"singleFile",source:{global:[Ha]},canonicalDir:".agentsmesh",canonicalRootFilename:"mcp.json",map:MF},ignore:{feature:"ignore",mode:"flatFile",source:{project:[yo],global:[Ni]},canonicalDir:".agentsmesh",canonicalFilename:pb}};});function UF(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:ho}))}var BF=d(()=>{Ee();za();s(UF,"lintRules");});function KF(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[F(".agentsmesh/hooks.yaml","goose","Goose has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}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?[]:[F(".agentsmesh/permissions.yaml","goose","Goose permissions are managed at runtime via permission.yaml in ~/.config/goose/; canonical permissions are not projected.")]}function HF(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[F(".agentsmesh/mcp.json","goose","Goose MCP extensions are configured globally in ~/.config/goose/config.yaml; project-level MCP is not projected.")]}var zF=d(()=>{Re();s(KF,"lintHooks");s(WF,"lintPermissions");s(HF,"lintMcp");});var e8,t8,r8,n8,o8,yg,hk=d(()=>{be();_e();NF();dt();FF();jF();BF();zF();Oe();za();e8={name:ho,primaryRootInstructionPath:lr,generateRules:bF,generateCommands:xF,generateAgents:TF,generateSkills:AF,generateIgnore:PF,generateMcp:DF,importFrom:vF},t8={rootInstructionPath:lr,skillDir:Kt,managedOutputs:{dirs:[Kt],files:[lr,yo]},paths:{rulePath(e){return lr},commandPath(e){return `${Kt}/${J(e)}/SKILL.md`},agentPath(e){return `${Kt}/${V(e)}/SKILL.md`}}},r8={rootInstructionPath:_o,skillDir:Br,managedOutputs:{dirs:[Br],files:[_o,Ni,Ha]},rewriteGeneratedPath(e){return e===lr?_o:e===yo?Ni:e},mirrorGlobalPath(e,t){return fe(e,Br,t)},paths:{rulePath(e){return _o},commandPath(e){return `${Br}/${J(e)}/SKILL.md`},agentPath(e){return `${Br}/${V(e)}/SKILL.md`}}},n8={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"native",permissions:"none"},o8={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"none"},yg={id:ho,metadata:{displayName:"Goose",category:"cli",officialUrl:"https://block.github.io/goose",shortDescription:"Block's open-source AI agent"},generators:e8,capabilities:n8,emptyImportMessage:"No Goose config found (.goosehints, .agents/skills, or .gooseignore).",lintRules:UF,lint:{hooks:KF,permissions:WF,mcp:HF},supportsConversion:{commands:true,agents:true},project:t8,globalSupport:{capabilities:o8,detectionPaths:[_o,Ni,Br,Ha],layout:r8},importer:$F,sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:RS,detectionPaths:[lr,yo],conversionDefaults:{commandsToSkills:true,agentsToSkills:true}};});function VF(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(ws)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Ln,content:o}]:[]}var JF=d(()=>{Be();Ec();s(VF,"generateRules");});async function YF(e,t={}){let r=t.scope??"project",n=await H(ws,e,r);return Q(_g,e,r,{normalize:n})}var XF=d(()=>{ge();Ae();Ec();yk();s(YF,"importFromJules");});function QF(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:ws}))}var qF=d(()=>{Ee();Ec();s(QF,"lintRules");});function ZF(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[F(".agentsmesh/hooks.yaml","jules","Jules has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function eM(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?[]:[F(".agentsmesh/permissions.yaml","jules","Jules has no permissions system; canonical permissions are not projected.")]}function tM(e){return e.ignore.length===0?[]:[F(".agentsmesh/ignore","jules","Jules is a cloud-based agent with no dedicated ignore file; canonical ignore patterns are not projected.")]}function rM(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[F(".agentsmesh/mcp.json","jules","Jules is a cloud-based agent with no MCP support; canonical MCP servers are not projected.")]}function nM(e){return e.commands.length===0?[]:[F(".agentsmesh/commands","jules","Jules has no command system; canonical commands are not projected.")]}var oM=d(()=>{Re();s(ZF,"lintHooks");s(eM,"lintPermissions");s(tM,"lintIgnore");s(rM,"lintMcp");s(nM,"lintCommands");});var s8,i8,a8,_g,yk=d(()=>{JF();XF();qF();oM();Oe();Ec();s8={name:ws,primaryRootInstructionPath:Ln,generateRules:VF,importFrom:YF},i8={rootInstructionPath:Ln,managedOutputs:{dirs:[],files:[Ln]},paths:{rulePath(e){return Ln},commandPath(){return null},agentPath(){return null}}},a8={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"none",mcp:"none",hooks:"none",ignore:"none",permissions:"none"},_g={id:ws,metadata:{displayName:"Jules",category:"agent-platform",officialUrl:"https://jules.google",shortDescription:"Google's autonomous coding agent"},generators:s8,capabilities:a8,emptyImportMessage:"No Jules config found (AGENTS.md).",lintRules:QF,lint:{hooks:ZF,permissions:eM,ignore:tM,mcp:rM,commands:nM},project:i8,importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Ln]},canonicalDir:db,canonicalRootFilename:"_root.md",markAsRoot:true}},buildImportPaths:kS,detectionPaths:[Ln]};});function sM(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:So,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:`${Fp}/${o}.md`,content:n.body.trim()||""});}return t}function c8(e){let t={};return e.description&&(t.description=e.description),e.type!=="stdio"&&(t.type=e.type),$f(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 iM(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,c8(n)]));return [{path:vp,content:JSON.stringify({mcpServers:t},null,2)}]}function aM(e){return e.commands.map(t=>{let r={description:t.description||void 0};return r.description===void 0&&delete r.description,{path:`${Oc}/${t.name}.md`,content:T(r,t.body.trim()||"")}})}function lM(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:`${wc}/${t.name}.md`,content:T(r,t.body.trim()||"")}})}function cM(e){return e.ignore.length===0?[]:[{path:Mp,content:e.ignore.join(`
|
|
140
|
+
`)}]}function mM(e){return ie(e,Ja)}function pM(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 uM(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:Lf,content:JSON.stringify({allow:r,deny:n,ask:o},null,2)}]}var dM=d(()=>{jf();oe();Be();B();bc();s(sM,"generateRules");s(c8,"toJunieMcpServer");s(iM,"generateMcp");s(aM,"generateCommands");s(lM,"generateAgents");s(cM,"generateIgnore");s(mM,"generateSkills");s(pM,"renderJunieGlobalInstructions");s(uM,"generatePermissions");});async function m8(e,t,r){let n=[So,kf,gb,hb],o=join(e,IS);for(let i of n){let a=join(e,i),l=await k(a);if(l===null)continue;let c=await Mo({content:l,projectRoot:e,rulesDir:Cf,sourcePath:a,fromTool:Va,normalize:r});t.push(...c.results);let{frontmatter:m,body:p}=x(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:Va,fromPath:a,toPath:IS,feature:"rules"});return}}async function gM(e){let t=[],r=await H(Va,e);return await m8(e,t,r),t.push(...await Q(Sg,e,"project",{normalize:r})),await ne(e,Ja,Va,t,r),t}var hM=d(()=>{ge();b();B();oe();Wc();de();Ae();bc();_k();s(m8,"importRootRule");s(gM,"importFromJunie");});function yM(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Va}))}var _M=d(()=>{Ee();bc();s(yM,"lintRules");});function SM(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=[];for(let[r,n]of Object.entries(e.mcp.mcpServers))tP(n)&&t.push(F(".agentsmesh/mcp.json","junie",`MCP server "${r}" uses ${n.type} transport; Junie project mcp.json currently documents stdio MCP servers only.`));return t}var RM=d(()=>{jf();Re();s(SM,"lintMcp");});var p8,u8,d8,f8,Sg,_k=d(()=>{dM();bc();dt();hM();_M();RM();Oe();p8={name:"junie",primaryRootInstructionPath:So,generateRules:sM,generateCommands:aM,generateAgents:lM,generateSkills:mM,generateMcp:iM,generateIgnore:cM,generatePermissions:uM,importFrom:gM},u8={rootInstructionPath:So,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 `${Fp}/${e}.md`},commandPath(e,t){return `${Oc}/${e}.md`},agentPath(e,t){return `${wc}/${e}.md`}}},d8={rootInstructionPath:Ya,renderPrimaryRootInstruction:pM,skillDir:$p,managedOutputs:{dirs:[$p,jp,Up,yb],files:[Ya,If,Lf]},rewriteGeneratedPath(e){return e===So?Ya:e.startsWith(`${Fp}/`)?Ya:e.startsWith(`${Ja}/`)?e.replace(`${Ja}/`,`${$p}/`):e.startsWith(`${Oc}/`)?e.replace(`${Oc}/`,`${Up}/`):e.startsWith(`${wc}/`)?e.replace(`${wc}/`,`${jp}/`):e===vp?If:e===Mp?null:e},mirrorGlobalPath(e,t){return fe(e,".junie/skills",t)},paths:{rulePath(e,t){return Ya},commandPath(e,t){return `${Up}/${e}.md`},agentPath(e,t){return `${jp}/${e}.md`}}},f8={rules:"native",additionalRules:"embedded",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"native"},Sg={id:"junie",metadata:{displayName:"Junie",category:"ide",officialUrl:"https://www.jetbrains.com/junie",shortDescription:"JetBrains AI coding agent"},generators:p8,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:yM,lint:{mcp:SM},project:u8,globalSupport:{capabilities:f8,detectionPaths:[Ya,$p,jp,Up,If],layout:d8},importer:{rules:{feature:"rules",mode:"directory",source:{project:[".junie/rules"]},canonicalDir:Cf,extensions:[".md"],preset:"rule"},commands:{feature:"commands",mode:"directory",source:{project:[".junie/commands"]},canonicalDir:_b,extensions:[".md"],preset:"command"},agents:{feature:"agents",mode:"directory",source:{project:[".junie/agents"]},canonicalDir:Sb,extensions:[".md"],preset:"agent"},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[vp]},canonicalDir:".agentsmesh",canonicalFilename:Rb},ignore:{feature:"ignore",mode:"flatFile",source:{project:[Mp]},canonicalDir:".agentsmesh",canonicalFilename:kb}},buildImportPaths:LS,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 IM(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:Cn,content:r.body.trim()?r.body:""});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(Dt))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?T(i,n.body.trim()||""):n.body.trim()||"";t.push({path:`${Ro}/${o}.md`,content:a});}return t}function LM(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${ko}/${t.name}.md`,content:T(r,t.body.trim()||"")}})}function CM(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:`${Io}/${r}.md`,content:T(n,t.body.trim()||"")}})}function EM(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:bs,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function OM(e){return e.ignore.length===0?[]:[{path:Qa,content:e.ignore.join(`
|
|
141
|
+
`)}]}function wM(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:Xa,content:JSON.stringify({permission:o},null,2)}]}function bM(e){return ie(e,Kr)}var AM=d(()=>{oe();B();Ts();s(IM,"generateRules");s(LM,"generateCommands");s(CM,"generateAgents");s(EM,"generateMcp");s(OM,"generateIgnore");s(wM,"generatePermissions");s(bM,"generateSkills");});var Rg,kg,xM,Rk=d(()=>{B();de();Ts();Rg=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n));return {destPath:n,toPath:`${$i}/${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"),kg=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n));return {destPath:n,toPath:`${Tc}/${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"),xM=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n));return {destPath:n,toPath:`${tl}/${e}`,content:await ve(n,o,i)}},"kiloAgentMapper");});async function TM(e){try{return await stat(e),!0}catch{return false}}async function y8(e,t,r){let n=join(e,qa);if(!await TM(n))return;let o=join(e,$i),i=join(n,Ik),l=t.some(c=>c.toPath===kk)?null:await k(i);if(l!==null){let c=join(e,kk),m=r(l,i,c),{body:p}=x(m),u=await z(c,{root:true},p);await L(c,u),t.push({feature:"rules",fromTool:Dt,fromPath:`${qa}/${Ik}`,toPath:kk});}t.push(...await Se({srcDir:n,destDir:o,extensions:[".md"],fromTool:Dt,normalize:r,mapEntry:s(async({srcPath:c,relativePath:m,content:p,normalizeTo:u})=>{let f=await Rg({absolutePath:c,relativePath:m,content:p,destDir:o,normalizeTo:u});return m===Ik||!f?null:{...f,feature:"rules"}},"mapEntry")}));}async function _8(e,t,r){let n=join(e,Ac);if(!await TM(n))return;let o=join(e,Tc);t.push(...await Se({srcDir:n,destDir:o,extensions:[".md"],fromTool:Dt,normalize:r,mapEntry:s(async({srcPath:i,relativePath:a,content:l,normalizeTo:c})=>{let m=await kg({absolutePath:i,relativePath:a,content:l,destDir:o,normalizeTo:c});return m?{...m,feature:"commands"}:null},"mapEntry")}));}async function S8(e,t,r){let n=join(e,Of),o=await k(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,tl,`${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}
|
|
142
142
|
|
|
143
143
|
## When to use
|
|
144
144
|
|
|
145
|
-
${f}`:u,h={};p&&(h.description=p),typeof l.name=="string"&&l.name.length>0&&(h.name=l.name);let
|
|
146
|
-
`)}]}var NF=d(()=>{se();we();B();KS();uc();s(wQ,"steeringFrontmatter");s(bF,"generateRules");s(OF,"generateCommands");s(AF,"generateSkills");s(xF,"generateMcp");s(TF,"generateHooks");s(PF,"generateAgents");s(DF,"generateIgnore");});function OQ(e){let t=typeof e.inclusion=="string"?e.inclusion:"",r={root:false,description:typeof e.description=="string"?e.description:void 0,globs:Wo(e.fileMatchPattern)};return t==="manual"&&(r.trigger="manual"),t==="auto"&&(r.trigger="model_decision"),t==="fileMatch"&&(r.trigger="glob"),r}async function AQ(e,t,r,n){let o=n==="global"?[Rn,gn]:[gn,Rn];for(let i of o){let a=join(e,i),l=await k(a);if(l===null)continue;let c=join(e,XR),{frontmatter:m,body:p}=x(r(l,a,c));await L(c,await V(c,{...m,root:true},p)),t.push({fromTool:rr,fromPath:a,toPath:XR,feature:"rules"});return}}async function xQ(e,t,r){let n=join(e,qR);t.push(...await ke({srcDir:join(e,hn),destDir:n,extensions:[".md"],fromTool:rr,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}=x(i(a));return {destPath:a,toPath:`${qR}/${o}`,feature:"rules",content:await V(a,OQ(l),c)}},"mapEntry")}));}async function TQ(e,t){let r={};for(let o of await U(join(e,fi))){if(!o.endsWith(".kiro.hook"))continue;let i=EF(await k(o)??"");i&&(r[i.event]??=[],r[i.event].push(i.entry));}if(Object.keys(r).length===0)return;let n=join(e,QR);await w(join(e,".agentsmesh")),await L(n,wF(r)),t.push({fromTool:rr,fromPath:join(e,fi),toPath:QR,feature:"hooks"});}async function vF(e,t={}){let r=t.scope??"project",n=[],o=await z(rr,e,r);return await AQ(e,n,o,r),await xQ(e,n,o),n.push(...await q(Qf,e,r,{normalize:o})),await oe(e,Pt,rr,n,o),r==="project"&&await TQ(e,n),n}var FF=d(()=>{ge();se();Yt();be();fe();Sr();A();B();KS();uc();WS();s(OQ,"canonicalRuleMeta");s(AQ,"importRoot");s(xQ,"importNonRootRules");s(TQ,"importHooks");s(vF,"importFromKiro");});function MF(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:rr}))}var $F=d(()=>{Ie();uc();s(MF,"lintRules");});function GF(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=["PreToolUse","PostToolUse","UserPromptSubmit","SubagentStop"],r=new Set(t);return Object.keys(e.hooks).filter(n=>!r.has(n)).map(n=>Zs(n,"kiro",t,{unsupportedBy:"Kiro hooks"}))}var jF=d(()=>{Oe();s(GF,"lintHooks");});var PQ,DQ,NQ,vQ,Qf,WS=d(()=>{we();NF();pt();FF();$F();jF();Ce();uc();PQ={name:rr,primaryRootInstructionPath:gn,generateRules:bF,generateCommands:OF,generateAgents:PF,generateSkills:AF,generateMcp:xF,generateHooks:TF,generateIgnore:DF,importFrom:vF},DQ={rootInstructionPath:gn,skillDir:Pt,managedOutputs:{dirs:[".kiro/hooks",".kiro/skills",".kiro/steering",".kiro/agents"],files:["AGENTS.md",".kiro/settings/mcp.json",".kiroignore"]},paths:{rulePath(e,t){return `${hn}/${e}.md`},commandPath(e){return `${Pt}/${J(e)}/SKILL.md`},agentPath(e,t){return `${yn}/${e}.md`}}},NQ={rootInstructionPath:Rn,skillDir:gi,managedOutputs:{dirs:[xa,gi,Ta,Ub],files:[Rn,Cp,Ep]},rewriteGeneratedPath(e){return e===gn?Rn:e.startsWith(`${hn}/`)?e.replace(`${hn}/`,`${xa}/`):e.startsWith(`${Pt}/`)?e.replace(`${Pt}/`,`${gi}/`):e.startsWith(`${yn}/`)?e.replace(`${yn}/`,`${Ta}/`):e===mc?Cp:e===pc?Ep:e.startsWith(`${fi}/`)?null:e},mirrorGlobalPath(e,t){return de(e,".kiro/skills",t)},paths:{rulePath(e,t){return `${xa}/${e}.md`},commandPath(e){return `${Pt}/${J(e)}/SKILL.md`},agentPath(e,t){return `${Ta}/${e}.md`}}},vQ={rules:"native",additionalRules:"native",commands:"none",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"none"},Qf={id:rr,metadata:{displayName:"Kiro",category:"ide",officialUrl:"https://kiro.dev",shortDescription:"AWS spec-driven AI IDE"},generators:PQ,capabilities:{rules:"native",additionalRules:"native",commands:"none",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:MF,lint:{hooks:GF},project:DQ,globalSupport:{capabilities:vQ,detectionPaths:[xa,Rn,gi,Ta,Cp,Ep],layout:NQ},importer:{agents:{feature:"agents",mode:"directory",source:{project:[yn],global:[yn]},canonicalDir:Bb,extensions:[".md"],preset:"agent"},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[mc],global:[Cp]},canonicalDir:".agentsmesh",canonicalFilename:Kb},ignore:{feature:"ignore",mode:"flatFile",source:{project:[pc],global:[Ep]},canonicalDir:".agentsmesh",canonicalFilename:Wb}},buildImportPaths:ZR,detectionPaths:[hn,Pt,yn,fi,mc,pc],conversionDefaults:{commandsToSkills:true}};});function BF(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:so,content:r.body.trim()?r.body:""});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(_n))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?D(i,n.body.trim()||""):n.body.trim()||"";t.push({path:`${fs}/${o}.md`,content:a});}return t}function KF(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${gs}/${t.name}.md`,content:D(r,t.body.trim()||"")}})}function WF(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:`${hs}/${r}.md`,content:D(n,t.body.trim()||"")}})}function FQ(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 HF(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]=FQ(n);return [{path:io,content:JSON.stringify({mcp:t},null,2)}]}function zF(e){return ie(e,Sn)}var VF=d(()=>{se();B();va();s(BF,"generateRules");s(KF,"generateCommands");s(WF,"generateAgents");s(FQ,"toOpenCodeMcpServer");s(HF,"generateMcp");s(zF,"generateSkills");});function HS(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 $Q(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:HS(a.headers),env:HS(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:HS(a.environment),...typeof a.description=="string"?{description:a.description}:{}};}}return n}async function GQ(e,t,r){let o=join(e,t==="global"?Ri:io),i=await k(o);if(i===null)return;let a=$Q(i);Object.keys(a).length!==0&&(await Je(e,e_,a),r.push({feature:"mcp",fromTool:_n,fromPath:o,toPath:e_}));}async function JF(e,t={}){let r=t.scope??"project",n=[],o=await z(_n,e,r);return n.push(...await q(Zf,e,r,{normalize:o})),await oe(e,Sn,_n,n,o),await GQ(e,r,n),n}var YF=d(()=>{ge();se();be();nn();A();va();zS();s(HS,"toStringRecord");s($Q,"parseOpenCodeMcp");s(GQ,"importMcp");s(JF,"importFromOpenCode");});var XF,qF,QF,ZF=d(()=>{B();fe();va();XF=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n));return {destPath:n,toPath:`${wp}/${e}`,content:await V(n,{root:false,description:typeof o.description=="string"?o.description:void 0,globs:Array.isArray(o.globs)?o.globs:void 0},i)}},"opencodeNonRootRuleMapper"),qF=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n));return {destPath:n,toPath:`${tf}/${e}`,content:await Se(n,{hasDescription:Object.prototype.hasOwnProperty.call(o,"description"),description:typeof o.description=="string"?o.description:void 0,hasAllowedTools:false,allowedTools:[]},i)}},"opencodeCommandMapper"),QF=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n));return {destPath:n,toPath:`${rf}/${e}`,content:await et(n,o,i)}},"opencodeAgentMapper");});function eM(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:_n}))}var tM=d(()=>{Ie();va();s(eM,"lintRules");});function rM(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[v(".agentsmesh/hooks.yaml","opencode","opencode hooks are plugin-based (TypeScript/JavaScript); canonical config hooks are not projected.")]:[]:[]}function nM(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?[]:[v(".agentsmesh/permissions.yaml","opencode","opencode permissions live in opencode.json, which agentsmesh does not generate in v1; canonical permissions are not projected.")]}function oM(e){return e.ignore.length===0?[]:[v(".agentsmesh/ignore","opencode","opencode has no dedicated ignore file; canonical ignore patterns are not projected. Configure watcher.ignore in opencode.json manually.")]}var sM=d(()=>{Oe();s(rM,"lintHooks");s(nM,"lintPermissions");s(oM,"lintIgnore");});var jQ,UQ,BQ,iM,Zf,zS=d(()=>{VF();va();pt();YF();ZF();tM();sM();Ce();jQ={name:_n,primaryRootInstructionPath:so,generateRules:BF,generateCommands:KF,generateAgents:WF,generateSkills:zF,generateMcp:HF,importFrom:JF},UQ={rootInstructionPath:so,skillDir:Sn,managedOutputs:{dirs:[fs,gs,hs,Sn],files:[so,io]},paths:{rulePath(e){return `${fs}/${e}.md`},commandPath(e){return `${gs}/${e}.md`},agentPath(e){return `${hs}/${e}.md`}}},BQ={rootInstructionPath:hi,skillDir:yi,managedOutputs:{dirs:[Pa,Da,Na,yi,zb],files:[hi,Ri]},rewriteGeneratedPath(e){return e===so?hi:e===io?Ri:e},mirrorGlobalPath(e,t){return de(e,yi,t)},paths:{rulePath(e){return `${Pa}/${e}.md`},commandPath(e){return `${Da}/${e}.md`},agentPath(e){return `${Na}/${e}.md`}}},iM={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},Zf={id:_n,metadata:{displayName:"OpenCode",category:"cli",officialUrl:"https://opencode.ai",shortDescription:"Open-source terminal AI agent"},generators:jQ,capabilities:iM,emptyImportMessage:"No OpenCode config found (AGENTS.md, .opencode/rules, .opencode/commands, .opencode/agents, .opencode/skills, or opencode.json).",lintRules:eM,lint:{hooks:rM,permissions:nM,ignore:oM},project:UQ,globalSupport:{capabilities:iM,detectionPaths:[hi,Pa,Da,Na,yi,Ri],layout:BQ},importer:{rules:[{feature:"rules",mode:"singleFile",source:{project:[so],global:[hi]},canonicalDir:wp,canonicalRootFilename:"_root.md",markAsRoot:true},{feature:"rules",mode:"directory",source:{project:[fs],global:[Pa]},canonicalDir:wp,extensions:[".md"],map:XF}],commands:{feature:"commands",mode:"directory",source:{project:[gs],global:[Da]},canonicalDir:tf,extensions:[".md"],map:qF},agents:{feature:"agents",mode:"directory",source:{project:[hs],global:[Na]},canonicalDir:rf,extensions:[".md"],map:QF}},buildImportPaths:t_,detectionPaths:[fs,gs,hs,Sn,io,"opencode.jsonc"]};});function aM(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(ao)),n=t?.body.trim()??"",o=ae(n,r);return o?[{path:vr,content:o}]:[]}function lM(e){return ie(e,ct)}function cM(e){return e.commands.map(t=>({path:`${ct}/${J(t.name)}/SKILL.md`,content:$e(t)}))}function mM(e){return e.agents.map(t=>({path:`${ct}/${K(t.name)}/SKILL.md`,content:De(t)}))}var pM=d(()=>{se();Ue();ue();we();fc();s(aM,"generateRules");s(lM,"generateSkills");s(cM,"generateCommands");s(mM,"generateAgents");});async function uM(e,t={}){let r=t.scope??"project",n=[],o=await z(ao,e,r);return n.push(...await q(eg,e,r,{normalize:o})),await oe(e,r==="global"?Fr:ct,ao,n,o),n}var dM=d(()=>{ge();se();be();fc();JS();s(uM,"importFromPiAgent");});function fM(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:ao}))}var gM=d(()=>{Ie();fc();s(fM,"lintRules");});function hM(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[v(".agentsmesh/hooks.yaml","pi-agent","Pi Coding Agent has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function yM(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?[]:[v(".agentsmesh/permissions.yaml","pi-agent","Pi Coding Agent has no dedicated permissions config; canonical permissions are not projected.")]}function RM(e){return e.ignore.length===0?[]:[v(".agentsmesh/ignore","pi-agent","Pi Coding Agent has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}function _M(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[v(".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 SM=d(()=>{Oe();s(hM,"lintHooks");s(yM,"lintPermissions");s(RM,"lintIgnore");s(_M,"lintMcp");});var KQ,WQ,HQ,kM,eg,JS=d(()=>{we();ue();pM();pt();dM();gM();SM();n_();fc();KQ={name:ao,primaryRootInstructionPath:vr,generateRules:aM,generateCommands:cM,generateAgents:mM,generateSkills:lM,importFrom:uM},WQ={rootInstructionPath:vr,skillDir:ct,managedOutputs:{dirs:[ct],files:[vr]},paths:{rulePath(e){return vr},commandPath(e){return `${ct}/${J(e)}/SKILL.md`},agentPath(e){return `${ct}/${K(e)}/SKILL.md`}}},HQ={rootInstructionPath:ys,skillDir:Fr,managedOutputs:{dirs:[Fr],files:[ys]},rewriteGeneratedPath(e){return e===vr?ys:e.startsWith(`${ct}/`)?e.replace(`${ct}/`,`${Fr}/`):e},mirrorGlobalPath(e,t){return de(e,Fr,t)},paths:{rulePath(e){return ys},commandPath(e){return `${Fr}/${J(e)}/SKILL.md`},agentPath(e){return `${Fr}/${K(e)}/SKILL.md`}}},kM={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"none",permissions:"none"},eg={id:ao,metadata:{displayName:"Pi Agent",category:"cli",officialUrl:"https://github.com/pi-labs/pi-agent",shortDescription:"Pi coding agent"},generators:KQ,capabilities:kM,emptyImportMessage:"No Pi Coding Agent config found (AGENTS.md or .pi/skills).",lintRules:fM,lint:{hooks:hM,permissions:yM,ignore:RM,mcp:_M},supportsConversion:{commands:true,agents:true},project:WQ,globalSupport:{capabilities:kM,detectionPaths:[ys],layout:HQ},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[vr],global:[ys]},canonicalDir:Yb,canonicalRootFilename:"_root.md",markAsRoot:true}},sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:r_,detectionPaths:[vr,ct]};});function IM(e){let t=[],r=e.rules.find(o=>o.root);r&&t.push({path:Mr,content:r.body.trim()?r.body:""});let n=e.rules.filter(o=>!o.root&&(o.targets.length===0||o.targets.includes(kn)));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=D(a,o.body.trim()||"");t.push({path:`${Rs}/${i}.md`,content:l});}return t}function LM(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=D(r,t.body.trim()||"");return {path:`${lo}/${t.name}.md`,content:n}})}function CM(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=D(r,t.body.trim()||"");return {path:`${co}/${t.name}.md`,content:n}})}function EM(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=D(n,r.body.trim()||"");t.push({path:`${nr}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${nr}/${r.name}/${a}`,content:i.content});}}return t}function wM(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:_i,content:t}]}function bM(e){return !e.ignore||e.ignore.length===0?[]:[{path:Si,content:e.ignore.join(`
|
|
147
|
-
`)}]}function
|
|
148
|
-
`)}]}function ZM(e){return ie(e,uo)}function e$(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:yc,content:stringify({customModes:t})}]}var t$=d(()=>{se();B();ja();s(YM,"generateRules");s(XM,"generateCommands");s(qM,"generateMcp");s(QM,"generateIgnore");s(ZM,"generateSkills");s(e$,"generateAgents");});var ng,n$,qS=d(()=>{B();fe();ja();ng=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{if(e==="00-root.md")return null;let n=join(r,e),{frontmatter:o,body:i}=x(t(n));return {destPath:n,toPath:`${Ga}/${e}`,content:await V(n,{root:false,description:typeof o.description=="string"?o.description:void 0,globs:Array.isArray(o.globs)?o.globs:void 0},i)}},"rooNonRootRuleMapper"),n$=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n));return {destPath:n,toPath:`${of}/${e}`,content:await Se(n,{hasDescription:true,description:typeof o.description=="string"?o.description:void 0,hasAllowedTools:false,allowedTools:[]},i)}},"rooCommandMapper");});async function nZ(e,t,r){let n=join(e,Ma),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,Ga);for(let l of i)t.push(...await ke({srcDir:join(n,l),destDir:a,extensions:[".md"],fromTool:Li,normalize:r,mapEntry:s(async({srcPath:c,relativePath:m,content:p,normalizeTo:u})=>{let f=await ng({absolutePath:c,relativePath:m,content:p,destDir:a,normalizeTo:u});return f?{...f,feature:"rules"}:null},"mapEntry")}));}async function o$(e,t={}){let r=t.scope??"project",n=[],o=await z(Li,e,r);return n.push(...await q(og,e,r,{normalize:o})),await nZ(e,n,o),await oe(e,uo,Li,n,o),n}var s$=d(()=>{ge();se();Yt();be();qS();ja();ZS();s(nZ,"importPerModeRules");s(o$,"importFromRooCode");});function i$(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Li}))}var a$=d(()=>{Ie();ja();s(i$,"lintRules");});function cZ(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var aZ,lZ,mZ,pZ,uZ,og,ZS=d(()=>{A();t$();ja();pt();s$();qS();a$();Ce();aZ={name:"roo-code",primaryRootInstructionPath:Ln,generateRules:YM,generateCommands:XM,generateSkills:ZM,generateMcp:qM,generateIgnore:QM,generateAgents:e$,importFrom:o$},lZ={rootInstructionPath:Ln,skillDir:".roo/skills",managedOutputs:{dirs:[".roo/rules",".roo/commands",".roo/skills"],files:[".roo/mcp.json",".rooignore",".roorules",yc]},paths:{rulePath(e,t){return `${Ss}/${e}.md`},commandPath(e,t){return `${ks}/${e}.md`},agentPath(e,t){return null}}};s(cZ,"computeStatus");mZ=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 k(join(t,xp));return [{target:"roo-code",path:xp,content:i,currentContent:a??void 0,status:cZ(a,i)}]},"generateRooGlobalExtras"),pZ={rootInstructionPath:wi,skillDir:Is,managedOutputs:{dirs:[Ci,Ei,Is,eO],files:[wi,$a,Tp,xp]},rewriteGeneratedPath(e){return e===Ln?wi:e===yc?null:e.startsWith(`${Ss}/`)?e.replace(`${Ss}/`,`${Ci}/`):e.startsWith(`${ks}/`)?e.replace(`${ks}/`,`${Ei}/`):e.startsWith(`${uo}/`)?e.replace(`${uo}/`,`${Is}/`):e===Op?$a:e===Ap?Tp:e},mirrorGlobalPath(e,t){return de(e,Is,t)},paths:{rulePath(e,t){return `${Ci}/${e}.md`},commandPath(e,t){return `${Ei}/${e}.md`},agentPath(e,t){return null}}},uZ={rules:"native",additionalRules:"native",commands:"native",agents:"partial",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"none"},og={id:"roo-code",metadata:{displayName:"Roo Code",category:"ide",officialUrl:"https://roocode.com",shortDescription:"Open-source AI VS Code extension"},generators:aZ,capabilities:{rules:"native",additionalRules:"native",commands:"native",agents:"partial",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"none"},emptyImportMessage:"No Roo Code config found (.roo/rules, .roo/commands, .roo/skills, .roo/mcp.json, .rooignore, or .roorules).",lintRules:i$,project:lZ,globalSupport:{capabilities:uZ,detectionPaths:[Ci,Ei,Is,$a,Tp,wi,xp],layout:pZ,scopeExtras:mZ},importer:{rules:[{feature:"rules",mode:"singleFile",source:{project:[Ln,bp],global:[wi,Ln,bp]},canonicalDir:Ga,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:[Ss],global:[Ci]},canonicalDir:Ga,extensions:[".md"],map:ng}],commands:{feature:"commands",mode:"directory",source:{project:[ks],global:[Ei]},canonicalDir:of,extensions:[".md"],map:n$},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Op],global:[$a]},canonicalDir:".agentsmesh",canonicalFilename:tO},ignore:{feature:"ignore",mode:"flatFile",source:{project:[Ap],global:[Tp]},canonicalDir:".agentsmesh",canonicalFilename:rO}},buildImportPaths:l_,detectionPaths:[".roo/rules",".roo/commands",".roo/skills",".roo/mcp.json",".rooignore",".roorules",yc]};});function l$(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=ae(n,r);return o?[{path:$r,content:o}]:[]}function c$(e){return ie(e,mt)}function m$(e){return e.commands.map(t=>({path:`${mt}/${J(t.name)}/SKILL.md`,content:$e(t)}))}function p$(e){return e.agents.map(t=>({path:`${mt}/${K(t.name)}/SKILL.md`,content:De(t)}))}function u$(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:Ls,content:t}]}var d$=d(()=>{se();Ue();ue();we();_c();s(l$,"generateRules");s(c$,"generateSkills");s(m$,"generateCommands");s(p$,"generateAgents");s(u$,"generateMcp");});async function f$(e,t={}){let r=t.scope??"project",n=[],o=await z(fo,e,r);return n.push(...await q(sg,e,r,{normalize:o})),await oe(e,r==="global"?or:mt,fo,n,o),n}var g$=d(()=>{ge();se();be();_c();ek();s(f$,"importFromRovodev");});function h$(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:fo}))}var y$=d(()=>{Ie();_c();s(h$,"lintRules");});function R$(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[v(".agentsmesh/hooks.yaml","rovodev","Rovo Dev has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function _$(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?[]:[v(".agentsmesh/permissions.yaml","rovodev","Rovo Dev permissions are managed in config.yaml; canonical permissions are not projected.")]}function S$(e){return e.ignore.length===0?[]:[v(".agentsmesh/ignore","rovodev","Rovo Dev has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}var k$=d(()=>{Oe();s(R$,"lintHooks");s(_$,"lintPermissions");s(S$,"lintIgnore");});var dZ,fZ,gZ,hZ,yZ,sg,ek=d(()=>{we();ue();d$();pt();g$();y$();k$();Ce();_c();dZ={name:fo,primaryRootInstructionPath:$r,generateRules:l$,generateCommands:m$,generateAgents:p$,generateSkills:c$,generateMcp:u$,importFrom:f$},fZ={rootInstructionPath:$r,skillDir:mt,managedOutputs:{dirs:[mt],files:[$r,Ls]},paths:{rulePath(e){return $r},commandPath(e){return `${mt}/${J(e)}/SKILL.md`},agentPath(e){return `${mt}/${K(e)}/SKILL.md`}}},gZ={rootInstructionPath:Cs,skillDir:or,managedOutputs:{dirs:[or],files:[Cs,Rc]},rewriteGeneratedPath(e){return e===$r?Cs:e.startsWith(`${mt}/`)?e.replace(`${mt}/`,`${or}/`):e===Ls?Rc:e},mirrorGlobalPath(e,t){return de(e,or,t)},paths:{rulePath(e){return Cs},commandPath(e){return `${or}/${J(e)}/SKILL.md`},agentPath(e){return `${or}/${K(e)}/SKILL.md`}}},hZ={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},yZ={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},sg={id:fo,metadata:{displayName:"Rovo Dev",category:"cli",officialUrl:"https://www.atlassian.com/solutions/devops/rovo-dev",shortDescription:"Atlassian's coding agent"},generators:dZ,capabilities:hZ,emptyImportMessage:"No Rovo Dev config found (AGENTS.md, .rovodev/skills, or .rovodev/mcp.json).",lintRules:h$,lint:{hooks:R$,permissions:_$,ignore:S$},supportsConversion:{commands:true,agents:true},project:fZ,globalSupport:{capabilities:yZ,detectionPaths:[sO,Cs,or],layout:gZ},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[$r],global:[Cs]},canonicalDir:iO,canonicalRootFilename:"_root.md",markAsRoot:true},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Ls],global:[Rc]},canonicalDir:".agentsmesh",canonicalFilename:"mcp.json"}},buildImportPaths:c_,detectionPaths:[$r,mt,Ls]};});function I$(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:ir,content:r.body.trim()});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(Gr))continue;let o=basename(n.source,".md");t.push({path:`${sr}/${o}.md`,content:n.body.trim()});}return t}function L$(e){return ie(e,jr)}function C$(e){return e.mcp===null||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Ua,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function E$(e){return e.ignore.length===0?[]:[{path:Sc,content:e.ignore.join(`
|
|
149
|
-
`)}]}var
|
|
150
|
-
`)}]}var
|
|
151
|
-
`)),n.push({fromTool:"windsurf",fromPath:p,toPath:sk,feature:"ignore"});}}return await aG(e,n,o),await cG(e,n,o),await uG(e,n),await dG(e,n),n}var hG=d(()=>{ge();A();B();fe();Yt();Vm();Nt();lG();mG();fG();s(gG,"importFromWindsurf");});function yG(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:Eo,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:Eo,message:`Windsurf cannot project these features yet: ${i.join(", ")}.`}),n}var RG=d(()=>{Nt();s(yG,"lintRules");});function _G(e){return e.commands.filter(t=>t.description.length>0||t.allowedTools.length>0).map(t=>v(t.source,"windsurf","windsurf workflow files are plain Markdown; command description and allowed-tools metadata are not projected."))}function SG(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[v(".agentsmesh/mcp.json","windsurf","Windsurf MCP is partial; generated .windsurf/mcp_config.example.json is a reference artifact and may require manual setup.")]}var kG=d(()=>{Oe();s(_G,"lintCommands");s(SG,"lintMcp");});function WZ(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 HZ,zZ,VZ,JZ,IG,LG=d(()=>{sG();ea();Nt();pt();hG();RG();kG();Ce();Ml();ue();s(WZ,"directoryScopedRuleDir");HZ={name:"windsurf",primaryRootInstructionPath:wo,generateRules:lk,generateCommands:mk,generateAgents:pk,generateSkills:fk,generateMcp:uk,generateHooks:dk,generateIgnore:ck,importFrom:gG},zZ={rootInstructionPath:wo,extraRuleOutputPaths(e){if(e.root)return [wo];let t=WZ(e.globs);return t!==null?[`${t}/AGENTS.md`]:[]},skillDir:An,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 `${vi}/${e}.md`},commandPath(e,t){return `${Fi}/${e}.md`},agentPath(e,t){return gr(t,"windsurf")?`.windsurf/skills/${K(e)}/SKILL.md`:null}}},VZ={rootInstructionPath:Bc,skillDir:Kc,managedOutputs:{dirs:[Kc,Jp,X$],files:[Bc,lg,cg,mg]},rewriteGeneratedPath(e){return e===wo?Bc:e.startsWith(`${vi}/`)||/\/AGENTS\.md$/.test(e)?null:e.startsWith(`${An}/`)?e.replace(`${An}/`,`${Kc}/`):e.startsWith(`${Fi}/`)?e.replace(`${Fi}/`,`${Jp}/`):e===Gc?lg:e===jc?cg:e===$c?mg:e},mirrorGlobalPath(e,t){return de(e,".codeium/windsurf/skills",t)},paths:{rulePath(e,t){return Bc},commandPath(e,t){return `${Jp}/${e}.md`},agentPath(e,t){return gr(t,"windsurf")?`${Kc}/${K(e)}/SKILL.md`:null}}},JZ={rules:"native",additionalRules:"partial",commands:Zr("native","workflows"),agents:"embedded",skills:"native",mcp:"partial",hooks:"native",ignore:"native",permissions:"none"},IG={id:"windsurf",metadata:{displayName:"Windsurf",category:"ide",officialUrl:"https://windsurf.com",shortDescription:"Codeium's agentic IDE"},generators:HZ,capabilities:{rules:"native",additionalRules:"native",commands:Zr("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:yG,lint:{commands:_G,mcp:SG},project:zZ,globalSupport:{capabilities:JZ,detectionPaths:[Bc,Kc,Jp,lg,cg,mg],layout:VZ},buildImportPaths:d_,detectionPaths:[".windsurfrules",".windsurf"],nativeInstall:{pickPaths:[{prefix:".windsurf/rules",feature:"rules",strategy:{kind:"basename",suffix:".md"}}],dialectHints:[{frontmatterKey:"trigger"}]},conversionDefaults:{agentsToSkills:true}};});function CG(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=ae(n,r);return o?[{path:wn,content:o}]:[]}var EG=d(()=>{Ue();Ba();s(CG,"generateRules");});async function bG(e,t,r){let n=await k(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 Je(e,wG,l),r.push({fromTool:"zed",fromPath:t,toPath:wG,feature:"mcp"}));}var wG,OG=d(()=>{A();nn();Ba();wG=".agentsmesh/mcp.json";s(bG,"importZedMcp");});async function AG(e,t={}){let r=t.scope??"project",n=[],o=await z("zed",e,r);return n.push(...await q(ug,e,r,{normalize:o})),await bG(e,r==="global"?yo:ho,n),n}var xG=d(()=>{ge();be();OG();Ba();hk();s(AG,"importFromZed");});function TG(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:"zed"}))}var PG=d(()=>{Ie();Ba();s(TG,"lintRules");});function DG(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[v(".agentsmesh/hooks.yaml","zed","Zed has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function NG(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?[]:[v(".agentsmesh/permissions.yaml","zed","Zed permissions are managed via agent.tool_permissions in settings.json; canonical permissions are not projected.")]}function vG(e){return e.ignore.length===0?[]:[v(".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 FG=d(()=>{Oe();s(DG,"lintHooks");s(NG,"lintPermissions");s(vG,"lintIgnore");});function t8(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 XZ,qZ,QZ,ZZ,e8,ug,hk=d(()=>{EG();xG();PG();FG();Ce();Ba();XZ={name:"zed",primaryRootInstructionPath:wn,generateRules:CG,importFrom:AG},qZ={rootInstructionPath:wn,managedOutputs:{dirs:[],files:[wn,ho]},paths:{rulePath(e){return wn},commandPath(){return null},agentPath(){return null}}},QZ={rootInstructionPath:void 0,managedOutputs:{dirs:[],files:[yo]},rewriteGeneratedPath(e){return e===ho?yo:e},paths:{rulePath(){return yo},commandPath(){return null},agentPath(){return null}}},ZZ={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},e8={rules:"none",additionalRules:"none",commands:"none",agents:"none",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"};s(t8,"mergeZedSettings");ug={id:"zed",metadata:{displayName:"Zed",category:"ide",officialUrl:"https://zed.dev",shortDescription:"Collaborative AI editor"},generators:XZ,capabilities:ZZ,emptyImportMessage:"No Zed config found (.rules or .zed/settings.json).",lintRules:TG,lint:{hooks:DG,permissions:NG,ignore:vG},project:qZ,globalSupport:{capabilities:e8,detectionPaths:[yo],layout:QZ},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[wn],global:[]},canonicalDir:gO,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:ho,content:JSON.stringify({context_servers:n},null,2)}]},mergeGeneratedOutputContent(e,t,r,n){return n===ho||n===yo?t8(e,r):null},buildImportPaths:f_,detectionPaths:[wn,ho]};});var zw={};my(zw,{BUILTIN_TARGETS:()=>Pe,TARGET_IDS:()=>je,getBuiltinTargetDefinition:()=>Hr,getEffectiveTargetSupportLevel:()=>dg,getTargetCapabilities:()=>Di,getTargetDetectionPaths:()=>Rk,getTargetLayout:()=>Ke,getTargetManagedOutputs:()=>_k,getTargetPrimaryRootInstructionPath:()=>o8,getTargetSkillDir:()=>Yp,isBuiltinTargetId:()=>Vt,resolveTargetFeatureGenerator:()=>Wc,rewriteGeneratedOutputPath:()=>Sk});function n8(){return yk||(bE(Pe),yk=new Map(Pe.map(e=>[e.id,e]))),yk}function Hr(e){return n8().get(e)}function Di(e,t="project"){let r=Hr(e)??re(e);if(!r)return;if(t==="global"&&!r.globalSupport)return By(r8);let n=t==="global"?r.globalSupport.capabilities:r.capabilities;return By(n)}function Rk(e,t="project"){let r=Hr(e)??re(e);return r?t==="global"?r.globalSupport?.detectionPaths??[]:r.detectionPaths:[]}function Ke(e,t="project"){let r=Hr(e)??re(e);if(r)return t==="global"?r.globalSupport?.layout:r.project}function o8(e,t="project"){return Ke(e,t)?.rootInstructionPath}function Yp(e,t="project"){return Ke(e,t)?.skillDir}function _k(e,t="project"){return Ke(e,t)?.managedOutputs}function Sk(e,t,r="project"){let n=Ke(e,r);return n?n.rewriteGeneratedPath?n.rewriteGeneratedPath(t):t:null}function MG(e,t,r,n){return !e||!r?false:t==="commands"&&e.supportsConversion?.commands?!Fl(r,e.id,true,n):t==="agents"&&e.supportsConversion?.agents?!gr(r,e.id,true,n):false}function s8(e,t,r,n){return !e||!r?false:t==="commands"&&e.supportsConversion?.commands?Fl(r,e.id,true,n):t==="agents"&&e.supportsConversion?.agents?gr(r,e.id,true,n):false}function dg(e,t,r,n="project"){let o=Di(e,n)?.[t]?.level??"none",i=Hr(e)??re(e);return n==="global"&&i&&!i.globalSupport?"none":o==="none"&&s8(i,t,r,n)?"embedded":o!=="embedded"?o:MG(i,t,r,n)?"none":o}function Wc(e,t,r,n="project"){let o=Hr(e)??re(e);if(!o?.generators||MG(o,t,r,n))return;let i=i8[t];return i===null?void 0:i(o.generators)}var r8,Pe,yk,i8,xe=d(()=>{Ml();ea();rt();Ky();Nn();lR();g_();h_();R_();CA();k_();$x();OT();B_();J_();Q_();dS();fS();gS();NS();vS();FS();MS();BS();WS();zS();JS();YS();XS();ZS();ek();tk();rk();LG();hk();r8={rules:"none",additionalRules:"none",commands:"none",agents:"none",skills:"none",mcp:"none",hooks:"none",ignore:"none",permissions:"none"},Pe=[xd,af,lf,cf,LA,mf,Mx,bT,yf,Lf,wf,vf,Ff,Mf,Hf,zf,Vf,Jf,qf,Qf,Zf,eg,tg,rg,og,sg,ig,ag,IG,ug];s(n8,"builtinTargetsMap");s(Hr,"getBuiltinTargetDefinition");s(Di,"getTargetCapabilities");s(Rk,"getTargetDetectionPaths");s(Ke,"getTargetLayout");s(o8,"getTargetPrimaryRootInstructionPath");s(Yp,"getTargetSkillDir");s(_k,"getTargetManagedOutputs");s(Sk,"rewriteGeneratedOutputPath");s(MG,"isFeatureSuppressedByConversion");s(s8,"isConversionUpgrading");s(dg,"getEffectiveTargetSupportLevel");i8={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(Wc,"resolveTargetFeatureGenerator");});function c8(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 fg(e){let t=[];for(let n of Pe){let o=0,i=0;for(let a of n.detectionPaths){if(!await j(join(e,a)))continue;let l=l8.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(c8);let r=t[0];return r.uniqueHits===0?null:r.id}var l8,$G,kk=d(()=>{A();xe();l8=(()=>{let e=new Map;for(let t of Pe)for(let r of t.detectionPaths)e.set(r,(e.get(r)??0)+1);return e})();s(c8,"compare");s(fg,"detectNativeFormat");$G=Pe.map(e=>e.detectionPaths[0]).filter(e=>e!==void 0);});async function Xp(e,t){let r=re(t);if(!r)throw new Error(`No importer registered for native target: ${t}`);return r.generators.importFrom(e)}var Ik=d(()=>{rt();s(Xp,"importNativeToCanonical");});async function rl(e){if(!await j(e))return false;if(await j(join(e,Ck)))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,Ck)))return !0}catch{return false}return false}async function qp(e,t={}){if(!await j(e))return [];if(await j(join(e,Ck))){let r=await pd(e,t);return r?[r]:[]}return Js(e,t)}var Ck,gg=d(()=>{A();Nl();Ck="SKILL.md";s(rl,"isSkillPackLayout");s(qp,"loadSkillsAtExtendPath");});async function hg(e,t={}){return (await Vs(e,t)).filter(n=>!vn(basename(n.source)))}async function yg(e,t={}){return (await zs(e,t)).filter(n=>!vn(basename(n.source)))}async function Rg(e,t={}){return (await Hs(e,t)).filter(n=>!vn(basename(n.source)))}async function GG(e,t={}){return Js(e,t)}var _g=d(()=>{jm();Gm();$m();Nl();$o();s(hg,"importAgents");s(yg,"importCommands");s(Rg,"importRules");s(GG,"importSkills");});function wk(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 bk(e){return e.toLowerCase().endsWith(".md")}function UG(e,t){for(let r of wk(re(e)?.importer,t))if(r.extensions.some(n=>!bk(n)))return true;return false}function y8(e,t){let r=new Set;for(let n of wk(re(e)?.importer,t))for(let o of n.extensions)bk(o)||r.add(o.toLowerCase());return r}function R8(e){return _d().filter(t=>UG(t,e))}async function k8(e,t,r){return _8[e](t,r)}async function I8(e,t,r){return S8[e](t,r)}async function L8(e,t,r,n={}){let o=wk(re(t)?.importer,r),i=await U(e),a=new Set;for(let p of o)for(let u of p.extensions)bk(u)||a.add(u.toLowerCase());let l=i.filter(p=>[...a].some(u=>p.toLowerCase().endsWith(u))&&!vn(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 k(u);if(f===null)continue;let g=relative(e,u).replaceAll("\\","/"),h=null;for(let R of o){if(!R.extensions.some(I=>u.toLowerCase().endsWith(I.toLowerCase())))continue;let S=await R.map({absolutePath:u,relativePath:g,content:f,destDir:c,normalizeTo:s(()=>f,"normalizeTo")});if(S){h=S;break}}h&&(await w(dirname(h.destPath)),await L(h.destPath,h.content));}return {entities:await k8(r,c,n),cleanup:m}}catch(p){throw await m(),p}}async function Ok(e,t,r={}){let n=r.restrictToTarget,o=n?UG(n,t)?[n]:[]:R8(t),i=new Set;for(let f of o)for(let g of y8(f,t))i.add(g);let a=await I8(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 L8(e,f,t,r.parseOpts??{});l.push(g.cleanup);for(let h of g.entities){let R=c(h);m.has(R)||m.set(R,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 Sg(e,t={}){let r=await Ok(e,"commands",t);return {commands:[...r.entities],cleanup:r.cleanup}}async function kg(e,t={}){let r=await Ok(e,"rules",t);return {rules:[...r.entities],cleanup:r.cleanup}}async function Ig(e,t={}){let r=await Ok(e,"agents",t);return {agents:[...r.entities],cleanup:r.cleanup}}var _8,S8,Lg=d(()=>{jm();Gm();$m();A();rt();$o();_g();s(wk,"directorySpecsFor");s(bk,"isMarkdownExtension");s(UG,"hasNonMdEntityMapper");s(y8,"nonMdEntityExtensions");s(R8,"targetsWithNonMdEntityMapper");_8={rules:Hs,commands:zs,agents:Vs},S8={rules:Rg,commands:yg,agents:hg};s(k8,"parseEntityDir");s(I8,"importEntities");s(L8,"readToolNativeEntities");s(Ok,"readEntityDirWithMappers");s(Sg,"readCommandsDirWithMappers");s(kg,"readRulesDirWithMappers");s(Ig,"readAgentsDirWithMappers");});function w8(){return {rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}function b8(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 Cg(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 Tk(e,t){if(basename(e)===t)return e;let r=join(e,t);return await j(r)?r:null}async function O8(e,t,r){let n=s(async()=>{},"noop"),o=await Tk(e,"rules");if(!o)return {rules:[],cleanup:n};if(!r)return {rules:await Rg(o,t),cleanup:n};let i=await kg(o,{parseOpts:t});return {rules:[...i.rules],cleanup:i.cleanup}}async function A8(e,t,r){let n=s(async()=>{},"noop"),o=await Tk(e,"commands");if(!o)return {commands:[],cleanup:n};if(!r)return {commands:await yg(o,t),cleanup:n};let i=await Sg(o,{parseOpts:t});return {commands:[...i.commands],cleanup:i.cleanup}}async function x8(e,t,r){let n=s(async()=>{},"noop"),o=await Tk(e,"agents");if(!o)return {agents:[],cleanup:n};if(!r)return {agents:await hg(o,t),cleanup:n};let i=await Ig(o,{parseOpts:t});return {agents:[...i.agents],cleanup:i.cleanup}}async function T8(e,t){if(await rl(e))return qp(e,t);let r=join(e,"skills");return await rl(r)?qp(r,t):[]}async function Eg(e,t={}){let r=s(async()=>{},"noop"),n=join(e,".agentsmesh");if(await j(n))return {canonical:await Gt(e,t),cleanup:r};let o=t.enableTargetEntityMappers??false,i=w8(),a=await O8(e,t,o);i.rules=a.rules;let l=await A8(e,t,o);i.commands=l.commands;let c=await x8(e,t,o);i.agents=c.agents,i.skills=await T8(e,t);let m=s(async()=>{await Promise.allSettled([a.cleanup(),l.cleanup(),c.cleanup()]);},"mergedCleanup");if(b8(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 Pk=d(()=>{A();_g();Lg();Zi();gg();s(w8,"emptyCanonical");s(b8,"isCanonicalSliceEmpty");s(Cg,"normalizeSlicePath");s(Tk,"resolveEntityDir");s(O8,"parseRulesAt");s(A8,"parseCommandsAt");s(x8,"parseAgentsAt");s(T8,"loadSkillsForPartialSlice");s(Eg,"loadCanonicalSliceAtPath");});async function wg(e){let t=await k(e);if(!t)return "";let r=Yr(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 BG(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 !(dE(o)||!n.includes("/")&&(cd(n)||fE(n)))},"filter")});}var Dk=d(()=>{A();B();$o();s(wg,"readSkillFrontmatterName");s(BG,"cpFilteredSkill");});function Nk(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):typeof e=="string"?e?[e]:[]:[]}function N8(e){let t={...e},r=e.alwaysApply===true;if(t.root=r,delete t.alwaysApply,!r){let n=Nk(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 v8(e){let t={...e};return t.trigger==="always"&&(t.trigger="always_on"),typeof t.glob=="string"&&(t.globs=Nk(t.globs).length>0?Nk(t.globs):[t.glob],delete t.glob),t}function vk(e){let t=Yr(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=N8(r):"trigger"in r||"glob"in r?o=v8(r):o=r,D(o,n.trim())}var KG=d(()=>{B();s(Nk,"toStrArray");s(N8,"normalizeCursorKeys");s(v8,"normalizeWindsurfKeys");s(vk,"normalizeMdcToCanonical");});function Fk(e){return e.toLowerCase().replace(/[^a-z0-9.-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}function Mk(e){return e.toLowerCase().endsWith(".mdc")?basename(e).replace(/\.mdc$/i,".md"):basename(e)}function HG(e,t,r){let o=relative(e,t).replace(/\\/g,"/").split("/");if(o.pop(),o.length===0)return r;let i=Fk(o[o.length-1]);return i?`${i}-${r}`:r}var zG=d(()=>{s(Fk,"sanitizeNameSegment");s(Mk,"computeDestName");s(HG,"namespacedName");});async function j8(){let e=await mkdtemp(join(tmpdir(),"am-install-manual-")),t=join(e,"repo");return await w(join(t,".agentsmesh")),{discoveryRoot:t,cleanup:s(async()=>{await rm$1(e,{recursive:true,force:true});},"cleanup")}}function XG(e,t){let r=e.toLowerCase();return !!(r.endsWith(".md")||t&&r.endsWith(".mdc"))}async function U8(e,t,r){if(!XG(e,r))throw new Error(`Manual install only supports .md files for this collection: ${e}`);if(await w(t),e.toLowerCase().endsWith(".mdc")){let n=await k(e);if(!n)return;let o=basename(e).replace(/\.mdc$/i,".md");await writeFile(join(t,o),vk(n));}else await cp$1(e,join(t,basename(e)));}async function B8(e,t,r){if((await stat(e)).isFile())return U8(e,t,r);let o=(await U(e)).filter(l=>XG(l,r)&&!vn(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=Mk(l);i.set(c,(i.get(c)??0)+1);}let a=new Map;await w(t);for(let l of o){let c=Mk(l),p=(i.get(c)??0)>1?HG(e,l,c):c;if(a.has(p)&&a.get(p)!==l){let f=relative(e,l).replace(/\\/g,"/").split("/").map(Fk).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 k(l);if(!f)continue;await writeFile(join(t,p),vk(f));}else await cp$1(l,join(t,p));}}async function VG(e,t,r){if(r.length===0)return false;let n=new Set(r),o=new Map;for(let i of await U(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 w(t);for(let i of r)await cp$1(o.get(i),join(t,i),{recursive:true});return true}async function K8(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 w(i),await cp$1(dirname(e),i,{recursive:true});return}if(await rl(e)){if((await stat(join(e,"SKILL.md")).catch(()=>null))?.isFile()){if(await VG(e,t,r.preferredSkillNames??[]))return;let l=await wg(join(e,"SKILL.md"))||basename(e),c=join(t,l);await w(t),await BG(e,c);return}if(await VG(e,t,r.preferredSkillNames??[]))return;await w(t);let o=await U(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 Og(e,t,r={}){let n=await j8();try{let o=join(n.discoveryRoot,".agentsmesh",t);return t==="skills"?await K8(e,o,r):await B8(e,o,t==="rules"),n}catch(o){throw await n.cleanup(),o}}var Gk=d(()=>{A();gg();Dk();$o();KG();zG();s(j8,"createStageRoot");s(XG,"isAcceptedFile");s(U8,"stageSingleFile");s(B8,"stageMarkdownCollection");s(VG,"stagePreferredSkills");s(K8,"stageSkills");s(Og,"stageManualInstallScope");});function W8(){return {rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}async function qG(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 Og(o,e.as);try{return Gt(join(i.discoveryRoot,".agentsmesh"))}finally{await i.cleanup();}}if(!e.path){let o=join(t,".agentsmesh");if(!await j(o)){if(await rl(t)){let a=await qp(t);return {...W8(),skills:a}}let i=e.target??await fg(t);if(!i)throw new Error(`Extend "${e.name}": No supported agent configuration found in ${t}.
|
|
152
|
-
Expected one of: .agentsmesh/, ${
|
|
145
|
+
${f}`:u,h={};p&&(h.description=p),typeof l.name=="string"&&l.name.length>0&&(h.name=l.name);let _=await ve(m,h,g),S=r(_,n,m);await L(m,S),t.push({feature:"agents",fromTool:Dt,fromPath:n,toPath:`${tl}/${c}.md`});}}async function PM(e,t={}){let r=t.scope??"project",n=[],o=await H(Dt,e,r);return n.push(...await Q(Ig,e,r,{normalize:o})),await ne(e,Kr,Dt,n,o),r==="project"&&(await y8(e,n,o),await _8(e,n,o),await S8(e,n,o),await ne(e,Za,Dt,n,o)),n}var kk,Ik,DM=d(()=>{ge();oe();Zt();Ae();b();de();B();Rk();Ts();Lk();kk=`${$i}/_root.md`,Ik="00-root.md";s(TM,"pathExists");s(y8,"importLegacyRules");s(_8,"importLegacyWorkflows");s(S8,"importLegacyModes");s(PM,"importFromKiloCode");});function NM(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Dt}))}var vM=d(()=>{Ee();Ts();s(NM,"lintRules");});function FM(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[F(".agentsmesh/hooks.yaml","kilo-code","kilo-code does not support user-defined lifecycle hooks; canonical hooks are not projected.")]:[]:[]}var MM=d(()=>{Re();s(FM,"lintHooks");});var GM,$M=d(()=>{Ts();GM=s((e,t,r,n)=>{if(n!==Xa&&n!==Bp)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 jM,UM,BM,KM,WM=d(()=>{Ts();dt();jM={rootInstructionPath:Cn,skillDir:Kr,managedOutputs:{dirs:[Ro,ko,Io,Kr],files:[Cn,bs,Qa,Xa]},paths:{rulePath(e,t){return `${Ro}/${e}.md`},commandPath(e,t){return `${ko}/${e}.md`},agentPath(e,t){return `${Io}/${e}.md`}}},UM={rootInstructionPath:As,skillDir:xs,managedOutputs:{dirs:[Fi,Mi,Gi,xs,Lb],files:[As,el,Hp,Bp]},rewriteGeneratedPath(e){return e===Cn?As:e===Xa?Bp:e},mirrorGlobalPath(e,t){return fe(e,xs,t)},paths:{rulePath(e,t){return `${Fi}/${e}.md`},commandPath(e,t){return `${Mi}/${e}.md`},agentPath(e,t){return `${Gi}/${e}.md`}}},BM={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"native"},KM={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"native"};});var R8,Ig,Lk=d(()=>{AM();Ts();DM();Rk();vM();MM();Oe();$M();WM();R8={name:Dt,primaryRootInstructionPath:Cn,generateRules:IM,generateCommands:LM,generateAgents:CM,generateSkills:bM,generateMcp:EM,generateIgnore:OM,generatePermissions:wM,importFrom:PM},Ig={id:Dt,metadata:{displayName:"Kilo Code",category:"ide",officialUrl:"https://kilocode.ai",shortDescription:"Open-source AI coding agent for VS Code"},generators:R8,capabilities:BM,emptyImportMessage:"No Kilo Code config found (AGENTS.md, .kilo/rules, .kilo/commands, .kilo/agents, .kilo/skills, .kilo/mcp.json, .kilocodeignore, .kilocode/, or .kilocodemodes).",lintRules:NM,lint:{hooks:FM},mergeGeneratedOutputContent:GM,project:jM,globalSupport:{capabilities:KM,detectionPaths:[As,Fi,Mi,Gi,xs,el,Hp],layout:UM},importer:{rules:[{feature:"rules",mode:"singleFile",source:{project:[Cn],global:[As]},canonicalDir:$i,canonicalRootFilename:"_root.md",markAsRoot:true},{feature:"rules",mode:"directory",source:{project:[Ro],global:[Fi]},canonicalDir:$i,extensions:[".md"],map:Rg}],commands:{feature:"commands",mode:"directory",source:{project:[ko],global:[Mi]},canonicalDir:Tc,extensions:[".md"],map:kg},agents:{feature:"agents",mode:"directory",source:{project:[Io],global:[Gi]},canonicalDir:tl,extensions:[".md"],map:xM},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[bs,Wp],global:[el]},canonicalDir:".agentsmesh",canonicalFilename:Cb},ignore:{feature:"ignore",mode:"flatFile",source:{project:[Qa],global:[Hp]},canonicalDir:".agentsmesh",canonicalFilename:Eb}},buildImportPaths:CS,detectionPaths:[Ro,ko,Io,Kr,bs,qa,Ac,Za,Wp,Of,Qa,"kilo.jsonc","kilo.json"]};});function HM(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/_/g,"-").toLowerCase()}function L8(e){return e.type==="prompt"?e.prompt:e.command}function C8(e,t){let r=zM[e];return e==="PreToolUse"||e==="PostToolUse"?{type:r,tools:[t||"*"]}:{type:r}}function VM(e){let t=[];for(let[r,n]of Object.entries(e)){let o=r;if(!(o in zM)||!Array.isArray(n))continue;let i=1;for(let a of n){let l=L8(a);if(!l)continue;let c={name:`${HM(r)} ${i}`,version:"1",when:C8(o,a.matcher),then:a.type==="prompt"?{type:"askAgent",prompt:l}:{type:"shellCommand",command:l}};t.push({name:`${HM(r)}-${i}.kiro.hook`,content:JSON.stringify(c,null,2)}),i+=1;}}return t}function E8(e){let t=I8.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 JM(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:E8(r)}function YM(e){return stringify(e).trimEnd()}var zM,I8,Ck=d(()=>{zM={UserPromptSubmit:"promptSubmit",SubagentStop:"agentStop",PreToolUse:"preToolUse",PostToolUse:"postToolUse"},I8=new Map([["promptSubmit","UserPromptSubmit"],["agentStop","SubagentStop"],["preToolUse","PreToolUse"],["postToolUse","PostToolUse"]]);s(HM,"toKebab");s(L8,"hookText");s(C8,"toWhen");s(VM,"generateKiroHooks");s(E8,"toCanonicalEntry");s(JM,"parseKiroHookFile");s(YM,"serializeCanonicalHooks");});function w8(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 XM(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:En,content:r.body.trim()||""});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(cr))continue;let o=basename(n.source,".md");t.push({path:`${On}/${o}.md`,content:T(w8(n),n.body.trim()||"")});}return t}function QM(e){return e.commands.map(t=>({path:`${Nt}/${J(t.name)}/SKILL.md`,content:Ge(t)}))}function qM(e){return ie(e,Nt)}function ZM(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Pc,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function eG(e){return !e.hooks||Object.keys(e.hooks).length===0?[]:VM(e.hooks).map(t=>({path:`${ji}/${t.name}`,content:t.content}))}function tG(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=T(r,t.body.trim()||"");return {path:`${wn}/${t.name}.md`,content:n}})}function rG(e){return e.ignore.length===0?[]:[{path:Dc,content:e.ignore.join(`
|
|
146
|
+
`)}]}var nG=d(()=>{oe();be();B();Ck();Nc();s(w8,"steeringFrontmatter");s(XM,"generateRules");s(QM,"generateCommands");s(qM,"generateSkills");s(ZM,"generateMcp");s(eG,"generateHooks");s(tG,"generateAgents");s(rG,"generateIgnore");});function A8(e){let t=typeof e.inclusion=="string"?e.inclusion:"",r={root:false,description:typeof e.description=="string"?e.description:void 0,globs:as(e.fileMatchPattern)};return t==="manual"&&(r.trigger="manual"),t==="auto"&&(r.trigger="model_decision"),t==="fileMatch"&&(r.trigger="glob"),r}async function x8(e,t,r,n){let o=n==="global"?[bn,En]:[En,bn];for(let i of o){let a=join(e,i),l=await k(a);if(l===null)continue;let c=join(e,ES),{frontmatter:m,body:p}=x(r(l,a,c));await L(c,await z(c,{...m,root:true},p)),t.push({fromTool:cr,fromPath:a,toPath:ES,feature:"rules"});return}}async function T8(e,t,r){let n=join(e,OS);t.push(...await Se({srcDir:join(e,On),destDir:n,extensions:[".md"],fromTool:cr,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}=x(i(a));return {destPath:a,toPath:`${OS}/${o}`,feature:"rules",content:await z(a,A8(l),c)}},"mapEntry")}));}async function P8(e,t){let r={};for(let o of await U(join(e,ji))){if(!o.endsWith(".kiro.hook"))continue;let i=JM(await k(o)??"");i&&(r[i.event]??=[],r[i.event].push(i.entry));}if(Object.keys(r).length===0)return;let n=join(e,wS);await O(join(e,".agentsmesh")),await L(n,YM(r)),t.push({fromTool:cr,fromPath:join(e,ji),toPath:wS,feature:"hooks"});}async function oG(e,t={}){let r=t.scope??"project",n=[],o=await H(cr,e,r);return await x8(e,n,o,r),await T8(e,n,o),n.push(...await Q(Lg,e,r,{normalize:o})),await ne(e,Nt,cr,n,o),r==="project"&&await P8(e,n),n}var sG=d(()=>{ge();oe();Zt();Ae();de();qt();b();B();Ck();Nc();Ek();s(A8,"canonicalRuleMeta");s(x8,"importRoot");s(T8,"importNonRootRules");s(P8,"importHooks");s(oG,"importFromKiro");});function iG(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:cr}))}var aG=d(()=>{Ee();Nc();s(iG,"lintRules");});function lG(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=["PreToolUse","PostToolUse","UserPromptSubmit","SubagentStop"],r=new Set(t);return Object.keys(e.hooks).filter(n=>!r.has(n)).map(n=>Ci(n,"kiro",t,{unsupportedBy:"Kiro hooks"}))}var cG=d(()=>{Re();s(lG,"lintHooks");});var D8,N8,v8,F8,Lg,Ek=d(()=>{be();nG();dt();sG();aG();cG();Oe();Nc();D8={name:cr,primaryRootInstructionPath:En,generateRules:XM,generateCommands:QM,generateAgents:tG,generateSkills:qM,generateMcp:ZM,generateHooks:eG,generateIgnore:rG,importFrom:oG},N8={rootInstructionPath:En,skillDir:Nt,managedOutputs:{dirs:[".kiro/hooks",".kiro/skills",".kiro/steering",".kiro/agents"],files:["AGENTS.md",".kiro/settings/mcp.json",".kiroignore"]},paths:{rulePath(e,t){return `${On}/${e}.md`},commandPath(e){return `${Nt}/${J(e)}/SKILL.md`},agentPath(e,t){return `${wn}/${e}.md`}}},v8={rootInstructionPath:bn,skillDir:Ui,managedOutputs:{dirs:[rl,Ui,nl,wb],files:[bn,Vp,Jp]},rewriteGeneratedPath(e){return e===En?bn:e.startsWith(`${On}/`)?e.replace(`${On}/`,`${rl}/`):e.startsWith(`${Nt}/`)?e.replace(`${Nt}/`,`${Ui}/`):e.startsWith(`${wn}/`)?e.replace(`${wn}/`,`${nl}/`):e===Pc?Vp:e===Dc?Jp:e.startsWith(`${ji}/`)?null:e},mirrorGlobalPath(e,t){return fe(e,".kiro/skills",t)},paths:{rulePath(e,t){return `${rl}/${e}.md`},commandPath(e){return `${Nt}/${J(e)}/SKILL.md`},agentPath(e,t){return `${nl}/${e}.md`}}},F8={rules:"native",additionalRules:"native",commands:"embedded",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"none"},Lg={id:cr,metadata:{displayName:"Kiro",category:"ide",officialUrl:"https://kiro.dev",shortDescription:"AWS spec-driven AI IDE"},generators:D8,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:iG,lint:{hooks:lG},project:N8,globalSupport:{capabilities:F8,detectionPaths:[rl,bn,Ui,nl,Vp,Jp],layout:v8},importer:{agents:{feature:"agents",mode:"directory",source:{project:[wn],global:[wn]},canonicalDir:bb,extensions:[".md"],preset:"agent"},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Pc],global:[Vp]},canonicalDir:".agentsmesh",canonicalFilename:Ab},ignore:{feature:"ignore",mode:"flatFile",source:{project:[Dc],global:[Jp]},canonicalDir:".agentsmesh",canonicalFilename:xb}},buildImportPaths:bS,detectionPaths:[On,Nt,wn,ji,Pc,Dc],conversionDefaults:{commandsToSkills:true}};});function pG(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:An,content:r.body.trim()?r.body:""});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(Wr))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?T(i,n.body.trim()||""):n.body.trim()||"";t.push({path:`${Lo}/${o}.md`,content:a});}return t}function uG(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${Co}/${t.name}.md`,content:T(r,t.body.trim()||"")}})}function dG(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:T(n,t.body.trim()||"")}})}function M8(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 fG(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]=M8(n);return [{path:Ct,content:JSON.stringify({mcp:t},null,2)}]}function gG(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:Ct,content:JSON.stringify({permission:t},null,2)}]}function hG(e){return ie(e,Hr)}var Ok=d(()=>{oe();B();Ns();s(pG,"generateRules");s(uG,"generateCommands");s(dG,"generateAgents");s(M8,"toOpenCodeMcpServer");s(fG,"generateMcp");s(gG,"generatePermissions");s(hG,"generateSkills");});function wk(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 $8(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:wk(a.headers),env:wk(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:wk(a.environment),...typeof a.description=="string"?{description:a.description}:{}};}}return n}async function j8(e,t,r){let o=join(e,t==="global"?zr:Ct),i=await k(o);if(i===null)return;let a=$8(i);Object.keys(a).length!==0&&(await Xe(e,AS,a),r.push({feature:"mcp",fromTool:Wr,fromPath:o,toPath:AS}));}async function U8(e,t,r){let o=join(e,t==="global"?zr:Ct),i=await k(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,xS);await O(join(e,".agentsmesh")),await L(m,stringify(c)),r.push({feature:"permissions",fromTool:Wr,fromPath:o,toPath:xS});}async function yG(e,t={}){let r=t.scope??"project",n=[],o=await H(Wr,e,r);return n.push(...await Q(Eg,e,r,{normalize:o})),await ne(e,Hr,Wr,n,o),await j8(e,r,n),await U8(e,r,n),n}var _G=d(()=>{ge();oe();Ae();hn();b();b();Ns();bk();s(wk,"toStringRecord");s($8,"parseOpenCodeMcp");s(j8,"importMcp");s(U8,"importPermissions");s(yG,"importFromOpenCode");});var SG,RG,kG,IG=d(()=>{B();de();Ns();SG=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n));return {destPath:n,toPath:`${Yp}/${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"),RG=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n));return {destPath:n,toPath:`${bf}/${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"),kG=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n));return {destPath:n,toPath:`${Af}/${e}`,content:await ve(n,o,i)}},"opencodeAgentMapper");});function LG(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Wr}))}var CG=d(()=>{Ee();Ns();s(LG,"lintRules");});function EG(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[F(".agentsmesh/hooks.yaml","opencode","opencode hooks are plugin-based (TypeScript/JavaScript); canonical config hooks are not projected.")]:[]:[]}function OG(e){return e.ignore.length===0?[]:[F(".agentsmesh/ignore","opencode","opencode has no dedicated ignore file; canonical ignore patterns are not projected. Configure watcher.ignore in opencode.json manually.")]}var wG=d(()=>{Re();s(EG,"lintHooks");s(OG,"lintIgnore");});function AG(e,t,r){let n={};if(r.has("mcp")&&e.mcp){let o=fG(e)[0];o&&Object.assign(n,JSON.parse(o.content));}if(r.has("permissions")&&e.permissions){let o=gG(e)[0];o&&Object.assign(n,JSON.parse(o.content));}return Object.keys(n).length===0?[]:[{path:Ct,content:JSON.stringify(n,null,2)}]}var bG,xG=d(()=>{fu();Ns();Ok();bG=s((e,t,r,n)=>{if(n!==Ct&&n!==zr)return null;let o=t?.content??e;return o===null?r:qf(o,r)},"mergeOpenCodeSettings");s(AG,"emitOpenCodeScopedSettings");});var TG,PG,xk,DG=d(()=>{dt();Ns();TG={rootInstructionPath:An,skillDir:Hr,managedOutputs:{dirs:[Lo,Co,Eo,Hr],files:[An,Ct]},paths:{rulePath:s(e=>`${Lo}/${e}.md`,"rulePath"),commandPath:s(e=>`${Co}/${e}.md`,"commandPath"),agentPath:s(e=>`${Eo}/${e}.md`,"agentPath")}},PG={rootInstructionPath:Ps,skillDir:Ds,managedOutputs:{dirs:[Bi,Ki,Wi,Ds,Pb],files:[Ps,zr]},rewriteGeneratedPath(e){return e===An?Ps:e===Ct?zr:e},mirrorGlobalPath(e,t){return fe(e,Ds,t)},paths:{rulePath:s(e=>`${Bi}/${e}.md`,"rulePath"),commandPath:s(e=>`${Ki}/${e}.md`,"commandPath"),agentPath:s(e=>`${Wi}/${e}.md`,"agentPath")}},xk={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"native"};});var B8,Eg,bk=d(()=>{Ok();Ns();_G();IG();CG();wG();Oe();xG();DG();B8={name:Wr,primaryRootInstructionPath:An,generateRules:pG,generateCommands:uG,generateAgents:dG,generateSkills:hG,importFrom:yG},Eg={id:Wr,metadata:{displayName:"OpenCode",category:"cli",officialUrl:"https://opencode.ai",shortDescription:"Open-source terminal AI agent"},generators:B8,capabilities:xk,emptyImportMessage:"No OpenCode config found (AGENTS.md, .opencode/rules, .opencode/commands, .opencode/agents, .opencode/skills, or opencode.json).",lintRules:LG,lint:{hooks:EG,ignore:OG},project:TG,globalSupport:{capabilities:xk,detectionPaths:[Ps,Bi,Ki,Wi,Ds,zr],layout:PG},mergeGeneratedOutputContent:bG,emitScopedSettings:AG,importer:{rules:[{feature:"rules",mode:"singleFile",source:{project:[An],global:[Ps]},canonicalDir:Yp,canonicalRootFilename:"_root.md",markAsRoot:true},{feature:"rules",mode:"directory",source:{project:[Lo],global:[Bi]},canonicalDir:Yp,extensions:[".md"],map:SG}],commands:{feature:"commands",mode:"directory",source:{project:[Co],global:[Ki]},canonicalDir:bf,extensions:[".md"],map:RG},agents:{feature:"agents",mode:"directory",source:{project:[Eo],global:[Wi]},canonicalDir:Af,extensions:[".md"],map:kG}},buildImportPaths:TS,detectionPaths:[Lo,Co,Eo,Hr,Ct,"opencode.jsonc"]};});function NG(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:Vr,content:o}]:[]}function vG(e){return ie(e,pt)}function FG(e){return e.commands.map(t=>({path:`${pt}/${J(t.name)}/SKILL.md`,content:Ge(t)}))}function MG(e){return e.agents.map(t=>({path:`${pt}/${V(t.name)}/SKILL.md`,content:$e(t)}))}var GG=d(()=>{oe();Be();_e();be();Fc();s(NG,"generateRules");s(vG,"generateSkills");s(FG,"generateCommands");s(MG,"generateAgents");});async function $G(e,t={}){let r=t.scope??"project",n=[],o=await H(Oo,e,r);return n.push(...await Q(Og,e,r,{normalize:o})),await ne(e,r==="global"?Jr:pt,Oo,n,o),n}var jG=d(()=>{ge();oe();Ae();Fc();Tk();s($G,"importFromPiAgent");});function UG(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Oo}))}var BG=d(()=>{Ee();Fc();s(UG,"lintRules");});function KG(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[F(".agentsmesh/hooks.yaml","pi-agent","Pi Coding Agent has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function WG(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?[]:[F(".agentsmesh/permissions.yaml","pi-agent","Pi Coding Agent has no dedicated permissions config; canonical permissions are not projected.")]}function HG(e){return e.ignore.length===0?[]:[F(".agentsmesh/ignore","pi-agent","Pi Coding Agent has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}function zG(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[F(".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 VG=d(()=>{Re();s(KG,"lintHooks");s(WG,"lintPermissions");s(HG,"lintIgnore");s(zG,"lintMcp");});var K8,W8,H8,JG,Og,Tk=d(()=>{be();_e();GG();dt();jG();BG();VG();DS();Fc();K8={name:Oo,primaryRootInstructionPath:Vr,generateRules:NG,generateCommands:FG,generateAgents:MG,generateSkills:vG,importFrom:$G},W8={rootInstructionPath:Vr,skillDir:pt,managedOutputs:{dirs:[pt],files:[Vr]},paths:{rulePath(e){return Vr},commandPath(e){return `${pt}/${J(e)}/SKILL.md`},agentPath(e){return `${pt}/${V(e)}/SKILL.md`}}},H8={rootInstructionPath:vs,skillDir:Jr,managedOutputs:{dirs:[Jr],files:[vs]},rewriteGeneratedPath(e){return e===Vr?vs:e.startsWith(`${pt}/`)?e.replace(`${pt}/`,`${Jr}/`):e},mirrorGlobalPath(e,t){return fe(e,Jr,t)},paths:{rulePath(e){return vs},commandPath(e){return `${Jr}/${J(e)}/SKILL.md`},agentPath(e){return `${Jr}/${V(e)}/SKILL.md`}}},JG={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"none",permissions:"none"},Og={id:Oo,metadata:{displayName:"Pi Agent",category:"cli",officialUrl:"https://github.com/pi-labs/pi-agent",shortDescription:"Pi coding agent"},generators:K8,capabilities:JG,emptyImportMessage:"No Pi Coding Agent config found (AGENTS.md or .pi/skills).",lintRules:UG,lint:{hooks:KG,permissions:WG,ignore:HG,mcp:zG},supportsConversion:{commands:true,agents:true},project:W8,globalSupport:{capabilities:JG,detectionPaths:[vs],layout:H8},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Vr],global:[vs]},canonicalDir:vb,canonicalRootFilename:"_root.md",markAsRoot:true}},sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:PS,detectionPaths:[Vr,pt]};});function YG(e){let t=[],r=e.rules.find(o=>o.root);r&&t.push({path:mr,content:r.body.trim()?r.body:""});let n=e.rules.filter(o=>!o.root&&(o.targets.length===0||o.targets.includes(xn)));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=T(a,o.body.trim()||"");t.push({path:`${wo}/${i}.md`,content:l});}return t}function XG(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=T(r,t.body.trim()||"");return {path:`${Tn}/${t.name}.md`,content:n}})}function QG(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=T(r,t.body.trim()||"");return {path:`${Pn}/${t.name}.md`,content:n}})}function qG(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=T(n,r.body.trim()||"");t.push({path:`${pr}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${pr}/${r.name}/${a}`,content:i.content});}}return t}function ZG(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:Yr,content:t}]}function e$(e){return !e.ignore||e.ignore.length===0?[]:[{path:Fs,content:e.ignore.join(`
|
|
147
|
+
`)}]}function t$(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=en(e);return Object.keys(t).length===0?[]:[{path:Yr,content:JSON.stringify({hooks:t},null,2)}]}function r$(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:Yr,content:JSON.stringify({permissions:o},null,2)}]}function n$(e){let t=e.rules.find(n=>n.root),r=e.rules.filter(n=>n.root?false:n.targets.length===0||n.targets.includes(xn));return le(t?.body.trim()??"",r)}var o$=d(()=>{B();Be();ul();ol();s(YG,"generateRules");s(XG,"generateCommands");s(QG,"generateAgents");s(qG,"generateSkills");s(ZG,"generateMcp");s(e$,"generateIgnore");s(t$,"generateHooks");s(r$,"generatePermissions");s(n$,"renderQwenGlobalInstructions");});async function s$(e,t={}){let r=t.scope??"project",n=[],o=await H(xn,e,r);return n.push(...await Q(wg,e,r,{normalize:o})),await ne(e,r==="global"?Ao:pr,xn,n,o),n}var i$=d(()=>{ge();Ae();oe();ol();Pk();s(s$,"importFromQwenCode");});function a$(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:xn}))}var l$=d(()=>{Ee();ol();s(a$,"lintRules");});var c$,m$=d(()=>{ol();c$={rules:[{feature:"rules",mode:"singleFile",source:{project:[mr],global:[bo]},canonicalDir:NS,canonicalRootFilename:"_root.md",markAsRoot:true},{feature:"rules",mode:"directory",source:{project:[wo],global:[]},canonicalDir:NS,extensions:[".md"],preset:"rule"}],commands:{feature:"commands",mode:"directory",source:{project:[Tn],global:[Gs]},canonicalDir:Fb,extensions:[".md"],preset:"command"},agents:{feature:"agents",mode:"directory",source:{project:[Pn],global:[$s]},canonicalDir:Mb,extensions:[".md"],preset:"agent"},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Yr],global:[Ms]},canonicalDir:".agentsmesh",canonicalFilename:".agentsmesh/mcp.json"},ignore:{feature:"ignore",mode:"flatFile",source:{project:[Fs],global:[]},canonicalDir:".agentsmesh",canonicalFilename:".agentsmesh/ignore"}};});function q8(e){if(!e)return {};try{let t=JSON.parse(e);return t!==null&&typeof t=="object"&&!Array.isArray(t)?t:{}}catch{return {}}}var V8,J8,Y8,X8,Q8,Z8,wg,Pk=d(()=>{o$();i$();l$();Oe();m$();ol();V8={name:xn,primaryRootInstructionPath:mr,generateRules:YG,generateCommands:XG,generateAgents:QG,generateSkills:qG,generateMcp:ZG,generateIgnore:e$,generateHooks:t$,generatePermissions:r$,importFrom:s$},J8={rootInstructionPath:mr,skillDir:pr,managedOutputs:{dirs:[wo,Tn,Pn,pr],files:[mr,Yr,Fs]},paths:{rulePath(e,t){return t.root?mr:`${wo}/${e}.md`},commandPath(e){return `${Tn}/${e}.md`},agentPath(e){return `${Pn}/${e}.md`}}},Y8={rootInstructionPath:bo,renderPrimaryRootInstruction:n$,skillDir:Ao,managedOutputs:{dirs:[Gs,$s,Ao],files:[bo,Ms]},rewriteGeneratedPath(e){return e===mr?bo:e===Yr?Ms:e===Fs?null:e.startsWith(`${Tn}/`)?e.replace(`${Tn}/`,`${Gs}/`):e.startsWith(`${Pn}/`)?e.replace(`${Pn}/`,`${$s}/`):e.startsWith(`${pr}/`)?e.replace(`${pr}/`,`${Ao}/`):e.startsWith(`${wo}/`)?null:e},paths:{rulePath(e,t){return bo},commandPath(e){return `${Gs}/${e}.md`},agentPath(e){return `${$s}/${e}.md`}}},X8={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"native"},Q8={rules:"native",additionalRules:"embedded",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"native"};s(q8,"parseJsonObject");Z8=s((e,t,r,n)=>{if(n!==Yr&&n!==Ms)return null;let o=q8(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"),wg={id:xn,metadata:{displayName:"Qwen Code",category:"cli",officialUrl:"https://github.com/QwenLM/qwen-code",shortDescription:"Alibaba's Qwen coding CLI"},generators:V8,capabilities:X8,emptyImportMessage:"No Qwen Code config found (QWEN.md or .qwen/rules, .qwen/commands, .qwen/settings.json).",lintRules:a$,project:J8,globalSupport:{capabilities:Q8,detectionPaths:[bo,Ms,Gs,$s,Ao],layout:Y8},mergeGeneratedOutputContent:Z8,importer:c$,buildImportPaths:vS,detectionPaths:[mr,".qwen/settings.json",".qwen/commands",".qwen/rules"]};});function p$(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(xo)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Dn,content:o}]:[]}function u$(e){return ie(e,Wt)}function d$(e){return e.commands.map(t=>({path:`${Wt}/${J(t.name)}/SKILL.md`,content:Ge(t)}))}function f$(e){return e.agents.map(t=>({path:`${Wt}/${V(t.name)}/SKILL.md`,content:$e(t)}))}var g$=d(()=>{oe();Be();_e();be();Mc();s(p$,"generateRules");s(u$,"generateSkills");s(d$,"generateCommands");s(f$,"generateAgents");});async function h$(e,t={}){let r=t.scope??"project",n=[],o=await H(xo,e,r);return n.push(...await Q(bg,e,r,{normalize:o})),await ne(e,Wt,xo,n,o),n}var y$=d(()=>{ge();oe();Ae();Mc();Dk();s(h$,"importFromReplitAgent");});function _$(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:xo}))}var S$=d(()=>{Ee();Mc();s(_$,"lintRules");});function R$(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[F(".agentsmesh/hooks.yaml","replit-agent","Replit Agent has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function k$(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?[]:[F(".agentsmesh/permissions.yaml","replit-agent","Replit Agent permissions are managed in the cloud UI; canonical permissions are not projected.")]}function I$(e){return e.ignore.length===0?[]:[F(".agentsmesh/ignore","replit-agent","Replit Agent has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}function L$(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[F(".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 C$=d(()=>{Re();s(R$,"lintHooks");s(k$,"lintPermissions");s(I$,"lintIgnore");s(L$,"lintMcp");});var e3,t3,r3,bg,Dk=d(()=>{be();_e();g$();y$();S$();C$();MS();Mc();e3={name:xo,primaryRootInstructionPath:Dn,generateRules:p$,generateCommands:d$,generateAgents:f$,generateSkills:u$,importFrom:h$},t3={rootInstructionPath:Dn,skillDir:Wt,managedOutputs:{dirs:[Wt],files:[Dn]},paths:{rulePath(e){return Dn},commandPath(e){return `${Wt}/${J(e)}/SKILL.md`},agentPath(e){return `${Wt}/${V(e)}/SKILL.md`}}},r3={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"none",permissions:"none"},bg={id:xo,metadata:{displayName:"Replit Agent",category:"agent-platform",officialUrl:"https://replit.com",shortDescription:"Replit's autonomous coding agent"},generators:e3,capabilities:r3,emptyImportMessage:"No Replit Agent config found (replit.md or .agents/skills).",lintRules:_$,lint:{hooks:R$,permissions:k$,ignore:I$,mcp:L$},supportsConversion:{commands:true,agents:true},project:t3,sharedArtifacts:{".agents/skills/":"consumer"},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Dn]},canonicalDir:$b,canonicalRootFilename:"_root.md",markAsRoot:true}},buildImportPaths:FS,detectionPaths:[Dn]};});function O$(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:Nn,content:r.body.trim()||""});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(Hi))continue;let o=basename(n.source,".md");t.push({path:`${js}/${o}.md`,content:n.body.trim()||""});}return t}function w$(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${Us}/${t.name}.md`,content:T(r,t.body.trim()||"")}})}function b$(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Qp,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function A$(e){return e.ignore.length===0?[]:[{path:qp,content:e.ignore.join(`
|
|
148
|
+
`)}]}function x$(e){return ie(e,To)}function T$(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:Gc,content:stringify({customModes:t})}]}function P$(e){return []}var D$=d(()=>{oe();B();ll();s(O$,"generateRules");s(w$,"generateCommands");s(b$,"generateMcp");s(A$,"generateIgnore");s(x$,"generateSkills");s(T$,"generateAgents");s(P$,"generatePermissions");});var Ag,v$,Nk=d(()=>{B();de();ll();Ag=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{if(e==="00-root.md")return null;let n=join(r,e),{frontmatter:o,body:i}=x(t(n));return {destPath:n,toPath:`${al}/${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"),v$=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=x(t(n));return {destPath:n,toPath:`${Tf}/${e}`,content:await Ce(n,{hasDescription:true,description:typeof o.description=="string"?o.description:void 0,hasAllowedTools:false,allowedTools:[]},i)}},"rooCommandMapper");});async function s3(e,t,r){let n=join(e,sl),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,al);for(let l of i)t.push(...await Se({srcDir:join(n,l),destDir:a,extensions:[".md"],fromTool:Hi,normalize:r,mapEntry:s(async({srcPath:c,relativePath:m,content:p,normalizeTo:u})=>{let f=await Ag({absolutePath:c,relativePath:m,content:p,destDir:a,normalizeTo:u});return f?{...f,feature:"rules"}:null},"mapEntry")}));}async function F$(e,t={}){let r=t.scope??"project",n=[],o=await H(Hi,e,r);return n.push(...await Q(xg,e,r,{normalize:o})),await s3(e,n,o),await ne(e,To,Hi,n,o),n}var M$=d(()=>{ge();oe();Zt();Ae();Nk();ll();Fk();s(s3,"importPerModeRules");s(F$,"importFromRooCode");});function G$(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Hi}))}var $$=d(()=>{Ee();ll();s(G$,"lintRules");});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?[]:[F(".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 U$=d(()=>{Re();s(j$,"lintPermissions");});function p3(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var c3,m3,u3,d3,f3,xg,Fk=d(()=>{b();D$();ll();dt();M$();Nk();$$();U$();Oe();c3={name:"roo-code",primaryRootInstructionPath:Nn,generateRules:O$,generateCommands:w$,generateSkills:x$,generateMcp:b$,generateIgnore:A$,generateAgents:T$,generatePermissions:P$,importFrom:F$},m3={rootInstructionPath:Nn,skillDir:".roo/skills",managedOutputs:{dirs:[".roo/rules",".roo/commands",".roo/skills"],files:[".roo/mcp.json",".rooignore",".roorules",Gc]},paths:{rulePath(e,t){return `${js}/${e}.md`},commandPath(e,t){return `${Us}/${e}.md`},agentPath(e,t){return null}}};s(p3,"computeStatus");u3=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 k(join(t,Zp));return [{target:"roo-code",path:Zp,content:i,currentContent:a??void 0,status:p3(a,i)}]},"generateRooGlobalExtras"),d3={rootInstructionPath:Ji,skillDir:Bs,managedOutputs:{dirs:[zi,Vi,Bs,jb],files:[Ji,il,eu,Zp]},rewriteGeneratedPath(e){return e===Nn?Ji:e===Gc?null:e.startsWith(`${js}/`)?e.replace(`${js}/`,`${zi}/`):e.startsWith(`${Us}/`)?e.replace(`${Us}/`,`${Vi}/`):e.startsWith(`${To}/`)?e.replace(`${To}/`,`${Bs}/`):e===Qp?il:e===qp?eu:e},mirrorGlobalPath(e,t){return fe(e,Bs,t)},paths:{rulePath(e,t){return `${zi}/${e}.md`},commandPath(e,t){return `${Vi}/${e}.md`},agentPath(e,t){return null}}},f3={rules:"native",additionalRules:"native",commands:"native",agents:"partial",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"partial"},xg={id:"roo-code",metadata:{displayName:"Roo Code",category:"ide",officialUrl:"https://roocode.com",shortDescription:"Open-source AI VS Code extension"},generators:c3,capabilities:{rules:"native",additionalRules:"native",commands:"native",agents:"partial",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:G$,lint:{permissions:j$},project:m3,globalSupport:{capabilities:f3,detectionPaths:[zi,Vi,Bs,il,eu,Ji,Zp],layout:d3,scopeExtras:u3},importer:{rules:[{feature:"rules",mode:"singleFile",source:{project:[Nn,Xp],global:[Ji,Nn,Xp]},canonicalDir:al,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:[js],global:[zi]},canonicalDir:al,extensions:[".md"],map:Ag}],commands:{feature:"commands",mode:"directory",source:{project:[Us],global:[Vi]},canonicalDir:Tf,extensions:[".md"],map:v$},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Qp],global:[il]},canonicalDir:".agentsmesh",canonicalFilename:Ub},ignore:{feature:"ignore",mode:"flatFile",source:{project:[qp],global:[eu]},canonicalDir:".agentsmesh",canonicalFilename:Bb}},buildImportPaths:GS,detectionPaths:[".roo/rules",".roo/commands",".roo/skills",".roo/mcp.json",".rooignore",".roorules",Gc]};});function B$(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(Po)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Xr,content:o}]:[]}function K$(e){return ie(e,ut)}function W$(e){return e.commands.map(t=>({path:`${ut}/${J(t.name)}/SKILL.md`,content:Ge(t)}))}function H$(e){return e.agents.map(t=>({path:`${ut}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function z$(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:Ks,content:t}]}var V$=d(()=>{oe();Be();_e();be();cl();s(B$,"generateRules");s(K$,"generateSkills");s(W$,"generateCommands");s(H$,"generateAgents");s(z$,"generateMcp");});async function J$(e,t={}){let r=t.scope??"project",n=[],o=await H(Po,e,r);return n.push(...await Q(Tg,e,r,{normalize:o})),await ne(e,r==="global"?ur:ut,Po,n,o),n}var Y$=d(()=>{ge();oe();Ae();cl();Mk();s(J$,"importFromRovodev");});function X$(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Po}))}var Q$=d(()=>{Ee();cl();s(X$,"lintRules");});function q$(e){return e.ignore.length===0?[]:[F(".agentsmesh/ignore","rovodev","Rovo Dev has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}var Z$=d(()=>{Re();s(q$,"lintIgnore");});function rj(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:tu,content:stringify(r)}]}function nj(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 oj=d(()=>{cl();s(rj,"buildRovodevConfig");s(nj,"mergeRovodevConfig");});var g3,h3,y3,_3,S3,Tg,Mk=d(()=>{be();_e();V$();dt();Y$();Q$();Z$();oj();Oe();cl();g3={name:Po,primaryRootInstructionPath:Xr,generateRules:B$,generateCommands:W$,generateAgents:H$,generateSkills:K$,generateMcp:z$,importFrom:J$},h3={rootInstructionPath:Xr,skillDir:ut,managedOutputs:{dirs:[ut],files:[Xr,Ks]},paths:{rulePath(e){return Xr},commandPath(e){return `${ut}/${J(e)}/SKILL.md`},agentPath(e){return `${ut}/${V(e)}/SKILL.md`}}},y3={rootInstructionPath:Ws,skillDir:ur,managedOutputs:{dirs:[ur],files:[Ws,$c,tu]},rewriteGeneratedPath(e){return e===Xr?Ws:e.startsWith(`${ut}/`)?e.replace(`${ut}/`,`${ur}/`):e===Ks?$c:e},mirrorGlobalPath(e,t){return fe(e,ur,t)},paths:{rulePath(e){return Ws},commandPath(e){return `${ur}/${J(e)}/SKILL.md`},agentPath(e){return `${ur}/${V(e)}/SKILL.md`}}},_3={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},S3={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"native"},Tg={id:Po,metadata:{displayName:"Rovo Dev",category:"cli",officialUrl:"https://www.atlassian.com/solutions/devops/rovo-dev",shortDescription:"Atlassian's coding agent"},generators:g3,capabilities:_3,emptyImportMessage:"No Rovo Dev config found (AGENTS.md, .rovodev/skills, or .rovodev/mcp.json).",lintRules:X$,lint:{ignore:q$},supportsConversion:{commands:true,agents:true},project:h3,globalSupport:{capabilities:S3,detectionPaths:[Hb,Ws,ur],layout:y3},emitScopedSettings(e,t,r){return t!=="global"?[]:rj(e,r)},mergeGeneratedOutputContent(e,t,r,n){return n!==tu?null:nj(e,r)},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Xr],global:[Ws]},canonicalDir:zb,canonicalRootFilename:"_root.md",markAsRoot:true},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Ks],global:[$c]},canonicalDir:".agentsmesh",canonicalFilename:"mcp.json"}},buildImportPaths:$S,detectionPaths:[Xr,ut,Ks]};});function sj(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:fr,content:r.body.trim()});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(Qr))continue;let o=basename(n.source,".md");t.push({path:`${dr}/${o}.md`,content:n.body.trim()});}return t}function ij(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${Yi}/${t.name}.md`,content:T(r,t.body.trim()||"")}})}function aj(e){return ie(e,qr)}function lj(e){return e.mcp===null||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:ml,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function cj(e){return e.ignore.length===0?[]:[{path:jc,content:e.ignore.join(`
|
|
149
|
+
`)}]}var mj=d(()=>{oe();B();Bc();s(sj,"generateRules");s(ij,"generateCommands");s(aj,"generateSkills");s(lj,"generateMcp");s(cj,"generateIgnore");});async function I3(e,t,r,n){let o=n==="global"?[Zr,fr]:[fr,Zr];for(let i of o){let a=join(e,i),l=await k(a);if(l===null)continue;let c=join(e,pj),{frontmatter:m,body:p}=x(r(l,a,c));await O(join(e,ou)),await L(c,await z(c,{...m,root:true},p)),t.push({fromTool:Qr,fromPath:a,toPath:pj,feature:"rules"});return}}async function L3(e,t,r,n){let o=join(e,n==="global"?Hs:dr),i=join(e,ou);t.push(...await Se({srcDir:o,destDir:i,extensions:[".md"],fromTool:Qr,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}=x(l(m));return {destPath:m,toPath:`${ou}/${a}`,feature:"rules",content:await z(m,{...p,root:false},u)}},"mapEntry")}));}async function uj(e,t={}){let r=t.scope??"project",n=[],o=await H(Qr,e,r);return await I3(e,n,o,r),await L3(e,n,o,r),n.push(...await Q(Pg,e,r,{normalize:o})),await ne(e,r==="global"?vn:qr,Qr,n,o),n}var pj,dj=d(()=>{ge();oe();Zt();Ae();de();b();B();Bc();Gk();pj=`${ou}/_root.md`;s(I3,"importRoot");s(L3,"importNonRootRules");s(uj,"importFromTrae");});function fj(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Qr}))}var gj=d(()=>{Ee();Bc();s(fj,"lintRules");});var C3,E3,O3,w3,Pg,Gk=d(()=>{mj();dt();dj();gj();Oe();Bc();C3={name:Qr,primaryRootInstructionPath:fr,generateRules:sj,generateCommands:ij,generateSkills:aj,generateMcp:lj,generateIgnore:cj,importFrom:uj},E3={rootInstructionPath:fr,skillDir:qr,managedOutputs:{dirs:[dr,Yi,qr],files:[ml,jc]},paths:{rulePath(e,t){return `${dr}/${e}.md`},commandPath(e,t){return `${Yi}/${e}.md`},agentPath(e,t){return null}}},O3={rootInstructionPath:Zr,skillDir:vn,managedOutputs:{dirs:[Hs,Uc,vn,Jb],files:[Zr,nu]},rewriteGeneratedPath(e){return e===fr?Zr:e.startsWith(`${dr}/`)?e.replace(`${dr}/`,`${Hs}/`):e.startsWith(`${qr}/`)?e.replace(`${qr}/`,`${vn}/`):e===ml?nu:e===jc?null:e},mirrorGlobalPath(e,t){return fe(e,vn,t)},paths:{rulePath(e,t){return e==="_root"?Zr:`${Hs}/${e}.md`},commandPath(e,t){return `${Uc}/${e}.md`},agentPath(e,t){return null}}},w3={rules:"native",additionalRules:"native",commands:"native",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},Pg={id:Qr,metadata:{displayName:"Trae",category:"ide",officialUrl:"https://www.trae.ai",shortDescription:"ByteDance's adaptive AI IDE"},generators:C3,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:fj,project:E3,globalSupport:{capabilities:w3,detectionPaths:[Zr,Hs,vn,nu],layout:O3},importer:{commands:{feature:"commands",mode:"directory",source:{project:[Yi],global:[Uc]},canonicalDir:Yb,extensions:[".md"],preset:"command"},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[ml],global:[nu]},canonicalDir:".agentsmesh",canonicalFilename:Xb},ignore:{feature:"ignore",mode:"flatFile",source:{project:[jc]},canonicalDir:".agentsmesh",canonicalFilename:Qb}},buildImportPaths:jS,detectionPaths:[dr,ml,fr]};});function hj(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:Fn,content:o}]:[]}function yj(e){return ie(e,Et)}function _j(e){return e.commands.map(t=>({path:`${Et}/${J(t.name)}/SKILL.md`,content:Ge(t)}))}function Sj(e){return e.agents.map(t=>({path:`${Et}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function Rj(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:Xi,content:t}]}function kj(e){return []}var Ij=d(()=>{oe();Be();_e();be();Kc();s(hj,"generateRules");s(yj,"generateSkills");s(_j,"generateCommands");s(Sj,"generateAgents");s(Rj,"generateMcp");s(kj,"generatePermissions");});async function Lj(e,t={}){let r=t.scope??"project",n=[],o=await H(Do,e,r);return n.push(...await Q(Dg,e,r,{normalize:o})),await ne(e,r==="global"?gr:Et,Do,n,o),n}var Cj=d(()=>{ge();oe();Ae();Kc();$k();s(Lj,"importFromWarp");});function Ej(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Do}))}var Oj=d(()=>{Ee();Kc();s(Ej,"lintRules");});function wj(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[F(".agentsmesh/hooks.yaml","warp","Warp has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function bj(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?[]:[F(".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 Aj(e){return e.ignore.length===0?[]:[F(".agentsmesh/ignore","warp","Warp has no dedicated ignore file and relies on .gitignore; canonical ignore patterns are not projected.")]}var xj=d(()=>{Re();s(wj,"lintHooks");s(bj,"lintPermissions");s(Aj,"lintIgnore");});var b3,A3,x3,T3,P3,Dg,$k=d(()=>{be();_e();Ij();dt();Cj();Oj();xj();Oe();Kc();b3={name:Do,primaryRootInstructionPath:Fn,generateRules:hj,generateCommands:_j,generateAgents:Sj,generateSkills:yj,generateMcp:Rj,generatePermissions:kj,importFrom:Lj},A3={rootInstructionPath:Fn,skillDir:Et,managedOutputs:{dirs:[Et],files:[Fn,Xi]},paths:{rulePath(e){return Fn},commandPath(e){return `${Et}/${J(e)}/SKILL.md`},agentPath(e){return `${Et}/${V(e)}/SKILL.md`}}},x3={rootInstructionPath:void 0,skillDir:gr,managedOutputs:{dirs:[gr],files:[]},rewriteGeneratedPath(e){return e.startsWith(`${Et}/`)?e.replace(`${Et}/`,`${gr}/`):e},mirrorGlobalPath(e,t){return fe(e,gr,t)},paths:{rulePath(){return null},commandPath(e){return `${gr}/${J(e)}/SKILL.md`},agentPath(e){return `${gr}/${V(e)}/SKILL.md`}}},T3={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"partial"},P3={rules:"none",additionalRules:"none",commands:"none",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"none",permissions:"partial"},Dg={id:Do,metadata:{displayName:"Warp",category:"cli",officialUrl:"https://www.warp.dev",shortDescription:"AI-powered terminal"},generators:b3,capabilities:T3,emptyImportMessage:"No Warp config found (WARP.md, AGENTS.md, .warp/skills, or .mcp.json).",lintRules:Ej,lint:{hooks:wj,permissions:bj,ignore:Aj},supportsConversion:{commands:true,agents:true},project:A3,globalSupport:{capabilities:P3,detectionPaths:[gr],layout:x3},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[US,Fn]},canonicalDir:Zb,canonicalRootFilename:"_root.md",markAsRoot:true},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Xi]},canonicalDir:".agentsmesh",canonicalFilename:"mcp.json"}},buildImportPaths:BS,detectionPaths:[Fn,US,Xi],conversionDefaults:{commandsToSkills:true,agentsToSkills:true}};});var Wo,jk,sa,Tj,rm,Ho,nm,om,Pj,ia,jn,sm,Uk,Dj,Nj,Bk,Kk,Wk,im,am,Su,Ng,vg,Fg,vj,vt=d(()=>{Wo="windsurf",jk=".windsurfrules",sa=".windsurf/rules",Tj=".windsurfignore",rm=".codeiumignore",Ho="AGENTS.md",nm=".windsurf/hooks.json",om=".windsurf/mcp_config.example.json",Pj=".windsurf/mcp_config.json",ia=".windsurf/workflows",jn=".windsurf/skills",sm=".agentsmesh/rules",Uk=".agentsmesh/commands",Dj=".agentsmesh/agents",Nj=".agentsmesh/skills",Bk=".agentsmesh/ignore",Kk=".agentsmesh/hooks.yaml",Wk=".agentsmesh/mcp.json",im=".codeium/windsurf/memories/global_rules.md",am=".codeium/windsurf/skills",Su=".codeium/windsurf/global_workflows",Ng=".codeium/windsurf/hooks.json",vg=".codeium/windsurf/mcp_config.json",Fg=".codeium/.codeiumignore",vj=".agents/skills";});function N3(e){let t=basename(e,".md");return t==="_root"?"root":t}function v3(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 Hk(e){let t=[],r=e.rules.find(n=>n.root);if(!r)return [];t.push({path:Ho,content:r.body.trim()});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes("windsurf"))continue;let o=N3(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?T(a,n.body.trim()||""):n.body.trim()||"";t.push({path:`${sa}/${o}.md`,content:l});let c=v3(n.globs);c&&(c!==o&&t.push({path:`${sa}/${c}.md`,content:l}),t.push({path:`${c}/AGENTS.md`,content:n.body.trim()||""}));}return t}var Fj=d(()=>{B();vt();s(N3,"ruleSlug");s(v3,"directoryScopedRuleDir");s(Hk,"generateRules");});function zk(e){return !e.ignore||e.ignore.length===0?[]:[{path:rm,content:e.ignore.join(`
|
|
150
|
+
`)}]}var Mj=d(()=>{vt();s(zk,"generateIgnore");});function Vk(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?T(r,t.body.trim()||""):t.body.trim();return {path:`${ia}/${t.name}.md`,content:n}})}var Gj=d(()=>{B();vt();s(Vk,"generateCommands");});function Jk(e){return e.agents.map(t=>({path:`${jn}/${V(t.name)}/SKILL.md`,content:$e(t)}))}var $j=d(()=>{_e();vt();s(Jk,"generateAgents");});function Yk(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:om,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}var jj=d(()=>{vt();s(Yk,"generateMcp");});function F3(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 M3(e){let t={};for(let[r,n]of Object.entries(e)){if(!Array.isArray(n))continue;let o=[];for(let i of n){if(!Yn(i))continue;let a=Je(i),l=xt(i),c=i.type==="prompt"?l||a:a||l;c&&o.push({command:c,show_output:true});}o.length>0&&(t[F3(r)]=o);}return t}function Xk(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=M3(e.hooks);return Object.keys(t).length===0?[]:[{path:nm,content:JSON.stringify({hooks:t},null,2)}]}var Uj=d(()=>{Lr();vt();s(F3,"windsurfEventName");s(M3,"toWindsurfHooks");s(Xk,"generateHooks");});function Qk(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?T(n,r.body.trim()||""):r.body.trim()||"";t.push({path:`${jn}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles)t.push({path:`${jn}/${r.name}/${i.relativePath}`,content:i.content});}return t}var Bj=d(()=>{B();vt();s(Qk,"generateSkills");});var Kj=d(()=>{Fj();Mj();Gj();$j();jj();Uj();Bj();});var Wj=d(()=>{Kj();});function Hj(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 zj(e,t,r){let n=join(e,ia),i=(await U(n)).filter(l=>l.endsWith(".md")),a=join(e,Uk);for(let l of i){let c=await k(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}=x(u),h=await Ce(p,{description:typeof f.description=="string"?f.description:"",hasDescription:Object.prototype.hasOwnProperty.call(f,"description"),allowedTools:(()=>{let _=Hj(f.allowedTools);return _.length>0?_:Hj(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:Wo,fromPath:l,toPath:`${Uk}/${m}`,feature:"commands"});}}var Vj=d(()=>{b();B();de();vt();s(Hj,"toStringArray");s(zj,"importWorkflows");});async function Jj(e,t,r,n=jn){await Hc([n],{projectRoot:e,destCanonicalSkillsDir:Nj,targetName:"windsurf",normalize:r,results:t},[zc({canonicalAgentsDir:Dj})]);}var Yj=d(()=>{Vc();vt();s(Jj,"importSkills");});async function Qj(e,t){let r=join(e,nm),n=await k(r);if(n)try{let o=JSON.parse(n);if(!o.hooks||typeof o.hooks!="object"||Array.isArray(o.hooks))return;let i=U3(o.hooks);if(Object.keys(i).length===0)return;let a=join(e,Kk);await O(dirname(a)),await L(a,stringify(i)),t.push({fromTool:Wo,fromPath:r,toPath:Kk,feature:"hooks"});}catch{}}function j3(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 U3(e){let t={};for(let[r,n]of Object.entries(e)){if(!Array.isArray(n))continue;let o=j3(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 qj(e,t){let r=[om,Pj];for(let n of r){let o=join(e,n),i=await k(o);if(i)try{let a=JSON.parse(i);if(!a.mcpServers||typeof a.mcpServers!="object")continue;let l=join(e,Wk);await O(dirname(l)),await L(l,JSON.stringify({mcpServers:a.mcpServers},null,2)),t.push({fromTool:Wo,fromPath:o,toPath:Wk,feature:"mcp"});return}catch{}}}var Zj=d(()=>{b();vt();s(Qj,"importWindsurfHooks");s(j3,"canonicalHookEventName");s(U3,"windsurfHooksToCanonical");s(qj,"importWindsurfMcp");});async function e0(e,t){let r=t?.scope??"project",n=[],o=await H(Wo,e),i=await H("codex-cli",e),a=join(e,sm),l=join(e,jk),c=await k(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:`${sm}/_root.md`,feature:"rules"});}if(c===null){let f=join(e,Ho),g=await k(f);if(g!==null){await O(a);let h=join(a,"_root.md"),_=o(i(g,f,h),f,h).trim(),S=await z(h,{root:true},_);await L(h,S),n.push({fromTool:"windsurf",fromPath:f,toPath:`${sm}/_root.md`,feature:"rules"});}}r!=="global"&&n.push(...await Se({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 _=h.replace(/\//g,"-");if(!Zd(h))return await Qn(join(a,`${_}.md`)),null;let S=join(a,`${_}.md`);return {destPath:S,toPath:`${sm}/${_}.md`,feature:"rules",content:await z(S,{root:false,globs:[`${h}/**`]},g(S))}},"mapEntry")}));let m=join(e,sa);n.push(...await Se({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:_,body:S}=x(g(h)),R={..._};return typeof R.glob=="string"&&R.glob.trim()&&(R.globs=[R.glob],delete R.glob),{destPath:h,toPath:`${sm}/${f}`,feature:"rules",content:await z(h,{...R,root:false},S)}},"mapEntry")}));let p=join(e,Tj),u=await k(p);if((u===null||!u.trim())&&(p=join(e,rm),u=await k(p)),u!==null&&u.trim()){let f=u.split(/\r?\n/),g=[];for(let h of f){let _=h.trim();_&&!_.startsWith("#")&&g.push(_);}if(g.length>0){await O(join(e,".agentsmesh"));let h=join(e,Bk);await L(h,g.join(`
|
|
151
|
+
`)),n.push({fromTool:"windsurf",fromPath:p,toPath:Bk,feature:"ignore"});}}return await zj(e,n,o),await Jj(e,n,o),await Qj(e,n),await qj(e,n),n}var t0=d(()=>{ge();b();B();de();Zt();pp();vt();Vj();Yj();Zj();s(e0,"importFromWindsurf");});function r0(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:Wo,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:Wo,message:`Windsurf cannot project these features yet: ${i.join(", ")}.`}),n}var n0=d(()=>{vt();s(r0,"lintRules");});function o0(e){return e.commands.filter(t=>t.description.length>0||t.allowedTools.length>0).map(t=>F(t.source,"windsurf","windsurf workflow files are plain Markdown; command description and allowed-tools metadata are not projected."))}function s0(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[F(".agentsmesh/mcp.json","windsurf","Windsurf MCP is partial; generated .windsurf/mcp_config.example.json is a reference artifact and may require manual setup.")]}var i0=d(()=>{Re();s(o0,"lintCommands");s(s0,"lintMcp");});function z3(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 V3,J3,Y3,X3,a0,l0=d(()=>{Wj();Ea();vt();dt();t0();n0();i0();Oe();sp();_e();s(z3,"directoryScopedRuleDir");V3={name:"windsurf",primaryRootInstructionPath:Ho,generateRules:Hk,generateCommands:Vk,generateAgents:Jk,generateSkills:Qk,generateMcp:Yk,generateHooks:Xk,generateIgnore:zk,importFrom:e0},J3={rootInstructionPath:Ho,extraRuleOutputPaths(e){if(e.root)return [Ho];let t=z3(e.globs);return t!==null?[`${t}/AGENTS.md`]:[]},skillDir:jn,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 `${sa}/${e}.md`},commandPath(e,t){return `${ia}/${e}.md`},agentPath(e,t){return os(t,"windsurf")?`.windsurf/skills/${V(e)}/SKILL.md`:null}}},Y3={rootInstructionPath:im,skillDir:am,managedOutputs:{dirs:[am,Su,vj],files:[im,Ng,vg,Fg]},rewriteGeneratedPath(e){return e===Ho?im:e.startsWith(`${sa}/`)||/\/AGENTS\.md$/.test(e)?null:e.startsWith(`${jn}/`)?e.replace(`${jn}/`,`${am}/`):e.startsWith(`${ia}/`)?e.replace(`${ia}/`,`${Su}/`):e===nm?Ng:e===om?vg:e===rm?Fg:e},mirrorGlobalPath(e,t){return fe(e,".codeium/windsurf/skills",t)},paths:{rulePath(e,t){return im},commandPath(e,t){return `${Su}/${e}.md`},agentPath(e,t){return os(t,"windsurf")?`${am}/${V(e)}/SKILL.md`:null}}},X3={rules:"native",additionalRules:"partial",commands:un("native","workflows"),agents:"embedded",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},a0={id:"windsurf",metadata:{displayName:"Windsurf",category:"ide",officialUrl:"https://windsurf.com",shortDescription:"Codeium's agentic IDE"},generators:V3,capabilities:{rules:"native",additionalRules:"native",commands:un("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:r0,lint:{commands:o0,mcp:s0},project:J3,globalSupport:{capabilities:X3,detectionPaths:[im,am,Su,Ng,vg,Fg],layout:Y3},buildImportPaths:KS,detectionPaths:[".windsurfrules",".windsurf"],nativeInstall:{pickPaths:[{prefix:".windsurf/rules",feature:"rules",strategy:{kind:"basename",suffix:".md"}}],dialectHints:[{frontmatterKey:"trigger"}]},conversionDefaults:{agentsToSkills:true}};});function c0(e){return ie(e,vo)}function m0(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:Mn,content:o}]:[]}var p0=d(()=>{oe();Be();pl();s(c0,"generateSkills");s(m0,"generateRules");});async function d0(e,t,r){let n=await k(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 Xe(e,u0,l),r.push({fromTool:"zed",fromPath:t,toPath:u0,feature:"mcp"}));}var u0,f0=d(()=>{b();hn();pl();u0=".agentsmesh/mcp.json";s(d0,"importZedMcp");});async function g0(e,t={}){let r=t.scope??"project",n=[],o=await H("zed",e,r);return n.push(...await Q(Gg,e,r,{normalize:o})),r==="project"&&await ne(e,vo,"zed",n,o),await d0(e,r==="global"?Fo:No,n),n}var h0=d(()=>{ge();oe();Ae();f0();pl();Zk();s(g0,"importFromZed");});function y0(e,t,r,n){return X(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:"zed"}))}var _0=d(()=>{Ee();pl();s(y0,"lintRules");});function S0(e){return e.hooks?Object.values(e.hooks).some(r=>Array.isArray(r)&&r.length>0)?[F(".agentsmesh/hooks.yaml","zed","Zed has no lifecycle hook system; canonical hooks are not projected.")]:[]:[]}function R0(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?[]:[F(".agentsmesh/permissions.yaml","zed","Zed permissions are managed via agent.tool_permissions in settings.json; canonical permissions are not projected.")]}function k0(e){return e.ignore.length===0?[]:[F(".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 I0=d(()=>{Re();s(S0,"lintHooks");s(R0,"lintPermissions");s(k0,"lintIgnore");});function n9(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 q3,Z3,e9,t9,r9,Gg,Zk=d(()=>{p0();h0();_0();I0();Oe();pl();q3={name:"zed",primaryRootInstructionPath:Mn,generateRules:m0,generateSkills:c0,importFrom:g0},Z3={rootInstructionPath:Mn,skillDir:vo,managedOutputs:{dirs:[vo],files:[Mn,No]},paths:{rulePath(e){return Mn},commandPath(){return null},agentPath(){return null}}},e9={rootInstructionPath:void 0,managedOutputs:{dirs:[],files:[Fo]},rewriteGeneratedPath(e){return e===No?Fo:e},paths:{rulePath(){return Fo},commandPath(){return null},agentPath(){return null}}},t9={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},r9={rules:"none",additionalRules:"none",commands:"none",agents:"none",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"};s(n9,"mergeZedSettings");Gg={id:"zed",metadata:{displayName:"Zed",category:"ide",officialUrl:"https://zed.dev",shortDescription:"Collaborative AI editor"},generators:q3,capabilities:t9,emptyImportMessage:"No Zed config found (.rules or .zed/settings.json).",lintRules:y0,lint:{hooks:S0,permissions:R0,ignore:k0},project:Z3,globalSupport:{capabilities:r9,detectionPaths:[Fo],layout:e9},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Mn],global:[]},canonicalDir:rA,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:No,content:JSON.stringify({context_servers:n},null,2)}]},mergeGeneratedOutputContent(e,t,r,n){return n===No||n===Fo?n9(e,r):null},sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:WS,detectionPaths:[Mn,No]};});var Pw={};Fy(Pw,{BUILTIN_TARGETS:()=>Pe,TARGET_IDS:()=>Ue,getBuiltinTargetDefinition:()=>nn,getEffectiveTargetSupportLevel:()=>$g,getTargetCapabilities:()=>ni,getTargetDetectionPaths:()=>tI,getTargetLayout:()=>We,getTargetManagedOutputs:()=>rI,getTargetPrimaryRootInstructionPath:()=>i9,getTargetSkillDir:()=>Ru,isBuiltinTargetId:()=>Xt,resolveTargetFeatureGenerator:()=>lm,rewriteGeneratedOutputPath:()=>nI});function s9(){return eI||(dO(Pe),eI=new Map(Pe.map(e=>[e.id,e]))),eI}function nn(e){return s9().get(e)}function ni(e,t="project"){let r=nn(e)??re(e);if(!r)return;if(t==="global"&&!r.globalSupport)return d_(o9);let n=t==="global"?r.globalSupport.capabilities:r.capabilities;return d_(n)}function tI(e,t="project"){let r=nn(e)??re(e);return r?t==="global"?r.globalSupport?.detectionPaths??[]:r.detectionPaths:[]}function We(e,t="project"){let r=nn(e)??re(e);if(r)return t==="global"?r.globalSupport?.layout:r.project}function i9(e,t="project"){return We(e,t)?.rootInstructionPath}function Ru(e,t="project"){return We(e,t)?.skillDir}function rI(e,t="project"){return We(e,t)?.managedOutputs}function nI(e,t,r="project"){let n=We(e,r);return n?n.rewriteGeneratedPath?n.rewriteGeneratedPath(t):t:null}function L0(e,t,r,n){if(!e||!r)return false;let o=ni(e.id,n)?.[t]?.level??"none";return o==="native"||o==="partial"?false:t==="commands"&&e.supportsConversion?.commands?!ic(r,e.id,true,n):t==="agents"&&e.supportsConversion?.agents?!os(r,e.id,true,n):false}function a9(e,t,r,n){return !e||!r?false:t==="commands"&&e.supportsConversion?.commands?ic(r,e.id,true,n):t==="agents"&&e.supportsConversion?.agents?os(r,e.id,true,n):false}function $g(e,t,r,n="project"){let o=ni(e,n)?.[t]?.level??"none",i=nn(e)??re(e);return n==="global"&&i&&!i.globalSupport?"none":o==="none"&&a9(i,t,r,n)?"embedded":o!=="embedded"?o:L0(i,t,r,n)?"none":o}function lm(e,t,r,n="project"){let o=nn(e)??re(e);if(!o?.generators||L0(o,t,r,n))return;let i=l9[t];return i===null?void 0:i(o.generators)}var o9,Pe,eI,l9,xe=d(()=>{sp();Ea();rt();f_();Vn();D_();HS();zS();JS();wx();QS();jT();NP();IR();AR();DR();JR();YR();XR();gk();hk();yk();_k();Lk();Ek();bk();Tk();Pk();Dk();Fk();Mk();Gk();$k();l0();Zk();o9={rules:"none",additionalRules:"none",commands:"none",agents:"none",skills:"none",mcp:"none",hooks:"none",ignore:"none",permissions:"none"},Pe=[nf,Pf,Df,Nf,Ox,vf,$T,DP,Bf,Jf,Qf,ig,ag,lg,hg,yg,_g,Sg,Ig,Lg,Eg,Og,wg,bg,xg,Tg,Pg,Dg,a0,Gg];s(s9,"builtinTargetsMap");s(nn,"getBuiltinTargetDefinition");s(ni,"getTargetCapabilities");s(tI,"getTargetDetectionPaths");s(We,"getTargetLayout");s(i9,"getTargetPrimaryRootInstructionPath");s(Ru,"getTargetSkillDir");s(rI,"getTargetManagedOutputs");s(nI,"rewriteGeneratedOutputPath");s(L0,"isFeatureSuppressedByConversion");s(a9,"isConversionUpgrading");s($g,"getEffectiveTargetSupportLevel");l9={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(lm,"resolveTargetFeatureGenerator");});function p9(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 jg(e){let t=[];for(let n of Pe){let o=0,i=0;for(let a of n.detectionPaths){if(!await j(join(e,a)))continue;let l=m9.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(p9);let r=t[0];return r.uniqueHits===0?null:r.id}var m9,C0,oI=d(()=>{b();xe();m9=(()=>{let e=new Map;for(let t of Pe)for(let r of t.detectionPaths)e.set(r,(e.get(r)??0)+1);return e})();s(p9,"compare");s(jg,"detectNativeFormat");C0=Pe.map(e=>e.detectionPaths[0]).filter(e=>e!==void 0);});async function ku(e,t){let r=re(t);if(!r)throw new Error(`No importer registered for native target: ${t}`);return r.generators.importFrom(e)}var sI=d(()=>{rt();s(ku,"importNativeToCanonical");});async function Ol(e){if(!await j(e))return false;if(await j(join(e,aI)))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,aI)))return !0}catch{return false}return false}async function Iu(e,t={}){if(!await j(e))return [];if(await j(join(e,aI))){let r=await Gd(e,t);return r?[r]:[]}return Ri(e,t)}var aI,Ug=d(()=>{b();oc();aI="SKILL.md";s(Ol,"isSkillPackLayout");s(Iu,"loadSkillsAtExtendPath");});async function Bg(e,t={}){return (await Si(e,t)).filter(n=>!Jn(basename(n.source)))}async function Kg(e,t={}){return (await _i(e,t)).filter(n=>!Jn(basename(n.source)))}async function Wg(e,t={}){return (await yi(e,t)).filter(n=>!Jn(basename(n.source)))}async function E0(e,t={}){return Ri(e,t)}var Hg=d(()=>{np();rp();tp();oc();ts();s(Bg,"importAgents");s(Kg,"importCommands");s(Wg,"importRules");s(E0,"importSkills");});function cI(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 mI(e){return e.toLowerCase().endsWith(".md")}function w0(e,t){for(let r of cI(re(e)?.importer,t))if(r.extensions.some(n=>!mI(n)))return true;return false}function S9(e,t){let r=new Set;for(let n of cI(re(e)?.importer,t))for(let o of n.extensions)mI(o)||r.add(o.toLowerCase());return r}function R9(e){return zd().filter(t=>w0(t,e))}async function L9(e,t,r){return k9[e](t,r)}async function C9(e,t,r){return I9[e](t,r)}async function E9(e,t,r,n={}){let o=cI(re(t)?.importer,r),i=await U(e),a=new Set;for(let p of o)for(let u of p.extensions)mI(u)||a.add(u.toLowerCase());let l=i.filter(p=>[...a].some(u=>p.toLowerCase().endsWith(u))&&!Jn(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 k(u);if(f===null)continue;let g=relative(e,u).replaceAll("\\","/"),h=null;for(let _ of o){if(!_.extensions.some(I=>u.toLowerCase().endsWith(I.toLowerCase())))continue;let R=await _.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 L9(r,c,n),cleanup:m}}catch(p){throw await m(),p}}async function pI(e,t,r={}){let n=r.restrictToTarget,o=n?w0(n,t)?[n]:[]:R9(t),i=new Set;for(let f of o)for(let g of S9(f,t))i.add(g);let a=await C9(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 E9(e,f,t,r.parseOpts??{});l.push(g.cleanup);for(let h of g.entities){let _=c(h);m.has(_)||m.set(_,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 zg(e,t={}){let r=await pI(e,"commands",t);return {commands:[...r.entities],cleanup:r.cleanup}}async function Vg(e,t={}){let r=await pI(e,"rules",t);return {rules:[...r.entities],cleanup:r.cleanup}}async function Jg(e,t={}){let r=await pI(e,"agents",t);return {agents:[...r.entities],cleanup:r.cleanup}}var k9,I9,Yg=d(()=>{np();rp();tp();b();rt();ts();Hg();s(cI,"directorySpecsFor");s(mI,"isMarkdownExtension");s(w0,"hasNonMdEntityMapper");s(S9,"nonMdEntityExtensions");s(R9,"targetsWithNonMdEntityMapper");k9={rules:yi,commands:_i,agents:Si},I9={rules:Wg,commands:Kg,agents:Bg};s(L9,"parseEntityDir");s(C9,"importEntities");s(E9,"readToolNativeEntities");s(pI,"readEntityDirWithMappers");s(zg,"readCommandsDirWithMappers");s(Vg,"readRulesDirWithMappers");s(Jg,"readAgentsDirWithMappers");});function b9(){return {rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}function A9(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 Xg(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 fI(e,t){if(basename(e)===t)return e;let r=join(e,t);return await j(r)?r:null}async function x9(e,t,r){let n=s(async()=>{},"noop"),o=await fI(e,"rules");if(!o)return {rules:[],cleanup:n};if(!r)return {rules:await Wg(o,t),cleanup:n};let i=await Vg(o,{parseOpts:t});return {rules:[...i.rules],cleanup:i.cleanup}}async function T9(e,t,r){let n=s(async()=>{},"noop"),o=await fI(e,"commands");if(!o)return {commands:[],cleanup:n};if(!r)return {commands:await Kg(o,t),cleanup:n};let i=await zg(o,{parseOpts:t});return {commands:[...i.commands],cleanup:i.cleanup}}async function P9(e,t,r){let n=s(async()=>{},"noop"),o=await fI(e,"agents");if(!o)return {agents:[],cleanup:n};if(!r)return {agents:await Bg(o,t),cleanup:n};let i=await Jg(o,{parseOpts:t});return {agents:[...i.agents],cleanup:i.cleanup}}async function D9(e,t){if(await Ol(e))return Iu(e,t);let r=join(e,"skills");return await Ol(r)?Iu(r,t):[]}async function Qg(e,t={}){let r=s(async()=>{},"noop"),n=join(e,".agentsmesh");if(await j(n))return {canonical:await jt(e,t),cleanup:r};let o=t.enableTargetEntityMappers??false,i=b9(),a=await x9(e,t,o);i.rules=a.rules;let l=await T9(e,t,o);i.commands=l.commands;let c=await P9(e,t,o);i.agents=c.agents,i.skills=await D9(e,t);let m=s(async()=>{await Promise.allSettled([a.cleanup(),l.cleanup(),c.cleanup()]);},"mergedCleanup");if(A9(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 gI=d(()=>{b();Hg();Yg();Ca();Ug();s(b9,"emptyCanonical");s(A9,"isCanonicalSliceEmpty");s(Xg,"normalizeSlicePath");s(fI,"resolveEntityDir");s(x9,"parseRulesAt");s(T9,"parseCommandsAt");s(P9,"parseAgentsAt");s(D9,"loadSkillsForPartialSlice");s(Qg,"loadCanonicalSliceAtPath");});async function qg(e){let t=await k(e);if(!t)return "";let r=ln(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 b0(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 !(ZE(o)||!n.includes("/")&&(Fd(n)||eO(n)))},"filter")});}var hI=d(()=>{b();B();ts();s(qg,"readSkillFrontmatterName");s(b0,"cpFilteredSkill");});function yI(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):typeof e=="string"?e?[e]:[]:[]}function F9(e){let t={...e},r=e.alwaysApply===true;if(t.root=r,delete t.alwaysApply,!r){let n=yI(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 M9(e){let t={...e};return t.trigger==="always"&&(t.trigger="always_on"),typeof t.glob=="string"&&(t.globs=yI(t.globs).length>0?yI(t.globs):[t.glob],delete t.glob),t}function _I(e){let t=ln(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=F9(r):"trigger"in r||"glob"in r?o=M9(r):o=r,T(o,n.trim())}var A0=d(()=>{B();s(yI,"toStrArray");s(F9,"normalizeCursorKeys");s(M9,"normalizeWindsurfKeys");s(_I,"normalizeMdcToCanonical");});function SI(e){return e.toLowerCase().replace(/[^a-z0-9.-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}function RI(e){return e.toLowerCase().endsWith(".mdc")?basename(e).replace(/\.mdc$/i,".md"):basename(e)}function T0(e,t,r){let o=relative(e,t).replace(/\\/g,"/").split("/");if(o.pop(),o.length===0)return r;let i=SI(o[o.length-1]);return i?`${i}-${r}`:r}var P0=d(()=>{s(SI,"sanitizeNameSegment");s(RI,"computeDestName");s(T0,"namespacedName");});async function B9(){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 F0(e,t){let r=e.toLowerCase();return !!(r.endsWith(".md")||t&&r.endsWith(".mdc"))}async function K9(e,t,r){if(!F0(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 k(e);if(!n)return;let o=basename(e).replace(/\.mdc$/i,".md");await writeFile(join(t,o),_I(n));}else await cp$1(e,join(t,basename(e)));}async function W9(e,t,r){if((await stat(e)).isFile())return K9(e,t,r);let o=(await U(e)).filter(l=>F0(l,r)&&!Jn(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=RI(l);i.set(c,(i.get(c)??0)+1);}let a=new Map;await O(t);for(let l of o){let c=RI(l),p=(i.get(c)??0)>1?T0(e,l,c):c;if(a.has(p)&&a.get(p)!==l){let f=relative(e,l).replace(/\\/g,"/").split("/").map(SI).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 k(l);if(!f)continue;await writeFile(join(t,p),_I(f));}else await cp$1(l,join(t,p));}}async function D0(e,t,r){if(r.length===0)return false;let n=new Set(r),o=new Map;for(let i of await U(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 H9(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 Ol(e)){if((await stat(join(e,"SKILL.md")).catch(()=>null))?.isFile()){if(await D0(e,t,r.preferredSkillNames??[]))return;let l=await qg(join(e,"SKILL.md"))||basename(e),c=join(t,l);await O(t),await b0(e,c);return}if(await D0(e,t,r.preferredSkillNames??[]))return;await O(t);let o=await U(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 eh(e,t,r={}){let n=await B9();try{let o=join(n.discoveryRoot,".agentsmesh",t);return t==="skills"?await H9(e,o,r):await W9(e,o,t==="rules"),n}catch(o){throw await n.cleanup(),o}}var II=d(()=>{b();Ug();hI();ts();A0();P0();s(B9,"createStageRoot");s(F0,"isAcceptedFile");s(K9,"stageSingleFile");s(W9,"stageMarkdownCollection");s(D0,"stagePreferredSkills");s(H9,"stageSkills");s(eh,"stageManualInstallScope");});function z9(){return {rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}async function M0(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 eh(o,e.as);try{return jt(join(i.discoveryRoot,".agentsmesh"))}finally{await i.cleanup();}}if(!e.path){let o=join(t,".agentsmesh");if(!await j(o)){if(await Ol(t)){let a=await Iu(t);return {...z9(),skills:a}}let i=e.target??await jg(t);if(!i)throw new Error(`Extend "${e.name}": No supported agent configuration found in ${t}.
|
|
152
|
+
Expected one of: .agentsmesh/, ${C0.join(", ")}.`);y.info(`[agentsmesh] Extend "${e.name}": ${e.target?"specified":"detected"} ${i} format, importing to .agentsmesh/...`),await ku(t,i);}return jt(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)||(y.info(`[agentsmesh] Extend "${e.name}": path "${e.path}" with target "${e.target}" \u2014 importing at extend root, then loading canonical.`),await ku(t,e.target)),jt(t)}let{sliceRoot:n}=await Xg(r);try{let{canonical:o}=await Qg(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 G0=d(()=>{oI();b();se();Ca();sI();Ug();gI();II();s(z9,"emptyCanonical");s(M0,"loadCanonicalForExtend");});function th(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)||y.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)||y.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)||y.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)||y.warn(`[agentsmesh] pick name "${c}" not found in rules from extend "${n}".`);}return o}var LI=d(()=>{se();s(th,"applyExtendPick");});var Y9,cm,rh=d(()=>{Y9=["rules","commands","agents","skills"],cm=z$1.enum(Y9);});var X9,$0,j0=d(()=>{qo();rh();X9=z$1.enum(["github","gitlab","git","local"]),$0=z$1.object({name:z$1.string().min(1),source:z$1.string().min(1),version:z$1.string().optional(),source_kind:X9,installed_at:z$1.string(),updated_at:z$1.string(),features:z$1.array(ql).min(1),pick:Ym.optional(),target:Ir.optional(),path:z$1.string().optional(),paths:z$1.array(z$1.string().min(1)).min(1).optional(),as:cm.optional(),content_hash:z$1.string(),license:z$1.string().nullable().optional()});});function U0(e){let t=ka(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 q9(e,t){return t?e.length===t.length&&[...e].sort().every((r,n)=>r===[...t].sort()[n]):true}async function aa(e){let t=join(e,"pack.yaml"),r=await k(t);if(r===null)return null;try{let n=parse(r);return $0.parse(n)}catch{return null}}async function K0(e,t,r){if(!await j(e))return null;let n=U0(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 aa(a);if(l&&U0(l.source)===n&&l.target===r.target&&l.as===r.as&&q9(l.features,r.features))return {meta:l,packDir:a,name:l.name}}return null}async function nh(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 aa(o);i&&r.push({meta:i,packDir:o,name:i.name});}return r}var mm=d(()=>{b();j0();Ia();s(U0,"sourceIdentity");s(q9,"sameFeatures");s(aa,"readPackMetadata");s(K0,"findExistingPack");s(nh,"listPacks");});function W0(){return {rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}async function Z9(e){let[t,r,n,o,i,a,l,c]=await Promise.all([yi(join(e,"rules")),_i(join(e,"commands")),Si(join(e,"agents")),Ri(join(e,"skills")),cn(join(e,"mcp.json")),$d(join(e,"permissions.yaml")),jd(join(e,"hooks.yaml")),Ud(join(e,"ignore"))]);return {...W0(),rules:t,commands:r,agents:n,skills:o,mcp:i,permissions:a,hooks:l,ignore:c}}async function H0(e){let t=join(e,"packs"),r=await nh(t),n=W0();for(let{meta:o,packDir:i}of r){let a=await Z9(i),l=EI(a,o.features),c=th(l,o.features,o.pick,o.name);n=sc(n,c);}return n}var z0=d(()=>{tp();rp();np();oc();op();s_();a_();l_();m_();zo();LI();mm();s(W0,"emptyCanonical");s(Z9,"loadPackCanonical");s(H0,"loadPacksCanonical");});function EI(e,t){if(t.length===0)return V0();let r=new Set(t.flatMap(n=>t4[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 V0(){return {rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}async function Mt(e,t,r={},n=join(t,".agentsmesh")){let o=await tc(e,t,{refreshCache:r.refreshRemoteCache===true}),i=V0();for(let c of o){let m=await M0(c),p=EI(m,c.features),u=th(p,c.features,c.pick,c.name);i=sc(i,u);}let a=await H0(n);i=sc(i,a);let l=await jt(n);return i=sc(i,l),{canonical:i,resolvedExtends:o}}var t4,zo=d(()=>{Pd();Ca();m_();G0();LI();z0();t4={rules:["rules"],commands:["commands"],agents:["agents"],skills:["skills"],mcp:["mcp"],permissions:["permissions"],hooks:["hooks"],ignore:["ignore"]};s(EI,"filterCanonicalByFeatures");s(V0,"emptyCanonical");s(Mt,"loadCanonicalWithExtends");});function Z4(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 e5(e){return e.startsWith("file:")||e.startsWith("./")||e.startsWith("../")||e.startsWith("/")||/^[A-Za-z]:[/\\]/.test(e)}function OU(e){try{return realpathSync(e)}catch{return e}}function wU(e,t){let r=OU(resolve(t)),n=OU(e);if(!(n===r||n.startsWith(`${r}${sep}`)))throw new Error(`Plugin source resolves outside project root (escapes ${r}): ${n}`)}async function t5(e,t){let{source:r}=e,n;if(e5(r)){let i=r.startsWith("file:")?fileURLToPath(r):r,a=resolve(t,i);wU(a,t),n=pathToFileURL(a).href;}else {let i=Z4(r,t);wU(i,t),n=pathToFileURL(i).href;}return await import(n)}function r5(e){return "descriptor"in e?[e.descriptor]:"descriptors"in e&&Array.isArray(e.descriptors)?e.descriptors:"default"in e?[e.default]:[]}async function hh(e,t){let r;try{r=await t5(e,t);}catch(i){throw new Error(`Plugin '${e.source}' failed to import: ${i instanceof Error?i.message:String(i)}`,{cause:i})}let n=r5(r),o=[];for(let i of n)try{let a=Bd(i);Wd(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 bU(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 hh(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):(y.warn(c),null)}}))).filter(a=>a!==null);if(i.length>0){let a=i.map(l=>` - ${l.message}`).join(`
|
|
153
153
|
`);throw new Error(`agentsmesh: ${i.length} plugin(s) failed strict load:
|
|
154
|
-
${a}`)}return r}var
|
|
155
|
-
`)}var
|
|
154
|
+
${a}`)}return r}var MI=d(()=>{p_();rt();se();s(Z4,"resolveNpmSpecifier");s(e5,"isLocalSource");s(OU,"canonicalize");s(wU,"assertSourceInsideProjectRoot");s(t5,"importPluginModule");s(r5,"extractDescriptors");s(hh,"loadPlugin");s(bU,"loadAllPlugins");});async function ze(e,t){e.plugins.length!==0&&await bU(e.plugins,t);}var sn=d(()=>{MI();s(ze,"bootstrapPlugins");});function jI(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=E5(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]=$g(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]=$g(u,"additionalRules",e,r);n.push({feature:`additional rules (${m.length})`,count:m.length,support:p});}}}return n}function E5(e){if(!e)return 0;let t=0;for(let r of Object.values(e))Array.isArray(r)&&(t+=r.length);return t}var MU=d(()=>{xe();s(jI,"buildCompatibilityMatrix");s(E5,"countHooks");});function GU(e){return O5[e]??e}var O5,$U=d(()=>{O5={"claude-code":"Claude"};s(GU,"matrixColumnLabel");});function jU(e){return Object.fromEntries(w5.map(t=>[t,Object.fromEntries(Ue.map(r=>{let o=ni(r,e)?.[t];return [r,o??{level:"none"}]}))]))}function b5(e,t){return Wl()?`${e}${t}${Ou.reset}`:t}function BU(e){let t=UI[e];return b5(A5[e],t)}var w5,UU,UI,Ou,A5,BI=d(()=>{Vn();xe();hd();w5=["rules","additionalRules","commands","agents","skills","mcp","hooks","ignore","permissions"];s(jU,"buildSupportMatrix");UU=jU("project"),jU("global"),UI={native:"\u2713",embedded:"\u25C6",partial:"\u25D0",none:"\u2013"},Ou={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(b5,"colorize");A5={native:Ou.green,embedded:Ou.blue,partial:Ou.yellow,none:Ou.dim};s(BU,"coloredSymbol");});function KI(e,t){let r=Wl(),n={cyan:"\x1B[36m",magenta:"\x1B[35m",bold:"\x1B[1m",dim:"\x1B[2m",green:"\x1B[32m",blue:"\x1B[34m",yellow:"\x1B[33m",reset:"\x1B[0m"},o=s((G,Y)=>r?`${G}${Y}${n.reset}`:Y,"c"),i=s(G=>G.replace(/\u001b\[[0-9;]*m/g,"").length,"visibleLength"),a=s((G,Y)=>{let ee=i(G),M=Math.max(0,Y-ee);return G+" ".repeat(M)},"padWithColor"),l=Math.max(12,...t.map(G=>G.length)),c=t.map(G=>GU(G)),m=Math.max(8,l),p=Math.max(12,...e.map(G=>G.feature.length)),u=s(G=>o(n.dim,"\u250C"+G.map(Y=>"\u2500".repeat(Y)).join("\u252C")+"\u2510"),"border"),f=s(G=>o(n.dim,"\u251C"+G.map(Y=>"\u2500".repeat(Y)).join("\u253C")+"\u2524"),"sep"),g=s(G=>o(n.dim,"\u2514"+G.map(Y=>"\u2500".repeat(Y)).join("\u2534")+"\u2518"),"bottom"),h=[p,...t.map(()=>m)],_=u(h),S=[a(o(n.bold+n.cyan,"Feature"),p),...c.map(G=>a(o(n.bold+n.magenta,G),m))],R=o(n.dim,"\u2502")+S.join(o(n.dim,"\u2502"))+o(n.dim,"\u2502"),I=f(h),w=e.map(G=>{let Y=[a(o(n.cyan,G.feature),p)];for(let ee of t){let M=G.support[ee]??"none",te=r?BU(M):UI[M];Y.push(a(` ${te} `,m));}return o(n.dim,"\u2502")+Y.join(o(n.dim,"\u2502"))+o(n.dim,"\u2502")}),D=g(h),P=[_,R,I,...w,D];P.push("");let K=[o(n.green,"\u2713")+" = native",o(n.blue,"\u25C6")+" = embedded",o(n.yellow,"\u25D0")+" = partial",o(n.dim,"\u2013")+" = not supported"];return P.push(o(n.bold,"Legend: ")+K.join(" ")),P.join(`
|
|
155
|
+
`)}var KU=d(()=>{$U();BI();hd();s(KI,"formatMatrix");});function HI(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?"":`
|
|
156
156
|
Per-file details:
|
|
157
157
|
`+t.join(`
|
|
158
158
|
`)+`
|
|
159
|
-
`}var
|
|
159
|
+
`}var WU=d(()=>{s(HI,"formatVerboseDetails");});var zI=d(()=>{MU();KU();WU();});var VI={};Fy(VI,{runMatrix:()=>wu});async function wu(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 ye(r,n);await ze(a,r);let{canonical:c}=await Mt(a,l.configDir,{},l.canonicalDir),m=i??[...a.targets,...a.pluginTargets??[]],p=jI(a,c,n),u=HI(c);return {exitCode:0,data:{targets:m,features:p.map(f=>({name:f.feature,support:f.support}))},verboseDetails:u||void 0}}var bu=d(()=>{tt();zo();zI();sn();s(wu,"runMatrix");});var JI={};Fy(JI,{renderMatrix:()=>Au});function Au(e,t){if(e.data.features.length===0){y.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=KI(r,e.data.targets);process.stdout.write(n),process.stdout.write(`
|
|
160
160
|
`),t?.verbose&&e.verboseDetails&&(process.stdout.write(e.verboseDetails),process.stdout.write(`
|
|
161
|
-
`));}var
|
|
161
|
+
`));}var xu=d(()=>{se();zI();s(Au,"renderMatrix");});function QC(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(QC,"createRouter");se();var fi={query:{usage:"agentsmesh lessons query [--file <path>] [--cmd <command>] [--keyword <text>] [--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 "..."]',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"}},tE=Object.keys(fi);function _d(){let e=fi.add;return `
|
|
162
162
|
Usage: ${e.usage}
|
|
163
|
-
Example: ${e.example}`}s(zu,"lessonsAddHint");var Vu=[{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)"}],py=[{name:"init",usage:"agentsmesh init [flags]",description:"Create agentsmesh.yaml, agentsmesh.local.yaml, and canonical .agentsmesh scaffold",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: ${yC.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 Ll(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(`
|
|
164
|
-
`)}s(
|
|
163
|
+
Example: ${e.example}`}s(_d,"lessonsAddHint");var Sd=[{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)"}],My=[{name:"init",usage:"agentsmesh init [flags]",description:"Create agentsmesh.yaml, agentsmesh.local.yaml, and canonical .agentsmesh scaffold",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: ${tE.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 Vl(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(`
|
|
164
|
+
`)}s(Vl,"formatFlags");function Gy(){let e=My.map(t=>`- ${t.name.padEnd(8)} ${t.description}
|
|
165
165
|
Usage: ${t.usage}
|
|
166
|
-
${
|
|
166
|
+
${Vl(t.flags)}`).join(`
|
|
167
167
|
|
|
168
168
|
`);y.info(`agentsmesh <command> [flags]
|
|
169
169
|
|
|
170
170
|
Global flags:
|
|
171
|
-
${
|
|
171
|
+
${Vl(Sd)}
|
|
172
172
|
|
|
173
173
|
Commands:
|
|
174
174
|
${e}
|
|
175
175
|
|
|
176
|
-
Tip: run "agentsmesh <command> --help" for this same command reference.`);}s(
|
|
176
|
+
Tip: run "agentsmesh <command> --help" for this same command reference.`);}s(Gy,"printHelp");function Rd(e,t=[]){let r=My.find(o=>o.name===e);if(!r){Gy();return}let n=t[0];if(e==="lessons"&&n!==void 0&&n.length>0){SV(r,n);return}y.info(`${r.usage}
|
|
177
177
|
|
|
178
178
|
${r.description}
|
|
179
179
|
|
|
180
180
|
Command flags:
|
|
181
|
-
${
|
|
181
|
+
${Vl(r.flags)}
|
|
182
182
|
|
|
183
183
|
Global flags:
|
|
184
|
-
${
|
|
184
|
+
${Vl(Sd)}`);}s(Rd,"printCommandHelp");function SV(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=fi[t],o=n?.example!==void 0?`
|
|
185
185
|
|
|
186
186
|
Example:
|
|
187
187
|
${n.example}`:"";y.info(`${n?.usage??`agentsmesh lessons ${t} [flags]`}
|
|
188
188
|
|
|
189
189
|
Command flags:
|
|
190
|
-
${
|
|
190
|
+
${Vl(r)}
|
|
191
191
|
|
|
192
192
|
Global flags:
|
|
193
|
-
${
|
|
194
|
-
`);}s(
|
|
195
|
-
`);}s(
|
|
196
|
-
`):y.error(e.message),process.exit(r);}s(
|
|
193
|
+
${Vl(Sd)}${o}`);}s(SV,"printLessonsSubcommandHelp");var kd;function LV(){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(LV,"readPackageVersion");function CV(){if(typeof __AGENTSMESH_VERSION__<"u")return __AGENTSMESH_VERSION__;let e=globalThis.__AGENTSMESH_VERSION__;return typeof e=="string"?e:"unknown"}s(CV,"getVersionFallback");function _a(){return kd||(kd=LV()??CV(),kd)}s(_a,"getVersion");function nE(){process.stdout.write(`agentsmesh v${_a()}
|
|
194
|
+
`);}s(nE,"printVersion");se();function Jl(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)+`
|
|
195
|
+
`);}s(Jl,"emitJson");var Hn=class extends Error{static{s(this,"CliUsageError");}constructor(t){super(t),this.name="CliUsageError";}};function oE(e,t){let r=e instanceof Hn?2:1;if(t?.json)return Jl(t.command??"unknown",{success:false,error:e.message}),process.exit(r);t?.verbose&&e.stack?process.stderr.write(e.stack+`
|
|
196
|
+
`):y.error(e.message),process.exit(r);}s(oE,"handleError");se();function at(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`;Jl(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(at,"handleResult");tt();zo();b();Cd();function sh(e){return createHash("sha256").update(e,"utf8").digest("hex")}s(sh,"hashContent");async function ih(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(ih,"hashFile");async function ah(e){try{if(!Id(e)){let r=await readFile(e);return createHash("sha256").update(r).digest("hex")}let t=await readFile(e,"utf-8");return t.startsWith(Ql)&&(t=t.slice(Ql.length)),t=Ld(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(ah,"hashFileForManifest");mm();var bI=".lock",s4=[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 i4(e){return e.startsWith("packs/")?false:s4.some(t=>t(e))}s(i4,"isCanonical");var a4={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 lh(e){let t=join(e,bI),r=await k(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(lh,"readLock");async function ch(e,t){let r=join(e,bI),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.
|
|
197
197
|
# Tracks the state of all config files for team conflict resolution.
|
|
198
198
|
|
|
199
|
-
`+stringify(n);await L(r,o);}s(
|
|
200
|
-
`),a=
|
|
199
|
+
`+stringify(n);await L(r,o);}s(ch,"writeLock");async function ii(e){if(!await j(e))return {};let t=await gi(e),r={};for(let n of t){let o=relative(e,n).replace(/\\/g,"/");if(o===bI||!i4(o))continue;let i=await ih(n);i!==null&&(r[o]=i.startsWith("sha256:")?i:`sha256:${i}`);}return r}s(ii,"buildChecksums");function mh(e,t,r){if(r.length===0)return [];let n=r.map(a=>a4[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(mh,"detectLockedFeatureViolations");async function ph(e){let t=await nh(e),r={};for(let{meta:n}of t)r[n.name]=n.content_hash;return r}s(ph,"buildPackChecksums");async function pm(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 ii(n),i=Object.keys(o).sort().map(c=>`${c}:${o[c]}`).join(`
|
|
200
|
+
`),a=sh(i),l=a.startsWith("sha256:")?a:`sha256:${a}`;t[r.name]=`local:${l}`;}return t}s(pm,"buildExtendChecksums");xe();rt();function um(e){return e?(e.outputFamilies??[]).filter(t=>t.kind==="additional").flatMap(t=>[...t.explicitPaths??[]]):[]}s(um,"getAdditionalRootDecorationPaths");function J0(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(J0,"resolveRewriteFamilyId");Rt();A_();function l4(e,t,r){e.set(t,r),e.set(`${t}/`,`${r}/`);}s(l4,"addDirectoryMapping");function Y0(e,t,r){let n=posix.dirname(t),o=posix.dirname(r);for(;n!==".agentsmesh/skills"&&n!==".";)l4(e,n,o),n=posix.dirname(n),o=posix.dirname(o);}s(Y0,"addSkillDirectoryMappings");xe();function X0(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(X0,"ruleTargetPath");function Q0(e,t,r,n="project"){let o=We(e,n);return o?o.paths.commandPath(t,r):null}s(Q0,"commandTargetPath");function q0(e,t,r,n="project"){let o=We(e,n);return o?o.paths.agentPath(t,r):null}s(q0,"agentTargetPath");nt();ot();vt();xe();function p4(e,t,r){e.set(t,r),e.set(`${t}/`,`${r}/`);}s(p4,"addDirectoryMapping");function AI(e,t,r,n="project"){let o=new Map;for(let a of t.rules){let l=X0(e,a,n);l&&o.set(`.agentsmesh/rules/${basename(a.source)}`,l);}for(let a of t.commands){let l=Q0(e,a.name,r,n);l&&o.set(`.agentsmesh/commands/${a.name}.md`,l);}for(let a of t.agents){let l=q0(e,a.name,r,n);l&&o.set(`.agentsmesh/agents/${a.name}.md`,l);}let i=Ru(e,n);if(!i)return o;for(let a of t.skills){p4(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),Y0(o,m,p);}}return o}s(AI,"buildReferenceMap");Rt();Rt();xe();function eU(e,t,r,n){let o=n.normalize(t),i=n.normalize(r);e.set(o,i),e.set(`${o}/`,`${i}/`);}s(eU,"addPackAbsoluteDirMapping");function u4(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(u4,"skillSupportingDirPrefixes");function tU(e,t,r,n,o){let i=Ru(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));eU(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 u4(c.supportingFiles))eU(e,a.join(m,u),a.join(p,u),a);}}s(tU,"addPackSkillArtifactMappings");Rt();function d4(e){return `.agentsmesh/rules/${basename(e.source)}`}s(d4,"canonicalRulePath");function f4(e){return `.github/instructions/${basename(e.source,".md")}.instructions.md`}s(f4,"copilotInstructionsPath");function nU(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,d4(a))),i.normalize(i.join(r,f4(a))));}s(nU,"applyCopilotInstructionArtifactRefs");xe();function xI(e,t){t!==void 0&&t.length>0&&!e.includes(t)&&e.push(t);}s(xI,"pushUnique");function oU(e,t,r,n){let o=[],i=r.get(`.agentsmesh/rules/${basename(t.source)}`);xI(o,i);let a=We(e,n);if(t.root)for(let l of um(a))xI(o,l);for(let l of a?.extraRuleOutputPaths?.(t,{refs:r,scope:n})??[])xI(o,l);return o}s(oU,"extraRuleOutputPaths");xe();function sU(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(sU,"addSkillMirrorSourceEntry");function h4(e){return `.agentsmesh/commands/${e.name}.md`}s(h4,"canonicalCommandPath");function y4(e){return `.agentsmesh/agents/${e.name}.md`}s(y4,"canonicalAgentPath");function _4(e){return `.agentsmesh/skills/${e.name}/SKILL.md`}s(_4,"canonicalSkillPath");function iU(e,t,r,n,o,i){let a=i?.scope??"project",l=ce(n),c=new Map([...AI(e,t,r,a)].map(([m,p])=>[l.normalize(l.join(n,m)),l.normalize(l.join(n,p))]));return nU(e,c,n,o,t),tU(c,e,t,n,a),c}s(iU,"buildArtifactPathMap");function aU(e,t,r,n="project",o){let i=AI(e,t,r,n),a=new Map;for(let l of t.rules)for(let c of oU(e,l,i,n))a.set(c,l.source);for(let l of t.commands){let c=i.get(h4(l));c&&a.set(c,l.source);}for(let l of t.agents){let c=i.get(y4(l));c&&a.set(c,l.source);}for(let l of t.skills){let c=i.get(_4(l));c&&(a.set(c,l.source),sU(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),sU(e,n,u,m.absolutePath,a,o));}}return a}s(aU,"buildOutputSourceMap");xe();rt();f_();function k4(e,t){if(!t)return null;for(let r of t){let n=re(r);if(n?.sharedArtifacts){for(let[o,i]of Object.entries(n.sharedArtifacts))if(i==="owner"&&e.startsWith(o))return r}}return null}s(k4,"findSharedArtifactOwner");function lU(e,t,r){if(t==="global"){let n=k4(e.path,r);if(n)return n;let o=uO(e.path);if(o)return o}return e.target}s(lU,"artifactMapTargetForResult");function I4(e,t){return `${e}\0${(t??[]).join(",")}`}s(I4,"sourceMapCacheKey");function TI(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(TI,"collectPlannedPaths");function L4(e,t,r){let n=We(e.target,t),o=J0(n,e.path);if(o!=="default")return `${e.target}:${o}`;let i=lU(e,t,r);return i===e.target?e.target:`${e.target}~via~${i}`}s(L4,"artifactCacheKey");function cU(e,t,r,n,o="project",i,a){let l=TI(n,e),c=new Map,m=new Map;return e.map(p=>{if(a?.has(p.path))return p;let u=I4(p.target,i),g=(m.get(u)??(()=>{let I=aU(p.target,t,r,o,i);return m.set(u,I),I})()).get(p.path);if(!g)return p;let h=lU(p,o,i),_=L4(p,o,i),S=c.get(_)??(()=>{let I=iU(h,t,r,n,p.path,{scope:o});return c.set(_,I),I})(),R=rf({content:p.content,projectRoot:n,sourceFile:g,destinationFile:ce(n).join(n,p.path),translatePath:s(I=>S.get(I)??I,"translatePath"),pathExists:s(I=>l.has(I)||existsSync(I),"pathExists"),explicitCurrentDirLinks:true,rewriteBarePathTokens:true,scope:o,pathIsDirectory:s(I=>{try{return statSync(I).isDirectory()}catch{return false}},"pathIsDirectory")});return R.content===p.content?p:{...p,content:R.content}})}s(cU,"rewriteGeneratedReferences");Rt();Ii();se();var E4=/!?\[[^\]]*\]\(([^)]+)\)/g,O4=/^\s*\[[^\]\n]+\]:\s*(?:<([^>\n]*)>|(\S+))/gm;function w4(e){return e.endsWith(".md")||e.endsWith(".mdc")}s(w4,"isMarkdownLikeOutput");function b4(e,t){return t.some(([r,n])=>e>=r&&e<n)}s(b4,"isOffsetInRanges");function A4(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(A4,"parseMarkdownLinkDestination");function x4(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(x4,"shouldSkipLocalValidation");function T4(e){return /(?:^|\/)[^/]+\/skills\/[^/]+\//.test(e)}s(T4,"isSkillGeneratedOutput");var P4={rules:"rules",steering:"rules",commands:"commands",agents:"agents",skills:"skills",droids:"agents",instructions:"rules",prompts:"commands"},D4={".clinerules":"rules"},N4=[".agent.md",".instructions.md",".prompt.md"];function mU(e){for(let t of N4)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(mU,"stripMarkdownExt");function v4(e){let t=/^[^/]+\/([^/]+)\/([^/]+)/.exec(e);if(t){let n=P4[t[1]??""];if(n){let o=t[2]??"";return n!=="skills"&&(o=mU(o)),`${n}/${o}`}}let r=/^([^/]+)\/([^/]+)/.exec(e);if(r){let n=D4[r[1]??""];if(n)return `${n}/${mU(r[2]??"")}`}return null}s(v4,"canonicalKeyFromOutputPath");function F4(e,t){if(t.has(e))return true;try{let r=statSync(e);return r.isFile()||r.isDirectory()}catch{return false}}s(F4,"pathExistsForGenerate");function M4(e,t,r){let o=A4(e).split("#")[0]??"",{candidate:i}=uc(o),a=i,l=dc.exec(a);l&&(a=a.slice(0,l.index));let c;try{c=decodeURIComponent(a);}catch{c=a;}if(x4(c,t))return [];let m=dp(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 fp(t,u)){let g=q(t,f);p.includes(g)||p.push(g);}return p}s(M4,"resolveMarkdownLinkTargets");function G4(e,t){let r=TI(t,e),n=[];for(let o of e){if(!w4(o.path))continue;let i=q(t,ce(t).join(t,o.path)),a=tf(o.content),l=s((c,m)=>{if(b4(m,a))return;let p=M4(c,t,i);p.length!==0&&(p.some(u=>F4(u,r))||n.push({generatePath:o.path,target:o.target,rawLink:c.trim(),checkedPaths:p}));},"visitDestination");for(let c of o.content.matchAll(E4)){let m=c[1];m!==void 0&&l(m,c.index??0);}for(let c of o.content.matchAll(O4)){let m=(c[1]??c[2]??"").trim();m&&l(m,c.index??0);}}return n}s(G4,"findBrokenMarkdownLinks");function pU(e,t,r={}){let n=G4(e,t);if(n.length===0)return;let o=r.packOriginatedKeys,i=[],a=[];for(let c of n){let m=v4(c.generatePath),p=o!==void 0&&m!==null&&o.has(m);T4(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`);y.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):
|
|
201
201
|
${c.join(`
|
|
202
202
|
`)}`);}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:
|
|
203
203
|
${l.join(`
|
|
204
204
|
`)}
|
|
205
|
-
Fix canonical sources or generators so every local link targets an existing file or folder.`)}s(
|
|
205
|
+
Fix canonical sources or generators so every local link targets an existing file or folder.`)}s(pU,"validateGeneratedMarkdownLinks");var $4=[`${sep}.agentsmesh${sep}packs${sep}`,"/.agentsmesh/packs/"];function dh(e){return $4.some(t=>e.includes(t))}s(dh,"isUnderPacks");function uU(e){let t=new Set;for(let r of e.rules)if(dh(r.source)){let n=r.root?"_root":j4(r.source);n&&t.add(`rules/${n}`);}for(let r of e.agents)dh(r.source)&&t.add(`agents/${r.name}`);for(let r of e.commands)dh(r.source)&&t.add(`commands/${r.name}`);for(let r of e.skills)dh(r.source)&&t.add(`skills/${r.name}`);return t}s(uU,"buildPackOriginatedKeys");function j4(e){let r=e.replace(/\\/g,"/").split("/").pop()??"";return r.endsWith(".md")?r.slice(0,-3):r}s(j4,"ruleNameFromSource");Vn();var hU="AGENTS.md";function dU(e){switch(e){case "created":return 3;case "updated":return 2;case "unchanged":return 1;case "skipped":return 0}}s(dU,"statusRank");function U4(e,t){return dU(t.status)<=dU(e.status)?e:{...e,status:t.status,currentContent:t.currentContent??e.currentContent}}s(U4,"mergeDuplicateMetadata");function fh(e){return e.trim()}s(fh,"trimmedContent");var B4=[/<!-- agentsmesh:embedded-rules:start -->[\s\S]*?<!-- agentsmesh:embedded-rules:end -->\n*/g];function fU(e){let t=e;for(let r of B4)t=t.replace(r,"");return t.trim().replace(/\n{2,}/g,`
|
|
206
206
|
|
|
207
|
-
`)}s(Oj,"normalizeAgentsContent");function Aj(e){return /<!-- agentsmesh:embedded-rules:start -->/.test(e)}s(Aj,"hasOptionalAgentsBlock");function U9(e,t){if(!e.path.endsWith(xj)||e.path!==t.path)return null;let r=Bg(e.content),n=Bg(t.content);if(!r||!n)return null;let o=r.includes(n),i=n.includes(r);if(o!==i)return o?e:t;if(Oj(e.content)===Oj(t.content)){let a=Aj(e.content),l=Aj(t.content);if(a!==l)return a?e:t}return null}s(U9,"richerAgentsResult");function B9(e,t){if(!e.path.endsWith(xj)||e.path!==t.path)return null;let r=e.target===Ry?e:t.target===Ry?t:null,n=r===e?t:e;if(!r)return null;let o=Bg(r.content).length,i=Bg(n.content).length;return o===i?null:o>i?r:n}s(B9,"richerCodexAgentsResult");function Kg(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=U9(o,r);if(i){t[n]=i;continue}let a=B9(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]=G9(o,r);}return t}s(Kg,"resolveOutputCollisions");function Tj(e){let t=e.currentContent===void 0?"created":e.currentContent!==e.content?"updated":"unchanged";return e.status===t?e:{...e,status:t}}s(Tj,"refreshResultStatus");A();xe();rt();function Dj(e,t){return e===null?"created":e!==t?"updated":"unchanged"}s(Dj,"computeStatus");function K9(e,t,r){let n=Sk(e,t,r);if(n!==null)return n;let o=re(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(K9,"resolveGeneratedOutputPath");async function eu(e,t,r,n,o,i){let a=K9(t,r.path,o);if(a===null)return null;let l=await k(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:Dj(l,p)}),a}s(eu,"emitGeneratedOutput");function Xk(e,t,r){return {capability:Di(e,r)?.[t]??{level:"none"},scope:r}}s(Xk,"featureContext");async function ol(e,t,r,n,o,i,a,l){if(o)for(let c of t){let m=l(c);if(!m)continue;let p=Xk(c,a,i);for(let u of m(r,p)){let f=await eu(e,c,u,n,i);if(f===null)continue;let g=Ke(c,i);if(g?.mirrorGlobalPath){let h=g.mirrorGlobalPath(f,t),R=h===null?[]:Array.isArray(h)?h:[h];for(let _ of R){let S=await k(join(n,_));e.push({target:c,path:_,content:u.content,currentContent:S??void 0,status:Dj(S,u.content)});}}}}}s(ol,"generateFeature");Yy();xe();function W9(e){return e?.rootInstructionPath?[e.rootInstructionPath,...Jc(e)]:[]}s(W9,"rootDecorationPaths");function Nj(e,t,r="project"){return e.map(n=>{let o=Ke(n.target,r);if(!o)return n;let i=W9(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=vE(l);return c===n.content?n:{...n,content:c}})}s(Nj,"decoratePrimaryRootInstructions");xe();rt();bf();function qk(e,t,r,n,o){let a=(Hr(e)??re(e))?.mergeGeneratedOutputContent?.(t,r,n,o);if(a!=null)return a;let l=r?.content??t;return l!==null&&nD.includes(o)?oD(l,n):n}s(qk,"mergeOutputContent");async function vj(e,t,r,n,o){for(let i of t){let a=Wc(i,"permissions",void 0,o)??re(i)?.generators.generatePermissions;if(a)for(let l of a(r))await eu(e,i,l,n,o,{mergeContent:s((c,m,p,u)=>qk(i,c,m,p,u),"mergeContent")});}}s(vj,"generatePermissionsFeature");async function Fj(e,t,r,n,o,i){for(let a of t){let l=Wc(a,"hooks",i,o)??re(a)?.generators.generateHooks;if(!l)continue;let c=Xk(a,"hooks",o),m=[...l(r,c)],u=(Hr(a)??re(a))?.postProcessHookOutputs;u&&(m=[...await u(n,r,m)]);for(let f of m)await eu(e,a,f,n,o,{mergeContent:s((g,h,R,_)=>qk(a,g,h,R,_),"mergeContent")});}}s(Fj,"generateHooksFeature");async function Mj(e,t,r,n,o,i){for(let a of t){let c=(Hr(a)??re(a))?.emitScopedSettings;if(!c)continue;let m=c(r,o,i);if(m.length!==0)for(let p of m)await eu(e,a,p,n,o,{mergeContent:s((u,f,g,h)=>qk(a,u,f,g,h),"mergeContent")});}}s(Mj,"generateScopedSettingsFeature");async function zr(e){let{config:t,canonical:r,projectRoot:n,scope:o="project",targetFilter:i}=e,a=[...t.targets,...t.pluginTargets??[]],l=i?a.filter(W=>i.includes(W)):a;function c(W,$){return Wc(W,$,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"),R=t.features.includes("hooks"),_=t.features.includes("ignore"),S=[];await ol(S,l,r,n,m,o,"rules",W=>c(W,"rules")),await ol(S,l,r,n,p,o,"commands",W=>c(W,"commands")),await ol(S,l,r,n,u,o,"agents",W=>c(W,"agents")),await ol(S,l,r,n,f,o,"skills",W=>c(W,"skills")),await ol(S,l,r,n,g,o,"mcp",W=>c(W,"mcp")),h&&await vj(S,l,r,n,o),R&&await Fj(S,l,r,n,o,t),await ol(S,l,r,n,_,o,"ignore",W=>c(W,"ignore"));let I=new Set(t.features);for(let W of l){let Y=(Hr(W)??re(W))?.globalSupport?.scopeExtras;if(Y){let ee=await Y(r,n,o,I);S.push(...ee);}}(g||_||R||u||h)&&await Mj(S,l,r,n,o,I);let b=Nj(S,r,o),P=H9(b,o),T=Lj(b,r,t,n,o,l,P);return Ej(T,n,{packOriginatedKeys:wj(r)}),Kg(T.map(Tj))}s(zr,"generate");function H9(e,t){let r=new Map;function n(a){let l=r.get(a);if(l)return l;let c=Ke(a,t),m=new Set;if(c?.rootInstructionPath){m.add(c.rootInstructionPath);for(let p of Jc(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(H9,"computeSharedRootInstructionPaths");Vr();ne();A();No();var i3=6e4,a3=30,l3=200,c3=2e3;async function Yc(e,t={}){let r=t.retries??a3,n=t.retryDelayMs??l3,o=t.staleMs??i3;await mkdir(dirname(e),{recursive:true});let i=0;for(;;){let a=await m3(e);if(a)return a;let l=await p3(e);if(l!=="young"&&u3(l,o)){await rm$1(e,{recursive:true,force:true}).catch(()=>{});continue}if(i>=r){let c=l==="young"?null:l;throw new wl(e,f3(c),{label:t.label})}i++,await h3(n);}}s(Yc,"acquireProcessLock");async function m3(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:zj()};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(m3,"tryAcquire");async function p3(e){try{let t=await readFile(join(e,"holder.json"),"utf-8"),r=JSON.parse(t);return g3(r)?r:null}catch{try{let t=await stat(e);if(Date.now()-t.mtimeMs<c3)return "young"}catch{}return null}}s(p3,"inspectLock");function u3(e,t){return !e||Date.now()-e.started>t?true:e.hostname&&e.hostname!==zj()?false:!d3(e.pid)}s(u3,"isStale");function d3(e){if(!Number.isInteger(e)||e<=0)return false;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}s(d3,"isProcessAlive");function f3(e){return e?`${e.hostname?`${e.hostname}:`:""}pid ${e.pid} (running ${Date.now()-e.started}ms)`:"unknown (unreadable lock metadata)"}s(f3,"describeHolder");function g3(e){if(typeof e!="object"||e===null)return false;let t=e;return typeof t.pid=="number"&&typeof t.started=="number"}s(g3,"isLockMetadata");function zj(){return hostname()}s(zj,"getHostname");function h3(e){return new Promise(t=>setTimeout(t,e))}s(h3,"sleep");A();xe();async function Vj(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 Vj(i,t));continue}n.push(relative(t,i).replace(/\\/g,"/"));}return n}s(Vj,"listFiles");async function S3(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(S3,"removeIfStale");async function Jj(e){let t=new Set(e.expectedPaths),r=new Set,n=e.scope??"project";for(let o of e.targets){let i=_k(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 Vj(l))r.add(`${a}/${c}`.replace(/\/+/g,"/"));}}}for(let o of r)await S3(e.projectRoot,o,t);}s(Jj,"cleanupStaleGeneratedOutputs");xe();function Xc(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(Xc,"ensurePathInsideRoot");Fm();A();ne();async function rI(e,t){let r=await vs(e.canonicalDir),n=t.length>0?await Vc(t):{},o=await Gg(join(e.canonicalDir,"packs")),i=process.env.USER??process.env.USERNAME??"unknown";await Mg(e.canonicalDir,{generatedAt:new Date().toISOString(),generatedBy:i,libVersion:Ji(),checksums:r,extends:n,packs:o});try{await fy(Jt(),join(e.configDir,".agentsmeshcache"));}catch(a){y.warn(`Could not create .agentsmeshcache symlink: ${a instanceof Error?a.message:String(a)}`);}}s(rI,"writeLockFile");function O3(e,t){return e!=="global"||t.length===0?void 0:t.every(n=>Ke(n,"global")===void 0)?"no-global-support":void 0}s(O3,"resolveEmptyReason");async function s0(e){let{mode:t,scope:r,dryRun:n,context:o,resolvedExtends:i,flags:a,root:l,options:c,activeTargets:m}=e,p=O3(r,m);if(t==="check")return {exitCode:0,data:{scope:r,mode:t,files:[],summary:Hg([]),emptyReason:p}};if(n||await rI(o,i),c.printMatrix!==false){let{runMatrix:u}=await Promise.resolve().then(()=>(nu(),mI)),{renderMatrix:f}=await Promise.resolve().then(()=>(su(),pI)),g=await u(a,l);f(g,{verbose:a.verbose===true});}return {exitCode:0,data:{scope:r,mode:t,files:[],summary:Hg([]),emptyReason:p}}}s(s0,"handleEmptyResults");function i0(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:Hg(r)}}}s(i0,"buildCheckResult");async function a0(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 Yc(join(i.canonicalDir,".generate.lock"),{label:"generate lock"});try{if(!r){for(let h of t)if(h.status==="created"||h.status==="updated"){let R=Xc(i.rootBase,h.path,h.target);await L(R,h.content);}await Jj({projectRoot:i.rootBase,targets:a,expectedPaths:t.map(h=>h.path),scope:n}),await rI(i,l);}}finally{u&&await u();}if(p.printMatrix!==false){let{runMatrix:h}=await Promise.resolve().then(()=>(nu(),mI)),{renderMatrix:R}=await Promise.resolve().then(()=>(su(),pI)),_=await h(c,m);R(_,{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:Hg(f)}}}s(a0,"handleGenerateOrDryRun");function Hg(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(Hg,"buildSummary");async function qc(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(P=>P.trim()).filter(Boolean):void 0,u=o?"check":i?"dry-run":"generate",{config:f,context:g}=await ye(n,l);await He(f,n);let h=f.collaboration?.lock_features??[];if(f.collaboration?.strategy==="lock"&&!a&&h.length>0){let P=await Fg(g.canonicalDir);if(P!==null){let T=await vs(g.canonicalDir),W=$g(P.checksums,T,h);if(W.length>0){y.error("Locked feature violation (strategy: lock). Modified files:");for(let $ of W)y.error(` ${$}`);throw y.error("Run 'agentsmesh generate --force' to accept these changes."),new Error("Locked feature violation. Use --force to override.")}}}let{canonical:R,resolvedExtends:_}=await Ft(f,g.configDir,{refreshRemoteCache:c},g.canonicalDir),S=[...f.targets,...f.pluginTargets??[]];if(p){let P=p.filter(T=>!S.includes(T));if(P.length>0)throw new Error(`Unknown target(s) in --targets: ${P.join(", ")}. Available: ${S.join(", ")}`)}let I=p?S.filter(P=>p.includes(P)):S,b=await zr({config:f,canonical:R,projectRoot:g.rootBase,scope:l,targetFilter:p});return b.length===0?s0({mode:u,scope:l,dryRun:i,context:g,resolvedExtends:_,flags:e,root:n,options:r,activeTargets:I}):o?i0(b,l):a0({results:b,dryRun:i,scope:l,mode:u,context:g,activeTargets:I,resolvedExtends:_,flags:e,root:n,options:r})}s(qc,"runGenerate");ne();function uI(e,t){return e==="global"?`~/${t}`:t}s(uI,"formatDisplayPath");function Qc(e){let{data:t}=e,{scope:r,mode:n,files:o}=t;if(o.length===0){t.emptyReason==="no-global-support"?y.info("No files to generate (target has no global mode \u2014 try without --global)."):y.info("No files to generate (no root rule or rules feature disabled)."),n==="check"&&y.success("Generated files are in sync.");return}if(n==="check"){let c=o.filter(m=>m.status!=="unchanged");if(c.length===0){y.success("Generated files are in sync.");return}for(let m of c)y.error(`[check] ${m.status} ${uI(r,m.path)} (${m.target})`);y.error("Generated files are out of sync. Run 'agentsmesh generate' to update them.");return}if(n==="dry-run"){for(let c of o)y.info(`[dry-run] ${c.status} ${uI(r,c.path)} (${c.target})`);return}for(let c of o)(c.status==="created"||c.status==="updated")&&y.success(`${c.status} ${uI(r,c.path)}`);let{created:i,updated:a,unchanged:l}=t.summary;i>0||a>0?y.info(`Generated: ${i} created, ${a} updated, ${l} unchanged`):y.info(`Nothing changed. (${l} unchanged)`);}s(Qc,"renderGenerate");A();A();async function zg(e,t){let r=join(e,".gitignore"),n=await k(r)??"",o=new Set(n.split(`
|
|
208
|
-
`).map(l=>l.trim()).filter(l=>l.length>0&&!l.startsWith("#"))),i=t.filter(l=>!
|
|
207
|
+
`)}s(fU,"normalizeAgentsContent");function gU(e){return /<!-- agentsmesh:embedded-rules:start -->/.test(e)}s(gU,"hasOptionalAgentsBlock");function K4(e,t){if(!e.path.endsWith(hU)||e.path!==t.path)return null;let r=fh(e.content),n=fh(t.content);if(!r||!n)return null;let o=r.includes(n),i=n.includes(r);if(o!==i)return o?e:t;if(fU(e.content)===fU(t.content)){let a=gU(e.content),l=gU(t.content);if(a!==l)return a?e:t}return null}s(K4,"richerAgentsResult");function W4(e,t){if(!e.path.endsWith(hU)||e.path!==t.path)return null;let r=e.target===Wy?e:t.target===Wy?t:null,n=r===e?t:e;if(!r)return null;let o=fh(r.content).length,i=fh(n.content).length;return o===i?null:o>i?r:n}s(W4,"richerCodexAgentsResult");function gh(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=K4(o,r);if(i){t[n]=i;continue}let a=W4(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]=U4(o,r);}return H4(t),t}s(gh,"resolveOutputCollisions");function H4(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(H4,"assertNoCaseOnlyPathCollisions");function yU(e){let t=e.currentContent===void 0?"created":e.currentContent!==e.content?"updated":"unchanged";return e.status===t?e:{...e,status:t}}s(yU,"refreshResultStatus");b();xe();rt();function SU(e,t){return e===null?"created":e!==t?"updated":"unchanged"}s(SU,"computeStatus");function z4(e,t,r){let n=nI(e,t,r);if(n!==null)return n;let o=re(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(z4,"resolveGeneratedOutputPath");async function Eu(e,t,r,n,o,i){let a=z4(t,r.path,o);if(a===null)return null;let l=await k(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:SU(l,p)}),a}s(Eu,"emitGeneratedOutput");function DI(e,t,r){return {capability:ni(e,r)?.[t]??{level:"none"},scope:r}}s(DI,"featureContext");async function bl(e,t,r,n,o,i,a,l){if(o)for(let c of t){let m=l(c);if(!m)continue;let p=DI(c,a,i);for(let u of m(r,p)){let f=await Eu(e,c,u,n,i);if(f===null)continue;let g=We(c,i);if(g?.mirrorGlobalPath){let h=g.mirrorGlobalPath(f,t),_=h===null?[]:Array.isArray(h)?h:[h];for(let S of _){let R=await k(join(n,S));e.push({target:c,path:S,content:u.content,currentContent:R??void 0,status:SU(R,u.content)});}}}}}s(bl,"generateFeature");R_();xe();function V4(e){return e?.rootInstructionPath?[e.rootInstructionPath,...um(e)]:[]}s(V4,"rootDecorationPaths");function RU(e,t,r="project"){return e.map(n=>{let o=We(n.target,r);if(!o)return n;let i=V4(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=kO(l);return c===n.content?n:{...n,content:c}})}s(RU,"decoratePrimaryRootInstructions");xe();rt();fu();function NI(e,t,r,n,o){let a=(nn(e)??re(e))?.mergeGeneratedOutputContent?.(t,r,n,o);if(a!=null)return a;let l=r?.content??t;return l!==null&&hN.includes(o)?qf(l,n):n}s(NI,"mergeOutputContent");async function kU(e,t,r,n,o){for(let i of t){let a=lm(i,"permissions",void 0,o)??re(i)?.generators.generatePermissions;if(a)for(let l of a(r))await Eu(e,i,l,n,o,{mergeContent:s((c,m,p,u)=>NI(i,c,m,p,u),"mergeContent")});}}s(kU,"generatePermissionsFeature");async function IU(e,t,r,n,o,i){for(let a of t){let l=lm(a,"hooks",i,o)??re(a)?.generators.generateHooks;if(!l)continue;let c=DI(a,"hooks",o),m=[...l(r,c)],u=(nn(a)??re(a))?.postProcessHookOutputs;u&&(m=[...await u(n,r,m)]);for(let f of m)await Eu(e,a,f,n,o,{mergeContent:s((g,h,_,S)=>NI(a,g,h,_,S),"mergeContent")});}}s(IU,"generateHooksFeature");async function LU(e,t,r,n,o,i){for(let a of t){let c=(nn(a)??re(a))?.emitScopedSettings;if(!c)continue;let m=c(r,o,i);if(m.length!==0)for(let p of m)await Eu(e,a,p,n,o,{mergeContent:s((u,f,g,h)=>NI(a,u,f,g,h),"mergeContent")});}}s(LU,"generateScopedSettingsFeature");async function on(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,G){return lm(K,G,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"),_=t.features.includes("hooks"),S=t.features.includes("ignore"),R=[];await bl(R,l,r,n,m,o,"rules",K=>c(K,"rules")),await bl(R,l,r,n,p,o,"commands",K=>c(K,"commands")),await bl(R,l,r,n,u,o,"agents",K=>c(K,"agents")),await bl(R,l,r,n,f,o,"skills",K=>c(K,"skills")),await bl(R,l,r,n,g,o,"mcp",K=>c(K,"mcp")),h&&await kU(R,l,r,n,o),_&&await IU(R,l,r,n,o,t),await bl(R,l,r,n,S,o,"ignore",K=>c(K,"ignore"));let I=new Set(t.features);for(let K of l){let Y=(nn(K)??re(K))?.globalSupport?.scopeExtras;if(Y){let ee=await Y(r,n,o,I);R.push(...ee);}}(g||S||_||u||h)&&await LU(R,l,r,n,o,I);let w=RU(R,r,o),D=J4(w,o),P=cU(w,r,t,n,o,l,D);return pU(P,n,{packOriginatedKeys:uU(r)}),gh(P.map(yU))}s(on,"generate");function J4(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 um(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(J4,"computeSharedRootInstructionPaths");sn();se();b();Qo();var c5=6e4,m5=30,p5=200,u5=2e3;async function dm(e,t={}){let r=t.retries??m5,n=t.retryDelayMs??p5,o=t.staleMs??c5;await mkdir(dirname(e),{recursive:true});let i=0;for(;;){let a=await d5(e);if(a)return a;let l=await f5(e);if(l!=="young"&&g5(l,o)){await rm$1(e,{recursive:true,force:true}).catch(()=>{});continue}if(i>=r){let c=l==="young"?null:l;throw new Xl(e,y5(c),{label:t.label})}i++,await S5(n);}}s(dm,"acquireProcessLock");async function d5(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:PU()};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(d5,"tryAcquire");async function f5(e){try{let t=await readFile(join(e,"holder.json"),"utf-8"),r=JSON.parse(t);return _5(r)?r:null}catch{try{let t=await stat(e);if(Date.now()-t.mtimeMs<u5)return "young"}catch{}return null}}s(f5,"inspectLock");function g5(e,t){return !e||Date.now()-e.started>t?true:e.hostname&&e.hostname!==PU()?false:!h5(e.pid)}s(g5,"isStale");function h5(e){if(!Number.isInteger(e)||e<=0)return false;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}s(h5,"isProcessAlive");function y5(e){return e?`${e.hostname?`${e.hostname}:`:""}pid ${e.pid} (running ${Date.now()-e.started}ms)`:"unknown (unreadable lock metadata)"}s(y5,"describeHolder");function _5(e){if(typeof e!="object"||e===null)return false;let t=e;return typeof t.pid=="number"&&typeof t.started=="number"}s(_5,"isLockMetadata");function PU(){return hostname()}s(PU,"getHostname");function S5(e){return new Promise(t=>setTimeout(t,e))}s(S5,"sleep");b();xe();async function DU(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 DU(i,t));continue}n.push(relative(t,i).replace(/\\/g,"/"));}return n}s(DU,"listFiles");async function L5(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(L5,"removeIfStale");async function NU(e){let t=new Set(e.expectedPaths),r=new Set,n=e.scope??"project";for(let o of e.targets){let i=rI(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 DU(l))r.add(`${a}/${c}`.replace(/\/+/g,"/"));}}}for(let o of r)await L5(e.projectRoot,o,t);}s(NU,"cleanupStaleGeneratedOutputs");xe();function fm(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(fm,"ensurePathInsideRoot");Zm();b();se();async function $I(e,t){let r=await ii(e.canonicalDir),n=t.length>0?await pm(t):{},o=await ph(join(e.canonicalDir,"packs")),i=process.env.USER??process.env.USERNAME??"unknown";await ch(e.canonicalDir,{generatedAt:new Date().toISOString(),generatedBy:i,libVersion:_a(),checksums:r,extends:n,packs:o});try{await jy(Qt(),join(e.configDir,".agentsmeshcache"));}catch(a){y.warn(`Could not create .agentsmeshcache symlink: ${a instanceof Error?a.message:String(a)}`);}}s($I,"writeLockFile");function T5(e,t){return e!=="global"||t.length===0?void 0:t.every(n=>We(n,"global")===void 0)?"no-global-support":void 0}s(T5,"resolveEmptyReason");async function HU(e){let{mode:t,scope:r,dryRun:n,context:o,resolvedExtends:i,flags:a,root:l,options:c,activeTargets:m}=e,p=T5(r,m);if(t==="check")return {exitCode:0,data:{scope:r,mode:t,files:[],summary:yh([]),emptyReason:p}};if(n||await $I(o,i),c.printMatrix!==false){let{runMatrix:u}=await Promise.resolve().then(()=>(bu(),VI)),{renderMatrix:f}=await Promise.resolve().then(()=>(xu(),JI)),g=await u(a,l);f(g,{verbose:a.verbose===true});}return {exitCode:0,data:{scope:r,mode:t,files:[],summary:yh([]),emptyReason:p}}}s(HU,"handleEmptyResults");function zU(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:yh(r)}}}s(zU,"buildCheckResult");async function VU(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 dm(join(i.canonicalDir,".generate.lock"),{label:"generate lock"});try{if(!r){for(let h of t)if(h.status==="created"||h.status==="updated"){let _=fm(i.rootBase,h.path,h.target);await L(_,h.content);}await NU({projectRoot:i.rootBase,targets:a,expectedPaths:t.map(h=>h.path),scope:n}),await $I(i,l);}}finally{u&&await u();}if(p.printMatrix!==false){let{runMatrix:h}=await Promise.resolve().then(()=>(bu(),VI)),{renderMatrix:_}=await Promise.resolve().then(()=>(xu(),JI)),S=await h(c,m);_(S,{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:yh(f)}}}s(VU,"handleGenerateOrDryRun");function yh(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(yh,"buildSummary");async function gm(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 ye(n,l);await ze(f,n);let h=f.collaboration?.lock_features??[];if(f.collaboration?.strategy==="lock"&&!a&&h.length>0){let D=await lh(g.canonicalDir);if(D!==null){let P=await ii(g.canonicalDir),K=mh(D.checksums,P,h);if(K.length>0){y.error("Locked feature violation (strategy: lock). Modified files:");for(let G of K)y.error(` ${G}`);throw y.error("Run 'agentsmesh generate --force' to accept these changes."),new Error("Locked feature violation. Use --force to override.")}}}let{canonical:_,resolvedExtends:S}=await Mt(f,g.configDir,{refreshRemoteCache:c},g.canonicalDir),R=[...f.targets,...f.pluginTargets??[]];if(p){let D=p.filter(P=>!R.includes(P));if(D.length>0)throw new Error(`Unknown target(s) in --targets: ${D.join(", ")}. Available: ${R.join(", ")}`)}let I=p?R.filter(D=>p.includes(D)):R,w=await on({config:f,canonical:_,projectRoot:g.rootBase,scope:l,targetFilter:p});return w.length===0?HU({mode:u,scope:l,dryRun:i,context:g,resolvedExtends:S,flags:e,root:n,options:r,activeTargets:I}):o?zU(w,l):VU({results:w,dryRun:i,scope:l,mode:u,context:g,activeTargets:I,resolvedExtends:S,flags:e,root:n,options:r})}s(gm,"runGenerate");se();function YI(e,t){return e==="global"?`~/${t}`:t}s(YI,"formatDisplayPath");function hm(e){let{data:t}=e,{scope:r,mode:n,files:o}=t;if(o.length===0){t.emptyReason==="no-global-support"?y.info("No files to generate (target has no global mode \u2014 try without --global)."):y.info("No files to generate (no root rule or rules feature disabled)."),n==="check"&&y.success("Generated files are in sync.");return}if(n==="check"){let c=o.filter(m=>m.status!=="unchanged");if(c.length===0){y.success("Generated files are in sync.");return}for(let m of c)y.error(`[check] ${m.status} ${YI(r,m.path)} (${m.target})`);y.error("Generated files are out of sync. Run 'agentsmesh generate' to update them.");return}if(n==="dry-run"){for(let c of o)y.info(`[dry-run] ${c.status} ${YI(r,c.path)} (${c.target})`);return}for(let c of o)(c.status==="created"||c.status==="updated")&&y.success(`${c.status} ${YI(r,c.path)}`);let{created:i,updated:a,unchanged:l}=t.summary;i>0||a>0?y.info(`Generated: ${i} created, ${a} updated, ${l} unchanged`):y.info(`Nothing changed. (${l} unchanged)`);}s(hm,"renderGenerate");b();b();async function _h(e,t){let r=join(e,".gitignore"),n=await k(r)??"",o=new Set(n.split(`
|
|
208
|
+
`).map(l=>l.trim()).filter(l=>l.length>0&&!l.startsWith("#"))),i=t.filter(l=>!D5(l,o));if(i.length===0)return false;let a=n.endsWith(`
|
|
209
209
|
`)||n===""?"":`
|
|
210
210
|
`;return await L(r,n+a+i.join(`
|
|
211
211
|
`)+`
|
|
212
|
-
`),true}s(
|
|
213
|
-
`}s(
|
|
214
|
-
`),n=
|
|
215
|
-
`);return `${
|
|
212
|
+
`),true}s(_h,"ensureGitignoreEntries");function D5(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(D5,"isCoveredByExisting");xe();xe();Vn();function JU(){return Pe.filter(e=>!e.excludeFromStarterInit).map(e=>e.id).filter(Xt)}s(JU,"starterInitTargetIds");var YU=/^# yaml-language-server: \$schema=[^\n]*\n?/;function N5(){let e=_a();return `https://unpkg.com/agentsmesh${e&&e!=="unknown"?`@${e}`:""}/schemas`}s(N5,"schemaBaseUrl");function XU(e){return `${N5()}/${e}.json`}s(XU,"schemaUrl");function ym(e){return `# yaml-language-server: $schema=${XU(e)}
|
|
213
|
+
`}s(ym,"yamlSchemaDirective");function Al(e,t){let r=ym(t);return YU.test(e)?e.replace(YU,r):`${r}${e}`}s(Al,"prependYamlSchemaDirective");function QU(e,t){let{$schema:r,...n}=e;return {$schema:XU(t),...n}}s(QU,"stampJsonSchemaField");var v5=["rules","commands","agents","skills","mcp","hooks","ignore","permissions"],F5=JU();function Sh(e,t=F5){let r=(e.length>0?e:t).map(o=>` - ${o}`).join(`
|
|
214
|
+
`),n=v5.map(o=>` - ${o}`).join(`
|
|
215
|
+
`);return `${ym("agentsmesh")}version: 1
|
|
216
216
|
targets:
|
|
217
217
|
${r}
|
|
218
218
|
features:
|
|
219
219
|
${n}
|
|
220
|
-
`}s(
|
|
220
|
+
`}s(Sh,"buildConfig");var Rh=`---
|
|
221
221
|
root: true
|
|
222
222
|
description: "Project rules"
|
|
223
223
|
---
|
|
@@ -226,7 +226,7 @@ description: "Project rules"
|
|
|
226
226
|
|
|
227
227
|
Add your project-wide instructions here.
|
|
228
228
|
This file is always included in AI tool context and synced to all configured tools.
|
|
229
|
-
`,
|
|
229
|
+
`,XI=`---
|
|
230
230
|
description: "Example contextual rule \u2014 rename and customize"
|
|
231
231
|
# targets: [claude-code, cursor] # limit to specific tools (optional)
|
|
232
232
|
# globs: ["src/**/*.ts"] # activate only for matching files (optional)
|
|
@@ -235,14 +235,14 @@ description: "Example contextual rule \u2014 rename and customize"
|
|
|
235
235
|
# Example Rule
|
|
236
236
|
|
|
237
237
|
Replace this with your coding standards, conventions, or domain-specific guidelines.
|
|
238
|
-
`,
|
|
238
|
+
`,QI=`---
|
|
239
239
|
description: "Example command \u2014 rename and customize"
|
|
240
240
|
# allowed-tools: [Read, Grep, Glob, Bash]
|
|
241
241
|
---
|
|
242
242
|
|
|
243
243
|
Describe the task for this command here.
|
|
244
244
|
Commands are invoked on-demand (e.g. /example) with a focused tool set.
|
|
245
|
-
`,
|
|
245
|
+
`,qI=`---
|
|
246
246
|
name: example-agent
|
|
247
247
|
description: "Example subagent \u2014 rename and customize"
|
|
248
248
|
# tools: [Read, Grep, Glob]
|
|
@@ -253,7 +253,7 @@ description: "Example subagent \u2014 rename and customize"
|
|
|
253
253
|
|
|
254
254
|
Describe this agent's role and instructions here.
|
|
255
255
|
Agents are specialized subagents with restricted tools and a specific purpose.
|
|
256
|
-
`,
|
|
256
|
+
`,ZI=`---
|
|
257
257
|
name: example-skill
|
|
258
258
|
description: "Example skill \u2014 rename and customize"
|
|
259
259
|
---
|
|
@@ -262,7 +262,7 @@ description: "Example skill \u2014 rename and customize"
|
|
|
262
262
|
|
|
263
263
|
Describe the skill procedure here.
|
|
264
264
|
Skills are reusable multi-step procedures that commands and agents can reference.
|
|
265
|
-
`,
|
|
265
|
+
`,eL=`{
|
|
266
266
|
"mcpServers": {
|
|
267
267
|
// agentsmesh self-serve MCP server \u2014 exposes your canonical config to AI agents.
|
|
268
268
|
// Lets agents introspect rules/commands/agents/skills and trigger generate.
|
|
@@ -289,7 +289,7 @@ Skills are reusable multi-step procedures that commands and agents can reference
|
|
|
289
289
|
// }
|
|
290
290
|
}
|
|
291
291
|
}
|
|
292
|
-
`,
|
|
292
|
+
`,tL=`${ym("hooks")}# Lifecycle hooks \u2014 run shell commands before/after AI tool use
|
|
293
293
|
# Events: PreToolUse, PostToolUse, SubagentStart, SubagentStop
|
|
294
294
|
# Matcher: tool name pattern (e.g. "Edit|Write", "Bash", "*")
|
|
295
295
|
#
|
|
@@ -302,7 +302,7 @@ Skills are reusable multi-step procedures that commands and agents can reference
|
|
|
302
302
|
# - matcher: Edit|Write
|
|
303
303
|
# type: command
|
|
304
304
|
# command: npm test --passWithNoTests
|
|
305
|
-
`,
|
|
305
|
+
`,rL=`${ym("permissions")}# Tool permission allow/deny lists
|
|
306
306
|
#
|
|
307
307
|
# allow:
|
|
308
308
|
# - Bash(npm run:*)
|
|
@@ -318,14 +318,14 @@ Skills are reusable multi-step procedures that commands and agents can reference
|
|
|
318
318
|
allow: []
|
|
319
319
|
deny: []
|
|
320
320
|
ask: []
|
|
321
|
-
`,
|
|
321
|
+
`,nL=`# Patterns ignored by all configured AI tools (gitignore syntax)
|
|
322
322
|
#
|
|
323
323
|
# node_modules/
|
|
324
324
|
# dist/
|
|
325
325
|
# .env*
|
|
326
326
|
# *.log
|
|
327
327
|
# coverage/
|
|
328
|
-
`,
|
|
328
|
+
`,qU=`${ym("agentsmesh")}# Personal overrides \u2014 NOT committed to git
|
|
329
329
|
# Uncomment and customize for your local setup:
|
|
330
330
|
|
|
331
331
|
# targets:
|
|
@@ -343,68 +343,115 @@ ask: []
|
|
|
343
343
|
# overrides:
|
|
344
344
|
# claude-code:
|
|
345
345
|
# model: opus
|
|
346
|
-
`;
|
|
347
|
-
`}s(
|
|
346
|
+
`;b();xe();function ZU(e){let t=[];for(let r of Pe)for(let n of tI(r.id,e))t.push({target:r.id,path:n});return t}s(ZU,"collectDetectionPaths");function eB(e){let t=new Map;for(let{target:r,path:n}of ZU(e)){let o=t.get(r)??[];o.push(n),t.set(r,o);}return [...t.entries()].map(([r,n])=>({id:r,paths:n}))}s(eB,"toolIndicators");eB("project");async function tB(e,t="project"){let r=[];for(let{id:n,paths:o}of eB(t))for(let i of o){let a=join(e,i);if(await j(a)){r.push(n);break}}return [...new Set(r)]}s(tB,"detectExistingConfigs");b();se();function gt(e,t){return join(e,t)}s(gt,"ab");async function oL(e){return await j(e)?(await readdir(e,{withFileTypes:true})).filter(r=>r.isFile()&&r.name.endsWith(".md")).length:0}s(oL,"countMdFiles");async function G5(e){let t=gt(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(G5,"hasAnyImportedSkill");async function sL(e){let t=gt(e,"rules");await O(t),await L(join(t,"_root.md"),Rh),y.success("Created .agentsmesh/rules/_root.md"),await L(join(t,"_example.md"),XI),y.success("Created .agentsmesh/rules/_example.md");let r=gt(e,"commands");await O(r),await L(join(r,"_example.md"),QI),y.success("Created .agentsmesh/commands/_example.md");let n=gt(e,"agents");await O(n),await L(join(n,"_example.md"),qI),y.success("Created .agentsmesh/agents/_example.md");let o=gt(e,join("skills","_example"));await O(o),await L(join(o,"SKILL.md"),ZI),y.success("Created .agentsmesh/skills/_example/SKILL.md"),await L(gt(e,"mcp.json"),eL),y.success("Created .agentsmesh/mcp.json"),await L(gt(e,"hooks.yaml"),tL),y.success("Created .agentsmesh/hooks.yaml"),await L(gt(e,"permissions.yaml"),rL),y.success("Created .agentsmesh/permissions.yaml"),await L(gt(e,"ignore"),nL),y.success("Created .agentsmesh/ignore");}s(sL,"writeScaffoldFull");async function nB(e){let t=gt(e,"rules"),r=await oL(t),n=join(t,"_root.md"),o=await j(n);await O(t),r===0?(await L(n,Rh),y.success("Created .agentsmesh/rules/_root.md"),await L(join(t,"_example.md"),XI),y.success("Created .agentsmesh/rules/_example.md")):o||(await L(n,Rh),y.success("Created .agentsmesh/rules/_root.md"));let i=gt(e,"commands");await oL(i)===0&&(await O(i),await L(join(i,"_example.md"),QI),y.success("Created .agentsmesh/commands/_example.md"));let a=gt(e,"agents");if(await oL(a)===0&&(await O(a),await L(join(a,"_example.md"),qI),y.success("Created .agentsmesh/agents/_example.md")),!await G5(e)){let u=gt(e,join("skills","_example"));await O(u),await L(join(u,"SKILL.md"),ZI),y.success("Created .agentsmesh/skills/_example/SKILL.md");}let l=gt(e,"mcp.json");await j(l)||(await L(l,eL),y.success("Created .agentsmesh/mcp.json"));let c=gt(e,"hooks.yaml");await j(c)||(await L(c,tL),y.success("Created .agentsmesh/hooks.yaml"));let m=gt(e,"permissions.yaml");await j(m)||(await L(m,rL),y.success("Created .agentsmesh/permissions.yaml"));let p=gt(e,"ignore");await j(p)||(await L(p,nL),y.success("Created .agentsmesh/ignore"));}s(nB,"writeScaffoldGapFill");tt();var Tu=1,Sm=2e3,_m=z$1.string().regex(/^[a-z0-9-]+$/,"id must be kebab-case"),$5=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"),j5=z$1.object({summary:z$1.string().min(1,"topic summary must not be empty")}).strict(),U5=z$1.enum(["file_glob","command_pattern","keyword"]),B5=z$1.object({kind:U5,pattern:z$1.string().min(1,"trigger pattern must not be empty")}).strict(),K5=z$1.enum(["active","deprecated","superseded"]),W5=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(_m).min(1,"lesson must reference at least one topic"),triggers:z$1.array(_m),evidence:z$1.array(z$1.string().min(1)),status:K5,supersededBy:_m.optional(),createdAt:$5}).strict(),xl=z$1.object({version:z$1.literal(Tu),lessons:z$1.record(_m,W5),topics:z$1.record(_m,j5),triggers:z$1.record(_m,B5)}).strict();function Pu(e){return xl.parse(e)}s(Pu,"parseGraph");var X5=".agentsmesh/lessons/lessons.json";function Vo(e){return resolve(e,X5)}s(Vo,"graphFilePath");function Du(e){let t=readFileSync(Vo(e),"utf8");return Pu(JSON.parse(t))}s(Du,"loadLessonsGraph");function Ye(e){return existsSync(Vo(e))?Du(e):null}s(Ye,"tryLoadLessonsGraph");function Ih(e){let t=Vo(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>Tu?{status:"newer-version",graph:null,version:n}:{status:"ok",graph:Pu(r)}}catch(r){return {status:"corrupt",graph:null,error:r instanceof Error?r:new Error(String(r))}}}s(Ih,"loadLessonsGraphResilient");function iB(e,t){let r=Vo(e);mkdirSync(dirname(r),{recursive:true});let n=`${r}.${process.pid}.tmp`;writeFileSync(n,Nu(t),"utf8"),renameSync(n,r);}s(iB,"saveLessonsGraph");function Nu(e){return `${JSON.stringify(kh(e),null,2)}
|
|
347
|
+
`}s(Nu,"serializeGraph");function Lh(e){return JSON.stringify(kh(e))}s(Lh,"stableStringify");function kh(e){if(e===null)return null;if(Array.isArray(e))return e.map(kh);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]=kh(o);return r}return e}s(kh,"canonicalize");var t6=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"}),r6=z$1.object({topic:z$1.string().regex(/^[a-z0-9-]+$/),file:z$1.string().regex(/\.md$/),summary:z$1.string().min(1),triggers:t6}),lB=z$1.object({version:z$1.literal(1),clusters:z$1.array(r6)});function cB(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=o6(i),r.set(a,l),t.set(l,{kind:i.kind,pattern:i.pattern})),o.includes(l)||o.push(l);}return o}s(cB,"collectClusterTriggerIds");var n6={file_glob:"glob",command_pattern:"cmd",keyword:"kw"};function o6(e){let t=createHash("sha1").update(`${e.kind}|${e.pattern}`).digest("hex").slice(0,8);return `t-${n6[e.kind]}-${t}`}s(o6,"makeTriggerId");var s6=/^##\s+Rules\b.*$/i,i6=/^##\s+/,a6=/^(\d+)\.\s+(.+?)\s*$/,aB=/\s*\(Evidence:?\s+([^)]+)\)\s*$/,l6=/L\d+/g;function mB(e){let t=e.split(/\r?\n/),r=false,n=[];for(let o of t){if(!r){s6.test(o)&&(r=true);continue}if(i6.test(o))break;let i=a6.exec(o);if(i===null)continue;let a=Number(i[1]),l=i[2],c=[],m=aB.exec(l);for(;m!==null;){let u=m[1].match(l6);u!==null&&c.unshift(...u),l=l.slice(0,m.index).trimEnd(),m=aB.exec(l);}n.push({index:a,body:l,evidence:c});}return n}s(mB,"parseRulesSection");var c6=["index.yaml","journal.md","journal.legacy.md","topics","distill-ledger.yaml","distill-proposal.md"];function Ch(e){let t=[];for(let r of c6){let n=join(e,r);existsSync(n)&&(rmSync(n,{recursive:true,force:true}),t.push(n));}return t}s(Ch,"deleteLegacyArtifacts");function aL(e){return e.trim().replace(/\s+/g," ").toLowerCase()}s(aL,"normalizeRule");function vu(e,t){let r=[...e];for(let n of t)r.includes(n)||r.push(n);return r}s(vu,"union");function uB(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(iL(l),a);let o=[],i=[];for(let a of r){let l=iL(a),c=n.get(l);if(c!==void 0){o.includes(c)||o.push(c);continue}let m=p6(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(uB,"mergeTriggers");function iL(e){return `${e.kind}|${e.pattern}`}s(iL,"triggerKey");var m6={file_glob:"glob",command_pattern:"cmd",keyword:"kw"};function p6(e){let t=createHash("sha1").update(iL(e)).digest("hex").slice(0,8);return `t-${m6[e.kind]}-${t}`}s(p6,"makeTriggerId");function dB(e,t,r){let n=u6(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(dB,"makeLessonId");function u6(e){return e.replace(/[^a-z0-9 ]+/g," ").split(/\s+/).filter(r=>r.length>0).slice(0,5).join("-").slice(0,40).replace(/-+$/,"")}s(u6,"ruleToSlug");function fB(){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(fB,"todayIso");var Bn=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"},ai=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"},li=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";}},ci=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:
|
|
348
348
|
`+r.map(n=>` \u2022 ${n.kind} "${n.pattern}" \u2014 ${n.reason}`).join(`
|
|
349
349
|
`)+`
|
|
350
|
-
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
|
|
351
|
-
`&&e!=="\r"&&e!=="\u2028"&&e!=="\u2029"}s(
|
|
352
|
-
`;case "r":return "\r";case "f":return "\f";case "v":return "\v";case "0":return "\0";default:return e}}s(TI,"escapeLiteral");function X0(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(),R=r();if(R==="*"||R==="+"||R==="?")return t+=1,r()==="?"&&(t+=1),R==="*"?{k:"star",node:h}:R==="+"?{k:"plus",node:h}:{k:"opt",node:h};if(R==="{"){let _=l();if(_!==null)return Y0(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 R=Number(h[1]),_=h[2]===void 0?R:h[3]===""||h[3]===void 0?1/0:Number(h[3]);if(R>rh||_!==1/0&&_>rh)throw new mr(`Repeat count over ${rh} not supported: {${h[1]}\u2026}`);return {min:R,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 mr(`Unexpected '${h??"<end>"}' in pattern`);return t+=1,{k:"char",ch:h}}s(c,"parseAtom");function m(){if(t+=1,r()==="?"){let R=e[t+1];if((R==="="||R==="!"||R==="<")&&!(R==="<"&&/[A-Za-z]/.test(e[t+2]??"")))throw new mr("Lookaround assertions are not supported");if(R===":")t+=2;else if(R==="<"){for(t+=2;t<e.length&&e[t]!==">";)t+=1;t+=1;}}let h=o();if(r()!==")")throw new mr("Unbalanced group");return t+=1,h}s(m,"parseGroup");function p(){t+=1;let h=r();if(h===void 0)throw new mr("Trailing backslash");if(/[1-9]/.test(h)||h==="k")throw new mr("Backreferences are not supported");if(t+=1,h==="b")return {k:"assert",kind:"wordB"};if(h==="B")return {k:"assert",kind:"nonWordB"};let R=bI(h);if(R!==null)return {k:"class",test:R};if(h==="x"||h==="u"||h==="c"){let{ch:_,len:S}=h==="c"?AI(e,t):OI(e,t,h);return t+=S,{k:"char",ch:_}}return {k:"char",ch:TI(h)}}s(p,"parseEscape");function u(){t+=1;let h=r()==="^";h&&(t+=1);let R=[];for(;t<e.length&&r()!=="]";)R.push(f());if(r()!=="]")throw new mr("Unterminated character class");t+=1;let _=s(S=>R.some(I=>I(S)),"base");return {k:"class",test:h?S=>!_(S):_}}s(u,"parseClass");function f(){let h;if(r()==="\\"){t+=1;let R=n(),_=bI(R);if(_!==null)return _;let S=xI(e,t,R);t+=S.len,h=S.ch;}else h=n();if(r()==="-"&&e[t+1]!==void 0&&e[t+1]!=="]"){t+=1;let R;if(r()==="\\"){t+=1;let I=n(),b=xI(e,t,I);t+=b.len,R=b.ch;}else R=n();let _=h.codePointAt(0),S=R.codePointAt(0);return I=>{let b=I.codePointAt(0);return b>=_&&b<=S}}return R=>R===h}s(f,"parseClassMember");let g=o();if(t!==e.length)throw new mr(`Unexpected '${r()}' at ${t}`);return g}s(X0,"parseRegex");var PI=new Map;function DI(e){let t=PI.get(e);if(t!==void 0||PI.has(e))return t??null;let r;try{r=V0(X0(e));}catch{r=null;}return PI.set(e,r),r}s(DI,"compileLinearMatcher");var q0=1e3;function du(e){return e.length>q0?false:DI(e)!==null}s(du,"isSafeRegexPattern");function Q0(e){return e.length>q0?null:DI(e)}s(Q0,"getCommandMatcher");function eU(e,t){let r=new Map;for(let[n,o]of Object.entries(e.lessons)){if(o.status!=="active")continue;let i=E4(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(eU,"collectDuplicateRules");function tU(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}du(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(tU,"collectInvalidTriggerPatterns");function rU(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(rU,"collectBackslashGlobPatterns");function nU(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(nU,"collectDuplicateTriggers");var Z0=10;function oU(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>Z0&&(n+=1),i>o&&(o=i);n>0&&t.push({level:"warning",code:"HIGH_FANOUT_TRIGGERS",message:`${n} trigger(s) each match more than ${Z0} active lessons (max ${o}); recall returns the ranked top by default \u2014 consider per-lesson trigger refinement to improve precision.`});}s(oU,"collectFanout");function sU(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)&&Zg(o.pattern)&&t.push({level:"warning",code:"LOW_SIGNAL_KEYWORD",message:`Keyword trigger "${n}" carries more than ${pu} 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(sU,"collectLowSignalKeywords");function iU(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)&&(Mt(o.pattern).length!==0&&!rm(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(iU,"collectStopwordKeywords");function E4(e){return e.trim().replace(/\s+/g," ").toLowerCase()}s(E4,"normalizeRule");function xo(e,t={}){let r=[],n=il.safeParse(e);return n.success?(G0(e,r),j0(e,r),U0(e,r),B0(e,r),eU(e,r),K0(e,r),tU(e,r),rU(e,r),nU(e,r),W0(e,r),oU(e,r),sU(e,r),iU(e,r),N0(e,r),t.knownPaths!==void 0&&D0(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(xo,"validateLessonsGraph");function w4(){return {version:1,lessons:{},topics:{},triggers:{}}}s(w4,"emptyGraph");async function ll(e,t,r={}){let n=await th(e,{retries:r.retries});try{let o=Ve(e)??w4(),i=await t(o),a=xo(o);if(!a.ok){let l=a.findings.filter(c=>c.level==="error").map(c=>`${c.code}: ${c.message}`).join("; ");throw new Error(`mutateLessonsGraph: refusing to write an invalid graph \u2014 ${l}`)}return S0(e,o),i}finally{await n();}}s(ll,"mutateLessonsGraphLocked");async function Et(e,t,r={}){return await dt(e),ll(e,t,r)}s(Et,"mutateLessonsGraph");function b4(e,t){let r=[];for(let n of t){let o=e.triggers[n];if(o===void 0)continue;let i=O4(o.kind,o.pattern);i!==null&&r.push({id:n,kind:o.kind,pattern:o.pattern,reason:i});}return r}s(b4,"ineffectiveTriggers");function O4(e,t){if(e==="keyword")return Mt(t).length===0?"keyword has no matchable token after stopword filtering \u2014 it cannot fire on the mandatory --file/--cmd recall path":rm(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?du(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(O4,"ineffectiveReason");function aU(e,t){return b4(e,t).filter(r=>r.kind!=="command_pattern")}s(aU,"blockingDeadTriggers");function A4(e){return (e.files?.length??0)+(e.commands?.length??0)+(e.keywords?.length??0)}s(A4,"countInputTriggers");async function nh(e,t,r={}){return Et(e,n=>NI(n,t,r),{retries:r.retries})}s(nh,"addLesson");function NI(e,t,r){let n=CI(t.rule),o=t.rule.trim();if(o.length>tm)throw new Fs(o.length,tm);let i=x4(e,n),a=e.topics[t.topic]===void 0;if(a){if(r.allowNewTopic!==true)throw new xn(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};}if(r.allowNoTrigger!==true){let f=i!==null?e.lessons[i]?.triggers.length??0:0;if(A4(t.triggers)===0&&f===0)throw new Ms}let{triggerIds:l,newTriggerIds:c}=w0(e,t.triggers);if(r.allowNoTrigger!==true){let f=i!==null?mu(e.lessons[i].triggers,l):l,g=aU(e,f);if(f.length>0&&g.length===f.length)throw new $s(g)}if(i!==null){let f=e.lessons[i];return e.lessons[i]={...f,topics:mu(f.topics,[t.topic]),triggers:mu(f.triggers,l),evidence:mu(f.evidence,t.evidence??[]),...f.rationale===void 0&&t.rationale!==void 0?{rationale:t.rationale}:{}},{id:i,isNewLesson:false,isNewTopic:a,newTriggerIds:c,warnings:EI(e,i,r.knownPaths)}}let m=b0(e,t.topic,n);e.lessons[m]={rule:o,topics:[t.topic],triggers:l,evidence:t.evidence===void 0?[]:[...t.evidence],status:"active",createdAt:t.createdAt??O0(),...t.rationale===void 0?{}:{rationale:t.rationale}};let p=EI(e,m,r.knownPaths),u=v0(e,m);return {id:m,isNewLesson:true,isNewTopic:a,newTriggerIds:c,warnings:u===null?p:[...p,u]}}s(NI,"addLessonInto");function x4(e,t){for(let[r,n]of Object.entries(e.lessons))if(n.status==="active"&&CI(n.rule)===t)return r;return null}s(x4,"findExistingLessonByRule");async function lU(e,t,r,n,o){let i=0,a=new Set,l=new Set;await ll(e,m=>{i=0,a.clear(),l.clear();for(let p of r){let u=NI(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?[]:Qg(t.base);return {wroteGraphPath:t.graph,deletedPaths:c,topicCount:l.size,lessonCount:i,triggerCount:a.size}}s(lU,"mergeLegacy");var N4=".agentsmesh/lessons";function Ge(e){let t=join(e,N4);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(Ge,"lessonsPaths");function fu(e){return existsSync(Ge(e).config)}s(fu,"lessonsActivated");function gu(){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(gu,"lessonsSetupHint");function oh(e){let t=dirname(resolve(e)),r="";for(;t!==r;){if(existsSync(Ge(t).graph))return t;r=t,t=dirname(t);}return null}s(oh,"ancestorLessonsProjectDir");function cl(e,t){return relative(e,t).split(sep).join("/")}s(cl,"toRelPath");var om='## 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.';var sm=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 im(e,t){let r=Ge(e),n=readFileSync(r.index,"utf8"),o=I0.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=L0(g,a,l),R=join(e,g.file);if(!existsSync(R))throw new Error(`importLegacyLessons: declared topic file is missing: ${g.file}. Refusing to migrate (legacy artifacts left intact).`);let _=readFileSync(R,"utf8");for(let{index:S,body:I,evidence:b}of C0(_)){let P=[`legacy:${g.file}#rule-${S}`,...b.map(T=>`legacy:${T}`)];c[`${g.topic}-rule-${S}`]={rule:I,topics:[g.topic],triggers:h,evidence:P,status:"active",createdAt:t.migratedAt},m.push({rule:I,topic:g.topic,triggers:{files:g.triggers.file_globs,commands:g.triggers.command_patterns,keywords:g.triggers.keywords},evidence:P,createdAt:t.migratedAt});}}if(t.merge===true)return lU(e,r,m,p,t);let u=Object.fromEntries(a.entries());await ll(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 sm;g.version=1,g.lessons=c,g.topics=i,g.triggers=u;});let f=t.deleteLegacy===false?[]:Qg(r.base);return {wroteGraphPath:r.graph,deletedPaths:f,topicCount:Object.keys(i).length,lessonCount:Object.keys(c).length,triggerCount:a.size}}s(im,"importLegacyLessons");function $4(){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($4,"todayIso");async function dt(e){if(existsSync(Ao(e)))return false;let t=Ge(e);if(!existsSync(t.index))return false;try{return await im(e,{migratedAt:$4()}),!0}catch(r){if(r instanceof sm)return false;throw r}}s(dt,"maybeAutoMigrateLessons");function sh(e){return existsSync(e)}s(sh,"logExists");function ih(e,t,r){mkdirSync(dirname(e),{recursive:true}),appendFileSync(e,`${JSON.stringify(t)}
|
|
353
|
-
`,"utf8"),statSync(e).size>r.trimTriggerBytes&&
|
|
350
|
+
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 d6=new Set(["the","a","an","to","of","in","and","or","for","is","on","at","with","be","as","it","that","this","its","must"]);function Gt(e){return e.toLowerCase().split(/[^a-z0-9]+/).filter(t=>t.length>=2&&!d6.has(t))}s(Gt,"tokenize");function gB(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),Gt(t.join(" "))}s(gB,"queryTerms");function hB(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=Gt(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(hB,"buildCorpus");function yB(e,t,r){let n=Gt(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(yB,"bm25");var Fu=5;function Eh(e){return Gt(e).length>Fu}s(Eh,"isLowSignalKeyword");function f6(e){return e.toLowerCase().split(/[^a-z0-9]+/).filter(t=>t.length>0)}s(f6,"splitRawTokens");function Rm(e){let t=f6(e);return t.length<2?false:Gt(e).length!==t.length}s(Rm,"keywordNeedleLosesTokens");function _B(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(_B,"activeTriggerIds");function Mu(e,t){let r=_B(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=g6(a.pattern,{dot:true});n.some(c=>l(c))||o.add(i);}return o}s(Mu,"deadFileGlobIds");function SB(e,t,r){for(let n of Mu(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(SB,"collectDeadFileGlobs");var h6=/^\^(pnpm|npm|npx|yarn|bun)\b/;function RB(e,t){let r=_B(e);for(let[n,o]of Object.entries(e.triggers))o.kind==="command_pattern"&&r.has(n)&&h6.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(RB,"collectRunnerAnchoredPatterns");var y6=.6,Oh=8;function _6(e){let t=e.trim();return t==="*"||t==="**"?true:t.includes("**")?t.slice(t.lastIndexOf("/")+1).startsWith("*"):false}s(_6,"isBroadGlob");function lL(e,t,r){let n=e.lessons[t];if(n===void 0)return [];let o=[];n.triggers.length>Oh&&o.push({code:"OVERSIZED_LESSON_TRIGGERS",message:`Lesson "${t}" has ${n.triggers.length} triggers (recommended \u2264 ${Oh}); 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"&&_6(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"&&Eh(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 ${Fu} tokens rarely fires \u2014 use a short distinctive phrase.`});let c=i.filter(m=>m.kind==="keyword"&&Rm(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=Mu(e,r),p=n.triggers.filter(u=>m.has(u)).map(u=>e.triggers[u]?.pattern).filter(u=>u!==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.`});}return o}s(lL,"inspectCapturedLesson");function kB(e,t){let r=e.lessons[t];if(r===void 0)return null;let n=new Set(Gt(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(Gt(a.rule));if(l.size===0)continue;let c=S6(n,l);c>=y6&&(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(kB,"nearDuplicateWarning");function S6(e,t){let r=0;for(let n of e)t.has(n)&&(r+=1);return r/(e.size+t.size-r)}s(S6,"jaccard");var IB=".lessons.lock";function LB(e){return resolve(e,".agentsmesh/lessons",IB)}s(LB,"lessonsLockPath");async function wh(e,t={}){let r=LB(e);return await mkdir(dirname(r),{recursive:true}),dm(r,{...t,label:"lessons lock"})}s(wh,"acquireLessonsLock");function EB(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(EB,"collectDanglingRefs");function OB(e,t){for(let[r,n]of Object.entries(e.lessons)){for(let o of CB(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 CB(n.triggers))t.push({level:"error",code:"DUPLICATE_TRIGGER_REF",message:`Lesson "${r}" references trigger "${o}" more than once.`,lessonId:r,triggerId:o});}}s(OB,"collectDuplicateRefs");function CB(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(CB,"firstDuplicates");function wB(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(wB,"collectStatusInvariants");function bB(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});}L6(e,t);}s(bB,"collectLifecycleInvariants");function L6(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(L6,"collectSupersedeCycles");function AB(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(AB,"collectReachability");function xB(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(xB,"collectOrphans");var cL=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 C6(e){return e!==`
|
|
351
|
+
`&&e!=="\r"&&e!=="\u2028"&&e!=="\u2029"}s(C6,"isNonLineTerminator");function Tl(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"?C6:t.test;return e.states[r].chars.push({test:o,target:n}),{start:r,end:n}}case "concat":{if(t.items.length===0)return Tl(e,{k:"empty"});let r=null,n=-1;for(let o of t.items){let i=Tl(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=Tl(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=Tl(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=Tl(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=Tl(e,t.node);return e.states[n.end].eps.push(n.start,r),{start:n.start,end:r}}}}s(Tl,"compileNode");function TB(e){let t=new cL,{start:r,end:n}=Tl(t,e);return {states:t.states,start:r,accept:n}}s(TB,"compileNfa");function PB(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(PB,"wordBoundary");function E6(e,t,r){switch(e){case "start":return r===0;case "end":return r===t.length;case "wordB":return PB(t,r);case "nonWordB":return !PB(t,r)}}s(E6,"assertHolds");function DB(e){let{states:t,start:r,accept:n}=TB(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)E6(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(DB,"buildMatcher");var _r=class extends Error{static{s(this,"UnsupportedRegexError");}constructor(t){super(t),this.name="UnsupportedRegexError";}};var bh=1e3,NB=s(e=>/[A-Za-z0-9_]/.test(e),"isWord");function vB(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(vB,"expandRepeat");function mL(e){switch(e){case "d":return t=>t>="0"&&t<="9";case "D":return t=>!(t>="0"&&t<="9");case "w":return NB;case "W":return t=>!NB(t);case "s":return t=>/\s/.test(t);case "S":return t=>!/\s/.test(t);default:return null}}s(mL,"escapeClass");var O6=/^[0-9a-fA-F]{2}$/,w6=/^[0-9a-fA-F]{4}$/;function pL(e,t,r){if(r==="x"){let o=e.slice(t,t+2);return O6.test(o)?{ch:String.fromCharCode(parseInt(o,16)),len:2}:{ch:"x",len:0}}let n=e.slice(t,t+4);return w6.test(n)?{ch:String.fromCharCode(parseInt(n,16)),len:4}:{ch:"u",len:0}}s(pL,"readUnicodeEscape");function uL(e,t){let r=e[t];if(r===void 0||!/[A-Za-z]/.test(r))throw new _r("\\c must be followed by a letter");return {ch:String.fromCharCode(r.charCodeAt(0)&31),len:1}}s(uL,"readControlEscape");function dL(e,t,r){return r==="b"?{ch:"\b",len:0}:r==="c"?uL(e,t):r==="x"||r==="u"?pL(e,t,r):{ch:fL(r),len:0}}s(dL,"classEscapeChar");function fL(e){switch(e){case "t":return " ";case "n":return `
|
|
352
|
+
`;case "r":return "\r";case "f":return "\f";case "v":return "\v";case "0":return "\0";default:return e}}s(fL,"escapeLiteral");function FB(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(),_=r();if(_==="*"||_==="+"||_==="?")return t+=1,r()==="?"&&(t+=1),_==="*"?{k:"star",node:h}:_==="+"?{k:"plus",node:h}:{k:"opt",node:h};if(_==="{"){let S=l();if(S!==null)return vB(h,S.min,S.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 _=Number(h[1]),S=h[2]===void 0?_:h[3]===""||h[3]===void 0?1/0:Number(h[3]);if(_>bh||S!==1/0&&S>bh)throw new _r(`Repeat count over ${bh} not supported: {${h[1]}\u2026}`);return {min:_,max:S}}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 _r(`Unexpected '${h??"<end>"}' in pattern`);return t+=1,{k:"char",ch:h}}s(c,"parseAtom");function m(){if(t+=1,r()==="?"){let _=e[t+1];if((_==="="||_==="!"||_==="<")&&!(_==="<"&&/[A-Za-z]/.test(e[t+2]??"")))throw new _r("Lookaround assertions are not supported");if(_===":")t+=2;else if(_==="<"){for(t+=2;t<e.length&&e[t]!==">";)t+=1;t+=1;}}let h=o();if(r()!==")")throw new _r("Unbalanced group");return t+=1,h}s(m,"parseGroup");function p(){t+=1;let h=r();if(h===void 0)throw new _r("Trailing backslash");if(/[1-9]/.test(h)||h==="k")throw new _r("Backreferences are not supported");if(t+=1,h==="b")return {k:"assert",kind:"wordB"};if(h==="B")return {k:"assert",kind:"nonWordB"};let _=mL(h);if(_!==null)return {k:"class",test:_};if(h==="x"||h==="u"||h==="c"){let{ch:S,len:R}=h==="c"?uL(e,t):pL(e,t,h);return t+=R,{k:"char",ch:S}}return {k:"char",ch:fL(h)}}s(p,"parseEscape");function u(){t+=1;let h=r()==="^";h&&(t+=1);let _=[];for(;t<e.length&&r()!=="]";)_.push(f());if(r()!=="]")throw new _r("Unterminated character class");t+=1;let S=s(R=>_.some(I=>I(R)),"base");return {k:"class",test:h?R=>!S(R):S}}s(u,"parseClass");function f(){let h;if(r()==="\\"){t+=1;let _=n(),S=mL(_);if(S!==null)return S;let R=dL(e,t,_);t+=R.len,h=R.ch;}else h=n();if(r()==="-"&&e[t+1]!==void 0&&e[t+1]!=="]"){t+=1;let _;if(r()==="\\"){t+=1;let I=n(),w=dL(e,t,I);t+=w.len,_=w.ch;}else _=n();let S=h.codePointAt(0),R=_.codePointAt(0);return I=>{let w=I.codePointAt(0);return w>=S&&w<=R}}return _=>_===h}s(f,"parseClassMember");let g=o();if(t!==e.length)throw new _r(`Unexpected '${r()}' at ${t}`);return g}s(FB,"parseRegex");var gL=new Map;function hL(e){let t=gL.get(e);if(t!==void 0||gL.has(e))return t??null;let r;try{r=DB(FB(e));}catch{r=null;}return gL.set(e,r),r}s(hL,"compileLinearMatcher");var MB=1e3;function Gu(e){return e.length>MB?false:hL(e)!==null}s(Gu,"isSafeRegexPattern");function GB(e){return e.length>MB?null:hL(e)}s(GB,"getCommandMatcher");function jB(e,t){let r=new Map;for(let[n,o]of Object.entries(e.lessons)){if(o.status!=="active")continue;let i=b6(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(jB,"collectDuplicateRules");function UB(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}Gu(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(UB,"collectInvalidTriggerPatterns");function BB(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(BB,"collectBackslashGlobPatterns");function KB(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(KB,"collectDuplicateTriggers");var $B=10;function WB(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>$B&&(n+=1),i>o&&(o=i);n>0&&t.push({level:"warning",code:"HIGH_FANOUT_TRIGGERS",message:`${n} trigger(s) each match more than ${$B} active lessons (max ${o}); recall returns the ranked top by default \u2014 consider per-lesson trigger refinement to improve precision.`});}s(WB,"collectFanout");function HB(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)&&Eh(o.pattern)&&t.push({level:"warning",code:"LOW_SIGNAL_KEYWORD",message:`Keyword trigger "${n}" carries more than ${Fu} 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(HB,"collectLowSignalKeywords");function zB(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)&&(Gt(o.pattern).length!==0&&!Rm(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(zB,"collectStopwordKeywords");function b6(e){return e.trim().replace(/\s+/g," ").toLowerCase()}s(b6,"normalizeRule");function Kn(e,t={}){let r=[],n=xl.safeParse(e);return n.success?(EB(e,r),OB(e,r),wB(e,r),bB(e,r),jB(e,r),AB(e,r),UB(e,r),BB(e,r),KB(e,r),xB(e,r),WB(e,r),HB(e,r),zB(e,r),RB(e,r),t.knownPaths!==void 0&&SB(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(Kn,"validateLessonsGraph");function A6(){return {version:1,lessons:{},topics:{},triggers:{}}}s(A6,"emptyGraph");function VB(e){return `${e.code}|${e.triggerId??""}|${e.lessonId??""}`}s(VB,"findingKey");function x6(e){return new Set(e.findings.filter(t=>t.level==="error").map(VB))}s(x6,"errorSignatures");async function Pl(e,t,r={}){let n=await wh(e,{retries:r.retries});try{let o=Ye(e)??A6(),i=x6(Kn(o)),a=await t(o),c=Kn(o).findings.filter(m=>m.level==="error"&&!i.has(VB(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 iB(e,o),a}finally{await n();}}s(Pl,"mutateLessonsGraphLocked");async function Ot(e,t,r={}){return await ht(e),Pl(e,t,r)}s(Ot,"mutateLessonsGraph");function T6(e,t){let r=[];for(let n of t){let o=e.triggers[n];if(o===void 0)continue;let i=P6(o.kind,o.pattern);i!==null&&r.push({id:n,kind:o.kind,pattern:o.pattern,reason:i});}return r}s(T6,"ineffectiveTriggers");function P6(e,t){if(e==="keyword")return Gt(t).length===0?"keyword has no matchable token after stopword filtering \u2014 it cannot fire on the mandatory --file/--cmd recall path":Rm(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?Gu(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(P6,"ineffectiveReason");function JB(e,t){return T6(e,t).filter(r=>r.kind!=="command_pattern")}s(JB,"blockingDeadTriggers");function D6(e){return (e.files?.length??0)+(e.commands?.length??0)+(e.keywords?.length??0)}s(D6,"countInputTriggers");async function Ah(e,t,r={}){return Ot(e,n=>yL(n,t,r),{retries:r.retries})}s(Ah,"addLesson");function yL(e,t,r){let n=aL(t.rule),o=t.rule.trim();if(o.length>Sm)throw new ai(o.length,Sm);let i=N6(e,n),a=e.topics[t.topic]===void 0;if(a){if(r.allowNewTopic!==true)throw new Bn(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};}if(r.allowNoTrigger!==true){let f=i!==null?e.lessons[i]?.triggers.length??0:0;if(D6(t.triggers)===0&&f===0)throw new li}let{triggerIds:l,newTriggerIds:c}=uB(e,t.triggers);if(r.allowNoTrigger!==true){let f=i!==null?vu(e.lessons[i].triggers,l):l,g=JB(e,f);if(f.length>0&&g.length===f.length)throw new ci(g)}if(i!==null){let f=e.lessons[i];return e.lessons[i]={...f,topics:vu(f.topics,[t.topic]),triggers:vu(f.triggers,l),evidence:vu(f.evidence,t.evidence??[]),...f.rationale===void 0&&t.rationale!==void 0?{rationale:t.rationale}:{}},{id:i,isNewLesson:false,isNewTopic:a,newTriggerIds:c,warnings:lL(e,i,r.knownPaths)}}let m=dB(e,t.topic,n);e.lessons[m]={rule:o,topics:[t.topic],triggers:l,evidence:t.evidence===void 0?[]:[...t.evidence],status:"active",createdAt:t.createdAt??fB(),...t.rationale===void 0?{}:{rationale:t.rationale}};let p=lL(e,m,r.knownPaths),u=kB(e,m);return {id:m,isNewLesson:true,isNewTopic:a,newTriggerIds:c,warnings:u===null?p:[...p,u]}}s(yL,"addLessonInto");function N6(e,t){for(let[r,n]of Object.entries(e.lessons))if(n.status==="active"&&aL(n.rule)===t)return r;return null}s(N6,"findExistingLessonByRule");async function YB(e,t,r,n,o){let i=0,a=new Set,l=new Set;await Pl(e,m=>{i=0,a.clear(),l.clear();for(let p of r){let u=yL(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?[]:Ch(t.base);return {wroteGraphPath:t.graph,deletedPaths:c,topicCount:l.size,lessonCount:i,triggerCount:a.size}}s(YB,"mergeLegacy");var G6=".agentsmesh/lessons";function je(e){let t=join(e,G6);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(je,"lessonsPaths");function $u(e){return existsSync(je(e).config)}s($u,"lessonsActivated");function ju(){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(ju,"lessonsSetupHint");function xh(e){let t=dirname(resolve(e)),r="";for(;t!==r;){if(existsSync(je(t).graph))return t;r=t,t=dirname(t);}return null}s(xh,"ancestorLessonsProjectDir");function Dl(e,t){return relative(e,t).split(sep).join("/")}s(Dl,"toRelPath");var Uu='## 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. 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 Im=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 Lm(e,t){let r=je(e),n=readFileSync(r.index,"utf8"),o=lB.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=cB(g,a,l),_=join(e,g.file);if(!existsSync(_))throw new Error(`importLegacyLessons: declared topic file is missing: ${g.file}. Refusing to migrate (legacy artifacts left intact).`);let S=readFileSync(_,"utf8");for(let{index:R,body:I,evidence:w}of mB(S)){let D=[`legacy:${g.file}#rule-${R}`,...w.map(P=>`legacy:${P}`)];c[`${g.topic}-rule-${R}`]={rule:I,topics:[g.topic],triggers:h,evidence:D,status:"active",createdAt:t.migratedAt},m.push({rule:I,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 YB(e,r,m,p,t);let u=Object.fromEntries(a.entries());await Pl(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 Im;g.version=1,g.lessons=c,g.topics=i,g.triggers=u;});let f=t.deleteLegacy===false?[]:Ch(r.base);return {wroteGraphPath:r.graph,deletedPaths:f,topicCount:Object.keys(i).length,lessonCount:Object.keys(c).length,triggerCount:a.size}}s(Lm,"importLegacyLessons");function B6(){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(B6,"todayIso");async function ht(e){if(existsSync(Vo(e)))return false;let t=je(e);if(!existsSync(t.index))return false;try{return await Lm(e,{migratedAt:B6()}),!0}catch(r){if(r instanceof Im)return false;throw r}}s(ht,"maybeAutoMigrateLessons");function Th(e){return existsSync(e)}s(Th,"logExists");function Ph(e,t,r){mkdirSync(dirname(e),{recursive:true}),appendFileSync(e,`${JSON.stringify(t)}
|
|
353
|
+
`,"utf8"),statSync(e).size>r.trimTriggerBytes&&tK(e,r.maxRecords);}s(Ph,"appendJsonl");function tK(e,t){if(!existsSync(e))return;let r=readFileSync(e,"utf8").split(`
|
|
354
354
|
`).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(`
|
|
355
355
|
`)}
|
|
356
|
-
`,"utf8"),renameSync(o,e);}s(
|
|
357
|
-
`))if(r.trim().length!==0)try{t.push(JSON.parse(r));}catch{}return t}s(
|
|
358
|
-
${
|
|
359
|
-
${
|
|
360
|
-
|
|
361
|
-
${
|
|
362
|
-
|
|
363
|
-
|
|
356
|
+
`,"utf8"),renameSync(o,e);}s(tK,"capJsonl");function Dh(e){if(!existsSync(e))return [];let t=[];for(let r of readFileSync(e,"utf8").split(`
|
|
357
|
+
`))if(r.trim().length!==0)try{t.push(JSON.parse(r));}catch{}return t}s(Dh,"readJsonl");var X6=5e3,Q6=2e6,q6="AGENTSMESH_LESSONS_TELEMETRY",Z6="AGENTSMESH_SESSION_ID";function Cm(e=process.env){let t=e[Z6];return t!==void 0&&t.trim().length>0?t:void 0}s(Cm,"sessionId");function Bu(e){return join(je(e).base,"recall-log.jsonl")}s(Bu,"recallLogPath");function la(e=process.env){return e[q6]==="1"}s(la,"isTelemetryEnabled");function rK(e,t,r=process.env){la(r)&&Ph(Bu(e),t,{maxRecords:X6,trimTriggerBytes:Q6});}s(rK,"appendRecallRecord");function nK(e){return Th(Bu(e))}s(nK,"recallLogExists");function oK(e){return Dh(Bu(e))}s(oK,"readRecallLog");var t7=5e3,r7=2e6;function Ku(e){return join(je(e).base,"capture-log.jsonl")}s(Ku,"captureLogPath");function n7(e,t,r=process.env){la(r)&&Ph(Ku(e),t,{maxRecords:t7,trimTriggerBytes:r7});}s(n7,"appendCaptureRecord");function sK(e){return Th(Ku(e))}s(sK,"captureLogExists");function iK(e){return Dh(Ku(e))}s(iK,"readCaptureLog");function SL(e,t,r,n=process.env){if(!la(n))return;let o=Cm(n);n7(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(SL,"recordCapture");function o7(e){return e.toLowerCase().split(/[^a-z0-9]+/).filter(t=>t.length>0)}s(o7,"splitTokens");function s7(e){let t=[];return e.file!==void 0&&t.push(e.file),e.command!==void 0&&t.push(e.command),t.length===0?[]:o7(t.join(" "))}s(s7,"deriveHaystackTokens");function i7(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(i7,"containsRun");function aK(e,t){return t.keyword!==void 0&&t.keyword.toLowerCase().includes(e.toLowerCase())?true:i7(Gt(e),s7(t))}s(aK,"keywordMatches");var l7=5e6;function Em(e,t){if(t.file===void 0&&t.command===void 0&&t.keyword===void 0)return [];let r=kL(e,t),n=[];for(let[o,i]of Object.entries(e.lessons))i.status==="active"&&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(Em,"queryLessons");function RL(e,t){let r={file_glob:new Set,command_pattern:new Set,keyword:new Set},n={remaining:l7};for(let[o,i]of Object.entries(e.triggers))c7(i,t,n)&&r[i.kind].add(o);return r}s(RL,"collectMatchedTriggersByKind");function kL(e,t){let{file_glob:r,command_pattern:n,keyword:o}=RL(e,t);return new Set([...r,...n,...o])}s(kL,"collectMatchedTriggerIds");function c7(e,t,r){switch(e.kind){case "file_glob":return t.file===void 0?false:g6(e.pattern,{dot:true})(t.file);case "command_pattern":{if(t.command===void 0)return false;let n=GB(e.pattern);return n!==null&&n.test(t.command,r)}case "keyword":return aK(e.pattern,t)}}s(c7,"triggerMatches");function Nh(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(Nh,"buildFanout");function lK(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(lK,"buildTopicCoherence");var Wu=10,vh=400,IL=60,m7=3,p7=2,u7=1;function LL(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(LL,"rankMap");function Nl(e){return Math.ceil(e.length/4)}s(Nl,"estTokens");function Om(e,t,r,n={}){if(r.length===0)return [];let o=gB(t),i=hB(e),a=Nh(e),l=lK(r),c=kL(e,t),m=r.map(({id:h,lesson:_})=>{let S=_.triggers.filter(I=>c.has(I)),R=0;for(let I of S)R=Math.max(R,1/a.get(I));return {id:h,lesson:_,bm25:yB(o,_.rule,i),specificity:R,topicCoherence:l.get(h),matchedTriggers:S}}),p=LL(m.map(h=>({id:h.id,value:h.bm25}))),u=LL(m.map(h=>({id:h.id,value:h.specificity}))),f=LL(m.map(h=>({id:h.id,value:h.topicCoherence}))),g=m.map(h=>({id:h.id,lesson:h.lesson,score:m7/(IL+u.get(h.id))+p7/(IL+f.get(h.id))+u7/(IL+p.get(h.id)),reason:{matchedTriggers:h.matchedTriggers,bm25:h.bm25,specificity:h.specificity,topicCoherence:h.topicCoherence}})).sort((h,_)=>{if(_.score!==h.score)return _.score-h.score;let S=h.lesson.createdAt,R=_.lesson.createdAt;return S!==R?S<R?1:-1:h.id<_.id?-1:1});return d7(g,n)}s(Om,"rankLessons");function d7(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=Nl(r[0].lesson.rule);for(let i of r.slice(1)){let a=Nl(i.lesson.rule);if(o+a>t.maxTokens)break;o+=a,n.push(i);}r=n;}return r}s(d7,"applyCaps");function pK(){return {recallLimit:Wu,recallMaxTokens:vh,autoPrune:false}}s(pK,"defaultLessonsConfig");function Fh(e){return typeof e=="number"&&Number.isInteger(e)&&e>0?e:null}s(Fh,"positiveInt");function uK(e){let t=je(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&&Fh(n.recallLimit)===null&&o.push("recallLimit"),"recallMaxTokens"in n&&Fh(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(uK,"lessonsConfigWarning");function Mh(e){let t={limit:Wu,maxTokens:vh},r=je(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:Fh(o.recallLimit)??t.limit,maxTokens:Fh(o.recallMaxTokens)??t.maxTokens}}catch{return t}}s(Mh,"loadRecallConfig");var fK="agentsmesh lessons hook",R7="Edit|Write|Bash";function gK(e){let t=join(e,".agentsmesh","hooks.yaml");if(!existsSync(t))return false;let r=parseDocument(readFileSync(t,"utf8")),n=r.get("PostToolUse"),o=n instanceof YAMLSeq?n:new YAMLSeq;return o.items.some(a=>a instanceof YAMLMap&&a.get("command")===fK)?false:(o.add(r.createNode({matcher:R7,type:"command",command:fK})),r.set("PostToolUse",o),writeFileSync(t,String(r),"utf8"),true)}s(gK,"injectRecallHook");Be();var k7=['## 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.'],CL=`${cp}
|
|
358
|
+
${Uu}
|
|
359
|
+
${y_}`;function hK(e){let t=I7(e);return qd(t,CL)}s(hK,"appendLessonsParagraph");function I7(e){let t=mp(e,cp,y_);return L7(t).trim()}s(I7,"stripLessonsParagraph");function L7(e){return [Uu,...k7].reduce((t,r)=>t.replace(`
|
|
360
|
+
|
|
361
|
+
${r}`,"").replace(r,""),e)}s(L7,"stripRawProceduralRule");B();var EL="lessons",C7="Use when about to edit a file or run a state-changing command, or after any failure, correction, or surprising result.",E7=`# Lessons \u2014 operating manual (Iron Law)
|
|
362
|
+
|
|
363
|
+
## The Iron Law
|
|
364
|
+
|
|
365
|
+
**NO MUTATION WITHOUT RECALL. NO COMPLETION WITHOUT A CAPTURE DECISION.**
|
|
366
|
+
|
|
367
|
+
Violating the letter is violating the spirit. Edited a file or ran a state-changing
|
|
368
|
+
command without recall? Process violation. Did the turn hit a failure / correction /
|
|
369
|
+
regression / wrong assumption / surprise and you have not captured (nor stated
|
|
370
|
+
\`Lesson: none\`)? The task is INCOMPLETE \u2014 and the user will check. The graph
|
|
371
|
+
\`.agentsmesh/lessons/lessons.json\` is canonical \u2014 never hand-edit.
|
|
372
|
+
|
|
373
|
+
## Recall \u2014 before each file edit and each state-changing command
|
|
374
|
+
|
|
375
|
+
\`agentsmesh lessons query --file <path> --cmd <command>\`, then apply every rule.
|
|
376
|
+
Pure-read commands (read-only) and the query itself are exempt. **keyword-only recall
|
|
377
|
+
is the anti-pattern** \u2014 lessons are keyed to a \`file_glob\`/\`command_pattern\`.
|
|
378
|
+
|
|
379
|
+
## Capture \u2014 Gate Function (before any completion claim)
|
|
380
|
+
|
|
381
|
+
1. **SELF-CRITIQUE**: any failure, correction, regression, wrong assumption,
|
|
382
|
+
useful surprise, repeated friction, or non-obvious fix? Failing
|
|
383
|
+
tests/lint/typecheck and user/review corrections \u2014 yours or anyone's \u2014 all count.
|
|
384
|
+
2. **CAPTURE** a reusable imperative rule with an effective trigger (else say so):
|
|
385
|
+
\`agentsmesh lessons add "<rule>" --topic <id> --trigger-file <glob>\`
|
|
386
|
+
3. **RECEIPT**: emit \`Lesson: captured <id>\` or \`Lesson: none\`.
|
|
387
|
+
|
|
388
|
+
At least one _effective_ trigger is required or the capture is rejected
|
|
389
|
+
(\`UNRECALLABLE_LESSON\`); prefer \`--trigger-file\`. No shell \u2192 MCP \`lessons_query\`,
|
|
390
|
+
\`lessons_add\`, \`lessons_topics\`, \`lessons_show\`, \`lessons_deprecate\`. Run
|
|
391
|
+
\`agentsmesh lessons --help\` for every subcommand and flag: query, add, topics, show,
|
|
392
|
+
deprecate, merge, untrigger, strip-markers, prune, journal, validate, stats, import-md.
|
|
393
|
+
|
|
394
|
+
### Rationalization Prevention \u2014 these excuses mean STOP
|
|
395
|
+
|
|
396
|
+
| Excuse | Reality |
|
|
397
|
+
| --- | --- |
|
|
398
|
+
| "Small edit / I already know this / later" | Query first \u2014 skipping recall is a process violation |
|
|
399
|
+
| "Nothing reusable here" | You hit a failure/surprise \u2014 name it or capture it |
|
|
400
|
+
| "My own TDD red, not a real failure" | A red you did not predict IS a lesson |
|
|
401
|
+
| "I fixed one site; the twin is obvious" | Capture it \u2014 the unfixed twin is what gets missed |
|
|
402
|
+
| "Different words, so the rule doesn't apply" | Spirit over letter |
|
|
403
|
+
|
|
404
|
+
## Lesson gate \u2014 before final response
|
|
405
|
+
|
|
406
|
+
The final response MUST carry the receipt: \`Lesson: captured <id>\` or \`Lesson: none\`.
|
|
407
|
+
No receipt = task incomplete. Do not capture one-off facts, task summaries, or project
|
|
408
|
+
context \u2014 only reusable imperative rules with an effective trigger.`,yK=T({name:EL,description:C7},E7);async function vl(e){let t=je(e),r=[],n=[],o=[];mkdirSync(t.base,{recursive:true}),await ht(e),existsSync(t.graph)?o.push(t.graph):(await Pl(e,()=>{}),r.push(t.graph)),w7(e,r,o),O7(e,r,n,o);let i=b7(e),a=gK(e),l=await _h(e,[Dl(e,Bu(e)),Dl(e,Ku(e))]);return {created:r,updated:n,skipped:o,rootRuleUpdated:i,gitignoreUpdated:l,recallHookInjected:a}}s(vl,"scaffoldLessons");function O7(e,t,r,n){let o=join(e,".agentsmesh/skills",EL,"SKILL.md"),i=`${yK}
|
|
409
|
+
`;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(O7,"seedLessonsSkill");function w7(e,t,r){let n=je(e).config;if(existsSync(n)){r.push(n);return}mkdirSync(dirname(n),{recursive:true}),writeFileSync(n,`${JSON.stringify(pK(),null,2)}
|
|
410
|
+
`,"utf8"),t.push(n);}s(w7,"seedLessonsConfig");function b7(e){let t=join(e,".agentsmesh/rules/_root.md");if(!existsSync(t)){mkdirSync(dirname(t),{recursive:true});let o=`---
|
|
364
411
|
root: true
|
|
365
412
|
description: ""
|
|
366
413
|
---
|
|
367
414
|
|
|
368
|
-
${
|
|
415
|
+
${CL}
|
|
369
416
|
|
|
370
417
|
# Operational Guidelines
|
|
371
|
-
`;return writeFileSync(t,o,"utf8"),true}let r=readFileSync(t,"utf8"),n=`${
|
|
372
|
-
`;return n===r?false:(writeFileSync(t,n,"utf8"),true)}s(
|
|
418
|
+
`;return writeFileSync(t,o,"utf8"),true}let r=readFileSync(t,"utf8"),n=`${hK(r)}
|
|
419
|
+
`;return n===r?false:(writeFileSync(t,n,"utf8"),true)}s(b7,"injectProceduralBlock");var jh="agentsmesh.yaml",wL="agentsmesh.local.yaml",x7=["agentsmesh.local.yaml",".agentsmeshcache",".agentsmesh/.lock.tmp",".agentsmesh/packs/"],T7=Object.fromEntries(Pe.map(e=>[e.id,(t,r)=>e.generators.importFrom(t,{scope:r})])),kK=Pe.filter(e=>e.globalSupport!==void 0).map(e=>e.id);async function IK(e,t={}){let r=t.global===true?"global":"project",n=t.lessons===true;if(n&&r==="global")throw new Error("--lessons is project-mode only. Lessons live in the project tree.");let o=Ra(e,r),i=join(o.configDir,jh),a=await j(i);if(a&&n){let S=await vl(e);return {exitCode:0,data:{scope:r,configFile:jh,localConfigFile:wL,detectedConfigs:[],imported:[],importedToolCount:0,scaffoldType:"none",gitignoreUpdated:false,lessons:S,lessonsOnly:true}}}if(a)throw new Error(`Already initialized. ${jh} exists. Remove it first to re-init.`);let l=await tB(o.rootBase,r),c=r==="global"?l.filter(S=>kK.includes(S)):l,m=r==="global"?kK:void 0,p=[],u,f=0;if(c.length>0)if(t.yes){for(let S of c){let R=T7[S];if(!R)continue;let I=await R(o.rootBase,r);for(let w of I)p.push({from:relative(o.rootBase,w.fromPath).replaceAll("\\","/"),to:w.toPath.replaceAll("\\","/")});}f=c.length,await nB(o.canonicalDir),u="gap-fill",await L(i,Sh(c,m));}else await sL(o.canonicalDir),u="full",await L(i,Sh([],m));else await sL(o.canonicalDir),u="full",await L(i,Sh([],m));let g=join(o.configDir,wL);await L(g,qU);let h=false;r==="project"&&(h=await _h(e,x7));let _=n?await vl(e):void 0;return {exitCode:0,data:{scope:r,configFile:jh,localConfigFile:wL,detectedConfigs:c,imported:p,importedToolCount:f,scaffoldType:u,gitignoreUpdated:h,lessons:_}}}s(IK,"runInit");se();function CK(e){let{data:t}=e;if(t.lessonsOnly===true&&t.lessons!==void 0){LK(t.lessons),y.info("Run 'agentsmesh generate' to project the new lessons rule to every target.");return}if(t.detectedConfigs.length>0&&y.info(`Found existing configurations: ${t.detectedConfigs.join(", ")}`),t.detectedConfigs.length>0&&t.imported.length===0&&y.info("Run 'agentsmesh init --yes' to auto-import, or 'agentsmesh import --from <tool>' manually."),t.imported.length>0){y.info("Auto-importing existing configurations (--yes)...");for(let n of t.imported)y.success(` ${n.from} \u2192 ${n.to}`);y.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(", ")})`:"";y.success(`Created ${t.configFile}${r}`),y.success(`Created ${t.localConfigFile}`),t.gitignoreUpdated&&y.success("Updated .gitignore"),t.lessons!==void 0&&LK(t.lessons);}s(CK,"renderInit");function LK(e){let t=process.cwd(),r=s(o=>relative(t,o).replaceAll("\\","/"),"rel");for(let o of e.created)y.success(` Created ${r(o)}`);for(let o of e.updated)y.success(` Refreshed ${r(o)} (managed \u2014 synced to the current manual)`);for(let o of e.skipped)y.info(` Kept ${r(o)} (already current)`);e.rootRuleUpdated?y.success(" Injected the Lessons ritual block into .agentsmesh/rules/_root.md"):y.info(" .agentsmesh/rules/_root.md already carries the current Lessons block"),e.gitignoreUpdated&&y.success(" Added .agentsmesh/lessons/recall-log.jsonl to .gitignore (opt-in telemetry stays out of git)"),e.recallHookInjected&&y.success(" Wired the PostToolUse recall hook into .agentsmesh/hooks.yaml (deterministic recall on hook-capable targets)"),y.success("Lessons subsystem ready (.agentsmesh/lessons/)."),y.info(" Run 'agentsmesh generate' to sync the ritual into every target."),y.info("");let n=e.created.some(o=>o.replaceAll("\\","/").endsWith("lessons.json"));y.info(n?" The graph starts empty and grows as agents capture failures. Try the loop:":" Recall + capture loop:"),y.info(' capture: agentsmesh lessons add "<rule>" --topic <id> --new-topic --topic-summary "<line>" --trigger-file "<glob>"'),y.info(" recall: agentsmesh lessons query --file <path> --cmd <command>"),y.info(" inspect: agentsmesh lessons journal | lessons show <id> | lessons validate"),y.info(" Optional: export AGENTSMESH_LESSONS_TELEMETRY=1 to measure recall cost via `lessons stats`.");}s(LK,"renderLessons");tt();xe();var D7=Object.fromEntries(Pe.map(e=>[e.id,{importFrom:e.generators.importFrom,emptyImportMessage:e.emptyImportMessage,lintRules:e.lintRules,lint:e.lint,capabilities:e.capabilities}]));function Uh(e){return D7[e]}s(Uh,"getTargetCatalogEntry");rt();sn();op();var $7={type:"stdio",command:"npx",args:["-y","agentsmesh","mcp"]};function j7(e){return e.mcpServers.agentsmesh!==void 0?false:(e.mcpServers.agentsmesh=$7,true)}s(j7,"injectAgentsmeshEntry");async function bL(e){let t=resolve(e,".agentsmesh/mcp.json");try{let r;try{r=await cn(t)??{mcpServers:{}};}catch{r={mcpServers:{}};}if(!j7(r))return !1;let n=JSON.stringify(r,null,2)+`
|
|
373
420
|
`;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)}
|
|
374
|
-
`),false}}s(HI,"seedAgentsmeshMcpEntry");Ue();function $U(e,t){return e.map(r=>({from:relative(t,r.fromPath).replaceAll("\\","/"),to:r.toPath}))}s($U,"mapResults");async function GU(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(Hm)||/^## Lessons \(/m.test(n))&&await pl(e);}s(GU,"ensureImportedLessonsSubsystem");async function jU(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(Vt(o)){let p=Xi(r,i),f=await gh(o).importFrom(p.rootBase,{scope:i});return f.length>0&&(await HI(p.rootBase),await GU(p.rootBase,i)),{exitCode:0,data:{scope:i,target:o,files:$U(f,p.rootBase)}}}let a,l;try{({config:a,context:l}=await ye(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: ${je.join(", ")}.`)}await He(a,r);let c=re(o);if(!c)throw new Error(`Unknown --from "${n}". Supported: ${[...je,...a.pluginTargets??[]].join(", ")}.`);let m=await c.generators.importFrom(l.rootBase,{scope:i});return m.length>0&&(await HI(l.rootBase),await GU(l.rootBase,i)),{exitCode:0,data:{scope:i,target:o,files:$U(m,l.rootBase)}}}s(jU,"runImport");tt();Oo();function hh(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(hh,"computeDiff");function yh(e){return `${e.new} files would be created, ${e.updated} updated, ${e.unchanged} unchanged, ${e.deleted} deleted`}s(yh,"formatDiffSummary");Vr();async function BU(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 ye(r,n);await He(a,r);let{canonical:c}=await Ft(a,l.configDir,{},l.canonicalDir),m=await zr({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}=hh(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(BU,"runDiff");tt();Oo();A();rt();ea();Oe();var j5=[{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 KU(e){let t=new Set(e.enabledFeatures),r=[];for(let n of j5)!t.has(n.featureFlag)||!n.hasContent(e.canonical)||Qr(e.capabilities[n.capabilityKey]).level!=="none"||r.push(v(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(KU,"lintSilentFeatureDrops");Oe();var U5=/^(?:\s*(?:bash|sh|zsh|pwsh|powershell)\s+)?["']?(?<path>(?:\.{1,2}\/|[^/\s"'`]+\/)[^\s"'`]+)["']?(?:\s|$)/;function B5(e){let r=e.match(U5)?.groups?.path;return typeof r=="string"?r:null}s(B5,"extractScriptToken");function WU(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=B5(o.command);i&&r.push(v(".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(WU,"lintHookScriptReferences");Oe();function HU(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(v(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(HU,"lintRuleScopeInversion");var W5=new Set([".git","node_modules"]),H5=2e5;function Gi(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())W5.has(o.name)||r.push(join(n,o.name));else if(o.isFile()&&(t.add(cl(e,join(n,o.name))),t.size>H5))return t}}catch{return null}return t}s(Gi,"listProjectFiles");var J5="lessons",JU=".agentsmesh/lessons/lessons.json",YU=".agentsmesh/rules/_root.md",Y5=/^## Lessons \(/m;function XU(e,t){if(t==="global")return [];let r=Ge(e);if(!existsSync(r.graph))return [];let n=[],o;try{o=lu(e);}catch(m){return [zI("error",JU,`lessons.json failed to load: ${m instanceof Error?m.message:String(m)}`)]}let i=Gi(e)??void 0,a=xo(o,{knownPaths:i});for(let m of a.findings)n.push(zI(m.level,JU,`[${m.code}] ${m.message}`));let l=join(e,YU),c=existsSync(l)?readFileSync(l,"utf8"):"";return Y5.test(c)||n.push(zI("warning",YU,'lessons procedural rule ("## Lessons (...)") is missing from _root.md \u2014 recall/capture enforcement will not fire.')),n}s(XU,"lintLessonsSubsystem");function zI(e,t,r){return {level:e,file:t,target:J5,message:r}}s(zI,"diag");var X5=["node_modules",".git","dist","coverage",".agentsmesh"];async function q5(e){return (await U(e)).filter(n=>{let o=relative(e,n);return !X5.some(i=>o.includes(`/${i}/`)||o.startsWith(`${i}/`))}).map(n=>relative(e,n))}s(q5,"getProjectFiles");async function Rh(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=[...XU(r,i)],h=i==="global"?[]:await q5(r);for(let _ of l){let S=re(_),I=Vt(_)?gh(_):S;I?.capabilities&&g.push(...KU({target:_,capabilities:I.capabilities,canonical:t,enabledFeatures:e.features})),f&&g.push(...WU({target:_,canonical:t,hasScriptProjection:S?.postProcessHookOutputs!==void 0})),c&&g.push(...HU({target:_,canonical:t,preservesManualActivation:S?.preservesManualActivation===true})),c&&I?.lintRules&&g.push(...I.lintRules(t,r,h,{scope:i})),S?.generators.lint&&g.push(...S.generators.lint(t));let b={scope:i};m&&I?.lint?.commands&&g.push(...I.lint.commands(t,b)),p&&I?.lint?.mcp&&g.push(...I.lint.mcp(t,b)),u&&I?.lint?.permissions&&g.push(...I.lint.permissions(t,b)),f&&I?.lint?.hooks&&g.push(...I.lint.hooks(t,b));}let R=g.some(_=>_.level==="error");return {diagnostics:g,hasErrors:R}}s(Rh,"runLint");Vr();async function QU(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 ye(r,n);await He(a,r);let{canonical:c}=await Ft(a,l.configDir,{},l.canonicalDir),{diagnostics:m,hasErrors:p}=await Rh(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(QU,"runLintCmd");ne();function ZU(e){let{data:t}=e;if(t.diagnostics.length===0){y.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)y.error(`${a.file} (${a.target}): ${a.message}`);for(let a of n)y.warn(`${a.file} (${a.target}): ${a.message}`);let o=t.summary.errors,i=t.summary.warnings;y.info(`${o} error${o!==1?"s":""}, ${i} warning${i!==1?"s":""}`);}s(ZU,"renderLint");ne();function eB(e){let{data:t}=e;if(!t.hasLock){y.error("Not initialized for collaboration. Run 'agentsmesh generate' first.");return}if(t.inSync){y.success("Lock file is in sync.");return}let r=new Set(t.lockedViolations);y.error("Conflict detected:");for(let n of t.extendsModified)y.error(` extend "${n}" was modified`);for(let n of t.modified){let o=r.has(n)?" [LOCKED]":"";y.error(` ${n} was modified${o}`);}for(let n of t.added){let o=r.has(n)?" [LOCKED]":"";y.error(` ${n} was added${o}`);}for(let n of t.removed){let o=r.has(n)?" [LOCKED]":"";y.error(` ${n} was removed${o}`);}y.info("Run 'agentsmesh merge' to resolve, or 'agentsmesh generate --force' to accept current state.");}s(eB,"renderCheck");ne();function tB(e){let{data:t}=e;if(t.files.length===0){y.info(`Nothing to import from ${t.target}.`);return}for(let n of t.files)y.success(`${n.from} \u2192 ${n.to}`);let r=t.scope==="global"?" --global":"";y.info(`Imported ${t.files.length} file(s). Run 'agentsmesh generate${r}' to sync to other tools.`);}s(tB,"renderImport");ne();function rB(e){let{summary:t}=e.data;if(t.created+t.updated+t.unchanged+t.deleted===0){y.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);y.info(yh({new:t.created,updated:t.updated,unchanged:t.unchanged,deleted:t.deleted}));}s(rB,"renderDiff");ne();function nB(e){if(!e.data.hadConflict){y.info("No conflicts to resolve.");return}y.success("Lock file conflict resolved.");}s(nB,"renderMerge");nu();su();tt();Oo();nu();su();ne();var e6=300;function t6(e){return e.replace(/\\/g,"/").replace(/\/+$/,"")}s(t6,"normalizeWatchPath");function r6(e,t){let r=t6(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(r6,"shouldIgnoreWatchPath");function n6(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(n6,"featureFingerprint");async function sB(e,t,r={}){let n=t??process.cwd(),o=e.global===true?"global":"project",{context:i}=await ye(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:S}=await ye(n,o),{canonical:I}=await Ft(_,S.configDir,{},S.canonicalDir),b=I.mcp?Object.keys(I.mcp.mcpServers).length:0,P=I.permissions?I.permissions.allow.length+I.permissions.deny.length:0,T=I.hooks?Object.values(I.hooks).reduce((M,te)=>M+(Array.isArray(te)?te.length:0),0):0,W=I.ignore.length,$=n6(_.features,I.rules.length,I.commands.length,I.agents.length,I.skills.length,b,P,T,W),Y=c!==null&&c!==$;if(c=$,m)return;let ee=await qc(e,n,{printMatrix:false});if(Qc(ee),!m){if(Y){let M=await ru(e,n);ou(M,{verbose:e.verbose===true});}else y.info("Regenerated.");r.onCycle?.({featuresChanged:Y});}},"run"),f=s(()=>{let _=u().catch(S=>{if(!m){let I=S instanceof Error?S.message:String(S);y.error(I);}}).finally(()=>{p===_&&(p=null);});p=_;},"scheduleRun"),g=s(()=>{m||(l&&clearTimeout(l),l=setTimeout(f,e6));},"schedule"),h=r.usePolling??process.platform==="win32",R=Z5.watch(a,{ignoreInitial:true,usePolling:h,...h&&r.pollIntervalMs!==void 0?{interval:r.pollIntervalMs}:{}});return R.on("all",(_,S)=>{r6(i.canonicalDir,S)||g();}),await new Promise((_,S)=>{R.once("ready",_),R.once("error",S);}),y.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 R.close(),p&&await p;},"stop")}}s(sB,"runWatch");tt();od();async function _h(e){let{config:t,configDir:r,canonicalDir:n}=e,o=await Fg(n);if(o===null)return {inSync:false,hasLock:false,modified:[],added:[],removed:[],extendsModified:[],lockedViolations:[]};let i=await vs(n),a=await Pl(t,r),l=a.length>0?await Vc(a):{},c=new Set(Object.keys(o.checksums)),m=new Set(Object.keys(i)),p=[],u=[],f=[];for(let S of c){let I=i[S];I===void 0?f.push(S):I!==o.checksums[S]&&p.push(S);}for(let S of m)c.has(S)||u.push(S);let g=new Set([...Object.keys(o.extends),...Object.keys(l)]),h=[];for(let S of g)l[S]!==o.extends[S]&&h.push(S);let R=$g(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:R}}s(_h,"checkLockSync");Vr();async function iB(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",{config:o,context:i}=await ye(r,n);await He(o,r);let a=await _h({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(iB,"runCheck");tt();A();od();var s6=".lock",i6="<<<<<<<";async function VI(e){let t=join(e,s6),r=await k(t);return r===null?false:r.includes(i6)}s(VI,"hasLockConflict");async function lB(e,t,r){if(!await VI(e))throw new Error("No conflict to resolve.");let o=await vs(e),i=dirname(e),a=r?await Pl(r,i):[],l=a.length>0?await Vc(a):{},c=await Gg(join(e,"packs")),m=process.env.USER??process.env.USERNAME??"unknown";await Mg(e,{generatedAt:new Date().toISOString(),generatedBy:m,libVersion:t,checksums:o,extends:l,packs:c});}s(lB,"resolveLockConflict");async function cB(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",{config:o,context:i}=await ye(r,n),a=i.canonicalDir;return await VI(a)?(await lB(a,Ji(),o),{exitCode:0,data:{hadConflict:true,resolved:true}}):{exitCode:0,data:{hadConflict:false,resolved:false}}}s(cB,"runMerge");tt();xg();function mB(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?Hc.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(mB,"readInstallFlags");var c6=".install.lock";async function mm(e,t={}){return await mkdir(e,{recursive:true}),Yc(join(e,c6),{...t,label:"install lock"})}s(mm,"acquireInstallLock");tt();A();Fm();var u6=promisify(execFile);function Sh(e,t){if(e.startsWith("-"))throw new Error(`agentsmesh refuses ${t} starting with "-" (option-injection guard): ${e}`)}s(Sh,"ensureNotFlag");async function JI(e){let{stdout:t}=await u6("git",e,{env:{...process.env,GIT_TERMINAL_PROMPT:"0"}});return t.trim()}s(JI,"runGit");async function pB(){try{return await JI(["--version"]),!0}catch{return false}}s(pB,"isGitAvailable");async function d6(e,t){Sh(e,"remote-url"),Sh(t,"ref");let r=[t,`refs/heads/${t}`,`refs/tags/${t}`],n;for(let o of r)try{let a=(await JI(["ls-remote",e,o])).split(`
|
|
375
|
-
`).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(
|
|
376
|
-
`).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 d6(t,r)}s(kh,"resolveRemoteRefForInstall");async function uB(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 kh(e.rawRef||"HEAD",t);if(e.kind==="github"){let l=`github:${e.org}/${e.repo}@${r}`;return {resolvedPath:(await Tl(l,"install",{cacheDir:Jt(),refresh:false,allowOfflineFallback:false})).resolvedPath,sourceForYaml:l,version:r}}if(e.kind==="gitlab"){let l=`gitlab:${e.org}/${e.repo}@${r}`;return {resolvedPath:(await Tl(l,"install",{cacheDir:Jt(),refresh:false,allowOfflineFallback:false})).resolvedPath,sourceForYaml:l,version:r}}let n=r,i=`git+${(e.gitPlusBase??t).split("#")[0]}#${n}`;return {resolvedPath:(await Tl(i,"install",{cacheDir:Jt(),refresh:false,allowOfflineFallback:false})).resolvedPath,sourceForYaml:i,version:r}}s(uB,"fetchInstallSource");async function dB(e,t){if(e.kind==="local")return {resolvedPath:e.localRoot,sourceForYaml:e.localSourceForYaml};try{let r=await uB(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(dB,"resolveInstallResolvedPath");function Su(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(Su,"parseGithubTreeUrl");function ku(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(ku,"parseGithubBlobUrl");function Iu(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(Iu,"parseGitlabTreeUrl");function Lu(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(Lu,"parseGitlabBlobUrl");var f6=new Set(["tree","blob","commit","releases","actions","issues","pulls","settings","wiki","discussions","security","projects","packages"]);function Cu(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||f6.has(r[1]))return null;let n=r[0],o=r[1];return {org:n,repo:o}}catch{return null}}s(Cu,"parseGithubRepoUrl");function Eu(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(Eu,"parseGitlabRepoUrl");function wu(e){let t=e.match(/^git@github\.com:([^/]+)\/(.+?)(?:\.git)?$/i);return t?{org:t[1],repo:t[2].replace(/\.git$/i,"")}:null}s(wu,"parseGitSshGithub");function bu(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(bu,"parseGitSshGitlab");A();var y6=/^[A-Za-z]:[\\/]/,R6=/^[A-Za-z]:\//;function fB(...e){return e.some(t=>t.includes("\\")||y6.test(t))?win32:posix}s(fB,"pathApiFor");function Au(e){return e.replace(/\\/g,"/")}s(Au,"toPosixPath");function Ou(e){return Au(e).replace(/^\/+|\/+$/g,"")}s(Ou,"normalizeInstallPathField");function Ih(e){let t=Au(e);return t===""||t==="."||t==="./."?".":t.startsWith("./")||t.startsWith("../")||t.startsWith("/")||R6.test(t)?t:`./${t}`}s(Ih,"normalizeLocalSourceForYaml");function ji(e){return {...e,source:e.source_kind==="local"?Ih(e.source):e.source,...e.path!==void 0?{path:Ou(e.path)}:{},...e.paths!==void 0?{paths:e.paths.map(t=>Ou(t))}:{}}}s(ji,"normalizePersistedInstallPaths");function gB(e,t,r){let n=fB(e,t),o=n.normalize(e),i=n.normalize(t),a=Ou(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=Ou(u),g=Au(n.relative(i,p))||".";return {kind:"local",rawRef:"",pathInRepo:a||f.replace(/\.md$/i,"").replace(/\/$/,""),localRoot:p,localSourceForYaml:Ih(g)}}let m=Au(n.relative(i,o))||".";return {kind:"local",rawRef:"",pathInRepo:a,localRoot:o,localSourceForYaml:Ih(m)}}s(gB,"localParsedFromAbsPath");async function YI(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=Su(n)??ku(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=Cu(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=Iu(n)??Lu(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=Eu(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=wu(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=bu(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 gB(m,t,o)}s(YI,"parseInstallSource");function xu(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=Su(t)??ku(t);if(a!==null)return {kind:"github",remoteUrl:`https://github.com/${a.org}/${a.repo}.git`,ref:a.ref};let l=Cu(t);if(l!==null)return {kind:"github",remoteUrl:`https://github.com/${l.org}/${l.repo}.git`,ref:"HEAD"};let c=Iu(t)??Lu(t);if(c!==null)return {kind:"gitlab",remoteUrl:`https://gitlab.com/${c.namespace}/${c.project}.git`,ref:c.ref};let m=Eu(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=wu(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=bu(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(xu,"parseSourceUrl");Pk();function Tn(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(Tn,"featuresFromCanonical");async function Lh(e,t={}){let{sliceRoot:r,implicitPick:n}=await Cg(e),{canonical:o,cleanup:i}=await Eg(r,{...t,enableTargetEntityMappers:true});return {canonical:o,features:Tn(o),implicitPick:n,cleanup:i}}s(Lh,"discoverFromContentRoot");function hB(e){return e.description.trim()?{skill:e,ok:true}:{skill:e,ok:false,reason:"missing description in frontmatter"}}s(hB,"validateSkill");function yB(e){return e.description.trim()?{rule:e,ok:true}:{rule:e,ok:false,reason:"missing description in frontmatter"}}s(yB,"validateRule");function RB(e){return e.description.trim()?{command:e,ok:true}:{command:e,ok:false,reason:"missing description in frontmatter"}}s(RB,"validateCommand");function _B(e){return e.description.trim()?{agent:e,ok:true}:{agent:e,ok:false,reason:"missing description in frontmatter"}}s(_B,"validateAgent");function ft(e){return basename(e.source).replace(/\.md$/i,"")}s(ft,"ruleSlug");function k6(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(k6,"featuresFromImplicitPick");function um(e,t){let{implicitPick:r}=t,n=t.scopedFeatures??k6(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(ft(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(um,"narrowDiscoveredForInstallScope");Gk();async function SB(e,t,r,n,o={}){let i=await Og(e,t,{preferredSkillNames:t==="skills"?n?.skills:void 0}),{canonical:a,cleanup:l}=await Lh(i.discoveryRoot,o),c=um(a,{scopedFeatures:[t]});return {prep:{yamlTarget:r,scopedFeatures:[t],cleanup:s(async()=>{await Promise.allSettled([l(),i.cleanup()]);},"combinedCleanup")},narrowed:c,discoveredFeatures:Tn(c)}}s(SB,"resolveManualDiscoveredForInstall");vo();kk();A();xe();var I6=(()=>{let e=new Map;for(let r of Pe){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 L6(e){return e.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"")}s(L6,"norm");function Ch(e){let t=L6(e);if(t){for(let{prefix:r,target:n}of I6)if(t===r||t.startsWith(`${r}/`))return n}}s(Ch,"targetHintFromNativePath");function XI(e,t){return Ch(e)===t}s(XI,"pathSupportsNativePick");function kB(e,t){if(!e||!t)return;let r=Ch(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(kB,"validateTargetMatchesPath");function IB(e){return (e.commands?.length??0)+(e.rules?.length??0)+(e.skills?.length??0)+(e.agents?.length??0)>0}s(IB,"extendPickHasArrays");rt();A();X_();async function w6(e,t,r,n){if(n.kind==="skillDir")return Cf(e);if(n.kind==="firstSegment"){let c=t.slice(r.prefix.length).split("/").filter(Boolean)[0];return c?[c]:[]}let o=await U(e),i=n.suffix,a=i.toLowerCase();return [...new Set(o.filter(l=>l.toLowerCase().endsWith(a)).map(l=>basename(l,i)))].sort()}s(w6,"namesForStrategy");async function LB(e,t,r){let n=re(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 w6(a,o,i,i.strategy);return l.length?{[i.feature]:l}:{}}return {}}s(LB,"inferImplicitPickFromNativePath");function CB(e){return (e.commands?.length??0)+(e.rules?.length??0)+(e.skills?.length??0)+(e.agents?.length??0)===0}s(CB,"isImplicitPickEmpty");Ik();function Tu(e){return e.replace(/\\/g,"/").replace(/\/+$/,"")}s(Tu,"normalizePath");function T6(e,t){let r=Tu(e),n=Tu(t);return r===n||r.startsWith(`${n}/`)||n.startsWith(`${r}/`)}s(T6,"overlapsPath");function Eh(e,t){let r=e??[];return r.includes(t)||r.push(t),r}s(Eh,"addUnique");async function P6(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(P6,"makeStageRoot");function D6(e,t){let r;for(let o of e){if(o.feature==="rules"&&o.toPath.startsWith(".agentsmesh/rules/")){r={...r,rules:Eh(r?.rules,basename(o.toPath,".md"))};continue}if(o.feature==="commands"&&o.toPath.startsWith(".agentsmesh/commands/")){let i=Tu(relative(join(t,".agentsmesh","commands"),join(t,o.toPath)));r={...r,commands:Eh(r?.commands,i.replace(/\.md$/i,"").split("/").filter(Boolean).join(":"))};continue}if(o.feature==="agents"&&o.toPath.startsWith(".agentsmesh/agents/")){r={...r,agents:Eh(r?.agents,basename(o.toPath,".md"))};continue}if(o.feature==="skills"&&o.toPath.startsWith(".agentsmesh/skills/")){let a=Tu(relative(join(t,".agentsmesh","skills"),join(t,o.toPath))).split("/")[0];a&&(r={...r,skills:Eh(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(D6,"buildPickFromResults");function N6(e,t,r,n){let o=join(t,...Tu(e).split("/")),i=r.filter(a=>T6(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:D6(i,t)}}s(N6,"scopeImportedResults");async function qI(e,t){let{stageRoot:r,cleanup:n}=await P6(e);try{let o=await Xp(r,t);return {stageRoot:r,results:o,cleanup:n}}catch(o){throw await n(),o}}s(qI,"stageImportedNativeRepo");async function QI(e,t,r){let n=await qI(e,r);try{return {stageRoot:n.stageRoot,cleanup:n.cleanup,...N6(t,n.stageRoot,n.results,r)}}catch(o){throw await n.cleanup(),o}}s(QI,"stageNativeInstallScope");async function OB(e,t,r,n){let o=n.explicitTarget?.trim();o&&fr.parse(o);let i=r.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"");kB(o,i);let a=join(e,".agentsmesh"),l=await j(a),c=i?Ch(i):void 0,p=!l&&!o&&(!i||c!==void 0)?await fg(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 b=await QI(e,i,u);return {discoveryRoot:b.stageRoot,implicitPick:b.pick,scopedFeatures:b.features,yamlTarget:u,importHappened:true,cleanup:b.cleanup}}let I=await qI(e,u);return {discoveryRoot:i?join(I.stageRoot,i):I.stageRoot,yamlTarget:u,importHappened:true,cleanup:I.cleanup}}let g;l?i?u&&XI(i,u)?g=e:g=t:g=e:g=t;let h,R,_;if(f&&u){let I=await QI(e,i,u);g=I.stageRoot,h=I.pick,R=I.features,_=I.cleanup;}else if(g===e&&i&&u&&XI(i,u)&&(h=await LB(e,i,u),CB(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 S;return o?S=o:u&&(h&&IB(h)||(R?.length??0)>0)&&(S=u),{discoveryRoot:g,implicitPick:h,scopedFeatures:R,yamlTarget:S,importHappened:_!==void 0,cleanup:_}}s(OB,"prepareInstallDiscovery");async function ZI(e,t,r,n,o={}){let i=await OB(e,t,r,{explicitTarget:n}),{canonical:a,implicitPick:l,cleanup:c}=await Lh(i.discoveryRoot,o),m=i.cleanup,u={...i,cleanup:s(async()=>{await Promise.allSettled([c(),...m?[m()]:[]]);},"mergedCleanup")},f=l??i.implicitPick,g=um(a,{implicitPick:f,scopedFeatures:i.scopedFeatures}),h=Tn(g);return {prep:u,discovered:a,implicitPick:f,narrowed:g,discoveredFeatures:h}}s(ZI,"resolveDiscoveredForInstall");var M6=[".claude-plugin","marketplace.json"];async function $6(e){try{return (await stat(e)).isDirectory()}catch{return false}}s($6,"dirExists");function G6(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(G6,"normalizeSource");async function xB(e,t,r){let n=join(e,...M6),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=G6(c.source);if(!m)continue;let p=join(e,m);if(!await $6(p))continue;let u=await t(p,m);r(u)&&l.push({path:m,layout:u});}return l}s(xB,"detectMarketplaceSubPacks");async function Pu(e){try{return (await stat(e)).isDirectory()}catch{return false}}s(Pu,"dirExists");async function Ui(e){try{return (await readdir(e,{withFileTypes:!0})).map(r=>({name:r.name,isDir:r.isDirectory(),isFile:r.isFile()}))}catch{return []}}s(Ui,"listDirEntries");function TB(e){return e.endsWith(".instructions.md")?"copilot-instructions":e.endsWith(".md")?"md":e.endsWith(".mdc")?"mdc":e.endsWith(".toml")?"toml":null}s(TB,"classifyFileShape");var B6=["rules","commands","agents","skills","mcp.json","hooks.yaml","permissions.yaml","ignore"],K6=[".cursorrules",".windsurfrules"];async function DB(e){let t=join(e,".agentsmesh");if(!await Pu(t))return null;let r=await Ui(t),n=new Set(r.map(o=>o.name));for(let o of B6)if(n.has(o))return {path:".agentsmesh"};return null}s(DB,"detectCanonical");async function NB(e){for(let t of K6)try{if((await stat(join(e,t))).isFile())return {path:t}}catch{}return null}s(NB,"detectRootRule");async function vB(e){try{if((await stat(join(e,"SKILL.md"))).isFile())return {path:"SKILL.md"}}catch{}return null}s(vB,"detectRootSkill");$o();var H6={rules:"rules",commands:"commands",agents:"agents",skills:"skills"},z6=[".claude-plugin",".codex-plugin",".cursor-plugin"],V6=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;async function FB(e){let t=join(e,"skills"),r=await Ui(t);for(let n of r)if(!(!n.isDir||n.name.startsWith("_")||!V6.test(n.name))&&await Pu(join(t,n.name)))try{if((await stat(join(t,n.name,"SKILL.md"))).isFile())return {path:"skills"}}catch{continue}return null}s(FB,"detectSkillPack");async function MB(e){let t=[];for(let[r,n]of Object.entries(H6)){let o=join(e,r),i=await Ui(o),a=new Set;for(let l of i){if(!l.isFile||vn(l.name))continue;let c=TB(l.name);c&&a.add(c);}for(let l of a)t.push({path:r,suggestedAs:n,fileShape:l});}return t}s(MB,"detectFlatCollections");async function $B(e){let t=[];for(let r of z6)await Pu(join(e,r))&&t.push({path:r});return t}s($B,"detectToolNativeManifests");async function rL(e,t){let r=await DB(e);if(r)return {canonical:r,skillPack:null,rootSkill:null,rootRule:null,flatCollections:[],toolNativeManifests:[]};let n=await FB(e),o=n?null:await vB(e),i=await MB(e),a=n||o||i.length>0?null:await NB(e),l=await $B(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(rL,"detectFlatLayout");function tL(e){return e.canonical!==null||e.skillPack!==null||e.rootSkill!==null||e.rootRule!==null||e.flatCollections.length>0}s(tL,"hasContent");async function GB(e,t){let r=await Ui(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 rL(i,a);tL(l)&&n.push({path:a,layout:l});}return n}s(GB,"collectSubPackCandidates");async function J6(e,t){if(tL(t))return [];let r=await xB(e,rL,tL);if(r&&r.length>0)return r;let n=await GB(e,"");if(n.length>=2)return n;let o=await Ui(e);for(let i of o){if(!i.isDir||i.name.startsWith("."))continue;let a=await GB(join(e,i.name),i.name);if(a.length>=2)return a}return []}s(J6,"detectSubPacks");async function UB(e){let t=await rL(e,"");if(t.canonical)return {...t,subPacks:[]};let r=await J6(e,t);return {...t,subPacks:r}}s(UB,"detectLayout");rt();A();B();function X6(e){let t=[];for(let r of _d()){let n=re(r)?.nativeInstall?.dialectHints;n?.length&&n.some(o=>o.frontmatterKey in e)&&t.push(r);}return t}s(X6,"targetsMatchingFrontmatter");async function KB(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 k(join(e,r));if(!n)return null;let o=Yr(n,join(e,r));if(!o.ok)return null;let i=X6(o.value.frontmatter);return i.length===1?i[0]??null:null}s(KB,"inferMdcTarget");_g();Lg();function t7(e){let t=e.indexOf("#");return t<0?{path:e,anchor:""}:{path:e.slice(0,t),anchor:e.slice(t)}}s(t7,"splitAnchor");function r7(e){return e.split(sep).join("/")}s(r7,"toForwardSlash");async function n7(e){try{return await stat(e),!0}catch{return false}}s(n7,"pathExists");async function VB(e){let{link:t,fromFile:r,contentRoot:n,includedPaths:o}=e,{path:i,anchor:a}=t7(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=r7(p);return await n7(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(VB,"resolveLink");var o7=/^(?:```|~~~)[^\n]*\n[\s\S]*?^(?:```|~~~)/gm,s7=/(!?)\[[^\]\n]*\]\(([^)\n]+)\)/g,i7=/^\s*\[([^\]\n]+)\]:\s*(.+?)\s*$/gm;function a7(e){let t=[];for(let r of e.matchAll(o7)){let n=r.index??0;t.push([n,n+r[0].length]);}return t}s(a7,"getFencedCodeRanges");function JB(e,t){for(let[r,n]of t)if(e>=r&&e<n)return true;return false}s(JB,"isInRanges");function YB(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(YB,"normalizeDestination");function wh(e){let t=a7(e),r=[];for(let n of e.matchAll(s7)){let o=n.index??0;if(JB(o,t))continue;let i=n[1]==="!",a=n[2];if(a===void 0)continue;let l=e.indexOf("(",o);if(l<0)continue;let c=l+1;r.push({kind:i?"image":"inline",destination:YB(a),destinationOffset:c,destinationLength:a.length});}for(let n of e.matchAll(i7)){let o=n.index??0;if(JB(o,t))continue;let i=(n[1]??"").trim(),a=n[2]??"";if(i===""||a.trim()==="")continue;let l=o,c=e.indexOf("]:",l);if(c<0)continue;let m=c+2;for(;m<e.length&&(e[m]===" "||e[m]===" ");)m+=1;r.push({kind:"reference-def",destination:YB(a),label:i,destinationOffset:m,destinationLength:a.trimEnd().length});}return r}s(wh,"scanMarkdownLinks");function XB(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(XB,"applyRangeRewrites");function l7(e){return !(e.length===0||e.startsWith("#")||e.startsWith("/")||/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(e))}s(l7,"isCandidateRelativePath");function c7(e){let t=e.replaceAll("\\","/");return t==="{baseDir}"?".":t.startsWith("{baseDir}/")?t.slice(10):t}s(c7,"stripPath");function m7(e){let t=e.destination;return l7(t)?{raw:t,path:c7(t),kind:e.kind,...e.label!==void 0?{label:e.label}:{}}:null}s(m7,"toScannedLink");function qB(e){let t=[];for(let r of wh(e)){let n=m7(r);n!==null&&t.push(n);}return t}s(qB,"scanRelativeLinks");function dm(e,t){let r=e.replaceAll("\\","/"),n=t.replaceAll("\\","/"),o=r.endsWith("/")?r:`${r}/`;return n.startsWith(o)?n.slice(o.length):n}s(dm,"toForwardSlashRelative");function QB(e,t,r,n,o){let i=new Set;for(let a of t){i.add(dm(e,a.source));for(let l of a.supportingFiles)i.add(dm(e,l.absolutePath));}for(let a of r)i.add(dm(e,a.source));for(let a of n)i.add(dm(e,a.source));for(let a of o)i.add(dm(e,a.source));return i}s(QB,"buildIncludedPaths");function u7(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(u7,"listScannables");async function ZB(e,t,r,n,o,i){let a=u7(t,r,n,o),l=[];for(let c of a){let m=qB(c.body);if(m.length===0)continue;let p=dm(e,c.sourcePath),u=[];for(let f of m){let g=await VB({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(ZB,"detectBrokenLinks");Lg();async function eK(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 Sg(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 R=o.get(g.name)??[];R.push({path:g.source,precedence:p.precedence}),o.set(g.name,R);}}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(eK,"mergeCommands");async function tK(e,t,r={}){let[n,o,i,a]=await Promise.all([GG(`${e}/skills`,r),Ig(`${e}/agents`,{parseOpts:r}),kg(`${e}/rules`,{parseOpts:r}),eK(e,t.mergeFromToolDirs,r)]),l=[...o.agents],c=[...i.rules],m=QB(e,n,l,a.commands,c),p=await ZB(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(tK,"aggregateAnthropicSkillPack");var rK={mergeFromToolDirs:[{dir:"commands",precedence:0},{dir:".claude/commands",target:"claude-code",precedence:1},{dir:".gemini/commands",target:"gemini-cli",precedence:2}]};Nl();function g7(e){return {rules:[...e.rules],commands:[...e.commands],agents:[...e.agents],skills:[...e.skills],mcp:null,permissions:null,hooks:null,ignore:[]}}s(g7,"aggregateToCanonical");function bh(){return {}}s(bh,"emptyPrep");async function h7(e,t){let r=[];for(let n of t)if(n.fileShape==="mdc"&&!n.inferredTarget){let o=await KB(join(e,n.path));r.push(o?{...n,inferredTarget:o}:n);}else r.push(n);return r}s(h7,"enrichMdcTargets");function oK(e){return e.canonical?"canonical-agentsmesh":e.skillPack||e.rootSkill?"anthropic-skill-pack":e.rootRule||e.toolNativeManifests.length>0?"tool-native":"unknown"}s(oK,"deriveSourceType");async function y7(e,t){let r=await pd(e,t);return {rules:[],commands:[],agents:[],skills:r?[r]:[],mcp:null,permissions:null,hooks:null,ignore:[]}}s(y7,"rootSkillToCanonical");async function R7(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(R7,"rootRuleToCanonical");async function sK(e){let t=e.parseOpts??{};if(e.explicitAs)return {implicitPick:void 0,...await SB(e.contentRoot,e.explicitAs,e.explicitTarget,e.replayPick,t)};if(e.explicitTarget)return ZI(e.resolvedPath,e.contentRoot,e.pathInRepo,e.explicitTarget,t);let r=await UB(e.contentRoot),n=await h7(e.contentRoot,r.flatCollections),o={...r,flatCollections:n};if(o.skillPack&&!o.canonical){let a=await tK(e.contentRoot,rK,t),l=g7(a);return {prep:{cleanup:a.cleanup},implicitPick:void 0,narrowed:l,discoveredFeatures:Tn(l),layout:o,aggregate:a}}if(o.rootSkill&&!o.canonical&&!o.skillPack){let a=await y7(e.contentRoot,t);return {prep:bh(),implicitPick:void 0,narrowed:a,discoveredFeatures:Tn(a),layout:o}}if(o.rootRule&&!o.canonical&&!o.skillPack&&!o.rootSkill&&o.flatCollections.length===0){let a=await R7(e.contentRoot,o.rootRule.path);return {prep:bh(),implicitPick:void 0,narrowed:a,discoveredFeatures:Tn(a),layout:o}}return o.subPacks.length>0?{prep:bh(),implicitPick:void 0,narrowed:{rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]},discoveredFeatures:[],layout:o}:o.flatCollections.length>0?{prep:bh(),implicitPick:void 0,narrowed:{rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]},discoveredFeatures:[],layout:o}:{...await ZI(e.resolvedPath,e.contentRoot,e.pathInRepo,e.explicitTarget,t),layout:o}}s(sK,"resolveInstallDiscovery");function aK(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(aK,"featuresFromLayout");function _7(e){return e.replace(/[/\\]+/g,"-").replace(/[^a-z0-9-]/gi,"").toLowerCase()}s(_7,"subPackSlug");function iK(e,t,r){let n=aK(e.layout),o=!e.layout.skillPack&&!e.layout.rootSkill&&n.length>0;return {name:`${t}-${_7(e.path)}`,source:r,path:e.path,...o?{as:n[0]}:{},features:n}}s(iK,"targetFromSubPack");function lK(e,t,r){return {name:t,source:r,path:e.path,as:e.suggestedAs,target:e.inferredTarget,features:[e.suggestedAs]}}s(lK,"targetFromCollection");function cK(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 S7(e);if(t.flatCollections.length===1){let l=t.flatCollections[0];return {targets:[lK(l,r,n)],isMarketplace:false}}return t.flatCollections.length>1?k7(e):{targets:[],isMarketplace:false}}s(cK,"selectInstallCandidates");function S7(e){let{layout:t,sourceName:r,sourceForYaml:n}=e;if(e.all)return {targets:t.subPacks.map(a=>iK(a,r,n)),isMarketplace:true};if(e.force||!e.tty){let a=t.subPacks.map(l=>({path:l.path,features:aK(l.layout)})).map(l=>` - ${l.path} (${l.features.join(", ")})`).join(`
|
|
421
|
+
`),false}}s(bL,"seedAgentsmeshMcpEntry");Be();function EK(e,t){return e.map(r=>({from:relative(t,r.fromPath).replaceAll("\\","/"),to:r.toPath}))}s(EK,"mapResults");async function OK(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(cp)||/^## Lessons \(/m.test(n))&&await vl(e);}s(OK,"ensureImportedLessonsSubsystem");async function wK(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(Xt(o)){let p=Ra(r,i),f=await Uh(o).importFrom(p.rootBase,{scope:i});return f.length>0&&(await bL(p.rootBase),await OK(p.rootBase,i)),{exitCode:0,data:{scope:i,target:o,files:EK(f,p.rootBase)}}}let a,l;try{({config:a,context:l}=await ye(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 ze(a,r);let c=re(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 bL(l.rootBase),await OK(l.rootBase,i)),{exitCode:0,data:{scope:i,target:o,files:EK(m,l.rootBase)}}}s(wK,"runImport");tt();zo();function Bh(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(Bh,"computeDiff");function Kh(e){return `${e.new} files would be created, ${e.updated} updated, ${e.unchanged} unchanged, ${e.deleted} deleted`}s(Kh,"formatDiffSummary");sn();async function AK(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 ye(r,n);await ze(a,r);let{canonical:c}=await Mt(a,l.configDir,{},l.canonicalDir),m=await on({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}=Bh(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(AK,"runDiff");tt();zo();b();rt();Ea();Re();var H7=[{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 xK(e){let t=new Set(e.enabledFeatures),r=[];for(let n of H7)!t.has(n.featureFlag)||!n.hasContent(e.canonical)||pn(e.capabilities[n.capabilityKey]).level!=="none"||r.push(F(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(xK,"lintSilentFeatureDrops");Re();var z7=/^(?:\s*(?:bash|sh|zsh|pwsh|powershell)\s+)?["']?(?<path>(?:\.{1,2}\/|[^/\s"'`]+\/)[^\s"'`]+)["']?(?:\s|$)/;function V7(e){let r=e.match(z7)?.groups?.path;return typeof r=="string"?r:null}s(V7,"extractScriptToken");function TK(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=V7(o.command);i&&r.push(F(".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(TK,"lintHookScriptReferences");Re();function PK(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(F(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(PK,"lintRuleScopeInversion");var Y7=new Set([".git","node_modules"]),X7=2e5;function ca(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())Y7.has(o.name)||r.push(join(n,o.name));else if(o.isFile()&&(t.add(Dl(e,join(n,o.name))),t.size>X7))return t}}catch{return null}return t}s(ca,"listProjectFiles");var Z7="lessons",vK=".agentsmesh/lessons/lessons.json",FK=".agentsmesh/rules/_root.md",eee=/^## Lessons \(/m;function MK(e,t){if(t==="global")return [];let r=je(e);if(!existsSync(r.graph))return [];let n=[],o;try{o=Du(e);}catch(m){return [AL("error",vK,`lessons.json failed to load: ${m instanceof Error?m.message:String(m)}`)]}let i=ca(e)??void 0,a=Kn(o,{knownPaths:i});for(let m of a.findings)n.push(AL(m.level,vK,`[${m.code}] ${m.message}`));let l=join(e,FK),c=existsSync(l)?readFileSync(l,"utf8"):"";return eee.test(c)||n.push(AL("warning",FK,'lessons procedural rule ("## Lessons (...)") is missing from _root.md \u2014 recall/capture enforcement will not fire.')),n}s(MK,"lintLessonsSubsystem");function AL(e,t,r){return {level:e,file:t,target:Z7,message:r}}s(AL,"diag");var tee=["node_modules",".git","dist","coverage",".agentsmesh"];async function ree(e){return (await gi(e)).filter(n=>{let o=relative(e,n);return !tee.some(i=>o.includes(`/${i}/`)||o.startsWith(`${i}/`))}).map(n=>relative(e,n))}s(ree,"getProjectFiles");async function Wh(e,t,r,n,o={}){let i=o.scope??"project",a=[...e.targets,...e.pluginTargets??[]],l=n?a.filter(S=>n.includes(S)):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=[...MK(r,i)],h=i==="global"?[]:await ree(r);for(let S of l){let R=re(S),I=Xt(S)?Uh(S):R;I?.capabilities&&g.push(...xK({target:S,capabilities:I.capabilities,canonical:t,enabledFeatures:e.features})),f&&g.push(...TK({target:S,canonical:t,hasScriptProjection:R?.postProcessHookOutputs!==void 0})),c&&g.push(...PK({target:S,canonical:t,preservesManualActivation:R?.preservesManualActivation===true})),c&&I?.lintRules&&g.push(...I.lintRules(t,r,h,{scope:i})),R?.generators.lint&&g.push(...R.generators.lint(t));let w={scope:i};m&&I?.lint?.commands&&g.push(...I.lint.commands(t,w)),p&&I?.lint?.mcp&&g.push(...I.lint.mcp(t,w)),u&&I?.lint?.permissions&&g.push(...I.lint.permissions(t,w)),f&&I?.lint?.hooks&&g.push(...I.lint.hooks(t,w));}let _=g.some(S=>S.level==="error");return {diagnostics:g,hasErrors:_}}s(Wh,"runLint");sn();async function $K(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 ye(r,n);await ze(a,r);let{canonical:c}=await Mt(a,l.configDir,{},l.canonicalDir),{diagnostics:m,hasErrors:p}=await Wh(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($K,"runLintCmd");se();function jK(e){let{data:t}=e;if(t.diagnostics.length===0){y.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)y.error(`${a.file} (${a.target}): ${a.message}`);for(let a of n)y.warn(`${a.file} (${a.target}): ${a.message}`);let o=t.summary.errors,i=t.summary.warnings;y.info(`${o} error${o!==1?"s":""}, ${i} warning${i!==1?"s":""}`);}s(jK,"renderLint");se();function UK(e){let{data:t}=e;if(!t.hasLock){y.error("Not initialized for collaboration. Run 'agentsmesh generate' first.");return}if(t.inSync){y.success("Lock file is in sync.");return}let r=new Set(t.lockedViolations);y.error("Conflict detected:");for(let n of t.extendsModified)y.error(` extend "${n}" was modified`);for(let n of t.modified){let o=r.has(n)?" [LOCKED]":"";y.error(` ${n} was modified${o}`);}for(let n of t.added){let o=r.has(n)?" [LOCKED]":"";y.error(` ${n} was added${o}`);}for(let n of t.removed){let o=r.has(n)?" [LOCKED]":"";y.error(` ${n} was removed${o}`);}y.info("Run 'agentsmesh merge' to resolve, or 'agentsmesh generate --force' to accept current state.");}s(UK,"renderCheck");se();function BK(e){let{data:t}=e;if(t.files.length===0){y.info(`Nothing to import from ${t.target}.`);return}for(let n of t.files)y.success(`${n.from} \u2192 ${n.to}`);let r=t.scope==="global"?" --global":"";y.info(`Imported ${t.files.length} file(s). Run 'agentsmesh generate${r}' to sync to other tools.`);}s(BK,"renderImport");se();function KK(e){let{summary:t}=e.data;if(t.created+t.updated+t.unchanged+t.deleted===0){y.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);y.info(Kh({new:t.created,updated:t.updated,unchanged:t.unchanged,deleted:t.deleted}));}s(KK,"renderDiff");se();function WK(e){if(!e.data.hadConflict){y.info("No conflicts to resolve.");return}y.success("Lock file conflict resolved.");}s(WK,"renderMerge");bu();xu();tt();zo();bu();xu();se();var see=300;function iee(e){return e.replace(/\\/g,"/").replace(/\/+$/,"")}s(iee,"normalizeWatchPath");function aee(e,t){let r=iee(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(aee,"shouldIgnoreWatchPath");function lee(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(lee,"featureFingerprint");async function zK(e,t,r={}){let n=t??process.cwd(),o=e.global===true?"global":"project",{context:i}=await ye(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:S,context:R}=await ye(n,o),{canonical:I}=await Mt(S,R.configDir,{},R.canonicalDir),w=I.mcp?Object.keys(I.mcp.mcpServers).length:0,D=I.permissions?I.permissions.allow.length+I.permissions.deny.length:0,P=I.hooks?Object.values(I.hooks).reduce((M,te)=>M+(Array.isArray(te)?te.length:0),0):0,K=I.ignore.length,G=lee(S.features,I.rules.length,I.commands.length,I.agents.length,I.skills.length,w,D,P,K),Y=c!==null&&c!==G;if(c=G,m)return;let ee=await gm(e,n,{printMatrix:false});if(hm(ee),!m){if(Y){let M=await wu(e,n);Au(M,{verbose:e.verbose===true});}else y.info("Regenerated.");r.onCycle?.({featuresChanged:Y});}},"run"),f=s(()=>{let S=u().catch(R=>{if(!m){let I=R instanceof Error?R.message:String(R);y.error(I);}}).finally(()=>{p===S&&(p=null);});p=S;},"scheduleRun"),g=s(()=>{m||(l&&clearTimeout(l),l=setTimeout(f,see));},"schedule"),h=r.usePolling??process.platform==="win32",_=oee.watch(a,{ignoreInitial:true,usePolling:h,...h&&r.pollIntervalMs!==void 0?{interval:r.pollIntervalMs}:{}});return _.on("all",(S,R)=>{aee(i.canonicalDir,R)||g();}),await new Promise((S,R)=>{_.once("ready",S),_.once("error",R);}),y.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 _.close(),p&&await p;},"stop")}}s(zK,"runWatch");tt();Pd();async function Hh(e){let{config:t,configDir:r,canonicalDir:n}=e,o=await lh(n);if(o===null)return {inSync:false,hasLock:false,modified:[],added:[],removed:[],extendsModified:[],lockedViolations:[]};let i=await ii(n),a=await tc(t,r),l=a.length>0?await pm(a):{},c=new Set(Object.keys(o.checksums)),m=new Set(Object.keys(i)),p=[],u=[],f=[];for(let R of c){let I=i[R];I===void 0?f.push(R):I!==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 _=mh(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:_}}s(Hh,"checkLockSync");sn();async function VK(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",{config:o,context:i}=await ye(r,n);await ze(o,r);let a=await Hh({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(VK,"runCheck");tt();b();Pd();var mee=".lock",pee="<<<<<<<";async function xL(e){let t=join(e,mee),r=await k(t);return r===null?false:r.includes(pee)}s(xL,"hasLockConflict");async function YK(e,t,r){if(!await xL(e))throw new Error("No conflict to resolve.");let o=await ii(e),i=dirname(e),a=r?await tc(r,i):[],l=a.length>0?await pm(a):{},c=await ph(join(e,"packs")),m=process.env.USER??process.env.USERNAME??"unknown";await ch(e,{generatedAt:new Date().toISOString(),generatedBy:m,libVersion:t,checksums:o,extends:l,packs:c});}s(YK,"resolveLockConflict");async function XK(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",{config:o,context:i}=await ye(r,n),a=i.canonicalDir;return await xL(a)?(await YK(a,_a(),o),{exitCode:0,data:{hadConflict:true,resolved:true}}):{exitCode:0,data:{hadConflict:false,resolved:false}}}s(XK,"runMerge");tt();rh();function QK(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?cm.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(QK,"readInstallFlags");var fee=".install.lock";async function wm(e,t={}){return await mkdir(e,{recursive:true}),dm(join(e,fee),{...t,label:"install lock"})}s(wm,"acquireInstallLock");tt();b();Zm();Ia();var yee=promisify(execFile);function zh(e,t){if(e.startsWith("-"))throw new Error(`agentsmesh refuses ${t} starting with "-" (option-injection guard): ${e}`)}s(zh,"ensureNotFlag");async function TL(e){let{stdout:t}=await yee("git",e,{env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_ALLOW_PROTOCOL:xd()}});return t.trim()}s(TL,"runGit");async function qK(){try{return await TL(["--version"]),!0}catch{return false}}s(qK,"isGitAvailable");async function _ee(e,t){zh(e,"remote-url"),zh(t,"ref"),Xm(e);let r=[t,`refs/heads/${t}`,`refs/tags/${t}`],n;for(let o of r)try{let a=(await TL(["ls-remote",e,o])).split(`
|
|
422
|
+
`).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(_ee,"gitLsRemoteResolve");async function Vh(e,t){zh(t,"remote-url");let r=e===""?"HEAD":e;if(zh(r,"ref"),/^[0-9a-f]{40}$/i.test(r))return r.toLowerCase();if(Xm(t),r==="HEAD"){let o=(await TL(["ls-remote",t,"HEAD"])).split(`
|
|
423
|
+
`).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 _ee(t,r)}s(Vh,"resolveRemoteRefForInstall");async function ZK(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 Vh(e.rawRef||"HEAD",t);if(e.kind==="github"){let l=`github:${e.org}/${e.repo}@${r}`;return {resolvedPath:(await ec(l,"install",{cacheDir:Qt(),refresh:false,allowOfflineFallback:false})).resolvedPath,sourceForYaml:l,version:r}}if(e.kind==="gitlab"){let l=`gitlab:${e.org}/${e.repo}@${r}`;return {resolvedPath:(await ec(l,"install",{cacheDir:Qt(),refresh:false,allowOfflineFallback:false})).resolvedPath,sourceForYaml:l,version:r}}let n=r,i=`git+${(e.gitPlusBase??t).split("#")[0]}#${n}`;return {resolvedPath:(await ec(i,"install",{cacheDir:Qt(),refresh:false,allowOfflineFallback:false})).resolvedPath,sourceForYaml:i,version:r}}s(ZK,"fetchInstallSource");async function eW(e,t){if(e.kind==="local")return {resolvedPath:e.localRoot,sourceForYaml:e.localSourceForYaml};try{let r=await ZK(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(eW,"resolveInstallResolvedPath");function zu(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(zu,"parseGithubTreeUrl");function Vu(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(Vu,"parseGithubBlobUrl");function Ju(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(Ju,"parseGitlabTreeUrl");function Yu(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(Yu,"parseGitlabBlobUrl");var See=new Set(["tree","blob","commit","releases","actions","issues","pulls","settings","wiki","discussions","security","projects","packages"]);function Xu(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||See.has(r[1]))return null;let n=r[0],o=r[1];return {org:n,repo:o}}catch{return null}}s(Xu,"parseGithubRepoUrl");function Qu(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(Qu,"parseGitlabRepoUrl");function qu(e){let t=e.match(/^git@github\.com:([^/]+)\/(.+?)(?:\.git)?$/i);return t?{org:t[1],repo:t[2].replace(/\.git$/i,"")}:null}s(qu,"parseGitSshGithub");function Zu(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(Zu,"parseGitSshGitlab");b();var Iee=/^[A-Za-z]:[\\/]/,Lee=/^[A-Za-z]:\//;function tW(...e){return e.some(t=>t.includes("\\")||Iee.test(t))?win32:posix}s(tW,"pathApiFor");function td(e){return e.replace(/\\/g,"/")}s(td,"toPosixPath");function ed(e){return td(e).replace(/^\/+|\/+$/g,"")}s(ed,"normalizeInstallPathField");function Jh(e){let t=td(e);return t===""||t==="."||t==="./."?".":t.startsWith("./")||t.startsWith("../")||t.startsWith("/")||Lee.test(t)?t:`./${t}`}s(Jh,"normalizeLocalSourceForYaml");function ma(e){return {...e,source:e.source_kind==="local"?Jh(e.source):e.source,...e.path!==void 0?{path:ed(e.path)}:{},...e.paths!==void 0?{paths:e.paths.map(t=>ed(t))}:{}}}s(ma,"normalizePersistedInstallPaths");function rW(e,t,r){let n=tW(e,t),o=n.normalize(e),i=n.normalize(t),a=ed(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=ed(u),g=td(n.relative(i,p))||".";return {kind:"local",rawRef:"",pathInRepo:a||f.replace(/\.md$/i,"").replace(/\/$/,""),localRoot:p,localSourceForYaml:Jh(g)}}let m=td(n.relative(i,o))||".";return {kind:"local",rawRef:"",pathInRepo:a,localRoot:o,localSourceForYaml:Jh(m)}}s(rW,"localParsedFromAbsPath");async function PL(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=zu(n)??Vu(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=Xu(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=Ju(n)??Yu(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=Qu(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=qu(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=Zu(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 rW(m,t,o)}s(PL,"parseInstallSource");function rd(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=zu(t)??Vu(t);if(a!==null)return {kind:"github",remoteUrl:`https://github.com/${a.org}/${a.repo}.git`,ref:a.ref};let l=Xu(t);if(l!==null)return {kind:"github",remoteUrl:`https://github.com/${l.org}/${l.repo}.git`,ref:"HEAD"};let c=Ju(t)??Yu(t);if(c!==null)return {kind:"gitlab",remoteUrl:`https://gitlab.com/${c.namespace}/${c.project}.git`,ref:c.ref};let m=Qu(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=qu(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=Zu(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(rd,"parseSourceUrl");gI();function Wn(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(Wn,"featuresFromCanonical");async function Yh(e,t={}){let{sliceRoot:r,implicitPick:n}=await Xg(e),{canonical:o,cleanup:i}=await Qg(r,{...t,enableTargetEntityMappers:true});return {canonical:o,features:Wn(o),implicitPick:n,cleanup:i}}s(Yh,"discoverFromContentRoot");function nW(e){return e.description.trim()?{skill:e,ok:true}:{skill:e,ok:false,reason:"missing description in frontmatter"}}s(nW,"validateSkill");function oW(e){return e.description.trim()?{rule:e,ok:true}:{rule:e,ok:false,reason:"missing description in frontmatter"}}s(oW,"validateRule");function sW(e){return e.description.trim()?{command:e,ok:true}:{command:e,ok:false,reason:"missing description in frontmatter"}}s(sW,"validateCommand");function iW(e){return e.description.trim()?{agent:e,ok:true}:{agent:e,ok:false,reason:"missing description in frontmatter"}}s(iW,"validateAgent");function yt(e){return basename(e.source).replace(/\.md$/i,"")}s(yt,"ruleSlug");function Oee(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(Oee,"featuresFromImplicitPick");function Am(e,t){let{implicitPick:r}=t,n=t.scopedFeatures??Oee(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(yt(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(Am,"narrowDiscoveredForInstallScope");II();async function aW(e,t,r,n,o={}){let i=await eh(e,t,{preferredSkillNames:t==="skills"?n?.skills:void 0}),{canonical:a,cleanup:l}=await Yh(i.discoveryRoot,o),c=Am(a,{scopedFeatures:[t]});return {prep:{yamlTarget:r,scopedFeatures:[t],cleanup:s(async()=>{await Promise.allSettled([l(),i.cleanup()]);},"combinedCleanup")},narrowed:c,discoveredFeatures:Wn(c)}}s(aW,"resolveManualDiscoveredForInstall");qo();oI();b();xe();var wee=(()=>{let e=new Map;for(let r of Pe){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 bee(e){return e.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"")}s(bee,"norm");function Xh(e){let t=bee(e);if(t){for(let{prefix:r,target:n}of wee)if(t===r||t.startsWith(`${r}/`))return n}}s(Xh,"targetHintFromNativePath");function DL(e,t){return Xh(e)===t}s(DL,"pathSupportsNativePick");function lW(e,t){if(!e||!t)return;let r=Xh(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(lW,"validateTargetMatchesPath");function cW(e){return (e.commands?.length??0)+(e.rules?.length??0)+(e.skills?.length??0)+(e.agents?.length??0)>0}s(cW,"extendPickHasArrays");rt();b();TR();async function Tee(e,t,r,n){if(n.kind==="skillDir")return Yf(e);if(n.kind==="firstSegment"){let c=t.slice(r.prefix.length).split("/").filter(Boolean)[0];return c?[c]:[]}let o=await U(e),i=n.suffix,a=i.toLowerCase();return [...new Set(o.filter(l=>l.toLowerCase().endsWith(a)).map(l=>basename(l,i)))].sort()}s(Tee,"namesForStrategy");async function mW(e,t,r){let n=re(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 Tee(a,o,i,i.strategy);return l.length?{[i.feature]:l}:{}}return {}}s(mW,"inferImplicitPickFromNativePath");function pW(e){return (e.commands?.length??0)+(e.rules?.length??0)+(e.skills?.length??0)+(e.agents?.length??0)===0}s(pW,"isImplicitPickEmpty");sI();function nd(e){return e.replace(/\\/g,"/").replace(/\/+$/,"")}s(nd,"normalizePath");function Fee(e,t){let r=nd(e),n=nd(t);return r===n||r.startsWith(`${n}/`)||n.startsWith(`${r}/`)}s(Fee,"overlapsPath");function Qh(e,t){let r=e??[];return r.includes(t)||r.push(t),r}s(Qh,"addUnique");async function Mee(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(Mee,"makeStageRoot");function Gee(e,t){let r;for(let o of e){if(o.feature==="rules"&&o.toPath.startsWith(".agentsmesh/rules/")){r={...r,rules:Qh(r?.rules,basename(o.toPath,".md"))};continue}if(o.feature==="commands"&&o.toPath.startsWith(".agentsmesh/commands/")){let i=nd(relative(join(t,".agentsmesh","commands"),join(t,o.toPath)));r={...r,commands:Qh(r?.commands,i.replace(/\.md$/i,"").split("/").filter(Boolean).join(":"))};continue}if(o.feature==="agents"&&o.toPath.startsWith(".agentsmesh/agents/")){r={...r,agents:Qh(r?.agents,basename(o.toPath,".md"))};continue}if(o.feature==="skills"&&o.toPath.startsWith(".agentsmesh/skills/")){let a=nd(relative(join(t,".agentsmesh","skills"),join(t,o.toPath))).split("/")[0];a&&(r={...r,skills:Qh(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(Gee,"buildPickFromResults");function $ee(e,t,r,n){let o=join(t,...nd(e).split("/")),i=r.filter(a=>Fee(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:Gee(i,t)}}s($ee,"scopeImportedResults");async function NL(e,t){let{stageRoot:r,cleanup:n}=await Mee(e);try{let o=await ku(r,t);return {stageRoot:r,results:o,cleanup:n}}catch(o){throw await n(),o}}s(NL,"stageImportedNativeRepo");async function vL(e,t,r){let n=await NL(e,r);try{return {stageRoot:n.stageRoot,cleanup:n.cleanup,...$ee(t,n.stageRoot,n.results,r)}}catch(o){throw await n.cleanup(),o}}s(vL,"stageNativeInstallScope");async function gW(e,t,r,n){let o=n.explicitTarget?.trim();o&&Ir.parse(o);let i=r.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"");lW(o,i);let a=join(e,".agentsmesh"),l=await j(a),c=i?Xh(i):void 0,p=!l&&!o&&(!i||c!==void 0)?await jg(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 vL(e,i,u);return {discoveryRoot:w.stageRoot,implicitPick:w.pick,scopedFeatures:w.features,yamlTarget:u,importHappened:true,cleanup:w.cleanup}}let I=await NL(e,u);return {discoveryRoot:i?join(I.stageRoot,i):I.stageRoot,yamlTarget:u,importHappened:true,cleanup:I.cleanup}}let g;l?i?u&&DL(i,u)?g=e:g=t:g=e:g=t;let h,_,S;if(f&&u){let I=await vL(e,i,u);g=I.stageRoot,h=I.pick,_=I.features,S=I.cleanup;}else if(g===e&&i&&u&&DL(i,u)&&(h=await mW(e,i,u),pW(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&&cW(h)||(_?.length??0)>0)&&(R=u),{discoveryRoot:g,implicitPick:h,scopedFeatures:_,yamlTarget:R,importHappened:S!==void 0,cleanup:S}}s(gW,"prepareInstallDiscovery");async function FL(e,t,r,n,o={}){let i=await gW(e,t,r,{explicitTarget:n}),{canonical:a,implicitPick:l,cleanup:c}=await Yh(i.discoveryRoot,o),m=i.cleanup,u={...i,cleanup:s(async()=>{await Promise.allSettled([c(),...m?[m()]:[]]);},"mergedCleanup")},f=l??i.implicitPick,g=Am(a,{implicitPick:f,scopedFeatures:i.scopedFeatures}),h=Wn(g);return {prep:u,discovered:a,implicitPick:f,narrowed:g,discoveredFeatures:h}}s(FL,"resolveDiscoveredForInstall");var Bee=[".claude-plugin","marketplace.json"];async function Kee(e){try{return (await stat(e)).isDirectory()}catch{return false}}s(Kee,"dirExists");function Wee(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(Wee,"normalizeSource");async function yW(e,t,r){let n=join(e,...Bee),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=Wee(c.source);if(!m)continue;let p=join(e,m);if(!await Kee(p))continue;let u=await t(p,m);r(u)&&l.push({path:m,layout:u});}return l}s(yW,"detectMarketplaceSubPacks");async function od(e){try{return (await stat(e)).isDirectory()}catch{return false}}s(od,"dirExists");async function pa(e){try{return (await readdir(e,{withFileTypes:!0})).map(r=>({name:r.name,isDir:r.isDirectory(),isFile:r.isFile()}))}catch{return []}}s(pa,"listDirEntries");function _W(e){return e.endsWith(".instructions.md")?"copilot-instructions":e.endsWith(".md")?"md":e.endsWith(".mdc")?"mdc":e.endsWith(".toml")?"toml":null}s(_W,"classifyFileShape");var Vee=["rules","commands","agents","skills","mcp.json","hooks.yaml","permissions.yaml","ignore"],Jee=[".cursorrules",".windsurfrules"];async function RW(e){let t=join(e,".agentsmesh");if(!await od(t))return null;let r=await pa(t),n=new Set(r.map(o=>o.name));for(let o of Vee)if(n.has(o))return {path:".agentsmesh"};return null}s(RW,"detectCanonical");async function kW(e){for(let t of Jee)try{if((await stat(join(e,t))).isFile())return {path:t}}catch{}return null}s(kW,"detectRootRule");async function IW(e){try{if((await stat(join(e,"SKILL.md"))).isFile())return {path:"SKILL.md"}}catch{}return null}s(IW,"detectRootSkill");ts();var Xee={rules:"rules",commands:"commands",agents:"agents",skills:"skills"},Qee=[".claude-plugin",".codex-plugin",".cursor-plugin"],qee=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;async function LW(e){let t=join(e,"skills"),r=await pa(t);for(let n of r)if(!(!n.isDir||n.name.startsWith("_")||!qee.test(n.name))&&await od(join(t,n.name)))try{if((await stat(join(t,n.name,"SKILL.md"))).isFile())return {path:"skills"}}catch{continue}return null}s(LW,"detectSkillPack");async function CW(e){let t=[];for(let[r,n]of Object.entries(Xee)){let o=join(e,r),i=await pa(o),a=new Set;for(let l of i){if(!l.isFile||Jn(l.name))continue;let c=_W(l.name);c&&a.add(c);}for(let l of a)t.push({path:r,suggestedAs:n,fileShape:l});}return t}s(CW,"detectFlatCollections");async function EW(e){let t=[];for(let r of Qee)await od(join(e,r))&&t.push({path:r});return t}s(EW,"detectToolNativeManifests");async function $L(e,t){let r=await RW(e);if(r)return {canonical:r,skillPack:null,rootSkill:null,rootRule:null,flatCollections:[],toolNativeManifests:[]};let n=await LW(e),o=n?null:await IW(e),i=await CW(e),a=n||o||i.length>0?null:await kW(e),l=await EW(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($L,"detectFlatLayout");function GL(e){return e.canonical!==null||e.skillPack!==null||e.rootSkill!==null||e.rootRule!==null||e.flatCollections.length>0}s(GL,"hasContent");async function OW(e,t){let r=await pa(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 $L(i,a);GL(l)&&n.push({path:a,layout:l});}return n}s(OW,"collectSubPackCandidates");async function Zee(e,t){if(GL(t))return [];let r=await yW(e,$L,GL);if(r&&r.length>0)return r;let n=await OW(e,"");if(n.length>=2)return n;let o=await pa(e);for(let i of o){if(!i.isDir||i.name.startsWith("."))continue;let a=await OW(join(e,i.name),i.name);if(a.length>=2)return a}return []}s(Zee,"detectSubPacks");async function bW(e){let t=await $L(e,"");if(t.canonical)return {...t,subPacks:[]};let r=await Zee(e,t);return {...t,subPacks:r}}s(bW,"detectLayout");rt();b();B();function tte(e){let t=[];for(let r of zd()){let n=re(r)?.nativeInstall?.dialectHints;n?.length&&n.some(o=>o.frontmatterKey in e)&&t.push(r);}return t}s(tte,"targetsMatchingFrontmatter");async function xW(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 k(join(e,r));if(!n)return null;let o=ln(n,join(e,r));if(!o.ok)return null;let i=tte(o.value.frontmatter);return i.length===1?i[0]??null:null}s(xW,"inferMdcTarget");Hg();Yg();function ite(e){let t=e.indexOf("#");return t<0?{path:e,anchor:""}:{path:e.slice(0,t),anchor:e.slice(t)}}s(ite,"splitAnchor");function ate(e){return e.split(sep).join("/")}s(ate,"toForwardSlash");async function lte(e){try{return await stat(e),!0}catch{return false}}s(lte,"pathExists");async function NW(e){let{link:t,fromFile:r,contentRoot:n,includedPaths:o}=e,{path:i,anchor:a}=ite(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=ate(p);return await lte(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(NW,"resolveLink");var cte=/^(?:```|~~~)[^\n]*\n[\s\S]*?^(?:```|~~~)/gm,mte=/(!?)\[[^\]\n]*\]\(([^)\n]+)\)/dg,pte=/^\s*\[([^\]\n]+)\]:\s*(.+?)\s*$/dgm;function ute(e){let t=[];for(let r of e.matchAll(cte)){let n=r.index??0;t.push([n,n+r[0].length]);}return t}s(ute,"getFencedCodeRanges");function vW(e,t){for(let[r,n]of t)if(e>=r&&e<n)return true;return false}s(vW,"isInRanges");function jL(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(jL,"destPathSpan");function FW(e){let{start:t,length:r}=jL(e);return e.slice(t,t+r)}s(FW,"normalizeDestination");function qh(e){let t=ute(e),r=[];for(let n of e.matchAll(mte)){let o=n.index??0;if(vW(o,t))continue;let i=n[1]==="!",a=n[2],l=n.indices?.[2];if(a===void 0||l===void 0)continue;let c=jL(a);r.push({kind:i?"image":"inline",destination:FW(a),destinationOffset:l[0]+c.start,destinationLength:c.length});}for(let n of e.matchAll(pte)){let o=n.index??0;if(vW(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=jL(a);r.push({kind:"reference-def",destination:FW(a),label:i,destinationOffset:l[0]+c.start,destinationLength:c.length});}return r}s(qh,"scanMarkdownLinks");function MW(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(MW,"applyRangeRewrites");function dte(e){return !(e.length===0||e.startsWith("#")||e.startsWith("/")||/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(e))}s(dte,"isCandidateRelativePath");function fte(e){let t=e.replaceAll("\\","/");return t==="{baseDir}"?".":t.startsWith("{baseDir}/")?t.slice(10):t}s(fte,"stripPath");function gte(e){let t=e.destination;return dte(t)?{raw:t,path:fte(t),kind:e.kind,...e.label!==void 0?{label:e.label}:{}}:null}s(gte,"toScannedLink");function GW(e){let t=[];for(let r of qh(e)){let n=gte(r);n!==null&&t.push(n);}return t}s(GW,"scanRelativeLinks");function xm(e,t){let r=e.replaceAll("\\","/"),n=t.replaceAll("\\","/"),o=r.endsWith("/")?r:`${r}/`;return n.startsWith(o)?n.slice(o.length):n}s(xm,"toForwardSlashRelative");function $W(e,t,r,n,o){let i=new Set;for(let a of t){i.add(xm(e,a.source));for(let l of a.supportingFiles)i.add(xm(e,l.absolutePath));}for(let a of r)i.add(xm(e,a.source));for(let a of n)i.add(xm(e,a.source));for(let a of o)i.add(xm(e,a.source));return i}s($W,"buildIncludedPaths");function yte(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(yte,"listScannables");async function jW(e,t,r,n,o,i){let a=yte(t,r,n,o),l=[];for(let c of a){let m=GW(c.body);if(m.length===0)continue;let p=xm(e,c.sourcePath),u=[];for(let f of m){let g=await NW({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(jW,"detectBrokenLinks");Yg();async function UW(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 zg(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 _=o.get(g.name)??[];_.push({path:g.source,precedence:p.precedence}),o.set(g.name,_);}}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(UW,"mergeCommands");async function BW(e,t,r={}){let[n,o,i,a]=await Promise.all([E0(`${e}/skills`,r),Jg(`${e}/agents`,{parseOpts:r}),Vg(`${e}/rules`,{parseOpts:r}),UW(e,t.mergeFromToolDirs,r)]),l=[...o.agents],c=[...i.rules],m=$W(e,n,l,a.commands,c),p=await jW(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(BW,"aggregateAnthropicSkillPack");var KW={mergeFromToolDirs:[{dir:"commands",precedence:0},{dir:".claude/commands",target:"claude-code",precedence:1},{dir:".gemini/commands",target:"gemini-cli",precedence:2}]};oc();function Rte(e){return {rules:[...e.rules],commands:[...e.commands],agents:[...e.agents],skills:[...e.skills],mcp:null,permissions:null,hooks:null,ignore:[]}}s(Rte,"aggregateToCanonical");function Zh(){return {}}s(Zh,"emptyPrep");async function kte(e,t){let r=[];for(let n of t)if(n.fileShape==="mdc"&&!n.inferredTarget){let o=await xW(join(e,n.path));r.push(o?{...n,inferredTarget:o}:n);}else r.push(n);return r}s(kte,"enrichMdcTargets");function HW(e){return e.canonical?"canonical-agentsmesh":e.skillPack||e.rootSkill?"anthropic-skill-pack":e.rootRule||e.toolNativeManifests.length>0?"tool-native":"unknown"}s(HW,"deriveSourceType");async function Ite(e,t){let r=await Gd(e,t);return {rules:[],commands:[],agents:[],skills:r?[r]:[],mcp:null,permissions:null,hooks:null,ignore:[]}}s(Ite,"rootSkillToCanonical");async function Lte(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(Lte,"rootRuleToCanonical");async function zW(e){let t=e.parseOpts??{};if(e.explicitAs)return {implicitPick:void 0,...await aW(e.contentRoot,e.explicitAs,e.explicitTarget,e.replayPick,t)};if(e.explicitTarget)return FL(e.resolvedPath,e.contentRoot,e.pathInRepo,e.explicitTarget,t);let r=await bW(e.contentRoot),n=await kte(e.contentRoot,r.flatCollections),o={...r,flatCollections:n};if(o.skillPack&&!o.canonical){let a=await BW(e.contentRoot,KW,t),l=Rte(a);return {prep:{cleanup:a.cleanup},implicitPick:void 0,narrowed:l,discoveredFeatures:Wn(l),layout:o,aggregate:a}}if(o.rootSkill&&!o.canonical&&!o.skillPack){let a=await Ite(e.contentRoot,t);return {prep:Zh(),implicitPick:void 0,narrowed:a,discoveredFeatures:Wn(a),layout:o}}if(o.rootRule&&!o.canonical&&!o.skillPack&&!o.rootSkill&&o.flatCollections.length===0){let a=await Lte(e.contentRoot,o.rootRule.path);return {prep:Zh(),implicitPick:void 0,narrowed:a,discoveredFeatures:Wn(a),layout:o}}return o.subPacks.length>0?{prep:Zh(),implicitPick:void 0,narrowed:{rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]},discoveredFeatures:[],layout:o}:o.flatCollections.length>0?{prep:Zh(),implicitPick:void 0,narrowed:{rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]},discoveredFeatures:[],layout:o}:{...await FL(e.resolvedPath,e.contentRoot,e.pathInRepo,e.explicitTarget,t),layout:o}}s(zW,"resolveInstallDiscovery");function JW(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(JW,"featuresFromLayout");function Cte(e){return e.replace(/[/\\]+/g,"-").replace(/[^a-z0-9-]/gi,"").toLowerCase()}s(Cte,"subPackSlug");function VW(e,t,r){let n=JW(e.layout),o=!e.layout.skillPack&&!e.layout.rootSkill&&n.length>0;return {name:`${t}-${Cte(e.path)}`,source:r,path:e.path,...o?{as:n[0]}:{},features:n}}s(VW,"targetFromSubPack");function YW(e,t,r){return {name:t,source:r,path:e.path,as:e.suggestedAs,target:e.inferredTarget,features:[e.suggestedAs]}}s(YW,"targetFromCollection");function XW(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 Ete(e);if(t.flatCollections.length===1){let l=t.flatCollections[0];return {targets:[YW(l,r,n)],isMarketplace:false}}return t.flatCollections.length>1?Ote(e):{targets:[],isMarketplace:false}}s(XW,"selectInstallCandidates");function Ete(e){let{layout:t,sourceName:r,sourceForYaml:n}=e;if(e.all)return {targets:t.subPacks.map(a=>VW(a,r,n)),isMarketplace:true};if(e.force||!e.tty){let a=t.subPacks.map(l=>({path:l.path,features:JW(l.layout)})).map(l=>` - ${l.path} (${l.features.join(", ")})`).join(`
|
|
377
424
|
`);throw new Error(`Marketplace source with ${t.subPacks.length} sub-packs. Pass --all to install all, or use --path <subpath>:
|
|
378
|
-
${a}`)}return {targets:t.subPacks.map(i=>
|
|
425
|
+
${a}`)}return {targets:t.subPacks.map(i=>VW(i,r,n)),isMarketplace:true}}s(Ete,"selectMarketplace");function Ote(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(`
|
|
379
426
|
`);throw new Error(`Ambiguous source with ${t.flatCollections.length} resource collections. Pass --as <kind> to select, or --path <subpath>:
|
|
380
|
-
${i}`)}return {targets:t.flatCollections.map(i=>
|
|
427
|
+
${i}`)}return {targets:t.flatCollections.map(i=>YW(i,r,n)),isMarketplace:false}}s(Ote,"selectMultipleCollections");sn();hI();function Tm(e){return e==="."||e===""?void 0:e}s(Tm,"trimDot");function bte(e,t){let r=basename(t).replace(/\.md$/i,"");return e==="agents"?{agents:[r]}:e==="commands"?{commands:[r]}:{rules:[r]}}s(bte,"markdownPick");async function qW(e){if(!e.as)return {pathInRepo:Tm(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:Tm(dirname(t)),pick:bte(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:Tm(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 qg(o);return {pathInRepo:Tm(dirname(n)),pick:{skills:[a||basename(n)]}}}}catch{return {pathInRepo:Tm(t)}}}}return {pathInRepo:Tm(t)}}s(qW,"resolveManualInstallPersistence");zo();se();se();async function Pm(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 gm(t==="global"?{global:!0}:{},r,{printMatrix:!1});hm(i),i.exitCode!==0&&y.warn(`Generate failed after ${e}. ${n}; run agentsmesh generate${o}.`);}catch(i){let a=i instanceof Error?i.message:String(i);y.warn(`Generate failed after ${e}: ${a}`),y.warn(`${n}; run agentsmesh generate${o} after resolving the issue.`);}}s(Pm,"runPostOperationGenerate");async function Jo(e){return process.stdin.isTTY?new Promise(t=>{let r=ZW.createInterface({input:process.stdin,output:process.stdout});r.question(`${e} (y/n) `,n=>{r.close();let o=n.trim().toLowerCase();t(o==="y"||o==="yes");});}):false}s(Jo,"confirm");function Ate(e){return !!(e.skills.length||e.rules.length||e.commands.length||e.agents.length)}s(Ate,"hasArrayResources");function eH(e){return Ate(e)||e.mcp!==null||e.permissions!==null||e.hooks!==null||e.ignore.length>0}s(eH,"hasInstallableResources");async function tH(e,t,r,n){let o=e.skills.map(l=>nW(l)),i=o.filter(l=>l.ok).map(l=>l.skill),a=o.filter(l=>!l.ok);if(!t&&!r&&n)for(let l of a)await Jo(`Include invalid skill "${l.skill.name}" anyway? (${l.reason}). You can fix it later.`)&&i.push(l.skill);else t&&(i=o.map(l=>l.skill));return r&&(i=o.filter(l=>l.ok).map(l=>l.skill)),i}s(tH,"resolveSkillPool");async function rH(e,t,r,n){let o=e.rules.map(l=>oW(l)),i=o.filter(l=>l.ok).map(l=>l.rule),a=o.filter(l=>!l.ok);if(!t&&!r&&n)for(let l of a)await Jo(`Include invalid rule "${yt(l.rule)}" anyway? (${l.reason}). You can fix it later.`)&&i.push(l.rule);else t&&(i=o.map(l=>l.rule));return r&&(i=o.filter(l=>l.ok).map(l=>l.rule)),i}s(rH,"resolveRulePool");async function nH(e,t,r,n){let o=e.commands.map(l=>sW(l)),i=o.filter(l=>l.ok).map(l=>l.command),a=o.filter(l=>!l.ok);if(!t&&!r&&n)for(let l of a)await Jo(`Include invalid command "${l.command.name}" anyway? (${l.reason}). You can fix it later.`)&&i.push(l.command);else t&&(i=o.map(l=>l.command));return r&&(i=o.filter(l=>l.ok).map(l=>l.command)),i}s(nH,"resolveCommandPool");async function oH(e,t,r,n){let o=e.agents.map(l=>iW(l)),i=o.filter(l=>l.ok).map(l=>l.agent),a=o.filter(l=>!l.ok);if(!t&&!r&&n)for(let l of a)await Jo(`Include invalid agent "${l.agent.name}" anyway? (${l.reason}). You can fix it later.`)&&i.push(l.agent);else t&&(i=o.map(l=>l.agent));return r&&(i=o.filter(l=>l.ok).map(l=>l.agent)),i}s(oH,"resolveAgentPool");async function sH(e,t){let r=t.skills.map(a=>a.name),n=t.rules.map(a=>yt(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 Jo(`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=yt(a);e.rules.some(c=>yt(c)===l)&&(await Jo(`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 Jo(`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 Jo(`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(sH,"resolveInstallConflicts");function iH(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(iH,"pickForSelectedResources");function xte(e,t){let r=e.split("/").filter(Boolean);return r.length>0&&r[r.length-1]===t}s(xte,"pathEndsWithName");function ey(e,t,r){return r!==1||t.length!==1?false:xte(e,t[0])}s(ey,"inferSingleNamePick");function aH(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||ey(t,o.skillNames,n.skills)),l=o.ruleSlugs.length>0&&(!!r?.rules?.length||o.ruleSlugs.length<n.rules||ey(t,o.ruleSlugs,n.rules)),c=o.commandNames.length>0&&(!!r?.commands?.length||o.commandNames.length<n.commands||ey(t,o.commandNames,n.commands)),m=o.agentNames.length>0&&(!!r?.agents?.length||o.agentNames.length<n.agents||ey(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(aH,"buildInstallPick");function lH(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(lH,"deriveInstallFeatures");function Tte(e){return e.skillNames.length===0&&e.ruleSlugs.length===0&&e.commandNames.length===0&&e.agentNames.length===0}s(Tte,"isEmptyInstallSelection");function cH(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(Tte(t)&&!a)throw new Error("No resources selected to install.")}s(cH,"ensureInstallSelection");qo();function mH(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(mH,"assertExtendNameAvailable");function Pte(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(Pte,"mergePick");function pH(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=Pte(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(pH,"mergeExtendList");b();async function uH(e,t,r){let n=await k(e);if(n===null)throw new Error(`Missing config: ${e}`);let o=parse(n),i=pH(t.extends,r);o.extends=i;let a=stringify(o,{indent:2,lineWidth:0});await L(e,a.endsWith(`
|
|
381
428
|
`)?a:`${a}
|
|
382
|
-
`);}s(
|
|
383
|
-
${JSON.stringify(i,null,2)}`);return}let a=join(t,"agentsmesh.yaml");await
|
|
384
|
-
`);return `sha256:${
|
|
429
|
+
`);}s(uH,"writeAgentsmeshWithNewExtend");se();async function dH(e){let{configDir:t,config:r,entryArgs:n,dryRun:o}=e,i=Fte(n);if(mH(r.extends,i),o){y.info(`[dry-run] Would add extend:
|
|
430
|
+
${JSON.stringify(i,null,2)}`);return}let a=join(t,"agentsmesh.yaml");await uH(a,r,i),y.success(`Wrote extends entry "${i.name}" to agentsmesh.yaml.`);}s(dH,"writeInstallAsExtend");function Fte(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?Ir.parse(e.yamlTarget):void 0,as:e.as}}s(Fte,"toNewExtendEntry");b();se();b();var Gte="pack.yaml";async function ty(e){let t=await U(e),r=[];for(let i of t.sort()){let a=relative(e,i).replace(/\\/g,"/");if(a===Gte)continue;let l=await ih(i);l!==null&&r.push(`${a}:${l}`);}let n=r.join(`
|
|
431
|
+
`);return `sha256:${sh(n)}`}s(ty,"hashPackContent");b();var Sr=".agentsmesh-install-manifest.json",jte=["pack.yaml",Sr];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 Ute(e,t){return relative(e,t).replaceAll("\\","/")}s(Ute,"toForwardSlashRelative");async function ry(e){let t=await U(e),r=[];for(let n of t){let o=Ute(e,n);if(jte.includes(o))continue;let i=await ah(n);i!==null&&r.push([o,`sha256:${i}`]);}return r.sort(([n],[o])=>n.localeCompare(o)),Object.fromEntries(r)}s(ry,"hashPackFiles");b();var Bte=/spdx-license-identifier:\s*([A-Za-z0-9.+-]+)/i,Kte=[{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 fH(e){if(e.trim().length===0)return null;let t=Bte.exec(e);if(t)return t[1]??null;for(let{id:r,pattern:n}of Kte)if(n.test(e))return r;return null}s(fH,"detectSpdxLicense");var Hte=["LICENSE","COPYING","NOTICE","COPYRIGHT"],zte=["",".md",".txt",".rst"];async function gH(e){for(let t of Hte)for(let r of zte){let n=await k(join(e,`${t}${r}`));if(n===null)continue;let o=fH(n);if(o!==null)return o}return null}s(gH,"detectLicenseInPackDir");async function Yte(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(Yte,"writeRules");async function Xte(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(Xte,"writeCommands");async function Qte(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(Qte,"writeAgents");async function qte(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(qte,"writeSkills");async function Zte(e,t){for(let r of e)await copyFile(r.absolutePath,join(t,r.relativePath));}s(Zte,"writePreservedRootFiles");async function ere(e,t){e.mcp!==null&&await L(join(t,"mcp.json"),`${JSON.stringify(e.mcp,null,2)}
|
|
385
432
|
`),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(`
|
|
386
433
|
`)}
|
|
387
|
-
`);}s(
|
|
388
|
-
`);}s(
|
|
434
|
+
`);}s(ere,"writeSettings");function tre(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(tre,"validatePackName");async function rre(e,t,r){let n=await ry(e),o=QU({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,Sr),`${JSON.stringify(o,null,2)}
|
|
435
|
+
`);}s(rre,"writeInstallManifest");async function hH(e,t,r,n,o={},i=[]){tre(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 Yte(r,a),await Xte(r,a),await Qte(r,a),await qte(r,a),await ere(r,a),await Zte(i,a);let u=await ty(a),f=await gH(a);m=ma({...n,content_hash:u,license:f}),await L(join(a,"pack.yaml"),Al(stringify(m),"pack")),await rre(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 _=h instanceof Error?h.message:String(h);y.warn(`Failed to restore the previous pack after a failed atomic swap; the prior contents remain at "${l}". Recover them manually. (${_})`);}),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(hH,"materializePack");mm();b();function zL(e,t){return [...new Set([...e,...t])]}s(zL,"union");function ore(e,t){if(e.path===void 0&&e.paths===void 0||t===void 0)return {path:void 0,paths:void 0};let n=zL(e.paths??(e.path?[e.path]:[]),[t]);return n.length===1?{path:n[0],paths:void 0}:{path:void 0,paths:n}}s(ore,"mergePathScope");function sre(e,t,r){let n={...e};for(let i of t)r&&r[i]!==void 0?n[i]=zL(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(sre,"mergePick");async function ire(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(ire,"mergeRules");async function are(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(are,"mergeCommands");async function lre(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(lre,"mergeAgents");async function cre(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(cre,"mergeSkills");async function mre(e,t){for(let r of e)await copyFile(r.absolutePath,join(t,r.relativePath));}s(mre,"mergePreservedRootFiles");async function pre(e,t){e.mcp!==null&&await L(join(t,"mcp.json"),`${JSON.stringify(e.mcp,null,2)}
|
|
389
436
|
`),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(`
|
|
390
437
|
`)}
|
|
391
|
-
`);}s(iee,"mergeSettings");async function xK(e,t,r,n,o,i,a=[]){await tee(r,e),await ree(r,e),await nee(r,e),await oee(r,e),await iee(r,e),await see(a,e);let l=lL(t.features,n),c=eee(t.pick,n,o),m=Z7(t,i?.path),p=await Ah(e),u=new Date().toISOString(),f=ji({...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"),sl(stringify(f),"pack")),f}s(xK,"mergeIntoPack");xy();$o();async function TK(e){let t=[];try{let r=await readdir(e,{withFileTypes:!0});for(let n of r)n.isFile()&&ld(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(TK,"collectPreservedRootFiles");vo();ne();vo();A();xg();function mee(e){return e.toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}s(mee,"sanitize");function pee(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(pee,"gitUrlLastSegments");function PK(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=pee(e.gitRemoteUrl):n="extend";t.featureHint?n=`${n}-${t.featureHint}`:n=`${n}-pack`;let o=mee(n)||"extend";if(!r.has(o))return o;let i=2;for(;r.has(`${o}-${i}`);)i++;return `${o}-${i}`}s(PK,"suggestExtendName");function DK(e){let{config:t,parsed:r,entryFeatures:n,nameOverride:o}=e,i=new Set(t.extends.map(a=>a.name));return o||PK(r,{featureHint:n.length===1?n[0]:void 0},i)}s(DK,"selectInstallEntryName");function NK(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(NK,"canonicalRemoteIdentity");function uee(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?NK(e.gitRemoteUrl):null}s(uee,"parsedSourceIdentity");function vK(e,t){let r=uee(t);if(r===null)return null;for(let n of e){let o=NK(n.source);if(o!==null&&o===r)return n.name}return null}s(vK,"findExistingInstallName");function cL(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(cL,"sameFeatureSet");function FK(e){let{manifest:t,parsed:r,entryFeatures:n,yamlTarget:o,explicitAs:i}=e,a=vK(t,r);if(a===null)return null;let l=t.find(c=>c.name===a);return l.target!==o||l.as!==i||!cL(l.features,n)?null:l.name}s(FK,"pickReuseEntryName");var gee=s(e=>!e.includes("/")&&!e.includes("\\")&&!e.includes("\0")&&e!=="."&&e!=="..","isSafeInstallName"),$K=z$1.object({name:z$1.string().min(1).refine(gee,{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(Ol).min(1),pick:Pm.optional(),target:fr.optional(),path:z$1.string().optional(),paths:z$1.array(z$1.string().min(1)).min(1).optional(),as:Hc.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()}),hee=z$1.object({version:z$1.literal(1),installs:z$1.array($K).default([])});function yee(e,t){return e.source===t.source&&e.target===t.target&&e.as===t.as&&cL(e.features,t.features)}s(yee,"sameInstallIdentity");function mL(e){return join(e,"installs.yaml")}s(mL,"manifestPath");async function Ht(e){let t=await k(mL(e));if(t===null)return [];try{return hee.parse(parse(t)).installs.map(r=>ji(r))}catch{return []}}s(Ht,"readInstallManifest");async function Ph(e,t){let r=ji(t),o=(await Ht(e)).filter(i=>i.name!==r.name&&!yee(i,r));o.push(r),await L(mL(e),sl(stringify({version:1,installs:o.sort((i,a)=>i.name.localeCompare(a.name))}),"installs"));}s(Ph,"upsertInstallManifestEntry");async function GK(e,t){let r=await Ht(e),n=r.filter(o=>o.name!==t);return n.length===r.length?false:(await L(mL(e),sl(stringify({version:1,installs:n.sort((o,i)=>o.name.localeCompare(i.name))}),"installs")),true)}s(GK,"removeInstallManifestEntry");function jK(e){return ji($K.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(jK,"buildInstallManifestEntry");A();function _ee(e){return e?{path:e,paths:void 0}:{path:void 0,paths:void 0}}s(_ee,"pathScope");function See(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(ft(a))),commands:e.commands.filter(a=>o.has(a.name)),agents:e.agents.filter(a=>i.has(a.name))}}s(See,"applySelection");async function UK(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:R,forceFreshMaterialize:_,originalRef:S,acceptedElevated:I}=e,b=join(t,"packs"),P=See(n,o),T=R?await TK(R):[],W=new Date().toISOString(),$=p!==void 0?fr.parse(p):void 0,Y=_?null:await nj(b,i,{target:$,as:f,features:c}),ee=r,M=c,te=m,Te=u,Ot;if(Y){let Ee=Y.packDir,Qe=Y.meta;if(g&&Y.name!==r){let gt=join(b,r);if(await j(gt))throw new Error(`Auto-generated pack name "${r}" collides with an existing incompatible pack. Use --name to choose a different pack name.`);await rename(Y.packDir,gt),Ee=gt,Qe={...Y.meta,name:r};}let st=await xK(Ee,Qe,P,c,m,{source:i,...a!==void 0?{version:a}:{},...$!==void 0?{target:$}:{},...u?{path:u}:{},...f!==void 0?{as:f}:{}},T);ee=st.name,M=st.features,te=st.pick,Te=st.path,Ot=st.paths,y.success(`Updated pack "${st.name}" in .agentsmesh/packs/.`);}else {if(!_&&await Mi(join(b,r)))throw new Error(`Auto-generated pack name "${r}" collides with an existing incompatible pack. Use --name to choose a different pack name.`);await AK(b,r,P,{name:r,source:i,...a!==void 0&&{version:a},source_kind:l,installed_at:W,updated_at:W,features:c,...m!==void 0&&{pick:m},...$!==void 0&&{target:$},..._ee(u),...f!==void 0&&{as:f}},h!==void 0?{source_type:h}:{},T),y.success(`Installed pack "${r}" to .agentsmesh/packs/.`);}await Ph(t,jK({name:ee,source:i,version:a,sourceKind:l,features:M,pick:te,target:$,path:Te,paths:Ot,as:f,originalRef:S,acceptedElevated:I})),l!=="local"&&await QC(i);}s(UK,"installAsPack");function BK(e,t,r){if(!r?.features&&!r?.pick)return {narrowed:e,discoveredFeatures:t};let n=um(e,{scopedFeatures:r.features,implicitPick:r.pick});return {narrowed:n,discoveredFeatures:Tn(n)}}s(BK,"applyReplayInstallScope");function KK(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(KK,"buildInstalledList");function WK(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=ft(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(WK,"buildSkippedList");function HK(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}}s(HK,"stripUntrustedElevatedArtifacts");var kee=["hooks","permissions","mcp"];function zK(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(zK,"resolveElevatedConsent");function VK(e,t){let r={hooks:t.acceptHooks,permissions:t.acceptPermissions,mcp:t.acceptMcp},n=kee.filter(o=>e[o]!==null&&r[o]);return n.length>0?n:void 0}s(VK,"consentedArtifactsForManifest");function JK(e,t){return t?.originalRef!==void 0&&t.originalRef!==""?t.originalRef:e.rawRef!==""?e.rawRef:void 0}s(JK,"resolveOriginalRef");function YK(e,t){if(t.length===0)return e;let r=new Set(t);return e.filter(n=>!r.has(n))}s(YK,"featuresAfterStrip");async function XK(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:R,persisted:_}=e,{replay:S,prep:I,implicitPick:b,narrowed:P,discoveredFeatures:T,sourceType:W}=e,$=zK({acceptHooks:e.acceptHooks,acceptPermissions:e.acceptPermissions,acceptMcp:e.acceptMcp},S),Y=HK(P,{sourceKind:u.kind,...$});Y.stripped.length>0&&y.warn(`[agentsmesh] Stripped ${Y.stripped.join(", ")} from untrusted ${u.kind} source.
|
|
438
|
+
`);}s(pre,"mergeSettings");async function yH(e,t,r,n,o,i,a=[]){await ire(r,e),await are(r,e),await lre(r,e),await cre(r,e),await pre(r,e),await mre(a,e);let l=zL(t.features,n),c=sre(t.pick,n,o),m=ore(t,i?.path),p=await ty(e),u=new Date().toISOString(),f=ma({...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"),Al(stringify(f),"pack")),f}s(yH,"mergeIntoPack");t_();ts();async function _H(e){let t=[];try{let r=await readdir(e,{withFileTypes:!0});for(let n of r)n.isFile()&&vd(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(_H,"collectPreservedRootFiles");qo();se();qo();b();rh();function gre(e){return e.toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}s(gre,"sanitize");function hre(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(hre,"gitUrlLastSegments");function SH(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=hre(e.gitRemoteUrl):n="extend";t.featureHint?n=`${n}-${t.featureHint}`:n=`${n}-pack`;let o=gre(n)||"extend";if(!r.has(o))return o;let i=2;for(;r.has(`${o}-${i}`);)i++;return `${o}-${i}`}s(SH,"suggestExtendName");function RH(e){let{config:t,parsed:r,entryFeatures:n,nameOverride:o}=e,i=new Set(t.extends.map(a=>a.name));return o||SH(r,{featureHint:n.length===1?n[0]:void 0},i)}s(RH,"selectInstallEntryName");function kH(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(kH,"canonicalRemoteIdentity");function yre(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?kH(e.gitRemoteUrl):null}s(yre,"parsedSourceIdentity");function IH(e,t){let r=yre(t);if(r===null)return null;for(let n of e){let o=kH(n.source);if(o!==null&&o===r)return n.name}return null}s(IH,"findExistingInstallName");function VL(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(VL,"sameFeatureSet");function LH(e){let{manifest:t,parsed:r,entryFeatures:n,yamlTarget:o,explicitAs:i}=e,a=IH(t,r);if(a===null)return null;let l=t.find(c=>c.name===a);return l.target!==o||l.as!==i||!VL(l.features,n)?null:l.name}s(LH,"pickReuseEntryName");var Rre=s(e=>!e.includes("/")&&!e.includes("\\")&&!e.includes("\0")&&e!=="."&&e!=="..","isSafeInstallName"),EH=z$1.object({name:z$1.string().min(1).refine(Rre,{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(ql).min(1),pick:Ym.optional(),target:Ir.optional(),path:z$1.string().optional(),paths:z$1.array(z$1.string().min(1)).min(1).optional(),as:cm.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()}),kre=z$1.object({version:z$1.literal(1),installs:z$1.array(EH).default([])});function Ire(e,t){return e.source===t.source&&e.target===t.target&&e.as===t.as&&VL(e.features,t.features)}s(Ire,"sameInstallIdentity");function JL(e){return join(e,"installs.yaml")}s(JL,"manifestPath");async function Jt(e){let t=await k(JL(e));if(t===null)return [];try{return kre.parse(parse(t)).installs.map(r=>ma(r))}catch{return []}}s(Jt,"readInstallManifest");async function oy(e,t){let r=ma(t),o=(await Jt(e)).filter(i=>i.name!==r.name&&!Ire(i,r));o.push(r),await L(JL(e),Al(stringify({version:1,installs:o.sort((i,a)=>i.name.localeCompare(a.name))}),"installs"));}s(oy,"upsertInstallManifestEntry");async function OH(e,t){let r=await Jt(e),n=r.filter(o=>o.name!==t);return n.length===r.length?false:(await L(JL(e),Al(stringify({version:1,installs:n.sort((o,i)=>o.name.localeCompare(i.name))}),"installs")),true)}s(OH,"removeInstallManifestEntry");function wH(e){return ma(EH.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(wH,"buildInstallManifestEntry");b();function Cre(e){return e?{path:e,paths:void 0}:{path:void 0,paths:void 0}}s(Cre,"pathScope");function Ere(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(yt(a))),commands:e.commands.filter(a=>o.has(a.name)),agents:e.agents.filter(a=>i.has(a.name))}}s(Ere,"applySelection");async function bH(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:_,forceFreshMaterialize:S,originalRef:R,acceptedElevated:I}=e,w=join(t,"packs"),D=Ere(n,o),P=_?await _H(_):[],K=new Date().toISOString(),G=p!==void 0?Ir.parse(p):void 0,Y=S?null:await K0(w,i,{target:G,as:f,features:c}),ee=r,M=c,te=m,Te=u,At;if(Y){let we=Y.packDir,et=Y.meta;if(g&&Y.name!==r){let _t=join(w,r);if(await j(_t))throw new Error(`Auto-generated pack name "${r}" collides with an existing incompatible pack. Use --name to choose a different pack name.`);await rename(Y.packDir,_t),we=_t,et={...Y.meta,name:r};}let it=await yH(we,et,D,c,m,{source:i,...a!==void 0?{version:a}:{},...G!==void 0?{target:G}:{},...u?{path:u}:{},...f!==void 0?{as:f}:{}},P);ee=it.name,M=it.features,te=it.pick,Te=it.path,At=it.paths,y.success(`Updated pack "${it.name}" in .agentsmesh/packs/.`);}else {if(!S&&await aa(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 hH(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},...G!==void 0&&{target:G},...Cre(u),...f!==void 0&&{as:f}},h!==void 0?{source_type:h}:{},P),y.success(`Installed pack "${r}" to .agentsmesh/packs/.`);}await oy(t,wH({name:ee,source:i,version:a,sourceKind:l,features:M,pick:te,target:G,path:Te,paths:At,as:f,originalRef:R,acceptedElevated:I})),l!=="local"&&await GE(i);}s(bH,"installAsPack");function AH(e,t,r){if(!r?.features&&!r?.pick)return {narrowed:e,discoveredFeatures:t};let n=Am(e,{scopedFeatures:r.features,implicitPick:r.pick});return {narrowed:n,discoveredFeatures:Wn(n)}}s(AH,"applyReplayInstallScope");function xH(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(xH,"buildInstalledList");function TH(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=yt(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(TH,"buildSkippedList");function PH(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}}s(PH,"stripUntrustedElevatedArtifacts");var Ore=["hooks","permissions","mcp"];function DH(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(DH,"resolveElevatedConsent");function NH(e,t){let r={hooks:t.acceptHooks,permissions:t.acceptPermissions,mcp:t.acceptMcp},n=Ore.filter(o=>e[o]!==null&&r[o]);return n.length>0?n:void 0}s(NH,"consentedArtifactsForManifest");function vH(e,t){return t?.originalRef!==void 0&&t.originalRef!==""?t.originalRef:e.rawRef!==""?e.rawRef:void 0}s(vH,"resolveOriginalRef");function FH(e,t){if(t.length===0)return e;let r=new Set(t);return e.filter(n=>!r.has(n))}s(FH,"featuresAfterStrip");async function MH(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:_,persisted:S}=e,{replay:R,prep:I,implicitPick:w,narrowed:D,discoveredFeatures:P,sourceType:K}=e,G=DH({acceptHooks:e.acceptHooks,acceptPermissions:e.acceptPermissions,acceptMcp:e.acceptMcp},R),Y=PH(D,{sourceKind:u.kind,...G});Y.stripped.length>0&&y.warn(`[agentsmesh] Stripped ${Y.stripped.join(", ")} from untrusted ${u.kind} source.
|
|
392
439
|
These artifacts control your tool settings (shell hooks, granted permissions, MCP launch specs).
|
|
393
|
-
To accept them explicitly, re-run with: ${Y.stripped.map(
|
|
440
|
+
To accept them explicitly, re-run with: ${Y.stripped.map(Yo=>`--accept-${Yo}`).join(" ")} (or --accept-elevated for all three).`);let{narrowed:ee,discoveredFeatures:M}=AH(Y.canonical,FH(P,Y.stripped),R);if(!eH(ee))throw new Error(w||I.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 tH(ee,r,n,o),Te=await rH(ee,r,n,o),At=await nH(ee,r,n,o),we=await oH(ee,r,n,o),et={skills:te.length,rules:Te.length,commands:At.length,agents:we.length},{canonical:it}=await Mt(m,p.configDir,{},p.canonicalDir),_t=!r&&!n&&o?await sH(it,{skills:te,rules:Te,commands:At,agents:we}):{skillNames:te.map(Yo=>Yo.name),ruleSlugs:Te.map(Yo=>yt(Yo)),commandNames:At.map(Yo=>Yo.name),agentNames:we.map(Yo=>Yo.name)};cH({selected:_t,discoveredFeatures:M,preConflict:et});let di=R?.features??lH(M,_t);if(di.length===0)throw new Error("No features left to install after selection.");let Ny=iH(R?.pick,_t)??S.pick??aH({pathInRepo:S.pathInRepo??h,implicitPick:w,preConflictCounts:et,selected:_t}),YC=await Jt(p.canonicalDir),Wm=LH({manifest:YC,parsed:u,entryFeatures:di,yamlTarget:I.yamlTarget,explicitAs:c}),Hm=RH({config:m,parsed:u,entryFeatures:di,nameOverride:l||Wm||""}),zm=xH(_t,Hm),vy=TH(te,Te,At,we,_t),fV=vH(u,R),gV=NH(ee,G);if(i){if(await dH({configDir:p.configDir,config:m,entryArgs:{name:Hm,source:f,version:g,features:di,path:S.pathInRepo,pick:Ny,yamlTarget:I.yamlTarget,as:c},dryRun:n}),n)return {installed:zm,skipped:vy}}else {if(n)return y.info(`[dry-run] Would install pack "${Hm}" to ${t==="global"?"~/.agentsmesh/packs/.":".agentsmesh/packs/."}`),{installed:zm,skipped:vy};await bH({canonicalDir:p.canonicalDir,packName:Hm,narrowed:ee,selected:_t,sourceForYaml:f,version:g,sourceKind:u.kind,entryFeatures:di,pick:Ny,yamlTarget:I.yamlTarget,pathInRepo:S.pathInRepo,manualAs:c,renameExistingPack:l===""&&Wm===null,sourceType:K,contentRoot:_,forceFreshMaterialize:a,originalRef:fV,acceptedElevated:gV});}return await Pm("install",t,p.rootBase),{installed:zm,skipped:vy}}s(MH,"executeRunInstallPoolsAndWrite");function vm(e,t){let r=t?.input??process.stdin,n=t?.output??process.stdout;return new Promise(o=>{let i=ZW.createInterface({input:r,output:n,terminal:false}),a=false;i.on("close",()=>{a||o("");}),i.question(e,l=>{a=true,i.close(),o(l);});})}s(vm,"readLine");function $H(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(`
|
|
394
441
|
`)}
|
|
395
|
-
`);}s(
|
|
442
|
+
`);}s($H,"writeBanner");async function jH(e,t,r){let n=[];for(let o of e){if(o.resolved.length===0)continue;if(t.bypass){$H(r,o),n.push({entityKind:o.entityKind,entityName:o.entityName,action:"leave-with-warnings"});continue}$H(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(jH,"runBrokenLinkPrompt");var XL=["skills","agents","commands","rules"],QL={skills:"skill",agents:"agent",commands:"command",rules:"rule"},KH={skills:"skills",agents:"agents",commands:"commands",rules:"rules"};function Ml(e){return {skills:[],agents:[],commands:[],rules:[],aborted:e}}s(Ml,"emptySelection");function UH(e){return {skills:[...e.skills],agents:[...e.agents],commands:[...e.commands],rules:[...e.rules],aborted:false}}s(UH,"selectAll");function BH(e,t,r){let n=[`Found in ${t}:`];for(let o of XL){let i=r[o];if(i.length===0)continue;let a=i.length===1?QL[o]:KH[o];n.push(` - ${i.length} ${a}`);}n.push(""),e.write(`${n.join(`
|
|
396
443
|
`)}
|
|
397
|
-
`);}s(
|
|
444
|
+
`);}s(BH,"writeBanner");async function wre(e,t,r){if(r.length===0)return {selected:[],aborted:false};let n=KH[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=QL[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(wre,"walkType");function bre(e){let t=null;for(let r of XL)for(let n of e[r]){if(t!==null)return null;t={kind:r,id:n};}return t}s(bre,"findSingleEntity");async function Are(e,t){let r=QL[t.kind],n=(await e.ask(`Install ${r} "${t.id}"? [y/N] `)).trim().toLowerCase();return n==="y"?{...Ml(false),[t.kind]:[t.id]}:Ml(!(n===""||n==="n"))}s(Are,"runSingleEntityPrompt");async function WH(e,t,r){if(t.bypass)return UH(e);let n=e.skills.length+e.agents.length+e.commands.length+e.rules.length;if(n===0)return Ml(false);if(n===1){let a=bre(e);if(a!==null)return BH(r,t.packName,e),Are(r,a)}BH(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 UH(e);if(o==="n")return Ml(false);if(o!=="s")return Ml(true);let i={skills:[],agents:[],commands:[],rules:[]};for(let a of XL){let{selected:l,aborted:c}=await wre(r,a,e[a]);if(c)return Ml(true);i[a]=l;}return {...i,aborted:false}}s(WH,"runBulkPrompt");se();function Dre(e,t,r){let n=[];for(let o of qh(e))o.destination===t&&n.push({offset:o.destinationOffset,length:o.destinationLength,replacement:r});return n}s(Dre,"buildLinkRewrites");function zH(e,t,r){e.warn(`Broken link in ${t.entityKind} "${t.entityName}": ${r.link.path} (${r.classification})`);}s(zH,"warnLink");function Nre(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(Nre,"allocateSupportingFileNames");function HH(e,t,r){return e.find(n=>n.entityKind===t&&n.entityName===r)}s(HH,"findEntity");async function vre(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(vre,"buildSupportingFiles");async function Fre(e,t,r,n){let o=r.resolved.filter(p=>p.classification==="resolvable-outside"),i=Nre(o),a=await vre(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(...Dre(t.body,p.link.raw,f));}else zH(n,r,p);let m=MW(t.body,l);return {...t,body:m,supportingFiles:a}}s(Fre,"applySkillDecision");async function VH(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)?HH(r.brokenLinks,"skill",l.name):void 0;a.push(c?await Fre(t,l,c,o):l);}for(let l of n){if(l.entityKind==="skill"&&l.action==="include-resolvable")continue;let c=HH(r.brokenLinks,l.entityKind,l.entityName);if(c)for(let m of c.resolved)zH(o,c,m);}return {...r,skills:a}}s(VH,"applyBrokenLinkDecisions");var Fm=class extends Error{static{s(this,"InstallAbortError");}aborted=true;constructor(t){super(t),this.name="InstallAbortError";}};function Gre(){return {ask:s(e=>vm(e),"ask"),write:s(e=>process.stdout.write(e),"write")}}s(Gre,"defaultAdapter");function $re(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=>yt(t))}}s($re,"bulkCandidatesFrom");function JH(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(yt(a))),mcp:null,permissions:null,hooks:null,ignore:[]}}s(JH,"filterCanonical");function jre(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(jre,"discoveredFeaturesOf");async function Ure(e){let t=e.adapter??Gre(),r=await jH(e.aggregate.brokenLinks,{bypass:e.bypass},t);if(r.aborted)throw new Fm("User aborted at broken-link prompt.");let n=[...r.decisions],o=await VH({contentRoot:e.contentRoot,aggregate:e.aggregate,decisions:n,logger:y}),i=$re(o);if(i.skills.length+i.agents.length+i.commands.length+i.rules.length===0)return {aggregate:o,narrowed:JH(o,{skills:[],agents:[],commands:[],rules:[]}),discoveredFeatures:[]};let l=await WH(i,{packName:e.displayName,bypass:e.bypass},t);if(l.aborted)throw new Fm("User aborted at bulk-select prompt.");let c=JH(o,l);return {aggregate:o,narrowed:c,discoveredFeatures:jre(c)}}s(Ure,"runSkillPackPromptFlow");function Bre(e){return basename(e)||"install source"}s(Bre,"displayNameForContentRoot");async function YH(e){if(!e.discovery.aggregate)return {aborted:false};try{let t=await Ure({contentRoot:e.contentRoot,aggregate:e.discovery.aggregate,narrowed:e.discovery.narrowed,bypass:e.bypass,displayName:Bre(e.contentRoot)});return {aborted:!1,narrowed:t.narrowed,discoveredFeatures:t.discoveredFeatures}}catch(t){if(t instanceof Fm)return y.warn(t.message),{aborted:true};throw t}}s(YH,"runPromptFlowWithAbort");async function XH(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:_,nameOverride:S,acceptHooks:R,acceptPermissions:I,acceptMcp:w,scope:D,sourceArg:P,replay:K}=e,G=process.stdin.isTTY,{prep:Y,implicitPick:ee}=t,{narrowed:M,discoveredFeatures:te}=t;try{let Te=await YH({discovery:t,contentRoot:c,bypass:f||u||!G});if(Te.aborted)return {exitCode:130,data:{source:P,mode:"install",installed:[],skipped:[],dryRun:u}};if(M=Te.narrowed??M,te=Te.discoveredFeatures??te,te.length===0&&r.brokenResources.length>0){let we=r.brokenResources.map(et=>` - ${et.path}: ${et.reason}`).join(`
|
|
398
445
|
`);throw new Error(`No installable resources after skipping invalid files (${r.brokenResources.length}):
|
|
399
|
-
${
|
|
400
|
-
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
|
|
401
|
-
`),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(
|
|
446
|
+
${we}
|
|
447
|
+
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 At=await MH({scope:D,force:f,dryRun:u,tty:G,useExtends:g,forceFreshMaterialize:h,nameOverride:S,explicitAs:_,acceptHooks:R,acceptPermissions:I,acceptMcp:w,config:m,context:p,parsed:o,sourceForYaml:i,version:a,pathInRepo:l,contentRoot:c,persisted:n,replay:K,prep:Y,implicitPick:ee,narrowed:M,discoveredFeatures:te,sourceType:t.layout?HW(t.layout):void 0});return {exitCode:0,data:{source:P,mode:"install",installed:At.installed,skipped:At.skipped,dryRun:u,...r.brokenResources.length>0?{brokenResources:r.brokenResources}:{}}}}finally{Y.cleanup&&await Y.cleanup();}}s(XH,"runSinglePackInstall");async function QH(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(QH,"runInstallMarketplace");async function qH(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 QH(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(qH,"routePickerResult");tt();b();se();async function Wre(e){let t=await Jt(e.canonicalDir);if(t.length===0){y.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){y.info("All recorded packs are already installed.");return}for(let n of r)await e.reinstall(n);y.success(`Reinstalled ${r.length} pack(s) from .agentsmesh/installs.yaml.`);}s(Wre,"syncInstalledPacks");async function ZH(e){return e.sync?(await Wre({canonicalDir:e.canonicalDir,reinstall:e.reinstall}),true):false}s(ZH,"maybeRunInstallSync");async function ez(e){let{projectRoot:t,sync:r,dryRun:n,force:o,scope:i,recurseInstall:a}=e;if(!r)return;let{context:l}=await ye(t,i),c=[],m=[];if(await ZH({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(ez,"handleSync");function tz(){return {brokenResources:[],subPackFailures:[]}}s(tz,"createInstallReport");function Vre(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(Vre,"assertPathStaysInRepo");async function rz(e){let t=await ez(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:_,scope:S,sourceArg:R}=e;if(!R)throw new Error("Missing source. Usage: agentsmesh install <source> [--path ...] [--target ...]");let I=process.stdin.isTTY;if(!I&&!i&&!o)throw new Error("Non-interactive terminal: use --force or --dry-run for agentsmesh install.");let{config:w,context:D}=await ye(r,S);await ze(w,r);let P=await PL(R,D.configDir,m);if(P.kind!=="local"&&!await qK())throw new Error("git is required for remote installs. Please install git and try again.");let{resolvedPath:K,sourceForYaml:G,version:Y}=await eW(P,R),ee=P.pathInRepo.replaceAll("\\","/").replace(/^\/+|\/+$/g,"");Vre(ee,P.pathInRepo);let M=ee?join(K,ee):K;if(!await j(M))throw new Error(`Install path does not exist: ${M}`);let te=await qW({as:u,contentRoot:M,pathInRepo:ee}),Te=tz(),At={onParseError:s((et,it)=>{Te.brokenResources.push({path:it,kind:"frontmatter",reason:et.message});},"onParseError")},we=await zW({resolvedPath:K,contentRoot:M,pathInRepo:ee,explicitTarget:p,explicitAs:u,replayPick:n?.pick,parseOpts:At});if(we.layout&&!u&&!p&&!m){let et=XW({layout:we.layout,sourceName:f||(P.org&&P.repo?`${P.org}-${P.repo}`:"source"),sourceForYaml:G,explicitPath:m,explicitAs:u,explicitTarget:p,all:l,force:i,tty:I}),it=await qH({pickerResult:et,installReport:Te,sourceArg:R,projectRoot:r,dryRun:o,force:i,useExtends:a,nameOverride:f,replay:n,recurseInstall:e.recurseInstall});if(it!==null)return it}return XH({discovery:we,installReport:Te,persisted:te,parsed:P,sourceForYaml:G,version:Y,pathInRepo:ee,contentRoot:M,config:w,context:D,dryRun:o,force:i,useExtends:a,forceFreshMaterialize:c,explicitAs:u,nameOverride:f,acceptHooks:g,acceptPermissions:h,acceptMcp:_,scope:S,sourceArg:R,replay:n})}s(rz,"runInstallLocked");async function Gl(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:_,acceptMcp:S}=QK(e),R=e.global===true?"global":"project",I=t[0]?.trim(),w;if(n===void 0){let{context:D}=await ye(r,R);w=await wm(D.canonicalDir);}try{return await rz({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:_,acceptMcp:S,scope:R,sourceArg:I,recurseInstall:Gl})}finally{await w?.();}}s(Gl,"runInstall");async function nz(e,t,r){return Gl(e,t,r)}s(nz,"runInstall");se();function oz(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(", ");y.success(`Installed ${n}.`);}if(t.skipped.length>0)for(let r of t.skipped)y.warn(`Skipped ${r.kind} "${r.name}": ${r.reason}`);if(t.brokenResources&&t.brokenResources.length>0){let r=t.brokenResources.length;y.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)y.warn(`Sub-pack "${r.name}" (${r.path}) failed: ${r.error}`);}}s(oz,"renderInstall");tt();sn();se();function sz(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(sz,"detectDuplicates");function sy(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(sy,"buildPlan");function iz(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=sz(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=>sy(m.name,m,e,t));for(let m of e.extends)r.has(m.name)||c.push(sy(m.name,null,e,t));return {removals:c,skipped:[]}}let n=sz(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(sy(a,l,e,t));continue}if(t.has(a)){o.push(sy(a,null,e,t));continue}i.push(a);}return {removals:o,skipped:i}}s(iz,"planUninstall");b();b();mm();async function az(e,t){let r=join(e,Sr);if(await j(r))return null;let n=await aa(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 ry(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)}
|
|
448
|
+
`),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(az,"migrateLegacyManifest");b();var Qre=["pack.yaml",Sr];function qre(e,t){return relative(e,t).replaceAll("\\","/")}s(qre,"toForwardSlashRelative");async function iy(e,t){let r=await U(e),n=new Map;for(let i of r){let a=qre(e,i);Qre.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 ah(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(iy,"detectModifiedFiles");function lz(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(`
|
|
402
449
|
`)}
|
|
403
|
-
`);}s(
|
|
450
|
+
`);}s(lz,"writeBanner");async function cz(e,t,r){if(e.modifications.length===0)return {action:"proceed"};if(t.bypass)return lz(r,e),{action:"delete-anyway"};lz(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(cz,"runModifiedFilesPrompt");async function Zre(e){let t=await k(join(e,Sr));if(t===null)return null;try{return JSON.parse(t).files??{}}catch{return null}}s(Zre,"readManifestFiles");async function ene(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 az(n,{warn:r.warn,dryRun:r.dryRun===true}),i=o!==null,a=o!==null&&r.dryRun===true?o.manifest.files:await Zre(n);if(a===null)return {plan:e,modifications:[],action:"proceed",legacyMigrated:i,packDirMissing:false};let l=await iy(n,a);if(r.keepPack||l.length===0)return {plan:e,modifications:l,action:"proceed",legacyMigrated:i,packDirMissing:false};let c=await cz({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(ene,"decideOne");async function pz(e,t,r){let n=[];for(let o of e){let i=await ene(o,t,r);if(i==="abort")return {decisions:n,aborted:true};n.push(i);}return {decisions:n,aborted:false}}s(pz,"gatherUninstallDecisions");b();b();async function uz(e,t,r){if(!t.extends.some(c=>c.name===r))return false;let n=await k(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(`
|
|
404
451
|
`)?l:`${l}
|
|
405
|
-
`),true}s(
|
|
406
|
-
`);switch(await
|
|
407
|
-
`,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(
|
|
452
|
+
`),true}s(uz,"removeAgentsmeshExtendByName");async function dz(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 OH(r,t.name),l=false;t.extendsEntry!==null&&(l=await uz(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(dz,"applyUninstall");function ine(e,t){return relative(e,t).replaceAll("\\","/")}s(ine,"toForwardSlashRel");function qL(e){return e.map(t=>({name:t,reason:"not found in installs.yaml"}))}s(qL,"buildSkipped");function fz(e,t,r){return e.plan.manifestEntry===null?null:ine(t,join(r,e.plan.name))}s(fz,"packPathFor");function gz(e,t,r){return e.map(n=>({name:n.plan.name,pack_path:fz(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(gz,"previewEntries");function hz(e,t,r,n){let o=e.action==="keep-modified"||!t.packDirRemoved;return {name:t.name,pack_path:fz(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(hz,"appliedEntry");function ane(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(ane,"parseNames");function lne(){return {ask:s(e=>vm(e),"ask"),write:s(e=>process.stdout.write(e),"write")}}s(lne,"defaultAdapter");async function ay(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=ane(t),f=e.json===true;function g(R){return f||y.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:_}=await ye(r,o);await ze(h,r);let S=await wm(_.canonicalDir);try{let R=await Jt(_.canonicalDir),I=join(_.canonicalDir,"packs"),w=iz({names:u,all:i,keepPack:c,keepGenerated:m,installs:R,extends:h.extends,packsDir:I}),{decisions:D,aborted:P}=await pz(w.removals,I,{adapter:n.promptAdapter??lne(),warn:s(ee=>y.warn(ee),"warn"),bypassPrompts:a||l||!p,keepPack:c,dryRun:l});if(P)return y.warn("Uninstall aborted at modification prompt."),{exitCode:130,data:{scope:o,mode:"uninstall",removed:[],skipped:[],failed:[],dryRun:l}};for(let ee of w.removals)for(let M of ee.warnings)y.warn(M);if(l){for(let ee of D)y.info(`[dry-run] Would uninstall pack "${ee.plan.name}".`);return {exitCode:0,data:{scope:o,mode:"uninstall",removed:gz(D,_.rootBase,I),skipped:qL(w.skipped),failed:[],dryRun:!0}}}let K=join(_.configDir,"agentsmesh.yaml"),G=[],Y=[];for(let ee of D){let M=ee.action==="keep-modified"?{...ee.plan,packDir:null}:ee.plan;try{let te=await dz({plan:M,canonicalDir:_.canonicalDir,configPath:K,config:h});G.push(hz(ee,te,_.rootBase,I));}catch(te){let Te=te instanceof Error?te.message:String(te);Y.push({name:ee.plan.name,reason:Te}),f||y.error(`Failed to uninstall "${ee.plan.name}": ${Te}`);}}return !m&&G.length>0?await Pm("uninstall",o,_.rootBase):m&&G.length>0&&y.warn("--keep-generated: target files derived from the removed pack(s) may be stale until the next generate."),{exitCode:Y.length>0?1:0,data:{scope:o,mode:"uninstall",removed:G,skipped:qL(w.skipped),failed:Y,dryRun:!1}}}finally{await S();}}s(ay,"runUninstall");async function _z(e,t,r){return ay(e,t,r)}s(_z,"runUninstall");se();function Sz(e){let{data:t}=e;if(t.dryRun){if(t.removed.length===0){y.info("[dry-run] No installs matched.");return}y.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;y.info(` - ${r.name} (${n})`);}return}if(t.removed.length>0){let r=t.removed.map(n=>`"${n.name}"`).join(", ");y.success(`Uninstalled ${t.removed.length} pack(s): ${r}.`);}for(let r of t.skipped)y.warn(`Skipped "${r.name}": ${r.reason}`);for(let r of t.failed)y.error(`Failed "${r.name}": ${r.reason}`);}s(Sz,"renderUninstall");tt();sn();se();function Rz(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(Rz,"readRefreshFlags");function kz(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(kz,"parseRefreshNames");b();function cne(e){return e.modifications.length>0?"needs-consent":e.oldSha===e.newSha?"unchanged":"clean-update"}s(cne,"classifyRefreshPlan");async function Lz(e,t,r){let n=join(t,e.name),o=e.version??null,i=join(n,Sr),a=await k(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 iy(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:cne({modifications:c,oldSha:o,newSha:m})}}s(Lz,"planSinglePack");function Cz(){return async e=>{if(e.source_kind==="local")return e.version??"local";let t=rd(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 Vh(r,t.remoteUrl)}}s(Cz,"createDefaultResolveRef");async function Ez(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 Jt(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 oy(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(Ez,"applySinglePack");async function mne(e,t,r={}){let n=r.readLine??vm,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":pne(a)}finally{o&&clearTimeout(o);}}s(mne,"promptWithTimeout");function pne(e){let t=e.trim().toLowerCase();return t==="y"||t==="yes"?"y":t==="per-pack"?"per-pack":"n"}s(pne,"normalize");async function ZL(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(`
|
|
453
|
+
`);switch(await mne(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(ZL,"runConsentPrompt");function une(e,t){let r=rd(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(une,"buildSourceForRefresh");function Oz(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=une(t,r),a=await Gl(n,[i],e.projectRoot,o);if(a.exitCode!==0)throw new Error(`Install for refresh "${t.name}" failed with exit code ${a.exitCode}`)}}s(Oz,"createRunInstallForRefresh");var wz=300*1e3;async function ly(e,t,r){let{dryRun:n,force:o,global:i,json:a}=Rz(e),l=i?"global":"project",c=kz(t),m=s(()=>({scope:l,mode:"refresh",refreshed:[],unchanged:[],skipped:[],failed:[],dryRun:n}),"emptyData"),{config:p,context:u}=await ye(r,l);await ze(p,r);let f=await wm(u.canonicalDir);try{let g=await Jt(u.canonicalDir);if(c.length>0){let M=new Set(g.map(Te=>Te.name)),te=c.filter(Te=>!M.has(Te));if(te.length>0)return a||y.error(`Unknown pack(s): ${te.join(", ")}`),{exitCode:2,data:m()}}let h=c.length>0?g.filter(M=>c.includes(M.name)):g;if(h.length===0)return a||y.info("No packs to refresh."),{exitCode:0,data:m()};let _=join(u.canonicalDir,"packs"),S=Cz(),R=[];for(let M of h)R.push(await Lz(M,_,{resolveRef:S}));let I=R.filter(M=>M.classification==="error"),w=R.filter(M=>M.classification==="unchanged"),D=R.filter(M=>M.classification==="clean-update"),P=R.filter(M=>M.classification==="needs-consent"),K=m();if(K.unchanged=w.map(M=>({name:M.name,ref:M.newSha})),K.failed=I.map(M=>({name:M.name,phase:"plan",error:M.error?.message??"unknown plan error"})),n){for(let M of D)K.refreshed.push({name:M.name,oldRef:M.oldSha,newRef:M.newSha,oldSha:M.oldSha,newSha:M.newSha,changedFiles:{added:[],removed:[],modified:[]}});for(let M of P)K.refreshed.push({name:M.name,oldRef:M.oldSha,newRef:M.newSha,oldSha:M.oldSha,newSha:M.newSha,changedFiles:{added:[],removed:[],modified:[]}});return {exitCode:I.length>0?1:0,data:K}}let G=new Set(D.map(M=>M.name));if(P.length>0)if(o)for(let M of P)G.add(M.name);else {let M=await ZL(P.map(te=>({name:te.name,modifiedCount:te.modifications.length})),{timeoutMs:wz});if(M.proceed&&!M.perPack)for(let te of P)G.add(te.name);else if(M.proceed&&M.perPack)for(let te of P)(await ZL([{name:te.name,modifiedCount:te.modifications.length}],{timeoutMs:wz})).proceed?G.add(te.name):K.skipped.push({name:te.name,reason:"user-declined"});else for(let te of M.declined)K.skipped.push({name:te,reason:"user-declined"});}let Y=Oz({projectRoot:r,scope:l});for(let M of [...D,...P]){if(!G.has(M.name))continue;let te=await Ez(M,u.canonicalDir,{runInstallForRefresh:Y});te.success?K.refreshed.push({name:M.name,oldRef:M.oldSha,newRef:M.newSha,oldSha:M.oldSha,newSha:M.newSha,changedFiles:{added:[],removed:[],modified:[]}}):K.failed.push({name:M.name,phase:te.phase??"apply",error:te.error??"unknown"});}return K.refreshed.length>0&&await Pm("refresh",l,u.rootBase),{exitCode:K.failed.length>0?1:0,data:K}}finally{await f();}}s(ly,"runRefresh");async function bz(e,t,r){return ly(e,t,r)}s(bz,"runRefresh");se();function Az(e){let{data:t}=e;if(t.dryRun){if(t.refreshed.length===0&&t.unchanged.length===0){y.info("[dry-run] No packs to refresh.");return}y.info(`[dry-run] Would refresh ${t.refreshed.length} pack(s); ${t.unchanged.length} unchanged.`);for(let r of t.refreshed)y.info(` - ${r.name}: ${r.oldSha??"\u2014"} \u2192 ${r.newSha}`);for(let r of t.unchanged)y.info(` - ${r.name}: unchanged at ${r.ref}`);return}if(t.refreshed.length>0){y.success(`Refreshed ${t.refreshed.length} pack(s):`);for(let r of t.refreshed)y.info(` - ${r.name}: ${r.oldSha??"\u2014"} \u2192 ${r.newSha}`);}for(let r of t.unchanged)y.info(`Pack "${r.name}" unchanged at ${r.ref}.`);for(let r of t.skipped)y.warn(`Skipped "${r.name}": ${r.reason}`);for(let r of t.failed)y.error(`Failed "${r.name}" (${r.phase}): ${r.error}`);}s(Az,"renderRefresh");tt();b();mm();async function gne(e){let t=await k(join(e,Sr));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(gne,"readPackManifestMeta");function hne(e,t){return relative(e,t).replaceAll("\\","/")}s(hne,"toForwardSlashRel");async function cy(e,t){let r=e.global===true?"global":"project",n=Ra(t,r),o=await Jt(n.canonicalDir),i=join(n.canonicalDir,"packs"),a=[];for(let l of o){let c=join(i,l.name),m=await gne(c),p=await aa(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:hne(n.rootBase,c),license:p?.license??null});}return {exitCode:0,data:{scope:r,subcommand:"list",installs:a}}}s(cy,"runInstallsList");var yne=["list"];function xz(e){return {scope:e,subcommand:"list",installs:[]}}s(xz,"emptyData");async function Tz(e,t,r){let n=e.global===true?"global":"project",o=t[0];return o===void 0||o===""?{exitCode:0,data:xz(n),showHelp:true}:o==="list"?cy(e,r):{exitCode:2,data:xz(n),showHelp:true,error:`Unknown installs subcommand: "${o}". Available: ${yne.join(", ")}. Did you mean \`agentsmesh install ${o}\`?`}}s(Tz,"runInstalls");se();var my=[{key:"name",label:"NAME"},{key:"source",label:"SOURCE"},{key:"features",label:"FEATURES"},{key:"license",label:"LICENSE"},{key:"installed",label:"LAST TOUCHED"}];function _ne(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(_ne,"toRow");function Sne(e){let t={name:0,source:0,features:0,license:0,installed:0};for(let n of my)t[n.key]=n.label.length;for(let n of e)for(let o of my)t[o.key]=Math.max(t[o.key],n[o.key].length);let r=my.map(n=>n.label.padEnd(t[n.key])).join(" ");y.info(r);for(let n of e)y.info(my.map(o=>n[o.key].padEnd(t[o.key])).join(" "));}s(Sne,"renderTable");function Pz(e){if(e.error&&y.error(e.error),e.showHelp){Rd("installs");return}let{data:t}=e;if(t.installs.length===0){y.info("No installed packs.");return}Sne(t.installs.map(_ne));}s(Pz,"renderInstalls");MI();b();var nC="agentsmesh.yaml";async function oC(e){let t=join(e,nC),r=await k(t);return r===null?{}:parse(r)??{}}s(oC,"readScopedConfigRaw");async function Nz(e,t){let r=join(e,nC),n=await k(r)??`version: 1
|
|
454
|
+
`,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(Nz,"writePluginEntry");async function vz(e,t){let r=join(e,nC),n=await k(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(vz,"removePluginEntry");async function Fz(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 Rne(e,t.slice(1),r);case "list":return kne(r);case "remove":return Ine(t.slice(1),r);case "info":return Lne(t.slice(1),r);default:return {exitCode:2,data:{subcommand:"list",plugins:[]},showHelp:true,error:`Unknown plugin subcommand: ${n}`}}}s(Fz,"runPlugin");async function Rne(e,t,r){let n=t[0];if(!n)throw new Hn("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)??Cne(n);return await Nz(r,{id:a,source:n,version:o==="latest"?void 0:o}),{exitCode:0,data:{subcommand:"add",id:a,package:n,version:o}}}s(Rne,"runPluginAdd");async function kne(e){let r=(await oC(e)).plugins??[],n=[];for(let o of r){let i="\u2717",a="";try{let l=await hh(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(kne,"runPluginList");async function Ine(e,t){let r=e[0];if(!r)throw new Hn("Usage: agentsmesh plugin remove <id>");let n=await vz(t,r);return {exitCode:0,data:{subcommand:"remove",id:r,found:n}}}s(Ine,"runPluginRemove");async function Lne(e,t){let r=e[0];if(!r)throw new Hn("Usage: agentsmesh plugin info <id>");let o=((await oC(t)).plugins??[]).find(l=>l.id===r);if(!o)return {exitCode:1,data:{subcommand:"info",id:r,package:"",descriptors:[]}};let i;try{i=await hh(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(Lne,"runPluginInfo");function Cne(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(Cne,"derivePluginId");se();function Mz(e){if(e.error&&y.error(e.error),e.showHelp){Ane();return}let{data:t}=e;switch(t.subcommand){case "add":Ene(t.id,t.package,t.version);break;case "list":One(t.plugins);break;case "remove":wne(t.id,t.found);break;case "info":bne(t,e.exitCode);break}}s(Mz,"renderPlugin");function Ene(e,t,r){y.success(`Plugin '${e}' added to agentsmesh.yaml`),y.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";y.info(`Next: npm install ${t}${n}`),y.info(`Then add '${e}' to pluginTargets in agentsmesh.yaml to enable it.`);}s(Ene,"renderAdd");function One(e){if(e.length===0){y.info("No plugins configured. Use: agentsmesh plugin add <source>");return}y.info("Configured plugins:");for(let t of e){let r=t.version!==void 0?`@${t.version}`:"",n=t.status??"",o=t.targets??"";y.info(` ${t.id} | ${t.package}${r} | ${n} | ${o}`);}}s(One,"renderList");function wne(e,t){t?y.success(`Plugin '${e}' removed from agentsmesh.yaml`):y.warn(`Plugin '${e}' was not found in agentsmesh.yaml`);}s(wne,"renderRemove");function bne(e,t){if(t!==0&&e.package===""){y.error(`Plugin '${e.id}' not found in agentsmesh.yaml. Use: agentsmesh plugin add`);return}if(t!==0){y.error(`Failed to load plugin '${e.id}'`);return}y.info(`Plugin: ${e.id}`),y.info(`Source: ${e.package}${e.version!==void 0?`@${e.version}`:""}`),y.info(`Descriptors: ${e.descriptors.length}`);for(let r of e.descriptors)y.info(` - ${r.id}: ${r.description}`);}s(bne,"renderInfo");function Ane(){y.info("Usage: agentsmesh plugin <subcommand> [args] [flags]"),y.info(""),y.info("Subcommands:"),y.info(" add <source> Register a plugin package in agentsmesh.yaml"),y.info(" list Show all configured plugins and load status"),y.info(" remove <id> Remove a plugin from agentsmesh.yaml"),y.info(" info <id> Show descriptor details for a configured plugin"),y.info(""),y.info("Flags (add):"),y.info(" --version <v> Pin plugin version"),y.info(" --id <id> Override derived plugin id"),y.info(""),y.info("Note: plugins load as trusted Node.js modules and run with full process privileges."),y.info(" Only install plugins from sources you trust.");}s(Ane,"printPluginHelp");b();Vn();function ua(e){return e.toUpperCase().replace(/-/g,"_")}s(ua,"toPrefix");function pi(e){return e.split("-").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join("")}s(pi,"toPascal");function sC(e){let t=ua(e.id),r=pi(e.id);return `import type { TargetGenerators } from '../catalog/target.interface.js';
|
|
408
455
|
import type { TargetDescriptor, TargetLayout } from '../catalog/target-descriptor.js';
|
|
409
456
|
import { generateRules } from './generator.js';
|
|
410
457
|
import { importFrom${r} } from './importer.js';
|
|
@@ -507,7 +554,7 @@ export const descriptor = {
|
|
|
507
554
|
buildImportPaths: build${r}ImportPaths,
|
|
508
555
|
detectionPaths: [${t}_DIR],
|
|
509
556
|
} satisfies TargetDescriptor;
|
|
510
|
-
`}s(
|
|
557
|
+
`}s(sC,"TEMPLATE_INDEX");function iC(e){return `import { describe, it, expect } from 'vitest';
|
|
511
558
|
import type { CanonicalFiles } from '../../../../src/core/types.js';
|
|
512
559
|
import { generateRules } from '../../../../src/targets/${e.id}/generator.js';
|
|
513
560
|
|
|
@@ -536,7 +583,7 @@ describe('generateRules (${e.id})', () => {
|
|
|
536
583
|
expect(result).toHaveLength(0);
|
|
537
584
|
});
|
|
538
585
|
});
|
|
539
|
-
`}s(
|
|
586
|
+
`}s(iC,"TEMPLATE_GENERATOR_TEST");function aC(e){let t=pi(e.id);return `import { describe, it, expect } from 'vitest';
|
|
540
587
|
import { importFrom${t} } from '../../../../src/targets/${e.id}/importer.js';
|
|
541
588
|
|
|
542
589
|
describe('importFrom${t} (${e.id})', () => {
|
|
@@ -550,10 +597,10 @@ describe('importFrom${t} (${e.id})', () => {
|
|
|
550
597
|
expect(result).toHaveLength(0);
|
|
551
598
|
});
|
|
552
599
|
});
|
|
553
|
-
`}s(
|
|
600
|
+
`}s(aC,"TEMPLATE_IMPORTER_TEST");function lC(e){return `# ${e.displayName} Workspace
|
|
554
601
|
|
|
555
602
|
Follow the ${e.displayName} configuration files and keep changes small.
|
|
556
|
-
`}s(
|
|
603
|
+
`}s(lC,"TEMPLATE_FIXTURE_ROOT_MD");function Gz(e){let t=ua(e.id);return `export const ${t}_TARGET = '${e.id}';
|
|
557
604
|
|
|
558
605
|
// Project-level paths
|
|
559
606
|
export const ${t}_DIR = '.${e.id}';
|
|
@@ -566,21 +613,21 @@ export const ${t}_GLOBAL_RULES_DIR = '~/.${e.id}/rules';
|
|
|
566
613
|
// Canonical paths
|
|
567
614
|
export const ${t}_CANONICAL_ROOT_RULE = '.agentsmesh/rules/_root.md';
|
|
568
615
|
export const ${t}_CANONICAL_RULES_DIR = '.agentsmesh/rules';
|
|
569
|
-
`}s(
|
|
616
|
+
`}s(Gz,"TEMPLATE_CONSTANTS");function $z(e){let t=ua(e.id);return `import type { CanonicalFiles } from '../../core/types.js';
|
|
570
617
|
import { ${t}_TARGET, ${t}_DIR } from './constants.js';
|
|
571
618
|
|
|
572
|
-
export interface ${
|
|
619
|
+
export interface ${pi(e.id)}Output {
|
|
573
620
|
path: string;
|
|
574
621
|
content: string;
|
|
575
622
|
}
|
|
576
623
|
|
|
577
|
-
export function generateRules(_canonical: CanonicalFiles): ${
|
|
624
|
+
export function generateRules(_canonical: CanonicalFiles): ${pi(e.id)}Output[] {
|
|
578
625
|
// TODO(agentsmesh-scaffold): implement generateRules for ${e.displayName}
|
|
579
626
|
void ${t}_TARGET;
|
|
580
627
|
void ${t}_DIR;
|
|
581
628
|
return [];
|
|
582
629
|
}
|
|
583
|
-
`}s(
|
|
630
|
+
`}s($z,"TEMPLATE_GENERATOR");function jz(e){let t=pi(e.id),r=ua(e.id);return `import type { ImportResult } from '../../core/types.js';
|
|
584
631
|
import type { TargetLayoutScope } from '../catalog/target-descriptor.js';
|
|
585
632
|
import { ${r}_TARGET } from './constants.js';
|
|
586
633
|
|
|
@@ -592,7 +639,7 @@ export async function importFrom${t}(
|
|
|
592
639
|
void ${r}_TARGET;
|
|
593
640
|
return [];
|
|
594
641
|
}
|
|
595
|
-
`}s(
|
|
642
|
+
`}s(jz,"TEMPLATE_IMPORTER");function Uz(e){let t=ua(e.id);return `/** Lint rules for the ${e.id} target. */
|
|
596
643
|
import type { CanonicalFiles, LintDiagnostic } from '../../core/types.js';
|
|
597
644
|
import { validateRules } from '../../core/lint/validate-rules.js';
|
|
598
645
|
import { ${t}_TARGET } from './constants.js';
|
|
@@ -610,7 +657,7 @@ export function lintRules(
|
|
|
610
657
|
target: ${t}_TARGET,
|
|
611
658
|
}));
|
|
612
659
|
}
|
|
613
|
-
`}s(
|
|
660
|
+
`}s(Uz,"TEMPLATE_LINTER");function Bz(e){return `/**
|
|
614
661
|
* ${e.displayName}-specific lint hooks.
|
|
615
662
|
*/
|
|
616
663
|
|
|
@@ -620,7 +667,7 @@ export function lintHooks(_canonical: CanonicalFiles): LintDiagnostic[] {
|
|
|
620
667
|
// TODO(agentsmesh-scaffold): implement target-specific hook validation for ${e.displayName}
|
|
621
668
|
return [];
|
|
622
669
|
}
|
|
623
|
-
`}s(
|
|
670
|
+
`}s(Bz,"TEMPLATE_LINT_HOOKS");function Kz(e){let t=pi(e.id),r=ua(e.id);return `import type { TargetLayoutScope } from '../../../targets/catalog/target-descriptor.js';
|
|
624
671
|
import { ${r}_DIR } from '../../../targets/${e.id}/constants.js';
|
|
625
672
|
|
|
626
673
|
export async function build${t}ImportPaths(
|
|
@@ -632,26 +679,26 @@ export async function build${t}ImportPaths(
|
|
|
632
679
|
// Reference: src/core/reference/import-maps/kiro.ts for a full example
|
|
633
680
|
void ${r}_DIR;
|
|
634
681
|
}
|
|
635
|
-
`}s(
|
|
682
|
+
`}s(Kz,"TEMPLATE_IMPORT_MAP");var Tne=/^[a-z][a-z0-9-]*$/;async function Wz(e){let{id:t,projectRoot:r,force:n=false}=e,o=e.displayName??t,i={id:t,displayName:o};if(!Tne.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:Gz(i)},{rel:`src/targets/${t}/index.ts`,content:sC(i)},{rel:`src/targets/${t}/generator.ts`,content:$z(i)},{rel:`src/targets/${t}/importer.ts`,content:jz(i)},{rel:`src/targets/${t}/linter.ts`,content:Uz(i)},{rel:`src/targets/${t}/lint.ts`,content:Bz(i)},{rel:`src/core/reference/import-maps/${t}.ts`,content:Kz(i)},{rel:`tests/unit/targets/${t}/generator.test.ts`,content:iC(i)},{rel:`tests/unit/targets/${t}/importer.test.ts`,content:aC(i)},{rel:`tests/e2e/fixtures/${t}-project/AGENTS.md`,content:lC(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(Wz,"writeTargetScaffold");async function zz(e,t,r){let n=t[0];return n===void 0||n===""?{exitCode:0,data:{id:"",written:[],skipped:[],postSteps:[]},showHelp:true}:n==="scaffold"?Pne(e,t.slice(1),r):{exitCode:2,data:{id:"",written:[],skipped:[],postSteps:[]},showHelp:true,error:`Unknown target subcommand: ${n}`}}s(zz,"runTarget");async function Pne(e,t,r){let n=t[0];if(!n)throw new Hn("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 Wz({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=>Hz(l,r)),skipped:a.skipped.map(l=>Hz(l,r)),postSteps:a.postSteps}}}s(Pne,"runScaffold");function Hz(e,t){return (e.startsWith(t)?e.slice(t.length+1):e).replaceAll("\\","/")}s(Hz,"relativize");se();function Vz(e){if(e.error&&y.error(e.error),e.showHelp){Dne();return}let{data:t}=e;for(let r of t.written)y.success(`created ${r}`);for(let r of t.skipped)y.warn(`skipped ${r} (already exists \u2014 use --force to overwrite)`);if(t.written.length>0){y.info(""),y.info("Next steps:");for(let r of t.postSteps)y.info(` ${r}`);}}s(Vz,"renderTarget");function Dne(){y.info("Usage: agentsmesh target <subcommand> [args] [flags]"),y.info(""),y.info("Subcommands:"),y.info(" scaffold <id> Generate a new target skeleton (files, tests, fixture)"),y.info(""),y.info("Flags (scaffold):"),y.info(" --name <displayName> Human-readable name (defaults to id)"),y.info(" --force Overwrite existing files");}s(Dne,"printTargetHelp");rt();Ca();b();tt();sn();qo();function Une(e,t){return e===".agentsmesh"?false:!!(e.startsWith(".")||!t)}s(Une,"shouldSymlink");function Bne(e){let t=mkdtempSync(join(tmpdir(),"am-convert-")),r=readdirSync(e,{withFileTypes:true});for(let n of r){if(!Une(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(Bne,"createTempProjectRoot");async function uy(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=Xt(l),p=Xt(c);if(!m||!p)try{let{config:S}=await ye(r,"project");await ze(S,r);}catch{let S=[];throw m||S.push(`--from "${i}"`),p||S.push(`--to "${a}"`),new Error(`Unknown ${S.join(" and ")}. Supported: ${Ue.join(", ")}.`)}let u=re(l);if(!u)throw new Error(`Unknown --from "${i}". Supported: ${Ue.join(", ")}.`);if(!re(c))throw new Error(`Unknown --to "${a}". Supported: ${Ue.join(", ")}.`);let g=e["dry-run"]===true,h=g?"dry-run":"convert",_=Bne(o);try{await u.generators.importFrom(_,{scope:n});let S=await jt(_),R=Sa.parse({version:1,targets:p?[c]:[],pluginTargets:p?[]:[c]}),I=await on({config:R,canonical:S,projectRoot:o,scope:n,targetFilter:[c]});if(!g){for(let P of I)if(P.status==="created"||P.status==="updated"){let K=fm(o,P.path,P.target);await L(K,P.content);}}let w=I.filter(P=>P.status!=="skipped"),D=w.map(P=>({path:P.path,target:P.target,status:P.status}));return {exitCode:0,data:{from:l,to:c,mode:h,files:D,summary:{created:w.filter(P=>P.status==="created").length,updated:w.filter(P=>P.status==="updated").length,unchanged:w.filter(P=>P.status==="unchanged").length}}}}finally{rmSync(_,{recursive:true,force:true});}}s(uy,"runConvert");se();function Jz(e){let{data:t}=e;if(t.files.length===0){y.info(`No files found to convert from ${t.from}.`);return}if(t.mode==="dry-run"){for(let i of t.files)y.info(`[dry-run] ${i.status} ${i.path} (${i.target})`);return}for(let i of t.files)(i.status==="created"||i.status==="updated")&&y.success(`${i.status} ${i.path}`);let{created:r,updated:n,unchanged:o}=t.summary;r>0||n>0?y.info(`Converted from ${t.from} \u2192 ${t.to}: ${r} created, ${n} updated, ${o} unchanged`):y.info(`Nothing changed. (${o} unchanged)`);}s(Jz,"renderConvert");var Kne=/(^|\s)\/[A-Za-z]|^[A-Z]:[\\/]/,v=class extends Error{static{s(this,"McpError");}code;details;constructor(t,r,n){if(Kne.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 Mm(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(Mm,"redactAbsolutePaths");async function cC(e){let t=resolve(e.projectRoot,".agentsmesh",e.feature),r=resolve(t,e.relativePath);if(!r.startsWith(t+sep)&&r!==t)throw new v("PATH_TRAVERSAL",`path escapes ${e.feature} directory`);if(Buffer.byteLength(e.content,"utf8")>1048576)throw new v("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(cC,"safeWrite");var Qne=/^---\r?\n([\s\S]*?)\r?\n---\r?\n\r?\n?([\s\S]*)$/;function fa(e){let t=Qne.exec(e);if(!t)return {frontmatter:{},body:e};let[,r,n]=t;return {frontmatter:parse(r)??{},body:n}}s(fa,"parseMd");function Gm(e,t){return Object.keys(e).length===0?t:`---
|
|
636
683
|
${stringify(e).trimEnd()}
|
|
637
684
|
---
|
|
638
685
|
|
|
639
|
-
${t}`}s(km,"serializeMd");var qte=/^[a-zA-Z0-9_][a-zA-Z0-9_-]*$/,Qte={rules:"_root"};function Uh(e){if(!qte.test(e)||e.includes(".."))throw new N("INVALID_NAME",`invalid name: ${e}`)}s(Uh,"checkName");function Bh(e,t,r){return resolve(e,".agentsmesh",t,`${r}.md`)}s(Bh,"pathFor");function Im(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){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}=Wi(f);m.push(n(u,g));}return m},async get(l,{name:c}){Uh(c);let m=Bh(l.projectRoot,t,c);try{let p=await readFile(m,"utf8"),{frontmatter:u,body:f}=Wi(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}){Uh(c);let f=r.safeParse(m);if(!f.success)throw new N("VALIDATION_FAILED","invalid frontmatter",f.error.issues);let g=Bh(l.projectRoot,t,c);if(await a(g))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 R=km(m,p);return u===true?{path:g,written:false}:(await EL({projectRoot:l.projectRoot,feature:t,relativePath:`${c}.md`,content:R}),{path:g,written:true})},async update(l,{name:c,frontmatter:m,body:p,merge:u,dry_run:f}){Uh(c);let g=Bh(l.projectRoot,t,c),h;try{let b=await readFile(g,"utf8");h=Wi(b);}catch(b){let P=b.code;throw P==="ENOENT"?new N("NOT_FOUND",`${t} "${c}" not found`):new N("IO_ERROR",`failed to read ${t}`,{errno:P})}let R=m===void 0?h.frontmatter:u===true?{...h.frontmatter,...m}:m,_=r.safeParse(R);if(!_.success)throw new N("VALIDATION_FAILED","invalid frontmatter",_.error.issues);let S=p!==void 0?p:h.body,I=km(R,S);return f===true?{path:g,written:false}:(await EL({projectRoot:l.projectRoot,feature:t,relativePath:`${c}.md`,content:I}),{path:g,written:true})},async delete(l,{name:c,force:m,dry_run:p}){if(Uh(c),Qte[t]===c&&m!==true)throw new N("PROTECTED_FILE",`${t} "${c}" requires force: true`);let u=Bh(l.projectRoot,t,c);if(!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(Im,"createCanonicalHandlers");var Zte=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(),mH=Im({feature:"rules",frontmatterSchema:Zte,toSummary:s((e,t)=>({name:e,description:t.description??null,root:!!t.root,globs:t.globs??null,targets:t.targets??null}),"toSummary")});var ere=z$1.object({description:z$1.string().optional(),"allowed-tools":z$1.array(z$1.string()).optional()}).passthrough(),pH=Im({feature:"commands",frontmatterSchema:ere,toSummary:s((e,t)=>({name:e,description:t.description??null,allowedTools:t["allowed-tools"]??null}),"toSummary")});var tre=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(),uH=Im({feature:"agents",frontmatterSchema:tre,toSummary:s((e,t)=>({name:e,description:t.description??null,tools:t.tools??null,model:t.model??null}),"toSummary")});var rre=z$1.object({name:z$1.string().describe('Item name (e.g. "auth", "code-review")')}),nre=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")}),ore=z$1.object({}).strict();function bL(e,t){let r=e==="rule"?"rules":e==="command"?"commands":"agents";return [{name:`list_${r}`,description:`List ${r} with summary metadata`,inputSchema:ore,handler:s(n=>t.list(n),"handler"),resourceUri:`agentsmesh://canonical/${r}`},{name:`get_${e}`,description:`Get a single ${e} by name`,inputSchema:rre,handler:s((n,o)=>t.get(n,o),"handler"),resourceUri:`agentsmesh://canonical/${r}/{name}`},{name:`create_${e}`,description:`Create a new ${e}`,inputSchema:nre,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(bL,"canonicalTools");var dH=[...bL("rule",mH),...bL("command",pH),...bL("agent",uH)];async function gH(e){let t=resolve(e.projectRoot,".agentsmesh/skills",e.skillName),r=resolve(t,e.filePath);if(!r.startsWith(t+sep)&&r!==t)throw new N("PATH_TRAVERSAL","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(gH,"safeRead");var pre=/^[a-zA-Z0-9_][a-zA-Z0-9_-]*$/,ure=/^[a-zA-Z0-9_][a-zA-Z0-9_/-]*\.[a-zA-Z0-9]+$/,_H=z$1.object({name:z$1.string().optional(),description:z$1.string().optional()}).passthrough();function Fu(e){if(!pre.test(e))throw new N("INVALID_NAME",`invalid skill name: ${e}`)}s(Fu,"checkName");function xL(e){if(!ure.test(e)||e.includes("..")||e.includes("//"))throw new N("PATH_TRAVERSAL",`invalid supporting-file path: ${e}`)}s(xL,"checkSupportPath");async function Hh(e,t){if(Buffer.byteLength(t,"utf8")>1048576)throw new N("LIMIT_EXCEEDED","file body exceeds 1 MiB cap");await mkdir(dirname(e),{recursive:true});let r=`${e}.tmp.${process.pid}.${Date.now()}`;await writeFile(r,t,"utf8"),await rename(r,e);}s(Hh,"atomicWrite");var SH=s(e=>resolve(e,".agentsmesh/skills"),"skillsDir"),Mu=s((e,t)=>resolve(SH(e),t),"skillDir"),hl={async list(e){let t;try{t=(await readdir(SH(e.projectRoot),{withFileTypes:!0})).filter(n=>n.isDirectory()).map(n=>n.name);}catch{return []}let r=[];for(let n of t)try{let o=await readFile(resolve(Mu(e.projectRoot,n),"SKILL.md"),"utf8"),i=Wi(o).frontmatter;r.push({name:n,description:i.description??null});}catch{}return r},async get(e,{name:t}){Fu(t);let r=Mu(e.projectRoot,t);try{let n=await readFile(resolve(r,"SKILL.md"),"utf8"),{frontmatter:o,body:i}=Wi(n),l=(await readdir(r)).filter(c=>c!=="SKILL.md").sort();return {name:t,frontmatter:o,body:i,supportingFiles:l}}catch(n){throw n.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 Fu(t),xL(r),{content:await gH({projectRoot:e.projectRoot,skillName:t,filePath:r}),encoding:"utf-8"}},async create(e,t){Fu(t.name);let r=_H.safeParse(t.frontmatter);if(!r.success)throw new N("VALIDATION_FAILED","invalid frontmatter",r.error.issues);let n=Mu(e.projectRoot,t.name),o=false;try{await stat(n),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(xL),a.length+1>1e3)throw new N("LIMIT_EXCEEDED","supporting files exceed cap");if(t.dry_run===true)return {path:n,written:false,supportingFilesWritten:[]};let l=resolve(n,"SKILL.md");await Hh(l,km(t.frontmatter,t.body));for(let[c,m]of Object.entries(i))await Hh(resolve(n,c),m);return {path:n,written:true,supportingFilesWritten:a}},async update(e,t){Fu(t.name);let r=Mu(e.projectRoot,t.name),n;try{let p=await readFile(resolve(r,"SKILL.md"),"utf8");n=Wi(p);}catch(p){throw p.code==="ENOENT"?new N("NOT_FOUND",`skill "${t.name}" not found`):new N("IO_ERROR","failed to read skill")}let o=t.frontmatter===void 0?n.frontmatter:t.merge===true?{...n.frontmatter,...t.frontmatter}:t.frontmatter,i=_H.safeParse(o);if(!i.success)throw new N("VALIDATION_FAILED","invalid frontmatter",i.error.issues);let a=t.body!==void 0?t.body:n.body,l=t.supportingFiles??{};Object.keys(l).forEach(xL);let c=[],m=[];if(t.dry_run===true)return Object.entries(l).forEach(([p,u])=>(u===null?m:c).push(p)),{path:r,written:false,supportingFilesAffected:{written:c,deleted:m}};await Hh(resolve(r,"SKILL.md"),km(o,a));for(let[p,u]of Object.entries(l)){let f=resolve(r,p);if(u===null)try{await rm$1(f),m.push(p);}catch{}else await Hh(f,u),c.push(p);}return {path:r,written:true,supportingFilesAffected:{written:c,deleted:m}}},async delete(e,{name:t,dry_run:r}){Fu(t);let n=Mu(e.projectRoot,t);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 dre=z$1.object({}).strict(),fre=z$1.object({name:z$1.string().describe("Item name")}),kH=[{name:"list_skills",description:"List skills",inputSchema:dre,handler:s(e=>hl.list(e),"handler"),resourceUri:"agentsmesh://canonical/skills"},{name:"get_skill",description:"Get one skill (frontmatter + body + supporting filenames)",inputSchema:fre,handler:s((e,t)=>hl.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)=>hl.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)=>hl.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)=>hl.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)=>hl.delete(e,t),"handler")}];async function IH(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"),r=`${t}.tmp.${process.pid}.${Date.now()}`;return await writeFile(r,e.content,"utf8"),await rename(r,t),t}s(IH,"safeConfigWrite");vo();Um();async function $u(e){try{return parse(await readFile(e,"utf8"))}catch(t){if(t.code==="ENOENT")return null;throw new N("IO_ERROR","failed to read yaml")}}s($u,"readYaml");async function Cm(e,t){if(Buffer.byteLength(t,"utf8")>1048576)throw new N("LIMIT_EXCEEDED","file exceeds 1 MiB cap");let r=`${e}.tmp.${process.pid}.${Date.now()}`;await writeFile(r,t,"utf8"),await rename(r,e);}s(Cm,"atomicWrite");var dr={async getConfig(e){let t=await $u(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");try{return {servers:(await Xr(t))?.mcpServers??null}}catch{return {servers:null}}},async getPermissions(e){return await $u(resolve(e.projectRoot,".agentsmesh/permissions.yaml"))??null},async getHooks(e){return await $u(resolve(e.projectRoot,".agentsmesh/hooks.yaml"))??null},async getIgnore(e){try{return {patterns:(await readFile(resolve(e.projectRoot,".agentsmesh/ignore"),"utf8")).split(/\r?\n/).filter(r=>r!==""&&!r.startsWith("#"))}}catch{return {patterns:null}}},async updateConfig(e,t){let r=await $u(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=Yi.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 IH({projectRoot:e.projectRoot,content:a,filename:t.filename}),written:true}},async addMcpServer(e,t){let r=resolve(e.projectRoot,".agentsmesh/mcp.json"),n=await Xr(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 Cm(r,JSON.stringify(n,null,2)+`
|
|
640
|
-
`),{path:r,written:true})},async updateMcpServer(e,t){let r=resolve(e.projectRoot,".agentsmesh/mcp.json"),n=await
|
|
641
|
-
`),{path:r,written:true})},async removeMcpServer(e,t){let r=resolve(e.projectRoot,".agentsmesh/mcp.json"),n=await
|
|
642
|
-
`),{path:r,removed:true})},async updatePermissions(e,t){let r=resolve(e.projectRoot,".agentsmesh/permissions.yaml"),n=await
|
|
686
|
+
${t}`}s(Gm,"serializeMd");var roe=/^[a-zA-Z0-9_][a-zA-Z0-9_-]*$/,noe={rules:"_root"};function dy(e){if(!roe.test(e)||e.includes(".."))throw new v("INVALID_NAME",`invalid name: ${e}`)}s(dy,"checkName");function fy(e,t,r){return resolve(e,".agentsmesh",t,`${r}.md`)}s(fy,"pathFor");function $m(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){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}=fa(f);m.push(n(u,g));}return m},async get(l,{name:c}){dy(c);let m=fy(l.projectRoot,t,c);try{let p=await readFile(m,"utf8"),{frontmatter:u,body:f}=fa(p);return {name:c,frontmatter:u,body:f}}catch(p){let u=p.code;throw u==="ENOENT"?new v("NOT_FOUND",`${t} "${c}" not found`):new v("IO_ERROR",`failed to read ${t}`,{errno:u})}},async create(l,{name:c,frontmatter:m,body:p,dry_run:u}){dy(c);let f=r.safeParse(m);if(!f.success)throw new v("VALIDATION_FAILED","invalid frontmatter",f.error.issues);let g=fy(l.projectRoot,t,c);if(await a(g))throw new v("ALREADY_EXISTS",`${t} "${c}" exists`);if((await i(l.projectRoot)).length>=1e3)throw new v("LIMIT_EXCEEDED",`${t} dir at ${1e3} entries`);let _=Gm(m,p);return u===true?{path:g,written:false}:(await cC({projectRoot:l.projectRoot,feature:t,relativePath:`${c}.md`,content:_}),{path:g,written:true})},async update(l,{name:c,frontmatter:m,body:p,merge:u,dry_run:f}){dy(c);let g=fy(l.projectRoot,t,c),h;try{let w=await readFile(g,"utf8");h=fa(w);}catch(w){let D=w.code;throw D==="ENOENT"?new v("NOT_FOUND",`${t} "${c}" not found`):new v("IO_ERROR",`failed to read ${t}`,{errno:D})}let _=m===void 0?h.frontmatter:u===true?{...h.frontmatter,...m}:m,S=r.safeParse(_);if(!S.success)throw new v("VALIDATION_FAILED","invalid frontmatter",S.error.issues);let R=p!==void 0?p:h.body,I=Gm(_,R);return f===true?{path:g,written:false}:(await cC({projectRoot:l.projectRoot,feature:t,relativePath:`${c}.md`,content:I}),{path:g,written:true})},async delete(l,{name:c,force:m,dry_run:p}){if(dy(c),noe[t]===c&&m!==true)throw new v("PROTECTED_FILE",`${t} "${c}" requires force: true`);let u=fy(l.projectRoot,t,c);if(!await a(u))throw new v("NOT_FOUND",`${t} "${c}" not found`);return p===true?{path:u,deleted:false}:(await rm$1(u),{path:u,deleted:true})}}}s($m,"createCanonicalHandlers");var ooe=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(),Qz=$m({feature:"rules",frontmatterSchema:ooe,toSummary:s((e,t)=>({name:e,description:t.description??null,root:!!t.root,globs:t.globs??null,targets:t.targets??null}),"toSummary")});var soe=z$1.object({description:z$1.string().optional(),"allowed-tools":z$1.array(z$1.string()).optional()}).passthrough(),qz=$m({feature:"commands",frontmatterSchema:soe,toSummary:s((e,t)=>({name:e,description:t.description??null,allowedTools:t["allowed-tools"]??null}),"toSummary")});var ioe=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(),Zz=$m({feature:"agents",frontmatterSchema:ioe,toSummary:s((e,t)=>({name:e,description:t.description??null,tools:t.tools??null,model:t.model??null}),"toSummary")});var aoe=z$1.object({name:z$1.string().describe('Item name (e.g. "auth", "code-review")')}),loe=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")}),coe=z$1.object({}).strict();function pC(e,t){let r=e==="rule"?"rules":e==="command"?"commands":"agents";return [{name:`list_${r}`,description:`List ${r} with summary metadata`,inputSchema:coe,handler:s(n=>t.list(n),"handler"),resourceUri:`agentsmesh://canonical/${r}`},{name:`get_${e}`,description:`Get a single ${e} by name`,inputSchema:aoe,handler:s((n,o)=>t.get(n,o),"handler"),resourceUri:`agentsmesh://canonical/${r}/{name}`},{name:`create_${e}`,description:`Create a new ${e}`,inputSchema:loe,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(pC,"canonicalTools");var e1=[...pC("rule",Qz),...pC("command",qz),...pC("agent",Zz)];async function r1(e){let t=resolve(e.projectRoot,".agentsmesh/skills",e.skillName),r=resolve(t,e.filePath);if(!r.startsWith(t+sep)&&r!==t)throw new v("PATH_TRAVERSAL","file escapes skill directory");try{return await readFile(r,"utf8")}catch(n){throw n.code==="ENOENT"?new v("NOT_FOUND",`skill file not found: ${e.filePath}`):new v("IO_ERROR","failed to read skill file")}}s(r1,"safeRead");var hoe=/^[a-zA-Z0-9_][a-zA-Z0-9_-]*$/,yoe=/^[a-zA-Z0-9_][a-zA-Z0-9_/-]*\.[a-zA-Z0-9]+$/,i1=z$1.object({name:z$1.string().optional(),description:z$1.string().optional()}).passthrough();function ld(e){if(!hoe.test(e))throw new v("INVALID_NAME",`invalid skill name: ${e}`)}s(ld,"checkName");function fC(e){if(!yoe.test(e)||e.includes("..")||e.includes("//"))throw new v("PATH_TRAVERSAL",`invalid supporting-file path: ${e}`)}s(fC,"checkSupportPath");async function yy(e,t){if(Buffer.byteLength(t,"utf8")>1048576)throw new v("LIMIT_EXCEEDED","file body exceeds 1 MiB cap");await mkdir(dirname(e),{recursive:true});let r=`${e}.tmp.${process.pid}.${Date.now()}`;await writeFile(r,t,"utf8"),await rename(r,e);}s(yy,"atomicWrite");var a1=s(e=>resolve(e,".agentsmesh/skills"),"skillsDir"),cd=s((e,t)=>resolve(a1(e),t),"skillDir"),jl={async list(e){let t;try{t=(await readdir(a1(e.projectRoot),{withFileTypes:!0})).filter(n=>n.isDirectory()).map(n=>n.name);}catch{return []}let r=[];for(let n of t)try{let o=await readFile(resolve(cd(e.projectRoot,n),"SKILL.md"),"utf8"),i=fa(o).frontmatter;r.push({name:n,description:i.description??null});}catch{}return r},async get(e,{name:t}){ld(t);let r=cd(e.projectRoot,t);try{let n=await readFile(resolve(r,"SKILL.md"),"utf8"),{frontmatter:o,body:i}=fa(n),l=(await readdir(r)).filter(c=>c!=="SKILL.md").sort();return {name:t,frontmatter:o,body:i,supportingFiles:l}}catch(n){throw n.code==="ENOENT"?new v("NOT_FOUND",`skill "${t}" not found`):new v("IO_ERROR","failed to read skill")}},async getFile(e,{name:t,path:r}){return ld(t),fC(r),{content:await r1({projectRoot:e.projectRoot,skillName:t,filePath:r}),encoding:"utf-8"}},async create(e,t){ld(t.name);let r=i1.safeParse(t.frontmatter);if(!r.success)throw new v("VALIDATION_FAILED","invalid frontmatter",r.error.issues);let n=cd(e.projectRoot,t.name),o=false;try{await stat(n),o=!0;}catch{}if(o)throw new v("ALREADY_EXISTS",`skill "${t.name}" exists`);let i=t.supportingFiles??{},a=Object.keys(i);if(a.forEach(fC),a.length+1>1e3)throw new v("LIMIT_EXCEEDED","supporting files exceed cap");if(t.dry_run===true)return {path:n,written:false,supportingFilesWritten:[]};let l=resolve(n,"SKILL.md");await yy(l,Gm(t.frontmatter,t.body));for(let[c,m]of Object.entries(i))await yy(resolve(n,c),m);return {path:n,written:true,supportingFilesWritten:a}},async update(e,t){ld(t.name);let r=cd(e.projectRoot,t.name),n;try{let p=await readFile(resolve(r,"SKILL.md"),"utf8");n=fa(p);}catch(p){throw p.code==="ENOENT"?new v("NOT_FOUND",`skill "${t.name}" not found`):new v("IO_ERROR","failed to read skill")}let o=t.frontmatter===void 0?n.frontmatter:t.merge===true?{...n.frontmatter,...t.frontmatter}:t.frontmatter,i=i1.safeParse(o);if(!i.success)throw new v("VALIDATION_FAILED","invalid frontmatter",i.error.issues);let a=t.body!==void 0?t.body:n.body,l=t.supportingFiles??{};Object.keys(l).forEach(fC);let c=[],m=[];if(t.dry_run===true)return Object.entries(l).forEach(([p,u])=>(u===null?m:c).push(p)),{path:r,written:false,supportingFilesAffected:{written:c,deleted:m}};await yy(resolve(r,"SKILL.md"),Gm(o,a));for(let[p,u]of Object.entries(l)){let f=resolve(r,p);if(u===null)try{await rm$1(f),m.push(p);}catch{}else await yy(f,u),c.push(p);}return {path:r,written:true,supportingFilesAffected:{written:c,deleted:m}}},async delete(e,{name:t,dry_run:r}){ld(t);let n=cd(e.projectRoot,t);try{await stat(n);}catch{throw new v("NOT_FOUND",`skill "${t}" not found`)}return r===true?{path:n,deleted:false}:(await rm$1(n,{recursive:true}),{path:n,deleted:true})}};var _oe=z$1.object({}).strict(),Soe=z$1.object({name:z$1.string().describe("Item name")}),l1=[{name:"list_skills",description:"List skills",inputSchema:_oe,handler:s(e=>jl.list(e),"handler"),resourceUri:"agentsmesh://canonical/skills"},{name:"get_skill",description:"Get one skill (frontmatter + body + supporting filenames)",inputSchema:Soe,handler:s((e,t)=>jl.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)=>jl.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)=>jl.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)=>jl.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)=>jl.delete(e,t),"handler")}];async function c1(e){if(e.filename!==void 0&&e.filename!=="agentsmesh.yaml")throw new v("PATH_TRAVERSAL","only agentsmesh.yaml is writable");if(Buffer.byteLength(e.content,"utf8")>1048576)throw new v("LIMIT_EXCEEDED","config exceeds 1 MiB cap");let t=resolve(e.projectRoot,"agentsmesh.yaml"),r=`${t}.tmp.${process.pid}.${Date.now()}`;return await writeFile(r,e.content,"utf8"),await rename(r,t),t}s(c1,"safeConfigWrite");function Loe(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(Loe,"flattenEntry");function m1(e){let t={};for(let[r,n]of Object.entries(e))t[r]=Array.isArray(n)?n.flatMap(Loe):n;return t}s(m1,"normalizeHooksRecord");qo();op();async function md(e){try{return parse(await readFile(e,"utf8"))}catch(t){if(t.code==="ENOENT")return null;throw new v("IO_ERROR","failed to read yaml")}}s(md,"readYaml");async function Um(e,t){if(Buffer.byteLength(t,"utf8")>1048576)throw new v("LIMIT_EXCEEDED","file exceeds 1 MiB cap");let r=`${e}.tmp.${process.pid}.${Date.now()}`;await writeFile(r,t,"utf8"),await rename(r,e);}s(Um,"atomicWrite");var kr={async getConfig(e){let t=await md(resolve(e.projectRoot,"agentsmesh.yaml"));if(t===null)throw new v("NO_PROJECT","agentsmesh.yaml missing");return t},async listMcpServers(e){let t=resolve(e.projectRoot,".agentsmesh/mcp.json");try{return {servers:(await cn(t))?.mcpServers??null}}catch{return {servers:null}}},async getPermissions(e){return await md(resolve(e.projectRoot,".agentsmesh/permissions.yaml"))??null},async getHooks(e){return await md(resolve(e.projectRoot,".agentsmesh/hooks.yaml"))??null},async getIgnore(e){try{return {patterns:(await readFile(resolve(e.projectRoot,".agentsmesh/ignore"),"utf8")).split(/\r?\n/).filter(r=>r!==""&&!r.startsWith("#"))}}catch{return {patterns:null}}},async updateConfig(e,t){let r=await md(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=Sa.safeParse(n);if(!i.success)throw new v("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 c1({projectRoot:e.projectRoot,content:a,filename:t.filename}),written:true}},async addMcpServer(e,t){let r=resolve(e.projectRoot,".agentsmesh/mcp.json"),n=await cn(r).catch(()=>null)??{mcpServers:{}};if(n.mcpServers[t.name]!==void 0)throw new v("ALREADY_EXISTS",`server "${t.name}" exists`);return n.mcpServers[t.name]=t.server,t.dry_run===true?{path:r,written:false}:(await Um(r,JSON.stringify(n,null,2)+`
|
|
687
|
+
`),{path:r,written:true})},async updateMcpServer(e,t){let r=resolve(e.projectRoot,".agentsmesh/mcp.json"),n=await cn(r).catch(()=>null);if(n===null||n.mcpServers[t.name]===void 0)throw new v("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 Um(r,JSON.stringify(n,null,2)+`
|
|
688
|
+
`),{path:r,written:true})},async removeMcpServer(e,t){let r=resolve(e.projectRoot,".agentsmesh/mcp.json"),n=await cn(r).catch(()=>null);if(n===null||n.mcpServers[t.name]===void 0)throw new v("NOT_FOUND",`server "${t.name}" not found`);return delete n.mcpServers[t.name],t.dry_run===true?{path:r,removed:false}:(await Um(r,JSON.stringify(n,null,2)+`
|
|
689
|
+
`),{path:r,removed:true})},async updatePermissions(e,t){let r=resolve(e.projectRoot,".agentsmesh/permissions.yaml"),n=await md(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 Um(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 Um(r,stringify(m1(t.hooks))),{path:r,written:true})},async updateIgnore(e,t){let r=resolve(e.projectRoot,".agentsmesh/ignore"),n;if(t.mode==="append"){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 Um(r,n.join(`
|
|
643
690
|
`)+`
|
|
644
|
-
`),{path:r,written:true})}};var xre=/[;&|`$<>!\\\r\n]/u,Tre=/^[A-Za-z_][A-Za-z0-9_]*$/u,Pre=/^[A-Za-z][A-Za-z0-9_-]*$/u,Dre=/^[A-Za-z][A-Za-z0-9_-]*(\([^)]*\))?$/u,EH=/[\r\n]/u,wH=/[\0\r\n]/u;function Nre(e){return wH.test(e)?false:!e.split(/[/\\]/u).includes("..")}s(Nre,"isSafeMcpCwd");function vre(e){return z$1.string().min(1).max(512).refine(t=>!xre.test(t),{message:`${e} must not contain shell metacharacters (;&|\`$<>!\\\\, newlines)`})}s(vre,"noShellMeta");var DL=z$1.object({type:z$1.enum(["stdio","sse","http","streamable-http","streamable_http"]).optional(),description:z$1.string().max(1024).refine(e=>!wH.test(e),{message:"description must not contain NUL or newline characters"}).optional(),command:vre("command").optional(),args:z$1.array(z$1.string().max(2048)).max(100).optional(),env:z$1.record(z$1.string().regex(Tre,"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(Pre,"header name must be a valid identifier"),z$1.string().max(8192)).optional(),cwd:z$1.string().max(2048).refine(Nre,{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(),Fre=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"}),bH=z$1.string().max(256).refine(e=>!EH.test(e),{message:"hook matcher must not contain newlines"}),Mre=z$1.object({matcher:bH,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"}),$re=z$1.object({matcher:bH,hooks:z$1.array(Fre).min(1).max(50)}).strict(),Gre=z$1.union([Mre,$re]),OH=z$1.record(z$1.string().min(1).max(64),z$1.array(Gre).max(100)),jre=z$1.string().min(1).max(256).refine(e=>!EH.test(e),{message:"permission pattern must not contain newlines"}).refine(e=>Dre.test(e),{message:"permission pattern must match Tool or Tool(matcher) form"}),Vh=z$1.array(jre).max(500);var Gu=z$1.object({}).strict(),Ure=[{name:"get_config",description:"Read agentsmesh.yaml",inputSchema:Gu,handler:s(e=>dr.getConfig(e),"handler"),resourceUri:"agentsmesh://config"},{name:"list_mcp_servers",description:"List MCP servers in canonical mcp.json",inputSchema:Gu,handler:s(e=>dr.listMcpServers(e),"handler"),resourceUri:"agentsmesh://canonical/mcp"},{name:"get_permissions",description:"Read permissions.yaml",inputSchema:Gu,handler:s(e=>dr.getPermissions(e),"handler"),resourceUri:"agentsmesh://canonical/permissions"},{name:"get_hooks",description:"Read hooks.yaml",inputSchema:Gu,handler:s(e=>dr.getHooks(e),"handler"),resourceUri:"agentsmesh://canonical/hooks"},{name:"get_ignore",description:"Read ignore patterns",inputSchema:Gu,handler:s(e=>dr.getIgnore(e),"handler"),resourceUri:"agentsmesh://canonical/ignore"}],Bre=[{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)=>dr.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:DL.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)=>dr.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:DL,merge:z$1.boolean().optional(),dry_run:z$1.boolean().optional()}),handler:s((e,t)=>dr.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)=>dr.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:Vh.optional().describe('Allowed tool patterns (e.g. ["Bash(npm run:*)"])'),deny:Vh.optional().describe("Denied tool patterns"),ask:Vh.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)=>dr.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:OH.describe("Full hooks structure (e.g. { PreToolUse: [...], PostToolUse: [...] })"),dry_run:z$1.boolean().optional().describe("Preview without writing")}),handler:s((e,t)=>dr.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)=>dr.updateIgnore(e,t),"handler")}],AH=[...Ure,...Bre];sI();Nn();function Kre(){return Object.fromEntries(je.map(e=>[e,Object.fromEntries(Object.entries(t0).map(([t,r])=>[t,r[e]]))]))}s(Kre,"buildTargetIndex");var xH=Kre(),NL={async list(){return xH},async get(e){let t=xH[e.targetId];if(t===void 0)throw new N("NOT_FOUND",`unknown target: ${e.targetId}`);return {targetId:e.targetId,capabilities:t}}};No();No();rd();tt();Oo();Vr();rt();Nn();async function vL(e,t){let r=re(e);if(!r)throw new Dn(e,{supported:[...je,...Rd().map(n=>n.id)]});return r.generators.importFrom(t.root,{scope:t.scope??"project"})}s(vL,"importFrom");async function Em(e,t={}){let r=t.scope??"project",{config:n,context:o}=await ye(e,r);await He(n,e);let{canonical:i}=await Ft(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(Em,"loadProjectContext");async function FL(e){let t=e.targetFilter?[...e.targetFilter]:void 0;return Rh(e.config,e.canonical,e.projectRoot,t,{scope:e.scope})}s(FL,"lint");async function ML(e){let t=await zr(e);return {...hh(t),results:t}}s(ML,"diff");async function $L(e){return _h(e)}s($L,"check");No();Oo();Zi();rd();xe();rt();be();function yl(e,t={}){let r=Math.max(1,t.cap??eh),n=lh(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((S,I)=>{let b=n.get(S),P=n.get(I);return b!==P?b-P:S<I?-1:1}),R=new Set(h.slice(r)),_=g.triggers.filter(S=>!R.has(S));i.set(f,_),o.push({id:f,removedTriggers:[...R],keptCount:_.length});}let a=[],l=[];if(t.knownPaths!==void 0){let f=uu(e,t.knownPaths);if(f.size>0){for(let[g,h]of i){let R=h.filter(S=>f.has(S));if(R.length===0)continue;let _=h.filter(S=>!f.has(S));_.length>=1?(i.set(g,_),a.push({id:g,removedTriggers:R,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(yl,"planPrune");function Jh(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(Jh,"applyPruneToGraph");function ju(e){return e.removedTriggerIds.length===0&&e.removedTopicIds.length===0&&e.trimmedLessons.length===0&&e.removedDeadGlobs.length===0}s(ju,"isEmptyPrunePlan");function Yre(e){let t=Ge(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(Yre,"isAutoPruneEnabled");async function TH(e,t){if(!Yre(e))return null;let r=Ve(e);if(r===null||ju(yl(r,{trimOverCap:false,knownPaths:t})))return null;let n={removedTriggers:0,removedTopics:0,detachedDeadGlobs:0};return await Et(e,i=>{let a=yl(i,{trimOverCap:false,knownPaths:t});ju(a)||(Jh(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(TH,"maybeAutoPrune");function Yh(e,t){let r=e.replaceAll("\\","/"),n=PH(t,r);if(!n.startsWith("../"))return n;let o=PH(GL(t),GL(resolve(t,r)));return o.startsWith("../")?n:o}s(Yh,"normalizeRecallFile");function PH(e,t){let r=relative(e,resolve(e,t)).replaceAll("\\","/");return r===""?t.replaceAll("\\","/"):r}s(PH,"relativize");function GL(e){try{return realpathSync(e)}catch{let t=dirname(e);return t===e?e:resolve(GL(t),basename(e))}}s(GL,"safeRealpath");var lne="agentsmesh-lessons-seen";function Xh(e={}){if(e.disabled===true)return null;let t=e.explicit!==void 0&&e.explicit.trim().length>0?e.explicit.trim():am(e.env);if(t===void 0)return null;let r=cne(t);return {sessionId:t,seen:mne(r),path:r}}s(Xh,"openSessionDedup");function cne(e){let t=e.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,200);return join(tmpdir(),lne,`${t}.json`)}s(cne,"seenPath");function mne(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(mne,"loadSeen");function qh(e,t){return t.filter(r=>!e.seen.has(r.id))}s(qh,"filterUnseen");function Qh(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(Qh,"commitSeen");async function Uu(e,t,r={}){try{await dt(e);}catch{}let n=Xg(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:Yh(t.file,e)},a=lm(o,i),l=Xh({explicit:r.sessionId,disabled:r.noDedup}),c=l===null?a:qh(l,a),m=ph(e),p=cm(o,i,c,{limit:r.limit??m.limit,maxTokens:r.maxTokens===null?void 0:r.maxTokens??m.maxTokens});return l!==null&&Qh(l,p.map(u=>u.id)),UL(e,o,i,a,p,{bypassed:false}),{lessons:p,totalMatches:a.length,suppressed:a.length-c.length}}s(Uu,"recallLessons");function UL(e,t,r,n,o,i={}){if(!$i())return;let a=MI(t,r),l=s(m=>n.filter(({lesson:p})=>p.triggers.some(u=>m.has(u))).length,"countVia"),c=am();gU(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+ml(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(UL,"recordRecallTelemetry");async function Bu(e,t,r={}){await dt(e);let n={file:t.triggers.files?.length??0,command:t.triggers.commands?.length??0,keyword:t.triggers.keywords?.length??0},o=r.knownPaths??Gi(e)??void 0;try{let i=await nh(e,t,{...r,knownPaths:o});FI(e,n,i);let a=await TH(e,o);return a===null?i:{...i,autoPruned:a}}catch(i){throw FI(e,n,null),i}}s(Bu,"captureLesson");async function Zh(e,t,r,n={}){return Et(e,o=>pne(o,t,r),{retries:n.retries})}s(Zh,"mergeLessons");function pne(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:BL(o.triggers,n.triggers),topics:BL(o.topics,n.topics),evidence:BL(o.evidence,n.evidence)},e.lessons[t]={...n,status:"superseded",supersededBy:r},{loserId:t,keeperId:r}}s(pne,"mergeInto");function BL(e,t){let r=[...e];for(let n of t)r.includes(n)||r.push(n);return r}s(BL,"union");var KL=String.raw`L\d+(?:\s*,\s*L\d+)*`,une=[new RegExp(String.raw`\s*\bSee\s+${KL}\.?`,"g"),new RegExp(String.raw`\s*\((?:${KL})\)\.?`,"g"),new RegExp(String.raw`\s*\[(?:${KL})\]\.?`,"g")],dne=/\s*\(also relevant[^)]*\)\s*/g;function WL(e){let t=e;for(let r of une)t=t.replace(r,"");return t=t.replace(dne," "),t.trim()}s(WL,"stripLegacyMarkers");function DH(e){let t=[];for(let[r,n]of Object.entries(e.lessons)){let o=WL(n.rule);o===n.rule||o.length===0||(t.push(r),e.lessons[r]={...n,rule:o});}return t.sort()}s(DH,"applyStrip");async function ey(e,t={}){await dt(e);let r=Ve(e);if(r===null)return {changedIds:[],changedCount:0};if(t.dryRun===true){let o=DH(r);return {changedIds:o,changedCount:o.length}}let n=[];return await Et(e,o=>{n=DH(o);}),{changedIds:n,changedCount:n.length}}s(ey,"stripMarkersInGraph");A();function Hi(e){if(e instanceof N)throw e;if(e instanceof Dn)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(Hi,"wrapEngineError");async function NH(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 vL(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 Dn)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);Hi(r);}}s(NH,"importFromTarget");async function vH(e,t){try{let r={from:t.from,to:t.to,"dry-run":t.dry_run===!0},n=await jh(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);Hi(r);}}s(vH,"convert");async function fne(e,t){try{let r=await Em(e.projectRoot),n=t.targets&&t.targets.length>0?t.targets:void 0,i=(await zr({config:r.config,canonical:r.canonical,projectRoot:r.projectRoot,scope:r.scope,targetFilter:n})).filter(m=>m.status!=="skipped"),a=i.filter(m=>m.status==="created"||m.status==="updated");if(!t.dry_run)for(let m of a){let p=Xc(r.projectRoot,m.path,m.target);await L(p,m.content);}let l={};for(let m of a){let p=l[m.target]??{filesWritten:0};l[m.target]={filesWritten:p.filesWritten+1};}let c={filesWritten:a.length,byTarget:l,lockfileUpdated:!t.dry_run&&a.length>=0,errors:[],warnings:[]};return t.verbose===!0&&(c.files=i.map(m=>m.path)),c}catch(r){Hi(r);}}s(fne,"generate");async function gne(e,t){try{let r=await Em(e.projectRoot),n=await FL({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){Hi(r);}}s(gne,"lint");async function hne(e){try{let t=await Em(e.projectRoot),r=await $L({config:t.config,configDir:t.configDir,canonicalDir:t.canonicalDir});return {drift:!r.inSync,missing:[...r.removed],extra:[...r.added],modified:[...r.modified]}}catch(t){Hi(t);}}s(hne,"check");async function yne(e,t){try{let r=await Em(e.projectRoot),n=t.targets&&t.targets.length>0?t.targets:void 0,o=await ML({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){Hi(r);}}s(yne,"diff");var Rl={generate:fne,lint:gne,check:hne,diff:yne,import:NH,convert:vH};var FH=z$1.object({}).strict(),MH=[{name:"list_target_capabilities",description:"List support matrix for all targets",inputSchema:FH,handler:s(()=>NL.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)=>NL.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)=>Rl.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)=>Rl.lint(e,t),"handler")},{name:"check",description:"Detect drift between canonical and lockfile",inputSchema:FH,handler:s(e=>Rl.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)=>Rl.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)=>Rl.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)=>Rl.convert(e,t),"handler")}];function HL(e){if(e instanceof N)throw e;let t=e instanceof Error?e.message:String(e),r=Sm(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(HL,"wrapInstallError");function Rne(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(Rne,"toInstallFlags");function _ne(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(_ne,"toUninstallFlags");async function Sne(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 fl(Rne(t),[t.source],e.projectRoot);if(r.exitCode!==0)throw new N("IO_ERROR",`install exited ${r.exitCode}`);return r.data}catch(r){HL(r);}}s(Sne,"install");async function kne(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 vh(_ne(t),t.names??[],e.projectRoot)).data}catch(r){HL(r);}}s(kne,"uninstall");async function Ine(e,t={}){try{let r={};return t.global===!0&&(r.global=!0),(await Mh(r,e.projectRoot)).data}catch(r){HL(r);}}s(Ine,"installsList");var ty={install:Sne,uninstall:kne,installsList:Ine};function Lne(e){let t={force:true};return e.dry_run===true&&(t["dry-run"]=true),e.global===true&&(t.global=true),t}s(Lne,"toRefreshFlags");function Cne(e){if(e instanceof N)throw e;let t=e instanceof Error?e.message:String(e),r=Sm(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(Cne,"wrapRefreshError");async function Ene(e,t={}){try{let r=await Fh(Lne(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){Cne(r);}}s(Ene,"refresh");var $H={refresh:Ene};var wne=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.")}),bne=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.")}),One=z$1.object({global:z$1.boolean().optional().describe("Read from `~/.agentsmesh/installs.yaml` instead of the project scope.")}),Ane=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.")}),GH=[{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:wne,handler:s((e,t)=>ty.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:bne,handler:s((e,t)=>ty.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:One,handler:s((e,t)=>ty.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:Ane,handler:s((e,t)=>$H.refresh(e,t),"handler")}];async function ry(e,t,r){return Et(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(ry,"deprecateLesson");async function jH(e,t){await dt(e.projectRoot);let r=Ve(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(jH,"lessonsShow");async function UH(e,t){try{return await ry(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(UH,"lessonsDeprecate");function zL(e){return e===void 0?[]:typeof e=="string"?e.length>0?[e]:[]:e.filter(t=>t.length>0)}s(zL,"toTriggerList");function xne(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(xne,"toEvidenceList");var wm={async query(e,t){let r={file:t.file,command:t.command??t.cmd,keyword:t.keyword};if(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, or keyword to recall against.");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.
|
|
645
|
-
`);let{lessons:n,totalMatches:o,suppressed:i,corrupt:a,newerVersion:l}=await
|
|
646
|
-
`);let c=t.verbose===true;return {lessons:n.map(({id:m,lesson:p,score:u})=>c?{id:m,rule:p.rule,topics:[...p.topics],triggers:[...p.triggers],evidence:[...p.evidence],score:u}:{id:m,rule:p.rule}),totalMatches:o,...i>0?{suppressed:i}:{}}},async topics(e){await dt(e.projectRoot);let t=Ve(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:jH,deprecate:UH,async add(e,t){try{return await Bu(e.projectRoot,{rule:t.rule,topic:t.topic,triggers:{files:zL(t.trigger_files??t.trigger_file),commands:zL(t.trigger_commands??t.trigger_cmd),keywords:zL(t.trigger_keywords??t.trigger_kw)},evidence:xne(t.evidence),rationale:t.rationale},{allowNewTopic:t.new_topic===!0,topicSummary:t.topic_summary})}catch(r){throw r instanceof xn?new N("NOT_FOUND",`lessons_add: unknown topic "${r.topic}". Pass new_topic=true + topic_summary to create it.`,{code:r.code}):r instanceof Ms||r instanceof $s||r instanceof Fs?new N("VALIDATION_FAILED",`lessons_add: ${r.message}`,{code:r.code}):r}}};var Tne=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).")}).strict(),_l=z$1.union([z$1.string(),z$1.array(z$1.string())]),Pne=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:_l.optional().describe('file_glob triggers (e.g. ["src/cli/**/*.ts"] or a single "src/**").'),trigger_file:_l.optional().describe("Alias of `trigger_files` (matches the CLI `--trigger-file` flag)."),trigger_commands:_l.optional().describe("command_pattern triggers \u2014 regexes matched against shell commands."),trigger_cmd:_l.optional().describe("Alias of `trigger_commands` (matches the CLI `--trigger-cmd` flag)."),trigger_keywords:_l.optional().describe("keyword triggers \u2014 case-insensitive substrings of task descriptions."),trigger_kw:_l.optional().describe("Alias of `trigger_keywords` (matches the CLI `--trigger-kw` flag)."),evidence:_l.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.")}).strict(),BH=[{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 (a predicate-less call is rejected); always include `file` for an edit and `command` for a shell command \u2014 keyword-only recall misses file/command-scoped lessons. Returns compact `{id, rule}` by default; pass `verbose:true` for topics/triggers/evidence/score. Excludes deprecated and superseded lessons.",inputSchema:Tne,handler:s((e,t)=>wm.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:Pne,handler:s((e,t)=>wm.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=>wm.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)=>wm.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)=>wm.deprecate(e,t),"handler")}];function KH(e){let t=toJSONSchema(e,{target:"draft-07"});return delete t.$schema,t}s(KH,"zodToMcpSchema");var ny=[...dH,...kH,...AH,...MH,...GH,...BH],VL=ny.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")}));Zi();async function Fne(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(Fne,"findProjectRoot");async function JL(e){let t=await Fne(e.cwd);return {projectRoot:t,loadCanonical:s(()=>Gt(t),"loadCanonical")}}s(JL,"resolveContext");function HH(e,t){let r=Mne(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:$ne(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(HH,"enrichValidationIssues");function Mne(e){let t=e.shape;return t!==void 0&&typeof t=="object"?Object.keys(t):[]}s(Mne,"objectShapeKeys");function $ne(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=Gne(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($ne,"nearestKey");function Gne(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(Gne,"editDistance");async function Yne(){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(Yne,"pkgVersion");function Xne(e,t){return new RegExp("^"+e.replace(/\{[^}]+\}/g,"([^/]+)")+"$").test(t)}s(Xne,"matchTemplate");function qne(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(qne,"extractTemplateParams");async function zH(){let e=new Server({name:"agentsmesh-mcp",version:await Yne()},{capabilities:{tools:{},resources:{}}});e.setRequestHandler(ListToolsRequestSchema,async()=>({tools:ny.map(t=>({name:t.name,description:t.description,inputSchema:KH(t.inputSchema)}))})),e.setRequestHandler(CallToolRequestSchema,async t=>{let r=ny.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=HH(r.inputSchema,n.error.issues);throw new N("VALIDATION_FAILED","invalid input",a)}let o=await JL({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:Sm(n instanceof Error?n.message:"unknown error")};return {isError:true,content:[{type:"text",text:JSON.stringify(o)}]}}}),e.setRequestHandler(ListResourcesRequestSchema,async()=>({resources:VL.map(t=>({uri:t.uri,name:t.name,description:t.description}))})),e.setRequestHandler(ReadResourceRequestSchema,async t=>{let r=VL.find(a=>a.uri===t.params.uri||Xne(a.uri,t.params.uri));if(!r)throw new N("NOT_FOUND",`resource not found: ${t.params.uri}`);let n=await JL({cwd:process.cwd()}),o=qne(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(zH,"startServer");ne();async function VH(e,t){hC(),await zH();}s(VH,"runMcp");var XL={output:""},qL=s(e=>typeof e=="string"&&e.length>0?e:void 0,"str"),JH=" \u2026[truncated]";function Qne(e){return e.length<=tm?e:e.slice(0,tm-JH.length)+JH}s(Qne,"clampRule");async function YH(e,t){let r;try{r=JSON.parse(e);}catch{return XL}let n=qL(r.tool_input?.file_path),o=qL(r.tool_input?.command);if(n===void 0&&o===void 0)return XL;let i={...n!==void 0?{file:n}:{},...o!==void 0?{command:o}:{}},{lessons:a}=await Uu(t,i,{sessionId:qL(r.session_id)});if(a.length===0)return XL;let l=n??o??"",c=a.map(p=>`- ${Qne(p.lesson.rule)}`).join(`
|
|
691
|
+
`),{path:r,written:true})}};var Foe=/[;&|`$<>!\\\r\n]/u,Moe=/^[A-Za-z_][A-Za-z0-9_]*$/u,Goe=/^[A-Za-z][A-Za-z0-9_-]*$/u,$oe=/^[A-Za-z][A-Za-z0-9_-]*(\([^)]*\))?$/u,d1=/[\r\n]/u,f1=/[\0\r\n]/u;function joe(e){return f1.test(e)?false:!e.split(/[/\\]/u).includes("..")}s(joe,"isSafeMcpCwd");function Uoe(e){return z$1.string().min(1).max(512).refine(t=>!Foe.test(t),{message:`${e} must not contain shell metacharacters (;&|\`$<>!\\\\, newlines)`})}s(Uoe,"noShellMeta");var yC=z$1.object({type:z$1.enum(["stdio","sse","http","streamable-http","streamable_http"]).optional(),description:z$1.string().max(1024).refine(e=>!f1.test(e),{message:"description must not contain NUL or newline characters"}).optional(),command:Uoe("command").optional(),args:z$1.array(z$1.string().max(2048)).max(100).optional(),env:z$1.record(z$1.string().regex(Moe,"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(Goe,"header name must be a valid identifier"),z$1.string().max(8192)).optional(),cwd:z$1.string().max(2048).refine(joe,{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(),Boe=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"}),g1=z$1.string().max(256).refine(e=>!d1.test(e),{message:"hook matcher must not contain newlines"}),Koe=z$1.object({matcher:g1,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"}),Woe=z$1.object({matcher:g1,hooks:z$1.array(Boe).min(1).max(50)}).strict(),Hoe=z$1.union([Koe,Woe]),h1=z$1.record(z$1.string().min(1).max(64),z$1.array(Hoe).max(100)),zoe=z$1.string().min(1).max(256).refine(e=>!d1.test(e),{message:"permission pattern must not contain newlines"}).refine(e=>$oe.test(e),{message:"permission pattern must match Tool or Tool(matcher) form"}),Sy=z$1.array(zoe).max(500);var pd=z$1.object({}).strict(),Voe=[{name:"get_config",description:"Read agentsmesh.yaml",inputSchema:pd,handler:s(e=>kr.getConfig(e),"handler"),resourceUri:"agentsmesh://config"},{name:"list_mcp_servers",description:"List MCP servers in canonical mcp.json",inputSchema:pd,handler:s(e=>kr.listMcpServers(e),"handler"),resourceUri:"agentsmesh://canonical/mcp"},{name:"get_permissions",description:"Read permissions.yaml",inputSchema:pd,handler:s(e=>kr.getPermissions(e),"handler"),resourceUri:"agentsmesh://canonical/permissions"},{name:"get_hooks",description:"Read hooks.yaml",inputSchema:pd,handler:s(e=>kr.getHooks(e),"handler"),resourceUri:"agentsmesh://canonical/hooks"},{name:"get_ignore",description:"Read ignore patterns",inputSchema:pd,handler:s(e=>kr.getIgnore(e),"handler"),resourceUri:"agentsmesh://canonical/ignore"}],Joe=[{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)=>kr.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:yC.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)=>kr.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:yC,merge:z$1.boolean().optional(),dry_run:z$1.boolean().optional()}),handler:s((e,t)=>kr.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)=>kr.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:Sy.optional().describe('Allowed tool patterns (e.g. ["Bash(npm run:*)"])'),deny:Sy.optional().describe("Denied tool patterns"),ask:Sy.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)=>kr.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:h1.describe("Full hooks structure (e.g. { PreToolUse: [...], PostToolUse: [...] })"),dry_run:z$1.boolean().optional().describe("Preview without writing")}),handler:s((e,t)=>kr.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)=>kr.updateIgnore(e,t),"handler")}],y1=[...Voe,...Joe];BI();Vn();function Yoe(){return Object.fromEntries(Ue.map(e=>[e,Object.fromEntries(Object.entries(UU).map(([t,r])=>[t,r[e]]))]))}s(Yoe,"buildTargetIndex");var _1=Yoe(),_C={async list(){return _1},async get(e){let t=_1[e.targetId];if(t===void 0)throw new v("NOT_FOUND",`unknown target: ${e.targetId}`);return {targetId:e.targetId,capabilities:t}}};Qo();Qo();bd();tt();zo();sn();rt();Vn();async function SC(e,t){let r=re(e);if(!r)throw new zn(e,{supported:[...Ue,...Hd().map(n=>n.id)]});return r.generators.importFrom(t.root,{scope:t.scope??"project"})}s(SC,"importFrom");async function Bm(e,t={}){let r=t.scope??"project",{config:n,context:o}=await ye(e,r);await ze(n,e);let{canonical:i}=await Mt(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(Bm,"loadProjectContext");async function RC(e){let t=e.targetFilter?[...e.targetFilter]:void 0;return Wh(e.config,e.canonical,e.projectRoot,t,{scope:e.scope})}s(RC,"lint");async function kC(e){let t=await on(e);return {...Bh(t),results:t}}s(kC,"diff");async function IC(e){return Hh(e)}s(IC,"check");Qo();zo();Ca();bd();xe();rt();Ae();function Ul(e,t={}){let r=Math.max(1,t.cap??Oh),n=Nh(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,I)=>{let w=n.get(R),D=n.get(I);return w!==D?w-D:R<I?-1:1}),_=new Set(h.slice(r)),S=g.triggers.filter(R=>!_.has(R));i.set(f,S),o.push({id:f,removedTriggers:[..._],keptCount:S.length});}let a=[],l=[];if(t.knownPaths!==void 0){let f=Mu(e,t.knownPaths);if(f.size>0){for(let[g,h]of i){let _=h.filter(R=>f.has(R));if(_.length===0)continue;let S=h.filter(R=>!f.has(R));S.length>=1?(i.set(g,S),a.push({id:g,removedTriggers:_,keptCount:S.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(Ul,"planPrune");function Ry(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(Ry,"applyPruneToGraph");function ud(e){return e.removedTriggerIds.length===0&&e.removedTopicIds.length===0&&e.trimmedLessons.length===0&&e.removedDeadGlobs.length===0}s(ud,"isEmptyPrunePlan");function tse(e){let t=je(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(tse,"isAutoPruneEnabled");async function S1(e,t){if(!tse(e))return null;let r=Ye(e);if(r===null||ud(Ul(r,{trimOverCap:false,knownPaths:t})))return null;let n={removedTriggers:0,removedTopics:0,detachedDeadGlobs:0};return await Ot(e,i=>{let a=Ul(i,{trimOverCap:false,knownPaths:t});ud(a)||(Ry(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(S1,"maybeAutoPrune");function ky(e,t){let r=e.replaceAll("\\","/"),n=R1(t,r);if(!n.startsWith("../"))return n;let o=R1(LC(t),LC(resolve(t,r)));return o.startsWith("../")?n:o}s(ky,"normalizeRecallFile");function R1(e,t){let r=relative(e,resolve(e,t)).replaceAll("\\","/");return r===""?t.replaceAll("\\","/"):r}s(R1,"relativize");function LC(e){try{return realpathSync(e)}catch{let t=dirname(e);return t===e?e:resolve(LC(t),basename(e))}}s(LC,"safeRealpath");var fse="agentsmesh-lessons-seen";function Iy(e={}){if(e.disabled===true)return null;let t=e.explicit!==void 0&&e.explicit.trim().length>0?e.explicit.trim():Cm(e.env);if(t===void 0)return null;let r=gse(t);return {sessionId:t,seen:hse(r),path:r}}s(Iy,"openSessionDedup");function gse(e){let t=e.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,200);return join(tmpdir(),fse,`${t}.json`)}s(gse,"seenPath");function hse(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(hse,"loadSeen");function Ly(e,t){return t.filter(r=>!e.seen.has(r.id))}s(Ly,"filterUnseen");function Cy(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(Cy,"commitSeen");async function dd(e,t,r={}){try{await ht(e);}catch{}let n=Ih(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:ky(t.file,e)},a=Em(o,i),l=Iy({explicit:r.sessionId,disabled:r.noDedup}),c=l===null?a:Ly(l,a),m=Mh(e),p=Om(o,i,c,{limit:r.limit??m.limit,maxTokens:r.maxTokens===null?void 0:r.maxTokens??m.maxTokens});return l!==null&&Cy(l,p.map(u=>u.id)),EC(e,o,i,a,p,{bypassed:false}),{lessons:p,totalMatches:a.length,suppressed:a.length-c.length}}s(dd,"recallLessons");function EC(e,t,r,n,o,i={}){if(!la())return;let a=RL(t,r),l=s(m=>n.filter(({lesson:p})=>p.triggers.some(u=>m.has(u))).length,"countVia"),c=Cm();rK(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+Nl(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(EC,"recordRecallTelemetry");async function fd(e,t,r={}){await ht(e);let n={file:t.triggers.files?.length??0,command:t.triggers.commands?.length??0,keyword:t.triggers.keywords?.length??0},o=r.knownPaths??ca(e)??void 0;try{let i=await Ah(e,t,{...r,knownPaths:o});SL(e,n,i);let a=await S1(e,o);return a===null?i:{...i,autoPruned:a}}catch(i){throw SL(e,n,null),i}}s(fd,"captureLesson");async function Ey(e,t,r,n={}){return Ot(e,o=>yse(o,t,r),{retries:n.retries})}s(Ey,"mergeLessons");function yse(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:OC(o.triggers,n.triggers),topics:OC(o.topics,n.topics),evidence:OC(o.evidence,n.evidence)},e.lessons[t]={...n,status:"superseded",supersededBy:r},{loserId:t,keeperId:r}}s(yse,"mergeInto");function OC(e,t){let r=[...e];for(let n of t)r.includes(n)||r.push(n);return r}s(OC,"union");var wC=String.raw`L\d+(?:\s*,\s*L\d+)*`,_se=[new RegExp(String.raw`\s*\bSee\s+${wC}\.?`,"g"),new RegExp(String.raw`\s*\((?:${wC})\)\.?`,"g"),new RegExp(String.raw`\s*\[(?:${wC})\]\.?`,"g")],Sse=/\s*\(also relevant[^)]*\)\s*/g;function bC(e){let t=e;for(let r of _se)t=t.replace(r,"");return t=t.replace(Sse," "),t.trim()}s(bC,"stripLegacyMarkers");function k1(e){let t=[];for(let[r,n]of Object.entries(e.lessons)){let o=bC(n.rule);o===n.rule||o.length===0||(t.push(r),e.lessons[r]={...n,rule:o});}return t.sort()}s(k1,"applyStrip");async function Oy(e,t={}){await ht(e);let r=Ye(e);if(r===null)return {changedIds:[],changedCount:0};if(t.dryRun===true){let o=k1(r);return {changedIds:o,changedCount:o.length}}let n=[];return await Ot(e,o=>{n=k1(o);}),{changedIds:n,changedCount:n.length}}s(Oy,"stripMarkersInGraph");b();function ga(e){if(e instanceof v)throw e;if(e instanceof zn)throw new v("VALIDATION_FAILED",e.message);let t=e instanceof Error?e.message:String(e);throw /unknown.*--from|unknown.*--to|unknown target/i.test(t)?new v("VALIDATION_FAILED",t):/lock/i.test(t)?new v("LOCK_HELD","generate lock is held"):new v("IO_ERROR","engine failure",{reason:t})}s(ga,"wrapEngineError");async function I1(e,t){if(t.dry_run===true)throw new v("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 SC(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 v("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 v("VALIDATION_FAILED",n);ga(r);}}s(I1,"importFromTarget");async function L1(e,t){try{let r={from:t.from,to:t.to,"dry-run":t.dry_run===!0},n=await uy(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 v("VALIDATION_FAILED",n);ga(r);}}s(L1,"convert");async function Rse(e,t){try{let r=await Bm(e.projectRoot),n=t.targets&&t.targets.length>0?t.targets:void 0,i=(await on({config:r.config,canonical:r.canonical,projectRoot:r.projectRoot,scope:r.scope,targetFilter:n})).filter(m=>m.status!=="skipped"),a=i.filter(m=>m.status==="created"||m.status==="updated");if(!t.dry_run)for(let m of a){let p=fm(r.projectRoot,m.path,m.target);await L(p,m.content);}let l={};for(let m of a){let p=l[m.target]??{filesWritten:0};l[m.target]={filesWritten:p.filesWritten+1};}let c={filesWritten:a.length,byTarget:l,lockfileUpdated:!t.dry_run&&a.length>=0,errors:[],warnings:[]};return t.verbose===!0&&(c.files=i.map(m=>m.path)),c}catch(r){ga(r);}}s(Rse,"generate");async function kse(e,t){try{let r=await Bm(e.projectRoot),n=await RC({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){ga(r);}}s(kse,"lint");async function Ise(e){try{let t=await Bm(e.projectRoot),r=await IC({config:t.config,configDir:t.configDir,canonicalDir:t.canonicalDir});return {drift:!r.inSync,missing:[...r.removed],extra:[...r.added],modified:[...r.modified]}}catch(t){ga(t);}}s(Ise,"check");async function Lse(e,t){try{let r=await Bm(e.projectRoot),n=t.targets&&t.targets.length>0?t.targets:void 0,o=await kC({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){ga(r);}}s(Lse,"diff");var Bl={generate:Rse,lint:kse,check:Ise,diff:Lse,import:I1,convert:L1};var C1=z$1.object({}).strict(),E1=[{name:"list_target_capabilities",description:"List support matrix for all targets",inputSchema:C1,handler:s(()=>_C.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)=>_C.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)=>Bl.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)=>Bl.lint(e,t),"handler")},{name:"check",description:"Detect drift between canonical and lockfile",inputSchema:C1,handler:s(e=>Bl.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)=>Bl.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)=>Bl.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)=>Bl.convert(e,t),"handler")}];function AC(e){if(e instanceof v)throw e;let t=e instanceof Error?e.message:String(e),r=Mm(t);throw /lock|LockAcquisitionError/i.test(r)?new v("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 v("VALIDATION_FAILED",r):new v("IO_ERROR","install pipeline failure",{reason:r})}s(AC,"wrapInstallError");function Cse(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(Cse,"toInstallFlags");function Ese(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(Ese,"toUninstallFlags");async function Ose(e,t){if(typeof t.source!="string"||t.source.trim().length===0)throw new v("VALIDATION_FAILED","install: `source` is required");try{let r=await Gl(Cse(t),[t.source],e.projectRoot);if(r.exitCode!==0)throw new v("IO_ERROR",`install exited ${r.exitCode}`);return r.data}catch(r){AC(r);}}s(Ose,"install");async function wse(e,t){if(t.all!==true&&(!Array.isArray(t.names)||t.names.length===0))throw new v("VALIDATION_FAILED","uninstall: pass `names: [...]` or set `all: true`");try{return (await ay(Ese(t),t.names??[],e.projectRoot)).data}catch(r){AC(r);}}s(wse,"uninstall");async function bse(e,t={}){try{let r={};return t.global===!0&&(r.global=!0),(await cy(r,e.projectRoot)).data}catch(r){AC(r);}}s(bse,"installsList");var wy={install:Ose,uninstall:wse,installsList:bse};function Ase(e){let t={force:true};return e.dry_run===true&&(t["dry-run"]=true),e.global===true&&(t.global=true),t}s(Ase,"toRefreshFlags");function xse(e){if(e instanceof v)throw e;let t=e instanceof Error?e.message:String(e),r=Mm(t);throw /lock|LockAcquisitionError/i.test(r)?new v("LOCK_HELD",".install.lock is held by another process"):/unknown pack|not found|usage:/i.test(r)?new v("VALIDATION_FAILED",r):/resolve|network|fetch/i.test(r)?new v("REFRESH_RESOLVE_FAILED",r):/materialize|apply|manifest-update/i.test(r)?new v("REFRESH_APPLY_FAILED",r):new v("IO_ERROR","refresh pipeline failure",{reason:r})}s(xse,"wrapRefreshError");async function Tse(e,t={}){try{let r=await ly(Ase(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 v("VALIDATION_FAILED",i)}return r.data}catch(r){xse(r);}}s(Tse,"refresh");var O1={refresh:Tse};var Pse=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.")}),Dse=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.")}),Nse=z$1.object({global:z$1.boolean().optional().describe("Read from `~/.agentsmesh/installs.yaml` instead of the project scope.")}),vse=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.")}),w1=[{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:Pse,handler:s((e,t)=>wy.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:Dse,handler:s((e,t)=>wy.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:Nse,handler:s((e,t)=>wy.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:vse,handler:s((e,t)=>O1.refresh(e,t),"handler")}];async function by(e,t,r){return Ot(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(by,"deprecateLesson");async function b1(e,t){await ht(e.projectRoot);let r=Ye(e.projectRoot),n=r?.topics[t.topic];if(r===null||n===void 0)throw new v("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(b1,"lessonsShow");async function A1(e,t){try{return await by(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 v("NOT_FOUND",`lessons_deprecate: ${n}`):r}}s(A1,"lessonsDeprecate");function xC(e){return e===void 0?[]:typeof e=="string"?e.length>0?[e]:[]:e.filter(t=>t.length>0)}s(xC,"toTriggerList");function Fse(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(Fse,"toEvidenceList");var Km={async query(e,t){let r={file:t.file,command:t.command??t.cmd,keyword:t.keyword};if(r.file===void 0&&r.command===void 0&&r.keyword===void 0)throw new v("VALIDATION_FAILED","lessons_query: provide at least one of file, command, or keyword to recall against.");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.
|
|
692
|
+
`);let{lessons:n,totalMatches:o,suppressed:i,corrupt:a,newerVersion:l}=await dd(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.
|
|
693
|
+
`);let c=t.verbose===true;return {lessons:n.map(({id:m,lesson:p,score:u})=>c?{id:m,rule:p.rule,topics:[...p.topics],triggers:[...p.triggers],evidence:[...p.evidence],score:u}:{id:m,rule:p.rule}),totalMatches:o,...i>0?{suppressed:i}:{}}},async topics(e){await ht(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:b1,deprecate:A1,async add(e,t){try{return await fd(e.projectRoot,{rule:t.rule,topic:t.topic,triggers:{files:xC(t.trigger_files??t.trigger_file),commands:xC(t.trigger_commands??t.trigger_cmd),keywords:xC(t.trigger_keywords??t.trigger_kw)},evidence:Fse(t.evidence),rationale:t.rationale},{allowNewTopic:t.new_topic===!0,topicSummary:t.topic_summary})}catch(r){throw r instanceof Bn?new v("NOT_FOUND",`lessons_add: unknown topic "${r.topic}". Pass new_topic=true + topic_summary to create it.`,{code:r.code}):r instanceof li||r instanceof ci||r instanceof ai?new v("VALIDATION_FAILED",`lessons_add: ${r.message}`,{code:r.code}):r}}};var Mse=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).")}).strict(),Kl=z$1.union([z$1.string(),z$1.array(z$1.string())]),Gse=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:Kl.optional().describe('file_glob triggers (e.g. ["src/cli/**/*.ts"] or a single "src/**").'),trigger_file:Kl.optional().describe("Alias of `trigger_files` (matches the CLI `--trigger-file` flag)."),trigger_commands:Kl.optional().describe("command_pattern triggers \u2014 regexes matched against shell commands."),trigger_cmd:Kl.optional().describe("Alias of `trigger_commands` (matches the CLI `--trigger-cmd` flag)."),trigger_keywords:Kl.optional().describe("keyword triggers \u2014 case-insensitive substrings of task descriptions."),trigger_kw:Kl.optional().describe("Alias of `trigger_keywords` (matches the CLI `--trigger-kw` flag)."),evidence:Kl.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.")}).strict(),x1=[{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 (a predicate-less call is rejected); always include `file` for an edit and `command` for a shell command \u2014 keyword-only recall misses file/command-scoped lessons. Returns compact `{id, rule}` by default; pass `verbose:true` for topics/triggers/evidence/score. Excludes deprecated and superseded lessons.",inputSchema:Mse,handler:s((e,t)=>Km.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:Gse,handler:s((e,t)=>Km.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=>Km.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)=>Km.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)=>Km.deprecate(e,t),"handler")}];function T1(e){let t=toJSONSchema(e,{target:"draft-07"});return delete t.$schema,t}s(T1,"zodToMcpSchema");var Ay=[...e1,...l1,...y1,...E1,...w1,...x1],TC=Ay.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")}));Ca();async function Bse(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 v("NO_PROJECT","agentsmesh.yaml not found");t=r;}}s(Bse,"findProjectRoot");async function PC(e){let t=await Bse(e.cwd);return {projectRoot:t,loadCanonical:s(()=>jt(t),"loadCanonical")}}s(PC,"resolveContext");function D1(e,t){let r=Kse(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:Wse(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(D1,"enrichValidationIssues");function Kse(e){let t=e.shape;return t!==void 0&&typeof t=="object"?Object.keys(t):[]}s(Kse,"objectShapeKeys");function Wse(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=Hse(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(Wse,"nearestKey");function Hse(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(Hse,"editDistance");async function tie(){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(tie,"pkgVersion");function rie(e,t){return new RegExp("^"+e.replace(/\{[^}]+\}/g,"([^/]+)")+"$").test(t)}s(rie,"matchTemplate");function nie(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(nie,"extractTemplateParams");async function N1(){let e=new Server({name:"agentsmesh-mcp",version:await tie()},{capabilities:{tools:{},resources:{}}});e.setRequestHandler(ListToolsRequestSchema,async()=>({tools:Ay.map(t=>({name:t.name,description:t.description,inputSchema:T1(t.inputSchema)}))})),e.setRequestHandler(CallToolRequestSchema,async t=>{let r=Ay.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=D1(r.inputSchema,n.error.issues);throw new v("VALIDATION_FAILED","invalid input",a)}let o=await PC({cwd:process.cwd()}),i=await r.handler(o,n.data);return {content:[{type:"text",text:JSON.stringify(i)}]}}catch(n){let o=n instanceof v?n.toEnvelope():{code:"IO_ERROR",message:Mm(n instanceof Error?n.message:"unknown error")};return {isError:true,content:[{type:"text",text:JSON.stringify(o)}]}}}),e.setRequestHandler(ListResourcesRequestSchema,async()=>({resources:TC.map(t=>({uri:t.uri,name:t.name,description:t.description}))})),e.setRequestHandler(ReadResourceRequestSchema,async t=>{let r=TC.find(a=>a.uri===t.params.uri||rie(a.uri,t.params.uri));if(!r)throw new v("NOT_FOUND",`resource not found: ${t.params.uri}`);let n=await PC({cwd:process.cwd()}),o=nie(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(N1,"startServer");se();async function v1(e,t){eE(),await N1();}s(v1,"runMcp");var NC={output:""},vC=s(e=>typeof e=="string"&&e.length>0?e:void 0,"str"),F1=" \u2026[truncated]";function oie(e){return e.length<=Sm?e:e.slice(0,Sm-F1.length)+F1}s(oie,"clampRule");async function M1(e,t){let r;try{r=JSON.parse(e);}catch{return NC}let n=vC(r.tool_input?.file_path),o=vC(r.tool_input?.command);if(n===void 0&&o===void 0)return NC;let i={...n!==void 0?{file:n}:{},...o!==void 0?{command:o}:{}},{lessons:a}=await dd(t,i,{sessionId:vC(r.session_id)});if(a.length===0)return NC;let l=n??o??"",c=a.map(p=>`- ${oie(p.lesson.rule)}`).join(`
|
|
647
694
|
`),m=`Recalled agentsmesh lessons for ${l} \u2014 apply before your next action:
|
|
648
|
-
${c}`;return {output:JSON.stringify({hookSpecificOutput:{hookEventName:"PostToolUse",additionalContext:m}})}}s(
|
|
695
|
+
${c}`;return {output:JSON.stringify({hookSpecificOutput:{hookEventName:"PostToolUse",additionalContext:m}})}}s(M1,"buildRecallHookOutput");function G1(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(G1,"summarizeCapture");var sie=[{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")}],iie=1800*1e3;function $1(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($1,"percentile");function aie(e,t){return t.length>0&&t.every(r=>e.triggers[r]?.kind==="keyword")}s(aie,"isKeywordOnly");function lie(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)>iie)&&r++,t.push(r);}return t}s(lie,"sessionIndices");function cie(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=Nl(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(cie,"intraSessionRedundancy");function j1(e,t){let r=e.length,n=e.filter(S=>S.totalMatches===0).length,o=e.map(S=>S.returnedTokens),i=o.reduce((S,R)=>S+R,0),a=Object.values(t.lessons).filter(S=>S.status==="active"),l=a.reduce((S,R)=>S+Nl(R.rule),0),c=lie(e),m=r===0?0:c[c.length-1]+1,p=e.filter(S=>S.bypassed===true).length,u=e.filter(S=>S.bypassed!==true).reduce((S,R)=>S+R.returnedTokens,0),f=l*m,g=e.filter(S=>S.totalMatches>0),h=g.filter(S=>S.matchedByKind.keyword>0&&S.matchedByKind.file===0&&S.matchedByKind.command===0).length,_=a.filter(S=>aie(t,S.triggers)).length;return {totalRecalls:r,noMatchRate:r===0?0:n/r,matchCountHistogram:sie.map(S=>({bucket:S.label,count:e.filter(R=>S.test(R.totalMatches)).length})),returnedTokens:{p50:$1(o,50),p90:$1(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:cie(e,c,t),reachability:{keywordOnlyRecallRate:g.length===0?0:h/g.length,keywordOnlyUnreachableLessons:_}}}s(j1,"summarizeRecall");function $t(e,t){let r=e[t];return typeof r=="string"&&r.length>0?r:null}s($t,"stringFlag");function U1(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(U1,"listFlag");function xy(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(xy,"repeatedFlag");function gd(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(gd,"numberFlag");function B1(e){let t=$t(e,"format");return t==="md"||t==="json"||t==="plain"?t:"plain"}s(B1,"parseFormat");function K1(e){let t={},r=$t(e,"file"),n=$t(e,"cmd")??$t(e,"command"),o=$t(e,"keyword");return r!==null&&(t.file=r),n!==null&&(t.command=n),o!==null&&(t.keyword=o),t}s(K1,"queryFromFlags");function ha(){return {version:1,lessons:{},topics:{},triggers:{}}}s(ha,"emptyGraph");function W1(){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(W1,"todayIso");function H1(e,t,r){let n=[`# ${e}`,"",t,"","## Lessons",""];for(let[o,i]of r)n.push(`- **${o}** \u2014 ${i.rule}`);return `${n.join(`
|
|
649
696
|
`)}
|
|
650
|
-
`}s(
|
|
697
|
+
`}s(H1,"renderTopicMarkdown");function z1(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(`
|
|
651
698
|
`)}
|
|
652
|
-
`}s(
|
|
653
|
-
`):void 0}s(sy,"mergeWarnings");function aoe(e){if(existsSync(join(e,".agentsmesh")))return;let t=oh(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(aoe,"strayDirWarning");function QL(e,t,r){let n=sz(e,"top");if(n!==null)return Me("query",n,2);let o=sz(e,"max-tokens");if(o!==null)return Me("query",o,2);let i=ioe(e);if(i!==null)return Me("query",i,2);let a=ez(e),l=tz(e);if(l.file===void 0&&l.command===void 0&&l.keyword===void 0)return Me("query","Recall needs a predicate: pass at least one of --file <path-about-to-edit>, --cmd <command-about-to-run>, or --keyword <text>.",2);let c=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,m=l.file===void 0?l:{...l,file:Yh(l.file,t)},p=EU(t)??void 0,u=Xg(t);if(u.status==="corrupt"){let $={lessons:[],query:m,autoMigrated:r,totalMatches:0,warning:sy(`lessons.json is unreadable (corrupt) \u2014 recall returned no lessons. Run \`agentsmesh lessons validate\`. (${u.error.message})`,p)};return {subcommand:"query",exitCode:0,format:a,data:$}}if(u.status==="newer-version"){let $={lessons:[],query:m,autoMigrated:r,totalMatches:0,warning:sy(`lessons.json is version ${u.version}, newer than this build supports (${iu}) \u2014 recall returned no lessons. Upgrade agentsmesh to read it.`,p)};return {subcommand:"query",exitCode:0,format:a,data:$}}if(u.status==="absent"){let $=aoe(t),Y=sy($??gu(),c,p);return {subcommand:"query",exitCode:0,format:a,data:{lessons:[],query:m,autoMigrated:r,totalMatches:0,warning:Y}}}let f=u.graph,g=lm(f,m),h=Xh({explicit:$t(e,"session")??void 0,disabled:e["no-dedup"]===true}),R=h===null?g:qh(h,g),_=ph(t),S=e.all===true?void 0:Ku(e,"top")??_.limit,I=e.all===true?void 0:Ku(e,"max-tokens")??_.maxTokens,b=cm(f,m,R,{limit:S,maxTokens:I});h!==null&&Qh(h,b.map(({id:$})=>$)),UL(t,f,m,g,b,{bypassed:e.all===true});let P=b.map(({id:$,lesson:Y,score:ee})=>({id:$,rule:Y.rule,topics:[...Y.topics],triggers:[...Y.triggers],evidence:[...Y.evidence],score:ee})),T=g.length-R.length,W={lessons:P,query:m,autoMigrated:r,totalMatches:g.length,...T>0?{suppressed:T}:{},...e.ids===true?{showIds:true}:{},...(()=>{let $=sy(c,p);return $?{warning:$}:{}})()};return {subcommand:"query",exitCode:0,format:a,data:W}}s(QL,"doQuery");function iz(e){return typeof e=="object"&&e!==null&&e.status==="deprecated"}s(iz,"isDeprecated");function loe(e,t,r){let n=qg(t),o=qg(r);if(n===o)return t;if(e!==void 0){let l=qg(e);if(n===l)return r;if(o===l)return t}let i=iz(t),a=iz(r);return i!==a?i?t:r:n>o?t:r}s(loe,"pick");function ZL(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?loe(e[o],i,a):i??a;}return n}s(ZL,"mergeRecord");function az(e,t,r){return {version:t.version,lessons:ZL(e.lessons,t.lessons,r.lessons),topics:ZL(e.topics,t.topics,r.topics),triggers:ZL(e.triggers,t.triggers,r.triggers)}}s(az,"mergeGraphs");function eC(e){try{let t=il.safeParse(JSON.parse(readFileSync(e,"utf8")));return t.success?t.data:null}catch{return null}}s(eC,"readGraphFile");function tC(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=eC(t),a=eC(r),l=eC(n);if(i===null||a===null||l===null)return o;let c=az(i,a,l);return xo(c).ok?(writeFileSync(r,cu(c),"utf8"),{subcommand:"merge-driver",exitCode:0,data:{merged:true}}):o}s(tC,"doMergeDriver");function lz(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(lz,"untriggerLesson");function iy(e){return (e instanceof Error?e.message:String(e)).replace(/^(mutateLessonsGraph|mergeLessons):\s*/,"")}s(iy,"errMessage");async function rC(e,t,r){let n=t!==void 0&&t.length>0?t:null,o=$t(e,"rule")??n,i=$t(e,"topic");if(o===null)return Me("add",`Missing rule \u2014 pass it positionally (\`add "<rule>"\`) or via --rule.${zu()}`,2);if(i===null)return Me("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).${zu()}`,2);let a=existsSync(join(r,".agentsmesh"))?null:oh(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=fu(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.";try{return {subcommand:"add",exitCode:0,data:{...await Bu(r,{rule:o,topic:i,triggers:{files:oy(e,"trigger-file"),commands:oy(e,"trigger-cmd"),keywords:oy(e,"trigger-kw")},evidence:ZH(e,"evidence"),rationale:$t(e,"rationale")??void 0},{allowNewTopic:e["new-topic"]===!0,topicSummary:$t(e,"topic-summary")??void 0}),...l?{locationNote:l}:{},...c?{activationNote:c}:{}}}}catch(m){return m instanceof xn?Me("add",`Unknown topic: ${m.topic}. Pass --new-topic --topic-summary "..." to create it.`,1):m instanceof Ms||m instanceof $s||m instanceof Fs?Me("add",`${m.message}${zu()}`,2):Me("add",iy(m),1)}}s(rC,"doAdd");async function nC(e,t,r){if(t===void 0||t==="")return Me("deprecate","Usage: agentsmesh lessons deprecate <id> [--superseded-by <id>]",2);let n=$t(e,"superseded-by");try{let{id:o,supersededBy:i}=await ry(r,t,n);return {subcommand:"deprecate",exitCode:0,data:{id:o,supersededBy:i}}}catch(o){let i=iy(o),a=i.startsWith("Unknown lesson")?" Run `agentsmesh lessons journal` to list lesson ids (or `lessons query --ids` to see what recalled).":"";return Me("deprecate",`${i}${a}`,1)}}s(nC,"doDeprecate");async function oC(e,t,r){if(e===void 0||e===""||t===void 0||t==="")return Me("untrigger","Usage: agentsmesh lessons untrigger <lesson-id> <trigger-id>",2);try{return {subcommand:"untrigger",exitCode:0,data:await Et(r,i=>lz(i,e,t))}}catch(n){return Me("untrigger",iy(n),1)}}s(oC,"doUntrigger");async function sC(e,t,r){if(e===void 0||e===""||t===void 0||t==="")return Me("merge","Usage: agentsmesh lessons merge <loser-id> <keeper-id>",2);try{return {subcommand:"merge",exitCode:0,data:await Zh(r,e,t)}}catch(n){return Me("merge",iy(n),1)}}s(sC,"doMerge");async function iC(e,t){let r=e["dry-run"]===true,n=await ey(t,{dryRun:r});return {subcommand:"strip-markers",exitCode:0,data:{changedIds:n.changedIds,changedCount:n.changedCount,dryRun:r}}}s(iC,"doStripMarkers");async function aC(e,t){let r=e.force===true,n=e.merge===true;if(!r&&!n&&existsSync(Ao(t)))return Me("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(Ge(t).index))return Me("import-md","No legacy lessons store found (.agentsmesh/lessons/index.yaml) \u2014 nothing to migrate.",1);let o=$t(e,"migrated-at")??rz(),i=await im(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(aC,"doImportMd");function lC(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(lC,"toPruneData");async function cC(e,t){let r=Ku(e,"cap");if(r!==null&&(!Number.isInteger(r)||r<1))return Me("prune","Invalid --cap: expected a positive integer.",2);let n=Gi(t)??void 0,o={...r!==null?{cap:r}:{},...n?{knownPaths:n}:{}};if(e.apply!==true){let c=Ve(t)??zi();return {subcommand:"prune",exitCode:0,data:lC(yl(c,o),false)}}let i=Ve(t)??zi(),a=yl(i,o);return ju(a)?{subcommand:"prune",exitCode:0,data:lC(a,true)}:{subcommand:"prune",exitCode:0,data:await Et(t,c=>{let m=yl(c,o);return Jh(c,m),lC(m,true)})}}s(cC,"doPrune");function mz(e){let t=Ve(e)??zi(),r=Object.entries(t.topics).map(([o,i])=>({id:o,summary:i.summary})).sort((o,i)=>o.id<i.id?-1:1),n=fu(e)?void 0:gu();return {subcommand:"topics",exitCode:0,data:{topics:r,...n?{setupHint:n}:{}}}}s(mz,"doTopics");function pz(e,t){if(e===void 0||e==="")return Me("show","Usage: agentsmesh lessons show <topic|lesson-id>",2);let r=Ve(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=nz(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=oz(e,r.lessons[e],r.triggers);return {subcommand:"show",exitCode:0,data:{subject:e,markdown:n}}}return Me("show",`Unknown topic or lesson id: ${e}. Run \`agentsmesh lessons topics\` to list topics, or \`agentsmesh lessons journal\` to list lesson ids.`,1)}s(pz,"doShow");function uz(e){let t=Ve(e)??zi(),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=fu(e)?void 0:gu();return {subcommand:"journal",exitCode:0,data:{entries:r,...n?{setupHint:n}:{}}}}s(uz,"doJournal");function dz(e,t){let r=Ve(t)??zi(),n=QH(yU(t),r),o=XH(_U(t));return {subcommand:"stats",exitCode:0,format:e.json===true?"json":"text",data:{report:n,captureReport:o,hasLog:hU(t),hasCaptureLog:RU(t),telemetryEnabled:$i()}}}s(dz,"doStats");function fz(e){let t;try{t=Ve(e)??zi();}catch(i){return {subcommand:"validate",exitCode:1,data:{ok:false,findings:[{level:"error",code:"CORRUPT_GRAPH",message:`lessons.json could not be parsed (${i instanceof Error?i.message:String(i)}). 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=Gi(e)??void 0,n=xo(t,{knownPaths:r}),o={ok:n.ok,findings:n.findings};return {subcommand:"validate",exitCode:n.ok?0:1,data:o}}s(fz,"doValidate");async function gz(e){let t=await goe(),{output:r}=await YH(t,e);return {subcommand:"hook",exitCode:0,data:{output:r}}}s(gz,"doHook");var doe=1e6;async function foe(e,t=doe){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(foe,"readBoundedStream");async function goe(){return process.stdin.isTTY===true?"":foe(process.stdin)}s(goe,"readStdin");var hoe=["json","verbose","help"],yoe={query:["file","cmd","command","keyword","format","top","all","max-tokens","session","no-dedup","ids"],add:["rule","topic","trigger-file","trigger-cmd","trigger-kw","evidence","rationale","new-topic","topic-summary"],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 hz(e,t){let r=yoe[e];if(r===void 0)return null;let n=new Set([...r,...hoe]);for(let o of Object.keys(t))if(!n.has(o))return `Unknown flag --${o} for \`lessons ${e}\`.
|
|
654
|
-
Usage: ${
|
|
655
|
-
`);return}if(!e.hasLog&&!e.hasCaptureLog){
|
|
656
|
-
`);return;case "merge-driver":return;case "query":return
|
|
657
|
-
`);return}if(e.lessons.length===0){y.info("(no matches)");return}let r=s((n,o)=>e.showIds===true?`[${n}] ${o}`:o,"withId");if(t==="md")e.lessons.forEach((n,o)=>y.info(`${o+1}. ${r(n.id,n.rule)}`));else for(let n of e.lessons)y.info(r(n.id,n.rule));e.totalMatches!==void 0&&e.totalMatches>e.lessons.length&&y.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&&y.warn(`(${e.suppressed} already shown this session \u2014 deduped; pass --no-dedup to include)`);}s(
|
|
699
|
+
`}s(z1,"renderLessonMarkdown");function Me(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(Me,"errorResult");function V1(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(V1,"validatePositiveIntFlag");function uie(e){let t=e.format;return t===void 0||t==="plain"||t==="md"||t==="json"?null:"Invalid --format: expected plain|md|json."}s(uie,"validateFormatFlag");function Ty(...e){let t=e.filter(r=>r!==void 0&&r.length>0);return t.length>0?t.join(`
|
|
700
|
+
`):void 0}s(Ty,"mergeWarnings");function die(e){if(existsSync(join(e,".agentsmesh")))return;let t=xh(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(die,"strayDirWarning");function FC(e,t,r){let n=V1(e,"top");if(n!==null)return Me("query",n,2);let o=V1(e,"max-tokens");if(o!==null)return Me("query",o,2);let i=uie(e);if(i!==null)return Me("query",i,2);let a=B1(e),l=K1(e);if(l.file===void 0&&l.command===void 0&&l.keyword===void 0)return Me("query","Recall needs a predicate: pass at least one of --file <path-about-to-edit>, --cmd <command-about-to-run>, or --keyword <text>.",2);let c=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,m=l.file===void 0?l:{...l,file:ky(l.file,t)},p=uK(t)??void 0,u=Ih(t);if(u.status==="corrupt"){let G={lessons:[],query:m,autoMigrated:r,totalMatches:0,warning:Ty(`lessons.json is unreadable (corrupt) \u2014 recall returned no lessons. Run \`agentsmesh lessons validate\`. (${u.error.message})`,p)};return {subcommand:"query",exitCode:0,format:a,data:G}}if(u.status==="newer-version"){let G={lessons:[],query:m,autoMigrated:r,totalMatches:0,warning:Ty(`lessons.json is version ${u.version}, newer than this build supports (${Tu}) \u2014 recall returned no lessons. Upgrade agentsmesh to read it.`,p)};return {subcommand:"query",exitCode:0,format:a,data:G}}if(u.status==="absent"){let G=die(t),Y=Ty(G??ju(),c,p);return {subcommand:"query",exitCode:0,format:a,data:{lessons:[],query:m,autoMigrated:r,totalMatches:0,warning:Y}}}let f=u.graph,g=Em(f,m),h=Iy({explicit:$t(e,"session")??void 0,disabled:e["no-dedup"]===true}),_=h===null?g:Ly(h,g),S=Mh(t),R=e.all===true?void 0:gd(e,"top")??S.limit,I=e.all===true?void 0:gd(e,"max-tokens")??S.maxTokens,w=Om(f,m,_,{limit:R,maxTokens:I});h!==null&&Cy(h,w.map(({id:G})=>G)),EC(t,f,m,g,w,{bypassed:e.all===true});let D=w.map(({id:G,lesson:Y,score:ee})=>({id:G,rule:Y.rule,topics:[...Y.topics],triggers:[...Y.triggers],evidence:[...Y.evidence],score:ee})),P=g.length-_.length,K={lessons:D,query:m,autoMigrated:r,totalMatches:g.length,...P>0?{suppressed:P}:{},...e.ids===true?{showIds:true}:{},...(()=>{let G=Ty(c,p);return G?{warning:G}:{}})()};return {subcommand:"query",exitCode:0,format:a,data:K}}s(FC,"doQuery");function J1(e){return typeof e=="object"&&e!==null&&e.status==="deprecated"}s(J1,"isDeprecated");function fie(e,t,r){let n=Lh(t),o=Lh(r);if(n===o)return t;if(e!==void 0){let l=Lh(e);if(n===l)return r;if(o===l)return t}let i=J1(t),a=J1(r);return i!==a?i?t:r:n>o?t:r}s(fie,"pick");function MC(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?fie(e[o],i,a):i??a;}return n}s(MC,"mergeRecord");function Y1(e,t,r){return {version:t.version,lessons:MC(e.lessons,t.lessons,r.lessons),topics:MC(e.topics,t.topics,r.topics),triggers:MC(e.triggers,t.triggers,r.triggers)}}s(Y1,"mergeGraphs");function GC(e){try{let t=xl.safeParse(JSON.parse(readFileSync(e,"utf8")));return t.success?t.data:null}catch{return null}}s(GC,"readGraphFile");function $C(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=GC(t),a=GC(r),l=GC(n);if(i===null||a===null||l===null)return o;let c=Y1(i,a,l);return Kn(c).ok?(writeFileSync(r,Nu(c),"utf8"),{subcommand:"merge-driver",exitCode:0,data:{merged:true}}):o}s($C,"doMergeDriver");function X1(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(X1,"untriggerLesson");function Py(e){return (e instanceof Error?e.message:String(e)).replace(/^(mutateLessonsGraph|mergeLessons):\s*/,"")}s(Py,"errMessage");async function jC(e,t,r){let n=t!==void 0&&t.length>0?t:null,o=$t(e,"rule")??n,i=$t(e,"topic");if(o===null)return Me("add",`Missing rule \u2014 pass it positionally (\`add "<rule>"\`) or via --rule.${_d()}`,2);if(i===null)return Me("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).${_d()}`,2);let a=existsSync(join(r,".agentsmesh"))?null:xh(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=$u(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.";try{return {subcommand:"add",exitCode:0,data:{...await fd(r,{rule:o,topic:i,triggers:{files:xy(e,"trigger-file"),commands:xy(e,"trigger-cmd"),keywords:xy(e,"trigger-kw")},evidence:U1(e,"evidence"),rationale:$t(e,"rationale")??void 0},{allowNewTopic:e["new-topic"]===!0,topicSummary:$t(e,"topic-summary")??void 0}),...l?{locationNote:l}:{},...c?{activationNote:c}:{}}}}catch(m){return m instanceof Bn?Me("add",`Unknown topic: ${m.topic}. Pass --new-topic --topic-summary "..." to create it.`,1):m instanceof li||m instanceof ci||m instanceof ai?Me("add",`${m.message}${_d()}`,2):Me("add",Py(m),1)}}s(jC,"doAdd");async function UC(e,t,r){if(t===void 0||t==="")return Me("deprecate","Usage: agentsmesh lessons deprecate <id> [--superseded-by <id>]",2);let n=$t(e,"superseded-by");try{let{id:o,supersededBy:i}=await by(r,t,n);return {subcommand:"deprecate",exitCode:0,data:{id:o,supersededBy:i}}}catch(o){let i=Py(o),a=i.startsWith("Unknown lesson")?" Run `agentsmesh lessons journal` to list lesson ids (or `lessons query --ids` to see what recalled).":"";return Me("deprecate",`${i}${a}`,1)}}s(UC,"doDeprecate");async function BC(e,t,r){if(e===void 0||e===""||t===void 0||t==="")return Me("untrigger","Usage: agentsmesh lessons untrigger <lesson-id> <trigger-id>",2);try{return {subcommand:"untrigger",exitCode:0,data:await Ot(r,i=>X1(i,e,t))}}catch(n){return Me("untrigger",Py(n),1)}}s(BC,"doUntrigger");async function KC(e,t,r){if(e===void 0||e===""||t===void 0||t==="")return Me("merge","Usage: agentsmesh lessons merge <loser-id> <keeper-id>",2);try{return {subcommand:"merge",exitCode:0,data:await Ey(r,e,t)}}catch(n){return Me("merge",Py(n),1)}}s(KC,"doMerge");async function WC(e,t){let r=e["dry-run"]===true,n=await Oy(t,{dryRun:r});return {subcommand:"strip-markers",exitCode:0,data:{changedIds:n.changedIds,changedCount:n.changedCount,dryRun:r}}}s(WC,"doStripMarkers");async function HC(e,t){let r=e.force===true,n=e.merge===true;if(!r&&!n&&existsSync(Vo(t)))return Me("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(je(t).index))return Me("import-md","No legacy lessons store found (.agentsmesh/lessons/index.yaml) \u2014 nothing to migrate.",1);let o=$t(e,"migrated-at")??W1(),i=await Lm(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(HC,"doImportMd");function zC(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(zC,"toPruneData");async function VC(e,t){let r=gd(e,"cap");if(r!==null&&(!Number.isInteger(r)||r<1))return Me("prune","Invalid --cap: expected a positive integer.",2);let n=ca(t)??void 0,o={...r!==null?{cap:r}:{},...n?{knownPaths:n}:{}};if(e.apply!==true){let c=Ye(t)??ha();return {subcommand:"prune",exitCode:0,data:zC(Ul(c,o),false)}}let i=Ye(t)??ha(),a=Ul(i,o);return ud(a)?{subcommand:"prune",exitCode:0,data:zC(a,true)}:{subcommand:"prune",exitCode:0,data:await Ot(t,c=>{let m=Ul(c,o);return Ry(c,m),zC(m,true)})}}s(VC,"doPrune");function q1(e){let t=Ye(e)??ha(),r=Object.entries(t.topics).map(([o,i])=>({id:o,summary:i.summary})).sort((o,i)=>o.id<i.id?-1:1),n=$u(e)?void 0:ju();return {subcommand:"topics",exitCode:0,data:{topics:r,...n?{setupHint:n}:{}}}}s(q1,"doTopics");function Z1(e,t){if(e===void 0||e==="")return Me("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=H1(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=z1(e,r.lessons[e],r.triggers);return {subcommand:"show",exitCode:0,data:{subject:e,markdown:n}}}return Me("show",`Unknown topic or lesson id: ${e}. Run \`agentsmesh lessons topics\` to list topics, or \`agentsmesh lessons journal\` to list lesson ids.`,1)}s(Z1,"doShow");function eV(e){let t=Ye(e)??ha(),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=$u(e)?void 0:ju();return {subcommand:"journal",exitCode:0,data:{entries:r,...n?{setupHint:n}:{}}}}s(eV,"doJournal");function tV(e,t){let r=Ye(t)??ha(),n=j1(oK(t),r),o=G1(iK(t));return {subcommand:"stats",exitCode:0,format:e.json===true?"json":"text",data:{report:n,captureReport:o,hasLog:nK(t),hasCaptureLog:sK(t),telemetryEnabled:la()}}}s(tV,"doStats");function rV(e){let t;try{t=Ye(e)??ha();}catch(i){return {subcommand:"validate",exitCode:1,data:{ok:false,findings:[{level:"error",code:"CORRUPT_GRAPH",message:`lessons.json could not be parsed (${i instanceof Error?i.message:String(i)}). 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=ca(e)??void 0,n=Kn(t,{knownPaths:r}),o={ok:n.ok,findings:n.findings};return {subcommand:"validate",exitCode:n.ok?0:1,data:o}}s(rV,"doValidate");async function nV(e){let t=await kie(),{output:r}=await M1(t,e);return {subcommand:"hook",exitCode:0,data:{output:r}}}s(nV,"doHook");var Sie=1e6;async function Rie(e,t=Sie){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(Rie,"readBoundedStream");async function kie(){return process.stdin.isTTY===true?"":Rie(process.stdin)}s(kie,"readStdin");var Iie=["json","verbose","help"],Lie={query:["file","cmd","command","keyword","format","top","all","max-tokens","session","no-dedup","ids"],add:["rule","topic","trigger-file","trigger-cmd","trigger-kw","evidence","rationale","new-topic","topic-summary"],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 oV(e,t){let r=Lie[e];if(r===void 0)return null;let n=new Set([...r,...Iie]);for(let o of Object.keys(t))if(!n.has(o))return `Unknown flag --${o} for \`lessons ${e}\`.
|
|
701
|
+
Usage: ${fi[e].usage}`;return null}s(oV,"validateLessonsFlags");async function Cie(e,t){if(e==="import-md")return false;if(e==="query"||e==="hook")try{return await ht(t)}catch{return false}return ht(t)}s(Cie,"migrateForSubcommand");async function sV(e,t,r){let n=t[0];if(n===void 0||n==="")return {subcommand:"help",exitCode:0,data:null};let o=oV(n,e);if(o!==null)return {subcommand:"help",exitCode:2,error:o,data:null};let i=await Cie(n,r);switch(n){case "query":return FC(e,r,i);case "add":return jC(e,t[1],r);case "topics":return q1(r);case "show":return Z1(t[1],r);case "deprecate":return UC(e,t[1],r);case "merge":return KC(t[1],t[2],r);case "untrigger":return BC(t[1],t[2],r);case "strip-markers":return WC(e,r);case "journal":return eV(r);case "validate":return rV(r);case "stats":return tV(e,r);case "prune":return VC(e,r);case "import-md":return HC(e,r);case "hook":return nV(r);case "merge-driver":return $C(t.slice(1));default:return {subcommand:"help",exitCode:2,error:`Unknown lessons subcommand: ${n}`,data:null}}}s(sV,"runLessons");se();se();function Dy(e){return `${(e*100).toFixed(1)}%`}s(Dy,"pct");function aV(e,t){if(t==="json"){process.stdout.write(`${JSON.stringify({...e.report,capture:e.captureReport},null,2)}
|
|
702
|
+
`);return}if(!e.hasLog&&!e.hasCaptureLog){Eie(e.telemetryEnabled);return}e.hasLog&&Oie(e.report),e.hasCaptureLog&&wie(e);}s(aV,"renderStats");function Eie(e){e?y.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.)"):y.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(Eie,"renderEmptyStatsHint");function Oie(e){let t=e.preloadBreakEven;y.info(`recalls: ${e.totalRecalls} no-match: ${Dy(e.noMatchRate)} sessions: ${t.sessions} bypassed(--all): ${e.bypassedRecalls}`),y.info(`match counts: ${e.matchCountHistogram.map(r=>`${r.bucket}=${r.count}`).join(" ")}`),y.info(`returned tokens: p50=${e.returnedTokens.p50} p90=${e.returnedTokens.p90} max=${e.returnedTokens.max}`),y.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)})`),y.info(`redundancy: ${Dy(e.redundancy.rate)} of delivered rule-tokens are intra-session repeats (coverage ${Dy(e.redundancy.coverage)})`),y.info(`reachability: keyword-only recalls ${Dy(e.reachability.keywordOnlyRecallRate)}, keyword-only-unreachable lessons ${e.reachability.keywordOnlyUnreachableLessons}`);}s(Oie,"renderRecallStats");function wie(e){let t=e.captureReport,r=t.byTriggerKind,n=t.total===0?"\u2014":(e.report.totalRecalls/t.total).toFixed(2);y.info(`captures: ${t.total} blocked: ${t.blocked} new: ${t.newLessons} upsert: ${t.upserts} new-topics: ${t.newTopics} warned: ${t.withWarnings}`),y.info(`capture triggers by kind: file=${r.file} cmd=${r.command} kw=${r.keyword}`),y.info(`recall:capture ratio: ${n} recalls per capture`);}s(wie,"renderCaptureStats");function lV(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){y.success(`Lessons graph already lean (cap ${e.cap}) \u2014 nothing to prune.`),iV(e.unreachableLessons);return}let i=e.applied?"Pruned":"Would prune";y.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)y.info(` trim ${a.id}: -${a.removedCount} \u2192 ${a.keptCount} kept`);for(let a of e.removedDeadGlobs)y.info(` dead-glob ${a.id}: -${a.removedCount} \u2192 ${a.keptCount} kept`);iV(e.unreachableLessons),e.applied||y.warn("Dry run \u2014 pass --apply to write. lessons.json is git-tracked, so prune is reversible.");}s(lV,"renderPrune");function iV(e){e.length!==0&&y.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(iV,"renderUnreachable");function cV(e){for(let t of e.findings){let r=`${t.level.toUpperCase()} ${t.code}: ${t.message}`;t.level==="error"?y.error(r):y.warn(r);}e.ok&&y.success("Lessons graph: ok.");}s(cV,"renderValidate");function pV(e){if(e.error!==void 0&&e.error.length>0){y.error(e.error);return}switch(e.subcommand){case "help":return Nie();case "hook":e.data.output.length>0&&process.stdout.write(`${e.data.output}
|
|
703
|
+
`);return;case "merge-driver":return;case "query":return bie(e.data,e.format);case "add":return Aie(e.data);case "topics":return xie(e.data);case "show":return Tie(e.data);case "deprecate":y.success(e.data.supersededBy===null?`Deprecated ${e.data.id}.`:`Superseded ${e.data.id} \u2192 ${e.data.supersededBy}.`);return;case "merge":e.exitCode===0&&y.success(`Merged ${e.data.loserId} \u2192 ${e.data.keeperId}.`);return;case "untrigger":y.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":y.success(`${e.data.dryRun?"Would strip":"Stripped"} legacy markers from ${e.data.changedCount} lesson${e.data.changedCount===1?"":"s"}.`);return;case "journal":return Pie(e.data);case "validate":return cV(e.data);case "prune":return lV(e.data);case "stats":return aV(e.data,e.format);case "import-md":return Die(e.data)}}s(pV,"renderLessons");function bie(e,t){if(e.autoMigrated&&y.warn("lessons.json was auto-migrated from index.yaml on first invocation."),e.warning!==void 0&&e.warning.length>0&&y.warn(e.warning),t==="json"){process.stdout.write(`${JSON.stringify(e,null,2)}
|
|
704
|
+
`);return}if(e.lessons.length===0){y.info("(no matches)");return}let r=s((n,o)=>e.showIds===true?`[${n}] ${o}`:o,"withId");if(t==="md")e.lessons.forEach((n,o)=>y.info(`${o+1}. ${r(n.id,n.rule)}`));else for(let n of e.lessons)y.info(r(n.id,n.rule));e.totalMatches!==void 0&&e.totalMatches>e.lessons.length&&y.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&&y.warn(`(${e.suppressed} already shown this session \u2014 deduped; pass --no-dedup to include)`);}s(bie,"renderQuery");function Aie(e){if(!e.isNewLesson){if(e.newTriggerIds.length>0){let t=e.newTriggerIds.length;y.success(`Updated lesson: ${e.id} (+${t} trigger${t===1?"":"s"})`);}else y.info(`Existing lesson: ${e.id} (no change)`);mV(e);return}y.success(`Added lesson: ${e.id}`),e.isNewTopic&&y.info(" created new topic"),e.newTriggerIds.length>0&&y.info(` new triggers: ${e.newTriggerIds.join(", ")}`),mV(e);}s(Aie,"renderAdd");function mV(e){e.locationNote!==void 0&&y.warn(e.locationNote),e.activationNote!==void 0&&y.warn(e.activationNote);for(let r of e.warnings)y.warn(`${r.code}: ${r.message}`);let t=e.autoPruned;t!==void 0&&y.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(mV,"renderGuardrails");function xie(e){if(e.topics.length===0)y.info("(no topics)");else for(let t of e.topics)y.info(`${t.id} ${t.summary}`);e.setupHint!==void 0&&y.warn(e.setupHint);}s(xie,"renderTopics");function Tie(e){process.stdout.write(e.markdown);}s(Tie,"renderShow");function Pie(e){for(let t of e.entries)y.info(`${t.createdAt} ${t.id} ${t.rule}`);e.setupHint!==void 0&&y.warn(e.setupHint);}s(Pie,"renderJournal");function Die(e){y.success(`Imported lessons: topics=${e.topicCount} lessons=${e.lessonCount} triggers=${e.triggerCount}`),y.info(` graph: ${e.wroteGraphPath.replaceAll("\\","/")}`),e.deletedPaths.length>0&&y.info(` removed legacy: ${e.deletedPaths.length} path${e.deletedPaths.length===1?"":"s"}`);}s(Die,"renderImportMd");function Nie(){y.info("Usage: agentsmesh lessons <subcommand> [args] [flags]"),y.info(""),y.info("Subcommands:");for(let e of Object.values(fi)){let t=e.usage.replace(/^agentsmesh lessons /,""),r=e.summary!==void 0?` (${e.summary})`:"";y.info(` ${t}${r}`);}}s(Nie,"printHelp");function st(e){let t={};for(let[r,n]of Object.entries(e))t[r]=Array.isArray(n)?n[n.length-1]:n;return t}s(st,"narrowFlags");var uV={generate:s(async(e,t)=>{let r=st(e),n=await gm(r,void 0,{printMatrix:r.json!==true});at("generate",n,r,()=>hm(n));},"generate"),init:s(async(e,t)=>{let r=await IK(process.cwd(),{yes:e.yes===true,global:e.global===true,lessons:e.lessons===true});at("init",r,st(e),()=>CK(r));},"init"),import:s(async(e,t)=>{let r=st(e),n=await wK(r);at("import",n,r,()=>BK(n));},"import"),diff:s(async(e,t)=>{let r=st(e),n=await AK(r);at("diff",n,r,()=>KK(n));},"diff"),lint:s(async(e,t)=>{let r=st(e),n=await $K(r);at("lint",n,r,()=>jK(n));},"lint"),check:s(async(e,t)=>{let r=st(e),n=await VK(r);at("check",n,r,()=>UK(n));},"check"),merge:s(async(e,t)=>{let r=st(e),n=await XK(r);at("merge",n,r,()=>WK(n));},"merge"),matrix:s(async(e,t)=>{let r=st(e),n=await wu(r);at("matrix",n,r,()=>Au(n,{verbose:r.verbose===true}));},"matrix"),watch:s(async(e,t)=>{let r=st(e);if(r.json===true){Jl("watch",{success:false,error:"--json is not supported with watch"}),process.exit(1);return}let n=await zK(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=st(e);r.json===true&&(r.force=true);let n=await nz(r,t,process.cwd());at("install",n,r,()=>oz(n));},"install"),uninstall:s(async(e,t)=>{let r=st(e);r.json===true&&(r.force=true);let n=await _z(r,t,process.cwd());at("uninstall",n,r,()=>Sz(n));},"uninstall"),refresh:s(async(e,t)=>{let r=st(e),n=await bz(r,t,process.cwd());at("refresh",n,r,()=>Az(n));},"refresh"),installs:s(async(e,t)=>{let r=st(e),n=await Tz(r,t,process.cwd());at("installs",n,r,()=>Pz(n));},"installs"),plugin:s(async(e,t)=>{let r=st(e),n=await Fz(r,t,process.cwd());at("plugin",n,r,()=>Mz(n));},"plugin"),target:s(async(e,t)=>{let r=st(e),n=await zz(r,t,process.cwd());at("target",n,r,()=>Vz(n));},"target"),convert:s(async(e,t)=>{let r=st(e),n=await uy(r);at("convert",n,r,()=>Jz(n));},"convert"),mcp:s(async(e,t)=>{await v1(st(e));},"mcp"),lessons:s(async(e,t)=>{let r=await sV(e,t,process.cwd());at("lessons",r,st(e),()=>pV(r)),r.exitCode!==0&&process.exit(r.exitCode);},"lessons")};var Mie=new Set(["json","verbose","help"]);function JC(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(JC,"setFlag");function Gie(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(Mie.has(a)){JC(t,a,true);continue}let l=e[o+1];l===void 0||l.startsWith("--")?JC(t,a,true):(JC(t,a,l),o++);continue}n==="help"?n=i:r.push(i);}return {command:n,flags:t,args:r}}s(Gie,"parseArgs");var $ie=QC(uV);async function jie(e){let{command:t,flags:r,args:n}=e;if(t==="help"){Gy();return}if(t==="version"){nE();return}if(r.help===true){Rd(t,n);return}r.json===true&&ZC(),await $ie.route(t,r,n);}s(jie,"main");function Uie(){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(Uie,"isMainModule");if(Uie()){let e=Gie(process.argv.slice(2));jie(e).catch(t=>oE(t instanceof Error?t:new Error(String(t)),{verbose:e.flags.verbose===true,json:e.flags.json===true,command:e.command}));}export{Gie as parseArgs};
|