@ev-ai/agent-hook 1.2.3 → 1.2.5

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/dist/cli.mjs CHANGED
@@ -2,50 +2,50 @@
2
2
  import { createRequire as __createRequire } from 'node:module';
3
3
  const require = __createRequire(import.meta.url);
4
4
 
5
- var pu=Object.create;var Ao=Object.defineProperty;var fu=Object.getOwnPropertyDescriptor;var mu=Object.getOwnPropertyNames;var gu=Object.getPrototypeOf,_u=Object.prototype.hasOwnProperty;var Pn=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Oe=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var hu=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of mu(t))!_u.call(e,o)&&o!==n&&Ao(e,o,{get:()=>t[o],enumerable:!(r=fu(t,o))||r.enumerable});return e};var Xe=(e,t,n)=>(n=e!=null?pu(gu(e)):{},hu(t||!e||!e.__esModule?Ao(n,"default",{value:e,enumerable:!0}):n,e));var zt=Oe(w=>{"use strict";Object.defineProperty(w,"__esModule",{value:!0});w.MCP_MISSING_LAUNCH_SERIALIZED=w.MCP_LAUNCH_IDENTITY_ALGORITHM=void 0;w.foldMcpName=oi;w.buildMcpFamilyCanonicalKey=Gd;w.launchContainsCredentials=Vd;w.serializeMcpLaunchIdentity=si;w.hashMcpLaunchIdentity=it;w.projectMcpMissingLaunchIdentity=Yd;w.projectMcpLaunchIdentity=Xd;w.maskMcpLaunchForDisplay=qd;w.normalizeMcpToolNames=Qd;var Kd=Pn("node:crypto");w.MCP_LAUNCH_IDENTITY_ALGORITHM="mcp-launch-v1";w.MCP_MISSING_LAUNCH_SERIALIZED=`${w.MCP_LAUNCH_IDENTITY_ALGORITHM}|missing`;function de(e){return e.toLocaleLowerCase("en-US")}function oi(e){return de(e)}function Gd(e){return`interface:${oi(e)}`}var ri=new Set(["access_token","api_key","apikey","auth","authorization","key","password","secret","token"]),zd=/^(?:--?(?:token|api[-_]?key|password|secret|authorization)(?:=|\s+)|(?:sk-|ghp_|xox[baprs]-|Bearer\s+))/i;function je(e){return`${Buffer.byteLength(e,"utf8")}:${e}`}function Vd(e){return e.kind==="url"?Wd(e.url):e.kind==="command"?e.arguments.some(t=>zd.test(t)):!1}function Wd(e){try{let t=new URL(e);if(t.username.length>0||t.password.length>0)return!0;for(let n of t.searchParams.keys())if(ri.has(de(n)))return!0;return!1}catch{let t=e.split("://",2),n=t.length===2?t[1]:e,r=n.indexOf("@"),o=n.indexOf("/");if(r>0&&(o===-1||r<o))return!0;let s=e.split("?",2)[1];return s===void 0?!1:s.split("&").some(i=>{let a=de(i.split("=",1)[0]??"");return ri.has(a)})}}function si(e){if(e.kind==="url")return[w.MCP_LAUNCH_IDENTITY_ALGORITHM,"url",je(de(e.url))].join("|");if(e.kind==="command"){let t=[...e.arguments].map(n=>de(n)).sort((n,r)=>n<r?-1:n>r?1:0);return[w.MCP_LAUNCH_IDENTITY_ALGORITHM,"command",je(de(e.command)),String(t.length),...t.map(je)].join("|")}return[w.MCP_LAUNCH_IDENTITY_ALGORITHM,"unknown",je(e.installationRootExternalKey),je(e.sourcePath),je(e.nativeKey)].join("|")}function it(e){return(0,Kd.createHash)("sha256").update(e).digest("hex")}var Jd=it(w.MCP_MISSING_LAUNCH_SERIALIZED);function Yd(){return{kind:"unknown",arguments:[],serialized:w.MCP_MISSING_LAUNCH_SERIALIZED,contentHash:Jd}}function Xd(e){let t=si(e);return e.kind==="url"?{kind:"url",url:de(e.url),arguments:[],serialized:t,contentHash:it(t)}:e.kind==="command"?{kind:"command",command:de(e.command),arguments:[...e.arguments].map(n=>de(n)).sort((n,r)=>n<r?-1:n>r?1:0),serialized:t,contentHash:it(t)}:{kind:"unknown",arguments:[],serialized:t,contentHash:it(t)}}var Zd=/^(https?:\/\/)([^/?#]*@)/i;function qd(e){return e.replace(Zd,"$1***@").replace(/([?&](?:access_token|api_key|apikey|auth|authorization|key|password|secret|token)=)([^&]*)/gi,"$1***")}function Qd(e){let t=new Set,n=[];for(let r of e)r.length===0||t.has(r)||(t.add(r),n.push(r));return n.sort((r,o)=>r<o?-1:r>o?1:0),n}});var Wt=Oe(re=>{"use strict";Object.defineProperty(re,"__esModule",{value:!0});re.PACKAGE_FIELD_MAX=void 0;re.npxExecBin=ii;re.packageNameFromSpec=Vt;re.pinnedPackageVersionFromSpec=ai;re.pinnedPackageVersionFromNpx=cp;re.npxPackageSpecs=ci;re.PACKAGE_FIELD_MAX=128;var ep=/^(?:@[A-Za-z0-9~-][A-Za-z0-9._~-]*\/)?[A-Za-z0-9~-][A-Za-z0-9._~-]*$/,tp=new Set(["-p","--package"]),np=new Set(["-c","--call"]),rp=new Set(["--registry","--userconfig","--globalconfig","--prefix","--cache","--node-options","--workspace","-w","--loglevel"]),op=new Set(["-y","--yes","-n","--no","-q","-s","--quiet","--silent","--offline","--prefer-offline","--prefer-online","--ignore-existing","--ignore-scripts","--legacy-peer-deps","--foreground-scripts"]),sp=/^--no-/;function ip(e){return op.has(e)||sp.test(e)}function ii(e){let n=(e.replace(/\\/g,"/").split("/").pop()??"").replace(/\.(cmd|exe|bat|ps1)$/i,"").toLowerCase();return n==="npx"?"npx":n==="npm"?"npm":null}var ap=/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/;function Vt(e){if(e.length===0||e.length>re.PACKAGE_FIELD_MAX)return null;let t=e.lastIndexOf("@"),n=t>0?e.slice(0,t):e;return ep.test(n)?n:null}function ai(e){let t=Vt(e);if(t===null||!e.startsWith(`${t}@`))return;let n=e.slice(t.length+1);return ap.test(n)?n:void 0}function cp(e,t){for(let n of ci(e,t)){let r=ai(n);if(r!==void 0)return r}}function ci(e,t){let n=ii(e);if(n===null)return[];let r=[...t];if(n==="npm"){let i=r[0]?.toLowerCase();if(i!=="exec"&&i!=="x")return[];r=r.slice(1)}let o=[],s=null;for(let i=0;i<r.length;i+=1){let a=r[i]??"";if(a==="--"){s=r[i+1]??null;break}if(!a.startsWith("-")){s=a;break}let c=a.indexOf("="),l=c===-1?a:a.slice(0,c);if(np.has(l))return[];if(tp.has(l)){let u=c===-1?r[i+1]:a.slice(c+1);u!==void 0&&u.length>0&&o.push(u),c===-1&&(i+=1);continue}if(!(c!==-1||ip(l))){if(rp.has(l)){i+=1;continue}return[]}}return o.length>0?o.every(i=>Vt(i)!==null)?o:[]:s===null||Vt(s)===null?[]:[s]}});var ui=Oe(Te=>{"use strict";Object.defineProperty(Te,"__esModule",{value:!0});Te.McpPackageEcosystem=void 0;Te.resolveMcpPackageIdentity=Rp;var up=zt(),fr=Wt();Te.McpPackageEcosystem={NPM:"npm",PYPI:"pypi"};var lp=/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/,dp=/^[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$/,pp=/^(?:\d+!)?\d+(?:\.\d+)*(?:(?:a|b|rc)\d+)?(?:\.post\d+)?(?:\.dev\d+)?(?:\+[0-9A-Za-z]+(?:[.][0-9A-Za-z]+)*)?$/;function fp(e){let n=(e.replaceAll("\\","/").split("/").pop()??"").replace(/\.(cmd|exe|bat|ps1)$/i,"").toLowerCase();return n==="uvx"||n==="uv"||n==="pipx"?n:null}var mp=new Set(["--from","--spec"]),gp=new Set(["--python","-p","--with","--with-editable","--with-requirements","--index","--index-url","--default-index","--extra-index-url","--find-links","-f","--constraint","-c","--override","--refresh-package","--cache-dir","--directory","--project","--config-file","--color","--exclude-newer","--pip-args","--verbose-pip"]),_p=new Set(["-q","--quiet","-v","--verbose","-n","--native-tls","--offline","--isolated","--preview","--refresh","--reinstall","--upgrade","-U","--force","--system","--system-site-packages","--path","--managed-python","--progress"]),hp=/^--no-/;function Sp(e,t){let n=fp(e);if(n===null)return null;let r=[...t];if(n==="uv"){if(r[0]?.toLowerCase()!=="tool"||r[1]?.toLowerCase()!=="run")return null;r=r.slice(2)}else if(n==="pipx"){if(r[0]?.toLowerCase()!=="run")return null;r=r.slice(1)}let o=null,s=null;for(let i=0;i<r.length;i+=1){let a=r[i]??"";if(a==="--"){s=r[i+1]??null;break}if(!a.startsWith("-")){s=a;break}let c=a.indexOf("="),l=c===-1?a:a.slice(0,c);if(mp.has(l)){let u=c===-1?r[i+1]:a.slice(c+1);u!==void 0&&u.length>0&&(o=u),c===-1&&(i+=1);continue}if(!(c!==-1||_p.has(l)||hp.test(l))){if(gp.has(l)){i+=1;continue}return null}}return o??s}function Ep(e){if(e.length===0||e.length>fr.PACKAGE_FIELD_MAX)return null;let t=e.includes("==")?"==":e.includes("@")?"@":null;if(t===null)return null;let n=e.indexOf(t),r=e.slice(0,n),o=e.slice(n+t.length);return!dp.test(r)||!pp.test(o)?null:{ecosystem:Te.McpPackageEcosystem.PYPI,packageName:r,version:o}}function yp(e){let t=(0,fr.packageNameFromSpec)(e);if(t===null||!e.startsWith(`${t}@`))return null;let n=e.slice(t.length+1);return lp.test(n)?{ecosystem:Te.McpPackageEcosystem.NPM,packageName:t,version:n}:null}function Rp(e){if(e?.kind!=="command"||(0,up.launchContainsCredentials)(e))return;for(let n of(0,fr.npxPackageSpecs)(e.command,e.arguments)){let r=yp(n);if(r!==null)return r}let t=Sp(e.command,e.arguments);if(t!==null)return Ep(t)??void 0}});var gi=Oe(pe=>{"use strict";Object.defineProperty(pe,"__esModule",{value:!0});pe.EMPTY_NPM_PUBLISHER=void 0;pe.isNpmRegistryPublisher=Ip;pe.displayPublisherName=Ap;pe.classifyMcpProvenance=wp;var pi=zt(),mr=Wt();pe.EMPTY_NPM_PUBLISHER="npm:";var li="npm:",Cp=/^[A-Za-z0-9._-]+$/;function Ip(e){return e.startsWith(li)&&e!==pe.EMPTY_NPM_PUBLISHER&&Cp.test(e.slice(li.length))}function Ap(e){if(!(e==null||e===""||e===pe.EMPTY_NPM_PUBLISHER))return e}function di(e){let t=e.split(".").map(Number);return t.length!==4||t.some(n=>!Number.isInteger(n)||n<0||n>255)?!1:t[0]===0||t[0]===10||t[0]===127||t[0]===169&&t[1]===254||t[0]===172&&(t[1]??0)>=16&&(t[1]??0)<=31||t[0]===192&&t[1]===168}function kp(e){let t=/^::ffff:(\d{1,3}(?:\.\d{1,3}){3})$/i.exec(e);if(t?.[1])return t[1];let n=/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i.exec(e);if(!n)return;let r=Number.parseInt(n[1],16),o=Number.parseInt(n[2],16);return`${r>>8&255}.${r&255}.${o>>8&255}.${o&255}`}function gr(e){return e.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.$/,"")}function Op(e){let t=gr(e),n=kp(t);return t==="localhost"||t.endsWith(".localhost")||t==="::1"||t.endsWith(".local")||!t.includes(".")&&!t.includes(":")||di(t)||n!==void 0&&di(n)||/^(?:fc|fd)[0-9a-f]{2}:/i.test(t)||/^fe[89ab][0-9a-f]:/i.test(t)}function xp(e){let t=gr(e);return t.includes(":")||/^[0-9.]+$/.test(t)||t.split(".").filter(Boolean).length<2?null:t}function Pp(e){let t=gr(e.hostname),n=t.includes(":")?`[${t}]`:t,r=e.port?`:${e.port}`:"";return`${e.protocol}//${n}${r}`}function fi(e){let t={kind:"url",url:e};if((0,pi.launchContainsCredentials)(t))return{origin:"UNKNOWN"};try{let n=new URL(e);if(!["http:","https:"].includes(n.protocol)||Op(n.hostname))return{origin:"UNKNOWN"};let r=xp(n.hostname);return{origin:"THIRD_PARTY",...r===null?{}:{publisherName:r},packageSourceUrl:Pp(n)}}catch{return{origin:"UNKNOWN"}}}var mi="mcp-remote";function bp(e,t){if(e===mi)return t.find(n=>/^https?:\/\//i.test(n))}function Tp(e,t){return{origin:"THIRD_PARTY",...t?{publisherName:t}:{},packageName:e,packageKey:e}}function Np(e,t,n){let r=bp(e,t);return r!==void 0?fi(r):e===mi?{origin:"UNKNOWN"}:Tp(e,n)}function vp(e){let t=e.replaceAll("\\","/");return t.startsWith("~/")||t.startsWith("/")||/^[A-Za-z]:\//.test(t)?!1:t.startsWith("./")||t.startsWith("../")||t==="scripts"||t.startsWith("scripts/")}function wp(e){let t=e.launch;if(t===void 0||t.kind==="unknown")return{origin:"UNKNOWN"};if((0,pi.launchContainsCredentials)(t))return{origin:"UNKNOWN"};if(t.kind==="url")return fi(t.url);let r=(0,mr.npxPackageSpecs)(t.command,t.arguments)[0];if(r!==void 0){let o=(0,mr.packageNameFromSpec)(r);if(o===null)return{origin:"UNKNOWN"};let s=Np(o,t.arguments,e.publisherName),i=typeof e.packageName=="string"?(0,mr.packageNameFromSpec)(e.packageName):null;return i!==null&&i===o&&s.packageName!==void 0?{...s,packageName:i,packageKey:i}:s}return vp(t.command)?{origin:"INTERNAL"}:{origin:"UNKNOWN"}}});var _i=Oe(Z=>{"use strict";Object.defineProperty(Z,"__esModule",{value:!0});Z.parseFrontmatterField=Z.parseFrontmatterDescription=Z.usableCatalogText=void 0;var Mp=/^(?:>|\|)[-+]?$/,Lp=/^(?:>|\|)[-+]?(?:\s+(.*))?$/,Up=e=>{let t=e?.trim()??"";if(!(t.length===0||Mp.test(t)))return t};Z.usableCatalogText=Up;var Dp=e=>(0,Z.parseFrontmatterField)(e,"description");Z.parseFrontmatterDescription=Dp;var Hp=(e,t)=>{let n=/^---\s*\n([\s\S]*?)\n---/.exec(e);if(n)return jp(n[1],t)};Z.parseFrontmatterField=Hp;var Fp=e=>e.replace(/^["']|["']$/g,"");function jp(e,t){let n=e.split(`
6
- `),r=`${t}:`,o=n.findIndex(d=>d===r||d.startsWith(`${r} `)||d.startsWith(`${r} `));if(o<0)return;let s=(n[o]??"").slice(r.length).trim(),i=Lp.exec(s);if(!i){let d=Fp(s).trim();return(0,Z.usableCatalogText)(d)}let a=[];for(let d=o+1;d<n.length;d+=1){let _=n[d]??"";if(_.trim()===""){a.push("");continue}if(_.length===_.trimStart().length)break;a.push(_)}let c=a.reduce((d,_)=>_.trim()===""?d:Math.min(d,_.length-_.trimStart().length),Number.POSITIVE_INFINITY),l=[],u=i[1]?.trim();u&&l.push(u);for(let d of a)l.push(d.trim()===""?"":d.slice(c));for(;l.length>0&&l[l.length-1]==="";)l.pop();let m=s.startsWith(">")?l.join(`
5
+ var Cu=Object.create;var ko=Object.defineProperty;var Iu=Object.getOwnPropertyDescriptor;var Au=Object.getOwnPropertyNames;var ku=Object.getPrototypeOf,Ou=Object.prototype.hasOwnProperty;var bn=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var ke=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Pu=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Au(t))!Ou.call(e,o)&&o!==n&&ko(e,o,{get:()=>t[o],enumerable:!(r=Iu(t,o))||r.enumerable});return e};var qe=(e,t,n)=>(n=e!=null?Cu(ku(e)):{},Pu(t||!e||!e.__esModule?ko(n,"default",{value:e,enumerable:!0}):n,e));var Yt=ke(v=>{"use strict";Object.defineProperty(v,"__esModule",{value:!0});v.MCP_MISSING_LAUNCH_SERIALIZED=v.MCP_LAUNCH_IDENTITY_ALGORITHM=void 0;v.foldMcpName=mi;v.buildMcpFamilyCanonicalKey=up;v.launchContainsCredentials=dp;v.serializeMcpLaunchIdentity=gi;v.hashMcpLaunchIdentity=at;v.projectMcpMissingLaunchIdentity=mp;v.projectMcpLaunchIdentity=gp;v.maskMcpLaunchForDisplay=hp;v.normalizeMcpToolNames=Sp;var cp=bn("node:crypto");v.MCP_LAUNCH_IDENTITY_ALGORITHM="mcp-launch-v1";v.MCP_MISSING_LAUNCH_SERIALIZED=`${v.MCP_LAUNCH_IDENTITY_ALGORITHM}|missing`;function ue(e){return e.toLocaleLowerCase("en-US")}function mi(e){return ue(e)}function up(e){return`interface:${mi(e)}`}var fi=new Set(["access_token","api_key","apikey","auth","authorization","key","password","secret","token"]),lp=/^(?:--?(?:token|api[-_]?key|password|secret|authorization)(?:=|\s+)|(?:sk-|ghp_|xox[baprs]-|Bearer\s+))/i;function $e(e){return`${Buffer.byteLength(e,"utf8")}:${e}`}function dp(e){return e.kind==="url"?pp(e.url):e.kind==="command"?e.arguments.some(t=>lp.test(t)):!1}function pp(e){try{let t=new URL(e);if(t.username.length>0||t.password.length>0)return!0;for(let n of t.searchParams.keys())if(fi.has(ue(n)))return!0;return!1}catch{let t=e.split("://",2),n=t.length===2?t[1]:e,r=n.indexOf("@"),o=n.indexOf("/");if(r>0&&(o===-1||r<o))return!0;let s=e.split("?",2)[1];return s===void 0?!1:s.split("&").some(i=>{let a=ue(i.split("=",1)[0]??"");return fi.has(a)})}}function gi(e){if(e.kind==="url")return[v.MCP_LAUNCH_IDENTITY_ALGORITHM,"url",$e(ue(e.url))].join("|");if(e.kind==="command"){let t=[...e.arguments].map(n=>ue(n)).sort((n,r)=>n<r?-1:n>r?1:0);return[v.MCP_LAUNCH_IDENTITY_ALGORITHM,"command",$e(ue(e.command)),String(t.length),...t.map($e)].join("|")}return[v.MCP_LAUNCH_IDENTITY_ALGORITHM,"unknown",$e(e.installationRootExternalKey),$e(e.sourcePath),$e(e.nativeKey)].join("|")}function at(e){return(0,cp.createHash)("sha256").update(e).digest("hex")}var fp=at(v.MCP_MISSING_LAUNCH_SERIALIZED);function mp(){return{kind:"unknown",arguments:[],serialized:v.MCP_MISSING_LAUNCH_SERIALIZED,contentHash:fp}}function gp(e){let t=gi(e);return e.kind==="url"?{kind:"url",url:ue(e.url),arguments:[],serialized:t,contentHash:at(t)}:e.kind==="command"?{kind:"command",command:ue(e.command),arguments:[...e.arguments].map(n=>ue(n)).sort((n,r)=>n<r?-1:n>r?1:0),serialized:t,contentHash:at(t)}:{kind:"unknown",arguments:[],serialized:t,contentHash:at(t)}}var _p=/^(https?:\/\/)([^/?#]*@)/i;function hp(e){return e.replace(_p,"$1***@").replace(/([?&](?:access_token|api_key|apikey|auth|authorization|key|password|secret|token)=)([^&]*)/gi,"$1***")}function Sp(e){let t=new Set,n=[];for(let r of e)r.length===0||t.has(r)||(t.add(r),n.push(r));return n.sort((r,o)=>r<o?-1:r>o?1:0),n}});var Zt=ke(ee=>{"use strict";Object.defineProperty(ee,"__esModule",{value:!0});ee.PACKAGE_FIELD_MAX=void 0;ee.npxExecBin=_i;ee.packageNameFromSpec=Xt;ee.pinnedPackageVersionFromSpec=hi;ee.pinnedPackageVersionFromNpx=Pp;ee.npxPackageSpecs=Si;ee.PACKAGE_FIELD_MAX=128;var Ep=/^(?:@[A-Za-z0-9~-][A-Za-z0-9._~-]*\/)?[A-Za-z0-9~-][A-Za-z0-9._~-]*$/,yp=new Set(["-p","--package"]),Rp=new Set(["-c","--call"]),Cp=new Set(["--registry","--userconfig","--globalconfig","--prefix","--cache","--node-options","--workspace","-w","--loglevel"]),Ip=new Set(["-y","--yes","-n","--no","-q","-s","--quiet","--silent","--offline","--prefer-offline","--prefer-online","--ignore-existing","--ignore-scripts","--legacy-peer-deps","--foreground-scripts"]),Ap=/^--no-/;function kp(e){return Ip.has(e)||Ap.test(e)}function _i(e){let n=(e.replace(/\\/g,"/").split("/").pop()??"").replace(/\.(cmd|exe|bat|ps1)$/i,"").toLowerCase();return n==="npx"?"npx":n==="npm"?"npm":null}var Op=/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/;function Xt(e){if(e.length===0||e.length>ee.PACKAGE_FIELD_MAX)return null;let t=e.lastIndexOf("@"),n=t>0?e.slice(0,t):e;return Ep.test(n)?n:null}function hi(e){let t=Xt(e);if(t===null||!e.startsWith(`${t}@`))return;let n=e.slice(t.length+1);return Op.test(n)?n:void 0}function Pp(e,t){for(let n of Si(e,t)){let r=hi(n);if(r!==void 0)return r}}function Si(e,t){let n=_i(e);if(n===null)return[];let r=[...t];if(n==="npm"){let i=r[0]?.toLowerCase();if(i!=="exec"&&i!=="x")return[];r=r.slice(1)}let o=[],s=null;for(let i=0;i<r.length;i+=1){let a=r[i]??"";if(a==="--"){s=r[i+1]??null;break}if(!a.startsWith("-")){s=a;break}let c=a.indexOf("="),l=c===-1?a:a.slice(0,c);if(Rp.has(l))return[];if(yp.has(l)){let u=c===-1?r[i+1]:a.slice(c+1);u!==void 0&&u.length>0&&o.push(u),c===-1&&(i+=1);continue}if(!(c!==-1||kp(l))){if(Cp.has(l)){i+=1;continue}return[]}}return o.length>0?o.every(i=>Xt(i)!==null)?o:[]:s===null||Xt(s)===null?[]:[s]}});var Ei=ke(be=>{"use strict";Object.defineProperty(be,"__esModule",{value:!0});be.McpPackageEcosystem=void 0;be.resolveMcpPackageIdentity=jp;var xp=Yt(),fr=Zt();be.McpPackageEcosystem={NPM:"npm",PYPI:"pypi"};var bp=/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/,Tp=/^[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$/,Np=/^(?:\d+!)?\d+(?:\.\d+)*(?:(?:a|b|rc)\d+)?(?:\.post\d+)?(?:\.dev\d+)?(?:\+[0-9A-Za-z]+(?:[.][0-9A-Za-z]+)*)?$/;function vp(e){let n=(e.replaceAll("\\","/").split("/").pop()??"").replace(/\.(cmd|exe|bat|ps1)$/i,"").toLowerCase();return n==="uvx"||n==="uv"||n==="pipx"?n:null}var wp=new Set(["--from","--spec"]),Mp=new Set(["--python","-p","--with","--with-editable","--with-requirements","--index","--index-url","--default-index","--extra-index-url","--find-links","-f","--constraint","-c","--override","--refresh-package","--cache-dir","--directory","--project","--config-file","--color","--exclude-newer","--pip-args","--verbose-pip"]),Lp=new Set(["-q","--quiet","-v","--verbose","-n","--native-tls","--offline","--isolated","--preview","--refresh","--reinstall","--upgrade","-U","--force","--system","--system-site-packages","--path","--managed-python","--progress"]),Up=/^--no-/;function Dp(e,t){let n=vp(e);if(n===null)return null;let r=[...t];if(n==="uv"){if(r[0]?.toLowerCase()!=="tool"||r[1]?.toLowerCase()!=="run")return null;r=r.slice(2)}else if(n==="pipx"){if(r[0]?.toLowerCase()!=="run")return null;r=r.slice(1)}let o=null,s=null;for(let i=0;i<r.length;i+=1){let a=r[i]??"";if(a==="--"){s=r[i+1]??null;break}if(!a.startsWith("-")){s=a;break}let c=a.indexOf("="),l=c===-1?a:a.slice(0,c);if(wp.has(l)){let u=c===-1?r[i+1]:a.slice(c+1);u!==void 0&&u.length>0&&(o=u),c===-1&&(i+=1);continue}if(!(c!==-1||Lp.has(l)||Up.test(l))){if(Mp.has(l)){i+=1;continue}return null}}return o??s}function Hp(e){if(e.length===0||e.length>fr.PACKAGE_FIELD_MAX)return null;let t=e.includes("==")?"==":e.includes("@")?"@":null;if(t===null)return null;let n=e.indexOf(t),r=e.slice(0,n),o=e.slice(n+t.length);return!Tp.test(r)||!Np.test(o)?null:{ecosystem:be.McpPackageEcosystem.PYPI,packageName:r,version:o}}function Fp(e){let t=(0,fr.packageNameFromSpec)(e);if(t===null||!e.startsWith(`${t}@`))return null;let n=e.slice(t.length+1);return bp.test(n)?{ecosystem:be.McpPackageEcosystem.NPM,packageName:t,version:n}:null}function jp(e){if(e?.kind!=="command"||(0,xp.launchContainsCredentials)(e))return;for(let n of(0,fr.npxPackageSpecs)(e.command,e.arguments)){let r=Fp(n);if(r!==null)return r}let t=Dp(e.command,e.arguments);if(t!==null)return Hp(t)??void 0}});var ki=ke(le=>{"use strict";Object.defineProperty(le,"__esModule",{value:!0});le.EMPTY_NPM_PUBLISHER=void 0;le.isNpmRegistryPublisher=Bp;le.displayPublisherName=Kp;le.classifyMcpProvenance=qp;var Ci=Yt(),mr=Zt();le.EMPTY_NPM_PUBLISHER="npm:";var yi="npm:",$p=/^[A-Za-z0-9._-]+$/;function Bp(e){return e.startsWith(yi)&&e!==le.EMPTY_NPM_PUBLISHER&&$p.test(e.slice(yi.length))}function Kp(e){if(!(e==null||e===""||e===le.EMPTY_NPM_PUBLISHER))return e}function Ri(e){let t=e.split(".").map(Number);return t.length!==4||t.some(n=>!Number.isInteger(n)||n<0||n>255)?!1:t[0]===0||t[0]===10||t[0]===127||t[0]===169&&t[1]===254||t[0]===172&&(t[1]??0)>=16&&(t[1]??0)<=31||t[0]===192&&t[1]===168}function Gp(e){let t=/^::ffff:(\d{1,3}(?:\.\d{1,3}){3})$/i.exec(e);if(t?.[1])return t[1];let n=/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i.exec(e);if(!n)return;let r=Number.parseInt(n[1],16),o=Number.parseInt(n[2],16);return`${r>>8&255}.${r&255}.${o>>8&255}.${o&255}`}function gr(e){return e.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.$/,"")}function zp(e){let t=gr(e),n=Gp(t);return t==="localhost"||t.endsWith(".localhost")||t==="::1"||t.endsWith(".local")||!t.includes(".")&&!t.includes(":")||Ri(t)||n!==void 0&&Ri(n)||/^(?:fc|fd)[0-9a-f]{2}:/i.test(t)||/^fe[89ab][0-9a-f]:/i.test(t)}function Vp(e){let t=gr(e);return t.includes(":")||/^[0-9.]+$/.test(t)||t.split(".").filter(Boolean).length<2?null:t}function Wp(e){let t=gr(e.hostname),n=t.includes(":")?`[${t}]`:t,r=e.port?`:${e.port}`:"";return`${e.protocol}//${n}${r}`}function Ii(e){let t={kind:"url",url:e};if((0,Ci.launchContainsCredentials)(t))return{origin:"UNKNOWN"};try{let n=new URL(e);if(!["http:","https:"].includes(n.protocol)||zp(n.hostname))return{origin:"UNKNOWN"};let r=Vp(n.hostname);return{origin:"THIRD_PARTY",...r===null?{}:{publisherName:r},packageSourceUrl:Wp(n)}}catch{return{origin:"UNKNOWN"}}}var Ai="mcp-remote";function Jp(e,t){if(e===Ai)return t.find(n=>/^https?:\/\//i.test(n))}function Yp(e,t){return{origin:"THIRD_PARTY",...t?{publisherName:t}:{},packageName:e,packageKey:e}}function Xp(e,t,n){let r=Jp(e,t);return r!==void 0?Ii(r):e===Ai?{origin:"UNKNOWN"}:Yp(e,n)}function Zp(e){let t=e.replaceAll("\\","/");return t.startsWith("~/")||t.startsWith("/")||/^[A-Za-z]:\//.test(t)?!1:t.startsWith("./")||t.startsWith("../")||t==="scripts"||t.startsWith("scripts/")}function qp(e){let t=e.launch;if(t===void 0||t.kind==="unknown")return{origin:"UNKNOWN"};if((0,Ci.launchContainsCredentials)(t))return{origin:"UNKNOWN"};if(t.kind==="url")return Ii(t.url);let r=(0,mr.npxPackageSpecs)(t.command,t.arguments)[0];if(r!==void 0){let o=(0,mr.packageNameFromSpec)(r);if(o===null)return{origin:"UNKNOWN"};let s=Xp(o,t.arguments,e.publisherName),i=typeof e.packageName=="string"?(0,mr.packageNameFromSpec)(e.packageName):null;return i!==null&&i===o&&s.packageName!==void 0?{...s,packageName:i,packageKey:i}:s}return Zp(t.command)?{origin:"INTERNAL"}:{origin:"UNKNOWN"}}});var Oi=ke(Y=>{"use strict";Object.defineProperty(Y,"__esModule",{value:!0});Y.parseFrontmatterField=Y.parseFrontmatterDescription=Y.usableCatalogText=void 0;var Qp=/^(?:>|\|)[-+]?$/,ef=/^(?:>|\|)[-+]?(?:\s+(.*))?$/,tf=e=>{let t=e?.trim()??"";if(!(t.length===0||Qp.test(t)))return t};Y.usableCatalogText=tf;var nf=e=>(0,Y.parseFrontmatterField)(e,"description");Y.parseFrontmatterDescription=nf;var rf=(e,t)=>{let n=/^---\s*\n([\s\S]*?)\n---/.exec(e);if(n)return sf(n[1],t)};Y.parseFrontmatterField=rf;var of=e=>e.replace(/^["']|["']$/g,"");function sf(e,t){let n=e.split(`
6
+ `),r=`${t}:`,o=n.findIndex(d=>d===r||d.startsWith(`${r} `)||d.startsWith(`${r} `));if(o<0)return;let s=(n[o]??"").slice(r.length).trim(),i=ef.exec(s);if(!i){let d=of(s).trim();return(0,Y.usableCatalogText)(d)}let a=[];for(let d=o+1;d<n.length;d+=1){let _=n[d]??"";if(_.trim()===""){a.push("");continue}if(_.length===_.trimStart().length)break;a.push(_)}let c=a.reduce((d,_)=>_.trim()===""?d:Math.min(d,_.length-_.trimStart().length),Number.POSITIVE_INFINITY),l=[],u=i[1]?.trim();u&&l.push(u);for(let d of a)l.push(d.trim()===""?"":d.slice(c));for(;l.length>0&&l[l.length-1]==="";)l.pop();let m=s.startsWith(">")?l.join(`
7
7
  `).split(/\n{2,}/).map(d=>d.split(`
8
8
  `).map(_=>_.trim()).filter(Boolean).join(" ")).filter(d=>d.length>0).join(`
9
9
 
10
10
  `):l.join(`
11
- `).trimEnd();return(0,Z.usableCatalogText)(m)}});var yi=Oe(x=>{"use strict";Object.defineProperty(x,"__esModule",{value:!0});x.SNAPSHOT_INSPECTION_TEXT_MAX_BYTES=x.COMPONENT_INSPECTION_TEXT_MAX_BYTES=x.COMPONENT_SOURCE_REDACTION_PLACEHOLDER=void 0;x.fitSnapshotInspectionTextBudget=$p;x.capComponentTextBytes=Si;x.prepareComponentInspectionText=Bp;x.redactComponentSource=hr;x.componentSourceContainsRedactableSecret=rf;x.COMPONENT_SOURCE_REDACTION_PLACEHOLDER="[REDACTED]";x.COMPONENT_INSPECTION_TEXT_MAX_BYTES=256*1024;x.SNAPSHOT_INSPECTION_TEXT_MAX_BYTES=3*1024*1024;function $p(e){let t=0;return e.map(n=>{let r=n,o=r.skill?.inspectionText;if(o===void 0)return n;let s=Buffer.byteLength(o,"utf8");return t+s<=x.SNAPSHOT_INSPECTION_TEXT_MAX_BYTES?(t+=s,n):{...n,skill:{...r.skill,inspectionText:void 0}}})}function Si(e,t){if(e==null||e.length===0)return;let n=Buffer.from(e,"utf8");if(n.byteLength<=t)return e;let r=new TextDecoder("utf-8",{fatal:!0});for(let o=t;o>0;o-=1)try{return r.decode(n.subarray(0,o))}catch{}}function Bp(e){if(!(e==null||e.length===0))return Si(hr(e),x.COMPONENT_INSPECTION_TEXT_MAX_BYTES)}var Kp="(?:[A-Za-z0-9_.-]*(?:passwd|password|secret|token|credential|credentials|apikey|api[_-]?key|access[_-]?key|secret[_-]?key|private[_-]?key|auth|authorization|session[_-]?id)[A-Za-z0-9_.-]*)",Gp=new RegExp(`(\\b${Kp})(\\s*[:=]\\s*)(?:(")([^"\\n]*)(")|(')([^'\\n]*)(')|([^\\s"'][^"'\\n]*))`,"gi"),zp=[/^(?:none|null|nil|n\/a|empty|unset|not (?:required|needed|set)|no (?:password|token|auth))(?=$|[\s.,;:()—–-])/i,/^\$\{?[A-Za-z_][A-Za-z0-9_]*\}?$/,/^\$\(.*\)$/,/^\$\{\{.*\}\}$/,/^%[A-Za-z_][A-Za-z0-9_]*%$/,/^(?:process\.env|os\.environ|import\.meta\.env)\.[A-Za-z_][A-Za-z0-9_]*[,;]?$/,/^<[^<>]*>$/,/^(?:\*{3,}|\.{3,}|…|x{3,})$/i,/^your[-_ ]/i,/^(?:see|from|via|stored in|use|ask|obtain|get|fetch|run|read|provided by|generated by)\b/i];function _r(e){let t=e.trim().replace(/^`+|`+$/g,"").trim();return zp.some(n=>n.test(t))}function Vp(e){if(e.startsWith("$(")){let n=0;for(let r=1;r<e.length;r+=1)if(e[r]==="("&&(n+=1),e[r]===")"&&(n-=1,n===0))return e.slice(0,r+1);return e}return/^(?:\$\{\{[^}]*\}\}|<[^<>]*>)/.exec(e)?.[0]??/^\S+/.exec(e)?.[0]??""}var Wp=[/\bsk-(?:proj-)?[A-Za-z0-9_-]{16,}/g,/\b(?:ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{20,}/g,/\bgithub_pat_[A-Za-z0-9_]{20,}/g,/\bxox[baprs]-[A-Za-z0-9-]{10,}/g,/\b(?:AKIA|ASIA)[0-9A-Z]{16}\b/g,/\bAIza[0-9A-Za-z_-]{35}\b/g,/\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}/g],Jp=/\b[A-Za-z0-9_+/-]{32,}={0,2}\b/g,Yp=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function Xp(e){let t=new Map;for(let r of e)t.set(r,(t.get(r)??0)+1);let n=0;for(let r of t.values()){let o=r/e.length;n-=o*Math.log2(o)}return n}function Zp(e){return e.replace(Jp,t=>{if(Yp.test(t))return t;let n=/[A-Za-z]/.test(t),r=/\d/.test(t);return n&&r&&Xp(t)>=3.5?x.COMPONENT_SOURCE_REDACTION_PLACEHOLDER:t})}var qp=/\b(Bearer\s+)[A-Za-z0-9._~+/=-]{8,}/gi,Qp=/\b([a-z][a-z0-9+.-]*:\/\/)([^\s/@:]+):([^\s/@]*)@/gi,ef=/([?&](?:access_token|api_key|apikey|auth|authorization|client_secret|key|password|secret|token)=)[^&\s"'<>]+/gi,tf=/-----BEGIN [A-Z0-9 ]*PRIVATE KEY-----/,hi=/-----END [A-Z0-9 ]*PRIVATE KEY-----/;function Ei(e){return e.replace(Gp,(t,n,r,o,s,i,a,c,l,u)=>{let p=`${n}${r}`;if(o!==void 0||a!==void 0){let d=o??a??"",_=i??l??"",S=s??c??"";return S===""||S.includes(x.COMPONENT_SOURCE_REDACTION_PLACEHOLDER)||_r(S)?t:`${p}${d}${x.COMPONENT_SOURCE_REDACTION_PLACEHOLDER}${_}`}let m=u??"";if(r==="="){let d=Vp(m).replace(/`+$/,""),_=Ei(m.slice(d.length));return d===""||d.includes(x.COMPONENT_SOURCE_REDACTION_PLACEHOLDER)||_r(d)?`${p}${d}${_}`:`${p}${x.COMPONENT_SOURCE_REDACTION_PLACEHOLDER}${_}`}return m.includes(x.COMPONENT_SOURCE_REDACTION_PLACEHOLDER)||_r(m)?t:`${p}${x.COMPONENT_SOURCE_REDACTION_PLACEHOLDER}`})}function nf(e){let t=e.replace(Qp,(n,r)=>`${r}${x.COMPONENT_SOURCE_REDACTION_PLACEHOLDER}:${x.COMPONENT_SOURCE_REDACTION_PLACEHOLDER}@`);t=t.replace(ef,(n,r)=>`${r}${x.COMPONENT_SOURCE_REDACTION_PLACEHOLDER}`),t=t.replace(qp,(n,r)=>`${r}${x.COMPONENT_SOURCE_REDACTION_PLACEHOLDER}`);for(let n of Wp)t=t.replace(n,x.COMPONENT_SOURCE_REDACTION_PLACEHOLDER);return Ei(Zp(t))}function hr(e){if(e.length===0)return e;let t=e.split(`
12
- `),n=!1;return t.map(o=>n?hi.test(o)?(n=!1,o):o.trim().length===0?o:x.COMPONENT_SOURCE_REDACTION_PLACEHOLDER:tf.test(o)&&!hi.test(o)?(n=!0,o):nf(o)).join(`
13
- `)}function rf(e){return hr(e)!==e}});var Be=Oe(g=>{"use strict";Object.defineProperty(g,"__esModule",{value:!0});g.redactComponentSource=g.prepareComponentInspectionText=g.fitSnapshotInspectionTextBudget=g.componentSourceContainsRedactableSecret=g.capComponentTextBytes=g.SNAPSHOT_INSPECTION_TEXT_MAX_BYTES=g.COMPONENT_SOURCE_REDACTION_PLACEHOLDER=g.COMPONENT_INSPECTION_TEXT_MAX_BYTES=g.usableCatalogText=g.parseFrontmatterField=g.parseFrontmatterDescription=g.isNpmRegistryPublisher=g.EMPTY_NPM_PUBLISHER=g.displayPublisherName=g.classifyMcpProvenance=g.resolveMcpPackageIdentity=g.McpPackageEcosystem=g.pinnedPackageVersionFromSpec=g.pinnedPackageVersionFromNpx=g.packageNameFromSpec=g.npxPackageSpecs=g.npxExecBin=g.PACKAGE_FIELD_MAX=g.serializeMcpLaunchIdentity=g.projectMcpMissingLaunchIdentity=g.projectMcpLaunchIdentity=g.normalizeMcpToolNames=g.MCP_MISSING_LAUNCH_SERIALIZED=g.MCP_LAUNCH_IDENTITY_ALGORITHM=g.maskMcpLaunchForDisplay=g.launchContainsCredentials=g.hashMcpLaunchIdentity=g.foldMcpName=g.buildMcpFamilyCanonicalKey=g.ComponentKind=void 0;g.userConfigRootFromPath=mf;g.installationRootExternalKey=gf;g.normalizeRepositoryRelativePath=Ri;g.nativeKeyForSkillPath=_f;g.nativeKeyForRulePath=hf;g.nativeKeyForCommandPath=Sf;g.serializeComponentIdentity=Ii;g.buildComponentReference=yf;g.validateComponentReference=Rf;var of=Pn("node:crypto"),sf=Pn("node:path"),af="cmp1_",cf=/^cmp1_[A-Za-z0-9_-]{43}$/,uf=["/skills/","/skills-cursor/"],lf=/(?:^|\/)\.(?:cursor|claude|codex)\/rules\/(.+)$/i,df=/(?:^|\/)\.(?:cursor|claude|codex)\/(?:commands|prompts)\/(.+)$/i,pf=[".cursor",".claude",".codex"],ff={".claude.json":".claude",".agents":".codex"};g.ComponentKind={SKILL:"SKILL",INTERFACE:"INTERFACE",RULE:"RULE",COMMAND:"COMMAND"};function mf(e){let t=e.replaceAll("\\","/").split("/").filter(Boolean),n=t.find(o=>pf.includes(o));return n||(t.map(o=>ff[o]).find(o=>o!==void 0)??"unknown")}function gf(e,t){return`runtime-install:${e}/${t}`}function Jt(e,t){if(e.length===0)throw new Error(`${t} is required`);return e}function Ri(e){let t=e.replaceAll("\\","/");if(t.startsWith("/")||/^[A-Za-z]:\//.test(t))throw new Error("sourcePath must be repository-relative");let n=sf.posix.normalize(t).replace(/^\.\//,"");if(n==="."||n===".."||n.startsWith("../"))throw new Error("sourcePath must be repository-relative");return Jt(n,"sourcePath")}function _f(e){let t=e.replaceAll("\\","/");for(let n of uf){let r=t.split(n)[1]?.split("/")[0];if(r&&r.length>0)return r}return null}function Ci(e,t,n){let r=e.replaceAll("\\","/"),s=t.exec(r)?.[1];if(!s||s.split("/").includes(".."))return null;let i=s.replace(n,"");return i.length>0?i:null}function hf(e){return Ci(e,lf,/\.(mdc|md|rules)$/i)}function Sf(e){return Ci(e,df,/\.(md|mdc|toml)$/i)}function Ef(e){return`${Buffer.byteLength(e,"utf8")}:${e}`}function Ii(e){let t=[Jt(e.installationRootExternalKey,"installationRootExternalKey"),Jt(e.installableKind,"installableKind"),Ri(e.sourcePath),Jt(e.nativeKey,"nativeKey")];return Buffer.from(`1|${t.map(Ef).join("|")}`,"utf8")}function yf(e){let t=(0,of.createHash)("sha256").update(Ii(e)).digest("base64url");return`${af}${t}`}function Rf(e){return cf.test(e)}var q=zt();Object.defineProperty(g,"buildMcpFamilyCanonicalKey",{enumerable:!0,get:function(){return q.buildMcpFamilyCanonicalKey}});Object.defineProperty(g,"foldMcpName",{enumerable:!0,get:function(){return q.foldMcpName}});Object.defineProperty(g,"hashMcpLaunchIdentity",{enumerable:!0,get:function(){return q.hashMcpLaunchIdentity}});Object.defineProperty(g,"launchContainsCredentials",{enumerable:!0,get:function(){return q.launchContainsCredentials}});Object.defineProperty(g,"maskMcpLaunchForDisplay",{enumerable:!0,get:function(){return q.maskMcpLaunchForDisplay}});Object.defineProperty(g,"MCP_LAUNCH_IDENTITY_ALGORITHM",{enumerable:!0,get:function(){return q.MCP_LAUNCH_IDENTITY_ALGORITHM}});Object.defineProperty(g,"MCP_MISSING_LAUNCH_SERIALIZED",{enumerable:!0,get:function(){return q.MCP_MISSING_LAUNCH_SERIALIZED}});Object.defineProperty(g,"normalizeMcpToolNames",{enumerable:!0,get:function(){return q.normalizeMcpToolNames}});Object.defineProperty(g,"projectMcpLaunchIdentity",{enumerable:!0,get:function(){return q.projectMcpLaunchIdentity}});Object.defineProperty(g,"projectMcpMissingLaunchIdentity",{enumerable:!0,get:function(){return q.projectMcpMissingLaunchIdentity}});Object.defineProperty(g,"serializeMcpLaunchIdentity",{enumerable:!0,get:function(){return q.serializeMcpLaunchIdentity}});var $e=Wt();Object.defineProperty(g,"PACKAGE_FIELD_MAX",{enumerable:!0,get:function(){return $e.PACKAGE_FIELD_MAX}});Object.defineProperty(g,"npxExecBin",{enumerable:!0,get:function(){return $e.npxExecBin}});Object.defineProperty(g,"npxPackageSpecs",{enumerable:!0,get:function(){return $e.npxPackageSpecs}});Object.defineProperty(g,"packageNameFromSpec",{enumerable:!0,get:function(){return $e.packageNameFromSpec}});Object.defineProperty(g,"pinnedPackageVersionFromNpx",{enumerable:!0,get:function(){return $e.pinnedPackageVersionFromNpx}});Object.defineProperty(g,"pinnedPackageVersionFromSpec",{enumerable:!0,get:function(){return $e.pinnedPackageVersionFromSpec}});var Ai=ui();Object.defineProperty(g,"McpPackageEcosystem",{enumerable:!0,get:function(){return Ai.McpPackageEcosystem}});Object.defineProperty(g,"resolveMcpPackageIdentity",{enumerable:!0,get:function(){return Ai.resolveMcpPackageIdentity}});var Yt=gi();Object.defineProperty(g,"classifyMcpProvenance",{enumerable:!0,get:function(){return Yt.classifyMcpProvenance}});Object.defineProperty(g,"displayPublisherName",{enumerable:!0,get:function(){return Yt.displayPublisherName}});Object.defineProperty(g,"EMPTY_NPM_PUBLISHER",{enumerable:!0,get:function(){return Yt.EMPTY_NPM_PUBLISHER}});Object.defineProperty(g,"isNpmRegistryPublisher",{enumerable:!0,get:function(){return Yt.isNpmRegistryPublisher}});var Sr=_i();Object.defineProperty(g,"parseFrontmatterDescription",{enumerable:!0,get:function(){return Sr.parseFrontmatterDescription}});Object.defineProperty(g,"parseFrontmatterField",{enumerable:!0,get:function(){return Sr.parseFrontmatterField}});Object.defineProperty(g,"usableCatalogText",{enumerable:!0,get:function(){return Sr.usableCatalogText}});var Ie=yi();Object.defineProperty(g,"COMPONENT_INSPECTION_TEXT_MAX_BYTES",{enumerable:!0,get:function(){return Ie.COMPONENT_INSPECTION_TEXT_MAX_BYTES}});Object.defineProperty(g,"COMPONENT_SOURCE_REDACTION_PLACEHOLDER",{enumerable:!0,get:function(){return Ie.COMPONENT_SOURCE_REDACTION_PLACEHOLDER}});Object.defineProperty(g,"SNAPSHOT_INSPECTION_TEXT_MAX_BYTES",{enumerable:!0,get:function(){return Ie.SNAPSHOT_INSPECTION_TEXT_MAX_BYTES}});Object.defineProperty(g,"capComponentTextBytes",{enumerable:!0,get:function(){return Ie.capComponentTextBytes}});Object.defineProperty(g,"componentSourceContainsRedactableSecret",{enumerable:!0,get:function(){return Ie.componentSourceContainsRedactableSecret}});Object.defineProperty(g,"fitSnapshotInspectionTextBudget",{enumerable:!0,get:function(){return Ie.fitSnapshotInspectionTextBudget}});Object.defineProperty(g,"prepareComponentInspectionText",{enumerable:!0,get:function(){return Ie.prepareComponentInspectionText}});Object.defineProperty(g,"redactComponentSource",{enumerable:!0,get:function(){return Ie.redactComponentSource}})});import{realpathSync as US}from"node:fs";import{resolve as DS}from"node:path";import{fileURLToPath as HS,pathToFileURL as FS}from"node:url";import{createHash as Su}from"node:crypto";import{homedir as Eu}from"node:os";import{dirname as VS,join as yu,parse as WS,resolve as JS}from"node:path";var Oo="https://hooks.ev-ai.ai",xt=".claude/ev-ai-runtime-report.json",xo="config.json",YS=1024*1024,Ru=new Set(["localhost","127.0.0.1","[::1]","::1"]),Cu=["claude","cursor","codex"],Pt=[xt,".cursor/ev-ai-runtime-report.json",".codex/ev-ai-runtime-report.json"],bn=/^[A-Za-z0-9._~-]+$/;function bt(e){return e!==void 0&&Cu.includes(e)}function Ot(e,t){let n=e[t+1];return n&&!n.startsWith("--")?{value:n,next:t+1}:{next:t}}function Ze(e){let t,n,r,o,s;for(let i=0;i<e.length;i++){let a=e[i];if(a!==void 0){if(a==="--runner"){let c=Ot(e,i);t=c.value,i=c.next;continue}if(a.startsWith("--runner=")){t=a.slice(9);continue}if(a==="--url"){let c=Ot(e,i);c.value&&(r=c.value),i=c.next;continue}if(a.startsWith("--url=")){r=a.slice(6);continue}if(a==="--token"){let c=Ot(e,i);c.value&&(o=c.value),i=c.next;continue}if(a.startsWith("--token=")){o=a.slice(8);continue}if(a==="--base-url"){let c=Ot(e,i);c.value&&(s=c.value),i=c.next;continue}if(a.startsWith("--base-url=")){s=a.slice(11);continue}!a.startsWith("-")&&n===void 0&&(n=a)}}return{runner:bt(t)?t:void 0,event:n,collectorUrl:r,orgToken:o,baseUrl:s}}function Tt(e,t=Oo){let n=t.replace(/\/+$/,""),r=e.trim();return`${n}/${r}/hook`}function Tn(e=Eu()){return yu(e,".ev-ai",xo)}function Po(e,t){return{...e,...t}}function ko(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<=32||n===127||n===39)return!0}return!1}function qe(e){try{let t=new URL(e);return t.protocol==="https:"?!0:t.protocol==="http:"?Ru.has(t.hostname):!1}catch{return!1}}function Nn(e){try{let n=new URL(e).pathname.split("/").filter(r=>r.length>0);if(n.length>=2&&n[n.length-1]==="hook"){let r=n[n.length-2];return r&&r.length>0?r:void 0}return}catch{return}}function Le(e){let t;try{t=new URL(e)}catch{return`invalid URL (got: ${e})`}if(!qe(e))return`must be https (or http on localhost / 127.0.0.1 / ::1) (got: ${e})`;let n=Nn(e);if(!n)return`must end with /{orgToken}/hook (got: ${e})`;if(!bn.test(n))return`org token must match ${bn.source} (got: ${n})`;if(ko(e))return`must not contain whitespace, control characters, or single quotes (got: ${e})`;if(ko(t.pathname))return`pathname must not contain whitespace, control characters, or single quotes (got: ${e})`}function Qe(e){return new URL(e).toString()}function vn(e){if(e.collector_url)return e.collector_url;let t=e.repo_ingest_token,n=typeof t=="string"?t.trim():void 0;return n?Tt(n):""}function Nt(e){try{let t=new URL(e),n=t.pathname.split("/").filter(r=>r.length>0);return n.length>=2&&n[n.length-1]==="hook"&&(n[n.length-2]="***",t.pathname=`/${n.join("/")}`),t.toString()}catch{return"<invalid-url>"}}function bo(e){let t=e.collectorUrl?.trim(),n;if(t)n=t;else{let o=e.orgToken?.trim();o&&(n=Tt(o,e.baseUrl?.trim()??void 0))}if(!n)return{};let r=Le(n);return r?{problem:r}:{url:Qe(n)}}function To(e){if(Le(e))return;let t;try{t=new URL(e)}catch{return}let n=Nn(e);if(!n)return;let o=t.pathname.split("/").filter(a=>a.length>0).slice(0,-2),s=o.length>0?`/${o.join("/")}`:"",i=`${t.origin}${s}/${n}`;return Su("sha256").update(i).digest("hex").slice(0,32)}var ge=2,No="node_modules/@ev-ai/agent-hook/dist/hook.mjs",ee="ev-ai-agent-hook";function Iu(e){let t=e.split(/[/\\]/).pop();return t&&t.length>0?t:e}function vt(e){let t=Iu(e);return t===ee||t===`${ee}.exe`}var vo="https://cdn.ev-ai.ai/agent-hook";var wn=`current/${ee}`,Mn=`.ev-ai/agent-hook/${ee}`,wo=5e3,Mo=5e3,Ln=3e3;var Un=3e3,Lo=1500,Uo=4*1024,Dn=256*1024,Au=4*1024,Do=32*1024,et=840*60*1e3,se="1.2.3",wt=`@ev-ai/agent-hook@${se}`,Ho="ev-ai runtime report";import{chmodSync as Is,cpSync as As,existsSync as he,mkdirSync as or,readFileSync as Tl,rmSync as jt,symlinkSync as Nl,writeFileSync as vl}from"node:fs";import{homedir as ue}from"node:os";import{dirname as sr,isAbsolute as wl,join as P,relative as ks,resolve as Rs,sep as Ml}from"node:path";import{fileURLToPath as Ll}from"node:url";import{existsSync as ku,readdirSync as Fo}from"node:fs";import{homedir as Mt}from"node:os";import{join as K}from"node:path";function jo(e=process.platform){switch(e){case"darwin":return"/Library/Application Support/ClaudeCode";case"win32":return K(process.env.ProgramFiles??"C:\\Program Files","ClaudeCode");default:return"/etc/claude-code"}}function Hn(e=process.platform){let t=jo(e),n=[K(t,"managed-settings.json")],r=K(t,"managed-settings.d");try{if(!ku(r))return n;let o=Fo(r).filter(s=>s.endsWith(".json")&&!s.startsWith(".")).sort().map(s=>K(r,s));n.push(...o)}catch{}return n}function Fn(e=process.platform,t=Mt()){return{serverManaged:K(t,".claude","remote-settings.json"),fileBased:Hn(e)}}function Ou(e=process.platform){switch(e){case"darwin":return"/Library/Application Support/Cursor";case"win32":return K(process.env.ProgramData??"C:\\ProgramData","Cursor");default:return"/etc/cursor"}}function xu(e=process.platform,t=Mt()){let n=[K(Ou(e),"hooks.json")],r=K(t,".cursor","managed");try{for(let o of Fo(r,{withFileTypes:!0}))!o.isDirectory()||o.name.startsWith(".")||n.push(K(r,o.name,"hooks.json"))}catch{}return n}function Pu(e=process.platform,t=Mt()){let n=e==="win32"?K(process.env.ProgramData??"C:\\ProgramData","OpenAI","Codex"):"/etc/codex",r=[K(n,"requirements.toml")];return e!=="win32"&&r.push(K(n,"managed_config.toml")),r.push(K(t,".codex","managed_config.toml"),K(n,"config.toml")),r}function Lt(e,t=process.platform,n=Mt()){switch(e){case"claude":{let{serverManaged:r,fileBased:o}=Fn(t,n);return[r,...o]}case"cursor":return xu(t,n);default:return Pu(t,n)}}import{createHash as ts,randomBytes as Zu}from"node:crypto";import{existsSync as ns,mkdirSync as Yn,readFileSync as rs,unlinkSync as os,writeFileSync as ss}from"node:fs";import{homedir as Xn}from"node:os";import{dirname as Dt,join as Zn,resolve as qu}from"node:path";var bu=new Set(["action@github.com","noreply@github.com","noreply@anthropic.com","cursoragent@cursor.com"]),Tu=new Set(["github-actions","github actions","dependabot","renovate","cursoragent","cursor agent"]);function z(e,t){let n=(e??"").trim().toLowerCase(),r=(t??"").trim().toLowerCase();if(!n&&!r)return!1;if(n.includes("[bot]")||Tu.has(n)||r.includes("[bot]")||bu.has(r))return!0;if(r.endsWith("@users.noreply.github.com")){let o=r.slice(0,r.indexOf("@")),s=o.includes("+")?o.slice(o.indexOf("+")+1):o;if(s.endsWith("bot")||s.includes("[bot]"))return!0}return!1}import{existsSync as Hu,readFileSync as Fu}from"node:fs";import{hostname as Jo,userInfo as ju}from"node:os";import{randomBytes as Nu}from"node:crypto";import{existsSync as $n,mkdirSync as vu,readdirSync as wu,readFileSync as Mu,renameSync as $o,statSync as Go,unlinkSync as Bo,writeFileSync as Lu}from"node:fs";import{basename as Uu,dirname as Ko,join as zo,relative as Du}from"node:path";function f(e){process.stderr.write(`[ev-ai-agent-hook] ${e}
14
- `)}function te(e,t){vu(Ko(e),{recursive:!0});let n=zo(Ko(e),`.${Uu(e)}.${process.pid}.${Nu(4).toString("hex")}.tmp`);try{Lu(n,t,"utf8");try{$o(n,e)}catch(r){let o=r instanceof Error&&"code"in r?r.code:void 0;if(o==="EEXIST"||o==="EPERM"||o==="EACCES"){Bo(e),$o(n,e);return}throw r}}catch(r){try{Bo(n)}catch{}throw r}}function Ut(){return new Date().toISOString().replace(/\.\d{3}Z$/,"Z")}function Vo(){process.stdout.write('{"continue":true}')}function I(e){let t=process.env[e];return t===void 0||t===""?void 0:t}async function tt(){return new Promise(e=>{let t="";if(process.stdin.isTTY){e("");return}process.stdin.setEncoding("utf8"),process.stdin.on("data",n=>{t+=n}),process.stdin.on("end",()=>{e(t)}),process.stdin.on("error",()=>{e(t)}),process.stdin.resume()})}async function Bn(e){return new Promise(t=>{let n="",r=!1,o=i=>{r||(r=!0,clearTimeout(s),t(i||"{}"))},s=setTimeout(()=>{o(n)},e);if(process.stdin.isTTY){o("{}");return}process.stdin.setEncoding("utf8"),process.stdin.on("data",i=>{n+=i}),process.stdin.on("end",()=>{o(n)}),process.stdin.on("error",()=>{o(n)}),process.stdin.resume()})}async function X(e,t,n=3e3,r={}){let{execFile:o}=await import("node:child_process"),{promisify:s}=await import("node:util"),i=s(o);try{let{stdout:a}=await i(e,t,{timeout:n,windowsHide:!0,maxBuffer:1048576,cwd:r.cwd});return{ok:!0,stdout:a.trim()}}catch(a){let c=a,l=typeof c.code=="number"?c.code:typeof c.status=="number"?c.status:void 0;return{ok:!1,code:l,spawnFailed:l===void 0}}}async function M(e,t,n=3e3,r={}){let o=await X(e,t,n,r);return o.ok?o.stdout:""}async function Kn(e=process.cwd()){let t=await X("git",["rev-parse","--show-toplevel"],2e3,{cwd:e});if(t.ok&&t.stdout)return{root:t.stdout,inGitRepo:!0};if(I("EV_AI_HOOK_DEBUG")){let r=t.ok?"empty stdout":t.spawnFailed?"spawn failed":`exit ${String(t.code??"unknown")}`;f(`DEBUG: git rev-parse --show-toplevel failed (${r}) cwd=${e}`)}let n=I("CURSOR_PROJECT_DIR")??I("CLAUDE_PROJECT_DIR");if(n&&$n(n)){let r=await X("git",["rev-parse","--show-toplevel"],2e3,{cwd:n});return r.ok&&r.stdout?{root:r.stdout,inGitRepo:!0}:{root:n,inGitRepo:!1}}return{root:e,inGitRepo:!1}}async function ie(e=process.cwd()){return(await Kn(e)).root}function $(e,t){try{return JSON.parse(e)}catch{return t}}var jn=new Map;function F(e,t){let n=jn.get(e);if(n!==void 0)return n;try{let r=$(Mu(e,"utf8"),t);return jn.set(e,r),r}catch{return jn.set(e,t),t}}function xe(e){return typeof e=="string"?e:""}function ae(e,t){let n=e[t];if(typeof n=="string"||typeof n=="number"||typeof n=="boolean")return n;if(!t.includes("."))return;let r=t.split("."),o=e;for(let s of r){if(o===null||typeof o!="object"||Array.isArray(o))return;o=o[s]}if(typeof o=="string"||typeof o=="number"||typeof o=="boolean")return o}function h(e,t){let n=ae(e,t);return typeof n=="string"?n:""}var _e=500;function Wo(e,t=2){if(!$n(e))return{entries:[],truncated:!1};let n=[],r=!1,o=(s,i)=>{if(i>t||r)return;let a;try{a=wu(s,{withFileTypes:!0})}catch{return}for(let c of a){if(r)return;let l=zo(s,c.name);if(c.isDirectory()){o(l,i+1);continue}if(c.isFile()){try{n.push({name:Du(e,l),size:Go(l).size})}catch{continue}if(n.length>=_e){r=!0;return}}}};return o(e,1),{entries:n,truncated:r}}function Gn(e){return $n(e)?{present:!0,size:Go(e).size}:{present:!1,size:0}}function Ue(e){if(e===void 0||e==="")return!1;let t=e.trim().toLowerCase();return t!=="0"&&t!=="false"&&t!=="no"}function zn(e=process.env){return Ue(N("CURSOR_SANDBOX",e))}var $u=["CIRCLECI","BUILDKITE","TF_BUILD","JENKINS_URL","JENKINS_HOME","CODEBUILD_BUILD_ID","DRONE","DRONE_BUILD_NUMBER","TEAMCITY_VERSION","TRAVIS","APPVEYOR","BITBUCKET_BUILD_NUMBER"];function Bu(e){return $u.some(t=>!!N(t,e))}function Ku(e){if(N("KUBERNETES_SERVICE_HOST",e)||Ue(N("REMOTE_CONTAINERS",e))||Ue(N("DEVCONTAINER",e)))return!0;try{if(Hu("/.dockerenv")||Fu("/proc/1/environ","utf8").includes("container="))return!0}catch{}return!1}function Yo(e){return["VSCODE_PID","VSCODE_IPC_HOOK","CURSOR_EXTENSION_HOST_ROLE","CURSOR_WORKSPACE_LABEL"].some(t=>!!N(t,e))}function Gu(e,t=process.platform){return Yo(e)?t==="darwin"||t==="win32"?!0:["__CFBundleIdentifier","DISPLAY","WAYLAND_DISPLAY","SESSIONNAME"].some(n=>!!N(n,e)):!1}function zu(e){return e===void 0?!1:e.trim().toLowerCase().startsWith("bc-")}function Vu(e){return e==="linux"}function N(e,t){if(t){let n=t[e];return n===void 0||n===""?void 0:n}return I(e)}function Wu(e,t,n){return e.trim().toLowerCase()==="cursor"&&t.trim().toLowerCase()==="ubuntu"&&!!Ju(N("CURSOR_VERSION",n))}function Ju(e){if(e===void 0)return null;let t=e.trim();return t.length>0?t:null}function Vn(e){if(zu(e.sessionId))return!0;let t=e.hostname??Jo(),n=e.osUser??Xo(e.env);return Wu(t,n,e.env)}function Yu(e){return Ue(N("CURSOR_AGENT",e.env))?!0:Vn(e)}function Xu(e){return!!(process.stdin.isTTY||process.stdout.isTTY||(N("TERM",e)??N("TERM_PROGRAM",e))||(N("SSH_TTY",e)??N("SSH_CONNECTION",e))||(N("__CFBundleIdentifier",e)??N("XPC_SERVICE_NAME",e))||Yo(e)||["DISPLAY","WAYLAND_DISPLAY","XDG_SESSION_TYPE","DBUS_SESSION_BUS_ADDRESS"].some(t=>!!N(t,e))||N("SESSIONNAME",e))}function nt(e={}){let t=e.env;if(N("GITHUB_ACTIONS",t))return"github_actions";if(Ue(N("CLAUDE_CODE_REMOTE",t)))return"claude_remote";let n=e.platform??process.platform;if(!Gu(t,n)&&Yu(e)&&(Ue(N("CURSOR_AGENT",t))||Vu(n)))return"cursor_cloud";if(N("CODESPACES",t)||N("CODESPACE_NAME",t))return"codespaces";if(N("GITLAB_CI",t))return"gitlab_ci";if(Bu(t))return"managed";let r=N("CI",t);return r&&r!=="false"&&r!=="0"?"managed":Ku(t)?"container":Xu(t)?"interactive":"unknown"}async function Wn(){return await M("systemd-detect-virt",[],1e3)}function Xo(e=process.env,t=ju){for(let n of["USER","LOGNAME","USERNAME"]){let r=e[n];if(typeof r=="string"){let o=r.trim();if(o.length>0)return o}}try{return t().username??""}catch{return""}}async function Jn(){let e=process.platform==="darwin"?"Darwin":process.platform==="win32"?"Windows_NT":"Linux",t="";if(process.platform==="darwin")t=await M("sw_vers",["-productVersion"],1e3);else if(process.platform==="linux"){try{let{readFileSync:s}=await import("node:fs"),i=s("/etc/os-release","utf8"),a=i.match(/^PRETTY_NAME="?([^"\n]+)"?/m)?.[1],c=i.match(/^VERSION_ID="?([^"\n]+)"?/m)?.[1];t=a??c??""}catch{t=await M("lsb_release",["-sd"],1e3).then(s=>s.replace(/^"|"$/g,""))}t||(t=await M("uname",["-r"],1e3))}else t=await M("ver",[],1e3);let n=Xo(),r=(process.env.SHELL??"").split(/[/\\]/).pop()??"",o="";try{o=await M("tty",[],500),o.includes("not a tty")&&(o="")}catch{o=""}return{os:e,os_version:t||null,user:n||null,shell:r||null,tty:o||null}}function rt(){return Jo()}var Qu="installation.json",el="cloud-bootstrap.lock",tl=6e4;function is(e,t,n){let r=`${e}:${t??""}`;return n?`${n}:${r}`:r}function ce(e=Xn()){return Zn(e,".ev-ai","agent-hook")}function nl(e=Xn()){return Zn(ce(e),Qu)}function as(e){return Zn(Dt(e),el)}function cs(){return Zu(8).toString("hex")}function De(e){return ts("sha256").update(e).digest("hex").slice(0,16)}function A(e){if(e===void 0)return null;let t=e.trim();return t.length>0?t:null}function us(e){return/^[A-Za-z0-9._-]{8,64}$/.test(e)}function rl(e=process.env){let t=A(e.EV_AI_HOOK_INSTALLATION_ID);if(t){if(!us(t)){f(`WARN: ignoring EV_AI_HOOK_INSTALLATION_ID (expected 8\u201364 chars [A-Za-z0-9._-], got length ${t.length})`);return}return t}}function ls(e,t){return e&&us(e)?e:(e&&f(`WARN: ignoring installation id override (expected 8\u201364 chars [A-Za-z0-9._-], got length ${e.length})`),rl(t))}function ol(e){return/^[0-9a-f]{16}$/.test(e)}function sl(e=process.env){if(A(e.GITHUB_ACTIONS)){let t=A(e.GITHUB_REPOSITORY_ID)??A(e.GITHUB_REPOSITORY),n=A(e.GITHUB_ACTOR)??A(e.GITHUB_TRIGGERING_ACTOR)??A(e.GITHUB_USER);if(t&&n)return De(`github_actions|${t}|${n}`)}if(A(e.CODESPACES)||A(e.CODESPACE_NAME)){let t=A(e.CODESPACE_NAME);if(t)return De(`codespaces|${t}`);let n=A(e.GITHUB_REPOSITORY_ID)??A(e.GITHUB_REPOSITORY),r=A(e.GITHUB_USER)??A(e.GITHUB_ACTOR);if(n&&r)return De(`codespaces|${n}|${r}`)}if(A(e.GITLAB_CI)){let t=A(e.CI_PROJECT_ID)??A(e.CI_PROJECT_PATH),n=A(e.GITLAB_USER_LOGIN)??A(e.GITLAB_USER_EMAIL)??A(e.GITLAB_USER_NAME);if(t&&n)return De(`gitlab|${t}|${n}`)}return null}var il="cursoragent@cursor.com";function al(e){let t=A(e.CURSOR_USER_EMAIL);return!t||t.toLowerCase()===il?null:t}function cl(e,t){return A(e.CURSOR_PROJECT_DIR)??A(e.CLAUDE_PROJECT_DIR)??t}function ul(e){return e.replace(/^([a-z]+:\/\/)[^/@]+@/i,"$1").replace(/\.git$/i,"").toLowerCase()}async function ll(e){let t=await M("git",["config","--get","remote.origin.url"],2e3,{cwd:e});return t?ul(t):e}async function dl(e){let t=A(await M("git",["config","--local","--get","user.email"],2e3,{cwd:e})||void 0);if(t&&!z(null,t))return t;let n=A(await M("git",["log","-1","--format=%ae"],2e3,{cwd:e})||void 0);return n&&!z(null,n)?n:null}function pl(e,t){let n=cl(e,t);return n?De(`cursor_cloud|${n}|${al(e)??""}`):null}async function fl(e,t){let n=A(e.CLAUDE_PROJECT_DIR)??t;if(!n)return null;let r=await ll(n),o=await dl(n);return De(`claude_remote|${r}|${o??""}`)}function Zo(e,t){let n=ls(e,t);if(n)return n;let r=sl(t);return r||cs()}async function ml(e){let n=await M("git",["config","--get","remote.origin.url"],2e3,{cwd:e})||qu(e);return ts("sha256").update(n).digest("hex").slice(0,16)}function gl(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t={};for(let[n,r]of Object.entries(e))typeof r=="string"&&r.length>0&&(t[n]=r);return Object.keys(t).length>0?t:void 0}function _l(e){try{let t=JSON.parse(e);if(typeof t.installation_id!="string"||t.installation_id.length===0)return;let n=gl(t.platform_agent_ids);return{installation_id:t.installation_id,...t.pinned===!0?{pinned:!0}:{},...n?{platform_agent_ids:n}:{},...typeof t.operator_identity_hash=="string"?{operator_identity_hash:t.operator_identity_hash}:{},...typeof t.operator_identity_sent_at=="string"?{operator_identity_sent_at:t.operator_identity_sent_at}:{}}}catch{return}}function Pe(e){if(ns(e))try{return _l(rs(e,"utf8"))}catch{}}function qn(e){return Pe(e)}function ds(e,t,n){let r=Pe(e);if(!r||r.operator_identity_hash===t&&r.operator_identity_sent_at===n)return;let o={...r,operator_identity_hash:t,operator_identity_sent_at:n};try{te(e,`${JSON.stringify(o,null,2)}
15
- `)}catch(s){let i=s instanceof Error?s.message:String(s);f(`WARN: operator identity cache write failed open: ${i}`)}}function ps(e,t=Date.now()){if(!e)return!0;if(Pe(e)?.operator_identity_hash)return!1;let n=as(e);try{if(ns(n)){let r=Number.NaN;try{r=Number(rs(n,"utf8").trim())}catch{}let o=t-r;if(Number.isFinite(o)&&o>=0&&o<tl)return!1;try{os(n)}catch{}}}catch{}try{return Yn(Dt(n),{recursive:!0}),ss(n,`${t}
16
- `,{encoding:"utf8",flag:"wx"}),!0}catch(r){if(_s(r))return!1;let o=r instanceof Error?r.message:String(r);return f(`WARN: cloud bootstrap claim failed open: ${o}`),!0}}function fs(e){if(e)try{os(as(e))}catch{}}function ms(e,t){let r=Pe(e)?.platform_agent_ids?.[t];return typeof r=="string"&&r.length>0?r:void 0}function gs(e,t,n){if(!n)return;let r=Pe(e);if(!r||r.platform_agent_ids?.[t]===n)return;let o={installation_id:r.installation_id,platform_agent_ids:{...r.platform_agent_ids,[t]:n},...r.operator_identity_hash?{operator_identity_hash:r.operator_identity_hash}:{},...r.operator_identity_sent_at?{operator_identity_sent_at:r.operator_identity_sent_at}:{}};try{te(e,`${JSON.stringify(o,null,2)}
17
- `)}catch(s){let i=s instanceof Error?s.message:String(s);f(`WARN: platform_agent_id cache write failed open: ${i}`)}}function _s(e){return e instanceof Error&&"code"in e&&e.code==="EEXIST"}function hl(e,t){Yn(Dt(e),{recursive:!0}),ss(e,`${JSON.stringify(t,null,2)}
18
- `,{encoding:"utf8",flag:"wx"})}function qo(e,t){try{return hl(e,t),t}catch(n){if(!_s(n))throw n;return Pe(e)}}function Qo(e,t){Yn(Dt(e),{recursive:!0}),te(e,`${JSON.stringify(t,null,2)}
19
- `)}function es(e,t){return{installation_id:e,...t&&t===e?{pinned:!0}:{}}}async function Ht(e,t={}){let n=t.home??Xn(),r=t.env??process.env,o=await ml(e),s=nl(n),i={sessionId:t.sessionId,hostname:A(r.HOSTNAME)??void 0,osUser:A(r.USER)??A(r.LOGNAME)??A(r.USERNAME)??void 0,env:r},a=nt(i),c=ls(t.overrideId,r),l=a==="cursor_cloud"&&Vn(i)?pl(r,e):a==="claude_remote"?await fl(r,e):null,u=Pe(s);if(u){let S=u;if(c&&c===u.installation_id&&u.pinned!==!0&&(S={...u,pinned:!0},Qo(s,S)),!!l&&l!==S.installation_id&&!c&&S.pinned!==!0&&ol(S.installation_id)&&l){let y={installation_id:l,...S.platform_agent_ids?{platform_agent_ids:S.platform_agent_ids}:{}};return Qo(s,y),{installationId:l,storePath:s,repoKey:o}}return{installationId:S.installation_id,storePath:s,repoKey:o}}let p=c??l??Zo(void 0,r),m=qo(s,es(p,c));if(m)return{installationId:m.installation_id,storePath:s,repoKey:o};let d=c??l??Zo(void 0,r),_=qo(s,es(d===p?cs():d,c));if(_)return{installationId:_.installation_id,storePath:s,repoKey:o};throw new Error(`Failed to create installation record at ${s}`)}import{existsSync as er,readFileSync as Sl}from"node:fs";import{dirname as El,isAbsolute as yl,join as Rl,relative as Cl}from"node:path";function hs(e){for(let t of Pt){let n=Rl(e,t);if(er(n))return n}}async function Il(e=process.cwd(),t){let n=t??await ie(e);return hs(n)??hs(e)}async function Al(e,t){let n=t??await ie(El(e)),r=Cl(n,e);if(r.startsWith("..")||yl(r))return!1;let o=await X("git",["ls-files","--error-unmatch",r],2e3,{cwd:n});return o.ok?!0:o.code===1?!1:(f(`WARN: git ls-files failed for manifest ${e} (code=${String(o.code)}); treating as tracked`),!0)}function Qn(e){let t=Sl(e,"utf8");return $(t,{})}function kl(){return{schema_version:ge,mcp_servers:[]}}function Ol(e,t,n,r){!t||!n||(e.capture_hook_input==="full"&&r.has("capture_hook_input")&&(f(`WARN: ignoring capture_hook_input=full in git-tracked manifest ${t}; use EV_AI_HOOK_CAPTURE_FULL_INPUT=1 or an untracked operator manifest`),delete e.capture_hook_input),e.debug===!0&&r.has("debug")&&(f(`WARN: ignoring debug=true in git-tracked manifest ${t}; set debug on ~/.ev-ai/config.json`),delete e.debug))}async function Ss(e=process.cwd(),t={}){let{root:n,inGitRepo:r}=await Kn(e),o=I("EV_AI_HOOK_MANIFEST"),s=o&&er(o)?o:void 0,i=s?void 0:er(Tn())?Tn():void 0,a=s?void 0:await Il(e,n),c=i?Qn(i):void 0,l=a?Qn(a):void 0,u,p,m,d=new Set;if(s){u=Qn(s),p=s,m=s;for(let R of Object.keys(u))d.add(R)}else if(c&&l){u=Po(l,c),p=i,m=a;for(let R of Object.keys(l))R in c||d.add(R)}else if(c)u=c,p=i;else if(l){u=l,p=a,m=a;for(let R of Object.keys(l))d.add(R)}else u=kl();delete u.installation_id;let _=m?await Al(m,n):!1;Ol(u,m,_,d);let{installationId:S,storePath:E,repoKey:y}=await Ht(n,{sessionId:t.sessionId});return{manifestPath:p??E,manifest:u,installationId:S,installationStorePath:E,repoKey:y,collectorUrl:vn(u),platformAgentId:u.platform_agent_id??"",gitRoot:n,inGitRepo:r}}function Es(e){return{schema_version:ge,...e?{collector_url:e}:{},mcp_servers:[]}}var xl=["darwin-arm64","darwin-x64","linux-arm64","linux-x64","windows-x64","windows-arm64"];function Pl(e){return e==="windows-x64"||e==="windows-arm64"}function tr(e=process.platform,t=process.arch){if(e==="darwin")return t==="arm64"?"darwin-arm64":t==="x64"?"darwin-x64":void 0;if(e==="linux")return t==="arm64"?"linux-arm64":t==="x64"?"linux-x64":void 0;if(e==="win32")return t==="x64"?"windows-x64":t==="arm64"?"windows-arm64":void 0}function ys(e=process.platform,t=process.arch){let n=tr(e,t);if(!n)throw new Error(`Unsupported platform ${e}-${t}. Supported: ${xl.join(", ")}.`);return n}function bl(e){return Pl(e)?`${ee}.exe`:ee}function nr(e){return`compile-out/bin/${e}/${bl(e)}`}function Ul(e,t){let n=e.collectorUrl?.trim();if(!n)throw new Error(`${t} requires --url <https://hooks.ev-ai.ai/{orgToken}/hook>`);let r=Le(n);if(r)throw new Error(`collector URL rejected: ${r}`);return Qe(n)}function Dl(e){let t=e.collectorUrl?.trim();if(!t)return;let n=Le(t);if(n)throw new Error(`collector URL rejected: ${n}`);return Qe(t)}function Hl(e){return Ul(e,"install")}function Os(e){let t={};for(let n=0;n<e.length;n++){let r=e[n];if(r==="--url"){let o=e[n+1];o&&!o.startsWith("--")&&(t.collectorUrl=o,n+=1);continue}if(r==="--collector-url")throw new Error("--collector-url was renamed to --url")}return t}function xs(e){let t={};for(let n=0;n<e.length;n++){let r=e[n];if(r==="--url"){let o=e[n+1];o&&!o.startsWith("--")&&(t.collectorUrl=o,n+=1);continue}if(r==="--collector-url")throw new Error("--collector-url was renamed to --url");if(r==="--update")throw new Error("--update was removed; use the `update` command instead of `install --update`");if(r==="--delivery"){let o=e[n+1];(o==="npx"||o==="binary"||o==="local")&&(t.delivery=o,n+=1);continue}if(r==="--force"){t.force=!0;continue}if(r==="--no-claude"){t.skipClaude=!0;continue}if(r==="--no-cursor"){t.skipCursor=!0;continue}if(r==="--no-codex"){t.skipCodex=!0;continue}}return t}function Ps(e=process.execPath){return bs(e)?"binary":"npx"}function Fl(){return P(ue(),".ev-ai","agent-hook")}function jl(e=ue()){return P(e,".ev-ai","agent-hook",wn)}function $l(){let e=sr(Ll(import.meta.url)),t=P(e,"hook.mjs");return he(t)?t:P(e,"..","dist","hook.mjs")}function bs(e=process.execPath){return vt(e)}function Ts(e,t){let n=ks(Rs(e),Rs(t));return!n.startsWith("..")&&!wl(n)}function $t(e){return e.split(Ml).join("/")}function Bl(e){return`node "$(git rev-parse --show-toplevel)/${$t(e)}"`}function Kl(e){return`"$(git rev-parse --show-toplevel)/${$t(e)}"`}function Gl(e){return P(e,Mn)}function Ns(e,t){let n=Gl(e);or(sr(n),{recursive:!0}),As(t,n,{force:!0});try{Is(n,493)}catch{}return n}function zl(e){let t=P(Fl(),"current");try{jt(t,{recursive:!0,force:!0})}catch{}Nl(e,t,process.platform==="win32"?"junction":"dir")}function vs(e,t=se,n=ue()){let r=P(n,".ev-ai","agent-hook",t),o=P(r,ee);or(r,{recursive:!0}),As(e,o,{force:!0});try{Is(o,493)}catch{}return zl(r),P(n,".ev-ai","agent-hook",wn)}function ws(e){let t=tr();if(!t)return;let n=[P(e,nr(t)),P(e,"packages","agent-hook",nr(t))];for(let r of n)if(he(r)&&Ts(e,r))return r}function Vl(e=ue()){let t=jl(e);return he(t)?t:void 0}function Wl(e,t=ue()){let n=Vl(t);return n||(bs()?vs(process.execPath,se,t):ws(e))}function Jl(e,t=ue()){let n=ws(e);if(!n)throw new Error(`update requires a locally compiled binary \u2014 run this package\u2019s build:hook-binary script first.
20
- To install a released binary instead: curl -fsSL https://cdn.ev-ai.ai/agent-hook/install.sh | sh`);let r=vs(n,se,t),o=Ns(e,n);return{sourcePath:n,projectPath:o,globalPath:r}}function Cs(e){let t=[P(e,"packages","agent-hook","dist","hook.mjs"),P(e,No)],n=$l();he(n)&&Ts(e,n)&&t.unshift(n);for(let r of t){if(!he(r))continue;let o=$t(ks(e,r));return{command:Bl(o),hookPath:o,strategy:"dev_mjs"}}}function Yl(e){return e==="SessionStart"||e==="sessionStart"}function Xl(e){return e.replace(/\s+--prefer-offline\b/g,"")}function Ft(e,t){return Yl(e)?Xl(t):t}function Zl(e=wt){return`npx -y --prefer-offline ${e}`}function ql(e,t=ue(),n=Ps()){if(n==="npx")return{command:Zl(),hookPath:wt,strategy:"npx"};if(n==="local"){let s=Cs(e);if(s)return s;throw new Error("local delivery requires packages/agent-hook/dist/hook.mjs (or node_modules/@ev-ai/agent-hook/dist/hook.mjs) under the git root \u2014 run yarn workspace @ev-ai/agent-hook build first")}let r=Wl(e,t);if(r){Ns(e,r);let s=$t(Mn);return{command:Kl(s),hookPath:s,strategy:"project_binary"}}let o=Cs(e);if(o)return o;throw new Error(`ev-ai-agent-hook binary not found. Install from CDN:
21
- curl -fsSL ${vo}/install.sh | sh
11
+ `).trimEnd();return(0,Y.usableCatalogText)(m)}});var Ti=ke(P=>{"use strict";Object.defineProperty(P,"__esModule",{value:!0});P.SNAPSHOT_INSPECTION_TEXT_MAX_BYTES=P.COMPONENT_INSPECTION_TEXT_MAX_BYTES=P.COMPONENT_SOURCE_REDACTION_PLACEHOLDER=void 0;P.fitSnapshotInspectionTextBudget=af;P.capComponentTextBytes=xi;P.prepareComponentInspectionText=cf;P.redactComponentSource=hr;P.componentSourceContainsRedactableSecret=If;P.COMPONENT_SOURCE_REDACTION_PLACEHOLDER="[REDACTED]";P.COMPONENT_INSPECTION_TEXT_MAX_BYTES=256*1024;P.SNAPSHOT_INSPECTION_TEXT_MAX_BYTES=3*1024*1024;function af(e){let t=0;return e.map(n=>{let r=n,o=r.skill?.inspectionText;if(o===void 0)return n;let s=Buffer.byteLength(o,"utf8");return t+s<=P.SNAPSHOT_INSPECTION_TEXT_MAX_BYTES?(t+=s,n):{...n,skill:{...r.skill,inspectionText:void 0}}})}function xi(e,t){if(e==null||e.length===0)return;let n=Buffer.from(e,"utf8");if(n.byteLength<=t)return e;let r=new TextDecoder("utf-8",{fatal:!0});for(let o=t;o>0;o-=1)try{return r.decode(n.subarray(0,o))}catch{}}function cf(e){if(!(e==null||e.length===0))return xi(hr(e),P.COMPONENT_INSPECTION_TEXT_MAX_BYTES)}var uf="(?:[A-Za-z0-9_.-]*(?:passwd|password|secret|token|credential|credentials|apikey|api[_-]?key|access[_-]?key|secret[_-]?key|private[_-]?key|auth|authorization|session[_-]?id)[A-Za-z0-9_.-]*)",lf=new RegExp(`(\\b${uf})(\\s*[:=]\\s*)(?:(")([^"\\n]*)(")|(')([^'\\n]*)(')|([^\\s"'][^"'\\n]*))`,"gi"),df=[/^(?:none|null|nil|n\/a|empty|unset|not (?:required|needed|set)|no (?:password|token|auth))(?=$|[\s.,;:()—–-])/i,/^\$\{?[A-Za-z_][A-Za-z0-9_]*\}?$/,/^\$\(.*\)$/,/^\$\{\{.*\}\}$/,/^%[A-Za-z_][A-Za-z0-9_]*%$/,/^(?:process\.env|os\.environ|import\.meta\.env)\.[A-Za-z_][A-Za-z0-9_]*[,;]?$/,/^<[^<>]*>$/,/^(?:\*{3,}|\.{3,}|…|x{3,})$/i,/^your[-_ ]/i,/^(?:see|from|via|stored in|use|ask|obtain|get|fetch|run|read|provided by|generated by)\b/i];function _r(e){let t=e.trim().replace(/^`+|`+$/g,"").trim();return df.some(n=>n.test(t))}function pf(e){if(e.startsWith("$(")){let n=0;for(let r=1;r<e.length;r+=1)if(e[r]==="("&&(n+=1),e[r]===")"&&(n-=1,n===0))return e.slice(0,r+1);return e}return/^(?:\$\{\{[^}]*\}\}|<[^<>]*>)/.exec(e)?.[0]??/^\S+/.exec(e)?.[0]??""}var ff=[/\bsk-(?:proj-)?[A-Za-z0-9_-]{16,}/g,/\b(?:ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{20,}/g,/\bgithub_pat_[A-Za-z0-9_]{20,}/g,/\bxox[baprs]-[A-Za-z0-9-]{10,}/g,/\b(?:AKIA|ASIA)[0-9A-Z]{16}\b/g,/\bAIza[0-9A-Za-z_-]{35}\b/g,/\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}/g],mf=/\b[A-Za-z0-9_+/-]{32,}={0,2}\b/g,gf=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function _f(e){let t=new Map;for(let r of e)t.set(r,(t.get(r)??0)+1);let n=0;for(let r of t.values()){let o=r/e.length;n-=o*Math.log2(o)}return n}function hf(e){return e.replace(mf,t=>{if(gf.test(t))return t;let n=/[A-Za-z]/.test(t),r=/\d/.test(t);return n&&r&&_f(t)>=3.5?P.COMPONENT_SOURCE_REDACTION_PLACEHOLDER:t})}var Sf=/\b(Bearer\s+)[A-Za-z0-9._~+/=-]{8,}/gi,Ef=/\b([a-z][a-z0-9+.-]*:\/\/)([^\s/@:]+):([^\s/@]*)@/gi,yf=/([?&](?:access_token|api_key|apikey|auth|authorization|client_secret|key|password|secret|token)=)[^&\s"'<>]+/gi,Rf=/-----BEGIN [A-Z0-9 ]*PRIVATE KEY-----/,Pi=/-----END [A-Z0-9 ]*PRIVATE KEY-----/;function bi(e){return e.replace(lf,(t,n,r,o,s,i,a,c,l,u)=>{let p=`${n}${r}`;if(o!==void 0||a!==void 0){let d=o??a??"",_=i??l??"",h=s??c??"";return h===""||h.includes(P.COMPONENT_SOURCE_REDACTION_PLACEHOLDER)||_r(h)?t:`${p}${d}${P.COMPONENT_SOURCE_REDACTION_PLACEHOLDER}${_}`}let m=u??"";if(r==="="){let d=pf(m).replace(/`+$/,""),_=bi(m.slice(d.length));return d===""||d.includes(P.COMPONENT_SOURCE_REDACTION_PLACEHOLDER)||_r(d)?`${p}${d}${_}`:`${p}${P.COMPONENT_SOURCE_REDACTION_PLACEHOLDER}${_}`}return m.includes(P.COMPONENT_SOURCE_REDACTION_PLACEHOLDER)||_r(m)?t:`${p}${P.COMPONENT_SOURCE_REDACTION_PLACEHOLDER}`})}function Cf(e){let t=e.replace(Ef,(n,r)=>`${r}${P.COMPONENT_SOURCE_REDACTION_PLACEHOLDER}:${P.COMPONENT_SOURCE_REDACTION_PLACEHOLDER}@`);t=t.replace(yf,(n,r)=>`${r}${P.COMPONENT_SOURCE_REDACTION_PLACEHOLDER}`),t=t.replace(Sf,(n,r)=>`${r}${P.COMPONENT_SOURCE_REDACTION_PLACEHOLDER}`);for(let n of ff)t=t.replace(n,P.COMPONENT_SOURCE_REDACTION_PLACEHOLDER);return bi(hf(t))}function hr(e){if(e.length===0)return e;let t=e.split(`
12
+ `),n=!1;return t.map(o=>n?Pi.test(o)?(n=!1,o):o.trim().length===0?o:P.COMPONENT_SOURCE_REDACTION_PLACEHOLDER:Rf.test(o)&&!Pi.test(o)?(n=!0,o):Cf(o)).join(`
13
+ `)}function If(e){return hr(e)!==e}});var Ke=ke(g=>{"use strict";Object.defineProperty(g,"__esModule",{value:!0});g.redactComponentSource=g.prepareComponentInspectionText=g.fitSnapshotInspectionTextBudget=g.componentSourceContainsRedactableSecret=g.capComponentTextBytes=g.SNAPSHOT_INSPECTION_TEXT_MAX_BYTES=g.COMPONENT_SOURCE_REDACTION_PLACEHOLDER=g.COMPONENT_INSPECTION_TEXT_MAX_BYTES=g.usableCatalogText=g.parseFrontmatterField=g.parseFrontmatterDescription=g.isNpmRegistryPublisher=g.EMPTY_NPM_PUBLISHER=g.displayPublisherName=g.classifyMcpProvenance=g.resolveMcpPackageIdentity=g.McpPackageEcosystem=g.pinnedPackageVersionFromSpec=g.pinnedPackageVersionFromNpx=g.packageNameFromSpec=g.npxPackageSpecs=g.npxExecBin=g.PACKAGE_FIELD_MAX=g.serializeMcpLaunchIdentity=g.projectMcpMissingLaunchIdentity=g.projectMcpLaunchIdentity=g.normalizeMcpToolNames=g.MCP_MISSING_LAUNCH_SERIALIZED=g.MCP_LAUNCH_IDENTITY_ALGORITHM=g.maskMcpLaunchForDisplay=g.launchContainsCredentials=g.hashMcpLaunchIdentity=g.foldMcpName=g.buildMcpFamilyCanonicalKey=g.ComponentKind=void 0;g.userConfigRootFromPath=wf;g.installationRootExternalKey=Mf;g.normalizeRepositoryRelativePath=Ni;g.nativeKeyForSkillPath=Lf;g.nativeKeyForRulePath=Uf;g.nativeKeyForCommandPath=Df;g.serializeComponentIdentity=wi;g.buildComponentReference=Ff;g.validateComponentReference=jf;var Af=bn("node:crypto"),kf=bn("node:path"),Of="cmp1_",Pf=/^cmp1_[A-Za-z0-9_-]{43}$/,xf=["/skills/","/skills-cursor/"],bf=/(?:^|\/)\.(?:cursor|claude|codex)\/rules\/(.+)$/i,Tf=/(?:^|\/)\.(?:cursor|claude|codex)\/(?:commands|prompts)\/(.+)$/i,Nf=[".cursor",".claude",".codex"],vf={".claude.json":".claude",".agents":".codex"};g.ComponentKind={SKILL:"SKILL",INTERFACE:"INTERFACE",RULE:"RULE",COMMAND:"COMMAND"};function wf(e){let t=e.replaceAll("\\","/").split("/").filter(Boolean),n=t.find(o=>Nf.includes(o));return n||(t.map(o=>vf[o]).find(o=>o!==void 0)??"unknown")}function Mf(e,t){return`runtime-install:${e}/${t}`}function qt(e,t){if(e.length===0)throw new Error(`${t} is required`);return e}function Ni(e){let t=e.replaceAll("\\","/");if(t.startsWith("/")||/^[A-Za-z]:\//.test(t))throw new Error("sourcePath must be repository-relative");let n=kf.posix.normalize(t).replace(/^\.\//,"");if(n==="."||n===".."||n.startsWith("../"))throw new Error("sourcePath must be repository-relative");return qt(n,"sourcePath")}function Lf(e){let t=e.replaceAll("\\","/");for(let n of xf){let r=t.split(n)[1]?.split("/")[0];if(r&&r.length>0)return r}return null}function vi(e,t,n){let r=e.replaceAll("\\","/"),s=t.exec(r)?.[1];if(!s||s.split("/").includes(".."))return null;let i=s.replace(n,"");return i.length>0?i:null}function Uf(e){return vi(e,bf,/\.(mdc|md|rules)$/i)}function Df(e){return vi(e,Tf,/\.(md|mdc|toml)$/i)}function Hf(e){return`${Buffer.byteLength(e,"utf8")}:${e}`}function wi(e){let t=[qt(e.installationRootExternalKey,"installationRootExternalKey"),qt(e.installableKind,"installableKind"),Ni(e.sourcePath),qt(e.nativeKey,"nativeKey")];return Buffer.from(`1|${t.map(Hf).join("|")}`,"utf8")}function Ff(e){let t=(0,Af.createHash)("sha256").update(wi(e)).digest("base64url");return`${Of}${t}`}function jf(e){return Pf.test(e)}var X=Yt();Object.defineProperty(g,"buildMcpFamilyCanonicalKey",{enumerable:!0,get:function(){return X.buildMcpFamilyCanonicalKey}});Object.defineProperty(g,"foldMcpName",{enumerable:!0,get:function(){return X.foldMcpName}});Object.defineProperty(g,"hashMcpLaunchIdentity",{enumerable:!0,get:function(){return X.hashMcpLaunchIdentity}});Object.defineProperty(g,"launchContainsCredentials",{enumerable:!0,get:function(){return X.launchContainsCredentials}});Object.defineProperty(g,"maskMcpLaunchForDisplay",{enumerable:!0,get:function(){return X.maskMcpLaunchForDisplay}});Object.defineProperty(g,"MCP_LAUNCH_IDENTITY_ALGORITHM",{enumerable:!0,get:function(){return X.MCP_LAUNCH_IDENTITY_ALGORITHM}});Object.defineProperty(g,"MCP_MISSING_LAUNCH_SERIALIZED",{enumerable:!0,get:function(){return X.MCP_MISSING_LAUNCH_SERIALIZED}});Object.defineProperty(g,"normalizeMcpToolNames",{enumerable:!0,get:function(){return X.normalizeMcpToolNames}});Object.defineProperty(g,"projectMcpLaunchIdentity",{enumerable:!0,get:function(){return X.projectMcpLaunchIdentity}});Object.defineProperty(g,"projectMcpMissingLaunchIdentity",{enumerable:!0,get:function(){return X.projectMcpMissingLaunchIdentity}});Object.defineProperty(g,"serializeMcpLaunchIdentity",{enumerable:!0,get:function(){return X.serializeMcpLaunchIdentity}});var Be=Zt();Object.defineProperty(g,"PACKAGE_FIELD_MAX",{enumerable:!0,get:function(){return Be.PACKAGE_FIELD_MAX}});Object.defineProperty(g,"npxExecBin",{enumerable:!0,get:function(){return Be.npxExecBin}});Object.defineProperty(g,"npxPackageSpecs",{enumerable:!0,get:function(){return Be.npxPackageSpecs}});Object.defineProperty(g,"packageNameFromSpec",{enumerable:!0,get:function(){return Be.packageNameFromSpec}});Object.defineProperty(g,"pinnedPackageVersionFromNpx",{enumerable:!0,get:function(){return Be.pinnedPackageVersionFromNpx}});Object.defineProperty(g,"pinnedPackageVersionFromSpec",{enumerable:!0,get:function(){return Be.pinnedPackageVersionFromSpec}});var Mi=Ei();Object.defineProperty(g,"McpPackageEcosystem",{enumerable:!0,get:function(){return Mi.McpPackageEcosystem}});Object.defineProperty(g,"resolveMcpPackageIdentity",{enumerable:!0,get:function(){return Mi.resolveMcpPackageIdentity}});var Qt=ki();Object.defineProperty(g,"classifyMcpProvenance",{enumerable:!0,get:function(){return Qt.classifyMcpProvenance}});Object.defineProperty(g,"displayPublisherName",{enumerable:!0,get:function(){return Qt.displayPublisherName}});Object.defineProperty(g,"EMPTY_NPM_PUBLISHER",{enumerable:!0,get:function(){return Qt.EMPTY_NPM_PUBLISHER}});Object.defineProperty(g,"isNpmRegistryPublisher",{enumerable:!0,get:function(){return Qt.isNpmRegistryPublisher}});var Sr=Oi();Object.defineProperty(g,"parseFrontmatterDescription",{enumerable:!0,get:function(){return Sr.parseFrontmatterDescription}});Object.defineProperty(g,"parseFrontmatterField",{enumerable:!0,get:function(){return Sr.parseFrontmatterField}});Object.defineProperty(g,"usableCatalogText",{enumerable:!0,get:function(){return Sr.usableCatalogText}});var Re=Ti();Object.defineProperty(g,"COMPONENT_INSPECTION_TEXT_MAX_BYTES",{enumerable:!0,get:function(){return Re.COMPONENT_INSPECTION_TEXT_MAX_BYTES}});Object.defineProperty(g,"COMPONENT_SOURCE_REDACTION_PLACEHOLDER",{enumerable:!0,get:function(){return Re.COMPONENT_SOURCE_REDACTION_PLACEHOLDER}});Object.defineProperty(g,"SNAPSHOT_INSPECTION_TEXT_MAX_BYTES",{enumerable:!0,get:function(){return Re.SNAPSHOT_INSPECTION_TEXT_MAX_BYTES}});Object.defineProperty(g,"capComponentTextBytes",{enumerable:!0,get:function(){return Re.capComponentTextBytes}});Object.defineProperty(g,"componentSourceContainsRedactableSecret",{enumerable:!0,get:function(){return Re.componentSourceContainsRedactableSecret}});Object.defineProperty(g,"fitSnapshotInspectionTextBudget",{enumerable:!0,get:function(){return Re.fitSnapshotInspectionTextBudget}});Object.defineProperty(g,"prepareComponentInspectionText",{enumerable:!0,get:function(){return Re.prepareComponentInspectionText}});Object.defineProperty(g,"redactComponentSource",{enumerable:!0,get:function(){return Re.redactComponentSource}})});import{realpathSync as GS}from"node:fs";import{resolve as zS}from"node:path";import{fileURLToPath as VS,pathToFileURL as WS}from"node:url";import{createHash as xu}from"node:crypto";import{homedir as bu}from"node:os";import{dirname as eE,join as Tu,parse as tE,resolve as nE}from"node:path";var Po="https://hooks.ev-ai.ai",xt=".claude/ev-ai-runtime-report.json",xo="config.json",rE=1024*1024,Nu=new Set(["localhost","127.0.0.1","[::1]","::1"]),vu=["claude","cursor","codex"],bt=[xt,".cursor/ev-ai-runtime-report.json",".codex/ev-ai-runtime-report.json"],Tn=/^[A-Za-z0-9._~-]+$/;function Tt(e){return e!==void 0&&vu.includes(e)}function Pt(e,t){let n=e[t+1];return n&&!n.startsWith("--")?{value:n,next:t+1}:{next:t}}function Nn(e){let t,n,r,o,s;for(let i=0;i<e.length;i++){let a=e[i];if(a!==void 0){if(a==="--runner"){let c=Pt(e,i);t=c.value,i=c.next;continue}if(a.startsWith("--runner=")){t=a.slice(9);continue}if(a==="--url"){let c=Pt(e,i);c.value&&(r=c.value),i=c.next;continue}if(a.startsWith("--url=")){r=a.slice(6);continue}if(a==="--token"){let c=Pt(e,i);c.value&&(o=c.value),i=c.next;continue}if(a.startsWith("--token=")){o=a.slice(8);continue}if(a==="--base-url"){let c=Pt(e,i);c.value&&(s=c.value),i=c.next;continue}if(a.startsWith("--base-url=")){s=a.slice(11);continue}!a.startsWith("-")&&n===void 0&&(n=a)}}return{runner:Tt(t)?t:void 0,event:n,collectorUrl:r,orgToken:o,baseUrl:s}}function Nt(e,t=Po){let n=t.replace(/\/+$/,""),r=e.trim();return`${n}/${r}/hook`}function vn(e=bu()){return Tu(e,".ev-ai",xo)}function bo(e,t){return{...e,...t}}function Oo(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<=32||n===127||n===39)return!0}return!1}function vt(e){try{let t=new URL(e);return t.protocol==="https:"?!0:t.protocol==="http:"?Nu.has(t.hostname):!1}catch{return!1}}function wn(e){try{let n=new URL(e).pathname.split("/").filter(r=>r.length>0);if(n.length>=2&&n[n.length-1]==="hook"){let r=n[n.length-2];return r&&r.length>0?r:void 0}return}catch{return}}function Ue(e){let t;try{t=new URL(e)}catch{return`invalid URL (got: ${e})`}if(!vt(e))return`must be https (or http on localhost / 127.0.0.1 / ::1) (got: ${e})`;let n=wn(e);if(!n)return`must end with /{orgToken}/hook (got: ${e})`;if(!Tn.test(n))return`org token must match ${Tn.source} (got: ${n})`;if(Oo(e))return`must not contain whitespace, control characters, or single quotes (got: ${e})`;if(Oo(t.pathname))return`pathname must not contain whitespace, control characters, or single quotes (got: ${e})`}function Qe(e){return new URL(e).toString()}function Mn(e){if(e.collector_url)return e.collector_url;let t=e.repo_ingest_token,n=typeof t=="string"?t.trim():void 0;return n?Nt(n):""}function wt(e){try{let t=new URL(e),n=t.pathname.split("/").filter(r=>r.length>0);return n.length>=2&&n[n.length-1]==="hook"&&(n[n.length-2]="***",t.pathname=`/${n.join("/")}`),t.toString()}catch{return"<invalid-url>"}}function To(e){let t=e.collectorUrl?.trim(),n;if(t)n=t;else{let o=e.orgToken?.trim();o&&(n=Nt(o,e.baseUrl?.trim()??void 0))}if(!n)return{};let r=Ue(n);return r?{problem:r}:{url:Qe(n)}}function No(e){if(Ue(e))return;let t;try{t=new URL(e)}catch{return}let n=wn(e);if(!n)return;let o=t.pathname.split("/").filter(a=>a.length>0).slice(0,-2),s=o.length>0?`/${o.join("/")}`:"",i=`${t.origin}${s}/${n}`;return xu("sha256").update(i).digest("hex").slice(0,32)}var fe=2,vo="node_modules/@ev-ai/agent-hook/dist/hook.mjs",Z="ev-ai-agent-hook";function wu(e){let t=e.split(/[/\\]/).pop();return t&&t.length>0?t:e}function Mt(e){let t=wu(e);return t===Z||t===`${Z}.exe`}var wo="https://cdn.ev-ai.ai/agent-hook";var Ln=`current/${Z}`,Un=`.ev-ai/agent-hook/${Z}`,Mo=5e3,Lo=5e3,Dn=3e3;var Hn=3e3,Uo=1500,Do=4*1024,Fn=256*1024,Mu=4*1024,Ho=32*1024,et=840*60*1e3,re="1.2.5",Lt=`@ev-ai/agent-hook@${re}`,Fo="ev-ai runtime report";import{chmodSync as Ps,cpSync as xs,existsSync as ge,mkdirSync as rr,readFileSync as $l,rmSync as Kt,symlinkSync as Bl,writeFileSync as Kl}from"node:fs";import{homedir as ae}from"node:os";import{dirname as or,isAbsolute as Gl,join as x,relative as bs,resolve as ks,sep as zl}from"node:path";import{fileURLToPath as Vl}from"node:url";import{existsSync as Lu,readdirSync as jo}from"node:fs";import{homedir as Ut}from"node:os";import{join as $}from"node:path";function $o(e=process.platform){switch(e){case"darwin":return"/Library/Application Support/ClaudeCode";case"win32":return $(process.env.ProgramFiles??"C:\\Program Files","ClaudeCode");default:return"/etc/claude-code"}}function jn(e=process.platform){let t=$o(e),n=[$(t,"managed-settings.json")],r=$(t,"managed-settings.d");try{if(!Lu(r))return n;let o=jo(r).filter(s=>s.endsWith(".json")&&!s.startsWith(".")).sort().map(s=>$(r,s));n.push(...o)}catch{}return n}function $n(e=process.platform,t=Ut()){return{serverManaged:$(t,".claude","remote-settings.json"),fileBased:jn(e)}}function Uu(e=process.platform){switch(e){case"darwin":return"/Library/Application Support/Cursor";case"win32":return $(process.env.ProgramData??"C:\\ProgramData","Cursor");default:return"/etc/cursor"}}function Du(e=process.platform,t=Ut()){let n=[$(Uu(e),"hooks.json")],r=$(t,".cursor","managed");try{for(let o of jo(r,{withFileTypes:!0}))!o.isDirectory()||o.name.startsWith(".")||n.push($(r,o.name,"hooks.json"))}catch{}return n}function Hu(e=process.platform,t=Ut()){let n=e==="win32"?$(process.env.ProgramData??"C:\\ProgramData","OpenAI","Codex"):"/etc/codex",r=[$(n,"requirements.toml")];return e!=="win32"&&r.push($(n,"managed_config.toml")),r.push($(t,".codex","managed_config.toml"),$(n,"config.toml")),r}function Dt(e,t=process.platform,n=Ut()){switch(e){case"claude":{let{serverManaged:r,fileBased:o}=$n(t,n);return[r,...o]}case"cursor":return Du(t,n);default:return Hu(t,n)}}import{createHash as ss,randomBytes as cl}from"node:crypto";import{existsSync as is,mkdirSync as Jn,readFileSync as as,unlinkSync as cs,writeFileSync as us}from"node:fs";import{homedir as Yn}from"node:os";import{dirname as jt,join as Xn,resolve as ul}from"node:path";var Fu=new Set(["action@github.com","noreply@github.com","noreply@anthropic.com","cursoragent@cursor.com"]),ju=new Set(["github-actions","github actions","dependabot","renovate","cursoragent","cursor agent"]);function K(e,t){let n=(e??"").trim().toLowerCase(),r=(t??"").trim().toLowerCase();if(!n&&!r)return!1;if(n.includes("[bot]")||ju.has(n)||r.includes("[bot]")||Fu.has(r))return!0;if(r.endsWith("@users.noreply.github.com")){let o=r.slice(0,r.indexOf("@")),s=o.includes("+")?o.slice(o.indexOf("+")+1):o;if(s.endsWith("bot")||s.includes("[bot]"))return!0}return!1}import{existsSync as Yu,readFileSync as Xu}from"node:fs";import{hostname as Yo,userInfo as Zu}from"node:os";import{createHash as $u,randomBytes as Bu}from"node:crypto";import{existsSync as Kn,mkdirSync as Ku,readdirSync as Gu,readFileSync as zu,renameSync as Bo,statSync as zo,unlinkSync as Ko,writeFileSync as Vu}from"node:fs";import{basename as Wu,dirname as Go,join as Vo,relative as Ju}from"node:path";function f(e){process.stderr.write(`[ev-ai-agent-hook] ${e}
14
+ `)}function tt(e){return e.replace(/^([a-z]+:\/\/)[^/@]+@/i,"$1")}function nt(e){return $u("sha256").update(e).digest("hex").slice(0,32)}function q(e,t){Ku(Go(e),{recursive:!0});let n=Vo(Go(e),`.${Wu(e)}.${process.pid}.${Bu(4).toString("hex")}.tmp`);try{Vu(n,t,"utf8");try{Bo(n,e)}catch(r){let o=r instanceof Error&&"code"in r?r.code:void 0;if(o==="EEXIST"||o==="EPERM"||o==="EACCES"){Ko(e),Bo(n,e);return}throw r}}catch(r){try{Ko(n)}catch{}throw r}}function Ht(){return new Date().toISOString().replace(/\.\d{3}Z$/,"Z")}function Wo(){process.stdout.write('{"continue":true}')}function I(e){let t=process.env[e];return t===void 0||t===""?void 0:t}async function rt(){return new Promise(e=>{let t="";if(process.stdin.isTTY){e("");return}process.stdin.setEncoding("utf8"),process.stdin.on("data",n=>{t+=n}),process.stdin.on("end",()=>{e(t)}),process.stdin.on("error",()=>{e(t)}),process.stdin.resume()})}async function Gn(e){return new Promise(t=>{let n="",r=!1,o=i=>{r||(r=!0,clearTimeout(s),t(i||"{}"))},s=setTimeout(()=>{o(n)},e);if(process.stdin.isTTY){o("{}");return}process.stdin.setEncoding("utf8"),process.stdin.on("data",i=>{n+=i}),process.stdin.on("end",()=>{o(n)}),process.stdin.on("error",()=>{o(n)}),process.stdin.resume()})}async function J(e,t,n=3e3,r={}){let{execFile:o}=await import("node:child_process"),{promisify:s}=await import("node:util"),i=s(o);try{let{stdout:a}=await i(e,t,{timeout:n,windowsHide:!0,maxBuffer:1048576,cwd:r.cwd});return{ok:!0,stdout:a.trim()}}catch(a){let c=a,l=typeof c.code=="number"?c.code:typeof c.status=="number"?c.status:void 0;return{ok:!1,code:l,spawnFailed:l===void 0}}}async function w(e,t,n=3e3,r={}){let o=await J(e,t,n,r);return o.ok?o.stdout:""}async function zn(e=process.cwd()){let t=await J("git",["rev-parse","--show-toplevel"],2e3,{cwd:e});if(t.ok&&t.stdout)return{root:t.stdout,inGitRepo:!0};if(I("EV_AI_HOOK_DEBUG")){let r=t.ok?"empty stdout":t.spawnFailed?"spawn failed":`exit ${String(t.code??"unknown")}`;f(`DEBUG: git rev-parse --show-toplevel failed (${r}) cwd=${e}`)}let n=I("CURSOR_PROJECT_DIR")??I("CLAUDE_PROJECT_DIR");if(n&&Kn(n)){let r=await J("git",["rev-parse","--show-toplevel"],2e3,{cwd:n});return r.ok&&r.stdout?{root:r.stdout,inGitRepo:!0}:{root:n,inGitRepo:!1}}return{root:e,inGitRepo:!1}}async function oe(e=process.cwd()){return(await zn(e)).root}function G(e,t){try{return JSON.parse(e)}catch{return t}}var Bn=new Map;function U(e,t){let n=Bn.get(e);if(n!==void 0)return n;try{let r=G(zu(e,"utf8"),t);return Bn.set(e,r),r}catch{return Bn.set(e,t),t}}function Oe(e){return typeof e=="string"?e:""}function se(e,t){let n=e[t];if(typeof n=="string"||typeof n=="number"||typeof n=="boolean")return n;if(!t.includes("."))return;let r=t.split("."),o=e;for(let s of r){if(o===null||typeof o!="object"||Array.isArray(o))return;o=o[s]}if(typeof o=="string"||typeof o=="number"||typeof o=="boolean")return o}function R(e,t){let n=se(e,t);return typeof n=="string"?n:""}var me=500;function Jo(e,t=2){if(!Kn(e))return{entries:[],truncated:!1};let n=[],r=!1,o=(s,i)=>{if(i>t||r)return;let a;try{a=Gu(s,{withFileTypes:!0})}catch{return}for(let c of a){if(r)return;let l=Vo(s,c.name);if(c.isDirectory()){o(l,i+1);continue}if(c.isFile()){try{n.push({name:Ju(e,l),size:zo(l).size})}catch{continue}if(n.length>=me){r=!0;return}}}};return o(e,1),{entries:n,truncated:r}}function Vn(e){return Kn(e)?{present:!0,size:zo(e).size}:{present:!1,size:0}}function De(e){if(e===void 0||e==="")return!1;let t=e.trim().toLowerCase();return t!=="0"&&t!=="false"&&t!=="no"}function Xo(e=process.env){return De(N("CURSOR_SANDBOX",e))}var qu=["CIRCLECI","BUILDKITE","TF_BUILD","JENKINS_URL","JENKINS_HOME","CODEBUILD_BUILD_ID","DRONE","DRONE_BUILD_NUMBER","TEAMCITY_VERSION","TRAVIS","APPVEYOR","BITBUCKET_BUILD_NUMBER"];function Qu(e){return qu.some(t=>!!N(t,e))}function el(e){if(N("KUBERNETES_SERVICE_HOST",e)||De(N("REMOTE_CONTAINERS",e))||De(N("DEVCONTAINER",e)))return!0;try{if(Yu("/.dockerenv")||Xu("/proc/1/environ","utf8").includes("container="))return!0}catch{}return!1}function Zo(e){return["VSCODE_PID","VSCODE_IPC_HOOK","CURSOR_EXTENSION_HOST_ROLE","CURSOR_WORKSPACE_LABEL"].some(t=>!!N(t,e))}function tl(e,t=process.platform){return Zo(e)?t==="darwin"||t==="win32"?!0:["__CFBundleIdentifier","DISPLAY","WAYLAND_DISPLAY","SESSIONNAME"].some(n=>!!N(n,e)):!1}function nl(e){return e===void 0?!1:e.trim().toLowerCase().startsWith("bc-")}function rl(e){return e==="linux"}function N(e,t){if(t){let n=t[e];return n===void 0||n===""?void 0:n}return I(e)}function ol(e,t,n){return e.trim().toLowerCase()==="cursor"&&t.trim().toLowerCase()==="ubuntu"&&!!sl(N("CURSOR_VERSION",n))}function sl(e){if(e===void 0)return null;let t=e.trim();return t.length>0?t:null}function Wn(e){if(nl(e.sessionId))return!0;let t=e.hostname??Yo(),n=e.osUser??Qo(e.env);return ol(t,n,e.env)}function il(e){return De(N("CURSOR_AGENT",e.env))?!0:Wn(e)}function al(e){return!!(process.stdin.isTTY||process.stdout.isTTY||(N("TERM",e)??N("TERM_PROGRAM",e))||(N("SSH_TTY",e)??N("SSH_CONNECTION",e))||(N("__CFBundleIdentifier",e)??N("XPC_SERVICE_NAME",e))||Zo(e)||["DISPLAY","WAYLAND_DISPLAY","XDG_SESSION_TYPE","DBUS_SESSION_BUS_ADDRESS"].some(t=>!!N(t,e))||N("SESSIONNAME",e))}function ot(e={}){let t=e.env;if(N("GITHUB_ACTIONS",t))return"github_actions";if(De(N("CLAUDE_CODE_REMOTE",t)))return"claude_remote";let n=e.platform??process.platform;if(!tl(t,n)&&il(e)&&(De(N("CURSOR_AGENT",t))||rl(n)))return"cursor_cloud";if(N("CODESPACES",t)||N("CODESPACE_NAME",t))return"codespaces";if(N("GITLAB_CI",t))return"gitlab_ci";if(Qu(t))return"managed";let r=N("CI",t);return r&&r!=="false"&&r!=="0"?"managed":el(t)?"container":al(t)?"interactive":"unknown"}async function qo(){return await w("systemd-detect-virt",[],1e3)}function Qo(e=process.env,t=Zu){for(let n of["USER","LOGNAME","USERNAME"]){let r=e[n];if(typeof r=="string"){let o=r.trim();if(o.length>0)return o}}try{return t().username??""}catch{return""}}async function es(){let e=process.platform==="darwin"?"Darwin":process.platform==="win32"?"Windows_NT":"Linux",t="";if(process.platform==="darwin")t=await w("sw_vers",["-productVersion"],1e3);else if(process.platform==="linux"){try{let{readFileSync:s}=await import("node:fs"),i=s("/etc/os-release","utf8"),a=i.match(/^PRETTY_NAME="?([^"\n]+)"?/m)?.[1],c=i.match(/^VERSION_ID="?([^"\n]+)"?/m)?.[1];t=a??c??""}catch{t=await w("lsb_release",["-sd"],1e3).then(s=>s.replace(/^"|"$/g,""))}t||(t=await w("uname",["-r"],1e3))}else t=await w("ver",[],1e3);let n=Qo(),r=(process.env.SHELL??"").split(/[/\\]/).pop()??"",o="";try{o=await w("tty",[],500),o.includes("not a tty")&&(o="")}catch{o=""}return{os:e,os_version:t||null,user:n||null,shell:r||null,tty:o||null}}function Ft(){return Yo()}var ll="installation.json",dl="cloud-bootstrap.lock",pl=6e4;function ls(e,t,n){let r=`${e}:${t??""}`;return n?`${n}:${r}`:r}function ie(e=Yn()){return Xn(e,".ev-ai","agent-hook")}function fl(e=Yn()){return Xn(ie(e),ll)}function ds(e){return Xn(jt(e),dl)}function ps(){return cl(8).toString("hex")}function He(e){return ss("sha256").update(e).digest("hex").slice(0,16)}function A(e){if(e===void 0)return null;let t=e.trim();return t.length>0?t:null}function fs(e){return/^[A-Za-z0-9._-]{8,64}$/.test(e)}function ml(e=process.env){let t=A(e.EV_AI_HOOK_INSTALLATION_ID);if(t){if(!fs(t)){f(`WARN: ignoring EV_AI_HOOK_INSTALLATION_ID (expected 8\u201364 chars [A-Za-z0-9._-], got length ${t.length})`);return}return t}}function ms(e,t){return e&&fs(e)?e:(e&&f(`WARN: ignoring installation id override (expected 8\u201364 chars [A-Za-z0-9._-], got length ${e.length})`),ml(t))}function gl(e){return/^[0-9a-f]{16}$/.test(e)}function _l(e=process.env){if(A(e.GITHUB_ACTIONS)){let t=A(e.GITHUB_REPOSITORY_ID)??A(e.GITHUB_REPOSITORY),n=A(e.GITHUB_ACTOR)??A(e.GITHUB_TRIGGERING_ACTOR)??A(e.GITHUB_USER);if(t&&n)return He(`github_actions|${t}|${n}`)}if(A(e.CODESPACES)||A(e.CODESPACE_NAME)){let t=A(e.CODESPACE_NAME);if(t)return He(`codespaces|${t}`);let n=A(e.GITHUB_REPOSITORY_ID)??A(e.GITHUB_REPOSITORY),r=A(e.GITHUB_USER)??A(e.GITHUB_ACTOR);if(n&&r)return He(`codespaces|${n}|${r}`)}if(A(e.GITLAB_CI)){let t=A(e.CI_PROJECT_ID)??A(e.CI_PROJECT_PATH),n=A(e.GITLAB_USER_LOGIN)??A(e.GITLAB_USER_EMAIL)??A(e.GITLAB_USER_NAME);if(t&&n)return He(`gitlab|${t}|${n}`)}return null}var hl="cursoragent@cursor.com";function Sl(e){let t=A(e.CURSOR_USER_EMAIL);return!t||t.toLowerCase()===hl?null:t}function El(e,t){return A(e.CURSOR_PROJECT_DIR)??A(e.CLAUDE_PROJECT_DIR)??t}function yl(e){return tt(e).replace(/\.git$/i,"").toLowerCase()}async function Rl(e){let t=await w("git",["config","--get","remote.origin.url"],2e3,{cwd:e});return t?yl(t):e}async function Cl(e){let t=A(await w("git",["config","--local","--get","user.email"],2e3,{cwd:e})||void 0);if(t&&!K(null,t))return t;let n=A(await w("git",["log","-1","--format=%ae"],2e3,{cwd:e})||void 0);return n&&!K(null,n)?n:null}function Il(e,t){let n=El(e,t);return n?He(`cursor_cloud|${n}|${Sl(e)??""}`):null}async function Al(e,t){let n=A(e.CLAUDE_PROJECT_DIR)??t;if(!n)return null;let r=await Rl(n),o=await Cl(n);return He(`claude_remote|${r}|${o??""}`)}function ts(e,t){let n=ms(e,t);if(n)return n;let r=_l(t);return r||ps()}async function kl(e){let n=await w("git",["config","--get","remote.origin.url"],2e3,{cwd:e})||ul(e);return ss("sha256").update(n).digest("hex").slice(0,16)}function Ol(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t={};for(let[n,r]of Object.entries(e))typeof r=="string"&&r.length>0&&(t[n]=r);return Object.keys(t).length>0?t:void 0}function Pl(e){try{let t=JSON.parse(e);if(typeof t.installation_id!="string"||t.installation_id.length===0)return;let n=Ol(t.platform_agent_ids);return{installation_id:t.installation_id,...t.pinned===!0?{pinned:!0}:{},...n?{platform_agent_ids:n}:{},...typeof t.operator_identity_hash=="string"?{operator_identity_hash:t.operator_identity_hash}:{},...typeof t.operator_identity_sent_at=="string"?{operator_identity_sent_at:t.operator_identity_sent_at}:{}}}catch{return}}function Pe(e){if(is(e))try{return Pl(as(e,"utf8"))}catch{}}function Zn(e){return Pe(e)}function gs(e,t,n){let r=Pe(e);if(!r||r.operator_identity_hash===t&&r.operator_identity_sent_at===n)return;let o={...r,operator_identity_hash:t,operator_identity_sent_at:n};try{q(e,`${JSON.stringify(o,null,2)}
15
+ `)}catch(s){let i=s instanceof Error?s.message:String(s);f(`WARN: operator identity cache write failed open: ${i}`)}}function _s(e,t=Date.now()){if(!e)return!0;if(Pe(e)?.operator_identity_hash)return!1;let n=ds(e);try{if(is(n)){let r=Number.NaN;try{r=Number(as(n,"utf8").trim())}catch{}let o=t-r;if(Number.isFinite(o)&&o>=0&&o<pl)return!1;try{cs(n)}catch{}}}catch{}try{return Jn(jt(n),{recursive:!0}),us(n,`${t}
16
+ `,{encoding:"utf8",flag:"wx"}),!0}catch(r){if(ys(r))return!1;let o=r instanceof Error?r.message:String(r);return f(`WARN: cloud bootstrap claim failed open: ${o}`),!0}}function hs(e){if(e)try{cs(ds(e))}catch{}}function Ss(e,t){let r=Pe(e)?.platform_agent_ids?.[t];return typeof r=="string"&&r.length>0?r:void 0}function Es(e,t,n){if(!n)return;let r=Pe(e);if(!r||r.platform_agent_ids?.[t]===n)return;let o={installation_id:r.installation_id,platform_agent_ids:{...r.platform_agent_ids,[t]:n},...r.operator_identity_hash?{operator_identity_hash:r.operator_identity_hash}:{},...r.operator_identity_sent_at?{operator_identity_sent_at:r.operator_identity_sent_at}:{}};try{q(e,`${JSON.stringify(o,null,2)}
17
+ `)}catch(s){let i=s instanceof Error?s.message:String(s);f(`WARN: platform_agent_id cache write failed open: ${i}`)}}function ys(e){return e instanceof Error&&"code"in e&&e.code==="EEXIST"}function xl(e,t){Jn(jt(e),{recursive:!0}),us(e,`${JSON.stringify(t,null,2)}
18
+ `,{encoding:"utf8",flag:"wx"})}function ns(e,t){try{return xl(e,t),t}catch(n){if(!ys(n))throw n;return Pe(e)}}function rs(e,t){Jn(jt(e),{recursive:!0}),q(e,`${JSON.stringify(t,null,2)}
19
+ `)}function os(e,t){return{installation_id:e,...t&&t===e?{pinned:!0}:{}}}async function $t(e,t={}){let n=t.home??Yn(),r=t.env??process.env,o=await kl(e),s=fl(n),i={sessionId:t.sessionId,hostname:A(r.HOSTNAME)??void 0,osUser:A(r.USER)??A(r.LOGNAME)??A(r.USERNAME)??void 0,env:r},a=ot(i),c=ms(t.overrideId,r),l=a==="cursor_cloud"&&Wn(i)?Il(r,e):a==="claude_remote"?await Al(r,e):null,u=Pe(s);if(u){let h=u;if(c&&c===u.installation_id&&u.pinned!==!0&&(h={...u,pinned:!0},rs(s,h)),!!l&&l!==h.installation_id&&!c&&h.pinned!==!0&&gl(h.installation_id)&&l){let E={installation_id:l,...h.platform_agent_ids?{platform_agent_ids:h.platform_agent_ids}:{}};return rs(s,E),{installationId:l,storePath:s,repoKey:o}}return{installationId:h.installation_id,storePath:s,repoKey:o}}let p=c??l??ts(void 0,r),m=ns(s,os(p,c));if(m)return{installationId:m.installation_id,storePath:s,repoKey:o};let d=c??l??ts(void 0,r),_=ns(s,os(d===p?ps():d,c));if(_)return{installationId:_.installation_id,storePath:s,repoKey:o};throw new Error(`Failed to create installation record at ${s}`)}import{existsSync as Qn,readFileSync as bl}from"node:fs";import{dirname as Tl,isAbsolute as Nl,join as vl,relative as wl}from"node:path";function Rs(e){for(let t of bt){let n=vl(e,t);if(Qn(n))return n}}async function Ml(e=process.cwd(),t){let n=t??await oe(e);return Rs(n)??Rs(e)}async function Ll(e,t){let n=t??await oe(Tl(e)),r=wl(n,e);if(r.startsWith("..")||Nl(r))return!1;let o=await J("git",["ls-files","--error-unmatch",r],2e3,{cwd:n});return o.ok?!0:o.code===1?!1:(f(`WARN: git ls-files failed for manifest ${e} (code=${String(o.code)}); treating as tracked`),!0)}function qn(e){let t=bl(e,"utf8");return G(t,{})}function Ul(){return{schema_version:fe,mcp_servers:[]}}function Dl(e,t,n,r){!t||!n||(e.capture_hook_input==="full"&&r.has("capture_hook_input")&&(f(`WARN: ignoring capture_hook_input=full in git-tracked manifest ${t}; use EV_AI_HOOK_CAPTURE_FULL_INPUT=1 or an untracked operator manifest`),delete e.capture_hook_input),e.debug===!0&&r.has("debug")&&(f(`WARN: ignoring debug=true in git-tracked manifest ${t}; set debug on ~/.ev-ai/config.json`),delete e.debug))}async function Cs(e=process.cwd(),t={}){let{root:n,inGitRepo:r}=await zn(e),o=I("EV_AI_HOOK_MANIFEST"),s=o&&Qn(o)?o:void 0,i=s?void 0:Qn(vn())?vn():void 0,a=s?void 0:await Ml(e,n),c=i?qn(i):void 0,l=a?qn(a):void 0,u,p,m,d=new Set;if(s){u=qn(s),p=s,m=s;for(let y of Object.keys(u))d.add(y)}else if(c&&l){u=bo(l,c),p=i,m=a;for(let y of Object.keys(l))y in c||d.add(y)}else if(c)u=c,p=i;else if(l){u=l,p=a,m=a;for(let y of Object.keys(l))d.add(y)}else u=Ul();delete u.installation_id;let _=m?await Ll(m,n):!1;Dl(u,m,_,d);let{installationId:h,storePath:S,repoKey:E}=await $t(n,{sessionId:t.sessionId});return{manifestPath:p??S,manifest:u,installationId:h,installationStorePath:S,repoKey:E,collectorUrl:Mn(u),platformAgentId:u.platform_agent_id??"",gitRoot:n,inGitRepo:r}}function Is(e){return{schema_version:fe,...e?{collector_url:e}:{},mcp_servers:[]}}var Hl=["darwin-arm64","darwin-x64","linux-arm64","linux-x64","windows-x64","windows-arm64"];function Fl(e){return e==="windows-x64"||e==="windows-arm64"}function er(e=process.platform,t=process.arch){if(e==="darwin")return t==="arm64"?"darwin-arm64":t==="x64"?"darwin-x64":void 0;if(e==="linux")return t==="arm64"?"linux-arm64":t==="x64"?"linux-x64":void 0;if(e==="win32")return t==="x64"?"windows-x64":t==="arm64"?"windows-arm64":void 0}function As(e=process.platform,t=process.arch){let n=er(e,t);if(!n)throw new Error(`Unsupported platform ${e}-${t}. Supported: ${Hl.join(", ")}.`);return n}function jl(e){return Fl(e)?`${Z}.exe`:Z}function tr(e){return`compile-out/bin/${e}/${jl(e)}`}function Wl(e,t){let n=e.collectorUrl?.trim();if(!n)throw new Error(`${t} requires --url <https://hooks.ev-ai.ai/{orgToken}/hook>`);let r=Ue(n);if(r)throw new Error(`collector URL rejected: ${r}`);return Qe(n)}function Jl(e){let t=e.collectorUrl?.trim();if(!t)return;let n=Ue(t);if(n)throw new Error(`collector URL rejected: ${n}`);return Qe(t)}function Yl(e){return Wl(e,"install")}function Ts(e){let t={};for(let n=0;n<e.length;n++){let r=e[n];if(r==="--url"){let o=e[n+1];o&&!o.startsWith("--")&&(t.collectorUrl=o,n+=1);continue}if(r==="--collector-url")throw new Error("--collector-url was renamed to --url")}return t}function Ns(e){let t={};for(let n=0;n<e.length;n++){let r=e[n];if(r==="--url"){let o=e[n+1];o&&!o.startsWith("--")&&(t.collectorUrl=o,n+=1);continue}if(r==="--collector-url")throw new Error("--collector-url was renamed to --url");if(r==="--update")throw new Error("--update was removed; use the `update` command instead of `install --update`");if(r==="--delivery"){let o=e[n+1];(o==="npx"||o==="binary"||o==="local")&&(t.delivery=o,n+=1);continue}if(r==="--force"){t.force=!0;continue}if(r==="--no-claude"){t.skipClaude=!0;continue}if(r==="--no-cursor"){t.skipCursor=!0;continue}if(r==="--no-codex"){t.skipCodex=!0;continue}}return t}function vs(e=process.execPath){return ws(e)?"binary":"npx"}function Xl(){return x(ae(),".ev-ai","agent-hook")}function Zl(e=ae()){return x(e,".ev-ai","agent-hook",Ln)}function ql(){let e=or(Vl(import.meta.url)),t=x(e,"hook.mjs");return ge(t)?t:x(e,"..","dist","hook.mjs")}function ws(e=process.execPath){return Mt(e)}function Ms(e,t){let n=bs(ks(e),ks(t));return!n.startsWith("..")&&!Gl(n)}function Gt(e){return e.split(zl).join("/")}function Ql(e){return`node "$(git rev-parse --show-toplevel)/${Gt(e)}"`}function ed(e){return`"$(git rev-parse --show-toplevel)/${Gt(e)}"`}function td(e){return x(e,Un)}function Ls(e,t){let n=td(e);rr(or(n),{recursive:!0}),xs(t,n,{force:!0});try{Ps(n,493)}catch{}return n}function nd(e){let t=x(Xl(),"current");try{Kt(t,{recursive:!0,force:!0})}catch{}Bl(e,t,process.platform==="win32"?"junction":"dir")}function Us(e,t=re,n=ae()){let r=x(n,".ev-ai","agent-hook",t),o=x(r,Z);rr(r,{recursive:!0}),xs(e,o,{force:!0});try{Ps(o,493)}catch{}return nd(r),x(n,".ev-ai","agent-hook",Ln)}function Ds(e){let t=er();if(!t)return;let n=[x(e,tr(t)),x(e,"packages","agent-hook",tr(t))];for(let r of n)if(ge(r)&&Ms(e,r))return r}function rd(e=ae()){let t=Zl(e);return ge(t)?t:void 0}function od(e,t=ae()){let n=rd(t);return n||(ws()?Us(process.execPath,re,t):Ds(e))}function sd(e,t=ae()){let n=Ds(e);if(!n)throw new Error(`update requires a locally compiled binary \u2014 run this package\u2019s build:hook-binary script first.
20
+ To install a released binary instead: curl -fsSL https://cdn.ev-ai.ai/agent-hook/install.sh | sh`);let r=Us(n,re,t),o=Ls(e,n);return{sourcePath:n,projectPath:o,globalPath:r}}function Os(e){let t=[x(e,"packages","agent-hook","dist","hook.mjs"),x(e,vo)],n=ql();ge(n)&&Ms(e,n)&&t.unshift(n);for(let r of t){if(!ge(r))continue;let o=Gt(bs(e,r));return{command:Ql(o),hookPath:o,strategy:"dev_mjs"}}}function id(e){return e==="SessionStart"||e==="sessionStart"}function ad(e){return e.replace(/\s+--prefer-offline\b/g,"")}function Bt(e,t){return id(e)?ad(t):t}function cd(e=Lt){return`npx -y --prefer-offline ${e}`}function ud(e,t=ae(),n=vs()){if(n==="npx")return{command:cd(),hookPath:Lt,strategy:"npx"};if(n==="local"){let s=Os(e);if(s)return s;throw new Error("local delivery requires packages/agent-hook/dist/hook.mjs (or node_modules/@ev-ai/agent-hook/dist/hook.mjs) under the git root \u2014 run yarn workspace @ev-ai/agent-hook build first")}let r=od(e,t);if(r){Ls(e,r);let s=Gt(Un);return{command:ed(s),hookPath:s,strategy:"project_binary"}}let o=Os(e);if(o)return o;throw new Error(`ev-ai-agent-hook binary not found. Install from CDN:
21
+ curl -fsSL ${wo}/install.sh | sh
22
22
  Or use npx delivery:
23
- npx ${wt} install`)}function Ms(e){return typeof e!="string"?!1:e.includes("@ev-ai/agent-hook")||e.includes("agent-hook/dist/hook")||e.includes(".ev-ai/agent-hook")||e.includes(ee)||/(?:^|[\s/"'])ev-ai-agent-hook(?:$|[\s"'])/.test(e)}function ir(e,t){return`${e.replace(/\s+--runner(?:=|\s+)\S+/g,"").trimEnd()} --runner ${t}`}function Se(e,t){or(sr(e),{recursive:!0}),vl(e,`${JSON.stringify(t,null,2)}
24
- `,"utf8")}function le(e){if(he(e))try{return JSON.parse(Tl(e,"utf8"))}catch(t){throw t instanceof SyntaxError?new Error(`Invalid JSON in ${e} \u2014 fix or remove the file`,{cause:t}):t}}function Ql(e,t){let n=Es(t.collectorUrl),r={...e,schema_version:e?.schema_version??n.schema_version};return t.collectorUrl!==void 0?r.collector_url=t.collectorUrl:r.collector_url=e?.collector_url??n.collector_url,delete r.repo_ingest_token,delete r.installation_id,r.mcp_servers??=n.mcp_servers,r}function ed(e){return(e.schema_version??ge)===ge&&e.collector_url===void 0&&(e.mcp_servers?.length??0)===0&&e.platform_agent_id===void 0&&e.capture_hook_input===void 0&&e.debug===void 0&&e.repo_ingest_token===void 0}function Ls(e,t){let n=P(e,xt),r=le(n),o=Ql(r,t);return t.collectorUrl!==void 0||he(n)||!ed(o)?(Se(n,o),{manifestPath:n,wrote:!0}):{manifestPath:void 0,wrote:!1}}function rr(e){if(e===null||typeof e!="object")return!1;let t=e,n=String(t.CLAUDE_CODE_ENABLE_TELEMETRY??"").toLowerCase();return n==="1"||n==="true"?!0:Object.keys(t).some(r=>r.startsWith("OTEL_"))}function td(e){if(rr(process.env))return!0;let t=ue();return[...Hn(),P(t,".claude","settings.json"),P(t,".claude","remote-settings.json"),P(e,".claude","settings.json"),P(e,".claude","settings.local.json")].some(r=>{try{let o=le(r);return o?rr(o.env):!1}catch{return!1}})}function nd(e){try{let t=le(P(e,".claude","settings.json"));return t?rr(t.env):!1}catch{return!1}}function Us(e){return Array.isArray(e)?e:[]}function Bt(e){let t=[],n=r=>!!r&&typeof r=="object"&&Ms(r.command);for(let r of Us(e)){if(!r||typeof r!="object"){t.push(r);continue}let o=Array.isArray(r.hooks)?r.hooks:[],s=o.filter(i=>!n(i));if(!(s.length===0&&o.some(n))){if(s.length!==o.length){t.push({...r,hooks:s});continue}t.push(r)}}return t}function Ds(e,t){return[...Bt(e),...t]}function ar(e){return Array.isArray(e)?e.filter(t=>!t||typeof t!="object"?!0:!Ms(t.command)):[]}function rd(e,t){return[...ar(e),{command:t}]}function od(e){return typeof e=="string"?[e]:e}function sd(e){let t=(n="")=>({hooks:od(e).map(r=>({type:"command",command:Ft(n,r)}))});return{SessionStart:[t("SessionStart")],UserPromptExpansion:[t()],UserPromptSubmit:[t()],PreToolUse:[t()],PostToolUse:[t()],PostToolUseFailure:[t()],PermissionDenied:[t()],Stop:[t()],StopFailure:[t()],SessionEnd:[t()],SubagentStart:[t()],SubagentStop:[t()]}}function id(e){let t=typeof e=="string"?{command:e}:e,n=(r="")=>({hooks:[{type:"command",command:Ft(r,t.command),...t.commandWindows===void 0?{}:{commandWindows:Ft(r,t.commandWindows)},statusMessage:Ho}]});return{SessionStart:[n("SessionStart")],UserPromptSubmit:[n()],PreToolUse:[n()],PostToolUse:[n()],Stop:[n()]}}var ad=["sessionStart","beforeSubmitPrompt","preToolUse","postToolUse","postToolUseFailure","beforeShellExecution","beforeReadFile","beforeMCPExecution","subagentStart","subagentStop","stop"],cd=["afterShellExecution","afterFileEdit"];function ud(e,t=cd){let n={...e};for(let r of t){if(!(r in n))continue;let o=ar(n[r]);o.length===0?delete n[r]:n[r]=o}return n}function ld(e,t,n={}){let r=P(e,".claude/settings.json"),o=ir(t,"claude"),s=le(r)??{};if(td(e)&&!n.force){if(s.hooks&&typeof s.hooks=="object"){let u={...s.hooks};for(let p of Object.keys(u))u[p]=Bt(u[p]),Us(u[p]).length===0&&delete u[p];Object.keys(u).length===0?delete s.hooks:s.hooks=u,Se(r,s)}return!1}let a=s.hooks&&typeof s.hooks=="object"?s.hooks:{},c=sd(o),l={...a};for(let[u,p]of Object.entries(c))l[u]=Ds(a[u],p);return s.hooks=l,Se(r,s),!0}function dd(e,t){let n=P(e,".cursor/hooks.json"),r=ir(t,"cursor"),o=le(n)??{},s=o.hooks&&typeof o.hooks=="object"?o.hooks:{},i=ud({...s});for(let a of ad)i[a]=rd(i[a],Ft(a,r));Se(n,{...o,version:typeof o.version=="number"?o.version:1,hooks:i})}function pd(e,t){let n=P(e,".codex/hooks.json"),r=ir(t,"codex"),o=le(n)??{},s=o.hooks&&typeof o.hooks=="object"?o.hooks:{},i=id(r),a={...s};for(let[c,l]of Object.entries(i))a[c]=Ds(s[c],l);Se(n,{...o,hooks:a})}function fd(e){let t=P(e,".claude/settings.json"),n=le(t);if(!n?.hooks||typeof n.hooks!="object")return;let r={...n.hooks},o=!1;for(let s of Object.keys(r)){let i=r[s],a=Bt(i);JSON.stringify(i)!==JSON.stringify(a)&&(o=!0),a.length===0?delete r[s]:r[s]=a}o&&(Object.keys(r).length===0?delete n.hooks:n.hooks=r,Se(t,n),f(`Removed ev-ai hooks from ${t}`))}function md(e){let t=P(e,".cursor/hooks.json"),n=le(t);if(!n?.hooks||typeof n.hooks!="object")return;let r={...n.hooks},o=!1,s=0;for(let i of Object.keys(r)){let a=r[i],c=ar(a);JSON.stringify(a)!==JSON.stringify(c)&&(o=!0),c.length===0?delete r[i]:(r[i]=c,s+=c.length)}if(o){if(s===0&&Object.keys(r).length===0&&Object.keys(n).filter(a=>a!=="hooks"&&a!=="version").length===0){jt(t,{force:!0}),f(`Removed ${t}`);return}Se(t,{...n,hooks:r}),f(`Removed ev-ai hooks from ${t}`)}}function gd(e){let t=P(e,".codex/hooks.json"),n=le(t);if(!n?.hooks||typeof n.hooks!="object")return;let r={...n.hooks},o=!1,s=0;for(let i of Object.keys(r)){let a=r[i],c=Bt(a);JSON.stringify(a)!==JSON.stringify(c)&&(o=!0),c.length===0?delete r[i]:(r[i]=c,s+=c.length)}if(o){if(s===0&&Object.keys(r).length===0&&Object.keys(n).filter(a=>a!=="hooks").length===0){jt(t,{force:!0}),f(`Removed ${t}`);return}Se(t,{...n,hooks:r}),f(`Removed ev-ai hooks from ${t}`)}}function cr(e=process.platform,t=process.arch,n={}){if(e==="win32")throw new Error("Windows install is not supported yet. Use macOS/Linux, or wait for phase-2 native commands.");(n.requireBinaryArch??!0)&&ys(e,t)}async function Hs(e={}){let t=Hl(e);e.collectorUrl=t;let n=e.skipClaude===!0,r=e.skipCursor===!0,o=e.skipCodex===!0;if(n&&r&&o)throw new Error("at least one runner must be wired; refuse --no-claude --no-cursor --no-codex together");let s=e.delivery??Ps();cr(process.platform,process.arch,{requireBinaryArch:s==="binary"});let i=e.cwd??process.cwd(),a=await ie(i),{command:c,hookPath:l,strategy:u}=ql(a,ue(),s),{installationId:p,storePath:m}=await Ht(a,{overrideId:e.installationId}),{manifestPath:d,wrote:_}=Ls(a,e),S=[];return n?f("Skipped Claude hook \u2014 --no-claude"):ld(a,c,{force:e.force})?(S.push("Claude"),e.force&&nd(a)&&f("Forced Claude hook despite project native OTEL \u2014 expect duplicate session/tool events")):f("Skipped Claude hook \u2014 native OTEL telemetry already enabled (avoids duplicate events); pass --force to wire anyway"),r?f("Skipped Cursor hook \u2014 --no-cursor"):(dd(a,c),S.push("Cursor")),o?f("Skipped Codex hook \u2014 --no-codex"):(pd(a,c),S.push("Codex")),f(`Installed hook (${u}) at ${l}`),f(`Installation identity ${p} at ${m}`),_&&d?f(`Shared manifest written to ${d}`):f("Using package default collector config (no shared manifest file needed)"),f(S.length>0?`Wired ${S.join(", ")} hooks in ${a} (commands include --runner)`:`No runner hooks wired in ${a} (Claude skipped by OTEL; Cursor/Codex excluded via flags)`),u==="npx"?f("Hook commands use npx and may be committed; teammates need Node on PATH only (no install step, no env vars when collector_url is in the shared manifest)."):u==="project_binary"?f("Hook commands are git-root-relative and may be committed; each collaborator runs install once to populate .ev-ai/agent-hook/ (gitignored)."):u==="dev_mjs"&&f("Hook commands use node + monorepo packages/agent-hook/dist/hook.mjs (local delivery; rebuild with yarn workspace @ev-ai/agent-hook build)."),_&&d&&e.collectorUrl&&f("Shared manifest includes collector_url \u2014 commit it with hook configs so teammates post without env vars."),{gitRoot:a,hookPath:l,manifestPath:d,installationStorePath:m,strategy:u}}async function Fs(e=process.cwd()){cr(process.platform,process.arch,{requireBinaryArch:!0});let t=await ie(e),{projectPath:n,globalPath:r}=Jl(t);f(`Refreshed ${r}`),f(`Refreshed ${n}`),f("Hook configs and shared manifest left unchanged")}async function js(e={}){let t=Dl(e);e.collectorUrl=t,cr(process.platform,process.arch,{requireBinaryArch:!1});let n=e.cwd??process.cwd(),r=await ie(n),{manifestPath:o,wrote:s}=Ls(r,e);if(t!==void 0&&(!o||!s))throw new Error("configure failed to write shared collector manifest");return s&&o?f(`Wrote ${o}`):t===void 0&&f("No --url given and no shared manifest yet \u2014 pass --url <\u2026/{orgToken}/hook> to write collector destination."),f("Manifest only \u2014 enable ev-ai marketplace plugins. Do not also run file-wiring install for the same events."),{gitRoot:r,manifestPath:o}}function $s(e){for(let t of[()=>fd(e),()=>md(e),()=>gd(e)])try{t()}catch(n){let r=n instanceof Error?n.message:String(n);f(`WARN: strip skipped a hook file: ${r}`)}}async function Bs(e=process.cwd()){let t=await ie(e);return $s(t),f("Stripped ev-ai file-wired hooks; shared collector manifest left in place."),f("Next: enable ev-ai marketplace plugins, then restart runners."),{gitRoot:t}}async function Ks(e=process.cwd()){let t=await ie(e);$s(t);for(let n of Pt){let r=P(t,n);if(he(r))try{jt(r,{force:!0}),f(`Removed ${r}`)}catch(o){let s=o instanceof Error?o.message:String(o);f(`WARN: uninstall could not remove ${r}: ${s}`)}}}import{createHash as qf}from"node:crypto";import{existsSync as Qf,mkdirSync as em,readdirSync as tm,readFileSync as Yi,unlinkSync as Xi,writeFileSync as nm}from"node:fs";import{homedir as Zi}from"node:os";import{join as xr}from"node:path";import{existsSync as Od}from"node:fs";import{existsSync as _d}from"node:fs";import{homedir as zs}from"node:os";import{join as hd}from"node:path";function Vs(e){return e.settings.filter(t=>t.toLowerCase().endsWith(".json"))}var Sd={claude:{shared:{skillRoots:[".claude/skills"],dirs:[{dir:".claude/agents",kind:"SUBAGENT",extensions:[".md"]},{dir:".claude/commands",kind:"COMMAND",extensions:[".md"]},{dir:".claude/rules",kind:"RULE",extensions:[".mdc",".md"]}],memory:[["CLAUDE.md"],["CLAUDE.local.md"],[".claude/CLAUDE.md"]],settings:[".claude/settings.json",".claude/settings.local.json",".claude/hooks.json"]},homeOnly:{mcpJson:[".claude.json"],plugins:"claude",managed:"claude"},projectOnly:{mcpJson:[".mcp.json","mcp.json"]}},cursor:{shared:{skillRoots:[".cursor/skills"],dirs:[{dir:".cursor/agents",kind:"SUBAGENT",extensions:[".md"]},{dir:".cursor/commands",kind:"COMMAND",extensions:[".md"]},{dir:".cursor/rules",kind:"RULE",extensions:[".mdc",".md"]}],memory:[["AGENTS.md"]],settings:[".cursor/hooks.json",".cursor/cli-config.json"],mcpJson:[".cursor/mcp.json"]},homeOnly:{skillRoots:[".cursor/skills-cursor"],memory:[[".cursor/AGENTS.md"]],plugins:"cursor",managed:"cursor"},projectOnly:{skillRoots:[".agents/skills"]}},codex:{shared:{skillRoots:[".agents/skills",".codex/skills"],dirs:[{dir:".codex/agents",kind:"SUBAGENT",extensions:[".toml",".md"]},{dir:".codex/prompts",kind:"COMMAND",extensions:[".md"]},{dir:".codex/rules",kind:"RULE",extensions:[".md",".rules"]}],memory:[["AGENTS.override.md","AGENTS.md"]],settings:[".codex/hooks.json",".codex/config.toml"],mcpToml:[".codex/config.toml"]},homeOnly:{memory:[[".codex/AGENTS.override.md",".codex/AGENTS.md"]],managed:"codex"}}};function Gs(e,t){if(!(!e&&!t))return[...e??[],...t??[]]}function Ed(e,t={}){let{shared:n}=e;return{skillRoots:[...n.skillRoots,...t.skillRoots??[]],dirs:n.dirs,memory:[...n.memory,...t.memory??[]],settings:[...n.settings,...t.settings??[]],mcpJson:Gs(n.mcpJson,t.mcpJson),mcpToml:Gs(n.mcpToml,t.mcpToml),plugins:t.plugins??n.plugins,managed:t.managed??n.managed}}function Ws(e){return Object.fromEntries(Object.entries(Sd).map(([t,n])=>[t,Ed(n,n[e])]))}var He=Ws("homeOnly"),ye=Ws("projectOnly");function yd(e){return[...e.skillRoots,...e.dirs.map(t=>t.dir),...e.memory.flat(),...e.settings,...e.mcpJson??[],...e.mcpToml??[]]}function Rd(e,t){return yd(e).some(n=>_d(hd(t,n)))}function Js(e,t){for(let n of e)if(Rd(n,t))return!0;return!1}function Ee(e){return[...new Set(e)]}function Re(e){let t=[],n=[],r=[],o=[],s=[],i=[],a=[];for(let c of e){t.push(...c.skillRoots);for(let l of c.dirs)l.kind==="SUBAGENT"?n.push(l.dir):l.kind==="COMMAND"?r.push(l.dir):o.push(l.dir);s.push(...c.memory.flat()),i.push(...c.settings),a.push(...c.mcpJson??[],...c.mcpToml??[])}return{skills:Ee(t),subagents:Ee(n),commands:Ee(r),rules:Ee(o),memory:Ee(s),settings:Ee(i),mcp:Ee(a)}}function Cd(e,t=zs(),n=process.platform){let r=[];for(let o of e)o.managed&&r.push(...Lt(o.managed,n,t));return Ee(r)}var Ce=Re(Object.values(He));function Ys(e=zs(),t=process.platform){return Cd(Object.values(He),e,t)}import{existsSync as Id}from"node:fs";import{resolve as ur}from"node:path";function V(e){return ur(e).replaceAll("\\","/").replace(/\/$/,"")}function be(e,t){let n=new Set(t),r=[];for(let o of e)n.delete(o)&&r.push(o);for(let o of[...n].sort())r.push(o);return r}function Kt(e,t){if(!e)return t;let n=`${e}/`,r=[],o=[];for(let s of t)s===e||s.startsWith(n)?r.push(s):o.push(s);return r.length===0?t:[...r,...o]}var Ad=/^(?!\.)[A-Za-z0-9._-]+(?:\/[A-Za-z0-9._-]+)*$/;function ot(e){let t=e.replaceAll("\\","/").replace(/^\.\//,"");return!t||t.startsWith("/")||/^[A-Za-z]:\//.test(t)||t.split("/").includes("..")||!Ad.test(t)?null:t}function Fe(e,t){let n=new Set,r=[];for(let o of[e,t]){if(!o)continue;let s=V(o);n.has(s)||(n.add(s),r.push(s))}return r}function kd(e,t){let n=`${e}/`;return t===e||t.startsWith(n)}function ne(e,t,n,r=Id){for(let o of e)for(let s of t){let i=V(ur(o,s)),a=ur(o,s,n).replaceAll("\\","/");if(kd(i,a)&&r(a))return a}return null}var Zs=/(?:^|\/|[\s"'=(])(?:\.cursor\/|\.claude\/|\.agents\/)skills(?:-cursor)?\/([^/]+)\/SKILL\.md/i,qs=/(?:^|\/|[\s"'=(])\.codex\/commands\/([^/]+)\.md\b/i,xd=/(?:^|\s)\/([a-z][a-z0-9-]{1,63}(?:\/[a-z][a-z0-9-]{1,63}){0,5})\b/gi,Xs=new Set(["applications","app","bin","boot","data","dev","etc","home","lib","media","mnt","node_modules","opt","pkg","private","proc","projects","repos","run","sbin","src","srv","sys","tmp","usr","users","var","volumes","workspace","workspaces"]),Pd=/^[a-z][a-z0-9-]{1,63}$/,bd=[".cursor/skills",".claude/skills",".agents/skills"],Td=[".cursor/skills",".cursor/skills-cursor",".claude/skills",".agents/skills"],Nd=be(bd,Re(Object.values(ye)).skills),vd=be(Td,Re(Object.values(He)).skills),wd=new Set(["read","read_file","view"]),Md=new Set(["bash","shell","zsh"]);function lr(e){let t=e.replace(/\\/g,"/");return Zs.exec(t)?.[1]??null}function Ld(e){let t=e.replace(/\\/g,"/"),r=qs.exec(t)?.[1];return r?r.toLowerCase():null}function Ud(e){return lr(e)??Ld(e)}function Dd(e){for(let t of["path","file_path","target_file"]){let n=e[t];if(typeof n=="string"&&n.length>0)return n}return null}function Gt(e){return typeof e=="string"?Gt($(e,null)):!e||typeof e!="object"?null:Dd(e)}function Qs(e){if(typeof e=="string")return Qs($(e,null));if(!e||typeof e!="object")return null;let t=e.command;return typeof t=="string"&&t.length>0?t:null}function dr(e){let t=Qs(e.tool_input);if(t)return t;let n=xe(e.command);return n.length>0?n:null}function Hd(e){let t=e.replace(/\\/g,"/"),n=Zs.exec(t);if(n?.[1])return n[1];let o=qs.exec(t)?.[1];return o?o.toLowerCase():null}function Fd(e){return typeof e.tool_name=="string"?e.tool_name:typeof e.tool=="string"?e.tool:""}function pr(e){let t=Gt(e.tool_input)??xe(e.file_path);return t.length>0?t:null}function st(e,t,n){let r=Fd(e).toLowerCase();if(wd.has(r)){let o=pr(e);return o?t(o):null}if(Md.has(r)){let o=dr(e);return o?n(o):null}return null}function ei(e){return st(e,Ud,Hd)}function jd(e){let t=new Set,n=[];for(let r of e.matchAll(xd)){let o=r[1]?.toLowerCase();!o||t.has(o)||$d(o)||(t.add(o),n.push(o))}return n}function $d(e){let t=e.split("/")[0];return Xs.has(e)||t!==void 0&&Xs.has(t)}function ti(e){let t=e.skillId.toLowerCase();if(!Pd.test(t))return null;let n=e.exists??Od,r=`${t}/SKILL.md`,o=ne(Fe(e.launchCwd,e.gitRoot),Nd,r,n);return o!==null?o:e.home?ne([V(e.home)],vd,r,n):null}function Bd(e){return xe(e.prompt)}function ni(e){let t=h(e,"command_name");if(t){let r=h(e,"expansion_type");if(r&&r!=="slash_command")return[];let o=t.replace(/^\//,"").toLowerCase();return o?[o]:[]}let n=Bd(e);return n?jd(n):[]}var Er=Xe(Be(),1);import{existsSync as If}from"node:fs";var Ne={claude:".claude",cursor:".cursor",codex:".codex",opencode:".opencode"};function at(e){let n=e.replace(/^\/+|\/+$/g,"").toLowerCase().split("/").filter(Boolean);return n.length<2?"":n.join("/")}function Cf(e){if(!e)return"";let t=e.replace(/^([a-z]+:\/\/)[^/@]+@/i,"$1");t=t.replace(/\.git$/i,"");let n=t.match(/^git@[^:]+:(.+)$/);if(n?.[1])return at(n[1]);let r=t.match(/^ssh:\/\/[^/]+\/(.+)$/i);if(r?.[1])return at(r[1]);t=t.replace(/^https:\/\//i,""),t=t.replace(/^http:\/\//i,""),t=t.replace(/^ssh:\/\//i,"");let o=t.match(/^[^/]+\/(.+)$/);return o?.[1]?at(o[1]):at(t)}async function ct(e=process.cwd()){let t=await X("git",["rev-parse","--is-inside-work-tree"],2e3,{cwd:e});if(!t.ok||t.stdout!=="true")return null;let[n,r,o,s]=await Promise.all([X("git",["remote","get-url","origin"],2e3,{cwd:e}),X("git",["branch","--show-current"],2e3,{cwd:e}),X("git",["rev-parse","HEAD"],2e3,{cwd:e}),X("git",["status","--porcelain"],2e3,{cwd:e})]),i=n.ok?n.stdout:null;return{remote:i===null?null:i.replace(/^([a-z]+:\/\/)[^/@]+@/i,"$1"),branch:r.ok?r.stdout:null,head:o.ok?o.stdout:null,dirty:s.ok?s.stdout.length>0:null}}async function ki(e,t,n,r=process.cwd(),o,s,i){if(t)return t;let a=Ne[n];if(!a)return"";let c=is(n,e.scope_path,i);if(s){let _=ms(s,c);if(_)return _}let l=o??await ct(r),u=l?.remote?Cf(l.remote):"";if(u||(u=at(process.env.GITHUB_REPOSITORY??"")),!u)return"";let p=e.scope_path??"",m=p?`${p}/`:"",d=`${u}:${m}${a}`;return s&&gs(s,c,d),d}var Af=[".cursor/rules",".claude/rules",".codex/rules"],kf=Re(Object.values(ye)).rules;function Of(e){return be(Kt(e?Ne[e]:void 0,Af),kf)}var xf=/(?:^|\/|[\s"'=(])((?:\.cursor|\.claude|\.codex)\/rules\/[^'"\s]+?\.(?:mdc|md|rules))\b/i;function Oi(e){let t=ot(e.relativePath);if(!t)return null;let n=e.exists??If,r=Fe(e.launchCwd,e.gitRoot),o=Of(e.runnerPlatform),s=ne(r,o,t,n);if(s!==null)return s;if(!t.includes("/")){let i=ne(r,["."],t,n);if(i!==null)return i}return e.home?ne([V(e.home)],o,t,n):null}function Pf(e){let t=e.replace(/\\/g,"/"),r=xf.exec(t)?.[1];return r?(0,Er.nativeKeyForRulePath)(r):null}function xi(e){return st(e,Er.nativeKeyForRulePath,Pf)}function Pi(e){return e.replace(/\.(mdc|md|rules)$/i,"")}function bi(e){let t=e.attachments;if(!Array.isArray(t))return[];let n=new Set,r=[];for(let o of t){if(!o||typeof o!="object"||Array.isArray(o))continue;let s=o;if(s.type!=="rule")continue;let i=typeof s.file_path=="string"?s.file_path:"",a=ot(i);!a||n.has(a)||(n.add(a),r.push(a))}return r}var yr=Xe(Be(),1);import{existsSync as bf}from"node:fs";var Tf=[".cursor/commands",".claude/commands",".codex/prompts"],Nf=Re(Object.values(ye)).commands;function vf(e){return be(Kt(e?Ne[e]:void 0,Tf),Nf)}var wf=/(?:^|\/|[\s"'=(])((?:\.cursor|\.claude|\.codex)\/(?:commands|prompts)\/[^'"\s]+?\.(?:md|mdc))\b/i;function Ti(e){let t=ot(e.commandId);if(!t)return null;let n=e.exists??bf,r=`${t}.md`,o=vf(e.runnerPlatform),s=ne(Fe(e.launchCwd,e.gitRoot),o,r,n);return s!==null?s:e.home?ne([V(e.home)],o,r,n):null}function Mf(e){let t=e.replace(/\\/g,"/"),r=wf.exec(t)?.[1];return r?(0,yr.nativeKeyForCommandPath)(r):null}function Ni(e){return st(e,yr.nativeKeyForCommandPath,Mf)}import{existsSync as wi}from"node:fs";import{homedir as Mi}from"node:os";import{join as ut,resolve as Rr,sep as vi}from"node:path";function Cr(e){return[...new Set([e,e.replaceAll(/[^A-Za-z0-9_-]/g,"_"),e.replaceAll(/[^A-Za-z0-9_-]+/g,"_")])]}function Ir(e,t){let n=t.toLowerCase();return Cr(e).some(r=>r.toLowerCase()===n)}function Xt(e,t,n){if(!wi(e))return;let r=F(e,{});for(let[o,s]of Object.entries(r.mcpServers??{}))n.set(o,{declared:{name:o,...t},config:s})}function Lf(e,t,n){if(!wi(e))return;let r=F(e,{}),o=Rr(t),s=null;for(let a of Object.keys(r.projects??{})){let c=Rr(a);(o===c||o.startsWith(c.endsWith(vi)?c:c+vi))&&(s===null||c.length>Rr(s).length)&&(s=a)}if(s===null)return;let i=r.projects?.[s]?.mcpServers??{};for(let[a,c]of Object.entries(i))n.set(a,{declared:{name:a,source:"claude_json_project",sourcePath:".claude.json",scope:"user"},config:c})}function Li(e,t,n,r){let o=new Map;for(let s of e.mcp_servers??[])s.name&&o.set(s.name,{declared:{name:s.name,source:"manifest"}});return n==="claude"?(Xt(ut(r,".claude.json"),{source:"claude_json_user"},o),Lf(ut(r,".claude.json"),t,o)):n==="cursor"&&Xt(ut(r,".cursor/mcp.json"),{source:"cursor_mcp_user"},o),Xt(ut(t,".mcp.json"),{source:"mcp_json"},o),Xt(ut(t,".cursor/mcp.json"),{source:"cursor_mcp"},o),o}async function Ar(e,t=process.cwd(),n="claude",r=Mi()){return[...Li(e,t,n,r).values()].map(o=>o.declared)}function Ui(e,t,n=process.cwd(),r="claude",o=Mi()){let s=Li(t,n,r,o),i=s.get(e);if(i!==void 0)return i.config??null;for(let[a,c]of s)if(Ir(a,e))return c.config??null;return null}function kr(e){let t=bo(e);if(t.problem){f(`WARN: ignoring --url/--token collector override: ${t.problem}`);return}return t.url}function Di(e,t){if(h(e,"conversation_id"))return!0;if(t==="")return!1;let n=t[0];return n?.toLowerCase()===n}function Uf(){return!!(I("CURSOR_VERSION")??I("CURSOR_PROJECT_DIR"))}function Or(e,t,n){return e!=="claude"&&e!=="codex"?!1:Di(t,n)?!0:Uf()}function lt(e,t,n,r){if(Di(e,t))return"cursor";if(bt(r))return r;let o=h(e,"conversation_id"),s=h(e,"turn_id"),i=h(e,"session_id"),a=t.toLowerCase(),c="unknown";return o||t===a&&t!==""?c="cursor":s?c="codex":(i||a==="sessionstart"||a==="sessionend"||a==="stop"||a==="stopfailure"||a==="pretooluse"||a==="posttooluse"||a==="posttoolusefailure"||a==="permissiondenied"||a==="subagentstart"||a==="subagentstop"||a==="userpromptexpansion"||a==="userpromptsubmit")&&(c="claude"),bt(n)&&(c=n),c}function Zt(e,t){let n=e.toLowerCase();return n==="sessionend"||n==="stopfailure"||n==="subagentstop"?!0:n==="stop"&&t==="codex"}function Df(e){switch(e){case"sessionstart":return"session_start";case"stop":case"sessionend":case"stopfailure":return"session_end";case"pretooluse":case"posttooluse":case"posttoolusefailure":case"permissiondenied":case"beforemcpexecution":case"beforeshellexecution":case"aftershellexecution":case"beforereadfile":case"afterfileedit":case"subagentstart":case"subagentstop":return"tool_invoked";case"beforesubmitprompt":case"userpromptexpansion":case"userpromptsubmit":return"skill_invoked";default:return""}}function Hi(e){let t=e.toLowerCase();return t==="userpromptsubmit"||t==="beforesubmitprompt"}function Fi(e,t){return e.toLowerCase()==="userpromptsubmit"&&t==="claude"}function ji(e){let t=e.toLowerCase();return t==="posttooluse"?!0:t==="posttoolusefailure"||t==="permissiondenied"?!1:null}function $i(e,t,n){let r=h(e,"session_id")||h(e,"conversation_id"),o=h(e,"prompt.id")||h(e,"prompt_id")||h(e,"generation_id")||h(e,"turn_id"),s=h(e,"hook_event_name")||h(e,"event"),i=h(e,"source"),a=lt(e,s,t,n);return{sessionId:r,turnId:o,runnerEvent:s,hookSource:i,runnerPlatform:a}}var Hf=["session_start","session_end","tool_invoked","skill_invoked"];function Ff(e){return Hf.includes(e)}function Bi(e,t){return e&&Ff(e)?e:Df(t.toLowerCase())}var jf={beforeshellexecution:"Shell",aftershellexecution:"Shell",beforereadfile:"Read",afterfileedit:"Write"};function Ki(e){return/^mcp__/i.test(e)||/^MCP:/i.test(e)}function Gi(e,t=""){let n=h(e,"tool_name")||h(e,"tool")||null,r=t.toLowerCase();n?r==="beforemcpexecution"&&!Ki(n)&&(n=`MCP:${n}`):n=jf[r]??null;let o=e.tool_input,i=(o&&typeof o=="object"?xe(o.skill)||xe(o.skill_name):"")||h(e,"skill_name")||null,a=n&&e.tool_name!==n&&e.tool!==n?{...e,tool_name:n}:e;i??=ei(a);let c=xi(a),l=Ni(a);return{toolName:n,skillName:i,ruleName:c,commandName:l}}var $f=/^[A-Za-z][A-Za-z0-9_.:-]{0,63}$/;function zi(e){for(let t of["subagent_type","agent_type"]){let n=h(e,t);if(n&&$f.test(n))return n}return null}function Vi(e){let t=ae(e,"duration_ms");if(typeof t=="number")return t;let n=ae(e,"duration");return typeof n=="number"?n:null}var Bf="error",Kf="interrupted",Gf="permission_denied",zf=/^[A-Za-z][A-Za-z0-9_.-]{0,63}$/;function dt(e){return zf.test(e)?e:null}function Vf(e){for(let t of["failure_type","error_type"]){let n=dt(h(e,t));if(n)return n}return null}function Wi(e,t){return ae(e,"is_interrupt")===!0?Kf:t.toLowerCase()==="permissiondenied"?Gf:Vf(e)??Bf}function Wf(e,t){let n=null;for(let r of t)r&&(e===r||e.startsWith(`${r}_`)||e.startsWith(`${r}-`))&&(n===null||r.length>n.length)&&(n=r);return n}function Jf(e,t){let n=null;for(let r of t)!r||!Ir(r,e)||(n===null||r.length>n.length)&&(n=r);return n}function Yf(e,t){let n=null,r=0;for(let s of t)if(s)for(let i of Cr(s)){let a=`${i}__`;e.length>a.length&&e.slice(0,a.length).toLowerCase()===a.toLowerCase()&&i.length>r&&(n={mcpServer:s,mcpTool:e.slice(a.length)},r=i.length)}if(n!==null)return n;let o=/^(.+?)__(.+)$/.exec(e);return!o?.[1]||!o[2]?{mcpServer:null,mcpTool:null}:{mcpServer:Jf(o[1],t)??o[1],mcpTool:o[2]}}function Xf(e,t){if(/^mcp__/i.test(e))return Yf(e.slice(5),t);if(/^MCP:/i.test(e)){let n=e.slice(4);if(!n)return{mcpServer:null,mcpTool:null};let r=n.indexOf(":");if(r>0)return{mcpServer:n.slice(0,r),mcpTool:n.slice(r+1)||null};let o=n.indexOf("__");return o>0?{mcpServer:n.slice(0,o),mcpTool:n.slice(o+2)||null}:{mcpServer:Wf(n,t),mcpTool:n}}return{mcpServer:null,mcpTool:null}}function Zf(e,t){let n=`${t}__`;return e.length>n.length&&e.toLowerCase().startsWith(n.toLowerCase())?e.slice(n.length):e}function Ji(e,t=[],n=""){let r=e?Xf(e,t):{mcpServer:null,mcpTool:null},o=dt(n.trim());if(!o)return r;let s=r.mcpTool;return!s&&e&&!Ki(e)&&(s=e),s&&(s=Zf(s,o)),{mcpServer:o,mcpTool:s}}var qi=3e4,rm="claims",om=!0,sm=100,im=new Set(["sessionstart","sessionend","stopfailure"]),am=["tool_name","tool","command","file_path","url"];function cm(e=Zi()){return xr(ce(e),rm)}function Qi(e){let t=e.split(`
25
- `,1)[0]??"";return Number(t.trim())}function ea(e){return qf("sha256").update(e).digest("hex").slice(0,32)}function um(e){let t=[];for(let n of am){let r=h(e,n).trim();r&&t.push(`${n}=${r}`)}return t.length===0?"":ea(t.join("\0"))}function lm(e){let t=e.sessionId.trim();if(!t)return;let n=e.runnerEvent.trim().toLowerCase(),r=e.turnId.trim(),o=e.toolUseId.trim(),s=e.subagentId?.trim()??"",i=e.callFingerprint?.trim()??"",a=!!(o||r||s),c=im.has(n);if(!a&&!c)return;let l=e.runnerPlatform.trim()||"unknown";return ea(`${l}|${t}|${n}|${r}|${o}|${i}|${s}`)}function dm(e){return e instanceof Error&&"code"in e&&e.code==="EEXIST"}function pm(e,t){return xr(e,t)}function fm(e,t=Date.now()){let n;try{n=tm(e)}catch{return}let r=0;for(let o of n){if(r>=sm)break;r+=1;let s=xr(e,o),i=Number.NaN;try{i=Qi(Yi(s,"utf8"))}catch{continue}let a=t-i;if(!(!Number.isFinite(a)||a<0||a<qi))try{Xi(s)}catch{}}}function mm(e,t,n=Date.now()){let r=pm(t,e);try{if(Qf(r)){let o=Number.NaN;try{o=Qi(Yi(r,"utf8"))}catch{}let s=n-o;if(Number.isFinite(s)&&s>=0&&s<qi)return!1;try{Xi(r)}catch{}}}catch{}try{em(t,{recursive:!0}),nm(r,`${n}
26
- `,{encoding:"utf8",flag:"wx"})}catch(o){if(dm(o))return!1;let s=o instanceof Error?o.message:String(o);return f(`WARN: event claim failed open: ${s}`),!0}return fm(t,n),!0}function gm(e,t,n){let r=h(e,"session_id")||h(e,"conversation_id"),o=h(e,"prompt.id")||h(e,"prompt_id")||h(e,"generation_id")||h(e,"turn_id"),s=h(e,"tool_use_id"),i=h(e,"subagent_id")||h(e,"agent_id"),a=lt(e,t,void 0,n),c=um(e);return{runnerPlatform:a,sessionId:r,runnerEvent:t,turnId:o,toolUseId:s,subagentId:i,callFingerprint:c}}function ta(e,t,n,r=Zi(),o=Date.now()){if(!om)return!0;let s=lm(gm(e,t,n));if(!s)return!0;let i=mm(s,cm(r),o);return!i&&I("EV_AI_HOOK_DEBUG")&&f(`DEBUG: duplicate hook event suppressed (claim ${s.slice(0,8)}\u2026)`),i}import{closeSync as _m,writeSync as hm}from"node:fs";var na="EV_AI_LAUNCHER_VERSION";var ra="EV_AI_HOOK_SOURCE",oa="EV_AI_HOOK_FALLBACK_REASON",sa="EV_AI_LAUNCHER_SCOPE",Pr="EV_AI_LAUNCHER_READY_FD";var ia=Buffer.from([1]);var Jy=1024*1024,Yy=4*1024*1024,Xy=64*1024,Zy=64*1024,qy=64*1024;var br=4096,Qy=4*1024*1024;function aa(e=process.env){let t=e[Pr];if(delete e[Pr],t===void 0)return;let n=Number.parseInt(t,10);if(!(!Number.isInteger(n)||n<3)){try{hm(n,ia)}catch{}try{_m(n)}catch{}}}function Tr(e=process.env){let t=e[na];if(t)return{launcherVersion:t,hookSource:e[ra]??"",fallbackReason:e[oa],launcherScope:e[sa]}}function ca(e,t){return(e?To(e):void 0)===t}import{realpathSync as tS}from"node:fs";import{homedir as nS}from"node:os";var O=Xe(Be(),1);import{existsSync as Sm,readFileSync as Em}from"node:fs";import{homedir as ua}from"node:os";import{join as ym}from"node:path";var Rm="cloud-cache.json",Cm=1440*60*1e3,Im=900*1e3;function Am(e=ua()){return ym(ce(e),Rm)}function km(e){if(!Sm(e))return;let t=$(Em(e,"utf8"),{});if(!(typeof t.context!="string"||typeof t.probed_at!="number"||t.result!==null&&t.result!==void 0&&typeof t.result!="object"))return{context:t.context,probed_at:t.probed_at,result:t.result??null}}function Om(e,t){try{te(e,`${JSON.stringify(t)}
27
- `)}catch(n){let r=n instanceof Error?n.message:String(n);f(`WARN: cloud cache write failed open: ${r}`)}}function xm(e,t,n){if(!e||e.context!==t)return!1;let r=e.result===null?Im:Cm;return n-e.probed_at<r}async function Pm(e){let t=await fetch("http://169.254.169.254/latest/api/token",{method:"PUT",headers:{"X-aws-ec2-metadata-token-ttl-seconds":"60"},signal:AbortSignal.timeout(e)}).catch(()=>{});if(!t?.ok)return;let n=(await t.text()).trim();if(!n)return;let r={"X-aws-ec2-metadata-token":n},[o,s]=await Promise.all([fetch("http://169.254.169.254/latest/meta-data/placement/region",{headers:r,signal:AbortSignal.timeout(e)}).catch(()=>{}),fetch("http://169.254.169.254/latest/meta-data/instance-id",{headers:r,signal:AbortSignal.timeout(e)}).catch(()=>{})]);if(!o?.ok&&!s?.ok)return;let i=o?.ok?(await o.text()).trim():"",a=s?.ok?(await s.text()).trim():"";if(!(!i&&!a))return{provider:"aws",region:i,instance_id:a}}async function bm(e){let t=await fetch("http://metadata.google.internal/computeMetadata/v1/instance/?recursive=true",{headers:{"Metadata-Flavor":"Google"},signal:AbortSignal.timeout(e)}).catch(()=>{});if(!t?.ok)return;let n=await t.json(),r=typeof n.zone=="string"?n.zone.split("/").pop()??"":"",o=n.id===void 0?"":String(n.id);if(!(!r&&!o))return{provider:"gcp",region:r,instance_id:o}}async function Tm(e){let t=await fetch("http://169.254.169.254/metadata/instance?api-version=2021-02-01",{headers:{Metadata:"true"},signal:AbortSignal.timeout(e)}).catch(()=>{});if(!t?.ok)return;let n=await t.json(),r=n.compute?.location??"",o=n.compute?.vmId??"";if(!(!r&&!o))return{provider:"azure",region:r,instance_id:o}}async function Nm(e){let t=await Promise.allSettled([Pm(e),bm(e),Tm(e)]);for(let n of t)if(n.status==="fulfilled"&&n.value)return n.value;return null}async function Nr(e,t){if(e==="interactive")return null;let n=t?.home??ua(),r=t?.timeoutMs??1e3,o=t?.nowMs??Date.now(),s=Am(n),i=km(s);if(xm(i,e,o))return i.result;let a=await Nm(r);return Om(s,{context:e,probed_at:o,result:a}),a}var vm=["CI","GITHUB_ACTIONS","GITLAB_CI","CIRCLECI","BUILDKITE","TF_BUILD","JENKINS_URL","JENKINS_HOME","CODEBUILD_BUILD_ID","DRONE","DRONE_BUILD_NUMBER","TEAMCITY_VERSION","TRAVIS","APPVEYOR","BITBUCKET_BUILD_NUMBER","KUBERNETES_SERVICE_HOST","REMOTE_CONTAINERS","DEVCONTAINER","GITHUB_REPOSITORY","GITHUB_REPOSITORY_ID","GITHUB_REF","GITHUB_SHA","GITHUB_RUN_ID","GITHUB_WORKFLOW","GITHUB_ACTOR","GITHUB_TRIGGERING_ACTOR","GITHUB_ACTOR_ID","GITHUB_USER","GITLAB_USER_LOGIN","GITLAB_USER_NAME","GITLAB_USER_EMAIL","BUILD_REQUESTEDFOR","BUILD_REQUESTEDFOREMAIL","BUILD_REQUESTEDFORID","BUILDKITE_BUILD_CREATOR","BUILDKITE_BUILD_CREATOR_EMAIL","BUILD_USER","BUILD_USER_ID","BUILD_USER_EMAIL","CHANGE_AUTHOR","CHANGE_AUTHOR_EMAIL","CIRCLE_USERNAME","CODEBUILD_INITIATOR","DRONE_COMMIT_AUTHOR","DRONE_COMMIT_AUTHOR_NAME","DRONE_COMMIT_AUTHOR_EMAIL","EV_AI_HOOK_OPERATOR_NAME","EV_AI_HOOK_OPERATOR_EMAIL","EV_AI_HOOK_OPERATOR_LOGIN","GIT_AUTHOR_NAME","GIT_AUTHOR_EMAIL","GIT_COMMITTER_NAME","GIT_COMMITTER_EMAIL","EMAIL","RUNNER_OS","RUNNER_ARCH","NODE_ENV","TERM_PROGRAM","CLAUDE_CODE_REMOTE","CLAUDE_CODE_REMOTE_SESSION_ID","CURSOR_AGENT","CURSOR_VERSION","CURSOR_CODE_REMOTE","CURSOR_USER_EMAIL","CODESPACES","CODESPACE_NAME","ANTHROPIC_BASE_URL","OPENAI_BASE_URL","OPENAI_API_BASE","AZURE_OPENAI_ENDPOINT","GOOGLE_GEMINI_BASE_URL","GEMINI_API_BASE","CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX"],wm=["CURSOR_PROJECT_DIR"],Mm=new Set(["key","api-key","api_key","apikey","token","sig","signature","access_token","password","pwd","secret","client_secret"]);function Lm(e){try{let t=new URL(e);(t.username||t.password)&&(t.username="",t.password="");for(let[n]of t.searchParams)Mm.has(n.toLowerCase())&&t.searchParams.set(n,"[redacted]");return t.toString()}catch{return e}}function vr(e=process.env){let t=vm.map(r=>Object.prototype.hasOwnProperty.call(e,r)?{name:r,present:!0,value:Lm(e[r]??"")}:{name:r,present:!1}),n=wm.map(r=>({name:r,present:Object.prototype.hasOwnProperty.call(e,r)&&!!e[r]}));return[...t,...n]}import{homedir as dg}from"node:os";import{homedir as la}from"node:os";import{join as Um}from"node:path";function Dm(e=la()){return Um(e,".claude.json")}function qt(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}function da(e=la()){let n=F(Dm(e),{}).oauthAccount;if(!n||typeof n!="object")return null;let r=qt(n.emailAddress),o=qt(n.fullName)??qt(n.displayName),s=qt(n.accountUuid),i=r??s;return!i||z(o,r)?null:{git_user_name:null,git_user_email:null,platform_login:i,identity_source:"claude_oauth"}}import{homedir as ma}from"node:os";import{join as pa}from"node:path";var Hm="https://api.openai.com/auth";function Ke(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}function ga(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function Fm(e){let t=e.split(".");if(t.length!==3||t.some(r=>r.length===0))return null;let n=t[1];if(!n)return null;try{let r=JSON.parse(Buffer.from(n,"base64url").toString("utf8"));return ga(r)}catch{return null}}function fa(e,t,n){return Ke(e[n])??Ke(t?.[n])}function jm(e=process.env,t=ma()){let n=Ke(e.CODEX_HOME)??pa(t,".codex");return pa(n,"auth.json")}function _a(e=process.env,t=ma()){let n=F(jm(e,t),{}),r=Ke(n.auth_mode);if(r!==null&&r!=="chatgpt"||r===null&&Ke(n.OPENAI_API_KEY))return null;let o=Ke(n.tokens?.id_token);if(!o)return null;let s=Fm(o);if(!s)return null;let i=ga(s[Hm]),a=fa(s,i,"name"),c=fa(s,i,"email");return!c||z(a,c)?null:{git_user_name:null,git_user_email:null,platform_login:c,identity_source:"codex_oauth"}}import{homedir as tn}from"node:os";import{join as fe}from"node:path";import{join as $m}from"node:path";var Bm="cursor-ide-identity.json",Km=et;function Sa(e){return $m(ce(e),Bm)}function ha(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}function Ea(e){let t=F(e,{}),n=t.read_at_ms,r=t.db_path;if(!(typeof n!="number"||!Number.isFinite(n)||typeof r!="string"))return{read_at_ms:n,db_path:r,email:ha(t.email),auth_id:ha(t.auth_id)}}function ya(e,t,n){if(e?.db_path!==t)return!1;let r=n-e.read_at_ms;return r>=0&&r<Km}function Ra(e,t){try{te(e,`${JSON.stringify(t)}
28
- `)}catch(n){let r=n instanceof Error?n.message:String(n);f(`WARN: cursor IDE identity cache write failed open: ${r}`)}}import{execFileSync as Gm}from"node:child_process";import{existsSync as zm}from"node:fs";import{createRequire as Vm}from"node:module";import{pathToFileURL as Wm}from"node:url";var Ia=Vm(import.meta.url),Qt=`
23
+ npx ${Lt} install`)}function Hs(e){return typeof e!="string"?!1:e.includes("@ev-ai/agent-hook")||e.includes("agent-hook/dist/hook")||e.includes(".ev-ai/agent-hook")||e.includes(Z)||/(?:^|[\s/"'])ev-ai-agent-hook(?:$|[\s"'])/.test(e)}function sr(e,t){return`${e.replace(/\s+--runner(?:=|\s+)\S+/g,"").trimEnd()} --runner ${t}`}function _e(e,t){rr(or(e),{recursive:!0}),Kl(e,`${JSON.stringify(t,null,2)}
24
+ `,"utf8")}function ce(e){if(ge(e))try{return JSON.parse($l(e,"utf8"))}catch(t){throw t instanceof SyntaxError?new Error(`Invalid JSON in ${e} \u2014 fix or remove the file`,{cause:t}):t}}function ld(e,t){let n=Is(t.collectorUrl),r={...e,schema_version:e?.schema_version??n.schema_version};return t.collectorUrl!==void 0?r.collector_url=t.collectorUrl:r.collector_url=e?.collector_url??n.collector_url,delete r.repo_ingest_token,delete r.installation_id,r.mcp_servers??=n.mcp_servers,r}function dd(e){return(e.schema_version??fe)===fe&&e.collector_url===void 0&&(e.mcp_servers?.length??0)===0&&e.platform_agent_id===void 0&&e.capture_hook_input===void 0&&e.debug===void 0&&e.repo_ingest_token===void 0}function Fs(e,t){let n=x(e,xt),r=ce(n),o=ld(r,t);return t.collectorUrl!==void 0||ge(n)||!dd(o)?(_e(n,o),{manifestPath:n,wrote:!0}):{manifestPath:void 0,wrote:!1}}function nr(e){if(e===null||typeof e!="object")return!1;let t=e,n=String(t.CLAUDE_CODE_ENABLE_TELEMETRY??"").toLowerCase();return n==="1"||n==="true"?!0:Object.keys(t).some(r=>r.startsWith("OTEL_"))}function pd(e){if(nr(process.env))return!0;let t=ae();return[...jn(),x(t,".claude","settings.json"),x(t,".claude","remote-settings.json"),x(e,".claude","settings.json"),x(e,".claude","settings.local.json")].some(r=>{try{let o=ce(r);return o?nr(o.env):!1}catch{return!1}})}function fd(e){try{let t=ce(x(e,".claude","settings.json"));return t?nr(t.env):!1}catch{return!1}}function js(e){return Array.isArray(e)?e:[]}function zt(e){let t=[],n=r=>!!r&&typeof r=="object"&&Hs(r.command);for(let r of js(e)){if(!r||typeof r!="object"){t.push(r);continue}let o=Array.isArray(r.hooks)?r.hooks:[],s=o.filter(i=>!n(i));if(!(s.length===0&&o.some(n))){if(s.length!==o.length){t.push({...r,hooks:s});continue}t.push(r)}}return t}function $s(e,t){return[...zt(e),...t]}function ir(e){return Array.isArray(e)?e.filter(t=>!t||typeof t!="object"?!0:!Hs(t.command)):[]}function md(e,t){return[...ir(e),{command:t}]}function gd(e){return typeof e=="string"?[e]:e}function _d(e){let t=(n="")=>({hooks:gd(e).map(r=>({type:"command",command:Bt(n,r)}))});return{SessionStart:[t("SessionStart")],UserPromptExpansion:[t()],UserPromptSubmit:[t()],PreToolUse:[t()],PostToolUse:[t()],PostToolUseFailure:[t()],PermissionDenied:[t()],Stop:[t()],StopFailure:[t()],SessionEnd:[t()],SubagentStart:[t()],SubagentStop:[t()]}}function hd(e){let t=typeof e=="string"?{command:e}:e,n=(r="")=>({hooks:[{type:"command",command:Bt(r,t.command),...t.commandWindows===void 0?{}:{commandWindows:Bt(r,t.commandWindows)},statusMessage:Fo}]});return{SessionStart:[n("SessionStart")],UserPromptSubmit:[n()],PreToolUse:[n()],PostToolUse:[n()],Stop:[n()]}}var Sd=["sessionStart","beforeSubmitPrompt","preToolUse","postToolUse","postToolUseFailure","beforeShellExecution","beforeReadFile","beforeMCPExecution","subagentStart","subagentStop","stop"],Ed=["afterShellExecution","afterFileEdit"];function yd(e,t=Ed){let n={...e};for(let r of t){if(!(r in n))continue;let o=ir(n[r]);o.length===0?delete n[r]:n[r]=o}return n}function Rd(e,t,n={}){let r=x(e,".claude/settings.json"),o=sr(t,"claude"),s=ce(r)??{};if(pd(e)&&!n.force){if(s.hooks&&typeof s.hooks=="object"){let u={...s.hooks};for(let p of Object.keys(u))u[p]=zt(u[p]),js(u[p]).length===0&&delete u[p];Object.keys(u).length===0?delete s.hooks:s.hooks=u,_e(r,s)}return!1}let a=s.hooks&&typeof s.hooks=="object"?s.hooks:{},c=_d(o),l={...a};for(let[u,p]of Object.entries(c))l[u]=$s(a[u],p);return s.hooks=l,_e(r,s),!0}function Cd(e,t){let n=x(e,".cursor/hooks.json"),r=sr(t,"cursor"),o=ce(n)??{},s=o.hooks&&typeof o.hooks=="object"?o.hooks:{},i=yd({...s});for(let a of Sd)i[a]=md(i[a],Bt(a,r));_e(n,{...o,version:typeof o.version=="number"?o.version:1,hooks:i})}function Id(e,t){let n=x(e,".codex/hooks.json"),r=sr(t,"codex"),o=ce(n)??{},s=o.hooks&&typeof o.hooks=="object"?o.hooks:{},i=hd(r),a={...s};for(let[c,l]of Object.entries(i))a[c]=$s(s[c],l);_e(n,{...o,hooks:a})}function Ad(e){let t=x(e,".claude/settings.json"),n=ce(t);if(!n?.hooks||typeof n.hooks!="object")return;let r={...n.hooks},o=!1;for(let s of Object.keys(r)){let i=r[s],a=zt(i);JSON.stringify(i)!==JSON.stringify(a)&&(o=!0),a.length===0?delete r[s]:r[s]=a}o&&(Object.keys(r).length===0?delete n.hooks:n.hooks=r,_e(t,n),f(`Removed ev-ai hooks from ${t}`))}function kd(e){let t=x(e,".cursor/hooks.json"),n=ce(t);if(!n?.hooks||typeof n.hooks!="object")return;let r={...n.hooks},o=!1,s=0;for(let i of Object.keys(r)){let a=r[i],c=ir(a);JSON.stringify(a)!==JSON.stringify(c)&&(o=!0),c.length===0?delete r[i]:(r[i]=c,s+=c.length)}if(o){if(s===0&&Object.keys(r).length===0&&Object.keys(n).filter(a=>a!=="hooks"&&a!=="version").length===0){Kt(t,{force:!0}),f(`Removed ${t}`);return}_e(t,{...n,hooks:r}),f(`Removed ev-ai hooks from ${t}`)}}function Od(e){let t=x(e,".codex/hooks.json"),n=ce(t);if(!n?.hooks||typeof n.hooks!="object")return;let r={...n.hooks},o=!1,s=0;for(let i of Object.keys(r)){let a=r[i],c=zt(a);JSON.stringify(a)!==JSON.stringify(c)&&(o=!0),c.length===0?delete r[i]:(r[i]=c,s+=c.length)}if(o){if(s===0&&Object.keys(r).length===0&&Object.keys(n).filter(a=>a!=="hooks").length===0){Kt(t,{force:!0}),f(`Removed ${t}`);return}_e(t,{...n,hooks:r}),f(`Removed ev-ai hooks from ${t}`)}}function ar(e=process.platform,t=process.arch,n={}){if(e==="win32")throw new Error("Windows install is not supported yet. Use macOS/Linux, or wait for phase-2 native commands.");(n.requireBinaryArch??!0)&&As(e,t)}async function Bs(e={}){let t=Yl(e);e.collectorUrl=t;let n=e.skipClaude===!0,r=e.skipCursor===!0,o=e.skipCodex===!0;if(n&&r&&o)throw new Error("at least one runner must be wired; refuse --no-claude --no-cursor --no-codex together");let s=e.delivery??vs();ar(process.platform,process.arch,{requireBinaryArch:s==="binary"});let i=e.cwd??process.cwd(),a=await oe(i),{command:c,hookPath:l,strategy:u}=ud(a,ae(),s),{installationId:p,storePath:m}=await $t(a,{overrideId:e.installationId}),{manifestPath:d,wrote:_}=Fs(a,e),h=[];return n?f("Skipped Claude hook \u2014 --no-claude"):Rd(a,c,{force:e.force})?(h.push("Claude"),e.force&&fd(a)&&f("Forced Claude hook despite project native OTEL \u2014 expect duplicate session/tool events")):f("Skipped Claude hook \u2014 native OTEL telemetry already enabled (avoids duplicate events); pass --force to wire anyway"),r?f("Skipped Cursor hook \u2014 --no-cursor"):(Cd(a,c),h.push("Cursor")),o?f("Skipped Codex hook \u2014 --no-codex"):(Id(a,c),h.push("Codex")),f(`Installed hook (${u}) at ${l}`),f(`Installation identity ${p} at ${m}`),_&&d?f(`Shared manifest written to ${d}`):f("Using package default collector config (no shared manifest file needed)"),f(h.length>0?`Wired ${h.join(", ")} hooks in ${a} (commands include --runner)`:`No runner hooks wired in ${a} (Claude skipped by OTEL; Cursor/Codex excluded via flags)`),u==="npx"?f("Hook commands use npx and may be committed; teammates need Node on PATH only (no install step, no env vars when collector_url is in the shared manifest)."):u==="project_binary"?f("Hook commands are git-root-relative and may be committed; each collaborator runs install once to populate .ev-ai/agent-hook/ (gitignored)."):u==="dev_mjs"&&f("Hook commands use node + monorepo packages/agent-hook/dist/hook.mjs (local delivery; rebuild with yarn workspace @ev-ai/agent-hook build)."),_&&d&&e.collectorUrl&&f("Shared manifest includes collector_url \u2014 commit it with hook configs so teammates post without env vars."),{gitRoot:a,hookPath:l,manifestPath:d,installationStorePath:m,strategy:u}}async function Ks(e=process.cwd()){ar(process.platform,process.arch,{requireBinaryArch:!0});let t=await oe(e),{projectPath:n,globalPath:r}=sd(t);f(`Refreshed ${r}`),f(`Refreshed ${n}`),f("Hook configs and shared manifest left unchanged")}async function Gs(e={}){let t=Jl(e);e.collectorUrl=t,ar(process.platform,process.arch,{requireBinaryArch:!1});let n=e.cwd??process.cwd(),r=await oe(n),{manifestPath:o,wrote:s}=Fs(r,e);if(t!==void 0&&(!o||!s))throw new Error("configure failed to write shared collector manifest");return s&&o?f(`Wrote ${o}`):t===void 0&&f("No --url given and no shared manifest yet \u2014 pass --url <\u2026/{orgToken}/hook> to write collector destination."),f("Manifest only \u2014 enable ev-ai marketplace plugins. Do not also run file-wiring install for the same events."),{gitRoot:r,manifestPath:o}}function zs(e){for(let t of[()=>Ad(e),()=>kd(e),()=>Od(e)])try{t()}catch(n){let r=n instanceof Error?n.message:String(n);f(`WARN: strip skipped a hook file: ${r}`)}}async function Vs(e=process.cwd()){let t=await oe(e);return zs(t),f("Stripped ev-ai file-wired hooks; shared collector manifest left in place."),f("Next: enable ev-ai marketplace plugins, then restart runners."),{gitRoot:t}}async function Ws(e=process.cwd()){let t=await oe(e);zs(t);for(let n of bt){let r=x(t,n);if(ge(r))try{Kt(r,{force:!0}),f(`Removed ${r}`)}catch(o){let s=o instanceof Error?o.message:String(o);f(`WARN: uninstall could not remove ${r}: ${s}`)}}}import{existsSync as Sm,mkdirSync as Em,readdirSync as ym,readFileSync as Rm,unlinkSync as ia,writeFileSync as Cm}from"node:fs";import{homedir as aa}from"node:os";import{join as xr}from"node:path";import{open as Js,mkdir as Pd,readFile as xd,readdir as bd,rename as Td,stat as Nd,rmdir as vd,unlink as wd,utimes as Md}from"node:fs/promises";var Vt=new WeakMap;function Xs(e){if(e&&typeof e=="object"&&"code"in e)return e}function cr(e){return Xs(e)?.code==="ENOENT"}function Zs(e){return Xs(e)?.code==="EEXIST"}async function qs(e,t){try{return await e.readdir(t)}catch(n){if(cr(n))return[];throw n}}function Qs(){return{async open(e,t){let n=await Js(e,t),r={path:e};return Vt.set(r,n),r},async write(e,t){let n=Ys(e),r=typeof t=="string"?Buffer.from(t,"utf8"):t;await n.write(r)},async fsync(e){await Ys(e).sync()},async close(e){let t=Vt.get(e);Vt.delete(e),t&&await t.close()},rename:Td,async readdir(e){return bd(e)},readFile:xd,async stat(e){let t=await Nd(e);return{mtimeMs:t.mtimeMs,size:t.size,isDirectory:()=>t.isDirectory()}},async mkdir(e,t){await Pd(e,t)},unlink:wd,rmdir:vd,utimes:Md,async fsyncDir(e){if(process.platform==="win32")return;let t=await Js(e,"r");try{await t.sync()}finally{await t.close()}}}}function Ys(e){let t=Vt.get(e);if(!t)throw new Error("closed");return t}import{existsSync as zd}from"node:fs";import{existsSync as Ld}from"node:fs";import{homedir as ti}from"node:os";import{join as Ud}from"node:path";function ni(e){return e.settings.filter(t=>t.toLowerCase().endsWith(".json"))}var Dd={claude:{shared:{skillRoots:[".claude/skills"],dirs:[{dir:".claude/agents",kind:"SUBAGENT",extensions:[".md"]},{dir:".claude/commands",kind:"COMMAND",extensions:[".md"]},{dir:".claude/rules",kind:"RULE",extensions:[".mdc",".md"]}],memory:[["CLAUDE.md"],["CLAUDE.local.md"],[".claude/CLAUDE.md"]],settings:[".claude/settings.json",".claude/settings.local.json",".claude/hooks.json"]},homeOnly:{mcpJson:[".claude.json"],plugins:"claude",managed:"claude"},projectOnly:{mcpJson:[".mcp.json","mcp.json"]}},cursor:{shared:{skillRoots:[".cursor/skills"],dirs:[{dir:".cursor/agents",kind:"SUBAGENT",extensions:[".md"]},{dir:".cursor/commands",kind:"COMMAND",extensions:[".md"]},{dir:".cursor/rules",kind:"RULE",extensions:[".mdc",".md"]}],memory:[["AGENTS.md"]],settings:[".cursor/hooks.json",".cursor/cli-config.json"],mcpJson:[".cursor/mcp.json"]},homeOnly:{skillRoots:[".cursor/skills-cursor"],memory:[[".cursor/AGENTS.md"]],plugins:"cursor",managed:"cursor"},projectOnly:{skillRoots:[".agents/skills"]}},codex:{shared:{skillRoots:[".agents/skills",".codex/skills"],dirs:[{dir:".codex/agents",kind:"SUBAGENT",extensions:[".toml",".md"]},{dir:".codex/prompts",kind:"COMMAND",extensions:[".md"]},{dir:".codex/rules",kind:"RULE",extensions:[".md",".rules"]}],memory:[["AGENTS.override.md","AGENTS.md"]],settings:[".codex/hooks.json",".codex/config.toml"],mcpToml:[".codex/config.toml"]},homeOnly:{memory:[[".codex/AGENTS.override.md",".codex/AGENTS.md"]],managed:"codex"}}};function ei(e,t){if(!(!e&&!t))return[...e??[],...t??[]]}function Hd(e,t={}){let{shared:n}=e;return{skillRoots:[...n.skillRoots,...t.skillRoots??[]],dirs:n.dirs,memory:[...n.memory,...t.memory??[]],settings:[...n.settings,...t.settings??[]],mcpJson:ei(n.mcpJson,t.mcpJson),mcpToml:ei(n.mcpToml,t.mcpToml),plugins:t.plugins??n.plugins,managed:t.managed??n.managed}}function ri(e){return Object.fromEntries(Object.entries(Dd).map(([t,n])=>[t,Hd(n,n[e])]))}var Fe=ri("homeOnly"),Se=ri("projectOnly");function Fd(e){return[...e.skillRoots,...e.dirs.map(t=>t.dir),...e.memory.flat(),...e.settings,...e.mcpJson??[],...e.mcpToml??[]]}function jd(e,t){return Fd(e).some(n=>Ld(Ud(t,n)))}function oi(e,t){for(let n of e)if(jd(n,t))return!0;return!1}function he(e){return[...new Set(e)]}function Ee(e){let t=[],n=[],r=[],o=[],s=[],i=[],a=[];for(let c of e){t.push(...c.skillRoots);for(let l of c.dirs)l.kind==="SUBAGENT"?n.push(l.dir):l.kind==="COMMAND"?r.push(l.dir):o.push(l.dir);s.push(...c.memory.flat()),i.push(...c.settings),a.push(...c.mcpJson??[],...c.mcpToml??[])}return{skills:he(t),subagents:he(n),commands:he(r),rules:he(o),memory:he(s),settings:he(i),mcp:he(a)}}function $d(e,t=ti(),n=process.platform){let r=[];for(let o of e)o.managed&&r.push(...Dt(o.managed,n,t));return he(r)}var ye=Ee(Object.values(Fe));function si(e=ti(),t=process.platform){return $d(Object.values(Fe),e,t)}import{existsSync as Bd}from"node:fs";import{resolve as ur}from"node:path";function z(e){return ur(e).replaceAll("\\","/").replace(/\/$/,"")}function xe(e,t){let n=new Set(t),r=[];for(let o of e)n.delete(o)&&r.push(o);for(let o of[...n].sort())r.push(o);return r}function Wt(e,t){if(!e)return t;let n=`${e}/`,r=[],o=[];for(let s of t)s===e||s.startsWith(n)?r.push(s):o.push(s);return r.length===0?t:[...r,...o]}var Kd=/^(?!\.)[A-Za-z0-9._-]+(?:\/[A-Za-z0-9._-]+)*$/;function st(e){let t=e.replaceAll("\\","/").replace(/^\.\//,"");return!t||t.startsWith("/")||/^[A-Za-z]:\//.test(t)||t.split("/").includes("..")||!Kd.test(t)?null:t}function je(e,t){let n=new Set,r=[];for(let o of[e,t]){if(!o)continue;let s=z(o);n.has(s)||(n.add(s),r.push(s))}return r}function Gd(e,t){let n=`${e}/`;return t===e||t.startsWith(n)}function Q(e,t,n,r=Bd){for(let o of e)for(let s of t){let i=z(ur(o,s)),a=ur(o,s,n).replaceAll("\\","/");if(Gd(i,a)&&r(a))return a}return null}var ai=/(?:^|\/|[\s"'=(])(?:\.cursor\/|\.claude\/|\.agents\/)skills(?:-cursor)?\/([^/]+)\/SKILL\.md/i,ci=/(?:^|\/|[\s"'=(])\.codex\/commands\/([^/]+)\.md\b/i,Vd=/(?:^|\s)\/([a-z][a-z0-9-]{1,63}(?:\/[a-z][a-z0-9-]{1,63}){0,5})\b/gi,ii=new Set(["applications","app","bin","boot","data","dev","etc","home","lib","media","mnt","node_modules","opt","pkg","private","proc","projects","repos","run","sbin","src","srv","sys","tmp","usr","users","var","volumes","workspace","workspaces"]),Wd=/^[a-z][a-z0-9-]{1,63}$/,Jd=[".cursor/skills",".claude/skills",".agents/skills"],Yd=[".cursor/skills",".cursor/skills-cursor",".claude/skills",".agents/skills"],Xd=xe(Jd,Ee(Object.values(Se)).skills),Zd=xe(Yd,Ee(Object.values(Fe)).skills),qd=new Set(["read","read_file","view"]),Qd=new Set(["bash","shell","zsh"]);function lr(e){let t=e.replace(/\\/g,"/");return ai.exec(t)?.[1]??null}function ep(e){let t=e.replace(/\\/g,"/"),r=ci.exec(t)?.[1];return r?r.toLowerCase():null}function tp(e){return lr(e)??ep(e)}function np(e){for(let t of["path","file_path","target_file"]){let n=e[t];if(typeof n=="string"&&n.length>0)return n}return null}function Jt(e){return typeof e=="string"?Jt(G(e,null)):!e||typeof e!="object"?null:np(e)}function ui(e){if(typeof e=="string")return ui(G(e,null));if(!e||typeof e!="object")return null;let t=e.command;return typeof t=="string"&&t.length>0?t:null}function dr(e){let t=ui(e.tool_input);if(t)return t;let n=Oe(e.command);return n.length>0?n:null}function rp(e){let t=e.replace(/\\/g,"/"),n=ai.exec(t);if(n?.[1])return n[1];let o=ci.exec(t)?.[1];return o?o.toLowerCase():null}function op(e){return typeof e.tool_name=="string"?e.tool_name:typeof e.tool=="string"?e.tool:""}function pr(e){let t=Jt(e.tool_input)??Oe(e.file_path);return t.length>0?t:null}function it(e,t,n){let r=op(e).toLowerCase();if(qd.has(r)){let o=pr(e);return o?t(o):null}if(Qd.has(r)){let o=dr(e);return o?n(o):null}return null}function li(e){return it(e,tp,rp)}function sp(e){let t=new Set,n=[];for(let r of e.matchAll(Vd)){let o=r[1]?.toLowerCase();!o||t.has(o)||ip(o)||(t.add(o),n.push(o))}return n}function ip(e){let t=e.split("/")[0];return ii.has(e)||t!==void 0&&ii.has(t)}function di(e){let t=e.skillId.toLowerCase();if(!Wd.test(t))return null;let n=e.exists??zd,r=`${t}/SKILL.md`,o=Q(je(e.launchCwd,e.gitRoot),Xd,r,n);return o!==null?o:e.home?Q([z(e.home)],Zd,r,n):null}function ap(e){return Oe(e.prompt)}function pi(e){let t=R(e,"command_name");if(t){let r=R(e,"expansion_type");if(r&&r!=="slash_command")return[];let o=t.replace(/^\//,"").toLowerCase();return o?[o]:[]}let n=ap(e);return n?sp(n):[]}var Er=qe(Ke(),1);import{existsSync as Bf}from"node:fs";var Te={claude:".claude",cursor:".cursor",codex:".codex",opencode:".opencode"};function ct(e){let n=e.replace(/^\/+|\/+$/g,"").toLowerCase().split("/").filter(Boolean);return n.length<2?"":n.join("/")}function $f(e){if(!e)return"";let t=tt(e).replace(/\.git$/i,""),n=t.match(/^git@[^:]+:(.+)$/);if(n?.[1])return ct(n[1]);let r=t.match(/^ssh:\/\/[^/]+\/(.+)$/i);if(r?.[1])return ct(r[1]);t=t.replace(/^https:\/\//i,""),t=t.replace(/^http:\/\//i,""),t=t.replace(/^ssh:\/\//i,"");let o=t.match(/^[^/]+\/(.+)$/);return o?.[1]?ct(o[1]):ct(t)}async function en(e=process.cwd()){let t=await J("git",["rev-parse","--is-inside-work-tree"],2e3,{cwd:e});if(!t.ok||t.stdout!=="true")return null;let[n,r,o,s]=await Promise.all([J("git",["remote","get-url","origin"],2e3,{cwd:e}),J("git",["branch","--show-current"],2e3,{cwd:e}),J("git",["rev-parse","HEAD"],2e3,{cwd:e}),J("git",["status","--porcelain"],2e3,{cwd:e})]);return{remote:n.ok?tt(n.stdout):null,branch:r.ok?r.stdout:null,head:o.ok?o.stdout:null,dirty:s.ok?s.stdout.length>0:null}}async function Li(e,t,n,r=process.cwd(),o,s,i){if(t)return t;let a=Te[n];if(!a)return"";let c=ls(n,e.scope_path,i);if(s){let _=Ss(s,c);if(_)return _}let l=o??await en(r),u=l?.remote?$f(l.remote):"";if(u||(u=ct(process.env.GITHUB_REPOSITORY??"")),!u)return"";let p=e.scope_path??"",m=p?`${p}/`:"",d=`${u}:${m}${a}`;return s&&Es(s,c,d),d}var Kf=[".cursor/rules",".claude/rules",".codex/rules"],Gf=Ee(Object.values(Se)).rules;function zf(e){return xe(Wt(e?Te[e]:void 0,Kf),Gf)}var Vf=/(?:^|\/|[\s"'=(])((?:\.cursor|\.claude|\.codex)\/rules\/[^'"\s]+?\.(?:mdc|md|rules))\b/i;function Ui(e){let t=st(e.relativePath);if(!t)return null;let n=e.exists??Bf,r=je(e.launchCwd,e.gitRoot),o=zf(e.runnerPlatform),s=Q(r,o,t,n);if(s!==null)return s;if(!t.includes("/")){let i=Q(r,["."],t,n);if(i!==null)return i}return e.home?Q([z(e.home)],o,t,n):null}function Wf(e){let t=e.replace(/\\/g,"/"),r=Vf.exec(t)?.[1];return r?(0,Er.nativeKeyForRulePath)(r):null}function Di(e){return it(e,Er.nativeKeyForRulePath,Wf)}function Hi(e){return e.replace(/\.(mdc|md|rules)$/i,"")}function Fi(e){let t=e.attachments;if(!Array.isArray(t))return[];let n=new Set,r=[];for(let o of t){if(!o||typeof o!="object"||Array.isArray(o))continue;let s=o;if(s.type!=="rule")continue;let i=typeof s.file_path=="string"?s.file_path:"",a=st(i);!a||n.has(a)||(n.add(a),r.push(a))}return r}var yr=qe(Ke(),1);import{existsSync as Jf}from"node:fs";var Yf=[".cursor/commands",".claude/commands",".codex/prompts"],Xf=Ee(Object.values(Se)).commands;function Zf(e){return xe(Wt(e?Te[e]:void 0,Yf),Xf)}var qf=/(?:^|\/|[\s"'=(])((?:\.cursor|\.claude|\.codex)\/(?:commands|prompts)\/[^'"\s]+?\.(?:md|mdc))\b/i;function ji(e){let t=st(e.commandId);if(!t)return null;let n=e.exists??Jf,r=`${t}.md`,o=Zf(e.runnerPlatform),s=Q(je(e.launchCwd,e.gitRoot),o,r,n);return s!==null?s:e.home?Q([z(e.home)],o,r,n):null}function Qf(e){let t=e.replace(/\\/g,"/"),r=qf.exec(t)?.[1];return r?(0,yr.nativeKeyForCommandPath)(r):null}function $i(e){return it(e,yr.nativeKeyForCommandPath,Qf)}import{existsSync as Ki}from"node:fs";import{homedir as Gi}from"node:os";import{join as ut,resolve as Rr,sep as Bi}from"node:path";function Cr(e){return[...new Set([e,e.replaceAll(/[^A-Za-z0-9_-]/g,"_"),e.replaceAll(/[^A-Za-z0-9_-]+/g,"_")])]}function Ir(e,t){let n=t.toLowerCase();return Cr(e).some(r=>r.toLowerCase()===n)}function tn(e,t,n){if(!Ki(e))return;let r=U(e,{});for(let[o,s]of Object.entries(r.mcpServers??{}))n.set(o,{declared:{name:o,...t},config:s})}function em(e,t,n){if(!Ki(e))return;let r=U(e,{}),o=Rr(t),s=null;for(let a of Object.keys(r.projects??{})){let c=Rr(a);(o===c||o.startsWith(c.endsWith(Bi)?c:c+Bi))&&(s===null||c.length>Rr(s).length)&&(s=a)}if(s===null)return;let i=r.projects?.[s]?.mcpServers??{};for(let[a,c]of Object.entries(i))n.set(a,{declared:{name:a,source:"claude_json_project",sourcePath:".claude.json",scope:"user"},config:c})}function zi(e,t,n,r){let o=new Map;for(let s of e.mcp_servers??[])s.name&&o.set(s.name,{declared:{name:s.name,source:"manifest"}});return n==="claude"?(tn(ut(r,".claude.json"),{source:"claude_json_user"},o),em(ut(r,".claude.json"),t,o)):n==="cursor"&&tn(ut(r,".cursor/mcp.json"),{source:"cursor_mcp_user"},o),tn(ut(t,".mcp.json"),{source:"mcp_json"},o),tn(ut(t,".cursor/mcp.json"),{source:"cursor_mcp"},o),o}async function Ar(e,t=process.cwd(),n="claude",r=Gi()){return[...zi(e,t,n,r).values()].map(o=>o.declared)}function Vi(e,t,n=process.cwd(),r="claude",o=Gi()){let s=zi(t,n,r,o),i=s.get(e);if(i!==void 0)return i.config??null;for(let[a,c]of s)if(Ir(a,e))return c.config??null;return null}function kr(e){let t=To(e);if(t.problem){f(`WARN: ignoring --url/--token collector override: ${t.problem}`);return}return t.url}function Wi(e,t){if(R(e,"conversation_id"))return!0;if(t==="")return!1;let n=t[0];return n?.toLowerCase()===n}function tm(){return!!(I("CURSOR_VERSION")??I("CURSOR_PROJECT_DIR"))}function Ji(e,t,n){return e!=="claude"&&e!=="codex"?!1:Wi(t,n)?!0:tm()}var nm=new Set(["sessionstart","sessionend","stop","stopfailure","pretooluse","posttooluse","posttoolusefailure","permissiondenied","subagentstart","subagentstop","userpromptexpansion","userpromptsubmit"]);function lt(e,t,n,r){return Wi(e,t)?"cursor":Tt(r)?r:Tt(n)?n:R(e,"turn_id")?"codex":R(e,"session_id")||nm.has(t.toLowerCase())?"claude":"unknown"}function nn(e,t){let n=e.toLowerCase();return n==="sessionend"||n==="stopfailure"||n==="subagentstop"?!0:n==="stop"&&t==="codex"}function rm(e){switch(e){case"sessionstart":return"session_start";case"stop":case"sessionend":case"stopfailure":return"session_end";case"pretooluse":case"posttooluse":case"posttoolusefailure":case"permissiondenied":case"beforemcpexecution":case"beforeshellexecution":case"aftershellexecution":case"beforereadfile":case"afterfileedit":case"subagentstart":case"subagentstop":return"tool_invoked";case"beforesubmitprompt":case"userpromptexpansion":case"userpromptsubmit":return"skill_invoked";default:return""}}function Yi(e){let t=e.toLowerCase();return t==="userpromptsubmit"||t==="beforesubmitprompt"}function Xi(e,t){return e.toLowerCase()==="userpromptsubmit"&&t==="claude"}function Zi(e){let t=e.toLowerCase();return t==="posttooluse"?!0:t==="posttoolusefailure"||t==="permissiondenied"?!1:null}function dt(e){return R(e,"session_id")||R(e,"conversation_id")}function Or(e){return R(e,"prompt.id")||R(e,"prompt_id")||R(e,"generation_id")||R(e,"turn_id")}function Pr(e){return R(e,"hook_event_name")||R(e,"event")}function qi(e,t,n){let r=dt(e),o=Or(e),s=Pr(e),i=R(e,"source"),a=lt(e,s,t,n);return{sessionId:r,turnId:o,runnerEvent:s,hookSource:i,runnerPlatform:a}}var om=["session_start","session_end","tool_invoked","skill_invoked"];function sm(e){return om.includes(e)}function Qi(e,t){return e&&sm(e)?e:rm(t.toLowerCase())}var im={beforeshellexecution:"Shell",aftershellexecution:"Shell",beforereadfile:"Read",afterfileedit:"Write"};function rn(e){return/^mcp__/i.test(e)||/^MCP:/i.test(e)}function ea(e,t=""){let n=R(e,"tool_name")||R(e,"tool")||null,r=t.toLowerCase();n?r==="beforemcpexecution"&&!rn(n)&&(n=`MCP:${n}`):n=im[r]??null;let o=e.tool_input,i=(o&&typeof o=="object"?Oe(o.skill)||Oe(o.skill_name):"")||R(e,"skill_name")||null,a=n&&e.tool_name!==n&&e.tool!==n?{...e,tool_name:n}:e;i??=li(a);let c=Di(a),l=$i(a);return{toolName:n,skillName:i,ruleName:c,commandName:l}}var am=/^[A-Za-z][A-Za-z0-9_.:-]{0,63}$/;function ta(e){for(let t of["subagent_type","agent_type"]){let n=R(e,t);if(n&&am.test(n))return n}return null}function na(e){let t=se(e,"duration_ms");if(typeof t=="number")return t;let n=se(e,"duration");return typeof n=="number"?n:null}var cm="error",um="interrupted",lm="permission_denied",dm=/^[A-Za-z][A-Za-z0-9_.-]{0,63}$/;function pt(e){return dm.test(e)?e:null}function pm(e){for(let t of["failure_type","error_type"]){let n=pt(R(e,t));if(n)return n}return null}function ra(e,t){return se(e,"is_interrupt")===!0?um:t.toLowerCase()==="permissiondenied"?lm:pm(e)??cm}function oa(e,t){let n=null;for(let r of e)r&&t(r)&&(n===null||r.length>n.length)&&(n=r);return n}function fm(e,t){return oa(t,n=>e===n||e.startsWith(`${n}_`)||e.startsWith(`${n}-`))}function mm(e,t){return oa(t,n=>Ir(n,e))}function gm(e,t){let n=null,r=0;for(let s of t)if(s)for(let i of Cr(s)){let a=`${i}__`;e.length>a.length&&e.slice(0,a.length).toLowerCase()===a.toLowerCase()&&i.length>r&&(n={mcpServer:s,mcpTool:e.slice(a.length)},r=i.length)}if(n!==null)return n;let o=/^(.+?)__(.+)$/.exec(e);return!o?.[1]||!o[2]?{mcpServer:null,mcpTool:null}:{mcpServer:mm(o[1],t)??o[1],mcpTool:o[2]}}function _m(e,t){if(/^mcp__/i.test(e))return gm(e.slice(5),t);if(/^MCP:/i.test(e)){let n=e.slice(4);if(!n)return{mcpServer:null,mcpTool:null};let r=n.indexOf(":");if(r>0)return{mcpServer:n.slice(0,r),mcpTool:n.slice(r+1)||null};let o=n.indexOf("__");return o>0?{mcpServer:n.slice(0,o),mcpTool:n.slice(o+2)||null}:{mcpServer:fm(n,t),mcpTool:n}}return{mcpServer:null,mcpTool:null}}function hm(e,t){let n=`${t}__`;return e.length>n.length&&e.toLowerCase().startsWith(n.toLowerCase())?e.slice(n.length):e}function sa(e,t=[],n=""){let r=e?_m(e,t):{mcpServer:null,mcpTool:null},o=pt(n.trim());if(!o)return r;let s=r.mcpTool;return!s&&e&&!rn(e)&&(s=e),s&&(s=hm(s,o)),{mcpServer:o,mcpTool:s}}var ca=3e4,Im="claims",Am=!0,km=100,Om=new Set(["sessionstart","sessionend","stopfailure"]),Pm=["tool_name","tool","command","file_path","url"];function xm(e=aa()){return xr(ie(e),Im)}function ua(e,t){try{let n=Rm(e,"utf8").split(`
25
+ `,1)[0]??"";return t-Number(n.trim())}catch{return Number.NaN}}function bm(e){let t=[];for(let n of Pm){let r=R(e,n).trim();r&&t.push(`${n}=${r}`)}return t.length===0?"":nt(t.join("\0"))}function Tm(e){let t=e.sessionId.trim();if(!t)return;let n=e.runnerEvent.trim().toLowerCase(),r=e.turnId.trim(),o=e.toolUseId.trim(),s=e.subagentId?.trim()??"",i=e.callFingerprint?.trim()??"",a=!!(o||r||s),c=Om.has(n);if(!a&&!c)return;let l=e.runnerPlatform.trim()||"unknown";return nt(`${l}|${t}|${n}|${r}|${o}|${i}|${s}`)}function Nm(e,t=Date.now()){let n;try{n=ym(e)}catch{return}let r=0;for(let o of n){if(r>=km)break;r+=1;let s=xr(e,o),i=ua(s,t);if(!(!Number.isFinite(i)||i<ca))try{ia(s)}catch{}}}function vm(e,t,n=Date.now()){let r=xr(t,e);try{if(Sm(r)){let o=ua(r,n);if(Number.isFinite(o)&&o>=0&&o<ca)return!1;try{ia(r)}catch{}}}catch{}try{Em(t,{recursive:!0}),Cm(r,`${n}
26
+ `,{encoding:"utf8",flag:"wx"})}catch(o){if(Zs(o))return!1;let s=o instanceof Error?o.message:String(o);return f(`WARN: event claim failed open: ${s}`),!0}return Nm(t,n),!0}function wm(e,t,n){let r=dt(e),o=Or(e),s=R(e,"tool_use_id"),i=R(e,"subagent_id")||R(e,"agent_id"),a=lt(e,t,void 0,n),c=bm(e);return{runnerPlatform:a,sessionId:r,runnerEvent:t,turnId:o,toolUseId:s,subagentId:i,callFingerprint:c}}function la(e,t,n,r=aa(),o=Date.now()){if(!Am)return!0;let s=Tm(wm(e,t,n));if(!s)return!0;let i=vm(s,xm(r),o);return!i&&I("EV_AI_HOOK_DEBUG")&&f(`DEBUG: duplicate hook event suppressed (claim ${s.slice(0,8)}\u2026)`),i}import{closeSync as Mm,writeSync as Lm}from"node:fs";var da="EV_AI_LAUNCHER_VERSION";var pa="EV_AI_HOOK_SOURCE",fa="EV_AI_HOOK_FALLBACK_REASON",ma="EV_AI_LAUNCHER_SCOPE",br="EV_AI_LAUNCHER_READY_FD";var ga=Buffer.from([1]);var aR=1024*1024,cR=4*1024*1024,uR=64*1024,lR=64*1024,dR=64*1024;var Tr=4096,pR=4*1024*1024;function _a(e=process.env){let t=e[br];if(delete e[br],t===void 0)return;let n=Number.parseInt(t,10);if(!(!Number.isInteger(n)||n<3)){try{Lm(n,ga)}catch{}try{Mm(n)}catch{}}}function Nr(e=process.env){let t=e[da];if(t)return{launcherVersion:t,hookSource:e[pa]??"",fallbackReason:e[fa],launcherScope:e[ma]}}function ha(e,t){return(e?No(e):void 0)===t}import{realpathSync as lS}from"node:fs";import{homedir as dS}from"node:os";var O=qe(Ke(),1);import{existsSync as Um,readFileSync as Dm}from"node:fs";import{homedir as Sa}from"node:os";import{join as Hm}from"node:path";var Fm="cloud-cache.json",jm=1440*60*1e3,$m=900*1e3;function Bm(e=Sa()){return Hm(ie(e),Fm)}function Km(e){if(!Um(e))return;let t=G(Dm(e,"utf8"),{});if(!(typeof t.context!="string"||typeof t.probed_at!="number"||t.result!==null&&t.result!==void 0&&typeof t.result!="object"))return{context:t.context,probed_at:t.probed_at,result:t.result??null}}function Gm(e,t){try{q(e,`${JSON.stringify(t)}
27
+ `)}catch(n){let r=n instanceof Error?n.message:String(n);f(`WARN: cloud cache write failed open: ${r}`)}}function zm(e,t,n){if(!e||e.context!==t)return!1;let r=e.result===null?$m:jm;return n-e.probed_at<r}async function Vm(e){let t=await fetch("http://169.254.169.254/latest/api/token",{method:"PUT",headers:{"X-aws-ec2-metadata-token-ttl-seconds":"60"},signal:AbortSignal.timeout(e)}).catch(()=>{});if(!t?.ok)return;let n=(await t.text()).trim();if(!n)return;let r={"X-aws-ec2-metadata-token":n},[o,s]=await Promise.all([fetch("http://169.254.169.254/latest/meta-data/placement/region",{headers:r,signal:AbortSignal.timeout(e)}).catch(()=>{}),fetch("http://169.254.169.254/latest/meta-data/instance-id",{headers:r,signal:AbortSignal.timeout(e)}).catch(()=>{})]);if(!o?.ok&&!s?.ok)return;let i=o?.ok?(await o.text()).trim():"",a=s?.ok?(await s.text()).trim():"";if(!(!i&&!a))return{provider:"aws",region:i,instance_id:a}}async function Wm(e){let t=await fetch("http://metadata.google.internal/computeMetadata/v1/instance/?recursive=true",{headers:{"Metadata-Flavor":"Google"},signal:AbortSignal.timeout(e)}).catch(()=>{});if(!t?.ok)return;let n=await t.json(),r=typeof n.zone=="string"?n.zone.split("/").pop()??"":"",o=n.id===void 0?"":String(n.id);if(!(!r&&!o))return{provider:"gcp",region:r,instance_id:o}}async function Jm(e){let t=await fetch("http://169.254.169.254/metadata/instance?api-version=2021-02-01",{headers:{Metadata:"true"},signal:AbortSignal.timeout(e)}).catch(()=>{});if(!t?.ok)return;let n=await t.json(),r=n.compute?.location??"",o=n.compute?.vmId??"";if(!(!r&&!o))return{provider:"azure",region:r,instance_id:o}}async function Ym(e){let t=await Promise.allSettled([Vm(e),Wm(e),Jm(e)]);for(let n of t)if(n.status==="fulfilled"&&n.value)return n.value;return null}async function Ea(e,t){if(e==="interactive")return null;let n=t?.home??Sa(),r=t?.timeoutMs??1e3,o=t?.nowMs??Date.now(),s=Bm(n),i=Km(s);if(zm(i,e,o))return i.result;let a=await Ym(r);return Gm(s,{context:e,probed_at:o,result:a}),a}var Xm=["CI","GITHUB_ACTIONS","GITLAB_CI","CIRCLECI","BUILDKITE","TF_BUILD","JENKINS_URL","JENKINS_HOME","CODEBUILD_BUILD_ID","DRONE","DRONE_BUILD_NUMBER","TEAMCITY_VERSION","TRAVIS","APPVEYOR","BITBUCKET_BUILD_NUMBER","KUBERNETES_SERVICE_HOST","REMOTE_CONTAINERS","DEVCONTAINER","GITHUB_REPOSITORY","GITHUB_REPOSITORY_ID","GITHUB_REF","GITHUB_SHA","GITHUB_RUN_ID","GITHUB_WORKFLOW","GITHUB_ACTOR","GITHUB_TRIGGERING_ACTOR","GITHUB_ACTOR_ID","GITHUB_USER","GITLAB_USER_LOGIN","GITLAB_USER_NAME","GITLAB_USER_EMAIL","BUILD_REQUESTEDFOR","BUILD_REQUESTEDFOREMAIL","BUILD_REQUESTEDFORID","BUILDKITE_BUILD_CREATOR","BUILDKITE_BUILD_CREATOR_EMAIL","BUILD_USER","BUILD_USER_ID","BUILD_USER_EMAIL","CHANGE_AUTHOR","CHANGE_AUTHOR_EMAIL","CIRCLE_USERNAME","CODEBUILD_INITIATOR","DRONE_COMMIT_AUTHOR","DRONE_COMMIT_AUTHOR_NAME","DRONE_COMMIT_AUTHOR_EMAIL","EV_AI_HOOK_OPERATOR_NAME","EV_AI_HOOK_OPERATOR_EMAIL","EV_AI_HOOK_OPERATOR_LOGIN","GIT_AUTHOR_NAME","GIT_AUTHOR_EMAIL","GIT_COMMITTER_NAME","GIT_COMMITTER_EMAIL","EMAIL","RUNNER_OS","RUNNER_ARCH","NODE_ENV","TERM_PROGRAM","CLAUDE_CODE_REMOTE","CLAUDE_CODE_REMOTE_SESSION_ID","CURSOR_AGENT","CURSOR_VERSION","CURSOR_CODE_REMOTE","CURSOR_USER_EMAIL","CODESPACES","CODESPACE_NAME","ANTHROPIC_BASE_URL","OPENAI_BASE_URL","OPENAI_API_BASE","AZURE_OPENAI_ENDPOINT","GOOGLE_GEMINI_BASE_URL","GEMINI_API_BASE","CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX"],Zm=["CURSOR_PROJECT_DIR"],qm=new Set(["key","api-key","api_key","apikey","token","sig","signature","access_token","password","pwd","secret","client_secret"]);function Qm(e){try{let t=new URL(e);(t.username||t.password)&&(t.username="",t.password="");for(let[n]of t.searchParams)qm.has(n.toLowerCase())&&t.searchParams.set(n,"[redacted]");return t.toString()}catch{return e}}function ya(e=process.env){let t=Xm.map(r=>Object.prototype.hasOwnProperty.call(e,r)?{name:r,present:!0,value:Qm(e[r]??"")}:{name:r,present:!1}),n=Zm.map(r=>({name:r,present:Object.prototype.hasOwnProperty.call(e,r)&&!!e[r]}));return[...t,...n]}import{homedir as bg}from"node:os";import{homedir as Ra}from"node:os";import{join as eg}from"node:path";function tg(e=Ra()){return eg(e,".claude.json")}function on(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}function Ca(e=Ra()){let n=U(tg(e),{}).oauthAccount;if(!n||typeof n!="object")return null;let r=on(n.emailAddress),o=on(n.fullName)??on(n.displayName),s=on(n.accountUuid),i=r??s;return!i||K(o,r)?null:{git_user_name:null,git_user_email:null,platform_login:i,identity_source:"claude_oauth"}}import{homedir as ka}from"node:os";import{join as Ia}from"node:path";var ng="https://api.openai.com/auth";function Ge(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}function Oa(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function rg(e){let t=e.split(".");if(t.length!==3||t.some(r=>r.length===0))return null;let n=t[1];if(!n)return null;try{let r=JSON.parse(Buffer.from(n,"base64url").toString("utf8"));return Oa(r)}catch{return null}}function Aa(e,t,n){return Ge(e[n])??Ge(t?.[n])}function og(e=process.env,t=ka()){let n=Ge(e.CODEX_HOME)??Ia(t,".codex");return Ia(n,"auth.json")}function Pa(e=process.env,t=ka()){let n=U(og(e,t),{}),r=Ge(n.auth_mode);if(r!==null&&r!=="chatgpt"||r===null&&Ge(n.OPENAI_API_KEY))return null;let o=Ge(n.tokens?.id_token);if(!o)return null;let s=rg(o);if(!s)return null;let i=Oa(s[ng]),a=Aa(s,i,"name"),c=Aa(s,i,"email");return!c||K(a,c)?null:{git_user_name:null,git_user_email:null,platform_login:c,identity_source:"codex_oauth"}}import{homedir as cn}from"node:os";import{join as de}from"node:path";import{join as sg}from"node:path";var ig="cursor-ide-identity.json",ag=et;function ba(e){return sg(ie(e),ig)}function xa(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}function Ta(e){let t=U(e,{}),n=t.read_at_ms,r=t.db_path;if(!(typeof n!="number"||!Number.isFinite(n)||typeof r!="string"))return{read_at_ms:n,db_path:r,email:xa(t.email),auth_id:xa(t.auth_id)}}function Na(e,t,n){if(e?.db_path!==t)return!1;let r=n-e.read_at_ms;return r>=0&&r<ag}function va(e,t){try{q(e,`${JSON.stringify(t)}
28
+ `)}catch(n){let r=n instanceof Error?n.message:String(n);f(`WARN: cursor IDE identity cache write failed open: ${r}`)}}import{execFileSync as cg}from"node:child_process";import{existsSync as ug}from"node:fs";import{createRequire as lg}from"node:module";import{pathToFileURL as dg}from"node:url";var Ma=lg(import.meta.url),sn=`
29
29
  SELECT key, value
30
30
  FROM ItemTable
31
31
  WHERE key LIKE 'cursorAuth/%'
32
32
  AND key NOT LIKE '%Token%'
33
33
  AND key NOT LIKE '%token%'
34
34
  ORDER BY key
35
- `.trim(),wr=new Map;function Ca(e){if(typeof e=="string"){let t=e.trim();return t.length>0?t:null}if(e instanceof Uint8Array){let t=Buffer.from(e).toString("utf8").trim();return t.length>0?t:null}return null}function Aa(e){return e.toLowerCase().includes("token")}function ka(e){let t=new Map;if(!Array.isArray(e))return t;for(let n of e){if(n===null||typeof n!="object")continue;let r=n,o=Ca(r.key),s=Ca(r.value);o&&s&&!Aa(o)&&t.set(o,s)}return t}function Jm(e){let t=Wm(e);return t.search="mode=ro&immutable=1",t.href}function Ym(e){try{let t=Ia("bun:sqlite");if(typeof t.Database!="function")return null;let n=new t.Database(e,{readonly:!0,create:!1});try{let r=n.query?.(Qt)??n.prepare(Qt);return ka(r.all?.())}finally{n.close?.()}}catch{return null}}function Xm(e){let t=process.emitWarning.bind(process);process.emitWarning=((n,...r)=>{(typeof n=="string"?n:n instanceof Error?n.message:"").includes("SQLite is an experimental feature")||t(n,...r)});try{return e()}finally{process.emitWarning=t}}function Zm(e){try{return Xm(()=>{let t=Ia("node:sqlite");if(typeof t.DatabaseSync!="function")return null;let n=new t.DatabaseSync(e,{readOnly:!0});try{return ka(n.prepare(Qt).all?.())}finally{n.close?.()}})}catch{return null}}function qm(e){let t=new Map;for(let n of e.split(`
36
- `)){let r=n.trimEnd();if(!r)continue;let o=r.indexOf(" ");if(o<=0)continue;let s=r.slice(0,o).trim(),i=r.slice(o+1).trim();s&&i&&!Aa(s)&&t.set(s,i)}return t}function Qm(e){try{let t=Gm("sqlite3",["-noheader","-batch","-separator"," ",e,Qt],{encoding:"utf8",timeout:2e3,maxBuffer:65536,windowsHide:!0,stdio:["ignore","pipe","ignore"]});return qm(t)}catch{return null}}function Oa(e){let t=wr.get(e);if(t)return t;if(!zm(e)){let o=new Map;return wr.set(e,o),o}let n=Jm(e),r=Ym(n)??Qm(n)??Zm(n)??new Map;return wr.set(e,r),r}var eg="cursorAuth/cachedEmail",tg="cursorAuth/stripeMembershipAuthId";function en(e){if(e===void 0)return null;let t=e.trim();return t.length>0?t:null}function ng(e=tn(),t=process.platform,n=process.env){let r=en(n.VSCODE_PORTABLE);if(r)return fe(r,"user-data");let o=en(n.VSCODE_APPDATA);if(o)return fe(o,"Cursor");switch(t){case"darwin":return fe(e,"Library","Application Support","Cursor");case"win32":return fe(en(n.APPDATA)??fe(e,"AppData","Roaming"),"Cursor");default:return fe(en(n.XDG_CONFIG_HOME)??fe(e,".config"),"Cursor")}}function rg(e=tn()){return fe(e,".cursor","cli-config.json")}function og(e=tn(),t=process.platform,n=process.env){return fe(ng(e,t,n),"User","globalStorage","state.vscdb")}function pt(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}function sg(e){return typeof e.userId=="number"&&Number.isFinite(e.userId)?String(e.userId):pt(e.userId)}function ig(e){return pt(e.email)??pt(e.authId)??sg(e)}function Mr(e){let t=pt(e.email),n=pt(e.displayName),r=ig(e);return!r||z(n,t)?null:{git_user_name:null,git_user_email:null,platform_login:r,identity_source:"cursor_oauth"}}function ag(e){let n=F(rg(e),{}).authInfo;return!n||typeof n!="object"?null:Mr(n)}function cg(e,t,n){let r=og(e,process.platform,t),o=Sa(e),s=Ea(o);if(ya(s,r,n))return Mr({email:s?.email,authId:s?.auth_id});let i=Oa(r),a=i.get(eg)??null,c=i.get(tg)??null;return Ra(o,{read_at_ms:n,db_path:r,email:a,auth_id:c}),Mr({email:a,authId:c})}function xa(e=tn(),t=process.env,n=Date.now()){return ag(e)??cg(e,t,n)}import{createHash as ug}from"node:crypto";import{resolve as lg}from"node:path";function L(e){return ug("sha256").update(e).digest("hex").slice(0,16)}function Lr(e){return L(lg(e))}function W(e,t){return`${e}\0${t}`}function Pa(e){let t=e.indexOf("\0");return t<=0?null:{path:e.slice(0,t),name:e.slice(t+1)}}function ft(e){let n=[...e].sort((r,o)=>{let s=r.path.localeCompare(o.path);return s!==0?s:r.name.localeCompare(o.name)}).map(r=>`${r.path}|${r.name}|${r.content_hash}`).join(`
37
- `);return L(n)}function pg(e,t,n="git_config",r=null){return L(`${e??""}|${t??""}|${r??""}|${n}`)}function fg(e){let t=null,n=null;for(let r of e.split(`
38
- `)){let o=r.trim();if(!o)continue;let s=o.indexOf(" ");if(s<=0)continue;let i=o.slice(0,s).toLowerCase(),a=o.slice(s+1).trim();a&&(i==="user.name"?t=a:i==="user.email"&&(n=a))}return{git_user_name:t,git_user_email:n,platform_login:null}}async function mg(e,t=M){let n=await t("git",["config","--get-regexp","^user\\.(name|email)$"],2e3,{cwd:e});return fg(n)}function gg(e=process.env){let t=k(e.GIT_AUTHOR_NAME),n=k(e.GIT_AUTHOR_EMAIL);if(t||n)return{git_user_name:t,git_user_email:n,platform_login:null,identity_source:"git_env"};let r=k(e.GIT_COMMITTER_NAME),o=k(e.GIT_COMMITTER_EMAIL);if(r||o)return{git_user_name:r,git_user_email:o,platform_login:null,identity_source:"git_env"};let s=k(e.EMAIL);return s?{git_user_name:null,git_user_email:s,platform_login:null,identity_source:"git_env"}:null}function me(e,t,n,r=null){return!e&&!t&&!r?null:{git_user_name:e,git_user_email:t,platform_login:r,identity_source:n}}function _g(e=process.env){let t=k(e.EV_AI_HOOK_OPERATOR_EMAIL),n=k(e.EV_AI_HOOK_OPERATOR_LOGIN),r=me(k(e.EV_AI_HOOK_OPERATOR_NAME),t,"configured",t??n);if(r)return r;let o=k(e.GITHUB_ACTOR)??k(e.GITHUB_TRIGGERING_ACTOR)??k(e.GITHUB_USER),s=me(o,null,"github",o);if(s)return s;let i=k(e.GITLAB_USER_LOGIN),a=k(e.GITLAB_USER_EMAIL),c=me(k(e.GITLAB_USER_NAME)??i,a,"gitlab",a??i);if(c)return c;let l=k(e.BUILD_REQUESTEDFOREMAIL),u=me(k(e.BUILD_REQUESTEDFOR),l,"azure_devops",l??k(e.BUILD_REQUESTEDFORID));if(u)return u;let p=k(e.BUILDKITE_BUILD_CREATOR_EMAIL),m=me(k(e.BUILDKITE_BUILD_CREATOR),p,"buildkite",p);if(m)return m;let d=k(e.BUILD_USER_EMAIL)??k(e.CHANGE_AUTHOR_EMAIL),_=me(k(e.BUILD_USER)??k(e.CHANGE_AUTHOR),d,"jenkins",d??k(e.BUILD_USER_ID));if(_)return _;let S=k(e.CIRCLE_USERNAME),E=me(S,null,"circleci",S);if(E)return E;let y=k(e.CODEBUILD_INITIATOR),R=me(y,null,"codebuild",y);if(R)return R;let j=k(e.DRONE_COMMIT_AUTHOR_EMAIL),b=k(e.DRONE_COMMIT_AUTHOR),T=me(b??k(e.DRONE_COMMIT_AUTHOR_NAME),j,"drone",j??b);if(T)return T;if(ba(e.CLAUDE_CODE_REMOTE)||ba(e.CURSOR_AGENT)){let U=k(e.CURSOR_USER_EMAIL);return{git_user_name:null,git_user_email:null,platform_login:U&&!z(null,U)?U:null,identity_source:"cloud"}}return null}function Ur(e){return!!((e.git_user_name??e.git_user_email)&&!z(e.git_user_name,e.git_user_email))}function k(e){if(e===void 0)return null;let t=e.trim();return t.length>0?t:null}function ba(e){if(e===void 0||e==="")return!1;let t=e.trim().toLowerCase();return t!=="0"&&t!=="false"&&t!=="no"}function hg(e,t,n){return e==="claude"?da(t):e==="cursor"?xa(t,n):e==="codex"?_a(n,t):null}async function Dr(e,t=M,n=process.env,r={}){let o=await mg(e,t),s=gg(n),i=Ur(o)?o:s&&Ur(s)?s:null,a=hg(r.runnerPlatform,r.home??dg(),n);if(a)return{git_user_name:i?.git_user_name??null,git_user_email:i?.git_user_email??null,platform_login:a.platform_login,identity_source:a.identity_source};let c=_g(n);return c?.platform_login?{git_user_name:i?.git_user_name??null,git_user_email:i?.git_user_email??null,platform_login:c.platform_login,identity_source:c.identity_source}:i?{...i,platform_login:null,identity_source:Ur(o)?"git_config":"git_env"}:c||(o.git_user_name||o.git_user_email?{...o,identity_source:"git_config"}:s||{git_user_name:null,git_user_email:null,platform_login:null,identity_source:"git_config"})}async function Hr(e){let{gitRoot:t,installationStorePath:n,forceResend:r}=e,o=e.exec??M,s=e.env??process.env,i=await Dr(t,o,s,{runnerPlatform:e.runnerPlatform,home:e.home}),a=pg(i.git_user_name,i.git_user_email,i.identity_source,i.platform_login),l=(n?qn(n):void 0)?.operator_identity_hash;if(!(r||l!==void 0&&l!==a||!l))return{commit:()=>{}};let d=n;return{operator:i,commit:()=>{d&&ds(d,a,Ut())}}}function Fr(e){return e?!qn(e)?.operator_identity_hash:!0}function Ta(e){return!0}import{existsSync as K_,readFileSync as G_}from"node:fs";import{homedir as kc}from"node:os";import{join as We,resolve as z_}from"node:path";import{basename as U_,join as Ve}from"node:path";import{dirname as $a,resolve as on}from"node:path";import{existsSync as Sg}from"node:fs";import{homedir as wa}from"node:os";import{relative as Ma,resolve as oe,sep as Ae}from"node:path";var Eg=["session_id","conversation_id","turn_id","generation_id","prompt.id","prompt_id","hook_event_name","event","source","status","stop_reason","reason","tool_name","tool","tool_use_id","skill_name","command_name","expansion_type","command_source","permission_mode","model","model_id","agent_id","agent_type","subagent_id","subagent_type","subagent_model","is_parallel_worker","effort","effort.level","duration_ms","duration","sandbox","failure_type","is_interrupt"],yg=["prompt","tool_input","tool_response","last_assistant_message","command"],Rg=new Set;function Cg(e){switch(e?.toLowerCase()){case"beforemcpexecution":return new Set(["command"]);case"stopfailure":return new Set(["last_assistant_message"]);default:return Rg}}function La(e){return Ua(e)==="allowlist"}function Ua(e){return I("EV_AI_HOOK_CAPTURE_CONTENT")?.toLowerCase()==="off"||e.capture_hook_input==="allowlist"?"allowlist":e.capture_hook_input==="full"||e.debug===!0||I("EV_AI_HOOK_CAPTURE_FULL_INPUT")==="1"?"full":"content"}function Ig(e){let t={};for(let n of Eg){let r=ae(e,n);r!==void 0&&(t[n]=r)}return t}function nn(e,t){if(typeof e!="string"||e.length===0||!t)return null;let n=oe(e),r=oe(t),o=Ma(r,n);return!o||o==="."?".":o.startsWith(`..${Ae}`)||o===".."||oe(r,o)!==n?null:o.split(Ae).join("/")}function Da(e,t){let n=Ma(oe(t),oe(e)).split(Ae).join("/");return!n||n==="."?null:n===".."||n.startsWith("../")&&n.split("/").every(r=>r==="..")?n:null}function Ha(e){return typeof e!="string"||e.length===0?null:oe(e).split(Ae).join("/")}function Ag(){let e=I("CURSOR_PROJECT_DIR");if(!e)return null;let t=oe(e);return Sg(t)?t.split(Ae).join("/"):null}function $r(e,t){return nn(e,t)!==null}function kg(e,t){let n=oe(t??wa(),".cursor").split(Ae).join("/");return $r(e,n)}function Og(e,t,n){return t!==null&&$r(e,t)?!0:t!==null&&kg(e,n.home)?!1:n.inGitRepo===!0&&n.gitRoot!==void 0&&$r(e,n.gitRoot)?!0:t===null}function Fa(e,t){let n=Ha(e.cwd);if(n!==null)return n;let r=oe(process.cwd()).split(Ae).join("/"),o=Ag();return Og(r,o,t)?r:o??r}function Gr(e,t={}){return Fa(e,t)}function zr(e,t=wa()){let n=oe(t).split(Ae).join("/").replace(/\/$/,"");return n.length<=1?e:e===n?"~":e.startsWith(`${n}/`)?`~${e.slice(n.length)}`:e}function Na(e,t,n){let r=Ha(n.launchCwd)??Fa(t,n);e.cwd=zr(r,n.home);let o=n.inGitRepo===!0&&n.gitRoot!==void 0?nn(r,n.gitRoot):null;o!==null&&(e.cwd_relative=o)}var ja="\u2026[truncated]\u2026",Br=Buffer.byteLength(ja,"utf8"),xg=8;function mt(e){return Buffer.byteLength(JSON.stringify(e),"utf8")}function va(e,t){if(t<=0)return"";let n=Buffer.from(e,"utf8");return n.length<=t?e:n.subarray(0,t).toString("utf8")}function Pg(e,t){if(t<=0)return"";let n=Buffer.from(e,"utf8");return n.length<=t?e:n.subarray(n.length-t).toString("utf8")}function bg(e,t){if(Buffer.byteLength(e,"utf8")<=t)return e;if(t<=Br)return va(e,t);let r=t-Br,o=Math.ceil(r/2),s=Math.floor(r/2);return`${va(e,o)}${ja}${Pg(e,s)}`}function Kr(e,t,n){if(typeof e=="string"){n.push({path:t,value:e,bytes:Buffer.byteLength(e,"utf8")});return}if(Array.isArray(e)){e.forEach((r,o)=>{Kr(r,[...t,o],n)});return}if(e!==null&&typeof e=="object")for(let[r,o]of Object.entries(e))t.length===0&&r.startsWith("_")||Kr(o,[...t,r],n)}function Tg(e,t,n){let r=e;for(let s=0;s<t.length-1;s++){let i=t[s];if(i===void 0)return;r=(Array.isArray(r),r[i])}let o=t[t.length-1];if(!(o===void 0||r===null||typeof r!="object")){if(Array.isArray(r)){r[o]=n;return}r[o]=n}}var Ng=256;function vg(e,t,n){let r=n,o=Math.max(n,e[0]?.bytes??n);for(;r<o;){let s=Math.ceil((r+o)/2),i=0;for(let a of e)a.bytes>s&&(i+=a.bytes-s);i>=t?r=s:o=s-1}return r}function wg(e,t,n){let r=Number.POSITIVE_INFINITY;for(let o=0;o<6;o++){let s=mt(e);if(s<=t)return;let i=[];Kr(e,[],i),i.sort((u,p)=>p.bytes-u.bytes);let a=i.filter(u=>u.bytes>n);if(a.length===0)return;let c=vg(a,s-t,n),l=Math.max(n,Math.min(c,r-1));if(l>=r)return;r=l;for(let u of a)u.bytes>r&&Tg(e,u.path,bg(u.value,r))}}function Mg(e,t){let n=Math.max(0,t-Ng),r=Object.keys(e).filter(s=>!s.startsWith("_")).map(s=>({key:s,bytes:mt(e[s])})).sort((s,i)=>i.bytes-s.bytes),o=[];for(let{key:s}of r){if(mt(e)<=n)break;delete e[s],o.push(s)}o.length>0&&(e._dropped_keys=o.slice(0,10))}function jr(e,t){let n=mt(e);if(n<=t)return e;let r=structuredClone(e);return r._truncated=!0,r._original_bytes=n,wg(r,t,Br+xg),mt(r)>t&&Mg(r,t),r}function Lg(e,t,n){let r=Cg(n.runnerEvent);for(let o of yg){if(r.has(o))continue;let s=t[o];s!==void 0&&(e[o]=s)}}function rn(e,t,n={}){let r=Ua(t);if(r==="full"){let s={...e};return delete s.cwd,delete s.transcript_path,Na(s,e,n),jr(s,Dn)}let o=Ig(e);return Na(o,e,n),r==="content"?(Lg(o,e,n),jr(o,Dn)):jr(o,Uo)}function Ug(e){return typeof e=="string"&&e.length>0}function Vr(e){let t=on(e.home),n=on(e.launchCwd),r=e.gitRoot?on(e.gitRoot):null,o=new Set,s=[],i=null;e.inGitRepo&&Ug(e.remote)&&r!==null&&r!==t&&(i=r,o.add(r)),n!==t&&!o.has(n)&&(s.push({scope:"cwd",dir:n}),o.add(n)),i!==null&&s.push({scope:"repo",dir:i});let a=null,c=r!==null&&nn(n,r)!==null;if(e.inGitRepo&&r!==null&&r!==t&&c){let l=$a(r);for(;;){let u=on(l);if(u===t)break;let p=$a(u);if(p===u)break;if(e.hasProjectSpec(u)){s.push({scope:"parent",dir:u}),a=Da(u,n);break}l=p}}return{anchors:s,parentRel:a}}import{existsSync as Ba,readdirSync as Dg,realpathSync as Hg}from"node:fs";import{basename as Fg,dirname as jg,relative as $g,resolve as Bg,sep as Kg}from"node:path";var Wr=400,sn=class{constructor(t,n={}){this.home=t;this.pathMode=n.pathMode??"home-relative",this.maxEntries=n.maxEntries??_e}components=[];truncated=!1;pathMode;maxEntries;pluginExpandRemaining;seenRealpaths=new Set;componentPath(t){if(this.pathMode==="tilde"){let r=Bg(t).split(Kg).join("/");return zr(r,this.home)}let n=$g(this.home,t).replace(/\\/g,"/");return!n||n.startsWith("..")?`external/${L(jg(t))}/${Fg(t)}`:n}claimFile(t){try{let n=Hg(t);return this.seenRealpaths.has(n)?!1:(this.seenRealpaths.add(n),!0)}catch{return this.seenRealpaths.has(t)?!1:(this.seenRealpaths.add(t),!0)}}get atGlobalCap(){return this.truncated||this.components.length>=this.maxEntries}get pluginBudgetSpent(){return this.pluginExpandRemaining!==void 0&&this.pluginExpandRemaining<=0}readEntries(t){if(!Ba(t))return[];try{return Dg(t,{withFileTypes:!0})}catch{return[]}}readJson(t,n){if(Ba(t))return F(t,n)}push(t){return this.components.length>=this.maxEntries?(this.truncated=!0,!1):this.pluginExpandRemaining!==void 0&&this.pluginExpandRemaining<=0?!1:(this.pluginExpandRemaining!==void 0&&(this.pluginExpandRemaining-=1),this.components.push(t),!0)}withPluginExpandCap(t,n){let r=this.pluginExpandRemaining;this.pluginExpandRemaining=t;try{let o=n(),s=t-(this.pluginExpandRemaining??0);return{result:o,expanded:s}}finally{this.pluginExpandRemaining=r}}};import{existsSync as Jr,readFileSync as Gg,statSync as zg}from"node:fs";import{basename as Ga,join as gt,relative as za}from"node:path";var Yr=100*1024,Vg=4;function Wg(e){return e.length<=Yr?e:`${e.slice(0,Yr-1)}\u2026`}function Jg(e){try{let t=Gg(e),n=t.toString("utf8");return{hash:L(t),length:t.length,text:Wg(n)}}catch{return null}}var Ka={HOOK:"EVENT",COMMAND:"EXPLICIT_INVOCATION",MEMORY:void 0,MCP_SERVER:void 0,PLUGIN:void 0,SKILL:"UNSPECIFIED",RULE:"UNSPECIFIED",SUBAGENT:"UNSPECIFIED"};function Yg(e){return e in Ka?Ka[e]:"UNSPECIFIED"}function an(e,t){if(!e.claimFile(t.absolutePath))return!1;let n=Jg(t.absolutePath);if(!n)return!1;let r=t.name??Ga(t.absolutePath).replace(/\.(md|mdc|toml)$/i,""),o={kind:t.kind,name:r,path:e.componentPath(t.absolutePath),text:n.text,content_hash:n.hash,content_length:n.length,origin:t.origin,enabled:t.enabled},s=Yg(t.kind);return s&&(o.trigger=s),e.push(o)}function Xg(e,t,n){let r=za(e,t).replace(/\\/g,"/");return!r||r.startsWith("..")?Ga(t).replace(/\.(md|mdc|toml)$/i,""):n?r.replace(/\.(md|mdc|toml)$/i,""):r}function ve(e,t){let{dir:n,kind:r,origin:o,enabled:s,nested:i,extensions:a}=t;Xr(e,{walkRoot:n,currentDir:n,depth:0,kind:r,origin:o,enabled:s,nested:i,extensions:a})}function Xr(e,t){let{walkRoot:n,currentDir:r,depth:o,kind:s,origin:i,enabled:a,nested:c,extensions:l}=t;if(!(o>Vg))for(let u of e.readEntries(r)){if(e.atGlobalCap){e.truncated=!0;return}if(e.pluginBudgetSpent)return;if(c){if(!u.isDirectory())continue;let d=gt(r,u.name,c);if(Jr(d)){let _=za(n,gt(r,u.name)).replace(/\\/g,"/");an(e,{absolutePath:d,kind:s,origin:i,enabled:a,name:_||u.name});continue}Xr(e,{walkRoot:n,currentDir:gt(r,u.name),depth:o+1,kind:s,origin:i,enabled:a,nested:c,extensions:l});continue}if(u.isDirectory()){Xr(e,{walkRoot:n,currentDir:gt(r,u.name),depth:o+1,kind:s,origin:i,enabled:a,nested:c,extensions:l});continue}if(!u.isFile()||!l)continue;let p=u.name.toLowerCase();if(!l.some(d=>p.endsWith(d)))continue;let m=gt(r,u.name);an(e,{absolutePath:m,kind:s,origin:i,enabled:a,name:Xg(n,m,!0)})}}function Va(e){for(let t of e)if(Jr(t))try{if(zg(t).size>0)return t}catch{continue}return e.find(t=>Jr(t))}var cn=Xe(Be(),1);var Zg="<omitted>",qg=["package_name","package_spec","package_version","package_version_source"],Wa=100,Ja=120,un=[{raw:"tools",attr:"tools"},{raw:"autoApprove",attr:"auto_approve"},{raw:"auto_approve",attr:"auto_approve"},{raw:"alwaysAllow",attr:"always_allow"},{raw:"always_allow",attr:"always_allow"},{raw:"enabledTools",attr:"enabled_tools"},{raw:"enabled_tools",attr:"enabled_tools"},{raw:"disabledTools",attr:"disabled_tools"},{raw:"disabled_tools",attr:"disabled_tools"}],Ya=new Set(un.map(e=>e.attr)),Qg=["enabled","disabled"],e_=["serverUrl","auth","bearer_token_env_var","default_tools_approval_mode","defaultToolsApprovalMode","env_vars","env_http_headers","http_headers"],t_=new Set(["type","command","url","args","env","envVars","headers",...Qg,...e_,...un.map(e=>e.raw)]),n_=new Set(["transport","command_or_url","args","env_var_names","headers_present","auth","bearer_token_env_var","default_tools_approval_mode","env_http_header_names",...qg,...Ya,...[...Ya].map(e=>`${e}_truncated`)]);function Xa(e,t){for(let n of t)t_.has(n)||n_.has(n)||(e[n]=Zg)}var r_=/^(authorization|auth|api[-_]?key|access[-_]?token|refresh[-_]?token|secret|password|passwd|token|bearer|client[-_]?secret|client[-_]?id|private[-_]?key|signing[-_]?key)$/i,o_=/(?:^|[-_])(secret|password|passwd|token|api[-_]?key|private[-_]?key|signing[-_]?key|client[-_]?secret|client[-_]?id)(?:[-_]|$)/i,s_=/^(sk-|ghp_|gho_|github_pat_|xox[baprs]-|AKIA|ASIA|AIza|ya29\.)/,i_=/^bearer(?:\s+|$)/i;function ln(e){return!e||typeof e!="object"||Array.isArray(e)?null:e}function Za(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function Zr(e){if(Array.isArray(e)){let n=[];for(let r of e){if(typeof r!="string"||r.length===0)continue;let o=r.split("=",1)[0]?.trim();o&&n.push(o)}return n}let t=ln(e);return t?Object.keys(t).filter(n=>n.length>0):[]}function we(e){try{let t=new URL(e);return`${t.origin}${t.pathname}`}catch{return e}}function a_(e,t){if(e!==void 0&&/^https?:\/\//i.test(e)&&(0,cn.launchContainsCredentials)({kind:"url",url:e})||(0,cn.launchContainsCredentials)({kind:"command",command:e??"",arguments:t}))return!0;let n=ht([...t]);return t.some((r,o)=>n[o]===r?!1:/^https?:\/\//i.test(r)?(0,cn.launchContainsCredentials)({kind:"url",url:r}):!0)}function qa(e,t,n){a_(t,n)&&(e.launch_had_credentials=!0)}function c_(e){return s_.test(e)||i_.test(e)?"<redacted>":e.includes("://")?we(e):e}function Qa(e){if(/^https?:\/\//i.test(e))return we(e);let t=e.indexOf("=");return t>0?`${e.slice(0,t+1)}${Qa(e.slice(t+1))}`:c_(e)}function u_(e){let t=e.replace(/^-+/,"").split("=",1)[0]??"";return r_.test(t)||o_.test(t)}function ht(e){let t=[],n=!1;for(let r of e){if(n){t.push("<redacted>"),n=!1;continue}if(u_(r)){t.push("<redacted>"),n=!r.includes("=");continue}t.push(Qa(r))}return t}function l_(e){let t=Za(e);if(t.length===0)return;let n=[...new Set(t.map(r=>r.length>Ja?r.slice(0,Ja):r))].sort();if(n.length!==0)return n.length>Wa?{names:n.slice(0,Wa),truncated:!0}:{names:n,truncated:!1}}function d_(e){let t=ln(e);if(!t)return{headers:[],envVars:[]};let n=[],r=[];for(let[o,s]of Object.entries(t))o.length>0&&n.push(o),typeof s=="string"&&s.length>0&&r.push(s);return{headers:n,envVars:r}}function ec(e,t){let n=new Set;for(let{raw:r,attr:o}of un){if(n.has(o)||!(r in t))continue;let s=t[r];if(o==="auto_approve"&&typeof s=="boolean"){e.auto_approve=s,n.add(o);continue}let i=l_(s);i&&(e[o]=i.names,i.truncated&&(e[`${o}_truncated`]=!0),n.add(o))}}function tc(e,t){let n=ln(e),r={transport:t};if(!n)return r;Xa(r,Object.keys(n));let o=typeof n.command=="string"?n.command:void 0,s=typeof n.url=="string"?n.url:void 0,i=typeof n.serverUrl=="string"?n.serverUrl:void 0,a=o??s??i,c=Za(n.args);a&&(r.command_or_url=we(a));let l=ht(c);l.length>0&&(r.args=l),qa(r,a,c);let u=d_(n.env_http_headers),p=[...new Set([...Zr(n.env),...Zr(n.envVars),...Zr(n.env_vars),...u.envVars,...typeof n.bearer_token_env_var=="string"&&n.bearer_token_env_var.length>0?[n.bearer_token_env_var]:[]])].sort();p.length>0&&(r.env_var_names=p),u.headers.length>0&&(r.env_http_header_names=[...new Set(u.headers)].sort());for(let S of["headers","http_headers","env_http_headers"])if(n[S]!==void 0&&n[S]!==null){r.headers_present=!0;break}let m=typeof n.auth=="string"?n.auth:void 0;m&&(r.auth=m);let d=typeof n.bearer_token_env_var=="string"?n.bearer_token_env_var:void 0;d&&(r.bearer_token_env_var=d);let _=typeof n.default_tools_approval_mode=="string"?n.default_tools_approval_mode:typeof n.defaultToolsApprovalMode=="string"?n.defaultToolsApprovalMode:void 0;return _&&(r.default_tools_approval_mode=_),ec(r,n),r}function nc(e){let t=ln(e);return t?t.enabled===!1?!1:t.disabled!==!0:!0}function eo(e,t,n=!0){let r=Object.keys(t).sort().map(o=>[o,t[o]??null]);return L(JSON.stringify({name:e,attributes:r,enabled:n}))}function Ge(e){let t=e.trim();return t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'")?t.slice(1,-1):t}function _t(e,t){let n=new RegExp(`^\\s*${t}\\s*=\\s*\\[([^\\]]*)\\]`,"m").exec(e);return n?.[1]?[...n[1].matchAll(/"([^"]*)"|'([^']*)'/g)].map(r=>r[1]??r[2]??"").filter(r=>r.length>0):[]}function Qr(e,t){let n=new RegExp(`^\\s*${t}\\s*=\\s*(true|false)\\s*$`,"m").exec(e);if(n?.[1])return n[1]==="true"}function qr(e,t){let n=new RegExp(`^\\s*${t}\\s*=\\s*(.+)$`,"m").exec(e);if(!n?.[1])return;let r=Ge(n[1]);return r.length>0?r:void 0}function p_(e,t){let n=[],r=i=>{for(let a of i.split(/[,\n]/)){let c=/^\s*"?([A-Za-z_][A-Za-z0-9_-]*)"?\s*=\s*(.+?)\s*$/.exec(a);c?.[1]&&n.push([c[1],Ge(c[2]??"")])}},o=new RegExp(`^\\s*${t}\\s*=\\s*\\{([^}]*)\\}`,"m").exec(e);o?.[1]&&r(o[1]);let s=new RegExp(`(?:^|\\n)\\[[^\\]]*\\.${t}\\]\\s*\\n([\\s\\S]*?)(?=\\n\\[|$)`).exec(`
39
- ${e}`);return s?.[1]&&r(s[1]),n}function rc(e){return Qr(e,"enabled")===!1?!1:Qr(e,"disabled")!==!0}function f_(e,t){let n={};for(let{raw:r,attr:o}of un){if(o==="auto_approve"){let i=Qr(t,r);if(i!==void 0){n[r]=i;continue}}let s=_t(t,r);s.length>0&&(n[r]=s)}ec(e,n)}var m_=/^\s*([A-Za-z_][A-Za-z0-9_-]*)\s*[.=]/,g_=/^\[[^\]]*\.([A-Za-z_][A-Za-z0-9_-]*)\]\s*$/gm;function __(e){let t=new Set,n=e.search(/^\[/m),r=n===-1?e:e.slice(0,n);for(let o of r.split(`
40
- `)){let s=m_.exec(o);s?.[1]&&t.add(s[1])}for(let o of e.matchAll(g_))o[1]&&t.add(o[1]);return[...t]}function oc(e,t){let n={transport:t};Xa(n,__(e));let r=/^\s*command\s*=\s*(.+)$/m.exec(e),o=/^\s*url\s*=\s*(.+)$/m.exec(e),s=r?Ge(r[1]??""):void 0,i=o?Ge(o[1]??""):void 0,a=s!==void 0&&s.length>0?s:i,c=_t(e,"args");a&&(n.command_or_url=we(a));let l=ht(c);l.length>0&&(n.args=l),qa(n,a,c);let u=new Set;for(let y of e.split(`
41
- `)){let R=/^\s*env\.([A-Za-z_][A-Za-z0-9_]*)\s*=/.exec(y);R?.[1]&&u.add(R[1])}let p=/^\s*env\s*=\s*\{([^}]*)\}/m.exec(e);if(p?.[1])for(let y of p[1].split(",")){let R=/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=/.exec(y);R?.[1]&&u.add(R[1])}let m=/(?:^|\n)\[[^\]]*env\]\s*\n([\s\S]*?)(?=\n\[|$)/.exec(`
42
- ${e}`);if(m?.[1])for(let y of m[1].split(`
43
- `)){let R=/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=/.exec(y);R?.[1]&&u.add(R[1])}for(let y of _t(e,"env_vars"))u.add(y);let d=p_(e,"env_http_headers");for(let[,y]of d)y.length>0&&u.add(y);let _=qr(e,"bearer_token_env_var");_&&(u.add(_),n.bearer_token_env_var=_),u.size>0&&(n.env_var_names=[...u].sort()),d.length>0&&(n.env_http_header_names=[...new Set(d.map(([y])=>y))].sort()),(/^\s*(?:http_|env_http_)?headers\s*=/m.test(e)||/(?:^|\n)\[[^\]]*headers\]\s*(?:\n|$)/.test(e))&&(n.headers_present=!0);let S=qr(e,"auth");S&&(n.auth=S);let E=qr(e,"default_tools_approval_mode");return E&&(n.default_tools_approval_mode=E),f_(n,e),n}var h_=300,S_=256;function sc(e,t){if(!t)return e;let n=[...new Set([t,t.replace(/\\/g,"/")])].filter(o=>o.length>1),r=e;for(let o of n)r=r.split(o).join("~");return r}function dn(e){let t=[],n="",r=null;for(let o of e){if(r){o===r?r=null:n+=o;continue}if(o==='"'||o==="'"){r=o;continue}if(/\s/.test(o)){n.length>0&&(t.push(n),n="");continue}n+=o}return n.length>0&&t.push(n),t}function ic(e,t){return e.length<=t?e:`${e.slice(0,t-1)}\u2026`}function E_(e){return ic(e,h_)}function ac(e,t){let n=sc(e.trim(),t),r=dn(n);if(r.length===0)return"";let[o,...s]=r,i=we(o),a=ht(s);return E_([i,...a].join(" "))}function cc(e,t){if(typeof e!="string")return null;let n=sc(e.trim(),t),r=dn(n)[0];if(!r)return null;let o=we(r);return o.length===0?null:ic(o,S_)}function y_(e){if(e.prompt||e.type==="prompt")return"prompt";let t=e.command??e.bash??e.powershell??"";return/\bnpx\b/i.test(t)?"npx":/\.(sh|bash|zsh|js|mjs|cjs|ts|py)(\s|$|"|')/i.test(t)||/^(\.\/|~\/|\/|[A-Za-z]:[\\/])/.test(t.trim())?"script":"inline"}function R_(e){return Array.isArray(e.hooks)&&e.hooks.length>0?e.hooks:[{type:e.type,command:e.command,bash:e.bash,powershell:e.powershell,prompt:e.prompt}]}function C_(e,t,n,r){let o=e.componentPath(t);for(let[s,i]of Object.entries(n))if(!(!Array.isArray(i)||e.truncated))for(let a of i){if(!a||typeof a!="object"||e.truncated)continue;let c=a;for(let l of R_(c)){if(e.truncated)return;let u=l.command??l.bash??l.prompt??l.powershell??c.powershell??"",p=y_({type:l.type??c.type,command:l.command??c.command,bash:l.bash??c.bash,powershell:l.powershell??c.powershell,prompt:l.prompt??c.prompt}),m=typeof c.matcher=="string"?c.matcher:"",d=L(u),_=m?`${s}:${m}:${p}:${d}`:`${s}:${p}:${d}`,S=`${s}|${m}|${p}|${u}|attrs2`;e.push({kind:"HOOK",name:_,path:o,content_hash:L(S),origin:r,enabled:!0,trigger:"EVENT",attributes:{event:s,...m?{matcher:m}:{},action_kind:p,action_hash:d,...p!=="prompt"&&u.trim()?{command:ac(u,e.home)}:{}}})}}}function ze(e,t,n){if(!e.claimFile(t))return;let r=e.readJson(t,{});!r?.hooks||typeof r.hooks!="object"||C_(e,t,r.hooks,n)}import{existsSync as P_,readFileSync as b_}from"node:fs";var ke=Xe(Be(),1);import{createHash as I_}from"node:crypto";import{join as St}from"node:path";function A_(e){let t=[...e].sort((n,r)=>n.localeCompare(r,"en")).join(`
44
- `);return I_("sha512").update(t).digest("hex").slice(0,16)}function k_(e){let t=process.platform==="win32"?St(I("LOCALAPPDATA")??e,"npm-cache"):St(e,".npm"),n=I("npm_config_cache")??I("NPM_CONFIG_CACHE");return n===void 0||n===t?[t]:[n,t]}function uc(e){return typeof e=="string"&&e.length>0&&e.length<=ke.PACKAGE_FIELD_MAX?e:null}function O_(e,t,n){let r=A_(e);for(let o of k_(n)){let s=St(o,"_npx",r),i=F(St(s,"node_modules",...t.split("/"),"package.json"),{}),a=uc(i.version);if(a!==null)return a;let c=F(St(s,"package-lock.json"),{}),l=uc(c.packages?.[`node_modules/${t}`]?.version);if(l!==null)return l}return null}function x_(e){return e.length<=ke.PACKAGE_FIELD_MAX?e:`${e.slice(0,ke.PACKAGE_FIELD_MAX-1)}\u2026`}function to(e,t,n){if(typeof e!="string"||e.length===0)return null;let r=(0,ke.npxPackageSpecs)(e,t??[]),o=r[0];if(o===void 0)return null;let s=(0,ke.packageNameFromSpec)(o);if(s===null)return null;let i=O_(r,s,n);return{package_name:s,package_spec:x_(o),...i===null?{}:{package_version:i,package_version_source:"npx_cache"}}}function lc(e,t){if(typeof e!="string"||e.length===0)return null;let[n,...r]=dn(e.trim());return n===void 0?null:to(n,r,t)}function pn(e,t){if(!e||typeof e!="object"||Array.isArray(e))return null;let n=e,r=Array.isArray(n.args)?n.args.filter(o=>typeof o=="string"):[];return to(typeof n.command=="string"?n.command:null,r,t)}function dc(e,t){let n=/^\s*command\s*=\s*(.+)$/m.exec(e);return n===null?null:to(Ge(n[1]??""),_t(e,"args"),t)}function T_(e){if(!e||typeof e!="object"||Array.isArray(e))return"unknown";let t=e;return typeof t.type=="string"&&t.type.length>0?t.type:typeof t.url=="string"?"http":typeof t.command=="string"?"stdio":"unknown"}function pc(e,t,n){if(!e.claimFile(t))return;let o=e.readJson(t,{})?.mcpServers;if(!o||typeof o!="object")return;let s=e.componentPath(t);for(let[i,a]of Object.entries(o)){if(e.truncated)return;let c=T_(a),l=tc(a,c);Object.assign(l,pn(a,e.home)??{});let u=nc(a);e.push({kind:"MCP_SERVER",name:i,path:s,content_hash:eo(i,l,u),origin:n,enabled:u,attributes:l})}}function fc(e,t,n){if(!P_(t)||!e.claimFile(t))return;let r;try{r=b_(t,"utf8")}catch{return}let o=e.componentPath(t),s=/^\[mcp_servers(?:\.(\w+)|\."([^"]+)"|\.'([^']+)')\]\s*$/gm,i;for(;(i=s.exec(r))!==null;){if(e.truncated)return;let a=i[1]??i[2]??i[3];if(!a)continue;let c=r.slice(i.index+i[0].length),l=c.search(/^\[mcp_servers(?:\.(?:\w+|"[^"]+"|'[^']+'))\]\s*$/m),u=l===-1?c:c.slice(0,l),p="unknown";/^\s*url\s*=/m.test(u)?p="http":/^\s*command\s*=/m.test(u)&&(p="stdio");let m=oc(u,p);Object.assign(m,dc(u,e.home)??{});let d=rc(u);e.push({kind:"MCP_SERVER",name:a,path:o,content_hash:eo(a,m,d),origin:n,enabled:d,attributes:m})}}import{existsSync as N_,readdirSync as v_}from"node:fs";import{join as G}from"node:path";var mc=50;function no(e,t,n,r){if(!N_(t))return{componentCount:0,expandTruncated:!1};let o=e.components.length,{expanded:s}=e.withPluginExpandCap(mc,()=>{ve(e,{dir:G(t,"skills"),kind:"SKILL",origin:n,enabled:r,nested:"SKILL.md"}),ve(e,{dir:G(t,"commands"),kind:"COMMAND",origin:n,enabled:r,extensions:[".md"]}),ve(e,{dir:G(t,"agents"),kind:"SUBAGENT",origin:n,enabled:r,extensions:[".md"]})});ze(e,G(t,"hooks","hooks.json"),n),ze(e,G(t,"hooks.json"),n);let i=e.components.length-o,a=s>=mc;return{componentCount:i,expandTruncated:a}}function ro(e,t){e.push({kind:"PLUGIN",name:t.pluginKey,path:t.rowPath,content_hash:t.contentHash,origin:"user",enabled:t.enabled,attributes:{...t.marketplace?{marketplace:t.marketplace}:{},...t.version?{version:t.version}:{},scope:t.scope,component_count:t.componentCount,...t.expandTruncated?{expand_truncated:!0}:{}}})}function gc(e){let t=G(e.home,".claude/plugins/installed_plugins.json"),n=e.readJson(t,{});if(!n)return;let r=n.plugins??{},s=e.readJson(G(e.home,".claude/settings.json"),{})?.enabledPlugins??{},i=e.componentPath(t);for(let[a,c]of Object.entries(r)){if(e.truncated)return;let l=Array.isArray(c)?c:[c],u=l[0]??{},p=s[a]===!0,m=a.includes("@")?a.split("@").slice(1).join("@"):"",d=typeof u.version=="string"?u.version:"",_=typeof u.scope=="string"?u.scope:"user",S=`plugin:${a}`,E=0,y=!1;for(let R of l)if(typeof R.installPath=="string"&&R.installPath.length>0){let j=no(e,R.installPath,S,p);E+=j.componentCount,y=y||j.expandTruncated}ro(e,{pluginKey:a,rowPath:i,enabled:p,scope:_,version:d||void 0,marketplace:m||void 0,componentCount:E,expandTruncated:y,contentHash:L(`${a}|${d}|${_}|${p}|${E}`)})}}function w_(e){let t=e,n="";try{let r=v_(e,{withFileTypes:!0}).filter(o=>o.isDirectory()).map(o=>o.name);if(r.length===1&&r[0])t=G(e,r[0]),n=r[0];else if(r.length>1){let o=[...r].sort(),s=o[o.length-1];s&&(t=G(e,s),n=s)}}catch{}return{installPath:t,version:n}}var M_=/^\d+$/;function L_(e){let t=e.filter(n=>!M_.test(n.pluginId));return t.length>0?t:e}function _c(e){let t=[{base:G(e.home,".cursor/plugins/local"),scope:"local"},{base:G(e.home,".cursor/plugins/cache"),scope:"cache"}];for(let{base:n,scope:r}of t)if(!e.truncated)for(let o of e.readEntries(n)){if(!o.isDirectory()||e.truncated)continue;if(r==="local"){let a=o.name,c=G(n,o.name),l=`plugin:${a}`,{componentCount:u,expandTruncated:p}=no(e,c,l,!0);ro(e,{pluginKey:a,rowPath:e.componentPath(c),enabled:!0,scope:"local",componentCount:u,expandTruncated:p,contentHash:L(`${a}|local|${u}`)});continue}let s=o.name,i=[];for(let a of e.readEntries(G(n,s))){if(!a.isDirectory())continue;let c=G(n,s,a.name),{installPath:l,version:u}=w_(c);i.push({pluginId:a.name,installPath:l,version:u})}for(let a of L_(i)){if(e.truncated)break;let c=`${a.pluginId}@${s}`,l=`plugin:${c}`,{componentCount:u,expandTruncated:p}=no(e,a.installPath,l,!0);ro(e,{pluginKey:c,rowPath:e.componentPath(a.installPath),enabled:!0,scope:"cache",version:a.version||void 0,marketplace:s,componentCount:u,expandTruncated:p,contentHash:L(`${c}|${a.version}|${u}`)})}}}function D_(e,t){let{layout:n,levelDir:r,origin:o,includeMachineWide:s}=t;for(let i of n.skillRoots)ve(e,{dir:Ve(r,i),kind:"SKILL",origin:o,enabled:!0,nested:"SKILL.md"});for(let i of n.dirs)ve(e,{dir:Ve(r,i.dir),kind:i.kind,origin:o,enabled:!0,extensions:i.extensions});for(let i of n.memory){let a=Va(i.map(c=>Ve(r,c)));a&&an(e,{absolutePath:a,kind:"MEMORY",origin:o,enabled:!0,name:U_(a)})}for(let i of Vs(n))ze(e,Ve(r,i),o);for(let i of n.mcpJson??[])pc(e,Ve(r,i),o);for(let i of n.mcpToml??[])fc(e,Ve(r,i),o);if(s){if(n.managed)for(let i of Lt(n.managed,process.platform,e.home))i.toLowerCase().endsWith(".json")&&ze(e,i,o);n.plugins==="claude"?gc(e):n.plugins==="cursor"&&_c(e)}}function hc(e,t){try{let n=new sn(e,{pathMode:t.pathMode,maxEntries:t.maxEntries});for(let r of t.layouts)D_(n,{layout:r,levelDir:t.levelDir,origin:t.origin,includeMachineWide:t.includeMachineWide});return{scopeRef:t.scopeRef,anchor:t.levelDir,components:n.components,truncated:n.truncated}}catch{return}}function oo(e,t,n={}){let r={},o=n.shouldWalk;if(o===void 0||o("user","")){let c=hc(t,{layouts:Object.values(He),levelDir:t,origin:"user",includeMachineWide:!0,pathMode:"home-relative",maxEntries:_e,scopeRef:""});c&&(r.user=c)}let s=n.inGitRepo===!0,i=null,a=n.launchCwd;if(a!==void 0){let c=Object.values(ye),l=Vr({launchCwd:a,gitRoot:n.gitRoot,inGitRepo:s,remote:n.remote,home:t,hasProjectSpec:u=>Js(c,u)});i=l.parentRel;for(let u of l.anchors){let p=Lr(u.dir);if(o!==void 0&&!o(u.scope,p))continue;let m=hc(t,{layouts:c,levelDir:u.dir,origin:u.scope,includeMachineWide:!1,pathMode:"tilde",maxEntries:Wr,scopeRef:p});m&&(r[u.scope]=m)}r.parent||(i=null)}return{scopes:r,parentRel:i,cwdInGitRepo:s}}function so(e,t,n={}){let r=n.truncated===!0,o=ft(e),s=new Set(e.map(u=>W(u.path,u.name)));if(n.forceFull===!0||t===void 0)return{hash:o,count:e.length,truncated:r,full:!0,upserts:e,removed:[],unchanged:!1};let a=[],c=t;for(let u of e){let p=W(u.path,u.name);c[p]!==u.content_hash&&a.push(u)}let l=[];if(!r){for(let u of Object.keys(c))if(!s.has(u)){let p=Pa(u);p&&l.push(p)}}return{hash:o,count:e.length,truncated:r,full:!1,upserts:a,removed:l,unchanged:a.length===0&&l.length===0}}var Ec=2*1024*1024,H_=new Set(["HOOK","MCP_SERVER","PLUGIN"]);function io(e,t,n){let r=new Set(t.map(s=>W(s.path,s.name))),o=[];for(let s of e)s.text!==void 0&&(n.has(s.content_hash)||r.has(W(s.path,s.name))||o.push(s));return o}function ao(e,t,n){let r=new Set(e);for(let s of t)r.add(s);let o=new Set(n.map(s=>s.content_hash));return[...r].filter(s=>o.has(s))}function Sc(e){return Buffer.byteLength(JSON.stringify(e),"utf8")}function yc(e){if(e.text===void 0)return e;let{text:t,...n}=e;return n}function co(e,t=Ec){let n=[],r=[];for(let u of e)H_.has(u.kind)?n.push(u):r.push(u);r.sort((u,p)=>(u.text?.length??0)-(p.text?.length??0));let o=[...n,...r],s=[],i=2,a=0,c=0,l=[];for(let u of o){let p=s.length>0?1:0,m=Sc(u)+p;if(i+m<=t){s.push(u),i+=m,u.text!==void 0&&l.push(u.content_hash);continue}if(u.text!==void 0){let d=yc(u),_=Sc(d)+p;if(i+_<=t){s.push(d),i+=_,a+=1;continue}}c+=1}return{components:s,textDeferredCount:a,droppedCount:c,textHashesSent:l}}function uo(e,t){return t.size===0?e:e.map(n=>n.text===void 0||!t.has(n.content_hash)?n:yc(n))}var F_=["user","cwd","repo","parent"];function lo(e){let{collected:t,cacheFor:n,nowMs:r,maxBytes:o}=e,s=[];for(let b of F_){let T=t.scopes[b];if(!T)continue;let U=n(b,T.scopeRef),D=U.components,B=so(T.components,D,{forceFull:D===void 0,truncated:T.truncated}),Q=new Set(U.textHashes),H=io(T.components,B.upserts,Q),v=uo([...B.upserts,...H],Q);s.push({scope:b,walk:T,delta:B,outgoing:v,outgoingKeys:new Set(v.map(C=>W(C.path,C.name))),deliveredTextHashes:Q,cachedComponents:D})}let i=s.flatMap(b=>b.outgoing),a=co(i,o),c=new Set(a.components.map(b=>W(b.path,b.name))),l=[],u=[],p=[],m=[],d=[],_=[],S=[];for(let b of s){let{scope:T,walk:U,delta:D}=b;_.push(...U.components),l.push(T);let B=a.components.filter(C=>b.outgoingKeys.has(W(C.path,C.name))),Q=[...b.outgoingKeys].some(C=>!c.has(C)),H=D.truncated||Q;H?p.push(T):D.full&&u.push(T),m.push(...B),!D.full&&!H&&d.push(...D.removed);let v=D.full?{}:{...b.cachedComponents??{}};if(!H)for(let C of D.removed)delete v[W(C.path,C.name)];for(let C of B)v[W(C.path,C.name)]=C.content_hash;S.push({scope:T,scopeRef:U.scopeRef,components:v,textHashes:ao(b.deliveredTextHashes,B.filter(C=>C.text!==void 0).map(C=>C.content_hash),U.components),collectedAtMs:r,included:B.length>0||D.removed.length>0&&!H||D.full})}let E={user_spec_hash:ft(_),user_spec_count:_.length,user_spec_truncated:p.length>0};l.length>0&&(E.user_spec_scopes=l,E.user_spec_full_scopes=u,E.user_spec_truncated_scopes=p,E.user_spec_cwd_in_git_repo=t.cwdInGitRepo),u.length>0&&u.length===l.length&&(E.user_spec_full=!0),m.length>0&&(E.user_spec=m),d.length>0&&(E.user_spec_removed=d),a.textDeferredCount>0&&(E.user_spec_text_deferred=a.textDeferredCount);let y=t.scopes.cwd;y&&(E.user_spec_cwd_scope_ref=y.scopeRef);let R=t.scopes.repo;R&&(E.user_spec_repo_scope_ref=R.scopeRef);let j=t.scopes.parent;return j&&(E.user_spec_parent_scope_ref=j.scopeRef,t.parentRel&&(E.user_spec_parent_rel=t.parentRel)),{fields:E,scopes:S}}var yt={cwd:"cwd_spec",repo:"repo_spec",parent:"parent_spec"};function fn(e){return e==="cwd"||e==="repo"||e==="parent"}function Et(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function po(e){return!Et(e)||!Et(e.components)||!Object.values(e.components).every(t=>typeof t=="string")||!Array.isArray(e.text_hashes)||!e.text_hashes.every(t=>typeof t=="string")?!1:typeof e.collected_at_ms=="number"&&Number.isFinite(e.collected_at_ms)}function Rc(e){return j_(e)}function Cc(e){return $_(e)}function Ic(e){return B_(e)}function j_(e){if(!Et(e))return;let t={};for(let[n,r]of Object.entries(e))typeof r=="string"&&(t[n]=r);return t}function $_(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function fo(e,t){if(!Et(e))return;let n=e[t];return po(n)?n:void 0}function B_(e){if(!Et(e))return{};let t={};for(let[n,r]of Object.entries(e))po(r)&&(t[n]=r);return t}function mo(e,t=20){let n=[];for(let[r,o]of Object.entries(e))po(o)&&n.push([r,o]);return n.sort((r,o)=>o[1].collected_at_ms-r[1].collected_at_ms),Object.fromEntries(n.slice(0,t))}var V_=200,Ac=200,W_=["allow","deny","ask"],J_=/(?<=^|[\s(,=:])(?:~|[A-Za-z]:)?[\\/][^\s,)]+/g,_o="<path>",Y_=new RegExp(`${_o}(?:\\s+[A-Za-z.][^\\s,)]*[\\\\/][^\\s,)]*)+`,"g");function X_(e){let t=e.replace(J_,_o).replace(Y_,_o);return t.length>Ac?`${t.slice(0,Ac)}...`:t}function gn(e){let t=F(e,{}),n=[];for(let r of W_)for(let o of t.permissions?.[r]??[])typeof o=="string"&&o.length>0&&n.push({key:X_(o),mode:r});return{model:t.model??"",permissionKeys:n}}function Z_(e){let{serverManaged:t,fileBased:n}=Fn(process.platform,e),r=gn(t);if(r.model||r.permissionKeys.length>0)return r;let o="",s=[];for(let i of n){let a=gn(i);a.model&&(o=a.model),s.push(...a.permissionKeys)}return{model:o,permissionKeys:s}}function q_(e){let t=new Set,n=[];for(let r of e){let o=`${r.mode}\0${r.key}`;t.has(o)||(t.add(o),n.push(r))}return n}var Q_=10,eh="self-config-cache.json",Oc=2;function _n(){return I("EV_AI_HOOK_USER_SPEC")?.toLowerCase()==="off"}function th(){return I("EV_AI_HOOK_CWD_SPEC")?.toLowerCase()==="off"}function nh(e,t=Date.now()){return e===void 0||!Number.isFinite(e)?!0:t-e>=et}var rh={claude:["claude"],cursor:["agent","cursor-agent"],codex:["codex"]};async function oh(e,t=M){let n=rh[e];if(!n||n.length===0)return null;let r=async o=>{let s=n[o];if(s===void 0)return null;let a=((await t(s,["--version"],2e3)).split(`
45
- `)[0]??"").trim();return a||r(o+1)};return r(0)}function sh(e=kc()){return We(e,".ev-ai","agent-hook",eh)}function ih(e){let n=[...e].sort((r,o)=>r.name.localeCompare(o.name)).map(r=>`${r.name}:${r.size}`).join(`
46
- `);return L(n)}function mn(e,t,n=!1){let r=ih(e),o=e.length;return t===r?n?{hash:r,count:o,truncated:n}:{hash:r,count:o}:n?{hash:r,count:o,entries:e,truncated:n}:{hash:r,count:o,entries:e}}function go(e,t,n=[]){let r=0,o=!1,s=new Set;for(let i of[...t.map(a=>We(e,a)),...n]){let a=z_(i);if(s.has(a))continue;s.add(a);let c=Gn(i);c.present&&(o=!0,r+=c.size)}return o?{present:!0,size:r}:{present:!1,size:0}}function ah(e){return K_(e)?$(G_(e,"utf8"),{}):{}}function ch(e,t){try{te(e,`${JSON.stringify(t)}
47
- `)}catch(n){let r=n instanceof Error?n.message:String(n);f(`WARN: self-config cache write failed open: ${r}`)}}function uh(e,t,n){if(t==="user")return e.user_spec_collected_at_ms;if(fn(t))return fo(e[yt[t]],n)?.collected_at_ms}function lh(e,t,n){if(t==="user")return{components:Rc(e.user_spec_components),textHashes:Cc(e.user_spec_text_hashes)};if(!fn(t))return{components:void 0,textHashes:[]};let r=fo(e[yt[t]],n);return r?{components:r.components,textHashes:r.text_hashes}:{components:void 0,textHashes:[]}}function dh(e,t,n,r){let o={...e,send_count:n};for(let s of Object.keys(t)){let i=t[s];i.entries!==void 0&&(o[s]=i.hash)}if(r){o.user_spec_layout_version=Oc,r.home&&(o.user_spec_collected_at_ms=r.home.collectedAtMs,r.home.included&&(o.user_spec=r.hash,o.user_spec_components=r.home.components),o.user_spec_text_hashes=r.home.textHashes);for(let s of r.project){if(!fn(s.scope))continue;let i=yt[s.scope],a=Ic(o[i]),c=a[s.scopeRef];a[s.scopeRef]={components:s.included?s.components:c?.components??{},text_hashes:s.textHashes,collected_at_ms:s.collectedAtMs},o[i]=mo(a)}}return o}async function xc(e,t=process.cwd(),n=kc(),r={}){let o=e==="claude",s=r.gitRoot??t,i=await oh(e),a="",c=[];if(o){let H=Z_(n),v=gn(We(n,".claude/settings.json")),C=gn(We(t,".claude/settings.local.json"));a=H.model||C.model||v.model,c=q_([...H.permissionKeys,...v.permissionKeys,...C.permissionKeys]).slice(0,V_)}let l={present:!1,size:0},u=H=>{let v=[],C=!1;for(let Y of H){let kt=Wo(We(n,Y));if(v=v.concat(kt.entries),C=C||kt.truncated,v.length>=_e){v=v.slice(0,_e),C=!0;break}}return{entries:v,truncated:C}},p=sh(n),m=ah(p),d=m[e]??{},_=(d.send_count??0)+1,S=_>0&&_%Q_===0,E=H=>S?void 0:d[H],y=u(Ce.skills),R=u(Ce.subagents),j=u(Ce.commands),b=u(Ce.rules),T={skills:mn(y.entries,E("skills"),y.truncated),subagents:mn(R.entries,E("subagents"),R.truncated),commands:mn(j.entries,E("commands"),j.truncated),rules:mn(b.entries,E("rules"),b.truncated)},U={runner_platform:e,config_scope:"user",cli_version:i,claude_version:o?i:null,model:o&&a||null,permission_keys:c,user_scope:{skills:T.skills,subagents:T.subagents,commands:T.commands,rules:T.rules,memory:go(n,Ce.memory),settings:go(n,Ce.settings,Ys(n)),mcp:go(n,Ce.mcp)},local_settings:o?Gn(We(t,".claude/settings.local.json")):l},D=null,B=r.nowMs??Date.now();if(!_n()){let H=d.user_spec_layout_version!==Oc,v=oo(e,n,{launchCwd:th()?void 0:r.launchCwd,gitRoot:s,inGitRepo:r.inGitRepo,remote:r.remote,shouldWalk:(C,Y)=>H||nh(uh(d,C,Y),B)});if(Object.keys(v.scopes).length>0){let C=lo({collected:v,cacheFor:(Y,kt)=>H?{components:void 0,textHashes:[]}:lh(d,Y,kt),nowMs:B});Object.assign(U,C.fields),D={hash:C.fields.user_spec_hash,home:C.scopes.find(Y=>Y.scope==="user")??null,project:C.scopes.filter(Y=>Y.scope!=="user")}}}let Q=dh(d,T,_,D);return{config:U,commit:()=>{m[e]=Q,ch(p,m)}}}import{homedir as Hh}from"node:os";import{join as Mc}from"node:path";import{open as Pc,mkdir as ph,readFile as fh,readdir as mh,rename as gh,stat as _h,rmdir as hh,unlink as Sh,utimes as Eh}from"node:fs/promises";var hn=new WeakMap;function yh(e){if(e&&typeof e=="object"&&"code"in e)return e}function ho(e){return yh(e)?.code==="ENOENT"}async function Tc(e,t){try{return await e.readdir(t)}catch(n){if(ho(n))return[];throw n}}function Nc(){return{async open(e,t){let n=await Pc(e,t),r={path:e};return hn.set(r,n),r},async write(e,t){let n=bc(e),r=typeof t=="string"?Buffer.from(t,"utf8"):t;await n.write(r)},async fsync(e){await bc(e).sync()},async close(e){let t=hn.get(e);hn.delete(e),t&&await t.close()},rename:gh,async readdir(e){return mh(e)},readFile:fh,async stat(e){let t=await _h(e);return{mtimeMs:t.mtimeMs,size:t.size,isDirectory:()=>t.isDirectory()}},async mkdir(e,t){await ph(e,t)},unlink:Sh,rmdir:hh,utimes:Eh,async fsyncDir(e){if(process.platform==="win32")return;let t=await Pc(e,"r");try{await t.sync()}finally{await t.close()}}}}function bc(e){let t=hn.get(e);if(!t)throw new Error("closed");return t}function Sn(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}import{join as En}from"node:path";function Rh(e){return En(e,".ev-ai","agent-hook","js","signed-v1")}function Ch(e){return En(Rh(e),"scopes")}function vc(e,t){return En(Ch(e),t)}function wc(e){return En(e,"attempts")}function So(e){return String(e).padStart(10,"0")}var Ih=/^(\d{10})$/,Ah=/^(\d{10})\.done$/,kh=/^[0-9a-f]{128}$/,Oh=64;async function Hc(e,t,n=!1){let r=wc(t),o=await Tc(e,r),s=new Map,i=new Map,a=Lc(o,Ih),c=Lc(o,Ah),l=async m=>{let d=await Dc(e,Mc(r,xh(m)));return d&&s.set(m,{record:bh(d.value),mtimeMs:d.mtimeMs}),d!==void 0},u=async m=>{let d=Th((await Dc(e,Mc(r,Ph(m))))?.value);return d&&i.set(m,d),d!==void 0};if(!n)return await Promise.all([...a.map(l),...c.map(u)]),{claims:s,dones:i};await Promise.all([Uc(a,l),Uc(c,u)]);let p=Rt(s);return p<Rt(i)&&c.includes(p)&&await u(p),{claims:s,dones:i}}function Lc(e,t){return e.flatMap(n=>{let r=t.exec(n);return r?[Number(r[1])]:[]})}async function Uc(e,t){for(let n of[...e].sort((r,o)=>o-r))if(await t(n))return}function Rt(e){let t=0;for(let n of e.keys())n>t&&(t=n);return t}function Fc(e){if(e.record!=="empty"&&e.record.started_at){let t=Date.parse(e.record.started_at);if(Number.isFinite(t))return t}return e.mtimeMs}function xh(e){return So(e)}function Ph(e){return`${So(e)}.done`}async function Dc(e,t){let n;try{n=await e.stat(t)}catch(o){if(ho(o))return;throw o}let r=n.mtimeMs;if(n.size===0||n.size>br)return{mtimeMs:r};try{let o=await e.readFile(t);return o.byteLength===0||o.byteLength>br?{mtimeMs:r}:{mtimeMs:r,value:JSON.parse(o.toString("utf8"))}}catch{return{mtimeMs:r}}}function bh(e){if(!Sn(e))return"empty";let t={};return typeof e.started_at=="string"&&(t.started_at=e.started_at),(e.owner==="bootstrap"||e.owner==="refresh")&&(t.owner=e.owner),e.resync===!0&&(t.resync=!0),t}function Th(e){if(!Sn(e))return;let t=e;if(typeof t.finished_at!="string"||typeof t.outcome!="string"||typeof t.interval_s!="number"||!Number.isFinite(t.interval_s))return;let n=Nh(t.selection);if(n)return{finished_at:t.finished_at,interval_s:t.interval_s,outcome:t.outcome,selection:n}}function Nh(e){if(!Sn(e))return;let t=e;if(t.kind==="bundled")return t.why==="server"||t.why==="bootstrap_failed"?{kind:"bundled",why:t.why}:void 0;if(t.kind==="cached"&&typeof t.digest=="string"&&kh.test(t.digest)&&typeof t.version=="string"&&t.version.length>0&&typeof t.sha512=="string"&&vh(t.sha512)===t.digest)return{kind:"cached",digest:t.digest,version:t.version,sha512:t.sha512}}function vh(e){if(e.length===0||!/^[A-Za-z0-9+/]+=*$/.test(e))return;let t=Buffer.from(e,"base64");if(!(t.byteLength!==Oh||t.toString("base64")!==e))return t.toString("hex")}function Uh(e){return e==="bootstrap"?3e3:6e4}function Dh(e,t){let n=Rt(e.claims);if(n===0)return;let r=Rt(e.dones),o=e.claims.get(n),s=e.dones.get(n);if(o&&!s){let a=Fc(o),c=o.record==="empty"?void 0:o.record.owner,l=Uh(c)+3e4;if(t-a>l)return{n,latest_claim:n,outcome:"incomplete",finished_at:null,selection_version:jc(e.dones.get(r)?.selection)}}if(r===0)return;let i=e.dones.get(r);if(i)return{n:r,latest_claim:n,outcome:i.outcome,finished_at:i.finished_at,selection_version:jc(i.selection)}}async function $c(e,t,n){try{let r=await Hc(Nc(),vc(e,t),!0);return Dh(r,n)}catch{return}}function jc(e){return e?.kind==="cached"&&typeof e.version=="string"?e.version:null}async function Bc(e=Hh()){let t=Tr()?.launcherScope;if(!t)return{};let n=await $c(e,t,Date.now());return n?{launcher_scope:t,launcher_attempt:n}:{launcher_scope:t}}function Je(e,t,n){let r={installation_id:n.installationId};n.platformAgentId&&(r.platform_agent_id=n.platformAgentId),n.sessionId&&(r.session_id=n.sessionId),n.turnId&&(r.turn_id=n.turnId);let o={schema_version:ge,event:e,timestamp:Ut(),session_id:n.sessionId||null,turn_id:n.turnId||null,installation_id:n.installationId,platform:n.runnerPlatform,platform_agent_id:n.platformAgentId||null,runner_event:n.runnerEvent||null,agent_hook_version:se,host_arch:process.arch,node_version:process.version,correlation:r,payload:t},s=Tr();return s&&(o.launcher_version=s.launcherVersion,o.hook_source=s.hookSource,o.hook_fallback_reason=s.fallbackReason??null,o.launcher_scope_match=ca(n.collectorUrl,s.launcherScope)),e==="session_start"&&(n.launcher_scope&&(o.launcher_scope=n.launcher_scope),n.launcher_attempt&&(o.launcher_attempt=n.launcher_attempt)),o}import{existsSync as Gc}from"node:fs";import{spawn as zc}from"node:child_process";import{fileURLToPath as jh}from"node:url";import{gzipSync as Fh}from"node:zlib";function Eo(e){return I("EV_AI_HOOK_COMPRESS")==="off"?{body:e}:Buffer.byteLength(e,"utf8")<Do?{body:e}:{body:Fh(Buffer.from(e,"utf8")),contentEncoding:"gzip"}}function yn(e){let t={"Content-Type":"application/json"};return e!==void 0&&(t["Content-Encoding"]=e),t}function Kc(e){return typeof e=="string"?Buffer.byteLength(e,"utf8"):e.length}var Ct="__post",Rn="__work";async function $h(e,t,n={}){if(I("EV_AI_HOOK_USER_SPEC")?.toLowerCase()==="off")return e;let r=await Dr(n.gitRoot??process.cwd(),M,process.env,{runnerPlatform:t,home:n.home}),o=e.self_config,s=o!==null&&typeof o=="object"&&!Array.isArray(o)?o:{};return{...e,self_config:{...s,runner_platform:typeof s.runner_platform=="string"?s.runner_platform:t,operator:r}}}function Bh(e,t){let n=e.payload,r=n&&typeof n=="object"&&!Array.isArray(n)?Object.keys(n):[],o=e.correlation&&typeof e.correlation=="object"?Object.keys(e.correlation):[];return JSON.stringify({event:e.event,schema_version:e.schema_version,agent_hook_version:e.agent_hook_version,host_arch:e.host_arch,node_version:e.node_version,build_ms:e.build_ms,body_bytes:t,correlation_keys:o,payload_keys:r})}function Vc(e){switch(e){case"session_start":return wo;case"session_end":return Mo;case"tool_invoked":case"skill_invoked":return Ln;default:return Ln}}function Kh(e,t,n){return`${JSON.stringify({url:e,timeoutMs:t})}
48
- ${n}`}function Wc(e,t=[],n=process.execPath,r=import.meta.url,o=Gc){if(vt(n))return{command:n,args:[e,...t]};let s=jh(r);return o(s)?{command:n,args:[s,e,...t]}:{command:n,args:[e,...t]}}function Gh(e=process.execPath,t=import.meta.url,n=Gc){return Wc(Ct,[],e,t,n)}function zh(e){let t=e.indexOf(`
49
- `);if(t<0)return null;let n;try{n=JSON.parse(e.slice(0,t))}catch{return null}return{meta:n,body:e.slice(t+1)}}async function Cn(e,t=fetch){let n=await e(),r=zh(n);if(!r)return;let{meta:o,body:s}=r,i=Eo(s),a=yn(i.contentEncoding);try{await t(o.url,{method:"POST",headers:a,body:i.body,signal:AbortSignal.timeout(Number(o.timeoutMs))})}catch{}}async function Vh(e,t,n,r=fetch){let o=Vc(e),s=Eo(t),i=yn(s.contentEncoding),a=Kc(s.body);f(`POST event=${e} url=${Nt(n)} size=${a} encoding=${s.contentEncoding??"identity"} platform=${process.platform}`);let c=Date.now();try{let l=await r(n,{method:"POST",headers:i,body:s.body,signal:AbortSignal.timeout(o)});if(!l.ok&&s.contentEncoding==="gzip"&&(l.status===400||l.status===415)){try{await l.text()}catch{}f(`POST gzip rejected http=${l.status} \u2014 retrying uncompressed`),l=await r(n,{method:"POST",headers:yn(),body:t,signal:AbortSignal.timeout(o)})}let u=Date.now()-c;if(l.ok)return f(`POST outcome=ok elapsed_ms=${u} http=${l.status}`),!0;let p=(await l.text()).slice(0,200).replace(/[\n\r]/g,"");return f(`POST outcome=fail elapsed_ms=${u} http=${l.status} body=${p}`),!1}catch(l){let u=Date.now()-c,p=l instanceof Error?l.message:String(l);return f(`POST outcome=fail elapsed_ms=${u} http=000 body=${p}`),!1}}async function Jc(e,t,n,r,o){try{let s=r(e,t,{detached:!0,stdio:["pipe","ignore","ignore"],windowsHide:!0});s.on("error",()=>{}),s.stdin.on("error",()=>{});let i=!1;return await new Promise(a=>{let c=setTimeout(()=>{if(!i){f(`WARN: ${o} stdin handoff timed out \u2014 continuing fail-open`);try{s.stdin.destroy()}catch{}}a()},Lo),l=()=>{i=!0,clearTimeout(c),a()};s.stdin.end(n,()=>l()),s.stdin.once("error",()=>l())}),s.unref(),s}catch(s){let i=s instanceof Error?s.message:String(s);return f(`WARN: ${o} spawn failed open: ${i}`),null}}async function Wh(e,t,n,r=zc,o=Gh){let s=Vc(e),i=Kh(n,s,t),{command:a,args:c}=o();return Jc(a,c,i,r,"detached post")}async function Yc(e,t,n=zc,r=Wc){let{command:o,args:s}=r(Rn,t);return Jc(o,s,e,n,"detached work")}async function Ye(e,t,n,r,o,s,i){if(!o)return f("WARN: collector URL missing \u2014 pass --url on the hook command or set collector_url in manifest"),!1;if(!qe(o))return f(`WARN: collector URL blocked (https required): ${Nt(o)}`),!1;let a=await $h(t,n.runnerPlatform,i),c=r(e,a,{...n,collectorUrl:o});s!==void 0&&(c.build_ms=Math.max(0,Date.now()-s));let l=`${JSON.stringify(c)}
50
- `,u=I("EV_AI_HOOK_DEBUG");u==="full"?f(`DEBUG envelope=${JSON.stringify(c)}`):u==="1"&&f(`DEBUG summary=${Bh(c,Buffer.byteLength(l,"utf8"))}`);let p=process.argv.includes(Rn),m=I("EV_AI_HOOK_SYNC")==="1";return Zt(n.runnerEvent,n.runnerPlatform)||p||m?Vh(e,l,o):(await Wh(e,l,o),!1)}import{createReadStream as Jh}from"node:fs";import{stat as Yh}from"node:fs/promises";import{basename as Xh,resolve as Zh}from"node:path";import{createInterface as qh}from"node:readline";var Qh=1024*1024;function eS(e){let t=e.replace(/\\/g,"/");return t.includes("/.claude/projects/")&&Xh(t).endsWith(".jsonl")}async function Xc(e){if(!e||!eS(e))return null;try{let t=Zh(e),n=await Yh(t);if(!n.isFile())return null;let r=Math.max(0,n.size-Qh),o=[],s=qh({input:Jh(t,{encoding:"utf8",start:r}),crlfDelay:1/0});for await(let i of s)i.length!==0&&o.push(i);r>0&&o.length>0&&o.shift();for(let i=o.length-1;i>=0;i--){let a=o[i];if(a)try{let c=JSON.parse(a);if(c.type!=="assistant")continue;let l=c.message;if(!l||typeof l!="object")continue;let u=l.model;if(typeof u=="string"&&u.length>0)return u}catch{continue}}return null}catch{return null}}function An(e){return{sessionId:e.sessionId,turnId:e.turnId,installationId:e.manifest.installationId,runnerPlatform:e.runnerPlatform,platformAgentId:e.platformAgentId,runnerEvent:e.runnerEvent}}function At(e,t){return{gitRoot:e.manifest.gitRoot,...t?{home:t}:{}}}function yo(e){return{gitRoot:e.manifest.gitRoot,inGitRepo:e.manifest.inGitRepo,runnerEvent:e.runnerEvent}}async function Qc(e){let t=Date.now();await pS(e);let{gitRoot:n}=e.manifest;await kn(e,n);let r=yo(e);return{buildStartedAtMs:t,gitRoot:n,hookInput:rn(e.hookInput,e.manifest.manifest,r),envelopeFields:An(e),launchCwd:Gr(e.hookInput,r),home:nS()}}function Zc(e){try{return V(tS(e))}catch{return null}}function eu(e){return e.startsWith("/")||/^[A-Za-z]:\//.test(e)}function qc(e,t){let n=e.replaceAll("\\","/");if(!eu(n))return null;let r=V(e),o=V(t),s=Zc(e)??r,i=Zc(t)??o;return s.startsWith(`${i}/`)?s.slice(i.length+1):r.startsWith(`${o}/`)?r.slice(o.length+1):null}function rS(e,t,n){if(!e)return{repositorySourcePath:null,userSourcePath:null};let r=e.replaceAll("\\","/"),s=qc(e,t)??(eu(r)?null:r),i=qc(e,n);return{repositorySourcePath:s,userSourcePath:i}}function In(e,t,n,r,o,s){let{repositorySourcePath:i,userSourcePath:a}=rS(e,t,n),c=i??a,l=c===null?null:o(c),u=l!==null&&c!==null?oS({installableKind:r,sourcePath:c,nativeKey:l,inRepository:i!==null,platformAgentId:s.platformAgentId,installationId:s.manifest.installationId}):void 0;return{sourcePath:c,nativeKey:l,componentReference:u}}function oS(e){try{let t=e.inRepository?aS(e.platformAgentId,e.sourcePath):(0,O.installationRootExternalKey)(e.installationId,(0,O.userConfigRootFromPath)(e.sourcePath));return t?(0,O.buildComponentReference)({installationRootExternalKey:t,installableKind:e.installableKind,sourcePath:e.sourcePath,nativeKey:e.nativeKey}):void 0}catch{return}}function Ro(e,t,n){return Ye("tool_invoked",{...n,success:null,duration_ms:null,hook_input:t.hookInput},t.envelopeFields,Je,e.manifest.collectorUrl,t.buildStartedAtMs,At(e,t.home))}function sS(e){return Fi(e.runnerEvent,e.runnerPlatform)?[]:ni(e.hookInput)}function iS(e,t){return Ro(e,t,{})}var tu=new Set([...Object.values(Ne),".github"]);function aS(e,t){let n=e.indexOf(":");if(n<=0)return null;let r=e.slice(0,n),o=t.replaceAll("\\","/").split("/").filter(Boolean),s=o.findIndex(i=>tu.has(i));return s<0?null:`${r}:${o.slice(0,s+1).join("/")}`}function cS(e,t,n,r,o,s,i){if(e===null||t===null||!(i!==null||/^mcp__.+?__.+$/i.test(e)||/^MCP:[^:]+:.+$/i.test(e)||/^MCP:.+__.+$/i.test(e)||e.toLowerCase()===`mcp:${t.toLowerCase()}`))return;let c=s.find(_=>_.name.toLowerCase()===t.toLowerCase()),l=c?.sourcePath??(c?.source==="claude_json_user"?".claude.json":c?.source==="cursor_mcp_user"?".cursor/mcp.json":c?.source==="codex_toml_user"||c===void 0&&o==="codex"?".codex/config.toml":void 0);if((c?.scope==="user"||c?.source==="claude_json_user"||c?.source==="cursor_mcp_user"||c?.source==="codex_toml_user"||c===void 0&&o==="codex")&&l)try{let _=(0,O.userConfigRootFromPath)(l);return(0,O.buildComponentReference)({installationRootExternalKey:(0,O.installationRootExternalKey)(r,_),installableKind:O.ComponentKind.INTERFACE,sourcePath:l,nativeKey:c?.name??t})}catch{return}if(n===null)return;let p=n.indexOf(":");if(p<=0||p===n.length-1)return;let m=n.slice(p+1),d=m.replaceAll("\\","/").split("/").at(-1);if(!(d===void 0||!tu.has(d)))try{return(0,O.buildComponentReference)({installationRootExternalKey:n,installableKind:O.ComponentKind.INTERFACE,sourcePath:m,nativeKey:t})}catch{return}}function uS(...e){for(let t of e)if(t)return t;return null}function J(e,t,n){if(e.status==="fulfilled")return e.value;let r=e.reason instanceof Error?e.reason.message:String(e.reason);return f(`WARN: ${n} failed open: ${r}`),t}function lS(e){let t={present:!1,size:0},n={hash:"",count:0};return{config:{runner_platform:e,config_scope:"user",cli_version:null,claude_version:null,model:null,permission_keys:[],user_scope:{skills:n,subagents:n,commands:n,rules:n,memory:t,settings:t,mcp:t},local_settings:t},commit:()=>{}}}function dS(e,t){return{runner_platform:e,config_scope:"user",...t?{operator:t}:{}}}var Me=new Set,It=null;async function pS(e){if(_n())return;let t=e.manifest.installationId,n=e.manifest.installationStorePath;if(Me.has(t))return;if(!Fr(n)){Me.add(t);return}let r=nt({sessionId:e.sessionId,hostname:rt()});if(Ta(r)){if(It){await It;return}It=(async()=>{if(Me.has(t)||!Fr(n)){Me.add(t);return}if(!ps(n)){Me.add(t);return}let o=!1;try{let s=Date.now(),{gitRoot:i}=e.manifest,a=String(e.runnerPlatform),[c,l,u,p,m]=await Promise.allSettled([ct(i),Wn(),Nr(r),Jn(),Hr({gitRoot:i,installationStorePath:n,forceResend:!1,runnerPlatform:a})]),d=J(c,null,"gitSnapshot"),_=J(l,"","detectVirt"),S=J(u,null,"probeCloud"),E=J(p,{},"hostEnv"),y=J(m,{commit:()=>{}},"resolveOperatorForSend");await kn(e,i,d);let R={identity:{host:rt(),context:r,virt:_||null,cloud:S,git:d},host_env:E,env_vars:vr(),self_config:dS(a,y.operator),run_meta:{trigger:"cloud_identity_bootstrap"}};o=!!await Ye("session_start",R,An(e),Je,e.manifest.collectorUrl,s,At(e)),o&&(y.commit(),Me.add(t))}finally{fs(n)}})().finally(()=>{It=null}),await It}}async function kn(e,t,n){try{let r=n===void 0?await ct(t):n;e.platformAgentId=await ki(e.manifest.manifest,e.platformAgentId,String(e.runnerPlatform),t,r,e.manifest.installationStorePath,e.manifest.repoKey)}catch(r){let o=r instanceof Error?r.message:String(r);f(`WARN: derivePlatformAgentId failed open: ${o}`)}}async function fS(e){let t=Date.now(),{gitRoot:n}=e.manifest,r=nt({sessionId:e.sessionId,hostname:rt()}),o=String(e.runnerPlatform),s=yo(e),i=Gr(e.hookInput,s),a=ct(n),c=Bc().catch(()=>({})),l=_n()?Promise.resolve({commit:()=>{}}):Hr({gitRoot:n,installationStorePath:e.manifest.installationStorePath,forceResend:!1,runnerPlatform:o}),[u,p,m,d,_,S,E]=await Promise.allSettled([a,Wn(),Nr(r),Jn(),Ar(e.manifest.manifest,n,o),a.catch(()=>null).then(Y=>xc(o,n,void 0,{installationStorePath:e.manifest.installationStorePath,gitRoot:n,launchCwd:i,inGitRepo:e.manifest.inGitRepo,remote:Y?.remote??null})),l]),y=J(u,null,"gitSnapshot"),R=J(p,"","detectVirt"),j=J(m,null,"probeCloud"),b=J(d,{},"hostEnv"),T=J(_,[],"mcpDeclared"),U=J(S,lS(o),"selfConfig"),D=J(E,{commit:()=>{}},"resolveOperatorForSend"),B=U.config;await kn(e,n,y);let Q=h(e.hookInput,"model");Q&&(B.model=Q);let H={identity:{host:rt(),context:r,virt:R||null,cloud:j,git:y},host_env:b,env_vars:vr(),mcp:{declared:T},self_config:B,run_meta:{trigger:e.hookSource||"startup"},hook_input:rn(e.hookInput,e.manifest.manifest,{...s,launchCwd:i})},v=await c;await Ye("session_start",H,{...An(e),...v},Je,e.manifest.collectorUrl,t,At(e))&&(U.commit(),D.commit(),Me.add(e.manifest.installationId))}async function mS(e){let t=Date.now(),{gitRoot:n}=e.manifest;await kn(e,n);let r=e.runnerEvent.toLowerCase(),o=uS(h(e.hookInput,"status"),h(e.hookInput,"stop_reason"),h(e.hookInput,"reason"),dt(h(e.hookInput,"error")),r==="stop"?ae(e.hookInput,"is_interrupt")===!0?"interrupted":"completed":""),s=e.runnerPlatform==="claude"?await Xc(h(e.hookInput,"transcript_path")):null,i=rn(e.hookInput,e.manifest.manifest,yo(e));s&&(i.model=s),r!=="stopfailure"&&!La(e.manifest.manifest)&&i.last_assistant_message===void 0&&(i.last_assistant_message=""),await Ye("session_end",{status:o,...s?{model:s}:{},hook_input:i},An(e),Je,e.manifest.collectorUrl,t,At(e))}function nu(e,t,n,r){let o=r??ti({skillId:n,launchCwd:t.launchCwd,gitRoot:t.gitRoot,home:t.home}),s=In(o,t.gitRoot,t.home,O.ComponentKind.SKILL,O.nativeKeyForSkillPath,e);if(s.sourcePath!==null&&lr(s.sourcePath)?.toLowerCase()===n.toLowerCase())return s.componentReference===void 0?{}:{componentReference:s.componentReference};let i=r??Ti({commandId:n,launchCwd:t.launchCwd,gitRoot:t.gitRoot,home:t.home,runnerPlatform:e.runnerPlatform}),a=In(i,t.gitRoot,t.home,O.ComponentKind.COMMAND,O.nativeKeyForCommandPath,e);return a.nativeKey?.toLowerCase()!==n.toLowerCase()?{}:{commandName:a.nativeKey,...a.componentReference===void 0?{}:{componentReference:a.componentReference}}}function gS(e,t,n){let r=Gt(e.hookInput.tool_input);return Promise.all(n.map(o=>{let s=nu(e,t,o,r);return Ro(e,t,{tool_name:"Skill",skill_name:o,...s.commandName===void 0?{}:{command_name:s.commandName},...s.componentReference===void 0?{}:{component_reference:s.componentReference}})}))}function _S(e,t,n){return Promise.all(n.map(r=>{let o=Oi({relativePath:r,launchCwd:t.launchCwd,gitRoot:t.gitRoot,home:t.home,runnerPlatform:e.runnerPlatform}),s=In(o,t.gitRoot,t.home,O.ComponentKind.RULE,O.nativeKeyForRulePath,e),i=s.nativeKey??Pi(r);return Ro(e,t,{tool_name:"Rule",rule_name:i,...s.componentReference===void 0?{}:{component_reference:s.componentReference}})}))}var hS=[{kind:O.ComponentKind.SKILL,nativeKeyFn:O.nativeKeyForSkillPath},{kind:O.ComponentKind.RULE,nativeKeyFn:O.nativeKeyForRulePath},{kind:O.ComponentKind.COMMAND,nativeKeyFn:O.nativeKeyForCommandPath}];function SS(e,t,n){if(n.skillName===null&&n.ruleName===null&&n.commandName===null)return{};let r=pr(e.hookInput);if(r===null)return n.skillName===null?{}:nu(e,t,n.skillName,null);for(let o of hS){let s=In(r,t.gitRoot,t.home,o.kind,o.nativeKeyFn,e);if(s.nativeKey!==null)return{...s.componentReference===void 0?{}:{componentReference:s.componentReference},...o.kind===O.ComponentKind.RULE?{ruleName:s.nativeKey}:{},...o.kind===O.ComponentKind.COMMAND?{commandName:s.nativeKey}:{}}}return{}}var ES=/mcp/i;function yS(e,t,n,r){let o=ES.test(e.runnerEvent);if(!r.hasMcpIdentity&&!o)return{};let s=o?lc(t,n):pn(r.declaredConfig,n);return s===null?{}:Object.fromEntries(Object.entries(s).filter(i=>typeof i[1]=="string").map(([i,a])=>[`mcp_${i}`,a]))}async function RS(e){let t=await Qc(e),n=Gi(e.hookInput,e.runnerEvent),{toolName:r,skillName:o}=n,s=dr(e.hookInput),i=cc(s,t.home),a=Vi(e.hookInput),c=ji(e.runnerEvent),l=c===!1?Wi(e.hookInput,e.runnerEvent):null,u=await Ar(e.manifest.manifest,e.manifest.gitRoot,String(e.runnerPlatform),t.home).catch(()=>[]),p=dt(h(e.hookInput,"mcp_server_name")),{mcpServer:m,mcpTool:d}=Ji(r,u.map(U=>U.name),p??""),_=cS(r,m,e.platformAgentId,e.manifest.installationId,String(e.runnerPlatform),u,p),S=_===void 0?SS(e,t,n):{},E=m===null?null:Ui(m,e.manifest.manifest,e.manifest.gitRoot,String(e.runnerPlatform),t.home),y=yS(e,s,t.home,{hasMcpIdentity:!!m||!!d,declaredConfig:E}),R=_??S.componentReference,j=S.ruleName??n.ruleName,b=S.commandName??n.commandName,T=zi(e.hookInput);await Ye("tool_invoked",{tool_name:r,skill_name:o,...j?{rule_name:j}:{},...b?{command_name:b}:{},success:c,duration_ms:a,...i?{executable:i}:{},...l?{failure_reason:l}:{},...m?{mcp_server:m}:{},...d?{mcp_tool:d}:{},...y,...R?{component_reference:R}:{},...T?{subagent_type:T}:{},hook_input:t.hookInput},t.envelopeFields,Je,e.manifest.collectorUrl,t.buildStartedAtMs,At(e,t.home))}async function ru(e){switch(e.internalEvent){case"session_start":await fS(e);return;case"session_end":await mS(e);return;case"skill_invoked":{let t=sS(e),n=bi(e.hookInput),r=Hi(e.runnerEvent);if(t.length===0&&n.length===0&&!r)return;let o=await Qc(e);await Promise.all([r&&t.length===0&&n.length===0?iS(e,o):void 0,t.length===0?void 0:gS(e,o,t),n.length===0?void 0:_S(e,o,n)]);return}case"tool_invoked":await RS(e);return;default:return}}function ou(e){return e!=="session_start"&&e!=="session_end"&&e!=="tool_invoked"&&e!=="skill_invoked"&&e!==""}import{createHash as CS}from"node:crypto";import{mkdirSync as IS,readdirSync as AS,readFileSync as kS,statSync as su,unlinkSync as OS,writeFileSync as xS}from"node:fs";import{homedir as On}from"node:os";import{join as Co}from"node:path";var PS="turns",iu=1440*60*1e3,bS=100,TS=new Set(["stop","stopfailure","sessionend"]);function Io(e=On()){return Co(ce(e),PS)}function NS(e){return CS("sha256").update(e).digest("hex").slice(0,32)}function au(e,t){return Co(e,NS(t))}function vS(e,t=Date.now()){let n;try{n=AS(e)}catch{return}let r=0;for(let o of n){if(r>=bS)return;r+=1;try{let s=Co(e,o);t-su(s).mtimeMs>iu&&OS(s)}catch{}}}function wS(e,t,n=On()){let r=e.trim(),o=t.trim();if(!(!r||!o))try{let s=Io(n);IS(s,{recursive:!0}),xS(au(s,r),o,"utf8")}catch{}}function MS(e,t=On()){let n=e.trim();if(!n)return"";try{let r=au(Io(t),n);return Date.now()-su(r).mtimeMs>iu?"":kS(r,"utf8").trim()}catch{return""}}function cu(e,t,n,r=On()){let o=t.trim(),s=TS.has(n.trim().toLowerCase());return s&&vS(Io(r)),o?(wS(e,o,r),o):s?MS(e,r):""}async function uu(e,t,n,r){let o=t??await Bn(Un),s=$(o,{}),i=h(s,"session_id")||h(s,"conversation_id"),a=await Ss(process.cwd(),{sessionId:i});if(!a)return;r&&(a.collectorUrl=r);let c=$i(s,a.manifest.platform,n),l=Bi(e,c.runnerEvent);if(!l){f(`WARN: unknown hook event '${c.runnerEvent}'; skipping telemetry`);return}let u={hookInput:s,sessionId:c.sessionId,turnId:cu(c.sessionId,c.turnId,c.runnerEvent),runnerEvent:c.runnerEvent,runnerPlatform:c.runnerPlatform,hookSource:c.hookSource,internalEvent:l,manifest:a,platformAgentId:a.platformAgentId};if(ou(l)){f(`WARN: unsupported internal event '${l}'`);return}await ru(u)}function LS(e,t){if(I("EV_AI_HOOK_SYNC")==="1")return!0;let n=Ze(e),r=$(t,{}),o=n.event??(h(r,"hook_event_name")||h(r,"event")),s=lt(r,o,void 0,n.runner);return Zt(o,s)}async function lu(e=process.argv.slice(2)){if(aa(),e[0]===Ct){try{await Cn(tt)}catch{}return 0}if(e[0]===Rn){try{let t=Ze(e.slice(1)),n=await tt(),r=$(n,{}),o=t.event??(h(r,"hook_event_name")||h(r,"event"));if(zn()||Or(t.runner,r,o))return 0;await uu(t.event,n,t.runner,kr(t))}catch(t){let n=t instanceof Error?t.message:String(t);f(`WARN: detached work failed open: ${n}`)}return 0}try{let t=await Bn(Un),n=Ze(e),r=kr(n),o=$(t,{}),s=n.event??(h(o,"hook_event_name")||h(o,"event"));if(zn()||Or(n.runner,o,s)||!ta(o,s,n.runner))return 0;LS(e,t)?await uu(n.event,t,n.runner,r):await Yc(t,e)}catch(t){let n=t instanceof Error?t.message:String(t);f(`WARN: hook failed open: ${n}`)}finally{Vo()}return 0}function xn(){f("Usage: ev-ai-agent-hook <configure|install|migrate-to-plugin|update|uninstall|--version>"),f(" configure [--url <\u2026/{orgToken}/hook>]"),f(" (manifest only \u2014 pair with marketplace plugins)"),f(" install --url <\u2026/{orgToken}/hook>"),f(" [--delivery npx|binary|local] [--force]"),f(" [--no-claude] [--no-cursor] [--no-codex]"),f(" (fallback: merge hooks into .claude / .cursor / .codex configs)"),f(" (writes collector_url to shared manifest; hook commands use --runner only)"),f(" migrate-to-plugin"),f(" (strip ev-ai file hooks; keep collector manifest)"),f(" update (refresh binary pins from a local build; leaves hook configs alone)"),f(" uninstall"),f("Hook mode: --runner <platform> [--url <\u2026/hook>|--token <orgToken>] [event]"),f(" (--url/--token optional overrides; else collector_url from manifest)")}function du(e){return e.includes("--help")||e.includes("-h")}async function jS(e=process.argv.slice(2)){let[t,...n]=e;if(t===Ct){try{await Cn(tt)}catch{}return 0}return t==="--version"||t==="-V"?(process.stdout.write(`${se}
51
- `),0):t==="configure"?du(n)?(xn(),0):(await js(Os(n)),0):t==="install"?du(n)?(xn(),0):(await Hs(xs(n)),0):t==="migrate-to-plugin"?(await Bs(),0):t==="update"?(await Fs(),0):t==="uninstall"?(await Ks(),0):t==="help"||t==="--help"||t==="-h"?(xn(),0):t===void 0?(xn(),1):lu(e)}function $S(e,t,n=US){if(!t)return!1;try{return e===FS(DS(t)).href?!0:n(HS(e))===n(t)}catch{return!1}}$S(import.meta.url,process.argv[1])&&process.env.VITEST===void 0&&jS().then(e=>{process.exit(e)}).catch(e=>{let t=e instanceof Error?e.message:String(e);f(t),process.exit(1)});export{$S as isCliEntrypoint,jS as main};
35
+ `.trim(),vr=new Map;function wa(e){if(typeof e=="string"){let t=e.trim();return t.length>0?t:null}if(e instanceof Uint8Array){let t=Buffer.from(e).toString("utf8").trim();return t.length>0?t:null}return null}function La(e){return e.toLowerCase().includes("token")}function Ua(e){let t=new Map;if(!Array.isArray(e))return t;for(let n of e){if(n===null||typeof n!="object")continue;let r=n,o=wa(r.key),s=wa(r.value);o&&s&&!La(o)&&t.set(o,s)}return t}function pg(e){let t=dg(e);return t.search="mode=ro&immutable=1",t.href}function fg(e){try{let t=Ma("bun:sqlite");if(typeof t.Database!="function")return null;let n=new t.Database(e,{readonly:!0,create:!1});try{let r=n.query?.(sn)??n.prepare(sn);return Ua(r.all?.())}finally{n.close?.()}}catch{return null}}function mg(e){let t=process.emitWarning.bind(process);process.emitWarning=((n,...r)=>{(typeof n=="string"?n:n instanceof Error?n.message:"").includes("SQLite is an experimental feature")||t(n,...r)});try{return e()}finally{process.emitWarning=t}}function gg(e){try{return mg(()=>{let t=Ma("node:sqlite");if(typeof t.DatabaseSync!="function")return null;let n=new t.DatabaseSync(e,{readOnly:!0});try{return Ua(n.prepare(sn).all?.())}finally{n.close?.()}})}catch{return null}}function _g(e){let t=new Map;for(let n of e.split(`
36
+ `)){let r=n.trimEnd();if(!r)continue;let o=r.indexOf(" ");if(o<=0)continue;let s=r.slice(0,o).trim(),i=r.slice(o+1).trim();s&&i&&!La(s)&&t.set(s,i)}return t}function hg(e){try{let t=cg("sqlite3",["-noheader","-batch","-separator"," ",e,sn],{encoding:"utf8",timeout:2e3,maxBuffer:65536,windowsHide:!0,stdio:["ignore","pipe","ignore"]});return _g(t)}catch{return null}}function Da(e){let t=vr.get(e);if(t)return t;if(!ug(e)){let o=new Map;return vr.set(e,o),o}let n=pg(e),r=fg(n)??hg(n)??gg(n)??new Map;return vr.set(e,r),r}var Sg="cursorAuth/cachedEmail",Eg="cursorAuth/stripeMembershipAuthId";function an(e){if(e===void 0)return null;let t=e.trim();return t.length>0?t:null}function yg(e=cn(),t=process.platform,n=process.env){let r=an(n.VSCODE_PORTABLE);if(r)return de(r,"user-data");let o=an(n.VSCODE_APPDATA);if(o)return de(o,"Cursor");switch(t){case"darwin":return de(e,"Library","Application Support","Cursor");case"win32":return de(an(n.APPDATA)??de(e,"AppData","Roaming"),"Cursor");default:return de(an(n.XDG_CONFIG_HOME)??de(e,".config"),"Cursor")}}function Rg(e=cn()){return de(e,".cursor","cli-config.json")}function Cg(e=cn(),t=process.platform,n=process.env){return de(yg(e,t,n),"User","globalStorage","state.vscdb")}function ft(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}function Ig(e){return typeof e.userId=="number"&&Number.isFinite(e.userId)?String(e.userId):ft(e.userId)}function Ag(e){return ft(e.email)??ft(e.authId)??Ig(e)}function wr(e){let t=ft(e.email),n=ft(e.displayName),r=Ag(e);return!r||K(n,t)?null:{git_user_name:null,git_user_email:null,platform_login:r,identity_source:"cursor_oauth"}}function kg(e){let n=U(Rg(e),{}).authInfo;return!n||typeof n!="object"?null:wr(n)}function Og(e,t,n){let r=Cg(e,process.platform,t),o=ba(e),s=Ta(o);if(Na(s,r,n))return wr({email:s?.email,authId:s?.auth_id});let i=Da(r),a=i.get(Sg)??null,c=i.get(Eg)??null;return va(o,{read_at_ms:n,db_path:r,email:a,auth_id:c}),wr({email:a,authId:c})}function Ha(e=cn(),t=process.env,n=Date.now()){return kg(e)??Og(e,t,n)}import{createHash as Pg}from"node:crypto";import{resolve as xg}from"node:path";function L(e){return Pg("sha256").update(e).digest("hex").slice(0,16)}function Mr(e){return L(xg(e))}function V(e,t){return`${e}\0${t}`}function Fa(e){let t=e.indexOf("\0");return t<=0?null:{path:e.slice(0,t),name:e.slice(t+1)}}function mt(e){let n=[...e].sort((r,o)=>{let s=r.path.localeCompare(o.path);return s!==0?s:r.name.localeCompare(o.name)}).map(r=>`${r.path}|${r.name}|${r.content_hash}`).join(`
37
+ `);return L(n)}function Tg(e,t,n="git_config",r=null){return L(`${e??""}|${t??""}|${r??""}|${n}`)}function Ng(e){let t=null,n=null;for(let r of e.split(`
38
+ `)){let o=r.trim();if(!o)continue;let s=o.indexOf(" ");if(s<=0)continue;let i=o.slice(0,s).toLowerCase(),a=o.slice(s+1).trim();a&&(i==="user.name"?t=a:i==="user.email"&&(n=a))}return{git_user_name:t,git_user_email:n,platform_login:null}}async function vg(e,t=w){let n=await t("git",["config","--get-regexp","^user\\.(name|email)$"],2e3,{cwd:e});return Ng(n)}function wg(e=process.env){let t=k(e.GIT_AUTHOR_NAME),n=k(e.GIT_AUTHOR_EMAIL);if(t||n)return{git_user_name:t,git_user_email:n,platform_login:null,identity_source:"git_env"};let r=k(e.GIT_COMMITTER_NAME),o=k(e.GIT_COMMITTER_EMAIL);if(r||o)return{git_user_name:r,git_user_email:o,platform_login:null,identity_source:"git_env"};let s=k(e.EMAIL);return s?{git_user_name:null,git_user_email:s,platform_login:null,identity_source:"git_env"}:null}function pe(e,t,n,r=null){return!e&&!t&&!r?null:{git_user_name:e,git_user_email:t,platform_login:r,identity_source:n}}function Mg(e=process.env){let t=k(e.EV_AI_HOOK_OPERATOR_EMAIL),n=k(e.EV_AI_HOOK_OPERATOR_LOGIN),r=pe(k(e.EV_AI_HOOK_OPERATOR_NAME),t,"configured",t??n);if(r)return r;let o=k(e.GITHUB_ACTOR)??k(e.GITHUB_TRIGGERING_ACTOR)??k(e.GITHUB_USER),s=pe(o,null,"github",o);if(s)return s;let i=k(e.GITLAB_USER_LOGIN),a=k(e.GITLAB_USER_EMAIL),c=pe(k(e.GITLAB_USER_NAME)??i,a,"gitlab",a??i);if(c)return c;let l=k(e.BUILD_REQUESTEDFOREMAIL),u=pe(k(e.BUILD_REQUESTEDFOR),l,"azure_devops",l??k(e.BUILD_REQUESTEDFORID));if(u)return u;let p=k(e.BUILDKITE_BUILD_CREATOR_EMAIL),m=pe(k(e.BUILDKITE_BUILD_CREATOR),p,"buildkite",p);if(m)return m;let d=k(e.BUILD_USER_EMAIL)??k(e.CHANGE_AUTHOR_EMAIL),_=pe(k(e.BUILD_USER)??k(e.CHANGE_AUTHOR),d,"jenkins",d??k(e.BUILD_USER_ID));if(_)return _;let h=k(e.CIRCLE_USERNAME),S=pe(h,null,"circleci",h);if(S)return S;let E=k(e.CODEBUILD_INITIATOR),y=pe(E,null,"codebuild",E);if(y)return y;let H=k(e.DRONE_COMMIT_AUTHOR_EMAIL),b=k(e.DRONE_COMMIT_AUTHOR),T=pe(b??k(e.DRONE_COMMIT_AUTHOR_NAME),H,"drone",H??b);if(T)return T;if(ja(e.CLAUDE_CODE_REMOTE)||ja(e.CURSOR_AGENT)){let D=k(e.CURSOR_USER_EMAIL);return{git_user_name:null,git_user_email:null,platform_login:D&&!K(null,D)?D:null,identity_source:"cloud"}}return null}function Lr(e){return!!((e.git_user_name??e.git_user_email)&&!K(e.git_user_name,e.git_user_email))}function k(e){if(e===void 0)return null;let t=e.trim();return t.length>0?t:null}function ja(e){if(e===void 0||e==="")return!1;let t=e.trim().toLowerCase();return t!=="0"&&t!=="false"&&t!=="no"}function Lg(e,t,n){return e==="claude"?Ca(t):e==="cursor"?Ha(t,n):e==="codex"?Pa(n,t):null}async function Ur(e,t=w,n=process.env,r={}){let o=await vg(e,t),s=wg(n),i=Lr(o)?o:s&&Lr(s)?s:null,a=Lg(r.runnerPlatform,r.home??bg(),n);if(a)return{git_user_name:i?.git_user_name??null,git_user_email:i?.git_user_email??null,platform_login:a.platform_login,identity_source:a.identity_source};let c=Mg(n);return c?.platform_login?{git_user_name:i?.git_user_name??null,git_user_email:i?.git_user_email??null,platform_login:c.platform_login,identity_source:c.identity_source}:i?{...i,platform_login:null,identity_source:Lr(o)?"git_config":"git_env"}:c||(o.git_user_name||o.git_user_email?{...o,identity_source:"git_config"}:s||{git_user_name:null,git_user_email:null,platform_login:null,identity_source:"git_config"})}async function Dr(e){let{gitRoot:t,installationStorePath:n,forceResend:r}=e,o=e.exec??w,s=e.env??process.env,i=await Ur(t,o,s,{runnerPlatform:e.runnerPlatform,home:e.home}),a=Tg(i.git_user_name,i.git_user_email,i.identity_source,i.platform_login),l=(n?Zn(n):void 0)?.operator_identity_hash;if(!(r||l!==void 0&&l!==a||!l))return{commit:()=>{}};let d=n;return{operator:i,commit:()=>{d&&gs(d,a,Ht())}}}function Hr(e){return e?!Zn(e)?.operator_identity_hash:!0}function $a(e){return!0}import{existsSync as ah,readFileSync as ch}from"node:fs";import{homedir as Uc}from"node:os";import{join as Je,resolve as uh}from"node:path";import{basename as eh,join as We}from"node:path";import{dirname as qa,resolve as dn}from"node:path";import{existsSync as Ug}from"node:fs";import{homedir as Ga}from"node:os";import{relative as za,resolve as te,sep as Ce}from"node:path";var Dg=["session_id","conversation_id","turn_id","generation_id","prompt.id","prompt_id","hook_event_name","event","source","status","stop_reason","reason","tool_name","tool","tool_use_id","skill_name","command_name","expansion_type","command_source","permission_mode","model","model_id","agent_id","agent_type","subagent_id","subagent_type","subagent_model","is_parallel_worker","effort","effort.level","duration_ms","duration","sandbox","failure_type","is_interrupt"],Hg=["prompt","tool_input","tool_response","last_assistant_message","command"],Fg=new Set;function jg(e){switch(e?.toLowerCase()){case"beforemcpexecution":return new Set(["command"]);case"stopfailure":return new Set(["last_assistant_message"]);default:return Fg}}function Va(e){return Wa(e)==="allowlist"}function Wa(e){return I("EV_AI_HOOK_CAPTURE_CONTENT")?.toLowerCase()==="off"||e.capture_hook_input==="allowlist"?"allowlist":e.capture_hook_input==="full"||e.debug===!0||I("EV_AI_HOOK_CAPTURE_FULL_INPUT")==="1"?"full":"content"}function $g(e){let t={};for(let n of Dg){let r=se(e,n);r!==void 0&&(t[n]=r)}return t}function un(e,t){if(typeof e!="string"||e.length===0||!t)return null;let n=te(e),r=te(t),o=za(r,n);return!o||o==="."?".":o.startsWith(`..${Ce}`)||o===".."||te(r,o)!==n?null:o.split(Ce).join("/")}function Ja(e,t){let n=za(te(t),te(e)).split(Ce).join("/");return!n||n==="."?null:n===".."||n.startsWith("../")&&n.split("/").every(r=>r==="..")?n:null}function Ya(e){return typeof e!="string"||e.length===0?null:te(e).split(Ce).join("/")}function Bg(){let e=I("CURSOR_PROJECT_DIR");if(!e)return null;let t=te(e);return Ug(t)?t.split(Ce).join("/"):null}function jr(e,t){return un(e,t)!==null}function Kg(e,t){let n=te(t??Ga(),".cursor").split(Ce).join("/");return jr(e,n)}function Gg(e,t,n){return t!==null&&jr(e,t)?!0:t!==null&&Kg(e,n.home)?!1:n.inGitRepo===!0&&n.gitRoot!==void 0&&jr(e,n.gitRoot)?!0:t===null}function Xa(e,t){let n=Ya(e.cwd);if(n!==null)return n;let r=te(process.cwd()).split(Ce).join("/"),o=Bg();return Gg(r,o,t)?r:o??r}function Kr(e,t={}){return Xa(e,t)}function Gr(e,t=Ga()){let n=te(t).split(Ce).join("/").replace(/\/$/,"");return n.length<=1?e:e===n?"~":e.startsWith(`${n}/`)?`~${e.slice(n.length)}`:e}function Ba(e,t,n){let r=Ya(n.launchCwd)??Xa(t,n);e.cwd=Gr(r,n.home);let o=n.inGitRepo===!0&&n.gitRoot!==void 0?un(r,n.gitRoot):null;o!==null&&(e.cwd_relative=o)}var Za="\u2026[truncated]\u2026",$r=Buffer.byteLength(Za,"utf8"),zg=8;function gt(e){return Buffer.byteLength(JSON.stringify(e),"utf8")}function Ka(e,t){if(t<=0)return"";let n=Buffer.from(e,"utf8");return n.length<=t?e:n.subarray(0,t).toString("utf8")}function Vg(e,t){if(t<=0)return"";let n=Buffer.from(e,"utf8");return n.length<=t?e:n.subarray(n.length-t).toString("utf8")}function Wg(e,t){if(Buffer.byteLength(e,"utf8")<=t)return e;if(t<=$r)return Ka(e,t);let r=t-$r,o=Math.ceil(r/2),s=Math.floor(r/2);return`${Ka(e,o)}${Za}${Vg(e,s)}`}function Br(e,t,n){if(typeof e=="string"){n.push({path:t,value:e,bytes:Buffer.byteLength(e,"utf8")});return}if(Array.isArray(e)){e.forEach((r,o)=>{Br(r,[...t,o],n)});return}if(e!==null&&typeof e=="object")for(let[r,o]of Object.entries(e))t.length===0&&r.startsWith("_")||Br(o,[...t,r],n)}function Jg(e,t,n){let r=e;for(let s=0;s<t.length-1;s++){let i=t[s];if(i===void 0)return;r=(Array.isArray(r),r[i])}let o=t[t.length-1];if(!(o===void 0||r===null||typeof r!="object")){if(Array.isArray(r)){r[o]=n;return}r[o]=n}}var Yg=256;function Xg(e,t,n){let r=n,o=Math.max(n,e[0]?.bytes??n);for(;r<o;){let s=Math.ceil((r+o)/2),i=0;for(let a of e)a.bytes>s&&(i+=a.bytes-s);i>=t?r=s:o=s-1}return r}function Zg(e,t,n){let r=Number.POSITIVE_INFINITY;for(let o=0;o<6;o++){let s=gt(e);if(s<=t)return;let i=[];Br(e,[],i),i.sort((u,p)=>p.bytes-u.bytes);let a=i.filter(u=>u.bytes>n);if(a.length===0)return;let c=Xg(a,s-t,n),l=Math.max(n,Math.min(c,r-1));if(l>=r)return;r=l;for(let u of a)u.bytes>r&&Jg(e,u.path,Wg(u.value,r))}}function qg(e,t){let n=Math.max(0,t-Yg),r=Object.keys(e).filter(s=>!s.startsWith("_")).map(s=>({key:s,bytes:gt(e[s])})).sort((s,i)=>i.bytes-s.bytes),o=[];for(let{key:s}of r){if(gt(e)<=n)break;delete e[s],o.push(s)}o.length>0&&(e._dropped_keys=o.slice(0,10))}function Fr(e,t){let n=gt(e);if(n<=t)return e;let r=structuredClone(e);return r._truncated=!0,r._original_bytes=n,Zg(r,t,$r+zg),gt(r)>t&&qg(r,t),r}function Qg(e,t,n){let r=jg(n.runnerEvent);for(let o of Hg){if(r.has(o))continue;let s=t[o];s!==void 0&&(e[o]=s)}}function ln(e,t,n={}){let r=Wa(t);if(r==="full"){let s={...e};return delete s.cwd,delete s.transcript_path,Ba(s,e,n),Fr(s,Fn)}let o=$g(e);return Ba(o,e,n),r==="content"?(Qg(o,e,n),Fr(o,Fn)):Fr(o,Do)}function e_(e){return typeof e=="string"&&e.length>0}function zr(e){let t=dn(e.home),n=dn(e.launchCwd),r=e.gitRoot?dn(e.gitRoot):null,o=new Set,s=[],i=null;e.inGitRepo&&e_(e.remote)&&r!==null&&r!==t&&(i=r,o.add(r)),n!==t&&!o.has(n)&&(s.push({scope:"cwd",dir:n}),o.add(n)),i!==null&&s.push({scope:"repo",dir:i});let a=null,c=r!==null&&un(n,r)!==null;if(e.inGitRepo&&r!==null&&r!==t&&c){let l=qa(r);for(;;){let u=dn(l);if(u===t)break;let p=qa(u);if(p===u)break;if(e.hasProjectSpec(u)){s.push({scope:"parent",dir:u}),a=Ja(u,n);break}l=p}}return{anchors:s,parentRel:a}}import{existsSync as Qa,readdirSync as t_,realpathSync as n_}from"node:fs";import{basename as r_,dirname as o_,relative as s_,resolve as i_,sep as a_}from"node:path";var Vr=400,pn=class{constructor(t,n={}){this.home=t;this.pathMode=n.pathMode??"home-relative",this.maxEntries=n.maxEntries??me}components=[];truncated=!1;pathMode;maxEntries;pluginExpandRemaining;seenRealpaths=new Set;componentPath(t){if(this.pathMode==="tilde"){let r=i_(t).split(a_).join("/");return Gr(r,this.home)}let n=s_(this.home,t).replace(/\\/g,"/");return!n||n.startsWith("..")?`external/${L(o_(t))}/${r_(t)}`:n}claimFile(t){try{let n=n_(t);return this.seenRealpaths.has(n)?!1:(this.seenRealpaths.add(n),!0)}catch{return this.seenRealpaths.has(t)?!1:(this.seenRealpaths.add(t),!0)}}get atGlobalCap(){return this.truncated||this.components.length>=this.maxEntries}get pluginBudgetSpent(){return this.pluginExpandRemaining!==void 0&&this.pluginExpandRemaining<=0}readEntries(t){if(!Qa(t))return[];try{return t_(t,{withFileTypes:!0})}catch{return[]}}readJson(t,n){if(Qa(t))return U(t,n)}push(t){return this.components.length>=this.maxEntries?(this.truncated=!0,!1):this.pluginExpandRemaining!==void 0&&this.pluginExpandRemaining<=0?!1:(this.pluginExpandRemaining!==void 0&&(this.pluginExpandRemaining-=1),this.components.push(t),!0)}withPluginExpandCap(t,n){let r=this.pluginExpandRemaining;this.pluginExpandRemaining=t;try{let o=n(),s=t-(this.pluginExpandRemaining??0);return{result:o,expanded:s}}finally{this.pluginExpandRemaining=r}}};import{existsSync as Wr,readFileSync as c_,statSync as u_}from"node:fs";import{basename as tc,join as _t,relative as nc}from"node:path";var Jr=100*1024,l_=4;function d_(e){return e.length<=Jr?e:`${e.slice(0,Jr-1)}\u2026`}function p_(e){try{let t=c_(e),n=t.toString("utf8");return{hash:L(t),length:t.length,text:d_(n)}}catch{return null}}var ec={HOOK:"EVENT",COMMAND:"EXPLICIT_INVOCATION",MEMORY:void 0,MCP_SERVER:void 0,PLUGIN:void 0,SKILL:"UNSPECIFIED",RULE:"UNSPECIFIED",SUBAGENT:"UNSPECIFIED"};function f_(e){return e in ec?ec[e]:"UNSPECIFIED"}function fn(e,t){if(!e.claimFile(t.absolutePath))return!1;let n=p_(t.absolutePath);if(!n)return!1;let r=t.name??tc(t.absolutePath).replace(/\.(md|mdc|toml)$/i,""),o={kind:t.kind,name:r,path:e.componentPath(t.absolutePath),text:n.text,content_hash:n.hash,content_length:n.length,origin:t.origin,enabled:t.enabled},s=f_(t.kind);return s&&(o.trigger=s),e.push(o)}function m_(e,t,n){let r=nc(e,t).replace(/\\/g,"/");return!r||r.startsWith("..")?tc(t).replace(/\.(md|mdc|toml)$/i,""):n?r.replace(/\.(md|mdc|toml)$/i,""):r}function Ne(e,t){let{dir:n,kind:r,origin:o,enabled:s,nested:i,extensions:a}=t;Yr(e,{walkRoot:n,currentDir:n,depth:0,kind:r,origin:o,enabled:s,nested:i,extensions:a})}function Yr(e,t){let{walkRoot:n,currentDir:r,depth:o,kind:s,origin:i,enabled:a,nested:c,extensions:l}=t;if(!(o>l_))for(let u of e.readEntries(r)){if(e.atGlobalCap){e.truncated=!0;return}if(e.pluginBudgetSpent)return;if(c){if(!u.isDirectory())continue;let d=_t(r,u.name,c);if(Wr(d)){let _=nc(n,_t(r,u.name)).replace(/\\/g,"/");fn(e,{absolutePath:d,kind:s,origin:i,enabled:a,name:_||u.name});continue}Yr(e,{walkRoot:n,currentDir:_t(r,u.name),depth:o+1,kind:s,origin:i,enabled:a,nested:c,extensions:l});continue}if(u.isDirectory()){Yr(e,{walkRoot:n,currentDir:_t(r,u.name),depth:o+1,kind:s,origin:i,enabled:a,nested:c,extensions:l});continue}if(!u.isFile()||!l)continue;let p=u.name.toLowerCase();if(!l.some(d=>p.endsWith(d)))continue;let m=_t(r,u.name);fn(e,{absolutePath:m,kind:s,origin:i,enabled:a,name:m_(n,m,!0)})}}function rc(e){for(let t of e)if(Wr(t))try{if(u_(t).size>0)return t}catch{continue}return e.find(t=>Wr(t))}var mn=qe(Ke(),1);var g_="<omitted>",__=["package_name","package_spec","package_version","package_version_source"],oc=100,sc=120,gn=[{raw:"tools",attr:"tools"},{raw:"autoApprove",attr:"auto_approve"},{raw:"auto_approve",attr:"auto_approve"},{raw:"alwaysAllow",attr:"always_allow"},{raw:"always_allow",attr:"always_allow"},{raw:"enabledTools",attr:"enabled_tools"},{raw:"enabled_tools",attr:"enabled_tools"},{raw:"disabledTools",attr:"disabled_tools"},{raw:"disabled_tools",attr:"disabled_tools"}],ic=new Set(gn.map(e=>e.attr)),h_=["enabled","disabled"],S_=["serverUrl","auth","bearer_token_env_var","default_tools_approval_mode","defaultToolsApprovalMode","env_vars","env_http_headers","http_headers"],E_=new Set(["type","command","url","args","env","envVars","headers",...h_,...S_,...gn.map(e=>e.raw)]),y_=new Set(["transport","command_or_url","args","env_var_names","headers_present","auth","bearer_token_env_var","default_tools_approval_mode","env_http_header_names",...__,...ic,...[...ic].map(e=>`${e}_truncated`)]);function ac(e,t){for(let n of t)E_.has(n)||y_.has(n)||(e[n]=g_)}var R_=/^(authorization|auth|api[-_]?key|access[-_]?token|refresh[-_]?token|secret|password|passwd|token|bearer|client[-_]?secret|client[-_]?id|private[-_]?key|signing[-_]?key)$/i,C_=/(?:^|[-_])(secret|password|passwd|token|api[-_]?key|private[-_]?key|signing[-_]?key|client[-_]?secret|client[-_]?id)(?:[-_]|$)/i,I_=/^(sk-|ghp_|gho_|github_pat_|xox[baprs]-|AKIA|ASIA|AIza|ya29\.)/,A_=/^bearer(?:\s+|$)/i;function _n(e){return!e||typeof e!="object"||Array.isArray(e)?null:e}function cc(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function Xr(e){if(Array.isArray(e)){let n=[];for(let r of e){if(typeof r!="string"||r.length===0)continue;let o=r.split("=",1)[0]?.trim();o&&n.push(o)}return n}let t=_n(e);return t?Object.keys(t).filter(n=>n.length>0):[]}function ve(e){try{let t=new URL(e);return`${t.origin}${t.pathname}`}catch{return e}}function k_(e,t){if(e!==void 0&&/^https?:\/\//i.test(e)&&(0,mn.launchContainsCredentials)({kind:"url",url:e})||(0,mn.launchContainsCredentials)({kind:"command",command:e??"",arguments:t}))return!0;let n=St([...t]);return t.some((r,o)=>n[o]===r?!1:/^https?:\/\//i.test(r)?(0,mn.launchContainsCredentials)({kind:"url",url:r}):!0)}function uc(e,t,n){k_(t,n)&&(e.launch_had_credentials=!0)}function O_(e){return I_.test(e)||A_.test(e)?"<redacted>":e.includes("://")?ve(e):e}function lc(e){if(/^https?:\/\//i.test(e))return ve(e);let t=e.indexOf("=");return t>0?`${e.slice(0,t+1)}${lc(e.slice(t+1))}`:O_(e)}function P_(e){let t=e.replace(/^-+/,"").split("=",1)[0]??"";return R_.test(t)||C_.test(t)}function St(e){let t=[],n=!1;for(let r of e){if(n){t.push("<redacted>"),n=!1;continue}if(P_(r)){t.push("<redacted>"),n=!r.includes("=");continue}t.push(lc(r))}return t}function x_(e){let t=cc(e);if(t.length===0)return;let n=[...new Set(t.map(r=>r.length>sc?r.slice(0,sc):r))].sort();if(n.length!==0)return n.length>oc?{names:n.slice(0,oc),truncated:!0}:{names:n,truncated:!1}}function b_(e){let t=_n(e);if(!t)return{headers:[],envVars:[]};let n=[],r=[];for(let[o,s]of Object.entries(t))o.length>0&&n.push(o),typeof s=="string"&&s.length>0&&r.push(s);return{headers:n,envVars:r}}function dc(e,t){let n=new Set;for(let{raw:r,attr:o}of gn){if(n.has(o)||!(r in t))continue;let s=t[r];if(o==="auto_approve"&&typeof s=="boolean"){e.auto_approve=s,n.add(o);continue}let i=x_(s);i&&(e[o]=i.names,i.truncated&&(e[`${o}_truncated`]=!0),n.add(o))}}function pc(e,t){let n=_n(e),r={transport:t};if(!n)return r;ac(r,Object.keys(n));let o=typeof n.command=="string"?n.command:void 0,s=typeof n.url=="string"?n.url:void 0,i=typeof n.serverUrl=="string"?n.serverUrl:void 0,a=o??s??i,c=cc(n.args);a&&(r.command_or_url=ve(a));let l=St(c);l.length>0&&(r.args=l),uc(r,a,c);let u=b_(n.env_http_headers),p=[...new Set([...Xr(n.env),...Xr(n.envVars),...Xr(n.env_vars),...u.envVars,...typeof n.bearer_token_env_var=="string"&&n.bearer_token_env_var.length>0?[n.bearer_token_env_var]:[]])].sort();p.length>0&&(r.env_var_names=p),u.headers.length>0&&(r.env_http_header_names=[...new Set(u.headers)].sort());for(let h of["headers","http_headers","env_http_headers"])if(n[h]!==void 0&&n[h]!==null){r.headers_present=!0;break}let m=typeof n.auth=="string"?n.auth:void 0;m&&(r.auth=m);let d=typeof n.bearer_token_env_var=="string"?n.bearer_token_env_var:void 0;d&&(r.bearer_token_env_var=d);let _=typeof n.default_tools_approval_mode=="string"?n.default_tools_approval_mode:typeof n.defaultToolsApprovalMode=="string"?n.defaultToolsApprovalMode:void 0;return _&&(r.default_tools_approval_mode=_),dc(r,n),r}function fc(e){let t=_n(e);return t?t.enabled===!1?!1:t.disabled!==!0:!0}function Qr(e,t,n=!0){let r=Object.keys(t).sort().map(o=>[o,t[o]??null]);return L(JSON.stringify({name:e,attributes:r,enabled:n}))}function ze(e){let t=e.trim();return t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'")?t.slice(1,-1):t}function ht(e,t){let n=new RegExp(`^\\s*${t}\\s*=\\s*\\[([^\\]]*)\\]`,"m").exec(e);return n?.[1]?[...n[1].matchAll(/"([^"]*)"|'([^']*)'/g)].map(r=>r[1]??r[2]??"").filter(r=>r.length>0):[]}function qr(e,t){let n=new RegExp(`^\\s*${t}\\s*=\\s*(true|false)\\s*$`,"m").exec(e);if(n?.[1])return n[1]==="true"}function Zr(e,t){let n=new RegExp(`^\\s*${t}\\s*=\\s*(.+)$`,"m").exec(e);if(!n?.[1])return;let r=ze(n[1]);return r.length>0?r:void 0}function T_(e,t){let n=[],r=i=>{for(let a of i.split(/[,\n]/)){let c=/^\s*"?([A-Za-z_][A-Za-z0-9_-]*)"?\s*=\s*(.+?)\s*$/.exec(a);c?.[1]&&n.push([c[1],ze(c[2]??"")])}},o=new RegExp(`^\\s*${t}\\s*=\\s*\\{([^}]*)\\}`,"m").exec(e);o?.[1]&&r(o[1]);let s=new RegExp(`(?:^|\\n)\\[[^\\]]*\\.${t}\\]\\s*\\n([\\s\\S]*?)(?=\\n\\[|$)`).exec(`
39
+ ${e}`);return s?.[1]&&r(s[1]),n}function mc(e){return qr(e,"enabled")===!1?!1:qr(e,"disabled")!==!0}function N_(e,t){let n={};for(let{raw:r,attr:o}of gn){if(o==="auto_approve"){let i=qr(t,r);if(i!==void 0){n[r]=i;continue}}let s=ht(t,r);s.length>0&&(n[r]=s)}dc(e,n)}var v_=/^\s*([A-Za-z_][A-Za-z0-9_-]*)\s*[.=]/,w_=/^\[[^\]]*\.([A-Za-z_][A-Za-z0-9_-]*)\]\s*$/gm;function M_(e){let t=new Set,n=e.search(/^\[/m),r=n===-1?e:e.slice(0,n);for(let o of r.split(`
40
+ `)){let s=v_.exec(o);s?.[1]&&t.add(s[1])}for(let o of e.matchAll(w_))o[1]&&t.add(o[1]);return[...t]}function gc(e,t){let n={transport:t};ac(n,M_(e));let r=/^\s*command\s*=\s*(.+)$/m.exec(e),o=/^\s*url\s*=\s*(.+)$/m.exec(e),s=r?ze(r[1]??""):void 0,i=o?ze(o[1]??""):void 0,a=s!==void 0&&s.length>0?s:i,c=ht(e,"args");a&&(n.command_or_url=ve(a));let l=St(c);l.length>0&&(n.args=l),uc(n,a,c);let u=new Set;for(let E of e.split(`
41
+ `)){let y=/^\s*env\.([A-Za-z_][A-Za-z0-9_]*)\s*=/.exec(E);y?.[1]&&u.add(y[1])}let p=/^\s*env\s*=\s*\{([^}]*)\}/m.exec(e);if(p?.[1])for(let E of p[1].split(",")){let y=/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=/.exec(E);y?.[1]&&u.add(y[1])}let m=/(?:^|\n)\[[^\]]*env\]\s*\n([\s\S]*?)(?=\n\[|$)/.exec(`
42
+ ${e}`);if(m?.[1])for(let E of m[1].split(`
43
+ `)){let y=/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=/.exec(E);y?.[1]&&u.add(y[1])}for(let E of ht(e,"env_vars"))u.add(E);let d=T_(e,"env_http_headers");for(let[,E]of d)E.length>0&&u.add(E);let _=Zr(e,"bearer_token_env_var");_&&(u.add(_),n.bearer_token_env_var=_),u.size>0&&(n.env_var_names=[...u].sort()),d.length>0&&(n.env_http_header_names=[...new Set(d.map(([E])=>E))].sort()),(/^\s*(?:http_|env_http_)?headers\s*=/m.test(e)||/(?:^|\n)\[[^\]]*headers\]\s*(?:\n|$)/.test(e))&&(n.headers_present=!0);let h=Zr(e,"auth");h&&(n.auth=h);let S=Zr(e,"default_tools_approval_mode");return S&&(n.default_tools_approval_mode=S),N_(n,e),n}var L_=300,U_=256;function _c(e,t){if(!t)return e;let n=[...new Set([t,t.replace(/\\/g,"/")])].filter(o=>o.length>1),r=e;for(let o of n)r=r.split(o).join("~");return r}function hn(e){let t=[],n="",r=null;for(let o of e){if(r){o===r?r=null:n+=o;continue}if(o==='"'||o==="'"){r=o;continue}if(/\s/.test(o)){n.length>0&&(t.push(n),n="");continue}n+=o}return n.length>0&&t.push(n),t}function hc(e,t){return e.length<=t?e:`${e.slice(0,t-1)}\u2026`}function D_(e){return hc(e,L_)}function Sc(e,t){let n=_c(e.trim(),t),r=hn(n);if(r.length===0)return"";let[o,...s]=r,i=ve(o),a=St(s);return D_([i,...a].join(" "))}function Ec(e,t){if(typeof e!="string")return null;let n=_c(e.trim(),t),r=hn(n)[0];if(!r)return null;let o=ve(r);return o.length===0?null:hc(o,U_)}function H_(e){if(e.prompt||e.type==="prompt")return"prompt";let t=e.command??e.bash??e.powershell??"";return/\bnpx\b/i.test(t)?"npx":/\.(sh|bash|zsh|js|mjs|cjs|ts|py)(\s|$|"|')/i.test(t)||/^(\.\/|~\/|\/|[A-Za-z]:[\\/])/.test(t.trim())?"script":"inline"}function F_(e){return Array.isArray(e.hooks)&&e.hooks.length>0?e.hooks:[{type:e.type,command:e.command,bash:e.bash,powershell:e.powershell,prompt:e.prompt}]}function j_(e,t,n,r){let o=e.componentPath(t);for(let[s,i]of Object.entries(n))if(!(!Array.isArray(i)||e.truncated))for(let a of i){if(!a||typeof a!="object"||e.truncated)continue;let c=a;for(let l of F_(c)){if(e.truncated)return;let u=l.command??l.bash??l.prompt??l.powershell??c.powershell??"",p=H_({type:l.type??c.type,command:l.command??c.command,bash:l.bash??c.bash,powershell:l.powershell??c.powershell,prompt:l.prompt??c.prompt}),m=typeof c.matcher=="string"?c.matcher:"",d=L(u),_=m?`${s}:${m}:${p}:${d}`:`${s}:${p}:${d}`,h=`${s}|${m}|${p}|${u}|attrs2`;e.push({kind:"HOOK",name:_,path:o,content_hash:L(h),origin:r,enabled:!0,trigger:"EVENT",attributes:{event:s,...m?{matcher:m}:{},action_kind:p,action_hash:d,...p!=="prompt"&&u.trim()?{command:Sc(u,e.home)}:{}}})}}}function Ve(e,t,n){if(!e.claimFile(t))return;let r=e.readJson(t,{});!r?.hooks||typeof r.hooks!="object"||j_(e,t,r.hooks,n)}import{existsSync as V_,readFileSync as W_}from"node:fs";var Ie=qe(Ke(),1);import{createHash as $_}from"node:crypto";import{join as Et}from"node:path";function B_(e){let t=[...e].sort((n,r)=>n.localeCompare(r,"en")).join(`
44
+ `);return $_("sha512").update(t).digest("hex").slice(0,16)}function K_(e){let t=process.platform==="win32"?Et(I("LOCALAPPDATA")??e,"npm-cache"):Et(e,".npm"),n=I("npm_config_cache")??I("NPM_CONFIG_CACHE");return n===void 0||n===t?[t]:[n,t]}function yc(e){return typeof e=="string"&&e.length>0&&e.length<=Ie.PACKAGE_FIELD_MAX?e:null}function G_(e,t,n){let r=B_(e);for(let o of K_(n)){let s=Et(o,"_npx",r),i=U(Et(s,"node_modules",...t.split("/"),"package.json"),{}),a=yc(i.version);if(a!==null)return a;let c=U(Et(s,"package-lock.json"),{}),l=yc(c.packages?.[`node_modules/${t}`]?.version);if(l!==null)return l}return null}function z_(e){return e.length<=Ie.PACKAGE_FIELD_MAX?e:`${e.slice(0,Ie.PACKAGE_FIELD_MAX-1)}\u2026`}function eo(e,t,n){if(typeof e!="string"||e.length===0)return null;let r=(0,Ie.npxPackageSpecs)(e,t??[]),o=r[0];if(o===void 0)return null;let s=(0,Ie.packageNameFromSpec)(o);if(s===null)return null;let i=G_(r,s,n);return{package_name:s,package_spec:z_(o),...i===null?{}:{package_version:i,package_version_source:"npx_cache"}}}function Rc(e,t){if(typeof e!="string"||e.length===0)return null;let[n,...r]=hn(e.trim());return n===void 0?null:eo(n,r,t)}function Sn(e,t){if(!e||typeof e!="object"||Array.isArray(e))return null;let n=e,r=Array.isArray(n.args)?n.args.filter(o=>typeof o=="string"):[];return eo(typeof n.command=="string"?n.command:null,r,t)}function Cc(e,t){let n=/^\s*command\s*=\s*(.+)$/m.exec(e);return n===null?null:eo(ze(n[1]??""),ht(e,"args"),t)}function J_(e){if(!e||typeof e!="object"||Array.isArray(e))return"unknown";let t=e;return typeof t.type=="string"&&t.type.length>0?t.type:typeof t.url=="string"?"http":typeof t.command=="string"?"stdio":"unknown"}function Ic(e,t,n){if(!e.claimFile(t))return;let o=e.readJson(t,{})?.mcpServers;if(!o||typeof o!="object")return;let s=e.componentPath(t);for(let[i,a]of Object.entries(o)){if(e.truncated)return;let c=J_(a),l=pc(a,c);Object.assign(l,Sn(a,e.home)??{});let u=fc(a);e.push({kind:"MCP_SERVER",name:i,path:s,content_hash:Qr(i,l,u),origin:n,enabled:u,attributes:l})}}function Ac(e,t,n){if(!V_(t)||!e.claimFile(t))return;let r;try{r=W_(t,"utf8")}catch{return}let o=e.componentPath(t),s=/^\[mcp_servers(?:\.(\w+)|\."([^"]+)"|\.'([^']+)')\]\s*$/gm,i;for(;(i=s.exec(r))!==null;){if(e.truncated)return;let a=i[1]??i[2]??i[3];if(!a)continue;let c=r.slice(i.index+i[0].length),l=c.search(/^\[mcp_servers(?:\.(?:\w+|"[^"]+"|'[^']+'))\]\s*$/m),u=l===-1?c:c.slice(0,l),p="unknown";/^\s*url\s*=/m.test(u)?p="http":/^\s*command\s*=/m.test(u)&&(p="stdio");let m=gc(u,p);Object.assign(m,Cc(u,e.home)??{});let d=mc(u);e.push({kind:"MCP_SERVER",name:a,path:o,content_hash:Qr(a,m,d),origin:n,enabled:d,attributes:m})}}import{existsSync as Y_,readdirSync as X_}from"node:fs";import{join as B}from"node:path";var kc=50;function to(e,t,n,r){if(!Y_(t))return{componentCount:0,expandTruncated:!1};let o=e.components.length,{expanded:s}=e.withPluginExpandCap(kc,()=>{Ne(e,{dir:B(t,"skills"),kind:"SKILL",origin:n,enabled:r,nested:"SKILL.md"}),Ne(e,{dir:B(t,"commands"),kind:"COMMAND",origin:n,enabled:r,extensions:[".md"]}),Ne(e,{dir:B(t,"agents"),kind:"SUBAGENT",origin:n,enabled:r,extensions:[".md"]})});Ve(e,B(t,"hooks","hooks.json"),n),Ve(e,B(t,"hooks.json"),n);let i=e.components.length-o,a=s>=kc;return{componentCount:i,expandTruncated:a}}function no(e,t){e.push({kind:"PLUGIN",name:t.pluginKey,path:t.rowPath,content_hash:t.contentHash,origin:"user",enabled:t.enabled,attributes:{...t.marketplace?{marketplace:t.marketplace}:{},...t.version?{version:t.version}:{},scope:t.scope,component_count:t.componentCount,...t.expandTruncated?{expand_truncated:!0}:{}}})}function Oc(e){let t=B(e.home,".claude/plugins/installed_plugins.json"),n=e.readJson(t,{});if(!n)return;let r=n.plugins??{},s=e.readJson(B(e.home,".claude/settings.json"),{})?.enabledPlugins??{},i=e.componentPath(t);for(let[a,c]of Object.entries(r)){if(e.truncated)return;let l=Array.isArray(c)?c:[c],u=l[0]??{},p=s[a]===!0,m=a.includes("@")?a.split("@").slice(1).join("@"):"",d=typeof u.version=="string"?u.version:"",_=typeof u.scope=="string"?u.scope:"user",h=`plugin:${a}`,S=0,E=!1;for(let y of l)if(typeof y.installPath=="string"&&y.installPath.length>0){let H=to(e,y.installPath,h,p);S+=H.componentCount,E=E||H.expandTruncated}no(e,{pluginKey:a,rowPath:i,enabled:p,scope:_,version:d||void 0,marketplace:m||void 0,componentCount:S,expandTruncated:E,contentHash:L(`${a}|${d}|${_}|${p}|${S}`)})}}function Z_(e){let t=e,n="";try{let r=X_(e,{withFileTypes:!0}).filter(o=>o.isDirectory()).map(o=>o.name);if(r.length===1&&r[0])t=B(e,r[0]),n=r[0];else if(r.length>1){let o=[...r].sort(),s=o[o.length-1];s&&(t=B(e,s),n=s)}}catch{}return{installPath:t,version:n}}var q_=/^\d+$/;function Q_(e){let t=e.filter(n=>!q_.test(n.pluginId));return t.length>0?t:e}function Pc(e){let t=[{base:B(e.home,".cursor/plugins/local"),scope:"local"},{base:B(e.home,".cursor/plugins/cache"),scope:"cache"}];for(let{base:n,scope:r}of t)if(!e.truncated)for(let o of e.readEntries(n)){if(!o.isDirectory()||e.truncated)continue;if(r==="local"){let a=o.name,c=B(n,o.name),l=`plugin:${a}`,{componentCount:u,expandTruncated:p}=to(e,c,l,!0);no(e,{pluginKey:a,rowPath:e.componentPath(c),enabled:!0,scope:"local",componentCount:u,expandTruncated:p,contentHash:L(`${a}|local|${u}`)});continue}let s=o.name,i=[];for(let a of e.readEntries(B(n,s))){if(!a.isDirectory())continue;let c=B(n,s,a.name),{installPath:l,version:u}=Z_(c);i.push({pluginId:a.name,installPath:l,version:u})}for(let a of Q_(i)){if(e.truncated)break;let c=`${a.pluginId}@${s}`,l=`plugin:${c}`,{componentCount:u,expandTruncated:p}=to(e,a.installPath,l,!0);no(e,{pluginKey:c,rowPath:e.componentPath(a.installPath),enabled:!0,scope:"cache",version:a.version||void 0,marketplace:s,componentCount:u,expandTruncated:p,contentHash:L(`${c}|${a.version}|${u}`)})}}}function th(e,t){let{layout:n,levelDir:r,origin:o,includeMachineWide:s}=t;for(let i of n.skillRoots)Ne(e,{dir:We(r,i),kind:"SKILL",origin:o,enabled:!0,nested:"SKILL.md"});for(let i of n.dirs)Ne(e,{dir:We(r,i.dir),kind:i.kind,origin:o,enabled:!0,extensions:i.extensions});for(let i of n.memory){let a=rc(i.map(c=>We(r,c)));a&&fn(e,{absolutePath:a,kind:"MEMORY",origin:o,enabled:!0,name:eh(a)})}for(let i of ni(n))Ve(e,We(r,i),o);for(let i of n.mcpJson??[])Ic(e,We(r,i),o);for(let i of n.mcpToml??[])Ac(e,We(r,i),o);if(s){if(n.managed)for(let i of Dt(n.managed,process.platform,e.home))i.toLowerCase().endsWith(".json")&&Ve(e,i,o);n.plugins==="claude"?Oc(e):n.plugins==="cursor"&&Pc(e)}}function xc(e,t){try{let n=new pn(e,{pathMode:t.pathMode,maxEntries:t.maxEntries});for(let r of t.layouts)th(n,{layout:r,levelDir:t.levelDir,origin:t.origin,includeMachineWide:t.includeMachineWide});return{scopeRef:t.scopeRef,anchor:t.levelDir,components:n.components,truncated:n.truncated}}catch{return}}function ro(e,t,n={}){let r={},o=n.shouldWalk;if(o===void 0||o("user","")){let c=xc(t,{layouts:Object.values(Fe),levelDir:t,origin:"user",includeMachineWide:!0,pathMode:"home-relative",maxEntries:me,scopeRef:""});c&&(r.user=c)}let s=n.inGitRepo===!0,i=null,a=n.launchCwd;if(a!==void 0){let c=Object.values(Se),l=zr({launchCwd:a,gitRoot:n.gitRoot,inGitRepo:s,remote:n.remote,home:t,hasProjectSpec:u=>oi(c,u)});i=l.parentRel;for(let u of l.anchors){let p=Mr(u.dir);if(o!==void 0&&!o(u.scope,p))continue;let m=xc(t,{layouts:c,levelDir:u.dir,origin:u.scope,includeMachineWide:!1,pathMode:"tilde",maxEntries:Vr,scopeRef:p});m&&(r[u.scope]=m)}r.parent||(i=null)}return{scopes:r,parentRel:i,cwdInGitRepo:s}}function oo(e,t,n={}){let r=n.truncated===!0,o=mt(e),s=new Set(e.map(u=>V(u.path,u.name)));if(n.forceFull===!0||t===void 0)return{hash:o,count:e.length,truncated:r,full:!0,upserts:e,removed:[],unchanged:!1};let a=[],c=t;for(let u of e){let p=V(u.path,u.name);c[p]!==u.content_hash&&a.push(u)}let l=[];if(!r){for(let u of Object.keys(c))if(!s.has(u)){let p=Fa(u);p&&l.push(p)}}return{hash:o,count:e.length,truncated:r,full:!1,upserts:a,removed:l,unchanged:a.length===0&&l.length===0}}var Tc=2*1024*1024,nh=new Set(["HOOK","MCP_SERVER","PLUGIN"]);function so(e,t,n){let r=new Set(t.map(s=>V(s.path,s.name))),o=[];for(let s of e)s.text!==void 0&&(n.has(s.content_hash)||r.has(V(s.path,s.name))||o.push(s));return o}function io(e,t,n){let r=new Set(e);for(let s of t)r.add(s);let o=new Set(n.map(s=>s.content_hash));return[...r].filter(s=>o.has(s))}function bc(e){return Buffer.byteLength(JSON.stringify(e),"utf8")}function Nc(e){if(e.text===void 0)return e;let{text:t,...n}=e;return n}function ao(e,t=Tc){let n=[],r=[];for(let u of e)nh.has(u.kind)?n.push(u):r.push(u);r.sort((u,p)=>(u.text?.length??0)-(p.text?.length??0));let o=[...n,...r],s=[],i=2,a=0,c=0,l=[];for(let u of o){let p=s.length>0?1:0,m=bc(u)+p;if(i+m<=t){s.push(u),i+=m,u.text!==void 0&&l.push(u.content_hash);continue}if(u.text!==void 0){let d=Nc(u),_=bc(d)+p;if(i+_<=t){s.push(d),i+=_,a+=1;continue}}c+=1}return{components:s,textDeferredCount:a,droppedCount:c,textHashesSent:l}}function co(e,t){return t.size===0?e:e.map(n=>n.text===void 0||!t.has(n.content_hash)?n:Nc(n))}var rh=["user","cwd","repo","parent"];function uo(e){let{collected:t,cacheFor:n,nowMs:r,maxBytes:o}=e,s=[];for(let b of rh){let T=t.scopes[b];if(!T)continue;let D=n(b,T.scopeRef),F=D.components,W=oo(T.components,F,{forceFull:F===void 0,truncated:T.truncated}),Ae=new Set(D.textHashes),j=so(T.components,W.upserts,Ae),M=co([...W.upserts,...j],Ae);s.push({scope:b,walk:T,delta:W,outgoing:M,outgoingKeys:new Set(M.map(C=>V(C.path,C.name))),deliveredTextHashes:Ae,cachedComponents:F})}let i=s.flatMap(b=>b.outgoing),a=ao(i,o),c=new Set(a.components.map(b=>V(b.path,b.name))),l=[],u=[],p=[],m=[],d=[],_=[],h=[];for(let b of s){let{scope:T,walk:D,delta:F}=b;_.push(...D.components),l.push(T);let W=a.components.filter(C=>b.outgoingKeys.has(V(C.path,C.name))),Ae=[...b.outgoingKeys].some(C=>!c.has(C)),j=F.truncated||Ae;j?p.push(T):F.full&&u.push(T),m.push(...W),!F.full&&!j&&d.push(...F.removed);let M=F.full?{}:{...b.cachedComponents??{}};if(!j)for(let C of F.removed)delete M[V(C.path,C.name)];for(let C of W)M[V(C.path,C.name)]=C.content_hash;h.push({scope:T,scopeRef:D.scopeRef,components:M,textHashes:io(b.deliveredTextHashes,W.filter(C=>C.text!==void 0).map(C=>C.content_hash),D.components),collectedAtMs:r,included:W.length>0||F.removed.length>0&&!j||F.full})}let S={user_spec_hash:mt(_),user_spec_count:_.length,user_spec_truncated:p.length>0};l.length>0&&(S.user_spec_scopes=l,S.user_spec_full_scopes=u,S.user_spec_truncated_scopes=p,S.user_spec_cwd_in_git_repo=t.cwdInGitRepo),u.length>0&&u.length===l.length&&(S.user_spec_full=!0),m.length>0&&(S.user_spec=m),d.length>0&&(S.user_spec_removed=d),a.textDeferredCount>0&&(S.user_spec_text_deferred=a.textDeferredCount);let E=t.scopes.cwd;E&&(S.user_spec_cwd_scope_ref=E.scopeRef);let y=t.scopes.repo;y&&(S.user_spec_repo_scope_ref=y.scopeRef);let H=t.scopes.parent;return H&&(S.user_spec_parent_scope_ref=H.scopeRef,t.parentRel&&(S.user_spec_parent_rel=t.parentRel)),{fields:S,scopes:h}}var Rt={cwd:"cwd_spec",repo:"repo_spec",parent:"parent_spec"};function En(e){return e==="cwd"||e==="repo"||e==="parent"}function yt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function lo(e){return!yt(e)||!yt(e.components)||!Object.values(e.components).every(t=>typeof t=="string")||!Array.isArray(e.text_hashes)||!e.text_hashes.every(t=>typeof t=="string")?!1:typeof e.collected_at_ms=="number"&&Number.isFinite(e.collected_at_ms)}function vc(e){return oh(e)}function wc(e){return sh(e)}function Mc(e){return ih(e)}function oh(e){if(!yt(e))return;let t={};for(let[n,r]of Object.entries(e))typeof r=="string"&&(t[n]=r);return t}function sh(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function po(e,t){if(!yt(e))return;let n=e[t];return lo(n)?n:void 0}function ih(e){if(!yt(e))return{};let t={};for(let[n,r]of Object.entries(e))lo(r)&&(t[n]=r);return t}function fo(e,t=20){let n=[];for(let[r,o]of Object.entries(e))lo(o)&&n.push([r,o]);return n.sort((r,o)=>o[1].collected_at_ms-r[1].collected_at_ms),Object.fromEntries(n.slice(0,t))}var lh=200,Lc=200,dh=["allow","deny","ask"],ph=/(?<=^|[\s(,=:])(?:~|[A-Za-z]:)?[\\/][^\s,)]+/g,go="<path>",fh=new RegExp(`${go}(?:\\s+[A-Za-z.][^\\s,)]*[\\\\/][^\\s,)]*)+`,"g");function mh(e){let t=e.replace(ph,go).replace(fh,go);return t.length>Lc?`${t.slice(0,Lc)}...`:t}function Rn(e){let t=U(e,{}),n=[];for(let r of dh)for(let o of t.permissions?.[r]??[])typeof o=="string"&&o.length>0&&n.push({key:mh(o),mode:r});return{model:t.model??"",permissionKeys:n}}function gh(e){let{serverManaged:t,fileBased:n}=$n(process.platform,e),r=Rn(t);if(r.model||r.permissionKeys.length>0)return r;let o="",s=[];for(let i of n){let a=Rn(i);a.model&&(o=a.model),s.push(...a.permissionKeys)}return{model:o,permissionKeys:s}}function _h(e){let t=new Set,n=[];for(let r of e){let o=`${r.mode}\0${r.key}`;t.has(o)||(t.add(o),n.push(r))}return n}var hh=10,Sh="self-config-cache.json",Dc=2;function Ye(){return I("EV_AI_HOOK_USER_SPEC")?.toLowerCase()==="off"}function Eh(){return I("EV_AI_HOOK_CWD_SPEC")?.toLowerCase()==="off"}function yh(e,t=Date.now()){return e===void 0||!Number.isFinite(e)?!0:t-e>=et}var Rh={claude:["claude"],cursor:["agent","cursor-agent"],codex:["codex"]};async function Ch(e,t=w){let n=Rh[e];if(!n||n.length===0)return null;let r=async o=>{let s=n[o];if(s===void 0)return null;let a=((await t(s,["--version"],2e3)).split(`
45
+ `)[0]??"").trim();return a||r(o+1)};return r(0)}function Ih(e=Uc()){return Je(e,".ev-ai","agent-hook",Sh)}function Ah(e){let n=[...e].sort((r,o)=>r.name.localeCompare(o.name)).map(r=>`${r.name}:${r.size}`).join(`
46
+ `);return L(n)}function yn(e,t,n=!1){let r=Ah(e),o=e.length;return t===r?n?{hash:r,count:o,truncated:n}:{hash:r,count:o}:n?{hash:r,count:o,entries:e,truncated:n}:{hash:r,count:o,entries:e}}function mo(e,t,n=[]){let r=0,o=!1,s=new Set;for(let i of[...t.map(a=>Je(e,a)),...n]){let a=uh(i);if(s.has(a))continue;s.add(a);let c=Vn(i);c.present&&(o=!0,r+=c.size)}return o?{present:!0,size:r}:{present:!1,size:0}}function kh(e){return ah(e)?G(ch(e,"utf8"),{}):{}}function Oh(e,t){try{q(e,`${JSON.stringify(t)}
47
+ `)}catch(n){let r=n instanceof Error?n.message:String(n);f(`WARN: self-config cache write failed open: ${r}`)}}function Ph(e,t,n){if(t==="user")return e.user_spec_collected_at_ms;if(En(t))return po(e[Rt[t]],n)?.collected_at_ms}function xh(e,t,n){if(t==="user")return{components:vc(e.user_spec_components),textHashes:wc(e.user_spec_text_hashes)};if(!En(t))return{components:void 0,textHashes:[]};let r=po(e[Rt[t]],n);return r?{components:r.components,textHashes:r.text_hashes}:{components:void 0,textHashes:[]}}function bh(e,t,n,r){let o={...e,send_count:n};for(let s of Object.keys(t)){let i=t[s];i.entries!==void 0&&(o[s]=i.hash)}if(r){o.user_spec_layout_version=Dc,r.home&&(o.user_spec_collected_at_ms=r.home.collectedAtMs,r.home.included&&(o.user_spec=r.hash,o.user_spec_components=r.home.components),o.user_spec_text_hashes=r.home.textHashes);for(let s of r.project){if(!En(s.scope))continue;let i=Rt[s.scope],a=Mc(o[i]),c=a[s.scopeRef];a[s.scopeRef]={components:s.included?s.components:c?.components??{},text_hashes:s.textHashes,collected_at_ms:s.collectedAtMs},o[i]=fo(a)}}return o}async function Hc(e,t=process.cwd(),n=Uc(),r={}){let o=e==="claude",s=r.gitRoot??t,i=await Ch(e),a="",c=[];if(o){let j=gh(n),M=Rn(Je(n,".claude/settings.json")),C=Rn(Je(t,".claude/settings.local.json"));a=j.model||C.model||M.model,c=_h([...j.permissionKeys,...M.permissionKeys,...C.permissionKeys]).slice(0,lh)}let l={present:!1,size:0},u=j=>{let M=[],C=!1;for(let ne of j){let Ot=Jo(Je(n,ne));if(M=M.concat(Ot.entries),C=C||Ot.truncated,M.length>=me){M=M.slice(0,me),C=!0;break}}return{entries:M,truncated:C}},p=Ih(n),m=kh(p),d=m[e]??{},_=(d.send_count??0)+1,h=_>0&&_%hh===0,S=j=>h?void 0:d[j],E=u(ye.skills),y=u(ye.subagents),H=u(ye.commands),b=u(ye.rules),T={skills:yn(E.entries,S("skills"),E.truncated),subagents:yn(y.entries,S("subagents"),y.truncated),commands:yn(H.entries,S("commands"),H.truncated),rules:yn(b.entries,S("rules"),b.truncated)},D={runner_platform:e,config_scope:"user",cli_version:i,claude_version:o?i:null,model:o&&a||null,permission_keys:c,user_scope:{skills:T.skills,subagents:T.subagents,commands:T.commands,rules:T.rules,memory:mo(n,ye.memory),settings:mo(n,ye.settings,si(n)),mcp:mo(n,ye.mcp)},local_settings:o?Vn(Je(t,".claude/settings.local.json")):l},F=null,W=r.nowMs??Date.now();if(!Ye()){let j=d.user_spec_layout_version!==Dc,M=ro(e,n,{launchCwd:Eh()?void 0:r.launchCwd,gitRoot:s,inGitRepo:r.inGitRepo,remote:r.remote,shouldWalk:(C,ne)=>j||yh(Ph(d,C,ne),W)});if(Object.keys(M.scopes).length>0){let C=uo({collected:M,cacheFor:(ne,Ot)=>j?{components:void 0,textHashes:[]}:xh(d,ne,Ot),nowMs:W});Object.assign(D,C.fields),F={hash:C.fields.user_spec_hash,home:C.scopes.find(ne=>ne.scope==="user")??null,project:C.scopes.filter(ne=>ne.scope!=="user")}}}let Ae=bh(d,T,_,F);return{config:D,commit:()=>{m[e]=Ae,Oh(p,m)}}}import{homedir as Wh}from"node:os";import{join as $c}from"node:path";function we(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}import{join as Cn}from"node:path";function Th(e){return Cn(e,".ev-ai","agent-hook","js","signed-v1")}function Nh(e){return Cn(Th(e),"scopes")}function Fc(e,t){return Cn(Nh(e),t)}function jc(e){return Cn(e,"attempts")}function _o(e){return String(e).padStart(10,"0")}var vh=/^(\d{10})$/,wh=/^(\d{10})\.done$/,Mh=/^[0-9a-f]{128}$/,Lh=64;async function zc(e,t,n=!1){let r=jc(t),o=await qs(e,r),s=new Map,i=new Map,a=Bc(o,vh),c=Bc(o,wh),l=async m=>{let d=await Gc(e,$c(r,Uh(m)));return d&&s.set(m,{record:Hh(d.value),mtimeMs:d.mtimeMs}),d!==void 0},u=async m=>{let d=Fh((await Gc(e,$c(r,Dh(m))))?.value);return d&&i.set(m,d),d!==void 0};if(!n)return await Promise.all([...a.map(l),...c.map(u)]),{claims:s,dones:i};await Promise.all([Kc(a,l),Kc(c,u)]);let p=Ct(s);return p<Ct(i)&&c.includes(p)&&await u(p),{claims:s,dones:i}}function Bc(e,t){return e.flatMap(n=>{let r=t.exec(n);return r?[Number(r[1])]:[]})}async function Kc(e,t){for(let n of[...e].sort((r,o)=>o-r))if(await t(n))return}function Ct(e){let t=0;for(let n of e.keys())n>t&&(t=n);return t}function Vc(e){if(e.record!=="empty"&&e.record.started_at){let t=Date.parse(e.record.started_at);if(Number.isFinite(t))return t}return e.mtimeMs}function Uh(e){return _o(e)}function Dh(e){return`${_o(e)}.done`}async function Gc(e,t){let n;try{n=await e.stat(t)}catch(o){if(cr(o))return;throw o}let r=n.mtimeMs;if(n.size===0||n.size>Tr)return{mtimeMs:r};try{let o=await e.readFile(t);return o.byteLength===0||o.byteLength>Tr?{mtimeMs:r}:{mtimeMs:r,value:JSON.parse(o.toString("utf8"))}}catch{return{mtimeMs:r}}}function Hh(e){if(!we(e))return"empty";let t={};return typeof e.started_at=="string"&&(t.started_at=e.started_at),(e.owner==="bootstrap"||e.owner==="refresh")&&(t.owner=e.owner),e.resync===!0&&(t.resync=!0),t}function Fh(e){if(!we(e))return;let t=e;if(typeof t.finished_at!="string"||typeof t.outcome!="string"||typeof t.interval_s!="number"||!Number.isFinite(t.interval_s))return;let n=jh(t.selection);if(n)return{finished_at:t.finished_at,interval_s:t.interval_s,outcome:t.outcome,selection:n}}function jh(e){if(!we(e))return;let t=e;if(t.kind==="bundled")return t.why==="server"||t.why==="bootstrap_failed"?{kind:"bundled",why:t.why}:void 0;if(t.kind==="cached"&&typeof t.digest=="string"&&Mh.test(t.digest)&&typeof t.version=="string"&&t.version.length>0&&typeof t.sha512=="string"&&$h(t.sha512)===t.digest)return{kind:"cached",digest:t.digest,version:t.version,sha512:t.sha512}}function $h(e){if(e.length===0||!/^[A-Za-z0-9+/]+=*$/.test(e))return;let t=Buffer.from(e,"base64");if(!(t.byteLength!==Lh||t.toString("base64")!==e))return t.toString("hex")}function zh(e){return e==="bootstrap"?3e3:6e4}function Vh(e,t){let n=Ct(e.claims);if(n===0)return;let r=Ct(e.dones),o=e.claims.get(n),s=e.dones.get(n);if(o&&!s){let a=Vc(o),c=o.record==="empty"?void 0:o.record.owner,l=zh(c)+3e4;if(t-a>l)return{n,latest_claim:n,outcome:"incomplete",finished_at:null,selection_version:Wc(e.dones.get(r)?.selection)}}if(r===0)return;let i=e.dones.get(r);if(i)return{n:r,latest_claim:n,outcome:i.outcome,finished_at:i.finished_at,selection_version:Wc(i.selection)}}async function Jc(e,t,n){try{let r=await zc(Qs(),Fc(e,t),!0);return Vh(r,n)}catch{return}}function Wc(e){return e?.kind==="cached"&&typeof e.version=="string"?e.version:null}async function Yc(e=Wh()){let t=Nr()?.launcherScope;if(!t)return{};let n=await Jc(e,t,Date.now());return n?{launcher_scope:t,launcher_attempt:n}:{launcher_scope:t}}function Xe(e,t,n){let r={installation_id:n.installationId};n.platformAgentId&&(r.platform_agent_id=n.platformAgentId),n.sessionId&&(r.session_id=n.sessionId),n.turnId&&(r.turn_id=n.turnId);let o={schema_version:fe,event:e,timestamp:Ht(),session_id:n.sessionId||null,turn_id:n.turnId||null,installation_id:n.installationId,platform:n.runnerPlatform,platform_agent_id:n.platformAgentId||null,runner_event:n.runnerEvent||null,agent_hook_version:re,host_arch:process.arch,node_version:process.version,correlation:r,payload:t},s=Nr();return s&&(o.launcher_version=s.launcherVersion,o.hook_source=s.hookSource,o.hook_fallback_reason=s.fallbackReason??null,o.launcher_scope_match=ha(n.collectorUrl,s.launcherScope)),e==="session_start"&&(n.launcher_scope&&(o.launcher_scope=n.launcher_scope),n.launcher_attempt&&(o.launcher_attempt=n.launcher_attempt)),o}import{existsSync as Xc}from"node:fs";import{spawn as Zc}from"node:child_process";import{fileURLToPath as Yh}from"node:url";import{gzipSync as Jh}from"node:zlib";function ho(e){return I("EV_AI_HOOK_COMPRESS")==="off"?{body:e}:Buffer.byteLength(e,"utf8")<Ho?{body:e}:{body:Jh(Buffer.from(e,"utf8")),contentEncoding:"gzip"}}function In(e){let t={"Content-Type":"application/json"};return e!==void 0&&(t["Content-Encoding"]=e),t}function So(e){return typeof e=="string"?Buffer.byteLength(e,"utf8"):e.length}var It="__post",An="__work";async function Xh(e,t,n={}){if(Ye())return e;let r=await Ur(n.gitRoot??process.cwd(),w,process.env,{runnerPlatform:t,home:n.home}),o=we(e.self_config)?e.self_config:{};return{...e,self_config:{...o,runner_platform:typeof o.runner_platform=="string"?o.runner_platform:t,operator:r}}}function Zh(e,t){let n=we(e.payload)?Object.keys(e.payload):[],r=e.correlation&&typeof e.correlation=="object"?Object.keys(e.correlation):[];return JSON.stringify({event:e.event,schema_version:e.schema_version,agent_hook_version:e.agent_hook_version,host_arch:e.host_arch,node_version:e.node_version,build_ms:e.build_ms,body_bytes:t,correlation_keys:r,payload_keys:n})}function qc(e){switch(e){case"session_start":return Mo;case"session_end":return Lo;case"tool_invoked":case"skill_invoked":return Dn;default:return Dn}}function qh(e,t,n){return`${JSON.stringify({url:e,timeoutMs:t})}
48
+ ${n}`}function Qc(e,t=[],n=process.execPath,r=import.meta.url,o=Xc){if(Mt(n))return{command:n,args:[e,...t]};let s=Yh(r);return o(s)?{command:n,args:[s,e,...t]}:{command:n,args:[e,...t]}}function Qh(e=process.execPath,t=import.meta.url,n=Xc){return Qc(It,[],e,t,n)}function eS(e){let t=e.indexOf(`
49
+ `);if(t<0)return null;let n;try{n=JSON.parse(e.slice(0,t))}catch{return null}return{meta:n,body:e.slice(t+1)}}async function kn(e,t=fetch){let n=await e(),r=eS(n);if(!r)return;let{meta:o,body:s}=r,i=ho(s),a=In(i.contentEncoding);try{await t(o.url,{method:"POST",headers:a,body:i.body,signal:AbortSignal.timeout(Number(o.timeoutMs))})}catch{}}async function tS(e,t,n,r=fetch){let o=qc(e),s=ho(t),i=In(s.contentEncoding),a=So(s.body);f(`POST event=${e} url=${wt(n)} size=${a} encoding=${s.contentEncoding??"identity"} platform=${process.platform}`);let c=Date.now();try{let l=await r(n,{method:"POST",headers:i,body:s.body,signal:AbortSignal.timeout(o)});if(!l.ok&&s.contentEncoding==="gzip"&&(l.status===400||l.status===415)){try{await l.text()}catch{}f(`POST gzip rejected http=${l.status} \u2014 retrying uncompressed`),l=await r(n,{method:"POST",headers:In(),body:t,signal:AbortSignal.timeout(o)})}let u=Date.now()-c;if(l.ok)return f(`POST outcome=ok elapsed_ms=${u} http=${l.status}`),!0;let p=(await l.text()).slice(0,200).replace(/[\n\r]/g,"");return f(`POST outcome=fail elapsed_ms=${u} http=${l.status} body=${p}`),!1}catch(l){let u=Date.now()-c,p=l instanceof Error?l.message:String(l);return f(`POST outcome=fail elapsed_ms=${u} http=000 body=${p}`),!1}}async function eu(e,t,n,r,o){try{let s=r(e,t,{detached:!0,stdio:["pipe","ignore","ignore"],windowsHide:!0});s.on("error",()=>{}),s.stdin.on("error",()=>{});let i=!1;return await new Promise(a=>{let c=setTimeout(()=>{if(!i){f(`WARN: ${o} stdin handoff timed out \u2014 continuing fail-open`);try{s.stdin.destroy()}catch{}}a()},Uo),l=()=>{i=!0,clearTimeout(c),a()};s.stdin.end(n,()=>l()),s.stdin.once("error",()=>l())}),s.unref(),s}catch(s){let i=s instanceof Error?s.message:String(s);return f(`WARN: ${o} spawn failed open: ${i}`),null}}async function nS(e,t,n,r=Zc,o=Qh){let s=qc(e),i=qh(n,s,t),{command:a,args:c}=o();return eu(a,c,i,r,"detached post")}async function tu(e,t,n=Zc,r=Qc){let{command:o,args:s}=r(An,t);return eu(o,s,e,n,"detached work")}async function Ze(e,t,n,r,o,s,i){if(!o)return f("WARN: collector URL missing \u2014 pass --url on the hook command or set collector_url in manifest"),!1;if(!vt(o))return f(`WARN: collector URL blocked (https required): ${wt(o)}`),!1;let a=await Xh(t,n.runnerPlatform,i),c=r(e,a,{...n,collectorUrl:o});s!==void 0&&(c.build_ms=Math.max(0,Date.now()-s));let l=JSON.stringify(c),u=`${l}
50
+ `,p=I("EV_AI_HOOK_DEBUG");p==="full"?f(`DEBUG envelope=${l}`):p==="1"&&f(`DEBUG summary=${Zh(c,So(u))}`);let m=process.argv.includes(An),d=I("EV_AI_HOOK_SYNC")==="1";return nn(n.runnerEvent,n.runnerPlatform)||m||d?tS(e,u,o):(await nS(e,u,o),!1)}import{createReadStream as rS}from"node:fs";import{stat as oS}from"node:fs/promises";import{basename as sS,resolve as iS}from"node:path";import{createInterface as aS}from"node:readline";var cS=1024*1024;function uS(e){let t=e.replace(/\\/g,"/");return t.includes("/.claude/projects/")&&sS(t).endsWith(".jsonl")}async function nu(e){if(!e||!uS(e))return null;try{let t=iS(e),n=await oS(t);if(!n.isFile())return null;let r=Math.max(0,n.size-cS),o=[],s=aS({input:rS(t,{encoding:"utf8",start:r}),crlfDelay:1/0});for await(let i of s)i.length!==0&&o.push(i);r>0&&o.length>0&&o.shift();for(let i=o.length-1;i>=0;i--){let a=o[i];if(a)try{let c=JSON.parse(a);if(c.type!=="assistant")continue;let l=c.message;if(!l||typeof l!="object")continue;let u=l.model;if(typeof u=="string"&&u.length>0)return u}catch{continue}}return null}catch{return null}}function On(e){return{sessionId:e.sessionId,turnId:e.turnId,installationId:e.manifest.installationId,runnerPlatform:e.runnerPlatform,platformAgentId:e.platformAgentId,runnerEvent:e.runnerEvent}}function kt(e,t){return{gitRoot:e.manifest.gitRoot,...t?{home:t}:{}}}function yo(e){return{gitRoot:e.manifest.gitRoot,inGitRepo:e.manifest.inGitRepo,runnerEvent:e.runnerEvent}}async function su(e){let t=Date.now();await RS(e);let{gitRoot:n}=e.manifest;await Co(e,n);let r=yo(e);return{buildStartedAtMs:t,gitRoot:n,hookInput:ln(e.hookInput,e.manifest.manifest,r),envelopeFields:On(e),launchCwd:Kr(e.hookInput,r),home:dS()}}function ru(e){try{return z(lS(e))}catch{return null}}function iu(e){return e.startsWith("/")||/^[A-Za-z]:\//.test(e)}function ou(e,t){let n=e.replaceAll("\\","/");if(!iu(n))return null;let r=z(e),o=z(t),s=ru(e)??r,i=ru(t)??o;return s.startsWith(`${i}/`)?s.slice(i.length+1):r.startsWith(`${o}/`)?r.slice(o.length+1):null}function au(e,t,n){if(!e)return{repositorySourcePath:null,userSourcePath:null};let r=e.replaceAll("\\","/"),s=ou(e,t)??(iu(r)?null:r),i=ou(e,n);return{repositorySourcePath:s,userSourcePath:i}}function Eo(e,t,n,r,o){return cu(e,au(n,t.gitRoot,t.home),r,o)}function cu(e,{repositorySourcePath:t,userSourcePath:n},r,o){let s=t??n,i=s===null?null:o(s),a=i!==null&&s!==null?pS({installableKind:r,sourcePath:s,nativeKey:i,inRepository:t!==null,platformAgentId:e.platformAgentId,installationId:e.manifest.installationId}):void 0;return{sourcePath:s,nativeKey:i,componentReference:a}}function pS(e){try{let t=e.inRepository?gS(e.platformAgentId,e.sourcePath):(0,O.installationRootExternalKey)(e.installationId,(0,O.userConfigRootFromPath)(e.sourcePath));return t?(0,O.buildComponentReference)({installationRootExternalKey:t,installableKind:e.installableKind,sourcePath:e.sourcePath,nativeKey:e.nativeKey}):void 0}catch{return}}function Ro(e,t,n){return Ze("tool_invoked",{...n,success:null,duration_ms:null,hook_input:t.hookInput},t.envelopeFields,Xe,e.manifest.collectorUrl,t.buildStartedAtMs,kt(e,t.home))}function fS(e){return Xi(e.runnerEvent,e.runnerPlatform)?[]:pi(e.hookInput)}function mS(e,t){return Ro(e,t,{})}var uu=new Set([...Object.values(Te),".github"]);function gS(e,t){let n=e.indexOf(":");if(n<=0)return null;let r=e.slice(0,n),o=t.replaceAll("\\","/").split("/").filter(Boolean),s=o.findIndex(i=>uu.has(i));return s<0?null:`${r}:${o.slice(0,s+1).join("/")}`}var lu=".codex/config.toml",_S=new Map([["claude_json_user",".claude.json"],["cursor_mcp_user",".cursor/mcp.json"],["codex_toml_user",lu]]);function hS(e,t,n,r,o,s,i){if(e===null||t===null||!(i!==null||/^mcp__.+?__.+$/i.test(e)||/^MCP:[^:]+:.+$/i.test(e)||/^MCP:.+__.+$/i.test(e)||e.toLowerCase()===`mcp:${t.toLowerCase()}`))return;let c=s.find(h=>h.name.toLowerCase()===t.toLowerCase()),l=c?_S.get(c.source):o==="codex"?lu:void 0,u=c?.sourcePath??l;if((c?.scope==="user"||l!==void 0)&&u)try{let h=(0,O.userConfigRootFromPath)(u);return(0,O.buildComponentReference)({installationRootExternalKey:(0,O.installationRootExternalKey)(r,h),installableKind:O.ComponentKind.INTERFACE,sourcePath:u,nativeKey:c?.name??t})}catch{return}if(n===null)return;let m=n.indexOf(":");if(m<=0||m===n.length-1)return;let d=n.slice(m+1),_=d.replaceAll("\\","/").split("/").at(-1);if(!(_===void 0||!uu.has(_)))try{return(0,O.buildComponentReference)({installationRootExternalKey:n,installableKind:O.ComponentKind.INTERFACE,sourcePath:d,nativeKey:t})}catch{return}}function SS(...e){for(let t of e)if(t)return t;return null}function Le(e,t,n){if(e.status==="fulfilled")return e.value;let r=e.reason instanceof Error?e.reason.message:String(e.reason);return f(`WARN: ${n} failed open: ${r}`),t}function ES(e){let t={present:!1,size:0},n={hash:"",count:0};return{config:{runner_platform:e,config_scope:"user",cli_version:null,claude_version:null,model:null,permission_keys:[],user_scope:{skills:n,subagents:n,commands:n,rules:n,memory:t,settings:t,mcp:t},local_settings:t},commit:()=>{}}}function yS(e,t){return{runner_platform:e,config_scope:"user",...t?{operator:t}:{}}}var Me=new Set,At=null;async function RS(e){if(Ye())return;let t=e.manifest.installationId,n=e.manifest.installationStorePath;if(Me.has(t))return;if(!Hr(n)){Me.add(t);return}let r=ot({sessionId:e.sessionId,hostname:Ft()});if($a(r)){if(At){await At;return}At=(async()=>{if(Me.has(t)||!Hr(n)){Me.add(t);return}if(!_s(n)){Me.add(t);return}let o=!1;try{let s=Date.now(),{gitRoot:i}=e.manifest,a=String(e.runnerPlatform),{operatorResolved:c,fields:l}=await du(e,r,en(i),Dr({gitRoot:i,installationStorePath:n,forceResend:!1,runnerPlatform:a})),u={...l,self_config:yS(a,c.operator),run_meta:{trigger:"cloud_identity_bootstrap"}};o=!!await Ze("session_start",u,On(e),Xe,e.manifest.collectorUrl,s,kt(e)),o&&(c.commit(),Me.add(t))}finally{hs(n)}})().finally(()=>{At=null}),await At}}async function Co(e,t,n){try{e.platformAgentId=await Li(e.manifest.manifest,e.platformAgentId,String(e.runnerPlatform),t,n,e.manifest.installationStorePath,e.manifest.repoKey)}catch(r){let o=r instanceof Error?r.message:String(r);f(`WARN: derivePlatformAgentId failed open: ${o}`)}}async function du(e,t,n,r){let[o,s,i,a,c]=await Promise.allSettled([n,qo(),Ea(t),es(),r]),l=Le(o,null,"gitSnapshot"),u=Le(s,"","detectVirt"),p=Le(i,null,"probeCloud"),m=Le(a,{},"hostEnv"),d=Le(c,{commit:()=>{}},"resolveOperatorForSend");return await Co(e,e.manifest.gitRoot,l),{operatorResolved:d,fields:{identity:{host:Ft(),context:t,virt:u||null,cloud:p,git:l},host_env:m,env_vars:ya()}}}async function CS(e){let t=Date.now(),{gitRoot:n}=e.manifest,r=ot({sessionId:e.sessionId,hostname:Ft()}),o=String(e.runnerPlatform),s=yo(e),i=Kr(e.hookInput,s),a=en(n),c=Yc().catch(()=>({})),l=Ye()?Promise.resolve({commit:()=>{}}):Dr({gitRoot:n,installationStorePath:e.manifest.installationStorePath,forceResend:!1,runnerPlatform:o}),u=du(e,r,a,l),[p,m]=await Promise.allSettled([Ar(e.manifest.manifest,n,o),a.catch(()=>null).then(D=>Hc(o,n,void 0,{installationStorePath:e.manifest.installationStorePath,gitRoot:n,launchCwd:i,inGitRepo:e.manifest.inGitRepo,remote:D?.remote??null}))]),{operatorResolved:d,fields:_}=await u,h=Le(p,[],"mcpDeclared"),S=Le(m,ES(o),"selfConfig"),E=S.config,y=R(e.hookInput,"model");y&&(E.model=y);let H={..._,mcp:{declared:h},self_config:E,run_meta:{trigger:e.hookSource||"startup"},hook_input:ln(e.hookInput,e.manifest.manifest,{...s,launchCwd:i})},b=await c;await Ze("session_start",H,{...On(e),...b},Xe,e.manifest.collectorUrl,t,kt(e))&&(S.commit(),d.commit(),Me.add(e.manifest.installationId))}async function IS(e){let t=Date.now(),[,n]=await Promise.all([Co(e,e.manifest.gitRoot),e.runnerPlatform==="claude"?nu(R(e.hookInput,"transcript_path")):null]),r=e.runnerEvent.toLowerCase(),o=SS(R(e.hookInput,"status"),R(e.hookInput,"stop_reason"),R(e.hookInput,"reason"),pt(R(e.hookInput,"error")),r==="stop"?se(e.hookInput,"is_interrupt")===!0?"interrupted":"completed":""),s=ln(e.hookInput,e.manifest.manifest,yo(e));n&&(s.model=n),r!=="stopfailure"&&!Va(e.manifest.manifest)&&s.last_assistant_message===void 0&&(s.last_assistant_message=""),await Ze("session_end",{status:o,...n?{model:n}:{},hook_input:s},On(e),Xe,e.manifest.collectorUrl,t,kt(e))}async function AS(e){let t=fS(e),n=Fi(e.hookInput),r=Yi(e.runnerEvent),o=r&&t.length===0&&n.length===0;if(t.length===0&&n.length===0&&!r)return;let s=await su(e);await Promise.all([o?mS(e,s):void 0,t.length===0?void 0:kS(e,s,t),n.length===0?void 0:OS(e,s,n)])}function pu(e,t,n,r){let o=r??di({skillId:n,launchCwd:t.launchCwd,gitRoot:t.gitRoot,home:t.home}),s=Eo(e,t,o,O.ComponentKind.SKILL,O.nativeKeyForSkillPath);if(s.sourcePath!==null&&lr(s.sourcePath)?.toLowerCase()===n.toLowerCase())return s.componentReference===void 0?{}:{componentReference:s.componentReference};let i=r??ji({commandId:n,launchCwd:t.launchCwd,gitRoot:t.gitRoot,home:t.home,runnerPlatform:e.runnerPlatform}),a=Eo(e,t,i,O.ComponentKind.COMMAND,O.nativeKeyForCommandPath);return a.nativeKey?.toLowerCase()!==n.toLowerCase()?{}:{commandName:a.nativeKey,...a.componentReference===void 0?{}:{componentReference:a.componentReference}}}function kS(e,t,n){let r=Jt(e.hookInput.tool_input);return Promise.all(n.map(o=>{let s=pu(e,t,o,r);return Ro(e,t,{tool_name:"Skill",skill_name:o,...s.commandName===void 0?{}:{command_name:s.commandName},...s.componentReference===void 0?{}:{component_reference:s.componentReference}})}))}function OS(e,t,n){return Promise.all(n.map(r=>{let o=Ui({relativePath:r,launchCwd:t.launchCwd,gitRoot:t.gitRoot,home:t.home,runnerPlatform:e.runnerPlatform}),s=Eo(e,t,o,O.ComponentKind.RULE,O.nativeKeyForRulePath),i=s.nativeKey??Hi(r);return Ro(e,t,{tool_name:"Rule",rule_name:i,...s.componentReference===void 0?{}:{component_reference:s.componentReference}})}))}var PS=[{kind:O.ComponentKind.SKILL,nativeKeyFn:O.nativeKeyForSkillPath},{kind:O.ComponentKind.RULE,nativeKeyFn:O.nativeKeyForRulePath},{kind:O.ComponentKind.COMMAND,nativeKeyFn:O.nativeKeyForCommandPath}];function xS(e,t,n){if(n.skillName===null&&n.ruleName===null&&n.commandName===null)return{};let r=pr(e.hookInput);if(r===null)return n.skillName===null?{}:pu(e,t,n.skillName,null);let o=au(r,t.gitRoot,t.home);for(let s of PS){let i=cu(e,o,s.kind,s.nativeKeyFn);if(i.nativeKey!==null)return{...i.componentReference===void 0?{}:{componentReference:i.componentReference},...s.kind===O.ComponentKind.RULE?{ruleName:i.nativeKey}:{},...s.kind===O.ComponentKind.COMMAND?{commandName:i.nativeKey}:{}}}return{}}var bS=/mcp/i;function TS(e,t,n,r){let o=bS.test(e.runnerEvent);if(!r.hasMcpIdentity&&!o)return{};let s=o?Rc(t,n):Sn(r.declaredConfig,n);return s===null?{}:Object.fromEntries(Object.entries(s).filter(i=>typeof i[1]=="string").map(([i,a])=>[`mcp_${i}`,a]))}async function NS(e){let t=await su(e),n=ea(e.hookInput,e.runnerEvent),{toolName:r,skillName:o}=n,s=dr(e.hookInput),i=Ec(s,t.home),a=na(e.hookInput),c=Zi(e.runnerEvent),l=c===!1?ra(e.hookInput,e.runnerEvent):null,u=pt(R(e.hookInput,"mcp_server_name")),p=u!==null||r!==null&&rn(r)?await Ar(e.manifest.manifest,e.manifest.gitRoot,String(e.runnerPlatform),t.home).catch(()=>[]):[],{mcpServer:m,mcpTool:d}=sa(r,p.map(D=>D.name),u??""),_=hS(r,m,e.platformAgentId,e.manifest.installationId,String(e.runnerPlatform),p,u),h=_===void 0?xS(e,t,n):{},S=m===null?null:Vi(m,e.manifest.manifest,e.manifest.gitRoot,String(e.runnerPlatform),t.home),E=TS(e,s,t.home,{hasMcpIdentity:!!m||!!d,declaredConfig:S}),y=_??h.componentReference,H=h.ruleName??n.ruleName,b=h.commandName??n.commandName,T=ta(e.hookInput);await Ze("tool_invoked",{tool_name:r,skill_name:o,...H?{rule_name:H}:{},...b?{command_name:b}:{},success:c,duration_ms:a,...i?{executable:i}:{},...l?{failure_reason:l}:{},...m?{mcp_server:m}:{},...d?{mcp_tool:d}:{},...E,...y?{component_reference:y}:{},...T?{subagent_type:T}:{},hook_input:t.hookInput},t.envelopeFields,Xe,e.manifest.collectorUrl,t.buildStartedAtMs,kt(e,t.home))}async function fu(e){switch(e.internalEvent){case"session_start":await CS(e);return;case"session_end":await IS(e);return;case"skill_invoked":await AS(e);return;case"tool_invoked":await NS(e);return;default:return}}import{mkdirSync as vS,readdirSync as wS,readFileSync as MS,statSync as mu,unlinkSync as LS,writeFileSync as US}from"node:fs";import{homedir as Pn}from"node:os";import{join as Io}from"node:path";var DS="turns",gu=1440*60*1e3,HS=100,FS=new Set(["stop","stopfailure","sessionend"]);function Ao(e=Pn()){return Io(ie(e),DS)}function _u(e,t){return Io(e,nt(t))}function jS(e,t=Date.now()){let n;try{n=wS(e)}catch{return}let r=0;for(let o of n){if(r>=HS)return;r+=1;try{let s=Io(e,o);t-mu(s).mtimeMs>gu&&LS(s)}catch{}}}function $S(e,t,n=Pn()){let r=e.trim(),o=t.trim();if(!(!r||!o))try{let s=Ao(n);vS(s,{recursive:!0}),US(_u(s,r),o,"utf8")}catch{}}function BS(e,t=Pn()){let n=e.trim();if(!n)return"";try{let r=_u(Ao(t),n);return Date.now()-mu(r).mtimeMs>gu?"":MS(r,"utf8").trim()}catch{return""}}function hu(e,t,n,r=Pn()){let o=t.trim(),s=FS.has(n.trim().toLowerCase());return s&&jS(Ao(r)),o?($S(e,o,r),o):s?BS(e,r):""}async function Su(e,t,n,r){let o=t??await Gn(Hn),s=G(o,{}),i=await Cs(process.cwd(),{sessionId:dt(s)});if(!i)return;r&&(i.collectorUrl=r);let a=qi(s,i.manifest.platform,n),c=Qi(e,a.runnerEvent);if(!c){f(`WARN: unknown hook event '${a.runnerEvent}'; skipping telemetry`);return}let l={hookInput:s,sessionId:a.sessionId,turnId:hu(a.sessionId,a.turnId,a.runnerEvent),runnerEvent:a.runnerEvent,runnerPlatform:a.runnerPlatform,hookSource:a.hookSource,internalEvent:c,manifest:i,platformAgentId:i.platformAgentId};await fu(l)}function KS(e){if(I("EV_AI_HOOK_SYNC")==="1")return!0;let{parsed:t,hookInput:n,runnerEvent:r}=e,o=lt(n,r,void 0,t.runner);return nn(r,o)}function Eu(e,t){let n=Nn(e),r=G(t,{}),o=n.event??Pr(r);return Xo()||Ji(n.runner,r,o)?null:{parsed:n,hookInput:r,runnerEvent:o}}async function yu(e=process.argv.slice(2)){if(_a(),e[0]===It){try{await kn(rt)}catch{}return 0}if(e[0]===An){try{let t=await rt(),n=Eu(e.slice(1),t);if(!n)return 0;let{parsed:r}=n;await Su(r.event,t,r.runner,kr(r))}catch(t){let n=t instanceof Error?t.message:String(t);f(`WARN: detached work failed open: ${n}`)}return 0}try{let t=await Gn(Hn),n=Eu(e,t);if(!n)return 0;let{parsed:r,hookInput:o,runnerEvent:s}=n;if(!la(o,s,r.runner))return 0;KS(n)?await Su(r.event,t,r.runner,kr(r)):await tu(t,e)}catch(t){let n=t instanceof Error?t.message:String(t);f(`WARN: hook failed open: ${n}`)}finally{Wo()}return 0}function xn(){f("Usage: ev-ai-agent-hook <configure|install|migrate-to-plugin|update|uninstall|--version>"),f(" configure [--url <\u2026/{orgToken}/hook>]"),f(" (manifest only \u2014 pair with marketplace plugins)"),f(" install --url <\u2026/{orgToken}/hook>"),f(" [--delivery npx|binary|local] [--force]"),f(" [--no-claude] [--no-cursor] [--no-codex]"),f(" (fallback: merge hooks into .claude / .cursor / .codex configs)"),f(" (writes collector_url to shared manifest; hook commands use --runner only)"),f(" migrate-to-plugin"),f(" (strip ev-ai file hooks; keep collector manifest)"),f(" update (refresh binary pins from a local build; leaves hook configs alone)"),f(" uninstall"),f("Hook mode: --runner <platform> [--url <\u2026/hook>|--token <orgToken>] [event]"),f(" (--url/--token optional overrides; else collector_url from manifest)")}function Ru(e){return e.includes("--help")||e.includes("-h")}async function JS(e=process.argv.slice(2)){let[t,...n]=e;if(t===It){try{await kn(rt)}catch{}return 0}return t==="--version"||t==="-V"?(process.stdout.write(`${re}
51
+ `),0):t==="configure"?Ru(n)?(xn(),0):(await Gs(Ts(n)),0):t==="install"?Ru(n)?(xn(),0):(await Bs(Ns(n)),0):t==="migrate-to-plugin"?(await Vs(),0):t==="update"?(await Ks(),0):t==="uninstall"?(await Ws(),0):t==="help"||t==="--help"||t==="-h"?(xn(),0):t===void 0?(xn(),1):yu(e)}function YS(e,t,n=GS){if(!t)return!1;try{return e===WS(zS(t)).href?!0:n(VS(e))===n(t)}catch{return!1}}YS(import.meta.url,process.argv[1])&&process.env.VITEST===void 0&&JS().then(e=>{process.exit(e)}).catch(e=>{let t=e instanceof Error?e.message:String(e);f(t),process.exit(1)});export{YS as isCliEntrypoint,JS as main};