@ev-ai/agent-hook 1.1.3 → 1.1.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/hook.mjs CHANGED
@@ -1,37 +1,37 @@
1
1
  import { createRequire as __createRequire } from 'node:module';
2
2
  const require = __createRequire(import.meta.url);
3
3
 
4
- var Mi=Object.create;var ar=Object.defineProperty;var Ni=Object.getOwnPropertyDescriptor;var Li=Object.getOwnPropertyNames;var Ui=Object.getPrototypeOf,Di=Object.prototype.hasOwnProperty;var Ut=(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 cr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Fi=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Li(t))!Di.call(e,o)&&o!==n&&ar(e,o,{get:()=>t[o],enumerable:!(r=Ni(t,o))||r.enumerable});return e};var Dt=(e,t,n)=>(n=e!=null?Mi(Ui(e)):{},Fi(t||!e||!e.__esModule?ar(n,"default",{value:e,enumerable:!0}):n,e));var _o=cr(B=>{"use strict";Object.defineProperty(B,"__esModule",{value:!0});B.MCP_LAUNCH_IDENTITY_ALGORITHM=void 0;B.launchContainsCredentials=fc;B.serializeMcpLaunchIdentity=go;B.hashMcpLaunchIdentity=st;B.projectMcpLaunchIdentity=gc;B.maskMcpLaunchForDisplay=hc;B.normalizeMcpToolNames=Sc;var dc=Ut("node:crypto");B.MCP_LAUNCH_IDENTITY_ALGORITHM="mcp-launch-v1";var mo=new Set(["access_token","api_key","apikey","auth","authorization","key","password","secret","token"]),pc=/^(?:--?(?:token|api[-_]?key|password|secret|authorization)(?:=|\s+)|(?:sk-|ghp_|xox[baprs]-|Bearer\s+))/i;function ie(e){return e.toLocaleLowerCase("en-US")}function Ce(e){return`${Buffer.byteLength(e,"utf8")}:${e}`}function fc(e){return e.kind==="url"?mc(e.url):e.kind==="command"?e.arguments.some(t=>pc.test(t)):!1}function mc(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(mo.has(ie(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=ie(i.split("=",1)[0]??"");return mo.has(a)})}}function go(e){if(e.kind==="url")return[B.MCP_LAUNCH_IDENTITY_ALGORITHM,"url",Ce(ie(e.url))].join("|");if(e.kind==="command"){let t=[...e.arguments].map(n=>ie(n)).sort((n,r)=>n<r?-1:n>r?1:0);return[B.MCP_LAUNCH_IDENTITY_ALGORITHM,"command",Ce(ie(e.command)),String(t.length),...t.map(Ce)].join("|")}return[B.MCP_LAUNCH_IDENTITY_ALGORITHM,"unknown",Ce(e.installationRootExternalKey),Ce(e.sourcePath),Ce(e.nativeKey)].join("|")}function st(e){return(0,dc.createHash)("sha256").update(e).digest("hex")}function gc(e){let t=go(e);return e.kind==="url"?{kind:"url",url:ie(e.url),arguments:[],serialized:t,contentHash:st(t)}:e.kind==="command"?{kind:"command",command:ie(e.command),arguments:[...e.arguments].map(n=>ie(n)).sort((n,r)=>n<r?-1:n>r?1:0),serialized:t,contentHash:st(t)}:{kind:"unknown",arguments:[],serialized:t,contentHash:st(t)}}var _c=/^(https?:\/\/)([^/?#]*@)/i;function hc(e){return e.replace(_c,"$1***@").replace(/([?&](?:access_token|api_key|apikey|auth|authorization|key|password|secret|token)=)([^&]*)/gi,"$1***")}function Sc(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 at=cr(k=>{"use strict";Object.defineProperty(k,"__esModule",{value:!0});k.serializeMcpLaunchIdentity=k.projectMcpLaunchIdentity=k.normalizeMcpToolNames=k.MCP_LAUNCH_IDENTITY_ALGORITHM=k.maskMcpLaunchForDisplay=k.launchContainsCredentials=k.hashMcpLaunchIdentity=k.ComponentKind=void 0;k.userConfigRootFromPath=Tc;k.installationRootExternalKey=Pc;k.normalizeRepositoryRelativePath=ho;k.nativeKeyForSkillPath=vc;k.nativeKeyForRulePath=wc;k.nativeKeyForCommandPath=bc;k.serializeComponentIdentity=Eo;k.buildComponentReference=Nc;k.validateComponentReference=Lc;var Ec=Ut("node:crypto"),yc=Ut("node:path"),Rc="cmp1_",Cc=/^cmp1_[A-Za-z0-9_-]{43}$/,Ic=["/skills/","/skills-cursor/"],Ac=/(?:^|\/)\.(?:cursor|claude|codex)\/rules\/(.+)$/i,kc=/(?:^|\/)\.(?:cursor|claude|codex)\/(?:commands|prompts)\/(.+)$/i,Oc=[".cursor",".claude",".codex"],xc={".claude.json":".claude",".agents":".codex"};k.ComponentKind={SKILL:"SKILL",INTERFACE:"INTERFACE",RULE:"RULE",COMMAND:"COMMAND"};function Tc(e){let t=e.replaceAll("\\","/").split("/").filter(Boolean),n=t.find(o=>Oc.includes(o));return n||(t.map(o=>xc[o]).find(o=>o!==void 0)??"unknown")}function Pc(e,t){return`runtime-install:${e}/${t}`}function it(e,t){if(e.length===0)throw new Error(`${t} is required`);return e}function ho(e){let t=e.replaceAll("\\","/");if(t.startsWith("/")||/^[A-Za-z]:\//.test(t))throw new Error("sourcePath must be repository-relative");let n=yc.posix.normalize(t).replace(/^\.\//,"");if(n==="."||n===".."||n.startsWith("../"))throw new Error("sourcePath must be repository-relative");return it(n,"sourcePath")}function vc(e){let t=e.replaceAll("\\","/");for(let n of Ic){let r=t.split(n)[1]?.split("/")[0];if(r&&r.length>0)return r}return null}function So(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 wc(e){return So(e,Ac,/\.(mdc|md|rules)$/i)}function bc(e){return So(e,kc,/\.(md|mdc|toml)$/i)}function Mc(e){return`${Buffer.byteLength(e,"utf8")}:${e}`}function Eo(e){let t=[it(e.installationRootExternalKey,"installationRootExternalKey"),it(e.installableKind,"installableKind"),ho(e.sourcePath),it(e.nativeKey,"nativeKey")];return Buffer.from(`1|${t.map(Mc).join("|")}`,"utf8")}function Nc(e){let t=(0,Ec.createHash)("sha256").update(Eo(e)).digest("base64url");return`${Rc}${t}`}function Lc(e){return Cc.test(e)}var fe=_o();Object.defineProperty(k,"hashMcpLaunchIdentity",{enumerable:!0,get:function(){return fe.hashMcpLaunchIdentity}});Object.defineProperty(k,"launchContainsCredentials",{enumerable:!0,get:function(){return fe.launchContainsCredentials}});Object.defineProperty(k,"maskMcpLaunchForDisplay",{enumerable:!0,get:function(){return fe.maskMcpLaunchForDisplay}});Object.defineProperty(k,"MCP_LAUNCH_IDENTITY_ALGORITHM",{enumerable:!0,get:function(){return fe.MCP_LAUNCH_IDENTITY_ALGORITHM}});Object.defineProperty(k,"normalizeMcpToolNames",{enumerable:!0,get:function(){return fe.normalizeMcpToolNames}});Object.defineProperty(k,"projectMcpLaunchIdentity",{enumerable:!0,get:function(){return fe.projectMcpLaunchIdentity}});Object.defineProperty(k,"serializeMcpLaunchIdentity",{enumerable:!0,get:function(){return fe.serializeMcpLaunchIdentity}})});import{existsSync as Wi,readFileSync as Ji}from"node:fs";import{hostname as _r,userInfo as Vi}from"node:os";import{randomBytes as Hi}from"node:crypto";import{existsSync as Ht,mkdirSync as ji,readdirSync as Ki,readFileSync as $i,renameSync as lr,statSync as pr,unlinkSync as ur,writeFileSync as Bi}from"node:fs";import{basename as Gi,dirname as dr,join as fr,relative as zi}from"node:path";function h(e){process.stderr.write(`[ev-ai-agent-hook] ${e}
5
- `)}function V(e,t){ji(dr(e),{recursive:!0});let n=fr(dr(e),`.${Gi(e)}.${process.pid}.${Hi(4).toString("hex")}.tmp`);try{Bi(n,t,"utf8");try{lr(n,e)}catch(r){let o=r instanceof Error&&"code"in r?r.code:void 0;if(o==="EEXIST"||o==="EPERM"||o==="EACCES"){ur(e),lr(n,e);return}throw r}}catch(r){try{ur(n)}catch{}throw r}}function Xe(){return new Date().toISOString().replace(/\.\d{3}Z$/,"Z")}function mr(){process.stdout.write('{"continue":true}')}function R(e){let t=process.env[e];return t===void 0||t===""?void 0:t}async function jt(){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 Kt(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 v(e,t,n=3e3,r={}){let o=await J(e,t,n,r);return o.ok?o.stdout:""}async function $t(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(R("EV_AI_HOOK_DEBUG")){let r=t.ok?"empty stdout":t.spawnFailed?"spawn failed":`exit ${String(t.code??"unknown")}`;h(`DEBUG: git rev-parse --show-toplevel failed (${r}) cwd=${e}`)}let n=R("CURSOR_PROJECT_DIR")??R("CLAUDE_PROJECT_DIR");if(n&&Ht(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 Bt(e=process.cwd()){return(await $t(e)).root}function F(e,t){try{return JSON.parse(e)}catch{return t}}var Ft=new Map;function N(e,t){let n=Ft.get(e);if(n!==void 0)return n;try{let r=F($i(e,"utf8"),t);return Ft.set(e,r),r}catch{return Ft.set(e,t),t}}function ce(e){return typeof e=="string"?e:""}function le(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 m(e,t){let n=le(e,t);return typeof n=="string"?n:""}var te=500;function gr(e,t=2){if(!Ht(e))return{entries:[],truncated:!1};let n=[],r=!1,o=(s,i)=>{if(i>t||r)return;let a;try{a=Ki(s,{withFileTypes:!0})}catch{return}for(let c of a){if(r)return;let l=fr(s,c.name);if(c.isDirectory()){o(l,i+1);continue}if(c.isFile()){try{n.push({name:zi(e,l),size:pr(l).size})}catch{continue}if(n.length>=te){r=!0;return}}}};return o(e,1),{entries:n,truncated:r}}function Gt(e){return Ht(e)?{present:!0,size:pr(e).size}:{present:!1,size:0}}function Se(e){if(e===void 0||e==="")return!1;let t=e.trim().toLowerCase();return t!=="0"&&t!=="false"&&t!=="no"}function zt(e=process.env){return Se(T("CURSOR_SANDBOX",e))}var Yi=["CIRCLECI","BUILDKITE","TF_BUILD","JENKINS_URL","JENKINS_HOME","CODEBUILD_BUILD_ID","DRONE","DRONE_BUILD_NUMBER","TEAMCITY_VERSION","TRAVIS","APPVEYOR","BITBUCKET_BUILD_NUMBER"];function Xi(e){return Yi.some(t=>!!T(t,e))}function qi(e){if(T("KUBERNETES_SERVICE_HOST",e)||Se(T("REMOTE_CONTAINERS",e))||Se(T("DEVCONTAINER",e)))return!0;try{if(Wi("/.dockerenv")||Ji("/proc/1/environ","utf8").includes("container="))return!0}catch{}return!1}function hr(e){return["VSCODE_PID","VSCODE_IPC_HOOK","CURSOR_EXTENSION_HOST_ROLE","CURSOR_WORKSPACE_LABEL"].some(t=>!!T(t,e))}function Zi(e,t=process.platform){return hr(e)?t==="darwin"||t==="win32"?!0:["__CFBundleIdentifier","DISPLAY","WAYLAND_DISPLAY","SESSIONNAME"].some(n=>!!T(n,e)):!1}function Qi(e){return e===void 0?!1:e.trim().toLowerCase().startsWith("bc-")}function ea(e){return e==="linux"}function T(e,t){if(t){let n=t[e];return n===void 0||n===""?void 0:n}return R(e)}function ta(e,t,n){return e.trim().toLowerCase()==="cursor"&&t.trim().toLowerCase()==="ubuntu"&&!!na(T("CURSOR_VERSION",n))}function na(e){if(e===void 0)return null;let t=e.trim();return t.length>0?t:null}function Wt(e){if(Qi(e.sessionId))return!0;let t=e.hostname??_r(),n=e.osUser??Sr(e.env);return ta(t,n,e.env)}function ra(e){return Se(T("CURSOR_AGENT",e.env))?!0:Wt(e)}function oa(e){return!!(process.stdin.isTTY||process.stdout.isTTY||(T("TERM",e)??T("TERM_PROGRAM",e))||(T("SSH_TTY",e)??T("SSH_CONNECTION",e))||(T("__CFBundleIdentifier",e)??T("XPC_SERVICE_NAME",e))||hr(e)||["DISPLAY","WAYLAND_DISPLAY","XDG_SESSION_TYPE","DBUS_SESSION_BUS_ADDRESS"].some(t=>!!T(t,e))||T("SESSIONNAME",e))}function ve(e={}){let t=e.env;if(T("GITHUB_ACTIONS",t))return"github_actions";if(Se(T("CLAUDE_CODE_REMOTE",t)))return"claude_remote";let n=e.platform??process.platform;if(!Zi(t,n)&&ra(e)&&(Se(T("CURSOR_AGENT",t))||ea(n)))return"cursor_cloud";if(T("CODESPACES",t)||T("CODESPACE_NAME",t))return"codespaces";if(T("GITLAB_CI",t))return"gitlab_ci";if(Xi(t))return"managed";let r=T("CI",t);return r&&r!=="false"&&r!=="0"?"managed":qi(t)?"container":oa(t)?"interactive":"unknown"}async function Jt(){return await v("systemd-detect-virt",[],1e3)}function Sr(e=process.env,t=Vi){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 Vt(){let e=process.platform==="darwin"?"Darwin":process.platform==="win32"?"Windows_NT":"Linux",t="";if(process.platform==="darwin")t=await v("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 v("lsb_release",["-sd"],1e3).then(s=>s.replace(/^"|"$/g,""))}t||(t=await v("uname",["-r"],1e3))}else t=await v("ver",[],1e3);let n=Sr(),r=(process.env.SHELL??"").split(/[/\\]/).pop()??"",o="";try{o=await v("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 we(){return _r()}var sa="https://hooks.ev-ai.ai";function qe(e,t=sa){let n=t.replace(/\/+$/,""),r=e.trim();return`${n}/${r}/hook`}var Er=".claude/ev-ai-runtime-report.json";var Ze="ev-ai-agent-hook";var Cf=`current/${Ze}`,If=`.ev-ai/agent-hook/${Ze}`,yr=5e3,Rr=5e3,Yt=3e3;var Xt=3e3,Cr=1500,Ir=4*1024,Ar=32*1024,ia=4*1024,kr=32*1024,be=840*60*1e3,qt="1.1.3",Af=`@ev-ai/agent-hook@${qt}`;var Or=["claude","cursor","codex"];import{createHash as pl}from"node:crypto";import{existsSync as fl,mkdirSync as ml,readdirSync as gl,readFileSync as $o,unlinkSync as Bo,writeFileSync as _l}from"node:fs";import{homedir as Go}from"node:os";import{join as Sn}from"node:path";import{createHash as wr,randomBytes as la}from"node:crypto";import{existsSync as br,mkdirSync as Zt,readFileSync as Mr,unlinkSync as Nr,writeFileSync as Lr}from"node:fs";import{homedir as Qt}from"node:os";import{dirname as Qe,join as en,resolve as ua}from"node:path";var aa=new Set(["action@github.com","noreply@github.com","noreply@anthropic.com","cursoragent@cursor.com"]),ca=new Set(["github-actions","github actions","dependabot","renovate","cursoragent","cursor agent"]);function $(e,t){let n=(e??"").trim().toLowerCase(),r=(t??"").trim().toLowerCase();if(!n&&!r)return!1;if(n.includes("[bot]")||ca.has(n)||r.includes("[bot]")||aa.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}var da="installation.json",pa="cloud-bootstrap.lock",fa=6e4;function Ur(e,t,n){let r=`${e}:${t??""}`;return n?`${n}:${r}`:r}function ue(e=Qt()){return en(e,".ev-ai","agent-hook")}function ma(e=Qt()){return en(ue(e),da)}function Dr(e){return en(Qe(e),pa)}function Fr(){return la(8).toString("hex")}function Ee(e){return wr("sha256").update(e).digest("hex").slice(0,16)}function C(e){if(e===void 0)return null;let t=e.trim();return t.length>0?t:null}function Hr(e){return/^[A-Za-z0-9._-]{8,64}$/.test(e)}function ga(e=process.env){let t=C(e.EV_AI_HOOK_INSTALLATION_ID);if(t){if(!Hr(t)){h(`WARN: ignoring EV_AI_HOOK_INSTALLATION_ID (expected 8\u201364 chars [A-Za-z0-9._-], got length ${t.length})`);return}return t}}function jr(e,t){return e&&Hr(e)?e:(e&&h(`WARN: ignoring installation id override (expected 8\u201364 chars [A-Za-z0-9._-], got length ${e.length})`),ga(t))}function _a(e){return/^[0-9a-f]{16}$/.test(e)}function ha(e=process.env){if(C(e.GITHUB_ACTIONS)){let t=C(e.GITHUB_REPOSITORY_ID)??C(e.GITHUB_REPOSITORY),n=C(e.GITHUB_ACTOR)??C(e.GITHUB_TRIGGERING_ACTOR)??C(e.GITHUB_USER);if(t&&n)return Ee(`github_actions|${t}|${n}`)}if(C(e.CODESPACES)||C(e.CODESPACE_NAME)){let t=C(e.CODESPACE_NAME);if(t)return Ee(`codespaces|${t}`);let n=C(e.GITHUB_REPOSITORY_ID)??C(e.GITHUB_REPOSITORY),r=C(e.GITHUB_USER)??C(e.GITHUB_ACTOR);if(n&&r)return Ee(`codespaces|${n}|${r}`)}if(C(e.GITLAB_CI)){let t=C(e.CI_PROJECT_ID)??C(e.CI_PROJECT_PATH),n=C(e.GITLAB_USER_LOGIN)??C(e.GITLAB_USER_EMAIL)??C(e.GITLAB_USER_NAME);if(t&&n)return Ee(`gitlab|${t}|${n}`)}return null}var Sa="cursoragent@cursor.com";function Ea(e){let t=C(e.CURSOR_USER_EMAIL);return!t||t.toLowerCase()===Sa?null:t}function ya(e,t){return C(e.CURSOR_PROJECT_DIR)??C(e.CLAUDE_PROJECT_DIR)??t}function Ra(e){return e.replace(/^([a-z]+:\/\/)[^/@]+@/i,"$1").replace(/\.git$/i,"").toLowerCase()}async function Ca(e){let t=await v("git",["config","--get","remote.origin.url"],2e3,{cwd:e});return t?Ra(t):e}async function Ia(e){let t=C(await v("git",["config","--local","--get","user.email"],2e3,{cwd:e})||void 0);if(t&&!$(null,t))return t;let n=C(await v("git",["log","-1","--format=%ae"],2e3,{cwd:e})||void 0);return n&&!$(null,n)?n:null}function Aa(e,t){let n=ya(e,t);return n?Ee(`cursor_cloud|${n}|${Ea(e)??""}`):null}async function ka(e,t){let n=C(e.CLAUDE_PROJECT_DIR)??t;if(!n)return null;let r=await Ca(n),o=await Ia(n);return Ee(`claude_remote|${r}|${o??""}`)}function xr(e,t){let n=jr(e,t);if(n)return n;let r=ha(t);return r||Fr()}async function Oa(e){let n=await v("git",["config","--get","remote.origin.url"],2e3,{cwd:e})||ua(e);return wr("sha256").update(n).digest("hex").slice(0,16)}function xa(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 Ta(e){try{let t=JSON.parse(e);if(typeof t.installation_id!="string"||t.installation_id.length===0)return;let n=xa(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 de(e){if(br(e))try{return Ta(Mr(e,"utf8"))}catch{}}function tn(e){return de(e)}function Kr(e,t,n){let r=de(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{V(e,`${JSON.stringify(o,null,2)}
6
- `)}catch(s){let i=s instanceof Error?s.message:String(s);h(`WARN: operator identity cache write failed open: ${i}`)}}function $r(e,t=Date.now()){if(!e)return!0;if(de(e)?.operator_identity_hash)return!1;let n=Dr(e);try{if(br(n)){let r=Number.NaN;try{r=Number(Mr(n,"utf8").trim())}catch{}let o=t-r;if(Number.isFinite(o)&&o>=0&&o<fa)return!1;try{Nr(n)}catch{}}}catch{}try{return Zt(Qe(n),{recursive:!0}),Lr(n,`${t}
7
- `,{encoding:"utf8",flag:"wx"}),!0}catch(r){if(Wr(r))return!1;let o=r instanceof Error?r.message:String(r);return h(`WARN: cloud bootstrap claim failed open: ${o}`),!0}}function Br(e){if(e)try{Nr(Dr(e))}catch{}}function Gr(e,t){let r=de(e)?.platform_agent_ids?.[t];return typeof r=="string"&&r.length>0?r:void 0}function zr(e,t,n){if(!n)return;let r=de(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{V(e,`${JSON.stringify(o,null,2)}
8
- `)}catch(s){let i=s instanceof Error?s.message:String(s);h(`WARN: platform_agent_id cache write failed open: ${i}`)}}function Wr(e){return e instanceof Error&&"code"in e&&e.code==="EEXIST"}function Pa(e,t){Zt(Qe(e),{recursive:!0}),Lr(e,`${JSON.stringify(t,null,2)}
9
- `,{encoding:"utf8",flag:"wx"})}function Tr(e,t){try{return Pa(e,t),t}catch(n){if(!Wr(n))throw n;return de(e)}}function Pr(e,t){Zt(Qe(e),{recursive:!0}),V(e,`${JSON.stringify(t,null,2)}
10
- `)}function vr(e,t){return{installation_id:e,...t&&t===e?{pinned:!0}:{}}}async function Jr(e,t={}){let n=t.home??Qt(),r=t.env??process.env,o=await Oa(e),s=ma(n),i={sessionId:t.sessionId,hostname:C(r.HOSTNAME)??void 0,osUser:C(r.USER)??C(r.LOGNAME)??C(r.USERNAME)??void 0,env:r},a=ve(i),c=jr(t.overrideId,r),l=a==="cursor_cloud"&&Wt(i)?Aa(r,e):a==="claude_remote"?await ka(r,e):null,u=de(s);if(u){let E=u;if(c&&c===u.installation_id&&u.pinned!==!0&&(E={...u,pinned:!0},Pr(s,E)),!!l&&l!==E.installation_id&&!c&&E.pinned!==!0&&_a(E.installation_id)&&l){let y={installation_id:l,...E.platform_agent_ids?{platform_agent_ids:E.platform_agent_ids}:{}};return Pr(s,y),{installationId:l,storePath:s,repoKey:o}}return{installationId:E.installation_id,storePath:s,repoKey:o}}let d=c??l??xr(void 0,r),p=Tr(s,vr(d,c));if(p)return{installationId:p.installation_id,storePath:s,repoKey:o};let f=c??l??xr(void 0,r),_=Tr(s,vr(f===d?Fr():f,c));if(_)return{installationId:_.installation_id,storePath:s,repoKey:o};throw new Error(`Failed to create installation record at ${s}`)}var va=new Set(["localhost","127.0.0.1","[::1]","::1"]),Vr=/^[A-Za-z0-9._~-]+$/;function Yr(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 et(e){try{let t=new URL(e);return t.protocol==="https:"?!0:t.protocol==="http:"?va.has(t.hostname):!1}catch{return!1}}function Xr(e){let t;try{t=new URL(e)}catch{return`invalid URL (got: ${e})`}if(!et(e))return`must be https (or http on localhost / 127.0.0.1 / ::1) (got: ${e})`;let n=wa(e);if(!n)return`must end with /{orgToken}/hook (got: ${e})`;if(!Vr.test(n))return`org token must match ${Vr.source} (got: ${n})`;if(Yr(e))return`must not contain whitespace, control characters, or single quotes (got: ${e})`;if(Yr(t.pathname))return`pathname must not contain whitespace, control characters, or single quotes (got: ${e})`}function qr(e){return new URL(e).toString()}function wa(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.length>0?r:void 0}return}catch{return}}function nn(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 Zr(e){if(e.collector_url)return e.collector_url;let t=e.repo_ingest_token?.trim();return t?qe(t):""}import{existsSync as Va}from"node:fs";import{existsSync as Fa}from"node:fs";import{homedir as to}from"node:os";import{join as Ha}from"node:path";import{existsSync as ba,readdirSync as Qr}from"node:fs";import{homedir as tt}from"node:os";import{join as j}from"node:path";function Ma(e=process.platform){switch(e){case"darwin":return"/Library/Application Support/ClaudeCode";case"win32":return j(process.env.ProgramFiles??"C:\\Program Files","ClaudeCode");default:return"/etc/claude-code"}}function Na(e=process.platform){let t=Ma(e),n=[j(t,"managed-settings.json")],r=j(t,"managed-settings.d");try{if(!ba(r))return n;let o=Qr(r).filter(s=>s.endsWith(".json")&&!s.startsWith(".")).sort().map(s=>j(r,s));n.push(...o)}catch{}return n}function rn(e=process.platform,t=tt()){return{serverManaged:j(t,".claude","remote-settings.json"),fileBased:Na(e)}}function La(e=process.platform){switch(e){case"darwin":return"/Library/Application Support/Cursor";case"win32":return j(process.env.ProgramData??"C:\\ProgramData","Cursor");default:return"/etc/cursor"}}function Ua(e=process.platform,t=tt()){let n=[j(La(e),"hooks.json")],r=j(t,".cursor","managed");try{for(let o of Qr(r,{withFileTypes:!0}))!o.isDirectory()||o.name.startsWith(".")||n.push(j(r,o.name,"hooks.json"))}catch{}return n}function Da(e=process.platform,t=tt()){let n=e==="win32"?j(process.env.ProgramData??"C:\\ProgramData","OpenAI","Codex"):"/etc/codex",r=[j(n,"requirements.toml")];return e!=="win32"&&r.push(j(n,"managed_config.toml")),r.push(j(t,".codex","managed_config.toml"),j(n,"config.toml")),r}function nt(e,t=process.platform,n=tt()){switch(e){case"claude":{let{serverManaged:r,fileBased:o}=rn(t,n);return[r,...o]}case"cursor":return Ua(t,n);default:return Da(t,n)}}function no(e){return e.settings.filter(t=>t.toLowerCase().endsWith(".json"))}var ja={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 eo(e,t){if(!(!e&&!t))return[...e??[],...t??[]]}function Ka(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:eo(n.mcpJson,t.mcpJson),mcpToml:eo(n.mcpToml,t.mcpToml),plugins:t.plugins??n.plugins,managed:t.managed??n.managed}}function ro(e){return Object.fromEntries(Object.entries(ja).map(([t,n])=>[t,Ka(n,n[e])]))}var ye=ro("homeOnly"),re=ro("projectOnly");function $a(e){return[...e.skillRoots,...e.dirs.map(t=>t.dir),...e.memory.flat(),...e.settings,...e.mcpJson??[],...e.mcpToml??[]]}function Ba(e,t){return $a(e).some(n=>Fa(Ha(t,n)))}function oo(e,t){for(let n of e)if(Ba(n,t))return!0;return!1}function ne(e){return[...new Set(e)]}function oe(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:ne(t),subagents:ne(n),commands:ne(r),rules:ne(o),memory:ne(s),settings:ne(i),mcp:ne(a)}}function Ga(e,t=to(),n=process.platform){let r=[];for(let o of e)o.managed&&r.push(...nt(o.managed,n,t));return ne(r)}var se=oe(Object.values(ye));function so(e=to(),t=process.platform){return Ga(Object.values(ye),e,t)}import{existsSync as za}from"node:fs";import{resolve as on}from"node:path";function G(e){return on(e).replaceAll("\\","/").replace(/\/$/,"")}function pe(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 rt(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 Wa=/^(?!\.)[A-Za-z0-9._-]+(?:\/[A-Za-z0-9._-]+)*$/;function Me(e){let t=e.replaceAll("\\","/").replace(/^\.\//,"");return!t||t.startsWith("/")||/^[A-Za-z]:\//.test(t)||t.split("/").includes("..")||!Wa.test(t)?null:t}function Re(e,t){let n=new Set,r=[];for(let o of[e,t]){if(!o)continue;let s=G(o);n.has(s)||(n.add(s),r.push(s))}return r}function Ja(e,t){let n=`${e}/`;return t===e||t.startsWith(n)}function Y(e,t,n,r=za){for(let o of e)for(let s of t){let i=G(on(o,s)),a=on(o,s,n).replaceAll("\\","/");if(Ja(i,a)&&r(a))return a}return null}var ao=/(?:^|\/|[\s"'=(])(?:\.cursor\/|\.claude\/|\.agents\/)skills(?:-cursor)?\/([^/]+)\/SKILL\.md/i,co=/(?:^|\/|[\s"'=(])\.codex\/commands\/([^/]+)\.md\b/i,Ya=/(?:^|\s)\/([a-z][a-z0-9-]{1,63}(?:\/[a-z][a-z0-9-]{1,63}){0,5})\b/gi,io=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"]),Xa=/^[a-z][a-z0-9-]{1,63}$/,qa=[".cursor/skills",".claude/skills",".agents/skills"],Za=[".cursor/skills",".cursor/skills-cursor",".claude/skills",".agents/skills"],Qa=pe(qa,oe(Object.values(re)).skills),ec=pe(Za,oe(Object.values(ye)).skills),tc=new Set(["read","read_file","view"]),nc=new Set(["bash","shell","zsh"]);function sn(e){let t=e.replace(/\\/g,"/");return ao.exec(t)?.[1]??null}function rc(e){let t=e.replace(/\\/g,"/"),r=co.exec(t)?.[1];return r?r.toLowerCase():null}function oc(e){return sn(e)??rc(e)}function sc(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 ot(e){return typeof e=="string"?ot(F(e,null)):!e||typeof e!="object"?null:sc(e)}function lo(e){if(typeof e=="string")return lo(F(e,null));if(!e||typeof e!="object")return null;let t=e.command;return typeof t=="string"&&t.length>0?t:null}function an(e){let t=lo(e.tool_input);if(t)return t;let n=ce(e.command);return n.length>0?n:null}function ic(e){let t=e.replace(/\\/g,"/"),n=ao.exec(t);if(n?.[1])return n[1];let o=co.exec(t)?.[1];return o?o.toLowerCase():null}function ac(e){return typeof e.tool_name=="string"?e.tool_name:typeof e.tool=="string"?e.tool:""}function cn(e){let t=ot(e.tool_input)??ce(e.file_path);return t.length>0?t:null}function Ne(e,t,n){let r=ac(e).toLowerCase();if(tc.has(r)){let o=cn(e);return o?t(o):null}if(nc.has(r)){let o=an(e);return o?n(o):null}return null}function uo(e){return Ne(e,oc,ic)}function cc(e){let t=new Set,n=[];for(let r of e.matchAll(Ya)){let o=r[1]?.toLowerCase();!o||t.has(o)||lc(o)||(t.add(o),n.push(o))}return n}function lc(e){let t=e.split("/")[0];return io.has(e)||t!==void 0&&io.has(t)}function po(e){let t=e.skillId.toLowerCase();if(!Xa.test(t))return null;let n=e.exists??Va,r=`${t}/SKILL.md`,o=Y(Re(e.launchCwd,e.gitRoot),Qa,r,n);return o!==null?o:e.home?Y([G(e.home)],ec,r,n):null}function uc(e){return ce(e.prompt)}function fo(e){let t=m(e,"command_name");if(t){let r=m(e,"expansion_type");if(r&&r!=="slash_command")return[];let o=t.replace(/^\//,"").toLowerCase();return o?[o]:[]}let n=uc(e);return n?cc(n):[]}var ln=Dt(at(),1);import{existsSync as Dc}from"node:fs";var me={claude:".claude",cursor:".cursor",codex:".codex",opencode:".opencode"};function Le(e){let n=e.replace(/^\/+|\/+$/g,"").toLowerCase().split("/").filter(Boolean);return n.length<2?"":n.join("/")}function Uc(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 Le(n[1]);let r=t.match(/^ssh:\/\/[^/]+\/(.+)$/i);if(r?.[1])return Le(r[1]);t=t.replace(/^https:\/\//i,""),t=t.replace(/^http:\/\//i,""),t=t.replace(/^ssh:\/\//i,"");let o=t.match(/^[^/]+\/(.+)$/);return o?.[1]?Le(o[1]):Le(t)}async function Ue(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})]),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 yo(e,t,n,r=process.cwd(),o,s,i){if(t)return t;let a=me[n];if(!a)return"";let c=Ur(n,e.scope_path,i);if(s){let _=Gr(s,c);if(_)return _}let l=o??await Ue(r),u=l?.remote?Uc(l.remote):"";if(u||(u=Le(process.env.GITHUB_REPOSITORY??"")),!u)return"";let d=e.scope_path??"",p=d?`${d}/`:"",f=`${u}:${p}${a}`;return s&&zr(s,c,f),f}var Fc=[".cursor/rules",".claude/rules",".codex/rules"],Hc=oe(Object.values(re)).rules;function jc(e){return pe(rt(e?me[e]:void 0,Fc),Hc)}var Kc=/(?:^|\/|[\s"'=(])((?:\.cursor|\.claude|\.codex)\/rules\/[^'"\s]+?\.(?:mdc|md|rules))\b/i;function Ro(e){let t=Me(e.relativePath);if(!t)return null;let n=e.exists??Dc,r=Re(e.launchCwd,e.gitRoot),o=jc(e.runnerPlatform),s=Y(r,o,t,n);if(s!==null)return s;if(!t.includes("/")){let i=Y(r,["."],t,n);if(i!==null)return i}return e.home?Y([G(e.home)],o,t,n):null}function $c(e){let t=e.replace(/\\/g,"/"),r=Kc.exec(t)?.[1];return r?(0,ln.nativeKeyForRulePath)(r):null}function Co(e){return Ne(e,ln.nativeKeyForRulePath,$c)}function Io(e){return e.replace(/\.(mdc|md|rules)$/i,"")}function Ao(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=Me(i);!a||n.has(a)||(n.add(a),r.push(a))}return r}var un=Dt(at(),1);import{existsSync as Bc}from"node:fs";var Gc=[".cursor/commands",".claude/commands",".codex/prompts"],zc=oe(Object.values(re)).commands;function Wc(e){return pe(rt(e?me[e]:void 0,Gc),zc)}var Jc=/(?:^|\/|[\s"'=(])((?:\.cursor|\.claude|\.codex)\/(?:commands|prompts)\/[^'"\s]+?\.(?:md|mdc))\b/i;function ko(e){let t=Me(e.commandId);if(!t)return null;let n=e.exists??Bc,r=`${t}.md`,o=Wc(e.runnerPlatform),s=Y(Re(e.launchCwd,e.gitRoot),o,r,n);return s!==null?s:e.home?Y([G(e.home)],o,r,n):null}function Vc(e){let t=e.replace(/\\/g,"/"),r=Jc.exec(t)?.[1];return r?(0,un.nativeKeyForCommandPath)(r):null}function Oo(e){return Ne(e,un.nativeKeyForCommandPath,Vc)}import{existsSync as To}from"node:fs";import{homedir as Po}from"node:os";import{join as De,resolve as dn,sep as xo}from"node:path";function pn(e){return[...new Set([e,e.replaceAll(/[^A-Za-z0-9_-]/g,"_"),e.replaceAll(/[^A-Za-z0-9_-]+/g,"_")])]}function fn(e,t){let n=t.toLowerCase();return pn(e).some(r=>r.toLowerCase()===n)}function ct(e,t,n){if(!To(e))return;let r=N(e,{});for(let[o,s]of Object.entries(r.mcpServers??{}))n.set(o,{declared:{name:o,...t},config:s})}function Yc(e,t,n){if(!To(e))return;let r=N(e,{}),o=dn(t),s=null;for(let a of Object.keys(r.projects??{})){let c=dn(a);(o===c||o.startsWith(c.endsWith(xo)?c:c+xo))&&(s===null||c.length>dn(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 vo(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"?(ct(De(r,".claude.json"),{source:"claude_json_user"},o),Yc(De(r,".claude.json"),t,o)):n==="cursor"&&ct(De(r,".cursor/mcp.json"),{source:"cursor_mcp_user"},o),ct(De(t,".mcp.json"),{source:"mcp_json"},o),ct(De(t,".cursor/mcp.json"),{source:"cursor_mcp"},o),o}async function mn(e,t=process.cwd(),n="claude",r=Po()){return[...vo(e,t,n,r).values()].map(o=>o.declared)}function wo(e,t,n=process.cwd(),r="claude",o=Po()){let s=vo(t,n,r,o),i=s.get(e);if(i!==void 0)return i.config??null;for(let[a,c]of s)if(fn(a,e))return c.config??null;return null}function gn(e){return e!==void 0&&Or.includes(e)}function lt(e,t){let n=e[t+1];return n&&!n.startsWith("--")?{value:n,next:t+1}:{next:t}}function ut(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=lt(e,i);t=c.value,i=c.next;continue}if(a.startsWith("--runner=")){t=a.slice(9);continue}if(a==="--url"){let c=lt(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=lt(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=lt(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:gn(t)?t:void 0,event:n,collectorUrl:r,orgToken:o,baseUrl:s}}function _n(e){let t=e.collectorUrl?.trim(),n;if(t)n=t;else{let o=e.orgToken?.trim();o&&(n=qe(o,e.baseUrl?.trim()??void 0))}if(!n)return;let r=Xr(n);if(r){h(`WARN: ignoring --url/--token collector override: ${r}`);return}return qr(n)}function bo(e,t){if(m(e,"conversation_id"))return!0;if(t==="")return!1;let n=t[0];return n?.toLowerCase()===n}function Xc(){return!!(R("CURSOR_VERSION")??R("CURSOR_PROJECT_DIR"))}function hn(e,t,n){return e!=="claude"&&e!=="codex"?!1:bo(t,n)?!0:Xc()}function Fe(e,t,n,r){if(bo(e,t))return"cursor";if(gn(r))return r;let o=m(e,"conversation_id"),s=m(e,"turn_id"),i=m(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")&&(c="claude"),gn(n)&&(c=n),c}function dt(e,t){let n=e.toLowerCase();return n==="sessionend"||n==="stopfailure"||n==="subagentstop"?!0:n==="stop"&&t==="codex"}function qc(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 Mo(e){let t=e.toLowerCase();return t==="posttooluse"?!0:t==="posttoolusefailure"||t==="permissiondenied"?!1:null}function No(e,t,n){let r=m(e,"session_id")||m(e,"conversation_id"),o=m(e,"prompt.id")||m(e,"prompt_id")||m(e,"generation_id")||m(e,"turn_id"),s=m(e,"hook_event_name")||m(e,"event"),i=m(e,"source"),a=Fe(e,s,t,n);return{sessionId:r,turnId:o,runnerEvent:s,hookSource:i,runnerPlatform:a}}var Zc=["session_start","session_end","tool_invoked","skill_invoked"];function Qc(e){return Zc.includes(e)}function Lo(e,t){return e&&Qc(e)?e:qc(t.toLowerCase())}var el={beforeshellexecution:"Shell",aftershellexecution:"Shell",beforereadfile:"Read",afterfileedit:"Write"};function Uo(e){return/^mcp__/i.test(e)||/^MCP:/i.test(e)}function Do(e,t=""){let n=m(e,"tool_name")||m(e,"tool")||null,r=t.toLowerCase();n?r==="beforemcpexecution"&&!Uo(n)&&(n=`MCP:${n}`):n=el[r]??null;let o=e.tool_input,i=(o&&typeof o=="object"?ce(o.skill)||ce(o.skill_name):"")||m(e,"skill_name")||null,a=n&&e.tool_name!==n&&e.tool!==n?{...e,tool_name:n}:e;i??=uo(a);let c=Co(a),l=Oo(a);return{toolName:n,skillName:i,ruleName:c,commandName:l}}var tl=/^[A-Za-z][A-Za-z0-9_.:-]{0,63}$/;function Fo(e){for(let t of["subagent_type","agent_type"]){let n=m(e,t);if(n&&tl.test(n))return n}return null}function Ho(e){let t=le(e,"duration_ms");if(typeof t=="number")return t;let n=le(e,"duration");return typeof n=="number"?n:null}var nl="error",rl="interrupted",ol="permission_denied",sl=/^[A-Za-z][A-Za-z0-9_.-]{0,63}$/;function He(e){return sl.test(e)?e:null}function il(e){for(let t of["failure_type","error_type"]){let n=He(m(e,t));if(n)return n}return null}function jo(e,t){return le(e,"is_interrupt")===!0?rl:t.toLowerCase()==="permissiondenied"?ol:il(e)??nl}function al(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 cl(e,t){let n=null;for(let r of t)!r||!fn(r,e)||(n===null||r.length>n.length)&&(n=r);return n}function ll(e,t){let n=null,r=0;for(let s of t)if(s)for(let i of pn(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:cl(o[1],t)??o[1],mcpTool:o[2]}}function ul(e,t){if(/^mcp__/i.test(e))return ll(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:al(n,t),mcpTool:n}}return{mcpServer:null,mcpTool:null}}function dl(e,t){let n=`${t}__`;return e.length>n.length&&e.toLowerCase().startsWith(n.toLowerCase())?e.slice(n.length):e}function Ko(e,t=[],n=""){let r=e?ul(e,t):{mcpServer:null,mcpTool:null},o=He(n.trim());if(!o)return r;let s=r.mcpTool;return!s&&e&&!Uo(e)&&(s=e),s&&(s=dl(s,o)),{mcpServer:o,mcpTool:s}}var zo=3e4,hl="claims",Sl=!0,El=100,yl=new Set(["sessionstart","sessionend","stopfailure"]),Rl=["tool_name","tool","command","file_path","url"];function Cl(e=Go()){return Sn(ue(e),hl)}function Wo(e){let t=e.split(`
11
- `,1)[0]??"";return Number(t.trim())}function Jo(e){return pl("sha256").update(e).digest("hex").slice(0,32)}function Il(e){let t=[];for(let n of Rl){let r=m(e,n).trim();r&&t.push(`${n}=${r}`)}return t.length===0?"":Jo(t.join("\0"))}function Al(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=yl.has(n);if(!a&&!c)return;let l=e.runnerPlatform.trim()||"unknown";return Jo(`${l}|${t}|${n}|${r}|${o}|${i}|${s}`)}function kl(e){return e instanceof Error&&"code"in e&&e.code==="EEXIST"}function Ol(e,t){return Sn(e,t)}function xl(e,t=Date.now()){let n;try{n=gl(e)}catch{return}let r=0;for(let o of n){if(r>=El)break;r+=1;let s=Sn(e,o),i=Number.NaN;try{i=Wo($o(s,"utf8"))}catch{continue}let a=t-i;if(!(!Number.isFinite(a)||a<0||a<zo))try{Bo(s)}catch{}}}function Tl(e,t,n=Date.now()){let r=Ol(t,e);try{if(fl(r)){let o=Number.NaN;try{o=Wo($o(r,"utf8"))}catch{}let s=n-o;if(Number.isFinite(s)&&s>=0&&s<zo)return!1;try{Bo(r)}catch{}}}catch{}try{ml(t,{recursive:!0}),_l(r,`${n}
12
- `,{encoding:"utf8",flag:"wx"})}catch(o){if(kl(o))return!1;let s=o instanceof Error?o.message:String(o);return h(`WARN: event claim failed open: ${s}`),!0}return xl(t,n),!0}function Pl(e,t,n){let r=m(e,"session_id")||m(e,"conversation_id"),o=m(e,"prompt.id")||m(e,"prompt_id")||m(e,"generation_id")||m(e,"turn_id"),s=m(e,"tool_use_id"),i=m(e,"subagent_id")||m(e,"agent_id"),a=Fe(e,t,void 0,n),c=Il(e);return{runnerPlatform:a,sessionId:r,runnerEvent:t,turnId:o,toolUseId:s,subagentId:i,callFingerprint:c}}function Vo(e,t,n,r=Go(),o=Date.now()){if(!Sl)return!0;let s=Al(Pl(e,t,n));if(!s)return!0;let i=Tl(s,Cl(r),o);return!i&&R("EV_AI_HOOK_DEBUG")&&h(`DEBUG: duplicate hook event suppressed (claim ${s.slice(0,8)}\u2026)`),i}import{realpathSync as Hp}from"node:fs";import{homedir as jp}from"node:os";var A=Dt(at(),1);import{existsSync as vl,readFileSync as wl}from"node:fs";import{homedir as Yo}from"node:os";import{join as bl}from"node:path";var Ml="cloud-cache.json",Nl=1440*60*1e3,Ll=900*1e3;function Ul(e=Yo()){return bl(ue(e),Ml)}function Dl(e){if(!vl(e))return;let t=F(wl(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 Fl(e,t){try{V(e,`${JSON.stringify(t)}
13
- `)}catch(n){let r=n instanceof Error?n.message:String(n);h(`WARN: cloud cache write failed open: ${r}`)}}function Hl(e,t,n){if(!e||e.context!==t)return!1;let r=e.result===null?Ll:Nl;return n-e.probed_at<r}async function jl(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 Kl(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 $l(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 Bl(e){let t=await Promise.allSettled([jl(e),Kl(e),$l(e)]);for(let n of t)if(n.status==="fulfilled"&&n.value)return n.value;return null}async function En(e,t){if(e==="interactive")return null;let n=t?.home??Yo(),r=t?.timeoutMs??1e3,o=t?.nowMs??Date.now(),s=Ul(n),i=Dl(s);if(Hl(i,e,o))return i.result;let a=await Bl(r);return Fl(s,{context:e,probed_at:o,result:a}),a}var Gl=["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"],zl=["CURSOR_PROJECT_DIR"],Wl=new Set(["key","api-key","api_key","apikey","token","sig","signature","access_token","password","pwd","secret","client_secret"]);function Jl(e){try{let t=new URL(e);(t.username||t.password)&&(t.username="",t.password="");for(let[n]of t.searchParams)Wl.has(n.toLowerCase())&&t.searchParams.set(n,"[redacted]");return t.toString()}catch{return e}}function yn(e=process.env){let t=Gl.map(r=>Object.prototype.hasOwnProperty.call(e,r)?{name:r,present:!0,value:Jl(e[r]??"")}:{name:r,present:!1}),n=zl.map(r=>({name:r,present:Object.prototype.hasOwnProperty.call(e,r)&&!!e[r]}));return[...t,...n]}import{homedir as Iu}from"node:os";import{homedir as Xo}from"node:os";import{join as Vl}from"node:path";function Yl(e=Xo()){return Vl(e,".claude.json")}function pt(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}function qo(e=Xo()){let n=N(Yl(e),{}).oauthAccount;if(!n||typeof n!="object")return null;let r=pt(n.emailAddress),o=pt(n.fullName)??pt(n.displayName),s=pt(n.accountUuid),i=r??s;return!i||$(o,r)?null:{git_user_name:null,git_user_email:null,platform_login:i,identity_source:"claude_oauth"}}import{homedir as es}from"node:os";import{join as Zo}from"node:path";var Xl="https://api.openai.com/auth";function Ie(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}function ts(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function ql(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 ts(r)}catch{return null}}function Qo(e,t,n){return Ie(e[n])??Ie(t?.[n])}function Zl(e=process.env,t=es()){let n=Ie(e.CODEX_HOME)??Zo(t,".codex");return Zo(n,"auth.json")}function ns(e=process.env,t=es()){let n=N(Zl(e,t),{}),r=Ie(n.auth_mode);if(r!==null&&r!=="chatgpt"||r===null&&Ie(n.OPENAI_API_KEY))return null;let o=Ie(n.tokens?.id_token);if(!o)return null;let s=ql(o);if(!s)return null;let i=ts(s[Xl]),a=Qo(s,i,"name"),c=Qo(s,i,"email");return!c||$(a,c)?null:{git_user_name:null,git_user_email:null,platform_login:c,identity_source:"codex_oauth"}}import{homedir as gt}from"node:os";import{join as Q}from"node:path";import{join as Ql}from"node:path";var eu="cursor-ide-identity.json",tu=be;function os(e){return Ql(ue(e),eu)}function rs(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}function ss(e){let t=N(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:rs(t.email),auth_id:rs(t.auth_id)}}function is(e,t,n){if(e?.db_path!==t)return!1;let r=n-e.read_at_ms;return r>=0&&r<tu}function as(e,t){try{V(e,`${JSON.stringify(t)}
14
- `)}catch(n){let r=n instanceof Error?n.message:String(n);h(`WARN: cursor IDE identity cache write failed open: ${r}`)}}import{execFileSync as nu}from"node:child_process";import{existsSync as ru}from"node:fs";import{createRequire as ou}from"node:module";import{pathToFileURL as su}from"node:url";var ls=ou(import.meta.url),ft=`
4
+ var Zi=Object.create;var hr=Object.defineProperty;var Qi=Object.getOwnPropertyDescriptor;var ea=Object.getOwnPropertyNames;var ta=Object.getPrototypeOf,na=Object.prototype.hasOwnProperty;var $t=(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 rt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ra=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ea(t))!na.call(e,o)&&o!==n&&hr(e,o,{get:()=>t[o],enumerable:!(r=Qi(t,o))||r.enumerable});return e};var Ne=(e,t,n)=>(n=e!=null?Zi(ta(e)):{},ra(t||!e||!e.__esModule?hr(n,"default",{value:e,enumerable:!0}):n,e));var mn=rt(v=>{"use strict";Object.defineProperty(v,"__esModule",{value:!0});v.MCP_MISSING_LAUNCH_SERIALIZED=v.MCP_LAUNCH_IDENTITY_ALGORITHM=void 0;v.foldMcpName=Oo;v.buildMcpFamilyCanonicalKey=Mc;v.launchContainsCredentials=Nc;v.serializeMcpLaunchIdentity=Po;v.hashMcpLaunchIdentity=je;v.projectMcpMissingLaunchIdentity=Dc;v.projectMcpLaunchIdentity=Hc;v.maskMcpLaunchForDisplay=jc;v.normalizeMcpToolNames=Kc;var vc=$t("node:crypto");v.MCP_LAUNCH_IDENTITY_ALGORITHM="mcp-launch-v1";v.MCP_MISSING_LAUNCH_SERIALIZED=`${v.MCP_LAUNCH_IDENTITY_ALGORITHM}|missing`;function ee(e){return e.toLocaleLowerCase("en-US")}function Oo(e){return ee(e)}function Mc(e){return`interface:${Oo(e)}`}var ko=new Set(["access_token","api_key","apikey","auth","authorization","key","password","secret","token"]),wc=/^(?:--?(?:token|api[-_]?key|password|secret|authorization)(?:=|\s+)|(?:sk-|ghp_|xox[baprs]-|Bearer\s+))/i;function ke(e){return`${Buffer.byteLength(e,"utf8")}:${e}`}function Nc(e){return e.kind==="url"?Lc(e.url):e.kind==="command"?e.arguments.some(t=>wc.test(t)):!1}function Lc(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(ko.has(ee(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=ee(i.split("=",1)[0]??"");return ko.has(a)})}}function Po(e){if(e.kind==="url")return[v.MCP_LAUNCH_IDENTITY_ALGORITHM,"url",ke(ee(e.url))].join("|");if(e.kind==="command"){let t=[...e.arguments].map(n=>ee(n)).sort((n,r)=>n<r?-1:n>r?1:0);return[v.MCP_LAUNCH_IDENTITY_ALGORITHM,"command",ke(ee(e.command)),String(t.length),...t.map(ke)].join("|")}return[v.MCP_LAUNCH_IDENTITY_ALGORITHM,"unknown",ke(e.installationRootExternalKey),ke(e.sourcePath),ke(e.nativeKey)].join("|")}function je(e){return(0,vc.createHash)("sha256").update(e).digest("hex")}var Uc=je(v.MCP_MISSING_LAUNCH_SERIALIZED);function Dc(){return{kind:"unknown",arguments:[],serialized:v.MCP_MISSING_LAUNCH_SERIALIZED,contentHash:Uc}}function Hc(e){let t=Po(e);return e.kind==="url"?{kind:"url",url:ee(e.url),arguments:[],serialized:t,contentHash:je(t)}:e.kind==="command"?{kind:"command",command:ee(e.command),arguments:[...e.arguments].map(n=>ee(n)).sort((n,r)=>n<r?-1:n>r?1:0),serialized:t,contentHash:je(t)}:{kind:"unknown",arguments:[],serialized:t,contentHash:je(t)}}var Fc=/^(https?:\/\/)([^/?#]*@)/i;function jc(e){return e.replace(Fc,"$1***@").replace(/([?&](?:access_token|api_key|apikey|auth|authorization|key|password|secret|token)=)([^&]*)/gi,"$1***")}function Kc(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 _n=rt(ce=>{"use strict";Object.defineProperty(ce,"__esModule",{value:!0});ce.PACKAGE_FIELD_MAX=void 0;ce.npxExecBin=xo;ce.packageNameFromSpec=gn;ce.npxPackageSpecs=Yc;ce.PACKAGE_FIELD_MAX=128;var $c=/^(?:@[A-Za-z0-9~-][A-Za-z0-9._~-]*\/)?[A-Za-z0-9~-][A-Za-z0-9._~-]*$/,Bc=new Set(["-p","--package"]),Gc=new Set(["-c","--call"]),zc=new Set(["--registry","--userconfig","--globalconfig","--prefix","--cache","--node-options","--workspace","-w","--loglevel"]),Wc=new Set(["-y","--yes","-n","--no","-q","-s","--quiet","--silent","--offline","--prefer-offline","--prefer-online","--ignore-existing","--ignore-scripts","--legacy-peer-deps","--foreground-scripts"]),Jc=/^--no-/;function Vc(e){return Wc.has(e)||Jc.test(e)}function xo(e){let n=(e.replace(/\\/g,"/").split("/").pop()??"").replace(/\.(cmd|exe|bat|ps1)$/i,"").toLowerCase();return n==="npx"?"npx":n==="npm"?"npm":null}function gn(e){if(e.length===0||e.length>ce.PACKAGE_FIELD_MAX)return null;let t=e.lastIndexOf("@"),n=t>0?e.slice(0,t):e;return $c.test(n)?n:null}function Yc(e,t){let n=xo(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(Gc.has(l))return[];if(Bc.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||Vc(l))){if(zc.has(l)){i+=1;continue}return[]}}return o.length>0?o.every(i=>gn(i)!==null)?o:[]:s===null||gn(s)===null?[]:[s]}});var No=rt(_e=>{"use strict";Object.defineProperty(_e,"__esModule",{value:!0});_e.EMPTY_NPM_PUBLISHER=void 0;_e.isNpmRegistryPublisher=qc;_e.classifyMcpProvenance=il;var vo=mn(),hn=_n();_e.EMPTY_NPM_PUBLISHER="npm:";var To="npm:",Xc=/^[A-Za-z0-9._-]+$/;function qc(e){return e.startsWith(To)&&e!==_e.EMPTY_NPM_PUBLISHER&&Xc.test(e.slice(To.length))}function bo(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 Zc(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 Sn(e){return e.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.$/,"")}function Qc(e){let t=Sn(e),n=Zc(t);return t==="localhost"||t.endsWith(".localhost")||t==="::1"||t.endsWith(".local")||!t.includes(".")&&!t.includes(":")||bo(t)||n!==void 0&&bo(n)||/^(?:fc|fd)[0-9a-f]{2}:/i.test(t)||/^fe[89ab][0-9a-f]:/i.test(t)}function el(e){let t=Sn(e);return t.includes(":")||/^[0-9.]+$/.test(t)||t.split(".").filter(Boolean).length<2?null:t}function tl(e){let t=Sn(e.hostname),n=t.includes(":")?`[${t}]`:t,r=e.port?`:${e.port}`:"";return`${e.protocol}//${n}${r}`}function Mo(e){let t={kind:"url",url:e};if((0,vo.launchContainsCredentials)(t))return{origin:"UNKNOWN"};try{let n=new URL(e);if(!["http:","https:"].includes(n.protocol)||Qc(n.hostname))return{origin:"UNKNOWN"};let r=el(n.hostname);return{origin:"THIRD_PARTY",...r===null?{}:{publisherName:r},packageSourceUrl:tl(n)}}catch{return{origin:"UNKNOWN"}}}var wo="mcp-remote";function nl(e,t){if(e===wo)return t.find(n=>/^https?:\/\//i.test(n))}function rl(e,t){return{origin:"THIRD_PARTY",...t?{publisherName:t}:{},packageName:e,packageKey:e}}function ol(e,t,n){let r=nl(e,t);return r!==void 0?Mo(r):e===wo?{origin:"UNKNOWN"}:rl(e,n)}function sl(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 il(e){let t=e.launch;if(t===void 0||t.kind==="unknown")return{origin:"UNKNOWN"};if((0,vo.launchContainsCredentials)(t))return{origin:"UNKNOWN"};if(t.kind==="url")return Mo(t.url);let r=(0,hn.npxPackageSpecs)(t.command,t.arguments)[0];if(r!==void 0){let o=(0,hn.packageNameFromSpec)(r);if(o===null)return{origin:"UNKNOWN"};let s=ol(o,t.arguments,e.publisherName),i=typeof e.packageName=="string"?(0,hn.packageNameFromSpec)(e.packageName):null;return i!==null&&i===o&&s.packageName!==void 0?{...s,packageName:i,packageKey:i}:s}return sl(t.command)?{origin:"INTERNAL"}:{origin:"UNKNOWN"}}});var Oe=rt(g=>{"use strict";Object.defineProperty(g,"__esModule",{value:!0});g.isNpmRegistryPublisher=g.EMPTY_NPM_PUBLISHER=g.classifyMcpProvenance=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=_l;g.installationRootExternalKey=hl;g.normalizeRepositoryRelativePath=Lo;g.nativeKeyForSkillPath=Sl;g.nativeKeyForRulePath=El;g.nativeKeyForCommandPath=yl;g.serializeComponentIdentity=Do;g.buildComponentReference=Cl;g.validateComponentReference=Il;var al=$t("node:crypto"),cl=$t("node:path"),ll="cmp1_",ul=/^cmp1_[A-Za-z0-9_-]{43}$/,dl=["/skills/","/skills-cursor/"],pl=/(?:^|\/)\.(?:cursor|claude|codex)\/rules\/(.+)$/i,fl=/(?:^|\/)\.(?:cursor|claude|codex)\/(?:commands|prompts)\/(.+)$/i,ml=[".cursor",".claude",".codex"],gl={".claude.json":".claude",".agents":".codex"};g.ComponentKind={SKILL:"SKILL",INTERFACE:"INTERFACE",RULE:"RULE",COMMAND:"COMMAND"};function _l(e){let t=e.replaceAll("\\","/").split("/").filter(Boolean),n=t.find(o=>ml.includes(o));return n||(t.map(o=>gl[o]).find(o=>o!==void 0)??"unknown")}function hl(e,t){return`runtime-install:${e}/${t}`}function ft(e,t){if(e.length===0)throw new Error(`${t} is required`);return e}function Lo(e){let t=e.replaceAll("\\","/");if(t.startsWith("/")||/^[A-Za-z]:\//.test(t))throw new Error("sourcePath must be repository-relative");let n=cl.posix.normalize(t).replace(/^\.\//,"");if(n==="."||n===".."||n.startsWith("../"))throw new Error("sourcePath must be repository-relative");return ft(n,"sourcePath")}function Sl(e){let t=e.replaceAll("\\","/");for(let n of dl){let r=t.split(n)[1]?.split("/")[0];if(r&&r.length>0)return r}return null}function Uo(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 El(e){return Uo(e,pl,/\.(mdc|md|rules)$/i)}function yl(e){return Uo(e,fl,/\.(md|mdc|toml)$/i)}function Rl(e){return`${Buffer.byteLength(e,"utf8")}:${e}`}function Do(e){let t=[ft(e.installationRootExternalKey,"installationRootExternalKey"),ft(e.installableKind,"installableKind"),Lo(e.sourcePath),ft(e.nativeKey,"nativeKey")];return Buffer.from(`1|${t.map(Rl).join("|")}`,"utf8")}function Cl(e){let t=(0,al.createHash)("sha256").update(Do(e)).digest("base64url");return`${ll}${t}`}function Il(e){return ul.test(e)}var V=mn();Object.defineProperty(g,"buildMcpFamilyCanonicalKey",{enumerable:!0,get:function(){return V.buildMcpFamilyCanonicalKey}});Object.defineProperty(g,"foldMcpName",{enumerable:!0,get:function(){return V.foldMcpName}});Object.defineProperty(g,"hashMcpLaunchIdentity",{enumerable:!0,get:function(){return V.hashMcpLaunchIdentity}});Object.defineProperty(g,"launchContainsCredentials",{enumerable:!0,get:function(){return V.launchContainsCredentials}});Object.defineProperty(g,"maskMcpLaunchForDisplay",{enumerable:!0,get:function(){return V.maskMcpLaunchForDisplay}});Object.defineProperty(g,"MCP_LAUNCH_IDENTITY_ALGORITHM",{enumerable:!0,get:function(){return V.MCP_LAUNCH_IDENTITY_ALGORITHM}});Object.defineProperty(g,"MCP_MISSING_LAUNCH_SERIALIZED",{enumerable:!0,get:function(){return V.MCP_MISSING_LAUNCH_SERIALIZED}});Object.defineProperty(g,"normalizeMcpToolNames",{enumerable:!0,get:function(){return V.normalizeMcpToolNames}});Object.defineProperty(g,"projectMcpLaunchIdentity",{enumerable:!0,get:function(){return V.projectMcpLaunchIdentity}});Object.defineProperty(g,"projectMcpMissingLaunchIdentity",{enumerable:!0,get:function(){return V.projectMcpMissingLaunchIdentity}});Object.defineProperty(g,"serializeMcpLaunchIdentity",{enumerable:!0,get:function(){return V.serializeMcpLaunchIdentity}});var mt=_n();Object.defineProperty(g,"PACKAGE_FIELD_MAX",{enumerable:!0,get:function(){return mt.PACKAGE_FIELD_MAX}});Object.defineProperty(g,"npxExecBin",{enumerable:!0,get:function(){return mt.npxExecBin}});Object.defineProperty(g,"npxPackageSpecs",{enumerable:!0,get:function(){return mt.npxPackageSpecs}});Object.defineProperty(g,"packageNameFromSpec",{enumerable:!0,get:function(){return mt.packageNameFromSpec}});var En=No();Object.defineProperty(g,"classifyMcpProvenance",{enumerable:!0,get:function(){return En.classifyMcpProvenance}});Object.defineProperty(g,"EMPTY_NPM_PUBLISHER",{enumerable:!0,get:function(){return En.EMPTY_NPM_PUBLISHER}});Object.defineProperty(g,"isNpmRegistryPublisher",{enumerable:!0,get:function(){return En.isNpmRegistryPublisher}})});import{existsSync as da,readFileSync as pa}from"node:fs";import{hostname as kr,userInfo as fa}from"node:os";import{randomBytes as oa}from"node:crypto";import{existsSync as Gt,mkdirSync as sa,readdirSync as ia,readFileSync as aa,renameSync as Sr,statSync as Rr,unlinkSync as Er,writeFileSync as ca}from"node:fs";import{basename as la,dirname as yr,join as Cr,relative as ua}from"node:path";function h(e){process.stderr.write(`[ev-ai-agent-hook] ${e}
5
+ `)}function Y(e,t){sa(yr(e),{recursive:!0});let n=Cr(yr(e),`.${la(e)}.${process.pid}.${oa(4).toString("hex")}.tmp`);try{ca(n,t,"utf8");try{Sr(n,e)}catch(r){let o=r instanceof Error&&"code"in r?r.code:void 0;if(o==="EEXIST"||o==="EPERM"||o==="EACCES"){Er(e),Sr(n,e);return}throw r}}catch(r){try{Er(n)}catch{}throw r}}function ot(){return new Date().toISOString().replace(/\.\d{3}Z$/,"Z")}function Ir(){process.stdout.write('{"continue":true}')}function C(e){let t=process.env[e];return t===void 0||t===""?void 0:t}async function zt(){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 Wt(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 M(e,t,n=3e3,r={}){let o=await J(e,t,n,r);return o.ok?o.stdout:""}async function Jt(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(C("EV_AI_HOOK_DEBUG")){let r=t.ok?"empty stdout":t.spawnFailed?"spawn failed":`exit ${String(t.code??"unknown")}`;h(`DEBUG: git rev-parse --show-toplevel failed (${r}) cwd=${e}`)}let n=C("CURSOR_PROJECT_DIR")??C("CLAUDE_PROJECT_DIR");if(n&&Gt(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 Vt(e=process.cwd()){return(await Jt(e)).root}function F(e,t){try{return JSON.parse(e)}catch{return t}}var Bt=new Map;function L(e,t){let n=Bt.get(e);if(n!==void 0)return n;try{let r=F(aa(e,"utf8"),t);return Bt.set(e,r),r}catch{return Bt.set(e,t),t}}function de(e){return typeof e=="string"?e:""}function pe(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 m(e,t){let n=pe(e,t);return typeof n=="string"?n:""}var re=500;function Ar(e,t=2){if(!Gt(e))return{entries:[],truncated:!1};let n=[],r=!1,o=(s,i)=>{if(i>t||r)return;let a;try{a=ia(s,{withFileTypes:!0})}catch{return}for(let c of a){if(r)return;let l=Cr(s,c.name);if(c.isDirectory()){o(l,i+1);continue}if(c.isFile()){try{n.push({name:ua(e,l),size:Rr(l).size})}catch{continue}if(n.length>=re){r=!0;return}}}};return o(e,1),{entries:n,truncated:r}}function Yt(e){return Gt(e)?{present:!0,size:Rr(e).size}:{present:!1,size:0}}function Re(e){if(e===void 0||e==="")return!1;let t=e.trim().toLowerCase();return t!=="0"&&t!=="false"&&t!=="no"}function Xt(e=process.env){return Re(T("CURSOR_SANDBOX",e))}var ma=["CIRCLECI","BUILDKITE","TF_BUILD","JENKINS_URL","JENKINS_HOME","CODEBUILD_BUILD_ID","DRONE","DRONE_BUILD_NUMBER","TEAMCITY_VERSION","TRAVIS","APPVEYOR","BITBUCKET_BUILD_NUMBER"];function ga(e){return ma.some(t=>!!T(t,e))}function _a(e){if(T("KUBERNETES_SERVICE_HOST",e)||Re(T("REMOTE_CONTAINERS",e))||Re(T("DEVCONTAINER",e)))return!0;try{if(da("/.dockerenv")||pa("/proc/1/environ","utf8").includes("container="))return!0}catch{}return!1}function Or(e){return["VSCODE_PID","VSCODE_IPC_HOOK","CURSOR_EXTENSION_HOST_ROLE","CURSOR_WORKSPACE_LABEL"].some(t=>!!T(t,e))}function ha(e,t=process.platform){return Or(e)?t==="darwin"||t==="win32"?!0:["__CFBundleIdentifier","DISPLAY","WAYLAND_DISPLAY","SESSIONNAME"].some(n=>!!T(n,e)):!1}function Sa(e){return e===void 0?!1:e.trim().toLowerCase().startsWith("bc-")}function Ea(e){return e==="linux"}function T(e,t){if(t){let n=t[e];return n===void 0||n===""?void 0:n}return C(e)}function ya(e,t,n){return e.trim().toLowerCase()==="cursor"&&t.trim().toLowerCase()==="ubuntu"&&!!Ra(T("CURSOR_VERSION",n))}function Ra(e){if(e===void 0)return null;let t=e.trim();return t.length>0?t:null}function qt(e){if(Sa(e.sessionId))return!0;let t=e.hostname??kr(),n=e.osUser??Pr(e.env);return ya(t,n,e.env)}function Ca(e){return Re(T("CURSOR_AGENT",e.env))?!0:qt(e)}function Ia(e){return!!(process.stdin.isTTY||process.stdout.isTTY||(T("TERM",e)??T("TERM_PROGRAM",e))||(T("SSH_TTY",e)??T("SSH_CONNECTION",e))||(T("__CFBundleIdentifier",e)??T("XPC_SERVICE_NAME",e))||Or(e)||["DISPLAY","WAYLAND_DISPLAY","XDG_SESSION_TYPE","DBUS_SESSION_BUS_ADDRESS"].some(t=>!!T(t,e))||T("SESSIONNAME",e))}function Le(e={}){let t=e.env;if(T("GITHUB_ACTIONS",t))return"github_actions";if(Re(T("CLAUDE_CODE_REMOTE",t)))return"claude_remote";let n=e.platform??process.platform;if(!ha(t,n)&&Ca(e)&&(Re(T("CURSOR_AGENT",t))||Ea(n)))return"cursor_cloud";if(T("CODESPACES",t)||T("CODESPACE_NAME",t))return"codespaces";if(T("GITLAB_CI",t))return"gitlab_ci";if(ga(t))return"managed";let r=T("CI",t);return r&&r!=="false"&&r!=="0"?"managed":_a(t)?"container":Ia(t)?"interactive":"unknown"}async function Zt(){return await M("systemd-detect-virt",[],1e3)}function Pr(e=process.env,t=fa){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 Qt(){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=Pr(),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 Ue(){return kr()}var Aa="https://hooks.ev-ai.ai";function it(e,t=Aa){let n=t.replace(/\/+$/,""),r=e.trim();return`${n}/${r}/hook`}var xr=".claude/ev-ai-runtime-report.json",Tr="config.json";var st="ev-ai-agent-hook";function ka(e){let t=e.split(/[/\\]/).pop();return t&&t.length>0?t:e}function br(e){let t=ka(e);return t===st||t===`${st}.exe`}var om=`current/${st}`,sm=`.ev-ai/agent-hook/${st}`,vr=5e3,Mr=5e3,en=3e3;var tn=3e3,wr=1500,Nr=4*1024,Lr=32*1024,Oa=4*1024,Ur=32*1024,De=840*60*1e3,nn="1.1.5",im=`@ev-ai/agent-hook@${nn}`;var Dr=["claude","cursor","codex"];import{createHash as eu}from"node:crypto";import{existsSync as tu,mkdirSync as nu,readdirSync as ru,readFileSync as is,unlinkSync as as,writeFileSync as ou}from"node:fs";import{homedir as cs}from"node:os";import{join as Tn}from"node:path";import{createHash as $r,randomBytes as Ta}from"node:crypto";import{existsSync as Br,mkdirSync as rn,readFileSync as Gr,unlinkSync as zr,writeFileSync as Wr}from"node:fs";import{homedir as on}from"node:os";import{dirname as at,join as sn,resolve as ba}from"node:path";var Pa=new Set(["action@github.com","noreply@github.com","noreply@anthropic.com","cursoragent@cursor.com"]),xa=new Set(["github-actions","github actions","dependabot","renovate","cursoragent","cursor agent"]);function B(e,t){let n=(e??"").trim().toLowerCase(),r=(t??"").trim().toLowerCase();if(!n&&!r)return!1;if(n.includes("[bot]")||xa.has(n)||r.includes("[bot]")||Pa.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}var va="installation.json",Ma="cloud-bootstrap.lock",wa=6e4;function Jr(e,t,n){let r=`${e}:${t??""}`;return n?`${n}:${r}`:r}function fe(e=on()){return sn(e,".ev-ai","agent-hook")}function Na(e=on()){return sn(fe(e),va)}function Vr(e){return sn(at(e),Ma)}function Yr(){return Ta(8).toString("hex")}function Ce(e){return $r("sha256").update(e).digest("hex").slice(0,16)}function I(e){if(e===void 0)return null;let t=e.trim();return t.length>0?t:null}function Xr(e){return/^[A-Za-z0-9._-]{8,64}$/.test(e)}function La(e=process.env){let t=I(e.EV_AI_HOOK_INSTALLATION_ID);if(t){if(!Xr(t)){h(`WARN: ignoring EV_AI_HOOK_INSTALLATION_ID (expected 8\u201364 chars [A-Za-z0-9._-], got length ${t.length})`);return}return t}}function qr(e,t){return e&&Xr(e)?e:(e&&h(`WARN: ignoring installation id override (expected 8\u201364 chars [A-Za-z0-9._-], got length ${e.length})`),La(t))}function Ua(e){return/^[0-9a-f]{16}$/.test(e)}function Da(e=process.env){if(I(e.GITHUB_ACTIONS)){let t=I(e.GITHUB_REPOSITORY_ID)??I(e.GITHUB_REPOSITORY),n=I(e.GITHUB_ACTOR)??I(e.GITHUB_TRIGGERING_ACTOR)??I(e.GITHUB_USER);if(t&&n)return Ce(`github_actions|${t}|${n}`)}if(I(e.CODESPACES)||I(e.CODESPACE_NAME)){let t=I(e.CODESPACE_NAME);if(t)return Ce(`codespaces|${t}`);let n=I(e.GITHUB_REPOSITORY_ID)??I(e.GITHUB_REPOSITORY),r=I(e.GITHUB_USER)??I(e.GITHUB_ACTOR);if(n&&r)return Ce(`codespaces|${n}|${r}`)}if(I(e.GITLAB_CI)){let t=I(e.CI_PROJECT_ID)??I(e.CI_PROJECT_PATH),n=I(e.GITLAB_USER_LOGIN)??I(e.GITLAB_USER_EMAIL)??I(e.GITLAB_USER_NAME);if(t&&n)return Ce(`gitlab|${t}|${n}`)}return null}var Ha="cursoragent@cursor.com";function Fa(e){let t=I(e.CURSOR_USER_EMAIL);return!t||t.toLowerCase()===Ha?null:t}function ja(e,t){return I(e.CURSOR_PROJECT_DIR)??I(e.CLAUDE_PROJECT_DIR)??t}function Ka(e){return e.replace(/^([a-z]+:\/\/)[^/@]+@/i,"$1").replace(/\.git$/i,"").toLowerCase()}async function $a(e){let t=await M("git",["config","--get","remote.origin.url"],2e3,{cwd:e});return t?Ka(t):e}async function Ba(e){let t=I(await M("git",["config","--local","--get","user.email"],2e3,{cwd:e})||void 0);if(t&&!B(null,t))return t;let n=I(await M("git",["log","-1","--format=%ae"],2e3,{cwd:e})||void 0);return n&&!B(null,n)?n:null}function Ga(e,t){let n=ja(e,t);return n?Ce(`cursor_cloud|${n}|${Fa(e)??""}`):null}async function za(e,t){let n=I(e.CLAUDE_PROJECT_DIR)??t;if(!n)return null;let r=await $a(n),o=await Ba(n);return Ce(`claude_remote|${r}|${o??""}`)}function Hr(e,t){let n=qr(e,t);if(n)return n;let r=Da(t);return r||Yr()}async function Wa(e){let n=await M("git",["config","--get","remote.origin.url"],2e3,{cwd:e})||ba(e);return $r("sha256").update(n).digest("hex").slice(0,16)}function Ja(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 Va(e){try{let t=JSON.parse(e);if(typeof t.installation_id!="string"||t.installation_id.length===0)return;let n=Ja(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 me(e){if(Br(e))try{return Va(Gr(e,"utf8"))}catch{}}function an(e){return me(e)}function Zr(e,t,n){let r=me(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{Y(e,`${JSON.stringify(o,null,2)}
6
+ `)}catch(s){let i=s instanceof Error?s.message:String(s);h(`WARN: operator identity cache write failed open: ${i}`)}}function Qr(e,t=Date.now()){if(!e)return!0;if(me(e)?.operator_identity_hash)return!1;let n=Vr(e);try{if(Br(n)){let r=Number.NaN;try{r=Number(Gr(n,"utf8").trim())}catch{}let o=t-r;if(Number.isFinite(o)&&o>=0&&o<wa)return!1;try{zr(n)}catch{}}}catch{}try{return rn(at(n),{recursive:!0}),Wr(n,`${t}
7
+ `,{encoding:"utf8",flag:"wx"}),!0}catch(r){if(ro(r))return!1;let o=r instanceof Error?r.message:String(r);return h(`WARN: cloud bootstrap claim failed open: ${o}`),!0}}function eo(e){if(e)try{zr(Vr(e))}catch{}}function to(e,t){let r=me(e)?.platform_agent_ids?.[t];return typeof r=="string"&&r.length>0?r:void 0}function no(e,t,n){if(!n)return;let r=me(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{Y(e,`${JSON.stringify(o,null,2)}
8
+ `)}catch(s){let i=s instanceof Error?s.message:String(s);h(`WARN: platform_agent_id cache write failed open: ${i}`)}}function ro(e){return e instanceof Error&&"code"in e&&e.code==="EEXIST"}function Ya(e,t){rn(at(e),{recursive:!0}),Wr(e,`${JSON.stringify(t,null,2)}
9
+ `,{encoding:"utf8",flag:"wx"})}function Fr(e,t){try{return Ya(e,t),t}catch(n){if(!ro(n))throw n;return me(e)}}function jr(e,t){rn(at(e),{recursive:!0}),Y(e,`${JSON.stringify(t,null,2)}
10
+ `)}function Kr(e,t){return{installation_id:e,...t&&t===e?{pinned:!0}:{}}}async function oo(e,t={}){let n=t.home??on(),r=t.env??process.env,o=await Wa(e),s=Na(n),i={sessionId:t.sessionId,hostname:I(r.HOSTNAME)??void 0,osUser:I(r.USER)??I(r.LOGNAME)??I(r.USERNAME)??void 0,env:r},a=Le(i),c=qr(t.overrideId,r),l=a==="cursor_cloud"&&qt(i)?Ga(r,e):a==="claude_remote"?await za(r,e):null,u=me(s);if(u){let E=u;if(c&&c===u.installation_id&&u.pinned!==!0&&(E={...u,pinned:!0},jr(s,E)),!!l&&l!==E.installation_id&&!c&&E.pinned!==!0&&Ua(E.installation_id)&&l){let y={installation_id:l,...E.platform_agent_ids?{platform_agent_ids:E.platform_agent_ids}:{}};return jr(s,y),{installationId:l,storePath:s,repoKey:o}}return{installationId:E.installation_id,storePath:s,repoKey:o}}let d=c??l??Hr(void 0,r),f=Fr(s,Kr(d,c));if(f)return{installationId:f.installation_id,storePath:s,repoKey:o};let p=c??l??Hr(void 0,r),_=Fr(s,Kr(p===d?Yr():p,c));if(_)return{installationId:_.installation_id,storePath:s,repoKey:o};throw new Error(`Failed to create installation record at ${s}`)}var Xa=new Set(["localhost","127.0.0.1","[::1]","::1"]),so=/^[A-Za-z0-9._~-]+$/;function io(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 ct(e){try{let t=new URL(e);return t.protocol==="https:"?!0:t.protocol==="http:"?Xa.has(t.hostname):!1}catch{return!1}}function ao(e){let t;try{t=new URL(e)}catch{return`invalid URL (got: ${e})`}if(!ct(e))return`must be https (or http on localhost / 127.0.0.1 / ::1) (got: ${e})`;let n=qa(e);if(!n)return`must end with /{orgToken}/hook (got: ${e})`;if(!so.test(n))return`org token must match ${so.source} (got: ${n})`;if(io(e))return`must not contain whitespace, control characters, or single quotes (got: ${e})`;if(io(t.pathname))return`pathname must not contain whitespace, control characters, or single quotes (got: ${e})`}function co(e){return new URL(e).toString()}function qa(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.length>0?r:void 0}return}catch{return}}function cn(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 lo(e){if(e.collector_url)return e.collector_url;let t=e.repo_ingest_token?.trim();return t?it(t):""}import{existsSync as mc}from"node:fs";import{existsSync as oc}from"node:fs";import{homedir as fo}from"node:os";import{join as sc}from"node:path";import{existsSync as Za,readdirSync as uo}from"node:fs";import{homedir as lt}from"node:os";import{join as K}from"node:path";function Qa(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 ec(e=process.platform){let t=Qa(e),n=[K(t,"managed-settings.json")],r=K(t,"managed-settings.d");try{if(!Za(r))return n;let o=uo(r).filter(s=>s.endsWith(".json")&&!s.startsWith(".")).sort().map(s=>K(r,s));n.push(...o)}catch{}return n}function ln(e=process.platform,t=lt()){return{serverManaged:K(t,".claude","remote-settings.json"),fileBased:ec(e)}}function tc(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 nc(e=process.platform,t=lt()){let n=[K(tc(e),"hooks.json")],r=K(t,".cursor","managed");try{for(let o of uo(r,{withFileTypes:!0}))!o.isDirectory()||o.name.startsWith(".")||n.push(K(r,o.name,"hooks.json"))}catch{}return n}function rc(e=process.platform,t=lt()){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 ut(e,t=process.platform,n=lt()){switch(e){case"claude":{let{serverManaged:r,fileBased:o}=ln(t,n);return[r,...o]}case"cursor":return nc(t,n);default:return rc(t,n)}}function mo(e){return e.settings.filter(t=>t.toLowerCase().endsWith(".json"))}var ic={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 po(e,t){if(!(!e&&!t))return[...e??[],...t??[]]}function ac(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:po(n.mcpJson,t.mcpJson),mcpToml:po(n.mcpToml,t.mcpToml),plugins:t.plugins??n.plugins,managed:t.managed??n.managed}}function go(e){return Object.fromEntries(Object.entries(ic).map(([t,n])=>[t,ac(n,n[e])]))}var Ie=go("homeOnly"),se=go("projectOnly");function cc(e){return[...e.skillRoots,...e.dirs.map(t=>t.dir),...e.memory.flat(),...e.settings,...e.mcpJson??[],...e.mcpToml??[]]}function lc(e,t){return cc(e).some(n=>oc(sc(t,n)))}function _o(e,t){for(let n of e)if(lc(n,t))return!0;return!1}function oe(e){return[...new Set(e)]}function ie(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:oe(t),subagents:oe(n),commands:oe(r),rules:oe(o),memory:oe(s),settings:oe(i),mcp:oe(a)}}function uc(e,t=fo(),n=process.platform){let r=[];for(let o of e)o.managed&&r.push(...ut(o.managed,n,t));return oe(r)}var ae=ie(Object.values(Ie));function ho(e=fo(),t=process.platform){return uc(Object.values(Ie),e,t)}import{existsSync as dc}from"node:fs";import{resolve as un}from"node:path";function G(e){return un(e).replaceAll("\\","/").replace(/\/$/,"")}function ge(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 dt(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 pc=/^(?!\.)[A-Za-z0-9._-]+(?:\/[A-Za-z0-9._-]+)*$/;function He(e){let t=e.replaceAll("\\","/").replace(/^\.\//,"");return!t||t.startsWith("/")||/^[A-Za-z]:\//.test(t)||t.split("/").includes("..")||!pc.test(t)?null:t}function Ae(e,t){let n=new Set,r=[];for(let o of[e,t]){if(!o)continue;let s=G(o);n.has(s)||(n.add(s),r.push(s))}return r}function fc(e,t){let n=`${e}/`;return t===e||t.startsWith(n)}function X(e,t,n,r=dc){for(let o of e)for(let s of t){let i=G(un(o,s)),a=un(o,s,n).replaceAll("\\","/");if(fc(i,a)&&r(a))return a}return null}var Eo=/(?:^|\/|[\s"'=(])(?:\.cursor\/|\.claude\/|\.agents\/)skills(?:-cursor)?\/([^/]+)\/SKILL\.md/i,yo=/(?:^|\/|[\s"'=(])\.codex\/commands\/([^/]+)\.md\b/i,gc=/(?:^|\s)\/([a-z][a-z0-9-]{1,63}(?:\/[a-z][a-z0-9-]{1,63}){0,5})\b/gi,So=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"]),_c=/^[a-z][a-z0-9-]{1,63}$/,hc=[".cursor/skills",".claude/skills",".agents/skills"],Sc=[".cursor/skills",".cursor/skills-cursor",".claude/skills",".agents/skills"],Ec=ge(hc,ie(Object.values(se)).skills),yc=ge(Sc,ie(Object.values(Ie)).skills),Rc=new Set(["read","read_file","view"]),Cc=new Set(["bash","shell","zsh"]);function dn(e){let t=e.replace(/\\/g,"/");return Eo.exec(t)?.[1]??null}function Ic(e){let t=e.replace(/\\/g,"/"),r=yo.exec(t)?.[1];return r?r.toLowerCase():null}function Ac(e){return dn(e)??Ic(e)}function kc(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 pt(e){return typeof e=="string"?pt(F(e,null)):!e||typeof e!="object"?null:kc(e)}function Ro(e){if(typeof e=="string")return Ro(F(e,null));if(!e||typeof e!="object")return null;let t=e.command;return typeof t=="string"&&t.length>0?t:null}function pn(e){let t=Ro(e.tool_input);if(t)return t;let n=de(e.command);return n.length>0?n:null}function Oc(e){let t=e.replace(/\\/g,"/"),n=Eo.exec(t);if(n?.[1])return n[1];let o=yo.exec(t)?.[1];return o?o.toLowerCase():null}function Pc(e){return typeof e.tool_name=="string"?e.tool_name:typeof e.tool=="string"?e.tool:""}function fn(e){let t=pt(e.tool_input)??de(e.file_path);return t.length>0?t:null}function Fe(e,t,n){let r=Pc(e).toLowerCase();if(Rc.has(r)){let o=fn(e);return o?t(o):null}if(Cc.has(r)){let o=pn(e);return o?n(o):null}return null}function Co(e){return Fe(e,Ac,Oc)}function xc(e){let t=new Set,n=[];for(let r of e.matchAll(gc)){let o=r[1]?.toLowerCase();!o||t.has(o)||Tc(o)||(t.add(o),n.push(o))}return n}function Tc(e){let t=e.split("/")[0];return So.has(e)||t!==void 0&&So.has(t)}function Io(e){let t=e.skillId.toLowerCase();if(!_c.test(t))return null;let n=e.exists??mc,r=`${t}/SKILL.md`,o=X(Ae(e.launchCwd,e.gitRoot),Ec,r,n);return o!==null?o:e.home?X([G(e.home)],yc,r,n):null}function bc(e){return de(e.prompt)}function Ao(e){let t=m(e,"command_name");if(t){let r=m(e,"expansion_type");if(r&&r!=="slash_command")return[];let o=t.replace(/^\//,"").toLowerCase();return o?[o]:[]}let n=bc(e);return n?xc(n):[]}var yn=Ne(Oe(),1);import{existsSync as kl}from"node:fs";var he={claude:".claude",cursor:".cursor",codex:".codex",opencode:".opencode"};function Ke(e){let n=e.replace(/^\/+|\/+$/g,"").toLowerCase().split("/").filter(Boolean);return n.length<2?"":n.join("/")}function Al(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 Ke(n[1]);let r=t.match(/^ssh:\/\/[^/]+\/(.+)$/i);if(r?.[1])return Ke(r[1]);t=t.replace(/^https:\/\//i,""),t=t.replace(/^http:\/\//i,""),t=t.replace(/^ssh:\/\//i,"");let o=t.match(/^[^/]+\/(.+)$/);return o?.[1]?Ke(o[1]):Ke(t)}async function $e(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})]),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 Ho(e,t,n,r=process.cwd(),o,s,i){if(t)return t;let a=he[n];if(!a)return"";let c=Jr(n,e.scope_path,i);if(s){let _=to(s,c);if(_)return _}let l=o??await $e(r),u=l?.remote?Al(l.remote):"";if(u||(u=Ke(process.env.GITHUB_REPOSITORY??"")),!u)return"";let d=e.scope_path??"",f=d?`${d}/`:"",p=`${u}:${f}${a}`;return s&&no(s,c,p),p}var Ol=[".cursor/rules",".claude/rules",".codex/rules"],Pl=ie(Object.values(se)).rules;function xl(e){return ge(dt(e?he[e]:void 0,Ol),Pl)}var Tl=/(?:^|\/|[\s"'=(])((?:\.cursor|\.claude|\.codex)\/rules\/[^'"\s]+?\.(?:mdc|md|rules))\b/i;function Fo(e){let t=He(e.relativePath);if(!t)return null;let n=e.exists??kl,r=Ae(e.launchCwd,e.gitRoot),o=xl(e.runnerPlatform),s=X(r,o,t,n);if(s!==null)return s;if(!t.includes("/")){let i=X(r,["."],t,n);if(i!==null)return i}return e.home?X([G(e.home)],o,t,n):null}function bl(e){let t=e.replace(/\\/g,"/"),r=Tl.exec(t)?.[1];return r?(0,yn.nativeKeyForRulePath)(r):null}function jo(e){return Fe(e,yn.nativeKeyForRulePath,bl)}function Ko(e){return e.replace(/\.(mdc|md|rules)$/i,"")}function $o(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=He(i);!a||n.has(a)||(n.add(a),r.push(a))}return r}var Rn=Ne(Oe(),1);import{existsSync as vl}from"node:fs";var Ml=[".cursor/commands",".claude/commands",".codex/prompts"],wl=ie(Object.values(se)).commands;function Nl(e){return ge(dt(e?he[e]:void 0,Ml),wl)}var Ll=/(?:^|\/|[\s"'=(])((?:\.cursor|\.claude|\.codex)\/(?:commands|prompts)\/[^'"\s]+?\.(?:md|mdc))\b/i;function Bo(e){let t=He(e.commandId);if(!t)return null;let n=e.exists??vl,r=`${t}.md`,o=Nl(e.runnerPlatform),s=X(Ae(e.launchCwd,e.gitRoot),o,r,n);return s!==null?s:e.home?X([G(e.home)],o,r,n):null}function Ul(e){let t=e.replace(/\\/g,"/"),r=Ll.exec(t)?.[1];return r?(0,Rn.nativeKeyForCommandPath)(r):null}function Go(e){return Fe(e,Rn.nativeKeyForCommandPath,Ul)}import{existsSync as Wo}from"node:fs";import{homedir as Jo}from"node:os";import{join as Be,resolve as Cn,sep as zo}from"node:path";function In(e){return[...new Set([e,e.replaceAll(/[^A-Za-z0-9_-]/g,"_"),e.replaceAll(/[^A-Za-z0-9_-]+/g,"_")])]}function An(e,t){let n=t.toLowerCase();return In(e).some(r=>r.toLowerCase()===n)}function gt(e,t,n){if(!Wo(e))return;let r=L(e,{});for(let[o,s]of Object.entries(r.mcpServers??{}))n.set(o,{declared:{name:o,...t},config:s})}function Dl(e,t,n){if(!Wo(e))return;let r=L(e,{}),o=Cn(t),s=null;for(let a of Object.keys(r.projects??{})){let c=Cn(a);(o===c||o.startsWith(c.endsWith(zo)?c:c+zo))&&(s===null||c.length>Cn(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 Vo(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"?(gt(Be(r,".claude.json"),{source:"claude_json_user"},o),Dl(Be(r,".claude.json"),t,o)):n==="cursor"&&gt(Be(r,".cursor/mcp.json"),{source:"cursor_mcp_user"},o),gt(Be(t,".mcp.json"),{source:"mcp_json"},o),gt(Be(t,".cursor/mcp.json"),{source:"cursor_mcp"},o),o}async function kn(e,t=process.cwd(),n="claude",r=Jo()){return[...Vo(e,t,n,r).values()].map(o=>o.declared)}function Yo(e,t,n=process.cwd(),r="claude",o=Jo()){let s=Vo(t,n,r,o),i=s.get(e);if(i!==void 0)return i.config??null;for(let[a,c]of s)if(An(a,e))return c.config??null;return null}function On(e){return e!==void 0&&Dr.includes(e)}function _t(e,t){let n=e[t+1];return n&&!n.startsWith("--")?{value:n,next:t+1}:{next:t}}function ht(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=_t(e,i);t=c.value,i=c.next;continue}if(a.startsWith("--runner=")){t=a.slice(9);continue}if(a==="--url"){let c=_t(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=_t(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=_t(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:On(t)?t:void 0,event:n,collectorUrl:r,orgToken:o,baseUrl:s}}function Pn(e){let t=e.collectorUrl?.trim(),n;if(t)n=t;else{let o=e.orgToken?.trim();o&&(n=it(o,e.baseUrl?.trim()??void 0))}if(!n)return;let r=ao(n);if(r){h(`WARN: ignoring --url/--token collector override: ${r}`);return}return co(n)}function Xo(e,t){if(m(e,"conversation_id"))return!0;if(t==="")return!1;let n=t[0];return n?.toLowerCase()===n}function Hl(){return!!(C("CURSOR_VERSION")??C("CURSOR_PROJECT_DIR"))}function xn(e,t,n){return e!=="claude"&&e!=="codex"?!1:Xo(t,n)?!0:Hl()}function Ge(e,t,n,r){if(Xo(e,t))return"cursor";if(On(r))return r;let o=m(e,"conversation_id"),s=m(e,"turn_id"),i=m(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")&&(c="claude"),On(n)&&(c=n),c}function St(e,t){let n=e.toLowerCase();return n==="sessionend"||n==="stopfailure"||n==="subagentstop"?!0:n==="stop"&&t==="codex"}function Fl(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 qo(e){let t=e.toLowerCase();return t==="posttooluse"?!0:t==="posttoolusefailure"||t==="permissiondenied"?!1:null}function Zo(e,t,n){let r=m(e,"session_id")||m(e,"conversation_id"),o=m(e,"prompt.id")||m(e,"prompt_id")||m(e,"generation_id")||m(e,"turn_id"),s=m(e,"hook_event_name")||m(e,"event"),i=m(e,"source"),a=Ge(e,s,t,n);return{sessionId:r,turnId:o,runnerEvent:s,hookSource:i,runnerPlatform:a}}var jl=["session_start","session_end","tool_invoked","skill_invoked"];function Kl(e){return jl.includes(e)}function Qo(e,t){return e&&Kl(e)?e:Fl(t.toLowerCase())}var $l={beforeshellexecution:"Shell",aftershellexecution:"Shell",beforereadfile:"Read",afterfileedit:"Write"};function es(e){return/^mcp__/i.test(e)||/^MCP:/i.test(e)}function ts(e,t=""){let n=m(e,"tool_name")||m(e,"tool")||null,r=t.toLowerCase();n?r==="beforemcpexecution"&&!es(n)&&(n=`MCP:${n}`):n=$l[r]??null;let o=e.tool_input,i=(o&&typeof o=="object"?de(o.skill)||de(o.skill_name):"")||m(e,"skill_name")||null,a=n&&e.tool_name!==n&&e.tool!==n?{...e,tool_name:n}:e;i??=Co(a);let c=jo(a),l=Go(a);return{toolName:n,skillName:i,ruleName:c,commandName:l}}var Bl=/^[A-Za-z][A-Za-z0-9_.:-]{0,63}$/;function ns(e){for(let t of["subagent_type","agent_type"]){let n=m(e,t);if(n&&Bl.test(n))return n}return null}function rs(e){let t=pe(e,"duration_ms");if(typeof t=="number")return t;let n=pe(e,"duration");return typeof n=="number"?n:null}var Gl="error",zl="interrupted",Wl="permission_denied",Jl=/^[A-Za-z][A-Za-z0-9_.-]{0,63}$/;function ze(e){return Jl.test(e)?e:null}function Vl(e){for(let t of["failure_type","error_type"]){let n=ze(m(e,t));if(n)return n}return null}function os(e,t){return pe(e,"is_interrupt")===!0?zl:t.toLowerCase()==="permissiondenied"?Wl:Vl(e)??Gl}function Yl(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 Xl(e,t){let n=null;for(let r of t)!r||!An(r,e)||(n===null||r.length>n.length)&&(n=r);return n}function ql(e,t){let n=null,r=0;for(let s of t)if(s)for(let i of In(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:Xl(o[1],t)??o[1],mcpTool:o[2]}}function Zl(e,t){if(/^mcp__/i.test(e))return ql(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:Yl(n,t),mcpTool:n}}return{mcpServer:null,mcpTool:null}}function Ql(e,t){let n=`${t}__`;return e.length>n.length&&e.toLowerCase().startsWith(n.toLowerCase())?e.slice(n.length):e}function ss(e,t=[],n=""){let r=e?Zl(e,t):{mcpServer:null,mcpTool:null},o=ze(n.trim());if(!o)return r;let s=r.mcpTool;return!s&&e&&!es(e)&&(s=e),s&&(s=Ql(s,o)),{mcpServer:o,mcpTool:s}}var ls=3e4,su="claims",iu=!0,au=100,cu=new Set(["sessionstart","sessionend","stopfailure"]),lu=["tool_name","tool","command","file_path","url"];function uu(e=cs()){return Tn(fe(e),su)}function us(e){let t=e.split(`
11
+ `,1)[0]??"";return Number(t.trim())}function ds(e){return eu("sha256").update(e).digest("hex").slice(0,32)}function du(e){let t=[];for(let n of lu){let r=m(e,n).trim();r&&t.push(`${n}=${r}`)}return t.length===0?"":ds(t.join("\0"))}function pu(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=cu.has(n);if(!a&&!c)return;let l=e.runnerPlatform.trim()||"unknown";return ds(`${l}|${t}|${n}|${r}|${o}|${i}|${s}`)}function fu(e){return e instanceof Error&&"code"in e&&e.code==="EEXIST"}function mu(e,t){return Tn(e,t)}function gu(e,t=Date.now()){let n;try{n=ru(e)}catch{return}let r=0;for(let o of n){if(r>=au)break;r+=1;let s=Tn(e,o),i=Number.NaN;try{i=us(is(s,"utf8"))}catch{continue}let a=t-i;if(!(!Number.isFinite(a)||a<0||a<ls))try{as(s)}catch{}}}function _u(e,t,n=Date.now()){let r=mu(t,e);try{if(tu(r)){let o=Number.NaN;try{o=us(is(r,"utf8"))}catch{}let s=n-o;if(Number.isFinite(s)&&s>=0&&s<ls)return!1;try{as(r)}catch{}}}catch{}try{nu(t,{recursive:!0}),ou(r,`${n}
12
+ `,{encoding:"utf8",flag:"wx"})}catch(o){if(fu(o))return!1;let s=o instanceof Error?o.message:String(o);return h(`WARN: event claim failed open: ${s}`),!0}return gu(t,n),!0}function hu(e,t,n){let r=m(e,"session_id")||m(e,"conversation_id"),o=m(e,"prompt.id")||m(e,"prompt_id")||m(e,"generation_id")||m(e,"turn_id"),s=m(e,"tool_use_id"),i=m(e,"subagent_id")||m(e,"agent_id"),a=Ge(e,t,void 0,n),c=du(e);return{runnerPlatform:a,sessionId:r,runnerEvent:t,turnId:o,toolUseId:s,subagentId:i,callFingerprint:c}}function ps(e,t,n,r=cs(),o=Date.now()){if(!iu)return!0;let s=pu(hu(e,t,n));if(!s)return!0;let i=_u(s,uu(r),o);return!i&&C("EV_AI_HOOK_DEBUG")&&h(`DEBUG: duplicate hook event suppressed (claim ${s.slice(0,8)}\u2026)`),i}import{realpathSync as Sf}from"node:fs";import{homedir as Ef}from"node:os";var k=Ne(Oe(),1);import{existsSync as Su,readFileSync as Eu}from"node:fs";import{homedir as fs}from"node:os";import{join as yu}from"node:path";var Ru="cloud-cache.json",Cu=1440*60*1e3,Iu=900*1e3;function Au(e=fs()){return yu(fe(e),Ru)}function ku(e){if(!Su(e))return;let t=F(Eu(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 Ou(e,t){try{Y(e,`${JSON.stringify(t)}
13
+ `)}catch(n){let r=n instanceof Error?n.message:String(n);h(`WARN: cloud cache write failed open: ${r}`)}}function Pu(e,t,n){if(!e||e.context!==t)return!1;let r=e.result===null?Iu:Cu;return n-e.probed_at<r}async function xu(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 Tu(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 bu(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 vu(e){let t=await Promise.allSettled([xu(e),Tu(e),bu(e)]);for(let n of t)if(n.status==="fulfilled"&&n.value)return n.value;return null}async function bn(e,t){if(e==="interactive")return null;let n=t?.home??fs(),r=t?.timeoutMs??1e3,o=t?.nowMs??Date.now(),s=Au(n),i=ku(s);if(Pu(i,e,o))return i.result;let a=await vu(r);return Ou(s,{context:e,probed_at:o,result:a}),a}var Mu=["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"],wu=["CURSOR_PROJECT_DIR"],Nu=new Set(["key","api-key","api_key","apikey","token","sig","signature","access_token","password","pwd","secret","client_secret"]);function Lu(e){try{let t=new URL(e);(t.username||t.password)&&(t.username="",t.password="");for(let[n]of t.searchParams)Nu.has(n.toLowerCase())&&t.searchParams.set(n,"[redacted]");return t.toString()}catch{return e}}function vn(e=process.env){let t=Mu.map(r=>Object.prototype.hasOwnProperty.call(e,r)?{name:r,present:!0,value:Lu(e[r]??"")}:{name:r,present:!1}),n=wu.map(r=>({name:r,present:Object.prototype.hasOwnProperty.call(e,r)&&!!e[r]}));return[...t,...n]}import{homedir as dd}from"node:os";import{homedir as ms}from"node:os";import{join as Uu}from"node:path";function Du(e=ms()){return Uu(e,".claude.json")}function Et(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}function gs(e=ms()){let n=L(Du(e),{}).oauthAccount;if(!n||typeof n!="object")return null;let r=Et(n.emailAddress),o=Et(n.fullName)??Et(n.displayName),s=Et(n.accountUuid),i=r??s;return!i||B(o,r)?null:{git_user_name:null,git_user_email:null,platform_login:i,identity_source:"claude_oauth"}}import{homedir as Ss}from"node:os";import{join as _s}from"node:path";var Hu="https://api.openai.com/auth";function Pe(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}function Es(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function Fu(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 Es(r)}catch{return null}}function hs(e,t,n){return Pe(e[n])??Pe(t?.[n])}function ju(e=process.env,t=Ss()){let n=Pe(e.CODEX_HOME)??_s(t,".codex");return _s(n,"auth.json")}function ys(e=process.env,t=Ss()){let n=L(ju(e,t),{}),r=Pe(n.auth_mode);if(r!==null&&r!=="chatgpt"||r===null&&Pe(n.OPENAI_API_KEY))return null;let o=Pe(n.tokens?.id_token);if(!o)return null;let s=Fu(o);if(!s)return null;let i=Es(s[Hu]),a=hs(s,i,"name"),c=hs(s,i,"email");return!c||B(a,c)?null:{git_user_name:null,git_user_email:null,platform_login:c,identity_source:"codex_oauth"}}import{homedir as Ct}from"node:os";import{join as te}from"node:path";import{join as Ku}from"node:path";var $u="cursor-ide-identity.json",Bu=De;function Cs(e){return Ku(fe(e),$u)}function Rs(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}function Is(e){let t=L(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:Rs(t.email),auth_id:Rs(t.auth_id)}}function As(e,t,n){if(e?.db_path!==t)return!1;let r=n-e.read_at_ms;return r>=0&&r<Bu}function ks(e,t){try{Y(e,`${JSON.stringify(t)}
14
+ `)}catch(n){let r=n instanceof Error?n.message:String(n);h(`WARN: cursor IDE identity cache write failed open: ${r}`)}}import{execFileSync as Gu}from"node:child_process";import{existsSync as zu}from"node:fs";import{createRequire as Wu}from"node:module";import{pathToFileURL as Ju}from"node:url";var Ps=Wu(import.meta.url),yt=`
15
15
  SELECT key, value
16
16
  FROM ItemTable
17
17
  WHERE key LIKE 'cursorAuth/%'
18
18
  AND key NOT LIKE '%Token%'
19
19
  AND key NOT LIKE '%token%'
20
20
  ORDER BY key
21
- `.trim(),Rn=new Map;function cs(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 us(e){return e.toLowerCase().includes("token")}function ds(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=cs(r.key),s=cs(r.value);o&&s&&!us(o)&&t.set(o,s)}return t}function iu(e){let t=su(e);return t.search="mode=ro&immutable=1",t.href}function au(e){try{let t=ls("bun:sqlite");if(typeof t.Database!="function")return null;let n=new t.Database(e,{readonly:!0,create:!1});try{let r=n.query?.(ft)??n.prepare(ft);return ds(r.all?.())}finally{n.close?.()}}catch{return null}}function cu(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 lu(e){try{return cu(()=>{let t=ls("node:sqlite");if(typeof t.DatabaseSync!="function")return null;let n=new t.DatabaseSync(e,{readOnly:!0});try{return ds(n.prepare(ft).all?.())}finally{n.close?.()}})}catch{return null}}function uu(e){let t=new Map;for(let n of e.split(`
22
- `)){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&&!us(s)&&t.set(s,i)}return t}function du(e){try{let t=nu("sqlite3",["-noheader","-batch","-separator"," ",e,ft],{encoding:"utf8",timeout:2e3,maxBuffer:65536,windowsHide:!0,stdio:["ignore","pipe","ignore"]});return uu(t)}catch{return null}}function ps(e){let t=Rn.get(e);if(t)return t;if(!ru(e)){let o=new Map;return Rn.set(e,o),o}let n=iu(e),r=au(n)??du(n)??lu(n)??new Map;return Rn.set(e,r),r}var pu="cursorAuth/cachedEmail",fu="cursorAuth/stripeMembershipAuthId";function mt(e){if(e===void 0)return null;let t=e.trim();return t.length>0?t:null}function mu(e=gt(),t=process.platform,n=process.env){let r=mt(n.VSCODE_PORTABLE);if(r)return Q(r,"user-data");let o=mt(n.VSCODE_APPDATA);if(o)return Q(o,"Cursor");switch(t){case"darwin":return Q(e,"Library","Application Support","Cursor");case"win32":return Q(mt(n.APPDATA)??Q(e,"AppData","Roaming"),"Cursor");default:return Q(mt(n.XDG_CONFIG_HOME)??Q(e,".config"),"Cursor")}}function gu(e=gt()){return Q(e,".cursor","cli-config.json")}function _u(e=gt(),t=process.platform,n=process.env){return Q(mu(e,t,n),"User","globalStorage","state.vscdb")}function je(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}function hu(e){return typeof e.userId=="number"&&Number.isFinite(e.userId)?String(e.userId):je(e.userId)}function Su(e){return je(e.email)??je(e.authId)??hu(e)}function Cn(e){let t=je(e.email),n=je(e.displayName),r=Su(e);return!r||$(n,t)?null:{git_user_name:null,git_user_email:null,platform_login:r,identity_source:"cursor_oauth"}}function Eu(e){let n=N(gu(e),{}).authInfo;return!n||typeof n!="object"?null:Cn(n)}function yu(e,t,n){let r=_u(e,process.platform,t),o=os(e),s=ss(o);if(is(s,r,n))return Cn({email:s?.email,authId:s?.auth_id});let i=ps(r),a=i.get(pu)??null,c=i.get(fu)??null;return as(o,{read_at_ms:n,db_path:r,email:a,auth_id:c}),Cn({email:a,authId:c})}function fs(e=gt(),t=process.env,n=Date.now()){return Eu(e)??yu(e,t,n)}import{createHash as Ru}from"node:crypto";import{resolve as Cu}from"node:path";function M(e){return Ru("sha256").update(e).digest("hex").slice(0,16)}function In(e){return M(Cu(e))}function z(e,t){return`${e}\0${t}`}function ms(e){let t=e.indexOf("\0");return t<=0?null:{path:e.slice(0,t),name:e.slice(t+1)}}function Ke(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(`
23
- `);return M(n)}function Au(e,t,n="git_config",r=null){return M(`${e??""}|${t??""}|${r??""}|${n}`)}function ku(e){let t=null,n=null;for(let r of e.split(`
24
- `)){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 Ou(e,t=v){let n=await t("git",["config","--get-regexp","^user\\.(name|email)$"],2e3,{cwd:e});return ku(n)}function xu(e=process.env){let t=I(e.GIT_AUTHOR_NAME),n=I(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=I(e.GIT_COMMITTER_NAME),o=I(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=I(e.EMAIL);return s?{git_user_name:null,git_user_email:s,platform_login:null,identity_source:"git_env"}:null}function ee(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 Tu(e=process.env){let t=I(e.EV_AI_HOOK_OPERATOR_EMAIL),n=I(e.EV_AI_HOOK_OPERATOR_LOGIN),r=ee(I(e.EV_AI_HOOK_OPERATOR_NAME),t,"configured",t??n);if(r)return r;let o=I(e.GITHUB_ACTOR)??I(e.GITHUB_TRIGGERING_ACTOR)??I(e.GITHUB_USER),s=ee(o,null,"github",o);if(s)return s;let i=I(e.GITLAB_USER_LOGIN),a=I(e.GITLAB_USER_EMAIL),c=ee(I(e.GITLAB_USER_NAME)??i,a,"gitlab",a??i);if(c)return c;let l=I(e.BUILD_REQUESTEDFOREMAIL),u=ee(I(e.BUILD_REQUESTEDFOR),l,"azure_devops",l??I(e.BUILD_REQUESTEDFORID));if(u)return u;let d=I(e.BUILDKITE_BUILD_CREATOR_EMAIL),p=ee(I(e.BUILDKITE_BUILD_CREATOR),d,"buildkite",d);if(p)return p;let f=I(e.BUILD_USER_EMAIL)??I(e.CHANGE_AUTHOR_EMAIL),_=ee(I(e.BUILD_USER)??I(e.CHANGE_AUTHOR),f,"jenkins",f??I(e.BUILD_USER_ID));if(_)return _;let E=I(e.CIRCLE_USERNAME),g=ee(E,null,"circleci",E);if(g)return g;let y=I(e.CODEBUILD_INITIATOR),w=ee(y,null,"codebuild",y);if(w)return w;let D=I(e.DRONE_COMMIT_AUTHOR_EMAIL),x=I(e.DRONE_COMMIT_AUTHOR),O=ee(x??I(e.DRONE_COMMIT_AUTHOR_NAME),D,"drone",D??x);if(O)return O;if(gs(e.CLAUDE_CODE_REMOTE)||gs(e.CURSOR_AGENT)){let L=I(e.CURSOR_USER_EMAIL);return{git_user_name:null,git_user_email:null,platform_login:L&&!$(null,L)?L:null,identity_source:"cloud"}}return null}function An(e){return!!((e.git_user_name??e.git_user_email)&&!$(e.git_user_name,e.git_user_email))}function I(e){if(e===void 0)return null;let t=e.trim();return t.length>0?t:null}function gs(e){if(e===void 0||e==="")return!1;let t=e.trim().toLowerCase();return t!=="0"&&t!=="false"&&t!=="no"}function Pu(e,t,n){return e==="claude"?qo(t):e==="cursor"?fs(t,n):e==="codex"?ns(n,t):null}async function kn(e,t=v,n=process.env,r={}){let o=await Ou(e,t),s=xu(n),i=An(o)?o:s&&An(s)?s:null,a=Pu(r.runnerPlatform,r.home??Iu(),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=Tu(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:An(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 On(e){let{gitRoot:t,installationStorePath:n,forceResend:r}=e,o=e.exec??v,s=e.env??process.env,i=await kn(t,o,s,{runnerPlatform:e.runnerPlatform,home:e.home}),a=Au(i.git_user_name,i.git_user_email,i.identity_source,i.platform_login),l=(n?tn(n):void 0)?.operator_identity_hash;if(!(r||l!==void 0&&l!==a||!l))return{commit:()=>{}};let f=n;return{operator:i,commit:()=>{f&&Kr(f,a,Xe())}}}function xn(e){return e?!tn(e)?.operator_identity_hash:!0}function _s(e){return!0}import{existsSync as Qd,readFileSync as ep}from"node:fs";import{homedir as ai}from"node:os";import{join as xe,resolve as tp}from"node:path";import{basename as Wd,join as Oe}from"node:path";import{dirname as As,resolve as St}from"node:path";import{existsSync as vu}from"node:fs";import{homedir as Es}from"node:os";import{relative as ys,resolve as X,sep as ae}from"node:path";var wu=["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"];function bu(e){return e.capture_hook_input==="full"?!0:e.capture_hook_input==="allowlist"?!1:R("EV_AI_HOOK_CAPTURE_FULL_INPUT")==="1"}function Mu(e){let t={};for(let n of wu){let r=le(e,n);r!==void 0&&(t[n]=r)}return t}function _t(e,t){if(typeof e!="string"||e.length===0||!t)return null;let n=X(e),r=X(t),o=ys(r,n);return!o||o==="."?".":o.startsWith(`..${ae}`)||o===".."||X(r,o)!==n?null:o.split(ae).join("/")}function Rs(e,t){let n=ys(X(t),X(e)).split(ae).join("/");return!n||n==="."?null:n===".."||n.startsWith("../")&&n.split("/").every(r=>r==="..")?n:null}function Cs(e){return typeof e!="string"||e.length===0?null:X(e).split(ae).join("/")}function Nu(){let e=R("CURSOR_PROJECT_DIR");if(!e)return null;let t=X(e);return vu(t)?t.split(ae).join("/"):null}function Tn(e,t){return _t(e,t)!==null}function Lu(e,t){let n=X(t??Es(),".cursor").split(ae).join("/");return Tn(e,n)}function Uu(e,t,n){return t!==null&&Tn(e,t)?!0:t!==null&&Lu(e,n.home)?!1:n.inGitRepo===!0&&n.gitRoot!==void 0&&Tn(e,n.gitRoot)?!0:t===null}function Is(e,t){let n=Cs(e.cwd);if(n!==null)return n;let r=X(process.cwd()).split(ae).join("/"),o=Nu();return Uu(r,o,t)?r:o??r}function Pn(e,t={}){return Is(e,t)}function vn(e,t=Es()){let n=X(t).split(ae).join("/").replace(/\/$/,"");return n.length<=1?e:e===n?"~":e.startsWith(`${n}/`)?`~${e.slice(n.length)}`:e}function hs(e,t,n){let r=Cs(n.launchCwd)??Is(t,n);e.cwd=vn(r,n.home);let o=n.inGitRepo===!0&&n.gitRoot!==void 0?_t(r,n.gitRoot):null;o!==null&&(e.cwd_relative=o)}function Ss(e,t){let n=JSON.stringify(e),r=Buffer.byteLength(n,"utf8");if(r<=t)return e;let o=Object.entries(e).filter(([i,a])=>!i.startsWith("_")&&(typeof a=="string"||typeof a=="number"||typeof a=="boolean")).sort((i,a)=>Buffer.byteLength(JSON.stringify(i[1]),"utf8")-Buffer.byteLength(JSON.stringify(a[1]),"utf8")),s={_truncated:!0,_original_bytes:r};for(let[i,a]of o){let c={...s,[i]:a};if(Buffer.byteLength(JSON.stringify(c),"utf8")>t)break;s[i]=a}return s}function ht(e,t,n={}){if(bu(t)){let o={...e};return delete o.cwd,delete o.transcript_path,hs(o,e,n),Ss(o,Ar)}let r=Mu(e);return hs(r,e,n),Ss(r,Ir)}function Du(e){return typeof e=="string"&&e.length>0}function wn(e){let t=St(e.home),n=St(e.launchCwd),r=e.gitRoot?St(e.gitRoot):null,o=new Set,s=[],i=null;e.inGitRepo&&Du(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&&_t(n,r)!==null;if(e.inGitRepo&&r!==null&&r!==t&&c){let l=As(r);for(;;){let u=St(l);if(u===t)break;let d=As(u);if(d===u)break;if(e.hasProjectSpec(u)){s.push({scope:"parent",dir:u}),a=Rs(u,n);break}l=d}}return{anchors:s,parentRel:a}}import{existsSync as ks,readdirSync as Fu,realpathSync as Hu}from"node:fs";import{basename as ju,dirname as Ku,relative as $u,resolve as Bu,sep as Gu}from"node:path";var bn=400,Et=class{constructor(t,n={}){this.home=t;this.pathMode=n.pathMode??"home-relative",this.maxEntries=n.maxEntries??te}components=[];truncated=!1;pathMode;maxEntries;pluginExpandRemaining;seenRealpaths=new Set;componentPath(t){if(this.pathMode==="tilde"){let r=Bu(t).split(Gu).join("/");return vn(r,this.home)}let n=$u(this.home,t).replace(/\\/g,"/");return!n||n.startsWith("..")?`external/${M(Ku(t))}/${ju(t)}`:n}claimFile(t){try{let n=Hu(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(!ks(t))return[];try{return Fu(t,{withFileTypes:!0})}catch{return[]}}readJson(t,n){if(ks(t))return N(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 Mn,readFileSync as zu,statSync as Wu}from"node:fs";import{basename as xs,join as $e,relative as Ts}from"node:path";var Nn=100*1024,Ju=4;function Vu(e){return e.length<=Nn?e:`${e.slice(0,Nn-1)}\u2026`}function Yu(e){try{let t=zu(e),n=t.toString("utf8");return{hash:M(t),length:t.length,text:Vu(n)}}catch{return null}}var Os={HOOK:"EVENT",COMMAND:"EXPLICIT_INVOCATION",MEMORY:void 0,MCP_SERVER:void 0,PLUGIN:void 0,SKILL:"UNSPECIFIED",RULE:"UNSPECIFIED",SUBAGENT:"UNSPECIFIED"};function Xu(e){return e in Os?Os[e]:"UNSPECIFIED"}function yt(e,t){if(!e.claimFile(t.absolutePath))return!1;let n=Yu(t.absolutePath);if(!n)return!1;let r=t.name??xs(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=Xu(t.kind);return s&&(o.trigger=s),e.push(o)}function qu(e,t,n){let r=Ts(e,t).replace(/\\/g,"/");return!r||r.startsWith("..")?xs(t).replace(/\.(md|mdc|toml)$/i,""):n?r.replace(/\.(md|mdc|toml)$/i,""):r}function ge(e,t){let{dir:n,kind:r,origin:o,enabled:s,nested:i,extensions:a}=t;Ln(e,{walkRoot:n,currentDir:n,depth:0,kind:r,origin:o,enabled:s,nested:i,extensions:a})}function Ln(e,t){let{walkRoot:n,currentDir:r,depth:o,kind:s,origin:i,enabled:a,nested:c,extensions:l}=t;if(!(o>Ju))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 f=$e(r,u.name,c);if(Mn(f)){let _=Ts(n,$e(r,u.name)).replace(/\\/g,"/");yt(e,{absolutePath:f,kind:s,origin:i,enabled:a,name:_||u.name});continue}Ln(e,{walkRoot:n,currentDir:$e(r,u.name),depth:o+1,kind:s,origin:i,enabled:a,nested:c,extensions:l});continue}if(u.isDirectory()){Ln(e,{walkRoot:n,currentDir:$e(r,u.name),depth:o+1,kind:s,origin:i,enabled:a,nested:c,extensions:l});continue}if(!u.isFile()||!l)continue;let d=u.name.toLowerCase();if(!l.some(f=>d.endsWith(f)))continue;let p=$e(r,u.name);yt(e,{absolutePath:p,kind:s,origin:i,enabled:a,name:qu(n,p,!0)})}}function Ps(e){for(let t of e)if(Mn(t))try{if(Wu(t).size>0)return t}catch{continue}return e.find(t=>Mn(t))}var Zu="<omitted>",Qu=["package_name","package_spec","package_version","package_version_source"],vs=100,ws=120,Rt=[{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"}],bs=new Set(Rt.map(e=>e.attr)),ed=["enabled","disabled"],td=["serverUrl","auth","bearer_token_env_var","default_tools_approval_mode","defaultToolsApprovalMode","env_vars","env_http_headers","http_headers"],nd=new Set(["type","command","url","args","env","envVars","headers",...ed,...td,...Rt.map(e=>e.raw)]),rd=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",...Qu,...bs,...[...bs].map(e=>`${e}_truncated`)]);function Ms(e,t){for(let n of t)nd.has(n)||rd.has(n)||(e[n]=Zu)}var od=/^(authorization|auth|api[-_]?key|access[-_]?token|refresh[-_]?token|secret|password|passwd|token|bearer|client[-_]?secret|client[-_]?id|private[-_]?key|signing[-_]?key)$/i,sd=/(?:^|[-_])(secret|password|passwd|token|api[-_]?key|private[-_]?key|signing[-_]?key|client[-_]?secret|client[-_]?id)(?:[-_]|$)/i,id=/^(sk-|ghp_|gho_|github_pat_|xox[baprs]-|AKIA|ASIA|AIza|ya29\.)/,ad=/^bearer(?:\s+|$)/i;function Ct(e){return!e||typeof e!="object"||Array.isArray(e)?null:e}function Ns(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function Un(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=Ct(e);return t?Object.keys(t).filter(n=>n.length>0):[]}function _e(e){try{let t=new URL(e);return`${t.origin}${t.pathname}`}catch{return e}}function cd(e){return id.test(e)||ad.test(e)?"<redacted>":e.includes("://")?_e(e):e}function Ls(e){if(/^https?:\/\//i.test(e))return _e(e);let t=e.indexOf("=");return t>0?`${e.slice(0,t+1)}${Ls(e.slice(t+1))}`:cd(e)}function ld(e){let t=e.replace(/^-+/,"").split("=",1)[0]??"";return od.test(t)||sd.test(t)}function It(e){let t=[],n=!1;for(let r of e){if(n){t.push("<redacted>"),n=!1;continue}if(ld(r)){t.push("<redacted>"),n=!r.includes("=");continue}t.push(Ls(r))}return t}function ud(e){let t=Ns(e);if(t.length===0)return;let n=[...new Set(t.map(r=>r.length>ws?r.slice(0,ws):r))].sort();if(n.length!==0)return n.length>vs?{names:n.slice(0,vs),truncated:!0}:{names:n,truncated:!1}}function dd(e){let t=Ct(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 Us(e,t){let n=new Set;for(let{raw:r,attr:o}of Rt){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=ud(s);i&&(e[o]=i.names,i.truncated&&(e[`${o}_truncated`]=!0),n.add(o))}}function Ds(e,t){let n=Ct(e),r={transport:t};if(!n)return r;Ms(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;a&&(r.command_or_url=_e(a));let c=It(Ns(n.args));c.length>0&&(r.args=c);let l=dd(n.env_http_headers),u=[...new Set([...Un(n.env),...Un(n.envVars),...Un(n.env_vars),...l.envVars,...typeof n.bearer_token_env_var=="string"&&n.bearer_token_env_var.length>0?[n.bearer_token_env_var]:[]])].sort();u.length>0&&(r.env_var_names=u),l.headers.length>0&&(r.env_http_header_names=[...new Set(l.headers)].sort());for(let _ of["headers","http_headers","env_http_headers"])if(n[_]!==void 0&&n[_]!==null){r.headers_present=!0;break}let d=typeof n.auth=="string"?n.auth:void 0;d&&(r.auth=d);let p=typeof n.bearer_token_env_var=="string"?n.bearer_token_env_var:void 0;p&&(r.bearer_token_env_var=p);let f=typeof n.default_tools_approval_mode=="string"?n.default_tools_approval_mode:typeof n.defaultToolsApprovalMode=="string"?n.defaultToolsApprovalMode:void 0;return f&&(r.default_tools_approval_mode=f),Us(r,n),r}function Fs(e){let t=Ct(e);return t?t.enabled===!1?!1:t.disabled!==!0:!0}function Hn(e,t,n=!0){let r=Object.keys(t).sort().map(o=>[o,t[o]??null]);return M(JSON.stringify({name:e,attributes:r,enabled:n}))}function Ae(e){let t=e.trim();return t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'")?t.slice(1,-1):t}function Be(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 pd(e,t){return It(Be(e,t))}function Fn(e,t){let n=new RegExp(`^\\s*${t}\\s*=\\s*(true|false)\\s*$`,"m").exec(e);if(n?.[1])return n[1]==="true"}function Dn(e,t){let n=new RegExp(`^\\s*${t}\\s*=\\s*(.+)$`,"m").exec(e);if(!n?.[1])return;let r=Ae(n[1]);return r.length>0?r:void 0}function fd(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],Ae(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(`
25
- ${e}`);return s?.[1]&&r(s[1]),n}function Hs(e){return Fn(e,"enabled")===!1?!1:Fn(e,"disabled")!==!0}function md(e,t){let n={};for(let{raw:r,attr:o}of Rt){if(o==="auto_approve"){let i=Fn(t,r);if(i!==void 0){n[r]=i;continue}}let s=Be(t,r);s.length>0&&(n[r]=s)}Us(e,n)}var gd=/^\s*([A-Za-z_][A-Za-z0-9_-]*)\s*[.=]/,_d=/^\[[^\]]*\.([A-Za-z_][A-Za-z0-9_-]*)\]\s*$/gm;function hd(e){let t=new Set,n=e.search(/^\[/m),r=n===-1?e:e.slice(0,n);for(let o of r.split(`
26
- `)){let s=gd.exec(o);s?.[1]&&t.add(s[1])}for(let o of e.matchAll(_d))o[1]&&t.add(o[1]);return[...t]}function js(e,t){let n={transport:t};Ms(n,hd(e));let r=/^\s*command\s*=\s*(.+)$/m.exec(e),o=/^\s*url\s*=\s*(.+)$/m.exec(e),s=r?Ae(r[1]??""):void 0,i=o?Ae(o[1]??""):void 0,a=s!==void 0&&s.length>0?s:i;a&&(n.command_or_url=_e(a));let c=pd(e,"args");c.length>0&&(n.args=c);let l=new Set;for(let g of e.split(`
27
- `)){let y=/^\s*env\.([A-Za-z_][A-Za-z0-9_]*)\s*=/.exec(g);y?.[1]&&l.add(y[1])}let u=/^\s*env\s*=\s*\{([^}]*)\}/m.exec(e);if(u?.[1])for(let g of u[1].split(",")){let y=/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=/.exec(g);y?.[1]&&l.add(y[1])}let d=/(?:^|\n)\[[^\]]*env\]\s*\n([\s\S]*?)(?=\n\[|$)/.exec(`
28
- ${e}`);if(d?.[1])for(let g of d[1].split(`
29
- `)){let y=/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=/.exec(g);y?.[1]&&l.add(y[1])}for(let g of Be(e,"env_vars"))l.add(g);let p=fd(e,"env_http_headers");for(let[,g]of p)g.length>0&&l.add(g);let f=Dn(e,"bearer_token_env_var");f&&(l.add(f),n.bearer_token_env_var=f),l.size>0&&(n.env_var_names=[...l].sort()),p.length>0&&(n.env_http_header_names=[...new Set(p.map(([g])=>g))].sort()),(/^\s*(?:http_|env_http_)?headers\s*=/m.test(e)||/(?:^|\n)\[[^\]]*headers\]\s*(?:\n|$)/.test(e))&&(n.headers_present=!0);let _=Dn(e,"auth");_&&(n.auth=_);let E=Dn(e,"default_tools_approval_mode");return E&&(n.default_tools_approval_mode=E),md(n,e),n}var Sd=300,Ed=256;function Ks(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 At(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 $s(e,t){return e.length<=t?e:`${e.slice(0,t-1)}\u2026`}function yd(e){return $s(e,Sd)}function Bs(e,t){let n=Ks(e.trim(),t),r=At(n);if(r.length===0)return"";let[o,...s]=r,i=_e(o),a=It(s);return yd([i,...a].join(" "))}function Gs(e,t){if(typeof e!="string")return null;let n=Ks(e.trim(),t),r=At(n)[0];if(!r)return null;let o=_e(r);return o.length===0?null:$s(o,Ed)}function Rd(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 Cd(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 Id(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 Cd(c)){if(e.truncated)return;let u=l.command??l.bash??l.prompt??l.powershell??c.powershell??"",d=Rd({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}),p=typeof c.matcher=="string"?c.matcher:"",f=M(u),_=p?`${s}:${p}:${d}:${f}`:`${s}:${d}:${f}`,E=`${s}|${p}|${d}|${u}|attrs2`;e.push({kind:"HOOK",name:_,path:o,content_hash:M(E),origin:r,enabled:!0,trigger:"EVENT",attributes:{event:s,...p?{matcher:p}:{},action_kind:d,action_hash:f,...d!=="prompt"&&u.trim()?{command:Bs(u,e.home)}:{}}})}}}function ke(e,t,n){if(!e.claimFile(t))return;let r=e.readJson(t,{});!r?.hooks||typeof r.hooks!="object"||Id(e,t,r.hooks,n)}import{existsSync as Fd,readFileSync as Hd}from"node:fs";import{createHash as Ad}from"node:crypto";import{join as Ge}from"node:path";var kt=128,kd=/^(?:@[A-Za-z0-9~-][A-Za-z0-9._~-]*\/)?[A-Za-z0-9~-][A-Za-z0-9._~-]*$/,Od=new Set(["-p","--package"]),xd=new Set(["-c","--call"]),Td=new Set(["--registry","--userconfig","--globalconfig","--prefix","--cache","--node-options","--workspace","-w","--loglevel"]),Pd=new Set(["-y","--yes","-n","--no","-q","-s","--quiet","--silent","--offline","--prefer-offline","--prefer-online","--ignore-existing","--ignore-scripts","--legacy-peer-deps","--foreground-scripts"]),vd=/^--no-/;function wd(e){return Pd.has(e)||vd.test(e)}function bd(e){let n=(e.replace(/\\/g,"/").split("/").pop()??"").replace(/\.(cmd|exe|bat|ps1)$/i,"").toLowerCase();return n==="npx"?"npx":n==="npm"?"npm":null}function jn(e){if(e.length===0||e.length>kt)return null;let t=e.lastIndexOf("@"),n=t>0?e.slice(0,t):e;return kd.test(n)?n:null}function Md(e,t){let n=bd(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(xd.has(l))return[];if(Od.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||wd(l))){if(Td.has(l)){i+=1;continue}return[]}}return o.length>0?o.every(i=>jn(i)!==null)?o:[]:s===null||jn(s)===null?[]:[s]}function Nd(e){let t=[...e].sort((n,r)=>n.localeCompare(r,"en")).join(`
30
- `);return Ad("sha512").update(t).digest("hex").slice(0,16)}function Ld(e){let t=process.platform==="win32"?Ge(R("LOCALAPPDATA")??e,"npm-cache"):Ge(e,".npm"),n=R("npm_config_cache")??R("NPM_CONFIG_CACHE");return n===void 0||n===t?[t]:[n,t]}function zs(e){return typeof e=="string"&&e.length>0&&e.length<=kt?e:null}function Ud(e,t,n){let r=Nd(e);for(let o of Ld(n)){let s=Ge(o,"_npx",r),i=N(Ge(s,"node_modules",...t.split("/"),"package.json"),{}),a=zs(i.version);if(a!==null)return a;let c=N(Ge(s,"package-lock.json"),{}),l=zs(c.packages?.[`node_modules/${t}`]?.version);if(l!==null)return l}return null}function Dd(e){return e.length<=kt?e:`${e.slice(0,kt-1)}\u2026`}function Kn(e,t,n){if(typeof e!="string"||e.length===0)return null;let r=Md(e,t??[]),o=r[0];if(o===void 0)return null;let s=jn(o);if(s===null)return null;let i=Ud(r,s,n);return{package_name:s,package_spec:Dd(o),...i===null?{}:{package_version:i,package_version_source:"npx_cache"}}}function Ws(e,t){if(typeof e!="string"||e.length===0)return null;let[n,...r]=At(e.trim());return n===void 0?null:Kn(n,r,t)}function Ot(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 Kn(typeof n.command=="string"?n.command:null,r,t)}function Js(e,t){let n=/^\s*command\s*=\s*(.+)$/m.exec(e);return n===null?null:Kn(Ae(n[1]??""),Be(e,"args"),t)}function jd(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 Vs(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=jd(a),l=Ds(a,c);Object.assign(l,Ot(a,e.home)??{});let u=Fs(a);e.push({kind:"MCP_SERVER",name:i,path:s,content_hash:Hn(i,l,u),origin:n,enabled:u,attributes:l})}}function Ys(e,t,n){if(!Fd(t)||!e.claimFile(t))return;let r;try{r=Hd(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),d="unknown";/^\s*url\s*=/m.test(u)?d="http":/^\s*command\s*=/m.test(u)&&(d="stdio");let p=js(u,d);Object.assign(p,Js(u,e.home)??{});let f=Hs(u);e.push({kind:"MCP_SERVER",name:a,path:o,content_hash:Hn(a,p,f),origin:n,enabled:f,attributes:p})}}import{existsSync as Kd,readdirSync as $d}from"node:fs";import{join as K}from"node:path";var Xs=50;function $n(e,t,n,r){if(!Kd(t))return{componentCount:0,expandTruncated:!1};let o=e.components.length,{expanded:s}=e.withPluginExpandCap(Xs,()=>{ge(e,{dir:K(t,"skills"),kind:"SKILL",origin:n,enabled:r,nested:"SKILL.md"}),ge(e,{dir:K(t,"commands"),kind:"COMMAND",origin:n,enabled:r,extensions:[".md"]}),ge(e,{dir:K(t,"agents"),kind:"SUBAGENT",origin:n,enabled:r,extensions:[".md"]})});ke(e,K(t,"hooks","hooks.json"),n),ke(e,K(t,"hooks.json"),n);let i=e.components.length-o,a=s>=Xs;return{componentCount:i,expandTruncated:a}}function Bn(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 qs(e){let t=K(e.home,".claude/plugins/installed_plugins.json"),n=e.readJson(t,{});if(!n)return;let r=n.plugins??{},s=e.readJson(K(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]??{},d=s[a]===!0,p=a.includes("@")?a.split("@").slice(1).join("@"):"",f=typeof u.version=="string"?u.version:"",_=typeof u.scope=="string"?u.scope:"user",E=`plugin:${a}`,g=0,y=!1;for(let w of l)if(typeof w.installPath=="string"&&w.installPath.length>0){let D=$n(e,w.installPath,E,d);g+=D.componentCount,y=y||D.expandTruncated}Bn(e,{pluginKey:a,rowPath:i,enabled:d,scope:_,version:f||void 0,marketplace:p||void 0,componentCount:g,expandTruncated:y,contentHash:M(`${a}|${f}|${_}|${d}|${g}`)})}}function Bd(e){let t=e,n="";try{let r=$d(e,{withFileTypes:!0}).filter(o=>o.isDirectory()).map(o=>o.name);if(r.length===1&&r[0])t=K(e,r[0]),n=r[0];else if(r.length>1){let o=[...r].sort(),s=o[o.length-1];s&&(t=K(e,s),n=s)}}catch{}return{installPath:t,version:n}}var Gd=/^\d+$/;function zd(e){let t=e.filter(n=>!Gd.test(n.pluginId));return t.length>0?t:e}function Zs(e){let t=[{base:K(e.home,".cursor/plugins/local"),scope:"local"},{base:K(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=K(n,o.name),l=`plugin:${a}`,{componentCount:u,expandTruncated:d}=$n(e,c,l,!0);Bn(e,{pluginKey:a,rowPath:e.componentPath(c),enabled:!0,scope:"local",componentCount:u,expandTruncated:d,contentHash:M(`${a}|local|${u}`)});continue}let s=o.name,i=[];for(let a of e.readEntries(K(n,s))){if(!a.isDirectory())continue;let c=K(n,s,a.name),{installPath:l,version:u}=Bd(c);i.push({pluginId:a.name,installPath:l,version:u})}for(let a of zd(i)){if(e.truncated)break;let c=`${a.pluginId}@${s}`,l=`plugin:${c}`,{componentCount:u,expandTruncated:d}=$n(e,a.installPath,l,!0);Bn(e,{pluginKey:c,rowPath:e.componentPath(a.installPath),enabled:!0,scope:"cache",version:a.version||void 0,marketplace:s,componentCount:u,expandTruncated:d,contentHash:M(`${c}|${a.version}|${u}`)})}}}function Jd(e,t){let{layout:n,levelDir:r,origin:o,includeMachineWide:s}=t;for(let i of n.skillRoots)ge(e,{dir:Oe(r,i),kind:"SKILL",origin:o,enabled:!0,nested:"SKILL.md"});for(let i of n.dirs)ge(e,{dir:Oe(r,i.dir),kind:i.kind,origin:o,enabled:!0,extensions:i.extensions});for(let i of n.memory){let a=Ps(i.map(c=>Oe(r,c)));a&&yt(e,{absolutePath:a,kind:"MEMORY",origin:o,enabled:!0,name:Wd(a)})}for(let i of no(n))ke(e,Oe(r,i),o);for(let i of n.mcpJson??[])Vs(e,Oe(r,i),o);for(let i of n.mcpToml??[])Ys(e,Oe(r,i),o);if(s){if(n.managed)for(let i of nt(n.managed,process.platform,e.home))i.toLowerCase().endsWith(".json")&&ke(e,i,o);n.plugins==="claude"?qs(e):n.plugins==="cursor"&&Zs(e)}}function Qs(e,t){try{let n=new Et(e,{pathMode:t.pathMode,maxEntries:t.maxEntries});for(let r of t.layouts)Jd(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 Gn(e,t,n={}){let r={},o=n.shouldWalk;if(o===void 0||o("user","")){let c=Qs(t,{layouts:Object.values(ye),levelDir:t,origin:"user",includeMachineWide:!0,pathMode:"home-relative",maxEntries:te,scopeRef:""});c&&(r.user=c)}let s=n.inGitRepo===!0,i=null,a=n.launchCwd;if(a!==void 0){let c=Object.values(re),l=wn({launchCwd:a,gitRoot:n.gitRoot,inGitRepo:s,remote:n.remote,home:t,hasProjectSpec:u=>oo(c,u)});i=l.parentRel;for(let u of l.anchors){let d=In(u.dir);if(o!==void 0&&!o(u.scope,d))continue;let p=Qs(t,{layouts:c,levelDir:u.dir,origin:u.scope,includeMachineWide:!1,pathMode:"tilde",maxEntries:bn,scopeRef:d});p&&(r[u.scope]=p)}r.parent||(i=null)}return{scopes:r,parentRel:i,cwdInGitRepo:s}}function zn(e,t,n={}){let r=n.truncated===!0,o=Ke(e),s=new Set(e.map(u=>z(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 d=z(u.path,u.name);c[d]!==u.content_hash&&a.push(u)}let l=[];if(!r){for(let u of Object.keys(c))if(!s.has(u)){let d=ms(u);d&&l.push(d)}}return{hash:o,count:e.length,truncated:r,full:!1,upserts:a,removed:l,unchanged:a.length===0&&l.length===0}}var ti=2*1024*1024,Vd=new Set(["HOOK","MCP_SERVER","PLUGIN"]);function Wn(e,t,n){let r=new Set(t.map(s=>z(s.path,s.name))),o=[];for(let s of e)s.text!==void 0&&(n.has(s.content_hash)||r.has(z(s.path,s.name))||o.push(s));return o}function Jn(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 ei(e){return Buffer.byteLength(JSON.stringify(e),"utf8")}function ni(e){if(e.text===void 0)return e;let{text:t,...n}=e;return n}function Vn(e,t=ti){let n=[],r=[];for(let u of e)Vd.has(u.kind)?n.push(u):r.push(u);r.sort((u,d)=>(u.text?.length??0)-(d.text?.length??0));let o=[...n,...r],s=[],i=2,a=0,c=0,l=[];for(let u of o){let d=s.length>0?1:0,p=ei(u)+d;if(i+p<=t){s.push(u),i+=p,u.text!==void 0&&l.push(u.content_hash);continue}if(u.text!==void 0){let f=ni(u),_=ei(f)+d;if(i+_<=t){s.push(f),i+=_,a+=1;continue}}c+=1}return{components:s,textDeferredCount:a,droppedCount:c,textHashesSent:l}}function Yn(e,t){return t.size===0?e:e.map(n=>n.text===void 0||!t.has(n.content_hash)?n:ni(n))}var Yd=["user","cwd","repo","parent"];function Xn(e){let{collected:t,cacheFor:n,nowMs:r,maxBytes:o}=e,s=[];for(let x of Yd){let O=t.scopes[x];if(!O)continue;let L=n(x,O.scopeRef),b=L.components,H=zn(O.components,b,{forceFull:b===void 0,truncated:O.truncated}),q=new Set(L.textHashes),U=Wn(O.components,H.upserts,q),P=Yn([...H.upserts,...U],q);s.push({scope:x,walk:O,delta:H,outgoing:P,outgoingKeys:new Set(P.map(S=>z(S.path,S.name))),deliveredTextHashes:q,cachedComponents:b})}let i=s.flatMap(x=>x.outgoing),a=Vn(i,o),c=new Set(a.components.map(x=>z(x.path,x.name))),l=[],u=[],d=[],p=[],f=[],_=[],E=[];for(let x of s){let{scope:O,walk:L,delta:b}=x;_.push(...L.components),l.push(O);let H=a.components.filter(S=>x.outgoingKeys.has(z(S.path,S.name))),q=[...x.outgoingKeys].some(S=>!c.has(S)),U=b.truncated||q;U?d.push(O):b.full&&u.push(O),p.push(...H),!b.full&&!U&&f.push(...b.removed);let P=b.full?{}:{...x.cachedComponents??{}};if(!U)for(let S of b.removed)delete P[z(S.path,S.name)];for(let S of H)P[z(S.path,S.name)]=S.content_hash;E.push({scope:O,scopeRef:L.scopeRef,components:P,textHashes:Jn(x.deliveredTextHashes,H.filter(S=>S.text!==void 0).map(S=>S.content_hash),L.components),collectedAtMs:r,included:H.length>0||b.removed.length>0&&!U||b.full})}let g={user_spec_hash:Ke(_),user_spec_count:_.length,user_spec_truncated:d.length>0};l.length>0&&(g.user_spec_scopes=l,g.user_spec_full_scopes=u,g.user_spec_truncated_scopes=d,g.user_spec_cwd_in_git_repo=t.cwdInGitRepo),u.length>0&&u.length===l.length&&(g.user_spec_full=!0),p.length>0&&(g.user_spec=p),f.length>0&&(g.user_spec_removed=f),a.textDeferredCount>0&&(g.user_spec_text_deferred=a.textDeferredCount);let y=t.scopes.cwd;y&&(g.user_spec_cwd_scope_ref=y.scopeRef);let w=t.scopes.repo;w&&(g.user_spec_repo_scope_ref=w.scopeRef);let D=t.scopes.parent;return D&&(g.user_spec_parent_scope_ref=D.scopeRef,t.parentRel&&(g.user_spec_parent_rel=t.parentRel)),{fields:g,scopes:E}}var We={cwd:"cwd_spec",repo:"repo_spec",parent:"parent_spec"};function xt(e){return e==="cwd"||e==="repo"||e==="parent"}function ze(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function qn(e){return!ze(e)||!ze(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 ri(e){return Xd(e)}function oi(e){return qd(e)}function si(e){return Zd(e)}function Xd(e){if(!ze(e))return;let t={};for(let[n,r]of Object.entries(e))typeof r=="string"&&(t[n]=r);return t}function qd(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function Zn(e,t){if(!ze(e))return;let n=e[t];return qn(n)?n:void 0}function Zd(e){if(!ze(e))return{};let t={};for(let[n,r]of Object.entries(e))qn(r)&&(t[n]=r);return t}function Qn(e,t=20){let n=[];for(let[r,o]of Object.entries(e))qn(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 np=200,ii=200,rp=["allow","deny","ask"],op=/(?<=^|[\s(,=:])(?:~|[A-Za-z]:)?[\\/][^\s,)]+/g,tr="<path>",sp=new RegExp(`${tr}(?:\\s+[A-Za-z.][^\\s,)]*[\\\\/][^\\s,)]*)+`,"g");function ip(e){let t=e.replace(op,tr).replace(sp,tr);return t.length>ii?`${t.slice(0,ii)}...`:t}function Pt(e){let t=N(e,{}),n=[];for(let r of rp)for(let o of t.permissions?.[r]??[])typeof o=="string"&&o.length>0&&n.push({key:ip(o),mode:r});return{model:t.model??"",permissionKeys:n}}function ap(e){let{serverManaged:t,fileBased:n}=rn(process.platform,e),r=Pt(t);if(r.model||r.permissionKeys.length>0)return r;let o="",s=[];for(let i of n){let a=Pt(i);a.model&&(o=a.model),s.push(...a.permissionKeys)}return{model:o,permissionKeys:s}}function cp(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 lp=10,up="self-config-cache.json",ci=2;function vt(){return R("EV_AI_HOOK_USER_SPEC")?.toLowerCase()==="off"}function dp(){return R("EV_AI_HOOK_CWD_SPEC")?.toLowerCase()==="off"}function pp(e,t=Date.now()){return e===void 0||!Number.isFinite(e)?!0:t-e>=be}var fp={claude:["claude"],cursor:["agent","cursor-agent"],codex:["codex"]};async function mp(e,t=v){let n=fp[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(`
31
- `)[0]??"").trim();return a||r(o+1)};return r(0)}function gp(e=ai()){return xe(e,".ev-ai","agent-hook",up)}function _p(e){let n=[...e].sort((r,o)=>r.name.localeCompare(o.name)).map(r=>`${r.name}:${r.size}`).join(`
32
- `);return M(n)}function Tt(e,t,n=!1){let r=_p(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 er(e,t,n=[]){let r=0,o=!1,s=new Set;for(let i of[...t.map(a=>xe(e,a)),...n]){let a=tp(i);if(s.has(a))continue;s.add(a);let c=Gt(i);c.present&&(o=!0,r+=c.size)}return o?{present:!0,size:r}:{present:!1,size:0}}function hp(e){return Qd(e)?F(ep(e,"utf8"),{}):{}}function Sp(e,t){try{V(e,`${JSON.stringify(t)}
33
- `)}catch(n){let r=n instanceof Error?n.message:String(n);h(`WARN: self-config cache write failed open: ${r}`)}}function Ep(e,t,n){if(t==="user")return e.user_spec_collected_at_ms;if(xt(t))return Zn(e[We[t]],n)?.collected_at_ms}function yp(e,t,n){if(t==="user")return{components:ri(e.user_spec_components),textHashes:oi(e.user_spec_text_hashes)};if(!xt(t))return{components:void 0,textHashes:[]};let r=Zn(e[We[t]],n);return r?{components:r.components,textHashes:r.text_hashes}:{components:void 0,textHashes:[]}}function Rp(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=ci,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(!xt(s.scope))continue;let i=We[s.scope],a=si(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]=Qn(a)}}return o}async function li(e,t=process.cwd(),n=ai(),r={}){let o=e==="claude",s=r.gitRoot??t,i=await mp(e),a="",c=[];if(o){let U=ap(n),P=Pt(xe(n,".claude/settings.json")),S=Pt(xe(t,".claude/settings.local.json"));a=U.model||S.model||P.model,c=cp([...U.permissionKeys,...P.permissionKeys,...S.permissionKeys]).slice(0,np)}let l={present:!1,size:0},u=U=>{let P=[],S=!1;for(let Z of U){let Ye=gr(xe(n,Z));if(P=P.concat(Ye.entries),S=S||Ye.truncated,P.length>=te){P=P.slice(0,te),S=!0;break}}return{entries:P,truncated:S}},d=gp(n),p=hp(d),f=p[e]??{},_=(f.send_count??0)+1,E=_>0&&_%lp===0,g=U=>E?void 0:f[U],y=u(se.skills),w=u(se.subagents),D=u(se.commands),x=u(se.rules),O={skills:Tt(y.entries,g("skills"),y.truncated),subagents:Tt(w.entries,g("subagents"),w.truncated),commands:Tt(D.entries,g("commands"),D.truncated),rules:Tt(x.entries,g("rules"),x.truncated)},L={runner_platform:e,config_scope:"user",cli_version:i,claude_version:o?i:null,model:o&&a||null,permission_keys:c,user_scope:{skills:O.skills,subagents:O.subagents,commands:O.commands,rules:O.rules,memory:er(n,se.memory),settings:er(n,se.settings,so(n)),mcp:er(n,se.mcp)},local_settings:o?Gt(xe(t,".claude/settings.local.json")):l},b=null,H=r.nowMs??Date.now();if(!vt()){let U=f.user_spec_layout_version!==ci,P=Gn(e,n,{launchCwd:dp()?void 0:r.launchCwd,gitRoot:s,inGitRepo:r.inGitRepo,remote:r.remote,shouldWalk:(S,Z)=>U||pp(Ep(f,S,Z),H)});if(Object.keys(P.scopes).length>0){let S=Xn({collected:P,cacheFor:(Z,Ye)=>U?{components:void 0,textHashes:[]}:yp(f,Z,Ye),nowMs:H});Object.assign(L,S.fields),b={hash:S.fields.user_spec_hash,home:S.scopes.find(Z=>Z.scope==="user")??null,project:S.scopes.filter(Z=>Z.scope!=="user")}}}let q=Rp(f,O,_,b);return{config:L,commit:()=>{p[e]=q,Sp(d,p)}}}function Te(e,t,n){let r={installation_id:n.installationId};return n.platformAgentId&&(r.platform_agent_id=n.platformAgentId),n.sessionId&&(r.session_id=n.sessionId),n.turnId&&(r.turn_id=n.turnId),{schema_version:2,event:e,timestamp:Xe(),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:qt,host_arch:process.arch,node_version:process.version,correlation:r,payload:t}}import{existsSync as di}from"node:fs";import{spawn as pi}from"node:child_process";import{basename as Ip}from"node:path";import{fileURLToPath as Ap}from"node:url";import{gzipSync as Cp}from"node:zlib";function rr(e){return R("EV_AI_HOOK_COMPRESS")==="off"?{body:e}:Buffer.byteLength(e,"utf8")<kr?{body:e}:{body:Cp(Buffer.from(e,"utf8")),contentEncoding:"gzip"}}function wt(e){let t={"Content-Type":"application/json"};return e!==void 0&&(t["Content-Encoding"]=e),t}function ui(e){return typeof e=="string"?Buffer.byteLength(e,"utf8"):e.length}var or="__post",bt="__work";async function kp(e,t,n={}){if(R("EV_AI_HOOK_USER_SPEC")?.toLowerCase()==="off")return e;let r=await kn(n.gitRoot??process.cwd(),v,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 Op(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 fi(e){switch(e){case"session_start":return yr;case"session_end":return Rr;case"tool_invoked":case"skill_invoked":return Yt;default:return Yt}}function xp(e,t,n){return`${JSON.stringify({url:e,timeoutMs:t})}
34
- ${n}`}function mi(e,t=[],n=process.execPath,r=import.meta.url,o=di){if(Ip(n)===Ze)return{command:n,args:[e,...t]};let s=Ap(r);return o(s)?{command:n,args:[s,e,...t]}:{command:n,args:[e,...t]}}function Tp(e=process.execPath,t=import.meta.url,n=di){return mi(or,[],e,t,n)}function Pp(e){let t=e.indexOf(`
35
- `);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 gi(e,t=fetch){let n=await e(),r=Pp(n);if(!r)return;let{meta:o,body:s}=r,i=rr(s),a=wt(i.contentEncoding);try{await t(o.url,{method:"POST",headers:a,body:i.body,signal:AbortSignal.timeout(Number(o.timeoutMs))})}catch{}}async function vp(e,t,n,r=fetch){let o=fi(e),s=rr(t),i=wt(s.contentEncoding),a=ui(s.body);h(`POST event=${e} url=${nn(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{}h(`POST gzip rejected http=${l.status} \u2014 retrying uncompressed`),l=await r(n,{method:"POST",headers:wt(),body:t,signal:AbortSignal.timeout(o)})}let u=Date.now()-c;if(l.ok)return h(`POST outcome=ok elapsed_ms=${u} http=${l.status}`),!0;let d=(await l.text()).slice(0,200).replace(/[\n\r]/g,"");return h(`POST outcome=fail elapsed_ms=${u} http=${l.status} body=${d}`),!1}catch(l){let u=Date.now()-c,d=l instanceof Error?l.message:String(l);return h(`POST outcome=fail elapsed_ms=${u} http=000 body=${d}`),!1}}async function _i(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){h(`WARN: ${o} stdin handoff timed out \u2014 continuing fail-open`);try{s.stdin.destroy()}catch{}}a()},Cr),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 h(`WARN: ${o} spawn failed open: ${i}`),null}}async function wp(e,t,n,r=pi,o=Tp){let s=fi(e),i=xp(n,s,t),{command:a,args:c}=o();return _i(a,c,i,r,"detached post")}async function hi(e,t,n=pi,r=mi){let{command:o,args:s}=r(bt,t);return _i(o,s,e,n,"detached work")}async function Pe(e,t,n,r,o,s,i){if(!o)return h("WARN: collector URL missing \u2014 pass --url on the hook command or set collector_url in manifest"),!1;if(!et(o))return h(`WARN: collector URL blocked (https required): ${nn(o)}`),!1;let a=await kp(t,n.runnerPlatform,i),c=r(e,a,n);s!==void 0&&(c.build_ms=Math.max(0,Date.now()-s));let l=`${JSON.stringify(c)}
36
- `,u=R("EV_AI_HOOK_DEBUG");u==="full"?h(`DEBUG envelope=${JSON.stringify(c)}`):u==="1"&&h(`DEBUG summary=${Op(c,Buffer.byteLength(l,"utf8"))}`);let d=process.argv.includes(bt),p=R("EV_AI_HOOK_SYNC")==="1";return dt(n.runnerEvent,n.runnerPlatform)||d||p?vp(e,l,o):(await wp(e,l,o),!1)}import{createReadStream as bp}from"node:fs";import{stat as Mp}from"node:fs/promises";import{basename as Np,resolve as Lp}from"node:path";import{createInterface as Up}from"node:readline";var Dp=1024*1024;function Fp(e){let t=e.replace(/\\/g,"/");return t.includes("/.claude/projects/")&&Np(t).endsWith(".jsonl")}async function Si(e){if(!e||!Fp(e))return null;try{let t=Lp(e),n=await Mp(t);if(!n.isFile())return null;let r=Math.max(0,n.size-Dp),o=[],s=Up({input:bp(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 Nt(e){return{sessionId:e.sessionId,turnId:e.turnId,installationId:e.manifest.installationId,runnerPlatform:e.runnerPlatform,platformAgentId:e.platformAgentId,runnerEvent:e.runnerEvent}}function Ve(e,t){return{gitRoot:e.manifest.gitRoot,...t?{home:t}:{}}}function sr(e){return{gitRoot:e.manifest.gitRoot,inGitRepo:e.manifest.inGitRepo}}async function Ri(e){let t=Date.now();await Vp(e);let{gitRoot:n}=e.manifest;await Lt(e,n);let r=sr(e);return{buildStartedAtMs:t,gitRoot:n,hookInput:ht(e.hookInput,e.manifest.manifest,r),envelopeFields:Nt(e),launchCwd:Pn(e.hookInput,r),home:jp()}}function Ei(e){try{return G(Hp(e))}catch{return null}}function Ci(e){return e.startsWith("/")||/^[A-Za-z]:\//.test(e)}function yi(e,t){let n=e.replaceAll("\\","/");if(!Ci(n))return null;let r=G(e),o=G(t),s=Ei(e)??r,i=Ei(t)??o;return s.startsWith(`${i}/`)?s.slice(i.length+1):r.startsWith(`${o}/`)?r.slice(o.length+1):null}function Kp(e,t,n){if(!e)return{repositorySourcePath:null,userSourcePath:null};let r=e.replaceAll("\\","/"),s=yi(e,t)??(Ci(r)?null:r),i=yi(e,n);return{repositorySourcePath:s,userSourcePath:i}}function Mt(e,t,n,r,o,s){let{repositorySourcePath:i,userSourcePath:a}=Kp(e,t,n),c=i??a,l=c===null?null:o(c),u=l!==null&&c!==null?$p({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 $p(e){try{let t=e.inRepository?Bp(e.platformAgentId,e.sourcePath):(0,A.installationRootExternalKey)(e.installationId,(0,A.userConfigRootFromPath)(e.sourcePath));return t?(0,A.buildComponentReference)({installationRootExternalKey:t,installableKind:e.installableKind,sourcePath:e.sourcePath,nativeKey:e.nativeKey}):void 0}catch{return}}function Ii(e,t,n){return Pe("tool_invoked",{...n,success:null,duration_ms:null,hook_input:t.hookInput},t.envelopeFields,Te,e.manifest.collectorUrl,t.buildStartedAtMs,Ve(e,t.home))}var Ai=new Set([...Object.values(me),".github"]);function Bp(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=>Ai.has(i));return s<0?null:`${r}:${o.slice(0,s+1).join("/")}`}function Gp(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,A.userConfigRootFromPath)(l);return(0,A.buildComponentReference)({installationRootExternalKey:(0,A.installationRootExternalKey)(r,_),installableKind:A.ComponentKind.INTERFACE,sourcePath:l,nativeKey:c?.name??t})}catch{return}if(n===null)return;let d=n.indexOf(":");if(d<=0||d===n.length-1)return;let p=n.slice(d+1),f=p.replaceAll("\\","/").split("/").at(-1);if(!(f===void 0||!Ai.has(f)))try{return(0,A.buildComponentReference)({installationRootExternalKey:n,installableKind:A.ComponentKind.INTERFACE,sourcePath:p,nativeKey:t})}catch{return}}function zp(...e){for(let t of e)if(t)return t;return null}function W(e,t,n){if(e.status==="fulfilled")return e.value;let r=e.reason instanceof Error?e.reason.message:String(e.reason);return h(`WARN: ${n} failed open: ${r}`),t}function Wp(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 Jp(e,t){return{runner_platform:e,config_scope:"user",...t?{operator:t}:{}}}var he=new Set,Je=null;async function Vp(e){if(vt())return;let t=e.manifest.installationId,n=e.manifest.installationStorePath;if(he.has(t))return;if(!xn(n)){he.add(t);return}let r=ve({sessionId:e.sessionId,hostname:we()});if(_s(r)){if(Je){await Je;return}Je=(async()=>{if(he.has(t)||!xn(n)){he.add(t);return}if(!$r(n)){he.add(t);return}let o=!1;try{let s=Date.now(),{gitRoot:i}=e.manifest,a=String(e.runnerPlatform),[c,l,u,d,p]=await Promise.allSettled([Ue(i),Jt(),En(r),Vt(),On({gitRoot:i,installationStorePath:n,forceResend:!1,runnerPlatform:a})]),f=W(c,null,"gitSnapshot"),_=W(l,"","detectVirt"),E=W(u,null,"probeCloud"),g=W(d,{},"hostEnv"),y=W(p,{commit:()=>{}},"resolveOperatorForSend");await Lt(e,i,f);let w={identity:{host:we(),context:r,virt:_||null,cloud:E,git:f},host_env:g,env_vars:yn(),self_config:Jp(a,y.operator),run_meta:{trigger:"cloud_identity_bootstrap"}};o=!!await Pe("session_start",w,Nt(e),Te,e.manifest.collectorUrl,s,Ve(e)),o&&(y.commit(),he.add(t))}finally{Br(n)}})().finally(()=>{Je=null}),await Je}}async function Lt(e,t,n){try{let r=n===void 0?await Ue(t):n;e.platformAgentId=await yo(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);h(`WARN: derivePlatformAgentId failed open: ${o}`)}}async function Yp(e){let t=Date.now(),{gitRoot:n}=e.manifest,r=ve({sessionId:e.sessionId,hostname:we()}),o=String(e.runnerPlatform),s=sr(e),i=Pn(e.hookInput,s),a=Ue(n),c=vt()?Promise.resolve({commit:()=>{}}):On({gitRoot:n,installationStorePath:e.manifest.installationStorePath,forceResend:!1,runnerPlatform:o}),[l,u,d,p,f,_,E]=await Promise.allSettled([a,Jt(),En(r),Vt(),mn(e.manifest.manifest,n,o),a.catch(()=>null).then(P=>li(o,n,void 0,{installationStorePath:e.manifest.installationStorePath,gitRoot:n,launchCwd:i,inGitRepo:e.manifest.inGitRepo,remote:P?.remote??null})),c]),g=W(l,null,"gitSnapshot"),y=W(u,"","detectVirt"),w=W(d,null,"probeCloud"),D=W(p,{},"hostEnv"),x=W(f,[],"mcpDeclared"),O=W(_,Wp(o),"selfConfig"),L=W(E,{commit:()=>{}},"resolveOperatorForSend"),b=O.config;await Lt(e,n,g);let H=m(e.hookInput,"model");H&&(b.model=H);let q={identity:{host:we(),context:r,virt:y||null,cloud:w,git:g},host_env:D,env_vars:yn(),mcp:{declared:x},self_config:b,run_meta:{trigger:e.hookSource||"startup"},hook_input:ht(e.hookInput,e.manifest.manifest,{...s,launchCwd:i})};await Pe("session_start",q,Nt(e),Te,e.manifest.collectorUrl,t,Ve(e))&&(O.commit(),L.commit(),he.add(e.manifest.installationId))}async function Xp(e){let t=Date.now(),{gitRoot:n}=e.manifest;await Lt(e,n);let r=zp(m(e.hookInput,"status"),m(e.hookInput,"stop_reason"),m(e.hookInput,"reason"),He(m(e.hookInput,"error"))),o=e.runnerPlatform==="claude"?await Si(m(e.hookInput,"transcript_path")):null,s=ht(e.hookInput,e.manifest.manifest,sr(e));o&&(s.model=o),await Pe("session_end",{status:r,...o?{model:o}:{},hook_input:s},Nt(e),Te,e.manifest.collectorUrl,t,Ve(e))}function ki(e,t,n,r){let o=r??po({skillId:n,launchCwd:t.launchCwd,gitRoot:t.gitRoot,home:t.home}),s=Mt(o,t.gitRoot,t.home,A.ComponentKind.SKILL,A.nativeKeyForSkillPath,e);if(s.sourcePath!==null&&sn(s.sourcePath)?.toLowerCase()===n.toLowerCase())return s.componentReference===void 0?{}:{componentReference:s.componentReference};let i=r??ko({commandId:n,launchCwd:t.launchCwd,gitRoot:t.gitRoot,home:t.home,runnerPlatform:e.runnerPlatform}),a=Mt(i,t.gitRoot,t.home,A.ComponentKind.COMMAND,A.nativeKeyForCommandPath,e);return a.nativeKey?.toLowerCase()!==n.toLowerCase()?{}:{commandName:a.nativeKey,...a.componentReference===void 0?{}:{componentReference:a.componentReference}}}function qp(e,t,n){let r=ot(e.hookInput.tool_input);return Promise.all(n.map(o=>{let s=ki(e,t,o,r);return Ii(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 Zp(e,t,n){return Promise.all(n.map(r=>{let o=Ro({relativePath:r,launchCwd:t.launchCwd,gitRoot:t.gitRoot,home:t.home,runnerPlatform:e.runnerPlatform}),s=Mt(o,t.gitRoot,t.home,A.ComponentKind.RULE,A.nativeKeyForRulePath,e),i=s.nativeKey??Io(r);return Ii(e,t,{tool_name:"Rule",rule_name:i,...s.componentReference===void 0?{}:{component_reference:s.componentReference}})}))}var Qp=[{kind:A.ComponentKind.SKILL,nativeKeyFn:A.nativeKeyForSkillPath},{kind:A.ComponentKind.RULE,nativeKeyFn:A.nativeKeyForRulePath},{kind:A.ComponentKind.COMMAND,nativeKeyFn:A.nativeKeyForCommandPath}];function ef(e,t,n){if(n.skillName===null&&n.ruleName===null&&n.commandName===null)return{};let r=cn(e.hookInput);if(r===null)return n.skillName===null?{}:ki(e,t,n.skillName,null);for(let o of Qp){let s=Mt(r,t.gitRoot,t.home,o.kind,o.nativeKeyFn,e);if(s.nativeKey!==null)return{...s.componentReference===void 0?{}:{componentReference:s.componentReference},...o.kind===A.ComponentKind.RULE?{ruleName:s.nativeKey}:{},...o.kind===A.ComponentKind.COMMAND?{commandName:s.nativeKey}:{}}}return{}}var tf=/mcp/i;function nf(e,t,n,r){let o=tf.test(e.runnerEvent);if(!r.hasMcpIdentity&&!o)return{};let s=o?Ws(t,n):Ot(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 rf(e){let t=await Ri(e),n=Do(e.hookInput,e.runnerEvent),{toolName:r,skillName:o}=n,s=an(e.hookInput),i=Gs(s,t.home),a=Ho(e.hookInput),c=Mo(e.runnerEvent),l=c===!1?jo(e.hookInput,e.runnerEvent):null,u=await mn(e.manifest.manifest,e.manifest.gitRoot,String(e.runnerPlatform),t.home).catch(()=>[]),d=He(m(e.hookInput,"mcp_server_name")),{mcpServer:p,mcpTool:f}=Ko(r,u.map(L=>L.name),d??""),_=Gp(r,p,e.platformAgentId,e.manifest.installationId,String(e.runnerPlatform),u,d),E=_===void 0?ef(e,t,n):{},g=p===null?null:wo(p,e.manifest.manifest,e.manifest.gitRoot,String(e.runnerPlatform),t.home),y=nf(e,s,t.home,{hasMcpIdentity:!!p||!!f,declaredConfig:g}),w=_??E.componentReference,D=E.ruleName??n.ruleName,x=E.commandName??n.commandName,O=Fo(e.hookInput);await Pe("tool_invoked",{tool_name:r,skill_name:o,...D?{rule_name:D}:{},...x?{command_name:x}:{},success:c,duration_ms:a,...i?{executable:i}:{},...l?{failure_reason:l}:{},...p?{mcp_server:p}:{},...f?{mcp_tool:f}:{},...y,...w?{component_reference:w}:{},...O?{subagent_type:O}:{},hook_input:t.hookInput},t.envelopeFields,Te,e.manifest.collectorUrl,t.buildStartedAtMs,Ve(e,t.home))}async function Oi(e){switch(e.internalEvent){case"session_start":await Yp(e);return;case"session_end":await Xp(e);return;case"skill_invoked":{let t=fo(e.hookInput),n=Ao(e.hookInput);if(t.length===0&&n.length===0)return;let r=await Ri(e);await Promise.all([t.length===0?void 0:qp(e,r,t),n.length===0?void 0:Zp(e,r,n)]);return}case"tool_invoked":await rf(e);return;default:return}}function xi(e){return e!=="session_start"&&e!=="session_end"&&e!=="tool_invoked"&&e!=="skill_invoked"&&e!==""}import{existsSync as ir,readFileSync as of}from"node:fs";import{dirname as sf,join as Ti,relative as af}from"node:path";var Pi=[Er,".cursor/ev-ai-runtime-report.json",".codex/ev-ai-runtime-report.json"];async function cf(e=process.cwd(),t){let n=R("EV_AI_HOOK_MANIFEST");if(n&&ir(n))return n;let r=t??await Bt(e);for(let o of Pi){let s=Ti(r,o);if(ir(s))return s}for(let o of Pi){let s=Ti(e,o);if(ir(s))return s}}async function lf(e,t){let n=t??await Bt(sf(e)),r=af(n,e),o=await J("git",["ls-files","--error-unmatch",r],2e3,{cwd:n});return o.ok?!0:o.code===1?!1:(h(`WARN: git ls-files failed for manifest ${e} (code=${String(o.code)}); treating as tracked`),!0)}function uf(e){let t=of(e,"utf8");return F(t,{})}function df(){return{schema_version:2,mcp_servers:[]}}async function vi(e=process.cwd(),t={}){let{root:n,inGitRepo:r}=await $t(e),o=await cf(e,n),s=o?uf(o):df();delete s.installation_id;let i=o?await lf(o,n):!1;s.capture_hook_input==="full"&&o&&i&&(h(`WARN: ignoring capture_hook_input=full in git-tracked manifest ${o}; use EV_AI_HOOK_CAPTURE_FULL_INPUT=1 or an untracked operator manifest`),delete s.capture_hook_input);let{installationId:a,storePath:c,repoKey:l}=await Jr(n,{sessionId:t.sessionId});return{manifestPath:o??c,manifest:s,installationId:a,installationStorePath:c,repoKey:l,collectorUrl:Zr(s),platformAgentId:s.platform_agent_id??"",gitRoot:n,inGitRepo:r}}async function wi(e,t,n,r){let o=t??await Kt(Xt),s=F(o,{}),i=m(s,"session_id")||m(s,"conversation_id"),a=await vi(process.cwd(),{sessionId:i});if(!a)return;r&&(a.collectorUrl=r);let c=No(s,a.manifest.platform,n),l=Lo(e,c.runnerEvent);if(!l){h(`WARN: unknown hook event '${c.runnerEvent}'; skipping telemetry`);return}let u={hookInput:s,sessionId:c.sessionId,turnId:c.turnId,runnerEvent:c.runnerEvent,runnerPlatform:c.runnerPlatform,hookSource:c.hookSource,internalEvent:l,manifest:a,platformAgentId:a.platformAgentId};if(xi(l)){h(`WARN: unsupported internal event '${l}'`);return}await Oi(u)}function pf(e,t){if(R("EV_AI_HOOK_SYNC")==="1")return!0;let n=ut(e),r=F(t,{}),o=n.event??(m(r,"hook_event_name")||m(r,"event")),s=Fe(r,o,void 0,n.runner);return dt(o,s)}async function bi(e=process.argv.slice(2)){if(e[0]===or){try{await gi(jt)}catch{}return 0}if(e[0]===bt){try{let t=ut(e.slice(1)),n=await jt(),r=F(n,{}),o=t.event??(m(r,"hook_event_name")||m(r,"event"));if(zt()||hn(t.runner,r,o))return 0;await wi(t.event,n,t.runner,_n(t))}catch(t){let n=t instanceof Error?t.message:String(t);h(`WARN: detached work failed open: ${n}`)}return 0}try{let t=await Kt(Xt),n=ut(e),r=_n(n),o=F(t,{}),s=n.event??(m(o,"hook_event_name")||m(o,"event"));if(zt()||hn(n.runner,o,s)||!Vo(o,s,n.runner))return 0;pf(e,t)?await wi(n.event,t,n.runner,r):await hi(t,e)}catch(t){let n=t instanceof Error?t.message:String(t);h(`WARN: hook failed open: ${n}`)}finally{mr()}return 0}bi().then(e=>{process.exit(e)}).catch(e=>{let t=e instanceof Error?e.message:String(e);process.stderr.write(`[ev-ai-agent-hook] ${t}
21
+ `.trim(),Mn=new Map;function Os(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 xs(e){return e.toLowerCase().includes("token")}function Ts(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=Os(r.key),s=Os(r.value);o&&s&&!xs(o)&&t.set(o,s)}return t}function Vu(e){let t=Ju(e);return t.search="mode=ro&immutable=1",t.href}function Yu(e){try{let t=Ps("bun:sqlite");if(typeof t.Database!="function")return null;let n=new t.Database(e,{readonly:!0,create:!1});try{let r=n.query?.(yt)??n.prepare(yt);return Ts(r.all?.())}finally{n.close?.()}}catch{return null}}function Xu(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 qu(e){try{return Xu(()=>{let t=Ps("node:sqlite");if(typeof t.DatabaseSync!="function")return null;let n=new t.DatabaseSync(e,{readOnly:!0});try{return Ts(n.prepare(yt).all?.())}finally{n.close?.()}})}catch{return null}}function Zu(e){let t=new Map;for(let n of e.split(`
22
+ `)){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&&!xs(s)&&t.set(s,i)}return t}function Qu(e){try{let t=Gu("sqlite3",["-noheader","-batch","-separator"," ",e,yt],{encoding:"utf8",timeout:2e3,maxBuffer:65536,windowsHide:!0,stdio:["ignore","pipe","ignore"]});return Zu(t)}catch{return null}}function bs(e){let t=Mn.get(e);if(t)return t;if(!zu(e)){let o=new Map;return Mn.set(e,o),o}let n=Vu(e),r=Yu(n)??Qu(n)??qu(n)??new Map;return Mn.set(e,r),r}var ed="cursorAuth/cachedEmail",td="cursorAuth/stripeMembershipAuthId";function Rt(e){if(e===void 0)return null;let t=e.trim();return t.length>0?t:null}function nd(e=Ct(),t=process.platform,n=process.env){let r=Rt(n.VSCODE_PORTABLE);if(r)return te(r,"user-data");let o=Rt(n.VSCODE_APPDATA);if(o)return te(o,"Cursor");switch(t){case"darwin":return te(e,"Library","Application Support","Cursor");case"win32":return te(Rt(n.APPDATA)??te(e,"AppData","Roaming"),"Cursor");default:return te(Rt(n.XDG_CONFIG_HOME)??te(e,".config"),"Cursor")}}function rd(e=Ct()){return te(e,".cursor","cli-config.json")}function od(e=Ct(),t=process.platform,n=process.env){return te(nd(e,t,n),"User","globalStorage","state.vscdb")}function We(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}function sd(e){return typeof e.userId=="number"&&Number.isFinite(e.userId)?String(e.userId):We(e.userId)}function id(e){return We(e.email)??We(e.authId)??sd(e)}function wn(e){let t=We(e.email),n=We(e.displayName),r=id(e);return!r||B(n,t)?null:{git_user_name:null,git_user_email:null,platform_login:r,identity_source:"cursor_oauth"}}function ad(e){let n=L(rd(e),{}).authInfo;return!n||typeof n!="object"?null:wn(n)}function cd(e,t,n){let r=od(e,process.platform,t),o=Cs(e),s=Is(o);if(As(s,r,n))return wn({email:s?.email,authId:s?.auth_id});let i=bs(r),a=i.get(ed)??null,c=i.get(td)??null;return ks(o,{read_at_ms:n,db_path:r,email:a,auth_id:c}),wn({email:a,authId:c})}function vs(e=Ct(),t=process.env,n=Date.now()){return ad(e)??cd(e,t,n)}import{createHash as ld}from"node:crypto";import{resolve as ud}from"node:path";function N(e){return ld("sha256").update(e).digest("hex").slice(0,16)}function Nn(e){return N(ud(e))}function z(e,t){return`${e}\0${t}`}function Ms(e){let t=e.indexOf("\0");return t<=0?null:{path:e.slice(0,t),name:e.slice(t+1)}}function Je(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(`
23
+ `);return N(n)}function pd(e,t,n="git_config",r=null){return N(`${e??""}|${t??""}|${r??""}|${n}`)}function fd(e){let t=null,n=null;for(let r of e.split(`
24
+ `)){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 md(e,t=M){let n=await t("git",["config","--get-regexp","^user\\.(name|email)$"],2e3,{cwd:e});return fd(n)}function gd(e=process.env){let t=A(e.GIT_AUTHOR_NAME),n=A(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=A(e.GIT_COMMITTER_NAME),o=A(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=A(e.EMAIL);return s?{git_user_name:null,git_user_email:s,platform_login:null,identity_source:"git_env"}:null}function ne(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 _d(e=process.env){let t=A(e.EV_AI_HOOK_OPERATOR_EMAIL),n=A(e.EV_AI_HOOK_OPERATOR_LOGIN),r=ne(A(e.EV_AI_HOOK_OPERATOR_NAME),t,"configured",t??n);if(r)return r;let o=A(e.GITHUB_ACTOR)??A(e.GITHUB_TRIGGERING_ACTOR)??A(e.GITHUB_USER),s=ne(o,null,"github",o);if(s)return s;let i=A(e.GITLAB_USER_LOGIN),a=A(e.GITLAB_USER_EMAIL),c=ne(A(e.GITLAB_USER_NAME)??i,a,"gitlab",a??i);if(c)return c;let l=A(e.BUILD_REQUESTEDFOREMAIL),u=ne(A(e.BUILD_REQUESTEDFOR),l,"azure_devops",l??A(e.BUILD_REQUESTEDFORID));if(u)return u;let d=A(e.BUILDKITE_BUILD_CREATOR_EMAIL),f=ne(A(e.BUILDKITE_BUILD_CREATOR),d,"buildkite",d);if(f)return f;let p=A(e.BUILD_USER_EMAIL)??A(e.CHANGE_AUTHOR_EMAIL),_=ne(A(e.BUILD_USER)??A(e.CHANGE_AUTHOR),p,"jenkins",p??A(e.BUILD_USER_ID));if(_)return _;let E=A(e.CIRCLE_USERNAME),S=ne(E,null,"circleci",E);if(S)return S;let y=A(e.CODEBUILD_INITIATOR),O=ne(y,null,"codebuild",y);if(O)return O;let H=A(e.DRONE_COMMIT_AUTHOR_EMAIL),x=A(e.DRONE_COMMIT_AUTHOR),P=ne(x??A(e.DRONE_COMMIT_AUTHOR_NAME),H,"drone",H??x);if(P)return P;if(ws(e.CLAUDE_CODE_REMOTE)||ws(e.CURSOR_AGENT)){let U=A(e.CURSOR_USER_EMAIL);return{git_user_name:null,git_user_email:null,platform_login:U&&!B(null,U)?U:null,identity_source:"cloud"}}return null}function Ln(e){return!!((e.git_user_name??e.git_user_email)&&!B(e.git_user_name,e.git_user_email))}function A(e){if(e===void 0)return null;let t=e.trim();return t.length>0?t:null}function ws(e){if(e===void 0||e==="")return!1;let t=e.trim().toLowerCase();return t!=="0"&&t!=="false"&&t!=="no"}function hd(e,t,n){return e==="claude"?gs(t):e==="cursor"?vs(t,n):e==="codex"?ys(n,t):null}async function Un(e,t=M,n=process.env,r={}){let o=await md(e,t),s=gd(n),i=Ln(o)?o:s&&Ln(s)?s:null,a=hd(r.runnerPlatform,r.home??dd(),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=_d(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:Ln(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 Dn(e){let{gitRoot:t,installationStorePath:n,forceResend:r}=e,o=e.exec??M,s=e.env??process.env,i=await Un(t,o,s,{runnerPlatform:e.runnerPlatform,home:e.home}),a=pd(i.git_user_name,i.git_user_email,i.identity_source,i.platform_login),l=(n?an(n):void 0)?.operator_identity_hash;if(!(r||l!==void 0&&l!==a||!l))return{commit:()=>{}};let p=n;return{operator:i,commit:()=>{p&&Zr(p,a,ot())}}}function Hn(e){return e?!an(e)?.operator_identity_hash:!0}function Ns(e){return!0}import{existsSync as Mp,readFileSync as wp}from"node:fs";import{homedir as Oi}from"node:os";import{join as ve,resolve as Np}from"node:path";import{basename as kp,join as be}from"node:path";import{dirname as $s,resolve as kt}from"node:path";import{existsSync as Sd}from"node:fs";import{homedir as Ds}from"node:os";import{relative as Hs,resolve as q,sep as le}from"node:path";var Ed=["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"];function yd(e){return e.capture_hook_input==="full"?!0:e.capture_hook_input==="allowlist"?!1:C("EV_AI_HOOK_CAPTURE_FULL_INPUT")==="1"}function Rd(e){let t={};for(let n of Ed){let r=pe(e,n);r!==void 0&&(t[n]=r)}return t}function It(e,t){if(typeof e!="string"||e.length===0||!t)return null;let n=q(e),r=q(t),o=Hs(r,n);return!o||o==="."?".":o.startsWith(`..${le}`)||o===".."||q(r,o)!==n?null:o.split(le).join("/")}function Fs(e,t){let n=Hs(q(t),q(e)).split(le).join("/");return!n||n==="."?null:n===".."||n.startsWith("../")&&n.split("/").every(r=>r==="..")?n:null}function js(e){return typeof e!="string"||e.length===0?null:q(e).split(le).join("/")}function Cd(){let e=C("CURSOR_PROJECT_DIR");if(!e)return null;let t=q(e);return Sd(t)?t.split(le).join("/"):null}function Fn(e,t){return It(e,t)!==null}function Id(e,t){let n=q(t??Ds(),".cursor").split(le).join("/");return Fn(e,n)}function Ad(e,t,n){return t!==null&&Fn(e,t)?!0:t!==null&&Id(e,n.home)?!1:n.inGitRepo===!0&&n.gitRoot!==void 0&&Fn(e,n.gitRoot)?!0:t===null}function Ks(e,t){let n=js(e.cwd);if(n!==null)return n;let r=q(process.cwd()).split(le).join("/"),o=Cd();return Ad(r,o,t)?r:o??r}function jn(e,t={}){return Ks(e,t)}function Kn(e,t=Ds()){let n=q(t).split(le).join("/").replace(/\/$/,"");return n.length<=1?e:e===n?"~":e.startsWith(`${n}/`)?`~${e.slice(n.length)}`:e}function Ls(e,t,n){let r=js(n.launchCwd)??Ks(t,n);e.cwd=Kn(r,n.home);let o=n.inGitRepo===!0&&n.gitRoot!==void 0?It(r,n.gitRoot):null;o!==null&&(e.cwd_relative=o)}function Us(e,t){let n=JSON.stringify(e),r=Buffer.byteLength(n,"utf8");if(r<=t)return e;let o=Object.entries(e).filter(([i,a])=>!i.startsWith("_")&&(typeof a=="string"||typeof a=="number"||typeof a=="boolean")).sort((i,a)=>Buffer.byteLength(JSON.stringify(i[1]),"utf8")-Buffer.byteLength(JSON.stringify(a[1]),"utf8")),s={_truncated:!0,_original_bytes:r};for(let[i,a]of o){let c={...s,[i]:a};if(Buffer.byteLength(JSON.stringify(c),"utf8")>t)break;s[i]=a}return s}function At(e,t,n={}){if(yd(t)){let o={...e};return delete o.cwd,delete o.transcript_path,Ls(o,e,n),Us(o,Lr)}let r=Rd(e);return Ls(r,e,n),Us(r,Nr)}function kd(e){return typeof e=="string"&&e.length>0}function $n(e){let t=kt(e.home),n=kt(e.launchCwd),r=e.gitRoot?kt(e.gitRoot):null,o=new Set,s=[],i=null;e.inGitRepo&&kd(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&&It(n,r)!==null;if(e.inGitRepo&&r!==null&&r!==t&&c){let l=$s(r);for(;;){let u=kt(l);if(u===t)break;let d=$s(u);if(d===u)break;if(e.hasProjectSpec(u)){s.push({scope:"parent",dir:u}),a=Fs(u,n);break}l=d}}return{anchors:s,parentRel:a}}import{existsSync as Bs,readdirSync as Od,realpathSync as Pd}from"node:fs";import{basename as xd,dirname as Td,relative as bd,resolve as vd,sep as Md}from"node:path";var Bn=400,Ot=class{constructor(t,n={}){this.home=t;this.pathMode=n.pathMode??"home-relative",this.maxEntries=n.maxEntries??re}components=[];truncated=!1;pathMode;maxEntries;pluginExpandRemaining;seenRealpaths=new Set;componentPath(t){if(this.pathMode==="tilde"){let r=vd(t).split(Md).join("/");return Kn(r,this.home)}let n=bd(this.home,t).replace(/\\/g,"/");return!n||n.startsWith("..")?`external/${N(Td(t))}/${xd(t)}`:n}claimFile(t){try{let n=Pd(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(!Bs(t))return[];try{return Od(t,{withFileTypes:!0})}catch{return[]}}readJson(t,n){if(Bs(t))return L(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 Gn,readFileSync as wd,statSync as Nd}from"node:fs";import{basename as zs,join as Ve,relative as Ws}from"node:path";var zn=100*1024,Ld=4;function Ud(e){return e.length<=zn?e:`${e.slice(0,zn-1)}\u2026`}function Dd(e){try{let t=wd(e),n=t.toString("utf8");return{hash:N(t),length:t.length,text:Ud(n)}}catch{return null}}var Gs={HOOK:"EVENT",COMMAND:"EXPLICIT_INVOCATION",MEMORY:void 0,MCP_SERVER:void 0,PLUGIN:void 0,SKILL:"UNSPECIFIED",RULE:"UNSPECIFIED",SUBAGENT:"UNSPECIFIED"};function Hd(e){return e in Gs?Gs[e]:"UNSPECIFIED"}function Pt(e,t){if(!e.claimFile(t.absolutePath))return!1;let n=Dd(t.absolutePath);if(!n)return!1;let r=t.name??zs(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=Hd(t.kind);return s&&(o.trigger=s),e.push(o)}function Fd(e,t,n){let r=Ws(e,t).replace(/\\/g,"/");return!r||r.startsWith("..")?zs(t).replace(/\.(md|mdc|toml)$/i,""):n?r.replace(/\.(md|mdc|toml)$/i,""):r}function Se(e,t){let{dir:n,kind:r,origin:o,enabled:s,nested:i,extensions:a}=t;Wn(e,{walkRoot:n,currentDir:n,depth:0,kind:r,origin:o,enabled:s,nested:i,extensions:a})}function Wn(e,t){let{walkRoot:n,currentDir:r,depth:o,kind:s,origin:i,enabled:a,nested:c,extensions:l}=t;if(!(o>Ld))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 p=Ve(r,u.name,c);if(Gn(p)){let _=Ws(n,Ve(r,u.name)).replace(/\\/g,"/");Pt(e,{absolutePath:p,kind:s,origin:i,enabled:a,name:_||u.name});continue}Wn(e,{walkRoot:n,currentDir:Ve(r,u.name),depth:o+1,kind:s,origin:i,enabled:a,nested:c,extensions:l});continue}if(u.isDirectory()){Wn(e,{walkRoot:n,currentDir:Ve(r,u.name),depth:o+1,kind:s,origin:i,enabled:a,nested:c,extensions:l});continue}if(!u.isFile()||!l)continue;let d=u.name.toLowerCase();if(!l.some(p=>d.endsWith(p)))continue;let f=Ve(r,u.name);Pt(e,{absolutePath:f,kind:s,origin:i,enabled:a,name:Fd(n,f,!0)})}}function Js(e){for(let t of e)if(Gn(t))try{if(Nd(t).size>0)return t}catch{continue}return e.find(t=>Gn(t))}var xt=Ne(Oe(),1);var jd="<omitted>",Kd=["package_name","package_spec","package_version","package_version_source"],Vs=100,Ys=120,Tt=[{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"}],Xs=new Set(Tt.map(e=>e.attr)),$d=["enabled","disabled"],Bd=["serverUrl","auth","bearer_token_env_var","default_tools_approval_mode","defaultToolsApprovalMode","env_vars","env_http_headers","http_headers"],Gd=new Set(["type","command","url","args","env","envVars","headers",...$d,...Bd,...Tt.map(e=>e.raw)]),zd=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",...Kd,...Xs,...[...Xs].map(e=>`${e}_truncated`)]);function qs(e,t){for(let n of t)Gd.has(n)||zd.has(n)||(e[n]=jd)}var Wd=/^(authorization|auth|api[-_]?key|access[-_]?token|refresh[-_]?token|secret|password|passwd|token|bearer|client[-_]?secret|client[-_]?id|private[-_]?key|signing[-_]?key)$/i,Jd=/(?:^|[-_])(secret|password|passwd|token|api[-_]?key|private[-_]?key|signing[-_]?key|client[-_]?secret|client[-_]?id)(?:[-_]|$)/i,Vd=/^(sk-|ghp_|gho_|github_pat_|xox[baprs]-|AKIA|ASIA|AIza|ya29\.)/,Yd=/^bearer(?:\s+|$)/i;function bt(e){return!e||typeof e!="object"||Array.isArray(e)?null:e}function Zs(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function Jn(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=bt(e);return t?Object.keys(t).filter(n=>n.length>0):[]}function Ee(e){try{let t=new URL(e);return`${t.origin}${t.pathname}`}catch{return e}}function Xd(e,t){if(e!==void 0&&/^https?:\/\//i.test(e)&&(0,xt.launchContainsCredentials)({kind:"url",url:e})||(0,xt.launchContainsCredentials)({kind:"command",command:e??"",arguments:t}))return!0;let n=Xe([...t]);return t.some((r,o)=>n[o]===r?!1:/^https?:\/\//i.test(r)?(0,xt.launchContainsCredentials)({kind:"url",url:r}):!0)}function Qs(e,t,n){Xd(t,n)&&(e.launch_had_credentials=!0)}function qd(e){return Vd.test(e)||Yd.test(e)?"<redacted>":e.includes("://")?Ee(e):e}function ei(e){if(/^https?:\/\//i.test(e))return Ee(e);let t=e.indexOf("=");return t>0?`${e.slice(0,t+1)}${ei(e.slice(t+1))}`:qd(e)}function Zd(e){let t=e.replace(/^-+/,"").split("=",1)[0]??"";return Wd.test(t)||Jd.test(t)}function Xe(e){let t=[],n=!1;for(let r of e){if(n){t.push("<redacted>"),n=!1;continue}if(Zd(r)){t.push("<redacted>"),n=!r.includes("=");continue}t.push(ei(r))}return t}function Qd(e){let t=Zs(e);if(t.length===0)return;let n=[...new Set(t.map(r=>r.length>Ys?r.slice(0,Ys):r))].sort();if(n.length!==0)return n.length>Vs?{names:n.slice(0,Vs),truncated:!0}:{names:n,truncated:!1}}function ep(e){let t=bt(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 ti(e,t){let n=new Set;for(let{raw:r,attr:o}of Tt){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=Qd(s);i&&(e[o]=i.names,i.truncated&&(e[`${o}_truncated`]=!0),n.add(o))}}function ni(e,t){let n=bt(e),r={transport:t};if(!n)return r;qs(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=Zs(n.args);a&&(r.command_or_url=Ee(a));let l=Xe(c);l.length>0&&(r.args=l),Qs(r,a,c);let u=ep(n.env_http_headers),d=[...new Set([...Jn(n.env),...Jn(n.envVars),...Jn(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();d.length>0&&(r.env_var_names=d),u.headers.length>0&&(r.env_http_header_names=[...new Set(u.headers)].sort());for(let E of["headers","http_headers","env_http_headers"])if(n[E]!==void 0&&n[E]!==null){r.headers_present=!0;break}let f=typeof n.auth=="string"?n.auth:void 0;f&&(r.auth=f);let p=typeof n.bearer_token_env_var=="string"?n.bearer_token_env_var:void 0;p&&(r.bearer_token_env_var=p);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=_),ti(r,n),r}function ri(e){let t=bt(e);return t?t.enabled===!1?!1:t.disabled!==!0:!0}function Xn(e,t,n=!0){let r=Object.keys(t).sort().map(o=>[o,t[o]??null]);return N(JSON.stringify({name:e,attributes:r,enabled:n}))}function xe(e){let t=e.trim();return t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'")?t.slice(1,-1):t}function Ye(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 Yn(e,t){let n=new RegExp(`^\\s*${t}\\s*=\\s*(true|false)\\s*$`,"m").exec(e);if(n?.[1])return n[1]==="true"}function Vn(e,t){let n=new RegExp(`^\\s*${t}\\s*=\\s*(.+)$`,"m").exec(e);if(!n?.[1])return;let r=xe(n[1]);return r.length>0?r:void 0}function tp(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],xe(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(`
25
+ ${e}`);return s?.[1]&&r(s[1]),n}function oi(e){return Yn(e,"enabled")===!1?!1:Yn(e,"disabled")!==!0}function np(e,t){let n={};for(let{raw:r,attr:o}of Tt){if(o==="auto_approve"){let i=Yn(t,r);if(i!==void 0){n[r]=i;continue}}let s=Ye(t,r);s.length>0&&(n[r]=s)}ti(e,n)}var rp=/^\s*([A-Za-z_][A-Za-z0-9_-]*)\s*[.=]/,op=/^\[[^\]]*\.([A-Za-z_][A-Za-z0-9_-]*)\]\s*$/gm;function sp(e){let t=new Set,n=e.search(/^\[/m),r=n===-1?e:e.slice(0,n);for(let o of r.split(`
26
+ `)){let s=rp.exec(o);s?.[1]&&t.add(s[1])}for(let o of e.matchAll(op))o[1]&&t.add(o[1]);return[...t]}function si(e,t){let n={transport:t};qs(n,sp(e));let r=/^\s*command\s*=\s*(.+)$/m.exec(e),o=/^\s*url\s*=\s*(.+)$/m.exec(e),s=r?xe(r[1]??""):void 0,i=o?xe(o[1]??""):void 0,a=s!==void 0&&s.length>0?s:i,c=Ye(e,"args");a&&(n.command_or_url=Ee(a));let l=Xe(c);l.length>0&&(n.args=l),Qs(n,a,c);let u=new Set;for(let y of e.split(`
27
+ `)){let O=/^\s*env\.([A-Za-z_][A-Za-z0-9_]*)\s*=/.exec(y);O?.[1]&&u.add(O[1])}let d=/^\s*env\s*=\s*\{([^}]*)\}/m.exec(e);if(d?.[1])for(let y of d[1].split(",")){let O=/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=/.exec(y);O?.[1]&&u.add(O[1])}let f=/(?:^|\n)\[[^\]]*env\]\s*\n([\s\S]*?)(?=\n\[|$)/.exec(`
28
+ ${e}`);if(f?.[1])for(let y of f[1].split(`
29
+ `)){let O=/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=/.exec(y);O?.[1]&&u.add(O[1])}for(let y of Ye(e,"env_vars"))u.add(y);let p=tp(e,"env_http_headers");for(let[,y]of p)y.length>0&&u.add(y);let _=Vn(e,"bearer_token_env_var");_&&(u.add(_),n.bearer_token_env_var=_),u.size>0&&(n.env_var_names=[...u].sort()),p.length>0&&(n.env_http_header_names=[...new Set(p.map(([y])=>y))].sort()),(/^\s*(?:http_|env_http_)?headers\s*=/m.test(e)||/(?:^|\n)\[[^\]]*headers\]\s*(?:\n|$)/.test(e))&&(n.headers_present=!0);let E=Vn(e,"auth");E&&(n.auth=E);let S=Vn(e,"default_tools_approval_mode");return S&&(n.default_tools_approval_mode=S),np(n,e),n}var ip=300,ap=256;function ii(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 vt(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 ai(e,t){return e.length<=t?e:`${e.slice(0,t-1)}\u2026`}function cp(e){return ai(e,ip)}function ci(e,t){let n=ii(e.trim(),t),r=vt(n);if(r.length===0)return"";let[o,...s]=r,i=Ee(o),a=Xe(s);return cp([i,...a].join(" "))}function li(e,t){if(typeof e!="string")return null;let n=ii(e.trim(),t),r=vt(n)[0];if(!r)return null;let o=Ee(r);return o.length===0?null:ai(o,ap)}function lp(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 up(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 dp(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 up(c)){if(e.truncated)return;let u=l.command??l.bash??l.prompt??l.powershell??c.powershell??"",d=lp({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}),f=typeof c.matcher=="string"?c.matcher:"",p=N(u),_=f?`${s}:${f}:${d}:${p}`:`${s}:${d}:${p}`,E=`${s}|${f}|${d}|${u}|attrs2`;e.push({kind:"HOOK",name:_,path:o,content_hash:N(E),origin:r,enabled:!0,trigger:"EVENT",attributes:{event:s,...f?{matcher:f}:{},action_kind:d,action_hash:p,...d!=="prompt"&&u.trim()?{command:ci(u,e.home)}:{}}})}}}function Te(e,t,n){if(!e.claimFile(t))return;let r=e.readJson(t,{});!r?.hooks||typeof r.hooks!="object"||dp(e,t,r.hooks,n)}import{existsSync as hp,readFileSync as Sp}from"node:fs";var ue=Ne(Oe(),1);import{createHash as pp}from"node:crypto";import{join as qe}from"node:path";function fp(e){let t=[...e].sort((n,r)=>n.localeCompare(r,"en")).join(`
30
+ `);return pp("sha512").update(t).digest("hex").slice(0,16)}function mp(e){let t=process.platform==="win32"?qe(C("LOCALAPPDATA")??e,"npm-cache"):qe(e,".npm"),n=C("npm_config_cache")??C("NPM_CONFIG_CACHE");return n===void 0||n===t?[t]:[n,t]}function ui(e){return typeof e=="string"&&e.length>0&&e.length<=ue.PACKAGE_FIELD_MAX?e:null}function gp(e,t,n){let r=fp(e);for(let o of mp(n)){let s=qe(o,"_npx",r),i=L(qe(s,"node_modules",...t.split("/"),"package.json"),{}),a=ui(i.version);if(a!==null)return a;let c=L(qe(s,"package-lock.json"),{}),l=ui(c.packages?.[`node_modules/${t}`]?.version);if(l!==null)return l}return null}function _p(e){return e.length<=ue.PACKAGE_FIELD_MAX?e:`${e.slice(0,ue.PACKAGE_FIELD_MAX-1)}\u2026`}function qn(e,t,n){if(typeof e!="string"||e.length===0)return null;let r=(0,ue.npxPackageSpecs)(e,t??[]),o=r[0];if(o===void 0)return null;let s=(0,ue.packageNameFromSpec)(o);if(s===null)return null;let i=gp(r,s,n);return{package_name:s,package_spec:_p(o),...i===null?{}:{package_version:i,package_version_source:"npx_cache"}}}function di(e,t){if(typeof e!="string"||e.length===0)return null;let[n,...r]=vt(e.trim());return n===void 0?null:qn(n,r,t)}function Mt(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 qn(typeof n.command=="string"?n.command:null,r,t)}function pi(e,t){let n=/^\s*command\s*=\s*(.+)$/m.exec(e);return n===null?null:qn(xe(n[1]??""),Ye(e,"args"),t)}function Ep(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 fi(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=Ep(a),l=ni(a,c);Object.assign(l,Mt(a,e.home)??{});let u=ri(a);e.push({kind:"MCP_SERVER",name:i,path:s,content_hash:Xn(i,l,u),origin:n,enabled:u,attributes:l})}}function mi(e,t,n){if(!hp(t)||!e.claimFile(t))return;let r;try{r=Sp(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),d="unknown";/^\s*url\s*=/m.test(u)?d="http":/^\s*command\s*=/m.test(u)&&(d="stdio");let f=si(u,d);Object.assign(f,pi(u,e.home)??{});let p=oi(u);e.push({kind:"MCP_SERVER",name:a,path:o,content_hash:Xn(a,f,p),origin:n,enabled:p,attributes:f})}}import{existsSync as yp,readdirSync as Rp}from"node:fs";import{join as $}from"node:path";var gi=50;function Zn(e,t,n,r){if(!yp(t))return{componentCount:0,expandTruncated:!1};let o=e.components.length,{expanded:s}=e.withPluginExpandCap(gi,()=>{Se(e,{dir:$(t,"skills"),kind:"SKILL",origin:n,enabled:r,nested:"SKILL.md"}),Se(e,{dir:$(t,"commands"),kind:"COMMAND",origin:n,enabled:r,extensions:[".md"]}),Se(e,{dir:$(t,"agents"),kind:"SUBAGENT",origin:n,enabled:r,extensions:[".md"]})});Te(e,$(t,"hooks","hooks.json"),n),Te(e,$(t,"hooks.json"),n);let i=e.components.length-o,a=s>=gi;return{componentCount:i,expandTruncated:a}}function Qn(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 _i(e){let t=$(e.home,".claude/plugins/installed_plugins.json"),n=e.readJson(t,{});if(!n)return;let r=n.plugins??{},s=e.readJson($(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]??{},d=s[a]===!0,f=a.includes("@")?a.split("@").slice(1).join("@"):"",p=typeof u.version=="string"?u.version:"",_=typeof u.scope=="string"?u.scope:"user",E=`plugin:${a}`,S=0,y=!1;for(let O of l)if(typeof O.installPath=="string"&&O.installPath.length>0){let H=Zn(e,O.installPath,E,d);S+=H.componentCount,y=y||H.expandTruncated}Qn(e,{pluginKey:a,rowPath:i,enabled:d,scope:_,version:p||void 0,marketplace:f||void 0,componentCount:S,expandTruncated:y,contentHash:N(`${a}|${p}|${_}|${d}|${S}`)})}}function Cp(e){let t=e,n="";try{let r=Rp(e,{withFileTypes:!0}).filter(o=>o.isDirectory()).map(o=>o.name);if(r.length===1&&r[0])t=$(e,r[0]),n=r[0];else if(r.length>1){let o=[...r].sort(),s=o[o.length-1];s&&(t=$(e,s),n=s)}}catch{}return{installPath:t,version:n}}var Ip=/^\d+$/;function Ap(e){let t=e.filter(n=>!Ip.test(n.pluginId));return t.length>0?t:e}function hi(e){let t=[{base:$(e.home,".cursor/plugins/local"),scope:"local"},{base:$(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=$(n,o.name),l=`plugin:${a}`,{componentCount:u,expandTruncated:d}=Zn(e,c,l,!0);Qn(e,{pluginKey:a,rowPath:e.componentPath(c),enabled:!0,scope:"local",componentCount:u,expandTruncated:d,contentHash:N(`${a}|local|${u}`)});continue}let s=o.name,i=[];for(let a of e.readEntries($(n,s))){if(!a.isDirectory())continue;let c=$(n,s,a.name),{installPath:l,version:u}=Cp(c);i.push({pluginId:a.name,installPath:l,version:u})}for(let a of Ap(i)){if(e.truncated)break;let c=`${a.pluginId}@${s}`,l=`plugin:${c}`,{componentCount:u,expandTruncated:d}=Zn(e,a.installPath,l,!0);Qn(e,{pluginKey:c,rowPath:e.componentPath(a.installPath),enabled:!0,scope:"cache",version:a.version||void 0,marketplace:s,componentCount:u,expandTruncated:d,contentHash:N(`${c}|${a.version}|${u}`)})}}}function Op(e,t){let{layout:n,levelDir:r,origin:o,includeMachineWide:s}=t;for(let i of n.skillRoots)Se(e,{dir:be(r,i),kind:"SKILL",origin:o,enabled:!0,nested:"SKILL.md"});for(let i of n.dirs)Se(e,{dir:be(r,i.dir),kind:i.kind,origin:o,enabled:!0,extensions:i.extensions});for(let i of n.memory){let a=Js(i.map(c=>be(r,c)));a&&Pt(e,{absolutePath:a,kind:"MEMORY",origin:o,enabled:!0,name:kp(a)})}for(let i of mo(n))Te(e,be(r,i),o);for(let i of n.mcpJson??[])fi(e,be(r,i),o);for(let i of n.mcpToml??[])mi(e,be(r,i),o);if(s){if(n.managed)for(let i of ut(n.managed,process.platform,e.home))i.toLowerCase().endsWith(".json")&&Te(e,i,o);n.plugins==="claude"?_i(e):n.plugins==="cursor"&&hi(e)}}function Si(e,t){try{let n=new Ot(e,{pathMode:t.pathMode,maxEntries:t.maxEntries});for(let r of t.layouts)Op(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 er(e,t,n={}){let r={},o=n.shouldWalk;if(o===void 0||o("user","")){let c=Si(t,{layouts:Object.values(Ie),levelDir:t,origin:"user",includeMachineWide:!0,pathMode:"home-relative",maxEntries:re,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=$n({launchCwd:a,gitRoot:n.gitRoot,inGitRepo:s,remote:n.remote,home:t,hasProjectSpec:u=>_o(c,u)});i=l.parentRel;for(let u of l.anchors){let d=Nn(u.dir);if(o!==void 0&&!o(u.scope,d))continue;let f=Si(t,{layouts:c,levelDir:u.dir,origin:u.scope,includeMachineWide:!1,pathMode:"tilde",maxEntries:Bn,scopeRef:d});f&&(r[u.scope]=f)}r.parent||(i=null)}return{scopes:r,parentRel:i,cwdInGitRepo:s}}function tr(e,t,n={}){let r=n.truncated===!0,o=Je(e),s=new Set(e.map(u=>z(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 d=z(u.path,u.name);c[d]!==u.content_hash&&a.push(u)}let l=[];if(!r){for(let u of Object.keys(c))if(!s.has(u)){let d=Ms(u);d&&l.push(d)}}return{hash:o,count:e.length,truncated:r,full:!1,upserts:a,removed:l,unchanged:a.length===0&&l.length===0}}var yi=2*1024*1024,Pp=new Set(["HOOK","MCP_SERVER","PLUGIN"]);function nr(e,t,n){let r=new Set(t.map(s=>z(s.path,s.name))),o=[];for(let s of e)s.text!==void 0&&(n.has(s.content_hash)||r.has(z(s.path,s.name))||o.push(s));return o}function rr(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 Ei(e){return Buffer.byteLength(JSON.stringify(e),"utf8")}function Ri(e){if(e.text===void 0)return e;let{text:t,...n}=e;return n}function or(e,t=yi){let n=[],r=[];for(let u of e)Pp.has(u.kind)?n.push(u):r.push(u);r.sort((u,d)=>(u.text?.length??0)-(d.text?.length??0));let o=[...n,...r],s=[],i=2,a=0,c=0,l=[];for(let u of o){let d=s.length>0?1:0,f=Ei(u)+d;if(i+f<=t){s.push(u),i+=f,u.text!==void 0&&l.push(u.content_hash);continue}if(u.text!==void 0){let p=Ri(u),_=Ei(p)+d;if(i+_<=t){s.push(p),i+=_,a+=1;continue}}c+=1}return{components:s,textDeferredCount:a,droppedCount:c,textHashesSent:l}}function sr(e,t){return t.size===0?e:e.map(n=>n.text===void 0||!t.has(n.content_hash)?n:Ri(n))}var xp=["user","cwd","repo","parent"];function ir(e){let{collected:t,cacheFor:n,nowMs:r,maxBytes:o}=e,s=[];for(let x of xp){let P=t.scopes[x];if(!P)continue;let U=n(x,P.scopeRef),w=U.components,j=tr(P.components,w,{forceFull:w===void 0,truncated:P.truncated}),Z=new Set(U.textHashes),D=nr(P.components,j.upserts,Z),b=sr([...j.upserts,...D],Z);s.push({scope:x,walk:P,delta:j,outgoing:b,outgoingKeys:new Set(b.map(R=>z(R.path,R.name))),deliveredTextHashes:Z,cachedComponents:w})}let i=s.flatMap(x=>x.outgoing),a=or(i,o),c=new Set(a.components.map(x=>z(x.path,x.name))),l=[],u=[],d=[],f=[],p=[],_=[],E=[];for(let x of s){let{scope:P,walk:U,delta:w}=x;_.push(...U.components),l.push(P);let j=a.components.filter(R=>x.outgoingKeys.has(z(R.path,R.name))),Z=[...x.outgoingKeys].some(R=>!c.has(R)),D=w.truncated||Z;D?d.push(P):w.full&&u.push(P),f.push(...j),!w.full&&!D&&p.push(...w.removed);let b=w.full?{}:{...x.cachedComponents??{}};if(!D)for(let R of w.removed)delete b[z(R.path,R.name)];for(let R of j)b[z(R.path,R.name)]=R.content_hash;E.push({scope:P,scopeRef:U.scopeRef,components:b,textHashes:rr(x.deliveredTextHashes,j.filter(R=>R.text!==void 0).map(R=>R.content_hash),U.components),collectedAtMs:r,included:j.length>0||w.removed.length>0&&!D||w.full})}let S={user_spec_hash:Je(_),user_spec_count:_.length,user_spec_truncated:d.length>0};l.length>0&&(S.user_spec_scopes=l,S.user_spec_full_scopes=u,S.user_spec_truncated_scopes=d,S.user_spec_cwd_in_git_repo=t.cwdInGitRepo),u.length>0&&u.length===l.length&&(S.user_spec_full=!0),f.length>0&&(S.user_spec=f),p.length>0&&(S.user_spec_removed=p),a.textDeferredCount>0&&(S.user_spec_text_deferred=a.textDeferredCount);let y=t.scopes.cwd;y&&(S.user_spec_cwd_scope_ref=y.scopeRef);let O=t.scopes.repo;O&&(S.user_spec_repo_scope_ref=O.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:E}}var Qe={cwd:"cwd_spec",repo:"repo_spec",parent:"parent_spec"};function wt(e){return e==="cwd"||e==="repo"||e==="parent"}function Ze(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ar(e){return!Ze(e)||!Ze(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 Ci(e){return Tp(e)}function Ii(e){return bp(e)}function Ai(e){return vp(e)}function Tp(e){if(!Ze(e))return;let t={};for(let[n,r]of Object.entries(e))typeof r=="string"&&(t[n]=r);return t}function bp(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function cr(e,t){if(!Ze(e))return;let n=e[t];return ar(n)?n:void 0}function vp(e){if(!Ze(e))return{};let t={};for(let[n,r]of Object.entries(e))ar(r)&&(t[n]=r);return t}function lr(e,t=20){let n=[];for(let[r,o]of Object.entries(e))ar(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 Lp=200,ki=200,Up=["allow","deny","ask"],Dp=/(?<=^|[\s(,=:])(?:~|[A-Za-z]:)?[\\/][^\s,)]+/g,dr="<path>",Hp=new RegExp(`${dr}(?:\\s+[A-Za-z.][^\\s,)]*[\\\\/][^\\s,)]*)+`,"g");function Fp(e){let t=e.replace(Dp,dr).replace(Hp,dr);return t.length>ki?`${t.slice(0,ki)}...`:t}function Lt(e){let t=L(e,{}),n=[];for(let r of Up)for(let o of t.permissions?.[r]??[])typeof o=="string"&&o.length>0&&n.push({key:Fp(o),mode:r});return{model:t.model??"",permissionKeys:n}}function jp(e){let{serverManaged:t,fileBased:n}=ln(process.platform,e),r=Lt(t);if(r.model||r.permissionKeys.length>0)return r;let o="",s=[];for(let i of n){let a=Lt(i);a.model&&(o=a.model),s.push(...a.permissionKeys)}return{model:o,permissionKeys:s}}function Kp(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 $p=10,Bp="self-config-cache.json",Pi=2;function Ut(){return C("EV_AI_HOOK_USER_SPEC")?.toLowerCase()==="off"}function Gp(){return C("EV_AI_HOOK_CWD_SPEC")?.toLowerCase()==="off"}function zp(e,t=Date.now()){return e===void 0||!Number.isFinite(e)?!0:t-e>=De}var Wp={claude:["claude"],cursor:["agent","cursor-agent"],codex:["codex"]};async function Jp(e,t=M){let n=Wp[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(`
31
+ `)[0]??"").trim();return a||r(o+1)};return r(0)}function Vp(e=Oi()){return ve(e,".ev-ai","agent-hook",Bp)}function Yp(e){let n=[...e].sort((r,o)=>r.name.localeCompare(o.name)).map(r=>`${r.name}:${r.size}`).join(`
32
+ `);return N(n)}function Nt(e,t,n=!1){let r=Yp(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 ur(e,t,n=[]){let r=0,o=!1,s=new Set;for(let i of[...t.map(a=>ve(e,a)),...n]){let a=Np(i);if(s.has(a))continue;s.add(a);let c=Yt(i);c.present&&(o=!0,r+=c.size)}return o?{present:!0,size:r}:{present:!1,size:0}}function Xp(e){return Mp(e)?F(wp(e,"utf8"),{}):{}}function qp(e,t){try{Y(e,`${JSON.stringify(t)}
33
+ `)}catch(n){let r=n instanceof Error?n.message:String(n);h(`WARN: self-config cache write failed open: ${r}`)}}function Zp(e,t,n){if(t==="user")return e.user_spec_collected_at_ms;if(wt(t))return cr(e[Qe[t]],n)?.collected_at_ms}function Qp(e,t,n){if(t==="user")return{components:Ci(e.user_spec_components),textHashes:Ii(e.user_spec_text_hashes)};if(!wt(t))return{components:void 0,textHashes:[]};let r=cr(e[Qe[t]],n);return r?{components:r.components,textHashes:r.text_hashes}:{components:void 0,textHashes:[]}}function ef(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=Pi,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(!wt(s.scope))continue;let i=Qe[s.scope],a=Ai(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]=lr(a)}}return o}async function xi(e,t=process.cwd(),n=Oi(),r={}){let o=e==="claude",s=r.gitRoot??t,i=await Jp(e),a="",c=[];if(o){let D=jp(n),b=Lt(ve(n,".claude/settings.json")),R=Lt(ve(t,".claude/settings.local.json"));a=D.model||R.model||b.model,c=Kp([...D.permissionKeys,...b.permissionKeys,...R.permissionKeys]).slice(0,Lp)}let l={present:!1,size:0},u=D=>{let b=[],R=!1;for(let Q of D){let nt=Ar(ve(n,Q));if(b=b.concat(nt.entries),R=R||nt.truncated,b.length>=re){b=b.slice(0,re),R=!0;break}}return{entries:b,truncated:R}},d=Vp(n),f=Xp(d),p=f[e]??{},_=(p.send_count??0)+1,E=_>0&&_%$p===0,S=D=>E?void 0:p[D],y=u(ae.skills),O=u(ae.subagents),H=u(ae.commands),x=u(ae.rules),P={skills:Nt(y.entries,S("skills"),y.truncated),subagents:Nt(O.entries,S("subagents"),O.truncated),commands:Nt(H.entries,S("commands"),H.truncated),rules:Nt(x.entries,S("rules"),x.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:P.skills,subagents:P.subagents,commands:P.commands,rules:P.rules,memory:ur(n,ae.memory),settings:ur(n,ae.settings,ho(n)),mcp:ur(n,ae.mcp)},local_settings:o?Yt(ve(t,".claude/settings.local.json")):l},w=null,j=r.nowMs??Date.now();if(!Ut()){let D=p.user_spec_layout_version!==Pi,b=er(e,n,{launchCwd:Gp()?void 0:r.launchCwd,gitRoot:s,inGitRepo:r.inGitRepo,remote:r.remote,shouldWalk:(R,Q)=>D||zp(Zp(p,R,Q),j)});if(Object.keys(b.scopes).length>0){let R=ir({collected:b,cacheFor:(Q,nt)=>D?{components:void 0,textHashes:[]}:Qp(p,Q,nt),nowMs:j});Object.assign(U,R.fields),w={hash:R.fields.user_spec_hash,home:R.scopes.find(Q=>Q.scope==="user")??null,project:R.scopes.filter(Q=>Q.scope!=="user")}}}let Z=ef(p,P,_,w);return{config:U,commit:()=>{f[e]=Z,qp(d,f)}}}function Me(e,t,n){let r={installation_id:n.installationId};return n.platformAgentId&&(r.platform_agent_id=n.platformAgentId),n.sessionId&&(r.session_id=n.sessionId),n.turnId&&(r.turn_id=n.turnId),{schema_version:2,event:e,timestamp:ot(),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:nn,host_arch:process.arch,node_version:process.version,correlation:r,payload:t}}import{existsSync as bi}from"node:fs";import{spawn as vi}from"node:child_process";import{fileURLToPath as nf}from"node:url";import{gzipSync as tf}from"node:zlib";function fr(e){return C("EV_AI_HOOK_COMPRESS")==="off"?{body:e}:Buffer.byteLength(e,"utf8")<Ur?{body:e}:{body:tf(Buffer.from(e,"utf8")),contentEncoding:"gzip"}}function Dt(e){let t={"Content-Type":"application/json"};return e!==void 0&&(t["Content-Encoding"]=e),t}function Ti(e){return typeof e=="string"?Buffer.byteLength(e,"utf8"):e.length}var mr="__post",Ht="__work";async function rf(e,t,n={}){if(C("EV_AI_HOOK_USER_SPEC")?.toLowerCase()==="off")return e;let r=await Un(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 of(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 Mi(e){switch(e){case"session_start":return vr;case"session_end":return Mr;case"tool_invoked":case"skill_invoked":return en;default:return en}}function sf(e,t,n){return`${JSON.stringify({url:e,timeoutMs:t})}
34
+ ${n}`}function wi(e,t=[],n=process.execPath,r=import.meta.url,o=bi){if(br(n))return{command:n,args:[e,...t]};let s=nf(r);return o(s)?{command:n,args:[s,e,...t]}:{command:n,args:[e,...t]}}function af(e=process.execPath,t=import.meta.url,n=bi){return wi(mr,[],e,t,n)}function cf(e){let t=e.indexOf(`
35
+ `);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 Ni(e,t=fetch){let n=await e(),r=cf(n);if(!r)return;let{meta:o,body:s}=r,i=fr(s),a=Dt(i.contentEncoding);try{await t(o.url,{method:"POST",headers:a,body:i.body,signal:AbortSignal.timeout(Number(o.timeoutMs))})}catch{}}async function lf(e,t,n,r=fetch){let o=Mi(e),s=fr(t),i=Dt(s.contentEncoding),a=Ti(s.body);h(`POST event=${e} url=${cn(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{}h(`POST gzip rejected http=${l.status} \u2014 retrying uncompressed`),l=await r(n,{method:"POST",headers:Dt(),body:t,signal:AbortSignal.timeout(o)})}let u=Date.now()-c;if(l.ok)return h(`POST outcome=ok elapsed_ms=${u} http=${l.status}`),!0;let d=(await l.text()).slice(0,200).replace(/[\n\r]/g,"");return h(`POST outcome=fail elapsed_ms=${u} http=${l.status} body=${d}`),!1}catch(l){let u=Date.now()-c,d=l instanceof Error?l.message:String(l);return h(`POST outcome=fail elapsed_ms=${u} http=000 body=${d}`),!1}}async function Li(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){h(`WARN: ${o} stdin handoff timed out \u2014 continuing fail-open`);try{s.stdin.destroy()}catch{}}a()},wr),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 h(`WARN: ${o} spawn failed open: ${i}`),null}}async function uf(e,t,n,r=vi,o=af){let s=Mi(e),i=sf(n,s,t),{command:a,args:c}=o();return Li(a,c,i,r,"detached post")}async function Ui(e,t,n=vi,r=wi){let{command:o,args:s}=r(Ht,t);return Li(o,s,e,n,"detached work")}async function we(e,t,n,r,o,s,i){if(!o)return h("WARN: collector URL missing \u2014 pass --url on the hook command or set collector_url in manifest"),!1;if(!ct(o))return h(`WARN: collector URL blocked (https required): ${cn(o)}`),!1;let a=await rf(t,n.runnerPlatform,i),c=r(e,a,n);s!==void 0&&(c.build_ms=Math.max(0,Date.now()-s));let l=`${JSON.stringify(c)}
36
+ `,u=C("EV_AI_HOOK_DEBUG");u==="full"?h(`DEBUG envelope=${JSON.stringify(c)}`):u==="1"&&h(`DEBUG summary=${of(c,Buffer.byteLength(l,"utf8"))}`);let d=process.argv.includes(Ht),f=C("EV_AI_HOOK_SYNC")==="1";return St(n.runnerEvent,n.runnerPlatform)||d||f?lf(e,l,o):(await uf(e,l,o),!1)}import{createReadStream as df}from"node:fs";import{stat as pf}from"node:fs/promises";import{basename as ff,resolve as mf}from"node:path";import{createInterface as gf}from"node:readline";var _f=1024*1024;function hf(e){let t=e.replace(/\\/g,"/");return t.includes("/.claude/projects/")&&ff(t).endsWith(".jsonl")}async function Di(e){if(!e||!hf(e))return null;try{let t=mf(e),n=await pf(t);if(!n.isFile())return null;let r=Math.max(0,n.size-_f),o=[],s=gf({input:df(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 jt(e){return{sessionId:e.sessionId,turnId:e.turnId,installationId:e.manifest.installationId,runnerPlatform:e.runnerPlatform,platformAgentId:e.platformAgentId,runnerEvent:e.runnerEvent}}function tt(e,t){return{gitRoot:e.manifest.gitRoot,...t?{home:t}:{}}}function gr(e){return{gitRoot:e.manifest.gitRoot,inGitRepo:e.manifest.inGitRepo}}async function ji(e){let t=Date.now();await Pf(e);let{gitRoot:n}=e.manifest;await Kt(e,n);let r=gr(e);return{buildStartedAtMs:t,gitRoot:n,hookInput:At(e.hookInput,e.manifest.manifest,r),envelopeFields:jt(e),launchCwd:jn(e.hookInput,r),home:Ef()}}function Hi(e){try{return G(Sf(e))}catch{return null}}function Ki(e){return e.startsWith("/")||/^[A-Za-z]:\//.test(e)}function Fi(e,t){let n=e.replaceAll("\\","/");if(!Ki(n))return null;let r=G(e),o=G(t),s=Hi(e)??r,i=Hi(t)??o;return s.startsWith(`${i}/`)?s.slice(i.length+1):r.startsWith(`${o}/`)?r.slice(o.length+1):null}function yf(e,t,n){if(!e)return{repositorySourcePath:null,userSourcePath:null};let r=e.replaceAll("\\","/"),s=Fi(e,t)??(Ki(r)?null:r),i=Fi(e,n);return{repositorySourcePath:s,userSourcePath:i}}function Ft(e,t,n,r,o,s){let{repositorySourcePath:i,userSourcePath:a}=yf(e,t,n),c=i??a,l=c===null?null:o(c),u=l!==null&&c!==null?Rf({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 Rf(e){try{let t=e.inRepository?Cf(e.platformAgentId,e.sourcePath):(0,k.installationRootExternalKey)(e.installationId,(0,k.userConfigRootFromPath)(e.sourcePath));return t?(0,k.buildComponentReference)({installationRootExternalKey:t,installableKind:e.installableKind,sourcePath:e.sourcePath,nativeKey:e.nativeKey}):void 0}catch{return}}function $i(e,t,n){return we("tool_invoked",{...n,success:null,duration_ms:null,hook_input:t.hookInput},t.envelopeFields,Me,e.manifest.collectorUrl,t.buildStartedAtMs,tt(e,t.home))}var Bi=new Set([...Object.values(he),".github"]);function Cf(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=>Bi.has(i));return s<0?null:`${r}:${o.slice(0,s+1).join("/")}`}function If(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,k.userConfigRootFromPath)(l);return(0,k.buildComponentReference)({installationRootExternalKey:(0,k.installationRootExternalKey)(r,_),installableKind:k.ComponentKind.INTERFACE,sourcePath:l,nativeKey:c?.name??t})}catch{return}if(n===null)return;let d=n.indexOf(":");if(d<=0||d===n.length-1)return;let f=n.slice(d+1),p=f.replaceAll("\\","/").split("/").at(-1);if(!(p===void 0||!Bi.has(p)))try{return(0,k.buildComponentReference)({installationRootExternalKey:n,installableKind:k.ComponentKind.INTERFACE,sourcePath:f,nativeKey:t})}catch{return}}function Af(...e){for(let t of e)if(t)return t;return null}function W(e,t,n){if(e.status==="fulfilled")return e.value;let r=e.reason instanceof Error?e.reason.message:String(e.reason);return h(`WARN: ${n} failed open: ${r}`),t}function kf(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 Of(e,t){return{runner_platform:e,config_scope:"user",...t?{operator:t}:{}}}var ye=new Set,et=null;async function Pf(e){if(Ut())return;let t=e.manifest.installationId,n=e.manifest.installationStorePath;if(ye.has(t))return;if(!Hn(n)){ye.add(t);return}let r=Le({sessionId:e.sessionId,hostname:Ue()});if(Ns(r)){if(et){await et;return}et=(async()=>{if(ye.has(t)||!Hn(n)){ye.add(t);return}if(!Qr(n)){ye.add(t);return}let o=!1;try{let s=Date.now(),{gitRoot:i}=e.manifest,a=String(e.runnerPlatform),[c,l,u,d,f]=await Promise.allSettled([$e(i),Zt(),bn(r),Qt(),Dn({gitRoot:i,installationStorePath:n,forceResend:!1,runnerPlatform:a})]),p=W(c,null,"gitSnapshot"),_=W(l,"","detectVirt"),E=W(u,null,"probeCloud"),S=W(d,{},"hostEnv"),y=W(f,{commit:()=>{}},"resolveOperatorForSend");await Kt(e,i,p);let O={identity:{host:Ue(),context:r,virt:_||null,cloud:E,git:p},host_env:S,env_vars:vn(),self_config:Of(a,y.operator),run_meta:{trigger:"cloud_identity_bootstrap"}};o=!!await we("session_start",O,jt(e),Me,e.manifest.collectorUrl,s,tt(e)),o&&(y.commit(),ye.add(t))}finally{eo(n)}})().finally(()=>{et=null}),await et}}async function Kt(e,t,n){try{let r=n===void 0?await $e(t):n;e.platformAgentId=await Ho(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);h(`WARN: derivePlatformAgentId failed open: ${o}`)}}async function xf(e){let t=Date.now(),{gitRoot:n}=e.manifest,r=Le({sessionId:e.sessionId,hostname:Ue()}),o=String(e.runnerPlatform),s=gr(e),i=jn(e.hookInput,s),a=$e(n),c=Ut()?Promise.resolve({commit:()=>{}}):Dn({gitRoot:n,installationStorePath:e.manifest.installationStorePath,forceResend:!1,runnerPlatform:o}),[l,u,d,f,p,_,E]=await Promise.allSettled([a,Zt(),bn(r),Qt(),kn(e.manifest.manifest,n,o),a.catch(()=>null).then(b=>xi(o,n,void 0,{installationStorePath:e.manifest.installationStorePath,gitRoot:n,launchCwd:i,inGitRepo:e.manifest.inGitRepo,remote:b?.remote??null})),c]),S=W(l,null,"gitSnapshot"),y=W(u,"","detectVirt"),O=W(d,null,"probeCloud"),H=W(f,{},"hostEnv"),x=W(p,[],"mcpDeclared"),P=W(_,kf(o),"selfConfig"),U=W(E,{commit:()=>{}},"resolveOperatorForSend"),w=P.config;await Kt(e,n,S);let j=m(e.hookInput,"model");j&&(w.model=j);let Z={identity:{host:Ue(),context:r,virt:y||null,cloud:O,git:S},host_env:H,env_vars:vn(),mcp:{declared:x},self_config:w,run_meta:{trigger:e.hookSource||"startup"},hook_input:At(e.hookInput,e.manifest.manifest,{...s,launchCwd:i})};await we("session_start",Z,jt(e),Me,e.manifest.collectorUrl,t,tt(e))&&(P.commit(),U.commit(),ye.add(e.manifest.installationId))}async function Tf(e){let t=Date.now(),{gitRoot:n}=e.manifest;await Kt(e,n);let r=Af(m(e.hookInput,"status"),m(e.hookInput,"stop_reason"),m(e.hookInput,"reason"),ze(m(e.hookInput,"error"))),o=e.runnerPlatform==="claude"?await Di(m(e.hookInput,"transcript_path")):null,s=At(e.hookInput,e.manifest.manifest,gr(e));o&&(s.model=o),await we("session_end",{status:r,...o?{model:o}:{},hook_input:s},jt(e),Me,e.manifest.collectorUrl,t,tt(e))}function Gi(e,t,n,r){let o=r??Io({skillId:n,launchCwd:t.launchCwd,gitRoot:t.gitRoot,home:t.home}),s=Ft(o,t.gitRoot,t.home,k.ComponentKind.SKILL,k.nativeKeyForSkillPath,e);if(s.sourcePath!==null&&dn(s.sourcePath)?.toLowerCase()===n.toLowerCase())return s.componentReference===void 0?{}:{componentReference:s.componentReference};let i=r??Bo({commandId:n,launchCwd:t.launchCwd,gitRoot:t.gitRoot,home:t.home,runnerPlatform:e.runnerPlatform}),a=Ft(i,t.gitRoot,t.home,k.ComponentKind.COMMAND,k.nativeKeyForCommandPath,e);return a.nativeKey?.toLowerCase()!==n.toLowerCase()?{}:{commandName:a.nativeKey,...a.componentReference===void 0?{}:{componentReference:a.componentReference}}}function bf(e,t,n){let r=pt(e.hookInput.tool_input);return Promise.all(n.map(o=>{let s=Gi(e,t,o,r);return $i(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 vf(e,t,n){return Promise.all(n.map(r=>{let o=Fo({relativePath:r,launchCwd:t.launchCwd,gitRoot:t.gitRoot,home:t.home,runnerPlatform:e.runnerPlatform}),s=Ft(o,t.gitRoot,t.home,k.ComponentKind.RULE,k.nativeKeyForRulePath,e),i=s.nativeKey??Ko(r);return $i(e,t,{tool_name:"Rule",rule_name:i,...s.componentReference===void 0?{}:{component_reference:s.componentReference}})}))}var Mf=[{kind:k.ComponentKind.SKILL,nativeKeyFn:k.nativeKeyForSkillPath},{kind:k.ComponentKind.RULE,nativeKeyFn:k.nativeKeyForRulePath},{kind:k.ComponentKind.COMMAND,nativeKeyFn:k.nativeKeyForCommandPath}];function wf(e,t,n){if(n.skillName===null&&n.ruleName===null&&n.commandName===null)return{};let r=fn(e.hookInput);if(r===null)return n.skillName===null?{}:Gi(e,t,n.skillName,null);for(let o of Mf){let s=Ft(r,t.gitRoot,t.home,o.kind,o.nativeKeyFn,e);if(s.nativeKey!==null)return{...s.componentReference===void 0?{}:{componentReference:s.componentReference},...o.kind===k.ComponentKind.RULE?{ruleName:s.nativeKey}:{},...o.kind===k.ComponentKind.COMMAND?{commandName:s.nativeKey}:{}}}return{}}var Nf=/mcp/i;function Lf(e,t,n,r){let o=Nf.test(e.runnerEvent);if(!r.hasMcpIdentity&&!o)return{};let s=o?di(t,n):Mt(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 Uf(e){let t=await ji(e),n=ts(e.hookInput,e.runnerEvent),{toolName:r,skillName:o}=n,s=pn(e.hookInput),i=li(s,t.home),a=rs(e.hookInput),c=qo(e.runnerEvent),l=c===!1?os(e.hookInput,e.runnerEvent):null,u=await kn(e.manifest.manifest,e.manifest.gitRoot,String(e.runnerPlatform),t.home).catch(()=>[]),d=ze(m(e.hookInput,"mcp_server_name")),{mcpServer:f,mcpTool:p}=ss(r,u.map(U=>U.name),d??""),_=If(r,f,e.platformAgentId,e.manifest.installationId,String(e.runnerPlatform),u,d),E=_===void 0?wf(e,t,n):{},S=f===null?null:Yo(f,e.manifest.manifest,e.manifest.gitRoot,String(e.runnerPlatform),t.home),y=Lf(e,s,t.home,{hasMcpIdentity:!!f||!!p,declaredConfig:S}),O=_??E.componentReference,H=E.ruleName??n.ruleName,x=E.commandName??n.commandName,P=ns(e.hookInput);await we("tool_invoked",{tool_name:r,skill_name:o,...H?{rule_name:H}:{},...x?{command_name:x}:{},success:c,duration_ms:a,...i?{executable:i}:{},...l?{failure_reason:l}:{},...f?{mcp_server:f}:{},...p?{mcp_tool:p}:{},...y,...O?{component_reference:O}:{},...P?{subagent_type:P}:{},hook_input:t.hookInput},t.envelopeFields,Me,e.manifest.collectorUrl,t.buildStartedAtMs,tt(e,t.home))}async function zi(e){switch(e.internalEvent){case"session_start":await xf(e);return;case"session_end":await Tf(e);return;case"skill_invoked":{let t=Ao(e.hookInput),n=$o(e.hookInput);if(t.length===0&&n.length===0)return;let r=await ji(e);await Promise.all([t.length===0?void 0:bf(e,r,t),n.length===0?void 0:vf(e,r,n)]);return}case"tool_invoked":await Uf(e);return;default:return}}function Wi(e){return e!=="session_start"&&e!=="session_end"&&e!=="tool_invoked"&&e!=="skill_invoked"&&e!==""}import{existsSync as _r,readFileSync as Df}from"node:fs";import{homedir as Hf}from"node:os";import{dirname as Ff,isAbsolute as jf,join as Vi,relative as Kf}from"node:path";var $f=[xr,".cursor/ev-ai-runtime-report.json",".codex/ev-ai-runtime-report.json"];function Bf(e=Hf()){return Vi(e,".ev-ai",Tr)}function Ji(e){for(let t of $f){let n=Vi(e,t);if(_r(n))return n}}async function Gf(e=process.cwd(),t){let n=C("EV_AI_HOOK_MANIFEST");if(n&&_r(n))return n;let r=Bf();if(_r(r))return r;let o=t??await Vt(e);return Ji(o)??Ji(e)}async function zf(e,t){let n=t??await Vt(Ff(e)),r=Kf(n,e);if(r.startsWith("..")||jf(r))return!1;let o=await J("git",["ls-files","--error-unmatch",r],2e3,{cwd:n});return o.ok?!0:o.code===1?!1:(h(`WARN: git ls-files failed for manifest ${e} (code=${String(o.code)}); treating as tracked`),!0)}function Wf(e){let t=Df(e,"utf8");return F(t,{})}function Jf(){return{schema_version:2,mcp_servers:[]}}async function Yi(e=process.cwd(),t={}){let{root:n,inGitRepo:r}=await Jt(e),o=await Gf(e,n),s=o?Wf(o):Jf();delete s.installation_id;let i=o?await zf(o,n):!1;s.capture_hook_input==="full"&&o&&i&&(h(`WARN: ignoring capture_hook_input=full in git-tracked manifest ${o}; use EV_AI_HOOK_CAPTURE_FULL_INPUT=1 or an untracked operator manifest`),delete s.capture_hook_input);let{installationId:a,storePath:c,repoKey:l}=await oo(n,{sessionId:t.sessionId});return{manifestPath:o??c,manifest:s,installationId:a,installationStorePath:c,repoKey:l,collectorUrl:lo(s),platformAgentId:s.platform_agent_id??"",gitRoot:n,inGitRepo:r}}async function Xi(e,t,n,r){let o=t??await Wt(tn),s=F(o,{}),i=m(s,"session_id")||m(s,"conversation_id"),a=await Yi(process.cwd(),{sessionId:i});if(!a)return;r&&(a.collectorUrl=r);let c=Zo(s,a.manifest.platform,n),l=Qo(e,c.runnerEvent);if(!l){h(`WARN: unknown hook event '${c.runnerEvent}'; skipping telemetry`);return}let u={hookInput:s,sessionId:c.sessionId,turnId:c.turnId,runnerEvent:c.runnerEvent,runnerPlatform:c.runnerPlatform,hookSource:c.hookSource,internalEvent:l,manifest:a,platformAgentId:a.platformAgentId};if(Wi(l)){h(`WARN: unsupported internal event '${l}'`);return}await zi(u)}function Vf(e,t){if(C("EV_AI_HOOK_SYNC")==="1")return!0;let n=ht(e),r=F(t,{}),o=n.event??(m(r,"hook_event_name")||m(r,"event")),s=Ge(r,o,void 0,n.runner);return St(o,s)}async function qi(e=process.argv.slice(2)){if(e[0]===mr){try{await Ni(zt)}catch{}return 0}if(e[0]===Ht){try{let t=ht(e.slice(1)),n=await zt(),r=F(n,{}),o=t.event??(m(r,"hook_event_name")||m(r,"event"));if(Xt()||xn(t.runner,r,o))return 0;await Xi(t.event,n,t.runner,Pn(t))}catch(t){let n=t instanceof Error?t.message:String(t);h(`WARN: detached work failed open: ${n}`)}return 0}try{let t=await Wt(tn),n=ht(e),r=Pn(n),o=F(t,{}),s=n.event??(m(o,"hook_event_name")||m(o,"event"));if(Xt()||xn(n.runner,o,s)||!ps(o,s,n.runner))return 0;Vf(e,t)?await Xi(n.event,t,n.runner,r):await Ui(t,e)}catch(t){let n=t instanceof Error?t.message:String(t);h(`WARN: hook failed open: ${n}`)}finally{Ir()}return 0}qi().then(e=>{process.exit(e)}).catch(e=>{let t=e instanceof Error?e.message:String(e);process.stderr.write(`[ev-ai-agent-hook] ${t}
37
37
  `),process.exit(1)});