@tokmizer/plugin 0.5.4 → 0.5.6

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,6 +1,6 @@
1
1
  {
2
2
  "name": "tokmizer",
3
- "version": "0.5.4",
3
+ "version": "0.5.6",
4
4
  "description": "Tokmizer reduces token consumption for AI agents.",
5
5
  "author": {
6
6
  "name": "Impulse Création",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tokmizer",
3
- "version": "0.5.4",
3
+ "version": "0.5.6",
4
4
  "description": "Tokmizer reduces token consumption for OpenAI Codex.",
5
5
  "author": "Tokmizer",
6
6
  "homepage": "https://tokmizer.com",
@@ -12,7 +12,8 @@
12
12
  "shell",
13
13
  "bash",
14
14
  "exec",
15
- "run_shell_command"
15
+ "run_shell_command",
16
+ "execute_shell_command"
16
17
  ]
17
18
  },
18
19
  "command": "tkr-codex-hook"
@@ -4,10 +4,10 @@ var rr=Object.defineProperty;var nr=(t,e)=>{for(var r in e)rr(t,r,{get:e[r],enum
4
4
  `),ot=!0),H=new Map,H;let t=new Map,e,r;try{e=(await import("smol-toml")).parse,r=(await hn(at)).filter(n=>n.endsWith(".toml"))}catch{return H=t,H}for(let n of r){let s=await gn(ct(at,n),"utf8"),a=e(s).filters;if(a)for(let[o,c]of Object.entries(a)){let l=De.parse({slug:o,...c});t.set(o,{...l,matchRegex:new RegExp(l.match_command)})}}return H=t,H}var ke=new Map,bn=256,lt=new WeakMap;function kn(t){if(!t)return"*";let e=lt.get(t);return e===void 0&&(e=[...t].join(","),lt.set(t,e)),e}function dt(t,e,r){let n=`${t}::${kn(r)}`,s=ke.get(n);if(s!==void 0)return s;let i=null;for(let a of e)r&&!r.has(a.slug)||a.matchRegex.test(t)&&(!i||a.priority>i.priority)&&(i=a);if(ke.size>=bn){let a=ke.keys().next().value;a&&ke.delete(a)}return ke.set(n,i),i}var En=/\x1b\[[0-9;?]*[ -/]*[@-~]/g,wn=/\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g;function ft(t){return t.replace(En,"").replace(wn,"")}function pt(t,e){return e.length===0?t:t.filter(r=>!e.some(n=>n.test(r)))}function mt(t,e){return t.map(r=>r.length<=e?r:`${r.slice(0,e)}\u2026`)}function ht(t,e){if(t.length<=e)return t;let r=t.length-e;return[...t.slice(0,e),`\u2026 (${r} more lines omitted)`]}var Tn=/^(\s*)(?:export\s+)?(?:async\s+)?(?:function|class|interface|type|const|let|var|def|fn|impl|trait|struct|enum)\s+[\w$]+/,Sn=/\{\s*$/;function Oe(t){let e=[],r=0;for(;r<t.length;){let n=t[r];if(Tn.test(n)&&Sn.test(n)){let s=0,i=r,a=!1;for(;i<t.length&&i-r<200;){for(let o of t[i])o==="{"||o==="("||o==="["?s+=1:(o==="}"||o===")"||o==="]")&&(s-=1);if(i+=1,s<=0){a=!0;break}}if(a){e.push(`${n.replace(/\{\s*$/,"")}{ \u2026 }`),r=i;continue}}e.push(n),r+=1}return e}var An=/\b(?:function|class|interface|import\s+|export\s+|def\s+|fn\s+|impl\s+|package\s+|namespace\s+|using\s+|#include|=>\s*\{|=\s*function)/;function gt(t){let e=t.slice(0,4096);return!(!An.test(e)||e.split(`
5
5
  `).length<6)}var Rn=/\b(?:DEBUG|TRACE|INFO|VERBOSE)\b/;function yt(t){return t.filter(e=>!Rn.test(e))}function _t(t){if(t.length===0)return t;let e=[],r=1,n=t[0];for(let s=1;s<t.length;s++){if(t[s]===n){r+=1;continue}e.push(r>1?`${n} \xD7${r}`:n),n=t[s],r=1}return e.push(r>1?`${n} \xD7${r}`:n),e}function vt(t){let e=[],r=0;for(let n of t){if(n.trim()===""){r+=1;continue}r>0&&e.push(""),r=0,e.push(n)}return e}var xt=new Map;function W(t,e){xt.set(t,e)}function bt(t){return xt.get(t)}var Cn=/^[dbclps\-][rwxsStT\-]{9}[@.+]?(?:\s|$)/;function Dn(t){if(t<1024)return String(t);let e=["K","M","G","T"],r=t/1024,n=0;for(;r>=1024&&n<e.length-1;)r/=1024,n+=1;return`${r.toFixed(1)}${e[n]}`}function On(t){if(!Cn.test(t))return null;let e=t.split(/\s+/);if(e.length<9)return null;let r=Number(e[4]);if(!Number.isFinite(r))return null;let n=e.slice(8).join(" ").trim();if(n===""||n==="."||n==="..")return null;let s=e[0].charCodeAt(0)===100;return{name:n,size:r,isDir:s}}var In=16;function Nn(t){if(t.length<3)return null;let e=new Map;for(let s of t){let i=s.name.lastIndexOf(".");if(i<=0)continue;let a=s.name.slice(i);e.set(a,(e.get(a)??0)+1)}let r=null,n=0;for(let[s,i]of e)i>n&&(n=i,r=s);return r&&n>=Math.ceil(t.length/2)?`${n} ${r}`:null}function Pn(t){let e=[],r=[],n=!1;for(let k of t){if(/^total\s+\d+/.test(k))continue;let O=On(k);O&&(n=!0,(O.isDir?e:r).push(O))}if(!n)return t;let s=(k,O)=>k.name.localeCompare(O.name);e.sort(s),r.sort((k,O)=>O.size-k.size||s(k,O));let a=e.slice(0,3),o=r.slice(0,Math.max(0,In-a.length)),c=[...a,...o],l=e.length-a.length+(r.length-o.length),y=Math.min(40,Math.max(0,...c.map(k=>k.isDir?k.name.length+1:k.name.length))),b=[];for(let k of c){let O=k.isDir?`${k.name}/`:k.name,Ge=k.isDir?"":Dn(k.size);b.push(Ge?`${O.padEnd(y)} ${Ge}`:O)}l>0&&b.push(`\u2026 ${l} more`);let Z=r.length===1?"file":"files",M=e.length===1?"dir":"dirs",We=Nn(r),tr=`${r.length} ${Z}, ${e.length} ${M}`+(We?` (${We})`:"");return b.push(tr),b}W("smart-ls",Pn);W("smart-read",t=>Oe(t));var $n=/^[\s=]+$/,Mn=/^\s*=+\s+(.*?)\s+=+\s*$/;W("strip-banners",t=>{let e=[];for(let r of t){if($n.test(r))continue;let n=Mn.exec(r);e.push(n?n[1]:r)}return e});function jn(t){let e=[],r=0,n=0;for(;n<t.length;){let s=t[n].replace(/\s+$/,"");if(s===""){r+=1,n+=1,r<=1&&e.push("");continue}r=0;let i=1;for(;n+i<t.length&&t[n+i].replace(/\s+$/,"")===s;)i+=1;if(i>=3)e.push(s),e.push(` \u2026 (repeated ${i}x)`);else for(let a=0;a<i;a++)e.push(s);n+=i}for(;e.length>0&&e[e.length-1]==="";)e.pop();return e}W("squeeze-output",jn);var kt=new WeakMap;function Ln(t){let e=kt.get(t);if(e)return e;let r=t.strip_lines_matching.map(s=>new RegExp(s)),n={def:t,stripRegexes:r};return kt.set(t,n),n}function Et(t,e,r={}){let n=Ln(e),s=t;e.strip_ansi&&(s=ft(s));let i=s.split(`
6
6
  `);n.stripRegexes.length&&(i=pt(i,n.stripRegexes));let a=r.verbosity??"normal";if(a!=="normal"&&(i=_t(i),i=vt(i)),a==="minimal"&&(i=yt(i)),(r.smartCode||r.smartCode===void 0&&a!=="normal"&&gt(s))&&(i=Oe(i)),e.transform){let c=bt(e.transform);c&&(i=c(i))}e.truncate_lines_at&&(i=mt(i,e.truncate_lines_at)),e.max_lines&&(i=ht(i,e.max_lines));let o=i.join(`
7
- `);return o.trim().length===0&&e.on_empty&&(o=e.on_empty),o}var Fn=[/\bERROR\b/,/\bFAIL\b/,/\bFAILED\b/,/\bFATAL\b/,/^Traceback /m,/^Error: /m,/^\s+at .*\(.*:\d+:\d+\)/m,/panic:/,/SyntaxError:/,/TypeError:/,/ReferenceError:/,/thread '.*' panicked/];function wt(t){if(!t)return!1;let e=t.length<=262144*2?[t]:[t.slice(0,262144),t.slice(-262144)];for(let r of Fn)for(let n of e)if(r.test(n))return!0;return!1}var Tt=null;function ze(t){Tt=t}async function zn(t,e){let r=await ut();return dt(t,r.values(),e)}async function St(t,e,r,n={}){let s=Buffer.byteLength(e,"utf8"),{exitCode:i,...a}=n;if(i!=null&&i!==0||wt(e))return{output:e,filterId:null,rawBytes:s,filteredBytes:s,debugBypass:!0};let c=await(Tt??zn)(t,r);if(!c)return{output:e,filterId:null,rawBytes:s,filteredBytes:s,debugBypass:!1};let l=Et(e,c,a);return{output:l,filterId:c.slug,rawBytes:s,filteredBytes:Buffer.byteLength(l,"utf8"),debugBypass:!1}}var Zn=m.enum(["normal","compact","minimal"]),Bn=m.enum(["off","light","balanced","max"]),Ze=m.object({enabled:m.boolean().default(!0),telemetryOptIn:m.boolean().default(!0),outputVerbosity:Zn.default("compact"),reducer:Bn.default("off"),filters:m.object({enableAll:m.boolean().default(!0),disabled:m.array(m.string().max(64)).max(100).default([])}).default({enableAll:!0,disabled:[]})}),Vn=["git","grep","find","ls","ps","cat","head","tail","df","du","tree","wc","read-tool","grep-tool","glob-tool","npm","docker","kubectl","curl","cargo","go-test","gh","aws","dotnet","prisma","tsc","next","jest","vitest","pytest","pip","rspec"];function Ie(t,e=!1){return e||!t||t.length===0?new Set(Vn):new Set(t)}async function At(){let t=[];for await(let e of process.stdin)t.push(e);return Buffer.concat(t).toString("utf8")}import{join as Kn}from"node:path";import{mkdir as _a,readFile as Hn,writeFile as va,unlink as xa,rename as ba}from"node:fs/promises";import Un from"node:os";import{join as Rt}from"node:path";function A(){return process.env.TOKMIZER_HOME??Rt(Un.homedir(),".tokmizer")}function Be(){return Rt(A(),"install-id")}var Wn="state.json",Ea={lastSettingsRevision:0,timeZone:Ct(),bonusActive:!1};function Ct(){try{let t=Intl.DateTimeFormat().resolvedOptions().timeZone;return t&&t.length>0?t:"Etc/UTC"}catch{return"Etc/UTC"}}function Gn(t){return t?.dir??A()}async function Ve(t){let e=Gn(t);try{let r=await Hn(Kn(e,Wn),"utf8"),n=JSON.parse(r);return{...n,lastSettingsRevision:n.lastSettingsRevision??0,timeZone:n.timeZone??Ct(),bonusActive:n.bonusActive??!1,...n.bonusResetAt!==void 0?{bonusResetAt:n.bonusResetAt}:{}}}catch{return null}}function qn(){let t=Number(process.env.TOKMIZER_OFFLINE_GRACE_MS);return Number.isFinite(t)&&t>0?t:6048e5}function Ue(t,e=Date.now()){let r=t.lastHeartbeatOkAt;if(typeof r=="number"&&e-r>qn())return!0;if(t.subEndsAt){let n=Date.parse(t.subEndsAt);if(Number.isFinite(n)&&e>n)return!0}return!1}function Dt(t,e=Date.now()){return Ue(t,e)?"free":t.plan}import{readFile as Jn,writeFile as Aa,mkdir as Ra}from"node:fs/promises";import{join as Yn}from"node:path";var Xn="settings-cache.json",Ot=Ze.parse({});async function It(){try{let t=await Jn(Yn(A(),Xn),"utf8"),e=JSON.parse(t);return Ze.parse({...Ot,...e})}catch{return Ot}}var Qn=[[/(authorization\s*:\s*)([A-Za-z][A-Za-z0-9._-]*)\s+[^\s'"]+/gi,"$1$2 [REDACTED]"],[/(authorization\s*:\s*)[A-Za-z0-9._\-+/=]{8,}/gi,"$1[REDACTED]"],[/(bearer\s+)[A-Za-z0-9._\-+/=]{8,}/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-b|--cookie)[=\s]+['"]?)[^\s'";=]+=[^\s'";]+(?:\s*;\s*[^\s'";=]+=[^\s'";]+)*/gi,"$1[REDACTED]"],[/((?:^|[\s'"])(?:Set-)?Cookie\s*:\s*)[^\s'";=]+=[^\s'";]+(?:\s*;\s*[^\s'";=]+=[^\s'";]+)*/gi,"$1[REDACTED]"],[/(--?(?:password|passwd|passphrase|apipass|pass|pwd|token|api[-_]?key|secret|bearer|cookie|jwt)(?:-[a-z0-9]+)*[=\s]+)\S+/gi,"$1[REDACTED]"],[/((?:^|\s)-b[=\s]?['"]?)[^\s'"=]+=[^\s'"]+/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-u[=\s]?|(?:--user|-a)[=\s])['"]?[^\s:/'"]*:)(\/[^/\s'"][^\s'"]*|[^\s/'"0-9][^\s'"]*|[0-9][^\s'"]*[^\s'"0-9][^\s'"]*)/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-u[=\s]?|(?:--user|-a)[=\s])['"]?[^\s:/'"]*[^\s:/'"0-9][^\s:/'"]*:)(?:\/[^/\s'"]|[^\s/'"])[^\s'"]*/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-u[=\s]?|(?:--user|-a)[=\s])['"]?:)(?:\/[^/\s'"]|[^\s/'"])[^\s'"]*/gi,"$1[REDACTED]"],[/((?:[A-Za-z0-9]+-)*(?:X-Api-Key|Private-Token|[A-Za-z0-9]+-(?:Token|Key|Auth|Secret))\s*:\s*)[^\s'"]+/gi,"$1[REDACTED]"],[/((?:^|[\s'"])(?:Set-)?Cookie\s*:\s*)[^\s'"]+/gi,"$1[REDACTED]"],[/(-i\s+)(\/[^\s]+|~\/[^\s]+|[A-Z]:\\[^\s]+)/g,"$1[REDACTED]"],[/([a-zA-Z][a-zA-Z0-9+.-]*:\/\/[^:/\s@]*:)[^\s]+(@[^@/\s]+)/g,"$1[REDACTED]$2"],[/(AWS_(?:ACCESS_KEY_ID|SECRET_ACCESS_KEY|SESSION_TOKEN)\s*=\s*)\S+/g,"$1[REDACTED]"],[/(GOOGLE_APPLICATION_CREDENTIALS\s*=\s*)\S+/g,"$1[REDACTED]"],[/(AZURE_(?:CLIENT_SECRET|TENANT_ID|CLIENT_ID)\s*=\s*)\S+/g,"$1[REDACTED]"],[/(sk-(?:proj-)?[A-Za-z0-9_-]{20,})/g,"sk-[REDACTED]"],[/\b(OPENAI_API_KEY\s*=\s*)\S+/g,"$1[REDACTED]"],[/\b(ANTHROPIC_API_KEY\s*=\s*)\S+/g,"$1[REDACTED]"],[/(sk-ant-[A-Za-z0-9_-]{20,})/g,"sk-ant-[REDACTED]"],[/\b(GH(?:_|ITHUB_)?TOKEN\s*=\s*)\S+/g,"$1[REDACTED]"],[/\b(GITLAB_TOKEN\s*=\s*)\S+/g,"$1[REDACTED]"],[/\b(SLACK_(?:BOT_)?TOKEN\s*=\s*)\S+/g,"$1[REDACTED]"],[/(xox[bpsoa]-[A-Za-z0-9-]{10,})/g,"xox[REDACTED]"],[/(xapp-[A-Za-z0-9-]{10,})/g,"[REDACTED]"],[/(sk_(?:test|live)_[A-Za-z0-9]{16,})/g,"sk_[REDACTED]"],[/(gh[a-z])_[A-Za-z0-9]{20,}/g,"$1_[REDACTED]"],[/(github_pat)_[A-Za-z0-9_]{20,}/g,"$1_[REDACTED]"],[/(gl(?:pat|rt|soat|imt|dt|ft|agent|oas|cbt|ptt))-[A-Za-z0-9_-]{16,}/g,"$1-[REDACTED]"],[/(npm_[A-Za-z0-9_-]{20,})/g,"npm_[REDACTED]"],[/(?:AKIA|ASIA|AGPA|AIDA|AROA|ANPA)[0-9A-Z]{16,}/g,"[REDACTED_AWS_KEY]"],[/AIza[A-Za-z0-9_-]{35}/g,"[REDACTED_GOOGLE_KEY]"],[/hv[sb]\.[A-Za-z0-9_-]{20,}/g,"[REDACTED_VAULT_TOKEN]"],[/dop_v1_[A-Za-z0-9]{40,}/g,"[REDACTED]"],[/dckr_pat_[A-Za-z0-9_-]{20,}/g,"[REDACTED]"],[/pypi-[A-Za-z0-9_-]{16,}/g,"[REDACTED]"],[/rk_(?:live|test)_[A-Za-z0-9]{16,}/g,"[REDACTED]"],[/whsec_[A-Za-z0-9]{16,}/g,"[REDACTED]"],[/SG\.[A-Za-z0-9_-]{20,}\.[A-Za-z0-9_-]{20,}/g,"[REDACTED]"],[/(eyJ[A-Za-z0-9_-]{6,}(?:\.[A-Za-z0-9_-]{4,}){1,2})/g,"[REDACTED_JWT]"],[/-----BEGIN [A-Z ]*PRIVATE KEY-----(?:[\s\S]*?-----END[^\n]*-----|\r?\n[A-Za-z0-9+/=][A-Za-z0-9+/=\r\n]*)?/g,"[REDACTED_PEM]"],[/\b((?:--?)?[A-Za-z0-9_]*(?:TOKEN|SECRET|PASSWORD|PASSWD|PASS|APIKEY|KEY|CRED|CREDS|CREDENTIAL|CREDENTIALS|AUTH|_PWD)[A-Za-z0-9_]*['"]?\s*=\s*)(?:"[^"]*"|'[^']*'|[^"'\s]\S*)/gi,"$1[REDACTED]"],[/\b([A-Za-z0-9_]*(?:TOKEN|SECRET|PASSWORD|PASSWD|PASS|APIKEY|KEY|CRED|CREDS|CREDENTIAL|CREDENTIALS|_PWD)[A-Za-z0-9_]*['"]?\s*:\s*)(?:"[^"]*"|'[^']*'|[^\s'",}]+)/gi,"$1[REDACTED]"],[/((?:^|[\s'"{,])['"]?(?:[A-Za-z0-9_]+_)?auth['"]?\s*:\s*)(?:"[^"]*"|'[^']*'|[^\s'",}]+)/gi,"$1[REDACTED]"],[/(\bpwd\s*[=:]\s*)(?:"[^"]*"|'[^']*'|[^/~\s][^\s;'"]*)/gi,"$1[REDACTED]"],[/([=:]\s*["']?)[A-Za-z0-9_\-+/=]{40,}/g,"$1[REDACTED]"]];function Ee(t){let e=t;for(let[r,n]of Qn)e=e.replace(r,n);return e}import{join as Pt}from"node:path";import{appendFileSync as cs,existsSync as us,mkdirSync as ls,readFileSync as Ya,renameSync as Xa,statSync as ds,unlinkSync as Qa}from"node:fs";import{createHash as $a,randomUUID as es}from"node:crypto";import{readFile as ts,writeFile as rs,mkdir as ns}from"node:fs/promises";async function Nt(){try{let r=(await ts(Be(),"utf8")).trim();if(/^[0-9a-f-]{36}$/i.test(r))return r}catch{}await ns(A(),{recursive:!0});let t=es();return await rs(Be(),t,{mode:384}),t}import{createRequire as ss}from"node:module";var is=ss(import.meta.url);function as(){for(let t of["../package.json","../../package.json"])try{let e=is(t).version;if(typeof e=="string"&&e)return e}catch{}return"0.0.0"}var os=as();var Ka=300*1e3;var fs=512*1024;function $t(){return Pt(A(),"spool")}function ps(t){return Pt($t(),`${t}.jsonl`)}function Ne(t,e){try{ls($t(),{recursive:!0,mode:448});let r=ps(t);if(us(r)&&ds(r).size>=fs)return;cs(r,JSON.stringify(e)+`
7
+ `);return o.trim().length===0&&e.on_empty&&(o=e.on_empty),o}var Fn=[/\bERROR\b/,/\bFAIL\b/,/\bFAILED\b/,/\bFATAL\b/,/^Traceback /m,/^Error: /m,/^\s+at .*\(.*:\d+:\d+\)/m,/panic:/,/SyntaxError:/,/TypeError:/,/ReferenceError:/,/thread '.*' panicked/];function wt(t){if(!t)return!1;let e=t.length<=262144*2?[t]:[t.slice(0,262144),t.slice(-262144)];for(let r of Fn)for(let n of e)if(r.test(n))return!0;return!1}var Tt=null;function ze(t){Tt=t}async function zn(t,e){let r=await ut();return dt(t,r.values(),e)}async function St(t,e,r,n={}){let s=Buffer.byteLength(e,"utf8"),{exitCode:i,...a}=n;if(i!=null&&i!==0||wt(e))return{output:e,filterId:null,rawBytes:s,filteredBytes:s,debugBypass:!0};let c=await(Tt??zn)(t,r);if(!c)return{output:e,filterId:null,rawBytes:s,filteredBytes:s,debugBypass:!1};let l=Et(e,c,a);return{output:l,filterId:c.slug,rawBytes:s,filteredBytes:Buffer.byteLength(l,"utf8"),debugBypass:!1}}var Zn=m.enum(["normal","compact","minimal"]),Bn=m.enum(["off","light","balanced","max"]),Ze=m.object({enabled:m.boolean().default(!0),telemetryOptIn:m.boolean().default(!0),outputVerbosity:Zn.default("compact"),reducer:Bn.default("off"),filters:m.object({enableAll:m.boolean().default(!0),disabled:m.array(m.string().max(64)).max(100).default([])}).default({enableAll:!0,disabled:[]})}),Vn=["git","grep","find","ls","ps","cat","head","tail","df","du","tree","wc","read-tool","grep-tool","glob-tool","npm","docker","kubectl","curl","cargo","go-test","gh","aws","dotnet","prisma","tsc","next","jest","vitest","pytest","pip","rspec"];function Ie(t,e=!1){return e||!t||t.length===0?new Set(Vn):new Set(t)}async function At(){let t=[];for await(let e of process.stdin)t.push(e);return Buffer.concat(t).toString("utf8")}import{join as Kn}from"node:path";import{mkdir as _a,readFile as Hn,writeFile as va,unlink as xa,rename as ba}from"node:fs/promises";import Un from"node:os";import{join as Rt}from"node:path";function A(){return process.env.TOKMIZER_HOME||Rt(Un.homedir(),".tokmizer")}function Be(){return Rt(A(),"install-id")}var Wn="state.json",Ea={lastSettingsRevision:0,timeZone:Ct(),bonusActive:!1};function Ct(){try{let t=Intl.DateTimeFormat().resolvedOptions().timeZone;return t&&t.length>0?t:"Etc/UTC"}catch{return"Etc/UTC"}}function Gn(t){return t?.dir??A()}async function Ve(t){let e=Gn(t);try{let r=await Hn(Kn(e,Wn),"utf8"),n=JSON.parse(r);return{...n,lastSettingsRevision:n.lastSettingsRevision??0,timeZone:n.timeZone??Ct(),bonusActive:n.bonusActive??!1,...n.bonusResetAt!==void 0?{bonusResetAt:n.bonusResetAt}:{}}}catch{return null}}function qn(){let t=Number(process.env.TOKMIZER_OFFLINE_GRACE_MS);return Number.isFinite(t)&&t>0?t:6048e5}function Ue(t,e=Date.now()){let r=t.lastHeartbeatOkAt;if(typeof r=="number"&&e-r>qn())return!0;if(t.subEndsAt){let n=Date.parse(t.subEndsAt);if(Number.isFinite(n)&&e>n)return!0}return!1}function Dt(t,e=Date.now()){return Ue(t,e)?"free":t.plan}import{readFile as Jn,writeFile as Aa,mkdir as Ra,chmod as Ca}from"node:fs/promises";import{join as Yn}from"node:path";var Xn="settings-cache.json",Ot=Ze.parse({});async function It(){try{let t=await Jn(Yn(A(),Xn),"utf8"),e=JSON.parse(t);return Ze.parse({...Ot,...e})}catch{return Ot}}var Qn=[[/(authorization\s*:\s*)([A-Za-z][A-Za-z0-9._-]*)\s+[^\s'"]+/gi,"$1$2 [REDACTED]"],[/(authorization\s*:\s*)[A-Za-z0-9._\-+/=]{8,}/gi,"$1[REDACTED]"],[/(bearer\s+)[A-Za-z0-9._\-+/=]{8,}/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-b|--cookie)[=\s]+['"]?)[^\s'";=]+=[^\s'";]+(?:\s*;\s*[^\s'";=]+=[^\s'";]+)*/gi,"$1[REDACTED]"],[/((?:^|[\s'"])(?:Set-)?Cookie\s*:\s*)[^\s'";=]+=[^\s'";]+(?:\s*;\s*[^\s'";=]+=[^\s'";]+)*/gi,"$1[REDACTED]"],[/(--?(?:password|passwd|passphrase|apipass|pass|pwd|token|api[-_]?key|secret|bearer|cookie|jwt)(?:-[a-z0-9]+)*[=\s]+)\S+/gi,"$1[REDACTED]"],[/((?:^|\s)-b[=\s]?['"]?)[^\s'"=]+=[^\s'"]+/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-u[=\s]?|(?:--user|-a)[=\s])['"]?[^\s:/'"]*:)(\/[^/\s'"][^\s'"]*|[^\s/'"0-9][^\s'"]*|[0-9][^\s'"]*[^\s'"0-9][^\s'"]*)/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-u[=\s]?|(?:--user|-a)[=\s])['"]?[^\s:/'"]*[^\s:/'"0-9][^\s:/'"]*:)(?:\/[^/\s'"]|[^\s/'"])[^\s'"]*/gi,"$1[REDACTED]"],[/((?:^|\s)(?:-u[=\s]?|(?:--user|-a)[=\s])['"]?:)(?:\/[^/\s'"]|[^\s/'"])[^\s'"]*/gi,"$1[REDACTED]"],[/((?:[A-Za-z0-9]+-)*(?:X-Api-Key|Private-Token|[A-Za-z0-9]+-(?:Token|Key|Auth|Secret))\s*:\s*)[^\s'"]+/gi,"$1[REDACTED]"],[/((?:^|[\s'"])(?:Set-)?Cookie\s*:\s*)[^\s'"]+/gi,"$1[REDACTED]"],[/(-i\s+)(\/[^\s]+|~\/[^\s]+|[A-Z]:\\[^\s]+)/g,"$1[REDACTED]"],[/([a-zA-Z][a-zA-Z0-9+.-]*:\/\/[^:/\s@]*:)[^\s]+(@[^@/\s]+)/g,"$1[REDACTED]$2"],[/(AWS_(?:ACCESS_KEY_ID|SECRET_ACCESS_KEY|SESSION_TOKEN)\s*=\s*)\S+/g,"$1[REDACTED]"],[/(GOOGLE_APPLICATION_CREDENTIALS\s*=\s*)\S+/g,"$1[REDACTED]"],[/(AZURE_(?:CLIENT_SECRET|TENANT_ID|CLIENT_ID)\s*=\s*)\S+/g,"$1[REDACTED]"],[/(sk-(?:proj-)?[A-Za-z0-9_-]{20,})/g,"sk-[REDACTED]"],[/\b(OPENAI_API_KEY\s*=\s*)\S+/g,"$1[REDACTED]"],[/\b(ANTHROPIC_API_KEY\s*=\s*)\S+/g,"$1[REDACTED]"],[/(sk-ant-[A-Za-z0-9_-]{20,})/g,"sk-ant-[REDACTED]"],[/\b(GH(?:_|ITHUB_)?TOKEN\s*=\s*)\S+/g,"$1[REDACTED]"],[/\b(GITLAB_TOKEN\s*=\s*)\S+/g,"$1[REDACTED]"],[/\b(SLACK_(?:BOT_)?TOKEN\s*=\s*)\S+/g,"$1[REDACTED]"],[/(xox[bpsoa]-[A-Za-z0-9-]{10,})/g,"xox[REDACTED]"],[/(xapp-[A-Za-z0-9-]{10,})/g,"[REDACTED]"],[/(sk_(?:test|live)_[A-Za-z0-9]{16,})/g,"sk_[REDACTED]"],[/(gh[a-z])_[A-Za-z0-9]{20,}/g,"$1_[REDACTED]"],[/(github_pat)_[A-Za-z0-9_]{20,}/g,"$1_[REDACTED]"],[/(gl(?:pat|rt|soat|imt|dt|ft|agent|oas|cbt|ptt))-[A-Za-z0-9_-]{16,}/g,"$1-[REDACTED]"],[/(npm_[A-Za-z0-9_-]{20,})/g,"npm_[REDACTED]"],[/(?:AKIA|ASIA|AGPA|AIDA|AROA|ANPA)[0-9A-Z]{16,}/g,"[REDACTED_AWS_KEY]"],[/AIza[A-Za-z0-9_-]{35}/g,"[REDACTED_GOOGLE_KEY]"],[/hv[sb]\.[A-Za-z0-9_-]{20,}/g,"[REDACTED_VAULT_TOKEN]"],[/dop_v1_[A-Za-z0-9]{40,}/g,"[REDACTED]"],[/dckr_pat_[A-Za-z0-9_-]{20,}/g,"[REDACTED]"],[/pypi-[A-Za-z0-9_-]{16,}/g,"[REDACTED]"],[/rk_(?:live|test)_[A-Za-z0-9]{16,}/g,"[REDACTED]"],[/whsec_[A-Za-z0-9]{16,}/g,"[REDACTED]"],[/SG\.[A-Za-z0-9_-]{20,}\.[A-Za-z0-9_-]{20,}/g,"[REDACTED]"],[/(eyJ[A-Za-z0-9_-]{6,}(?:\.[A-Za-z0-9_-]{4,}){1,2})/g,"[REDACTED_JWT]"],[/-----BEGIN [A-Z ]*PRIVATE KEY-----(?:[\s\S]*?-----END[^\n]*-----|\r?\n[A-Za-z0-9+/=][A-Za-z0-9+/=\r\n]*)?/g,"[REDACTED_PEM]"],[/\b((?:--?)?[A-Za-z0-9_]*(?:TOKEN|SECRET|PASSWORD|PASSWD|PASS|APIKEY|KEY|CRED|CREDS|CREDENTIAL|CREDENTIALS|AUTH|_PWD)[A-Za-z0-9_]*['"]?\s*=\s*)(?:"[^"]*"|'[^']*'|[^"'\s]\S*)/gi,"$1[REDACTED]"],[/\b([A-Za-z0-9_]*(?:TOKEN|SECRET|PASSWORD|PASSWD|PASS|APIKEY|KEY|CRED|CREDS|CREDENTIAL|CREDENTIALS|_PWD)[A-Za-z0-9_]*['"]?\s*:\s*)(?:"[^"]*"|'[^']*'|[^\s'",}]+)/gi,"$1[REDACTED]"],[/((?:^|[\s'"{,])['"]?(?:[A-Za-z0-9_]+_)?auth['"]?\s*:\s*)(?:"[^"]*"|'[^']*'|[^\s'",}]+)/gi,"$1[REDACTED]"],[/(\bpwd\s*[=:]\s*)(?:"[^"]*"|'[^']*'|[^/~\s][^\s;'"]*)/gi,"$1[REDACTED]"],[/([=:]\s*["']?)[A-Za-z0-9_\-+/=]{40,}/g,"$1[REDACTED]"]];function Ee(t){let e=t;for(let[r,n]of Qn)e=e.replace(r,n);return e}import{join as Pt}from"node:path";import{appendFileSync as cs,existsSync as us,mkdirSync as ls,readFileSync as Xa,renameSync as Qa,statSync as ds,unlinkSync as eo}from"node:fs";import{createHash as Ma,randomUUID as es}from"node:crypto";import{readFile as ts,writeFile as rs,mkdir as ns}from"node:fs/promises";async function Nt(){try{let r=(await ts(Be(),"utf8")).trim();if(/^[0-9a-f-]{36}$/i.test(r))return r}catch{}await ns(A(),{recursive:!0});let t=es();return await rs(Be(),t,{mode:384}),t}import{createRequire as ss}from"node:module";var is=ss(import.meta.url);function as(){for(let t of["../package.json","../../package.json"])try{let e=is(t).version;if(typeof e=="string"&&e)return e}catch{}return"0.0.0"}var os=as();var Ha=300*1e3;var fs=512*1024;function $t(){return Pt(A(),"spool")}function ps(t){return Pt($t(),`${t}.jsonl`)}function Ne(t,e){try{ls($t(),{recursive:!0,mode:448});let r=ps(t);if(us(r)&&ds(r).size>=fs)return;cs(r,JSON.stringify(e)+`
8
8
  `,{mode:384})}catch{return}}var hs=/^[a-z0-9][a-z0-9._-]*$/i,gs=/^[a-z][a-z-]+$/,ys=/^[A-Za-z_][A-Za-z0-9_]*=/,_s=new Set(["gh","glab","gup","hub","gist"]),vs=/^(gh[a-z]_|github_pat_|gl(?:pat|rt|soat|imt|dt|ft|agent|oas)-|npm_|xox|sk-|sk_|eyj|a(?:kia|sia|gpa|ida|roa|npa)|aiza|hv[sb]\.)/i,xs=24,bs=new Set(["docker","podman","npm","pnpm","yarn","npx","bun","deno","cargo","rustup","go","pip","pip3","uv","poetry","brew","apt","apt-get","dnf","yum","pacman","kubectl","helm","terraform","aws","gcloud","az","systemctl","composer","bundle","gem","dotnet","prisma","tkr","rtk","token"]);function Mt(t){let e=t.toLowerCase();return e.startsWith("git")||_s.has(e)}function Ke(t){let e=t.trim().split(/\s+/).filter(o=>o.length>0),r=0;for(;r<e.length&&ys.test(e[r]??"");)r+=1;let n=e[r];if(!n||!hs.test(n)||n.length>xs||Mt(n)||vs.test(n)||Ee(n)!==n)return"";let s=e[r+1];return s&&Mt(s)?"":(s&&bs.has(n.toLowerCase())&&gs.test(s)?`${n} ${s}`:n).slice(0,64)}async function jt(t){if(!t.telemetryOptIn)return;let e=Ke(t.cmd),r=e&&Ee(e)===e?e:"other";Ne("telemetry",{cmd:r,tokensSaved:Math.max(0,Math.round(t.tokensSaved)),optimized:t.optimized})}async function Lt(t){if(t.plan!=="pro")return;let e=Ke(t.cmd);!e||Ee(e)!==e||Ne("learn",{cmd:e,filterId:t.filterId,rawBytes:t.rawBytes,filteredBytes:t.filteredBytes})}import{appendFileSync as ks,chmodSync as Es,mkdirSync as ws}from"node:fs";import{join as Ts}from"node:path";var Ss="stats.jsonl";function As(){return Ts(A(),Ss)}function Ft(t,e,r=As()){if(!(e<t))return;let n=`{"t":${Math.floor(Date.now()/1e3)},"r":${t},"f":${e}}
9
- `;try{ws(A(),{recursive:!0,mode:448}),ks(r,n,{mode:384}),Es(r,384)}catch{return}}import{createConnection as Ms}from"node:net";import{spawn as js}from"node:child_process";import{existsSync as Jt,openSync as Kt,closeSync as Ls,unlinkSync as Ht,writeFileSync as Wt}from"node:fs";import{dirname as Fs,join as zs}from"node:path";import{fileURLToPath as Zs}from"node:url";var Rs=m.object({id:m.string().min(1).max(64),op:m.literal("filter"),cmd:m.string().min(1).max(2048),plan:m.enum(["trial","smart","pro"]),installId:m.string().min(1).max(64).optional()}),Cs=m.object({id:m.string().min(1).max(64),op:m.literal("ping")}),Ds=m.object({id:m.string().min(1).max(64),op:m.literal("shutdown"),installId:m.string().min(1).max(64)}),Os=m.object({id:m.string().min(1).max(64),op:m.literal("reload"),installId:m.string().min(1).max(64).optional()}),vo=m.discriminatedUnion("op",[Rs,Cs,Ds,Os]),xo=m.object({id:m.string(),ok:m.literal(!0),data:m.unknown()}),bo=m.object({id:m.string(),ok:m.literal(!1),err:m.string(),retryAfterMs:m.number().int().nonnegative().optional()}),zt=m.object({filter:De.nullable(),cacheHit:m.boolean().optional()}),Pe=`
10
- `,ko=64*1024;function Zt(t){return JSON.stringify(t)+Pe}function*Bt(t){let e=0;for(;;){let r=t.indexOf(Pe,e);if(r<0)return;yield t.slice(e,r),e=r+1}}function $e(){return`${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}import{join as He}from"node:path";import{existsSync as Vt,statSync as Is,unlinkSync as Ns,mkdirSync as Ps,chmodSync as $s}from"node:fs";function Me(){if(process.platform==="win32")return{path:`\\\\.\\pipe\\tokmizer-${process.env.USERNAME??"tokmizer"}`,isPipe:!0};let t=typeof process.getuid=="function"?process.getuid():0,e=process.env.XDG_RUNTIME_DIR;if(e&&Vt(e))return{path:He(e,`tokmizer-${t}.sock`),isPipe:!1};let r=He(A(),"run");try{Ps(r,{recursive:!0,mode:448}),$s(r,448)}catch{}return{path:He(r,"daemon.sock"),isPipe:!1}}async function Ut(){let{path:t,isPipe:e}=Me();if(e||!Vt(t))return;try{if(!Is(t).isSocket())return}catch{return}let r=await import("node:net");if(!await new Promise(s=>{let i=r.createConnection(t),a=o=>{i.removeAllListeners();try{i.destroy()}catch{}s(o)};i.once("connect",()=>a(!0)),i.once("error",o=>{let c=o.code;a(c!=="ECONNREFUSED"&&c!=="ENOENT")}),setTimeout(()=>a(!0),250)}))try{Ns(t)}catch{}}var Ao=5*6e4;var Bs=500,Vs=3e3,Gt=1;async function Us(t,e){return new Promise((r,n)=>{let s=Ms(t),i=o=>{if(s.removeAllListeners("connect"),s.removeAllListeners("error"),clearTimeout(a),o){try{s.destroy()}catch{}n(o)}else r(s)},a=setTimeout(()=>i(new Error("connect timeout")),e);s.once("connect",()=>i(null)),s.once("error",o=>i(o))})}function Ks(){return process.env.TOKMIZER_DAEMON_BIN?process.env.TOKMIZER_DAEMON_BIN:Zs(new URL("../bin/tkr-daemon.js",import.meta.url))}async function qt(t,e=3e3){let r=Math.ceil(e/75);for(let n=0;n<r;n++){if(Jt(t))return!0;await new Promise(s=>setTimeout(s,75))}return!1}async function Hs(t){let e=Ks();if(!Jt(e))throw new Error(`tkr-daemon binary not found at ${e}`);let{path:r}=Me(),n=zs(Fs(r),"daemon.spawn.lock"),s=null;try{s=Kt(n,"wx"),Wt(s,String(process.pid))}catch(i){if(i.code==="EEXIST"){if(await qt(r,5e3))return;try{Ht(n)}catch{}s=Kt(n,"wx"),Wt(s,String(process.pid))}else throw i}try{if(js(process.execPath,[e],{detached:!0,stdio:["ignore","ignore","ignore"],env:{...process.env,TOKMIZER_DAEMON_INSTALL_ID:t}}).unref(),!await qt(r,3e3))throw new Error("tkr-daemon failed to bind socket within 3s")}finally{if(s!==null){try{Ls(s)}catch{}try{Ht(n)}catch{}}}}async function Yt(t={}){let{path:e}=t.socketPath?{path:t.socketPath}:Me(),r=await Nt(),n=null,s=0;for(;s<=Gt;)try{n=await Us(e,Bs);break}catch{if(s+=1,s>Gt)throw new Error(`tkr-daemon unreachable at ${e}`);await Ut(),await Hs(r)}if(!n)throw new Error("tkr-daemon: socket setup failed");let i=new Map,a="";n.setEncoding("utf8"),n.on("data",c=>{a+=c;let l=-1;for(let b=0;b<a.length;b++)a[b]===Pe&&(l=b);if(l<0)return;let y=[];for(let b of Bt(a.slice(0,l+1)))y.push(b);a=a.slice(l+1);for(let b of y)if(b)try{let Z=JSON.parse(b),M=i.get(Z.id);if(!M)continue;clearTimeout(M.timer),i.delete(Z.id),M.resolve(Z)}catch{}}),n.on("close",()=>{for(let c of i.values())clearTimeout(c.timer),c.reject(new Error("daemon socket closed"));i.clear()}),n.on("error",()=>{});function o(c){return new Promise((l,y)=>{let b=setTimeout(()=>{i.delete(c.id),y(new Error(`daemon request timeout (${c.op})`))},Vs);i.set(c.id,{resolve:l,reject:y,timer:b}),n.write(Zt(c))})}return{filter:async(c,l)=>{let y=await o({id:$e(),op:"filter",cmd:c.slice(0,2048),plan:l,installId:r});if(!y.ok)return null;let b=zt.safeParse(y.data);return b.success?b.data.filter:null},ping:async()=>{let c=await o({id:$e(),op:"ping"});if(!c.ok)throw new Error(c.err);return c.data},reload:async()=>{let c=await o({id:$e(),op:"reload",installId:r});if(!c.ok)throw new Error(c.err);return c.data},close:()=>{try{n.end()}catch{}}}}var _e=null,we=null;async function Ws(){return _e||we||(we=Yt().then(t=>(_e=t,t)).catch(()=>null),we)}function Gs(t){return t?{...t,matchRegex:new RegExp(t.match_command)}:null}function Xt(t){ze(async(e,r)=>{let n=await Ws();if(!n)return null;try{let s=t==="free"?"trial":t,i=await n.filter(e,s);return!i||!(r??Ie(void 0)).has(i.slug)?null:Gs(i)}catch{return null}})}function Qt(){if(ze(null),_e){try{_e.close()}catch{}_e=null,we=null}}var qs=new Set(["shell","bash","exec","run_shell_command","execute_shell_command"]);async function Js(t){if(t.event!=="after_tool_call")return{action:"continue"};if(!qs.has(t.tool))return{action:"continue"};if(t.exit_code!==0)return{action:"continue"};let e=t.command??(t.args??[]).join(" ");if(!e)return{action:"continue"};let r=t.stdout??"";if(!r)return{action:"continue"};let n=t.stderr??"",s=await It();if(!s.enabled)return{action:"continue"};let i=await Ve();if(!i||!i.token)return{action:"continue"};let a=Dt(i);Xt(a);let o=Ie(i.allowedFilters,Ue(i)),c;try{c=await St(e,r,o,{exitCode:t.exit_code})}finally{Qt()}return c.filteredBytes>=c.rawBytes?{action:"continue"}:(Ft(c.rawBytes,c.filteredBytes),await Lt({cmd:e,filterId:c.filterId,rawBytes:c.rawBytes,filteredBytes:c.filteredBytes,plan:a}),await jt({cmd:e,tokensSaved:Math.round((c.rawBytes-c.filteredBytes)/4),optimized:c.filterId!=null,telemetryOptIn:s.telemetryOptIn}),{action:"replace_output",replacement:n?`${c.output}
9
+ `;try{ws(A(),{recursive:!0,mode:448}),ks(r,n,{mode:384}),Es(r,384)}catch{return}}import{createConnection as Ms}from"node:net";import{spawn as js}from"node:child_process";import{existsSync as Jt,openSync as Kt,closeSync as Ls,unlinkSync as Ht,writeFileSync as Wt}from"node:fs";import{dirname as Fs,join as zs}from"node:path";import{fileURLToPath as Zs}from"node:url";var Rs=m.object({id:m.string().min(1).max(64),op:m.literal("filter"),cmd:m.string().min(1).max(2048),plan:m.enum(["trial","smart","pro"]),installId:m.string().min(1).max(64).optional()}),Cs=m.object({id:m.string().min(1).max(64),op:m.literal("ping")}),Ds=m.object({id:m.string().min(1).max(64),op:m.literal("shutdown"),installId:m.string().min(1).max(64)}),Os=m.object({id:m.string().min(1).max(64),op:m.literal("reload"),installId:m.string().min(1).max(64).optional()}),xo=m.discriminatedUnion("op",[Rs,Cs,Ds,Os]),bo=m.object({id:m.string(),ok:m.literal(!0),data:m.unknown()}),ko=m.object({id:m.string(),ok:m.literal(!1),err:m.string(),retryAfterMs:m.number().int().nonnegative().optional()}),zt=m.object({filter:De.nullable(),cacheHit:m.boolean().optional()}),Pe=`
10
+ `,Eo=64*1024;function Zt(t){return JSON.stringify(t)+Pe}function*Bt(t){let e=0;for(;;){let r=t.indexOf(Pe,e);if(r<0)return;yield t.slice(e,r),e=r+1}}function $e(){return`${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}import{join as He}from"node:path";import{existsSync as Vt,statSync as Is,unlinkSync as Ns,mkdirSync as Ps,chmodSync as $s}from"node:fs";function Me(){if(process.platform==="win32")return{path:`\\\\.\\pipe\\tokmizer-${process.env.USERNAME??"tokmizer"}`,isPipe:!0};let t=typeof process.getuid=="function"?process.getuid():0,e=process.env.XDG_RUNTIME_DIR;if(e&&Vt(e))return{path:He(e,`tokmizer-${t}.sock`),isPipe:!1};let r=He(A(),"run");try{Ps(r,{recursive:!0,mode:448}),$s(r,448)}catch{}return{path:He(r,"daemon.sock"),isPipe:!1}}async function Ut(){let{path:t,isPipe:e}=Me();if(e||!Vt(t))return;try{if(!Is(t).isSocket())return}catch{return}let r=await import("node:net");if(!await new Promise(s=>{let i=r.createConnection(t),a=o=>{i.removeAllListeners();try{i.destroy()}catch{}s(o)};i.once("connect",()=>a(!0)),i.once("error",o=>{let c=o.code;a(c!=="ECONNREFUSED"&&c!=="ENOENT")}),setTimeout(()=>a(!0),250)}))try{Ns(t)}catch{}}var Ro=5*6e4;var Bs=500,Vs=3e3,Gt=1;async function Us(t,e){return new Promise((r,n)=>{let s=Ms(t),i=o=>{if(s.removeAllListeners("connect"),s.removeAllListeners("error"),clearTimeout(a),o){try{s.destroy()}catch{}n(o)}else r(s)},a=setTimeout(()=>i(new Error("connect timeout")),e);s.once("connect",()=>i(null)),s.once("error",o=>i(o))})}function Ks(){return process.env.TOKMIZER_DAEMON_BIN?process.env.TOKMIZER_DAEMON_BIN:Zs(new URL("../bin/tkr-daemon.js",import.meta.url))}async function qt(t,e=3e3){let r=Math.ceil(e/75);for(let n=0;n<r;n++){if(Jt(t))return!0;await new Promise(s=>setTimeout(s,75))}return!1}async function Hs(t){let e=Ks();if(!Jt(e))throw new Error(`tkr-daemon binary not found at ${e}`);let{path:r}=Me(),n=zs(Fs(r),"daemon.spawn.lock"),s=null;try{s=Kt(n,"wx"),Wt(s,String(process.pid))}catch(i){if(i.code==="EEXIST"){if(await qt(r,5e3))return;try{Ht(n)}catch{}s=Kt(n,"wx"),Wt(s,String(process.pid))}else throw i}try{if(js(process.execPath,[e],{detached:!0,stdio:["ignore","ignore","ignore"],env:{...process.env,TOKMIZER_DAEMON_INSTALL_ID:t}}).unref(),!await qt(r,3e3))throw new Error("tkr-daemon failed to bind socket within 3s")}finally{if(s!==null){try{Ls(s)}catch{}try{Ht(n)}catch{}}}}async function Yt(t={}){let{path:e}=t.socketPath?{path:t.socketPath}:Me(),r=await Nt(),n=null,s=0;for(;s<=Gt;)try{n=await Us(e,Bs);break}catch{if(s+=1,s>Gt)throw new Error(`tkr-daemon unreachable at ${e}`);await Ut(),await Hs(r)}if(!n)throw new Error("tkr-daemon: socket setup failed");let i=new Map,a="";n.setEncoding("utf8"),n.on("data",c=>{a+=c;let l=-1;for(let b=0;b<a.length;b++)a[b]===Pe&&(l=b);if(l<0)return;let y=[];for(let b of Bt(a.slice(0,l+1)))y.push(b);a=a.slice(l+1);for(let b of y)if(b)try{let Z=JSON.parse(b),M=i.get(Z.id);if(!M)continue;clearTimeout(M.timer),i.delete(Z.id),M.resolve(Z)}catch{}}),n.on("close",()=>{for(let c of i.values())clearTimeout(c.timer),c.reject(new Error("daemon socket closed"));i.clear()}),n.on("error",()=>{});function o(c){return new Promise((l,y)=>{let b=setTimeout(()=>{i.delete(c.id),y(new Error(`daemon request timeout (${c.op})`))},Vs);i.set(c.id,{resolve:l,reject:y,timer:b}),n.write(Zt(c))})}return{filter:async(c,l)=>{let y=await o({id:$e(),op:"filter",cmd:c.slice(0,2048),plan:l,installId:r});if(!y.ok)return null;let b=zt.safeParse(y.data);return b.success?b.data.filter:null},ping:async()=>{let c=await o({id:$e(),op:"ping"});if(!c.ok)throw new Error(c.err);return c.data},reload:async()=>{let c=await o({id:$e(),op:"reload",installId:r});if(!c.ok)throw new Error(c.err);return c.data},close:()=>{try{n.end()}catch{}}}}var _e=null,we=null;async function Ws(){return _e||we||(we=Yt().then(t=>(_e=t,t)).catch(()=>null),we)}function Gs(t){return t?{...t,matchRegex:new RegExp(t.match_command)}:null}function Xt(t){ze(async(e,r)=>{let n=await Ws();if(!n)return null;try{let s=t==="free"?"trial":t,i=await n.filter(e,s);return!i||!(r??Ie(void 0)).has(i.slug)?null:Gs(i)}catch{return null}})}function Qt(){if(ze(null),_e){try{_e.close()}catch{}_e=null,we=null}}var qs=new Set(["shell","bash","exec","run_shell_command","execute_shell_command"]);async function Js(t){if(t.event!=="after_tool_call")return{action:"continue"};if(!qs.has(t.tool))return{action:"continue"};if(t.exit_code!==0)return{action:"continue"};let e=t.command??(t.args??[]).join(" ");if(!e)return{action:"continue"};let r=t.stdout??"";if(!r)return{action:"continue"};let n=t.stderr??"",s=await It();if(!s.enabled)return{action:"continue"};let i=await Ve();if(!i||!i.token)return{action:"continue"};let a=Dt(i);Xt(a);let o=Ie(i.allowedFilters,Ue(i)),c;try{c=await St(e,r,o,{exitCode:t.exit_code})}finally{Qt()}return c.filteredBytes>=c.rawBytes?{action:"continue"}:(Ft(c.rawBytes,c.filteredBytes),await Lt({cmd:e,filterId:c.filterId,rawBytes:c.rawBytes,filteredBytes:c.filteredBytes,plan:a}),await jt({cmd:e,tokensSaved:Math.round((c.rawBytes-c.filteredBytes)/4),optimized:c.filterId!=null,telemetryOptIn:s.telemetryOptIn}),{action:"replace_output",replacement:n?`${c.output}
11
11
  ${n}`:c.output,reason:"tokmizer"})}async function er(){let t=await At();if(!t){process.stdout.write(JSON.stringify({action:"continue"}));return}let e;try{e=JSON.parse(t)}catch{process.stdout.write(JSON.stringify({action:"continue"}));return}try{let r=await Js(e);process.stdout.write(JSON.stringify(r))}catch(r){process.stderr.write(`tkr-codex: ${r.message}
12
12
  `),process.stdout.write(JSON.stringify({action:"continue"}))}}er().catch(t=>{process.stderr.write(`tkr-codex-hook: ${t.message}
13
13
  `),process.stdout.write(JSON.stringify({action:"continue"})),process.exit(0)});