cc-safety-net 2.3.3 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env node
2
+ var Gp=["-h","--help"];function Kr(e,t){let n=Object.entries(e.booleans??{}),r=Object.entries(e.values??{}),o=Object.entries(e.lists??{}),i=Object.fromEntries(n.map(([d])=>[d,!1])),s={},a=Object.fromEntries(o.map(([d])=>[d,[]])),l=[],c=[],u=!1,m=-1;for(let[d,f]of t.entries()){if(d<=m)continue;if(f==="--"){l.push(...t.slice(d+1));break}if(Gp.includes(f)){u=!0;continue}let p=n.find(([,y])=>y.includes(f));if(p){i[p[0]]=!0;continue}let h=r.find(([,y])=>y.includes(f));if(h){let y=t[d+1];if(y===void 0||y.startsWith("-")){c.push(`${f} requires a value`);continue}s[h[0]]=y,m=d+1;continue}let g=o.find(([,y])=>y.includes(f));if(g){let y=t.slice(d+1),v=y.findIndex((b)=>b.startsWith("-")),E=y.slice(0,v===-1?y.length:v);if(E.length===0){c.push(`${f} requires at least one value`);continue}a[g[0]]=[...a[g[0]]??[],...E],m=d+E.length;continue}if(f.startsWith("-")){c.push(`Unknown option for ${e.label}: ${f}`);continue}if(e.positionals==="tail"){l.push(...t.slice(d));break}l.push(f)}if(e.positionals!=="list"&&e.positionals!=="tail")c.push(...l.map((d)=>`Unexpected argument for ${e.label}: ${d}`));return{flags:i,values:s,lists:a,positionals:l,help:u,errors:c}}var jn=require("node:path");var zi="CC Safety Net could not analyze the command because it exceeds safe analysis limits. Simplify or split the command and retry.",st="Command exceeds maximum recursion depth and cannot be safely analyzed. Flatten the nesting and retry.",Kn="CC Safety Net failed closed because command analysis failed unexpectedly. This is not caused by your command. Report it to the user.";var Gi={errorCode:"path-canonicalization-limit",reason:"CC Safety Net could not analyze the command because it exceeds safe analysis limits. Simplify or split the command and retry."},zp={errorCode:"structural-shell-syntax-limit",reason:"CC Safety Net could not analyze the command because it exceeds safe analysis limits. Simplify or split the command and retry."},$t={errorCode:"tool-input-limit",reason:"CC Safety Net failed closed because command analysis failed unexpectedly. This is not caused by your command. Report it to the user."},Vn={errorCode:"structural-shell-syntax-limit",reason:"Command analysis exceeds CC Safety Net's derived-command work limit. Reduce nested or embedded command complexity and retry."},qr={errorCode:"structural-shell-syntax-limit",reason:"Parallel command expands beyond CC Safety Net's analysis limits. Reduce the template or explicit argument list and retry."},P=Object.freeze({realpathAttempts:{cap:16384,...Gi},processedCandidateBytes:{cap:4194304,...Gi},pathEnvironmentExpansion:{cap:64,...Gi},structuralShellSyntax:zp,recursionDepth:{cap:10,errorCode:"structural-shell-syntax-limit",reason:"Command exceeds maximum recursion depth and cannot be safely analyzed. Flatten the nesting and retry."},derivedTokens:{cap:16384,...Vn},trackedHeredocFiles:{cap:64,...Vn},controlFlowStates:{cap:64,...Vn},wrapperPeelIterations:{cap:20,...Vn},derivedCommandShape:Vn,parallelChildAnalyses:{cap:1024,...qr},parallelDerivedTokens:{cap:16384,...qr},parallelDerivedBytes:{cap:1048576,...qr},parallelPlaceholderReplacements:{cap:16384,...qr},hookInputBytes:{cap:8388608,errorCode:"tool-input-limit",reason:"Failed to parse hook input JSON."},toolInputDepth:{cap:64,...$t},toolInputNodes:{cap:1e4,...$t},toolInputKeys:{cap:1e4,...$t},toolInputStringBytes:{cap:1048576,...$t},toolInputAggregateStringBytes:{cap:4194304,...$t},toolInputGitDiffCandidates:{cap:64,...$t},toolInputShape:$t});class D extends Error{kind;name="AnalysisLimit";constructor(e){super(P[e].reason);this.kind=e}}function me(){let e=new Map;return{counters:e,resolvedPaths:new Map,charge(t,n=1){let r=(e.get(t)??0)+n;if(e.set(t,r),r>P[t].cap)throw new D(t)}}}var Bp=[/\bgh[pousr]_[A-Za-z0-9]{20,}\b/g,/\bgithub_pat_[A-Za-z0-9_]{20,}\b/g,/\bglpat-[A-Za-z0-9_-]{20,}\b/g,/\bxox[abeprs]-[A-Za-z0-9-]{20,}\b/g,/\bnpm_[A-Za-z0-9_]{20,}\b/g,/\bpypi-[A-Za-z0-9_-]{20,}\b/g,/\b[rs]k_(?:live|test)_[A-Za-z0-9_]{20,}\b/g,/\bsk-[A-Za-z0-9_-]{20,}\b/g,/\bsk_[A-Za-z0-9]{20,}\b/g,/\bgsk_[A-Za-z0-9]{52,}\b/g,/\bxai-[A-Za-z0-9_-]{80,}\b/g,/\bpplx-[A-Za-z0-9_-]{20,}\b/g,/\bbastn_[A-Za-z0-9]{16,}\b/g,/\btgp_v1_[A-Za-z0-9_-]{43,}\b/g,/\bflp_[A-Za-z0-9]{10,}\b/g,/\bwfr_[A-Za-z0-9]{20,}\b/g,/\bfwp?_[A-Za-z0-9_-]{20,}\b/g,/\btp-[A-Za-z0-9_-]{20,}\b/g,/\bpsk-[A-Za-z0-9_-]{8,}-[A-Za-z0-9_-]{8,}\b/g,/\b[a-f0-9]{32}\.[A-Za-z0-9]{16}\b/g];function _t(e){return Hp(e.replace(/\b((?:DATABASE|POSTGRES|POSTGRESQL|MYSQL|MARIADB|REDIS|MONGO(?:DB)?|DB)_DSN|CONNECTION_STRING)=("[^"]*"|'[^']*'|[^\s]+(?:\s+[A-Z_][A-Z0-9_]*=[^\s]+)*)/gi,"$1=<redacted>").replace(/\b((?:DATABASE|POSTGRES|POSTGRESQL|MYSQL|MARIADB|REDIS|MONGO(?:DB)?|DB)_(?:URL|URI|CONNECTION_STRING))=("[^"]*"|'[^']*'|[^\s]+)/gi,"$1=<redacted>").replace(/\b([A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|PASS|KEY|CREDENTIALS)[A-Z0-9_]*)=("[^"]*"|'[^']*'|[^\s]+)/gi,"$1=<redacted>"))}function Hp(e){return Bp.reduce((t,n)=>t.replace(n,"<redacted>"),e.replace(/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/gi,"<redacted>").replace(/((?:(['"])(?:authorization|cookie|x-api-key|api-key)\2|(?:authorization|cookie|x-api-key|api-key))\s*:\s*)(['"])(?:\\[^\r\n]|(?!\3)[^\\\r\n])*\3/gi,"$1$3<redacted>$3").replace(/(['"]?\s*(?:authorization|cookie|x-api-key|api-key)\s*:(?!\s*(?:"<redacted>"|'<redacted>'))\s*)([^'"\r\n]+)(['"]?)/gi,"$1<redacted>$3").replace(/\b([a-z][a-z0-9+.-]*:\/\/)([^\s/:@]+):([^\s@/]+)@/gi,"$1<redacted>:<redacted>@").replace(/\b([a-z][a-z0-9+.-]*:\/\/)([^\s/@:]+)@/gi,"$1<redacted>@").replace(/(^|[\s?&;|])((?:x-amz-signature|x-goog-signature|sig|signature)=)(?:"[^"\r\n]*"|'[^'\r\n]*'|[^&#\s'"`;|<>()]*)/gi,"$1$2<redacted>").replace(/(^|\s)((?:-u|--user)(?:\s+|=))([^\s:]+):([^\s]+)/g,"$1$2<redacted>:<redacted>")).replace(/\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{6,}\.[A-Za-z0-9_-]{6,}\b/g,"<redacted>").replace(/\b(?:AKIA|ASIA)[A-Z0-9]{16}\b/g,"<redacted>")}var Up={hard_stop:"Do not retry this operation or attempt any workaround (other tools, flags, or paths). Report the block to the user and continue with the rest of the task.",use_alternative:"Do not retry the blocked form. Continue the task using the safer alternative described above.",scope_down:"Retry with a narrower, explicit target as described above. Escalate to the user if the broad operation is truly required.",manual_only:"If this operation is truly needed, ask the user for explicit permission and have them run the command manually.",stop_and_explain:"Do not brute-force variants. Simplify or restructure the command so it can be analyzed, or report the block to the user."};function $p(e){let t=e.maxLen??200,n=e.redact??((o)=>o),r=(o)=>o.length>t?`${o.slice(0,t)}...`:o;return["BLOCKED by CC Safety Net",`Reason: ${n(e.reason)}`,e.ruleId?`Rule: ${e.ruleId}`:void 0,e.toolName?`Tool: ${e.toolName}`:void 0,e.command?`Command: ${r(n(e.command))}`:void 0,e.segment&&e.segment!==e.command?`Segment: ${r(n(e.segment))}`:void 0,e.configWarning?`Config warning: ${n(e.configWarning)}`:void 0,Up[e.intent??"manual_only"]].filter((o)=>o!==void 0).join(`
3
+
4
+ `)}function Bi(e,t){if(e.decision.kind!=="deny")return;let n=t.includeEvidence?e.decision.evidence.find((r)=>r.kind==="command"):void 0;return{reason:e.decision.reason,ruleId:e.decision.ruleId,intent:e.decision.intent,command:n?.command,segment:n?.segment,toolName:t.toolName,...e.configFallback?{configWarning:e.configFallback.reason}:{}}}function Sn(e={}){return{reason:Kn,intent:"stop_and_explain",command:e.command,segment:e.segment??e.command,toolName:e.toolName}}function _l(e){return $p({...e,redact:_t})}function wl(e){return _t(e instanceof Error?e.message:String(e))}var _e=require("node:path");var jp=256,Yr=new Set(["CC_SAFETY_NET_HOME","CLAUDE_CONFIG_DIR","CODEX_HOME","COPILOT_HOME","GEMINI_CLI_HOME","GROK_HOME","HOME","KIMI_CODE_HOME","KIMI_SHARE_DIR","OPENCODE_CONFIG","OPENCODE_CONFIG_DIR","PI_CODING_AGENT_DIR","ProgramData","TMPDIR","XDG_CONFIG_HOME","XDG_DATA_HOME"]);function Me(e,t=process.platform){if(t!=="win32")return e;return e.replace(/^\/([A-Za-z])(?:\/|$)/,"$1:/")}function wt(e,t=process.platform){if(t!=="win32")return!1;return(e[0]==="/"||e[0]==="\\")&&(e[1]==="/"||e[1]==="\\")}function ji(e,t){return Hi(e,0,t)}function Hi(e,t,n){let r="",o=0;while(o<e.length){if(e[o]!=="$"){r+=e[o],o++;continue}if(e[o+1]==="{"){let s=Ui(e,o+2),a=Vp(e,o,t);if(a===null){if(Yr.has(s))throw new D("pathEnvironmentExpansion");r+=e.slice(o);break}let l=e.slice(o,a+1);r+=Kp(l,t,n),o=a+1;continue}let i=Ui(e,o+1);if(!i){r+="$",o++;continue}r+=$i(i,n)??`$${i}`,o+=i.length+1}return r}function Vp(e,t,n){let r=1;for(let o=t+2;o<e.length;o++){if(e[o]==="\\"){o++;continue}if(e[o]==="$"&&e[o+1]==="{"){if(r++,n+r>P.pathEnvironmentExpansion.cap)throw new D("pathEnvironmentExpansion");o++;continue}if(e[o]!=="}")continue;if(r--,r===0)return o}return null}function Kp(e,t,n){let r=e.slice(2,-1),o=Ui(r,0);if(!o)return e;let i=r.slice(o.length);if(!i)return $i(o,n)??e;let s=[":-",":+",":=",":?","-","+","=","?"].find((c)=>i.startsWith(c));if(!s){if(Yr.has(o))throw new D("pathEnvironmentExpansion");return e}if(!Yr.has(o))return e;if(s.endsWith("="))throw new D("pathEnvironmentExpansion");let a=$i(o,n),l=s.startsWith(":")?a!==null&&a!=="":a!==null;if(s.endsWith("?")&&!l)throw new D("pathEnvironmentExpansion");if(s.endsWith("-")||s.endsWith("?"))return l?a??"":Hi(i.slice(s.length),t+1,n);return l?Hi(i.slice(s.length),t+1,n):""}function Ui(e,t){if(!/[A-Za-z_]/.test(e[t]??""))return"";let n=t+1;while(/[A-Za-z0-9_]/.test(e[n]??""))n++;return e.slice(t,n)}function $i(e,t){if(!Yr.has(e))return null;if(e==="HOME")return t.env.get("HOME")??t.home;return t.env.get(e)??null}function N(e,t,n){if(!e)return e;let r=n.resolvedPaths.get(e);if(r!==void 0)return r;let o=[],i=e;while(!0){Pl(n,i);let s=t.realpath(i);if(s!==null)return Al(n,e,s,o);let a=_e.dirname(i);if(a===i||o.length>=jp)return Al(n,e,i,o);o.push(_e.basename(i)),i=a}}function Al(e,t,n,r){let o=r.length===0?n:_e.join(n,...r.reverse());return e.resolvedPaths.set(t,o),o}function qp(e,t,n){let r=n.resolvedPaths.get(e);if(r!==void 0)return r;Pl(n,e);let o=t.realpath(e);if(o!==null)n.resolvedPaths.set(e,o);return o}function Pl(e,t){e.charge("realpathAttempts"),e.charge("processedCandidateBytes",Buffer.byteLength(t))}function ge(e,t,n,r){let o=Il(e,t,n);if(!o)return"";return N(o,n.paths,r).replace(/\\/g,"/")}function Tl(e,t,n,r,o){let i=Il(e,t,n);if(!i)return null;if(o(_e.basename(i)))return N(i,n.paths,r).replace(/\\/g,"/");let s=qp(i,n.paths,r);return s===null?null:s.replace(/\\/g,"/")}function Il(e,t,n){let r=n.home,o=ji(e.trim(),n).replace(/\\/g,"/");if(!o)return"";let i=o==="~"?r:o.startsWith("~/")?_e.resolve(r,o.slice(2)):o,s=Me(i);return _e.normalize(_e.isAbsolute(s)?s:_e.resolve(t,s))}var Ll=require("node:util"),Yp=new Set(["applypatch","patch"]),Zp=new Set(["create","edit","listdir","listpermissions","ls","multiedit","multireplacefilecontent","notebookedit","read","readfile","readurlcontent","replacefilecontent","searchweb","strreplaceeditor","view","viewfile","write","writefile","writetofile"]),Xp=new Set(["grep","grepsearch","rg"]),Jp=new Set(["find","findbyname","glob"]),Qp=new Set(["find","findbyname","glob","grep","grepsearch","listdir","listpermissions","ls","read","readfile","readurlcontent","searchweb","view","viewfile"]),eg=new Set(["command","diff","input","patch","patchtext"]),kl=new TextEncoder,tg=new TextDecoder,ng=/\s/,rg=64;class Se extends Error{name="ToolInputLimitError";constructor(){super("tool input traversal limit exceeded")}}var qn=Object.freeze({maxDepth:64,maxNodes:1e4,maxKeys:1e4,maxStringBytes:1048576,maxAggregateStringBytes:4194304});function Wl(e){return e.replace(/[-_\s]/g,"").toLowerCase()}function Xr(e){return Qp.has(Wl(e))}function Fl(e){let t=Wl(e);if(Yp.has(t))return"patch";if(Xp.has(t))return"grep";if(Jp.has(t))return"glob";if(Zp.has(t))return"path";return"unknown"}function At(e){if(!e||typeof e!=="object")return;Ul(e);let t=Object.getOwnPropertyDescriptor(e,"command");if(!t){if("command"in e)at();return}if(t.get||t.set)at();let n=t.value;return typeof n==="string"&&n!==""?n:void 0}function Jr(e,t){return Gl(e,t,{nodes:0,keys:0,stringBytes:0,ancestors:new Set},1)}function Gl(e,t,n,r){let o=Hl(e,n,r);if(!o)return[];let i=o.entries.flatMap(([s,a])=>{let l=Gl(a,t,n,r+1);return typeof a==="string"&&t.has(zl(s))?[a]:l});return n.ancestors.delete(o.object),i}function zl(e){return e.replace(/-/g,"_").toLowerCase()}function Qr(e){return Bl(e,!0,{nodes:0,keys:0,stringBytes:0,ancestors:new Set},1).flatMap(ig)}function Bl(e,t,n,r){let o=Hl(e,n,r);if(typeof e==="string")return t?[e]:[];if(!o)return[];let i=o.entries.flatMap(([s,a])=>Bl(a,o.array?t:eg.has(zl(s)),n,r+1));return n.ancestors.delete(o.object),i}function og(e,t,n){if(t.nodes++,e!==null&&typeof e==="object"&&n>qn.maxDepth||t.nodes>qn.maxNodes)at();if(typeof e!=="string")return;let r=Buffer.byteLength(e);if(t.stringBytes+=r,r>qn.maxStringBytes||t.stringBytes>qn.maxAggregateStringBytes)at()}function Hl(e,t,n){if(og(e,t,n),!e||typeof e!=="object")return null;let r=Ul(e);if(t.ancestors.has(e))at();let o=Reflect.ownKeys(e);if(t.keys+=o.length,t.keys>qn.maxKeys)at();let i=o.flatMap((s)=>{let a=Object.getOwnPropertyDescriptor(e,s);if(!a||a.get||a.set)at();return typeof s==="string"&&a.enumerable?[[s,a.value]]:[]});return t.ancestors.add(e),{object:e,array:r,entries:i}}function Ul(e){if(Ll.types.isProxy(e))at();let t=Array.isArray(e),n=Object.getPrototypeOf(e);if(t&&n!==Array.prototype||!t&&n!==Object.prototype&&n!==null)at();return t}function at(){throw new Se}function ig(e){let t=[],n=e.split(/\r?\n/),r=!1,o=!1,i=null,s=null,a=()=>{o=!1,i=null,s=null};for(let l=0;l<n.length;l++){let c=n[l]??"";if(c==="*** Begin Patch"){r=!0,a();continue}if(c==="*** End Patch"){r=!1,a();continue}if(c.startsWith("@@")){let u=sg(c);if(o=!0,i=u?.oldLines??null,s=u?.newLines??null,i===0&&s===0)a();continue}if(o&&i!==null&&s!==null){let u=c.startsWith(" ")||c.startsWith("-")?1:0,m=c.startsWith(" ")||c.startsWith("+")?1:0;if(i=Math.max(0,i-u),s=Math.max(0,s-m),i===0&&s===0)a();continue}if(c.startsWith("*** ")){a(),t.push(...Vi(c));continue}if(o)continue;if(c.startsWith("diff --git ")){t.push(...Vi(c));continue}if(c.startsWith("--- ")){let u=n[l+1]??"";if(!u.startsWith("+++ "))continue;t.push(...qi(Zr(c.slice(4),!0),Zr(u.slice(4),!0))),l++;continue}if(!r)t.push(...Vi(c))}return t}function sg(e){let t=/^@@ -\d+(?:,(\d+))? \+\d+(?:,(\d+))? @@/.exec(e);if(!t)return null;return{oldLines:Number(t[1]??1),newLines:Number(t[2]??1)}}function Vi(e){let t=/^\*\*\* (?:Add|Update|Delete) File: (.+)$/.exec(e);if(t?.[1])return Nl(t[1]);let n=/^\*\*\* Move to: (.+)$/.exec(e);if(n?.[1])return Nl(n[1]);if(e.startsWith("diff --git "))return ag(e.slice(11));let r=/^--- (.+)$/.exec(e);if(r?.[1])return Dl(r[1]);let o=/^\+\+\+ (.+)$/.exec(e);if(o?.[1])return Dl(o[1]);let i=/^(?:rename|copy) (?:from|to) (.+)$/.exec(e);if(i?.[1])return pg(i[1]);return[]}function ag(e){let t=lg(e);if(t.length===2&&t[0]&&t[1])return qi(t[0],t[1]);let n=cg(e);return n?qi(e.slice(n.oldStart,n.oldEnd),e.slice(n.newStart,n.newEnd)):[]}function lg(e){let t=[],n=0;while(n<e.length&&t.length<2){while(jt(e[n]))n++;if(n>=e.length)break;let r=e[n]==='"'||e[n]==="'"?e[n]:void 0;if(!r){let i=n;while(n<e.length&&!jt(e[n]))n++;t.push(e.slice(i,n));continue}let o=$l(e,n,r);if(!o)return[];t.push(o.value),n=o.end}while(jt(e[n]))n++;return n===e.length?t:[]}function cg(e){let t=0;while(t<e.length&&jt(e[t]))t++;let n=e.length;while(n>t&&jt(e[n-1]))n--;let r=0,o=t;while(o<n){if(!jt(e[o])){o++;continue}let i=o;while(o<n&&jt(e[o]))o++;if(i===t||o===n)continue;if(r++,r>rg)at();if(ug(e,t,i,o,n))return{oldStart:t,oldEnd:i,newStart:o,newEnd:n}}return null}function ug(e,t,n,r,o){if(Ki(e,t,n,r,o))return!0;let i=Ol(e,"/",t,n),s=Ol(e,"/",r,o);if(i<=t||s<=r)return!1;if(Ki(e,t,i,r,s))return!1;return Ki(e,i+1,n,s+1,o)}function Ki(e,t,n,r,o){if(n-t!==o-r)return!1;for(let i=0;i<n-t;i++)if(e[t+i]!==e[r+i])return!1;return!0}function Ol(e,t,n,r){for(let o=n;o<r;o++)if(e[o]===t)return o;return-1}function jt(e){return e!==void 0&&ng.test(e)}function $l(e,t,n){let r=[],o=t+1;while(o<e.length){let i=String.fromCodePoint(e.codePointAt(o)??0);if(i===n)return{value:tg.decode(Uint8Array.from(r)),end:o+1};if(i!=="\\"||n==="'"){r.push(...kl.encode(i)),o+=i.length;continue}let s=e.slice(o+1),a=/^[0-7]{1,3}/.exec(s)?.[0];if(a){r.push(Number.parseInt(a,8)),o+=a.length+1;continue}r.push(...kl.encode(dg(s[0]??""))),o+=2}return null}function dg(e){return{a:"\x07",b:"\b",f:"\f",n:`
5
+ `,r:"\r",t:"\t",v:"\v"}[e]??e}function mg(e){return Yn(gg(e))}function qi(e,t){if(e==="/dev/null")return Ml(t);if(t==="/dev/null")return Ml(e);if(e.startsWith("a/")&&t.startsWith("b/"))return[e.slice(2),t.slice(2)].flatMap(Yn);let n=fg(e,t)??(e===t?jl(e):null);return[e,t,...n?[n]:[]].flatMap(Yn)}function Ml(e){let t=jl(e);return[e,...t?[t]:[]].flatMap(Yn)}function jl(e){let t=e.indexOf("/");return t>0&&t<e.length-1?e.slice(t+1):null}function fg(e,t){let n=e.indexOf("/"),r=t.indexOf("/");if(n<1||r<1)return null;if(e.slice(0,n)===t.slice(0,r))return null;let o=e.slice(n+1);return o===t.slice(r+1)?o:null}function Dl(e){return mg(Zr(e,!0))}function pg(e){return Yn(Zr(e,!1))}function Zr(e,t){let n=e.trim(),r=n[0]==='"'||n[0]==="'"?n[0]:void 0;if(r){let o=$l(n,0,r);if(o&&(t||n.slice(o.end).trim()===""))return o.value}return t?n.split("\t",1)[0]?.trim()??"":n}function gg(e){return e.startsWith("a/")||e.startsWith("b/")?e.slice(2):e}function Yn(e){return e===""||e==="/dev/null"?[]:[e]}function Nl(e){let t=e.split("\t",1)[0]?.trim().replace(/^['"]|['"]$/g,"")??"";return t===""||t==="/dev/null"?[]:[t]}var mt=require("node:path");function ft(e,t,n){if(wt(e))return;let r=t.flatMap((i)=>Yi(i,n));if(!r[0])return;let o=Yi(mt.isAbsolute(e)?e:mt.resolve(r[0],e),n)[0];if(!o)return;return r.some((i)=>Zi(o,i))?o:void 0}function lt(e,t){return e.flatMap((n)=>Yi(n,t))[0]}function Yi(e,t){let n=t.realpath(e);if(n===null)return[];return t.isDirectory(n)?[n]:[]}function Zi(e,t){let n=mt.relative(t,e);return n===""||n!==".."&&!n.startsWith(`..${mt.sep}`)&&!mt.isAbsolute(n)}var hg=8388608;async function Vl(e){let t=[],n=0;for await(let r of e){let o=typeof r==="string"?Buffer.from(r,"utf-8"):Buffer.from(r.buffer,r.byteOffset,r.byteLength);if(n+=o.byteLength,n>hg)throw yg(e),Error("hook input byte limit exceeded");t.push(o)}return Buffer.concat(t,n).toString("utf-8")}function yg(e){let t=e.destroy??e.cancel;if(!t)return;try{Promise.resolve(t.call(e)).catch(()=>{})}catch{}}function eo(e,t,n){try{return JSON.parse(e)}catch{t({reason:n});return}}function ae(e,t){let n=t.get(e);return n?{kind:"command",shell:n}:{kind:Fl(e)}}function Pt(e,t,n,r,o,i){let s=e===void 0?i:e,a=typeof s==="string"&&s.trim()!==""?lt([s],o):void 0;if(a)return{configCwd:a,executionCwd:a};return ne(r,t,n,Cg(s)),null}function ne(e,t,n,r){let o;try{o=At(t)}catch(i){if(!(i instanceof Se))throw i}e(Sn({command:o,segment:r,toolName:n}))}function Cg(e){return typeof e==="string"?e:void 0}var vn=require("node:fs"),no=require("node:os");var Jl=require("node:fs"),Ql=require("node:path");var ql=require("node:child_process"),L=require("node:fs"),U=require("node:path"),Sg=["/usr/bin/git","/usr/local/bin/git","/opt/homebrew/bin/git","C:\\Program Files\\Git\\cmd\\git.exe","C:\\Program Files\\Git\\bin\\git.exe"],bg=5000;function Yl(e,t=Wg(),n=bg){let r=vg(e);if(r===null||!Eg(r))return null;let o=Ng(r,t,n);return o===null?null:{recursiveSubmodules:o}}function vg(e){try{let t=L.realpathSync(U.resolve(e));return L.statSync(t).isDirectory()?t:null}catch{return null}}function Eg(e){let t=Dg(e);if(!t)return!1;try{let n=L.lstatSync(t);if(n.isSymbolicLink()||!n.isFile())return!1;let r=Xi(t);if(!r?.commonDir)return!1;if(!_g(r.gitDir,t))return!1;return wg(r.gitDir,U.dirname(t))}catch{return!1}}function Xi(e){try{let t=Rg(e);if(!t)return null;let n=L.realpathSync(U.isAbsolute(t)?t:U.resolve(U.dirname(e),t));if(!L.statSync(n).isDirectory())return null;return{gitDir:n,commonDir:xg(n)}}catch{return null}}function Rg(e){let t=L.readFileSync(e,"utf-8").split(/\r?\n/,1)[0]?.trim()??"";if(!t.startsWith("gitdir:"))return null;return t.slice(7).trim()||null}function xg(e){try{let t=L.readFileSync(U.join(e,"commondir"),"utf-8").split(/\r?\n/,1)[0]?.trim();if(!t)return null;let n=L.realpathSync(U.isAbsolute(t)?t:U.resolve(e,t));return L.statSync(n).isDirectory()?n:null}catch{return null}}function _g(e,t){let n=Ag(e);return n===null?!1:Zl(e,n,t)}function wg(e,t){let n=Pg(e);return n===null?!0:Zl(e,n,t)}function Ag(e){let t=U.join(e,"gitdir");if(!L.existsSync(t))return null;let n=L.readFileSync(t,"utf-8").split(/\r?\n/,1)[0]?.trim()??"";return n===""?null:n}function Pg(e){let t=U.join(e,"config.worktree");return L.existsSync(t)?Ig(t):null}function Zl(e,t,n){try{return Tg(U.isAbsolute(t)?t:U.resolve(e,t),n)}catch{return!1}}function Tg(e,t){try{let n=L.statSync(e),r=L.statSync(t);if(n.ino!==0&&r.ino!==0&&n.dev===r.dev&&n.ino===r.ino)return!0}catch{}return Kl(L.realpathSync.native(e))===Kl(L.realpathSync.native(t))}function Kl(e){let t=e.replace(/^\\\\\?\\UNC\\/i,"//").replace(/^\\\\\?\\/i,"").replace(/\\/g,"/"),n=t.length>1&&t.endsWith("/")?t.slice(0,-1):t;return process.platform==="win32"?n.toLowerCase():n}function Ig(e){let t=L.readFileSync(e,"utf-8"),n=!1,r=null;for(let o of t.split(/\r?\n/)){let i=o.trim();if(i===""||i.startsWith("#")||i.startsWith(";"))continue;if(i.startsWith("[")){n=/^\[core\]$/i.test(i);continue}if(!n)continue;let s=i.match(/^worktree\s*=\s*(.*)$/i);if(s)r=kg(s[1]??"")}return r}function kg(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;return Mg(t.slice(1,-1))}var Og={"\\":"\\",'"':'"',n:`
6
+ `,t:"\t",b:"\b"};function Mg(e){return e.replace(/\\(.?)/gs,(t,n)=>n===""?t:Og[n]??t)}function Dg(e){try{return to(L.realpathSync(e))}catch{return null}}function to(e){let t=e;while(!0){let n=U.join(t,".git");if(L.existsSync(n))return n;let r=U.dirname(t);if(r===t)return null;t=r}}function Ng(e,t,n){let r=Lg(e);if(r===null||r)return!0;if(t===null)return!0;let o=ql.spawnSync(t,["config","--get","submodule.recurse"],{cwd:e,encoding:"utf8",env:Fg(process.env),stdio:["ignore","pipe","ignore"],timeout:n});if(o.error!==void 0||o.status!==0&&o.status!==1)return null;return o.status===0&&Xl(o.stdout.trim())}function Lg(e){let t=Gg(e);if(t===null)return null;return t.filter((n)=>L.existsSync(n)).some((n)=>Hg(n))}function Wg(){return Sg.find((e)=>L.existsSync(e))??null}function Zn(e){return e==="GIT_CONFIG_COUNT"||e==="GIT_CONFIG_PARAMETERS"||/^GIT_CONFIG_(KEY|VALUE)_\d+$/.test(e)}function Fg(e){return Object.fromEntries(Object.entries(e).filter(([t])=>!Zn(t)))}function Gg(e){let t=to(e);if(t===null)return null;let n=zg(t);if(n===null)return null;let r=Bg(n);if(r===null)return null;return[U.join(r,"config"),U.join(n,"config.worktree")]}function zg(e){try{let n=L.readFileSync(e,"utf-8").split(/\r?\n/,1)[0]?.trim()??"";if(!n.startsWith("gitdir:"))return e;let r=n.slice(7).trim();if(r==="")return null;return U.isAbsolute(r)?r:U.resolve(U.dirname(e),r)}catch{return null}}function Bg(e){let t=U.join(e,"commondir");if(!L.existsSync(t))return e;try{let n=L.readFileSync(t,"utf-8").split(/\r?\n/,1)[0]?.trim()??"";if(n==="")return null;return U.isAbsolute(n)?n:U.resolve(e,n)}catch{return null}}function Hg(e){let t;try{t=L.readFileSync(e,"utf-8")}catch{return!0}let n="",r=!1;for(let o of t.split(/\r?\n/)){let i=o.trim();if(i===""||i.startsWith("#")||i.startsWith(";"))continue;let s=i.match(/^\[([^\]]+)\]$/);if(s){n=s[1]?.trim().toLowerCase()??"";continue}let a=i.indexOf("="),l=(a===-1?i:i.slice(0,a)).trim().toLowerCase(),c=a===-1?"true":i.slice(a+1).trim();if(Ug(n)&&l==="path")return!0;if(n==="submodule"&&l==="recurse")r=Xl(c)}return r}function Ug(e){return e==="include"||e.startsWith("includeif ")}function Xl(e){let t=e.toLowerCase();return t!=="false"&&t!=="no"&&t!=="off"&&t!=="0"}function ec(e,t){if(e==="")return null;let n=me(),r=to(ge(e,e,t,n)),o=r?$g(r,e,t,n):null;if(!o)return null;return Object.freeze({entries:Object.freeze([o.entry]),markerFiles:Object.freeze(o.markerFile?[o.markerFile]:[]),directories:Object.freeze(o.directories),hooksDirectories:Object.freeze(o.hooksDirectories)})}function $g(e,t,n,r){try{let o=ge(e,t,n,r),i=Jl.statSync(e),s=i.isFile()?o:null,a=i.isFile()?Xi(e):null,l=(i.isDirectory()?[o]:[a?.gitDir,a?.commonDir]).flatMap((u)=>u?[bn(ge(u,t,n,r))]:[]),c=[...new Set(i.isDirectory()?[bn(e.replace(/\\/g,"/")),...l]:l)];return{entry:bn(o),markerFile:s?bn(s):null,directories:c,hooksDirectories:[...new Set(c.flatMap((u)=>{let m=bn(Ql.join(u,"hooks").replace(/\\/g,"/"));return[m,bn(ge(m,t,n,r))]}))]}}catch{return null}}function bn(e){return process.platform==="win32"?e.toLowerCase():e}var jg={realpath:(e)=>{try{return vn.realpathSync(e)}catch{return null}},entryKind:(e)=>{let t=vn.lstatSync(e,{throwIfNoEntry:!1});if(!t)return"missing";return t.isSymbolicLink()?"symlink":"present"},isDirectory:(e)=>{try{return vn.statSync(e).isDirectory()}catch{return!1}}};function nc(){return Vg({env:new Map(Object.entries(process.env).flatMap(([e,t])=>t===void 0?[]:[[e,t]])),home:Me(process.env.HOME||no.homedir()),tmpdir:no.tmpdir(),paths:jg})}function Vg(e,t={}){let n=new Map,r=new Map,o={...e,gitMetadata:(i)=>tc(n,i,()=>ec(i,o)),worktreeFacts:(i)=>tc(r,i,()=>Yl(i)),...t};return o}function tc(e,t,n){let r=e.get(t);if(r!==void 0)return r;let o=n();return e.set(t,o),o}var En=["fail_closed","paranoid_rm","paranoid_interpreters"],ro={standard:{fail_closed:!1,paranoid_rm:!1,paranoid_interpreters:!1},strict:{fail_closed:!0,paranoid_rm:!1,paranoid_interpreters:!1},paranoid:{fail_closed:!0,paranoid_rm:!0,paranoid_interpreters:!0}};var le={level:{name:"CC_SAFETY_NET_LEVEL"},strict:{name:"CC_SAFETY_NET_STRICT",legacyName:"SAFETY_NET_STRICT"},paranoid:{name:"CC_SAFETY_NET_PARANOID",legacyName:"SAFETY_NET_PARANOID"},paranoidRm:{name:"CC_SAFETY_NET_PARANOID_RM",legacyName:"SAFETY_NET_PARANOID_RM"},paranoidInterpreters:{name:"CC_SAFETY_NET_PARANOID_INTERPRETERS",legacyName:"SAFETY_NET_PARANOID_INTERPRETERS"},worktree:{name:"CC_SAFETY_NET_WORKTREE",legacyName:"SAFETY_NET_WORKTREE"},debug:{name:"CC_SAFETY_NET_DEBUG"},auditScope:{name:"CC_SAFETY_NET_AUDIT_SCOPE"}},oo=["standard","strict","paranoid"];function Kg(e,t){if(!t)return e;return oo.indexOf(t)>oo.indexOf(e)?t:e}function qg(e){let t=ts(le.level,e);if(t===void 0||t==="")return;if(oo.includes(t))return t;console.error(`CC Safety Net: ignored invalid ${le.level.name}=${JSON.stringify(t.slice(0,40))}. Use ${oo.join(", ")}.`);return}function Yg(e){if(e===void 0||e==="all")return"all";if(e==="blocked")return"blocked";return"invalid"}function rc(e){return Yg(ts(le.auditScope,e))==="all"}function Qi(e){if(e.failClosed&&e.paranoidRm&&e.paranoidInterpreters)return"paranoid";if(e.failClosed&&!e.paranoidRm&&!e.paranoidInterpreters)return"strict";if(!e.failClosed&&!e.paranoidRm&&!e.paranoidInterpreters)return"standard";return"custom"}function es(e={},t){let n=e.safety?.level??"standard",r=qg(t),o=Kg(n,r),i=ro[o],s={failClosed:i.fail_closed,paranoidRm:i.paranoid_rm,paranoidInterpreters:i.paranoid_interpreters},a={failClosed:o===n?"preset":"environment",paranoidRm:o===n?"preset":"environment",paranoidInterpreters:o===n?"preset":"environment"},l={failClosed:[`policy safety.level=${n}`],paranoidRm:[`policy safety.level=${n}`],paranoidInterpreters:[`policy safety.level=${n}`]};if(o!==n)l.failClosed.push(`env ${le.level.name}=${r}`),l.paranoidRm.push(`env ${le.level.name}=${r}`),l.paranoidInterpreters.push(`env ${le.level.name}=${r}`);if(e.safety?.overrides?.failClosed!==void 0)s.failClosed=e.safety.overrides.failClosed,a.failClosed="capability_override",l.failClosed.push("policy safety.overrides.fail_closed");if(e.safety?.overrides?.paranoidRm!==void 0)s.paranoidRm=e.safety.overrides.paranoidRm,a.paranoidRm="capability_override",l.paranoidRm.push("policy safety.overrides.paranoid_rm");if(e.safety?.overrides?.paranoidInterpreters!==void 0)s.paranoidInterpreters=e.safety.overrides.paranoidInterpreters,a.paranoidInterpreters="capability_override",l.paranoidInterpreters.push("policy safety.overrides.paranoid_interpreters");if(Vt(le.strict,t))s.failClosed=!0,a.failClosed="environment",l.failClosed.push(`env ${le.strict.name}`);if(Vt(le.paranoid,t))s.paranoidRm=!0,s.paranoidInterpreters=!0,a.paranoidRm="environment",a.paranoidInterpreters="environment",l.paranoidRm.push(`env ${le.paranoid.name}`),l.paranoidInterpreters.push(`env ${le.paranoid.name}`);if(Vt(le.paranoidRm,t))s.paranoidRm=!0,a.paranoidRm="environment",l.paranoidRm.push(`env ${le.paranoidRm.name}`);if(Vt(le.paranoidInterpreters,t))s.paranoidInterpreters=!0,a.paranoidInterpreters="environment",l.paranoidInterpreters.push(`env ${le.paranoidInterpreters.name}`);let c=!!e.worktreeMode||Vt(le.worktree,t);return{strict:s.failClosed,paranoidRm:s.paranoidRm,paranoidInterpreters:s.paranoidInterpreters,worktreeMode:c,effectiveLevel:Qi(s),capabilities:{fail_closed:{enabled:s.failClosed,source:a.failClosed,sources:l.failClosed},paranoid_rm:{enabled:s.paranoidRm,source:a.paranoidRm,sources:l.paranoidRm},paranoid_interpreters:{enabled:s.paranoidInterpreters,source:a.paranoidInterpreters,sources:l.paranoidInterpreters}}}}function Vt(e,t){let n=typeof e==="string"?Ji(e,t):ts(e,t);return n==="1"||n?.toLowerCase()==="true"}function Ji(e,t){return t.get(e)}function ts(e,t){let n=Ji(e.name,t);if(n!==void 0)return n;if(e.legacyName)return Ji(e.legacyName,t);return}function Xn(e,t,n,r,o){if(n.kind!=="command")return{toolName:e,input:t,route:n,context:r};return{toolName:e,input:t,route:n,context:r,command:o}}var tr=require("node:path");var F=require("node:fs"),Q=require("node:path");function ns(){let e=()=>Math.floor(Math.random()*4294967296).toString(16).padStart(8,"0");return`${e()}${e()}`}var Zg=Symbol("PolicyFilesystemScope"),Xg=Symbol("PolicyFilesystemTarget"),Jg=F.constants.O_NOFOLLOW??0;class he extends Error{name="PolicyFilesystemError";constructor(e){super(`Unable to access ${e} filesystem safely.`)}}function Kt(e,t){return{[Zg]:!0,root:Q.resolve(e),label:t}}function oc(e,t){let n=Q.normalize(t);if(t===""||Q.isAbsolute(t)||n===".."||n.startsWith(`..${Q.sep}`))throw new he(e.label);return{[Xg]:!0,scope:e,relativePath:n,path:Q.join(e.root,n)}}function Jn(e,t){return oc(e,Q.relative(e.root,Q.resolve(t)))}function ic(e,t="rules policy"){let n=Q.resolve(e),r=Q.parse(n).dir;return oc(Kt(r,t),Q.relative(r,n))}function so(e){return ac(e.scope.label,()=>{if(!io(e))return null;let t=F.openSync(e.path,F.constants.O_RDONLY|Jg);return Qg(t,()=>{let n=F.fstatSync(t);if(!n.isFile())throw new he(e.scope.label);let r=F.readFileSync(t,"utf-8"),o=F.lstatSync(e.path);if(!o.isFile()||o.isSymbolicLink()||n.dev!==o.dev||n.ino!==o.ino)throw new he(e.scope.label);return io(e),r})})}function sc(e,t){if(e.path===t.path)return!0;return ac(e.scope.label,()=>{if(!io(e)||!io(t))return!1;return F.realpathSync(e.path)===F.realpathSync(t.path)})}function ac(e,t,n){try{return t()}catch(r){if(n?.(),r instanceof he)throw r;throw new he(e)}}function Qg(e,t){try{return t()}finally{F.closeSync(e)}}function io(e,t="file"){let n=eh(e.scope);if(!n)return!1;let r=e.relativePath.split(Q.sep);for(let o of r.keys()){let i=Q.join(e.scope.root,...r.slice(0,o+1)),s=F.lstatSync(i,{throwIfNoEntry:!1});if(!s)return!1;if(s.isSymbolicLink())throw new he(e.scope.label);if(o<r.length-1&&!s.isDirectory())throw new he(e.scope.label);if(o===r.length-1&&(t==="file"?!s.isFile():!s.isDirectory()))throw new he(e.scope.label);th(n,F.realpathSync(i),e.scope.label)}return!0}function eh(e){if(!F.lstatSync(e.root,{throwIfNoEntry:!1}))return null;if(!F.statSync(e.root).isDirectory())throw new he(e.label);return F.realpathSync(e.root)}function th(e,t,n){let r=Q.relative(e,t);if(r===".."||r.startsWith(`..${Q.sep}`)||Q.isAbsolute(r))throw new he(n)}var W=require("node:path");var qt=/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/,lc="rulebook.json",cc=".cc-safety-net/rules";var uc=/^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)#(.+)$/;var nh=/^[A-Za-z0-9._-]+(?:\/[A-Za-z0-9._-]+)*$/,rh=".cc-safety-net/rules".replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),oh="rulebook.json".replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),rP=new RegExp(`^${rh}/(${qt.source.slice(1,-1)})/${oh}$`);function ih(e){return`.cc-safety-net/rules/${e}/rulebook.json`}function dc(e){if(ao(e))try{return rs(e),null}catch(t){return t instanceof Error?t.message:String(t)}return qt.test(e)?null:`Local rulebook sources must be bare names matching ${qt}: ${e}`}function rs(e){if(e.startsWith("github:"))throw Error(`Invalid rulebook source: ${e}`);let t=e.match(uc);if(!t?.[1]||!t[2]||!t[3])throw Error(`Invalid GitHub rulebook source: ${e}`);let n=t[3].lastIndexOf("/");if(n<1)throw Error(`GitHub rulebook sources must be owner/repo#ref/<rulebook-name>: ${e}`);let r=t[3].slice(0,n),o=t[3].slice(n+1);if(!r||!nh.test(r))throw Error(`GitHub rulebook refs must use valid path segments: ${e}`);if(!o||!qt.test(o))throw Error(`GitHub rulebook sources must be owner/repo#ref/<rulebook-name>: ${e}`);return{owner:t[1],repo:t[2],ref:r,path:ih(o),name:o}}function ao(e){return uc.test(e)}var mc="rule.json",lo="policy.json",fc=".cc-safety-net",sh="rules",ah="CC_SAFETY_NET_HOME",pc="`cc-safety-net rule update`";function lh(e){return W.resolve(e,cc)}function ch(e){return W.join(lh(e),mc)}function Qn(e){return W.join(W.resolve(e),fc,lo)}function os(e,t={}){return t.userConfigDir??(t.userConfigPath?W.dirname(t.userConfigPath):W.join(uh(e),sh))}function uh(e){let t=e.env.get(ah);return t?W.resolve(Me(t)):W.join(e.home,fc)}function dh(e,t={}){return W.join(os(e,t),mc)}function Rn(e,t={}){return W.join(W.dirname(os(e,t)),lo)}function gc(e,t){let n=t.userConfigPath??dh(e,t),r=t.projectConfigPath??ch(t.cwd),o=mh(e,t),i=fh(r,t.cwd);return{userConfigPath:n,projectConfigPath:r,userScope:o,projectScope:i,userConfigTarget:Jn(o,n),projectConfigTarget:Jn(i,r)}}function mh(e,t){let n=t.userConfigPath?W.dirname(W.dirname(W.resolve(t.userConfigPath))):W.dirname(W.resolve(t.userConfigDir??os(e,t)));return Kt(n,"user policy")}function fh(e,t){let n=W.resolve(t),r=W.resolve(e),o=W.relative(n,r);if(o!==".."&&!o.startsWith(`..${W.sep}`)&&!W.isAbsolute(o))return Kt(n,"project policy");return Kt(W.dirname(W.dirname(r)),"project policy")}function hc(e,t){return W.join(e,t,lc)}var be=new Set(["-c","-C","--git-dir","--work-tree","--namespace","--super-prefix","--config-env"]),Tt=/^[a-zA-Z][a-zA-Z0-9_-]*$/,It=256,ie=new Set(["bash","sh","zsh","ksh","dash","fish","csh","tcsh"]),yc=new Set(["python","python3","python2","node","ruby","perl"]),co=/^python(?:[23](?:\.\d+)*)?$/,Be=new Set(["awk","gawk","nawk","mawk"]),uo=new Set(["echo","printf","cat","head","tail","less","more","grep","rg","ag","ack","sed","awk","cut","tr","sort","uniq","wc","tee","man","help","info","type","which","whereis","whatis","apropos","file","stat","ls","ll","dir","tree","pwd","date","cal","uptime","whoami","id","groups","hostname","uname","env","printenv","set","export","alias","history","jobs","fg","bg","test","true","false","read","return","exit","break","continue","shift","wait","trap","basename","dirname","realpath","readlink","md5sum","sha256sum","base64","xxd","od","hexdump","strings","diff","cmp","comm","join","paste","column","fmt","fold","nl","pr","expand","unexpand","rev","tac","shuf","seq","yes","sleep","logger","write","wall","mesg","notify-send"]);var Cc="Rulebook exceeds CC Safety Net's safe validation limits.",Sc="Additional rulebook validation errors were omitted.",Ke=Object.freeze({maxAllowedCommands:1024,maxRules:1024,maxTests:2048,maxBlockArgsPerRule:1024,maxTotalBlockArgs:16384,maxStringCodeUnits:1048576,maxAggregateStringCodeUnits:4194304,maxFixtureCommandCodeUnits:131072,maxValidationErrors:64});function bc(e){if(is(e.allowed_commands,Ke.maxAllowedCommands)||is(e.rules,Ke.maxRules)||is(e.tests,Ke.maxTests))return!1;let{maxAggregateStringCodeUnits:t,maxTotalBlockArgs:n}=Ke,r=(o,i=!1)=>{if(typeof o!=="string")return!0;if(o.length>Ke.maxStringCodeUnits||i&&o.length>Ke.maxFixtureCommandCodeUnits||o.length>t)return!1;return t-=o.length,!0};if(!r(e.name)||!r(e.version)||!r(e.description)||!r(e.author)||!r(e.migrated_from))return!1;if(Array.isArray(e.allowed_commands)){for(let o of e.allowed_commands)if(!r(o))return!1}if(Array.isArray(e.rules))for(let o of e.rules){if(!o||typeof o!=="object")continue;let i=o;if(!r(i.name)||!r(i.command)||!r(i.subcommand)||!r(i.reason)||!r(i.intent))return!1;let s=i.match&&typeof i.match==="object"?i.match:{};for(let a of[i.block_args,s.command_path,s.any_args,s.exclude_args]){if(!Array.isArray(a))continue;if(a.length>Ke.maxBlockArgsPerRule||a.length>n)return!1;n-=a.length;for(let l of a)if(!r(l))return!1}}if(Array.isArray(e.tests))for(let o of e.tests){if(!o||typeof o!=="object")continue;let i=o;if(!r(i.command,!0)||!r(i.expect)||!r(i.rule))return!1}return!0}function is(e,t){return Array.isArray(e)&&e.length>t}var ss=Object.freeze(["hard_stop","use_alternative","scope_down","manual_only","stop_and_explain"]);var as=64,ls="Rule config exceeds CC Safety Net's safe source limit.";function B(e){return I(e).toLowerCase()}function I(e){return e.split(/[\\/]/).pop()?.replace(/\.exe$/i,"")??e}function we(e,t){let n=new Set,r=!1;for(let o of e){if(o==="--"){r=!0;continue}if(r)continue;if(o.startsWith("-")&&!o.startsWith("--")&&o.length>1)for(let i=1;i<o.length;i++){let s=o[i];if(!s||!/[a-zA-Z]/.test(s))break;let a=`-${s}`;if(n.add(a),t?.shortOptsWithValue?.has(a))break}}return n}var ph=new Map([["bash",new Set(["O","o"])],["dash",new Set(["o"])],["ksh",new Set(["o"])],["sh",new Set(["o"])],["zsh",new Set(["o"])]]),gh=new Map([["zsh",new Set(["o"])]]),hh=new Map([["bash",new Set(["--init-file","--rcfile"])]]);function vc(e,t){for(let n=0;n<t.length;n++){let r=t[n];if(r===void 0||r==="--"||r==="-"||r[0]!=="-"&&r[0]!=="+")return null;if(r.startsWith("--")){let s=hh.get(e);if(Ch(r,s))continue;if(!s?.has(r))continue;if(t[n+1]===void 0)return null;n++;continue}let o=yh(e,r);if(o.commandSelected)return t[n+o.followingValues+1]??null;let i=t[n+1];if(e==="ksh"&&(r==="-o"||r==="+o")&&i!==void 0&&i[0]!=="-"&&i[0]!=="+")n++;n+=o.followingValues}return null}function yh(e,t){let n=ph.get(e),r=gh.get(e),o=!1,i=0;for(let s=1;s<t.length;s++){let a=t[s];if(a===void 0)break;if(t[0]==="-"&&a==="c")o=!0;if(e==="ksh"&&a==="o"){if(s+1<t.length){let l=t.slice(s+1);if(!o&&t[0]==="-"&&l==="c")continue;if(!o&&t[0]==="-"&&l[0]==="-"&&l.endsWith("c"))o=!0;break}if(o)i++;continue}if(!n?.has(a))continue;if(r?.has(a)&&s+1<t.length)break;i++}return{commandSelected:o,followingValues:i}}function Ch(e,t){return t!==void 0&&[...t].some((n)=>e.startsWith(`${n}=`))}function er(e,t){if(t.escaped)return t.escaped=!1,!0;if(e==="\\"&&!t.inSingle)return t.escaped=!0,!0;if(e==="'"&&!t.inDouble)return t.inSingle=!t.inSingle,!0;if(e==='"'&&!t.inSingle)return t.inDouble=!t.inDouble,!0;return!1}function mo(e){let t={inSingle:!1,inDouble:!1,escaped:!1};for(let n of Sh(e))er(n,t);return t.inSingle||t.inDouble}function Sh(e){let t="",n={inSingle:!1,inDouble:!1,escaped:!1},r=!1,o=!0;for(let i=0;i<e.length;i++){let s=e[i];if(!s)break;if(r){if(s===`
7
+ `||s==="\r")t+=s,r=!1,n.escaped=!1;continue}if(s==="#"&&!n.inSingle&&!n.inDouble&&o){r=!0;continue}if(t+=s,!n.inSingle&&!n.inDouble&&!n.escaped)o=/[\s;&|()<>]/.test(s);er(s,n)}return t}var cs=new Set(["rm","find","xargs","parallel"]),bh=new Set(["git","busybox",...cs,...ie,...yc,...Be]),vh=new Set(["python","node","ruby","perl"]);function Ec(e){let t=B(e);return bh.has(t)||qe(t)}function qe(e){return vh.has(Eh(e))}function Eh(e){let t=I(e).toLowerCase();return co.test(t)?"python":t}function us(e){try{let t=so(Rh(e));if(t===null)return{config:null,errors:[]};if(!t.trim())return{config:null,errors:["Config file is empty"]};let n=JSON.parse(t),r=wh(n);if(r.errors.length>0)return{config:null,errors:r.errors};return{config:{version:1,rules:n.rules??[],overrides:n.overrides??{},transparent_wrappers:n.transparent_wrappers??[]},errors:[]}}catch(t){if(t instanceof he)return{config:null,errors:[t.message]};let n=t instanceof Error?t.message:String(t);return{config:null,errors:[t instanceof SyntaxError?"Invalid JSON":n]}}}function Rh(e){return typeof e==="string"?ic(e):e}var O=(e,t)=>({path:e,message:t,kind:"typed"}),ve=(e,t)=>({path:e,message:t,kind:"custom"});function Rc(e){let t=new Set;return e.flatMap((n,r)=>{let o=xn(n)?n.name:void 0;if(typeof o!=="string")return[];if(t.has(o.toLowerCase()))return[ve(["rules",r,"name"],`duplicate rule name "${o}"`)];return t.add(o.toLowerCase()),[]})}var ds=`must be one of ${ss.join(", ")}`,xh=/^[^/]+\/[^/]+$/,_h=["version","rules","overrides","transparent_wrappers"];function wh(e){let t=Ah(e);return{errors:ms(Lh(t,_h,(n)=>n.kind==="custom"),": "," "),sources:Nh(e,t)}}function Ah(e){if(!xn(e))return[O([],"Config must be an object")];let t=Array.isArray(e.rules)&&e.rules.length>as;return[...e.version===1?[]:[O(["version"],"must be 1")],...Ph(e.rules,t),...kh(e.overrides),...Mh(e.transparent_wrappers),...t?[]:Ih(e.rules),...xn(e.overrides)?Object.keys(e.overrides).filter((n)=>!xh.test(n)).map((n)=>ve(["overrides",n],"must use <rulebook-name>/<rule-name>")):[],...Dh(e.transparent_wrappers)]}function Ph(e,t){if(e===void 0)return[];if(!Array.isArray(e))return[O(["rules"],"must be an array of rulebook source strings"),...xc(e,as)?[O(["rules"],ls)]:[]];if(t)return[{path:["rules"],message:ls,kind:"limit"}];return e.flatMap((n,r)=>{if(typeof n!=="string")return[O(["rules",r],"must be a rulebook source string"),...Th(n,1)?[O(["rules",r],"must be a non-empty rulebook source string")]:[]];return n===""?[O(["rules",r],"must be a non-empty rulebook source string")]:[]})}function xc(e,t){let n=_c(e);return n!==void 0&&!(n<=t)}function Th(e,t){let n=_c(e);return n!==void 0&&!(n>=t)}function _c(e){if(e===null||e===void 0)return;let t=e.length;return t===void 0?void 0:Number(t)}function Ih(e){if(!Array.isArray(e))return[];let t=new Set;return e.flatMap((n,r)=>{if(typeof n!=="string"||n==="")return[];if(n.trim()==="")return[ve(["rules",r],"must be a non-empty rulebook source string")];let o=dc(n);if(o)return[ve(["rules",r],o)];if(t.has(n))return[ve(["rules",r],`duplicate rulebook source "${n}"`)];return t.add(n),[]})}function kh(e){if(e===void 0)return[];if(!xn(e))return[O(["overrides"],"must be an object if provided")];return Object.keys(e).flatMap((t)=>{let n=e[t];if(n==="off")return[];if(!xn(n))return[O(["overrides",t],'must be "off" or an object')];return[...Oh(n.reason,["overrides",t,"reason"]),...n.intent===void 0||fs(n.intent)?[]:[O(["overrides",t,"intent"],ds)]]})}function Oh(e,t){if(typeof e!=="string")return[O(t,"required non-empty string"),...xc(e,It)?[O(t,`must be at most ${It} characters`)]:[]];if(e==="")return[O(t,"required non-empty string")];return e.length>It?[O(t,`must be at most ${It} characters`)]:[]}function Mh(e){if(e===void 0)return[];if(!Array.isArray(e))return[O(["transparent_wrappers"],"must be an array of command strings")];return e.flatMap((t,n)=>{if(typeof t!=="string")return[O(["transparent_wrappers",n],"must be a command string")];return Tt.test(t)?[]:[O(["transparent_wrappers",n],"must match command pattern")]})}function Dh(e){if(!Array.isArray(e))return[];let t=new Set;return e.flatMap((n,r)=>{if(typeof n!=="string"||!Tt.test(n))return[];if(t.has(n))return[ve(["transparent_wrappers",r],`duplicate command "${n}"`)];if(Ec(n))return[ve(["transparent_wrappers",r],`reserved command "${n}" cannot be a wrapper`)];return t.add(n),[]})}function Nh(e,t){let n=xn(e)?e.rules:void 0;if(!Array.isArray(n))return new Set;if(t.some((o)=>o.path.length===1&&o.path[0]==="rules"))return new Set;let r=new Set(t.filter((o)=>o.path[0]==="rules"&&typeof o.path[1]==="number").map((o)=>o.path[1]));return new Set(n.filter((o,i)=>typeof o==="string"&&!r.has(i)))}function Lh(e,t,n){let r=e.map((s)=>s.path[1]),o=[...new Set(r.filter((s)=>typeof s==="string"))],i=(s,a)=>[s.path.length===0?-1:t.indexOf(String(s.path[0])),typeof a==="number"?a:o.indexOf(String(a)),n(s)?0:1];return e.map((s,a)=>({issue:s,rank:i(s,r[a])})).sort((s,a)=>s.rank[0]-a.rank[0]||s.rank[1]-a.rank[1]||s.rank[2]-a.rank[2]).map((s)=>s.issue)}function ms(e,t,n){return[...new Set(e.map((r)=>{let o=Wh(r.path);if(r.kind==="unknownKeys")return`${o?`${o}.`:""}unknown field "${r.message}"`;if(r.kind==="key"||r.kind==="limit"||r.path.length===0)return r.message;return`${o}${r.path.length===1?n:t}${r.message}`}))]}function Wh(e){return e.map((t,n)=>{if(typeof t==="number")return`[${t}]`;return n===0?String(t):`.${String(t)}`}).join("")}function fs(e){return ss.includes(e)}function xn(e){return!!e&&typeof e==="object"&&!Array.isArray(e)}function Ac(e){let t=zh(e);if(t.errors.length>0)throw Error(t.errors.join("; "));return e}var Fh=`required non-empty string up to ${It} characters`,wc="must be a non-empty array of unique non-empty strings",Gh="required non-empty array of non-empty strings";function zh(e){if(!kt(e))return{errors:["Rulebook must be an object"],ruleNames:new Set};if(!bc(e))return{errors:[Cc],ruleNames:new Set};let t=[...e.rulebook_version===1||e.rulebook_version===2?[]:["rulebook_version must be 1 or 2"],...ms(Bh(e,e.rulebook_version===2),": ",": ")];return{errors:t.length>Ke.maxValidationErrors?[...t.slice(0,Ke.maxValidationErrors),Sc]:t,ruleNames:new Set(Pc(e).map((n)=>n.toLowerCase()))}}function Pc(e){let t=kt(e)?e.rules:void 0;return(Array.isArray(t)?t:[]).flatMap((n)=>{let r=kt(n)?n.name:void 0;return typeof r==="string"?[r]:[]})}function Bh(e,t){return[...typeof e.name==="string"&&qt.test(e.name)?[]:[O(["name"],"required string matching rule name pattern")],...typeof e.version==="string"&&e.version!==""?[]:[O(["version"],"required non-empty string")],...Hh(e.allowed_commands),...Uh(e.rules,t),...Kh(e.tests),...qh(e),...Yh(e)]}function Hh(e){if(!Array.isArray(e))return[O(["allowed_commands"],"required array")];let t=new Set;return[...e.flatMap((n,r)=>typeof n==="string"&&Tt.test(n)?[]:[O(["allowed_commands",r],"must match command pattern")]),...e.flatMap((n,r)=>{if(typeof n!=="string"||!Tt.test(n))return[];if(t.has(n))return[ve(["allowed_commands",r],`duplicate command "${n}"`)];return t.add(n),[]})]}function Uh(e,t){if(!Array.isArray(e))return[O(["rules"],"required array")];return[...e.flatMap((n,r)=>{if(!kt(n))return[O(["rules",r],"must be an object")];return t?jh(n,["rules",r]):$h(n,["rules",r])}),...Rc(e)]}function $h(e,t){return[...Tc(e.name,t),...Ic(e.command,t),...e.subcommand===void 0||typeof e.subcommand==="string"&&Tt.test(e.subcommand)?[]:[O([...t,"subcommand"],"must match command pattern")],...fo(e.block_args,[...t,"block_args"],"required non-empty array",!1),...kc(e.reason,t),...Oc(e.intent,t)]}function jh(e,t){return[...Tc(e.name,t),...Ic(e.command,t),...kc(e.reason,t),...Oc(e.intent,t),...Vh(e.match,[...t,"match"]),...e.subcommand===void 0?[]:[O([...t,"subcommand"],"not supported in rulebook_version 2")],...e.block_args===void 0?[]:[O([...t,"block_args"],"not supported in rulebook_version 2")]]}function Tc(e,t){if(typeof e!=="string")return[O([...t,"name"],"required string")];return qt.test(e)?[]:[O([...t,"name"],"must match rule name pattern")]}function Ic(e,t){return typeof e==="string"&&Tt.test(e)?[]:[O([...t,"command"],"required string matching command pattern")]}function kc(e,t){return typeof e==="string"&&e!==""&&e.length<=It?[]:[O([...t,"reason"],Fh)]}function Oc(e,t){return e===void 0||fs(e)?[]:[O([...t,"intent"],ds)]}function Vh(e,t){if(!kt(e))return[O(t,"required object")];return[...fo(e.command_path,[...t,"command_path"],Gh,!1),...e.any_args===void 0?[]:fo(e.any_args,[...t,"any_args"],wc,!0),...e.exclude_args===void 0?[]:fo(e.exclude_args,[...t,"exclude_args"],wc,!0)]}function fo(e,t,n,r){if(!Array.isArray(e))return[O(t,n)];let o=e.flatMap((i,s)=>{if(typeof i!=="string")return[O([...t,s],"must be a non-empty string")];return i===""?[ve([...t,s],"must be a non-empty string")]:[]});if(e.some((i)=>typeof i!=="string"))return o;return[...o,...e.length===0?[ve(t,n)]:[],...r&&new Set(e).size!==e.length?[ve(t,"must not contain duplicate values")]:[]]}function Kh(e){if(e===void 0)return[];if(!Array.isArray(e))return[O(["tests"],"must be an array if provided")];return e.flatMap((t,n)=>{if(!kt(t))return[O(["tests",n],"must be an object")];return[...typeof t.command==="string"&&t.command.trim()!==""?[]:[O(["tests",n,"command"],"required non-empty string")],...t.expect==="blocked"||t.expect==="allowed"?[]:[O(["tests",n,"expect"],'must be "blocked" or "allowed"')],...t.rule===void 0||typeof t.rule==="string"?[]:[O(["tests",n,"rule"],"must be a string if provided")],...t.expect==="blocked"&&typeof t.rule!=="string"?[ve(["tests",n,"rule"],"required string for blocked fixtures")]:[]]})}function qh(e){if(!Array.isArray(e.tests))return[];let t=new Set(Pc(e));return[...new Set(e.tests.flatMap((n)=>kt(n)&&n.expect==="blocked"&&typeof n.rule==="string"?[n.rule]:[]))].filter((n)=>!t.has(n)).map((n)=>ve(["tests"],`blocked fixture references unknown rule "${n}"`))}function Yh(e){if(!Array.isArray(e.allowed_commands)||!Array.isArray(e.rules))return[];let t=new Set(e.allowed_commands.filter((n)=>typeof n==="string"));return e.rules.flatMap((n,r)=>{let o=kt(n)?n.command:void 0;if(typeof o!=="string"||t.has(o))return[];return[ve(["rules",r,"command"],`"${o}" must be listed in allowed_commands`)]})}function kt(e){return!!e&&typeof e==="object"&&!Array.isArray(e)}function Fc(e,t){let n=gc(e,t),r=!1;try{r=sc(n.userConfigTarget,n.projectConfigTarget)}catch(f){if(f instanceof he)return oy(n,f.message);throw f}let o=us(n.userConfigTarget),i=r?{config:null,errors:[]}:us(n.projectConfigTarget),s=Lc(n.userConfigPath,o.errors),a=Lc(n.projectConfigPath,i.errors),l=new Set,c=o.config?Mc(o.config,tr.dirname(n.userConfigPath),"user",n.userScope,l):Wc(),u=i.config?Mc(i.config,tr.dirname(n.projectConfigPath),"project",n.projectScope,l):Wc(),m=o.config?.overrides??{},d=i.config?.overrides??{};return{rules:[...Dc(c.rules,m),...Dc(u.rules,d)],transparent_wrappers:ny(o.config,i.config),rulebooks:[...c.rulebooks,...u.rulebooks],errors:[...s,...a,...c.errors,...u.errors],warnings:[...c.warnings,...u.warnings,...c.canValidateOverrides?Nc(m,c.knownRuleIds,n.userConfigPath):[],...c.canValidateOverrides?ry(d,c.knownRuleIds,n.projectConfigPath):[],...u.canValidateOverrides?Nc(d,u.knownRuleIds,n.projectConfigPath):[]],userConfig:o.config??void 0,projectConfig:i.config??void 0,...n}}function Mc(e,t,n,r=Kt(tr.dirname(tr.dirname(t)),n==="user"?"user policy":"project policy"),o=new Set){let i=[],s=[],a=e.rules.flatMap((c)=>{let u=Xh(c,t,r);if(u.errors.length>0||!u.rulebook)return i.push(...u.errors),[];let m=u.rulebook;if(o.has(m.name))return s.push(`duplicate active rulebook name "${m.name}" for ${c}; keeping the first and ignoring this one, so its rules are not active; rename one of them in its rulebook file and in the rules config that lists it`),[];return o.add(m.name),[{rules:Zh(m),rulebook:{source:n,spec:c,name:m.name,version:m.version,rules:m.rules.map((d)=>`${m.name}/${d.name}`)}}]}),l=a.flatMap((c)=>c.rules);return{rules:l,rulebooks:a.map((c)=>c.rulebook),entries:a.map((c)=>({spec:c.rulebook.spec,name:c.rulebook.name,version:c.rulebook.version,ruleCount:c.rulebook.rules.length})),knownRuleIds:new Set(l.map((c)=>c.name)),errors:i,warnings:s,canValidateOverrides:i.length===0}}function Zh(e){if(e.rulebook_version===2)return e.rules.map((t)=>({name:`${e.name}/${t.name}`,command:t.command,block_args:[],match:t.match,reason:t.reason,intent:t.intent}));return e.rules.map((t)=>({...t,name:`${e.name}/${t.name}`,match:void 0}))}function Xh(e,t,n){let r=Jh(e),o=hc(t,r),i=ey(o,n);if("error"in i)return{rulebook:null,errors:[i.error]};if(i.content===null)return{rulebook:null,errors:[`missing rulebook file ${o} for ${e}; ${Qh(e)}`]};let s=ty(i.content);if("problem"in s)return{rulebook:null,errors:[`invalid rulebook ${o}: ${s.problem}; fix that file`]};if(s.rulebook.name!==r)return{rulebook:null,errors:[`rulebook name "${s.rulebook.name}" in ${o} must match source "${e}"; fix that file`]};return{rulebook:s.rulebook,errors:[]}}function Jh(e){return ao(e)?rs(e).name:e}function Qh(e){return ao(e)?`run ${pc} to vendor ${e}`:"create that file or remove that source from the rules config"}function ey(e,t){try{return{content:so(Jn(t,e))}}catch(n){if(n instanceof he)return{error:n.message};throw n}}function ty(e){let t;try{t=JSON.parse(e)}catch{return{problem:"Invalid JSON"}}try{return{rulebook:Ac(t)}}catch(n){return{problem:n instanceof Error?n.message:"invalid rulebook"}}}function ny(e,t){return[...new Set([...e?.transparent_wrappers??[],...t?.transparent_wrappers??[]])]}function Dc(e,t){return e.flatMap((n)=>{let r=t[n.name];if(r==="off")return[];if(r&&typeof r==="object")return[{...n,intent:r.intent??n.intent,reason:r.reason}];return[n]})}function Nc(e,t,n){return Object.keys(e).filter((r)=>!t.has(r)).map((r)=>`unknown override key "${r}" in ${n}; only that override is ignored and other overrides and rules keep their configured state; correct or remove it in that file`)}function ry(e,t,n){return Object.keys(e).filter((r)=>t.has(r)).map((r)=>`project override cannot target user-scoped rule "${r}" in ${n}; only that override is ignored and the rule keeps its user-configured state; remove it from that file`)}function Lc(e,t){return t.map((n)=>n.startsWith("Unable to access ")?n:`${e}: ${n}`)}function oy(e,t){return{rules:[],transparent_wrappers:[],rulebooks:[],errors:[t],warnings:[],userConfigPath:e.userConfigPath,projectConfigPath:e.projectConfigPath}}function Wc(){return{rules:[],rulebooks:[],entries:[],knownRuleIds:new Set,errors:[],warnings:[],canValidateOverrides:!0}}var vo=require("node:fs");var Gc=[{id:"git.ssh-env",category:"Git",label:"Git SSH environment override",description:"Blocks Git network operations with SSH environment overrides.",example:'GIT_SSH_COMMAND="./ssh-wrapper" git push',intent:"manual_only"},{id:"git.alias-config",category:"Git",label:"Git command-line alias",description:"Blocks command-line Git aliases that cannot be safely resolved.",example:"git -c alias.wipe='!rm -rf /' wipe",intent:"manual_only"},{id:"git.checkout-force",category:"Git",label:"Git checkout force",description:"Blocks forced checkout operations that discard local changes.",example:"git checkout --force main",intent:"use_alternative"},{id:"git.checkout-double-dash",category:"Git",label:"Git checkout path restore",description:"Blocks checkout path restores after --.",example:"git checkout -- src/app.ts",intent:"use_alternative"},{id:"git.checkout-ref-path",category:"Git",label:"Git checkout ref and path",description:"Blocks checkout forms that mix a ref and path restore.",example:"git checkout HEAD -- src/app.ts",intent:"use_alternative"},{id:"git.checkout-pathspec-from-file",category:"Git",label:"Git checkout pathspec file",description:"Blocks checkout pathspec loading from a file.",example:"git checkout --pathspec-from-file=paths.txt",intent:"use_alternative"},{id:"git.checkout-ambiguous",category:"Git",label:"Git checkout ambiguous targets",description:"Blocks ambiguous checkout arguments that may restore paths.",example:"git checkout main src/app.ts",intent:"use_alternative"},{id:"git.switch-discard-changes",category:"Git",label:"Git switch discard changes",description:"Blocks branch switches that explicitly discard local changes.",example:"git switch --discard-changes main",intent:"use_alternative"},{id:"git.switch-force",category:"Git",label:"Git switch force",description:"Blocks forced branch switches.",example:"git switch --force main",intent:"use_alternative"},{id:"git.restore-worktree",category:"Git",label:"Git restore worktree",description:"Blocks worktree restore operations.",example:"git restore --worktree src/app.ts",intent:"use_alternative"},{id:"git.restore-unstaged",category:"Git",label:"Git restore unstaged",description:"Blocks unstaged restore operations.",example:"git restore src/app.ts",intent:"use_alternative"},{id:"git.reset-hard",category:"Git",label:"Git reset hard",description:"Blocks hard resets.",example:"git reset --hard",intent:"use_alternative"},{id:"git.reset-merge",category:"Git",label:"Git reset merge",description:"Blocks merge resets.",example:"git reset --merge",intent:"use_alternative"},{id:"git.clean-force",category:"Git",label:"Git clean force",description:"Blocks forced clean operations.",example:"git clean -fd",intent:"use_alternative"},{id:"git.rm-force",category:"Git",label:"Git rm force",description:"Blocks forced removal of tracked files from the working tree.",example:"git rm -rf .",intent:"use_alternative"},{id:"git.push-force",category:"Git",label:"Git push force",description:"Blocks force pushes.",example:"git push --force origin main",intent:"use_alternative"},{id:"git.push-delete",category:"Git",label:"Git push delete",description:"Blocks remote ref deletion through push.",example:"git push --delete origin old-branch",intent:"manual_only"},{id:"git.push-mirror",category:"Git",label:"Git push mirror",description:"Blocks mirror pushes that can force-update or delete remote refs.",example:"git push --mirror origin",intent:"manual_only"},{id:"git.branch-force-delete",category:"Git",label:"Git branch force delete",description:"Blocks forced branch deletion.",example:"git branch -D old-branch",intent:"use_alternative"},{id:"git.rebase-abort",category:"Git",label:"Git rebase abort",description:"Blocks rebase abort operations.",example:"git rebase --abort",intent:"use_alternative"},{id:"git.merge-abort",category:"Git",label:"Git merge abort",description:"Blocks merge abort operations.",example:"git merge --abort",intent:"use_alternative"},{id:"git.tag-delete",category:"Git",label:"Git tag delete",description:"Blocks tag deletion.",example:"git tag --delete v1.0.0",intent:"manual_only"},{id:"git.reflog-delete",category:"Git",label:"Git reflog delete",description:"Blocks reflog deletion.",example:"git reflog delete HEAD@{1}",intent:"manual_only"},{id:"git.stash-drop",category:"Git",label:"Git stash drop",description:"Blocks dropping stash entries.",example:"git stash drop stash@{0}",intent:"use_alternative"},{id:"git.stash-clear",category:"Git",label:"Git stash clear",description:"Blocks clearing all stash entries.",example:"git stash clear",intent:"manual_only"},{id:"git.worktree-remove-force",category:"Git",label:"Git worktree force remove",description:"Blocks forced worktree removal.",example:"git worktree remove --force ../feature",intent:"use_alternative"},{id:"rm.recursive-force-root-or-home",category:"Filesystem",label:"rm -rf root or home",description:"Blocks recursive forced removal of root or home paths.",example:"rm -rf /",intent:"hard_stop",catastrophic:!0},{id:"rm.git-metadata",category:"Filesystem",label:"rm Git metadata",description:"Blocks removal of protected Git metadata and hooks.",example:"rm -rf .git",intent:"hard_stop",catastrophic:!0},{id:"rm.recursive-force-dynamic-target",category:"Filesystem",label:"rm -rf dynamic target",description:"Blocks recursive forced removal with dynamic targets in strict mode.",example:'rm -rf "$target"',intent:"scope_down",activationCapability:"fail_closed"},{id:"rm.recursive-force-home-cwd",category:"Filesystem",label:"rm -rf from home cwd",description:"Blocks recursive forced removal while working in home.",example:'cd "$HOME" && rm -rf build',intent:"scope_down"},{id:"rm.recursive-force-cwd-self",category:"Filesystem",label:"rm -rf current directory",description:"Blocks recursive forced removal of the current directory.",example:"rm -rf .",intent:"scope_down"},{id:"rm.recursive-force-outside-cwd",category:"Filesystem",label:"rm -rf outside cwd",description:"Blocks recursive forced removal outside the original cwd.",example:"rm -rf ../outside",intent:"scope_down"},{id:"rm.recursive-force-paranoid",category:"Filesystem",label:"rm -rf paranoid mode",description:"Blocks non-temp recursive forced removal when paranoid rm is enabled.",example:"rm -rf ./cache",intent:"scope_down",activationCapability:"paranoid_rm"},{id:"powershell.remove-item-root-or-home",category:"PowerShell",label:"Remove-Item root or home",description:"Blocks PowerShell Remove-Item targeting root or home paths.",example:"Remove-Item C:\\",intent:"hard_stop",catastrophic:!0},{id:"powershell.remove-item-recursive-force-root-or-home",category:"PowerShell",label:"Remove-Item recursive force root or home",description:"Blocks recursive forced PowerShell removal of root or home paths.",example:"Remove-Item C:\\ -Recurse -Force",intent:"hard_stop",catastrophic:!0},{id:"powershell.remove-item-git-metadata",category:"PowerShell",label:"Remove-Item Git metadata",description:"Blocks PowerShell removal of protected Git metadata and hooks.",example:"Remove-Item .git -Recurse -Force",intent:"hard_stop",catastrophic:!0},{id:"powershell.remove-item-recursive-force-dynamic-target",category:"PowerShell",label:"Remove-Item recursive force dynamic target",description:"Blocks recursive forced PowerShell removal with dynamic targets in strict mode.",example:"Remove-Item $target -Recurse -Force",intent:"scope_down",activationCapability:"fail_closed"},{id:"powershell.remove-item-recursive-force-home-cwd",category:"PowerShell",label:"Remove-Item recursive force from home cwd",description:"Blocks recursive forced PowerShell removal while working in home.",example:"Set-Location $HOME; Remove-Item ./build -Recurse -Force",intent:"scope_down"},{id:"powershell.remove-item-recursive-force-cwd-self",category:"PowerShell",label:"Remove-Item recursive force current directory",description:"Blocks recursive forced PowerShell removal of the current directory.",example:"Remove-Item . -Recurse -Force",intent:"scope_down"},{id:"powershell.remove-item-recursive-force-outside-cwd",category:"PowerShell",label:"Remove-Item recursive force outside cwd",description:"Blocks recursive forced PowerShell removal outside the original cwd.",example:"Remove-Item ../outside -Recurse -Force",intent:"scope_down"},{id:"powershell.remove-item-recursive-force-paranoid",category:"PowerShell",label:"Remove-Item recursive force paranoid mode",description:"Blocks non-temp recursive forced PowerShell removal when paranoid rm is enabled.",example:"Remove-Item ./cache -Recurse -Force",intent:"scope_down",activationCapability:"paranoid_rm"},{id:"powershell.remove-item-pipeline-dynamic-target",category:"PowerShell",label:"Remove-Item pipeline dynamic target",description:"Blocks PowerShell Remove-Item with unverifiable pipeline input in strict mode.",example:"Get-ChildItem . -Recurse | Remove-Item -Force",intent:"scope_down",activationCapability:"fail_closed"},{id:"find.delete",category:"Filesystem",label:"find delete",description:"Blocks unsafe find -delete operations.",example:"find . -delete",intent:"scope_down"},{id:"find.delete-git-metadata",category:"Filesystem",label:"find delete Git metadata",description:"Blocks find -delete operations selecting protected Git metadata and hooks.",example:"find .git -delete",intent:"hard_stop",catastrophic:!0},{id:"find.exec-rm-recursive-force",category:"Filesystem",label:"find exec rm -rf",description:"Blocks find -exec rm -rf operations.",example:"find . -exec rm -rf {} +",intent:"scope_down"},{id:"dd.device-write",category:"Filesystem",label:"dd device write",description:"Blocks dd writing to a /dev device.",example:"dd if=/dev/zero of=/dev/sda",intent:"manual_only"},{id:"mkfs.device",category:"Filesystem",label:"mkfs device format",description:"Blocks mkfs formatting a /dev device.",example:"mkfs.ext4 /dev/sda1",intent:"manual_only"},{id:"shred.target",category:"Filesystem",label:"shred target",description:"Blocks shred against any target, including shred --help and shred --version.",example:"shred -u secret.txt",intent:"use_alternative"},{id:"interpreter.dangerous-command",category:"Execution",label:"Interpreter dangerous command",description:"Blocks interpreter one-liners containing dangerous commands.",example:`python -c "import os; os.system('rm -rf /')"`,intent:"use_alternative"},{id:"interpreter.one-liner-paranoid",category:"Execution",label:"Interpreter one-liner paranoid mode",description:"Blocks interpreter one-liners when paranoid interpreters is enabled.",example:'python -c "print(1)"',intent:"use_alternative",activationCapability:"paranoid_interpreters"},{id:"awk.system-dynamic",category:"Execution",label:"Awk dynamic system call",description:"Blocks awk system calls that cannot be safely analyzed.",example:"awk '{ system($0) }'",intent:"stop_and_explain"},{id:"xargs.rm-recursive-force-dynamic",category:"Execution",label:"xargs dynamic rm -rf",description:"Blocks xargs rm -rf with dynamic input.",example:"printf / | xargs rm -rf",intent:"scope_down"},{id:"xargs.shell-dynamic",category:"Execution",label:"xargs dynamic shell",description:"Blocks xargs shell execution with dynamic input.",example:"xargs r$(printf m) -rf",intent:"scope_down"},{id:"parallel.rm-recursive-force-dynamic",category:"Execution",label:"parallel dynamic rm -rf",description:"Blocks parallel rm -rf with dynamic input.",example:"printf / | parallel rm -rf",intent:"scope_down"},{id:"parallel.shell-dynamic",category:"Execution",label:"parallel dynamic shell",description:"Blocks parallel shell execution with dynamic input.",example:"parallel r$(printf m) -rf ::: child",intent:"scope_down"},{id:"parallel.command-stream-dynamic",category:"Execution",label:"parallel dynamic command stream",description:"Blocks parallel command streams from dynamic input.",example:"parallel --dry-run",intent:"scope_down"},{id:"shell.dynamic-structure",category:"Execution",label:"Dynamic command structure",description:"Blocks guarded subcommands and options assembled from substitution output in strict mode.",example:"git reset $(printf --hard)",intent:"stop_and_explain",activationCapability:"fail_closed"},{id:"shell.dynamic-executable",category:"Execution",label:"Dynamic executable name",description:"Blocks executable names assembled from command substitution output in strict mode.",example:"$(printf r)m -rf /",intent:"manual_only",activationCapability:"fail_closed"},{id:"raw-text.dangerous-command",category:"Execution",label:"Raw text dangerous command",description:"Blocks dangerous commands detected in raw command text.",example:"git reset --hard 'unterminated",intent:"stop_and_explain"}],ps=new Set(Gc.map((e)=>e.id)),po=Gc,iy=new Map(po.map((e)=>[e.id,e.intent]));function C(e,t){return{id:e,reason:t,intent:iy.get(e)??"manual_only"}}var gs=[{id:"secret.basename.env",category:"Basename",label:".env",description:"Blocks exact .env files.",basename:".env"},{id:"secret.basename.npmrc",category:"Basename",label:".npmrc",description:"Blocks npm credential config files.",basename:".npmrc"},{id:"secret.basename.pypirc",category:"Basename",label:".pypirc",description:"Blocks Python package index credential files.",basename:".pypirc"},{id:"secret.basename.netrc",category:"Basename",label:".netrc",description:"Blocks machine login credential files.",basename:".netrc"},{id:"secret.basename.git-credentials",category:"Basename",label:".git-credentials",description:"Blocks Git credential storage files.",basename:".git-credentials"},{id:"secret.basename.id-rsa",category:"Basename",label:"id_rsa",description:"Blocks RSA private key basenames.",basename:"id_rsa"},{id:"secret.basename.id-ed25519",category:"Basename",label:"id_ed25519",description:"Blocks Ed25519 private key basenames.",basename:"id_ed25519"},{id:"secret.basename.id-ecdsa",category:"Basename",label:"id_ecdsa",description:"Blocks ECDSA private key basenames.",basename:"id_ecdsa"},{id:"secret.basename.credentials",category:"Basename",label:"credentials",description:"Blocks generic credentials file basenames.",basename:"credentials"}],go={id:"secret.pattern.env-variant",category:"Pattern",label:".env.*",description:"Blocks environment-specific .env variants."},sy=[".bak",".backup",".copy",".disabled",".old",".orig",".save",".tmp"],ay=[{idSlug:"kube-config",label:"~/.kube/config",directoryParts:[".kube"],basename:"config"},{idSlug:"docker-config",label:"~/.docker/config.json",directoryParts:[".docker"],basename:"config.json"}],hs=[{id:"secret.home.ssh",category:"Home path",label:"~/.ssh",description:"Blocks home SSH configuration and key paths.",suffixParts:[".ssh"]},{id:"secret.home.aws",category:"Home path",label:"~/.aws",description:"Blocks home AWS credential and config paths.",suffixParts:[".aws"]},{id:"secret.home.gcp",category:"Home path",label:"~/.gcp",description:"Blocks home GCP credential paths.",suffixParts:[".gcp"]},{id:"secret.home.gcloud-config",category:"Home path",label:"~/.config/gcloud",description:"Blocks home Google Cloud SDK credential paths.",suffixParts:[".config","gcloud"]},{id:"secret.home.kube-config",category:"Home path",label:"~/.kube/config",description:"Blocks home Kubernetes config files.",suffixParts:[".kube","config"]},{id:"secret.home.docker-config",category:"Home path",label:"~/.docker/config.json",description:"Blocks home Docker credential config files.",suffixParts:[".docker","config.json"]},...ay.flatMap((e)=>sy.map((t)=>({id:["secret.home",e.idSlug,t.slice(1)].join("."),category:"Home path",label:[e.label,t].join(""),description:["Blocks home ",e.label,t," credential backup files."].join(""),suffixParts:[...e.directoryParts,[e.basename,t].join("")]}))),{id:"secret.home.gh-hosts",category:"Home path",label:"~/.config/gh/hosts.yml",description:"Blocks GitHub CLI host credential files.",suffixParts:[".config","gh","hosts.yml"]}];var ho=[{id:"secret.cli.claude-code",category:"Coding CLI credential",label:"Claude Code credentials",paths:["~/.claude/.credentials.json"]},{id:"secret.cli.claude-code.config",category:"Coding CLI config",label:"Claude Code config",paths:["~/.claude/settings.json","~/.claude/settings.local.json","~/.claude.json","<project>/.claude/settings.local.json","<project>/.mcp.json"]},{id:"secret.cli.antigravity",category:"Coding CLI config",label:"Antigravity CLI hook config",paths:["~/.gemini/config/hooks.json","~/.gemini/config/mcp_config.json"]},{id:"secret.cli.codex",category:"Coding CLI credential",label:"Codex credentials",paths:["~/.codex/auth.json","~/.codex/.credentials.json","~/.codex/secrets","~/.codex/.sandbox-secrets"]},{id:"secret.cli.codex.config",category:"Coding CLI config",label:"Codex config",paths:["~/.codex/config.toml","~/.codex/<name>.config.toml"]},{id:"secret.cli.gemini",category:"Coding CLI credential",label:"Gemini CLI credentials",paths:["~/.gemini/oauth_creds.json","~/.gemini/mcp-oauth-tokens.json","~/.gemini/a2a-oauth-tokens.json","~/.gemini/gemini-credentials.json"]},{id:"secret.cli.gemini.config",category:"Coding CLI config",label:"Gemini CLI config",paths:["~/.gemini/settings.json","~/.gemini/google_accounts.json","<project>/.gemini/settings.json","/Library/Application Support/GeminiCli/settings.json","/etc/gemini-cli/settings.json"]},{id:"secret.cli.copilot-cli",category:"Coding CLI credential",label:"GitHub Copilot CLI credentials",paths:["~/.copilot/config.json","~/.copilot/mcp-oauth-config","~/.copilot/mcp-secrets"]},{id:"secret.cli.copilot-cli.config",category:"Coding CLI config",label:"GitHub Copilot CLI config",paths:["~/.copilot/mcp-config.json"]},{id:"secret.cli.kimi-code",category:"Coding CLI credential",label:"Kimi Code credentials",paths:["~/.kimi-code/server.token","~/.kimi-code/credentials","~/.kimi/credentials","~/.kimi/mcp-oauth"]},{id:"secret.cli.kimi-code.config",category:"Coding CLI config",label:"Kimi Code config",paths:["~/.kimi-code/config.toml","~/.kimi-code/mcp.json","~/.kimi/config.toml","~/.kimi/config.json","~/.kimi/config.json.bak","~/.kimi/mcp.json","<project>/.kimi-code/mcp.json"]},{id:"secret.cli.opencode",category:"Coding CLI credential",label:"OpenCode credentials",paths:["~/.local/share/opencode/auth.json","~/.local/share/opencode/mcp-auth.json","~/.local/share/opencode/opencode.db"]},{id:"secret.cli.opencode.config",category:"Coding CLI config",label:"OpenCode config",paths:["~/.config/opencode/opencode.json","~/.config/opencode/opencode.jsonc","/Library/Application Support/opencode/opencode.json","/etc/opencode/opencode.json","<project>/opencode.json","<project>/opencode.jsonc"]},{id:"secret.cli.pi",category:"Coding CLI credential",label:"Pi credentials",paths:["~/.pi/agent/auth.json"]},{id:"secret.cli.pi.config",category:"Coding CLI config",label:"Pi config",paths:["~/.pi/agent/models.json"]},{id:"secret.cli.amp",category:"Coding CLI credential",label:"Amp Code credentials",paths:["~/.local/share/amp/secrets.json","~/.amp/oauth"]},{id:"secret.cli.amp.config",category:"Coding CLI config",label:"Amp Code config",paths:["~/.config/amp/settings.json","~/.config/amp/settings.jsonc","<project>/.amp/settings.json","<project>/.amp/settings.jsonc"]},{id:"secret.cli.cursor",category:"Coding CLI credential",label:"Cursor CLI credentials",paths:["~/.cursor/auth.json","~/.config/cursor/auth.json","~/.cursor/projects/<name>/mcp-auth.json"]},{id:"secret.cli.cursor.config",category:"Coding CLI config",label:"Cursor CLI config",paths:["~/.cursor/mcp.json","<project>/.cursor/mcp.json"]},{id:"secret.cli.grok-build",category:"Coding CLI credential",label:"Grok Build credentials",paths:["~/.grok/auth.json","~/.grok/mcp_credentials.json"]},{id:"secret.cli.grok-build.config",category:"Coding CLI config",label:"Grok Build config",paths:["~/.grok/config.toml","~/.grok/managed_config.toml","~/.grok/requirements.toml","<project>/.grok/config.toml","/etc/grok/managed_config.toml","/etc/grok/requirements.toml"]}],zc=[{prefix:"id_rsa",slug:"id-rsa",label:"id_rsa"},{prefix:"id_dsa",slug:"id-dsa",label:"id_dsa"},{prefix:"id_ed25519",slug:"id-ed25519",label:"id_ed25519"},{prefix:"id_ecdsa",slug:"id-ecdsa",label:"id_ecdsa"},{prefix:"credentials",slug:"credentials",label:"credentials"}],ly=[".bak",".backup",".copy",".disabled",".key",".old",".orig",".pem",".save",".tmp"],ys=zc.map((e)=>({id:`secret.variant.${e.slug}.separator`,category:"Variant",label:`${e.label}-* / ${e.label}_*`,description:`Blocks ${e.label} variants with dash or underscore suffixes.`,prefix:e.prefix})),Cs=zc.flatMap((e)=>ly.map((t)=>({id:`secret.variant.${e.slug}.${t.slice(1)}`,category:"Variant",label:`${e.label}${t}`,description:`Blocks ${e.label}${t} private credential variants.`,prefix:e.prefix,suffix:t}))),nr={id:"secret.pattern.ssh-key-basename",category:"Pattern",label:"*_(rsa|dsa|ed25519|ecdsa)",description:"Blocks extensionless SSH private key-like basenames.",pattern:/^.*_(rsa|dsa|ed25519|ecdsa)$/},Ss=["agilekeychain","asc","bek","cscfg","fve","gnucash","jks","keychain","kwallet","mdf","ovpn","p12","pcap","pem","pfx","pkcs12","psafe3","rdp","sdf","tblk","tpm"].map((e)=>({id:`secret.ext.${e}`,category:"Extension",label:`.${e}`,description:`Blocks files with the .${e} extension.`,extension:e})),bs=[{id:"secret.ext-pattern.key",category:"Extension pattern",label:".key / .keypair",description:"Blocks key and keypair extension patterns.",pattern:/^key(pair)?$/},{id:"secret.ext-pattern.keystore",category:"Extension pattern",label:".keystore / .keyring",description:"Blocks keystore and keyring extension patterns.",pattern:/^key(store|ring)$/},{id:"secret.ext-pattern.kdbx",category:"Extension pattern",label:".kdb / .kdbx",description:"Blocks KeePass database extension patterns.",pattern:/^kdbx?$/}],cy=[...gs,go,...hs,...ys,...Cs,nr,...Ss,...bs,...ho].map((e)=>({id:e.id,category:e.category,label:e.label,...e.category==="Coding CLI config"?{defaultOff:!0}:{},..."paths"in e?{paths:e.paths}:{description:e.description}})),yo=new Set(ho.flatMap((e)=>e.category==="Coding CLI config"?[e.id]:[])),uy=cy.map((e)=>e.id),vs=new Set(uy);var De=require("node:path"),Bc=process.platform==="win32",dy=/[*?]/;function rr(e,t){if(e==="~")return t;if(e.startsWith("~/"))return`${t}${e.slice(1)}`;return e}function Es(e,t){if(typeof e!=="string"||e.trim()==="")return"must be a non-empty path string";let n=rr(e.trim(),t);if(!De.isAbsolute(n))return"must be an absolute path or start with ~/";return or(n,t)}function Rs(e,t){let n=Hc(e,t);if(n===null)return"must be a non-empty path string";if(!De.isAbsolute(n))return null;if(or(n,t)===null)return null;return"cannot be the home directory or a path above it (this would block every command the agent runs)"}var my="cannot cover the home directory or a path above it (this would disable secret protection everywhere)",fy="cannot cover the guard's own configuration";function Hc(e,t){if(typeof e!=="string"||e.trim()==="")return null;return rr(e.trim().replace(/^\$(?:\{HOME\}|HOME(?=\/|$))/,"~"),t)}function xs(e,t){let n=Hc(e,t);if(n===null)return"must be a non-empty path string";if(dy.test(n))return"cannot contain glob characters (* or ?); list the exact file or directory";if(!De.isAbsolute(n))return null;if(or(n,t)!==null)return my;return py(n,t)?fy:null}function py(e,t){let n=Co(e),r=Co(De.join(t,".cc-safety-net"));return n===r||n.startsWith(`${r}${De.sep}`)}function or(e,t){let n=Co(e),r=Co(t);if(n===r)return"cannot be the home directory";let o=n.endsWith(De.sep)?n:`${n}${De.sep}`;if(r.startsWith(o))return"cannot contain the home directory";return null}function Co(e){let t=De.normalize(e);if(Bc)t=t.replace(/\//g,"\\").toLowerCase();if(t.length>(Bc?3:1)&&t.endsWith(De.sep))t=t.slice(0,-1);return t}var Uc=30,_s=1,ws=365;function $c(e){if(typeof e!=="number"||!Number.isInteger(e))return 30;if(e<1)return 1;return e>365?365:e}var jc=new Set(po.filter((e)=>e.catastrophic).map((e)=>e.id));function T(e,t){if(!e)return null;if(jc.has(e.id))return e;if(t?.destructiveCommandProtectionEnabled===!1)return null;let n=t?.effectiveDestructiveCommandRules[e.id];return n&&!n.enabled?null:e}function se(e,t,n){if(jc.has(t))return!0;if(e?.destructiveCommandProtectionEnabled===!1)return!1;return e?.effectiveDestructiveCommandRules[t]?.enabled??n}function Vc(e,t){return Object.freeze(Object.fromEntries(po.map((n)=>{let r=n.activationCapability?t[n.activationCapability]:void 0,o=r?.enabled??!0,i=e.destructiveCommandRuleOverrides[n.id],s=n.catastrophic?{enabled:!0,inheritedEnabled:!0,changesInherited:!1,source:"catastrophic",...i?{override:i}:{}}:e.destructiveCommandProtectionEnabled?i?{enabled:i==="on",inheritedEnabled:o,changesInherited:i==="on"!==o,source:"rule_override",...n.activationCapability?{activationCapability:n.activationCapability}:{},override:i}:{enabled:o,inheritedEnabled:o,changesInherited:!1,source:r?.source??"built_in_default",...n.activationCapability?{activationCapability:n.activationCapability}:{}}:{enabled:!1,inheritedEnabled:o,changesInherited:!1,source:"master_disabled",...n.activationCapability?{activationCapability:n.activationCapability}:{},...i?{override:i}:{}};return[n.id,Object.freeze(s)]})))}function Kc(e,t){return Object.freeze({...e,effectiveDestructiveCommandRules:Vc(e,t)})}var qc={standard:0,strict:1,paranoid:2};function Xc(e,t){return{policy:{version:1,safety:{level:t.safety?.level??e.safety.level,overrides:{...e.safety.overrides,...t.safety?.overrides}},workflow:{worktree_mode:t.workflow?.worktree_mode??e.workflow.worktree_mode},destructive_command_protection:{enabled:t.destructive_command_protection?.enabled??e.destructive_command_protection.enabled,overrides:{...e.destructive_command_protection.overrides,...t.destructive_command_protection?.overrides},allow_paths:As(e.destructive_command_protection.allow_paths,t.destructive_command_protection?.allow_paths)},secret_protection:{enabled:t.secret_protection?.enabled??e.secret_protection.enabled,overrides:{...e.secret_protection.overrides,...t.secret_protection?.overrides},deny_paths:As(e.secret_protection.deny_paths,t.secret_protection?.deny_paths),allow_paths:As(e.secret_protection.allow_paths,t.secret_protection?.allow_paths)},audit:e.audit},weakenings:gy(e,t)}}function As(e,t){return[...new Set([...e,...t??[]])]}function gy(e,t){let n=t.safety?.level,r=ro[e.safety.level];return[...n&&qc[n]<qc[e.safety.level]?[`project policy lowers level: ${e.safety.level} -> ${n}`]:[],...En.flatMap((o)=>t.safety?.overrides?.[o]===!1&&(e.safety.overrides[o]??r[o])?[`project policy disables ${o}`]:[]),...t.workflow?.worktree_mode===!0&&!e.workflow.worktree_mode?["project policy enables worktree mode relaxations"]:[],...t.destructive_command_protection?.enabled===!1&&e.destructive_command_protection.enabled?["project policy disables destructive command protection"]:[],...t.secret_protection?.enabled===!1&&e.secret_protection.enabled?["project policy disables secret protection"]:[],...Yc(t.destructive_command_protection?.overrides,(o)=>e.destructive_command_protection.enabled&&e.destructive_command_protection.overrides[o]!=="off"),...Yc(t.secret_protection?.overrides,(o)=>e.secret_protection.enabled&&(e.secret_protection.overrides[o]==="on"?!0:e.secret_protection.overrides[o]!=="off"&&!yo.has(o))),...e.destructive_command_protection.enabled?Zc(e.destructive_command_protection.allow_paths,t.destructive_command_protection?.allow_paths).map((o)=>`project policy adds destructive allow path: ${o}`):[],...e.secret_protection.enabled?Zc(e.secret_protection.allow_paths,t.secret_protection?.allow_paths).map((o)=>`project policy adds secret allow path: ${o}`):[]]}function Yc(e,t){return Object.entries(e??{}).flatMap(([n,r])=>r==="off"&&t(n)?[`project policy disables rule ${n}`]:[])}function Zc(e,t){return(t??[]).filter((n)=>!e.includes(n))}var Is=new Set(["standard","strict","paranoid"]),tu={version:1,safety:{level:"standard",overrides:{}},workflow:{worktree_mode:!1},destructive_command_protection:{enabled:!0,overrides:{},allow_paths:[]},secret_protection:{enabled:!0,overrides:{},deny_paths:[],allow_paths:[]},audit:{retention_days:Uc}};function nu(e,t){let n=_y(Rn(e,t),e.home),r=Eo(Qn(t.cwd),e.home),o=yy(r.parsed,e.home),i=Object.keys(o.policy).length>0?Xc(n.gui??tu,o.policy):void 0,s=[...n.errors,...r.errors,...o.diagnostics],a=(n.fallback==="defaults"&&i?"salvaged":n.fallback)??(n.gui?void 0:r.fallback)??(s.length>0?"salvaged":void 0),l=o.policy.safety?.level?"project":n.levelPresent?"user":"default";return{...i?Ts(i.policy):n.policy,errors:s,...a?{fallback:a}:{},...r.exists?{policyScopes:{levelScope:l,weakenings:i?.weakenings??[]}}:{}}}var hy="project policy audit settings are ignored; audit is user scope only";function yy(e,t){if(!Ne(e))return{policy:{},diagnostics:[]};let n=Ne(e.safety)?e.safety:{},r=Ne(e.workflow)?e.workflow:{},o=Ne(e.destructive_command_protection)?e.destructive_command_protection:{},i=Ne(e.secret_protection)?e.secret_protection:{},s={...Is.has(n.level)?{level:n.level}:{},...Ne(n.overrides)?Jc({overrides:ru(n.overrides,En,"safety.overrides",Yt)}):{}},a={...typeof o.enabled==="boolean"?{enabled:o.enabled}:{},...o.overrides!==void 0?{overrides:bo(o.overrides,ps,"destructive_command_protection.overrides",Yt)}:{},...o.allow_paths!==void 0?{allow_paths:wn(o.allow_paths,Es,t,"destructive_command_protection.allow_paths",Yt)}:{}},l={...typeof i.enabled==="boolean"?{enabled:i.enabled}:{},...i.overrides!==void 0?{overrides:bo(i.overrides,vs,"secret_protection.overrides",Yt)}:{},...i.deny_paths!==void 0?{deny_paths:wn(i.deny_paths,Rs,t,"secret_protection.deny_paths",Yt)}:{},...i.allow_paths!==void 0?{allow_paths:wn(i.allow_paths,xs,t,"secret_protection.allow_paths",Yt)}:{}};return{policy:Jc({safety:s,workflow:typeof r.worktree_mode==="boolean"?{worktree_mode:r.worktree_mode}:{},destructive_command_protection:a,secret_protection:l}),diagnostics:e.audit===void 0?[]:[hy]}}function ru(e,t,n,r){return Object.fromEntries(t.flatMap((o)=>{let i=e[o];if(typeof i==="boolean")return[[o,i]];if(i!==void 0)r(`${n}.${o}`,ou);return[]}))}function Jc(e){return Object.fromEntries(Object.entries(e).flatMap((t)=>Object.keys(t[1]).length>0?[t]:[]))}var Yt=()=>{return},ou="not a boolean",iu="not an object",Cy=`not an integer between ${_s} and ${ws}`,Sy=["version","safety","workflow","destructive_command_protection","secret_protection","audit"];function by(e,t){let n=[];return{policy:su(e,t,(o,i)=>{n.push({path:o,reason:i})}),drops:n}}function vy(e,t){return su(e,t,Yt)}function su(e,t,n){if(!Ne(e))return n("","not a JSON object"),So();if(e.version!==1)n("version","not 1");let r=_n(e.safety,"safety",["level","overrides"],n),o=_n(r.overrides,"safety.overrides",En,n),i=_n(e.workflow,"workflow",["worktree_mode"],n),s=_n(e.destructive_command_protection,"destructive_command_protection",["enabled","overrides","allow_paths"],n),a=_n(e.secret_protection,"secret_protection",["enabled","overrides","deny_paths","allow_paths"],n),l=_n(e.audit,"audit",["retention_days"],n);return au(e,Sy,"",n),{version:1,safety:{level:Ey(r.level,n),overrides:ru(o,En,"safety.overrides",n)},workflow:{worktree_mode:Ps(i.worktree_mode,"workflow.worktree_mode",!1,n)},destructive_command_protection:{enabled:Ps(s.enabled,"destructive_command_protection.enabled",!0,n),overrides:bo(s.overrides,ps,"destructive_command_protection.overrides",n),allow_paths:wn(s.allow_paths,Es,t,"destructive_command_protection.allow_paths",n)},secret_protection:{enabled:Ps(a.enabled,"secret_protection.enabled",!0,n),overrides:bo(a.overrides,vs,"secret_protection.overrides",n),deny_paths:wn(a.deny_paths,Rs,t,"secret_protection.deny_paths",n),allow_paths:wn(a.allow_paths,xs,t,"secret_protection.allow_paths",n)},audit:{retention_days:Ry(l.retention_days,n)}}}function _n(e,t,n,r){if(e===void 0)return{};if(!Ne(e))return r(t,iu),{};return au(e,n,t,r),e}function au(e,t,n,r){for(let o of Object.keys(e).filter((i)=>!t.includes(i)))r(n===""?o:`${n}.${o}`,"unknown field")}function Ey(e,t){if(e===void 0)return"standard";if(Is.has(e))return e;return t("safety.level","not one of standard, strict, paranoid"),"standard"}function Ps(e,t,n,r){if(typeof e==="boolean")return e;if(e!==void 0)r(t,ou);return n}function Ry(e,t){if(!(e===void 0||typeof e==="number"&&Number.isInteger(e)&&e>=_s&&e<=ws))t("audit.retention_days",Cy);return $c(e)}function bo(e,t,n,r){if(e===void 0)return{};if(!Ne(e))return r(n,iu),{};return Object.fromEntries(Object.entries(e).flatMap(([o,i])=>{if(!t.has(o))return r(`${n}.${o}`,"unknown rule id"),[];if(i==="on"||i==="off")return[[o,i]];return r(`${n}.${o}`,'not "on" or "off"'),[]}))}function wn(e,t,n,r,o){if(e===void 0)return[];if(!Array.isArray(e))return o(r,"not an array"),[];return e.flatMap((i,s)=>{let a=t(i,n);if(a===null)return[i];return o(`${r}[${s}]`,a),[]})}function Ne(e){return!!e&&typeof e==="object"&&!Array.isArray(e)}function So(){return structuredClone(tu)}function Eo(e,t){if(!vo.existsSync(e))return{exists:!1,policy:So(),errors:[]};try{let n=vo.readFileSync(e,"utf-8");if(!n.trim())return{exists:!0,policy:So(),errors:[`${e}: Config file is empty`],fallback:"defaults"};let r=JSON.parse(n),o=by(r,t);if(o.drops.length===0)return{exists:!0,parsed:r,policy:o.policy,errors:[]};return{exists:!0,parsed:r,policy:o.policy,errors:o.drops.map((i)=>`${e}: ${xy(i)}`),fallback:Ne(r)?"salvaged":"defaults"}}catch(n){let r=n instanceof Error?n.message:String(n);return{exists:!0,policy:So(),errors:[`${e}: ${n instanceof SyntaxError?"Invalid JSON":r}`],fallback:"defaults"}}}function xy(e){return e.path===""?e.reason:`${e.path}: ${e.reason}`}function _y(e,t){let n=Eo(e,t);if(!n.exists){let r=globalThis.__CC_SAFETY_NET_EMBEDDED_POLICY__;if(!Ne(r))return{policy:eu(),errors:[]};let o=vy(r,t);return{policy:Ts(o),gui:o,errors:[],levelPresent:Qc(r)}}if(n.parsed===void 0)return{policy:eu(),errors:n.errors,...n.fallback?{fallback:n.fallback}:{}};return{policy:Ts(n.policy),gui:n.policy,errors:n.errors,...n.fallback?{fallback:n.fallback}:{},levelPresent:Qc(n.parsed)}}function Qc(e){let t=Ne(e)&&Ne(e.safety)?e.safety:{};return Is.has(t.level)}function lu(e){let t=Object.entries(e),n=new Set(t.flatMap(([r,o])=>o==="on"?[r]:[]));return[...new Set([...[...yo].filter((r)=>!n.has(r)),...t.flatMap(([r,o])=>o==="off"?[r]:[])])]}function eu(){return{safety:{},worktreeMode:!1,destructiveCommandProtectionEnabled:!0,destructiveCommandRuleOverrides:{},destructiveCommandAllowPaths:[],secretProtection:{enabled:!0,disabledRules:lu({}),denyPaths:[],allowPaths:[]}}}function Ts(e){return{safety:wy(e.safety),worktreeMode:e.workflow.worktree_mode,destructiveCommandProtectionEnabled:e.destructive_command_protection.enabled,destructiveCommandRuleOverrides:e.destructive_command_protection.overrides,destructiveCommandAllowPaths:e.destructive_command_protection.allow_paths,secretProtection:{enabled:e.secret_protection.enabled,disabledRules:lu(e.secret_protection.overrides),denyPaths:e.secret_protection.deny_paths,allowPaths:e.secret_protection.allow_paths}}}function wy(e){let t={...e.overrides.fail_closed!==void 0?{failClosed:e.overrides.fail_closed}:{},...e.overrides.paranoid_rm!==void 0?{paranoidRm:e.overrides.paranoid_rm}:{},...e.overrides.paranoid_interpreters!==void 0?{paranoidInterpreters:e.overrides.paranoid_interpreters}:{}};return{level:e.level,...Object.keys(t).length>0?{overrides:t}:{}}}function cu(e,t){let n=Fc(e,t),r=nu(e,t),o={rules:n.rules,transparentWrappers:n.transparent_wrappers,safety:r.safety,worktreeMode:r.worktreeMode,destructiveCommandProtectionEnabled:r.destructiveCommandProtectionEnabled,destructiveCommandRuleOverrides:r.destructiveCommandRuleOverrides,destructiveCommandAllowPaths:r.destructiveCommandAllowPaths,secretProtection:{enabled:r.secretProtection.enabled??!0,disabledRules:r.secretProtection.disabledRules??[],denyPaths:r.secretProtection.denyPaths,allowPaths:r.secretProtection.allowPaths??[]}},i={...n.userConfig?.overrides??{},...n.projectConfig?.overrides??{}},s=Object.freeze(Object.fromEntries(o.rules.map((a)=>{let l=n.rulebooks.find((u)=>u.rules.includes(a.name)),c=i[a.name];return[a.name,Object.freeze({id:a.name,...l?{rulebook:Object.freeze({name:l.name,version:l.version}),...Iy(l.spec)?{source:l.spec}:{}}:{},...c&&typeof c==="object"?{override:Object.freeze({type:"reason",reason:c.reason})}:{}})]})));return ky(o,Ay(n,r),s,r.policyScopes)}function Ay(e,t){let n=Ty(t);if(e.errors.length===0&&e.warnings.length===0&&!n)return;return{diagnostics:[...e.errors,...e.warnings,...t.errors],reason:Oy(e.errors.length>0?Py(e.errors):void 0,e.warnings.length>0?Os(e.warnings.join("; ")):void 0,n)}}function Py(e){return`${Os(e.join("; "))} Those rule sources are not active; every other rule and all built-in protections still apply`}function Ty(e){if(e.errors.length===0)return;let t=e.fallback==="salvaged"?"the salvaged policy with protective defaults":"built-in protective defaults";return`invalid policy config: ${e.errors.join("; ")}. Enforcing ${t}; the invalid values are not active. Fix the policy file manually`}function Iy(e){return/^(?:[A-Za-z0-9_.-]+$|https:\/\/github\.com\/|github:|gh:|[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+(?:#|$))/.test(e)}function ky(e,t,n=Object.freeze({}),r){let o=ks(structuredClone(e)),i=r?{policyScopes:ks(structuredClone(r))}:{};if(!t)return Object.freeze({state:"ready",policy:o,diagnostics:Object.freeze([]),ruleMetadata:n,...i});return Object.freeze({state:"degraded",policy:o,diagnostics:Object.freeze([...t.diagnostics]),reason:t.reason,ruleMetadata:n,...i})}function ks(e){if(typeof e!=="object"||e===null)return e;for(let t of Object.values(e))ks(t);return Object.freeze(e)}function Oy(...e){return Os(e.filter((t)=>!!t).join("; "))}function Os(e){return/[.!?]$/.test(e)?e:`${e}.`}function uu(e){let t=e.effectiveCapabilities,n=e.strict??t.fail_closed.enabled,r=e.paranoidRm??t.paranoid_rm.enabled,o=e.paranoidInterpreters??t.paranoid_interpreters.enabled,i={fail_closed:Ms(t.fail_closed,e.strict,"strict"),paranoid_rm:Ms(t.paranoid_rm,e.paranoidRm,"paranoidRm"),paranoid_interpreters:Ms(t.paranoid_interpreters,e.paranoidInterpreters,"paranoidInterpreters")};return{policy:Kc(e.policySnapshot.policy,i),effectiveCapabilities:i,effectiveLevel:Qi({failClosed:n,paranoidRm:r,paranoidInterpreters:o}),strict:n,paranoidRm:r,paranoidInterpreters:o,worktreeMode:e.worktreeMode??!1}}function Ms(e,t,n){if(t===void 0||t===e.enabled)return e;return{enabled:t,source:"capability_override",sources:[...e.sources,`analysis options.${n}`]}}function ir(e,t){if(e!=="powershell")return t[0]?.provenance==="command-substitution";let n=t[0]?.text==="&"||t[0]?.text==="."?1:0,r=t[n]?.provenance;return r!==void 0&&r!=="literal"}var My=/^[A-Za-z_][A-Za-z0-9_]*=/;function Ro(e,t){return e?.provenance==="literal"&&!e.quoted&&e.raw===t&&e.text===t}function sr(e){let t=Ro(e.words[0],"time")?1:0,n=t===1&&Ro(e.words[t],"-p")?t+1:t,r=t===1&&Ro(e.words[n],"--")?n+1:n,o=Ro(e.words[r],"!")?r+1:r,i=e.words.slice(o).find((s)=>!My.test(s.text));return i?.provenance==="literal"?i.text:void 0}function xo(){return{words:[],redirections:[],nested:[],start:-1,end:-1,reset(){this.words=[],this.redirections=[],this.nested=[],this.start=-1,this.end=-1}}}function Dy(e){return Object.freeze({...e,span:Object.freeze(e.span),words:Object.freeze(e.words),redirections:Object.freeze(e.redirections.map((t)=>Object.freeze({...t,span:Object.freeze(t.span),...t.heredoc?{heredoc:Object.freeze({...t.heredoc,bodySpan:Object.freeze(t.heredoc.bodySpan),terminatorSpan:Object.freeze(t.heredoc.terminatorSpan)})}:{}}))),nested:Object.freeze(e.nested.map((t)=>Ae(t)))})}function _o(e,t,n){e.push(n),t.reset()}function wo(e){let t=[];return{parts:t,push:(n,r,o)=>{if(r<=n)return;t.push({raw:e.slice(n,r),span:{start:n,end:r},provenance:o})}}}function Ds(e){let t=e.parts??[{raw:e.raw,span:e.span,provenance:e.provenance}];return Object.freeze({kind:"word",...e,span:Object.freeze(e.span),parts:Object.freeze(t.map((n)=>Object.freeze({...n,span:Object.freeze(n.span)})))})}function An(e,t,n,r,o,i,s){return Ds({text:r,raw:e.slice(t,n),span:{start:t,end:n},provenance:o,quoted:i,...s?{parts:s}:{}})}function Ae(e){return Object.freeze({...e,span:Object.freeze(e.span),issues:Object.freeze(e.issues.map((t)=>Object.freeze({...t,span:Object.freeze(t.span)}))),nodes:Object.freeze(e.nodes.map((t)=>{if(t.kind==="command")return Dy(t);if(t.kind==="group"||t.kind==="function")return Object.freeze({...t,span:Object.freeze(t.span),body:Ae(t.body)});return Object.freeze({...t,span:Object.freeze(t.span)})}))})}function Ns(e,t,n){if(t>=n||mu(e[t]??""))return null;let r="",o=!1,i=!1,s=t;while(s<n&&!mu(e[s]??"")){let a=e[s]??"";if(a==="'"){o=!0;let l=du(e,s+1,n,"'");r+=l.text,i||=!l.closed,s=l.next;continue}if(a==='"'){o=!0;let l=du(e,s+1,n,'"');r+=l.text,i||=!l.closed,s=l.next;continue}if(a==="\\"){o=!0;let l=e[s+1];if(!l||l===`
8
+ `||l==="\r"){i=!0;break}r+=l,s+=2;continue}if(a==="`"||e.startsWith("$(",s)||e.startsWith("${",s)||e.startsWith("<(",s)||e.startsWith(">(",s))i=!0;r+=a,s++}return{delimiter:r,quoted:o,next:s,span:{start:t,end:s},ambiguous:i}}function Ls(e,t,n,r){let o=[],i=t;for(let s of r){let a=i,l=!1;while(i<n){let c=Ny(e,i,n);if((s.stripTabs?c.text.replace(/^\t+/,""):c.text)===s.delimiter){s.attach({body:s.stripTabs?Ly(e.slice(a,i)):e.slice(a,i),delimiter:s.delimiter,quotedDelimiter:s.quotedDelimiter,bodySpan:{start:a,end:i},terminatorSpan:{start:i,end:c.contentEnd}}),i=c.next,l=!0;break}if(c.next<=i)break;i=c.next}if(l)continue;return o.push({code:"unterminated-heredoc",message:`heredoc delimiter ${s.delimiter} was not found`,span:s.declarationSpan}),{next:n,issues:o,terminated:!1}}return{next:i,issues:o,terminated:!0}}function du(e,t,n,r){let o="",i=t;while(i<n&&e[i]!==`
9
+ `&&e[i]!=="\r"){let s=e[i]??"";if(s===r)return{text:o,next:i+1,closed:!0};if(r==='"'&&s==="\\"&&e[i+1]){let a=e[i+1]??"";o+=["$","`",'"',"\\"].includes(a)?a:`\\${a}`,i+=2;continue}o+=s,i++}return{text:o,next:i,closed:!1}}function mu(e){return/[\s;&|<>)]/u.test(e)||e==="`"}function Ny(e,t,n){let r=t;while(r<n&&e[r]!==`
10
+ `&&e[r]!=="\r")r++;let o=r>=n?n:e[r]==="\r"&&e[r+1]===`
11
+ `?r+2:r+1;return{text:e.slice(t,r),contentEnd:r,next:o}}function Ly(e){return e.replace(/(^|\r\n?|\n)\t+/g,"$1")}var yu=new Set(["&&","||","|","|&"]);function Cu(e,t){let n={start:0,end:e.length};if(e.length>t.maxInputLength)return Ae({kind:"program",dialect:"posix",source:e,span:n,status:"limited",issues:[{code:"input-limit",message:`command exceeds ${t.maxInputLength} UTF-16 code units`,span:n}],nodes:[]});let r=To(e,0,e.length,t,{used:0,max:t.maxWords},0);return Ae({kind:"program",dialect:"posix",source:e,span:n,status:Oo(r.issues,r.limited),issues:r.issues,nodes:r.nodes})}function To(e,t,n,r,o,i,s){let a=[],l=[],c=xo(),u=[],m=()=>{if(c.words.length===0&&c.redirections.length===0)return;let f={start:c.start,end:c.end},p=c.words.map((h)=>h.text);_o(a,c,{kind:"command",dialect:"posix",source:e.slice(f.start,f.end),span:f,words:c.words,redirections:c.redirections,nested:c.nested,displayText:l.length>0&&a.length===0?e.slice(t,n):p.join(" ")})},d=t;while(d<n){let f=e[d];if(!f)break;if(s&&f===s)return m(),hu(a,l),{nodes:a,issues:l,next:d+1,closed:!0,limited:!1,pendingHeredocs:u};if(ko(f)){if(f===`
12
+ `||f==="\r"){m();let b=f==="\r"&&e[d+1]===`
13
+ `?d+2:d+1,w=a.at(-1);if(w?.kind!=="connector"||!yu.has(w.operator))a.push(Object.freeze({kind:"connector",operator:e.slice(d,b),span:Object.freeze({start:d,end:b})}));if(u.length>0){let R=Ls(e,b,n,u.splice(0));l.push(...R.issues),d=R.next;continue}d=b;continue}d++;continue}if(f==="#"){while(d<n&&e[d]!==`
14
+ `&&e[d]!=="\r")d++;continue}let p=c.start===-1?nC(e,d,n):void 0;if(p){if(Fs(a,l,d),i>=r.maxDepth)return Pn(a,l,d,"depth-limit",r.maxDepth);if(!Ws(o))return Pn(a,l,d,"word-limit",r.maxWords);let b=To(e,p.braceIndex+1,n,r,o,i+1,"}"),w=b.next,R={start:p.braceIndex+1,end:b.closed?w-1:w},A=fu(e,R,b);if(a.push({kind:"function",name:p.name,span:{start:d,end:w},body:A}),l.push(...b.issues),b.pendingHeredocs.length>0||lr(b.nodes))l.push({code:"unsupported-heredoc-context",message:"heredocs attached inside function bodies are not supported safely",span:{start:d,end:w}});if(u.push(...b.pendingHeredocs),b.limited)return Po(a,l,b.next);if(!b.closed)l.push({code:"unclosed-function-body",message:"function body is not closed",span:{start:p.braceIndex,end:w}});d=w;continue}let h=Io(e,d);if(h){if(m(),!wu(a.at(-1)))l.push({code:"unexpected-connector",message:`connector ${h} has no preceding command`,span:{start:d,end:d+h.length}});a.push(Object.freeze({kind:"connector",operator:h,span:Object.freeze({start:d,end:d+h.length})})),d+=h.length;continue}if(f===")"){m(),l.push({code:"unexpected-closing-delimiter",message:"closing parenthesis has no matching opening parenthesis",span:{start:d,end:d+1}}),a.push({kind:"unknown",source:f,span:{start:d,end:d+1}}),d++;continue}if((f==="("||f==="{"&&$y(e,d,n))&&c.start===-1){if(Fs(a,l,d),i>=r.maxDepth)return Pn(a,l,d,"depth-limit",r.maxDepth);let b=f==="("?")":"}",w=To(e,d+1,n,r,o,i+1,b),R=w.next,A={start:d+1,end:w.closed?R-1:R},X=fu(e,A,w);if(a.push({kind:"group",style:f==="("?"subshell":"brace",span:{start:d,end:R},body:X}),l.push(...w.issues),w.pendingHeredocs.length>0||lr(w.nodes))l.push({code:"unsupported-heredoc-context",message:"heredocs attached inside command groups are not supported safely",span:{start:d,end:R}});if(u.push(...w.pendingHeredocs),w.limited)return Po(a,l,w.next);if(!w.closed)l.push({code:f==="("?"unclosed-subshell":"unclosed-brace-group",message:`${f} group is not closed`,span:{start:d,end:R}});d=R;continue}let g=(f==="<"||f===">")&&e[d+1]!=="("?zy(e,d):null;if(g){let b=c.words.at(-1),w=b&&b.span.end===d&&/^[0-9]+$/.test(b.raw)?Number(b.raw):void 0;if(w!==void 0)c.words.pop();let R=w===void 0?d:b?.span.start??d;c.start=c.start===-1?d:c.start;let A=d+g.length;while(A<n&&/[ \t]/.test(e[A]??""))A++;let X=e[A],te=A>d+g.length&&X==="#",ue=!X||ko(X)||!!Io(e,A)||X===s||X===")"||te||(X==="<"||X===">")&&e[A+1]!=="(",oe=g==="<<"||g==="<<-",V=oe?Ns(e,A,n):void 0,G=V?{word:An(e,A,V.next,V.delimiter,"literal",V.quoted),nested:[],issues:[],next:V.next,limited:!1}:!ue?Gs(e,A,n,r,o,i):void 0;if(G){if(l.push(...G.issues),G.limited)return Po(a,l,G.next);if(!Ws(o))return Pn(a,l,G.next,"word-limit",r.maxWords)}let pe=G?.next??d+g.length,ze={kind:"redirection",operator:g,span:{start:R,end:pe},...w===void 0?{}:{fd:w},...G?{target:G.word}:{}};if(c.redirections.push(ze),oe&&!V)l.push({code:"missing-heredoc-delimiter",message:"heredoc redirection requires a delimiter word",span:{start:d,end:d+g.length}});if(V){if(V.ambiguous||V.delimiter.length===0)l.push({code:"ambiguous-heredoc-delimiter",message:"heredoc delimiter cannot be determined safely",span:V.span});let dt=c.nested;u.push({delimiter:V.delimiter,quotedDelimiter:V.quoted,stripTabs:g==="<<-",declarationSpan:{start:R,end:pe},attach:(Ve)=>{if(ze.heredoc=Ve,Ve.quotedDelimiter)return;dt.push(...Fy(e,Ve.bodySpan.start,Ve.bodySpan.end,r,o,i+1))}})}if(!oe&&!G)l.push({code:"missing-redirection-target",message:`redirection ${g} requires a target word`,span:{start:d,end:d+g.length}});if(G)c.nested.push(...G.nested);c.end=pe,d=pe;continue}if(c.start===-1)Fs(a,l,d);let y=Gs(e,d,n,r,o,i);if(l.push(...y.issues),y.limited)return Po(a,l,y.next);let v=Ky(c.words)?Jy(e,y.word,o.max-o.used,r.maxDepth,r.maxInputLength):void 0;if(v?.limitCode)return Pn(a,l,y.next,v.limitCode,v.limitCode==="word-limit"?r.maxWords:v.limitCode==="depth-limit"?r.maxDepth:r.maxInputLength);let E=v?.words??[y.word];for(let b of E){if(!Ws(o))return Pn(a,l,y.next,"word-limit",r.maxWords);c.words.push(b)}c.start=c.start===-1?d:c.start,c.end=y.next,c.nested.push(...y.nested),d=y.next>d?y.next:d+1}return m(),hu(a,l),l.push(...rC(u)),{nodes:a,issues:l,next:d,closed:s===void 0,limited:!1,pendingHeredocs:[]}}function fu(e,t,n){return{kind:"program",dialect:"posix",source:e.slice(t.start,t.end),span:t,status:Oo(n.issues,n.limited),issues:n.issues,nodes:n.nodes}}function Gs(e,t,n,r,o,i){let s="",a=t,l=!1,c="literal",u=[],m=[],d=!1;while(a<n){let f=e[a],p=(f==="<"||f===">")&&e[a+1]==="(";if(!f||ko(f)||(f===";"||f==="|"||f==="&")&&Io(e,a)||(f==="<"||f===">")&&!p)break;if(f===")")break;if(f==="'"){l=!0;let g=e.indexOf("'",a+1);if(g===-1||g>=n){s+=e.slice(a+1,n),m.push({code:"unclosed-single-quote",message:"single-quoted word is not closed",span:{start:a,end:n}}),a=n;break}s+=e.slice(a+1,g),a=g+1;continue}if(f==='"'){l=!0;let g=Wy(e,a,n,r,o,i);if(s+=g.text,u.push(...g.nested),m.push(...g.issues),d||=g.limited,c=ar(c,g.provenance),a=g.next,d)break;continue}if(e.startsWith("$'",a)){l=!0;let g=By(e,a+2,n);if(s+=g.text,m.push(...g.issues),!g.closed)m.push({code:"unclosed-ansi-c-quote",message:"ANSI-C quoted word is not closed",span:{start:a,end:n}});a=g.next;continue}if(f==="\\"){let g=e[a+1];if(!g){m.push({code:"trailing-escape",message:"escape has no following character",span:{start:a,end:a+1}}),a++;break}if(g===`
15
+ `){a+=2;continue}s+=g,a+=2;continue}let h=f==="$"||f==="<"||f===">"||f==="`"?Mo(e,a,n,r,o,i):null;if(h){let g=Su(h,u,m);if(d||=g.limited,c=ar(c,g.provenance),a=g.next,d)break;continue}if(f==="$"){let g=Eu(e,a,n,s,c);s=g.text,c=g.provenance,a=g.next;continue}if(f==="*"||f==="?"||f==="[")c=ar(c,"glob");s+=f,a++}return{word:An(e,t,a,s,c,l,c==="literal"?void 0:Uy(e,t,a)),nested:u,issues:m,next:a,limited:d}}function Wy(e,t,n,r,o,i){let s="",a="literal",l=[],c=[],u=!1,m=t+1;while(m<n){let d=e[m];if(d==='"')return{text:s,provenance:a,nested:l,issues:c,next:m+1,limited:u};if(d==="\\"&&e[m+1]){let p=e[m+1]??"";if(p===`
16
+ `){m+=2;continue}if(p==="\r"&&e[m+2]===`
17
+ `){m+=3;continue}s+=["$","`",'"',"\\"].includes(p)?p:`\\${p}`,m+=2;continue}if(e.startsWith("$((",m)){let p=zs(e,m+3,n,"))"),h=p===-1?n:p+2;if(s+=e.slice(m,h),p===-1)c.push({code:"unclosed-arithmetic",message:"$(( substitution is not closed",span:{start:m,end:h}});m=h;continue}let f=Mo(e,m,n,r,o,i);if(f){let p=Su(f,l,c);if(m=p.next,u||=p.limited,a=ar(a,p.provenance),u)return{text:s,provenance:a,nested:l,issues:c,next:m,limited:u};continue}if(d==="$"){let p=Eu(e,m,n,s,a);s=p.text,a=p.provenance,m=p.next;continue}s+=d??"",m++}return c.push({code:"unclosed-double-quote",message:"double-quoted word is not closed",span:{start:t,end:n}}),{text:s,provenance:a,nested:l,issues:c,next:n,limited:u}}function Mo(e,t,n,r,o,i){let s=e.startsWith("$((",t),a=e.startsWith("$(",t)&&!s,l=e.startsWith("<(",t)||e.startsWith(">(",t),c=e[t]==="`";if(!s&&!a&&!l&&!c)return null;let u=s?3:c?1:2,m=s?"))":c?"`":")",d=zs(e,t+u,n,m),f=d===-1?n:d,p=d===-1?n:d+m.length;if(i>=r.maxDepth)return{program:tC(e,t+u,f,"depth-limit"),next:p,provenance:s?"arithmetic":"command-substitution"};if(s){let v=[],E=[],b=!1,w=t+u;while(w<f){let R=Mo(e,w,f,r,o,i+1);if(!R){w++;continue}if(v.push(...R.program.nodes),E.push(...R.program.issues),b||=R.program.status==="limited",w=R.next,b)break}if(d===-1)E.push({code:"unclosed-arithmetic",message:"$(( substitution is not closed",span:{start:t,end:p}});return{program:Ae({kind:"program",dialect:"posix",source:e.slice(t+u,f),span:{start:t+u,end:f},status:Oo(E,b),issues:E,nodes:v}),next:p,provenance:"arithmetic"}}let h=To(e,t+u,f,r,o,i+1),g=d===-1?[{code:"unclosed-command-substitution",message:`${e.slice(t,t+u)} substitution is not closed`,span:{start:t,end:p}}]:[],y=(c||l)&&lr(h.nodes)?[{code:"unsupported-heredoc-context",message:"heredocs are supported only in ordinary commands and $(...) substitutions",span:{start:t,end:p}}]:[];return{program:Ae({kind:"program",dialect:"posix",source:e.slice(t+u,f),span:{start:t+u,end:f},status:Oo([...h.issues,...g,...y],h.limited),issues:[...h.issues,...g,...y],nodes:h.nodes}),next:p,provenance:"command-substitution"}}function Fy(e,t,n,r,o,i){let s=[],a=t;while(a<n){let l=e[a];if(l==="\\"){a+=2;continue}let c=l==="$"||l==="`"?Mo(e,a,n,r,o,i):null;if(!c){a++;continue}if(s.push(c.program),a=c.next,c.program.status==="limited")break}return s}function Su(e,t,n){return t.push(e.program),n.push(...e.program.issues),{provenance:e.provenance,next:e.next,limited:e.program.status==="limited"}}function zs(e,t,n,r){if(r==="`"){for(let a=t;a<n;a++){if(e[a]==="\\"){a++;continue}if(e[a]==="`")return a}return-1}let o=1,i={single:!1,double:!1},s=[];for(let a=t;a<n;a++){let l=e[a];if((l===`
18
+ `||l==="\r")&&s.length>0){let u=l==="\r"&&e[a+1]===`
19
+ `?a+2:a+1,m=Ls(e,u,n,s.splice(0));if(!m.terminated)return-1;a=m.next-1;continue}let c=bu(e,a,t,n,i);if(c!==null){a=c;continue}if(!i.double&&e.startsWith("$((",a)){let u=Gy(e,a+3,n);if(u===-1)return-1;a=u+1;continue}if(r===")"&&!i.double&&l==="<"&&e[a+1]==="<"&&e[a+2]!=="<"){let u=e[a+2]==="-",m=a+(u?3:2);while(m<n&&/[ \t]/.test(e[m]??""))m++;let d=Ns(e,m,n);if(d){s.push({delimiter:d.delimiter,quotedDelimiter:d.quoted,stripTabs:u,declarationSpan:{start:a,end:d.next},attach:()=>{return}}),a=d.next-1;continue}}if(e.startsWith("$(",a)&&!e.startsWith("$((",a)){o++,a++;continue}if(l==="("&&!i.double)o++;if(l===")"&&!i.double){if(o--,o===0)return r==="))"&&e[a+1]!==")"?-1:a}}return-1}function Gy(e,t,n){let r=1,o={single:!1,double:!1};for(let i=t;i<n;i++){let s=e[i],a=bu(e,i,t,n,o);if(a!==null){i=a;continue}if(e.startsWith("$(",i)&&!e.startsWith("$((",i)){r++,i++;continue}if(s==="("&&!o.double)r++;if(s!==")"||o.double)continue;if(r--,r===0)return e[i+1]===")"?i:-1}return-1}function bu(e,t,n,r,o){let i=e[t];if(i==="\\"&&!o.single)return t+1;if(!o.double&&i==="'")o.single=!o.single;if(!o.single&&i==='"')o.double=!o.double;if(o.single)return t;if(o.double||i!=="#"||!oC(e,t,n))return null;let s=t;while(s+1<r&&e[s+1]!==`
20
+ `&&e[s+1]!=="\r")s++;return s}function Io(e,t){let n=e[t];if(n===";")return";";if(n==="&")return e[t+1]==="&"?"&&":"&";if(n==="|")return e[t+1]==="|"?"||":e[t+1]==="&"?"|&":"|";return null}function zy(e,t){let n=e[t];if(n===">"){if(e[t+1]===">")return">>";if(e[t+1]==="&")return">&";return e[t+1]==="|"?">|":">"}if(n!=="<")return null;if(e.startsWith("<<<",t))return"<<<";if(e.startsWith("<<-",t))return"<<-";if(e[t+1]==="<")return"<<";if(e[t+1]==="&")return"<&";if(e[t+1]===">")return"<>";return"<"}function ko(e){let t=e.charCodeAt(0);if(t===32||t>=9&&t<=13)return!0;if(t<128)return!1;return/\s/u.test(e)}function vu(e,t,n){if(e[t+1]==="{"){let o=e.indexOf("}",t+2);return o===-1||o>=n?n:o+1}let r=t+1;while(r<n&&/[A-Za-z0-9_?@#$!*-]/.test(e[r]??""))r++;return r===t+1?t+1:r}function By(e,t,n){let r="",o=[],i=t;while(i<n){let s=e[i];if(s==="'")return{text:r,next:i+1,closed:!0,issues:o};if(s!=="\\"){r+=s??"",i++;continue}let a=Hy(e,i+1,n);if(r+=a.text,a.invalidCodePoint!==void 0)o.push({code:"invalid-ansi-c-code-point",message:`ANSI-C escape is not a valid Unicode scalar value: ${a.invalidCodePoint}`,span:{start:i,end:a.next}});i=a.next}return{text:r,next:n,closed:!1,issues:o}}function Hy(e,t,n){let r=e[t];if(!r||t>=n)return{text:"\\",next:t};let o=new Map([["a","\x07"],["b","\b"],["e","\x1B"],["E","\x1B"],["f","\f"],["n",`
21
+ `],["r","\r"],["t","\t"],["v","\v"],["\\","\\"],["'","'"],['"','"']]);if(o.has(r))return{text:o.get(r)??r,next:t+1};if(r==="x")return Ao(e,t+1,n,16,2,t+1);if(r==="u")return Ao(e,t+1,n,16,4,t+1);if(r==="U")return Ao(e,t+1,n,16,8,t+1);if(/[0-7]/.test(r))return Ao(e,t,n,8,3,t+1);return{text:r,next:t+1}}function Ao(e,t,n,r,o,i){let s=r===16?/[0-9a-fA-F]/:/[0-7]/,a="",l=t;while(l<n&&a.length<o&&s.test(e[l]??""))a+=e[l],l++;if(!a)return{text:e[i-1]??"",next:i};let c=Number.parseInt(a,r);return c>1114111||c>=55296&&c<=57343?{text:"�",next:l,invalidCodePoint:c}:{text:String.fromCodePoint(c),next:l}}function Oo(e,t=!1){if(t)return"limited";if(e.some((n)=>n.code==="invalid-ansi-c-code-point"||n.code==="missing-heredoc-delimiter"||n.code==="ambiguous-heredoc-delimiter"||n.code==="unterminated-heredoc"||n.code==="unsupported-heredoc-context"))return"invalid";return e.length>0?"partial":"complete"}function Eu(e,t,n,r,o){let i=vu(e,t,n);return{text:r+e.slice(t,i),provenance:ar(o,"variable"),next:i}}function Uy(e,t,n){let r=wo(e),o=t,i=!1,s=!1,a=t;while(a<n){let l=e[a];if(l==="\\"&&!i){a+=2;continue}if(!s&&l==="'"){i=!i,a++;continue}if(!i&&l==='"'){s=!s,a++;continue}if(i){a++;continue}let c=e.startsWith("$((",a),u=e.startsWith("$(",a)&&!c,m=!s&&(e.startsWith("<(",a)||e.startsWith(">(",a)),d=l==="`";if(c||u||m||d){let f=c?3:d?1:2,p=c?"))":d?"`":")",h=zs(e,a+f,n,p),g=h===-1?n:h+p.length;r.push(o,a,"literal"),r.push(a,g,c?"arithmetic":"command-substitution"),a=g,o=g;continue}if(l==="$"){let f=vu(e,a,n);if(f>a+1){r.push(o,a,"literal"),r.push(a,f,"variable"),a=f,o=f;continue}}if(!s&&(l==="*"||l==="?"||l==="[")){r.push(o,a,"literal"),r.push(a,a+1,"glob"),a++,o=a;continue}a++}return r.push(o,n,"literal"),r.parts}function ar(e,t){if(t==="command-substitution"||e==="command-substitution")return"command-substitution";if(t==="arithmetic"||e==="arithmetic")return"arithmetic";if(t==="variable"||e==="variable")return"variable";if(t==="glob"||e==="glob")return"glob";return e}function $y(e,t,n){return t+1>=n||ko(e[t+1]??"")||Io(e,t+1)!==null}var jy=new Set(["-u","--unset","-C","--chdir","-S","--split-string","-P"]),Vy=new Set(["-u","-g","-C","-D","-h","-p","-r","-t","-T","-U"]);function Ky(e){let t=0;while(t<=e.length){while(/^[A-Za-z_][A-Za-z0-9_]*=/.test(e[t]?.text??""))t++;if(t===e.length)return!0;let n=qy(e,t);if(n===void 0||n===null)return!1;t=n}return!1}function qy(e,t){let n=e[t]?.text.toLowerCase();if(n==="command")return Yy(e,t);if(n==="env")return Zy(e,t);if(n==="sudo")return Xy(e,t);return}function Yy(e,t){if(e[t+1]?.text==="-v")return null;for(let n=t+1;n<e.length;n++){let r=e[n]?.text??"";if(r==="--")return n+1;if(r==="-p"||r==="-v"||r==="-V"||/^-[pvV]+$/.test(r))continue;return n}return e.length}function Zy(e,t){for(let n=t+1;n<e.length;n++){let r=e[n]?.text??"";if(r==="--")return n+1;if(jy.has(r)){if(e[n+1]===void 0)return null;n++;continue}if(r.startsWith("-u=")||r.startsWith("--unset=")||r.startsWith("-C")&&r.length>2||r.startsWith("--chdir=")||r.startsWith("-S")&&r.length>2||r.startsWith("--split-string=")||r.startsWith("-P"))continue;if(r.startsWith("-")||/^[A-Za-z_][A-Za-z0-9_]*=/.test(r))continue;return n}return e.length}function Xy(e,t){for(let n=t+1;n<e.length;n++){let r=e[n]?.text??"";if(r==="--")return n+1;if(Vy.has(r)){if(e[n+1]===void 0)return null;n++;continue}if(r.startsWith("-"))continue;return n}return e.length}function Ru(e,t,n,r){if(e.provenance!=="literal"||!e.raw.includes("{"))return;let o=[e.raw],i=e.raw.length,s=0;while(!0){let l=o.findIndex((p)=>gu(p));if(l===-1)break;if(++s>n)return{limited:!0};let c=o[l]??"",u=gu(c);if(!u||u.kind==="range")return{limited:!0};let m=u.start+c.length-u.end,d=u.alternatives.reduce((p,h)=>p+m+h.length,0);if(i-c.length+d>r||o.length-1+u.alternatives.length>t)return{limited:!0};let f=xu(c,u);o.splice(l,1,...f),i+=d-c.length}if(s===0)return;let a=o.map((l)=>eC(l,n));if(a.some((l)=>l===null))return{limited:!0};return{words:[...new Set(a.filter((l)=>l!==null&&l!==""))]}}function Jy(e,t,n,r,o){if(t.provenance!=="literal"||t.quoted||t.raw!==t.text||!t.raw.includes("{"))return;let i=[t.text],s=t.text.length,a=0;while(!0){let c=i.findIndex((g)=>pu(g));if(c===-1)break;if(++a>r)return{limitCode:"depth-limit"};let u=i[c]??"",m=pu(u);if(!m)break;let d=m.start+u.length-m.end,f=m.alternatives.filter((g)=>d+g.length>0),p=f.reduce((g,y)=>g+d+y.length,0);if(s-u.length+p>o)return{limitCode:"brace-expansion-limit"};if(i.length-1+f.length>n)return{limitCode:"word-limit"};let h=xu(u,{...m,alternatives:f});i.splice(c,1,...h),s+=p-u.length}let l=i.filter((c)=>c.length>0);if(a===0)return;return{words:l.map((c)=>An(e,t.span.start,t.span.end,c,"literal",!1))}}function pu(e){let t=[],n;for(let r=0;r<e.length;r++){let o=e[r];if(o==="{"){t.push({start:r,commas:[]});continue}if(o===","&&t.length>0){t.at(-1)?.commas.push(r);continue}if(o!=="}"||t.length===0)continue;let i=t.pop();if(!i||i.commas.length===0)continue;if(!n||i.start<n.start)n={start:i.start,end:r+1,commas:i.commas}}if(!n)return;return{start:n.start,end:n.end,alternatives:_u(e,n)}}function gu(e){let t=[],n,r=null,o=!1;for(let i=0;i<e.length;i++){let s=e[i];if(o){o=!1;continue}if(s==="\\"&&r!=="'"){o=!0;continue}if(s===r){r=null;continue}if(r===null&&(s==="'"||s==='"')){r=s;continue}if(r!==null)continue;if(s==="{"){t.push({start:i,commas:[]});continue}if(s===","&&t.length>0){t.at(-1)?.commas.push(i);continue}if(s!=="}"||t.length===0)continue;let a=t.pop();if(!a)continue;let l=a.commas.length>0?{kind:"alternatives",start:a.start,end:i+1,commas:a.commas}:Qy(e.slice(a.start+1,i))?{kind:"range",start:a.start,end:i+1}:void 0;if(l&&(!n||l.start<n.start))n=l}if(!n||n.kind==="range")return n;return{kind:n.kind,start:n.start,end:n.end,alternatives:_u(e,n)}}function xu(e,t){return t.alternatives.map((n)=>`${e.slice(0,t.start)}${n}${e.slice(t.end)}`)}function _u(e,t){let n=[t.start,...t.commas,t.end-1];return n.slice(0,-1).map((r,o)=>e.slice(r+1,n[o+1]))}function Qy(e){return/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(e)||/^[A-Za-z]\.\.[A-Za-z](?:\.\.-?\d+)?$/.test(e)}function eC(e,t){let n=`x${e}`,r=Gs(n,0,n.length,{maxInputLength:n.length,maxWords:1,maxDepth:t},{used:0,max:1},0);if(r.limited||r.issues.length>0||r.next!==n.length||r.word.provenance!=="literal")return null;return r.word.text.slice(1)}function tC(e,t,n,r){return Ae({kind:"program",dialect:"posix",source:e.slice(t,n),span:{start:t,end:n},status:"limited",issues:[{code:r,message:"command structure exceeds parser limit",span:{start:t,end:n}}],nodes:[]})}function Pn(e,t,n,r,o){return{nodes:e,issues:[...t,{code:r,message:`command structure exceeds parser limit ${o}`,span:{start:n,end:n}}],next:n,closed:!1,limited:!0,pendingHeredocs:[]}}function Po(e,t,n){return{nodes:e,issues:t,next:n,closed:!1,limited:!0,pendingHeredocs:[]}}function Ws(e){return e.used++,e.used<=e.max}function nC(e,t,n){let r=e.slice(t,n),o=/^(?:function[ \t]+)?([A-Za-z_][A-Za-z0-9_]*)[ \t]*\([ \t]*\)[ \t]*\{/.exec(r)??/^function[ \t]+([A-Za-z_][A-Za-z0-9_]*)[ \t]+\{/.exec(r),i=o?.[1];if(!o||!i)return;return{name:i,braceIndex:t+o[0].lastIndexOf("{")}}function lr(e){return e.some((t)=>{if(t.kind==="command")return t.redirections.some((n)=>n.heredoc)||t.nested.some((n)=>lr(n.nodes));return(t.kind==="group"||t.kind==="function")&&lr(t.body.nodes)})}function rC(e){return e.map((t)=>({code:"unterminated-heredoc",message:`heredoc delimiter ${t.delimiter} was not found`,span:t.declarationSpan}))}function wu(e){return e?.kind==="command"||e?.kind==="group"||e?.kind==="function"}function hu(e,t){let n=e.at(-1);if(n?.kind!=="connector"||!yu.has(n.operator))return;t.push({code:"missing-command-after-connector",message:`connector ${n.operator} requires a following command`,span:n.span})}function Fs(e,t,n){if(!wu(e.at(-1)))return;t.push({code:"missing-command-connector",message:"adjacent commands require a connector",span:{start:n,end:n+1}})}function oC(e,t,n){return t===n||/[\s;&|()]/u.test(e[t-1]??"")}var Au=new Set(["remove-item","ri","del","erase","rd","rmdir","get-content","set-content","add-content","copy-item","move-item"]),iC=new Set(["gc","cat","type","cp","mv","rm"]),Pu=["-rec","-for","-path","-literalpath","-whatif"],sC=/^\$env:\w/i,aC=/^(?:\$\{?\w+\}?|~)\\./,Do={maxInputLength:131072,maxWords:16384,maxDepth:64};function Tu(e){let t=e.toLowerCase().replaceAll("`","");if(![...Au].some((r)=>t.includes(r))&&!(t.includes("rm")&&Pu.some((r)=>t.includes(r)))&&!t.includes("<#")&&!lC(t))return!1;let n=pC(e);if(n.posixHeredoc)return!1;return n.invalidComment||n.commands.some(cC)}function lC(e){if(e.includes("$env:"))return!0;return e.includes("\\")&&(e.includes("$")||e.includes("~"))}function cC(e){let t=e[0]==="&"||e[0]==="."?1:0,n=e[t]?.toLowerCase();if(n&&Au.has(n))return!0;let r=e.slice(t+1);if(n&&iC.has(n)&&r.some(uC))return!0;if(n!=="rm")return!1;return r.some((o)=>{let i=o.toLowerCase().split(":",1)[0]??"";return Pu.some((s)=>i.startsWith(s))})}function uC(e){return sC.test(e)||aC.test(e)}function Iu(e,t){let n={start:0,end:e.length};if(e.length>t.maxInputLength)return Ae({kind:"program",dialect:"powershell",source:e,span:n,status:"limited",issues:[{code:"input-limit",message:`command exceeds ${t.maxInputLength} UTF-16 code units`,span:n}],nodes:[]});let r=js(e,0,e.length,t,0);return Ae({kind:"program",dialect:"powershell",source:e,span:n,status:gC(r.issues,r.limited),issues:r.issues,nodes:r.nodes})}function js(e,t,n,r,o,i=!1){let s=[],a=[],l=xo(),c=0,u=!1,m=()=>{if(l.words.length===0&&l.redirections.length===0)return;let f={start:l.start,end:l.end};_o(s,l,{kind:"command",dialect:"powershell",source:e.slice(f.start,f.end),span:f,words:l.words,redirections:l.redirections,nested:l.nested,displayText:l.words.map((p)=>p.text).join(" ")})},d=t;while(d<n){let f=e[d];if(!f)break;if(i&&f==="}")return m(),{nodes:s,issues:a,next:d+1,closed:!0,words:c,limited:u};let p=Mu(e,d,n,r.maxDepth);if(p){if(p.issue)a.push(p.issue);if(p.limited)return m(),{nodes:s,issues:a,next:p.next,closed:!1,words:c,limited:!0};d=p.next;continue}if(/\s/.test(f)){if(f==="\r"||f===`
22
+ `){m();let y=f==="\r"&&e[d+1]===`
23
+ `?d+2:d+1;s.push(Bs(e,d,y)),d=y;continue}d++;continue}let h=Vs(e,d);if(h){m(),s.push(Bs(e,d,d+h.length)),d+=h.length;continue}if(f==="{"){if(m(),o>=r.maxDepth)return a.push(Ou(d,r.maxDepth)),{nodes:s,issues:a,next:n,closed:!1,words:c,limited:!0};let y=js(e,d+1,n,r,o+1,!0),v=y.closed?y.next-1:y.next,E=Ae({kind:"program",dialect:"powershell",source:e.slice(d+1,v),span:{start:d+1,end:v},status:y.limited?"limited":y.issues.length>0?"partial":"complete",issues:y.issues,nodes:y.nodes});if(s.push(Object.freeze({kind:"group",style:"brace",span:Object.freeze({start:d,end:y.next}),body:E})),a.push(...y.issues),!y.closed)a.push({code:"unclosed-script-block",message:"PowerShell script block is not closed",span:{start:d,end:y.next}});c+=y.words,u||=y.limited,d=y.next;continue}if(f==="}"){m(),s.push(Bs(e,d,d+1)),d++;continue}if(f===">"||f==="<"){l.start=l.start===-1?d:l.start;let y=e[d+1]===f?d+2:d+1,v=y;while(/[ \t]/.test(e[v]??""))v++;let E=v<n?Hs(e,v,n,r,o):void 0,b=E?.next??y;if(l.redirections.push(Object.freeze({kind:"redirection",operator:e.slice(d,y),span:Object.freeze({start:d,end:b}),...E?{target:E.word}:{}})),E)a.push(...E.issues),l.nested.push(...E.nested),c+=E.words,u||=E.limited;l.end=b,d=b;continue}if(f===","){l.start=l.start===-1?d:l.start,l.words.push(Ds({text:",",raw:",",span:{start:d,end:d+1},provenance:"literal",quoted:!1})),l.end=++d;continue}let g=Hs(e,d,n,r,o);if(l.start=l.start===-1?d:l.start,l.end=g.next,l.words.push(g.word),a.push(...g.issues),l.nested.push(...g.nested),c+=1+g.words,u||=g.limited,c>r.maxWords)return a.push({code:"word-limit",message:`command exceeds ${r.maxWords} words`,span:{start:d,end:g.next}}),m(),{nodes:s,issues:a,next:g.next,closed:!1,words:c,limited:!0};d=g.next>d?g.next:d+1}return m(),{nodes:s,issues:a,next:d,closed:!i,words:c,limited:u}}function Hs(e,t,n,r,o){let i="",s="literal",a=!1,l=[],c=[],u=0,m=!1,d=(p)=>{let h=dC(e,p,n,r,o);return i+=e.slice(p,h.next),c.push(h.program),l.push(...h.program.issues),u+=Us(h.program),m||=h.program.status==="limited",s="command-substitution",h.next},f=t;while(f<n){let p=e[f];if(!p||/\s/.test(p)||Vs(e,f)||p===">"||p==="<"||p==="#")break;if(p===",")break;if(p==="`"){let h=e[f+1];if(!h){l.push({code:"trailing-escape",message:"PowerShell escape has no following character",span:{start:f,end:f+1}}),f++;break}i+=h,f+=2;continue}if(e.startsWith("$(",f)){f=d(f);continue}if(p==="'"){a=!0,f++;let h=!1;while(f<e.length){if(e[f]==="'"&&e[f+1]==="'"){i+="'",f+=2;continue}if(e[f]==="'"){h=!0,f++;break}i+=e[f]??"",f++}if(!h)l.push({code:"unclosed-single-quote",message:"single-quoted word is not closed",span:{start:t,end:e.length}});continue}if(p==='"'){a=!0;let h=f++,g=!1;while(f<n){let y=e[f];if(y==="`"&&e[f+1]){i+=e[f+1],f+=2;continue}if(y==='"'){g=!0,f++;break}if(e.startsWith("$(",f)){f=d(f);continue}if(y==="$")s=e[f+1]==="("?"command-substitution":"variable";i+=y??"",f++}if(!g)l.push({code:"unclosed-double-quote",message:"double-quoted word is not closed",span:{start:h,end:e.length}});continue}if(p==="$")s=e[f+1]==="("?"command-substitution":"variable";if(p==="@"&&f===t)s="variable";i+=p,f++}return{word:An(e,t,f,i,s,a,s==="literal"?void 0:mC(e,t,f)),next:f,issues:l,nested:c,words:u,limited:m}}function dC(e,t,n,r,o){let i=ku(e,t+2,n),s=i===-1?n:i,a=i===-1?n:i+1;if(o>=r.maxDepth)return{program:Ae({kind:"program",dialect:"powershell",source:e.slice(t+2,s),span:{start:t+2,end:s},status:"limited",issues:[Ou(t,r.maxDepth)],nodes:[]}),next:a};let l=js(e,t+2,s,r,o+1),c=i===-1?[{code:"unclosed-command-subexpression",message:"PowerShell command subexpression is not closed",span:{start:t,end:a}}]:[];return{program:Ae({kind:"program",dialect:"powershell",source:e.slice(t+2,s),span:{start:t+2,end:s},status:l.limited?"limited":l.issues.length+c.length>0?"partial":"complete",issues:[...l.issues,...c],nodes:l.nodes}),next:a}}function ku(e,t,n){let r=1,o=!1,i=!1;for(let s=t;s<n;s++){let a=e[s];if(a==="`"){s++;continue}if(!i&&a==="'"){if(o&&e[s+1]==="'"){s++;continue}o=!o;continue}if(!o&&a==='"'){i=!i;continue}if(o)continue;if(e.startsWith("$(",s)){r++,s++;continue}if(!i&&a==="(")r++;if(a!==")")continue;if(r--,r===0)return s}return-1}function Us(e){let t=0;for(let n of e.nodes){if(n.kind==="group")t+=Us(n.body);if(n.kind==="command"){t+=n.words.length;for(let r of n.nested)t+=Us(r)}}return t}function mC(e,t,n){let r=wo(e),o=t,i=!1,s=t;while(s<n){let a=e[s];if(a==="`"){s+=2;continue}if(a==="'"){if(i&&e[s+1]==="'"){s+=2;continue}i=!i,s++;continue}if(i){s++;continue}if(e.startsWith("$(",s)){let l=ku(e,s+2,n),c=l===-1?n:l+1;r.push(o,s,"literal"),r.push(s,c,"command-substitution"),s=c,o=c;continue}if(a==="$"||a==="@"&&s===t){let l=fC(e,s+1,n);r.push(o,s,"literal"),r.push(s,l,"variable"),s=l,o=l;continue}s++}return r.push(o,n,"literal"),r.parts}function fC(e,t,n){if(e[t]==="{"){let o=e.indexOf("}",t+1);return o===-1||o>=n?n:o+1}let r=t;while(r<n&&/[A-Za-z0-9_:?]/.test(e[r]??""))r++;return r}function Ou(e,t){return{code:"depth-limit",message:`command structure exceeds parser limit ${t}`,span:{start:e,end:e}}}function pC(e){let t=[],n=[],r=0,o=0,i=!1,s=!1,a=()=>{if(n.length>0)t.push(n);n=[]};while(r<e.length&&r<131072&&o<16384){let l=e[r];if(l==="\r"||l===`
24
+ `){a(),r+=l==="\r"&&e[r+1]===`
25
+ `?2:1;continue}if(/\s/.test(l??"")){r++;continue}let c=Mu(e,r,Math.min(e.length,Do.maxInputLength),Do.maxDepth);if(c){i||=!!c.issue||c.limited,r=c.next;continue}let u=Vs(e,r);if(u){a(),r+=u.length;continue}if(l==="{"||l==="}"){a(),r++;continue}s||=e.startsWith("<<",r);let m=Hs(e,r,Math.min(e.length,Do.maxInputLength),Do,0);if(m.word.text)n.push(m.word.text);for(let d of m.nested)t.push(...$s(d));o++,r=m.next>r?m.next:r+1}return a(),{commands:t,invalidComment:i,posixHeredoc:s}}function $s(e){return e.nodes.flatMap((t)=>{if(t.kind==="group")return $s(t.body);if(t.kind!=="command")return[];return[t.words.map((n)=>n.text),...t.nested.flatMap($s)]})}function Vs(e,t){for(let n of["&&","||",";","|"])if(e.startsWith(n,t))return n;return null}function Mu(e,t,n,r){if(e[t]==="#"&&e[t+1]!==">"){let s=t+1;while(s<n&&e[s]!=="\r"&&e[s]!==`
26
+ `)s++;return{next:s,limited:!1}}if(!e.startsWith("<#",t))return null;let o=1,i=t+2;while(i<n){if(e.startsWith("<#",i)){if(o++,o>r)return{next:n,issue:{code:"comment-depth-limit",message:`PowerShell block comment exceeds nesting limit ${r}`,span:{start:t,end:i+2}},limited:!0};i+=2;continue}if(e.startsWith("#>",i)){if(o--,i+=2,o===0)return{next:i,limited:!1};continue}i++}return{next:n,issue:{code:"unclosed-block-comment",message:"PowerShell block comment is not closed",span:{start:t,end:n}},limited:!1}}function gC(e,t){if(t)return"limited";if(e.some((n)=>n.code==="unclosed-block-comment"))return"invalid";return e.length>0?"partial":"complete"}function Bs(e,t,n){return Object.freeze({kind:"connector",operator:e.slice(t,n),span:Object.freeze({start:t,end:n})})}var Zt=Object.freeze({maxInputLength:131072,maxWords:16384,maxDepth:64});function Ye(e,t="auto",n=Zt){if(t==="powershell"||t==="auto"&&Tu(e.slice(0,n.maxInputLength)))return Iu(e,n);return Cu(e,n)}function _(e){return e.provenance==="command-substitution"?e.raw:e.text}function Tn(e,t){return e==="posix"?t:J(t.map((n)=>n.text))}function No(e,t){return e&&e.provenance!=="unknown"?e.provenance==="literal":!/[$`*?[\]]/.test(t)}function J(e){return e.map((t)=>({kind:"word",text:t,raw:t,span:{start:0,end:0},provenance:"unknown",quoted:!1,parts:[]}))}function Ks(e,t){return{value:e,work:t}}function S(e,t){if(e.work)e.work.units=Math.min(Number.MAX_SAFE_INTEGER,e.work.units+1);return e.value[t]}function re(e){return e.value.length}function cr(e,t,n=1){if(e)e.units=Math.min(Number.MAX_SAFE_INTEGER,e.units+t.length*n)}function Le(e,t){cr(e,t)}function Xt(e){if(!e)return!1;let t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=90||t===95||t>=97&&t<=122}function Y(e){if(!e)return!1;let t=e.charCodeAt(0);return t===9||t===10||t===11||t===12||t===13||t===32||t===160||t===65279||t===5760||t>=8192&&t<=8202||t===8232||t===8233||t===8239||t===8287||t===12288}function qs(e){return e===`
27
+ `||e==="\r"||e==="\u2028"||e==="\u2029"}function Z(e,t,n){if(t+n.length>re(e))return!1;for(let r=0;r<n.length;r++)if(S(e,t+r)!==n[r])return!1;return!0}function pt(e,t,n){return!Xt(S(e,t-1))&&Z(e,t,n)&&!Xt(S(e,t+n.length))}function gt(e,t){return Xt(S(e,t-1))!==Xt(S(e,t))}function fe(e){return e===`
28
+ `||e===";"||e==="&"||e==="|"}function In(e){return e==="|"||e===";"}function Lo(e,t,n){let r=Ks(e,n);if(t==="rm")return hC(r);if(t==="dd")return CC(r);return Gu(r,!0)}function Wo(e,t,n){let r=Ks(e,n);if(t==="rm")return SC(r);if(t==="reset-hard")return Wu(r,"--ha","rd");if(t==="reset-merge")return Wu(r,"--me","rge");if(t==="clean")return RC(r);if(t==="checkout")return _C(r);if(t==="push-force")return wC(r);if(t==="push-refspec")return AC(r);if(t==="push-delete")return PC(r);if(t==="branch")return TC(r);if(t==="tag")return OC(r);if(t==="restore")return MC(r);return Gu(r,!1)}function hC(e){let t=!1,n=!1,r=!1,o=-1;for(let i=0;i<=re(e);i++){let s=S(e,i);if(!t){let l=S(e,i+2);if(pt(e,i,"rm")&&Y(l)&&l!==`
29
+ `)t=!0,i++;continue}let a=yC(e,i);if(s===`
30
+ `||a!==-1){if(t=!1,n=!1,r=!1,o=-1,a!==-1)i=a-1;continue}if(s===";"||s==="&"||s==="|"||i===re(e)){if(o>=0){let l=Du(e,o,i);n||=l.recursive,r||=l.force}if(n&&r)return!0;t=!1,n=!1,r=!1,o=-1;continue}if(Y(s)){if(o<0)continue;if(Z(e,o,"--")&&i-o===2){t=!1,n=!1,r=!1,o=-1;continue}let l=Du(e,o,i);if(n||=l.recursive,r||=l.force,n&&r)return!0;o=-1;continue}if(o<0)o=i}return!1}function yC(e,t){if(S(e,t)!=="\\"||S(e,t-1)==="\\")return-1;if(Z(e,t,String.raw`\n`))return t+2;if(Z(e,t,String.raw`\x0a`)||Z(e,t,String.raw`\x0A`))return t+5;if(Z(e,t,String.raw`\u000a`)||Z(e,t,String.raw`\u000A`))return t+7;return Z(e,t,String.raw`\012`)?t+4:-1}function Du(e,t,n){if(Nu(e,t,n,"recursive"))return{recursive:!0,force:!1};if(Nu(e,t,n,"force"))return{recursive:!1,force:!0};if(S(e,t)!=="-"||S(e,t+1)==="-")return{recursive:!1,force:!1};let r=!1,o=!1;for(let i=t+1;i<n;i++){let s=S(e,i);r||=s==="r"||s==="R",o||=s==="f"||s==="F"}return{recursive:r,force:o}}function Nu(e,t,n,r){let o=n-t-2;if(o<1||o>r.length||!Z(e,t,"--"))return!1;for(let i=0;i<o;i++)if(S(e,t+i+2)!==r[i])return!1;return!0}function CC(e){let t=!1;for(let n=0;n<re(e);n++){if(fe(S(e,n))){t=!1;continue}if(pt(e,n,"dd")){t=!0,n++;continue}if(!t||!pt(e,n,"of")||!Z(e,n,"of=/dev/"))continue;let r=n+8;if(r<re(e)&&!Y(S(e,r))&&S(e,r)!=="'"&&S(e,r)!=='"')return!0}return!1}function SC(e){let t=!1,n=!1,r=!1;for(let o=0;o<=re(e);){let i=S(e,o);if(o===re(e)||fe(i)){t=!1,n=!1,r=!1,o++;continue}let s=vC(e,o);if(s>=0){if(bC(e,s))return!0;let a=s,l=!1;while(Y(S(e,a)))l||=S(e,a)===`
31
+ `,a++;if(l)n=!1,r=!1;t=!0,o=a;continue}if(!t){o++;continue}if(Z(e,o,"--")&&(o===0||Y(S(e,o-1)))&&(!S(e,o+2)||Y(S(e,o+2))||fe(S(e,o+2)))){t=!1,n=!1,r=!1,o+=2;continue}if(n||=Z(e,o,"--recursive")&&gt(e,o+11)||Ys(e,o,"recursive"),r||=Z(e,o,"--force")&&gt(e,o+7)||Ys(e,o,"force"),n&&r)return!0;o++}return!1}function Ys(e,t,n){if(!Z(e,t,"--"))return!1;let r=0;while(r<=n.length){let o=S(e,t+r+2);if(!o||Y(o)||fe(o))break;if(o!==n[r])return!1;r++}return r>0&&gt(e,t+r+2)}function bC(e,t){let n=t,r=!1,o=!1;while(n<re(e)){while(Y(S(e,n)))n++;let i=n;while(n<re(e)&&!Y(S(e,n)))n++;if(S(e,i)!=="-"||n-i===2&&Z(e,i,"--"))return!1;let s=Lu(e,i,"recursive"),a=Lu(e,i,"force");if(r&&a||o&&s)return!0;if(r||=s,o||=a,S(e,i+1)==="-")continue;let l=EC(e,i,n);if(l.combined||r&&l.forceAtBoundary||o&&l.recursiveAtBoundary)return!0;r||=l.recursive,o||=l.force}return!1}function Lu(e,t,n){return Z(e,t,`--${n}`)&&gt(e,t+n.length+2)||Ys(e,t,n)}function vC(e,t){if(t>0&&Xt(S(e,t-1)))return-1;let n=t;if(S(e,n)==="\\")n++;if(S(e,n)!=="r")return-1;if(n++,S(e,n)==="\\")n++;if(S(e,n)!=="m"||!Y(S(e,n+1)))return-1;return n+1}function EC(e,t,n){let r=!1,o=!1,i=!1,s=!1,a=!1;if(S(e,t)!=="-")return{recursive:r,force:o,recursiveAtBoundary:i,forceAtBoundary:s,combined:a};let l="";for(let c=t+1;c<n;c++){let u=S(e,c)??"",m=(u==="r"||u==="f")&&gt(e,c+1);r||=u==="r",o||=u==="f",i||=u==="r"&&m,s||=u==="f"&&m,a||=(l==="r"&&u==="f"||l==="f"&&u==="r")&&m,l=u}return{recursive:r,force:o,recursiveAtBoundary:i,forceAtBoundary:s,combined:a}}function Wu(e,t,n){return dr(e,"reset",In,!0,(r)=>S(e,r)==="-"&&kn(e,r,t,n)?!0:r)}function RC(e){return dr(e,"clean",In,!0,(t)=>{if(S(e,t)!=="-")return t;if(kn(e,t,"--fo","rce"))return!0;let n=ur(e,t,In);for(let r=t+1;r<n;r++)if(S(e,r)==="f")return!0;return n-1})}function Fo(e,t,n){if(!pt(e,t,"git"))return null;let r=t+3;if(!Y(S(e,r)))return{commandEnd:-1,next:r};while(Y(S(e,r)))r++;while(r<re(e)){if(fe(S(e,r)))return{commandEnd:-1,next:r};let o=ur(e,r,fe);if(pt(e,r,n))return{commandEnd:r+n.length,next:o};if(S(e,r)!=="-")return{commandEnd:-1,next:o};let i=o-r===2&&Z(e,r,"--"),s=xC(e,r,o);r=o;while(Y(S(e,r)))r++;if(i)return{commandEnd:pt(e,r,n)?r+n.length:-1,next:ur(e,r,fe)};if(!s)continue;if(r>=re(e)||fe(S(e,r)))return{commandEnd:-1,next:r};r=ur(e,r,fe);while(Y(S(e,r)))r++}return{commandEnd:-1,next:r}}function xC(e,t,n){for(let r of be)if(n-t===r.length&&Z(e,t,r))return!0;return!1}function _C(e){return Fu(e,{command:"checkout",longPrefix:"--fo",longOptional:"rce",shortFlag:"f",excludedShortStarts:"bBU"})}function wC(e){return dr(e,"push",In,!0,(t)=>{if(S(e,t)!=="-")return t;if(S(e,t+1)==="f"&&!Xt(S(e,t+2))&&!Z(e,t+2,"-with-lease"))return!0;let n=zu(e,t,"--fo","rce");if(n>=0&&!Z(e,n,"-with-lease"))return!0;return t})}function AC(e){return dr(e,"push",fe,!1,(t)=>{if(Y(S(e,t))&&S(e,t+1)==="+"&&t+2<re(e)&&!fe(S(e,t+2))&&!Y(S(e,t+2)))return!0;if(S(e,t)===":"&&S(e,t+1)==="+")return!0;return t})}function PC(e){return dr(e,"push",fe,!1,(t)=>{if(S(e,t)==="-"&&kn(e,t,"--de","lete"))return!0;if(Y(S(e,t))&&S(e,t+1)===":"&&t+2<re(e)&&!Y(S(e,t+2))&&!fe(S(e,t+2)))return!0;return t})}function TC(e){let t=!1,n=!1,r=!1;for(let o=0;o<=re(e);o++){if(o===re(e)||fe(S(e,o))){if(n&&r)return!0;t=!1,n=!1,r=!1;continue}if(!t){let a=Fo(e,o,"branch");if(a){t=a.commandEnd>=0,o=Math.max(o,(t?a.commandEnd:a.next)-1);continue}}if(!t||S(e,o)!=="-")continue;let i=ur(e,o,fe),s=IC(e,o,i);if(n||=s.deletion,r||=s.force,n&&r)return!0;o=i-1}return!1}function IC(e,t,n){let r=!1,o=!1;for(let i=t;i<n;i++){if(S(e,i)!=="-")continue;if(kn(e,i,"--de","lete"))r=!0;if(kn(e,i,"--fo","rce"))o=!0;if(S(e,i+1)==="-")continue;let s=i+1,a=!1,l=!1,c=!1;while(s<n&&kC(S(e,s))){let u=S(e,s);a||=u==="d"||u==="D",l||=u==="f",c||=u==="D",s++}if(!gt(e,s))continue;r||=a,o||=l||c}return{deletion:r,force:o}}function kC(e){if(!e)return!1;let t=e.charCodeAt(0);return t>=65&&t<=90||t>=97&&t<=122}function OC(e){return Fu(e,{command:"tag",longPrefix:"--de",longOptional:"lete",shortFlag:"d",excludedShortStarts:""})}function Fu(e,t){let n=[{outerActive:!1,shortActive:!1,hasShortFlag:!1,depth:0,quote:"",escaped:!1}];for(let r=0;r<re(e);r++){let o=S(e,r),i=n[n.length-1];if(!i)return!1;let s=i.escaped;if(i.escaped=!s&&i.quote!=="'"&&o==="\\",!s&&o==="'"&&i.quote!=='"')i.quote=i.quote==="'"?"":"'";if(!s&&o==='"'&&i.quote!=="'")i.quote=i.quote==='"'?"":'"';if(o==="$"&&S(e,r+1)==="("&&(n.length===1||!s&&i.quote!=="'")){n.push({outerActive:!1,shortActive:!1,hasShortFlag:!1,depth:1,quote:"",escaped:!1}),r++;continue}if(!s&&!i.quote&&n.length>1&&o==="("){i.depth++;continue}if(!s&&!i.quote&&n.length>1&&o===")"){if(i.depth--,i.depth===0)n.pop();continue}if(Y(o))i.shortActive=!1,i.hasShortFlag=!1;if(!i.outerActive){let a=Fo(e,r,t.command);if(a){i.outerActive=a.commandEnd>=0&&Y(S(e,a.commandEnd)),i.shortActive=!1,i.hasShortFlag=!1,r=Math.max(r,(i.outerActive?a.commandEnd:a.next)-1);continue}}if(i.outerActive&&o==="-"){if(kn(e,r,t.longPrefix,t.longOptional))return!0;i.shortActive||=!t.excludedShortStarts.includes(S(e,r+1)??"")}if(i.hasShortFlag||=i.shortActive&&o===t.shortFlag,i.hasShortFlag&&gt(e,r+1))return!0;if(In(o))i.outerActive=!1}return!1}function dr(e,t,n,r,o){let i=!1;for(let s=0;s<re(e);s++){let a=S(e,s),l=n(a);if(!i&&!l){let c=Fo(e,s,t);if(c){i=c.commandEnd>=0&&(!r||Y(S(e,c.commandEnd))),s=Math.max(s,(i?c.commandEnd:c.next)-1);continue}}if(i){let c=o(s);if(c===!0)return!0;for(let u=s;u<=c;u++)if(n(S(e,u)))i=!1;s=c}if(l)i=!1}return!1}function MC(e){let t=!1;for(let n=0;n<re(e);n++){if(qs(S(e,n))){if(t)return!0;t=!1;continue}if(!t){let r=Fo(e,n,"restore");if(r){t=r.commandEnd>=0,n=Math.max(n,(t?r.commandEnd:r.next)-1);continue}}if(t&&S(e,n)==="-"&&S(e,n+1)==="-"&&(Z(e,n+2,"staged")||Z(e,n+2,"help")))t=!1}return t}function Gu(e,t){let n=!1;for(let r=0;r<re(e);r++){let o=S(e,r),i=t?qs(o):fe(o);if(n&&Y(o)&&S(e,r+1)==="-"&&pt(e,r+2,"delete"))return!0;if(i){n=!1;continue}if(pt(e,r,"find"))n=!0,r+=3}return!1}function ur(e,t,n){let r=t;while(r<re(e)&&!Y(S(e,r))&&!n(S(e,r)))r++;return r}function zu(e,t,n,r){if(!Z(e,t,n))return-1;let o=t+n.length;for(let i=0;i<r.length&&S(e,o)===r[i];i++)o++;return gt(e,o)?o:-1}function kn(e,t,n,r){return zu(e,t,n,r)>=0}function ht(e,t){cr(t,e,2);let n=e.toLowerCase(),r=n.trimStart(),o=r.startsWith("echo ")||r.startsWith("rg "),i=[{scan:"rm",label:"rm -rf"},{scan:"reset-hard",label:"git reset --hard"},{scan:"reset-merge",label:"git reset --merge"},{scan:"clean",label:"git clean -f"},{scan:"checkout",label:"git checkout --force"},{scan:"push-force",label:"git push --force"},{scan:"push-refspec",label:"git push --force"},{scan:"push-delete",label:"git push delete"},{scan:"branch",label:"git branch -D",caseSensitive:!0},{scan:"tag",label:"git tag -d"},{regex:/\bgit\s+stash\s+(drop|clear)\b/,label:"git stash drop/clear"},{regex:/\bgit\s+checkout\s+--\s/,label:"git checkout --"},{scan:"restore",label:"git restore without --staged"},{scan:"find",label:"find -delete",skipForEchoRg:!0},{regex:/\bdd\b[^\n|;&]*\bof=\/dev\/\S/,label:"dd of=/dev/",skipForEchoRg:!0},{regex:/\bmkfs(?:\.[a-z0-9_-]+)?\s+\/dev\/\S/,label:"mkfs /dev/",skipForEchoRg:!0},{regex:/\bshred\b\s+\S/,label:"shred",skipForEchoRg:!0},{regex:/\b(?:curl|wget|fetch|aria2c|https?|xhs?|ncat|netcat|nc)\b(?:[^\n|;&]|\\\n)*\|(?:\s|\\\n)*(?:(?:sudo|env|command|builtin)(?:\s+(?:-\S+|\w+=\S*))*\s+)?(?:[^\s|;&]*\/)?(?:ba|da|z|k)?sh(?![^\s;&|])/,label:"download piped to shell",skipForEchoRg:!0}];for(let s of i){if(s.skipForEchoRg&&o)continue;let a=s.caseSensitive?e:n;if(s.regex)Le(t,a);if((s.regex?.test(a)??!1)||s.scan&&Wo(a,s.scan,t))return C("raw-text.dangerous-command",`Unparseable command text contains a destructive pattern (${s.label}). Rewrite as a plain, parseable command so it can be analyzed.`)}return null}var DC=/^[A-Za-z_][A-Za-z0-9_]*=/;function Hu(e,t,n){let r=e.words[0];if(!t||!r||e.words.length!==1||e.dialect!=="posix")return!1;if(!r.quoted||r.provenance!=="literal")return!1;let o=/^([A-Za-z_][A-Za-z0-9_]*)=/.exec(r.text)?.[1];if(!o)return!1;cr(n,t.source,2);let i={anchored:new RegExp(`^\\$\\{?${o}(?![A-Za-z0-9_])`),loose:new RegExp(`\\$\\{?${o}(?![A-Za-z0-9_])`)};return Uu(t.nodes,r,i)}function Uu(e,t,n){return e.every((r)=>{if(r.kind==="connector")return!0;if(r.kind==="group"||r.kind==="function")return Uu(r.body.nodes,t,n);if(r.kind==="unknown")return!n.loose.test(r.source);return NC(r,t,n)})}function NC(e,t,n){if(e.nested.some((o)=>n.loose.test(o.source)))return!1;let r=e.words.findIndex((o)=>!DC.test(o.text));return e.words.every((o,i)=>o===t||Bu(o.raw,n.anchored,i!==r))&&e.redirections.every((o)=>(!o.heredoc||o.heredoc.quotedDelimiter||!n.loose.test(o.heredoc.body))&&(!o.target||Bu(o.target.raw,n.anchored,!0)))}function Bu(e,t,n){let r=!1,o=!1;for(let i=0;i<e.length;i++){let s=e[i];if(s==="\\"&&!r){i++;continue}if(!o&&s==="'"){r=!r;continue}if(!r&&s==='"'){o=!o;continue}if(r||s!=="$")continue;if(!t.test(e.slice(i)))continue;if(!o||!n)return!1}return!0}var mr=require("node:path");function fr(e,t,n,r){let o=mr.isAbsolute(e)?mr.resolve(e):t?mr.resolve(t,e):void 0;if(!o)return;try{return N(o,n,r)}catch{return o}}function $u(e){return!["/dev","/proc","/sys"].some((t)=>e===t||e.startsWith(`${t}/`))}var On="Interpreter code contains a dangerous command. Run the underlying command directly so it can be analyzed, or use the safer alternative for that command.",pr="Interpreter one-liners are blocked by the active safety policy. Write the code to a script file and run it, or run the equivalent shell command directly.",Zs=new Map([["python",new Set(["-c"])],["node",new Set(["-e","--eval"])],["ruby",new Set(["-e"])],["perl",new Set(["-e","-E"])]]),LC=new Set(["-p","--print"]),WC=new Map([["python",new Set(["c"])],["node",new Set(["e"])],["ruby",new Set(["e"])],["perl",new Set(["e","E"])]]),FC=new Map([["python",new Set(["W","X"])],["node",new Set(["C","r"])],["ruby",new Set(["C","E","F","I","r"])],["perl",new Set(["F","I","M","m"])]]),GC=new Map([["ruby",new Set(["0","K","W","x"])],["perl",new Set(["0","C","D","V","d","i","l","x"])]]),zC=new Map([["python",new Set(["m"])]]),BC=new Map([["node",new Set(["--allow-fs-read","--allow-fs-write","--conditions","--cpu-prof-dir","--cpu-prof-interval","--cpu-prof-name","--debug-port","--diagnostic-dir","--disable-proto","--disable-warning","--dns-result-order","--env-file","--env-file-if-exists","--experimental-package-map","--experimental-test-isolation","--experimental-test-tag-filter","--heap-prof-dir","--heap-prof-interval","--heap-prof-name","--heapsnapshot-near-heap-limit","--heapsnapshot-signal","--icu-data-dir","--input-type","--inspect-port","--inspect-publish-uid","--localstorage-file","--max-http-header-size","--max-old-space-size-percentage","--network-family-autoselection-attempt-timeout","--openssl-config","--redirect-warnings","--report-dir","--report-directory","--report-filename","--report-signal","--secure-heap","--secure-heap-min","--test-concurrency","--test-coverage-branches","--test-coverage-exclude","--test-coverage-functions","--test-coverage-include","--test-coverage-lines","--test-global-setup","--test-isolation","--test-name-pattern","--test-random-seed","--test-reporter","--test-reporter-destination","--test-rerun-failures","--test-shard","--test-skip-pattern","--test-timeout","--title","--tls-cipher-list","--tls-keylog","--trace-event-categories","--trace-event-file-pattern","--trace-require-module","--unhandled-rejections","--use-largepages","--v8-pool-size","--watch-kill-signal"])],["python",new Set(["--check-hash-based-pycs"])],["ruby",new Set(["--backtrace-limit","--crash-report","--disable","--enable","--encoding","--external-encoding","--internal-encoding","--parser"])]]),HC=new Set(["always","default","never"]),UC=new Set(["--backtrace-limit","--crash-report","--disable","--enable"]),$C=/\\\r?\n/g,jC=new Map([["python",[{selector:"-c",kind:"inline-code",valueForm:"attached-or-separate"},{selector:"-m",kind:"module-file",valueForm:"attached-or-separate"}]],["node",[{selector:"-e",kind:"inline-code",valueForm:"separate-only"},{selector:"--eval",kind:"inline-code",valueForm:"equals-or-separate"},{selector:"-p",kind:"inline-code",valueForm:"separate-only"},{selector:"--print",kind:"inline-code",valueForm:"separate-only"},{selector:"-r",kind:"module-file",valueForm:"separate-only"},{selector:"--require",kind:"module-file",valueForm:"equals-or-separate"},{selector:"--import",kind:"module-file",valueForm:"equals-or-separate"},{selector:"--loader",kind:"module-file",valueForm:"equals-or-separate"},{selector:"--experimental-loader",kind:"module-file",valueForm:"equals-or-separate"}]],["ruby",[{selector:"-e",kind:"inline-code",valueForm:"attached-or-separate"},{selector:"-r",kind:"module-file",valueForm:"attached-or-separate"}]],["perl",[{selector:"-e",kind:"inline-code",valueForm:"attached-or-separate"},{selector:"-E",kind:"inline-code",valueForm:"attached-or-separate"},{selector:"-M",kind:"module-file",valueForm:"attached-only"},{selector:"-m",kind:"module-file",valueForm:"attached-only"}]]]);function Vu(e){return zo(e).code}function Go(e){return zo(e).sources}function Ku(e){return jC.get(Js(e))??[]}function zo(e){let t=Js(e[0]??"");if(!Zs.has(t))return{code:null,sources:[],optionsOpen:!1};let n=[],r=[],o=!0;for(let i=1;i<e.length;i++){let s=e[i];if(s===void 0)break;if(s==="--")return Ze(t,n,r,o,e[i+1]===void 0?void 0:i+1,e[i+1]);if(s===""||s==="-"||!s.startsWith("-"))return Ze(t,n,r,o,i,s);if(t==="node"&&LC.has(s)){let m=e[i+1];if(m===void 0)return Ze(t,n,r,o);if(m.startsWith("-"))continue;n.push({tokenIndex:i+1,value:m}),r.push({tokenIndex:i+1,kind:"inline-code",value:m}),i++;continue}if(KC(t,s)){let m=e[i+1];if(m===void 0)return Ze(t,n,r,o);if(n.push({tokenIndex:i+1,value:m}),r.push({tokenIndex:i+1,kind:"inline-code",value:m}),t==="python")return Ze(t,n,r,o);i++;continue}let a=/^--eval=(.*)$/s.exec(s);if(qC(t)&&a){let m=a[1]??"";n.push({tokenIndex:i,value:m}),r.push({tokenIndex:i,kind:"inline-code",value:m});continue}if(t==="node"){let m=VC(s);if(m){if(m.attached){if(o&&=m.value!=="",m.value!=="")r.push({tokenIndex:i,kind:"module-file",value:m.value});continue}let d=e[i+1];if(d===void 0||d.startsWith("-"))return o=!1,Ze(t,n,r,o);r.push({tokenIndex:i+1,kind:"module-file",value:d}),i++;continue}}if(t==="python"&&s.startsWith("--check-hash-based-pycs=")||t==="node"&&(s==="--conditions="||s==="--diagnostic-dir="||s==="--title=")||t==="ruby"&&(s==="--disable="||s==="--enable="))return Ze(t,n,r,o);if(BC.get(t)?.has(s)){let m=e[i+1];if(m===void 0||m.startsWith("-")&&!(t==="ruby"&&UC.has(s))||t==="python"&&!HC.has(m))return Ze(t,n,r,o);i++;continue}if(s.startsWith("--"))continue;let l,c=!1;for(let m=1;m<s.length;m++){let d=s[m];if(d===void 0)break;if(zC.get(t)?.has(d)){let f=s.slice(m+1),p=f||e[i+1];if(p!==void 0)r.push({tokenIndex:f?i:i+1,kind:"module-file",value:p});return Ze(t,n,r,o)}if(WC.get(t)?.has(d)){l=s.slice(m+1)||e[i+1],c=m+1===s.length;break}if(t==="node"&&d==="r"){if(o&&=s==="-r",s==="-r"){let f=e[i+1];if(o&&=f!==void 0&&!f.startsWith("-"),o&&f!==void 0)r.push({tokenIndex:i+1,kind:"module-file",value:f});i++}break}if(t==="ruby"&&d==="r"){let f=s.slice(m+1),p=f||e[i+1];if(o&&=p!==void 0,p!==void 0)r.push({tokenIndex:f?i:i+1,kind:"module-file",value:p});if(!f)i++;break}if(t==="perl"&&(d==="M"||d==="m")){let f=s.slice(m+1);if(!f){if(o=!1,m+1===s.length)i++;break}r.push({tokenIndex:i,kind:"module-file",value:f});break}if(FC.get(t)?.has(d)){if(m+1===s.length)i++;break}if(GC.get(t)?.has(d)&&m+1<s.length)break}if(l===void 0)continue;let u=c?i+1:i;if(n.push({tokenIndex:u,value:l}),r.push({tokenIndex:u,kind:"inline-code",value:l}),t==="python")return Ze(t,n,r,o);if(c)i++}return Ze(t,n,r,o,void 0,void 0,!0)}function Ze(e,t,n,r,o,i,s=!1){let a=e==="node"?t.slice(-1):t,l=new Set(a.map((u)=>u.tokenIndex)),c=n.filter((u)=>u.kind!=="inline-code"||l.has(u.tokenIndex));if(r&&t.length===0&&o!==void 0&&i!==void 0)c.push({tokenIndex:o,kind:"main-script",value:i});return{code:(e==="node"?a[0]?.value:a.map((u)=>u.value).join(`
32
+ `))||null,sources:r?c:[],optionsOpen:r&&s}}function VC(e){for(let t of["--import","--loader","--experimental-loader","--require"]){if(e===t)return{attached:!1,value:""};if(e.startsWith(`${t}=`))return{attached:!0,value:e.slice(t.length+1)}}return}function Xs(e,t){return Js(e)==="node"&&/^\s*console\.(?:log|info|warn|error)\(\s*(?:"(?:\\.|[^"\\\r\n])*"|'(?:\\.|[^'\\\r\n])*')\s*\)\s*;?\s*$/.test(t)}function Js(e){let t=I(e).toLowerCase();return co.test(t)?"python":t}function KC(e,t){return Zs.get(e)?.has(t)??!1}function qC(e){return Zs.get(e)?.has("--eval")??!1}function gr(e,t){let n=XC(e,t);if(!ju(n,t))return!1;Le(t,n);let r=ZC(n);if(ju(r,t))return!0;return Le(t,r),YC.test(r)}var YC=/`|%x|\b(?:system|exec|spawn|popen|subprocess|child_process|open3|eval|fork|qx)/i;function ZC(e){let t=[],n=0,r=0;while(r<e.length){let o=e[r];if(o!=="'"&&o!=='"'){r++;continue}let i=e.startsWith(o.repeat(3),r)?o.repeat(3):o,s=r+i.length;while(s<e.length&&!e.startsWith(i,s))s+=e[s]==="\\"?2:1;if(s>=e.length)break;t.push(e.slice(n,r)," "),r=s+i.length,n=r}return t.push(e.slice(n)),t.join("")}function ju(e,t){if(Lo(e,"rm",t))return!0;for(let r of[/\bgit[^\S\n]+checkout[^\S\n]+--[^\S\n]/,/\bgit[^\S\n]+stash[^\S\n]+(drop|clear)\b/])if(Le(t,e),r.test(e))return!0;if(Lo(e,"dd",t))return!0;for(let r of[/\bmkfs(?:\.[A-Za-z0-9_-]+)?\s+\/dev\/[^\s'"]+/,/\bshred\b\s+/])if(Le(t,e),r.test(e))return!0;if(Lo(e,"find",t))return!0;let n=e.split(/[\n\r\u2028\u2029]/);return["reset-hard","reset-merge","clean","checkout","push-force","push-refspec","push-delete","branch","tag","restore"].some((r)=>(Le(t,e),n.some((o)=>Wo(o,r))))}function XC(e,t){return Le(t,e),e.replace($C,"")}var Nn=require("node:path");var yr=require("node:path");var Ot=require("node:path");function Mt(e,t,n){if(wt(t))throw Error("Unsupported Windows namespace path");let r=Ot.isAbsolute(t)?Ot.parse(t).root:"",o=r||e;for(let i of QC(r?t.slice(r.length):t)){if(i===""||i===".")continue;if(i===".."){o=Ot.dirname(o);continue}let s=JC(o,i),a=n.entryKind(s),l=a==="symlink"?n.realpath(s):s;if(a==="missing"||l===null)throw Error(`Cannot resolve path component: ${s}`);o=l}return o}function JC(e,t){return e.endsWith("/")||e.endsWith("\\")?`${e}${t}`:`${e}${Ot.sep}${t}`}function QC(e){let t=process.platform==="win32"?/[\\/]+/:/\/+/;return e.split(t)}var Qs=["GIT_DIR","GIT_WORK_TREE","GIT_COMMON_DIR","GIT_INDEX_FILE"],eS=new Set(Qs),tS=1024,qu=new Set(["GIT_CONFIG_GLOBAL","GIT_CONFIG_NOSYSTEM","GIT_CONFIG_SYSTEM","HOME","XDG_CONFIG_HOME"]),Bo=new Set(["GIT_SSH_COMMAND","GIT_SSH","GIT_SSH_VARIANT"]),nS=/^([A-Za-z_][A-Za-z0-9_]*)\+=/;function Ho(e){return eS.has(e)}function ea(e){return Ho(e)||qu.has(e)||Bo.has(e)||Zn(e)}function He(e,t,n){return n?.has(e)?n.get(e):t.get(e)}function Uo(e,t){let n=He("GIT_CONFIG_COUNT",e,t);if(n===void 0)return{state:"absent"};if(n==="")return{state:"valid",count:0};if(!/^\d+$/.test(n))return{state:"invalid"};let r=Number(n);return Number.isSafeInteger(r)&&r<=tS?{state:"valid",count:r}:{state:"invalid"}}function $o(e,t,n){let o=e.match(nS)?.[1];if(!o||!ea(o))return null;let i=e.indexOf("=");return{name:o,value:`${He(o,t,n)??""}${e.slice(i+1)}`}}function Yu(e){return Xu(e,Bo)}function Zu(e){return Xu(e,qu)}function Xu(e,t){if(!e)return!1;for(let n of e.keys())if(t.has(n))return!0;return!1}var Qu=/^[A-Za-z_][A-Za-z0-9_]*=/;function Ue(e){if(!Qu.test(e))return null;let t=e.indexOf("=");return{name:e.slice(0,t),value:e.slice(t+1)}}function jo(e){let t=new Map,n=0;while(n<e.length){let r=e[n];if(!r)break;let o=Ue(_(r));if(!o)break;t.set(o.name,o.value),n++}return{words:e.slice(n),envAssignments:t}}function ed(e){let t=e.toLowerCase();return e.includes("=")||t==="sudo"||t==="env"||t==="command"||t==="builtin"}function Jt(e,t,n,r){if(!ed(Mn(e)))return{words:e,envAssignments:new Map,cwd:n,rewritten:!1};let o=new Set(e),i=e,s=new Map,a=new Map(r??[]),l=[],c=n;for(let m=0;m<P.wrapperPeelIterations.cap;m++){let d=Ju(i),f=jo(i);for(let[h,g]of f.envAssignments)s.set(h,g),a.set(h,g);if(i=f.words,i.length===0)break;while(i.length>0&&Mn(i).includes("=")&&!oS(i)){let h=iS(Mn(i),a,t.env)??$o(Mn(i),t.env,a);if(h)s.set(h.name,h.value),a.set(h.name,h.value);i=i.slice(1)}if(i.length===0)break;let p=Mn(i).toLowerCase();if(p!=="sudo"&&p!=="env"&&p!=="command"&&p!=="builtin")break;if(p==="sudo"){let h=aS(i,t.paths,c);if(i=h.words,h.cwd!==void 0)c=h.cwd}if(p==="env"){let h=uS(i,c,a,t);if(l.push(...h.envSplitValues??[]),i=h.words,h.cwd!==void 0)c=h.cwd;for(let[g,y]of h.envAssignments)s.set(g,y),a.set(g,y)}if(p==="command")i=dS(i);if(p==="builtin")i=i.slice(Xe(i,1)==="--"?2:1);if(Ju(i)===d)break}let u=jo(i);for(let[m,d]of u.envAssignments)s.set(m,d),a.set(m,d);return{words:u.words,envAssignments:s,cwd:c,envSplitValues:l.length>0?l:void 0,rewritten:rS(u.words,o)}}function rS(e,t){return e.some((n)=>!t.has(n))}function Ju(e){return e.map(_).join(" ")}function Mn(e){let t=e[0];return t?_(t):""}function Xe(e,t){let n=e[t];return n?_(n):void 0}function oS(e){return Qu.test(Mn(e))}function iS(e,t,n){if(!e.startsWith("TMPDIR+="))return null;return{name:"TMPDIR",value:`${t.get("TMPDIR")??n.get("TMPDIR")??""}${e.slice(8)}`}}var sS=new Set(["-u","-g","-C","-D","-h","-p","-r","-t","-T","-U"]);function aS(e,t,n){let r=1,o=n;while(r<e.length){let i=Xe(e,r);if(!i)break;if(i==="--")return{words:e.slice(r+1),cwd:o};if(!i.startsWith("-"))break;if(i==="-D"||i==="--chdir"){let s=Xe(e,r+1);o=s?hr(o,s,t):null,r+=2;continue}if(i.startsWith("--chdir=")){o=hr(o,i.slice(8),t),r++;continue}if(i.startsWith("-D")&&i.length>2){o=hr(o,i.slice(2),t),r++;continue}if(i==="-i"||i==="--login"){o=null,r++;continue}if(sS.has(i)){r+=2;continue}r++}return{words:e.slice(r),cwd:o}}var lS=new Set(["-i","-0","--null"]),cS=new Set(["-u","--unset","-C","--chdir","-P"]);function uS(e,t,n,r){let o=new Map,i=[],s=t,a=1,l=(c)=>({words:e.slice(c),envAssignments:o,cwd:s,envSplitValues:i.length>0?i:void 0});while(a<e.length){let c=Xe(e,a);if(!c)break;if(c==="--")return l(a+1);if(c==="-i"||c==="--ignore-environment"||c==="-"){o.clear();for(let m of n.keys())o.set(m,"");o.set("TMPDIR",""),a++;continue}if(lS.has(c)){a++;continue}if(c==="-u"||c==="--unset"){let m=Xe(e,a+1);if(m!==void 0)o.set(m,"");a+=2;continue}if(c.startsWith("-u")&&c.length>2&&!c.startsWith("-u=")){o.set(c.slice(2),""),a++;continue}if(c.startsWith("--unset=")){o.set(c.slice(8),""),a++;continue}let u=c==="-S"||c==="--split-string"?{value:Xe(e,a+1),consumed:2}:c.startsWith("-S")&&c.length>2?{value:c.slice(2),consumed:1}:c.startsWith("--split-string=")?{value:c.slice(15),consumed:1}:null;if(u){if(u.value!==void 0)i.push(u.value);return s=null,l(a+u.consumed)}if(cS.has(c)){if(c==="-C"||c==="--chdir"){let m=Xe(e,a+1);s=m?hr(s,m,r.paths):null}a+=2;continue}if(c.startsWith("-u=")){a++;continue}if(c.startsWith("-C")&&c.length>2||c.startsWith("--chdir=")){let m=c.startsWith("--chdir=")?c.slice(8):c.startsWith("-C=")?c.slice(3):c.slice(2);s=hr(s,m,r.paths),a++;continue}if(c.startsWith("-P")){a++;continue}if(c.startsWith("-")){a++;continue}if(!Ue(c))break;while(a<e.length){let m=Ue(Xe(e,a)??"");if(!m)break;o.set(m.name,m.value),a++}if(Xe(e,a)==="--")a++;return l(a)}return l(a)}function hr(e,t,n){if(t==="")return null;if(!e&&!yr.isAbsolute(t))return null;let r=yr.isAbsolute(t)?yr.parse(t).root:n.realpath(e??"/");if(r===null)return null;try{return Mt(r,t,n)}catch{return null}}function dS(e){if(Xe(e,1)==="-v")return[...J(["type"]),...e.slice(2)];let t=1;while(t<e.length){let n=Xe(e,t);if(!n)break;if(n==="-p"||n==="-v"||n==="-V"){t++;continue}if(n==="--")return e.slice(t+1);if(n.startsWith("-")&&!n.startsWith("--")&&n.length>1){if(!/^[pvV]+$/.test(n.slice(1)))break;t++;continue}break}return e.slice(t)}var mS=/['"\\$`{}#]/;function Vo(e,t){if(e.some((r)=>mS.test(r)))return null;let n=[...e.flatMap((r)=>r.split(/\s+/).filter((o)=>o.length>0)),...t];return n.length<=64?n:null}function Dt(e,t,n){return Ko(e,t,n).tokens}function fS(e){let t=[],n="",r=0;while(r<e.length){let o=e.charAt(r);if(o==='"'||o==="'"){let i=e.indexOf(o,r+1);if(i===-1)return e.split(/\s+/).map((s)=>s.replace(/["']/g,"")).filter((s)=>s.length>0);n+=e.slice(r+1,i),r=i+1;continue}if(/\s/.test(o)){if(n.length>0)t.push(n);n="",r++;continue}n+=o,r++}if(n.length>0)t.push(n);return t}function Nt(e,t,n,r=0){let o=Ko(e,t,n),i=(o.envSplitValues??[]).flatMap(fS);if(i.length===0)return o.tokens;let s=[...i,...o.tokens];if(r>=8)return s;return Nt(s,t,n,r+1)}function Ko(e,t,n,r){if(!ed(e[0]??""))return{tokens:[...e],envAssignments:new Map,cwd:n};let o=Jt(J(e),t,n,r);return{tokens:o.words.map(_),envAssignments:o.envAssignments,cwd:o.cwd,envSplitValues:o.envSplitValues}}var oa=Symbol("adopt-as-operand"),pS=new Set(["env","sudo","command","builtin"]),gS=new Set(["&&","||","|&","|","&",";"]),hS=new Set(["<<","<<<",">|"]),yS=new Set(["|","|&"]),CS=/[*@#?$!_-]/,SS=/^\w+(?::\w+)*/,bS=Object.freeze([]),Cr=Object.freeze({kind:"scope",edge:"enter"}),Sr=Object.freeze({kind:"scope",edge:"exit"}),vS=Object.freeze([]),ES=new Set(["python","python2","python3","node","deno","bun","ruby","perl","php","rscript","osascript","bash","sh","zsh","dash","ksh"]),br=new Set(["bash","sh","zsh","dash","ksh"]),RS=256,id=new WeakMap;function sd(e,t){let n=t.status==="complete"?new Set(ra(t)):new Set,r=wS(e,n);if(mo(r))return qo("unclosed-quote",r,t);let o={invalid:!1,limited:!1,expansions:0,assignmentFallbacks:[]},i=Qt(t,{source:r,suppressed:n,flags:o,depth:0,functions:new Map,powershell:t.dialect==="powershell"});if(o.limited)return qo("structural-limit",r,t);if(o.invalid)return qo("invalid",r,t);let s=qo("complete",r,t,o.assignmentFallbacks);return id.set(s,Object.freeze(i)),s}function Zo(e,t,n,r,o){let i={cwd:t,variables:new Map,previous:null},s=[],a=new Set,l=null,c=[];for(let u of ad(e)){if(u.kind==="scope"){if(u.edge==="enter"){c.push({state:i,segment:[...s],shellWords:new Set(a),pipeProducer:l});continue}let m=o.segment(s,i,l,null,a);if(m)return m;let d=c.pop();if(d===void 0)throw Error("scope exit without a matching enter");i=d.state,s=d.segment,a=d.shellWords,l=d.pipeProducer;continue}if(u.kind==="operator"){if(!u.boundary)continue;let m=o.segment(s,i,l,u.operator,a);if(m)return m;i=xS(s,i,n,r),l=s.length>0&&yS.has(u.operator)?s:null,s=[],a=new Set;continue}if(u.kind==="redirection"){if(u.fd!==void 0)a.add(s.length-1);if(u.target===void 0)continue;let m=o.redirection({operator:u.operator,role:u.role,targetOrder:u.targetOrder,target:u.target,...u.body===void 0?{}:{body:u.body,consumer:u.consumer}},i);if(m===oa){a.add(s.length),s.push(o.word(u.target));continue}if(m)return m;continue}s.push(o.word(u.text))}return o.segment(s,i,l,null,a)}function Xo(e){return ad(e).flatMap((t)=>{if(t.kind==="word")return[{kind:"word",text:t.text}];if(t.kind==="operator")return[{kind:"operator",boundary:t.boundary}];if(t.kind==="redirection")return[{kind:"redirection",target:t.target}];return[]})}function Pe(e,t){return e.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)(:?[-+])([^}]*)\}/g,(n,r,o,i)=>{let s=t.get(r);if(s===void 0)return n;let a=o.startsWith(":")?s!=="":!0;if(o.endsWith("-"))return a?s:Pe(i,t);return a?Pe(i,t):""}).replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g,(n,r)=>t.get(r)??n).replace(/\$([A-Za-z_][A-Za-z0-9_]*)/g,(n,r)=>t.get(r)??n)}function vr(e){return e.length>0&&e.every((t)=>/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(t))}function xS(e,t,n,r){let o=vr(e)?new Map([...t.variables,..._S(e,t.variables)]):t.variables,i=Dt([...e],n),s=I(i[0]??"").toLowerCase()==="cd"?i[1]:void 0;if(!s)return{...t,variables:o};if(s==="-"){if(t.previous===null)return{...t,variables:o};return{cwd:t.previous,variables:o,previous:t.cwd}}return{cwd:ge(Pe(s,o),t.cwd,n,r),variables:o,previous:t.cwd}}function _S(e,t){return e.flatMap((n)=>{let r=/^([A-Za-z_][A-Za-z0-9_]*)(.*)$/.exec(n),o=r?.[2]?.startsWith("=")?r[2].slice(1):void 0;return r?.[1]!==void 0&&o!==void 0?[[r[1],Pe(o,t)]]:[]})}function ad(e){return id.get(e)??bS}function wS(e,t){return[...t].reduce((n,r)=>n.slice(0,r.start)+" ".repeat(r.end-r.start)+n.slice(r.end),e)}function qo(e,t,n,r=vS){return Object.freeze({status:e,source:t,program:n,assignmentFallbacks:Object.freeze(r)})}function Qt(e,t){return e.nodes.flatMap((n,r)=>AS(n,e,r,t)).sort((n,r)=>n.start-r.start).flatMap((n)=>[...n.events])}function AS(e,t,n,r){if(e.kind==="connector")return[{start:e.span.start,events:[Je(OS(e.operator))]}];if(e.kind==="unknown")return[{start:e.span.start,events:[Je(e.source)]}];if(e.kind==="function")return r.functions.set(e.name,e.body),[];if(e.kind==="group"){let i=e.style!=="subshell",s=r.source[e.span.end-1]===(i?"}":")"),a=i?r:{...r,functions:new Map(r.functions)};return[{start:e.span.start,events:i?[Yo("{"),...Qt(e.body,a),...s?[Yo("}")]:[]]:[Cr,Je("("),...Qt(e.body,a),...s?[Je(")")]:[],Sr]}]}let o=LS(e,r.functions);if(o){if(r.depth>=Zt.maxDepth||++r.flags.expansions>RS)return r.flags.limited=!0,[];return[{start:e.span.start,events:[...td(e,r),Yo(";"),...Qt(o,{...r,depth:r.depth+1}),Yo(";")]},...nd(e,t,n,r)]}return[{start:e.span.start,events:td(e,r)},...nd(e,t,n,r)]}function td(e,t){return[...e.words.map((n)=>({start:n.span.start,events:cd(n,e,t,!1)})),...e.redirections.map((n)=>({start:n.span.start,events:PS(n,e,t)}))].sort((n,r)=>n.start-r.start).flatMap((n)=>n.events)}function PS(e,t,n){let r=e.operator==="<<-"?"<<":e.operator,o=e.target?cd(e.target,t,n,!0):[],i=o[0],s=i?.kind==="word"?i.text:void 0;return[...e.fd===void 0?[]:[ia(String(e.fd))],Object.freeze({kind:"redirection",operator:r,...e.fd===void 0?{}:{fd:e.fd},role:MS(r),targetOrder:hS.has(r)?"legacy-segment":"immediate",...s===void 0?{}:{target:s},...e.heredoc&&n.suppressed.has(e.heredoc.bodySpan)?{body:e.heredoc.body,consumer:dd(t)}:{}}),...s===void 0?o:o.slice(1)]}function nd(e,t,n,r){let o=e.redirections.filter((i)=>i.operator==="<<"||i.operator==="<<-");return[...o.flatMap((i)=>{let s=i.heredoc;if(!s)return[];let a=[ia(s.delimiter),.../[\r\n]/.test(r.source[s.terminatorSpan.end]??"")?[Je(";")]:[]];if(r.suppressed.has(s.bodySpan))return[{start:s.bodySpan.start,events:a}];return[{start:s.bodySpan.start,events:[...ld(r.source.slice(s.bodySpan.start,s.bodySpan.end),r),...a]}]}),...o.some((i)=>!i.heredoc&&i.target)?TS(t,n,r):[]]}function TS(e,t,n){let r=e.nodes.slice(t+1).find((o)=>o.kind==="connector");if(!r||r.span.end>=e.span.end)return[];return[{start:r.span.end,events:ld(n.source.slice(r.span.end,e.span.end),n)}]}function ld(e,t){if(t.depth>=Zt.maxDepth)return t.flags.limited=!0,[];let n=Ye(e,"posix");if(n.status==="limited")return t.flags.limited=!0,[];let r={invalid:!1,limited:!1,expansions:t.flags.expansions,assignmentFallbacks:t.flags.assignmentFallbacks},o=Qt(n,{source:e,suppressed:new Set,flags:r,depth:t.depth+1,functions:new Map,powershell:!1});return t.flags.limited||=r.limited,t.flags.expansions=r.expansions,o}function cd(e,t,n,r){let o=[],i={single:!1,double:!1},s="",a=!1,l=()=>{let c=a&&!r?Je("glob"):s!==""||e.quoted&&o.length===0?ia(s):void 0;if(c)o.push(c);s="",a=!1};for(let c of e.parts){if(c.provenance!=="command-substitution"&&c.provenance!=="arithmetic"){for(let f of ta(c.raw,i,n.flags,n.powershell)){if(typeof f==="string"){l(),o.push(Je(f));continue}s+=f.text,a||=f.glob}continue}let u=t.nested.find((f)=>f.span.start>=c.span.start&&f.span.end<=c.span.end);if(i.double){let f=n.source.slice(c.span.start,c.span.end);s+=ta(f,{single:!1,double:!0},n.flags,n.powershell).map((h)=>typeof h==="string"?h:h.text).join("");let p=u?Qt(u,n).filter((h)=>h.kind==="redirection"&&h.body!==void 0):[];if(p.length>0)o.push(Cr,...p,Sr);continue}let m=u?Qt(u,n):[];if(c.raw.startsWith("`")){s+="${}",l(),o.push(Cr,...m,Sr);continue}if(c.raw.startsWith("<(")||c.raw.startsWith(">(")){l(),o.push(c.raw.startsWith("<(")?Je("<("):Object.freeze({kind:"redirection",operator:">",role:"file-write",targetOrder:"immediate"}),Cr,...m,...c.raw.endsWith(")")?[Je(")")]:[],Sr);continue}let d=c.raw.startsWith("$((")?2:1;s+="${}",l(),o.push(...Array.from({length:d},()=>Je("(")),...d===1?[Cr]:[],...m,...c.raw.endsWith(")".repeat(d))?Array.from({length:d},()=>Je(")")):[],...d===1?[Sr]:[])}return l(),o}function ta(e,t,n,r){let o=[],i="",s=!1,a=0;while(a<e.length){let l=e[a]??"";if(!t.single&&!t.double&&(l==="("||l===")")){o.push({text:i,glob:s},l),i="",s=!1,a++;continue}if(r&&l==="`"&&!t.single){i+=e[a+1]??"",a+=2;continue}if(t.single&&l==="'"){t.single=!1,a++;continue}if(t.single){i+=l,a++;continue}if(t.double){if(l==='"'){t.double=!1,a++;continue}if(!r&&l==="\\"){let c=e[a+1]??"";i+=['"',"\\","$"].includes(c)?c:`\\${c}`,a+=2;continue}if(l==="$"){let c=rd(e,a,t,n,r);i+=c.text,a=c.next;continue}i+=l,a++;continue}if(l==="'"||l==='"'){t.single=l==="'",t.double=l==='"',a++;continue}if(!r&&l==="\\"){let c=e[a+1]??"";s||=c==="*"||c==="?",i+=c,a+=2;continue}if(l==="$"){let c=rd(e,a,t,n,r);i+=c.text,a=c.next;continue}s||=l==="*"||l==="?",i+=l,a++}return[...o,{text:i,glob:s}]}function rd(e,t,n,r,o){let i=e[t+1];if(i==="{"){let a=kS(e,t+2);if(a===-1)return r.invalid=!0,{text:"",next:e.length};let l=e.slice(t,a+1);return IS(l,n,r,o),{text:l,next:a+1}}if(i!==void 0&&CS.test(i))return{text:`\${${i}}`,next:t+2};let s=(o?SS:/^\w*/).exec(e.slice(t+1))?.[0]??"";return{text:`\${${s}}`,next:t+1+s.length}}function IS(e,t,n,r){let o=e.slice(2,-1),i=/^[A-Za-z_][A-Za-z0-9_]*/.exec(o)?.[0];if(!i)return;let s=o.slice(i.length),a=[":=","="].find((c)=>s.startsWith(c));if(!a)return;let l=ta(s.slice(a.length),{...t},n,r);n.assignmentFallbacks.push(...l.flatMap((c)=>typeof c==="string"||!c.text?[]:[c.text]))}function kS(e,t){let n=1,r=t;while(n>0&&r<e.length){if(e[r]==="{"&&e[r-1]==="$")n++;if(e[r]==="}")n--;r++}return n===0?r-1:-1}function OS(e){return/^[\r\n]+$/.test(e)?";":e}function Je(e){return Object.freeze({kind:"operator",operator:e,boundary:gS.has(e)})}function Yo(e){return Object.freeze({kind:"operator",operator:e,boundary:!0})}function ia(e){return Object.freeze({kind:"word",text:e})}function MS(e){if(e==="<<"||e==="<<<")return"here-data";if(e==="<"||e==="<&")return"file-read";return"file-write"}function Er(e){return ES.has(e)||/^python\d/.test(e)}var DS=new Map([["sudo",new Set(["-u","-g","-h","-p","-C","-D","-r","-t","-T","-U","--user","--group","--host","--prompt","--chdir","--role","--type","--other-user"])],["env",new Set(["-u","-C","-P","-S","--unset","--chdir","--split-string"])]]);function ud(e,t){let n=t[0];if(n===void 0||!n.startsWith("-"))return t;let r=DS.get(e)?.has(n)??!1;return ud(e,t.slice(r?2:1))}function na(e){let t=e[0];if(t===void 0)return[];if(/^[A-Za-z_][A-Za-z0-9_]*=/.test(t))return na(e.slice(1));if(!pS.has(t))return[...e];return na(ud(t,e.slice(1)))}function dd(e){let t=sr(e),n=e.words.findIndex((r)=>r.provenance==="literal"&&r.text===t);return na(n<0?[]:e.words.slice(n).map((r)=>r.text))}function NS(e){let t=dd(e)[0];if(t===void 0)return!1;let n=I(t).toLowerCase();return Er(n)&&!br.has(n)}function ra(e){return e.nodes.flatMap((t,n)=>{if(t.kind==="group"||t.kind==="function")return ra(t.body);if(t.kind!=="command")return[];let r=t.nested.flatMap((a)=>ra(a)),o=t.redirections.flatMap((a)=>a.heredoc?.quotedDelimiter?[a.heredoc.bodySpan]:[]);if(NS(t))return[...r,...o];let i=e.nodes[n+1];if(i?.kind==="connector"&&(i.operator==="|"||i.operator==="|&")||!FS(t))return r;return[...r,...o]})}function LS(e,t){let n=sr(e);return n===void 0?void 0:t.get(n)}function Lt(e,t){return e!==void 0&&e.provenance==="literal"&&!e.quoted&&e.raw===e.text&&e.text===t}function WS(e){if(Lt(e.words[0],"git"))return Lt(e.words[1],"commit");if(!Lt(e.words[0],"gh")||!Lt(e.words[2],"create"))return!1;return Lt(e.words[1],"pr")||Lt(e.words[1],"issue")}function FS(e){return(Lt(e.words[0],"cat")||Lt(e.words[0],"tee")||WS(e))&&!e.words.some(od)&&!e.redirections.some((n)=>od(n.target))}function od(e){return e?.parts.some((t)=>t.provenance==="command-substitution"&&t.raw.startsWith(">("))??!1}var md=new Set(["absolutepath","directorypath","directory_path","file","file_path","filepath","include","notebook_path","path","searchdirectory","search_directory","searchpath","targetfile","target_file"]),fd=new Set([...md,"glob"]),GS=new Set([...fd,"pattern"]),pd={parseCommand:Ye,readGuardSyntax:sd};class Qe extends Error{name="StructuralShellSyntaxLimitError";constructor(){super("Structural command analysis limit exceeded.")}}function Rr(e,t={}){let n=zS({...pd,...t}),r=At(e.input),o=[];if((e.route.kind==="command"||e.route.kind==="unknown")&&r)o.push({usage:"input-candidate",source:r});if(e.route.kind==="command"&&"command"in e&&e.command)o.push({usage:"declared-command",source:e.command});let i=o.reduce((s,a)=>{let l=s.findIndex((m)=>m.source===a.source);if(l!==-1){let m=s[l];if(!m)return s;return s[l]={...m,usages:[...m.usages,a.usage]},s}let c=e.route.kind==="command"?e.route.shell:process.platform==="win32"?"powershell":"posix",u=n.getCommandProgram(a.source,c);return s.push({usages:[a.usage],source:a.source,program:u,shell:n.getShellSyntax(a.source,u)}),s},[]);return{invocation:{toolName:e.toolName,route:e.route,context:e.context},commands:i,paths:BS(e),store:n}}function Ee(e,t){return e.commands.find((n)=>n.usages.includes(t))}function yt(e,t){if(!e.includes("$"))return e;return ji(e,t)}function zS(e={}){let t={...pd,...e},n=new Map,r=new Map,o=new WeakMap,i=(a,l)=>{let c=`${l}\x00${a}`,u=r.get(c);if(u)return u;let m=t.parseCommand(a,l);return r.set(c,m),m};return{getShellSyntax:(a,l)=>{if(l&&l.source!==a)throw TypeError("Shell syntax source does not match command program source.");let c=l??i(a,"posix");if(c.status==="limited"){let d=o.get(c);if(d)return d;let f={status:"structural-limit",source:a,program:c,assignmentFallbacks:[]};return o.set(c,f),f}let u=n.get(a);if(u)return u;let m=t.readGuardSyntax(a,c);return n.set(a,m),m},getCommandProgram:i}}function BS(e){let t=e.route.kind==="grep"?fd:e.route.kind==="glob"?GS:md;return[...Jr(e.input,t),...e.route.kind==="patch"?Qr(e.input):[]]}var HS=new Set(["-S","--suffix"]);function Dn(e,t,n,r,o){if(e.status==="structural-limit")throw new Qe;if(e.status!=="complete")return o.findMalformedTarget(e.source);return Zo(e,t,n,r,{word:(i)=>i,segment:(i,s)=>o.findSegmentTarget(i,s),redirection:(i,s)=>i.role==="file-write"&&o.isRedirectionTarget(Pe(i.target,s.variables),s)?i.target:null})}function Jo(e){let t=[],n=null,r=!1;for(let o=0;o<e.length;o++){let i=e[o];if(i===void 0)break;if(!r&&i==="--"){r=!0;continue}if(!r&&(i==="-t"||i==="--target-directory")){n=e[++o]??null;continue}if(!r&&i.startsWith("--target-directory=")){n=i.slice(19);continue}if(!r&&i.startsWith("-t")&&i.length>2){n=i.slice(2);continue}if(!r&&HS.has(i)){o++;continue}if(!r&&(i.startsWith("--suffix=")||i.startsWith("--backup=")))continue;if(!r&&i.startsWith("-"))continue;t.push(i)}return n?{sources:t,destination:n}:{sources:t.slice(0,-1),destination:t.at(-1)??null}}var $e="Git metadata and hooks are protected. Ask the user before modifying them.";function yd(e,t,n,r){let o=e.invocation.context.executionCwd;if(!t)return null;if(e.invocation.route.kind==="patch"||e.invocation.route.kind==="path"||e.invocation.route.kind==="unknown"){if(Xr(e.invocation.toolName))return null;let a=e.paths.find((l)=>gd(l,o,t,n,r,t.entries));return a?{target:a}:null}if(e.invocation.route.kind!=="command")return null;let i=Ee(e,"input-candidate");if(!i)return null;let s=Dn(i.shell,o,n,r,{findSegmentTarget:(a,l)=>VS(a,l,t,n,r),isRedirectionTarget:(a,l)=>gd(a,l.cwd,t,n,r,t.markerFiles),findMalformedTarget:()=>null});return s?{target:s}:null}function en(e,t,n,r,o,i,s=!1){if(!n)return!1;let a=ei(ge(e,t,o,i)),l=a.replace(/(\/\.?\*+)+$/,"");if(l!==a&&l!==""){if(sa(l,n))return!0;let c=s||a.slice(l.length).includes("/."),u=(m)=>c?Qo(m,l):US(m,l);if(n.markerFiles.some(u))return!0;return r&&hd(n).some(u)}if(sa(a,n))return!0;return r&&hd(n).some((c)=>Qo(c,a))}function US(e,t){let n=Nn.relative(t,e);if(n===""||n.startsWith("..")||Nn.isAbsolute(n))return!1;return!n.split(/[\\/]/)[0]?.startsWith(".")}function $S(e,t,n,r,o){return en(e,t,n,!0,r,o)}function jS(e,t,n,r,o){if(!n)return!1;return sa(ei(ge(e,t,r,o)),n)}function gd(e,t,n,r,o,i){let s=ei(ge(e,t,r,o));return i.includes(s)||Sd(s,n)}function Cd(e,t,n,r,o){if(!n)return!1;return n.hooksDirectories.some((i)=>e.some((s)=>Qo(i,ei(ge(s,t,r,o)))))}function sa(e,t){return t.entries.includes(e)||t.directories.includes(e)||Sd(e,t)}function Sd(e,t){return t.hooksDirectories.some((n)=>Qo(e,n))}function hd(e){return[...e.entries,...e.directories,...e.hooksDirectories]}function Qo(e,t){let n=Nn.relative(t,e);return n===""||!/^\.\.(?:[\\/]|$)/.test(n)&&!Nn.isAbsolute(n)}function ei(e){return process.platform==="win32"?e.toLowerCase():e}function VS(e,t,n,r,o){if(vr(e))return null;let i=Nt([...e],r);if(I(i[0]??"").toLowerCase()!=="mv")return null;let s=Jo(i.slice(1)),a=s.sources.find((l)=>$S(Pe(l,t.variables),t.cwd,n,r,o));if(a)return a;return s.destination&&jS(Pe(s.destination,t.variables),t.cwd,n,r,o)?s.destination:null}var ee=require("node:path");var We=require("node:path"),KS=["/tmp","/var/tmp","/private/tmp","/private/var/tmp"],qS=`
33
+ `;function xr(e,t){if(Wt(e,t))return!0;if(!e.has("TMPDIR"))return!1;return!aa(e.get("TMPDIR")??"",t)}function tn(e,t){if(e.has("TMPDIR"))return aa(e.get("TMPDIR")??"",t);let n=la(e,t);if(n===void 0)return!0;return aa(n,t)}function la(e,t){return Rd(e,t,"TMPDIR")}function aa(e,t){if(!e)return!1;if(ZS(e))return!1;return ca(e,t)}function Wt(e,t){let n=Rd(e,t,"IFS");return n!==void 0&&n!==""&&n!==qS}function ca(e,t){let n=ti(e,t.paths);if(n===null)return!1;return Ed(t).some((r)=>JS(n,r))}function vd(e,t){let n=ti(e,t.paths);if(n===null)return!1;return Ed(t).some((r)=>ni(r)===ni(n))}var bd=new WeakMap;function Ed(e){let t=bd.get(e);if(t)return t;let n=YS(e);return bd.set(e,n),n}function YS(e){let t=KS.map((r)=>ti(r,e.paths)??We.normalize(r)),n=ti(e.tmpdir,e.paths);if(!n)return t;if(process.platform==="win32")return[...t,n];if(process.platform==="darwin"&&XS(n))return[...t,n];return t}function ZS(e){return/[\s$`*?[]/.test(e)||/\{[^{}]*(?:,|\.\.)[^{}]*\}/.test(e)||/[+@!]\([^)]*\)/.test(e)}function Rd(e,t,n){return e.has(n)?e.get(n):t.env.get(n)}function XS(e){return/^\/(?:private\/)?var\/folders\/[^/]{2}\/[^/]+\/T$/.test(e)}function ti(e,t){try{let n=We.normalize(e);if(!We.isAbsolute(n))return n;let r=We.parse(n).root,o=n.slice(r.length).split(/[\\/]+/).filter(Boolean),i=r;for(let s=0;s<o.length;s++){let a=We.join(i,o[s]??"");if(t.entryKind(a)==="missing")return We.join(a,...o.slice(s+1));let l=t.realpath(a);if(l===null)return null;i=l}return i}catch{return null}}function JS(e,t){let n=ni(e),r=ni(t);if(n===r)return!0;let o=r.endsWith(We.sep)?r:`${r}${We.sep}`;return n.startsWith(o)}function ni(e){return process.platform==="win32"?e.toLowerCase():e}var QS=process.platform==="win32",xd=64,eb=16384;function _r(e){let t=Ru(e,xd,xd,eb);return{expandedTargets:t&&"words"in t?t.words:void 0,unsafeBraceExpansion:t!==void 0&&"limited"in t,targetIsLiteral:t===void 0&&e.provenance==="literal"&&(e.quoted||e.raw!==e.text),tmpdirWordSplittingProtected:tb(e)}}function tb(e){let t=e.parts.filter((n)=>n.provenance==="variable"&&/\$(?:TMPDIR(?![A-Za-z0-9_])|\{TMPDIR\})/.test(n.raw));return t.length>0&&t.every((n)=>nb(e.raw,n.span.start-e.span.start))}function nb(e,t){let n=null,r=!1;for(let o=0;o<t;o++){let i=e[o];if(r){r=!1;continue}if(i==="\\"&&n!=="'"){r=!0;continue}if(n===i){n=null;continue}if(n===null&&(i==="'"||i==='"'))n=i}return n==='"'}function nn(e){let t=e.environment.home,n=e.environment.paths,r=e.budget??me();return{anchoredCwd:e.originalCwd??e.cwd??null,resolvedCwd:e.cwd??null,strict:e.strict??!1,paranoid:e.paranoid??!1,trustTmpdirVar:e.allowTmpdirVar??!0,posixShell:e.posixShell??!1,tmpdirWordSplittingUnsafe:e.tmpdirWordSplittingUnsafe??!1,trustedTmpdirValue:e.trustedTmpdirValue??e.allowTmpdirVar??!0,environment:e.environment,allowRoots:ab(e.allowPaths,t,n,r),protectedGitMetadata:e.protectedGitMetadata,budget:r}}function et(e,t,n={}){let r=n.targetIsLiteral??!1;if(!r&&t.tmpdirWordSplittingUnsafe&&!n.tmpdirWordSplittingProtected&&cb(e))return{kind:"outside_anchored_cwd"};let o=!r&&Ad(e,t.posixShell);if(wt(e))return{kind:"outside_anchored_cwd"};if(da(e,r))return{kind:"root_or_home_target"};if(rb(e,t,r))return{kind:"root_or_home_target"};if(t.resolvedCwd&&en(e,t.resolvedCwd,t.protectedGitMetadata,!0,t.environment,t.budget,!t.posixShell))return{kind:"git_metadata_target"};if(ob(e,t.trustTmpdirVar,t.posixShell,o,r,n.tmpdirWordSplittingProtected??!1,t.trustedTmpdirValue,t.environment))return{kind:"temp_target"};if(o)return{kind:"dynamic_target"};if(lb(e,t,r))return{kind:"temp_target"};let i=t.anchoredCwd;if(i){if(!n.skipHomeCwd&&fb(i,t.environment.home,t.environment.paths,t.budget))return{kind:"home_cwd_target"};if(!n.skipCwdSelf&&pb(e,t.resolvedCwd??i,t.environment.paths,t.budget))return{kind:"cwd_self_target"};if(gb(e,i,t.resolvedCwd??i,o,r,t.environment.paths,t.budget))return{kind:"within_anchored_cwd"}}return{kind:"outside_anchored_cwd"}}function _d(e,t,n={}){let{containmentTarget:r,...o}=n;if(et(e,t,o).kind!=="temp_target")return!1;let i=e.trim();if(sb(i))return!1;if(vd(i,t.environment))return!1;return![t.anchoredCwd,t.resolvedCwd].some((s)=>hb(r??i,s,t.environment.paths,t.budget))}function da(e,t=!1){let n=e.trim(),r=ee.posix.normalize(n),o=n.replace(/\\/g,"/"),i=r==="/"?r:r.replace(/\/+$/,"");if(i==="/"||i.startsWith("/")&&i.slice(1).split("/").every((s)=>/^\*+$/.test(s)))return!0;if(/^[A-Za-z]:\/+\*?$/.test(o)||/^\/\/[^/]+\/+[^/]+(?:\/+\*?)?$/.test(o))return!0;if(!t&&(r==="~"||r==="~/"||r==="~/*"))return!0;if(!t&&(r==="$HOME"||r==="$HOME/"||r==="$HOME/*"))return!0;if(!t&&(r==="${HOME}"||r==="${HOME}/"||r==="${HOME}/*"))return!0;return!1}function rb(e,t,n){let r=e.trim(),o=n?r:r==="*"?".":r.endsWith("/*")?r.slice(0,-2):r;if(!o)return!1;try{let i=ee.isAbsolute(o)?o:t.resolvedCwd?ee.resolve(t.resolvedCwd,o):null;if(!i)return!1;let s=Te(N(i,t.environment.paths,t.budget));if(s===ee.parse(s).root)return!0;return s===Te(N(t.environment.home,t.environment.paths,t.budget))}catch{return!1}}function Te(e){let t=ee.normalize(e);if(QS){if(t=t.replace(/\//g,"\\").toLowerCase(),t.length>3&&t.endsWith("\\"))t=t.slice(0,-1);return t}if(t.length>1&&t.endsWith("/"))t=t.slice(0,-1);return t}function ob(e,t,n,r,o,i,s,a){let l=e.trim();if(wd(l))return!1;if(!r&&ca(l,a))return!0;return(t||i&&s)&&n&&!o&&ib(l,n)}function ib(e,t){return["$TMPDIR","${TMPDIR}"].some((n)=>{if(e===n)return!0;if(!e.startsWith(`${n}/`))return!1;return!Ad(e.slice(n.length+1),t)})}function sb(e){let t=/^(?:\$TMPDIR|\$\{TMPDIR\})(?:\/(.*))?$/.exec(e);if(!t)return!1;return ee.posix.normalize(`/${t[1]??""}`)==="/"}function wd(e){return e.split(/[\\/]+/).includes("..")}function ab(e,t,n,r){if(!e?.length)return[];return e.flatMap((o)=>{let i=rr(o.trim(),t);if(!ee.isAbsolute(i))return[];try{let s=N(i,n,r);if(or(s,N(t,n,r)))return[];return[Te(s)]}catch{return[]}})}function lb(e,t,n){if(t.allowRoots.length===0)return!1;let r=e.trim();if(wd(r))return!1;let o=n?r:rr(r,t.environment.home),i=t.resolvedCwd??t.anchoredCwd,s=ee.isAbsolute(o)?o:i?ee.resolve(i,o):null;if(!s)return!1;try{let a=Te(N(s,t.environment.paths,t.budget));return t.allowRoots.some((l)=>a===l||a.startsWith(l.endsWith(ee.sep)?l:`${l}${ee.sep}`))}catch{return!1}}function cb(e){return/\$(?:TMPDIR(?![A-Za-z0-9_])|\{TMPDIR\})/.test(e)}function Ad(e,t=!1){return e.includes("$")||e.includes("`")||ub(e)||t&&db(e)}function ub(e){let t=!1;for(let n of e){if(t){t=!1;continue}if(n==="\\"){t=!0;continue}if(n==="*"||n==="?"||n==="[")return!0}return!1}function db(e){let t=!1;for(let n=0;n<e.length;n++){let r=e[n];if(t){t=!1;continue}if(r==="\\"){t=!0;continue}if(r==="{"&&mb(e,n)||(r==="+"||r==="@"||r==="!")&&e[n+1]==="(")return!0}return!1}function mb(e,t){let n=e.indexOf("}",t+1);if(n===-1)return!1;let r=e.slice(t+1,n);return r.includes(",")||r.includes("..")}function fb(e,t,n,r){try{return Te(N(e,n,r))===Te(N(t,n,r))}catch{try{return Te(e)===Te(t)}catch{return!1}}}function pb(e,t,n,r){if(e==="."||e==="./"||e===".\\")return!0;try{return Te(N(ee.resolve(t,e),n,r))===Te(N(t,n,r))}catch{try{return Te(ee.resolve(t,e))===Te(t)}catch{return!1}}}function gb(e,t,n,r,o,i,s){let a=n??t;if(!o&&(e.startsWith("~")||e.startsWith("$HOME")||e.startsWith("${HOME}")))return!1;if(r)return!1;if(e.startsWith("/")||/^[A-Za-z]:[\\/]/.test(e))try{return ua(e,t,i,s)}catch{return!1}if(e.startsWith("./")||e.startsWith(".\\")||!e.includes("/")&&!e.includes("\\"))try{return ua(ee.resolve(a,e),t,i,s)}catch{return!1}if(e.startsWith("../"))return!1;try{return ua(ee.resolve(a,e),t,i,s)}catch{return!1}}function ua(e,t,n,r){try{return Pd(N(e,n,r),N(t,n,r))}catch{return!1}}function hb(e,t,n,r){if(!t)return!1;try{return Pd(N(t,n,r),N(e,n,r))}catch{return!0}}function Pd(e,t){let n=Te(e),r=Te(t);return n.startsWith(`${r}${ee.sep}`)||n===r}var yb=new Set(["remove-item","ri","del","erase","rd","rm","rmdir"]),Td="PowerShell Remove-Item -Recurse -Force outside cwd is blocked. Retry deleting only explicit paths inside the current directory; escalate for anything outside it.",Cb="PowerShell Remove-Item -Recurse -Force for non-temporary paths is blocked by the active safety policy. Retry deleting only explicit paths inside the current directory; escalate for anything outside it.",Id="PowerShell Remove-Item target contains variables or pipeline input that cannot be verified safely. Use literal paths within cwd.",kd="PowerShell Remove-Item targeting root or home directory is extremely dangerous and always blocked.",Sb="PowerShell Remove-Item -Recurse -Force in home directory is dangerous. Change to a project directory first.",bb="PowerShell Remove-Item receives pipeline input that cannot be verified safely. Use explicit literal paths within cwd.";function Od(e,t,n,r=nn({...n,allowPaths:n.policy?.destructiveCommandAllowPaths})){return vb(e.words.map((o)=>({kind:"word",text:o.text,dynamic:o.provenance!=="literal"})),t,r,n.policy)}function vb(e,t,n,r){let o=e.filter((l)=>l.kind==="word"),i=Rb(o),s=o[i];if(!s||!yb.has(Ob(s.text)))return null;let a=Eb(o.slice(i+1));if(a.whatIfProtected)return null;if(se(r,"powershell.remove-item-pipeline-dynamic-target",n.strict)&&t&&(a.targets.length===0||a.recursive))return C("powershell.remove-item-pipeline-dynamic-target",bb);for(let l of a.targets)if(!wt(l.text)&&da(fa(l.text)))return C(a.recursive&&a.force?"powershell.remove-item-recursive-force-root-or-home":"powershell.remove-item-root-or-home",kd);for(let l of a.targets)if(n.resolvedCwd&&en(fa(l.text),n.resolvedCwd,n.protectedGitMetadata,a.recursive,n.environment,n.budget,!0))return C("powershell.remove-item-git-metadata",$e);if(!a.recursive||!a.force)return null;if(se(r,"powershell.remove-item-recursive-force-dynamic-target",n.strict)&&(a.hasDynamicTarget||a.targets.length===0))return C("powershell.remove-item-recursive-force-dynamic-target",Id);for(let l of a.targets){let c=Mb(et(fa(l.text),n),n,r);if(c)return c}return null}function Eb(e){let t=[],n=!1,r=!1,o=!1,i=!1,s=!1;for(let a=0;a<e.length;a++){let l=e[a];if(!l||l.kind!=="word")continue;if(xb(l))continue;if(s){t.push(ma(l)),i=i||l.dynamic;continue}if(l.text==="--"){s=!0;continue}let c=wb(l.text);if(!c){t.push(ma(l)),i=i||l.dynamic;continue}if(Ab(c.name)){let u=c.value?_b(c.value,l):e[++a];if(u?.kind==="word"){t.push(ma(u)),i=i||u.dynamic;continue}i=!0;continue}if(Pb(c.name)){n=!0;continue}if(Tb(c.name)){r=!0;continue}if(Ib(c.name))o=kb(c.value)}return{targets:t,recursive:n,force:r,whatIfProtected:o,hasDynamicTarget:i}}function Rb(e){let t=e[0];if(t?.kind==="word"&&t.text==="&"||t?.text===".")return e.length>1?1:0;return 0}function ma(e){return{text:e.kind==="word"?e.text:"",dynamic:e.kind==="word"&&e.dynamic}}function xb(e){return e.kind==="word"&&e.text===","}function fa(e){let t=e.replace(/\\/g,"/"),n=/^\$env:(?:userprofile|home)(?=$|\/)/i.exec(t);return n?`$HOME${t.slice(n[0].length)}`:t}function _b(e,t){return{kind:"word",text:e,dynamic:t.kind==="word"&&(t.dynamic||e.includes("$"))}}function wb(e){if(!e.startsWith("-")||e==="-")return null;let t=e.slice(1),n=t.indexOf(":");if(n===-1)return{name:t.toLowerCase()};return{name:t.slice(0,n).toLowerCase(),value:t.slice(n+1)}}function Ab(e){return"path".startsWith(e)||"literalpath".startsWith(e)}function Pb(e){return"recurse".startsWith(e)}function Tb(e){return e.length>=2&&"force".startsWith(e)}function Ib(e){return e==="wi"||"whatif".startsWith(e)}function kb(e){if(e===void 0||e==="")return!0;let t=e.toLowerCase();return t==="$true"||t==="true"}function Ob(e){return e.toLowerCase()}function Mb(e,t,n){switch(e.kind){case"root_or_home_target":return C("powershell.remove-item-recursive-force-root-or-home",kd);case"git_metadata_target":return C("powershell.remove-item-git-metadata",$e);case"temp_target":return null;case"dynamic_target":if(!se(n,"powershell.remove-item-recursive-force-dynamic-target",t.strict))return null;return C("powershell.remove-item-recursive-force-dynamic-target",Id);case"home_cwd_target":return C("powershell.remove-item-recursive-force-home-cwd",Sb);case"cwd_self_target":return C("powershell.remove-item-recursive-force-cwd-self",Td);case"within_anchored_cwd":if(!se(n,"powershell.remove-item-recursive-force-paranoid",t.paranoid))return null;return C("powershell.remove-item-recursive-force-paranoid",Cb);case"outside_anchored_cwd":return C("powershell.remove-item-recursive-force-outside-cwd",Td)}}var Ln="Command could not be safely analyzed (strict mode). Simplify the command and retry, or ask the user to verify.",ri="Unsupported heredoc syntax",Md="CC Safety Net could not validate the command because its structure exceeds safe analysis limits.";var Wr=require("node:path");var Db=new Set(["--ca-bundle","--cli-binary-format","--cli-connect-timeout","--cli-error-format","--cli-read-timeout","--color","--endpoint-url","--output","--profile","--query","--region"]),Nb=new Set(["--access-token-file","--account","--billing-project","--configuration","--flags-file","--flatten","--format","--impersonate-service-account","--project","--trace-token","--verbosity"]),Lb=new Set(["-o","--output","--query","--subscription"]),Wb=new Set;function Dd(e){if(e==="aws")return Db;if(e==="gcloud")return Nb;if(e==="az")return Lb;return Wb}var Fb=new Set(["-c","-H","-l","--config","--context","--host","--log-level","--tlscacert","--tlscert","--tlskey"]),Gb=new Set;function Nd(e){if(e==="git")return be;if(e==="docker")return Fb;return Gb}function tt(e,t){if(e.length===0||t.length===0)return null;let n=B(e[0]??""),r=we(e);for(let o of t){if(!Hb(n,o.command))continue;if(o.match){if(zb(n,e,o.match))return Ld(o);continue}if(!Ub(n,e,o.subcommand))continue;if(jb(e,new Set(o.block_args),r))return Ld(o)}return null}function Ld(e){return{id:`custom.${e.name}`,reason:`[${e.name}] ${e.reason}`,intent:e.intent??"manual_only"}}function zb(e,t,n){let r=t.slice(1);if(n.exclude_args?.some((o)=>r.includes(o)))return!1;if(n.any_args&&!n.any_args.some((o)=>r.includes(o)))return!1;return Bb(r,n.command_path,Dd(e))}function Bb(e,t,n){let r=0,o=!1;for(let i of e){if(r>=t.length)return!0;if(o){o=!1;continue}if(i.startsWith("-")){o=!i.includes("=")&&n.has(i);continue}if(i!==t[r])return!1;r++}return r>=t.length}function Hb(e,t){return e===B(t)}function Ub(e,t,n){if(!n)return!0;return Wd(t,1,n,Nd(e))}function Wd(e,t,n,r){let o=!1;for(let i=t;i<e.length;i++){let s=e[i];if(!s)continue;if(o){o=!1;continue}if(s==="--"){let a=e[i+1];if(a&&!a.startsWith("-"))return a===n;return!1}if(r.has(s)){o=!0;continue}if(s.startsWith("-")){if(!s.includes("=")&&$b(e,i,n,r))return!0;continue}return s===n}return!1}function $b(e,t,n,r){let o=e[t+1];if(!o||o.startsWith("-"))return!1;return Wd(e,t+2,n,r)}function jb(e,t,n){return e.some((r)=>t.has(r))||[...n].some((r)=>t.has(r))}var Vb=new Set(["-e","--source"]),Kb=new Set(["-F","-v","--assign","--field-separator"]),Fd=new Set(["-f","--file"]),qb=new Set(["print","printf","return"]),Gd=[{selector:"-e",kind:"inline-code",valueForm:"attached-or-separate"},{selector:"--source",kind:"inline-code",valueForm:"equals-or-separate"},{selector:"-f",kind:"program-file",valueForm:"attached-or-separate"},{selector:"--file",kind:"program-file",valueForm:"equals-or-separate"}],Yb="Detected awk system(), pipe, or getline command with dynamic command that cannot be safely analyzed. Use a literal command or process the data without system(), pipes, or getline.";function zd(e,t,n){let r=!1;for(let o of Zb(e)){let i=Xb(o,n);if(!i)continue;for(let s of i.commands){let a=t(s);if(a)return a;if(s.includes("{}")||/[$`]/.test(s))r=!0}r||=i.dynamic}return r?C("awk.system-dynamic",Yb):null}function ga(e){let t=[],n=!1,r=!1,o=!0,i=!0;for(let s=1;s<e.length;s++){let a=e[s];if(a===void 0)break;if(o&&a==="--"){o=!1;continue}if(o&&Vb.has(a)){n=!0;let l=e[s+1];if(i&&=l!==void 0,l!==void 0)t.push({tokenIndex:s+1,kind:"inline-code",value:l});s++;continue}if(o&&a.startsWith("--source=")){n=!0,t.push({tokenIndex:s,kind:"inline-code",value:a.slice(9)});continue}if(o&&a.startsWith("-e")&&a.length>2){n=!0,t.push({tokenIndex:s,kind:"inline-code",value:a.slice(2)});continue}if(o&&(Kb.has(a)||Fd.has(a))){let l=e[s+1];if(i&&=l!==void 0,Fd.has(a)){if(r=!0,l!==void 0)t.push({tokenIndex:s+1,kind:"program-file",value:l})}s++;continue}if(o&&(a.startsWith("-F")||a.startsWith("-v")&&a.slice(2).includes("=")))continue;if(o&&a.startsWith("-f")&&a.length>2){r=!0,t.push({tokenIndex:s,kind:"program-file",value:a.slice(2)});continue}if(o&&(a.startsWith("--assign=")||a.startsWith("--field-separator=")))continue;if(o&&a.startsWith("--file=")){r=!0,t.push({tokenIndex:s,kind:"program-file",value:a.slice(7)});continue}if(o&&a.startsWith("-")&&a!=="-")continue;if(o=!1,!n&&!r)t.push({tokenIndex:s,kind:"main-program",value:a});return{sources:t,optionsOpen:!1}}return{sources:i?t:[],optionsOpen:o&&i}}function Ar(e){return ga(e).sources}function Zb(e){return Ar(e).filter((t)=>t.kind!=="program-file").map((t)=>t.value)}function Xb(e,t){Le(t,e);let n=e.includes("system")?ha(e,t):null,r=Jb(e,t);if(!n&&!r)return null;return{dynamic:!!n?.dynamic||!!r?.dynamic,commands:[...n?.commands??[],...r?.commands??[]]}}function ha(e,t){Le(t,e);let n=[],r=!1,o=!1,i=0;while(i<e.length){let s=e[i];if(s==='"'||s==="'"){i=ii(e,i,s)?.endIndex??i+1;continue}if(s==="#"){i=Bd(e,i+1);continue}if(s==="/"&&Hd(e,i)){i=Ud(e,i+1)??i+1;continue}if(!e.startsWith("system",i)){i++;continue}let a=i;if(i+=6,wr(e[a-1])||wr(e[i]))continue;let l=oi(e,i);if(e[l]!=="(")continue;l=oi(e,l+1);let c=e[l];if(c!=='"'&&c!=="'"){r=!0,o=!0;continue}let u=ii(e,l,c);if(!u){r=!0,o=!0;continue}if(l=oi(e,u.endIndex),r=!0,e[l]!==")"){o=!0,i=u.endIndex;continue}n.push(u.value),i=l+1}if(!r)return null;return{dynamic:o,commands:n}}function Jb(e,t){Le(t,e);let n=[],r=!1,o=!1,i=0,s=0,a=null,l=null,c=0;while(i<e.length){let u=e[i];if(!u)break;if(u==='"'||u==="'"){let f=ii(e,i,u);if(f&&c===s)l={...f,startIndex:i};c=f?.endIndex??i+1,i=f?.endIndex??i+1;continue}if(u==="#"){i=Bd(e,i+1),s=i,a=null,l=null,c=i;continue}if(u==="/"&&Hd(e,i)){let f=Ud(e,i+1);c=f??i+1,i=f??i+1;continue}if(`;
34
+ {}`.includes(u)){i++,s=i,a=null,l=null,c=i;continue}if(a===null&&(pa(e,i,"print")||pa(e,i,"printf")))a=i;if(u!=="|"||e[i-1]==="|"||e[i+1]==="|"){if(!/\s/.test(u))c=i+1;i++;continue}let m=e[i+1]==="&"?i+2:i+1,d=oi(e,m);if(pa(e,d,"getline")){o=!0;let f=tv(s,l,c);if(r||=f===null,f!==null)n.push(f);c=m,i=m;continue}if(rv(s,a)){o=!0;let f=ev(e,d);if(!f){r=!0,c=m,i=m;continue}if(!Qb(e,f.endIndex)){r=!0,c=f.endIndex,i=f.endIndex;continue}n.push(f.value),c=f.endIndex,i=f.endIndex;continue}c=m,i++}if(!o)return null;return{dynamic:r,commands:n}}function wr(e){return!!e&&/[A-Za-z0-9_]/.test(e)}function oi(e,t){let n=t;while(/\s/.test(e[n]??""))n++;return n}function Qb(e,t){let n=t;while(/[\t\f\v\r ]/.test(e[n]??""))n++;let r=e[n];return!r||`;
35
+ }#`.includes(r)}function ii(e,t,n){let r="",o=!1;for(let i=t+1;i<e.length;i++){let s=e[i];if(!s)break;if(o){let a=nv(e,i);if(!a)return null;r+=a.value,i=a.endIndex,o=!1;continue}if(s==="\\"){o=!0;continue}if(s===n)return{value:r,endIndex:i+1};r+=s}return null}function ev(e,t){let n=e[t];if(n!=='"'&&n!=="'")return null;return ii(e,t,n)}function tv(e,t,n){if(!t)return null;return t.startIndex>=e&&t.endIndex===n?t.value:null}function nv(e,t){let n=e[t];if(!n)return null;if(n==="x"){let o=e.slice(t+1,t+3);if(!/^[0-9A-Fa-f]{2}$/.test(o))return null;return{value:String.fromCharCode(Number.parseInt(o,16)),endIndex:t+2}}if(/[0-7]/.test(n)){let o=/^[0-7]{1,3}/.exec(e.slice(t));if(!o)return null;return{value:String.fromCharCode(Number.parseInt(o[0],8)),endIndex:t+o[0].length-1}}return{value:{a:"\x07",b:"\b",f:"\f",n:`
36
+ `,r:"\r",t:"\t",v:"\v"}[n]??n,endIndex:t}}function pa(e,t,n){return e.startsWith(n,t)&&!wr(e[t-1])&&!wr(e[t+n.length])}function rv(e,t){return t!==null&&t>=e}function Bd(e,t){let n=e.indexOf(`
37
+ `,t);return n===-1?e.length:n+1}function Hd(e,t){let n=ov(e,t);if(n===-1)return!0;if("{([,;!~=".includes(e[n]??""))return!0;let r=n;while(wr(e[r-1]))r--;return qb.has(e.slice(r,n+1))}function ov(e,t){for(let n=t-1;n>=0;n--)if(!/\s/.test(e[n]??""))return n;return-1}function Ud(e,t){let n=!1;for(let r=t;r<e.length;r++){let o=e[r];if(!o)break;if(n){n=!1;continue}if(o==="\\"){n=!0;continue}if(o==="/")return r+1}return null}var iv=new Set(["sudo","env","command","builtin"]);function si(e,t){let n=e[0];if(!n||!t.transparentWrappers.includes(I(n)))return null;let r=I(n),o=e[1]==="--"?2:1,i=sv(e,o,r,t),s=i[0];if(s===void 0)return null;return{wrapper:r,tokens:[...e.slice(s)],childIndex:s,alternativeChildIndices:i.slice(1)}}function sv(e,t,n,r){let o=e[1]==="--",i=[];for(let s=t;s<e.length;s++){let a=e[s];if(!a)continue;let l=I(a)!==n&&av(a,r);if(l)i.push(s);if(!l&&uo.has(B(a)))break;if(o)break}return i}function av(e,t){let n=I(e),r=B(e);return r==="git"||n==="busybox"||rn(e)||cs.has(n)||t.transparentWrappers.includes(n)||ie.has(r)||e==="$SHELL"||qe(r)||Be.has(r)||t.rules.some((o)=>o.command===n)}function rn(e){return iv.has(e.toLowerCase())}function nt(e,t){let n=t.policy??{rules:[],transparentWrappers:[]};return ai([...e],t.environment,t.cwd,t.cwd,new Map,new Map(t.envAssignments??[]),n,{iterations:0},!1)}function*ai(e,t,n,r,o,i,s,a,l){let c=Ko(e,t,n,i);for(let[f,p]of c.envAssignments)i.set(f,p),o.set(f,p);let{tokens:u,cwd:m}=c;if(c.envSplitValues){let f=Vo(c.envSplitValues,u);if(!f)throw new D("derivedCommandShape");ya(a),yield*ai(f,t,m,r,o,i,s,a,l);return}if(rn(u[0]??""))throw new D("wrapperPeelIterations");let d=si(u,s);if(d){for(let f of[d.childIndex,...d.alternativeChildIndices])ya(a),yield*ai(f===d.childIndex?d.tokens:[...u.slice(f)],t,m,r,new Map(o),new Map(i),s,a,!0);return}if(cv(u)){ya(a),yield*ai([...u.slice(1)],t,m,r,o,i,s,a,l);return}yield lv(u,m,r,o,i,l)}function lv(e,t,n,r,o,i){return{tokens:e,cwd:t===null?void 0:t??n,wrapperCwd:t,wrapperEnvAssignments:r,envAssignments:o,head:I(e[0]??"").toLowerCase(),wrappedByTransparent:i}}function ya(e){if(e.iterations>=P.wrapperPeelIterations.cap)throw new D("wrapperPeelIterations");e.iterations++}function cv(e){return I(e[0]??"").toLowerCase()==="busybox"&&e.length>1}function Ca(e,t){let n=[],r=t;while(r<e.length){let o=e[r];if(o===void 0||o===":::")break;n.push(o),r++}return{markerIndex:r<e.length&&e[r]===":::"?r:-1,templateTokens:n}}function rt(e){let t=!1,n=!1;for(let r of e){if(r==="--")break;if(r==="-r"||r==="-R"||Sa(r,"recursive")){t=!0;continue}if(r==="-f"||Sa(r,"force")){n=!0;continue}if(r.startsWith("-")&&!r.startsWith("--")){if(r.includes("r")||r.includes("R"))t=!0;if(r.includes("f"))n=!0}}return t&&n}function $d(e){let t=e.indexOf("--");return e.slice(1,t===-1?void 0:t).some((n)=>Sa(n,"recursive")||/^-[A-Za-z]+$/.test(n)&&/[rR]/.test(n.slice(1)))}function Sa(e,t){return e.length>2&&e.startsWith("--")&&t.startsWith(e.slice(2))}var uv="find -delete permanently removes files. Use -print first to preview.",dv="find -exec rm -rf is dangerous. Use explicit file list instead.",mv=new Set(["-exec","-execdir","-ok","-okdir"]),fv=new Map([...["-Bmin","-Bnewer","-Btime","-amin","-anewer","-atime","-cmin","-cnewer","-context","-ctime","-f","-flags","-fprint","-fprint0","-fls","-fstype","-gid","-group","-ilname","-iname","-inum","-ipath","-iwholename","-iregex","-links","-lname","-maxdepth","-mindepth","-mmin","-mnewer","-mtime","-name","-newer","-newerXY","-newermt","-path","-perm","-printf","-regex","-samefile","-size","-type","-uid","-used","-user","-wholename","-xattrname","-xtype"].map((e)=>[e,1]),["-fprintf",2]]);function jd(e,t){let n=e.map(_),r=pv(e,n,t);if(r)return r;if(ci(n,1)&&!hv(e,n,t)){let s=T(C("find.delete",uv),t.policy);if(s)return s}let o=t.budget??me(),i=0;while(i<n.length){let s=n[i],a=Ft(s??"");if(a>0){i+=a+1;continue}if(!Ct(s)){i++;continue}o.charge("derivedTokens",n.length-i-1);let l=Pr(n,i);i=l.nextIndex;let c=Cv(l.tokens,t.environment);if(c){let f=T(c,t.policy);if(f)return f}let u=s==="-execdir"||s==="-okdir",m=t.analyzeTokens?t.analyzeTokens(l.tokens,u?null:t.cwd):t.analyzeNested?t.analyzeNested(l.tokens.join(" "),{effectiveCwd:u?void 0:t.cwd,envAssignments:t.envAssignments}):null,d=m?.id.startsWith("custom.")?m:T(m,t.policy);if(d)return d}return null}function pv(e,t,n){if(!ci(t,1)&&!ba(t,n.environment))return null;let o=li(e)??J(["."]),i=nn({...n,allowPaths:n.policy?.destructiveCommandAllowPaths,posixShell:!0});for(let s of o){let a=_r(s);for(let l of a.expandedTargets??[_(s)]){let c=et(l,i,{targetIsLiteral:a.expandedTargets!==void 0||a.targetIsLiteral,tmpdirWordSplittingProtected:a.tmpdirWordSplittingProtected});if(c.kind==="root_or_home_target")return C("rm.recursive-force-root-or-home","rm -rf targeting root or home directory is extremely dangerous and always blocked.");if(c.kind==="git_metadata_target")return C("find.delete-git-metadata",$e)}}if(gv(t)&&i.resolvedCwd&&Cd(o.map(_),i.resolvedCwd,i.protectedGitMetadata,i.environment,i.budget))return C("find.delete-git-metadata",$e);return null}function ba(e,t){let n=0;while(n<e.length){if(!Ct(e[n])){n++;continue}let r=Pr(e,n),o=Nt([...r.tokens],t),i=I(o[0]??"").toLowerCase();if((i==="rm"||i==="rmdir")&&o.some((s)=>s.includes("{}")))return!0;n=r.nextIndex}return!1}function gv(e){return e.some((t,n)=>{if(!["-name","-iname"].includes(t))return!1;return e[n+1]?.toLowerCase()==="hooks"})}function hv(e,t,n){if(t.includes("-L")||t.includes("-f")||t.includes("-follow"))return!1;let r=li(e);if(!r)return!1;let o=n.envAssignments??new Map,i=la(o,n.environment),s=n.trustedTmpdirValue??tn(o,n.environment),a=n.allowTmpdirVar??!xr(o,n.environment),l=nn({environment:n.environment,protectedGitMetadata:n.protectedGitMetadata,cwd:n.cwd,originalCwd:n.originalCwd,strict:n.strict,allowTmpdirVar:a&&s&&Boolean(i),allowPaths:n.policy?.destructiveCommandAllowPaths,posixShell:!0,tmpdirWordSplittingUnsafe:n.tmpdirWordSplittingUnsafe??Wt(o,n.environment),trustedTmpdirValue:s,budget:n.budget});return r.every((c)=>{let u=_r(c);if(u.unsafeBraceExpansion)return!1;return(u.expandedTargets??[_(c)]).every((m)=>_d(m,l,{containmentTarget:yv(m,i),targetIsLiteral:u.expandedTargets!==void 0||u.targetIsLiteral,tmpdirWordSplittingProtected:u.tmpdirWordSplittingProtected}))})}function yv(e,t){if(!t)return e;return e.replace(/^(?:\$TMPDIR|\$\{TMPDIR\})/,()=>t)}function li(e){let t=(o)=>{let i=e[o];return i?_(i):void 0},n=1;while(t(n)==="-H"||t(n)==="-P")n++;if(t(n)==="--")n++;let r=[];while(n<e.length){let o=t(n),i=e[n];if(!o||!i||o.startsWith("-")||["!","(",")"].includes(o))break;r.push(i),n++}return r.length>0?r:null}function Cv(e,t){let n=Dt([...e],t);if(n.length===0)return null;let r=I(n[0]??"");if(r==="busybox"&&n.length>1)n=n.slice(1),r=I(n[0]??"");if(r==="rm"&&rt(n))return C("find.exec-rm-recursive-force",dv);return null}function Pr(e,t){let n=t+1;while(n<e.length&&e[n]!==";"&&!(e[n]==="+"&&e[n-1]==="{}"))n++;return{tokens:e.slice(t+1,n),nextIndex:Math.min(n+1,e.length)}}function ci(e,t){let n=t;while(n<e.length){let r=e[n];if(!r){n++;continue}if(Ct(r)){n=Pr(e,n).nextIndex;continue}let o=Ft(r);if(o>0){n+=o+1;continue}if(r==="-delete")return!0;n++}return!1}function Ft(e){return fv.get(e)??(/^-newer[A-Za-z]{2}$/.test(e)?1:0)}function Ct(e){return e!==void 0&&mv.has(e)}function Tr(e){let t=Ye(e,"posix");if(t.status!=="complete"||t.nodes.length!==1)return null;let n=t.nodes[0];if(n?.kind!=="command")return null;if(n.redirections.length>0||n.nested.length>0)return null;if(n.words.some((r)=>r.provenance==="command-substitution"))return null;return n.words.map((r)=>r.text)}var Sv=5,va="Git aliases supplied through command-line or environment config can hide or execute commands. Run git without Git alias overrides, or ask the user to run it manually.";function Re(e){let t=e.indexOf("--");if(t===-1)return{index:-1,before:e,after:[]};return{index:t,before:e.slice(0,t),after:e.slice(t+1)}}function Kd(e,t,n){let r=Yd(e,t,n),o=bv(r.entries);if(o.size===0)return{blockedReason:r.blockedReason,expanded:!1,tokens:e};let i=e,s=!1;for(let a=0;a<Sv;a++){let{subcommand:l,rest:c}=ot(i),u=l?.toLowerCase();if(!u||!o.has(u))return{blockedReason:r.blockedReason,expanded:s,tokens:i};let m=o.get(u),d=_v(m);if(d===null||d.length===0)return{blockedReason:va,expanded:!0,tokens:i};i=["git",...d,...c],s=!0}return{blockedReason:va,expanded:!0,tokens:i}}function qd(e,t,n){return Yd(e,t,n).entries.some((r)=>r.key.toLowerCase()==="core.sshcommand")}function ot(e){if(e.length===0)return{subcommand:null,rest:[]};let t=e[0];if((t?I(t).toLowerCase():null)!=="git")return{subcommand:null,rest:[]};let r=1;while(r<e.length){let o=e[r];if(!o)break;if(o==="--"){let i=e[r+1];if(i&&!i.startsWith("-"))return{subcommand:i,rest:e.slice(r+2)};return{subcommand:null,rest:e.slice(r+1)}}if(!o.startsWith("-"))return{subcommand:o,rest:e.slice(r+1)};r+=be.has(o)?2:1}return{subcommand:null,rest:[]}}function bv(e){let t=new Map;for(let n of e){let r=n.key.toLowerCase();if(!r.startsWith("alias."))continue;let o=r.slice(6);if(o!=="")t.set(o,n.value)}return t}function Yd(e,t,n){if(e.length===0)return{blockedReason:null,entries:[]};let r=e[0];if((r?I(r).toLowerCase():null)!=="git")return{blockedReason:null,entries:[]};let i=Ev(t,n);return{blockedReason:i.blockedReason,entries:[...i.entries,...vv(e,t,n)]}}function vv(e,t,n){let r=[],o=1;while(o<e.length){let i=e[o];if(!i||i==="--"||!i.startsWith("-"))return r;if(i==="-c"){let s=Ea(e[o+1]);if(s)r.push(s);o+=2;continue}if(i.startsWith("-c")&&i.length>2){let s=Ea(i.slice(2));if(s)r.push(s);o++;continue}if(i==="--config-env"){let s=Vd(e[o+1],t,n);if(s)r.push(s);o+=2;continue}if(i.startsWith("--config-env=")){let s=Vd(i.slice(13),t,n);if(s)r.push(s);o++;continue}if(be.has(i)){o+=2;continue}o++}return r}function Ev(e,t){let n=Rv(e,t),r=xv(e,t);return{blockedReason:n===null||r===null?va:null,entries:[...n??[],...r??[]]}}function Rv(e,t){let n=He("GIT_CONFIG_PARAMETERS",e,t);if(n===void 0)return[];let r=[],o=Tr(n);if(!o)return null;for(let i of o){let s=Ea(i);if(!s)return null;r.push(s)}return r}function xv(e,t){let n=Uo(e,t);if(n.state==="absent")return[];if(n.state==="invalid")return null;let r=[];for(let o=0;o<n.count;o++){let i=He(`GIT_CONFIG_KEY_${o}`,e,t)?.trim(),s=He(`GIT_CONFIG_VALUE_${o}`,e,t);if(!i||s===void 0)return null;r.push({key:i,value:s})}return r}function Ea(e){if(!e)return null;let t=e.indexOf("=");return{key:(t===-1?e:e.slice(0,t)).trim(),value:t===-1?void 0:e.slice(t+1)}}function Vd(e,t,n){let r=e?.indexOf("=")??-1;if(!e||r===-1)return null;return{key:e.slice(0,r).trim(),value:He(e.slice(r+1),t,n)}}function _v(e){let t=e?.trimStart();if(!t||t.startsWith("!"))return null;return Tr(t)}var wv="git checkout -- discards uncommitted changes permanently. Use 'git stash' first.",Av="git checkout --force discards uncommitted changes. Use 'git stash' first.",Pv="git checkout <ref> -- <path> overwrites working tree with ref version. Use 'git stash' first.",Tv="git checkout --pathspec-from-file can overwrite multiple files. Use 'git stash' first.",Iv="git checkout with multiple positional args may overwrite files. Use 'git switch' for branches or 'git restore' for files.",kv="git switch --discard-changes discards uncommitted changes. Use 'git stash' first.",Ov="git switch --force discards uncommitted changes. Use 'git stash' first.",Mv="git restore discards uncommitted changes. Use 'git stash' first, or use --staged to only unstage.",Dv="git restore --worktree explicitly discards working tree changes. Use 'git stash' first.",Nv="git reset --hard destroys all uncommitted changes permanently. Use 'git stash' first.",Lv="git reset --merge can lose uncommitted changes. Use 'git stash' first.",Wv="git clean -f removes untracked files permanently. Use 'git clean -n' to preview first.",Fv="git rm --force removes tracked files from the working tree. Use 'git rm --cached' to keep the files, or 'git rm --dry-run' to preview first.",Gv="git push --force destroys remote history. Use --force-with-lease for safer force push.",zv="git push deletes remote refs. Ask the user to run it manually if deletion is intended.",Bv="git push --mirror can force-update and delete remote refs. Ask the user to run it manually if mirror push is intended.",Hv="git branch -D force-deletes without merge check. Use -d for safe delete.",Uv="git rebase --abort discards rebase conflict resolutions. Use 'git status' first.",$v="git merge --abort discards merge conflict resolutions. Use 'git status' first.",jv="git tag -d permanently deletes tags. Ask the user to run it manually if deletion is intended.",Vv="git reflog delete removes recovery history. Ask the user to run it manually if deletion is intended.",Kv="git stash drop permanently deletes stashed changes. Consider 'git stash list' first.",qv="git stash clear deletes ALL stashed changes permanently. Use 'git stash list' to review; ask the user to run it manually if intended.",Yv="git worktree remove --force can delete uncommitted changes. Remove --force flag.",Zv=new Set(["-b","-B","--orphan","--conflict","--inter-hunk-context","--pathspec-from-file","--unified"]),Xv=new Set(["--recurse-submodules","--track","-t"]),Ra=new Set(["-b","-B","-U"]),xa=new Set(["-c","-C"]),Jv=new Set(["--source","--conflict","--unified","--inter-hunk-context"]);function M(e,t){let n=e.split("=",1)[0]??e;return n.length>=4&&t.startsWith(n)&&n.startsWith("--")&&n.slice(2).length>=2}var Wn=new Set(["branch","checkout","clean","merge","push","rebase","reflog","reset","restore","rm","stash","switch","tag","worktree"]);function Xd(e){let{subcommand:t,rest:n}=ot(e);if(!t)return null;switch(t.toLowerCase()){case"checkout":return Gt(Qv(n));case"switch":return Gt(eE(n));case"restore":return Gt(nE(n));case"reset":return oE(n);case"clean":return Gt(sE(n));case"rm":return Gt(aE(n));case"push":return on(lE(n));case"branch":return on(dE(n));case"stash":return on(hE(n));case"worktree":return on(yE(n));case"rebase":return Gt(mE(n));case"merge":return Gt(fE(n));case"tag":return on(pE(n));case"reflog":return on(gE(n));default:return null}}function Gt(e){return e?{...e,localDiscard:!0}:null}function on(e){return e?{...e,localDiscard:!1}:null}function Qv(e){let{index:t,before:n}=Re(e),r=we(n,{shortOptsWithValue:Ra});if(n.some((i)=>M(i,"--force"))||r.has("-f"))return C("git.checkout-force",Av);for(let i of e){if(i==="-b"||i==="-B"||i==="--orphan")return null;if(M(i,"--pathspec-from-file"))return C("git.checkout-pathspec-from-file",Tv)}if(t!==-1){if(n.some((s)=>!s.startsWith("-")))return C("git.checkout-ref-path",Pv);return C("git.checkout-double-dash",wv)}if(tE(e).length>=2)return C("git.checkout-ambiguous",Iv);return null}function eE(e){let{before:t}=Re(e);if(t.some((r)=>M(r,"--discard-changes")))return C("git.switch-discard-changes",kv);let n=we(t,{shortOptsWithValue:xa});if(t.some((r)=>M(r,"--force"))||n.has("-f"))return C("git.switch-force",Ov);return null}function tE(e){let t=[],n=0;while(n<e.length){let r=e[n];if(!r)break;if(r==="--")break;if(!r.startsWith("-")){t.push(r),n++;continue}if(Zv.has(r)){n+=2;continue}if(Xv.has(r)){let o=e[n+1],i=r==="--recurse-submodules"?["checkout","on-demand"]:["direct","inherit"];n+=o&&!o.startsWith("-")&&i.includes(o)?2:1;continue}n++}return t}function nE(e){let t=rE(e);if(t.isTerminal||!t.hasPathspec&&!t.hasPatch||!t.hasWorktree)return null;return t.hasExplicitLocation?C("git.restore-worktree",Dv):C("git.restore-unstaged",Mv)}function rE(e){let t=!1,n=!1,r=!0,o=!1,i=(s)=>{if(!o)r=!1,o=!0;if(s!==void 0)r=s};for(let s=0;s<e.length;s++){let a=e[s];if(a===void 0)break;if(a==="--"){t||=s+1<e.length;break}if(a==="--pathspec-from-file"){t=!0,s++;continue}if(a.startsWith("--pathspec-from-file=")){t=!0;continue}if(a==="-h"||a==="--help"||a==="--version")return{hasPathspec:t,hasPatch:n,hasWorktree:r,hasExplicitLocation:o,isTerminal:!0};if(a==="--staged"){i();continue}if(a==="--no-staged"){i();continue}if(a==="--worktree"){i(!0);continue}if(a==="--no-worktree"){i(!1);continue}if(a==="--patch"){n=!0;continue}if(a==="--no-patch"){n=!1;continue}if(Jv.has(a)){s++;continue}if(a.startsWith("--"))continue;if(a==="-"){t=!0;continue}if(!a.startsWith("-")){t=!0;continue}for(let l=1;l<a.length;l++){let c=a.charAt(l);if(c==="h")return{hasPathspec:t,hasPatch:n,hasWorktree:r,hasExplicitLocation:o,isTerminal:!0};if(c==="S"){i();continue}if(c==="W"){i(!0);continue}if(c==="p"){n=!0;continue}if(c==="s"||c==="U"){if(l===a.length-1)s++;break}}}return{hasPathspec:t,hasPatch:n,hasWorktree:r,hasExplicitLocation:o,isTerminal:!1}}function oE(e){let t=null;for(let n of e){if(M(n,"--hard")){t=C("git.reset-hard",Nv);break}if(M(n,"--merge")){t=C("git.reset-merge",Lv);break}}if(!t)return null;return iE(e)?on(t):Gt(t)}function iE(e){for(let t of e){if(t==="--")return!1;if(!t.startsWith("-"))return!0}return!1}function sE(e){for(let n of e)if(n==="-n"||M(n,"--dry-run"))return null;let t=we(e.filter((n)=>n!=="--"));if(e.some((n)=>M(n,"--force"))||t.has("-f"))return C("git.clean-force",Wv);return null}function aE(e){let t=!1,n=!1,r=!1;for(let o of Re(e).before){if(M(o,"--no-force")){t=!1;continue}if(M(o,"--force")){t=!0;continue}if(M(o,"--no-cached")){n=!1;continue}if(M(o,"--cached")){n=!0;continue}if(M(o,"--no-dry-run")){r=!1;continue}if(M(o,"--dry-run")){r=!0;continue}let i=we([o]);t||=i.has("-f"),r||=i.has("-n")}return t&&!n&&!r?C("git.rm-force",Fv):null}function lE(e){let{before:t,after:n}=Re(e),r=we(t);if(t.some((s)=>M(s,"--mirror")))return C("git.push-mirror",Bv);if(t.some((s)=>M(s,"--force"))||r.has("-f")||Zd(t,n).some(cE))return C("git.push-force",Gv);if(t.some((s)=>M(s,"--delete"))||r.has("-d")||Zd(t,n).some(uE))return C("git.push-delete",zv);return null}function Zd(e,t){return[...e.filter((n)=>n!==""&&!n.startsWith("-")),...t]}function cE(e){return e.startsWith("+")||e.includes(":+")}function uE(e){return e.length>1&&e.startsWith(":")}function dE(e){let{before:t}=Re(e),n=we(t),r=n.has("-D")||n.has("-d")||t.some((i)=>M(i,"--delete")),o=n.has("-D")||n.has("-f")||t.some((i)=>M(i,"--force"));if(r&&o)return C("git.branch-force-delete",Hv);return null}function mE(e){let{before:t}=Re(e);return t.some((n)=>M(n,"--abort"))?C("git.rebase-abort",Uv):null}function fE(e){let{before:t}=Re(e);return t.some((n)=>M(n,"--abort"))?C("git.merge-abort",$v):null}function pE(e){let{before:t}=Re(e);return we(t).has("-d")||t.some((r)=>M(r,"--delete"))?C("git.tag-delete",jv):null}function gE(e){return e[0]==="delete"?C("git.reflog-delete",Vv):null}function hE(e){for(let t of e){if(t==="drop")return C("git.stash-drop",Kv);if(t==="clear")return C("git.stash-clear",qv)}return null}function yE(e){let{before:t}=Re(e);if(!t.includes("remove"))return null;let r=we(t);if(t.some((o)=>M(o,"--force"))||r.has("-f"))return C("git.worktree-remove-force",Yv);return null}var Qd=require("node:path");function em(e,t){return Qs.some((n)=>t?.has(n)||e.has(n))}function tm(e,t,n){if(!t)return{gitCwd:null,hasExplicitGitContext:!1};let r=n.realpath(Qd.resolve(t));if(r===null||!n.isDirectory(r))return{gitCwd:null,hasExplicitGitContext:!1};let o=r,i=!1,s=1;while(s<e.length){let a=e[s];if(!a)break;if(a==="--")break;if(!a.startsWith("-"))break;if(a==="-C"){let l=e[s+1];if(!l)return{gitCwd:null,hasExplicitGitContext:i};let c=Jd(o,l,n);if(!c)return{gitCwd:null,hasExplicitGitContext:i};o=c,s+=2;continue}if(a.startsWith("-C")&&a.length>2){let l=Jd(o,a.slice(2),n);if(!l)return{gitCwd:null,hasExplicitGitContext:i};o=l,s++;continue}if(a==="--git-dir"||a==="--work-tree"){i=!0,s+=2;continue}if(a.startsWith("--git-dir=")||a.startsWith("--work-tree=")){i=!0,s++;continue}s+=be.has(a)?2:1}return{gitCwd:o,hasExplicitGitContext:i}}function Jd(e,t,n){try{let r=Mt(e,t,n);return n.isDirectory(r)?r:null}catch{return null}}function om(e,t,n){if(!t.localDiscard||!n.worktreeMode||em(n.environment.env,n.envAssignments))return null;let r=tm(e,n.cwd,n.environment.paths);if(!r.gitCwd||r.hasExplicitGitContext)return null;let o=n.environment.worktreeFacts(r.gitCwd);if(!o)return null;if(CE(e,n,o))return null;return{originalReason:t.reason,gitCwd:r.gitCwd}}function CE(e,t,n){let{subcommand:r,rest:o}=ot(e),i=r?.toLowerCase();if(t.dynamicArguments||SE(o)||xE(e,t.environment.env,t.envAssignments,n)||EE(o)||bE(i,o))return!0;return i==="clean"&&RE(o)>1}function SE(e){return e.some((t)=>/[$*?[]/.test(t))}function bE(e,t){if(e==="checkout"){let{before:n}=Re(t),r=we(n,{shortOptsWithValue:Ra}),o=n.some((s)=>M(s,"--force"))||r.has("-f"),i=r.has("-B")||n.some((s)=>s==="-B"||s.startsWith("-B"));return o&&i}if(e==="switch"){let{before:n}=Re(t),r=we(n,{shortOptsWithValue:xa}),o=n.some((s)=>M(s,"--force"))||n.some((s)=>M(s,"--discard-changes"))||r.has("-f"),i=n.some((s)=>s==="-C"||s.startsWith("-C")||vE(s))||r.has("-C");return o&&i}return!1}function vE(e){let t=e.split("=",1)[0]??e;return t==="--force-create"||t.length>=9&&"--force-create".startsWith(t)}function EE(e){return e.some((t)=>t.startsWith("--recurse-sub"))}function RE(e){let t=0;for(let n of e){if(n==="--force"){t++;continue}if(n.startsWith("-")&&!n.startsWith("--")){for(let r of n.slice(1))if(r==="f")t++}}return t}function xE(e,t,n,r){let o=_E(e,t,n);if(o!==null)return o;let i=wE(t,n);if(i!==null)return i;if(Zu(n))return!0;return r.recursiveSubmodules}function _E(e,t,n){let r=null,o=1;while(o<e.length){let i=e[o];if(!i||i==="--")return r;if(!i.startsWith("-"))return r;if(i==="-c"){let s=nm(e[o+1]);if(s!==null)r=s;o+=2;continue}if(i.startsWith("-c")&&i.length>2){let s=nm(i.slice(2));if(s!==null)r=s;o++;continue}if(i==="--config-env"){let s=rm(e[o+1],t,n);if(s!==null)r=s;o+=2;continue}if(i.startsWith("--config-env=")){let s=rm(i.slice(13),t,n);if(s!==null)r=s;o++;continue}o+=be.has(i)?2:1}return r}function wE(e,t){if(He("GIT_CONFIG_PARAMETERS",e,t)!==void 0)return!0;let n=Uo(e,t);if(n.state==="absent")return null;if(n.state==="invalid")return!0;let r=null;for(let o=0;o<n.count;o++){let i=He(`GIT_CONFIG_KEY_${o}`,e,t),s=He(`GIT_CONFIG_VALUE_${o}`,e,t);if(!i?.trim()||s===void 0)return!0;let a=i.trim().toLowerCase();if(wa(a))return!0;if(a!=="submodule.recurse")continue;r=_a(s)}return r}function nm(e){if(!e)return null;let t=e.indexOf("="),n=(t===-1?e:e.slice(0,t)).toLowerCase();if(wa(n))return!0;if(n!=="submodule.recurse")return null;let r=t===-1?"true":e.slice(t+1).toLowerCase();return _a(r)}function rm(e,t,n){let r=e?.indexOf("=")??-1;if(!e||r===-1)return null;let o=e.slice(0,r).toLowerCase();if(wa(o))return!0;if(o!=="submodule.recurse")return null;let i=He(e.slice(r+1),t,n);return i===void 0||_a(i)}function _a(e){let t=e.toLowerCase();return t!=="false"&&t!=="no"&&t!=="off"&&t!=="0"}function wa(e){return e==="include.path"||e.startsWith("includeif.")&&e.endsWith(".path")}var AE="Git SSH environment overrides can execute arbitrary commands during network operations. Run git without GIT_SSH/GIT_SSH_COMMAND overrides, or ask the user to run it manually.",PE=new Set(["clone","fetch","pull","push","ls-remote","submodule"]);function ui(e,t){return im(e.map(_),t)}function im(e,t,n){let r=Kd(e,t.environment.env,t.envAssignments),o=r.blockedReason?T(C("git.alias-config",r.blockedReason),t.policy):null;if(o)return o;let i=r.tokens;if((Yu(t.envAssignments)||qd(e,t.environment.env,t.envAssignments))&&TE(i))return C("git.ssh-env",AE);let s=Xd(i);if(!s)return null;if(r.expanded||r.blockedReason)return s;let a=om(e,s,t);if(!a)return s;return n?.(a),null}function sm(e,t){let n=null;return{match:im(e.map(_),t,(o)=>{n=o}),relaxation:n}}function TE(e){let{subcommand:t,rest:n}=ot(e),r=t?.toLowerCase();if(!r)return!1;if(PE.has(r))return!0;if(r==="archive")return Re(n).before.some((o)=>M(o,"--remote"));return r==="remote"&&IE(n)}function IE(e){return e.find((t)=>!kE(t))?.toLowerCase()==="update"}function kE(e){return e==="-v"||M(e,"--verbose")||M(e,"--no-verbose")}var Nm=require("node:path");function Fe(e,t){e.charge("parallelChildAnalyses",t.childAnalyses??0),e.charge("parallelDerivedTokens",t.derivedTokens??0),e.charge("parallelDerivedBytes",t.derivedBytes??0),e.charge("parallelPlaceholderReplacements",t.placeholderReplacements??0)}var am="rm -rf outside cwd is blocked. Retry deleting only explicit paths inside the current directory; escalate for anything outside it.",OE="rm -rf for non-temporary paths is blocked by the active safety policy. Retry deleting only explicit paths inside the current directory; escalate for anything outside it.",ME="rm -rf target contains shell variables that cannot be verified safely. Use literal paths within cwd, /tmp, /var/tmp, or $TMPDIR.",cm="rm -rf targeting root or home directory is extremely dangerous and always blocked.",DE="rm -rf in home directory is dangerous. Change to a project directory first.";function di(e,t){let n=nn({...t,allowPaths:t.policy?.destructiveCommandAllowPaths,posixShell:!0}),r=e.map(_),o=rt(r),i=$d(r),s=LE(e);for(let a of s){let l=_r(a.word);if(o&&l.unsafeBraceExpansion){let c=T(lm({kind:"outside_anchored_cwd"},n,t.policy),t.policy);if(c)return c;continue}for(let c of l.expandedTargets??[a.text]){let u=Me(c),m={targetIsLiteral:l.expandedTargets!==void 0||l.targetIsLiteral,tmpdirWordSplittingProtected:l.tmpdirWordSplittingProtected};if(!i&&n.resolvedCwd&&en(u,n.resolvedCwd,n.protectedGitMetadata,i,n.environment,n.budget))return C("rm.git-metadata",$e);if(i&&!o){let d=et(u,n,m);if(d.kind==="root_or_home_target")return C("rm.recursive-force-root-or-home",cm);if(d.kind==="git_metadata_target")return C("rm.git-metadata",$e);continue}if(!o)continue;for(let d of NE(u,n,m)){let f=lm(d,n,t.policy),p=T(f,t.policy);if(p)return p}}}return null}function NE(e,t,n){let r=et(e,t,n);if(r.kind==="cwd_self_target")return[r,et(e,t,{...n,skipCwdSelf:!0})];if(r.kind!=="home_cwd_target")return[r];let o=et(e,t,{...n,skipHomeCwd:!0});if(o.kind!=="cwd_self_target")return[r,o];return[r,o,et(e,t,{...n,skipHomeCwd:!0,skipCwdSelf:!0})]}function LE(e){let t=[],n=!1;for(let r of e.slice(1)){let o=_(r);if(!o)continue;if(o==="--"){n=!0;continue}if(n){t.push({text:o,word:r});continue}if(!o.startsWith("-"))t.push({text:o,word:r})}return t}function lm(e,t,n){switch(e.kind){case"root_or_home_target":return C("rm.recursive-force-root-or-home",cm);case"git_metadata_target":return C("rm.git-metadata",$e);case"temp_target":return null;case"dynamic_target":if(!se(n,"rm.recursive-force-dynamic-target",t.strict))return null;return C("rm.recursive-force-dynamic-target",ME);case"home_cwd_target":return C("rm.recursive-force-home-cwd",DE);case"cwd_self_target":return C("rm.recursive-force-cwd-self",am);case"within_anchored_cwd":if(se(n,"rm.recursive-force-paranoid",t.paranoid))return C("rm.recursive-force-paranoid",OE);return null;case"outside_anchored_cwd":return C("rm.recursive-force-outside-cwd",am)}}var WE={bash:["O","o"],dash:["o"],ksh:["o"],sh:["o"],zsh:["o"]},dm=new Set(["--init-file","--rcfile"]),FE=["--init-file","--rcfile"],GE=new Map([["bash","BASH_ENV"],["dash","ENV"],["ksh","ENV"],["sh","ENV"]]);function St(e){for(let t=1;t<e.length;t++){let n=e[t];if(!n)continue;if(n==="-c")return um(e,t,!0);if(n.startsWith("-")&&n.includes("c")&&!n.startsWith("--")){let r=um(e,t,!1);if(r!==null)return r}}return null}function bt(e){let t=I(e[0]??"").toLowerCase();if(t==="zsh"||t==="ksh")return ct(e).syntaxCheck;let n=!1;for(let r of e.slice(1)){if(r==="--")return n;if(r.startsWith("+")&&!r.startsWith("++")){if(r.slice(1).includes("n"))n=!1;continue}if(!r.startsWith("-")||r.startsWith("--"))return n;let o=r.slice(1);if(o.includes("n"))n=!0;if(o.includes("c"))return n}return n}function um(e,t,n){if(e[t+1]==="--")return e[t+2]||null;let r=e[t+1];if(!r||!n&&r.startsWith("-"))return null;return r}function mm(e){let t=I(e[0]??"").toLowerCase(),n=zE(e,t),r=GE.get(t)??null,o=n.argvSource?.kind!=="absent";return{argvSource:t==="bash"?n.argvSource:null,argvSourceApplies:t==="bash"&&n.interactive&&n.argvSource?.kind==="literal",envName:r,envSourceApplies:o&&(r==="BASH_ENV"?!n.interactive:r==="ENV"&&n.interactive)}}function zE(e,t){let n=ct(e),r=n.commandIndex??n.scriptIndex??e.length,o=[],i=!1,s=!0;for(let a=1;a<r;a++){let l=e[a];if(l===void 0||l==="--"||l==="-"||l[0]!=="-"&&l[0]!=="+")break;if(l.startsWith("--")){if(t==="bash"&&s?FE.find((d)=>l===d):void 0){let d=e[a+1];o.push(d===void 0?{kind:"absent"}:{kind:"literal",value:d}),a++;continue}let m=l.split("=",1)[0]??l;if(t==="bash"&&dm.has(m)&&!l.includes("="))a++;continue}if(t==="bash")s=!1;let c=fm(t,l,e[a+1],"startup");if(c.interactive)i=l[0]==="-";a+=c.followingValues}return{argvSource:o.at(-1)??null,interactive:i}}function fm(e,t,n,r){let o=!1,i=0,s=!1,a=!1,l=!1;for(let c=1;c<t.length;c++){let u=t[c];if(u===void 0)break;if(e==="ksh"&&u==="o"&&c+1<t.length){if(r==="argv"){let m=t.slice(c+1);if(t[0]==="-"&&(m==="c"||m[0]==="-"&&m.endsWith("c")))s=!0}break}if(e==="ksh"&&u==="o"&&c+1===t.length&&(n?.startsWith("-")||n?.startsWith("+")))break;if(e==="zsh"&&u==="o"&&c+1<t.length)break;if(r==="startup"&&u==="i")o=t[0]==="-";if(r==="argv"&&t[0]==="-"&&u==="c")s=!0;if(r==="argv"&&u==="n")l=t[0]==="-";if(r==="argv"&&u==="s")a=t[0]==="-";if(!WE[e]?.includes(u))continue;if(c+1===t.length)i++;break}return{interactive:o,followingValues:i,commandSelected:s,stdinMode:a,syntaxCheck:l}}function ct(e){let t=I(e[0]??"").toLowerCase(),n=!1,r=!1,o=!1;for(let i=1;i<e.length;i++){let s=e[i];if(s===void 0)break;if(s==="--"){let l=n&&e[i+1]!==void 0?i+1:null;return{command:l===null?null:e[l]??null,commandIndex:l,scriptIndex:!n&&!r&&e[i+1]!==void 0?i+1:null,readsStdinAsCommands:!n&&(r||e[i+1]===void 0),syntaxCheck:o}}if(s==="-"||s[0]!=="-"&&s[0]!=="+")return{command:n?s:null,commandIndex:n?i:null,scriptIndex:!n&&!r&&s!=="-"?i:null,readsStdinAsCommands:!n&&(r||s==="-"),syntaxCheck:o};if(s.startsWith("--")){let l=s.split("=",1)[0]??s;if(t==="bash"&&dm.has(l)&&!s.includes("="))i++;continue}let a=fm(t,s,e[i+1],"argv");if(a.commandSelected)n=!0;if(a.syntaxCheck)o=!0;if(a.stdinMode)r=!0;i+=a.followingValues}return{command:null,commandIndex:null,scriptIndex:null,readsStdinAsCommands:!n,syntaxCheck:o}}var zt={kind:"none"},sn={kind:"dynamic"},BE=new Set(["<","<<","<<-","<<<","<&","<>"]),gm=/\$(?:([0-9]+|[@*]|[A-Za-z_][A-Za-z0-9_]*)|\{!?([0-9]+|[@*]|[A-Za-z_][A-Za-z0-9_]*))/g,HE=/^(?:[0-9]+|[@*])$/,UE=Zt.maxWords,$E=Zt.maxInputLength;function hm(e){if(!e||I(B(e.words[0]?.text??""))!=="printf")return;if(e.words.some((o)=>o.provenance!=="literal"))return;let t=e.words.slice(e.words[1]?.text==="--"?2:1),n=t[0]?.text;if(n===void 0)return"";let r=t.slice(1).map((o)=>o.text);if(n==="%s")return r.join("");if(n==="%s\\n"||n===`%s
38
+ `)return`${r.join(`
39
+ `)}
40
+ `;if(n.includes("%")||/\\(?![\\nrt])/.test(n))return;return n.replaceAll("\\n",`
41
+ `).replaceAll("\\r","\r").replaceAll("\\t","\t").replaceAll("\\\\","\\")}function mi(e){let t=Ir(e[1])==="--"?2:1;if(e.length<=t)return zt;let n=e.slice(t);if(!n.every(pi))return sn;return{kind:"literal",source:n.map(_).join(" ")}}function ym(e){let t=Ir(e[1])==="--"?2:1,n=e[t],r=Ir(n);if(n===void 0||e.length<=t+1||r==="-"||r===""||r==="-l"||r==="-p")return zt;if(!pi(n))return sn;return{kind:"literal",source:r}}function fi(e,t){let n=VE(e);if(n===-1)return zt;let r=KE(t);if(!r)return zt;let o=[],i=r.command?.length??0;for(let s of r.references){let a=YE(s,e,n,r.ifs);if(!a)return sn;if(i+=a.reduce((l,c)=>l+c.length+3,0),o.length+a.length>UE||i>$E)return sn;o.push(...a)}if(r.command==="eval")return{kind:"literal",source:o.join(" ")};if(o.length===0||/\s/.test(o[0]??""))return{kind:"literal",source:""};return{kind:"literal",source:[r.command,r.command&&r.optionTerminator?"--":null,...o.map(XE)].filter((s)=>s!==null).join(" ")}}function Cm(e,t,n,r){if(!ct(e.map(_)).readsStdinAsCommands)return zt;let o=t.filter((i)=>(i.fd===void 0||i.fd===0)&&BE.has(i.operator)).at(-1);if(o){if(o.operator==="<<"||o.operator==="<<-")return zt;if(o.operator!=="<<<"||o.target?.provenance!=="literal")return sn;return{kind:"literal",source:o.target.text}}if(!n)return zt;return r===void 0?sn:{kind:"literal",source:r}}function vt(e){let t=ct(e.map(_)).scriptIndex;if(t===null)return zt;let n=e[t],r=Ir(n);return No(n,r)?{kind:"literal",source:r}:sn}var jE=new Set(["curl","wget","fetch","aria2c","http","https","xh","xhs","nc","ncat","netcat"]);function Ia(e){if(e.words.length!==2||e.redirections.length!==0||e.nested.length!==1)return!1;let t=e.words[0],n=e.words[1];if(!t||t.provenance!=="literal"||t.quoted||t.raw!==t.text||!n)return!1;if(!(t.text==="eval"&&n.quoted&&n.parts.length===3&&n.parts[0]?.raw==='"'&&n.parts[1]?.provenance==="command-substitution"&&n.parts[1].raw.startsWith("$(")&&n.parts[2]?.raw==='"'||(t.text==="source"||t.text===".")&&!n.quoted&&n.parts.length===1&&n.parts[0]?.provenance==="command-substitution"&&n.parts[0].raw.startsWith("<(")))return!1;let o=e.nested[0];if(o?.status!=="complete"||o.nodes.length!==1)return!1;let i=o.nodes[0];if(i?.kind!=="command"||i.redirections.length!==0||i.nested.length!==0||i.words.some((l)=>l.provenance!=="literal"||l.parts.some((c)=>c.provenance!=="literal")))return!1;let s=i.words[0]?.text;if(s===void 0||Ue(s)!==null)return!1;let a=I(B(s));return!jE.has(a)&&!ie.has(a)&&!rn(a)}function VE(e){return ct(e.map(_)).commandIndex??-1}function KE(e){let t=/^IFS=(?:'([^']*)'|"([^"]*)"|([^;\s]*))\s*;\s*(.+)$/.exec(e.trim()),n=t?.[4]??e.trim(),r=/^(\.|bash|command|dash|exec|eval|ksh|sh|source|zsh)(?:\s+(--))?\s+(.+)$/.exec(n),o=(r?.[3]??n).split(/\s+/).map(qE);if(o.length===0||o.some((i)=>i===null))return null;return{command:r?.[1]??null,optionTerminator:r?.[2]!==void 0,references:o.filter((i)=>!!i),ifs:t?t[1]??t[2]??t[3]??"":`
42
+ `}}function qE(e){let t=/^"\$(?:([0-9]+|[@*])|\{([0-9]+|[@*])\})"$/.exec(e),n=/^\$(?:([0-9]+|[@*])|\{([0-9]+|[@*])\})$/.exec(e),r=t??n;if(!r)return null;let o=r[1]??r[2];return{parameter:o==="@"||o==="*"?o:Number(o),quoted:t!==null}}function YE(e,t,n,r){let o=t.slice(n+2);if(e.parameter==="@")return e.quoted?Aa(o):ZE(o,r);if(e.parameter==="*"){let a=Aa(o);if(!a)return;let l=a.join(r[0]??"");return e.quoted?[l]:Pa(l,r)}let i=t[n+1+e.parameter];if(i&&!pi(i))return;let s=Ir(i);return e.quoted?[s]:Pa(s,r)}function Aa(e){return e.every(pi)?e.map(_):void 0}function ZE(e,t){let n=Aa(e);if(!n)return;let r=n.map((o)=>Pa(o,t));return r.some((o)=>o===void 0)?void 0:r.flatMap((o)=>o??[])}function Pa(e,t){if(["*","?","[","]"].some((n)=>e.includes(n)))return;if(t==="")return e===""?[]:[e];if(t===`
43
+ `)return e.trim().split(/\s+/).filter(Boolean);if(t.length!==1)return;return t===" "||t==="\t"||t===`
44
+ `?e.trim().split(/\s+/).filter(Boolean):e.split(t).filter(Boolean)}function pi(e){if(!e)return!0;return e.provenance==="unknown"?!/[$`]/.test(_(e)):e.provenance==="literal"}function Ir(e){return e?_(e):""}function XE(e){return`'${e.replaceAll("'",`'"'"'`)}'`}function ka(e,t){return Ta(Ye(e,"posix"),t)}function Or(e){return ka(e,new Set(Array.from(e.matchAll(gm)).flatMap((t)=>{let n=t[1]??t[2];return n===void 0?[]:[n]})))}function Ta(e,t){if(e.status==="invalid"||e.status==="limited")return!1;let n=new Set(t);for(let r of e.nodes){if(r.kind==="group"){if(Ta(r.body,n))return!0;continue}if(r.kind!=="command")continue;if(r.nested.some((o)=>Ta(o,n))||Sm(r.words,n))return!0;nR(r,n)}return!1}function Sm(e,t){let n=e.findIndex((s)=>Ue(s.text)===null);if(n===-1)return!1;let r=e[n];if(!r)return!1;if(kr(r,t))return!0;let o=B(r.text);if(o==="source"||o==="."){let s=e[n+1]?.text==="--"?n+2:n+1;return pm(e[s],t)}if(ie.has(o)){let s=e.slice(n),a=ct(s.map((c)=>c.text)),l=a.commandIndex??a.scriptIndex;return!a.syntaxCheck&&l!==null&&pm(s[l],t)}let i=JE(e,n,t);if(i===null)return!1;if(i===-1)return!0;return Sm(e.slice(i),t)}function JE(e,t,n){let r=B(e[t]?.text??"");if(r==="command")return QE(e,t+1);if(r==="exec")return eR(e,t+1);if(r==="env")return tR(e,t+1,n);return null}function QE(e,t){for(let n=t;n<e.length;n++){let r=e[n]?.text??"";if(r==="--")return e[n+1]?n+1:null;if(/^-[p]*[vV][pvV]*$/.test(r))return null;if(/^-p+$/.test(r))continue;return n}return null}function eR(e,t){for(let n=t;n<e.length;n++){let r=e[n]?.text??"";if(r==="--")return e[n+1]?n+1:null;if(r==="-a"){n++;continue}if(/^-a.+/.test(r)||/^-[cl]+$/.test(r))continue;return n}return null}function tR(e,t,n){for(let r=t;r<e.length;r++){let o=e[r],i=o?.text??"";if(i==="--")return e[r+1]?r+1:null;if(i==="-S"||i==="--split-string")return kr(e[r+1],n)?-1:r+2;if(i.startsWith("-S")||i.startsWith("--split-string="))return kr(o,n)?-1:r+1;if(i==="-u"||i==="--unset"||i==="-C"||i==="--chdir"||i==="-P"){r++;continue}if(i==="-i"||i==="-0"||i==="--null"||i.startsWith("-u=")||i.startsWith("--unset=")||i.startsWith("-C")||i.startsWith("--chdir=")||i.startsWith("-P"))continue;if(i.startsWith("-"))continue;if(Ue(i))continue;return r}return null}function nR(e,t){if(!e.words.every((n)=>Ue(n.text)!==null))return;for(let n of e.words){let r=Ue(n.text);if(!r)continue;if(kr(n,t))t.add(r.name)}}function kr(e,t){if(!e)return!1;return e.parts.filter((n)=>n.provenance==="variable").some((n)=>Array.from(n.raw.matchAll(gm)).some((r)=>{let o=r[1]??r[2];return o!==void 0&&(HE.test(o)||t.has(o))}))}function pm(e,t){return!!e&&(e.parts.some((n)=>n.provenance!=="literal"&&n.provenance!=="variable")||kr(e,t))}var Oa="xargs rm -rf with dynamic input is dangerous. Use explicit file list instead.",Ma="xargs dynamic input can supply arbitrary executable command source. Use an explicit child command and arguments instead.",rR="__CC_SAFETY_NET_XARGS_INPUT__",gi="__CC_SAFETY_NET_XARGS_INTERPRETER_INPUT__",hi="rm",oR=/(?:^|[;&|]\s*|\b(?:eval|source)\s+|\b(?:ba|da|z|k)?sh\s+-c\s+)\s*["']?\$(?:([0-9]+|[@*]|[A-Za-z_][A-Za-z0-9_]*)|\{!?([0-9]+|[@*]|[A-Za-z_][A-Za-z0-9_]*)(?:[^}]*)\})/g,iR=/(?:^|[;&|]\s*)\s*eval\b((?:\\.|"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|[^\\'";&|\r\n])*)/g,sR=/\$(?:([0-9]+|[@*]|[A-Za-z_][A-Za-z0-9_]*)|\{!?([0-9]+|[@*]|[A-Za-z_][A-Za-z0-9_]*)(?:[^}]*)\})/g,aR=/^(?:[0-9]+|[@*])$/;function Rm(e,t){let n=e.map(_),{childStart:r,replacementToken:o}=an(n),i=n.slice(r),s=C("xargs.shell-dynamic",Ma);if(cR(i,o,t)&&T(s,t.policy))return T(s,t.policy);for(let a of nt(i,t)){let l=a.tokens,c=o!==null&&l[0]!==i[0]&&(l[0]?.includes(o)??!1)?T(s,t.policy):null;if(c)return c;let u=Am(l,o,a.wrapperEnvAssignments),m=a.head==="rm"&&o!==null&&_m(l,o),d=t.analyzeChild(l,{...bm(a,t),dynamicInput:u,dynamicSourceInput:m||xm(l,a.head,o,a.wrapperEnvAssignments,u,t.scanWork,t.environment),dynamicRmInput:m,shellDynamicMatch:s,dynamicSourceMatch:s,rmDynamicMatch:C("xargs.rm-recursive-force-dynamic",Oa)});if(d)return d;let f=lR(l,o,t.policy?.rules??[]);if(f)return f;if(a.head==="git"){let h=o===null?[...l,rR]:l,g=o!==null&&(l.some((v)=>v.includes(o))||Array.from(a.envAssignments.values()).some((v)=>v.includes(o))),y=t.analyzeChild(h,{...bm(a,t),worktreeMode:o===null||g?!1:t.worktreeMode});if(y)return y}let p=tt(l,t.policy?.rules??[]);if(p)return p}return null}function bm(e,t){return{producer:"xargs",cwd:e.cwd,originalCwd:t.originalCwd,effectiveCwd:e.cwd,envAssignments:e.envAssignments,allowTmpdirVar:t.allowTmpdirVar,worktreeMode:t.worktreeMode,wrappedByTransparent:!1}}function lR(e,t,n){if(n.length===0)return null;if(t===null){for(let o of n){let i=tt([...e,...o.subcommand?[o.subcommand]:[],...o.block_args],n);if(i)return i}return null}let r=new Set(n.flatMap((o)=>[o.subcommand,...o.block_args].flatMap((i)=>i?e.flatMap((s)=>Da(s,t,i)):[])));for(let o of r){let i=tt(e.map((s)=>s.replaceAll(t,o)),n);if(i)return i}return null}function Da(e,t,n){let r=e.indexOf(t);if(r===-1||e.indexOf(t,r+t.length)!==-1)return[];let o=e.slice(0,r),i=e.slice(r+t.length);return n.startsWith(o)&&n.endsWith(i)?[n.slice(o.length,n.length-i.length)]:[]}function xm(e,t,n,r,o,i,s){if(ie.has(t)){if(bt(e))return!1;if(n!==null&&uR(e,n))return!0;let a=St(e);if(!a){let l=vt(J(e));if(l.kind==="literal")return n!==null&&l.source.includes(n);return l.kind==="none"&&o}if(n!==null&&a.includes(n))return!0;if(ht(a,i))return!0;return dR(a,n,r)}if(qe(t))return vm(e,n,zo,Ku(t));if(Be.has(t))return vm(e,n,ga,Gd);if(t==="eval"){let a=mi(J(e));if(a.kind==="dynamic")return!0;if(n!==null)return a.kind==="literal"&&a.source.includes(n);return o}if(t==="find")return mR(e,n,i,s);if(t==="git"){let a=ot(e);return n===null?a.subcommand===null:(a.subcommand?.includes(n)??!1)||a.subcommand!==null&&Wn.has(a.subcommand.toLowerCase())&&wm(a.rest,n).some((l)=>l.includes(n))}return!1}function vm(e,t,n,r){let o=n(e);if(t===null)return o.optionsOpen||n([...e,gi]).sources.some((l)=>l.value===gi);if(o.sources.some((l)=>l.value.includes(t)))return!0;let i=new Set(o.sources.map((l)=>`${l.tokenIndex}\x00${l.kind}\x00${l.value}`)),s=r.flatMap((l)=>[l.selector,...l.valueForm==="attached-only"||l.valueForm==="attached-or-separate"?[`${l.selector}${gi}`]:[],...l.valueForm==="equals-or-separate"?[`${l.selector}=${gi}`]:[]]),a=new Set(s.flatMap((l)=>e.flatMap((c)=>Da(c,t,l))));return Array.from(a).some((l)=>n(e.map((c)=>c.replaceAll(t,l))).sources.some((c)=>!i.has(`${c.tokenIndex}\x00${c.kind}\x00${c.value}`)))}function cR(e,t,n){if(e.length===0||(e[0]??"").toLowerCase()==="command")return!1;let r=new Set(Array.from(nt(e,n),(i)=>i.head)),o=t===null?[...e,hi]:e.map((i,s)=>s===0?i:i.replaceAll(t,hi));return Array.from(nt(o,n)).some((i)=>i.head===hi&&!r.has(hi))}function _m(e,t){return wm(e.slice(1),t).some((n)=>n.includes(t)&&(n.startsWith("-")||n.startsWith(t)))}function wm(e,t){let n=e.findIndex((r)=>r==="--"&&!r.includes(t));return n===-1?e:e.slice(0,n)}function Am(e,t,n){if(t===null)return!0;return e.some((r)=>r.includes(t))||Array.from(n.values()).some((r)=>r.includes(t))}function uR(e,t){let n=ct(e);if(n.commandIndex!==null&&(e[n.commandIndex]??"").includes(t)||n.scriptIndex!==null&&(e[n.scriptIndex]??"").includes(t))return!0;return["-c","-nc","-cn",`--${t}`,t].some((o)=>e.some((i,s)=>{if(s===0||!i.includes(t))return!1;return Da(i,t,o).some((l)=>{let c=e.map((m,d)=>d===s?m.replaceAll(t,l):m),u=ct(c);if(u.commandIndex===null&&u.scriptIndex===null)return!1;if(n.commandIndex===null&&u.commandIndex!==null)return!0;if(n.scriptIndex===null&&u.scriptIndex!==null)return!0;if(u.commandIndex!==null&&(c[u.commandIndex]??"").includes(l))return!0;return u.scriptIndex!==null&&(c[u.scriptIndex]??"").includes(l)})}))}function dR(e,t,n){let r=new Set(t===null?[]:Array.from(n).filter(([,o])=>o.includes(t)).map(([o])=>o));for(let o of e.matchAll(oR))if(Em(o,r))return!0;for(let o of e.matchAll(iR))for(let i of(o[1]??"").matchAll(sR))if(Em(i,r))return!0;return ka(e,r)}function Em(e,t){let n=e[1]??e[2];return n!==void 0&&(aR.test(n)||t.has(n))}function mR(e,t,n,r){if(t===null)return!0;let o=!1,i=0;for(let s=1;s<e.length;s++){let a=e[s]??"";if(!o&&!a.startsWith("-")&&a!=="!"&&a!=="("){if(a.indexOf(t)===0)return!0;continue}if(o=!0,i>0){i--;continue}if(Ct(a)){let c=Pr(e,s);s=c.nextIndex-1;for(let u of nt(c.tokens,{environment:r,cwd:void 0})){let m=Am(u.tokens,t,u.wrapperEnvAssignments);if(u.head==="rm"&&_m(u.tokens,t)||xm(u.tokens,u.head,t,u.wrapperEnvAssignments,m,n,r))return!0}continue}let l=Ft(a);if(l>0){if(i=l,a.includes(t))return!0;continue}if(a.includes(t))return!0}return!1}function an(e){let t=new Set(["-L","-n","-P","-s","-a","-E","-R","-S","-e","-d","-J","--max-args","--max-procs","--max-chars","--arg-file","--eof","--delimiter","--max-lines","--process-slot-var"]),n=null,r=1;while(r<e.length){let o=e[r];if(!o)break;if(o==="--")return{childStart:r+1,replacementToken:n};if(!o.startsWith("-"))return{childStart:r,replacementToken:n};if(o==="-I"){n=e[r+1]??"{}",r+=2;continue}if(o.startsWith("-I")&&o.length>2){n=o.slice(2),r++;continue}if(o==="--replace"){n="{}",r++;continue}if(o.startsWith("--replace=")){let i=o.slice(10);n=i===""?"{}":i,r++;continue}if(o==="-J"){n=e[r+1]??"{}",r+=2;continue}r+=t.has(o)?2:1}return{childStart:e.length,replacementToken:n}}var Dr="parallel rm -rf with dynamic input is dangerous. Use explicit file list instead.",Nr="parallel with shell -c can execute arbitrary commands from dynamic input. Run the inner command directly on an explicit file list instead.",fR="parallel without a command reads executable commands from dynamic input. Use an explicit command template or ::: arguments instead.",pR="parallel command construction cannot be verified safely. Use the default ::: separator, literal arguments, and built-in replacement strings.",gR=/\{[^{}\s]*\}/,Lm=/\{\}|\{-?\d+\}/g,hR=["e","f","source","file","-e","-f","--source","--file"],yR=["c","e","eval","m","r","Mmodule","import","require","-c","-e","-m","-r","--eval","--import","--require"],CR=new Set(["-L","-d","-n","--delay","--delimiter","--header","--joblog","--jl","--max-args","--max-lines","--nice","--results","--result","--res","--tagstring","--timeout"]),SR=new Set(["--arg-file","--colsep","--rpl","--arg-sep","--arg-file-sep"]),Pm=new Set(["-S","--sshlogin","--slf","--sshloginfile"]),bR=new Set(["--workdir","--wd"]),Tm="__CC_SAFETY_NET_PARALLEL_SOURCE__",vR=new TextEncoder,Wa=P.parallelDerivedBytes.cap+4*P.parallelPlaceholderReplacements.cap;function Ie(e,t){for(let n of e){let r=t(n);if(r)return r}return null}function Wm(e,t){return Ie([...e],(n)=>ht(n,t.scanWork))}function Fm(e,t){let n=e.map(_);if((t.envAssignments?.has("PARALLEL")?t.envAssignments.get("PARALLEL"):t.environment.env.get("PARALLEL"))?.trim()){let p=cn(t);if(p)return p}if(n.length===2&&(n[1]==="--version"||n[1]==="--help"))return null;let o=Km(n),{template:i,jobs:s,runsRemotely:a,readsCommandsFromInput:l,unsupported:c,workdir:u,dryRun:m}=o;if(c){let p=cn(t);if(p)return p;let h=Wm(t.envAssignments?.values()??[],t);if(h)return h}if(l){let p=TR(t);if(p)return p}if(u!==void 0&&a){let p=cn(t);if(p)return p}let d=MR(u,t.cwd,t.environment.paths);if(d===null){let p=cn(t);if(p)return p}let f=a?{...t,cwd:void 0,originalCwd:void 0}:d===null||d===void 0||d===t.cwd?t:{...t,cwd:d};if(m){if([...nt(i,f)].flatMap((h)=>[...h.envAssignments.values()]).some(Ba)){let h=cn(t);if(h)return h}return null}if(i.length===0){if(s.some((g)=>g.length!==1)){let g=cn(t);if(g)return g}let p=s.map((g)=>g[0]??"");Fe(t.budget,Fa(p));let h=Um(f.envAssignments,f.cwd,a);return Ie(p,(g)=>t.analyzeNested(g,h))}return Ie(nt(i,f),(p)=>ER(p,o,t,f))}function ER(e,t,n,r){let{jobs:o,templateHasPlaceholder:i,runsRemotely:s,usesStdin:a}=t,l=e.tokens,c=[...e.envAssignments.values()];if(c.some(jm)){let g=cn(n);if(g)return g}let u=Wm(c,n);if(u)return u;let m=c.some(j),d=i||m,f=a&&d,p=Um(e.envAssignments,e.wrapperCwd,s||f);if(ie.has(e.head)){let g=()=>{if(!i||o.length===0)return null;return Fe(n.budget,yi(l,o,"generic")),Ie(o,(E)=>n.analyzeChild(l.map((b)=>Bt(b,E)),Na(e,r)))};if(bt(l))return g();let y=St(l);if(y){if(Vm(y)){let R=ln(n);if(R)return R;if(o.length===0)return null;return Fe(n.budget,Dm(y,o)),Ie(o,(A)=>n.analyzeNested(Bt(y,A),p))}if(j(y)){if(o.length>0)return Fe(n.budget,Dm(y,o)),Ie(o,(X)=>n.analyzeNested(Bt(y,X),p));Fe(n.budget,Om(y));let R=Tr(y);if(R?.[0]&&B(R[0])==="rm"&&rt(R)){let X=km(n);if(X)return X}let A=R?n.analyzeChild(R,{...Na(e,r),dynamicInput:a,shellDynamicMatch:C("parallel.shell-dynamic",Nr),rmDynamicMatch:C("parallel.rm-recursive-force-dynamic",Dr)}):null;if(A)return A;return n.analyzeNested(y,p)}let E=!m&&(!i||o.length>0)?(o.length>0?o:[void 0]).map((R)=>fi(J(R===void 0?l:i?l.map((A)=>Bt(A,R)):[...l,...R]),y)):[];if(E.some((R)=>R.kind==="dynamic")){let R=ln(n);if(R)return R}let b=E.flatMap((R)=>R.kind==="literal"?[R.source]:[]);if(b.length>0)return Fe(n.budget,Fa(b)),Ie(b,(R)=>n.analyzeNested(R,p));if(Fe(n.budget,Om(y)),Or(y)){let R=ln(n);if(R)return R}let w=n.analyzeNested(y,p);if(w)return w;if(d)return ln(n);return null}let v=vt(J(l));if(v.kind==="dynamic"||v.kind==="literal"&&j(v.source))return ln(n)??g();if(v.kind==="literal")return g();if(o.length>0){let E=ln(n);if(E)return E;let b=g();if(b)return b;if(i)return null;let w=o.flatMap((R)=>R[0]===void 0?[]:[R[0]]);return Fe(n.budget,Fa(w)),Ie(w,(R)=>n.analyzeNested(R,p))}if(d||a)return ln(n)??g();return null}if(e.head==="rm"&&rt(l)){if(i&&o.length>0)return Fe(n.budget,yi(l,o,"rm")),Ie(o,(y)=>La(l.map((v)=>Ga(v,y)),e.cwd,r));if(o.length>0)return Fe(n.budget,Mm(l,o)),Ie(o,(y)=>La([...l,...y],e.cwd,r));let g=La(l.flatMap((y,v)=>{if(v===0||!j(y))return[y];return y.startsWith("-")?[Ga(y,[""])]:[]}),e.cwd,r);if(g)return g;return km(n)}Fe(n.budget,i&&o.length>0?yi(l,o,"generic"):o.length>0?Mm(l,o):Hm(l));let h=o.length>0?o:[void 0];return Ie(h,(g)=>{let y=g===void 0?l:i?l.map((te)=>Bt(te,g)):[...l,...g],v=C("parallel.shell-dynamic",Nr),E=a&&e.head==="find"?PR(y,r):null,b=zm(y,a,n.policy?.rules??[],n.budget)??E?.customResult??null,w=B(e.head),R=a&&(w==="rm"&&za(y)||w==="xargs"&&Bm(y)||E?.rmOptions===!0),A=a&&(R||E?.executedSource===!0||E===null&&Gm(y,w)),X=n.analyzeChild(y,{...Na(e,r),worktreeMode:s||a||d?!1:n.worktreeMode,dynamicInput:a||d,dynamicRmInput:R,dynamicSourceInput:b!==null||A,shellDynamicMatch:v,dynamicSourceMatch:v,rmDynamicMatch:C("parallel.rm-recursive-force-dynamic",Dr)});if(A){let te=T(v,n.policy);if(te)return te}return X??b??tt(y,n.policy?.rules??[])})}function Na(e,t){return{producer:"parallel",cwd:e.cwd,originalCwd:t.originalCwd,effectiveCwd:e.cwd,envAssignments:e.envAssignments,allowTmpdirVar:t.allowTmpdirVar,worktreeMode:t.worktreeMode,wrappedByTransparent:!1}}function Gm(e,t){if(j(e[0]??""))return!0;if(t==="eval"||t==="source"||t===".")return!0;if(t==="parallel"||t==="xargs")return!0;if(ie.has(t))return _R(e);if(t==="git")return RR(e);if(t==="find")return!0;if(Be.has(t))return Im(e,hR,Ar);if(qe(t))return Im(e,yR,Go);return!1}function za(e){let t=e.indexOf("--"),n=e.slice(1,t===-1?void 0:t);if(!e.some(j))return t===-1;return n.some((o)=>j(o)&&(o.startsWith("-")||Vm(o)))}function RR(e){if(xR(e))return!0;let t=ot(e);if(t.subcommand===null||j(t.subcommand))return!0;if(!Wn.has(t.subcommand.toLowerCase()))return!1;let n=t.rest.indexOf("--"),r=t.rest.slice(0,n===-1?void 0:n);if(!e.some(j))return n===-1;return r.some(j)}function xR(e){for(let t=1;t<e.length;t++){let n=e[t];if(!n||n==="--"||!n.startsWith("-"))return!1;if(n==="-c"||n==="--config-env"){if(j(e[t+1]??""))return!0;t++;continue}if(n.startsWith("-c")&&n.length>2||n.startsWith("--config-env=")){if(j(n))return!0;continue}if(j(n))return!0}return!1}function _R(e){if(bt(e))return!1;let t=St(e);if(t!==null)return j(t);let n=vt(J(e));if(n.kind==="literal")return j(n.source);if(n.kind==="dynamic")return!0;return!e.some(j)}function Im(e,t,n){let r=n(e);if(r.some((i)=>j(i.value)))return!0;if(!e.some(j))return n([...e,Tm]).some((i)=>i.value===Tm);let o=new Set(r.map((i)=>`${i.tokenIndex}\x00${i.kind}\x00${i.value}`));return t.some((i)=>n(e.map((s)=>Bt(s,[i]))).some((s)=>!o.has(`${s.tokenIndex}\x00${s.kind}\x00${s.value}`)))}function zm(e,t,n,r){if(!t||n.length===0)return null;let o=n.filter((s)=>B(s.command)===B(e[0]??""));if(o.length===0)return null;let i=e.some(j);if(Fe(r,wR(e,o,i)),!i)return Ie(o,(s)=>tt([...e,...s.subcommand?[s.subcommand]:[],...s.block_args],[s]));return Ie(o,(s)=>{let a=new Set([s.subcommand,...s.block_args].flatMap((l)=>l?AR(e,l):[]));return Ie(a,(l)=>tt(e.map((c)=>Bt(c,[l])),[s]))})}function wR(e,t,n){let r=n?un(je(t.map((o)=>o.block_args.length+(o.subcommand?1:0)),P.parallelChildAnalyses.cap),2*Math.max(e.length,1),P.parallelChildAnalyses.cap):t.length;return{childAnalyses:r,derivedTokens:un(r,e.length,P.parallelDerivedTokens.cap)}}function AR(e,t){return e.flatMap((n)=>{let r=[...n.matchAll(/\{[^{}\s]*\}/g)];if(r.length!==1)return[];let o=r[0];if(!o||o.index===void 0)return[];let i=n.slice(0,o.index),s=n.slice(o.index+o[0].length);if(!t.startsWith(i)||!t.endsWith(s))return[t];let a=t.slice(i.length,t.length-s.length);return a!==t?[t,a]:[t]})}function PR(e,t){let n={customResult:null,executedSource:!e.some(j),rmOptions:!1},r=!1,o=0,i=null,s=()=>{if(!i?.some(j))return;for(let a of nt(i,t))n.executedSource||=Gm(a.tokens,a.head),n.rmOptions||=a.head==="rm"&&za(a.tokens)||a.head==="xargs"&&Bm(a.tokens),n.customResult??=zm(a.tokens,!0,t.policy?.rules??[],t.budget)};for(let a of e.slice(1)){if(!r&&!a.startsWith("-")&&a!=="!"&&a!=="("){n.executedSource||=j(a);continue}if(r=!0,i){if(a===";"||a==="+"){s(),i=null;continue}i.push(a);continue}if(o>0){o--;continue}if(Ct(a)){i=[],n.executedSource||=j(a);continue}let l=Ft(a);if(l>0){o=l,n.executedSource||=j(a);continue}n.executedSource||=j(a)}return s(),n}function Bm(e){let t=e.slice(an(e).childStart);return B(t[0]??"")==="rm"&&za(t)}function Ci(e,t){return(n)=>T(C(e,t),n.policy)}var ln=Ci("parallel.shell-dynamic",Nr),TR=Ci("parallel.command-stream-dynamic",fR),cn=Ci("parallel.command-stream-dynamic",pR),km=Ci("parallel.rm-recursive-force-dynamic",Dr);function La(e,t,n){return T(di(J(e),{environment:n.environment,cwd:t,budget:n.budget,originalCwd:n.originalCwd,strict:n.strict,paranoid:n.paranoidRm,allowTmpdirVar:n.allowTmpdirVar,tmpdirWordSplittingUnsafe:Wt(n.envAssignments??new Map,n.environment),trustedTmpdirValue:tn(n.envAssignments??new Map,n.environment),protectedGitMetadata:n.protectedGitMetadata,policy:n.policy}),n.policy)}function Fa(e){return{childAnalyses:e.length,derivedTokens:e.length,derivedBytes:Lr(e)}}function Om(e){return Hm([e])}function Hm(e){return{childAnalyses:1,derivedTokens:e.length,derivedBytes:Lr(e)}}function Mm(e,t){if(t.length>P.parallelChildAnalyses.cap)return{childAnalyses:t.length};return{childAnalyses:t.length,derivedTokens:je(t.map((n)=>e.length+n.length),P.parallelDerivedTokens.cap),derivedBytes:je([un(Lr(e),t.length,P.parallelDerivedBytes.cap),je(t.map((n)=>Lr(n)),P.parallelDerivedBytes.cap)],P.parallelDerivedBytes.cap)}}function Dm(e,t){return yi([e],t,"generic")}function yi(e,t,n){if(t.length>P.parallelChildAnalyses.cap)return{childAnalyses:t.length};let r=un(e.length,t.length,P.parallelDerivedTokens.cap);if(r>P.parallelDerivedTokens.cap)return{childAnalyses:t.length,derivedTokens:r};let o=OR(e.map((l)=>kR(l,n))),i=un(o.occurrences,t.length,P.parallelPlaceholderReplacements.cap);if(i>P.parallelPlaceholderReplacements.cap)return{childAnalyses:t.length,derivedTokens:r,placeholderReplacements:i};if(IR(o,t,i))return{childAnalyses:t.length,derivedTokens:r,derivedBytes:P.parallelDerivedBytes.cap+1,placeholderReplacements:i};let s=n==="generic"?Bt:Ga,a=je(t.map((l)=>Lr(e.map((c)=>s(c,l)))),P.parallelDerivedBytes.cap);return{childAnalyses:t.length,derivedTokens:r,derivedBytes:a,placeholderReplacements:i}}function IR(e,t,n){let r=P.parallelDerivedBytes.cap+4*n;return je([un(e.fixedBytes,t.length,r),un(e.occurrences,je(t.map((o)=>o.reduce((i,s)=>Math.max(i,Mr(s)),0)),r),r)],r)>r}function kR(e,t){let n=t==="generic"?e.matchAll(/\{[^{}\s]*\}/g):e.matchAll(Lm),r=0,o=0,i=0;for(let s of n){if(r>=P.parallelPlaceholderReplacements.cap)return{occurrences:P.parallelPlaceholderReplacements.cap+1,fixedBytes:0};o=je([o,Mr(e.slice(i,s.index))],Wa),r++,i=s.index+s[0].length}return{occurrences:r,fixedBytes:r===0?Mr(e):je([o,Mr(e.slice(i))],Wa)}}function OR(e){return{occurrences:je(e.map((t)=>t.occurrences),P.parallelPlaceholderReplacements.cap),fixedBytes:je(e.map((t)=>t.fixedBytes),Wa)}}function Lr(e,t=P.parallelDerivedBytes.cap){return je(e.map(Mr),t)}function Mr(e){return vR.encode(e).byteLength}function je(e,t){let n=0;for(let r of e){if(!Number.isSafeInteger(r)||r<0||r>t-n)return t+1;n+=r}return n}function un(e,t,n){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||e<0||t<0||e!==0&&t>Math.floor(n/e))return n+1;return e*t}function Um(e,t,n){let r={};if(e)r.envAssignments=e;if(n)return r.effectiveCwd=null,r.worktreeMode=!1,r;if(t!==void 0)r.effectiveCwd=t;return Object.keys(r).length>0?r:void 0}function Bt(e,t){return e.replace(/\{[^{}\s]*\}/g,(n)=>$m(n,t))}function Ga(e,t){return e.replace(Lm,(n)=>$m(n,t))}function $m(e,t){let n=/^\{(-?\d+)[^{}\s]*\}$/.exec(e)?.[1];if(n===void 0)return t[0]??"";let r=Number(n),o=r>0?r-1:t.length+r;return t[o]??""}function j(e){return gR.test(e)}function jm(e){if(Ba(e))return!0;for(let t of e.matchAll(/\{[^{}\s]*\}/g))if(!/^(?:\{\}|\{-?\d+\})$/.test(t[0]))return!0;return!1}function Ba(e){let t=e.indexOf("{=");return t!==-1&&e.indexOf("=}",t+2)!==-1}function Vm(e){return/^\{[^{}\s]*\}$/.test(e)}function Km(e){let t=1,n=[],r=e.length,o=-1,i=!1,s=!1,a=!1,l,c=e.some((p)=>p==="::::"||p==="::::+"||p===":::+");while(t<e.length){let p=e[t];if(p===void 0)break;if(p===":::"){o=t;break}if(p==="--"){let E=Ca(e,t+1);n.push(...E.templateTokens),r=t+1,o=E.markerIndex;break}if(!p.startsWith("-")){let E=Ca(e,t);n.push(...E.templateTokens),r=t,o=E.markerIndex;break}let h=e[t+1],g=p.indexOf("="),y=g===-1?p:p.slice(0,g),v=g===-1?void 0:p.slice(g+1);if(p==="--dry-run"){a=!0,t++;continue}if(p==="-I"||p.startsWith("-I")&&p.length>2){c||=(p==="-I"?h:p.slice(2))!=="{}",t+=p==="-I"?2:1;continue}if(p==="--replace"||p==="-i"){c=!0,t+=2;continue}if(y==="--replace"||p.startsWith("-i")&&p.length>2){let E=y==="--replace"?v:p.slice(2);c||=E!==""&&E!=="{}",t++;continue}if(p==="-a"||SR.has(y)){c=!0,t+=v===void 0?2:1;continue}if(p==="--pipe"||p==="--pipepart"){s=!0,t++;continue}if(y==="--env"){c=!0,t+=v===void 0?2:1;continue}if(Pm.has(y)||p.startsWith("-S")&&p.length>2){i=!0,t+=Pm.has(p)?2:1;continue}if(bR.has(y)){let E=v??h;if(E===void 0||E===":::"||E==="--"){c=!0,t++;continue}l=E,c||=v!==void 0&&E==="",t+=v===void 0?2:1;continue}if(p.startsWith("-j")&&p.length>2&&/^\d+$/.test(p.slice(2))){t++;continue}if(p.startsWith("--")&&v!==void 0){t++;continue}if(CR.has(p)){if(h===void 0||h===":::"||h==="--"){c=!0,t++;continue}t+=2;continue}t+=p==="-j"||p==="--jobs"?2:1}c||=n.some(a?Ba:jm);let u=[];if(o!==-1){let p=[];for(let h=o+1;h<e.length;h++){let g=e[h];if(g===":::"){u.push(p),p=[];continue}if(g!==void 0)p.push(g)}u.push(p)}let m=DR(u),d=n.some(j),f=n.length===0&&o===-1;return{template:n,jobs:m,childStart:r,templateHasPlaceholder:d,runsRemotely:i,usesStdin:s||o===-1,readsCommandsFromInput:f,unsupported:c,workdir:l,dryRun:a}}function MR(e,t,n){if(e===void 0)return;if(e==="..."||/[{}$`*?~[]/.test(e))return null;if(!t&&!Nm.isAbsolute(e))return null;try{return Mt(t??e,e,n)}catch{return null}}function DR(e){if(e.length===0||e.some((n)=>n.length===0))return[];let t=[[]];for(let n of e){if(n.length===1){let o=n[0];if(o===void 0)return[];for(let i of t)i.push(o);continue}let r=[];for(let o of t)for(let i of n)if(r.push([...o,i]),r.length>P.parallelChildAnalyses.cap)return r;t=r}return t}function qm(e){return Km(e).childStart}var NR="dynamic command name contains shell substitution output and cannot be verified safely. Use a literal executable name.",Si="shell substitution output can change guarded command structure and cannot be verified safely. Use literal subcommands and options.";function Ua(e){return e?.parts.some((t)=>t.provenance==="command-substitution")??!1}function Ha(e){return e?.parts.some((t)=>t.provenance==="literal"&&t.raw.replace(/^["']/,"").startsWith("-"))??!1}function Zm(e,t,n,r,o=!1,i){let a=(ir(e,t)||r&&e!=="powershell"&&t[0]?.provenance==="variable")&&se(i,"shell.dynamic-executable",o)?C("shell.dynamic-executable",NR):null;return T(a,i)??Xm(e,t,n,o,i)}function Xm(e,t,n,r,o){if(t.length<2)return null;let i=t.flatMap((a,l)=>Ua(a)?[l]:[]);if(i.length===0)return null;let s=B(t[0]?.text??"");if(s==="git"){let a=Tn(e,t),l=WR(a);if(se(o,"shell.dynamic-structure",r)&&i.some((m)=>m<=l))return T(C("shell.dynamic-structure",Si),o);if(T(ui(a,{environment:n}),o))return null;let c=t[l]?.text.toLowerCase(),u=a.findIndex((m,d)=>d>l&&_(m)==="--");if(se(o,"shell.dynamic-structure",r)&&c&&Wn.has(c)&&i.some((m)=>m>l&&(u===-1||m<u)))return T(C("shell.dynamic-structure",Si),o);return null}if(s==="find")return se(o,"shell.dynamic-structure",r)&&FR(t)?T(C("shell.dynamic-structure",Si),o):null;if(s==="rm"){let a=t.findIndex((c,u)=>u>0&&_(c)==="--"),l=rt(t.map(_));return se(o,"shell.dynamic-structure",r)&&i.some((c)=>(a===-1||c<a)&&(c<t.length-1||!l))?T(C("shell.dynamic-structure",Si),o):null}if(s==="xargs")return Ym(e,t.slice(an(t.map(_)).childStart),"xargs",n,r,o);if(s==="parallel")return Ym(e,t.slice(qm(t.map(_))),"parallel",n,r,o);return null}function Ym(e,t,n,r,o,i){if(t.length===0)return null;let s=LR(t,r);if(ir(e,s)){let l=T(C(`${n}.shell-dynamic`,n==="xargs"?Ma:Nr),i);if(l)return l}let a=Xm(e,s,r,o,i);if(a)return a;if(s[0]?.text==="rm"&&s.slice(1).some((l)=>Ua(l)&&Ha(l)))return T(C(`${n}.rm-recursive-force-dynamic`,n==="xargs"?Oa:Dr),i);return null}function LR(e,t){let n=Jt(e,t),r=n.rewritten?J(n.words.map(_)):n.words,o=r[0];return o&&_(o)==="busybox"?r.slice(1):r}function WR(e){let t=1;while(t<e.length){let n=e[t],r=n?_(n):"";if(be.has(r)){t+=2;continue}if(r.startsWith("-")){t++;continue}return t}return t}function FR(e){let t=!1,n=0,r=!1,o=!1;for(let i=1;i<e.length;i++){let s=e[i];if(!s)continue;let a=Ua(s);if(n>0){n--;continue}if(o){if(s.text===";"||s.text==="+"){o=!1,t=!0,r=!1;continue}if(a&&(r||Ha(s)))return!0;r=!1;continue}if(!t&&!s.text.startsWith("-")){if(a&&(i>1||Ha(s)))return!0;continue}if(t=!0,a)return!0;let l=Ft(s.text);if(l>0){n=l;continue}if(Ct(s.text))o=!0,r=!0}return!1}function $a(e,t){return e.some((n)=>{if(n.value==="-"&&(n.kind==="main-script"||n.kind==="program-file"))return!0;return!No(t[n.tokenIndex],n.value)})}var GR="dd writing to a /dev device can destroy a disk or partition. Run device writes manually after confirming the target.",zR="mkfs formatting a /dev device erases everything on it. Run the format manually after confirming the target.",BR="shred permanently destroys the given target. Use rm for ordinary deletes, or run shred manually.";function Jm(e,t){let n=t.slice(1);if(e==="dd"&&n.some((r)=>/^of=\/dev\/.+/.test(r)))return C("dd.device-write",GR);if((e==="mkfs"||e.startsWith("mkfs."))&&n.some((r)=>r.startsWith("/dev/")))return C("mkfs.device",zR);if(e==="shred"&&n.length>0)return C("shred.target",BR);return null}var ef=[{heads:new Set(["rm","rmdir"]),analyze:(e)=>di(e.words,{environment:e.options.environment,cwd:e.cwd,originalCwd:e.originalCwd,strict:e.options.strict,paranoid:e.options.paranoidRm,allowTmpdirVar:e.allowTmpdirVar,tmpdirWordSplittingUnsafe:Wt(e.envAssignments,e.options.environment),trustedTmpdirValue:tn(e.envAssignments,e.options.environment),protectedGitMetadata:e.options.protectedGitMetadata,policy:e.options.policy,budget:e.options.budget})},{heads:new Set(["git"]),analyze:(e)=>ui(e.words,ja(e))},{heads:new Set(["find"]),analyze:(e)=>jd(e.words,{environment:e.options.environment,cwd:e.cwd,originalCwd:e.originalCwd,strict:e.options.strict,allowTmpdirVar:e.allowTmpdirVar,tmpdirWordSplittingUnsafe:Wt(e.envAssignments,e.options.environment),trustedTmpdirValue:tn(e.envAssignments,e.options.environment),protectedGitMetadata:e.options.protectedGitMetadata,budget:e.options.budget,envAssignments:e.envAssignments,policy:e.options.policy,analyzeTokens:e.analyzeChildTokens,analyzeNested:(t,n)=>dn(e.options.analyzeNested(t,n))})},{heads:new Set(["xargs"]),analyze:(e)=>Rm(e.words,{...Qm(e),analyzeChild:e.analyzeChild,analyzeNested:(t,n)=>dn(e.options.analyzeNested(t,n))})},{heads:new Set(["parallel"]),analyze:(e)=>Fm(e.words,{...Qm(e),analyzeChild:e.analyzeChild,analyzeNested:(t,n)=>dn(e.options.analyzeNested(t,n))})}];function Qm(e){return{environment:e.options.environment,cwd:e.cwd,originalCwd:e.originalCwd,strict:e.options.strict,paranoidRm:e.options.paranoidRm,paranoidInterpreters:e.options.paranoidInterpreters,allowTmpdirVar:e.allowTmpdirVar,protectedGitMetadata:e.options.protectedGitMetadata,budget:e.options.budget,envAssignments:e.envAssignments,worktreeMode:e.options.worktreeMode,policy:e.options.policy,scanWork:e.options.scanWork}}function dn(e){return e?{id:e.ruleId??"",reason:e.reason,intent:e.intent??"manual_only"}:null}function ja(e){return{environment:e.options.environment,cwd:e.cwd,dynamicArguments:e.dynamicArguments,envAssignments:e.envAssignments,policy:e.options.policy,worktreeMode:e.options.worktreeMode}}var of="shell execution source cannot be verified safely. Use a literal command string or ask the user to run it manually.";function sf(e){return ef.find((t)=>t.heads.has(e))?.analyze}function Gn(e,t,n){let r=n.trace;if(e.length===0)return null;let o=n.commandView?.dialect??"posix",i=(x)=>x.map((k)=>o==="posix"?_(k):k.text),s=n.child,a=s!==void 0&&s.producer!=="unknown-head",l=s?.producer==="unknown-head",c=n.effectiveCwd===null,u=s?s.cwd:c?void 0:n.effectiveCwd??n.cwd,m=s?s.originalCwd:c?void 0:n.cwd,d=jo(e);if(d.envAssignments.size>0)r?.recordSegment({type:"env-strip",input:i(e),envVars:[...d.envAssignments.keys()],output:i(d.words)});let f=Jt(d.words,n.environment,u,new Map([...n.envAssignments??[],...d.envAssignments])),p=f.envSplitValues??[];if(p.length>0){let x=[...p,...i(f.words)].join(" "),k=ht(x,n.scanWork);if(k)return r?.recordSegment({type:"dangerous-text",token:x,matched:!0,reason:k.reason}),xe(k);if(n.strict)return ke(r);let z=Vo(p,i(f.words));if(z){n.budget.charge("derivedTokens",z.length);let de=n.analyzeNested(z.join(" "),{effectiveCwd:f.cwd===void 0?n.effectiveCwd:f.cwd,envAssignments:new Map([...n.envAssignments??[],...d.envAssignments,...f.envAssignments])});if(de)return de}}let h=f.rewritten?J(i(f.words)):Tn(o,f.words),g=i(h),y={...n,wrapperNormalizationBudget:n.wrapperNormalizationBudget??{iterations:0}};if(r&&d.words.length>h.length){let x=i(d.words);r.recordSegment({type:"leading-tokens-stripped",input:x,removed:x.slice(0,x.length-h.length),output:g})}let v=new Map([...n.envAssignments??[],...d.envAssignments,...f.envAssignments]),E=g[0];if(!E)return null;if(rn(E))throw new D("wrapperPeelIterations");let b=B(E),w=f.cwd===null?void 0:f.cwd??u,R=f.cwd===null?void 0:m,A=f.cwd===void 0?n.effectiveCwd:f.cwd,X=s?s.allowTmpdirVar:!xr(v,n.environment),te=Zm(o,f.words,n.environment,t===0,n.strict,n.policy);if(te)return r?.recordSegment({type:"rule-check",rule:"analyzer/segment.ts:analyzeDynamicCommandStructure",matched:!0,reason:te.reason}),xe(te);let ue=si(g,n.policy);if(ue){for(let x of[ue.childIndex,...ue.alternativeChildIndices]){tf(y.wrapperNormalizationBudget);let k=h.slice(x);r?.recordSegment({type:"transparent-wrapper",wrapper:ue.wrapper,output:i(k)});let z=Gn(k,t,{...y,effectiveCwd:A,envAssignments:v});if(z)return z}return null}let oe=l?void 0:b==="eval"?mi(h):b==="trap"&&!a?ym(h):void 0;if(a&&s&&b==="eval"){if(oe?.kind==="dynamic")return Fn(s,n.policy);if(oe?.kind==="literal"){let x=n.analyzeNested(oe.source,{effectiveCwd:A,envAssignments:v});if(x)return x}return zn(s,n.policy)}if(oe?.kind==="dynamic"&&(n.strict||!n.commandView||!Ia(n.commandView)))return ke(r);if(oe?.kind==="literal"){r?.recordSegment({type:"recurse",reason:b==="eval"?"shell-eval":"shell-trap",innerCommand:oe.source,depth:t+1});let x=n.analyzeNested(oe.source,{effectiveCwd:A,envAssignments:v,functionDefinitions:n.functionDefinitions});if(x)return x}if(a?ie.has(b):lf(E,b)){if(bt(g))return null;if(a&&s){let x=St(g);if(x){if(s.dynamicSourceInput??s.dynamicInput){let z=Fn(s,n.policy);if(z)return z}if(Or(x)){let z=Fn(s,n.policy);if(z)return z}return n.analyzeNested(x,{effectiveCwd:A,envAssignments:v})}let k=vt(h);if(k.kind==="dynamic")return Fn(s,n.policy);if(k.kind==="literal")return s.dynamicSourceInput?Fn(s,n.policy):null;return s.dynamicSourceInput??s.dynamicInput?Fn(s,n.policy):null}if(l){let x=St(g),k=x?n.analyzeNested(x,{effectiveCwd:A,envAssignments:v}):vt(h).kind==="dynamic"?ke(r):null;if(k)return k}if(s===void 0){let x=jR(g,v,A,n,r,t);if(x)return x;let k=St(g);if(k){let Cn=fi(h,k);if(Cn.kind==="dynamic")return ke(r);let Fi=Cn.kind==="literal"?Cn.source:k,Rl=VR(Fi);r?.recordSegment({type:"shell-wrapper",wrapper:b,innerCommand:Rl}),r?.recordSegment({type:"recurse",reason:"shell-wrapper",innerCommand:Rl,depth:t+1});let xl=n.analyzeNested(Fi,{effectiveCwd:A,envAssignments:v});if(xl)return xl;return Or(Fi)?ke(r):null}let z=vt(h);if(z.kind==="dynamic")return ke(r);if(z.kind==="literal")return bi(z.source,A,v,n,r,t);let de=Cm(h,n.commandView?.redirections??[],n.hasPipelineInput??!1,n.literalShellInput);if(de.kind==="dynamic")return ke(r);if(de.kind==="literal")return r?.recordSegment({type:"recurse",reason:"shell-stdin",innerCommand:de.source,depth:t+1}),n.analyzeNested(de.source,{effectiveCwd:A,envAssignments:v})}}if(!s&&(b==="source"||b===".")){let x=g[1]==="-p"?2:null;if(x!==null){let Cn=n.commandView?h[x]:void 0;if(!Cn)return null;if(Cn.provenance!=="literal")return ke(r)}let k=x===null?1:3,z=g[k]==="--"?k+1:k,de=n.commandView?h[z]:void 0;if(!de)return null;if(de.provenance==="literal")return bi(de.text,A,v,n,r,t);if(n.strict||!n.commandView||!Ia(n.commandView))return ke(r)}if(Be.has(b)&&!l){if(!s&&n.strict&&$a(Ar(g),h))return ke(r);let x=zd(g,(z)=>dn(n.analyzeNested(z,{effectiveCwd:A,envAssignments:v}))),k=T(x,n.policy);if(k)return r?.recordSegment({type:"rule-check",rule:"awk:analyzeAwkSystemCallMatch",matched:!0,reason:k.reason}),xe(k)}if(qe(b)&&!l){if(!s&&n.strict&&$a(Go(g),h))return ke(r);let x=Vu(g);if(a&&s)return UR(b,x,A,v,n,s);if(x){let k=se(n.policy,"interpreter.one-liner-paranoid",!!n.paranoidInterpreters);if(r?.recordSegment({type:"interpreter",interpreter:b,codeArg:x,paranoidBlocked:k}),k){let de=T(C("interpreter.one-liner-paranoid",pr),n.policy);if(de)return xe(de)}if(Xs(b,x))return null;r?.recordSegment({type:"recurse",reason:"interpreter",innerCommand:x,depth:t+1});let z=n.analyzeNested(x,{effectiveCwd:A,envAssignments:v});if(z&&!af(z,x))return z;if(gr(x,n.scanWork)){let de=T(C("interpreter.dangerous-command",On),n.policy);if(de)return r?.recordSegment({type:"dangerous-text",token:x,matched:!0,reason:On}),xe(de)}r=void 0}}if(b==="busybox"&&g.length>1)return tf(y.wrapperNormalizationBudget),r?.recordSegment({type:"busybox",subcommand:g[1]??"unknown"}),r?.recordSegment({type:"recurse",reason:"busybox",innerCommand:g.slice(1).join(" "),depth:t+1}),Gn(h.slice(1),t,{...y,effectiveCwd:A,envAssignments:v});let G=s?null:T(Jm(b,g),n.policy);if(G)return r?.recordSegment({type:"rule-check",rule:"analyzer/device.ts:analyzeDeviceCommandMatch",matched:!0,reason:G.reason}),xe(G);let pe=r===y.trace?y:{...y,trace:r},ze={words:h,head:b,cwd:w,originalCwd:R,envAssignments:v,allowTmpdirVar:X,dynamicArguments:f.words.some((x)=>x.provenance==="command-substitution"),depth:t,effectiveCwd:A,options:pe,analyzeChildTokens:(x,k)=>a&&s?Va(x,t,pe,{...s,cwd:k??void 0,effectiveCwd:k??void 0}):dn(Gn(J(x),t+1,{...pe,child:void 0,commandView:void 0,effectiveCwd:k,envAssignments:v}))??tt(x,pe.policy.rules),analyzeChild:(x,k)=>Va(x,t,pe,k)},dt=s&&(b==="xargs"||b==="parallel")?void 0:sf(b);if(b==="rm"||b==="xargs"||b==="parallel")r?.recordSegment({type:"tmpdir-check",tmpdirValue:v.has("TMPDIR")||n.environment.env.has("TMPDIR")?"<redacted>":null,isOverriddenToNonTemp:!X,allowTmpdirVar:X});let Ve=r&&b==="git"?sm(ze.words,ja(ze)):void 0,Li=nf(Ve?Ve.match:dt?.(ze)??null,n.policy);if(r)KR(ze,Li,Ve?.relaxation??null);if(Li)return xe(Li);if(a&&s&&(b==="rm"||b==="rmdir")){if(!(b==="rm"&&(rt(g)||s.dynamicRmInput)))return null;return(s.dynamicRmInput?zn(s,n.policy):null)??$R(s,n.policy)}let vl=dt!==void 0,El=!s&&!vl&&!uo.has(b),Wi=r&&El?[]:void 0;if(El)for(let x=1;x<g.length;x++){let k=g[x];if(!k)continue;Wi?.push(k);let z=nf(HR(g,x,t,pe,w,R,A,v),n.policy);if(z)return r?.recordSegment({type:"fallback-scan",tokensScanned:Wi??[],embeddedCommandFound:B(k)}),xe(z)}if(r?.recordSegment({type:"fallback-scan",tokensScanned:Wi??[]}),l&&s&&!s.wrappedByTransparent)return null;if(!s&&t!==0&&vl)return r?.recordSegment({type:"custom-rules-check",rulesChecked:!1,matched:!1}),null;let Vr=tt(g,n.policy.rules);if(r?.recordSegment({type:"custom-rules-check",rulesChecked:n.policy.rules.length>0,matched:!!Vr,reason:Vr?.reason}),Vr)return xe(Vr);return a&&s?zn(s,n.policy):null}function Va(e,t,n,r){return dn(Gn(J(e),t+1,{...n,trace:void 0,commandView:void 0,hasPipelineInput:void 0,literalShellInput:void 0,functionDefinitions:void 0,cwd:r.originalCwd,effectiveCwd:r.effectiveCwd,envAssignments:r.envAssignments,worktreeMode:r.dynamicInput?!1:r.worktreeMode,wrapperNormalizationBudget:{iterations:0},child:r}))}function HR(e,t,n,r,o,i,s,a){for(let l of nt(e.slice(t),{environment:r.environment,cwd:o,envAssignments:a,policy:r.policy})){let c=l.tokens[0];if(!c)continue;let u=B(c);if(lf(c,u)||sf(u)!==void 0&&u!=="xargs"&&u!=="parallel"||l.wrappedByTransparent&&r.policy.rules.length>0)r.budget.charge("derivedTokens",e.length-t);let d=Va(l.tokens,n,r,{producer:"unknown-head",cwd:l.cwd,originalCwd:l.wrapperCwd===null?void 0:i,effectiveCwd:l.wrapperCwd===void 0?s:l.wrapperCwd,envAssignments:l.envAssignments,allowTmpdirVar:!xr(l.envAssignments,r.environment),worktreeMode:!1,wrappedByTransparent:l.wrappedByTransparent});if(d)return d}return null}function UR(e,t,n,r,o,i){if(!t)return zn(i,o.policy);if(se(o.policy,"interpreter.one-liner-paranoid",!!o.paranoidInterpreters)){let a=T(C("interpreter.one-liner-paranoid",pr),o.policy);if(a)return xe(a)}if(Xs(e,t))return zn(i,o.policy);let s=o.analyzeNested(t,{effectiveCwd:n,envAssignments:r});if(s&&!af(s,t))return s;if(gr(t,o.scanWork)){let a=T(C("interpreter.dangerous-command",On),o.policy);if(a)return xe(a)}return zn(i,o.policy)}function af(e,t){if(e.ruleId==="raw-text.dangerous-command")return!0;return(e.reason.startsWith(ri)||e.reason===Ln)&&!mo(t)}function Fn(e,t){let n=e.shellDynamicMatch?T(e.shellDynamicMatch,t):null;return n?xe(n):null}function zn(e,t){let n=e.dynamicSourceInput&&e.dynamicSourceMatch?T(e.dynamicSourceMatch,t):null;return n?xe(n):null}function $R(e,t){let n=e.dynamicInput&&e.rmDynamicMatch?T(e.rmDynamicMatch,t):null;return n?xe(n):null}function jR(e,t,n,r,o,i){let s=mm(e);if(s.argvSource?.kind==="absent")return ke(o);if(s.argvSourceApplies&&s.argvSource){let l=bi(s.argvSource.value,n,t,r,o,i,!0);if(l)return l}if(!s.envSourceApplies||!s.envName)return null;let a=t.get(s.envName);if(!a)return null;return bi(a,n,t,r,o,i,!0)}function bi(e,t,n,r,o,i,s=!1){if(s&&/[$`*?[\]]/.test(e))return ke(o);let a=fr(e,t,r.environment.paths,r.budget),l=a?r.literalHeredocFiles?.get(a):void 0;if(l===void 0)return s?ke(o):null;return r.budget.charge("derivedTokens",1),o?.recordSegment({type:"recurse",reason:"heredoc-file",innerCommand:l,depth:i+1}),r.analyzeNested(l,{effectiveCwd:t,envAssignments:n})}function VR(e){let t=e[0];return e.length>=2&&(t==='"'||t==="'")&&e.at(-1)===t?e.slice(1,-1):e}function KR(e,t,n){let r={git:"git:analyzeGitMatch",rm:"analyzer/rm.ts:analyzeRmMatch",find:"analyzer/find.ts:analyzeFindMatch",xargs:"analyzer/xargs.ts:analyzeXargs",parallel:"analyzer/parallel.ts:analyzeParallel"}[e.head];if(!r)return;if(e.options.trace?.recordSegment({type:"rule-check",rule:r,matched:!!t||!!n,reason:t?.reason??n?.originalReason}),n)e.options.trace?.recordSegment({type:"worktree-relaxation",originalReason:n.originalReason,gitCwd:n.gitCwd})}function tf(e){if(e.iterations>=P.wrapperPeelIterations.cap)throw new D("wrapperPeelIterations");e.iterations++}function xe(e){return{reason:e.reason,ruleId:e.id||void 0,intent:e.intent}}function ke(e){return e?.recordSegment({type:"error",message:of}),xe(qR())}function qR(){return{id:"",reason:of,intent:"stop_and_explain"}}function lf(e,t){return ie.has(t)||e==="$SHELL"||e==="${SHELL}"||ie.has(I(t))}function nf(e,t){return e?.id.startsWith("custom.")||e?.id==="raw-text.dangerous-command"?e:T(e,t)}var YR=/^\s*(?:\$\(\s*)?[({]*\s*(?:command\s+|builtin\s+)?(?:cd|pushd|popd)(?:\s|$)/,ZR=new Set(["cd","chdir","pop-location","popd","push-location","pushd","set-location","sl"]);function XR(e,t){let n=df(e,t);if(n.length===0)return!1;let r=n[uf(n)];if(r==="cd"||r==="pushd"||r==="popd")return!0;return YR.test(e.join(" "))}function cf(e,t,n,r){if(e.dialect==="powershell"){let a=JR(e.words,r);if(a.kind==="none")return;if(!t||a.kind==="unknown")return null;return rf(nx(a.target),t,n.paths)}let o=e.words.map(_);if(!XR(o,n))return;if(!t)return null;let i=df(o,n,t),s=uf(i);if(s===-1||i[s]!=="cd")return null;return rf(i[s+1],t,n.paths)}function rf(e,t,n){if(!e||e==="-"||e.includes("$")||e.includes("`"))return null;try{return rx(Mt(t,e,n),t,n)?t:null}catch{return null}}function JR(e,t){let n=QR(e[0])?1:0,r=e[n];if(!ex(r,n===1))return{kind:"none"};let o=r.text.toLowerCase(),i=o.split(/[\\/]/).pop()??o;if(!ZR.has(i))return{kind:"none"};if(o!==i||i==="pop-location"||i==="popd")return{kind:"unknown"};return tx(e.slice(n+1),t)}function QR(e){return e?.provenance==="literal"&&!e.quoted&&e.raw===e.text&&(e.text==="&"||e.text===".")}function ex(e,t){return e?.provenance==="literal"&&(t||!e.quoted&&e.raw===e.text)}function tx(e,t){let n;for(let r of e){if(r.provenance!=="literal"||n!==void 0)return{kind:"unknown"};n=r.text}if(n!==void 0)return{kind:"target",target:n};return t===void 0?{kind:"unknown"}:{kind:"target",target:t}}function nx(e){return e.includes("::")?void 0:e.replaceAll("\\","/")}function uf(e){let t=0;if(e[0]==="builtin"&&e.length>1)t=1;if(e[t]!=="time")return t;let n=t+1;while(e[n]?.startsWith("-"))n++;return n}function df(e,t,n){let r=ox(e);return Dt([...r],t,n)}function rx(e,t,n){let r=n.realpath(e),o=n.realpath(t);if(r===null||o===null)return Wr.normalize(e)===Wr.normalize(t);return Wr.normalize(r)===Wr.normalize(o)}function ox(e){let t=0;while(t<e.length){let n=e[t];if(n!=="{"&&n!=="("&&n!=="$(")break;t++}return e.slice(t)}var qa="TMPDIR",Ya="IFS",mf=/^([A-Za-z_][A-Za-z0-9_]*)\+=/,ff=/^[A-Za-z_][A-Za-z0-9_]*$/,pf=new Set(["export","typeset","declare","readonly"]),ix=new Set(["builtin","command","time"]);function gf(e,t){return{env:e,effectiveEnvAssignments:ux(e,t),shellAssignments:new Map}}function hf(e){return{env:e.env,effectiveEnvAssignments:e.effectiveEnvAssignments?new Map(e.effectiveEnvAssignments):void 0,shellAssignments:new Map(e.shellAssignments)}}function Za(e,t){let n=Cf(e,t);n.assignments.filter((s)=>s.persists).forEach((s)=>{t.shellAssignments.set(s.name,s.value),Xa(t,s)});let r=n.commandIndex;if(r!==-1&&pf.has(e[r]??""))e.filter((s)=>ff.test(s)&&Ka(s)).forEach((s)=>{dx(t,s)});let o=r===-1?-1:Sf(e,r);if(o===-1||e[o]!=="unset")return;let i=fx(e,o);if(i===null)return;e.slice(i).forEach((s)=>{mx(t,s)})}function yf(e,t){let n=Cf(e,t).assignments;if(n.length===0)return t.effectiveEnvAssignments;let r=new Map(t.effectiveEnvAssignments??[]);return n.forEach((o)=>{r.set(o.name,o.value)}),r}function Cf(e,t){let n=e.findIndex((s)=>!sx(s)),r=n!==-1&&pf.has(e[Sf(e,n)]??""),o=cx(t);return{assignments:e.flatMap((s,a)=>{let l=ax(s,o,t.env);if(!l)return[];if(n!==-1&&a>n&&!r&&!Ho(l.name))return[];return o.set(l.name,l.value),[{...l,persists:n===-1||r}]}),commandIndex:n}}function Sf(e,t){let n=t;while(ix.has(e[n]??"")){n+=1;while(e[n]?.startsWith("-")){if(/^-p*[vV][pvV]*$/.test(e[n]??""))return t;n+=1}}return n}function sx(e){return Ue(e)!==null||mf.test(e)}function ax(e,t,n){return Ue(e)??lx(e,t,n)}function lx(e,t,n){let r=$o(e,n,t);if(r)return r;let o=e.match(mf)?.[1];if(!o)return null;let i=e.indexOf("=");return{name:o,value:`${t.has(o)?t.get(o):n.get(o)??""}${e.slice(i+1)}`}}function Ka(e){return e===qa||e===Ya||ea(e)}function cx(e){return new Map([...e.effectiveEnvAssignments??[],...e.shellAssignments])}function ux(e,t){let n=[...Bo,qa,Ya].map((r)=>{let o=e.get(r);return o===void 0?null:[r,o]}).filter((r)=>r!==null);if(n.length===0)return t;return new Map([...n,...t??[]])}function Xa(e,t){let n=new Map(e.effectiveEnvAssignments??[]);n.set(t.name,t.value),e.effectiveEnvAssignments=n}function dx(e,t){Xa(e,{name:t,value:e.shellAssignments.get(t)??e.effectiveEnvAssignments?.get(t)??e.env.get(t)??""})}function mx(e,t){if(!Ka(t)&&!ff.test(t))return;if(e.shellAssignments.set(t,""),Ho(t)&&e.env.has(t)){let r=new Map(e.env);r.delete(t),e.env=r}if(!Ka(t)||t===qa||t===Ya||Zn(t)){Xa(e,{name:t,value:""});return}if(!e.effectiveEnvAssignments?.has(t))return;let n=new Map(e.effectiveEnvAssignments);n.delete(t),e.effectiveEnvAssignments=n.size===0?void 0:n}function fx(e,t){let n=t+1;while(n<e.length){let r=e[n];if(!r)return null;if(r==="--")return n+1;if(r==="-v"){n++;continue}if(r.startsWith("-"))return null;return n}return n}var px="Unquoted heredoc input is not supported safely. Quote the delimiter or ask the user to verify.",mn="This heredoc form or stdin consumer is not supported safely. Use a quoted heredoc with a supported consumer (cat, tee, git apply, git commit, gh pr create, gh issue create), or ask the user to verify.";function nl(e,t,n,r){if(t>=P.recursionDepth.cap)return n.trace?.recordSegment({type:"error",message:st}),{reason:st,segment:e,intent:"stop_and_explain"};let o=r??n.factStore?.getCommandProgram(e,n.shell??"auto")??Ye(e,n.shell);if(o.status==="limited")return n.trace?.recordSegment({type:"error",message:st}),{reason:st,segment:e,intent:"stop_and_explain"};if(o.status==="invalid"){let c=o.issues.find((u)=>u.code.includes("heredoc"));if(c){if(!n.strict)return tl(e,n);let u=`${ri}: ${c.message}`;return n.trace?.recordGlobal({type:"error",message:u}),{reason:u,segment:e,intent:"stop_and_explain"}}return _f(e,n),{reason:Ln,segment:e,intent:"stop_and_explain"}}if(n.strict&&o.status==="partial")return _f(e,n),{reason:Ln,segment:e,intent:"stop_and_explain"};if(o.issues.some((c)=>c.code.includes("quote"))&&!n.analyzePartialProgram)return tl(e,n);let s=n.cwd,a=n.effectiveCwd!==void 0?n.effectiveCwd:n.cwd,l=gf(n.environment.env,n.envAssignments);return Ri(o,t,{...n,rootProgram:o},s,[{effectiveCwd:a,shellGitContextState:l,literalHeredocFiles:new Map(n.literalHeredocFiles),functionDefinitions:new Map(n.functionDefinitions)}]).result}function Ri(e,t,n,r,o){let i=[...o],s,a;for(let[l,c]of e.nodes.entries()){if(c.kind==="connector"){a=c.operator;continue}let u=e.nodes[l+1],m=u?.kind==="connector"?u.operator:void 0,d=gx(e,l,c,a,m),f=a==="&&"||a==="||",p=f?s:void 0,h=a==="&&"?p?.success??i:a==="||"?p?.failure??i:i,g=a==="||"?p?.success??[]:[],y=a==="&&"?p?.failure??[]:[],v=f||Hn(m);if(c.kind==="function"){let te=h.flatMap((oe)=>{let V=Fr(oe);return V.functionDefinitions.set(c.name,c.body),Ja(oe,[V],d,m==="&",Hn(m))}),ue=Qa(te,[],g,y,a,m);i=ue.states,s=ue.conditionalStates,a=void 0;continue}if(c.kind==="group"){let te=[],ue=[];for(let V of h){let G=Ri(c.body,t,n,r,[Fr(V)]);if(G.result)return G;if(te.push(...Ja(V,G.states,d,m==="&",Hn(m))),v)ue.push(V,...d?G.states.map((pe)=>vi(V,pe)):G.states)}let oe=Qa(te,ue,g,y,a,m);i=oe.states,s=oe.conditionalStates,a=void 0;continue}if(c.kind!=="command")continue;let E=n.trace?.flattenNested?n.trace.currentSegmentIndex:n.trace?.allocateSegment(),b=e.nodes[l-2],w=xi(a)&&b?.kind==="command"?hm(b)??yx(b):void 0,R=[],A=[];for(let te of h){let ue=Cx(c,t,n,r,[Fr(te)]);if(ue.result)return{result:ue.result,states:i};let oe=e.dialect==="powershell"?ue.states:ue.states.map((V)=>vi(te,V));for(let V of oe){let G=Fr(V),pe=vx(c,t,n.trace?{...n,trace:wf(n.trace,E)}:n,r,G,xi(a),w);if(pe)return{result:pe,states:i};let ze=Dx(c,G.functionDefinitions);if(ze)n.budget.charge("derivedTokens",_i(ze));let dt=ze?t+1>=P.recursionDepth.cap?el(c.displayText,n,[G]):Ri(ze,t+1,n,r,[G]):{result:null,states:[G]};if(dt.result)return dt;if(R.push(...Ja(te,dt.states,d,m==="&",Hn(m))),v)A.push(te),A.push(...dt.states.map((Ve)=>d?vi(te,Ve):Ve))}}let X=Qa(R,A,g,y,a,m);i=X.states,s=X.conditionalStates,a=void 0}return{result:null,states:i}}function gx(e,t,n,r,o){if(n.kind==="group"&&n.style==="subshell")return!0;if(e.dialect==="posix"&&(xi(r)||xi(o)))return!0;if(o==="&")return!0;return e.dialect==="powershell"&&n.kind==="group"&&n.style==="brace"&&hx(e,t)}function Ja(e,t,n,r,o){let i=n?t.map((a)=>vi(e,a)):[...t],s=o?i.flatMap((a)=>Bn(e.literalHeredocFiles,a.literalHeredocFiles)?[a]:[{...a,literalHeredocFiles:new Map(e.literalHeredocFiles)},a]):i;return r?[e,...s]:s}function vi(e,t){return{...e,literalHeredocFiles:new Map(t.literalHeredocFiles)}}function hx(e,t){let n=[...e.nodes.slice(0,t)].reverse().find((o)=>o.kind==="command"||o.kind==="connector");if(!n||n.kind!=="command")return!0;let r=n.words[0]?.text.toLowerCase();if(r==="&"||r===".")return!1;if(r==="write-output"||r==="function"||r==="start-job")return!0;if(Sx(n))return!0;return n.source.replaceAll(/\s/g,"").toLowerCase()==="if($false)"}function xi(e){return e==="|"||e==="|&"}function yx(e){if(e?.dialect!=="powershell")return;if(e.words.length===1&&e.words[0]?.quoted&&e.words[0].provenance==="literal")return e.words[0].text;if(e.words[0]?.text.toLowerCase()==="write-output"&&e.words.length===2&&e.words[1]?.provenance==="literal")return e.words[1].text;return}function Hn(e){return e==="&&"||e==="||"}function Qa(e,t,n,r,o,i){let s={success:Ei([...n,...e]),failure:Ei([...r,...t])},a=Hn(i)?s:void 0;return{states:Hn(o)||a?Ei([...s.success,...s.failure]):s.success,conditionalStates:a}}function wf(e,t,n=e.flattenNested){return{currentSegmentIndex:t,flattenNested:n,allocateSegment:e.allocateSegment,getNextSegmentIndex:e.getNextSegmentIndex,recordGlobal:e.recordGlobal,recordSegment:(r,o=t)=>e.recordSegment(r,o)}}function Cx(e,t,n,r,o){let i=e.nested.map((s)=>({program:s,depth:t}));if(e.dialect==="powershell"){let s=bx(e);if(s){if(t+1>=P.recursionDepth.cap)return el(s,n,o);let a=Ye(s,"powershell");if(a.status==="limited")return el(s,n,o);if(a.status!=="complete")return bf(i,n,r,o);n.budget.charge("derivedTokens",_i(a)),i.push({program:a,depth:t+1})}}return bf(i,n,r,o)}function Sx(e){let t=e.words[0];return t?.provenance==="variable"&&e.words.at(-1)?.text==="="?t.text.toLowerCase():void 0}function bf(e,t,n,r){let o=[...r];for(let i of e){let s=[];for(let a of o){let l=Ri(i.program,i.depth,t,n,[Fr(a)]);if(l.result)return l;s.push(...l.states)}o=Ei(s)}return{result:null,states:o}}function bx(e){let t=e.words[0]?.provenance==="literal"&&!e.words[0].quoted&&e.words[0].raw===e.words[0].text&&(e.words[0].text==="&"||e.words[0].text==="."),n=t?1:0,r=e.words[n];if(r?.provenance!=="literal"||!t&&(r.quoted||r.raw!==r.text)||!["iex","invoke-expression"].includes(r.text.toLowerCase()))return;let o=e.words.slice(n+1),i=o[0]&&!o[0].quoted&&o[0].raw===o[0].text&&["-c","-command"].includes(o[0].text.toLowerCase())?1:0,s=o[i];return o.length===i+1&&s?.quoted&&s.provenance==="literal"?s.text:void 0}function _i(e){return e.nodes.reduce((t,n)=>t+(n.kind==="command"?n.words.length+n.nested.reduce((r,o)=>r+_i(o),0):n.kind==="group"||n.kind==="function"?_i(n.body):0),0)}function el(e,t,n){return t.trace?.recordSegment({type:"error",message:st}),{result:{reason:st,segment:e,intent:"stop_and_explain"},states:[...n]}}function vx(e,t,n,r,o,i,s){let a={...n,environment:{...n.environment,env:o.shellGitContextState.env}},l=Px(e);if(l&&a.strict)return a.trace?.recordSegment({type:"error",message:l}),{reason:l,segment:e.source,intent:"stop_and_explain"};Af(e,o,"before-consumer",a.environment.paths,a.budget);let c=Tn(e.dialect,e.words).map(_),u=e.displayText,m=yf(c,o.shellGitContextState);if(e.dialect==="powershell"){let p=T(Od(e,i,Lx(a,o.effectiveCwd)),a.policy);if(a.trace?.recordSegment({type:"rule-check",rule:"analyzer/powershell/remove-item.ts:analyzePowerShellCommandViewMatch",matched:!!p,reason:p?.reason}),p)return Nx(u,p)}if(c.length===1&&c[0]?.includes(" ")&&!ir(e.dialect,e.words)){let p=T(ht(c[0],a.scanWork),a.policy),h=p!==null&&!a.strict&&Hu(e,a.rootProgram,a.scanWork);if(p&&!h)return a.trace?.recordSegment({type:"dangerous-text",token:c[0],matched:!0,reason:p.reason}),{reason:p.reason,segment:u,ruleId:p.id,intent:p.intent};a.trace?.recordSegment({type:"dangerous-text",token:c[0],matched:!1});let g=vf(e,l,o,m,s,a);if(g)return g;return Za(c,o.shellGitContextState),null}let d=Gn(e.words,t,{...a,commandView:e,cwd:r,effectiveCwd:o.effectiveCwd,envAssignments:m,literalHeredocFiles:o.literalHeredocFiles,functionDefinitions:o.functionDefinitions,hasPipelineInput:i,literalShellInput:s,analyzeNested:(p,h)=>{let g=h&&Object.hasOwn(h,"effectiveCwd")?h.effectiveCwd:o.effectiveCwd,y=nl(p,t+1,{...a,effectiveCwd:g,envAssignments:h?.envAssignments??m,literalHeredocFiles:o.literalHeredocFiles,functionDefinitions:h?.functionDefinitions,worktreeMode:h?.worktreeMode??a.worktreeMode,trace:a.trace?wf(a.trace,a.trace.currentSegmentIndex,!0):void 0});return y?{reason:y.reason,ruleId:y.ruleId,intent:y.intent}:null}});if(d)return{...d,segment:u};let f=vf(e,l,o,m,s,a);if(f)return f;return Za(c,o.shellGitContextState),null}function vf(e,t,n,r,o,i){let s=Tx(e,t,n,r??new Map,i);if(s)return s;return Af(e,n,"after-consumer",i.environment.paths,i.budget),n.literalHeredocFiles.clear(),xx(e,t,n,i.environment.paths,i.budget),Ox(e,n,o,i.environment,i.trace),null}var Ex=new Set([">>","<>"]);function Af(e,t,n,r,o){for(let s of e.redirections){if(!(n==="before-consumer"?Rx(s):Ex.has(s.operator)))continue;Ef(s.target,t,r,o)}if(n!=="before-consumer"||!Ge(e.words[0],"tee"))return;let i=Pf(e.words.slice(1));if(!i)return;for(let s of i.operands)Ef(s,t,r,o)}function Rx(e){if(e.operator===">"||e.operator===">|")return!0;return e.operator===">&"&&e.fd===void 0&&e.target?.provenance==="literal"&&!/^(?:[0-9]+|-)$/.test(e.target.text)}function Ef(e,t,n,r){let o=e?.provenance==="literal"?fr(e.text,t.effectiveCwd,n,r):void 0;if(!o)return;t.literalHeredocFiles.delete(o)}function xx(e,t,n,r,o){if(t)return;let i=e.redirections.find((s)=>s.operator==="<<"||s.operator==="<<-")?.heredoc;if(!i||!wi(i))return;for(let s of _x(e)){let a=fr(s.text,n.effectiveCwd,r,o);if(!a||!$u(a))continue;if(!n.literalHeredocFiles.has(a)&&n.literalHeredocFiles.size>=P.trackedHeredocFiles.cap)throw new D("trackedHeredocFiles");n.literalHeredocFiles.set(a,i.body)}}function _x(e){let t=Ax(e.redirections)?.target,n=Rf(t)?[t]:[];if(Ge(e.words[0],"cat"))return wx(e.words)?n:[];if(!Ge(e.words[0],"tee"))return[];let r=Pf(e.words.slice(1));if(!r||r.append||r.hasUnsupportedOptions||!r.operands.every(Rf))return[];return[...r.operands,...n]}function wx(e){let t=!1;for(let n of e.slice(1)){if(t||n.provenance!=="literal")return!1;if(n.text==="--"){t=!0;continue}if(!/^-u+$/.test(n.text))return!1}return!0}function Ax(e){let t=e.findLast((n)=>(n.fd??([">",">|",">>",">&"].includes(n.operator)?1:0))===1);return t?.operator===">"||t?.operator===">|"?t:void 0}function Pf(e){let t=[],n=!0,r=!1,o=!1;for(let i of e){if(i.provenance!=="literal")return;if(n&&Ge(i,"--")){n=!1;continue}if(n&&!i.quoted&&i.raw===i.text&&/^-[^-]/.test(i.text)){r||=i.text.slice(1).includes("a"),o||=[...i.text.slice(1)].some((s)=>s!=="a"&&s!=="i");continue}if(n&&!i.quoted&&i.raw===i.text&&i.text.startsWith("--")){r||=i.text==="--append",o||=i.text!=="--append"&&i.text!=="--ignore-interrupts";continue}t.push(i)}return{operands:t,append:r,hasUnsupportedOptions:o}}function Rf(e){if(!e||e.provenance!=="literal"||e.text.length===0)return!1;if(e.quoted||e.raw!==e.text)return!0;return!e.raw.startsWith("~")&&!/[{}]/.test(e.raw)}function Ge(e,t){return e?.text===t&&e.raw===t&&e.provenance==="literal"&&!e.quoted}function wi(e){return e.quotedDelimiter||!/[$`\\]/.test(e.body)}function Px(e){let t=e.redirections.filter((s)=>s.operator==="<<"||s.operator==="<<-");if(t.length===0)return;if(t.length!==1)return mn;let n=t[0];if(!n?.heredoc)return mn;if(!wi(n.heredoc))return px;if(n.fd!==void 0&&n.fd!==0)return mn;if(e.redirections.some((s)=>s!==n&&["<","<<","<<-","<<<","<&","<>"].includes(s.operator)))return mn;let r=e.redirections.some((s)=>s!==n&&xf(s.target));if(Ge(e.words[0],"cat"))return r?mn:void 0;if(Ge(e.words[0],"tee"))return r||e.words.slice(1).some(xf)?mn:void 0;let o=e.words[0],i=e.words[1];if(Ge(o,"git")&&(Ge(i,"apply")||Ge(i,"commit")))return;if(Ge(o,"gh")&&(Ge(i,"pr")||Ge(i,"issue"))&&Ge(e.words[2],"create"))return;return mn}function xf(e){return e?.parts.some((t)=>t.provenance==="command-substitution"&&t.raw.startsWith(">("))??!1}function Tx(e,t,n,r,o){if(!t)return null;let i=e.redirections.filter((c)=>c.operator==="<<"||c.operator==="<<-"),s=i.flatMap((c)=>c.heredoc?[c.heredoc.body]:[]);if(kx(e,i,n,r,o))return null;let a=Ix(e,i,o);if(a!==void 0)return a?{reason:a.reason,segment:e.displayText,ruleId:a.id,intent:a.intent}:null;let l=tl(s.length===i.length?s.join(`
45
+ `):e.source,o);return l?{...l,segment:e.displayText}:null}function Ix(e,t,n){let r=t.length===1?t[0]:void 0;if(!r?.heredoc||!wi(r.heredoc)||r.fd!==void 0&&r.fd!==0)return;let o=e.words[0];if(o?.provenance!=="literal"||!qe(o.text))return;if(!e.words.slice(1).every((c)=>c.provenance==="literal"&&c.text.startsWith("-")))return;let s=r.heredoc.body,a=se(n.policy,"interpreter.one-liner-paranoid",!!n.paranoidInterpreters);if(n.trace?.recordSegment({type:"interpreter",interpreter:o.text,codeArg:s,paranoidBlocked:a}),a){let c=T(C("interpreter.one-liner-paranoid",pr),n.policy);if(c)return c}if(!gr(s,n.scanWork))return null;let l=T(C("interpreter.dangerous-command",On),n.policy);if(!l)return null;return n.trace?.recordSegment({type:"dangerous-text",token:s,matched:!0,reason:l.reason}),l}function kx(e,t,n,r,o){let i=t.length===1?t[0]:void 0;if(!i?.heredoc||!wi(i.heredoc)||i.fd!==void 0&&i.fd!==0)return!1;let s=Jt(e.words,o.environment,n.effectiveCwd,r),a=s.words.map(_),l=B(a[0]??"");if((s.envSplitValues?.length??0)>0||!ie.has(l)&&!ie.has(I(l)))return!1;return bt(a)}function Ox(e,t,n,r,o){let i=cf(e,t.effectiveCwd,r,n);if(i===null)o?.recordSegment({type:"cwd-change",segment:e.words.map(_).join(" "),effectiveCwdNowUnknown:!0});if(i!==void 0)t.effectiveCwd=i}function Fr(e){return{effectiveCwd:e.effectiveCwd,shellGitContextState:hf(e.shellGitContextState),literalHeredocFiles:new Map(e.literalHeredocFiles),functionDefinitions:new Map(e.functionDefinitions)}}function Ei(e){let t=[];for(let n of e){if(!t.some((r)=>Mx(r,n)))t.push(n);if(t.length>P.controlFlowStates.cap)throw new D("controlFlowStates")}return t}function Mx(e,t){return e.effectiveCwd===t.effectiveCwd&&Bn(e.shellGitContextState.env,t.shellGitContextState.env)&&Bn(e.literalHeredocFiles,t.literalHeredocFiles)&&Bn(e.functionDefinitions,t.functionDefinitions)&&Bn(e.shellGitContextState.effectiveEnvAssignments,t.shellGitContextState.effectiveEnvAssignments)&&Bn(e.shellGitContextState.shellAssignments,t.shellGitContextState.shellAssignments)}function Bn(e,t){if(e===t)return!0;if(!e||!t||e.size!==t.size)return!1;return[...e].every(([n,r])=>t.get(n)===r&&t.has(n))}function Dx(e,t){let n=sr(e);return n===void 0?void 0:t.get(n)}function Nx(e,t){if(!t)return null;return{reason:t.reason,segment:e,ruleId:t.id,intent:t.intent}}function Lx(e,t=e.effectiveCwd){let n=t===null;return{environment:e.environment,cwd:n?void 0:t??e.cwd,originalCwd:n?void 0:e.cwd,strict:e.strict,paranoid:e.paranoidRm,allowTmpdirVar:e.allowTmpdirVar,protectedGitMetadata:e.protectedGitMetadata,policy:e.policy,budget:e.budget}}function tl(e,t){let n=T(ht(e,t.scanWork),t.policy),r=t.trace?.currentSegmentIndex??t.trace?.allocateSegment(),o={type:"dangerous-text",token:e,matched:!!n,reason:n?.reason};if(t.trace?.recordSegment(o,r),!n&&/^(?:cd|pushd)\s/.test(e))t.trace?.recordSegment({type:"cwd-change",segment:e,effectiveCwdNowUnknown:!0},r);return n?{reason:n.reason,segment:e,ruleId:n.id,intent:n.intent}:null}function _f(e,t){let n={type:"strict-unparseable",rawCommand:e,reason:Ln},r=t.trace?.currentSegmentIndex;if(r===void 0)t.trace?.recordGlobal(n);if(r!==void 0)t.trace?.recordSegment(n)}var Wx=new Set(["derivedTokens","trackedHeredocFiles","controlFlowStates","wrapperPeelIterations","derivedCommandShape","parallelChildAnalyses","parallelDerivedTokens","parallelDerivedBytes","parallelPlaceholderReplacements"]);function Tf(e,t,n,r){let o=nl(e,0,{...t,...uu(t),budget:t.budget??me(),factStore:r},n);if(!o)return null;return{kind:"deny",reason:o.reason,intent:o.intent??"manual_only",...o.ruleId?{ruleId:o.ruleId}:{},evidence:[{kind:"command",command:e,segment:o.segment}]}}function If(e,t,n){try{return{decision:e()}}catch(r){let o=Fx(r,t,n);if(!o)throw r;return o}}function Fx(e,t,n){if(!(e instanceof D)||!Wx.has(e.kind))return null;let r=P[e.kind];if(n?.currentSegmentIndex!==void 0)n.recordSegment({type:"error",message:r.reason});if(n?.currentSegmentIndex===void 0)n?.recordGlobal({type:"error",message:r.reason});return{decision:{kind:"deny",reason:r.reason,intent:"stop_and_explain",evidence:[{kind:"command",command:t,segment:t}]},errorCode:r.errorCode}}var Gx=new Set(["src/entries/bin.ts","src/cli/cc-safety-net.ts","dist/bin/cc-safety-net.js","dist/bin/hook.js"]),ol=new Set(["cc-safety-net","ccsn"]),zx=new Set(["bunx","npx","pnpx"]),Bx=new Set(["pnpm","yarn"]),Hx=new Set(["npm","pnpm","yarn"]),Ux=new Set(["bun","node"]);function Pi(e,t,n={}){if(ol.has(e))return 0;if(zx.has(e)){if(n.broad)return rl(t);let o=t[0]==="-y"||t[0]==="--yes"?1:0;return Ai(t[o])?o+1:null}let r=n.broad?t.findIndex((o)=>!o.startsWith("-")):0;if(r!==-1&&Hx.has(e)&&n.broad&&t[r]==="exec"){let o=rl(t.slice(r+1));return o===null?null:r+1+o}if(Bx.has(e)){if(e==="yarn"&&!n.broad)return null;if(!n.broad)return t[0]==="dlx"&&Ai(t[1])?2:null;if(r===-1||t[r]!=="dlx")return null;let o=rl(t.slice(r+1));return o===null?null:r+1+o}if(Ux.has(e)){let o=n.broad&&r!==-1?r:0;if(kf(t[o]))return o+1;if(e==="bun"&&t[o]==="run"&&kf(t[o+1]))return o+2}return null}function rl(e){let t=e.findIndex((r)=>Ai(r));if(t===-1)return null;let n=t;while(n<e.length){let r=e[n]??"";if(!r.startsWith("-")&&!Ai(r))break;n++}return n}function Ai(e){if(!e)return!1;let t=e.indexOf("@");if(t===-1)return ol.has(e);if(t===0)return!1;let n=e.slice(t+1);if(n===""||n.includes("/")||n.includes(":"))return!1;return ol.has(e.slice(0,t))}function kf(e){let t=e?.replaceAll("\\","/");return[...Gx].some((n)=>t===n||t?.endsWith(`/${n}`))}var Of="Only the user may apply a policy proposal, because it rewrites the configuration CC Safety Net enforces. Ask them to run `cc-safety-net policy apply <file>` themselves in a terminal; you can run `cc-safety-net policy check <file>` to show them what it would change.";function Mf(e,t,n){let r=Ee(e,"input-candidate");if(!r)return null;let o=Dn(r.shell,e.invocation.context.executionCwd,t,n,{findSegmentTarget:(i)=>$x(i,t),isRedirectionTarget:()=>!1,findMalformedTarget:()=>null});return o?{target:o}:null}function $x(e,t){let n=Dt([...e],t),r=n.slice(1),o=Pi(I(n[0]??"").toLowerCase(),r,{broad:!0});if(o===null)return null;let i=r.slice(o).filter((s)=>s!=="-g"&&s!=="--global");return i[0]==="policy"&&i[1]==="apply"?n.join(" "):null}var Gr=require("node:path");var Wf="This path contains the protected policy config and you must not modify or delete it.",jx=new Set(["[","cat","file","grep","head","jq","less","ls","more","rg","sed","stat","tail","test","wc"]);function Ff(e,t,n){let r=Xx(e.invocation.context,t,n);if(e.invocation.route.kind==="patch")return Df(e.paths,!1,e.invocation.context.executionCwd,r,t,n);let o=Ee(e,"input-candidate");if(e.invocation.route.kind==="command")return o?Nf(o.shell,e.invocation.context.executionCwd,r,t,n):null;if(e.invocation.route.kind==="unknown"&&o){let i=Nf(o.shell,e.invocation.context.executionCwd,r,t,n);if(i)return i}return Df(e.paths,e.invocation.route.kind==="grep"||e.invocation.route.kind==="glob"||Xr(e.invocation.toolName),e.invocation.context.executionCwd,r,t,n)}function Df(e,t,n,r,o,i){if(t)return null;let s=e.find((a)=>zr(a,n,r,o,i));return s?{target:s}:null}function Nf(e,t,n,r,o){let i=Dn(e,t,r,o,{findSegmentTarget:(s,a)=>Vx(s,a,n,r,o)?.target??null,isRedirectionTarget:(s,a)=>zr(s,a.cwd,n,r,o),findMalformedTarget:(s)=>Zx(s,t,n,r,o)?.target??null});return i?{target:i}:null}function Vx(e,t,n,r,o){if(vr(e))return null;let i=Nt([...e],r),s=I(i[0]??"").toLowerCase(),a=i.slice(1);if(s==="rm"&&Kx(a)){let l=qx(a).find((c)=>Lf(Pe(c,t.variables),t.cwd,n,r,o));if(l)return{target:l}}if(s==="find"){if(ci(i,1)||ba(i,r)){let c=(li(J(i))??J(["."])).find((u)=>{let m=Pe(u.text,t.variables);return zr(m,t.cwd,n,r,o)||Lf(m,t.cwd,n,r,o)})?.text;if(c)return{target:c}}}if(s==="mv"){let l=Jo(a).sources.find((c)=>Jx(Pe(c,t.variables),t.cwd,n,r,o));if(l)return{target:l}}if(Yx(e,r))return null;for(let l of[...e,...i])for(let c of Gf(l))if(zr(Pe(c,t.variables),t.cwd,n,r,o))return{target:c};return null}function Kx(e){return e.some((t)=>t==="--recursive"||t.startsWith("-")&&!t.startsWith("--")&&/[rR]/.test(t.slice(1)))}function qx(e){let t=e.indexOf("--");if(t!==-1)return[...e.slice(0,t).filter((n)=>!n.startsWith("-")),...e.slice(t+1)];return e.filter((n)=>!n.startsWith("-"))}function Yx(e,t){let n=Nt([...e],t);if(n.length===0)return!1;let r=I(n[0]??"").toLowerCase();if(!jx.has(r))return!1;if(r!=="sed")return!0;return!n.slice(1).some((o)=>o.startsWith("-i")||o==="--in-place"||o.startsWith("--in-place="))}function Zx(e,t,n,r,o){for(let i of e.split(/\s+/))for(let s of Gf(i))if(zr(s,t,n,r,o))return{target:s};return null}function Gf(e){let t=e.trim().replace(/^['"]|['"]$/g,""),n=t.indexOf("=");return n===-1||n===t.length-1?[t]:[t,t.slice(n+1)]}function Xx(e,t,n){let r=(a)=>Br(ge(a,e.executionCwd,t,n)),o=r(Rn(t)),i=[r(Qn(e.executionCwd)),r(Qn(e.configCwd))],s=new Set(i.map((a)=>Gr.dirname(a)));for(let a=Gr.dirname(o);;a=Gr.dirname(a))if(s.add(a),Gr.dirname(a)===a)break;return{files:new Set([o,...i]),directoriesAndAncestors:s}}function zr(e,t,n,r,o){let i=Tl(e,t,r,o,(s)=>Br(s)===lo);return i!==null&&n.files.has(Br(i))}function Lf(e,t,n,r,o){return n.directoriesAndAncestors.has(Br(ge(e,t,r,o)))}function Jx(e,t,n,r,o){let i=Br(ge(e,t,r,o));return n.files.has(i)||n.directoriesAndAncestors.has(i)}function Br(e){return process.platform==="win32"?e.toLowerCase():e}var Oe=require("node:path"),Zf=require("node:url");var Xf="Access to a sensitive path is not allowed.",Jf=new Set(["echo","printf"]),Qx=new Set(["find"]),e_=new Set(["-exec","-execdir"]),t_=new Set([";","+"]),n_=new Set(["-delete","-exec","-execdir","-fls","-fprint","-fprint0","-fprintf","-ok","-okdir"]),r_=new Set(["-name","-iname","-path","-ipath","-wholename","-iwholename","-samefile"]),Qf=new Set(["-d","--data","--data-ascii","--data-binary","--data-urlencode","-F","--form"]),o_=new Set(["bun","child_process","deno","dotenv","fs","subprocess"]),i_=new Set(["append","awk","base64","cat","chmod","chown","connect","copy","cp","database","dd","eval","exec","fetch","file","function","grep","head","include","load","move","mv","open","fopen","popen","read","readfile","remove","rename","require","rg","rm","sed","shell","source","spawn","strings","system","tail","tar","truncate","unlink","write","xxd","zip"]),ep=new Set(["-c","-e","-r","-E","--eval","--exec"]),s_=new Map([["c",new Set(["bash","sh","zsh","dash","ksh","python"])],["e",new Set(["node","deno","bun","ruby","perl","rscript","osascript"])],["E",new Set(["perl"])],["r",new Set(["php"])]]),a_=new Set(["grep","rg"]),zf=new Set(["jq","gojq","jaq"]),Bf="f",Hf="file",l_="files",c_=new Set(["e","f"]),u_=new Set(["regexp","file"]),d_=new Set(["e","f","A","B","C","m"]),m_=new Set(["regexp","file","after-context","before-context","context","max-count"]),il="__CC_SAFETY_NET_PIPE_INPUT__",al=/[\w./~@+-]*[./~][\w./~@+-]*/g,f_=/(?:^|[^\w])([rRbBuUfF]{1,2})$/,p_=/^(?:`|%[qQwWiIxX]?[([{<|!/]|<<<?[~-]?['"]?[A-Za-z_])/,g_=/#\{|\$\{|\{\$|[$@][A-Za-z_]/,h_=/\b(?:subprocess\s*\.\s*(?:run|call|Popen|check_output|check_call|getoutput|getstatusoutput)|(?:[\w$]+\s*\.\s*)*(?:exec(?:File)?(?:Sync)?|spawn(?:File)?(?:Sync)?|system|popen|shell_exec|passthru|child_process|eval))\s*\(/g,y_=/\b(?:system|exec)\s*$/,C_=/\b(?:eval|exec)\s*\(/g,S_=/\b(?:eval|exec)\s*$/,b_=new Map([["bash",new Set(["-O"])],["sh",new Set(["-O"])],["zsh",new Set(["-o"])],["dash",new Set(["-o"])],["ksh",new Set(["-o"])],["python",new Set(["-W","-X"])],["node",new Set(["-r","--require","--loader","--import","--input-type"])]]);function Uf(e,t,n,r,o,i){for(let s of e){let a=s.target;if(yw(a,s.cwd,t?.denyPaths??[],n,r,o))return{target:a,ruleId:"secret.deny-path"};if(i&&!i.has(a))continue;let l=gw(a,s.cwd,t,r,o);if(l){if(!l.startsWith("secret.cli.")&&Cw(a,s.cwd,t?.allowPaths??[],n,r,o))continue;return{target:a,ruleId:l}}}return null}function tp(e,t,n,r,o={}){let i=$f(e,n,r),s=Uf(i,t,e.invocation.context.configCwd,n,r),a=s?.ruleId!=="secret.deny-path"&&o.strict===!1?$f(e,n,r,{refineInlineData:!0}):i,l=a.length===i.length?s:Uf(i,t,e.invocation.context.configCwd,n,r,new Set(a.map((c)=>c.target)));if(l?.ruleId!=="secret.deny-path"&&o.strict===!1&&v_(e,n))return null;return l}function v_(e,t){let n=Ee(e,"input-candidate")??Ee(e,"declared-command");if(!n)return!1;if(n.program.nodes.some((a)=>a.kind==="command"&&a.nested.length>0))return!1;let r=[];for(let a of Xo(n.shell)){if(a.kind==="operator"&&a.boundary)return!1;if(a.kind==="redirection")return!1;if(a.kind==="operator")continue;r.push(yt(a.text,t))}let o=Ht(r);if(o.length===0)return!1;let i=xt(o[0]??"").toLowerCase(),s=o.slice(1);if(e.invocation.route.kind==="unknown")return n.program.dialect==="powershell"&&(i==="ls"||i==="stat");if(i==="ls"||i==="stat")return!0;if(i==="test")return s.length===2&&(s[0]==="-e"||s[0]==="-f");if(i!=="find")return!1;return!s.some((a)=>n_.has(a))}function $f(e,t,n,r={}){let o=e.invocation.context.executionCwd;if(e.invocation.route.kind==="command"){let s=Ee(e,"input-candidate");return s?fn(s.shell,e.store,r,t,o,n,jf(s)):[]}if(e.invocation.route.kind!=="unknown")return e.paths.map((s)=>({target:s,cwd:o}));let i=Ee(e,"input-candidate");return[...i?fn(i.shell,e.store,r,t,o,n,jf(i)):[],...e.paths.map((s)=>({target:s,cwd:o}))]}function jf(e){return e.program.dialect==="powershell"}function fn(e,t,n,r,o,i,s=!1){if(e.status==="structural-limit")throw new Qe;if(e.status==="unclosed-quote")return[];if(e.status==="invalid")throw Error("Unable to parse command for secret protection");let a=[...e.assignmentFallbacks.map((c)=>({target:c,cwd:o})),...X_(yt(e.source,r),t,n,r,o,i)],l=(c)=>yt(O_(c,s),r);return Zo(e,o,r,i,{word:l,segment:(c,u,m,d,f)=>{if(c.length===0)return null;if(a.push(...Ii(c,t,n,r,u.cwd,i,f)),m!==null)a.push(...R_(m,c,t,n,r,u.cwd,i));return null},redirection:(c,u)=>{if(c.body!==void 0&&c.consumer!==void 0)a.push(...np(c.consumer,[c.body],t,n,r,u.cwd,i,(m)=>x_(c.consumer??[],m,t,n,r,u.cwd,i)));if(c.targetOrder==="legacy-segment")return oa;return a.push({target:l(c.target),cwd:u.cwd}),null}}),a}function ll(e,t,n,r,o,i){let s=t.getShellSyntax(e);if(s.status==="structural-limit")throw new Qe;return s.status==="complete"?fn(s,t,n,r,o,i):null}function Ii(e,t,n,r,o,i,s){let a=(p)=>({target:p,cwd:o});if(s?.size){let p=e.filter((h,g)=>!s.has(g));if(zf.has(xt(Ht(p)[0]??"").toLowerCase()))return[...e.filter((h,g)=>s.has(g)).map(a),...Ii(p,t,n,r,o,i)]}let l=k_(e).map(a),c=Ht(e);if(c.length===0)return l;let u=c[0]??"",m=xt(u).toLowerCase(),d=c.slice(1),f=E_(u,m,d);if(f)return[...l,...f.map(a)];if(Jf.has(m))return n.capturedOutput===!0?[...l,...rp(e).map(a)]:l;if(m==="eval")return[...l,...ll(d.join(" "),t,n,r,o,i)??d.map(a)];if(m==="export")return[...l,...d.flatMap((p)=>/^[A-Za-z_][A-Za-z0-9_]*=/.test(p)?[p.slice(p.indexOf("=")+1)]:Rt(m,p)).map(a)];if(m==="git")return[...l,...D_(d).map(a)];if(zf.has(m))return[...l,...M_(d).map(a)];if(a_.has(m))return[...l,...iw(d).map(a)];if(Qx.has(m))return[...l,...F_(d,t,n,r,o,i).map(a)];if(Be.has(m))return[...l,...d.flatMap((p)=>Rt("awk",p)).map(a),...d.flatMap((p)=>z_(p,t,n,r,o,i)),...d.flatMap(B_).map(a)];if(m==="curl")return[...l,...d.flatMap((p)=>Rt(m,p)).map(a),...N_(d).map(a)];if(Er(m)){let p=br.has(m)?vc(m,d):null;if(p!==null){let h=t.getShellSyntax(p);if(h.status==="structural-limit")throw new Qe;if(h.status==="complete")return[...l,...fn(h,t,n,r,o,i),...d.slice(d.indexOf(p)+1).filter((g)=>!g.startsWith("-")).map(a)]}return[...l,...G_(m,d,t,n,r,o,i)]}return[...l,...d.flatMap((p)=>Rt(m,p)).map(a)]}function E_(e,t,n){let r=Pi(t,n);if(r===null||n[r]!=="explain")return null;let o=[e,...n.slice(0,r)],i=n.slice(r+1);for(let s=0;s<i.length;s++){let a=i[s];if(a==="--json"||a==="--help"||a==="-h")continue;if(a==="--cwd"){let l=i[s+1];if(l&&!l.startsWith("--"))o.push(l);s++;continue}return o}return o}function R_(e,t,n,r,o,i,s){if(P_(t,n,r,o,i,s))return rp(e).map((a)=>({target:a,cwd:i}));return np(t,__(e),n,r,o,i,s,()=>[])}function x_(e,t,n,r,o,i,s){let a=Ht(e);if(!Er(xt(a[0]??"").toLowerCase()))return[];return ll(t,n,r,o,i,s)??[{target:t,cwd:i}]}function np(e,t,n,r,o,i,s,a){let l=T_(e);if(l===null)return t.flatMap(a);return t.flatMap((c)=>br.has(l)?fn(n.getShellSyntax(c),n,r,o,i,s):Ti(l,c,n,r,o,i,s))}function rp(e){let t=Ht(e);if(t.length===0)return[];let n=xt(t[0]??"").toLowerCase();if(!Jf.has(n))return[];let r=t[t[1]==="--"?2:1];if(n==="printf"&&r!==void 0&&!r.startsWith("-")&&!r.replaceAll("%%","").includes("%"))return[cl(r.replaceAll("%%","%"))];return t.slice(1)}function __(e){let t=Ht(e);if(t.length===0)return[];let n=xt(t[0]??"").toLowerCase(),r=t.slice(1);if(n==="echo"){let o=r.findIndex((i)=>!/^-[neE]+$/.test(i));return[(o===-1?[]:r.slice(o)).join(" ")]}if(n==="printf")return w_(r);return[]}function w_(e){let t=e[0];if(t===void 0)return[];let n=(t.match(/%%|%[bqs]/g)??[]).filter((o)=>o!=="%%").length;if(n===0||e.length===1)return[cl(t)];let r=e.slice(1);return Array.from({length:Math.ceil(r.length/n)},(o,i)=>A_(t,r.slice(i*n,(i+1)*n)))}function A_(e,t){let n=0;return cl(e.replace(/%%|%[bqs]/g,(r)=>{if(r==="%%")return"%";let o=t[n]??"";return n++,o}))}function cl(e){return e.replace(/\\n/g,`
46
+ `).replace(/\\t/g,"\t").replace(/\\r/g,"\r")}function P_(e,t,n,r,o,i){let s=Ht(e);if(s.length===0||xt(s[0]??"").toLowerCase()!=="xargs")return!1;let a=an(s),l=s.slice(a.childStart);if(l.length===0)return!1;if(a.replacementToken==="")return!1;let c=a.replacementToken,u=c===null?[...l,il]:l.map((m)=>m.split(c).join(il));return Ii(u,t,n,r,o,i).some((m)=>m.target.includes(il))}function T_(e){let t=Ht(e);if(t.length===0)return null;let n=xt(t[0]??"").toLowerCase();if(!Er(n))return null;return I_(n,t.slice(1))?n:null}function I_(e,t){let n=ul(e);for(let r=0;r<t.length;r++){let o=t[r];if(o===void 0)break;if(ep.has(o)||op(e,o)||/^--(?:eval|exec)=/.test(o))return!1;if(o==="-")return!0;if(o.startsWith("-")){if(n==="python"&&o==="-m")return!1;if(b_.get(n)?.has(o))r++;continue}return!1}return!0}function ul(e){return/^python\d/.test(e)?"python":e}function k_(e){let t=[];for(let n of e){if(sp(n))continue;let r=/^[A-Za-z_][A-Za-z0-9_]*=(.*)$/.exec(n);if(r===null)break;if(r[1]!==void 0&&r[1]!=="")t.push(r[1])}return t}var Vf=/^(?:\$\{home\}|\$\{env:(?:userprofile|home)\}|~)(?=[\\/])/i;function O_(e,t){if(!t||!Vf.test(e))return e;return`~${e.replace(Vf,"").replace(/\\/g,"/")}`}function Rt(e,t){if(t==="--")return[];let n=[],r=t.indexOf("=");if(r>0&&r<t.length-1)n.push(t.slice(r+1));if(t.startsWith("-"))return n;if(e==="tar"&&/\.(?:tar|tgz|tar\.gz|zip)$/i.test(t))return n;if(e==="zip"&&/\.zip$/i.test(t))return n;return n.push(t),n}function M_(e){let t=-1,n=!1;for(let r=0;r<e.length;r++){let o=e[r]??"";if(!n&&o==="--"){n=!0;continue}if(n||!/^-(?:[A-Za-z]|-)/.test(o)){if(t===-1)t=r;continue}if(/^--(?:arg|argjson|argfile|rawfile|slurpfile)$/.test(o)){r+=2;continue}if(o==="--indent"||o==="-L"){r++;continue}if(o.startsWith("-L"))continue;if(/^-[srjcCMaSRnbehV]+$/.test(o)||/^--(?:slurp|raw-output0?|join-output|compact-output|color-output|monochrome-output|ascii-output|unbuffered|sort-keys|raw-input|null-input|binary|tab|seq|stream|stream-errors|exit-status|args|jsonargs|help|version|build-configuration)$/.test(o))continue;return e.flatMap((i)=>Rt("jq",i))}return e.flatMap((r,o)=>o===t?[]:Rt("jq",r))}function D_(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n]??"";if(r==="--"||!r.startsWith("-"))return[...t,...e.slice(n).flatMap((i)=>Rt("git",i))];if(t.push(...Rt("git",r)),!be.has(r))continue;let o=e[n+1];if(o===void 0)break;t.push(...r==="-c"&&o.includes("=")?[o.slice(o.indexOf("=")+1)]:Rt("git",o)),n++}return t}function N_(e){return e.flatMap((t,n)=>{let r=W_(t);if(r!==null)return Kf(r.flag,r.value);let o=L_(e[n-1]);return o===null?[]:Kf(o,t)})}function Kf(e,t){if(e==="-F"||e==="--form"){let n=t.indexOf("="),r=n===-1?t:t.slice(n+1);if(!r.startsWith("@")&&!r.startsWith("<"))return[];return sl(r.slice(1).split(";")[0]??"")}if(e==="--data-urlencode"){let n=t.indexOf("@"),r=t.indexOf("=");if(n===-1||r!==-1&&r<n)return[];return sl(t.slice(n+1))}return t.startsWith("@")?sl(t.slice(1)):[]}function L_(e){if(e===void 0)return null;if(Qf.has(e))return e;return/^-[A-Za-z]+[dF]$/.test(e)?`-${e.slice(-1)}`:null}function W_(e){let t=e.slice(0,2);if(e.length>2&&(t==="-d"||t==="-F"))return{flag:t,value:e.slice(2)};let n=e.indexOf("=");if(n===-1)return null;let r=e.slice(0,n);return Qf.has(r)?{flag:r,value:e.slice(n+1)}:null}function sl(e){return e===""||e==="-"?[]:[e]}function F_(e,t,n,r,o,i){let s=e.findIndex((l)=>l.startsWith("-")||l==="("||l==="!"||l===";"),a=[...e.slice(0,s===-1?e.length:s)];for(let l=0;l<e.length;l++){if(!e_.has(e[l]??""))continue;let c=e.slice(l+1),u=c.findIndex((f)=>t_.has(f)),m=u===-1?c:c.slice(0,u),d=Ii(m,t,n,r,o,i).map((f)=>f.target);if(a.push(...d.filter((f)=>f!=="{}")),!d.includes("{}"))continue;a.push(...e.slice(0,l).flatMap((f,p,h)=>{if(!r_.has(f))return[];let g=h[p+1];return g===void 0?[]:[g,g.replace(/^\*+\//,"").replace(/\/\*+$/g,"").replace(/^\*+/,"").replace(/\*+$/g,"")]}))}return a}function G_(e,t,n,r,o,i,s){let a=[];for(let l=0;l<t.length;l++){let c=t[l];if(c===void 0)break;if(ep.has(c)||op(e,c)){let m=t[l+1];if(m!==void 0)a.push(...Ti(e,m,n,r,o,i,s)),l++;continue}let u=/^--(?:eval|exec)=(.*)$/.exec(c);if(u!==null&&u[1]!==void 0){a.push(...Ti(e,u[1],n,r,o,i,s));continue}if(!c.startsWith("-"))a.push({target:c,cwd:i})}return a}function op(e,t){if(!t.startsWith("-")||t.startsWith("--")||t.length<=2)return!1;return s_.get(t[t.length-1]??"")?.has(ul(e))??!1}function z_(e,t,n,r,o,i){if(!e.includes("system"))return[];return ha(e)?.commands.flatMap((s)=>fn(t.getShellSyntax(s),t,n,r,o,i))??[]}function B_(e){return Array.from(e.matchAll(/\bgetline(?:\s+[A-Za-z_][A-Za-z0-9_]*)?\s*<\s*"((?:\\.|[^"\\])*)"/g)).map((t)=>t[1]).filter((t)=>t!==void 0&&t!=="")}function H_(e){let t=Array.from(e.matchAll(/(['"`])((?:\\.|(?!\1).)*)\1/g)).map((r)=>r[2]).filter((r)=>r!==void 0&&r!==""),n=(e.match(al)??[]).filter((r)=>r!=="process.versions.sqlite"||t.some((o)=>o.includes(r)));return[...t,...t.flatMap(dl),...n]}function Ti(e,t,n,r,o,i,s){let a=(f)=>({target:f,cwd:i}),l=$_(t,U_(e));if(l===null)return H_(t).map(a);let c=l.masked.match(h_)!==null||l.literals.some((f)=>y_.test(l.masked.slice(0,f.start))),u=l.masked.match(C_)!==null||l.literals.some((f)=>S_.test(l.masked.slice(0,f.start))),m=r.refineInlineData===!0&&!br.has(e),d=m&&!(q_(l.masked)||c||u)?[]:l.literals;return[...d.map((f)=>f.text).filter((f)=>f!=="").map(a),...d.flatMap((f)=>dl(f.text)).map(a),...m?[]:l.literals.flatMap((f)=>f.text.match(al)??[]).filter((f)=>f!=="process.versions.sqlite").map(a),...c?l.literals.flatMap((f)=>ll(f.text,n,r,o,i,s)??[a(f.text)]):[],...u?l.literals.flatMap((f)=>Ti(e,f.text.replace(/\\(.)/g,(p,h)=>h==="n"?`
47
+ `:h),n,r,o,i,s)):[],...(l.masked.match(al)??[]).filter((f)=>f!=="process.versions.sqlite").map(a)]}function U_(e){let t=ul(e);if(t==="python")return"python";if(t==="osascript")return"opaque";return t==="node"||t==="bun"||t==="deno"?"javascript":"simple"}function $_(e,t){if(t==="opaque")return null;let n=e.split(""),r=[];for(let o=0;o<e.length;o++){let i=e[o]??"";if(t==="simple"&&(i==="`"||i==="%"||i==="<")){if(p_.test(e.slice(o)))return null}let s=i==="'"||i==='"'||t==="javascript"&&i==="`"?i:null;if(s===null)continue;if(s==="`"&&K_(e,o))return null;let a=t==="python"?j_(e,o):"",l=t==="python"&&e.startsWith(s.repeat(3),o)?s.repeat(3):s,c=o+l.length,u=V_(e,c,l);if(u===null)return null;let m=e.slice(c,u);if(/[fF]/.test(a)&&m.includes("{"))return null;if(t==="simple"&&s==='"'&&g_.test(m))return null;r.push({start:c,text:m});for(let d=o;d<u+l.length;d++)n[d]=" ";o=u+l.length-1}return{masked:n.join(""),literals:r}}function j_(e,t){return f_.exec(e.slice(Math.max(0,t-3),t))?.[1]??""}function V_(e,t,n){let r=n==="`",o=r||n.length===3;for(let i=t;i<e.length;i++){let s=e[i];if(s==="\\"){i++;continue}if(r&&s==="$"&&e[i+1]==="{")return null;if(!o&&(s===`
48
+ `||s==="\r"))return null;if(e.startsWith(n,i))return i}return null}function K_(e,t){for(let n=t-1;n>=0;n--){let r=e[n];if(!r||/\s/.test(r))continue;return/[\w$\])]/.test(r)}return!1}function q_(e){for(let t of e.matchAll(/[A-Za-z_$][A-Za-z0-9_$]*/g)){let n=t[0],r=t.index;if(o_.has(n.toLowerCase()))return!0;let o=n.replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[_$\s]+/).map((i)=>i.toLowerCase());if(!o.some((i)=>i_.has(i)))continue;if(o.length>1)return!0;if(Y_(e,r)===".")return!0;if(Z_(e,r+n.length)==="(")return!0}return!1}function Y_(e,t){for(let n=t-1;n>=0;n--)if(!/\s/.test(e[n]??""))return e[n];return}function Z_(e,t){for(let n=t;n<e.length;n++)if(!/\s/.test(e[n]??""))return e[n];return}function X_(e,t,n,r,o,i){return nw(e).flatMap((s)=>{let a=t.getShellSyntax(s);if(a.status==="invalid")return[];return[...fn(a,t,{...n,capturedOutput:!0},r,o,i),...J_(a,r)?Q_(a,r).map((l)=>({target:l,cwd:o})):[]]})}function J_(e,t){let n=Xo(e);for(let r=0;r<n.length;r++){let o=n[r];if(o?.kind!=="word"||xt(yt(o.text,t)).toLowerCase()!=="base64")continue;for(let i=r+1;i<n.length;i++){let s=n[i];if(s?.kind==="operator")break;if(s?.kind!=="word")continue;let a=yt(s.text,t);if(a==="--decode"||!a.startsWith("--")&&a.startsWith("-")&&/[dD]/.test(a))return!0}}return!1}function Q_(e,t){return Xo(e).flatMap((n)=>n.kind==="word"?[yt(n.text,t)]:n.kind==="redirection"&&n.target?[yt(n.target,t)]:[]).flatMap(dl)}function dl(e){let t=tw(e);if(t===null)return[];let n=Buffer.from(t,"base64").toString("utf8");if(n===""||ew(n))return[];return Buffer.from(n,"utf8").toString("base64").replace(/=+$/g,"")===t.replace(/=+$/g,"")?[n]:[]}function ew(e){return Array.from(e).some((t)=>{let n=t.charCodeAt(0);return n<32||n===127})}function tw(e){if(e.length<8||!/^[A-Za-z0-9+/_-]+={0,2}$/.test(e))return null;if(/=/.test(e.replace(/=+$/g,"")))return null;let t=e.replace(/=+$/g,"");if(t.length%4===1)return null;return`${t.replace(/-/g,"+").replace(/_/g,"/")}${"=".repeat((4-t.length%4)%4)}`}function nw(e){let t=[],n={inSingle:!1,inDouble:!1,escaped:!1};for(let r=0;r<e.length;r++){let o=e[r];if(!o)break;if(er(o,n))continue;if(ip(e,r,n)){let i=rw(e,r+1);if(i!==null)t.push(i.body),r=i.endIndex;continue}if(!n.inSingle&&o==="`"){let i=ow(e,r);if(i!==null)t.push(i.body),r=i.endIndex}}return t}function rw(e,t){let n={inSingle:!1,inDouble:!1,escaped:!1},r=1;for(let o=t+1;o<e.length;o++){let i=e[o];if(!i)break;if(er(i,n))continue;if(ip(e,o,n)){r++,o++;continue}if(!n.inSingle&&!n.inDouble&&i===")"){if(r--,r===0)return{body:e.slice(t+1,o),endIndex:o}}}return null}function ow(e,t){let n=!1;for(let r=t+1;r<e.length;r++){let o=e[r];if(!o)break;if(n){n=!1;continue}if(o==="\\"){n=!0;continue}if(o==="`")return{body:e.slice(t+1,r),endIndex:r}}return null}function ip(e,t,n){return!n.inSingle&&e[t]==="$"&&e[t+1]==="("&&e[t+2]!=="("}function iw(e){let t=[],n=[],r=!1,o=!1,i=!1;for(let l=0;l<e.length;l++){let c=e[l];if(c===void 0)break;if(!i&&c==="--"){i=!0;continue}if(i){n.push(c);continue}let u=/^--([^=]+)(?:=(.*))?$/.exec(c);if(u!==null){let m=u[1]??"",d=u[2];if(m===l_)o=!0;if(u_.has(m))r=!0;if(d!==void 0){if(m===Hf)t.push(d);continue}if(m_.has(m)){let f=e[l+1];if(m===Hf&&f!==void 0)t.push(f);l++}continue}if(c.startsWith("-")&&c.length>1){let m=c.slice(1),d="",f="";for(let h=0;h<m.length;h++){let g=m[h]??"";if(c_.has(g))r=!0;if(d_.has(g)){d=g,f=m.slice(h+1);break}}if(d==="")continue;if(f.length>0){if(d===Bf)t.push(f);continue}let p=e[l+1];if(d===Bf&&p!==void 0)t.push(p);l++;continue}n.push(c)}let a=!r&&!o?n.slice(1):n;return[...t,...a]}function Ht(e){let t=e.findIndex((n)=>!sp(n)&&!/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(n));return t===-1?[]:[...e.slice(t)]}function sp(e){return e==="env"||e==="command"||e==="builtin"||e==="sudo"}var sw=new Set(["id_rsa.pub","id_ed25519.pub","id_ecdsa.pub"]),aw=".env.",lw=new Set([".env.example",".env.sample",".env.template",".env.defaults"]),cw=[".env.example.",".env.sample."];function uw(e){let t;try{t=new URL(e.trim())}catch{return!1}return t.protocol!=="file:"&&t.host!==""}function dw(e){return e.length>0&&!/\s/.test(e)}function mw(e,t,n,r){try{let o=$r(e,t,n,r);return o!==""&&n.paths.entryKind(o)!=="missing"}catch(o){if(o instanceof D)throw o;return!1}}var fw=new Set(["node_modules","__pycache__"]),pw=[["vendor","bundle"],["vendor","cache"]];function gw(e,t,n,r,o){if(uw(e))return null;let i=ut(e,t,r,o);if(!i)return null;let s=q(i.split("/").pop()??""),a=q(i),l=()=>dw(s)||mw(e,t,r,o);if(lw.has(s)||cw.some((d)=>s.startsWith(d)))return null;let c=q(vw(e,t,r,o));for(let d of hs){let f=`~/${d.suffixParts.join("/")}`;if((Yf(a,f)||Yf(c,f))&&Et(d.id,n))return d.id}let u=hw(i,t,n,r,o);if(u)return u;if(sw.has(s))return null;for(let d of gs)if(s===d.basename&&Et(d.id,n))return d.id;if(s.startsWith(aw)&&Et(go.id,n)&&l())return go.id;for(let d of ys)if(s.length>d.prefix.length&&s.startsWith(d.prefix)){let f=s.slice(d.prefix.length)[0];if((f==="-"||f==="_")&&Et(d.id,n)&&l())return d.id}for(let d of Cs)if(s.length>d.prefix.length&&s.startsWith(d.prefix)){if(s.slice(d.prefix.length)===d.suffix&&Et(d.id,n))return d.id}if(Sw(a))return null;if(!s.includes(".")&&nr.pattern.test(s)&&Et(nr.id,n))return nr.id;let m=bw(s,n);if(m)return m;return null}function hw(e,t,n,r,o){return ho.find((i)=>{if(!Et(i.id,n))return!1;switch(i.id){case"secret.cli.claude-code":return H(e,K(r.env.get("CLAUDE_CONFIG_DIR"),"~/.claude",t,r,o),[".credentials.json"]);case"secret.cli.claude-code.config":{let s=q(e).split("/");return H(e,K(r.env.get("CLAUDE_CONFIG_DIR"),"~/.claude",t,r,o),["settings.json","settings.local.json"])||Ur(e,"~/.claude.json",t,r,o)||s.at(-1)==="settings.local.json"&&s.at(-2)===".claude"||s.at(-1)===".mcp.json"}case"secret.cli.antigravity":return H(e,ut("~/.gemini/config",t,r,o),["hooks.json","mcp_config.json"]);case"secret.cli.codex":{let s=K(r.env.get("CODEX_HOME"),"~/.codex",t,r,o);return H(e,s,["auth.json",".credentials.json"])||Hr(e,s,["secrets",".sandbox-secrets"])}case"secret.cli.codex.config":{let s=K(r.env.get("CODEX_HOME"),"~/.codex",t,r,o),a=q(e).split("/").at(-1)??"";return H(e,s,["config.toml"])||a.endsWith(".config.toml")&&H(e,s,[a])}case"secret.cli.gemini":return H(e,ye(K(r.env.get("GEMINI_CLI_HOME"),"~",t,r,o),".gemini"),["oauth_creds.json","mcp-oauth-tokens.json","a2a-oauth-tokens.json","gemini-credentials.json"]);case"secret.cli.gemini.config":{let s=q(e).split("/"),a=r.env.get("GEMINI_CLI_SYSTEM_SETTINGS_PATH"),l=r.env.get("ProgramData")?[ye(K(r.env.get("ProgramData"),"",t,r,o),"gemini-cli")]:[];return H(e,ye(K(r.env.get("GEMINI_CLI_HOME"),"~",t,r,o),".gemini"),["settings.json","google_accounts.json"])||s.at(-1)==="settings.json"&&s.at(-2)===".gemini"||(a?.trim()?Ur(e,a,t,r,o):!1)||["/Library/Application Support/GeminiCli","/etc/gemini-cli",...l].some((c)=>H(e,ut(c,t,r,o),["settings.json"]))}case"secret.cli.copilot-cli":{let s=K(r.env.get("COPILOT_HOME"),"~/.copilot",t,r,o);return H(e,s,["config.json"])||Hr(e,s,["mcp-oauth-config","mcp-secrets"])}case"secret.cli.copilot-cli.config":return H(e,K(r.env.get("COPILOT_HOME"),"~/.copilot",t,r,o),["mcp-config.json"]);case"secret.cli.kimi-code":{let s=K(r.env.get("KIMI_CODE_HOME"),"~/.kimi-code",t,r,o),a=K(r.env.get("KIMI_SHARE_DIR"),"~/.kimi",t,r,o);return H(e,s,["server.token"])||Hr(e,s,["credentials"])||Hr(e,a,["credentials","mcp-oauth"])}case"secret.cli.kimi-code.config":{let s=["config.toml","mcp.json"],a=q(e).split("/");return a.at(-1)==="mcp.json"&&a.at(-2)===".kimi-code"||H(e,K(r.env.get("KIMI_CODE_HOME"),"~/.kimi-code",t,r,o),s)||H(e,K(r.env.get("KIMI_SHARE_DIR"),"~/.kimi",t,r,o),[...s,"config.json","config.json.bak"])}case"secret.cli.opencode":{let s=ye(K(r.env.get("XDG_DATA_HOME"),"~/.local/share",t,r,o),"opencode"),a=q(e).split("/").at(-1)??"",l=r.env.get("OPENCODE_DB")?.trim(),c=l&&l!==":memory:"?[l,`${l}-wal`,`${l}-shm`]:[];return H(e,s,["auth.json","mcp-auth.json"])||/^opencode(-.+)?\.db(-wal|-shm)?$/.test(a)&&H(e,s,[a])||c.some((u)=>Ur(e,u,t,r,o))}case"secret.cli.opencode.config":{let s=r.env.get("OPENCODE_CONFIG_DIR")?K(r.env.get("OPENCODE_CONFIG_DIR"),"~/.config/opencode",t,r,o):ye(K(r.env.get("XDG_CONFIG_HOME"),"~/.config",t,r,o),"opencode"),a=r.env.get("ProgramData")?[ye(K(r.env.get("ProgramData"),"",t,r,o),"opencode")]:[],l=["opencode.json","opencode.jsonc"],c=r.env.get("OPENCODE_CONFIG");return l.includes(q(e).split("/").at(-1)??"")||H(e,s,l)||(c?.trim()?Ur(e,c,t,r,o):!1)||["/Library/Application Support/opencode","/etc/opencode",...a].some((u)=>H(e,ut(u,t,r,o),l))}case"secret.cli.pi":return H(e,K(r.env.get("PI_CODING_AGENT_DIR"),"~/.pi/agent",t,r,o),["auth.json"]);case"secret.cli.pi.config":return H(e,K(r.env.get("PI_CODING_AGENT_DIR"),"~/.pi/agent",t,r,o),["models.json"]);case"secret.cli.amp":{let s=ut("~",t,r,o);return[ye(K(r.env.get("XDG_DATA_HOME"),"~/.local/share",t,r,o),"amp"),ye(s,".local","share","amp")].some((l)=>H(e,l,["secrets.json"]))||Hr(e,ye(s,".amp"),["oauth"])}case"secret.cli.amp.config":{let s=["settings.json","settings.jsonc"],a=[ye(K(r.env.get("XDG_CONFIG_HOME"),"~/.config",t,r,o),"amp"),ye(ut("~",t,r,o),".config","amp")],l=q(e).split("/"),c=r.env.get("AMP_SETTINGS_FILE");return a.some((u)=>H(e,u,s))||l.at(-2)===".amp"&&s.includes(l.at(-1)??"")||(c?.trim()?Ur(e,c,t,r,o):!1)}case"secret.cli.cursor":{let s=ye(K(r.env.get("XDG_CONFIG_HOME"),"~/.config",t,r,o),"cursor"),a=ye(K(r.env.get("CURSOR_DATA_DIR"),"~/.cursor",t,r,o),"projects");return H(e,ut("~/.cursor",t,r,o),["auth.json"])||H(e,s,["auth.json"])||q(e).split("/").at(-1)==="mcp-auth.json"&&pn(q(e),q(a))}case"secret.cli.cursor.config":{let s=q(e).split("/");return s.at(-1)==="mcp.json"&&s.at(-2)===".cursor"}case"secret.cli.grok-build":return H(e,K(r.env.get("GROK_HOME"),"~/.grok",t,r,o),["auth.json","mcp_credentials.json"]);case"secret.cli.grok-build.config":{let s=q(e).split("/");return s.at(-1)==="config.toml"&&s.at(-2)===".grok"||H(e,K(r.env.get("GROK_HOME"),"~/.grok",t,r,o),["config.toml","managed_config.toml","requirements.toml"])||H(e,ut("/etc/grok",t,r,o),["managed_config.toml","requirements.toml"])}default:return!1}})?.id??null}var qf=new WeakMap;function K(e,t,n,r,o){let i=qf.get(o)??new Map;qf.set(o,i);let s=`${n}\x00${e??""}\x00${t}`,a=i.get(s);if(a!==void 0)return a;let l=ut(e?.trim()?e:t,n,r,o);return i.set(s,l),l}function H(e,t,n){return n.some((r)=>ap(e,ye(t,r)))}function Hr(e,t,n){return n.some((r)=>pn(q(e),q(ye(t,r))))}function Ur(e,t,n,r,o){return ap(e,ut(t,n,r,o))}function ap(e,t){return q(e)===q(t)}function ye(e,...t){return it([e,...t].filter(Boolean).join("/"))}function yw(e,t,n,r,o,i){if(n.length===0)return!1;let s=q($r(e,t,o,i));return n.some((a)=>pn(s,q($r(a,r,o,i))))}function Cw(e,t,n,r,o,i){if(n.length===0)return!1;let s=q($r(e,t,o,i));if(!s)return!1;let a=o.env.get("HOME")??o.home,l=a?it(N(Me(a),o.paths,i)):"",c=q(l),u=o.env.get("CC_SAFETY_NET_HOME"),m=q(u?it(N(Oe.resolve(Me(u)),o.paths,i)):l&&it(N(`${l}/.cc-safety-net`,o.paths,i)));if(m&&pn(s,m))return!1;return n.some((d)=>{let f=q($r(d,r,o,i));if(!f)return!1;if(c&&(c===f||c.startsWith(f.endsWith("/")?f:`${f}/`)))return!1;return pn(s,f)})}function Sw(e){let t=e.split("/");return t.some((n)=>fw.has(n))||pw.some(([n,r])=>t.some((o,i)=>o===n&&t[i+1]===r))}function bw(e,t){let n=e.lastIndexOf("."),r=n>0&&n<e.length-1?e.slice(n+1):"";if(r==="")return null;for(let o of Ss)if(r===o.extension&&Et(o.id,t))return o.id;for(let o of bs)if(o.pattern.test(r)&&Et(o.id,t))return o.id;return null}function q(e){return e.toLowerCase()}function Et(e,t){return!t?.disabledRules?.includes(e)}function ut(e,t,n,r){let{home:o,normalized:i}=ml(e,n,r);if(!i)return"";if(!o)return i;let s=fl(i,o),a=Oe.isAbsolute(s)?s:it(Oe.resolve(t,s)),l=it(N(a,n.paths,r));if(!pn(l,o)){if(Oe.isAbsolute(s))return l;return l===a?i:l}let c=l.slice(o.length);return c?`~${c}`:"~"}function Yf(e,t){return e===t||e.startsWith(`${t}/`)}function vw(e,t,n,r){let{home:o,normalized:i}=ml(e,n,r);if(!i||!o)return"";let s=fl(i,o),a=Oe.posix.normalize(Oe.isAbsolute(s)?s:it(Oe.resolve(t,s))),l=it(Me(n.env.get("HOME")??n.home)),c=(d)=>process.platform==="win32"?d.toLowerCase():d,u=[o,l].find((d)=>d!==""&&pn(c(a),c(d)));if(u===void 0)return"";let m=a.slice(u.length);return m?`~${m}`:"~"}function $r(e,t,n,r){let{home:o,normalized:i}=ml(e,n,r);if(!i)return"";let s=o?fl(i,o):i;return it(N(Oe.isAbsolute(s)?s:Oe.resolve(t,s),n.paths,r))}function ml(e,t,n){let r=t.env.get("HOME")??t.home,o=r?it(N(Me(r),t.paths,n)):"",i=it(Me(Ew(yt(e,t))));return{home:o,normalized:i}}function Ew(e){if(!e.trim().toLowerCase().startsWith("file:"))return e;try{return Zf.fileURLToPath(e)}catch{return e}}function fl(e,t){if(e==="~")return t;if(e.startsWith("~/"))return ye(t,e.slice(2));return e}function Rw(e){if(process.platform==="win32")return!0;return Oe.win32.parse(e).root.length>1}function it(e){let t=e.trim(),n=(t.includes("\\")&&Rw(t)?t.replace(/\\/g,"/"):t).replace(/\/{2,}/g,"/").replace(/^\.\//,"");if(n==="/")return n;return n.replace(/\/+$/g,"")}function pn(e,t){return e===t||e.startsWith(t.endsWith("/")?t:`${t}/`)}function xt(e){return e.split(/[\\/]/).pop()?.replace(/\.exe$/i,"")??e}class gn extends Error{stage;evaluation;name="GuardEvaluationError";constructor(e,t,n){super(`CC Safety Net ${e} dependency failed`,{cause:n});this.stage=e;this.evaluation=t}}var xw={findPolicyMutation:Ff,findGitMetadataMutation:yd,resolveGitMetadata:_w,loadPolicySnapshot:cu,findSensitiveTarget:tp,analyzeCommand:Tf,getModes:es};function lp(e,t){let n={...xw,...t.dependencies},r=Pw(e),o=jr(e)?e.command:r,i=Ut("policy-protection",o,()=>Rr(e,t.factParserDependencies)),s=Ee(i,"input-candidate"),a=Ee(i,"declared-command");if(jr(e)&&e.command?.trim()&&a?.program.status==="limited")return{stage:"command-analysis",decision:{kind:"deny",reason:st,intent:"stop_and_explain",evidence:[{kind:"command",command:e.command,segment:e.command}]}};if(s?.program.status==="limited")return{stage:"command-validation",decision:{kind:"deny",reason:Md,intent:"stop_and_explain",evidence:[]}};let l=me(),c=Ut("policy-protection",o,()=>n.resolveGitMetadata([e.context.executionCwd,e.context.configCwd],t.environment)),u=Ut("policy-protection",o,()=>n.findPolicyMutation(i,t.environment,l));if(u){let E=o??u.target;return{stage:"policy-protection",decision:{kind:"deny",reason:Wf,intent:"hard_stop",evidence:[{kind:"command",command:E,segment:u.target}]}}}let m=Ut("policy-protection",o,()=>Mf(i,t.environment,l));if(m){let E=o??m.target;return{stage:"policy-protection",decision:{kind:"deny",reason:Of,intent:"hard_stop",evidence:[{kind:"command",command:E,segment:m.target}]}}}let d=Ut("policy-protection",o,()=>n.findGitMetadataMutation(i,c,t.environment,l));if(d){let E=o??d.target;return{stage:"policy-protection",decision:{kind:"deny",reason:$e,intent:"hard_stop",evidence:[{kind:"command",command:E,segment:d.target}]}}}let f=Ut("config-load",o,()=>n.loadPolicySnapshot(t.environment,{...t.policyOptions,cwd:e.context.configCwd})),p=f.policy,h=n.getModes(p,t.environment.env),g={level:h.effectiveLevel,...ww(f)},y=p.secretProtection.enabled===!1?null:Ut("secret-protection",o,()=>n.findSensitiveTarget(i,p.secretProtection,t.environment,l,{strict:jr(e)||s?.program.dialect==="powershell"?h.strict:void 0}));if(y){let E=o??y.target;return{stage:"secret-protection",...g,decision:{kind:"deny",reason:Xf,intent:"hard_stop",ruleId:y.ruleId,evidence:[{kind:"command",command:E,segment:y.target}]}}}if(!jr(e))return{stage:"non-command",...g,decision:{kind:"allow"}};if(!e.command||e.command.trim()==="")return{...pl("command-validation",o),...g};let v=Ut("command-analysis",o,()=>If(()=>n.analyzeCommand(e.command,{cwd:e.context.executionCwd,shell:e.route.shell,policySnapshot:f,environment:t.environment,protectedGitMetadata:c,effectiveCapabilities:h.capabilities,strict:h.strict,paranoidRm:h.paranoidRm,paranoidInterpreters:h.paranoidInterpreters,worktreeMode:h.worktreeMode,budget:l,...t.trace?{trace:t.trace}:{}},Aw(i),i.store),e.command,t.trace));if(v.decision)return{stage:"command-analysis",...g,..."errorCode"in v?{errorCode:v.errorCode}:{},decision:v.decision};return{stage:"command-analysis",...g,decision:{kind:"allow"}}}function _w(e,t){let n=[...new Set(e.filter((r)=>typeof r==="string"&&r!==""))].flatMap((r)=>t.gitMetadata(r)??[]);if(n.length===0)return null;return Object.freeze({entries:Object.freeze([...new Set(n.flatMap((r)=>r.entries))]),markerFiles:Object.freeze([...new Set(n.flatMap((r)=>r.markerFiles))]),directories:Object.freeze([...new Set(n.flatMap((r)=>r.directories))]),hooksDirectories:Object.freeze([...new Set(n.flatMap((r)=>r.hooksDirectories))])})}function ww(e){if(e.state==="ready")return{};return{configFallback:{reason:e.reason}}}function Aw(e){return Ee(e,"declared-command")?.program}function Pw(e){try{return At(e.input)}catch(t){let n=jr(e)?e.command:void 0;throw new gn("policy-protection",pl("policy-protection",t instanceof Se?void 0:n,t),t)}}function Ut(e,t,n){try{return n()}catch(r){throw new gn(e,pl(e,r instanceof Se?void 0:t,r),r)}}function pl(e,t,n){let r=n instanceof D||n instanceof Qe;return{stage:e,decision:{kind:"deny",reason:r?zi:Kn,intent:"stop_and_explain",evidence:t?[{kind:"command",command:t,segment:t}]:[]}}}function jr(e){return e.route.kind==="command"}var Oi=require("node:fs"),$n=require("node:path");var ce=require("node:fs"),Un=require("node:path");function cp(e,t={}){return Eo(Rn(e,t),e.home).policy.audit.retention_days}var hl=86400000,Tw=".last-prune",Iw=/^\d{4}-\d{2}$/,kw=/^((\d{4}-\d{2})-\d{2})-.+\.jsonl$/,up=(e)=>Math.floor(e/hl);function mp(e,t,n=()=>new Date){try{let r=n().getTime();if(!ce.statSync(t,{throwIfNoEntry:!1})?.isDirectory())return;let o=Un.join(t,Tw),i=ce.statSync(o,{throwIfNoEntry:!1})?.mtimeMs;if(i!==void 0&&up(i)===up(r))return;let s=r-cp(e)*hl,a=new Date(r).toISOString().slice(0,7);for(let l of gl(t)){if(l.isDirectory()){Ow(Un.join(t,l.name),s,a);continue}if(l.isFile()&&l.name.endsWith(".jsonl"))Mw(Un.join(t,l.name),s)}ce.writeFileSync(o,"",{mode:384}),ce.utimesSync(o,r/1000,r/1000)}catch{}}function Ow(e,t,n){for(let r of gl(e)){if(!r.isDirectory()||!Iw.test(r.name))continue;let o=Un.join(e,r.name);for(let i of gl(o)){if(!i.isFile())continue;let s=kw.exec(i.name);if(!s||s[2]!==r.name)continue;let a=Date.parse(`${s[1]}T00:00:00.000Z`)+hl;if(!Number.isFinite(a)||a>=t)continue;fp(Un.join(o,i.name))}if(r.name!==n)dp(o)}dp(e)}function Mw(e,t){try{let n=ce.lstatSync(e);if(n.mtimeMs>=t)return;let r=ce.readFileSync(e,"utf-8").split(`
49
+ `).filter((o)=>o.trim()).map(Dw);if(r.length===0)return;if(r.some((o)=>o===void 0||o>=t))return;if(ce.lstatSync(e).mtimeMs!==n.mtimeMs)return;fp(e)}catch{}}function Dw(e){try{let t=JSON.parse(e).ts,n=typeof t==="string"?Date.parse(t):Number.NaN;return Number.isFinite(n)?n:void 0}catch{return}}function gl(e){try{return ce.readdirSync(e,{withFileTypes:!0,encoding:"utf8"})}catch{return[]}}function fp(e){try{ce.unlinkSync(e)}catch{}}function dp(e){try{ce.rmdirSync(e)}catch{}}var Nw="2.4.0",Lw=1e4,Ww=2000,Fw=256,Gw=32768;function zw(e){let t=e.trim();if(!t)return null;let n=t.replace(/[^A-Za-z0-9_.-]+/g,"_");if(n=n.replace(/^[._-]+|[._-]+$/g,"").slice(0,128),!n||n==="."||n==="..")return null;return n}function Bw(e){return(e??"").replace(/[^A-Za-z0-9]/g,"-").slice(0,180)||"no-cwd"}function yl(e,t,n,r,o,i,s={}){let a=zw(t);if(!a)return;let l=Uw(e);if(!l)return;try{let c=(s.now??(()=>new Date))().toISOString(),u=ki(_t(n),s.failureStage?Number.POSITIVE_INFINITY:Lw),m=ki(_t(r),Ww),d=s.toolName?ki(_t(s.toolName),Fw):void 0,f=i===null?void 0:ki(_t(i),Gw),p=$n.join(l,Bw(f?.value??null),c.slice(0,7));Oi.mkdirSync(p,{recursive:!0,mode:448});let h=$n.join(p,`${c.slice(0,10)}-${a}.jsonl`),g={ts:c,id:(s.createId??ns)(),v:Nw,sessionId:a,decision:s.decision??"deny",agent:s.agent,shape:s.shape,level:s.level,configFallback:s.configFallback,toolName:d?.value,command:u.value,segment:m.value,...u.truncated||m.truncated||d?.truncated||f?.truncated?{truncated:!0}:{},reason:o,ruleId:s.ruleId,intent:s.intent,failureStage:s.failureStage,errorCode:s.errorCode,cwd:f?.value??null};Oi.appendFileSync(h,`${JSON.stringify(g)}
50
+ `,{encoding:"utf-8",mode:384}),mp(e,l,s.now)}catch{}}function ki(e,t){return{value:e.slice(0,t),truncated:e.length>t}}function Hw(e){let t=e.env.get("CC_SAFETY_NET_AUDIT_HOME");if(e.env.get("NODE_ENV")==="test"&&!t)return null;let n=t||e.home;return n&&$n.isAbsolute(n)?n:null}function Uw(e){let t=Hw(e);return t?$n.join(t,".cc-safety-net","logs"):null}function gp(e,t,n,r=!0,o){if(t.decision.kind==="allow"){if(!n||e.route.kind!=="command")return;let a=pp(e);return{decision:"allow",command:a,segment:a,reason:"allowed",cwd:e.context.executionCwd,toolName:e.toolName,level:t.level,...t.configFallback?{configFallback:!0}:{}}}let i=t.decision.evidence.find((a)=>a.kind==="command"),s=i?.command??(r?pp(e):"");return{decision:"deny",command:s,segment:i?.segment??s,reason:t.decision.reason,cwd:e.context.executionCwd,toolName:e.toolName,level:t.level,...t.configFallback?{configFallback:!0}:{},ruleId:t.decision.ruleId,intent:t.decision.intent,failureStage:o?.stage,errorCode:o?.errorCode}}function pp(e){return"command"in e?e.command??"":""}function hp(e,t,n,r){if(!t)return;let o;try{o=n()}catch{return}if(typeof o!=="string"||!o.trim())return;yl(e,o,t.command,t.segment,t.reason,t.cwd,{decision:t.decision,agent:r.agent,shape:r.shape,level:t.level,configFallback:t.configFallback,toolName:t.toolName,ruleId:t.ruleId,intent:t.intent,failureStage:t.failureStage,errorCode:t.errorCode})}function yp(e,t,n,r){let o;try{o=n()}catch{return}if(typeof o!=="string"||!o.trim())return;yl(e,o,t.command??"",t.segment??t.command??"",t.reason,r.cwd??null,{decision:"deny",agent:r.agent,shape:r.shape,toolName:r.toolName??t.toolName,ruleId:t.ruleId,intent:t.intent})}function Sp(e,t,n){try{let r=lp(t,{environment:e,...n.guard});return Cp(e,t,r,n),r}catch(r){if(!(r instanceof gn))throw r;throw Cp(e,t,r.evaluation,n,!(r.cause instanceof Se),{stage:r.stage,errorCode:$w(r.cause)}),r}}function Cp(e,t,n,r,o=!0,i){hp(e,gp(t,n,r.guard?.auditAllowed??!1,o,i),r.audit.getSessionId,{agent:r.audit.agent,shape:r.audit.shape})}function $w(e){if(e instanceof D)return P[e.kind].errorCode;if(e instanceof Se)return"tool-input-limit";if(e instanceof Qe)return"structural-shell-syntax-limit";return"unexpected-error"}var Mi=(e,t,n,r,o)=>Pt(e.cwd,t,n,r,o.paths,process.cwd());function jw(e,t){console.log(JSON.stringify(e(_l(t))))}async function Vw(e){let t;try{t=(await Vl(process.stdin)).trim()}catch{e({reason:"Failed to parse hook input JSON."});return}if(!t){e({reason:"Missing hook input JSON."});return}return eo(t,e,"Failed to parse hook input JSON.")}async function Kw(e){let t=nc(),n=await Vw(e.outputDeny);if(n===void 0)return;if(!n||typeof n!=="object"||Array.isArray(n)){ne(e.outputDeny);return}if(!e.isSupported(n))return;let r=e.getAgent?.(n,t)??e.agent,o=e.agent===r?void 0:e.agent,i=Xw(n),s=(p,h)=>{yp(t,p,()=>e.getSessionId(n),{agent:r,shape:o,toolName:h,cwd:i}),e.outputDeny(p)},a=e.getToolName(n);if(typeof a!=="string"||a.trim()===""){ne((p)=>s(p),Zw(n));return}let l=a,c=(p)=>s(p,l),u;try{u=e.getToolInput(n,l,c,t)}catch(p){if(!(p instanceof Se))throw p;ne(c,void 0,l);return}if(!u.ok)return;let m=e.getContext(n,u.input,l,c,t);if(!m)return;let d;try{d=At(u.input)}catch(p){if(!(p instanceof Se))throw p;ne(c,void 0,l);return}let f=Xn(l,u.input,u.route,m,d??null);try{let p=Sp(t,f,{guard:{auditAllowed:rc(t.env),dependencies:e.guardDependencies},audit:{agent:r,shape:o,getSessionId:()=>e.getSessionId(n)}}),h=Bi(p,{includeEvidence:!0,toolName:p.stage==="command-analysis"?void 0:l});if(h){e.outputDeny(h);return}e.outputAllow?.()}catch(p){if(!(p instanceof gn))throw p;qw(p,t.env);let h=Bi(p.evaluation,{includeEvidence:!0,toolName:p.evaluation.stage==="command-analysis"?void 0:l});if(h)e.outputDeny(h);return}}function qw(e,t){if(!Vt(le.debug,t))return;console.error(`CC Safety Net debug: ${Yw(e.stage)}: ${wl(e.cause)}`)}function Yw(e){if(e==="policy-protection")return"hook policy protection failed";if(e==="config-load")return"hook config loading failed";if(e==="secret-protection")return"hook secret protection failed";return"hook analysis failed"}function Zw(e){if(!e||typeof e!=="object"||Array.isArray(e))return;if(Object.hasOwn(e,"tool_input"))return e.tool_input;let t=e.toolCall;if(t&&typeof t==="object"&&!Array.isArray(t))return t.args;return}function Xw(e){if(!e||typeof e!=="object"||Array.isArray(e))return null;let t=e.cwd;if(typeof t==="string")return t;let n=e.toolCall;if(!n||typeof n!=="object"||Array.isArray(n))return null;let r=n.args;if(!r||typeof r!=="object"||Array.isArray(r))return null;let o=r.Cwd;return typeof o==="string"?o:null}async function Ce(e){let t=(o)=>jw(e.createDenyOutput,o),n=e.createAllowOutput,r=n?()=>console.log(JSON.stringify(n())):void 0;try{await Kw({...e,outputDeny:t,outputAllow:r})}catch(o){console.error("CC Safety Net error:",o),t(Sn())}}var Jw=new Map([["run_command","auto"]]),Qw=new Set(["absolutepath","directorypath","file_path","filepath","path","searchdirectory","searchpath","target_file","targetfile"]);function bp(e){return ae(e,Jw)}async function vp(){await Ce({agent:"antigravity-cli",createDenyOutput:(e)=>({decision:"deny",reason:e}),isSupported:()=>!0,getToolName:(e)=>e.toolCall?.name,getToolInput:(e,t)=>({ok:!0,input:oA(e.toolCall?.args,t),route:bp(t)}),getContext:eA,getSessionId:(e)=>e.conversationId})}function eA(e,t,n,r,o){let s=rA(e,o.paths).flatMap((u)=>{let m=lt([u],o.paths);return m?[m]:[]});if(!s[0])return hn(r,t,n),null;if(n!=="run_command"){let u;try{u=tA(t,n,s,o.paths)}catch(m){if(m instanceof Se)return hn(r,void 0,n),null;if(!(m instanceof D))throw m;return hn(r,t,n),null}if(!u)return hn(r,t,n),null;return{configCwd:u,executionCwd:u}}let a=e.toolCall?.args;if(!a||!Object.hasOwn(a,"Cwd"))return{configCwd:s[0],executionCwd:s[0]};let l=a.Cwd;if(typeof l!=="string"||l.trim()==="")return hn(r,t,n),null;let c=ft(l,s,o.paths);if(c){let u=Ep(c,s);if(!u)return hn(r,t,n,l),null;return{configCwd:u,executionCwd:c}}return hn(r,t,n,l),null}function tA(e,t,n,r){let o=bp(t),i=[...Jr(e,Qw),...o.kind==="patch"?Qr(e):[]].filter(jn.isAbsolute),s=me(),a=new Set(i.flatMap((l)=>{let c=Ep(N(l,r,s),n);return c?[c]:[]}));if(a.size>1)return null;return[...a][0]??n[0]??null}function Ep(e,t){return t.filter((n)=>nA(e,n)).reduce((n,r)=>r.length>n.length?r:n,"")||null}function nA(e,t){let n=jn.relative(t,e);return n===""||!n.startsWith("..")&&!jn.isAbsolute(n)}function hn(e,t,n,r){let o=t&&typeof t==="object"?t.command:void 0;e(Sn({command:typeof o==="string"?o:void 0,segment:r,toolName:n}))}function rA(e,t){if(e.workspacePaths===void 0)return[process.cwd()];let n=Array.isArray(e.workspacePaths)?e.workspacePaths.filter((r)=>typeof r==="string"&&r.trim()!==""):[];return lt(n,t)?n:[]}function oA(e,t){if(!e)return;if(t!=="run_command")return e;return{...e,command:typeof e.CommandLine==="string"&&e.CommandLine!==""?e.CommandLine:void 0}}var Di=[{id:"antigravity-cli",displayName:"Antigravity CLI",doctorOrder:3,runtime:{order:1,flags:["-ac","--agy-cli"],description:"Run as Antigravity CLI PreToolUse hook",legacyTopLevelFlags:[]},install:{order:2,flag:"--agy-cli",artifactKind:"hook config",probeCommand:["agy","--version"]}},{id:"claude-code",displayName:"Claude Code",doctorOrder:1,runtime:{order:2,displayName:"Coding CLI",flags:["-cc","--coding-cli"],legacyFlags:["--claude-code"],description:"Run as Coding CLI PreToolUse hook",legacyTopLevelFlags:["-cc","--claude-code"]},install:{order:3,flag:"--claude-code",artifactKind:"plugin",probeCommand:["claude","--version"]}},{id:"codex",displayName:"Codex",doctorOrder:4,runtime:{order:3,flags:["-cx","--codex"],description:"Run as a Codex PreToolUse hook",legacyTopLevelFlags:[]},install:{order:4,flag:"--codex",artifactKind:"plugin",probeCommand:["codex","--version"]}},{id:"copilot-cli",displayName:"GitHub Copilot CLI",doctorOrder:7,runtime:{order:6,flags:["-cp","--copilot-cli"],description:"Run as GitHub Copilot CLI PreToolUse hook",legacyTopLevelFlags:["-cp","--copilot-cli"]},install:{order:7,flag:"--copilot-cli",artifactKind:"plugin",probeCommand:["copilot","--binary-version"]}},{id:"gemini-cli",displayName:"Gemini CLI",doctorOrder:6,runtime:{order:5,flags:["-gc","--gemini-cli"],description:"Run as Gemini CLI BeforeTool hook",legacyTopLevelFlags:["-gc","--gemini-cli"]},install:{order:6,flag:"--gemini-cli",artifactKind:"extension",probeCommand:["gemini","--version"]}},{id:"grok-build",displayName:"Grok Build",doctorOrder:8,runtime:{order:7,flags:["-gb","--grok-build"],description:"Run as Grok Build PreToolUse hook",legacyTopLevelFlags:[]},install:{order:8,flag:"--grok-build",artifactKind:"hook config",probeCommand:["grok","--version"]}},{id:"hermes-agent",displayName:"Hermes Agent",doctorOrder:9,runtime:{order:8,flags:["-ha","--hermes-agent"],description:"Run as Hermes Agent pre_tool_call hook",legacyTopLevelFlags:[]},install:{order:9,flag:"--hermes-agent",artifactKind:"plugin",probeCommand:["hermes","--version"]}},{id:"kimi-code",displayName:"Kimi Code",doctorOrder:10,runtime:{order:9,flags:["-kc","--kimi-code"],description:"Run as Kimi Code PreToolUse hook",legacyTopLevelFlags:[]},install:{order:10,flag:"--kimi-code",artifactKind:"hook config",probeCommand:["kimi","--version"]}},{id:"openclaw",displayName:"OpenClaw",doctorOrder:11,install:{order:11,flag:"--openclaw",artifactKind:"plugin",probeCommand:["openclaw","--version"]}},{id:"opencode",displayName:"OpenCode",doctorOrder:12,install:{order:12,flag:"--opencode",artifactKind:"plugin",probeCommand:["opencode","--version"]}},{id:"pi",displayName:"Pi",doctorOrder:13,install:{order:13,flag:"--pi",artifactKind:"package",probeCommand:["pi","--version"]}},{id:"cursor",displayName:"Cursor",doctorOrder:5,runtime:{order:4,flags:["-cu","--cursor"],description:"Run as Cursor preToolUse hook",legacyTopLevelFlags:[]},install:{order:5,flag:"--cursor",artifactKind:"hook config",probeCommand:["cursor","--version"]}},{id:"amp",displayName:"Amp Code",doctorOrder:2,install:{order:1,flag:"--amp",artifactKind:"plugin",probeCommand:["amp","--version"]}}],LN=Di.slice().sort((e,t)=>e.doctorOrder-t.doctorOrder).map((e)=>e.id),Rp=Di.filter((e)=>("runtime"in e)).slice().sort((e,t)=>e.runtime.order-t.runtime.order).map((e)=>({id:e.id,displayName:"displayName"in e.runtime?e.runtime.displayName:e.displayName,flags:e.runtime.flags,legacyFlags:"legacyFlags"in e.runtime?e.runtime.legacyFlags:[],description:e.runtime.description,legacyTopLevelFlags:e.runtime.legacyTopLevelFlags})),WN=Di.slice().sort((e,t)=>e.install.order-t.install.order).map((e)=>({id:e.id,...e.install})).map(({order:e,...t})=>t),FN=Object.fromEntries(Di.map((e)=>[e.id,e.displayName]));var yn=require("node:path");function xp(e,t){if(e!==void 0&&e!==null&&typeof e!=="string")return"unknown";if(typeof e==="string"&&!yn.isAbsolute(e))return"unknown";try{let n=me(),r=typeof e==="string"&&e?N(e,t.paths,n):void 0,o=t.home,i=[["codex",t.env.get("CODEX_HOME")||yn.join(o,".codex")],["copilot-cli",t.env.get("COPILOT_HOME")||yn.join(o,".copilot")],["claude-code",t.env.get("CLAUDE_CONFIG_DIR")||yn.join(o,".claude")]],s=r?i.flatMap(([a,l])=>{if(!yn.isAbsolute(l))return[];return Zi(r,N(l,t.paths,n))?[a]:[]}):[];if(s.length===1)return s[0]??"unknown";if(s.length>1)return"unknown"}catch(n){if(n instanceof D)return"unknown";return"unknown"}if(t.env.get("CLAUDECODE")==="1"||Boolean(t.env.get("CLAUDE_CODE_ENTRYPOINT")))return"claude-code";return"unknown"}var Cl="PreToolUse",_p="BeforeTool",wp="pre_tool_call",Sl="PreToolUse";async function Ni(e){await Ce({agent:e.agent,...e.getAgent?{getAgent:e.getAgent}:{},createDenyOutput:(t)=>({hookSpecificOutput:{hookEventName:Cl,permissionDecision:"deny",permissionDecisionReason:t}}),isSupported:(t)=>t.hook_event_name===Cl,getToolName:(t)=>t.tool_name,getToolInput:(t,n)=>({ok:!0,input:t.tool_input,route:e.getToolRoute(n)}),getContext:Mi,getSessionId:(t)=>t.session_id})}var iA=new Map([["Bash","posix"],["PowerShell","powershell"]]);function sA(e){return ae(e,iA)}async function Ap(){await Ni({agent:"claude-code",getAgent:(e,t)=>xp(e.transcript_path,t),getToolRoute:sA})}var aA=new Map([["Bash","auto"]]);async function Pp(){await Ni({agent:"codex",getToolRoute:(e)=>ae(e,aA)})}var lA=new Map([["bash","auto"],["Bash","auto"],["powershell","powershell"],["PowerShell","powershell"]]);function cA(e){return ae(e,lA)}async function Tp(){await Ce({agent:"copilot-cli",createDenyOutput:(e)=>({permissionDecision:"deny",permissionDecisionReason:e}),isSupported:()=>!0,getToolName:(e)=>e.toolName,getToolInput:(e,t,n)=>{if(typeof e.toolArgs!=="string")return n({reason:"Failed to parse toolArgs JSON."}),{ok:!1};let r=eo(e.toolArgs,n,"Failed to parse toolArgs JSON.");if(r===void 0)return{ok:!1};return{ok:!0,input:r,route:cA(t)}},getContext:(e,t,n,r,o)=>Pt(e.cwd,t,n,r,o.paths,process.cwd()),getSessionId:(e)=>typeof e.sessionId==="string"&&e.sessionId.trim()?e.sessionId:void 0})}var uA=new Map([["Shell","auto"]]);function dA(e){return ae(e,uA)}async function Ip(){await Ce({agent:"cursor",createDenyOutput:(e)=>({permission:"deny",user_message:e,agent_message:e}),createAllowOutput:()=>({permission:"allow"}),isSupported:()=>!0,getToolName:(e)=>e.tool_name,getToolInput:(e,t)=>({ok:!0,input:e.tool_input,route:dA(t)}),getContext:mA,getSessionId:(e)=>e.conversation_id})}function mA(e,t,n,r,o){let i=fA(e,o.paths);if(!i[0])return ne(r,t,n),null;let s=ft(gA(e.cwd),i,o.paths);if(!s)return ne(r,t,n,typeof e.cwd==="string"?e.cwd:void 0),null;if(t===null||typeof t!=="object"||Array.isArray(t))return{configCwd:s,executionCwd:s};if(!Object.hasOwn(t,"working_directory"))return{configCwd:s,executionCwd:s};let a=t.working_directory;if(typeof a!=="string"||a.trim()==="")return ne(r,t,n),null;let l=ft(a,i,o.paths);if(!l)return ne(r,t,n,a),null;return{configCwd:s,executionCwd:l}}function fA(e,t){return pA(e).flatMap((n)=>{let r=lt([n],t);return r?[r]:[]})}function pA(e){if(e.workspace_roots===void 0)return typeof e.cwd==="string"&&e.cwd.trim()!==""?[e.cwd]:[];if(!Array.isArray(e.workspace_roots))return[];return e.workspace_roots.filter((t)=>typeof t==="string"&&t.trim()!=="")}function gA(e){return typeof e==="string"&&e.trim()!==""?e:"."}var hA=new Map([["run_shell_command","auto"]]);function yA(e){return ae(e,hA)}async function kp(){await Ce({agent:"gemini-cli",createDenyOutput:(e)=>({decision:"deny",reason:e,systemMessage:e}),isSupported:(e)=>e.hook_event_name===_p,getToolName:(e)=>e.tool_name,getToolInput:(e,t)=>({ok:!0,input:e.tool_input,route:yA(t)}),getContext:Mi,getSessionId:(e)=>e.session_id})}var CA=new Map([["run_terminal_command","auto"]]);function SA(e){return ae(e,CA)}async function Op(){await Ce({agent:"grok-build",createDenyOutput:(e)=>({decision:"deny",reason:e}),createAllowOutput:()=>({decision:"allow"}),isSupported:()=>!0,getToolName:(e)=>e.toolName,getToolInput:(e,t,n)=>{if(e.toolInputTruncated===!0)return ne(n,e.toolInput,t),{ok:!1};return{ok:!0,input:e.toolInput,route:SA(t)}},getContext:bA,getSessionId:(e)=>e.sessionId})}function bA(e,t,n,r,o){let i=lt(vA(e),o.paths);if(!i)return ne(r,t,n),null;let s=ft(EA(e.cwd),[i],o.paths);if(!s)return ne(r,t,n,typeof e.cwd==="string"?e.cwd:void 0),null;return{configCwd:s,executionCwd:s}}function vA(e){let t=e.workspaceRoot===void 0?e.cwd:e.workspaceRoot;return typeof t==="string"&&t.trim()!==""?[t]:[]}function EA(e){return typeof e==="string"&&e.trim()!==""?e:"."}var Mp=require("node:path");var RA=new Map([["terminal","posix"]]);async function Dp(){await Ce({agent:"hermes-agent",createDenyOutput:(e)=>({action:"block",message:e}),isSupported:(e)=>e.hook_event_name===wp,getToolName:(e)=>e.tool_name,getToolInput:(e,t)=>({ok:!0,input:e.tool_input,route:ae(t,RA)}),getContext:xA,getSessionId:(e)=>e.session_id})}function xA(e,t,n,r,o){let i=Pt(e.cwd,t,n,r,o.paths,process.cwd());if(!i)return null;if(!t||typeof t!=="object"||Array.isArray(t))return i;if(!Object.hasOwn(t,"workdir"))return i;let s=t.workdir;if(typeof s!=="string"||s.trim()==="")return ne(r,t,n),null;let a=lt([Mp.resolve(i.configCwd,s)],o.paths);if(!a)return ne(r,t,n,s),null;return{...i,executionCwd:a}}var Np=new Map([["Bash","posix"]]);function _A(e){return ae(e,Np)}async function Lp(){await Ce({agent:"kimi-code",createDenyOutput:(e)=>({hookSpecificOutput:{hookEventName:Sl,permissionDecision:"deny",permissionDecisionReason:e}}),isSupported:(e)=>e.hook_event_name===Sl,getToolName:(e)=>e.tool_name,getToolInput:(e,t)=>({ok:!0,input:e.tool_input,route:_A(t)}),getContext:(e,t,n,r,o)=>{let i=Pt(e.cwd,t,n,r,o.paths,process.cwd());if(!i)return null;let s=e.tool_input;if(!Np.has(n)||!s||!Object.hasOwn(s,"cwd"))return i;let a=s.cwd;if(typeof a!=="string"||a.trim()==="")return ne(r,t,n),null;let l=ft(a,[i.configCwd],o.paths);if(!l)return ne(r,t,n,a),null;return{configCwd:i.configCwd,executionCwd:l}},getSessionId:(e)=>e.session_id})}var wA={"antigravity-cli":vp,"claude-code":Ap,codex:Pp,"copilot-cli":Tp,cursor:Ip,"gemini-cli":kp,"grok-build":Op,"hermes-agent":Dp,"kimi-code":Lp},bl=Rp.map((e)=>({...e,run:wA[e.id]}));function Wp(e){let t=Kr({label:"hook",booleans:Object.fromEntries(bl.map((r)=>[r.id,[...r.flags,...r.legacyFlags]]))},e);if(t.errors.length>0)return;let n=bl.filter((r)=>t.flags[r.id]);return n.length===1?n[0]:void 0}function Fp(e){return bl.find((t)=>t.legacyTopLevelFlags.some((n)=>n===e))}async function AA(){let e=process.argv.slice(2),t=e[0],n=Kr({label:"cc-safety-net",booleans:{version:["-V","--version"]},positionals:"list"},e);if(!n.help&&!n.flags.version){if(t?.toLowerCase()==="hook"){let i=Wp(e.slice(1));if(i){await i.run();return}}let o=Fp(t);if(o){await o.run();return}}let r=await import("../cli.js");await r.runCli(e)}AA().catch((e)=>{console.error("CC Safety Net error:",e),process.exit(1)});