@tokmizer/plugin 0.9.69 → 0.9.71

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