agentsmesh 0.28.0 → 0.29.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 +16 -0
- package/README.md +59 -10
- package/dist/canonical.d.ts +2 -2
- package/dist/canonical.js +63 -4
- package/dist/canonical.js.map +1 -1
- package/dist/cli.js +180 -180
- package/dist/engine.d.ts +2 -2
- package/dist/engine.js +75 -5
- package/dist/engine.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +77 -7
- package/dist/index.js.map +1 -1
- package/dist/{schema-CzaoYJlG.d.ts → schema-CH_JJep8.d.ts} +5 -0
- package/dist/{target-descriptor-ItDY3NR0.d.ts → target-descriptor-CaLUz7SR.d.ts} +1 -1
- package/dist/targets.d.ts +3 -3
- package/package.json +1 -1
- package/schemas/agentsmesh.json +11 -0
package/dist/cli.js
CHANGED
|
@@ -1,46 +1,38 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {resolve,join,sep,dirname,relative,basename,extname,normalize,win32,posix,isAbsolute}from'path';import {rm as rm$1,readFile,readdir,stat,mkdir,writeFile,rename,lstat,unlink,chmod,access,realpath,readlink,symlink,mkdtemp,cp as cp$1,copyFile}from'fs/promises';import {setTimeout as setTimeout$1}from'timers/promises';import {realpathSync,rmSync,existsSync,mkdtempSync,readdirSync,symlinkSync,mkdirSync,readFileSync,writeFileSync,renameSync,constants,statSync,appendFileSync}from'fs';import {z as z$1}from'zod';import {stringify,parse,parseDocument,YAMLSeq,YAMLMap}from'yaml';import {homedir,tmpdir,hostname}from'os';import {fileURLToPath,URL,pathToFileURL}from'url';import {execFile}from'child_process';import {promisify}from'util';import*as
|
|
2
|
+
import {resolve,join,sep,dirname,relative,basename,extname,normalize,win32,posix,isAbsolute}from'path';import {rm as rm$1,readFile,readdir,stat,mkdir,writeFile,rename,lstat,unlink,chmod,access,realpath,readlink,symlink,mkdtemp,cp as cp$1,copyFile}from'fs/promises';import {setTimeout as setTimeout$1}from'timers/promises';import {realpathSync,rmSync,existsSync,mkdtempSync,readdirSync,symlinkSync,mkdirSync,readFileSync,writeFileSync,renameSync,constants,statSync,appendFileSync}from'fs';import {z as z$1}from'zod';import {stringify,parse,parseDocument,YAMLSeq,YAMLMap}from'yaml';import {homedir,tmpdir,hostname}from'os';import {fileURLToPath,URL,pathToFileURL}from'url';import {execFile}from'child_process';import {promisify}from'util';import*as cO from'tar';import {createHash}from'crypto';import {parse as parse$1}from'smol-toml';import {Buffer as Buffer$1}from'buffer';import {createRequire}from'module';import*as Yt from'@clack/prompts';import D7 from'picomatch';import {createTwoFilesPatch}from'diff';import vte from'chokidar';import*as rz 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 wE=Object.defineProperty;var s=(e,t)=>wE(e,"name",{value:t,configurable:true});var d=(e,t)=>()=>(e&&(t=e(e=0)),t);var l_=(e,t)=>{for(var r in t)wE(e,r,{get:t[r],enumerable:true});};function _J(){let e=process.env.NO_COLOR;return e!==void 0&&e!==""}function SJ(){let e=process.env.FORCE_COLOR;if(e!==void 0)return e!=="0"&&e!=="false"}function ki(e=process.stdout){let t=SJ();return t!==void 0?t:_J()?false:e.isTTY===true}var fp=d(()=>{s(_J,"noColorRequested");s(SJ,"forceColorRequested");s(ki,"colorEnabled");});function TE(){xa=true;}function xE(){AE=true;}function $d(){return AE?process.stderr:process.stdout}function sc(e){$d().write(e);}function gp(e,t,r){return ki(r)?`${e}${t}${ic.reset}`:t}function RJ(e,t){let r=[...e].length;return e+" ".repeat(Math.max(0,t-r))}var ic,xa,AE,S,ue=d(()=>{fp();ic={green:"\x1B[32m",red:"\x1B[31m",yellow:"\x1B[33m",cyan:"\x1B[36m",reset:"\x1B[0m"},xa=false,AE=false;s(TE,"muteLogger");s(xE,"redirectLoggerToStderr");s($d,"outStream");s(sc,"out");s(gp,"c");s(RJ,"pad");S={info(e){xa||sc(gp(ic.cyan,e,$d())+`
|
|
3
3
|
`);},warn(e){xa||process.stderr.write(gp(ic.yellow,"\u26A0 ",process.stderr)+e+`
|
|
4
4
|
`);},error(e){xa||process.stderr.write(gp(ic.red,"\u2717 ",process.stderr)+e+`
|
|
5
|
-
`);},success(e){xa||sc(gp(ic.green,"\u2713 "
|
|
6
|
-
`);},debug(e){xa||process.env.AGENTSMESH_DEBUG==="1"&&sc(gp(ic.cyan,"[debug] "
|
|
5
|
+
`);},success(e){xa||sc(gp(ic.green,"\u2713 ",$d())+e+`
|
|
6
|
+
`);},debug(e){xa||process.env.AGENTSMESH_DEBUG==="1"&&sc(gp(ic.cyan,"[debug] ",$d())+e+`
|
|
7
7
|
`);},table(e){if(xa||e.length===0)return;let t=e[0].length,r=[];for(let o=0;o<t;o++){let i=0;for(let a=0;a<e.length;a++){let l=[...e[a][o]].length;l>i&&(i=l);}r[o]=i;}let n="+"+r.map(o=>"-".repeat(o+2)).join("+")+"+";sc(n+`
|
|
8
|
-
`);for(let o=0;o<e.length;o++){let a="| "+e[o].map((l,c)=>
|
|
8
|
+
`);for(let o=0;o<e.length;o++){let a="| "+e[o].map((l,c)=>RJ(l,r[c])).join(" | ")+" |";sc(a+`
|
|
9
9
|
`);}sc(n+`
|
|
10
|
-
`);}};});var es,ln,cc,Qn,mc,er,ts=d(()=>{es=class extends Error{static{s(this,"AgentsMeshError");}code;constructor(t,r,n){super(r,n),this.name="AgentsMeshError",this.code=t;}},ln=class extends es{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;}},cc=class extends es{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;}},Qn=class extends es{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;}},mc=class extends es{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;}},er=class extends es{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
|
|
11
|
-
`)}function l_(e){return OJ.has(extname(e).toLowerCase())?493:void 0}var pc,CJ,EJ,OJ,Hd=d(()=>{pc="\uFEFF",CJ=new Set([".md",".mdc",".mdx",".markdown",".txt",".json",".jsonc",".yaml",".yml",".toml",".ini",".sh",".bash",".zsh",".ps1",".js",".mjs",".cjs",".ts",".tsx",".html",".css"]),EJ=new Set([".gitignore",".cursorignore",".cursorindexingignore",".aiignore",".agentignore",".clineignore",".geminiignore",".codeiumignore",".continueignore",".copilotignore",".windsurfignore",".junieignore",".kiroignore",".rooignore",".antigravityignore"]);s(Kd,"shouldNormalizeLineEndings");s(Wd,"normalizeLineEndings");OJ=new Set([".sh",".bash",".zsh"]);s(l_,"executableModeFor");});function $E(e){if(e.length>NJ)return true;let t=new Map;for(let r of e){let n=(t.get(r)??0)+1;if(n>=vJ)return true;t.set(r,n);}return false}async function Ci(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 er(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($E(u))continue;l.push(...await Ci(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 er(e,`Failed to read directory ${e}: ${l.message}. Check permissions.`,{cause:a,errnoCode:l.code})}}async function B(e,t){let r=t??[basename(e)];try{let n=await readdir(e,{withFileTypes:!0}),o=[];for(let i of n){if(i.isSymbolicLink())continue;let a=join(e,i.name);if(i.isDirectory()){let l=[...r,i.name];if($E(l))continue;o.push(...await B(a,l));}else i.isFile()&&o.push(a);}return o}catch(n){let o=n;if(o.code==="ENOENT"||o.code==="ENOTDIR"||o.code==="EACCES")return [];throw new er(e,`Failed to read directory ${e}: ${o.message}. Check permissions.`,{cause:n,errnoCode:o.code})}}async function c_(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 NJ,vJ,m_=d(()=>{ts();NJ=32,vJ=3;s($E,"shouldSkipRecursiveBranch");s(Ci,"readDirRecursive");s(B,"readDirRecursiveNoSymlinks");s(c_,"ensureCacheSymlink");});async function p_(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&&GJ.has(l))||i>=n-1)throw a;await setTimeout$1(o*2**i);}}var GJ,jE=d(()=>{GJ=new Set(["EPERM","EACCES","EBUSY","ENOTEMPTY","EEXIST"]);s(p_,"renameWithRetry");});async function I(e){try{let t=await readFile(e,"utf-8");return t.startsWith(pc)?t.slice(pc.length):t}catch(t){let r=t;if(r.code==="ENOENT")return null;throw new er(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 er(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 er||l.code!=="ENOENT")throw l}let o=`${e}.tmp`,i=Kd(e)?Wd(t):t,a=r?.mode??l_(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 er(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(()=>{ts();Hd();m_();Hd();jE();s(I,"readFileSafe");s(L,"writeFileAtomic");s(j,"exists");s(O,"mkdirp");});function Bt(e){return hp.includes(e)}var hp,WE=d(()=>{hp=["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(Bt,"isBuiltinTargetId");});var Ue,u_,cn=d(()=>{WE();Ue=hp,u_="codex-cli";});var HE,Or,uc,VJ,_p,JJ,YJ,yp,XJ,QJ,Da,rs=d(()=>{cn();HE=["rules","commands","agents","skills","mcp","hooks","ignore","permissions"],Or=z$1.enum(Ue),uc=z$1.enum(HE),VJ=z$1.enum(["rules","commands","agents","skills"]),_p=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(),JJ=z$1.object({name:z$1.string(),source:z$1.string(),version:z$1.string().optional(),target:Or.optional(),as:VJ.optional(),features:z$1.array(uc),path:z$1.string().optional(),pick:_p.optional()}),YJ=z$1.object({strategy:z$1.enum(["merge","lock","last-wins"]).default("merge"),lock_features:z$1.array(z$1.string()).default([])}),yp=z$1.union([z$1.boolean(),z$1.object({project:z$1.boolean().optional(),global:z$1.boolean().optional()}).strict()]),XJ=z$1.object({commands_to_skills:z$1.object({"codex-cli":yp.optional()}).passthrough().optional(),agents_to_skills:z$1.object({"gemini-cli":yp.optional(),cline:yp.optional(),"codex-cli":yp.optional(),windsurf:yp.optional()}).passthrough().optional()}).strict().optional(),QJ=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(),Da=z$1.object({version:z$1.literal(1),targets:z$1.array(Or).default([...Ue]),features:z$1.array(uc).default([...HE]),extends:z$1.array(JJ).default([]),overrides:z$1.record(z$1.string(),z$1.record(z$1.string(),z$1.unknown())).default({}),collaboration:YJ.default({strategy:"merge",lock_features:[]}),conversions:XJ,plugins:z$1.array(QJ).default([]),pluginTargets:z$1.array(z$1.string().regex(/^[a-z][a-z0-9-]*$/)).default([])});});async function eY(e){let t=resolve(e);for(;;){let r=join(t,f_);if(await j(r))return r;let n=dirname(t);if(n===t)return null;t=n;}}async function tY(e){let t=await I(e);if(t===null)throw new ln(e);let r=parse(t),n=Da.safeParse(r);if(!n.success){let o=n.error.issues.map(i=>i.message);throw new cc(e,o,{cause:n.error})}return n.data}function d_(e,t){let r={...e};for(let[n,o]of Object.entries(t)){if(o==null||rY.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]=d_(i,o):r[n]=o;}return r}function nY(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=d_(r.overrides??{},t.overrides)),typeof t.conversions=="object"&&t.conversions!==null&&!Array.isArray(t.conversions)&&(r.conversions=d_(r.conversions??{},t.conversions)),Array.isArray(t.extends)&&t.extends.length>0&&(r.extends=[...e.extends??[],...t.extends]),r}async function Vd(e){let t=join(e,f_),r=await tY(t),n=join(e,ZJ),o=await I(n);if(o!==null){let i=parse(o);if(typeof i=="object"&&i!==null&&!Array.isArray(i)){let a=nY(r,i),l=Da.safeParse(a);if(l.success)r=l.data;else {let c=l.error.issues.map(m=>m.message).join("; ");S.warn(`Ignoring invalid agentsmesh.local.yaml at ${n}: ${c}. Using project config instead.`);}}}return {config:r,configDir:e}}async function Jd(e){let t=await eY(e);if(t===null)throw new ln(join(e,f_));return Vd(dirname(t))}var f_,ZJ,rY,Yd=d(()=>{b();fe();ts();rs();f_="agentsmesh.yaml",ZJ="agentsmesh.local.yaml";s(eY,"findConfigPath");s(tY,"loadConfig");rY=new Set(["__proto__","constructor","prototype"]);s(d_,"deepMergeObjects");s(nY,"mergeLocalConfig");s(Vd,"loadConfigFromExactDir");s(Jd,"loadConfigFromDir");});function Na(e,t="project"){if(t==="project")return {scope:t,rootBase:e,configDir:e,canonicalDir:join(e,".agentsmesh")};let r=homedir(),n=join(r,".agentsmesh");return {scope:t,rootBase:r,configDir:n,canonicalDir:n}}async function _e(e,t="project"){if(t==="project"){let{config:n,configDir:o}=await Jd(e);return {config:n,context:{scope:t,rootBase:o,configDir:o,canonicalDir:join(o,".agentsmesh")}}}let r=Na(e,t);try{let{config:n}=await Vd(r.configDir);return {config:n,context:r}}catch(n){throw n instanceof ln?new ln(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(()=>{Yd();ts();s(Na,"resolveScopeContext");s(_e,"loadScopedConfig");});function Ei(e){return e.replace(sY,(t,r,n,o)=>`${r}***@${o}`)}var sY,Xd=d(()=>{sY=/([a-zA-Z][a-zA-Z0-9+.-]*:\/\/)([^/@\s"'<>]+)@([^\s"'<>]+)/g;s(Ei,"redactUrlSecrets");});function JE(){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 YE(e){let t;try{t=new URL(e);}catch{return false}let{http:r,file:n}=JE(),o=["https:","ssh:"];return r&&o.push("http:"),n&&o.push("file:"),o.includes(t.protocol)}function Qd(){let{http:e,file:t}=JE(),r=["https","ssh"];return e&&r.push("http"),t&&r.push("file"),r.join(":")}function Sp(e){if(!YE(e))throw new Error(`agentsmesh refuses a git remote with a disallowed transport: "${Ei(e)}". Allowed: https, ssh. Set AGENTSMESH_ALLOW_INSECURE_GIT=1 to permit http, AGENTSMESH_ALLOW_LOCAL_GIT=1 to permit file.`)}function XE(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 QE(e){let t=XE(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 qE(e){let t=XE(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 ZE(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||!YE(n)?null:{url:n,ref:o}}function va(e){let t=QE(e);if(t)return {kind:"github",...t};let r=qE(e);if(r)return {kind:"gitlab",...r};let n=ZE(e);return n?{kind:"git",...n}:null}function h_(e){return va(e)!==null}var Fa=d(()=>{Xd();s(JE,"gitProtocolOptIns");s(YE,"isAllowedGitProtocol");s(Qd,"gitAllowProtocolEnv");s(Sp,"assertAllowedGitUrl");s(XE,"splitSourceRef");s(QE,"parseGithubSource");s(qE,"parseGitlabSource");s(ZE,"parseGitSource");s(va,"parseRemoteSource");s(h_,"isSupportedRemoteSource");});function rO(e,t){if(e.startsWith("-"))throw new Error(`agentsmesh refuses ${t} starting with "-" (option-injection guard): ${e}`)}async function qd(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,eO),u=`${m}.tmp`,f=join(u,eO);if(!r.refresh&&await tO(p))return S_(p);try{return await rm$1(u,{recursive:!0,force:!0}),await mkdir(u,{recursive:!0}),await dY(uY(e),f),e.ref&&await fY(f,e.ref),await rm$1(m,{recursive:!0,force:!0}),await p_(u,m),S_(p)}catch(g){if(await rm$1(u,{recursive:true,force:true}),r.allowOfflineFallback!==false&&await tO(p)){let y=g instanceof Error?g.message:String(g);return console.warn(`[agentsmesh] Remote fetch failed for ${t}; using cached version. Error: ${Ei(y)}`),S_(p)}throw g instanceof Error?Object.assign(new Error(Ei(g.message)),{cause:g.cause}):g}}async function S_(e){return {resolvedPath:e,version:await gY(e)}}async function tO(e){return j(e)}function uY(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 dY(e,t){rO(e,"clone-url"),Sp(e),await R_(["clone","-c","core.symlinks=false",e,t]);}async function fY(e,t){rO(t,"ref"),await R_(["checkout",t],e);}async function gY(e){return R_(["rev-parse","HEAD"],e)}async function R_(e,t){let{stdout:r}=await pY("git",e,{cwd:t,env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_ALLOW_PROTOCOL:Qd()}});return r.trim()}var pY,eO,I_=d(()=>{b();Xd();Fa();pY=promisify(execFile),eO="repo";s(rO,"ensureNotFlag");s(qd,"fetchGitRemoteExtend");s(S_,"readCachedRepo");s(tO,"hasCachedRepo");s(uY,"resolveCloneUrl");s(dY,"cloneRepo");s(fY,"checkoutRef");s(gY,"getHeadSha");s(R_,"runGit");});function SY(){let e=process.env.AGENTSMESH_MAX_TARBALL_MB;if(e===void 0||e==="")return Ip*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 ${Ip} MiB.`),Ip*1024*1024):t<oO||t>sO?(console.warn(`[agentsmesh] AGENTSMESH_MAX_TARBALL_MB=${t} is outside [${oO}, ${sO}]; using default ${Ip} MiB.`),Ip*1024*1024):t*1024*1024}async function IY(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 lO(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 cO(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 lO(e.org,e.repo,a);}catch(R){if(!i)throw R;return LY(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 k_(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 IY(R,RY);}catch(R){if(r.allowOfflineFallback!==false&&await j(p)){let w=await k_(p);if(w){let D=R instanceof Error?R.message:String(R);return console.warn(`[agentsmesh] Network failed for ${t}; using cached version. Error: ${Ei(D)}`),{resolvedPath:join(p,w),version:c}}}throw R instanceof Error?Object.assign(new Error(Ei(R.message)),{cause:R.cause}):R}await rm$1(p,{recursive:true,force:true}),await mkdir(p,{recursive:true});let h=join(p,"archive.tar.gz");await writeFile(h,g);try{await aO.extract({file:h,cwd:p,strict:!0,filter:s((R,k)=>{if(kY(R))return !1;let w=k&&"type"in k?k.type:void 0;return w==="File"||w==="Directory"},"filter")});}finally{await rm$1(h,{force:true}).catch(()=>{});}let y=await k_(p);if(!y)throw new Error(`Extend "${t}": archive has no top-level directory. Expected a single top-level directory inside the archive.`);return {resolvedPath:join(p,y),version:c}}async function k_(e){let r=(await readdir(e,{withFileTypes:true})).filter(n=>n.isDirectory()&&!n.name.startsWith("."));return r.length===1?r[0].name:null}function iO(e,t,r){return r?`https://x-access-token:${encodeURIComponent(r)}@github.com/${e}/${t}.git`:`https://github.com/${e}/${t}.git`}function kY(e){let t=e.replace(/\\/g,"/");return t.startsWith("/")||t.split("/").includes("..")}async function LY(e,t,r,n,o,i){let a=i?[iO(e.org,e.repo,i)]:[iO(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 qd(m,t,r,n,o)}catch(p){l=p;}}throw l instanceof Error?l:new Error("Failed to clone GitHub default branch")}var Ip,oO,sO,RY,mO=d(()=>{b();Xd();I_();Ip=500,oO=1,sO=4096;s(SY,"resolveMaxTarballBytes");RY=SY();s(IY,"readBoundedResponse");s(lO,"resolveLatestTag");s(cO,"fetchGithubRemoteExtend");s(k_,"findExtractTopDir");s(iO,"buildGithubCloneUrl");s(kY,"isZipSlipPath");s(LY,"fetchGithubDefaultBranch");});function OY(e){let t=va(e);return t?t.kind==="github"?dc("github",`${t.org}/${t.repo}`,t.tag):t.kind==="gitlab"?dc("gitlab",`${t.namespace}/${t.project}`,t.ref??"HEAD"):dc("git",t.url,t.ref??"HEAD"):null}async function dO(e,t){let r=OY(e);if(!r)return;let n=t??tr(),o=join(n,r);await rm$1(o,{recursive:true,force:true});}async function fO(e,t){let r=e??tr(),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 L_=d(()=>{kp();Fa();s(OY,"cacheKeyFromSource");s(dO,"cleanInstallCache");s(fO,"sweepStaleCache");});function dc(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>yO){let i=createHash("sha256").update(o).digest("hex").slice(0,16);o=`${o.slice(0,yO-18)}--${i}`;}return o}function tr(){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 fc(e,t,r={}){let n=va(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??tr();return fO(o).catch(()=>{}),n.kind==="github"?cO(n,t,r,o,dc,!e.includes("@")):qd(n,t,r,o,dc)}var yO,kp=d(()=>{I_();mO();Fa();L_();yO=80;s(dc,"buildCacheKey");s(tr,"getCacheDir");s(fc,"fetchRemoteExtend");});function xY(e){return e.startsWith("http://")||e.startsWith("https://")}async function gc(e,t,r={}){if(e.extends.length===0)return [];if(r.refreshCache===true&&e.extends.some(o=>h_(o.source))){let o=tr();await rm$1(o,{recursive:true,force:true}),await mkdir(o,{recursive:true});}let n=[];for(let o of e.extends){if(xY(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(h_(o.source)){let a=await fc(o.source,o.name,{cacheDir:tr(),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 Zd=d(()=>{b();kp();Fa();s(xY,"isOtherRemoteSource");s(gc,"resolveExtendPaths");});function T(e){if(e.indexOf("---")!==0)return {frontmatter:{},body:e.trim()};let r=e.indexOf("---",3);if(r===-1)return {frontmatter:{},body:e.trim()};let n=e.slice(3,r).trim(),o=e.slice(r+3).trim();return {frontmatter:n===""?{}:parse(n)??{},body:o}}function NY(e){if(e.indexOf("---")!==0)return e.trim();let t=e.indexOf("---",3);return t===-1?e.trim():e.slice(t+3).trim()}function mn(e,t){try{return {ok:!0,value:T(e)}}catch(r){let n=r instanceof Error?r.message:String(r);return {ok:false,error:new Error(`Failed to parse frontmatter in ${t}: ${n}`,{cause:r}),bodyFallback:NY(e)}}}function ns(e,t,r){let n=mn(e,t);if(n.ok)return n.value;if(r)return r(n.error,t),null;throw n.error}function x(e,t){return Object.keys(e).length===0?t:`---
|
|
10
|
+
`);}};});var es,ln,cc,Qn,mc,er,ts=d(()=>{es=class extends Error{static{s(this,"AgentsMeshError");}code;constructor(t,r,n){super(r,n),this.name="AgentsMeshError",this.code=t;}},ln=class extends es{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;}},cc=class extends es{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;}},Qn=class extends es{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;}},mc=class extends es{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;}},er=class extends es{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 Wd(e){let t=extname(e).toLowerCase();if(t.length>0)return bJ.has(t);let r=basename(e).toLowerCase();return AJ.has(r)}function Hd(e){return e.replace(/\r\n?/g,`
|
|
11
|
+
`)}function p_(e){return TJ.has(extname(e).toLowerCase())?493:void 0}var pc,bJ,AJ,TJ,zd=d(()=>{pc="\uFEFF",bJ=new Set([".md",".mdc",".mdx",".markdown",".txt",".json",".jsonc",".yaml",".yml",".toml",".ini",".sh",".bash",".zsh",".ps1",".js",".mjs",".cjs",".ts",".tsx",".html",".css"]),AJ=new Set([".gitignore",".cursorignore",".cursorindexingignore",".aiignore",".agentignore",".clineignore",".geminiignore",".codeiumignore",".continueignore",".copilotignore",".windsurfignore",".junieignore",".kiroignore",".rooignore",".antigravityignore"]);s(Wd,"shouldNormalizeLineEndings");s(Hd,"normalizeLineEndings");TJ=new Set([".sh",".bash",".zsh"]);s(p_,"executableModeFor");});function UE(e){if(e.length>GJ)return true;let t=new Map;for(let r of e){let n=(t.get(r)??0)+1;if(n>=$J)return true;t.set(r,n);}return false}async function Ci(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 er(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(UE(u))continue;l.push(...await Ci(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 er(e,`Failed to read directory ${e}: ${l.message}. Check permissions.`,{cause:a,errnoCode:l.code})}}async function B(e,t){let r=t??[basename(e)];try{let n=await readdir(e,{withFileTypes:!0}),o=[];for(let i of n){if(i.isSymbolicLink())continue;let a=join(e,i.name);if(i.isDirectory()){let l=[...r,i.name];if(UE(l))continue;o.push(...await B(a,l));}else i.isFile()&&o.push(a);}return o}catch(n){let o=n;if(o.code==="ENOENT"||o.code==="ENOTDIR"||o.code==="EACCES")return [];throw new er(e,`Failed to read directory ${e}: ${o.message}. Check permissions.`,{cause:n,errnoCode:o.code})}}async function u_(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 GJ,$J,d_=d(()=>{ts();GJ=32,$J=3;s(UE,"shouldSkipRecursiveBranch");s(Ci,"readDirRecursive");s(B,"readDirRecursiveNoSymlinks");s(u_,"ensureCacheSymlink");});async function f_(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&&BJ.has(l))||i>=n-1)throw a;await setTimeout$1(o*2**i);}}var BJ,BE=d(()=>{BJ=new Set(["EPERM","EACCES","EBUSY","ENOTEMPTY","EEXIST"]);s(f_,"renameWithRetry");});async function I(e){try{let t=await readFile(e,"utf-8");return t.startsWith(pc)?t.slice(pc.length):t}catch(t){let r=t;if(r.code==="ENOENT")return null;throw new er(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 er(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 er||l.code!=="ENOENT")throw l}let o=`${e}.tmp`,i=Wd(e)?Hd(t):t,a=r?.mode??p_(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 er(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(()=>{ts();zd();d_();zd();BE();s(I,"readFileSafe");s(L,"writeFileAtomic");s(j,"exists");s(O,"mkdirp");});function Bt(e){return hp.includes(e)}var hp,zE=d(()=>{hp=["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(Bt,"isBuiltinTargetId");});var Ue,g_,cn=d(()=>{zE();Ue=hp,g_="codex-cli";});var VE,Or,uc,QJ,_p,qJ,ZJ,yp,eY,tY,Da,rs=d(()=>{cn();VE=["rules","commands","agents","skills","mcp","hooks","ignore","permissions"],Or=z$1.enum(Ue),uc=z$1.enum(VE),QJ=z$1.enum(["rules","commands","agents","skills"]),_p=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(),qJ=z$1.object({name:z$1.string(),source:z$1.string(),version:z$1.string().optional(),target:Or.optional(),as:QJ.optional(),features:z$1.array(uc),path:z$1.string().optional(),pick:_p.optional(),accept:z$1.array(z$1.enum(["hooks","permissions","mcp"])).optional()}),ZJ=z$1.object({strategy:z$1.enum(["merge","lock","last-wins"]).default("merge"),lock_features:z$1.array(z$1.string()).default([])}),yp=z$1.union([z$1.boolean(),z$1.object({project:z$1.boolean().optional(),global:z$1.boolean().optional()}).strict()]),eY=z$1.object({commands_to_skills:z$1.object({"codex-cli":yp.optional()}).passthrough().optional(),agents_to_skills:z$1.object({"gemini-cli":yp.optional(),cline:yp.optional(),"codex-cli":yp.optional(),windsurf:yp.optional()}).passthrough().optional()}).strict().optional(),tY=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(),Da=z$1.object({version:z$1.literal(1),targets:z$1.array(Or).default([...Ue]),features:z$1.array(uc).default([...VE]),extends:z$1.array(qJ).default([]),overrides:z$1.record(z$1.string(),z$1.record(z$1.string(),z$1.unknown())).default({}),collaboration:ZJ.default({strategy:"merge",lock_features:[]}),conversions:eY,plugins:z$1.array(tY).default([]),pluginTargets:z$1.array(z$1.string().regex(/^[a-z][a-z0-9-]*$/)).default([])});});async function oY(e){let t=resolve(e);for(;;){let r=join(t,y_);if(await j(r))return r;let n=dirname(t);if(n===t)return null;t=n;}}async function sY(e){let t=await I(e);if(t===null)throw new ln(e);let r=parse(t),n=Da.safeParse(r);if(!n.success){let o=n.error.issues.map(i=>i.message);throw new cc(e,o,{cause:n.error})}return n.data}function h_(e,t){let r={...e};for(let[n,o]of Object.entries(t)){if(o==null||iY.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]=h_(i,o):r[n]=o;}return r}function aY(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=h_(r.overrides??{},t.overrides)),typeof t.conversions=="object"&&t.conversions!==null&&!Array.isArray(t.conversions)&&(r.conversions=h_(r.conversions??{},t.conversions)),Array.isArray(t.extends)&&t.extends.length>0&&(r.extends=[...e.extends??[],...t.extends]),r}async function Jd(e){let t=join(e,y_),r=await sY(t),n=join(e,nY),o=await I(n);if(o!==null){let i=parse(o);if(typeof i=="object"&&i!==null&&!Array.isArray(i)){let a=aY(r,i),l=Da.safeParse(a);if(l.success)r=l.data;else {let c=l.error.issues.map(m=>m.message).join("; ");S.warn(`Ignoring invalid agentsmesh.local.yaml at ${n}: ${c}. Using project config instead.`);}}}return {config:r,configDir:e}}async function Yd(e){let t=await oY(e);if(t===null)throw new ln(join(e,y_));return Jd(dirname(t))}var y_,nY,iY,Xd=d(()=>{b();ue();ts();rs();y_="agentsmesh.yaml",nY="agentsmesh.local.yaml";s(oY,"findConfigPath");s(sY,"loadConfig");iY=new Set(["__proto__","constructor","prototype"]);s(h_,"deepMergeObjects");s(aY,"mergeLocalConfig");s(Jd,"loadConfigFromExactDir");s(Yd,"loadConfigFromDir");});function Na(e,t="project"){if(t==="project")return {scope:t,rootBase:e,configDir:e,canonicalDir:join(e,".agentsmesh")};let r=homedir(),n=join(r,".agentsmesh");return {scope:t,rootBase:r,configDir:n,canonicalDir:n}}async function _e(e,t="project"){if(t==="project"){let{config:n,configDir:o}=await Yd(e);return {config:n,context:{scope:t,rootBase:o,configDir:o,canonicalDir:join(o,".agentsmesh")}}}let r=Na(e,t);try{let{config:n}=await Jd(r.configDir);return {config:n,context:r}}catch(n){throw n instanceof ln?new ln(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(()=>{Xd();ts();s(Na,"resolveScopeContext");s(_e,"loadScopedConfig");});function Ei(e){return e.replace(cY,(t,r,n,o)=>`${r}***@${o}`)}var cY,Qd=d(()=>{cY=/([a-zA-Z][a-zA-Z0-9+.-]*:\/\/)([^/@\s"'<>]+)@([^\s"'<>]+)/g;s(Ei,"redactUrlSecrets");});function XE(){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 QE(e){let t;try{t=new URL(e);}catch{return false}let{http:r,file:n}=XE(),o=["https:","ssh:"];return r&&o.push("http:"),n&&o.push("file:"),o.includes(t.protocol)}function qd(){let{http:e,file:t}=XE(),r=["https","ssh"];return e&&r.push("http"),t&&r.push("file"),r.join(":")}function Sp(e){if(!QE(e))throw new Error(`agentsmesh refuses a git remote with a disallowed transport: "${Ei(e)}". Allowed: https, ssh. Set AGENTSMESH_ALLOW_INSECURE_GIT=1 to permit http, AGENTSMESH_ALLOW_LOCAL_GIT=1 to permit file.`)}function qE(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 ZE(e){let t=qE(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 eO(e){let t=qE(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 tO(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||!QE(n)?null:{url:n,ref:o}}function va(e){let t=ZE(e);if(t)return {kind:"github",...t};let r=eO(e);if(r)return {kind:"gitlab",...r};let n=tO(e);return n?{kind:"git",...n}:null}function S_(e){return va(e)!==null}var Fa=d(()=>{Qd();s(XE,"gitProtocolOptIns");s(QE,"isAllowedGitProtocol");s(qd,"gitAllowProtocolEnv");s(Sp,"assertAllowedGitUrl");s(qE,"splitSourceRef");s(ZE,"parseGithubSource");s(eO,"parseGitlabSource");s(tO,"parseGitSource");s(va,"parseRemoteSource");s(S_,"isSupportedRemoteSource");});function oO(e,t){if(e.startsWith("-"))throw new Error(`agentsmesh refuses ${t} starting with "-" (option-injection guard): ${e}`)}async function Zd(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,rO),u=`${m}.tmp`,f=join(u,rO);if(!r.refresh&&await nO(p))return k_(p);try{return await rm$1(u,{recursive:!0,force:!0}),await mkdir(u,{recursive:!0}),await yY(hY(e),f),e.ref&&await _Y(f,e.ref),await rm$1(m,{recursive:!0,force:!0}),await f_(u,m),k_(p)}catch(g){if(await rm$1(u,{recursive:true,force:true}),r.allowOfflineFallback!==false&&await nO(p)){let y=g instanceof Error?g.message:String(g);return console.warn(`[agentsmesh] Remote fetch failed for ${t}; using cached version. Error: ${Ei(y)}`),k_(p)}throw g instanceof Error?Object.assign(new Error(Ei(g.message)),{cause:g.cause}):g}}async function k_(e){return {resolvedPath:e,version:await SY(e)}}async function nO(e){return j(e)}function hY(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 yY(e,t){oO(e,"clone-url"),Sp(e),await L_(["clone","-c","core.symlinks=false",e,t]);}async function _Y(e,t){oO(t,"ref"),await L_(["checkout",t],e);}async function SY(e){return L_(["rev-parse","HEAD"],e)}async function L_(e,t){let{stdout:r}=await gY("git",e,{cwd:t,env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_ALLOW_PROTOCOL:qd()}});return r.trim()}var gY,rO,C_=d(()=>{b();Qd();Fa();gY=promisify(execFile),rO="repo";s(oO,"ensureNotFlag");s(Zd,"fetchGitRemoteExtend");s(k_,"readCachedRepo");s(nO,"hasCachedRepo");s(hY,"resolveCloneUrl");s(yY,"cloneRepo");s(_Y,"checkoutRef");s(SY,"getHeadSha");s(L_,"runGit");});function LY(){let e=process.env.AGENTSMESH_MAX_TARBALL_MB;if(e===void 0||e==="")return Ip*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 ${Ip} MiB.`),Ip*1024*1024):t<iO||t>aO?(console.warn(`[agentsmesh] AGENTSMESH_MAX_TARBALL_MB=${t} is outside [${iO}, ${aO}]; using default ${Ip} MiB.`),Ip*1024*1024):t*1024*1024}async function EY(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 mO(e,t,r){let n=`https://api.github.com/repos/${e}/${t}/releases/latest`,o={Accept:"application/vnd.github+json"};r&&(o.Authorization=`Bearer ${r}`);let i=await globalThis.fetch(n,{headers:o});if(!i.ok)throw new Error(`Failed to resolve latest release for ${e}/${t}: ${i.status} ${i.statusText}`);let a=await i.json();if(!a.tag_name||typeof a.tag_name!="string")throw new Error(`No tag_name in releases/latest response for ${e}/${t}`);return a.tag_name}async function pO(e,t,r,n,o,i=false){let a=r.token??process.env.AGENTSMESH_GITHUB_TOKEN,l=r.refresh===true,c=e.tag;if(c==="latest")try{c=await mO(e.org,e.repo,a);}catch(R){if(!i)throw R;return wY(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 EY(R,CY);}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: ${Ei(D)}`),{resolvedPath:join(p,w),version:c}}}throw R instanceof Error?Object.assign(new Error(Ei(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 cO.extract({file:h,cwd:p,strict:!0,filter:s((R,k)=>{if(OY(R))return !1;let w=k&&"type"in k?k.type:void 0;return w==="File"||w==="Directory"},"filter")});}finally{await rm$1(h,{force:true}).catch(()=>{});}let y=await E_(p);if(!y)throw new Error(`Extend "${t}": archive has no top-level directory. Expected a single top-level directory inside the archive.`);return {resolvedPath:join(p,y),version:c}}async function 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 lO(e,t,r){return r?`https://x-access-token:${encodeURIComponent(r)}@github.com/${e}/${t}.git`:`https://github.com/${e}/${t}.git`}function OY(e){let t=e.replace(/\\/g,"/");return t.startsWith("/")||t.split("/").includes("..")}async function wY(e,t,r,n,o,i){let a=i?[lO(e.org,e.repo,i)]:[lO(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 Zd(m,t,r,n,o)}catch(p){l=p;}}throw l instanceof Error?l:new Error("Failed to clone GitHub default branch")}var Ip,iO,aO,CY,uO=d(()=>{b();Qd();C_();Ip=500,iO=1,aO=4096;s(LY,"resolveMaxTarballBytes");CY=LY();s(EY,"readBoundedResponse");s(mO,"resolveLatestTag");s(pO,"fetchGithubRemoteExtend");s(E_,"findExtractTopDir");s(lO,"buildGithubCloneUrl");s(OY,"isZipSlipPath");s(wY,"fetchGithubDefaultBranch");});function TY(e){let t=va(e);return t?t.kind==="github"?dc("github",`${t.org}/${t.repo}`,t.tag):t.kind==="gitlab"?dc("gitlab",`${t.namespace}/${t.project}`,t.ref??"HEAD"):dc("git",t.url,t.ref??"HEAD"):null}async function gO(e,t){let r=TY(e);if(!r)return;let n=t??tr(),o=join(n,r);await rm$1(o,{recursive:true,force:true});}async function hO(e,t){let r=e??tr(),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 O_=d(()=>{kp();Fa();s(TY,"cacheKeyFromSource");s(gO,"cleanInstallCache");s(hO,"sweepStaleCache");});function dc(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>SO){let i=createHash("sha256").update(o).digest("hex").slice(0,16);o=`${o.slice(0,SO-18)}--${i}`;}return o}function tr(){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 fc(e,t,r={}){let n=va(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??tr();return hO(o).catch(()=>{}),n.kind==="github"?pO(n,t,r,o,dc,!e.includes("@")):Zd(n,t,r,o,dc)}var SO,kp=d(()=>{C_();uO();Fa();O_();SO=80;s(dc,"buildCacheKey");s(tr,"getCacheDir");s(fc,"fetchRemoteExtend");});function vY(e){return e.startsWith("http://")||e.startsWith("https://")}async function gc(e,t,r={}){if(e.extends.length===0)return [];if(r.refreshCache===true&&e.extends.some(o=>S_(o.source))){let o=tr();await rm$1(o,{recursive:true,force:true}),await mkdir(o,{recursive:true});}let n=[];for(let o of e.extends){if(vY(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(S_(o.source)){let a=await fc(o.source,o.name,{cacheDir:tr(),refresh:r.refreshCache===true});n.push({name:o.name,resolvedPath:a.resolvedPath,features:[...o.features],target:o.target,as:o.as,version:a.version,path:o.path,pick:o.pick,isRemote:true,accept:o.accept});continue}let i=resolve(t,o.source);if(!await j(i))throw new Error(`Extend "${o.name}": path does not exist: ${i}. Check extends.source in agentsmesh.yaml.`);n.push({name:o.name,resolvedPath:i,features:[...o.features],target:o.target,as:o.as,path:o.path,pick:o.pick,isRemote:false,accept:o.accept});}return n}var ef=d(()=>{b();kp();Fa();s(vY,"isOtherRemoteSource");s(gc,"resolveExtendPaths");});function T(e){if(e.indexOf("---")!==0)return {frontmatter:{},body:e.trim()};let r=e.indexOf("---",3);if(r===-1)return {frontmatter:{},body:e.trim()};let n=e.slice(3,r).trim(),o=e.slice(r+3).trim();return {frontmatter:n===""?{}:parse(n)??{},body:o}}function GY(e){if(e.indexOf("---")!==0)return e.trim();let t=e.indexOf("---",3);return t===-1?e.trim():e.slice(t+3).trim()}function mn(e,t){try{return {ok:!0,value:T(e)}}catch(r){let n=r instanceof Error?r.message:String(r);return {ok:false,error:new Error(`Failed to parse frontmatter in ${t}: ${n}`,{cause:r}),bodyFallback:GY(e)}}}function ns(e,t,r){let n=mn(e,t);if(n.ok)return n.value;if(r)return r(n.error,t),null;throw n.error}function x(e,t){return Object.keys(e).length===0?t:`---
|
|
12
12
|
${stringify(e,{lineWidth:0}).trimEnd()}
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
-
${t}`}var U=d(()=>{s(T,"parseFrontmatter");s(
|
|
16
|
-
`;)r++;continue}t+=o,r++;}return t}async function pn(e){let t=await I(e);if(!t)return null;let r;try{r=JSON.parse(e2(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=ZY(a);l&&(o[i]=l);}return {mcpServers:o}}var wp=d(()=>{b();s(xO,"parseStringMap");s(ZY,"parseServer");s(e2,"stripJsonComments");s(pn,"parseMcp");});function O_(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}async function af(e){let t=await I(e);if(t===null)return null;if(!t.trim())return {allow:[],deny:[],ask:[]};let r;try{r=parse(t);}catch{return null}if(!r||typeof r!="object")return null;let n=r,o=O_(n.allow),i=O_(n.deny),a=O_(n.ask);return {allow:o,deny:i,ask:a}}var w_=d(()=>{b();s(O_,"ensureStringArray");s(af,"parsePermissions");});function PO(e){return typeof e=="string"?e.trim():""}function St(e){return PO(e.command)}function Zn(e){return PO(e.prompt)}function Sc(e){let t=St(e),r=Zn(e);return e.type==="prompt"?r||t:t||r}function un(e){return St(e).length>0}function is(e){return Sc(e).length>0}var dn=d(()=>{s(PO,"trimString");s(St,"getHookCommand");s(Zn,"getHookPrompt");s(Sc,"getHookText");s(un,"hasHookCommand");s(is,"hasHookText");});function o2(e){if(!e||typeof e!="object")return null;let t=e,r=t.matcher;if(typeof r!="string")return null;let n=Sc(t);if(!n)return null;let o=typeof t.type=="string"&&n2.includes(t.type)?t.type:void 0,i=typeof t.timeout=="number"&&Number.isFinite(t.timeout)?t.timeout:void 0,a=Zn(t)||void 0;return {matcher:r,command:n,...i!==void 0&&{timeout:i},...o&&{type:o},...a&&{prompt:a}}}async function lf(e){let t=await I(e);if(t===null)return null;if(!t.trim())return {};let r;try{r=parse(t);}catch{return null}if(!r||typeof r!="object")return null;let n={},o=r;for(let[i,a]of Object.entries(o)){if(!Array.isArray(a))continue;let l=[];for(let c of a){let m=o2(c);m&&l.push(m);}l.length>0&&(n[i]=l);}return n}var n2,b_=d(()=>{b();dn();n2=["command","prompt"];s(o2,"toHookEntry");s(lf,"parseHooks");});async function cf(e){let t=await I(e);if(t===null||!t.trim())return [];let r=t.split(/\r?\n/),n=[];for(let o of r){let i=o.trim();i===""||i.startsWith("#")||n.push(i);}return n}var A_=d(()=>{b();s(cf,"parseIgnore");});async function Kt(e,t={}){let r=join(e,".agentsmesh"),n=await j(r)?r:e,[o,i,a,l,c,m,p,u]=await Promise.all([Oi(join(n,"rules"),t),wi(join(n,"commands"),t),bi(join(n,"agents"),t),Ai(join(n,"skills"),t),pn(join(n,"mcp.json")),af(join(n,"permissions.yaml")),lf(join(n,"hooks.yaml")),cf(join(n,"ignore"))]);return {rules:o,commands:i,agents:a,skills:l,mcp:c,permissions:m,hooks:p,ignore:u}}var Ga=d(()=>{Cp();Ep();Op();_c();wp();w_();b_();A_();b();s(Kt,"loadCanonicalFiles");});function DO(e){return basename(e.source,".md")}function Rc(e,t){let r=new Map(e.rules.map(p=>[DO(p),p]));for(let p of t.rules)r.set(DO(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=i2(e.mcp,t.mcp),l=a2(e.permissions,t.permissions),c=l2(e.hooks,t.hooks),m=c2(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 i2(e,t){if(!e&&!t)return null;let r=e?.mcpServers??{},n=t?.mcpServers??{};return {mcpServers:{...r,...n}}}function a2(e,t){if(!e&&!t)return null;let r=T_(e?.allow??[],t?.allow??[]),n=T_(e?.deny??[],t?.deny??[]),o=T_(e?.ask??[],t?.ask??[]);return {allow:r,deny:n,ask:o}}function T_(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 l2(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 c2(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 x_=d(()=>{s(DO,"ruleSlug");s(Rc,"mergeCanonicalFiles");s(i2,"mergeMcp");s(a2,"mergePermissions");s(T_,"mergeUniqueStrings");s(l2,"mergeHooks");s(c2,"mergeIgnore");});function h2(e){return typeof e=="string"?e:e.level}function y2(e){return g2.includes(e)}function NO(e,t,r,n){let o=n[0]==="globalSupport",i=o&&typeof e.globalSupport?.scopeExtras=="function";for(let a of f2){let l=h2(t[a.feature]);if(l==="none")continue;let c=y2(a.feature),m=typeof e.generators[a.generator]=="function",p=c&&typeof e.emitScopedSettings=="function";if(m||p||c&&i)continue;let f=c?o?" or emitScopedSettings or globalSupport.scopeExtras":" or emitScopedSettings":"";r.addIssue({code:"custom",path:[...n,a.feature],message:`Capability "${a.feature}" is "${l}" but generators.${a.generator}${f} is missing.`});}}function mf(e){return L2.parse(e)}var ls,vO,m2,p2,FO,u2,d2,f2,g2,_2,S2,R2,I2,k2,L2,P_=d(()=>{ls=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()})]),vO=z$1.object({rules:ls,additionalRules:ls,commands:ls,agents:ls,skills:ls,mcp:ls,hooks:ls,ignore:ls,permissions:ls}),m2=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(),p2=z$1.object({rulePath:z$1.function(),commandPath:z$1.function(),agentPath:z$1.function()}),FO=z$1.object({paths:p2}).passthrough(),u2=z$1.object({capabilities:vO,detectionPaths:z$1.array(z$1.string()),layout:FO,scopeExtras:z$1.function().optional()}).passthrough(),d2=["global","globalCapabilities","globalDetectionPaths","generateScopeExtras"],f2=[{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"}],g2=["mcp","hooks","ignore","permissions"];s(h2,"capabilityLevel");s(y2,"canUseScopedSettings");s(NO,"validateCapabilityImplementations");_2=z$1.object({commandsToSkills:z$1.boolean().optional(),agentsToSkills:z$1.boolean().optional()}).strict(),S2=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(),R2=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")})]),I2=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:R2})).optional(),inferPick:z$1.function().optional(),dialectHints:z$1.array(z$1.object({frontmatterKey:z$1.string().min(1)})).optional()}).strict(),k2=z$1.object({id:z$1.string().regex(/^[a-z][a-z0-9-]*$/,"Target id must be lowercase with hyphens"),metadata:S2,generators:m2,capabilities:vO,emptyImportMessage:z$1.string(),lintRules:z$1.union([z$1.function(),z$1.null()]),project:FO,globalSupport:u2.optional(),buildImportPaths:z$1.function(),detectionPaths:z$1.array(z$1.string()),nativeInstall:I2.optional(),excludeFromStarterInit:z$1.boolean().optional(),conversionDefaults:_2.optional(),emitScopedSettings:z$1.function().optional(),mergeGeneratedOutputContent:z$1.function().optional(),postProcessHookOutputs:z$1.function().optional(),preservesManualActivation:z$1.boolean().optional()}).passthrough(),L2=k2.superRefine((e,t)=>{for(let r of d2)r in e&&t.addIssue({code:"custom",path:[r],message:`Use globalSupport instead of legacy field "${r}".`});NO(e,e.capabilities,t,["capabilities"]),e.globalSupport!==void 0&&NO(e,e.globalSupport.capabilities,t,["globalSupport","capabilities"]);});s(mf,"validateDescriptor");});function MO(){if(D_)return D_;let e=De.filter(r=>r!==void 0&&typeof r.id=="string"),t=new Map(e.map(r=>[r.id,r]));return e.length===De.length&&(D_=t),t}function uf(e){let t=mf(e);pf.set(t.id,t);}function ne(e){return pf.get(e)??MO().get(e)}function df(){return [...pf.values()]}function ff(){return [...new Set([...MO().keys(),...pf.keys()])]}var pf,D_,rt=d(()=>{Te();P_();pf=new Map;s(MO,"builtinDescriptors");s(uf,"registerTargetDescriptor");s(ne,"getDescriptor");s(df,"getAllDescriptors");s(ff,"getAllRegisteredDescriptorIds");});function GO(e,t){return ne(e)?.conversionDefaults?.[t]}function $O(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=$O(o,n);if(i!==void 0)return i;let a=GO(t,"commandsToSkills");return a!==void 0?a:r??false}function cs(e,t,r,n="project"){let o=e.conversions?.agents_to_skills?.[t],i=$O(o,n);if(i!==void 0)return i;let a=GO(t,"agentsToSkills");return a!==void 0?a:r??false}var bp=d(()=>{rt();s(GO,"builtinDefault");s($O,"resolveConversionValue");s(Ic,"shouldConvertCommandsToSkills");s(cs,"shouldConvertAgentsToSkills");});function gn(e,t){return t!==void 0?{level:e,flavor:t}:{level:e}}function fn(e){return typeof e=="string"?{level:e}:e}function N_(e){return {rules:fn(e.rules),additionalRules:fn(e.additionalRules),commands:fn(e.commands),agents:fn(e.agents),skills:fn(e.skills),mcp:fn(e.mcp),hooks:fn(e.hooks),ignore:fn(e.ignore),permissions:fn(e.permissions)}}var $a=d(()=>{s(gn,"cap");s(fn,"normalizeCapabilityValue");s(N_,"normalizeTargetCapabilities");});function jO(e){for(let t of De)if(t.sharedArtifacts){for(let[r,n]of Object.entries(t.sharedArtifacts))if(n==="owner"&&e.startsWith(r))return t.id}return null}function C2(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 UO(e){let t=C2(e);if(t.length===0)return;let r=t.map(({a:n,b:o})=>` - "${n.targetId}" owns "${n.prefix}" and "${o.targetId}" owns "${o.prefix}"`);throw new Error(`Shared-artifact ownership conflict: two targets claim the same or overlapping prefix.
|
|
15
|
+
${t}`}var U=d(()=>{s(T,"parseFrontmatter");s(GY,"extractBody");s(mn,"tryParseFrontmatter");s(ns,"parseOrSkipFrontmatter");s(x,"serializeFrontmatter");});function UY(e){let t=e.replace(/\.[^.]*$/,"").toUpperCase();return $Y.has(t)}function RO(e){let t=[],r=e.split(/[\\/]/);for(let n of r)if(!(n===""||n==="."||n==="..")){if(jY.test(n)){t.push({segment:n,reason:"illegal-character"});continue}if(/[. ]$/.test(n)){t.push({segment:n,reason:"trailing-dot-or-space"});continue}UY(n)&&t.push({segment:n,reason:"reserved-name"});}return t}var $Y,jY,IO=d(()=>{$Y=new Set(["CON","PRN","AUX","NUL","COM1","COM2","COM3","COM4","COM5","COM6","COM7","COM8","COM9","LPT1","LPT2","LPT3","LPT4","LPT5","LPT6","LPT7","LPT8","LPT9"]),jY=new RegExp('[<>:"|?*\\u0000-\\u001F]');s(UY,"segmentReservedName");s(RO,"findWindowsPathIssues");});function os(e,t){let r=RO(t);if(r.length===0)return;let n=r.map(o=>`${o.segment} (${o.reason})`).join(", ");throw new tf(e,t,`canonical ${e} name "${t}" is not portable to Windows: ${n}. Rename the file.`)}function hc(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 tf(e,m,`canonical ${e} files collide on slug ${f}: ${u.path} vs ${o}. Rename one.`)}n.set(p,{path:o,slug:m});}}var tf,Lp=d(()=>{IO();tf=class extends Error{static{s(this,"CanonicalNameError");}feature;name;constructor(t,r,n){super(n),this.feature=t,this.name=r;}};s(os,"assertCanonicalName");s(hc,"assertNoBasenameCollisions");});function yc(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();WY.has(u)&&(a?.has(u)||(l.add(u),c++));}if(c===0)return;let m=[...l].sort().join(", ");S.warn(`Skipped ${c} ${e} file(s) in ${t} (format${l.size===1?"":"s"}: ${m}). agentsmesh ${e} are parsed from .md files only.`);}var WY,rf=d(()=>{ue();WY=new Set([".toml",".yaml",".yml",".json"]);s(yc,"warnIfUnrecognizedResourceFormats");});function LO(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):typeof e=="string"?e?[e]:[]:[]}async function Oi(e,t={}){let r=await B(e),n=r.filter(i=>{if(!i.endsWith(".md"))return false;let a=basename(i,".md");return a==="_root"||!a.startsWith("_")});yc("rules",e,r,n,{handledByOtherReader:t.handledByOtherReader}),hc("rule",n,".md");let o=[];for(let i of n){let a=await I(i);if(!a)continue;let l=ns(a,i,t.onParseError);if(!l)continue;let{frontmatter:c,body:m}=l,p=basename(i,".md");os("rule",p);let u=p==="_root",f=c.root===true,g=c.trigger,h=typeof g=="string"&&HY.includes(g)?g:void 0,y=c.codex_emit,_=y==="execution"?"execution":y==="advisory"?"advisory":void 0,k=c.codex_instruction==="override"?"override":void 0;o.push({source:i,root:u||f,targets:LO(c.targets),description:typeof c.description=="string"?c.description:"",globs:LO(c.globs),body:m,...h!==void 0&&{trigger:h},..._!==void 0&&{codexEmit:_},...k!==void 0&&{codexInstructionVariant:k}});}return o}var HY,Cp=d(()=>{b();U();Lp();rf();HY=["always_on","model_decision","glob","manual"];s(LO,"toStrArray");s(Oi,"parseRules");});function EO(e){return e===true||e==="true"||e===1||e==="1"}function OO(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 wi(e,t={}){let r=await B(e),n=r.filter(i=>i.endsWith(".md")&&!basename(i).startsWith("_"));yc("commands",e,r,n,{handledByOtherReader:t.handledByOtherReader}),hc("command",n,".md");let o=[];for(let i of n){let a=await I(i);if(!a)continue;let l=ns(a,i,t.onParseError);if(!l)continue;let{frontmatter:c,body:m}=l,p=basename(i,".md");os("command",p);let u=OO(c.allowedTools),f=OO(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:EO(c.outputStyle)||EO(c["output-style"]),body:m});}return o}var Ep=d(()=>{b();U();Lp();rf();s(EO,"toBool");s(OO,"toToolsArray");s(wi,"parseCommands");});function Ma(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 bO(e){return e===true||e==="true"||e===1||e==="1"}function AO(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 zY(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:{}}async function bi(e,t={}){let r=await B(e),n=r.filter(i=>i.endsWith(".md")&&!basename(i).startsWith("_"));yc("agents",e,r,n,{handledByOtherReader:t.handledByOtherReader}),hc("agent",n,".md");let o=[];for(let i of n){let a=await I(i);if(!a)continue;let l=ns(a,i,t.onParseError);if(!l)continue;let{frontmatter:c,body:m}=l,p=basename(i,".md");os("agent",p);let u=Ma(c.tools),f=Ma(c.tools),g=u.length>0?u:f,h=Ma(c.disallowedTools),y=Ma(c["disallowed-tools"]),_=h.length>0?h:y,R=Ma(c.mcpServers),k=Ma(c["mcp-servers"]),w=R.length>0?R:k,D=Ma(c.skills),N=AO(c.maxTurns),K=AO(c["max-turns"]),J=N>0?N:K>0?K:0;o.push({source:i,name:p,description:typeof c.description=="string"?c.description:"",tools:g,disallowedTools:_,model:typeof c.model=="string"?c.model:"",permissionMode:typeof c.permissionMode=="string"?c.permissionMode:typeof c["permission-mode"]=="string"?c["permission-mode"]:"",maxTurns:J,mcpServers:w,hooks:zY(c.hooks),skills:D,memory:typeof c.memory=="string"?c.memory:"",outputStyle:bO(c.outputStyle)||bO(c["output-style"]),body:m});}return o}var Op=d(()=>{b();U();Lp();rf();s(Ma,"toStrArray");s(bO,"toBool");s(AO,"toInt");s(zY,"toHooks");s(bi,"parseAgents");});function w_(e){let t=e.toLowerCase(),r=t.lastIndexOf("."),n=r>0?t.slice(0,r):t;return VY.get(n)}function qn(e){return w_(e)!==void 0}function nf(e){return w_(e)==="preserved"}function of(e){return w_(e)==="noise"}function TO(e){return JY.has(e)}function xO(e){return YY.has(e)}var VY,JY,YY,ss=d(()=>{VY=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"]]),JY=new Set([".git",".github",".gitlab","node_modules",".vscode",".idea"]),YY=new Set(["package.json","package-lock.json","pnpm-lock.yaml","yarn.lock",".gitignore",".gitattributes",".editorconfig",".DS_Store"]);s(w_,"boilerplateKind");s(qn,"isBoilerplate");s(nf,"isPreservedBoilerplate");s(of,"isNoiseBoilerplate");s(TO,"isRepoNonContentDir");s(xO,"isRepoNonContentFile");});async function qY(e){return await I(e)??""}function e2(e){let t=e.lastIndexOf(".");return t<0?true:ZY.has(e.slice(t).toLowerCase())}function r2(e){return e.toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}async function PO(e){let t=await B(e),r=[];for(let n of t){let i=n.slice(e.length+1).replace(/\\/g,"/");if(i===sf||i.endsWith(`/${sf}`))continue;let a=i.split("/")[0];if(t2.some(m=>a===m)||i===".DS_Store"||i.endsWith("/.DS_Store"))continue;let l=i.includes("/")?i.slice(i.lastIndexOf("/")+1):i;if(e2(l)&&of(l))continue;let c=await qY(n);r.push({relativePath:i,absolutePath:n,content:c});}return r.sort((n,o)=>n.relativePath.localeCompare(o.relativePath))}async function af(e,t={}){let r=join(e,sf),n=await I(r);if(!n)return null;let o=ns(n,r,t.onParseError);if(!o)return null;let{frontmatter:i,body:a}=o,l=await PO(e),m=(typeof i.name=="string"?r2(i.name):"")||basename(e);return os("skill",m),{source:r,name:m,description:typeof i.description=="string"?i.description:"",body:a,supportingFiles:l}}async function Ai(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;os("skill",o.name);let i=join(e,o.name),a=join(i,sf),l=await I(a);if(!l)continue;let c=ns(l,a,t.onParseError);if(!c)continue;let{frontmatter:m,body:p}=c,u=await PO(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 sf,ZY,t2,_c=d(()=>{b();d_();U();ss();Lp();s(qY,"readContent");sf="SKILL.md",ZY=new Set([".md",".mdx",".rst",".txt"]);s(e2,"isMarkdownLikeDoc");t2=[".git","node_modules"];s(r2,"sanitizeSkillName");s(PO,"listSupportingFiles");s(af,"parseSkillDirectory");s(Ai,"parseSkills");});function DO(e){return e===null||typeof e!="object"||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="string"))}function n2(e){if(!e||typeof e!="object")return null;let t=e,r=typeof t.type=="string"?t.type:"stdio",n=DO(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:DO(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 o2(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 pn(e){let t=await I(e);if(!t)return null;let r;try{r=JSON.parse(o2(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=n2(a);l&&(o[i]=l);}return {mcpServers:o}}var wp=d(()=>{b();s(DO,"parseStringMap");s(n2,"parseServer");s(o2,"stripJsonComments");s(pn,"parseMcp");});function A_(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}async function lf(e){let t=await I(e);if(t===null)return null;if(!t.trim())return {allow:[],deny:[],ask:[]};let r;try{r=parse(t);}catch{return null}if(!r||typeof r!="object")return null;let n=r,o=A_(n.allow),i=A_(n.deny),a=A_(n.ask);return {allow:o,deny:i,ask:a}}var T_=d(()=>{b();s(A_,"ensureStringArray");s(lf,"parsePermissions");});function NO(e){return typeof e=="string"?e.trim():""}function St(e){return NO(e.command)}function Zn(e){return NO(e.prompt)}function Sc(e){let t=St(e),r=Zn(e);return e.type==="prompt"?r||t:t||r}function un(e){return St(e).length>0}function is(e){return Sc(e).length>0}var dn=d(()=>{s(NO,"trimString");s(St,"getHookCommand");s(Zn,"getHookPrompt");s(Sc,"getHookText");s(un,"hasHookCommand");s(is,"hasHookText");});function l2(e){if(!e||typeof e!="object")return null;let t=e,r=t.matcher;if(typeof r!="string")return null;let n=Sc(t);if(!n)return null;let o=typeof t.type=="string"&&a2.includes(t.type)?t.type:void 0,i=typeof t.timeout=="number"&&Number.isFinite(t.timeout)?t.timeout:void 0,a=Zn(t)||void 0;return {matcher:r,command:n,...i!==void 0&&{timeout:i},...o&&{type:o},...a&&{prompt:a}}}async function cf(e){let t=await I(e);if(t===null)return null;if(!t.trim())return {};let r;try{r=parse(t);}catch{return null}if(!r||typeof r!="object")return null;let n={},o=r;for(let[i,a]of Object.entries(o)){if(!Array.isArray(a))continue;let l=[];for(let c of a){let m=l2(c);m&&l.push(m);}l.length>0&&(n[i]=l);}return n}var a2,x_=d(()=>{b();dn();a2=["command","prompt"];s(l2,"toHookEntry");s(cf,"parseHooks");});async function mf(e){let t=await I(e);if(t===null||!t.trim())return [];let r=t.split(/\r?\n/),n=[];for(let o of r){let i=o.trim();i===""||i.startsWith("#")||n.push(i);}return n}var P_=d(()=>{b();s(mf,"parseIgnore");});async function Kt(e,t={}){let r=join(e,".agentsmesh"),n=await j(r)?r:e,[o,i,a,l,c,m,p,u]=await Promise.all([Oi(join(n,"rules"),t),wi(join(n,"commands"),t),bi(join(n,"agents"),t),Ai(join(n,"skills"),t),pn(join(n,"mcp.json")),lf(join(n,"permissions.yaml")),cf(join(n,"hooks.yaml")),mf(join(n,"ignore"))]);return {rules:o,commands:i,agents:a,skills:l,mcp:c,permissions:m,hooks:p,ignore:u}}var Ga=d(()=>{Cp();Ep();Op();_c();wp();T_();x_();P_();b();s(Kt,"loadCanonicalFiles");});function vO(e){return basename(e.source,".md")}function Rc(e,t){let r=new Map(e.rules.map(p=>[vO(p),p]));for(let p of t.rules)r.set(vO(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=m2(e.mcp,t.mcp),l=p2(e.permissions,t.permissions),c=u2(e.hooks,t.hooks),m=d2(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 m2(e,t){if(!e&&!t)return null;let r=e?.mcpServers??{},n=t?.mcpServers??{};return {mcpServers:{...r,...n}}}function p2(e,t){if(!e&&!t)return null;let r=D_(e?.allow??[],t?.allow??[]),n=D_(e?.deny??[],t?.deny??[]),o=D_(e?.ask??[],t?.ask??[]);return {allow:r,deny:n,ask:o}}function D_(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 u2(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 d2(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 N_=d(()=>{s(vO,"ruleSlug");s(Rc,"mergeCanonicalFiles");s(m2,"mergeMcp");s(p2,"mergePermissions");s(D_,"mergeUniqueStrings");s(u2,"mergeHooks");s(d2,"mergeIgnore");});function R2(e){return typeof e=="string"?e:e.level}function I2(e){return S2.includes(e)}function FO(e,t,r,n){let o=n[0]==="globalSupport",i=o&&typeof e.globalSupport?.scopeExtras=="function";for(let a of _2){let l=R2(t[a.feature]);if(l==="none")continue;let c=I2(a.feature),m=typeof e.generators[a.generator]=="function",p=c&&typeof e.emitScopedSettings=="function";if(m||p||c&&i)continue;let f=c?o?" or emitScopedSettings or globalSupport.scopeExtras":" or emitScopedSettings":"";r.addIssue({code:"custom",path:[...n,a.feature],message:`Capability "${a.feature}" is "${l}" but generators.${a.generator}${f} is missing.`});}}function pf(e){return w2.parse(e)}var ls,MO,f2,g2,GO,h2,y2,_2,S2,k2,L2,C2,E2,O2,w2,v_=d(()=>{ls=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()})]),MO=z$1.object({rules:ls,additionalRules:ls,commands:ls,agents:ls,skills:ls,mcp:ls,hooks:ls,ignore:ls,permissions:ls}),f2=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(),g2=z$1.object({rulePath:z$1.function(),commandPath:z$1.function(),agentPath:z$1.function()}),GO=z$1.object({paths:g2}).passthrough(),h2=z$1.object({capabilities:MO,detectionPaths:z$1.array(z$1.string()),layout:GO,scopeExtras:z$1.function().optional()}).passthrough(),y2=["global","globalCapabilities","globalDetectionPaths","generateScopeExtras"],_2=[{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"}],S2=["mcp","hooks","ignore","permissions"];s(R2,"capabilityLevel");s(I2,"canUseScopedSettings");s(FO,"validateCapabilityImplementations");k2=z$1.object({commandsToSkills:z$1.boolean().optional(),agentsToSkills:z$1.boolean().optional()}).strict(),L2=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(),C2=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")})]),E2=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:C2})).optional(),inferPick:z$1.function().optional(),dialectHints:z$1.array(z$1.object({frontmatterKey:z$1.string().min(1)})).optional()}).strict(),O2=z$1.object({id:z$1.string().regex(/^[a-z][a-z0-9-]*$/,"Target id must be lowercase with hyphens"),metadata:L2,generators:f2,capabilities:MO,emptyImportMessage:z$1.string(),lintRules:z$1.union([z$1.function(),z$1.null()]),project:GO,globalSupport:h2.optional(),buildImportPaths:z$1.function(),detectionPaths:z$1.array(z$1.string()),nativeInstall:E2.optional(),excludeFromStarterInit:z$1.boolean().optional(),conversionDefaults:k2.optional(),emitScopedSettings:z$1.function().optional(),mergeGeneratedOutputContent:z$1.function().optional(),postProcessHookOutputs:z$1.function().optional(),preservesManualActivation:z$1.boolean().optional()}).passthrough(),w2=O2.superRefine((e,t)=>{for(let r of y2)r in e&&t.addIssue({code:"custom",path:[r],message:`Use globalSupport instead of legacy field "${r}".`});FO(e,e.capabilities,t,["capabilities"]),e.globalSupport!==void 0&&FO(e,e.globalSupport.capabilities,t,["globalSupport","capabilities"]);});s(pf,"validateDescriptor");});function $O(){if(F_)return F_;let e=De.filter(r=>r!==void 0&&typeof r.id=="string"),t=new Map(e.map(r=>[r.id,r]));return e.length===De.length&&(F_=t),t}function df(e){let t=pf(e);uf.set(t.id,t);}function ne(e){return uf.get(e)??$O().get(e)}function ff(){return [...uf.values()]}function gf(){return [...new Set([...$O().keys(),...uf.keys()])]}var uf,F_,rt=d(()=>{Te();v_();uf=new Map;s($O,"builtinDescriptors");s(df,"registerTargetDescriptor");s(ne,"getDescriptor");s(ff,"getAllDescriptors");s(gf,"getAllRegisteredDescriptorIds");});function jO(e,t){return ne(e)?.conversionDefaults?.[t]}function UO(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=UO(o,n);if(i!==void 0)return i;let a=jO(t,"commandsToSkills");return a!==void 0?a:r??false}function cs(e,t,r,n="project"){let o=e.conversions?.agents_to_skills?.[t],i=UO(o,n);if(i!==void 0)return i;let a=jO(t,"agentsToSkills");return a!==void 0?a:r??false}var bp=d(()=>{rt();s(jO,"builtinDefault");s(UO,"resolveConversionValue");s(Ic,"shouldConvertCommandsToSkills");s(cs,"shouldConvertAgentsToSkills");});function gn(e,t){return t!==void 0?{level:e,flavor:t}:{level:e}}function fn(e){return typeof e=="string"?{level:e}:e}function M_(e){return {rules:fn(e.rules),additionalRules:fn(e.additionalRules),commands:fn(e.commands),agents:fn(e.agents),skills:fn(e.skills),mcp:fn(e.mcp),hooks:fn(e.hooks),ignore:fn(e.ignore),permissions:fn(e.permissions)}}var $a=d(()=>{s(gn,"cap");s(fn,"normalizeCapabilityValue");s(M_,"normalizeTargetCapabilities");});function BO(e){for(let t of De)if(t.sharedArtifacts){for(let[r,n]of Object.entries(t.sharedArtifacts))if(n==="owner"&&e.startsWith(r))return t.id}return null}function b2(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 KO(e){let t=b2(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 G_=d(()=>{Te();s(BO,"ownerTargetIdForSharedPath");s(b2,"findSharedArtifactOwnershipConflicts");s(KO,"assertSharedArtifactOwnersUnique");});function A2(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):typeof e=="string"&&e.length>0?e.split(",").map(t=>t.trim()).filter(Boolean):[]}function Z(e){return `${kc}${e}`}function Ye(e){let t={name:Z(e.name),description:e.description||void 0,"x-agentsmesh-kind":"command","x-agentsmesh-name":e.name,"x-agentsmesh-allowed-tools":e.allowedTools.length>0?e.allowedTools:void 0};return t.description===void 0&&delete t.description,t["x-agentsmesh-allowed-tools"]===void 0&&delete t["x-agentsmesh-allowed-tools"],x(t,e.body.trim()||"")}function hf(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(kc)?t.slice(kc.length):t.startsWith(Ap)?t.slice(Ap.length):"",o=(r||n).trim();return o?{name:o,description:typeof e.description=="string"?e.description:"",allowedTools:A2(e["x-agentsmesh-allowed-tools"])}:null}function yf(e,t){return x({description:e.description,"allowed-tools":e.allowedTools},t.trim()||"")}var kc,Ap,Ge=d(()=>{U();kc="am-command-",Ap="ab-command-";s(A2,"toStringArray");s(Z,"commandSkillDirName");s(Ye,"serializeCommandSkill");s(hf,"parseCommandSkillFrontmatter");s(yf,"serializeImportedCommand");});function _f(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 T2(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];}),x(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(Tp)?t.slice(Tp.length):"",o=(r||n).trim();return o?{name:o,description:typeof e.description=="string"?e.description:"",tools:_f(e["x-agentsmesh-tools"]),disallowedTools:_f(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:_f(e["x-agentsmesh-mcp-servers"]),hooks:T2(e["x-agentsmesh-hooks"]),skills:_f(e["x-agentsmesh-skills"]),memory:typeof e["x-agentsmesh-memory"]=="string"?e["x-agentsmesh-memory"]:""}:null}function Ti(e,t){let r={name:e.name,description:e.description,tools:e.tools,disallowedTools:e.disallowedTools.length>0?e.disallowedTools:void 0,model:e.model||void 0,permissionMode:e.permissionMode||void 0,maxTurns:e.maxTurns>0?e.maxTurns:void 0,mcpServers:e.mcpServers.length>0?e.mcpServers:void 0,hooks:Object.keys(e.hooks).length>0?e.hooks:void 0,skills:e.skills.length>0?e.skills:void 0,memory:e.memory||void 0};return Object.keys(r).forEach(n=>{r[n]===void 0&&delete r[n];}),x(r,t.trim()||"")}var Lc,Tp,Se=d(()=>{U();Lc="am-agent-",Tp="ab-agent-";s(_f,"toStringArray");s(T2,"toHooks");s(V,"projectedAgentSkillDirName");s($e,"serializeProjectedAgentSkill");s(Cc,"parseProjectedAgentSkillFrontmatter");s(Ti,"serializeImportedAgent");});function xp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function JO(e,t){return new RegExp(`${xp(e)}[\\s\\S]*?${xp(t)}`,"g")}function Dp(e,t,r){return e.replace(JO(t,r),"").trim()}function D2(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 If(e,t){let{prefix:r,body:n}=D2(e),o=n?`${t}
|
|
20
20
|
|
|
21
21
|
${n}`:t;return r?`${r}
|
|
22
22
|
|
|
23
|
-
${o}`:o}function
|
|
24
|
-
`)}function
|
|
25
|
-
`)}function le(e,t){let r=
|
|
23
|
+
${o}`:o}function N2(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 v2(e){return {source:N2(e.source),description:e.description,globs:e.globs,targets:e.targets}}function F2(e){return `${zO}${JSON.stringify(v2(e))}${VO}`}function M2(e){let t=[F2(e)];return e.description.trim()&&t.push(`## ${e.description.trim()}`,""),t.push(e.body.trim(),HO),t.filter(r=>r.length>0).join(`
|
|
24
|
+
`)}function G2(e){return e.length===0?"":[Sf,...e.map(M2),Rf].join(`
|
|
25
|
+
`)}function le(e,t){let r=G2(t),n=Dp(e,Sf,Rf);return r?n?`${n}
|
|
26
26
|
|
|
27
|
-
${r}`:r:n}function
|
|
27
|
+
${r}`:r:n}function WO(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function $2(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:WO(r.globs),targets:WO(r.targets)}}catch{return null}}function j2(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 YO(e){let t=[],r=JO(Sf,Rf);return {rootContent:e.replace(r,o=>{let i=o.replace(Sf,"").replace(Rf,"").trim(),a=new RegExp(`${xp(zO)}([\\s\\S]*?)${xp(VO)}([\\s\\S]*?)${xp(HO)}`,"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=$2(c);p&&t.push({...p,body:j2(m,p.description)});}return ""}).trim(),rules:t}}var $_,j_,Pp,U_,Sf,Rf,HO,zO,VO,Be=d(()=>{$_="<!-- agentsmesh:root-generation-contract:start -->",j_="<!-- agentsmesh:root-generation-contract:end -->",Pp="<!-- agentsmesh:lessons-contract:start -->",U_="<!-- agentsmesh:lessons-contract:end -->",Sf="<!-- agentsmesh:embedded-rules:start -->",Rf="<!-- agentsmesh:embedded-rules:end -->",HO="<!-- agentsmesh:embedded-rule:end -->",zO="<!-- agentsmesh:embedded-rule:start ",VO=" -->";s(xp,"escapeRegExp");s(JO,"managedBlockPattern");s(Dp,"stripManagedBlock");s(D2,"splitFrontmatterPrefix");s(If,"insertAtBodyTop");s(N2,"ruleSource");s(v2,"markerForRule");s(F2,"embeddedRuleStart");s(M2,"renderRule");s(G2,"renderEmbeddedRulesBlock");s(le,"appendEmbeddedRulesBlock");s(WO,"toStringArray");s($2,"parseMarker");s(j2,"stripGeneratedHeading");s(YO,"extractEmbeddedRules");});function QO(e){let t=K_(e);return If(t,XO)}function K_(e){let t=Dp(e,$_,j_);t=t.replace(`
|
|
28
28
|
|
|
29
|
-
${
|
|
29
|
+
${XO}`,"");for(let r of cX)t=t.replace(`
|
|
30
30
|
|
|
31
|
-
${r}`,"");return t.trim()}var
|
|
31
|
+
${r}`,"");return t.trim()}var B_,U2,B2,K2,W2,H2,z2,V2,J2,Y2,X2,Q2,q2,Z2,eX,tX,rX,nX,oX,sX,iX,aX,lX,XO,cX,W_=d(()=>{Be();B_="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.",U2="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.",B2="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.",K2="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.",W2="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`.",H2="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`.",z2="`.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`.",V2="`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.",J2="`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.",Y2="**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.",X2="**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.",Q2=B_,q2=`## Project-Specific Rules
|
|
32
32
|
|
|
33
|
-
${
|
|
33
|
+
${B_}`,Z2=`## AgentsMesh Generation Contract
|
|
34
34
|
|
|
35
|
-
${
|
|
36
|
-
|
|
37
|
-
${M2}`,Q2=`## AgentsMesh Generation Contract
|
|
38
|
-
|
|
39
|
-
${G2}`,q2=`## AgentsMesh Generation Contract
|
|
40
|
-
|
|
41
|
-
${$2}`,Z2=`## AgentsMesh Generation Contract
|
|
42
|
-
|
|
43
|
-
${j2}`,eX=`## AgentsMesh Generation Contract
|
|
35
|
+
${B_}`,eX=`## AgentsMesh Generation Contract
|
|
44
36
|
|
|
45
37
|
${U2}`,tX=`## AgentsMesh Generation Contract
|
|
46
38
|
|
|
@@ -50,134 +42,142 @@ ${K2}`,nX=`## AgentsMesh Generation Contract
|
|
|
50
42
|
|
|
51
43
|
${W2}`,oX=`## AgentsMesh Generation Contract
|
|
52
44
|
|
|
53
|
-
${H2}`,
|
|
45
|
+
${H2}`,sX=`## AgentsMesh Generation Contract
|
|
46
|
+
|
|
47
|
+
${z2}`,iX=`## AgentsMesh Generation Contract
|
|
48
|
+
|
|
49
|
+
${V2}`,aX=`## AgentsMesh Generation Contract
|
|
50
|
+
|
|
51
|
+
${J2}`,lX=`## AgentsMesh Generation Contract
|
|
52
|
+
|
|
53
|
+
${Y2}`,XO=`${$_}
|
|
54
54
|
## AgentsMesh Generation Contract
|
|
55
55
|
|
|
56
|
-
${
|
|
57
|
-
${
|
|
58
|
-
`)}]}var
|
|
59
|
-
`)break;i+=a,o++;}return i===r}function
|
|
56
|
+
${X2}
|
|
57
|
+
${j_}`,cX=[lX,aX,iX,sX,oX,nX,rX,tX,eX,Z2,q2,Q2];s(QO,"appendAgentsmeshRootInstructionParagraph");s(K_,"stripAgentsmeshRootInstructionParagraph");});function xt(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 Ec(e){let t=await I(e);return t?T(t).frontmatter:{}}function mt(e,t){return typeof e[t]=="string"?e[t]:void 0}function H_(e){let t=e.hooks;return t&&typeof t=="object"&&!Array.isArray(t)?t:void 0}function mX(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function pX(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 Ec(e),o=basename(e,".md")==="_root"?K_(r):r.trim(),i=pX(e,mX({...n,...t})),a={root:i.root===true,description:typeof i.description=="string"?i.description:""};a.root===false&&(a.globs=xt(i.globs));for(let[l,c]of Object.entries(i))l==="root"||l==="description"||l==="globs"||c===void 0||(a[l]=c);return x(a,o||"")}var z_=d(()=>{b();U();W_();s(xt,"toStringArray");s(Ec,"readExistingFrontmatter");s(mt,"readString");s(H_,"readHooks");s(mX,"pruneUndefined");s(pX,"serializeCanonicalRuleFrontmatter");s(z,"serializeImportedRuleWithFallback");});async function Ee(e,t,r){let n=await Ec(e),o=(()=>{let l=xt(n.allowedTools);return l.length>0?l:xt(n["allowed-tools"])})(),i=t.hasDescription?t.description??"":typeof n.description=="string"?n.description:"",a=t.hasAllowedTools?t.allowedTools??[]:o;return x({description:i,"allowed-tools":a},r.trim()||"")}async function eo(e,t,r){let n=await Ec(e),o=basename(dirname(e)),i=mt(t,"name")??mt(n,"name")??o,a=mt(t,"description")??mt(n,"description")??"";return x({name:i,description:a},r.trim()||"")}async function xe(e,t,r){let n=await Ec(e),o=Object.prototype.hasOwnProperty.call(t,"tools")?xt(t.tools):(()=>{let y=xt(n.tools);return y.length>0?y:[]})(),i=Object.prototype.hasOwnProperty.call(t,"disallowedTools")?xt(t.disallowedTools):Object.prototype.hasOwnProperty.call(t,"disallowed-tools")?xt(t["disallowed-tools"]):xt(n.disallowedTools),a=Object.prototype.hasOwnProperty.call(t,"mcpServers")?xt(t.mcpServers):Object.prototype.hasOwnProperty.call(t,"mcp-servers")?xt(t["mcp-servers"]):xt(n.mcpServers),l=Object.prototype.hasOwnProperty.call(t,"skills")?xt(t.skills):xt(n.skills),c=t.maxTurns??t["max-turns"]??n.maxTurns,m=typeof c=="number"?c:Number(c??0),p=H_(t)??H_(n),u={name:mt(t,"name")??mt(n,"name")??basename(e,".md"),description:mt(t,"description")??mt(n,"description")??"",tools:o};i.length>0&&(u.disallowedTools=i);let f=mt(t,"model")??mt(n,"model");f&&(u.model=f);let g=mt(t,"permissionMode")??mt(t,"permission-mode")??mt(n,"permissionMode")??mt(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=mt(t,"memory")??mt(n,"memory");return h&&(u.memory=h),x(u,r.trim()||"")}var ew=d(()=>{U();z_();s(Ee,"serializeImportedCommandWithFallback");s(eo,"serializeImportedSkillWithFallback");s(xe,"serializeImportedAgentWithFallback");});var de=d(()=>{z_();ew();});function kf(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 to(e){await rm$1(e,{recursive:true,force:true});}var Np=d(()=>{s(kf,"shouldImportScopedAgentsRule");s(to,"removePathIfExists");});function ae(e,t){let r=[];for(let n of e.skills){let o={name:n.name,description:n.description||void 0};o.description===void 0&&delete o.description,r.push({path:`${t}/${n.name}/SKILL.md`,content:x(o,n.body.trim()||"")});for(let i of n.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");r.push({path:`${t}/${n.name}/${a}`,content:i.content});}}return r}async function oe(e,t,r,n,o){let i=await readdir(join(e,t),{encoding:"utf8",withFileTypes:true}).catch(()=>null);if(i!==null)for(let a of i){if(!a.isDirectory())continue;let l=join(e,t,a.name),c=join(l,"SKILL.md"),m=await I(c);if(m===null)continue;let p=join(e,vp,a.name),u=join(p,"SKILL.md"),{frontmatter:f,body:g}=T(o(m,c,u)),h=hf(f,a.name);if(h){await to(join(e,vp,a.name));let k=join(e,tw);await O(k);let w=join(k,`${h.name}.md`);await L(w,yf(h,o(g,c,w))),n.push({fromTool:r,fromPath:c,toPath:`${tw}/${h.name}.md`,feature:"commands"});continue}let y=Cc(f,a.name);if(y){await to(join(e,vp,a.name));let k=join(e,rw);await O(k);let w=join(k,`${y.name}.md`);await L(w,Ti(y,o(g,c,w))),n.push({fromTool:r,fromPath:c,toPath:`${rw}/${y.name}.md`,feature:"agents"});continue}let _=await eo(u,{...f,name:a.name},g);await O(p),await L(u,_),n.push({fromTool:r,fromPath:c,toPath:`${vp}/${a.name}/SKILL.md`,feature:"skills"});let R=await B(l);for(let k of R){if(k===c)continue;let w=relative(l,k).replace(/\\/g,"/"),D=await I(k);if(D===null)continue;let N=join(p,w);await O(dirname(N)),await L(N,o(D,k,N)),n.push({fromTool:r,fromPath:k,toPath:`${vp}/${a.name}/${w}`,feature:"skills"});}}}var vp,tw,rw,ie=d(()=>{b();U();de();Se();Ge();Np();vp=".agentsmesh/skills",tw=".agentsmesh/commands",rw=".agentsmesh/agents";s(ae,"generateEmbeddedSkills");s(oe,"importEmbeddedSkills");});var ro,Wt,Rt,ms,Oc,ps,br,ja,nw,ow,wc=d(()=>{ro="aider",Wt="CONVENTIONS.md",Rt=".aider/skills",ms=".aiderignore",Oc=".aider.conf.yml",ps="CONVENTIONS.md",br=".aider/skills",ja=".aiderignore",nw=".agentsmesh/rules",ow=".agentsmesh/ignore";});function sw(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(ro)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Wt,content:o},{path:Oc,content:stringify({read:[Wt]})}]:[]}function iw(e){return ae(e,Rt)}function aw(e){return e.commands.map(t=>({path:`${Rt}/${Z(t.name)}/SKILL.md`,content:Ye(t)}))}function lw(e){return e.agents.map(t=>({path:`${Rt}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function cw(e){return e.ignore.length===0?[]:[{path:ms,content:e.ignore.join(`
|
|
58
|
+
`)}]}var mw=d(()=>{ie();Be();Se();Ge();wc();s(sw,"generateRules");s(iw,"generateSkills");s(aw,"generateCommands");s(lw,"generateAgents");s(cw,"generateIgnore");});function ce(e){return e.includes("\\")||hn.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 uw(e,t){return ce(e).isAbsolute(t)||hn.test(t)}function bc(e){let t=e,r="";for(;SX.test(t);)r=t.at(-1)+r,t=t.slice(0,-1);return {candidate:t,suffix:r}}function dw(e,t){let r=ce(t),n=e.replace(/^(\.\.\/)+/,"").replace(/^\.\//,"");return n&&n!==e?Q(t,r.join(t,n)):null}var hn,SX,It=d(()=>{hn=/^[A-Za-z]:[\\/]/,SX=/[.!?:;]+$/;s(ce,"pathApi");s(Ke,"normalizeSeparators");s(Q,"normalizeForProject");s(uw,"isAbsoluteForProject");s(bc,"stripTrailingPunctuation");s(dw,"rootFallbackPath");});async function fw(e,t,r="project"){let n=new Map,o=ne(e);return o&&await o.buildImportPaths(n,t,r),n}var gw=d(()=>{rt();s(fw,"buildImportReferenceMap");});function kX(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 LX(){let e=new Set([".agentsmesh/"]);for(let t of De)for(let r of kX(t))e.add(r);return Array.from(e)}function CX(){let e=new Set([...LX(),...V_.rootRelativePrefixes]),t=new Set([...IX,...V_.meshRootSegments]);return {protectedSchemes:[...RX,...V_.protectedSchemes],rootRelativePrefixes:Array.from(e),meshRootSegments:t}}function Lf(){return J_||(J_=CX()),J_}var RX,IX,V_,J_,hw=d(()=>{Te();RX=[/\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],IX=new Set(["skills","rules","commands","agents","packs"]),V_={protectedSchemes:[],rootRelativePrefixes:[],meshRootSegments:[]};s(kX,"topLevelDotfilePrefixes");s(LX,"buildDefaultRootRelativePrefixes");s(CX,"rebuild");s(Lf,"getLinkFormatRegistry");});function yn(e){let t=Ke(e);return Lf().rootRelativePrefixes.some(r=>t.startsWith(r))}function OX(e){let t=Ke(e).replace(/^\.\//,"");if(t.startsWith("../")||t.startsWith("/")||hn.test(t)||/^[a-zA-Z]:/.test(t)||yn(t))return false;let r=t.split("/").filter(n=>n.length>0)[0];return r!==void 0&&Lf().meshRootSegments.has(r)}function Fp(e,t,r){let n=ce(t),o=Q(t,t),i=Q(t,r),a=Ke(e);if(hn.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=dw(a,o);return c&&c!==l?[l,c]:[l]}if(yn(a))return [Q(t,n.join(o,a))];if(a.includes("/")){let l=Q(t,n.join(o,".agentsmesh")),c=OX(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 wX.has(a)?[]:a.includes(".")?[Q(t,n.join(n.dirname(i),a))]:[]}function Mp(e,t){let r=[t];if(!uw(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 Rw(e,t,r){let n=t>0?e.at(t-1):"",o=r<e.length?e.at(r):"";return n==="*"||o==="*"}function Cf(e){let t=[];for(let r of Lf().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(bX))t.push([r.index??0,(r.index??0)+r[0].length]);for(let r of e.matchAll(AX))t.push([r.index??0,(r.index??0)+r[0].length]);for(let r of e.matchAll(TX))t.push([r.index??0,(r.index??0)+r[0].length]);return t}var wX,bX,AX,TX,Sw,Ac,xi=d(()=>{It();hw();s(yn,"isRootRelativePathToken");s(OX,"isMeshRootRelativePathToken");wX=new Set(["AGENTS.md","CLAUDE.md","GEMINI.md","codex.md",".windsurfrules",".cursorrules"]),bX=/^(?:```|~~~)[^\n]*\n[\s\S]*?^(?:```|~~~)/gm,AX=/<!-- agentsmesh:root-generation-contract:start -->[\s\S]*?<!-- agentsmesh:root-generation-contract:end -->/g,TX=/<!-- agentsmesh:embedded-rules:start -->[\s\S]*?<!-- agentsmesh:embedded-rules:end -->/g,Sw=/(?:\.\.[\\/]|\.\/|\.\\|\/[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,Ac=/(?::(\d+)){1,2}$/;s(Fp,"resolveProjectPath");s(Mp,"expandResolvedPaths");s(Rw,"isGlobAdjacent");s(Cf,"protectedRanges");});function xX(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 Iw(e){return xX(e.tokenContext)}function Y_(e,t){let r=ce(e),n=Q(e,e),o=Q(e,t);if(o===n)return true;let i=n.endsWith(r.sep)?n:`${n}${r.sep}`;return o.startsWith(i)}function kw(e){let t=ce(e);return Q(e,t.join(e,".agentsmesh"))}function _n(e,t){let r=ce(e),n=kw(e),o=Q(e,t);if(o===n)return true;let i=n.endsWith(r.sep)?n:`${n}${r.sep}`;return o.startsWith(i)}function Lw(e,t,r){let n=ce(e),o=kw(e),i=Q(e,t);if(!_n(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 X_(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 Tc(e,t,r){let n=X_(e,t,r);return n===null?null:{kind:"projectRoot",rest:n,text:n}}function Q_(e,t,r,n,o){let i=ce(e),a=Q(e,e),l=Q(e,t),c=Q(e,r);if(!Y_(e,c))return Tc(e,c,n)?.text??null;let m=Q(e,i.dirname(l));if(!Y_(e,m)&&m!==a)return Tc(e,c,n)?.text??null;let p=i.relative(m,c).replace(/\\/g,"/");if(i.isAbsolute(p)||hn.test(p))return X_(e,c,n);let u=Q(e,i.join(m,p));return Y_(e,u)?(p===""||p==="."?p=".":o.explicitCurrentDirLinks===true&&m!==a&&!p.startsWith("../")&&!p.startsWith("./")&&(p=`./${p}`),n&&!p.endsWith("/")?`${p}/`:p):X_(e,c,n)}var q_=d(()=>{It();s(xX,"isReadingContext");s(Iw,"isReadingContextOptions");s(Y_,"isUnderProjectRoot");s(kw,"agentsMeshRoot");s(_n,"isUnderAgentsMesh");s(Lw,"toAgentsMeshRootRelative");s(X_,"toProjectRootRelative");s(Tc,"toProjectRootReference");s(Q_,"formatLinkPathForDestinationLegacy");});function Cw(e,t,r,n,o={}){let i=o.scope??"project",a=Q(e,r);if(Iw(o)&&_n(e,t)&&_n(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 Q_(e,t,r,n,o);if(i==="global"&&!_n(e,t))return Tc(e,a,n)?.text??null;let l=(()=>{if(_n(e,a))return a;let m=o.logicalMeshSourceAbsolute;return m&&_n(e,Q(e,m))?Q(e,m):null})();if(!l)return Tc(e,a,n)?.text??null;if(n||(o.pathIsDirectory?.(a)??false)){let m=Lw(e,l,n);return m!==null?m:Tc(e,l,n)?.text??null}return Q_(e,t,r,n,o)}var Ew=d(()=>{xi();It();q_();q_();s(Cw,"formatLinkPathForDestination");});function Ow(e,t,r,n){let o=ce(t),i=Ke(e);if(!yn(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 ww=d(()=>{It();xi();s(Ow,"resolveByDestinationSuffixStrip");});function bw(e){let t=null,r=false,n=null,o=null,i=null;for(let c of Fp(e.candidate,e.projectRoot,e.sourceFile)){let m=null,p=null;for(let u of Mp(e.projectRoot,c)){let f=Q(e.projectRoot,u),g=Q(e.projectRoot,e.translatePath(f)),h=e.pathExists(f),y=e.pathExists(g);if(y&&g!==f){t=g,n=f,r=true;break}(h||y)&&m===null&&(m=g,p=f),t===null&&(t=g);}if(!r&&m!==null&&o===null&&(o=m,i=p),r)break}if(!r){let c=Ow(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 Aw=d(()=>{It();xi();ww();s(bw,"resolveLinkTarget");});function Tw(e,t,r){return t>=2&&e[t-2]==="~"&&e[t-1]==="/"?true:t>=1&&e[t-1]==="~"&&r.startsWith("/")}function xw(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 Pw(e){let t=Ke(e);return t.startsWith("./")||t.startsWith("../")?true:t.startsWith("/")||hn.test(t)||yn(t)?false:t.includes("/")}var Dw=d(()=>{It();xi();s(Tw,"isTildeHomeRelativePathToken");s(xw,"isMarkdownLinkDestinationToken");s(Pw,"isRelativePathToken");});function PX(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 Nw(e,t,r){let n=e.lastIndexOf(`
|
|
60
60
|
`,t-1)+1,o=e.slice(n,t);if(!/^\s*\[[^\]\n]+\]:\s*<?\s*$/.test(o))return false;let i=r<e.length?e[r]:"";return i===""||i===`
|
|
61
|
-
`||i==="\r"||i===">"||i===" "||i===" "||i==='"'||i==="'"||i===":"||i==="#"||i==="?"}function
|
|
61
|
+
`||i==="\r"||i===">"||i===" "||i===" "||i==='"'||i==="'"||i===":"||i==="#"||i==="?"}function vw(e,t,r){let n=t>0?e[t-1]:"",o=r<e.length?e[r]:"";return n==="`"&&o==="`"?{role:"inline-code"}:Nw(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 Fw(e,t,r,n,o){if(t<0||r>e.length)return false;let{candidate:i}=bc(n),a=i.replace(Ac,""),l=Ke(a),c=t+a.length,m=e[t-1],p=e[r];return Nw(e,t,c)||m==="`"&&p==="`"?true:m==="'"&&p==="'"||m==='"'&&p==='"'?false:m==="<"&&p===">"?true:m==="["&&p==="]"?!(!o&&!yn(l)&&PX(e,t,n)):m==="@"?true:m==="("&&e[t-2]==="]"?p===")"||p==="#"||p==="?"||p===" "||p===" ":o?yn(l)?true:l.includes("/")||l.includes("\\")?l.startsWith("./")||l.startsWith("../")?true:(l.split(/[\\/]/).filter(Boolean).at(-1)??"").includes("."):false:false}var Mw=d(()=>{It();xi();s(PX,"markdownBracketLabelDuplicatesDestination");s(Nw,"isMarkdownReferenceDefinitionDestination");s(vw,"getTokenContext");s(Fw,"shouldRewritePathToken");});function Ef(e){let t=new Set,r=Cf(e.content);return {content:e.content.replace(Sw,(o,i,a)=>{if(r.some(([be,et])=>i>=be&&i<et)||!Fw(a,i,i+o.length,o,e.rewriteBarePathTokens===true)||Tw(a,i,o)||Rw(a,i,i+o.length))return o;let{candidate:l,suffix:c}=bc(o);if(!l)return o;let m=Ac.exec(l),p=m?l.slice(0,m.index):l,u=m?m[0]:"";if(!p)return o;let f=vw(a,i,i+p.length);if(f.role!=="markdown-link-dest"&&hn.test(p))return o;let{translatedPath:g,resolvedBeforeTranslate:h,matchedPath:y}=bw({candidate:p,rawToken:l,projectRoot:e.projectRoot,sourceFile:e.sourceFile,destinationFile:e.destinationFile,translatePath:e.translatePath,pathExists:e.pathExists}),_=h;if(!y||!g)return g&&t.add(g),o;let R=Ke(p),k=p.endsWith("/")||e.pathIsDirectory?.(g)===true;if(k&&!R.includes("/")&&!R.includes("\\"))return o;if(_===null){let be=Ke(l);if(be.startsWith("agentsmesh/")&&(be=`.${be}`),be.startsWith(".agentsmesh/")||be.includes("/.agentsmesh/")){let et=ce(e.projectRoot),lt=Q(e.projectRoot,e.projectRoot),_t=be.replace(/^\.\//,"");_=Q(e.projectRoot,et.join(lt,_t));}}let w=ce(e.projectRoot);if(e.scope==="global"){let be=Ke(l),et=be.startsWith(".agentsmesh/")||be.includes("/.agentsmesh/"),lt=yn(be)||Pw(be),_t=_!==null&&_n(e.projectRoot,_),Ii=_n(e.projectRoot,g);if(_===g&&!Ii&&!_t&&!et){let pp=Ke(w.relative(e.projectRoot,Q(e.projectRoot,e.sourceFile))).split("/").filter(Boolean)[0]??"",dp=(_!==null?Ke(w.relative(e.projectRoot,_)):"").split("/").filter(Boolean)[0]??"";if(pp.length>0&&pp===dp)return o}if(!lt&&!et&&!_t&&!Ii)return o}let D=Q(e.projectRoot,e.destinationFile),N=Q(e.projectRoot,g),K=Ke(w.relative(e.projectRoot,D)),J=Ke(w.relative(e.projectRoot,N)),ee=K.split("/").filter(Boolean)[0]??"",se=J.split("/").filter(Boolean)[0]??"",Pe=!Ke(p).startsWith(".agentsmesh/")&&!k&&ee.length>0&&ee===se&&ee.startsWith(".")&&ee!==".agentsmesh"||f.role==="markdown-link-dest"||xw(a,i,p),Tt=Cw(e.projectRoot,e.destinationFile,g,p.endsWith("/"),{explicitCurrentDirLinks:e.explicitCurrentDirLinks===true||Pe,scope:e.scope??"project",pathIsDirectory:e.pathIsDirectory,logicalMeshSourceAbsolute:k?null:_,forceRelative:Pe,tokenContext:f,originalToken:p});return Tt?`${Tt}${u}${c}`:o}),missing:[...t]}}var Z_=d(()=>{It();xi();Ew();Aw();Dw();Mw();s(Ef,"rewriteFileLinks");});function $w(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 fw(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 $w(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 $w(n,m))l.add(n.normalize(p));}return (c,m,p)=>Ef({content:c,projectRoot:t,sourceFile:m,destinationFile:p,translatePath:s(u=>a.get(u)??u,"translatePath"),pathExists:s(u=>{let f=n.normalize(u);return a.has(u)||a.has(f)||existsSync(u)||l.has(f)},"pathExists"),explicitCurrentDirLinks:false,rewriteBarePathTokens:true,scope:r,pathIsDirectory:s(u=>{try{return statSync(u).isDirectory()}catch{return false}},"pathIsDirectory")}).content}var he=d(()=>{It();gw();Z_();cn();s($w,"pathVariants");s(H,"createImportReferenceNormalizer");});async function Xe(e,t,r){let n=join(e,t),i={...await FX(n),...r};await O(dirname(n)),await L(n,JSON.stringify({mcpServers:i},null,2));}async function FX(e){let t=await I(e);if(t===null)return {};let r;try{r=JSON.parse(t);}catch{return {}}if(!r||typeof r!="object"||Array.isArray(r))return {};let n=r.mcpServers;if(!n||typeof n!="object"||Array.isArray(n))return {};let o={};for(let[i,a]of Object.entries(n))!a||typeof a!="object"||Array.isArray(a)||(o[i]=a);return o}var Sn=d(()=>{b();s(Xe,"writeMcpWithMerge");s(FX,"readExistingServers");});function us(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):typeof e=="string"?e?[e]:[]:[]}function Ar(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 nt(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function Ht(e){return !e||typeof e!="object"||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="string"))}var Pt=d(()=>{s(us,"toGlobsArray");s(Ar,"toToolsArray");s(nt,"toStringArray");s(Ht,"toStringRecord");});function $X(e,t){return t.some(r=>e.endsWith(r))}async function Re(e){let r=(await B(e.srcDir)).filter(o=>$X(o,e.extensions)),n=[];for(let o of r){let i=await I(o);if(!i)continue;let a=relative(e.srcDir,o).replace(/\\/g,"/"),l=await e.mapEntry({srcPath:o,relativePath:a,content:i,normalizeTo:s((c,m=i)=>e.normalize(m,o,c),"normalizeTo")});l&&(await O(dirname(l.destPath)),await L(l.destPath,l.content),n.push({fromTool:e.fromTool,fromPath:o,toPath:l.toPath,feature:l.feature}));}return n}var rr=d(()=>{b();s($X,"matchesExtension");s(Re,"importFileDirectory");});function Uw(e){return typeof e=="string"?e:void 0}function jX(e){for(let t of Object.keys(e))e[t]===void 0&&delete e[t];return e}function tS(e,t){return t?t(e):e}function UX(e){return async t=>{let r=join(t.destDir,t.relativePath),{frontmatter:n,body:o}=T(t.normalizeTo(r)),i=tS(n,e.frontmatterRemap),a=jX({root:false,description:Uw(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 BX(e){return async t=>{let r=join(t.destDir,t.relativePath),{frontmatter:n,body:o}=T(t.normalizeTo(r)),i=tS(n,e.frontmatterRemap),a=await Ee(r,{hasDescription:true,description:Uw(i.description),hasAllowedTools:true,allowedTools:nt(i["allowed-tools"])},o);return {destPath:r,toPath:`${e.canonicalDir}/${t.relativePath}`,content:a}}}function KX(e){return async t=>{let r=join(t.destDir,t.relativePath),{frontmatter:n,body:o}=T(t.normalizeTo(r)),i=tS(n,e.frontmatterRemap);return {destPath:r,toPath:`${e.canonicalDir}/${t.relativePath}`,content:await xe(r,i,o)}}}function Bw(e){if(e.map)return e.map;switch(e.preset){case "rule":return UX(e);case "command":return BX(e);case "agent":return KX(e);default:throw new Error(`ImportFeatureSpec for ${e.feature} (mode: ${e.mode}) needs a \`preset\` or \`map\``)}}var Kw=d(()=>{U();de();Pt();s(Uw,"pickString");s(jX,"pruneUndefined");s(tS,"applyRemap");s(UX,"ruleMapper");s(BX,"commandMapper");s(KX,"agentMapper");s(Bw,"resolveMapper");});function rS(e,t){return e?e[t]??[]:[]}var Ww,Hw=d(()=>{Ww=["rules","commands","agents","skills","mcp","hooks","permissions","ignore"];s(rS,"resolveScopedSources");});async function VX(e,t,r,n,o){if(!e.canonicalRootFilename)throw new Error(`singleFile spec for ${e.feature} must set canonicalRootFilename`);let i=join(r,e.canonicalDir);for(let a of t){let l=join(r,a),c=await I(l);if(c===null)continue;await O(i);let m=join(i,e.canonicalRootFilename),p=s(R=>o(c,l,R),"normalizeTo");if(e.map){let R;try{R=await e.map({absolutePath:l,relativePath:a,content:c,destDir:i,normalizeTo:p});}catch(k){let w=k instanceof Error?k.message:String(k);process.stderr.write(`\u26A0 skipping ${l}: ${w}
|
|
62
62
|
`);continue}if(!R)continue;return await L(R.destPath,R.content),[{fromTool:n,fromPath:l,toPath:R.toPath,feature:e.feature}]}let u=mn(p(m),l);if(!u.ok){process.stderr.write(`\u26A0 skipping ${l}: ${u.error.message}
|
|
63
|
-
`);continue}let{frontmatter:f,body:g}=u.value,h=e.frontmatterRemap?e.frontmatterRemap(f):f,y=e.markAsRoot?{...h,root:true}:h,_=await z(m,y,g);return await L(m,_),[{fromTool:n,fromPath:l,toPath:`${e.canonicalDir}/${e.canonicalRootFilename}`,feature:e.feature}]}return []}async function
|
|
64
|
-
`),null}return y?{destPath:y.destPath,toPath:y.toPath,feature:e.feature,content:y.content}:null},"mapEntry")});l.push(...p);}return l}function Hw(e){let t=e.canonicalFilename;return t.includes("/")||t.includes("\\")?t:posix.join(e.canonicalDir,t)}async function HX(e,t,r,n){if(!e.canonicalFilename)throw new Error(`flatFile spec for ${e.feature} must set canonicalFilename`);let o=Hw(e);for(let i of t){let a=join(r,i),l=await I(a);if(l===null)continue;let c=join(r,o);return await O(dirname(c)),await L(c,l.trimEnd()),[{fromTool:n,fromPath:a,toPath:o,feature:e.feature}]}return []}function zX(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:nt(l.args),env:Ht(l.env),description:c};continue}typeof l.url=="string"&&(o[i]={type:typeof l.type=="string"?l.type:"http",url:l.url,headers:Ht(l.headers),env:Ht(l.env),description:c});}return o}async function VX(e,t,r,n){if(!e.canonicalFilename)throw new Error(`mcpJson spec for ${e.feature} must set canonicalFilename`);let o=Hw(e);for(let i of t){let a=join(r,i),l=await I(a);if(l===null)continue;let c=zX(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 Ww(e,t,r,n,o){switch(e.mode){case "singleFile":return KX(e,t,r,n,o);case "directory":return WX(e,t,r,n,o);case "flatFile":return HX(e,t,r,n);case "mcpJson":return VX(e,t,r,n)}}async function JX(e,t,r,n,o){let i=Z_(e.source,t),a=Z_(e.fallbacks,t);if(i.length===0&&a.length===0)return [];if(i.length>0){let l=await Ww(e,i,r,n,o);if(l.length>0)return l}return a.length>0?Ww(e,a,r,n,o):[]}function YX(e,t){let r=e[t];return r?Array.isArray(r)?r:[r]:[]}async function X(e,t,r,n){let o=e.importer;if(!o)return [];let i=n?.normalize??await H(e.id,t,r),a=[];for(let l of Bw)for(let c of YX(o,l))a.push(...await JX(c,r,t,e.id,i));return a}var Ae=d(()=>{he();b();Sn();U();Pt();ue();rr();Uw();ss();Kw();s(KX,"runSingleFile");s(WX,"runDirectory");s(Hw,"resolveCanonicalFilePath");s(HX,"runFlatFile");s(zX,"parseMcpJson");s(VX,"runMcpJson");s(Ww,"dispatchSpec");s(JX,"runSpec");s(YX,"specsForFeature");s(X,"runDescriptorImport");});async function zw(e,t={}){let r=t.scope??"project",n=[],o=await H(ro,e,r);return n.push(...await X(Ef,e,r,{normalize:o})),await oe(e,r==="global"?br:Rt,ro,n,o),n}var Vw=d(()=>{he();ie();Ae();wc();eS();s(zw,"importFromAider");});function XX(e,t){return Yw(t).some(n=>QX(e,n))}function Jw(e,t){return e.filter(r=>XX(r,t))}function Yw(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 Yw(r+l+o))a.push(c);return a}function QX(e,t){return qX(t).test(e)}function qX(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 Xw=d(()=>{s(XX,"globMatch");s(Jw,"globFilter");s(Yw,"expandBraces");s(QX,"matchOne");s(qX,"globToRegex");});function Y(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(Jw(r,m).length>0){c=true;break}c||o.push({level:"warning",file:relative(t,l.source),message:`globs "${l.globs.join(", ")}" match 0 files in project`});}return o}var Oe=d(()=>{Xw();s(Y,"validateRules");});function qw(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:ro}))}var Zw=d(()=>{Oe();wc();s(qw,"lintRules");});function F(e,t,r){return {level:"warning",file:e,target:t,message:r}}function ZX(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 Di(e,t,r,n){let o=n?.unsupportedBy??t,i=ZX(r);return F(".agentsmesh/hooks.yaml",t,`${e} is not supported by ${o}; only ${i} are projected.`)}var Ie=d(()=>{s(F,"createWarning");s(ZX,"formatOxfordComma");s(Di,"createUnsupportedHookWarning");});function eb(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 tb(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 rb(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 nb=d(()=>{Ie();s(eb,"lintHooks");s(tb,"lintPermissions");s(rb,"lintMcp");});function C(e,t){return ce(e).relative(e,t).replace(/\\/g,"/")}async function E(e,t){return Ci(ce(e).join(e,t)).catch(()=>[])}function sb(e,t,r){e.set(t,r),e.set(`${t}/`,`${r}/`);}function sQ(e,t,r,n){let o=posix.dirname(t),i=posix.dirname(r);for(;o!==n&&o!==".";)sb(e,o,i),o=posix.dirname(o),i=posix.dirname(i);}function P(e,t,r,n){e.set(t,`${r}/${basename(t,n)}.md`);}function 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,`${ob}/${u}/SKILL.md`);return}let[o,...i]=n.split("/"),a=i.join("/");if(!o||!a)return;let l=o.startsWith(kc)?kc:o.startsWith(Ap)?Ap:null;if(l&&a==="SKILL.md"){e.set(t,`${nQ}/${o.slice(l.length)}.md`);return}let c=o.startsWith(Lc)?Lc:o.startsWith(Tp)?Tp:null;if(c&&a==="SKILL.md"){e.set(t,`${oQ}/${o.slice(c.length)}.md`);return}let m=`${ob}/${o}`;a==="SKILL.md"&&sb(e,`${r}/${o}`,m);let p=`${m}/${a}`;e.set(t,p),a!=="SKILL.md"&&sQ(e,t,p,`${r}/${o}`);}function iQ(e){return e.split("/").filter(Boolean)[0]??""}async function aQ(){if(tS!==void 0)return tS;let{BUILTIN_TARGETS:e}=await Promise.resolve().then(()=>(Te(),ib)),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=iQ(n);o.startsWith(".")&&t.add(o);}return tS=t,t}function nS(e){return e.split("/").some(t=>t.startsWith("."))}async function lQ(e){let t=[],r=await aQ(),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)||nS(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)||nS(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 lQ(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(nS(l))continue;let c=l.replace(/\//g,"-");e.set(o,`${rQ}/${c}.md`);}}var rQ,nQ,oQ,ob,tS,Le=d(()=>{It();b();Ge();Se();rQ=".agentsmesh/rules",nQ=".agentsmesh/commands",oQ=".agentsmesh/agents",ob=".agentsmesh/skills";s(C,"rel");s(E,"listFiles");s(sb,"addDirectoryMapping");s(sQ,"addAncestorMappings");s(P,"addSimpleFileMapping");s(G,"addSkillLikeMapping");s(iQ,"firstPathSegment");s(aQ,"targetRootSegments");s(nS,"hasHiddenSegment");s(lQ,"listScopedAgentsFiles");s(Of,"addScopedAgentsMappings");});var A,te,de,Ce=d(()=>{A=".agentsmesh/rules",te=".agentsmesh/commands",de=".agentsmesh/agents";});async function oS(e,t,r="project"){if(r==="global"){e.set(ps,`${A}/_root.md`);for(let n of await E(t,br))G(e,C(t,n),br);e.set(ja,".agentsmesh/ignore");return}e.set(Wt,`${A}/_root.md`);for(let n of await E(t,Rt))G(e,C(t,n),Rt);e.set(ms,".agentsmesh/ignore");}var ab=d(()=>{Le();wc();Ce();s(oS,"buildAiderImportPaths");});var Ua,Tr,Ni,no,ds,xc,Ba,lb,cb,sS,Pc=d(()=>{Ua="amazon-q",Tr=".amazonq/rules",Ni=".amazonq/mcp.json",no=".amazonq/cli-agents",ds=".aws/amazonq/rules",xc=".aws/amazonq/mcp.json",Ba=".aws/amazonq/cli-agents",lb=".agentsmesh/rules",cb=".agentsmesh/mcp.json",sS=".agentsmesh/agents";});async function iS(e,t,r="project"){let n=r==="global"?ds:Tr;for(let o of await E(t,n)){let i=C(t,o);P(e,i,A,".md");}}var mb=d(()=>{Le();Pc();Ce();s(iS,"buildAmazonQImportPaths");});var xr,kt,nr,aS,fs,Pr,gs,pb,Ka=d(()=>{xr="AGENTS.md",kt=".agents/skills",nr=".amp/settings.json",aS=".config/amp",fs=`${aS}/AGENTS.md`,Pr=`${aS}/skills`,gs=`${aS}/settings.json`,pb=".agentsmesh/rules";});async function lS(e,t,r="project"){if(r==="global"){e.set(fs,`${A}/_root.md`);for(let n of await E(t,Pr))G(e,C(t,n),Pr);e.set(gs,".agentsmesh/mcp.json");return}e.set(xr,`${A}/_root.md`);for(let n of await E(t,kt))G(e,C(t,n),kt);e.set(nr,".agentsmesh/mcp.json");}var ub=d(()=>{Le();Ka();Ce();s(lS,"buildAmpImportPaths");});var Wa,$p,Rn,Dr,jp,In,oo,Up,Bp,cS,so,io,Kp,Dc,mS,Ha,wf,db,za=d(()=>{Wa="antigravity",$p=".agents",Rn=`${$p}/rules`,Dr=`${Rn}/general.md`,jp=`${Rn}/_root.md`,In=`${$p}/skills`,oo=`${$p}/workflows`,Up=`${$p}/antigravity/mcp_config.json`,Bp=`${$p}/hooks.json`,cS=".gemini/config/hooks.json",so=".gemini/antigravity/GEMINI.md",io=".gemini/antigravity/skills",Kp=".gemini/antigravity/workflows",Dc=".gemini/antigravity/mcp_config.json",mS=".agentsmesh/rules/_root.md",Ha=".agentsmesh/rules",wf=".agentsmesh/commands",db=".agentsmesh/mcp.json";});async function pS(e,t,r="project"){if(r==="global"){e.set(so,`${A}/_root.md`);for(let n of await E(t,io))G(e,C(t,n),io);e.set(Dc,".agentsmesh/mcp.json");return}e.set(Dr,`${A}/_root.md`),e.set(jp,`${A}/_root.md`);for(let n of await E(t,Rn)){let o=C(t,n);o===Dr||o===jp||P(e,o,A,".md");}for(let n of await E(t,oo))P(e,C(t,n),te,".md");for(let n of await E(t,In))G(e,C(t,n),In);}var fb=d(()=>{Le();za();Ce();s(pS,"buildAntigravityImportPaths");});var ot,Wp,or,Nr,hs,sr,ao,lo,Hp,ys,_s,Va,co,Ss,uS,dS,fS,gS,hS,yS,Ja=d(()=>{ot="augment-code",Wp=".augment",or=`${Wp}/rules`,Nr=`${Wp}/commands`,hs=`${Wp}/agents`,sr=`${Wp}/skills`,ao=`${Wp}/settings.json`,lo=".augmentignore",Hp=".augment",ys=`${Hp}/rules`,_s=`${Hp}/commands`,Va=`${Hp}/agents`,co=`${Hp}/skills`,Ss=`${Hp}/settings.json`,uS=".agentsmesh/rules",dS=".agentsmesh/agents",fS=".agentsmesh/mcp.json",gS=".agentsmesh/hooks.yaml",hS=".agentsmesh/ignore",yS=".agentsmesh/permissions.yaml";});async function _S(e,t,r="project"){if(r==="global"){for(let n of await E(t,ys))P(e,C(t,n),A,".md");for(let n of await E(t,_s))P(e,C(t,n),te,".md");for(let n of await E(t,Va))P(e,C(t,n),de,".md");for(let n of await E(t,co))G(e,C(t,n),co);e.set(Ss,".agentsmesh/mcp.json");return}for(let n of await E(t,or))P(e,C(t,n),A,".md");for(let n of await E(t,Nr))P(e,C(t,n),te,".md");for(let n of await E(t,hs))P(e,C(t,n),de,".md");for(let n of await E(t,sr))G(e,C(t,n),sr);e.set(ao,".agentsmesh/mcp.json"),e.set(lo,".agentsmesh/ignore");}var gb=d(()=>{Le();Ja();Ce();s(_S,"buildAugmentCodeImportPaths");});var hb,Rs,vi,zp,Vp,Jp,Yp,Xp,Is,SS,Qp,Nc,qp,Zp,bf,Af,RS,eu,IS,Ya,yb,ks=d(()=>{hb="claude-code",Rs="CLAUDE.md",vi=".claude/CLAUDE.md",zp=".claude/rules",Vp=".claude/commands",Jp=".claude/agents",Yp=".claude/skills",Xp=".claude/settings.json",Is=".claude/hooks.json",SS=".claude/output-styles",Qp=".claudeignore",Nc=".mcp.json",qp=".claude.json",Zp=".agentsmesh/rules",bf=".agentsmesh/commands",Af=".agentsmesh/agents",RS=".agentsmesh/skills",eu=".agentsmesh/mcp.json",IS=".agentsmesh/permissions.yaml",Ya=".agentsmesh/hooks.yaml",yb=".agentsmesh/ignore";});async function kS(e,t,r="project"){if(e.set(".claude/CLAUDE.md",`${A}/_root.md`),e.set(Is,Ya),r==="project"&&e.set("CLAUDE.md",`${A}/_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"))P(e,C(t,n),A,".md");for(let n of await E(t,".claude/commands"))P(e,C(t,n),te,".md");for(let n of await E(t,".claude/agents"))P(e,C(t,n),de,".md");for(let n of await E(t,".claude/skills"))G(e,C(t,n),".claude/skills");}var _b=d(()=>{Le();ks();Ce();s(kS,"buildClaudeCodeImportPaths");});var Fi,Ls,Xa,Cs,Sb,Dt,ir,Es,Mi,Qa,qa,Za,el,LS,Gi,Tf,CS,ES,tu,Rb,vr=d(()=>{Fi="cline",Ls=".clinerules",Xa=".clineignore",Cs=".cline/cline_mcp_settings.json",Sb=".cline/mcp_settings.json",Dt=".cline/skills",ir=".cline/agents",Es=".clinerules/workflows",Mi="AGENTS.md",Qa=".clinerules/hooks",qa="Documents/Cline/Rules",Za="Documents/Cline/Workflows",el="Documents/Cline/Hooks",LS=".agentsmesh/hooks.yaml",Gi=".agentsmesh/rules",Tf=".agentsmesh/commands",CS=".agentsmesh/ignore",ES=".agentsmesh/mcp.json",tu=".agentsmesh/agents",Rb=".agentsmesh/skills";});async function OS(e,t,r="project"){if(r==="global"){for(let n of await E(t,qa))P(e,C(t,n),A,".md");for(let n of await E(t,Za))P(e,C(t,n),te,".md");for(let n of await E(t,Dt))G(e,C(t,n),Dt);for(let n of await E(t,ir))P(e,C(t,n),de,".md");e.set(Cs,".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"||P(e,o,A,".md");}for(let n of await E(t,".clinerules/workflows"))P(e,C(t,n),te,".md");for(let n of await E(t,".cline/skills"))G(e,C(t,n),".cline/skills");for(let n of await E(t,ir))P(e,C(t,n),de,".md");}var Ib=d(()=>{Le();vr();Ce();s(OS,"buildClineImportPaths");});async function wS(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"))P(e,C(t,n),A,".md");for(let n of await E(t,".codex/rules")){let o=C(t,n);o.endsWith(".rules")?P(e,o,A,".rules"):o.endsWith(".md")&&P(e,o,A,".md");}for(let n of await E(t,".codex/agents"))P(e,C(t,n),de,".toml");for(let n of await E(t,".agents/skills"))G(e,C(t,n),".agents/skills");}var kb=d(()=>{Le();Ce();s(wS,"buildCodexCliImportPaths");});var tl,kn,mo,bS,xf,Os,AS,ar,vc,ru,rl,Pf,Df,TS,xS,po=d(()=>{tl="continue",kn=".continue/rules",mo=".continue/prompts",bS=".continue/mcpServers",xf=`${bS}/agentsmesh.json`,Os=`${kn}/general.md`,AS=`${kn}/_root.md`,ar=".continue/skills",vc=".continue/AGENTS.md",ru=".continue/config.yaml",rl=".continue/permissions.yaml",Pf=".agentsmesh/rules",Df=".agentsmesh/commands",TS=".agentsmesh/mcp.json",xS=".agentsmesh/permissions.yaml";});async function PS(e,t,r="project"){e.set(Os,`${A}/_root.md`),e.set(AS,`${A}/_root.md`);for(let n of await E(t,".continue/rules")){let o=C(t,n);o===Os||o===AS||P(e,o,A,".md");}for(let n of await E(t,".continue/prompts"))e.set(C(t,n),`${te}/${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 Lb=d(()=>{Le();po();Ce();s(PS,"buildContinueImportPaths");});function pQ(e,t){if(t.endsWith(".instructions.md")){e.set(t,`${A}/${basename(t,".instructions.md")}.md`);return}P(e,t,A,".md");}async function DS(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"))pQ(e,C(t,r));for(let r of await E(t,".github/prompts"))e.set(C(t,r),`${te}/${basename(r,".prompt.md")}.md`);for(let r of await E(t,".github/agents"))e.set(C(t,r),`${de}/${basename(r,".agent.md")}.md`);for(let r of await E(t,".github/skills"))G(e,C(t,r),".github/skills");}var Cb=d(()=>{Le();Ce();s(pQ,"addCopilotInstructionMapping");s(DS,"buildCopilotImportPaths");});var Fr,Mr,pt,lr,ws,Eb,Fc,cr,nl,vf,Ff,Mf,Mc=d(()=>{Fr="crush",Mr="CRUSH.md",pt=".crush/skills",lr="crush.json",ws=".crushignore",Eb=".config/crush",Fc=`${Eb}/crush.json`,cr=".config/crush/skills",nl=`${Eb}/CRUSH.md`,vf=".agentsmesh/rules",Ff=".agentsmesh/ignore",Mf=".agentsmesh/mcp.json";});async function NS(e,t,r="project"){if(r==="global"){for(let n of await E(t,cr))G(e,C(t,n),cr);return}e.set(Mr,`${vf}/_root.md`),e.set(lr,Mf),e.set(ws,Ff);for(let n of await E(t,pt))G(e,C(t,n),pt);}var Ob=d(()=>{Le();Mc();s(NS,"buildCrushImportPaths");});var wb,$i,bb,Gr,bs,$r,jr,Lt,mr,uo,Gf,Ln,vS,uQ,Gc,Cn,fo,ji,Ui,Ab,$c,FS,nu,MS,Qe=d(()=>{wb="cursor",$i="AGENTS.md",bb=".cursorrules",Gr=".cursor/rules",bs=`${Gr}/general.mdc`,$r=".cursor/commands",jr=".cursor/agents",Lt=".cursor/skills",mr=".cursor/mcp.json",uo=".cursor/hooks.json",Gf=".cursor/settings.json",Ln=".cursorignore",vS=".cursorindexingignore",uQ=".agentsmesh-exports/cursor",Gc=`${uQ}/user-rules.md`,Cn=".cursor/AGENTS.md",fo=".agentsmesh/rules",ji=".agentsmesh/commands",Ui=".agentsmesh/agents",Ab=".agentsmesh/skills",$c=".agentsmesh/mcp.json",FS=".agentsmesh/permissions.yaml",nu=".agentsmesh/hooks.yaml",MS=".agentsmesh/ignore";});async function GS(e,t,r="project"){if(r==="global"){e.set(mr,".agentsmesh/mcp.json"),e.set(".cursor/AGENTS.md",`${A}/_root.md`);for(let n of await E(t,".cursor/rules"))P(e,C(t,n),A,".mdc");for(let n of await E(t,".cursor/commands"))P(e,C(t,n),te,".md");for(let n of await E(t,".cursor/agents"))P(e,C(t,n),de,".md");for(let n of await E(t,".cursor/skills"))G(e,C(t,n),".cursor/skills");return}e.set("AGENTS.md",`${A}/_root.md`);for(let n of await E(t,".cursor/rules"))P(e,C(t,n),A,".mdc");for(let n of await E(t,".cursor/commands"))P(e,C(t,n),te,".md");for(let n of await E(t,".cursor/agents"))P(e,C(t,n),de,".md");for(let n of await E(t,".cursor/skills"))G(e,C(t,n),".cursor/skills");}var Tb=d(()=>{Le();Qe();Ce();s(GS,"buildCursorImportPaths");});var go,Ur,Ct,As,$f,Ts,En,ol,xb,Pb,jc=d(()=>{go="deepagents-cli",Ur=".deepagents/AGENTS.md",Ct=".deepagents/skills",As=".mcp.json",$f=".deepagents/hooks.json",Ts=".deepagents/AGENTS.md",En=".deepagents/skills",ol=".deepagents/.mcp.json",xb=".deepagents/hooks.json",Pb=".agentsmesh/rules";});async function $S(e,t,r="project"){if(r==="global"){e.set(Ts,`${A}/_root.md`);for(let n of await E(t,En))G(e,C(t,n),En);e.set(ol,".agentsmesh/mcp.json");return}e.set(Ur,`${A}/_root.md`);for(let n of await E(t,Ct))G(e,C(t,n),Ct);e.set(As,".agentsmesh/mcp.json");}var Db=d(()=>{Le();jc();Ce();s($S,"buildDeepagentsCliImportPaths");});var pr,Br,Kr,Bi,On,ho,xs,Ps,Uc,Ki,Wi,Bc,Nb,vb,Fb,Mb,Gb,sl=d(()=>{pr="factory-droid",Br="AGENTS.md",Kr=".factory/skills",Bi=".factory/commands",On=".factory/droids",ho=".factory/mcp.json",xs=".factory/AGENTS.md",Ps=".factory/skills",Uc=".factory/commands",Ki=".factory/droids",Wi=".factory/mcp.json",Bc=".factory/hooks.json",Nb=".factory/hooks.json",vb=".agentsmesh/rules",Fb=".agentsmesh/agents",Mb=".agentsmesh/commands",Gb=".agentsmesh/hooks.yaml";});async function jS(e,t,r="project"){if(r==="global"){e.set(xs,`${A}/_root.md`);for(let n of await E(t,Uc))P(e,C(t,n),te,".md");for(let n of await E(t,Ki))P(e,C(t,n),de,".md");for(let n of await E(t,Ps))G(e,C(t,n),Ps);e.set(Wi,".agentsmesh/mcp.json");return}e.set(Br,`${A}/_root.md`);for(let n of await E(t,Bi))P(e,C(t,n),te,".md");for(let n of await E(t,On))P(e,C(t,n),de,".md");for(let n of await E(t,Kr))G(e,C(t,n),Kr);e.set(ho,".agentsmesh/mcp.json");}var $b=d(()=>{Le();sl();Ce();s(jS,"buildFactoryDroidImportPaths");});async function US(e,t){for(let r of await E(t,".gemini/rules"))P(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,`${te}/${c}.md`);}for(let r of await E(t,".gemini/agents"))P(e,C(t,r),de,".md");for(let r of await E(t,".gemini/skills"))G(e,C(t,r),".gemini/skills");}var jb=d(()=>{Le();Ce();s(US,"buildGeminiCliImportPaths");});var Wr,ur,zt,yo,jf,_o,Hi,il,Hr,al,ll,Ub,Bb,Kb,BS,zi=d(()=>{Wr="goose",ur=".goosehints",zt=".agents/skills",yo=".gooseignore",jf=".config/goose",_o=`${jf}/.goosehints`,Hi=`${jf}/.gooseignore`,il=`${jf}/config.yaml`,Hr=".agents/skills",al=`${jf}/permission.yaml`,ll=".agents/plugins/agentsmesh/hooks/hooks.json",Ub=".agentsmesh/rules",Bb=".agentsmesh/ignore",Kb=".agentsmesh/hooks.yaml",BS=".agentsmesh/permissions.yaml";});async function KS(e,t,r="project"){if(r==="global"){e.set(_o,`${A}/_root.md`);for(let n of await E(t,Hr))G(e,C(t,n),Hr);e.set(Hi,".agentsmesh/ignore");return}e.set(ur,`${A}/_root.md`);for(let n of await E(t,zt))G(e,C(t,n),zt);e.set(yo,".agentsmesh/ignore");}var Wb=d(()=>{Le();zi();Ce();s(KS,"buildGooseImportPaths");});var Ds,wn,Hb,Kc=d(()=>{Ds="jules",wn="AGENTS.md",Hb=".agentsmesh/rules";});async function WS(e,t,r="project"){r!=="global"&&e.set(wn,`${A}/_root.md`);}var zb=d(()=>{Kc();Ce();s(WS,"buildJulesImportPaths");});var cl,Vi,Uf,Vb,So,Jb,dQ,ou,ml,su,Wc,Hc,iu,au,lu,cu,mu,fQ,Bf,pl,Yb,Kf,HS,Wf,Xb,Qb,qb,Zb,zc=d(()=>{cl="junie",Vi=".junie",Uf=`${Vi}/guidelines.md`,Vb=`${Vi}/ci-guidelines.md`,So=`${Vi}/AGENTS.md`,Jb="AGENTS.md",dQ=`${Vi}/mcp`,ou=`${dQ}/mcp.json`,ml=`${Vi}/skills`,su=`${Vi}/rules`,Wc=`${Vi}/commands`,Hc=`${Vi}/agents`,iu=".aiignore",au=".junie",lu=`${au}/skills`,cu=`${au}/agents`,mu=`${au}/commands`,fQ=`${au}/mcp`,Bf=`${fQ}/mcp.json`,pl=`${au}/AGENTS.md`,Yb=".agents/skills",Kf=".junie/allowlist.json",HS=".agentsmesh/rules/_root.md",Wf=".agentsmesh/rules",Xb=".agentsmesh/commands",Qb=".agentsmesh/agents",qb=".agentsmesh/mcp.json",Zb=".agentsmesh/ignore";});async function zS(e,t){e.set(Uf,`${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"))P(e,C(t,r),A,".md");for(let r of await E(t,".junie/commands"))P(e,C(t,r),te,".md");for(let r of await E(t,".junie/agents"))P(e,C(t,r),de,".md");for(let r of await E(t,".junie/skills"))G(e,C(t,r),".junie/skills");}var eA=d(()=>{Le();zc();Ce();s(zS,"buildJunieImportPaths");});var Nt,ul,pu,uu,bn,Ro,Io,ko,zr,Ns,dl,Hf,fl,Vc,gl,du,zf,Jc,vs,Ji,Yi,Xi,Fs,hl,fu,tA,Qi,Yc,yl,rA,nA,Ms=d(()=>{Nt="kilo-code",ul="kilo.jsonc",pu=".config/kilo/kilo.jsonc",uu=".kilo",bn="AGENTS.md",Ro=`${uu}/rules`,Io=`${uu}/commands`,ko=`${uu}/agents`,zr=`${uu}/skills`,Ns=`${uu}/mcp.json`,dl=".kilocodeignore",Hf=".kilocode",fl=`${Hf}/rules`,Vc=`${Hf}/workflows`,gl=`${Hf}/skills`,du=`${Hf}/mcp.json`,zf=".kilocodemodes",Jc=".kilo",vs=`${Jc}/AGENTS.md`,Ji=`${Jc}/rules`,Yi=`${Jc}/commands`,Xi=`${Jc}/agents`,Fs=`${Jc}/skills`,hl=`${Jc}/mcp.json`,fu=".kilocodeignore",tA=".agents/skills",Qi=".agentsmesh/rules",Yc=".agentsmesh/commands",yl=".agentsmesh/agents",rA=".agentsmesh/mcp.json",nA=".agentsmesh/ignore";});async function VS(e,t,r="project"){if(r==="global"){e.set(vs,`${A}/_root.md`);for(let n of await E(t,Ji))P(e,C(t,n),A,".md");for(let n of await E(t,Yi))P(e,C(t,n),te,".md");for(let n of await E(t,Xi))P(e,C(t,n),de,".md");for(let n of await E(t,Fs))G(e,C(t,n),Fs);e.set(hl,".agentsmesh/mcp.json");return}e.set(bn,`${A}/_root.md`);for(let n of await E(t,Ro))P(e,C(t,n),A,".md");for(let n of await E(t,Io))P(e,C(t,n),te,".md");for(let n of await E(t,ko))P(e,C(t,n),de,".md");for(let n of await E(t,zr))G(e,C(t,n),zr);e.set(Ns,".agentsmesh/mcp.json");for(let n of await E(t,fl)){let o=C(t,n);if(basename(o)==="00-root.md"){e.set(o,`${A}/_root.md`);continue}P(e,o,A,".md");}for(let n of await E(t,Vc))P(e,C(t,n),te,".md");for(let n of await E(t,gl))G(e,C(t,n),gl);e.set(du,".agentsmesh/mcp.json");}var oA=d(()=>{Le();Ms();Ce();s(VS,"buildKiloCodeImportPaths");});var dr,An,gu,Tn,vt,xn,qi,hQ,Xc,Qc,_l,Pn,Zi,Sl,hu,yu,sA,JS,YS,iA,aA,XS,lA,qc=d(()=>{dr="kiro",An="AGENTS.md",gu=".kiro",Tn=`${gu}/steering`,vt=`${gu}/skills`,xn=`${gu}/agents`,qi=`${gu}/hooks`,hQ=`${gu}/settings`,Xc=`${hQ}/mcp.json`,Qc=".kiroignore",_l=".kiro/steering",Pn=".kiro/steering/AGENTS.md",Zi=".kiro/skills",Sl=".kiro/agents",hu=".kiro/settings/mcp.json",yu=".kiro/settings/kiroignore",sA=".agents/skills",JS=".agentsmesh/rules/_root.md",YS=".agentsmesh/rules",iA=".agentsmesh/agents",aA=".agentsmesh/mcp.json",XS=".agentsmesh/hooks.yaml",lA=".agentsmesh/ignore";});async function QS(e,t,r="project"){if(r==="global"){e.set(Pn,`${A}/_root.md`);for(let n of await E(t,_l)){let o=C(t,n);o!==Pn&&P(e,o,A,".md");}for(let n of await E(t,Zi))G(e,C(t,n),Zi);for(let n of await E(t,Sl))P(e,C(t,n),de,".md");return}e.set(An,`${A}/_root.md`);for(let n of await E(t,Tn))P(e,C(t,n),A,".md");for(let n of await E(t,vt))G(e,C(t,n),vt);for(let n of await E(t,xn))P(e,C(t,n),de,".md");}var cA=d(()=>{Le();qc();Ce();s(QS,"buildKiroImportPaths");});var Vr,Vf,Dn,Lo,Co,Eo,Jr,Et,Zc,Gs,ea,ta,ra,$s,Yr,mA,_u,Jf,Yf,qS,ZS,js=d(()=>{Vr="opencode",Vf=".opencode",Dn="AGENTS.md",Lo=`${Vf}/rules`,Co=`${Vf}/commands`,Eo=`${Vf}/agents`,Jr=`${Vf}/skills`,Et="opencode.json",Zc=".config/opencode",Gs=`${Zc}/AGENTS.md`,ea=`${Zc}/rules`,ta=`${Zc}/commands`,ra=`${Zc}/agents`,$s=`${Zc}/skills`,Yr=`${Zc}/opencode.json`,mA=".agents/skills",_u=".agentsmesh/rules",Jf=".agentsmesh/commands",Yf=".agentsmesh/agents",qS=".agentsmesh/mcp.json",ZS=".agentsmesh/permissions.yaml";});async function eR(e,t,r="project"){if(r==="global"){e.set(Gs,`${A}/_root.md`);for(let n of await E(t,ea))P(e,C(t,n),A,".md");for(let n of await E(t,ta))P(e,C(t,n),te,".md");for(let n of await E(t,ra))P(e,C(t,n),de,".md");for(let n of await E(t,$s))G(e,C(t,n),$s);e.set(Yr,".agentsmesh/mcp.json");return}e.set(Dn,`${A}/_root.md`);for(let n of await E(t,Lo))P(e,C(t,n),A,".md");for(let n of await E(t,Co))P(e,C(t,n),te,".md");for(let n of await E(t,Eo))P(e,C(t,n),de,".md");for(let n of await E(t,Jr))G(e,C(t,n),Jr);e.set(Et,".agentsmesh/mcp.json");}var pA=d(()=>{Le();js();Ce();s(eR,"buildOpencodeImportPaths");});var Oo,Xr,Ft,wo,tR,Us,Nn,Rl,uA,dA,em=d(()=>{Oo="pi-agent",Xr="AGENTS.md",Ft=".pi/skills",wo=".pi/prompts",tR=".pi/agent",Us=`${tR}/AGENTS.md`,Nn=`${tR}/skills`,Rl=`${tR}/prompts`,uA=".agentsmesh/rules",dA=".agentsmesh/commands";});async function rR(e,t,r="project"){if(r==="global"){e.set(Us,`${A}/_root.md`);for(let n of await E(t,Rl))P(e,C(t,n),te,".md");for(let n of await E(t,Nn))G(e,C(t,n),Nn);return}e.set(Xr,`${A}/_root.md`);for(let n of await E(t,wo))P(e,C(t,n),te,".md");for(let n of await E(t,Ft))G(e,C(t,n),Ft);}var nR=d(()=>{Le();em();Ce();s(rR,"buildPiAgentImportPaths");});var vn,fr,bo,Fn,Mn,gr,Qr,Bs,Ao,Ks,Ws,To,Hs,oR,fA,gA,Il=d(()=>{vn="qwen-code",fr="QWEN.md",bo=".qwen/rules",Fn=".qwen/commands",Mn=".qwen/agents",gr=".qwen/skills",Qr=".qwen/settings.json",Bs=".qwenignore",Ao=".qwen/QWEN.md",Ks=".qwen/settings.json",Ws=".qwen/commands",To=".qwen/skills",Hs=".qwen/agents",oR=".agentsmesh/rules",fA=".agentsmesh/commands",gA=".agentsmesh/agents";});async function sR(e,t,r="project"){if(r==="global"){e.set(Ao,`${A}/_root.md`),e.set(Ks,".agentsmesh/mcp.json");for(let n of await E(t,Ws))P(e,C(t,n),te,".md");for(let n of await E(t,Hs))P(e,C(t,n),de,".md");for(let n of await E(t,To))G(e,C(t,n),To);return}e.set(fr,`${A}/_root.md`),e.set(Qr,".agentsmesh/mcp.json"),e.set(Bs,".agentsmesh/ignore");for(let n of await E(t,bo))P(e,C(t,n),A,".md");for(let n of await E(t,Fn))P(e,C(t,n),te,".md");for(let n of await E(t,Mn))P(e,C(t,n),de,".md");for(let n of await E(t,gr))G(e,C(t,n),gr);}var hA=d(()=>{Le();Ce();Il();s(sR,"buildQwenCodeImportPaths");});var xo,Gn,Vt,yA,tm=d(()=>{xo="replit-agent",Gn="replit.md",Vt=".agents/skills",yA=".agentsmesh/rules";});async function iR(e,t,r="project"){if(r!=="global"){e.set(Gn,`${A}/_root.md`);for(let n of await E(t,Vt))G(e,C(t,n),Vt);}}var aR=d(()=>{Le();tm();Ce();s(iR,"buildReplitAgentImportPaths");});var zs,kl,$n,Su,Vs,Js,Po,Ru,Iu,na,ku,Xf,oa,sa,Ys,Ll,Lu,ia,_A,Cl,lR,Qf,SA,RA,El=d(()=>{zs="roo-code",kl=".roo",$n=`${kl}/rules/00-root.md`,Su=".roorules",Vs=`${kl}/rules`,Js=`${kl}/commands`,Po=`${kl}/skills`,Ru=`${kl}/mcp.json`,Iu=".rooignore",na=".roomodes",ku="settings/custom_modes.yaml",Xf=".roo",oa=`${Xf}/rules`,sa=`${Xf}/commands`,Ys=`${Xf}/skills`,Ll="mcp_settings.json",Lu=".rooignore",ia=`${Xf}/AGENTS.md`,_A=".agents/skills",Cl=".agentsmesh/rules",lR=".agentsmesh/agents",Qf=".agentsmesh/commands",SA=".agentsmesh/mcp.json",RA=".agentsmesh/ignore";});async function cR(e,t,r="project"){if(r==="global"){e.set(ia,`${A}/_root.md`);for(let n of await E(t,oa))P(e,C(t,n),A,".md");for(let n of await E(t,sa))P(e,C(t,n),te,".md");for(let n of await E(t,Ys))G(e,C(t,n),Ys);e.set(Ll,".agentsmesh/mcp.json");return}e.set($n,`${A}/_root.md`),e.set(Su,`${A}/_root.md`);for(let n of await E(t,Vs)){let o=C(t,n);o!==$n&&P(e,o,A,".md");}for(let n of await E(t,".roo")){let o=C(t,n);/^\.roo\/rules-[^/]+\/.+\.md$/.test(o)&&P(e,o,A,".md");}for(let n of await E(t,Js))P(e,C(t,n),te,".md");for(let n of await E(t,Po))G(e,C(t,n),Po);}var IA=d(()=>{Le();El();Ce();s(cR,"buildRooCodeImportPaths");});var Do,qr,kA,ut,Xs,LA,Qs,hr,rm,Cu,CA,Ol=d(()=>{Do="rovodev",qr="AGENTS.md",kA=".rovodev",ut=`${kA}/skills`,Xs=`${kA}/mcp.json`,LA=".rovodev",Qs=".rovodev/AGENTS.md",hr=".rovodev/skills",rm=".rovodev/mcp.json",Cu=".rovodev/config.yml",CA=".agentsmesh/rules";});async function mR(e,t,r="project"){if(r==="global"){e.set(Qs,`${A}/_root.md`);for(let n of await E(t,hr))G(e,C(t,n),hr);e.set(rm,".agentsmesh/mcp.json");return}e.set(qr,`${A}/_root.md`);for(let n of await E(t,ut))G(e,C(t,n),ut);e.set(Xs,".agentsmesh/mcp.json");}var EA=d(()=>{Le();Ol();Ce();s(mR,"buildRovodevImportPaths");});var Zr,Eu,yr,_r,en,wl,nm,qs,tn,jn,Ou,OA,aa,om,wu,wA,bA,AA,sm=d(()=>{Zr="trae",Eu=".trae",yr=`${Eu}/rules`,_r=`${yr}/project_rules.md`,en=`${Eu}/skills`,wl=`${Eu}/mcp.json`,nm=`${Eu}/.ignore`,qs=".trae/user_rules",tn=".trae/user_rules/rules.md",jn=".trae/skills",Ou=".trae/mcp.json",OA=".agents/skills",aa=`${Eu}/commands`,om=".trae/commands",wu=".agentsmesh/rules",wA=".agentsmesh/commands",bA=".agentsmesh/mcp.json",AA=".agentsmesh/ignore";});async function pR(e,t,r="project"){if(r==="global"){e.set(tn,`${A}/_root.md`);for(let n of await E(t,qs)){let o=C(t,n);o!==tn&&P(e,o,A,".md");}for(let n of await E(t,om))P(e,C(t,n),te,".md");for(let n of await E(t,jn))G(e,C(t,n),jn);return}e.set(_r,`${A}/_root.md`);for(let n of await E(t,yr)){let o=C(t,n);o!==_r&&P(e,o,A,".md");}for(let n of await E(t,aa))P(e,C(t,n),te,".md");for(let n of await E(t,en))G(e,C(t,n),en);}var TA=d(()=>{Le();sm();Ce();s(pR,"buildTraeImportPaths");});var No,Un,uR,Ot,la,Sr,xA,im=d(()=>{No="warp",Un="AGENTS.md",uR="WARP.md",Ot=".warp/skills",la=".mcp.json",Sr=".warp/skills",xA=".agentsmesh/rules";});async function dR(e,t,r="project"){if(r==="global"){for(let n of await E(t,Sr))G(e,C(t,n),Sr);return}e.set(Un,`${A}/_root.md`);for(let n of await E(t,Ot))G(e,C(t,n),Ot);e.set(la,".agentsmesh/mcp.json");}var PA=d(()=>{Le();im();Ce();s(dR,"buildWarpImportPaths");});async function fR(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"))P(e,C(t,r),A,".md");for(let r of await E(t,".windsurf/workflows"))P(e,C(t,r),te,".md");for(let r of await E(t,".windsurf/skills"))G(e,C(t,r),".windsurf/skills");}var DA=d(()=>{Le();Ce();s(fR,"buildWindsurfImportPaths");});var Bn,vo,Fo,yQ,Mo,NA,bl=d(()=>{Bn=".rules",vo=".zed/settings.json",Fo=".agents/skills",yQ=".config/zed",Mo=`${yQ}/settings.json`,NA=".agentsmesh/rules";});async function gR(e,t,r="project"){if(r==="global"){e.set(Mo,".agentsmesh/mcp.json");return}e.set(Bn,`${A}/_root.md`);for(let n of await E(t,Fo))G(e,C(t,n),Fo);e.set(vo,".agentsmesh/mcp.json");}var vA=d(()=>{bl();Le();Ce();s(gR,"buildZedImportPaths");});var FA=d(()=>{ab();mb();ub();fb();gb();_b();Ib();kb();Lb();Cb();Ob();Tb();Db();$b();jb();Wb();zb();eA();oA();cA();pA();nR();hA();aR();IA();EA();TA();PA();DA();vA();});var we=d(()=>{FA();});function RQ(e,t){if(e===null)return t;let r;try{r=parse(e);}catch{return t}if(!r||typeof r!="object"||Array.isArray(r))return t;let n=r,o=new Set,i=n.read;if(typeof i=="string")o.add(i);else if(Array.isArray(i))for(let a of i)typeof a=="string"&&o.add(a);return o.add(Wt),n.read=[...o],stringify(n)}var IQ,kQ,LQ,MA,Ef,eS=d(()=>{Ge();Se();lw();Vw();Zw();nb();we();wc();s(RQ,"mergeAiderConf");IQ={name:ro,primaryRootInstructionPath:Wt,generateRules:nw,generateCommands:sw,generateAgents:iw,generateSkills:ow,generateIgnore:aw,importFrom:zw},kQ={rootInstructionPath:Wt,skillDir:Rt,managedOutputs:{dirs:[Rt],files:[Wt,Oc,ms]},paths:{rulePath(e){return Wt},commandPath(e){return `${Rt}/${q(e)}/SKILL.md`},agentPath(e){return `${Rt}/${V(e)}/SKILL.md`}}},LQ={rootInstructionPath:ps,skillDir:br,managedOutputs:{dirs:[br],files:[ps,ja]},rewriteGeneratedPath(e){return e===Wt?ps:e===ms?ja:e===Oc?null:e.startsWith(`${Rt}/`)?e.replace(`${Rt}/`,`${br}/`):e},paths:{rulePath(e){return ps},commandPath(e){return `${br}/${q(e)}/SKILL.md`},agentPath(e){return `${br}/${V(e)}/SKILL.md`}}},MA={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"native",permissions:"none"},Ef={id:ro,metadata:{displayName:"Aider",category:"cli",officialUrl:"https://aider.chat",shortDescription:"Open-source terminal AI pair programmer"},generators:IQ,capabilities:MA,emptyImportMessage:"No Aider config found (CONVENTIONS.md, .aider/skills, or .aiderignore).",lintRules:qw,lint:{hooks:eb,permissions:tb,mcp:rb},supportsConversion:{commands:true,agents:true},project:kQ,globalSupport:{capabilities:MA,detectionPaths:[ps,ja,br],layout:LQ},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Wt],global:[ps]},canonicalDir:tw,canonicalRootFilename:"_root.md",markAsRoot:true},ignore:{feature:"ignore",mode:"flatFile",source:{project:[ms],global:[ja]},canonicalDir:".agentsmesh",canonicalFilename:rw}},mergeGeneratedOutputContent(e,t,r,n){return n===Oc?RQ(e,r):null},buildImportPaths:oS,detectionPaths:[Wt,ms]};});function GA(e){let t=[];for(let r of e.rules){if(r.targets.length>0&&!r.targets.includes(Ua))continue;let n=r.root?"_root":basename(r.source,".md");t.push({path:`${Tr}/${n}.md`,content:r.body.trim()});}return t}function $A(e){return e.agents.map(t=>({path:`${no}/${t.name}.json`,content:JSON.stringify({name:t.name,...t.description?{description:t.description}:{},prompt:t.body.trim(),...t.tools.length>0?{allowedTools:t.tools}:{}},null,2)}))}function jA(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Ni,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}var UA=d(()=>{Pc();s(GA,"generateRules");s($A,"generateAgents");s(jA,"generateMcp");});async function BA(e,t){let r=t?.scope??"project";return X(qf,e,r)}var KA=d(()=>{Ae();hR();s(BA,"importFromAmazonQ");});function WA(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Ua}))}var HA=d(()=>{Oe();Pc();s(WA,"lintRules");});function zA(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 VA(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 JA=d(()=>{Ie();s(zA,"lintHooks");s(VA,"lintPermissions");});async function wQ(e){let t=basename(e.relativePath,".json"),r=`${t}.md`,n=join(e.destDir,r),o;try{o=JSON.parse(e.content);}catch{return null}if(!o||typeof o!="object"||Array.isArray(o))return null;let i=o,a=typeof i.name=="string"?i.name:t,l=typeof i.description=="string"?i.description:"",c=Array.isArray(i.allowedTools)?i.allowedTools.filter(u=>typeof u=="string"):[],m=typeof i.prompt=="string"?i.prompt:typeof i.systemPrompt=="string"?i.systemPrompt:"",p=await xe(n,{name:a,description:l,tools:c},m);return {destPath:n,toPath:`${sS}/${r}`,content:p}}var YA,XA=d(()=>{ue();Pc();s(wQ,"amazonQAgentMapper");YA={rules:{feature:"rules",mode:"directory",source:{project:[Tr],global:[ds]},canonicalDir:lb,extensions:[".md"],preset:"rule"},agents:{feature:"agents",mode:"directory",source:{project:[no],global:[Ba]},canonicalDir:sS,extensions:[".json"],map:wQ},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Ni],global:[xc]},canonicalDir:".agentsmesh",canonicalFilename:cb}};});var QA,qA,ZA=d(()=>{QA={rules:"native",additionalRules:"native",commands:"none",agents:"native",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},qA={rules:"native",additionalRules:"none",commands:"none",agents:"native",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"};});var bQ,AQ,TQ,qf,hR=d(()=>{UA();KA();HA();JA();we();XA();ZA();Pc();bQ={name:Ua,generateRules:GA,generateMcp:jA,generateAgents:$A,importFrom:BA},AQ={managedOutputs:{dirs:[Tr,no],files:[Ni]},paths:{rulePath(e,t){return `${Tr}/${e}.md`},commandPath(e,t){return null},agentPath(e,t){return `${no}/${e}.json`}}},TQ={managedOutputs:{dirs:[ds,Ba],files:[xc]},rewriteGeneratedPath(e){return e.startsWith(`${no}/`)?e.replace(`${no}/`,`${Ba}/`):e.startsWith(`${Tr}/`)?e.replace(`${Tr}/`,`${ds}/`):e===Ni?xc:e},paths:{rulePath(e,t){return `${ds}/${e}.md`},commandPath(e,t){return null},agentPath(e,t){return `${Ba}/${e}.json`}}},qf={id:Ua,metadata:{displayName:"Amazon Q Developer",category:"ide",officialUrl:"https://aws.amazon.com/q/developer",shortDescription:"AWS AI coding assistant"},generators:bQ,capabilities:QA,emptyImportMessage:"No Amazon Q Developer config found (.amazonq/rules/, .amazonq/cli-agents/, or .amazonq/mcp.json).",lintRules:WA,lint:{hooks:zA,permissions:VA},project:AQ,globalSupport:{capabilities:qA,detectionPaths:[ds,xc,Ba],layout:TQ},importer:YA,buildImportPaths:iS,detectionPaths:[Tr,no,Ni]};});function Go(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(!is(i))continue;let a=St(i),l=Zn(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 am=d(()=>{dn();s(Go,"buildClaudeHooksObjectFromCanonical");});function eT(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:xr,content:o}]:[]}function tT(e){return ae(e,kt)}function rT(e){return e.commands.map(t=>({path:`${kt}/${q(t.name)}/SKILL.md`,content:Ye(t)}))}function nT(e){return e.agents.map(t=>({path:`${kt}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function oT(e,t){let r=[];if(t.has("mcp")&&e.mcp&&Object.keys(e.mcp.mcpServers).length>0&&r.push({path:nr,content:JSON.stringify({"amp.mcpServers":e.mcp.mcpServers},null,2)}),t.has("hooks")&&e.hooks&&Object.keys(e.hooks).length>0){let n=Go(e);Object.keys(n).length>0&&r.push({path:nr,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:nr,content:JSON.stringify({"amp.permissions":a},null,2)});}}return r}var sT=d(()=>{ie();Be();Se();Ge();am();Ka();s(eT,"generateRules");s(tT,"generateSkills");s(rT,"generateCommands");s(nT,"generateAgents");s(oT,"buildAmpScopedSettings");});function ge(e,t,r){let n=r.some(o=>xQ.includes(o));return e.startsWith(`${t}/`)&&!n?`.agents/skills/${e.slice(t.length+1)}`:null}var xQ,dt=d(()=>{xQ=["amp","antigravity","codex-cli","goose","replit-agent","zed"];s(ge,"mirrorSkillsToAgents");});async function aT(e,t,r){let n=await I(join(e,t));if(n===null)return;let o;try{o=JSON.parse(n);}catch{return}if(o===null||typeof o!="object"||Array.isArray(o))return;let i=o,a=i["amp.mcpServers"]??i.mcpServers;if(a==null||typeof a!="object"||Array.isArray(a)||Object.keys(a).length===0)return;let l={};for(let[c,m]of Object.entries(a))!m||typeof m!="object"||Array.isArray(m)||(l[c]=m);Object.keys(l).length!==0&&(await Xe(e,iT,l),r.push({fromTool:"amp",fromPath:t,toPath:iT,feature:"mcp"}));}var iT,lT=d(()=>{b();Sn();Ka();iT=".agentsmesh/mcp.json";s(aT,"importAmpMcp");});async function cT(e,t={}){let r=t.scope??"project",n=[],o=await H("amp",e,r);return n.push(...await X(Zf,e,r,{normalize:o})),await oe(e,r==="global"?Pr:kt,"amp",n,o),await aT(e,r==="global"?gs:nr,n),n}var mT=d(()=>{he();ie();Ae();lT();Ka();yR();s(cT,"importFromAmp");});function pT(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:"amp"}))}var uT=d(()=>{Oe();Ka();s(pT,"lintRules");});function dT(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 fT=d(()=>{Ie();s(dT,"lintIgnore");});function FQ(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 DQ,NQ,vQ,gT,Zf,yR=d(()=>{Ge();Se();sT();dt();mT();uT();fT();we();Ka();DQ={name:"amp",primaryRootInstructionPath:xr,generateRules:eT,generateCommands:rT,generateAgents:nT,generateSkills:tT,importFrom:cT},NQ={rootInstructionPath:xr,skillDir:kt,managedOutputs:{dirs:[kt],files:[xr,nr]},paths:{rulePath(e){return xr},commandPath(e){return `${kt}/${q(e)}/SKILL.md`},agentPath(e){return `${kt}/${V(e)}/SKILL.md`}}},vQ={rootInstructionPath:fs,skillDir:Pr,managedOutputs:{dirs:[Pr],files:[fs,gs]},rewriteGeneratedPath(e){return e===xr?fs:e===nr?gs:e.startsWith(`${kt}/`)?e.replace(`${kt}/`,`${Pr}/`):e},mirrorGlobalPath(e,t){return ge(e,Pr,t)},paths:{rulePath(e){return fs},commandPath(e){return `${Pr}/${q(e)}/SKILL.md`},agentPath(e){return `${Pr}/${V(e)}/SKILL.md`}}},gT={rules:"native",additionalRules:"embedded",commands:"native",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"native"};s(FQ,"mergeAmpSettings");Zf={id:"amp",metadata:{displayName:"Amp",category:"cli",officialUrl:"https://ampcode.com",shortDescription:"Sourcegraph's coding agent"},generators:DQ,capabilities:gT,emptyImportMessage:"No Amp config found (AGENTS.md, .agents/skills, or .amp/settings.json).",lintRules:pT,lint:{ignore:dT},supportsConversion:{commands:true,agents:true},project:NQ,globalSupport:{capabilities:gT,detectionPaths:[fs,gs],layout:vQ},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[xr],global:[fs]},canonicalDir:pb,canonicalRootFilename:"_root.md",markAsRoot:true}},emitScopedSettings(e,t,r){return oT(e,r)},mergeGeneratedOutputContent(e,t,r,n){return n===nr||n===gs?FQ(t?.content??e,r):null},sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:lS,detectionPaths:[xr,nr],conversionDefaults:{commandsToSkills:true,agentsToSkills:true}};});function hT(e){let t=e.rules.find(n=>n.root);if(!t)return [];let r=[{path:Dr,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:`${Rn}/${o}.md`,content:n.body.trim()||""});}return r}function yT(e){return e.commands.map(t=>{let r=t.description.trim(),n=t.body.trim(),o=r&&n&&!n.startsWith(r)?`${r}
|
|
63
|
+
`);continue}let{frontmatter:f,body:g}=u.value,h=e.frontmatterRemap?e.frontmatterRemap(f):f,y=e.markAsRoot?{...h,root:true}:h,_=await z(m,y,g);return await L(m,_),[{fromTool:n,fromPath:l,toPath:`${e.canonicalDir}/${e.canonicalRootFilename}`,feature:e.feature}]}return []}async function JX(e,t,r,n,o){let i=Bw(e),a=join(r,e.canonicalDir),l=[];for(let c of t){let m=join(r,c),p=await Re({srcDir:m,destDir:a,extensions:[...e.extensions??[".md"]],fromTool:n,normalize:o,mapEntry:s(async({srcPath:u,relativePath:f,content:g,normalizeTo:h})=>{if(nf(basename(u)))return null;let y;try{y=await i({absolutePath:u,relativePath:f,content:g,destDir:a,normalizeTo:s(_=>h(_),"normalizeTo")});}catch(_){let R=_ instanceof Error?_.message:String(_);return process.stderr.write(`\u26A0 skipping ${u}: ${R}
|
|
64
|
+
`),null}return y?{destPath:y.destPath,toPath:y.toPath,feature:e.feature,content:y.content}:null},"mapEntry")});l.push(...p);}return l}function Vw(e){let t=e.canonicalFilename;return t.includes("/")||t.includes("\\")?t:posix.join(e.canonicalDir,t)}async function YX(e,t,r,n){if(!e.canonicalFilename)throw new Error(`flatFile spec for ${e.feature} must set canonicalFilename`);let o=Vw(e);for(let i of t){let a=join(r,i),l=await I(a);if(l===null)continue;let c=join(r,o);return await O(dirname(c)),await L(c,l.trimEnd()),[{fromTool:n,fromPath:a,toPath:o,feature:e.feature}]}return []}function XX(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:nt(l.args),env:Ht(l.env),description:c};continue}typeof l.url=="string"&&(o[i]={type:typeof l.type=="string"?l.type:"http",url:l.url,headers:Ht(l.headers),env:Ht(l.env),description:c});}return o}async function QX(e,t,r,n){if(!e.canonicalFilename)throw new Error(`mcpJson spec for ${e.feature} must set canonicalFilename`);let o=Vw(e);for(let i of t){let a=join(r,i),l=await I(a);if(l===null)continue;let c=XX(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 zw(e,t,r,n,o){switch(e.mode){case "singleFile":return VX(e,t,r,n,o);case "directory":return JX(e,t,r,n,o);case "flatFile":return YX(e,t,r,n);case "mcpJson":return QX(e,t,r,n)}}async function qX(e,t,r,n,o){let i=rS(e.source,t),a=rS(e.fallbacks,t);if(i.length===0&&a.length===0)return [];if(i.length>0){let l=await zw(e,i,r,n,o);if(l.length>0)return l}return a.length>0?zw(e,a,r,n,o):[]}function ZX(e,t){let r=e[t];return r?Array.isArray(r)?r:[r]:[]}async function X(e,t,r,n){let o=e.importer;if(!o)return [];let i=n?.normalize??await H(e.id,t,r),a=[];for(let l of Ww)for(let c of ZX(o,l))a.push(...await qX(c,r,t,e.id,i));return a}var Ae=d(()=>{he();b();Sn();U();Pt();de();rr();Kw();ss();Hw();s(VX,"runSingleFile");s(JX,"runDirectory");s(Vw,"resolveCanonicalFilePath");s(YX,"runFlatFile");s(XX,"parseMcpJson");s(QX,"runMcpJson");s(zw,"dispatchSpec");s(qX,"runSpec");s(ZX,"specsForFeature");s(X,"runDescriptorImport");});async function Jw(e,t={}){let r=t.scope??"project",n=[],o=await H(ro,e,r);return n.push(...await X(Of,e,r,{normalize:o})),await oe(e,r==="global"?br:Rt,ro,n,o),n}var Yw=d(()=>{he();ie();Ae();wc();nS();s(Jw,"importFromAider");});function eQ(e,t){return Qw(t).some(n=>tQ(e,n))}function Xw(e,t){return e.filter(r=>eQ(r,t))}function Qw(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 Qw(r+l+o))a.push(c);return a}function tQ(e,t){return rQ(t).test(e)}function rQ(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 qw=d(()=>{s(eQ,"globMatch");s(Xw,"globFilter");s(Qw,"expandBraces");s(tQ,"matchOne");s(rQ,"globToRegex");});function Y(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(Xw(r,m).length>0){c=true;break}c||o.push({level:"warning",file:relative(t,l.source),message:`globs "${l.globs.join(", ")}" match 0 files in project`});}return o}var Oe=d(()=>{qw();s(Y,"validateRules");});function eb(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:ro}))}var tb=d(()=>{Oe();wc();s(eb,"lintRules");});function F(e,t,r){return {level:"warning",file:e,target:t,message:r}}function nQ(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 Di(e,t,r,n){let o=n?.unsupportedBy??t,i=nQ(r);return F(".agentsmesh/hooks.yaml",t,`${e} is not supported by ${o}; only ${i} are projected.`)}var Ie=d(()=>{s(F,"createWarning");s(nQ,"formatOxfordComma");s(Di,"createUnsupportedHookWarning");});function rb(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 nb(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 ob(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 sb=d(()=>{Ie();s(rb,"lintHooks");s(nb,"lintPermissions");s(ob,"lintMcp");});function C(e,t){return ce(e).relative(e,t).replace(/\\/g,"/")}async function E(e,t){return Ci(ce(e).join(e,t)).catch(()=>[])}function ab(e,t,r){e.set(t,r),e.set(`${t}/`,`${r}/`);}function cQ(e,t,r,n){let o=posix.dirname(t),i=posix.dirname(r);for(;o!==n&&o!==".";)ab(e,o,i),o=posix.dirname(o),i=posix.dirname(i);}function P(e,t,r,n){e.set(t,`${r}/${basename(t,n)}.md`);}function 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,`${ib}/${u}/SKILL.md`);return}let[o,...i]=n.split("/"),a=i.join("/");if(!o||!a)return;let l=o.startsWith(kc)?kc:o.startsWith(Ap)?Ap:null;if(l&&a==="SKILL.md"){e.set(t,`${aQ}/${o.slice(l.length)}.md`);return}let c=o.startsWith(Lc)?Lc:o.startsWith(Tp)?Tp:null;if(c&&a==="SKILL.md"){e.set(t,`${lQ}/${o.slice(c.length)}.md`);return}let m=`${ib}/${o}`;a==="SKILL.md"&&ab(e,`${r}/${o}`,m);let p=`${m}/${a}`;e.set(t,p),a!=="SKILL.md"&&cQ(e,t,p,`${r}/${o}`);}function mQ(e){return e.split("/").filter(Boolean)[0]??""}async function pQ(){if(oS!==void 0)return oS;let{BUILTIN_TARGETS:e}=await Promise.resolve().then(()=>(Te(),lb)),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=mQ(n);o.startsWith(".")&&t.add(o);}return oS=t,t}function iS(e){return e.split("/").some(t=>t.startsWith("."))}async function uQ(e){let t=[],r=await pQ(),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)||iS(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)||iS(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 wf(e,t){let r=await uQ(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(iS(l))continue;let c=l.replace(/\//g,"-");e.set(o,`${iQ}/${c}.md`);}}var iQ,aQ,lQ,ib,oS,Le=d(()=>{It();b();Ge();Se();iQ=".agentsmesh/rules",aQ=".agentsmesh/commands",lQ=".agentsmesh/agents",ib=".agentsmesh/skills";s(C,"rel");s(E,"listFiles");s(ab,"addDirectoryMapping");s(cQ,"addAncestorMappings");s(P,"addSimpleFileMapping");s(G,"addSkillLikeMapping");s(mQ,"firstPathSegment");s(pQ,"targetRootSegments");s(iS,"hasHiddenSegment");s(uQ,"listScopedAgentsFiles");s(wf,"addScopedAgentsMappings");});var A,te,fe,Ce=d(()=>{A=".agentsmesh/rules",te=".agentsmesh/commands",fe=".agentsmesh/agents";});async function aS(e,t,r="project"){if(r==="global"){e.set(ps,`${A}/_root.md`);for(let n of await E(t,br))G(e,C(t,n),br);e.set(ja,".agentsmesh/ignore");return}e.set(Wt,`${A}/_root.md`);for(let n of await E(t,Rt))G(e,C(t,n),Rt);e.set(ms,".agentsmesh/ignore");}var cb=d(()=>{Le();wc();Ce();s(aS,"buildAiderImportPaths");});var Ua,Tr,Ni,no,ds,xc,Ba,mb,pb,lS,Pc=d(()=>{Ua="amazon-q",Tr=".amazonq/rules",Ni=".amazonq/mcp.json",no=".amazonq/cli-agents",ds=".aws/amazonq/rules",xc=".aws/amazonq/mcp.json",Ba=".aws/amazonq/cli-agents",mb=".agentsmesh/rules",pb=".agentsmesh/mcp.json",lS=".agentsmesh/agents";});async function cS(e,t,r="project"){let n=r==="global"?ds:Tr;for(let o of await E(t,n)){let i=C(t,o);P(e,i,A,".md");}}var ub=d(()=>{Le();Pc();Ce();s(cS,"buildAmazonQImportPaths");});var xr,kt,nr,mS,fs,Pr,gs,db,Ka=d(()=>{xr="AGENTS.md",kt=".agents/skills",nr=".amp/settings.json",mS=".config/amp",fs=`${mS}/AGENTS.md`,Pr=`${mS}/skills`,gs=`${mS}/settings.json`,db=".agentsmesh/rules";});async function pS(e,t,r="project"){if(r==="global"){e.set(fs,`${A}/_root.md`);for(let n of await E(t,Pr))G(e,C(t,n),Pr);e.set(gs,".agentsmesh/mcp.json");return}e.set(xr,`${A}/_root.md`);for(let n of await E(t,kt))G(e,C(t,n),kt);e.set(nr,".agentsmesh/mcp.json");}var fb=d(()=>{Le();Ka();Ce();s(pS,"buildAmpImportPaths");});var Wa,$p,Rn,Dr,jp,In,oo,Up,Bp,uS,so,io,Kp,Dc,dS,Ha,bf,gb,za=d(()=>{Wa="antigravity",$p=".agents",Rn=`${$p}/rules`,Dr=`${Rn}/general.md`,jp=`${Rn}/_root.md`,In=`${$p}/skills`,oo=`${$p}/workflows`,Up=`${$p}/antigravity/mcp_config.json`,Bp=`${$p}/hooks.json`,uS=".gemini/config/hooks.json",so=".gemini/antigravity/GEMINI.md",io=".gemini/antigravity/skills",Kp=".gemini/antigravity/workflows",Dc=".gemini/antigravity/mcp_config.json",dS=".agentsmesh/rules/_root.md",Ha=".agentsmesh/rules",bf=".agentsmesh/commands",gb=".agentsmesh/mcp.json";});async function fS(e,t,r="project"){if(r==="global"){e.set(so,`${A}/_root.md`);for(let n of await E(t,io))G(e,C(t,n),io);e.set(Dc,".agentsmesh/mcp.json");return}e.set(Dr,`${A}/_root.md`),e.set(jp,`${A}/_root.md`);for(let n of await E(t,Rn)){let o=C(t,n);o===Dr||o===jp||P(e,o,A,".md");}for(let n of await E(t,oo))P(e,C(t,n),te,".md");for(let n of await E(t,In))G(e,C(t,n),In);}var hb=d(()=>{Le();za();Ce();s(fS,"buildAntigravityImportPaths");});var ot,Wp,or,Nr,hs,sr,ao,lo,Hp,ys,_s,Va,co,Ss,gS,hS,yS,_S,SS,RS,Ja=d(()=>{ot="augment-code",Wp=".augment",or=`${Wp}/rules`,Nr=`${Wp}/commands`,hs=`${Wp}/agents`,sr=`${Wp}/skills`,ao=`${Wp}/settings.json`,lo=".augmentignore",Hp=".augment",ys=`${Hp}/rules`,_s=`${Hp}/commands`,Va=`${Hp}/agents`,co=`${Hp}/skills`,Ss=`${Hp}/settings.json`,gS=".agentsmesh/rules",hS=".agentsmesh/agents",yS=".agentsmesh/mcp.json",_S=".agentsmesh/hooks.yaml",SS=".agentsmesh/ignore",RS=".agentsmesh/permissions.yaml";});async function IS(e,t,r="project"){if(r==="global"){for(let n of await E(t,ys))P(e,C(t,n),A,".md");for(let n of await E(t,_s))P(e,C(t,n),te,".md");for(let n of await E(t,Va))P(e,C(t,n),fe,".md");for(let n of await E(t,co))G(e,C(t,n),co);e.set(Ss,".agentsmesh/mcp.json");return}for(let n of await E(t,or))P(e,C(t,n),A,".md");for(let n of await E(t,Nr))P(e,C(t,n),te,".md");for(let n of await E(t,hs))P(e,C(t,n),fe,".md");for(let n of await E(t,sr))G(e,C(t,n),sr);e.set(ao,".agentsmesh/mcp.json"),e.set(lo,".agentsmesh/ignore");}var yb=d(()=>{Le();Ja();Ce();s(IS,"buildAugmentCodeImportPaths");});var _b,Rs,vi,zp,Vp,Jp,Yp,Xp,Is,kS,Qp,Nc,qp,Zp,Af,Tf,LS,eu,CS,Ya,Sb,ks=d(()=>{_b="claude-code",Rs="CLAUDE.md",vi=".claude/CLAUDE.md",zp=".claude/rules",Vp=".claude/commands",Jp=".claude/agents",Yp=".claude/skills",Xp=".claude/settings.json",Is=".claude/hooks.json",kS=".claude/output-styles",Qp=".claudeignore",Nc=".mcp.json",qp=".claude.json",Zp=".agentsmesh/rules",Af=".agentsmesh/commands",Tf=".agentsmesh/agents",LS=".agentsmesh/skills",eu=".agentsmesh/mcp.json",CS=".agentsmesh/permissions.yaml",Ya=".agentsmesh/hooks.yaml",Sb=".agentsmesh/ignore";});async function ES(e,t,r="project"){if(e.set(".claude/CLAUDE.md",`${A}/_root.md`),e.set(Is,Ya),r==="project"&&e.set("CLAUDE.md",`${A}/_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"))P(e,C(t,n),A,".md");for(let n of await E(t,".claude/commands"))P(e,C(t,n),te,".md");for(let n of await E(t,".claude/agents"))P(e,C(t,n),fe,".md");for(let n of await E(t,".claude/skills"))G(e,C(t,n),".claude/skills");}var Rb=d(()=>{Le();ks();Ce();s(ES,"buildClaudeCodeImportPaths");});var Fi,Ls,Xa,Cs,Ib,Dt,ir,Es,Mi,Qa,qa,Za,el,OS,Gi,xf,wS,bS,tu,kb,vr=d(()=>{Fi="cline",Ls=".clinerules",Xa=".clineignore",Cs=".cline/cline_mcp_settings.json",Ib=".cline/mcp_settings.json",Dt=".cline/skills",ir=".cline/agents",Es=".clinerules/workflows",Mi="AGENTS.md",Qa=".clinerules/hooks",qa="Documents/Cline/Rules",Za="Documents/Cline/Workflows",el="Documents/Cline/Hooks",OS=".agentsmesh/hooks.yaml",Gi=".agentsmesh/rules",xf=".agentsmesh/commands",wS=".agentsmesh/ignore",bS=".agentsmesh/mcp.json",tu=".agentsmesh/agents",kb=".agentsmesh/skills";});async function AS(e,t,r="project"){if(r==="global"){for(let n of await E(t,qa))P(e,C(t,n),A,".md");for(let n of await E(t,Za))P(e,C(t,n),te,".md");for(let n of await E(t,Dt))G(e,C(t,n),Dt);for(let n of await E(t,ir))P(e,C(t,n),fe,".md");e.set(Cs,".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"||P(e,o,A,".md");}for(let n of await E(t,".clinerules/workflows"))P(e,C(t,n),te,".md");for(let n of await E(t,".cline/skills"))G(e,C(t,n),".cline/skills");for(let n of await E(t,ir))P(e,C(t,n),fe,".md");}var Lb=d(()=>{Le();vr();Ce();s(AS,"buildClineImportPaths");});async function TS(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 wf(e,t)),r==="project")for(let n of await E(t,".codex/instructions"))P(e,C(t,n),A,".md");for(let n of await E(t,".codex/rules")){let o=C(t,n);o.endsWith(".rules")?P(e,o,A,".rules"):o.endsWith(".md")&&P(e,o,A,".md");}for(let n of await E(t,".codex/agents"))P(e,C(t,n),fe,".toml");for(let n of await E(t,".agents/skills"))G(e,C(t,n),".agents/skills");}var Cb=d(()=>{Le();Ce();s(TS,"buildCodexCliImportPaths");});var tl,kn,mo,xS,Pf,Os,PS,ar,vc,ru,rl,Df,Nf,DS,NS,po=d(()=>{tl="continue",kn=".continue/rules",mo=".continue/prompts",xS=".continue/mcpServers",Pf=`${xS}/agentsmesh.json`,Os=`${kn}/general.md`,PS=`${kn}/_root.md`,ar=".continue/skills",vc=".continue/AGENTS.md",ru=".continue/config.yaml",rl=".continue/permissions.yaml",Df=".agentsmesh/rules",Nf=".agentsmesh/commands",DS=".agentsmesh/mcp.json",NS=".agentsmesh/permissions.yaml";});async function vS(e,t,r="project"){e.set(Os,`${A}/_root.md`),e.set(PS,`${A}/_root.md`);for(let n of await E(t,".continue/rules")){let o=C(t,n);o===Os||o===PS||P(e,o,A,".md");}for(let n of await E(t,".continue/prompts"))e.set(C(t,n),`${te}/${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 Eb=d(()=>{Le();po();Ce();s(vS,"buildContinueImportPaths");});function gQ(e,t){if(t.endsWith(".instructions.md")){e.set(t,`${A}/${basename(t,".instructions.md")}.md`);return}P(e,t,A,".md");}async function FS(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"))gQ(e,C(t,r));for(let r of await E(t,".github/prompts"))e.set(C(t,r),`${te}/${basename(r,".prompt.md")}.md`);for(let r of await E(t,".github/agents"))e.set(C(t,r),`${fe}/${basename(r,".agent.md")}.md`);for(let r of await E(t,".github/skills"))G(e,C(t,r),".github/skills");}var Ob=d(()=>{Le();Ce();s(gQ,"addCopilotInstructionMapping");s(FS,"buildCopilotImportPaths");});var Fr,Mr,pt,lr,ws,wb,Fc,cr,nl,Ff,Mf,Gf,Mc=d(()=>{Fr="crush",Mr="CRUSH.md",pt=".crush/skills",lr="crush.json",ws=".crushignore",wb=".config/crush",Fc=`${wb}/crush.json`,cr=".config/crush/skills",nl=`${wb}/CRUSH.md`,Ff=".agentsmesh/rules",Mf=".agentsmesh/ignore",Gf=".agentsmesh/mcp.json";});async function MS(e,t,r="project"){if(r==="global"){for(let n of await E(t,cr))G(e,C(t,n),cr);return}e.set(Mr,`${Ff}/_root.md`),e.set(lr,Gf),e.set(ws,Mf);for(let n of await E(t,pt))G(e,C(t,n),pt);}var bb=d(()=>{Le();Mc();s(MS,"buildCrushImportPaths");});var Ab,$i,Tb,Gr,bs,$r,jr,Lt,mr,uo,$f,Ln,GS,hQ,Gc,Cn,fo,ji,Ui,xb,$c,$S,nu,jS,Qe=d(()=>{Ab="cursor",$i="AGENTS.md",Tb=".cursorrules",Gr=".cursor/rules",bs=`${Gr}/general.mdc`,$r=".cursor/commands",jr=".cursor/agents",Lt=".cursor/skills",mr=".cursor/mcp.json",uo=".cursor/hooks.json",$f=".cursor/settings.json",Ln=".cursorignore",GS=".cursorindexingignore",hQ=".agentsmesh-exports/cursor",Gc=`${hQ}/user-rules.md`,Cn=".cursor/AGENTS.md",fo=".agentsmesh/rules",ji=".agentsmesh/commands",Ui=".agentsmesh/agents",xb=".agentsmesh/skills",$c=".agentsmesh/mcp.json",$S=".agentsmesh/permissions.yaml",nu=".agentsmesh/hooks.yaml",jS=".agentsmesh/ignore";});async function US(e,t,r="project"){if(r==="global"){e.set(mr,".agentsmesh/mcp.json"),e.set(".cursor/AGENTS.md",`${A}/_root.md`);for(let n of await E(t,".cursor/rules"))P(e,C(t,n),A,".mdc");for(let n of await E(t,".cursor/commands"))P(e,C(t,n),te,".md");for(let n of await E(t,".cursor/agents"))P(e,C(t,n),fe,".md");for(let n of await E(t,".cursor/skills"))G(e,C(t,n),".cursor/skills");return}e.set("AGENTS.md",`${A}/_root.md`);for(let n of await E(t,".cursor/rules"))P(e,C(t,n),A,".mdc");for(let n of await E(t,".cursor/commands"))P(e,C(t,n),te,".md");for(let n of await E(t,".cursor/agents"))P(e,C(t,n),fe,".md");for(let n of await E(t,".cursor/skills"))G(e,C(t,n),".cursor/skills");}var Pb=d(()=>{Le();Qe();Ce();s(US,"buildCursorImportPaths");});var go,Ur,Ct,As,jf,Ts,En,ol,Db,Nb,jc=d(()=>{go="deepagents-cli",Ur=".deepagents/AGENTS.md",Ct=".deepagents/skills",As=".mcp.json",jf=".deepagents/hooks.json",Ts=".deepagents/AGENTS.md",En=".deepagents/skills",ol=".deepagents/.mcp.json",Db=".deepagents/hooks.json",Nb=".agentsmesh/rules";});async function BS(e,t,r="project"){if(r==="global"){e.set(Ts,`${A}/_root.md`);for(let n of await E(t,En))G(e,C(t,n),En);e.set(ol,".agentsmesh/mcp.json");return}e.set(Ur,`${A}/_root.md`);for(let n of await E(t,Ct))G(e,C(t,n),Ct);e.set(As,".agentsmesh/mcp.json");}var vb=d(()=>{Le();jc();Ce();s(BS,"buildDeepagentsCliImportPaths");});var pr,Br,Kr,Bi,On,ho,xs,Ps,Uc,Ki,Wi,Bc,Fb,Mb,Gb,$b,jb,sl=d(()=>{pr="factory-droid",Br="AGENTS.md",Kr=".factory/skills",Bi=".factory/commands",On=".factory/droids",ho=".factory/mcp.json",xs=".factory/AGENTS.md",Ps=".factory/skills",Uc=".factory/commands",Ki=".factory/droids",Wi=".factory/mcp.json",Bc=".factory/hooks.json",Fb=".factory/hooks.json",Mb=".agentsmesh/rules",Gb=".agentsmesh/agents",$b=".agentsmesh/commands",jb=".agentsmesh/hooks.yaml";});async function KS(e,t,r="project"){if(r==="global"){e.set(xs,`${A}/_root.md`);for(let n of await E(t,Uc))P(e,C(t,n),te,".md");for(let n of await E(t,Ki))P(e,C(t,n),fe,".md");for(let n of await E(t,Ps))G(e,C(t,n),Ps);e.set(Wi,".agentsmesh/mcp.json");return}e.set(Br,`${A}/_root.md`);for(let n of await E(t,Bi))P(e,C(t,n),te,".md");for(let n of await E(t,On))P(e,C(t,n),fe,".md");for(let n of await E(t,Kr))G(e,C(t,n),Kr);e.set(ho,".agentsmesh/mcp.json");}var Ub=d(()=>{Le();sl();Ce();s(KS,"buildFactoryDroidImportPaths");});async function WS(e,t){for(let r of await E(t,".gemini/rules"))P(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,`${te}/${c}.md`);}for(let r of await E(t,".gemini/agents"))P(e,C(t,r),fe,".md");for(let r of await E(t,".gemini/skills"))G(e,C(t,r),".gemini/skills");}var Bb=d(()=>{Le();Ce();s(WS,"buildGeminiCliImportPaths");});var Wr,ur,zt,yo,Uf,_o,Hi,il,Hr,al,ll,Kb,Wb,Hb,HS,zi=d(()=>{Wr="goose",ur=".goosehints",zt=".agents/skills",yo=".gooseignore",Uf=".config/goose",_o=`${Uf}/.goosehints`,Hi=`${Uf}/.gooseignore`,il=`${Uf}/config.yaml`,Hr=".agents/skills",al=`${Uf}/permission.yaml`,ll=".agents/plugins/agentsmesh/hooks/hooks.json",Kb=".agentsmesh/rules",Wb=".agentsmesh/ignore",Hb=".agentsmesh/hooks.yaml",HS=".agentsmesh/permissions.yaml";});async function zS(e,t,r="project"){if(r==="global"){e.set(_o,`${A}/_root.md`);for(let n of await E(t,Hr))G(e,C(t,n),Hr);e.set(Hi,".agentsmesh/ignore");return}e.set(ur,`${A}/_root.md`);for(let n of await E(t,zt))G(e,C(t,n),zt);e.set(yo,".agentsmesh/ignore");}var zb=d(()=>{Le();zi();Ce();s(zS,"buildGooseImportPaths");});var Ds,wn,Vb,Kc=d(()=>{Ds="jules",wn="AGENTS.md",Vb=".agentsmesh/rules";});async function VS(e,t,r="project"){r!=="global"&&e.set(wn,`${A}/_root.md`);}var Jb=d(()=>{Kc();Ce();s(VS,"buildJulesImportPaths");});var cl,Vi,Bf,Yb,So,Xb,yQ,ou,ml,su,Wc,Hc,iu,au,lu,cu,mu,_Q,Kf,pl,Qb,Wf,JS,Hf,qb,Zb,eA,tA,zc=d(()=>{cl="junie",Vi=".junie",Bf=`${Vi}/guidelines.md`,Yb=`${Vi}/ci-guidelines.md`,So=`${Vi}/AGENTS.md`,Xb="AGENTS.md",yQ=`${Vi}/mcp`,ou=`${yQ}/mcp.json`,ml=`${Vi}/skills`,su=`${Vi}/rules`,Wc=`${Vi}/commands`,Hc=`${Vi}/agents`,iu=".aiignore",au=".junie",lu=`${au}/skills`,cu=`${au}/agents`,mu=`${au}/commands`,_Q=`${au}/mcp`,Kf=`${_Q}/mcp.json`,pl=`${au}/AGENTS.md`,Qb=".agents/skills",Wf=".junie/allowlist.json",JS=".agentsmesh/rules/_root.md",Hf=".agentsmesh/rules",qb=".agentsmesh/commands",Zb=".agentsmesh/agents",eA=".agentsmesh/mcp.json",tA=".agentsmesh/ignore";});async function YS(e,t){e.set(Bf,`${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"))P(e,C(t,r),A,".md");for(let r of await E(t,".junie/commands"))P(e,C(t,r),te,".md");for(let r of await E(t,".junie/agents"))P(e,C(t,r),fe,".md");for(let r of await E(t,".junie/skills"))G(e,C(t,r),".junie/skills");}var rA=d(()=>{Le();zc();Ce();s(YS,"buildJunieImportPaths");});var Nt,ul,pu,uu,bn,Ro,Io,ko,zr,Ns,dl,zf,fl,Vc,gl,du,Vf,Jc,vs,Ji,Yi,Xi,Fs,hl,fu,nA,Qi,Yc,yl,oA,sA,Ms=d(()=>{Nt="kilo-code",ul="kilo.jsonc",pu=".config/kilo/kilo.jsonc",uu=".kilo",bn="AGENTS.md",Ro=`${uu}/rules`,Io=`${uu}/commands`,ko=`${uu}/agents`,zr=`${uu}/skills`,Ns=`${uu}/mcp.json`,dl=".kilocodeignore",zf=".kilocode",fl=`${zf}/rules`,Vc=`${zf}/workflows`,gl=`${zf}/skills`,du=`${zf}/mcp.json`,Vf=".kilocodemodes",Jc=".kilo",vs=`${Jc}/AGENTS.md`,Ji=`${Jc}/rules`,Yi=`${Jc}/commands`,Xi=`${Jc}/agents`,Fs=`${Jc}/skills`,hl=`${Jc}/mcp.json`,fu=".kilocodeignore",nA=".agents/skills",Qi=".agentsmesh/rules",Yc=".agentsmesh/commands",yl=".agentsmesh/agents",oA=".agentsmesh/mcp.json",sA=".agentsmesh/ignore";});async function XS(e,t,r="project"){if(r==="global"){e.set(vs,`${A}/_root.md`);for(let n of await E(t,Ji))P(e,C(t,n),A,".md");for(let n of await E(t,Yi))P(e,C(t,n),te,".md");for(let n of await E(t,Xi))P(e,C(t,n),fe,".md");for(let n of await E(t,Fs))G(e,C(t,n),Fs);e.set(hl,".agentsmesh/mcp.json");return}e.set(bn,`${A}/_root.md`);for(let n of await E(t,Ro))P(e,C(t,n),A,".md");for(let n of await E(t,Io))P(e,C(t,n),te,".md");for(let n of await E(t,ko))P(e,C(t,n),fe,".md");for(let n of await E(t,zr))G(e,C(t,n),zr);e.set(Ns,".agentsmesh/mcp.json");for(let n of await E(t,fl)){let o=C(t,n);if(basename(o)==="00-root.md"){e.set(o,`${A}/_root.md`);continue}P(e,o,A,".md");}for(let n of await E(t,Vc))P(e,C(t,n),te,".md");for(let n of await E(t,gl))G(e,C(t,n),gl);e.set(du,".agentsmesh/mcp.json");}var iA=d(()=>{Le();Ms();Ce();s(XS,"buildKiloCodeImportPaths");});var dr,An,gu,Tn,vt,xn,qi,RQ,Xc,Qc,_l,Pn,Zi,Sl,hu,yu,aA,QS,qS,lA,cA,ZS,mA,qc=d(()=>{dr="kiro",An="AGENTS.md",gu=".kiro",Tn=`${gu}/steering`,vt=`${gu}/skills`,xn=`${gu}/agents`,qi=`${gu}/hooks`,RQ=`${gu}/settings`,Xc=`${RQ}/mcp.json`,Qc=".kiroignore",_l=".kiro/steering",Pn=".kiro/steering/AGENTS.md",Zi=".kiro/skills",Sl=".kiro/agents",hu=".kiro/settings/mcp.json",yu=".kiro/settings/kiroignore",aA=".agents/skills",QS=".agentsmesh/rules/_root.md",qS=".agentsmesh/rules",lA=".agentsmesh/agents",cA=".agentsmesh/mcp.json",ZS=".agentsmesh/hooks.yaml",mA=".agentsmesh/ignore";});async function eR(e,t,r="project"){if(r==="global"){e.set(Pn,`${A}/_root.md`);for(let n of await E(t,_l)){let o=C(t,n);o!==Pn&&P(e,o,A,".md");}for(let n of await E(t,Zi))G(e,C(t,n),Zi);for(let n of await E(t,Sl))P(e,C(t,n),fe,".md");return}e.set(An,`${A}/_root.md`);for(let n of await E(t,Tn))P(e,C(t,n),A,".md");for(let n of await E(t,vt))G(e,C(t,n),vt);for(let n of await E(t,xn))P(e,C(t,n),fe,".md");}var pA=d(()=>{Le();qc();Ce();s(eR,"buildKiroImportPaths");});var Vr,Jf,Dn,Lo,Co,Eo,Jr,Et,Zc,Gs,ea,ta,ra,$s,Yr,uA,_u,Yf,Xf,tR,rR,js=d(()=>{Vr="opencode",Jf=".opencode",Dn="AGENTS.md",Lo=`${Jf}/rules`,Co=`${Jf}/commands`,Eo=`${Jf}/agents`,Jr=`${Jf}/skills`,Et="opencode.json",Zc=".config/opencode",Gs=`${Zc}/AGENTS.md`,ea=`${Zc}/rules`,ta=`${Zc}/commands`,ra=`${Zc}/agents`,$s=`${Zc}/skills`,Yr=`${Zc}/opencode.json`,uA=".agents/skills",_u=".agentsmesh/rules",Yf=".agentsmesh/commands",Xf=".agentsmesh/agents",tR=".agentsmesh/mcp.json",rR=".agentsmesh/permissions.yaml";});async function nR(e,t,r="project"){if(r==="global"){e.set(Gs,`${A}/_root.md`);for(let n of await E(t,ea))P(e,C(t,n),A,".md");for(let n of await E(t,ta))P(e,C(t,n),te,".md");for(let n of await E(t,ra))P(e,C(t,n),fe,".md");for(let n of await E(t,$s))G(e,C(t,n),$s);e.set(Yr,".agentsmesh/mcp.json");return}e.set(Dn,`${A}/_root.md`);for(let n of await E(t,Lo))P(e,C(t,n),A,".md");for(let n of await E(t,Co))P(e,C(t,n),te,".md");for(let n of await E(t,Eo))P(e,C(t,n),fe,".md");for(let n of await E(t,Jr))G(e,C(t,n),Jr);e.set(Et,".agentsmesh/mcp.json");}var dA=d(()=>{Le();js();Ce();s(nR,"buildOpencodeImportPaths");});var Oo,Xr,Ft,wo,oR,Us,Nn,Rl,fA,gA,em=d(()=>{Oo="pi-agent",Xr="AGENTS.md",Ft=".pi/skills",wo=".pi/prompts",oR=".pi/agent",Us=`${oR}/AGENTS.md`,Nn=`${oR}/skills`,Rl=`${oR}/prompts`,fA=".agentsmesh/rules",gA=".agentsmesh/commands";});async function sR(e,t,r="project"){if(r==="global"){e.set(Us,`${A}/_root.md`);for(let n of await E(t,Rl))P(e,C(t,n),te,".md");for(let n of await E(t,Nn))G(e,C(t,n),Nn);return}e.set(Xr,`${A}/_root.md`);for(let n of await E(t,wo))P(e,C(t,n),te,".md");for(let n of await E(t,Ft))G(e,C(t,n),Ft);}var iR=d(()=>{Le();em();Ce();s(sR,"buildPiAgentImportPaths");});var vn,fr,bo,Fn,Mn,gr,Qr,Bs,Ao,Ks,Ws,To,Hs,aR,hA,yA,Il=d(()=>{vn="qwen-code",fr="QWEN.md",bo=".qwen/rules",Fn=".qwen/commands",Mn=".qwen/agents",gr=".qwen/skills",Qr=".qwen/settings.json",Bs=".qwenignore",Ao=".qwen/QWEN.md",Ks=".qwen/settings.json",Ws=".qwen/commands",To=".qwen/skills",Hs=".qwen/agents",aR=".agentsmesh/rules",hA=".agentsmesh/commands",yA=".agentsmesh/agents";});async function lR(e,t,r="project"){if(r==="global"){e.set(Ao,`${A}/_root.md`),e.set(Ks,".agentsmesh/mcp.json");for(let n of await E(t,Ws))P(e,C(t,n),te,".md");for(let n of await E(t,Hs))P(e,C(t,n),fe,".md");for(let n of await E(t,To))G(e,C(t,n),To);return}e.set(fr,`${A}/_root.md`),e.set(Qr,".agentsmesh/mcp.json"),e.set(Bs,".agentsmesh/ignore");for(let n of await E(t,bo))P(e,C(t,n),A,".md");for(let n of await E(t,Fn))P(e,C(t,n),te,".md");for(let n of await E(t,Mn))P(e,C(t,n),fe,".md");for(let n of await E(t,gr))G(e,C(t,n),gr);}var _A=d(()=>{Le();Ce();Il();s(lR,"buildQwenCodeImportPaths");});var xo,Gn,Vt,SA,tm=d(()=>{xo="replit-agent",Gn="replit.md",Vt=".agents/skills",SA=".agentsmesh/rules";});async function cR(e,t,r="project"){if(r!=="global"){e.set(Gn,`${A}/_root.md`);for(let n of await E(t,Vt))G(e,C(t,n),Vt);}}var mR=d(()=>{Le();tm();Ce();s(cR,"buildReplitAgentImportPaths");});var zs,kl,$n,Su,Vs,Js,Po,Ru,Iu,na,ku,Qf,oa,sa,Ys,Ll,Lu,ia,RA,Cl,pR,qf,IA,kA,El=d(()=>{zs="roo-code",kl=".roo",$n=`${kl}/rules/00-root.md`,Su=".roorules",Vs=`${kl}/rules`,Js=`${kl}/commands`,Po=`${kl}/skills`,Ru=`${kl}/mcp.json`,Iu=".rooignore",na=".roomodes",ku="settings/custom_modes.yaml",Qf=".roo",oa=`${Qf}/rules`,sa=`${Qf}/commands`,Ys=`${Qf}/skills`,Ll="mcp_settings.json",Lu=".rooignore",ia=`${Qf}/AGENTS.md`,RA=".agents/skills",Cl=".agentsmesh/rules",pR=".agentsmesh/agents",qf=".agentsmesh/commands",IA=".agentsmesh/mcp.json",kA=".agentsmesh/ignore";});async function uR(e,t,r="project"){if(r==="global"){e.set(ia,`${A}/_root.md`);for(let n of await E(t,oa))P(e,C(t,n),A,".md");for(let n of await E(t,sa))P(e,C(t,n),te,".md");for(let n of await E(t,Ys))G(e,C(t,n),Ys);e.set(Ll,".agentsmesh/mcp.json");return}e.set($n,`${A}/_root.md`),e.set(Su,`${A}/_root.md`);for(let n of await E(t,Vs)){let o=C(t,n);o!==$n&&P(e,o,A,".md");}for(let n of await E(t,".roo")){let o=C(t,n);/^\.roo\/rules-[^/]+\/.+\.md$/.test(o)&&P(e,o,A,".md");}for(let n of await E(t,Js))P(e,C(t,n),te,".md");for(let n of await E(t,Po))G(e,C(t,n),Po);}var LA=d(()=>{Le();El();Ce();s(uR,"buildRooCodeImportPaths");});var Do,qr,CA,ut,Xs,EA,Qs,hr,rm,Cu,OA,Ol=d(()=>{Do="rovodev",qr="AGENTS.md",CA=".rovodev",ut=`${CA}/skills`,Xs=`${CA}/mcp.json`,EA=".rovodev",Qs=".rovodev/AGENTS.md",hr=".rovodev/skills",rm=".rovodev/mcp.json",Cu=".rovodev/config.yml",OA=".agentsmesh/rules";});async function dR(e,t,r="project"){if(r==="global"){e.set(Qs,`${A}/_root.md`);for(let n of await E(t,hr))G(e,C(t,n),hr);e.set(rm,".agentsmesh/mcp.json");return}e.set(qr,`${A}/_root.md`);for(let n of await E(t,ut))G(e,C(t,n),ut);e.set(Xs,".agentsmesh/mcp.json");}var wA=d(()=>{Le();Ol();Ce();s(dR,"buildRovodevImportPaths");});var Zr,Eu,yr,_r,en,wl,nm,qs,tn,jn,Ou,bA,aa,om,wu,AA,TA,xA,sm=d(()=>{Zr="trae",Eu=".trae",yr=`${Eu}/rules`,_r=`${yr}/project_rules.md`,en=`${Eu}/skills`,wl=`${Eu}/mcp.json`,nm=`${Eu}/.ignore`,qs=".trae/user_rules",tn=".trae/user_rules/rules.md",jn=".trae/skills",Ou=".trae/mcp.json",bA=".agents/skills",aa=`${Eu}/commands`,om=".trae/commands",wu=".agentsmesh/rules",AA=".agentsmesh/commands",TA=".agentsmesh/mcp.json",xA=".agentsmesh/ignore";});async function fR(e,t,r="project"){if(r==="global"){e.set(tn,`${A}/_root.md`);for(let n of await E(t,qs)){let o=C(t,n);o!==tn&&P(e,o,A,".md");}for(let n of await E(t,om))P(e,C(t,n),te,".md");for(let n of await E(t,jn))G(e,C(t,n),jn);return}e.set(_r,`${A}/_root.md`);for(let n of await E(t,yr)){let o=C(t,n);o!==_r&&P(e,o,A,".md");}for(let n of await E(t,aa))P(e,C(t,n),te,".md");for(let n of await E(t,en))G(e,C(t,n),en);}var PA=d(()=>{Le();sm();Ce();s(fR,"buildTraeImportPaths");});var No,Un,gR,Ot,la,Sr,DA,im=d(()=>{No="warp",Un="AGENTS.md",gR="WARP.md",Ot=".warp/skills",la=".mcp.json",Sr=".warp/skills",DA=".agentsmesh/rules";});async function hR(e,t,r="project"){if(r==="global"){for(let n of await E(t,Sr))G(e,C(t,n),Sr);return}e.set(Un,`${A}/_root.md`);for(let n of await E(t,Ot))G(e,C(t,n),Ot);e.set(la,".agentsmesh/mcp.json");}var NA=d(()=>{Le();im();Ce();s(hR,"buildWarpImportPaths");});async function yR(e,t){e.set("AGENTS.md",`${A}/_root.md`),e.set(".windsurfrules",`${A}/_root.md`),await wf(e,t);for(let r of await E(t,".windsurf/rules"))P(e,C(t,r),A,".md");for(let r of await E(t,".windsurf/workflows"))P(e,C(t,r),te,".md");for(let r of await E(t,".windsurf/skills"))G(e,C(t,r),".windsurf/skills");}var vA=d(()=>{Le();Ce();s(yR,"buildWindsurfImportPaths");});var Bn,vo,Fo,IQ,Mo,FA,bl=d(()=>{Bn=".rules",vo=".zed/settings.json",Fo=".agents/skills",IQ=".config/zed",Mo=`${IQ}/settings.json`,FA=".agentsmesh/rules";});async function _R(e,t,r="project"){if(r==="global"){e.set(Mo,".agentsmesh/mcp.json");return}e.set(Bn,`${A}/_root.md`);for(let n of await E(t,Fo))G(e,C(t,n),Fo);e.set(vo,".agentsmesh/mcp.json");}var MA=d(()=>{bl();Le();Ce();s(_R,"buildZedImportPaths");});var GA=d(()=>{cb();ub();fb();hb();yb();Rb();Lb();Cb();Eb();Ob();bb();Pb();vb();Ub();Bb();zb();Jb();rA();iA();pA();dA();iR();_A();mR();LA();wA();PA();NA();vA();MA();});var we=d(()=>{GA();});function CQ(e,t){if(e===null)return t;let r;try{r=parse(e);}catch{return t}if(!r||typeof r!="object"||Array.isArray(r))return t;let n=r,o=new Set,i=n.read;if(typeof i=="string")o.add(i);else if(Array.isArray(i))for(let a of i)typeof a=="string"&&o.add(a);return o.add(Wt),n.read=[...o],stringify(n)}var EQ,OQ,wQ,$A,Of,nS=d(()=>{Ge();Se();mw();Yw();tb();sb();we();wc();s(CQ,"mergeAiderConf");EQ={name:ro,primaryRootInstructionPath:Wt,generateRules:sw,generateCommands:aw,generateAgents:lw,generateSkills:iw,generateIgnore:cw,importFrom:Jw},OQ={rootInstructionPath:Wt,skillDir:Rt,managedOutputs:{dirs:[Rt],files:[Wt,Oc,ms]},paths:{rulePath(e){return Wt},commandPath(e){return `${Rt}/${Z(e)}/SKILL.md`},agentPath(e){return `${Rt}/${V(e)}/SKILL.md`}}},wQ={rootInstructionPath:ps,skillDir:br,managedOutputs:{dirs:[br],files:[ps,ja]},rewriteGeneratedPath(e){return e===Wt?ps:e===ms?ja:e===Oc?null:e.startsWith(`${Rt}/`)?e.replace(`${Rt}/`,`${br}/`):e},paths:{rulePath(e){return ps},commandPath(e){return `${br}/${Z(e)}/SKILL.md`},agentPath(e){return `${br}/${V(e)}/SKILL.md`}}},$A={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"native",permissions:"none"},Of={id:ro,metadata:{displayName:"Aider",category:"cli",officialUrl:"https://aider.chat",shortDescription:"Open-source terminal AI pair programmer"},generators:EQ,capabilities:$A,emptyImportMessage:"No Aider config found (CONVENTIONS.md, .aider/skills, or .aiderignore).",lintRules:eb,lint:{hooks:rb,permissions:nb,mcp:ob},supportsConversion:{commands:true,agents:true},project:OQ,globalSupport:{capabilities:$A,detectionPaths:[ps,ja,br],layout:wQ},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Wt],global:[ps]},canonicalDir:nw,canonicalRootFilename:"_root.md",markAsRoot:true},ignore:{feature:"ignore",mode:"flatFile",source:{project:[ms],global:[ja]},canonicalDir:".agentsmesh",canonicalFilename:ow}},mergeGeneratedOutputContent(e,t,r,n){return n===Oc?CQ(e,r):null},buildImportPaths:aS,detectionPaths:[Wt,ms]};});function jA(e){let t=[];for(let r of e.rules){if(r.targets.length>0&&!r.targets.includes(Ua))continue;let n=r.root?"_root":basename(r.source,".md");t.push({path:`${Tr}/${n}.md`,content:r.body.trim()});}return t}function UA(e){return e.agents.map(t=>({path:`${no}/${t.name}.json`,content:JSON.stringify({name:t.name,...t.description?{description:t.description}:{},prompt:t.body.trim(),...t.tools.length>0?{allowedTools:t.tools}:{}},null,2)}))}function BA(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Ni,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}var KA=d(()=>{Pc();s(jA,"generateRules");s(UA,"generateAgents");s(BA,"generateMcp");});async function WA(e,t){let r=t?.scope??"project";return X(Zf,e,r)}var HA=d(()=>{Ae();SR();s(WA,"importFromAmazonQ");});function zA(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Ua}))}var VA=d(()=>{Oe();Pc();s(zA,"lintRules");});function JA(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 YA(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 XA=d(()=>{Ie();s(JA,"lintHooks");s(YA,"lintPermissions");});async function xQ(e){let t=basename(e.relativePath,".json"),r=`${t}.md`,n=join(e.destDir,r),o;try{o=JSON.parse(e.content);}catch{return null}if(!o||typeof o!="object"||Array.isArray(o))return null;let i=o,a=typeof i.name=="string"?i.name:t,l=typeof i.description=="string"?i.description:"",c=Array.isArray(i.allowedTools)?i.allowedTools.filter(u=>typeof u=="string"):[],m=typeof i.prompt=="string"?i.prompt:typeof i.systemPrompt=="string"?i.systemPrompt:"",p=await xe(n,{name:a,description:l,tools:c},m);return {destPath:n,toPath:`${lS}/${r}`,content:p}}var QA,qA=d(()=>{de();Pc();s(xQ,"amazonQAgentMapper");QA={rules:{feature:"rules",mode:"directory",source:{project:[Tr],global:[ds]},canonicalDir:mb,extensions:[".md"],preset:"rule"},agents:{feature:"agents",mode:"directory",source:{project:[no],global:[Ba]},canonicalDir:lS,extensions:[".json"],map:xQ},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Ni],global:[xc]},canonicalDir:".agentsmesh",canonicalFilename:pb}};});var ZA,eT,tT=d(()=>{ZA={rules:"native",additionalRules:"native",commands:"none",agents:"native",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},eT={rules:"native",additionalRules:"none",commands:"none",agents:"native",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"};});var PQ,DQ,NQ,Zf,SR=d(()=>{KA();HA();VA();XA();we();qA();tT();Pc();PQ={name:Ua,generateRules:jA,generateMcp:BA,generateAgents:UA,importFrom:WA},DQ={managedOutputs:{dirs:[Tr,no],files:[Ni]},paths:{rulePath(e,t){return `${Tr}/${e}.md`},commandPath(e,t){return null},agentPath(e,t){return `${no}/${e}.json`}}},NQ={managedOutputs:{dirs:[ds,Ba],files:[xc]},rewriteGeneratedPath(e){return e.startsWith(`${no}/`)?e.replace(`${no}/`,`${Ba}/`):e.startsWith(`${Tr}/`)?e.replace(`${Tr}/`,`${ds}/`):e===Ni?xc:e},paths:{rulePath(e,t){return `${ds}/${e}.md`},commandPath(e,t){return null},agentPath(e,t){return `${Ba}/${e}.json`}}},Zf={id:Ua,metadata:{displayName:"Amazon Q Developer",category:"ide",officialUrl:"https://aws.amazon.com/q/developer",shortDescription:"AWS AI coding assistant"},generators:PQ,capabilities:ZA,emptyImportMessage:"No Amazon Q Developer config found (.amazonq/rules/, .amazonq/cli-agents/, or .amazonq/mcp.json).",lintRules:zA,lint:{hooks:JA,permissions:YA},project:DQ,globalSupport:{capabilities:eT,detectionPaths:[ds,xc,Ba],layout:NQ},importer:QA,buildImportPaths:cS,detectionPaths:[Tr,no,Ni]};});function Go(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(!is(i))continue;let a=St(i),l=Zn(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 am=d(()=>{dn();s(Go,"buildClaudeHooksObjectFromCanonical");});function rT(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:xr,content:o}]:[]}function nT(e){return ae(e,kt)}function oT(e){return e.commands.map(t=>({path:`${kt}/${Z(t.name)}/SKILL.md`,content:Ye(t)}))}function sT(e){return e.agents.map(t=>({path:`${kt}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function iT(e,t){let r=[];if(t.has("mcp")&&e.mcp&&Object.keys(e.mcp.mcpServers).length>0&&r.push({path:nr,content:JSON.stringify({"amp.mcpServers":e.mcp.mcpServers},null,2)}),t.has("hooks")&&e.hooks&&Object.keys(e.hooks).length>0){let n=Go(e);Object.keys(n).length>0&&r.push({path:nr,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:nr,content:JSON.stringify({"amp.permissions":a},null,2)});}}return r}var aT=d(()=>{ie();Be();Se();Ge();am();Ka();s(rT,"generateRules");s(nT,"generateSkills");s(oT,"generateCommands");s(sT,"generateAgents");s(iT,"buildAmpScopedSettings");});function ge(e,t,r){let n=r.some(o=>vQ.includes(o));return e.startsWith(`${t}/`)&&!n?`.agents/skills/${e.slice(t.length+1)}`:null}var vQ,dt=d(()=>{vQ=["amp","antigravity","codex-cli","goose","replit-agent","zed"];s(ge,"mirrorSkillsToAgents");});async function cT(e,t,r){let n=await I(join(e,t));if(n===null)return;let o;try{o=JSON.parse(n);}catch{return}if(o===null||typeof o!="object"||Array.isArray(o))return;let i=o,a=i["amp.mcpServers"]??i.mcpServers;if(a==null||typeof a!="object"||Array.isArray(a)||Object.keys(a).length===0)return;let l={};for(let[c,m]of Object.entries(a))!m||typeof m!="object"||Array.isArray(m)||(l[c]=m);Object.keys(l).length!==0&&(await Xe(e,lT,l),r.push({fromTool:"amp",fromPath:t,toPath:lT,feature:"mcp"}));}var lT,mT=d(()=>{b();Sn();Ka();lT=".agentsmesh/mcp.json";s(cT,"importAmpMcp");});async function pT(e,t={}){let r=t.scope??"project",n=[],o=await H("amp",e,r);return n.push(...await X(eg,e,r,{normalize:o})),await oe(e,r==="global"?Pr:kt,"amp",n,o),await cT(e,r==="global"?gs:nr,n),n}var uT=d(()=>{he();ie();Ae();mT();Ka();RR();s(pT,"importFromAmp");});function dT(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:"amp"}))}var fT=d(()=>{Oe();Ka();s(dT,"lintRules");});function gT(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 hT=d(()=>{Ie();s(gT,"lintIgnore");});function jQ(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 MQ,GQ,$Q,yT,eg,RR=d(()=>{Ge();Se();aT();dt();uT();fT();hT();we();Ka();MQ={name:"amp",primaryRootInstructionPath:xr,generateRules:rT,generateCommands:oT,generateAgents:sT,generateSkills:nT,importFrom:pT},GQ={rootInstructionPath:xr,skillDir:kt,managedOutputs:{dirs:[kt],files:[xr,nr]},paths:{rulePath(e){return xr},commandPath(e){return `${kt}/${Z(e)}/SKILL.md`},agentPath(e){return `${kt}/${V(e)}/SKILL.md`}}},$Q={rootInstructionPath:fs,skillDir:Pr,managedOutputs:{dirs:[Pr],files:[fs,gs]},rewriteGeneratedPath(e){return e===xr?fs:e===nr?gs:e.startsWith(`${kt}/`)?e.replace(`${kt}/`,`${Pr}/`):e},mirrorGlobalPath(e,t){return ge(e,Pr,t)},paths:{rulePath(e){return fs},commandPath(e){return `${Pr}/${Z(e)}/SKILL.md`},agentPath(e){return `${Pr}/${V(e)}/SKILL.md`}}},yT={rules:"native",additionalRules:"embedded",commands:"native",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"native"};s(jQ,"mergeAmpSettings");eg={id:"amp",metadata:{displayName:"Amp",category:"cli",officialUrl:"https://ampcode.com",shortDescription:"Sourcegraph's coding agent"},generators:MQ,capabilities:yT,emptyImportMessage:"No Amp config found (AGENTS.md, .agents/skills, or .amp/settings.json).",lintRules:dT,lint:{ignore:gT},supportsConversion:{commands:true,agents:true},project:GQ,globalSupport:{capabilities:yT,detectionPaths:[fs,gs],layout:$Q},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[xr],global:[fs]},canonicalDir:db,canonicalRootFilename:"_root.md",markAsRoot:true}},emitScopedSettings(e,t,r){return iT(e,r)},mergeGeneratedOutputContent(e,t,r,n){return n===nr||n===gs?jQ(t?.content??e,r):null},sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:pS,detectionPaths:[xr,nr],conversionDefaults:{commandsToSkills:true,agentsToSkills:true}};});function _T(e){let t=e.rules.find(n=>n.root);if(!t)return [];let r=[{path:Dr,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:`${Rn}/${o}.md`,content:n.body.trim()||""});}return r}function ST(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:`${oo}/${t.name}.md`,content:o}})}function
|
|
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:ot,fromPath:join(e,t),toPath:
|
|
66
|
+
${n}`:n||r;return {path:`${oo}/${t.name}.md`,content:o}})}function RT(e){return ae(e,In)}function IT(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Up,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function kT(e){return e.agents.map(t=>({path:`${In}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function LT(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 CT(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=Go(e);return Object.keys(t).length===0?[]:[{path:Bp,content:JSON.stringify(t,null,2)}]}function ET(e){return []}var OT=d(()=>{ie();Be();Se();am();za();s(_T,"generateRules");s(ST,"generateCommands");s(RT,"generateSkills");s(IT,"generateMcp");s(kT,"generateAgents");s(LT,"renderAntigravityGlobalInstructions");s(CT,"generateHooks");s(ET,"generatePermissions");});var wT,bT,AT=d(()=>{$a();wT={rules:"native",additionalRules:"native",commands:gn("partial","workflows"),agents:"none",skills:"native",mcp:"none",hooks:"native",ignore:"none",permissions:"partial"},bT={rules:"native",additionalRules:"embedded",commands:gn("partial","workflows"),agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"partial"};});function BQ(e){let t=e.replace(/\\/g,"/");return !t.startsWith("rules/")||t.endsWith("/")||!t.endsWith(".md")?null:t}async function $o(e){let t=YO(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=BQ(n.source);if(o===null||o==="rules/_root.md")continue;let i=join(e.projectRoot,".agentsmesh",o),a=e.normalize(n.body,e.sourcePath,i),{frontmatter:l,body:c}=T(a),m=await z(i,{...l,root:false,description:n.description||void 0,globs:n.globs.length>0?n.globs:void 0,targets:n.targets.length>0?n.targets:void 0},c);await L(i,m),r.push({fromTool:e.fromTool,fromPath:e.sourcePath,toPath:`.agentsmesh/${o}`,feature:"rules"});}return {rootContent:t.rootContent,results:r}}var lm=d(()=>{b();U();Be();de();s(BQ,"canonicalRulePath");s($o,"splitEmbeddedRulesToCanonical");});async function KQ(e,t,r,n){let o=n==="global"?so:Dr,i=n==="project"?[o,jp]:[o];for(let a of i){let l=join(e,a),c=await I(l);if(c===null)continue;let m=join(e,dS),p=await $o({content:c,projectRoot:e,rulesDir:Ha,sourcePath:l,fromTool:Wa,normalize:r});t.push(...p.results);let{body:u}=T(r(p.rootContent,l,m)),f=await z(m,{root:true},u);await O(join(e,Ha)),await L(m,f),t.push({fromTool:Wa,fromPath:l,toPath:dS,feature:"rules"});return}}async function xT(e,t={}){let r=t.scope??"project",n=[],o=await H(Wa,e,r);return await KQ(e,n,o,r),n.push(...await X(tg,e,r,{normalize:o})),await oe(e,r==="global"?io:In,Wa,n,o),n}var PT=d(()=>{he();b();U();ie();Ae();de();lm();za();kR();s(KQ,"importRootRule");s(xT,"importFromAntigravity");});var vT,FT,MT=d(()=>{U();de();za();vT=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{if(basename(e)==="general.md"||basename(e)==="_root.md")return null;let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Ha}/${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"),FT=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${bf}/${e}`,content:await Ee(n,{hasDescription:typeof o.description=="string",description:typeof o.description=="string"?o.description:void 0,hasAllowedTools:false,allowedTools:[]},i)}},"workflowMapper");});function GT(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Wa}))}var $T=d(()=>{Oe();za();s(GT,"lintRules");});function jT(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 UT=d(()=>{Ie();s(jT,"lintPermissions");});var WQ,HQ,zQ,tg,kR=d(()=>{Se();OT();za();AT();PT();MT();$T();UT();we();WQ={name:"antigravity",primaryRootInstructionPath:Dr,generateRules:_T,generateCommands:ST,generateAgents:kT,generateSkills:RT,generateMcp:IT,generateHooks:CT,generatePermissions:ET,importFrom:xT},HQ={rootInstructionPath:Dr,skillDir:".agents/skills",managedOutputs:{dirs:[Rn,oo,In],files:[Dr,Bp]},rewriteGeneratedPath(e){return e===Up?null:e},paths:{rulePath(e,t){return `${Rn}/${e}.md`},commandPath(e,t){return `${oo}/${e}.md`},agentPath(e){return `${In}/${V(e)}/SKILL.md`}}},zQ={rootInstructionPath:so,renderPrimaryRootInstruction:LT,skillDir:io,managedOutputs:{dirs:[io,Kp],files:[so,Dc,uS]},rewriteGeneratedPath(e){return e===Bp?uS:e===Dr?so:e.startsWith(`${Rn}/`)?null:e.startsWith(".agents/skills/")?e.replace(".agents/skills",io):e.startsWith(`${oo}/`)?e.replace(oo,Kp):e===Up?Dc:e},paths:{rulePath(e,t){return so},commandPath(e,t){return `${Kp}/${e}.md`},agentPath(e){return `${io}/${V(e)}/SKILL.md`}}},tg={id:"antigravity",metadata:{displayName:"Antigravity",category:"ide",officialUrl:"https://antigravity.google",shortDescription:"Google's agentic IDE"},generators:WQ,capabilities:wT,emptyImportMessage:"No Antigravity config found (.agents/rules/, .agents/skills/, or .agents/workflows/).",supportsConversion:{agents:true},lintRules:GT,lint:{permissions:jT},project:HQ,globalSupport:{capabilities:bT,detectionPaths:[".gemini/antigravity/GEMINI.md",".gemini/antigravity/skills",".gemini/antigravity/workflows",".gemini/antigravity/mcp_config.json"],layout:zQ},importer:{rules:{feature:"rules",mode:"directory",source:{project:[Rn]},canonicalDir:Ha,extensions:[".md"],map:vT},commands:{feature:"commands",mode:"directory",source:{project:[oo],global:[Kp]},canonicalDir:bf,extensions:[".md"],map:FT},mcp:{feature:"mcp",mode:"flatFile",source:{global:[Dc]},canonicalDir:".agentsmesh",canonicalFilename:gb}},buildImportPaths:fS,detectionPaths:[".agents/rules/general.md",".agents/rules/",".agents/skills/",".agents/workflows/"],conversionDefaults:{agentsToSkills:true}};});function JQ(e){let t={};return e.globs.length>0||e.trigger==="manual"||e.trigger==="model_decision"?(t.type="agent_requested",e.description&&(t.description=e.description),e.globs.length>0&&(t.globs=e.globs)):(t.type="always_apply",e.description&&(t.description=e.description)),t}function YQ(e){let t={};return e.description&&(t.description=e.description),t}function BT(e){let t=[];for(let r of e.rules)if(!(r.targets.length>0&&!r.targets.includes(ot)))if(r.root){let n={type:"always_apply"};r.description&&(n.description=r.description),t.push({path:`${or}/_root.md`,content:x(n,r.body.trim())});}else {let n=basename(r.source,".md");t.push({path:`${or}/${n}.md`,content:x(JQ(r),r.body.trim())});}return t}function KT(e){return e.commands.map(t=>({path:`${Nr}/${t.name}.md`,content:x(YQ(t),t.body.trim())}))}function XQ(e){let t={name:e.name};return e.description&&(t.description=e.description),t}function WT(e){return e.agents.map(t=>({path:`${hs}/${t.name}.md`,content:x(XQ(t),t.body.trim())}))}function HT(e){return ae(e,sr)}function zT(e){return e.ignore.length===0?[]:[{path:lo,content:e.ignore.join(`
|
|
67
|
+
`)}]}var VT=d(()=>{ie();U();Ja();s(JQ,"ruleFrontmatter");s(YQ,"commandFrontmatter");s(BT,"generateRules");s(KT,"generateCommands");s(XQ,"agentFrontmatter");s(WT,"generateAgents");s(HT,"generateSkills");s(zT,"generateIgnore");});function QQ(e){if(!Array.isArray(e))return null;let t=[],r=[],n=[];for(let i of e){if(!i||typeof i!="object")continue;let a=i,l=typeof a.toolName=="string"?a.toolName:void 0,c=a.permission;!l||!c||typeof c!="object"||a.shellInputRegex===void 0&&(c.type==="allow"?t.push(l):c.type==="deny"?r.push(l):c.type==="ask-user"&&n.push(l));}if(t.length===0&&r.length===0&&n.length===0)return null;let o={allow:t,deny:r};return n.length>0&&(o.ask=n),o}function qQ(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 YT(e,t,r,n={}){let o=await I(join(e,t));if(o===null)return;let i;try{i=JSON.parse(o);}catch{return}if(i.mcpServers&&typeof i.mcpServers=="object"){let l=i.mcpServers;await Xe(e,yS,l),r.push({fromTool:ot,fromPath:join(e,t),toPath:yS,feature:"mcp"});}let a=i.hooks;if(a&&typeof a=="object"&&!Array.isArray(a)){let l=qQ(a);if(Object.keys(l).length>0){let c=join(e,_S);await O(dirname(c)),await L(c,stringify(l)),r.push({fromTool:ot,fromPath:join(e,t),toPath:_S,feature:"hooks"});}}if(n.includePermissions){let l=QQ(i.toolPermissions);if(l){let c=join(e,RS);await O(dirname(c)),await L(c,stringify(l)),r.push({fromTool:ot,fromPath:join(e,t),toPath:RS,feature:"permissions"});}}}async function XT(e,t,r){let n=await I(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,SS);await O(dirname(i)),await L(i,o.join(`
|
|
69
|
+
`)),r.push({fromTool:ot,fromPath:join(e,t),toPath:SS,feature:"ignore"});}var QT=d(()=>{b();Sn();Ja();s(QQ,"parseToolPermissions");s(qQ,"augmentHooksToCanonical");s(YT,"importAugmentSettings");s(XT,"importAugmentIgnore");});function ZQ(e,t){let r={root:t,description:typeof e.description=="string"?e.description:void 0,globs:Array.isArray(e.globs)?e.globs:[]};return (e.type==="agent_requested"||e.agent_requested===true)&&(r.trigger="model_decision"),r}async function eq(e,t,r,n){let o=n==="global"?ys:or,i=join(e,gS);t.push(...await Re({srcDir:join(e,o),destDir:i,extensions:[".md"],fromTool:ot,normalize:r,mapEntry:s(async({relativePath:a,normalizeTo:l})=>{let c=a==="_root.md"||basename(a)==="_root.md",m=join(i,a),{frontmatter:p,body:u}=T(l(m));return {destPath:m,toPath:`${gS}/${a}`,feature:"rules",content:await z(m,ZQ(p,c),u)}},"mapEntry")}));}async function tq(e,t,r,n){let o=n==="global"?_s:Nr,i=join(e,".agentsmesh/commands");t.push(...await Re({srcDir:join(e,o),destDir:i,extensions:[".md"],fromTool:ot,normalize:r,mapEntry:s(async({relativePath:a,normalizeTo:l})=>{let c=basename(a,".md"),m=join(i,`${c}.md`),{frontmatter:p,body:u}=T(l(m)),f=typeof p.description=="string"?p.description:"";return {destPath:m,toPath:`.agentsmesh/commands/${c}.md`,feature:"commands",content:await Ee(m,{description:f,hasDescription:true,hasAllowedTools:false},u)}},"mapEntry")}));}async function rq(e,t,r,n){let o=n==="global"?Va:hs,i=join(e,hS);t.push(...await Re({srcDir:join(e,o),destDir:i,extensions:[".md"],fromTool:ot,normalize:r,mapEntry:s(async({relativePath:a,normalizeTo:l})=>{let c=join(i,a),{frontmatter:m,body:p}=T(l(c));return {destPath:c,toPath:`${hS}/${a}`,feature:"agents",content:await xe(c,m,p)}},"mapEntry")}));}async function ZT(e,t={}){let r=t.scope??"project",n=[],o=await H(ot,e,r);return await eq(e,n,o,r),await tq(e,n,o,r),await rq(e,n,o,r),await oe(e,r==="global"?co:sr,ot,n,o),await YT(e,r==="global"?Ss:ao,n,{includePermissions:r==="global"}),r==="project"&&await XT(e,lo,n),n}var ex=d(()=>{he();rr();ie();de();U();QT();Ja();s(ZQ,"canonicalRuleMeta");s(eq,"importRules");s(tq,"importCommands");s(rq,"importAgents");s(ZT,"importFromAugmentCode");});function tx(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:ot}))}var rx=d(()=>{Oe();Ja();s(tx,"lintRules");});function ox(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=new Set(nx);return Object.keys(e.hooks).filter(r=>!t.has(r)).map(r=>Di(r,"augment-code",nx,{unsupportedBy:"AugmentCode hooks"}))}var nx,sx=d(()=>{Ie();nx=["PreToolUse","PostToolUse","SessionStart","SessionEnd","Stop"];s(ox,"lintHooks");});function nq(e){let t={};for(let[r,n]of Object.entries(e))!n||n.length===0||(t[r]=n.map(o=>({matcher:o.matcher,hooks:[{type:"command",command:o.command,...o.timeout!==void 0?{timeout:o.timeout}:{}}]})));return t}function oq(e){if(!e)return;let t=[];for(let r of e.allow??[])t.push({toolName:r,permission:{type:"allow"}});for(let r of e.deny??[])t.push({toolName:r,permission:{type:"deny"}});for(let r of e.ask??[])t.push({toolName:r,permission:{type:"ask-user"}});return t.length>0?t:void 0}function ix(e,t,r){let n={};if(t.has("mcp")&&e.mcp&&Object.keys(e.mcp.mcpServers).length>0&&(n.mcpServers=e.mcp.mcpServers),t.has("hooks")&&e.hooks&&Object.keys(e.hooks).length>0&&(n.hooks=nq(e.hooks)),r==="global"&&t.has("permissions")){let o=oq(e.permissions);o&&(n.toolPermissions=o);}return Object.keys(n).length===0?null:JSON.stringify(n,null,2)}function ax(e,t){if(e===null)return t;let r;try{let i=JSON.parse(e);r=i!==null&&typeof i=="object"&&!Array.isArray(i)?i:{};}catch{r={};}let n=JSON.parse(t);if(n===null||typeof n!="object"||Array.isArray(n))return e;let o=n;return o.mcpServers!==void 0&&(r.mcpServers=o.mcpServers),o.hooks!==void 0&&(r.hooks=o.hooks),o.toolPermissions!==void 0&&(r.toolPermissions=o.toolPermissions),JSON.stringify(r,null,2)}var lx=d(()=>{s(nq,"serializeHooksForSettings");s(oq,"serializeToolPermissions");s(ix,"buildSettingsContent");s(ax,"mergeAugmentSettings");});var sq,iq,aq,lq,cq,cx,mx=d(()=>{VT();ex();rx();sx();we();lx();Ja();sq={name:ot,generateRules:BT,generateCommands:KT,generateAgents:WT,generateSkills:HT,generateIgnore:zT,importFrom:ZT},iq={skillDir:sr,managedOutputs:{dirs:[or,Nr,hs,sr],files:[ao,lo]},paths:{rulePath(e){return `${or}/${e}.md`},commandPath(e){return `${Nr}/${e}.md`},agentPath(e){return `${hs}/${e}.md`}}},aq={skillDir:co,managedOutputs:{dirs:[ys,_s,Va,co],files:[Ss]},rewriteGeneratedPath(e){return e.startsWith(`${or}/`)?e.replace(`${or}/`,`${ys}/`):e.startsWith(`${Nr}/`)?e.replace(`${Nr}/`,`${_s}/`):e.startsWith(`${sr}/`)?e.replace(`${sr}/`,`${co}/`):e===ao?Ss:e===lo?null:e},paths:{rulePath(e){return `${ys}/${e}.md`},commandPath(e){return `${_s}/${e}.md`},agentPath(e){return `${Va}/${e}.md`}}},lq={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},cq={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"native"},cx={id:ot,metadata:{displayName:"Augment Code",category:"ide",officialUrl:"https://www.augmentcode.com",shortDescription:"Codebase-aware AI for IDEs"},generators:sq,capabilities:lq,emptyImportMessage:"No AugmentCode config found (.augment/rules, .augment/commands, .augment/skills, .augment/settings.json, or .augmentignore).",lintRules:tx,lint:{hooks:ox},project:iq,globalSupport:{capabilities:cq,detectionPaths:[ys,_s,co,Ss],layout:aq},emitScopedSettings(e,t,r){let n=ix(e,r,t);return n===null?[]:[{path:ao,content:n}]},mergeGeneratedOutputContent(e,t,r,n){return n===ao||n===Ss?ax(e,r):null},buildImportPaths:IS,detectionPaths:[or,Nr,sr,ao,lo]};});function px(e){let t=[],r=e.rules.find(o=>o.root);r&&t.push({path:Rs,content:r.body.trim()?r.body:""});let n=e.rules.filter(o=>!o.root&&(o.targets.length===0||o.targets.includes("claude-code")));for(let o of n){let i=basename(o.source,".md"),a={};o.description&&(a.description=o.description),o.globs.length>0&&(a.globs=o.globs);let l=x(a,o.body.trim()||"");t.push({path:`${zp}/${i}.md`,content:l});}return t}function ux(e){return e.commands.map(t=>{let r={description:t.description,"allowed-tools":t.allowedTools.length>0?t.allowedTools:void 0};r["allowed-tools"]===void 0&&delete r["allowed-tools"];let n=x(r,t.body.trim()||"");return {path:`${Vp}/${t.name}.md`,content:n}})}function dx(e){return e.agents.map(t=>{let r={name:t.name,description:t.description,tools:t.tools.length>0?t.tools:void 0,disallowedTools:t.disallowedTools.length>0?t.disallowedTools:void 0,model:t.model||void 0,permissionMode:t.permissionMode||void 0,maxTurns:t.maxTurns>0?t.maxTurns:void 0,mcpServers:t.mcpServers.length>0?t.mcpServers:void 0,hooks:Object.keys(t.hooks).length>0?t.hooks:void 0,skills:t.skills.length>0?t.skills:void 0,memory:t.memory||void 0};Object.keys(r).forEach(a=>{r[a]===void 0&&delete r[a];});let n=t.body.trim()||"",o=/^##\s*Role\b/m.test(n)?n:`## Role
|
|
70
70
|
|
|
71
|
-
${n}`,i=x(r,o);return {path:`${Jp}/${t.name}.md`,content:i}})}function
|
|
71
|
+
${n}`,i=x(r,o);return {path:`${Jp}/${t.name}.md`,content:i}})}function fx(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:Nc,content:t}]}function gx(e){let t=[];for(let r of e.skills){let n={name:r.name,description:r.description||void 0};n.description===void 0&&delete n.description;let o=r.body.trim()||"",i=!o||/^##\s*Purpose\b/m.test(o)?o:`## Purpose
|
|
72
72
|
|
|
73
|
-
${o}`,a=x(n,i);t.push({path:`${Yp}/${r.name}/SKILL.md`,content:a});for(let l of r.supportingFiles){let c=l.relativePath.replace(/\\/g,"/");t.push({path:`${Yp}/${r.name}/${c}`,content:l.content});}}return t}function
|
|
74
|
-
`);return [{path:Qp,content:t}]}var
|
|
73
|
+
${o}`,a=x(n,i);t.push({path:`${Yp}/${r.name}/SKILL.md`,content:a});for(let l of r.supportingFiles){let c=l.relativePath.replace(/\\/g,"/");t.push({path:`${Yp}/${r.name}/${c}`,content:l.content});}}return t}function hx(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:Xp,content:o}]}function yx(e,t){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let r=Go(e);if(Object.keys(r).length===0)return [];if(t?.scope==="global")return [{path:Is,content:JSON.stringify(r,null,2)}];let n=JSON.stringify({hooks:r},null,2);return [{path:Xp,content:n}]}function _x(e){if(!e.ignore||e.ignore.length===0)return [];let t=e.ignore.join(`
|
|
74
|
+
`);return [{path:Qp,content:t}]}var Sx=d(()=>{U();ks();am();s(px,"generateRules");s(ux,"generateCommands");s(dx,"generateAgents");s(fx,"generateMcp");s(gx,"generateSkills");s(hx,"generatePermissions");s(yx,"generateHooks");s(_x,"generateIgnore");});function uq(e){let t=e.description.trim();return t||(basename(e.source)||"rule").replace(/\.md$/i,"")||"Rule"}function Rx(e){let t=e.rules.find(o=>o.root),r=(t?.body??"").trim();return r?`# Global Instructions
|
|
75
75
|
|
|
76
|
-
## ${t?
|
|
76
|
+
## ${t?uq(t):"Guidance"}
|
|
77
77
|
|
|
78
78
|
${r}
|
|
79
|
-
`:""}var
|
|
80
|
-
`);continue}let h=await B(c);for(let y of h){let _=await I(y);if(_===null)continue;let R=relative(c,y),k=join(p,R);await O(dirname(k));let w=r(_,y,k);await L(k,R==="SKILL.md"?await eo(k,g.value.frontmatter,g.value.body):w);let D=`${
|
|
79
|
+
`:""}var Ix=d(()=>{s(uq,"ruleSectionTitle");s(Rx,"renderClaudeGlobalPrimaryInstructions");});function Lx(e,t){return e===null?"created":e!==t?"updated":"unchanged"}async function Cx(e,t,r,n){if(r!=="global")return [];let o=n.has("agents"),i=n.has("commands");if(!o&&!i)return [];let a=[];if(o)for(let l of e.agents){if(!l.outputStyle)continue;let c={name:l.name,description:l.description||void 0},m=x(c,l.body.trim()),p=`${kS}/${l.name}.md`,u=await I(join(t,p));a.push({target:"claude-code",path:p,content:m,currentContent:u??void 0,status:Lx(u,m)});}if(i)for(let l of e.commands){if(!l.outputStyle)continue;let c={name:l.name,description:l.description||void 0},m=x(c,l.body.trim()),p=`${kS}/${l.name}.md`,u=await I(join(t,p));a.push({target:"claude-code",path:p,content:m,currentContent:u??void 0,status:Lx(u,m)});}return a}var Ex=d(()=>{b();U();ks();s(Lx,"computeStatus");s(Cx,"generateClaudeGlobalExtras");});function Ox(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(!is({...m,type:p}))continue;let u=p==="prompt"?Zn(m)||St(m):St(m)||Zn(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,Is),n=await I(r);if(n===null)return false;let o;try{o=JSON.parse(n);}catch{return false}if(!o||typeof o!="object"||Array.isArray(o))return false;let i=Ox(o);if(Object.keys(i).length===0)return false;let a=stringify(i),l=join(e,Ya);return await O(dirname(l)),await L(l,a),t.push({fromTool:"claude-code",fromPath:r,toPath:Ya,feature:"hooks"}),true}async function bx(e,t){let r=t.some(m=>m.feature==="hooks"&&m.fromPath.replace(/\\/g,"/").endsWith(Is)),n=join(e,Xp),o=await I(n);if(!o)return;let i;try{i=JSON.parse(o);}catch{return}if(!t.some(m=>m.feature==="mcp")&&i.mcpServers&&typeof i.mcpServers=="object"){let m=i.mcpServers;await Xe(e,eu,m),t.push({fromTool:"claude-code",fromPath:n,toPath:eu,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,CS);await O(dirname(h)),await L(h,g),t.push({fromTool:"claude-code",fromPath:n,toPath:CS,feature:"permissions"});}}let c=i.hooks;if(!r&&c&&typeof c=="object"&&!Array.isArray(c)){let m=Ox(c);if(Object.keys(m).length>0){let p=stringify(m),u=join(e,Ya);await O(dirname(u)),await L(u,p),t.push({fromTool:"claude-code",fromPath:n,toPath:Ya,feature:"hooks"});}}}var Ax=d(()=>{dn();b();Sn();ks();s(Ox,"claudeHooksToCanonical");s(wx,"importClaudeHooksJson");s(bx,"importSettings");});async function xx(e,t,r){let n=join(e,Yp),o=join(e,LS),a=(await B(n)).filter(l=>l.endsWith("SKILL.md"));for(let l of a){let c=dirname(l),m=basename(c),p=join(o,m),u=await I(l);if(u===null)continue;let f=r(u,l,join(p,"SKILL.md")),g=mn(f,l);if(!g.ok){process.stderr.write(`\u26A0 skipping ${l}: ${g.error.message}
|
|
80
|
+
`);continue}let h=await B(c);for(let y of h){let _=await I(y);if(_===null)continue;let R=relative(c,y),k=join(p,R);await O(dirname(k));let w=r(_,y,k);await L(k,R==="SKILL.md"?await eo(k,g.value.frontmatter,g.value.body):w);let D=`${LS}/${m}/${R}`;t.push({fromTool:"claude-code",fromPath:y,toPath:D,feature:"skills"});}}}var Px=d(()=>{b();U();de();ks();s(xx,"importClaudeSkills");});async function Dx(e,t={}){let r=t.scope??"project",n=[],o=await H("claude-code",e,r);return n.push(...await X(rg,e,r,{normalize:o})),await xx(e,n,o),await wx(e,n),await bx(e,n),n}var Nx=d(()=>{he();Ae();Ax();Px();OR();s(Dx,"importFromClaudeCode");});var vx,Fx,Mx,Gx=d(()=>{U();de();Pt();ks();vx=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Zp}/${e}`,content:await z(n,{...o,root:false},i)}},"claudeRuleMapper"),Fx=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n)),a=Ar(o.allowedTools),l=a.length>0?a:Ar(o["allowed-tools"]);return {destPath:n,toPath:`${Af}/${e}`,content:await Ee(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"),Mx=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Tf}/${e}`,content:await xe(n,o,i)}},"claudeAgentMapper");});function $x(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(i=>({...i,target:_b}))}var jx=d(()=>{Oe();ks();s($x,"lintRules");});var gq,Ux,hq,yq,rg,OR=d(()=>{Sx();ks();dt();Ix();Ex();Nx();Gx();jx();we();gq={name:"claude-code",primaryRootInstructionPath:Rs,generateRules:px,generateCommands:ux,generateAgents:dx,generateSkills:gx,generateMcp:fx,generatePermissions:hx,generateHooks:yx,generateIgnore:_x,importFrom:Dx},Ux={rootInstructionPath:Rs,skillDir:".claude/skills",managedOutputs:{dirs:[".claude/agents",".claude/commands",".claude/rules",".claude/skills"],files:[Rs,vi,".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`}}},hq={rootInstructionPath:vi,skillDir:".claude/skills",renderPrimaryRootInstruction:Rx,managedOutputs:{dirs:[".claude/agents",".claude/commands",".claude/rules",".claude/skills",".claude/output-styles",".agents/skills"],files:[vi,".claude/settings.json",qp,Is,".claudeignore"]},rewriteGeneratedPath(e){return e===Rs?vi:e===Nc?qp:e},mirrorGlobalPath(e,t){return ge(e,".claude/skills",t)},paths:Ux.paths},yq={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"native"},rg={id:"claude-code",metadata:{displayName:"Claude Code",category:"cli",officialUrl:"https://www.anthropic.com/claude-code",shortDescription:"Anthropic's terminal coding agent"},generators:gq,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:$x,project:Ux,globalSupport:{capabilities:yq,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:hq,scopeExtras:Cx},importer:{rules:[{feature:"rules",mode:"singleFile",source:{project:[Rs,vi],global:[vi]},canonicalDir:Zp,canonicalRootFilename:"_root.md",markAsRoot:true},{feature:"rules",mode:"directory",source:{project:[zp],global:[zp]},canonicalDir:Zp,extensions:[".md"],map:vx}],commands:{feature:"commands",mode:"directory",source:{project:[Vp],global:[Vp]},canonicalDir:Af,extensions:[".md"],map:Fx},agents:{feature:"agents",mode:"directory",source:{project:[Jp],global:[Jp]},canonicalDir:Tf,extensions:[".md"],map:Mx},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Nc],global:[qp]},canonicalDir:".agentsmesh",canonicalFilename:eu},ignore:{feature:"ignore",mode:"flatFile",source:{project:[Qp],global:[Qp]},canonicalDir:".agentsmesh",canonicalFilename:Sb}},buildImportPaths:ES,detectionPaths:[Rs,vi,".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 bR(e){return e.agents.map(t=>({path:`${ir}/${t.name}.md`,content:x({name:t.name,description:t.description||void 0,tools:t.tools.length>0?t.tools:void 0,model:t.model||void 0,"x-agentsmesh-disallowed-tools":t.disallowedTools.length>0?t.disallowedTools:void 0,"x-agentsmesh-permission-mode":t.permissionMode||void 0,"x-agentsmesh-max-turns":t.maxTurns>0?t.maxTurns:void 0,"x-agentsmesh-mcp-servers":t.mcpServers.length>0?t.mcpServers:void 0,"x-agentsmesh-hooks":Object.keys(t.hooks).length>0?t.hooks:void 0,"x-agentsmesh-skills":t.skills.length>0?t.skills:void 0,"x-agentsmesh-memory":t.memory||void 0},t.body.trim())}))}var Bx=d(()=>{U();vr();s(bR,"generateAgents");});function Sq(e){let t=basename(e,".md");return t==="_root"?"root":t}function Kx(e){let t=[],r=e.rules.find(n=>n.root);if(r){let n=r.body.trim()?r.body:"";t.push({path:Mi,content:n});}for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes("cline"))continue;let o=Sq(n.source),i={description:n.description||void 0,paths:n.globs.length>0?n.globs:void 0};Object.keys(i).forEach(l=>{i[l]===void 0&&delete i[l];});let a=Object.keys(i).length>0?x(i,n.body.trim()||""):n.body.trim()||"";t.push({path:`${Ls}/${o}.md`,content:a});}return t}function Wx(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:`${Es}/${t.name}.md`,content:o}})}function
|
|
83
|
-
`);return [{path:Xa,content:t}]}function
|
|
84
|
-
`)}function
|
|
82
|
+
${n}`:r||n;return {path:`${Es}/${t.name}.md`,content:o}})}function Hx(e){if(!e.ignore||e.ignore.length===0)return [];let t=e.ignore.join(`
|
|
83
|
+
`);return [{path:Xa,content:t}]}function zx(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 Rq(e){return e.replace(/[^a-zA-Z0-9]/g,"-").toLowerCase()}function AR(e){return e.replace(/[\r\n]+/g," ")}function Iq(e,t,r){return ["#!/usr/bin/env bash",`# agentsmesh-event: ${AR(e)}`,`# agentsmesh-matcher: ${AR(r)}`,`# agentsmesh-command: ${AR(t)}`,"set -eu",t,""].join(`
|
|
84
|
+
`)}function Vx(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)un(i)&&(t.push({path:`${Qa}/${Rq(r)}-${o}.sh`,content:Iq(r,i.command,i.matcher)}),o++);}return t}function Jx(e){let t=[];for(let r of e.skills){let n={name:r.name,description:r.description||void 0};n.description===void 0&&delete n.description;let o=x(n,r.body.trim()||"");t.push({path:`${Dt}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${Dt}/${r.name}/${a}`,content:i.content});}}return t}var Yx=d(()=>{dn();U();vr();Bx();s(Sq,"ruleSlug");s(Kx,"generateRules");s(Wx,"generateCommands");s(Hx,"generateIgnore");s(zx,"generateMcp");s(Rq,"safeEventName");s(AR,"safeShellLine");s(Iq,"buildHookScript");s(Vx,"generateHooks");s(Jx,"generateSkills");});async function Xx(e,t,r){if(e==="workflows"||e.startsWith("workflows/"))return null;let n=e.replace(/\\/g,"/");if(n==="_root.md")return null;let o=join(t,n),{frontmatter:i,body:a}=T(r(o)),l=us(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:`${Gi}/${n}`,feature:"rules",content:await z(o,c,a)}}async function Qx(e,t,r){let n=join(t,e),{frontmatter:o,body:i}=T(r(n)),a=Object.prototype.hasOwnProperty.call(o,"description"),l=a&&typeof o.description=="string"?o.description:"",c=a,m=i;if(!c){let p=i.indexOf(`
|
|
85
85
|
|
|
86
86
|
`);if(p>0){let u=i.slice(0,p).trim();u&&!u.includes(`
|
|
87
|
-
`)&&(l=u,c=true,m=i.slice(p+2));}}return {destPath:n,toPath:`${
|
|
88
|
-
`)),t.push({fromTool:"cline",fromPath:o,toPath:
|
|
87
|
+
`)&&(l=u,c=true,m=i.slice(p+2));}}return {destPath:n,toPath:`${xf}/${e}`,feature:"commands",content:await Ee(n,{description:l,hasDescription:c,allowedTools:[],hasAllowedTools:Object.prototype.hasOwnProperty.call(o,"allowedTools")||Object.prototype.hasOwnProperty.call(o,"allowed-tools")},m)}}async function qx(e,t,r){let n=join(t,e),{frontmatter:o,body:i}=T(r(n)),a={...o},l={disallowedTools:"x-agentsmesh-disallowed-tools",permissionMode:"x-agentsmesh-permission-mode",maxTurns:"x-agentsmesh-max-turns",mcpServers:"x-agentsmesh-mcp-servers",hooks:"x-agentsmesh-hooks",skills:"x-agentsmesh-skills",memory:"x-agentsmesh-memory"};for(let[c,m]of Object.entries(l))Object.prototype.hasOwnProperty.call(o,m)&&(a[c]=o[m]);return {destPath:n,toPath:`.agentsmesh/agents/${e}`,feature:"agents",content:await xe(n,a,i)}}var xR=d(()=>{U();de();Pt();vr();s(Xx,"mapClineRuleFile");s(Qx,"mapClineWorkflowFile");s(qx,"mapClineAgentFile");});async function Zx(e,t,r){let n=join(e,Gi),o=join(e,Ls),i=join(e,Ls),a=false;try{a=(await stat(i)).isFile();}catch{}if(a){let p=await I(i);if(p!==null){await O(n);let u=join(n,"_root.md"),{frontmatter:f,body:g}=T(r(p,i,u)),y=f.root===true?f:{...f,root:true},_=await z(u,y,g);await L(u,_),t.push({fromTool:"cline",fromPath:i,toPath:`${Gi}/_root.md`,feature:"rules"});}return a}let l=null,c=join(o,"_root.md"),m=await I(c);if(m===null){let p=join(e,Mi),u=await I(p);if(u!==null){l=p,await O(n);let f=join(n,"_root.md"),{frontmatter:g,body:h}=T(r(u,p,f)),_=g.root===true?g:{...g,root:true},R=await z(f,_,h);await L(f,R),t.push({fromTool:"cline",fromPath:p,toPath:`${Gi}/_root.md`,feature:"rules"});}else {let h=(await B(o)).filter(y=>y.endsWith(".md")&&!y.includes("/workflows/")).sort()[0];if(h){let y=await I(h);if(y!==null){l=h,await O(n);let _=join(n,"_root.md"),{frontmatter:R,body:k}=T(r(y,h,_)),D=R.root===true?R:{...R,root:true},N=await z(_,D,k);await L(_,N),t.push({fromTool:"cline",fromPath:h,toPath:`${Gi}/_root.md`,feature:"rules"});}}}}else {l=c,await O(n);let p=join(n,"_root.md"),{frontmatter:u,body:f}=T(r(m,c,p)),h=u.root===true?u:{...u,root:true},y=await z(p,h,f);await L(p,y),t.push({fromTool:"cline",fromPath:c,toPath:`${Gi}/_root.md`,feature:"rules"});}return t.push(...await Re({srcDir:o,destDir:n,extensions:[".md"],fromTool:"cline",normalize:r,mapEntry:s(async({srcPath:p,relativePath:u,normalizeTo:f})=>p===l?null:Xx(u,n,f),"mapEntry")})),a}var eP=d(()=>{b();U();de();rr();xR();vr();s(Zx,"importClineRules");});function tP(e){return e===null||typeof e!="object"||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="string"))}function Lq(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=tP(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:tP(t.headers),env:o}:null}async function rP(e,t){let r=[Cs,Ib].map(c=>join(e,c)),n=null,o=null;for(let c of r){let m=await I(c);if(m!==null){n=c,o=m;break}}if(o===null)return;let i=n??r[0],a;try{a=JSON.parse(o);}catch{}let l=a?.mcpServers;if(l!==void 0&&typeof l=="object"&&l!==null&&Object.keys(l).length>0){let c={};for(let[m,p]of Object.entries(l)){let u=Lq(p);u&&(c[m]=u);}Object.keys(c).length>0&&(await O(join(e,".agentsmesh")),await L(join(e,bS),JSON.stringify({mcpServers:c},null,2)),t.push({fromTool:Fi,fromPath:i,toPath:bS,feature:"mcp"}));}}var nP=d(()=>{b();vr();s(tP,"toStringRecord");s(Lq,"mapClineServerToCanonical");s(rP,"importClineMcp");});function oP(e){return Cq.some(t=>t.test(e))}var Cq,sP=d(()=>{Cq=[/^\./,/^_ab-agent-/,/^_ab-command-/,/\.fixture\./,/\.test\./];s(oP,"isReservedArtifactName");});async function Oq(e){let t=await B(e).catch(()=>[]),r=[];for(let n of t){let o=relative(e,n).replace(/\\/g,"/"),i=basename(o);if(oP(i))continue;let a=await I(n);a!==null&&r.push({absolutePath:n,relativePath:o,content:a});}return r}async function Tu(e,t,r){let n=await Oq(t),o=join(r.projectRoot,r.destCanonicalSkillsDir,e);for(let i of n){let a=join(o,i.relativePath);await O(dirname(a));let l=r.normalize(i.content,i.absolutePath,a);if(i.relativePath==="SKILL.md"){let{frontmatter:c,body:m}=T(l),p=await eo(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 aP(e,t,r,n){let o=join(n.projectRoot,n.destCanonicalSkillsDir,e);await O(o);let i=join(o,"SKILL.md"),a=n.normalize(r,t,i),{frontmatter:l,body:c}=T(a),m=await eo(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 xu(e){let t=new Map;try{let n=(await B(e)).filter(o=>basename(o)==="SKILL.md");for(let o of n){let i=dirname(o),a=basename(i);t.set(a,i);}}catch{}return t}async function cm(e,t,r=[]){for(let n of e){let o=join(t.projectRoot,n),i=await xu(o);if(i.size===0)continue;let a=false;for(let[l,c]of i){let m=join(c,"SKILL.md"),p=await I(m);if(p===null)continue;a=true;let{frontmatter:u,body:f}=T(p),g={skillName:l,skillDir:c,skillMdPath:m,rawContent:p,frontmatter:u,rawBody:f,options:t},h=false;for(let y of r)if(await y.recognize(g)){h=true;break}h||await Tu(l,c,t);}if(a)return}}function mm(e){return {async recognize(t){let r=Cc(t.frontmatter,t.skillName);if(!r)return false;let{options:n}=t;await to(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,Ti(r,a)),n.results.push({fromTool:n.targetName,fromPath:t.skillMdPath,toPath:`${e.canonicalAgentsDir}/${r.name}.md`,feature:"agents"}),true}}}function lP(e){return {async recognize(t){let r=hf(t.frontmatter,t.skillName);if(!r)return false;let{options:n}=t;await to(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,yf(r,a)),n.results.push({fromTool:n.targetName,fromPath:t.skillMdPath,toPath:`${e.canonicalCommandsDir}/${r.name}.md`,feature:"commands"}),true}}}var pm=d(()=>{b();U();de();sP();Se();Ge();Np();s(Oq,"readNativeSkill");s(Tu,"importDirectorySkill");s(aP,"importFlatSkill");s(xu,"findDirectorySkills");s(cm,"importSkillsDirectory");s(mm,"projectedAgentRecognizer");s(lP,"commandSkillRecognizer");});async function cP(e,t,r,n=Dt){await cm([n],{projectRoot:e,destCanonicalSkillsDir:kb,targetName:"cline",normalize:r,results:t},[mm({canonicalAgentsDir:tu})]);}var mP=d(()=>{pm();vr();s(cP,"importClineSkills");});function NR(e,t){return e.match(new RegExp(`^# agentsmesh-${t}:\\s*(.+)$`,"m"))?.[1]?.trim()??null}async function pP(e,t){let n=(await B(e).catch(()=>[])).filter(o=>basename(o).endsWith(".sh")&&dirname(o)===e);for(let o of n){let i=await I(o);if(!i)continue;let a=NR(i,"event"),l=NR(i,"command");if(!a||!l)continue;let c=NR(i,"matcher")??"*";t[a]||(t[a]=[]),t[a].push({matcher:c,command:l});}}async function dP(e,t){let r={};if(await pP(join(e,Qa),r),await pP(join(e,el),r),Object.keys(r).length===0)return;let n=join(e,OS);await O(dirname(n)),await L(n,stringify(r)),t.push({fromTool:Fi,fromPath:join(e,el),toPath:OS,feature:"hooks"});}var fP=d(()=>{b();vr();s(NR,"extractMeta");s(pP,"loadHooksFromDir");s(dP,"importClineHooks");});async function gP(e){let t=[],r=await H(Fi,e),n=await Zx(e,t,r),o=join(e,Xa),i=await I(o);if(i!==null&&i.trim()){let l=i.split(/\r?\n/),c=[];for(let m of l){let p=m.trim();p&&!p.startsWith("#")&&c.push(p);}if(c.length>0){await O(join(e,".agentsmesh"));let m=join(e,wS);await L(m,c.join(`
|
|
88
|
+
`)),t.push({fromTool:"cline",fromPath:o,toPath:wS,feature:"ignore"});}}await rP(e,t);let a=join(e,xf);return n||t.push(...await Re({srcDir:join(e,Es),destDir:a,extensions:[".md"],fromTool:"cline",normalize:r,mapEntry:s(({relativePath:l,normalizeTo:c})=>Qx(l,a,c),"mapEntry")})),await cP(e,t,r),t.push(...await Re({srcDir:join(e,ir),destDir:join(e,tu),extensions:[".md"],fromTool:"cline",normalize:r,mapEntry:s(({relativePath:l,normalizeTo:c})=>qx(l,join(e,tu),c),"mapEntry")})),await dP(e,t),t}var hP=d(()=>{he();b();rr();xR();eP();vr();nP();mP();fP();s(gP,"importFromCline");});function yP(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(i=>({...i,target:Fi}))}var _P=d(()=>{Oe();vr();s(yP,"lintRules");});function SP(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 RP(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 IP=d(()=>{Ie();s(SP,"lintCommands");s(RP,"lintHooks");});var Aq,Tq,xq,Pq,kP,LP=d(()=>{Yx();$a();vr();hP();_P();IP();we();Aq={name:"cline",primaryRootInstructionPath:Mi,generateRules:Kx,generateCommands:Wx,generateAgents:bR,generateSkills:Jx,generateMcp:zx,generateHooks:Vx,generateIgnore:Hx,importFrom:gP},Tq={rootInstructionPath:Mi,skillDir:".cline/skills",managedOutputs:{dirs:[ir,".cline/skills",".clinerules",".clinerules/hooks",".clinerules/workflows"],files:["AGENTS.md",".cline/cline_mcp_settings.json",".clineignore",".clinerules/typescript.md"]},paths:{rulePath(e,t){return `${Ls}/${e}.md`},commandPath(e,t){return `${Es}/${e}.md`},agentPath(e){return `${ir}/${e}.md`}}},xq={skillDir:Dt,managedOutputs:{dirs:[qa,Za,el,Dt,ir,".agents/skills"],files:[Cs,Xa]},rewriteGeneratedPath(e){return e===Mi?null:e.startsWith(`${Qa}/`)?`${el}/${e.slice(Qa.length+1)}`:e.startsWith(`${Es}/`)?`${Za}/${e.slice(Es.length+1)}`:e.startsWith(`${Ls}/`)?`${qa}/${e.slice(Ls.length+1)}`:e},mirrorGlobalPath(e,t){return e.startsWith(`${Dt}/`)?`.agents/skills/${e.slice(Dt.length+1)}`:null},paths:{rulePath(e,t){return `${qa}/${e}.md`},commandPath(e,t){return `${Za}/${e}.md`},agentPath(e){return `${ir}/${e}.md`}}},Pq={rules:"native",additionalRules:"native",commands:gn("native","workflows"),agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},kP={id:"cline",metadata:{displayName:"Cline",category:"ide",officialUrl:"https://cline.bot",shortDescription:"Autonomous coding agent for VS Code"},generators:Aq,capabilities:{rules:"native",additionalRules:"native",commands:gn("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:yP,lint:{commands:SP,hooks:RP},project:Tq,globalSupport:{capabilities:Pq,detectionPaths:[qa,Za,el,Dt,ir,Cs,Xa],layout:xq},buildImportPaths:AS,detectionPaths:[".clinerules",".cline"],nativeInstall:{pickPaths:[{prefix:Dt,feature:"skills",strategy:{kind:"skillDir"}},{prefix:Es,feature:"commands",strategy:{kind:"basename",suffix:".md"}}]},conversionDefaults:{agentsToSkills:true}};});var ft,CP,ri,Al,EP,jo,OP,og,ni,Tl,Uo,xl,oi,wP,Pu,bP,vR,AP,TP,FR,xP,PP,MR,GR,$R,st=d(()=>{ft="codex-cli",CP="codex.md",ri="AGENTS.md",Al=".codex/AGENTS.md",EP=".codex/AGENTS.override.md",jo=".agents/skills",OP=".codex/skills",og=".codex/config.toml",ni=".codex/hooks.json",Tl=".codex/instructions",Uo=".codex/rules",xl=".codex/agents",oi=".agentsmesh/rules",wP=".agentsmesh/commands",Pu=".agentsmesh/agents",bP=".agentsmesh/skills",vR=".agentsmesh/mcp.json",AP=".agentsmesh/hooks.yaml",TP="am-codex-rule:v1",FR="# am-json: ",xP="# am-body-b64-begin",PP="# am-body-b64-end",MR="# am64:",GR="<!-- agentsmesh:codex-rule-index:start -->",$R="<!-- agentsmesh:codex-rule-index:end -->";});function jR(e){return basename(e,".md")}function Du(e){return `${Tl}/${jR(e.source)}.md`}function DP(e){let t={root:e.root,description:e.description||void 0,globs:e.globs.length>0?e.globs:void 0,targets:e.targets.length>0?e.targets:void 0,codex_emit:e.codexEmit||void 0,codex_instruction:e.codexInstructionVariant&&e.codexInstructionVariant!=="default"?e.codexInstructionVariant:void 0};return Object.keys(t).forEach(r=>{t[r]===void 0&&delete t[r];}),x(t,e.body.trim()||"")}function Nq(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 \`${Uo}/${jR(e.source)}.rules\`.`),e.targets.length>0&&t.push(`Targeted to ${e.targets.map(r=>`\`${r}\``).join(", ")}.`),t.join(" ")}function NP(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||jR(a.source)}](${Du(a)}): ${Nq(a)}`),i=[GR,"## Additional Rule Files",...o,$R].join(`
|
|
89
89
|
`);return r?`${r}
|
|
90
90
|
|
|
91
|
-
${i}`:i}function
|
|
92
|
-
`).trim()}var
|
|
91
|
+
${i}`:i}function vP(e){let t=GR.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),r=$R.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return e.replace(new RegExp(`\\n?${t}[\\s\\S]*?${r}\\n?`,"g"),`
|
|
92
|
+
`).trim()}var sg=d(()=>{U();st();s(jR,"ruleSlug");s(Du,"codexInstructionMirrorPath");s(DP,"serializeCodexInstructionMirror");s(Nq,"summarizeRule");s(NP,"appendCodexRuleIndex");s(vP,"stripCodexRuleIndex");});function Fq(e){return /(^|\n)\s*[A-Za-z_][A-Za-z0-9_]*\s*\(/.test(e)}function Mq(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 Gq(e){let t=e.trim();return t?Fq(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.","#",...Mq(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 UR(e){let t=e.rules.find(n=>n.root),r=[];t&&r.push({path:ri,content:NP(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:`${Uo}/${o}.rules`,content:Gq(n.body)}),r.push({path:Du(n),content:DP(n)}));}return r}function BR(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 FP=d(()=>{Be();st();sg();s(Fq,"looksLikeCodexRulesDsl");s(Mq,"toCodexRulesComments");s(Gq,"toSafeCodexRulesContent");s(UR,"generateRules");s(BR,"renderCodexGlobalInstructions");});function KR(e){let t=[];for(let r of e.skills){let n={name:r.name,description:r.description||void 0};n.description===void 0&&delete n.description;let o=x(n,r.body.trim()||"");t.push({path:`${jo}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${jo}/${r.name}/${a}`,content:i.content});}}return t}function $q(e){return {path:`${jo}/${Z(e.name)}/SKILL.md`,content:Ye(e)}}function WR(e){return e.commands.map($q)}var MP=d(()=>{U();st();Ge();s(KR,"generateSkills");s($q,"commandToSkillOutput");s(WR,"generateCommands");});function HR(e){return e.agents.map(t=>({path:`${xl}/${t.name}.toml`,content:jq(t)}))}function jq(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 GP=d(()=>{st();s(HR,"generateAgents");s(jq,"serializeAgentToCodexToml");});function ig(e){return "command"in e}function $P(e){return "url"in e}var ag=d(()=>{s(ig,"isStdioMcpServer");s($P,"isUrlMcpServer");});function zR(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=Object.fromEntries(Object.entries(e.mcp.mcpServers).flatMap(([n,o])=>ig(o)?[[n,o]]:[]));if(Object.keys(t).length===0)return [];let r=Uq(t);return [{path:og,content:r}]}function Uq(e){let t=[];for(let[r,n]of Object.entries(e)){let o=jP(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])=>`${jP(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===
|
|
111
|
-
`}function
|
|
112
|
-
`),t.push({fromTool:tl,fromPath:r,toPath:
|
|
108
|
+
`}function jP(e){return !/^[A-Za-z0-9_-]+$/.test(e)}var UP=d(()=>{ag();st();s(zR,"generateMcp");s(Uq,"serializeMcpToToml");s(jP,"needsTomlQuoting");});function um(e,t){if(!e.hooks)return [];let r={};for(let[n,o]of Object.entries(e.hooks)){if(!Array.isArray(o))continue;let i=o.flatMap(a=>{if(!un(a)||a.type==="prompt")return [];let l={type:"command",command:St(a)};return a.timeout!==void 0&&(l.timeout=a.timeout),[{matcher:a.matcher,hooks:[l]}]});i.length>0&&(r[n]=i);}return Object.keys(r).length===0?[]:[{path:t,content:JSON.stringify({hooks:r},null,2)}]}async function dm(e){let{projectRoot:t,hooksFile:r,canonicalHooksPath:n,targetName:o,results:i}=e,a=join(t,r),l=await I(a);if(l===null)return;let c;try{c=JSON.parse(l);}catch{return}if(!c||typeof c!="object")return;let m=c.hooks;if(!m||typeof m!="object"||Array.isArray(m))return;let p={};for(let[f,g]of Object.entries(m))if(Array.isArray(g))for(let h of g){if(!h||typeof h!="object")continue;let y=h,_=typeof y.matcher=="string"?y.matcher:"*";if(Array.isArray(y.hooks))for(let R of y.hooks){if(!R||typeof R!="object")continue;let k=R;if(k.type!=="command"||typeof k.command!="string")continue;let w={matcher:_,command:k.command,type:"command"};typeof k.timeout=="number"&&(w.timeout=k.timeout),(p[f]??=[]).push(w);}}if(Object.keys(p).length===0)return;let u=join(t,n);await O(dirname(u)),await L(u,stringify(p)),i.push({fromTool:o,fromPath:a,toPath:n,feature:"hooks"});}var Pl=d(()=>{dn();b();s(um,"buildWrappedCommandHooks");s(dm,"importWrappedCommandHooks");});function VR(e){return um(e,ni)}var KP=d(()=>{Pl();st();s(VR,"generateHooks");});var WP=d(()=>{FP();MP();GP();UP();KP();});var HP=d(()=>{WP();});function zq(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 zP(e,t){let r=join(e,og),n=await I(r);if(n===null)return;let o;try{o=parse$1(n);}catch{return}let i=o.mcp_servers;if(!i||typeof i!="object"||Array.isArray(i)||Object.keys(i).length===0)return;let a={};for(let[l,c]of Object.entries(i)){let m=zq(c);m&&(a[l]=m);}Object.keys(a).length!==0&&(await Xe(e,vR,a),t.push({fromTool:ft,fromPath:r,toPath:vR,feature:"mcp"}));}var VP=d(()=>{b();Sn();st();s(zq,"mapTomlServerToCanonical");s(zP,"importMcp");});async function JP(e,t,r){await cm([jo,OP],{projectRoot:e,destCanonicalSkillsDir:bP,targetName:ft,normalize:r,results:t},[lP({canonicalCommandsDir:wP}),mm({canonicalAgentsDir:Pu})]);}var YP=d(()=>{pm();st();s(JP,"importSkills");});async function XP(e,t,r){let n=join(e,xl),o=join(e,Pu);try{let a=(await B(n)).filter(l=>l.endsWith(".toml"));for(let l of a){let c=await I(l);if(!c)continue;let m=parse$1(c);if(!m||typeof m!="object")continue;let p=typeof m.name=="string"?m.name:basename(l,".toml"),u=typeof m.description=="string"?m.description:"",f=typeof m.developer_instructions=="string"?m.developer_instructions.trim():"",g=typeof m.model=="string"?m.model:"",h=typeof m.sandbox_mode=="string"?m.sandbox_mode:"",y=h==="read-only"?"read-only":h==="workspace-write"?"allow":"",_=Array.isArray(m.mcp_servers)?m.mcp_servers.filter(N=>typeof N=="string"):[];await O(o);let R=join(o,`${p}.md`),k=r(f,l,R),D=Ti({name:p,description:u,tools:[],disallowedTools:[],model:g,permissionMode:y,maxTurns:0,mcpServers:_,hooks:{},skills:[],memory:""},k);await L(R,D),t.push({fromTool:ft,fromPath:l,toPath:`${Pu}/${p}.md`,feature:"agents"});}}catch{}}var QP=d(()=>{b();Se();st();s(XP,"importCodexAgentsFromToml");});function qP(e){if(!e.includes(TP))return null;let t=e.split(`
|
|
109
|
+
`).find(c=>c.startsWith(FR));if(!t)return null;let r;try{r=JSON.parse(t.slice(FR.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===xP){l=true;continue}if(m===PP){l=false;continue}l&&m.startsWith(MR)&&a.push(m.slice(MR.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 ZP=d(()=>{st();s(qP,"tryParseEmbeddedCanonicalFromCodexRules");});async function tD(e,t,r){let n=[],o=join(e,Uo);try{let i=await B(o),a=i.filter(c=>c.endsWith(".md"));for(let c of a){let m=await I(c);if(!m)continue;let p=relative(o,c).replace(/\\/g,"/"),u=join(t,p),{frontmatter:f,body:g}=T(r(m,c,u));await O(t);let h=f.root===!0?f:{...f,root:!1},y=await z(u,h,g);await L(u,y),n.push({fromTool:ft,fromPath:c,toPath:`${oi}/${p}`,feature:"rules"});}let l=i.filter(c=>c.endsWith(".rules"));for(let c of l){let m=await I(c);if(!m)continue;let p=relative(o,c).replace(/\\/g,"/").replace(/\.rules$/i,".md"),u=join(t,p);await O(t);let f=qP(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:`${oi}/${p}`,feature:"rules"});}}catch{}return n}var rD=d(()=>{b();U();de();st();ZP();s(tD,"importCodexNonRootRuleFiles");});async function oD(e,t,r,n,o){let i=join(e,CP),a=join(e,ri),l=join(e,EP),c=join(e,Al),m=o==="global"?await I(l):null,p=o==="global"?await I(c):null,u=o==="project"?await I(a):null,f=o==="project"?await I(i):null,g=m!==null?l:p!==null?c:u!==null?a:i,h=join(e,oi),y=m??p??u??f;if(y!==null){await O(h);let _=join(h,"_root.md"),R=g===a||g===c||g===l?vP(y):y,k=await $o({content:R,projectRoot:e,rulesDir:oi,sourcePath:g,fromTool:"codex-cli",normalize:r});t.push(...k.results);let w=r(g===a||g===c||g===l?n(k.rootContent,g,_):k.rootContent,g,_),{frontmatter:D,body:N}=T(w),K=D.root===true?D:{...D,root:true},J=await z(_,K,N);await L(_,J),t.push({fromTool:"codex-cli",fromPath:g,toPath:`${oi}/_root.md`,feature:"rules"});}await qq(e,h,t,r),t.push(...await tD(e,h,r)),o!=="global"&&t.push(...await Re({srcDir:e,destDir:h,extensions:["AGENTS.md","AGENTS.override.md"],fromTool:"codex-cli",normalize:r,mapEntry:s(async({srcPath:_,normalizeTo:R})=>{let k=relative(e,dirname(_)).replace(/\\/g,"/"),w=basename(_),D=w==="AGENTS.override.md";if(!k||k==="."||!D&&w!=="AGENTS.md")return null;let N=k.replace(/\//g,"-");if(!kf(k))return await to(join(h,`${N}.md`)),null;let K=join(h,`${N}.md`),{frontmatter:J,body:ee}=T(R(K));return {destPath:K,toPath:`${oi}/${N}.md`,feature:"rules",content:await z(K,{...J,root:false,globs:[`${k}/**`],...D?{codex_instruction:"override"}:{}},ee)}},"mapEntry")}));}async function qq(e,t,r,n){try{let i=(await B(join(e,Tl))).filter(l=>l.endsWith(".md")),a=join(e,Tl);for(let l of i){let c=relative(a,l).replace(/\\/g,"/");if(c==="_root.md")continue;let m=await I(l);if(!m)continue;let p=join(t,c),{frontmatter:u,body:f}=T(n(m,l,p));await O(t);let g=u.root===!0?u:{...u,root:!1},h=await z(p,g,f);await L(p,h),r.push({fromTool:ft,fromPath:l,toPath:`${oi}/${c}`,feature:"rules"});}}catch{}}var sD=d(()=>{b();U();de();lm();rr();Np();st();rD();sg();s(oD,"importCodexRules");s(qq,"importInstructionMirrors");});async function iD(e,t){await dm({projectRoot:e,hooksFile:ni,canonicalHooksPath:AP,targetName:ft,results:t});}var aD=d(()=>{Pl();st();s(iD,"importCodexHooks");});async function lD(e,t){let r=t?.scope??"project",n=[],o=await H(ft,e,r),i=await H("windsurf",e,r);return await oD(e,n,o,i,r),await JP(e,n,o),await XP(e,n,o),await zP(e,n),await iD(e,n),n}var cD=d(()=>{he();st();VP();YP();QP();sD();aD();s(lD,"importFromCodex");});function mD(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 pD=d(()=>{st();s(mD,"lintRules");});function uD(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 dD=d(()=>{Ie();s(uD,"lintMcp");});function fD(e){return Du(e)}var gD=d(()=>{sg();s(fD,"codexAdvisoryInstructionPath");});var eZ,tZ,rZ,nZ,yD,_D=d(()=>{HP();st();cD();pD();dD();we();bp();gD();Ge();eZ={name:"codex-cli",primaryRootInstructionPath:ri,generateRules:UR,generateCommands:WR,generateAgents:HR,generateSkills:KR,generateMcp:zR,generateHooks:VR,importFrom:lD},tZ={rootInstructionPath:ri,extraRuleOutputPaths(e){if(e.root||e.codexEmit!=="execution")return [];let t=basename(e.source,".md");return [`${Uo}/${t}.rules`]},skillDir:".agents/skills",managedOutputs:{dirs:[".agents/skills",".codex/agents",".codex/instructions"],files:["AGENTS.md",".codex/config.toml",ni]},paths:{rulePath(e,t){return fD(t)},commandPath(e,t){return Ic(t,"codex-cli")?`${jo}/${Z(e)}/SKILL.md`:null},agentPath(e,t){return `${xl}/${e}.toml`}}},rZ={rootInstructionPath:Al,renderPrimaryRootInstruction:BR,extraRuleOutputPaths(e){if(e.root||e.codexEmit!=="execution")return [];let t=basename(e.source,".md");return [`${Uo}/${t}.rules`]},skillDir:jo,managedOutputs:{dirs:[".agents/skills",".codex/agents",".codex/rules"],files:[Al,".codex/config.toml",ni]},rewriteGeneratedPath(e){return e===ri?Al:e.startsWith(`${Tl}/`)?null:e},paths:{rulePath(e,t){return t.codexEmit==="execution"?`${Uo}/${e}.rules`:Al},commandPath(e,t){return Ic(t,"codex-cli")?`${jo}/${Z(e)}/SKILL.md`:null},agentPath(e,t){return `${xl}/${e}.toml`}}},nZ={rules:"native",additionalRules:"embedded",commands:"embedded",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},yD={id:"codex-cli",metadata:{displayName:"Codex CLI",category:"cli",officialUrl:"https://github.com/openai/codex",shortDescription:"OpenAI's terminal coding agent"},generators:eZ,capabilities:{rules:"native",additionalRules:"native",commands:"embedded",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},emptyImportMessage:"No Codex config found (codex.md or AGENTS.md).",supportsConversion:{commands:true},lintRules:mD,lint:{mcp:uD},project:tZ,globalSupport:{capabilities:nZ,detectionPaths:[".codex/AGENTS.md",".codex/AGENTS.override.md",".codex/config.toml",".codex/agents",".codex/rules",ni,".agents/skills"],layout:rZ},buildImportPaths:TS,sharedArtifacts:{".agents/skills/":"owner"},detectionPaths:["codex.md","AGENTS.md","AGENTS.override.md",".codex/config.toml",".codex/agents",".codex/rules",ni],nativeInstall:{pickPaths:[{prefix:".codex",feature:"rules",strategy:{kind:"basename",suffix:".md"}}]},excludeFromStarterInit:true,conversionDefaults:{commandsToSkills:true,agentsToSkills:false}};});function sZ(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 SD(e){return `${mo}/${e}.md`}function RD(e){let t={description:e.description||void 0,invokable:true,"x-agentsmesh-kind":"command","x-agentsmesh-name":e.name,"x-agentsmesh-allowed-tools":e.allowedTools.length>0?e.allowedTools:void 0};return t.description===void 0&&delete t.description,t["x-agentsmesh-allowed-tools"]===void 0&&delete t["x-agentsmesh-allowed-tools"],x(t,e.body.trim()||"")}function ID(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:sZ(e["x-agentsmesh-allowed-tools"])}}function kD(e,t){let r={description:e.description||void 0,"allowed-tools":e.allowedTools.length>0?e.allowedTools:void 0};return r.description===void 0&&delete r.description,r["allowed-tools"]===void 0&&delete r["allowed-tools"],x(r,t.trim()||"")}var lg=d(()=>{U();po();s(sZ,"toStringArray");s(SD,"continueCommandRulePath");s(RD,"serializeCommandRule");s(ID,"parseCommandRuleFrontmatter");s(kD,"serializeImportedCommand");});function LD(e){let t=[],r=e.rules.find(n=>n.root);if(r){let n={};r.description&&(n.description=r.description),t.push({path:Os,content:x(n,r.body.trim()||"")});}for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes("continue"))continue;let o=basename(n.source,".md"),i={};n.description&&(i.description=n.description),n.globs.length>0&&(i.globs=n.globs),t.push({path:`${kn}/${o}.md`,content:x(i,n.body.trim()||"")});}return t}function CD(e){return e.commands.map(t=>({path:`${mo}/${t.name}.md`,content:RD(t)}))}function ED(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Pf,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function OD(e){return e.agents.map(t=>({path:`${ar}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function wD(e){return ae(e,ar)}var bD=d(()=>{ie();Se();U();lg();po();s(LD,"generateRules");s(CD,"generateCommands");s(ED,"generateMcp");s(OD,"generateAgents");s(wD,"generateSkills");});function AD(e){if(!e)return null;let t=e.allow??[],r=e.ask??[],n=e.deny??[];if(t.length===0&&r.length===0&&n.length===0)return null;let o={};return t.length>0&&(o.allow=t),r.length>0&&(o.ask=r),n.length>0&&(o.exclude=n),stringify(o).trimEnd()+`
|
|
111
|
+
`}function TD(e){let t;try{t=parse(e);}catch{return null}if(!t||typeof t!="object"||Array.isArray(t))return null;let r=t,n=nt(r.allow),o=nt(r.ask),i=nt(r.exclude);if(n.length===0&&o.length===0&&i.length===0)return null;let a={allow:n,deny:i};return o.length>0&&(a.ask=o),a}var XR=d(()=>{Pt();s(AD,"serializeContinuePermissions");s(TD,"parseContinuePermissions");});function uZ(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:nt(l.args),env:Ht(l.env),description:c};continue}typeof l.url=="string"&&(o[i]={type:typeof l.type=="string"?l.type:"http",url:l.url,headers:Ht(l.headers),env:Ht(l.env),description:c});}return o}async function dZ(e,t){let r=(await B(join(e,xS))).filter(i=>[".json",".yaml",".yml"].includes(extname(i))),n={},o=[];for(let i of r){let a=await I(i);a&&(Object.assign(n,uZ(a,extname(i))),o.push(i));}if(Object.keys(n).length!==0){await Xe(e,DS,n);for(let i of o)t.push({fromTool:tl,fromPath:i,toPath:DS,feature:"mcp"});}}async function fZ(e,t){let r=join(e,rl),n=await I(r);if(n===null)return;let o=TD(n);if(!o)return;let i=join(e,NS);await O(dirname(i)),await L(i,stringify(o).trimEnd()+`
|
|
112
|
+
`),t.push({fromTool:tl,fromPath:r,toPath:NS,feature:"permissions"});}async function PD(e,t={}){let r=[],n=await H(tl,e);return r.push(...await X(cg,e,"project",{normalize:n})),await oe(e,ar,tl,r,n),await dZ(e,r),t.scope==="global"&&await fZ(e,r),r}var DD=d(()=>{he();b();ie();Ae();Sn();Pt();po();XR();qR();s(uZ,"readMcpServers");s(dZ,"importMcp");s(fZ,"importPermissions");s(PD,"importFromContinue");});function gZ(e){return e==="general.md"||e==="_root.md"}var ND,vD,FD=d(()=>{U();de();lg();po();s(gZ,"isContinueRootRulePath");ND=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=gZ(e),o=n?"_root.md":e,i=join(r,o),{frontmatter:a,body:l}=T(t(i)),c={description:typeof a.description=="string"?a.description:void 0,globs:Array.isArray(a.globs)?a.globs:void 0,root:n};return c.description===void 0&&delete c.description,c.globs===void 0&&delete c.globs,{destPath:i,toPath:`${Df}/${o}`,content:await z(i,c,l)}},"continueRuleMapper"),vD=s(async({absolutePath:e,relativePath:t,normalizeTo:r,destDir:n})=>{let o=join(n,t),{frontmatter:i,body:a}=T(r(o)),l=ID(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 Ee(u,{description:l.description,hasDescription:!!l.description,allowedTools:l.allowedTools,hasAllowedTools:l.allowedTools.length>0},T(kD(l,a)).body);return {destPath:u,toPath:`${Nf}/${p}`,content:f}},"continueCommandMapper");});function MD(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:tl}))}var GD=d(()=>{Oe();po();s(MD,"lintRules");});function $D(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 jD=d(()=>{Ie();s($D,"lintCommands");});function SZ(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var UD,BD=d(()=>{b();po();s(SZ,"computeStatus");UD=s(async(e,t,r,n)=>{if(r!=="global")return [];let o=n.has("rules"),i=n.has("commands"),a=n.has("mcp");if(!(o&&e.rules.length>0||i&&e.commands.length>0||a&&e.mcp!==null&&Object.keys(e.mcp.mcpServers).length>0))return [];let c={name:"agentsmesh",version:1,schema:"v1"};if(o&&e.rules.length>0&&(c.rules=e.rules.map(u=>({name:u.description||basename(u.source,".md"),rule:u.body.trim()}))),i&&e.commands.length>0&&(c.prompts=e.commands.map(u=>{let f={name:u.name};return u.description&&(f.description=u.description),f.prompt=u.body.trim(),f})),a&&e.mcp!==null){let u=Object.entries(e.mcp.mcpServers);u.length>0&&(c.mcpServers=u.map(([f,g])=>({name:f,...g})));}let m=stringify(c),p=await I(join(t,ru));return [{target:"continue",path:ru,content:m,currentContent:p??void 0,status:SZ(p,m)}]},"generateContinueGlobalConfig");});function WD(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var HD,zD=d(()=>{b();po();BD();XR();s(WD,"computeStatus");HD=s(async(e,t,r,n)=>{let o=await UD(e,t,r,n);if(r!=="global")return o;let i=[...o];if(n.has("permissions")){let a=AD(e.permissions);if(a){let l=await I(join(t,rl));i.push({target:"continue",path:rl,content:a,currentContent:l??void 0,status:WD(l,a)});}}if(n.has("rules")){let a=e.rules.find(l=>l.root);if(a){let l=a.body.trim(),c=await I(join(t,vc));i.push({target:"continue",path:vc,content:l,currentContent:c??void 0,status:WD(c,l)});}}return i},"generateContinueScopeExtras");});var RZ,IZ,kZ,LZ,cg,qR=d(()=>{Se();bD();po();DD();FD();GD();jD();lg();we();zD();RZ={name:"continue",primaryRootInstructionPath:Os,generateRules:LD,generateCommands:CD,generateAgents:OD,generateSkills:wD,generateMcp:ED,importFrom:PD},IZ={rootInstructionPath:Os,skillDir:".continue/skills",managedOutputs:{dirs:[".continue/prompts",".continue/rules",".continue/skills"],files:[".continue/mcpServers/agentsmesh.json"]},paths:{rulePath(e,t){return `${kn}/${e}.md`},commandPath(e,t){return SD(e)},agentPath(e){return `${ar}/${V(e)}/SKILL.md`}}},kZ={rootInstructionPath:Os,outputFamilies:[{id:"compat-agents",kind:"additional",explicitPaths:[vc]}],skillDir:ar,managedOutputs:{dirs:[kn,mo,ar,".agents/skills"],files:[Pf,vc,ru,rl]},mirrorGlobalPath(e,t){return e.startsWith(`${ar}/`)?`.agents/skills/${e.slice(ar.length+1)}`:null},paths:{rulePath(e,t){return `${kn}/${e}.md`},commandPath(e,t){return `${mo}/${e}.md`},agentPath(e){return `${ar}/${V(e)}/SKILL.md`}}},LZ={rules:"native",additionalRules:"native",commands:"native",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"native"},cg={id:"continue",metadata:{displayName:"Continue",category:"ide",officialUrl:"https://continue.dev",shortDescription:"Open-source AI code assistant"},generators:RZ,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:MD,lint:{commands:$D},project:IZ,globalSupport:{capabilities:LZ,detectionPaths:[kn,mo,".continue/mcpServers",ar],layout:kZ,scopeExtras:HD},importer:{rules:{feature:"rules",mode:"directory",source:{project:[kn],global:[kn]},canonicalDir:Df,extensions:[".md"],map:ND},commands:{feature:"commands",mode:"directory",source:{project:[mo],global:[mo]},canonicalDir:Nf,extensions:[".md"],map:vD}},buildImportPaths:vS,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 si,ma,VD,pa,ii,Bo,Ko,ua,Dl,mg,pg,JD,eI,YD,XD,ai,Nl,li,vl,Fl,tI,rI,Ml,Jt=d(()=>{si="copilot",ma=".github/copilot-instructions.md",VD=".github/copilot",pa=".github/instructions",ii=".github/prompts",Bo=".github/hooks",Ko=".github/skills",ua=".github/agents",Dl=".agentsmesh/rules",mg=".agentsmesh/commands",pg=".agentsmesh/agents",JD=".agentsmesh/skills",eI=".agentsmesh/hooks.yaml",YD=".agentsmesh/mcp.json",XD=".github/copilot-hooks",ai=".copilot/copilot-instructions.md",Nl=".copilot/agents",li=".copilot/skills",vl=".copilot/prompts",Fl=".copilot/AGENTS.md",tI=".claude/skills",rI=".agents/skills",Ml=".vscode/mcp.json";});function QD(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 ug(e){return `${ii}/${e}.prompt.md`}function qD(e){let t={agent:"agent",description:e.description||void 0,"x-agentsmesh-kind":"command","x-agentsmesh-name":e.name,"x-agentsmesh-allowed-tools":e.allowedTools.length>0?e.allowedTools:void 0};return t.description===void 0&&delete t.description,t["x-agentsmesh-allowed-tools"]===void 0&&delete t["x-agentsmesh-allowed-tools"],x(t,e.body.trim()||"")}function ZD(e,t){let n=((typeof e["x-agentsmesh-name"]=="string"?e["x-agentsmesh-name"]:"")||basename(t,".prompt.md")).trim(),o=QD(e["x-agentsmesh-allowed-tools"]),i=o.length>0?o:QD(e.tools);return {name:n,description:typeof e.description=="string"?e.description:"",allowedTools:i}}var dg=d(()=>{U();Jt();s(QD,"toStringArray");s(ug,"commandPromptPath");s(qD,"serializeCommandPrompt");s(ZD,"parseCommandPromptFrontmatter");});function fg(e){return un(e)}var nI=d(()=>{dn();s(fg,"hasHookCommand");});function oI(e,t){return t?.scope==="global"?[]:!e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Ml,content:JSON.stringify({servers:e.mcp.mcpServers},null,2)}]}var eN=d(()=>{Jt();s(oI,"generateMcp");});function OZ(e){let t=basename(e,".md");return t==="_root"?"root":t}function wZ(e){switch(e){case "PreToolUse":return "preToolUse";case "PostToolUse":return "postToolUse";case "Notification":return "notification";case "UserPromptSubmit":return "userPromptSubmitted";default:return null}}function tN(e){let t=[],r=e.rules.find(n=>n.root);r?.body.trim()&&t.push(r.body.trim());for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes("copilot"))continue;let o=n.body.trim();if(!o)continue;let i=n.description?`## ${n.description}`:null;i?t.push(`${i}
|
|
113
113
|
|
|
114
114
|
${o}`):t.push(o);}return t.join(`
|
|
115
115
|
|
|
116
|
-
`)}function
|
|
117
|
-
`)}async function
|
|
116
|
+
`)}function rN(e){let t=e.rules.find(n=>n.root),r=[];t&&r.push({path:ma,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=OZ(n.source),i={description:n.description||void 0,applyTo:n.globs.length===1?n.globs[0]:n.globs};Object.keys(i).forEach(l=>{i[l]===void 0&&delete i[l];});let a=x(i,n.body.trim()||"");r.push({path:`${pa}/${o}.instructions.md`,content:a});}return r}function nN(e){return e.commands.map(t=>({path:ug(t.name),content:qD(t)}))}function oN(e){let t=[];for(let r of e.skills){let n={name:r.name,description:r.description||void 0};n.description===void 0&&delete n.description;let o=x(n,r.body.trim()||"");t.push({path:`${Ko}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${Ko}/${r.name}/${a}`,content:i.content});}}return t}function sN(e){return e.agents.map(t=>{let r={name:t.name,description:t.description,tools:t.tools.length>0?t.tools:void 0,model:t.model||void 0,"mcp-servers":t.mcpServers.length>0?t.mcpServers:void 0,skills:t.skills.length>0?t.skills:void 0};Object.keys(r).forEach(o=>{r[o]===void 0&&delete r[o];});let n=x(r,t.body.trim()||"");return {path:`${ua}/${t.name}.agent.md`,content:n}})}function iN(e){if(!e.hooks)return [];let t=Object.fromEntries(Object.entries(e.hooks).flatMap(([r,n])=>{let o=wZ(r);if(!o||!Array.isArray(n))return [];let i=n.filter(a=>typeof a=="object"&&a!==null&&fg(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:`${Bo}/agentsmesh.json`,content:JSON.stringify({version:1,hooks:t},null,2)}]}var aN=d(()=>{U();Jt();dg();nI();eN();s(OZ,"ruleSlug");s(wZ,"mapHookEvent");s(tN,"renderCopilotGlobalInstructions");s(rN,"generateRules");s(nN,"generateCommands");s(oN,"generateSkills");s(sN,"generateAgents");s(iN,"generateHooks");});function AZ(e){switch(e){case "preToolUse":return "PreToolUse";case "postToolUse":return "PostToolUse";case "notification":return "Notification";case "userPromptSubmitted":return "UserPromptSubmit";default:return null}}function TZ(e){return typeof e!="string"?"*":e.match(/^Matcher:\s*(.+)$/)?.[1]?.trim()||"*"}function mN(e){let t=e.match(/^# agentsmesh-command:\s*(.+)$/m);return t?.[1]?t[1].trim():e.replace(/^#!.*\n/,"").replace(/^#.*\n/gm,"").replace(/^HOOK_DIR=.*\n/gm,"").replace(/^set -e[u]?\n?/m,"").trim()}async function pN(e,t){let r=join(e,Bo),o=(await B(r).catch(()=>[])).filter(p=>p.endsWith(".json")),i={};for(let p of o){let u=await I(p);if(!u)continue;let f;try{f=JSON.parse(u);}catch{continue}if(!(!f||typeof f.hooks!="object"||f.hooks===null))for(let[g,h]of Object.entries(f.hooks)){let y=AZ(g);if(!(!y||!Array.isArray(h)))for(let _ of h){if(!_||typeof _!="object")continue;let R=_,k=typeof R.bash=="string"?R.bash:"";if(!k)continue;let w=join(r,k.replace(/^\.\//,"")),D=await I(w);if(!D)continue;let N=mN(D);N&&(i[y]||(i[y]=[]),i[y].push({matcher:TZ(R.comment),command:N,type:"command"}));}}}let a=join(e,XD),c=(await B(a).catch(()=>[])).filter(p=>dirname(p)===a&&/^[^-]+-\d+\.sh$/i.test(basename(p)));for(let p of c){let u=await I(p);if(!u)continue;let f=basename(p,".sh"),g=f.lastIndexOf("-"),h=g>0?f.slice(0,g):f;i[h]||(i[h]=[]),i[h].push({matcher:"*",command:mN(u),type:"command"});}if(Object.keys(i).length===0)return;let m=join(e,eI);await O(dirname(m)),await L(m,stringify(i)),t.push({fromTool:si,fromPath:join(e,Bo),toPath:eI,feature:"hooks"});}var uN=d(()=>{b();Jt();s(AZ,"mapCopilotHookEvent");s(TZ,"extractMatcher");s(mN,"extractWrapperCommand");s(pN,"importHooks");});async function dN(e,t,r,n=Ko){let o=join(e,n),i=await xu(o),a={projectRoot:e,destCanonicalSkillsDir:JD,targetName:si,normalize:r,results:t};for(let[l,c]of i)await Tu(l,c,a);}var fN=d(()=>{pm();Jt();s(dN,"importSkills");});async function gN(e,t={}){let r=t.scope??"project",n=[],o=await H(si,e,r);return n.push(...await X(gg,e,r,{normalize:o})),await dN(e,n,o,r==="global"?li:Ko),r==="project"&&await pN(e,n),n}var hN=d(()=>{he();Ae();Jt();uN();fN();sI();s(gN,"importFromCopilot");});async function hg(e){let t=await B(e),r=new Set;for(let n of t){if(basename(n)==="SKILL.md"){r.add(basename(dirname(n)));continue}!relative(e,n).replace(/\\/g,"/").includes("/")&&n.toLowerCase().endsWith(".md")&&r.add(basename(n,".md"));}return [...r].filter(Boolean).sort()}var aI=d(()=>{b();s(hg,"skillNamesFromNativeSkillDir");});async function yN(e,t){let r=join(e,...t.split("/"));if(t.startsWith(ii)){let n=await B(r),o=[...new Set(n.filter(i=>i.toLowerCase().endsWith(".prompt.md")).map(i=>basename(i,".prompt.md")))].sort();return o.length?{commands:o}:{}}if(t.startsWith(".github/copilot")&&!t.includes("copilot-instructions.md")){let n=await B(r),o=[...new Set(n.filter(i=>i.includes(".instructions.md")).map(i=>basename(i).replace(/\.instructions\.md$/i,"")))].sort();return o.length?{rules:o}:{}}if(t.startsWith(".github/instructions")){let n=await B(r),o=new Set;for(let a of n){let l=basename(a);l.toLowerCase().endsWith(".instructions.md")?o.add(l.replace(/\.instructions\.md$/i,"")):l.toLowerCase().endsWith(".md")&&o.add(basename(a,".md"));}let i=[...o].sort();return i.length?{rules:i}:{}}if(t.startsWith(".github/skills")){let n=await hg(r);return n.length?{skills:n}:{}}if(t.startsWith(".github/agents")){let n=await B(r),o=[...new Set(n.filter(i=>i.toLowerCase().endsWith(".agent.md")).map(i=>basename(i,".agent.md")))].sort();return o.length?{agents:o}:{}}return {}}var _N=d(()=>{b();Jt();aI();s(yN,"inferCopilotPickFromPath");});function SN(e,t,r,n){let i=Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(l=>({...l,target:si})),a=e.rules.filter(l=>!l.root&&l.globs.length===0);return [...i,...a.map(l=>({level:"warning",file:l.source,target:si,message:"Copilot path-specific instructions require applyTo globs; non-root rules without globs are not generated."}))]}var RN=d(()=>{Oe();Jt();s(SN,"lintRules");});function IN(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 kN(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=>Di(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 LN=d(()=>{Ie();s(IN,"lintCommands");s(kN,"lintHooks");});function MZ(e){return e.replace(/[^a-zA-Z0-9]/g,"-").toLowerCase()}function GZ(e,t){let r=relative(e,t).replace(/\\/g,"/");return !r||r.startsWith("../")?null:r}function $Z(e,t){let r=e.match(EN);if(!r?.groups)return e;let n=r.groups.prefix??"",o=r.groups.suffix??"";return `${n}"$HOOK_DIR/${t}"${o}`}async function jZ(e,t){let n=t.match(EN)?.groups?.path;if(!n)return null;let o=join(e,n),i=await I(o);if(i===null)return null;let a=GZ(e,o);return a?{assetPath:`${Bo}/scripts/${a}`,content:i,rewrittenCommand:$Z(t,a)}:null}function UZ(e,t){return `${Bo}/scripts/${MZ(e)}-${t}.sh`}function CN(e){return e.replace(/[\r\n]+/g," ")}function BZ(e,t){return ["#!/usr/bin/env bash",`# agentsmesh-matcher: ${CN(t)}`,`# agentsmesh-command: ${CN(e)}`,"set -eu",e,""].join(`
|
|
117
|
+
`)}async function ON(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(!fg(c))continue;let m=UZ(i,l),p=c.command,u=await jZ(e,c.command);u&&(p=u.rewrittenCommand,o.has(u.assetPath)||o.set(u.assetPath,{path:u.assetPath,content:u.content}));let f=BZ(p,c.matcher).replace(`set -eu
|
|
118
118
|
`,`set -eu
|
|
119
119
|
HOOK_DIR="$(cd "$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
|
|
120
|
-
`);n.push({path:m,content:f}),l++;}}return [...r,...n,...o.values()]}var
|
|
121
|
-
`);return [{path:ws,content:t}]}function
|
|
122
|
-
`)}var
|
|
120
|
+
`);n.push({path:m,content:f}),l++;}}return [...r,...n,...o.values()]}var EN,wN=d(()=>{b();Jt();nI();EN=/^(?<prefix>\s*(?:(?:bash|sh|zsh)\s+)?)["']?(?<path>(?:\.\.\/|\.\/|[^/\s"'`]+\/)[^\s"'`]+)["']?(?<suffix>(?:\s.*)?)$/;s(MZ,"safePhaseName");s(GZ,"toRepoRelative");s($Z,"rewriteWrapperCommand");s(jZ,"buildAssetOutput");s(UZ,"wrapperPath");s(CN,"safeShellLine");s(BZ,"buildWrapper");s(ON,"addHookScriptAssets");});function WZ(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var bN,AN=d(()=>{b();Jt();s(WZ,"computeStatus");bN=s(async(e,t,r,n)=>{if(r!=="global"||!n.has("rules"))return [];let o=e.rules.find(l=>l.root);if(!o)return [];let i=o.body.trim(),a=await I(join(t,Fl));return [{target:"copilot",path:Fl,content:i,currentContent:a??void 0,status:WZ(a,i)}]},"generateCopilotGlobalExtras");});function TN(e){for(let t of Object.keys(e))e[t]===void 0&&delete e[t];return e}var xN,PN,DN,NN,vN=d(()=>{U();de();Pt();dg();Jt();s(TN,"pruneUndefined");xN=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=e.replace(/\.instructions\.md$/i,".md"),o=join(r,n),{frontmatter:i,body:a}=T(t(o)),l=us(i.globs),c=TN({root:false,description:typeof i.description=="string"?i.description:void 0,globs:l.length>0?l:void 0});return {destPath:o,toPath:`${Dl}/${n}`,content:await z(o,c,a)}},"copilotLegacyRuleMapper"),PN=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=e.endsWith(".instructions.md")?e.replace(/\.instructions\.md$/i,".md"):e,o=join(r,n),{frontmatter:i,body:a}=T(t(o)),l=us(i.applyTo!==void 0?i.applyTo:i.globs),c=TN({root:false,description:typeof i.description=="string"?i.description:void 0,globs:l.length>0?l:void 0});return {destPath:o,toPath:`${Dl}/${n}`,content:await z(o,c,a)}},"copilotNewRuleMapper"),DN=s(async({absolutePath:e,relativePath:t,normalizeTo:r,destDir:n})=>{let o=t.replace(/\.prompt\.md$/i,".md"),i=join(n,o),{frontmatter:a,body:l}=T(r(i)),c=ZD(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:`${mg}/${u}`,content:await Ee(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"),NN=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{if(!e.endsWith(".agent.md"))return null;let n=e.replace(/\.agent\.md$/i,".md"),o=basename(n,".md"),i=join(r,n),{frontmatter:a,body:l}=T(t(i));return {destPath:i,toPath:`${pg}/${n}`,content:await xe(i,{...a,name:typeof a.name=="string"?a.name:o},l)}},"copilotAgentMapper");});var FN,MN=d(()=>{Jt();vN();FN={rules:[{feature:"rules",mode:"singleFile",source:{project:[ma],global:[ai]},canonicalDir:Dl,canonicalRootFilename:"_root.md",markAsRoot:true},{feature:"rules",mode:"directory",source:{project:[VD]},canonicalDir:Dl,extensions:[".instructions.md"],map:xN},{feature:"rules",mode:"directory",source:{project:[pa]},canonicalDir:Dl,extensions:[".instructions.md",".md"],map:PN}],commands:{feature:"commands",mode:"directory",source:{project:[ii],global:[vl]},canonicalDir:mg,extensions:[".prompt.md"],map:DN},agents:{feature:"agents",mode:"directory",source:{project:[ua],global:[Nl]},canonicalDir:pg,extensions:[".agent.md"],map:NN},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Ml]},canonicalDir:".agentsmesh",canonicalFilename:YD,mcpServersKey:"servers"}};});var GN,$N,jN=d(()=>{GN={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},$N={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"none",hooks:"none",ignore:"none",permissions:"none"};});var VZ,JZ,YZ,gg,sI=d(()=>{aN();Jt();hN();_N();RN();we();dg();LN();wN();AN();MN();jN();VZ={name:"copilot",primaryRootInstructionPath:ma,generateRules:rN,generateCommands:nN,generateAgents:sN,generateSkills:oN,generateHooks:iN,generateMcp:oI,importFrom:gN},JZ={rootInstructionPath:ma,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 [`${pa}/${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",Ml]},paths:{rulePath(e,t){return `${pa}/${e}.instructions.md`},commandPath(e,t){return ug(e)},agentPath(e,t){return `${ua}/${e}.agent.md`}}},YZ={rootInstructionPath:ai,renderPrimaryRootInstruction:tN,outputFamilies:[{id:"compat-agents",kind:"additional",explicitPaths:[Fl]}],skillDir:li,managedOutputs:{dirs:[Nl,li,vl,rI,tI],files:[ai,Fl]},rewriteGeneratedPath(e){return e===ma?ai:e.startsWith(`${pa}/`)?ai:e.startsWith(`${ii}/`)?e.replace(`${ii}/`,`${vl}/`):e.startsWith(`${ua}/`)?e.replace(`${ua}/`,`${Nl}/`):e.startsWith(`${Ko}/`)?e.replace(`${Ko}/`,`${li}/`):e.startsWith(`${Bo}/`)||e===Ml?null:e},mirrorGlobalPath(e,t){if(e.startsWith(`${li}/`)&&!t.includes("codex-cli")){let r=e.slice(li.length+1);return [`.agents/skills/${r}`,`${tI}/${r}`]}return null},paths:{rulePath(e,t){return ai},commandPath(e,t){return `${vl}/${e}.prompt.md`},agentPath(e,t){return `${Nl}/${e}.agent.md`}}},gg={id:"copilot",metadata:{displayName:"GitHub Copilot",category:"ide",officialUrl:"https://github.com/features/copilot",shortDescription:"GitHub's AI pair programmer"},generators:VZ,capabilities:GN,emptyImportMessage:"No Copilot config found (.github/copilot-instructions.md, .github/copilot or .github/instructions, .github/prompts, .github/skills, .github/agents, or .github/hooks).",lintRules:SN,lint:{commands:IN,hooks:kN},postProcessHookOutputs:s(async(e,t,r)=>ON(e,t,[...r]),"postProcessHookOutputs"),project:JZ,globalSupport:{capabilities:$N,detectionPaths:[ai,Fl,Nl,li,vl,rI],layout:YZ,scopeExtras:bN},importer:FN,buildImportPaths:FS,detectionPaths:[".github/copilot-instructions.md",".github/copilot",".github/instructions",".github/prompts",".github/skills",".github/agents",".github/hooks"],nativeInstall:{inferPick:yN}};});function yg(e){return {$schema:"https://charm.land/crush.json",...e}}var UN=d(()=>{s(yg,"buildCrushConfigJson");});function BN(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(Fr)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Mr,content:o}]:[]}function KN(e){return ae(e,pt)}function WN(e){return e.commands.map(t=>({path:`${pt}/${Z(t.name)}/SKILL.md`,content:Ye(t)}))}function HN(e){return e.agents.map(t=>({path:`${pt}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function zN(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=yg({mcp:e.mcp.mcpServers});return [{path:lr,content:JSON.stringify(t,null,2)}]}function VN(e){if(!e.hooks)return [];let t=XZ(e);if(Object.keys(t).length===0)return [];let r=yg({hooks:t});return [{path:lr,content:JSON.stringify(r,null,2)}]}function JN(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=yg({permissions:o});return [{path:lr,content:JSON.stringify(i,null,2)}]}function YN(e){if(!e.ignore||e.ignore.length===0)return [];let t=e.ignore.join(`
|
|
121
|
+
`);return [{path:ws,content:t}]}function XZ(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 XN=d(()=>{ie();Be();Se();Ge();Mc();UN();s(BN,"generateRules");s(KN,"generateSkills");s(WN,"generateCommands");s(HN,"generateAgents");s(zN,"generateMcp");s(VN,"generateHooks");s(JN,"generatePermissions");s(YN,"generateIgnore");s(XZ,"buildCrushHooksFromCanonical");});async function qN(e,t={}){let r=t.scope??"project",n=[],o=await H(Fr,e,r);return n.push(...await X(_g,e,r,{normalize:o})),await oe(e,r==="global"?cr:pt,Fr,n,o),await QZ(e,r,n),n}async function QZ(e,t,r){let o=join(e,t==="global"?Fc:lr),i=await I(o);if(i===null)return;let a;try{a=JSON.parse(i);}catch{return}if(!a||typeof a!="object"||Array.isArray(a))return;let l=a,c=qZ(l.mcp);if(Object.keys(c).length>0){let p=Gf,u=join(e,p);await O(dirname(u)),await L(u,JSON.stringify({mcpServers:c},null,2)),r.push({fromTool:Fr,fromPath:o,toPath:p,feature:"mcp"});}let m=ZZ(l.hooks);if(m!==null&&Object.keys(m).length>0){let p=".agentsmesh/hooks.yaml",u=join(e,p);await O(dirname(u));let f=e8(m);await L(u,f),r.push({fromTool:Fr,fromPath:o,toPath:p,feature:"hooks"});}}function qZ(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:nt(o.args),env:Ht(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:Ht(o.headers),env:Ht(o.env),...i!==void 0?{description:i}:{}});}return t}function ZZ(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 e8(e){let t=[];for(let[r,n]of Object.entries(e)){t.push(`${r}:`);for(let o of n)t.push(` - matcher: ${JSON.stringify(o.matcher)}`),t.push(` command: ${JSON.stringify(o.command)}`),o.timeout!==void 0&&t.push(` timeout: ${o.timeout}`);}return t.join(`
|
|
122
|
+
`)}var ZN=d(()=>{he();ie();Ae();b();Pt();cI();Mc();s(qN,"importFromCrush");s(QZ,"importCrushConfigJson");s(qZ,"parseCrushMcpServers");s(ZZ,"parseCrushHooks");s(e8,"serializeHooksYaml");});function ev(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Fr}))}var tv=d(()=>{Oe();Mc();s(ev,"lintRules");});function rv(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 nv=d(()=>{Ie();s(rv,"lintCommands");});function mI(e){try{let t=JSON.parse(e);return t!==null&&typeof t=="object"&&!Array.isArray(t)?t:{}}catch{return {}}}function Sg(e,t){let r=mI(e),n=r8.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 sv(e,t){let r=mI(e),n=n8.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 iv(e,t){let r=mI(e),n=t8.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 ov,t8,r8,n8,Mu=d(()=>{ov=[".claude/settings.json",".gemini/settings.json"],t8=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(),r8=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(),n8=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(mI,"parseJsonObject");s(Sg,"mergeSettingsJson");s(sv,"mergeGeminiSettingsJson");s(iv,"mergeCrushConfigJson");});var o8,s8,i8,a8,l8,_g,cI=d(()=>{Ge();Se();XN();dt();ZN();tv();nv();we();Mu();Mc();o8={name:Fr,primaryRootInstructionPath:Mr,generateRules:BN,generateCommands:WN,generateAgents:HN,generateSkills:KN,generateMcp:zN,generateHooks:VN,generatePermissions:JN,generateIgnore:YN,importFrom:qN},s8={rootInstructionPath:Mr,skillDir:pt,managedOutputs:{dirs:[pt],files:[Mr,lr,ws]},paths:{rulePath(e){return Mr},commandPath(e){return `${pt}/${Z(e)}/SKILL.md`},agentPath(e){return `${pt}/${V(e)}/SKILL.md`}}},i8={rootInstructionPath:nl,skillDir:cr,managedOutputs:{dirs:[cr],files:[nl,Fc]},rewriteGeneratedPath(e){return e===Mr?nl:e===lr?Fc:e===ws?null:e.startsWith(`${pt}/`)?e.replace(`${pt}/`,`${cr}/`):e},mirrorGlobalPath(e,t){return ge(e,cr,t)},paths:{rulePath(e){return nl},commandPath(e){return `${cr}/${Z(e)}/SKILL.md`},agentPath(e){return `${cr}/${V(e)}/SKILL.md`}}},a8={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"partial"},l8={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},_g={id:Fr,metadata:{displayName:"Crush",category:"cli",officialUrl:"https://github.com/charmbracelet/crush",shortDescription:"Charm's TUI coding agent"},generators:o8,capabilities:a8,emptyImportMessage:"No Crush config found (CRUSH.md, .crush/skills/, crush.json, or .crushignore).",lintRules:ev,lint:{commands:rv},supportsConversion:{commands:true,agents:true},project:s8,globalSupport:{capabilities:l8,detectionPaths:[nl,Fc,cr],layout:i8},mergeGeneratedOutputContent(e,t,r,n){let o=t?.content??e;return o!==null&&n===lr?iv(o,r):null},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Mr],global:[nl]},canonicalDir:Ff,canonicalRootFilename:"_root.md",markAsRoot:true},ignore:{feature:"ignore",mode:"flatFile",source:{project:[ws]},canonicalDir:".agentsmesh",canonicalFilename:Mf}},buildImportPaths:MS,detectionPaths:[Mr,lr,pt,ws],sharedArtifacts:{".crush/skills/":"owner"}};});function pI(e){let t=[],r=e.rules.find(i=>i.root);if(r){let i=r.body.trim()?r.body:"";t.push({path:$i,content:i});let a={alwaysApply:true};r.description&&(a.description=r.description);let l=x(a,i);t.push({path:bs,content:l});}let n=e.rules.filter(i=>!i.root&&(i.targets.length===0||i.targets.includes("cursor")));for(let i of n){let a=basename(i.source,".md"),c={alwaysApply:i.trigger==="always_on"};i.description&&(c.description=i.description),i.globs.length>0&&(c.globs=i.globs);let m=x(c,i.body.trim()||"");t.push({path:`${Gr}/${a}.mdc`,content:m});}let o=av(e);return o.trim()&&t.push({path:Cn,content:o}),t}function av(e){let t=e.rules.find(o=>o.root),r=e.rules.filter(o=>!o.root&&(o.targets.length===0||o.targets.includes("cursor"))),n=[];return t?.body.trim()?n.push(le(t.body,r)):r.length>0&&n.push(le("",r)),n.filter(Boolean).join(`
|
|
123
123
|
|
|
124
|
-
`)}var
|
|
125
|
-
`);return [{path:Ln,content:t}]}var
|
|
124
|
+
`)}var lv=d(()=>{U();Be();Qe();s(pI,"generateRules");s(av,"renderCursorGlobalUserRules");});function uI(e){return e.commands.map(t=>({path:`${$r}/${t.name}.md`,content:t.body.trim()||""}))}var cv=d(()=>{Qe();s(uI,"generateCommands");});function dI(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:mr,content:t}]}var mv=d(()=>{Qe();s(dI,"generateMcp");});function fI(e){let t=[];for(let r of e.skills){let n={name:r.name,description:r.description||void 0};n.description===void 0&&delete n.description;let o=x(n,r.body.trim()||"");t.push({path:`${Lt}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${Lt}/${r.name}/${a}`,content:i.content});}}return t}var pv=d(()=>{U();Qe();s(fI,"generateSkills");});function gI(e){return e.agents.map(t=>{let r={name:t.name,description:t.description,tools:t.tools.length>0?t.tools:void 0,disallowedTools:t.disallowedTools.length>0?t.disallowedTools:void 0,model:t.model||void 0,permissionMode:t.permissionMode||void 0,maxTurns:t.maxTurns>0?t.maxTurns:void 0,mcpServers:t.mcpServers.length>0?t.mcpServers:void 0,hooks:Object.keys(t.hooks).length>0?t.hooks:void 0,skills:t.skills.length>0?t.skills:void 0,memory:t.memory||void 0};Object.keys(r).forEach(o=>{r[o]===void 0&&delete r[o];});let n=x(r,t.body.trim()||"");return {path:`${jr}/${t.name}.md`,content:n}})}var uv=d(()=>{U();Qe();s(gI,"generateAgents");});function hI(e){return []}var dv=d(()=>{s(hI,"generatePermissions");});function fv(e){return Object.keys(e).filter(t=>Array.isArray(e[t])&&e[t].length>0&&!(t in yI))}function gv(e){let t={};for(let[r,n]of Object.entries(e)){let o=yI[r];if(!o||!Array.isArray(n))continue;let i=[];for(let a of n){if(!is(a))continue;let l=Sc(a),c=a.type==="prompt"?{type:"prompt",prompt:l}:{type:"command",command:l};a.matcher&&(c.matcher=a.matcher),a.timeout!==void 0&&(c.timeout=a.timeout),i.push(c);}i.length>0&&(t[o]=i);}return t}function _I(e){let t={};for(let[r,n]of Object.entries(e)){let o=m8.get(r);if(!o||!Array.isArray(n))continue;let i=[];for(let a of n){if(!a||typeof a!="object")continue;let l=a,c=l.type==="prompt"?"prompt":"command";if(!is({...l,type:c}))continue;let m=Sc({...l,type:c}),p={matcher:typeof l.matcher=="string"?l.matcher:"",type:c,command:m};typeof l.timeout=="number"&&(p.timeout=l.timeout),i.push(p);}i.length>0&&(t[o]=[...t[o]??[],...i]);}return t}var yI,m8,Rg=d(()=>{dn();yI={PreToolUse:"preToolUse",PostToolUse:"postToolUse",UserPromptSubmit:"beforeSubmitPrompt",SubagentStart:"subagentStart",SubagentStop:"subagentStop",Stop:"stop",SessionStart:"sessionStart",SessionEnd:"sessionEnd",PreCompact:"preCompact"},m8=new Map(Object.entries(yI).map(([e,t])=>[t,e]));s(fv,"unmappedCursorHookEvents");s(gv,"toCursorHooks");s(_I,"cursorHooksToCanonical");});function SI(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=gv(e.hooks);if(Object.keys(t).length===0)return [];let r=JSON.stringify({version:1,hooks:t},null,2);return [{path:uo,content:r}]}var hv=d(()=>{Qe();Rg();s(SI,"generateHooks");});function RI(e){if(!e.ignore||e.ignore.length===0)return [];let t=e.ignore.join(`
|
|
125
|
+
`);return [{path:Ln,content:t}]}var yv=d(()=>{Qe();s(RI,"generateIgnore");});var _v=d(()=>{lv();cv();mv();pv();uv();dv();hv();yv();});var Sv=d(()=>{_v();});async function kg(e,t,r,n){let o=e.replace(/\.mdc$/i,".md"),i=join(t,o),l=T(r(i)).frontmatter.alwaysApply===true,c=l?join(t,"_root.md"):i,{frontmatter:m,body:p}=T(r(c));l&&n();let u={...m,root:l};if(delete u.alwaysApply,!l){let f=p8(m);f!==null&&(u.trigger=f);}return {destPath:c,toPath:`${fo}/${l?"_root.md":o}`,feature:"rules",content:await z(c,u,p)}}function p8(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 Rv(e,t,r){let n=join(t,e),{frontmatter:o,body:i}=T(r(n)),a=Ar(o.allowedTools),l=a.length>0?a:Ar(o["allowed-tools"]);return {destPath:n,toPath:`${ji}/${e}`,feature:"commands",content:await Ee(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 Iv(e,t,r){let n=join(t,e),{frontmatter:o,body:i}=T(r(n));return {destPath:n,toPath:`${Ui}/${e}`,feature:"agents",content:await xe(n,o,i)}}var II=d(()=>{U();de();Pt();Qe();s(kg,"mapCursorRuleFile");s(p8,"deriveCursorTrigger");s(Rv,"mapCursorCommandFile");s(Iv,"mapCursorAgentFile");});async function fm(e){let t=join(e.projectRoot,fo);await O(t);let r=join(t,"_root.md"),n=await $o({content:e.content,projectRoot:e.projectRoot,rulesDir:fo,sourcePath:e.sourcePath,fromTool:"cursor",normalize:e.normalize});e.results.push(...n.results);let o=e.normalize(n.rootContent,e.sourcePath,r);if(!o.trim()&&n.results.length>0)return true;let{frontmatter:i,body:a}=T(o),l=i.root===true?i:{...i,root:true},c=await z(r,l,a);return await L(r,c),e.results.push({fromTool:"cursor",fromPath:e.sourcePath,toPath:`${fo}/_root.md`,feature:"rules"}),true}var kI=d(()=>{b();U();lm();de();Qe();s(fm,"importCursorRootFile");});async function Lv(e,t,r){let n=join(e,fo),o=false,i=join(e,Gr);if(t.push(...await Re({srcDir:i,destDir:n,extensions:[".mdc"],fromTool:"cursor",normalize:r,mapEntry:s(async({srcPath:a,relativePath:l,normalizeTo:c})=>{if(o){let m=await I(a);if(m!==null){let{frontmatter:p}=T(m);if(p.alwaysApply===true)return null}}return kg(l,n,c,()=>{o=true;})},"mapEntry")})),!o){let a=join(e,$i),l=await I(a);l!==null&&(o=await fm({projectRoot:e,results:t,sourcePath:a,content:l,normalize:r}));}if(!o){let a=join(e,Tb),l=await I(a);l!==null&&await fm({projectRoot:e,results:t,sourcePath:a,content:l,normalize:r});}}var Cv=d(()=>{b();U();rr();II();kI();Qe();s(Lv,"importCursorRules");});async function Eg(e,t){let r=false,n=join(e,uo),o=await I(n);if(o)try{let p=JSON.parse(o);if(p.hooks&&typeof p.hooks=="object"){let u=_I(p.hooks);if(Object.keys(u).length>0){let f=stringify(u),g=join(e,nu);await O(dirname(g)),await L(g,f),t.push({fromTool:"cursor",fromPath:n,toPath:nu,feature:"hooks"}),r=!0;}}}catch{}let i=join(e,$f),a=await I(i);if(!a)return;let l;try{l=JSON.parse(a);}catch{return}let c=l.permissions;if(c&&typeof c=="object"&&!Array.isArray(c)){let p=c,u=Array.isArray(p.allow)?p.allow.filter(g=>typeof g=="string"):[],f=Array.isArray(p.deny)?p.deny.filter(g=>typeof g=="string"):[];if(u.length>0||f.length>0){let g=stringify({allow:u,deny:f}),h=join(e,$S);await O(dirname(h)),await L(h,g),t.push({fromTool:"cursor",fromPath:i,toPath:$S,feature:"permissions"});}}let m=r?void 0:l.hooks;if(m&&typeof m=="object"&&!Array.isArray(m)){let p=_I(m);if(Object.keys(p).length>0){let u=stringify(p),f=join(e,nu);await O(dirname(f)),await L(f,u),t.push({fromTool:"cursor",fromPath:i,toPath:nu,feature:"hooks"});}}}async function Og(e,t){let r=[{path:join(e,Ln),label:Ln},{path:join(e,GS),label:GS}],n=[],o=[];for(let a of r){let l=await I(a.path);if(l!==null){o.push(a.label);for(let c of l.split(/\r?\n/)){let m=c.trim();m&&!n.includes(m)&&n.push(m);}}}if(n.length===0)return;let i=join(e,jS);await O(dirname(i)),await L(i,n.join(`
|
|
126
126
|
`)+`
|
|
127
|
-
`),t.push({fromTool:"cursor",fromPath:join(e,o[0]),toPath:MS,feature:"ignore"});}var II=d(()=>{Sg();b();Qe();s(Cg,"importSettings");s(Eg,"importIgnore");});async function Og(e,t,r,n=Lt){let o=join(e,n),i=await xu(o),a={projectRoot:e,destCanonicalSkillsDir:Ab,targetName:"cursor",normalize:r,results:t};for(let[p,u]of i)await Tu(p,u,a);let l=await B(o).catch(()=>[]),c=l.filter(p=>p.endsWith(".md")),m=new Set(Array.from(i.values()).flatMap(p=>l.filter(u=>u.startsWith(p))));for(let p of c){if(m.has(p))continue;let u=await I(p);if(!u)continue;let f=basename(p,".md");await sP(f,p,u,a);}}var kI=d(()=>{b();pm();Qe();s(Og,"importSkills");});async function Lv(e){if(await j(join(e,Gr)))return true;let t=[join(e,Cn),join(e,Gc),join(e,mr),join(e,uo),join(e,Ln),join(e,Lt),join(e,jr),join(e,$r)];for(let i of t){let a=await I(i);if(a!==null&&a.trim()!=="")return true}return !!((await B(join(e,Lt))).some(i=>i.endsWith(".md"))||(await B(join(e,jr))).some(i=>i.endsWith(".md"))||(await B(join(e,$r))).some(i=>i.endsWith(".md")))}async function Cv(e,t,r){let n=join(e,fo),o=false,i=join(e,Gr),a=await Re({srcDir:i,destDir:n,extensions:[".mdc"],fromTool:gm,normalize:r,mapEntry:s(async({srcPath:l,relativePath:c,normalizeTo:m})=>{if(o){let p=await I(l);if(p!==null){let{frontmatter:u}=T(p);if(u.alwaysApply===true)return null}}return Ig(c,n,m,()=>{o=true;})},"mapEntry")});return t.push(...a),o}async function Ev(e,t,r){let n=join(e,Gc),o=await I(n);return o===null||o.trim()===""?false:fm({projectRoot:e,results:t,sourcePath:n,content:o.trim(),normalize:r})}async function Ov(e,t,r){let n=join(e,Cn),o=await I(n);return o===null||o.trim()===""?false:fm({projectRoot:e,results:t,sourcePath:n,content:o.trim(),normalize:r})}async function wv(e,t){let r=join(e,mr),n=await I(r);if(n===null||n.trim()==="")return;let o;try{o=JSON.parse(n);}catch{return}if(!o||typeof o!="object"||!("mcpServers"in o))return;let i=join(e,$c);await O(dirname(i)),await L(i,n),t.push({fromTool:gm,fromPath:r,toPath:$c,feature:"mcp"});}async function bv(e,t,r){let n=join(e,jr),o=join(e,Ui);t.push(...await Re({srcDir:n,destDir:o,extensions:[".md"],fromTool:gm,normalize:r,mapEntry:s(({relativePath:i,normalizeTo:a})=>Sv(i,o,a),"mapEntry")}));}async function Av(e,t,r){let n=join(e,$r),o=join(e,ji);t.push(...await Re({srcDir:n,destDir:o,extensions:[".md"],fromTool:gm,normalize:r,mapEntry:s(({relativePath:i,normalizeTo:a})=>_v(i,o,a),"mapEntry")}));}var gm,Tv=d(()=>{b();U();rr();Qe();SI();_I();gm="cursor";s(Lv,"hasGlobalCursorArtifacts");s(Cv,"importGlobalCursorRulesFromDir");s(Ev,"importGlobalUserRules");s(Ov,"importGlobalDotCursorAgents");s(wv,"importGlobalMcp");s(bv,"importGlobalAgents");s(Av,"importGlobalCommands");});async function xv(e){if(!await Lv(e))return [];let t=[],r=await H(gm,e,"global"),n=await Cv(e,t,r);return n||(n=await Ev(e,t,r)),n||await Ov(e,t,r),await wv(e,t),await Og(e,t,r,Lt),await bv(e,t,r),await Av(e,t,r),await Cg(e,t),await Eg(e,t),t}var Pv=d(()=>{he();Qe();kI();II();Tv();s(xv,"importFromCursorGlobalExports");});async function u8(e,t){let r=join(e,mr),n=await I(r);if(!n)return;let o;try{o=JSON.parse(n);}catch{return}if(!o||typeof o!="object"||!("mcpServers"in o))return;let i=o.mcpServers;await Xe(e,$c,i),t.push({fromTool:"cursor",fromPath:r,toPath:$c,feature:"mcp"});}async function Dv(e,t={}){if(t.scope==="global")return xv(e);let r=[],n=await H("cursor",e);return await Iv(e,r,n),r.push(...await X(wg,e,"project",{normalize:n})),await Og(e,r,n),await u8(e,r),await Cg(e,r),await Eg(e,r),r}var Nv=d(()=>{he();b();Ae();Sn();kv();II();kI();Pv();Qe();LI();s(u8,"importMcp");s(Dv,"importFromCursor");});var Fv,Mv,Gv=d(()=>{U();ue();Pt();Qe();Fv=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n)),a=Ar(o.allowedTools),l=a.length>0?a:Ar(o["allowed-tools"]);return {destPath:n,toPath:`${ji}/${e}`,content:await Ee(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"),Mv=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Ui}/${e}`,content:await xe(n,o,i)}},"cursorAgentMapper");});function $v(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(i=>({...i,target:wb}))}var jv=d(()=>{Oe();Qe();s($v,"lintRules");});function Uv(e){if(!e.hooks)return [];let t=uv(e.hooks);return t.length===0?[]:[F(".agentsmesh/hooks.yaml","cursor",`Cursor has no equivalent for hook event(s) ${t.join(", ")}; they are not projected to .cursor/hooks.json.`)]}function Bv(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 Kv(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 Wv(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 Hv=d(()=>{Ie();Sg();s(Uv,"lintHooks");s(Bv,"lintCommands");s(Kv,"lintMcp");s(Wv,"lintPermissions");});var d8,f8,g8,h8,wg,LI=d(()=>{yv();Qe();dt();Nv();Gv();jv();we();Hv();d8={name:"cursor",primaryRootInstructionPath:bs,generateRules:lI,generateCommands:cI,generateAgents:uI,generateSkills:pI,generateMcp:mI,generatePermissions:dI,generateHooks:hI,generateIgnore:yI,importFrom:Dv},f8={rootInstructionPath:bs,outputFamilies:[{id:"root-mirrors",kind:"additional",explicitPaths:[$i,Cn]}],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`}}},g8={rootInstructionPath:bs,outputFamilies:[{id:"root-mirrors",kind:"additional",explicitPaths:[$i,Cn]}],skillDir:Lt,managedOutputs:{dirs:[Gr,$r,jr,Lt],files:[bs,Cn,mr,uo,Ln,Gc]},rewriteGeneratedPath(e){return e===$i?null:e===Cn||e===bs||e.startsWith(`${Gr}/`)||e.startsWith(`${$r}/`)||e.startsWith(`${jr}/`)||e.startsWith(`${Lt}/`)||e===mr||e===uo||e===Ln?e:e===Gf?null:e},mirrorGlobalPath(e,t){return ge(e,Lt,t)},paths:{rulePath(e,t){return `${Gr}/${e}.mdc`},commandPath(e,t){return `${$r}/${e}.md`},agentPath(e,t){return `${jr}/${e}.md`}}},h8={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},wg={id:"cursor",metadata:{displayName:"Cursor",category:"ide",officialUrl:"https://cursor.com",shortDescription:"AI-first code editor"},generators:d8,capabilities:{rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"partial"},emptyImportMessage:"No Cursor config found (AGENTS.md or .cursor/rules/*.mdc; with --global: ~/.cursor/{rules/*.mdc,AGENTS.md,mcp.json,hooks.json,cursorignore,skills/,agents/,commands/} and legacy ~/.agentsmesh-exports/cursor/user-rules.md).",lintRules:$v,lint:{commands:Bv,mcp:Kv,permissions:Wv,hooks:Uv},project:f8,globalSupport:{capabilities:h8,detectionPaths:[bs,Cn,mr,uo,Ln,Lt,jr,$r,Gc],layout:g8},importer:{commands:{feature:"commands",mode:"directory",source:{project:[$r]},canonicalDir:ji,extensions:[".md"],map:Fv},agents:{feature:"agents",mode:"directory",source:{project:[jr]},canonicalDir:Ui,extensions:[".md"],map:Mv}},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 zv(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(go)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Ur,content:o}]:[]}function Vv(e){return ae(e,Ct)}function Jv(e){return e.commands.map(t=>({path:`${Ct}/${q(t.name)}/SKILL.md`,content:Ye(t)}))}function Yv(e){return e.agents.map(t=>({path:`${Ct}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function Xv(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:As,content:t}]}function Qv(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=Go(e);return Object.keys(t).length===0?[]:[{path:$f,content:JSON.stringify(t,null,2)}]}var qv=d(()=>{ie();Be();Se();Ge();am();jc();s(zv,"generateRules");s(Vv,"generateSkills");s(Jv,"generateCommands");s(Yv,"generateAgents");s(Xv,"generateMcp");s(Qv,"generateHooks");});async function Zv(e,t={}){let r=t.scope??"project",n=[],o=await H(go,e,r);return n.push(...await X(bg,e,r,{normalize:o})),await oe(e,r==="global"?En:Ct,go,n,o),n}var eF=d(()=>{he();ie();Ae();jc();CI();s(Zv,"importFromDeepagentsCli");});function tF(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:go}))}var rF=d(()=>{Oe();jc();s(tF,"lintRules");});function nF(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 oF(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 sF=d(()=>{Ie();s(nF,"lintPermissions");s(oF,"lintIgnore");});var y8,_8,S8,R8,I8,bg,CI=d(()=>{Ge();Se();qv();eF();rF();sF();we();jc();y8={name:go,primaryRootInstructionPath:Ur,generateRules:zv,generateCommands:Jv,generateAgents:Yv,generateSkills:Vv,generateMcp:Xv,generateHooks:Qv,importFrom:Zv},_8={rootInstructionPath:Ur,skillDir:Ct,managedOutputs:{dirs:[Ct],files:[Ur,As,$f]},paths:{rulePath(e){return Ur},commandPath(e){return `${Ct}/${q(e)}/SKILL.md`},agentPath(e){return `${Ct}/${V(e)}/SKILL.md`}}},S8={rootInstructionPath:Ts,skillDir:En,managedOutputs:{dirs:[En],files:[Ts,ol,xb]},rewriteGeneratedPath(e){return e===Ur?Ts:e===As?ol:e.startsWith(`${Ct}/`)?e.replace(`${Ct}/`,`${En}/`):e},paths:{rulePath(e){return Ts},commandPath(e){return `${En}/${q(e)}/SKILL.md`},agentPath(e){return `${En}/${V(e)}/SKILL.md`}}},R8={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},I8={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},bg={id:go,metadata:{displayName:"Deep Agents CLI",category:"cli",officialUrl:"https://github.com/langchain-ai/deepagents",shortDescription:"LangChain Deep Agents framework CLI"},generators:y8,capabilities:R8,emptyImportMessage:"No Deep Agents CLI config found (.deepagents/AGENTS.md, .deepagents/skills, or .mcp.json).",lintRules:tF,lint:{permissions:nF,ignore:oF},supportsConversion:{commands:true,agents:true},project:_8,globalSupport:{capabilities:I8,detectionPaths:[Ts,ol],layout:S8},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Ur],global:[Ts]},canonicalDir:Pb,canonicalRootFilename:"_root.md",markAsRoot:true},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[As],global:[ol]},canonicalDir:".agentsmesh",canonicalFilename:"mcp.json"}},buildImportPaths:$S,detectionPaths:[Ur,As]};});function iF(e){let t={name:e.name};return e.description&&(t.description=e.description.slice(0,500)),e.model?t.model=e.model:t.model="inherit",e.tools.length>0&&(t.tools=e.tools),x(t,e.body.trim()||"")}var aF=d(()=>{U();s(iF,"serializeDroid");});function lF(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(pr)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Br,content:o}]:[]}function cF(e){return ae(e,Kr)}function mF(e){return e.commands.map(t=>{let r={description:t.description||void 0,"allowed-tools":t.allowedTools.length>0?t.allowedTools:void 0};return r.description===void 0&&delete r.description,r["allowed-tools"]===void 0&&delete r["allowed-tools"],{path:`${Bi}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function pF(e){return e.agents.map(t=>({path:`${On}/${t.name}.md`,content:iF(t)}))}function uF(e){return um(e,Bc)}function dF(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:ho,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}var fF=d(()=>{ie();Be();U();Pl();aF();sl();s(lF,"generateRules");s(cF,"generateSkills");s(mF,"generateCommands");s(pF,"generateAgents");s(uF,"generateHooks");s(dF,"generateMcp");});async function hF(e,t,r){let n=await I(join(e,t));if(n===null)return;let o;try{o=JSON.parse(n);}catch{return}if(o===null||typeof o!="object"||Array.isArray(o))return;let a=o.mcpServers;if(a==null||typeof a!="object"||Array.isArray(a)||Object.keys(a).length===0)return;let l={};for(let[c,m]of Object.entries(a))!m||typeof m!="object"||Array.isArray(m)||(l[c]=m);Object.keys(l).length!==0&&(await Xe(e,gF,l),r.push({fromTool:pr,fromPath:t,toPath:gF,feature:"mcp"}));}var gF,yF=d(()=>{b();Sn();sl();gF=".agentsmesh/mcp.json";s(hF,"importFactoryDroidMcp");});async function _F(e,t={}){let r=t.scope??"project",n=[],o=await H(pr,e,r);return n.push(...await X(Ag,e,r,{normalize:o})),await oe(e,r==="global"?Ps:Kr,pr,n,o),await hF(e,r==="global"?Wi:ho,n),await dm({projectRoot:e,hooksFile:Bc,canonicalHooksPath:Gb,targetName:pr,results:n}),n}var SF=d(()=>{he();ie();Ae();Pl();yF();sl();EI();s(_F,"importFromFactoryDroid");});function RF(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:pr}))}var IF=d(()=>{Oe();sl();s(RF,"lintRules");});function kF(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 LF(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 CF=d(()=>{Ie();s(kF,"lintPermissions");s(LF,"lintIgnore");});var L8,C8,E8,EF,Ag,EI=d(()=>{fF();sl();SF();IF();CF();we();L8={name:pr,primaryRootInstructionPath:Br,generateRules:lF,generateCommands:mF,generateAgents:pF,generateSkills:cF,generateMcp:dF,generateHooks:uF,importFrom:_F},C8={rootInstructionPath:Br,skillDir:Kr,managedOutputs:{dirs:[Kr,Bi,On],files:[Br,Bc,ho]},paths:{rulePath(e){return Br},commandPath(e){return `${Bi}/${e}.md`},agentPath(e){return `${On}/${e}.md`}}},E8={rootInstructionPath:xs,skillDir:Ps,managedOutputs:{dirs:[Ps,Uc,Ki],files:[xs,Nb,Wi]},rewriteGeneratedPath(e){return e===Br?xs:e===ho?Wi:e.startsWith(`${Kr}/`)?e.replace(`${Kr}/`,`${Ps}/`):e.startsWith(`${On}/`)?e.replace(`${On}/`,`${Ki}/`):e},paths:{rulePath(e){return xs},commandPath(e){return `${Uc}/${e}.md`},agentPath(e){return `${Ki}/${e}.md`}}},EF={rules:"native",additionalRules:"embedded",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},Ag={id:pr,metadata:{displayName:"Factory Droid",category:"agent-platform",officialUrl:"https://www.factory.ai",shortDescription:"Factory.ai's coding droid"},generators:L8,capabilities:EF,emptyImportMessage:"No Factory Droid config found (AGENTS.md, .factory/skills, or .factory/mcp.json).",lintRules:RF,lint:{permissions:kF,ignore:LF},project:C8,globalSupport:{capabilities:EF,detectionPaths:[xs,Wi,Ki],layout:E8},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Br],global:[xs]},canonicalDir:vb,canonicalRootFilename:"_root.md",markAsRoot:true},commands:{feature:"commands",mode:"directory",source:{project:[Bi],global:[Uc]},canonicalDir:Mb,extensions:[".md"],preset:"command"},agents:{feature:"agents",mode:"directory",source:{project:[On],global:[Ki]},canonicalDir:Fb,extensions:[".md"],preset:"agent"}},buildImportPaths:jS,detectionPaths:[Br,ho,On]};});var da,nn,Wo,OF,wF,Ho,Tg,Gl,xg,Gu,fa,bF,AF,ga,Pg,$u,ju,OI,wI,hm,bI,ym,_m,Dg,Sm,$l,Uu,TF,it=d(()=>{da="gemini-cli",nn="GEMINI.md",Wo="AGENTS.md",OF=".gemini/rules",wF=".gemini/GEMINI.md",Ho=".gemini/commands",Tg=".gemini/policies",Gl=".gemini/settings.json",xg=".geminiignore",Gu=".gemini/skills",fa=".gemini/agents",bF=".gemini/system.md",AF=`${Tg}/permissions.toml`,ga=".agentsmesh/rules",Pg=".agentsmesh/commands",$u=".agentsmesh/agents",ju=".agentsmesh/skills",OI=".agentsmesh/mcp.json",wI=".agentsmesh/hooks.yaml",hm=".agentsmesh/ignore",bI=".agentsmesh/permissions.yaml",ym=".gemini/GEMINI.md",_m=".gemini/AGENTS.md",Dg=".gemini/settings.json",Sm=".gemini/commands",$l=".gemini/skills",Uu=".gemini/agents",TF=".gemini/policies/permissions.toml";});function AI(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:nn,content:n}];return t&&o.push({path:Wo,content:t.body.trim()}),o}var xF=d(()=>{Be();it();s(AI,"generateRules");});function PF(e,t){let r=e.split(":").filter(Boolean),n=r.length>0?r.pop():e;return [t,...r,`${n}.toml`].join("/")}var DF=d(()=>{s(PF,"canonicalCommandNameToGeminiTomlPath");});function O8(e){let t=e.replace(/\r\n/g,`
|
|
127
|
+
`),t.push({fromTool:"cursor",fromPath:join(e,o[0]),toPath:jS,feature:"ignore"});}var CI=d(()=>{Rg();b();Qe();s(Eg,"importSettings");s(Og,"importIgnore");});async function wg(e,t,r,n=Lt){let o=join(e,n),i=await xu(o),a={projectRoot:e,destCanonicalSkillsDir:xb,targetName:"cursor",normalize:r,results:t};for(let[p,u]of i)await Tu(p,u,a);let l=await B(o).catch(()=>[]),c=l.filter(p=>p.endsWith(".md")),m=new Set(Array.from(i.values()).flatMap(p=>l.filter(u=>u.startsWith(p))));for(let p of c){if(m.has(p))continue;let u=await I(p);if(!u)continue;let f=basename(p,".md");await aP(f,p,u,a);}}var EI=d(()=>{b();pm();Qe();s(wg,"importSkills");});async function Ev(e){if(await j(join(e,Gr)))return true;let t=[join(e,Cn),join(e,Gc),join(e,mr),join(e,uo),join(e,Ln),join(e,Lt),join(e,jr),join(e,$r)];for(let i of t){let a=await I(i);if(a!==null&&a.trim()!=="")return true}return !!((await B(join(e,Lt))).some(i=>i.endsWith(".md"))||(await B(join(e,jr))).some(i=>i.endsWith(".md"))||(await B(join(e,$r))).some(i=>i.endsWith(".md")))}async function Ov(e,t,r){let n=join(e,fo),o=false,i=join(e,Gr),a=await Re({srcDir:i,destDir:n,extensions:[".mdc"],fromTool:gm,normalize:r,mapEntry:s(async({srcPath:l,relativePath:c,normalizeTo:m})=>{if(o){let p=await I(l);if(p!==null){let{frontmatter:u}=T(p);if(u.alwaysApply===true)return null}}return kg(c,n,m,()=>{o=true;})},"mapEntry")});return t.push(...a),o}async function wv(e,t,r){let n=join(e,Gc),o=await I(n);return o===null||o.trim()===""?false:fm({projectRoot:e,results:t,sourcePath:n,content:o.trim(),normalize:r})}async function bv(e,t,r){let n=join(e,Cn),o=await I(n);return o===null||o.trim()===""?false:fm({projectRoot:e,results:t,sourcePath:n,content:o.trim(),normalize:r})}async function Av(e,t){let r=join(e,mr),n=await I(r);if(n===null||n.trim()==="")return;let o;try{o=JSON.parse(n);}catch{return}if(!o||typeof o!="object"||!("mcpServers"in o))return;let i=join(e,$c);await O(dirname(i)),await L(i,n),t.push({fromTool:gm,fromPath:r,toPath:$c,feature:"mcp"});}async function Tv(e,t,r){let n=join(e,jr),o=join(e,Ui);t.push(...await Re({srcDir:n,destDir:o,extensions:[".md"],fromTool:gm,normalize:r,mapEntry:s(({relativePath:i,normalizeTo:a})=>Iv(i,o,a),"mapEntry")}));}async function xv(e,t,r){let n=join(e,$r),o=join(e,ji);t.push(...await Re({srcDir:n,destDir:o,extensions:[".md"],fromTool:gm,normalize:r,mapEntry:s(({relativePath:i,normalizeTo:a})=>Rv(i,o,a),"mapEntry")}));}var gm,Pv=d(()=>{b();U();rr();Qe();kI();II();gm="cursor";s(Ev,"hasGlobalCursorArtifacts");s(Ov,"importGlobalCursorRulesFromDir");s(wv,"importGlobalUserRules");s(bv,"importGlobalDotCursorAgents");s(Av,"importGlobalMcp");s(Tv,"importGlobalAgents");s(xv,"importGlobalCommands");});async function Dv(e){if(!await Ev(e))return [];let t=[],r=await H(gm,e,"global"),n=await Ov(e,t,r);return n||(n=await wv(e,t,r)),n||await bv(e,t,r),await Av(e,t),await wg(e,t,r,Lt),await Tv(e,t,r),await xv(e,t,r),await Eg(e,t),await Og(e,t),t}var Nv=d(()=>{he();Qe();EI();CI();Pv();s(Dv,"importFromCursorGlobalExports");});async function h8(e,t){let r=join(e,mr),n=await I(r);if(!n)return;let o;try{o=JSON.parse(n);}catch{return}if(!o||typeof o!="object"||!("mcpServers"in o))return;let i=o.mcpServers;await Xe(e,$c,i),t.push({fromTool:"cursor",fromPath:r,toPath:$c,feature:"mcp"});}async function vv(e,t={}){if(t.scope==="global")return Dv(e);let r=[],n=await H("cursor",e);return await Lv(e,r,n),r.push(...await X(bg,e,"project",{normalize:n})),await wg(e,r,n),await h8(e,r),await Eg(e,r),await Og(e,r),r}var Fv=d(()=>{he();b();Ae();Sn();Cv();CI();EI();Nv();Qe();OI();s(h8,"importMcp");s(vv,"importFromCursor");});var Gv,$v,jv=d(()=>{U();de();Pt();Qe();Gv=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n)),a=Ar(o.allowedTools),l=a.length>0?a:Ar(o["allowed-tools"]);return {destPath:n,toPath:`${ji}/${e}`,content:await Ee(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"),$v=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Ui}/${e}`,content:await xe(n,o,i)}},"cursorAgentMapper");});function Uv(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(i=>({...i,target:Ab}))}var Bv=d(()=>{Oe();Qe();s(Uv,"lintRules");});function Kv(e){if(!e.hooks)return [];let t=fv(e.hooks);return t.length===0?[]:[F(".agentsmesh/hooks.yaml","cursor",`Cursor has no equivalent for hook event(s) ${t.join(", ")}; they are not projected to .cursor/hooks.json.`)]}function Wv(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 Hv(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 zv(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 Vv=d(()=>{Ie();Rg();s(Kv,"lintHooks");s(Wv,"lintCommands");s(Hv,"lintMcp");s(zv,"lintPermissions");});var y8,_8,S8,R8,bg,OI=d(()=>{Sv();Qe();dt();Fv();jv();Bv();we();Vv();y8={name:"cursor",primaryRootInstructionPath:bs,generateRules:pI,generateCommands:uI,generateAgents:gI,generateSkills:fI,generateMcp:dI,generatePermissions:hI,generateHooks:SI,generateIgnore:RI,importFrom:vv},_8={rootInstructionPath:bs,outputFamilies:[{id:"root-mirrors",kind:"additional",explicitPaths:[$i,Cn]}],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`}}},S8={rootInstructionPath:bs,outputFamilies:[{id:"root-mirrors",kind:"additional",explicitPaths:[$i,Cn]}],skillDir:Lt,managedOutputs:{dirs:[Gr,$r,jr,Lt],files:[bs,Cn,mr,uo,Ln,Gc]},rewriteGeneratedPath(e){return e===$i?null:e===Cn||e===bs||e.startsWith(`${Gr}/`)||e.startsWith(`${$r}/`)||e.startsWith(`${jr}/`)||e.startsWith(`${Lt}/`)||e===mr||e===uo||e===Ln?e:e===$f?null:e},mirrorGlobalPath(e,t){return ge(e,Lt,t)},paths:{rulePath(e,t){return `${Gr}/${e}.mdc`},commandPath(e,t){return `${$r}/${e}.md`},agentPath(e,t){return `${jr}/${e}.md`}}},R8={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},bg={id:"cursor",metadata:{displayName:"Cursor",category:"ide",officialUrl:"https://cursor.com",shortDescription:"AI-first code editor"},generators:y8,capabilities:{rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"partial"},emptyImportMessage:"No Cursor config found (AGENTS.md or .cursor/rules/*.mdc; with --global: ~/.cursor/{rules/*.mdc,AGENTS.md,mcp.json,hooks.json,cursorignore,skills/,agents/,commands/} and legacy ~/.agentsmesh-exports/cursor/user-rules.md).",lintRules:Uv,lint:{commands:Wv,mcp:Hv,permissions:zv,hooks:Kv},project:_8,globalSupport:{capabilities:R8,detectionPaths:[bs,Cn,mr,uo,Ln,Lt,jr,$r,Gc],layout:S8},importer:{commands:{feature:"commands",mode:"directory",source:{project:[$r]},canonicalDir:ji,extensions:[".md"],map:Gv},agents:{feature:"agents",mode:"directory",source:{project:[jr]},canonicalDir:Ui,extensions:[".md"],map:$v}},buildImportPaths:US,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 Jv(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(go)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Ur,content:o}]:[]}function Yv(e){return ae(e,Ct)}function Xv(e){return e.commands.map(t=>({path:`${Ct}/${Z(t.name)}/SKILL.md`,content:Ye(t)}))}function Qv(e){return e.agents.map(t=>({path:`${Ct}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function qv(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:As,content:t}]}function Zv(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=Go(e);return Object.keys(t).length===0?[]:[{path:jf,content:JSON.stringify(t,null,2)}]}var eF=d(()=>{ie();Be();Se();Ge();am();jc();s(Jv,"generateRules");s(Yv,"generateSkills");s(Xv,"generateCommands");s(Qv,"generateAgents");s(qv,"generateMcp");s(Zv,"generateHooks");});async function tF(e,t={}){let r=t.scope??"project",n=[],o=await H(go,e,r);return n.push(...await X(Ag,e,r,{normalize:o})),await oe(e,r==="global"?En:Ct,go,n,o),n}var rF=d(()=>{he();ie();Ae();jc();wI();s(tF,"importFromDeepagentsCli");});function nF(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:go}))}var oF=d(()=>{Oe();jc();s(nF,"lintRules");});function sF(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 iF(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 aF=d(()=>{Ie();s(sF,"lintPermissions");s(iF,"lintIgnore");});var I8,k8,L8,C8,E8,Ag,wI=d(()=>{Ge();Se();eF();rF();oF();aF();we();jc();I8={name:go,primaryRootInstructionPath:Ur,generateRules:Jv,generateCommands:Xv,generateAgents:Qv,generateSkills:Yv,generateMcp:qv,generateHooks:Zv,importFrom:tF},k8={rootInstructionPath:Ur,skillDir:Ct,managedOutputs:{dirs:[Ct],files:[Ur,As,jf]},paths:{rulePath(e){return Ur},commandPath(e){return `${Ct}/${Z(e)}/SKILL.md`},agentPath(e){return `${Ct}/${V(e)}/SKILL.md`}}},L8={rootInstructionPath:Ts,skillDir:En,managedOutputs:{dirs:[En],files:[Ts,ol,Db]},rewriteGeneratedPath(e){return e===Ur?Ts:e===As?ol:e.startsWith(`${Ct}/`)?e.replace(`${Ct}/`,`${En}/`):e},paths:{rulePath(e){return Ts},commandPath(e){return `${En}/${Z(e)}/SKILL.md`},agentPath(e){return `${En}/${V(e)}/SKILL.md`}}},C8={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},E8={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},Ag={id:go,metadata:{displayName:"Deep Agents CLI",category:"cli",officialUrl:"https://github.com/langchain-ai/deepagents",shortDescription:"LangChain Deep Agents framework CLI"},generators:I8,capabilities:C8,emptyImportMessage:"No Deep Agents CLI config found (.deepagents/AGENTS.md, .deepagents/skills, or .mcp.json).",lintRules:nF,lint:{permissions:sF,ignore:iF},supportsConversion:{commands:true,agents:true},project:k8,globalSupport:{capabilities:E8,detectionPaths:[Ts,ol],layout:L8},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Ur],global:[Ts]},canonicalDir:Nb,canonicalRootFilename:"_root.md",markAsRoot:true},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[As],global:[ol]},canonicalDir:".agentsmesh",canonicalFilename:"mcp.json"}},buildImportPaths:BS,detectionPaths:[Ur,As]};});function lF(e){let t={name:e.name};return e.description&&(t.description=e.description.slice(0,500)),e.model?t.model=e.model:t.model="inherit",e.tools.length>0&&(t.tools=e.tools),x(t,e.body.trim()||"")}var cF=d(()=>{U();s(lF,"serializeDroid");});function mF(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(pr)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Br,content:o}]:[]}function pF(e){return ae(e,Kr)}function uF(e){return e.commands.map(t=>{let r={description:t.description||void 0,"allowed-tools":t.allowedTools.length>0?t.allowedTools:void 0};return r.description===void 0&&delete r.description,r["allowed-tools"]===void 0&&delete r["allowed-tools"],{path:`${Bi}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function dF(e){return e.agents.map(t=>({path:`${On}/${t.name}.md`,content:lF(t)}))}function fF(e){return um(e,Bc)}function gF(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:ho,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}var hF=d(()=>{ie();Be();U();Pl();cF();sl();s(mF,"generateRules");s(pF,"generateSkills");s(uF,"generateCommands");s(dF,"generateAgents");s(fF,"generateHooks");s(gF,"generateMcp");});async function _F(e,t,r){let n=await I(join(e,t));if(n===null)return;let o;try{o=JSON.parse(n);}catch{return}if(o===null||typeof o!="object"||Array.isArray(o))return;let a=o.mcpServers;if(a==null||typeof a!="object"||Array.isArray(a)||Object.keys(a).length===0)return;let l={};for(let[c,m]of Object.entries(a))!m||typeof m!="object"||Array.isArray(m)||(l[c]=m);Object.keys(l).length!==0&&(await Xe(e,yF,l),r.push({fromTool:pr,fromPath:t,toPath:yF,feature:"mcp"}));}var yF,SF=d(()=>{b();Sn();sl();yF=".agentsmesh/mcp.json";s(_F,"importFactoryDroidMcp");});async function RF(e,t={}){let r=t.scope??"project",n=[],o=await H(pr,e,r);return n.push(...await X(Tg,e,r,{normalize:o})),await oe(e,r==="global"?Ps:Kr,pr,n,o),await _F(e,r==="global"?Wi:ho,n),await dm({projectRoot:e,hooksFile:Bc,canonicalHooksPath:jb,targetName:pr,results:n}),n}var IF=d(()=>{he();ie();Ae();Pl();SF();sl();bI();s(RF,"importFromFactoryDroid");});function kF(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:pr}))}var LF=d(()=>{Oe();sl();s(kF,"lintRules");});function CF(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[F(".agentsmesh/permissions.yaml","factory-droid","Factory Droid permissions are managed via CLI flags (--skip-permissions-unsafe); canonical permissions are not projected.")]}function EF(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 OF=d(()=>{Ie();s(CF,"lintPermissions");s(EF,"lintIgnore");});var w8,b8,A8,wF,Tg,bI=d(()=>{hF();sl();IF();LF();OF();we();w8={name:pr,primaryRootInstructionPath:Br,generateRules:mF,generateCommands:uF,generateAgents:dF,generateSkills:pF,generateMcp:gF,generateHooks:fF,importFrom:RF},b8={rootInstructionPath:Br,skillDir:Kr,managedOutputs:{dirs:[Kr,Bi,On],files:[Br,Bc,ho]},paths:{rulePath(e){return Br},commandPath(e){return `${Bi}/${e}.md`},agentPath(e){return `${On}/${e}.md`}}},A8={rootInstructionPath:xs,skillDir:Ps,managedOutputs:{dirs:[Ps,Uc,Ki],files:[xs,Fb,Wi]},rewriteGeneratedPath(e){return e===Br?xs:e===ho?Wi:e.startsWith(`${Kr}/`)?e.replace(`${Kr}/`,`${Ps}/`):e.startsWith(`${On}/`)?e.replace(`${On}/`,`${Ki}/`):e},paths:{rulePath(e){return xs},commandPath(e){return `${Uc}/${e}.md`},agentPath(e){return `${Ki}/${e}.md`}}},wF={rules:"native",additionalRules:"embedded",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"none"},Tg={id:pr,metadata:{displayName:"Factory Droid",category:"agent-platform",officialUrl:"https://www.factory.ai",shortDescription:"Factory.ai's coding droid"},generators:w8,capabilities:wF,emptyImportMessage:"No Factory Droid config found (AGENTS.md, .factory/skills, or .factory/mcp.json).",lintRules:kF,lint:{permissions:CF,ignore:EF},project:b8,globalSupport:{capabilities:wF,detectionPaths:[xs,Wi,Ki],layout:A8},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Br],global:[xs]},canonicalDir:Mb,canonicalRootFilename:"_root.md",markAsRoot:true},commands:{feature:"commands",mode:"directory",source:{project:[Bi],global:[Uc]},canonicalDir:$b,extensions:[".md"],preset:"command"},agents:{feature:"agents",mode:"directory",source:{project:[On],global:[Ki]},canonicalDir:Gb,extensions:[".md"],preset:"agent"}},buildImportPaths:KS,detectionPaths:[Br,ho,On]};});var da,nn,Wo,bF,AF,Ho,xg,Gl,Pg,Gu,fa,TF,xF,ga,Dg,$u,ju,AI,TI,hm,xI,ym,_m,Ng,Sm,$l,Uu,PF,it=d(()=>{da="gemini-cli",nn="GEMINI.md",Wo="AGENTS.md",bF=".gemini/rules",AF=".gemini/GEMINI.md",Ho=".gemini/commands",xg=".gemini/policies",Gl=".gemini/settings.json",Pg=".geminiignore",Gu=".gemini/skills",fa=".gemini/agents",TF=".gemini/system.md",xF=`${xg}/permissions.toml`,ga=".agentsmesh/rules",Dg=".agentsmesh/commands",$u=".agentsmesh/agents",ju=".agentsmesh/skills",AI=".agentsmesh/mcp.json",TI=".agentsmesh/hooks.yaml",hm=".agentsmesh/ignore",xI=".agentsmesh/permissions.yaml",ym=".gemini/GEMINI.md",_m=".gemini/AGENTS.md",Ng=".gemini/settings.json",Sm=".gemini/commands",$l=".gemini/skills",Uu=".gemini/agents",PF=".gemini/policies/permissions.toml";});function PI(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:nn,content:n}];return t&&o.push({path:Wo,content:t.body.trim()}),o}var DF=d(()=>{Be();it();s(PI,"generateRules");});function NF(e,t){let r=e.split(":").filter(Boolean),n=r.length>0?r.pop():e;return [t,...r,`${n}.toml`].join("/")}var vF=d(()=>{s(NF,"canonicalCommandNameToGeminiTomlPath");});function T8(e){let t=e.replace(/\r\n/g,`
|
|
128
128
|
`);return t.includes('"""')?JSON.stringify(t):`"""
|
|
129
129
|
${t}
|
|
130
|
-
"""`}function
|
|
130
|
+
"""`}function x8(e){return [`description = ${JSON.stringify(e.description||e.name)}`,`prompt = ${T8(e.body.trim()||"")}`].join(`
|
|
131
131
|
`)+`
|
|
132
|
-
`}function
|
|
133
|
-
`)}]}var
|
|
134
|
-
`)}function
|
|
135
|
-
`)}]}var
|
|
132
|
+
`}function DI(e){return e.commands.map(t=>({path:NF(t.name,Ho),content:x8(t)}))}var FF=d(()=>{it();vF();s(T8,"serializeTomlMultilineLiteral");s(x8,"serializeGeminiCommand");s(DI,"generateCommands");});function NI(e){return e.agents.map(t=>{let r={name:t.name,kind:"local",description:t.description||void 0,tools:t.tools.length>0?t.tools:void 0,model:t.model||void 0,maxTurns:t.maxTurns>0?t.maxTurns:void 0,permissionMode:t.permissionMode||void 0,disallowedTools:t.disallowedTools.length>0?t.disallowedTools:void 0};Object.keys(r).forEach(o=>{r[o]===void 0&&delete r[o];});let n=x(r,t.body.trim()||"");return {path:`${fa}/${t.name}.md`,content:n}})}var MF=d(()=>{U();it();s(NI,"generateAgents");});function vI(e){let t=[];for(let r of e.skills){let n={name:r.name,description:r.description||void 0};n.description===void 0&&delete n.description;let o=x(n,r.body.trim()||"");t.push({path:`${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 GF=d(()=>{U();it();s(vI,"generateSkills");});function P8(e){switch(e){case "PreToolUse":return "BeforeTool";case "PostToolUse":return "AfterTool";case "Notification":return "Notification";default:return null}}function FI(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=P8(i);if(!l||!Array.isArray(a))return [];let c=a.filter(m=>typeof m=="object"&&m!==null&&un(m)).map((m,p)=>({matcher:m.matcher,hooks:[{name:`${l}-${p+1}`,type:"command",command:St(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:[nn,Wo]}),Object.keys(r).length===0?[]:[{path:Gl,content:JSON.stringify(r,null,2)}]}var MI=d(()=>{dn();it();s(P8,"mapHookEvent");s(FI,"generateGeminiSettingsFiles");});function GI(e){return !e.ignore||e.ignore.length===0?[]:[{path:Pg,content:e.ignore.join(`
|
|
133
|
+
`)}]}var $F=d(()=>{it();s(GI,"generateIgnore");});var jF=d(()=>{DF();FF();MF();GF();MI();$F();});var UF=d(()=>{jF();});function jl(e){return JSON.stringify(e)}function D8(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function N8(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 vg(e,t,r){return ["[[rule]]",`decision = ${jl(e)}`,`priority = ${t}`,...r,""].join(`
|
|
134
|
+
`)}function BF(e,t,r){let n=N8(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 vg(t,r,[`toolName = ${jl(i)}`])}if(n.kind==="bash"){let i=n.prefix.replace(/:\*$/u,"").replace(/\*$/u,"").trim();return vg(t,r,[`toolName = ${jl(o.Bash)}`,`commandPrefix = ${jl(i)}`])}return n.kind==="read"?vg(t,r,[`toolName = ${jl(o.Read)}`,`argsPattern = ${jl(D8(n.path))}`]):vg(t,r,[`toolName = ${jl(n.raw)}`])}function KF(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=BF(i,"allow",100+a);l&&o.push(l);}),r.forEach((i,a)=>{let l=BF(i,"deny",200+a);l&&o.push(l);}),o.length===0?[]:[{path:xF,content:o.join(`
|
|
135
|
+
`)}]}var WF=d(()=>{it();s(jl,"escapeTomlBasicString");s(D8,"escapeRegexLiteral");s(N8,"parsePermissionExpr");s(vg,"ruleForDecision");s(BF,"permissionExprToGeminiRule");s(KF,"generateGeminiPermissionsPolicies");});function $I(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 T(e);if(r===0){let n=e.indexOf("+++",3);if(n!==-1)try{let o=e.slice(3,n).trim(),i=e.slice(n+3).trim();return {frontmatter:o===""?{}:parse$1(o)??{},body:i}}catch{return {frontmatter:{},body:e.trim()}}}return {frontmatter:{},body:e.trim()}}var jI=d(()=>{U();s($I,"mapGeminiHookEvent");s(Fg,"parseFlexibleFrontmatter");});async function UI(e,t){let r=join(e,Gl),n=await I(r);if(n===null)return;let o;try{o=JSON.parse(n);}catch{}if(!o)return;let i=o.mcpServers;if(i!==void 0&&typeof i=="object"&&i!==null&&Object.keys(i).length>0){let c=join(e,AI);await O(join(e,".agentsmesh")),await L(c,JSON.stringify({mcpServers:i},null,2)),t.push({fromTool:"gemini-cli",fromPath:r,toPath:AI,feature:"mcp"});}let a=o.ignorePatterns;if(Array.isArray(a)&&a.length>0&&a.every(c=>typeof c=="string")){let c=join(e,hm);await O(join(e,".agentsmesh")),await L(c,a.join(`
|
|
136
136
|
`)+`
|
|
137
|
-
`),t.push({fromTool:"gemini-cli",fromPath:r,toPath:hm,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
|
|
137
|
+
`),t.push({fromTool:"gemini-cli",fromPath:r,toPath:hm,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=$I(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"&&un(h)).map(h=>({matcher:g.matcher,command:St(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"&&un(h)).map(h=>({matcher:h.matcher,command:St(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,TI);await O(join(e,".agentsmesh")),await L(p,stringify(m,{lineWidth:0}).trimEnd()),t.push({fromTool:"gemini-cli",fromPath:r,toPath:TI,feature:"hooks"});}}}var HF=d(()=>{dn();b();it();jI();s(UI,"importGeminiSettings");});async function zF(e,t){let r=join(e,Pg),n=await I(r);if(n!==null&&n.trim()){let o=n.split(/\r?\n/).map(i=>i.trim()).filter(i=>i&&!i.startsWith("#"));if(o.length>0){await O(join(e,".agentsmesh"));let i=join(e,hm);await L(i,o.join(`
|
|
138
138
|
`)+`
|
|
139
|
-
`),t.push({fromTool:"gemini-cli",fromPath:r,toPath:hm,feature:"ignore"});}}}var
|
|
140
|
-
`),t.push({fromTool:da,fromPath:join(e,
|
|
141
|
-
`)}]}function
|
|
142
|
-
`}function
|
|
143
|
-
`),t.push({fromTool:Wr,fromPath:r,toPath:
|
|
144
|
-
`)}]}function
|
|
145
|
-
`)}]}function
|
|
139
|
+
`),t.push({fromTool:"gemini-cli",fromPath:r,toPath:hm,feature:"ignore"});}}}var KI=d(()=>{b();it();jI();HF();s(zF,"importGeminiIgnore");});function $8(e){return e.replace(/\\(.)/g,"$1")}function j8(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 U8(e){return `Bash(${e}:*)`}function B8(e){return `Read(${$8(e)})`}async function VF(e){let t=[],r=join(e,xg),n;try{n=await B(r);}catch{return t}let o=n.filter(u=>u.endsWith(".toml"));if(o.length===0)return t;let i=[],a=[],l=new Set,c=new Set;for(let u of o){let f=await I(u);if(!f)continue;let g;try{g=parse$1(f);}catch{continue}let h=g&&typeof g=="object"&&"rule"in g?g.rule:void 0;if(Array.isArray(h))for(let y of h){if(!y||typeof y!="object")continue;let _=y,R=typeof _.toolName=="string"?_.toolName:null,k=typeof _.decision=="string"?_.decision:null;if(!R||!k)continue;let w=j8(R);if(!w)continue;let D=null;w==="Bash"?typeof _.commandPrefix=="string"&&_.commandPrefix.trim()&&(D=U8(_.commandPrefix.trim())):w==="Read"?typeof _.argsPattern=="string"&&_.argsPattern.trim()?D=B8(_.argsPattern.trim()):D="Read":D=w,D&&(k==="allow"?l.has(D)||(l.add(D),i.push(D)):k==="deny"&&(c.has(D)||(c.add(D),a.push(D))));}}if(i.length===0&&a.length===0)return t;await O(join(e,".agentsmesh"));let m=join(e,xI),p=stringify({allow:i,deny:a});return await L(m,p.trimEnd()+`
|
|
140
|
+
`),t.push({fromTool:da,fromPath:join(e,xg),toPath:xI,feature:"permissions"}),t}var JF=d(()=>{b();it();s($8,"unescapeRegexLiteral");s(j8,"toolNameToPermissionBase");s(U8,"commandPrefixToBashExpr");s(B8,"argsPatternToReadExpr");s(VF,"importGeminiPolicies");});function WI(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 XF=d(()=>{s(WI,"stripProjectRootCanonicalPrefix");});async function qF(e,t,r){let n=join(e,Gu),i=(await B(n)).filter(l=>basename(l)==="SKILL.md");for(let l of i){let c=await I(l);if(!c)continue;let m=basename(l.slice(0,-9)),p=T(c),u=Cc(p.frontmatter,m);if(u){let k=join(e,$u);await O(k);let w=join(k,`${u.name}.md`);await L(w,Ti(u,r(p.body,l,w))),t.push({fromTool:"gemini-cli",fromPath:l,toPath:`${$u}/${u.name}.md`,feature:"agents"});continue}let f=join(e,ju,m,"SKILL.md"),g=r(c,l,f),h=join(e,ju,m);await O(h);let{frontmatter:y,body:_}=T(g);await L(f,await eo(f,{...y,name:m},_)),t.push({fromTool:"gemini-cli",fromPath:l,toPath:`${ju}/${m}/SKILL.md`,feature:"skills"});let R=await B(dirname(l));for(let k of R){if(k===l)continue;let w=await I(k);if(w===null)continue;let D=relative(dirname(l),k).replace(/\\/g,"/"),N=join(h,D);await O(dirname(N)),await L(N,r(w,k,N)),t.push({fromTool:"gemini-cli",fromPath:k,toPath:`${ju}/${m}/${D}`,feature:"skills"});}}let a=join(e,fa);try{let c=(await B(a)).filter(m=>m.endsWith(".md"));for(let m of c){let p=await I(m);if(!p)continue;let{frontmatter:u,body:f}=T(p),h=relative(a,m).replace(/\\/g,"/").replace(/\.md$/i,".md"),y=join(e,$u);await O(y);let _=join(y,h),R=r(f,m,_);await L(_,await xe(_,{...u,name:typeof u.name=="string"?u.name:basename(h,".md"),maxTurns:u.maxTurns??u["max-turns"]??u.max_turns,permissionMode:u.permissionMode??u["permission-mode"]??u.permission_mode,disallowedTools:u.disallowedTools??u["disallowed-tools"]??u.disallowed_tools},R)),t.push({fromTool:"gemini-cli",fromPath:m,toPath:`${$u}/${h}`,feature:"agents"});}}catch{}}var ZF=d(()=>{b();U();de();Se();it();s(qF,"importGeminiSkillsAndAgents");});async function K8(e,t,r){let n=await H("codex-cli",e),o=join(e,ga),i=join(e,Wo),a=join(e,AF),l=[i,a,join(e,nn),join(e,TF)],c=null,m=l[l.length-1];for(let D of l){let N=await I(D);if(N!==null){c=N,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 $o({content:u,projectRoot:e,rulesDir:ga,sourcePath:m,fromTool:da,normalize:r});t.push(...f.results);let g=r(f.rootContent,m,p),h=WI(g.replace(/\.agents\/skills\//g,".agentsmesh/skills/").replace(/\.agents\\skills\\/g,".agentsmesh/skills/"),e),{frontmatter:y,body:_}=T(h),k=y.root===true?y:{...y,root:true},w=WI(await z(p,k,_),e);await L(p,w),t.push({fromTool:da,fromPath:m,toPath:`${ga}/_root.md`,feature:"rules"});}async function eM(e){let t=[],r=await H(da,e);return await K8(e,t,r),t.push(...await X(Gg,e,"project",{normalize:r})),await qF(e,t,r),await UI(e,t),await zF(e,t),t.push(...await VF(e)),t}var tM=d(()=>{he();b();U();de();lm();Ae();it();VI();KI();JF();XF();ZF();s(K8,"importRootRule");s(eM,"importFromGemini");});function H8(e){let t=e.replace(/^\/+|\/+$/g,"");return t===".gemini/commands"||t.startsWith(".gemini/commands/")}async function z8(e,t){let r=join(e,...Ho.split("/")),n=join(e,...t.split("/")),o=await B(n),i=[];for(let a of o){if(!/\.(toml|md)$/i.test(a))continue;let l=relative(r,a).replace(/\\/g,"/");if(l.startsWith("..")||l==="")continue;let m=l.replace(/\.(toml|md)$/i,"").split("/").filter(Boolean).join(":");m&&i.push(m);}return [...new Set(i)].sort()}async function nM(e,t){if(!H8(t))return {};let r=await z8(e,t);return r.length?{commands:r}:{}}var oM=d(()=>{b();it();s(H8,"isUnderGeminiCommands");s(z8,"inferGeminiCommandNamesFromFiles");s(nM,"inferGeminiPick");});async function iM(e,t,r){let n=e.replace(/\\/g,"/"),o=join(t,n),{frontmatter:i,body:a}=Fg(r(o)),l=us(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:`${ga}/${n}`,feature:"rules",content:await z(o,c,a)}}async function aM(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")?J8(i):Fg(i),c=Ar(a.allowedTools),m=Ar(a["allowed-tools"]),p=c.length>0?c:m;return {destPath:o,toPath:`${Dg}/${n}`,feature:"commands",content:await Ee(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 J8(e){try{let t=parse$1(e);return {frontmatter:t,body:typeof t.prompt=="string"?t.prompt:""}}catch{return {frontmatter:{},body:e.trim()}}}var lM=d(()=>{de();Pt();KI();it();s(iM,"mapGeminiRuleFile");s(aM,"mapGeminiCommandFile");s(J8,"parseTomlCommand");});var cM,mM,pM=d(()=>{lM();cM=s(({relativePath:e,destDir:t,normalizeTo:r})=>iM(e,t,r),"geminiRuleMapper"),mM=s(({relativePath:e,destDir:t,normalizeTo:r})=>aM(e,t,r),"geminiCommandMapper");});function uM(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(i=>({...i,target:da}))}var dM=d(()=>{Oe();it();s(uM,"lintRules");});function fM(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 gM(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=>Di(n,"gemini-cli",t))}var hM=d(()=>{Ie();s(fM,"lintCommands");s(gM,"lintHooks");});function yM(e,t,r){return t==="project"&&pi("gemini-cli",t)?.ignore.flavor!=="settings-embedded"?[]:FI(e,r)}var _M=d(()=>{Te();MI();s(yM,"emitScopedGeminiSettings");});var Y8,X8,Q8,q8,Gg,VI=d(()=>{UF();$a();WF();it();tM();oM();pM();dM();we();bp();Se();hM();_M();dt();Mu();Y8={name:"gemini-cli",primaryRootInstructionPath:nn,generateRules:PI,generateCommands:DI,generateAgents:NI,generateSkills:vI,generateIgnore:GI,generatePermissions:KF,importFrom:eM},X8={rootInstructionPath:nn,outputFamilies:[{id:"compat-agents",kind:"additional",explicitPaths:[Wo]}],extraRuleOutputPaths(){return [Wo]},skillDir:".gemini/skills",managedOutputs:{dirs:[".gemini/agents",".gemini/commands",".gemini/skills",".agents/skills"],files:["AGENTS.md","GEMINI.md",".gemini/settings.json",".gemini/policies/permissions.toml",".geminiignore"]},mirrorGlobalPath(e,t){return ge(e,".gemini/skills",t)},paths:{rulePath(e,t){return nn},commandPath(e,t){if(e.includes(":")){let r=e.split(":").filter(Boolean),n=r.pop()??e;return `${Ho}/${r.join("/")}/${n}.toml`}return `${Ho}/${e}.toml`},agentPath(e,t){return cs(t,"gemini-cli")?`.gemini/skills/${V(e)}/SKILL.md`:`${fa}/${e}.md`}}},Q8={rootInstructionPath:ym,outputFamilies:[{id:"compat-agents",kind:"additional",explicitPaths:[_m]}],extraRuleOutputPaths(){return [_m]},skillDir:$l,managedOutputs:{dirs:[Sm,$l,Uu],files:[ym,_m,Ng,PF]},rewriteGeneratedPath(e){return e===nn?ym:e===Wo?_m:e===Gl?Ng:e.startsWith(`${Ho}/`)?e.replace(`${Ho}/`,`${Sm}/`):e.startsWith(".gemini/skills/")?e.replace(".gemini/skills/",`${$l}/`):e.startsWith(`${fa}/`)?e.replace(`${fa}/`,`${Uu}/`):e===".geminiignore"?null:e},mirrorGlobalPath(e,t){return ge(e,$l,t)},paths:{rulePath(e,t){return ym},commandPath(e,t){if(e.includes(":")){let r=e.split(":").filter(Boolean),n=r.pop()??e;return `${Sm}/${r.join("/")}/${n}.toml`}return `${Sm}/${e}.toml`},agentPath(e,t){return cs(t,"gemini-cli")?`${$l}/${V(e)}/SKILL.md`:`${Uu}/${e}.md`}}},q8={rules:"native",additionalRules:"embedded",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"partial",ignore:"none",permissions:"native"},Gg={id:"gemini-cli",metadata:{displayName:"Gemini CLI",category:"cli",officialUrl:"https://github.com/google-gemini/gemini-cli",shortDescription:"Google's terminal Gemini agent"},generators:Y8,capabilities:{rules:"native",additionalRules:"embedded",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"partial",ignore:gn("native","settings-embedded"),permissions:"partial"},emptyImportMessage:"No Gemini CLI config found (GEMINI.md or .gemini/rules, .gemini/commands, .gemini/settings.json).",lintRules:uM,lint:{commands:fM,hooks:gM},emitScopedSettings:yM,mergeGeneratedOutputContent(e,t,r,n){let o=t?.content??e;return o!==null&&n===Gl?sv(o,r):null},project:X8,globalSupport:{capabilities:q8,detectionPaths:[ym,_m,Ng,Sm,$l,Uu],layout:Q8},importer:{rules:{feature:"rules",mode:"directory",source:{project:[bF]},canonicalDir:ga,extensions:[".md"],map:cM},commands:{feature:"commands",mode:"directory",source:{project:[Ho]},canonicalDir:Dg,extensions:[".md",".toml"],map:mM}},buildImportPaths:WS,detectionPaths:["GEMINI.md",".gemini"],nativeInstall:{inferPick:nM},conversionDefaults:{agentsToSkills:false}};});function SM(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(Wr)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:ur,content:o}]:[]}function RM(e){return ae(e,zt)}function IM(e){return e.commands.map(t=>({path:`${zt}/${Z(t.name)}/SKILL.md`,content:Ye(t)}))}function kM(e){return e.agents.map(t=>({path:`${zt}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function LM(e){return e.ignore.length===0?[]:[{path:yo,content:e.ignore.join(`
|
|
141
|
+
`)}]}function CM(e){return um(e,ll)}function e3(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 EM(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,e3(n,o)]));return [{path:il,content:stringify({extensions:r})}]}var OM=d(()=>{ie();Be();Se();Ge();Pl();zi();s(SM,"generateRules");s(RM,"generateSkills");s(IM,"generateCommands");s(kM,"generateAgents");s(LM,"generateIgnore");s(CM,"generateHooks");s(e3,"mcpServerToExtension");s(EM,"generateMcp");});function wM(e){if(e===null)return {};try{let t=parse(e);if(t&&typeof t=="object"&&!Array.isArray(t))return t}catch{}return {}}function bM(e,t){let r=e?.allow??[],n=e?.ask??[],o=e?.deny??[];if(r.length===0&&n.length===0&&o.length===0)return null;let i={};r.length>0&&(i.always_allow=r),n.length>0&&(i.ask_before=n),o.length>0&&(i.never_allow=o);let a=wM(t);return a.user=i,stringify(a).trimEnd()+`
|
|
142
|
+
`}function AM(e){let r=wM(e).user;if(!r||typeof r!="object"||Array.isArray(r))return null;let n=r,o=nt(n.always_allow),i=nt(n.ask_before),a=nt(n.never_allow);if(o.length===0&&i.length===0&&a.length===0)return null;let l={allow:o,deny:a};return i.length>0&&(l.ask=i),l}var JI=d(()=>{Pt();s(wM,"parseYamlObject");s(bM,"serializeGoosePermissions");s(AM,"parseGoosePermissions");});async function xM(e,t={}){let r=t.scope??"project",n=[],o=await H(Wr,e,r);return n.push(...await X($g,e,r,{normalize:o})),await oe(e,r==="global"?Hr:zt,Wr,n,o),await dm({projectRoot:e,hooksFile:ll,canonicalHooksPath:Hb,targetName:Wr,results:n}),r==="global"&&await s3(e,n),n}async function s3(e,t){let r=join(e,al),n=await I(r);if(n===null)return;let o=AM(n);if(!o)return;let i=join(e,HS);await O(dirname(i)),await L(i,stringify(o).trimEnd()+`
|
|
143
|
+
`),t.push({fromTool:Wr,fromPath:r,toPath:HS,feature:"permissions"});}var PM=d(()=>{he();b();ie();Ae();Pl();zi();JI();YI();s(xM,"importFromGoose");s(s3,"importPermissions");});function m3(e){let t=typeof e.description=="string"?e.description:"",r=Ht(e.envs);return e.type==="stdio"||typeof e.cmd=="string"?typeof e.cmd!="string"?null:{type:"stdio",command:e.cmd,args:nt(e.args),env:r,...t!==""&&{description:t}}:typeof e.uri!="string"?null:{type:"sse",url:e.uri,headers:{},env:r,...t!==""&&{description:t}}}function p3(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=m3(i);a&&(n[o]=a);}return n}async function u3(e){let t=await I(e);if(t===null)return {};let r;try{r=JSON.parse(t);}catch{return {}}if(!r||typeof r!="object"||Array.isArray(r))return {};let n=r.mcpServers;if(!n||typeof n!="object"||Array.isArray(n))return {};let o={};for(let[i,a]of Object.entries(n))!a||typeof a!="object"||Array.isArray(a)||(o[i]=a);return o}async function DM(e){let t=p3(e.content);if(Object.keys(t).length===0)return null;let r=join(e.destDir,"mcp.json"),o={...await u3(r),...t};return {destPath:r,toPath:posix.normalize(c3),content:JSON.stringify({mcpServers:o},null,2)}}var c3,NM=d(()=>{Pt();b();c3=".agentsmesh/mcp.json";s(m3,"extensionToMcpServer");s(p3,"parseExtensions");s(u3,"readExistingServers");s(DM,"gooseMcpMap");});var vM,FM=d(()=>{NM();zi();vM={rules:{feature:"rules",mode:"singleFile",source:{project:[ur],global:[_o]},canonicalDir:Kb,canonicalRootFilename:"_root.md",markAsRoot:true},mcp:{feature:"mcp",mode:"singleFile",source:{global:[il]},canonicalDir:".agentsmesh",canonicalRootFilename:"mcp.json",map:DM},ignore:{feature:"ignore",mode:"flatFile",source:{project:[yo],global:[Hi]},canonicalDir:".agentsmesh",canonicalFilename:Wb}};});function f3(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var MM,GM=d(()=>{b();zi();JI();s(f3,"computeStatus");MM=s(async(e,t,r,n)=>{if(r!=="global"||!n.has("permissions"))return [];let o=await I(join(t,al)),i=bM(e.permissions,o);return i?[{target:"goose",path:al,content:i,currentContent:o??void 0,status:f3(o,i)}]:[]},"generateGooseScopeExtras");});function $M(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Wr}))}var jM=d(()=>{Oe();zi();s($M,"lintRules");});function UM(e,t){if(t?.scope==="global")return [];if(!e.permissions)return [];let{allow:n,deny:o}=e.permissions,i=e.permissions.ask??[];return n.length===0&&o.length===0&&i.length===0?[]:[F(".agentsmesh/permissions.yaml","goose","Goose applies tool permissions only at global scope (~/.config/goose/permission.yaml); project-scope permissions are not projected.")]}function BM(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 KM=d(()=>{Ie();s(UM,"lintPermissions");s(BM,"lintMcp");});var g3,h3,y3,_3,S3,$g,YI=d(()=>{Ge();Se();OM();dt();PM();FM();GM();jM();KM();we();zi();g3={name:Wr,primaryRootInstructionPath:ur,generateRules:SM,generateCommands:IM,generateAgents:kM,generateSkills:RM,generateIgnore:LM,generateMcp:EM,generateHooks:CM,importFrom:xM},h3={rootInstructionPath:ur,skillDir:zt,managedOutputs:{dirs:[zt],files:[ur,yo,ll]},paths:{rulePath(e){return ur},commandPath(e){return `${zt}/${Z(e)}/SKILL.md`},agentPath(e){return `${zt}/${V(e)}/SKILL.md`}}},y3={rootInstructionPath:_o,skillDir:Hr,managedOutputs:{dirs:[Hr],files:[_o,Hi,il,ll,al]},rewriteGeneratedPath(e){return e===ur?_o:e===yo?Hi:e},mirrorGlobalPath(e,t){return ge(e,Hr,t)},paths:{rulePath(e){return _o},commandPath(e){return `${Hr}/${Z(e)}/SKILL.md`},agentPath(e){return `${Hr}/${V(e)}/SKILL.md`}}},_3={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"none",hooks:"native",ignore:"native",permissions:"none"},S3={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"native"},$g={id:Wr,metadata:{displayName:"Goose",category:"cli",officialUrl:"https://block.github.io/goose",shortDescription:"Block's open-source AI agent"},generators:g3,capabilities:_3,emptyImportMessage:"No Goose config found (.goosehints, .agents/skills, or .gooseignore).",lintRules:$M,lint:{permissions:UM,mcp:BM},supportsConversion:{commands:true,agents:true},project:h3,globalSupport:{capabilities:S3,detectionPaths:[_o,Hi,Hr,il],layout:y3,scopeExtras:MM},importer:vM,sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:zS,detectionPaths:[ur,yo],conversionDefaults:{commandsToSkills:true,agentsToSkills:true}};});function WM(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(Ds)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:wn,content:o}]:[]}var HM=d(()=>{Be();Kc();s(WM,"generateRules");});async function zM(e,t={}){let r=t.scope??"project",n=await H(Ds,e,r);return X(jg,e,r,{normalize:n})}var VM=d(()=>{he();Ae();Kc();XI();s(zM,"importFromJules");});function JM(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Ds}))}var YM=d(()=>{Oe();Kc();s(JM,"lintRules");});function XM(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 QM(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 qM(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 ZM(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 eG(e){return e.commands.length===0?[]:[F(".agentsmesh/commands","jules","Jules has no command system; canonical commands are not projected.")]}var tG=d(()=>{Ie();s(XM,"lintHooks");s(QM,"lintPermissions");s(qM,"lintIgnore");s(ZM,"lintMcp");s(eG,"lintCommands");});var R3,I3,k3,jg,XI=d(()=>{HM();VM();YM();tG();we();Kc();R3={name:Ds,primaryRootInstructionPath:wn,generateRules:WM,importFrom:zM},I3={rootInstructionPath:wn,managedOutputs:{dirs:[],files:[wn]},paths:{rulePath(e){return wn},commandPath(){return null},agentPath(){return null}}},k3={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"none",mcp:"none",hooks:"none",ignore:"none",permissions:"none"},jg={id:Ds,metadata:{displayName:"Jules",category:"agent-platform",officialUrl:"https://jules.google",shortDescription:"Google's autonomous coding agent"},generators:R3,capabilities:k3,emptyImportMessage:"No Jules config found (AGENTS.md).",lintRules:JM,lint:{hooks:XM,permissions:QM,ignore:qM,mcp:ZM,commands:eG},project:I3,importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[wn]},canonicalDir:Vb,canonicalRootFilename:"_root.md",markAsRoot:true}},buildImportPaths:VS,detectionPaths:[wn]};});function rG(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:`${su}/${o}.md`,content:n.body.trim()||""});}return t}function C3(e){let t={};return e.description&&(t.description=e.description),e.type!=="stdio"&&(t.type=e.type),ig(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 nG(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,C3(n)]));return [{path:ou,content:JSON.stringify({mcpServers:t},null,2)}]}function oG(e){return e.commands.map(t=>{let r={description:t.description||void 0};return r.description===void 0&&delete r.description,{path:`${Wc}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function sG(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:`${Hc}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function iG(e){return e.ignore.length===0?[]:[{path:iu,content:e.ignore.join(`
|
|
144
|
+
`)}]}function aG(e){return ae(e,ml)}function lG(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 cG(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:Wf,content:JSON.stringify({allow:r,deny:n,ask:o},null,2)}]}var mG=d(()=>{ag();ie();Be();U();zc();s(rG,"generateRules");s(C3,"toJunieMcpServer");s(nG,"generateMcp");s(oG,"generateCommands");s(sG,"generateAgents");s(iG,"generateIgnore");s(aG,"generateSkills");s(lG,"renderJunieGlobalInstructions");s(cG,"generatePermissions");});async function E3(e,t,r){let n=[So,Bf,Yb,Xb],o=join(e,JS);for(let i of n){let a=join(e,i),l=await I(a);if(l===null)continue;let c=await $o({content:l,projectRoot:e,rulesDir:Hf,sourcePath:a,fromTool:cl,normalize:r});t.push(...c.results);let{frontmatter:m,body:p}=T(r(c.rootContent,a,o)),u=await z(o,{root:true,description:typeof m.description=="string"?m.description:void 0,globs:Array.isArray(m.globs)?m.globs:void 0},p);await L(o,u),t.push({fromTool:cl,fromPath:a,toPath:JS,feature:"rules"});return}}async function uG(e){let t=[],r=await H(cl,e);return await E3(e,t,r),t.push(...await X(Ug,e,"project",{normalize:r})),await oe(e,ml,cl,t,r),t}var dG=d(()=>{he();b();U();ie();lm();de();Ae();zc();QI();s(E3,"importRootRule");s(uG,"importFromJunie");});function fG(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:cl}))}var gG=d(()=>{Oe();zc();s(fG,"lintRules");});function hG(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=[];for(let[r,n]of Object.entries(e.mcp.mcpServers))$P(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 yG=d(()=>{ag();Ie();s(hG,"lintMcp");});var O3,w3,b3,A3,Ug,QI=d(()=>{mG();zc();dt();dG();gG();yG();we();O3={name:"junie",primaryRootInstructionPath:So,generateRules:rG,generateCommands:oG,generateAgents:sG,generateSkills:aG,generateMcp:nG,generateIgnore:iG,generatePermissions:cG,importFrom:uG},w3={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 `${su}/${e}.md`},commandPath(e,t){return `${Wc}/${e}.md`},agentPath(e,t){return `${Hc}/${e}.md`}}},b3={rootInstructionPath:pl,renderPrimaryRootInstruction:lG,skillDir:lu,managedOutputs:{dirs:[lu,cu,mu,Qb],files:[pl,Kf,Wf]},rewriteGeneratedPath(e){return e===So?pl:e.startsWith(`${su}/`)?pl:e.startsWith(`${ml}/`)?e.replace(`${ml}/`,`${lu}/`):e.startsWith(`${Wc}/`)?e.replace(`${Wc}/`,`${mu}/`):e.startsWith(`${Hc}/`)?e.replace(`${Hc}/`,`${cu}/`):e===ou?Kf:e===iu?null:e},mirrorGlobalPath(e,t){return ge(e,".junie/skills",t)},paths:{rulePath(e,t){return pl},commandPath(e,t){return `${mu}/${e}.md`},agentPath(e,t){return `${cu}/${e}.md`}}},A3={rules:"native",additionalRules:"embedded",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"native"},Ug={id:"junie",metadata:{displayName:"Junie",category:"ide",officialUrl:"https://www.jetbrains.com/junie",shortDescription:"JetBrains AI coding agent"},generators:O3,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:fG,lint:{mcp:hG},project:w3,globalSupport:{capabilities:A3,detectionPaths:[pl,lu,cu,mu,Kf],layout:b3},importer:{rules:{feature:"rules",mode:"directory",source:{project:[".junie/rules"]},canonicalDir:Hf,extensions:[".md"],preset:"rule"},commands:{feature:"commands",mode:"directory",source:{project:[".junie/commands"]},canonicalDir:qb,extensions:[".md"],preset:"command"},agents:{feature:"agents",mode:"directory",source:{project:[".junie/agents"]},canonicalDir:Zb,extensions:[".md"],preset:"agent"},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[ou]},canonicalDir:".agentsmesh",canonicalFilename:eA},ignore:{feature:"ignore",mode:"flatFile",source:{project:[iu]},canonicalDir:".agentsmesh",canonicalFilename:tA}},buildImportPaths:YS,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 SG(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:bn,content:r.body.trim()?r.body:""});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(Nt))continue;let o=basename(n.source,".md"),i={};n.description&&(i.description=n.description),n.globs.length>0&&(i.globs=n.globs);let a=Object.keys(i).length>0?x(i,n.body.trim()||""):n.body.trim()||"";t.push({path:`${Ro}/${o}.md`,content:a});}return t}function RG(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${Io}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function IG(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:`${ko}/${r}.md`,content:x(n,t.body.trim()||"")}})}function kG(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Ns,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function LG(e){return e.ignore.length===0?[]:[{path:dl,content:e.ignore.join(`
|
|
145
|
+
`)}]}function CG(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:ul,content:JSON.stringify({permission:o},null,2)}]}function EG(e){return ae(e,zr)}var OG=d(()=>{ie();U();Ms();s(SG,"generateRules");s(RG,"generateCommands");s(IG,"generateAgents");s(kG,"generateMcp");s(LG,"generateIgnore");s(CG,"generatePermissions");s(EG,"generateSkills");});var Bg,Kg,wG,ZI=d(()=>{U();de();Ms();Bg=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Qi}/${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}=T(t(n));return {destPath:n,toPath:`${Yc}/${e}`,content:await Ee(n,{hasDescription:Object.prototype.hasOwnProperty.call(o,"description"),description:typeof o.description=="string"?o.description:void 0,hasAllowedTools:false,allowedTools:[]},i)}},"kiloCommandMapper"),wG=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${yl}/${e}`,content:await xe(n,o,i)}},"kiloAgentMapper");});async function bG(e){try{return await stat(e),!0}catch{return false}}async function P3(e,t,r){let n=join(e,fl);if(!await bG(n))return;let o=join(e,Qi),i=join(n,tk),l=t.some(c=>c.toPath===ek)?null:await I(i);if(l!==null){let c=join(e,ek),m=r(l,i,c),{body:p}=T(m),u=await z(c,{root:true},p);await L(c,u),t.push({feature:"rules",fromTool:Nt,fromPath:`${fl}/${tk}`,toPath:ek});}t.push(...await Re({srcDir:n,destDir:o,extensions:[".md"],fromTool:Nt,normalize:r,mapEntry:s(async({srcPath:c,relativePath:m,content:p,normalizeTo:u})=>{let f=await Bg({absolutePath:c,relativePath:m,content:p,destDir:o,normalizeTo:u});return m===tk||!f?null:{...f,feature:"rules"}},"mapEntry")}));}async function D3(e,t,r){let n=join(e,Vc);if(!await bG(n))return;let o=join(e,Yc);t.push(...await Re({srcDir:n,destDir:o,extensions:[".md"],fromTool:Nt,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 N3(e,t,r){let n=join(e,Vf),o=await I(n);if(o===null)return;let i;try{i=parse(o);}catch{return}if(!(!i||!Array.isArray(i.customModes)))for(let a of i.customModes){if(!a||typeof a!="object")continue;let l=a;if(typeof l.slug!="string"||l.slug.length===0)continue;let c=l.slug,m=join(e,yl,`${c}.md`),p=typeof l.description=="string"?l.description:"",u=typeof l.roleDefinition=="string"?l.roleDefinition.trim():"",f=typeof l.whenToUse=="string"?l.whenToUse.trim():"",g=f?`${u}
|
|
146
146
|
|
|
147
147
|
## When to use
|
|
148
148
|
|
|
149
|
-
${f}`:u,h={};p&&(h.description=p),typeof l.name=="string"&&l.name.length>0&&(h.name=l.name);let y=await xe(m,h,g),_=r(y,n,m);await L(m,_),t.push({feature:"agents",fromTool:Nt,fromPath:n,toPath:`${yl}/${c}.md`});}}async function
|
|
150
|
-
`)}]}var qG=d(()=>{ie();Ge();U();ek();qc();s(G3,"steeringFrontmatter");s(HG,"generateRules");s(zG,"generateCommands");s(VG,"generateSkills");s(JG,"generateMcp");s(YG,"generateHooks");s(XG,"generateAgents");s(QG,"generateIgnore");});function j3(e){let t=typeof e.inclusion=="string"?e.inclusion:"",r={root:false,description:typeof e.description=="string"?e.description:void 0,globs:us(e.fileMatchPattern)};return t==="manual"&&(r.trigger="manual"),t==="auto"&&(r.trigger="model_decision"),t==="fileMatch"&&(r.trigger="glob"),r}async function U3(e,t,r,n){let o=n==="global"?[Pn,An]:[An,Pn];for(let i of o){let a=join(e,i),l=await I(a);if(l===null)continue;let c=join(e,JS),{frontmatter:m,body:p}=T(r(l,a,c));await L(c,await z(c,{...m,root:true},p)),t.push({fromTool:dr,fromPath:a,toPath:JS,feature:"rules"});return}}async function B3(e,t,r){let n=join(e,YS);t.push(...await Re({srcDir:join(e,Tn),destDir:n,extensions:[".md"],fromTool:dr,normalize:r,mapEntry:s(async({relativePath:o,normalizeTo:i})=>{if(basename(o)==="AGENTS.md")return null;let a=join(n,o),{frontmatter:l,body:c}=T(i(a));return {destPath:a,toPath:`${YS}/${o}`,feature:"rules",content:await z(a,j3(l),c)}},"mapEntry")}));}async function K3(e,t){let r={};for(let o of await B(join(e,qi))){if(!o.endsWith(".kiro.hook"))continue;let i=KG(await I(o)??"");i&&(r[i.event]??=[],r[i.event].push(i.entry));}if(Object.keys(r).length===0)return;let n=join(e,XS);await O(join(e,".agentsmesh")),await L(n,WG(r)),t.push({fromTool:dr,fromPath:join(e,qi),toPath:XS,feature:"hooks"});}async function ZG(e,t={}){let r=t.scope??"project",n=[],o=await H(dr,e,r);return await U3(e,n,o,r),await B3(e,n,o),n.push(...await X(Wg,e,r,{normalize:o})),await oe(e,vt,dr,n,o),r==="project"&&await K3(e,n),n}var e$=d(()=>{he();ie();rr();Ae();ue();Pt();b();U();ek();qc();tk();s(j3,"canonicalRuleMeta");s(U3,"importRoot");s(B3,"importNonRootRules");s(K3,"importHooks");s(ZG,"importFromKiro");});function t$(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:dr}))}var r$=d(()=>{Oe();qc();s(t$,"lintRules");});function n$(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=>Di(n,"kiro",t,{unsupportedBy:"Kiro hooks"}))}var o$=d(()=>{Ie();s(n$,"lintHooks");});var W3,H3,z3,V3,Wg,tk=d(()=>{Ge();qG();dt();e$();r$();o$();we();qc();W3={name:dr,primaryRootInstructionPath:An,generateRules:HG,generateCommands:zG,generateAgents:XG,generateSkills:VG,generateMcp:JG,generateHooks:YG,generateIgnore:QG,importFrom:ZG},H3={rootInstructionPath:An,skillDir:vt,managedOutputs:{dirs:[".kiro/hooks",".kiro/skills",".kiro/steering",".kiro/agents"],files:["AGENTS.md",".kiro/settings/mcp.json",".kiroignore"]},paths:{rulePath(e,t){return `${Tn}/${e}.md`},commandPath(e){return `${vt}/${q(e)}/SKILL.md`},agentPath(e,t){return `${xn}/${e}.md`}}},z3={rootInstructionPath:Pn,skillDir:Zi,managedOutputs:{dirs:[_l,Zi,Sl,sA],files:[Pn,hu,yu]},rewriteGeneratedPath(e){return e===An?Pn:e.startsWith(`${Tn}/`)?e.replace(`${Tn}/`,`${_l}/`):e.startsWith(`${vt}/`)?e.replace(`${vt}/`,`${Zi}/`):e.startsWith(`${xn}/`)?e.replace(`${xn}/`,`${Sl}/`):e===Xc?hu:e===Qc?yu:e.startsWith(`${qi}/`)?null:e},mirrorGlobalPath(e,t){return ge(e,".kiro/skills",t)},paths:{rulePath(e,t){return `${_l}/${e}.md`},commandPath(e){return `${vt}/${q(e)}/SKILL.md`},agentPath(e,t){return `${Sl}/${e}.md`}}},V3={rules:"native",additionalRules:"native",commands:"embedded",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"none"},Wg={id:dr,metadata:{displayName:"Kiro",category:"ide",officialUrl:"https://kiro.dev",shortDescription:"AWS spec-driven AI IDE"},generators:W3,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:t$,lint:{hooks:n$},project:H3,globalSupport:{capabilities:V3,detectionPaths:[_l,Pn,Zi,Sl,hu,yu],layout:z3},importer:{agents:{feature:"agents",mode:"directory",source:{project:[xn],global:[xn]},canonicalDir:iA,extensions:[".md"],preset:"agent"},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Xc],global:[hu]},canonicalDir:".agentsmesh",canonicalFilename:aA},ignore:{feature:"ignore",mode:"flatFile",source:{project:[Qc],global:[yu]},canonicalDir:".agentsmesh",canonicalFilename:lA}},buildImportPaths:QS,detectionPaths:[Tn,vt,xn,qi,Xc,Qc],conversionDefaults:{commandsToSkills:true}};});function i$(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:Dn,content:r.body.trim()?r.body:""});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(Vr))continue;let o=basename(n.source,".md"),i={};n.description&&(i.description=n.description),n.globs.length>0&&(i.globs=n.globs);let a=Object.keys(i).length>0?x(i,n.body.trim()||""):n.body.trim()||"";t.push({path:`${Lo}/${o}.md`,content:a});}return t}function a$(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${Co}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function l$(e){return e.agents.map(t=>{let r=basename(t.source,".md"),n={mode:"subagent"};return t.description&&(n.description=t.description),t.model&&(n.model=t.model),t.tools.length>0&&(n.tools=t.tools),t.disallowedTools.length>0&&(n.disallowedTools=t.disallowedTools),{path:`${Eo}/${r}.md`,content:x(n,t.body.trim()||"")}})}function J3(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 c$(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]=J3(n);return [{path:Et,content:JSON.stringify({mcp:t},null,2)}]}function m$(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:Et,content:JSON.stringify({permission:t},null,2)}]}function p$(e){return ae(e,Jr)}var rk=d(()=>{ie();U();js();s(i$,"generateRules");s(a$,"generateCommands");s(l$,"generateAgents");s(J3,"toOpenCodeMcpServer");s(c$,"generateMcp");s(m$,"generatePermissions");s(p$,"generateSkills");});function nk(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 X3(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:nk(a.headers),env:nk(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:nk(a.environment),...typeof a.description=="string"?{description:a.description}:{}};}}return n}async function Q3(e,t,r){let o=join(e,t==="global"?Yr:Et),i=await I(o);if(i===null)return;let a=X3(i);Object.keys(a).length!==0&&(await Xe(e,qS,a),r.push({feature:"mcp",fromTool:Vr,fromPath:o,toPath:qS}));}async function q3(e,t,r){let o=join(e,t==="global"?Yr:Et),i=await I(o);if(i===null)return;let a;try{a=JSON.parse(i);}catch{return}if(!a||typeof a!="object")return;let l=a.permission;if(!l||typeof l!="object"||Array.isArray(l))return;let c={allow:[],ask:[],deny:[]};for(let[p,u]of Object.entries(l))u==="allow"&&c.allow.push(p),u==="ask"&&c.ask.push(p),u==="deny"&&c.deny.push(p);if(c.allow.length+c.ask.length+c.deny.length===0)return;let m=join(e,ZS);await O(join(e,".agentsmesh")),await L(m,stringify(c)),r.push({feature:"permissions",fromTool:Vr,fromPath:o,toPath:ZS});}async function u$(e,t={}){let r=t.scope??"project",n=[],o=await H(Vr,e,r);return n.push(...await X(zg,e,r,{normalize:o})),await oe(e,Jr,Vr,n,o),await Q3(e,r,n),await q3(e,r,n),n}var d$=d(()=>{he();ie();Ae();Sn();b();b();js();ok();s(nk,"toStringRecord");s(X3,"parseOpenCodeMcp");s(Q3,"importMcp");s(q3,"importPermissions");s(u$,"importFromOpenCode");});var f$,g$,h$,y$=d(()=>{U();ue();js();f$=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${_u}/${e}`,content:await z(n,{root:false,description:typeof o.description=="string"?o.description:void 0,globs:Array.isArray(o.globs)?o.globs:void 0},i)}},"opencodeNonRootRuleMapper"),g$=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Jf}/${e}`,content:await Ee(n,{hasDescription:Object.prototype.hasOwnProperty.call(o,"description"),description:typeof o.description=="string"?o.description:void 0,hasAllowedTools:false,allowedTools:[]},i)}},"opencodeCommandMapper"),h$=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Yf}/${e}`,content:await xe(n,o,i)}},"opencodeAgentMapper");});function _$(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Vr}))}var S$=d(()=>{Oe();js();s(_$,"lintRules");});function R$(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 I$(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 k$=d(()=>{Ie();s(R$,"lintHooks");s(I$,"lintIgnore");});function C$(e,t,r){let n={};if(r.has("mcp")&&e.mcp){let o=c$(e)[0];o&&Object.assign(n,JSON.parse(o.content));}if(r.has("permissions")&&e.permissions){let o=m$(e)[0];o&&Object.assign(n,JSON.parse(o.content));}return Object.keys(n).length===0?[]:[{path:Et,content:JSON.stringify(n,null,2)}]}var L$,E$=d(()=>{Mu();js();rk();L$=s((e,t,r,n)=>{if(n!==Et&&n!==Yr)return null;let o=t?.content??e;return o===null?r:_g(o,r)},"mergeOpenCodeSettings");s(C$,"emitOpenCodeScopedSettings");});var O$,w$,ik,b$=d(()=>{dt();js();O$={rootInstructionPath:Dn,skillDir:Jr,managedOutputs:{dirs:[Lo,Co,Eo,Jr],files:[Dn,Et]},paths:{rulePath:s(e=>`${Lo}/${e}.md`,"rulePath"),commandPath:s(e=>`${Co}/${e}.md`,"commandPath"),agentPath:s(e=>`${Eo}/${e}.md`,"agentPath")}},w$={rootInstructionPath:Gs,skillDir:$s,managedOutputs:{dirs:[ea,ta,ra,$s,mA],files:[Gs,Yr]},rewriteGeneratedPath(e){return e===Dn?Gs:e===Et?Yr:e},mirrorGlobalPath(e,t){return ge(e,$s,t)},paths:{rulePath:s(e=>`${ea}/${e}.md`,"rulePath"),commandPath:s(e=>`${ta}/${e}.md`,"commandPath"),agentPath:s(e=>`${ra}/${e}.md`,"agentPath")}},ik={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"native"};});var Z3,zg,ok=d(()=>{rk();js();d$();y$();S$();k$();we();E$();b$();Z3={name:Vr,primaryRootInstructionPath:Dn,generateRules:i$,generateCommands:a$,generateAgents:l$,generateSkills:p$,importFrom:u$},zg={id:Vr,metadata:{displayName:"OpenCode",category:"cli",officialUrl:"https://opencode.ai",shortDescription:"Open-source terminal AI agent"},generators:Z3,capabilities:ik,emptyImportMessage:"No OpenCode config found (AGENTS.md, .opencode/rules, .opencode/commands, .opencode/agents, .opencode/skills, or opencode.json).",lintRules:_$,lint:{hooks:R$,ignore:I$},project:O$,globalSupport:{capabilities:ik,detectionPaths:[Gs,ea,ta,ra,$s,Yr],layout:w$},mergeGeneratedOutputContent:L$,emitScopedSettings:C$,importer:{rules:[{feature:"rules",mode:"singleFile",source:{project:[Dn],global:[Gs]},canonicalDir:_u,canonicalRootFilename:"_root.md",markAsRoot:true},{feature:"rules",mode:"directory",source:{project:[Lo],global:[ea]},canonicalDir:_u,extensions:[".md"],map:f$}],commands:{feature:"commands",mode:"directory",source:{project:[Co],global:[ta]},canonicalDir:Jf,extensions:[".md"],map:g$},agents:{feature:"agents",mode:"directory",source:{project:[Eo],global:[ra]},canonicalDir:Yf,extensions:[".md"],map:h$}},buildImportPaths:eR,detectionPaths:[Lo,Co,Eo,Jr,Et,"opencode.jsonc"]};});function A$(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:Xr,content:o}]:[]}function T$(e){return ae(e,Ft)}function x$(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${wo}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function P$(e){return e.agents.map(t=>({path:`${Ft}/${V(t.name)}/SKILL.md`,content:$e(t)}))}var D$=d(()=>{ie();Be();U();Se();em();s(A$,"generateRules");s(T$,"generateSkills");s(x$,"generateCommands");s(P$,"generateAgents");});async function N$(e,t={}){let r=t.scope??"project",n=[],o=await H(Oo,e,r);return n.push(...await X(Vg,e,r,{normalize:o})),await oe(e,r==="global"?Nn:Ft,Oo,n,o),n}var v$=d(()=>{he();ie();Ae();em();ak();s(N$,"importFromPiAgent");});function F$(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Oo}))}var M$=d(()=>{Oe();em();s(F$,"lintRules");});function G$(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 $$(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 j$(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 U$(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 B$=d(()=>{Ie();s(G$,"lintHooks");s($$,"lintPermissions");s(j$,"lintIgnore");s(U$,"lintMcp");});var e9,t9,r9,K$,Vg,ak=d(()=>{Se();D$();dt();v$();M$();B$();nR();em();e9={name:Oo,primaryRootInstructionPath:Xr,generateRules:A$,generateCommands:x$,generateAgents:P$,generateSkills:T$,importFrom:N$},t9={rootInstructionPath:Xr,skillDir:Ft,managedOutputs:{dirs:[Ft,wo],files:[Xr]},paths:{rulePath(e){return Xr},commandPath(e){return `${wo}/${e}.md`},agentPath(e){return `${Ft}/${V(e)}/SKILL.md`}}},r9={rootInstructionPath:Us,skillDir:Nn,managedOutputs:{dirs:[Nn,Rl],files:[Us]},rewriteGeneratedPath(e){return e===Xr?Us:e.startsWith(`${wo}/`)?e.replace(`${wo}/`,`${Rl}/`):e.startsWith(`${Ft}/`)?e.replace(`${Ft}/`,`${Nn}/`):e},mirrorGlobalPath(e,t){return ge(e,Nn,t)},paths:{rulePath(e){return Us},commandPath(e){return `${Rl}/${e}.md`},agentPath(e){return `${Nn}/${V(e)}/SKILL.md`}}},K$={rules:"native",additionalRules:"embedded",commands:"native",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"none",permissions:"none"},Vg={id:Oo,metadata:{displayName:"Pi Agent",category:"cli",officialUrl:"https://github.com/earendil-works/pi",shortDescription:"Pi coding agent"},generators:e9,capabilities:K$,emptyImportMessage:"No Pi Coding Agent config found (AGENTS.md or .pi/skills).",lintRules:F$,lint:{hooks:G$,permissions:$$,ignore:j$,mcp:U$},supportsConversion:{agents:true},project:t9,globalSupport:{capabilities:K$,detectionPaths:[Us],layout:r9},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Xr],global:[Us]},canonicalDir:uA,canonicalRootFilename:"_root.md",markAsRoot:true},commands:{feature:"commands",mode:"directory",source:{project:[wo],global:[Rl]},canonicalDir:dA,extensions:[".md"],preset:"command"}},sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:rR,detectionPaths:[Xr,Ft]};});function W$(e){let t=[],r=e.rules.find(o=>o.root);r&&t.push({path:fr,content:r.body.trim()?r.body:""});let n=e.rules.filter(o=>!o.root&&(o.targets.length===0||o.targets.includes(vn)));for(let o of n){let i=basename(o.source,".md"),a={};o.description&&(a.description=o.description),o.globs.length>0&&(a.globs=o.globs);let l=x(a,o.body.trim()||"");t.push({path:`${bo}/${i}.md`,content:l});}return t}function H$(e){return e.commands.map(t=>{let r={description:t.description,"allowed-tools":t.allowedTools.length>0?t.allowedTools:void 0};r["allowed-tools"]===void 0&&delete r["allowed-tools"];let n=x(r,t.body.trim()||"");return {path:`${Fn}/${t.name}.md`,content:n}})}function z$(e){return e.agents.map(t=>{let r={name:t.name,description:t.description,tools:t.tools.length>0?t.tools:void 0};Object.keys(r).forEach(o=>{r[o]===void 0&&delete r[o];});let n=x(r,t.body.trim()||"");return {path:`${Mn}/${t.name}.md`,content:n}})}function V$(e){let t=[];for(let r of e.skills){let n={name:r.name,description:r.description||void 0};n.description===void 0&&delete n.description;let o=x(n,r.body.trim()||"");t.push({path:`${gr}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${gr}/${r.name}/${a}`,content:i.content});}}return t}function J$(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:Qr,content:t}]}function Y$(e){return !e.ignore||e.ignore.length===0?[]:[{path:Bs,content:e.ignore.join(`
|
|
151
|
-
`)}]}function
|
|
152
|
-
`)}]}function Ej(e){return ae(e,Po)}function Oj(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:na,content:stringify({customModes:t})}]}function wj(e){return []}var bj=d(()=>{ie();U();El();s(Ij,"generateRules");s(kj,"generateCommands");s(Lj,"generateMcp");s(Cj,"generateIgnore");s(Ej,"generateSkills");s(Oj,"generateAgents");s(wj,"generatePermissions");});var Xg,Tj,mk=d(()=>{U();ue();El();Xg=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{if(e==="00-root.md")return null;let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Cl}/${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"),Tj=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Qf}/${e}`,content:await Ee(n,{hasDescription:true,description:typeof o.description=="string"?o.description:void 0,hasAllowedTools:false,allowedTools:[]},i)}},"rooCommandMapper");});async function _9(e,t,r){let n=join(e,na),o=await I(n);if(o===null)return;let i;try{i=parse(o);}catch{return}let a=i?.customModes;if(!Array.isArray(a))return;let l=join(e,lR);for(let c of a){if(!c||typeof c!="object")continue;let m=c,p=typeof m.slug=="string"&&m.slug?m.slug:typeof m.name=="string"&&m.name?m.name:null;if(!p)continue;let u=typeof m.name=="string"?m.name:p,f=typeof m.description=="string"?m.description:"",g=typeof m.roleDefinition=="string"?m.roleDefinition:"",h=join(l,`${p}.md`),y=await xe(h,{name:u,description:f,tools:[]},r(g,n,h));await O(dirname(h)),await L(h,y),t.push({fromTool:zs,fromPath:n,toPath:`${lR}/${p}.md`,feature:"agents"});}}async function S9(e,t,r){let n=join(e,kl),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,Cl);for(let l of i)t.push(...await Re({srcDir:join(n,l),destDir:a,extensions:[".md"],fromTool:zs,normalize:r,mapEntry:s(async({srcPath:c,relativePath:m,content:p,normalizeTo:u})=>{let f=await Xg({absolutePath:c,relativePath:m,content:p,destDir:a,normalizeTo:u});return f?{...f,feature:"rules"}:null},"mapEntry")}));}async function xj(e,t={}){let r=t.scope??"project",n=[],o=await H(zs,e,r);return n.push(...await X(Qg,e,r,{normalize:o})),await S9(e,n,o),r==="project"&&await _9(e,n,o),await oe(e,Po,zs,n,o),n}var Pj=d(()=>{he();b();ie();rr();Ae();ue();mk();El();pk();s(_9,"importRooModes");s(S9,"importPerModeRules");s(xj,"importFromRooCode");});function Dj(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:zs}))}var Nj=d(()=>{Oe();El();s(Dj,"lintRules");});function vj(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 Fj=d(()=>{Ie();s(vj,"lintPermissions");});function E9(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var L9,C9,O9,w9,b9,Qg,pk=d(()=>{b();bj();El();dt();Pj();mk();Nj();Fj();we();L9={name:"roo-code",primaryRootInstructionPath:$n,generateRules:Ij,generateCommands:kj,generateSkills:Ej,generateMcp:Lj,generateIgnore:Cj,generateAgents:Oj,generatePermissions:wj,importFrom:xj},C9={rootInstructionPath:$n,skillDir:".roo/skills",managedOutputs:{dirs:[".roo/rules",".roo/commands",".roo/skills"],files:[".roo/mcp.json",".rooignore",".roorules",na]},paths:{rulePath(e,t){return `${Vs}/${e}.md`},commandPath(e,t){return `${Js}/${e}.md`},agentPath(e,t){return null}}};s(E9,"computeStatus");O9=s(async(e,t,r,n)=>{if(r!=="global")return [];if(!n.has("agents")||e.agents.length===0)return [];let o=e.agents.map(l=>{let m={slug:basename(l.source,".md"),name:l.name};return l.description&&(m.description=l.description),l.body.trim()&&(m.roleDefinition=l.body.trim()),m}),i=stringify({customModes:o}),a=await I(join(t,ku));return [{target:"roo-code",path:ku,content:i,currentContent:a??void 0,status:E9(a,i)}]},"generateRooGlobalExtras"),w9={rootInstructionPath:ia,skillDir:Ys,managedOutputs:{dirs:[oa,sa,Ys,_A],files:[ia,Ll,Lu,ku]},rewriteGeneratedPath(e){return e===$n?ia:e===na?null:e.startsWith(`${Vs}/`)?e.replace(`${Vs}/`,`${oa}/`):e.startsWith(`${Js}/`)?e.replace(`${Js}/`,`${sa}/`):e.startsWith(`${Po}/`)?e.replace(`${Po}/`,`${Ys}/`):e===Ru?Ll:e===Iu?Lu:e},mirrorGlobalPath(e,t){return ge(e,Ys,t)},paths:{rulePath(e,t){return `${oa}/${e}.md`},commandPath(e,t){return `${sa}/${e}.md`},agentPath(e,t){return null}}},b9={rules:"native",additionalRules:"native",commands:"native",agents:"partial",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"partial"},Qg={id:"roo-code",metadata:{displayName:"Roo Code",category:"ide",officialUrl:"https://roocode.com",shortDescription:"Open-source AI VS Code extension"},generators:L9,capabilities:{rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"partial"},emptyImportMessage:"No Roo Code config found (.roo/rules, .roo/commands, .roo/skills, .roo/mcp.json, .rooignore, or .roorules).",lintRules:Dj,lint:{permissions:vj},project:C9,globalSupport:{capabilities:b9,detectionPaths:[oa,sa,Ys,Ll,Lu,ia,ku],layout:w9,scopeExtras:O9},importer:{rules:[{feature:"rules",mode:"singleFile",source:{project:[$n,Su],global:[ia,$n,Su]},canonicalDir:Cl,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:[Vs],global:[oa]},canonicalDir:Cl,extensions:[".md"],map:Xg}],commands:{feature:"commands",mode:"directory",source:{project:[Js],global:[sa]},canonicalDir:Qf,extensions:[".md"],map:Tj},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Ru],global:[Ll]},canonicalDir:".agentsmesh",canonicalFilename:SA},ignore:{feature:"ignore",mode:"flatFile",source:{project:[Iu],global:[Lu]},canonicalDir:".agentsmesh",canonicalFilename:RA}},buildImportPaths:cR,detectionPaths:[".roo/rules",".roo/commands",".roo/skills",".roo/mcp.json",".rooignore",".roorules",na]};});function Mj(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:qr,content:o}]:[]}function Gj(e){return ae(e,ut)}function $j(e){return e.commands.map(t=>({path:`${ut}/${q(t.name)}/SKILL.md`,content:Ye(t)}))}function jj(e){return e.agents.map(t=>({path:`${ut}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function Uj(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:Xs,content:t}]}var Bj=d(()=>{ie();Be();Se();Ge();Ol();s(Mj,"generateRules");s(Gj,"generateSkills");s($j,"generateCommands");s(jj,"generateAgents");s(Uj,"generateMcp");});async function Kj(e,t={}){let r=t.scope??"project",n=[],o=await H(Do,e,r);return n.push(...await X(qg,e,r,{normalize:o})),await oe(e,r==="global"?hr:ut,Do,n,o),n}var Wj=d(()=>{he();ie();Ae();Ol();uk();s(Kj,"importFromRovodev");});function Hj(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Do}))}var zj=d(()=>{Oe();Ol();s(Hj,"lintRules");});function Vj(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 Jj=d(()=>{Ie();s(Vj,"lintIgnore");});function Qj(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:Cu,content:stringify(r)}]}function qj(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 Zj=d(()=>{Ol();s(Qj,"buildRovodevConfig");s(qj,"mergeRovodevConfig");});var A9,T9,x9,P9,D9,qg,uk=d(()=>{Ge();Se();Bj();dt();Wj();zj();Jj();Zj();we();Ol();A9={name:Do,primaryRootInstructionPath:qr,generateRules:Mj,generateCommands:$j,generateAgents:jj,generateSkills:Gj,generateMcp:Uj,importFrom:Kj},T9={rootInstructionPath:qr,skillDir:ut,managedOutputs:{dirs:[ut],files:[qr,Xs]},paths:{rulePath(e){return qr},commandPath(e){return `${ut}/${q(e)}/SKILL.md`},agentPath(e){return `${ut}/${V(e)}/SKILL.md`}}},x9={rootInstructionPath:Qs,skillDir:hr,managedOutputs:{dirs:[hr],files:[Qs,rm,Cu]},rewriteGeneratedPath(e){return e===qr?Qs:e.startsWith(`${ut}/`)?e.replace(`${ut}/`,`${hr}/`):e===Xs?rm:e},mirrorGlobalPath(e,t){return ge(e,hr,t)},paths:{rulePath(e){return Qs},commandPath(e){return `${hr}/${q(e)}/SKILL.md`},agentPath(e){return `${hr}/${V(e)}/SKILL.md`}}},P9={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},D9={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"native"},qg={id:Do,metadata:{displayName:"Rovo Dev",category:"cli",officialUrl:"https://www.atlassian.com/solutions/devops/rovo-dev",shortDescription:"Atlassian's coding agent"},generators:A9,capabilities:P9,emptyImportMessage:"No Rovo Dev config found (AGENTS.md, .rovodev/skills, or .rovodev/mcp.json).",lintRules:Hj,lint:{ignore:Vj},supportsConversion:{commands:true,agents:true},project:T9,globalSupport:{capabilities:D9,detectionPaths:[LA,Qs,hr],layout:x9},emitScopedSettings(e,t,r){return t!=="global"?[]:Qj(e,r)},mergeGeneratedOutputContent(e,t,r,n){return n!==Cu?null:qj(e,r)},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[qr],global:[Qs]},canonicalDir:CA,canonicalRootFilename:"_root.md",markAsRoot:true},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Xs],global:[rm]},canonicalDir:".agentsmesh",canonicalFilename:"mcp.json"}},buildImportPaths:mR,detectionPaths:[qr,ut,Xs]};});function e0(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:_r,content:r.body.trim()});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(Zr))continue;let o=basename(n.source,".md");t.push({path:`${yr}/${o}.md`,content:n.body.trim()});}return t}function t0(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${aa}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function r0(e){return ae(e,en)}function n0(e){return e.mcp===null||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:wl,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function o0(e){return e.ignore.length===0?[]:[{path:nm,content:e.ignore.join(`
|
|
153
|
-
`)}]}var
|
|
154
|
-
`)}]}var
|
|
155
|
-
`)),n.push({fromTool:"windsurf",fromPath:p,toPath:yk,feature:"ignore"});}}return await U0(e,n,o),await K0(e,n,o),await z0(e,n),await V0(e,n),n}var X0=d(()=>{he();b();U();ue();rr();Np();Mt();B0();W0();J0();s(Y0,"importFromWindsurf");});function Q0(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:zo,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:zo,message:`Windsurf cannot project these features yet: ${i.join(", ")}.`}),n}var q0=d(()=>{Mt();s(Q0,"lintRules");});function Z0(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 eU(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 tU=d(()=>{Ie();s(Z0,"lintCommands");s(eU,"lintMcp");});function i4(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 a4,l4,c4,m4,rU,nU=d(()=>{$0();$a();Mt();dt();X0();q0();tU();we();bp();Se();s(i4,"directoryScopedRuleDir");a4={name:"windsurf",primaryRootInstructionPath:Vo,generateRules:Rk,generateCommands:kk,generateAgents:Lk,generateSkills:Ok,generateMcp:Ck,generateHooks:Ek,generateIgnore:Ik,importFrom:Y0},l4={rootInstructionPath:Vo,extraRuleOutputPaths(e){if(e.root)return [Vo];let t=i4(e.globs);return t!==null?[`${t}/AGENTS.md`]:[]},skillDir:Hn,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 `${ya}/${e}.md`},commandPath(e,t){return `${_a}/${e}.md`},agentPath(e,t){return cs(t,"windsurf")?`.windsurf/skills/${V(e)}/SKILL.md`:null}}},c4={rootInstructionPath:wm,skillDir:bm,managedOutputs:{dirs:[bm,Bu,T0],files:[wm,th,rh,nh]},rewriteGeneratedPath(e){return e===Vo?wm:e.startsWith(`${ya}/`)||/\/AGENTS\.md$/.test(e)?null:e.startsWith(`${Hn}/`)?e.replace(`${Hn}/`,`${bm}/`):e.startsWith(`${_a}/`)?e.replace(`${_a}/`,`${Bu}/`):e===Cm?th:e===Em?rh:e===Lm?nh:e},mirrorGlobalPath(e,t){return ge(e,".codeium/windsurf/skills",t)},paths:{rulePath(e,t){return wm},commandPath(e,t){return `${Bu}/${e}.md`},agentPath(e,t){return cs(t,"windsurf")?`${bm}/${V(e)}/SKILL.md`:null}}},m4={rules:"native",additionalRules:"partial",commands:gn("native","workflows"),agents:"embedded",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},rU={id:"windsurf",metadata:{displayName:"Windsurf",category:"ide",officialUrl:"https://windsurf.com",shortDescription:"Codeium's agentic IDE"},generators:a4,capabilities:{rules:"native",additionalRules:"native",commands:gn("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:Q0,lint:{commands:Z0,mcp:eU},project:l4,globalSupport:{capabilities:m4,detectionPaths:[wm,bm,Bu,th,rh,nh],layout:c4},buildImportPaths:fR,detectionPaths:[".windsurfrules",".windsurf"],nativeInstall:{pickPaths:[{prefix:".windsurf/rules",feature:"rules",strategy:{kind:"basename",suffix:".md"}}],dialectHints:[{frontmatterKey:"trigger"}]},conversionDefaults:{agentsToSkills:true}};});function oU(e){return ae(e,Fo)}function sU(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:Bn,content:o}]:[]}var iU=d(()=>{ie();Be();bl();s(oU,"generateSkills");s(sU,"generateRules");});async function lU(e,t,r){let n=await I(join(e,t));if(n===null)return;let o;try{o=JSON.parse(n);}catch{return}if(o===null||typeof o!="object"||Array.isArray(o))return;let a=o.context_servers;if(a==null||typeof a!="object"||Array.isArray(a)||Object.keys(a).length===0)return;let l={};for(let[c,m]of Object.entries(a)){if(!m||typeof m!="object"||Array.isArray(m))continue;let p={...m};delete p.source,l[c]=p;}Object.keys(l).length!==0&&(await Xe(e,aU,l),r.push({fromTool:"zed",fromPath:t,toPath:aU,feature:"mcp"}));}var aU,cU=d(()=>{b();Sn();bl();aU=".agentsmesh/mcp.json";s(lU,"importZedMcp");});async function mU(e,t={}){let r=t.scope??"project",n=[],o=await H("zed",e,r);return n.push(...await X(sh,e,r,{normalize:o})),r==="project"&&await oe(e,Fo,"zed",n,o),await lU(e,r==="global"?Mo:vo,n),n}var pU=d(()=>{he();ie();Ae();cU();bl();bk();s(mU,"importFromZed");});function uU(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:"zed"}))}var dU=d(()=>{Oe();bl();s(uU,"lintRules");});function fU(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 gU(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];return t.length===0&&r.length===0&&n.length===0?[]:[F(".agentsmesh/permissions.yaml","zed","Zed permissions are managed via agent.tool_permissions in settings.json; canonical permissions are not projected.")]}function hU(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 yU=d(()=>{Ie();s(fU,"lintHooks");s(gU,"lintPermissions");s(hU,"lintIgnore");});function y4(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 u4,d4,f4,g4,h4,sh,bk=d(()=>{iU();pU();dU();yU();we();bl();u4={name:"zed",primaryRootInstructionPath:Bn,generateRules:sU,generateSkills:oU,importFrom:mU},d4={rootInstructionPath:Bn,skillDir:Fo,managedOutputs:{dirs:[Fo],files:[Bn,vo]},paths:{rulePath(e){return Bn},commandPath(){return null},agentPath(){return null}}},f4={rootInstructionPath:void 0,managedOutputs:{dirs:[],files:[Mo]},rewriteGeneratedPath(e){return e===vo?Mo:e},paths:{rulePath(){return Mo},commandPath(){return null},agentPath(){return null}}},g4={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},h4={rules:"none",additionalRules:"none",commands:"none",agents:"none",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"};s(y4,"mergeZedSettings");sh={id:"zed",metadata:{displayName:"Zed",category:"ide",officialUrl:"https://zed.dev",shortDescription:"Collaborative AI editor"},generators:u4,capabilities:g4,emptyImportMessage:"No Zed config found (.rules or .zed/settings.json).",lintRules:uU,lint:{hooks:fU,permissions:gU,ignore:hU},project:d4,globalSupport:{capabilities:h4,detectionPaths:[Mo],layout:f4},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Bn],global:[]},canonicalDir:NA,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:vo,content:JSON.stringify({context_servers:n},null,2)}]},mergeGeneratedOutputContent(e,t,r,n){return n===vo||n===Mo?y4(e,r):null},sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:gR,detectionPaths:[Bn,vo]};});var ib={};s_(ib,{BUILTIN_TARGETS:()=>De,TARGET_IDS:()=>Ue,getBuiltinTargetDefinition:()=>on,getEffectiveTargetSupportLevel:()=>ih,getTargetCapabilities:()=>pi,getTargetDetectionPaths:()=>Tk,getTargetLayout:()=>We,getTargetManagedOutputs:()=>xk,getTargetPrimaryRootInstructionPath:()=>R4,getTargetSkillDir:()=>Ku,isBuiltinTargetId:()=>Bt,resolveTargetFeatureGenerator:()=>Am,rewriteGeneratedOutputPath:()=>Pk});function S4(){return Ak||(UO(De),Ak=new Map(De.map(e=>[e.id,e]))),Ak}function on(e){return S4().get(e)}function pi(e,t="project"){let r=on(e)??ne(e);if(!r)return;if(t==="global"&&!r.globalSupport)return N_(_4);let n=t==="global"?r.globalSupport.capabilities:r.capabilities;return N_(n)}function Tk(e,t="project"){let r=on(e)??ne(e);return r?t==="global"?r.globalSupport?.detectionPaths??[]:r.detectionPaths:[]}function We(e,t="project"){let r=on(e)??ne(e);if(r)return t==="global"?r.globalSupport?.layout:r.project}function R4(e,t="project"){return We(e,t)?.rootInstructionPath}function Ku(e,t="project"){return We(e,t)?.skillDir}function xk(e,t="project"){return We(e,t)?.managedOutputs}function Pk(e,t,r="project"){let n=We(e,r);return n?n.rewriteGeneratedPath?n.rewriteGeneratedPath(t):t:null}function _U(e,t,r,n){if(!e||!r)return false;let o=pi(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?!cs(r,e.id,true,n):false}function I4(e,t,r,n){return !e||!r?false:t==="commands"&&e.supportsConversion?.commands?Ic(r,e.id,true,n):t==="agents"&&e.supportsConversion?.agents?cs(r,e.id,true,n):false}function ih(e,t,r,n="project"){let o=pi(e,n)?.[t]?.level??"none",i=on(e)??ne(e);return n==="global"&&i&&!i.globalSupport?"none":o==="none"&&I4(i,t,r,n)?"embedded":o!=="embedded"?o:_U(i,t,r,n)?"none":o}function Am(e,t,r,n="project"){let o=on(e)??ne(e);if(!o?.generators||_U(o,t,r,n))return;let i=k4[t];return i===null?void 0:i(o.generators)}var _4,De,Ak,k4,Te=d(()=>{bp();$a();rt();v_();cn();eS();hR();yR();SR();lx();LR();IP();hD();YR();rI();iI();LI();CI();EI();WI();zI();VI();JI();ZI();tk();ok();ak();lk();ck();pk();uk();dk();fk();nU();bk();_4={rules:"none",additionalRules:"none",commands:"none",agents:"none",skills:"none",mcp:"none",hooks:"none",ignore:"none",permissions:"none"},De=[Ef,qf,Zf,eg,ax,tg,RP,gD,lg,fg,yg,wg,bg,Ag,Mg,Gg,$g,jg,Kg,Wg,zg,Vg,Jg,Yg,Qg,qg,Zg,eh,rU,sh];s(S4,"builtinTargetsMap");s(on,"getBuiltinTargetDefinition");s(pi,"getTargetCapabilities");s(Tk,"getTargetDetectionPaths");s(We,"getTargetLayout");s(R4,"getTargetPrimaryRootInstructionPath");s(Ku,"getTargetSkillDir");s(xk,"getTargetManagedOutputs");s(Pk,"rewriteGeneratedOutputPath");s(_U,"isFeatureSuppressedByConversion");s(I4,"isConversionUpgrading");s(ih,"getEffectiveTargetSupportLevel");k4={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(Am,"resolveTargetFeatureGenerator");});function E4(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 ah(e){let t=[];for(let n of De){let o=0,i=0;for(let a of n.detectionPaths){if(!await j(join(e,a)))continue;let l=C4.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(E4);let r=t[0];return r.uniqueHits===0?null:r.id}var C4,SU,Dk=d(()=>{b();Te();C4=(()=>{let e=new Map;for(let t of De)for(let r of t.detectionPaths)e.set(r,(e.get(r)??0)+1);return e})();s(E4,"compare");s(ah,"detectNativeFormat");SU=De.map(e=>e.detectionPaths[0]).filter(e=>e!==void 0);});async function Wu(e,t){let r=ne(t);if(!r)throw new Error(`No importer registered for native target: ${t}`);return r.generators.importFrom(e)}var Nk=d(()=>{rt();s(Wu,"importNativeToCanonical");});async function Bl(e){if(!await j(e))return false;if(await j(join(e,Fk)))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,Fk)))return !0}catch{return false}return false}async function Hu(e,t={}){if(!await j(e))return [];if(await j(join(e,Fk))){let r=await sf(e,t);return r?[r]:[]}return Ai(e,t)}var Fk,lh=d(()=>{b();_c();Fk="SKILL.md";s(Bl,"isSkillPackLayout");s(Hu,"loadSkillsAtExtendPath");});async function ch(e,t={}){return (await bi(e,t)).filter(n=>!qn(basename(n.source)))}async function mh(e,t={}){return (await wi(e,t)).filter(n=>!qn(basename(n.source)))}async function ph(e,t={}){return (await Oi(e,t)).filter(n=>!qn(basename(n.source)))}async function RU(e,t={}){return Ai(e,t)}var uh=d(()=>{Op();Ep();Cp();_c();ss();s(ch,"importAgents");s(mh,"importCommands");s(ph,"importRules");s(RU,"importSkills");});function Gk(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 $k(e){return e.toLowerCase().endsWith(".md")}function kU(e,t){for(let r of Gk(ne(e)?.importer,t))if(r.extensions.some(n=>!$k(n)))return true;return false}function D4(e,t){let r=new Set;for(let n of Gk(ne(e)?.importer,t))for(let o of n.extensions)$k(o)||r.add(o.toLowerCase());return r}function N4(e){return ff().filter(t=>kU(t,e))}async function M4(e,t,r){return v4[e](t,r)}async function G4(e,t,r){return F4[e](t,r)}async function $4(e,t,r,n={}){let o=Gk(ne(t)?.importer,r),i=await B(e),a=new Set;for(let p of o)for(let u of p.extensions)$k(u)||a.add(u.toLowerCase());let l=i.filter(p=>[...a].some(u=>p.toLowerCase().endsWith(u))&&!qn(basename(p)));if(l.length===0)return {entities:[],cleanup:s(async()=>{},"cleanup")};let c=await mkdtemp(join(tmpdir(),`am-tool-${r}-${t}-`)),m=s(async()=>{await rm$1(c,{recursive:true,force:true});},"cleanup");try{for(let u of l){let f=await I(u);if(f===null)continue;let g=relative(e,u).replaceAll("\\","/"),h=null;for(let y of o){if(!y.extensions.some(k=>u.toLowerCase().endsWith(k.toLowerCase())))continue;let R=await y.map({absolutePath:u,relativePath:g,content:f,destDir:c,normalizeTo:s(()=>f,"normalizeTo")});if(R){h=R;break}}h&&(await O(dirname(h.destPath)),await L(h.destPath,h.content));}return {entities:await M4(r,c,n),cleanup:m}}catch(p){throw await m(),p}}async function jk(e,t,r={}){let n=r.restrictToTarget,o=n?kU(n,t)?[n]:[]:N4(t),i=new Set;for(let f of o)for(let g of D4(f,t))i.add(g);let a=await G4(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 $4(e,f,t,r.parseOpts??{});l.push(g.cleanup);for(let h of g.entities){let y=c(h);m.has(y)||m.set(y,h);}}return {entities:[...m.values()].sort((f,g)=>c(f).localeCompare(c(g))),cleanup:s(async()=>{await Promise.allSettled(l.map(f=>f()));},"cleanup")}}async function dh(e,t={}){let r=await jk(e,"commands",t);return {commands:[...r.entities],cleanup:r.cleanup}}async function fh(e,t={}){let r=await jk(e,"rules",t);return {rules:[...r.entities],cleanup:r.cleanup}}async function gh(e,t={}){let r=await jk(e,"agents",t);return {agents:[...r.entities],cleanup:r.cleanup}}var v4,F4,hh=d(()=>{Op();Ep();Cp();b();rt();ss();uh();s(Gk,"directorySpecsFor");s($k,"isMarkdownExtension");s(kU,"hasNonMdEntityMapper");s(D4,"nonMdEntityExtensions");s(N4,"targetsWithNonMdEntityMapper");v4={rules:Oi,commands:wi,agents:bi},F4={rules:ph,commands:mh,agents:ch};s(M4,"parseEntityDir");s(G4,"importEntities");s($4,"readToolNativeEntities");s(jk,"readEntityDirWithMappers");s(dh,"readCommandsDirWithMappers");s(fh,"readRulesDirWithMappers");s(gh,"readAgentsDirWithMappers");});function B4(){return {rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}function K4(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 yh(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 Kk(e,t){if(basename(e)===t)return e;let r=join(e,t);return await j(r)?r:null}async function W4(e,t,r){let n=s(async()=>{},"noop"),o=await Kk(e,"rules");if(!o)return {rules:[],cleanup:n};if(!r)return {rules:await ph(o,t),cleanup:n};let i=await fh(o,{parseOpts:t});return {rules:[...i.rules],cleanup:i.cleanup}}async function H4(e,t,r){let n=s(async()=>{},"noop"),o=await Kk(e,"commands");if(!o)return {commands:[],cleanup:n};if(!r)return {commands:await mh(o,t),cleanup:n};let i=await dh(o,{parseOpts:t});return {commands:[...i.commands],cleanup:i.cleanup}}async function z4(e,t,r){let n=s(async()=>{},"noop"),o=await Kk(e,"agents");if(!o)return {agents:[],cleanup:n};if(!r)return {agents:await ch(o,t),cleanup:n};let i=await gh(o,{parseOpts:t});return {agents:[...i.agents],cleanup:i.cleanup}}async function V4(e,t){if(await Bl(e))return Hu(e,t);let r=join(e,"skills");return await Bl(r)?Hu(r,t):[]}async function _h(e,t={}){let r=s(async()=>{},"noop"),n=join(e,".agentsmesh");if(await j(n))return {canonical:await Kt(e,t),cleanup:r};let o=t.enableTargetEntityMappers??false,i=B4(),a=await W4(e,t,o);i.rules=a.rules;let l=await H4(e,t,o);i.commands=l.commands;let c=await z4(e,t,o);i.agents=c.agents,i.skills=await V4(e,t);let m=s(async()=>{await Promise.allSettled([a.cleanup(),l.cleanup(),c.cleanup()]);},"mergedCleanup");if(K4(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 Wk=d(()=>{b();uh();hh();Ga();lh();s(B4,"emptyCanonical");s(K4,"isCanonicalSliceEmpty");s(yh,"normalizeSlicePath");s(Kk,"resolveEntityDir");s(W4,"parseRulesAt");s(H4,"parseCommandsAt");s(z4,"parseAgentsAt");s(V4,"loadSkillsForPartialSlice");s(_h,"loadCanonicalSliceAtPath");});async function Sh(e){let t=await I(e);if(!t)return "";let r=mn(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 LU(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 !(bO(o)||!n.includes("/")&&(nf(n)||AO(n)))},"filter")});}var Hk=d(()=>{b();U();ss();s(Sh,"readSkillFrontmatterName");s(LU,"cpFilteredSkill");});function zk(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):typeof e=="string"?e?[e]:[]:[]}function X4(e){let t={...e},r=e.alwaysApply===true;if(t.root=r,delete t.alwaysApply,!r){let n=zk(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 Q4(e){let t={...e};return t.trigger==="always"&&(t.trigger="always_on"),typeof t.glob=="string"&&(t.globs=zk(t.globs).length>0?zk(t.globs):[t.glob],delete t.glob),t}function Vk(e){let t=mn(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=X4(r):"trigger"in r||"glob"in r?o=Q4(r):o=r,x(o,n.trim())}var CU=d(()=>{U();s(zk,"toStrArray");s(X4,"normalizeCursorKeys");s(Q4,"normalizeWindsurfKeys");s(Vk,"normalizeMdcToCanonical");});function Jk(e){return e.toLowerCase().replace(/[^a-z0-9.-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}function Yk(e){return e.toLowerCase().endsWith(".mdc")?basename(e).replace(/\.mdc$/i,".md"):basename(e)}function OU(e,t,r){let o=relative(e,t).replace(/\\/g,"/").split("/");if(o.pop(),o.length===0)return r;let i=Jk(o[o.length-1]);return i?`${i}-${r}`:r}var wU=d(()=>{s(Jk,"sanitizeNameSegment");s(Yk,"computeDestName");s(OU,"namespacedName");});async function r6(){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 xU(e,t){let r=e.toLowerCase();return !!(r.endsWith(".md")||t&&r.endsWith(".mdc"))}async function n6(e,t,r){if(!xU(e,r))throw new Error(`Manual install only supports .md files for this collection: ${e}`);if(await O(t),e.toLowerCase().endsWith(".mdc")){let n=await I(e);if(!n)return;let o=basename(e).replace(/\.mdc$/i,".md");await writeFile(join(t,o),Vk(n));}else await cp$1(e,join(t,basename(e)));}async function o6(e,t,r){if((await stat(e)).isFile())return n6(e,t,r);let o=(await B(e)).filter(l=>xU(l,r)&&!qn(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=Yk(l);i.set(c,(i.get(c)??0)+1);}let a=new Map;await O(t);for(let l of o){let c=Yk(l),p=(i.get(c)??0)>1?OU(e,l,c):c;if(a.has(p)&&a.get(p)!==l){let f=relative(e,l).replace(/\\/g,"/").split("/").map(Jk).filter(Boolean),g=c.includes(".")?"."+c.split(".").pop():"";p=f.join("-").replace(/\.(md|mdc)$/i,"")+g||p;}if(a.has(p))throw new Error(`Manual install could not resolve duplicate name "${p}" under ${e} (${a.get(p)} and ${l}).`);if(a.set(p,l),l.toLowerCase().endsWith(".mdc")){let f=await I(l);if(!f)continue;await writeFile(join(t,p),Vk(f));}else await cp$1(l,join(t,p));}}async function bU(e,t,r){if(r.length===0)return false;let n=new Set(r),o=new Map;for(let i of await B(e)){if(!i.endsWith("/SKILL.md")&&!i.endsWith("\\SKILL.md"))continue;let a=dirname(i),l=basename(a);if(!n.has(l))continue;let c=o.get(l);if(c&&c!==a)throw new Error(`Manual skill replay found duplicate skill "${l}" under ${e} (${c} and ${a}).`);o.set(l,a);}if(o.size!==r.length)return false;await O(t);for(let i of r)await cp$1(o.get(i),join(t,i),{recursive:true});return true}async function s6(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 Bl(e)){if((await stat(join(e,"SKILL.md")).catch(()=>null))?.isFile()){if(await bU(e,t,r.preferredSkillNames??[]))return;let l=await Sh(join(e,"SKILL.md"))||basename(e),c=join(t,l);await O(t),await LU(e,c);return}if(await bU(e,t,r.preferredSkillNames??[]))return;await O(t);let o=await B(e),i=new Set;for(let a of o.filter(l=>l.endsWith("/SKILL.md")||l.endsWith("\\SKILL.md")))i.add(relative(e,dirname(a)).split(/[\\/]/)[0]);for(let a of i)await cp$1(join(e,a),join(t,a),{recursive:true});return}throw new Error(`Manual skill install expects a skill directory or skills collection at ${e}.`)}async function Ih(e,t,r={}){let n=await r6();try{let o=join(n.discoveryRoot,".agentsmesh",t);return t==="skills"?await s6(e,o,r):await o6(e,o,t==="rules"),n}catch(o){throw await n.cleanup(),o}}var Qk=d(()=>{b();lh();Hk();ss();CU();wU();s(r6,"createStageRoot");s(xU,"isAcceptedFile");s(n6,"stageSingleFile");s(o6,"stageMarkdownCollection");s(bU,"stagePreferredSkills");s(s6,"stageSkills");s(Ih,"stageManualInstallScope");});function i6(){return {rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}async function PU(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 Ih(o,e.as);try{return Kt(join(i.discoveryRoot,".agentsmesh"))}finally{await i.cleanup();}}if(!e.path){let o=join(t,".agentsmesh");if(!await j(o)){if(await Bl(t)){let a=await Hu(t);return {...i6(),skills:a}}let i=e.target??await ah(t);if(!i)throw new Error(`Extend "${e.name}": No supported agent configuration found in ${t}.
|
|
156
|
-
Expected one of: .agentsmesh/, ${
|
|
149
|
+
${f}`:u,h={};p&&(h.description=p),typeof l.name=="string"&&l.name.length>0&&(h.name=l.name);let y=await xe(m,h,g),_=r(y,n,m);await L(m,_),t.push({feature:"agents",fromTool:Nt,fromPath:n,toPath:`${yl}/${c}.md`});}}async function AG(e,t={}){let r=t.scope??"project",n=[],o=await H(Nt,e,r);return n.push(...await X(Wg,e,r,{normalize:o})),await oe(e,zr,Nt,n,o),r==="project"&&(await P3(e,n,o),await D3(e,n,o),await N3(e,n,o),await oe(e,gl,Nt,n,o)),n}var ek,tk,TG=d(()=>{he();ie();rr();Ae();b();de();U();ZI();Ms();rk();ek=`${Qi}/_root.md`,tk="00-root.md";s(bG,"pathExists");s(P3,"importLegacyRules");s(D3,"importLegacyWorkflows");s(N3,"importLegacyModes");s(AG,"importFromKiloCode");});function xG(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Nt}))}var PG=d(()=>{Oe();Ms();s(xG,"lintRules");});function DG(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 NG=d(()=>{Ie();s(DG,"lintHooks");});var vG,FG=d(()=>{Ms();vG=s((e,t,r,n)=>{if(n!==ul&&n!==pu)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 MG,GG,$G,jG,UG=d(()=>{Ms();dt();MG={rootInstructionPath:bn,skillDir:zr,managedOutputs:{dirs:[Ro,Io,ko,zr],files:[bn,Ns,dl,ul]},paths:{rulePath(e,t){return `${Ro}/${e}.md`},commandPath(e,t){return `${Io}/${e}.md`},agentPath(e,t){return `${ko}/${e}.md`}}},GG={rootInstructionPath:vs,skillDir:Fs,managedOutputs:{dirs:[Ji,Yi,Xi,Fs,nA],files:[vs,hl,fu,pu]},rewriteGeneratedPath(e){return e===bn?vs:e===ul?pu:e},mirrorGlobalPath(e,t){return ge(e,Fs,t)},paths:{rulePath(e,t){return `${Ji}/${e}.md`},commandPath(e,t){return `${Yi}/${e}.md`},agentPath(e,t){return `${Xi}/${e}.md`}}},$G={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"native"},jG={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"native"};});var v3,Wg,rk=d(()=>{OG();Ms();TG();ZI();PG();NG();we();FG();UG();v3={name:Nt,primaryRootInstructionPath:bn,generateRules:SG,generateCommands:RG,generateAgents:IG,generateSkills:EG,generateMcp:kG,generateIgnore:LG,generatePermissions:CG,importFrom:AG},Wg={id:Nt,metadata:{displayName:"Kilo Code",category:"ide",officialUrl:"https://kilocode.ai",shortDescription:"Open-source AI coding agent for VS Code"},generators:v3,capabilities:$G,emptyImportMessage:"No Kilo Code config found (AGENTS.md, .kilo/rules, .kilo/commands, .kilo/agents, .kilo/skills, .kilo/mcp.json, .kilocodeignore, .kilocode/, or .kilocodemodes).",lintRules:xG,lint:{hooks:DG},mergeGeneratedOutputContent:vG,project:MG,globalSupport:{capabilities:jG,detectionPaths:[vs,Ji,Yi,Xi,Fs,hl,fu],layout:GG},importer:{rules:[{feature:"rules",mode:"singleFile",source:{project:[bn],global:[vs]},canonicalDir:Qi,canonicalRootFilename:"_root.md",markAsRoot:true},{feature:"rules",mode:"directory",source:{project:[Ro],global:[Ji]},canonicalDir:Qi,extensions:[".md"],map:Bg}],commands:{feature:"commands",mode:"directory",source:{project:[Io],global:[Yi]},canonicalDir:Yc,extensions:[".md"],map:Kg},agents:{feature:"agents",mode:"directory",source:{project:[ko],global:[Xi]},canonicalDir:yl,extensions:[".md"],map:wG},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Ns,du],global:[hl]},canonicalDir:".agentsmesh",canonicalFilename:oA},ignore:{feature:"ignore",mode:"flatFile",source:{project:[dl],global:[fu]},canonicalDir:".agentsmesh",canonicalFilename:sA}},buildImportPaths:XS,detectionPaths:[Ro,Io,ko,zr,Ns,fl,Vc,gl,du,Vf,dl,"kilo.jsonc","kilo.json"]};});function BG(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/_/g,"-").toLowerCase()}function G3(e){return e.type==="prompt"?e.prompt:e.command}function $3(e,t){let r=KG[e];return e==="PreToolUse"||e==="PostToolUse"?{type:r,tools:[t||"*"]}:{type:r}}function WG(e){let t=[];for(let[r,n]of Object.entries(e)){let o=r;if(!(o in KG)||!Array.isArray(n))continue;let i=1;for(let a of n){let l=G3(a);if(!l)continue;let c={name:`${BG(r)} ${i}`,version:"1",when:$3(o,a.matcher),then:a.type==="prompt"?{type:"askAgent",prompt:l}:{type:"shellCommand",command:l}};t.push({name:`${BG(r)}-${i}.kiro.hook`,content:JSON.stringify(c,null,2)}),i+=1;}}return t}function j3(e){let t=M3.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 HG(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:j3(r)}function zG(e){return stringify(e).trimEnd()}var KG,M3,nk=d(()=>{KG={UserPromptSubmit:"promptSubmit",SubagentStop:"agentStop",PreToolUse:"preToolUse",PostToolUse:"postToolUse"},M3=new Map([["promptSubmit","UserPromptSubmit"],["agentStop","SubagentStop"],["preToolUse","PreToolUse"],["postToolUse","PostToolUse"]]);s(BG,"toKebab");s(G3,"hookText");s($3,"toWhen");s(WG,"generateKiroHooks");s(j3,"toCanonicalEntry");s(HG,"parseKiroHookFile");s(zG,"serializeCanonicalHooks");});function B3(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 VG(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:An,content:r.body.trim()||""});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(dr))continue;let o=basename(n.source,".md");t.push({path:`${Tn}/${o}.md`,content:x(B3(n),n.body.trim()||"")});}return t}function JG(e){return e.commands.map(t=>({path:`${vt}/${Z(t.name)}/SKILL.md`,content:Ye(t)}))}function YG(e){return ae(e,vt)}function XG(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Xc,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function QG(e){return !e.hooks||Object.keys(e.hooks).length===0?[]:WG(e.hooks).map(t=>({path:`${qi}/${t.name}`,content:t.content}))}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,model:t.model||void 0};Object.keys(r).forEach(o=>{r[o]===void 0&&delete r[o];});let n=x(r,t.body.trim()||"");return {path:`${xn}/${t.name}.md`,content:n}})}function ZG(e){return e.ignore.length===0?[]:[{path:Qc,content:e.ignore.join(`
|
|
150
|
+
`)}]}var e$=d(()=>{ie();Ge();U();nk();qc();s(B3,"steeringFrontmatter");s(VG,"generateRules");s(JG,"generateCommands");s(YG,"generateSkills");s(XG,"generateMcp");s(QG,"generateHooks");s(qG,"generateAgents");s(ZG,"generateIgnore");});function W3(e){let t=typeof e.inclusion=="string"?e.inclusion:"",r={root:false,description:typeof e.description=="string"?e.description:void 0,globs:us(e.fileMatchPattern)};return t==="manual"&&(r.trigger="manual"),t==="auto"&&(r.trigger="model_decision"),t==="fileMatch"&&(r.trigger="glob"),r}async function H3(e,t,r,n){let o=n==="global"?[Pn,An]:[An,Pn];for(let i of o){let a=join(e,i),l=await I(a);if(l===null)continue;let c=join(e,QS),{frontmatter:m,body:p}=T(r(l,a,c));await L(c,await z(c,{...m,root:true},p)),t.push({fromTool:dr,fromPath:a,toPath:QS,feature:"rules"});return}}async function z3(e,t,r){let n=join(e,qS);t.push(...await Re({srcDir:join(e,Tn),destDir:n,extensions:[".md"],fromTool:dr,normalize:r,mapEntry:s(async({relativePath:o,normalizeTo:i})=>{if(basename(o)==="AGENTS.md")return null;let a=join(n,o),{frontmatter:l,body:c}=T(i(a));return {destPath:a,toPath:`${qS}/${o}`,feature:"rules",content:await z(a,W3(l),c)}},"mapEntry")}));}async function V3(e,t){let r={};for(let o of await B(join(e,qi))){if(!o.endsWith(".kiro.hook"))continue;let i=HG(await I(o)??"");i&&(r[i.event]??=[],r[i.event].push(i.entry));}if(Object.keys(r).length===0)return;let n=join(e,ZS);await O(join(e,".agentsmesh")),await L(n,zG(r)),t.push({fromTool:dr,fromPath:join(e,qi),toPath:ZS,feature:"hooks"});}async function t$(e,t={}){let r=t.scope??"project",n=[],o=await H(dr,e,r);return await H3(e,n,o,r),await z3(e,n,o),n.push(...await X(Hg,e,r,{normalize:o})),await oe(e,vt,dr,n,o),r==="project"&&await V3(e,n),n}var r$=d(()=>{he();ie();rr();Ae();de();Pt();b();U();nk();qc();ok();s(W3,"canonicalRuleMeta");s(H3,"importRoot");s(z3,"importNonRootRules");s(V3,"importHooks");s(t$,"importFromKiro");});function n$(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:dr}))}var o$=d(()=>{Oe();qc();s(n$,"lintRules");});function s$(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=>Di(n,"kiro",t,{unsupportedBy:"Kiro hooks"}))}var i$=d(()=>{Ie();s(s$,"lintHooks");});var J3,Y3,X3,Q3,Hg,ok=d(()=>{Ge();e$();dt();r$();o$();i$();we();qc();J3={name:dr,primaryRootInstructionPath:An,generateRules:VG,generateCommands:JG,generateAgents:qG,generateSkills:YG,generateMcp:XG,generateHooks:QG,generateIgnore:ZG,importFrom:t$},Y3={rootInstructionPath:An,skillDir:vt,managedOutputs:{dirs:[".kiro/hooks",".kiro/skills",".kiro/steering",".kiro/agents"],files:["AGENTS.md",".kiro/settings/mcp.json",".kiroignore"]},paths:{rulePath(e,t){return `${Tn}/${e}.md`},commandPath(e){return `${vt}/${Z(e)}/SKILL.md`},agentPath(e,t){return `${xn}/${e}.md`}}},X3={rootInstructionPath:Pn,skillDir:Zi,managedOutputs:{dirs:[_l,Zi,Sl,aA],files:[Pn,hu,yu]},rewriteGeneratedPath(e){return e===An?Pn:e.startsWith(`${Tn}/`)?e.replace(`${Tn}/`,`${_l}/`):e.startsWith(`${vt}/`)?e.replace(`${vt}/`,`${Zi}/`):e.startsWith(`${xn}/`)?e.replace(`${xn}/`,`${Sl}/`):e===Xc?hu:e===Qc?yu:e.startsWith(`${qi}/`)?null:e},mirrorGlobalPath(e,t){return ge(e,".kiro/skills",t)},paths:{rulePath(e,t){return `${_l}/${e}.md`},commandPath(e){return `${vt}/${Z(e)}/SKILL.md`},agentPath(e,t){return `${Sl}/${e}.md`}}},Q3={rules:"native",additionalRules:"native",commands:"embedded",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"none"},Hg={id:dr,metadata:{displayName:"Kiro",category:"ide",officialUrl:"https://kiro.dev",shortDescription:"AWS spec-driven AI IDE"},generators:J3,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:n$,lint:{hooks:s$},project:Y3,globalSupport:{capabilities:Q3,detectionPaths:[_l,Pn,Zi,Sl,hu,yu],layout:X3},importer:{agents:{feature:"agents",mode:"directory",source:{project:[xn],global:[xn]},canonicalDir:lA,extensions:[".md"],preset:"agent"},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Xc],global:[hu]},canonicalDir:".agentsmesh",canonicalFilename:cA},ignore:{feature:"ignore",mode:"flatFile",source:{project:[Qc],global:[yu]},canonicalDir:".agentsmesh",canonicalFilename:mA}},buildImportPaths:eR,detectionPaths:[Tn,vt,xn,qi,Xc,Qc],conversionDefaults:{commandsToSkills:true}};});function l$(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:Dn,content:r.body.trim()?r.body:""});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(Vr))continue;let o=basename(n.source,".md"),i={};n.description&&(i.description=n.description),n.globs.length>0&&(i.globs=n.globs);let a=Object.keys(i).length>0?x(i,n.body.trim()||""):n.body.trim()||"";t.push({path:`${Lo}/${o}.md`,content:a});}return t}function c$(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${Co}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function m$(e){return e.agents.map(t=>{let r=basename(t.source,".md"),n={mode:"subagent"};return t.description&&(n.description=t.description),t.model&&(n.model=t.model),t.tools.length>0&&(n.tools=t.tools),t.disallowedTools.length>0&&(n.disallowedTools=t.disallowedTools),{path:`${Eo}/${r}.md`,content:x(n,t.body.trim()||"")}})}function q3(e){if("url"in e){let r={type:"remote",url:e.url};return Object.keys(e.headers).length>0&&(r.headers=e.headers),e.description&&(r.description=e.description),r}let t={type:"local",command:[e.command,...e.args]};return Object.keys(e.env).length>0&&(t.environment=e.env),e.description&&(t.description=e.description),t}function p$(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t={};for(let[r,n]of Object.entries(e.mcp.mcpServers))t[r]=q3(n);return [{path:Et,content:JSON.stringify({mcp:t},null,2)}]}function u$(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:Et,content:JSON.stringify({permission:t},null,2)}]}function d$(e){return ae(e,Jr)}var sk=d(()=>{ie();U();js();s(l$,"generateRules");s(c$,"generateCommands");s(m$,"generateAgents");s(q3,"toOpenCodeMcpServer");s(p$,"generateMcp");s(u$,"generatePermissions");s(d$,"generateSkills");});function ik(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 e9(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:ik(a.headers),env:ik(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:ik(a.environment),...typeof a.description=="string"?{description:a.description}:{}};}}return n}async function t9(e,t,r){let o=join(e,t==="global"?Yr:Et),i=await I(o);if(i===null)return;let a=e9(i);Object.keys(a).length!==0&&(await Xe(e,tR,a),r.push({feature:"mcp",fromTool:Vr,fromPath:o,toPath:tR}));}async function r9(e,t,r){let o=join(e,t==="global"?Yr:Et),i=await I(o);if(i===null)return;let a;try{a=JSON.parse(i);}catch{return}if(!a||typeof a!="object")return;let l=a.permission;if(!l||typeof l!="object"||Array.isArray(l))return;let c={allow:[],ask:[],deny:[]};for(let[p,u]of Object.entries(l))u==="allow"&&c.allow.push(p),u==="ask"&&c.ask.push(p),u==="deny"&&c.deny.push(p);if(c.allow.length+c.ask.length+c.deny.length===0)return;let m=join(e,rR);await O(join(e,".agentsmesh")),await L(m,stringify(c)),r.push({feature:"permissions",fromTool:Vr,fromPath:o,toPath:rR});}async function f$(e,t={}){let r=t.scope??"project",n=[],o=await H(Vr,e,r);return n.push(...await X(Vg,e,r,{normalize:o})),await oe(e,Jr,Vr,n,o),await t9(e,r,n),await r9(e,r,n),n}var g$=d(()=>{he();ie();Ae();Sn();b();b();js();ak();s(ik,"toStringRecord");s(e9,"parseOpenCodeMcp");s(t9,"importMcp");s(r9,"importPermissions");s(f$,"importFromOpenCode");});var h$,y$,_$,S$=d(()=>{U();de();js();h$=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${_u}/${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"),y$=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Yf}/${e}`,content:await Ee(n,{hasDescription:Object.prototype.hasOwnProperty.call(o,"description"),description:typeof o.description=="string"?o.description:void 0,hasAllowedTools:false,allowedTools:[]},i)}},"opencodeCommandMapper"),_$=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Xf}/${e}`,content:await xe(n,o,i)}},"opencodeAgentMapper");});function R$(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Vr}))}var I$=d(()=>{Oe();js();s(R$,"lintRules");});function k$(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 L$(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 C$=d(()=>{Ie();s(k$,"lintHooks");s(L$,"lintIgnore");});function O$(e,t,r){let n={};if(r.has("mcp")&&e.mcp){let o=p$(e)[0];o&&Object.assign(n,JSON.parse(o.content));}if(r.has("permissions")&&e.permissions){let o=u$(e)[0];o&&Object.assign(n,JSON.parse(o.content));}return Object.keys(n).length===0?[]:[{path:Et,content:JSON.stringify(n,null,2)}]}var E$,w$=d(()=>{Mu();js();sk();E$=s((e,t,r,n)=>{if(n!==Et&&n!==Yr)return null;let o=t?.content??e;return o===null?r:Sg(o,r)},"mergeOpenCodeSettings");s(O$,"emitOpenCodeScopedSettings");});var b$,A$,ck,T$=d(()=>{dt();js();b$={rootInstructionPath:Dn,skillDir:Jr,managedOutputs:{dirs:[Lo,Co,Eo,Jr],files:[Dn,Et]},paths:{rulePath:s(e=>`${Lo}/${e}.md`,"rulePath"),commandPath:s(e=>`${Co}/${e}.md`,"commandPath"),agentPath:s(e=>`${Eo}/${e}.md`,"agentPath")}},A$={rootInstructionPath:Gs,skillDir:$s,managedOutputs:{dirs:[ea,ta,ra,$s,uA],files:[Gs,Yr]},rewriteGeneratedPath(e){return e===Dn?Gs:e===Et?Yr:e},mirrorGlobalPath(e,t){return ge(e,$s,t)},paths:{rulePath:s(e=>`${ea}/${e}.md`,"rulePath"),commandPath:s(e=>`${ta}/${e}.md`,"commandPath"),agentPath:s(e=>`${ra}/${e}.md`,"agentPath")}},ck={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"native"};});var n9,Vg,ak=d(()=>{sk();js();g$();S$();I$();C$();we();w$();T$();n9={name:Vr,primaryRootInstructionPath:Dn,generateRules:l$,generateCommands:c$,generateAgents:m$,generateSkills:d$,importFrom:f$},Vg={id:Vr,metadata:{displayName:"OpenCode",category:"cli",officialUrl:"https://opencode.ai",shortDescription:"Open-source terminal AI agent"},generators:n9,capabilities:ck,emptyImportMessage:"No OpenCode config found (AGENTS.md, .opencode/rules, .opencode/commands, .opencode/agents, .opencode/skills, or opencode.json).",lintRules:R$,lint:{hooks:k$,ignore:L$},project:b$,globalSupport:{capabilities:ck,detectionPaths:[Gs,ea,ta,ra,$s,Yr],layout:A$},mergeGeneratedOutputContent:E$,emitScopedSettings:O$,importer:{rules:[{feature:"rules",mode:"singleFile",source:{project:[Dn],global:[Gs]},canonicalDir:_u,canonicalRootFilename:"_root.md",markAsRoot:true},{feature:"rules",mode:"directory",source:{project:[Lo],global:[ea]},canonicalDir:_u,extensions:[".md"],map:h$}],commands:{feature:"commands",mode:"directory",source:{project:[Co],global:[ta]},canonicalDir:Yf,extensions:[".md"],map:y$},agents:{feature:"agents",mode:"directory",source:{project:[Eo],global:[ra]},canonicalDir:Xf,extensions:[".md"],map:_$}},buildImportPaths:nR,detectionPaths:[Lo,Co,Eo,Jr,Et,"opencode.jsonc"]};});function x$(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:Xr,content:o}]:[]}function P$(e){return ae(e,Ft)}function D$(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${wo}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function N$(e){return e.agents.map(t=>({path:`${Ft}/${V(t.name)}/SKILL.md`,content:$e(t)}))}var v$=d(()=>{ie();Be();U();Se();em();s(x$,"generateRules");s(P$,"generateSkills");s(D$,"generateCommands");s(N$,"generateAgents");});async function F$(e,t={}){let r=t.scope??"project",n=[],o=await H(Oo,e,r);return n.push(...await X(Jg,e,r,{normalize:o})),await oe(e,r==="global"?Nn:Ft,Oo,n,o),n}var M$=d(()=>{he();ie();Ae();em();mk();s(F$,"importFromPiAgent");});function G$(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Oo}))}var $$=d(()=>{Oe();em();s(G$,"lintRules");});function j$(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 U$(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 B$(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 K$(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 W$=d(()=>{Ie();s(j$,"lintHooks");s(U$,"lintPermissions");s(B$,"lintIgnore");s(K$,"lintMcp");});var o9,s9,i9,H$,Jg,mk=d(()=>{Se();v$();dt();M$();$$();W$();iR();em();o9={name:Oo,primaryRootInstructionPath:Xr,generateRules:x$,generateCommands:D$,generateAgents:N$,generateSkills:P$,importFrom:F$},s9={rootInstructionPath:Xr,skillDir:Ft,managedOutputs:{dirs:[Ft,wo],files:[Xr]},paths:{rulePath(e){return Xr},commandPath(e){return `${wo}/${e}.md`},agentPath(e){return `${Ft}/${V(e)}/SKILL.md`}}},i9={rootInstructionPath:Us,skillDir:Nn,managedOutputs:{dirs:[Nn,Rl],files:[Us]},rewriteGeneratedPath(e){return e===Xr?Us:e.startsWith(`${wo}/`)?e.replace(`${wo}/`,`${Rl}/`):e.startsWith(`${Ft}/`)?e.replace(`${Ft}/`,`${Nn}/`):e},mirrorGlobalPath(e,t){return ge(e,Nn,t)},paths:{rulePath(e){return Us},commandPath(e){return `${Rl}/${e}.md`},agentPath(e){return `${Nn}/${V(e)}/SKILL.md`}}},H$={rules:"native",additionalRules:"embedded",commands:"native",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"none",permissions:"none"},Jg={id:Oo,metadata:{displayName:"Pi Agent",category:"cli",officialUrl:"https://github.com/earendil-works/pi",shortDescription:"Pi coding agent"},generators:o9,capabilities:H$,emptyImportMessage:"No Pi Coding Agent config found (AGENTS.md or .pi/skills).",lintRules:G$,lint:{hooks:j$,permissions:U$,ignore:B$,mcp:K$},supportsConversion:{agents:true},project:s9,globalSupport:{capabilities:H$,detectionPaths:[Us],layout:i9},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Xr],global:[Us]},canonicalDir:fA,canonicalRootFilename:"_root.md",markAsRoot:true},commands:{feature:"commands",mode:"directory",source:{project:[wo],global:[Rl]},canonicalDir:gA,extensions:[".md"],preset:"command"}},sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:sR,detectionPaths:[Xr,Ft]};});function z$(e){let t=[],r=e.rules.find(o=>o.root);r&&t.push({path:fr,content:r.body.trim()?r.body:""});let n=e.rules.filter(o=>!o.root&&(o.targets.length===0||o.targets.includes(vn)));for(let o of n){let i=basename(o.source,".md"),a={};o.description&&(a.description=o.description),o.globs.length>0&&(a.globs=o.globs);let l=x(a,o.body.trim()||"");t.push({path:`${bo}/${i}.md`,content:l});}return t}function V$(e){return e.commands.map(t=>{let r={description:t.description,"allowed-tools":t.allowedTools.length>0?t.allowedTools:void 0};r["allowed-tools"]===void 0&&delete r["allowed-tools"];let n=x(r,t.body.trim()||"");return {path:`${Fn}/${t.name}.md`,content:n}})}function J$(e){return e.agents.map(t=>{let r={name:t.name,description:t.description,tools:t.tools.length>0?t.tools:void 0};Object.keys(r).forEach(o=>{r[o]===void 0&&delete r[o];});let n=x(r,t.body.trim()||"");return {path:`${Mn}/${t.name}.md`,content:n}})}function Y$(e){let t=[];for(let r of e.skills){let n={name:r.name,description:r.description||void 0};n.description===void 0&&delete n.description;let o=x(n,r.body.trim()||"");t.push({path:`${gr}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles){let a=i.relativePath.replace(/\\/g,"/");t.push({path:`${gr}/${r.name}/${a}`,content:i.content});}}return t}function X$(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:Qr,content:t}]}function Q$(e){return !e.ignore||e.ignore.length===0?[]:[{path:Bs,content:e.ignore.join(`
|
|
151
|
+
`)}]}function q$(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=Go(e);return Object.keys(t).length===0?[]:[{path:Qr,content:JSON.stringify({hooks:t},null,2)}]}function Z$(e){if(!e.permissions)return [];let{allow:t,deny:r}=e.permissions,n=e.permissions.ask??[];if(t.length===0&&r.length===0&&n.length===0)return [];let o={};return t.length>0&&(o.allow=t),r.length>0&&(o.deny=r),n.length>0&&(o.ask=n),[{path:Qr,content:JSON.stringify({permissions:o},null,2)}]}function ej(e){let t=e.rules.find(n=>n.root),r=e.rules.filter(n=>n.root?false:n.targets.length===0||n.targets.includes(vn));return le(t?.body.trim()??"",r)}var tj=d(()=>{U();Be();am();Il();s(z$,"generateRules");s(V$,"generateCommands");s(J$,"generateAgents");s(Y$,"generateSkills");s(X$,"generateMcp");s(Q$,"generateIgnore");s(q$,"generateHooks");s(Z$,"generatePermissions");s(ej,"renderQwenGlobalInstructions");});async function rj(e,t={}){let r=t.scope??"project",n=[],o=await H(vn,e,r);return n.push(...await X(Yg,e,r,{normalize:o})),await oe(e,r==="global"?To:gr,vn,n,o),n}var nj=d(()=>{he();Ae();ie();Il();pk();s(rj,"importFromQwenCode");});function oj(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:vn}))}var sj=d(()=>{Oe();Il();s(oj,"lintRules");});var ij,aj=d(()=>{Il();ij={rules:[{feature:"rules",mode:"singleFile",source:{project:[fr],global:[Ao]},canonicalDir:aR,canonicalRootFilename:"_root.md",markAsRoot:true},{feature:"rules",mode:"directory",source:{project:[bo],global:[]},canonicalDir:aR,extensions:[".md"],preset:"rule"}],commands:{feature:"commands",mode:"directory",source:{project:[Fn],global:[Ws]},canonicalDir:hA,extensions:[".md"],preset:"command"},agents:{feature:"agents",mode:"directory",source:{project:[Mn],global:[Hs]},canonicalDir:yA,extensions:[".md"],preset:"agent"},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Qr],global:[Ks]},canonicalDir:".agentsmesh",canonicalFilename:".agentsmesh/mcp.json"},ignore:{feature:"ignore",mode:"flatFile",source:{project:[Bs],global:[]},canonicalDir:".agentsmesh",canonicalFilename:".agentsmesh/ignore"}};});function d9(e){if(!e)return {};try{let t=JSON.parse(e);return t!==null&&typeof t=="object"&&!Array.isArray(t)?t:{}}catch{return {}}}var l9,c9,m9,p9,u9,f9,Yg,pk=d(()=>{tj();nj();sj();we();aj();Il();l9={name:vn,primaryRootInstructionPath:fr,generateRules:z$,generateCommands:V$,generateAgents:J$,generateSkills:Y$,generateMcp:X$,generateIgnore:Q$,generateHooks:q$,generatePermissions:Z$,importFrom:rj},c9={rootInstructionPath:fr,skillDir:gr,managedOutputs:{dirs:[bo,Fn,Mn,gr],files:[fr,Qr,Bs]},paths:{rulePath(e,t){return t.root?fr:`${bo}/${e}.md`},commandPath(e){return `${Fn}/${e}.md`},agentPath(e){return `${Mn}/${e}.md`}}},m9={rootInstructionPath:Ao,renderPrimaryRootInstruction:ej,skillDir:To,managedOutputs:{dirs:[Ws,Hs,To],files:[Ao,Ks]},rewriteGeneratedPath(e){return e===fr?Ao:e===Qr?Ks:e===Bs?null:e.startsWith(`${Fn}/`)?e.replace(`${Fn}/`,`${Ws}/`):e.startsWith(`${Mn}/`)?e.replace(`${Mn}/`,`${Hs}/`):e.startsWith(`${gr}/`)?e.replace(`${gr}/`,`${To}/`):e.startsWith(`${bo}/`)?null:e},paths:{rulePath(e,t){return Ao},commandPath(e){return `${Ws}/${e}.md`},agentPath(e){return `${Hs}/${e}.md`}}},p9={rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"native"},u9={rules:"native",additionalRules:"embedded",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"native"};s(d9,"parseJsonObject");f9=s((e,t,r,n)=>{if(n!==Qr&&n!==Ks)return null;let o=d9(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"),Yg={id:vn,metadata:{displayName:"Qwen Code",category:"cli",officialUrl:"https://github.com/QwenLM/qwen-code",shortDescription:"Alibaba's Qwen coding CLI"},generators:l9,capabilities:p9,emptyImportMessage:"No Qwen Code config found (QWEN.md or .qwen/rules, .qwen/commands, .qwen/settings.json).",lintRules:oj,project:c9,globalSupport:{capabilities:u9,detectionPaths:[Ao,Ks,Ws,Hs,To],layout:m9},mergeGeneratedOutputContent:f9,importer:ij,buildImportPaths:lR,detectionPaths:[fr,".qwen/settings.json",".qwen/commands",".qwen/rules"]};});function lj(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:Gn,content:o}]:[]}function cj(e){return ae(e,Vt)}function mj(e){return e.commands.map(t=>({path:`${Vt}/${Z(t.name)}/SKILL.md`,content:Ye(t)}))}function pj(e){return e.agents.map(t=>({path:`${Vt}/${V(t.name)}/SKILL.md`,content:$e(t)}))}var uj=d(()=>{ie();Be();Se();Ge();tm();s(lj,"generateRules");s(cj,"generateSkills");s(mj,"generateCommands");s(pj,"generateAgents");});async function dj(e,t={}){let r=t.scope??"project",n=[],o=await H(xo,e,r);return n.push(...await X(Xg,e,r,{normalize:o})),await oe(e,Vt,xo,n,o),n}var fj=d(()=>{he();ie();Ae();tm();uk();s(dj,"importFromReplitAgent");});function gj(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:xo}))}var hj=d(()=>{Oe();tm();s(gj,"lintRules");});function yj(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 _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","replit-agent","Replit Agent permissions are managed in the cloud UI; canonical permissions are not projected.")]}function Sj(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 Rj(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 Ij=d(()=>{Ie();s(yj,"lintHooks");s(_j,"lintPermissions");s(Sj,"lintIgnore");s(Rj,"lintMcp");});var g9,h9,y9,Xg,uk=d(()=>{Ge();Se();uj();fj();hj();Ij();mR();tm();g9={name:xo,primaryRootInstructionPath:Gn,generateRules:lj,generateCommands:mj,generateAgents:pj,generateSkills:cj,importFrom:dj},h9={rootInstructionPath:Gn,skillDir:Vt,managedOutputs:{dirs:[Vt],files:[Gn]},paths:{rulePath(e){return Gn},commandPath(e){return `${Vt}/${Z(e)}/SKILL.md`},agentPath(e){return `${Vt}/${V(e)}/SKILL.md`}}},y9={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"none",permissions:"none"},Xg={id:xo,metadata:{displayName:"Replit Agent",category:"agent-platform",officialUrl:"https://replit.com",shortDescription:"Replit's autonomous coding agent"},generators:g9,capabilities:y9,emptyImportMessage:"No Replit Agent config found (replit.md or .agents/skills).",lintRules:gj,lint:{hooks:yj,permissions:_j,ignore:Sj,mcp:Rj},supportsConversion:{commands:true,agents:true},project:h9,sharedArtifacts:{".agents/skills/":"consumer"},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Gn]},canonicalDir:SA,canonicalRootFilename:"_root.md",markAsRoot:true}},buildImportPaths:cR,detectionPaths:[Gn]};});function Lj(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:$n,content:r.body.trim()||""});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(zs))continue;let o=basename(n.source,".md");t.push({path:`${Vs}/${o}.md`,content:n.body.trim()||""});}return t}function Cj(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${Js}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function Ej(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Ru,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function Oj(e){return e.ignore.length===0?[]:[{path:Iu,content:e.ignore.join(`
|
|
152
|
+
`)}]}function wj(e){return ae(e,Po)}function bj(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:na,content:stringify({customModes:t})}]}function Aj(e){return []}var Tj=d(()=>{ie();U();El();s(Lj,"generateRules");s(Cj,"generateCommands");s(Ej,"generateMcp");s(Oj,"generateIgnore");s(wj,"generateSkills");s(bj,"generateAgents");s(Aj,"generatePermissions");});var Qg,Pj,dk=d(()=>{U();de();El();Qg=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{if(e==="00-root.md")return null;let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${Cl}/${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"),Pj=s(async({relativePath:e,normalizeTo:t,destDir:r})=>{let n=join(r,e),{frontmatter:o,body:i}=T(t(n));return {destPath:n,toPath:`${qf}/${e}`,content:await Ee(n,{hasDescription:true,description:typeof o.description=="string"?o.description:void 0,hasAllowedTools:false,allowedTools:[]},i)}},"rooCommandMapper");});async function k9(e,t,r){let n=join(e,na),o=await I(n);if(o===null)return;let i;try{i=parse(o);}catch{return}let a=i?.customModes;if(!Array.isArray(a))return;let l=join(e,pR);for(let c of a){if(!c||typeof c!="object")continue;let m=c,p=typeof m.slug=="string"&&m.slug?m.slug:typeof m.name=="string"&&m.name?m.name:null;if(!p)continue;let u=typeof m.name=="string"?m.name:p,f=typeof m.description=="string"?m.description:"",g=typeof m.roleDefinition=="string"?m.roleDefinition:"",h=join(l,`${p}.md`),y=await xe(h,{name:u,description:f,tools:[]},r(g,n,h));await O(dirname(h)),await L(h,y),t.push({fromTool:zs,fromPath:n,toPath:`${pR}/${p}.md`,feature:"agents"});}}async function L9(e,t,r){let n=join(e,kl),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,Cl);for(let l of i)t.push(...await Re({srcDir:join(n,l),destDir:a,extensions:[".md"],fromTool:zs,normalize:r,mapEntry:s(async({srcPath:c,relativePath:m,content:p,normalizeTo:u})=>{let f=await Qg({absolutePath:c,relativePath:m,content:p,destDir:a,normalizeTo:u});return f?{...f,feature:"rules"}:null},"mapEntry")}));}async function Dj(e,t={}){let r=t.scope??"project",n=[],o=await H(zs,e,r);return n.push(...await X(qg,e,r,{normalize:o})),await L9(e,n,o),r==="project"&&await k9(e,n,o),await oe(e,Po,zs,n,o),n}var Nj=d(()=>{he();b();ie();rr();Ae();de();dk();El();fk();s(k9,"importRooModes");s(L9,"importPerModeRules");s(Dj,"importFromRooCode");});function vj(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:zs}))}var Fj=d(()=>{Oe();El();s(vj,"lintRules");});function Mj(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 Gj=d(()=>{Ie();s(Mj,"lintPermissions");});function A9(e,t){return e===null?"created":e!==t?"updated":"unchanged"}var w9,b9,T9,x9,P9,qg,fk=d(()=>{b();Tj();El();dt();Nj();dk();Fj();Gj();we();w9={name:"roo-code",primaryRootInstructionPath:$n,generateRules:Lj,generateCommands:Cj,generateSkills:wj,generateMcp:Ej,generateIgnore:Oj,generateAgents:bj,generatePermissions:Aj,importFrom:Dj},b9={rootInstructionPath:$n,skillDir:".roo/skills",managedOutputs:{dirs:[".roo/rules",".roo/commands",".roo/skills"],files:[".roo/mcp.json",".rooignore",".roorules",na]},paths:{rulePath(e,t){return `${Vs}/${e}.md`},commandPath(e,t){return `${Js}/${e}.md`},agentPath(e,t){return null}}};s(A9,"computeStatus");T9=s(async(e,t,r,n)=>{if(r!=="global")return [];if(!n.has("agents")||e.agents.length===0)return [];let o=e.agents.map(l=>{let m={slug:basename(l.source,".md"),name:l.name};return l.description&&(m.description=l.description),l.body.trim()&&(m.roleDefinition=l.body.trim()),m}),i=stringify({customModes:o}),a=await I(join(t,ku));return [{target:"roo-code",path:ku,content:i,currentContent:a??void 0,status:A9(a,i)}]},"generateRooGlobalExtras"),x9={rootInstructionPath:ia,skillDir:Ys,managedOutputs:{dirs:[oa,sa,Ys,RA],files:[ia,Ll,Lu,ku]},rewriteGeneratedPath(e){return e===$n?ia:e===na?null:e.startsWith(`${Vs}/`)?e.replace(`${Vs}/`,`${oa}/`):e.startsWith(`${Js}/`)?e.replace(`${Js}/`,`${sa}/`):e.startsWith(`${Po}/`)?e.replace(`${Po}/`,`${Ys}/`):e===Ru?Ll:e===Iu?Lu:e},mirrorGlobalPath(e,t){return ge(e,Ys,t)},paths:{rulePath(e,t){return `${oa}/${e}.md`},commandPath(e,t){return `${sa}/${e}.md`},agentPath(e,t){return null}}},P9={rules:"native",additionalRules:"native",commands:"native",agents:"partial",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"partial"},qg={id:"roo-code",metadata:{displayName:"Roo Code",category:"ide",officialUrl:"https://roocode.com",shortDescription:"Open-source AI VS Code extension"},generators:w9,capabilities:{rules:"native",additionalRules:"native",commands:"native",agents:"native",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"partial"},emptyImportMessage:"No Roo Code config found (.roo/rules, .roo/commands, .roo/skills, .roo/mcp.json, .rooignore, or .roorules).",lintRules:vj,lint:{permissions:Mj},project:b9,globalSupport:{capabilities:P9,detectionPaths:[oa,sa,Ys,Ll,Lu,ia,ku],layout:x9,scopeExtras:T9},importer:{rules:[{feature:"rules",mode:"singleFile",source:{project:[$n,Su],global:[ia,$n,Su]},canonicalDir:Cl,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:[Vs],global:[oa]},canonicalDir:Cl,extensions:[".md"],map:Qg}],commands:{feature:"commands",mode:"directory",source:{project:[Js],global:[sa]},canonicalDir:qf,extensions:[".md"],map:Pj},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Ru],global:[Ll]},canonicalDir:".agentsmesh",canonicalFilename:IA},ignore:{feature:"ignore",mode:"flatFile",source:{project:[Iu],global:[Lu]},canonicalDir:".agentsmesh",canonicalFilename:kA}},buildImportPaths:uR,detectionPaths:[".roo/rules",".roo/commands",".roo/skills",".roo/mcp.json",".rooignore",".roorules",na]};});function $j(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:qr,content:o}]:[]}function jj(e){return ae(e,ut)}function Uj(e){return e.commands.map(t=>({path:`${ut}/${Z(t.name)}/SKILL.md`,content:Ye(t)}))}function Bj(e){return e.agents.map(t=>({path:`${ut}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function Kj(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:Xs,content:t}]}var Wj=d(()=>{ie();Be();Se();Ge();Ol();s($j,"generateRules");s(jj,"generateSkills");s(Uj,"generateCommands");s(Bj,"generateAgents");s(Kj,"generateMcp");});async function Hj(e,t={}){let r=t.scope??"project",n=[],o=await H(Do,e,r);return n.push(...await X(Zg,e,r,{normalize:o})),await oe(e,r==="global"?hr:ut,Do,n,o),n}var zj=d(()=>{he();ie();Ae();Ol();gk();s(Hj,"importFromRovodev");});function Vj(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Do}))}var Jj=d(()=>{Oe();Ol();s(Vj,"lintRules");});function Yj(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 Xj=d(()=>{Ie();s(Yj,"lintIgnore");});function Zj(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:Cu,content:stringify(r)}]}function e0(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 t0=d(()=>{Ol();s(Zj,"buildRovodevConfig");s(e0,"mergeRovodevConfig");});var D9,N9,v9,F9,M9,Zg,gk=d(()=>{Ge();Se();Wj();dt();zj();Jj();Xj();t0();we();Ol();D9={name:Do,primaryRootInstructionPath:qr,generateRules:$j,generateCommands:Uj,generateAgents:Bj,generateSkills:jj,generateMcp:Kj,importFrom:Hj},N9={rootInstructionPath:qr,skillDir:ut,managedOutputs:{dirs:[ut],files:[qr,Xs]},paths:{rulePath(e){return qr},commandPath(e){return `${ut}/${Z(e)}/SKILL.md`},agentPath(e){return `${ut}/${V(e)}/SKILL.md`}}},v9={rootInstructionPath:Qs,skillDir:hr,managedOutputs:{dirs:[hr],files:[Qs,rm,Cu]},rewriteGeneratedPath(e){return e===qr?Qs:e.startsWith(`${ut}/`)?e.replace(`${ut}/`,`${hr}/`):e===Xs?rm:e},mirrorGlobalPath(e,t){return ge(e,hr,t)},paths:{rulePath(e){return Qs},commandPath(e){return `${hr}/${Z(e)}/SKILL.md`},agentPath(e){return `${hr}/${V(e)}/SKILL.md`}}},F9={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},M9={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"native",ignore:"none",permissions:"native"},Zg={id:Do,metadata:{displayName:"Rovo Dev",category:"cli",officialUrl:"https://www.atlassian.com/solutions/devops/rovo-dev",shortDescription:"Atlassian's coding agent"},generators:D9,capabilities:F9,emptyImportMessage:"No Rovo Dev config found (AGENTS.md, .rovodev/skills, or .rovodev/mcp.json).",lintRules:Vj,lint:{ignore:Yj},supportsConversion:{commands:true,agents:true},project:N9,globalSupport:{capabilities:M9,detectionPaths:[EA,Qs,hr],layout:v9},emitScopedSettings(e,t,r){return t!=="global"?[]:Zj(e,r)},mergeGeneratedOutputContent(e,t,r,n){return n!==Cu?null:e0(e,r)},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[qr],global:[Qs]},canonicalDir:OA,canonicalRootFilename:"_root.md",markAsRoot:true},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[Xs],global:[rm]},canonicalDir:".agentsmesh",canonicalFilename:"mcp.json"}},buildImportPaths:dR,detectionPaths:[qr,ut,Xs]};});function r0(e){let t=[],r=e.rules.find(n=>n.root);r&&t.push({path:_r,content:r.body.trim()});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes(Zr))continue;let o=basename(n.source,".md");t.push({path:`${yr}/${o}.md`,content:n.body.trim()});}return t}function n0(e){return e.commands.map(t=>{let r={};return t.description&&(r.description=t.description),{path:`${aa}/${t.name}.md`,content:x(r,t.body.trim()||"")}})}function o0(e){return ae(e,en)}function s0(e){return e.mcp===null||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:wl,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}function i0(e){return e.ignore.length===0?[]:[{path:nm,content:e.ignore.join(`
|
|
153
|
+
`)}]}var a0=d(()=>{ie();U();sm();s(r0,"generateRules");s(n0,"generateCommands");s(o0,"generateSkills");s(s0,"generateMcp");s(i0,"generateIgnore");});async function j9(e,t,r,n){let o=n==="global"?[tn,_r]:[_r,tn];for(let i of o){let a=join(e,i),l=await I(a);if(l===null)continue;let c=join(e,l0),{frontmatter:m,body:p}=T(r(l,a,c));await O(join(e,wu)),await L(c,await z(c,{...m,root:true},p)),t.push({fromTool:Zr,fromPath:a,toPath:l0,feature:"rules"});return}}async function U9(e,t,r,n){let o=join(e,n==="global"?qs:yr),i=join(e,wu);t.push(...await Re({srcDir:o,destDir:i,extensions:[".md"],fromTool:Zr,normalize:r,mapEntry:s(async({relativePath:a,normalizeTo:l})=>{let c=basename(a);if(c==="project_rules.md"||c==="rules.md")return null;let m=join(i,a),{frontmatter:p,body:u}=T(l(m));return {destPath:m,toPath:`${wu}/${a}`,feature:"rules",content:await z(m,{...p,root:false},u)}},"mapEntry")}));}async function c0(e,t={}){let r=t.scope??"project",n=[],o=await H(Zr,e,r);return await j9(e,n,o,r),await U9(e,n,o,r),n.push(...await X(eh,e,r,{normalize:o})),await oe(e,r==="global"?jn:en,Zr,n,o),n}var l0,m0=d(()=>{he();ie();rr();Ae();de();b();U();sm();hk();l0=`${wu}/_root.md`;s(j9,"importRoot");s(U9,"importNonRootRules");s(c0,"importFromTrae");});function p0(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:Zr}))}var u0=d(()=>{Oe();sm();s(p0,"lintRules");});var B9,K9,W9,H9,eh,hk=d(()=>{a0();dt();m0();u0();we();sm();B9={name:Zr,primaryRootInstructionPath:_r,generateRules:r0,generateCommands:n0,generateSkills:o0,generateMcp:s0,generateIgnore:i0,importFrom:c0},K9={rootInstructionPath:_r,skillDir:en,managedOutputs:{dirs:[yr,aa,en],files:[wl,nm]},paths:{rulePath(e,t){return `${yr}/${e}.md`},commandPath(e,t){return `${aa}/${e}.md`},agentPath(e,t){return null}}},W9={rootInstructionPath:tn,skillDir:jn,managedOutputs:{dirs:[qs,om,jn,bA],files:[tn,Ou]},rewriteGeneratedPath(e){return e===_r?tn:e.startsWith(`${yr}/`)?e.replace(`${yr}/`,`${qs}/`):e.startsWith(`${en}/`)?e.replace(`${en}/`,`${jn}/`):e===wl?Ou:e===nm?null:e},mirrorGlobalPath(e,t){return ge(e,jn,t)},paths:{rulePath(e,t){return e==="_root"?tn:`${qs}/${e}.md`},commandPath(e,t){return `${om}/${e}.md`},agentPath(e,t){return null}}},H9={rules:"native",additionalRules:"native",commands:"native",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},eh={id:Zr,metadata:{displayName:"Trae",category:"ide",officialUrl:"https://www.trae.ai",shortDescription:"ByteDance's adaptive AI IDE"},generators:B9,capabilities:{rules:"native",additionalRules:"native",commands:"native",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"native",permissions:"none"},emptyImportMessage:"No Trae config found (.trae/rules/project_rules.md, .trae/rules/*.md, .trae/skills/, .trae/mcp.json, or .trae/.ignore).",lintRules:p0,project:K9,globalSupport:{capabilities:H9,detectionPaths:[tn,qs,jn,Ou],layout:W9},importer:{commands:{feature:"commands",mode:"directory",source:{project:[aa],global:[om]},canonicalDir:AA,extensions:[".md"],preset:"command"},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[wl],global:[Ou]},canonicalDir:".agentsmesh",canonicalFilename:TA},ignore:{feature:"ignore",mode:"flatFile",source:{project:[nm]},canonicalDir:".agentsmesh",canonicalFilename:xA}},buildImportPaths:fR,detectionPaths:[yr,wl,_r]};});function d0(e){let t=e.rules.find(i=>i.root),r=e.rules.filter(i=>i.root?false:i.targets.length===0||i.targets.includes(No)),n=t?.body.trim()??"",o=le(n,r);return o?[{path:Un,content:o}]:[]}function f0(e){return ae(e,Ot)}function g0(e){return e.commands.map(t=>({path:`${Ot}/${Z(t.name)}/SKILL.md`,content:Ye(t)}))}function h0(e){return e.agents.map(t=>({path:`${Ot}/${V(t.name)}/SKILL.md`,content:$e(t)}))}function y0(e){if(!e.mcp||Object.keys(e.mcp.mcpServers).length===0)return [];let t=JSON.stringify({mcpServers:e.mcp.mcpServers},null,2);return [{path:la,content:t}]}function _0(e){return []}var S0=d(()=>{ie();Be();Se();Ge();im();s(d0,"generateRules");s(f0,"generateSkills");s(g0,"generateCommands");s(h0,"generateAgents");s(y0,"generateMcp");s(_0,"generatePermissions");});async function R0(e,t={}){let r=t.scope??"project",n=[],o=await H(No,e,r);return n.push(...await X(th,e,r,{normalize:o})),await oe(e,r==="global"?Sr:Ot,No,n,o),n}var I0=d(()=>{he();ie();Ae();im();yk();s(R0,"importFromWarp");});function k0(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:No}))}var L0=d(()=>{Oe();im();s(k0,"lintRules");});function C0(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 E0(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 O0(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 w0=d(()=>{Ie();s(C0,"lintHooks");s(E0,"lintPermissions");s(O0,"lintIgnore");});var z9,V9,J9,Y9,X9,th,yk=d(()=>{Ge();Se();S0();dt();I0();L0();w0();we();im();z9={name:No,primaryRootInstructionPath:Un,generateRules:d0,generateCommands:g0,generateAgents:h0,generateSkills:f0,generateMcp:y0,generatePermissions:_0,importFrom:R0},V9={rootInstructionPath:Un,skillDir:Ot,managedOutputs:{dirs:[Ot],files:[Un,la]},paths:{rulePath(e){return Un},commandPath(e){return `${Ot}/${Z(e)}/SKILL.md`},agentPath(e){return `${Ot}/${V(e)}/SKILL.md`}}},J9={rootInstructionPath:void 0,skillDir:Sr,managedOutputs:{dirs:[Sr],files:[]},rewriteGeneratedPath(e){return e.startsWith(`${Ot}/`)?e.replace(`${Ot}/`,`${Sr}/`):e},mirrorGlobalPath(e,t){return ge(e,Sr,t)},paths:{rulePath(){return null},commandPath(e){return `${Sr}/${Z(e)}/SKILL.md`},agentPath(e){return `${Sr}/${V(e)}/SKILL.md`}}},Y9={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"partial"},X9={rules:"none",additionalRules:"none",commands:"none",agents:"none",skills:"native",mcp:"none",hooks:"none",ignore:"none",permissions:"partial"},th={id:No,metadata:{displayName:"Warp",category:"cli",officialUrl:"https://www.warp.dev",shortDescription:"AI-powered terminal"},generators:z9,capabilities:Y9,emptyImportMessage:"No Warp config found (WARP.md, AGENTS.md, .warp/skills, or .mcp.json).",lintRules:k0,lint:{hooks:C0,permissions:E0,ignore:O0},supportsConversion:{commands:true,agents:true},project:V9,globalSupport:{capabilities:X9,detectionPaths:[Sr],layout:J9},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[gR,Un]},canonicalDir:DA,canonicalRootFilename:"_root.md",markAsRoot:true},mcp:{feature:"mcp",mode:"mcpJson",source:{project:[la]},canonicalDir:".agentsmesh",canonicalFilename:"mcp.json"}},buildImportPaths:hR,detectionPaths:[Un,gR,la],conversionDefaults:{commandsToSkills:true,agentsToSkills:true}};});var zo,_k,ya,b0,Lm,Vo,Cm,Em,A0,_a,Hn,Om,Sk,T0,x0,Rk,Ik,kk,wm,bm,Bu,rh,nh,oh,P0,Mt=d(()=>{zo="windsurf",_k=".windsurfrules",ya=".windsurf/rules",b0=".windsurfignore",Lm=".codeiumignore",Vo="AGENTS.md",Cm=".windsurf/hooks.json",Em=".windsurf/mcp_config.example.json",A0=".windsurf/mcp_config.json",_a=".windsurf/workflows",Hn=".windsurf/skills",Om=".agentsmesh/rules",Sk=".agentsmesh/commands",T0=".agentsmesh/agents",x0=".agentsmesh/skills",Rk=".agentsmesh/ignore",Ik=".agentsmesh/hooks.yaml",kk=".agentsmesh/mcp.json",wm=".codeium/windsurf/memories/global_rules.md",bm=".codeium/windsurf/skills",Bu=".codeium/windsurf/global_workflows",rh=".codeium/windsurf/hooks.json",nh=".codeium/windsurf/mcp_config.json",oh=".codeium/.codeiumignore",P0=".agents/skills";});function q9(e){let t=basename(e,".md");return t==="_root"?"root":t}function Z9(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 Lk(e){let t=[],r=e.rules.find(n=>n.root);if(!r)return [];t.push({path:Vo,content:r.body.trim()});for(let n of e.rules){if(n.root||n.targets.length>0&&!n.targets.includes("windsurf"))continue;let o=q9(n.source),i=n.trigger||(n.globs.length>0?"glob":void 0),a={description:n.description||void 0,trigger:i,glob:n.globs.length===1?n.globs[0]:void 0,globs:n.globs.length>1?n.globs:void 0};Object.keys(a).forEach(m=>{a[m]===void 0&&delete a[m];});let l=Object.keys(a).length>0?x(a,n.body.trim()||""):n.body.trim()||"";t.push({path:`${ya}/${o}.md`,content:l});let c=Z9(n.globs);c&&(c!==o&&t.push({path:`${ya}/${c}.md`,content:l}),t.push({path:`${c}/AGENTS.md`,content:n.body.trim()||""}));}return t}var D0=d(()=>{U();Mt();s(q9,"ruleSlug");s(Z9,"directoryScopedRuleDir");s(Lk,"generateRules");});function Ck(e){return !e.ignore||e.ignore.length===0?[]:[{path:Lm,content:e.ignore.join(`
|
|
154
|
+
`)}]}var N0=d(()=>{Mt();s(Ck,"generateIgnore");});function Ek(e){return e.commands.map(t=>{let r={description:t.description.trim()||void 0,allowedTools:t.allowedTools.length>0?t.allowedTools:void 0};Object.keys(r).forEach(o=>{r[o]===void 0&&delete r[o];});let n=Object.keys(r).length>0?x(r,t.body.trim()||""):t.body.trim();return {path:`${_a}/${t.name}.md`,content:n}})}var v0=d(()=>{U();Mt();s(Ek,"generateCommands");});function Ok(e){return e.agents.map(t=>({path:`${Hn}/${V(t.name)}/SKILL.md`,content:$e(t)}))}var F0=d(()=>{Se();Mt();s(Ok,"generateAgents");});function wk(e){return !e.mcp||Object.keys(e.mcp.mcpServers).length===0?[]:[{path:Em,content:JSON.stringify({mcpServers:e.mcp.mcpServers},null,2)}]}var M0=d(()=>{Mt();s(wk,"generateMcp");});function e4(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 t4(e){let t={};for(let[r,n]of Object.entries(e)){if(!Array.isArray(n))continue;let o=[];for(let i of n){if(!is(i))continue;let a=St(i),l=Zn(i),c=i.type==="prompt"?l||a:a||l;c&&o.push({command:c,show_output:true});}o.length>0&&(t[e4(r)]=o);}return t}function bk(e){if(!e.hooks||Object.keys(e.hooks).length===0)return [];let t=t4(e.hooks);return Object.keys(t).length===0?[]:[{path:Cm,content:JSON.stringify({hooks:t},null,2)}]}var G0=d(()=>{dn();Mt();s(e4,"windsurfEventName");s(t4,"toWindsurfHooks");s(bk,"generateHooks");});function Ak(e){let t=[];for(let r of e.skills){let n={name:r.name,description:r.description||void 0};n.description===void 0&&delete n.description;let o=Object.keys(n).length>0?x(n,r.body.trim()||""):r.body.trim()||"";t.push({path:`${Hn}/${r.name}/SKILL.md`,content:o});for(let i of r.supportingFiles)t.push({path:`${Hn}/${r.name}/${i.relativePath}`,content:i.content});}return t}var $0=d(()=>{U();Mt();s(Ak,"generateSkills");});var j0=d(()=>{D0();N0();v0();F0();M0();G0();$0();});var U0=d(()=>{j0();});function B0(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 K0(e,t,r){let n=join(e,_a),i=(await B(n)).filter(l=>l.endsWith(".md")),a=join(e,Sk);for(let l of i){let c=await I(l);if(!c)continue;let m=relative(n,l).replace(/\\/g,"/");await O(a);let p=join(a,m),u=r(c,l,p),{frontmatter:f,body:g}=T(u),h=await Ee(p,{description:typeof f.description=="string"?f.description:"",hasDescription:Object.prototype.hasOwnProperty.call(f,"description"),allowedTools:(()=>{let y=B0(f.allowedTools);return y.length>0?y:B0(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:zo,fromPath:l,toPath:`${Sk}/${m}`,feature:"commands"});}}var W0=d(()=>{b();U();de();Mt();s(B0,"toStringArray");s(K0,"importWorkflows");});async function H0(e,t,r,n=Hn){await cm([n],{projectRoot:e,destCanonicalSkillsDir:x0,targetName:"windsurf",normalize:r,results:t},[mm({canonicalAgentsDir:T0})]);}var z0=d(()=>{pm();Mt();s(H0,"importSkills");});async function J0(e,t){let r=join(e,Cm),n=await I(r);if(n)try{let o=JSON.parse(n);if(!o.hooks||typeof o.hooks!="object"||Array.isArray(o.hooks))return;let i=s4(o.hooks);if(Object.keys(i).length===0)return;let a=join(e,Ik);await O(dirname(a)),await L(a,stringify(i)),t.push({fromTool:zo,fromPath:r,toPath:Ik,feature:"hooks"});}catch{}}function o4(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 s4(e){let t={};for(let[r,n]of Object.entries(e)){if(!Array.isArray(n))continue;let o=o4(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 Y0(e,t){let r=[Em,A0];for(let n of r){let o=join(e,n),i=await I(o);if(i)try{let a=JSON.parse(i);if(!a.mcpServers||typeof a.mcpServers!="object")continue;let l=join(e,kk);await O(dirname(l)),await L(l,JSON.stringify({mcpServers:a.mcpServers},null,2)),t.push({fromTool:zo,fromPath:o,toPath:kk,feature:"mcp"});return}catch{}}}var X0=d(()=>{b();Mt();s(J0,"importWindsurfHooks");s(o4,"canonicalHookEventName");s(s4,"windsurfHooksToCanonical");s(Y0,"importWindsurfMcp");});async function Q0(e,t){let r=t?.scope??"project",n=[],o=await H(zo,e),i=await H("codex-cli",e),a=join(e,Om),l=join(e,_k),c=await I(l);if(c!==null){await O(a);let f=join(a,"_root.md"),g=o(c,l,f).trim(),h=await z(f,{root:true},g);await L(f,h),n.push({fromTool:"windsurf",fromPath:l,toPath:`${Om}/_root.md`,feature:"rules"});}if(c===null){let f=join(e,Vo),g=await I(f);if(g!==null){await O(a);let h=join(a,"_root.md"),y=o(i(g,f,h),f,h).trim(),_=await z(h,{root:true},y);await L(h,_),n.push({fromTool:"windsurf",fromPath:f,toPath:`${Om}/_root.md`,feature:"rules"});}}r!=="global"&&n.push(...await Re({srcDir:e,destDir:a,extensions:["AGENTS.md"],fromTool:"windsurf",normalize:o,mapEntry:s(async({srcPath:f,normalizeTo:g})=>{let h=relative(e,dirname(f)).replace(/\\/g,"/");if(!h||h==="."||basename(f)!=="AGENTS.md")return null;let y=h.replace(/\//g,"-");if(!kf(h))return await to(join(a,`${y}.md`)),null;let _=join(a,`${y}.md`);return {destPath:_,toPath:`${Om}/${y}.md`,feature:"rules",content:await z(_,{root:false,globs:[`${h}/**`]},g(_))}},"mapEntry")}));let m=join(e,ya);n.push(...await Re({srcDir:m,destDir:a,extensions:[".md"],fromTool:"windsurf",normalize:o,mapEntry:s(async({relativePath:f,normalizeTo:g})=>{if(f==="_root.md"&&c!==null)return null;let h=join(a,f),{frontmatter:y,body:_}=T(g(h)),R={...y};return typeof R.glob=="string"&&R.glob.trim()&&(R.globs=[R.glob],delete R.glob),{destPath:h,toPath:`${Om}/${f}`,feature:"rules",content:await z(h,{...R,root:false},_)}},"mapEntry")}));let p=join(e,b0),u=await I(p);if((u===null||!u.trim())&&(p=join(e,Lm),u=await I(p)),u!==null&&u.trim()){let f=u.split(/\r?\n/),g=[];for(let h of f){let y=h.trim();y&&!y.startsWith("#")&&g.push(y);}if(g.length>0){await O(join(e,".agentsmesh"));let h=join(e,Rk);await L(h,g.join(`
|
|
155
|
+
`)),n.push({fromTool:"windsurf",fromPath:p,toPath:Rk,feature:"ignore"});}}return await K0(e,n,o),await H0(e,n,o),await J0(e,n),await Y0(e,n),n}var q0=d(()=>{he();b();U();de();rr();Np();Mt();W0();z0();X0();s(Q0,"importFromWindsurf");});function Z0(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:zo,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:zo,message:`Windsurf cannot project these features yet: ${i.join(", ")}.`}),n}var eU=d(()=>{Mt();s(Z0,"lintRules");});function tU(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 rU(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 nU=d(()=>{Ie();s(tU,"lintCommands");s(rU,"lintMcp");});function m4(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 p4,u4,d4,f4,oU,sU=d(()=>{U0();$a();Mt();dt();q0();eU();nU();we();bp();Se();s(m4,"directoryScopedRuleDir");p4={name:"windsurf",primaryRootInstructionPath:Vo,generateRules:Lk,generateCommands:Ek,generateAgents:Ok,generateSkills:Ak,generateMcp:wk,generateHooks:bk,generateIgnore:Ck,importFrom:Q0},u4={rootInstructionPath:Vo,extraRuleOutputPaths(e){if(e.root)return [Vo];let t=m4(e.globs);return t!==null?[`${t}/AGENTS.md`]:[]},skillDir:Hn,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 `${ya}/${e}.md`},commandPath(e,t){return `${_a}/${e}.md`},agentPath(e,t){return cs(t,"windsurf")?`.windsurf/skills/${V(e)}/SKILL.md`:null}}},d4={rootInstructionPath:wm,skillDir:bm,managedOutputs:{dirs:[bm,Bu,P0],files:[wm,rh,nh,oh]},rewriteGeneratedPath(e){return e===Vo?wm:e.startsWith(`${ya}/`)||/\/AGENTS\.md$/.test(e)?null:e.startsWith(`${Hn}/`)?e.replace(`${Hn}/`,`${bm}/`):e.startsWith(`${_a}/`)?e.replace(`${_a}/`,`${Bu}/`):e===Cm?rh:e===Em?nh:e===Lm?oh:e},mirrorGlobalPath(e,t){return ge(e,".codeium/windsurf/skills",t)},paths:{rulePath(e,t){return wm},commandPath(e,t){return `${Bu}/${e}.md`},agentPath(e,t){return cs(t,"windsurf")?`${bm}/${V(e)}/SKILL.md`:null}}},f4={rules:"native",additionalRules:"partial",commands:gn("native","workflows"),agents:"embedded",skills:"native",mcp:"native",hooks:"native",ignore:"native",permissions:"none"},oU={id:"windsurf",metadata:{displayName:"Windsurf",category:"ide",officialUrl:"https://windsurf.com",shortDescription:"Codeium's agentic IDE"},generators:p4,capabilities:{rules:"native",additionalRules:"native",commands:gn("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:Z0,lint:{commands:tU,mcp:rU},project:u4,globalSupport:{capabilities:f4,detectionPaths:[wm,bm,Bu,rh,nh,oh],layout:d4},buildImportPaths:yR,detectionPaths:[".windsurfrules",".windsurf"],nativeInstall:{pickPaths:[{prefix:".windsurf/rules",feature:"rules",strategy:{kind:"basename",suffix:".md"}}],dialectHints:[{frontmatterKey:"trigger"}]},conversionDefaults:{agentsToSkills:true}};});function iU(e){return ae(e,Fo)}function aU(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:Bn,content:o}]:[]}var lU=d(()=>{ie();Be();bl();s(iU,"generateSkills");s(aU,"generateRules");});async function mU(e,t,r){let n=await I(join(e,t));if(n===null)return;let o;try{o=JSON.parse(n);}catch{return}if(o===null||typeof o!="object"||Array.isArray(o))return;let a=o.context_servers;if(a==null||typeof a!="object"||Array.isArray(a)||Object.keys(a).length===0)return;let l={};for(let[c,m]of Object.entries(a)){if(!m||typeof m!="object"||Array.isArray(m))continue;let p={...m};delete p.source,l[c]=p;}Object.keys(l).length!==0&&(await Xe(e,cU,l),r.push({fromTool:"zed",fromPath:t,toPath:cU,feature:"mcp"}));}var cU,pU=d(()=>{b();Sn();bl();cU=".agentsmesh/mcp.json";s(mU,"importZedMcp");});async function uU(e,t={}){let r=t.scope??"project",n=[],o=await H("zed",e,r);return n.push(...await X(ih,e,r,{normalize:o})),r==="project"&&await oe(e,Fo,"zed",n,o),await mU(e,r==="global"?Mo:vo,n),n}var dU=d(()=>{he();ie();Ae();pU();bl();xk();s(uU,"importFromZed");});function fU(e,t,r,n){return Y(e,t,r,{checkGlobMatches:n?.scope!=="global"}).map(o=>({...o,target:"zed"}))}var gU=d(()=>{Oe();bl();s(fU,"lintRules");});function hU(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 yU(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 _U(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 SU=d(()=>{Ie();s(hU,"lintHooks");s(yU,"lintPermissions");s(_U,"lintIgnore");});function I4(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 h4,y4,_4,S4,R4,ih,xk=d(()=>{lU();dU();gU();SU();we();bl();h4={name:"zed",primaryRootInstructionPath:Bn,generateRules:aU,generateSkills:iU,importFrom:uU},y4={rootInstructionPath:Bn,skillDir:Fo,managedOutputs:{dirs:[Fo],files:[Bn,vo]},paths:{rulePath(e){return Bn},commandPath(){return null},agentPath(){return null}}},_4={rootInstructionPath:void 0,managedOutputs:{dirs:[],files:[Mo]},rewriteGeneratedPath(e){return e===vo?Mo:e},paths:{rulePath(){return Mo},commandPath(){return null},agentPath(){return null}}},S4={rules:"native",additionalRules:"embedded",commands:"none",agents:"none",skills:"native",mcp:"native",hooks:"none",ignore:"none",permissions:"none"},R4={rules:"none",additionalRules:"none",commands:"none",agents:"none",skills:"none",mcp:"native",hooks:"none",ignore:"none",permissions:"none"};s(I4,"mergeZedSettings");ih={id:"zed",metadata:{displayName:"Zed",category:"ide",officialUrl:"https://zed.dev",shortDescription:"Collaborative AI editor"},generators:h4,capabilities:S4,emptyImportMessage:"No Zed config found (.rules or .zed/settings.json).",lintRules:fU,lint:{hooks:hU,permissions:yU,ignore:_U},project:y4,globalSupport:{capabilities:R4,detectionPaths:[Mo],layout:_4},importer:{rules:{feature:"rules",mode:"singleFile",source:{project:[Bn],global:[]},canonicalDir:FA,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:vo,content:JSON.stringify({context_servers:n},null,2)}]},mergeGeneratedOutputContent(e,t,r,n){return n===vo||n===Mo?I4(e,r):null},sharedArtifacts:{".agents/skills/":"consumer"},buildImportPaths:_R,detectionPaths:[Bn,vo]};});var lb={};l_(lb,{BUILTIN_TARGETS:()=>De,TARGET_IDS:()=>Ue,getBuiltinTargetDefinition:()=>on,getEffectiveTargetSupportLevel:()=>ah,getTargetCapabilities:()=>pi,getTargetDetectionPaths:()=>Dk,getTargetLayout:()=>We,getTargetManagedOutputs:()=>Nk,getTargetPrimaryRootInstructionPath:()=>C4,getTargetSkillDir:()=>Ku,isBuiltinTargetId:()=>Bt,resolveTargetFeatureGenerator:()=>Am,rewriteGeneratedOutputPath:()=>vk});function L4(){return Pk||(KO(De),Pk=new Map(De.map(e=>[e.id,e]))),Pk}function on(e){return L4().get(e)}function pi(e,t="project"){let r=on(e)??ne(e);if(!r)return;if(t==="global"&&!r.globalSupport)return M_(k4);let n=t==="global"?r.globalSupport.capabilities:r.capabilities;return M_(n)}function Dk(e,t="project"){let r=on(e)??ne(e);return r?t==="global"?r.globalSupport?.detectionPaths??[]:r.detectionPaths:[]}function We(e,t="project"){let r=on(e)??ne(e);if(r)return t==="global"?r.globalSupport?.layout:r.project}function C4(e,t="project"){return We(e,t)?.rootInstructionPath}function Ku(e,t="project"){return We(e,t)?.skillDir}function Nk(e,t="project"){return We(e,t)?.managedOutputs}function vk(e,t,r="project"){let n=We(e,r);return n?n.rewriteGeneratedPath?n.rewriteGeneratedPath(t):t:null}function RU(e,t,r,n){if(!e||!r)return false;let o=pi(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?!cs(r,e.id,true,n):false}function E4(e,t,r,n){return !e||!r?false:t==="commands"&&e.supportsConversion?.commands?Ic(r,e.id,true,n):t==="agents"&&e.supportsConversion?.agents?cs(r,e.id,true,n):false}function ah(e,t,r,n="project"){let o=pi(e,n)?.[t]?.level??"none",i=on(e)??ne(e);return n==="global"&&i&&!i.globalSupport?"none":o==="none"&&E4(i,t,r,n)?"embedded":o!=="embedded"?o:RU(i,t,r,n)?"none":o}function Am(e,t,r,n="project"){let o=on(e)??ne(e);if(!o?.generators||RU(o,t,r,n))return;let i=O4[t];return i===null?void 0:i(o.generators)}var k4,De,Pk,O4,Te=d(()=>{bp();$a();rt();G_();cn();nS();SR();RR();kR();mx();OR();LP();_D();qR();sI();cI();OI();wI();bI();VI();YI();XI();QI();rk();ok();ak();mk();pk();uk();fk();gk();hk();yk();sU();xk();k4={rules:"none",additionalRules:"none",commands:"none",agents:"none",skills:"none",mcp:"none",hooks:"none",ignore:"none",permissions:"none"},De=[Of,Zf,eg,tg,cx,rg,kP,yD,cg,gg,_g,bg,Ag,Tg,Gg,$g,jg,Ug,Wg,Hg,Vg,Jg,Yg,Xg,qg,Zg,eh,th,oU,ih];s(L4,"builtinTargetsMap");s(on,"getBuiltinTargetDefinition");s(pi,"getTargetCapabilities");s(Dk,"getTargetDetectionPaths");s(We,"getTargetLayout");s(C4,"getTargetPrimaryRootInstructionPath");s(Ku,"getTargetSkillDir");s(Nk,"getTargetManagedOutputs");s(vk,"rewriteGeneratedOutputPath");s(RU,"isFeatureSuppressedByConversion");s(E4,"isConversionUpgrading");s(ah,"getEffectiveTargetSupportLevel");O4={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(Am,"resolveTargetFeatureGenerator");});function A4(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 lh(e){let t=[];for(let n of De){let o=0,i=0;for(let a of n.detectionPaths){if(!await j(join(e,a)))continue;let l=b4.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(A4);let r=t[0];return r.uniqueHits===0?null:r.id}var b4,IU,Fk=d(()=>{b();Te();b4=(()=>{let e=new Map;for(let t of De)for(let r of t.detectionPaths)e.set(r,(e.get(r)??0)+1);return e})();s(A4,"compare");s(lh,"detectNativeFormat");IU=De.map(e=>e.detectionPaths[0]).filter(e=>e!==void 0);});async function Wu(e,t){let r=ne(t);if(!r)throw new Error(`No importer registered for native target: ${t}`);return r.generators.importFrom(e)}var Mk=d(()=>{rt();s(Wu,"importNativeToCanonical");});async function Bl(e){if(!await j(e))return false;if(await j(join(e,$k)))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,$k)))return !0}catch{return false}return false}async function Hu(e,t={}){if(!await j(e))return [];if(await j(join(e,$k))){let r=await af(e,t);return r?[r]:[]}return Ai(e,t)}var $k,ch=d(()=>{b();_c();$k="SKILL.md";s(Bl,"isSkillPackLayout");s(Hu,"loadSkillsAtExtendPath");});async function mh(e,t={}){return (await bi(e,t)).filter(n=>!qn(basename(n.source)))}async function ph(e,t={}){return (await wi(e,t)).filter(n=>!qn(basename(n.source)))}async function uh(e,t={}){return (await Oi(e,t)).filter(n=>!qn(basename(n.source)))}async function kU(e,t={}){return Ai(e,t)}var dh=d(()=>{Op();Ep();Cp();_c();ss();s(mh,"importAgents");s(ph,"importCommands");s(uh,"importRules");s(kU,"importSkills");});function Uk(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 CU(e,t){for(let r of Uk(ne(e)?.importer,t))if(r.extensions.some(n=>!Bk(n)))return true;return false}function M4(e,t){let r=new Set;for(let n of Uk(ne(e)?.importer,t))for(let o of n.extensions)Bk(o)||r.add(o.toLowerCase());return r}function G4(e){return gf().filter(t=>CU(t,e))}async function U4(e,t,r){return $4[e](t,r)}async function B4(e,t,r){return j4[e](t,r)}async function K4(e,t,r,n={}){let o=Uk(ne(t)?.importer,r),i=await B(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))&&!qn(basename(p)));if(l.length===0)return {entities:[],cleanup:s(async()=>{},"cleanup")};let c=await mkdtemp(join(tmpdir(),`am-tool-${r}-${t}-`)),m=s(async()=>{await rm$1(c,{recursive:true,force:true});},"cleanup");try{for(let u of l){let f=await I(u);if(f===null)continue;let g=relative(e,u).replaceAll("\\","/"),h=null;for(let y of o){if(!y.extensions.some(k=>u.toLowerCase().endsWith(k.toLowerCase())))continue;let R=await y.map({absolutePath:u,relativePath:g,content:f,destDir:c,normalizeTo:s(()=>f,"normalizeTo")});if(R){h=R;break}}h&&(await O(dirname(h.destPath)),await L(h.destPath,h.content));}return {entities:await U4(r,c,n),cleanup:m}}catch(p){throw await m(),p}}async function Kk(e,t,r={}){let n=r.restrictToTarget,o=n?CU(n,t)?[n]:[]:G4(t),i=new Set;for(let f of o)for(let g of M4(f,t))i.add(g);let a=await B4(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 K4(e,f,t,r.parseOpts??{});l.push(g.cleanup);for(let h of g.entities){let y=c(h);m.has(y)||m.set(y,h);}}return {entities:[...m.values()].sort((f,g)=>c(f).localeCompare(c(g))),cleanup:s(async()=>{await Promise.allSettled(l.map(f=>f()));},"cleanup")}}async function fh(e,t={}){let r=await Kk(e,"commands",t);return {commands:[...r.entities],cleanup:r.cleanup}}async function gh(e,t={}){let r=await Kk(e,"rules",t);return {rules:[...r.entities],cleanup:r.cleanup}}async function hh(e,t={}){let r=await Kk(e,"agents",t);return {agents:[...r.entities],cleanup:r.cleanup}}var $4,j4,yh=d(()=>{Op();Ep();Cp();b();rt();ss();dh();s(Uk,"directorySpecsFor");s(Bk,"isMarkdownExtension");s(CU,"hasNonMdEntityMapper");s(M4,"nonMdEntityExtensions");s(G4,"targetsWithNonMdEntityMapper");$4={rules:Oi,commands:wi,agents:bi},j4={rules:uh,commands:ph,agents:mh};s(U4,"parseEntityDir");s(B4,"importEntities");s(K4,"readToolNativeEntities");s(Kk,"readEntityDirWithMappers");s(fh,"readCommandsDirWithMappers");s(gh,"readRulesDirWithMappers");s(hh,"readAgentsDirWithMappers");});function z4(){return {rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}function V4(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 _h(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 zk(e,t){if(basename(e)===t)return e;let r=join(e,t);return await j(r)?r:null}async function J4(e,t,r){let n=s(async()=>{},"noop"),o=await zk(e,"rules");if(!o)return {rules:[],cleanup:n};if(!r)return {rules:await uh(o,t),cleanup:n};let i=await gh(o,{parseOpts:t});return {rules:[...i.rules],cleanup:i.cleanup}}async function Y4(e,t,r){let n=s(async()=>{},"noop"),o=await zk(e,"commands");if(!o)return {commands:[],cleanup:n};if(!r)return {commands:await ph(o,t),cleanup:n};let i=await fh(o,{parseOpts:t});return {commands:[...i.commands],cleanup:i.cleanup}}async function X4(e,t,r){let n=s(async()=>{},"noop"),o=await zk(e,"agents");if(!o)return {agents:[],cleanup:n};if(!r)return {agents:await mh(o,t),cleanup:n};let i=await hh(o,{parseOpts:t});return {agents:[...i.agents],cleanup:i.cleanup}}async function Q4(e,t){if(await Bl(e))return Hu(e,t);let r=join(e,"skills");return await Bl(r)?Hu(r,t):[]}async function Sh(e,t={}){let r=s(async()=>{},"noop"),n=join(e,".agentsmesh");if(await j(n))return {canonical:await Kt(e,t),cleanup:r};let o=t.enableTargetEntityMappers??false,i=z4(),a=await J4(e,t,o);i.rules=a.rules;let l=await Y4(e,t,o);i.commands=l.commands;let c=await X4(e,t,o);i.agents=c.agents,i.skills=await Q4(e,t);let m=s(async()=>{await Promise.allSettled([a.cleanup(),l.cleanup(),c.cleanup()]);},"mergedCleanup");if(V4(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 Vk=d(()=>{b();dh();yh();Ga();ch();s(z4,"emptyCanonical");s(V4,"isCanonicalSliceEmpty");s(_h,"normalizeSlicePath");s(zk,"resolveEntityDir");s(J4,"parseRulesAt");s(Y4,"parseCommandsAt");s(X4,"parseAgentsAt");s(Q4,"loadSkillsForPartialSlice");s(Sh,"loadCanonicalSliceAtPath");});async function Rh(e){let t=await I(e);if(!t)return "";let r=mn(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 EU(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 !(TO(o)||!n.includes("/")&&(of(n)||xO(n)))},"filter")});}var Jk=d(()=>{b();U();ss();s(Rh,"readSkillFrontmatterName");s(EU,"cpFilteredSkill");});function Yk(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):typeof e=="string"?e?[e]:[]:[]}function e6(e){let t={...e},r=e.alwaysApply===true;if(t.root=r,delete t.alwaysApply,!r){let n=Yk(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 t6(e){let t={...e};return t.trigger==="always"&&(t.trigger="always_on"),typeof t.glob=="string"&&(t.globs=Yk(t.globs).length>0?Yk(t.globs):[t.glob],delete t.glob),t}function Xk(e){let t=mn(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=e6(r):"trigger"in r||"glob"in r?o=t6(r):o=r,x(o,n.trim())}var OU=d(()=>{U();s(Yk,"toStrArray");s(e6,"normalizeCursorKeys");s(t6,"normalizeWindsurfKeys");s(Xk,"normalizeMdcToCanonical");});function Qk(e){return e.toLowerCase().replace(/[^a-z0-9.-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}function qk(e){return e.toLowerCase().endsWith(".mdc")?basename(e).replace(/\.mdc$/i,".md"):basename(e)}function bU(e,t,r){let o=relative(e,t).replace(/\\/g,"/").split("/");if(o.pop(),o.length===0)return r;let i=Qk(o[o.length-1]);return i?`${i}-${r}`:r}var AU=d(()=>{s(Qk,"sanitizeNameSegment");s(qk,"computeDestName");s(bU,"namespacedName");});async function i6(){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 DU(e,t){let r=e.toLowerCase();return !!(r.endsWith(".md")||t&&r.endsWith(".mdc"))}async function a6(e,t,r){if(!DU(e,r))throw new Error(`Manual install only supports .md files for this collection: ${e}`);if(await O(t),e.toLowerCase().endsWith(".mdc")){let n=await I(e);if(!n)return;let o=basename(e).replace(/\.mdc$/i,".md");await writeFile(join(t,o),Xk(n));}else await cp$1(e,join(t,basename(e)));}async function l6(e,t,r){if((await stat(e)).isFile())return a6(e,t,r);let o=(await B(e)).filter(l=>DU(l,r)&&!qn(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=qk(l);i.set(c,(i.get(c)??0)+1);}let a=new Map;await O(t);for(let l of o){let c=qk(l),p=(i.get(c)??0)>1?bU(e,l,c):c;if(a.has(p)&&a.get(p)!==l){let f=relative(e,l).replace(/\\/g,"/").split("/").map(Qk).filter(Boolean),g=c.includes(".")?"."+c.split(".").pop():"";p=f.join("-").replace(/\.(md|mdc)$/i,"")+g||p;}if(a.has(p))throw new Error(`Manual install could not resolve duplicate name "${p}" under ${e} (${a.get(p)} and ${l}).`);if(a.set(p,l),l.toLowerCase().endsWith(".mdc")){let f=await I(l);if(!f)continue;await writeFile(join(t,p),Xk(f));}else await cp$1(l,join(t,p));}}async function TU(e,t,r){if(r.length===0)return false;let n=new Set(r),o=new Map;for(let i of await B(e)){if(!i.endsWith("/SKILL.md")&&!i.endsWith("\\SKILL.md"))continue;let a=dirname(i),l=basename(a);if(!n.has(l))continue;let c=o.get(l);if(c&&c!==a)throw new Error(`Manual skill replay found duplicate skill "${l}" under ${e} (${c} and ${a}).`);o.set(l,a);}if(o.size!==r.length)return false;await O(t);for(let i of r)await cp$1(o.get(i),join(t,i),{recursive:true});return true}async function c6(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 Bl(e)){if((await stat(join(e,"SKILL.md")).catch(()=>null))?.isFile()){if(await TU(e,t,r.preferredSkillNames??[]))return;let l=await Rh(join(e,"SKILL.md"))||basename(e),c=join(t,l);await O(t),await EU(e,c);return}if(await TU(e,t,r.preferredSkillNames??[]))return;await O(t);let o=await B(e),i=new Set;for(let a of o.filter(l=>l.endsWith("/SKILL.md")||l.endsWith("\\SKILL.md")))i.add(relative(e,dirname(a)).split(/[\\/]/)[0]);for(let a of i)await cp$1(join(e,a),join(t,a),{recursive:true});return}throw new Error(`Manual skill install expects a skill directory or skills collection at ${e}.`)}async function kh(e,t,r={}){let n=await i6();try{let o=join(n.discoveryRoot,".agentsmesh",t);return t==="skills"?await c6(e,o,r):await l6(e,o,t==="rules"),n}catch(o){throw await n.cleanup(),o}}var eL=d(()=>{b();ch();Jk();ss();OU();AU();s(i6,"createStageRoot");s(DU,"isAcceptedFile");s(a6,"stageSingleFile");s(l6,"stageMarkdownCollection");s(TU,"stagePreferredSkills");s(c6,"stageSkills");s(kh,"stageManualInstallScope");});function m6(){return {rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}async function NU(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 kh(o,e.as);try{return Kt(join(i.discoveryRoot,".agentsmesh"))}finally{await i.cleanup();}}if(!e.path){let o=join(t,".agentsmesh");if(!await j(o)){if(await Bl(t)){let a=await Hu(t);return {...m6(),skills:a}}let i=e.target??await lh(t);if(!i)throw new Error(`Extend "${e.name}": No supported agent configuration found in ${t}.
|
|
156
|
+
Expected one of: .agentsmesh/, ${IU.join(", ")}.`);S.info(`[agentsmesh] Extend "${e.name}": ${e.target?"specified":"detected"} ${i} format, importing to .agentsmesh/...`),await Wu(t,i);}return Kt(t)}let r=join(t,e.path);if(!await j(r))throw new Error(`Extend "${e.name}": path does not exist: ${r}`);if(e.target){let o=join(t,".agentsmesh");return await j(o)||(S.info(`[agentsmesh] Extend "${e.name}": path "${e.path}" with target "${e.target}" \u2014 importing at extend root, then loading canonical.`),await Wu(t,e.target)),Kt(t)}let{sliceRoot:n}=await _h(r);try{let{canonical:o}=await Sh(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 vU=d(()=>{Fk();b();ue();Ga();Mk();ch();Vk();eL();s(m6,"emptyCanonical");s(NU,"loadCanonicalForExtend");});function Lh(e,t,r,n){if(!r)return e;let o={...e};if(r.skills?.length&&t.includes("skills")){let i=new Set(r.skills),a=o.skills;o={...o,skills:a.filter(l=>i.has(l.name))};for(let l of r.skills)a.some(c=>c.name===l)||S.warn(`[agentsmesh] pick name "${l}" not found in skills from extend "${n}".`);}if(r.commands?.length&&t.includes("commands")){let i=new Set(r.commands),a=o.commands;o={...o,commands:a.filter(l=>i.has(l.name))};for(let l of r.commands)a.some(c=>c.name===l)||S.warn(`[agentsmesh] pick name "${l}" not found in commands from extend "${n}".`);}if(r.agents?.length&&t.includes("agents")){let i=new Set(r.agents),a=o.agents;o={...o,agents:a.filter(l=>i.has(l.name))};for(let l of r.agents)a.some(c=>c.name===l)||S.warn(`[agentsmesh] pick name "${l}" not found in agents from extend "${n}".`);}if(r.rules?.length&&t.includes("rules")){let i=new Set(r.rules),a=o.rules,l=s(c=>basename(c).replace(/\.md$/i,""),"stem");o={...o,rules:a.filter(c=>i.has(l(c.source)))};for(let c of r.rules)a.some(m=>l(m.source)===c)||S.warn(`[agentsmesh] pick name "${c}" not found in rules from extend "${n}".`);}return o}var tL=d(()=>{ue();s(Lh,"applyExtendPick");});function Ch(e,t){if(t.sourceKind==="local")return {canonical:e,stripped:[]};let r=[],n=e.hooks,o=e.permissions,i=e.mcp;return n!==null&&!t.acceptHooks&&(n=null,r.push("hooks")),o!==null&&!t.acceptPermissions&&(o=null,r.push("permissions")),i!==null&&!t.acceptMcp&&(i=null,r.push("mcp")),r.length===0?{canonical:e,stripped:[]}:{canonical:{...e,hooks:n,permissions:o,mcp:i},stripped:r}}var rL=d(()=>{s(Ch,"stripUntrustedElevatedArtifacts");});function FU(e,t){let r=t.accept??[];return Ch(e,{sourceKind:t.isRemote?"git":"local",acceptHooks:r.includes("hooks"),acceptPermissions:r.includes("permissions"),acceptMcp:r.includes("mcp")})}var MU=d(()=>{rL();s(FU,"gateExtendElevatedArtifacts");});var d6,Tm,Eh=d(()=>{d6=["rules","commands","agents","skills"],Tm=z$1.enum(d6);});var f6,GU,$U=d(()=>{rs();Eh();f6=z$1.enum(["github","gitlab","git","local"]),GU=z$1.object({name:z$1.string().min(1),source:z$1.string().min(1),version:z$1.string().optional(),source_kind:f6,installed_at:z$1.string(),updated_at:z$1.string(),features:z$1.array(uc).min(1),pick:_p.optional(),target:Or.optional(),path:z$1.string().optional(),paths:z$1.array(z$1.string().min(1)).min(1).optional(),as:Tm.optional(),content_hash:z$1.string(),license:z$1.string().nullable().optional()});});function jU(e){let t=va(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 h6(e,t){return t?e.length===t.length&&[...e].sort().every((r,n)=>r===[...t].sort()[n]):true}async function Sa(e){let t=join(e,"pack.yaml"),r=await I(t);if(r===null)return null;try{let n=parse(r);return GU.parse(n)}catch{return null}}async function BU(e,t,r){if(!await j(e))return null;let n=jU(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 Sa(a);if(l&&jU(l.source)===n&&l.target===r.target&&l.as===r.as&&h6(l.features,r.features))return {meta:l,packDir:a,name:l.name}}return null}async function Oh(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 Sa(o);i&&r.push({meta:i,packDir:o,name:i.name});}return r}var xm=d(()=>{b();$U();Fa();s(jU,"sourceIdentity");s(h6,"sameFeatures");s(Sa,"readPackMetadata");s(BU,"findExistingPack");s(Oh,"listPacks");});function KU(){return {rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}async function y6(e){let[t,r,n,o,i,a,l,c]=await Promise.all([Oi(join(e,"rules")),wi(join(e,"commands")),bi(join(e,"agents")),Ai(join(e,"skills")),pn(join(e,"mcp.json")),lf(join(e,"permissions.yaml")),cf(join(e,"hooks.yaml")),mf(join(e,"ignore"))]);return {...KU(),rules:t,commands:r,agents:n,skills:o,mcp:i,permissions:a,hooks:l,ignore:c}}async function WU(e){let t=join(e,"packs"),r=await Oh(t),n=KU();for(let{meta:o,packDir:i}of r){let a=await y6(i),l=oL(a,o.features),c=Lh(l,o.features,o.pick,o.name);n=Rc(n,c);}return n}var HU=d(()=>{Cp();Ep();Op();_c();wp();T_();x_();P_();N_();Jo();tL();xm();s(KU,"emptyCanonical");s(y6,"loadPackCanonical");s(WU,"loadPacksCanonical");});function oL(e,t){if(t.length===0)return zU();let r=new Set(t.flatMap(n=>S6[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 zU(){return {rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]}}async function $t(e,t,r={},n=join(t,".agentsmesh")){let o=await gc(e,t,{refreshCache:r.refreshRemoteCache===true}),i=zU();for(let c of o){let m=await NU(c),p=oL(m,c.features),u=FU(p,c);if(u.stripped.length>0){let g=u.stripped.join(", ");S.warn(`[agentsmesh] Extend "${c.name}": stripped elevated artifacts from a remote source: ${g}. Add \`accept: [${g}]\` to this extends entry in agentsmesh.yaml to keep them.`);}let f=Lh(u.canonical,c.features,c.pick,c.name);i=Rc(i,f);}let a=await WU(n);i=Rc(i,a);let l=await Kt(n);return i=Rc(i,l),{canonical:i,resolvedExtends:o}}var S6,Jo=d(()=>{ef();Ga();N_();vU();tL();MU();HU();ue();S6={rules:["rules"],commands:["commands"],agents:["agents"],skills:["skills"],mcp:["mcp"],permissions:["permissions"],hooks:["hooks"],ignore:["ignore"]};s(oL,"filterCanonicalByFeatures");s(zU,"emptyCanonical");s($t,"loadCanonicalWithExtends");});function _5(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 S5(e){return e.startsWith("file:")||e.startsWith("./")||e.startsWith("../")||e.startsWith("/")||/^[A-Za-z]:[/\\]/.test(e)}function OB(e){try{return realpathSync(e)}catch{let t=resolve(e),r=[];for(;;){let n=dirname(t);if(n===t)return resolve(e);r.unshift(basename(t));try{return join(realpathSync(n),...r)}catch{t=n;}}}}function wB(e,t){let r=OB(resolve(t)),n=OB(e);if(!(n===r||n.startsWith(`${r}${sep}`)))throw new Error(`Plugin source resolves outside project root (escapes ${r}): ${n}`)}async function R5(e,t){let{source:r}=e,n;if(S5(r)){let i=r.startsWith("file:")?fileURLToPath(r):r,a=resolve(t,i);wB(a,t),n=pathToFileURL(a).href;}else {let i=_5(r,t);wB(i,t),n=pathToFileURL(i).href;}return await import(n)}function I5(e){return "descriptor"in e?[e.descriptor]:"descriptors"in e&&Array.isArray(e.descriptors)?e.descriptors:"default"in e?[e.default]:[]}async function jh(e,t){let r;try{r=await R5(e,t);}catch(i){throw new Error(`Plugin '${e.source}' failed to import: ${i instanceof Error?i.message:String(i)}`,{cause:i})}let n=I5(r),o=[];for(let i of n)try{let a=pf(i);df(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 bB(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 jh(a,t);return r.push(l),null}catch(l){let c=`Plugin '${a.source}' failed to load: ${l instanceof Error?l.message:String(l)}`;return a.strict===true||n?new Error(c):(S.warn(c),null)}}))).filter(a=>a!==null);if(i.length>0){let a=i.map(l=>` - ${l.message}`).join(`
|
|
157
157
|
`);throw new Error(`agentsmesh: ${i.length} plugin(s) failed strict load:
|
|
158
|
-
${a}`)}return r}var
|
|
159
|
-
`)}var an,
|
|
158
|
+
${a}`)}return r}var fL=d(()=>{v_();rt();ue();s(_5,"resolveNpmSpecifier");s(S5,"isLocalSource");s(OB,"canonicalize");s(wB,"assertSourceInsideProjectRoot");s(R5,"importPluginModule");s(I5,"extractDescriptors");s(jh,"loadPlugin");s(bB,"loadAllPlugins");});async function ze(e,t){e.plugins.length!==0&&await bB(e.plugins,t);}var sn=d(()=>{fL();s(ze,"bootstrapPlugins");});function yL(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=W5(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]=ah(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]=ah(u,"additionalRules",e,r);n.push({feature:`additional rules (${m.length})`,count:m.length,support:p});}}}return n}function W5(e){if(!e)return 0;let t=0;for(let r of Object.values(e))Array.isArray(r)&&(t+=r.length);return t}var MB=d(()=>{Te();s(yL,"buildCompatibilityMatrix");s(W5,"countHooks");});function GB(e){return H5[e]??e}var H5,$B=d(()=>{H5={"claude-code":"Claude"};s(GB,"matrixColumnLabel");});function jB(e){return Object.fromEntries(z5.map(t=>[t,Object.fromEntries(Ue.map(r=>{let o=pi(r,e)?.[t];return [r,o??{level:"none"}]}))]))}function V5(e,t){return ki()?`${e}${t}${Xu.reset}`:t}function BB(e){let t=_L[e];return V5(J5[e],t)}var z5,UB,_L,Xu,J5,SL=d(()=>{cn();Te();fp();z5=["rules","additionalRules","commands","agents","skills","mcp","hooks","ignore","permissions"];s(jB,"buildSupportMatrix");UB=jB("project"),jB("global"),_L={native:"\u2713",embedded:"\u25C6",partial:"\u25D0",none:"\u2013"},Xu={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(V5,"colorize");J5={native:Xu.green,embedded:Xu.blue,partial:Xu.yellow,none:Xu.dim};s(BB,"coloredSymbol");});function X5(e){return e.replace(/\s*\([^)]*\)\s*$/,"").trim()}function Q5(e){let t=X5(e);return Y5[t]??t.charAt(0).toUpperCase()+t.slice(1)}function q5(e,t){let r=Math.max(0,t-e.length),n=Math.floor(r/2);return " ".repeat(n)+e+" ".repeat(r-n)}function RL(e,t){let r=ki(),n=s((y,_)=>r?`${y}${_}${an.reset}`:_,"c"),o=e.map(y=>Q5(y.feature)),i=o.map(y=>Math.max(3,y.length)),a=t.map(y=>({t:y,label:GB(y)})).sort((y,_)=>y.label.localeCompare(_.label)),l=Math.max(6,...a.map(y=>y.label.length)),c=[l,...i],m=s((y,_,R)=>n(an.dim,y+c.map(k=>"\u2500".repeat(k+2)).join(_)+R),"hline"),p=n(an.dim,"\u2502"),u=s(y=>p+y.map(_=>` ${_} `).join(p)+p,"wrapRow"),f=u([n(an.bold+an.cyan,"Target".padEnd(l)),...o.map((y,_)=>n(an.bold+an.magenta,q5(y,i[_])))]),g=[m("\u250C","\u252C","\u2510"),f,m("\u251C","\u253C","\u2524")];a.forEach(({t:y,label:_},R)=>{let k=[n(an.cyan,_.padEnd(l)),...e.map((w,D)=>{let N=w.support[y]??"none",K=r?BB(N):_L[N],J=i[D]-1,ee=Math.floor(J/2);return " ".repeat(ee)+K+" ".repeat(J-ee)})];g.push(u(k)),g.push(R===a.length-1?m("\u2514","\u2534","\u2518"):m("\u251C","\u253C","\u2524"));}),a.length===0&&g.push(m("\u2514","\u2534","\u2518"));let h=n(an.green,"\u2713")+" native "+n(an.blue,"\u25C6")+" embedded "+n(an.yellow,"\u25D0")+" partial "+n(an.dim,"\u2013")+" none";return [...g,"",h].join(`
|
|
159
|
+
`)}var an,Y5,KB=d(()=>{$B();SL();fp();an={bold:"\x1B[1m",dim:"\x1B[2m",cyan:"\x1B[36m",magenta:"\x1B[35m",green:"\x1B[32m",blue:"\x1B[34m",yellow:"\x1B[33m",reset:"\x1B[0m"},Y5={rules:"Rules","additional rules":"Additional Rules",commands:"Commands",agents:"Agents",skills:"Skills",mcp:"MCP",hooks:"Hooks",ignore:"Ignore",permissions:"Permissions"};s(X5,"baseName");s(Q5,"featureLabel");s(q5,"center");s(RL,"formatMatrix");});function kL(e){let t=[];if(e.rules.length>0&&t.push(`rules: ${e.rules.map(r=>basename(r.source)).join(", ")}`),e.commands.length>0&&t.push(`commands: ${e.commands.map(r=>basename(r.source)).join(", ")}`),e.agents.length>0&&t.push(`agents: ${e.agents.map(r=>basename(r.source)).join(", ")}`),e.skills.length>0&&t.push(`skills: ${e.skills.map(r=>r.name).join(", ")}`),e.mcp&&Object.keys(e.mcp.mcpServers).length>0&&t.push(`mcp: ${Object.keys(e.mcp.mcpServers).join(", ")}`),e.hooks){let r=Object.values(e.hooks).reduce((n,o)=>n+(Array.isArray(o)?o.length:0),0);r>0&&t.push(`hooks: ${r} entries in hooks.yaml`);}return e.ignore.length>0&&t.push("ignore: .agentsmesh/ignore"),e.permissions&&e.permissions.allow.length+e.permissions.deny.length>0&&t.push("permissions: .agentsmesh/permissions.yaml"),t.length===0?"":`
|
|
160
160
|
Per-file details:
|
|
161
161
|
`+t.join(`
|
|
162
162
|
`)+`
|
|
163
|
-
`}var
|
|
163
|
+
`}var WB=d(()=>{s(kL,"formatVerboseDetails");});var LL=d(()=>{MB();KB();WB();});var CL={};l_(CL,{runMatrix:()=>vm});async function vm(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",o=e.targets,i=typeof o=="string"&&o?o.split(",").map(f=>f.trim()).filter(Boolean):void 0,{config:a,context:l}=await _e(r,n);await ze(a,r);let{canonical:c}=await $t(a,l.configDir,{},l.canonicalDir),m=i??[...a.targets,...a.pluginTargets??[]],p=yL(a,c,n),u=kL(c);return {exitCode:0,data:{targets:m,features:p.map(f=>({name:f.feature,support:f.support}))},verboseDetails:u||void 0}}var Qu=d(()=>{tt();Jo();LL();sn();s(vm,"runMatrix");});var EL={};l_(EL,{renderMatrix:()=>Fm});function Fm(e,t){if(e.data.features.length===0){S.info("No features enabled. Enable features in agentsmesh.yaml.");return}let r=e.data.features.map(o=>({feature:o.name,count:0,support:o.support})),n=RL(r,e.data.targets);process.stdout.write(n),process.stdout.write(`
|
|
164
164
|
`),t?.verbose&&e.verboseDetails&&(process.stdout.write(e.verboseDetails),process.stdout.write(`
|
|
165
|
-
`));}var
|
|
165
|
+
`));}var qu=d(()=>{ue();LL();s(Fm,"renderMatrix");});function bE(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(bE,"createRouter");ue();var Li={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"}},PE=Object.keys(Li);function jd(){let e=Li.add;return `
|
|
166
166
|
Usage: ${e.usage}
|
|
167
|
-
Example: ${e.example}`}s($d,"lessonsAddHint");var jd=[{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)"}],i_=[{name:"init",usage:"agentsmesh init [flags]",description:"Create agentsmesh.yaml, agentsmesh.local.yaml, and canonical .agentsmesh scaffold. On a TTY runs an interactive wizard (targets, import, generate; plus lessons in project scope, never in --global); --yes, --json, and non-TTY/CI run non-interactively with current behavior.",flags:[{name:"--global",description:"Initialize canonical home config under ~/.agentsmesh/ (global targets include claude-code, antigravity, codex-cli, cursor, gemini-cli, kilo-code)"},{name:"--yes",description:"Auto-import detected tool configs, then add example scaffold only under empty canonical paths"},{name:"--lessons",description:"Scaffold the lessons recall + capture subsystem under .agentsmesh/lessons/ and append the procedural rule to .agentsmesh/rules/_root.md. Project mode only. Safe to run on an already-initialized project to retroactively add the subsystem."}]},{name:"generate",usage:"agentsmesh generate [flags]",description:"Generate target files from canonical sources",flags:[{name:"--global",description:"Generate user-level config from ~/.agentsmesh/ (e.g. claude-code, antigravity, codex-cli, gemini-cli, kilo-code; Cursor writes ~/.cursor/rules, ~/.cursor/AGENTS.md, hooks, ignore, MCP, skills, agents, commands; legacy ~/.agentsmesh-exports/cursor/user-rules.md is import-only)"},{name:"--targets <csv>",description:"Limit generation to target IDs (comma-separated)"},{name:"--check",description:"Check drift only; exit non-zero when out of sync"},{name:"--dry-run",description:"Preview file changes without writing outputs"},{name:"--force",description:"Bypass lock-strategy blocked feature violations"},{name:"--refresh-cache",description:"Refresh remote extends cache before loading"},{name:"--no-cache",description:"Alias for --refresh-cache"}]},{name:"import",usage:"agentsmesh import --from <target> [flags]",description:"Import existing tool config into canonical .agentsmesh files",flags:[{name:"--from <target>",description:"Source tool ID to import from (required)"},{name:"--global",description:"Import from user-level paths into ~/.agentsmesh/ (claude-code, antigravity, codex-cli, gemini-cli, kilo-code; cursor reads ~/.cursor/{rules,AGENTS.md,mcp.json,hooks.json,cursorignore,skills,agents,commands} and legacy ~/.agentsmesh-exports/cursor/user-rules.md)"}]},{name:"convert",usage:"agentsmesh convert --from <target> --to <target> [flags]",description:"Convert configuration directly from one tool to another",flags:[{name:"--from <target>",description:"Source tool ID to convert from (required)"},{name:"--to <target>",description:"Destination tool ID to convert to (required)"},{name:"--global",description:"Convert user-level config (use home directory paths)"},{name:"--dry-run",description:"Preview conversion without writing files"}]},{name:"install",usage:"agentsmesh install <source> [flags]",description:"Install rules/commands/agents/skills from a local path or remote repo. Auto-classifies anthropic-skill-pack / canonical-agentsmesh / tool-native sources. When auto-detection is ambiguous or refuses a non-standard layout, override with: --path <dir> to narrow scope, --as <kind> to force a flat collection (rules|commands|agents|skills), --target <id> to lock the native importer, or --all to install every sub-pack of a marketplace.",flags:[{name:"<source>",description:"GitHub/GitLab/tree/blob URL, git+ URL, SSH, or local path"},{name:"--sync",description:"Reinstall missing packs recorded in .agentsmesh/installs.yaml"},{name:"--path <dir>",description:"Subdirectory inside source repo when not embedded in URL"},{name:"--target <id>",description:"Native format used for import-at-root discovery (same as extends.target)"},{name:"--as <kind>",description:"Manual collection mode: rules, commands, agents, or skills"},{name:"--name <id>",description:"Override generated install entry/pack name"},{name:"--extends",description:"Write install as extends entry instead of materialized pack"},{name:"--dry-run",description:"Preview only (no YAML write, no pack write, no generate)"},{name:"--global",description:"Install into ~/.agentsmesh/ and regenerate user-level config"},{name:"--all",description:"Install every sub-pack from a marketplace source"},{name:"--force",description:"Non-interactive mode; include invalid resources and skip selection prompts (implied by --json)"},{name:"--accept-hooks",description:"Trust hooks.yaml from a non-local source. Stripped by default \u2014 hook commands run as shell on tool events."},{name:"--accept-permissions",description:"Trust permissions.yaml from a non-local source. Stripped by default \u2014 grants allowlist tool capabilities."},{name:"--accept-mcp",description:"Trust mcp.json from a non-local source. Stripped by default \u2014 MCP launch specs spawn child processes."},{name:"--accept-elevated",description:"Convenience for --accept-hooks --accept-permissions --accept-mcp together."}]},{name:"installs",usage:"agentsmesh installs <subcommand> [flags]",description:"Read-only inventory of installed packs (subcommands: list)",flags:[{name:"list",description:"List installed packs (NAME, SOURCE, FEATURES, INSTALLED)"},{name:"--global",description:"Read from ~/.agentsmesh/installs.yaml"}]},{name:"uninstall",usage:"agentsmesh uninstall <name>[,<name>...] [flags]",description:"Remove an installed pack; cleans installs.yaml, extends, and generated outputs",flags:[{name:"<name>",description:"Install entry name from installs.yaml (comma-separated for batch)"},{name:"--all",description:"Remove every installed pack in this scope"},{name:"--keep-pack",description:"Keep .agentsmesh/packs/<name>/ on disk; only drop yaml/extends entries"},{name:"--keep-generated",description:"Skip the post-uninstall generate pass; warn about stale target files"},{name:"--global",description:"Uninstall from ~/.agentsmesh/"},{name:"--dry-run",description:"Preview removal plan; no writes"},{name:"--force",description:"Non-interactive mode; accept all prompts (delete-anyway on modifications). Implied by --json."}]},{name:"refresh",usage:"agentsmesh refresh [<name>...] [flags]",description:"Re-fetch and re-apply installed packs from their recorded sources",flags:[{name:"<name>",description:"Pack name(s) to refresh (defaults to all installed packs)"},{name:"--dry-run",description:"Preview what would be refreshed without writing"},{name:"--force",description:"Skip drift-consent prompts; refresh even modified packs"},{name:"--global",description:"Refresh packs installed in ~/.agentsmesh/"}]},{name:"diff",usage:"agentsmesh diff [flags]",description:"Show patch-style output for what generate would change",flags:[{name:"--global",description:"Diff against outputs generated from ~/.agentsmesh/"},{name:"--targets <csv>",description:"Limit diff to target IDs (comma-separated)"}]},{name:"lint",usage:"agentsmesh lint [flags]",description:"Validate canonical files against target constraints",flags:[{name:"--global",description:"Lint canonical home config under ~/.agentsmesh/"},{name:"--targets <csv>",description:"Limit linting to target IDs (comma-separated)"}]},{name:"watch",usage:"agentsmesh watch [flags]",description:"Watch canonical files and regenerate on change",flags:[{name:"--global",description:"Watch ~/.agentsmesh/ and regenerate user-level config"},{name:"--targets <csv>",description:"Limit watched generate/matrix output to target IDs"}]},{name:"check",usage:"agentsmesh check",description:"Verify canonical files still match .agentsmesh/.lock",flags:[{name:"--global",description:"Check ~/.agentsmesh/.lock"}]},{name:"merge",usage:"agentsmesh merge",description:"Resolve .agentsmesh/.lock merge conflicts from current canonical state",flags:[{name:"--global",description:"Resolve ~/.agentsmesh/.lock conflicts"}]},{name:"matrix",usage:"agentsmesh matrix [flags]",description:"Print compatibility matrix for enabled features and targets",flags:[{name:"--global",description:"Show matrix for canonical home config under ~/.agentsmesh/"},{name:"--targets <csv>",description:"Limit matrix columns to target IDs"},{name:"--verbose",description:"Include expanded feature details in matrix output"}]},{name:"target",usage:"agentsmesh target scaffold <id> [--name <displayName>] [--force]",description:"Generate a new target skeleton (files, tests, fixture) under src/targets/<id>/.",flags:[{name:"--name <displayName>",description:"Human-readable name (defaults to id)"},{name:"--force",description:"Overwrite existing files"}]},{name:"plugin",usage:"agentsmesh plugin <add|list|remove|info> [args] [flags]",description:"Manage plugin-provided targets (npm packages exporting a TargetDescriptor).",flags:[{name:"--version <v>",description:"Pin plugin version (add)"},{name:"--id <id>",description:"Override derived plugin id (add)"}]},{name:"mcp",usage:"agentsmesh mcp",description:"Start the agentsmesh MCP server (stdio)",flags:[]},{name:"lessons",usage:"agentsmesh lessons <subcommand> [args] [flags]",description:`Query and capture lessons from .agentsmesh/lessons/lessons.json. Subcommands: ${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 ac(e,t=18){if(e.length===0)return " (no command-specific flags)";let r=Math.max(t,...e.map(n=>n.name.length+2));return e.map(n=>` ${n.name.padEnd(r)}${n.description}`).join(`
|
|
168
|
-
`)}s(ac,"formatFlags");function
|
|
167
|
+
Example: ${e.example}`}s(jd,"lessonsAddHint");var Ud=[{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)"}],c_=[{name:"init",usage:"agentsmesh init [flags]",description:"Create agentsmesh.yaml, agentsmesh.local.yaml, and canonical .agentsmesh scaffold. On a TTY runs an interactive wizard (targets, import, generate; plus lessons in project scope, never in --global); --yes, --json, and non-TTY/CI run non-interactively with current behavior.",flags:[{name:"--global",description:"Initialize canonical home config under ~/.agentsmesh/ (global targets include claude-code, antigravity, codex-cli, cursor, gemini-cli, kilo-code)"},{name:"--yes",description:"Auto-import detected tool configs, then add example scaffold only under empty canonical paths"},{name:"--lessons",description:"Scaffold the lessons recall + capture subsystem under .agentsmesh/lessons/ and append the procedural rule to .agentsmesh/rules/_root.md. Project mode only. Safe to run on an already-initialized project to retroactively add the subsystem."}]},{name:"generate",usage:"agentsmesh generate [flags]",description:"Generate target files from canonical sources",flags:[{name:"--global",description:"Generate user-level config from ~/.agentsmesh/ (e.g. claude-code, antigravity, codex-cli, gemini-cli, kilo-code; Cursor writes ~/.cursor/rules, ~/.cursor/AGENTS.md, hooks, ignore, MCP, skills, agents, commands; legacy ~/.agentsmesh-exports/cursor/user-rules.md is import-only)"},{name:"--targets <csv>",description:"Limit generation to target IDs (comma-separated)"},{name:"--check",description:"Check drift only; exit non-zero when out of sync"},{name:"--dry-run",description:"Preview file changes without writing outputs"},{name:"--force",description:"Bypass lock-strategy blocked feature violations"},{name:"--refresh-cache",description:"Refresh remote extends cache before loading"},{name:"--no-cache",description:"Alias for --refresh-cache"}]},{name:"import",usage:"agentsmesh import --from <target> [flags]",description:"Import existing tool config into canonical .agentsmesh files",flags:[{name:"--from <target>",description:"Source tool ID to import from (required)"},{name:"--global",description:"Import from user-level paths into ~/.agentsmesh/ (claude-code, antigravity, codex-cli, gemini-cli, kilo-code; cursor reads ~/.cursor/{rules,AGENTS.md,mcp.json,hooks.json,cursorignore,skills,agents,commands} and legacy ~/.agentsmesh-exports/cursor/user-rules.md)"}]},{name:"convert",usage:"agentsmesh convert --from <target> --to <target> [flags]",description:"Convert configuration directly from one tool to another",flags:[{name:"--from <target>",description:"Source tool ID to convert from (required)"},{name:"--to <target>",description:"Destination tool ID to convert to (required)"},{name:"--global",description:"Convert user-level config (use home directory paths)"},{name:"--dry-run",description:"Preview conversion without writing files"}]},{name:"install",usage:"agentsmesh install <source> [flags]",description:"Install rules/commands/agents/skills from a local path or remote repo. Auto-classifies anthropic-skill-pack / canonical-agentsmesh / tool-native sources. When auto-detection is ambiguous or refuses a non-standard layout, override with: --path <dir> to narrow scope, --as <kind> to force a flat collection (rules|commands|agents|skills), --target <id> to lock the native importer, or --all to install every sub-pack of a marketplace.",flags:[{name:"<source>",description:"GitHub/GitLab/tree/blob URL, git+ URL, SSH, or local path"},{name:"--sync",description:"Reinstall missing packs recorded in .agentsmesh/installs.yaml"},{name:"--path <dir>",description:"Subdirectory inside source repo when not embedded in URL"},{name:"--target <id>",description:"Native format used for import-at-root discovery (same as extends.target)"},{name:"--as <kind>",description:"Manual collection mode: rules, commands, agents, or skills"},{name:"--name <id>",description:"Override generated install entry/pack name"},{name:"--extends",description:"Write install as extends entry instead of materialized pack"},{name:"--dry-run",description:"Preview only (no YAML write, no pack write, no generate)"},{name:"--global",description:"Install into ~/.agentsmesh/ and regenerate user-level config"},{name:"--all",description:"Install every sub-pack from a marketplace source"},{name:"--force",description:"Non-interactive mode; include invalid resources and skip selection prompts (implied by --json)"},{name:"--accept-hooks",description:"Trust hooks.yaml from a non-local source. Stripped by default \u2014 hook commands run as shell on tool events."},{name:"--accept-permissions",description:"Trust permissions.yaml from a non-local source. Stripped by default \u2014 grants allowlist tool capabilities."},{name:"--accept-mcp",description:"Trust mcp.json from a non-local source. Stripped by default \u2014 MCP launch specs spawn child processes."},{name:"--accept-elevated",description:"Convenience for --accept-hooks --accept-permissions --accept-mcp together."}]},{name:"installs",usage:"agentsmesh installs <subcommand> [flags]",description:"Read-only inventory of installed packs (subcommands: list)",flags:[{name:"list",description:"List installed packs (NAME, SOURCE, FEATURES, INSTALLED)"},{name:"--global",description:"Read from ~/.agentsmesh/installs.yaml"}]},{name:"uninstall",usage:"agentsmesh uninstall <name>[,<name>...] [flags]",description:"Remove an installed pack; cleans installs.yaml, extends, and generated outputs",flags:[{name:"<name>",description:"Install entry name from installs.yaml (comma-separated for batch)"},{name:"--all",description:"Remove every installed pack in this scope"},{name:"--keep-pack",description:"Keep .agentsmesh/packs/<name>/ on disk; only drop yaml/extends entries"},{name:"--keep-generated",description:"Skip the post-uninstall generate pass; warn about stale target files"},{name:"--global",description:"Uninstall from ~/.agentsmesh/"},{name:"--dry-run",description:"Preview removal plan; no writes"},{name:"--force",description:"Non-interactive mode; accept all prompts (delete-anyway on modifications). Implied by --json."}]},{name:"refresh",usage:"agentsmesh refresh [<name>...] [flags]",description:"Re-fetch and re-apply installed packs from their recorded sources",flags:[{name:"<name>",description:"Pack name(s) to refresh (defaults to all installed packs)"},{name:"--dry-run",description:"Preview what would be refreshed without writing"},{name:"--force",description:"Skip drift-consent prompts; refresh even modified packs"},{name:"--global",description:"Refresh packs installed in ~/.agentsmesh/"}]},{name:"diff",usage:"agentsmesh diff [flags]",description:"Show patch-style output for what generate would change",flags:[{name:"--global",description:"Diff against outputs generated from ~/.agentsmesh/"},{name:"--targets <csv>",description:"Limit diff to target IDs (comma-separated)"}]},{name:"lint",usage:"agentsmesh lint [flags]",description:"Validate canonical files against target constraints",flags:[{name:"--global",description:"Lint canonical home config under ~/.agentsmesh/"},{name:"--targets <csv>",description:"Limit linting to target IDs (comma-separated)"}]},{name:"watch",usage:"agentsmesh watch [flags]",description:"Watch canonical files and regenerate on change",flags:[{name:"--global",description:"Watch ~/.agentsmesh/ and regenerate user-level config"},{name:"--targets <csv>",description:"Limit watched generate/matrix output to target IDs"}]},{name:"check",usage:"agentsmesh check",description:"Verify canonical files still match .agentsmesh/.lock",flags:[{name:"--global",description:"Check ~/.agentsmesh/.lock"}]},{name:"merge",usage:"agentsmesh merge",description:"Resolve .agentsmesh/.lock merge conflicts from current canonical state",flags:[{name:"--global",description:"Resolve ~/.agentsmesh/.lock conflicts"}]},{name:"matrix",usage:"agentsmesh matrix [flags]",description:"Print compatibility matrix for enabled features and targets",flags:[{name:"--global",description:"Show matrix for canonical home config under ~/.agentsmesh/"},{name:"--targets <csv>",description:"Limit matrix columns to target IDs"},{name:"--verbose",description:"Include expanded feature details in matrix output"}]},{name:"target",usage:"agentsmesh target scaffold <id> [--name <displayName>] [--force]",description:"Generate a new target skeleton (files, tests, fixture) under src/targets/<id>/.",flags:[{name:"--name <displayName>",description:"Human-readable name (defaults to id)"},{name:"--force",description:"Overwrite existing files"}]},{name:"plugin",usage:"agentsmesh plugin <add|list|remove|info> [args] [flags]",description:"Manage plugin-provided targets (npm packages exporting a TargetDescriptor).",flags:[{name:"--version <v>",description:"Pin plugin version (add)"},{name:"--id <id>",description:"Override derived plugin id (add)"}]},{name:"mcp",usage:"agentsmesh mcp",description:"Start the agentsmesh MCP server (stdio)",flags:[]},{name:"lessons",usage:"agentsmesh lessons <subcommand> [args] [flags]",description:`Query and capture lessons from .agentsmesh/lessons/lessons.json. Subcommands: ${PE.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 ac(e,t=18){if(e.length===0)return " (no command-specific flags)";let r=Math.max(t,...e.map(n=>n.name.length+2));return e.map(n=>` ${n.name.padEnd(r)}${n.description}`).join(`
|
|
168
|
+
`)}s(ac,"formatFlags");function m_(){let e=c_.map(t=>`- ${t.name.padEnd(8)} ${t.description}
|
|
169
169
|
Usage: ${t.usage}
|
|
170
170
|
${ac(t.flags)}`).join(`
|
|
171
171
|
|
|
172
172
|
`);S.info(`agentsmesh <command> [flags]
|
|
173
173
|
|
|
174
174
|
Global flags:
|
|
175
|
-
${ac(
|
|
175
|
+
${ac(Ud)}
|
|
176
176
|
|
|
177
177
|
Commands:
|
|
178
178
|
${e}
|
|
179
179
|
|
|
180
|
-
Tip: run "agentsmesh <command> --help" for this same command reference.`);}s(
|
|
180
|
+
Tip: run "agentsmesh <command> --help" for this same command reference.`);}s(m_,"printHelp");function Bd(e,t=[]){let r=c_.find(o=>o.name===e);if(!r){m_();return}let n=t[0];if(e==="lessons"&&n!==void 0&&n.length>0){IJ(r,n);return}S.info(`${r.usage}
|
|
181
181
|
|
|
182
182
|
${r.description}
|
|
183
183
|
|
|
@@ -185,7 +185,7 @@ Command flags:
|
|
|
185
185
|
${ac(r.flags)}
|
|
186
186
|
|
|
187
187
|
Global flags:
|
|
188
|
-
${ac(
|
|
188
|
+
${ac(Ud)}`);}s(Bd,"printCommandHelp");function IJ(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=Li[t],o=n?.example!==void 0?`
|
|
189
189
|
|
|
190
190
|
Example:
|
|
191
191
|
${n.example}`:"";S.info(`${n?.usage??`agentsmesh lessons ${t} [flags]`}
|
|
@@ -194,41 +194,41 @@ Command flags:
|
|
|
194
194
|
${ac(r)}
|
|
195
195
|
|
|
196
196
|
Global flags:
|
|
197
|
-
${ac(
|
|
198
|
-
`);}s(
|
|
199
|
-
`);}s(lc,"emitJson");var Xn=class extends Error{static{s(this,"CliUsageError");}constructor(t){super(t),this.name="CliUsageError";}};function
|
|
200
|
-
`):S.error(e.message),process.exit(r);}s(
|
|
197
|
+
${ac(Ud)}${o}`);}s(IJ,"printLessonsSubcommandHelp");var Kd;function EJ(){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(EJ,"readPackageVersion");function OJ(){if(typeof __AGENTSMESH_VERSION__<"u")return __AGENTSMESH_VERSION__;let e=globalThis.__AGENTSMESH_VERSION__;return typeof e=="string"?e:"unknown"}s(OJ,"getVersionFallback");function Pa(){return Kd||(Kd=EJ()??OJ(),Kd)}s(Pa,"getVersion");function NE(){process.stdout.write(`agentsmesh v${Pa()}
|
|
198
|
+
`);}s(NE,"printVersion");ue();function lc(e,t){let r={success:t.success,command:e};t.success?r.data=t.data:(r.error=t.error,t.data!==void 0&&(r.data=t.data)),process.stdout.write(JSON.stringify(r)+`
|
|
199
|
+
`);}s(lc,"emitJson");var Xn=class extends Error{static{s(this,"CliUsageError");}constructor(t){super(t),this.name="CliUsageError";}};function vE(e,t){let r=e instanceof Xn?2:1;if(t?.json)return lc(t.command??"unknown",{success:false,error:e.message}),process.exit(r);t?.verbose&&e.stack?process.stderr.write(e.stack+`
|
|
200
|
+
`):S.error(e.message),process.exit(r);}s(vE,"handleError");ue();function ct(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`;lc(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(ct,"handleResult");tt();Jo();b();zd();function bh(e){return createHash("sha256").update(e,"utf8").digest("hex")}s(bh,"hashContent");async function Ah(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(Ah,"hashFile");async function Th(e){try{if(!Wd(e)){let r=await readFile(e);return createHash("sha256").update(r).digest("hex")}let t=await readFile(e,"utf-8");return t.startsWith(pc)&&(t=t.slice(pc.length)),t=Hd(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(Th,"hashFileForManifest");xm();var aL=".lock",L6=[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 C6(e){return e.startsWith("packs/")?false:L6.some(t=>t(e))}s(C6,"isCanonical");var E6={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 xh(e){let t=join(e,aL),r=await I(t);if(r===null)return null;try{let n=parse(r);return !n||typeof n!="object"?null:{generatedAt:String(n.generated_at??""),generatedBy:String(n.generated_by??""),libVersion:String(n.lib_version??""),checksums:n.checksums&&typeof n.checksums=="object"?n.checksums:{},extends:n.extends&&typeof n.extends=="object"?n.extends:{},packs:n.packs&&typeof n.packs=="object"?n.packs:{}}}catch{return null}}s(xh,"readLock");async function Ph(e,t){let r=join(e,aL),n={generated_at:t.generatedAt,generated_by:t.generatedBy,lib_version:t.libVersion,checksums:t.checksums,extends:t.extends,packs:t.packs},o=`# Auto-generated. DO NOT EDIT MANUALLY.
|
|
201
201
|
# Tracks the state of all config files for team conflict resolution.
|
|
202
202
|
|
|
203
|
-
`+stringify(n);await L(r,o);}s(
|
|
204
|
-
`),a=
|
|
203
|
+
`+stringify(n);await L(r,o);}s(Ph,"writeLock");async function fi(e){if(!await j(e))return {};let t=await Ci(e),r={};for(let n of t){let o=relative(e,n).replace(/\\/g,"/");if(o===aL||!C6(o))continue;let i=await Ah(n);i!==null&&(r[o]=i.startsWith("sha256:")?i:`sha256:${i}`);}return r}s(fi,"buildChecksums");function Dh(e,t,r){if(r.length===0)return [];let n=r.map(a=>E6[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(Dh,"detectLockedFeatureViolations");async function Nh(e){let t=await Oh(e),r={};for(let{meta:n}of t)r[n.name]=n.content_hash;return r}s(Nh,"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 fi(n),i=Object.keys(o).sort().map(c=>`${c}:${o[c]}`).join(`
|
|
204
|
+
`),a=bh(i),l=a.startsWith("sha256:")?a:`sha256:${a}`;t[r.name]=`local:${l}`;}return t}s(Pm,"buildExtendChecksums");Te();rt();function Dm(e){return e?(e.outputFamilies??[]).filter(t=>t.kind==="additional").flatMap(t=>[...t.explicitPaths??[]]):[]}s(Dm,"getAdditionalRootDecorationPaths");function VU(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(VU,"resolveRewriteFamilyId");It();Z_();function O6(e,t,r){e.set(t,r),e.set(`${t}/`,`${r}/`);}s(O6,"addDirectoryMapping");function JU(e,t,r){let n=posix.dirname(t),o=posix.dirname(r);for(;n!==".agentsmesh/skills"&&n!==".";)O6(e,n,o),n=posix.dirname(n),o=posix.dirname(o);}s(JU,"addSkillDirectoryMappings");Te();function YU(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(YU,"ruleTargetPath");function XU(e,t,r,n="project"){let o=We(e,n);return o?o.paths.commandPath(t,r):null}s(XU,"commandTargetPath");function QU(e,t,r,n="project"){let o=We(e,n);return o?o.paths.agentPath(t,r):null}s(QU,"agentTargetPath");st();it();Mt();Te();function A6(e,t,r){e.set(t,r),e.set(`${t}/`,`${r}/`);}s(A6,"addDirectoryMapping");function lL(e,t,r,n="project"){let o=new Map;for(let a of t.rules){let l=YU(e,a,n);l&&o.set(`.agentsmesh/rules/${basename(a.source)}`,l);}for(let a of t.commands){let l=XU(e,a.name,r,n);l&&o.set(`.agentsmesh/commands/${a.name}.md`,l);}for(let a of t.agents){let l=QU(e,a.name,r,n);l&&o.set(`.agentsmesh/agents/${a.name}.md`,l);}let i=Ku(e,n);if(!i)return o;for(let a of t.skills){A6(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),JU(o,m,p);}}return o}s(lL,"buildReferenceMap");It();It();Te();function ZU(e,t,r,n){let o=n.normalize(t),i=n.normalize(r);e.set(o,i),e.set(`${o}/`,`${i}/`);}s(ZU,"addPackAbsoluteDirMapping");function T6(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(T6,"skillSupportingDirPrefixes");function eB(e,t,r,n,o){let i=Ku(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));ZU(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 T6(c.supportingFiles))ZU(e,a.join(m,u),a.join(p,u),a);}}s(eB,"addPackSkillArtifactMappings");It();function x6(e){return `.agentsmesh/rules/${basename(e.source)}`}s(x6,"canonicalRulePath");function P6(e){return `.github/instructions/${basename(e.source,".md")}.instructions.md`}s(P6,"copilotInstructionsPath");function rB(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,x6(a))),i.normalize(i.join(r,P6(a))));}s(rB,"applyCopilotInstructionArtifactRefs");Te();function cL(e,t){t!==void 0&&t.length>0&&!e.includes(t)&&e.push(t);}s(cL,"pushUnique");function nB(e,t,r,n){let o=[],i=r.get(`.agentsmesh/rules/${basename(t.source)}`);cL(o,i);let a=We(e,n);if(t.root)for(let l of Dm(a))cL(o,l);for(let l of a?.extraRuleOutputPaths?.(t,{refs:r,scope:n})??[])cL(o,l);return o}s(nB,"extraRuleOutputPaths");Te();function oB(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(oB,"addSkillMirrorSourceEntry");function N6(e){return `.agentsmesh/commands/${e.name}.md`}s(N6,"canonicalCommandPath");function v6(e){return `.agentsmesh/agents/${e.name}.md`}s(v6,"canonicalAgentPath");function F6(e){return `.agentsmesh/skills/${e.name}/SKILL.md`}s(F6,"canonicalSkillPath");function sB(e,t,r,n,o,i){let a=i?.scope??"project",l=ce(n),c=new Map([...lL(e,t,r,a)].map(([m,p])=>[l.normalize(l.join(n,m)),l.normalize(l.join(n,p))]));return rB(e,c,n,o,t),eB(c,e,t,n,a),c}s(sB,"buildArtifactPathMap");function iB(e,t,r,n="project",o){let i=lL(e,t,r,n),a=new Map;for(let l of t.rules)for(let c of nB(e,l,i,n))a.set(c,l.source);for(let l of t.commands){let c=i.get(N6(l));c&&a.set(c,l.source);}for(let l of t.agents){let c=i.get(v6(l));c&&a.set(c,l.source);}for(let l of t.skills){let c=i.get(F6(l));c&&(a.set(c,l.source),oB(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),oB(e,n,u,m.absolutePath,a,o));}}return a}s(iB,"buildOutputSourceMap");Te();rt();G_();function $6(e,t){if(!t)return null;for(let r of t){let n=ne(r);if(n?.sharedArtifacts){for(let[o,i]of Object.entries(n.sharedArtifacts))if(i==="owner"&&e.startsWith(o))return r}}return null}s($6,"findSharedArtifactOwner");function aB(e,t,r){if(t==="global"){let n=$6(e.path,r);if(n)return n;let o=BO(e.path);if(o)return o}return e.target}s(aB,"artifactMapTargetForResult");function j6(e,t){return `${e}\0${(t??[]).join(",")}`}s(j6,"sourceMapCacheKey");function mL(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(mL,"collectPlannedPaths");function U6(e,t,r){let n=We(e.target,t),o=VU(n,e.path);if(o!=="default")return `${e.target}:${o}`;let i=aB(e,t,r);return i===e.target?e.target:`${e.target}~via~${i}`}s(U6,"artifactCacheKey");function lB(e,t,r,n,o="project",i,a){let l=mL(n,e),c=new Map,m=new Map;return e.map(p=>{if(a?.has(p.path))return p;let u=j6(p.target,i),g=(m.get(u)??(()=>{let k=iB(p.target,t,r,o,i);return m.set(u,k),k})()).get(p.path);if(!g)return p;let h=aB(p,o,i),y=U6(p,o,i),_=c.get(y)??(()=>{let k=sB(h,t,r,n,p.path,{scope:o});return c.set(y,k),k})(),R=Ef({content:p.content,projectRoot:n,sourceFile:g,destinationFile:ce(n).join(n,p.path),translatePath:s(k=>_.get(k)??k,"translatePath"),pathExists:s(k=>l.has(k)||existsSync(k),"pathExists"),explicitCurrentDirLinks:true,rewriteBarePathTokens:true,scope:o,pathIsDirectory:s(k=>{try{return statSync(k).isDirectory()}catch{return false}},"pathIsDirectory")});return R.content===p.content?p:{...p,content:R.content}})}s(lB,"rewriteGeneratedReferences");It();xi();ue();var K6=/!?\[[^\]]*\]\(([^)]+)\)/g,W6=/^\s*\[[^\]\n]+\]:\s*(?:<([^>\n]*)>|(\S+))/gm;function H6(e){return e.endsWith(".md")||e.endsWith(".mdc")}s(H6,"isMarkdownLikeOutput");function z6(e,t){return t.some(([r,n])=>e>=r&&e<n)}s(z6,"isOffsetInRanges");function V6(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(V6,"parseMarkdownLinkDestination");function J6(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(J6,"shouldSkipLocalValidation");function Y6(e){return /(?:^|\/)[^/]+\/skills\/[^/]+\//.test(e)}s(Y6,"isSkillGeneratedOutput");var X6={rules:"rules",steering:"rules",commands:"commands",agents:"agents",skills:"skills",droids:"agents",instructions:"rules",prompts:"commands"},Q6={".clinerules":"rules"},q6=[".agent.md",".instructions.md",".prompt.md"];function cB(e){for(let t of q6)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(cB,"stripMarkdownExt");function Z6(e){let t=/^[^/]+\/([^/]+)\/([^/]+)/.exec(e);if(t){let n=X6[t[1]??""];if(n){let o=t[2]??"";return n!=="skills"&&(o=cB(o)),`${n}/${o}`}}let r=/^([^/]+)\/([^/]+)/.exec(e);if(r){let n=Q6[r[1]??""];if(n)return `${n}/${cB(r[2]??"")}`}return null}s(Z6,"canonicalKeyFromOutputPath");function e5(e,t){if(t.has(e))return true;try{let r=statSync(e);return r.isFile()||r.isDirectory()}catch{return false}}s(e5,"pathExistsForGenerate");function t5(e,t,r){let o=V6(e).split("#")[0]??"",{candidate:i}=bc(o),a=i,l=Ac.exec(a);l&&(a=a.slice(0,l.index));let c;try{c=decodeURIComponent(a);}catch{c=a;}if(J6(c,t))return [];let m=Fp(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 Mp(t,u)){let g=Q(t,f);p.includes(g)||p.push(g);}return p}s(t5,"resolveMarkdownLinkTargets");function r5(e,t){let r=mL(t,e),n=[];for(let o of e){if(!H6(o.path))continue;let i=Q(t,ce(t).join(t,o.path)),a=Cf(o.content),l=s((c,m)=>{if(z6(m,a))return;let p=t5(c,t,i);p.length!==0&&(p.some(u=>e5(u,r))||n.push({generatePath:o.path,target:o.target,rawLink:c.trim(),checkedPaths:p}));},"visitDestination");for(let c of o.content.matchAll(K6)){let m=c[1];m!==void 0&&l(m,c.index??0);}for(let c of o.content.matchAll(W6)){let m=(c[1]??c[2]??"").trim();m&&l(m,c.index??0);}}return n}s(r5,"findBrokenMarkdownLinks");function mB(e,t,r={}){let n=r5(e,t);if(n.length===0)return;let o=r.packOriginatedKeys,i=[],a=[];for(let c of n){let m=Z6(c.generatePath),p=o!==void 0&&m!==null&&o.has(m);Y6(c.generatePath)||p?a.push(c):i.push(c);}if(a.length>0){let c=a.map(m=>` ${m.generatePath} (${m.target}): "${m.rawLink}" \u2192 not found`);S.warn(`Third-party content contains ${a.length} broken local link${a.length===1?"":"s"} (warning only; outputs from installed packs and skill subtrees are treated as advisory):
|
|
205
205
|
${c.join(`
|
|
206
206
|
`)}`);}if(i.length===0)return;let l=i.map(c=>` ${c.generatePath} (${c.target}): "${c.rawLink}" \u2192 not found (tried: ${c.checkedPaths.join(", ")})`);throw new Error(`Generated markdown contains broken local links:
|
|
207
207
|
${l.join(`
|
|
208
208
|
`)}
|
|
209
|
-
Fix canonical sources or generators so every local link targets an existing file or folder.`)}s(
|
|
209
|
+
Fix canonical sources or generators so every local link targets an existing file or folder.`)}s(mB,"validateGeneratedMarkdownLinks");var n5=[`${sep}.agentsmesh${sep}packs${sep}`,"/.agentsmesh/packs/"];function Fh(e){return n5.some(t=>e.includes(t))}s(Fh,"isUnderPacks");function pB(e){let t=new Set;for(let r of e.rules)if(Fh(r.source)){let n=r.root?"_root":o5(r.source);n&&t.add(`rules/${n}`);}for(let r of e.agents)Fh(r.source)&&t.add(`agents/${r.name}`);for(let r of e.commands)Fh(r.source)&&t.add(`commands/${r.name}`);for(let r of e.skills)Fh(r.source)&&t.add(`skills/${r.name}`);return t}s(pB,"buildPackOriginatedKeys");function o5(e){let r=e.replace(/\\/g,"/").split("/").pop()??"";return r.endsWith(".md")?r.slice(0,-3):r}s(o5,"ruleNameFromSource");cn();var gB="AGENTS.md";function uB(e){switch(e){case "created":return 3;case "updated":return 2;case "unchanged":return 1;case "skipped":return 0}}s(uB,"statusRank");function s5(e,t){return uB(t.status)<=uB(e.status)?e:{...e,status:t.status,currentContent:t.currentContent??e.currentContent}}s(s5,"mergeDuplicateMetadata");function Mh(e){return e.trim()}s(Mh,"trimmedContent");var i5=[/<!-- agentsmesh:embedded-rules:start -->[\s\S]*?<!-- agentsmesh:embedded-rules:end -->\n*/g];function dB(e){let t=e;for(let r of i5)t=t.replace(r,"");return t.trim().replace(/\n{2,}/g,`
|
|
210
210
|
|
|
211
|
-
`)}s(cB,"normalizeAgentsContent");function mB(e){return /<!-- agentsmesh:embedded-rules:start -->/.test(e)}s(mB,"hasOptionalAgentsBlock");function n5(e,t){if(!e.path.endsWith(pB)||e.path!==t.path)return null;let r=vh(e.content),n=vh(t.content);if(!r||!n)return null;let o=r.includes(n),i=n.includes(r);if(o!==i)return o?e:t;if(cB(e.content)===cB(t.content)){let a=mB(e.content),l=mB(t.content);if(a!==l)return a?e:t}return null}s(n5,"richerAgentsResult");function o5(e,t){if(!e.path.endsWith(pB)||e.path!==t.path)return null;let r=e.target===u_?e:t.target===u_?t:null,n=r===e?t:e;if(!r)return null;let o=vh(r.content).length,i=vh(n.content).length;return o===i?null:o>i?r:n}s(o5,"richerCodexAgentsResult");function Fh(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=n5(o,r);if(i){t[n]=i;continue}let a=o5(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]=t5(o,r);}return s5(t),t}s(Fh,"resolveOutputCollisions");function s5(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(s5,"assertNoCaseOnlyPathCollisions");function uB(e){let t=e.currentContent===void 0?"created":e.currentContent!==e.content?"updated":"unchanged";return e.status===t?e:{...e,status:t}}s(uB,"refreshResultStatus");b();Te();rt();function fB(e,t){return e===null?"created":e!==t?"updated":"unchanged"}s(fB,"computeStatus");function i5(e,t,r){let n=Pk(e,t,r);if(n!==null)return n;let o=ne(e);if(!o)return null;let i=r==="global"?o.globalSupport?.layout:o.project;return i?(n=i.rewriteGeneratedPath?i.rewriteGeneratedPath(t):t,n):null}s(i5,"resolveGeneratedOutputPath");async function Ju(e,t,r,n,o,i){let a=i5(t,r.path,o);if(a===null)return null;let l=await I(join(n,a)),c=e.findIndex(u=>u.path===a&&u.target===t),m=c>=0?e[c]:void 0,p=i?.mergeContent?.(l,m,r.content,a)??r.content;return c>=0&&e.splice(c,1),e.push({target:t,path:a,content:p,currentContent:l??void 0,status:fB(l,p)}),a}s(Ju,"emitGeneratedOutput");function lL(e,t,r){return {capability:pi(e,r)?.[t]??{level:"none"},scope:r}}s(lL,"featureContext");async function Wl(e,t,r,n,o,i,a,l){if(o)for(let c of t){let m=l(c);if(!m)continue;let p=lL(c,a,i);for(let u of m(r,p)){let f=await Ju(e,c,u,n,i);if(f===null)continue;let g=We(c,i);if(g?.mirrorGlobalPath){let h=g.mirrorGlobalPath(f,t),y=h===null?[]:Array.isArray(h)?h:[h];for(let _ of y){let R=await I(join(n,_));e.push({target:c,path:_,content:u.content,currentContent:R??void 0,status:fB(R,u.content)});}}}}}s(Wl,"generateFeature");U_();Te();function a5(e){return e?.rootInstructionPath?[e.rootInstructionPath,...Dm(e)]:[]}s(a5,"rootDecorationPaths");function gB(e,t,r="project"){return e.map(n=>{let o=We(n.target,r);if(!o)return n;let i=a5(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=YO(l);return c===n.content?n:{...n,content:c}})}s(gB,"decoratePrimaryRootInstructions");Te();rt();Mu();function cL(e,t,r,n,o){let a=(on(e)??ne(e))?.mergeGeneratedOutputContent?.(t,r,n,o);if(a!=null)return a;let l=r?.content??t;return l!==null&&rv.includes(o)?_g(l,n):n}s(cL,"mergeOutputContent");async function hB(e,t,r,n,o){for(let i of t){let a=Am(i,"permissions",void 0,o)??ne(i)?.generators.generatePermissions;if(a)for(let l of a(r))await Ju(e,i,l,n,o,{mergeContent:s((c,m,p,u)=>cL(i,c,m,p,u),"mergeContent")});}}s(hB,"generatePermissionsFeature");async function yB(e,t,r,n,o,i){for(let a of t){let l=Am(a,"hooks",i,o)??ne(a)?.generators.generateHooks;if(!l)continue;let c=lL(a,"hooks",o),m=[...l(r,c)],u=(on(a)??ne(a))?.postProcessHookOutputs;u&&(m=[...await u(n,r,m)]);for(let f of m)await Ju(e,a,f,n,o,{mergeContent:s((g,h,y,_)=>cL(a,g,h,y,_),"mergeContent")});}}s(yB,"generateHooksFeature");async function _B(e,t,r,n,o,i){for(let a of t){let c=(on(a)??ne(a))?.emitScopedSettings;if(!c)continue;let m=c(r,o,i);if(m.length!==0)for(let p of m)await Ju(e,a,p,n,o,{mergeContent:s((u,f,g,h)=>cL(a,u,f,g,h),"mergeContent")});}}s(_B,"generateScopedSettingsFeature");async function Yo(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,J){return Am(K,J,t,o)}s(c,"resolveGen");let m=t.features.includes("rules"),p=t.features.includes("commands"),u=t.features.includes("agents"),f=t.features.includes("skills"),g=t.features.includes("mcp"),h=t.features.includes("permissions"),y=t.features.includes("hooks"),_=t.features.includes("ignore"),R=[];await Wl(R,l,r,n,m,o,"rules",K=>c(K,"rules")),await Wl(R,l,r,n,p,o,"commands",K=>c(K,"commands")),await Wl(R,l,r,n,u,o,"agents",K=>c(K,"agents")),await Wl(R,l,r,n,f,o,"skills",K=>c(K,"skills")),await Wl(R,l,r,n,g,o,"mcp",K=>c(K,"mcp")),h&&await hB(R,l,r,n,o),y&&await yB(R,l,r,n,o,t),await Wl(R,l,r,n,_,o,"ignore",K=>c(K,"ignore"));let k=new Set(t.features);for(let K of l){let ee=(on(K)??ne(K))?.globalSupport?.scopeExtras;if(ee){let se=await ee(r,n,o,k);R.push(...se);}}(g||_||y||u||h)&&await _B(R,l,r,n,o,k);let w=gB(R,r,o),D=l5(w,o),N=oB(w,r,t,n,o,l,D);return iB(N,n,{packOriginatedKeys:aB(r)}),Fh(N.map(uB))}s(Yo,"generate");function l5(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 Dm(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(l5,"computeSharedRootInstructionPaths");sn();fe();b();ts();var L5=6e4,C5=30,E5=200,O5=2e3;async function Nm(e,t={}){let r=t.retries??C5,n=t.retryDelayMs??E5,o=t.staleMs??L5;await mkdir(dirname(e),{recursive:true});let i=0;for(;;){let a=await w5(e);if(a)return a;let l=await b5(e);if(l!=="young"&&A5(l,o)){await rm$1(e,{recursive:true,force:true}).catch(()=>{});continue}if(i>=r){let c=l==="young"?null:l;throw new mc(e,x5(c),{label:t.label})}i++,await D5(n);}}s(Nm,"acquireProcessLock");async function w5(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:wB()};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(w5,"tryAcquire");async function b5(e){try{let t=await readFile(join(e,"holder.json"),"utf-8"),r=JSON.parse(t);return P5(r)?r:null}catch{try{let t=await stat(e);if(Date.now()-t.mtimeMs<O5)return "young"}catch{}return null}}s(b5,"inspectLock");function A5(e,t){return !e||Date.now()-e.started>t?true:e.hostname&&e.hostname!==wB()?false:!T5(e.pid)}s(A5,"isStale");function T5(e){if(!Number.isInteger(e)||e<=0)return false;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}s(T5,"isProcessAlive");function x5(e){return e?`${e.hostname?`${e.hostname}:`:""}pid ${e.pid} (running ${Date.now()-e.started}ms)`:"unknown (unreadable lock metadata)"}s(x5,"describeHolder");function P5(e){if(typeof e!="object"||e===null)return false;let t=e;return typeof t.pid=="number"&&typeof t.started=="number"}s(P5,"isLockMetadata");function wB(){return hostname()}s(wB,"getHostname");function D5(e){return new Promise(t=>setTimeout(t,e))}s(D5,"sleep");b();Te();async function bB(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 bB(i,t));continue}n.push(relative(t,i).replace(/\\/g,"/"));}return n}s(bB,"listFiles");async function M5(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(M5,"removeIfStale");async function AB(e){let t=new Set(e.expectedPaths),r=new Set,n=e.scope??"project";for(let o of e.targets){let i=xk(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 bB(l))r.add(`${a}/${c}`.replace(/\/+/g,"/"));}}}for(let o of r)await M5(e.projectRoot,o,t);}s(AB,"cleanupStaleGeneratedOutputs");Te();function Gh(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(Gh,"ensurePathInsideRoot");kp();b();fe();async function fL(e,t){let r=await fi(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 Th(e.canonicalDir,{generatedAt:new Date().toISOString(),generatedBy:i,libVersion:Pa(),checksums:r,extends:n,packs:o});try{await c_(tr(),join(e.configDir,".agentsmeshcache"));}catch(a){S.warn(`Could not create .agentsmeshcache symlink: ${a instanceof Error?a.message:String(a)}`);}}s(fL,"writeLockFile");function Y5(e,t){return e!=="global"||t.length===0?void 0:t.every(n=>We(n,"global")===void 0)?"no-global-support":void 0}s(Y5,"resolveEmptyReason");async function jB(e){let{mode:t,scope:r,dryRun:n,context:o,resolvedExtends:i,flags:a,root:l,options:c,activeTargets:m}=e,p=Y5(r,m);if(t==="check")return {exitCode:0,data:{scope:r,mode:t,files:[],summary:$h([]),emptyReason:p}};if(n||await fL(o,i),c.printMatrix!==false){let{runMatrix:u}=await Promise.resolve().then(()=>(Xu(),kL)),{renderMatrix:f}=await Promise.resolve().then(()=>(Qu(),LL)),g=await u(a,l);f(g,{verbose:a.verbose===true});}return {exitCode:0,data:{scope:r,mode:t,files:[],summary:$h([]),emptyReason:p}}}s(jB,"handleEmptyResults");function UB(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:$h(r)}}}s(UB,"buildCheckResult");async function BB(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 Nm(join(i.canonicalDir,".generate.lock"),{label:"generate lock"});try{if(!r){for(let h of t)if(h.status==="created"||h.status==="updated"){let y=Gh(i.rootBase,h.path,h.target);await L(y,h.content);}await AB({projectRoot:i.rootBase,targets:a,expectedPaths:t.map(h=>h.path),scope:n}),await fL(i,l);}}finally{u&&await u();}if(p.printMatrix!==false){let{runMatrix:h}=await Promise.resolve().then(()=>(Xu(),kL)),{renderMatrix:y}=await Promise.resolve().then(()=>(Qu(),LL)),_=await h(c,m);y(_,{verbose:c.verbose===true});}let f=t.filter(h=>h.status!=="skipped"),g=f.map(h=>({path:h.path,target:h.target,status:h.status}));return {exitCode:0,data:{scope:n,mode:o,files:g,summary:$h(f)}}}s(BB,"handleGenerateOrDryRun");function $h(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($h,"buildSummary");async function Xo(e,t,r={}){if(e.features!==void 0)throw new Error("--features is no longer supported. Configure features in agentsmesh.yaml.");let n=t??process.cwd(),o=e.check===true,i=e["dry-run"]===true,a=e.force===true,l=e.global===true?"global":"project",c=e["refresh-cache"]===true||e["no-cache"]===true,m=e.targets,p=typeof m=="string"&&m?m.split(",").map(D=>D.trim()).filter(Boolean):void 0,u=o?"check":i?"dry-run":"generate",{config:f,context:g}=await _e(n,l);await ze(f,n);let h=f.collaboration?.lock_features??[];if(f.collaboration?.strategy==="lock"&&!a&&h.length>0){let D=await Ah(g.canonicalDir);if(D!==null){let N=await fi(g.canonicalDir),K=xh(D.checksums,N,h);if(K.length>0){S.error("Locked feature violation (strategy: lock). Modified files:");for(let J of K)S.error(` ${J}`);throw S.error("Run 'agentsmesh generate --force' to accept these changes."),new Error("Locked feature violation. Use --force to override.")}}}let{canonical:y,resolvedExtends:_}=await $t(f,g.configDir,{refreshRemoteCache:c},g.canonicalDir),R=[...f.targets,...f.pluginTargets??[]];if(p){let D=p.filter(N=>!R.includes(N));if(D.length>0)throw new Error(`Unknown target(s) in --targets: ${D.join(", ")}. Available: ${R.join(", ")}`)}let k=p?R.filter(D=>p.includes(D)):R,w=await Yo({config:f,canonical:y,projectRoot:g.rootBase,scope:l,targetFilter:p});return w.length===0?jB({mode:u,scope:l,dryRun:i,context:g,resolvedExtends:_,flags:e,root:n,options:r,activeTargets:k}):o?UB(w,l):BB({results:w,dryRun:i,scope:l,mode:u,context:g,activeTargets:k,resolvedExtends:_,flags:e,root:n,options:r})}s(Xo,"runGenerate");fe();fp();var X5={start(){},stop(){},message(){}};function Q5(e){return e?.isTTY??ki(process.stdout)?{intro:s(r=>Yt.intro(r),"intro"),outro:s(r=>Yt.outro(r),"outro"),note:s((r,n)=>Yt.note(r,n),"note"),spinner:s(()=>Yt.spinner(),"spinner"),success:s(r=>Yt.log.success(r),"success"),error:s(r=>Yt.log.error(r),"error"),warn:s(r=>Yt.log.warn(r),"warn"),info:s(r=>Yt.log.info(r),"info"),step:s(r=>Yt.log.step(r),"step")}:{intro:s(()=>{},"intro"),outro:s(()=>{},"outro"),note:s(()=>{},"note"),spinner:s(()=>X5,"spinner"),success:s(r=>S.success(r),"success"),error:s(r=>S.error(r),"error"),warn:s(r=>S.warn(r),"warn"),info:s(r=>S.info(r),"info"),step:s(r=>S.info(r),"step")}}s(Q5,"createUi");var M=Q5();function CL(e,t){return e==="global"?`~/${t}`:t}s(CL,"formatDisplayPath");function Mm(e){let{data:t}=e,{scope:r,mode:n,files:o}=t;if(o.length===0){t.emptyReason==="no-global-support"?M.info("No files to generate (target has no global mode \u2014 try without --global)."):M.info("No files to generate (no root rule or rules feature disabled)."),n==="check"&&M.success("Generated files are in sync.");return}if(n==="check"){let c=o.filter(m=>m.status!=="unchanged");if(c.length===0){M.success("Generated files are in sync.");return}for(let m of c)M.error(`[check] ${m.status} ${CL(r,m.path)} (${m.target})`);M.error("Generated files are out of sync. Run 'agentsmesh generate' to update them.");return}if(n==="dry-run"){for(let c of o)M.info(`[dry-run] ${c.status} ${CL(r,c.path)} (${c.target})`);return}for(let c of o)(c.status==="created"||c.status==="updated")&&M.success(`${c.status} ${CL(r,c.path)}`);let{created:i,updated:a,unchanged:l}=t.summary;i>0||a>0?(M.note(`${i} created \xB7 ${a} updated \xB7 ${l} unchanged`,"Generated"),M.info(`Generated: ${i} created, ${a} updated, ${l} unchanged`)):M.info(`Nothing changed. (${l} unchanged)`);}s(Mm,"renderGenerate");b();Te();cn();function jh(){return De.filter(e=>!e.excludeFromStarterInit).map(e=>e.id).filter(Bt)}s(jh,"starterInitTargetIds");function Uh(){return De.filter(e=>e.globalSupport!==void 0).map(e=>e.id).filter(Bt)}s(Uh,"globalInitTargetIds");tt();var qu=1,$m=2e3,Gm=z$1.string().regex(/^[a-z0-9-]+$/,"id must be kebab-case"),q5=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"),Z5=z$1.object({summary:z$1.string().min(1,"topic summary must not be empty")}).strict(),e7=z$1.enum(["file_glob","command_pattern","keyword"]),t7=z$1.object({kind:e7,pattern:z$1.string().min(1,"trigger pattern must not be empty")}).strict(),r7=z$1.enum(["active","deprecated","superseded"]),n7=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(Gm).min(1,"lesson must reference at least one topic"),triggers:z$1.array(Gm),evidence:z$1.array(z$1.string().min(1)),status:r7,supersededBy:Gm.optional(),createdAt:q5}).strict(),Hl=z$1.object({version:z$1.literal(qu),lessons:z$1.record(Gm,n7),topics:z$1.record(Gm,Z5),triggers:z$1.record(Gm,t7)}).strict();function Zu(e){return Hl.parse(e)}s(Zu,"parseGraph");var c7=".agentsmesh/lessons/lessons.json";function Qo(e){return resolve(e,c7)}s(Qo,"graphFilePath");function ed(e){let t=readFileSync(Qo(e),"utf8");return Zu(JSON.parse(t))}s(ed,"loadLessonsGraph");function Je(e){return existsSync(Qo(e))?ed(e):null}s(Je,"tryLoadLessonsGraph");function Kh(e){let t=Qo(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>qu?{status:"newer-version",graph:null,version:n}:{status:"ok",graph:Zu(r)}}catch(r){return {status:"corrupt",graph:null,error:r instanceof Error?r:new Error(String(r))}}}s(Kh,"loadLessonsGraphResilient");function HB(e,t){let r=Qo(e);mkdirSync(dirname(r),{recursive:true});let n=`${r}.${process.pid}.tmp`;writeFileSync(n,td(t),"utf8"),renameSync(n,r);}s(HB,"saveLessonsGraph");function td(e){return `${JSON.stringify(Bh(e),null,2)}
|
|
212
|
-
`}s(
|
|
211
|
+
`)}s(dB,"normalizeAgentsContent");function fB(e){return /<!-- agentsmesh:embedded-rules:start -->/.test(e)}s(fB,"hasOptionalAgentsBlock");function a5(e,t){if(!e.path.endsWith(gB)||e.path!==t.path)return null;let r=Mh(e.content),n=Mh(t.content);if(!r||!n)return null;let o=r.includes(n),i=n.includes(r);if(o!==i)return o?e:t;if(dB(e.content)===dB(t.content)){let a=fB(e.content),l=fB(t.content);if(a!==l)return a?e:t}return null}s(a5,"richerAgentsResult");function l5(e,t){if(!e.path.endsWith(gB)||e.path!==t.path)return null;let r=e.target===g_?e:t.target===g_?t:null,n=r===e?t:e;if(!r)return null;let o=Mh(r.content).length,i=Mh(n.content).length;return o===i?null:o>i?r:n}s(l5,"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=a5(o,r);if(i){t[n]=i;continue}let a=l5(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]=s5(o,r);}return c5(t),t}s(Gh,"resolveOutputCollisions");function c5(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(c5,"assertNoCaseOnlyPathCollisions");function hB(e){let t=e.currentContent===void 0?"created":e.currentContent!==e.content?"updated":"unchanged";return e.status===t?e:{...e,status:t}}s(hB,"refreshResultStatus");b();Te();rt();function _B(e,t){return e===null?"created":e!==t?"updated":"unchanged"}s(_B,"computeStatus");function m5(e,t,r){let n=vk(e,t,r);if(n!==null)return n;let o=ne(e);if(!o)return null;let i=r==="global"?o.globalSupport?.layout:o.project;return i?(n=i.rewriteGeneratedPath?i.rewriteGeneratedPath(t):t,n):null}s(m5,"resolveGeneratedOutputPath");async function Ju(e,t,r,n,o,i){let a=m5(t,r.path,o);if(a===null)return null;let l=await I(join(n,a)),c=e.findIndex(u=>u.path===a&&u.target===t),m=c>=0?e[c]:void 0,p=i?.mergeContent?.(l,m,r.content,a)??r.content;return c>=0&&e.splice(c,1),e.push({target:t,path:a,content:p,currentContent:l??void 0,status:_B(l,p)}),a}s(Ju,"emitGeneratedOutput");function uL(e,t,r){return {capability:pi(e,r)?.[t]??{level:"none"},scope:r}}s(uL,"featureContext");async function Wl(e,t,r,n,o,i,a,l){if(o)for(let c of t){let m=l(c);if(!m)continue;let p=uL(c,a,i);for(let u of m(r,p)){let f=await Ju(e,c,u,n,i);if(f===null)continue;let g=We(c,i);if(g?.mirrorGlobalPath){let h=g.mirrorGlobalPath(f,t),y=h===null?[]:Array.isArray(h)?h:[h];for(let _ of y){let R=await I(join(n,_));e.push({target:c,path:_,content:u.content,currentContent:R??void 0,status:_B(R,u.content)});}}}}}s(Wl,"generateFeature");W_();Te();function p5(e){return e?.rootInstructionPath?[e.rootInstructionPath,...Dm(e)]:[]}s(p5,"rootDecorationPaths");function SB(e,t,r="project"){return e.map(n=>{let o=We(n.target,r);if(!o)return n;let i=p5(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=QO(l);return c===n.content?n:{...n,content:c}})}s(SB,"decoratePrimaryRootInstructions");Te();rt();Mu();function dL(e,t,r,n,o){let a=(on(e)??ne(e))?.mergeGeneratedOutputContent?.(t,r,n,o);if(a!=null)return a;let l=r?.content??t;return l!==null&&ov.includes(o)?Sg(l,n):n}s(dL,"mergeOutputContent");async function RB(e,t,r,n,o){for(let i of t){let a=Am(i,"permissions",void 0,o)??ne(i)?.generators.generatePermissions;if(a)for(let l of a(r))await Ju(e,i,l,n,o,{mergeContent:s((c,m,p,u)=>dL(i,c,m,p,u),"mergeContent")});}}s(RB,"generatePermissionsFeature");async function IB(e,t,r,n,o,i){for(let a of t){let l=Am(a,"hooks",i,o)??ne(a)?.generators.generateHooks;if(!l)continue;let c=uL(a,"hooks",o),m=[...l(r,c)],u=(on(a)??ne(a))?.postProcessHookOutputs;u&&(m=[...await u(n,r,m)]);for(let f of m)await Ju(e,a,f,n,o,{mergeContent:s((g,h,y,_)=>dL(a,g,h,y,_),"mergeContent")});}}s(IB,"generateHooksFeature");async function kB(e,t,r,n,o,i){for(let a of t){let c=(on(a)??ne(a))?.emitScopedSettings;if(!c)continue;let m=c(r,o,i);if(m.length!==0)for(let p of m)await Ju(e,a,p,n,o,{mergeContent:s((u,f,g,h)=>dL(a,u,f,g,h),"mergeContent")});}}s(kB,"generateScopedSettingsFeature");async function Yo(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,J){return Am(K,J,t,o)}s(c,"resolveGen");let m=t.features.includes("rules"),p=t.features.includes("commands"),u=t.features.includes("agents"),f=t.features.includes("skills"),g=t.features.includes("mcp"),h=t.features.includes("permissions"),y=t.features.includes("hooks"),_=t.features.includes("ignore"),R=[];await Wl(R,l,r,n,m,o,"rules",K=>c(K,"rules")),await Wl(R,l,r,n,p,o,"commands",K=>c(K,"commands")),await Wl(R,l,r,n,u,o,"agents",K=>c(K,"agents")),await Wl(R,l,r,n,f,o,"skills",K=>c(K,"skills")),await Wl(R,l,r,n,g,o,"mcp",K=>c(K,"mcp")),h&&await RB(R,l,r,n,o),y&&await IB(R,l,r,n,o,t),await Wl(R,l,r,n,_,o,"ignore",K=>c(K,"ignore"));let k=new Set(t.features);for(let K of l){let ee=(on(K)??ne(K))?.globalSupport?.scopeExtras;if(ee){let se=await ee(r,n,o,k);R.push(...se);}}(g||_||y||u||h)&&await kB(R,l,r,n,o,k);let w=SB(R,r,o),D=u5(w,o),N=lB(w,r,t,n,o,l,D);return mB(N,n,{packOriginatedKeys:pB(r)}),Gh(N.map(hB))}s(Yo,"generate");function u5(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 Dm(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(u5,"computeSharedRootInstructionPaths");sn();ue();b();ts();var b5=6e4,A5=30,T5=200,x5=2e3;async function Nm(e,t={}){let r=t.retries??A5,n=t.retryDelayMs??T5,o=t.staleMs??b5;await mkdir(dirname(e),{recursive:true});let i=0;for(;;){let a=await P5(e);if(a)return a;let l=await D5(e);if(l!=="young"&&N5(l,o)){await rm$1(e,{recursive:true,force:true}).catch(()=>{});continue}if(i>=r){let c=l==="young"?null:l;throw new mc(e,F5(c),{label:t.label})}i++,await G5(n);}}s(Nm,"acquireProcessLock");async function P5(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:PB()};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(P5,"tryAcquire");async function D5(e){try{let t=await readFile(join(e,"holder.json"),"utf-8"),r=JSON.parse(t);return M5(r)?r:null}catch{try{let t=await stat(e);if(Date.now()-t.mtimeMs<x5)return "young"}catch{}return null}}s(D5,"inspectLock");function N5(e,t){return !e||Date.now()-e.started>t?true:e.hostname&&e.hostname!==PB()?false:!v5(e.pid)}s(N5,"isStale");function v5(e){if(!Number.isInteger(e)||e<=0)return false;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}s(v5,"isProcessAlive");function F5(e){return e?`${e.hostname?`${e.hostname}:`:""}pid ${e.pid} (running ${Date.now()-e.started}ms)`:"unknown (unreadable lock metadata)"}s(F5,"describeHolder");function M5(e){if(typeof e!="object"||e===null)return false;let t=e;return typeof t.pid=="number"&&typeof t.started=="number"}s(M5,"isLockMetadata");function PB(){return hostname()}s(PB,"getHostname");function G5(e){return new Promise(t=>setTimeout(t,e))}s(G5,"sleep");b();Te();async function DB(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 DB(i,t));continue}n.push(relative(t,i).replace(/\\/g,"/"));}return n}s(DB,"listFiles");async function B5(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(B5,"removeIfStale");async function NB(e){let t=new Set(e.expectedPaths),r=new Set,n=e.scope??"project";for(let o of e.targets){let i=Nk(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 DB(l))r.add(`${a}/${c}`.replace(/\/+/g,"/"));}}}for(let o of r)await B5(e.projectRoot,o,t);}s(NB,"cleanupStaleGeneratedOutputs");Te();function Uh(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(Uh,"ensurePathInsideRoot");kp();b();ue();async function hL(e,t){let r=await fi(e.canonicalDir),n=t.length>0?await Pm(t):{},o=await Nh(join(e.canonicalDir,"packs")),i=process.env.USER??process.env.USERNAME??"unknown";await Ph(e.canonicalDir,{generatedAt:new Date().toISOString(),generatedBy:i,libVersion:Pa(),checksums:r,extends:n,packs:o});try{await u_(tr(),join(e.configDir,".agentsmeshcache"));}catch(a){S.warn(`Could not create .agentsmeshcache symlink: ${a instanceof Error?a.message:String(a)}`);}}s(hL,"writeLockFile");function e7(e,t){return e!=="global"||t.length===0?void 0:t.every(n=>We(n,"global")===void 0)?"no-global-support":void 0}s(e7,"resolveEmptyReason");async function HB(e){let{mode:t,scope:r,dryRun:n,context:o,resolvedExtends:i,flags:a,root:l,options:c,activeTargets:m}=e,p=e7(r,m);if(t==="check")return {exitCode:0,data:{scope:r,mode:t,files:[],summary:Bh([]),emptyReason:p}};if(n||await hL(o,i),c.printMatrix!==false){let{runMatrix:u}=await Promise.resolve().then(()=>(Qu(),CL)),{renderMatrix:f}=await Promise.resolve().then(()=>(qu(),EL)),g=await u(a,l);f(g,{verbose:a.verbose===true});}return {exitCode:0,data:{scope:r,mode:t,files:[],summary:Bh([]),emptyReason:p}}}s(HB,"handleEmptyResults");function zB(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:Bh(r)}}}s(zB,"buildCheckResult");async function VB(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 Nm(join(i.canonicalDir,".generate.lock"),{label:"generate lock"});try{if(!r){for(let h of t)if(h.status==="created"||h.status==="updated"){let y=Uh(i.rootBase,h.path,h.target);await L(y,h.content);}await NB({projectRoot:i.rootBase,targets:a,expectedPaths:t.map(h=>h.path),scope:n}),await hL(i,l);}}finally{u&&await u();}if(p.printMatrix!==false){let{runMatrix:h}=await Promise.resolve().then(()=>(Qu(),CL)),{renderMatrix:y}=await Promise.resolve().then(()=>(qu(),EL)),_=await h(c,m);y(_,{verbose:c.verbose===true});}let f=t.filter(h=>h.status!=="skipped"),g=f.map(h=>({path:h.path,target:h.target,status:h.status}));return {exitCode:0,data:{scope:n,mode:o,files:g,summary:Bh(f)}}}s(VB,"handleGenerateOrDryRun");function Bh(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(Bh,"buildSummary");async function Xo(e,t,r={}){if(e.features!==void 0)throw new Error("--features is no longer supported. Configure features in agentsmesh.yaml.");let n=t??process.cwd(),o=e.check===true,i=e["dry-run"]===true,a=e.force===true,l=e.global===true?"global":"project",c=e["refresh-cache"]===true||e["no-cache"]===true,m=e.targets,p=typeof m=="string"&&m?m.split(",").map(D=>D.trim()).filter(Boolean):void 0,u=o?"check":i?"dry-run":"generate",{config:f,context:g}=await _e(n,l);await ze(f,n);let h=f.collaboration?.lock_features??[];if(f.collaboration?.strategy==="lock"&&!a&&h.length>0){let D=await xh(g.canonicalDir);if(D!==null){let N=await fi(g.canonicalDir),K=Dh(D.checksums,N,h);if(K.length>0){S.error("Locked feature violation (strategy: lock). Modified files:");for(let J of K)S.error(` ${J}`);throw S.error("Run 'agentsmesh generate --force' to accept these changes."),new Error("Locked feature violation. Use --force to override.")}}}let{canonical:y,resolvedExtends:_}=await $t(f,g.configDir,{refreshRemoteCache:c},g.canonicalDir),R=[...f.targets,...f.pluginTargets??[]];if(p){let D=p.filter(N=>!R.includes(N));if(D.length>0)throw new Error(`Unknown target(s) in --targets: ${D.join(", ")}. Available: ${R.join(", ")}`)}let k=p?R.filter(D=>p.includes(D)):R,w=await Yo({config:f,canonical:y,projectRoot:g.rootBase,scope:l,targetFilter:p});return w.length===0?HB({mode:u,scope:l,dryRun:i,context:g,resolvedExtends:_,flags:e,root:n,options:r,activeTargets:k}):o?zB(w,l):VB({results:w,dryRun:i,scope:l,mode:u,context:g,activeTargets:k,resolvedExtends:_,flags:e,root:n,options:r})}s(Xo,"runGenerate");ue();fp();var t7={start(){},stop(){},message(){}};function r7(e){return e?.isTTY??ki(process.stdout)?{intro:s(r=>Yt.intro(r),"intro"),outro:s(r=>Yt.outro(r),"outro"),note:s((r,n)=>Yt.note(r,n),"note"),spinner:s(()=>Yt.spinner(),"spinner"),success:s(r=>Yt.log.success(r),"success"),error:s(r=>Yt.log.error(r),"error"),warn:s(r=>Yt.log.warn(r),"warn"),info:s(r=>Yt.log.info(r),"info"),step:s(r=>Yt.log.step(r),"step")}:{intro:s(()=>{},"intro"),outro:s(()=>{},"outro"),note:s(()=>{},"note"),spinner:s(()=>t7,"spinner"),success:s(r=>S.success(r),"success"),error:s(r=>S.error(r),"error"),warn:s(r=>S.warn(r),"warn"),info:s(r=>S.info(r),"info"),step:s(r=>S.info(r),"step")}}s(r7,"createUi");var M=r7();function OL(e,t){return e==="global"?`~/${t}`:t}s(OL,"formatDisplayPath");function Mm(e){let{data:t}=e,{scope:r,mode:n,files:o}=t;if(o.length===0){t.emptyReason==="no-global-support"?M.info("No files to generate (target has no global mode \u2014 try without --global)."):M.info("No files to generate (no root rule or rules feature disabled)."),n==="check"&&M.success("Generated files are in sync.");return}if(n==="check"){let c=o.filter(m=>m.status!=="unchanged");if(c.length===0){M.success("Generated files are in sync.");return}for(let m of c)M.error(`[check] ${m.status} ${OL(r,m.path)} (${m.target})`);M.error("Generated files are out of sync. Run 'agentsmesh generate' to update them.");return}if(n==="dry-run"){for(let c of o)M.info(`[dry-run] ${c.status} ${OL(r,c.path)} (${c.target})`);return}for(let c of o)(c.status==="created"||c.status==="updated")&&M.success(`${c.status} ${OL(r,c.path)}`);let{created:i,updated:a,unchanged:l}=t.summary;i>0||a>0?(M.note(`${i} created \xB7 ${a} updated \xB7 ${l} unchanged`,"Generated"),M.info(`Generated: ${i} created, ${a} updated, ${l} unchanged`)):M.info(`Nothing changed. (${l} unchanged)`);}s(Mm,"renderGenerate");b();Te();cn();function Kh(){return De.filter(e=>!e.excludeFromStarterInit).map(e=>e.id).filter(Bt)}s(Kh,"starterInitTargetIds");function Wh(){return De.filter(e=>e.globalSupport!==void 0).map(e=>e.id).filter(Bt)}s(Wh,"globalInitTargetIds");tt();var Zu=1,$m=2e3,Gm=z$1.string().regex(/^[a-z0-9-]+$/,"id must be kebab-case"),n7=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"),o7=z$1.object({summary:z$1.string().min(1,"topic summary must not be empty")}).strict(),s7=z$1.enum(["file_glob","command_pattern","keyword"]),i7=z$1.object({kind:s7,pattern:z$1.string().min(1,"trigger pattern must not be empty")}).strict(),a7=z$1.enum(["active","deprecated","superseded"]),l7=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(Gm).min(1,"lesson must reference at least one topic"),triggers:z$1.array(Gm),evidence:z$1.array(z$1.string().min(1)),status:a7,supersededBy:Gm.optional(),createdAt:n7}).strict(),Hl=z$1.object({version:z$1.literal(Zu),lessons:z$1.record(Gm,l7),topics:z$1.record(Gm,o7),triggers:z$1.record(Gm,i7)}).strict();function ed(e){return Hl.parse(e)}s(ed,"parseGraph");var f7=".agentsmesh/lessons/lessons.json";function Qo(e){return resolve(e,f7)}s(Qo,"graphFilePath");function td(e){let t=readFileSync(Qo(e),"utf8");return ed(JSON.parse(t))}s(td,"loadLessonsGraph");function Je(e){return existsSync(Qo(e))?td(e):null}s(Je,"tryLoadLessonsGraph");function zh(e){let t=Qo(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>Zu?{status:"newer-version",graph:null,version:n}:{status:"ok",graph:ed(r)}}catch(r){return {status:"corrupt",graph:null,error:r instanceof Error?r:new Error(String(r))}}}s(zh,"loadLessonsGraphResilient");function XB(e,t){let r=Qo(e);mkdirSync(dirname(r),{recursive:true});let n=`${r}.${process.pid}.tmp`;writeFileSync(n,rd(t),"utf8"),renameSync(n,r);}s(XB,"saveLessonsGraph");function rd(e){return `${JSON.stringify(Hh(e),null,2)}
|
|
212
|
+
`}s(rd,"serializeGraph");function Vh(e){return JSON.stringify(Hh(e))}s(Vh,"stableStringify");function Hh(e){if(e===null)return null;if(Array.isArray(e))return e.map(Hh);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]=Hh(o);return r}return e}s(Hh,"canonicalize");var S7=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"}),R7=z$1.object({topic:z$1.string().regex(/^[a-z0-9-]+$/),file:z$1.string().regex(/\.md$/),summary:z$1.string().min(1),triggers:S7}),qB=z$1.object({version:z$1.literal(1),clusters:z$1.array(R7)});function ZB(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=k7(i),r.set(a,l),t.set(l,{kind:i.kind,pattern:i.pattern})),o.includes(l)||o.push(l);}return o}s(ZB,"collectClusterTriggerIds");var I7={file_glob:"glob",command_pattern:"cmd",keyword:"kw"};function k7(e){let t=createHash("sha1").update(`${e.kind}|${e.pattern}`).digest("hex").slice(0,8);return `t-${I7[e.kind]}-${t}`}s(k7,"makeTriggerId");var L7=/^##\s+Rules\b.*$/i,C7=/^##\s+/,E7=/^(\d+)\.\s+(.+?)\s*$/,QB=/\s*\(Evidence:?\s+([^)]+)\)\s*$/,O7=/L\d+/g;function eK(e){let t=e.split(/\r?\n/),r=false,n=[];for(let o of t){if(!r){L7.test(o)&&(r=true);continue}if(C7.test(o))break;let i=E7.exec(o);if(i===null)continue;let a=Number(i[1]),l=i[2],c=[],m=QB.exec(l);for(;m!==null;){let u=m[1].match(O7);u!==null&&c.unshift(...u),l=l.slice(0,m.index).trimEnd(),m=QB.exec(l);}n.push({index:a,body:l,evidence:c});}return n}s(eK,"parseRulesSection");var w7=["index.yaml","journal.md","journal.legacy.md","topics","distill-ledger.yaml","distill-proposal.md"];function Jh(e){let t=[];for(let r of w7){let n=join(e,r);existsSync(n)&&(rmSync(n,{recursive:true,force:true}),t.push(n));}return t}s(Jh,"deleteLegacyArtifacts");function bL(e){return e.trim().replace(/\s+/g," ").toLowerCase()}s(bL,"normalizeRule");function nd(e,t){let r=[...e];for(let n of t)r.includes(n)||r.push(n);return r}s(nd,"union");function rK(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(wL(l),a);let o=[],i=[];for(let a of r){let l=wL(a),c=n.get(l);if(c!==void 0){o.includes(c)||o.push(c);continue}let m=A7(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(rK,"mergeTriggers");function wL(e){return `${e.kind}|${e.pattern}`}s(wL,"triggerKey");var b7={file_glob:"glob",command_pattern:"cmd",keyword:"kw"};function A7(e){let t=createHash("sha1").update(wL(e)).digest("hex").slice(0,8);return `t-${b7[e.kind]}-${t}`}s(A7,"makeTriggerId");function nK(e,t,r){let n=T7(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(nK,"makeLessonId");function T7(e){return e.replace(/[^a-z0-9 ]+/g," ").split(/\s+/).filter(r=>r.length>0).slice(0,5).join("-").slice(0,40).replace(/-+$/,"")}s(T7,"ruleToSlug");function oK(){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(oK,"todayIso");var Vn=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"},gi=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"},hi=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";}},yi=class extends Error{constructor(r){super(`This capture would create a lesson with no effective trigger \u2014 every trigger is dead on the mandatory --file/--cmd recall path, so the lesson could never be recalled there:
|
|
213
213
|
`+r.map(n=>` \u2022 ${n.kind} "${n.pattern}" \u2014 ${n.reason}`).join(`
|
|
214
214
|
`)+`
|
|
215
|
-
Fix: add a precise --trigger-file <glob> (preferred) or a valid --trigger-cmd <regex>; for a keyword, drop the stopwords (e.g. "state art" not "state of the art").`);this.deadTriggers=r;this.name="UnrecallableLessonError";}static{s(this,"UnrecallableLessonError");}code="UNRECALLABLE_LESSON"};var
|
|
216
|
-
`&&e!=="\r"&&e!=="\u2028"&&e!=="\u2029"}s(
|
|
217
|
-
`;case "r":return "\r";case "f":return "\f";case "v":return "\v";case "0":return "\0";default:return e}}s(DL,"escapeLiteral");function IK(e){let t=0,r=s(()=>e[t],"peek"),n=s(()=>e[t++],"eat");function o(){let h=[i()];for(;r()==="|";)t+=1,h.push(i());return h.length===1?h[0]:{k:"alt",opts:h}}s(o,"parseAlt");function i(){let h=[];for(;t<e.length&&r()!=="|"&&r()!==")";)h.push(a());return h.length===0?{k:"empty"}:h.length===1?h[0]:{k:"concat",items:h}}s(i,"parseConcat");function a(){let h=c(),y=r();if(y==="*"||y==="+"||y==="?")return t+=1,r()==="?"&&(t+=1),y==="*"?{k:"star",node:h}:y==="+"?{k:"plus",node:h}:{k:"opt",node:h};if(y==="{"){let _=l();if(_!==null)return RK(h,_.min,_.max)}return h}s(a,"parseQuantified");function l(){let h=/^\{(\d+)(,(\d*)?)?\}/.exec(e.slice(t));if(h===null)return null;t+=h[0].length,r()==="?"&&(t+=1);let y=Number(h[1]),_=h[2]===void 0?y:h[3]===""||h[3]===void 0?1/0:Number(h[3]);if(y>Yh||_!==1/0&&_>Yh)throw new kr(`Repeat count over ${Yh} not supported: {${h[1]}\u2026}`);return {min:y,max:_}}s(l,"tryParseBrace");function c(){let h=r();if(h==="(")return m();if(h==="[")return u();if(h==="\\")return p();if(h===".")return t+=1,{k:"any"};if(h==="^")return t+=1,{k:"assert",kind:"start"};if(h==="$")return t+=1,{k:"assert",kind:"end"};if(h===void 0||h==="*"||h==="+"||h==="?"||h===")")throw new kr(`Unexpected '${h??"<end>"}' in pattern`);return t+=1,{k:"char",ch:h}}s(c,"parseAtom");function m(){if(t+=1,r()==="?"){let y=e[t+1];if((y==="="||y==="!"||y==="<")&&!(y==="<"&&/[A-Za-z]/.test(e[t+2]??"")))throw new kr("Lookaround assertions are not supported");if(y===":")t+=2;else if(y==="<"){for(t+=2;t<e.length&&e[t]!==">";)t+=1;t+=1;}}let h=o();if(r()!==")")throw new kr("Unbalanced group");return t+=1,h}s(m,"parseGroup");function p(){t+=1;let h=r();if(h===void 0)throw new kr("Trailing backslash");if(/[1-9]/.test(h)||h==="k")throw new kr("Backreferences are not supported");if(t+=1,h==="b")return {k:"assert",kind:"wordB"};if(h==="B")return {k:"assert",kind:"nonWordB"};let y=AL(h);if(y!==null)return {k:"class",test:y};if(h==="x"||h==="u"||h==="c"){let{ch:_,len:R}=h==="c"?xL(e,t):TL(e,t,h);return t+=R,{k:"char",ch:_}}return {k:"char",ch:DL(h)}}s(p,"parseEscape");function u(){t+=1;let h=r()==="^";h&&(t+=1);let y=[];for(;t<e.length&&r()!=="]";)y.push(f());if(r()!=="]")throw new kr("Unterminated character class");t+=1;let _=s(R=>y.some(k=>k(R)),"base");return {k:"class",test:h?R=>!_(R):_}}s(u,"parseClass");function f(){let h;if(r()==="\\"){t+=1;let y=n(),_=AL(y);if(_!==null)return _;let R=PL(e,t,y);t+=R.len,h=R.ch;}else h=n();if(r()==="-"&&e[t+1]!==void 0&&e[t+1]!=="]"){t+=1;let y;if(r()==="\\"){t+=1;let k=n(),w=PL(e,t,k);t+=w.len,y=w.ch;}else y=n();let _=h.codePointAt(0),R=y.codePointAt(0);return k=>{let w=k.codePointAt(0);return w>=_&&w<=R}}return y=>y===h}s(f,"parseClassMember");let g=o();if(t!==e.length)throw new kr(`Unexpected '${r()}' at ${t}`);return g}s(IK,"parseRegex");var NL=new Map;function vL(e){let t=NL.get(e);if(t!==void 0||NL.has(e))return t??null;let r;try{r=_K(IK(e));}catch{r=null;}return NL.set(e,r),r}s(vL,"compileLinearMatcher");var kK=1e3;function sd(e){return e.length>kK?false:vL(e)!==null}s(sd,"isSafeRegexPattern");function LK(e){return e.length>kK?null:vL(e)}s(LK,"getCommandMatcher");function EK(e,t){let r=new Map;for(let[n,o]of Object.entries(e.lessons)){if(o.status!=="active")continue;let i=U7(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(EK,"collectDuplicateRules");function OK(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}sd(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(OK,"collectInvalidTriggerPatterns");function wK(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(wK,"collectBackslashGlobPatterns");function bK(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(bK,"collectDuplicateTriggers");var CK=10;function AK(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>CK&&(n+=1),i>o&&(o=i);n>0&&t.push({level:"warning",code:"HIGH_FANOUT_TRIGGERS",message:`${n} trigger(s) each match more than ${CK} active lessons (max ${o}); recall returns the ranked top by default \u2014 consider per-lesson trigger refinement to improve precision.`});}s(AK,"collectFanout");function TK(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)&&zh(o.pattern)&&t.push({level:"warning",code:"LOW_SIGNAL_KEYWORD",message:`Keyword trigger "${n}" carries more than ${nd} 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(TK,"collectLowSignalKeywords");function xK(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)&&(jt(o.pattern).length!==0&&!jm(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(xK,"collectStopwordKeywords");function U7(e){return e.trim().replace(/\s+/g," ").toLowerCase()}s(U7,"normalizeRule");function Jn(e,t={}){let r=[],n=Hl.safeParse(e);return n.success?(mK(e,r),pK(e,r),uK(e,r),dK(e,r),EK(e,r),fK(e,r),OK(e,r),wK(e,r),bK(e,r),gK(e,r),AK(e,r),TK(e,r),xK(e,r),sK(e,r),t.knownPaths!==void 0&&oK(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(Jn,"validateLessonsGraph");function B7(){return {version:1,lessons:{},topics:{},triggers:{}}}s(B7,"emptyGraph");function PK(e){return `${e.code}|${e.triggerId??""}|${e.lessonId??""}`}s(PK,"findingKey");function K7(e){return new Set(e.findings.filter(t=>t.level==="error").map(PK))}s(K7,"errorSignatures");async function Vl(e,t,r={}){let n=await Jh(e,{retries:r.retries});try{let o=Je(e)??B7(),i=K7(Jn(o)),a=await t(o),c=Jn(o).findings.filter(m=>m.level==="error"&&!i.has(PK(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 HB(e,o),a}finally{await n();}}s(Vl,"mutateLessonsGraphLocked");async function wt(e,t,r={}){return await gt(e),Vl(e,t,r)}s(wt,"mutateLessonsGraph");function W7(e,t){let r=[];for(let n of t){let o=e.triggers[n];if(o===void 0)continue;let i=H7(o.kind,o.pattern);i!==null&&r.push({id:n,kind:o.kind,pattern:o.pattern,reason:i});}return r}s(W7,"ineffectiveTriggers");function H7(e,t){if(e==="keyword")return jt(t).length===0?"keyword has no matchable token after stopword filtering \u2014 it cannot fire on the mandatory --file/--cmd recall path":jm(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?sd(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(H7,"ineffectiveReason");function DK(e,t){return W7(e,t).filter(r=>r.kind!=="command_pattern")}s(DK,"blockingDeadTriggers");function z7(e){return (e.files?.length??0)+(e.commands?.length??0)+(e.keywords?.length??0)}s(z7,"countInputTriggers");async function Xh(e,t,r={}){return wt(e,n=>FL(n,t,r),{retries:r.retries})}s(Xh,"addLesson");function FL(e,t,r){let n=OL(t.rule),o=t.rule.trim();if(o.length>$m)throw new gi(o.length,$m);let i=V7(e,n),a=e.topics[t.topic]===void 0;if(a){if(r.allowNewTopic!==true)throw new Vn(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(z7(t.triggers)===0&&f===0)throw new hi}let{triggerIds:l,newTriggerIds:c}=QB(e,t.triggers);if(r.allowNoTrigger!==true){let f=i!==null?rd(e.lessons[i].triggers,l):l,g=DK(e,f);if(f.length>0&&g.length===f.length)throw new yi(g)}if(i!==null){let f=e.lessons[i];return e.lessons[i]={...f,topics:rd(f.topics,[t.topic]),triggers:rd(f.triggers,l),evidence:rd(f.evidence,t.evidence??[]),...f.rationale===void 0&&t.rationale!==void 0?{rationale:t.rationale}:{}},{id:i,isNewLesson:false,isNewTopic:a,newTriggerIds:c,warnings:wL(e,i,r.knownPaths)}}let m=qB(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??ZB(),...t.rationale===void 0?{}:{rationale:t.rationale}};let p=wL(e,m,r.knownPaths),u=iK(e,m);return {id:m,isNewLesson:true,isNewTopic:a,newTriggerIds:c,warnings:u===null?p:[...p,u]}}s(FL,"addLessonInto");function V7(e,t){for(let[r,n]of Object.entries(e.lessons))if(n.status==="active"&&OL(n.rule)===t)return r;return null}s(V7,"findExistingLessonByRule");async function NK(e,t,r,n,o){let i=0,a=new Set,l=new Set;await Vl(e,m=>{i=0,a.clear(),l.clear();for(let p of r){let u=FL(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?[]:Hh(t.base);return {wroteGraphPath:t.graph,deletedPaths:c,topicCount:l.size,lessonCount:i,triggerCount:a.size}}s(NK,"mergeLegacy");var Q7=".agentsmesh/lessons";function je(e){let t=join(e,Q7);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 id(e){return existsSync(je(e).config)}s(id,"lessonsActivated");function ad(){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(ad,"lessonsSetupHint");function Qh(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(Qh,"ancestorLessonsProjectDir");function Jl(e,t){return relative(e,t).split(sep).join("/")}s(Jl,"toRelPath");var ld='## 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 Bm=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 Km(e,t){let r=je(e),n=readFileSync(r.index,"utf8"),o=VB.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=JB(g,a,l),y=join(e,g.file);if(!existsSync(y))throw new Error(`importLegacyLessons: declared topic file is missing: ${g.file}. Refusing to migrate (legacy artifacts left intact).`);let _=readFileSync(y,"utf8");for(let{index:R,body:k,evidence:w}of YB(_)){let D=[`legacy:${g.file}#rule-${R}`,...w.map(N=>`legacy:${N}`)];c[`${g.topic}-rule-${R}`]={rule:k,topics:[g.topic],triggers:h,evidence:D,status:"active",createdAt:t.migratedAt},m.push({rule:k,topic:g.topic,triggers:{files:g.triggers.file_globs,commands:g.triggers.command_patterns,keywords:g.triggers.keywords},evidence:D,createdAt:t.migratedAt});}}if(t.merge===true)return NK(e,r,m,p,t);let u=Object.fromEntries(a.entries());await Vl(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 Bm;g.version=1,g.lessons=c,g.topics=i,g.triggers=u;});let f=t.deleteLegacy===false?[]:Hh(r.base);return {wroteGraphPath:r.graph,deletedPaths:f,topicCount:Object.keys(i).length,lessonCount:Object.keys(c).length,triggerCount:a.size}}s(Km,"importLegacyLessons");function tee(){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(tee,"todayIso");async function gt(e){if(existsSync(Qo(e)))return false;let t=je(e);if(!existsSync(t.index))return false;try{return await Km(e,{migratedAt:tee()}),!0}catch(r){if(r instanceof Bm)return false;throw r}}s(gt,"maybeAutoMigrateLessons");function qh(e){return existsSync(e)}s(qh,"logExists");function Zh(e,t,r){mkdirSync(dirname(e),{recursive:true}),appendFileSync(e,`${JSON.stringify(t)}
|
|
218
|
-
`,"utf8"),statSync(e).size>r.trimTriggerBytes&&
|
|
215
|
+
Fix: add a precise --trigger-file <glob> (preferred) or a valid --trigger-cmd <regex>; for a keyword, drop the stopwords (e.g. "state art" not "state of the art").`);this.deadTriggers=r;this.name="UnrecallableLessonError";}static{s(this,"UnrecallableLessonError");}code="UNRECALLABLE_LESSON"};var x7=new Set(["the","a","an","to","of","in","and","or","for","is","on","at","with","be","as","it","that","this","its","must"]);function jt(e){return e.toLowerCase().split(/[^a-z0-9]+/).filter(t=>t.length>=2&&!x7.has(t))}s(jt,"tokenize");function sK(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),jt(t.join(" "))}s(sK,"queryTerms");function iK(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=jt(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(iK,"buildCorpus");function aK(e,t,r){let n=jt(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(aK,"bm25");var od=5;function Yh(e){return jt(e).length>od}s(Yh,"isLowSignalKeyword");function P7(e){return e.toLowerCase().split(/[^a-z0-9]+/).filter(t=>t.length>0)}s(P7,"splitRawTokens");function jm(e){let t=P7(e);return t.length<2?false:jt(e).length!==t.length}s(jm,"keywordNeedleLosesTokens");function lK(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(lK,"activeTriggerIds");function sd(e,t){let r=lK(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=D7(a.pattern,{dot:true});n.some(c=>l(c))||o.add(i);}return o}s(sd,"deadFileGlobIds");function cK(e,t,r){for(let n of sd(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(cK,"collectDeadFileGlobs");var N7=/^\^(pnpm|npm|npx|yarn|bun)\b/;function mK(e,t){let r=lK(e);for(let[n,o]of Object.entries(e.triggers))o.kind==="command_pattern"&&r.has(n)&&N7.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(mK,"collectRunnerAnchoredPatterns");var v7=.6,Xh=8;function F7(e){let t=e.trim();return t==="*"||t==="**"?true:t.includes("**")?t.slice(t.lastIndexOf("/")+1).startsWith("*"):false}s(F7,"isBroadGlob");function AL(e,t,r){let n=e.lessons[t];if(n===void 0)return [];let o=[];n.triggers.length>Xh&&o.push({code:"OVERSIZED_LESSON_TRIGGERS",message:`Lesson "${t}" has ${n.triggers.length} triggers (recommended \u2264 ${Xh}); 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"&&F7(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"&&Yh(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 ${od} tokens rarely fires \u2014 use a short distinctive phrase.`});let c=i.filter(m=>m.kind==="keyword"&&jm(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=sd(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(AL,"inspectCapturedLesson");function pK(e,t){let r=e.lessons[t];if(r===void 0)return null;let n=new Set(jt(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(jt(a.rule));if(l.size===0)continue;let c=M7(n,l);c>=v7&&(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(pK,"nearDuplicateWarning");function M7(e,t){let r=0;for(let n of e)t.has(n)&&(r+=1);return r/(e.size+t.size-r)}s(M7,"jaccard");var uK=".lessons.lock";function dK(e){return resolve(e,".agentsmesh/lessons",uK)}s(dK,"lessonsLockPath");async function Qh(e,t={}){let r=dK(e);return await mkdir(dirname(r),{recursive:true}),Nm(r,{...t,label:"lessons lock"})}s(Qh,"acquireLessonsLock");function gK(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(gK,"collectDanglingRefs");function hK(e,t){for(let[r,n]of Object.entries(e.lessons)){for(let o of fK(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 fK(n.triggers))t.push({level:"error",code:"DUPLICATE_TRIGGER_REF",message:`Lesson "${r}" references trigger "${o}" more than once.`,lessonId:r,triggerId:o});}}s(hK,"collectDuplicateRefs");function fK(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(fK,"firstDuplicates");function yK(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(yK,"collectStatusInvariants");function _K(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});}U7(e,t);}s(_K,"collectLifecycleInvariants");function U7(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(U7,"collectSupersedeCycles");function SK(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(SK,"collectReachability");function RK(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(RK,"collectOrphans");var TL=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 B7(e){return e!==`
|
|
216
|
+
`&&e!=="\r"&&e!=="\u2028"&&e!=="\u2029"}s(B7,"isNonLineTerminator");function zl(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"?B7:t.test;return e.states[r].chars.push({test:o,target:n}),{start:r,end:n}}case "concat":{if(t.items.length===0)return zl(e,{k:"empty"});let r=null,n=-1;for(let o of t.items){let i=zl(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=zl(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=zl(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=zl(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=zl(e,t.node);return e.states[n.end].eps.push(n.start,r),{start:n.start,end:r}}}}s(zl,"compileNode");function IK(e){let t=new TL,{start:r,end:n}=zl(t,e);return {states:t.states,start:r,accept:n}}s(IK,"compileNfa");function kK(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(kK,"wordBoundary");function K7(e,t,r){switch(e){case "start":return r===0;case "end":return r===t.length;case "wordB":return kK(t,r);case "nonWordB":return !kK(t,r)}}s(K7,"assertHolds");function LK(e){let{states:t,start:r,accept:n}=IK(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)K7(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(LK,"buildMatcher");var kr=class extends Error{static{s(this,"UnsupportedRegexError");}constructor(t){super(t),this.name="UnsupportedRegexError";}};var qh=1e3,CK=s(e=>/[A-Za-z0-9_]/.test(e),"isWord");function EK(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(EK,"expandRepeat");function xL(e){switch(e){case "d":return t=>t>="0"&&t<="9";case "D":return t=>!(t>="0"&&t<="9");case "w":return CK;case "W":return t=>!CK(t);case "s":return t=>/\s/.test(t);case "S":return t=>!/\s/.test(t);default:return null}}s(xL,"escapeClass");var W7=/^[0-9a-fA-F]{2}$/,H7=/^[0-9a-fA-F]{4}$/;function PL(e,t,r){if(r==="x"){let o=e.slice(t,t+2);return W7.test(o)?{ch:String.fromCharCode(parseInt(o,16)),len:2}:{ch:"x",len:0}}let n=e.slice(t,t+4);return H7.test(n)?{ch:String.fromCharCode(parseInt(n,16)),len:4}:{ch:"u",len:0}}s(PL,"readUnicodeEscape");function DL(e,t){let r=e[t];if(r===void 0||!/[A-Za-z]/.test(r))throw new kr("\\c must be followed by a letter");return {ch:String.fromCharCode(r.charCodeAt(0)&31),len:1}}s(DL,"readControlEscape");function NL(e,t,r){return r==="b"?{ch:"\b",len:0}:r==="c"?DL(e,t):r==="x"||r==="u"?PL(e,t,r):{ch:vL(r),len:0}}s(NL,"classEscapeChar");function vL(e){switch(e){case "t":return " ";case "n":return `
|
|
217
|
+
`;case "r":return "\r";case "f":return "\f";case "v":return "\v";case "0":return "\0";default:return e}}s(vL,"escapeLiteral");function OK(e){let t=0,r=s(()=>e[t],"peek"),n=s(()=>e[t++],"eat");function o(){let h=[i()];for(;r()==="|";)t+=1,h.push(i());return h.length===1?h[0]:{k:"alt",opts:h}}s(o,"parseAlt");function i(){let h=[];for(;t<e.length&&r()!=="|"&&r()!==")";)h.push(a());return h.length===0?{k:"empty"}:h.length===1?h[0]:{k:"concat",items:h}}s(i,"parseConcat");function a(){let h=c(),y=r();if(y==="*"||y==="+"||y==="?")return t+=1,r()==="?"&&(t+=1),y==="*"?{k:"star",node:h}:y==="+"?{k:"plus",node:h}:{k:"opt",node:h};if(y==="{"){let _=l();if(_!==null)return EK(h,_.min,_.max)}return h}s(a,"parseQuantified");function l(){let h=/^\{(\d+)(,(\d*)?)?\}/.exec(e.slice(t));if(h===null)return null;t+=h[0].length,r()==="?"&&(t+=1);let y=Number(h[1]),_=h[2]===void 0?y:h[3]===""||h[3]===void 0?1/0:Number(h[3]);if(y>qh||_!==1/0&&_>qh)throw new kr(`Repeat count over ${qh} not supported: {${h[1]}\u2026}`);return {min:y,max:_}}s(l,"tryParseBrace");function c(){let h=r();if(h==="(")return m();if(h==="[")return u();if(h==="\\")return p();if(h===".")return t+=1,{k:"any"};if(h==="^")return t+=1,{k:"assert",kind:"start"};if(h==="$")return t+=1,{k:"assert",kind:"end"};if(h===void 0||h==="*"||h==="+"||h==="?"||h===")")throw new kr(`Unexpected '${h??"<end>"}' in pattern`);return t+=1,{k:"char",ch:h}}s(c,"parseAtom");function m(){if(t+=1,r()==="?"){let y=e[t+1];if((y==="="||y==="!"||y==="<")&&!(y==="<"&&/[A-Za-z]/.test(e[t+2]??"")))throw new kr("Lookaround assertions are not supported");if(y===":")t+=2;else if(y==="<"){for(t+=2;t<e.length&&e[t]!==">";)t+=1;t+=1;}}let h=o();if(r()!==")")throw new kr("Unbalanced group");return t+=1,h}s(m,"parseGroup");function p(){t+=1;let h=r();if(h===void 0)throw new kr("Trailing backslash");if(/[1-9]/.test(h)||h==="k")throw new kr("Backreferences are not supported");if(t+=1,h==="b")return {k:"assert",kind:"wordB"};if(h==="B")return {k:"assert",kind:"nonWordB"};let y=xL(h);if(y!==null)return {k:"class",test:y};if(h==="x"||h==="u"||h==="c"){let{ch:_,len:R}=h==="c"?DL(e,t):PL(e,t,h);return t+=R,{k:"char",ch:_}}return {k:"char",ch:vL(h)}}s(p,"parseEscape");function u(){t+=1;let h=r()==="^";h&&(t+=1);let y=[];for(;t<e.length&&r()!=="]";)y.push(f());if(r()!=="]")throw new kr("Unterminated character class");t+=1;let _=s(R=>y.some(k=>k(R)),"base");return {k:"class",test:h?R=>!_(R):_}}s(u,"parseClass");function f(){let h;if(r()==="\\"){t+=1;let y=n(),_=xL(y);if(_!==null)return _;let R=NL(e,t,y);t+=R.len,h=R.ch;}else h=n();if(r()==="-"&&e[t+1]!==void 0&&e[t+1]!=="]"){t+=1;let y;if(r()==="\\"){t+=1;let k=n(),w=NL(e,t,k);t+=w.len,y=w.ch;}else y=n();let _=h.codePointAt(0),R=y.codePointAt(0);return k=>{let w=k.codePointAt(0);return w>=_&&w<=R}}return y=>y===h}s(f,"parseClassMember");let g=o();if(t!==e.length)throw new kr(`Unexpected '${r()}' at ${t}`);return g}s(OK,"parseRegex");var FL=new Map;function ML(e){let t=FL.get(e);if(t!==void 0||FL.has(e))return t??null;let r;try{r=LK(OK(e));}catch{r=null;}return FL.set(e,r),r}s(ML,"compileLinearMatcher");var wK=1e3;function id(e){return e.length>wK?false:ML(e)!==null}s(id,"isSafeRegexPattern");function bK(e){return e.length>wK?null:ML(e)}s(bK,"getCommandMatcher");function TK(e,t){let r=new Map;for(let[n,o]of Object.entries(e.lessons)){if(o.status!=="active")continue;let i=z7(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(TK,"collectDuplicateRules");function xK(e,t){for(let[r,n]of Object.entries(e.triggers))if(n.kind==="command_pattern"){try{new RegExp(n.pattern);}catch(o){t.push({level:"error",code:"INVALID_TRIGGER_PATTERN",message:`Trigger "${r}" has an invalid command_pattern regex (${n.pattern}): ${o instanceof Error?o.message:String(o)}.`,triggerId:r});continue}id(n.pattern)||t.push({level:"error",code:"UNSAFE_TRIGGER_PATTERN",message:`Trigger "${r}" has a command_pattern regex outside the provably-linear subset (${n.pattern}): it can backtrack catastrophically (e.g. a quantified group like (a+)+ or (a|aa)+, adjacent repetition like a+a+, or a backreference/lookaround). Rewrite using a linear pattern.`,triggerId:r});}}s(xK,"collectInvalidTriggerPatterns");function PK(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(PK,"collectBackslashGlobPatterns");function DK(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(DK,"collectDuplicateTriggers");var AK=10;function NK(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>AK&&(n+=1),i>o&&(o=i);n>0&&t.push({level:"warning",code:"HIGH_FANOUT_TRIGGERS",message:`${n} trigger(s) each match more than ${AK} active lessons (max ${o}); recall returns the ranked top by default \u2014 consider per-lesson trigger refinement to improve precision.`});}s(NK,"collectFanout");function vK(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)&&Yh(o.pattern)&&t.push({level:"warning",code:"LOW_SIGNAL_KEYWORD",message:`Keyword trigger "${n}" carries more than ${od} 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(vK,"collectLowSignalKeywords");function FK(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)&&(jt(o.pattern).length!==0&&!jm(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(FK,"collectStopwordKeywords");function z7(e){return e.trim().replace(/\s+/g," ").toLowerCase()}s(z7,"normalizeRule");function Jn(e,t={}){let r=[],n=Hl.safeParse(e);return n.success?(gK(e,r),hK(e,r),yK(e,r),_K(e,r),TK(e,r),SK(e,r),xK(e,r),PK(e,r),DK(e,r),RK(e,r),NK(e,r),vK(e,r),FK(e,r),mK(e,r),t.knownPaths!==void 0&&cK(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(Jn,"validateLessonsGraph");function V7(){return {version:1,lessons:{},topics:{},triggers:{}}}s(V7,"emptyGraph");function MK(e){return `${e.code}|${e.triggerId??""}|${e.lessonId??""}`}s(MK,"findingKey");function J7(e){return new Set(e.findings.filter(t=>t.level==="error").map(MK))}s(J7,"errorSignatures");async function Vl(e,t,r={}){let n=await Qh(e,{retries:r.retries});try{let o=Je(e)??V7(),i=J7(Jn(o)),a=await t(o),c=Jn(o).findings.filter(m=>m.level==="error"&&!i.has(MK(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 XB(e,o),a}finally{await n();}}s(Vl,"mutateLessonsGraphLocked");async function wt(e,t,r={}){return await gt(e),Vl(e,t,r)}s(wt,"mutateLessonsGraph");function Y7(e,t){let r=[];for(let n of t){let o=e.triggers[n];if(o===void 0)continue;let i=X7(o.kind,o.pattern);i!==null&&r.push({id:n,kind:o.kind,pattern:o.pattern,reason:i});}return r}s(Y7,"ineffectiveTriggers");function X7(e,t){if(e==="keyword")return jt(t).length===0?"keyword has no matchable token after stopword filtering \u2014 it cannot fire on the mandatory --file/--cmd recall path":jm(t)?"keyword contains stopwords/short words, so its needle can never appear as a contiguous run on the mandatory --file/--cmd recall path":null;if(e==="command_pattern"){let r=true;try{new RegExp(t);}catch{r=false;}return r?id(t)?null:"regex is outside the provably-linear engine \u2014 recall skips it (ReDoS guard), so it never fires":"invalid regex \u2014 recall compiles it with new RegExp and swallows the throw as a non-match, so it never fires"}return null}s(X7,"ineffectiveReason");function GK(e,t){return Y7(e,t).filter(r=>r.kind!=="command_pattern")}s(GK,"blockingDeadTriggers");function Q7(e){return (e.files?.length??0)+(e.commands?.length??0)+(e.keywords?.length??0)}s(Q7,"countInputTriggers");async function Zh(e,t,r={}){return wt(e,n=>GL(n,t,r),{retries:r.retries})}s(Zh,"addLesson");function GL(e,t,r){let n=bL(t.rule),o=t.rule.trim();if(o.length>$m)throw new gi(o.length,$m);let i=q7(e,n),a=e.topics[t.topic]===void 0;if(a){if(r.allowNewTopic!==true)throw new Vn(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(Q7(t.triggers)===0&&f===0)throw new hi}let{triggerIds:l,newTriggerIds:c}=rK(e,t.triggers);if(r.allowNoTrigger!==true){let f=i!==null?nd(e.lessons[i].triggers,l):l,g=GK(e,f);if(f.length>0&&g.length===f.length)throw new yi(g)}if(i!==null){let f=e.lessons[i];return e.lessons[i]={...f,topics:nd(f.topics,[t.topic]),triggers:nd(f.triggers,l),evidence:nd(f.evidence,t.evidence??[]),...f.rationale===void 0&&t.rationale!==void 0?{rationale:t.rationale}:{}},{id:i,isNewLesson:false,isNewTopic:a,newTriggerIds:c,warnings:AL(e,i,r.knownPaths)}}let m=nK(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??oK(),...t.rationale===void 0?{}:{rationale:t.rationale}};let p=AL(e,m,r.knownPaths),u=pK(e,m);return {id:m,isNewLesson:true,isNewTopic:a,newTriggerIds:c,warnings:u===null?p:[...p,u]}}s(GL,"addLessonInto");function q7(e,t){for(let[r,n]of Object.entries(e.lessons))if(n.status==="active"&&bL(n.rule)===t)return r;return null}s(q7,"findExistingLessonByRule");async function $K(e,t,r,n,o){let i=0,a=new Set,l=new Set;await Vl(e,m=>{i=0,a.clear(),l.clear();for(let p of r){let u=GL(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?[]:Jh(t.base);return {wroteGraphPath:t.graph,deletedPaths:c,topicCount:l.size,lessonCount:i,triggerCount:a.size}}s($K,"mergeLegacy");var ree=".agentsmesh/lessons";function je(e){let t=join(e,ree);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 ad(e){return existsSync(je(e).config)}s(ad,"lessonsActivated");function ld(){return "lessons is not fully set up here \u2014 run `agentsmesh init --lessons`, then `agentsmesh generate`, to wire recall + capture into your AI tools."}s(ld,"lessonsSetupHint");function ey(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(ey,"ancestorLessonsProjectDir");function Jl(e,t){return relative(e,t).split(sep).join("/")}s(Jl,"toRelPath");var cd='## 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 Bm=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 Km(e,t){let r=je(e),n=readFileSync(r.index,"utf8"),o=qB.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=ZB(g,a,l),y=join(e,g.file);if(!existsSync(y))throw new Error(`importLegacyLessons: declared topic file is missing: ${g.file}. Refusing to migrate (legacy artifacts left intact).`);let _=readFileSync(y,"utf8");for(let{index:R,body:k,evidence:w}of eK(_)){let D=[`legacy:${g.file}#rule-${R}`,...w.map(N=>`legacy:${N}`)];c[`${g.topic}-rule-${R}`]={rule:k,topics:[g.topic],triggers:h,evidence:D,status:"active",createdAt:t.migratedAt},m.push({rule:k,topic:g.topic,triggers:{files:g.triggers.file_globs,commands:g.triggers.command_patterns,keywords:g.triggers.keywords},evidence:D,createdAt:t.migratedAt});}}if(t.merge===true)return $K(e,r,m,p,t);let u=Object.fromEntries(a.entries());await Vl(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 Bm;g.version=1,g.lessons=c,g.topics=i,g.triggers=u;});let f=t.deleteLegacy===false?[]:Jh(r.base);return {wroteGraphPath:r.graph,deletedPaths:f,topicCount:Object.keys(i).length,lessonCount:Object.keys(c).length,triggerCount:a.size}}s(Km,"importLegacyLessons");function iee(){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(iee,"todayIso");async function gt(e){if(existsSync(Qo(e)))return false;let t=je(e);if(!existsSync(t.index))return false;try{return await Km(e,{migratedAt:iee()}),!0}catch(r){if(r instanceof Bm)return false;throw r}}s(gt,"maybeAutoMigrateLessons");function ty(e){return existsSync(e)}s(ty,"logExists");function ry(e,t,r){mkdirSync(dirname(e),{recursive:true}),appendFileSync(e,`${JSON.stringify(t)}
|
|
218
|
+
`,"utf8"),statSync(e).size>r.trimTriggerBytes&&HK(e,r.maxRecords);}s(ry,"appendJsonl");function HK(e,t){if(!existsSync(e))return;let r=readFileSync(e,"utf8").split(`
|
|
219
219
|
`).filter(i=>i.trim().length>0);if(r.length<=t)return;let n=r.slice(r.length-t),o=`${e}.${process.pid}.tmp`;writeFileSync(o,`${n.join(`
|
|
220
220
|
`)}
|
|
221
|
-
`,"utf8"),renameSync(o,e);}s(
|
|
222
|
-
`))if(r.trim().length!==0)try{t.push(JSON.parse(r));}catch{}return t}s(
|
|
223
|
-
`).map(l=>l.trim()).filter(l=>l.length>0&&!l.startsWith("#"))),i=t.filter(l=>!
|
|
221
|
+
`,"utf8"),renameSync(o,e);}s(HK,"capJsonl");function ny(e){if(!existsSync(e))return [];let t=[];for(let r of readFileSync(e,"utf8").split(`
|
|
222
|
+
`))if(r.trim().length!==0)try{t.push(JSON.parse(r));}catch{}return t}s(ny,"readJsonl");var fee=5e3,gee=2e6,hee="AGENTSMESH_LESSONS_TELEMETRY",yee="AGENTSMESH_SESSION_ID";function Wm(e=process.env){let t=e[yee];return t!==void 0&&t.trim().length>0?t:void 0}s(Wm,"sessionId");function md(e){return join(je(e).base,"recall-log.jsonl")}s(md,"recallLogPath");function Ra(e=process.env){return e[hee]==="1"}s(Ra,"isTelemetryEnabled");function zK(e,t,r=process.env){Ra(r)&&ry(md(e),t,{maxRecords:fee,trimTriggerBytes:gee});}s(zK,"appendRecallRecord");function VK(e){return ty(md(e))}s(VK,"recallLogExists");function JK(e){return ny(md(e))}s(JK,"readRecallLog");var See=5e3,Ree=2e6;function pd(e){return join(je(e).base,"capture-log.jsonl")}s(pd,"captureLogPath");function Iee(e,t,r=process.env){Ra(r)&&ry(pd(e),t,{maxRecords:See,trimTriggerBytes:Ree});}s(Iee,"appendCaptureRecord");function YK(e){return ty(pd(e))}s(YK,"captureLogExists");function XK(e){return ny(pd(e))}s(XK,"readCaptureLog");function jL(e,t,r,n=process.env){if(!Ra(n))return;let o=Wm(n);Iee(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(jL,"recordCapture");function kee(e){return e.toLowerCase().split(/[^a-z0-9]+/).filter(t=>t.length>0)}s(kee,"splitTokens");function Lee(e){let t=[];return e.file!==void 0&&t.push(e.file),e.command!==void 0&&t.push(e.command),t.length===0?[]:kee(t.join(" "))}s(Lee,"deriveHaystackTokens");function Cee(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(Cee,"containsRun");function QK(e,t){return t.keyword!==void 0&&t.keyword.toLowerCase().includes(e.toLowerCase())?true:Cee(jt(e),Lee(t))}s(QK,"keywordMatches");var Oee=5e6;function Hm(e,t){if(t.file===void 0&&t.command===void 0&&t.keyword===void 0)return [];let r=BL(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(Hm,"queryLessons");function UL(e,t){let r={file_glob:new Set,command_pattern:new Set,keyword:new Set},n={remaining:Oee};for(let[o,i]of Object.entries(e.triggers))wee(i,t,n)&&r[i.kind].add(o);return r}s(UL,"collectMatchedTriggersByKind");function BL(e,t){let{file_glob:r,command_pattern:n,keyword:o}=UL(e,t);return new Set([...r,...n,...o])}s(BL,"collectMatchedTriggerIds");function wee(e,t,r){switch(e.kind){case "file_glob":return t.file===void 0?false:D7(e.pattern,{dot:true})(t.file);case "command_pattern":{if(t.command===void 0)return false;let n=bK(e.pattern);return n!==null&&n.test(t.command,r)}case "keyword":return QK(e.pattern,t)}}s(wee,"triggerMatches");function oy(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(oy,"buildFanout");function qK(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(qK,"buildTopicCoherence");var ud=10,sy=400,KL=60,bee=3,Aee=2,Tee=1;function WL(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(WL,"rankMap");function Yl(e){return Math.ceil(e.length/4)}s(Yl,"estTokens");function zm(e,t,r,n={}){if(r.length===0)return [];let o=sK(t),i=iK(e),a=oy(e),l=qK(r),c=BL(e,t),m=r.map(({id:h,lesson:y})=>{let _=y.triggers.filter(k=>c.has(k)),R=0;for(let k of _)R=Math.max(R,1/a.get(k));return {id:h,lesson:y,bm25:aK(o,y.rule,i),specificity:R,topicCoherence:l.get(h),matchedTriggers:_}}),p=WL(m.map(h=>({id:h.id,value:h.bm25}))),u=WL(m.map(h=>({id:h.id,value:h.specificity}))),f=WL(m.map(h=>({id:h.id,value:h.topicCoherence}))),g=m.map(h=>({id:h.id,lesson:h.lesson,score:bee/(KL+u.get(h.id))+Aee/(KL+f.get(h.id))+Tee/(KL+p.get(h.id)),reason:{matchedTriggers:h.matchedTriggers,bm25:h.bm25,specificity:h.specificity,topicCoherence:h.topicCoherence}})).sort((h,y)=>{if(y.score!==h.score)return y.score-h.score;let _=h.lesson.createdAt,R=y.lesson.createdAt;return _!==R?_<R?1:-1:h.id<y.id?-1:1});return xee(g,n)}s(zm,"rankLessons");function xee(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=Yl(r[0].lesson.rule);for(let i of r.slice(1)){let a=Yl(i.lesson.rule);if(o+a>t.maxTokens)break;o+=a,n.push(i);}r=n;}return r}s(xee,"applyCaps");function tW(){return {recallLimit:ud,recallMaxTokens:sy,autoPrune:false}}s(tW,"defaultLessonsConfig");function iy(e){return typeof e=="number"&&Number.isInteger(e)&&e>0?e:null}s(iy,"positiveInt");function rW(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&&iy(n.recallLimit)===null&&o.push("recallLimit"),"recallMaxTokens"in n&&iy(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(rW,"lessonsConfigWarning");function ay(e){let t={limit:ud,maxTokens:sy},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:iy(o.recallLimit)??t.limit,maxTokens:iy(o.recallMaxTokens)??t.maxTokens}}catch{return t}}s(ay,"loadRecallConfig");var oW="agentsmesh lessons hook",Gee="Edit|Write|Bash",$ee=["PreToolUse","PostToolUse"];function jee(e,t){let r=e.get(t),n=r instanceof YAMLSeq?r:new YAMLSeq;return n.items.some(i=>i instanceof YAMLMap&&i.get("command")===oW)?false:(n.add(e.createNode({matcher:Gee,type:"command",command:oW})),e.set(t,n),true)}s(jee,"injectEvent");function sW(e){let t=join(e,".agentsmesh","hooks.yaml");if(!existsSync(t))return false;let r=parseDocument(readFileSync(t,"utf8")),n=false;for(let o of $ee)jee(r,o)&&(n=true);return n&&writeFileSync(t,String(r),"utf8"),n}s(sW,"injectRecallHook");b();async function ly(e,t){let r=join(e,".gitignore"),n=await I(r)??"",o=new Set(n.split(`
|
|
223
|
+
`).map(l=>l.trim()).filter(l=>l.length>0&&!l.startsWith("#"))),i=t.filter(l=>!Bee(l,o));if(i.length===0)return false;let a=n.endsWith(`
|
|
224
224
|
`)||n===""?"":`
|
|
225
225
|
`;return await L(r,n+a+i.join(`
|
|
226
226
|
`)+`
|
|
227
|
-
`),true}s(
|
|
228
|
-
${
|
|
229
|
-
${
|
|
227
|
+
`),true}s(ly,"ensureGitignoreEntries");function Bee(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(Bee,"isCoveredByExisting");Be();var Kee=['## 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.'],HL=`${Pp}
|
|
228
|
+
${cd}
|
|
229
|
+
${U_}`;function iW(e){let t=Wee(e);return If(t,HL)}s(iW,"appendLessonsParagraph");function Wee(e){let t=Dp(e,Pp,U_);return Hee(t).trim()}s(Wee,"stripLessonsParagraph");function Hee(e){return [cd,...Kee].reduce((t,r)=>t.replace(`
|
|
230
230
|
|
|
231
|
-
${r}`,"").replace(r,""),e)}s(
|
|
231
|
+
${r}`,"").replace(r,""),e)}s(Hee,"stripRawProceduralRule");U();var zL="lessons",zee="Use when about to edit a file or run a state-changing command, or after any failure, correction, or surprising result.",Vee=`# Lessons \u2014 operating manual (Iron Law)
|
|
232
232
|
|
|
233
233
|
## The Iron Law
|
|
234
234
|
|
|
@@ -275,26 +275,26 @@ deprecate, merge, untrigger, strip-markers, prune, journal, validate, stats, imp
|
|
|
275
275
|
|
|
276
276
|
The final response MUST carry the receipt: \`Lesson: captured <id>\` or \`Lesson: none\`.
|
|
277
277
|
No receipt = task incomplete. Do not capture one-off facts, task summaries, or project
|
|
278
|
-
context \u2014 only reusable imperative rules with an effective trigger.`,
|
|
279
|
-
`;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(
|
|
280
|
-
`,"utf8"),t.push(n);}s(
|
|
278
|
+
context \u2014 only reusable imperative rules with an effective trigger.`,aW=x({name:zL,description:zee},Vee);async function Ia(e){let t=je(e),r=[],n=[],o=[];mkdirSync(t.base,{recursive:true}),await gt(e),existsSync(t.graph)?o.push(t.graph):(await Vl(e,()=>{}),r.push(t.graph)),Yee(e,r,o),Jee(e,r,n,o);let i=Xee(e),a=sW(e),l=await ly(e,[Jl(e,md(e)),Jl(e,pd(e))]);return {created:r,updated:n,skipped:o,rootRuleUpdated:i,gitignoreUpdated:l,recallHookInjected:a}}s(Ia,"scaffoldLessons");function Jee(e,t,r,n){let o=join(e,".agentsmesh/skills",zL,"SKILL.md"),i=`${aW}
|
|
279
|
+
`;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(Jee,"seedLessonsSkill");function Yee(e,t,r){let n=je(e).config;if(existsSync(n)){r.push(n);return}mkdirSync(dirname(n),{recursive:true}),writeFileSync(n,`${JSON.stringify(tW(),null,2)}
|
|
280
|
+
`,"utf8"),t.push(n);}s(Yee,"seedLessonsConfig");function Xee(e){let t=join(e,".agentsmesh/rules/_root.md");if(!existsSync(t)){mkdirSync(dirname(t),{recursive:true});let o=`---
|
|
281
281
|
root: true
|
|
282
282
|
description: ""
|
|
283
283
|
---
|
|
284
284
|
|
|
285
|
-
${
|
|
285
|
+
${HL}
|
|
286
286
|
|
|
287
287
|
# Operational Guidelines
|
|
288
|
-
`;return writeFileSync(t,o,"utf8"),true}let r=readFileSync(t,"utf8"),n=`${
|
|
289
|
-
`;return n===r?false:(writeFileSync(t,n,"utf8"),true)}s(
|
|
290
|
-
`}s(Vm,"yamlSchemaDirective");function Xl(e,t){let r=Vm(t);return
|
|
291
|
-
`),n=
|
|
288
|
+
`;return writeFileSync(t,o,"utf8"),true}let r=readFileSync(t,"utf8"),n=`${iW(r)}
|
|
289
|
+
`;return n===r?false:(writeFileSync(t,n,"utf8"),true)}s(Xee,"injectProceduralBlock");b();Te();function mW(e){let t=[];for(let r of De)for(let n of Dk(r.id,e))t.push({target:r.id,path:n});return t}s(mW,"collectDetectionPaths");function pW(e){let t=new Map;for(let{target:r,path:n}of mW(e)){let o=t.get(r)??[];o.push(n),t.set(r,o);}return [...t.entries()].map(([r,n])=>({id:r,paths:n}))}s(pW,"toolIndicators");pW("project");async function uW(e,t="project"){let r=[];for(let{id:n,paths:o}of pW(t))for(let i of o){let a=join(e,i);if(await j(a)){r.push(n);break}}return [...new Set(r)]}s(uW,"detectExistingConfigs");b();Te();var dW=/^# yaml-language-server: \$schema=[^\n]*\n?/;function qee(){let e=Pa();return `https://unpkg.com/agentsmesh${e&&e!=="unknown"?`@${e}`:""}/schemas`}s(qee,"schemaBaseUrl");function fW(e){return `${qee()}/${e}.json`}s(fW,"schemaUrl");function Vm(e){return `# yaml-language-server: $schema=${fW(e)}
|
|
290
|
+
`}s(Vm,"yamlSchemaDirective");function Xl(e,t){let r=Vm(t);return dW.test(e)?e.replace(dW,r):`${r}${e}`}s(Xl,"prependYamlSchemaDirective");function gW(e,t){let{$schema:r,...n}=e;return {$schema:fW(t),...n}}s(gW,"stampJsonSchemaField");var Zee=["rules","commands","agents","skills","mcp","hooks","ignore","permissions"],ete=Kh();function JL(e,t=ete){let r=(e.length>0?e:t).map(o=>` - ${o}`).join(`
|
|
291
|
+
`),n=Zee.map(o=>` - ${o}`).join(`
|
|
292
292
|
`);return `${Vm("agentsmesh")}version: 1
|
|
293
293
|
targets:
|
|
294
294
|
${r}
|
|
295
295
|
features:
|
|
296
296
|
${n}
|
|
297
|
-
`}s(
|
|
297
|
+
`}s(JL,"buildConfig");var py=`---
|
|
298
298
|
root: true
|
|
299
299
|
description: "Project rules"
|
|
300
300
|
---
|
|
@@ -303,7 +303,7 @@ description: "Project rules"
|
|
|
303
303
|
|
|
304
304
|
Add your project-wide instructions here.
|
|
305
305
|
This file is always included in AI tool context and synced to all configured tools.
|
|
306
|
-
`,
|
|
306
|
+
`,YL=`---
|
|
307
307
|
description: "Example contextual rule \u2014 rename and customize"
|
|
308
308
|
# targets: [claude-code, cursor] # limit to specific tools (optional)
|
|
309
309
|
# globs: ["src/**/*.ts"] # activate only for matching files (optional)
|
|
@@ -312,14 +312,14 @@ description: "Example contextual rule \u2014 rename and customize"
|
|
|
312
312
|
# Example Rule
|
|
313
313
|
|
|
314
314
|
Replace this with your coding standards, conventions, or domain-specific guidelines.
|
|
315
|
-
`,
|
|
315
|
+
`,XL=`---
|
|
316
316
|
description: "Example command \u2014 rename and customize"
|
|
317
317
|
# allowed-tools: [Read, Grep, Glob, Bash]
|
|
318
318
|
---
|
|
319
319
|
|
|
320
320
|
Describe the task for this command here.
|
|
321
321
|
Commands are invoked on-demand (e.g. /example) with a focused tool set.
|
|
322
|
-
`,
|
|
322
|
+
`,QL=`---
|
|
323
323
|
name: example-agent
|
|
324
324
|
description: "Example subagent \u2014 rename and customize"
|
|
325
325
|
# tools: [Read, Grep, Glob]
|
|
@@ -330,7 +330,7 @@ description: "Example subagent \u2014 rename and customize"
|
|
|
330
330
|
|
|
331
331
|
Describe this agent's role and instructions here.
|
|
332
332
|
Agents are specialized subagents with restricted tools and a specific purpose.
|
|
333
|
-
`,
|
|
333
|
+
`,qL=`---
|
|
334
334
|
name: example-skill
|
|
335
335
|
description: "Example skill \u2014 rename and customize"
|
|
336
336
|
---
|
|
@@ -339,7 +339,7 @@ description: "Example skill \u2014 rename and customize"
|
|
|
339
339
|
|
|
340
340
|
Describe the skill procedure here.
|
|
341
341
|
Skills are reusable multi-step procedures that commands and agents can reference.
|
|
342
|
-
`,
|
|
342
|
+
`,ZL=`{
|
|
343
343
|
"mcpServers": {
|
|
344
344
|
// agentsmesh self-serve MCP server \u2014 exposes your canonical config to AI agents.
|
|
345
345
|
// Lets agents introspect rules/commands/agents/skills and trigger generate.
|
|
@@ -366,7 +366,7 @@ Skills are reusable multi-step procedures that commands and agents can reference
|
|
|
366
366
|
// }
|
|
367
367
|
}
|
|
368
368
|
}
|
|
369
|
-
`,
|
|
369
|
+
`,eC=`${Vm("hooks")}# Lifecycle hooks \u2014 run shell commands before/after AI tool use
|
|
370
370
|
# Events: PreToolUse, PostToolUse, SubagentStart, SubagentStop
|
|
371
371
|
# Matcher: tool name pattern (e.g. "Edit|Write", "Bash", "*")
|
|
372
372
|
#
|
|
@@ -379,7 +379,7 @@ Skills are reusable multi-step procedures that commands and agents can reference
|
|
|
379
379
|
# - matcher: Edit|Write
|
|
380
380
|
# type: command
|
|
381
381
|
# command: npm test --passWithNoTests
|
|
382
|
-
`,
|
|
382
|
+
`,tC=`${Vm("permissions")}# Tool permission allow/deny lists
|
|
383
383
|
#
|
|
384
384
|
# allow:
|
|
385
385
|
# - Bash(npm run:*)
|
|
@@ -395,14 +395,14 @@ Skills are reusable multi-step procedures that commands and agents can reference
|
|
|
395
395
|
allow: []
|
|
396
396
|
deny: []
|
|
397
397
|
ask: []
|
|
398
|
-
`,
|
|
398
|
+
`,rC=`# Patterns ignored by all configured AI tools (gitignore syntax)
|
|
399
399
|
#
|
|
400
400
|
# node_modules/
|
|
401
401
|
# dist/
|
|
402
402
|
# .env*
|
|
403
403
|
# *.log
|
|
404
404
|
# coverage/
|
|
405
|
-
`,
|
|
405
|
+
`,hW=`${Vm("agentsmesh")}# Personal overrides \u2014 NOT committed to git
|
|
406
406
|
# Uncomment and customize for your local setup:
|
|
407
407
|
|
|
408
408
|
# targets:
|
|
@@ -420,43 +420,43 @@ ask: []
|
|
|
420
420
|
# overrides:
|
|
421
421
|
# claude-code:
|
|
422
422
|
# model: opus
|
|
423
|
-
`;b();
|
|
424
|
-
`),"Setup complete"),e.outro(`agentsmesh is ready. Edit .agentsmesh/ then run '${m}' to sync.`),{exitCode:0,data:a}}s(
|
|
423
|
+
`;b();ue();function ht(e,t){return join(e,t)}s(ht,"ab");async function nC(e){return await j(e)?(await readdir(e,{withFileTypes:true})).filter(r=>r.isFile()&&r.name.endsWith(".md")).length:0}s(nC,"countMdFiles");async function tte(e){let t=ht(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(tte,"hasAnyImportedSkill");async function _W(e){let t=ht(e,"rules");await O(t),await L(join(t,"_root.md"),py),S.success("Created .agentsmesh/rules/_root.md"),await L(join(t,"_example.md"),YL),S.success("Created .agentsmesh/rules/_example.md");let r=ht(e,"commands");await O(r),await L(join(r,"_example.md"),XL),S.success("Created .agentsmesh/commands/_example.md");let n=ht(e,"agents");await O(n),await L(join(n,"_example.md"),QL),S.success("Created .agentsmesh/agents/_example.md");let o=ht(e,join("skills","_example"));await O(o),await L(join(o,"SKILL.md"),qL),S.success("Created .agentsmesh/skills/_example/SKILL.md"),await L(ht(e,"mcp.json"),ZL),S.success("Created .agentsmesh/mcp.json"),await L(ht(e,"hooks.yaml"),eC),S.success("Created .agentsmesh/hooks.yaml"),await L(ht(e,"permissions.yaml"),tC),S.success("Created .agentsmesh/permissions.yaml"),await L(ht(e,"ignore"),rC),S.success("Created .agentsmesh/ignore");}s(_W,"writeScaffoldFull");async function SW(e){let t=ht(e,"rules"),r=await nC(t),n=join(t,"_root.md"),o=await j(n);await O(t),r===0?(await L(n,py),S.success("Created .agentsmesh/rules/_root.md"),await L(join(t,"_example.md"),YL),S.success("Created .agentsmesh/rules/_example.md")):o||(await L(n,py),S.success("Created .agentsmesh/rules/_root.md"));let i=ht(e,"commands");await nC(i)===0&&(await O(i),await L(join(i,"_example.md"),XL),S.success("Created .agentsmesh/commands/_example.md"));let a=ht(e,"agents");if(await nC(a)===0&&(await O(a),await L(join(a,"_example.md"),QL),S.success("Created .agentsmesh/agents/_example.md")),!await tte(e)){let u=ht(e,join("skills","_example"));await O(u),await L(join(u,"SKILL.md"),qL),S.success("Created .agentsmesh/skills/_example/SKILL.md");}let l=ht(e,"mcp.json");await j(l)||(await L(l,ZL),S.success("Created .agentsmesh/mcp.json"));let c=ht(e,"hooks.yaml");await j(c)||(await L(c,eC),S.success("Created .agentsmesh/hooks.yaml"));let m=ht(e,"permissions.yaml");await j(m)||(await L(m,tC),S.success("Created .agentsmesh/permissions.yaml"));let p=ht(e,"ignore");await j(p)||(await L(p,rC),S.success("Created .agentsmesh/ignore"));}s(SW,"writeScaffoldGapFill");var ka="agentsmesh.yaml",Jm="agentsmesh.local.yaml",nte=["agentsmesh.local.yaml",".agentsmeshcache",".agentsmesh/.lock.tmp",".agentsmesh/packs/"],ote=Object.fromEntries(De.map(e=>[e.id,(t,r)=>e.generators.importFrom(t,{scope:r})]));async function ste(e,t,r){let n=[];for(let o of r){let i=ote[o];if(!i)continue;let a=await i(e,t);for(let l of a)n.push({from:relative(e,l.fromPath).replaceAll("\\","/"),to:l.toPath.replaceAll("\\","/")});}return {imported:n,importedToolCount:r.length}}s(ste,"importDetectedTools");async function uy(e,t,r){let n=join(t.configDir,ka),o=[],i=0,a;if(r.doImport){let m=await ste(t.rootBase,r.scope,r.detected);o=m.imported,i=m.importedToolCount,await SW(t.canonicalDir),a="gap-fill";}else await _W(t.canonicalDir),a="full";await L(n,r.defaultTargets===void 0?JL(r.targets):JL(r.targets,r.defaultTargets)),await L(join(t.configDir,Jm),hW);let l=false;r.scope==="project"&&(l=await ly(e,nte));let c=r.lessons&&r.scope==="project"?await Ia(e):void 0;return {scope:r.scope,configFile:ka,localConfigFile:Jm,detectedConfigs:[...r.detected],imported:o,importedToolCount:i,scaffoldType:a,gitignoreUpdated:l,lessons:c}}s(uy,"applyInitPlan");cn();var IW="__back__";function ite(e){if(e==="global")return [...Wh()].sort().map(o=>({value:o,label:o,hint:"global"}));let t=[...Kh()],r=new Set(t),n=[...hp].filter(o=>!r.has(o)).sort();return [...t,...n].map(o=>({value:o,label:o,hint:r.has(o)?"recommended":void 0}))}s(ite,"buildTargetOptions");async function oC(e,t,r,n,o,i){let a=[{value:"yes",label:"Yes"},{value:"no",label:"No"}];o&&a.push({value:IW,label:"\u21A9 Back"});let l=await e.select({message:t,options:a,initialValue:n??r?"yes":"no"});return e.isCancel(l)?"cancel":l===IW?"back":(i(l==="yes"),"next")}s(oC,"yesNoStep");function ate(e){return {exitCode:0,data:{scope:e,configFile:ka,localConfigFile:Jm,detectedConfigs:[],imported:[],importedToolCount:0,scaffoldType:"none",gitignoreUpdated:false,cancelled:true}}}s(ate,"cancelledResult");async function kW(e,t){let r=t.context.scope;e.intro(r==="global"?"agentsmesh init --global":"agentsmesh init");let n={targets:[]},o=[];o.push(async()=>{let u=await e.multiselect({message:"Which tools should agentsmesh generate config for? (select at least one)",options:ite(r),initialValues:n.targets,required:true});return e.isCancel(u)?"cancel":(n.targets=u,"next")}),t.detected.length>0&&o.push(u=>oC(e,`Found existing config for: ${t.detected.join(", ")}. Import into .agentsmesh?`,true,n.doImport,u,f=>{n.doImport=f;})),r==="project"&&o.push(u=>oC(e,"Enable Lessons (shared memory: recall before edits, capture after failures)?",true,n.lessons,u,f=>{n.lessons=f;})),o.push(u=>oC(e,"Run generate now to write tool config files?",true,n.doGenerate,u,f=>{n.doGenerate=f;}));for(let u=0;u<o.length;){let f=await o[u](u>0);if(f==="cancel")return e.cancel("Cancelled \u2014 no changes written."),ate(r);u=f==="back"?Math.max(0,u-1):u+1;}let i={scope:r,targets:n.targets,defaultTargets:t.defaultTargets,detected:t.detected,doImport:n.doImport??false,lessons:n.lessons??false},a=await uy(t.projectRoot,t.context,i),l=n.doGenerate??false,c=0;if(l){let u=await Xo(r==="global"?{global:true}:{},t.projectRoot,{printMatrix:false});c=u.data.summary.created+u.data.summary.updated;}let m=r==="global"?"agentsmesh generate --global":"agentsmesh generate",p=[`Targets: ${n.targets.length} (${n.targets.join(", ")})`];return r==="project"&&p.push(n.lessons?"Lessons: enabled":"Lessons: off \u2014 add it later with 'agentsmesh init --lessons'"),p.push(l?`Generated: ${c} file(s)`:`Next: run '${m}'`),e.note(p.join(`
|
|
424
|
+
`),"Setup complete"),e.outro(`agentsmesh is ready. Edit .agentsmesh/ then run '${m}' to sync.`),{exitCode:0,data:a}}s(kW,"runInitWizard");var LW=Wh();async function CW(e,t={},r={}){let n=t.global===true?"global":"project",o=t.lessons===true;if(o&&n==="global")throw new Error("--lessons is project-mode only. Lessons live in the project tree.");let i=Na(e,n),a=join(i.configDir,ka),l=await j(a);if(l&&o){let h=await Ia(e);return {exitCode:0,data:{scope:n,configFile:ka,localConfigFile:Jm,detectedConfigs:[],imported:[],importedToolCount:0,scaffoldType:"none",gitignoreUpdated:false,lessons:h,lessonsOnly:true}}}if(l)throw new Error(`Already initialized. ${ka} exists. Remove it first to re-init.`);let c=await uW(i.rootBase,n),m=n==="global"?c.filter(h=>LW.includes(h)):c,p=n==="global"?LW:void 0;if(r.prompter!==void 0&&t.yes!==true)return kW(r.prompter,{projectRoot:e,context:i,detected:m,defaultTargets:p});let u=m.length>0&&t.yes===true;return {exitCode:0,data:await uy(e,i,{scope:n,targets:u?m:[],defaultTargets:p,detected:m,doImport:u,lessons:o})}}s(CW,"runInit");ue();function OW(e){let{data:t}=e;if(t.lessonsOnly===true&&t.lessons!==void 0){EW(t.lessons),S.info("Run 'agentsmesh generate' to project the new lessons rule to every target.");return}if(t.detectedConfigs.length>0&&S.info(`Found existing configurations: ${t.detectedConfigs.join(", ")}`),t.detectedConfigs.length>0&&t.imported.length===0&&S.info("Run 'agentsmesh init --yes' to auto-import, or 'agentsmesh import --from <tool>' manually."),t.imported.length>0){S.info("Auto-importing existing configurations (--yes)...");for(let n of t.imported)S.success(` ${n.from} \u2192 ${n.to}`);S.info(`Imported ${t.imported.length} file(s) from ${t.importedToolCount} tool(s).`);}let r=t.imported.length>0&&t.detectedConfigs.length>0?` (targets: ${t.detectedConfigs.join(", ")})`:"";S.success(`Created ${t.configFile}${r}`),S.success(`Created ${t.localConfigFile}`),t.gitignoreUpdated&&S.success("Updated .gitignore"),t.lessons!==void 0&&EW(t.lessons);}s(OW,"renderInit");function EW(e){let t=process.cwd(),r=s(o=>relative(t,o).replaceAll("\\","/"),"rel");for(let o of e.created)S.success(` Created ${r(o)}`);for(let o of e.updated)S.success(` Refreshed ${r(o)} (managed \u2014 synced to the current manual)`);for(let o of e.skipped)S.info(` Kept ${r(o)} (already current)`);e.rootRuleUpdated?S.success(" Injected the Lessons ritual block into .agentsmesh/rules/_root.md"):S.info(" .agentsmesh/rules/_root.md already carries the current Lessons block"),e.gitignoreUpdated&&S.success(" Added .agentsmesh/lessons/recall-log.jsonl to .gitignore (opt-in telemetry stays out of git)"),e.recallHookInjected&&S.success(" Wired the PostToolUse recall hook into .agentsmesh/hooks.yaml (deterministic recall on hook-capable targets)"),S.success("Lessons subsystem ready (.agentsmesh/lessons/)."),S.info(" Run 'agentsmesh generate' to sync the ritual into every target."),S.info("");let n=e.created.some(o=>o.replaceAll("\\","/").endsWith("lessons.json"));S.info(n?" The graph starts empty and grows as agents capture failures. Try the loop:":" Recall + capture loop:"),S.info(' capture: agentsmesh lessons add "<rule>" --topic <id> --new-topic --topic-summary "<line>" --trigger-file "<glob>"'),S.info(" recall: agentsmesh lessons query --file <path> --cmd <command>"),S.info(" inspect: agentsmesh lessons journal | lessons show <id> | lessons validate"),S.info(" Optional: export AGENTSMESH_LESSONS_TELEMETRY=1 to measure recall cost via `lessons stats`.");}s(EW,"renderLessons");function wW(){return {intro:s(e=>Yt.intro(e),"intro"),outro:s(e=>Yt.outro(e),"outro"),note:s((e,t)=>Yt.note(e,t),"note"),select:s(e=>Yt.select({message:e.message,options:e.options.map(t=>({value:t.value,label:t.label,hint:t.hint})),initialValue:e.initialValue}),"select"),multiselect:s(e=>Yt.multiselect({message:e.message,options:e.options.map(t=>({value:t.value,label:t.label,hint:t.hint})),initialValues:e.initialValues?[...e.initialValues]:void 0,required:e.required??false}),"multiselect"),isCancel:s(e=>Yt.isCancel(e),"isCancel"),cancel:s(e=>Yt.cancel(e),"cancel")}}s(wW,"createClackPrompter");tt();Te();var mte=Object.fromEntries(De.map(e=>[e.id,{importFrom:e.generators.importFrom,emptyImportMessage:e.emptyImportMessage,lintRules:e.lintRules,lint:e.lint,capabilities:e.capabilities}]));function dy(e){return mte[e]}s(dy,"getTargetCatalogEntry");rt();sn();wp();var hte={type:"stdio",command:"npx",args:["-y","agentsmesh","mcp"]};function yte(e){return e.mcpServers.agentsmesh!==void 0?false:(e.mcpServers.agentsmesh=hte,true)}s(yte,"injectAgentsmeshEntry");async function sC(e){let t=resolve(e,".agentsmesh/mcp.json");try{let r;try{r=await pn(t)??{mcpServers:{}};}catch{r={mcpServers:{}};}if(!yte(r))return !1;let n=JSON.stringify(r,null,2)+`
|
|
425
425
|
`;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)}
|
|
426
|
-
`),false}}s(nC,"seedAgentsmeshMcpEntry");Be();function LW(e,t){return e.map(r=>({from:relative(t,r.fromPath).replaceAll("\\","/"),to:r.toPath}))}s(LW,"mapResults");async function CW(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(Pp)||/^## Lessons \(/m.test(n))&&await Ia(e);}s(CW,"ensureImportedLessonsSubsystem");async function EW(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(Bt(o)){let p=Na(r,i),f=await my(o).importFrom(p.rootBase,{scope:i});return f.length>0&&(await nC(p.rootBase),await CW(p.rootBase,i)),{exitCode:0,data:{scope:i,target:o,files:LW(f,p.rootBase)}}}let a,l;try{({config:a,context:l}=await _e(r,i));}catch{throw new Error(`Unknown --from "${n}" and no agentsmesh.yaml found. Run 'agentsmesh init' to enable plugin targets, or use a builtin: ${Ue.join(", ")}.`)}await ze(a,r);let c=ne(o);if(!c)throw new Error(`Unknown --from "${n}". Supported: ${[...Ue,...a.pluginTargets??[]].join(", ")}.`);let m=await c.generators.importFrom(l.rootBase,{scope:i});return m.length>0&&(await nC(l.rootBase),await CW(l.rootBase,i)),{exitCode:0,data:{scope:i,target:o,files:LW(m,l.rootBase)}}}s(EW,"runImport");tt();Jo();function py(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(py,"computeDiff");function uy(e){return `${e.new} files would be created, ${e.updated} updated, ${e.unchanged} unchanged, ${e.deleted} deleted`}s(uy,"formatDiffSummary");sn();async function wW(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",o=e.targets,i=typeof o=="string"&&o?o.split(",").map(g=>g.trim()).filter(Boolean):void 0,{config:a,context:l}=await _e(r,n);await ze(a,r);let{canonical:c}=await $t(a,l.configDir,{},l.canonicalDir),m=await Yo({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}=py(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(wW,"runDiff");tt();Jo();b();rt();$a();Ie();var yte=[{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 bW(e){let t=new Set(e.enabledFeatures),r=[];for(let n of yte)!t.has(n.featureFlag)||!n.hasContent(e.canonical)||fn(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(bW,"lintSilentFeatureDrops");Ie();var _te=/^(?:\s*(?:bash|sh|zsh|pwsh|powershell)\s+)?["']?(?<path>(?:\.{1,2}\/|[^/\s"'`]+\/)[^\s"'`]+)["']?(?:\s|$)/;function Ste(e){let r=e.match(_te)?.groups?.path;return typeof r=="string"?r:null}s(Ste,"extractScriptToken");function AW(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=Ste(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(AW,"lintHookScriptReferences");Ie();function TW(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(TW,"lintRuleScopeInversion");var Ite=new Set([".git","node_modules"]),kte=2e5;function La(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())Ite.has(o.name)||r.push(join(n,o.name));else if(o.isFile()&&(t.add(Jl(e,join(n,o.name))),t.size>kte))return t}}catch{return null}return t}s(La,"listProjectFiles");var Ete="lessons",DW=".agentsmesh/lessons/lessons.json",NW=".agentsmesh/rules/_root.md",Ote=/^## Lessons \(/m;function vW(e,t){if(t==="global")return [];let r=je(e);if(!existsSync(r.graph))return [];let n=[],o;try{o=ed(e);}catch(m){return [oC("error",DW,`lessons.json failed to load: ${m instanceof Error?m.message:String(m)}`)]}let i=La(e)??void 0,a=Jn(o,{knownPaths:i});for(let m of a.findings)n.push(oC(m.level,DW,`[${m.code}] ${m.message}`));let l=join(e,NW),c=existsSync(l)?readFileSync(l,"utf8"):"";return Ote.test(c)||n.push(oC("warning",NW,'lessons procedural rule ("## Lessons (...)") is missing from _root.md \u2014 recall/capture enforcement will not fire.')),n}s(vW,"lintLessonsSubsystem");function oC(e,t,r){return {level:e,file:t,target:Ete,message:r}}s(oC,"diag");var wte=["node_modules",".git","dist","coverage",".agentsmesh"];async function bte(e){return (await Ci(e)).filter(n=>{let o=relative(e,n);return !wte.some(i=>o.includes(`/${i}/`)||o.startsWith(`${i}/`))}).map(n=>relative(e,n))}s(bte,"getProjectFiles");async function dy(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=[...vW(r,i)],h=i==="global"?[]:await bte(r);for(let _ of l){let R=ne(_),k=Bt(_)?my(_):R;k?.capabilities&&g.push(...bW({target:_,capabilities:k.capabilities,canonical:t,enabledFeatures:e.features})),f&&g.push(...AW({target:_,canonical:t,hasScriptProjection:R?.postProcessHookOutputs!==void 0})),c&&g.push(...TW({target:_,canonical:t,preservesManualActivation:R?.preservesManualActivation===true})),c&&k?.lintRules&&g.push(...k.lintRules(t,r,h,{scope:i})),R?.generators.lint&&g.push(...R.generators.lint(t));let w={scope:i};m&&k?.lint?.commands&&g.push(...k.lint.commands(t,w)),p&&k?.lint?.mcp&&g.push(...k.lint.mcp(t,w)),u&&k?.lint?.permissions&&g.push(...k.lint.permissions(t,w)),f&&k?.lint?.hooks&&g.push(...k.lint.hooks(t,w));}let y=g.some(_=>_.level==="error");return {diagnostics:g,hasErrors:y}}s(dy,"runLint");sn();async function MW(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",o=e.targets,i=typeof o=="string"&&o?o.split(",").map(u=>u.trim()).filter(Boolean):void 0,{config:a,context:l}=await _e(r,n);await ze(a,r);let{canonical:c}=await $t(a,l.configDir,{},l.canonicalDir),{diagnostics:m,hasErrors:p}=await dy(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(MW,"runLintCmd");function GW(e){let{data:t}=e;if(t.diagnostics.length===0){M.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)M.error(`${a.file} (${a.target}): ${a.message}`);for(let a of n)M.warn(`${a.file} (${a.target}): ${a.message}`);let o=t.summary.errors,i=t.summary.warnings;M.info(`${o} error${o!==1?"s":""}, ${i} warning${i!==1?"s":""}`);}s(GW,"renderLint");function $W(e){let{data:t}=e;if(!t.hasLock){M.error("Not initialized for collaboration. Run 'agentsmesh generate' first.");return}if(t.inSync){M.note("Lock file is in sync.","Check"),M.success("Lock file is in sync.");return}let r=new Set(t.lockedViolations);M.error("Conflict detected:");for(let n of t.extendsModified)M.error(` extend "${n}" was modified`);for(let n of t.modified){let o=r.has(n)?" [LOCKED]":"";M.error(` ${n} was modified${o}`);}for(let n of t.added){let o=r.has(n)?" [LOCKED]":"";M.error(` ${n} was added${o}`);}for(let n of t.removed){let o=r.has(n)?" [LOCKED]":"";M.error(` ${n} was removed${o}`);}M.note("Generated files are out of sync.","Check"),M.info("Run 'agentsmesh merge' to resolve, or 'agentsmesh generate --force' to accept current state.");}s($W,"renderCheck");function jW(e){let{data:t}=e;if(t.files.length===0){M.info(`Nothing to import from ${t.target}.`);return}for(let n of t.files)M.success(`${n.from} \u2192 ${n.to}`);let r=t.scope==="global"?" --global":"";M.info(`Imported ${t.files.length} file(s). Run 'agentsmesh generate${r}' to sync to other tools.`);}s(jW,"renderImport");fe();function UW(e){let{summary:t}=e.data;if(t.created+t.updated+t.unchanged+t.deleted===0){S.info("No files to generate (no root rule or rules feature disabled).");return}for(let n of e.data.patches)process.stdout.write(n.patch);S.info(uy({new:t.created,updated:t.updated,unchanged:t.unchanged,deleted:t.deleted}));}s(UW,"renderDiff");function BW(e){if(!e.data.hadConflict){M.info("No conflicts to resolve.");return}M.success("Lock file conflict resolved.");}s(BW,"renderMerge");Xu();Qu();tt();Jo();Xu();Qu();fe();var xte=300;function Pte(e){return e.replace(/\\/g,"/").replace(/\/+$/,"")}s(Pte,"normalizeWatchPath");function Dte(e,t){let r=Pte(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(Dte,"shouldIgnoreWatchPath");function Nte(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(Nte,"featureFingerprint");async function WW(e,t,r={}){let n=t??process.cwd(),o=e.global===true?"global":"project",{context:i}=await _e(n,o),a=[i.canonicalDir,join(i.configDir,"agentsmesh.yaml"),join(i.configDir,"agentsmesh.local.yaml")],l=null,c=null,m=false,p=null,u=s(async()=>{if(m)return;l=null;let{config:_,context:R}=await _e(n,o),{canonical:k}=await $t(_,R.configDir,{},R.canonicalDir),w=k.mcp?Object.keys(k.mcp.mcpServers).length:0,D=k.permissions?k.permissions.allow.length+k.permissions.deny.length:0,N=k.hooks?Object.values(k.hooks).reduce(($,re)=>$+(Array.isArray(re)?re.length:0),0):0,K=k.ignore.length,J=Nte(_.features,k.rules.length,k.commands.length,k.agents.length,k.skills.length,w,D,N,K),ee=c!==null&&c!==J;if(c=J,m)return;let se=await Xo(e,n,{printMatrix:false});if(Mm(se),!m){if(ee){let $=await vm(e,n);Fm($,{verbose:e.verbose===true});}else S.info("Regenerated.");r.onCycle?.({featuresChanged:ee});}},"run"),f=s(()=>{let _=u().catch(R=>{if(!m){let k=R instanceof Error?R.message:String(R);S.error(k);}}).finally(()=>{p===_&&(p=null);});p=_;},"scheduleRun"),g=s(()=>{m||(l&&clearTimeout(l),l=setTimeout(f,xte));},"schedule"),h=r.usePolling??process.platform==="win32",y=Tte.watch(a,{ignoreInitial:true,usePolling:h,...h&&r.pollIntervalMs!==void 0?{interval:r.pollIntervalMs}:{}});return y.on("all",(_,R)=>{Dte(i.canonicalDir,R)||g();}),await new Promise((_,R)=>{y.once("ready",_),y.once("error",R);}),S.info(o==="global"?"Watching ~/.agentsmesh/ and agentsmesh.yaml...":"Watching .agentsmesh/ and agentsmesh.yaml..."),p=u(),await p,p=null,{stop:s(async()=>{m=true,l&&(clearTimeout(l),l=null),await y.close(),p&&await p;},"stop")}}s(WW,"runWatch");tt();Zd();async function fy(e){let{config:t,configDir:r,canonicalDir:n}=e,o=await Ah(n);if(o===null)return {inSync:false,hasLock:false,modified:[],added:[],removed:[],extendsModified:[],lockedViolations:[]};let i=await fi(n),a=await gc(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 k=i[R];k===void 0?f.push(R):k!==o.checksums[R]&&p.push(R);}for(let R of m)c.has(R)||u.push(R);let g=new Set([...Object.keys(o.extends),...Object.keys(l)]),h=[];for(let R of g)l[R]!==o.extends[R]&&h.push(R);let y=xh(o.checksums,i,t.collaboration?.lock_features??[]);return {inSync:p.length===0&&u.length===0&&f.length===0&&h.length===0,hasLock:true,modified:p,added:u,removed:f,extendsModified:h,lockedViolations:y}}s(fy,"checkLockSync");sn();async function HW(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",{config:o,context:i}=await _e(r,n);await ze(o,r);let a=await fy({config:o,configDir:i.configDir,canonicalDir:i.canonicalDir});return a.hasLock?{exitCode:a.inSync?0:1,data:{hasLock:true,inSync:a.inSync,modified:[...a.modified],added:[...a.added],removed:[...a.removed],extendsModified:[...a.extendsModified],lockedViolations:[...a.lockedViolations]}}:{exitCode:1,data:{hasLock:false,inSync:false,modified:[],added:[],removed:[],extendsModified:[],lockedViolations:[]}}}s(HW,"runCheck");tt();b();Zd();var Fte=".lock",Mte="<<<<<<<";async function sC(e){let t=join(e,Fte),r=await I(t);return r===null?false:r.includes(Mte)}s(sC,"hasLockConflict");async function VW(e,t,r){if(!await sC(e))throw new Error("No conflict to resolve.");let o=await fi(e),i=dirname(e),a=r?await gc(r,i):[],l=a.length>0?await Pm(a):{},c=await Ph(join(e,"packs")),m=process.env.USER??process.env.USERNAME??"unknown";await Th(e,{generatedAt:new Date().toISOString(),generatedBy:m,libVersion:t,checksums:o,extends:l,packs:c});}s(VW,"resolveLockConflict");async function JW(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",{config:o,context:i}=await _e(r,n),a=i.canonicalDir;return await sC(a)?(await VW(a,Pa(),o),{exitCode:0,data:{hadConflict:true,resolved:true}}):{exitCode:0,data:{hadConflict:false,resolved:false}}}s(JW,"runMerge");tt();Lh();function YW(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?Tm.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(YW,"readInstallFlags");var jte=".install.lock";async function Ym(e,t={}){return await mkdir(e,{recursive:true}),Nm(join(e,jte),{...t,label:"install lock"})}s(Ym,"acquireInstallLock");tt();b();kp();Fa();var Kte=promisify(execFile);function gy(e,t){if(e.startsWith("-"))throw new Error(`agentsmesh refuses ${t} starting with "-" (option-injection guard): ${e}`)}s(gy,"ensureNotFlag");async function iC(e){let{stdout:t}=await Kte("git",e,{env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_ALLOW_PROTOCOL:Qd()}});return t.trim()}s(iC,"runGit");async function XW(){try{return await iC(["--version"]),!0}catch{return false}}s(XW,"isGitAvailable");async function Wte(e,t){gy(e,"remote-url"),gy(t,"ref"),Sp(e);let r=[t,`refs/heads/${t}`,`refs/tags/${t}`],n;for(let o of r)try{let a=(await iC(["ls-remote",e,o])).split(`
|
|
427
|
-
`).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(
|
|
428
|
-
`).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 Wte(t,r)}s(hy,"resolveRemoteRefForInstall");async function QW(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 hy(e.rawRef||"HEAD",t);if(e.kind==="github"){let l=`github:${e.org}/${e.repo}@${r}`;return {resolvedPath:(await fc(l,"install",{cacheDir:tr(),refresh:false,allowOfflineFallback:false})).resolvedPath,sourceForYaml:l,version:r}}if(e.kind==="gitlab"){let l=`gitlab:${e.org}/${e.repo}@${r}`;return {resolvedPath:(await fc(l,"install",{cacheDir:tr(),refresh:false,allowOfflineFallback:false})).resolvedPath,sourceForYaml:l,version:r}}let n=r,i=`git+${(e.gitPlusBase??t).split("#")[0]}#${n}`;return {resolvedPath:(await fc(i,"install",{cacheDir:tr(),refresh:false,allowOfflineFallback:false})).resolvedPath,sourceForYaml:i,version:r}}s(QW,"fetchInstallSource");async function qW(e,t){if(e.kind==="local")return {resolvedPath:e.localRoot,sourceForYaml:e.localSourceForYaml};try{let r=await QW(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(qW,"resolveInstallResolvedPath");function dd(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(dd,"parseGithubTreeUrl");function fd(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(fd,"parseGithubBlobUrl");function gd(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(gd,"parseGitlabTreeUrl");function hd(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(hd,"parseGitlabBlobUrl");var Hte=new Set(["tree","blob","commit","releases","actions","issues","pulls","settings","wiki","discussions","security","projects","packages"]);function yd(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||Hte.has(r[1]))return null;let n=r[0],o=r[1];return {org:n,repo:o}}catch{return null}}s(yd,"parseGithubRepoUrl");function _d(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(_d,"parseGitlabRepoUrl");function Sd(e){let t=e.match(/^git@github\.com:([^/]+)\/(.+?)(?:\.git)?$/i);return t?{org:t[1],repo:t[2].replace(/\.git$/i,"")}:null}s(Sd,"parseGitSshGithub");function Rd(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(Rd,"parseGitSshGitlab");b();var Jte=/^[A-Za-z]:[\\/]/,Yte=/^[A-Za-z]:\//;function ZW(...e){return e.some(t=>t.includes("\\")||Jte.test(t))?win32:posix}s(ZW,"pathApiFor");function kd(e){return e.replace(/\\/g,"/")}s(kd,"toPosixPath");function Id(e){return kd(e).replace(/^\/+|\/+$/g,"")}s(Id,"normalizeInstallPathField");function yy(e){let t=kd(e);return t===""||t==="."||t==="./."?".":t.startsWith("./")||t.startsWith("../")||t.startsWith("/")||Yte.test(t)?t:`./${t}`}s(yy,"normalizeLocalSourceForYaml");function Ca(e){return {...e,source:e.source_kind==="local"?yy(e.source):e.source,...e.path!==void 0?{path:Id(e.path)}:{},...e.paths!==void 0?{paths:e.paths.map(t=>Id(t))}:{}}}s(Ca,"normalizePersistedInstallPaths");function eH(e,t,r){let n=ZW(e,t),o=n.normalize(e),i=n.normalize(t),a=Id(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=Id(u),g=kd(n.relative(i,p))||".";return {kind:"local",rawRef:"",pathInRepo:a||f.replace(/\.md$/i,"").replace(/\/$/,""),localRoot:p,localSourceForYaml:yy(g)}}let m=kd(n.relative(i,o))||".";return {kind:"local",rawRef:"",pathInRepo:a,localRoot:o,localSourceForYaml:yy(m)}}s(eH,"localParsedFromAbsPath");async function aC(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=dd(n)??fd(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=yd(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=gd(n)??hd(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=_d(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=Sd(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=Rd(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 eH(m,t,o)}s(aC,"parseInstallSource");function Ld(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=dd(t)??fd(t);if(a!==null)return {kind:"github",remoteUrl:`https://github.com/${a.org}/${a.repo}.git`,ref:a.ref};let l=yd(t);if(l!==null)return {kind:"github",remoteUrl:`https://github.com/${l.org}/${l.repo}.git`,ref:"HEAD"};let c=gd(t)??hd(t);if(c!==null)return {kind:"gitlab",remoteUrl:`https://gitlab.com/${c.namespace}/${c.project}.git`,ref:c.ref};let m=_d(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=Sd(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=Rd(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(Ld,"parseSourceUrl");Wk();function Yn(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(Yn,"featuresFromCanonical");async function _y(e,t={}){let{sliceRoot:r,implicitPick:n}=await yh(e),{canonical:o,cleanup:i}=await _h(r,{...t,enableTargetEntityMappers:true});return {canonical:o,features:Yn(o),implicitPick:n,cleanup:i}}s(_y,"discoverFromContentRoot");function tH(e){return e.description.trim()?{skill:e,ok:true}:{skill:e,ok:false,reason:"missing description in frontmatter"}}s(tH,"validateSkill");function rH(e){return e.description.trim()?{rule:e,ok:true}:{rule:e,ok:false,reason:"missing description in frontmatter"}}s(rH,"validateRule");function nH(e){return e.description.trim()?{command:e,ok:true}:{command:e,ok:false,reason:"missing description in frontmatter"}}s(nH,"validateCommand");function oH(e){return e.description.trim()?{agent:e,ok:true}:{agent:e,ok:false,reason:"missing description in frontmatter"}}s(oH,"validateAgent");function yt(e){return basename(e.source).replace(/\.md$/i,"")}s(yt,"ruleSlug");function qte(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(qte,"featuresFromImplicitPick");function Qm(e,t){let{implicitPick:r}=t,n=t.scopedFeatures??qte(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(Qm,"narrowDiscoveredForInstallScope");Qk();async function sH(e,t,r,n,o={}){let i=await Ih(e,t,{preferredSkillNames:t==="skills"?n?.skills:void 0}),{canonical:a,cleanup:l}=await _y(i.discoveryRoot,o),c=Qm(a,{scopedFeatures:[t]});return {prep:{yamlTarget:r,scopedFeatures:[t],cleanup:s(async()=>{await Promise.allSettled([l(),i.cleanup()]);},"combinedCleanup")},narrowed:c,discoveredFeatures:Yn(c)}}s(sH,"resolveManualDiscoveredForInstall");rs();Dk();b();Te();var Zte=(()=>{let e=new Map;for(let r of De){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 ere(e){return e.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"")}s(ere,"norm");function Sy(e){let t=ere(e);if(t){for(let{prefix:r,target:n}of Zte)if(t===r||t.startsWith(`${r}/`))return n}}s(Sy,"targetHintFromNativePath");function lC(e,t){return Sy(e)===t}s(lC,"pathSupportsNativePick");function iH(e,t){if(!e||!t)return;let r=Sy(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(iH,"validateTargetMatchesPath");function aH(e){return (e.commands?.length??0)+(e.rules?.length??0)+(e.skills?.length??0)+(e.agents?.length??0)>0}s(aH,"extendPickHasArrays");rt();b();oI();async function nre(e,t,r,n){if(n.kind==="skillDir")return gg(e);if(n.kind==="firstSegment"){let c=t.slice(r.prefix.length).split("/").filter(Boolean)[0];return c?[c]:[]}let o=await B(e),i=n.suffix,a=i.toLowerCase();return [...new Set(o.filter(l=>l.toLowerCase().endsWith(a)).map(l=>basename(l,i)))].sort()}s(nre,"namesForStrategy");async function lH(e,t,r){let n=ne(r)?.nativeInstall;if(!n)return {};let o=t.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"");if(n.inferPick)return n.inferPick(e,o);for(let i of n.pickPaths??[]){if(o!==i.prefix&&!o.startsWith(i.prefix))continue;let a=join(e,...o.split("/")),l=await nre(a,o,i,i.strategy);return l.length?{[i.feature]:l}:{}}return {}}s(lH,"inferImplicitPickFromNativePath");function cH(e){return (e.commands?.length??0)+(e.rules?.length??0)+(e.skills?.length??0)+(e.agents?.length??0)===0}s(cH,"isImplicitPickEmpty");Nk();function Cd(e){return e.replace(/\\/g,"/").replace(/\/+$/,"")}s(Cd,"normalizePath");function lre(e,t){let r=Cd(e),n=Cd(t);return r===n||r.startsWith(`${n}/`)||n.startsWith(`${r}/`)}s(lre,"overlapsPath");function Ry(e,t){let r=e??[];return r.includes(t)||r.push(t),r}s(Ry,"addUnique");async function cre(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(cre,"makeStageRoot");function mre(e,t){let r;for(let o of e){if(o.feature==="rules"&&o.toPath.startsWith(".agentsmesh/rules/")){r={...r,rules:Ry(r?.rules,basename(o.toPath,".md"))};continue}if(o.feature==="commands"&&o.toPath.startsWith(".agentsmesh/commands/")){let i=Cd(relative(join(t,".agentsmesh","commands"),join(t,o.toPath)));r={...r,commands:Ry(r?.commands,i.replace(/\.md$/i,"").split("/").filter(Boolean).join(":"))};continue}if(o.feature==="agents"&&o.toPath.startsWith(".agentsmesh/agents/")){r={...r,agents:Ry(r?.agents,basename(o.toPath,".md"))};continue}if(o.feature==="skills"&&o.toPath.startsWith(".agentsmesh/skills/")){let a=Cd(relative(join(t,".agentsmesh","skills"),join(t,o.toPath))).split("/")[0];a&&(r={...r,skills:Ry(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(mre,"buildPickFromResults");function pre(e,t,r,n){let o=join(t,...Cd(e).split("/")),i=r.filter(a=>lre(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:mre(i,t)}}s(pre,"scopeImportedResults");async function cC(e,t){let{stageRoot:r,cleanup:n}=await cre(e);try{let o=await Wu(r,t);return {stageRoot:r,results:o,cleanup:n}}catch(o){throw await n(),o}}s(cC,"stageImportedNativeRepo");async function mC(e,t,r){let n=await cC(e,r);try{return {stageRoot:n.stageRoot,cleanup:n.cleanup,...pre(t,n.stageRoot,n.results,r)}}catch(o){throw await n.cleanup(),o}}s(mC,"stageNativeInstallScope");async function dH(e,t,r,n){let o=n.explicitTarget?.trim();o&&Or.parse(o);let i=r.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"");iH(o,i);let a=join(e,".agentsmesh"),l=await j(a),c=i?Sy(i):void 0,p=!l&&!o&&(!i||c!==void 0)?await ah(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 mC(e,i,u);return {discoveryRoot:w.stageRoot,implicitPick:w.pick,scopedFeatures:w.features,yamlTarget:u,importHappened:true,cleanup:w.cleanup}}let k=await cC(e,u);return {discoveryRoot:i?join(k.stageRoot,i):k.stageRoot,yamlTarget:u,importHappened:true,cleanup:k.cleanup}}let g;l?i?u&&lC(i,u)?g=e:g=t:g=e:g=t;let h,y,_;if(f&&u){let k=await mC(e,i,u);g=k.stageRoot,h=k.pick,y=k.features,_=k.cleanup;}else if(g===e&&i&&u&&lC(i,u)&&(h=await lH(e,i,u),cH(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&&aH(h)||(y?.length??0)>0)&&(R=u),{discoveryRoot:g,implicitPick:h,scopedFeatures:y,yamlTarget:R,importHappened:_!==void 0,cleanup:_}}s(dH,"prepareInstallDiscovery");async function pC(e,t,r,n,o={}){let i=await dH(e,t,r,{explicitTarget:n}),{canonical:a,implicitPick:l,cleanup:c}=await _y(i.discoveryRoot,o),m=i.cleanup,u={...i,cleanup:s(async()=>{await Promise.allSettled([c(),...m?[m()]:[]]);},"mergedCleanup")},f=l??i.implicitPick,g=Qm(a,{implicitPick:f,scopedFeatures:i.scopedFeatures}),h=Yn(g);return {prep:u,discovered:a,implicitPick:f,narrowed:g,discoveredFeatures:h}}s(pC,"resolveDiscoveredForInstall");var fre=[".claude-plugin","marketplace.json"];async function gre(e){try{return (await stat(e)).isDirectory()}catch{return false}}s(gre,"dirExists");function hre(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(hre,"normalizeSource");async function gH(e,t,r){let n=join(e,...fre),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=hre(c.source);if(!m)continue;let p=join(e,m);if(!await gre(p))continue;let u=await t(p,m);r(u)&&l.push({path:m,layout:u});}return l}s(gH,"detectMarketplaceSubPacks");async function Ed(e){try{return (await stat(e)).isDirectory()}catch{return false}}s(Ed,"dirExists");async function Ea(e){try{return (await readdir(e,{withFileTypes:!0})).map(r=>({name:r.name,isDir:r.isDirectory(),isFile:r.isFile()}))}catch{return []}}s(Ea,"listDirEntries");function hH(e){return e.endsWith(".instructions.md")?"copilot-instructions":e.endsWith(".md")?"md":e.endsWith(".mdc")?"mdc":e.endsWith(".toml")?"toml":null}s(hH,"classifyFileShape");var Sre=["rules","commands","agents","skills","mcp.json","hooks.yaml","permissions.yaml","ignore"],Rre=[".cursorrules",".windsurfrules"];async function _H(e){let t=join(e,".agentsmesh");if(!await Ed(t))return null;let r=await Ea(t),n=new Set(r.map(o=>o.name));for(let o of Sre)if(n.has(o))return {path:".agentsmesh"};return null}s(_H,"detectCanonical");async function SH(e){for(let t of Rre)try{if((await stat(join(e,t))).isFile())return {path:t}}catch{}return null}s(SH,"detectRootRule");async function RH(e){try{if((await stat(join(e,"SKILL.md"))).isFile())return {path:"SKILL.md"}}catch{}return null}s(RH,"detectRootSkill");ss();var kre={rules:"rules",commands:"commands",agents:"agents",skills:"skills"},Lre=[".claude-plugin",".codex-plugin",".cursor-plugin"],Cre=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;async function IH(e){let t=join(e,"skills"),r=await Ea(t);for(let n of r)if(!(!n.isDir||n.name.startsWith("_")||!Cre.test(n.name))&&await Ed(join(t,n.name)))try{if((await stat(join(t,n.name,"SKILL.md"))).isFile())return {path:"skills"}}catch{continue}return null}s(IH,"detectSkillPack");async function kH(e){let t=[];for(let[r,n]of Object.entries(kre)){let o=join(e,r),i=await Ea(o),a=new Set;for(let l of i){if(!l.isFile||qn(l.name))continue;let c=hH(l.name);c&&a.add(c);}for(let l of a)t.push({path:r,suggestedAs:n,fileShape:l});}return t}s(kH,"detectFlatCollections");async function LH(e){let t=[];for(let r of Lre)await Ed(join(e,r))&&t.push({path:r});return t}s(LH,"detectToolNativeManifests");async function fC(e,t){let r=await _H(e);if(r)return {canonical:r,skillPack:null,rootSkill:null,rootRule:null,flatCollections:[],toolNativeManifests:[]};let n=await IH(e),o=n?null:await RH(e),i=await kH(e),a=n||o||i.length>0?null:await SH(e),l=await LH(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(fC,"detectFlatLayout");function dC(e){return e.canonical!==null||e.skillPack!==null||e.rootSkill!==null||e.rootRule!==null||e.flatCollections.length>0}s(dC,"hasContent");async function CH(e,t){let r=await Ea(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 fC(i,a);dC(l)&&n.push({path:a,layout:l});}return n}s(CH,"collectSubPackCandidates");async function Ere(e,t){if(dC(t))return [];let r=await gH(e,fC,dC);if(r&&r.length>0)return r;let n=await CH(e,"");if(n.length>=2)return n;let o=await Ea(e);for(let i of o){if(!i.isDir||i.name.startsWith("."))continue;let a=await CH(join(e,i.name),i.name);if(a.length>=2)return a}return []}s(Ere,"detectSubPacks");async function OH(e){let t=await fC(e,"");if(t.canonical)return {...t,subPacks:[]};let r=await Ere(e,t);return {...t,subPacks:r}}s(OH,"detectLayout");rt();b();U();function wre(e){let t=[];for(let r of ff()){let n=ne(r)?.nativeInstall?.dialectHints;n?.length&&n.some(o=>o.frontmatterKey in e)&&t.push(r);}return t}s(wre,"targetsMatchingFrontmatter");async function bH(e){let t;try{t=await readdir(e);}catch{return null}let r=t.sort().find(a=>a.toLowerCase().endsWith(".mdc"));if(!r)return null;let n=await I(join(e,r));if(!n)return null;let o=mn(n,join(e,r));if(!o.ok)return null;let i=wre(o.value.frontmatter);return i.length===1?i[0]??null:null}s(bH,"inferMdcTarget");uh();hh();function Pre(e){let t=e.indexOf("#");return t<0?{path:e,anchor:""}:{path:e.slice(0,t),anchor:e.slice(t)}}s(Pre,"splitAnchor");function Dre(e){return e.split(sep).join("/")}s(Dre,"toForwardSlash");async function Nre(e){try{return await stat(e),!0}catch{return false}}s(Nre,"pathExists");async function PH(e){let{link:t,fromFile:r,contentRoot:n,includedPaths:o}=e,{path:i,anchor:a}=Pre(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=Dre(p);return await Nre(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(PH,"resolveLink");var vre=/^(?:```|~~~)[^\n]*\n[\s\S]*?^(?:```|~~~)/gm,Fre=/(!?)\[[^\]\n]*\]\(([^)\n]+)\)/dg,Mre=/^\s*\[([^\]\n]+)\]:\s*(.+?)\s*$/dgm;function Gre(e){let t=[];for(let r of e.matchAll(vre)){let n=r.index??0;t.push([n,n+r[0].length]);}return t}s(Gre,"getFencedCodeRanges");function DH(e,t){for(let[r,n]of t)if(e>=r&&e<n)return true;return false}s(DH,"isInRanges");function gC(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(gC,"destPathSpan");function NH(e){let{start:t,length:r}=gC(e);return e.slice(t,t+r)}s(NH,"normalizeDestination");function Iy(e){let t=Gre(e),r=[];for(let n of e.matchAll(Fre)){let o=n.index??0;if(DH(o,t))continue;let i=n[1]==="!",a=n[2],l=n.indices?.[2];if(a===void 0||l===void 0)continue;let c=gC(a);r.push({kind:i?"image":"inline",destination:NH(a),destinationOffset:l[0]+c.start,destinationLength:c.length});}for(let n of e.matchAll(Mre)){let o=n.index??0;if(DH(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=gC(a);r.push({kind:"reference-def",destination:NH(a),label:i,destinationOffset:l[0]+c.start,destinationLength:c.length});}return r}s(Iy,"scanMarkdownLinks");function vH(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(vH,"applyRangeRewrites");function $re(e){return !(e.length===0||e.startsWith("#")||e.startsWith("/")||/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(e))}s($re,"isCandidateRelativePath");function jre(e){let t=e.replaceAll("\\","/");return t==="{baseDir}"?".":t.startsWith("{baseDir}/")?t.slice(10):t}s(jre,"stripPath");function Ure(e){let t=e.destination;return $re(t)?{raw:t,path:jre(t),kind:e.kind,...e.label!==void 0?{label:e.label}:{}}:null}s(Ure,"toScannedLink");function FH(e){let t=[];for(let r of Iy(e)){let n=Ure(r);n!==null&&t.push(n);}return t}s(FH,"scanRelativeLinks");function qm(e,t){let r=e.replaceAll("\\","/"),n=t.replaceAll("\\","/"),o=r.endsWith("/")?r:`${r}/`;return n.startsWith(o)?n.slice(o.length):n}s(qm,"toForwardSlashRelative");function MH(e,t,r,n,o){let i=new Set;for(let a of t){i.add(qm(e,a.source));for(let l of a.supportingFiles)i.add(qm(e,l.absolutePath));}for(let a of r)i.add(qm(e,a.source));for(let a of n)i.add(qm(e,a.source));for(let a of o)i.add(qm(e,a.source));return i}s(MH,"buildIncludedPaths");function Kre(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(Kre,"listScannables");async function GH(e,t,r,n,o,i){let a=Kre(t,r,n,o),l=[];for(let c of a){let m=FH(c.body);if(m.length===0)continue;let p=qm(e,c.sourcePath),u=[];for(let f of m){let g=await PH({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(GH,"detectBrokenLinks");hh();async function $H(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 dh(join(e,p.dir),{restrictToTarget:p.target,parseOpts:r});i.push(f);for(let g of u){if(n.get(g.name)===void 0){n.set(g.name,{command:g,precedence:p.precedence});continue}let y=o.get(g.name)??[];y.push({path:g.source,precedence:p.precedence}),o.set(g.name,y);}}let l=[];for(let[p,u]of o){let f=n.get(p);if(f===void 0)throw new Error(`mergeCommands invariant: loser without winner for "${p}"`);l.push({basename:p,winnerPath:f.command.source,loserPaths:u.map(g=>g.path)});}return l.sort((p,u)=>p.basename.localeCompare(u.basename)),{commands:[...n.values()].map(p=>p.command).sort((p,u)=>p.name.localeCompare(u.name)),dedups:l,cleanup:s(async()=>{await Promise.allSettled(i.map(p=>p()));},"cleanup")}}s($H,"mergeCommands");async function jH(e,t,r={}){let[n,o,i,a]=await Promise.all([RU(`${e}/skills`,r),gh(`${e}/agents`,{parseOpts:r}),fh(`${e}/rules`,{parseOpts:r}),$H(e,t.mergeFromToolDirs,r)]),l=[...o.agents],c=[...i.rules],m=MH(e,n,l,a.commands,c),p=await GH(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(jH,"aggregateAnthropicSkillPack");var UH={mergeFromToolDirs:[{dir:"commands",precedence:0},{dir:".claude/commands",target:"claude-code",precedence:1},{dir:".gemini/commands",target:"gemini-cli",precedence:2}]};_c();function zre(e){return {rules:[...e.rules],commands:[...e.commands],agents:[...e.agents],skills:[...e.skills],mcp:null,permissions:null,hooks:null,ignore:[]}}s(zre,"aggregateToCanonical");function ky(){return {}}s(ky,"emptyPrep");async function Vre(e,t){let r=[];for(let n of t)if(n.fileShape==="mdc"&&!n.inferredTarget){let o=await bH(join(e,n.path));r.push(o?{...n,inferredTarget:o}:n);}else r.push(n);return r}s(Vre,"enrichMdcTargets");function KH(e){return e.canonical?"canonical-agentsmesh":e.skillPack||e.rootSkill?"anthropic-skill-pack":e.rootRule||e.toolNativeManifests.length>0?"tool-native":"unknown"}s(KH,"deriveSourceType");async function Jre(e,t){let r=await sf(e,t);return {rules:[],commands:[],agents:[],skills:r?[r]:[],mcp:null,permissions:null,hooks:null,ignore:[]}}s(Jre,"rootSkillToCanonical");async function Yre(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(Yre,"rootRuleToCanonical");async function WH(e){let t=e.parseOpts??{};if(e.explicitAs)return {implicitPick:void 0,...await sH(e.contentRoot,e.explicitAs,e.explicitTarget,e.replayPick,t)};if(e.explicitTarget)return pC(e.resolvedPath,e.contentRoot,e.pathInRepo,e.explicitTarget,t);let r=await OH(e.contentRoot),n=await Vre(e.contentRoot,r.flatCollections),o={...r,flatCollections:n};if(o.skillPack&&!o.canonical){let a=await jH(e.contentRoot,UH,t),l=zre(a);return {prep:{cleanup:a.cleanup},implicitPick:void 0,narrowed:l,discoveredFeatures:Yn(l),layout:o,aggregate:a}}if(o.rootSkill&&!o.canonical&&!o.skillPack){let a=await Jre(e.contentRoot,t);return {prep:ky(),implicitPick:void 0,narrowed:a,discoveredFeatures:Yn(a),layout:o}}if(o.rootRule&&!o.canonical&&!o.skillPack&&!o.rootSkill&&o.flatCollections.length===0){let a=await Yre(e.contentRoot,o.rootRule.path);return {prep:ky(),implicitPick:void 0,narrowed:a,discoveredFeatures:Yn(a),layout:o}}return o.subPacks.length>0?{prep:ky(),implicitPick:void 0,narrowed:{rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]},discoveredFeatures:[],layout:o}:o.flatCollections.length>0?{prep:ky(),implicitPick:void 0,narrowed:{rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]},discoveredFeatures:[],layout:o}:{...await pC(e.resolvedPath,e.contentRoot,e.pathInRepo,e.explicitTarget,t),layout:o}}s(WH,"resolveInstallDiscovery");function zH(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(zH,"featuresFromLayout");function Xre(e){return e.replace(/[/\\]+/g,"-").replace(/[^a-z0-9-]/gi,"").toLowerCase()}s(Xre,"subPackSlug");function HH(e,t,r){let n=zH(e.layout),o=!e.layout.skillPack&&!e.layout.rootSkill&&n.length>0;return {name:`${t}-${Xre(e.path)}`,source:r,path:e.path,...o?{as:n[0]}:{},features:n}}s(HH,"targetFromSubPack");function VH(e,t,r){return {name:t,source:r,path:e.path,as:e.suggestedAs,target:e.inferredTarget,features:[e.suggestedAs]}}s(VH,"targetFromCollection");function JH(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 Qre(e);if(t.flatCollections.length===1){let l=t.flatCollections[0];return {targets:[VH(l,r,n)],isMarketplace:false}}return t.flatCollections.length>1?qre(e):{targets:[],isMarketplace:false}}s(JH,"selectInstallCandidates");function Qre(e){let{layout:t,sourceName:r,sourceForYaml:n}=e;if(e.all)return {targets:t.subPacks.map(a=>HH(a,r,n)),isMarketplace:true};if(e.force||!e.tty){let a=t.subPacks.map(l=>({path:l.path,features:zH(l.layout)})).map(l=>` - ${l.path} (${l.features.join(", ")})`).join(`
|
|
426
|
+
`),false}}s(sC,"seedAgentsmeshMcpEntry");Be();function bW(e,t){return e.map(r=>({from:relative(t,r.fromPath).replaceAll("\\","/"),to:r.toPath}))}s(bW,"mapResults");async function AW(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(Pp)||/^## Lessons \(/m.test(n))&&await Ia(e);}s(AW,"ensureImportedLessonsSubsystem");async function TW(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(Bt(o)){let p=Na(r,i),f=await dy(o).importFrom(p.rootBase,{scope:i});return f.length>0&&(await sC(p.rootBase),await AW(p.rootBase,i)),{exitCode:0,data:{scope:i,target:o,files:bW(f,p.rootBase)}}}let a,l;try{({config:a,context:l}=await _e(r,i));}catch{throw new Error(`Unknown --from "${n}" and no agentsmesh.yaml found. Run 'agentsmesh init' to enable plugin targets, or use a builtin: ${Ue.join(", ")}.`)}await ze(a,r);let c=ne(o);if(!c)throw new Error(`Unknown --from "${n}". Supported: ${[...Ue,...a.pluginTargets??[]].join(", ")}.`);let m=await c.generators.importFrom(l.rootBase,{scope:i});return m.length>0&&(await sC(l.rootBase),await AW(l.rootBase,i)),{exitCode:0,data:{scope:i,target:o,files:bW(m,l.rootBase)}}}s(TW,"runImport");tt();Jo();function fy(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(fy,"computeDiff");function gy(e){return `${e.new} files would be created, ${e.updated} updated, ${e.unchanged} unchanged, ${e.deleted} deleted`}s(gy,"formatDiffSummary");sn();async function PW(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",o=e.targets,i=typeof o=="string"&&o?o.split(",").map(g=>g.trim()).filter(Boolean):void 0,{config:a,context:l}=await _e(r,n);await ze(a,r);let{canonical:c}=await $t(a,l.configDir,{},l.canonicalDir),m=await Yo({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}=fy(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(PW,"runDiff");tt();Jo();b();rt();$a();Ie();var kte=[{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 DW(e){let t=new Set(e.enabledFeatures),r=[];for(let n of kte)!t.has(n.featureFlag)||!n.hasContent(e.canonical)||fn(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(DW,"lintSilentFeatureDrops");Ie();var Lte=/^(?:\s*(?:bash|sh|zsh|pwsh|powershell)\s+)?["']?(?<path>(?:\.{1,2}\/|[^/\s"'`]+\/)[^\s"'`]+)["']?(?:\s|$)/;function Cte(e){let r=e.match(Lte)?.groups?.path;return typeof r=="string"?r:null}s(Cte,"extractScriptToken");function NW(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=Cte(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(NW,"lintHookScriptReferences");Ie();function vW(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(vW,"lintRuleScopeInversion");var Ote=new Set([".git","node_modules"]),wte=2e5;function La(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())Ote.has(o.name)||r.push(join(n,o.name));else if(o.isFile()&&(t.add(Jl(e,join(n,o.name))),t.size>wte))return t}}catch{return null}return t}s(La,"listProjectFiles");var Tte="lessons",GW=".agentsmesh/lessons/lessons.json",$W=".agentsmesh/rules/_root.md",xte=/^## Lessons \(/m;function jW(e,t){if(t==="global")return [];let r=je(e);if(!existsSync(r.graph))return [];let n=[],o;try{o=td(e);}catch(m){return [iC("error",GW,`lessons.json failed to load: ${m instanceof Error?m.message:String(m)}`)]}let i=La(e)??void 0,a=Jn(o,{knownPaths:i});for(let m of a.findings)n.push(iC(m.level,GW,`[${m.code}] ${m.message}`));let l=join(e,$W),c=existsSync(l)?readFileSync(l,"utf8"):"";return xte.test(c)||n.push(iC("warning",$W,'lessons procedural rule ("## Lessons (...)") is missing from _root.md \u2014 recall/capture enforcement will not fire.')),n}s(jW,"lintLessonsSubsystem");function iC(e,t,r){return {level:e,file:t,target:Tte,message:r}}s(iC,"diag");var Pte=["node_modules",".git","dist","coverage",".agentsmesh"];async function Dte(e){return (await Ci(e)).filter(n=>{let o=relative(e,n);return !Pte.some(i=>o.includes(`/${i}/`)||o.startsWith(`${i}/`))}).map(n=>relative(e,n))}s(Dte,"getProjectFiles");async function hy(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=[...jW(r,i)],h=i==="global"?[]:await Dte(r);for(let _ of l){let R=ne(_),k=Bt(_)?dy(_):R;k?.capabilities&&g.push(...DW({target:_,capabilities:k.capabilities,canonical:t,enabledFeatures:e.features})),f&&g.push(...NW({target:_,canonical:t,hasScriptProjection:R?.postProcessHookOutputs!==void 0})),c&&g.push(...vW({target:_,canonical:t,preservesManualActivation:R?.preservesManualActivation===true})),c&&k?.lintRules&&g.push(...k.lintRules(t,r,h,{scope:i})),R?.generators.lint&&g.push(...R.generators.lint(t));let w={scope:i};m&&k?.lint?.commands&&g.push(...k.lint.commands(t,w)),p&&k?.lint?.mcp&&g.push(...k.lint.mcp(t,w)),u&&k?.lint?.permissions&&g.push(...k.lint.permissions(t,w)),f&&k?.lint?.hooks&&g.push(...k.lint.hooks(t,w));}let y=g.some(_=>_.level==="error");return {diagnostics:g,hasErrors:y}}s(hy,"runLint");sn();async function BW(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",o=e.targets,i=typeof o=="string"&&o?o.split(",").map(u=>u.trim()).filter(Boolean):void 0,{config:a,context:l}=await _e(r,n);await ze(a,r);let{canonical:c}=await $t(a,l.configDir,{},l.canonicalDir),{diagnostics:m,hasErrors:p}=await hy(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(BW,"runLintCmd");function KW(e){let{data:t}=e;if(t.diagnostics.length===0){M.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)M.error(`${a.file} (${a.target}): ${a.message}`);for(let a of n)M.warn(`${a.file} (${a.target}): ${a.message}`);let o=t.summary.errors,i=t.summary.warnings;M.info(`${o} error${o!==1?"s":""}, ${i} warning${i!==1?"s":""}`);}s(KW,"renderLint");function WW(e){let{data:t}=e;if(!t.hasLock){M.error("Not initialized for collaboration. Run 'agentsmesh generate' first.");return}if(t.inSync){M.note("Lock file is in sync.","Check"),M.success("Lock file is in sync.");return}let r=new Set(t.lockedViolations);M.error("Conflict detected:");for(let n of t.extendsModified)M.error(` extend "${n}" was modified`);for(let n of t.modified){let o=r.has(n)?" [LOCKED]":"";M.error(` ${n} was modified${o}`);}for(let n of t.added){let o=r.has(n)?" [LOCKED]":"";M.error(` ${n} was added${o}`);}for(let n of t.removed){let o=r.has(n)?" [LOCKED]":"";M.error(` ${n} was removed${o}`);}M.note("Generated files are out of sync.","Check"),M.info("Run 'agentsmesh merge' to resolve, or 'agentsmesh generate --force' to accept current state.");}s(WW,"renderCheck");function HW(e){let{data:t}=e;if(t.files.length===0){M.info(`Nothing to import from ${t.target}.`);return}for(let n of t.files)M.success(`${n.from} \u2192 ${n.to}`);let r=t.scope==="global"?" --global":"";M.info(`Imported ${t.files.length} file(s). Run 'agentsmesh generate${r}' to sync to other tools.`);}s(HW,"renderImport");ue();function zW(e){let{summary:t}=e.data;if(t.created+t.updated+t.unchanged+t.deleted===0){S.info("No files to generate (no root rule or rules feature disabled).");return}for(let n of e.data.patches)process.stdout.write(n.patch);S.info(gy({new:t.created,updated:t.updated,unchanged:t.unchanged,deleted:t.deleted}));}s(zW,"renderDiff");function VW(e){if(!e.data.hadConflict){M.info("No conflicts to resolve.");return}M.success("Lock file conflict resolved.");}s(VW,"renderMerge");Qu();qu();tt();Jo();Qu();qu();ue();var Fte=300;function Mte(e){return e.replace(/\\/g,"/").replace(/\/+$/,"")}s(Mte,"normalizeWatchPath");function Gte(e,t){let r=Mte(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(Gte,"shouldIgnoreWatchPath");function $te(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($te,"featureFingerprint");async function YW(e,t,r={}){let n=t??process.cwd(),o=e.global===true?"global":"project",{context:i}=await _e(n,o),a=[i.canonicalDir,join(i.configDir,"agentsmesh.yaml"),join(i.configDir,"agentsmesh.local.yaml")],l=null,c=null,m=false,p=null,u=s(async()=>{if(m)return;l=null;let{config:_,context:R}=await _e(n,o),{canonical:k}=await $t(_,R.configDir,{},R.canonicalDir),w=k.mcp?Object.keys(k.mcp.mcpServers).length:0,D=k.permissions?k.permissions.allow.length+k.permissions.deny.length:0,N=k.hooks?Object.values(k.hooks).reduce(($,re)=>$+(Array.isArray(re)?re.length:0),0):0,K=k.ignore.length,J=$te(_.features,k.rules.length,k.commands.length,k.agents.length,k.skills.length,w,D,N,K),ee=c!==null&&c!==J;if(c=J,m)return;let se=await Xo(e,n,{printMatrix:false});if(Mm(se),!m){if(ee){let $=await vm(e,n);Fm($,{verbose:e.verbose===true});}else S.info("Regenerated.");r.onCycle?.({featuresChanged:ee});}},"run"),f=s(()=>{let _=u().catch(R=>{if(!m){let k=R instanceof Error?R.message:String(R);S.error(k);}}).finally(()=>{p===_&&(p=null);});p=_;},"scheduleRun"),g=s(()=>{m||(l&&clearTimeout(l),l=setTimeout(f,Fte));},"schedule"),h=r.usePolling??process.platform==="win32",y=vte.watch(a,{ignoreInitial:true,usePolling:h,...h&&r.pollIntervalMs!==void 0?{interval:r.pollIntervalMs}:{}});return y.on("all",(_,R)=>{Gte(i.canonicalDir,R)||g();}),await new Promise((_,R)=>{y.once("ready",_),y.once("error",R);}),S.info(o==="global"?"Watching ~/.agentsmesh/ and agentsmesh.yaml...":"Watching .agentsmesh/ and agentsmesh.yaml..."),p=u(),await p,p=null,{stop:s(async()=>{m=true,l&&(clearTimeout(l),l=null),await y.close(),p&&await p;},"stop")}}s(YW,"runWatch");tt();ef();async function yy(e){let{config:t,configDir:r,canonicalDir:n}=e,o=await xh(n);if(o===null)return {inSync:false,hasLock:false,modified:[],added:[],removed:[],extendsModified:[],lockedViolations:[]};let i=await fi(n),a=await gc(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 k=i[R];k===void 0?f.push(R):k!==o.checksums[R]&&p.push(R);}for(let R of m)c.has(R)||u.push(R);let g=new Set([...Object.keys(o.extends),...Object.keys(l)]),h=[];for(let R of g)l[R]!==o.extends[R]&&h.push(R);let y=Dh(o.checksums,i,t.collaboration?.lock_features??[]);return {inSync:p.length===0&&u.length===0&&f.length===0&&h.length===0,hasLock:true,modified:p,added:u,removed:f,extendsModified:h,lockedViolations:y}}s(yy,"checkLockSync");sn();async function XW(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",{config:o,context:i}=await _e(r,n);await ze(o,r);let a=await yy({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(XW,"runCheck");tt();b();ef();var Ute=".lock",Bte="<<<<<<<";async function aC(e){let t=join(e,Ute),r=await I(t);return r===null?false:r.includes(Bte)}s(aC,"hasLockConflict");async function qW(e,t,r){if(!await aC(e))throw new Error("No conflict to resolve.");let o=await fi(e),i=dirname(e),a=r?await gc(r,i):[],l=a.length>0?await Pm(a):{},c=await Nh(join(e,"packs")),m=process.env.USER??process.env.USERNAME??"unknown";await Ph(e,{generatedAt:new Date().toISOString(),generatedBy:m,libVersion:t,checksums:o,extends:l,packs:c});}s(qW,"resolveLockConflict");async function ZW(e,t){let r=t??process.cwd(),n=e.global===true?"global":"project",{config:o,context:i}=await _e(r,n),a=i.canonicalDir;return await aC(a)?(await qW(a,Pa(),o),{exitCode:0,data:{hadConflict:true,resolved:true}}):{exitCode:0,data:{hadConflict:false,resolved:false}}}s(ZW,"runMerge");tt();Eh();function eH(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?Tm.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(eH,"readInstallFlags");var Hte=".install.lock";async function Ym(e,t={}){return await mkdir(e,{recursive:true}),Nm(join(e,Hte),{...t,label:"install lock"})}s(Ym,"acquireInstallLock");tt();b();kp();Fa();var Jte=promisify(execFile);function _y(e,t){if(e.startsWith("-"))throw new Error(`agentsmesh refuses ${t} starting with "-" (option-injection guard): ${e}`)}s(_y,"ensureNotFlag");async function lC(e){let{stdout:t}=await Jte("git",e,{env:{...process.env,GIT_TERMINAL_PROMPT:"0",GIT_ALLOW_PROTOCOL:qd()}});return t.trim()}s(lC,"runGit");async function tH(){try{return await lC(["--version"]),!0}catch{return false}}s(tH,"isGitAvailable");async function Yte(e,t){_y(e,"remote-url"),_y(t,"ref"),Sp(e);let r=[t,`refs/heads/${t}`,`refs/tags/${t}`],n;for(let o of r)try{let a=(await lC(["ls-remote",e,o])).split(`
|
|
427
|
+
`).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(Yte,"gitLsRemoteResolve");async function Sy(e,t){_y(t,"remote-url");let r=e===""?"HEAD":e;if(_y(r,"ref"),/^[0-9a-f]{40}$/i.test(r))return r.toLowerCase();if(Sp(t),r==="HEAD"){let o=(await lC(["ls-remote",t,"HEAD"])).split(`
|
|
428
|
+
`).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 Yte(t,r)}s(Sy,"resolveRemoteRefForInstall");async function rH(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 Sy(e.rawRef||"HEAD",t);if(e.kind==="github"){let l=`github:${e.org}/${e.repo}@${r}`;return {resolvedPath:(await fc(l,"install",{cacheDir:tr(),refresh:false,allowOfflineFallback:false})).resolvedPath,sourceForYaml:l,version:r}}if(e.kind==="gitlab"){let l=`gitlab:${e.org}/${e.repo}@${r}`;return {resolvedPath:(await fc(l,"install",{cacheDir:tr(),refresh:false,allowOfflineFallback:false})).resolvedPath,sourceForYaml:l,version:r}}let n=r,i=`git+${(e.gitPlusBase??t).split("#")[0]}#${n}`;return {resolvedPath:(await fc(i,"install",{cacheDir:tr(),refresh:false,allowOfflineFallback:false})).resolvedPath,sourceForYaml:i,version:r}}s(rH,"fetchInstallSource");async function nH(e,t){if(e.kind==="local")return {resolvedPath:e.localRoot,sourceForYaml:e.localSourceForYaml};try{let r=await rH(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(nH,"resolveInstallResolvedPath");function fd(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(fd,"parseGithubTreeUrl");function gd(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(gd,"parseGithubBlobUrl");function hd(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(hd,"parseGitlabTreeUrl");function yd(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(yd,"parseGitlabBlobUrl");var Xte=new Set(["tree","blob","commit","releases","actions","issues","pulls","settings","wiki","discussions","security","projects","packages"]);function _d(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||Xte.has(r[1]))return null;let n=r[0],o=r[1];return {org:n,repo:o}}catch{return null}}s(_d,"parseGithubRepoUrl");function Sd(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(Sd,"parseGitlabRepoUrl");function Rd(e){let t=e.match(/^git@github\.com:([^/]+)\/(.+?)(?:\.git)?$/i);return t?{org:t[1],repo:t[2].replace(/\.git$/i,"")}:null}s(Rd,"parseGitSshGithub");function Id(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(Id,"parseGitSshGitlab");b();var Zte=/^[A-Za-z]:[\\/]/,ere=/^[A-Za-z]:\//;function oH(...e){return e.some(t=>t.includes("\\")||Zte.test(t))?win32:posix}s(oH,"pathApiFor");function Ld(e){return e.replace(/\\/g,"/")}s(Ld,"toPosixPath");function kd(e){return Ld(e).replace(/^\/+|\/+$/g,"")}s(kd,"normalizeInstallPathField");function Ry(e){let t=Ld(e);return t===""||t==="."||t==="./."?".":t.startsWith("./")||t.startsWith("../")||t.startsWith("/")||ere.test(t)?t:`./${t}`}s(Ry,"normalizeLocalSourceForYaml");function Ca(e){return {...e,source:e.source_kind==="local"?Ry(e.source):e.source,...e.path!==void 0?{path:kd(e.path)}:{},...e.paths!==void 0?{paths:e.paths.map(t=>kd(t))}:{}}}s(Ca,"normalizePersistedInstallPaths");function sH(e,t,r){let n=oH(e,t),o=n.normalize(e),i=n.normalize(t),a=kd(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=kd(u),g=Ld(n.relative(i,p))||".";return {kind:"local",rawRef:"",pathInRepo:a||f.replace(/\.md$/i,"").replace(/\/$/,""),localRoot:p,localSourceForYaml:Ry(g)}}let m=Ld(n.relative(i,o))||".";return {kind:"local",rawRef:"",pathInRepo:a,localRoot:o,localSourceForYaml:Ry(m)}}s(sH,"localParsedFromAbsPath");async function cC(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=fd(n)??gd(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=_d(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=hd(n)??yd(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=Sd(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=Rd(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=Id(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 sH(m,t,o)}s(cC,"parseInstallSource");function Cd(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=fd(t)??gd(t);if(a!==null)return {kind:"github",remoteUrl:`https://github.com/${a.org}/${a.repo}.git`,ref:a.ref};let l=_d(t);if(l!==null)return {kind:"github",remoteUrl:`https://github.com/${l.org}/${l.repo}.git`,ref:"HEAD"};let c=hd(t)??yd(t);if(c!==null)return {kind:"gitlab",remoteUrl:`https://gitlab.com/${c.namespace}/${c.project}.git`,ref:c.ref};let m=Sd(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=Rd(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=Id(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(Cd,"parseSourceUrl");Vk();function Yn(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(Yn,"featuresFromCanonical");async function Iy(e,t={}){let{sliceRoot:r,implicitPick:n}=await _h(e),{canonical:o,cleanup:i}=await Sh(r,{...t,enableTargetEntityMappers:true});return {canonical:o,features:Yn(o),implicitPick:n,cleanup:i}}s(Iy,"discoverFromContentRoot");function iH(e){return e.description.trim()?{skill:e,ok:true}:{skill:e,ok:false,reason:"missing description in frontmatter"}}s(iH,"validateSkill");function aH(e){return e.description.trim()?{rule:e,ok:true}:{rule:e,ok:false,reason:"missing description in frontmatter"}}s(aH,"validateRule");function lH(e){return e.description.trim()?{command:e,ok:true}:{command:e,ok:false,reason:"missing description in frontmatter"}}s(lH,"validateCommand");function cH(e){return e.description.trim()?{agent:e,ok:true}:{agent:e,ok:false,reason:"missing description in frontmatter"}}s(cH,"validateAgent");function yt(e){return basename(e.source).replace(/\.md$/i,"")}s(yt,"ruleSlug");function nre(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(nre,"featuresFromImplicitPick");function Qm(e,t){let{implicitPick:r}=t,n=t.scopedFeatures??nre(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(Qm,"narrowDiscoveredForInstallScope");eL();async function mH(e,t,r,n,o={}){let i=await kh(e,t,{preferredSkillNames:t==="skills"?n?.skills:void 0}),{canonical:a,cleanup:l}=await Iy(i.discoveryRoot,o),c=Qm(a,{scopedFeatures:[t]});return {prep:{yamlTarget:r,scopedFeatures:[t],cleanup:s(async()=>{await Promise.allSettled([l(),i.cleanup()]);},"combinedCleanup")},narrowed:c,discoveredFeatures:Yn(c)}}s(mH,"resolveManualDiscoveredForInstall");rs();Fk();b();Te();var ore=(()=>{let e=new Map;for(let r of De){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 sre(e){return e.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"")}s(sre,"norm");function ky(e){let t=sre(e);if(t){for(let{prefix:r,target:n}of ore)if(t===r||t.startsWith(`${r}/`))return n}}s(ky,"targetHintFromNativePath");function mC(e,t){return ky(e)===t}s(mC,"pathSupportsNativePick");function pH(e,t){if(!e||!t)return;let r=ky(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(pH,"validateTargetMatchesPath");function uH(e){return (e.commands?.length??0)+(e.rules?.length??0)+(e.skills?.length??0)+(e.agents?.length??0)>0}s(uH,"extendPickHasArrays");rt();b();aI();async function lre(e,t,r,n){if(n.kind==="skillDir")return hg(e);if(n.kind==="firstSegment"){let c=t.slice(r.prefix.length).split("/").filter(Boolean)[0];return c?[c]:[]}let o=await B(e),i=n.suffix,a=i.toLowerCase();return [...new Set(o.filter(l=>l.toLowerCase().endsWith(a)).map(l=>basename(l,i)))].sort()}s(lre,"namesForStrategy");async function dH(e,t,r){let n=ne(r)?.nativeInstall;if(!n)return {};let o=t.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"");if(n.inferPick)return n.inferPick(e,o);for(let i of n.pickPaths??[]){if(o!==i.prefix&&!o.startsWith(i.prefix))continue;let a=join(e,...o.split("/")),l=await lre(a,o,i,i.strategy);return l.length?{[i.feature]:l}:{}}return {}}s(dH,"inferImplicitPickFromNativePath");function fH(e){return (e.commands?.length??0)+(e.rules?.length??0)+(e.skills?.length??0)+(e.agents?.length??0)===0}s(fH,"isImplicitPickEmpty");Mk();function Ed(e){return e.replace(/\\/g,"/").replace(/\/+$/,"")}s(Ed,"normalizePath");function dre(e,t){let r=Ed(e),n=Ed(t);return r===n||r.startsWith(`${n}/`)||n.startsWith(`${r}/`)}s(dre,"overlapsPath");function Ly(e,t){let r=e??[];return r.includes(t)||r.push(t),r}s(Ly,"addUnique");async function fre(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(fre,"makeStageRoot");function gre(e,t){let r;for(let o of e){if(o.feature==="rules"&&o.toPath.startsWith(".agentsmesh/rules/")){r={...r,rules:Ly(r?.rules,basename(o.toPath,".md"))};continue}if(o.feature==="commands"&&o.toPath.startsWith(".agentsmesh/commands/")){let i=Ed(relative(join(t,".agentsmesh","commands"),join(t,o.toPath)));r={...r,commands:Ly(r?.commands,i.replace(/\.md$/i,"").split("/").filter(Boolean).join(":"))};continue}if(o.feature==="agents"&&o.toPath.startsWith(".agentsmesh/agents/")){r={...r,agents:Ly(r?.agents,basename(o.toPath,".md"))};continue}if(o.feature==="skills"&&o.toPath.startsWith(".agentsmesh/skills/")){let a=Ed(relative(join(t,".agentsmesh","skills"),join(t,o.toPath))).split("/")[0];a&&(r={...r,skills:Ly(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(gre,"buildPickFromResults");function hre(e,t,r,n){let o=join(t,...Ed(e).split("/")),i=r.filter(a=>dre(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:gre(i,t)}}s(hre,"scopeImportedResults");async function pC(e,t){let{stageRoot:r,cleanup:n}=await fre(e);try{let o=await Wu(r,t);return {stageRoot:r,results:o,cleanup:n}}catch(o){throw await n(),o}}s(pC,"stageImportedNativeRepo");async function uC(e,t,r){let n=await pC(e,r);try{return {stageRoot:n.stageRoot,cleanup:n.cleanup,...hre(t,n.stageRoot,n.results,r)}}catch(o){throw await n.cleanup(),o}}s(uC,"stageNativeInstallScope");async function _H(e,t,r,n){let o=n.explicitTarget?.trim();o&&Or.parse(o);let i=r.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"");pH(o,i);let a=join(e,".agentsmesh"),l=await j(a),c=i?ky(i):void 0,p=!l&&!o&&(!i||c!==void 0)?await lh(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 uC(e,i,u);return {discoveryRoot:w.stageRoot,implicitPick:w.pick,scopedFeatures:w.features,yamlTarget:u,importHappened:true,cleanup:w.cleanup}}let k=await pC(e,u);return {discoveryRoot:i?join(k.stageRoot,i):k.stageRoot,yamlTarget:u,importHappened:true,cleanup:k.cleanup}}let g;l?i?u&&mC(i,u)?g=e:g=t:g=e:g=t;let h,y,_;if(f&&u){let k=await uC(e,i,u);g=k.stageRoot,h=k.pick,y=k.features,_=k.cleanup;}else if(g===e&&i&&u&&mC(i,u)&&(h=await dH(e,i,u),fH(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&&uH(h)||(y?.length??0)>0)&&(R=u),{discoveryRoot:g,implicitPick:h,scopedFeatures:y,yamlTarget:R,importHappened:_!==void 0,cleanup:_}}s(_H,"prepareInstallDiscovery");async function dC(e,t,r,n,o={}){let i=await _H(e,t,r,{explicitTarget:n}),{canonical:a,implicitPick:l,cleanup:c}=await Iy(i.discoveryRoot,o),m=i.cleanup,u={...i,cleanup:s(async()=>{await Promise.allSettled([c(),...m?[m()]:[]]);},"mergedCleanup")},f=l??i.implicitPick,g=Qm(a,{implicitPick:f,scopedFeatures:i.scopedFeatures}),h=Yn(g);return {prep:u,discovered:a,implicitPick:f,narrowed:g,discoveredFeatures:h}}s(dC,"resolveDiscoveredForInstall");var Sre=[".claude-plugin","marketplace.json"];async function Rre(e){try{return (await stat(e)).isDirectory()}catch{return false}}s(Rre,"dirExists");function Ire(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(Ire,"normalizeSource");async function RH(e,t,r){let n=join(e,...Sre),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=Ire(c.source);if(!m)continue;let p=join(e,m);if(!await Rre(p))continue;let u=await t(p,m);r(u)&&l.push({path:m,layout:u});}return l}s(RH,"detectMarketplaceSubPacks");async function Od(e){try{return (await stat(e)).isDirectory()}catch{return false}}s(Od,"dirExists");async function Ea(e){try{return (await readdir(e,{withFileTypes:!0})).map(r=>({name:r.name,isDir:r.isDirectory(),isFile:r.isFile()}))}catch{return []}}s(Ea,"listDirEntries");function IH(e){return e.endsWith(".instructions.md")?"copilot-instructions":e.endsWith(".md")?"md":e.endsWith(".mdc")?"mdc":e.endsWith(".toml")?"toml":null}s(IH,"classifyFileShape");var Cre=["rules","commands","agents","skills","mcp.json","hooks.yaml","permissions.yaml","ignore"],Ere=[".cursorrules",".windsurfrules"];async function LH(e){let t=join(e,".agentsmesh");if(!await Od(t))return null;let r=await Ea(t),n=new Set(r.map(o=>o.name));for(let o of Cre)if(n.has(o))return {path:".agentsmesh"};return null}s(LH,"detectCanonical");async function CH(e){for(let t of Ere)try{if((await stat(join(e,t))).isFile())return {path:t}}catch{}return null}s(CH,"detectRootRule");async function EH(e){try{if((await stat(join(e,"SKILL.md"))).isFile())return {path:"SKILL.md"}}catch{}return null}s(EH,"detectRootSkill");ss();var wre={rules:"rules",commands:"commands",agents:"agents",skills:"skills"},bre=[".claude-plugin",".codex-plugin",".cursor-plugin"],Are=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;async function OH(e){let t=join(e,"skills"),r=await Ea(t);for(let n of r)if(!(!n.isDir||n.name.startsWith("_")||!Are.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(OH,"detectSkillPack");async function wH(e){let t=[];for(let[r,n]of Object.entries(wre)){let o=join(e,r),i=await Ea(o),a=new Set;for(let l of i){if(!l.isFile||qn(l.name))continue;let c=IH(l.name);c&&a.add(c);}for(let l of a)t.push({path:r,suggestedAs:n,fileShape:l});}return t}s(wH,"detectFlatCollections");async function bH(e){let t=[];for(let r of bre)await Od(join(e,r))&&t.push({path:r});return t}s(bH,"detectToolNativeManifests");async function hC(e,t){let r=await LH(e);if(r)return {canonical:r,skillPack:null,rootSkill:null,rootRule:null,flatCollections:[],toolNativeManifests:[]};let n=await OH(e),o=n?null:await EH(e),i=await wH(e),a=n||o||i.length>0?null:await CH(e),l=await bH(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(hC,"detectFlatLayout");function gC(e){return e.canonical!==null||e.skillPack!==null||e.rootSkill!==null||e.rootRule!==null||e.flatCollections.length>0}s(gC,"hasContent");async function AH(e,t){let r=await Ea(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 hC(i,a);gC(l)&&n.push({path:a,layout:l});}return n}s(AH,"collectSubPackCandidates");async function Tre(e,t){if(gC(t))return [];let r=await RH(e,hC,gC);if(r&&r.length>0)return r;let n=await AH(e,"");if(n.length>=2)return n;let o=await Ea(e);for(let i of o){if(!i.isDir||i.name.startsWith("."))continue;let a=await AH(join(e,i.name),i.name);if(a.length>=2)return a}return []}s(Tre,"detectSubPacks");async function xH(e){let t=await hC(e,"");if(t.canonical)return {...t,subPacks:[]};let r=await Tre(e,t);return {...t,subPacks:r}}s(xH,"detectLayout");rt();b();U();function Pre(e){let t=[];for(let r of gf()){let n=ne(r)?.nativeInstall?.dialectHints;n?.length&&n.some(o=>o.frontmatterKey in e)&&t.push(r);}return t}s(Pre,"targetsMatchingFrontmatter");async function DH(e){let t;try{t=await readdir(e);}catch{return null}let r=t.sort().find(a=>a.toLowerCase().endsWith(".mdc"));if(!r)return null;let n=await I(join(e,r));if(!n)return null;let o=mn(n,join(e,r));if(!o.ok)return null;let i=Pre(o.value.frontmatter);return i.length===1?i[0]??null:null}s(DH,"inferMdcTarget");dh();yh();function Mre(e){let t=e.indexOf("#");return t<0?{path:e,anchor:""}:{path:e.slice(0,t),anchor:e.slice(t)}}s(Mre,"splitAnchor");function Gre(e){return e.split(sep).join("/")}s(Gre,"toForwardSlash");async function $re(e){try{return await stat(e),!0}catch{return false}}s($re,"pathExists");async function MH(e){let{link:t,fromFile:r,contentRoot:n,includedPaths:o}=e,{path:i,anchor:a}=Mre(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=Gre(p);return await $re(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(MH,"resolveLink");var jre=/^(?:```|~~~)[^\n]*\n[\s\S]*?^(?:```|~~~)/gm,Ure=/(!?)\[[^\]\n]*\]\(([^)\n]+)\)/dg,Bre=/^\s*\[([^\]\n]+)\]:\s*(.+?)\s*$/dgm;function Kre(e){let t=[];for(let r of e.matchAll(jre)){let n=r.index??0;t.push([n,n+r[0].length]);}return t}s(Kre,"getFencedCodeRanges");function GH(e,t){for(let[r,n]of t)if(e>=r&&e<n)return true;return false}s(GH,"isInRanges");function yC(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(yC,"destPathSpan");function $H(e){let{start:t,length:r}=yC(e);return e.slice(t,t+r)}s($H,"normalizeDestination");function Cy(e){let t=Kre(e),r=[];for(let n of e.matchAll(Ure)){let o=n.index??0;if(GH(o,t))continue;let i=n[1]==="!",a=n[2],l=n.indices?.[2];if(a===void 0||l===void 0)continue;let c=yC(a);r.push({kind:i?"image":"inline",destination:$H(a),destinationOffset:l[0]+c.start,destinationLength:c.length});}for(let n of e.matchAll(Bre)){let o=n.index??0;if(GH(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=yC(a);r.push({kind:"reference-def",destination:$H(a),label:i,destinationOffset:l[0]+c.start,destinationLength:c.length});}return r}s(Cy,"scanMarkdownLinks");function jH(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(jH,"applyRangeRewrites");function Wre(e){return !(e.length===0||e.startsWith("#")||e.startsWith("/")||/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(e))}s(Wre,"isCandidateRelativePath");function Hre(e){let t=e.replaceAll("\\","/");return t==="{baseDir}"?".":t.startsWith("{baseDir}/")?t.slice(10):t}s(Hre,"stripPath");function zre(e){let t=e.destination;return Wre(t)?{raw:t,path:Hre(t),kind:e.kind,...e.label!==void 0?{label:e.label}:{}}:null}s(zre,"toScannedLink");function UH(e){let t=[];for(let r of Cy(e)){let n=zre(r);n!==null&&t.push(n);}return t}s(UH,"scanRelativeLinks");function qm(e,t){let r=e.replaceAll("\\","/"),n=t.replaceAll("\\","/"),o=r.endsWith("/")?r:`${r}/`;return n.startsWith(o)?n.slice(o.length):n}s(qm,"toForwardSlashRelative");function BH(e,t,r,n,o){let i=new Set;for(let a of t){i.add(qm(e,a.source));for(let l of a.supportingFiles)i.add(qm(e,l.absolutePath));}for(let a of r)i.add(qm(e,a.source));for(let a of n)i.add(qm(e,a.source));for(let a of o)i.add(qm(e,a.source));return i}s(BH,"buildIncludedPaths");function Jre(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(Jre,"listScannables");async function KH(e,t,r,n,o,i){let a=Jre(t,r,n,o),l=[];for(let c of a){let m=UH(c.body);if(m.length===0)continue;let p=qm(e,c.sourcePath),u=[];for(let f of m){let g=await MH({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(KH,"detectBrokenLinks");yh();async function WH(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 fh(join(e,p.dir),{restrictToTarget:p.target,parseOpts:r});i.push(f);for(let g of u){if(n.get(g.name)===void 0){n.set(g.name,{command:g,precedence:p.precedence});continue}let y=o.get(g.name)??[];y.push({path:g.source,precedence:p.precedence}),o.set(g.name,y);}}let l=[];for(let[p,u]of o){let f=n.get(p);if(f===void 0)throw new Error(`mergeCommands invariant: loser without winner for "${p}"`);l.push({basename:p,winnerPath:f.command.source,loserPaths:u.map(g=>g.path)});}return l.sort((p,u)=>p.basename.localeCompare(u.basename)),{commands:[...n.values()].map(p=>p.command).sort((p,u)=>p.name.localeCompare(u.name)),dedups:l,cleanup:s(async()=>{await Promise.allSettled(i.map(p=>p()));},"cleanup")}}s(WH,"mergeCommands");async function HH(e,t,r={}){let[n,o,i,a]=await Promise.all([kU(`${e}/skills`,r),hh(`${e}/agents`,{parseOpts:r}),gh(`${e}/rules`,{parseOpts:r}),WH(e,t.mergeFromToolDirs,r)]),l=[...o.agents],c=[...i.rules],m=BH(e,n,l,a.commands,c),p=await KH(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(HH,"aggregateAnthropicSkillPack");var zH={mergeFromToolDirs:[{dir:"commands",precedence:0},{dir:".claude/commands",target:"claude-code",precedence:1},{dir:".gemini/commands",target:"gemini-cli",precedence:2}]};_c();function Qre(e){return {rules:[...e.rules],commands:[...e.commands],agents:[...e.agents],skills:[...e.skills],mcp:null,permissions:null,hooks:null,ignore:[]}}s(Qre,"aggregateToCanonical");function Ey(){return {}}s(Ey,"emptyPrep");async function qre(e,t){let r=[];for(let n of t)if(n.fileShape==="mdc"&&!n.inferredTarget){let o=await DH(join(e,n.path));r.push(o?{...n,inferredTarget:o}:n);}else r.push(n);return r}s(qre,"enrichMdcTargets");function JH(e){return e.canonical?"canonical-agentsmesh":e.skillPack||e.rootSkill?"anthropic-skill-pack":e.rootRule||e.toolNativeManifests.length>0?"tool-native":"unknown"}s(JH,"deriveSourceType");async function Zre(e,t){let r=await af(e,t);return {rules:[],commands:[],agents:[],skills:r?[r]:[],mcp:null,permissions:null,hooks:null,ignore:[]}}s(Zre,"rootSkillToCanonical");async function ene(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(ene,"rootRuleToCanonical");async function YH(e){let t=e.parseOpts??{};if(e.explicitAs)return {implicitPick:void 0,...await mH(e.contentRoot,e.explicitAs,e.explicitTarget,e.replayPick,t)};if(e.explicitTarget)return dC(e.resolvedPath,e.contentRoot,e.pathInRepo,e.explicitTarget,t);let r=await xH(e.contentRoot),n=await qre(e.contentRoot,r.flatCollections),o={...r,flatCollections:n};if(o.skillPack&&!o.canonical){let a=await HH(e.contentRoot,zH,t),l=Qre(a);return {prep:{cleanup:a.cleanup},implicitPick:void 0,narrowed:l,discoveredFeatures:Yn(l),layout:o,aggregate:a}}if(o.rootSkill&&!o.canonical&&!o.skillPack){let a=await Zre(e.contentRoot,t);return {prep:Ey(),implicitPick:void 0,narrowed:a,discoveredFeatures:Yn(a),layout:o}}if(o.rootRule&&!o.canonical&&!o.skillPack&&!o.rootSkill&&o.flatCollections.length===0){let a=await ene(e.contentRoot,o.rootRule.path);return {prep:Ey(),implicitPick:void 0,narrowed:a,discoveredFeatures:Yn(a),layout:o}}return o.subPacks.length>0?{prep:Ey(),implicitPick:void 0,narrowed:{rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]},discoveredFeatures:[],layout:o}:o.flatCollections.length>0?{prep:Ey(),implicitPick:void 0,narrowed:{rules:[],commands:[],agents:[],skills:[],mcp:null,permissions:null,hooks:null,ignore:[]},discoveredFeatures:[],layout:o}:{...await dC(e.resolvedPath,e.contentRoot,e.pathInRepo,e.explicitTarget,t),layout:o}}s(YH,"resolveInstallDiscovery");function QH(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(QH,"featuresFromLayout");function tne(e){return e.replace(/[/\\]+/g,"-").replace(/[^a-z0-9-]/gi,"").toLowerCase()}s(tne,"subPackSlug");function XH(e,t,r){let n=QH(e.layout),o=!e.layout.skillPack&&!e.layout.rootSkill&&n.length>0;return {name:`${t}-${tne(e.path)}`,source:r,path:e.path,...o?{as:n[0]}:{},features:n}}s(XH,"targetFromSubPack");function qH(e,t,r){return {name:t,source:r,path:e.path,as:e.suggestedAs,target:e.inferredTarget,features:[e.suggestedAs]}}s(qH,"targetFromCollection");function ZH(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 rne(e);if(t.flatCollections.length===1){let l=t.flatCollections[0];return {targets:[qH(l,r,n)],isMarketplace:false}}return t.flatCollections.length>1?nne(e):{targets:[],isMarketplace:false}}s(ZH,"selectInstallCandidates");function rne(e){let{layout:t,sourceName:r,sourceForYaml:n}=e;if(e.all)return {targets:t.subPacks.map(a=>XH(a,r,n)),isMarketplace:true};if(e.force||!e.tty){let a=t.subPacks.map(l=>({path:l.path,features:QH(l.layout)})).map(l=>` - ${l.path} (${l.features.join(", ")})`).join(`
|
|
429
429
|
`);throw new Error(`Marketplace source with ${t.subPacks.length} sub-packs. Pass --all to install all, or use --path <subpath>:
|
|
430
|
-
${a}`)}return {targets:t.subPacks.map(i=>
|
|
430
|
+
${a}`)}return {targets:t.subPacks.map(i=>XH(i,r,n)),isMarketplace:true}}s(rne,"selectMarketplace");function nne(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(`
|
|
431
431
|
`);throw new Error(`Ambiguous source with ${t.flatCollections.length} resource collections. Pass --as <kind> to select, or --path <subpath>:
|
|
432
|
-
${i}`)}return {targets:t.flatCollections.map(i=>
|
|
432
|
+
${i}`)}return {targets:t.flatCollections.map(i=>qH(i,r,n)),isMarketplace:false}}s(nne,"selectMultipleCollections");sn();Jk();function Zm(e){return e==="."||e===""?void 0:e}s(Zm,"trimDot");function sne(e,t){let r=basename(t).replace(/\.md$/i,"");return e==="agents"?{agents:[r]}:e==="commands"?{commands:[r]}:{rules:[r]}}s(sne,"markdownPick");async function tz(e){if(!e.as)return {pathInRepo:Zm(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:Zm(dirname(t)),pick:sne(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:Zm(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 Rh(o);return {pathInRepo:Zm(dirname(n)),pick:{skills:[a||basename(n)]}}}}catch{return {pathInRepo:Zm(t)}}}}return {pathInRepo:Zm(t)}}s(tz,"resolveManualInstallPersistence");Jo();ue();ue();async function ep(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 Xo(t==="global"?{global:!0}:{},r,{printMatrix:!1});Mm(i),i.exitCode!==0&&S.warn(`Generate failed after ${e}. ${n}; run agentsmesh generate${o}.`);}catch(i){let a=i instanceof Error?i.message:String(i);S.warn(`Generate failed after ${e}: ${a}`),S.warn(`${n}; run agentsmesh generate${o} after resolving the issue.`);}}s(ep,"runPostOperationGenerate");async function qo(e){return process.stdin.isTTY?new Promise(t=>{let r=rz.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(qo,"confirm");function ine(e){return !!(e.skills.length||e.rules.length||e.commands.length||e.agents.length)}s(ine,"hasArrayResources");function nz(e){return ine(e)||e.mcp!==null||e.permissions!==null||e.hooks!==null||e.ignore.length>0}s(nz,"hasInstallableResources");async function oz(e,t,r,n){let o=e.skills.map(l=>iH(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 qo(`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(oz,"resolveSkillPool");async function sz(e,t,r,n){let o=e.rules.map(l=>aH(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 qo(`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(sz,"resolveRulePool");async function iz(e,t,r,n){let o=e.commands.map(l=>lH(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 qo(`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(iz,"resolveCommandPool");async function az(e,t,r,n){let o=e.agents.map(l=>cH(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 qo(`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(az,"resolveAgentPool");async function lz(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 qo(`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 qo(`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 qo(`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 qo(`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(lz,"resolveInstallConflicts");function cz(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(cz,"pickForSelectedResources");function ane(e,t){let r=e.split("/").filter(Boolean);return r.length>0&&r[r.length-1]===t}s(ane,"pathEndsWithName");function Oy(e,t,r){return r!==1||t.length!==1?false:ane(e,t[0])}s(Oy,"inferSingleNamePick");function mz(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||Oy(t,o.skillNames,n.skills)),l=o.ruleSlugs.length>0&&(!!r?.rules?.length||o.ruleSlugs.length<n.rules||Oy(t,o.ruleSlugs,n.rules)),c=o.commandNames.length>0&&(!!r?.commands?.length||o.commandNames.length<n.commands||Oy(t,o.commandNames,n.commands)),m=o.agentNames.length>0&&(!!r?.agents?.length||o.agentNames.length<n.agents||Oy(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(mz,"buildInstallPick");function pz(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(pz,"deriveInstallFeatures");function lne(e){return e.skillNames.length===0&&e.ruleSlugs.length===0&&e.commandNames.length===0&&e.agentNames.length===0}s(lne,"isEmptyInstallSelection");function uz(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(lne(t)&&!a)throw new Error("No resources selected to install.")}s(uz,"ensureInstallSelection");rs();function dz(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(dz,"assertExtendNameAvailable");function cne(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(cne,"mergePick");function fz(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=cne(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(fz,"mergeExtendList");b();async function gz(e,t,r){let n=await I(e);if(n===null)throw new Error(`Missing config: ${e}`);let o=parse(n),i=fz(t.extends,r);o.extends=i;let a=stringify(o,{indent:2,lineWidth:0});await L(e,a.endsWith(`
|
|
433
433
|
`)?a:`${a}
|
|
434
|
-
`);}s(
|
|
435
|
-
${JSON.stringify(i,null,2)}`);return}let a=join(t,"agentsmesh.yaml");await
|
|
436
|
-
`);return `sha256:${
|
|
434
|
+
`);}s(gz,"writeAgentsmeshWithNewExtend");ue();async function hz(e){let{configDir:t,config:r,entryArgs:n,dryRun:o}=e,i=dne(n);if(dz(r.extends,i),o){S.info(`[dry-run] Would add extend:
|
|
435
|
+
${JSON.stringify(i,null,2)}`);return}let a=join(t,"agentsmesh.yaml");await gz(a,r,i),S.success(`Wrote extends entry "${i.name}" to agentsmesh.yaml.`);}s(hz,"writeInstallAsExtend");function dne(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?Or.parse(e.yamlTarget):void 0,as:e.as}}s(dne,"toNewExtendEntry");b();ue();b();var gne="pack.yaml";async function wy(e){let t=await B(e),r=[];for(let i of t.sort()){let a=relative(e,i).replace(/\\/g,"/");if(a===gne)continue;let l=await Ah(i);l!==null&&r.push(`${a}:${l}`);}let n=r.join(`
|
|
436
|
+
`);return `sha256:${bh(n)}`}s(wy,"hashPackContent");b();var Lr=".agentsmesh-install-manifest.json",yne=["pack.yaml",Lr];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 _ne(e,t){return relative(e,t).replaceAll("\\","/")}s(_ne,"toForwardSlashRelative");async function by(e){let t=await B(e),r=[];for(let n of t){let o=_ne(e,n);if(yne.includes(o))continue;let i=await Th(n);i!==null&&r.push([o,`sha256:${i}`]);}return r.sort(([n],[o])=>n.localeCompare(o)),Object.fromEntries(r)}s(by,"hashPackFiles");b();var Sne=/spdx-license-identifier:\s*([A-Za-z0-9.+-]+)/i,Rne=[{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 yz(e){if(e.trim().length===0)return null;let t=Sne.exec(e);if(t)return t[1]??null;for(let{id:r,pattern:n}of Rne)if(n.test(e))return r;return null}s(yz,"detectSpdxLicense");var kne=["LICENSE","COPYING","NOTICE","COPYRIGHT"],Lne=["",".md",".txt",".rst"];async function _z(e){for(let t of kne)for(let r of Lne){let n=await I(join(e,`${t}${r}`));if(n===null)continue;let o=yz(n);if(o!==null)return o}return null}s(_z,"detectLicenseInPackDir");async function One(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(One,"writeRules");async function wne(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(wne,"writeCommands");async function bne(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(bne,"writeAgents");async function Ane(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(Ane,"writeSkills");async function Tne(e,t){for(let r of e)await copyFile(r.absolutePath,join(t,r.relativePath));}s(Tne,"writePreservedRootFiles");async function xne(e,t){e.mcp!==null&&await L(join(t,"mcp.json"),`${JSON.stringify(e.mcp,null,2)}
|
|
437
437
|
`),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(`
|
|
438
438
|
`)}
|
|
439
|
-
`);}s(
|
|
440
|
-
`);}s(
|
|
439
|
+
`);}s(xne,"writeSettings");function Pne(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(Pne,"validatePackName");async function Dne(e,t,r){let n=await by(e),o=gW({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,Lr),`${JSON.stringify(o,null,2)}
|
|
440
|
+
`);}s(Dne,"writeInstallManifest");async function Sz(e,t,r,n,o={},i=[]){Pne(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 One(r,a),await wne(r,a),await bne(r,a),await Ane(r,a),await xne(r,a),await Tne(i,a);let u=await wy(a),f=await _z(a);m=Ca({...n,content_hash:u,license:f}),await L(join(a,"pack.yaml"),Xl(stringify(m),"pack")),await Dne(a,m,o),await mkdir(e,{recursive:!0}),await j(c)&&(await rename(c,l),p=!0);try{await rename(a,c);}catch(g){throw p&&(await rename(l,c).catch(h=>{let y=h instanceof Error?h.message:String(h);S.warn(`Failed to restore the previous pack after a failed atomic swap; the prior contents remain at "${l}". Recover them manually. (${y})`);}),p=!1),g}}catch(u){throw await rm$1(a,{recursive:true,force:true}).catch(()=>{}),u}return p&&await rm$1(l,{recursive:true,force:true}).catch(()=>{}),m}s(Sz,"materializePack");xm();b();function LC(e,t){return [...new Set([...e,...t])]}s(LC,"union");function vne(e,t){if(e.path===void 0&&e.paths===void 0||t===void 0)return {path:void 0,paths:void 0};let n=LC(e.paths??(e.path?[e.path]:[]),[t]);return n.length===1?{path:n[0],paths:void 0}:{path:void 0,paths:n}}s(vne,"mergePathScope");function Fne(e,t,r){let n={...e};for(let i of t)r&&r[i]!==void 0?n[i]=LC(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(Fne,"mergePick");async function Mne(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(Mne,"mergeRules");async function Gne(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(Gne,"mergeCommands");async function $ne(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($ne,"mergeAgents");async function jne(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(jne,"mergeSkills");async function Une(e,t){for(let r of e)await copyFile(r.absolutePath,join(t,r.relativePath));}s(Une,"mergePreservedRootFiles");async function Bne(e,t){e.mcp!==null&&await L(join(t,"mcp.json"),`${JSON.stringify(e.mcp,null,2)}
|
|
441
441
|
`),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(`
|
|
442
442
|
`)}
|
|
443
|
-
`);}s(Mne,"mergeSettings");async function gz(e,t,r,n,o,i,a=[]){await Pne(r,e),await Dne(r,e),await Nne(r,e),await vne(r,e),await Mne(r,e),await Fne(a,e);let l=IC(t.features,n),c=xne(t.pick,n,o),m=Tne(t,i?.path),p=await Cy(e),u=new Date().toISOString(),f=Ca({...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"),Xl(stringify(f),"pack")),f}s(gz,"mergeIntoPack");L_();ss();async function hz(e){let t=[];try{let r=await readdir(e,{withFileTypes:!0});for(let n of r)n.isFile()&&rf(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(hz,"collectPreservedRootFiles");rs();fe();rs();b();Lh();function Une(e){return e.toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}s(Une,"sanitize");function Bne(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(Bne,"gitUrlLastSegments");function yz(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=Bne(e.gitRemoteUrl):n="extend";t.featureHint?n=`${n}-${t.featureHint}`:n=`${n}-pack`;let o=Une(n)||"extend";if(!r.has(o))return o;let i=2;for(;r.has(`${o}-${i}`);)i++;return `${o}-${i}`}s(yz,"suggestExtendName");function _z(e){let{config:t,parsed:r,entryFeatures:n,nameOverride:o}=e,i=new Set(t.extends.map(a=>a.name));return o||yz(r,{featureHint:n.length===1?n[0]:void 0},i)}s(_z,"selectInstallEntryName");function Sz(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(Sz,"canonicalRemoteIdentity");function Kne(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?Sz(e.gitRemoteUrl):null}s(Kne,"parsedSourceIdentity");function Rz(e,t){let r=Kne(t);if(r===null)return null;for(let n of e){let o=Sz(n.source);if(o!==null&&o===r)return n.name}return null}s(Rz,"findExistingInstallName");function kC(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(kC,"sameFeatureSet");function Iz(e){let{manifest:t,parsed:r,entryFeatures:n,yamlTarget:o,explicitAs:i}=e,a=Rz(t,r);if(a===null)return null;let l=t.find(c=>c.name===a);return l.target!==o||l.as!==i||!kC(l.features,n)?null:l.name}s(Iz,"pickReuseEntryName");var zne=s(e=>!e.includes("/")&&!e.includes("\\")&&!e.includes("\0")&&e!=="."&&e!=="..","isSafeInstallName"),Lz=z$1.object({name:z$1.string().min(1).refine(zne,{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(uc).min(1),pick:_p.optional(),target:Or.optional(),path:z$1.string().optional(),paths:z$1.array(z$1.string().min(1)).min(1).optional(),as:Tm.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()}),Vne=z$1.object({version:z$1.literal(1),installs:z$1.array(Lz).default([])});function Jne(e,t){return e.source===t.source&&e.target===t.target&&e.as===t.as&&kC(e.features,t.features)}s(Jne,"sameInstallIdentity");function LC(e){return join(e,"installs.yaml")}s(LC,"manifestPath");async function Zt(e){let t=await I(LC(e));if(t===null)return [];try{return Vne.parse(parse(t)).installs.map(r=>Ca(r))}catch{return []}}s(Zt,"readInstallManifest");async function wy(e,t){let r=Ca(t),o=(await Zt(e)).filter(i=>i.name!==r.name&&!Jne(i,r));o.push(r),await L(LC(e),Xl(stringify({version:1,installs:o.sort((i,a)=>i.name.localeCompare(a.name))}),"installs"));}s(wy,"upsertInstallManifestEntry");async function Cz(e,t){let r=await Zt(e),n=r.filter(o=>o.name!==t);return n.length===r.length?false:(await L(LC(e),Xl(stringify({version:1,installs:n.sort((o,i)=>o.name.localeCompare(i.name))}),"installs")),true)}s(Cz,"removeInstallManifestEntry");function Ez(e){return Ca(Lz.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(Ez,"buildInstallManifestEntry");b();function Xne(e){return e?{path:e,paths:void 0}:{path:void 0,paths:void 0}}s(Xne,"pathScope");function Qne(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(Qne,"applySelection");async function Oz(e){let{canonicalDir:t,packName:r,narrowed:n,selected:o,sourceForYaml:i,version:a,sourceKind:l,entryFeatures:c,pick:m,yamlTarget:p,pathInRepo:u,manualAs:f,renameExistingPack:g,sourceType:h,contentRoot:y,forceFreshMaterialize:_,originalRef:R,acceptedElevated:k}=e,w=join(t,"packs"),D=Qne(n,o),N=y?await hz(y):[],K=new Date().toISOString(),J=p!==void 0?Or.parse(p):void 0,ee=_?null:await GU(w,i,{target:J,as:f,features:c}),se=r,$=c,re=m,Pe=u,Tt;if(ee){let be=ee.packDir,et=ee.meta;if(g&&ee.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(ee.packDir,_t),be=_t,et={...ee.meta,name:r};}let lt=await gz(be,et,D,c,m,{source:i,...a!==void 0?{version:a}:{},...J!==void 0?{target:J}:{},...u?{path:u}:{},...f!==void 0?{as:f}:{}},N);se=lt.name,$=lt.features,re=lt.pick,Pe=lt.path,Tt=lt.paths,S.success(`Updated pack "${lt.name}" in .agentsmesh/packs/.`);}else {if(!_&&await Sa(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 fz(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},...J!==void 0&&{target:J},...Xne(u),...f!==void 0&&{as:f}},h!==void 0?{source_type:h}:{},N),S.success(`Installed pack "${r}" to .agentsmesh/packs/.`);}await wy(t,Ez({name:se,source:i,version:a,sourceKind:l,features:$,pick:re,target:J,path:Pe,paths:Tt,as:f,originalRef:R,acceptedElevated:k})),l!=="local"&&await dO(i);}s(Oz,"installAsPack");function wz(e,t,r){if(!r?.features&&!r?.pick)return {narrowed:e,discoveredFeatures:t};let n=Qm(e,{scopedFeatures:r.features,implicitPick:r.pick});return {narrowed:n,discoveredFeatures:Yn(n)}}s(wz,"applyReplayInstallScope");function bz(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(bz,"buildInstalledList");function Az(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(Az,"buildSkippedList");function Tz(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(Tz,"stripUntrustedElevatedArtifacts");var qne=["hooks","permissions","mcp"];function xz(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(xz,"resolveElevatedConsent");function Pz(e,t){let r={hooks:t.acceptHooks,permissions:t.acceptPermissions,mcp:t.acceptMcp},n=qne.filter(o=>e[o]!==null&&r[o]);return n.length>0?n:void 0}s(Pz,"consentedArtifactsForManifest");function Dz(e,t){return t?.originalRef!==void 0&&t.originalRef!==""?t.originalRef:e.rawRef!==""?e.rawRef:void 0}s(Dz,"resolveOriginalRef");function Nz(e,t){if(t.length===0)return e;let r=new Set(t);return e.filter(n=>!r.has(n))}s(Nz,"featuresAfterStrip");async function vz(e){let{scope:t,force:r,dryRun:n,tty:o,useExtends:i,forceFreshMaterialize:a,nameOverride:l,explicitAs:c}=e,{config:m,context:p,parsed:u,sourceForYaml:f,version:g,pathInRepo:h,contentRoot:y,persisted:_}=e,{replay:R,prep:k,implicitPick:w,narrowed:D,discoveredFeatures:N,sourceType:K}=e,J=xz({acceptHooks:e.acceptHooks,acceptPermissions:e.acceptPermissions,acceptMcp:e.acceptMcp},R),ee=Tz(D,{sourceKind:u.kind,...J});ee.stripped.length>0&&S.warn(`[agentsmesh] Stripped ${ee.stripped.join(", ")} from untrusted ${u.kind} source.
|
|
443
|
+
`);}s(Bne,"mergeSettings");async function Rz(e,t,r,n,o,i,a=[]){await Mne(r,e),await Gne(r,e),await $ne(r,e),await jne(r,e),await Bne(r,e),await Une(a,e);let l=LC(t.features,n),c=Fne(t.pick,n,o),m=vne(t,i?.path),p=await wy(e),u=new Date().toISOString(),f=Ca({...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"),Xl(stringify(f),"pack")),f}s(Rz,"mergeIntoPack");O_();ss();async function Iz(e){let t=[];try{let r=await readdir(e,{withFileTypes:!0});for(let n of r)n.isFile()&&nf(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(Iz,"collectPreservedRootFiles");rs();ue();rs();b();Eh();function zne(e){return e.toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}s(zne,"sanitize");function Vne(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(Vne,"gitUrlLastSegments");function kz(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=Vne(e.gitRemoteUrl):n="extend";t.featureHint?n=`${n}-${t.featureHint}`:n=`${n}-pack`;let o=zne(n)||"extend";if(!r.has(o))return o;let i=2;for(;r.has(`${o}-${i}`);)i++;return `${o}-${i}`}s(kz,"suggestExtendName");function Lz(e){let{config:t,parsed:r,entryFeatures:n,nameOverride:o}=e,i=new Set(t.extends.map(a=>a.name));return o||kz(r,{featureHint:n.length===1?n[0]:void 0},i)}s(Lz,"selectInstallEntryName");function Cz(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(Cz,"canonicalRemoteIdentity");function Jne(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?Cz(e.gitRemoteUrl):null}s(Jne,"parsedSourceIdentity");function Ez(e,t){let r=Jne(t);if(r===null)return null;for(let n of e){let o=Cz(n.source);if(o!==null&&o===r)return n.name}return null}s(Ez,"findExistingInstallName");function CC(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(CC,"sameFeatureSet");function Oz(e){let{manifest:t,parsed:r,entryFeatures:n,yamlTarget:o,explicitAs:i}=e,a=Ez(t,r);if(a===null)return null;let l=t.find(c=>c.name===a);return l.target!==o||l.as!==i||!CC(l.features,n)?null:l.name}s(Oz,"pickReuseEntryName");var Qne=s(e=>!e.includes("/")&&!e.includes("\\")&&!e.includes("\0")&&e!=="."&&e!=="..","isSafeInstallName"),bz=z$1.object({name:z$1.string().min(1).refine(Qne,{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(uc).min(1),pick:_p.optional(),target:Or.optional(),path:z$1.string().optional(),paths:z$1.array(z$1.string().min(1)).min(1).optional(),as:Tm.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()}),qne=z$1.object({version:z$1.literal(1),installs:z$1.array(bz).default([])});function Zne(e,t){return e.source===t.source&&e.target===t.target&&e.as===t.as&&CC(e.features,t.features)}s(Zne,"sameInstallIdentity");function EC(e){return join(e,"installs.yaml")}s(EC,"manifestPath");async function Zt(e){let t=await I(EC(e));if(t===null)return [];try{return qne.parse(parse(t)).installs.map(r=>Ca(r))}catch{return []}}s(Zt,"readInstallManifest");async function Ty(e,t){let r=Ca(t),o=(await Zt(e)).filter(i=>i.name!==r.name&&!Zne(i,r));o.push(r),await L(EC(e),Xl(stringify({version:1,installs:o.sort((i,a)=>i.name.localeCompare(a.name))}),"installs"));}s(Ty,"upsertInstallManifestEntry");async function Az(e,t){let r=await Zt(e),n=r.filter(o=>o.name!==t);return n.length===r.length?false:(await L(EC(e),Xl(stringify({version:1,installs:n.sort((o,i)=>o.name.localeCompare(i.name))}),"installs")),true)}s(Az,"removeInstallManifestEntry");function Tz(e){return Ca(bz.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(Tz,"buildInstallManifestEntry");b();function toe(e){return e?{path:e,paths:void 0}:{path:void 0,paths:void 0}}s(toe,"pathScope");function roe(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(roe,"applySelection");async function xz(e){let{canonicalDir:t,packName:r,narrowed:n,selected:o,sourceForYaml:i,version:a,sourceKind:l,entryFeatures:c,pick:m,yamlTarget:p,pathInRepo:u,manualAs:f,renameExistingPack:g,sourceType:h,contentRoot:y,forceFreshMaterialize:_,originalRef:R,acceptedElevated:k}=e,w=join(t,"packs"),D=roe(n,o),N=y?await Iz(y):[],K=new Date().toISOString(),J=p!==void 0?Or.parse(p):void 0,ee=_?null:await BU(w,i,{target:J,as:f,features:c}),se=r,$=c,re=m,Pe=u,Tt;if(ee){let be=ee.packDir,et=ee.meta;if(g&&ee.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(ee.packDir,_t),be=_t,et={...ee.meta,name:r};}let lt=await Rz(be,et,D,c,m,{source:i,...a!==void 0?{version:a}:{},...J!==void 0?{target:J}:{},...u?{path:u}:{},...f!==void 0?{as:f}:{}},N);se=lt.name,$=lt.features,re=lt.pick,Pe=lt.path,Tt=lt.paths,S.success(`Updated pack "${lt.name}" in .agentsmesh/packs/.`);}else {if(!_&&await Sa(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 Sz(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},...J!==void 0&&{target:J},...toe(u),...f!==void 0&&{as:f}},h!==void 0?{source_type:h}:{},N),S.success(`Installed pack "${r}" to .agentsmesh/packs/.`);}await Ty(t,Tz({name:se,source:i,version:a,sourceKind:l,features:$,pick:re,target:J,path:Pe,paths:Tt,as:f,originalRef:R,acceptedElevated:k})),l!=="local"&&await gO(i);}s(xz,"installAsPack");function Pz(e,t,r){if(!r?.features&&!r?.pick)return {narrowed:e,discoveredFeatures:t};let n=Qm(e,{scopedFeatures:r.features,implicitPick:r.pick});return {narrowed:n,discoveredFeatures:Yn(n)}}s(Pz,"applyReplayInstallScope");function Dz(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(Dz,"buildInstalledList");function Nz(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(Nz,"buildSkippedList");rL();var noe=["hooks","permissions","mcp"];function vz(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(vz,"resolveElevatedConsent");function Fz(e,t){let r={hooks:t.acceptHooks,permissions:t.acceptPermissions,mcp:t.acceptMcp},n=noe.filter(o=>e[o]!==null&&r[o]);return n.length>0?n:void 0}s(Fz,"consentedArtifactsForManifest");function Mz(e,t){return t?.originalRef!==void 0&&t.originalRef!==""?t.originalRef:e.rawRef!==""?e.rawRef:void 0}s(Mz,"resolveOriginalRef");function Gz(e,t){if(t.length===0)return e;let r=new Set(t);return e.filter(n=>!r.has(n))}s(Gz,"featuresAfterStrip");async function $z(e){let{scope:t,force:r,dryRun:n,tty:o,useExtends:i,forceFreshMaterialize:a,nameOverride:l,explicitAs:c}=e,{config:m,context:p,parsed:u,sourceForYaml:f,version:g,pathInRepo:h,contentRoot:y,persisted:_}=e,{replay:R,prep:k,implicitPick:w,narrowed:D,discoveredFeatures:N,sourceType:K}=e,J=vz({acceptHooks:e.acceptHooks,acceptPermissions:e.acceptPermissions,acceptMcp:e.acceptMcp},R),ee=Ch(D,{sourceKind:u.kind,...J});ee.stripped.length>0&&S.warn(`[agentsmesh] Stripped ${ee.stripped.join(", ")} from untrusted ${u.kind} source.
|
|
444
444
|
These artifacts control your tool settings (shell hooks, granted permissions, MCP launch specs).
|
|
445
|
-
To accept them explicitly, re-run with: ${ee.stripped.map(Zo=>`--accept-${Zo}`).join(" ")} (or --accept-elevated for all three).`);let{narrowed:se,discoveredFeatures:$}=
|
|
445
|
+
To accept them explicitly, re-run with: ${ee.stripped.map(Zo=>`--accept-${Zo}`).join(" ")} (or --accept-elevated for all three).`);let{narrowed:se,discoveredFeatures:$}=Pz(ee.canonical,Gz(N,ee.stripped),R);if(!nz(se))throw new Error(w||k.scopedFeatures?"No resources match the install path or implicit selection (check pick names exist at that path).":"No supported resources found to install (skills, rules, commands, agents).");let re=await oz(se,r,n,o),Pe=await sz(se,r,n,o),Tt=await iz(se,r,n,o),be=await az(se,r,n,o),et={skills:re.length,rules:Pe.length,commands:Tt.length,agents:be.length},{canonical:lt}=await $t(m,p.configDir,{},p.canonicalDir),_t=!r&&!n&&o?await lz(lt,{skills:re,rules:Pe,commands:Tt,agents:be}):{skillNames:re.map(Zo=>Zo.name),ruleSlugs:Pe.map(Zo=>yt(Zo)),commandNames:Tt.map(Zo=>Zo.name),agentNames:be.map(Zo=>Zo.name)};uz({selected:_t,discoveredFeatures:$,preConflict:et});let Ii=R?.features??pz($,_t);if(Ii.length===0)throw new Error("No features left to install after selection.");let i_=cz(R?.pick,_t)??_.pick??mz({pathInRepo:_.pathInRepo??h,implicitPick:w,preConflictCounts:et,selected:_t}),OE=await Zt(p.canonicalDir),pp=Oz({manifest:OE,parsed:u,entryFeatures:Ii,yamlTarget:k.yamlTarget,explicitAs:c}),up=Lz({config:m,parsed:u,entryFeatures:Ii,nameOverride:l||pp||""}),dp=Dz(_t,up),a_=Nz(re,Pe,Tt,be,_t),hJ=Mz(u,R),yJ=Fz(se,J);if(i){if(await hz({configDir:p.configDir,config:m,entryArgs:{name:up,source:f,version:g,features:Ii,path:_.pathInRepo,pick:i_,yamlTarget:k.yamlTarget,as:c},dryRun:n}),n)return {installed:dp,skipped:a_}}else {if(n)return S.info(`[dry-run] Would install pack "${up}" to ${t==="global"?"~/.agentsmesh/packs/.":".agentsmesh/packs/."}`),{installed:dp,skipped:a_};await xz({canonicalDir:p.canonicalDir,packName:up,narrowed:se,selected:_t,sourceForYaml:f,version:g,sourceKind:u.kind,entryFeatures:Ii,pick:i_,yamlTarget:k.yamlTarget,pathInRepo:_.pathInRepo,manualAs:c,renameExistingPack:l===""&&pp===null,sourceType:K,contentRoot:y,forceFreshMaterialize:a,originalRef:hJ,acceptedElevated:yJ});}return await ep("install",t,p.rootBase),{installed:dp,skipped:a_}}s($z,"executeRunInstallPoolsAndWrite");function np(e,t){let r=t?.input??process.stdin,n=t?.output??process.stdout;return new Promise(o=>{let i=rz.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(np,"readLine");function Uz(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(`
|
|
446
446
|
`)}
|
|
447
|
-
`);}s(
|
|
447
|
+
`);}s(Uz,"writeBanner");async function Bz(e,t,r){let n=[];for(let o of e){if(o.resolved.length===0)continue;if(t.bypass){Uz(r,o),n.push({entityKind:o.entityKind,entityName:o.entityName,action:"leave-with-warnings"});continue}Uz(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(Bz,"runBrokenLinkPrompt");var wC=["skills","agents","commands","rules"],bC={skills:"skill",agents:"agent",commands:"command",rules:"rule"},Hz={skills:"skills",agents:"agents",commands:"commands",rules:"rules"};function ql(e){return {skills:[],agents:[],commands:[],rules:[],aborted:e}}s(ql,"emptySelection");function Kz(e){return {skills:[...e.skills],agents:[...e.agents],commands:[...e.commands],rules:[...e.rules],aborted:false}}s(Kz,"selectAll");function Wz(e,t,r){let n=[`Found in ${t}:`];for(let o of wC){let i=r[o];if(i.length===0)continue;let a=i.length===1?bC[o]:Hz[o];n.push(` - ${i.length} ${a}`);}n.push(""),e.write(`${n.join(`
|
|
448
448
|
`)}
|
|
449
|
-
`);}s(
|
|
449
|
+
`);}s(Wz,"writeBanner");async function ooe(e,t,r){if(r.length===0)return {selected:[],aborted:false};let n=Hz[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=bC[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(ooe,"walkType");function soe(e){let t=null;for(let r of wC)for(let n of e[r]){if(t!==null)return null;t={kind:r,id:n};}return t}s(soe,"findSingleEntity");async function ioe(e,t){let r=bC[t.kind],n=(await e.ask(`Install ${r} "${t.id}"? [y/N] `)).trim().toLowerCase();return n==="y"?{...ql(false),[t.kind]:[t.id]}:ql(!(n===""||n==="n"))}s(ioe,"runSingleEntityPrompt");async function zz(e,t,r){if(t.bypass)return Kz(e);let n=e.skills.length+e.agents.length+e.commands.length+e.rules.length;if(n===0)return ql(false);if(n===1){let a=soe(e);if(a!==null)return Wz(r,t.packName,e),ioe(r,a)}Wz(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 Kz(e);if(o==="n")return ql(false);if(o!=="s")return ql(true);let i={skills:[],agents:[],commands:[],rules:[]};for(let a of wC){let{selected:l,aborted:c}=await ooe(r,a,e[a]);if(c)return ql(true);i[a]=l;}return {...i,aborted:false}}s(zz,"runBulkPrompt");ue();function moe(e,t,r){let n=[];for(let o of Cy(e))o.destination===t&&n.push({offset:o.destinationOffset,length:o.destinationLength,replacement:r});return n}s(moe,"buildLinkRewrites");function Jz(e,t,r){e.warn(`Broken link in ${t.entityKind} "${t.entityName}": ${r.link.path} (${r.classification})`);}s(Jz,"warnLink");function poe(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(poe,"allocateSupportingFileNames");function Vz(e,t,r){return e.find(n=>n.entityKind===t&&n.entityName===r)}s(Vz,"findEntity");async function uoe(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(uoe,"buildSupportingFiles");async function doe(e,t,r,n){let o=r.resolved.filter(p=>p.classification==="resolvable-outside"),i=poe(o),a=await uoe(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(...moe(t.body,p.link.raw,f));}else Jz(n,r,p);let m=jH(t.body,l);return {...t,body:m,supportingFiles:a}}s(doe,"applySkillDecision");async function Yz(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)?Vz(r.brokenLinks,"skill",l.name):void 0;a.push(c?await doe(t,l,c,o):l);}for(let l of n){if(l.entityKind==="skill"&&l.action==="include-resolvable")continue;let c=Vz(r.brokenLinks,l.entityKind,l.entityName);if(c)for(let m of c.resolved)Jz(o,c,m);}return {...r,skills:a}}s(Yz,"applyBrokenLinkDecisions");var op=class extends Error{static{s(this,"InstallAbortError");}aborted=true;constructor(t){super(t),this.name="InstallAbortError";}};function goe(){return {ask:s(e=>np(e),"ask"),write:s(e=>process.stdout.write(e),"write")}}s(goe,"defaultAdapter");function hoe(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(hoe,"bulkCandidatesFrom");function Xz(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(Xz,"filterCanonical");function yoe(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(yoe,"discoveredFeaturesOf");async function _oe(e){let t=e.adapter??goe(),r=await Bz(e.aggregate.brokenLinks,{bypass:e.bypass},t);if(r.aborted)throw new op("User aborted at broken-link prompt.");let n=[...r.decisions],o=await Yz({contentRoot:e.contentRoot,aggregate:e.aggregate,decisions:n,logger:S}),i=hoe(o);if(i.skills.length+i.agents.length+i.commands.length+i.rules.length===0)return {aggregate:o,narrowed:Xz(o,{skills:[],agents:[],commands:[],rules:[]}),discoveredFeatures:[]};let l=await zz(i,{packName:e.displayName,bypass:e.bypass},t);if(l.aborted)throw new op("User aborted at bulk-select prompt.");let c=Xz(o,l);return {aggregate:o,narrowed:c,discoveredFeatures:yoe(c)}}s(_oe,"runSkillPackPromptFlow");function Soe(e){return basename(e)||"install source"}s(Soe,"displayNameForContentRoot");async function Qz(e){if(!e.discovery.aggregate)return {aborted:false};try{let t=await _oe({contentRoot:e.contentRoot,aggregate:e.discovery.aggregate,narrowed:e.discovery.narrowed,bypass:e.bypass,displayName:Soe(e.contentRoot)});return {aborted:!1,narrowed:t.narrowed,discoveredFeatures:t.discoveredFeatures}}catch(t){if(t instanceof op)return S.warn(t.message),{aborted:true};throw t}}s(Qz,"runPromptFlowWithAbort");async function qz(e){let{discovery:t,installReport:r,persisted:n,parsed:o,sourceForYaml:i,version:a,pathInRepo:l,contentRoot:c,config:m,context:p,dryRun:u,force:f,useExtends:g,forceFreshMaterialize:h,explicitAs:y,nameOverride:_,acceptHooks:R,acceptPermissions:k,acceptMcp:w,scope:D,sourceArg:N,replay:K}=e,J=process.stdin.isTTY,{prep:ee,implicitPick:se}=t,{narrowed:$,discoveredFeatures:re}=t;try{let Pe=await Qz({discovery:t,contentRoot:c,bypass:f||u||!J});if(Pe.aborted)return {exitCode:130,data:{source:N,mode:"install",installed:[],skipped:[],dryRun:u}};if($=Pe.narrowed??$,re=Pe.discoveredFeatures??re,re.length===0&&r.brokenResources.length>0){let be=r.brokenResources.map(et=>` - ${et.path}: ${et.reason}`).join(`
|
|
450
450
|
`);throw new Error(`No installable resources after skipping invalid files (${r.brokenResources.length}):
|
|
451
451
|
${be}
|
|
452
|
-
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 Tt=await
|
|
453
|
-
`),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(
|
|
452
|
+
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 Tt=await $z({scope:D,force:f,dryRun:u,tty:J,useExtends:g,forceFreshMaterialize:h,nameOverride:_,explicitAs:y,acceptHooks:R,acceptPermissions:k,acceptMcp:w,config:m,context:p,parsed:o,sourceForYaml:i,version:a,pathInRepo:l,contentRoot:c,persisted:n,replay:K,prep:ee,implicitPick:se,narrowed:$,discoveredFeatures:re,sourceType:t.layout?JH(t.layout):void 0});return {exitCode:0,data:{source:N,mode:"install",installed:Tt.installed,skipped:Tt.skipped,dryRun:u,...r.brokenResources.length>0?{brokenResources:r.brokenResources}:{}}}}finally{ee.cleanup&&await ee.cleanup();}}s(qz,"runSinglePackInstall");async function Zz(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(Zz,"runInstallMarketplace");async function e1(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 Zz(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(e1,"routePickerResult");tt();b();ue();async function Ioe(e){let t=await Zt(e.canonicalDir);if(t.length===0){S.info("No recorded installs found in .agentsmesh/installs.yaml.");return}let r=[];for(let n of t){let o=join(e.canonicalDir,"packs",n.name);await j(o)||r.push(n);}if(r.length===0){S.info("All recorded packs are already installed.");return}for(let n of r)await e.reinstall(n);S.success(`Reinstalled ${r.length} pack(s) from .agentsmesh/installs.yaml.`);}s(Ioe,"syncInstalledPacks");async function t1(e){return e.sync?(await Ioe({canonicalDir:e.canonicalDir,reinstall:e.reinstall}),true):false}s(t1,"maybeRunInstallSync");async function r1(e){let{projectRoot:t,sync:r,dryRun:n,force:o,scope:i,recurseInstall:a}=e;if(!r)return;let{context:l}=await _e(t,i),c=[],m=[];if(await t1({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(r1,"handleSync");function n1(){return {brokenResources:[],subPackFailures:[]}}s(n1,"createInstallReport");function Coe(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(Coe,"assertPathStaysInRepo");async function o1(e){let t=await r1(e);if(t)return t;let{projectRoot:r,replay:n,dryRun:o,force:i,useExtends:a,all:l,forceFreshMaterialize:c,explicitPath:m,explicitTarget:p,explicitAs:u,nameOverride:f,acceptHooks:g,acceptPermissions:h,acceptMcp:y,scope:_,sourceArg:R}=e;if(!R)throw new Error("Missing source. Usage: agentsmesh install <source> [--path ...] [--target ...]");let k=process.stdin.isTTY;if(!k&&!i&&!o)throw new Error("Non-interactive terminal: use --force or --dry-run for agentsmesh install.");let{config:w,context:D}=await _e(r,_);await ze(w,r);let N=await cC(R,D.configDir,m);if(N.kind!=="local"&&!await tH())throw new Error("git is required for remote installs. Please install git and try again.");let{resolvedPath:K,sourceForYaml:J,version:ee}=await nH(N,R),se=N.pathInRepo.replaceAll("\\","/").replace(/^\/+|\/+$/g,"");Coe(se,N.pathInRepo);let $=se?join(K,se):K;if(!await j($))throw new Error(`Install path does not exist: ${$}`);let re=await tz({as:u,contentRoot:$,pathInRepo:se}),Pe=n1(),Tt={onParseError:s((et,lt)=>{Pe.brokenResources.push({path:lt,kind:"frontmatter",reason:et.message});},"onParseError")},be=await YH({resolvedPath:K,contentRoot:$,pathInRepo:se,explicitTarget:p,explicitAs:u,replayPick:n?.pick,parseOpts:Tt});if(be.layout&&!u&&!p&&!m){let et=ZH({layout:be.layout,sourceName:f||(N.org&&N.repo?`${N.org}-${N.repo}`:"source"),sourceForYaml:J,explicitPath:m,explicitAs:u,explicitTarget:p,all:l,force:i,tty:k}),lt=await e1({pickerResult:et,installReport:Pe,sourceArg:R,projectRoot:r,dryRun:o,force:i,useExtends:a,nameOverride:f,replay:n,recurseInstall:e.recurseInstall});if(lt!==null)return lt}return qz({discovery:be,installReport:Pe,persisted:re,parsed:N,sourceForYaml:J,version:ee,pathInRepo:se,contentRoot:$,config:w,context:D,dryRun:o,force:i,useExtends:a,forceFreshMaterialize:c,explicitAs:u,nameOverride:f,acceptHooks:g,acceptPermissions:h,acceptMcp:y,scope:_,sourceArg:R,replay:n})}s(o1,"runInstallLocked");async function Zl(e,t,r,n){let{sync:o,dryRun:i,force:a,useExtends:l,all:c,forceFreshMaterialize:m,explicitPath:p,explicitTarget:u,explicitAs:f,nameOverride:g,acceptHooks:h,acceptPermissions:y,acceptMcp:_}=eH(e),R=e.global===true?"global":"project",k=t[0]?.trim(),w;if(n===void 0){let{context:D}=await _e(r,R);w=await Ym(D.canonicalDir);}try{return await o1({args:t,projectRoot:r,replay:n,sync:o,dryRun:i,force:a,useExtends:l,all:c,forceFreshMaterialize:m,explicitPath:p,explicitTarget:u,explicitAs:f,nameOverride:g,acceptHooks:h,acceptPermissions:y,acceptMcp:_,scope:R,sourceArg:k,recurseInstall:Zl})}finally{await w?.();}}s(Zl,"runInstall");async function s1(e,t,r){return Zl(e,t,r)}s(s1,"runInstall");function i1(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(", ");M.success(`Installed ${n}.`),M.note(`Installed ${n}.`,"Install");}if(t.skipped.length>0)for(let r of t.skipped)M.warn(`Skipped ${r.kind} "${r.name}": ${r.reason}`);if(t.brokenResources&&t.brokenResources.length>0){let r=t.brokenResources.length;M.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)M.warn(`Sub-pack "${r.name}" (${r.path}) failed: ${r.error}`);}}s(i1,"renderInstall");tt();sn();ue();function a1(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(a1,"detectDuplicates");function xy(e,t,r,n){let o=[];r.keepGenerated&&o.push(`--keep-generated: target trees will not be re-rendered; generated files derived from "${e}" may remain stale until the next generate.`);let i=r.keepPack||t===null?null:join(r.packsDir,e);return {name:e,packDir:i,manifestEntry:t,extendsEntry:n.get(e)??null,removeGenerated:!r.keepGenerated,warnings:o}}s(xy,"buildPlan");function l1(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=a1(a);if(l.length>0)throw new Error(`uninstall --all: installs.yaml has duplicate names: ${l.join(", ")}. Manifest is corrupt; remove the duplicates before retrying.`);let c=e.installs.map(m=>xy(m.name,m,e,t));for(let m of e.extends)r.has(m.name)||c.push(xy(m.name,null,e,t));return {removals:c,skipped:[]}}let n=a1(e.names);if(n.length>0)throw new Error(`uninstall: duplicate names requested: ${n.join(", ")}.`);let o=[],i=[];for(let a of e.names){let l=r.get(a);if(l!==void 0){o.push(xy(a,l,e,t));continue}if(t.has(a)){o.push(xy(a,null,e,t));continue}i.push(a);}return {removals:o,skipped:i}}s(l1,"planUninstall");b();b();xm();async function c1(e,t){let r=join(e,Lr);if(await j(r))return null;let n=await Sa(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 by(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)}
|
|
453
|
+
`),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(c1,"migrateLegacyManifest");b();var boe=["pack.yaml",Lr];function Aoe(e,t){return relative(e,t).replaceAll("\\","/")}s(Aoe,"toForwardSlashRelative");async function Py(e,t){let r=await B(e),n=new Map;for(let i of r){let a=Aoe(e,i);boe.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 Th(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(Py,"detectModifiedFiles");function m1(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(`
|
|
454
454
|
`)}
|
|
455
|
-
`);}s(
|
|
455
|
+
`);}s(m1,"writeBanner");async function p1(e,t,r){if(e.modifications.length===0)return {action:"proceed"};if(t.bypass)return m1(r,e),{action:"delete-anyway"};m1(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(p1,"runModifiedFilesPrompt");async function Toe(e){let t=await I(join(e,Lr));if(t===null)return null;try{return JSON.parse(t).files??{}}catch{return null}}s(Toe,"readManifestFiles");async function xoe(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 c1(n,{warn:r.warn,dryRun:r.dryRun===true}),i=o!==null,a=o!==null&&r.dryRun===true?o.manifest.files:await Toe(n);if(a===null)return {plan:e,modifications:[],action:"proceed",legacyMigrated:i,packDirMissing:false};let l=await Py(n,a);if(r.keepPack||l.length===0)return {plan:e,modifications:l,action:"proceed",legacyMigrated:i,packDirMissing:false};let c=await p1({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(xoe,"decideOne");async function d1(e,t,r){let n=[];for(let o of e){let i=await xoe(o,t,r);if(i==="abort")return {decisions:n,aborted:true};n.push(i);}return {decisions:n,aborted:false}}s(d1,"gatherUninstallDecisions");b();b();async function f1(e,t,r){if(!t.extends.some(c=>c.name===r))return false;let n=await I(e);if(n===null)throw new Error(`Missing config: ${e}`);let o=parse(n),i=Array.isArray(o.extends)?o.extends:[],a=i.filter(c=>typeof c!="object"||c===null?true:c.name!==r);if(a.length===i.length)return false;o.extends=a;let l=stringify(o,{indent:2,lineWidth:0});return await L(e,l.endsWith(`
|
|
456
456
|
`)?l:`${l}
|
|
457
|
-
`),true}s(
|
|
458
|
-
`);switch(await
|
|
459
|
-
`,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(
|
|
457
|
+
`),true}s(f1,"removeAgentsmeshExtendByName");async function g1(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 Az(r,t.name),l=false;t.extendsEntry!==null&&(l=await f1(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(g1,"applyUninstall");function Moe(e,t){return relative(e,t).replaceAll("\\","/")}s(Moe,"toForwardSlashRel");function AC(e){return e.map(t=>({name:t,reason:"not found in installs.yaml"}))}s(AC,"buildSkipped");function h1(e,t,r){return e.plan.manifestEntry===null?null:Moe(t,join(r,e.plan.name))}s(h1,"packPathFor");function y1(e,t,r){return e.map(n=>({name:n.plan.name,pack_path:h1(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(y1,"previewEntries");function _1(e,t,r,n){let o=e.action==="keep-modified"||!t.packDirRemoved;return {name:t.name,pack_path:h1(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(_1,"appliedEntry");function Goe(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(Goe,"parseNames");function $oe(){return {ask:s(e=>np(e),"ask"),write:s(e=>process.stdout.write(e),"write")}}s($oe,"defaultAdapter");async function Dy(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=Goe(t),f=e.json===true;function g(R){return f||S.error(R),{exitCode:1,data:{scope:o,mode:"uninstall",removed:[],skipped:[],failed:[],dryRun:l}}}if(s(g,"validationFailure"),!i&&u.length===0)return g("Missing install name. Usage: agentsmesh uninstall <name>[,<name>...] [--all]");if(!p&&!a&&!l)return g("Non-interactive terminal: use --force or --dry-run for agentsmesh uninstall.");let{config:h,context:y}=await _e(r,o);await ze(h,r);let _=await Ym(y.canonicalDir);try{let R=await Zt(y.canonicalDir),k=join(y.canonicalDir,"packs"),w=l1({names:u,all:i,keepPack:c,keepGenerated:m,installs:R,extends:h.extends,packsDir:k}),{decisions:D,aborted:N}=await d1(w.removals,k,{adapter:n.promptAdapter??$oe(),warn:s(se=>S.warn(se),"warn"),bypassPrompts:a||l||!p,keepPack:c,dryRun:l});if(N)return S.warn("Uninstall aborted at modification prompt."),{exitCode:130,data:{scope:o,mode:"uninstall",removed:[],skipped:[],failed:[],dryRun:l}};for(let se of w.removals)for(let $ of se.warnings)S.warn($);if(l){for(let se of D)S.info(`[dry-run] Would uninstall pack "${se.plan.name}".`);return {exitCode:0,data:{scope:o,mode:"uninstall",removed:y1(D,y.rootBase,k),skipped:AC(w.skipped),failed:[],dryRun:!0}}}let K=join(y.configDir,"agentsmesh.yaml"),J=[],ee=[];for(let se of D){let $=se.action==="keep-modified"?{...se.plan,packDir:null}:se.plan;try{let re=await g1({plan:$,canonicalDir:y.canonicalDir,configPath:K,config:h});J.push(_1(se,re,y.rootBase,k));}catch(re){let Pe=re instanceof Error?re.message:String(re);ee.push({name:se.plan.name,reason:Pe}),f||S.error(`Failed to uninstall "${se.plan.name}": ${Pe}`);}}return !m&&J.length>0?await ep("uninstall",o,y.rootBase):m&&J.length>0&&S.warn("--keep-generated: target files derived from the removed pack(s) may be stale until the next generate."),{exitCode:ee.length>0?1:0,data:{scope:o,mode:"uninstall",removed:J,skipped:AC(w.skipped),failed:ee,dryRun:!1}}}finally{await _();}}s(Dy,"runUninstall");async function R1(e,t,r){return Dy(e,t,r)}s(R1,"runUninstall");function I1(e){let{data:t}=e;if(t.dryRun){if(t.removed.length===0){M.info("[dry-run] No installs matched.");return}M.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;M.info(` - ${r.name} (${n})`);}return}if(t.removed.length>0){let r=t.removed.map(n=>`"${n.name}"`).join(", ");M.success(`Uninstalled ${t.removed.length} pack(s): ${r}.`),M.note(`Uninstalled ${t.removed.length} pack(s): ${r}.`,"Uninstall");}for(let r of t.skipped)M.warn(`Skipped "${r.name}": ${r.reason}`);for(let r of t.failed)M.error(`Failed "${r.name}": ${r.reason}`);}s(I1,"renderUninstall");tt();sn();ue();function k1(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(k1,"readRefreshFlags");function L1(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(L1,"parseRefreshNames");b();function joe(e){return e.modifications.length>0?"needs-consent":e.oldSha===e.newSha?"unchanged":"clean-update"}s(joe,"classifyRefreshPlan");async function E1(e,t,r){let n=join(t,e.name),o=e.version??null,i=join(n,Lr),a=await I(i);if(a===null)return {name:e.name,entry:e,oldSha:o,newSha:o??"",modifications:[],classification:"error",error:{phase:"plan",message:`Pack manifest missing at ${i}`}};let l;try{l=JSON.parse(a).files??{};}catch{return {name:e.name,entry:e,oldSha:o,newSha:o??"",modifications:[],classification:"error",error:{phase:"plan",message:`Pack manifest is corrupt at ${i}`}}}let c=[];await j(n)&&(c=await Py(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:joe({modifications:c,oldSha:o,newSha:m})}}s(E1,"planSinglePack");function O1(){return async e=>{if(e.source_kind==="local")return e.version??"local";let t=Cd(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 Sy(r,t.remoteUrl)}}s(O1,"createDefaultResolveRef");async function w1(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 Zt(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 Ty(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(w1,"applySinglePack");async function Uoe(e,t,r={}){let n=r.readLine??np,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":Boe(a)}finally{o&&clearTimeout(o);}}s(Uoe,"promptWithTimeout");function Boe(e){let t=e.trim().toLowerCase();return t==="y"||t==="yes"?"y":t==="per-pack"?"per-pack":"n"}s(Boe,"normalize");async function TC(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(`
|
|
458
|
+
`);switch(await Uoe(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(TC,"runConsentPrompt");function Koe(e,t){let r=Cd(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(Koe,"buildSourceForRefresh");function b1(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=Koe(t,r),a=await Zl(n,[i],e.projectRoot,o);if(a.exitCode!==0)throw new Error(`Install for refresh "${t.name}" failed with exit code ${a.exitCode}`)}}s(b1,"createRunInstallForRefresh");var A1=300*1e3;async function Ny(e,t,r){let{dryRun:n,force:o,global:i,json:a}=k1(e),l=i?"global":"project",c=L1(t),m=s(()=>({scope:l,mode:"refresh",refreshed:[],unchanged:[],skipped:[],failed:[],dryRun:n}),"emptyData"),{config:p,context:u}=await _e(r,l);await ze(p,r);let f=await Ym(u.canonicalDir);try{let g=await Zt(u.canonicalDir);if(c.length>0){let $=new Set(g.map(Pe=>Pe.name)),re=c.filter(Pe=>!$.has(Pe));if(re.length>0)return a||S.error(`Unknown pack(s): ${re.join(", ")}`),{exitCode:2,data:m()}}let h=c.length>0?g.filter($=>c.includes($.name)):g;if(h.length===0)return a||S.info("No packs to refresh."),{exitCode:0,data:m()};let y=join(u.canonicalDir,"packs"),_=O1(),R=[];for(let $ of h)R.push(await E1($,y,{resolveRef:_}));let k=R.filter($=>$.classification==="error"),w=R.filter($=>$.classification==="unchanged"),D=R.filter($=>$.classification==="clean-update"),N=R.filter($=>$.classification==="needs-consent"),K=m();if(K.unchanged=w.map($=>({name:$.name,ref:$.newSha})),K.failed=k.map($=>({name:$.name,phase:"plan",error:$.error?.message??"unknown plan error"})),n){for(let $ of D)K.refreshed.push({name:$.name,oldRef:$.oldSha,newRef:$.newSha,oldSha:$.oldSha,newSha:$.newSha,changedFiles:{added:[],removed:[],modified:[]}});for(let $ of N)K.refreshed.push({name:$.name,oldRef:$.oldSha,newRef:$.newSha,oldSha:$.oldSha,newSha:$.newSha,changedFiles:{added:[],removed:[],modified:[]}});return {exitCode:k.length>0?1:0,data:K}}let J=new Set(D.map($=>$.name));if(N.length>0)if(o)for(let $ of N)J.add($.name);else {let $=await TC(N.map(re=>({name:re.name,modifiedCount:re.modifications.length})),{timeoutMs:A1});if($.proceed&&!$.perPack)for(let re of N)J.add(re.name);else if($.proceed&&$.perPack)for(let re of N)(await TC([{name:re.name,modifiedCount:re.modifications.length}],{timeoutMs:A1})).proceed?J.add(re.name):K.skipped.push({name:re.name,reason:"user-declined"});else for(let re of $.declined)K.skipped.push({name:re,reason:"user-declined"});}let ee=b1({projectRoot:r,scope:l});for(let $ of [...D,...N]){if(!J.has($.name))continue;let re=await w1($,u.canonicalDir,{runInstallForRefresh:ee});re.success?K.refreshed.push({name:$.name,oldRef:$.oldSha,newRef:$.newSha,oldSha:$.oldSha,newSha:$.newSha,changedFiles:{added:[],removed:[],modified:[]}}):K.failed.push({name:$.name,phase:re.phase??"apply",error:re.error??"unknown"});}return K.refreshed.length>0&&await ep("refresh",l,u.rootBase),{exitCode:K.failed.length>0?1:0,data:K}}finally{await f();}}s(Ny,"runRefresh");async function T1(e,t,r){return Ny(e,t,r)}s(T1,"runRefresh");function x1(e){let{data:t}=e;if(t.dryRun){if(t.refreshed.length===0&&t.unchanged.length===0){M.info("[dry-run] No packs to refresh.");return}M.info(`[dry-run] Would refresh ${t.refreshed.length} pack(s); ${t.unchanged.length} unchanged.`);for(let r of t.refreshed)M.info(` - ${r.name}: ${r.oldSha??"\u2014"} \u2192 ${r.newSha}`);for(let r of t.unchanged)M.info(` - ${r.name}: unchanged at ${r.ref}`);return}if(t.refreshed.length>0){M.success(`Refreshed ${t.refreshed.length} pack(s):`),M.note(`Refreshed ${t.refreshed.length} pack(s).`,"Refresh");for(let r of t.refreshed)M.info(` - ${r.name}: ${r.oldSha??"\u2014"} \u2192 ${r.newSha}`);}for(let r of t.unchanged)M.info(`Pack "${r.name}" unchanged at ${r.ref}.`);for(let r of t.skipped)M.warn(`Skipped "${r.name}": ${r.reason}`);for(let r of t.failed)M.error(`Failed "${r.name}" (${r.phase}): ${r.error}`);}s(x1,"renderRefresh");tt();b();xm();async function zoe(e){let t=await I(join(e,Lr));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(zoe,"readPackManifestMeta");function Voe(e,t){return relative(e,t).replaceAll("\\","/")}s(Voe,"toForwardSlashRel");async function vy(e,t){let r=e.global===true?"global":"project",n=Na(t,r),o=await Zt(n.canonicalDir),i=join(n.canonicalDir,"packs"),a=[];for(let l of o){let c=join(i,l.name),m=await zoe(c),p=await Sa(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:Voe(n.rootBase,c),license:p?.license??null});}return {exitCode:0,data:{scope:r,subcommand:"list",installs:a}}}s(vy,"runInstallsList");var Joe=["list"];function P1(e){return {scope:e,subcommand:"list",installs:[]}}s(P1,"emptyData");async function D1(e,t,r){let n=e.global===true?"global":"project",o=t[0];return o===void 0||o===""?{exitCode:0,data:P1(n),showHelp:true}:o==="list"?vy(e,r):{exitCode:2,data:P1(n),showHelp:true,error:`Unknown installs subcommand: "${o}". Available: ${Joe.join(", ")}. Did you mean \`agentsmesh install ${o}\`?`}}s(D1,"runInstalls");ue();var Fy=[{key:"name",label:"NAME"},{key:"source",label:"SOURCE"},{key:"features",label:"FEATURES"},{key:"license",label:"LICENSE"},{key:"installed",label:"LAST TOUCHED"}];function Yoe(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(Yoe,"toRow");function Xoe(e){let t={name:0,source:0,features:0,license:0,installed:0};for(let n of Fy)t[n.key]=n.label.length;for(let n of e)for(let o of Fy)t[o.key]=Math.max(t[o.key],n[o.key].length);let r=Fy.map(n=>n.label.padEnd(t[n.key])).join(" ");S.info(r);for(let n of e)S.info(Fy.map(o=>n[o.key].padEnd(t[o.key])).join(" "));}s(Xoe,"renderTable");function N1(e){if(e.error&&S.error(e.error),e.showHelp){Bd("installs");return}let{data:t}=e;if(t.installs.length===0){S.info("No installed packs.");return}Xoe(t.installs.map(Yoe));}s(N1,"renderInstalls");fL();b();var NC="agentsmesh.yaml";async function vC(e){let t=join(e,NC),r=await I(t);return r===null?{}:parse(r)??{}}s(vC,"readScopedConfigRaw");async function F1(e,t){let r=join(e,NC),n=await I(r)??`version: 1
|
|
459
|
+
`,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(F1,"writePluginEntry");async function M1(e,t){let r=join(e,NC),n=await I(r);if(n===null)return false;let o=parse(n)??{},i=(o.plugins??[]).length;o.plugins=(o.plugins??[]).filter(l=>l.id!==t),o.pluginTargets&&(o.pluginTargets=o.pluginTargets.filter(l=>l!==t));let a=o.plugins.length<i;return a&&await L(r,stringify(o)),a}s(M1,"removePluginEntry");async function G1(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 Qoe(e,t.slice(1),r);case "list":return qoe(r);case "remove":return Zoe(t.slice(1),r);case "info":return ese(t.slice(1),r);default:return {exitCode:2,data:{subcommand:"list",plugins:[]},showHelp:true,error:`Unknown plugin subcommand: ${n}`}}}s(G1,"runPlugin");async function Qoe(e,t,r){let n=t[0];if(!n)throw new Xn("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)??tse(n);return await F1(r,{id:a,source:n,version:o==="latest"?void 0:o}),{exitCode:0,data:{subcommand:"add",id:a,package:n,version:o}}}s(Qoe,"runPluginAdd");async function qoe(e){let r=(await vC(e)).plugins??[],n=[];for(let o of r){let i="\u2717",a="";try{let l=await jh(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(qoe,"runPluginList");async function Zoe(e,t){let r=e[0];if(!r)throw new Xn("Usage: agentsmesh plugin remove <id>");let n=await M1(t,r);return {exitCode:0,data:{subcommand:"remove",id:r,found:n}}}s(Zoe,"runPluginRemove");async function ese(e,t){let r=e[0];if(!r)throw new Xn("Usage: agentsmesh plugin info <id>");let o=((await vC(t)).plugins??[]).find(l=>l.id===r);if(!o)return {exitCode:1,data:{subcommand:"info",id:r,package:"",descriptors:[]}};let i;try{i=await jh(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(ese,"runPluginInfo");function tse(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(tse,"derivePluginId");ue();function $1(e){if(e.error&&S.error(e.error),e.showHelp){ise();return}let{data:t}=e;switch(t.subcommand){case "add":rse(t.id,t.package,t.version);break;case "list":nse(t.plugins);break;case "remove":ose(t.id,t.found);break;case "info":sse(t,e.exitCode);break}}s($1,"renderPlugin");function rse(e,t,r){S.success(`Plugin '${e}' added to agentsmesh.yaml`),S.warn("Plugins load as trusted Node.js modules and run with full process privileges. Only install plugins from sources you trust.");let n=r!=="latest"?`@${r}`:"@latest";S.info(`Next: npm install ${t}${n}`),S.info(`Then add '${e}' to pluginTargets in agentsmesh.yaml to enable it.`);}s(rse,"renderAdd");function nse(e){if(e.length===0){S.info("No plugins configured. Use: agentsmesh plugin add <source>");return}S.info("Configured plugins:");for(let t of e){let r=t.version!==void 0?`@${t.version}`:"",n=t.status??"",o=t.targets??"";S.info(` ${t.id} | ${t.package}${r} | ${n} | ${o}`);}}s(nse,"renderList");function ose(e,t){t?S.success(`Plugin '${e}' removed from agentsmesh.yaml`):S.warn(`Plugin '${e}' was not found in agentsmesh.yaml`);}s(ose,"renderRemove");function sse(e,t){if(t!==0&&e.package===""){S.error(`Plugin '${e.id}' not found in agentsmesh.yaml. Use: agentsmesh plugin add`);return}if(t!==0){S.error(`Failed to load plugin '${e.id}'`);return}S.info(`Plugin: ${e.id}`),S.info(`Source: ${e.package}${e.version!==void 0?`@${e.version}`:""}`),S.info(`Descriptors: ${e.descriptors.length}`);for(let r of e.descriptors)S.info(` - ${r.id}: ${r.description}`);}s(sse,"renderInfo");function ise(){S.info("Usage: agentsmesh plugin <subcommand> [args] [flags]"),S.info(""),S.info("Subcommands:"),S.info(" add <source> Register a plugin package in agentsmesh.yaml"),S.info(" list Show all configured plugins and load status"),S.info(" remove <id> Remove a plugin from agentsmesh.yaml"),S.info(" info <id> Show descriptor details for a configured plugin"),S.info(""),S.info("Flags (add):"),S.info(" --version <v> Pin plugin version"),S.info(" --id <id> Override derived plugin id"),S.info(""),S.info("Note: plugins load as trusted Node.js modules and run with full process privileges."),S.info(" Only install plugins from sources you trust.");}s(ise,"printPluginHelp");b();cn();function Oa(e){return e.toUpperCase().replace(/-/g,"_")}s(Oa,"toPrefix");function Si(e){return e.split("-").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join("")}s(Si,"toPascal");function FC(e){let t=Oa(e.id),r=Si(e.id);return `import type { TargetGenerators } from '../catalog/target.interface.js';
|
|
460
460
|
import type { TargetDescriptor, TargetLayout } from '../catalog/target-descriptor.js';
|
|
461
461
|
import { generateRules } from './generator.js';
|
|
462
462
|
import { importFrom${r} } from './importer.js';
|
|
@@ -559,7 +559,7 @@ export const descriptor = {
|
|
|
559
559
|
buildImportPaths: build${r}ImportPaths,
|
|
560
560
|
detectionPaths: [${t}_DIR],
|
|
561
561
|
} satisfies TargetDescriptor;
|
|
562
|
-
`}s(
|
|
562
|
+
`}s(FC,"TEMPLATE_INDEX");function MC(e){return `import { describe, it, expect } from 'vitest';
|
|
563
563
|
import type { CanonicalFiles } from '../../../../src/core/types.js';
|
|
564
564
|
import { generateRules } from '../../../../src/targets/${e.id}/generator.js';
|
|
565
565
|
|
|
@@ -588,7 +588,7 @@ describe('generateRules (${e.id})', () => {
|
|
|
588
588
|
expect(result).toHaveLength(0);
|
|
589
589
|
});
|
|
590
590
|
});
|
|
591
|
-
`}s(
|
|
591
|
+
`}s(MC,"TEMPLATE_GENERATOR_TEST");function GC(e){let t=Si(e.id);return `import { describe, it, expect } from 'vitest';
|
|
592
592
|
import { importFrom${t} } from '../../../../src/targets/${e.id}/importer.js';
|
|
593
593
|
|
|
594
594
|
describe('importFrom${t} (${e.id})', () => {
|
|
@@ -602,10 +602,10 @@ describe('importFrom${t} (${e.id})', () => {
|
|
|
602
602
|
expect(result).toHaveLength(0);
|
|
603
603
|
});
|
|
604
604
|
});
|
|
605
|
-
`}s(
|
|
605
|
+
`}s(GC,"TEMPLATE_IMPORTER_TEST");function $C(e){return `# ${e.displayName} Workspace
|
|
606
606
|
|
|
607
607
|
Follow the ${e.displayName} configuration files and keep changes small.
|
|
608
|
-
`}s(
|
|
608
|
+
`}s($C,"TEMPLATE_FIXTURE_ROOT_MD");function j1(e){let t=Oa(e.id);return `export const ${t}_TARGET = '${e.id}';
|
|
609
609
|
|
|
610
610
|
// Project-level paths
|
|
611
611
|
export const ${t}_DIR = '.${e.id}';
|
|
@@ -618,7 +618,7 @@ export const ${t}_GLOBAL_RULES_DIR = '~/.${e.id}/rules';
|
|
|
618
618
|
// Canonical paths
|
|
619
619
|
export const ${t}_CANONICAL_ROOT_RULE = '.agentsmesh/rules/_root.md';
|
|
620
620
|
export const ${t}_CANONICAL_RULES_DIR = '.agentsmesh/rules';
|
|
621
|
-
`}s(
|
|
621
|
+
`}s(j1,"TEMPLATE_CONSTANTS");function U1(e){let t=Oa(e.id);return `import type { CanonicalFiles } from '../../core/types.js';
|
|
622
622
|
import { ${t}_TARGET, ${t}_DIR } from './constants.js';
|
|
623
623
|
|
|
624
624
|
export interface ${Si(e.id)}Output {
|
|
@@ -632,7 +632,7 @@ export function generateRules(_canonical: CanonicalFiles): ${Si(e.id)}Output[] {
|
|
|
632
632
|
void ${t}_DIR;
|
|
633
633
|
return [];
|
|
634
634
|
}
|
|
635
|
-
`}s(
|
|
635
|
+
`}s(U1,"TEMPLATE_GENERATOR");function B1(e){let t=Si(e.id),r=Oa(e.id);return `import type { ImportResult } from '../../core/types.js';
|
|
636
636
|
import type { TargetLayoutScope } from '../catalog/target-descriptor.js';
|
|
637
637
|
import { ${r}_TARGET } from './constants.js';
|
|
638
638
|
|
|
@@ -644,7 +644,7 @@ export async function importFrom${t}(
|
|
|
644
644
|
void ${r}_TARGET;
|
|
645
645
|
return [];
|
|
646
646
|
}
|
|
647
|
-
`}s(
|
|
647
|
+
`}s(B1,"TEMPLATE_IMPORTER");function K1(e){let t=Oa(e.id);return `/** Lint rules for the ${e.id} target. */
|
|
648
648
|
import type { CanonicalFiles, LintDiagnostic } from '../../core/types.js';
|
|
649
649
|
import { validateRules } from '../../core/lint/validate-rules.js';
|
|
650
650
|
import { ${t}_TARGET } from './constants.js';
|
|
@@ -662,7 +662,7 @@ export function lintRules(
|
|
|
662
662
|
target: ${t}_TARGET,
|
|
663
663
|
}));
|
|
664
664
|
}
|
|
665
|
-
`}s(
|
|
665
|
+
`}s(K1,"TEMPLATE_LINTER");function W1(e){return `/**
|
|
666
666
|
* ${e.displayName}-specific lint hooks.
|
|
667
667
|
*/
|
|
668
668
|
|
|
@@ -672,7 +672,7 @@ export function lintHooks(_canonical: CanonicalFiles): LintDiagnostic[] {
|
|
|
672
672
|
// TODO(agentsmesh-scaffold): implement target-specific hook validation for ${e.displayName}
|
|
673
673
|
return [];
|
|
674
674
|
}
|
|
675
|
-
`}s(
|
|
675
|
+
`}s(W1,"TEMPLATE_LINT_HOOKS");function H1(e){let t=Si(e.id),r=Oa(e.id);return `import type { TargetLayoutScope } from '../../../targets/catalog/target-descriptor.js';
|
|
676
676
|
import { ${r}_DIR } from '../../../targets/${e.id}/constants.js';
|
|
677
677
|
|
|
678
678
|
export async function build${t}ImportPaths(
|
|
@@ -684,26 +684,26 @@ export async function build${t}ImportPaths(
|
|
|
684
684
|
// Reference: src/core/reference/import-maps/kiro.ts for a full example
|
|
685
685
|
void ${r}_DIR;
|
|
686
686
|
}
|
|
687
|
-
`}s(
|
|
687
|
+
`}s(H1,"TEMPLATE_IMPORT_MAP");var lse=/^[a-z][a-z0-9-]*$/;async function z1(e){let{id:t,projectRoot:r,force:n=false}=e,o=e.displayName??t,i={id:t,displayName:o};if(!lse.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:j1(i)},{rel:`src/targets/${t}/index.ts`,content:FC(i)},{rel:`src/targets/${t}/generator.ts`,content:U1(i)},{rel:`src/targets/${t}/importer.ts`,content:B1(i)},{rel:`src/targets/${t}/linter.ts`,content:K1(i)},{rel:`src/targets/${t}/lint.ts`,content:W1(i)},{rel:`src/core/reference/import-maps/${t}.ts`,content:H1(i)},{rel:`tests/unit/targets/${t}/generator.test.ts`,content:MC(i)},{rel:`tests/unit/targets/${t}/importer.test.ts`,content:GC(i)},{rel:`tests/e2e/fixtures/${t}-project/AGENTS.md`,content:$C(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(z1,"writeTargetScaffold");async function J1(e,t,r){let n=t[0];return n===void 0||n===""?{exitCode:0,data:{id:"",written:[],skipped:[],postSteps:[]},showHelp:true}:n==="scaffold"?cse(e,t.slice(1),r):{exitCode:2,data:{id:"",written:[],skipped:[],postSteps:[]},showHelp:true,error:`Unknown target subcommand: ${n}`}}s(J1,"runTarget");async function cse(e,t,r){let n=t[0];if(!n)throw new Xn("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 z1({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=>V1(l,r)),skipped:a.skipped.map(l=>V1(l,r)),postSteps:a.postSteps}}}s(cse,"runScaffold");function V1(e,t){return (e.startsWith(t)?e.slice(t.length+1):e).replaceAll("\\","/")}s(V1,"relativize");ue();function Y1(e){if(e.error&&S.error(e.error),e.showHelp){mse();return}let{data:t}=e;for(let r of t.written)S.success(`created ${r}`);for(let r of t.skipped)S.warn(`skipped ${r} (already exists \u2014 use --force to overwrite)`);if(t.written.length>0){S.info(""),S.info("Next steps:");for(let r of t.postSteps)S.info(` ${r}`);}}s(Y1,"renderTarget");function mse(){S.info("Usage: agentsmesh target <subcommand> [args] [flags]"),S.info(""),S.info("Subcommands:"),S.info(" scaffold <id> Generate a new target skeleton (files, tests, fixture)"),S.info(""),S.info("Flags (scaffold):"),S.info(" --name <displayName> Human-readable name (defaults to id)"),S.info(" --force Overwrite existing files");}s(mse,"printTargetHelp");rt();Ga();b();tt();sn();rs();function _se(e,t){return e===".agentsmesh"?false:!!(e.startsWith(".")||!t)}s(_se,"shouldSymlink");function Sse(e){let t=mkdtempSync(join(tmpdir(),"am-convert-")),r=readdirSync(e,{withFileTypes:true});for(let n of r){if(!_se(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(Sse,"createTempProjectRoot");async function Gy(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=Bt(l),p=Bt(c);if(!m||!p)try{let{config:_}=await _e(r,"project");await ze(_,r);}catch{let _=[];throw m||_.push(`--from "${i}"`),p||_.push(`--to "${a}"`),new Error(`Unknown ${_.join(" and ")}. Supported: ${Ue.join(", ")}.`)}let u=ne(l);if(!u)throw new Error(`Unknown --from "${i}". Supported: ${Ue.join(", ")}.`);if(!ne(c))throw new Error(`Unknown --to "${a}". Supported: ${Ue.join(", ")}.`);let g=e["dry-run"]===true,h=g?"dry-run":"convert",y=Sse(o);try{await u.generators.importFrom(y,{scope:n});let _=await Kt(y),R=Da.parse({version:1,targets:p?[c]:[],pluginTargets:p?[]:[c]}),k=await Yo({config:R,canonical:_,projectRoot:o,scope:n,targetFilter:[c]});if(!g){for(let N of k)if(N.status==="created"||N.status==="updated"){let K=Uh(o,N.path,N.target);await L(K,N.content);}}let w=k.filter(N=>N.status!=="skipped"),D=w.map(N=>({path:N.path,target:N.target,status:N.status}));return {exitCode:0,data:{from:l,to:c,mode:h,files:D,summary:{created:w.filter(N=>N.status==="created").length,updated:w.filter(N=>N.status==="updated").length,unchanged:w.filter(N=>N.status==="unchanged").length}}}}finally{rmSync(y,{recursive:true,force:true});}}s(Gy,"runConvert");function X1(e){let{data:t}=e;if(t.files.length===0){M.info(`No files found to convert from ${t.from}.`);return}if(t.mode==="dry-run"){for(let i of t.files)M.info(`[dry-run] ${i.status} ${i.path} (${i.target})`);return}for(let i of t.files)(i.status==="created"||i.status==="updated")&&M.success(`${i.status} ${i.path}`);let{created:r,updated:n,unchanged:o}=t.summary;r>0||n>0?M.info(`Converted from ${t.from} \u2192 ${t.to}: ${r} created, ${n} updated, ${o} unchanged`):M.info(`Nothing changed. (${o} unchanged)`);}s(X1,"renderConvert");var Rse=/(^|\s)\/[A-Za-z]|^[A-Z]:[\\/]/,v=class extends Error{static{s(this,"McpError");}code;details;constructor(t,r,n){if(Rse.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 sp(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(sp,"redactAbsolutePaths");async function jC(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(jC,"safeWrite");var bse=/^---\r?\n([\s\S]*?)\r?\n---\r?\n\r?\n?([\s\S]*)$/;function ba(e){let t=bse.exec(e);if(!t)return {frontmatter:{},body:e};let[,r,n]=t;return {frontmatter:parse(r)??{},body:n}}s(ba,"parseMd");function ip(e,t){return Object.keys(e).length===0?t:`---
|
|
688
688
|
${stringify(e).trimEnd()}
|
|
689
689
|
---
|
|
690
690
|
|
|
691
|
-
${t}`}s(ip,"serializeMd");var bse=/^[a-zA-Z0-9_][a-zA-Z0-9_-]*$/,Ase={rules:"_root"};function Fy(e){if(!bse.test(e)||e.includes(".."))throw new v("INVALID_NAME",`invalid name: ${e}`)}s(Fy,"checkName");function My(e,t,r){return resolve(e,".agentsmesh",t,`${r}.md`)}s(My,"pathFor");function ap(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}=ba(f);m.push(n(u,g));}return m},async get(l,{name:c}){Fy(c);let m=My(l.projectRoot,t,c);try{let p=await readFile(m,"utf8"),{frontmatter:u,body:f}=ba(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}){Fy(c);let f=r.safeParse(m);if(!f.success)throw new v("VALIDATION_FAILED","invalid frontmatter",f.error.issues);let g=My(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 y=ip(m,p);return u===true?{path:g,written:false}:(await GC({projectRoot:l.projectRoot,feature:t,relativePath:`${c}.md`,content:y}),{path:g,written:true})},async update(l,{name:c,frontmatter:m,body:p,merge:u,dry_run:f}){Fy(c);let g=My(l.projectRoot,t,c),h;try{let w=await readFile(g,"utf8");h=ba(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 y=m===void 0?h.frontmatter:u===true?{...h.frontmatter,...m}:m,_=r.safeParse(y);if(!_.success)throw new v("VALIDATION_FAILED","invalid frontmatter",_.error.issues);let R=p!==void 0?p:h.body,k=ip(y,R);return f===true?{path:g,written:false}:(await GC({projectRoot:l.projectRoot,feature:t,relativePath:`${c}.md`,content:k}),{path:g,written:true})},async delete(l,{name:c,force:m,dry_run:p}){if(Fy(c),Ase[t]===c&&m!==true)throw new v("PROTECTED_FILE",`${t} "${c}" requires force: true`);let u=My(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(ap,"createCanonicalHandlers");var Tse=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(),Y1=ap({feature:"rules",frontmatterSchema:Tse,toSummary:s((e,t)=>({name:e,description:t.description??null,root:!!t.root,globs:t.globs??null,targets:t.targets??null}),"toSummary")});var xse=z$1.object({description:z$1.string().optional(),"allowed-tools":z$1.array(z$1.string()).optional()}).passthrough(),X1=ap({feature:"commands",frontmatterSchema:xse,toSummary:s((e,t)=>({name:e,description:t.description??null,allowedTools:t["allowed-tools"]??null}),"toSummary")});var Pse=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(),Q1=ap({feature:"agents",frontmatterSchema:Pse,toSummary:s((e,t)=>({name:e,description:t.description??null,tools:t.tools??null,model:t.model??null}),"toSummary")});var Dse=z$1.object({name:z$1.string().describe('Item name (e.g. "auth", "code-review")')}),Nse=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")}),vse=z$1.object({}).strict();function jC(e,t){let r=e==="rule"?"rules":e==="command"?"commands":"agents";return [{name:`list_${r}`,description:`List ${r} with summary metadata`,inputSchema:vse,handler:s(n=>t.list(n),"handler"),resourceUri:`agentsmesh://canonical/${r}`},{name:`get_${e}`,description:`Get a single ${e} by name`,inputSchema:Dse,handler:s((n,o)=>t.get(n,o),"handler"),resourceUri:`agentsmesh://canonical/${r}/{name}`},{name:`create_${e}`,description:`Create a new ${e}`,inputSchema:Nse,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(jC,"canonicalTools");var q1=[...jC("rule",Y1),...jC("command",X1),...jC("agent",Q1)];async function eV(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(eV,"safeRead");var Bse=/^[a-zA-Z0-9_][a-zA-Z0-9_-]*$/,Kse=/^[a-zA-Z0-9_][a-zA-Z0-9_/-]*\.[a-zA-Z0-9]+$/,oV=z$1.object({name:z$1.string().optional(),description:z$1.string().optional()}).passthrough();function Ad(e){if(!Bse.test(e))throw new v("INVALID_NAME",`invalid skill name: ${e}`)}s(Ad,"checkName");function KC(e){if(!Kse.test(e)||e.includes("..")||e.includes("//"))throw new v("PATH_TRAVERSAL",`invalid supporting-file path: ${e}`)}s(KC,"checkSupportPath");async function jy(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(jy,"atomicWrite");var sV=s(e=>resolve(e,".agentsmesh/skills"),"skillsDir"),Td=s((e,t)=>resolve(sV(e),t),"skillDir"),tc={async list(e){let t;try{t=(await readdir(sV(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(Td(e.projectRoot,n),"SKILL.md"),"utf8"),i=ba(o).frontmatter;r.push({name:n,description:i.description??null});}catch{}return r},async get(e,{name:t}){Ad(t);let r=Td(e.projectRoot,t);try{let n=await readFile(resolve(r,"SKILL.md"),"utf8"),{frontmatter:o,body:i}=ba(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 Ad(t),KC(r),{content:await eV({projectRoot:e.projectRoot,skillName:t,filePath:r}),encoding:"utf-8"}},async create(e,t){Ad(t.name);let r=oV.safeParse(t.frontmatter);if(!r.success)throw new v("VALIDATION_FAILED","invalid frontmatter",r.error.issues);let n=Td(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(KC),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 jy(l,ip(t.frontmatter,t.body));for(let[c,m]of Object.entries(i))await jy(resolve(n,c),m);return {path:n,written:true,supportingFilesWritten:a}},async update(e,t){Ad(t.name);let r=Td(e.projectRoot,t.name),n;try{let p=await readFile(resolve(r,"SKILL.md"),"utf8");n=ba(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=oV.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(KC);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 jy(resolve(r,"SKILL.md"),ip(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 jy(f,u),c.push(p);}return {path:r,written:true,supportingFilesAffected:{written:c,deleted:m}}},async delete(e,{name:t,dry_run:r}){Ad(t);let n=Td(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 Wse=z$1.object({}).strict(),Hse=z$1.object({name:z$1.string().describe("Item name")}),iV=[{name:"list_skills",description:"List skills",inputSchema:Wse,handler:s(e=>tc.list(e),"handler"),resourceUri:"agentsmesh://canonical/skills"},{name:"get_skill",description:"Get one skill (frontmatter + body + supporting filenames)",inputSchema:Hse,handler:s((e,t)=>tc.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)=>tc.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)=>tc.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)=>tc.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)=>tc.delete(e,t),"handler")}];async function aV(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(aV,"safeConfigWrite");function Yse(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(Yse,"flattenEntry");function lV(e){let t={};for(let[r,n]of Object.entries(e))t[r]=Array.isArray(n)?n.flatMap(Yse):n;return t}s(lV,"normalizeHooksRecord");rs();wp();async function xd(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(xd,"readYaml");async function cp(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(cp,"atomicWrite");var Er={async getConfig(e){let t=await xd(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 pn(t))?.mcpServers??null}}catch{return {servers:null}}},async getPermissions(e){return await xd(resolve(e.projectRoot,".agentsmesh/permissions.yaml"))??null},async getHooks(e){return await xd(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 xd(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=Da.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 aV({projectRoot:e.projectRoot,content:a,filename:t.filename}),written:true}},async addMcpServer(e,t){let r=resolve(e.projectRoot,".agentsmesh/mcp.json"),n=await pn(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 cp(r,JSON.stringify(n,null,2)+`
|
|
691
|
+
${t}`}s(ip,"serializeMd");var Dse=/^[a-zA-Z0-9_][a-zA-Z0-9_-]*$/,Nse={rules:"_root"};function $y(e){if(!Dse.test(e)||e.includes(".."))throw new v("INVALID_NAME",`invalid name: ${e}`)}s($y,"checkName");function jy(e,t,r){return resolve(e,".agentsmesh",t,`${r}.md`)}s(jy,"pathFor");function ap(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}=ba(f);m.push(n(u,g));}return m},async get(l,{name:c}){$y(c);let m=jy(l.projectRoot,t,c);try{let p=await readFile(m,"utf8"),{frontmatter:u,body:f}=ba(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}){$y(c);let f=r.safeParse(m);if(!f.success)throw new v("VALIDATION_FAILED","invalid frontmatter",f.error.issues);let g=jy(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 y=ip(m,p);return u===true?{path:g,written:false}:(await jC({projectRoot:l.projectRoot,feature:t,relativePath:`${c}.md`,content:y}),{path:g,written:true})},async update(l,{name:c,frontmatter:m,body:p,merge:u,dry_run:f}){$y(c);let g=jy(l.projectRoot,t,c),h;try{let w=await readFile(g,"utf8");h=ba(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 y=m===void 0?h.frontmatter:u===true?{...h.frontmatter,...m}:m,_=r.safeParse(y);if(!_.success)throw new v("VALIDATION_FAILED","invalid frontmatter",_.error.issues);let R=p!==void 0?p:h.body,k=ip(y,R);return f===true?{path:g,written:false}:(await jC({projectRoot:l.projectRoot,feature:t,relativePath:`${c}.md`,content:k}),{path:g,written:true})},async delete(l,{name:c,force:m,dry_run:p}){if($y(c),Nse[t]===c&&m!==true)throw new v("PROTECTED_FILE",`${t} "${c}" requires force: true`);let u=jy(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(ap,"createCanonicalHandlers");var vse=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(),Z1=ap({feature:"rules",frontmatterSchema:vse,toSummary:s((e,t)=>({name:e,description:t.description??null,root:!!t.root,globs:t.globs??null,targets:t.targets??null}),"toSummary")});var Fse=z$1.object({description:z$1.string().optional(),"allowed-tools":z$1.array(z$1.string()).optional()}).passthrough(),eV=ap({feature:"commands",frontmatterSchema:Fse,toSummary:s((e,t)=>({name:e,description:t.description??null,allowedTools:t["allowed-tools"]??null}),"toSummary")});var Mse=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(),tV=ap({feature:"agents",frontmatterSchema:Mse,toSummary:s((e,t)=>({name:e,description:t.description??null,tools:t.tools??null,model:t.model??null}),"toSummary")});var Gse=z$1.object({name:z$1.string().describe('Item name (e.g. "auth", "code-review")')}),$se=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")}),jse=z$1.object({}).strict();function BC(e,t){let r=e==="rule"?"rules":e==="command"?"commands":"agents";return [{name:`list_${r}`,description:`List ${r} with summary metadata`,inputSchema:jse,handler:s(n=>t.list(n),"handler"),resourceUri:`agentsmesh://canonical/${r}`},{name:`get_${e}`,description:`Get a single ${e} by name`,inputSchema:Gse,handler:s((n,o)=>t.get(n,o),"handler"),resourceUri:`agentsmesh://canonical/${r}/{name}`},{name:`create_${e}`,description:`Create a new ${e}`,inputSchema:$se,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(BC,"canonicalTools");var rV=[...BC("rule",Z1),...BC("command",eV),...BC("agent",tV)];async function oV(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(oV,"safeRead");var Vse=/^[a-zA-Z0-9_][a-zA-Z0-9_-]*$/,Jse=/^[a-zA-Z0-9_][a-zA-Z0-9_/-]*\.[a-zA-Z0-9]+$/,lV=z$1.object({name:z$1.string().optional(),description:z$1.string().optional()}).passthrough();function Td(e){if(!Vse.test(e))throw new v("INVALID_NAME",`invalid skill name: ${e}`)}s(Td,"checkName");function HC(e){if(!Jse.test(e)||e.includes("..")||e.includes("//"))throw new v("PATH_TRAVERSAL",`invalid supporting-file path: ${e}`)}s(HC,"checkSupportPath");async function Ky(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(Ky,"atomicWrite");var cV=s(e=>resolve(e,".agentsmesh/skills"),"skillsDir"),xd=s((e,t)=>resolve(cV(e),t),"skillDir"),tc={async list(e){let t;try{t=(await readdir(cV(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(xd(e.projectRoot,n),"SKILL.md"),"utf8"),i=ba(o).frontmatter;r.push({name:n,description:i.description??null});}catch{}return r},async get(e,{name:t}){Td(t);let r=xd(e.projectRoot,t);try{let n=await readFile(resolve(r,"SKILL.md"),"utf8"),{frontmatter:o,body:i}=ba(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 Td(t),HC(r),{content:await oV({projectRoot:e.projectRoot,skillName:t,filePath:r}),encoding:"utf-8"}},async create(e,t){Td(t.name);let r=lV.safeParse(t.frontmatter);if(!r.success)throw new v("VALIDATION_FAILED","invalid frontmatter",r.error.issues);let n=xd(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(HC),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 Ky(l,ip(t.frontmatter,t.body));for(let[c,m]of Object.entries(i))await Ky(resolve(n,c),m);return {path:n,written:true,supportingFilesWritten:a}},async update(e,t){Td(t.name);let r=xd(e.projectRoot,t.name),n;try{let p=await readFile(resolve(r,"SKILL.md"),"utf8");n=ba(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=lV.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(HC);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 Ky(resolve(r,"SKILL.md"),ip(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 Ky(f,u),c.push(p);}return {path:r,written:true,supportingFilesAffected:{written:c,deleted:m}}},async delete(e,{name:t,dry_run:r}){Td(t);let n=xd(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 Yse=z$1.object({}).strict(),Xse=z$1.object({name:z$1.string().describe("Item name")}),mV=[{name:"list_skills",description:"List skills",inputSchema:Yse,handler:s(e=>tc.list(e),"handler"),resourceUri:"agentsmesh://canonical/skills"},{name:"get_skill",description:"Get one skill (frontmatter + body + supporting filenames)",inputSchema:Xse,handler:s((e,t)=>tc.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)=>tc.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)=>tc.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)=>tc.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)=>tc.delete(e,t),"handler")}];async function pV(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(pV,"safeConfigWrite");function eie(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(eie,"flattenEntry");function uV(e){let t={};for(let[r,n]of Object.entries(e))t[r]=Array.isArray(n)?n.flatMap(eie):n;return t}s(uV,"normalizeHooksRecord");rs();wp();async function Pd(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(Pd,"readYaml");async function cp(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(cp,"atomicWrite");var Er={async getConfig(e){let t=await Pd(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 pn(t))?.mcpServers??null}}catch{return {servers:null}}},async getPermissions(e){return await Pd(resolve(e.projectRoot,".agentsmesh/permissions.yaml"))??null},async getHooks(e){return await Pd(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 Pd(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=Da.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 pV({projectRoot:e.projectRoot,content:a,filename:t.filename}),written:true}},async addMcpServer(e,t){let r=resolve(e.projectRoot,".agentsmesh/mcp.json"),n=await pn(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 cp(r,JSON.stringify(n,null,2)+`
|
|
692
692
|
`),{path:r,written:true})},async updateMcpServer(e,t){let r=resolve(e.projectRoot,".agentsmesh/mcp.json"),n=await pn(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 cp(r,JSON.stringify(n,null,2)+`
|
|
693
693
|
`),{path:r,written:true})},async removeMcpServer(e,t){let r=resolve(e.projectRoot,".agentsmesh/mcp.json"),n=await pn(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 cp(r,JSON.stringify(n,null,2)+`
|
|
694
|
-
`),{path:r,removed:true})},async updatePermissions(e,t){let r=resolve(e.projectRoot,".agentsmesh/permissions.yaml"),n=await
|
|
694
|
+
`),{path:r,removed:true})},async updatePermissions(e,t){let r=resolve(e.projectRoot,".agentsmesh/permissions.yaml"),n=await Pd(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 cp(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 cp(r,stringify(uV(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 cp(r,n.join(`
|
|
695
695
|
`)+`
|
|
696
|
-
`),{path:r,written:true})}};var lie=/[;&|`$<>!\\\r\n]/u,cie=/^[A-Za-z_][A-Za-z0-9_]*$/u,mie=/^[A-Za-z][A-Za-z0-9_-]*$/u,pie=/^[A-Za-z][A-Za-z0-9_-]*(\([^)]*\))?$/u,pV=/[\r\n]/u,uV=/[\0\r\n]/u;function uie(e){return uV.test(e)?false:!e.split(/[/\\]/u).includes("..")}s(uie,"isSafeMcpCwd");function die(e){return z$1.string().min(1).max(512).refine(t=>!lie.test(t),{message:`${e} must not contain shell metacharacters (;&|\`$<>!\\\\, newlines)`})}s(die,"noShellMeta");var zC=z$1.object({type:z$1.enum(["stdio","sse","http","streamable-http","streamable_http"]).optional(),description:z$1.string().max(1024).refine(e=>!uV.test(e),{message:"description must not contain NUL or newline characters"}).optional(),command:die("command").optional(),args:z$1.array(z$1.string().max(2048)).max(100).optional(),env:z$1.record(z$1.string().regex(cie,"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(mie,"header name must be a valid identifier"),z$1.string().max(8192)).optional(),cwd:z$1.string().max(2048).refine(uie,{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(),fie=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"}),dV=z$1.string().max(256).refine(e=>!pV.test(e),{message:"hook matcher must not contain newlines"}),gie=z$1.object({matcher:dV,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"}),hie=z$1.object({matcher:dV,hooks:z$1.array(fie).min(1).max(50)}).strict(),yie=z$1.union([gie,hie]),fV=z$1.record(z$1.string().min(1).max(64),z$1.array(yie).max(100)),_ie=z$1.string().min(1).max(256).refine(e=>!pV.test(e),{message:"permission pattern must not contain newlines"}).refine(e=>pie.test(e),{message:"permission pattern must match Tool or Tool(matcher) form"}),By=z$1.array(_ie).max(500);var Pd=z$1.object({}).strict(),Sie=[{name:"get_config",description:"Read agentsmesh.yaml",inputSchema:Pd,handler:s(e=>Er.getConfig(e),"handler"),resourceUri:"agentsmesh://config"},{name:"list_mcp_servers",description:"List MCP servers in canonical mcp.json",inputSchema:Pd,handler:s(e=>Er.listMcpServers(e),"handler"),resourceUri:"agentsmesh://canonical/mcp"},{name:"get_permissions",description:"Read permissions.yaml",inputSchema:Pd,handler:s(e=>Er.getPermissions(e),"handler"),resourceUri:"agentsmesh://canonical/permissions"},{name:"get_hooks",description:"Read hooks.yaml",inputSchema:Pd,handler:s(e=>Er.getHooks(e),"handler"),resourceUri:"agentsmesh://canonical/hooks"},{name:"get_ignore",description:"Read ignore patterns",inputSchema:Pd,handler:s(e=>Er.getIgnore(e),"handler"),resourceUri:"agentsmesh://canonical/ignore"}],Rie=[{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)=>Er.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:zC.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)=>Er.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:zC,merge:z$1.boolean().optional(),dry_run:z$1.boolean().optional()}),handler:s((e,t)=>Er.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)=>Er.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:By.optional().describe('Allowed tool patterns (e.g. ["Bash(npm run:*)"])'),deny:By.optional().describe("Denied tool patterns"),ask:By.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)=>Er.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:fV.describe("Full hooks structure (e.g. { PreToolUse: [...], PostToolUse: [...] })"),dry_run:z$1.boolean().optional().describe("Preview without writing")}),handler:s((e,t)=>Er.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)=>Er.updateIgnore(e,t),"handler")}],gV=[...Sie,...Rie];yL();cn();function Iie(){return Object.fromEntries(Ue.map(e=>[e,Object.fromEntries(Object.entries(FB).map(([t,r])=>[t,r[e]]))]))}s(Iie,"buildTargetIndex");var hV=Iie(),VC={async list(){return hV},async get(e){let t=hV[e.targetId];if(t===void 0)throw new v("NOT_FOUND",`unknown target: ${e.targetId}`);return {targetId:e.targetId,capabilities:t}}};ts();ts();Yd();tt();Jo();sn();rt();cn();async function JC(e,t){let r=ne(e);if(!r)throw new Qn(e,{supported:[...Ue,...df().map(n=>n.id)]});return r.generators.importFrom(t.root,{scope:t.scope??"project"})}s(JC,"importFrom");async function Dd(e,t={}){let r=t.scope??"project",{config:n,context:o}=await _e(e,r);await ze(n,e);let{canonical:i}=await $t(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(Dd,"loadProjectContext");async function YC(e){let t=e.targetFilter?[...e.targetFilter]:void 0;return dy(e.config,e.canonical,e.projectRoot,t,{scope:e.scope})}s(YC,"lint");async function XC(e){let t=await Yo(e);return {...py(t),results:t}}s(XC,"diff");async function QC(e){return fy(e)}s(QC,"check");ts();Jo();Ga();Yd();Te();rt();Ae();function rc(e,t={}){let r=Math.max(1,t.cap??Vh),n=ty(e),o=[],i=new Map;for(let[f,g]of Object.entries(e.lessons)){if(g.status!=="active")continue;if(t.trimOverCap===false||g.triggers.length<=r){i.set(f,g.triggers);continue}let h=[...g.triggers].sort((R,k)=>{let w=n.get(R),D=n.get(k);return w!==D?w-D:R<k?-1:1}),y=new Set(h.slice(r)),_=g.triggers.filter(R=>!y.has(R));i.set(f,_),o.push({id:f,removedTriggers:[...y],keptCount:_.length});}let a=[],l=[];if(t.knownPaths!==void 0){let f=od(e,t.knownPaths);if(f.size>0){for(let[g,h]of i){let y=h.filter(R=>f.has(R));if(y.length===0)continue;let _=h.filter(R=>!f.has(R));_.length>=1?(i.set(g,_),a.push({id:g,removedTriggers:y,keptCount:_.length})):l.push(g);}l.sort();}}let c=new Set;for(let f of i.values())for(let g of f)c.add(g);let m=Object.keys(e.triggers).filter(f=>!c.has(f)).sort(),p=new Set;for(let f of Object.values(e.lessons))for(let g of f.topics)p.add(g);let u=Object.keys(e.topics).filter(f=>!p.has(f)).sort();return {removedTriggerIds:m,removedTopicIds:u,trimmedLessons:o,removedDeadGlobs:a,unreachableLessons:l,cap:r}}s(rc,"planPrune");function Ky(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(Ky,"applyPruneToGraph");function Nd(e){return e.removedTriggerIds.length===0&&e.removedTopicIds.length===0&&e.trimmedLessons.length===0&&e.removedDeadGlobs.length===0}s(Nd,"isEmptyPrunePlan");function wie(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(wie,"isAutoPruneEnabled");async function yV(e,t){if(!wie(e))return null;let r=Je(e);if(r===null||Nd(rc(r,{trimOverCap:false,knownPaths:t})))return null;let n={removedTriggers:0,removedTopics:0,detachedDeadGlobs:0};return await wt(e,i=>{let a=rc(i,{trimOverCap:false,knownPaths:t});Nd(a)||(Ky(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(yV,"maybeAutoPrune");function Wy(e,t){let r=e.replaceAll("\\","/"),n=_V(t,r);if(!n.startsWith("../"))return n;let o=_V(qC(t),qC(resolve(t,r)));return o.startsWith("../")?n:o}s(Wy,"normalizeRecallFile");function _V(e,t){let r=relative(e,resolve(e,t)).replaceAll("\\","/");return r===""?t.replaceAll("\\","/"):r}s(_V,"relativize");function qC(e){try{return realpathSync(e)}catch{let t=dirname(e);return t===e?e:resolve(qC(t),basename(e))}}s(qC,"safeRealpath");var jie="agentsmesh-lessons-seen";function Hy(e={}){if(e.disabled===true)return null;let t=e.explicit!==void 0&&e.explicit.trim().length>0?e.explicit.trim():Wm(e.env);if(t===void 0)return null;let r=Uie(t);return {sessionId:t,seen:Bie(r),path:r}}s(Hy,"openSessionDedup");function Uie(e){let t=e.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,200);return join(tmpdir(),jie,`${t}.json`)}s(Uie,"seenPath");function Bie(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(Bie,"loadSeen");function zy(e,t){return t.filter(r=>!e.seen.has(r.id))}s(zy,"filterUnseen");function Vy(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(Vy,"commitSeen");async function vd(e,t,r={}){try{await gt(e);}catch{}let n=Kh(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:Wy(t.file,e)},a=Hm(o,i),l=Hy({explicit:r.sessionId,disabled:r.noDedup}),c=l===null?a:zy(l,a),m=oy(e),p=zm(o,i,c,{limit:r.limit??m.limit,maxTokens:r.maxTokens===null?void 0:r.maxTokens??m.maxTokens});return l!==null&&Vy(l,p.map(u=>u.id)),eE(e,o,i,a,p,{bypassed:false}),{lessons:p,totalMatches:a.length,suppressed:a.length-c.length}}s(vd,"recallLessons");function eE(e,t,r,n,o,i={}){if(!Ra())return;let a=$L(t,r),l=s(m=>n.filter(({lesson:p})=>p.triggers.some(u=>m.has(u))).length,"countVia"),c=Wm();UK(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+Yl(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(eE,"recordRecallTelemetry");async function Fd(e,t,r={}){await gt(e);let n={file:t.triggers.files?.length??0,command:t.triggers.commands?.length??0,keyword:t.triggers.keywords?.length??0},o=r.knownPaths??La(e)??void 0;try{let i=await Xh(e,t,{...r,knownPaths:o});GL(e,n,i);let a=await yV(e,o);return a===null?i:{...i,autoPruned:a}}catch(i){throw GL(e,n,null),i}}s(Fd,"captureLesson");async function Jy(e,t,r,n={}){return wt(e,o=>Kie(o,t,r),{retries:n.retries})}s(Jy,"mergeLessons");function Kie(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:tE(o.triggers,n.triggers),topics:tE(o.topics,n.topics),evidence:tE(o.evidence,n.evidence)},e.lessons[t]={...n,status:"superseded",supersededBy:r},{loserId:t,keeperId:r}}s(Kie,"mergeInto");function tE(e,t){let r=[...e];for(let n of t)r.includes(n)||r.push(n);return r}s(tE,"union");var rE=String.raw`L\d+(?:\s*,\s*L\d+)*`,Wie=[new RegExp(String.raw`\s*\bSee\s+${rE}\.?`,"g"),new RegExp(String.raw`\s*\((?:${rE})\)\.?`,"g"),new RegExp(String.raw`\s*\[(?:${rE})\]\.?`,"g")],Hie=/\s*\(also relevant[^)]*\)\s*/g;function nE(e){let t=e;for(let r of Wie)t=t.replace(r,"");return t=t.replace(Hie," "),t.trim()}s(nE,"stripLegacyMarkers");function SV(e){let t=[];for(let[r,n]of Object.entries(e.lessons)){let o=nE(n.rule);o===n.rule||o.length===0||(t.push(r),e.lessons[r]={...n,rule:o});}return t.sort()}s(SV,"applyStrip");async function Yy(e,t={}){await gt(e);let r=Je(e);if(r===null)return {changedIds:[],changedCount:0};if(t.dryRun===true){let o=SV(r);return {changedIds:o,changedCount:o.length}}let n=[];return await wt(e,o=>{n=SV(o);}),{changedIds:n,changedCount:n.length}}s(Yy,"stripMarkersInGraph");function Aa(e){if(e instanceof v)throw e;if(e instanceof Qn)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(Aa,"wrapEngineError");async function RV(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 JC(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 Qn)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);Aa(r);}}s(RV,"importFromTarget");async function IV(e,t){try{let r={from:t.from,to:t.to,"dry-run":t.dry_run===!0},n=await vy(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);Aa(r);}}s(IV,"convert");async function zie(e,t){try{let r={"dry-run":t.dry_run===!0};t.targets&&t.targets.length>0&&(r.targets=t.targets.join(","));let{data:n}=await Xo(r,e.projectRoot,{printMatrix:!1}),o=n.files.filter(l=>l.status==="created"||l.status==="updated"),i={};for(let l of o){let c=i[l.target]??{filesWritten:0};i[l.target]={filesWritten:c.filesWritten+1};}let a={filesWritten:o.length,byTarget:i,lockfileUpdated:t.dry_run!==!0,errors:[],warnings:[]};return t.verbose===!0&&(a.files=n.files.map(l=>l.path)),a}catch(r){Aa(r);}}s(zie,"generate");async function Vie(e,t){try{let r=await Dd(e.projectRoot),n=await YC({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){Aa(r);}}s(Vie,"lint");async function Jie(e){try{let t=await Dd(e.projectRoot),r=await QC({config:t.config,configDir:t.configDir,canonicalDir:t.canonicalDir});return {drift:!r.inSync,missing:[...r.removed],extra:[...r.added],modified:[...r.modified]}}catch(t){Aa(t);}}s(Jie,"check");async function Yie(e,t){try{let r=await Dd(e.projectRoot),n=t.targets&&t.targets.length>0?t.targets:void 0,o=await XC({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){Aa(r);}}s(Yie,"diff");var nc={generate:zie,lint:Vie,check:Jie,diff:Yie,import:RV,convert:IV};var kV=z$1.object({}).strict(),LV=[{name:"list_target_capabilities",description:"List support matrix for all targets",inputSchema:kV,handler:s(()=>VC.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)=>VC.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)=>nc.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)=>nc.lint(e,t),"handler")},{name:"check",description:"Detect drift between canonical and lockfile",inputSchema:kV,handler:s(e=>nc.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)=>nc.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)=>nc.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)=>nc.convert(e,t),"handler")}];function oE(e){if(e instanceof v)throw e;let t=e instanceof Error?e.message:String(e),r=sp(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(oE,"wrapInstallError");function Xie(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(Xie,"toInstallFlags");function Qie(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(Qie,"toUninstallFlags");async function qie(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 Zl(Xie(t),[t.source],e.projectRoot);if(r.exitCode!==0)throw new v("IO_ERROR",`install exited ${r.exitCode}`);return r.data}catch(r){oE(r);}}s(qie,"install");async function Zie(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 Ty(Qie(t),t.names??[],e.projectRoot)).data}catch(r){oE(r);}}s(Zie,"uninstall");async function eae(e,t={}){try{let r={};return t.global===!0&&(r.global=!0),(await Py(r,e.projectRoot)).data}catch(r){oE(r);}}s(eae,"installsList");var Xy={install:qie,uninstall:Zie,installsList:eae};function tae(e){let t={force:true};return e.dry_run===true&&(t["dry-run"]=true),e.global===true&&(t.global=true),t}s(tae,"toRefreshFlags");function rae(e){if(e instanceof v)throw e;let t=e instanceof Error?e.message:String(e),r=sp(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(rae,"wrapRefreshError");async function nae(e,t={}){try{let r=await xy(tae(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){rae(r);}}s(nae,"refresh");var CV={refresh:nae};var oae=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.")}),sae=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.")}),iae=z$1.object({global:z$1.boolean().optional().describe("Read from `~/.agentsmesh/installs.yaml` instead of the project scope.")}),aae=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.")}),EV=[{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:oae,handler:s((e,t)=>Xy.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:sae,handler:s((e,t)=>Xy.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:iae,handler:s((e,t)=>Xy.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:aae,handler:s((e,t)=>CV.refresh(e,t),"handler")}];async function Qy(e,t,r){return wt(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(Qy,"deprecateLesson");async function OV(e,t){await gt(e.projectRoot);let r=Je(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(OV,"lessonsShow");async function wV(e,t){try{return await Qy(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(wV,"lessonsDeprecate");function sE(e){return e===void 0?[]:typeof e=="string"?e.length>0?[e]:[]:e.filter(t=>t.length>0)}s(sE,"toTriggerList");function lae(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(lae,"toEvidenceList");var mp={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.
|
|
697
|
-
`);let{lessons:n,totalMatches:o,suppressed:i,corrupt:a,newerVersion:l}=await
|
|
698
|
-
`);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 gt(e.projectRoot);let t=Je(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:OV,deprecate:wV,async add(e,t){try{return await Fd(e.projectRoot,{rule:t.rule,topic:t.topic,triggers:{files:sE(t.trigger_files??t.trigger_file),commands:sE(t.trigger_commands??t.trigger_cmd),keywords:sE(t.trigger_keywords??t.trigger_kw)},evidence:lae(t.evidence),rationale:t.rationale},{allowNewTopic:t.new_topic===!0,topicSummary:t.topic_summary})}catch(r){throw r instanceof Vn?new v("NOT_FOUND",`lessons_add: unknown topic "${r.topic}". Pass new_topic=true + topic_summary to create it.`,{code:r.code}):r instanceof hi||r instanceof yi||r instanceof gi?new v("VALIDATION_FAILED",`lessons_add: ${r.message}`,{code:r.code}):r}}};var cae=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(),oc=z$1.union([z$1.string(),z$1.array(z$1.string())]),mae=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:oc.optional().describe('file_glob triggers (e.g. ["src/cli/**/*.ts"] or a single "src/**").'),trigger_file:oc.optional().describe("Alias of `trigger_files` (matches the CLI `--trigger-file` flag)."),trigger_commands:oc.optional().describe("command_pattern triggers \u2014 regexes matched against shell commands."),trigger_cmd:oc.optional().describe("Alias of `trigger_commands` (matches the CLI `--trigger-cmd` flag)."),trigger_keywords:oc.optional().describe("keyword triggers \u2014 case-insensitive substrings of task descriptions."),trigger_kw:oc.optional().describe("Alias of `trigger_keywords` (matches the CLI `--trigger-kw` flag)."),evidence:oc.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(),bV=[{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:cae,handler:s((e,t)=>mp.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:mae,handler:s((e,t)=>mp.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=>mp.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)=>mp.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)=>mp.deprecate(e,t),"handler")}];function AV(e){let t=toJSONSchema(e,{target:"draft-07"});return delete t.$schema,t}s(AV,"zodToMcpSchema");var qy=[...q1,...iV,...gV,...LV,...EV,...bV],iE=qy.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")}));Ga();async function fae(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(fae,"findProjectRoot");async function aE(e){let t=await fae(e.cwd);return {projectRoot:t,loadCanonical:s(()=>Kt(t),"loadCanonical")}}s(aE,"resolveContext");function xV(e,t){let r=gae(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:hae(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(xV,"enrichValidationIssues");function gae(e){let t=e.shape;return t!==void 0&&typeof t=="object"?Object.keys(t):[]}s(gae,"objectShapeKeys");function hae(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=yae(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(hae,"nearestKey");function yae(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(yae,"editDistance");async function wae(){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(wae,"pkgVersion");function bae(e,t){return new RegExp("^"+e.replace(/\{[^}]+\}/g,"([^/]+)")+"$").test(t)}s(bae,"matchTemplate");function Aae(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(Aae,"extractTemplateParams");async function PV(){let e=new Server({name:"agentsmesh-mcp",version:await wae()},{capabilities:{tools:{},resources:{}}});e.setRequestHandler(ListToolsRequestSchema,async()=>({tools:qy.map(t=>({name:t.name,description:t.description,inputSchema:AV(t.inputSchema)}))})),e.setRequestHandler(CallToolRequestSchema,async t=>{let r=qy.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=xV(r.inputSchema,n.error.issues);throw new v("VALIDATION_FAILED","invalid input",a)}let o=await aE({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:sp(n instanceof Error?n.message:"unknown error")};return {isError:true,content:[{type:"text",text:JSON.stringify(o)}]}}}),e.setRequestHandler(ListResourcesRequestSchema,async()=>({resources:iE.map(t=>({uri:t.uri,name:t.name,description:t.description}))})),e.setRequestHandler(ReadResourceRequestSchema,async t=>{let r=iE.find(a=>a.uri===t.params.uri||bae(a.uri,t.params.uri));if(!r)throw new v("NOT_FOUND",`resource not found: ${t.params.uri}`);let n=await aE({cwd:process.cwd()}),o=Aae(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(PV,"startServer");fe();async function DV(e,t){AE(),await PV();}s(DV,"runMcp");var cE={output:""},mE=s(e=>typeof e=="string"&&e.length>0?e:void 0,"str"),NV=" \u2026[truncated]";function Tae(e){return e.length<=$m?e:e.slice(0,$m-NV.length)+NV}s(Tae,"clampRule");async function vV(e,t){let r;try{r=JSON.parse(e);}catch{return cE}let n=mE(r.tool_input?.file_path),o=mE(r.tool_input?.command);if(n===void 0&&o===void 0)return cE;let i=r.hook_event_name==="PreToolUse"?"PreToolUse":"PostToolUse",a={...n!==void 0?{file:n}:{},...o!==void 0?{command:o}:{}},{lessons:l}=await vd(t,a,{sessionId:mE(r.session_id)});if(l.length===0)return cE;let c=n??o??"",m=l.map(u=>`- ${Tae(u.lesson.rule)}`).join(`
|
|
696
|
+
`),{path:r,written:true})}};var die=/[;&|`$<>!\\\r\n]/u,fie=/^[A-Za-z_][A-Za-z0-9_]*$/u,gie=/^[A-Za-z][A-Za-z0-9_-]*$/u,hie=/^[A-Za-z][A-Za-z0-9_-]*(\([^)]*\))?$/u,gV=/[\r\n]/u,hV=/[\0\r\n]/u;function yie(e){return hV.test(e)?false:!e.split(/[/\\]/u).includes("..")}s(yie,"isSafeMcpCwd");function _ie(e){return z$1.string().min(1).max(512).refine(t=>!die.test(t),{message:`${e} must not contain shell metacharacters (;&|\`$<>!\\\\, newlines)`})}s(_ie,"noShellMeta");var JC=z$1.object({type:z$1.enum(["stdio","sse","http","streamable-http","streamable_http"]).optional(),description:z$1.string().max(1024).refine(e=>!hV.test(e),{message:"description must not contain NUL or newline characters"}).optional(),command:_ie("command").optional(),args:z$1.array(z$1.string().max(2048)).max(100).optional(),env:z$1.record(z$1.string().regex(fie,"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(gie,"header name must be a valid identifier"),z$1.string().max(8192)).optional(),cwd:z$1.string().max(2048).refine(yie,{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(),Sie=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"}),yV=z$1.string().max(256).refine(e=>!gV.test(e),{message:"hook matcher must not contain newlines"}),Rie=z$1.object({matcher:yV,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"}),Iie=z$1.object({matcher:yV,hooks:z$1.array(Sie).min(1).max(50)}).strict(),kie=z$1.union([Rie,Iie]),_V=z$1.record(z$1.string().min(1).max(64),z$1.array(kie).max(100)),Lie=z$1.string().min(1).max(256).refine(e=>!gV.test(e),{message:"permission pattern must not contain newlines"}).refine(e=>hie.test(e),{message:"permission pattern must match Tool or Tool(matcher) form"}),Hy=z$1.array(Lie).max(500);var Dd=z$1.object({}).strict(),Cie=[{name:"get_config",description:"Read agentsmesh.yaml",inputSchema:Dd,handler:s(e=>Er.getConfig(e),"handler"),resourceUri:"agentsmesh://config"},{name:"list_mcp_servers",description:"List MCP servers in canonical mcp.json",inputSchema:Dd,handler:s(e=>Er.listMcpServers(e),"handler"),resourceUri:"agentsmesh://canonical/mcp"},{name:"get_permissions",description:"Read permissions.yaml",inputSchema:Dd,handler:s(e=>Er.getPermissions(e),"handler"),resourceUri:"agentsmesh://canonical/permissions"},{name:"get_hooks",description:"Read hooks.yaml",inputSchema:Dd,handler:s(e=>Er.getHooks(e),"handler"),resourceUri:"agentsmesh://canonical/hooks"},{name:"get_ignore",description:"Read ignore patterns",inputSchema:Dd,handler:s(e=>Er.getIgnore(e),"handler"),resourceUri:"agentsmesh://canonical/ignore"}],Eie=[{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)=>Er.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:JC.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)=>Er.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:JC,merge:z$1.boolean().optional(),dry_run:z$1.boolean().optional()}),handler:s((e,t)=>Er.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)=>Er.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:Hy.optional().describe('Allowed tool patterns (e.g. ["Bash(npm run:*)"])'),deny:Hy.optional().describe("Denied tool patterns"),ask:Hy.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)=>Er.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:_V.describe("Full hooks structure (e.g. { PreToolUse: [...], PostToolUse: [...] })"),dry_run:z$1.boolean().optional().describe("Preview without writing")}),handler:s((e,t)=>Er.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)=>Er.updateIgnore(e,t),"handler")}],SV=[...Cie,...Eie];SL();cn();function Oie(){return Object.fromEntries(Ue.map(e=>[e,Object.fromEntries(Object.entries(UB).map(([t,r])=>[t,r[e]]))]))}s(Oie,"buildTargetIndex");var RV=Oie(),YC={async list(){return RV},async get(e){let t=RV[e.targetId];if(t===void 0)throw new v("NOT_FOUND",`unknown target: ${e.targetId}`);return {targetId:e.targetId,capabilities:t}}};ts();ts();Xd();tt();Jo();sn();rt();cn();async function XC(e,t){let r=ne(e);if(!r)throw new Qn(e,{supported:[...Ue,...ff().map(n=>n.id)]});return r.generators.importFrom(t.root,{scope:t.scope??"project"})}s(XC,"importFrom");async function Nd(e,t={}){let r=t.scope??"project",{config:n,context:o}=await _e(e,r);await ze(n,e);let{canonical:i}=await $t(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(Nd,"loadProjectContext");async function QC(e){let t=e.targetFilter?[...e.targetFilter]:void 0;return hy(e.config,e.canonical,e.projectRoot,t,{scope:e.scope})}s(QC,"lint");async function qC(e){let t=await Yo(e);return {...fy(t),results:t}}s(qC,"diff");async function ZC(e){return yy(e)}s(ZC,"check");ts();Jo();Ga();Xd();Te();rt();Ae();function rc(e,t={}){let r=Math.max(1,t.cap??Xh),n=oy(e),o=[],i=new Map;for(let[f,g]of Object.entries(e.lessons)){if(g.status!=="active")continue;if(t.trimOverCap===false||g.triggers.length<=r){i.set(f,g.triggers);continue}let h=[...g.triggers].sort((R,k)=>{let w=n.get(R),D=n.get(k);return w!==D?w-D:R<k?-1:1}),y=new Set(h.slice(r)),_=g.triggers.filter(R=>!y.has(R));i.set(f,_),o.push({id:f,removedTriggers:[...y],keptCount:_.length});}let a=[],l=[];if(t.knownPaths!==void 0){let f=sd(e,t.knownPaths);if(f.size>0){for(let[g,h]of i){let y=h.filter(R=>f.has(R));if(y.length===0)continue;let _=h.filter(R=>!f.has(R));_.length>=1?(i.set(g,_),a.push({id:g,removedTriggers:y,keptCount:_.length})):l.push(g);}l.sort();}}let c=new Set;for(let f of i.values())for(let g of f)c.add(g);let m=Object.keys(e.triggers).filter(f=>!c.has(f)).sort(),p=new Set;for(let f of Object.values(e.lessons))for(let g of f.topics)p.add(g);let u=Object.keys(e.topics).filter(f=>!p.has(f)).sort();return {removedTriggerIds:m,removedTopicIds:u,trimmedLessons:o,removedDeadGlobs:a,unreachableLessons:l,cap:r}}s(rc,"planPrune");function zy(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(zy,"applyPruneToGraph");function vd(e){return e.removedTriggerIds.length===0&&e.removedTopicIds.length===0&&e.trimmedLessons.length===0&&e.removedDeadGlobs.length===0}s(vd,"isEmptyPrunePlan");function Pie(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(Pie,"isAutoPruneEnabled");async function IV(e,t){if(!Pie(e))return null;let r=Je(e);if(r===null||vd(rc(r,{trimOverCap:false,knownPaths:t})))return null;let n={removedTriggers:0,removedTopics:0,detachedDeadGlobs:0};return await wt(e,i=>{let a=rc(i,{trimOverCap:false,knownPaths:t});vd(a)||(zy(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(IV,"maybeAutoPrune");function Vy(e,t){let r=e.replaceAll("\\","/"),n=kV(t,r);if(!n.startsWith("../"))return n;let o=kV(eE(t),eE(resolve(t,r)));return o.startsWith("../")?n:o}s(Vy,"normalizeRecallFile");function kV(e,t){let r=relative(e,resolve(e,t)).replaceAll("\\","/");return r===""?t.replaceAll("\\","/"):r}s(kV,"relativize");function eE(e){try{return realpathSync(e)}catch{let t=dirname(e);return t===e?e:resolve(eE(t),basename(e))}}s(eE,"safeRealpath");var Hie="agentsmesh-lessons-seen";function Jy(e={}){if(e.disabled===true)return null;let t=e.explicit!==void 0&&e.explicit.trim().length>0?e.explicit.trim():Wm(e.env);if(t===void 0)return null;let r=zie(t);return {sessionId:t,seen:Vie(r),path:r}}s(Jy,"openSessionDedup");function zie(e){let t=e.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,200);return join(tmpdir(),Hie,`${t}.json`)}s(zie,"seenPath");function Vie(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(Vie,"loadSeen");function Yy(e,t){return t.filter(r=>!e.seen.has(r.id))}s(Yy,"filterUnseen");function Xy(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(Xy,"commitSeen");async function Fd(e,t,r={}){try{await gt(e);}catch{}let n=zh(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:Vy(t.file,e)},a=Hm(o,i),l=Jy({explicit:r.sessionId,disabled:r.noDedup}),c=l===null?a:Yy(l,a),m=ay(e),p=zm(o,i,c,{limit:r.limit??m.limit,maxTokens:r.maxTokens===null?void 0:r.maxTokens??m.maxTokens});return l!==null&&Xy(l,p.map(u=>u.id)),rE(e,o,i,a,p,{bypassed:false}),{lessons:p,totalMatches:a.length,suppressed:a.length-c.length}}s(Fd,"recallLessons");function rE(e,t,r,n,o,i={}){if(!Ra())return;let a=UL(t,r),l=s(m=>n.filter(({lesson:p})=>p.triggers.some(u=>m.has(u))).length,"countVia"),c=Wm();zK(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+Yl(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(rE,"recordRecallTelemetry");async function Md(e,t,r={}){await gt(e);let n={file:t.triggers.files?.length??0,command:t.triggers.commands?.length??0,keyword:t.triggers.keywords?.length??0},o=r.knownPaths??La(e)??void 0;try{let i=await Zh(e,t,{...r,knownPaths:o});jL(e,n,i);let a=await IV(e,o);return a===null?i:{...i,autoPruned:a}}catch(i){throw jL(e,n,null),i}}s(Md,"captureLesson");async function Qy(e,t,r,n={}){return wt(e,o=>Jie(o,t,r),{retries:n.retries})}s(Qy,"mergeLessons");function Jie(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:nE(o.triggers,n.triggers),topics:nE(o.topics,n.topics),evidence:nE(o.evidence,n.evidence)},e.lessons[t]={...n,status:"superseded",supersededBy:r},{loserId:t,keeperId:r}}s(Jie,"mergeInto");function nE(e,t){let r=[...e];for(let n of t)r.includes(n)||r.push(n);return r}s(nE,"union");var oE=String.raw`L\d+(?:\s*,\s*L\d+)*`,Yie=[new RegExp(String.raw`\s*\bSee\s+${oE}\.?`,"g"),new RegExp(String.raw`\s*\((?:${oE})\)\.?`,"g"),new RegExp(String.raw`\s*\[(?:${oE})\]\.?`,"g")],Xie=/\s*\(also relevant[^)]*\)\s*/g;function sE(e){let t=e;for(let r of Yie)t=t.replace(r,"");return t=t.replace(Xie," "),t.trim()}s(sE,"stripLegacyMarkers");function LV(e){let t=[];for(let[r,n]of Object.entries(e.lessons)){let o=sE(n.rule);o===n.rule||o.length===0||(t.push(r),e.lessons[r]={...n,rule:o});}return t.sort()}s(LV,"applyStrip");async function qy(e,t={}){await gt(e);let r=Je(e);if(r===null)return {changedIds:[],changedCount:0};if(t.dryRun===true){let o=LV(r);return {changedIds:o,changedCount:o.length}}let n=[];return await wt(e,o=>{n=LV(o);}),{changedIds:n,changedCount:n.length}}s(qy,"stripMarkersInGraph");function Aa(e){if(e instanceof v)throw e;if(e instanceof Qn)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(Aa,"wrapEngineError");async function CV(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 XC(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 Qn)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);Aa(r);}}s(CV,"importFromTarget");async function EV(e,t){try{let r={from:t.from,to:t.to,"dry-run":t.dry_run===!0},n=await Gy(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);Aa(r);}}s(EV,"convert");async function Qie(e,t){try{let r={"dry-run":t.dry_run===!0};t.targets&&t.targets.length>0&&(r.targets=t.targets.join(","));let{data:n}=await Xo(r,e.projectRoot,{printMatrix:!1}),o=n.files.filter(l=>l.status==="created"||l.status==="updated"),i={};for(let l of o){let c=i[l.target]??{filesWritten:0};i[l.target]={filesWritten:c.filesWritten+1};}let a={filesWritten:o.length,byTarget:i,lockfileUpdated:t.dry_run!==!0,errors:[],warnings:[]};return t.verbose===!0&&(a.files=n.files.map(l=>l.path)),a}catch(r){Aa(r);}}s(Qie,"generate");async function qie(e,t){try{let r=await Nd(e.projectRoot),n=await QC({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){Aa(r);}}s(qie,"lint");async function Zie(e){try{let t=await Nd(e.projectRoot),r=await ZC({config:t.config,configDir:t.configDir,canonicalDir:t.canonicalDir});return {drift:!r.inSync,missing:[...r.removed],extra:[...r.added],modified:[...r.modified]}}catch(t){Aa(t);}}s(Zie,"check");async function eae(e,t){try{let r=await Nd(e.projectRoot),n=t.targets&&t.targets.length>0?t.targets:void 0,o=await qC({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){Aa(r);}}s(eae,"diff");var nc={generate:Qie,lint:qie,check:Zie,diff:eae,import:CV,convert:EV};var OV=z$1.object({}).strict(),wV=[{name:"list_target_capabilities",description:"List support matrix for all targets",inputSchema:OV,handler:s(()=>YC.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)=>YC.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)=>nc.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)=>nc.lint(e,t),"handler")},{name:"check",description:"Detect drift between canonical and lockfile",inputSchema:OV,handler:s(e=>nc.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)=>nc.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)=>nc.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)=>nc.convert(e,t),"handler")}];function iE(e){if(e instanceof v)throw e;let t=e instanceof Error?e.message:String(e),r=sp(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(iE,"wrapInstallError");function tae(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(tae,"toInstallFlags");function rae(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(rae,"toUninstallFlags");async function nae(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 Zl(tae(t),[t.source],e.projectRoot);if(r.exitCode!==0)throw new v("IO_ERROR",`install exited ${r.exitCode}`);return r.data}catch(r){iE(r);}}s(nae,"install");async function oae(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 Dy(rae(t),t.names??[],e.projectRoot)).data}catch(r){iE(r);}}s(oae,"uninstall");async function sae(e,t={}){try{let r={};return t.global===!0&&(r.global=!0),(await vy(r,e.projectRoot)).data}catch(r){iE(r);}}s(sae,"installsList");var Zy={install:nae,uninstall:oae,installsList:sae};function iae(e){let t={force:true};return e.dry_run===true&&(t["dry-run"]=true),e.global===true&&(t.global=true),t}s(iae,"toRefreshFlags");function aae(e){if(e instanceof v)throw e;let t=e instanceof Error?e.message:String(e),r=sp(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(aae,"wrapRefreshError");async function lae(e,t={}){try{let r=await Ny(iae(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){aae(r);}}s(lae,"refresh");var bV={refresh:lae};var cae=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.")}),mae=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.")}),pae=z$1.object({global:z$1.boolean().optional().describe("Read from `~/.agentsmesh/installs.yaml` instead of the project scope.")}),uae=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.")}),AV=[{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:cae,handler:s((e,t)=>Zy.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:mae,handler:s((e,t)=>Zy.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:pae,handler:s((e,t)=>Zy.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:uae,handler:s((e,t)=>bV.refresh(e,t),"handler")}];async function e_(e,t,r){return wt(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(e_,"deprecateLesson");async function TV(e,t){await gt(e.projectRoot);let r=Je(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(TV,"lessonsShow");async function xV(e,t){try{return await e_(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(xV,"lessonsDeprecate");function aE(e){return e===void 0?[]:typeof e=="string"?e.length>0?[e]:[]:e.filter(t=>t.length>0)}s(aE,"toTriggerList");function dae(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(dae,"toEvidenceList");var mp={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.
|
|
697
|
+
`);let{lessons:n,totalMatches:o,suppressed:i,corrupt:a,newerVersion:l}=await Fd(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.
|
|
698
|
+
`);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 gt(e.projectRoot);let t=Je(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:TV,deprecate:xV,async add(e,t){try{return await Md(e.projectRoot,{rule:t.rule,topic:t.topic,triggers:{files:aE(t.trigger_files??t.trigger_file),commands:aE(t.trigger_commands??t.trigger_cmd),keywords:aE(t.trigger_keywords??t.trigger_kw)},evidence:dae(t.evidence),rationale:t.rationale},{allowNewTopic:t.new_topic===!0,topicSummary:t.topic_summary})}catch(r){throw r instanceof Vn?new v("NOT_FOUND",`lessons_add: unknown topic "${r.topic}". Pass new_topic=true + topic_summary to create it.`,{code:r.code}):r instanceof hi||r instanceof yi||r instanceof gi?new v("VALIDATION_FAILED",`lessons_add: ${r.message}`,{code:r.code}):r}}};var fae=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(),oc=z$1.union([z$1.string(),z$1.array(z$1.string())]),gae=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:oc.optional().describe('file_glob triggers (e.g. ["src/cli/**/*.ts"] or a single "src/**").'),trigger_file:oc.optional().describe("Alias of `trigger_files` (matches the CLI `--trigger-file` flag)."),trigger_commands:oc.optional().describe("command_pattern triggers \u2014 regexes matched against shell commands."),trigger_cmd:oc.optional().describe("Alias of `trigger_commands` (matches the CLI `--trigger-cmd` flag)."),trigger_keywords:oc.optional().describe("keyword triggers \u2014 case-insensitive substrings of task descriptions."),trigger_kw:oc.optional().describe("Alias of `trigger_keywords` (matches the CLI `--trigger-kw` flag)."),evidence:oc.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(),PV=[{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:fae,handler:s((e,t)=>mp.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:gae,handler:s((e,t)=>mp.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=>mp.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)=>mp.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)=>mp.deprecate(e,t),"handler")}];function DV(e){let t=toJSONSchema(e,{target:"draft-07"});return delete t.$schema,t}s(DV,"zodToMcpSchema");var t_=[...rV,...mV,...SV,...wV,...AV,...PV],lE=t_.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")}));Ga();async function Sae(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(Sae,"findProjectRoot");async function cE(e){let t=await Sae(e.cwd);return {projectRoot:t,loadCanonical:s(()=>Kt(t),"loadCanonical")}}s(cE,"resolveContext");function vV(e,t){let r=Rae(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:Iae(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(vV,"enrichValidationIssues");function Rae(e){let t=e.shape;return t!==void 0&&typeof t=="object"?Object.keys(t):[]}s(Rae,"objectShapeKeys");function Iae(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=kae(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(Iae,"nearestKey");function kae(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(kae,"editDistance");async function Pae(){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(Pae,"pkgVersion");function Dae(e,t){return new RegExp("^"+e.replace(/\{[^}]+\}/g,"([^/]+)")+"$").test(t)}s(Dae,"matchTemplate");function Nae(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(Nae,"extractTemplateParams");async function FV(){let e=new Server({name:"agentsmesh-mcp",version:await Pae()},{capabilities:{tools:{},resources:{}}});e.setRequestHandler(ListToolsRequestSchema,async()=>({tools:t_.map(t=>({name:t.name,description:t.description,inputSchema:DV(t.inputSchema)}))})),e.setRequestHandler(CallToolRequestSchema,async t=>{let r=t_.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=vV(r.inputSchema,n.error.issues);throw new v("VALIDATION_FAILED","invalid input",a)}let o=await cE({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:sp(n instanceof Error?n.message:"unknown error")};return {isError:true,content:[{type:"text",text:JSON.stringify(o)}]}}}),e.setRequestHandler(ListResourcesRequestSchema,async()=>({resources:lE.map(t=>({uri:t.uri,name:t.name,description:t.description}))})),e.setRequestHandler(ReadResourceRequestSchema,async t=>{let r=lE.find(a=>a.uri===t.params.uri||Dae(a.uri,t.params.uri));if(!r)throw new v("NOT_FOUND",`resource not found: ${t.params.uri}`);let n=await cE({cwd:process.cwd()}),o=Nae(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(FV,"startServer");ue();async function MV(e,t){xE(),await FV();}s(MV,"runMcp");var pE={output:""},uE=s(e=>typeof e=="string"&&e.length>0?e:void 0,"str"),GV=" \u2026[truncated]";function vae(e){return e.length<=$m?e:e.slice(0,$m-GV.length)+GV}s(vae,"clampRule");async function $V(e,t){let r;try{r=JSON.parse(e);}catch{return pE}let n=uE(r.tool_input?.file_path),o=uE(r.tool_input?.command);if(n===void 0&&o===void 0)return pE;let i=r.hook_event_name==="PreToolUse"?"PreToolUse":"PostToolUse",a={...n!==void 0?{file:n}:{},...o!==void 0?{command:o}:{}},{lessons:l}=await Fd(t,a,{sessionId:uE(r.session_id)});if(l.length===0)return pE;let c=n??o??"",m=l.map(u=>`- ${vae(u.lesson.rule)}`).join(`
|
|
699
699
|
`),p=`Recalled agentsmesh lessons for ${c} \u2014 apply before your next action:
|
|
700
|
-
${m}`;return {output:JSON.stringify({hookSpecificOutput:{hookEventName:i,additionalContext:p}})}}s(
|
|
700
|
+
${m}`;return {output:JSON.stringify({hookSpecificOutput:{hookEventName:i,additionalContext:p}})}}s($V,"buildRecallHookOutput");function jV(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(jV,"summarizeCapture");var Fae=[{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")}],Mae=1800*1e3;function UV(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(UV,"percentile");function Gae(e,t){return t.length>0&&t.every(r=>e.triggers[r]?.kind==="keyword")}s(Gae,"isKeywordOnly");function $ae(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)>Mae)&&r++,t.push(r);}return t}s($ae,"sessionIndices");function jae(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=Yl(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(jae,"intraSessionRedundancy");function BV(e,t){let r=e.length,n=e.filter(_=>_.totalMatches===0).length,o=e.map(_=>_.returnedTokens),i=o.reduce((_,R)=>_+R,0),a=Object.values(t.lessons).filter(_=>_.status==="active"),l=a.reduce((_,R)=>_+Yl(R.rule),0),c=$ae(e),m=r===0?0:c[c.length-1]+1,p=e.filter(_=>_.bypassed===true).length,u=e.filter(_=>_.bypassed!==true).reduce((_,R)=>_+R.returnedTokens,0),f=l*m,g=e.filter(_=>_.totalMatches>0),h=g.filter(_=>_.matchedByKind.keyword>0&&_.matchedByKind.file===0&&_.matchedByKind.command===0).length,y=a.filter(_=>Gae(t,_.triggers)).length;return {totalRecalls:r,noMatchRate:r===0?0:n/r,matchCountHistogram:Fae.map(_=>({bucket:_.label,count:e.filter(R=>_.test(R.totalMatches)).length})),returnedTokens:{p50:UV(o,50),p90:UV(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:jae(e,c,t),reachability:{keywordOnlyRecallRate:g.length===0?0:h/g.length,keywordOnlyUnreachableLessons:y}}}s(BV,"summarizeRecall");function Ut(e,t){let r=e[t];return typeof r=="string"&&r.length>0?r:null}s(Ut,"stringFlag");function KV(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(KV,"listFlag");function r_(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(r_,"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 WV(e){let t=Ut(e,"format");return t==="md"||t==="json"||t==="plain"?t:"plain"}s(WV,"parseFormat");function HV(e){let t={},r=Ut(e,"file"),n=Ut(e,"cmd")??Ut(e,"command"),o=Ut(e,"keyword");return r!==null&&(t.file=r),n!==null&&(t.command=n),o!==null&&(t.keyword=o),t}s(HV,"queryFromFlags");function Ta(){return {version:1,lessons:{},topics:{},triggers:{}}}s(Ta,"emptyGraph");function zV(){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(zV,"todayIso");function VV(e,t,r){let n=[`# ${e}`,"",t,"","## Lessons",""];for(let[o,i]of r)n.push(`- **${o}** \u2014 ${i.rule}`);return `${n.join(`
|
|
701
701
|
`)}
|
|
702
|
-
`}s(
|
|
702
|
+
`}s(VV,"renderTopicMarkdown");function JV(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(`
|
|
703
703
|
`)}
|
|
704
|
-
`}s(
|
|
705
|
-
`):void 0}s(e_,"mergeWarnings");function $ae(e){if(existsSync(join(e,".agentsmesh")))return;let t=Qh(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($ae,"strayDirWarning");function pE(e,t,r){let n=HV(e,"top");if(n!==null)return Me("query",n,2);let o=HV(e,"max-tokens");if(o!==null)return Me("query",o,2);let i=Gae(e);if(i!==null)return Me("query",i,2);let a=jV(e),l=UV(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:Wy(l.file,t)},p=QK(t)??void 0,u=Kh(t);if(u.status==="corrupt"){let J={lessons:[],query:m,autoMigrated:r,totalMatches:0,warning:e_(`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:J}}if(u.status==="newer-version"){let J={lessons:[],query:m,autoMigrated:r,totalMatches:0,warning:e_(`lessons.json is version ${u.version}, newer than this build supports (${qu}) \u2014 recall returned no lessons. Upgrade agentsmesh to read it.`,p)};return {subcommand:"query",exitCode:0,format:a,data:J}}if(u.status==="absent"){let J=$ae(t),ee=e_(J??ad(),c,p);return {subcommand:"query",exitCode:0,format:a,data:{lessons:[],query:m,autoMigrated:r,totalMatches:0,warning:ee}}}let f=u.graph,g=Hm(f,m),h=Hy({explicit:Ut(e,"session")??void 0,disabled:e["no-dedup"]===true}),y=h===null?g:zy(h,g),_=oy(t),R=e.all===true?void 0:Md(e,"top")??_.limit,k=e.all===true?void 0:Md(e,"max-tokens")??_.maxTokens,w=zm(f,m,y,{limit:R,maxTokens:k});h!==null&&Vy(h,w.map(({id:J})=>J)),eE(t,f,m,g,w,{bypassed:e.all===true});let D=w.map(({id:J,lesson:ee,score:se})=>({id:J,rule:ee.rule,topics:[...ee.topics],triggers:[...ee.triggers],evidence:[...ee.evidence],score:se})),N=g.length-y.length,K={lessons:D,query:m,autoMigrated:r,totalMatches:g.length,...N>0?{suppressed:N}:{},...e.ids===true?{showIds:true}:{},...(()=>{let J=e_(c,p);return J?{warning:J}:{}})()};return {subcommand:"query",exitCode:0,format:a,data:K}}s(pE,"doQuery");function zV(e){return typeof e=="object"&&e!==null&&e.status==="deprecated"}s(zV,"isDeprecated");function jae(e,t,r){let n=Wh(t),o=Wh(r);if(n===o)return t;if(e!==void 0){let l=Wh(e);if(n===l)return r;if(o===l)return t}let i=zV(t),a=zV(r);return i!==a?i?t:r:n>o?t:r}s(jae,"pick");function uE(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?jae(e[o],i,a):i??a;}return n}s(uE,"mergeRecord");function VV(e,t,r){return {version:t.version,lessons:uE(e.lessons,t.lessons,r.lessons),topics:uE(e.topics,t.topics,r.topics),triggers:uE(e.triggers,t.triggers,r.triggers)}}s(VV,"mergeGraphs");function dE(e){try{let t=Hl.safeParse(JSON.parse(readFileSync(e,"utf8")));return t.success?t.data:null}catch{return null}}s(dE,"readGraphFile");function fE(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=dE(t),a=dE(r),l=dE(n);if(i===null||a===null||l===null)return o;let c=VV(i,a,l);return Jn(c).ok?(writeFileSync(r,td(c),"utf8"),{subcommand:"merge-driver",exitCode:0,data:{merged:true}}):o}s(fE,"doMergeDriver");function JV(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(JV,"untriggerLesson");function t_(e){return (e instanceof Error?e.message:String(e)).replace(/^(mutateLessonsGraph|mergeLessons):\s*/,"")}s(t_,"errMessage");async function gE(e,t,r){let n=t!==void 0&&t.length>0?t:null,o=Ut(e,"rule")??n,i=Ut(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:Qh(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=id(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:Zy(e,"trigger-file"),commands:Zy(e,"trigger-cmd"),keywords:Zy(e,"trigger-kw")},evidence:$V(e,"evidence"),rationale:Ut(e,"rationale")??void 0},{allowNewTopic:e["new-topic"]===!0,topicSummary:Ut(e,"topic-summary")??void 0}),...l?{locationNote:l}:{},...c?{activationNote:c}:{}}}}catch(m){return m instanceof Vn?Me("add",`Unknown topic: ${m.topic}. Pass --new-topic --topic-summary "..." to create it.`,1):m instanceof hi||m instanceof yi||m instanceof gi?Me("add",`${m.message}${$d()}`,2):Me("add",t_(m),1)}}s(gE,"doAdd");async function hE(e,t,r){if(t===void 0||t==="")return Me("deprecate","Usage: agentsmesh lessons deprecate <id> [--superseded-by <id>]",2);let n=Ut(e,"superseded-by");try{let{id:o,supersededBy:i}=await Qy(r,t,n);return {subcommand:"deprecate",exitCode:0,data:{id:o,supersededBy:i}}}catch(o){let i=t_(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(hE,"doDeprecate");async function yE(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 wt(r,i=>JV(i,e,t))}}catch(n){return Me("untrigger",t_(n),1)}}s(yE,"doUntrigger");async function _E(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 Jy(r,e,t)}}catch(n){return Me("merge",t_(n),1)}}s(_E,"doMerge");async function SE(e,t){let r=e["dry-run"]===true,n=await Yy(t,{dryRun:r});return {subcommand:"strip-markers",exitCode:0,data:{changedIds:n.changedIds,changedCount:n.changedCount,dryRun:r}}}s(SE,"doStripMarkers");async function RE(e,t){let r=e.force===true,n=e.merge===true;if(!r&&!n&&existsSync(Qo(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=Ut(e,"migrated-at")??BV(),i=await Km(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(RE,"doImportMd");function IE(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(IE,"toPruneData");async function kE(e,t){let r=Md(e,"cap");if(r!==null&&(!Number.isInteger(r)||r<1))return Me("prune","Invalid --cap: expected a positive integer.",2);let n=La(t)??void 0,o={...r!==null?{cap:r}:{},...n?{knownPaths:n}:{}};if(e.apply!==true){let c=Je(t)??Ta();return {subcommand:"prune",exitCode:0,data:IE(rc(c,o),false)}}let i=Je(t)??Ta(),a=rc(i,o);return Nd(a)?{subcommand:"prune",exitCode:0,data:IE(a,true)}:{subcommand:"prune",exitCode:0,data:await wt(t,c=>{let m=rc(c,o);return Ky(c,m),IE(m,true)})}}s(kE,"doPrune");function XV(e){let t=Je(e)??Ta(),r=Object.entries(t.topics).map(([o,i])=>({id:o,summary:i.summary})).sort((o,i)=>o.id<i.id?-1:1),n=id(e)?void 0:ad();return {subcommand:"topics",exitCode:0,data:{topics:r,...n?{setupHint:n}:{}}}}s(XV,"doTopics");function QV(e,t){if(e===void 0||e==="")return Me("show","Usage: agentsmesh lessons show <topic|lesson-id>",2);let r=Je(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=KV(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=WV(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(QV,"doShow");function qV(e){let t=Je(e)??Ta(),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=id(e)?void 0:ad();return {subcommand:"journal",exitCode:0,data:{entries:r,...n?{setupHint:n}:{}}}}s(qV,"doJournal");function ZV(e,t){let r=Je(t)??Ta(),n=GV(KK(t),r),o=FV(HK(t));return {subcommand:"stats",exitCode:0,format:e.json===true?"json":"text",data:{report:n,captureReport:o,hasLog:BK(t),hasCaptureLog:WK(t),telemetryEnabled:Ra()}}}s(ZV,"doStats");function eJ(e){let t;try{t=Je(e)??Ta();}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=La(e)??void 0,n=Jn(t,{knownPaths:r}),o={ok:n.ok,findings:n.findings};return {subcommand:"validate",exitCode:n.ok?0:1,data:o}}s(eJ,"doValidate");async function tJ(e){let t=await Vae(),{output:r}=await vV(t,e);return {subcommand:"hook",exitCode:0,data:{output:r}}}s(tJ,"doHook");var Hae=1e6;async function zae(e,t=Hae){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(zae,"readBoundedStream");async function Vae(){return process.stdin.isTTY===true?"":zae(process.stdin)}s(Vae,"readStdin");var Jae=["json","verbose","help"],Yae={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 rJ(e,t){let r=Yae[e];if(r===void 0)return null;let n=new Set([...r,...Jae]);for(let o of Object.keys(t))if(!n.has(o))return `Unknown flag --${o} for \`lessons ${e}\`.
|
|
706
|
-
Usage: ${Li[e].usage}`;return null}s(
|
|
707
|
-
`);return}if(!e.hasLog&&!e.hasCaptureLog){
|
|
708
|
-
`);return;case "merge-driver":return;case "query":return
|
|
709
|
-
`);return}if(e.lessons.length===0){S.info("(no matches)");return}let r=s((n,o)=>e.showIds===true?`[${n}] ${o}`:o,"withId");if(t==="md")e.lessons.forEach((n,o)=>S.info(`${o+1}. ${r(n.id,n.rule)}`));else for(let n of e.lessons)S.info(r(n.id,n.rule));e.totalMatches!==void 0&&e.totalMatches>e.lessons.length&&S.warn(`(showing ${e.lessons.length} of ${e.totalMatches} matches \u2014 raise --top <n> with --max-tokens <m>, or pass --all)`),e.suppressed!==void 0&&e.suppressed>0&&S.warn(`(${e.suppressed} already shown this session \u2014 deduped; pass --no-dedup to include)`);}s(
|
|
704
|
+
`}s(JV,"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 YV(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(YV,"validatePositiveIntFlag");function Kae(e){let t=e.format;return t===void 0||t==="plain"||t==="md"||t==="json"?null:"Invalid --format: expected plain|md|json."}s(Kae,"validateFormatFlag");function n_(...e){let t=e.filter(r=>r!==void 0&&r.length>0);return t.length>0?t.join(`
|
|
705
|
+
`):void 0}s(n_,"mergeWarnings");function Wae(e){if(existsSync(join(e,".agentsmesh")))return;let t=ey(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(Wae,"strayDirWarning");function dE(e,t,r){let n=YV(e,"top");if(n!==null)return Me("query",n,2);let o=YV(e,"max-tokens");if(o!==null)return Me("query",o,2);let i=Kae(e);if(i!==null)return Me("query",i,2);let a=WV(e),l=HV(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:Vy(l.file,t)},p=rW(t)??void 0,u=zh(t);if(u.status==="corrupt"){let J={lessons:[],query:m,autoMigrated:r,totalMatches:0,warning:n_(`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:J}}if(u.status==="newer-version"){let J={lessons:[],query:m,autoMigrated:r,totalMatches:0,warning:n_(`lessons.json is version ${u.version}, newer than this build supports (${Zu}) \u2014 recall returned no lessons. Upgrade agentsmesh to read it.`,p)};return {subcommand:"query",exitCode:0,format:a,data:J}}if(u.status==="absent"){let J=Wae(t),ee=n_(J??ld(),c,p);return {subcommand:"query",exitCode:0,format:a,data:{lessons:[],query:m,autoMigrated:r,totalMatches:0,warning:ee}}}let f=u.graph,g=Hm(f,m),h=Jy({explicit:Ut(e,"session")??void 0,disabled:e["no-dedup"]===true}),y=h===null?g:Yy(h,g),_=ay(t),R=e.all===true?void 0:Gd(e,"top")??_.limit,k=e.all===true?void 0:Gd(e,"max-tokens")??_.maxTokens,w=zm(f,m,y,{limit:R,maxTokens:k});h!==null&&Xy(h,w.map(({id:J})=>J)),rE(t,f,m,g,w,{bypassed:e.all===true});let D=w.map(({id:J,lesson:ee,score:se})=>({id:J,rule:ee.rule,topics:[...ee.topics],triggers:[...ee.triggers],evidence:[...ee.evidence],score:se})),N=g.length-y.length,K={lessons:D,query:m,autoMigrated:r,totalMatches:g.length,...N>0?{suppressed:N}:{},...e.ids===true?{showIds:true}:{},...(()=>{let J=n_(c,p);return J?{warning:J}:{}})()};return {subcommand:"query",exitCode:0,format:a,data:K}}s(dE,"doQuery");function XV(e){return typeof e=="object"&&e!==null&&e.status==="deprecated"}s(XV,"isDeprecated");function Hae(e,t,r){let n=Vh(t),o=Vh(r);if(n===o)return t;if(e!==void 0){let l=Vh(e);if(n===l)return r;if(o===l)return t}let i=XV(t),a=XV(r);return i!==a?i?t:r:n>o?t:r}s(Hae,"pick");function fE(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?Hae(e[o],i,a):i??a;}return n}s(fE,"mergeRecord");function QV(e,t,r){return {version:t.version,lessons:fE(e.lessons,t.lessons,r.lessons),topics:fE(e.topics,t.topics,r.topics),triggers:fE(e.triggers,t.triggers,r.triggers)}}s(QV,"mergeGraphs");function gE(e){try{let t=Hl.safeParse(JSON.parse(readFileSync(e,"utf8")));return t.success?t.data:null}catch{return null}}s(gE,"readGraphFile");function hE(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=gE(t),a=gE(r),l=gE(n);if(i===null||a===null||l===null)return o;let c=QV(i,a,l);return Jn(c).ok?(writeFileSync(r,rd(c),"utf8"),{subcommand:"merge-driver",exitCode:0,data:{merged:true}}):o}s(hE,"doMergeDriver");function qV(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(qV,"untriggerLesson");function o_(e){return (e instanceof Error?e.message:String(e)).replace(/^(mutateLessonsGraph|mergeLessons):\s*/,"")}s(o_,"errMessage");async function yE(e,t,r){let n=t!==void 0&&t.length>0?t:null,o=Ut(e,"rule")??n,i=Ut(e,"topic");if(o===null)return Me("add",`Missing rule \u2014 pass it positionally (\`add "<rule>"\`) or via --rule.${jd()}`,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).${jd()}`,2);let a=existsSync(join(r,".agentsmesh"))?null:ey(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=ad(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 Md(r,{rule:o,topic:i,triggers:{files:r_(e,"trigger-file"),commands:r_(e,"trigger-cmd"),keywords:r_(e,"trigger-kw")},evidence:KV(e,"evidence"),rationale:Ut(e,"rationale")??void 0},{allowNewTopic:e["new-topic"]===!0,topicSummary:Ut(e,"topic-summary")??void 0}),...l?{locationNote:l}:{},...c?{activationNote:c}:{}}}}catch(m){return m instanceof Vn?Me("add",`Unknown topic: ${m.topic}. Pass --new-topic --topic-summary "..." to create it.`,1):m instanceof hi||m instanceof yi||m instanceof gi?Me("add",`${m.message}${jd()}`,2):Me("add",o_(m),1)}}s(yE,"doAdd");async function _E(e,t,r){if(t===void 0||t==="")return Me("deprecate","Usage: agentsmesh lessons deprecate <id> [--superseded-by <id>]",2);let n=Ut(e,"superseded-by");try{let{id:o,supersededBy:i}=await e_(r,t,n);return {subcommand:"deprecate",exitCode:0,data:{id:o,supersededBy:i}}}catch(o){let i=o_(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(_E,"doDeprecate");async function SE(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 wt(r,i=>qV(i,e,t))}}catch(n){return Me("untrigger",o_(n),1)}}s(SE,"doUntrigger");async function RE(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 Qy(r,e,t)}}catch(n){return Me("merge",o_(n),1)}}s(RE,"doMerge");async function IE(e,t){let r=e["dry-run"]===true,n=await qy(t,{dryRun:r});return {subcommand:"strip-markers",exitCode:0,data:{changedIds:n.changedIds,changedCount:n.changedCount,dryRun:r}}}s(IE,"doStripMarkers");async function kE(e,t){let r=e.force===true,n=e.merge===true;if(!r&&!n&&existsSync(Qo(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=Ut(e,"migrated-at")??zV(),i=await Km(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(kE,"doImportMd");function LE(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(LE,"toPruneData");async function CE(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=La(t)??void 0,o={...r!==null?{cap:r}:{},...n?{knownPaths:n}:{}};if(e.apply!==true){let c=Je(t)??Ta();return {subcommand:"prune",exitCode:0,data:LE(rc(c,o),false)}}let i=Je(t)??Ta(),a=rc(i,o);return vd(a)?{subcommand:"prune",exitCode:0,data:LE(a,true)}:{subcommand:"prune",exitCode:0,data:await wt(t,c=>{let m=rc(c,o);return zy(c,m),LE(m,true)})}}s(CE,"doPrune");function eJ(e){let t=Je(e)??Ta(),r=Object.entries(t.topics).map(([o,i])=>({id:o,summary:i.summary})).sort((o,i)=>o.id<i.id?-1:1),n=ad(e)?void 0:ld();return {subcommand:"topics",exitCode:0,data:{topics:r,...n?{setupHint:n}:{}}}}s(eJ,"doTopics");function tJ(e,t){if(e===void 0||e==="")return Me("show","Usage: agentsmesh lessons show <topic|lesson-id>",2);let r=Je(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=VV(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=JV(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(tJ,"doShow");function rJ(e){let t=Je(e)??Ta(),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=ad(e)?void 0:ld();return {subcommand:"journal",exitCode:0,data:{entries:r,...n?{setupHint:n}:{}}}}s(rJ,"doJournal");function nJ(e,t){let r=Je(t)??Ta(),n=BV(JK(t),r),o=jV(XK(t));return {subcommand:"stats",exitCode:0,format:e.json===true?"json":"text",data:{report:n,captureReport:o,hasLog:VK(t),hasCaptureLog:YK(t),telemetryEnabled:Ra()}}}s(nJ,"doStats");function oJ(e){let t;try{t=Je(e)??Ta();}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=La(e)??void 0,n=Jn(t,{knownPaths:r}),o={ok:n.ok,findings:n.findings};return {subcommand:"validate",exitCode:n.ok?0:1,data:o}}s(oJ,"doValidate");async function sJ(e){let t=await qae(),{output:r}=await $V(t,e);return {subcommand:"hook",exitCode:0,data:{output:r}}}s(sJ,"doHook");var Xae=1e6;async function Qae(e,t=Xae){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(Qae,"readBoundedStream");async function qae(){return process.stdin.isTTY===true?"":Qae(process.stdin)}s(qae,"readStdin");var Zae=["json","verbose","help"],ele={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 iJ(e,t){let r=ele[e];if(r===void 0)return null;let n=new Set([...r,...Zae]);for(let o of Object.keys(t))if(!n.has(o))return `Unknown flag --${o} for \`lessons ${e}\`.
|
|
706
|
+
Usage: ${Li[e].usage}`;return null}s(iJ,"validateLessonsFlags");async function tle(e,t){if(e==="import-md")return false;if(e==="query"||e==="hook")try{return await gt(t)}catch{return false}return gt(t)}s(tle,"migrateForSubcommand");async function aJ(e,t,r){let n=t[0];if(n===void 0||n==="")return {subcommand:"help",exitCode:0,data:null};let o=iJ(n,e);if(o!==null)return {subcommand:"help",exitCode:2,error:o,data:null};let i=await tle(n,r);switch(n){case "query":return dE(e,r,i);case "add":return yE(e,t[1],r);case "topics":return eJ(r);case "show":return tJ(t[1],r);case "deprecate":return _E(e,t[1],r);case "merge":return RE(t[1],t[2],r);case "untrigger":return SE(t[1],t[2],r);case "strip-markers":return IE(e,r);case "journal":return rJ(r);case "validate":return oJ(r);case "stats":return nJ(e,r);case "prune":return CE(e,r);case "import-md":return kE(e,r);case "hook":return sJ(r);case "merge-driver":return hE(t.slice(1));default:return {subcommand:"help",exitCode:2,error:`Unknown lessons subcommand: ${n}`,data:null}}}s(aJ,"runLessons");ue();ue();function s_(e){return `${(e*100).toFixed(1)}%`}s(s_,"pct");function cJ(e,t){if(t==="json"){process.stdout.write(`${JSON.stringify({...e.report,capture:e.captureReport},null,2)}
|
|
707
|
+
`);return}if(!e.hasLog&&!e.hasCaptureLog){rle(e.telemetryEnabled);return}e.hasLog&&nle(e.report),e.hasCaptureLog&&ole(e);}s(cJ,"renderStats");function rle(e){e?S.info("(telemetry is ON here, but nothing has been recorded yet \u2014 telemetry is written by `lessons query` recalls and `lessons add` captures, not by `stats`. Run some `agentsmesh lessons` calls, then re-run stats.)"):S.info("(no lessons telemetry yet \u2014 recording happens during `lessons query` recalls and `lessons add` captures, NOT during `stats`. Set AGENTSMESH_LESSONS_TELEMETRY=1 in the environment that runs them \u2014 your shell for CLI calls, and/or the MCP server process for agent calls \u2014 then re-run `stats`.)");}s(rle,"renderEmptyStatsHint");function nle(e){let t=e.preloadBreakEven;S.info(`recalls: ${e.totalRecalls} no-match: ${s_(e.noMatchRate)} sessions: ${t.sessions} bypassed(--all): ${e.bypassedRecalls}`),S.info(`match counts: ${e.matchCountHistogram.map(r=>`${r.bucket}=${r.count}`).join(" ")}`),S.info(`returned tokens: p50=${e.returnedTokens.p50} p90=${e.returnedTokens.p90} max=${e.returnedTokens.max}`),S.info(`break-even (per session): preload ${t.sessions}\xD7${e.wholeActiveSetTokens}=${t.preloadTokens} vs mandatory recall=${t.mandatoryRecallTokens} \u2192 ${t.recallCheaper?"recall cheaper":"preload cheaper"} (ratio ${t.ratio.toFixed(2)})`),S.info(`redundancy: ${s_(e.redundancy.rate)} of delivered rule-tokens are intra-session repeats (coverage ${s_(e.redundancy.coverage)})`),S.info(`reachability: keyword-only recalls ${s_(e.reachability.keywordOnlyRecallRate)}, keyword-only-unreachable lessons ${e.reachability.keywordOnlyUnreachableLessons}`);}s(nle,"renderRecallStats");function ole(e){let t=e.captureReport,r=t.byTriggerKind,n=t.total===0?"\u2014":(e.report.totalRecalls/t.total).toFixed(2);S.info(`captures: ${t.total} blocked: ${t.blocked} new: ${t.newLessons} upsert: ${t.upserts} new-topics: ${t.newTopics} warned: ${t.withWarnings}`),S.info(`capture triggers by kind: file=${r.file} cmd=${r.command} kw=${r.keyword}`),S.info(`recall:capture ratio: ${n} recalls per capture`);}s(ole,"renderCaptureStats");function mJ(e){let t=e.removedTriggerIds.length,r=e.removedTopicIds.length,n=e.trimmedLessons.length,o=e.removedDeadGlobs.length;if(t===0&&r===0&&n===0&&o===0){S.success(`Lessons graph already lean (cap ${e.cap}) \u2014 nothing to prune.`),lJ(e.unreachableLessons);return}let i=e.applied?"Pruned":"Would prune";S.success(`${i}: ${o} dead glob${o===1?"":"s"} detached, ${t} dead trigger${t===1?"":"s"} removed, ${r} orphan topic${r===1?"":"s"} removed, ${n} over-cap lesson${n===1?"":"s"} trimmed (cap ${e.cap}).`);for(let a of e.trimmedLessons)S.info(` trim ${a.id}: -${a.removedCount} \u2192 ${a.keptCount} kept`);for(let a of e.removedDeadGlobs)S.info(` dead-glob ${a.id}: -${a.removedCount} \u2192 ${a.keptCount} kept`);lJ(e.unreachableLessons),e.applied||S.warn("Dry run \u2014 pass --apply to write. lessons.json is git-tracked, so prune is reversible.");}s(mJ,"renderPrune");function lJ(e){e.length!==0&&S.warn(`${e.length} lesson${e.length===1?"":"s"} unreachable (every trigger is a dead glob) \u2014 left intact to avoid stranding; re-point a trigger or deprecate: ${e.join(", ")}`);}s(lJ,"renderUnreachable");function pJ(e){for(let t of e.findings){let r=`${t.level.toUpperCase()} ${t.code}: ${t.message}`;t.level==="error"?S.error(r):S.warn(r);}e.ok&&S.success("Lessons graph: ok.");}s(pJ,"renderValidate");function dJ(e){if(e.error!==void 0&&e.error.length>0){S.error(e.error);return}switch(e.subcommand){case "help":return ple();case "hook":e.data.output.length>0&&process.stdout.write(`${e.data.output}
|
|
708
|
+
`);return;case "merge-driver":return;case "query":return sle(e.data,e.format);case "add":return ile(e.data);case "topics":return ale(e.data);case "show":return lle(e.data);case "deprecate":S.success(e.data.supersededBy===null?`Deprecated ${e.data.id}.`:`Superseded ${e.data.id} \u2192 ${e.data.supersededBy}.`);return;case "merge":e.exitCode===0&&S.success(`Merged ${e.data.loserId} \u2192 ${e.data.keeperId}.`);return;case "untrigger":S.success(`Removed trigger ${e.data.triggerId} from ${e.data.lessonId} (${e.data.remainingTriggerCount} trigger${e.data.remainingTriggerCount===1?"":"s"} left)${e.data.removedTriggerNode?"; trigger node garbage-collected (no other lesson used it)":""}.`);return;case "strip-markers":S.success(`${e.data.dryRun?"Would strip":"Stripped"} legacy markers from ${e.data.changedCount} lesson${e.data.changedCount===1?"":"s"}.`);return;case "journal":return cle(e.data);case "validate":return pJ(e.data);case "prune":return mJ(e.data);case "stats":return cJ(e.data,e.format);case "import-md":return mle(e.data)}}s(dJ,"renderLessons");function sle(e,t){if(e.autoMigrated&&S.warn("lessons.json was auto-migrated from index.yaml on first invocation."),e.warning!==void 0&&e.warning.length>0&&S.warn(e.warning),t==="json"){process.stdout.write(`${JSON.stringify(e,null,2)}
|
|
709
|
+
`);return}if(e.lessons.length===0){S.info("(no matches)");return}let r=s((n,o)=>e.showIds===true?`[${n}] ${o}`:o,"withId");if(t==="md")e.lessons.forEach((n,o)=>S.info(`${o+1}. ${r(n.id,n.rule)}`));else for(let n of e.lessons)S.info(r(n.id,n.rule));e.totalMatches!==void 0&&e.totalMatches>e.lessons.length&&S.warn(`(showing ${e.lessons.length} of ${e.totalMatches} matches \u2014 raise --top <n> with --max-tokens <m>, or pass --all)`),e.suppressed!==void 0&&e.suppressed>0&&S.warn(`(${e.suppressed} already shown this session \u2014 deduped; pass --no-dedup to include)`);}s(sle,"renderQuery");function ile(e){if(!e.isNewLesson){if(e.newTriggerIds.length>0){let t=e.newTriggerIds.length;S.success(`Updated lesson: ${e.id} (+${t} trigger${t===1?"":"s"})`);}else S.info(`Existing lesson: ${e.id} (no change)`);uJ(e);return}S.success(`Added lesson: ${e.id}`),e.isNewTopic&&S.info(" created new topic"),e.newTriggerIds.length>0&&S.info(` new triggers: ${e.newTriggerIds.join(", ")}`),uJ(e);}s(ile,"renderAdd");function uJ(e){e.locationNote!==void 0&&S.warn(e.locationNote),e.activationNote!==void 0&&S.warn(e.activationNote);for(let r of e.warnings)S.warn(`${r.code}: ${r.message}`);let t=e.autoPruned;t!==void 0&&S.info(` auto-pruned: ${t.removedTriggers} orphan trigger${t.removedTriggers===1?"":"s"}, ${t.removedTopics} orphan topic${t.removedTopics===1?"":"s"}, ${t.detachedDeadGlobs} dead glob${t.detachedDeadGlobs===1?"":"s"} detached (git-reversible)`);}s(uJ,"renderGuardrails");function ale(e){if(e.topics.length===0)S.info("(no topics)");else for(let t of e.topics)S.info(`${t.id} ${t.summary}`);e.setupHint!==void 0&&S.warn(e.setupHint);}s(ale,"renderTopics");function lle(e){process.stdout.write(e.markdown);}s(lle,"renderShow");function cle(e){for(let t of e.entries)S.info(`${t.createdAt} ${t.id} ${t.rule}`);e.setupHint!==void 0&&S.warn(e.setupHint);}s(cle,"renderJournal");function mle(e){S.success(`Imported lessons: topics=${e.topicCount} lessons=${e.lessonCount} triggers=${e.triggerCount}`),S.info(` graph: ${e.wroteGraphPath.replaceAll("\\","/")}`),e.deletedPaths.length>0&&S.info(` removed legacy: ${e.deletedPaths.length} path${e.deletedPaths.length===1?"":"s"}`);}s(mle,"renderImportMd");function ple(){S.info("Usage: agentsmesh lessons <subcommand> [args] [flags]"),S.info(""),S.info("Subcommands:");for(let e of Object.values(Li)){let t=e.usage.replace(/^agentsmesh lessons /,""),r=e.summary!==void 0?` (${e.summary})`:"";S.info(` ${t}${r}`);}}s(ple,"printHelp");function at(e){let t={};for(let[r,n]of Object.entries(e))t[r]=Array.isArray(n)?n[n.length-1]:n;return t}s(at,"narrowFlags");var fJ={generate:s(async(e,t)=>{let r=at(e);M.intro("agentsmesh generate");let n=M.spinner();n.start("Generating tool config\u2026");let o=await Xo(r,void 0,{printMatrix:false});if(n.stop("Generate complete"),ct("generate",o,r,()=>Mm(o)),M.outro("Done"),r.json!==true){let i=await vm(r,process.cwd());Fm(i,{verbose:r.verbose===true});}},"generate"),init:s(async(e,t)=>{let r=process.stdin.isTTY===true&&process.stdout.isTTY===true&&e.yes!==true&&e.json!==true,n=r?{prompter:wW()}:{},o=await CW(process.cwd(),{yes:e.yes===true,global:e.global===true,lessons:e.lessons===true},n),i=r&&o.data.lessonsOnly!==true;ct("init",o,at(e),i?()=>{}:()=>OW(o));},"init"),import:s(async(e,t)=>{let r=at(e);M.intro("agentsmesh import");let n=M.spinner();n.start("Importing\u2026");let o=await TW(r);n.stop("Import complete"),ct("import",o,r,()=>HW(o)),M.outro("Done");},"import"),diff:s(async(e,t)=>{let r=at(e),n=await PW(r);ct("diff",n,r,()=>zW(n));},"diff"),lint:s(async(e,t)=>{let r=at(e),n=await BW(r);ct("lint",n,r,()=>KW(n));},"lint"),check:s(async(e,t)=>{let r=at(e),n=await XW(r);ct("check",n,r,()=>WW(n));},"check"),merge:s(async(e,t)=>{let r=at(e),n=await ZW(r);ct("merge",n,r,()=>VW(n));},"merge"),matrix:s(async(e,t)=>{let r=at(e),n=await vm(r);ct("matrix",n,r,()=>Fm(n,{verbose:r.verbose===true}));},"matrix"),watch:s(async(e,t)=>{let r=at(e);if(r.json===true){lc("watch",{success:false,error:"--json is not supported with watch"}),process.exit(1);return}let n=await YW(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=at(e);r.json===true&&(r.force=true),M.intro("agentsmesh install");let n=M.spinner();n.start("Installing\u2026");let o=await s1(r,t,process.cwd());n.stop("Install complete"),ct("install",o,r,()=>i1(o)),M.outro("Done");},"install"),uninstall:s(async(e,t)=>{let r=at(e);r.json===true&&(r.force=true),M.intro("agentsmesh uninstall");let n=M.spinner();n.start("Removing\u2026");let o=await R1(r,t,process.cwd());n.stop("Uninstall complete"),ct("uninstall",o,r,()=>I1(o)),M.outro("Done");},"uninstall"),refresh:s(async(e,t)=>{let r=at(e);M.intro("agentsmesh refresh");let n=M.spinner();n.start("Refreshing\u2026");let o=await T1(r,t,process.cwd());n.stop("Refresh complete"),ct("refresh",o,r,()=>x1(o)),M.outro("Done");},"refresh"),installs:s(async(e,t)=>{let r=at(e),n=await D1(r,t,process.cwd());ct("installs",n,r,()=>N1(n));},"installs"),plugin:s(async(e,t)=>{let r=at(e),n=await G1(r,t,process.cwd());ct("plugin",n,r,()=>$1(n));},"plugin"),target:s(async(e,t)=>{let r=at(e),n=await J1(r,t,process.cwd());ct("target",n,r,()=>Y1(n));},"target"),convert:s(async(e,t)=>{let r=at(e);M.intro("agentsmesh convert");let n=M.spinner();n.start("Converting\u2026");let o=await Gy(r);n.stop("Convert complete"),ct("convert",o,r,()=>X1(o)),M.outro("Done");},"convert"),mcp:s(async(e,t)=>{await MV(at(e));},"mcp"),lessons:s(async(e,t)=>{let r=await aJ(e,t,process.cwd());ct("lessons",r,at(e),()=>dJ(r)),r.exitCode!==0&&process.exit(r.exitCode);},"lessons")};var fle=new Set(["json","verbose","help"]);function EE(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(EE,"setFlag");function gle(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(fle.has(a)){EE(t,a,true);continue}let l=e[o+1];l===void 0||l.startsWith("--")?EE(t,a,true):(EE(t,a,l),o++);continue}n==="help"?n=i:r.push(i);}return {command:n,flags:t,args:r}}s(gle,"parseArgs");var hle=bE(fJ);async function yle(e){let{command:t,flags:r,args:n}=e;if(t==="help"){m_();return}if(t==="version"){NE();return}if(r.help===true){Bd(t,n);return}r.json===true&&TE(),await hle.route(t,r,n);}s(yle,"main");function _le(){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(_le,"isMainModule");if(_le()){let e=gle(process.argv.slice(2));yle(e).catch(t=>vE(t instanceof Error?t:new Error(String(t)),{verbose:e.flags.verbose===true,json:e.flags.json===true,command:e.command}));}export{gle as parseArgs};
|