@tokmizer/plugin 0.9.72 → 1.0.1
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/command-templates/tkr-compression.md +1 -0
- package/command-templates/tkr-gain.md +1 -0
- package/command-templates/tkr-link.md +2 -1
- package/command-templates/tkr-status.md +1 -0
- package/command-templates/tkr-telemetry.md +1 -0
- package/command-templates/tkr-unlink.md +1 -0
- package/command-templates/tkr-update.md +1 -0
- package/command-templates/tkr-yolo.md +1 -0
- package/command-templates/tkr.md +1 -0
- package/dist/bin/tkr-agent-hook.js +13 -13
- package/dist/bin/tkr-codex-hook.js +75 -75
- package/dist/bin/tkr-context-hook.js +2 -2
- 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 +148 -142
- package/dist/bin/tkr-droid-hook.js +12 -12
- package/dist/bin/tkr-exec +0 -0
- package/dist/bin/tkr-exec.js +86 -83
- 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 +102 -99
- package/dist/bin/tkr-qwen-hook.js +12 -12
- package/dist/bin/tkr-shim.js +90 -86
- package/dist/bin/tkr-trae-hook.js +12 -12
- package/dist/bin/tkr-zcode-hook.js +12 -12
- package/dist/bin/tkr.js +283 -289
- package/dist/hooks-host/command-expansion.js +1 -1
- package/dist/hooks-host/post-tool-use.js +101 -98
- package/dist/hooks-host/pre-tool-use.js +13 -13
- package/dist/hooks-host/reducer-prompt-submit.js +2 -2
- package/dist/hooks-host/reducer-session-start.js +2 -2
- package/dist/hooks-host/reducer-stop.js +24 -24
- package/dist/hooks-host/session-recap.js +5 -5
- package/dist/index.js +105 -102
- 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/hooks/hooks.json +2 -7
- package/hooks/on-session-start.mjs +6 -3
- package/package.json +7 -7
- package/scripts/README-INSTALL.md +8 -0
- package/scripts/install-mac-linux.sh +3 -3
- package/scripts/install-windows.ps1 +0 -7
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Show estimated token reductions in recorded tool outputs.
|
|
3
3
|
argument-hint: [--day | --week | --month] [--project [path]] [--csv | --graph | --history | --by-rule | --failures | --quota [pro|5x|20x]]
|
|
4
|
+
disable-model-invocation: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
Show the user Tokmizer's recorded tool-output reductions.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Link
|
|
2
|
+
description: Link your Tokmizer account. Usage - /tkr-link tokmizer_yourkey
|
|
3
3
|
argument-hint: tokmizer_yourkey
|
|
4
|
+
disable-model-invocation: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
The user invoked /tkr-link with: $ARGUMENTS
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Show, enable or disable the optional local YOLO mode. Content and diagnostics can be lost.
|
|
3
3
|
argument-hint: on | off | status
|
|
4
|
+
disable-model-invocation: true
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
Manage YOLO on this machine only. It is off by default and does not sync to other machines.
|
package/command-templates/tkr.md
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __tkrCreateRequire } from "node:module"; const require = __tkrCreateRequire(import.meta.url);
|
|
3
|
-
function
|
|
4
|
-
`)}function
|
|
5
|
-
`).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}`;
|
|
3
|
+
function Z(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{basename as rn}from"node:path";var on={exec:"tkr-exec",processor:"tkr-processor",daemon:"tkr-daemon","shim-run":"tkr-shim"},sn={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 ie(e){let t=rn(e).replace(/\.(m?js|ts)$/,"");if(t==="tkr")return[];for(let[n,r]of Object.entries(on))if(r===t)return[n];for(let[n,r]of Object.entries(sn))if(r===t)return["hook",n];return null}import{realpathSync as Ve}from"node:fs";import{delimiter as un,join as D}from"node:path";import ln from"node:os";function V(){return!1}function Ke(e,t){try{return Ve(e)===Ve(t)}catch{return!1}}function Se(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"?";":un)){if(!o||o.includes("node_modules"))continue;let i=D(o,r);if(Ke(i,n))return i}if(t!=="win32"){let o=ln.homedir();for(let i of[D(o,".local","bin",r),D(o,".local","share","tokmizer","current","dist","bin",r),D("/opt/homebrew/bin",r),D("/usr/local/bin",r),D("/home/linuxbrew/.linuxbrew/bin",r)])if(Ke(i,n))return i}return n}import an from"node:os";import{isAbsolute as cn,join as qe,resolve as Ye}from"node:path";function se(e=process.env,t=an.homedir()){let n=e.CLAUDE_CONFIG_DIR?.trim();if(!n)return qe(t,".claude");let r=n;return r==="~"?r=t:(r.startsWith("~/")||r.startsWith("~\\"))&&(r=qe(t,r.slice(2))),cn(r)?Ye(r):Ye(r)}import{accessSync as hn,chmodSync as kn,constants as _n,existsSync as ue,mkdirSync as bn,readdirSync as wn,readFileSync as yn,realpathSync as nt,renameSync as Sn,unlinkSync as xn,writeFileSync as An}from"node:fs";import{basename as $e,dirname as O,join as E,sep as F}from"node:path";import fn from"node:os";import{join as dn}from"node:path";function x(){return process.env.TOKMIZER_HOME||dn(fn.homedir(),".tokmizer")}import{rmSync as pn,statSync as mn}from"node:fs";import{join as Xe}from"node:path";function Qe(){return Xe(x(),"shims")}function xe(){return Xe(x(),"fail-open")}var gn=24*36e5;function C(e=Date.now()){try{if(e-mn(xe()).mtimeMs<gn)return!0;pn(xe(),{force:!0})}catch{}return!1}function et(){return`[ -f ${N(xe())} ]`}function N(e){return`'${e.replace(/'/g,"'\\''")}'`}function tt(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("'")}var ot=1,K="tkr-shim.stable",it=/^(?:0|[1-9]\d{0,5})\.(?:0|[1-9]\d{0,5})\.(?:0|[1-9]\d{0,5})$/;function $n(){return E(x(),"bin","tkr-shim-launch")}function Cn(){return E(x(),"bin","tkr-run")}function rt(){return E(se(),"plugins","cache","tokmizer","tokmizer")}function En(e){let t=O(O(O(e)));return it.test($e(t))&&$e(O(t))==="tokmizer"?O(t):null}function Ce(e){return/[\n\r]/.test(e)||e.includes(`${F}_npx${F}`)||e.includes(`${F}.bun${F}install${F}cache${F}`)}function Ee(e){let t=e.match(/^(.*)[\\/]Cellar[\\/]([^\\/]+)[\\/][^\\/]+[\\/](.*)$/);if(!t)return e;let n=E(t[1],"opt",t[2],t[3]);try{return nt(n)===nt(e)?n:e}catch{return e}}function Tn(e=process.execPath){return Ce(e)?"":Ee(e)}function vn(e,t=V()){if(t&&ie(e)){let o=Se();return{single:Ce(o)?"":Ee(o),js:"",cache:rt(),node:""}}let n=Tn(),r=En(e);return r?{single:"",js:"",cache:r,node:n}:{single:"",js:Ce(e)?"":Ee(e),cache:rt(),node:n}}function On(e){try{return hn(e,_n.X_OK),!0}catch{return!1}}function Rn(e){let t=null,n=-1,r;try{r=wn(e)}catch{return null}for(let o of r){if(!it.test(o))continue;let i=E(e,o);if(!ue(E(i,"dist","bin","tkr-shim.js"))||!ue(E(i,"dist","bin",K)))continue;let[s,u,l]=o.split(".").map(Number),a=s*1e6+u*1e3+l;a>n&&(n=a,t=i)}return t}function Ae(e){return e.single&&On(e.single)||e.js&&ue(e.js)&&($e(e.js)!=="tkr-shim.js"||ue(E(O(e.js),K)))?!0:e.cache!==""&&Rn(e.cache)!==null}function Pn(e,t){return["_tk_t=",`if [ -n "$_tk_j" ] && [ -f "${t}" ] && { [ "\${_tk_j##*/}" != tkr-shim.js ] || [ -f "\${_tk_j%/*}/${K}" ]; }; 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/${K}" ] || 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=${N(Qe())}`," 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/${K}" ] && [ -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 Nn(e){return["#!/bin/sh",`_tk_f=${ot}`,`_tk_s=${N(e.single)}`,`_tk_j=${N(e.js)}`,`_tk_k=${N(e.cache)}`,`_tk_n=${N(e.node)}`,'[ "$#" -gt 0 ] || exit 0',`if ! ${et()}; then`,' if [ -n "$_tk_s" ] && [ -x "$_tk_s" ]; then exec "$_tk_s" exec "$@"; fi',...Pn("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(`
|
|
4
|
+
`)}function st(e){let t=Cn(),n=vn(E(O(e),"tkr-shim.js")),r=Hn(t);if(r&&r.format===ot&&Ae(r.target)&&JSON.stringify(r.target)===JSON.stringify(n))return t;if(!Ae(n))return r&&Ae(r.target)?t:null;let o=`${t}.${process.pid}.tmp`;try{return bn(O(t),{recursive:!0,mode:448}),An(o,Nn(n),{mode:493}),kn(o,493),Sn(o,t),t}catch{try{xn(o)}catch{}return null}}function In(e){let t=u=>{let l=e.match(new RegExp(`^${u}=(.*)$`,"m"));return l?u==="_tk_f"?l[1]:tt(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 Hn(e=$n()){try{return In(yn(e,"utf8"))}catch{return null}}function Ln(e){return e.charCodeAt(0)===65279?e.slice(1):e}function Te(e){return JSON.parse(Ln(e))}function I(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}import{appendFileSync as zn,chmodSync as Un,mkdirSync as Wn,existsSync as Jn,readFileSync as Ss,rmSync as xs}from"node:fs";import{dirname as Bn,join as Gn}from"node:path";import{readFileSync as jn,renameSync as Dn,statSync as Fn,writeFileSync as Mn}from"node:fs";function ut(e,t,n){try{if(Fn(e).size<=t)return;let r=jn(e,"utf8").split(`
|
|
5
|
+
`).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(`
|
|
6
6
|
`)}
|
|
7
|
-
`:"",{mode:384}),
|
|
8
|
-
`,{mode:384}),
|
|
7
|
+
`:"",{mode:384}),Dn(s,e)}catch{}}var Zn="usage.jsonl";var lt=2*1024*1024;function Vn(){return Gn(x(),Zn)}function w(e,t,n=Vn()){try{let r=Bn(n);Jn(r)||Wn(r,{recursive:!0,mode:448});let o=e.replace(/[^A-Za-z0-9._-]/g,"").slice(0,64)||"unknown";zn(n,`{"t":${Math.floor(Date.now()/1e3)},"s":"${o}","o":${t?1:0}}
|
|
8
|
+
`,{mode:384}),Un(n,384),ut(n,lt,lt/2)}catch{}}import{spawnSync as Pt}from"node:child_process";import{existsSync as R,readFileSync as ee,readdirSync as pe,statSync as Ir}from"node:fs";import{homedir as H,userInfo as Hr}from"node:os";import{fileURLToPath as Lr}from"node:url";import{dirname as Nt,join as p,resolve as jr,win32 as Dr}from"node:path";function Kn(e,t){let n=e.slice(0,t).split(/\r?\n/);return[n.length,n.pop().length+1]}function qn(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+=`
|
|
9
9
|
`,s===t&&(o+=" ".repeat(i+n+2),o+=`^
|
|
10
|
-
`))}return o}var f=class e extends Error{line;column;codeblock;constructor(t,n){let[r,o]=
|
|
10
|
+
`))}return o}var f=class e extends Error{line;column;codeblock;constructor(t,n){let[r,o]=Kn(n.toml,n.ptr),i=qn(n.toml,r,o);super(`Invalid TOML document: ${t}
|
|
11
11
|
|
|
12
|
-
${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
|
|
13
|
-
`: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 Gn=/^(\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(Gn);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?ct(e):at(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?Zn(e,r,t):e.s.charCodeAt(e.p+2)===58?Vn(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 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):lt(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("_","")),lt(e,s,n,t)}function lt(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 Zn(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 ce(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 Vn(e,t,n){let r=e.p;if(!b(t)||!b(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(;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 Kn(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 x(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;Kn(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 at(e){let t=e.p++,n=Object.create(null),r=new Set,o;for(;e.p<e.s.length;){if(x(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 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),x(e,!0,!0);let c=Q(e,125);if(s&&typeof(s[i]=c)=="object"&&r.add(c),x(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 ct(e){let t=e.p++,n=[],r;for(;e.p<e.s.length;){if(x(e),(r=e.s.charCodeAt(e.p))===93)return e.p++,n;if(n.push(Q(e,93)),x(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 ft(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 dt(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++,x(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=ft(n,c,r,o,a?2:1);d?(l=d[2],u=d[1]):(dt(n,d,i),s=!0)}else{i=n.p;let a=fe(n),c=ft(n,a,u,l,0);!c&&!s&&dt(n,c,i),x(n,!0,!0);let d=Q(n,void 0);c&&!s&&(c[1][c[0]]=d)}x(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),x(n)}return r}var Ls=!!"".isWellFormed;import{execFileSync as hr}from"node:child_process";import{mkdirSync as kr,readFileSync as kt,renameSync as _r,statSync as br,writeFileSync as wr}from"node:fs";import{join as _t}from"node:path";import{closeSync as qn,openSync as Yn,readSync as Xn,readdirSync as Qn,readFileSync as er,statSync as mt}from"node:fs";import{homedir as tr}from"node:os";import{isAbsolute as nr,join as de,resolve as rr}from"node:path";var or=/^[A-Za-z0-9._+@%:,/-]+$/,ir=new Set(["7f454c46","feedface","feedfacf","cefaedfe","cffaedfe","cafebabe","bebafeca"]),sr=32,ur=4*1024*1024;function Ne(e){let t;try{t=Yn(e,"r");let n=Buffer.alloc(4),r=Xn(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&&qn(t)}}function ee(e,t=process.platform){try{let n=mt(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&&ir.has(r)}catch{return!1}}function lr(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(!or.test(e))return!1;let o=r==="win32";if(e.includes("/"))return ee(rr(t??process.cwd(),e),r);if(!n)return!1;let i=o?lr(e):[e];for(let s of n.split(o?";":":"))if(!(!s||!nr(s))){for(let u of i)if(ee(de(s,u),r))return!0}return!1}var ar=/^eval \$'([^\s'()=]+) \(\) /,cr=/^([^\s'"()=]+) \(\) \{$/,fr=/^alias -- ([^\s=]+)=(.*)$/,dr=/^# (?:Shell Options|Aliases|Shopt|Check for |Shadow )/,pr=/^export PATH=(.*)$/,mr=/^(?:--colou?r(?:=\S+)?|-G)$/;function pt(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 gr(e,t){let n="";for(let r of e.split(`
|
|
14
|
-
`)){let o=
|
|
15
|
-
`,1)[0].slice(2).trim().split(/\s+/),o=r[0]??"";return o==="/usr/bin/env"?M(r[1]??"",void 0,t):
|
|
16
|
-
`||u==="|"){s(u,1);continue}}r+=u,o+=1}return i(),n}function
|
|
12
|
+
${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 le(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 g=0;g<d;g++,e.p++){let m=e.s.charCodeAt(e.p),h=m>=48&&m<=57?m-48:m>=65&&m<=70?m-65+10:m>=97&&m<=102?m-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+=`
|
|
13
|
+
`: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 Yn=/^(\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(Yn);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 Oe(e,t){return e===32||e===9||e===10||e===13||t&&(e===t||e===44)||e===35}function X(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?ft(e):ct(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?Xn(e,r,t):e.s.charCodeAt(e.p+2)===58?Qn(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||Oe(i=e.s.charCodeAt(e.p),o))return e.bi===!0?0n:0;if(!r){if(i===120)return ve(e,t,16,o);if(i===98)return ve(e,t,2,o);if(i===111)return ve(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),!Oe(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):at(e,l,10,t)}function ve(e,t,n,r){let o,i=1;for(;++e.p<e.s.length&&(o=e.s.charCodeAt(e.p),!Oe(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("_","")),at(e,s,n,t)}function at(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 Xn(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 Y(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 Y(e,s,1,o,r,"[+00:00]")}if(t===43||t===45){let s=e.s.slice(r,e.p+=6);return Y(e,s,1,o,r,!e.ld&&"["+e.s.slice(e.p-6,e.p)+"]")}}let i=e.s.slice(r,e.p);return Y(e,i,2,o,r)}function Qn(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 Y(e,o,4,!1,r)}function Y(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 er(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;er(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 ct(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=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),A(e,!0,!0);let c=X(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 ft(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(X(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 dt(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 pt(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 Re(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=ce(n,93);a&&(e.charCodeAt(n.p)!==93&&f.x("expected end of table array declaration",n),n.p++);let d=dt(n,c,r,o,a?2:1);d?(l=d[2],u=d[1]):(pt(n,d,i),s=!0)}else{i=n.p;let a=ce(n),c=dt(n,a,u,l,0);!c&&!s&&pt(n,c,i),A(n,!0,!0);let d=X(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 Ks=!!"".isWellFormed;import{execFileSync as yr}from"node:child_process";import{mkdirSync as Sr,readFileSync as _t,renameSync as xr,statSync as Ar,writeFileSync as $r}from"node:fs";import{join as bt}from"node:path";import{closeSync as tr,openSync as nr,readSync as rr,readdirSync as or,readFileSync as ir,statSync as gt}from"node:fs";import{homedir as sr}from"node:os";import{isAbsolute as ur,join as fe,resolve as lr}from"node:path";var ar=/^[A-Za-z0-9._+@%:,/-]+$/,cr=new Set(["7f454c46","feedface","feedfacf","cefaedfe","cffaedfe","cafebabe","bebafeca"]),fr=32,dr=4*1024*1024;function Ne(e){let t;try{t=nr(e,"r");let n=Buffer.alloc(4),r=rr(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&&tr(t)}}function Q(e,t=process.platform){try{let n=gt(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&&cr.has(r)}catch{return!1}}function pr(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(!ar.test(e))return!1;let o=r==="win32";if(e.includes("/"))return Q(lr(t??process.cwd(),e),r);if(!n)return!1;let i=o?pr(e):[e];for(let s of n.split(o?";":":"))if(!(!s||!ur(s))){for(let u of i)if(Q(fe(s,u),r))return!0}return!1}var mr=/^eval \$'([^\s'()=]+) \(\) /,gr=/^([^\s'"()=]+) \(\) \{$/,hr=/^alias -- ([^\s=]+)=(.*)$/,kr=/^# (?:Shell Options|Aliases|Shopt|Check for |Shadow )/,_r=/^export PATH=(.*)$/,br=/^(?:--colou?r(?:=\S+)?|-G)$/;function mt(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 wr(e,t){let n="";for(let r of e.split(`
|
|
14
|
+
`)){let o=_r.exec(r);if(o&&n!=="# Functions"){let i=mt(o[1].trim());/[$`\\]/.test(i)||t.paths.push(i);continue}if(r.startsWith("# ")&&(n!=="# Functions"||kr.test(r))){n=r;continue}if(n==="# Functions"){let i=mr.exec(r)??gr.exec(r);i&&t.functions.add(i[1])}else if(n==="# Aliases"){let i=hr.exec(r);i&&t.aliases.set(i[1],mt(i[2].trim()))}}}function Pe(e){return e?.code==="ENOENT"}function ht(e){let t={functions:new Set,aliases:new Map,paths:[],uncertain:!1},n=fe(e||fe(sr(),".claude"),"shell-snapshots"),r=[];try{for(let o of or(n)){if(!o.startsWith("snapshot-")||!o.endsWith(".sh"))continue;let i=fe(n,o);try{let s=gt(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,fr);for(let o of r)try{if(o.size>dr)throw new Error("snapshot too large");wr(ir(o.path,"utf8"),t)}catch(i){Pe(i)||(t.uncertain=!0)}return t}function kt(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=>br.test(o))}var Cr="exec-probe.json",Er=6e4;function Tr(){return bt(x(),Cr)}function vr(e){try{let t=Te(_t(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 Or(e,t){try{Sr(bt(e,".."),{recursive:!0,mode:448});let n=`${e}.${process.pid}.tmp`;$r(n,JSON.stringify(t),{mode:384}),xr(n,e)}catch{}}function Rr(e){try{return yr(e,["--native-check"],{encoding:"utf8",timeout:2e3,maxBuffer:1024,stdio:["ignore","pipe","ignore"],windowsHide:!0}).startsWith("tokmizer-native ")}catch{return!1}}function Pr(e,t){try{let r=_t(e,"utf8").split(`
|
|
15
|
+
`,1)[0].slice(2).trim().split(/\s+/),o=r[0]??"";return o==="/usr/bin/env"?M(r[1]??"",void 0,t):Q(o)}catch{return!1}}function Nr(e,t,n){try{let r=Ar(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=Tr(),o=Date.now()){let i=t!=="win32"&&Ne(e)==="#!",s=Nr(e,i,n),u=vr(r);if(u?.key===s&&(u.ok||o-u.at<Er))return u.ok;let l=Q(e,t)&&(i?Pr(e,n):Rr(e));return Or(r,{key:s,ok:l,at:o,skipped:(u?.skipped??0)+(l?0:1)}),l}var Fr=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"]),Mr=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"]),wt=new Set(["sh","bash","zsh","dash","ksh","fish","python","python3","python2","node","ruby","perl","php","awk","sed","deno","bun"]),yt="(?:dev|start|serve|watch|preview)",zr=new RegExp(`^(?:\\S*/)?(?:bun\\s+(?:install|i|add|remove|rm|update|outdated|audit|test|build|pm|x)(?:\\s|$)|bun\\s+run\\s+(?!${yt}(?:\\s|$))[A-Za-z0-9:_-]+(?:\\s|$)|deno\\s+(?:test|lint|fmt|check|compile|install|info|doc|bench|outdated)(?:\\s|$)|deno\\s+task\\s+(?!${yt}(?:\\s|$))[A-Za-z0-9:_-]+(?:\\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)`),Ur=/(?:^|\s)--watch(?:\s|=|$)/;function Wr(e){return zr.test(e)&&!Ur.test(e)}var Jr=/^((?:\S*\/)?(sh|bash|zsh|dash|ksh|fish)\s+(-[elux]*c[elux]*)\s+)(['"])/,Br=/[()$]|(?:^|[;&|\n]\s*)(?:and|or|not|begin|end|if|else|switch|case|while|for|function|return)(?:\s|;|$)/,It=3;function Ht(e){let t=Jr.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&&Br.test(u)?null:{script:u,start:o,end:i,quote:r}}var Gr=new Set(["cd","export","set","unset","source",".","true",":","pushd","popd"]);function Zr(e){return De(e).filter(n=>{if(n.kind!=="cmd"||n.unsafe)return!1;let r=jt(n.text);return r!==""&&!Gr.has(r)&&!je.test(r)}).length>1}function Vr(e,t,n,r,o){if(n>=It)return null;let i=Ht(e);if(!i)return null;let{script:s,start:u,end:l,quote:a}=i,c=[],d=Dt(s,t,n+1,r,y=>c.push(y));if(d===s||a==='"'&&/["$`]/.test(d))return null;let g=a==="'"?d.replace(/'/g,"'\\''"):d,m=`${e.slice(0,u)}${g}${e.slice(l)}`,h=Zr(s);if(o)for(let y of h?[e,...c]:c)o(y);return h?`${t} ${m}`:m}var St=/(?:^|\s)(?:--follow|-[0-9a-zA-Z]*f[a-zA-Z]*)(?:\s|=|$)/,Kr=/(?:^|\s)(?:--follow|-[0-9a-zA-Z]*[fF][a-zA-Z]*)(?:\s|=|$)/,qr=new Set(["docker","podman","kubectl","nerdctl","docker-compose","stern","flyctl"]),xt=new Set(["npm","pnpm","yarn","bun"]),At=/^(?:dev|start|serve|preview|watch)(?::\S*)?$/,Yr=new Set(["--filter","-F","--dir","-C","--prefix","--workspace","-w","--cwd"]),$t=new Set(["npx","pnpx","bunx"]),Xr=new Set(["nodemon","top","htop","btop","watch"]),Qr=new Set(["tsc","vitest","jest","webpack","rollup","esbuild","tsup","babel","sass","tailwindcss","mocha","swc","parcel","nest"]),eo=/(?:^|\s)--watch(?:All)?(?:\s|=(?!false(?:\s|$))|$)/,Ct=/(?:^|\s)-w(?:\s|$)/;function to(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($t.has(n)||xt.has(n)&&(t[1]==="exec"||t[1]==="dlx"))t=t.slice($t.has(n)?1:2).filter((s,u,l)=>!(s.startsWith("-")&&l.slice(0,u).every(a=>a.startsWith("-")))),n=z(t[0]??"");else if(xt.has(n)){let s=t.slice(1).filter((l,a,c)=>!l.startsWith("-")&&!Yr.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&&At.test(u)}let r=t.slice(1),o=r.join(" "),i=r.find(s=>!s.startsWith("-"));if(Xr.has(n)||eo.test(o)||Qr.has(n)&&Ct.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&&At.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")&&Ct.test(o)||/(?:^|\s)--watch-only(?:\s|=|$)/.test(o);default:return!1}}function no(e,t){let n=z(t);return n==="tail"?Kr.test(e):n==="journalctl"?St.test(e):n==="stern"||qr.has(n)&&/\blogs?\b/.test(e)&&St.test(e)?!0:to(e.split(/\s+/))}var je=/^[A-Za-z_][A-Za-z0-9_]*\+?=/,ro=/^[A-Za-z_][A-Za-z0-9_-]*\s*\(\s*\)/,oo=/(?:^|[;&|\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 Lt(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 He(e){let t=Lt(e);if(!t)return!0;for(let n=0;n<e.length;n++)if(t[n]&&e[n]===">")return!0;return!1}function De(e){let t=Lt(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===`
|
|
16
|
+
`||u==="|"){s(u,1);continue}}r+=u,o+=1}return i(),n}function jt(e){return e.trim().split(/\s+/)[0]??""}function $(e,t=process.platform){try{let n=Nt(Lr(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(R(l))return Ie(l,t)?`'${l.replace(/\\/g,"/").replace(/'/g,"'\\''")}'`:null}let i=p(n,"..","bin","tkr-exec"),s=!r&&R(i);if(s&&!Ie(i,t))return null;if(!r&&process.env.TOKMIZER_STABLE_RUN!=="0"){let l=st(p(n,"..","bin","tkr-exec.js"));if(l&&(s||R(p(n,"..","bin","tkr-exec.js"))))return`${o}'${l.replace(/'/g,"'\\''")}'`}if(s)return`${o}'${i.replace(/'/g,"'\\''")}'`;if(V()){let l=r?process.execPath.replace(/\\/g,"/"):process.execPath;return`${o}'${l.replace(/'/g,"'\\''")}' exec`}let u=p(n,"..","bin","tkr-exec.js");return R(u)?`${o}node '${u.replace(/'/g,"'\\''")}'`:null}catch{return null}}function io(e,t="tkr-exec",n=()=>!0,r){return Dt(e,t,0,n,r)}var so=new Set(["{","for","while","until","if","case","select"]),uo=new Set(["}","done","fi","esac"]),lo=new Set(["then","do","else","elif","!","time","{","if","while","until"]);function ao(e,t){let n=e[t+1];return He(e[t].text)||n?.kind==="sep"&&(n.text==="|"||n.text==="|&")}function co(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(uo.has(i)){let s=n.pop();if(s!==void 0&&ao(e,r))for(let u=s;u<=r;u++)t.add(u);continue}if(so.has(i)&&n.push(r),!lo.has(i))break}}return t}function Dt(e,t,n,r,o){if(e.includes("<<")||oo.test(e))return e;let i=De(e),s=co(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=jt(c),g=i[l+1],m=g?.kind==="sep"&&(g.text==="|"||g.text==="|&"),h=g?.kind==="sep"&&g.text==="&",y=!m&&!h&&!He(a.text)&&!a.text.includes("<(")&&!a.text.includes(">(")?Vr(c,t,n,r,o):null;if(y!==null){u.push(`${a.text.match(/^\s*/)?.[0]??""}${y}${a.text.slice(a.text.trimEnd().length)}`);continue}if(c===t||c.startsWith(t)&&/^\s/.test(c.slice(t.length))||Fr.has(d)||Mr.has(d)||(wt.has(d)||wt.has(z(d)))&&!Wr(c)||je.test(d)||d.startsWith("(")||d.startsWith("#")||d.startsWith("<")||d.startsWith(">")||ro.test(c)||no(c,d)||d.endsWith(")")||m||h||He(a.text)||a.text.includes("<(")||a.text.includes(">(")||d==="node"&&c.includes("tkr-exec.js")||!r(d,c)){u.push(a.text);continue}let we=a.text.match(/^\s*/)?.[0]??"",S=a.text.slice(a.text.trimEnd().length);o?.(c),u.push(`${we}${t} ${c}${S}`)}return u.join("")}var fo=new Set(["command","workdir","timeout_ms","yield_time_ms","max_output_tokens","shell","login","tty","description"]),po=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"]),mo=new Set(["log","diff","show","status","blame","ls-files","rev-parse","describe","shortlog"]),go={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/},de=["test","run test","run build","run lint","run typecheck"],ho={npm:new Set(de),pnpm:new Set([...de,"build","lint","typecheck"]),yarn:new Set([...de,"build","lint","typecheck"]),bun:new Set(de),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"])},ko=new Set(["pytest","tsc","vitest","jest","eslint","mypy"]);function Ft(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 De(e)){if(r.kind==="sep")continue;if(r.unsafe)return!1;let o=n<It?Ht(r.text.trim()):null;if(o){if(!Ft(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=>je.test(a)))return!1;let s=z(i[0]);if(s!==i[0])return!1;let u=go[s];if(u&&i.slice(1).some(a=>u.test(a)))return!1;if((s==="git"?mo.has(i[1]??""):po.has(s))||t&&ko.has(s))continue;let l=t?ho[s]:void 0;if(!(l&&(l.has(i[1]??"")||i[1]==="run"&&l.has(`run ${i[2]??""}`))))return!1}return!0}function Mt(e,t,n=$(t),r=w,o=me(),i=process.env.PATH,s=Fe){if(!k(e)||e.tool_name!=="Bash"||t==="claude-code"&&bo(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(y=>!fo.has(y)))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",g=typeof e.permission_mode=="string"?e.permission_mode:void 0,m=Kt(l,{host:t,sessionId:d,cwd:c,claudeDirs:o,pathEnv:i,permissionMode:g},n,r);if(!m)return null;let h={...u,command:m.command};return JSON.stringify({hookSpecificOutput:t==="codex"?{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:h}:m.allowedBy?{hookEventName:"PreToolUse",permissionDecision:"allow",permissionDecisionReason:`Tokmizer: allowed by your rule ${m.allowedBy}`,updatedInput:h}:m.ask?{hookEventName:"PreToolUse",permissionDecision:"ask",permissionDecisionReason:"Tokmizer shortens this command's output; nothing else changes.",updatedInput:h}:{hookEventName:"PreToolUse",updatedInput:h}})}var _o=/(?:^|\s)--(?:disallowedTools|disallowed-tools|settings|setting-sources)(?:[=\s]|$)/;function Fe(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=Pt("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 bo(e){return e===null||_o.test(e)}function wo(e,t){if(!R(e))return"missing";try{let n=ee(e,"utf8").replace(/^\uFEFF/,"");return n.trim()===""?{}:JSON.parse(t?zt(n):n)}catch{return"unreadable"}}function zt(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]!==`
|
|
17
17
|
`;)r++;t+=`
|
|
18
|
-
`}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 U(e){let t=[],n=Nr(e);for(;;){t.push(n);let r=vt(n);if(r===n)return t;n=r}}function go(){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 re(e,t,n,r){let o=[];for(let i of e){let s=mo(i,t);if(s!=="missing"&&(s==="unreadable"||!h(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()?ue():void 0}}function ho(e,t){let n=y=>[p(y,"settings.json"),p(y,"settings.local.json")],r=y=>n(p(y,".claude")),o=p(H(),".claude"),i=t.configDir||o,s=[[go(),"managed"],[[p(i,"settings.json")],"loaded"],[[p(i,"settings.local.json")],"loadedLocal"],[t.configDir?n(o):[],"extra"],[t.projectDir?r(t.projectDir):[],"project"],[U(e).flatMap(r),"extra"]],u=[],l={managed:[],loaded:[],loadedLocal:[],project:[],extra:[]},a={managed:!1,loaded:!1,loadedLocal:!1,project:!1,extra:!1},c=!1,d="managed",g=(y,Z)=>{let v=y.permissions;if(d==="managed"&&(y.allowManagedPermissionRulesOnly===!0||h(v)&&v.allowManagedPermissionRulesOnly===!0)&&(c=!0),v===void 0)return!0;if(!h(v))return!1;for(let Je of["deny","ask","allow"]){let We=ne(v[Je]);if(!We)return!1;for(let Be of We){let j=/^\s*Bash\s*(?:\(([\s\S]*)\))?\s*$/.exec(Be);if(j)if(Je!=="allow")Z.push(L((j[1]??"*").replace(/:\*$/," *")));else if(j[1]===void 0||j[1].trim()==="*")a[d]=!0;else{u.push(L(j[1].replace(/:\*$/," *")));let Ge=Lo(j[1]);Ge&&l[d].push({rule:Be.trim(),matches:Ge})}}}return!0},m=[];for(let[y,Z]of s){d=Z;let v=re(y,!1,g,!0);if(v==="unreadable")return"unreadable";m.push(...v.matchers)}let k=a.managed||(a.loaded||a.loadedLocal)&&!c,A=[...l.managed,...c?[]:l.loaded];return{matchers:[...m,...k?[]:u],complete:!0,allow:u,allowsEverything:k,guards:m,trustedAllow:A}}function ko(e){let t=[p(H(),".cursor","cli-config.json"),...U(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(!h(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 _o(){return process.platform==="darwin"?"/Library/Application Support/GeminiCli":process.platform==="win32"?"C:\\ProgramData\\gemini-cli":"/etc/gemini-cli"}var Dt=/^\s*(?:run_shell_command|ShellTool)\s*(?:\(([\s\S]*)\))?\s*$/;function bo(e,t){let n=e.tools;if(n!==void 0&&!h(n))return!1;let r=[ne(e.excludeTools),ne(h(n)?n.exclude:void 0)];for(let o of r){if(!o)return!1;for(let i of o){let s=Dt.exec(i);s&&t.push(L(s[1]===void 0?"*":`${s[1]}*`))}}return!0}function Ct(e){try{return JSON.parse(e)}catch{return null}}function wo(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]??Ct(`"${r[1]}"`);if(o===null)return null;n.push(o)}return n}if(t.startsWith('"')){let n=/^"((?:\\.|[^"\\])*)"/.exec(t);return n?Ct(`"${n[1]}"`):null}if(t.startsWith("'")){let n=/^'([^']*)'/.exec(t);return n?n[1]:null}return t.replace(/\s*#.*$/,"")}function yo(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=wo(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==="*"||Dt.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 Tt(e){try{return me(e).filter(t=>t.endsWith(".toml")).map(t=>p(e,t))}catch{return[]}}function So(e){let t=_o(),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"),...U(e).map(o=>p(o,".gemini","settings.json"))].filter(o=>!!o),r=re(n,!0,bo,!1);if(r==="unreadable")return r;for(let o of[...Tt(p(H(),".gemini","policies")),...Tt(p(t,"policies"))]){let i;try{i=te(o,"utf8")}catch{return"unreadable"}if(!yo(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(!h(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(!h(r))return!1;for(let[o,i]of Object.entries(r))i!=="allow"&&t.push(L(o.replace(/\?/g,"*")))}}return!0}function Et(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(!h(r))return!1;for(let o of Object.values(r))if(h(o)&&(o.permissions!==void 0||!He(o.permission,t)))return!1}}return!0}function xo(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(te(p(t,n,o),"utf8")))return!0}catch{return!0}}return!1}function $o(e){let t=p(process.env.XDG_CONFIG_HOME||p(H(),".config"),"opencode"),n=U(e),r=[t,...n.map(u=>p(u,".opencode"))];if(xo(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,Et,!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(jt(u))}catch{return"unreadable"}if(!(u===process.env.OPENCODE_PERMISSION?He(l,s.matchers):h(l)&&Et(l,s.matchers)))return"unreadable"}return s}function Ao(){return re([p(H(),".gemini","antigravity-cli","settings.json")],!0,(e,t)=>{let n=e.permissions;if(n===void 0)return!0;if(!h(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 Co(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 Ft(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=Ft(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 Mt(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(Fe).join("|")})`)}let n=new RegExp(`^${t.join(" ")}(?= |$)`);return r=>he(n,r)}function To(e,t){let n=Co(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]=Ft(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=Mt(i.pattern);if(!u)return!1;s!=="allow"&&t.push(u)}return!0}function Eo(e){if(!I(e))return[];try{return me(e).filter(t=>t.endsWith(".rules")).sort().map(t=>p(e,t))}catch{return"unreadable"}}function vo(){return process.platform==="win32"?p(process.env.ProgramData||"C:\\ProgramData","OpenAI","Codex","requirements.toml"):"/etc/codex/requirements.toml"}function Oo(e){if(!(!h(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 Ro(e,t){let n;try{n=Oe(e)}catch{return!1}if(n.rules===void 0)return!0;if(!h(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(!h(o)||!Array.isArray(o.pattern)||o.decision!=="prompt"&&o.decision!=="forbidden")return!1;let i=o.pattern.map(Oo);if(i.some(u=>u===void 0))return!1;let s=Mt(i);if(!s)return!1;t.push(s)}return!0}function No(e){let t=process.env.CODEX_HOME||p(H(),".codex"),n=[p(t,"rules"),...U(e).map(i=>p(i,".codex","rules"))],r=[],o=null;try{o=te(vo(),"utf8")}catch(i){let s=i.code;if(s!=="ENOENT"&&s!=="ENOTDIR")return"unreadable"}if(o!==null&&!Ro(o,r))return"unreadable";for(let i of[...new Set(n)]){let s=Eo(i);if(s==="unreadable")return"unreadable";for(let u of s){let l;try{l=te(u,"utf8")}catch{return"unreadable"}if(!To(l,r))return"unreadable"}}return{matchers:r,complete:!1}}function h(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Fe(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Po(e){let t=e.trim().replace(/\s+/g," "),n=t.endsWith(" *")&&t.length>2,r=(n?t.slice(0,-2):t).split("*").map(Fe).join("[\\s\\S]*");return new RegExp(`^${r}${n?"(?: [\\s\\S]*)?":""}(?= |$)`)}var Io=512;function Ho(e){let t=e.replace(/['"\\]/g,"").split(/[\s;&|(){}<>`$]+/).filter(Boolean);return[t,t.map(z)]}function he(e,t){if(e.test(t)||e.test(t.trim().replace(/\s+/g," ")))return!0;for(let n of Ho(t)){if(n.length>Io)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=Po(e);return n=>he(t,n)}function Lo(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(`^${Fe(r)}${n?"(?: [\\s\\S]*)?":""}$`);return i=>o.test(i)}var jo={"claude-code":ho,cursor:ko,"gemini-cli":So,opencode:$o,antigravity:Ao,codex:No},Do=new Set(["codex"]),zt=/(?:^|[\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 Fo(e,t,n){let r=jo[e];return r?r(t??process.cwd(),n):{matchers:[],complete:!1}}function Mo(e,t,n){return e==="unreadable"||zt.test(t.replace(/['"\\]/g,""))||e.matchers.some(r=>r(t))?!1:e.complete||Ht(t,!Do.has(n))}var Ut=new Set(["default","acceptEdits","dontAsk"]);function Jt(e,t){return t.host!=="claude-code"||t.permissionMode==="bypassPermissions"?!0:e!=="unreadable"&&e.allowsEverything===!0&&Ut.has(t.permissionMode??"")}var zo=/(?:^|[\s/])git(?:\.exe|\.real|-[a-z][\w-]*)?(?=\s|$)/;function Uo(e){if(!e)return!1;try{for(let t of U(e)){let n=p(t,".git");if(I(n))return Or(n).isFile()}}catch{return!0}return!1}function Jo(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&&zo.test(s)&&(o??=Uo(e.cwd))||(r??=gt(t.configDir),!M(i,e.cwd,n)&&!r.paths.some(u=>M(i,e.cwd,u)))?!1:i.includes("/")||!ht(i,r)}var Wo=/^[^\s;&|<>()$`\\{}*?[\]~#!]+(?: [^\s;&|<>()$`\\{}*?[\]~#!]+)*$/;function Bo(e,t,n){return n.host!=="claude-code"||e==="unreadable"||Jt(e,n)||!Ut.has(n.permissionMode??"")||!Wo.test(t)||zt.test(t.replace(/['"]/g,""))||(e.guards??[]).some(r=>r(t))?null:(e.trustedAllow??[]).find(r=>r.matches(t))?.rule??null}var Go=/^(?:\S+=\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 Zo(e,t){return t.host==="claude-code"&&t.permissionMode==="default"&&Go.test(e.trim())}function Wt(e,t,n,r){if(!n||/["\\$`;&|<>(){}]|'\\''/.test(n))return null;let o=t.claudeDirs??ge(),i=Fo(t.host,t.cwd,o),s=Bo(i,e,t),u=s||Mo(i,e,t.host)?Qr(e,n,Jo(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}:Jt(i,t)?{command:u}:i!=="unreadable"&&Zo(e,t)&&!(i.allow??[]).some(l=>l(e))&&!(i.trustedAllow??[]).some(l=>l.matches(e))?{command:u,ask:!0}:null}function R(e,t,n,r){let o=Wt(e,t,n,r);return o&&!o.ask?o.command:null}function J(e,t,n="unknown",r=$(t),o=w){return e?R(e,{host:t,sessionId:n},C()?null:r,o):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 Vo(e){return _(e,"prompt_id")||_(e,"scratchpad_dir")?!0:oe(e.effort)}function Ko(e){return _(e,"tool_use_id")?.startsWith("toolu_")===!0||/^claude/i.test(_(e,"model")??"")}var qo=new Set(["BeforeTool","AfterTool","BeforeAgent","AfterAgent","BeforeModel","AfterModel","BeforeToolSelection"]),Yo=new Set(["preToolUse","postToolUse","beforeShellExecution","afterShellExecution","beforeSubmitPrompt","sessionStart","sessionEnd","stop"]),Xo=new Set(["pre_tool","post_tool"]),Qo=new Set(["before_tool_call","after_tool_call"]),ei=new Set(["runTerminalCommand","run_in_terminal"]),ti=[["codex",e=>_(e,"turn_id")!==null],["claude-code",Vo],["cursor",e=>_(e,"cursor_version")!==null||_(e,"generation_id")!==null||_(e,"conversation_id")!==null||Array.isArray(e.workspace_roots)||Yo.has(_(e,"hook_event_name")??"")],["gemini-cli",e=>qo.has(_(e,"hook_event_name")??"")],["qwen-code",e=>e.hook_event_name==="PreToolUse"&&e.tool_name==="run_shell_command"],["vibe",e=>Xo.has(_(e,"hook_event_name")??"")],["antigravity",e=>oe(e.toolCall)],["copilot",e=>_(e,"toolName")!==null&&"toolArgs"in e||ei.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&&!Qo.has(_(e,"event"))]],ni=new Set(["codex","antigravity"]);function ri(e){return oe(e)?ti.filter(([,t])=>t(e)).map(([t])=>t):[]}function Bt(e,t){if(!oe(e))return null;let n=ri(e);return n.length>1?null:n.length===1?n[0]:Ko(e)&&ni.has(t)?"claude-code":t==="codex"?null:t}var Me=JSON.stringify({permission:"allow"});function Gt(e,t=$("cursor"),n=w){if(e.tool_name!=="Shell")return Me;let r=e.tool_input??{},o=r.command;if(typeof o!="string"||!o)return Me;let i=typeof r.working_directory=="string"?r.working_directory:void 0,s=R(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}}):Me}var ke="{}";function Zt(e,t=$("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=R(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}var E="{}",oi=new Set(["runTerminalCommand","run_in_terminal","Bash","bash"]),ii=["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 ui(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)||ii.some(s=>t[s]===!0))return null;let i=t.command;return typeof i!="string"||!i?null:R(i,{host:e,sessionId:si(n),cwd:ui(n,t)},C()?null:r,o)}function B(e,t){return JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",updatedInput:{...e,command:t}}})}function li(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 ai(e,t,n){if(typeof e.tool_name=="string"){if(!oi.has(e.tool_name))return E;let i=e.tool_input,s=be("copilot",i,e,t,n);return s?B(i,s):E}if(e.toolName!=="bash")return E;let r=li(e.toolArgs),o=be("copilot",r,e,t,n);return o?JSON.stringify({modifiedArgs:{...r,command:o}}):E}function W(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 fi(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?B(o,i):E}var di={copilot:ai,droid:W("droid","Execute",B),trae:W("trae","RunCommand",B),"qwen-code":W("qwen-code","run_shell_command",B),crush:W("crush","bash",(e,t)=>JSON.stringify({updated_input:{command:t}})),junie:W("junie","Bash",(e,t)=>JSON.stringify({updatedInput:{...e,command:t}})),zcode:W("zcode","Bash",B),grok:fi};function Vt(e,t,n=$(e),r=w){return _e(t)?di[e](t,n,r):E}function G(e){return C()?null:$(e)}function pi(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"?"":Lt(t,e,G(e),r,n.claudeDirs??ge(),n.pathEnv??process.env.PATH,n.launchArgs??De)??"";case"cursor":return Gt(t,G(e),r);case"gemini-cli":return Zt(t,G(e),r);case"vibe":return ze(t,(o,i)=>J(o,"vibe",i,G(e),r));case"antigravity":return Ue(t,(o,i)=>J(o,"antigravity",i,G(e),r));default:return Vt(e,t,G(e),r)}}function ie(e,t,n={}){let r=Bt(e,t);return r?pi(r,e,n):n.fallback??""}var mi=new Set(["bash","file_system.bash"]),we=JSON.stringify({decision:"allow"});function ze(e,t=(n,r)=>J(n,"vibe",r)){if(!P(e)||e.hook_event_name!=="pre_tool"||typeof e.tool_name!="string"||!mi.has(e.tool_name))return"";let n=e.tool_input;if(!P(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 Ue(e,t=(n,r)=>J(n,"antigravity",r)){if(!P(e)||!P(e.toolCall)||e.toolCall.name!=="run_command")return we;let n=e.toolCall.args;if(!P(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 Kt={vibe:{build:e=>ze(e),fallback:""},antigravity:{build:e=>Ue(e),fallback:we}};function qt(e){return Kt[e??""]?.fallback??""}function gi(e,t){let n=Kt[e??""];if(!n)return"";let r;try{r=JSON.parse(t.replace(/^/,""))}catch{return n.fallback}return P(r)?ie(r,e,{fallback:n.fallback}):n.build(r)}async function Yt(e){process.stdout.write(gi(e,await V()))}Yt(process.argv[2]).catch(e=>{process.stderr.write(`tkr-agent-hook: ${e.message}
|
|
19
|
-
`),process.stdout.write(
|
|
18
|
+
`}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 U(e){let t=[],n=jr(e);for(;;){t.push(n);let r=Nt(n);if(r===n)return t;n=r}}function yo(){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 So(){try{return Hr().username}catch{return""}}function xo(e){return e.error?e.error.code==="ETIMEDOUT":e.status!==1}var Ao=5*6e4,Et=new Map;function Ut(e,t){let n=Et.get(e);if(n&&Date.now()-n.at<Ao)return n.value;let r=["HKLM","HKCU"].some(o=>xo(Pt(e,["query",`${o}\\SOFTWARE\\Policies\\ClaudeCode`,"/v","Settings"],{cwd:t,stdio:"ignore",timeout:2e3,windowsHide:!0})));return Et.set(e,{at:Date.now(),value:r}),r}function $o(){let e=process.env.SystemRoot||"C:\\Windows";return Ut(Dr.join(e,"System32","reg.exe"),e)}var Tt="/mnt/c/Windows/System32/reg.exe";function Co(e){return!process.env.WSL_DISTRO_NAME&&!e("/proc/sys/fs/binfmt_misc/WSLInterop")?!1:e("/mnt/c/Program Files/ClaudeCode")?!0:e(Tt)&&Ut(Tt,"/mnt/c/Windows")}function Eo(e=process.platform,t=R,n=$o,r=So(),o=()=>Co(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 ne(e,t,n,r){let o=[];for(let i of e){let s=wo(i,t);if(s!=="missing"&&(s==="unreadable"||!k(s)||!n(s,o)))return"unreadable"}return{matchers:o,complete:r}}function te(e){return e===void 0?[]:Array.isArray(e)?e.filter(t=>typeof t=="string"):null}function me(){return{projectDir:process.env.CLAUDE_PROJECT_DIR,configDir:process.env.CLAUDE_CONFIG_DIR?.trim()?se():void 0}}function To(e,t){let n=S=>[p(S,"settings.json"),p(S,"settings.local.json")],r=S=>n(p(S,".claude")),o=p(H(),".claude"),i=t.configDir||o;if(Eo())return"unreadable";let u=[[[...[...new Set([p(i,"remote-settings.json"),p(o,"remote-settings.json")])],...yo()],"managed"],[[p(i,"settings.json")],"loaded"],[[p(i,"settings.local.json")],"loadedLocal"],[t.configDir?n(o):[],"extra"],[t.projectDir?r(t.projectDir):[],"project"],[U(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=(S,ye)=>{let v=S.permissions;if(g==="managed"&&(S.allowManagedPermissionRulesOnly===!0||k(v)&&v.allowManagedPermissionRulesOnly===!0)&&(d=!0),v===void 0)return!0;if(!k(v))return!1;for(let Je of["deny","ask","allow"]){let Be=te(v[Je]);if(!Be)return!1;for(let Ge of Be){let j=/^\s*Bash\s*(?:\(([\s\S]*)\))?\s*$/.exec(Ge);if(j)if(Je!=="allow")ye.push(L((j[1]??"*").replace(/:\*$/," *")));else if(j[1]===void 0||j[1].trim()==="*")c[g]=!0;else{l.push(L(j[1].replace(/:\*$/," *")));let Ze=Vo(j[1]);Ze&&a[g].push({rule:Ge.trim(),matches:Ze})}}}return!0},h=[];for(let[S,ye]of u){g=ye;let v=ne(S,!1,m,!0);if(v==="unreadable")return"unreadable";h.push(...v.matchers)}let y=c.managed||(c.loaded||c.loadedLocal)&&!d,we=[...a.managed,...d?[]:a.loaded];return{matchers:[...h,...y?[]:l],complete:!0,allow:l,allowsEverything:y,guards:h,trustedAllow:we}}function vo(e){let t=[p(H(),".cursor","cli-config.json"),...U(e).map(n=>p(n,".cursor","cli.json"))];return ne(t,!0,(n,r)=>{let o=n.permissions;if(o===void 0)return!0;if(!k(o))return!1;let i=te(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 Oo(){return process.platform==="darwin"?"/Library/Application Support/GeminiCli":process.platform==="win32"?"C:\\ProgramData\\gemini-cli":"/etc/gemini-cli"}var Wt=/^\s*(?:run_shell_command|ShellTool)\s*(?:\(([\s\S]*)\))?\s*$/;function Ro(e,t){let n=e.tools;if(n!==void 0&&!k(n))return!1;let r=[te(e.excludeTools),te(k(n)?n.exclude:void 0)];for(let o of r){if(!o)return!1;for(let i of o){let s=Wt.exec(i);s&&t.push(L(s[1]===void 0?"*":`${s[1]}*`))}}return!0}function vt(e){try{return JSON.parse(e)}catch{return null}}function Po(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]??vt(`"${r[1]}"`);if(o===null)return null;n.push(o)}return n}if(t.startsWith('"')){let n=/^"((?:\\.|[^"\\])*)"/.exec(t);return n?vt(`"${n[1]}"`):null}if(t.startsWith("'")){let n=/^'([^']*)'/.exec(t);return n?n[1]:null}return t.replace(/\s*#.*$/,"")}function No(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=Po(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==="*"||Wt.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}))||ge(a,c))}}return!0}function Ot(e){try{return pe(e).filter(t=>t.endsWith(".toml")).map(t=>p(e,t))}catch{return[]}}function Io(e){let t=Oo(),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"),...U(e).map(o=>p(o,".gemini","settings.json"))].filter(o=>!!o),r=ne(n,!0,Ro,!1);if(r==="unreadable")return r;for(let o of[...Ot(p(H(),".gemini","policies")),...Ot(p(t,"policies"))]){let i;try{i=ee(o,"utf8")}catch{return"unreadable"}if(!No(i,r.matchers))return"unreadable"}return r}function Le(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 Rt(e,t){if(e.permissions!==void 0||!Le(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||!Le(o.permission,t)))return!1}}return!0}function Ho(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(ee(p(t,n,o),"utf8")))return!0}catch{return!0}}return!1}function Lo(e){let t=p(process.env.XDG_CONFIG_HOME||p(H(),".config"),"opencode"),n=U(e),r=[t,...n.map(u=>p(u,".opencode"))];if(Ho(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=ne(i,!0,Rt,!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(zt(u))}catch{return"unreadable"}if(!(u===process.env.OPENCODE_PERMISSION?Le(l,s.matchers):k(l)&&Rt(l,s.matchers)))return"unreadable"}return s}function jo(){return ne([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=te(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=>ge(l,a))}}return!0},!1)}function Do(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 Jt(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=Jt(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 Bt(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=>ge(n,r)}function Fo(e,t){let n=Do(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]=Jt(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=Bt(i.pattern);if(!u)return!1;s!=="allow"&&t.push(u)}return!0}function Mo(e){if(!R(e))return[];try{return pe(e).filter(t=>t.endsWith(".rules")).sort().map(t=>p(e,t))}catch{return"unreadable"}}function zo(){return process.platform==="win32"?p(process.env.ProgramData||"C:\\ProgramData","OpenAI","Codex","requirements.toml"):"/etc/codex/requirements.toml"}function Uo(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 Wo(e,t){let n;try{n=Re(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(Uo);if(i.some(u=>u===void 0))return!1;let s=Bt(i);if(!s)return!1;t.push(s)}return!0}function Jo(e){let t=process.env.CODEX_HOME||p(H(),".codex"),n=[p(t,"rules"),...U(e).map(i=>p(i,".codex","rules"))],r=[],o=null;try{o=ee(zo(),"utf8")}catch(i){let s=i.code;if(s!=="ENOENT"&&s!=="ENOTDIR")return"unreadable"}if(o!==null&&!Wo(o,r))return"unreadable";for(let i of[...new Set(n)]){let s=Mo(i);if(s==="unreadable")return"unreadable";for(let u of s){let l;try{l=ee(u,"utf8")}catch{return"unreadable"}if(!Fo(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 Bo(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 Go=512;function Zo(e){let t=e.replace(/['"\\]/g,"").split(/[\s;&|(){}<>`$]+/).filter(Boolean);return[t,t.map(z)]}function ge(e,t){if(e.test(t)||e.test(t.trim().replace(/\s+/g," ")))return!0;for(let n of Zo(t)){if(n.length>Go)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=Bo(e);return n=>ge(t,n)}function Vo(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 Ko={"claude-code":To,cursor:vo,"gemini-cli":Io,opencode:Lo,antigravity:jo,codex:Jo},qo=new Set(["codex"]),Gt=/(?:^|[\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 Yo(e,t,n){let r=Ko[e];return r?r(t??process.cwd(),n):{matchers:[],complete:!1}}function Xo(e,t,n){return e==="unreadable"||Gt.test(t.replace(/['"\\]/g,""))||e.matchers.some(r=>r(t))?!1:e.complete||Ft(t,!qo.has(n))}var Zt=new Set(["default","acceptEdits","dontAsk"]);function Vt(e,t){return t.host!=="claude-code"||t.permissionMode==="bypassPermissions"?!0:e!=="unreadable"&&e.allowsEverything===!0&&Zt.has(t.permissionMode??"")}var Qo=/(?:^|[\s/])git(?:\.exe|\.real|-[a-z][\w-]*)?(?=\s|$)/;function ei(e){if(!e)return!1;try{for(let t of U(e)){let n=p(t,".git");if(R(n))return Ir(n).isFile()}}catch{return!0}return!1}function ti(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&&Qo.test(s)&&(o??=ei(e.cwd))||(r??=ht(t.configDir),!M(i,e.cwd,n)&&!r.paths.some(u=>M(i,e.cwd,u)))?!1:i.includes("/")||!kt(i,r)}var ni=/^[^\s;&|<>()$`\\{}*?[\]~#!]+(?: [^\s;&|<>()$`\\{}*?[\]~#!]+)*$/;function ri(e,t,n){return n.host!=="claude-code"||e==="unreadable"||Vt(e,n)||!Zt.has(n.permissionMode??"")||!ni.test(t)||Gt.test(t.replace(/['"]/g,""))||(e.guards??[]).some(r=>r(t))?null:(e.trustedAllow??[]).find(r=>r.matches(t))?.rule??null}var oi=65536,ii=/^(?:[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 si(e,t){return t.host==="claude-code"&&t.permissionMode==="default"&&ii.test(e.trim())}function Kt(e,t,n,r){if(!n||e.length>oi||/["\\$`;&|<>(){}]|'\\''/.test(n))return null;let o=t.claudeDirs??me(),i=Yo(t.host,t.cwd,o),s=ri(i,e,t),u=s||Xo(i,e,t.host)?io(e,n,ti(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}:Vt(i,t)?{command:u}:i!=="unreadable"&&si(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=Kt(e,t,n,r);return o&&!o.ask?o.command:null}function W(e,t,n="unknown",r=$(t),o=w){return e?P(e,{host:t,sessionId:n},C()?null:r,o):null}function _(e,t){let n=e[t];return typeof n=="string"&&n?n:null}function re(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function ui(e){return _(e,"prompt_id")||_(e,"scratchpad_dir")?!0:re(e.effort)}function li(e){return _(e,"tool_use_id")?.startsWith("toolu_")===!0||/^claude/i.test(_(e,"model")??"")}var ai=new Set(["BeforeTool","AfterTool","BeforeAgent","AfterAgent","BeforeModel","AfterModel","BeforeToolSelection"]),ci=new Set(["preToolUse","postToolUse","beforeShellExecution","afterShellExecution","beforeSubmitPrompt","sessionStart","sessionEnd","stop"]),fi=new Set(["pre_tool","post_tool"]),di=new Set(["before_tool_call","after_tool_call"]),pi=new Set(["runTerminalCommand","run_in_terminal"]),mi=[["codex",e=>_(e,"turn_id")!==null],["claude-code",ui],["cursor",e=>_(e,"cursor_version")!==null||_(e,"generation_id")!==null||_(e,"conversation_id")!==null||Array.isArray(e.workspace_roots)||ci.has(_(e,"hook_event_name")??"")],["gemini-cli",e=>ai.has(_(e,"hook_event_name")??"")],["qwen-code",e=>e.hook_event_name==="PreToolUse"&&e.tool_name==="run_shell_command"],["vibe",e=>fi.has(_(e,"hook_event_name")??"")],["antigravity",e=>re(e.toolCall)],["copilot",e=>_(e,"toolName")!==null&&"toolArgs"in e||pi.has(_(e,"tool_name")??"")],["grok",e=>e.toolName==="run_terminal_command"||e.tool_name==="run_terminal_command"||re(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&&!di.has(_(e,"event"))]],gi=new Set(["codex","antigravity"]);function hi(e){return re(e)?mi.filter(([,t])=>t(e)).map(([t])=>t):[]}function qt(e,t){if(!re(e))return null;let n=hi(e);return n.length>1?null:n.length===1?n[0]:li(e)&&gi.has(t)?"claude-code":t==="codex"?null:t}var ze=JSON.stringify({permission:"allow"});function Yt(e,t=$("cursor"),n=w){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=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}}):ze}var he="{}";function Xt(e,t=$("gemini-cli"),n=w){if(e.hook_event_name!=="BeforeTool"||e.tool_name!=="run_shell_command")return he;let r=e.tool_input??{};if(r.is_background)return he;let o=r.command;if(typeof o!="string"||!o)return he;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}}}):he}var T="{}",ki=new Set(["runTerminalCommand","run_in_terminal","Bash","bash"]),_i=["run_in_background","is_background","isBackground"];function ke(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function bi(e){let t=e.session_id??e.sessionId;return typeof t=="string"&&t?t:"unknown"}function wi(e,t){let n=e.cwd??t.cwd??t.workdir??t.working_directory;return typeof n=="string"&&n?n:void 0}function _e(e,t,n,r,o){if(!ke(t)||_i.some(s=>t[s]===!0))return null;let i=t.command;return typeof i!="string"||!i?null:P(i,{host:e,sessionId:bi(n),cwd:wi(n,t)},C()?null:r,o)}function B(e,t){return JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",updatedInput:{...e,command:t}}})}function yi(e){if(ke(e))return e;if(typeof e!="string")return null;try{let t=JSON.parse(e);return ke(t)?t:null}catch{return null}}function Si(e,t,n){if(typeof e.tool_name=="string"){if(!ki.has(e.tool_name))return T;let i=e.tool_input,s=_e("copilot",i,e,t,n);return s?B(i,s):T}if(e.toolName!=="bash")return T;let r=yi(e.toolArgs),o=_e("copilot",r,e,t,n);return o?JSON.stringify({modifiedArgs:{...r,command:o}}):T}function J(e,t,n){return(r,o,i)=>{if(r.tool_name!==t)return T;let s=r.tool_input,u=_e(e,s,r,o,i);return u?n(s,u):T}}var xi=new Set(["run_terminal_command","Bash","bash"]);function Ai(e,t,n){let r=e.toolName??e.tool_name;if(typeof r!="string"||!xi.has(r))return T;let o=e.toolInput??e.tool_input,i=_e("grok",o,e,t,n);return i?B(o,i):T}var $i={copilot:Si,droid:J("droid","Execute",B),trae:J("trae","RunCommand",B),"qwen-code":J("qwen-code","run_shell_command",B),crush:J("crush","bash",(e,t)=>JSON.stringify({updated_input:{command:t}})),junie:J("junie","Bash",(e,t)=>JSON.stringify({updatedInput:{...e,command:t}})),zcode:J("zcode","Bash",B),grok:Ai};function Qt(e,t,n=$(e),r=w){return ke(t)?$i[e](t,n,r):T}function G(e){return C()?null:$(e)}function Ci(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"?"":Mt(t,e,G(e),r,n.claudeDirs??me(),n.pathEnv??process.env.PATH,n.launchArgs??Fe)??"";case"cursor":return Yt(t,G(e),r);case"gemini-cli":return Xt(t,G(e),r);case"vibe":return Ue(t,(o,i)=>W(o,"vibe",i,G(e),r));case"antigravity":return We(t,(o,i)=>W(o,"antigravity",i,G(e),r));default:return Qt(e,t,G(e),r)}}function oe(e,t,n={}){let r=qt(e,t);return r?Ci(r,e,n):n.fallback??""}var Ei=new Set(["bash","file_system.bash"]),be=JSON.stringify({decision:"allow"});function Ue(e,t=(n,r)=>W(n,"vibe",r)){if(!I(e)||e.hook_event_name!=="pre_tool"||typeof e.tool_name!="string"||!Ei.has(e.tool_name))return"";let n=e.tool_input;if(!I(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 We(e,t=(n,r)=>W(n,"antigravity",r)){if(!I(e)||!I(e.toolCall)||e.toolCall.name!=="run_command")return be;let n=e.toolCall.args;if(!I(n)||typeof n.CommandLine!="string"||!n.CommandLine)return be;let r=t(n.CommandLine,typeof e.conversationId=="string"?e.conversationId:"unknown");return r?JSON.stringify({decision:"allow",overwrite:{CommandLine:r}}):be}var en={vibe:{build:e=>Ue(e),fallback:""},antigravity:{build:e=>We(e),fallback:be}};function tn(e){return en[e??""]?.fallback??""}function Ti(e,t){let n=en[e??""];if(!n)return"";let r;try{r=JSON.parse(t.replace(/^/,""))}catch{return n.fallback}return I(r)?oe(r,e,{fallback:n.fallback}):n.build(r)}async function nn(e){process.stdout.write(Ti(e,await Z()))}nn(process.argv[2]).catch(e=>{process.stderr.write(`tkr-agent-hook: ${e.message}
|
|
19
|
+
`),process.stdout.write(tn(process.argv[2])),process.exit(0)});
|
|
20
20
|
/*! Bundled license information:
|
|
21
21
|
|
|
22
22
|
smol-toml/dist/error.js:
|