@tokmizer/plugin 1.1.1 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/README.md +3 -1
- package/dist/bin/tkr-agent-hook.js +13 -13
- package/dist/bin/tkr-codex-hook.js +74 -74
- package/dist/bin/tkr-context-hook.js +1 -1
- package/dist/bin/tkr-copilot-hook.js +12 -12
- package/dist/bin/tkr-crush-hook.js +12 -12
- package/dist/bin/tkr-cursor-hook.js +12 -12
- package/dist/bin/tkr-daemon.js +131 -131
- package/dist/bin/tkr-droid-hook.js +12 -12
- package/dist/bin/tkr-exec +74 -74
- package/dist/bin/tkr-exec.js +74 -74
- package/dist/bin/tkr-gemini-hook.js +12 -12
- package/dist/bin/tkr-grok-hook.js +12 -12
- package/dist/bin/tkr-junie-hook.js +12 -12
- package/dist/bin/tkr-processor.js +103 -103
- package/dist/bin/tkr-qwen-hook.js +12 -12
- package/dist/bin/tkr-shim.js +66 -66
- package/dist/bin/tkr-trae-hook.js +12 -12
- package/dist/bin/tkr-zcode-hook.js +12 -12
- package/dist/bin/tkr.js +275 -260
- package/dist/hooks-host/post-tool-use.js +88 -88
- package/dist/hooks-host/pre-tool-use.js +13 -13
- package/dist/hooks-host/reducer-prompt-submit.js +1 -1
- package/dist/hooks-host/reducer-session-start.js +1 -1
- package/dist/hooks-host/reducer-stop.js +1 -1
- package/dist/hooks-host/session-recap.js +7 -5
- package/dist/index.js +46 -46
- package/dist/native/manifest.json +12 -12
- package/dist/native/single.json +12 -12
- package/dist/native/tkr-exec-darwin-arm64 +0 -0
- package/dist/native/tkr-exec-darwin-x64 +0 -0
- package/dist/native/tkr-exec-linux-arm64 +0 -0
- package/dist/native/tkr-exec-linux-x64 +0 -0
- package/dist/native/tkr-exec-win32-arm64.exe +0 -0
- package/dist/native/tkr-exec-win32-x64.exe +0 -0
- package/package.json +7 -7
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { createRequire as __tkrCreateRequire } from "node:module"; const require = __tkrCreateRequire(import.meta.url);
|
|
2
|
-
function
|
|
3
|
-
`).filter(u=>u.trim()!==""),o=[],i=0;for(let u=r.length-1;u>=0;u-=1){let l=r[u],a=Buffer.byteLength(l)+1;if(i+a>n)break;o.push(l),i+=a}o.reverse();let s=`${e}.tmp-${process.pid}`;
|
|
2
|
+
function F(e=3e3){return new Promise(t=>{let n=[],r=process.stdin,o=!1,i=()=>{o||(o=!0,clearTimeout(u),r.off("data",s),r.pause(),r.unref?.(),t(Buffer.concat(n).toString("utf8")))},s=l=>{n.push(Buffer.isBuffer(l)?l:Buffer.from(l))},u=setTimeout(i,e);r.on("data",s).once("end",i).once("error",i),r.resume()})}import{realpathSync as Ve}from"node:fs";import{fileURLToPath as un,pathToFileURL as ln}from"node:url";var Ke=null;function qe(e,t,n){if(n!==void 0&&Ke===n)return!0;if(Ke!==null||!e)return!1;if(t===ln(e).href)return!0;try{return Ve(e)===Ve(un(t))}catch{return!1}}import{appendFileSync as gn,chmodSync as hn,mkdirSync as kn,existsSync as _n,readFileSync as Gi,rmSync as Zi}from"node:fs";import{dirname as bn,join as wn}from"node:path";import an from"node:os";import{join as cn}from"node:path";function $(){return process.env.TOKMIZER_HOME||cn(an.homedir(),".tokmizer")}import{readFileSync as fn,renameSync as dn,statSync as pn,writeFileSync as mn}from"node:fs";function Ye(e,t,n){try{if(pn(e).size<=t)return;let r=fn(e,"utf8").split(`
|
|
3
|
+
`).filter(u=>u.trim()!==""),o=[],i=0;for(let u=r.length-1;u>=0;u-=1){let l=r[u],a=Buffer.byteLength(l)+1;if(i+a>n)break;o.push(l),i+=a}o.reverse();let s=`${e}.tmp-${process.pid}`;mn(s,o.length?`${o.join(`
|
|
4
4
|
`)}
|
|
5
|
-
`:"",{mode:384}),
|
|
6
|
-
`,{mode:384}),
|
|
7
|
-
`)}function
|
|
5
|
+
`:"",{mode:384}),dn(s,e)}catch{}}var yn="usage.jsonl";var Xe=2*1024*1024;function Sn(){return wn($(),yn)}function y(e,t,n=Sn()){try{let r=bn(n);_n(r)||kn(r,{recursive:!0,mode:448});let o=e.replace(/[^A-Za-z0-9._-]/g,"").slice(0,64)||"unknown";gn(n,`{"t":${Math.floor(Date.now()/1e3)},"s":"${o}","o":${t?1:0}}
|
|
6
|
+
`,{mode:384}),hn(n,384),Ye(n,Xe,Xe/2)}catch{}}import{rmSync as xn,statSync as $n}from"node:fs";import{join as Qe}from"node:path";function et(){return Qe($(),"shims")}function Se(){return Qe($(),"fail-open")}var An=24*36e5;function C(e=Date.now()){try{if(e-$n(Se()).mtimeMs<An)return!0;xn(Se(),{force:!0})}catch{}return!1}function tt(){return`[ -f ${T(Se())} ]`}function T(e){return`'${e.replace(/'/g,"'\\''")}'`}function nt(e){if(!e.startsWith("'")||!e.endsWith("'")||e.length<2)return null;let n=e.slice(1,-1).split("'\\''");return n.some(r=>r.includes("'"))?null:n.join("'")}import Cn from"node:os";import{isAbsolute as Tn,join as rt,resolve as ot}from"node:path";function ue(e=process.env,t=Cn.homedir()){let n=e.CLAUDE_CONFIG_DIR?.trim();if(!n)return rt(t,".claude");let r=n;return r==="~"?r=t:(r.startsWith("~/")||r.startsWith("~\\"))&&(r=rt(t,r.slice(2))),Tn(r)?ot(r):ot(r)}import{accessSync as Nn,chmodSync as In,constants as Ln,existsSync as le,mkdirSync as Hn,readdirSync as jn,readFileSync as Dn,realpathSync as lt,renameSync as Fn,unlinkSync as Mn,writeFileSync as Un}from"node:fs";import{basename as Ae,dirname as P,join as E,sep as U}from"node:path";import{realpathSync as it}from"node:fs";import{delimiter as Rn,join as M}from"node:path";import Pn from"node:os";import{basename as En}from"node:path";var vn={exec:"tkr-exec",processor:"tkr-processor",daemon:"tkr-daemon","shim-run":"tkr-shim"},On={codex:"tkr-codex-hook",cursor:"tkr-cursor-hook",gemini:"tkr-gemini-hook",agent:"tkr-agent-hook",copilot:"tkr-copilot-hook",droid:"tkr-droid-hook",trae:"tkr-trae-hook",qwen:"tkr-qwen-hook",crush:"tkr-crush-hook",junie:"tkr-junie-hook",zcode:"tkr-zcode-hook",grok:"tkr-grok-hook",context:"tkr-context-hook","pre-tool-use":"pre-tool-use","post-tool-use":"post-tool-use","session-recap":"session-recap","session-start":"on-session-start","reducer-session-start":"reducer-session-start","reducer-prompt-submit":"reducer-prompt-submit","reducer-stop":"reducer-stop","command-expansion":"command-expansion"};function Y(e){let t=En(e).replace(/\.(m?js|ts)$/,"");if(t==="tkr")return[];for(let[n,r]of Object.entries(vn))if(r===t)return[n];for(let[n,r]of Object.entries(On))if(r===t)return["hook",n];return null}function I(){return!1}function ut(e,t=process.execPath){let n=I()?Y(e):null;return n?[process.execPath,...n]:[t,e]}function st(e,t){try{return it(e)===it(t)}catch{return!1}}function xe(e=process.env.PATH??"",t=process.platform,n=process.execPath){let r=t==="win32"?"tkr.exe":"tkr";for(let o of e.split(t==="win32"?";":Rn)){if(!o||o.includes("node_modules"))continue;let i=M(o,r);if(st(i,n))return i}if(t!=="win32"){let o=Pn.homedir();for(let i of[M(o,".local","bin",r),M(o,".local","share","tokmizer","current","dist","bin",r),M("/opt/homebrew/bin",r),M("/usr/local/bin",r),M("/home/linuxbrew/.linuxbrew/bin",r)])if(st(i,n))return i}return n}var ct=1,X="tkr-shim.stable",ft=/^(?:0|[1-9]\d{0,5})\.(?:0|[1-9]\d{0,5})\.(?:0|[1-9]\d{0,5})$/;function zn(){return E($(),"bin","tkr-shim-launch")}function Wn(){return E($(),"bin","tkr-run")}function at(){return E(ue(),"plugins","cache","tokmizer","tokmizer")}function Jn(e){let t=P(P(P(e)));return ft.test(Ae(t))&&Ae(P(t))==="tokmizer"?P(t):null}function Ce(e){return/[\n\r]/.test(e)||e.includes(`${U}_npx${U}`)||e.includes(`${U}.bun${U}install${U}cache${U}`)}function Te(e){let t=e.match(/^(.*)[\\/]Cellar[\\/]([^\\/]+)[\\/][^\\/]+[\\/](.*)$/);if(!t)return e;let n=E(t[1],"opt",t[2],t[3]);try{return lt(n)===lt(e)?n:e}catch{return e}}function Bn(e=process.execPath){return Ce(e)?"":Te(e)}function Gn(e,t=I()){if(t&&Y(e)){let o=xe();return{single:Ce(o)?"":Te(o),js:"",cache:at(),node:""}}let n=Bn(),r=Jn(e);return r?{single:"",js:"",cache:r,node:n}:{single:"",js:Ce(e)?"":Te(e),cache:at(),node:n}}function Zn(e){try{return Nn(e,Ln.X_OK),!0}catch{return!1}}function Vn(e){let t=null,n=-1,r;try{r=jn(e)}catch{return null}for(let o of r){if(!ft.test(o))continue;let i=E(e,o);if(!le(E(i,"dist","bin","tkr-shim.js"))||!le(E(i,"dist","bin",X)))continue;let[s,u,l]=o.split(".").map(Number),a=s*1e6+u*1e3+l;a>n&&(n=a,t=i)}return t}function $e(e){return e.single&&Zn(e.single)||e.js&&le(e.js)&&(Ae(e.js)!=="tkr-shim.js"||le(E(P(e.js),X)))?!0:e.cache!==""&&Vn(e.cache)!==null}function Kn(e,t){return["_tk_t=",`if [ -n "$_tk_j" ] && [ -f "${t}" ] && { [ "\${_tk_j##*/}" != tkr-shim.js ] || [ -f "\${_tk_j%/*}/${X}" ]; }; then _tk_t=${t}; fi`,'if [ -z "$_tk_t" ] && [ -n "$_tk_k" ] && [ -d "$_tk_k" ]; then'," _tk_b=-1",' for _tk_r in "$_tk_k"/*/; do'," _tk_v=${_tk_r%/}; _tk_v=${_tk_v##*/}"," case $_tk_v in *[!0-9.]*|.*|*.|*..*|0[0-9]*|*.0[0-9]*|*[0-9][0-9][0-9][0-9][0-9][0-9][0-9]*) continue ;; [0-9]*.[0-9]*.[0-9]*) ;; *) continue ;; esac"," case ${_tk_v#*.*.} in *.*) continue ;; esac",` [ -f "\${_tk_r}dist/bin/${e}" ] && [ -f "\${_tk_r}dist/bin/${X}" ] || continue`," _tk_1=${_tk_v%%.*}; _tk_2=${_tk_v#*.}; _tk_3=${_tk_2#*.}; _tk_2=${_tk_2%%.*}"," _tk_v=$((_tk_1 * 1000000 + _tk_2 * 1000 + _tk_3))",` if [ "$_tk_v" -gt "$_tk_b" ]; then _tk_b=$_tk_v; _tk_t=\${_tk_r}dist/bin/${e}; fi`," done","fi",'if [ -z "$_tk_t" ]; then',` _tk_d=${T(et())}`," set -f; _tk_o=$IFS; IFS=:"," for _tk_e in $PATH; do"," case $_tk_e in /*/node_modules/*|*/node_modules) continue ;; /*) ;; *) continue ;; esac",' [ ! "$_tk_e" -ef "$_tk_d" ] || continue',' for _tk_g in "$_tk_e/../lib/node_modules/@tokmizer/plugin/dist/bin" "$_tk_e/../opt/tokmizer/libexec/lib/node_modules/@tokmizer/plugin/dist/bin"; do',` if [ -f "$_tk_g/${X}" ] && [ -f "$_tk_g/${e}" ]; then _tk_t=$_tk_g/${e}; break 2; fi`," done"," done"," IFS=$_tk_o; set +f","fi","_tk_x=",'if [ -n "$_tk_t" ]; then',' for _tk_x in "$_tk_n" "$(command -v node 2>/dev/null)" /opt/homebrew/bin/node /usr/local/bin/node /usr/bin/node ""; do',' [ -n "$_tk_x" ] && [ -x "$_tk_x" ] && break'," done","fi"]}function qn(e){return["#!/bin/sh",`_tk_f=${ct}`,`_tk_s=${T(e.single)}`,`_tk_j=${T(e.js)}`,`_tk_k=${T(e.cache)}`,`_tk_n=${T(e.node)}`,'[ "$#" -gt 0 ] || exit 0',`if ! ${tt()}; then`,' if [ -n "$_tk_s" ] && [ -x "$_tk_s" ]; then exec "$_tk_s" exec "$@"; fi',...Kn("tkr-exec.js","${_tk_j%/*}/tkr-exec.js").map(t=>` ${t}`),' if [ -n "$_tk_t" ]; then'," _tk_r=${_tk_t%/*}",' if [ -f "$_tk_r/tkr-exec" ] && [ -s "$_tk_r/tkr-exec" ] && [ -x "$_tk_r/tkr-exec" ]; then exec "$_tk_r/tkr-exec" "$@"; fi',' if [ -n "$_tk_x" ] && [ -s "$_tk_t" ]; then exec "$_tk_x" "$_tk_t" "$@"; fi'," fi","fi",'exec "$@"',""].join(`
|
|
7
|
+
`)}function dt(e){let t=Wn(),n=Gn(E(P(e),"tkr-shim.js")),r=Xn(t);if(r&&r.format===ct&&$e(r.target)&&JSON.stringify(r.target)===JSON.stringify(n))return t;if(!$e(n))return r&&$e(r.target)?t:null;let o=`${t}.${process.pid}.tmp`;try{return Hn(P(t),{recursive:!0,mode:448}),Un(o,qn(n),{mode:493}),In(o,493),Fn(o,t),t}catch{try{Mn(o)}catch{}return null}}function Yn(e){let t=u=>{let l=e.match(new RegExp(`^${u}=(.*)$`,"m"));return l?u==="_tk_f"?l[1]:nt(l[1]):null},n=Number(t("_tk_f")),r=t("_tk_s"),o=t("_tk_j"),i=t("_tk_k"),s=t("_tk_n")??"";return!Number.isInteger(n)||r===null||o===null||i===null?null:{format:n,target:{single:r,js:o,cache:i,node:s}}}function Xn(e=zn()){try{return Yn(Dn(e,"utf8"))}catch{return null}}import{spawnSync as Ht}from"node:child_process";import{existsSync as v,readFileSync as re,readdirSync as me,statSync as Fr}from"node:fs";import{homedir as H,userInfo as Mr}from"node:os";import{fileURLToPath as jt}from"node:url";import{dirname as je,join as p,resolve as Ur,win32 as zr}from"node:path";function Qn(e,t){let n=e.slice(0,t).split(/\r?\n/);return[n.length,n.pop().length+1]}function er(e,t,n){let r=e.split(/\r?\n/),o="",i=(Math.log10(t+1)|0)+1;for(let s=t-1;s<=t+1;s++){let u=r[s-1];u&&(o+=s.toString().padEnd(i," "),o+=": ",o+=u,o+=`
|
|
8
8
|
`,s===t&&(o+=" ".repeat(i+n+2),o+=`^
|
|
9
|
-
`))}return o}var f=class e extends Error{line;column;codeblock;constructor(t,n){let[r,o]=
|
|
9
|
+
`))}return o}var f=class e extends Error{line;column;codeblock;constructor(t,n){let[r,o]=Qn(n.toml,n.ptr),i=er(n.toml,r,o);super(`Invalid TOML document: ${t}
|
|
10
10
|
|
|
11
|
-
${i}`,n),this.line=r,this.column=o,this.codeblock=i}static x(t,n,r){throw new e(t,{toml:n.s,ptr:r??n.p})}};function
|
|
12
|
-
`:n===102?s+="\f":n===114?s+="\r":n===101?s+="\x1B":n===34?s+='"':n===92?s+="\\":f.x("unrecognised escape sequence",e),u=e.p+1,l=0);else n!==32&&n!==9&&(l===2&&f.x("invalid escape: only line-ending whitespace may be escaped",e,u),l=!o&&n===92?1:0,u=e.p);f.x("unfinished string",e,t)}var Qn=/^(\d{4}-\d{2}-\d{2})?[Tt ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|z|[-+]\d{2}:\d{2})?$/i,Y=class e extends Date{#t=!1;#n=!1;#e=null;constructor(t,n,r){let o=!0,i=!0,s="Z",u;if(typeof t=="string")if(n)e:{if(n<3){if(+t.slice(11,13)>23){t="";break e}n===2?(s=null,t+="Z"):(u=t.charCodeAt(t.length-1))!==90&&u!==122&&(s=t.slice(t.length-6)),r&&(t=t.slice(0,10)+"T"+t.slice(11))}else n===4&&(t=+t.slice(0,2)>23?"":`0000-01-01T${t}Z`);o=n!==4,i=n!==3}else{let l=t.match(Qn);l?(l[1]||(o=!1,t=`0000-01-01T${t}`),i=!!l[2],i&&t[10]===" "&&(t=t.replace(" ","T")),l[2]&&+l[2]>23?t="":(s=l[3]||null,!s&&i&&(t+="Z"))):t=""}super(t),isNaN(this.getTime())||(this.#t=o,this.#n=i,this.#e=s)}isDateTime(){return this.#t&&this.#n}isLocal(){return!this.#t||!this.#n||!this.#e}isDate(){return this.#t&&!this.#n}isTime(){return this.#n&&!this.#t}isValid(){return this.#t||this.#n}toISOString(){let t=super.toISOString();if(this.isDate())return t.slice(0,10);if(this.isTime())return t.slice(11,23);if(this.#e===null)return t.slice(0,-1);if(this.#e==="Z"||this.#e==="z")return t;let n=+this.#e.slice(1,3)*60+ +this.#e.slice(4,6);return n=this.#e[0]==="-"?n:-n,new Date(this.getTime()-n*6e4).toISOString().slice(0,-1)+this.#e}static wrapAsOffsetDateTime(t,n="Z"){let r=new e(t);return r.#e=n,r}static wrapAsLocalDateTime(t){let n=new e(t);return n.#e=null,n}static wrapAsLocalDate(t){let n=new e(t);return n.#n=!1,n.#e=null,n}static wrapAsLocalTime(t){let n=new e(t);return n.#t=!1,n.#e=null,n}};function b(e,t=10){return t===16?e>47&&e<58||e>64&&e<71||e>96&&e<103:e>47&&e<48+t}function ve(e,t){return e===32||e===9||e===10||e===13||t&&(e===t||e===44)||e===35}function Q(e,t){let n=e.p,r=e.s.charCodeAt(e.p);if(r===91||r===123){e.d--||f.x("document contains excessively nested structures. aborting.",e);let o=r===91?pt(e):dt(e);return e.d++,o}return r===34||r===39?le(e):r===116?((e.s.charCodeAt(++e.p)!==114||e.s.charCodeAt(++e.p)!==117||e.s.charCodeAt(++e.p)!==101)&&f.x("invalid value",e,n),e.p++,!0):r===102?((e.s.charCodeAt(++e.p)!==97||e.s.charCodeAt(++e.p)!==108||e.s.charCodeAt(++e.p)!==115||e.s.charCodeAt(++e.p)!==101)&&f.x("invalid value",e,n),e.p++,!1):r===43||r===45?ae(e,e.p,e.s.charCodeAt(++e.p),44-r,t):e.s.charCodeAt(e.p+4)===45&&e.s.charCodeAt(e.p+7)===45?er(e,r,t):e.s.charCodeAt(e.p+2)===58?tr(e,r,t):ae(e,e.p,r,0,t)}function ae(e,t,n,r,o){let i=n,s=0,u=!1;if(i===105)return(e.s.charCodeAt(++e.p)!==110||e.s.charCodeAt(++e.p)!==102)&&f.x("invalid value",e,t),e.p++,(r||1)/0;if(i===110)return(e.s.charCodeAt(++e.p)!==97||e.s.charCodeAt(++e.p)!==110)&&f.x("invalid value",e,t),e.p++,NaN;if(i===48){if(++e.p>=e.s.length||ve(i=e.s.charCodeAt(e.p),o))return e.bi===!0?0n:0;if(!r){if(i===120)return Ee(e,t,16,o);if(i===98)return Ee(e,t,2,o);if(i===111)return Ee(e,t,8,o)}i===46?s=2:i===101||i===69?s=4:f.x("illegal leading zero",e,t)}else b(i)||f.x("invalid value",e,t);for(;++e.p<e.s.length&&(i=e.s.charCodeAt(e.p),!ve(i,o));)s||(s=1),i===95?(s&1||f.x("illegal underscore",e),s+=11,u=!0):s===1&&i===46?s=2:(s===1||s===3)&&(i===101||i===69)?s=4:s===4&&(i===43||i===45)||(b(i)?s>9?s-=11:s&1||s++:f.x("illegal character in numeric literal",e));if(!s){let a=(n-48)*(r||1);return e.bi===!0?BigInt(a):a}s&1||f.x("unfinished numeric value",e,t);let l=e.s.slice(t,e.p);return u&&(l=l.replaceAll("_","")),s>1?parseFloat(l):ft(e,l,10,t)}function Ee(e,t,n,r){let o,i=1;for(;++e.p<e.s.length&&(o=e.s.charCodeAt(e.p),!ve(o,r));)o===95?(i&1&&f.x("illegal underscore",e),i=3):b(o,n)?i&1&&i--:f.x("illegal character in numeric literal",e);i&1&&f.x("unfinished numeric value",e);let s=e.s.slice(t+2,e.p);return i&&(s=s.replaceAll("_","")),ft(e,s,n,t)}function ft(e,t,n,r){if(e.bi!==!0)e:{let o=parseInt(t,n);if(!Number.isSafeInteger(o)){if(e.bi)break e;f.x("integer value cannot be represented losslessly",e,r)}return o}return BigInt(n===10?t:(n===2?"0b":n===8?"0o":"0x")+t)}function er(e,t,n){let r=e.p++,o;if(!b(t)||!b(e.s.charCodeAt(e.p++))||!b(e.s.charCodeAt(e.p++))||!b(e.s.charCodeAt(e.p++)))return ae(e,e.p=r,t,0,n);if(e.p+=5,b(e.s.charCodeAt(e.p++))||f.x("invalid date-time: date part is malformed",e,r),e.p>=e.s.length||((t=e.s.charCodeAt(e.p))!==32||(o=!0,!b(e.s.charCodeAt(e.p+1))))&&t!==84&&t!==116){let s=e.s.slice(r,e.p);return X(e,s,3,!1,r)}if(e.s.charCodeAt(e.p+=3)!==58&&f.x("invalid date-time: time part is malformed",e,r),e.s.charCodeAt(e.p+=3)===58&&(e.p+=3),e.s.charCodeAt(e.p)===46)for(;b(e.s.charCodeAt(++e.p)););if(t=e.s.charCodeAt(e.p)){if(t===90||t===122){let s=e.s.slice(r,++e.p);return X(e,s,1,o,r,"[+00:00]")}if(t===43||t===45){let s=e.s.slice(r,e.p+=6);return X(e,s,1,o,r,!e.ld&&"["+e.s.slice(e.p-6,e.p)+"]")}}let i=e.s.slice(r,e.p);return X(e,i,2,o,r)}function tr(e,t,n){let r=e.p;if(!b(t)||!b(e.s.charCodeAt(++e.p)))return ae(e,--e.p,t,0,n);if(e.s.charCodeAt(e.p+=4)===58&&(e.p+=3),e.s.charCodeAt(e.p)===46)for(;b(e.s.charCodeAt(++e.p)););let o=e.s.slice(r,e.p);return X(e,o,4,!1,r)}function X(e,t,n,r,o,i){if(e.ld){let s=new Y(t,n,r);return s.isValid()||f.x("invalid date",e,o),s}try{switch(i&&(t+=i),n){case 1:return Temporal.ZonedDateTime.from(t);case 2:return Temporal.PlainDateTime.from(t);case 3:return Temporal.PlainDate.from(t);case 4:return Temporal.PlainTime.from(t)}}catch(s){f.x(s instanceof Error?s.message:""+s,e,o)}}function nr(e){for(;e.p<e.s.length;e.p++){let t=e.s.charCodeAt(e.p);if(t===10)break;if(t===13&&e.s.charCodeAt(e.p+1)===10){e.p++;break}(t<32&&t!==9||t===127)&&f.x("control characters are not allowed in comments",e)}}function $(e,t,n){let r;for(;e.p<e.s.length;){for(;e.p<e.s.length&&((r=e.s.charCodeAt(e.p))===32||r===9||!t&&(r===10||r===13&&e.s.charCodeAt(e.p+1)===10));)e.p++;if(n||r!==35)break;nr(e)}}function ce(e,t=61){let n,r=0,o=[],i,s=e.s.charCodeAt(n=e.p);do{if(s===t)return r||f.x("unexpected end of key",e),r===1&&o.push(e.s.slice(i,e.p)),e.p++,o;s===46?(r||f.x("illegal empty bare key",e),r===1&&o.push(e.s.slice(i,e.p)),r=0):!r&&(s===34||s===39)?(s===e.s.charCodeAt(e.p+1)&&s===e.s.charCodeAt(e.p+2)&&f.x("illegal quoted key: multiline strings are not allowed",e),o.push(le(e)),r=2,e.p--):s===32||s===9?r===1&&(o.push(e.s.slice(i,e.p)),r=2):r===2||s<48&&s!==45||s>57&&s<65||s>90&&s<97&&s!==95||s>122?f.x("illegal character in key",e):r||(r=1,i=e.p)}while(s=e.s.charCodeAt(++e.p));f.x("incomplete key-value: cannot find end of key",e,n)}function dt(e){let t=e.p++,n=Object.create(null),r=new Set,o;for(;e.p<e.s.length;){if($(e),(o=e.s.charCodeAt(e.p))===125)return e.p++,n;let i,s=n,u=!1,l=e.p,a=ce(e);for(let d=0;d<a.length;d++){d&&(s=u?s[i]:s[i]=Object.create(null)),i=a[d],(u=Object.hasOwn(s,i))&&(typeof s[i]!="object"||r.has(s[i]))&&f.x("trying to redefine an already defined value",e,l);let g=i==="__proto__";if(e.uk&&(g||i==="constructor")){s=e.uk!==1&&f.x("document contains an unsafe property",e,l);break}!u&&g&&Object.defineProperty(s,i,{enumerable:!0,configurable:!0,writable:!0})}u&&f.x("trying to redefine an already defined value",e,l),$(e,!0,!0);let c=Q(e,125);if(s&&typeof(s[i]=c)=="object"&&r.add(c),$(e),(o=e.s.charCodeAt(e.p++))===125)return n;o!==44&&f.x("expected comma or end of structure",e,e.p-1)}f.x("unfinished table",e,t)}function pt(e){let t=e.p++,n=[],r;for(;e.p<e.s.length;){if($(e),(r=e.s.charCodeAt(e.p))===93)return e.p++,n;if(n.push(Q(e,93)),$(e),(r=e.s.charCodeAt(e.p++))===93)return n;r!==44&&f.x("expected comma or end of structure",e,e.p-1)}f.x("unfinished array",e,t)}function mt(e,t,n,r,o){let i=n,s=r,u,l=!1,a;for(let c=0;c<t.length;c++){if(c){if(i=l?i[u]:i[u]=Object.create(null),s=(a=s[u]).c,o===0&&(a.t===1||a.t===2))return null;if(a.t===2){let d=i.length-1;i=i[d],s=s[d].c}}if(u=t[c],(l=Object.hasOwn(i,u))&&s[u]?.t===0&&s[u]?.d)return null;if(!l){let d=u==="__proto__";if(e.uk&&(d||u==="constructor"))return!1;d&&(Object.defineProperty(i,u,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(s,u,{enumerable:!0,configurable:!0,writable:!0})),s[u]={t:c<t.length-1&&o===2?3:o,d:!1,i:0,c:Object.create(null)}}}if(a=s[u],a.t!==o&&!(o===1&&a.t===3)||(o===2&&(a.d||(a.d=!0,i[u]=[]),i[u].push(i=Object.create(null)),a.c[a.i++]=a={t:1,d:!1,i:0,c:Object.create(null)}),a.d))return null;if(a.d=!0,o===1)i=l?i[u]:i[u]=Object.create(null);else if(o===0&&l)return null;return[u,i,a.c]}function gt(e,t,n){(t===null||e.uk===2)&&f.x(t===null?"trying to redefine an already defined table or value":"document contains an unsafe property",e,n)}function Oe(e,t={}){let n={s:e,p:0,d:t.maxDepth??1e3,bi:t.integersAsBigInt??!1,ld:t.useLegacyDate??!0,uk:t.unsafeKeyBehaviour==="throw"?2:t.unsafeKeyBehaviour==="drop"?1:0},r=Object.create(null),o=Object.create(null),i,s=!1,u=r,l=o;for(e.charCodeAt(0)===65279&&n.p++,$(n);n.p<e.length;){if(e.charCodeAt(n.p)===91){let a=e.charCodeAt(++n.p)===91;i=n.p+=+a,s=!1;let c=ce(n,93);a&&(e.charCodeAt(n.p)!==93&&f.x("expected end of table array declaration",n),n.p++);let d=mt(n,c,r,o,a?2:1);d?(l=d[2],u=d[1]):(gt(n,d,i),s=!0)}else{i=n.p;let a=ce(n),c=mt(n,a,u,l,0);!c&&!s&>(n,c,i),$(n,!0,!0);let d=Q(n,void 0);c&&!s&&(c[1][c[0]]=d)}$(n,!0),n.p<e.length&&(i=e.charCodeAt(n.p))!==10&&(i!==13||e.charCodeAt(n.p+1)!==10)&&f.x("each key-value declaration must be followed by an end-of-line",n),$(n)}return r}var Us=!!"".isWellFormed;import{execFileSync as Ar}from"node:child_process";function rr(e){return e.charCodeAt(0)===65279?e.slice(1):e}function Re(e){return JSON.parse(rr(e))}import{mkdirSync as $r,readFileSync as wt,renameSync as Cr,statSync as Tr,writeFileSync as Er}from"node:fs";import{join as yt}from"node:path";import{closeSync as or,openSync as ir,readSync as sr,readdirSync as ur,readFileSync as lr,statSync as kt}from"node:fs";import{homedir as ar}from"node:os";import{isAbsolute as cr,join as fe,resolve as fr}from"node:path";var dr=/^[A-Za-z0-9._+@%:,/-]+$/,pr=new Set(["7f454c46","feedface","feedfacf","cefaedfe","cffaedfe","cafebabe","bebafeca"]),mr=32,gr=4*1024*1024;function Ne(e){let t;try{t=ir(e,"r");let n=Buffer.alloc(4),r=sr(t,n,0,4,0);return r>=2&&n[0]===35&&n[1]===33?"#!":r===4?n.toString("hex"):null}catch{return null}finally{t!==void 0&&or(t)}}function ee(e,t=process.platform){try{let n=kt(e);if(!n.isFile())return!1;if(t==="win32")return!0;if((n.mode&73)===0)return!1;let r=Ne(e);return r==="#!"||r!==null&&pr.has(r)}catch{return!1}}function hr(e){if(/\.[A-Za-z0-9]+$/.test(e))return[e];let t=(process.env.PATHEXT??".COM;.EXE;.BAT;.CMD").split(";").filter(Boolean);return[e,...t.map(n=>e+n.toLowerCase())]}function M(e,t,n,r=process.platform){if(!dr.test(e))return!1;let o=r==="win32";if(e.includes("/"))return ee(fr(t??process.cwd(),e),r);if(!n)return!1;let i=o?hr(e):[e];for(let s of n.split(o?";":":"))if(!(!s||!cr(s))){for(let u of i)if(ee(fe(s,u),r))return!0}return!1}var kr=/^eval \$'([^\s'()=]+) \(\) /,_r=/^([^\s'"()=]+) \(\) \{$/,br=/^alias -- ([^\s=]+)=(.*)$/,wr=/^# (?:Shell Options|Aliases|Shopt|Check for |Shadow )/,yr=/^export PATH=(.*)$/,Sr=/^(?:--colou?r(?:=\S+)?|-G)$/;function ht(e){return e.length>=2&&e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1).replace(/'\\''/g,"'"):e.length>=2&&e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function xr(e,t){let n="";for(let r of e.split(`
|
|
13
|
-
`)){let o=
|
|
14
|
-
`,1)[0].slice(2).trim().split(/\s+/),o=r[0]??"";return o==="/usr/bin/env"?
|
|
15
|
-
`||u==="|"){s(u,1);continue}}r+=u,o+=1}return i(),n}function
|
|
11
|
+
${i}`,n),this.line=r,this.column=o,this.codeblock=i}static x(t,n,r){throw new e(t,{toml:n.s,ptr:r??n.p})}};function ae(e){let t=e.p,n=e.s.charCodeAt(e.p++),r=n,o=n===39,i=n===e.s.charCodeAt(e.p)&&n===e.s.charCodeAt(e.p+1);i&&((n=e.s.charCodeAt(e.p+=2))===10?e.p++:n===13&&e.s.charCodeAt(e.p+1)===10&&(e.p+=2));let s="",u=e.p,l=0;for(;e.p<e.s.length;e.p++)if(n=e.s.charCodeAt(e.p),i&&(n===10||n===13&&e.s.charCodeAt(e.p+1)===10))l=l&&3;else if(n<32&&n!==9||n===127)f.x("control characters are not allowed in strings",e);else if((!l||l===3)&&n===r&&(!i||e.s.charCodeAt(e.p+1)===r&&e.s.charCodeAt(e.p+2)===r)){if(i&&(e.s.charCodeAt(e.p+3)===r&&e.p++,e.s.charCodeAt(e.p+3)===r&&e.p++),!l){let a=e.s.slice(u,e.p);s=s?s+a:a}return e.p+=i?3:1,s}else if(!l)!o&&n===92&&(s+=e.s.slice(u,u=e.p),l=1);else if(l===1)if(n===120||n===117||n===85){let a=e.p++-1,c=0,d=n===120?2:n===117?4:8;for(let m=0;m<d;m++,e.p++){let g=e.s.charCodeAt(e.p),h=g>=48&&g<=57?g-48:g>=65&&g<=70?g-65+10:g>=97&&g<=102?g-97+10:-1;h<0&&f.x("invalid non-hex character in unicode escape",e),c=c<<4|h}(c<0||c>1114111||c>=55296&&c<=57343)&&f.x("invalid unicode escape",e,a),s+=String.fromCodePoint(c),u=e.p--,l=0}else i&&(n===32||n===9)?l=2:(n===98?s+="\b":n===116?s+=" ":n===110?s+=`
|
|
12
|
+
`:n===102?s+="\f":n===114?s+="\r":n===101?s+="\x1B":n===34?s+='"':n===92?s+="\\":f.x("unrecognised escape sequence",e),u=e.p+1,l=0);else n!==32&&n!==9&&(l===2&&f.x("invalid escape: only line-ending whitespace may be escaped",e,u),l=!o&&n===92?1:0,u=e.p);f.x("unfinished string",e,t)}var tr=/^(\d{4}-\d{2}-\d{2})?[Tt ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|z|[-+]\d{2}:\d{2})?$/i,Q=class e extends Date{#t=!1;#n=!1;#e=null;constructor(t,n,r){let o=!0,i=!0,s="Z",u;if(typeof t=="string")if(n)e:{if(n<3){if(+t.slice(11,13)>23){t="";break e}n===2?(s=null,t+="Z"):(u=t.charCodeAt(t.length-1))!==90&&u!==122&&(s=t.slice(t.length-6)),r&&(t=t.slice(0,10)+"T"+t.slice(11))}else n===4&&(t=+t.slice(0,2)>23?"":`0000-01-01T${t}Z`);o=n!==4,i=n!==3}else{let l=t.match(tr);l?(l[1]||(o=!1,t=`0000-01-01T${t}`),i=!!l[2],i&&t[10]===" "&&(t=t.replace(" ","T")),l[2]&&+l[2]>23?t="":(s=l[3]||null,!s&&i&&(t+="Z"))):t=""}super(t),isNaN(this.getTime())||(this.#t=o,this.#n=i,this.#e=s)}isDateTime(){return this.#t&&this.#n}isLocal(){return!this.#t||!this.#n||!this.#e}isDate(){return this.#t&&!this.#n}isTime(){return this.#n&&!this.#t}isValid(){return this.#t||this.#n}toISOString(){let t=super.toISOString();if(this.isDate())return t.slice(0,10);if(this.isTime())return t.slice(11,23);if(this.#e===null)return t.slice(0,-1);if(this.#e==="Z"||this.#e==="z")return t;let n=+this.#e.slice(1,3)*60+ +this.#e.slice(4,6);return n=this.#e[0]==="-"?n:-n,new Date(this.getTime()-n*6e4).toISOString().slice(0,-1)+this.#e}static wrapAsOffsetDateTime(t,n="Z"){let r=new e(t);return r.#e=n,r}static wrapAsLocalDateTime(t){let n=new e(t);return n.#e=null,n}static wrapAsLocalDate(t){let n=new e(t);return n.#n=!1,n.#e=null,n}static wrapAsLocalTime(t){let n=new e(t);return n.#t=!1,n.#e=null,n}};function w(e,t=10){return t===16?e>47&&e<58||e>64&&e<71||e>96&&e<103:e>47&&e<48+t}function ve(e,t){return e===32||e===9||e===10||e===13||t&&(e===t||e===44)||e===35}function te(e,t){let n=e.p,r=e.s.charCodeAt(e.p);if(r===91||r===123){e.d--||f.x("document contains excessively nested structures. aborting.",e);let o=r===91?gt(e):mt(e);return e.d++,o}return r===34||r===39?ae(e):r===116?((e.s.charCodeAt(++e.p)!==114||e.s.charCodeAt(++e.p)!==117||e.s.charCodeAt(++e.p)!==101)&&f.x("invalid value",e,n),e.p++,!0):r===102?((e.s.charCodeAt(++e.p)!==97||e.s.charCodeAt(++e.p)!==108||e.s.charCodeAt(++e.p)!==115||e.s.charCodeAt(++e.p)!==101)&&f.x("invalid value",e,n),e.p++,!1):r===43||r===45?ce(e,e.p,e.s.charCodeAt(++e.p),44-r,t):e.s.charCodeAt(e.p+4)===45&&e.s.charCodeAt(e.p+7)===45?nr(e,r,t):e.s.charCodeAt(e.p+2)===58?rr(e,r,t):ce(e,e.p,r,0,t)}function ce(e,t,n,r,o){let i=n,s=0,u=!1;if(i===105)return(e.s.charCodeAt(++e.p)!==110||e.s.charCodeAt(++e.p)!==102)&&f.x("invalid value",e,t),e.p++,(r||1)/0;if(i===110)return(e.s.charCodeAt(++e.p)!==97||e.s.charCodeAt(++e.p)!==110)&&f.x("invalid value",e,t),e.p++,NaN;if(i===48){if(++e.p>=e.s.length||ve(i=e.s.charCodeAt(e.p),o))return e.bi===!0?0n:0;if(!r){if(i===120)return Ee(e,t,16,o);if(i===98)return Ee(e,t,2,o);if(i===111)return Ee(e,t,8,o)}i===46?s=2:i===101||i===69?s=4:f.x("illegal leading zero",e,t)}else w(i)||f.x("invalid value",e,t);for(;++e.p<e.s.length&&(i=e.s.charCodeAt(e.p),!ve(i,o));)s||(s=1),i===95?(s&1||f.x("illegal underscore",e),s+=11,u=!0):s===1&&i===46?s=2:(s===1||s===3)&&(i===101||i===69)?s=4:s===4&&(i===43||i===45)||(w(i)?s>9?s-=11:s&1||s++:f.x("illegal character in numeric literal",e));if(!s){let a=(n-48)*(r||1);return e.bi===!0?BigInt(a):a}s&1||f.x("unfinished numeric value",e,t);let l=e.s.slice(t,e.p);return u&&(l=l.replaceAll("_","")),s>1?parseFloat(l):pt(e,l,10,t)}function Ee(e,t,n,r){let o,i=1;for(;++e.p<e.s.length&&(o=e.s.charCodeAt(e.p),!ve(o,r));)o===95?(i&1&&f.x("illegal underscore",e),i=3):w(o,n)?i&1&&i--:f.x("illegal character in numeric literal",e);i&1&&f.x("unfinished numeric value",e);let s=e.s.slice(t+2,e.p);return i&&(s=s.replaceAll("_","")),pt(e,s,n,t)}function pt(e,t,n,r){if(e.bi!==!0)e:{let o=parseInt(t,n);if(!Number.isSafeInteger(o)){if(e.bi)break e;f.x("integer value cannot be represented losslessly",e,r)}return o}return BigInt(n===10?t:(n===2?"0b":n===8?"0o":"0x")+t)}function nr(e,t,n){let r=e.p++,o;if(!w(t)||!w(e.s.charCodeAt(e.p++))||!w(e.s.charCodeAt(e.p++))||!w(e.s.charCodeAt(e.p++)))return ce(e,e.p=r,t,0,n);if(e.p+=5,w(e.s.charCodeAt(e.p++))||f.x("invalid date-time: date part is malformed",e,r),e.p>=e.s.length||((t=e.s.charCodeAt(e.p))!==32||(o=!0,!w(e.s.charCodeAt(e.p+1))))&&t!==84&&t!==116){let s=e.s.slice(r,e.p);return ee(e,s,3,!1,r)}if(e.s.charCodeAt(e.p+=3)!==58&&f.x("invalid date-time: time part is malformed",e,r),e.s.charCodeAt(e.p+=3)===58&&(e.p+=3),e.s.charCodeAt(e.p)===46)for(;w(e.s.charCodeAt(++e.p)););if(t=e.s.charCodeAt(e.p)){if(t===90||t===122){let s=e.s.slice(r,++e.p);return ee(e,s,1,o,r,"[+00:00]")}if(t===43||t===45){let s=e.s.slice(r,e.p+=6);return ee(e,s,1,o,r,!e.ld&&"["+e.s.slice(e.p-6,e.p)+"]")}}let i=e.s.slice(r,e.p);return ee(e,i,2,o,r)}function rr(e,t,n){let r=e.p;if(!w(t)||!w(e.s.charCodeAt(++e.p)))return ce(e,--e.p,t,0,n);if(e.s.charCodeAt(e.p+=4)===58&&(e.p+=3),e.s.charCodeAt(e.p)===46)for(;w(e.s.charCodeAt(++e.p)););let o=e.s.slice(r,e.p);return ee(e,o,4,!1,r)}function ee(e,t,n,r,o,i){if(e.ld){let s=new Q(t,n,r);return s.isValid()||f.x("invalid date",e,o),s}try{switch(i&&(t+=i),n){case 1:return Temporal.ZonedDateTime.from(t);case 2:return Temporal.PlainDateTime.from(t);case 3:return Temporal.PlainDate.from(t);case 4:return Temporal.PlainTime.from(t)}}catch(s){f.x(s instanceof Error?s.message:""+s,e,o)}}function or(e){for(;e.p<e.s.length;e.p++){let t=e.s.charCodeAt(e.p);if(t===10)break;if(t===13&&e.s.charCodeAt(e.p+1)===10){e.p++;break}(t<32&&t!==9||t===127)&&f.x("control characters are not allowed in comments",e)}}function A(e,t,n){let r;for(;e.p<e.s.length;){for(;e.p<e.s.length&&((r=e.s.charCodeAt(e.p))===32||r===9||!t&&(r===10||r===13&&e.s.charCodeAt(e.p+1)===10));)e.p++;if(n||r!==35)break;or(e)}}function fe(e,t=61){let n,r=0,o=[],i,s=e.s.charCodeAt(n=e.p);do{if(s===t)return r||f.x("unexpected end of key",e),r===1&&o.push(e.s.slice(i,e.p)),e.p++,o;s===46?(r||f.x("illegal empty bare key",e),r===1&&o.push(e.s.slice(i,e.p)),r=0):!r&&(s===34||s===39)?(s===e.s.charCodeAt(e.p+1)&&s===e.s.charCodeAt(e.p+2)&&f.x("illegal quoted key: multiline strings are not allowed",e),o.push(ae(e)),r=2,e.p--):s===32||s===9?r===1&&(o.push(e.s.slice(i,e.p)),r=2):r===2||s<48&&s!==45||s>57&&s<65||s>90&&s<97&&s!==95||s>122?f.x("illegal character in key",e):r||(r=1,i=e.p)}while(s=e.s.charCodeAt(++e.p));f.x("incomplete key-value: cannot find end of key",e,n)}function mt(e){let t=e.p++,n=Object.create(null),r=new Set,o;for(;e.p<e.s.length;){if(A(e),(o=e.s.charCodeAt(e.p))===125)return e.p++,n;let i,s=n,u=!1,l=e.p,a=fe(e);for(let d=0;d<a.length;d++){d&&(s=u?s[i]:s[i]=Object.create(null)),i=a[d],(u=Object.hasOwn(s,i))&&(typeof s[i]!="object"||r.has(s[i]))&&f.x("trying to redefine an already defined value",e,l);let m=i==="__proto__";if(e.uk&&(m||i==="constructor")){s=e.uk!==1&&f.x("document contains an unsafe property",e,l);break}!u&&m&&Object.defineProperty(s,i,{enumerable:!0,configurable:!0,writable:!0})}u&&f.x("trying to redefine an already defined value",e,l),A(e,!0,!0);let c=te(e,125);if(s&&typeof(s[i]=c)=="object"&&r.add(c),A(e),(o=e.s.charCodeAt(e.p++))===125)return n;o!==44&&f.x("expected comma or end of structure",e,e.p-1)}f.x("unfinished table",e,t)}function gt(e){let t=e.p++,n=[],r;for(;e.p<e.s.length;){if(A(e),(r=e.s.charCodeAt(e.p))===93)return e.p++,n;if(n.push(te(e,93)),A(e),(r=e.s.charCodeAt(e.p++))===93)return n;r!==44&&f.x("expected comma or end of structure",e,e.p-1)}f.x("unfinished array",e,t)}function ht(e,t,n,r,o){let i=n,s=r,u,l=!1,a;for(let c=0;c<t.length;c++){if(c){if(i=l?i[u]:i[u]=Object.create(null),s=(a=s[u]).c,o===0&&(a.t===1||a.t===2))return null;if(a.t===2){let d=i.length-1;i=i[d],s=s[d].c}}if(u=t[c],(l=Object.hasOwn(i,u))&&s[u]?.t===0&&s[u]?.d)return null;if(!l){let d=u==="__proto__";if(e.uk&&(d||u==="constructor"))return!1;d&&(Object.defineProperty(i,u,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(s,u,{enumerable:!0,configurable:!0,writable:!0})),s[u]={t:c<t.length-1&&o===2?3:o,d:!1,i:0,c:Object.create(null)}}}if(a=s[u],a.t!==o&&!(o===1&&a.t===3)||(o===2&&(a.d||(a.d=!0,i[u]=[]),i[u].push(i=Object.create(null)),a.c[a.i++]=a={t:1,d:!1,i:0,c:Object.create(null)}),a.d))return null;if(a.d=!0,o===1)i=l?i[u]:i[u]=Object.create(null);else if(o===0&&l)return null;return[u,i,a.c]}function kt(e,t,n){(t===null||e.uk===2)&&f.x(t===null?"trying to redefine an already defined table or value":"document contains an unsafe property",e,n)}function Oe(e,t={}){let n={s:e,p:0,d:t.maxDepth??1e3,bi:t.integersAsBigInt??!1,ld:t.useLegacyDate??!0,uk:t.unsafeKeyBehaviour==="throw"?2:t.unsafeKeyBehaviour==="drop"?1:0},r=Object.create(null),o=Object.create(null),i,s=!1,u=r,l=o;for(e.charCodeAt(0)===65279&&n.p++,A(n);n.p<e.length;){if(e.charCodeAt(n.p)===91){let a=e.charCodeAt(++n.p)===91;i=n.p+=+a,s=!1;let c=fe(n,93);a&&(e.charCodeAt(n.p)!==93&&f.x("expected end of table array declaration",n),n.p++);let d=ht(n,c,r,o,a?2:1);d?(l=d[2],u=d[1]):(kt(n,d,i),s=!0)}else{i=n.p;let a=fe(n),c=ht(n,a,u,l,0);!c&&!s&&kt(n,c,i),A(n,!0,!0);let d=te(n,void 0);c&&!s&&(c[1][c[0]]=d)}A(n,!0),n.p<e.length&&(i=e.charCodeAt(n.p))!==10&&(i!==13||e.charCodeAt(n.p+1)!==10)&&f.x("each key-value declaration must be followed by an end-of-line",n),A(n)}return r}var Js=!!"".isWellFormed;import{execFileSync as Cr}from"node:child_process";function ir(e){return e.charCodeAt(0)===65279?e.slice(1):e}function Re(e){return JSON.parse(ir(e))}import{mkdirSync as Tr,readFileSync as St,renameSync as Er,statSync as vr,writeFileSync as Or}from"node:fs";import{join as xt}from"node:path";import{closeSync as sr,openSync as ur,readSync as lr,readdirSync as ar,readFileSync as cr,statSync as bt}from"node:fs";import{homedir as fr}from"node:os";import{isAbsolute as dr,join as de,resolve as pr}from"node:path";var mr=/^[A-Za-z0-9._+@%:,/-]+$/,gr=new Set(["7f454c46","feedface","feedfacf","cefaedfe","cffaedfe","cafebabe","bebafeca"]),hr=32,kr=4*1024*1024;function Ne(e){let t;try{t=ur(e,"r");let n=Buffer.alloc(4),r=lr(t,n,0,4,0);return r>=2&&n[0]===35&&n[1]===33?"#!":r===4?n.toString("hex"):null}catch{return null}finally{t!==void 0&&sr(t)}}function ne(e,t=process.platform){try{let n=bt(e);if(!n.isFile())return!1;if(t==="win32")return!0;if((n.mode&73)===0)return!1;let r=Ne(e);return r==="#!"||r!==null&&gr.has(r)}catch{return!1}}function _r(e){if(/\.[A-Za-z0-9]+$/.test(e))return[e];let t=(process.env.PATHEXT??".COM;.EXE;.BAT;.CMD").split(";").filter(Boolean);return[e,...t.map(n=>e+n.toLowerCase())]}function L(e,t,n,r=process.platform){if(!mr.test(e))return!1;let o=r==="win32";if(e.includes("/"))return ne(pr(t??process.cwd(),e),r);if(!n)return!1;let i=o?_r(e):[e];for(let s of n.split(o?";":":"))if(!(!s||!dr(s))){for(let u of i)if(ne(de(s,u),r))return!0}return!1}var br=/^eval \$'([^\s'()=]+) \(\) /,wr=/^([^\s'"()=]+) \(\) \{$/,yr=/^alias -- ([^\s=]+)=(.*)$/,Sr=/^# (?:Shell Options|Aliases|Shopt|Check for |Shadow )/,xr=/^export PATH=(.*)$/,$r=/^(?:--colou?r(?:=\S+)?|-G)$/;function _t(e){return e.length>=2&&e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1).replace(/'\\''/g,"'"):e.length>=2&&e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function Ar(e,t){let n="";for(let r of e.split(`
|
|
13
|
+
`)){let o=xr.exec(r);if(o&&n!=="# Functions"){let i=_t(o[1].trim());/[$`\\]/.test(i)||t.paths.push(i);continue}if(r.startsWith("# ")&&(n!=="# Functions"||Sr.test(r))){n=r;continue}if(n==="# Functions"){let i=br.exec(r)??wr.exec(r);i&&t.functions.add(i[1])}else if(n==="# Aliases"){let i=yr.exec(r);i&&t.aliases.set(i[1],_t(i[2].trim()))}}}function Pe(e){return e?.code==="ENOENT"}function wt(e){let t={functions:new Set,aliases:new Map,paths:[],uncertain:!1},n=de(e||de(fr(),".claude"),"shell-snapshots"),r=[];try{for(let o of ar(n)){if(!o.startsWith("snapshot-")||!o.endsWith(".sh"))continue;let i=de(n,o);try{let s=bt(i);s.isFile()&&r.push({path:i,mtime:s.mtimeMs,size:s.size})}catch(s){Pe(s)||(t.uncertain=!0)}}}catch(o){return Pe(o)||(t.uncertain=!0),t}r=r.sort((o,i)=>i.mtime-o.mtime).slice(0,hr);for(let o of r)try{if(o.size>kr)throw new Error("snapshot too large");Ar(cr(o.path,"utf8"),t)}catch(i){Pe(i)||(t.uncertain=!0)}return t}function yt(e,t){if(t.uncertain||t.functions.has(e))return!0;let n=t.aliases.get(e);if(n===void 0)return!1;let r=n.trim().split(/\s+/);return r[0]!==e||!r.slice(1).every(o=>$r.test(o))}var Rr="exec-probe.json",Pr=6e4;function Nr(){return xt($(),Rr)}function Ir(e){try{let t=Re(St(e,"utf8"));if(t==null||typeof t!="object")return null;let n=t;return typeof n.key!="string"||typeof n.ok!="boolean"?null:{key:n.key,ok:n.ok,at:typeof n.at=="number"?n.at:0,skipped:typeof n.skipped=="number"&&n.skipped>=0?n.skipped:0}}catch{return null}}function Lr(e,t){try{Tr(xt(e,".."),{recursive:!0,mode:448});let n=`${e}.${process.pid}.tmp`;Or(n,JSON.stringify(t),{mode:384}),Er(n,e)}catch{}}function Hr(e){try{return Cr(e,["--native-check"],{encoding:"utf8",timeout:2e3,maxBuffer:1024,stdio:["ignore","pipe","ignore"],windowsHide:!0}).startsWith("tokmizer-native ")}catch{return!1}}function jr(e,t){try{let r=St(e,"utf8").split(`
|
|
14
|
+
`,1)[0].slice(2).trim().split(/\s+/),o=r[0]??"";return o==="/usr/bin/env"?L(r[1]??"",void 0,t):ne(o)}catch{return!1}}function Dr(e,t,n){try{let r=vr(e);return[e,r.size,r.mtimeMs,r.ino,r.mode,t?n??"":""].join("|")}catch{return`${e}|missing`}}function Ie(e,t=process.platform,n=process.env.PATH,r=Nr(),o=Date.now()){let i=t!=="win32"&&Ne(e)==="#!",s=Dr(e,i,n),u=Ir(r);if(u?.key===s&&(u.ok||o-u.at<Pr))return u.ok;let l=ne(e,t)&&(i?jr(e,n):Hr(e));return Lr(r,{key:s,ok:l,at:o,skipped:(u?.skipped??0)+(l?0:1)}),l}var Wr=new Set(["tkr","tkr-exec","token","claude","cd","export","source","echo","mkdir","rm","mv","cp","chmod","ln","true","false",":","test","[","exit","return","nohup","sudo","doas","env"]),Jr=new Set(["for","while","until","if","then","else","elif","fi","do","done","case","esac","select","function","time","coproc","in","!","[[","]]","{","}",".","declare","typeset","local","readonly","unset","set","shift","trap","wait","read","eval","exec","break","continue","pushd","popd","dirs","alias","unalias","hash","ulimit","umask","getopts","let","shopt","builtin","command","compgen","complete","disown","suspend","jobs","fg","bg","kill","history","fc","bind","enable","caller","type","printf","pwd","times","logout","mapfile","readarray","help","which","print","whence","where","autoload","zmodload","setopt","unsetopt","emulate","noglob","rehash","functions","bindkey","zle","vared","sched","limit","unlimit","zstyle","zparseopts","ttyctl"]),$t=new Set(["sh","bash","zsh","dash","ksh","fish","python","python3","python2","node","ruby","perl","php","awk","sed","deno","bun"]),At="(?:dev|start|serve|watch|preview)",Br=new RegExp(`^(?:\\S*/)?(?:bun\\s+(?:install|i|add|remove|rm|update|outdated|audit|test|build|pm|x)(?:\\s|$)|bun\\s+run\\s+(?!${At}(?:\\s|$))[A-Za-z0-9:_-]+(?:\\s|$)|deno\\s+(?:test|lint|fmt|check|compile|install|info|doc|bench|outdated)(?:\\s|$)|deno\\s+task\\s+(?!${At}(?:\\s|$))[A-Za-z0-9:_-]+(?:\\s|$)|python[0-9.]*\\s+-m\\s+(?:pytest|unittest|mypy|ruff|pylint|flake8|black|tox|nox)(?:\\s|$)|php\\s+-l(?:\\s|$)|php\\s+(?:\\S*/)?(?:phpunit|pest|paratest|phpstan|pint|ecs|php-cs-fixer|psalm|rector|run-tests\\.php)(?:\\s|$)|php\\s+artisan\\s+(?!(?:serve|tinker|queue:work|queue:listen|horizon|octane:start|reverb:start|schedule:work|pail|dev)(?:\\s|$))\\S)`),Gr=/(?:^|\s)--watch(?:\s|=|$)/;function Zr(e){return Br.test(e)&&!Gr.test(e)}var Vr=/^((?:\S*\/)?(sh|bash|zsh|dash|ksh|fish)\s+(-[elux]*c[elux]*)\s+)(['"])/,Kr=/[()$]|(?:^|[;&|\n]\s*)(?:and|or|not|begin|end|if|else|switch|case|while|for|function|return)(?:\s|;|$)/,Dt=3;function Ft(e){let t=Vr.exec(e);if(!t)return null;let n=t[2]==="fish";if(n&&t[3]!=="-c")return null;let r=t[4],o=t[1].length+1,i=e.indexOf(r,o);if(i<=o)return null;let s=e.slice(i+1);if(s&&!/^\s/.test(s))return null;let u=e.slice(o,i);return r==='"'&&/[$`\\!]/.test(u)||n&&Kr.test(u)?null:{script:u,start:o,end:i,quote:r}}var qr=new Set(["cd","export","set","unset","source",".","true",":","pushd","popd"]);function Yr(e){return ge(e).filter(n=>{if(n.kind!=="cmd"||n.unsafe)return!1;let r=Ut(n.text);return r!==""&&!qr.has(r)&&!De.test(r)}).length>1}function Xr(e,t,n,r,o){if(n>=Dt)return null;let i=Ft(e);if(!i)return null;let{script:s,start:u,end:l,quote:a}=i,c=[],d=Wt(s,t,n+1,r,b=>c.push(b));if(d===s||a==='"'&&/["$`]/.test(d))return null;let m=a==="'"?d.replace(/'/g,"'\\''"):d,g=`${e.slice(0,u)}${m}${e.slice(l)}`,h=Yr(s);if(o)for(let b of h?[e,...c]:c)o(b);return h?`${t} ${g}`:g}var Ct=/(?:^|\s)(?:--follow|-[0-9a-zA-Z]*f[a-zA-Z]*)(?:\s|=|$)/,Qr=/(?:^|\s)(?:--follow|-[0-9a-zA-Z]*[fF][a-zA-Z]*)(?:\s|=|$)/,eo=new Set(["docker","podman","kubectl","nerdctl","docker-compose","stern","flyctl"]),Tt=new Set(["npm","pnpm","yarn","bun"]),Et=/^(?:dev|start|serve|preview|watch)(?::\S*)?$/,to=new Set(["--filter","-F","--dir","-C","--prefix","--workspace","-w","--cwd"]),vt=new Set(["npx","pnpx","bunx"]),no=new Set(["nodemon","top","htop","btop","watch"]),ro=new Set(["tsc","vitest","jest","webpack","rollup","esbuild","tsup","babel","sass","tailwindcss","mocha","swc","parcel","nest"]),oo=/(?:^|\s)--watch(?:All)?(?:\s|=(?!false(?:\s|$))|$)/,Ot=/(?:^|\s)-w(?:\s|$)/;function io(e){let t=e.map(s=>s.replace(/['"]/g,""));for(;t.length>1&&(t[0]==="env"||/^[A-Za-z_][A-Za-z0-9_]*=/.test(t[0]));)t=t.slice(1);let n=z(t[0]??"");if(vt.has(n)||Tt.has(n)&&(t[1]==="exec"||t[1]==="dlx"))t=t.slice(vt.has(n)?1:2).filter((s,u,l)=>!(s.startsWith("-")&&l.slice(0,u).every(a=>a.startsWith("-")))),n=z(t[0]??"");else if(Tt.has(n)){let s=t.slice(1).filter((l,a,c)=>!l.startsWith("-")&&!to.has(c[a-1]??""));s[0]==="workspace"&&s.splice(0,2);let u=s[0]==="run"||s[0]==="run-script"?s[1]:s[0];return u!==void 0&&Et.test(u)}let r=t.slice(1),o=r.join(" "),i=r.find(s=>!s.startsWith("-"));if(no.has(n)||oo.test(o)||ro.has(n)&&Ot.test(o))return!0;switch(n){case"next":return i==="dev"||i==="start";case"vite":return!r.includes("build")&&!r.includes("optimize");case"vitest":return i==="watch"||i==="dev";case"cargo":case"dotnet":return i==="watch";case"turbo":{let s=i==="run"?r.filter(u=>!u.startsWith("-"))[1]:i;return s!==void 0&&Et.test(s)}case"nx":{let s=i==="run"?r.filter(u=>!u.startsWith("-"))[1]?.split(":")[1]:i;return s!==void 0&&/^(?:serve|dev|start|watch)$/.test(s)}case"ping":return!r.some(s=>/^-[a-zA-Z]*c/.test(s));case"docker":case"podman":case"nerdctl":case"docker-compose":{let s=n==="docker-compose"?r:i==="compose"?r.slice(r.indexOf("compose")+1):null;return s?s.includes("up")&&!s.some(u=>u==="--detach"||/^-[a-zA-Z]*d[a-zA-Z]*$/.test(u)):i==="stats"&&!r.includes("--no-stream")||i==="events"}case"kubectl":return i==="port-forward"||(i==="get"||i==="rollout")&&Ot.test(o)||/(?:^|\s)--watch-only(?:\s|=|$)/.test(o);default:return!1}}function so(e,t){let n=z(t);return n==="tail"?Qr.test(e):n==="journalctl"?Ct.test(e):n==="stern"||eo.has(n)&&/\blogs?\b/.test(e)&&Ct.test(e)?!0:io(e.split(/\s+/))}var De=/^[A-Za-z_][A-Za-z0-9_]*\+?=/,uo=/^[A-Za-z_][A-Za-z0-9_-]*\s*\(\s*\)/,lo=/(?:^|[;&|\n({])\s*(?:[A-Za-z_][A-Za-z0-9_-]*\s*\(\s*\)|function\s+[A-Za-z_])/;function z(e){let t=e.lastIndexOf("/");return t===-1?e:e.slice(t+1)}function Mt(e){let t=new Array(e.length).fill(!1),n=[],r=0;for(;r<e.length;){let o=e[r],i=e[r+1],s=n[n.length-1];if(s==="'"){o==="'"&&n.pop(),r+=1;continue}if(o==="\\"){if(i===void 0)return null;r+=2;continue}if(s==="$'"){o==="'"&&n.pop(),r+=1;continue}if(o==="$"&&(i==="("||i==="{")){n.push(i==="("?")":"}"),r+=2;continue}if(o==="`"){s==="`"?n.pop():n.push("`"),r+=1;continue}if(s==='"'){o==='"'&&n.pop(),r+=1;continue}if(o==="$"&&i==="'"){n.push("$'"),r+=2;continue}if(o==="'"||o==='"'){n.push(o),r+=1;continue}if(o==="("||o==="{"&&s==="}"){n.push(o==="("?")":"}"),r+=1;continue}if(o===s){n.pop(),r+=1;continue}if(o===")"&&s===void 0)return null;t[r]=s===void 0,r+=1}return n.length===0?t:null}function Le(e){let t=Mt(e);if(!t)return!0;for(let n=0;n<e.length;n++)if(t[n]&&e[n]===">")return!0;return!1}function ge(e){let t=Mt(e);if(!t)return[{kind:"cmd",text:e,unsafe:!0}];let n=[],r="",o=0,i=()=>{r.length>0&&(n.push({kind:"cmd",text:r}),r="")},s=(u,l)=>{i(),n.push({kind:"sep",text:u}),o+=l};for(;o<e.length;){let u=e[o],l=e[o+1];if(t[o]){if(u===">"&&l==="|"){r+=">|",o+=2;continue}if(u==="&"&&l==="&"){s("&&",2);continue}if(u==="&"&&l!==">"){let a=r.trimEnd(),c=a[a.length-1];if(c!==">"&&c!=="<"&&c!=="&"){s("&",1);continue}}if(u==="|"&&l==="|"){s("||",2);continue}if(u==="|"&&l==="&"){s("|&",2);continue}if(u===";"&&l===";"){let a=e[o+2]==="&";s(a?";;&":";;",a?3:2);continue}if(u===";"||u===`
|
|
15
|
+
`||u==="|"){s(u,1);continue}}r+=u,o+=1}return i(),n}function Ut(e){return e.trim().split(/\s+/)[0]??""}function S(e,t=process.platform){try{let n=je(jt(import.meta.url)),r=t==="win32",o=e&&e!=="claude-code"&&e!=="codex"&&!r?`TOKMIZER_HOST=${e} `:"";if(r&&(!e||e==="claude-code")){let l=p(n,"..","bin","tkr-exec.exe");if(v(l))return Ie(l,t)?`'${l.replace(/\\/g,"/").replace(/'/g,"'\\''")}'`:null}let i=p(n,"..","bin","tkr-exec"),s=!r&&v(i);if(s&&!Ie(i,t))return null;if(!r&&process.env.TOKMIZER_STABLE_RUN!=="0"){let l=dt(p(n,"..","bin","tkr-exec.js"));if(l&&(s||v(p(n,"..","bin","tkr-exec.js"))))return`${o}'${l.replace(/'/g,"'\\''")}'`}if(s)return`${o}'${i.replace(/'/g,"'\\''")}'`;if(I()){let l=r?process.execPath.replace(/\\/g,"/"):process.execPath;return`${o}'${l.replace(/'/g,"'\\''")}' exec`}let u=p(n,"..","bin","tkr-exec.js");return v(u)?`${o}node '${u.replace(/'/g,"'\\''")}'`:null}catch{return null}}function zt(e,t="tkr-exec",n=()=>!0,r){return Wt(e,t,0,n,r)}var ao=new Set(["{","for","while","until","if","case","select"]),co=new Set(["}","done","fi","esac"]),fo=new Set(["then","do","else","elif","!","time","{","if","while","until"]);function po(e,t){let n=e[t+1];return Le(e[t].text)||n?.kind==="sep"&&(n.text==="|"||n.text==="|&")}function mo(e){let t=new Set,n=[];for(let r=0;r<e.length;r++){let o=e[r];if(!(o.kind!=="cmd"||o.unsafe))for(let i of o.text.trim().split(/\s+/)){if(co.has(i)){let s=n.pop();if(s!==void 0&&po(e,r))for(let u=s;u<=r;u++)t.add(u);continue}if(ao.has(i)&&n.push(r),!fo.has(i))break}}return t}function Wt(e,t,n,r,o){if(e.includes("<<")||lo.test(e))return e;let i=ge(e),s=mo(i),u=[];for(let l=0;l<i.length;l++){let a=i[l];if(a.kind==="sep"||a.unsafe||s.has(l)){u.push(a.text);continue}let c=a.text.trim();if(!c){u.push(a.text);continue}let d=Ut(c),m=i[l+1],g=m?.kind==="sep"&&(m.text==="|"||m.text==="|&"),h=m?.kind==="sep"&&m.text==="&",b=!g&&!h&&!Le(a.text)&&!a.text.includes("<(")&&!a.text.includes(">(")?Xr(c,t,n,r,o):null;if(b!==null){u.push(`${a.text.match(/^\s*/)?.[0]??""}${b}${a.text.slice(a.text.trimEnd().length)}`);continue}if(c===t||c.startsWith(t)&&/^\s/.test(c.slice(t.length))||Wr.has(d)||Jr.has(d)||($t.has(d)||$t.has(z(d)))&&!Zr(c)||De.test(d)||d.startsWith("(")||d.startsWith("#")||d.startsWith("<")||d.startsWith(">")||uo.test(c)||so(c,d)||d.endsWith(")")||g||h||Le(a.text)||a.text.includes("<(")||a.text.includes(">(")||d==="node"&&c.includes("tkr-exec.js")||!r(d,c)){u.push(a.text);continue}let q=a.text.match(/^\s*/)?.[0]??"",x=a.text.slice(a.text.trimEnd().length);o?.(c),u.push(`${q}${t} ${c}${x}`)}return u.join("")}var go=new Set(["command","workdir","timeout_ms","yield_time_ms","max_output_tokens","shell","login","tty","description"]),ho=new Set(["cd","cat","head","tail","ls","tree","find","grep","rg","wc","nl","sort","cut","diff","stat","file","du","df","ps","jq","yq","pwd","which"]),ko=new Set(["log","diff","show","status","blame","ls-files","rev-parse","describe","shortlog"]),_o={find:/^-(?:delete|exec|execdir|ok|okdir|fprint|fls)/,sort:/^(?:-[^-]*o|--output|--compress-program)/,rg:/^(?:--pre|--hostname-bin|-[^-]*z|--search-zip)/,yq:/^(?:-[^-]*[is]|--inplace|--split-exp)/,file:/^(?:-C|--compile)/,tree:/^(?:-o|--output|-R$|-H$)/,git:/^(?:--output|--ext-diff|--textconv|-c$|--exec-path|--git-dir|--work-tree)/,eslint:/^--fix/},pe=["test","run test","run build","run lint","run typecheck"],bo={npm:new Set(pe),pnpm:new Set([...pe,"build","lint","typecheck"]),yarn:new Set([...pe,"build","lint","typecheck"]),bun:new Set(pe),cargo:new Set(["test","build","check","clippy"]),go:new Set(["test","build","vet"]),mvn:new Set(["test","compile","verify"]),gradle:new Set(["test","build","check"]),dotnet:new Set(["test","build"])},wo=new Set(["pytest","tsc","vitest","jest","eslint","mypy"]);function Jt(e,t,n=0){if(/\$|`|<\(|>\(|\\\r?\n/.test(e)||/>/.test(e.replace(/2>&1|[12]?>\s*\/dev\/null/g,"")))return!1;for(let r of ge(e)){if(r.kind==="sep")continue;if(r.unsafe)return!1;let o=n<Dt?Ft(r.text.trim()):null;if(o){if(!Jt(o.script,t,n+1))return!1;continue}let i=r.text.trim().split(/\s+/).filter(Boolean).map(a=>a.replace(/['"\\]/g,""));if(i.length===0)continue;if(i.some(a=>De.test(a)))return!1;let s=z(i[0]);if(s!==i[0])return!1;let u=_o[s];if(u&&i.slice(1).some(a=>u.test(a)))return!1;if((s==="git"?ko.has(i[1]??""):ho.has(s))||t&&wo.has(s))continue;let l=t?bo[s]:void 0;if(!(l&&(l.has(i[1]??"")||i[1]==="run"&&l.has(`run ${i[2]??""}`))))return!1}return!0}function Fe(e,t,n=S(t),r=y,o=he(),i=process.env.PATH,s=Me){if(!k(e)||e.tool_name!=="Bash"||t==="claude-code"&&$o(s()))return null;let u=e.tool_input;if(!k(u)||u.run_in_background)return null;let l=u.command;if(typeof l!="string"||!l||t==="codex"&&Object.keys(u).some(q=>!go.has(q)))return null;let a=typeof e.cwd=="string"&&e.cwd?e.cwd:u.workdir,c=typeof a=="string"&&a?a:void 0,d=typeof e.session_id=="string"&&e.session_id?e.session_id:"unknown",m=typeof e.permission_mode=="string"?e.permission_mode:void 0,g=t==="claude-code"?So(l,c,i):null;if(g)return JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",updatedInput:{...u,command:g}}});let h=Qt(l,{host:t,sessionId:d,cwd:c,claudeDirs:o,pathEnv:i,permissionMode:m},n,r);if(!h)return null;let b={...u,command:h.command};return JSON.stringify({hookSpecificOutput:t==="codex"?{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:b}:h.allowedBy?{hookEventName:"PreToolUse",permissionDecision:"allow",permissionDecisionReason:`Tokmizer: allowed by your rule ${h.allowedBy}`,updatedInput:b}:h.ask?{hookEventName:"PreToolUse",permissionDecision:"ask",permissionDecisionReason:"Tokmizer shortens this command's output; nothing else changes.",updatedInput:b}:{hookEventName:"PreToolUse",updatedInput:b}})}var yo=/^tkr\s+restore\s+([0-9a-f]{8,64}(?:\s+--lines\s+\d+:\d+)?|--list)\s*$/;function So(e,t,n,r=p(je(jt(import.meta.url)),"..","bin","tkr.js")){let o=yo.exec(e.trim());return!o||L("tkr",t,n)||!I()&&!v(r)?null:`${ut(r).map(T).join(" ")} restore ${o[1].trim()}`}var xo=/(?:^|\s)--(?:disallowedTools|disallowed-tools|settings|setting-sources)(?:[=\s]|$)/;function Me(e=process.env,t=process.platform){let n=Number(e.CLAUDE_PID)||process.ppid;if(t==="win32"||!Number.isInteger(n)||n<=1)return null;try{let r=Ht("ps",["-ww","-o","args=","-p",String(n)],{encoding:"utf8",timeout:2e3});return r.status===0&&r.stdout.trim()?r.stdout:null}catch{return null}}function $o(e){return e===null||xo.test(e)}function Ao(e,t){if(!v(e))return"missing";try{let n=re(e,"utf8").replace(/^\uFEFF/,"");return n.trim()===""?{}:JSON.parse(t?Bt(n):n)}catch{return"unreadable"}}function Bt(e){let t="",n=!1;for(let r=0;r<e.length;r++){let o=e[r];if(n){t+=o,o==="\\"?t+=e[++r]??"":o==='"'&&(n=!1);continue}if(o==='"')n=!0,t+=o;else if(o==="/"&&e[r+1]==="/"){for(;r<e.length&&e[r]!==`
|
|
16
16
|
`;)r++;t+=`
|
|
17
|
-
`}else if(o==="/"&&e[r+1]==="*"){if(r=e.indexOf("*/",r+2),r===-1)return"";r+=1}else t+=o}return t.replace(/,(\s*[}\]])/g,"$1")}function z(e){let t=[],n=Mr(e);for(;;){t.push(n);let r=Lt(n);if(r===n)return t;n=r}}function xo(){let e=process.platform==="darwin"?"/Library/Application Support/ClaudeCode":process.platform==="win32"?"C:\\Program Files\\ClaudeCode":"/etc/claude-code",t=[p(e,"managed-settings.json")];try{for(let n of pe(p(e,"managed-settings.d")))n.endsWith(".json")&&t.push(p(e,"managed-settings.d",n))}catch{return t}return t}function Ao(){try{return Dr().username}catch{return""}}function $o(e){return e.error?e.error.code==="ETIMEDOUT":e.status!==1}var Co=5*6e4,vt=new Map;function Jt(e,t){let n=vt.get(e);if(n&&Date.now()-n.at<Co)return n.value;let r=["HKLM","HKCU"].some(o=>$o(It(e,["query",`${o}\\SOFTWARE\\Policies\\ClaudeCode`,"/v","Settings"],{cwd:t,stdio:"ignore",timeout:2e3,windowsHide:!0})));return vt.set(e,{at:Date.now(),value:r}),r}function To(){let e=process.env.SystemRoot||"C:\\Windows";return Jt(Ur.join(e,"System32","reg.exe"),e)}var Ot="/mnt/c/Windows/System32/reg.exe";function Eo(e){return!process.env.WSL_DISTRO_NAME&&!e("/proc/sys/fs/binfmt_misc/WSLInterop")?!1:e("/mnt/c/Program Files/ClaudeCode")?!0:e(Ot)&&Jt(Ot,"/mnt/c/Windows")}function vo(e=process.platform,t=R,n=To,r=Ao(),o=()=>Eo(t)){if(e==="darwin"){let i="/Library/Managed Preferences";return t(p(i,"com.anthropic.claudecode.plist"))||r!==""&&t(p(i,r,"com.anthropic.claudecode.plist"))}return e==="win32"?n():e==="linux"&&o()}function re(e,t,n,r){let o=[];for(let i of e){let s=So(i,t);if(s!=="missing"&&(s==="unreadable"||!k(s)||!n(s,o)))return"unreadable"}return{matchers:o,complete:r}}function ne(e){return e===void 0?[]:Array.isArray(e)?e.filter(t=>typeof t=="string"):null}function ge(){return{projectDir:process.env.CLAUDE_PROJECT_DIR,configDir:process.env.CLAUDE_CONFIG_DIR?.trim()?ie():void 0}}function Oo(e,t){let n=x=>[p(x,"settings.json"),p(x,"settings.local.json")],r=x=>n(p(x,".claude")),o=p(I(),".claude"),i=t.configDir||o;if(vo())return"unreadable";let u=[[[...[...new Set([p(i,"remote-settings.json"),p(o,"remote-settings.json")])],...xo()],"managed"],[[p(i,"settings.json")],"loaded"],[[p(i,"settings.local.json")],"loadedLocal"],[t.configDir?n(o):[],"extra"],[t.projectDir?r(t.projectDir):[],"project"],[z(e).flatMap(r),"extra"]],l=[],a={managed:[],loaded:[],loadedLocal:[],project:[],extra:[]},c={managed:!1,loaded:!1,loadedLocal:!1,project:!1,extra:!1},d=!1,g="managed",m=(x,ye)=>{let v=x.permissions;if(g==="managed"&&(x.allowManagedPermissionRulesOnly===!0||k(v)&&v.allowManagedPermissionRulesOnly===!0)&&(d=!0),v===void 0)return!0;if(!k(v))return!1;for(let We of["deny","ask","allow"]){let Je=ne(v[We]);if(!Je)return!1;for(let Be of Je){let H=/^\s*Bash\s*(?:\(([\s\S]*)\))?\s*$/.exec(Be);if(H)if(We!=="allow")ye.push(L((H[1]??"*").replace(/:\*$/," *")));else if(H[1]===void 0||H[1].trim()==="*")c[g]=!0;else{l.push(L(H[1].replace(/:\*$/," *")));let Ge=qo(H[1]);Ge&&a[g].push({rule:Be.trim(),matches:Ge})}}}return!0},h=[];for(let[x,ye]of u){g=ye;let v=re(x,!1,m,!0);if(v==="unreadable")return"unreadable";h.push(...v.matchers)}let S=c.managed||(c.loaded||c.loadedLocal)&&!d,we=[...a.managed,...d?[]:a.loaded];return{matchers:[...h,...S?[]:l],complete:!0,allow:l,allowsEverything:S,guards:h,trustedAllow:we}}function Ro(e){let t=[p(I(),".cursor","cli-config.json"),...z(e).map(n=>p(n,".cursor","cli.json"))];return re(t,!0,(n,r)=>{let o=n.permissions;if(o===void 0)return!0;if(!k(o))return!1;let i=ne(o.deny);if(!i)return!1;for(let s of i){let u=/^\s*Shell\s*(?:\(([\s\S]*)\))?\s*$/.exec(s);if(!u)continue;let l=u[1]??"*",a=l.indexOf(":");r.push(L(a===-1?`${l} *`:`${l.slice(0,a)} ${l.slice(a+1)}`))}return!0},!1)}function Po(){return process.platform==="darwin"?"/Library/Application Support/GeminiCli":process.platform==="win32"?"C:\\ProgramData\\gemini-cli":"/etc/gemini-cli"}var Bt=/^\s*(?:run_shell_command|ShellTool)\s*(?:\(([\s\S]*)\))?\s*$/;function No(e,t){let n=e.tools;if(n!==void 0&&!k(n))return!1;let r=[ne(e.excludeTools),ne(k(n)?n.exclude:void 0)];for(let o of r){if(!o)return!1;for(let i of o){let s=Bt.exec(i);s&&t.push(L(s[1]===void 0?"*":`${s[1]}*`))}}return!0}function Rt(e){try{return JSON.parse(e)}catch{return null}}function Io(e){let t=e.trim();if(t.startsWith('"""')||t.startsWith("'''"))return null;if(t.startsWith("[")){if(!/\]\s*(?:#.*)?$/.test(t))return null;let n=[];for(let r of t.matchAll(/"((?:\\.|[^"\\])*)"|'([^']*)'/g)){let o=r[2]??Rt(`"${r[1]}"`);if(o===null)return null;n.push(o)}return n}if(t.startsWith('"')){let n=/^"((?:\\.|[^"\\])*)"/.exec(t);return n?Rt(`"${n[1]}"`):null}if(t.startsWith("'")){let n=/^'([^']*)'/.exec(t);return n?n[1]:null}return t.replace(/\s*#.*$/,"")}function Lo(e,t){for(let n of e.split(/^\s*\[\[\s*rule\s*\]\]\s*$/m).slice(1)){let r={};for(let l of n.split(/\r?\n/)){if(/^\s*\[/.test(l))break;let a=/^\s*([A-Za-z_]+)\s*=\s*(.*)$/.exec(l);if(!a)continue;let c=Io(a[2]);if(c===null)return!1;r[a[1]]=c}let o=r.decision;if(o!=="deny"&&o!=="ask_user"||!(r.toolName===void 0?["*"]:[r.toolName].flat()).some(l=>l==="*"||Bt.test(l)))continue;let s=r.commandPrefix===void 0?[]:[r.commandPrefix].flat(),u=[r.commandRegex,r.argsPattern].flat().filter(l=>typeof l=="string");if(s.length===0&&u.length===0){t.push(()=>!0);continue}for(let l of s)t.push(L(`${l}*`));for(let l of u){let a;try{a=new RegExp(l)}catch{return!1}t.push(c=>a.test(JSON.stringify({command:c}))||he(a,c))}}return!0}function Pt(e){try{return pe(e).filter(t=>t.endsWith(".toml")).map(t=>p(e,t))}catch{return[]}}function Ho(e){let t=Po(),n=[p(t,"system-defaults.json"),p(t,"settings.json"),process.env.GEMINI_CLI_SYSTEM_SETTINGS_PATH,process.env.GEMINI_CLI_SYSTEM_DEFAULTS_PATH,p(I(),".gemini","settings.json"),...z(e).map(o=>p(o,".gemini","settings.json"))].filter(o=>!!o),r=re(n,!0,No,!1);if(r==="unreadable")return r;for(let o of[...Pt(p(I(),".gemini","policies")),...Pt(p(t,"policies"))]){let i;try{i=te(o,"utf8")}catch{return"unreadable"}if(!Lo(i,r.matchers))return"unreadable"}return r}function He(e,t){if(e===void 0)return!0;if(typeof e=="string")return e!=="allow"&&t.push(()=>!0),!0;if(!k(e))return!1;for(let n of["bash","shell","*"]){let r=e[n];if(r!==void 0){if(typeof r=="string"){r!=="allow"&&t.push(()=>!0);continue}if(!k(r))return!1;for(let[o,i]of Object.entries(r))i!=="allow"&&t.push(L(o.replace(/\?/g,"*")))}}return!0}function Nt(e,t){if(e.permissions!==void 0||!He(e.permission,t))return!1;for(let n of["agent","agents","mode"]){let r=e[n];if(r!==void 0){if(!k(r))return!1;for(let o of Object.values(r))if(k(o)&&(o.permissions!==void 0||!He(o.permission,t)))return!1}}return!0}function jo(e){for(let t of e)for(let n of["agent","agents","mode","modes"]){let r;try{r=pe(p(t,n))}catch{continue}for(let o of r)try{if(o.endsWith(".md")&&/permission/i.test(te(p(t,n,o),"utf8")))return!0}catch{return!0}}return!1}function Do(e){let t=p(process.env.XDG_CONFIG_HOME||p(I(),".config"),"opencode"),n=z(e),r=[t,...n.map(u=>p(u,".opencode"))];if(jo(r))return"unreadable";let o=["opencode.json","opencode.jsonc","config.json"],i=[...o.map(u=>p(t,u)),process.env.OPENCODE_CONFIG,...n.flatMap(u=>[...o.slice(0,2).map(l=>p(u,l)),...o.slice(0,2).map(l=>p(u,".opencode",l))])].filter(u=>!!u),s=re(i,!0,Nt,!0);if(s==="unreadable")return s;for(let u of[process.env.OPENCODE_CONFIG_CONTENT,process.env.OPENCODE_PERMISSION]){if(!u)continue;let l;try{l=JSON.parse(Wt(u))}catch{return"unreadable"}if(!(u===process.env.OPENCODE_PERMISSION?He(l,s.matchers):k(l)&&Nt(l,s.matchers)))return"unreadable"}return s}function Fo(){return re([p(I(),".gemini","antigravity-cli","settings.json")],!0,(e,t)=>{let n=e.permissions;if(n===void 0)return!0;if(!k(n))return!1;for(let r of["deny","ask"]){let o=ne(n[r]);if(!o)return!1;for(let i of o){let s=/^\s*command\s*\(([\s\S]*)\)\s*$/.exec(i);if(!s)continue;let u=s[1].trim();if(!u.startsWith("regex:")){t.push(L(u==="*"?"*":`${u} *`));continue}let l;try{l=new RegExp(u.slice(6))}catch{return!1}t.push(a=>he(l,a))}}return!0},!1)}function Mo(e){let t=[],n=/\s+|#[^\n]*|("(?:[^"\\\n]|\\.)*"|'(?:[^'\\\n]|\\.)*')|([A-Za-z_][A-Za-z0-9_]*|[()[\],=])|(.)/gy;for(let r=n.exec(e);r&&r[0];r=n.exec(e)){if(r[3]!==void 0)return null;(r[1]!==void 0||r[2]!==void 0)&&t.push(r[1]??r[2])}return t}function Gt(e,t){let n=e[t.i++];if(n===void 0)return;if(/^["']/.test(n))try{return n.startsWith('"')?JSON.parse(n):JSON.parse(`"${n.slice(1,-1).replace(/\\'/g,"'").replace(/"/g,'\\"')}"`)}catch{return}if(n!=="[")return/^[A-Za-z_]/.test(n)?null:void 0;let r=[];for(;e[t.i]!=="]";){let o=Gt(e,t);if(o===void 0)return;if(r.push(o),e[t.i]===",")t.i++;else if(e[t.i]!=="]")return}return t.i++,r}function Zt(e){if(!Array.isArray(e)||e.length===0)return null;let t=[];for(let r of e){let o=typeof r=="string"?[r]:Array.isArray(r)?r:null;if(!o||o.length===0||!o.every(i=>typeof i=="string"&&i!==""))return null;t.push(`(?:${o.map(Me).join("|")})`)}let n=new RegExp(`^${t.join(" ")}(?= |$)`);return r=>he(n,r)}function Uo(e,t){let n=Mo(e);if(!n)return!1;for(let r=0;r<n.length;r++){if(n[r]!=="prefix_rule"||n[r+1]!=="(")continue;let o={i:r+2},i={};for(;n[o.i]!==")";){let l=n[o.i];if(!l||!/^[A-Za-z_]/.test(l)||n[o.i+1]!=="="||(o.i+=2,i[l]=Gt(n,o),i[l]===void 0&&(l==="pattern"||l==="decision")))return!1;if(n[o.i]===",")o.i++;else if(n[o.i]!==")")return!1}r=o.i;let s="decision"in i?i.decision:"allow";if(s!=="allow"&&s!=="prompt"&&s!=="forbidden")return!1;let u=Zt(i.pattern);if(!u)return!1;s!=="allow"&&t.push(u)}return!0}function zo(e){if(!R(e))return[];try{return pe(e).filter(t=>t.endsWith(".rules")).sort().map(t=>p(e,t))}catch{return"unreadable"}}function Wo(){return process.platform==="win32"?p(process.env.ProgramData||"C:\\ProgramData","OpenAI","Codex","requirements.toml"):"/etc/codex/requirements.toml"}function Jo(e){if(!(!k(e)||Object.keys(e).length!==1)){if(typeof e.token=="string")return e.token;if(Array.isArray(e.any_of)&&e.any_of.every(t=>typeof t=="string"))return e.any_of}}function Bo(e,t){let n;try{n=Oe(e)}catch{return!1}if(n.rules===void 0)return!0;if(!k(n.rules))return!1;let r=n.rules.prefix_rules;if(r===void 0)return!0;if(!Array.isArray(r))return!1;for(let o of r){if(!k(o)||!Array.isArray(o.pattern)||o.decision!=="prompt"&&o.decision!=="forbidden")return!1;let i=o.pattern.map(Jo);if(i.some(u=>u===void 0))return!1;let s=Zt(i);if(!s)return!1;t.push(s)}return!0}function Go(e){let t=process.env.CODEX_HOME||p(I(),".codex"),n=[p(t,"rules"),...z(e).map(i=>p(i,".codex","rules"))],r=[],o=null;try{o=te(Wo(),"utf8")}catch(i){let s=i.code;if(s!=="ENOENT"&&s!=="ENOTDIR")return"unreadable"}if(o!==null&&!Bo(o,r))return"unreadable";for(let i of[...new Set(n)]){let s=zo(i);if(s==="unreadable")return"unreadable";for(let u of s){let l;try{l=te(u,"utf8")}catch{return"unreadable"}if(!Uo(l,r))return"unreadable"}}return{matchers:r,complete:!1}}function k(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Me(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Zo(e){let t=e.trim().replace(/\s+/g," "),n=t.endsWith(" *")&&t.length>2,r=(n?t.slice(0,-2):t).split("*").map(Me).join("[\\s\\S]*");return new RegExp(`^${r}${n?"(?: [\\s\\S]*)?":""}(?= |$)`)}var Vo=512;function Ko(e){let t=e.replace(/['"\\]/g,"").split(/[\s;&|(){}<>`$]+/).filter(Boolean);return[t,t.map(U)]}function he(e,t){if(e.test(t)||e.test(t.trim().replace(/\s+/g," ")))return!0;for(let n of Ko(t)){if(n.length>Vo)return!0;for(let r=0;r<n.length;r++)if(e.test(n.slice(r).join(" ")))return!0}return!1}function L(e){let t=Zo(e);return n=>he(t,n)}function qo(e){let t=e.trim().replace(/:\*$/," *"),n=t.endsWith(" *"),r=n?t.slice(0,-2):t;if(!r||r.includes("*")||/\s\s|[^\S ]|^ | $/.test(r))return null;let o=new RegExp(`^${Me(r)}${n?"(?: [\\s\\S]*)?":""}$`);return i=>o.test(i)}var Yo={"claude-code":Oo,cursor:Ro,"gemini-cli":Ho,opencode:Do,antigravity:Fo,codex:Go},Xo=new Set(["codex"]),Vt=/(?:^|[\s=:/~])\.(?:git|claude|vscode|idea|husky)(?=[/\s;|&)]|$)|(?:^|[\s=:/~])\.(?:bashrc|bash_profile|bash_login|bash_logout|profile|zshrc|zprofile|zshenv|zlogin|zlogout|gitconfig|gitmodules|ripgreprc|mcp\.json)(?![A-Za-z0-9_])/;function Qo(e,t,n){let r=Yo[e];return r?r(t??process.cwd(),n):{matchers:[],complete:!1}}function ei(e,t,n){return e==="unreadable"||Vt.test(t.replace(/['"\\]/g,""))||e.matchers.some(r=>r(t))?!1:e.complete||zt(t,!Xo.has(n))}var Kt=new Set(["default","acceptEdits","dontAsk"]);function qt(e,t){return t.host!=="claude-code"||t.permissionMode==="bypassPermissions"?!0:e!=="unreadable"&&e.allowsEverything===!0&&Kt.has(t.permissionMode??"")}var ti=/(?:^|[\s/])git(?:\.exe|\.real|-[a-z][\w-]*)?(?=\s|$)/;function ni(e){if(!e)return!1;try{for(let t of z(e)){let n=p(t,".git");if(R(n))return jr(n).isFile()}}catch{return!0}return!1}function ri(e,t){let n="pathEnv"in e?e.pathEnv:process.env.PATH,r,o;return(i,s)=>e.host!=="claude-code"?M(i,e.cwd,n):s!==void 0&&ti.test(s)&&(o??=ni(e.cwd))||(r??=_t(t.configDir),!M(i,e.cwd,n)&&!r.paths.some(u=>M(i,e.cwd,u)))?!1:i.includes("/")||!bt(i,r)}var oi=/^[^\s;&|<>()$`\\{}*?[\]~#!]+(?: [^\s;&|<>()$`\\{}*?[\]~#!]+)*$/;function ii(e,t,n){return n.host!=="claude-code"||e==="unreadable"||qt(e,n)||!Kt.has(n.permissionMode??"")||!oi.test(t)||Vt.test(t.replace(/['"]/g,""))||(e.guards??[]).some(r=>r(t))?null:(e.trustedAllow??[]).find(r=>r.matches(t))?.rule??null}var si=65536,ui=/^(?:[A-Za-z_][A-Za-z0-9_]*=\S*\s+)*(?:(?:npx|bunx|pnpm\s+exec|yarn\s+exec|uv\s+run|poetry\s+run)\s+)?(?:\.\/)?(?:ctest|gradlew|gradle|mvnw|mvnd|mvn|make|cmake|sbt|phpstan|phpunit|pest|pytest|py\.test|tox|nox|vitest|jest|mocha|playwright\s+test|tsc|(?:cargo|go)\s+(?:build|test|check|clippy|vet)|(?:bun|deno)\s+(?:test|check|lint|install)|(?:npm|pnpm|yarn)\s+(?:test|t|ci|install|run\s+\S+)|dotnet\s+(?:build|test)|swift\s+(?:build|test)|composer\s+(?:install|update|test))(?:\s|$)/;function li(e,t){return t.host==="claude-code"&&t.permissionMode==="default"&&ui.test(e.trim())}function Yt(e,t,n,r){if(!n||e.length>si||/["\\$`;&|<>(){}]|'\\''/.test(n))return null;let o=t.claudeDirs??ge(),i=Qo(t.host,t.cwd,o),s=ii(i,e,t),u=s||ei(i,e,t.host)?Mt(e,n,ri(t,o)):e;return u!==e&&i!=="unreadable"&&(s?(i.guards??[]).some(l=>l(u)):i.matchers.some(l=>l(u))||(i.allow??[]).some(l=>l(u)&&!l(e)))&&(u=e),r(t.sessionId,u!==e),u===e?null:s?{command:u,allowedBy:s}:qt(i,t)?{command:u}:i!=="unreadable"&&li(e,t)&&!(i.allow??[]).some(l=>l(e))&&!(i.trustedAllow??[]).some(l=>l.matches(e))?{command:u,ask:!0}:null}function P(e,t,n,r){let o=Yt(e,t,n,r);return o&&!o.ask?o.command:null}function _(e,t){let n=e[t];return typeof n=="string"&&n?n:null}function oe(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function ai(e){return _(e,"prompt_id")||_(e,"scratchpad_dir")?!0:oe(e.effort)}function ci(e){return _(e,"tool_use_id")?.startsWith("toolu_")===!0||/^claude/i.test(_(e,"model")??"")}var fi=new Set(["BeforeTool","AfterTool","BeforeAgent","AfterAgent","BeforeModel","AfterModel","BeforeToolSelection"]),di=new Set(["preToolUse","postToolUse","beforeShellExecution","afterShellExecution","beforeSubmitPrompt","sessionStart","sessionEnd","stop"]),pi=new Set(["pre_tool","post_tool"]),mi=new Set(["before_tool_call","after_tool_call"]),gi=new Set(["runTerminalCommand","run_in_terminal"]),hi=[["codex",e=>_(e,"turn_id")!==null],["claude-code",ai],["cursor",e=>_(e,"cursor_version")!==null||_(e,"generation_id")!==null||_(e,"conversation_id")!==null||Array.isArray(e.workspace_roots)||di.has(_(e,"hook_event_name")??"")],["gemini-cli",e=>fi.has(_(e,"hook_event_name")??"")],["qwen-code",e=>e.hook_event_name==="PreToolUse"&&e.tool_name==="run_shell_command"],["vibe",e=>pi.has(_(e,"hook_event_name")??"")],["antigravity",e=>oe(e.toolCall)],["copilot",e=>_(e,"toolName")!==null&&"toolArgs"in e||gi.has(_(e,"tool_name")??"")],["grok",e=>e.toolName==="run_terminal_command"||e.tool_name==="run_terminal_command"||oe(e.toolInput)&&!("toolArgs"in e)],["droid",e=>e.tool_name==="Execute"],["trae",e=>e.tool_name==="RunCommand"],["crush",e=>e.hook_event_name===void 0&&_(e,"event")!==null&&!mi.has(_(e,"event"))]],ki=new Set(["codex","antigravity"]);function _i(e){return oe(e)?hi.filter(([,t])=>t(e)).map(([t])=>t):[]}function Xt(e,t){if(!oe(e))return null;let n=_i(e);return n.length>1?null:n.length===1?n[0]:ci(e)&&ki.has(t)?"claude-code":t==="codex"?null:t}var Ue=JSON.stringify({permission:"allow"});function Qt(e,t=y("cursor"),n=w){if(e.tool_name!=="Shell")return Ue;let r=e.tool_input??{},o=r.command;if(typeof o!="string"||!o)return Ue;let i=typeof r.working_directory=="string"?r.working_directory:void 0,s=P(o,{host:"cursor",sessionId:e.conversation_id??"unknown",cwd:i},C()?null:t,n);return s?JSON.stringify({permission:"allow",updated_input:{...r,command:s}}):Ue}var ke="{}";function en(e,t=y("gemini-cli"),n=w){if(e.hook_event_name!=="BeforeTool"||e.tool_name!=="run_shell_command")return ke;let r=e.tool_input??{};if(r.is_background)return ke;let o=r.command;if(typeof o!="string"||!o)return ke;let i=typeof e.cwd=="string"?e.cwd:void 0,s=P(o,{host:"gemini-cli",sessionId:e.session_id??"unknown",cwd:i},C()?null:t,n);return s?JSON.stringify({hookSpecificOutput:{tool_input:{command:s}}}):ke}function J(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function B(e,t,n="unknown",r=y(t),o=w){return e?P(e,{host:t,sessionId:n},C()?null:r,o):null}var bi=new Set(["bash","file_system.bash"]),ze=JSON.stringify({decision:"allow"});function tn(e,t=(n,r)=>B(n,"vibe",r)){if(!J(e)||e.hook_event_name!=="pre_tool"||typeof e.tool_name!="string"||!bi.has(e.tool_name))return"";let n=e.tool_input;if(!J(n)||typeof n.command!="string"||!n.command)return"";let r=t(n.command,typeof e.session_id=="string"?e.session_id:"unknown");return r?JSON.stringify({hook_specific_output:{tool_input:{...n,command:r}}}):""}function nn(e,t=(n,r)=>B(n,"antigravity",r)){if(!J(e)||!J(e.toolCall)||e.toolCall.name!=="run_command")return ze;let n=e.toolCall.args;if(!J(n)||typeof n.CommandLine!="string"||!n.CommandLine)return ze;let r=t(n.CommandLine,typeof e.conversationId=="string"?e.conversationId:"unknown");return r?JSON.stringify({decision:"allow",overwrite:{CommandLine:r}}):ze}var E="{}",wi=new Set(["runTerminalCommand","run_in_terminal","Bash","bash"]),yi=["run_in_background","is_background","isBackground"];function _e(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Si(e){let t=e.session_id??e.sessionId;return typeof t=="string"&&t?t:"unknown"}function xi(e,t){let n=e.cwd??t.cwd??t.workdir??t.working_directory;return typeof n=="string"&&n?n:void 0}function be(e,t,n,r,o){if(!_e(t)||yi.some(s=>t[s]===!0))return null;let i=t.command;return typeof i!="string"||!i?null:P(i,{host:e,sessionId:Si(n),cwd:xi(n,t)},C()?null:r,o)}function Z(e,t){return JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",updatedInput:{...e,command:t}}})}function Ai(e){if(_e(e))return e;if(typeof e!="string")return null;try{let t=JSON.parse(e);return _e(t)?t:null}catch{return null}}function $i(e,t,n){if(typeof e.tool_name=="string"){if(!wi.has(e.tool_name))return E;let i=e.tool_input,s=be("copilot",i,e,t,n);return s?Z(i,s):E}if(e.toolName!=="bash")return E;let r=Ai(e.toolArgs),o=be("copilot",r,e,t,n);return o?JSON.stringify({modifiedArgs:{...r,command:o}}):E}function G(e,t,n){return(r,o,i)=>{if(r.tool_name!==t)return E;let s=r.tool_input,u=be(e,s,r,o,i);return u?n(s,u):E}}var Ci=new Set(["run_terminal_command","Bash","bash"]);function Ti(e,t,n){let r=e.toolName??e.tool_name;if(typeof r!="string"||!Ci.has(r))return E;let o=e.toolInput??e.tool_input,i=be("grok",o,e,t,n);return i?Z(o,i):E}var Ei={copilot:$i,droid:G("droid","Execute",Z),trae:G("trae","RunCommand",Z),"qwen-code":G("qwen-code","run_shell_command",Z),crush:G("crush","bash",(e,t)=>JSON.stringify({updated_input:{command:t}})),junie:G("junie","Bash",(e,t)=>JSON.stringify({updatedInput:{...e,command:t}})),zcode:G("zcode","Bash",Z),grok:Ti};function rn(e,t,n=y(e),r=w){return _e(t)?Ei[e](t,n,r):E}function V(e){return C()?null:y(e)}function vi(e,t,n={}){let r=n.recordUsage??w;switch(e){case"claude-code":case"codex":return t.hook_event_name!==void 0&&t.hook_event_name!=="PreToolUse"?"":De(t,e,V(e),r,n.claudeDirs??ge(),n.pathEnv??process.env.PATH,n.launchArgs??Fe)??"";case"cursor":return Qt(t,V(e),r);case"gemini-cli":return en(t,V(e),r);case"vibe":return tn(t,(o,i)=>B(o,"vibe",i,V(e),r));case"antigravity":return nn(t,(o,i)=>B(o,"antigravity",i,V(e),r));default:return rn(e,t,V(e),r)}}function W(e,t,n={}){let r=Xt(e,t);return r?vi(r,e,n):n.fallback??""}function Oi(e){let t;try{t=JSON.parse(e)}catch{return""}return W(t,"claude-code")}async function Ri(){let e=await j(),t=e?Oi(e):"";t&&process.stdout.write(t)}var Pi=process.argv[1]??"";Ke(Pi,import.meta.url,"pre-tool-use")&&Ri().catch(e=>{process.stderr.write(`tkr pre-tool-use: ${e.message}
|
|
18
|
-
`),process.exit(0)});export{
|
|
17
|
+
`}else if(o==="/"&&e[r+1]==="*"){if(r=e.indexOf("*/",r+2),r===-1)return"";r+=1}else t+=o}return t.replace(/,(\s*[}\]])/g,"$1")}function W(e){let t=[],n=Ur(e);for(;;){t.push(n);let r=je(n);if(r===n)return t;n=r}}function Co(){let e=process.platform==="darwin"?"/Library/Application Support/ClaudeCode":process.platform==="win32"?"C:\\Program Files\\ClaudeCode":"/etc/claude-code",t=[p(e,"managed-settings.json")];try{for(let n of me(p(e,"managed-settings.d")))n.endsWith(".json")&&t.push(p(e,"managed-settings.d",n))}catch{return t}return t}function To(){try{return Mr().username}catch{return""}}function Eo(e){return e.error?e.error.code==="ETIMEDOUT":e.status!==1}var vo=5*6e4,Rt=new Map;function Gt(e,t){let n=Rt.get(e);if(n&&Date.now()-n.at<vo)return n.value;let r=["HKLM","HKCU"].some(o=>Eo(Ht(e,["query",`${o}\\SOFTWARE\\Policies\\ClaudeCode`,"/v","Settings"],{cwd:t,stdio:"ignore",timeout:2e3,windowsHide:!0})));return Rt.set(e,{at:Date.now(),value:r}),r}function Oo(){let e=process.env.SystemRoot||"C:\\Windows";return Gt(zr.join(e,"System32","reg.exe"),e)}var Pt="/mnt/c/Windows/System32/reg.exe";function Ro(e){return!process.env.WSL_DISTRO_NAME&&!e("/proc/sys/fs/binfmt_misc/WSLInterop")?!1:e("/mnt/c/Program Files/ClaudeCode")?!0:e(Pt)&&Gt(Pt,"/mnt/c/Windows")}function Po(e=process.platform,t=v,n=Oo,r=To(),o=()=>Ro(t)){if(e==="darwin"){let i="/Library/Managed Preferences";return t(p(i,"com.anthropic.claudecode.plist"))||r!==""&&t(p(i,r,"com.anthropic.claudecode.plist"))}return e==="win32"?n():e==="linux"&&o()}function ie(e,t,n,r){let o=[];for(let i of e){let s=Ao(i,t);if(s!=="missing"&&(s==="unreadable"||!k(s)||!n(s,o)))return"unreadable"}return{matchers:o,complete:r}}function oe(e){return e===void 0?[]:Array.isArray(e)?e.filter(t=>typeof t=="string"):null}function he(){return{projectDir:process.env.CLAUDE_PROJECT_DIR,configDir:process.env.CLAUDE_CONFIG_DIR?.trim()?ue():void 0}}function No(e,t){let n=x=>[p(x,"settings.json"),p(x,"settings.local.json")],r=x=>n(p(x,".claude")),o=p(H(),".claude"),i=t.configDir||o;if(Po())return"unreadable";let u=[[[...[...new Set([p(i,"remote-settings.json"),p(o,"remote-settings.json")])],...Co()],"managed"],[[p(i,"settings.json")],"loaded"],[[p(i,"settings.local.json")],"loadedLocal"],[t.configDir?n(o):[],"extra"],[t.projectDir?r(t.projectDir):[],"project"],[W(e).flatMap(r),"extra"]],l=[],a={managed:[],loaded:[],loadedLocal:[],project:[],extra:[]},c={managed:!1,loaded:!1,loadedLocal:!1,project:!1,extra:!1},d=!1,m="managed",g=(x,ye)=>{let R=x.permissions;if(m==="managed"&&(x.allowManagedPermissionRulesOnly===!0||k(R)&&R.allowManagedPermissionRulesOnly===!0)&&(d=!0),R===void 0)return!0;if(!k(R))return!1;for(let Je of["deny","ask","allow"]){let Be=oe(R[Je]);if(!Be)return!1;for(let Ge of Be){let D=/^\s*Bash\s*(?:\(([\s\S]*)\))?\s*$/.exec(Ge);if(D)if(Je!=="allow")ye.push(j((D[1]??"*").replace(/:\*$/," *")));else if(D[1]===void 0||D[1].trim()==="*")c[m]=!0;else{l.push(j(D[1].replace(/:\*$/," *")));let Ze=Qo(D[1]);Ze&&a[m].push({rule:Ge.trim(),matches:Ze})}}}return!0},h=[];for(let[x,ye]of u){m=ye;let R=ie(x,!1,g,!0);if(R==="unreadable")return"unreadable";h.push(...R.matchers)}let b=c.managed||(c.loaded||c.loadedLocal)&&!d,q=[...a.managed,...d?[]:a.loaded];return{matchers:[...h,...b?[]:l],complete:!0,allow:l,allowsEverything:b,guards:h,trustedAllow:q}}function Io(e){let t=[p(H(),".cursor","cli-config.json"),...W(e).map(n=>p(n,".cursor","cli.json"))];return ie(t,!0,(n,r)=>{let o=n.permissions;if(o===void 0)return!0;if(!k(o))return!1;let i=oe(o.deny);if(!i)return!1;for(let s of i){let u=/^\s*Shell\s*(?:\(([\s\S]*)\))?\s*$/.exec(s);if(!u)continue;let l=u[1]??"*",a=l.indexOf(":");r.push(j(a===-1?`${l} *`:`${l.slice(0,a)} ${l.slice(a+1)}`))}return!0},!1)}function Lo(){return process.platform==="darwin"?"/Library/Application Support/GeminiCli":process.platform==="win32"?"C:\\ProgramData\\gemini-cli":"/etc/gemini-cli"}var Zt=/^\s*(?:run_shell_command|ShellTool)\s*(?:\(([\s\S]*)\))?\s*$/;function Ho(e,t){let n=e.tools;if(n!==void 0&&!k(n))return!1;let r=[oe(e.excludeTools),oe(k(n)?n.exclude:void 0)];for(let o of r){if(!o)return!1;for(let i of o){let s=Zt.exec(i);s&&t.push(j(s[1]===void 0?"*":`${s[1]}*`))}}return!0}function Nt(e){try{return JSON.parse(e)}catch{return null}}function jo(e){let t=e.trim();if(t.startsWith('"""')||t.startsWith("'''"))return null;if(t.startsWith("[")){if(!/\]\s*(?:#.*)?$/.test(t))return null;let n=[];for(let r of t.matchAll(/"((?:\\.|[^"\\])*)"|'([^']*)'/g)){let o=r[2]??Nt(`"${r[1]}"`);if(o===null)return null;n.push(o)}return n}if(t.startsWith('"')){let n=/^"((?:\\.|[^"\\])*)"/.exec(t);return n?Nt(`"${n[1]}"`):null}if(t.startsWith("'")){let n=/^'([^']*)'/.exec(t);return n?n[1]:null}return t.replace(/\s*#.*$/,"")}function Do(e,t){for(let n of e.split(/^\s*\[\[\s*rule\s*\]\]\s*$/m).slice(1)){let r={};for(let l of n.split(/\r?\n/)){if(/^\s*\[/.test(l))break;let a=/^\s*([A-Za-z_]+)\s*=\s*(.*)$/.exec(l);if(!a)continue;let c=jo(a[2]);if(c===null)return!1;r[a[1]]=c}let o=r.decision;if(o!=="deny"&&o!=="ask_user"||!(r.toolName===void 0?["*"]:[r.toolName].flat()).some(l=>l==="*"||Zt.test(l)))continue;let s=r.commandPrefix===void 0?[]:[r.commandPrefix].flat(),u=[r.commandRegex,r.argsPattern].flat().filter(l=>typeof l=="string");if(s.length===0&&u.length===0){t.push(()=>!0);continue}for(let l of s)t.push(j(`${l}*`));for(let l of u){let a;try{a=new RegExp(l)}catch{return!1}t.push(c=>a.test(JSON.stringify({command:c}))||ke(a,c))}}return!0}function It(e){try{return me(e).filter(t=>t.endsWith(".toml")).map(t=>p(e,t))}catch{return[]}}function Fo(e){let t=Lo(),n=[p(t,"system-defaults.json"),p(t,"settings.json"),process.env.GEMINI_CLI_SYSTEM_SETTINGS_PATH,process.env.GEMINI_CLI_SYSTEM_DEFAULTS_PATH,p(H(),".gemini","settings.json"),...W(e).map(o=>p(o,".gemini","settings.json"))].filter(o=>!!o),r=ie(n,!0,Ho,!1);if(r==="unreadable")return r;for(let o of[...It(p(H(),".gemini","policies")),...It(p(t,"policies"))]){let i;try{i=re(o,"utf8")}catch{return"unreadable"}if(!Do(i,r.matchers))return"unreadable"}return r}function He(e,t){if(e===void 0)return!0;if(typeof e=="string")return e!=="allow"&&t.push(()=>!0),!0;if(!k(e))return!1;for(let n of["bash","shell","*"]){let r=e[n];if(r!==void 0){if(typeof r=="string"){r!=="allow"&&t.push(()=>!0);continue}if(!k(r))return!1;for(let[o,i]of Object.entries(r))i!=="allow"&&t.push(j(o.replace(/\?/g,"*")))}}return!0}function Lt(e,t){if(e.permissions!==void 0||!He(e.permission,t))return!1;for(let n of["agent","agents","mode"]){let r=e[n];if(r!==void 0){if(!k(r))return!1;for(let o of Object.values(r))if(k(o)&&(o.permissions!==void 0||!He(o.permission,t)))return!1}}return!0}function Mo(e){for(let t of e)for(let n of["agent","agents","mode","modes"]){let r;try{r=me(p(t,n))}catch{continue}for(let o of r)try{if(o.endsWith(".md")&&/permission/i.test(re(p(t,n,o),"utf8")))return!0}catch{return!0}}return!1}function Uo(e){let t=p(process.env.XDG_CONFIG_HOME||p(H(),".config"),"opencode"),n=W(e),r=[t,...n.map(u=>p(u,".opencode"))];if(Mo(r))return"unreadable";let o=["opencode.json","opencode.jsonc","config.json"],i=[...o.map(u=>p(t,u)),process.env.OPENCODE_CONFIG,...n.flatMap(u=>[...o.slice(0,2).map(l=>p(u,l)),...o.slice(0,2).map(l=>p(u,".opencode",l))])].filter(u=>!!u),s=ie(i,!0,Lt,!0);if(s==="unreadable")return s;for(let u of[process.env.OPENCODE_CONFIG_CONTENT,process.env.OPENCODE_PERMISSION]){if(!u)continue;let l;try{l=JSON.parse(Bt(u))}catch{return"unreadable"}if(!(u===process.env.OPENCODE_PERMISSION?He(l,s.matchers):k(l)&&Lt(l,s.matchers)))return"unreadable"}return s}function zo(){return ie([p(H(),".gemini","antigravity-cli","settings.json")],!0,(e,t)=>{let n=e.permissions;if(n===void 0)return!0;if(!k(n))return!1;for(let r of["deny","ask"]){let o=oe(n[r]);if(!o)return!1;for(let i of o){let s=/^\s*command\s*\(([\s\S]*)\)\s*$/.exec(i);if(!s)continue;let u=s[1].trim();if(!u.startsWith("regex:")){t.push(j(u==="*"?"*":`${u} *`));continue}let l;try{l=new RegExp(u.slice(6))}catch{return!1}t.push(a=>ke(l,a))}}return!0},!1)}function Wo(e){let t=[],n=/\s+|#[^\n]*|("(?:[^"\\\n]|\\.)*"|'(?:[^'\\\n]|\\.)*')|([A-Za-z_][A-Za-z0-9_]*|[()[\],=])|(.)/gy;for(let r=n.exec(e);r&&r[0];r=n.exec(e)){if(r[3]!==void 0)return null;(r[1]!==void 0||r[2]!==void 0)&&t.push(r[1]??r[2])}return t}function Vt(e,t){let n=e[t.i++];if(n===void 0)return;if(/^["']/.test(n))try{return n.startsWith('"')?JSON.parse(n):JSON.parse(`"${n.slice(1,-1).replace(/\\'/g,"'").replace(/"/g,'\\"')}"`)}catch{return}if(n!=="[")return/^[A-Za-z_]/.test(n)?null:void 0;let r=[];for(;e[t.i]!=="]";){let o=Vt(e,t);if(o===void 0)return;if(r.push(o),e[t.i]===",")t.i++;else if(e[t.i]!=="]")return}return t.i++,r}function Kt(e){if(!Array.isArray(e)||e.length===0)return null;let t=[];for(let r of e){let o=typeof r=="string"?[r]:Array.isArray(r)?r:null;if(!o||o.length===0||!o.every(i=>typeof i=="string"&&i!==""))return null;t.push(`(?:${o.map(Ue).join("|")})`)}let n=new RegExp(`^${t.join(" ")}(?= |$)`);return r=>ke(n,r)}function Jo(e,t){let n=Wo(e);if(!n)return!1;for(let r=0;r<n.length;r++){if(n[r]!=="prefix_rule"||n[r+1]!=="(")continue;let o={i:r+2},i={};for(;n[o.i]!==")";){let l=n[o.i];if(!l||!/^[A-Za-z_]/.test(l)||n[o.i+1]!=="="||(o.i+=2,i[l]=Vt(n,o),i[l]===void 0&&(l==="pattern"||l==="decision")))return!1;if(n[o.i]===",")o.i++;else if(n[o.i]!==")")return!1}r=o.i;let s="decision"in i?i.decision:"allow";if(s!=="allow"&&s!=="prompt"&&s!=="forbidden")return!1;let u=Kt(i.pattern);if(!u)return!1;s!=="allow"&&t.push(u)}return!0}function Bo(e){if(!v(e))return[];try{return me(e).filter(t=>t.endsWith(".rules")).sort().map(t=>p(e,t))}catch{return"unreadable"}}function Go(){return process.platform==="win32"?p(process.env.ProgramData||"C:\\ProgramData","OpenAI","Codex","requirements.toml"):"/etc/codex/requirements.toml"}function Zo(e){if(!(!k(e)||Object.keys(e).length!==1)){if(typeof e.token=="string")return e.token;if(Array.isArray(e.any_of)&&e.any_of.every(t=>typeof t=="string"))return e.any_of}}function Vo(e,t){let n;try{n=Oe(e)}catch{return!1}if(n.rules===void 0)return!0;if(!k(n.rules))return!1;let r=n.rules.prefix_rules;if(r===void 0)return!0;if(!Array.isArray(r))return!1;for(let o of r){if(!k(o)||!Array.isArray(o.pattern)||o.decision!=="prompt"&&o.decision!=="forbidden")return!1;let i=o.pattern.map(Zo);if(i.some(u=>u===void 0))return!1;let s=Kt(i);if(!s)return!1;t.push(s)}return!0}function Ko(e){let t=process.env.CODEX_HOME||p(H(),".codex"),n=[p(t,"rules"),...W(e).map(i=>p(i,".codex","rules"))],r=[],o=null;try{o=re(Go(),"utf8")}catch(i){let s=i.code;if(s!=="ENOENT"&&s!=="ENOTDIR")return"unreadable"}if(o!==null&&!Vo(o,r))return"unreadable";for(let i of[...new Set(n)]){let s=Bo(i);if(s==="unreadable")return"unreadable";for(let u of s){let l;try{l=re(u,"utf8")}catch{return"unreadable"}if(!Jo(l,r))return"unreadable"}}return{matchers:r,complete:!1}}function k(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Ue(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function qo(e){let t=e.trim().replace(/\s+/g," "),n=t.endsWith(" *")&&t.length>2,r=(n?t.slice(0,-2):t).split("*").map(Ue).join("[\\s\\S]*");return new RegExp(`^${r}${n?"(?: [\\s\\S]*)?":""}(?= |$)`)}var Yo=512;function Xo(e){let t=e.replace(/['"\\]/g,"").split(/[\s;&|(){}<>`$]+/).filter(Boolean);return[t,t.map(z)]}function ke(e,t){if(e.test(t)||e.test(t.trim().replace(/\s+/g," ")))return!0;for(let n of Xo(t)){if(n.length>Yo)return!0;for(let r=0;r<n.length;r++)if(e.test(n.slice(r).join(" ")))return!0}return!1}function j(e){let t=qo(e);return n=>ke(t,n)}function Qo(e){let t=e.trim().replace(/:\*$/," *"),n=t.endsWith(" *"),r=n?t.slice(0,-2):t;if(!r||r.includes("*")||/\s\s|[^\S ]|^ | $/.test(r))return null;let o=new RegExp(`^${Ue(r)}${n?"(?: [\\s\\S]*)?":""}$`);return i=>o.test(i)}var ei={"claude-code":No,cursor:Io,"gemini-cli":Fo,opencode:Uo,antigravity:zo,codex:Ko},ti=new Set(["codex"]),qt=/(?:^|[\s=:/~])\.(?:git|claude|vscode|idea|husky)(?=[/\s;|&)]|$)|(?:^|[\s=:/~])\.(?:bashrc|bash_profile|bash_login|bash_logout|profile|zshrc|zprofile|zshenv|zlogin|zlogout|gitconfig|gitmodules|ripgreprc|mcp\.json)(?![A-Za-z0-9_])/;function ni(e,t,n){let r=ei[e];return r?r(t??process.cwd(),n):{matchers:[],complete:!1}}function ri(e,t,n){return e==="unreadable"||qt.test(t.replace(/['"\\]/g,""))||e.matchers.some(r=>r(t))?!1:e.complete||Jt(t,!ti.has(n))}var Yt=new Set(["default","acceptEdits","dontAsk"]);function Xt(e,t){return t.host!=="claude-code"||t.permissionMode==="bypassPermissions"?!0:e!=="unreadable"&&e.allowsEverything===!0&&Yt.has(t.permissionMode??"")}var oi=/(?:^|[\s/])git(?:\.exe|\.real|-[a-z][\w-]*)?(?=\s|$)/;function ii(e){if(!e)return!1;try{for(let t of W(e)){let n=p(t,".git");if(v(n))return Fr(n).isFile()}}catch{return!0}return!1}function si(e,t){let n="pathEnv"in e?e.pathEnv:process.env.PATH,r,o;return(i,s)=>e.host!=="claude-code"?L(i,e.cwd,n):s!==void 0&&oi.test(s)&&(o??=ii(e.cwd))||(r??=wt(t.configDir),!L(i,e.cwd,n)&&!r.paths.some(u=>L(i,e.cwd,u)))?!1:i.includes("/")||!yt(i,r)}var ui=/^[^\s;&|<>()$`\\{}*?[\]~#!]+(?: [^\s;&|<>()$`\\{}*?[\]~#!]+)*$/;function li(e,t,n){return n.host!=="claude-code"||e==="unreadable"||Xt(e,n)||!Yt.has(n.permissionMode??"")||!ui.test(t)||qt.test(t.replace(/['"]/g,""))||(e.guards??[]).some(r=>r(t))?null:(e.trustedAllow??[]).find(r=>r.matches(t))?.rule??null}var ai=65536,ci=/^(?:[A-Za-z_][A-Za-z0-9_]*=\S*\s+)*(?:(?:npx|bunx|pnpm\s+exec|yarn\s+exec|uv\s+run|poetry\s+run)\s+)?(?:\.\/)?(?:ctest|gradlew|gradle|mvnw|mvnd|mvn|make|cmake|sbt|phpstan|phpunit|pest|pytest|py\.test|tox|nox|vitest|jest|mocha|playwright\s+test|tsc|(?:cargo|go)\s+(?:build|test|check|clippy|vet)|(?:bun|deno)\s+(?:test|check|lint|install)|(?:npm|pnpm|yarn)\s+(?:test|t|ci|install|run\s+\S+)|dotnet\s+(?:build|test)|swift\s+(?:build|test)|composer\s+(?:install|update|test))(?:\s|$)/;function fi(e,t){return t.host==="claude-code"&&t.permissionMode==="default"&&ci.test(e.trim())}function Qt(e,t,n,r){if(!n||e.length>ai||/["\\$`;&|<>(){}]|'\\''/.test(n))return null;let o=t.claudeDirs??he(),i=ni(t.host,t.cwd,o),s=li(i,e,t),u=s||ri(i,e,t.host)?zt(e,n,si(t,o)):e;return u!==e&&i!=="unreadable"&&(s?(i.guards??[]).some(l=>l(u)):i.matchers.some(l=>l(u))||(i.allow??[]).some(l=>l(u)&&!l(e)))&&(u=e),r(t.sessionId,u!==e),u===e?null:s?{command:u,allowedBy:s}:Xt(i,t)?{command:u}:i!=="unreadable"&&fi(e,t)&&!(i.allow??[]).some(l=>l(e))&&!(i.trustedAllow??[]).some(l=>l.matches(e))?{command:u,ask:!0}:null}function N(e,t,n,r){let o=Qt(e,t,n,r);return o&&!o.ask?o.command:null}function _(e,t){let n=e[t];return typeof n=="string"&&n?n:null}function se(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function di(e){return _(e,"prompt_id")||_(e,"scratchpad_dir")?!0:se(e.effort)}function pi(e){return _(e,"tool_use_id")?.startsWith("toolu_")===!0||/^claude/i.test(_(e,"model")??"")}var mi=new Set(["BeforeTool","AfterTool","BeforeAgent","AfterAgent","BeforeModel","AfterModel","BeforeToolSelection"]),gi=new Set(["preToolUse","postToolUse","beforeShellExecution","afterShellExecution","beforeSubmitPrompt","sessionStart","sessionEnd","stop"]),hi=new Set(["pre_tool","post_tool"]),ki=new Set(["before_tool_call","after_tool_call"]),_i=new Set(["runTerminalCommand","run_in_terminal"]),bi=[["codex",e=>_(e,"turn_id")!==null],["claude-code",di],["cursor",e=>_(e,"cursor_version")!==null||_(e,"generation_id")!==null||_(e,"conversation_id")!==null||Array.isArray(e.workspace_roots)||gi.has(_(e,"hook_event_name")??"")],["gemini-cli",e=>mi.has(_(e,"hook_event_name")??"")],["qwen-code",e=>e.hook_event_name==="PreToolUse"&&e.tool_name==="run_shell_command"],["vibe",e=>hi.has(_(e,"hook_event_name")??"")],["antigravity",e=>se(e.toolCall)],["copilot",e=>_(e,"toolName")!==null&&"toolArgs"in e||_i.has(_(e,"tool_name")??"")],["grok",e=>e.toolName==="run_terminal_command"||e.tool_name==="run_terminal_command"||se(e.toolInput)&&!("toolArgs"in e)],["droid",e=>e.tool_name==="Execute"],["trae",e=>e.tool_name==="RunCommand"],["crush",e=>e.hook_event_name===void 0&&_(e,"event")!==null&&!ki.has(_(e,"event"))]],wi=new Set(["codex","antigravity"]);function yi(e){return se(e)?bi.filter(([,t])=>t(e)).map(([t])=>t):[]}function en(e,t){if(!se(e))return null;let n=yi(e);return n.length>1?null:n.length===1?n[0]:pi(e)&&wi.has(t)?"claude-code":t==="codex"?null:t}var ze=JSON.stringify({permission:"allow"});function tn(e,t=S("cursor"),n=y){if(e.tool_name!=="Shell")return ze;let r=e.tool_input??{},o=r.command;if(typeof o!="string"||!o)return ze;let i=typeof r.working_directory=="string"?r.working_directory:void 0,s=N(o,{host:"cursor",sessionId:e.conversation_id??"unknown",cwd:i},C()?null:t,n);return s?JSON.stringify({permission:"allow",updated_input:{...r,command:s}}):ze}var _e="{}";function nn(e,t=S("gemini-cli"),n=y){if(e.hook_event_name!=="BeforeTool"||e.tool_name!=="run_shell_command")return _e;let r=e.tool_input??{};if(r.is_background)return _e;let o=r.command;if(typeof o!="string"||!o)return _e;let i=typeof e.cwd=="string"?e.cwd:void 0,s=N(o,{host:"gemini-cli",sessionId:e.session_id??"unknown",cwd:i},C()?null:t,n);return s?JSON.stringify({hookSpecificOutput:{tool_input:{command:s}}}):_e}function B(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function G(e,t,n="unknown",r=S(t),o=y){return e?N(e,{host:t,sessionId:n},C()?null:r,o):null}var Si=new Set(["bash","file_system.bash"]),We=JSON.stringify({decision:"allow"});function rn(e,t=(n,r)=>G(n,"vibe",r)){if(!B(e)||e.hook_event_name!=="pre_tool"||typeof e.tool_name!="string"||!Si.has(e.tool_name))return"";let n=e.tool_input;if(!B(n)||typeof n.command!="string"||!n.command)return"";let r=t(n.command,typeof e.session_id=="string"?e.session_id:"unknown");return r?JSON.stringify({hook_specific_output:{tool_input:{...n,command:r}}}):""}function on(e,t=(n,r)=>G(n,"antigravity",r)){if(!B(e)||!B(e.toolCall)||e.toolCall.name!=="run_command")return We;let n=e.toolCall.args;if(!B(n)||typeof n.CommandLine!="string"||!n.CommandLine)return We;let r=t(n.CommandLine,typeof e.conversationId=="string"?e.conversationId:"unknown");return r?JSON.stringify({decision:"allow",overwrite:{CommandLine:r}}):We}var O="{}",xi=new Set(["runTerminalCommand","run_in_terminal","Bash","bash"]),$i=["run_in_background","is_background","isBackground"];function be(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Ai(e){let t=e.session_id??e.sessionId;return typeof t=="string"&&t?t:"unknown"}function Ci(e,t){let n=e.cwd??t.cwd??t.workdir??t.working_directory;return typeof n=="string"&&n?n:void 0}function we(e,t,n,r,o){if(!be(t)||$i.some(s=>t[s]===!0))return null;let i=t.command;return typeof i!="string"||!i?null:N(i,{host:e,sessionId:Ai(n),cwd:Ci(n,t)},C()?null:r,o)}function V(e,t){return JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",updatedInput:{...e,command:t}}})}function Ti(e){if(be(e))return e;if(typeof e!="string")return null;try{let t=JSON.parse(e);return be(t)?t:null}catch{return null}}function Ei(e,t,n){if(typeof e.tool_name=="string"){if(!xi.has(e.tool_name))return O;let i=e.tool_input,s=we("copilot",i,e,t,n);return s?V(i,s):O}if(e.toolName!=="bash")return O;let r=Ti(e.toolArgs),o=we("copilot",r,e,t,n);return o?JSON.stringify({modifiedArgs:{...r,command:o}}):O}function Z(e,t,n){return(r,o,i)=>{if(r.tool_name!==t)return O;let s=r.tool_input,u=we(e,s,r,o,i);return u?n(s,u):O}}var vi=new Set(["run_terminal_command","Bash","bash"]);function Oi(e,t,n){let r=e.toolName??e.tool_name;if(typeof r!="string"||!vi.has(r))return O;let o=e.toolInput??e.tool_input,i=we("grok",o,e,t,n);return i?V(o,i):O}var Ri={copilot:Ei,droid:Z("droid","Execute",V),trae:Z("trae","RunCommand",V),"qwen-code":Z("qwen-code","run_shell_command",V),crush:Z("crush","bash",(e,t)=>JSON.stringify({updated_input:{command:t}})),junie:Z("junie","Bash",(e,t)=>JSON.stringify({updatedInput:{...e,command:t}})),zcode:Z("zcode","Bash",V),grok:Oi};function sn(e,t,n=S(e),r=y){return be(t)?Ri[e](t,n,r):O}function K(e){return C()?null:S(e)}function Pi(e,t,n={}){let r=n.recordUsage??y;switch(e){case"claude-code":case"codex":return t.hook_event_name!==void 0&&t.hook_event_name!=="PreToolUse"?"":Fe(t,e,K(e),r,n.claudeDirs??he(),n.pathEnv??process.env.PATH,n.launchArgs??Me)??"";case"cursor":return tn(t,K(e),r);case"gemini-cli":return nn(t,K(e),r);case"vibe":return rn(t,(o,i)=>G(o,"vibe",i,K(e),r));case"antigravity":return on(t,(o,i)=>G(o,"antigravity",i,K(e),r));default:return sn(e,t,K(e),r)}}function J(e,t,n={}){let r=en(e,t);return r?Pi(r,e,n):n.fallback??""}function Ni(e){let t;try{t=JSON.parse(e)}catch{return""}return J(t,"claude-code")}async function Ii(){let e=await F(),t=e?Ni(e):"";t&&process.stdout.write(t)}var Li=process.argv[1]??"";qe(Li,import.meta.url,"pre-tool-use")&&Ii().catch(e=>{process.stderr.write(`tkr pre-tool-use: ${e.message}
|
|
18
|
+
`),process.exit(0)});export{Fe as buildPreToolUseOutput,S as execInvocation,Ni as preToolUseResponse,zt as rewrite,ge as splitTopLevel};
|
|
19
19
|
/*! Bundled license information:
|
|
20
20
|
|
|
21
21
|
smol-toml/dist/error.js:
|