@tokmizer/plugin 0.9.68 → 0.9.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/dist/bin/tkr-agent-hook.js +13 -12
- package/dist/bin/tkr-codex-hook.js +75 -69
- package/dist/bin/tkr-copilot-hook.js +12 -11
- package/dist/bin/tkr-crush-hook.js +12 -11
- package/dist/bin/tkr-cursor-hook.js +12 -11
- package/dist/bin/tkr-daemon.js +134 -128
- package/dist/bin/tkr-droid-hook.js +12 -11
- package/dist/bin/tkr-exec +0 -0
- package/dist/bin/tkr-exec.js +83 -78
- package/dist/bin/tkr-gemini-hook.js +12 -11
- package/dist/bin/tkr-grok-hook.js +12 -11
- package/dist/bin/tkr-junie-hook.js +12 -11
- package/dist/bin/tkr-processor.js +102 -96
- package/dist/bin/tkr-qwen-hook.js +12 -11
- package/dist/bin/tkr-shim.js +85 -80
- package/dist/bin/tkr-trae-hook.js +12 -11
- package/dist/bin/tkr-zcode-hook.js +12 -11
- package/dist/bin/tkr.js +267 -263
- package/dist/hooks-host/post-tool-use.js +94 -89
- package/dist/hooks-host/pre-tool-use.js +13 -12
- package/dist/hooks-host/reducer-stop.js +1 -1
- package/dist/hooks-host/session-recap.js +1 -1
- package/dist/index.js +93 -88
- package/dist/native/manifest.json +12 -12
- package/dist/native/single.json +12 -12
- package/dist/native/tkr-exec-darwin-arm64 +0 -0
- package/dist/native/tkr-exec-darwin-x64 +0 -0
- package/dist/native/tkr-exec-linux-arm64 +0 -0
- package/dist/native/tkr-exec-linux-x64 +0 -0
- package/dist/native/tkr-exec-win32-arm64.exe +0 -0
- package/dist/native/tkr-exec-win32-x64.exe +0 -0
- package/package.json +7 -7
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __tkrCreateRequire } from "node:module"; const require = __tkrCreateRequire(import.meta.url);
|
|
3
|
-
function
|
|
4
|
-
`)
|
|
3
|
+
function W(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{basename as Bt}from"node:path";var Wt={exec:"tkr-exec",processor:"tkr-processor",daemon:"tkr-daemon","shim-run":"tkr-shim"},Gt={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=Bt(e).replace(/\.(m?js|ts)$/,"");if(t==="tkr")return[];for(let[n,r]of Object.entries(Wt))if(r===t)return[n];for(let[n,r]of Object.entries(Gt))if(r===t)return["hook",n];return null}import{realpathSync as Be}from"node:fs";import{delimiter as Zt,join as j}from"node:path";import Vt from"node:os";function G(){return!1}function We(e,t){try{return Be(e)===Be(t)}catch{return!1}}function ye(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"?";":Zt)){if(!o||o.includes("node_modules"))continue;let i=j(o,r);if(We(i,n))return i}if(t!=="win32"){let o=Vt.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(We(i,n))return i}return n}import{accessSync as en,chmodSync as tn,constants as nn,existsSync as ie,mkdirSync as rn,readdirSync as on,readFileSync as sn,realpathSync as qe,renameSync as un,unlinkSync as ln,writeFileSync as an}from"node:fs";import{basename as xe,dirname as O,join as T,sep as D}from"node:path";import cn from"node:os";import Kt from"node:os";import{join as qt}from"node:path";function S(){return process.env.TOKMIZER_HOME||qt(Kt.homedir(),".tokmizer")}import{rmSync as Yt,statSync as Xt}from"node:fs";import{join as Ge}from"node:path";function Ze(){return Ge(S(),"shims")}function we(){return Ge(S(),"fail-open")}var Qt=24*36e5;function A(e=Date.now()){try{if(e-Xt(we()).mtimeMs<Qt)return!0;Yt(we(),{force:!0})}catch{}return!1}function Ve(){return`[ -f ${N(we())} ]`}function N(e){return`'${e.replace(/'/g,"'\\''")}'`}function Ke(e){if(!e.startsWith("'")||!e.endsWith("'")||e.length<2)return null;let n=e.slice(1,-1).split("'\\''");return n.some(r=>r.includes("'"))?null:n.join("'")}var Xe=1,Z="tkr-shim.stable",Qe=/^(?:0|[1-9]\d{0,5})\.(?:0|[1-9]\d{0,5})\.(?:0|[1-9]\d{0,5})$/;function fn(){return T(S(),"bin","tkr-shim-launch")}function dn(){return T(S(),"bin","tkr-run")}function Ye(){return T(process.env.CLAUDE_CONFIG_DIR||T(cn.homedir(),".claude"),"plugins","cache","tokmizer","tokmizer")}function pn(e){let t=O(O(O(e)));return Qe.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 qe(n)===qe(e)?n:e}catch{return e}}function mn(e=process.execPath){return $e(e)?"":Ae(e)}function gn(e,t=G()){if(t&&oe(e)){let o=ye();return{single:$e(o)?"":Ae(o),js:"",cache:Ye(),node:""}}let n=mn(),r=pn(e);return r?{single:"",js:"",cache:r,node:n}:{single:"",js:$e(e)?"":Ae(e),cache:Ye(),node:n}}function hn(e){try{return en(e,nn.X_OK),!0}catch{return!1}}function kn(e){let t=null,n=-1,r;try{r=on(e)}catch{return null}for(let o of r){if(!Qe.test(o))continue;let i=T(e,o);if(!ie(T(i,"dist","bin","tkr-shim.js"))||!ie(T(i,"dist","bin",Z)))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&&hn(e.single)||e.js&&ie(e.js)&&(xe(e.js)!=="tkr-shim.js"||ie(T(O(e.js),Z)))?!0:e.cache!==""&&kn(e.cache)!==null}function _n(e,t){return["_tk_t=",`if [ -n "$_tk_j" ] && [ -f "${t}" ] && { [ "\${_tk_j##*/}" != tkr-shim.js ] || [ -f "\${_tk_j%/*}/${Z}" ]; }; 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/${Z}" ] || continue`," _tk_1=${_tk_v%%.*}; _tk_2=${_tk_v#*.}; _tk_3=${_tk_2#*.}; _tk_2=${_tk_2%%.*}"," _tk_v=$((_tk_1 * 1000000 + _tk_2 * 1000 + _tk_3))",` if [ "$_tk_v" -gt "$_tk_b" ]; then _tk_b=$_tk_v; _tk_t=\${_tk_r}dist/bin/${e}; fi`," done","fi",'if [ -z "$_tk_t" ]; then',` _tk_d=${N(Ze())}`," 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/${Z}" ] && [ -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 bn(e){return["#!/bin/sh",`_tk_f=${Xe}`,`_tk_s=${N(e.single)}`,`_tk_j=${N(e.js)}`,`_tk_k=${N(e.cache)}`,`_tk_n=${N(e.node)}`,'[ "$#" -gt 0 ] || exit 0',`if ! ${Ve()}; then`,' if [ -n "$_tk_s" ] && [ -x "$_tk_s" ]; then exec "$_tk_s" exec "$@"; fi',..._n("tkr-exec.js","${_tk_j%/*}/tkr-exec.js").map(t=>` ${t}`),' if [ -n "$_tk_t" ]; then'," _tk_r=${_tk_t%/*}",' if [ -f "$_tk_r/tkr-exec" ] && [ -s "$_tk_r/tkr-exec" ] && [ -x "$_tk_r/tkr-exec" ]; then exec "$_tk_r/tkr-exec" "$@"; fi',' if [ -n "$_tk_x" ] && [ -s "$_tk_t" ]; then exec "$_tk_x" "$_tk_t" "$@"; fi'," fi","fi",'exec "$@"',""].join(`
|
|
4
|
+
`)}function et(e){let t=dn(),n=gn(T(O(e),"tkr-shim.js")),r=wn(t);if(r&&r.format===Xe&&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 rn(O(t),{recursive:!0,mode:448}),an(o,bn(n),{mode:493}),tn(o,493),un(o,t),t}catch{try{ln(o)}catch{}return null}}function yn(e){let t=l=>{let u=e.match(new RegExp(`^${l}=(.*)$`,"m"));return u?l==="_tk_f"?u[1]:Ke(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 wn(e=fn()){try{return yn(sn(e,"utf8"))}catch{return null}}function P(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}var Oi=String.raw`(?:'(?:(?:[^']|'\\'')*[\\/])?tkr(?:\.(?:exe|cmd|bat|ps1))?'|"(?:[^"]*[\\/])?tkr(?:\.(?:exe|cmd|bat|ps1))?"|(?:[^\s'"]*[\\/])?tkr(?:\.(?:exe|cmd|bat|ps1))?)`;import{appendFileSync as Tn,chmodSync as Cn,mkdirSync as vn,existsSync as En,readFileSync as Hi,rmSync as Li}from"node:fs";import{dirname as On,join as Rn}from"node:path";import{readFileSync as Sn,renameSync as xn,statSync as $n,writeFileSync as An}from"node:fs";function tt(e,t,n){try{if($n(e).size<=t)return;let r=Sn(e,"utf8").split(`
|
|
5
|
+
`).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}`;An(s,o.length?`${o.join(`
|
|
5
6
|
`)}
|
|
6
|
-
`:"",{mode:384}),
|
|
7
|
-
`,{mode:384}),
|
|
7
|
+
`:"",{mode:384}),xn(s,e)}catch{}}var Nn="usage.jsonl";var nt=2*1024*1024;function Pn(){return Rn(S(),Nn)}function y(e,t,n=Pn()){try{let r=On(n);En(r)||vn(r,{recursive:!0,mode:448});let o=e.replace(/[^A-Za-z0-9._-]/g,"").slice(0,64)||"unknown";Tn(n,`{"t":${Math.floor(Date.now()/1e3)},"s":"${o}","o":${t?1:0}}
|
|
8
|
+
`,{mode:384}),Cn(n,384),tt(n,nt,nt/2)}catch{}}import{spawnSync as br}from"node:child_process";import{existsSync as M,readFileSync as X,readdirSync as fe}from"node:fs";import{homedir as I}from"node:os";import{fileURLToPath as yr}from"node:url";import{dirname as wt,join as p,resolve as wr}from"node:path";function In(e,t){let n=e.slice(0,t).split(/\r?\n/);return[n.length,n.pop().length+1]}function Hn(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+=`
|
|
8
9
|
`,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]=
|
|
10
|
+
`))}return o}var f=class e extends Error{line;column;codeblock;constructor(t,n){let[r,o]=In(n.toml,n.ptr),i=Hn(n.toml,r,o);super(`Invalid TOML document: ${t}
|
|
10
11
|
|
|
11
|
-
${i}`,n),this.line=r,this.column=o,this.codeblock=i}static x(t,n,r){throw new e(t,{toml:n.s,ptr:r??n.p})}};function
|
|
12
|
-
`:n===102?s+="\f":n===114?s+="\r":n===101?s+="\x1B":n===34?s+='"':n===92?s+="\\":f.x("unrecognised escape sequence",e),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 zt=/^(\d{4}-\d{2}-\d{2})?[Tt ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|z|[-+]\d{2}:\d{2})?$/i,M=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(zt);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 pe(e,t){return e===32||e===9||e===10||e===13||t&&(e===t||e===44)||e===35}function z(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?Le(e):He(e);return e.d++,o}return r===34||r===39?X(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?Q(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?Jt(e,r,t):e.s.charCodeAt(e.p+2)===58?Bt(e,r,t):Q(e,e.p,r,0,t)}function Q(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||pe(i=e.s.charCodeAt(e.p),o))return e.bi===!0?0n:0;if(!r){if(i===120)return de(e,t,16,o);if(i===98)return de(e,t,2,o);if(i===111)return de(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),!pe(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):Ne(e,u,10,t)}function de(e,t,n,r){let o,i=1;for(;++e.p<e.s.length&&(o=e.s.charCodeAt(e.p),!pe(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("_","")),Ne(e,s,n,t)}function Ne(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 Jt(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 Q(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 U(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 U(e,s,1,o,r,"[+00:00]")}if(t===43||t===45){let s=e.s.slice(r,e.p+=6);return U(e,s,1,o,r,!e.ld&&"["+e.s.slice(e.p-6,e.p)+"]")}}let i=e.s.slice(r,e.p);return U(e,i,2,o,r)}function Bt(e,t,n){let r=e.p;if(!b(t)||!b(e.s.charCodeAt(++e.p)))return Q(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 U(e,o,4,!1,r)}function U(e,t,n,r,o,i){if(e.ld){let s=new M(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 Wt(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 S(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;Wt(e)}}function ee(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(X(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 He(e){let t=e.p++,n=Object.create(null),r=new Set,o;for(;e.p<e.s.length;){if(S(e),(o=e.s.charCodeAt(e.p))===125)return e.p++,n;let i,s=n,l=!1,u=e.p,a=ee(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),S(e,!0,!0);let c=z(e,125);if(s&&typeof(s[i]=c)=="object"&&r.add(c),S(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 Le(e){let t=e.p++,n=[],r;for(;e.p<e.s.length;){if(S(e),(r=e.s.charCodeAt(e.p))===93)return e.p++,n;if(n.push(z(e,93)),S(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 De(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 je(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 me(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++,S(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=ee(n,93);a&&(e.charCodeAt(n.p)!==93&&f.x("expected end of table array declaration",n),n.p++);let d=De(n,c,r,o,a?2:1);d?(u=d[2],l=d[1]):(je(n,d,i),s=!0)}else{i=n.p;let a=ee(n),c=De(n,a,l,u,0);!c&&!s&&je(n,c,i),S(n,!0,!0);let d=z(n,void 0);c&&!s&&(c[1][c[0]]=d)}S(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),S(n)}return r}var ci=!!"".isWellFormed;import{execFileSync as pn}from"node:child_process";import{mkdirSync as mn,readFileSync as Je,renameSync as gn,statSync as hn,writeFileSync as kn}from"node:fs";import{join as Be}from"node:path";import{closeSync as Gt,openSync as Zt,readSync as Vt,readdirSync as qt,readFileSync as Kt,statSync as Me}from"node:fs";import{homedir as Yt}from"node:os";import{isAbsolute as Xt,join as te,resolve as Qt}from"node:path";var en=/^[A-Za-z0-9._+@%:,/-]+$/,tn=new Set(["7f454c46","feedface","feedfacf","cefaedfe","cffaedfe","cafebabe","bebafeca"]),nn=32,rn=4*1024*1024;function he(e){let t;try{t=Zt(e,"r");let n=Buffer.alloc(4),r=Vt(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&&Gt(t)}}function J(e,t=process.platform){try{let n=Me(e);if(!n.isFile())return!1;if(t==="win32")return!0;if((n.mode&73)===0)return!1;let r=he(e);return r==="#!"||r!==null&&tn.has(r)}catch{return!1}}function on(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 N(e,t,n,r=process.platform){if(!en.test(e))return!1;let o=r==="win32";if(e.includes("/"))return J(Qt(t??process.cwd(),e),r);if(!n)return!1;let i=o?on(e):[e];for(let s of n.split(o?";":":"))if(!(!s||!Xt(s))){for(let l of i)if(J(te(s,l),r))return!0}return!1}var sn=/^eval \$'([^\s'()=]+) \(\) /,ln=/^([^\s'"()=]+) \(\) \{$/,un=/^alias -- ([^\s=]+)=(.*)$/,an=/^# (?:Shell Options|Aliases|Shopt|Check for |Shadow )/,cn=/^export PATH=(.*)$/,fn=/^(?:--colou?r(?:=\S+)?|-G)$/;function Fe(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 dn(e,t){let n="";for(let r of e.split(`
|
|
13
|
-
`)){let o=
|
|
14
|
-
`,1)[0].slice(2).trim().split(/\s+/),o=r[0]??"";return o==="/usr/bin/env"?
|
|
15
|
-
`||l==="|"){s(l,1);continue}}r+=l,o+=1}return i(),n}function
|
|
12
|
+
${i}`,n),this.line=r,this.column=o,this.codeblock=i}static x(t,n,r){throw new e(t,{toml:n.s,ptr:r??n.p})}};function 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+=`
|
|
13
|
+
`:n===102?s+="\f":n===114?s+="\r":n===101?s+="\x1B":n===34?s+='"':n===92?s+="\\":f.x("unrecognised escape sequence",e),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 Ln=/^(\d{4}-\d{2}-\d{2})?[Tt ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|z|[-+]\d{2}:\d{2})?$/i,V=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(Ln);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 q(e,t){let n=e.p,r=e.s.charCodeAt(e.p);if(r===91||r===123){e.d--||f.x("document contains excessively nested structures. aborting.",e);let o=r===91?it(e):ot(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?jn(e,r,t):e.s.charCodeAt(e.p+2)===58?Dn(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):rt(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("_","")),rt(e,s,n,t)}function rt(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 jn(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 K(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 K(e,s,1,o,r,"[+00:00]")}if(t===43||t===45){let s=e.s.slice(r,e.p+=6);return K(e,s,1,o,r,!e.ld&&"["+e.s.slice(e.p-6,e.p)+"]")}}let i=e.s.slice(r,e.p);return K(e,i,2,o,r)}function Dn(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 K(e,o,4,!1,r)}function K(e,t,n,r,o,i){if(e.ld){let s=new V(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 Fn(e){for(;e.p<e.s.length;e.p++){let t=e.s.charCodeAt(e.p);if(t===10)break;if(t===13&&e.s.charCodeAt(e.p+1)===10){e.p++;break}(t<32&&t!==9||t===127)&&f.x("control characters are not allowed in comments",e)}}function x(e,t,n){let r;for(;e.p<e.s.length;){for(;e.p<e.s.length&&((r=e.s.charCodeAt(e.p))===32||r===9||!t&&(r===10||r===13&&e.s.charCodeAt(e.p+1)===10));)e.p++;if(n||r!==35)break;Fn(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 ot(e){let t=e.p++,n=Object.create(null),r=new Set,o;for(;e.p<e.s.length;){if(x(e),(o=e.s.charCodeAt(e.p))===125)return e.p++,n;let i,s=n,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),x(e,!0,!0);let c=q(e,125);if(s&&typeof(s[i]=c)=="object"&&r.add(c),x(e),(o=e.s.charCodeAt(e.p++))===125)return n;o!==44&&f.x("expected comma or end of structure",e,e.p-1)}f.x("unfinished table",e,t)}function it(e){let t=e.p++,n=[],r;for(;e.p<e.s.length;){if(x(e),(r=e.s.charCodeAt(e.p))===93)return e.p++,n;if(n.push(q(e,93)),x(e),(r=e.s.charCodeAt(e.p++))===93)return n;r!==44&&f.x("expected comma or end of structure",e,e.p-1)}f.x("unfinished array",e,t)}function st(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 ut(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++,x(n);n.p<e.length;){if(e.charCodeAt(n.p)===91){let a=e.charCodeAt(++n.p)===91;i=n.p+=+a,s=!1;let c=le(n,93);a&&(e.charCodeAt(n.p)!==93&&f.x("expected end of table array declaration",n),n.p++);let d=st(n,c,r,o,a?2:1);d?(u=d[2],l=d[1]):(ut(n,d,i),s=!0)}else{i=n.p;let a=le(n),c=st(n,a,l,u,0);!c&&!s&&ut(n,c,i),x(n,!0,!0);let d=q(n,void 0);c&&!s&&(c[1][c[0]]=d)}x(n,!0),n.p<e.length&&(i=e.charCodeAt(n.p))!==10&&(i!==13||e.charCodeAt(n.p+1)!==10)&&f.x("each key-value declaration must be followed by an end-of-line",n),x(n)}return r}var ls=!!"".isWellFormed;import{execFileSync as sr}from"node:child_process";import{mkdirSync as ur,readFileSync as dt,renameSync as lr,statSync as ar,writeFileSync as cr}from"node:fs";import{join as pt}from"node:path";import{closeSync as Mn,openSync as Un,readSync as zn,readdirSync as Jn,readFileSync as Bn,statSync as at}from"node:fs";import{homedir as Wn}from"node:os";import{isAbsolute as Gn,join as ae,resolve as Zn}from"node:path";var Vn=/^[A-Za-z0-9._+@%:,/-]+$/,Kn=new Set(["7f454c46","feedface","feedfacf","cefaedfe","cffaedfe","cafebabe","bebafeca"]),qn=32,Yn=4*1024*1024;function Oe(e){let t;try{t=Un(e,"r");let n=Buffer.alloc(4),r=zn(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&&Mn(t)}}function Y(e,t=process.platform){try{let n=at(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&&Kn.has(r)}catch{return!1}}function Xn(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(!Vn.test(e))return!1;let o=r==="win32";if(e.includes("/"))return Y(Zn(t??process.cwd(),e),r);if(!n)return!1;let i=o?Xn(e):[e];for(let s of n.split(o?";":":"))if(!(!s||!Gn(s))){for(let l of i)if(Y(ae(s,l),r))return!0}return!1}var Qn=/^eval \$'([^\s'()=]+) \(\) /,er=/^([^\s'"()=]+) \(\) \{$/,tr=/^alias -- ([^\s=]+)=(.*)$/,nr=/^# (?:Shell Options|Aliases|Shopt|Check for |Shadow )/,rr=/^export PATH=(.*)$/,or=/^(?:--colou?r(?:=\S+)?|-G)$/;function lt(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 ir(e,t){let n="";for(let r of e.split(`
|
|
14
|
+
`)){let o=rr.exec(r);if(o&&n!=="# Functions"){let i=lt(o[1].trim());/[$`\\]/.test(i)||t.paths.push(i);continue}if(r.startsWith("# ")&&(n!=="# Functions"||nr.test(r))){n=r;continue}if(n==="# Functions"){let i=Qn.exec(r)??er.exec(r);i&&t.functions.add(i[1])}else if(n==="# Aliases"){let i=tr.exec(r);i&&t.aliases.set(i[1],lt(i[2].trim()))}}}function Ee(e){return e?.code==="ENOENT"}function ct(e){let t={functions:new Set,aliases:new Map,paths:[],uncertain:!1},n=ae(e||ae(Wn(),".claude"),"shell-snapshots"),r=[];try{for(let o of Jn(n)){if(!o.startsWith("snapshot-")||!o.endsWith(".sh"))continue;let i=ae(n,o);try{let s=at(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>Yn)throw new Error("snapshot too large");ir(Bn(o.path,"utf8"),t)}catch(i){Ee(i)||(t.uncertain=!0)}return t}function ft(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=>or.test(o))}var fr="exec-probe.json",dr=6e4;function pr(){return pt(S(),fr)}function mr(e){try{let t=JSON.parse(dt(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 gr(e,t){try{ur(pt(e,".."),{recursive:!0,mode:448});let n=`${e}.${process.pid}.tmp`;cr(n,JSON.stringify(t),{mode:384}),lr(n,e)}catch{}}function hr(e){try{return sr(e,["--native-check"],{encoding:"utf8",timeout:2e3,maxBuffer:1024,stdio:["ignore","pipe","ignore"],windowsHide:!0}).startsWith("tokmizer-native ")}catch{return!1}}function kr(e,t){try{let r=dt(e,"utf8").split(`
|
|
15
|
+
`,1)[0].slice(2).trim().split(/\s+/),o=r[0]??"";return o==="/usr/bin/env"?F(r[1]??"",void 0,t):Y(o)}catch{return!1}}function _r(e,t,n){try{let r=ar(e);return[e,r.size,r.mtimeMs,r.ino,r.mode,t?n??"":""].join("|")}catch{return`${e}|missing`}}function Re(e,t=process.platform,n=process.env.PATH,r=pr(),o=Date.now()){let i=t!=="win32"&&Oe(e)==="#!",s=_r(e,i,n),l=mr(r);if(l?.key===s&&(l.ok||o-l.at<dr))return l.ok;let u=Y(e,t)&&(i?kr(e,n):hr(e));return gr(r,{key:s,ok:u,at:o,skipped:(l?.skipped??0)+(u?0:1)}),u}var Sr=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"]),xr=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"]),mt=new Set(["sh","bash","zsh","dash","ksh","fish","python","python3","python2","node","ruby","perl","php","awk","sed","deno","bun"]),gt="(?:dev|start|serve|watch|preview)",$r=new RegExp(`^(?:\\S*/)?(?:bun\\s+(?:install|i|add|remove|rm|update|outdated|audit|test|build|pm|x)(?:\\s|$)|bun\\s+run\\s+(?!${gt}(?:\\s|$))[A-Za-z0-9:_-]+(?:\\s|$)|deno\\s+(?:test|lint|fmt|check|compile|install|info|doc|bench|outdated)(?:\\s|$)|deno\\s+task\\s+(?!${gt}(?:\\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)`),Ar=/(?:^|\s)--watch(?:\s|=|$)/;function Tr(e){return $r.test(e)&&!Ar.test(e)}var Cr=/^((?:\S*\/)?(sh|bash|zsh|dash|ksh|fish)\s+(-[elux]*c[elux]*)\s+)(['"])/,vr=/[()$]|(?:^|[;&|\n]\s*)(?:and|or|not|begin|end|if|else|switch|case|while|for|function|return)(?:\s|;|$)/,St=3;function xt(e){let t=Cr.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&&vr.test(l)?null:{script:l,start:o,end:i,quote:r}}var Er=new Set(["cd","export","set","unset","source",".","true",":","pushd","popd"]);function Or(e){return Ie(e).filter(n=>{if(n.kind!=="cmd"||n.unsafe)return!1;let r=At(n.text);return r!==""&&!Er.has(r)&&!Pe.test(r)}).length>1}function Rr(e,t,n,r,o){if(n>=St)return null;let i=xt(e);if(!i)return null;let{script:s,start:l,end:u,quote:a}=i,c=[],d=Tt(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=Or(s);if(o)for(let C of h?[e,...c]:c)o(C);return h?`${t} ${m}`:m}var ht=/(?:^|\s)(?:--follow|-[0-9a-zA-Z]*f[a-zA-Z]*)(?:\s|=|$)/,Nr=new Set(["docker","podman","kubectl","nerdctl","docker-compose","stern","flyctl"]);function Pr(e,t){let n=de(t);return n==="tail"||n==="journalctl"?ht.test(e):n==="stern"?!0:Nr.has(n)?/\blogs?\b/.test(e)&&ht.test(e):!1}var Pe=/^[A-Za-z_][A-Za-z0-9_]*\+?=/,Ir=/^[A-Za-z_][A-Za-z0-9_-]*\s*\(\s*\)/,Hr=/(?:^|[;&|\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 $t(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 kt(e){let t=$t(e);if(!t)return!0;for(let n=0;n<e.length;n++)if(t[n]&&e[n]===">")return!0;return!1}function Ie(e){let t=$t(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===`
|
|
16
|
+
`||l==="|"){s(l,1);continue}}r+=l,o+=1}return i(),n}function At(e){return e.trim().split(/\s+/)[0]??""}function $(e,t=process.platform){try{let n=wt(yr(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=et(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(G()){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 Lr(e,t="tkr-exec",n=()=>!0,r){return Tt(e,t,0,n,r)}function Tt(e,t,n,r,o){if(e.includes("<<")||Hr.test(e))return e;let i=Ie(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=At(a),d=i[l+1],_=d?.kind==="sep"&&(d.text==="|"||d.text==="|&"),m=d?.kind==="sep"&&d.text==="&",h=!_&&!m&&!kt(u.text)&&!u.text.includes("<(")&&!u.text.includes(">(")?Rr(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))||Sr.has(c)||xr.has(c)||(mt.has(c)||mt.has(de(c)))&&!Tr(a)||Pe.test(c)||c.startsWith("(")||c.startsWith("#")||c.startsWith("<")||c.startsWith(">")||Ir.test(a)||Pr(a,c)||c.endsWith(")")||_||m||kt(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]??"",w=u.text.match(/\s*$/)?.[0]??"";o?.(a),s.push(`${C}${t} ${a}${w}`)}return s.join("")}var jr=new Set(["command","workdir","timeout_ms","yield_time_ms","max_output_tokens","shell","login","tty","description"]),Dr=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"]),Fr=new Set(["log","diff","show","status","blame","ls-files","rev-parse","describe","shortlog"]),Mr={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"],Ur={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"])},zr=new Set(["pytest","tsc","vitest","jest","eslint","mypy"]);function Ct(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 Ie(e)){if(r.kind==="sep")continue;if(r.unsafe)return!1;let o=n<St?xt(r.text.trim()):null;if(o){if(!Ct(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=>Pe.test(a)))return!1;let s=de(i[0]);if(s!==i[0])return!1;let l=Mr[s];if(l&&i.slice(1).some(a=>l.test(a)))return!1;if((s==="git"?Fr.has(i[1]??""):Dr.has(s))||t&&zr.has(s))continue;let u=t?Ur[s]:void 0;if(!(u&&(u.has(i[1]??"")||i[1]==="run"&&u.has(`run ${i[2]??""}`))))return!1}return!0}function vt(e,t,n=$(t),r=y,o=pe(),i=process.env.PATH,s=He){if(!g(e)||e.tool_name!=="Bash"||t==="claude-code"&&Br(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=>!jr.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=Lt(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 Jr=/(?:^|\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=br("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 Br(e){return e===null||Jr.test(e)}function Wr(e,t){if(!M(e))return"missing";try{let n=X(e,"utf8");return JSON.parse(t?Et(n):n)}catch{return"unreadable"}}function Et(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
17
|
`;)r++;t+=`
|
|
17
|
-
`}else if(o==="/"&&e[r+1]==="*"){if(r=e.indexOf("*/",r+2),r===-1)return"";r+=1}else t+=o}return t.replace(/,(\s*[}\]])/g,"$1")}function Z(e){let t=[],n=En(e);for(;;){t.push(n);let r=Xe(n);if(r===n)return t;n=r}}function Qn(){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 re(p(e,"managed-settings.d")))n.endsWith(".json")&&t.push(p(e,"managed-settings.d",n))}catch{return t}return t}function V(e,t,n,r){let o=[];for(let i of e){let s=Xn(i,t);if(s!=="missing"&&(s==="unreadable"||!g(s)||!n(s,o)))return"unreadable"}return{matchers:o,complete:r}}function G(e){return e===void 0?[]:Array.isArray(e)?e.filter(t=>typeof t=="string"):null}function ie(){return{projectDir:process.env.CLAUDE_PROJECT_DIR,configDir:process.env.CLAUDE_CONFIG_DIR}}function er(e,t){let n=w=>[p(w,"settings.json"),p(w,"settings.local.json")],r=w=>n(p(w,".claude")),o=p(R(),".claude"),i=t.configDir||o,s=[[Qn(),"managed"],[[p(i,"settings.json")],"loaded"],[[p(i,"settings.local.json")],"loadedLocal"],[t.configDir?n(o):[],"extra"],[t.projectDir?r(t.projectDir):[],"project"],[Z(e).flatMap(r),"extra"]],l=[],u={managed:[],loaded:[],loadedLocal:[],project:[],extra:[]},a={managed:!1,loaded:!1,loadedLocal:!1,project:!1,extra:!1},c=!1,d="managed",_=(w,fe)=>{let C=w.permissions;if(d==="managed"&&(w.allowManagedPermissionRulesOnly===!0||g(C)&&C.allowManagedPermissionRulesOnly===!0)&&(c=!0),C===void 0)return!0;if(!g(C))return!1;for(let Te of["deny","ask","allow"]){let Ce=G(C[Te]);if(!Ce)return!1;for(let Ee of Ce){let I=/^\s*Bash\s*(?:\(([\s\S]*)\))?\s*$/.exec(Ee);if(I)if(Te!=="allow")fe.push(P((I[1]??"*").replace(/:\*$/," *")));else if(I[1]===void 0||I[1].trim()==="*")a[d]=!0;else{l.push(P(I[1].replace(/:\*$/," *")));let Oe=yr(I[1]);Oe&&u[d].push({rule:Ee.trim(),matches:Oe})}}}return!0},m=[];for(let[w,fe]of s){d=fe;let C=V(w,!1,_,!0);if(C==="unreadable")return"unreadable";m.push(...C.matchers)}let h=a.managed||(a.loaded||a.loadedLocal)&&!c,$=[...u.managed,...c?[]:u.loaded];return{matchers:[...m,...h?[]:l],complete:!0,allow:l,allowsEverything:h,guards:m,trustedAllow:$}}function tr(e){let t=[p(R(),".cursor","cli-config.json"),...Z(e).map(n=>p(n,".cursor","cli.json"))];return V(t,!0,(n,r)=>{let o=n.permissions;if(o===void 0)return!0;if(!g(o))return!1;let i=G(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(P(a===-1?`${u} *`:`${u.slice(0,a)} ${u.slice(a+1)}`))}return!0},!1)}function nr(){return process.platform==="darwin"?"/Library/Application Support/GeminiCli":process.platform==="win32"?"C:\\ProgramData\\gemini-cli":"/etc/gemini-cli"}var lt=/^\s*(?:run_shell_command|ShellTool)\s*(?:\(([\s\S]*)\))?\s*$/;function rr(e,t){let n=e.tools;if(n!==void 0&&!g(n))return!1;let r=[G(e.excludeTools),G(g(n)?n.exclude:void 0)];for(let o of r){if(!o)return!1;for(let i of o){let s=lt.exec(i);s&&t.push(P(s[1]===void 0?"*":`${s[1]}*`))}}return!0}function qe(e){try{return JSON.parse(e)}catch{return null}}function or(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]??qe(`"${r[1]}"`);if(o===null)return null;n.push(o)}return n}if(t.startsWith('"')){let n=/^"((?:\\.|[^"\\])*)"/.exec(t);return n?qe(`"${n[1]}"`):null}if(t.startsWith("'")){let n=/^'([^']*)'/.exec(t);return n?n[1]:null}return t.replace(/\s*#.*$/,"")}function ir(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=or(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==="*"||lt.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(P(`${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}))||se(a,c))}}return!0}function Ke(e){try{return re(e).filter(t=>t.endsWith(".toml")).map(t=>p(e,t))}catch{return[]}}function sr(e){let t=nr(),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(R(),".gemini","settings.json"),...Z(e).map(o=>p(o,".gemini","settings.json"))].filter(o=>!!o),r=V(n,!0,rr,!1);if(r==="unreadable")return r;for(let o of[...Ke(p(R(),".gemini","policies")),...Ke(p(t,"policies"))]){let i;try{i=W(o,"utf8")}catch{return"unreadable"}if(!ir(i,r.matchers))return"unreadable"}return r}function _e(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(P(o.replace(/\?/g,"*")))}}return!0}function Ye(e,t){if(e.permissions!==void 0||!_e(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||!_e(o.permission,t)))return!1}}return!0}function lr(e){for(let t of e)for(let n of["agent","agents","mode","modes"]){let r;try{r=re(p(t,n))}catch{continue}for(let o of r)try{if(o.endsWith(".md")&&/permission/i.test(W(p(t,n,o),"utf8")))return!0}catch{return!0}}return!1}function ur(e){let t=p(process.env.XDG_CONFIG_HOME||p(R(),".config"),"opencode"),n=Z(e),r=[t,...n.map(l=>p(l,".opencode"))];if(lr(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=V(i,!0,Ye,!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(st(l))}catch{return"unreadable"}if(!(l===process.env.OPENCODE_PERMISSION?_e(u,s.matchers):g(u)&&Ye(u,s.matchers)))return"unreadable"}return s}function ar(){return V([p(R(),".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=G(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(P(l==="*"?"*":`${l} *`));continue}let u;try{u=new RegExp(l.slice(6))}catch{return!1}t.push(a=>se(u,a))}}return!0},!1)}function cr(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 at(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(Se).join("|")})`)}let n=new RegExp(`^${t.join(" ")}(?= |$)`);return r=>se(n,r)}function fr(e,t){let n=cr(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]=ut(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=at(i.pattern);if(!l)return!1;s!=="allow"&&t.push(l)}return!0}function dr(e){if(!B(e))return[];try{return re(e).filter(t=>t.endsWith(".rules")).sort().map(t=>p(e,t))}catch{return"unreadable"}}function pr(){return process.platform==="win32"?p(process.env.ProgramData||"C:\\ProgramData","OpenAI","Codex","requirements.toml"):"/etc/codex/requirements.toml"}function mr(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 gr(e,t){let n;try{n=me(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(mr);if(i.some(l=>l===void 0))return!1;let s=at(i);if(!s)return!1;t.push(s)}return!0}function hr(e){let t=process.env.CODEX_HOME||p(R(),".codex"),n=[p(t,"rules"),...Z(e).map(i=>p(i,".codex","rules"))],r=[],o=null;try{o=W(pr(),"utf8")}catch(i){let s=i.code;if(s!=="ENOENT"&&s!=="ENOTDIR")return"unreadable"}if(o!==null&&!gr(o,r))return"unreadable";for(let i of[...new Set(n)]){let s=dr(i);if(s==="unreadable")return"unreadable";for(let l of s){let u;try{u=W(l,"utf8")}catch{return"unreadable"}if(!fr(u,r))return"unreadable"}}return{matchers:r,complete:!1}}function g(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Se(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function kr(e){let t=e.trim().replace(/\s+/g," "),n=t.endsWith(" *")&&t.length>2,r=(n?t.slice(0,-2):t).split("*").map(Se).join("[\\s\\S]*");return new RegExp(`^${r}${n?"(?: [\\s\\S]*)?":""}(?= |$)`)}var _r=512;function br(e){let t=e.replace(/['"\\]/g,"").split(/[\s;&|(){}<>`$]+/).filter(Boolean);return[t,t.map(oe)]}function se(e,t){if(e.test(t)||e.test(t.trim().replace(/\s+/g," ")))return!0;for(let n of br(t)){if(n.length>_r)return!0;for(let r=0;r<n.length;r++)if(e.test(n.slice(r).join(" ")))return!0}return!1}function P(e){let t=kr(e);return n=>se(t,n)}function yr(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(`^${Se(r)}${n?"(?: [\\s\\S]*)?":""}$`);return i=>o.test(i)}var wr={"claude-code":er,cursor:tr,"gemini-cli":sr,opencode:ur,antigravity:ar,codex:hr},Sr=new Set(["codex"]),ct=/(?:^|[\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 xr(e,t,n){let r=wr[e];return r?r(t??process.cwd(),n):{matchers:[],complete:!1}}function Ar(e,t,n){return e==="unreadable"||ct.test(t.replace(/['"\\]/g,""))||e.matchers.some(r=>r(t))?!1:e.complete||ot(t,!Sr.has(n))}var ft=new Set(["default","acceptEdits","dontAsk"]);function dt(e,t){return t.host!=="claude-code"||t.permissionMode==="bypassPermissions"?!0:e!=="unreadable"&&e.allowsEverything===!0&&ft.has(t.permissionMode??"")}function $r(e,t){let n="pathEnv"in e?e.pathEnv:process.env.PATH,r;return o=>e.host!=="claude-code"?N(o,e.cwd,n):(r??=Ue(t.configDir),!N(o,e.cwd,n)&&!r.paths.some(i=>N(o,e.cwd,i))?!1:o.includes("/")||!ze(o,r))}var Tr=/^[^\s;&|<>()$`\\{}*?[\]~#!]+(?: [^\s;&|<>()$`\\{}*?[\]~#!]+)*$/;function Cr(e,t,n){return n.host!=="claude-code"||e==="unreadable"||dt(e,n)||!ft.has(n.permissionMode??"")||!Tr.test(t)||ct.test(t.replace(/['"]/g,""))||(e.guards??[]).some(r=>r(t))?null:(e.trustedAllow??[]).find(r=>r.matches(t))?.rule??null}function pt(e,t,n,r){if(!n||/["\\$`;&|<>(){}]|'\\''/.test(n))return null;let o=t.claudeDirs??ie(),i=xr(t.host,t.cwd,o),s=Cr(i,e,t),l=s||Ar(i,e,t.host)?Jn(e,n,$r(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}:dt(i,t)?{command:l}:null}function O(e,t,n,r){return pt(e,t,n,r)?.command??null}function H(e,t,n="unknown",r=x(t),o=y){return e?O(e,{host:t,sessionId:n},A()?null:r,o):null}function k(e,t){let n=e[t];return typeof n=="string"&&n?n:null}function q(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Er(e){return k(e,"prompt_id")||k(e,"scratchpad_dir")?!0:q(e.effort)}function Or(e){return k(e,"tool_use_id")?.startsWith("toolu_")===!0||/^claude/i.test(k(e,"model")??"")}var vr=new Set(["BeforeTool","AfterTool","BeforeAgent","AfterAgent","BeforeModel","AfterModel","BeforeToolSelection"]),Rr=new Set(["preToolUse","postToolUse","beforeShellExecution","afterShellExecution","beforeSubmitPrompt","sessionStart","sessionEnd","stop"]),Pr=new Set(["pre_tool","post_tool"]),Ir=new Set(["before_tool_call","after_tool_call"]),Nr=new Set(["runTerminalCommand","run_in_terminal"]),Hr=[["codex",e=>k(e,"turn_id")!==null],["claude-code",Er],["cursor",e=>k(e,"cursor_version")!==null||k(e,"generation_id")!==null||k(e,"conversation_id")!==null||Array.isArray(e.workspace_roots)||Rr.has(k(e,"hook_event_name")??"")],["gemini-cli",e=>vr.has(k(e,"hook_event_name")??"")],["qwen-code",e=>e.hook_event_name==="PreToolUse"&&e.tool_name==="run_shell_command"],["vibe",e=>Pr.has(k(e,"hook_event_name")??"")],["antigravity",e=>q(e.toolCall)],["copilot",e=>k(e,"toolName")!==null&&"toolArgs"in e||Nr.has(k(e,"tool_name")??"")],["grok",e=>e.toolName==="run_terminal_command"||e.tool_name==="run_terminal_command"||q(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&&!Ir.has(k(e,"event"))]],Lr=new Set(["codex","antigravity"]);function Dr(e){return q(e)?Hr.filter(([,t])=>t(e)).map(([t])=>t):[]}function mt(e,t){if(!q(e))return null;let n=Dr(e);return n.length>1?null:n.length===1?n[0]:Or(e)&&Lr.has(t)?"claude-code":t==="codex"?null:t}var xe=JSON.stringify({permission:"allow"});function gt(e,t=x("cursor"),n=y){if(e.tool_name!=="Shell")return xe;let r=e.tool_input??{},o=r.command;if(typeof o!="string"||!o)return xe;let i=typeof r.working_directory=="string"?r.working_directory:void 0,s=O(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}}):xe}var le="{}";function ht(e,t=x("gemini-cli"),n=y){if(e.hook_event_name!=="BeforeTool"||e.tool_name!=="run_shell_command")return le;let r=e.tool_input??{};if(r.is_background)return le;let o=r.command;if(typeof o!="string"||!o)return le;let i=typeof e.cwd=="string"?e.cwd:void 0,s=O(o,{host:"gemini-cli",sessionId:e.session_id??"unknown",cwd:i},A()?null:t,n);return s?JSON.stringify({hookSpecificOutput:{tool_input:{command:s}}}):le}var T="{}",jr=new Set(["runTerminalCommand","run_in_terminal","Bash","bash"]),Fr=["run_in_background","is_background","isBackground"];function ue(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Mr(e){let t=e.session_id??e.sessionId;return typeof t=="string"&&t?t:"unknown"}function Ur(e,t){let n=e.cwd??t.cwd??t.workdir??t.working_directory;return typeof n=="string"&&n?n:void 0}function ae(e,t,n,r,o){if(!ue(t)||Fr.some(s=>t[s]===!0))return null;let i=t.command;return typeof i!="string"||!i?null:O(i,{host:e,sessionId:Mr(n),cwd:Ur(n,t)},A()?null:r,o)}function D(e,t){return JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",updatedInput:{...e,command:t}}})}function zr(e){if(ue(e))return e;if(typeof e!="string")return null;try{let t=JSON.parse(e);return ue(t)?t:null}catch{return null}}function Jr(e,t,n){if(typeof e.tool_name=="string"){if(!jr.has(e.tool_name))return T;let i=e.tool_input,s=ae("copilot",i,e,t,n);return s?D(i,s):T}if(e.toolName!=="bash")return T;let r=zr(e.toolArgs),o=ae("copilot",r,e,t,n);return o?JSON.stringify({modifiedArgs:{...r,command:o}}):T}function L(e,t,n){return(r,o,i)=>{if(r.tool_name!==t)return T;let s=r.tool_input,l=ae(e,s,r,o,i);return l?n(s,l):T}}var Br=new Set(["run_terminal_command","Bash","bash"]);function Wr(e,t,n){let r=e.toolName??e.tool_name;if(typeof r!="string"||!Br.has(r))return T;let o=e.toolInput??e.tool_input,i=ae("grok",o,e,t,n);return i?D(o,i):T}var Gr={copilot:Jr,droid:L("droid","Execute",D),trae:L("trae","RunCommand",D),"qwen-code":L("qwen-code","run_shell_command",D),crush:L("crush","bash",(e,t)=>JSON.stringify({updated_input:{command:t}})),junie:L("junie","Bash",(e,t)=>JSON.stringify({updatedInput:{...e,command:t}})),zcode:L("zcode","Bash",D),grok:Wr};function kt(e,t,n=x(e),r=y){return ue(t)?Gr[e](t,n,r):T}function j(e){return A()?null:x(e)}function Zr(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"?"":it(t,e,j(e),r,n.claudeDirs??ie(),n.pathEnv??process.env.PATH,n.launchArgs??we)??"";case"cursor":return gt(t,j(e),r);case"gemini-cli":return ht(t,j(e),r);case"vibe":return Ae(t,(o,i)=>H(o,"vibe",i,j(e),r));case"antigravity":return $e(t,(o,i)=>H(o,"antigravity",i,j(e),r));default:return kt(e,t,j(e),r)}}function K(e,t,n={}){let r=mt(e,t);return r?Zr(r,e,n):n.fallback??""}var Vr=new Set(["bash","file_system.bash"]),ce=JSON.stringify({decision:"allow"});function Ae(e,t=(n,r)=>H(n,"vibe",r)){if(!v(e)||e.hook_event_name!=="pre_tool"||typeof e.tool_name!="string"||!Vr.has(e.tool_name))return"";let n=e.tool_input;if(!v(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 $e(e,t=(n,r)=>H(n,"antigravity",r)){if(!v(e)||!v(e.toolCall)||e.toolCall.name!=="run_command")return ce;let n=e.toolCall.args;if(!v(n)||typeof n.CommandLine!="string"||!n.CommandLine)return ce;let r=t(n.CommandLine,typeof e.conversationId=="string"?e.conversationId:"unknown");return r?JSON.stringify({decision:"allow",overwrite:{CommandLine:r}}):ce}var _t={vibe:{build:e=>Ae(e),fallback:""},antigravity:{build:e=>$e(e),fallback:ce}};function bt(e){return _t[e??""]?.fallback??""}function qr(e,t){let n=_t[e??""];if(!n)return"";let r;try{r=JSON.parse(t.replace(/^/,""))}catch{return n.fallback}return v(r)?K(r,e,{fallback:n.fallback}):n.build(r)}async function yt(e){process.stdout.write(qr(e,await F()))}yt(process.argv[2]).catch(e=>{process.stderr.write(`tkr-agent-hook: ${e.message}
|
|
18
|
-
`),process.stdout.write(
|
|
18
|
+
`}else if(o==="/"&&e[r+1]==="*"){if(r=e.indexOf("*/",r+2),r===-1)return"";r+=1}else t+=o}return t.replace(/,(\s*[}\]])/g,"$1")}function ee(e){let t=[],n=wr(e);for(;;){t.push(n);let r=wt(n);if(r===n)return t;n=r}}function Gr(){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 te(e,t,n,r){let o=[];for(let i of e){let s=Wr(i,t);if(s!=="missing"&&(s==="unreadable"||!g(s)||!n(s,o)))return"unreadable"}return{matchers:o,complete:r}}function Q(e){return e===void 0?[]:Array.isArray(e)?e.filter(t=>typeof t=="string"):null}function pe(){return{projectDir:process.env.CLAUDE_PROJECT_DIR,configDir:process.env.CLAUDE_CONFIG_DIR}}function Zr(e,t){let n=w=>[p(w,"settings.json"),p(w,"settings.local.json")],r=w=>n(p(w,".claude")),o=p(I(),".claude"),i=t.configDir||o,s=[[Gr(),"managed"],[[p(i,"settings.json")],"loaded"],[[p(i,"settings.local.json")],"loadedLocal"],[t.configDir?n(o):[],"extra"],[t.projectDir?r(t.projectDir):[],"project"],[ee(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",_=(w,be)=>{let E=w.permissions;if(d==="managed"&&(w.allowManagedPermissionRulesOnly===!0||g(E)&&E.allowManagedPermissionRulesOnly===!0)&&(c=!0),E===void 0)return!0;if(!g(E))return!1;for(let Me of["deny","ask","allow"]){let Ue=Q(E[Me]);if(!Ue)return!1;for(let ze of Ue){let L=/^\s*Bash\s*(?:\(([\s\S]*)\))?\s*$/.exec(ze);if(L)if(Me!=="allow")be.push(H((L[1]??"*").replace(/:\*$/," *")));else if(L[1]===void 0||L[1].trim()==="*")a[d]=!0;else{l.push(H(L[1].replace(/:\*$/," *")));let Je=mo(L[1]);Je&&u[d].push({rule:ze.trim(),matches:Je})}}}return!0},m=[];for(let[w,be]of s){d=be;let E=te(w,!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 Vr(e){let t=[p(I(),".cursor","cli-config.json"),...ee(e).map(n=>p(n,".cursor","cli.json"))];return te(t,!0,(n,r)=>{let o=n.permissions;if(o===void 0)return!0;if(!g(o))return!1;let i=Q(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(H(a===-1?`${u} *`:`${u.slice(0,a)} ${u.slice(a+1)}`))}return!0},!1)}function Kr(){return process.platform==="darwin"?"/Library/Application Support/GeminiCli":process.platform==="win32"?"C:\\ProgramData\\gemini-cli":"/etc/gemini-cli"}var Ot=/^\s*(?:run_shell_command|ShellTool)\s*(?:\(([\s\S]*)\))?\s*$/;function qr(e,t){let n=e.tools;if(n!==void 0&&!g(n))return!1;let r=[Q(e.excludeTools),Q(g(n)?n.exclude:void 0)];for(let o of r){if(!o)return!1;for(let i of o){let s=Ot.exec(i);s&&t.push(H(s[1]===void 0?"*":`${s[1]}*`))}}return!0}function _t(e){try{return JSON.parse(e)}catch{return null}}function Yr(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]??_t(`"${r[1]}"`);if(o===null)return null;n.push(o)}return n}if(t.startsWith('"')){let n=/^"((?:\\.|[^"\\])*)"/.exec(t);return n?_t(`"${n[1]}"`):null}if(t.startsWith("'")){let n=/^'([^']*)'/.exec(t);return n?n[1]:null}return t.replace(/\s*#.*$/,"")}function Xr(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=Yr(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==="*"||Ot.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(H(`${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}))||me(a,c))}}return!0}function bt(e){try{return fe(e).filter(t=>t.endsWith(".toml")).map(t=>p(e,t))}catch{return[]}}function Qr(e){let t=Kr(),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"),...ee(e).map(o=>p(o,".gemini","settings.json"))].filter(o=>!!o),r=te(n,!0,qr,!1);if(r==="unreadable")return r;for(let o of[...bt(p(I(),".gemini","policies")),...bt(p(t,"policies"))]){let i;try{i=X(o,"utf8")}catch{return"unreadable"}if(!Xr(i,r.matchers))return"unreadable"}return r}function Ne(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(H(o.replace(/\?/g,"*")))}}return!0}function yt(e,t){if(e.permissions!==void 0||!Ne(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||!Ne(o.permission,t)))return!1}}return!0}function eo(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(X(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=ee(e),r=[t,...n.map(l=>p(l,".opencode"))];if(eo(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=te(i,!0,yt,!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(Et(l))}catch{return"unreadable"}if(!(l===process.env.OPENCODE_PERMISSION?Ne(u,s.matchers):g(u)&&yt(u,s.matchers)))return"unreadable"}return s}function no(){return te([p(I(),".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=Q(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(H(l==="*"?"*":`${l} *`));continue}let u;try{u=new RegExp(l.slice(6))}catch{return!1}t.push(a=>me(u,a))}}return!0},!1)}function ro(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 Rt(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=Rt(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 Nt(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=>me(n,r)}function oo(e,t){let n=ro(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]=Rt(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=Nt(i.pattern);if(!l)return!1;s!=="allow"&&t.push(l)}return!0}function io(e){if(!M(e))return[];try{return fe(e).filter(t=>t.endsWith(".rules")).sort().map(t=>p(e,t))}catch{return"unreadable"}}function so(){return process.platform==="win32"?p(process.env.ProgramData||"C:\\ProgramData","OpenAI","Codex","requirements.toml"):"/etc/codex/requirements.toml"}function uo(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 lo(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(uo);if(i.some(l=>l===void 0))return!1;let s=Nt(i);if(!s)return!1;t.push(s)}return!0}function ao(e){let t=process.env.CODEX_HOME||p(I(),".codex"),n=[p(t,"rules"),...ee(e).map(i=>p(i,".codex","rules"))],r=[],o=null;try{o=X(so(),"utf8")}catch(i){let s=i.code;if(s!=="ENOENT"&&s!=="ENOTDIR")return"unreadable"}if(o!==null&&!lo(o,r))return"unreadable";for(let i of[...new Set(n)]){let s=io(i);if(s==="unreadable")return"unreadable";for(let l of s){let u;try{u=X(l,"utf8")}catch{return"unreadable"}if(!oo(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 co(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 fo=512;function po(e){let t=e.replace(/['"\\]/g,"").split(/[\s;&|(){}<>`$]+/).filter(Boolean);return[t,t.map(de)]}function me(e,t){if(e.test(t)||e.test(t.trim().replace(/\s+/g," ")))return!0;for(let n of po(t)){if(n.length>fo)return!0;for(let r=0;r<n.length;r++)if(e.test(n.slice(r).join(" ")))return!0}return!1}function H(e){let t=co(e);return n=>me(t,n)}function mo(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 go={"claude-code":Zr,cursor:Vr,"gemini-cli":Qr,opencode:to,antigravity:no,codex:ao},ho=new Set(["codex"]),Pt=/(?:^|[\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 ko(e,t,n){let r=go[e];return r?r(t??process.cwd(),n):{matchers:[],complete:!1}}function _o(e,t,n){return e==="unreadable"||Pt.test(t.replace(/['"\\]/g,""))||e.matchers.some(r=>r(t))?!1:e.complete||Ct(t,!ho.has(n))}var It=new Set(["default","acceptEdits","dontAsk"]);function Ht(e,t){return t.host!=="claude-code"||t.permissionMode==="bypassPermissions"?!0:e!=="unreadable"&&e.allowsEverything===!0&&It.has(t.permissionMode??"")}function bo(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??=ct(t.configDir),!F(o,e.cwd,n)&&!r.paths.some(i=>F(o,e.cwd,i))?!1:o.includes("/")||!ft(o,r))}var yo=/^[^\s;&|<>()$`\\{}*?[\]~#!]+(?: [^\s;&|<>()$`\\{}*?[\]~#!]+)*$/;function wo(e,t,n){return n.host!=="claude-code"||e==="unreadable"||Ht(e,n)||!It.has(n.permissionMode??"")||!yo.test(t)||Pt.test(t.replace(/['"]/g,""))||(e.guards??[]).some(r=>r(t))?null:(e.trustedAllow??[]).find(r=>r.matches(t))?.rule??null}var So=/^(?:\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 xo(e,t){return t.host==="claude-code"&&t.permissionMode==="default"&&So.test(e.trim())}function Lt(e,t,n,r){if(!n||/["\\$`;&|<>(){}]|'\\''/.test(n))return null;let o=t.claudeDirs??pe(),i=ko(t.host,t.cwd,o),s=wo(i,e,t),l=s||_o(i,e,t.host)?Lr(e,n,bo(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}:Ht(i,t)?{command:l}:i!=="unreadable"&&xo(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=Lt(e,t,n,r);return o&&!o.ask?o.command:null}function U(e,t,n="unknown",r=$(t),o=y){return e?R(e,{host:t,sessionId:n},A()?null:r,o):null}function k(e,t){let n=e[t];return typeof n=="string"&&n?n:null}function ne(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function $o(e){return k(e,"prompt_id")||k(e,"scratchpad_dir")?!0:ne(e.effort)}function Ao(e){return k(e,"tool_use_id")?.startsWith("toolu_")===!0||/^claude/i.test(k(e,"model")??"")}var To=new Set(["BeforeTool","AfterTool","BeforeAgent","AfterAgent","BeforeModel","AfterModel","BeforeToolSelection"]),Co=new Set(["preToolUse","postToolUse","beforeShellExecution","afterShellExecution","beforeSubmitPrompt","sessionStart","sessionEnd","stop"]),vo=new Set(["pre_tool","post_tool"]),Eo=new Set(["before_tool_call","after_tool_call"]),Oo=new Set(["runTerminalCommand","run_in_terminal"]),Ro=[["codex",e=>k(e,"turn_id")!==null],["claude-code",$o],["cursor",e=>k(e,"cursor_version")!==null||k(e,"generation_id")!==null||k(e,"conversation_id")!==null||Array.isArray(e.workspace_roots)||Co.has(k(e,"hook_event_name")??"")],["gemini-cli",e=>To.has(k(e,"hook_event_name")??"")],["qwen-code",e=>e.hook_event_name==="PreToolUse"&&e.tool_name==="run_shell_command"],["vibe",e=>vo.has(k(e,"hook_event_name")??"")],["antigravity",e=>ne(e.toolCall)],["copilot",e=>k(e,"toolName")!==null&&"toolArgs"in e||Oo.has(k(e,"tool_name")??"")],["grok",e=>e.toolName==="run_terminal_command"||e.tool_name==="run_terminal_command"||ne(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&&!Eo.has(k(e,"event"))]],No=new Set(["codex","antigravity"]);function Po(e){return ne(e)?Ro.filter(([,t])=>t(e)).map(([t])=>t):[]}function jt(e,t){if(!ne(e))return null;let n=Po(e);return n.length>1?null:n.length===1?n[0]:Ao(e)&&No.has(t)?"claude-code":t==="codex"?null:t}var je=JSON.stringify({permission:"allow"});function Dt(e,t=$("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 ge="{}";function Ft(e,t=$("gemini-cli"),n=y){if(e.hook_event_name!=="BeforeTool"||e.tool_name!=="run_shell_command")return ge;let r=e.tool_input??{};if(r.is_background)return ge;let o=r.command;if(typeof o!="string"||!o)return ge;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}}}):ge}var v="{}",Io=new Set(["runTerminalCommand","run_in_terminal","Bash","bash"]),Ho=["run_in_background","is_background","isBackground"];function he(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function Lo(e){let t=e.session_id??e.sessionId;return typeof t=="string"&&t?t:"unknown"}function jo(e,t){let n=e.cwd??t.cwd??t.workdir??t.working_directory;return typeof n=="string"&&n?n:void 0}function ke(e,t,n,r,o){if(!he(t)||Ho.some(s=>t[s]===!0))return null;let i=t.command;return typeof i!="string"||!i?null:R(i,{host:e,sessionId:Lo(n),cwd:jo(n,t)},A()?null:r,o)}function J(e,t){return JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",updatedInput:{...e,command:t}}})}function Do(e){if(he(e))return e;if(typeof e!="string")return null;try{let t=JSON.parse(e);return he(t)?t:null}catch{return null}}function Fo(e,t,n){if(typeof e.tool_name=="string"){if(!Io.has(e.tool_name))return v;let i=e.tool_input,s=ke("copilot",i,e,t,n);return s?J(i,s):v}if(e.toolName!=="bash")return v;let r=Do(e.toolArgs),o=ke("copilot",r,e,t,n);return o?JSON.stringify({modifiedArgs:{...r,command:o}}):v}function z(e,t,n){return(r,o,i)=>{if(r.tool_name!==t)return v;let s=r.tool_input,l=ke(e,s,r,o,i);return l?n(s,l):v}}var Mo=new Set(["run_terminal_command","Bash","bash"]);function Uo(e,t,n){let r=e.toolName??e.tool_name;if(typeof r!="string"||!Mo.has(r))return v;let o=e.toolInput??e.tool_input,i=ke("grok",o,e,t,n);return i?J(o,i):v}var zo={copilot:Fo,droid:z("droid","Execute",J),trae:z("trae","RunCommand",J),"qwen-code":z("qwen-code","run_shell_command",J),crush:z("crush","bash",(e,t)=>JSON.stringify({updated_input:{command:t}})),junie:z("junie","Bash",(e,t)=>JSON.stringify({updatedInput:{...e,command:t}})),zcode:z("zcode","Bash",J),grok:Uo};function Mt(e,t,n=$(e),r=y){return he(t)?zo[e](t,n,r):v}function B(e){return A()?null:$(e)}function Jo(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"?"":vt(t,e,B(e),r,n.claudeDirs??pe(),n.pathEnv??process.env.PATH,n.launchArgs??He)??"";case"cursor":return Dt(t,B(e),r);case"gemini-cli":return Ft(t,B(e),r);case"vibe":return De(t,(o,i)=>U(o,"vibe",i,B(e),r));case"antigravity":return Fe(t,(o,i)=>U(o,"antigravity",i,B(e),r));default:return Mt(e,t,B(e),r)}}function re(e,t,n={}){let r=jt(e,t);return r?Jo(r,e,n):n.fallback??""}var Bo=new Set(["bash","file_system.bash"]),_e=JSON.stringify({decision:"allow"});function De(e,t=(n,r)=>U(n,"vibe",r)){if(!P(e)||e.hook_event_name!=="pre_tool"||typeof e.tool_name!="string"||!Bo.has(e.tool_name))return"";let n=e.tool_input;if(!P(n)||typeof n.command!="string"||!n.command)return"";let r=t(n.command,typeof e.session_id=="string"?e.session_id:"unknown");return r?JSON.stringify({hook_specific_output:{tool_input:{...n,command:r}}}):""}function Fe(e,t=(n,r)=>U(n,"antigravity",r)){if(!P(e)||!P(e.toolCall)||e.toolCall.name!=="run_command")return _e;let n=e.toolCall.args;if(!P(n)||typeof n.CommandLine!="string"||!n.CommandLine)return _e;let r=t(n.CommandLine,typeof e.conversationId=="string"?e.conversationId:"unknown");return r?JSON.stringify({decision:"allow",overwrite:{CommandLine:r}}):_e}var Ut={vibe:{build:e=>De(e),fallback:""},antigravity:{build:e=>Fe(e),fallback:_e}};function zt(e){return Ut[e??""]?.fallback??""}function Wo(e,t){let n=Ut[e??""];if(!n)return"";let r;try{r=JSON.parse(t.replace(/^/,""))}catch{return n.fallback}return P(r)?re(r,e,{fallback:n.fallback}):n.build(r)}async function Jt(e){process.stdout.write(Wo(e,await W()))}Jt(process.argv[2]).catch(e=>{process.stderr.write(`tkr-agent-hook: ${e.message}
|
|
19
|
+
`),process.stdout.write(zt(process.argv[2])),process.exit(0)});
|
|
19
20
|
/*! Bundled license information:
|
|
20
21
|
|
|
21
22
|
smol-toml/dist/error.js:
|