@easbot/utils 0.3.14 → 0.3.16

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.
Files changed (35) hide show
  1. package/dist/chunks/chunk-6GV3NECV.mjs +1 -0
  2. package/dist/chunks/{chunk-AGCTBLWP.cjs → chunk-AJU5GBQB.cjs} +1 -1
  3. package/dist/chunks/{chunk-WZHHFME6.mjs → chunk-GOEMY5AZ.mjs} +1 -1
  4. package/dist/chunks/{chunk-XP3JFKUF.cjs → chunk-IVVWAT7R.cjs} +1 -1
  5. package/dist/chunks/{chunk-QHS45ILC.mjs → chunk-JI7GHGIF.mjs} +2 -2
  6. package/dist/chunks/chunk-K7PV4FXJ.cjs +1 -0
  7. package/dist/chunks/{chunk-DSQTBBWA.cjs → chunk-PVTJQVMO.cjs} +2 -2
  8. package/dist/chunks/{chunk-BPUVSXJ3.cjs → chunk-QBLZGSTI.cjs} +5 -5
  9. package/dist/chunks/{chunk-YTLHVUQE.mjs → chunk-QNKOAEBG.mjs} +1 -1
  10. package/dist/chunks/{chunk-UAOGVWUY.mjs → chunk-ZA3GGWB3.mjs} +2 -2
  11. package/dist/chunks/filesystem-TBYCQ7D2.cjs +1 -0
  12. package/dist/chunks/filesystem-WCPIBXDN.mjs +1 -0
  13. package/dist/chunks/lock-FS4EHXSK.cjs +1 -0
  14. package/dist/chunks/lock-GNVDLOKR.mjs +1 -0
  15. package/dist/chunks/{main-SOMNF7JD.mjs → main-3SAATRGB.mjs} +5 -5
  16. package/dist/chunks/{main-OZA2GBZR.cjs → main-AFZUDH75.cjs} +6 -6
  17. package/dist/chunks/registry-7SGIVICB.cjs +1 -0
  18. package/dist/chunks/registry-ZZW4VHED.mjs +1 -0
  19. package/dist/chunks/shell-NYVVJ4D5.mjs +1 -0
  20. package/dist/chunks/shell-XYMW3MHM.cjs +1 -0
  21. package/dist/index.cjs +23 -23
  22. package/dist/index.d.cts +8 -1
  23. package/dist/index.d.ts +8 -1
  24. package/dist/index.mjs +23 -23
  25. package/package.json +12 -13
  26. package/dist/chunks/chunk-7WRC6YMO.cjs +0 -1
  27. package/dist/chunks/chunk-DFVKHBF4.mjs +0 -1
  28. package/dist/chunks/filesystem-KY73BNQF.cjs +0 -1
  29. package/dist/chunks/filesystem-WCWOAZ2P.mjs +0 -1
  30. package/dist/chunks/lock-4WFBTQ7Z.mjs +0 -1
  31. package/dist/chunks/lock-VSEYPNID.cjs +0 -1
  32. package/dist/chunks/registry-7U3Q3K5S.cjs +0 -1
  33. package/dist/chunks/registry-KZB3XXV6.mjs +0 -1
  34. package/dist/chunks/shell-JMQ5XY4J.mjs +0 -1
  35. package/dist/chunks/shell-LJEZM3TC.cjs +0 -1
package/dist/index.mjs CHANGED
@@ -1,29 +1,29 @@
1
- export{a as Lock}from'./chunks/chunk-WZHHFME6.mjs';import {b,D,a,G,c as c$1}from'./chunks/chunk-QHS45ILC.mjs';export{H as $,j as HTTPException,d as Hono,c as Lazy,D as PKG,A as PkgShell,G as Shell,g as compress,e as cors,s as createNodeWebSocket,B as createPkgShell,p as createRESTServer,n as createRPCServer,m as createServer,r as createStreamingServer,q as createWebSocketServer,y as detectPlatform,w as escapeCommandArg,x as escapeCommandArgSafe,z as joinCommandArgs,a as lazy,b as lazyAsync,f as logger,u as needsShellExecution,t as parseCommand,v as parseCommandWithOptions,E as readableStreamToText,h as secureHeaders,C as shell,o as startServer,i as timeout,k as validator,F as whichSync,l as zValidator}from'./chunks/chunk-QHS45ILC.mjs';import {d,b as b$2,a as a$1}from'./chunks/chunk-YTLHVUQE.mjs';export{d as Filesystem,b as Glob,c as MIME_TYPES,a as Wildcard}from'./chunks/chunk-YTLHVUQE.mjs';import {m,b as b$1}from'./chunks/chunk-UAOGVWUY.mjs';export{m as Log,o as PackageRegistry,n as Semver,l as addMinutesInTimezone,a as formatLocalISO,b as formatLocalISOCompact,f as formatLogTime,g as formatLogTimeMs,h as getTimezoneOffset,i as getTimezoneParts,j as isValidTimezone,k as normalizeTimezone,c as now,d as nowLocalISO,e as parseLocalISO}from'./chunks/chunk-UAOGVWUY.mjs';import {f,c,d as d$1}from'./chunks/chunk-DFVKHBF4.mjs';import ie,{readFile}from'fs/promises';import ue,{z}from'zod';import {randomBytes}from'crypto';import {config}from'dotenv';import Pe,{dirname,join}from'path';import {existsSync,readdirSync,statSync}from'fs';import {xdgConfig}from'xdg-basedir';import {fileURLToPath}from'url';import de from'gray-matter';import {ProxyAgent,getGlobalDispatcher,setGlobalDispatcher}from'undici';import {AsyncLocalStorage}from'async_hooks';f();f();function gt(t,e){for(let r=t.length-1;r>=0;r-=1){let n=t[r];if(n!==void 0&&e(n,r,t))return n}}f();var he;(r=>{function t(n,s,l){let y=0,o=n.length-1;for(;y<=o;){let u=Math.floor((y+o)/2),b=n[u];if(b===void 0)break;let w=l(b);if(w===s)return {found:true,index:u};w<s?y=u+1:o=u-1;}return {found:false,index:y}}r.search=t;function e(n,s,l){let y=l(s),o=0,u=n.length;for(;o<u;){let b=Math.floor((o+u)/2),w=n[b];if(w===void 0)break;l(w)<y?o=b+1:u=b;}return n.splice(o,0,s),n}r.insert=e;})(he||(he={}));f();var xe;(l=>{function t(y){let o=new TextEncoder().encode(y),u=Array.from(o,b=>String.fromCharCode(b)).join("");return btoa(u).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}l.base64Encode=t;function e(y){let o=atob(y.replace(/-/g,"+").replace(/_/g,"/")),u=Uint8Array.from(o,b=>b.charCodeAt(0));return new TextDecoder().decode(u)}l.base64Decode=e;async function r(y,o="SHA-256"){let b=new TextEncoder().encode(y),w=await crypto.subtle.digest(o,b);return Array.from(new Uint8Array(w)).map(m=>m.toString(16).padStart(2,"0")).join("")}l.hash=r;function n(y){if(!y)return;let o=2166136261;for(let u=0;u<y.length;u++)o^=y.charCodeAt(u),o=Math.imul(o,16777619);return (o>>>0).toString(36)}l.checksum=n;function s(y,o=5e5){if(!y)return;if(y.length<=o)return n(y);let u=4096,w=[0,Math.floor(y.length*.25),Math.floor(y.length*.5),Math.floor(y.length*.75),y.length-u].map(S=>{let R=Math.max(0,Math.min(y.length-u,S-Math.floor(u/2)));return n(y.slice(R,R+u))??""}).join(":");return `${y.length}:${w}`}l.sampledChecksum=s;})(xe||(xe={}));f();f();var Z;(S=>{let t={event:"evt",session:"ses",message:"msg",permission:"per",question:"que",user:"usr",part:"prt",pty:"pty",tool:"tool",workspace:"wrk",command:"cmd",task:"task",heartbeat:"hb",agent:"ag",subagent:"sub",hook:"hok",compaction:"cmp",context:"ctx",experience:"exp",pattern:"pat",knowledge:"knw",evolution:"evo",result:"res"};function e(R){return ue.string().startsWith(t[R])}S.schema=e;let r=26,n=0,s=0;function l(R,m){return o(R,false,m)}S.ascending=l;function y(R,m){return o(R,true,m)}S.descending=y;function o(R,m,A){if(!A)return b(R,m);if(!A.startsWith(t[R]))throw new Error(`ID ${A} does not start with ${t[R]}`);return A}function u(R){let m="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",A="",I=randomBytes(R);for(let i=0;i<R;i++){let h=I[i];h!==void 0&&(A+=m[h%62]);}return A}function b(R,m,A){let I=A??Date.now();I!==n&&(n=I,s=0),s++;let i=BigInt(I)*BigInt(4096)+BigInt(s);i=m?~i:i;let h=Buffer.alloc(6);for(let _=0;_<6;_++)h[_]=Number(i>>BigInt(40-8*_)&BigInt(255));return t[R]+"_"+h.toString("hex")+u(r-12)}S.create=b;function w(R){let m=R.split("_")[0];if(!m)return 0;let A=R.slice(m.length+1,m.length+13),I=BigInt("0x"+A);return Number(I/BigInt(4096))}S.timestamp=w;})(Z||(Z={}));var ye;(b=>{b.DEFAULT_MAX_CHARS=4e3,b.DIRECTION="head",b.DIR=d.join(process.env.EASBOT_DATA_PATH??`${process.cwd()}/data`,"context-output"),b.GLOB=d.join(b.DIR,"*");let s=10080*60*1e3;function l(w,S,R){return R?`[Content truncated. Source: ${R}
2
- Full ${S} saved to: ${w}
3
- Use Read tool with offset/limit parameters to view specific sections.]`:`[Content truncated. Full ${S} saved to: ${w}
4
- Use Read tool with offset/limit parameters to view specific sections.]`}async function y(w,S={}){let R=S.maxChars??4e3,m=S.direction??b.DIRECTION,A=S.label??"content",I=S.sourcePath,i=d.join(process.env.EASBOT_DATA_PATH??`${process.cwd()}/data`,"context-output"),h=S.dir??i;if(w.length<=R)return {content:w,truncated:false};let _=Z.ascending("context"),C=d.join(h,_);await ie.mkdir(h,{recursive:true}).catch(()=>{}),await ie.writeFile(C,w,"utf-8");let U=w.length-R,j;m==="head"?j=w.slice(0,R):j=w.slice(-R);let $=l(C,A,I),a=`${U} characters truncated`;return {content:m==="head"?`${j}
1
+ export{a as Lock}from'./chunks/chunk-GOEMY5AZ.mjs';import {b,D,a,G,c as c$1}from'./chunks/chunk-JI7GHGIF.mjs';export{H as $,j as HTTPException,d as Hono,c as Lazy,D as PKG,A as PkgShell,G as Shell,g as compress,e as cors,s as createNodeWebSocket,B as createPkgShell,p as createRESTServer,n as createRPCServer,m as createServer,r as createStreamingServer,q as createWebSocketServer,y as detectPlatform,w as escapeCommandArg,x as escapeCommandArgSafe,z as joinCommandArgs,a as lazy,b as lazyAsync,f as logger,u as needsShellExecution,t as parseCommand,v as parseCommandWithOptions,E as readableStreamToText,h as secureHeaders,C as shell,o as startServer,i as timeout,k as validator,F as whichSync,l as zValidator}from'./chunks/chunk-JI7GHGIF.mjs';import {d,b as b$2,a as a$1}from'./chunks/chunk-QNKOAEBG.mjs';export{d as Filesystem,b as Glob,c as MIME_TYPES,a as Wildcard}from'./chunks/chunk-QNKOAEBG.mjs';import {m,b as b$1}from'./chunks/chunk-ZA3GGWB3.mjs';export{m as Log,o as PackageRegistry,n as Semver,l as addMinutesInTimezone,a as formatLocalISO,b as formatLocalISOCompact,f as formatLogTime,g as formatLogTimeMs,h as getTimezoneOffset,i as getTimezoneParts,j as isValidTimezone,k as normalizeTimezone,c as now,d as nowLocalISO,e as parseLocalISO}from'./chunks/chunk-ZA3GGWB3.mjs';import {f,c,d as d$1}from'./chunks/chunk-6GV3NECV.mjs';import ae,{readFile}from'fs/promises';import j,{z}from'zod';import {randomBytes}from'crypto';import {config}from'dotenv';import Ae,{dirname,join}from'path';import {existsSync,readdirSync,statSync}from'fs';import {xdgConfig}from'xdg-basedir';import {fileURLToPath}from'url';import pe from'gray-matter';import {ProxyAgent,getGlobalDispatcher,setGlobalDispatcher}from'undici';import {AsyncLocalStorage}from'async_hooks';f();f();function ht(r,t){for(let n=r.length-1;n>=0;n-=1){let o=r[n];if(o!==void 0&&t(o,n,r))return o}}f();var xe;(n=>{function r(o,a,c){let g=0,i=o.length-1;for(;g<=i;){let d=Math.floor((g+i)/2),x=o[d];if(x===void 0)break;let w=c(x);if(w===a)return {found:true,index:d};w<a?g=d+1:i=d-1;}return {found:false,index:g}}n.search=r;function t(o,a,c){let g=c(a),i=0,d=o.length;for(;i<d;){let x=Math.floor((i+d)/2),w=o[x];if(w===void 0)break;c(w)<g?i=x+1:d=x;}return o.splice(i,0,a),o}n.insert=t;})(xe||(xe={}));f();var ye;(c=>{function r(g){let i=new TextEncoder().encode(g),d=Array.from(i,x=>String.fromCharCode(x)).join("");return btoa(d).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}c.base64Encode=r;function t(g){let i=atob(g.replace(/-/g,"+").replace(/_/g,"/")),d=Uint8Array.from(i,x=>x.charCodeAt(0));return new TextDecoder().decode(d)}c.base64Decode=t;async function n(g,i="SHA-256"){let x=new TextEncoder().encode(g),w=await crypto.subtle.digest(i,x);return Array.from(new Uint8Array(w)).map(h=>h.toString(16).padStart(2,"0")).join("")}c.hash=n;function o(g){if(!g)return;let i=2166136261;for(let d=0;d<g.length;d++)i^=g.charCodeAt(d),i=Math.imul(i,16777619);return (i>>>0).toString(36)}c.checksum=o;function a(g,i=5e5){if(!g)return;if(g.length<=i)return o(g);let d=4096,w=[0,Math.floor(g.length*.25),Math.floor(g.length*.5),Math.floor(g.length*.75),g.length-d].map(A=>{let T=Math.max(0,Math.min(g.length-d,A-Math.floor(d/2)));return o(g.slice(T,T+d))??""}).join(":");return `${g.length}:${w}`}c.sampledChecksum=a;})(ye||(ye={}));f();f();var K;(A=>{let r={event:"evt",session:"ses",message:"msg",permission:"per",question:"que",user:"usr",part:"prt",pty:"pty",tool:"tool",workspace:"wrk",command:"cmd",task:"task",heartbeat:"hb",agent:"ag",subagent:"sub",hook:"hok",compaction:"cmp",context:"ctx",experience:"exp",pattern:"pat",knowledge:"knw",evolution:"evo",result:"res"};function t(T){return j.string().startsWith(r[T])}A.schema=t;let n=26,o=0,a=0;function c(T,h){return i(T,false,h)}A.ascending=c;function g(T,h){return i(T,true,h)}A.descending=g;function i(T,h,R){if(!R)return x(T,h);if(!R.startsWith(r[T]))throw new Error(`ID ${R} does not start with ${r[T]}`);return R}function d(T){let h="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",R="",F=randomBytes(T);for(let L=0;L<T;L++){let M=F[L];M!==void 0&&(R+=h[M%62]);}return R}function x(T,h,R){let F=R??Date.now();F!==o&&(o=F,a=0),a++;let L=BigInt(F)*BigInt(4096)+BigInt(a);L=h?~L:L;let M=Buffer.alloc(6);for(let X=0;X<6;X++)M[X]=Number(L>>BigInt(40-8*X)&BigInt(255));return r[T]+"_"+M.toString("hex")+d(n-12)}A.create=x;function w(T){let h=T.split("_")[0];if(!h)return 0;let R=T.slice(h.length+1,h.length+13),F=BigInt("0x"+R);return Number(F/BigInt(4096))}A.timestamp=w;})(K||(K={}));var be;(x=>{x.DEFAULT_MAX_CHARS=4e3,x.DIRECTION="head",x.DIR=d.join(process.env.EASBOT_DATA_PATH??`${process.cwd()}/data`,"context-output"),x.GLOB=d.join(x.DIR,"*");let a=10080*60*1e3;function c(w,A,T){return T?`[Content truncated. Source: ${T}
2
+ Full ${A} saved to: ${w}
3
+ Use Read tool with offset/limit parameters to view specific sections.]`:`[Content truncated. Full ${A} saved to: ${w}
4
+ Use Read tool with offset/limit parameters to view specific sections.]`}async function g(w,A={}){let T=A.maxChars??4e3,h=A.direction??x.DIRECTION,R=A.label??"content",F=A.sourcePath,L=d.join(process.env.EASBOT_DATA_PATH??`${process.cwd()}/data`,"context-output"),M=A.dir??L;if(w.length<=T)return {content:w,truncated:false};let X=K.ascending("context"),U=d.join(M,X);await ae.mkdir(M,{recursive:true}).catch(()=>{}),await ae.writeFile(U,w,"utf-8");let V=w.length-T,J;h==="head"?J=w.slice(0,T):J=w.slice(-T);let W=c(U,R,F),e=`${V} characters truncated`;return {content:h==="head"?`${J}
5
5
 
6
- ...${a}...
6
+ ...${e}...
7
7
 
8
- ${$}`:`...${a}...
8
+ ${W}`:`...${e}...
9
9
 
10
- ${$}
10
+ ${W}
11
11
 
12
- ${j}`,truncated:true,outputPath:C,originalLength:w.length,removedLength:U,label:A}}b.truncate=y;function o(w){return w.truncated?l(w.outputPath,w.label):""}b.formatHint=o;async function u(){let w=Z.timestamp(Z.create("context",false,Date.now()-s)),R=(await ie.readdir(b.DIR).catch(()=>[])).filter(m=>m.startsWith("context_"));for(let m of R)Z.timestamp(m)>=w||await ie.unlink(d.join(b.DIR,m)).catch(()=>{});}b.cleanup=u;})(ye||(ye={}));f();var be;(o=>{let t="New session - ",e="Child session - ";o.parentTitlePrefix=t,o.childTitlePrefix=e;function s(u=false){return (u?e:t)+b$1(new Date)}o.createDefault=s;function l(u){return new RegExp(`^(${t}|${e})\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}[+-]\\d{2}:\\d{2}$`).test(u)}o.isDefault=l;function y(u){let b=u.match(/^(.+) \(fork #(\d+)\)$/);if(b){let w=b[1]??"",S=parseInt(b[2]??"0",10);return `${w} (fork #${S+1})`}return `${u} (fork #1)`}o.getForked=y;})(be||(be={}));f();var ne=class ne extends Error{static create(e,r){var l;let n=ue.object({name:ue.literal(e),data:r}).meta({ref:e}),s=(l=class extends ne{constructor(o,u){super(e,u);c(this,"data",o);c(this,"name",e);this.name=e;}static isInstance(o){return o!==null&&typeof o=="object"&&"name"in o&&o.name===e}schema(){return n}toObject(){return {name:e,data:this.data}}},c(l,"Schema",n),l);return Object.defineProperty(s,"name",{value:e}),s}};c(ne,"Unknown",ne.create("UnknownError",ue.object({message:ue.string()})));var oe=ne;f();var we;(e=>{function t(r){return new Te(r)}e.create=t;})(we||(we={}));var Te=class{constructor(e){c(this,"rules",[]);c(this,"ignorecase");c(this,"debug");this.ignorecase=e?.ignorecase??false,this.debug=e?.debug??false;}add(e){let r=typeof e=="string"?e.split(`
13
- `):e;for(let n=0;n<r.length;n++){let s=r[n];this.parseRule(s,n+1);}return this}parseRule(e,r){let n=e,s=e;if(n.length===0||n.startsWith("#"))return;let l=n.startsWith("!");if(l&&(n=n.slice(1)),n=n.trim(),n.length===0||(n.startsWith("\\#")&&(n=n.slice(1)),n.startsWith("#")))return;let y=n.startsWith("/");y&&(n=n.slice(1));let o=n.endsWith("/");o&&(n=n.slice(0,-1)),n.length!==0&&this.rules.push({pattern:n,negative:l,isDirectory:o,anchored:y,original:s,lineNumber:r});}ignores(e,r){let n=this.normalizePath(e),s=r??e.endsWith("/"),l=this.checkIgnore(n,s);return this.debug&&console.log(`Ignore.ignores("${e}", isDirectory=${s}) => ${l}`),l}checkIgnore(e,r){let n=false;for(let s of this.rules)s.isDirectory&&!r||this.matchPath(s,e)&&(s.negative?n=false:n=true);return n}matchPath(e,r){let n=this.ignorecase?r.toLowerCase():r,l=this.ignorecase?e.pattern.toLowerCase():e.pattern;if(e.anchored)return a$1.match(n,l);if(l.includes("/"))return a$1.match(n,l);let y=n.split("/");for(let o of y)if(a$1.match(o,l))return true;return false}filter(e){return e.filter(r=>!this.ignores(r))}createFilter(){return e=>!this.ignores(e)}normalizePath(e){let r=e.replace(/\\/g,"/");if(r==="/")return "";for(;r.startsWith("./");)r=r.slice(2);return r.endsWith("/")&&r.length>1&&(r=r.slice(0,-1)),r}};f();function Ce(t,e){let r=n=>{let s;try{s=t.parse(n);}catch(l){throw console.trace("schema validation failure stack trace:"),l instanceof z.ZodError&&console.error("schema validation issues:",JSON.stringify(l.issues,null,2)),l}return e(s)};return r.force=n=>e(n),r.schema=t,r}var yt=Ce,Ee;(e=>e.fn=Ce)(Ee||(Ee={}));f();function Tt(t={}){let e=t.isDevelopment??false,r=e?".env.dev":".env",n=t.globalConfigPath??(xdgConfig?Pe.join(xdgConfig,"easbot"):void 0),s=t.projectRoot??process.cwd(),l=s?Pe.join(s,".easbot"):void 0,y=[{root:n,label:"global"},{root:s,label:"project"},{root:l,label:"workspace"}];for(let{root:o}of y){if(!o)continue;let u=Pe.join(o,r);if(!existsSync(u))continue;let b=config({path:u,override:true,debug:e,encoding:"utf-8",quiet:!e});if(e&&b.parsed){let S=["XDG_CONFIG_HOME","XDG_DATA_HOME","XDG_CACHE_HOME","XDG_STATE_HOME","XDG_RUNTIME_DIR","EASBOT_CONFIG_PATH","EASBOT_DATA_PATH","EASBOT_CACHE_PATH","EASBOT_STATE_PATH","EASBOT_LOG_PATH","EASBOT_BIN_PATH"].filter(R=>R in b.parsed);S.length>0&&console.warn(`[loadEnv] ${u} contains keys that have no effect: ${S.join(", ")}.
12
+ ${J}`,truncated:true,outputPath:U,originalLength:w.length,removedLength:V,label:R}}x.truncate=g;function i(w){return w.truncated?c(w.outputPath,w.label):""}x.formatHint=i;async function d$1(){let w=K.timestamp(K.create("context",false,Date.now()-a)),T=(await ae.readdir(x.DIR).catch(()=>[])).filter(h=>h.startsWith("context_"));for(let h of T)K.timestamp(h)>=w||await ae.unlink(d.join(x.DIR,h)).catch(()=>{});}x.cleanup=d$1;})(be||(be={}));f();var we;(i=>{let r="New session - ",t="Child session - ";i.parentTitlePrefix=r,i.childTitlePrefix=t;function a(d=false){return (d?t:r)+b$1(new Date)}i.createDefault=a;function c(d){return new RegExp(`^(${r}|${t})\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}[+-]\\d{2}:\\d{2}$`).test(d)}i.isDefault=c;function g(d){let x=d.match(/^(.+) \(fork #(\d+)\)$/);if(x){let w=x[1]??"",A=parseInt(x[2]??"0",10);return `${w} (fork #${A+1})`}return `${d} (fork #1)`}i.getForked=g;})(we||(we={}));f();var oe=class oe extends Error{static create(t,n){var c$1;let o=j.object({name:j.literal(t),data:n}).meta({ref:t}),a=(c$1=class extends oe{constructor(i,d){super(t,d);c(this,"data",i);c(this,"name",t);this.name=t;}static isInstance(i){return i!==null&&typeof i=="object"&&"name"in i&&i.name===t}schema(){return o}toObject(){return {name:t,data:this.data}}},c(c$1,"Schema",o),c$1);return Object.defineProperty(a,"name",{value:t}),a}};c(oe,"Unknown",oe.create("UnknownError",j.object({message:j.string()})));var se=oe;f();var Te;(t=>{function r(n){return new Ee(n)}t.create=r;})(Te||(Te={}));var Ee=class{constructor(t){c(this,"rules",[]);c(this,"ignorecase");c(this,"debug");this.ignorecase=t?.ignorecase??false,this.debug=t?.debug??false;}add(t){let n=typeof t=="string"?t.split(`
13
+ `):t;for(let o=0;o<n.length;o++){let a=n[o];this.parseRule(a,o+1);}return this}parseRule(t,n){let o=t,a=t;if(o.length===0||o.startsWith("#"))return;let c=o.startsWith("!");if(c&&(o=o.slice(1)),o=o.trim(),o.length===0||(o.startsWith("\\#")&&(o=o.slice(1)),o.startsWith("#")))return;let g=o.startsWith("/");g&&(o=o.slice(1));let i=o.endsWith("/");i&&(o=o.slice(0,-1)),o.length!==0&&this.rules.push({pattern:o,negative:c,isDirectory:i,anchored:g,original:a,lineNumber:n});}ignores(t,n){let o=this.normalizePath(t),a=n??t.endsWith("/"),c=this.checkIgnore(o,a);return this.debug&&console.log(`Ignore.ignores("${t}", isDirectory=${a}) => ${c}`),c}checkIgnore(t,n){let o=false;for(let a of this.rules)a.isDirectory&&!n||this.matchPath(a,t)&&(a.negative?o=false:o=true);return o}matchPath(t,n){let o=this.ignorecase?n.toLowerCase():n,c=this.ignorecase?t.pattern.toLowerCase():t.pattern;if(t.anchored)return a$1.match(o,c);if(c.includes("/"))return a$1.match(o,c);let g=o.split("/");for(let i of g)if(a$1.match(i,c))return true;return false}filter(t){return t.filter(n=>!this.ignores(n))}createFilter(){return t=>!this.ignores(t)}normalizePath(t){let n=t.replace(/\\/g,"/");if(n==="/")return "";for(;n.startsWith("./");)n=n.slice(2);return n.endsWith("/")&&n.length>1&&(n=n.slice(0,-1)),n}};f();function ze(r,t){let n=o=>{let a;try{a=r.parse(o);}catch(c){throw console.trace("schema validation failure stack trace:"),c instanceof z.ZodError&&console.error("schema validation issues:",JSON.stringify(c.issues,null,2)),c}return t(a)};return n.force=o=>t(o),n.schema=r,n}var wt=ze,Pe;(t=>t.fn=ze)(Pe||(Pe={}));f();function Pt(r={}){let t=r.isDevelopment??false,n=t?".env.dev":".env",o=r.globalConfigPath??(xdgConfig?Ae.join(xdgConfig,"easbot"):void 0),a=r.projectRoot??process.cwd(),c=a?Ae.join(a,".easbot"):void 0,g=[{root:o,label:"global"},{root:a,label:"project"},{root:c,label:"workspace"}];for(let{root:i}of g){if(!i)continue;let d=Ae.join(i,n);if(!existsSync(d))continue;let x=config({path:d,override:true,debug:t,encoding:"utf-8",quiet:!t});if(t&&x.parsed){let A=["XDG_CONFIG_HOME","XDG_DATA_HOME","XDG_CACHE_HOME","XDG_STATE_HOME","XDG_RUNTIME_DIR","EASBOT_CONFIG_PATH","EASBOT_DATA_PATH","EASBOT_CACHE_PATH","EASBOT_STATE_PATH","EASBOT_LOG_PATH","EASBOT_BIN_PATH"].filter(T=>T in x.parsed);A.length>0&&console.warn(`[loadEnv] ${d} contains keys that have no effect: ${A.join(", ")}.
14
14
  Reason: xdg-basedir caches XDG_* on import, so this .env file loads too late.
15
- How to override: export them in the shell before loadEnv() runs, or set process.env directly.`);}}}f();async function Et(t,e){if(process.env.EASBOT_CLIENT==="acp")try{let l=process.platform==="win32"?"cmd":void 0,y=G.spawn(l,`git ${t.join(" ")}`,{stdin:void 0,stdout:"pipe",stderr:"pipe",cwd:e.cwd,env:e.env?{...process.env,...e.env}:process.env}),[o,u,b]=await Promise.all([y.exited,new Response(y.stdout).arrayBuffer(),new Response(y.stderr).arrayBuffer()]),w=Buffer.from(u),S=Buffer.from(b);return {exitCode:o,text:()=>w.toString(),stdout:w,stderr:S}}catch(l){let y=Buffer.from(l instanceof Error?l.message:String(l));return {exitCode:1,text:()=>"",stdout:Buffer.alloc(0),stderr:y}}let r=e.env?{...process.env,...e.env}:void 0,n=G.$`git ${t.join(" ")}`.quiet().nothrow().cwd(e.cwd);r&&(n=n.env(r));let s=await n;return {exitCode:s.exitCode,text:()=>s.text(),stdout:s.stdout,stderr:s.stderr}}f();function He(t){return t?dirname(fileURLToPath(t)):typeof d$1<"u"?d$1:process.cwd()}function je(t,e,r=3){function n(s,l){if(l>r||!existsSync(s))return null;try{let y=readdirSync(s);for(let o of y){let u=join(s,o);try{let b=statSync(u);if(b.isFile()&&u.endsWith(e))return u;if(b.isDirectory()&&l<r){let w=n(u,l+1);if(w)return w}}catch{}}}catch{}return null}return n(t,0)}function ze(t,e){let r=join(t,e);if(existsSync(r))return r;let n=e.split("/").pop()||e,s=t;for(let l=0;l<5;l++){let y=join(s,"assets","txt");if(existsSync(y)){let b=je(y,n,5);if(b)return b}let o=join(s,"dist","assets","txt");if(existsSync(o)){let b=je(o,n,5);if(b)return b}let u=join(s,"..");if(u===s)break;s=u;}return r}function kt(t,e){return c$1.lazy(()=>{try{let r=He(e),n=ze(r,t);return D.file(n).textSync()}catch(r){throw console.error(`Failed to load text file: ${t}`,r),r}})}function Ot(t,e){return c$1.lazy(async()=>{try{let r=He(e),n=ze(r,t);return await D.file(n).text()}catch(r){throw console.error(`Failed to load text file: ${t}`,r),r}})}f();function vt(t){return t()}f();function _t(t){if(!t||typeof t!="string")return {provider:"",model:""};let e=t.indexOf("/");return e===-1?{provider:"",model:t}:{provider:t.substring(0,e),model:t.substring(e+1)}}f();var Se;($=>{$.FILE_REGEX=/(?<![\w`])#(\S+)/g,$.SHELL_REGEX=/!`([^`]+)`/g;function r(a){return Array.from(a.matchAll($.FILE_REGEX))}$.files=r;function n(a){return Array.from(a.matchAll($.SHELL_REGEX))}$.shell=n;function s(a){if(!a||typeof a!="string")return typeof a=="string"?a:"";let x=a.match(/^---\r?\n([\s\S]*?)\r?\n---/);if(!x)return a;let f=x[0],c=(x[1]??"").split(`
16
- `),p=[];for(let P of c){if(P.trim().startsWith("#")||P.trim()===""){p.push(P);continue}if(P.match(/^\s+/)){p.push(P);continue}let D=P.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\s*:\s*(.*)$/);if(!D){p.push(P);continue}let N=D[1],E=D?.[2]?.trim();if(E===""||E===">"||E==="|"||E?.startsWith('"')||E?.startsWith("'")){p.push(P);continue}if(E?.includes(":")){p.push(`${N}: |-`),p.push(` ${E}`);continue}p.push(P);}let T=p.join(`
17
- `);return a.replace(f,`---
18
- ${T}
19
- ---`)}$.fallbackSanitization=s;function l(a){if(typeof a!="string")return null;if(!a)return {data:{},content:""};try{let x=de(a);return {data:x.data??{},content:x.content??""}}catch{try{let x=de(s(a));return {data:x.data??{},content:x.content??""}}catch{return null}}}async function y(a){let x=await readFile(a,"utf-8"),f=l(x);if(!f){let d=`${a}: Failed to parse YAML frontmatter`;throw new $.FrontmatterError({path:a,message:d},{cause:new Error(d)})}return f}$.parse=y;function o(a){if(!a||typeof a!="string")return {frontmatter:{},content:typeof a=="string"?a:""};let x=l(a);return x?{frontmatter:x.data,content:x.content}:{frontmatter:{},content:a}}$.extractFrontmatter=o;function u(a,x){let f=a??"";return !x||Object.keys(x).length===0?de.stringify(f,void 0):de.stringify(f,x)}$.format=u,$.FrontmatterError=oe.create("ConfigFrontmatterError",z.object({path:z.string(),message:z.string()}));function w(a,x){return S(a,x)}$.replaceVariables=w;function S(a,x){return R(a,x)}$.renderTemplate=S;function R(a,x){let f=a;return f=m(f,x),f=i(f,x),f=C(f,x),f=_(f,x),f=f.replace(/\{\{([^}]*)\}\}/g,(d,c)=>{let p=c.trim();if(!p)return "";let T=pe(p,x);return T!==void 0?String(j(T)):""}),f}function m(a,x){let f=a.replace(/\{\{#if\s+\((eq|ne|gt|lt|gte|lte)\s+([^)]+)\)\}\}([\s\S]*?)\{\{(?:else)\}\}([\s\S]*?)\{\{\/if\}\}/g,(d,c,p,T,P)=>{if(!c||!p||!T||!P)return d;let{a:D,b:N}=A(p,x);return D===void 0||N===void 0?d:I(c,D,N)?T:P});return f=f.replace(/\{\{#if\s+\((eq|ne|gt|lt|gte|lte)\s+([^)]+)\)\}\}([\s\S]*?)\{\{\/if\}\}/g,(d,c,p,T)=>{if(!c||!p||!T)return d;let{a:P,b:D}=A(p,x);return P===void 0||D===void 0?d:I(c,P,D)?T:""}),f}function A(a,x){let f=/"([^"]*)"|(\w+(?:\.\w+|\[\d+\])*)/g,d=[],c;for(;(c=f.exec(a))!==null;)c[1]!==void 0?d.push(c[1]):c[2]!==void 0&&d.push(c[2]);if(d.length<2)return {a:void 0,b:void 0};let p=pe(d[0],x),T=pe(d[1],x);return {a:p,b:T}}function I(a,x,f){switch(a){case "eq":return x===f;case "ne":return x!==f;case "gt":return Number(x)>Number(f);case "lt":return Number(x)<Number(f);case "gte":return Number(x)>=Number(f);case "lte":return Number(x)<=Number(f);default:return false}}function i(a,x){let f=a.replace(/\{\{#unless\s+(\w+)\}\}([\s\S]*?)\{\{(?:else)\}\}([\s\S]*?)\{\{\/unless\}\}/g,(d,c,p,T)=>{if(!c||!p||!T)return d;let P=x[c];return h(P)?p:T});return f=f.replace(/\{\{#unless\s+(\w+)\}\}([\s\S]*?)\{\{\/unless\}\}/g,(d,c,p)=>{if(!c||!p)return d;let T=x[c];return h(T)?p:""}),f}function h(a){return a==null||a===false||a===""}function _(a,x){let f=a.replace(/\{\{#if\s+(\w+)\}\}([\s\S]*?)\{\{(?:else)\}\}([\s\S]*?)\{\{\/if\}\}/g,(d,c,p,T)=>{if(!c||!p||!T)return d;let P=c in x?x[c]:void 0;return h(P)?T:p});return f=f.replace(/\{\{#if\s+(\w+)\}\}([\s\S]*?)\{\{\/if\}\}/g,(d,c,p)=>{if(!c||!p)return d;let T=c in x?x[c]:void 0;return h(T)?"":p}),f}function C(a,x){let f=a.match(/\{\{#each\s+([\w.]+)\}\}/);if(!f?.[1])return a;let d=f[1],c=pe(d,x),p=f[0],T=f.index,P=a.slice(T+p.length),D;if(Array.isArray(c))D=c.map((B,z)=>({key:String(z),value:B}));else if(c!==null&&typeof c=="object")D=Object.entries(c).map(([B,z])=>({key:B,value:z}));else return U(a,T,p,P);let N=1,E=-1,F=/\{\{#each\s+[\w.]+\}\}|\{\{\/each\}\}/g,k;for(F.lastIndex=0;(k=F.exec(P))!==null;)if(k[0].startsWith("{{#each"))N++;else if(N--,N===0){E=k.index;break}if(E===-1)return a;let H=P.slice(0,E),V=a.slice(T,T+p.length+E+"{{/each}}".length);if(D.length===0)return a.replace(V,"");let M=D.map(({key:B,value:z},J)=>{let L={...x};return typeof z=="object"&&z!==null?(Object.assign(L,z),L.this=z,L["@value"]=z,L["@index"]=J,L["@key"]=B):(L.this=z,L["@value"]=z,L["@index"]=J,L["@key"]=B),R(H,L)});return a.replace(V,M.join(""))}function U(a,x,f,d,c){let p=/\{\{#each\s+[\w.]+\}\}|\{\{\/each\}\}/g,T=1,P=-1,D;for(p.lastIndex=0;(D=p.exec(d))!==null;)if(D[0].startsWith("{{#each"))T++;else if(T--,T===0){P=D.index;break}if(P===-1)return a;let E=a.slice(x,x+f.length+P+"{{/each}}".length);return a.replace(E,"")}function j(a){return a instanceof Date?b$1(a):Array.isArray(a)?a.map(j).join(", "):a!==null&&typeof a=="object"?JSON.stringify(a,null,2):String(a)}$.formatVariableValue=j;})(Se||(Se={}));function pe(t,e){let r=/(@\w+)|(\w+)|\[(\d+)\]/g,n=e,s;for(;(s=r.exec(t))!==null;){if(n==null)return;if(s[1]!==void 0){let l=s[1];n=e[l];}else if(s[2]!==void 0){let l=s[2];if(typeof n=="object"&&n!==null)n=n[l];else return}else if(s[3]!==void 0){let l=Number(s[3]);if(Array.isArray(n)&&l>=0&&l<n.length)n=n[l];else return}}return n}f();function Ue(t){if(!t)return "";let r=t.replace(/[/\\]+$/,"").split(/[/\\]/);return r[r.length-1]??""}function Dt(t){if(!t)return "";let r=t.replace(/[/\\]+$/,"").split(/[/\\]/);return r.slice(0,r.length-1).join("/")+"/"}function It(t){if(!t)return "";let e=t.split(".");return e[e.length-1]}function Nt(t,e=20){let r=Ue(t);if(r.length<=e)return r;let n=r.lastIndexOf("."),s=n<=0?"":r.slice(n),l=e-s.length-1;return l<=0?r.slice(0,e-1)+"\u2026":r.slice(0,l)+"\u2026"+s}function Ft(t,e=20){if(t.length<=e)return t;let r=e-1,n=Math.ceil(r/2),s=Math.floor(r/2);return t.slice(0,n)+"\u2026"+t.slice(-s)}f();var Lt=["load failed","network connection was lost","network request failed","failed to fetch","econnreset","econnrefused","etimedout","socket hang up"];function Ct(t){if(!t)return false;let e=String(t instanceof Error?t.message:t).toLowerCase();return Lt.some(r=>e.includes(r))}async function Ae(t,e={}){let{attempts:r=3,delay:n=500,factor:s=2,maxDelay:l=1e4,retryIf:y=Ct}=e,o;for(let u=0;u<r;u++)try{return await t()}catch(b){if(o=b,u===r-1||!y(b))throw b;let w=Math.min(n*s**u,l);await new Promise(S=>setTimeout(S,w));}throw o}f();var ke;(f=>{let t=m.create({service:"fetch"}),e=["HTTP_PROXY","HTTPS_PROXY","http_proxy","https_proxy"],r=false,n=null;function s(){return e.some(d=>{let c=process.env[d];return typeof c=="string"&&c.trim().length>0})}f.hasProxyConfigured=s;function l(){let d=process.env.http_proxy||process.env.HTTP_PROXY;return process.env.https_proxy||process.env.HTTPS_PROXY||d}f.getProxyUrl=l;function y(d={}){let c=d.httpProxy||d.httpsProxy||l();if(!c){t.warn("[Fetch] No proxy configured, HTTP_PROXY/HTTPS_PROXY environment variables not set");return}let p=new ProxyAgent({uri:c,connectTimeout:d.connectTimeout||1e4,keepAliveTimeout:d.keepAliveTimeout||3e4});n=getGlobalDispatcher(),setGlobalDispatcher(p),r=true,t.info(`[Fetch] Global proxy enabled: ${c}`);}f.enableProxy=y;function o(){!r||!n||(setGlobalDispatcher(n),r=false,n=null,t.info("[Fetch] \u5168\u5C40\u4EE3\u7406\u5DF2\u7981\u7528"));}f.disableProxy=o;function u(){return r}f.isProxyEnabled=u;async function b(d,c){let p=c?.timeout||3e4,T=c?.responseType||"json",{timeout:P,responseType:D,...N}=c||{},E=null,F=null;try{N.signal||(E=new AbortController,F=setTimeout(()=>E.abort(),p));let k=await fetch(d,{...N,signal:N.signal||E.signal});F&&clearTimeout(F);let H;switch(T){case "arrayBuffer":H=await k.arrayBuffer();break;case "blob":H=await k.blob();break;case "buffer":{let W=await k.arrayBuffer();H=Buffer.from(W);break}case "text":H=await k.text();break;default:{let W=await k.text();try{H=JSON.parse(W);}catch{H=W;}break}}return {ok:k.ok,status:k.status,statusText:k.statusText,headers:k.headers,data:H,url:k.url}}catch(k){throw F&&clearTimeout(F),k}}async function w(d,c){let p=c?.retries??0,T=c?.retryDelay??1e3,{retries:P,retryDelay:D,responseType:N,...E}=c||{};return Ae(()=>b(d,{...E,responseType:c?.responseType}),{attempts:p+1,delay:T,maxDelay:T*2**(p+1)})}async function S(d,c){return w(d,{method:"GET",...c})}f.get=S;async function R(d,c,p){return w(d,{method:"POST",headers:{"Content-Type":"application/json",...p?.headers},body:c?JSON.stringify(c):void 0,...p})}f.post=R;async function m$1(d,c,p){return w(d,{method:"PUT",headers:{"Content-Type":"application/json",...p?.headers},body:c?JSON.stringify(c):void 0,...p})}f.put=m$1;async function A(d,c,p){return w(d,{method:"DELETE",headers:{"Content-Type":"application/json",...p?.headers},body:c?JSON.stringify(c):void 0,...p})}f.del=A;async function I(d,c,p){return w(d,{method:"PATCH",headers:{"Content-Type":"application/json",...p?.headers},body:c?JSON.stringify(c):void 0,...p})}f.patch=I;async function i(d,c){return w(d,c)}f.request=i;function h(d={}){return s()?(y(d),true):false}f.autoProxy=h;let _=5*1024*1024;function C(d){return new TextEncoder().encode(d)}function U(d$1){return d.mimeType(d$1)}function j(d){return d.startsWith("file://")}async function $(d){let c=fileURLToPath(d);return await D.file(c).bytes()}async function a(d,c,p){let T=`----FetchFormBoundary${Date.now()}`,P=[],N=c.some(M=>M.filename||M.value instanceof Uint8Array||Buffer.isBuffer(M.value))&&!p?.timeout?3e5:p?.timeout;for(let M of c){let B=M.maxSize??_,z=M.filename,J=`Content-Disposition: form-data; name="${M.name}"${z?`; filename="${z}"`:""}`;z&&(J+=`\r
20
- Content-Type: ${U(z)}`),J+=`\r
15
+ How to override: export them in the shell before loadEnv() runs, or set process.env directly.`);}}}f();async function At(r,t){if(process.env.EASBOT_CLIENT==="acp")try{let c=process.platform==="win32"?"cmd":void 0,g=G.spawn(c,`git ${r.join(" ")}`,{stdin:void 0,stdout:"pipe",stderr:"pipe",cwd:t.cwd,env:t.env?{...process.env,...t.env}:process.env}),[i,d,x]=await Promise.all([g.exited,new Response(g.stdout).arrayBuffer(),new Response(g.stderr).arrayBuffer()]),w=Buffer.from(d),A=Buffer.from(x);return {exitCode:i,text:()=>w.toString(),stdout:w,stderr:A}}catch(c){let g=Buffer.from(c instanceof Error?c.message:String(c));return {exitCode:1,text:()=>"",stdout:Buffer.alloc(0),stderr:g}}let n=t.env?{...process.env,...t.env}:void 0,o=G.$`git ${r.join(" ")}`.quiet().nothrow().cwd(t.cwd);n&&(o=o.env(n));let a=await o;return {exitCode:a.exitCode,text:()=>a.text(),stdout:a.stdout,stderr:a.stderr}}f();function He(r){return r?dirname(fileURLToPath(r)):typeof d$1<"u"?d$1:process.cwd()}function Be(r,t,n=3){function o(a,c){if(c>n||!existsSync(a))return null;try{let g=readdirSync(a);for(let i of g){let d=join(a,i);try{let x=statSync(d);if(x.isFile()&&d.endsWith(t))return d;if(x.isDirectory()&&c<n){let w=o(d,c+1);if(w)return w}}catch{}}}catch{}return null}return o(r,0)}function Ue(r,t){let n=join(r,t);if(existsSync(n))return n;let o=t.split("/").pop()||t,a=r;for(let c=0;c<5;c++){let g=join(a,"assets","txt");if(existsSync(g)){let x=Be(g,o,5);if(x)return x}let i=join(a,"dist","assets","txt");if(existsSync(i)){let x=Be(i,o,5);if(x)return x}let d=join(a,"..");if(d===a)break;a=d;}return n}function vt(r,t){return c$1.lazy(()=>{try{let n=He(t),o=Ue(n,r);return D.file(o).textSync()}catch(n){throw console.error(`Failed to load text file: ${r}`,n),n}})}function $t(r,t){return c$1.lazy(async()=>{try{let n=He(t),o=Ue(n,r);return await D.file(o).text()}catch(n){throw console.error(`Failed to load text file: ${r}`,n),n}})}f();function It(r){return r()}f();function _t(r){if(!r||typeof r!="string")return {provider:"",model:""};let t=r.indexOf("/");return t===-1?{provider:"",model:r}:{provider:r.substring(0,t),model:r.substring(t+1)}}f();var Se;(W=>{W.FILE_REGEX=/(?<![\w`])#(\S+)/g,W.SHELL_REGEX=/!`([^`]+)`/g;function n(e){return Array.from(e.matchAll(W.FILE_REGEX))}W.files=n;function o(e){return Array.from(e.matchAll(W.SHELL_REGEX))}W.shell=o;function a(e){if(!e||typeof e!="string")return typeof e=="string"?e:"";let s=e.match(/^---\r?\n([\s\S]*?)\r?\n---/);if(!s)return e;let f=s[0],l=(s[1]??"").split(`
16
+ `),p=[];for(let b of l){if(b.trim().startsWith("#")||b.trim()===""){p.push(b);continue}if(b.match(/^\s+/)){p.push(b);continue}let D=b.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\s*:\s*(.*)$/);if(!D){p.push(b);continue}let E=D[1],k=D?.[2]?.trim();if(k===""||k===">"||k==="|"||k?.startsWith('"')||k?.startsWith("'")){p.push(b);continue}if(k?.includes(":")){p.push(`${E}: |-`),p.push(` ${k}`);continue}p.push(b);}let y=p.join(`
17
+ `);return e.replace(f,`---
18
+ ${y}
19
+ ---`)}W.fallbackSanitization=a;function c(e){if(typeof e!="string")return null;if(!e)return {data:{},content:""};try{let s=pe(e);return {data:s.data??{},content:s.content??""}}catch{try{let s=pe(a(e));return {data:s.data??{},content:s.content??""}}catch{return null}}}async function g(e){let s=await readFile(e,"utf-8"),f=c(s);if(!f){let u=`${e}: Failed to parse YAML frontmatter`;throw new W.FrontmatterError({path:e,message:u},{cause:new Error(u)})}return f}W.parse=g;function i(e){if(!e||typeof e!="string")return {frontmatter:{},content:typeof e=="string"?e:""};let s=c(e);return s?{frontmatter:s.data,content:s.content}:{frontmatter:{},content:e}}W.extractFrontmatter=i;function d(e,s){let f=e??"";return !s||Object.keys(s).length===0?pe.stringify(f,void 0):pe.stringify(f,s)}W.format=d,W.FrontmatterError=se.create("ConfigFrontmatterError",z.object({path:z.string(),message:z.string()}));function w(e,s){return A(e,s)}W.replaceVariables=w;function A(e,s){return T(e,s)}W.renderTemplate=A;function T(e,s){let f=e;return f=h(f,s),f=L(f,s),f=U(f,s),f=X(f,s),f=f.replace(/\{\{([^}]*)\}\}/g,(u,l)=>{let p=l.trim();if(!p)return "";let y=ge(p,s);return y!==void 0?String(J(y)):""}),f}function h(e,s){let f=e.replace(/\{\{#if\s+\((eq|ne|gt|lt|gte|lte)\s+([^)]+)\)\}\}([\s\S]*?)\{\{(?:else)\}\}([\s\S]*?)\{\{\/if\}\}/g,(u,l,p,y,b)=>{if(!l||!p||!y||!b)return u;let{a:D,b:E}=R(p,s);return D===void 0||E===void 0?u:F(l,D,E)?y:b});return f=f.replace(/\{\{#if\s+\((eq|ne|gt|lt|gte|lte)\s+([^)]+)\)\}\}([\s\S]*?)\{\{\/if\}\}/g,(u,l,p,y)=>{if(!l||!p||!y)return u;let{a:b,b:D}=R(p,s);return b===void 0||D===void 0?u:F(l,b,D)?y:""}),f}function R(e,s){let f=/"([^"]*)"|(\w+(?:\.\w+|\[\d+\])*)/g,u=[],l;for(;(l=f.exec(e))!==null;)l[1]!==void 0?u.push(l[1]):l[2]!==void 0&&u.push(l[2]);if(u.length<2)return {a:void 0,b:void 0};let p=ge(u[0],s),y=ge(u[1],s);return {a:p,b:y}}function F(e,s,f){switch(e){case "eq":return s===f;case "ne":return s!==f;case "gt":return Number(s)>Number(f);case "lt":return Number(s)<Number(f);case "gte":return Number(s)>=Number(f);case "lte":return Number(s)<=Number(f);default:return false}}function L(e,s){let f=e.replace(/\{\{#unless\s+(\w+)\}\}([\s\S]*?)\{\{(?:else)\}\}([\s\S]*?)\{\{\/unless\}\}/g,(u,l,p,y)=>{if(!l||!p||!y)return u;let b=s[l];return M(b)?p:y});return f=f.replace(/\{\{#unless\s+(\w+)\}\}([\s\S]*?)\{\{\/unless\}\}/g,(u,l,p)=>{if(!l||!p)return u;let y=s[l];return M(y)?p:""}),f}function M(e){return e==null||e===false||e===""}function X(e,s){let f=e.replace(/\{\{#if\s+(\w+)\}\}([\s\S]*?)\{\{(?:else)\}\}([\s\S]*?)\{\{\/if\}\}/g,(u,l,p,y)=>{if(!l||!p||!y)return u;let b=l in s?s[l]:void 0;return M(b)?y:p});return f=f.replace(/\{\{#if\s+(\w+)\}\}([\s\S]*?)\{\{\/if\}\}/g,(u,l,p)=>{if(!l||!p)return u;let y=l in s?s[l]:void 0;return M(y)?"":p}),f}function U(e,s){let f=e.match(/\{\{#each\s+([\w.]+)\}\}/);if(!f?.[1])return e;let u=f[1],l=ge(u,s),p=f[0],y=f.index,b=e.slice(y+p.length),D;if(Array.isArray(l))D=l.map((P,O)=>({key:String(O),value:P}));else if(l!==null&&typeof l=="object")D=Object.entries(l).map(([P,O])=>({key:P,value:O}));else return V(e,y,p,b);let E=1,k=-1,v=/\{\{#each\s+[\w.]+\}\}|\{\{\/each\}\}/g,_;for(v.lastIndex=0;(_=v.exec(b))!==null;)if(_[0].startsWith("{{#each"))E++;else if(E--,E===0){k=_.index;break}if(k===-1)return e;let C=b.slice(0,k),H=e.slice(y,y+p.length+k+"{{/each}}".length);if(D.length===0)return e.replace(H,"");let $=D.map(({key:P,value:O},z)=>{let N={...s};return typeof O=="object"&&O!==null?(Object.assign(N,O),N.this=O,N["@value"]=O,N["@index"]=z,N["@key"]=P):(N.this=O,N["@value"]=O,N["@index"]=z,N["@key"]=P),T(C,N)});return e.replace(H,$.join(""))}function V(e,s,f,u,l){let p=/\{\{#each\s+[\w.]+\}\}|\{\{\/each\}\}/g,y=1,b=-1,D;for(p.lastIndex=0;(D=p.exec(u))!==null;)if(D[0].startsWith("{{#each"))y++;else if(y--,y===0){b=D.index;break}if(b===-1)return e;let k=e.slice(s,s+f.length+b+"{{/each}}".length);return e.replace(k,"")}function J(e){return e instanceof Date?b$1(e):Array.isArray(e)?e.map(J).join(", "):e!==null&&typeof e=="object"?JSON.stringify(e,null,2):String(e)}W.formatVariableValue=J;})(Se||(Se={}));function ge(r,t){let n=/(@\w+)|(\w+)|\[(\d+)\]/g,o=t,a;for(;(a=n.exec(r))!==null;){if(o==null)return;if(a[1]!==void 0){let c=a[1];o=t[c];}else if(a[2]!==void 0){let c=a[2];if(typeof o=="object"&&o!==null)o=o[c];else return}else if(a[3]!==void 0){let c=Number(a[3]);if(Array.isArray(o)&&c>=0&&c<o.length)o=o[c];else return}}return o}f();function Ge(r){if(!r)return "";let n=r.replace(/[/\\]+$/,"").split(/[/\\]/);return n[n.length-1]??""}function Nt(r){if(!r)return "";let n=r.replace(/[/\\]+$/,"").split(/[/\\]/);return n.slice(0,n.length-1).join("/")+"/"}function Ft(r){if(!r)return "";let t=r.split(".");return t[t.length-1]}function Lt(r,t=20){let n=Ge(r);if(n.length<=t)return n;let o=n.lastIndexOf("."),a=o<=0?"":n.slice(o),c=t-a.length-1;return c<=0?n.slice(0,t-1)+"\u2026":n.slice(0,c)+"\u2026"+a}function Ct(r,t=20){if(r.length<=t)return r;let n=t-1,o=Math.ceil(n/2),a=Math.floor(n/2);return r.slice(0,o)+"\u2026"+r.slice(-a)}f();var Mt=["load failed","network connection was lost","network request failed","failed to fetch","econnreset","econnrefused","etimedout","socket hang up"];function zt(r){if(!r)return false;let t=String(r instanceof Error?r.message:r).toLowerCase();return Mt.some(n=>t.includes(n))}async function ke(r,t={}){let{attempts:n=3,delay:o=500,factor:a=2,maxDelay:c=1e4,retryIf:g=zt}=t,i;for(let d=0;d<n;d++)try{return await r()}catch(x){if(i=x,d===n-1||!g(x))throw x;let w=Math.min(o*a**d,c);await new Promise(A=>setTimeout(A,w));}throw i}f();var Oe;(f=>{let r=m.create({service:"fetch"}),t=["HTTP_PROXY","HTTPS_PROXY","http_proxy","https_proxy"],n=false,o=null;function a(){return t.some(u=>{let l=process.env[u];return typeof l=="string"&&l.trim().length>0})}f.hasProxyConfigured=a;function c(){let u=process.env.http_proxy||process.env.HTTP_PROXY;return process.env.https_proxy||process.env.HTTPS_PROXY||u}f.getProxyUrl=c;function g(u={}){let l=u.httpProxy||u.httpsProxy||c();if(!l){r.warn("[Fetch] No proxy configured, HTTP_PROXY/HTTPS_PROXY environment variables not set");return}let p=new ProxyAgent({uri:l,connectTimeout:u.connectTimeout||1e4,keepAliveTimeout:u.keepAliveTimeout||3e4});o=getGlobalDispatcher(),setGlobalDispatcher(p),n=true,r.info(`[Fetch] Global proxy enabled: ${l}`);}f.enableProxy=g;function i(){!n||!o||(setGlobalDispatcher(o),n=false,o=null,r.info("[Fetch] \u5168\u5C40\u4EE3\u7406\u5DF2\u7981\u7528"));}f.disableProxy=i;function d$1(){return n}f.isProxyEnabled=d$1;async function x(u,l){let p=l?.timeout||3e4,y=l?.responseType||"json",{timeout:b,responseType:D,...E}=l||{},k=null,v=null;try{E.signal||(k=new AbortController,v=setTimeout(()=>k.abort(),p));let _=await fetch(u,{...E,signal:E.signal||k.signal});v&&clearTimeout(v);let C;switch(y){case "arrayBuffer":C=await _.arrayBuffer();break;case "blob":C=await _.blob();break;case "buffer":{let B=await _.arrayBuffer();C=Buffer.from(B);break}case "text":C=await _.text();break;default:{let B=await _.text();try{C=JSON.parse(B);}catch{C=B;}break}}return {ok:_.ok,status:_.status,statusText:_.statusText,headers:_.headers,data:C,url:_.url}}catch(_){throw v&&clearTimeout(v),_}}async function w(u,l){let p=l?.retries??0,y=l?.retryDelay??1e3,{retries:b,retryDelay:D,responseType:E,...k}=l||{};return ke(()=>x(u,{...k,responseType:l?.responseType}),{attempts:p+1,delay:y,maxDelay:y*2**(p+1)})}async function A(u,l){return w(u,{method:"GET",...l})}f.get=A;async function T(u,l,p){return w(u,{method:"POST",headers:{"Content-Type":"application/json",...p?.headers},body:l?JSON.stringify(l):void 0,...p})}f.post=T;async function h(u,l,p){return w(u,{method:"PUT",headers:{"Content-Type":"application/json",...p?.headers},body:l?JSON.stringify(l):void 0,...p})}f.put=h;async function R(u,l,p){return w(u,{method:"DELETE",headers:{"Content-Type":"application/json",...p?.headers},body:l?JSON.stringify(l):void 0,...p})}f.del=R;async function F(u,l,p){return w(u,{method:"PATCH",headers:{"Content-Type":"application/json",...p?.headers},body:l?JSON.stringify(l):void 0,...p})}f.patch=F;async function L(u,l){return w(u,l)}f.request=L;function M(u={}){return a()?(g(u),true):false}f.autoProxy=M;let X=5*1024*1024;function U(u){return new TextEncoder().encode(u)}function V(u){return d.mimeType(u)}function J(u){return u.startsWith("file://")}async function W(u){let l=fileURLToPath(u);return await D.file(l).bytes()}async function e(u,l,p){let y=`----FetchFormBoundary${Date.now()}`,b=[],E=l.some($=>$.filename||$.value instanceof Uint8Array||Buffer.isBuffer($.value))&&!p?.timeout?3e5:p?.timeout;for(let $ of l){let P=$.maxSize??X,O=$.filename,z=`Content-Disposition: form-data; name="${$.name}"${O?`; filename="${O}"`:""}`;O&&(z+=`\r
20
+ Content-Type: ${V(O)}`),z+=`\r
21
21
  \r
22
- `,P.push(C(J));let L=M.value;if(typeof L=="string")if(j(L)){let ge=await $(L);if(z||(z=L.split("/").pop()||"file"),ge.byteLength>B)throw new Error(`File size ${ge.byteLength} exceeds limit ${B} bytes: ${z}`);P.push(ge);}else P.push(C(L));else if(Buffer.isBuffer(L)){if(L.byteLength>B)throw new Error(`Buffer size ${L.byteLength} exceeds limit ${B} bytes: ${M.name}`);P.push(new Uint8Array(L.buffer,L.byteOffset,L.byteLength));}else if(L instanceof Uint8Array){if(L.byteLength>B)throw new Error(`File size ${L.byteLength} exceeds limit ${B} bytes: ${M.name}`);P.push(L);}}let E=C(`\r
23
- --${T}--`),F=C(`\r
24
- --${T}\r
25
- `),k=[];k.push(C(`--${T}\r
26
- `));for(let M=0;M<P.length;M++)k.push(P[M]),M%2===1&&M<P.length-1&&(k.push(F),k.push(C(`--${T}\r
27
- `)));k.push(E);let H=k.reduce((M,B)=>M+B.length,0),W=new Uint8Array(H),V=0;for(let M of k)W.set(M,V),V+=M.length;return w(d,{method:"POST",headers:{"Content-Type":`multipart/form-data; boundary=${T}`,...p?.headers},body:W,timeout:N,...p})}f.postForm=a;function x(d,c,p){let T=new AbortController,P=T.signal;return (async()=>{try{let N={Accept:"text/event-stream",...p?.headers||{}},E=await fetch(d,{...p,headers:N,signal:P});if(!E.ok)throw new Error(`SSE connection failed: ${E.status}`);let F=E.body?.getReader();if(!F)throw new Error("SSE stream not available");let k=new TextDecoder("utf-8"),H="";for(;!P.aborted;){let{done:W,value:V}=await F.read();if(W)break;let M=k.decode(V,{stream:!0});H+=M;let B=H.split(`
28
- `);H=B.pop()??"";for(let z of B)if(z.startsWith("data: ")){let J=z.slice(6);if(J==="[DONE]"){c.onComplete?.();return}c.onMessage?.(J);}}c.onComplete?.();}catch(N){N.name!=="AbortError"&&c.onError?.(N);}})(),()=>{T.abort();}}f.sse=x;})(ke||(ke={}));f();var Oe;(n=>{let t=["brave","calm","clever","cosmic","crisp","curious","eager","gentle","glowing","happy","hidden","jolly","kind","lucky","mighty","misty","neon","nimble","playful","proud","quick","quiet","shiny","silent","stellar","sunny","swift","tidy","witty"],e=["cabin","cactus","canyon","circuit","comet","eagle","engine","falcon","forest","garden","harbor","island","knight","lagoon","meadow","moon","mountain","nebula","orchid","otter","panda","pixel","planet","river","rocket","sailor","squid","star","tiger","wizard","wolf"];function r(){return [t[Math.floor(Math.random()*t.length)],e[Math.floor(Math.random()*e.length)]].join("-")}n.create=r;})(Oe||(Oe={}));f();function Ge(t){let e=new AbortController,r=setTimeout(e.abort.bind(e),t);return {controller:e,signal:e.signal,clearTimeout:()=>globalThis.clearTimeout(r)}}function zt(t,...e){let r=Ge(t);return {signal:AbortSignal.any([r.signal,...e]),clearTimeout:r.clearTimeout}}f();var ve;(e=>{async function t(r,n){if(process.platform==="win32"){let s=Pe.resolve(r),l=Pe.resolve(n),y=`Expand-Archive -Path '${s}' -DestinationPath '${l}' -Force`,o=await G.run("powershell",`-NoProfile -NonInteractive -Command "$global:ProgressPreference = 'SilentlyContinue'; ${y}"`);if(o.code!==0)throw new Error(`PowerShell exited with code ${o.code}: ${o.stderr}`)}else {let s=`unzip -o -q ${r} -d ${n}`,l=await G.run(void 0,s);if(l.code!==0)throw new Error(`unzip exited with code ${l.code}: ${l.stderr}`)}}e.extractZip=t;})(ve||(ve={}));f();var _e;(n=>{function t(s){return s?/^#[0-9a-fA-F]{6}$/.test(s):false}n.isValidHex=t;function e(s){let l=parseInt(s.slice(1,3),16),y=parseInt(s.slice(3,5),16),o=parseInt(s.slice(5,7),16);return {r:l,g:y,b:o}}n.hexToRgb=e;function r(s){if(!t(s))return;let{r:l,g:y,b:o}=e(s);return `\x1B[38;2;${l};${y};${o}m\x1B[1m`}n.hexToAnsiBold=r;})(_e||(_e={}));f();var $e;(r=>{class t extends Error{constructor(l){super(`No context found for ${l}`);c(this,"name",l);}}r.NotFound=t;function e(n){let s=new AsyncLocalStorage;return {use(){let l=s.getStore();if(!l)throw new t(n);return l},provide(l,y){return s.run(l,y)}}}r.create=e;})($e||($e={}));f();function Bt(t){return {[Symbol.dispose](){t();},[Symbol.asyncDispose](){return Promise.resolve(t())}}}f();var De;(e=>{async function t(){return new Promise(r=>{let n=()=>{process._getActiveHandles().length===0&&process._getActiveRequests().length===0?r():setImmediate(n);};n();})}e.wait=t;})(De||(De={}));f();function Gt(t){if(t<=0)return "";if(t<60)return `${t}s`;if(t<3600){let r=Math.floor(t/60),n=t%60;return n>0?`${r}m ${n}s`:`${r}m`}if(t<86400){let r=Math.floor(t/3600),n=Math.floor(t%3600/60);return n>0?`${r}h ${n}m`:`${r}h`}if(t<604800){let r=Math.floor(t/86400);return r===1?"~1 day":`~${r} days`}let e=Math.floor(t/604800);return e===1?"~1 week":`~${e} weeks`}f();var Ie;(I=>{let t=m.create({service:"grep"});async function e(){return r()}I.filepath=e;let r=b(async()=>{let i=await D.which("rg");if(!i)return null;try{if(!(await ie.stat(i)).isFile())return null}catch{return null}try{let h=await D.run([i,"--version"],{timeout:5e3});if(h.code!==0||!h.stdout.startsWith("ripgrep "))return t.warn("rg failed self-test, falling back to pure JS",{filepath:i,code:h.code,stderr:h.stderr.slice(0,200)}),null}catch(h){return t.warn("rg spawn failed during self-test, falling back to pure JS",{filepath:i,error:h.message.slice(0,200)}),null}return i});async function n(){return await e()!==null}I.isUsingRipgrep=n;async function*s(i){i.signal?.throwIfAborted();let h=await e();h?yield*l(h,i):(t.debug("ripgrep not available, using pure JS fallback for files()",{cwd:i.cwd}),yield*y(i));}I.files=s;async function*l(i,h){h.signal?.throwIfAborted();let _=["--files","--glob=!.git/*"];h.follow&&_.push("--follow");let C=h.hidden!==false;if(h.maxDepth!==void 0&&_.push(`--max-depth=${h.maxDepth}`),h.glob)for(let $ of h.glob)_.push(`--glob=${$}`);try{if(!(await ie.stat(h.cwd)).isDirectory())throw Object.assign(new Error(`Not a directory: '${h.cwd}'`),{code:"ENOTDIR",errno:-20,path:h.cwd})}catch($){throw $.code==="ENOENT"?Object.assign(new Error(`No such file or directory: '${h.cwd}'`),{code:"ENOENT",errno:-2,path:h.cwd}):$}let U=await D.run([i,..._],{cwd:h.cwd});if(U.code!==0&&U.code!==1)return;let j=U.stdout.split(/\r?\n/);for(let $ of j){h.signal?.throwIfAborted();let a=$.trim();if(!a)continue;let x=d.toUnixPath(a);!C&&x.split("/").some(f=>f.startsWith("."))||(yield x);}}async function*y(i){i.signal?.throwIfAborted();try{if(!(await ie.stat(i.cwd)).isDirectory())throw Object.assign(new Error(`Not a directory: '${i.cwd}'`),{code:"ENOTDIR",errno:-20,path:i.cwd})}catch(f){throw f.code==="ENOENT"?Object.assign(new Error(`No such file or directory: '${i.cwd}'`),{code:"ENOENT",errno:-2,path:i.cwd}):f}let h=[],_=[];if(i.glob)for(let f of i.glob)f.startsWith("!")?_.push(f.slice(1)):h.push(f);let C=h.length>0?h:["**/*"],U=i.hidden!==false,j=new Set,$=b$2.DEFAULT_MAX_DEPTH,a;i.maxDepth===void 0?a=$:i.maxDepth<0?a=1:a=i.maxDepth+1;let x=Math.min(Math.max(a,1),$);for(let f of C){i.signal?.throwIfAborted();let d=await b$2.scan(f,{cwd:i.cwd,absolute:false,include:"file",dot:U,symlink:i.follow??false,maxDepth:x,ignore:_});for(let c of d)!U&&c.split("/").some(p=>p.startsWith("."))||j.add(c);}for(let f of Array.from(j).sort())i.signal?.throwIfAborted(),yield f;i.signal?.throwIfAborted();}async function o(i){t.debug("tree",{cwd:i.cwd}),i.signal?.throwIfAborted();let h=i.hidden!==false,_=i.glob??[],C=_.filter(E=>!E.startsWith("!")),U=_.filter(E=>E.startsWith("!")).map(E=>E.slice(1)),j=C.length>0?C:["**/*"],$=new Set,a=[];for(let E of j){i.signal?.throwIfAborted();let F=await b$2.scan(E,{cwd:i.cwd,absolute:false,include:"file",dot:h,symlink:false,maxDepth:b$2.DEFAULT_MAX_DEPTH});for(let k of F)$.has(k)||($.add(k),a.push(k));}let x=a.filter(E=>{for(let F of U)if(b$2.match(F,E))return false;return true});function f(E,F){let k=E.children.get(F);if(k)return k;let H={name:F,children:new Map};return E.children.set(F,H),H}let d={children:new Map};for(let E of x){let F=E.split("/");if(F.length<2)continue;let k=d;for(let H of F.slice(0,-1))k=f(k,H);}let c=Array.from(d.children.values()).sort((E,F)=>E.name.localeCompare(F.name)),p=i.limit??Number.POSITIVE_INFINITY,T=[],P=c.map(E=>({node:E,path:E.name})),D=0,N=0;for(;P.length>0;){let E=P.shift();if(!E)break;if(D++,N<p){T.push(E.path),N++;for(let F of Array.from(E.node.children.values()).sort((k,H)=>k.name.localeCompare(H.name))){if(N>=p)break;P.push({node:F,path:`${E.path}/${F.name}`});}}}return D>N&&T.push(`[${N}/${D} shown, ${D-N} truncated]`),T.join(`
29
- `)}I.tree=o;async function u(i){let h=await e();return h?b$1(h,i):(t.debug("ripgrep not available, using pure JS fallback for search()",{cwd:i.cwd,pattern:i.pattern}),w(i))}I.search=u;async function b$1(i,h){let _=["--json","--glob=!.git/*"];if(h.follow&&_.push("--follow"),h.glob)for(let a of h.glob)_.push(`--glob=${a}`);h.limit&&_.push(`--max-count=${h.limit}`),_.push("--"),_.push(h.pattern);let C=await D.run([i,..._],{cwd:h.cwd});if(C.code!==0)return [];let U=h.hidden!==false,j=C.stdout.split(/\r?\n/).filter(Boolean),$=[];for(let a of j)try{let x=JSON.parse(a);if(x?.type!=="match")continue;let f=x.data;if(!f?.path?.text||!f?.lines?.text)continue;let d$1=d.toUnixPath(f.path.text);if(!U&&d$1.split("/").some(c=>c.startsWith(".")))continue;if($.push({path:d$1,lines:f.lines.text,line_number:f.line_number,absolute_offset:f.absolute_offset??0}),h.limit&&$.length>=h.limit)break}catch{}return $}async function w(i){let h;try{h=new RegExp(i.pattern);}catch{return []}try{if(!(await ie.stat(i.cwd)).isDirectory())throw Object.assign(new Error(`Not a directory: '${i.cwd}'`),{code:"ENOTDIR",errno:-20,path:i.cwd})}catch(f){throw f.code==="ENOENT"?Object.assign(new Error(`No such file or directory: '${i.cwd}'`),{code:"ENOENT",errno:-2,path:i.cwd}):f}let _=[],C=[];if(i.glob)for(let f of i.glob)f.startsWith("!")?C.push(f.slice(1)):_.push(f);let U=i.hidden!==false,j=[],$=_.length>0?_:["**/*"],a=new Set,x=[];for(let f of $){i.signal?.throwIfAborted();let d=await b$2.scan(f,{cwd:i.cwd,absolute:false,include:"file",dot:U,symlink:i.follow??false,maxDepth:void 0,ignore:C});for(let c of d)a.has(c)||(a.add(c),x.push(c));}for(let f of x){if(i.signal?.throwIfAborted(),i.limit&&j.length>=i.limit)break;let d$1=d.join(i.cwd,f),c;try{c=await ie.readFile(d$1,"utf-8");}catch{continue}let p=c.split(/\r?\n/),T=0;for(let P=0;P<p.length;P++){let D=p[P]??"";if(h.test(D)&&(j.push({path:f,lines:D,line_number:P+1,absolute_offset:T}),i.limit&&j.length>=i.limit))break;T+=Buffer.byteLength(D,"utf-8")+1;}}return j}function S(i,h){return a$1.match(i,h)}I.match=S;let R=a(async()=>await e());async function m$1(){return await R()}I.filepathCached=m$1,I._ready=a(async()=>{let i=await e();return t.debug("Grep initialized",{ripgrep:i?"available":"fallback (pure JS)"}),i});})(Ie||(Ie={}));f();var Ne;(y=>{function t(o,u){if(o===u)return true;if(typeof o!="object"||typeof u!="object"||o===null||u===null)return false;let b=Object.keys(o),w=Object.keys(u);if(b.length!==w.length)return false;for(let S of b)if(!w.includes(S)||!t(o[S],u[S]))return false;return true}function e(o){return {...o,super:o.super??false}}function r(o,u){return o?t(e(o),e(u)):false}y.match=r;function n(o,u=false){return {name:o.name,ctrl:o.ctrl,meta:o.meta,shift:o.shift,super:o.super??false,leader:u}}y.fromParsedKey=n;function s(o){if(!o)return "";let u=[];o.ctrl&&u.push("ctrl"),o.meta&&u.push("alt"),o.super&&u.push("super"),o.shift&&u.push("shift"),o.name&&(o.name==="delete"?u.push("del"):u.push(o.name));let b=u.join("+");return o.leader&&(b=b?`<leader> ${b}`:"<leader>"),b}y.keyToString=s;function l(o){return o==="none"?[]:o.split(",").map(u=>{let w=u.replace(/<leader>/g,"leader+").toLowerCase().split("+"),S={ctrl:false,meta:false,shift:false,super:false,leader:false,name:""};for(let R of w)switch(R){case "ctrl":S.ctrl=true;break;case "alt":case "meta":case "option":S.meta=true;break;case "super":S.super=true;break;case "shift":S.shift=true;break;case "leader":S.leader=true;break;case "esc":S.name="escape";break;default:S.name=R;break}return S})}y.parse=l;})(Ne||(Ne={}));f();var ee;(R=>{R.SUPPORTED_LANGS=["zh-CN","en-US"],R.DEFAULT_LANG="zh-CN";function r(m,A="EASBOT_LANG"){let I=[m,process.env[A]?.trim()];for(let i of I)if(i&&R.SUPPORTED_LANGS.includes(i))return i;return R.DEFAULT_LANG}R.resolveLocaleLang=r;function n(m){return m.replace(/\b\w/g,A=>A.toUpperCase())}R.titlecase=n;function s(m){return new Date(m).toLocaleTimeString(void 0,{timeStyle:"short"})}R.time=s;function l(m){let A=new Date(m),I=s(m),i=A.toLocaleDateString();return `${I} \xB7 ${i}`}R.datetime=l;function y(m){let A=new Date(m),I=new Date;return A.getFullYear()===I.getFullYear()&&A.getMonth()===I.getMonth()&&A.getDate()===I.getDate()?s(m):l(m)}R.todayTimeOrDateTime=y;function o(m){return m>=1e6?(m/1e6).toFixed(1)+"M":m>=1e3?(m/1e3).toFixed(1)+"K":m.toString()}R.number=o;function u(m){if(m<1e3)return `${m}ms`;if(m<6e4)return `${(m/1e3).toFixed(1)}s`;if(m<36e5){let i=Math.floor(m/6e4),h=Math.floor(m%6e4/1e3);return `${i}m ${h}s`}if(m<864e5){let i=Math.floor(m/36e5),h=Math.floor(m%36e5/6e4);return `${i}h ${h}m`}let A=Math.floor(m/36e5);return `${Math.floor(m%36e5/864e5)}d ${A}h`}R.duration=u;function b(m,A){return m.length<=A?m:m.slice(0,A-1)+"\u2026"}R.truncate=b;function w(m,A=35){if(m.length<=A)return m;let I="\u2026",i=Math.ceil((A-I.length)/2),h=Math.floor((A-I.length)/2);return m.slice(0,i)+I+m.slice(-h)}R.truncateMiddle=w;function S(m,A,I){return (m===1?A:I).replace("{}",m.toString())}R.pluralize=S;})(ee||(ee={}));var qt=ee.resolveLocaleLang,Wt=ee.SUPPORTED_LANGS,Xt=ee.DEFAULT_LANG;f();var Jt=["HTTP_PROXY","HTTPS_PROXY","http_proxy","https_proxy"];function Yt(){return Jt.some(t=>process.env[t])}function Zt(){return process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy}function Vt(){let t=process.env.HTTP_PROXY||process.env.http_proxy,e=process.env.HTTPS_PROXY||process.env.https_proxy;return {http:t,https:e,enabled:!!(t||e)}}f();var Fe=class{constructor(){c(this,"queue",[]);c(this,"resolvers",[]);}push(e){let r=this.resolvers.shift();r?r(e):this.queue.push(e);}async next(){return this.queue.length>0?this.queue.shift():new Promise(e=>this.resolvers.push(e))}async*[Symbol.asyncIterator](){for(;;)yield await this.next();}};async function Kt(t,e,r){let n=[...e];await Promise.all(Array.from({length:t},async()=>{for(;;){let s=n.pop();if(s===void 0)return;await r(s);}}));}f();function Qt(){let t,e=new Promise(r=>t=r);return {trigger(){return t()},wait(){return e}}}f();function er(t,e){let r;return Promise.race([t.then(n=>(clearTimeout(r),n)),new Promise((n,s)=>{r=setTimeout(()=>{s(new Error(`Operation timed out after ${e}ms`));},e);})])}f();var Le;(y=>{let r=/[\u4e00-\u9fff\u3400-\u4dbf]/g;function n(o){if(!o)return 0;let u=String(o),b=(u.match(r)||[]).length,w=u.length-b,S=Math.round(b/1.5),R=Math.round(w/4);return Math.max(0,S+R)}y.estimate=n;function s(o){if(o==null)return 0;try{let u=typeof o=="string"?o:JSON.stringify(o);return n(u)}catch{return 0}}y.estimateObject=s;function l(o){if(o.total!==void 0&&o.total>0)return o.total;let u=o.input??0,b=o.output??0,w=o.cache?.read??0,S=o.cache?.write??0;return u+b+w+S}y.total=l;})(Le||(Le={}));f();function rr(t){let e={},r=t.shape??t.required().shape;for(let[n,s]of Object.entries(r))e[n]=s.nullable().optional();return ue.object(e)}export{ve as Archive,Fe as AsyncQueue,he as Binary,_e as Color,$e as Context,Xt as DEFAULT_LANG,xe as Encode,De as EventLoop,ke as Fetch,Ee as Fn,Ie as Grep,Z as Identifier,we as Ignore,Ne as Keybind,ee as Locale,Se as Markdown,oe as NamedError,Wt as SUPPORTED_LANGS,be as SessionTitle,Oe as Slug,Le as Token,ye as TruncateContent,Ge as abortAfter,zt as abortAfterAny,Bt as defer,gt as findLast,yt as fn,Gt as formatDuration,Dt as getDirectory,It as getFileExtension,Ue as getFilename,Nt as getFilenameTruncated,Vt as getProxyConfig,Zt as getProxyUrl,Et as git,vt as iife,Tt as loadEnv,kt as loadTextFile,Ot as loadTextFileAsync,_t as parseModelId,Yt as proxied,qt as resolveLocaleLang,Ae as retry,Qt as signal,Ft as truncateMiddle,rr as updateSchema,er as withTimeout,Kt as work};
22
+ `,b.push(U(z));let N=$.value;if(typeof N=="string")if(J(N)){let me=await W(N);if(O||(O=N.split("/").pop()||"file"),me.byteLength>P)throw new Error(`File size ${me.byteLength} exceeds limit ${P} bytes: ${O}`);b.push(me);}else b.push(U(N));else if(Buffer.isBuffer(N)){if(N.byteLength>P)throw new Error(`Buffer size ${N.byteLength} exceeds limit ${P} bytes: ${$.name}`);b.push(new Uint8Array(N.buffer,N.byteOffset,N.byteLength));}else if(N instanceof Uint8Array){if(N.byteLength>P)throw new Error(`File size ${N.byteLength} exceeds limit ${P} bytes: ${$.name}`);b.push(N);}}let k=U(`\r
23
+ --${y}--`),v=U(`\r
24
+ --${y}\r
25
+ `),_=[];_.push(U(`--${y}\r
26
+ `));for(let $=0;$<b.length;$++)_.push(b[$]),$%2===1&&$<b.length-1&&(_.push(v),_.push(U(`--${y}\r
27
+ `)));_.push(k);let C=_.reduce(($,P)=>$+P.length,0),B=new Uint8Array(C),H=0;for(let $ of _)B.set($,H),H+=$.length;return w(u,{method:"POST",headers:{"Content-Type":`multipart/form-data; boundary=${y}`,...p?.headers},body:B,timeout:E,...p})}f.postForm=e;function s(u,l,p){let y=new AbortController,b=y.signal;return (async()=>{try{let E={Accept:"text/event-stream",...p?.headers||{}},k=await fetch(u,{...p,headers:E,signal:b});if(!k.ok)throw new Error(`SSE connection failed: ${k.status}`);let v=k.body?.getReader();if(!v)throw new Error("SSE stream not available");let _=new TextDecoder("utf-8"),C="";for(;!b.aborted;){let{done:B,value:H}=await v.read();if(B)break;let $=_.decode(H,{stream:!0});C+=$;let P=C.split(`
28
+ `);C=P.pop()??"";for(let O of P)if(O.startsWith("data: ")){let z=O.slice(6);if(z==="[DONE]"){l.onComplete?.();return}l.onMessage?.(z);}}l.onComplete?.();}catch(E){E.name!=="AbortError"&&l.onError?.(E);}})(),()=>{y.abort();}}f.sse=s;})(Oe||(Oe={}));f();var ve;(o=>{let r=["brave","calm","clever","cosmic","crisp","curious","eager","gentle","glowing","happy","hidden","jolly","kind","lucky","mighty","misty","neon","nimble","playful","proud","quick","quiet","shiny","silent","stellar","sunny","swift","tidy","witty"],t=["cabin","cactus","canyon","circuit","comet","eagle","engine","falcon","forest","garden","harbor","island","knight","lagoon","meadow","moon","mountain","nebula","orchid","otter","panda","pixel","planet","river","rocket","sailor","squid","star","tiger","wizard","wolf"];function n(){return [r[Math.floor(Math.random()*r.length)],t[Math.floor(Math.random()*t.length)]].join("-")}o.create=n;})(ve||(ve={}));f();var $e;(a=>(a.positiveInt=j.union([j.number(),j.string().regex(/^\d+$/,"must be a positive integer (digits only)")]).transform(c=>typeof c=="number"?c:Number.parseInt(c,10)).pipe(j.number().int().positive()),a.nonNegativeInt=j.union([j.number(),j.string().regex(/^\d+$/,"must be a non-negative integer (digits only)")]).transform(c=>typeof c=="number"?c:Number.parseInt(c,10)).pipe(j.number().int().nonnegative()),a.booleanLike=j.union([j.boolean(),j.string()]).transform((c,g)=>{if(typeof c=="boolean")return c;let i=c.trim().toLowerCase();return ["true","1","yes","on"].includes(i)?true:["false","0","no","off"].includes(i)?false:(g.addIssue({code:"custom",message:`invalid boolean string: ${JSON.stringify(c)}`}),j.NEVER)}).pipe(j.boolean()),a.stringArray=(c=",")=>j.union([j.array(j.string()),j.string()]).transform(g=>Array.isArray(g)?g:g.split(c).map(d=>d.trim()).filter(d=>d.length>0)).pipe(j.array(j.string()))))($e||($e={}));f();function qe(r){let t=new AbortController,n=setTimeout(t.abort.bind(t),r);return {controller:t,signal:t.signal,clearTimeout:()=>globalThis.clearTimeout(n)}}function Ut(r,...t){let n=qe(r);return {signal:AbortSignal.any([n.signal,...t]),clearTimeout:n.clearTimeout}}f();var Ie;(t=>{async function r(n,o){if(process.platform==="win32"){let a=Ae.resolve(n),c=Ae.resolve(o),g=`Expand-Archive -Path '${a}' -DestinationPath '${c}' -Force`,i=await G.run("powershell",`-NoProfile -NonInteractive -Command "$global:ProgressPreference = 'SilentlyContinue'; ${g}"`);if(i.code!==0)throw new Error(`PowerShell exited with code ${i.code}: ${i.stderr}`)}else {let a=`unzip -o -q ${n} -d ${o}`,c=await G.run(void 0,a);if(c.code!==0)throw new Error(`unzip exited with code ${c.code}: ${c.stderr}`)}}t.extractZip=r;})(Ie||(Ie={}));f();var _e;(o=>{function r(a){return a?/^#[0-9a-fA-F]{6}$/.test(a):false}o.isValidHex=r;function t(a){let c=parseInt(a.slice(1,3),16),g=parseInt(a.slice(3,5),16),i=parseInt(a.slice(5,7),16);return {r:c,g,b:i}}o.hexToRgb=t;function n(a){if(!r(a))return;let{r:c,g,b:i}=t(a);return `\x1B[38;2;${c};${g};${i}m\x1B[1m`}o.hexToAnsiBold=n;})(_e||(_e={}));f();var De;(n=>{class r extends Error{constructor(c$1){super(`No context found for ${c$1}`);c(this,"name",c$1);}}n.NotFound=r;function t(o){let a=new AsyncLocalStorage;return {use(){let c=a.getStore();if(!c)throw new r(o);return c},provide(c,g){return a.run(c,g)}}}n.create=t;})(De||(De={}));f();function Wt(r){return {[Symbol.dispose](){r();},[Symbol.asyncDispose](){return Promise.resolve(r())}}}f();var Ne;(t=>{async function r(){return new Promise(n=>{let o=()=>{process._getActiveHandles().length===0&&process._getActiveRequests().length===0?n():setImmediate(o);};o();})}t.wait=r;})(Ne||(Ne={}));f();function qt(r){if(r<=0)return "";if(r<60)return `${r}s`;if(r<3600){let n=Math.floor(r/60),o=r%60;return o>0?`${n}m ${o}s`:`${n}m`}if(r<86400){let n=Math.floor(r/3600),o=Math.floor(r%3600/60);return o>0?`${n}h ${o}m`:`${n}h`}if(r<604800){let n=Math.floor(r/86400);return n===1?"~1 day":`~${n} days`}let t=Math.floor(r/604800);return t===1?"~1 week":`~${t} weeks`}f();var Fe;(W=>{let r=m.create({service:"grep"});async function t(){return n()}W.filepath=t;let n=b(async()=>{let e=await D.which("rg");if(!e)return null;try{if(!(await ae.stat(e)).isFile())return null}catch{return null}try{let s=await D.run([e,"--version"],{timeout:5e3});if(s.code!==0||!s.stdout.startsWith("ripgrep "))return r.warn("rg failed self-test, falling back to pure JS",{filepath:e,code:s.code,stderr:s.stderr.slice(0,200)}),null}catch(s){return r.warn("rg spawn failed during self-test, falling back to pure JS",{filepath:e,error:s.message.slice(0,200)}),null}return e});async function o(){return await t()!==null}W.isUsingRipgrep=o;async function*a$2(e){e.signal?.throwIfAborted();let s=await t();s?yield*c(s,e):(r.debug("ripgrep not available, using pure JS fallback for files()",{cwd:e.cwd}),yield*g(e));}W.files=a$2;async function*c(e,s){s.signal?.throwIfAborted();let f=["--files","--glob=!.git/*"];s.follow&&f.push("--follow");let u=s.hidden!==false;if(s.maxDepth!==void 0&&f.push(`--max-depth=${s.maxDepth}`),s.glob)for(let y of s.glob)f.push(`--glob=${y}`);try{if(!(await ae.stat(s.cwd)).isDirectory())throw Object.assign(new Error(`Not a directory: '${s.cwd}'`),{code:"ENOTDIR",errno:-20,path:s.cwd})}catch(y){throw y.code==="ENOENT"?Object.assign(new Error(`No such file or directory: '${s.cwd}'`),{code:"ENOENT",errno:-2,path:s.cwd}):y}let l=await D.run([e,...f],{cwd:s.cwd});if(l.code!==0&&l.code!==1)return;let p=l.stdout.split(/\r?\n/);for(let y of p){s.signal?.throwIfAborted();let b=y.trim();if(!b)continue;let D=d.toUnixPath(b);!u&&D.split("/").some(E=>E.startsWith("."))||(yield D);}}async function*g(e){e.signal?.throwIfAborted();try{if(!(await ae.stat(e.cwd)).isDirectory())throw Object.assign(new Error(`Not a directory: '${e.cwd}'`),{code:"ENOTDIR",errno:-20,path:e.cwd})}catch(E){throw E.code==="ENOENT"?Object.assign(new Error(`No such file or directory: '${e.cwd}'`),{code:"ENOENT",errno:-2,path:e.cwd}):E}let s=[],f=[];if(e.glob)for(let E of e.glob)E.startsWith("!")?f.push(E.slice(1)):s.push(E);let u=s.length>0?R(s):["**/*"],l=e.hidden!==false,p=new Set,y=b$2.DEFAULT_MAX_DEPTH,b;e.maxDepth===void 0?b=y:e.maxDepth<0?b=1:b=e.maxDepth+1;let D=Math.min(Math.max(b,1),y);for(let E of u){e.signal?.throwIfAborted();let k=await b$2.scan(E,{cwd:e.cwd,absolute:false,include:"file",dot:l,symlink:e.follow??false,maxDepth:D,ignore:f});for(let v of k)!l&&v.split("/").some(_=>_.startsWith("."))||p.add(v);}for(let E of Array.from(p).sort())e.signal?.throwIfAborted(),yield E;e.signal?.throwIfAborted();}async function i(e){r.debug("tree",{cwd:e.cwd}),e.signal?.throwIfAborted();let s=e.hidden!==false,f=e.glob??[],u=f.filter(P=>!P.startsWith("!")),l=f.filter(P=>P.startsWith("!")).map(P=>P.slice(1)),p=u.length>0?u:["**/*"],y=new Set,b=[];for(let P of p){e.signal?.throwIfAborted();let O=await b$2.scan(P,{cwd:e.cwd,absolute:false,include:"file",dot:s,symlink:false,maxDepth:b$2.DEFAULT_MAX_DEPTH});for(let z of O)y.has(z)||(y.add(z),b.push(z));}let D=b.filter(P=>{for(let O of l)if(b$2.match(O,P))return false;return true});function E(P,O){let z=P.children.get(O);if(z)return z;let N={name:O,children:new Map};return P.children.set(O,N),N}let k={children:new Map};for(let P of D){let O=P.split("/");if(O.length<2)continue;let z=k;for(let N of O.slice(0,-1))z=E(z,N);}let v=Array.from(k.children.values()).sort((P,O)=>P.name.localeCompare(O.name)),_=e.limit??Number.POSITIVE_INFINITY,C=[],B=v.map(P=>({node:P,path:P.name})),H=0,$=0;for(;B.length>0;){let P=B.shift();if(!P)break;if(H++,$<_){C.push(P.path),$++;for(let O of Array.from(P.node.children.values()).sort((z,N)=>z.name.localeCompare(N.name))){if($>=_)break;B.push({node:O,path:`${P.path}/${O.name}`});}}}return H>$&&C.push(`[${$}/${H} shown, ${H-$} truncated]`),C.join(`
29
+ `)}W.tree=i;async function d$1(e){let s=await t();return s?x(s,e):(r.debug("ripgrep not available, using pure JS fallback for search()",{cwd:e.cwd,pattern:e.pattern}),w(e))}W.search=d$1;async function x(e,s){let f=["--json","--glob=!.git/*"];if(s.follow&&f.push("--follow"),s.glob)for(let b of s.glob)f.push(`--glob=${b}`);s.limit&&f.push(`--max-count=${s.limit}`),f.push("--"),f.push(s.pattern);let u=await D.run([e,...f],{cwd:s.cwd});if(u.code!==0)return [];let l=s.hidden!==false,p=u.stdout.split(/\r?\n/).filter(Boolean),y=[];for(let b of p)try{let D=JSON.parse(b);if(D?.type!=="match")continue;let E=D.data;if(!E?.path?.text||!E?.lines?.text)continue;let k=d.toUnixPath(E.path.text);if(!l&&k.split("/").some(v=>v.startsWith(".")))continue;if(y.push({path:k,lines:E.lines.text,line_number:E.line_number,absolute_offset:E.absolute_offset??0}),s.limit&&y.length>=s.limit)break}catch{}return y}async function w(e){let s;try{s=new RegExp(e.pattern);}catch{return []}try{if(!(await ae.stat(e.cwd)).isDirectory())throw Object.assign(new Error(`Not a directory: '${e.cwd}'`),{code:"ENOTDIR",errno:-20,path:e.cwd})}catch(v){throw v.code==="ENOENT"?Object.assign(new Error(`No such file or directory: '${e.cwd}'`),{code:"ENOENT",errno:-2,path:e.cwd}):v}let f=[],u=[];if(e.glob)for(let v of e.glob)v.startsWith("!")?u.push(v):f.push(v);let p=R(u).map(v=>v.startsWith("!")?v.slice(1):v),y=e.hidden!==false,b=[],D=f.length>0?R(f):["**/*"],E=new Set,k=[];for(let v of D){e.signal?.throwIfAborted();let _=await b$2.scan(v,{cwd:e.cwd,absolute:false,include:"file",dot:y,symlink:e.follow??false,maxDepth:void 0,ignore:p});for(let C of _)E.has(C)||(E.add(C),k.push(C));}for(let v of k){if(e.signal?.throwIfAborted(),e.limit&&b.length>=e.limit)break;let _=d.join(e.cwd,v),C;try{C=await ae.readFile(_,"utf-8");}catch{continue}let B=C.split(/\r?\n/),H=0;for(let $=0;$<B.length;$++){let P=B[$]??"";if(s.test(P)&&(b.push({path:v,lines:P,line_number:$+1,absolute_offset:H}),e.limit&&b.length>=e.limit))break;H+=Buffer.byteLength(P,"utf-8")+1;}}return b}function A(e,s){return a$1.match(e,s)}W.match=A;let T=a(async()=>await t());async function h(){return await T()}W.filepathCached=h;function R(e){let s=[];for(let f of e){if(f.startsWith("!")){let l=f.slice(1);s.push(`!${F(l)}`);continue}let u=L(f);for(let l of u)s.push(M(l));}return s}function F(e){return !e||e.startsWith("**")||e.includes("/")?e:/[*?[\]]/.test(e)?`**/${e}`:`**/${e}/**`}function L(e){let s=X(e);if(s===-1)return [e];let f=U(e,s);if(f===-1)return [e];let u=e.slice(s+1,f),l=V(u);if(!l||l.length<=1)return [e];let p=e.slice(0,s),y=e.slice(f+1);return l.map(b=>p+b+y)}function M(e){return !e||e.includes("/")||e.startsWith("**")?e:`**/${e}`}function X(e){for(let f=0;f<e.length;f++){let u=e[f];if(u==="\\"){f++;continue}if(u==="{"){return f;}}return -1}function U(e,s){for(let f=s+1;f<e.length;f++){let u=e[f];if(u==="\\"){f++;continue}if(u==="}")return f}return -1}function V(e){return e?e.split(","):null}W._ready=a(async()=>{let e=await t();return r.debug("Grep initialized",{ripgrep:e?"available":"fallback (pure JS)"}),e});})(Fe||(Fe={}));f();var Le;(g=>{function r(i,d){if(i===d)return true;if(typeof i!="object"||typeof d!="object"||i===null||d===null)return false;let x=Object.keys(i),w=Object.keys(d);if(x.length!==w.length)return false;for(let A of x)if(!w.includes(A)||!r(i[A],d[A]))return false;return true}function t(i){return {...i,super:i.super??false}}function n(i,d){return i?r(t(i),t(d)):false}g.match=n;function o(i,d=false){return {name:i.name,ctrl:i.ctrl,meta:i.meta,shift:i.shift,super:i.super??false,leader:d}}g.fromParsedKey=o;function a(i){if(!i)return "";let d=[];i.ctrl&&d.push("ctrl"),i.meta&&d.push("alt"),i.super&&d.push("super"),i.shift&&d.push("shift"),i.name&&(i.name==="delete"?d.push("del"):d.push(i.name));let x=d.join("+");return i.leader&&(x=x?`<leader> ${x}`:"<leader>"),x}g.keyToString=a;function c(i){return i==="none"?[]:i.split(",").map(d=>{let w=d.replace(/<leader>/g,"leader+").toLowerCase().split("+"),A={ctrl:false,meta:false,shift:false,super:false,leader:false,name:""};for(let T of w)switch(T){case "ctrl":A.ctrl=true;break;case "alt":case "meta":case "option":A.meta=true;break;case "super":A.super=true;break;case "shift":A.shift=true;break;case "leader":A.leader=true;break;case "esc":A.name="escape";break;default:A.name=T;break}return A})}g.parse=c;})(Le||(Le={}));f();var te;(T=>{T.SUPPORTED_LANGS=["zh-CN","en-US"],T.DEFAULT_LANG="zh-CN";function n(h,R="EASBOT_LANG"){let F=[h,process.env[R]?.trim()];for(let L of F)if(L&&T.SUPPORTED_LANGS.includes(L))return L;return T.DEFAULT_LANG}T.resolveLocaleLang=n;function o(h){return h.replace(/\b\w/g,R=>R.toUpperCase())}T.titlecase=o;function a(h){return new Date(h).toLocaleTimeString(void 0,{timeStyle:"short"})}T.time=a;function c(h){let R=new Date(h),F=a(h),L=R.toLocaleDateString();return `${F} \xB7 ${L}`}T.datetime=c;function g(h){let R=new Date(h),F=new Date;return R.getFullYear()===F.getFullYear()&&R.getMonth()===F.getMonth()&&R.getDate()===F.getDate()?a(h):c(h)}T.todayTimeOrDateTime=g;function i(h){return h>=1e6?(h/1e6).toFixed(1)+"M":h>=1e3?(h/1e3).toFixed(1)+"K":h.toString()}T.number=i;function d(h){if(h<1e3)return `${h}ms`;if(h<6e4)return `${(h/1e3).toFixed(1)}s`;if(h<36e5){let L=Math.floor(h/6e4),M=Math.floor(h%6e4/1e3);return `${L}m ${M}s`}if(h<864e5){let L=Math.floor(h/36e5),M=Math.floor(h%36e5/6e4);return `${L}h ${M}m`}let R=Math.floor(h/36e5);return `${Math.floor(h%36e5/864e5)}d ${R}h`}T.duration=d;function x(h,R){return h.length<=R?h:h.slice(0,R-1)+"\u2026"}T.truncate=x;function w(h,R=35){if(h.length<=R)return h;let F="\u2026",L=Math.ceil((R-F.length)/2),M=Math.floor((R-F.length)/2);return h.slice(0,L)+F+h.slice(-M)}T.truncateMiddle=w;function A(h,R,F){return (h===1?R:F).replace("{}",h.toString())}T.pluralize=A;})(te||(te={}));var Xt=te.resolveLocaleLang,Jt=te.SUPPORTED_LANGS,Yt=te.DEFAULT_LANG;f();var Vt=["HTTP_PROXY","HTTPS_PROXY","http_proxy","https_proxy"];function Zt(){return Vt.some(r=>process.env[r])}function Kt(){return process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy}function Qt(){let r=process.env.HTTP_PROXY||process.env.http_proxy,t=process.env.HTTPS_PROXY||process.env.https_proxy;return {http:r,https:t,enabled:!!(r||t)}}f();var Ce=class{constructor(){c(this,"queue",[]);c(this,"resolvers",[]);}push(t){let n=this.resolvers.shift();n?n(t):this.queue.push(t);}async next(){return this.queue.length>0?this.queue.shift():new Promise(t=>this.resolvers.push(t))}async*[Symbol.asyncIterator](){for(;;)yield await this.next();}};async function er(r,t,n){let o=[...t];await Promise.all(Array.from({length:r},async()=>{for(;;){let a=o.pop();if(a===void 0)return;await n(a);}}));}f();function tr(){let r,t=new Promise(n=>r=n);return {trigger(){return r()},wait(){return t}}}f();function rr(r,t){let n;return Promise.race([r.then(o=>(clearTimeout(n),o)),new Promise((o,a)=>{n=setTimeout(()=>{a(new Error(`Operation timed out after ${t}ms`));},t);})])}f();var Me;(g=>{let n=/[\u4e00-\u9fff\u3400-\u4dbf]/g;function o(i){if(!i)return 0;let d=String(i),x=(d.match(n)||[]).length,w=d.length-x,A=Math.round(x/1.5),T=Math.round(w/4);return Math.max(0,A+T)}g.estimate=o;function a(i){if(i==null)return 0;try{let d=typeof i=="string"?i:JSON.stringify(i);return o(d)}catch{return 0}}g.estimateObject=a;function c(i){if(i.total!==void 0&&i.total>0)return i.total;let d=i.input??0,x=i.output??0,w=i.cache?.read??0,A=i.cache?.write??0;return d+x+w+A}g.total=c;})(Me||(Me={}));f();function or(r){let t={},n=r.shape??r.required().shape;for(let[o,a]of Object.entries(n))t[o]=a.nullable().optional();return j.object(t)}export{Ie as Archive,Ce as AsyncQueue,xe as Binary,_e as Color,De as Context,Yt as DEFAULT_LANG,ye as Encode,Ne as EventLoop,Oe as Fetch,Pe as Fn,Fe as Grep,K as Identifier,Te as Ignore,Le as Keybind,te as Locale,Se as Markdown,se as NamedError,Jt as SUPPORTED_LANGS,$e as Schema,we as SessionTitle,ve as Slug,Me as Token,be as TruncateContent,qe as abortAfter,Ut as abortAfterAny,Wt as defer,ht as findLast,wt as fn,qt as formatDuration,Nt as getDirectory,Ft as getFileExtension,Ge as getFilename,Lt as getFilenameTruncated,Qt as getProxyConfig,Kt as getProxyUrl,At as git,It as iife,Pt as loadEnv,vt as loadTextFile,$t as loadTextFileAsync,_t as parseModelId,Zt as proxied,Xt as resolveLocaleLang,ke as retry,tr as signal,Ct as truncateMiddle,or as updateSchema,rr as withTimeout,er as work};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@easbot/utils",
3
- "version": "0.3.14",
3
+ "version": "0.3.16",
4
4
  "description": "Shared utilities library for EASBOT ecosystem",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -41,34 +41,32 @@
41
41
  "LICENSE"
42
42
  ],
43
43
  "dependencies": {
44
- "@hono/node-server": "^2.0.2",
45
- "@hono/node-ws": "^1.3.0",
46
- "@hono/standard-validator": "^0.2.2",
47
- "@hono/zod-validator": "^0.7.6",
44
+ "@hono/node-server": "^2.1.1",
45
+ "@hono/node-ws": "^1.3.1",
46
+ "@hono/standard-validator": "^0.4.0",
47
+ "@hono/zod-validator": "^0.9.0",
48
48
  "dotenv": "^17.4.2",
49
- "picocolors": "1.1.1",
50
49
  "glob": "^13.0.6",
51
50
  "gray-matter": "^4.0.3",
52
- "hono": "^4.12.18",
53
- "hono-openapi": "^1.3.0",
51
+ "hono": "^4.13.2",
52
+ "hono-openapi": "^1.3.1",
54
53
  "markdown-it": "^14.1.1",
55
- "undici": "^8.3.0",
54
+ "undici": "^8.10.0",
56
55
  "ws": "^8.20.0",
57
56
  "xdg-basedir": "^5.1.0",
58
- "yaml": "^2.9.0",
59
57
  "zod": "^4.4.3",
60
- "@easbot/types": "0.3.14"
58
+ "@easbot/types": "0.3.16"
61
59
  },
62
60
  "devDependencies": {
63
61
  "@types/markdown-it": "^14.1.2",
64
- "@types/node": "^25.6.2",
62
+ "@types/node": "^25.9.5",
65
63
  "@types/ws": "^8.18.1",
66
64
  "tsup": "^8.5.1",
67
65
  "typescript": "^6.0.3",
68
66
  "vitest": "^4.1.5"
69
67
  },
70
68
  "engines": {
71
- "node": ">=22.22.3"
69
+ "node": ">=22.22.2"
72
70
  },
73
71
  "publishConfig": {
74
72
  "access": "public"
@@ -84,6 +82,7 @@
84
82
  "test": "vitest",
85
83
  "test:run": "vitest run",
86
84
  "test:coverage": "vitest run --coverage",
85
+ "test:clean": "tsx scripts/clean-test-fixtures.ts",
87
86
  "lint": "biome check .",
88
87
  "lint:fix": "biome check --write .",
89
88
  "lint:report": "biome check --reporter=summary .",
@@ -1 +0,0 @@
1
- 'use strict';var n=Object.defineProperty;var c=(t,e,r)=>e in t?n(t,e,{enumerable:true,configurable:true,writable:true,value:r}):t[e]=r;var u=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var o=(t,e)=>()=>(t&&(e=t(t=0)),e);var a=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var i=(t,e,r)=>c(t,typeof e!="symbol"?e+"":e,r);var m;exports.d=void 0;var p=o(()=>{m=()=>typeof document>"u"?new URL(`file:${__filename}`).href:document.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"?document.currentScript.src:new URL("main.js",document.baseURI).href,exports.d=m();});exports.a=u;exports.b=a;exports.c=i;exports.e=p;
@@ -1 +0,0 @@
1
- import a from'path';import {fileURLToPath}from'url';var r=Object.defineProperty;var i=(e,t,o)=>t in e?r(e,t,{enumerable:true,configurable:true,writable:true,value:o}):e[t]=o;var l=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,o)=>(typeof require<"u"?require:t)[o]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var n=(e,t)=>()=>(e&&(t=e(e=0)),t);var s=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var _=(e,t,o)=>i(e,typeof t!="symbol"?t+"":t,o);var m,c,x,u,f=n(()=>{m=()=>fileURLToPath(import.meta.url),c=()=>a.dirname(m()),x=c(),u=m();});export{l as a,s as b,_ as c,x as d,u as e,f};
@@ -1 +0,0 @@
1
- 'use strict';var chunkAGCTBLWP_cjs=require('./chunk-AGCTBLWP.cjs');require('./chunk-7WRC6YMO.cjs');Object.defineProperty(exports,"Filesystem",{enumerable:true,get:function(){return chunkAGCTBLWP_cjs.d}});Object.defineProperty(exports,"MIME_TYPES",{enumerable:true,get:function(){return chunkAGCTBLWP_cjs.c}});
@@ -1 +0,0 @@
1
- export{d as Filesystem,c as MIME_TYPES}from'./chunk-YTLHVUQE.mjs';import'./chunk-DFVKHBF4.mjs';
@@ -1 +0,0 @@
1
- export{a as Lock}from'./chunk-WZHHFME6.mjs';import'./chunk-DFVKHBF4.mjs';
@@ -1 +0,0 @@
1
- 'use strict';var chunkXP3JFKUF_cjs=require('./chunk-XP3JFKUF.cjs');require('./chunk-7WRC6YMO.cjs');Object.defineProperty(exports,"Lock",{enumerable:true,get:function(){return chunkXP3JFKUF_cjs.a}});
@@ -1 +0,0 @@
1
- 'use strict';var chunkDSQTBBWA_cjs=require('./chunk-DSQTBBWA.cjs');require('./chunk-7WRC6YMO.cjs');Object.defineProperty(exports,"PackageRegistry",{enumerable:true,get:function(){return chunkDSQTBBWA_cjs.o}});
@@ -1 +0,0 @@
1
- export{o as PackageRegistry}from'./chunk-UAOGVWUY.mjs';import'./chunk-DFVKHBF4.mjs';
@@ -1 +0,0 @@
1
- export{H as $,G as Shell}from'./chunk-QHS45ILC.mjs';import'./chunk-YTLHVUQE.mjs';import'./chunk-UAOGVWUY.mjs';import'./chunk-DFVKHBF4.mjs';
@@ -1 +0,0 @@
1
- 'use strict';var chunkBPUVSXJ3_cjs=require('./chunk-BPUVSXJ3.cjs');require('./chunk-AGCTBLWP.cjs'),require('./chunk-DSQTBBWA.cjs'),require('./chunk-7WRC6YMO.cjs');Object.defineProperty(exports,"$",{enumerable:true,get:function(){return chunkBPUVSXJ3_cjs.H}});Object.defineProperty(exports,"Shell",{enumerable:true,get:function(){return chunkBPUVSXJ3_cjs.G}});