@ebowwa/coder 0.2.1 → 0.7.63

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 (63) hide show
  1. package/README.md +31 -32
  2. package/dist/index.js +52191 -1
  3. package/dist/interfaces/ui/terminal/cli/index.js +52776 -0
  4. package/native/README.md +5 -5
  5. package/native/index.darwin-arm64.node +0 -0
  6. package/native/index.node +0 -0
  7. package/native/package.json +4 -4
  8. package/package.json +30 -15
  9. package/dist/cli.js +0 -148
  10. package/dist/index-0pkak453.js +0 -136
  11. package/dist/index-0qd0x8b4.js +0 -110
  12. package/dist/index-0x3kprq6.js +0 -240
  13. package/dist/index-1eawy937.js +0 -308
  14. package/dist/index-24m2aygy.js +0 -240
  15. package/dist/index-29xcjnne.js +0 -280
  16. package/dist/index-2avyytn5.js +0 -349
  17. package/dist/index-4ms367ey.js +0 -136
  18. package/dist/index-4w2t3b0m.js +0 -240
  19. package/dist/index-4xfgd8nz.js +0 -261
  20. package/dist/index-5acjp9gc.js +0 -157
  21. package/dist/index-5s15hr56.js +0 -136
  22. package/dist/index-6e4wf341.js +0 -349
  23. package/dist/index-6fvnkedw.js +0 -240
  24. package/dist/index-6rqpmd4g.js +0 -128
  25. package/dist/index-77ckwnbm.js +0 -280
  26. package/dist/index-9knxy49k.js +0 -128
  27. package/dist/index-9zrnw4zx.js +0 -128
  28. package/dist/index-bk21w99v.js +0 -280
  29. package/dist/index-c41n76fv.js +0 -240
  30. package/dist/index-cb4ppjdt.js +0 -255
  31. package/dist/index-cfb2edt6.js +0 -240
  32. package/dist/index-cmfa38hh.js +0 -308
  33. package/dist/index-datjz8q1.js +0 -257
  34. package/dist/index-eadf4wvn.js +0 -240
  35. package/dist/index-em5k0m3z.js +0 -345
  36. package/dist/index-gh8r333a.js +0 -110
  37. package/dist/index-gkx6k2tr.js +0 -261
  38. package/dist/index-h5cabfks.js +0 -155
  39. package/dist/index-hcrpwyy3.js +0 -261
  40. package/dist/index-hk7fwwa8.js +0 -257
  41. package/dist/index-jb8cw7f8.js +0 -136
  42. package/dist/index-kbyw4th1.js +0 -347
  43. package/dist/index-kgj5gqnm.js +0 -345
  44. package/dist/index-mdf6xp1z.js +0 -255
  45. package/dist/index-mrhv8kvc.js +0 -280
  46. package/dist/index-mt4743dd.js +0 -161
  47. package/dist/index-qnwsg97q.js +0 -240
  48. package/dist/index-qwdy6x44.js +0 -261
  49. package/dist/index-rmj77261.js +0 -157
  50. package/dist/index-sbbw1a61.js +0 -349
  51. package/dist/index-svy5bcpn.js +0 -345
  52. package/dist/index-tvmy7tm9.js +0 -261
  53. package/dist/index-tzz4vzkj.js +0 -312
  54. package/dist/index-vz80zmhe.js +0 -110
  55. package/dist/index-wed2fk67.js +0 -240
  56. package/dist/index-wksgzz8e.js +0 -280
  57. package/dist/index-wn2m4wma.js +0 -240
  58. package/dist/index-xha05vjc.js +0 -257
  59. package/dist/index-yc6eh8p8.js +0 -136
  60. package/dist/index-ycjxx9ft.js +0 -240
  61. package/dist/index-z0gzd0fc.js +0 -110
  62. package/dist/index-z8cwtf8j.js +0 -240
  63. package/dist/index-zy5mtt00.js +0 -128
@@ -1,161 +0,0 @@
1
- // @bun
2
- var $7=Object.create;var{getPrototypeOf:J7,defineProperty:r5,getOwnPropertyNames:z7}=Object;var Y7=Object.prototype.hasOwnProperty;var K7=(Q,X,Z)=>{Z=Q!=null?$7(J7(Q)):{};let V=X||!Q||!Q.__esModule?r5(Z,"default",{value:Q,enumerable:!0}):Z;for(let $ of z7(Q))if(!Y7.call(V,$))r5(V,$,{get:()=>Q[$],enumerable:!0});return V};var q7=import.meta.require;var aQ={enabled:!0,ttl:"1h",cacheSystemPrompt:!0,cacheTools:!0,minTokensForCache:1024},s9={"claude-opus-4-6":{input:15,output:75,cache_write:18.75,cache_read:1.5},"claude-sonnet-4-6":{input:3,output:15,cache_write:3.75,cache_read:0.3},"claude-haiku-4-5":{input:0.8,output:4,cache_write:1,cache_read:0.08}};var H7={maxRetries:3,baseDelayMs:1000,maxDelayMs:30000,jitterFactor:0.2,retryableStatusCodes:[429,500,502,503,504,529],onRetry:void 0};function W7(Q,X,Z,V){let $=X*Math.pow(2,Q),J=$*V*(Math.random()*2-1);return Math.min($+J,Z)}function j7(Q,X){if(Q.message.includes("429")||Q.message.includes("rate limit"))return!0;if(Q.message.includes("500")||Q.message.includes("502")||Q.message.includes("503")||Q.message.includes("504"))return!0;if(Q.message.includes("ECONNREFUSED")||Q.message.includes("ENOTFOUND")||Q.message.includes("ETIMEDOUT")||Q.message.includes("network")||Q.message.includes("fetch failed"))return!0;for(let Z of X)if(Q.message.includes(String(Z)))return!0;return!1}function _7(Q){return new Promise((X)=>setTimeout(X,Q))}async function s5(Q,X={}){let Z={...H7,...X},V=null;for(let $=0;$<=Z.maxRetries;$++)try{return await Q()}catch(J){if(V=J instanceof Error?J:Error(String(J)),$<Z.maxRetries&&j7(V,Z.retryableStatusCodes)){let z=W7($,Z.baseDelayMs,Z.maxDelayMs,Z.jitterFactor);if(Z.onRetry)Z.onRetry($+1,V,z);else console.warn(`\x1B[33mRetry ${$+1}/${Z.maxRetries} after ${z}ms: ${V.message}\x1B[0m`);await _7(z)}else throw V}throw V||Error("Max retries exceeded")}var t5={"claude-opus-4-6":{input:15,output:75,cache_write:18.75,cache_read:1.5},"claude-sonnet-4-6":{input:3,output:15,cache_write:3.75,cache_read:0.3},"claude-haiku-4-5":{input:0.8,output:4,cache_write:1,cache_read:0.08},"claude-3-5-sonnet":{input:3,output:15,cache_write:3.75,cache_read:0.3},"claude-3-5-haiku":{input:0.8,output:4,cache_write:1,cache_read:0.08},"claude-3-opus":{input:15,output:75,cache_write:18.75,cache_read:1.5}};function G7(Q,X){let Z=t5[Q]??t5["claude-sonnet-4-6"],V=X.input_tokens-(X.cache_read_input_tokens??0),$=X.cache_read_input_tokens??0,J=X.cache_creation_input_tokens??0,z=X.output_tokens,Y=V/1e6*Z.input,K=$/1e6*Z.cache_read,q=J/1e6*Z.cache_write,W=z/1e6*Z.output,H=Y+K+q+W,_=($+J)/1e6*(Z.input-Z.cache_read);return{costUSD:H,estimatedSavingsUSD:_}}function U7(Q,X){if(!Q||!X.enabled||!X.cacheSystemPrompt)return typeof Q==="string"?Q:void 0;if(Array.isArray(Q)){let Z=[...Q];if(Z.length>0){let V=Z[Z.length-1];if(V&&V.type==="text")Z[Z.length-1]={type:"text",text:V.text,cache_control:{type:"ephemeral",ttl:X.ttl}}}return Z}return[{type:"text",text:Q,cache_control:{type:"ephemeral",ttl:X.ttl}}]}function A7(Q,X){if(!X.enabled)return Q;let Z=[];for(let V=0;V<Q.length;V++){let $=Q[V],J=[];for(let z=0;z<$.content.length;z++){let Y=$.content[z],K=z===$.content.length-1,q=V===Q.length-1;if(Y.type==="text"&&Y.text.length>=X.minTokensForCache*4&&!Y.cache_control&&(K||q))J.push({...Y,cache_control:{type:"ephemeral",ttl:X.ttl}});else J.push(Y)}Z.push({...$,content:J})}if(Z.length>0&&X.enabled){let V=Z[Z.length-1],$=V.content[V.content.length-1];if($&&!("cache_control"in $))V.content[V.content.length-1]={...$,cache_control:{type:"ephemeral",ttl:X.ttl}}}return Z}function w7(Q){let X=Q.cache_read_input_tokens??0,Z=Q.cache_creation_input_tokens??0,V=X+Z,$=X>0?1:0,J=Z>0?1:0,z=$+J;return{cacheHits:$,cacheMisses:J,totalCacheReadTokens:X,totalCacheWriteTokens:Z,cacheHitRate:z>0?$/z:0,estimatedSavingsUSD:0}}async function e5(Q,X){let{apiKey:Z,model:V="claude-sonnet-4-6",maxTokens:$=4096,tools:J,systemPrompt:z,cacheConfig:Y=aQ,thinking:K,onToken:q,onThinking:W,onToolUse:H,signal:j}=X,_=Date.now(),G=0,U=!0,w=A7(Q,Y),A=U7(z,Y),B={model:V,max_tokens:$,messages:w.map((C)=>({role:C.role,content:C.content})),stream:!0};if(A)B.system=A;if(J&&J.length>0)B.tools=J;let v=`${process.env.ANTHROPIC_BASE_URL||"https://api.anthropic.com"}/v1/messages`,L={"Content-Type":"application/json","x-api-key":Z,"anthropic-version":"2023-06-01","anthropic-beta":"max-tokens-3-5-sonnet-2024-07-15"};if(K&&K.type!=="disabled"){if(K.type==="enabled")B.thinking={type:"enabled",budget_tokens:K.budget_tokens};else if(K.type==="adaptive")B.thinking={type:"adaptive"};L["anthropic-beta"]="extended-thinking-2025-01-24"}let O={maxRetries:3,baseDelayMs:1000,maxDelayMs:30000,retryableStatusCodes:[429,500,502,503,504,529],onRetry:(C,ZQ,n)=>{console.log(`\x1B[33mAPI retry ${C}/3 after ${n}ms: ${ZQ.message}\x1B[0m`)}},S=await s5(async()=>{let C=await fetch(v,{method:"POST",headers:L,body:JSON.stringify(B),signal:j});if(!C.ok&&O.retryableStatusCodes?.includes(C.status)){let ZQ=await C.text();throw Error(`API error: ${C.status} - ${ZQ}`)}return C},O);if(!S.ok){let C=await S.text();throw Error(`API error: ${S.status} - ${C}`)}if(!S.body)throw Error("No response body");let m=S.body.getReader(),h=new TextDecoder,g=null,jQ=[],KQ={input_tokens:0,output_tokens:0},s=null,t=null,P=null,vQ="",OQ="";try{let C="";while(!0){let{done:ZQ,value:n}=await m.read();if(ZQ)break;C+=h.decode(n,{stream:!0});let MQ=C.split(`
3
- `);C=MQ.pop()||"";for(let RQ of MQ){if(!RQ.startsWith("data: "))continue;let nQ=RQ.slice(6);if(!nQ)continue;try{let qQ=JSON.parse(nQ);switch(qQ.type){case"message_start":{let R=qQ.message;g=R,KQ=R.usage;break}case"content_block_start":{let R=qQ.content_block;if(R.type==="text")s={type:"text",text:""};else if(R.type==="thinking")t={type:"thinking",thinking:""};else if(R.type==="tool_use")P={type:"tool_use",id:R.id,name:R.name,input:{}},vQ="";break}case"content_block_delta":{let R=qQ.delta;if(R.type==="text_delta"&&s){let VQ=R.text;if(s.text+=VQ,q?.(VQ),U)G=Date.now()-_,U=!1}else if(R.type==="thinking_delta"&&t){let VQ=R.thinking;t.thinking+=VQ,W?.(VQ)}else if(R.type==="input_json_delta"&&P)vQ+=R.partial_json;break}case"content_block_stop":if(s)jQ.push(s),s=null;else if(t)jQ.push(t),t=null;else if(P){try{P.input=JSON.parse(vQ)}catch{P.input={}}jQ.push(P),H?.({id:P.id,name:P.name,input:P.input}),P=null}break;case"message_delta":{let R=qQ;if(R.usage)KQ.output_tokens=R.usage.output_tokens;if(g&&R.delta?.stop_reason)g.stop_reason=R.delta.stop_reason;break}case"message_stop":break}}catch{}}}}finally{m.releaseLock()}if(!g)throw Error("No message received from API");g.content=jQ;let{costUSD:U5,estimatedSavingsUSD:CQ}=G7(V,KQ),pQ=w7(KQ);pQ.estimatedSavingsUSD=CQ;let iQ=Date.now()-_;return{message:g,usage:KQ,cacheMetrics:pQ,costUSD:U5,durationMs:iQ,ttftMs:G||iQ}}import*as Q6 from"readline";var B7={Read:"low",Glob:"low",Grep:"low",Task:"low",Write:"medium",Edit:"medium",NotebookEdit:"medium",Bash:"high"},L7=[/\brm\s+-rf\b/,/\brm\s+-r\b/,/\brm\s+[^-]/,/\bgit\s+push\s+--force\b/,/\bgit\s+reset\s+--hard\b/,/\bgit\s+clean\s+-fd\b/,/\bdrop\b/i,/\bdelete\b/i,/\btruncate\b/i,/\bformat\b/i,/\bdd\s+if=/,/\bshred\b/,/\b:\(\)\{\s*:\|:\s*&\s*\};\s*:\b/];function F7(Q,X){let Z=B7[Q]??"medium";if(Q==="Bash"){let V=String(X.command??"");for(let $ of L7)if($.test(V))return"critical";if(/\bsudo\b/.test(V)||/\bchmod\b/.test(V))Z="high"}if(Q==="Write"||Q==="Edit"){let V=String(X.file_path??X.path??"");if(/\.(env|pem|key|secret|credentials)/.test(V))Z="high";if(/\/\.ssh\//.test(V)||/\/\.gnupg\//.test(V))Z="critical"}return Z}function v7(Q,X){switch(Q){case"Read":return`Read file: ${X.file_path??"unknown"}`;case"Write":return`Write file: ${X.file_path??"unknown"} (${String(X.content??"").length} chars)`;case"Edit":return`Edit file: ${X.file_path??"unknown"}`;case"Bash":return`Execute: ${String(X.command??"").slice(0,100)}${String(X.command??"").length>100?"...":""}`;case"Glob":return`Find files: ${X.pattern??"*"}`;case"Grep":return`Search: "${X.pattern??""}" in ${X.path??"."}`;case"Task":return`Spawn agent: ${X.subagent_type??"unknown"}`;default:return`Use tool: ${Q}`}}class w5{cache={};cacheTimeout=300000;promptCallback;mode;constructor(Q="default",X){this.mode=Q,this.promptCallback=X??this.defaultPrompt.bind(this)}async checkPermission(Q,X){if(this.mode==="bypassPermissions")return{decision:"allow"};if(this.mode==="dontAsk")return{decision:"deny",reason:"Permission mode is dontAsk"};if(this.mode==="acceptEdits"){if(["Read","Write","Edit","Glob","Grep"].includes(Q))return{decision:"allow"}}if(this.mode==="plan"){if(["Read","Glob","Grep","Task"].includes(Q))return{decision:"allow"};return{decision:"deny",reason:"Plan mode - write operations disabled"}}let Z=this.getCacheKey(Q,X),V=this.cache[Z];if(V&&Date.now()-V.timestamp<this.cacheTimeout){if(V.decision==="allowAlways")return{decision:"allow",reason:"Previously approved (always)"};if(V.decision==="denyAlways")return{decision:"deny",reason:"Previously denied (always)"}}let $=F7(Q,X),J=v7(Q,X),z={toolName:Q,toolInput:X,riskLevel:$,description:J,file:X.file_path??X.path,command:Q==="Bash"?X.command:void 0};if(this.mode==="interactive"||this.mode==="default"){let Y=await this.promptCallback(z);if(Y.decision==="allowAlways"||Y.decision==="denyAlways")this.cache[Z]={decision:Y.decision,timestamp:Date.now()};return Y}return{decision:"allow"}}getCacheKey(Q,X){if(["Read","Write","Edit"].includes(Q))return`${Q}:${X.file_path??X.path??"unknown"}`;if(Q==="Bash"){let Z=String(X.command??"").slice(0,100);return`${Q}:${Z}`}return Q}async defaultPrompt(Q){return new Promise((X)=>{let Z=Q6.createInterface({input:process.stdin,output:process.stdout}),$={low:"\x1B[32m",medium:"\x1B[33m",high:"\x1B[31m",critical:"\x1B[35m"}[Q.riskLevel]??"\x1B[0m",J="\x1B[0m";if(console.log(""),console.log("\x1B[36m\u2501\u2501\u2501 Permission Required \u2501\u2501\u2501\x1B[0m"),console.log(`Tool: \x1B[1m${Q.toolName}\x1B[0m`),console.log(`Risk: ${$}${Q.riskLevel.toUpperCase()}\x1B[0m`),console.log(`Action: ${Q.description}`),Q.file)console.log(`File: ${Q.file}`);if(Q.command)console.log(`Command: ${Q.command.slice(0,200)}${Q.command.length>200?"...":""}`);console.log("");let z="[y]es / [n]o / [a]lways / [d]eny always";Z.question(`Allow? ${z}: `,(Y)=>{switch(Z.close(),Y.trim().toLowerCase()){case"y":case"yes":X({decision:"allow"});break;case"a":case"always":X({decision:"allowAlways"});break;case"d":case"deny":case"deny always":X({decision:"denyAlways"});break;case"n":case"no":default:X({decision:"deny"});break}})})}clearCache(){this.cache={}}setMode(Q){this.mode=Q,this.clearCache()}}var B5={readOnly:["Read","Glob","Grep","Task"],fileEdit:["Write","Edit","NotebookEdit"],system:["Bash"],network:[]};function $0(Q){return B5.readOnly.includes(Q)}function J0(Q){return B5.fileEdit.includes(Q)}function z0(Q){return B5.system.includes(Q)}var F5={tokenWarningThreshold:0.8,costUpdateInterval:5,toolSummaryInterval:3,envInfoOnStart:!0},L5={WARNING:0.8,CRITICAL:0.9,EMERGENCY:0.95};function O7(Q){let{current:X,max:Z,threshold:V=L5.WARNING}=Q;if(Z<=0)return"";let $=X/Z;if($<V)return"";let J=Z-X,z=Math.round($*100),Y,K;if($>=L5.EMERGENCY)Y="emergency",K="\uD83D\uDEA8";else if($>=L5.CRITICAL)Y="critical",K="\u26A0\uFE0F";else Y="warning",K="\u26A1";let q=[`${K} Token Usage ${Y.toUpperCase()}`,"",`Current: ${X.toLocaleString()} / ${Z.toLocaleString()} tokens (${z}%)`,`Remaining: ${J.toLocaleString()} tokens`];if(Y==="emergency")q.push(""),q.push("Consider summarizing or compacting the conversation to continue.");else if(Y==="critical")q.push(""),q.push("Approaching token limit. Consider wrapping up soon.");return q.join(`
4
- `)}function C7(Q){let{cost:X,previousCost:Z=0,currency:V="USD"}=Q,$=M7(V),J=X6(X,$),z=X-Z,Y=X6(Math.abs(z),$),K=["\uD83D\uDCB0 Cost Update","",`Total: ${J} ${V}`];if(z!==0){let q=z>0?"+":"-";K.push(`This turn: ${q}${Y} ${V}`)}return K.join(`
5
- `)}function X6(Q,X){if(Q<0.01)return`${X}${Q.toFixed(4)}`;else if(Q<1)return`${X}${Q.toFixed(3)}`;return`${X}${Q.toFixed(2)}`}function M7(Q){return{USD:"$",EUR:"\u20AC",GBP:"\xA3",JPY:"\xA5"}[Q]||Q}function R7(Q){let{tools:X,maxDisplay:Z=10}=Q;if(X.length===0)return"No tools used this session.";let V=new Map;for(let Y of X){let K=V.get(Y.name)||0;V.set(Y.name,K+1)}let $=[...V.entries()].sort((Y,K)=>K[1]-Y[1]),J=[`\uD83D\uDD27 Tool Usage Summary (${X.length} total calls)`,""],z=$.slice(0,Z);for(let[Y,K]of z)J.push(` \u2022 ${Y}: ${K} call${K===1?"":"s"}`);if($.length>Z){let Y=$.length-Z;J.push(` ... and ${Y} more tool${Y===1?"":"s"}`)}return J.join(`
6
- `)}function D7(Q){let{workingDirectory:X,gitStatus:Z,platform:V=process.platform,shell:$=process.env.SHELL||"unknown"}=Q,J=["\uD83D\uDCCD Environment Information","",`Working Directory: ${X}`,`Platform: ${V}`,`Shell: ${$}`];if(Z){if(J.push(""),J.push("Git Status:"),J.push(` Branch: ${Z.branch}`),Z.ahead>0||Z.behind>0)J.push(` Ahead: ${Z.ahead}, Behind: ${Z.behind}`);let z=Z.staged.length+Z.unstaged.length+Z.untracked.length+Z.conflicted.length;if(z>0){if(J.push(` Changes: ${z} file${z===1?"":"s"}`),Z.staged.length>0)J.push(` Staged: ${Z.staged.length}`);if(Z.unstaged.length>0)J.push(` Unstaged: ${Z.unstaged.length}`);if(Z.untracked.length>0)J.push(` Untracked: ${Z.untracked.length}`);if(Z.conflicted.length>0)J.push(` Conflicted: ${Z.conflicted.length}`)}else J.push(" Working tree clean")}return J.join(`
7
- `)}function Z6(Q){let{usage:X,maxTokens:Z,totalCost:V,previousCost:$,toolsUsed:J,workingDirectory:z,gitStatus:Y,turnNumber:K,config:q}=Q,W={...F5,...q},H=[],j=X.input_tokens+X.output_tokens,_=O7({current:j,max:Z,threshold:W.tokenWarningThreshold});if(_)H.push(_);if(K%W.costUpdateInterval===0){let G=C7({cost:V,previousCost:$});H.push(G)}if(K%W.toolSummaryInterval===0&&J.length>0){let G=R7({tools:J});H.push(G)}if(K===1&&W.envInfoOnStart){let G=D7({workingDirectory:z,gitStatus:Y});H.push(G)}if(H.length===0)return"";return["---","System Reminders:","",...H,"---"].join(`
8
- `)}function PQ(Q){if(!Q||Q.length===0)return 0;return Math.ceil(Q.length/4)}function V6(Q){switch(Q.type){case"text":return PQ(Q.text);case"image":return 100;case"tool_use":let X=JSON.stringify(Q.input);return PQ(Q.name)+PQ(X)+10;case"tool_result":if(typeof Q.content==="string")return PQ(Q.content)+10;return Q.content.reduce((Z,V)=>Z+V6(V),0)+10;case"thinking":return PQ(Q.thinking);default:return 0}}function P7(Q){return 4+Q.content.reduce((V,$)=>V+V6($),0)}function v5(Q){if(!Q||Q.length===0)return 0;return Q.reduce((X,Z)=>X+P7(Z),0)}function N7(Q){let X=[];for(let Z of Q.content)switch(Z.type){case"text":X.push(Z.text);break;case"tool_use":X.push(`[Tool: ${Z.name}(${JSON.stringify(Z.input)})]`);break;case"tool_result":let V=typeof Z.content==="string"?Z.content:Z.content.map(($)=>$.type==="text"?$.text:"[content]").join("");X.push(`[Result: ${V.slice(0,500)}${V.length>500?"...":""}]`);break;case"thinking":X.push(`[Thinking: ${Z.thinking.slice(0,200)}...]`);break}return X.join(`
9
- `)}function x7(Q){let X=new Map;for(let Z of Q)for(let V of Z.content)if(V.type==="tool_use")X.set(V.id,{use:V});for(let Z of Q)for(let V of Z.content)if(V.type==="tool_result"){let $=X.get(V.tool_use_id);if($)$.result=V}return X}async function S7(Q){if(!Q||Q.length===0)return"";let X=[];X.push(`[Context Summary: ${Q.length} messages compacted]
10
- `);let Z=[];for(let $=0;$<Q.length;$++){let J=Q[$];if(!J)continue;let z=J.role.toUpperCase(),Y=N7(J);for(let q of J.content)if(q.type==="tool_use")Z.push(`${q.name}`);let K=Y.length>300?`${Y.slice(0,300)}...`:Y;X.push(`${z}: ${K}
11
- `)}if(Z.length>0){let $=Z.reduce((z,Y)=>{return z[Y]=(z[Y]||0)+1,z},{}),J=Object.entries($).map(([z,Y])=>`${z}(${Y})`).join(", ");X.push(`
12
- Tools used: ${J}
13
- `)}let V=X.join("");if(V.length>8000)V=V.slice(0,8000)+`
14
- ...[truncated]`;return V}async function O5(Q,X,Z={}){let{keepFirst:V=1,keepLast:$=5,preserveToolPairs:J=!0}=Z,z=v5(Q);if(z<=X)return{messages:Q,messagesRemoved:0,tokensBefore:z,tokensAfter:z,didCompact:!1};if(Q.length<=V+$)return{messages:Q,messagesRemoved:0,tokensBefore:z,tokensAfter:z,didCompact:!1};let Y=Q.slice(0,V),K=Q.slice(V,-$),q=Q.slice(-$),H={role:"user",content:[{type:"text",text:`[Previous context has been compacted for continuity]
15
-
16
- ${await S7(K)}`}]},j=[];if(J&&K.length>0){let w=x7(K),A=Array.from(w.values()).slice(-3).filter((B)=>B.result&&!B.result.is_error);for(let B of A)if(j.push(B.use),B.result)j.push(B.result)}let _=[...Y,H];if(j.length>0)_.push({role:"assistant",content:j.filter((w)=>w.type==="tool_use")}),_.push({role:"user",content:j.filter((w)=>w.type==="tool_result")});_.push(...q);let G=v5(_),U=Q.length-_.length;return console.log(`Context compaction: ${Q.length} -> ${_.length} messages, ${z} -> ${G} tokens`),{messages:_,messagesRemoved:U,tokensBefore:z,tokensAfter:G,didCompact:!0}}function $6(Q,X,Z=0.9){if(Q.length<8)return!1;let V=v5(Q),$=Math.floor(X*Z);return V>=$}function C5(Q){if(!Q.didCompact)return{reductionPercent:0,tokensSaved:0};let X=Q.tokensBefore-Q.tokensAfter,Z=X/Q.tokensBefore*100;return{reductionPercent:Math.round(Z*100)/100,tokensSaved:X}}async function L0(Q,X){let{apiKey:Z,model:V="claude-sonnet-4-6",maxTokens:$=4096,systemPrompt:J,tools:z,permissionMode:Y,workingDirectory:K,gitStatus:q=null,reminderConfig:W,cacheConfig:H=aQ,thinking:j,onText:_,onThinking:G,onToolUse:U,onToolResult:w,onMetrics:A,onReminder:B,onPermissionRequest:F,signal:v}=X,L=new w5(Y,F),O=[...Q],S=[],m=[],h=0,g=0,jQ=0,KQ=0,s=0,t=0,P={cacheHits:0,cacheMisses:0,totalCacheReadTokens:0,totalCacheWriteTokens:0,cacheHitRate:0,estimatedSavingsUSD:0},vQ={...F5,...W},OQ=!0;while(OQ){if(v?.aborted)break;jQ++;let U5=S[S.length-1],CQ=Z6({usage:U5?.usage??{input_tokens:0,output_tokens:0},maxTokens:$,totalCost:h,previousCost:KQ,toolsUsed:m,workingDirectory:K,gitStatus:q,turnNumber:jQ,config:vQ});if(CQ)B?.(CQ);if($6(O,$)){let D=await O5(O,$,{keepFirst:0,keepLast:3,preserveToolPairs:!0});if(D.didCompact&&D.tokensAfter<D.tokensBefore){O.length=0,O.push(...D.messages),s++;let DQ=D.tokensBefore-D.tokensAfter;t+=DQ;let M=C5(D);console.log(`Context compacted: ${M.reductionPercent}% reduction, ${M.tokensSaved} tokens saved`)}}let pQ=I7(O,J,CQ),iQ=await e5(pQ,{apiKey:Z,model:V,maxTokens:$,systemPrompt:J,cacheConfig:H,thinking:j,tools:z.map((D)=>({name:D.name,description:D.description,input_schema:D.input_schema})),onToken:_,onThinking:G,onToolUse:U,signal:v}),{message:C,usage:ZQ,cacheMetrics:n,costUSD:MQ,durationMs:RQ,ttftMs:nQ}=iQ,qQ={model:V,messageCount:O.length,messageTokens:ZQ.input_tokens+ZQ.output_tokens,usage:ZQ,cacheMetrics:n,durationMs:RQ,ttftMs:nQ,costUSD:MQ,stopReason:C.stop_reason,requestId:C.id};if(S.push(qQ),KQ=h,h+=MQ,g+=RQ,n)P.cacheHits+=n.cacheHits,P.cacheMisses+=n.cacheMisses,P.totalCacheReadTokens+=n.totalCacheReadTokens,P.totalCacheWriteTokens+=n.totalCacheWriteTokens,P.estimatedSavingsUSD+=n.estimatedSavingsUSD;let R=P.cacheHits+P.cacheMisses;if(P.cacheHitRate=R>0?P.cacheHits/R:0,A?.(qQ),O.push({role:"assistant",content:C.content}),C.stop_reason==="end_turn"||C.stop_reason==="stop_sequence"){OQ=!1;break}if(C.stop_reason==="max_tokens"){let D=await O5(O,$,{keepFirst:0,keepLast:3,preserveToolPairs:!0});if(D.didCompact&&D.tokensAfter<D.tokensBefore){O.length=0,O.push(...D.messages),s++;let DQ=D.tokensBefore-D.tokensAfter;t+=DQ;let M=C5(D);console.log(`Context compacted: ${M.reductionPercent}% reduction, ${M.tokensSaved} tokens saved`);continue}else{OQ=!1;break}}let VQ=C.content.filter((D)=>D.type==="tool_use");if(m.push(...VQ),VQ.length===0){OQ=!1;break}let a5=[];if(v?.aborted);else{let D=VQ.map(async(M)=>{let A5=z.find(($Q)=>$Q.name===M.name);if(!A5)return{toolUseId:M.id,result:{type:"tool_result",tool_use_id:M.id,content:`Error: Unknown tool "${M.name}"`,is_error:!0},toolResult:null};let oQ=await L.checkPermission(A5.name,M.input);if(oQ.decision==="deny"||oQ.decision==="denyAlways")return{toolUseId:M.id,result:{type:"tool_result",tool_use_id:M.id,content:`Permission denied for tool "${M.name}"${oQ.reason?`: ${oQ.reason}`:""}`,is_error:!0},toolResult:null};try{let $Q=await A5.handler(M.input,{workingDirectory:K,permissionMode:Y,abortSignal:v});return{toolUseId:M.id,result:{type:"tool_result",tool_use_id:M.id,content:$Q.content,is_error:$Q.is_error},toolResult:{id:M.id,result:$Q}}}catch($Q){let V7=$Q instanceof Error?$Q.message:String($Q);return{toolUseId:M.id,result:{type:"tool_result",tool_use_id:M.id,content:`Error: ${V7}`,is_error:!0},toolResult:null}}}),DQ=await Promise.all(D);for(let M of DQ)if(a5.push(M.result),M.toolResult)w?.(M.toolResult)}O.push({role:"user",content:a5})}return{messages:O,metrics:S,totalCost:h,totalDuration:g,totalCacheMetrics:P,compactionCount:s,totalTokensCompacted:t}}function I7(Q,X,Z){if(Z&&Q.length>0){let V=[...Q];for(let $=V.length-1;$>=0;$--){let J=V[$];if(J&&J.role==="user"){let z={role:"user",content:Array.isArray(J.content)?k7(J.content,Z):[{type:"text",text:`${String(J.content)}
17
-
18
- ${Z}`}]};V[$]=z;break}}return V}return Q}function k7(Q,X){if(Q.length>0){let V=Q[Q.length-1];if(V&&V.type==="text"){let $={type:"text",text:`${V.text}
19
-
20
- ${X}`};return[...Q.slice(0,-1),$]}}let Z={type:"text",text:`
21
-
22
- ${X}`};return[...Q,Z]}function M5(Q){if(Q<0.01)return`$${Q.toFixed(4)}`;return`$${Q.toFixed(2)}`}function F0(Q){let X=M5(Q.costUSD),Z=`${Q.usage.input_tokens.toLocaleString()} input, ${Q.usage.output_tokens.toLocaleString()} output`;if(Q.usage.cache_read_input_tokens||Q.usage.cache_creation_input_tokens){let V=Q.usage.cache_read_input_tokens?.toLocaleString()??"0",$=Q.usage.cache_creation_input_tokens?.toLocaleString()??"0";return`Cost: ${X} | Tokens: ${Z} | Cache: ${V} read, ${$} write`}return`Cost: ${X} | Tokens: ${Z}`}function v0(Q){let X=M5(Q.costUSD),Z=Q.usage.input_tokens+Q.usage.output_tokens;return`Cost: ${X} | Tokens: ${Z.toLocaleString()}`}function O0(Q){let X=M5(Q.estimatedSavingsUSD);return`Cache: ${(Q.cacheHitRate*100).toFixed(1)}% hit rate | ${Q.totalCacheReadTokens.toLocaleString()} read | ${Q.totalCacheWriteTokens.toLocaleString()} written | Saved: ${X}`}import{homedir as T7}from"os";import{join as JQ}from"path";class E7{sessionsDir;currentSessionId=null;currentSessionFile=null;writeQueue=Promise.resolve();constructor(Q){this.sessionsDir=Q??JQ(T7(),".claude","sessions")}async init(){try{await Bun.write(JQ(this.sessionsDir,".gitkeep"),"")}catch{}}generateSessionId(){let Q=Date.now().toString(36),X=Math.random().toString(36).slice(2,8);return`${Q}-${X}`}async createSession(Q){await this.init();let X=this.generateSessionId();this.currentSessionId=X,this.currentSessionFile=JQ(this.sessionsDir,`${X}.jsonl`);let Z={id:X,created:Date.now(),updated:Date.now(),model:Q.model,workingDirectory:Q.workingDirectory,agentName:Q.agentName,agentColor:Q.agentColor,teamName:Q.teamName};await this.appendEntry(Z);let V={type:"context",timestamp:Date.now(),workingDirectory:Q.workingDirectory};return await this.appendEntry(V),X}async resumeSession(Q){let X=JQ(this.sessionsDir,`${Q}.jsonl`);try{let Z=await Bun.file(X).text();if(!Z)return null;let V=Z.trim().split(`
23
- `),$=[];for(let J of V)try{$.push(JSON.parse(J))}catch{}return this.parseSessionEntries($)}catch{return null}}parseSessionEntries(Q){let X=null,Z=[],V=[],$=[],J=null;for(let z of Q){if(!("type"in z)&&"id"in z&&"created"in z){X=z;continue}if("type"in z){let Y=z;switch(Y.type){case"message":Z.push(Y.data);break;case"tool_use":V.push(Y);break;case"metrics":$.push(Y.data);break;case"context":J=Y;break}}}if(!X)X={id:"unknown",created:Date.now(),updated:Date.now(),model:"claude-sonnet-4-6",workingDirectory:process.cwd()};return{metadata:X,messages:Z,tools:V,metrics:$,context:J}}async appendEntry(Q){if(!this.currentSessionFile)return;this.writeQueue=this.writeQueue.then(async()=>{let X=JSON.stringify(Q)+`
24
- `,Z=Bun.file(this.currentSessionFile),V=await Z.exists()?await Z.text():"";await Bun.write(this.currentSessionFile,V+X)}),await this.writeQueue}async saveMessage(Q){let X={type:"message",timestamp:Date.now(),data:Q};await this.appendEntry(X),await this.updateTimestamp()}async saveToolUse(Q,X,Z,V,$){let J={type:"tool_use",timestamp:Date.now(),toolId:Q,toolName:X,input:Z,result:V,isError:$};await this.appendEntry(J)}async saveMetrics(Q){let X={type:"metrics",timestamp:Date.now(),data:Q};await this.appendEntry(X)}async updateTimestamp(){if(!this.currentSessionFile||!this.currentSessionId)return}async listSessions(Q=20){await this.init();let X=Bun.file(this.sessionsDir),Z=[];try{let $=[...new Bun.Glob("*.jsonl").scanSync(this.sessionsDir)],J=await Promise.all($.map(async(z)=>{let Y=JQ(this.sessionsDir,z),K=await Bun.file(Y).stat();return{file:z,fullPath:Y,mtime:K?.mtime??new Date(0)}}));J.sort((z,Y)=>Y.mtime.getTime()-z.mtime.getTime());for(let{file:z,fullPath:Y}of J.slice(0,Q)){let K=z.replace(".jsonl",""),q=await this.getSessionSummary(K,Y);if(q)Z.push(q)}}catch{}return Z}async getSessionSummary(Q,X){let Z=X??JQ(this.sessionsDir,`${Q}.jsonl`);try{let V=await Bun.file(Z).text();if(!V)return null;let $=V.trim().split(`
25
- `),J=null,z=0,Y=0,K=0,q=0,W;for(let H of $)try{let j=JSON.parse(H);if(j.id&&j.created)J=j;else if(j.type==="message"){z++;let _=j.data;if(!W&&_.role==="user"){let G=_.content.find((U)=>U.type==="text");if(G&&"text"in G){if(W=G.text.slice(0,100),G.text.length>100)W+="..."}}}else if(j.type==="metrics")Y+=j.data.costUSD,K+=j.data.usage.input_tokens,q+=j.data.usage.output_tokens}catch{}if(!J)return null;return{id:Q,created:J.created,updated:J.updated,model:J.model,messageCount:z,totalCost:Y,totalTokens:{input:K,output:q},firstMessage:W,workingDirectory:J.workingDirectory}}catch{return null}}getCurrentSessionId(){return this.currentSessionId}async exportSession(Q,X,Z){let V=await this.resumeSession(Q);if(!V)throw Error(`Session not found: ${Q}`);let $,J;switch(X){case"jsonl":{let Y=JQ(this.sessionsDir,`${Q}.jsonl`);$=await Bun.file(Y).text(),J="jsonl";break}case"json":{$=JSON.stringify(V,null,2),J="json";break}case"markdown":{$=this.sessionToMarkdown(V),J="md";break}default:throw Error(`Unsupported format: ${X}`)}let z=Z??JQ(process.cwd(),`session-${Q}.${J}`);return await Bun.write(z,$),z}sessionToMarkdown(Q){let X=[];X.push(`# Session: ${Q.metadata.id}`),X.push(""),X.push(`**Created:** ${new Date(Q.metadata.created).toISOString()}`),X.push(`**Model:** ${Q.metadata.model}`),X.push(`**Working Directory:** ${Q.metadata.workingDirectory}`),X.push(""),X.push("## Conversation"),X.push("");for(let Z of Q.messages){let V=Z.role==="user"?"**User**":"**Claude**";X.push(`### ${V}`),X.push("");for(let $ of Z.content)if($.type==="text")X.push($.text),X.push("");else if($.type==="tool_use"){let J=$;X.push(`\`\`\`tool:${J.name}`),X.push(JSON.stringify(J.input,null,2)),X.push("```"),X.push("")}else if($.type==="tool_result"){let J=$;X.push(`**Result**${J.is_error?" (error)":""}:`),X.push("```"),X.push(typeof J.content==="string"?J.content:JSON.stringify(J.content,null,2)),X.push("```"),X.push("")}}if(Q.metrics.length>0){X.push("## Metrics"),X.push("");let Z=Q.metrics.reduce((J,z)=>J+z.costUSD,0),V=Q.metrics.reduce((J,z)=>J+z.usage.input_tokens,0),$=Q.metrics.reduce((J,z)=>J+z.usage.output_tokens,0);X.push(`- **Total Cost:** $${Z.toFixed(4)}`),X.push(`- **Total Input Tokens:** ${V.toLocaleString()}`),X.push(`- **Total Output Tokens:** ${$.toLocaleString()}`),X.push(`- **API Calls:** ${Q.metrics.length}`)}return X.join(`
26
- `)}async deleteSession(Q){let X=JQ(this.sessionsDir,`${Q}.jsonl`);try{if(await Bun.file(X).exists()){let{unlink:V}=await import("fs/promises");return await V(X),!0}return!1}catch{return!1}}}function b7(Q){let X=new Date(Q.created),Z=new Date(Q.updated),V=y7(Z),$=[];$.push(`\x1B[1m${Q.id}\x1B[0m (${V})`),$.push(` Model: ${Q.model} | Messages: ${Q.messageCount}`);let J=Q.totalCost<0.01?`$${Q.totalCost.toFixed(4)}`:`$${Q.totalCost.toFixed(2)}`;if($.push(` Cost: ${J} | Tokens: ${Q.totalTokens.input.toLocaleString()} in, ${Q.totalTokens.output.toLocaleString()} out`),Q.firstMessage)$.push(` Preview: ${Q.firstMessage}`);return $.push(` Directory: ${Q.workingDirectory}`),$.join(`
27
- `)}function y7(Q){let Z=new Date().getTime()-Q.getTime(),V=Math.floor(Z/60000),$=Math.floor(Z/3600000),J=Math.floor(Z/86400000);if(V<1)return"just now";if(V<60)return`${V}m ago`;if($<24)return`${$}h ago`;if(J<7)return`${J}d ago`;return Q.toLocaleDateString()}function D0(Q){if(Q.length===0){console.log("No sessions found."),console.log(`
28
- Start a new conversation to create a session.`);return}console.log(`\x1B[1mRecent Sessions (${Q.length})\x1B[0m
29
- `);for(let X of Q)console.log(b7(X)),console.log("");console.log("To resume a session:"),console.log(" claude-remake --resume <session-id>")}var R5=(Q,X,Z)=>{let V=Q instanceof RegExp?J6(Q,Z):Q,$=X instanceof RegExp?J6(X,Z):X,J=V!==null&&$!=null&&f7(V,$,Z);return J&&{start:J[0],end:J[1],pre:Z.slice(0,J[0]),body:Z.slice(J[0]+V.length,J[1]),post:Z.slice(J[1]+$.length)}},J6=(Q,X)=>{let Z=X.match(Q);return Z?Z[0]:null},f7=(Q,X,Z)=>{let V,$,J,z=void 0,Y,K=Z.indexOf(Q),q=Z.indexOf(X,K+1),W=K;if(K>=0&&q>0){if(Q===X)return[K,q];V=[],J=Z.length;while(W>=0&&!Y){if(W===K)V.push(W),K=Z.indexOf(Q,W+1);else if(V.length===1){let H=V.pop();if(H!==void 0)Y=[H,q]}else{if($=V.pop(),$!==void 0&&$<J)J=$,z=q;q=Z.indexOf(X,W+1)}W=K<q&&K>=0?K:q}if(V.length&&z!==void 0)Y=[J,z]}return Y};var z6="\x00SLASH"+Math.random()+"\x00",Y6="\x00OPEN"+Math.random()+"\x00",P5="\x00CLOSE"+Math.random()+"\x00",K6="\x00COMMA"+Math.random()+"\x00",q6="\x00PERIOD"+Math.random()+"\x00",u7=new RegExp(z6,"g"),h7=new RegExp(Y6,"g"),g7=new RegExp(P5,"g"),d7=new RegExp(K6,"g"),m7=new RegExp(q6,"g"),c7=/\\\\/g,l7=/\\{/g,p7=/\\}/g,i7=/\\,/g,n7=/\\./g,o7=1e5;function D5(Q){return!isNaN(Q)?parseInt(Q,10):Q.charCodeAt(0)}function a7(Q){return Q.replace(c7,z6).replace(l7,Y6).replace(p7,P5).replace(i7,K6).replace(n7,q6)}function r7(Q){return Q.replace(u7,"\\").replace(h7,"{").replace(g7,"}").replace(d7,",").replace(m7,".")}function H6(Q){if(!Q)return[""];let X=[],Z=R5("{","}",Q);if(!Z)return Q.split(",");let{pre:V,body:$,post:J}=Z,z=V.split(",");z[z.length-1]+="{"+$+"}";let Y=H6(J);if(J.length)z[z.length-1]+=Y.shift(),z.push.apply(z,Y);return X.push.apply(X,z),X}function W6(Q,X={}){if(!Q)return[];let{max:Z=o7}=X;if(Q.slice(0,2)==="{}")Q="\\{\\}"+Q.slice(2);return NQ(a7(Q),Z,!0).map(r7)}function s7(Q){return"{"+Q+"}"}function t7(Q){return/^-?0\d/.test(Q)}function e7(Q,X){return Q<=X}function Q8(Q,X){return Q>=X}function NQ(Q,X,Z){let V=[],$=R5("{","}",Q);if(!$)return[Q];let J=$.pre,z=$.post.length?NQ($.post,X,!1):[""];if(/\$$/.test($.pre))for(let Y=0;Y<z.length&&Y<X;Y++){let K=J+"{"+$.body+"}"+z[Y];V.push(K)}else{let Y=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test($.body),K=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test($.body),q=Y||K,W=$.body.indexOf(",")>=0;if(!q&&!W){if($.post.match(/,(?!,).*\}/))return Q=$.pre+"{"+$.body+P5+$.post,NQ(Q,X,!0);return[Q]}let H;if(q)H=$.body.split(/\.\./);else if(H=H6($.body),H.length===1&&H[0]!==void 0){if(H=NQ(H[0],X,!1).map(s7),H.length===1)return z.map((_)=>$.pre+H[0]+_)}let j;if(q&&H[0]!==void 0&&H[1]!==void 0){let _=D5(H[0]),G=D5(H[1]),U=Math.max(H[0].length,H[1].length),w=H.length===3&&H[2]!==void 0?Math.abs(D5(H[2])):1,A=e7;if(G<_)w*=-1,A=Q8;let F=H.some(t7);j=[];for(let v=_;A(v,G);v+=w){let L;if(K){if(L=String.fromCharCode(v),L==="\\")L=""}else if(L=String(v),F){let O=U-L.length;if(O>0){let S=Array(O+1).join("0");if(v<0)L="-"+S+L.slice(1);else L=S+L}}j.push(L)}}else{j=[];for(let _=0;_<H.length;_++)j.push.apply(j,NQ(H[_],X,!1))}for(let _=0;_<j.length;_++)for(let G=0;G<z.length&&V.length<X;G++){let U=J+j[_]+z[G];if(!Z||q||U)V.push(U)}}return V}var xQ=(Q)=>{if(typeof Q!=="string")throw TypeError("invalid pattern");if(Q.length>65536)throw TypeError("pattern is too long")};var X8={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},SQ=(Q)=>Q.replace(/[[\]\\-]/g,"\\$&"),Z8=(Q)=>Q.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),j6=(Q)=>Q.join(""),_6=(Q,X)=>{let Z=X;if(Q.charAt(Z)!=="[")throw Error("not in a brace expression");let V=[],$=[],J=Z+1,z=!1,Y=!1,K=!1,q=!1,W=Z,H="";Q:while(J<Q.length){let U=Q.charAt(J);if((U==="!"||U==="^")&&J===Z+1){q=!0,J++;continue}if(U==="]"&&z&&!K){W=J+1;break}if(z=!0,U==="\\"){if(!K){K=!0,J++;continue}}if(U==="["&&!K){for(let[w,[A,B,F]]of Object.entries(X8))if(Q.startsWith(w,J)){if(H)return["$.",!1,Q.length-Z,!0];if(J+=w.length,F)$.push(A);else V.push(A);Y=Y||B;continue Q}}if(K=!1,H){if(U>H)V.push(SQ(H)+"-"+SQ(U));else if(U===H)V.push(SQ(U));H="",J++;continue}if(Q.startsWith("-]",J+1)){V.push(SQ(U+"-")),J+=2;continue}if(Q.startsWith("-",J+1)){H=U,J+=2;continue}V.push(SQ(U)),J++}if(W<J)return["",!1,0,!1];if(!V.length&&!$.length)return["$.",!1,Q.length-Z,!0];if($.length===0&&V.length===1&&/^\\?.$/.test(V[0])&&!q){let U=V[0].length===2?V[0].slice(-1):V[0];return[Z8(U),!1,W-Z,!1]}let j="["+(q?"^":"")+j6(V)+"]",_="["+(q?"":"^")+j6($)+"]";return[V.length&&$.length?"("+j+"|"+_+")":V.length?j:_,Y,W-Z,!0]};var o=(Q,{windowsPathsNoEscape:X=!1,magicalBraces:Z=!0}={})=>{if(Z)return X?Q.replace(/\[([^\/\\])\]/g,"$1"):Q.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");return X?Q.replace(/\[([^\/\\{}])\]/g,"$1"):Q.replace(/((?!\\).|^)\[([^\/\\{}])\]/g,"$1$2").replace(/\\([^\/{}])/g,"$1")};var u,V8=new Set(["!","?","+","*","@"]),N5=(Q)=>V8.has(Q),G6=(Q)=>N5(Q.type),$8=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),J8=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),z8=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),U6=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),Y8="(?!(?:^|/)\\.\\.?(?:$|/))",rQ="(?!\\.)",K8=new Set(["[","."]),q8=new Set(["..","."]),H8=new Set("().*{}+?[]^$\\!"),W8=(Q)=>Q.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),x5="[^/]",A6=x5+"*?",w6=x5+"+?",j8=0;class AQ{type;#Q;#V;#$=!1;#X=[];#z;#C;#B;#W=!1;#Y;#j;#H=!1;id=++j8;get depth(){return(this.#z?.depth??-1)+1}[Symbol.for("nodejs.util.inspect.custom")](){return{"@@type":"AST",id:this.id,type:this.type,root:this.#Q.id,parent:this.#z?.id,depth:this.depth,partsLength:this.#X.length,parts:this.#X}}constructor(Q,X,Z={}){if(this.type=Q,Q)this.#V=!0;if(this.#z=X,this.#Q=this.#z?this.#z.#Q:this,this.#Y=this.#Q===this?Z:this.#Q.#Y,this.#B=this.#Q===this?[]:this.#Q.#B,Q==="!"&&!this.#Q.#W)this.#B.push(this);this.#C=this.#z?this.#z.#X.length:0}get hasMagic(){if(this.#V!==void 0)return this.#V;for(let Q of this.#X){if(typeof Q==="string")continue;if(Q.type||Q.hasMagic)return this.#V=!0}return this.#V}toString(){if(this.#j!==void 0)return this.#j;if(!this.type)return this.#j=this.#X.map((Q)=>String(Q)).join("");else return this.#j=this.type+"("+this.#X.map((Q)=>String(Q)).join("|")+")"}#K(){if(this!==this.#Q)throw Error("should only call on root");if(this.#W)return this;this.toString(),this.#W=!0;let Q;while(Q=this.#B.pop()){if(Q.type!=="!")continue;let X=Q,Z=X.#z;while(Z){for(let V=X.#C+1;!Z.type&&V<Z.#X.length;V++)for(let $ of Q.#X){if(typeof $==="string")throw Error("string part in extglob AST??");$.copyIn(Z.#X[V])}X=Z,Z=X.#z}}return this}push(...Q){for(let X of Q){if(X==="")continue;if(typeof X!=="string"&&!(X instanceof u&&X.#z===this))throw Error("invalid part: "+X);this.#X.push(X)}}toJSON(){let Q=this.type===null?this.#X.slice().map((X)=>typeof X==="string"?X:X.toJSON()):[this.type,...this.#X.map((X)=>X.toJSON())];if(this.isStart()&&!this.type)Q.unshift([]);if(this.isEnd()&&(this===this.#Q||this.#Q.#W&&this.#z?.type==="!"))Q.push({});return Q}isStart(){if(this.#Q===this)return!0;if(!this.#z?.isStart())return!1;if(this.#C===0)return!0;let Q=this.#z;for(let X=0;X<this.#C;X++){let Z=Q.#X[X];if(!(Z instanceof u&&Z.type==="!"))return!1}return!0}isEnd(){if(this.#Q===this)return!0;if(this.#z?.type==="!")return!0;if(!this.#z?.isEnd())return!1;if(!this.type)return this.#z?.isEnd();let Q=this.#z?this.#z.#X.length:0;return this.#C===Q-1}copyIn(Q){if(typeof Q==="string")this.push(Q);else this.push(Q.clone(this))}clone(Q){let X=new u(this.type,Q);for(let Z of this.#X)X.copyIn(Z);return X}static#J(Q,X,Z,V,$){let J=V.maxExtglobRecursion??2,z=!1,Y=!1,K=-1,q=!1;if(X.type===null){let G=Z,U="";while(G<Q.length){let w=Q.charAt(G++);if(z||w==="\\"){z=!z,U+=w;continue}if(Y){if(G===K+1){if(w==="^"||w==="!")q=!0}else if(w==="]"&&!(G===K+2&&q))Y=!1;U+=w;continue}else if(w==="["){Y=!0,K=G,q=!1,U+=w;continue}if(!V.noext&&N5(w)&&Q.charAt(G)==="("&&$<=J){X.push(U),U="";let B=new u(w,X);G=u.#J(Q,B,G,V,$+1),X.push(B);continue}U+=w}return X.push(U),G}let W=Z+1,H=new u(null,X),j=[],_="";while(W<Q.length){let G=Q.charAt(W++);if(z||G==="\\"){z=!z,_+=G;continue}if(Y){if(W===K+1){if(G==="^"||G==="!")q=!0}else if(G==="]"&&!(W===K+2&&q))Y=!1;_+=G;continue}else if(G==="["){Y=!0,K=W,q=!1,_+=G;continue}if(!V.noext&&N5(G)&&Q.charAt(W)==="("&&($<=J||X&&X.#G(G))){let w=X&&X.#G(G)?0:1;H.push(_),_="";let A=new u(G,H);H.push(A),W=u.#J(Q,A,W,V,$+w);continue}if(G==="|"){H.push(_),_="",j.push(H),H=new u(null,X);continue}if(G===")"){if(_===""&&X.#X.length===0)X.#H=!0;return H.push(_),_="",X.push(...j,H),W}_+=G}return X.type=null,X.#V=void 0,X.#X=[Q.substring(Z-1)],W}#L(Q){return this.#v(Q,J8)}#v(Q,X=$8){if(!Q||typeof Q!=="object"||Q.type!==null||Q.#X.length!==1||this.type===null)return!1;let Z=Q.#X[0];if(!Z||typeof Z!=="object"||Z.type===null)return!1;return this.#G(Z.type,X)}#G(Q,X=z8){return!!X.get(this.type)?.includes(Q)}#U(Q,X){let Z=Q.#X[0],V=new u(null,Z,this.options);V.#X.push(""),Z.push(V),this.#D(Q,X)}#D(Q,X){let Z=Q.#X[0];this.#X.splice(X,1,...Z.#X);for(let V of Z.#X)if(typeof V==="object")V.#z=this;this.#j=void 0}#A(Q){return!!U6.get(this.type)?.has(Q)}#O(Q){if(!Q||typeof Q!=="object"||Q.type!==null||Q.#X.length!==1||this.type===null||this.#X.length!==1)return!1;let X=Q.#X[0];if(!X||typeof X!=="object"||X.type===null)return!1;return this.#A(X.type)}#M(Q){let X=U6.get(this.type),Z=Q.#X[0],V=X?.get(Z.type);if(!V)return!1;this.#X=Z.#X;for(let $ of this.#X)if(typeof $==="object")$.#z=this;this.type=V,this.#j=void 0,this.#H=!1}static fromGlob(Q,X={}){let Z=new u(null,void 0,X);return u.#J(Q,Z,0,X,0),Z}toMMPattern(){if(this!==this.#Q)return this.#Q.toMMPattern();let Q=this.toString(),[X,Z,V,$]=this.toRegExpSource();if(!(V||this.#V||this.#Y.nocase&&!this.#Y.nocaseMagicOnly&&Q.toUpperCase()!==Q.toLowerCase()))return Z;let z=(this.#Y.nocase?"i":"")+($?"u":"");return Object.assign(new RegExp(`^${X}$`,z),{_src:X,_glob:Q})}get options(){return this.#Y}toRegExpSource(Q){let X=Q??!!this.#Y.dot;if(this.#Q===this)this.#_(),this.#K();if(!G6(this)){let Y=this.isStart()&&this.isEnd()&&!this.#X.some((j)=>typeof j!=="string"),K=this.#X.map((j)=>{let[_,G,U,w]=typeof j==="string"?u.#F(j,this.#V,Y):j.toRegExpSource(Q);return this.#V=this.#V||U,this.#$=this.#$||w,_}).join(""),q="";if(this.isStart()){if(typeof this.#X[0]==="string"){if(!(this.#X.length===1&&q8.has(this.#X[0]))){let _=K8,G=X&&_.has(K.charAt(0))||K.startsWith("\\.")&&_.has(K.charAt(2))||K.startsWith("\\.\\.")&&_.has(K.charAt(4)),U=!X&&!Q&&_.has(K.charAt(0));q=G?Y8:U?rQ:""}}}let W="";if(this.isEnd()&&this.#Q.#W&&this.#z?.type==="!")W="(?:$|\\/)";return[q+K+W,o(K),this.#V=!!this.#V,this.#$]}let Z=this.type==="*"||this.type==="+",V=this.type==="!"?"(?:(?!(?:":"(?:",$=this.#w(X);if(this.isStart()&&this.isEnd()&&!$&&this.type!=="!"){let Y=this.toString(),K=this;return K.#X=[Y],K.type=null,K.#V=void 0,[Y,o(this.toString()),!1,!1]}let J=!Z||Q||X||!rQ?"":this.#w(!0);if(J===$)J="";if(J)$=`(?:${$})(?:${J})*?`;let z="";if(this.type==="!"&&this.#H)z=(this.isStart()&&!X?rQ:"")+w6;else{let Y=this.type==="!"?"))"+(this.isStart()&&!X&&!Q?rQ:"")+A6+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&J?")":this.type==="*"&&J?")?":`)${this.type}`;z=V+$+Y}return[z,o($),this.#V=!!this.#V,this.#$]}#_(){if(!G6(this)){for(let Q of this.#X)if(typeof Q==="object")Q.#_()}else{let Q=0,X=!1;do{X=!0;for(let Z=0;Z<this.#X.length;Z++){let V=this.#X[Z];if(typeof V==="object"){if(V.#_(),this.#v(V))X=!1,this.#D(V,Z);else if(this.#L(V))X=!1,this.#U(V,Z);else if(this.#O(V))X=!1,this.#M(V)}}}while(!X&&++Q<10)}this.#j=void 0}#w(Q){return this.#X.map((X)=>{if(typeof X==="string")throw Error("string type in extglob ast??");let[Z,V,$,J]=X.toRegExpSource(Q);return this.#$=this.#$||J,Z}).filter((X)=>!(this.isStart()&&this.isEnd())||!!X).join("|")}static#F(Q,X,Z=!1){let V=!1,$="",J=!1,z=!1;for(let Y=0;Y<Q.length;Y++){let K=Q.charAt(Y);if(V){V=!1,$+=(H8.has(K)?"\\":"")+K;continue}if(K==="*"){if(z)continue;z=!0,$+=Z&&/^[*]+$/.test(Q)?w6:A6,X=!0;continue}else z=!1;if(K==="\\"){if(Y===Q.length-1)$+="\\\\";else V=!0;continue}if(K==="["){let[q,W,H,j]=_6(Q,Y);if(H){$+=q,J=J||W,Y+=H-1,X=X||j;continue}}if(K==="?"){$+=x5,X=!0;continue}$+=W8(K)}return[$,o(Q),!!X,J]}}u=AQ;var wQ=(Q,{windowsPathsNoEscape:X=!1,magicalBraces:Z=!1}={})=>{if(Z)return X?Q.replace(/[?*()[\]{}]/g,"[$&]"):Q.replace(/[?*()[\]\\{}]/g,"\\$&");return X?Q.replace(/[?*()[\]]/g,"[$&]"):Q.replace(/[?*()[\]\\]/g,"\\$&")};var b=(Q,X,Z={})=>{if(xQ(X),!Z.nocomment&&X.charAt(0)==="#")return!1;return new l(X,Z).match(Q)},_8=/^\*+([^+@!?\*\[\(]*)$/,G8=(Q)=>(X)=>!X.startsWith(".")&&X.endsWith(Q),U8=(Q)=>(X)=>X.endsWith(Q),A8=(Q)=>{return Q=Q.toLowerCase(),(X)=>!X.startsWith(".")&&X.toLowerCase().endsWith(Q)},w8=(Q)=>{return Q=Q.toLowerCase(),(X)=>X.toLowerCase().endsWith(Q)},B8=/^\*+\.\*+$/,L8=(Q)=>!Q.startsWith(".")&&Q.includes("."),F8=(Q)=>Q!=="."&&Q!==".."&&Q.includes("."),v8=/^\.\*+$/,O8=(Q)=>Q!=="."&&Q!==".."&&Q.startsWith("."),C8=/^\*+$/,M8=(Q)=>Q.length!==0&&!Q.startsWith("."),R8=(Q)=>Q.length!==0&&Q!=="."&&Q!=="..",D8=/^\?+([^+@!?\*\[\(]*)?$/,P8=([Q,X=""])=>{let Z=F6([Q]);if(!X)return Z;return X=X.toLowerCase(),(V)=>Z(V)&&V.toLowerCase().endsWith(X)},N8=([Q,X=""])=>{let Z=v6([Q]);if(!X)return Z;return X=X.toLowerCase(),(V)=>Z(V)&&V.toLowerCase().endsWith(X)},x8=([Q,X=""])=>{let Z=v6([Q]);return!X?Z:(V)=>Z(V)&&V.endsWith(X)},S8=([Q,X=""])=>{let Z=F6([Q]);return!X?Z:(V)=>Z(V)&&V.endsWith(X)},F6=([Q])=>{let X=Q.length;return(Z)=>Z.length===X&&!Z.startsWith(".")},v6=([Q])=>{let X=Q.length;return(Z)=>Z.length===X&&Z!=="."&&Z!==".."},O6=typeof process==="object"&&process?typeof process.env==="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",B6={win32:{sep:"\\"},posix:{sep:"/"}},I8=O6==="win32"?B6.win32.sep:B6.posix.sep;b.sep=I8;var N=Symbol("globstar **");b.GLOBSTAR=N;var k8="[^/]",T8=k8+"*?",E8="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",b8="(?:(?!(?:\\/|^)\\.).)*?",y8=(Q,X={})=>(Z)=>b(Z,Q,X);b.filter=y8;var c=(Q,X={})=>Object.assign({},Q,X),f8=(Q)=>{if(!Q||typeof Q!=="object"||!Object.keys(Q).length)return b;let X=b;return Object.assign((V,$,J={})=>X(V,$,c(Q,J)),{Minimatch:class extends X.Minimatch{constructor($,J={}){super($,c(Q,J))}static defaults($){return X.defaults(c(Q,$)).Minimatch}},AST:class extends X.AST{constructor($,J,z={}){super($,J,c(Q,z))}static fromGlob($,J={}){return X.AST.fromGlob($,c(Q,J))}},unescape:(V,$={})=>X.unescape(V,c(Q,$)),escape:(V,$={})=>X.escape(V,c(Q,$)),filter:(V,$={})=>X.filter(V,c(Q,$)),defaults:(V)=>X.defaults(c(Q,V)),makeRe:(V,$={})=>X.makeRe(V,c(Q,$)),braceExpand:(V,$={})=>X.braceExpand(V,c(Q,$)),match:(V,$,J={})=>X.match(V,$,c(Q,J)),sep:X.sep,GLOBSTAR:N})};b.defaults=f8;var C6=(Q,X={})=>{if(xQ(Q),X.nobrace||!/\{(?:(?!\{).)*\}/.test(Q))return[Q];return W6(Q,{max:X.braceExpandMax})};b.braceExpand=C6;var u8=(Q,X={})=>new l(Q,X).makeRe();b.makeRe=u8;var h8=(Q,X,Z={})=>{let V=new l(X,Z);if(Q=Q.filter(($)=>V.match($)),V.options.nonull&&!Q.length)Q.push(X);return Q};b.match=h8;var L6=/[?*]|[+@!]\(.*?\)|\[|\]/,g8=(Q)=>Q.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");class l{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(Q,X={}){xQ(Q),X=X||{},this.options=X,this.maxGlobstarRecursion=X.maxGlobstarRecursion??200,this.pattern=Q,this.platform=X.platform||O6,this.isWindows=this.platform==="win32";let Z="allowWindowsEscape";if(this.windowsPathsNoEscape=!!X.windowsPathsNoEscape||X[Z]===!1,this.windowsPathsNoEscape)this.pattern=this.pattern.replace(/\\/g,"/");this.preserveMultipleSlashes=!!X.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!X.nonegate,this.comment=!1,this.empty=!1,this.partial=!!X.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=X.windowsNoMagicRoot!==void 0?X.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let Q of this.set)for(let X of Q)if(typeof X!=="string")return!0;return!1}debug(...Q){}make(){let Q=this.pattern,X=this.options;if(!X.nocomment&&Q.charAt(0)==="#"){this.comment=!0;return}if(!Q){this.empty=!0;return}if(this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],X.debug)this.debug=(...$)=>console.error(...$);this.debug(this.pattern,this.globSet);let Z=this.globSet.map(($)=>this.slashSplit($));this.globParts=this.preprocess(Z),this.debug(this.pattern,this.globParts);let V=this.globParts.map(($,J,z)=>{if(this.isWindows&&this.windowsNoMagicRoot){let Y=$[0]===""&&$[1]===""&&($[2]==="?"||!L6.test($[2]))&&!L6.test($[3]),K=/^[a-z]:/i.test($[0]);if(Y)return[...$.slice(0,4),...$.slice(4).map((q)=>this.parse(q))];else if(K)return[$[0],...$.slice(1).map((q)=>this.parse(q))]}return $.map((Y)=>this.parse(Y))});if(this.debug(this.pattern,V),this.set=V.filter(($)=>$.indexOf(!1)===-1),this.isWindows)for(let $=0;$<this.set.length;$++){let J=this.set[$];if(J[0]===""&&J[1]===""&&this.globParts[$][2]==="?"&&typeof J[3]==="string"&&/^[a-z]:$/i.test(J[3]))J[2]="?"}this.debug(this.pattern,this.set)}preprocess(Q){if(this.options.noglobstar){for(let Z=0;Z<Q.length;Z++)for(let V=0;V<Q[Z].length;V++)if(Q[Z][V]==="**")Q[Z][V]="*"}let{optimizationLevel:X=1}=this.options;if(X>=2)Q=this.firstPhasePreProcess(Q),Q=this.secondPhasePreProcess(Q);else if(X>=1)Q=this.levelOneOptimize(Q);else Q=this.adjascentGlobstarOptimize(Q);return Q}adjascentGlobstarOptimize(Q){return Q.map((X)=>{let Z=-1;while((Z=X.indexOf("**",Z+1))!==-1){let V=Z;while(X[V+1]==="**")V++;if(V!==Z)X.splice(Z,V-Z)}return X})}levelOneOptimize(Q){return Q.map((X)=>{return X=X.reduce((Z,V)=>{let $=Z[Z.length-1];if(V==="**"&&$==="**")return Z;if(V===".."){if($&&$!==".."&&$!=="."&&$!=="**")return Z.pop(),Z}return Z.push(V),Z},[]),X.length===0?[""]:X})}levelTwoFileOptimize(Q){if(!Array.isArray(Q))Q=this.slashSplit(Q);let X=!1;do{if(X=!1,!this.preserveMultipleSlashes){for(let V=1;V<Q.length-1;V++){let $=Q[V];if(V===1&&$===""&&Q[0]==="")continue;if($==="."||$==="")X=!0,Q.splice(V,1),V--}if(Q[0]==="."&&Q.length===2&&(Q[1]==="."||Q[1]===""))X=!0,Q.pop()}let Z=0;while((Z=Q.indexOf("..",Z+1))!==-1){let V=Q[Z-1];if(V&&V!=="."&&V!==".."&&V!=="**")X=!0,Q.splice(Z-1,2),Z-=2}}while(X);return Q.length===0?[""]:Q}firstPhasePreProcess(Q){let X=!1;do{X=!1;for(let Z of Q){let V=-1;while((V=Z.indexOf("**",V+1))!==-1){let J=V;while(Z[J+1]==="**")J++;if(J>V)Z.splice(V+1,J-V);let z=Z[V+1],Y=Z[V+2],K=Z[V+3];if(z!=="..")continue;if(!Y||Y==="."||Y===".."||!K||K==="."||K==="..")continue;X=!0,Z.splice(V,1);let q=Z.slice(0);q[V]="**",Q.push(q),V--}if(!this.preserveMultipleSlashes){for(let J=1;J<Z.length-1;J++){let z=Z[J];if(J===1&&z===""&&Z[0]==="")continue;if(z==="."||z==="")X=!0,Z.splice(J,1),J--}if(Z[0]==="."&&Z.length===2&&(Z[1]==="."||Z[1]===""))X=!0,Z.pop()}let $=0;while(($=Z.indexOf("..",$+1))!==-1){let J=Z[$-1];if(J&&J!=="."&&J!==".."&&J!=="**"){X=!0;let Y=$===1&&Z[$+1]==="**"?["."]:[];if(Z.splice($-1,2,...Y),Z.length===0)Z.push("");$-=2}}}}while(X);return Q}secondPhasePreProcess(Q){for(let X=0;X<Q.length-1;X++)for(let Z=X+1;Z<Q.length;Z++){let V=this.partsMatch(Q[X],Q[Z],!this.preserveMultipleSlashes);if(V){Q[X]=[],Q[Z]=V;break}}return Q.filter((X)=>X.length)}partsMatch(Q,X,Z=!1){let V=0,$=0,J=[],z="";while(V<Q.length&&$<X.length)if(Q[V]===X[$])J.push(z==="b"?X[$]:Q[V]),V++,$++;else if(Z&&Q[V]==="**"&&X[$]===Q[V+1])J.push(Q[V]),V++;else if(Z&&X[$]==="**"&&Q[V]===X[$+1])J.push(X[$]),$++;else if(Q[V]==="*"&&X[$]&&(this.options.dot||!X[$].startsWith("."))&&X[$]!=="**"){if(z==="b")return!1;z="a",J.push(Q[V]),V++,$++}else if(X[$]==="*"&&Q[V]&&(this.options.dot||!Q[V].startsWith("."))&&Q[V]!=="**"){if(z==="a")return!1;z="b",J.push(X[$]),V++,$++}else return!1;return Q.length===X.length&&J}parseNegate(){if(this.nonegate)return;let Q=this.pattern,X=!1,Z=0;for(let V=0;V<Q.length&&Q.charAt(V)==="!";V++)X=!X,Z++;if(Z)this.pattern=Q.slice(Z);this.negate=X}matchOne(Q,X,Z=!1){let V=0,$=0;if(this.isWindows){let z=typeof Q[0]==="string"&&/^[a-z]:$/i.test(Q[0]),Y=!z&&Q[0]===""&&Q[1]===""&&Q[2]==="?"&&/^[a-z]:$/i.test(Q[3]),K=typeof X[0]==="string"&&/^[a-z]:$/i.test(X[0]),q=!K&&X[0]===""&&X[1]===""&&X[2]==="?"&&typeof X[3]==="string"&&/^[a-z]:$/i.test(X[3]),W=Y?3:z?0:void 0,H=q?3:K?0:void 0;if(typeof W==="number"&&typeof H==="number"){let[j,_]=[Q[W],X[H]];if(j.toLowerCase()===_.toLowerCase())X[H]=j,$=H,V=W}}let{optimizationLevel:J=1}=this.options;if(J>=2)Q=this.levelTwoFileOptimize(Q);if(X.includes(N))return this.#Q(Q,X,Z,V,$);return this.#$(Q,X,Z,V,$)}#Q(Q,X,Z,V,$){let J=X.indexOf(N,$),z=X.lastIndexOf(N),[Y,K,q]=Z?[X.slice($,J),X.slice(J+1),[]]:[X.slice($,J),X.slice(J+1,z),X.slice(z+1)];if(Y.length){let A=Q.slice(V,V+Y.length);if(!this.#$(A,Y,Z,0,0))return!1;V+=Y.length,$+=Y.length}let W=0;if(q.length){if(q.length+V>Q.length)return!1;let A=Q.length-q.length;if(this.#$(Q,q,Z,A,0))W=q.length;else{if(Q[Q.length-1]!==""||V+q.length===Q.length)return!1;if(A--,!this.#$(Q,q,Z,A,0))return!1;W=q.length+1}}if(!K.length){let A=!!W;for(let B=V;B<Q.length-W;B++){let F=String(Q[B]);if(A=!0,F==="."||F===".."||!this.options.dot&&F.startsWith("."))return!1}return Z||A}let H=[[[],0]],j=H[0],_=0,G=[0];for(let A of K)if(A===N)G.push(_),j=[[],0],H.push(j);else j[0].push(A),_++;let U=H.length-1,w=Q.length-W;for(let A of H)A[1]=w-(G[U--]+A[0].length);return!!this.#V(Q,H,V,0,Z,0,!!W)}#V(Q,X,Z,V,$,J,z){let Y=X[V];if(!Y){for(let W=Z;W<Q.length;W++){z=!0;let H=Q[W];if(H==="."||H===".."||!this.options.dot&&H.startsWith("."))return!1}return z}let[K,q]=Y;while(Z<=q){if(this.#$(Q.slice(0,Z+K.length),K,$,Z,0)&&J<this.maxGlobstarRecursion){let j=this.#V(Q,X,Z+K.length,V+1,$,J+1,z);if(j!==!1)return j}let H=Q[Z];if(H==="."||H===".."||!this.options.dot&&H.startsWith("."))return!1;Z++}return $||null}#$(Q,X,Z,V,$){let J,z,Y,K;for(J=V,z=$,K=Q.length,Y=X.length;J<K&&z<Y;J++,z++){this.debug("matchOne loop");let q=X[z],W=Q[J];if(this.debug(X,q,W),q===!1||q===N)return!1;let H;if(typeof q==="string")H=W===q,this.debug("string match",q,W,H);else H=q.test(W),this.debug("pattern match",q,W,H);if(!H)return!1}if(J===K&&z===Y)return!0;else if(J===K)return Z;else if(z===Y)return J===K-1&&Q[J]==="";else throw Error("wtf?")}braceExpand(){return C6(this.pattern,this.options)}parse(Q){xQ(Q);let X=this.options;if(Q==="**")return N;if(Q==="")return"";let Z,V=null;if(Z=Q.match(C8))V=X.dot?R8:M8;else if(Z=Q.match(_8))V=(X.nocase?X.dot?w8:A8:X.dot?U8:G8)(Z[1]);else if(Z=Q.match(D8))V=(X.nocase?X.dot?N8:P8:X.dot?x8:S8)(Z);else if(Z=Q.match(B8))V=X.dot?F8:L8;else if(Z=Q.match(v8))V=O8;let $=AQ.fromGlob(Q,this.options).toMMPattern();if(V&&typeof $==="object")Reflect.defineProperty($,"test",{value:V});return $}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let Q=this.set;if(!Q.length)return this.regexp=!1,this.regexp;let X=this.options,Z=X.noglobstar?T8:X.dot?E8:b8,V=new Set(X.nocase?["i"]:[]),$=Q.map((Y)=>{let K=Y.map((W)=>{if(W instanceof RegExp)for(let H of W.flags.split(""))V.add(H);return typeof W==="string"?g8(W):W===N?N:W._src});K.forEach((W,H)=>{let j=K[H+1],_=K[H-1];if(W!==N||_===N)return;if(_===void 0)if(j!==void 0&&j!==N)K[H+1]="(?:\\/|"+Z+"\\/)?"+j;else K[H]=Z;else if(j===void 0)K[H-1]=_+"(?:\\/|\\/"+Z+")?";else if(j!==N)K[H-1]=_+"(?:\\/|\\/"+Z+"\\/)"+j,K[H+1]=N});let q=K.filter((W)=>W!==N);if(this.partial&&q.length>=1){let W=[];for(let H=1;H<=q.length;H++)W.push(q.slice(0,H).join("/"));return"(?:"+W.join("|")+")"}return q.join("/")}).join("|"),[J,z]=Q.length>1?["(?:",")"]:["",""];if($="^"+J+$+z+"$",this.partial)$="^(?:\\/|"+J+$.slice(1,-1)+z+")$";if(this.negate)$="^(?!"+$+").+$";try{this.regexp=new RegExp($,[...V].join(""))}catch(Y){this.regexp=!1}return this.regexp}slashSplit(Q){if(this.preserveMultipleSlashes)return Q.split("/");else if(this.isWindows&&/^\/\/[^\/]+/.test(Q))return["",...Q.split(/\/+/)];else return Q.split(/\/+/)}match(Q,X=this.partial){if(this.debug("match",Q,this.pattern),this.comment)return!1;if(this.empty)return Q==="";if(Q==="/"&&X)return!0;let Z=this.options;if(this.isWindows)Q=Q.split("\\").join("/");let V=this.slashSplit(Q);this.debug(this.pattern,"split",V);let $=this.set;this.debug(this.pattern,"set",$);let J=V[V.length-1];if(!J)for(let z=V.length-2;!J&&z>=0;z--)J=V[z];for(let z=0;z<$.length;z++){let Y=$[z],K=V;if(Z.matchBase&&Y.length===1)K=[J];if(this.matchOne(K,Y,X)){if(Z.flipNegate)return!0;return!this.negate}}if(Z.flipNegate)return!1;return this.negate}static defaults(Q){return b.defaults(Q).Minimatch}}b.AST=AQ;b.Minimatch=l;b.escape=wQ;b.unescape=o;import{fileURLToPath as F9}from"url";var d8=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,R6=new Set,S5=typeof process=="object"&&process?process:{},D6=(Q,X,Z,V)=>{typeof S5.emitWarning=="function"?S5.emitWarning(Q,X,Z,V):console.error(`[${Z}] ${X}: ${Q}`)},tQ=globalThis.AbortController,M6=globalThis.AbortSignal;if(typeof tQ>"u"){M6=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(Z,V){this._onabort.push(V)}},tQ=class{constructor(){X()}signal=new M6;abort(Z){if(!this.signal.aborted){this.signal.reason=Z,this.signal.aborted=!0;for(let V of this.signal._onabort)V(Z);this.signal.onabort?.(Z)}}};let Q=S5.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",X=()=>{Q&&(Q=!1,D6("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",X))}}var m8=(Q)=>!R6.has(Q),n0=Symbol("type"),HQ=(Q)=>Q&&Q===Math.floor(Q)&&Q>0&&isFinite(Q),P6=(Q)=>HQ(Q)?Q<=Math.pow(2,8)?Uint8Array:Q<=Math.pow(2,16)?Uint16Array:Q<=Math.pow(2,32)?Uint32Array:Q<=Number.MAX_SAFE_INTEGER?sQ:null:null,sQ=class extends Array{constructor(Q){super(Q),this.fill(0)}},c8=class Q{heap;length;static#Q=!1;static create(X){let Z=P6(X);if(!Z)return[];Q.#Q=!0;let V=new Q(X,Z);return Q.#Q=!1,V}constructor(X,Z){if(!Q.#Q)throw TypeError("instantiate Stack using Stack.create(n)");this.heap=new Z(X),this.length=0}push(X){this.heap[this.length++]=X}pop(){return this.heap[--this.length]}},IQ=class Q{#Q;#V;#$;#X;#z;#C;#B;#W;get perf(){return this.#W}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#Y;#j;#H;#K;#J;#L;#v;#G;#U;#D;#A;#O;#M;#_;#w;#F;#P;#Z;#E;static unsafeExposeInternals(X){return{starts:X.#M,ttls:X.#_,autopurgeTimers:X.#w,sizes:X.#O,keyMap:X.#H,keyList:X.#K,valList:X.#J,next:X.#L,prev:X.#v,get head(){return X.#G},get tail(){return X.#U},free:X.#D,isBackgroundFetch:(Z)=>X.#q(Z),backgroundFetch:(Z,V,$,J)=>X.#m(Z,V,$,J),moveToTail:(Z)=>X.#y(Z),indexes:(Z)=>X.#S(Z),rindexes:(Z)=>X.#I(Z),isStale:(Z)=>X.#R(Z)}}get max(){return this.#Q}get maxSize(){return this.#V}get calculatedSize(){return this.#j}get size(){return this.#Y}get fetchMethod(){return this.#C}get memoMethod(){return this.#B}get dispose(){return this.#$}get onInsert(){return this.#X}get disposeAfter(){return this.#z}constructor(X){let{max:Z=0,ttl:V,ttlResolution:$=1,ttlAutopurge:J,updateAgeOnGet:z,updateAgeOnHas:Y,allowStale:K,dispose:q,onInsert:W,disposeAfter:H,noDisposeOnSet:j,noUpdateTTL:_,maxSize:G=0,maxEntrySize:U=0,sizeCalculation:w,fetchMethod:A,memoMethod:B,noDeleteOnFetchRejection:F,noDeleteOnStaleGet:v,allowStaleOnFetchRejection:L,allowStaleOnFetchAbort:O,ignoreFetchAbort:S,perf:m}=X;if(m!==void 0&&typeof m?.now!="function")throw TypeError("perf option must have a now() method if specified");if(this.#W=m??d8,Z!==0&&!HQ(Z))throw TypeError("max option must be a nonnegative integer");let h=Z?P6(Z):Array;if(!h)throw Error("invalid max value: "+Z);if(this.#Q=Z,this.#V=G,this.maxEntrySize=U||this.#V,this.sizeCalculation=w,this.sizeCalculation){if(!this.#V&&!this.maxEntrySize)throw TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw TypeError("sizeCalculation set to non-function")}if(B!==void 0&&typeof B!="function")throw TypeError("memoMethod must be a function if defined");if(this.#B=B,A!==void 0&&typeof A!="function")throw TypeError("fetchMethod must be a function if specified");if(this.#C=A,this.#P=!!A,this.#H=new Map,this.#K=Array(Z).fill(void 0),this.#J=Array(Z).fill(void 0),this.#L=new h(Z),this.#v=new h(Z),this.#G=0,this.#U=0,this.#D=c8.create(Z),this.#Y=0,this.#j=0,typeof q=="function"&&(this.#$=q),typeof W=="function"&&(this.#X=W),typeof H=="function"?(this.#z=H,this.#A=[]):(this.#z=void 0,this.#A=void 0),this.#F=!!this.#$,this.#E=!!this.#X,this.#Z=!!this.#z,this.noDisposeOnSet=!!j,this.noUpdateTTL=!!_,this.noDeleteOnFetchRejection=!!F,this.allowStaleOnFetchRejection=!!L,this.allowStaleOnFetchAbort=!!O,this.ignoreFetchAbort=!!S,this.maxEntrySize!==0){if(this.#V!==0&&!HQ(this.#V))throw TypeError("maxSize must be a positive integer if specified");if(!HQ(this.maxEntrySize))throw TypeError("maxEntrySize must be a positive integer if specified");this.#l()}if(this.allowStale=!!K,this.noDeleteOnStaleGet=!!v,this.updateAgeOnGet=!!z,this.updateAgeOnHas=!!Y,this.ttlResolution=HQ($)||$===0?$:1,this.ttlAutopurge=!!J,this.ttl=V||0,this.ttl){if(!HQ(this.ttl))throw TypeError("ttl must be a positive integer if specified");this.#k()}if(this.#Q===0&&this.ttl===0&&this.#V===0)throw TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#Q&&!this.#V){let g="LRU_CACHE_UNBOUNDED";m8(g)&&(R6.add(g),D6("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",g,Q))}}getRemainingTTL(X){return this.#H.has(X)?1/0:0}#k(){let X=new sQ(this.#Q),Z=new sQ(this.#Q);this.#_=X,this.#M=Z;let V=this.ttlAutopurge?Array(this.#Q):void 0;this.#w=V,this.#u=(z,Y,K=this.#W.now())=>{if(Z[z]=Y!==0?K:0,X[z]=Y,V?.[z]&&(clearTimeout(V[z]),V[z]=void 0),Y!==0&&V){let q=setTimeout(()=>{this.#R(z)&&this.#x(this.#K[z],"expire")},Y+1);q.unref&&q.unref(),V[z]=q}},this.#N=(z)=>{Z[z]=X[z]!==0?this.#W.now():0},this.#T=(z,Y)=>{if(X[Y]){let K=X[Y],q=Z[Y];if(!K||!q)return;z.ttl=K,z.start=q,z.now=$||J();let W=z.now-q;z.remainingTTL=K-W}};let $=0,J=()=>{let z=this.#W.now();if(this.ttlResolution>0){$=z;let Y=setTimeout(()=>$=0,this.ttlResolution);Y.unref&&Y.unref()}return z};this.getRemainingTTL=(z)=>{let Y=this.#H.get(z);if(Y===void 0)return 0;let K=X[Y],q=Z[Y];if(!K||!q)return 1/0;let W=($||J())-q;return K-W},this.#R=(z)=>{let Y=Z[z],K=X[z];return!!K&&!!Y&&($||J())-Y>K}}#N=()=>{};#T=()=>{};#u=()=>{};#R=()=>!1;#l(){let X=new sQ(this.#Q);this.#j=0,this.#O=X,this.#f=(Z)=>{this.#j-=X[Z],X[Z]=0},this.#h=(Z,V,$,J)=>{if(this.#q(V))return 0;if(!HQ($))if(J){if(typeof J!="function")throw TypeError("sizeCalculation must be a function");if($=J(V,Z),!HQ($))throw TypeError("sizeCalculation return invalid (expect positive integer)")}else throw TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return $},this.#b=(Z,V,$)=>{if(X[Z]=V,this.#V){let J=this.#V-X[Z];for(;this.#j>J;)this.#d(!0)}this.#j+=X[Z],$&&($.entrySize=V,$.totalCalculatedSize=this.#j)}}#f=(X)=>{};#b=(X,Z,V)=>{};#h=(X,Z,V,$)=>{if(V||$)throw TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#S({allowStale:X=this.allowStale}={}){if(this.#Y)for(let Z=this.#U;!(!this.#g(Z)||((X||!this.#R(Z))&&(yield Z),Z===this.#G));)Z=this.#v[Z]}*#I({allowStale:X=this.allowStale}={}){if(this.#Y)for(let Z=this.#G;!(!this.#g(Z)||((X||!this.#R(Z))&&(yield Z),Z===this.#U));)Z=this.#L[Z]}#g(X){return X!==void 0&&this.#H.get(this.#K[X])===X}*entries(){for(let X of this.#S())this.#J[X]!==void 0&&this.#K[X]!==void 0&&!this.#q(this.#J[X])&&(yield[this.#K[X],this.#J[X]])}*rentries(){for(let X of this.#I())this.#J[X]!==void 0&&this.#K[X]!==void 0&&!this.#q(this.#J[X])&&(yield[this.#K[X],this.#J[X]])}*keys(){for(let X of this.#S()){let Z=this.#K[X];Z!==void 0&&!this.#q(this.#J[X])&&(yield Z)}}*rkeys(){for(let X of this.#I()){let Z=this.#K[X];Z!==void 0&&!this.#q(this.#J[X])&&(yield Z)}}*values(){for(let X of this.#S())this.#J[X]!==void 0&&!this.#q(this.#J[X])&&(yield this.#J[X])}*rvalues(){for(let X of this.#I())this.#J[X]!==void 0&&!this.#q(this.#J[X])&&(yield this.#J[X])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(X,Z={}){for(let V of this.#S()){let $=this.#J[V],J=this.#q($)?$.__staleWhileFetching:$;if(J!==void 0&&X(J,this.#K[V],this))return this.get(this.#K[V],Z)}}forEach(X,Z=this){for(let V of this.#S()){let $=this.#J[V],J=this.#q($)?$.__staleWhileFetching:$;J!==void 0&&X.call(Z,J,this.#K[V],this)}}rforEach(X,Z=this){for(let V of this.#I()){let $=this.#J[V],J=this.#q($)?$.__staleWhileFetching:$;J!==void 0&&X.call(Z,J,this.#K[V],this)}}purgeStale(){let X=!1;for(let Z of this.#I({allowStale:!0}))this.#R(Z)&&(this.#x(this.#K[Z],"expire"),X=!0);return X}info(X){let Z=this.#H.get(X);if(Z===void 0)return;let V=this.#J[Z],$=this.#q(V)?V.__staleWhileFetching:V;if($===void 0)return;let J={value:$};if(this.#_&&this.#M){let z=this.#_[Z],Y=this.#M[Z];if(z&&Y){let K=z-(this.#W.now()-Y);J.ttl=K,J.start=Date.now()}}return this.#O&&(J.size=this.#O[Z]),J}dump(){let X=[];for(let Z of this.#S({allowStale:!0})){let V=this.#K[Z],$=this.#J[Z],J=this.#q($)?$.__staleWhileFetching:$;if(J===void 0||V===void 0)continue;let z={value:J};if(this.#_&&this.#M){z.ttl=this.#_[Z];let Y=this.#W.now()-this.#M[Z];z.start=Math.floor(Date.now()-Y)}this.#O&&(z.size=this.#O[Z]),X.unshift([V,z])}return X}load(X){this.clear();for(let[Z,V]of X){if(V.start){let $=Date.now()-V.start;V.start=this.#W.now()-$}this.set(Z,V.value,V)}}set(X,Z,V={}){if(Z===void 0)return this.delete(X),this;let{ttl:$=this.ttl,start:J,noDisposeOnSet:z=this.noDisposeOnSet,sizeCalculation:Y=this.sizeCalculation,status:K}=V,{noUpdateTTL:q=this.noUpdateTTL}=V,W=this.#h(X,Z,V.size||0,Y);if(this.maxEntrySize&&W>this.maxEntrySize)return K&&(K.set="miss",K.maxEntrySizeExceeded=!0),this.#x(X,"set"),this;let H=this.#Y===0?void 0:this.#H.get(X);if(H===void 0)H=this.#Y===0?this.#U:this.#D.length!==0?this.#D.pop():this.#Y===this.#Q?this.#d(!1):this.#Y,this.#K[H]=X,this.#J[H]=Z,this.#H.set(X,H),this.#L[this.#U]=H,this.#v[H]=this.#U,this.#U=H,this.#Y++,this.#b(H,W,K),K&&(K.set="add"),q=!1,this.#E&&this.#X?.(Z,X,"add");else{this.#y(H);let j=this.#J[H];if(Z!==j){if(this.#P&&this.#q(j)){j.__abortController.abort(Error("replaced"));let{__staleWhileFetching:_}=j;_!==void 0&&!z&&(this.#F&&this.#$?.(_,X,"set"),this.#Z&&this.#A?.push([_,X,"set"]))}else z||(this.#F&&this.#$?.(j,X,"set"),this.#Z&&this.#A?.push([j,X,"set"]));if(this.#f(H),this.#b(H,W,K),this.#J[H]=Z,K){K.set="replace";let _=j&&this.#q(j)?j.__staleWhileFetching:j;_!==void 0&&(K.oldValue=_)}}else K&&(K.set="update");this.#E&&this.onInsert?.(Z,X,Z===j?"update":"replace")}if($!==0&&!this.#_&&this.#k(),this.#_&&(q||this.#u(H,$,J),K&&this.#T(K,H)),!z&&this.#Z&&this.#A){let j=this.#A,_;for(;_=j?.shift();)this.#z?.(..._)}return this}pop(){try{for(;this.#Y;){let X=this.#J[this.#G];if(this.#d(!0),this.#q(X)){if(X.__staleWhileFetching)return X.__staleWhileFetching}else if(X!==void 0)return X}}finally{if(this.#Z&&this.#A){let X=this.#A,Z;for(;Z=X?.shift();)this.#z?.(...Z)}}}#d(X){let Z=this.#G,V=this.#K[Z],$=this.#J[Z];return this.#P&&this.#q($)?$.__abortController.abort(Error("evicted")):(this.#F||this.#Z)&&(this.#F&&this.#$?.($,V,"evict"),this.#Z&&this.#A?.push([$,V,"evict"])),this.#f(Z),this.#w?.[Z]&&(clearTimeout(this.#w[Z]),this.#w[Z]=void 0),X&&(this.#K[Z]=void 0,this.#J[Z]=void 0,this.#D.push(Z)),this.#Y===1?(this.#G=this.#U=0,this.#D.length=0):this.#G=this.#L[Z],this.#H.delete(V),this.#Y--,Z}has(X,Z={}){let{updateAgeOnHas:V=this.updateAgeOnHas,status:$}=Z,J=this.#H.get(X);if(J!==void 0){let z=this.#J[J];if(this.#q(z)&&z.__staleWhileFetching===void 0)return!1;if(this.#R(J))$&&($.has="stale",this.#T($,J));else return V&&this.#N(J),$&&($.has="hit",this.#T($,J)),!0}else $&&($.has="miss");return!1}peek(X,Z={}){let{allowStale:V=this.allowStale}=Z,$=this.#H.get(X);if($===void 0||!V&&this.#R($))return;let J=this.#J[$];return this.#q(J)?J.__staleWhileFetching:J}#m(X,Z,V,$){let J=Z===void 0?void 0:this.#J[Z];if(this.#q(J))return J;let z=new tQ,{signal:Y}=V;Y?.addEventListener("abort",()=>z.abort(Y.reason),{signal:z.signal});let K={signal:z.signal,options:V,context:$},q=(U,w=!1)=>{let{aborted:A}=z.signal,B=V.ignoreFetchAbort&&U!==void 0,F=V.ignoreFetchAbort||!!(V.allowStaleOnFetchAbort&&U!==void 0);if(V.status&&(A&&!w?(V.status.fetchAborted=!0,V.status.fetchError=z.signal.reason,B&&(V.status.fetchAbortIgnored=!0)):V.status.fetchResolved=!0),A&&!B&&!w)return H(z.signal.reason,F);let v=_,L=this.#J[Z];return(L===_||B&&w&&L===void 0)&&(U===void 0?v.__staleWhileFetching!==void 0?this.#J[Z]=v.__staleWhileFetching:this.#x(X,"fetch"):(V.status&&(V.status.fetchUpdated=!0),this.set(X,U,K.options))),U},W=(U)=>(V.status&&(V.status.fetchRejected=!0,V.status.fetchError=U),H(U,!1)),H=(U,w)=>{let{aborted:A}=z.signal,B=A&&V.allowStaleOnFetchAbort,F=B||V.allowStaleOnFetchRejection,v=F||V.noDeleteOnFetchRejection,L=_;if(this.#J[Z]===_&&(!v||!w&&L.__staleWhileFetching===void 0?this.#x(X,"fetch"):B||(this.#J[Z]=L.__staleWhileFetching)),F)return V.status&&L.__staleWhileFetching!==void 0&&(V.status.returnedStale=!0),L.__staleWhileFetching;if(L.__returned===L)throw U},j=(U,w)=>{let A=this.#C?.(X,J,K);A&&A instanceof Promise&&A.then((B)=>U(B===void 0?void 0:B),w),z.signal.addEventListener("abort",()=>{(!V.ignoreFetchAbort||V.allowStaleOnFetchAbort)&&(U(void 0),V.allowStaleOnFetchAbort&&(U=(B)=>q(B,!0)))})};V.status&&(V.status.fetchDispatched=!0);let _=new Promise(j).then(q,W),G=Object.assign(_,{__abortController:z,__staleWhileFetching:J,__returned:void 0});return Z===void 0?(this.set(X,G,{...K.options,status:void 0}),Z=this.#H.get(X)):this.#J[Z]=G,G}#q(X){if(!this.#P)return!1;let Z=X;return!!Z&&Z instanceof Promise&&Z.hasOwnProperty("__staleWhileFetching")&&Z.__abortController instanceof tQ}async fetch(X,Z={}){let{allowStale:V=this.allowStale,updateAgeOnGet:$=this.updateAgeOnGet,noDeleteOnStaleGet:J=this.noDeleteOnStaleGet,ttl:z=this.ttl,noDisposeOnSet:Y=this.noDisposeOnSet,size:K=0,sizeCalculation:q=this.sizeCalculation,noUpdateTTL:W=this.noUpdateTTL,noDeleteOnFetchRejection:H=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:j=this.allowStaleOnFetchRejection,ignoreFetchAbort:_=this.ignoreFetchAbort,allowStaleOnFetchAbort:G=this.allowStaleOnFetchAbort,context:U,forceRefresh:w=!1,status:A,signal:B}=Z;if(!this.#P)return A&&(A.fetch="get"),this.get(X,{allowStale:V,updateAgeOnGet:$,noDeleteOnStaleGet:J,status:A});let F={allowStale:V,updateAgeOnGet:$,noDeleteOnStaleGet:J,ttl:z,noDisposeOnSet:Y,size:K,sizeCalculation:q,noUpdateTTL:W,noDeleteOnFetchRejection:H,allowStaleOnFetchRejection:j,allowStaleOnFetchAbort:G,ignoreFetchAbort:_,status:A,signal:B},v=this.#H.get(X);if(v===void 0){A&&(A.fetch="miss");let L=this.#m(X,v,F,U);return L.__returned=L}else{let L=this.#J[v];if(this.#q(L)){let h=V&&L.__staleWhileFetching!==void 0;return A&&(A.fetch="inflight",h&&(A.returnedStale=!0)),h?L.__staleWhileFetching:L.__returned=L}let O=this.#R(v);if(!w&&!O)return A&&(A.fetch="hit"),this.#y(v),$&&this.#N(v),A&&this.#T(A,v),L;let S=this.#m(X,v,F,U),m=S.__staleWhileFetching!==void 0&&V;return A&&(A.fetch=O?"stale":"refresh",m&&O&&(A.returnedStale=!0)),m?S.__staleWhileFetching:S.__returned=S}}async forceFetch(X,Z={}){let V=await this.fetch(X,Z);if(V===void 0)throw Error("fetch() returned undefined");return V}memo(X,Z={}){let V=this.#B;if(!V)throw Error("no memoMethod provided to constructor");let{context:$,forceRefresh:J,...z}=Z,Y=this.get(X,z);if(!J&&Y!==void 0)return Y;let K=V(X,Y,{options:z,context:$});return this.set(X,K,z),K}get(X,Z={}){let{allowStale:V=this.allowStale,updateAgeOnGet:$=this.updateAgeOnGet,noDeleteOnStaleGet:J=this.noDeleteOnStaleGet,status:z}=Z,Y=this.#H.get(X);if(Y!==void 0){let K=this.#J[Y],q=this.#q(K);return z&&this.#T(z,Y),this.#R(Y)?(z&&(z.get="stale"),q?(z&&V&&K.__staleWhileFetching!==void 0&&(z.returnedStale=!0),V?K.__staleWhileFetching:void 0):(J||this.#x(X,"expire"),z&&V&&(z.returnedStale=!0),V?K:void 0)):(z&&(z.get="hit"),q?K.__staleWhileFetching:(this.#y(Y),$&&this.#N(Y),K))}else z&&(z.get="miss")}#c(X,Z){this.#v[Z]=X,this.#L[X]=Z}#y(X){X!==this.#U&&(X===this.#G?this.#G=this.#L[X]:this.#c(this.#v[X],this.#L[X]),this.#c(this.#U,X),this.#U=X)}delete(X){return this.#x(X,"delete")}#x(X,Z){let V=!1;if(this.#Y!==0){let $=this.#H.get(X);if($!==void 0)if(this.#w?.[$]&&(clearTimeout(this.#w?.[$]),this.#w[$]=void 0),V=!0,this.#Y===1)this.#p(Z);else{this.#f($);let J=this.#J[$];if(this.#q(J)?J.__abortController.abort(Error("deleted")):(this.#F||this.#Z)&&(this.#F&&this.#$?.(J,X,Z),this.#Z&&this.#A?.push([J,X,Z])),this.#H.delete(X),this.#K[$]=void 0,this.#J[$]=void 0,$===this.#U)this.#U=this.#v[$];else if($===this.#G)this.#G=this.#L[$];else{let z=this.#v[$];this.#L[z]=this.#L[$];let Y=this.#L[$];this.#v[Y]=this.#v[$]}this.#Y--,this.#D.push($)}}if(this.#Z&&this.#A?.length){let $=this.#A,J;for(;J=$?.shift();)this.#z?.(...J)}return V}clear(){return this.#p("delete")}#p(X){for(let Z of this.#I({allowStale:!0})){let V=this.#J[Z];if(this.#q(V))V.__abortController.abort(Error("deleted"));else{let $=this.#K[Z];this.#F&&this.#$?.(V,$,X),this.#Z&&this.#A?.push([V,$,X])}}if(this.#H.clear(),this.#J.fill(void 0),this.#K.fill(void 0),this.#_&&this.#M){this.#_.fill(0),this.#M.fill(0);for(let Z of this.#w??[])Z!==void 0&&clearTimeout(Z);this.#w?.fill(void 0)}if(this.#O&&this.#O.fill(0),this.#G=0,this.#U=0,this.#D.length=0,this.#j=0,this.#Y=0,this.#Z&&this.#A){let Z=this.#A,V;for(;V=Z?.shift();)this.#z?.(...V)}}};import{posix as Q9,win32 as g5}from"path";import{fileURLToPath as X9}from"url";import{lstatSync as Z9,readdir as V9,readdirSync as $9,readlinkSync as J9,realpathSync as z9}from"fs";import*as Y9 from"fs";import{lstat as q9,readdir as H9,readlink as W9,realpath as j9}from"fs/promises";import{EventEmitter as y5}from"events";import k6 from"stream";import{StringDecoder as l8}from"string_decoder";var N6=typeof process==="object"&&process?process:{stdout:null,stderr:null},p8=(Q)=>!!Q&&typeof Q==="object"&&(Q instanceof GQ||Q instanceof k6||i8(Q)||n8(Q)),i8=(Q)=>!!Q&&typeof Q==="object"&&Q instanceof y5&&typeof Q.pipe==="function"&&Q.pipe!==k6.Writable.prototype.pipe,n8=(Q)=>!!Q&&typeof Q==="object"&&Q instanceof y5&&typeof Q.write==="function"&&typeof Q.end==="function",zQ=Symbol("EOF"),YQ=Symbol("maybeEmitEnd"),WQ=Symbol("emittedEnd"),eQ=Symbol("emittingEnd"),kQ=Symbol("emittedError"),Q5=Symbol("closed"),x6=Symbol("read"),X5=Symbol("flush"),S6=Symbol("flushChunk"),a=Symbol("encoding"),BQ=Symbol("decoder"),I=Symbol("flowing"),TQ=Symbol("paused"),LQ=Symbol("resume"),k=Symbol("buffer"),y=Symbol("pipes"),T=Symbol("bufferLength"),I5=Symbol("bufferPush"),Z5=Symbol("bufferShift"),E=Symbol("objectMode"),x=Symbol("destroyed"),k5=Symbol("error"),T5=Symbol("emitData"),I6=Symbol("emitEnd"),E5=Symbol("emitEnd2"),e=Symbol("async"),b5=Symbol("abort"),V5=Symbol("aborted"),EQ=Symbol("signal"),_Q=Symbol("dataListeners"),d=Symbol("discarded"),bQ=(Q)=>Promise.resolve().then(Q),o8=(Q)=>Q(),a8=(Q)=>Q==="end"||Q==="finish"||Q==="prefinish",r8=(Q)=>Q instanceof ArrayBuffer||!!Q&&typeof Q==="object"&&Q.constructor&&Q.constructor.name==="ArrayBuffer"&&Q.byteLength>=0,s8=(Q)=>!Buffer.isBuffer(Q)&&ArrayBuffer.isView(Q);class f5{src;dest;opts;ondrain;constructor(Q,X,Z){this.src=Q,this.dest=X,this.opts=Z,this.ondrain=()=>Q[LQ](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(Q){}end(){if(this.unpipe(),this.opts.end)this.dest.end()}}class T6 extends f5{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(Q,X,Z){super(Q,X,Z);this.proxyErrors=(V)=>this.dest.emit("error",V),Q.on("error",this.proxyErrors)}}var t8=(Q)=>!!Q.objectMode,e8=(Q)=>!Q.objectMode&&!!Q.encoding&&Q.encoding!=="buffer";class GQ extends y5{[I]=!1;[TQ]=!1;[y]=[];[k]=[];[E];[a];[e];[BQ];[zQ]=!1;[WQ]=!1;[eQ]=!1;[Q5]=!1;[kQ]=null;[T]=0;[x]=!1;[EQ];[V5]=!1;[_Q]=0;[d]=!1;writable=!0;readable=!0;constructor(...Q){let X=Q[0]||{};super();if(X.objectMode&&typeof X.encoding==="string")throw TypeError("Encoding and objectMode may not be used together");if(t8(X))this[E]=!0,this[a]=null;else if(e8(X))this[a]=X.encoding,this[E]=!1;else this[E]=!1,this[a]=null;if(this[e]=!!X.async,this[BQ]=this[a]?new l8(this[a]):null,X&&X.debugExposeBuffer===!0)Object.defineProperty(this,"buffer",{get:()=>this[k]});if(X&&X.debugExposePipes===!0)Object.defineProperty(this,"pipes",{get:()=>this[y]});let{signal:Z}=X;if(Z)if(this[EQ]=Z,Z.aborted)this[b5]();else Z.addEventListener("abort",()=>this[b5]())}get bufferLength(){return this[T]}get encoding(){return this[a]}set encoding(Q){throw Error("Encoding must be set at instantiation time")}setEncoding(Q){throw Error("Encoding must be set at instantiation time")}get objectMode(){return this[E]}set objectMode(Q){throw Error("objectMode must be set at instantiation time")}get["async"](){return this[e]}set["async"](Q){this[e]=this[e]||!!Q}[b5](){this[V5]=!0,this.emit("abort",this[EQ]?.reason),this.destroy(this[EQ]?.reason)}get aborted(){return this[V5]}set aborted(Q){}write(Q,X,Z){if(this[V5])return!1;if(this[zQ])throw Error("write after end");if(this[x])return this.emit("error",Object.assign(Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;if(typeof X==="function")Z=X,X="utf8";if(!X)X="utf8";let V=this[e]?bQ:o8;if(!this[E]&&!Buffer.isBuffer(Q)){if(s8(Q))Q=Buffer.from(Q.buffer,Q.byteOffset,Q.byteLength);else if(r8(Q))Q=Buffer.from(Q);else if(typeof Q!=="string")throw Error("Non-contiguous data written to non-objectMode stream")}if(this[E]){if(this[I]&&this[T]!==0)this[X5](!0);if(this[I])this.emit("data",Q);else this[I5](Q);if(this[T]!==0)this.emit("readable");if(Z)V(Z);return this[I]}if(!Q.length){if(this[T]!==0)this.emit("readable");if(Z)V(Z);return this[I]}if(typeof Q==="string"&&!(X===this[a]&&!this[BQ]?.lastNeed))Q=Buffer.from(Q,X);if(Buffer.isBuffer(Q)&&this[a])Q=this[BQ].write(Q);if(this[I]&&this[T]!==0)this[X5](!0);if(this[I])this.emit("data",Q);else this[I5](Q);if(this[T]!==0)this.emit("readable");if(Z)V(Z);return this[I]}read(Q){if(this[x])return null;if(this[d]=!1,this[T]===0||Q===0||Q&&Q>this[T])return this[YQ](),null;if(this[E])Q=null;if(this[k].length>1&&!this[E])this[k]=[this[a]?this[k].join(""):Buffer.concat(this[k],this[T])];let X=this[x6](Q||null,this[k][0]);return this[YQ](),X}[x6](Q,X){if(this[E])this[Z5]();else{let Z=X;if(Q===Z.length||Q===null)this[Z5]();else if(typeof Z==="string")this[k][0]=Z.slice(Q),X=Z.slice(0,Q),this[T]-=Q;else this[k][0]=Z.subarray(Q),X=Z.subarray(0,Q),this[T]-=Q}if(this.emit("data",X),!this[k].length&&!this[zQ])this.emit("drain");return X}end(Q,X,Z){if(typeof Q==="function")Z=Q,Q=void 0;if(typeof X==="function")Z=X,X="utf8";if(Q!==void 0)this.write(Q,X);if(Z)this.once("end",Z);if(this[zQ]=!0,this.writable=!1,this[I]||!this[TQ])this[YQ]();return this}[LQ](){if(this[x])return;if(!this[_Q]&&!this[y].length)this[d]=!0;if(this[TQ]=!1,this[I]=!0,this.emit("resume"),this[k].length)this[X5]();else if(this[zQ])this[YQ]();else this.emit("drain")}resume(){return this[LQ]()}pause(){this[I]=!1,this[TQ]=!0,this[d]=!1}get destroyed(){return this[x]}get flowing(){return this[I]}get paused(){return this[TQ]}[I5](Q){if(this[E])this[T]+=1;else this[T]+=Q.length;this[k].push(Q)}[Z5](){if(this[E])this[T]-=1;else this[T]-=this[k][0].length;return this[k].shift()}[X5](Q=!1){do;while(this[S6](this[Z5]())&&this[k].length);if(!Q&&!this[k].length&&!this[zQ])this.emit("drain")}[S6](Q){return this.emit("data",Q),this[I]}pipe(Q,X){if(this[x])return Q;this[d]=!1;let Z=this[WQ];if(X=X||{},Q===N6.stdout||Q===N6.stderr)X.end=!1;else X.end=X.end!==!1;if(X.proxyErrors=!!X.proxyErrors,Z){if(X.end)Q.end()}else if(this[y].push(!X.proxyErrors?new f5(this,Q,X):new T6(this,Q,X)),this[e])bQ(()=>this[LQ]());else this[LQ]();return Q}unpipe(Q){let X=this[y].find((Z)=>Z.dest===Q);if(X){if(this[y].length===1){if(this[I]&&this[_Q]===0)this[I]=!1;this[y]=[]}else this[y].splice(this[y].indexOf(X),1);X.unpipe()}}addListener(Q,X){return this.on(Q,X)}on(Q,X){let Z=super.on(Q,X);if(Q==="data"){if(this[d]=!1,this[_Q]++,!this[y].length&&!this[I])this[LQ]()}else if(Q==="readable"&&this[T]!==0)super.emit("readable");else if(a8(Q)&&this[WQ])super.emit(Q),this.removeAllListeners(Q);else if(Q==="error"&&this[kQ]){let V=X;if(this[e])bQ(()=>V.call(this,this[kQ]));else V.call(this,this[kQ])}return Z}removeListener(Q,X){return this.off(Q,X)}off(Q,X){let Z=super.off(Q,X);if(Q==="data"){if(this[_Q]=this.listeners("data").length,this[_Q]===0&&!this[d]&&!this[y].length)this[I]=!1}return Z}removeAllListeners(Q){let X=super.removeAllListeners(Q);if(Q==="data"||Q===void 0){if(this[_Q]=0,!this[d]&&!this[y].length)this[I]=!1}return X}get emittedEnd(){return this[WQ]}[YQ](){if(!this[eQ]&&!this[WQ]&&!this[x]&&this[k].length===0&&this[zQ]){if(this[eQ]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Q5])this.emit("close");this[eQ]=!1}}emit(Q,...X){let Z=X[0];if(Q!=="error"&&Q!=="close"&&Q!==x&&this[x])return!1;else if(Q==="data")return!this[E]&&!Z?!1:this[e]?(bQ(()=>this[T5](Z)),!0):this[T5](Z);else if(Q==="end")return this[I6]();else if(Q==="close"){if(this[Q5]=!0,!this[WQ]&&!this[x])return!1;let $=super.emit("close");return this.removeAllListeners("close"),$}else if(Q==="error"){this[kQ]=Z,super.emit(k5,Z);let $=!this[EQ]||this.listeners("error").length?super.emit("error",Z):!1;return this[YQ](),$}else if(Q==="resume"){let $=super.emit("resume");return this[YQ](),$}else if(Q==="finish"||Q==="prefinish"){let $=super.emit(Q);return this.removeAllListeners(Q),$}let V=super.emit(Q,...X);return this[YQ](),V}[T5](Q){for(let Z of this[y])if(Z.dest.write(Q)===!1)this.pause();let X=this[d]?!1:super.emit("data",Q);return this[YQ](),X}[I6](){if(this[WQ])return!1;return this[WQ]=!0,this.readable=!1,this[e]?(bQ(()=>this[E5]()),!0):this[E5]()}[E5](){if(this[BQ]){let X=this[BQ].end();if(X){for(let Z of this[y])Z.dest.write(X);if(!this[d])super.emit("data",X)}}for(let X of this[y])X.end();let Q=super.emit("end");return this.removeAllListeners("end"),Q}async collect(){let Q=Object.assign([],{dataLength:0});if(!this[E])Q.dataLength=0;let X=this.promise();return this.on("data",(Z)=>{if(Q.push(Z),!this[E])Q.dataLength+=Z.length}),await X,Q}async concat(){if(this[E])throw Error("cannot concat in objectMode");let Q=await this.collect();return this[a]?Q.join(""):Buffer.concat(Q,Q.dataLength)}async promise(){return new Promise((Q,X)=>{this.on(x,()=>X(Error("stream destroyed"))),this.on("error",(Z)=>X(Z)),this.on("end",()=>Q())})}[Symbol.asyncIterator](){this[d]=!1;let Q=!1,X=async()=>{return this.pause(),Q=!0,{value:void 0,done:!0}};return{next:()=>{if(Q)return X();let V=this.read();if(V!==null)return Promise.resolve({done:!1,value:V});if(this[zQ])return X();let $,J,z=(W)=>{this.off("data",Y),this.off("end",K),this.off(x,q),X(),J(W)},Y=(W)=>{this.off("error",z),this.off("end",K),this.off(x,q),this.pause(),$({value:W,done:!!this[zQ]})},K=()=>{this.off("error",z),this.off("data",Y),this.off(x,q),X(),$({done:!0,value:void 0})},q=()=>z(Error("stream destroyed"));return new Promise((W,H)=>{J=H,$=W,this.once(x,q),this.once("error",z),this.once("end",K),this.once("data",Y)})},throw:X,return:X,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[d]=!1;let Q=!1,X=()=>{return this.pause(),this.off(k5,X),this.off(x,X),this.off("end",X),Q=!0,{done:!0,value:void 0}},Z=()=>{if(Q)return X();let V=this.read();return V===null?X():{done:!1,value:V}};return this.once("end",X),this.once(k5,X),this.once(x,X),{next:Z,throw:X,return:X,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(Q){if(this[x]){if(Q)this.emit("error",Q);else this.emit(x);return this}this[x]=!0,this[d]=!0,this[k].length=0,this[T]=0;let X=this;if(typeof X.close==="function"&&!this[Q5])X.close();if(Q)this.emit("error",Q);else this.emit(x);return this}static get isStream(){return p8}}var K9=z9.native,fQ={lstatSync:Z9,readdir:V9,readdirSync:$9,readlinkSync:J9,realpathSync:K9,promises:{lstat:q9,readdir:H9,readlink:W9,realpath:j9}},u6=(Q)=>!Q||Q===fQ||Q===Y9?fQ:{...fQ,...Q,promises:{...fQ.promises,...Q.promises||{}}},h6=/^\\\\\?\\([a-z]:)\\?$/i,_9=(Q)=>Q.replace(/\//g,"\\").replace(h6,"$1\\"),G9=/[\\\/]/,i=0,g6=1,d6=2,QQ=4,m6=6,c6=8,UQ=10,l6=12,p=15,yQ=~p,u5=16,E6=32,uQ=64,r=128,$5=256,z5=512,b6=uQ|r|z5,U9=1023,h5=(Q)=>Q.isFile()?c6:Q.isDirectory()?QQ:Q.isSymbolicLink()?UQ:Q.isCharacterDevice()?d6:Q.isBlockDevice()?m6:Q.isSocket()?l6:Q.isFIFO()?g6:i,y6=new IQ({max:4096}),hQ=(Q)=>{let X=y6.get(Q);if(X)return X;let Z=Q.normalize("NFKD");return y6.set(Q,Z),Z},f6=new IQ({max:4096}),J5=(Q)=>{let X=f6.get(Q);if(X)return X;let Z=hQ(Q.toLowerCase());return f6.set(Q,Z),Z};class d5 extends IQ{constructor(){super({max:256})}}class p6 extends IQ{constructor(Q=16384){super({maxSize:Q,sizeCalculation:(X)=>X.length+1})}}var i6=Symbol("PathScurry setAsCwd");class f{name;root;roots;parent;nocase;isCWD=!1;#Q;#V;get dev(){return this.#V}#$;get mode(){return this.#$}#X;get nlink(){return this.#X}#z;get uid(){return this.#z}#C;get gid(){return this.#C}#B;get rdev(){return this.#B}#W;get blksize(){return this.#W}#Y;get ino(){return this.#Y}#j;get size(){return this.#j}#H;get blocks(){return this.#H}#K;get atimeMs(){return this.#K}#J;get mtimeMs(){return this.#J}#L;get ctimeMs(){return this.#L}#v;get birthtimeMs(){return this.#v}#G;get atime(){return this.#G}#U;get mtime(){return this.#U}#D;get ctime(){return this.#D}#A;get birthtime(){return this.#A}#O;#M;#_;#w;#F;#P;#Z;#E;#k;#N;get parentPath(){return(this.parent||this).fullpath()}get path(){return this.parentPath}constructor(Q,X=i,Z,V,$,J,z){if(this.name=Q,this.#O=$?J5(Q):hQ(Q),this.#Z=X&U9,this.nocase=$,this.roots=V,this.root=Z||this,this.#E=J,this.#_=z.fullpath,this.#F=z.relative,this.#P=z.relativePosix,this.parent=z.parent,this.parent)this.#Q=this.parent.#Q;else this.#Q=u6(z.fs)}depth(){if(this.#M!==void 0)return this.#M;if(!this.parent)return this.#M=0;return this.#M=this.parent.depth()+1}childrenCache(){return this.#E}resolve(Q){if(!Q)return this;let X=this.getRootString(Q),V=Q.substring(X.length).split(this.splitSep);return X?this.getRoot(X).#T(V):this.#T(V)}#T(Q){let X=this;for(let Z of Q)X=X.child(Z);return X}children(){let Q=this.#E.get(this);if(Q)return Q;let X=Object.assign([],{provisional:0});return this.#E.set(this,X),this.#Z&=~u5,X}child(Q,X){if(Q===""||Q===".")return this;if(Q==="..")return this.parent||this;let Z=this.children(),V=this.nocase?J5(Q):hQ(Q);for(let Y of Z)if(Y.#O===V)return Y;let $=this.parent?this.sep:"",J=this.#_?this.#_+$+Q:void 0,z=this.newChild(Q,i,{...X,parent:this,fullpath:J});if(!this.canReaddir())z.#Z|=r;return Z.push(z),z}relative(){if(this.isCWD)return"";if(this.#F!==void 0)return this.#F;let Q=this.name,X=this.parent;if(!X)return this.#F=this.name;let Z=X.relative();return Z+(!Z||!X.parent?"":this.sep)+Q}relativePosix(){if(this.sep==="/")return this.relative();if(this.isCWD)return"";if(this.#P!==void 0)return this.#P;let Q=this.name,X=this.parent;if(!X)return this.#P=this.fullpathPosix();let Z=X.relativePosix();return Z+(!Z||!X.parent?"":"/")+Q}fullpath(){if(this.#_!==void 0)return this.#_;let Q=this.name,X=this.parent;if(!X)return this.#_=this.name;let V=X.fullpath()+(!X.parent?"":this.sep)+Q;return this.#_=V}fullpathPosix(){if(this.#w!==void 0)return this.#w;if(this.sep==="/")return this.#w=this.fullpath();if(!this.parent){let V=this.fullpath().replace(/\\/g,"/");if(/^[a-z]:\//i.test(V))return this.#w=`//?/${V}`;else return this.#w=V}let Q=this.parent,X=Q.fullpathPosix(),Z=X+(!X||!Q.parent?"":"/")+this.name;return this.#w=Z}isUnknown(){return(this.#Z&p)===i}isType(Q){return this[`is${Q}`]()}getType(){return this.isUnknown()?"Unknown":this.isDirectory()?"Directory":this.isFile()?"File":this.isSymbolicLink()?"SymbolicLink":this.isFIFO()?"FIFO":this.isCharacterDevice()?"CharacterDevice":this.isBlockDevice()?"BlockDevice":this.isSocket()?"Socket":"Unknown"}isFile(){return(this.#Z&p)===c6}isDirectory(){return(this.#Z&p)===QQ}isCharacterDevice(){return(this.#Z&p)===d6}isBlockDevice(){return(this.#Z&p)===m6}isFIFO(){return(this.#Z&p)===g6}isSocket(){return(this.#Z&p)===l6}isSymbolicLink(){return(this.#Z&UQ)===UQ}lstatCached(){return this.#Z&E6?this:void 0}readlinkCached(){return this.#k}realpathCached(){return this.#N}readdirCached(){let Q=this.children();return Q.slice(0,Q.provisional)}canReadlink(){if(this.#k)return!0;if(!this.parent)return!1;let Q=this.#Z&p;return!(Q!==i&&Q!==UQ||this.#Z&$5||this.#Z&r)}calledReaddir(){return!!(this.#Z&u5)}isENOENT(){return!!(this.#Z&r)}isNamed(Q){return!this.nocase?this.#O===hQ(Q):this.#O===J5(Q)}async readlink(){let Q=this.#k;if(Q)return Q;if(!this.canReadlink())return;if(!this.parent)return;try{let X=await this.#Q.promises.readlink(this.fullpath()),Z=(await this.parent.realpath())?.resolve(X);if(Z)return this.#k=Z}catch(X){this.#I(X.code);return}}readlinkSync(){let Q=this.#k;if(Q)return Q;if(!this.canReadlink())return;if(!this.parent)return;try{let X=this.#Q.readlinkSync(this.fullpath()),Z=this.parent.realpathSync()?.resolve(X);if(Z)return this.#k=Z}catch(X){this.#I(X.code);return}}#u(Q){this.#Z|=u5;for(let X=Q.provisional;X<Q.length;X++){let Z=Q[X];if(Z)Z.#R()}}#R(){if(this.#Z&r)return;this.#Z=(this.#Z|r)&yQ,this.#l()}#l(){let Q=this.children();Q.provisional=0;for(let X of Q)X.#R()}#f(){this.#Z|=z5,this.#b()}#b(){if(this.#Z&uQ)return;let Q=this.#Z;if((Q&p)===QQ)Q&=yQ;this.#Z=Q|uQ,this.#l()}#h(Q=""){if(Q==="ENOTDIR"||Q==="EPERM")this.#b();else if(Q==="ENOENT")this.#R();else this.children().provisional=0}#S(Q=""){if(Q==="ENOTDIR")this.parent.#b();else if(Q==="ENOENT")this.#R()}#I(Q=""){let X=this.#Z;if(X|=$5,Q==="ENOENT")X|=r;if(Q==="EINVAL"||Q==="UNKNOWN")X&=yQ;if(this.#Z=X,Q==="ENOTDIR"&&this.parent)this.parent.#b()}#g(Q,X){return this.#m(Q,X)||this.#d(Q,X)}#d(Q,X){let Z=h5(Q),V=this.newChild(Q.name,Z,{parent:this}),$=V.#Z&p;if($!==QQ&&$!==UQ&&$!==i)V.#Z|=uQ;return X.unshift(V),X.provisional++,V}#m(Q,X){for(let Z=X.provisional;Z<X.length;Z++){let V=X[Z];if((this.nocase?J5(Q.name):hQ(Q.name))!==V.#O)continue;return this.#q(Q,V,Z,X)}}#q(Q,X,Z,V){let $=X.name;if(X.#Z=X.#Z&yQ|h5(Q),$!==Q.name)X.name=Q.name;if(Z!==V.provisional){if(Z===V.length-1)V.pop();else V.splice(Z,1);V.unshift(X)}return V.provisional++,X}async lstat(){if((this.#Z&r)===0)try{return this.#c(await this.#Q.promises.lstat(this.fullpath())),this}catch(Q){this.#S(Q.code)}}lstatSync(){if((this.#Z&r)===0)try{return this.#c(this.#Q.lstatSync(this.fullpath())),this}catch(Q){this.#S(Q.code)}}#c(Q){let{atime:X,atimeMs:Z,birthtime:V,birthtimeMs:$,blksize:J,blocks:z,ctime:Y,ctimeMs:K,dev:q,gid:W,ino:H,mode:j,mtime:_,mtimeMs:G,nlink:U,rdev:w,size:A,uid:B}=Q;this.#G=X,this.#K=Z,this.#A=V,this.#v=$,this.#W=J,this.#H=z,this.#D=Y,this.#L=K,this.#V=q,this.#C=W,this.#Y=H,this.#$=j,this.#U=_,this.#J=G,this.#X=U,this.#B=w,this.#j=A,this.#z=B;let F=h5(Q);if(this.#Z=this.#Z&yQ|F|E6,F!==i&&F!==QQ&&F!==UQ)this.#Z|=uQ}#y=[];#x=!1;#p(Q){this.#x=!1;let X=this.#y.slice();this.#y.length=0,X.forEach((Z)=>Z(null,Q))}readdirCB(Q,X=!1){if(!this.canReaddir()){if(X)Q(null,[]);else queueMicrotask(()=>Q(null,[]));return}let Z=this.children();if(this.calledReaddir()){let $=Z.slice(0,Z.provisional);if(X)Q(null,$);else queueMicrotask(()=>Q(null,$));return}if(this.#y.push(Q),this.#x)return;this.#x=!0;let V=this.fullpath();this.#Q.readdir(V,{withFileTypes:!0},($,J)=>{if($)this.#h($.code),Z.provisional=0;else{for(let z of J)this.#g(z,Z);this.#u(Z)}this.#p(Z.slice(0,Z.provisional));return})}#i;async readdir(){if(!this.canReaddir())return[];let Q=this.children();if(this.calledReaddir())return Q.slice(0,Q.provisional);let X=this.fullpath();if(this.#i)await this.#i;else{let Z=()=>{};this.#i=new Promise((V)=>Z=V);try{for(let V of await this.#Q.promises.readdir(X,{withFileTypes:!0}))this.#g(V,Q);this.#u(Q)}catch(V){this.#h(V.code),Q.provisional=0}this.#i=void 0,Z()}return Q.slice(0,Q.provisional)}readdirSync(){if(!this.canReaddir())return[];let Q=this.children();if(this.calledReaddir())return Q.slice(0,Q.provisional);let X=this.fullpath();try{for(let Z of this.#Q.readdirSync(X,{withFileTypes:!0}))this.#g(Z,Q);this.#u(Q)}catch(Z){this.#h(Z.code),Q.provisional=0}return Q.slice(0,Q.provisional)}canReaddir(){if(this.#Z&b6)return!1;let Q=p&this.#Z;if(!(Q===i||Q===QQ||Q===UQ))return!1;return!0}shouldWalk(Q,X){return(this.#Z&QQ)===QQ&&!(this.#Z&b6)&&!Q.has(this)&&(!X||X(this))}async realpath(){if(this.#N)return this.#N;if((z5|$5|r)&this.#Z)return;try{let Q=await this.#Q.promises.realpath(this.fullpath());return this.#N=this.resolve(Q)}catch(Q){this.#f()}}realpathSync(){if(this.#N)return this.#N;if((z5|$5|r)&this.#Z)return;try{let Q=this.#Q.realpathSync(this.fullpath());return this.#N=this.resolve(Q)}catch(Q){this.#f()}}[i6](Q){if(Q===this)return;Q.isCWD=!1,this.isCWD=!0;let X=new Set([]),Z=[],V=this;while(V&&V.parent)X.add(V),V.#F=Z.join(this.sep),V.#P=Z.join("/"),V=V.parent,Z.push("..");V=Q;while(V&&V.parent&&!X.has(V))V.#F=void 0,V.#P=void 0,V=V.parent}}class Y5 extends f{sep="\\";splitSep=G9;constructor(Q,X=i,Z,V,$,J,z){super(Q,X,Z,V,$,J,z)}newChild(Q,X=i,Z={}){return new Y5(Q,X,this.root,this.roots,this.nocase,this.childrenCache(),Z)}getRootString(Q){return g5.parse(Q).root}getRoot(Q){if(Q=_9(Q.toUpperCase()),Q===this.root.name)return this.root;for(let[X,Z]of Object.entries(this.roots))if(this.sameRoot(Q,X))return this.roots[Q]=Z;return this.roots[Q]=new gQ(Q,this).root}sameRoot(Q,X=this.root.name){return Q=Q.toUpperCase().replace(/\//g,"\\").replace(h6,"$1\\"),Q===X}}class K5 extends f{splitSep="/";sep="/";constructor(Q,X=i,Z,V,$,J,z){super(Q,X,Z,V,$,J,z)}getRootString(Q){return Q.startsWith("/")?"/":""}getRoot(Q){return this.root}newChild(Q,X=i,Z={}){return new K5(Q,X,this.root,this.roots,this.nocase,this.childrenCache(),Z)}}class m5{root;rootPath;roots;cwd;#Q;#V;#$;nocase;#X;constructor(Q=process.cwd(),X,Z,{nocase:V,childrenCacheSize:$=16384,fs:J=fQ}={}){if(this.#X=u6(J),Q instanceof URL||Q.startsWith("file://"))Q=X9(Q);let z=X.resolve(Q);this.roots=Object.create(null),this.rootPath=this.parseRootPath(z),this.#Q=new d5,this.#V=new d5,this.#$=new p6($);let Y=z.substring(this.rootPath.length).split(Z);if(Y.length===1&&!Y[0])Y.pop();if(V===void 0)throw TypeError("must provide nocase setting to PathScurryBase ctor");this.nocase=V,this.root=this.newRoot(this.#X),this.roots[this.rootPath]=this.root;let K=this.root,q=Y.length-1,W=X.sep,H=this.rootPath,j=!1;for(let _ of Y){let G=q--;K=K.child(_,{relative:Array(G).fill("..").join(W),relativePosix:Array(G).fill("..").join("/"),fullpath:H+=(j?"":W)+_}),j=!0}this.cwd=K}depth(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return Q.depth()}childrenCache(){return this.#$}resolve(...Q){let X="";for(let $=Q.length-1;$>=0;$--){let J=Q[$];if(!J||J===".")continue;if(X=X?`${J}/${X}`:J,this.isAbsolute(J))break}let Z=this.#Q.get(X);if(Z!==void 0)return Z;let V=this.cwd.resolve(X).fullpath();return this.#Q.set(X,V),V}resolvePosix(...Q){let X="";for(let $=Q.length-1;$>=0;$--){let J=Q[$];if(!J||J===".")continue;if(X=X?`${J}/${X}`:J,this.isAbsolute(J))break}let Z=this.#V.get(X);if(Z!==void 0)return Z;let V=this.cwd.resolve(X).fullpathPosix();return this.#V.set(X,V),V}relative(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return Q.relative()}relativePosix(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return Q.relativePosix()}basename(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return Q.name}dirname(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return(Q.parent||Q).fullpath()}async readdir(Q=this.cwd,X={withFileTypes:!0}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof f))X=Q,Q=this.cwd;let{withFileTypes:Z}=X;if(!Q.canReaddir())return[];else{let V=await Q.readdir();return Z?V:V.map(($)=>$.name)}}readdirSync(Q=this.cwd,X={withFileTypes:!0}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof f))X=Q,Q=this.cwd;let{withFileTypes:Z=!0}=X;if(!Q.canReaddir())return[];else if(Z)return Q.readdirSync();else return Q.readdirSync().map((V)=>V.name)}async lstat(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return Q.lstat()}lstatSync(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return Q.lstatSync()}async readlink(Q=this.cwd,{withFileTypes:X}={withFileTypes:!1}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof f))X=Q.withFileTypes,Q=this.cwd;let Z=await Q.readlink();return X?Z:Z?.fullpath()}readlinkSync(Q=this.cwd,{withFileTypes:X}={withFileTypes:!1}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof f))X=Q.withFileTypes,Q=this.cwd;let Z=Q.readlinkSync();return X?Z:Z?.fullpath()}async realpath(Q=this.cwd,{withFileTypes:X}={withFileTypes:!1}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof f))X=Q.withFileTypes,Q=this.cwd;let Z=await Q.realpath();return X?Z:Z?.fullpath()}realpathSync(Q=this.cwd,{withFileTypes:X}={withFileTypes:!1}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof f))X=Q.withFileTypes,Q=this.cwd;let Z=Q.realpathSync();return X?Z:Z?.fullpath()}async walk(Q=this.cwd,X={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof f))X=Q,Q=this.cwd;let{withFileTypes:Z=!0,follow:V=!1,filter:$,walkFilter:J}=X,z=[];if(!$||$(Q))z.push(Z?Q:Q.fullpath());let Y=new Set,K=(W,H)=>{Y.add(W),W.readdirCB((j,_)=>{if(j)return H(j);let G=_.length;if(!G)return H();let U=()=>{if(--G===0)H()};for(let w of _){if(!$||$(w))z.push(Z?w:w.fullpath());if(V&&w.isSymbolicLink())w.realpath().then((A)=>A?.isUnknown()?A.lstat():A).then((A)=>A?.shouldWalk(Y,J)?K(A,U):U());else if(w.shouldWalk(Y,J))K(w,U);else U()}},!0)},q=Q;return new Promise((W,H)=>{K(q,(j)=>{if(j)return H(j);W(z)})})}walkSync(Q=this.cwd,X={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof f))X=Q,Q=this.cwd;let{withFileTypes:Z=!0,follow:V=!1,filter:$,walkFilter:J}=X,z=[];if(!$||$(Q))z.push(Z?Q:Q.fullpath());let Y=new Set([Q]);for(let K of Y){let q=K.readdirSync();for(let W of q){if(!$||$(W))z.push(Z?W:W.fullpath());let H=W;if(W.isSymbolicLink()){if(!(V&&(H=W.realpathSync())))continue;if(H.isUnknown())H.lstatSync()}if(H.shouldWalk(Y,J))Y.add(H)}}return z}[Symbol.asyncIterator](){return this.iterate()}iterate(Q=this.cwd,X={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof f))X=Q,Q=this.cwd;return this.stream(Q,X)[Symbol.asyncIterator]()}[Symbol.iterator](){return this.iterateSync()}*iterateSync(Q=this.cwd,X={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof f))X=Q,Q=this.cwd;let{withFileTypes:Z=!0,follow:V=!1,filter:$,walkFilter:J}=X;if(!$||$(Q))yield Z?Q:Q.fullpath();let z=new Set([Q]);for(let Y of z){let K=Y.readdirSync();for(let q of K){if(!$||$(q))yield Z?q:q.fullpath();let W=q;if(q.isSymbolicLink()){if(!(V&&(W=q.realpathSync())))continue;if(W.isUnknown())W.lstatSync()}if(W.shouldWalk(z,J))z.add(W)}}}stream(Q=this.cwd,X={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof f))X=Q,Q=this.cwd;let{withFileTypes:Z=!0,follow:V=!1,filter:$,walkFilter:J}=X,z=new GQ({objectMode:!0});if(!$||$(Q))z.write(Z?Q:Q.fullpath());let Y=new Set,K=[Q],q=0,W=()=>{let H=!1;while(!H){let j=K.shift();if(!j){if(q===0)z.end();return}q++,Y.add(j);let _=(U,w,A=!1)=>{if(U)return z.emit("error",U);if(V&&!A){let B=[];for(let F of w)if(F.isSymbolicLink())B.push(F.realpath().then((v)=>v?.isUnknown()?v.lstat():v));if(B.length){Promise.all(B).then(()=>_(null,w,!0));return}}for(let B of w)if(B&&(!$||$(B))){if(!z.write(Z?B:B.fullpath()))H=!0}q--;for(let B of w){let F=B.realpathCached()||B;if(F.shouldWalk(Y,J))K.push(F)}if(H&&!z.flowing)z.once("drain",W);else if(!G)W()},G=!0;j.readdirCB(_,!0),G=!1}};return W(),z}streamSync(Q=this.cwd,X={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof f))X=Q,Q=this.cwd;let{withFileTypes:Z=!0,follow:V=!1,filter:$,walkFilter:J}=X,z=new GQ({objectMode:!0}),Y=new Set;if(!$||$(Q))z.write(Z?Q:Q.fullpath());let K=[Q],q=0,W=()=>{let H=!1;while(!H){let j=K.shift();if(!j){if(q===0)z.end();return}q++,Y.add(j);let _=j.readdirSync();for(let G of _)if(!$||$(G)){if(!z.write(Z?G:G.fullpath()))H=!0}q--;for(let G of _){let U=G;if(G.isSymbolicLink()){if(!(V&&(U=G.realpathSync())))continue;if(U.isUnknown())U.lstatSync()}if(U.shouldWalk(Y,J))K.push(U)}}if(H&&!z.flowing)z.once("drain",W)};return W(),z}chdir(Q=this.cwd){let X=this.cwd;this.cwd=typeof Q==="string"?this.cwd.resolve(Q):Q,this.cwd[i6](X)}}class gQ extends m5{sep="\\";constructor(Q=process.cwd(),X={}){let{nocase:Z=!0}=X;super(Q,g5,"\\",{...X,nocase:Z});this.nocase=Z;for(let V=this.cwd;V;V=V.parent)V.nocase=this.nocase}parseRootPath(Q){return g5.parse(Q).root.toUpperCase()}newRoot(Q){return new Y5(this.rootPath,QQ,void 0,this.roots,this.nocase,this.childrenCache(),{fs:Q})}isAbsolute(Q){return Q.startsWith("/")||Q.startsWith("\\")||/^[a-z]:(\/|\\)/i.test(Q)}}class dQ extends m5{sep="/";constructor(Q=process.cwd(),X={}){let{nocase:Z=!1}=X;super(Q,Q9,"/",{...X,nocase:Z});this.nocase=Z}parseRootPath(Q){return"/"}newRoot(Q){return new K5(this.rootPath,QQ,void 0,this.roots,this.nocase,this.childrenCache(),{fs:Q})}isAbsolute(Q){return Q.startsWith("/")}}class q5 extends dQ{constructor(Q=process.cwd(),X={}){let{nocase:Z=!0}=X;super(Q,{...X,nocase:Z})}}var KX=process.platform==="win32"?Y5:K5,n6=process.platform==="win32"?gQ:process.platform==="darwin"?q5:dQ;var A9=(Q)=>Q.length>=1,w9=(Q)=>Q.length>=1;class FQ{#Q;#V;#$;length;#X;#z;#C;#B;#W;#Y;#j=!0;constructor(Q,X,Z,V){if(!A9(Q))throw TypeError("empty pattern list");if(!w9(X))throw TypeError("empty glob list");if(X.length!==Q.length)throw TypeError("mismatched pattern list and glob list lengths");if(this.length=Q.length,Z<0||Z>=this.length)throw TypeError("index out of range");if(this.#Q=Q,this.#V=X,this.#$=Z,this.#X=V,this.#$===0){if(this.isUNC()){let[$,J,z,Y,...K]=this.#Q,[q,W,H,j,..._]=this.#V;if(K[0]==="")K.shift(),_.shift();let G=[$,J,z,Y,""].join("/"),U=[q,W,H,j,""].join("/");this.#Q=[G,...K],this.#V=[U,..._],this.length=this.#Q.length}else if(this.isDrive()||this.isAbsolute()){let[$,...J]=this.#Q,[z,...Y]=this.#V;if(J[0]==="")J.shift(),Y.shift();let K=$+"/",q=z+"/";this.#Q=[K,...J],this.#V=[q,...Y],this.length=this.#Q.length}}}pattern(){return this.#Q[this.#$]}isString(){return typeof this.#Q[this.#$]==="string"}isGlobstar(){return this.#Q[this.#$]===N}isRegExp(){return this.#Q[this.#$]instanceof RegExp}globString(){return this.#C=this.#C||(this.#$===0?this.isAbsolute()?this.#V[0]+this.#V.slice(1).join("/"):this.#V.join("/"):this.#V.slice(this.#$).join("/"))}hasMore(){return this.length>this.#$+1}rest(){if(this.#z!==void 0)return this.#z;if(!this.hasMore())return this.#z=null;return this.#z=new FQ(this.#Q,this.#V,this.#$+1,this.#X),this.#z.#Y=this.#Y,this.#z.#W=this.#W,this.#z.#B=this.#B,this.#z}isUNC(){let Q=this.#Q;return this.#W!==void 0?this.#W:this.#W=this.#X==="win32"&&this.#$===0&&Q[0]===""&&Q[1]===""&&typeof Q[2]==="string"&&!!Q[2]&&typeof Q[3]==="string"&&!!Q[3]}isDrive(){let Q=this.#Q;return this.#B!==void 0?this.#B:this.#B=this.#X==="win32"&&this.#$===0&&this.length>1&&typeof Q[0]==="string"&&/^[a-z]:$/i.test(Q[0])}isAbsolute(){let Q=this.#Q;return this.#Y!==void 0?this.#Y:this.#Y=Q[0]===""&&Q.length>1||this.isDrive()||this.isUNC()}root(){let Q=this.#Q[0];return typeof Q==="string"&&this.isAbsolute()&&this.#$===0?Q:""}checkFollowGlobstar(){return!(this.#$===0||!this.isGlobstar()||!this.#j)}markFollowGlobstar(){if(this.#$===0||!this.isGlobstar()||!this.#j)return!1;return this.#j=!1,!0}}var B9=typeof process==="object"&&process&&typeof process.platform==="string"?process.platform:"linux";class mQ{relative;relativeChildren;absolute;absoluteChildren;platform;mmopts;constructor(Q,{nobrace:X,nocase:Z,noext:V,noglobstar:$,platform:J=B9}){this.relative=[],this.absolute=[],this.relativeChildren=[],this.absoluteChildren=[],this.platform=J,this.mmopts={dot:!0,nobrace:X,nocase:Z,noext:V,noglobstar:$,optimizationLevel:2,platform:J,nocomment:!0,nonegate:!0};for(let z of Q)this.add(z)}add(Q){let X=new l(Q,this.mmopts);for(let Z=0;Z<X.set.length;Z++){let V=X.set[Z],$=X.globParts[Z];if(!V||!$)throw Error("invalid pattern object");while(V[0]==="."&&$[0]===".")V.shift(),$.shift();let J=new FQ(V,$,0,this.platform),z=new l(J.globString(),this.mmopts),Y=$[$.length-1]==="**",K=J.isAbsolute();if(K)this.absolute.push(z);else this.relative.push(z);if(Y)if(K)this.absoluteChildren.push(z);else this.relativeChildren.push(z)}}ignored(Q){let X=Q.fullpath(),Z=`${X}/`,V=Q.relative()||".",$=`${V}/`;for(let J of this.relative)if(J.match(V)||J.match($))return!0;for(let J of this.absolute)if(J.match(X)||J.match(Z))return!0;return!1}childrenIgnored(Q){let X=Q.fullpath()+"/",Z=(Q.relative()||".")+"/";for(let V of this.relativeChildren)if(V.match(Z))return!0;for(let V of this.absoluteChildren)if(V.match(X))return!0;return!1}}class c5{store;constructor(Q=new Map){this.store=Q}copy(){return new c5(new Map(this.store))}hasWalked(Q,X){return this.store.get(Q.fullpath())?.has(X.globString())}storeWalked(Q,X){let Z=Q.fullpath(),V=this.store.get(Z);if(V)V.add(X.globString());else this.store.set(Z,new Set([X.globString()]))}}class o6{store=new Map;add(Q,X,Z){let V=(X?2:0)|(Z?1:0),$=this.store.get(Q);this.store.set(Q,$===void 0?V:V&$)}entries(){return[...this.store.entries()].map(([Q,X])=>[Q,!!(X&2),!!(X&1)])}}class a6{store=new Map;add(Q,X){if(!Q.canReaddir())return;let Z=this.store.get(Q);if(Z){if(!Z.find((V)=>V.globString()===X.globString()))Z.push(X)}else this.store.set(Q,[X])}get(Q){let X=this.store.get(Q);if(!X)throw Error("attempting to walk unknown path");return X}entries(){return this.keys().map((Q)=>[Q,this.store.get(Q)])}keys(){return[...this.store.keys()].filter((Q)=>Q.canReaddir())}}class cQ{hasWalkedCache;matches=new o6;subwalks=new a6;patterns;follow;dot;opts;constructor(Q,X){this.opts=Q,this.follow=!!Q.follow,this.dot=!!Q.dot,this.hasWalkedCache=X?X.copy():new c5}processPatterns(Q,X){this.patterns=X;let Z=X.map((V)=>[Q,V]);for(let[V,$]of Z){this.hasWalkedCache.storeWalked(V,$);let J=$.root(),z=$.isAbsolute()&&this.opts.absolute!==!1;if(J){V=V.resolve(J==="/"&&this.opts.root!==void 0?this.opts.root:J);let W=$.rest();if(!W){this.matches.add(V,!0,!1);continue}else $=W}if(V.isENOENT())continue;let Y,K,q=!1;while(typeof(Y=$.pattern())==="string"&&(K=$.rest()))V=V.resolve(Y),$=K,q=!0;if(Y=$.pattern(),K=$.rest(),q){if(this.hasWalkedCache.hasWalked(V,$))continue;this.hasWalkedCache.storeWalked(V,$)}if(typeof Y==="string"){let W=Y===".."||Y===""||Y===".";this.matches.add(V.resolve(Y),z,W);continue}else if(Y===N){if(!V.isSymbolicLink()||this.follow||$.checkFollowGlobstar())this.subwalks.add(V,$);let W=K?.pattern(),H=K?.rest();if(!K||(W===""||W===".")&&!H)this.matches.add(V,z,W===""||W===".");else if(W===".."){let j=V.parent||V;if(!H)this.matches.add(j,z,!0);else if(!this.hasWalkedCache.hasWalked(j,H))this.subwalks.add(j,H)}}else if(Y instanceof RegExp)this.subwalks.add(V,$)}return this}subwalkTargets(){return this.subwalks.keys()}child(){return new cQ(this.opts,this.hasWalkedCache)}filterEntries(Q,X){let Z=this.subwalks.get(Q),V=this.child();for(let $ of X)for(let J of Z){let z=J.isAbsolute(),Y=J.pattern(),K=J.rest();if(Y===N)V.testGlobstar($,J,K,z);else if(Y instanceof RegExp)V.testRegExp($,Y,K,z);else V.testString($,Y,K,z)}return V}testGlobstar(Q,X,Z,V){if(this.dot||!Q.name.startsWith(".")){if(!X.hasMore())this.matches.add(Q,V,!1);if(Q.canReaddir()){if(this.follow||!Q.isSymbolicLink())this.subwalks.add(Q,X);else if(Q.isSymbolicLink()){if(Z&&X.checkFollowGlobstar())this.subwalks.add(Q,Z);else if(X.markFollowGlobstar())this.subwalks.add(Q,X)}}}if(Z){let $=Z.pattern();if(typeof $==="string"&&$!==".."&&$!==""&&$!==".")this.testString(Q,$,Z.rest(),V);else if($===".."){let J=Q.parent||Q;this.subwalks.add(J,Z)}else if($ instanceof RegExp)this.testRegExp(Q,$,Z.rest(),V)}}testRegExp(Q,X,Z,V){if(!X.test(Q.name))return;if(!Z)this.matches.add(Q,V,!1);else this.subwalks.add(Q,Z)}testString(Q,X,Z,V){if(!Q.isNamed(X))return;if(!Z)this.matches.add(Q,V,!1);else this.subwalks.add(Q,Z)}}var L9=(Q,X)=>typeof Q==="string"?new mQ([Q],X):Array.isArray(Q)?new mQ(Q,X):Q;class l5{path;patterns;opts;seen=new Set;paused=!1;aborted=!1;#Q=[];#V;#$;signal;maxDepth;includeChildMatches;constructor(Q,X,Z){if(this.patterns=Q,this.path=X,this.opts=Z,this.#$=!Z.posix&&Z.platform==="win32"?"\\":"/",this.includeChildMatches=Z.includeChildMatches!==!1,Z.ignore||!this.includeChildMatches){if(this.#V=L9(Z.ignore??[],Z),!this.includeChildMatches&&typeof this.#V.add!=="function")throw Error("cannot ignore child matches, ignore lacks add() method.")}if(this.maxDepth=Z.maxDepth||1/0,Z.signal)this.signal=Z.signal,this.signal.addEventListener("abort",()=>{this.#Q.length=0})}#X(Q){return this.seen.has(Q)||!!this.#V?.ignored?.(Q)}#z(Q){return!!this.#V?.childrenIgnored?.(Q)}pause(){this.paused=!0}resume(){if(this.signal?.aborted)return;this.paused=!1;let Q=void 0;while(!this.paused&&(Q=this.#Q.shift()))Q()}onResume(Q){if(this.signal?.aborted)return;if(!this.paused)Q();else this.#Q.push(Q)}async matchCheck(Q,X){if(X&&this.opts.nodir)return;let Z;if(this.opts.realpath){if(Z=Q.realpathCached()||await Q.realpath(),!Z)return;Q=Z}let $=Q.isUnknown()||this.opts.stat?await Q.lstat():Q;if(this.opts.follow&&this.opts.nodir&&$?.isSymbolicLink()){let J=await $.realpath();if(J&&(J.isUnknown()||this.opts.stat))await J.lstat()}return this.matchCheckTest($,X)}matchCheckTest(Q,X){return Q&&(this.maxDepth===1/0||Q.depth()<=this.maxDepth)&&(!X||Q.canReaddir())&&(!this.opts.nodir||!Q.isDirectory())&&(!this.opts.nodir||!this.opts.follow||!Q.isSymbolicLink()||!Q.realpathCached()?.isDirectory())&&!this.#X(Q)?Q:void 0}matchCheckSync(Q,X){if(X&&this.opts.nodir)return;let Z;if(this.opts.realpath){if(Z=Q.realpathCached()||Q.realpathSync(),!Z)return;Q=Z}let $=Q.isUnknown()||this.opts.stat?Q.lstatSync():Q;if(this.opts.follow&&this.opts.nodir&&$?.isSymbolicLink()){let J=$.realpathSync();if(J&&(J?.isUnknown()||this.opts.stat))J.lstatSync()}return this.matchCheckTest($,X)}matchFinish(Q,X){if(this.#X(Q))return;if(!this.includeChildMatches&&this.#V?.add){let $=`${Q.relativePosix()}/**`;this.#V.add($)}let Z=this.opts.absolute===void 0?X:this.opts.absolute;this.seen.add(Q);let V=this.opts.mark&&Q.isDirectory()?this.#$:"";if(this.opts.withFileTypes)this.matchEmit(Q);else if(Z){let $=this.opts.posix?Q.fullpathPosix():Q.fullpath();this.matchEmit($+V)}else{let $=this.opts.posix?Q.relativePosix():Q.relative(),J=this.opts.dotRelative&&!$.startsWith(".."+this.#$)?"."+this.#$:"";this.matchEmit(!$?"."+V:J+$+V)}}async match(Q,X,Z){let V=await this.matchCheck(Q,Z);if(V)this.matchFinish(V,X)}matchSync(Q,X,Z){let V=this.matchCheckSync(Q,Z);if(V)this.matchFinish(V,X)}walkCB(Q,X,Z){if(this.signal?.aborted)Z();this.walkCB2(Q,X,new cQ(this.opts),Z)}walkCB2(Q,X,Z,V){if(this.#z(Q))return V();if(this.signal?.aborted)V();if(this.paused){this.onResume(()=>this.walkCB2(Q,X,Z,V));return}Z.processPatterns(Q,X);let $=1,J=()=>{if(--$===0)V()};for(let[z,Y,K]of Z.matches.entries()){if(this.#X(z))continue;$++,this.match(z,Y,K).then(()=>J())}for(let z of Z.subwalkTargets()){if(this.maxDepth!==1/0&&z.depth()>=this.maxDepth)continue;$++;let Y=z.readdirCached();if(z.calledReaddir())this.walkCB3(z,Y,Z,J);else z.readdirCB((K,q)=>this.walkCB3(z,q,Z,J),!0)}J()}walkCB3(Q,X,Z,V){Z=Z.filterEntries(Q,X);let $=1,J=()=>{if(--$===0)V()};for(let[z,Y,K]of Z.matches.entries()){if(this.#X(z))continue;$++,this.match(z,Y,K).then(()=>J())}for(let[z,Y]of Z.subwalks.entries())$++,this.walkCB2(z,Y,Z.child(),J);J()}walkCBSync(Q,X,Z){if(this.signal?.aborted)Z();this.walkCB2Sync(Q,X,new cQ(this.opts),Z)}walkCB2Sync(Q,X,Z,V){if(this.#z(Q))return V();if(this.signal?.aborted)V();if(this.paused){this.onResume(()=>this.walkCB2Sync(Q,X,Z,V));return}Z.processPatterns(Q,X);let $=1,J=()=>{if(--$===0)V()};for(let[z,Y,K]of Z.matches.entries()){if(this.#X(z))continue;this.matchSync(z,Y,K)}for(let z of Z.subwalkTargets()){if(this.maxDepth!==1/0&&z.depth()>=this.maxDepth)continue;$++;let Y=z.readdirSync();this.walkCB3Sync(z,Y,Z,J)}J()}walkCB3Sync(Q,X,Z,V){Z=Z.filterEntries(Q,X);let $=1,J=()=>{if(--$===0)V()};for(let[z,Y,K]of Z.matches.entries()){if(this.#X(z))continue;this.matchSync(z,Y,K)}for(let[z,Y]of Z.subwalks.entries())$++,this.walkCB2Sync(z,Y,Z.child(),J);J()}}class H5 extends l5{matches=new Set;constructor(Q,X,Z){super(Q,X,Z)}matchEmit(Q){this.matches.add(Q)}async walk(){if(this.signal?.aborted)throw this.signal.reason;if(this.path.isUnknown())await this.path.lstat();return await new Promise((Q,X)=>{this.walkCB(this.path,this.patterns,()=>{if(this.signal?.aborted)X(this.signal.reason);else Q(this.matches)})}),this.matches}walkSync(){if(this.signal?.aborted)throw this.signal.reason;if(this.path.isUnknown())this.path.lstatSync();return this.walkCBSync(this.path,this.patterns,()=>{if(this.signal?.aborted)throw this.signal.reason}),this.matches}}class W5 extends l5{results;constructor(Q,X,Z){super(Q,X,Z);this.results=new GQ({signal:this.signal,objectMode:!0}),this.results.on("drain",()=>this.resume()),this.results.on("resume",()=>this.resume())}matchEmit(Q){if(this.results.write(Q),!this.results.flowing)this.pause()}stream(){let Q=this.path;if(Q.isUnknown())Q.lstat().then(()=>{this.walkCB(Q,this.patterns,()=>this.results.end())});else this.walkCB(Q,this.patterns,()=>this.results.end());return this.results}streamSync(){if(this.path.isUnknown())this.path.lstatSync();return this.walkCBSync(this.path,this.patterns,()=>this.results.end()),this.results}}var v9=typeof process==="object"&&process&&typeof process.platform==="string"?process.platform:"linux";class XQ{absolute;cwd;root;dot;dotRelative;follow;ignore;magicalBraces;mark;matchBase;maxDepth;nobrace;nocase;nodir;noext;noglobstar;pattern;platform;realpath;scurry;stat;signal;windowsPathsNoEscape;withFileTypes;includeChildMatches;opts;patterns;constructor(Q,X){if(!X)throw TypeError("glob options required");if(this.withFileTypes=!!X.withFileTypes,this.signal=X.signal,this.follow=!!X.follow,this.dot=!!X.dot,this.dotRelative=!!X.dotRelative,this.nodir=!!X.nodir,this.mark=!!X.mark,!X.cwd)this.cwd="";else if(X.cwd instanceof URL||X.cwd.startsWith("file://"))X.cwd=F9(X.cwd);if(this.cwd=X.cwd||"",this.root=X.root,this.magicalBraces=!!X.magicalBraces,this.nobrace=!!X.nobrace,this.noext=!!X.noext,this.realpath=!!X.realpath,this.absolute=X.absolute,this.includeChildMatches=X.includeChildMatches!==!1,this.noglobstar=!!X.noglobstar,this.matchBase=!!X.matchBase,this.maxDepth=typeof X.maxDepth==="number"?X.maxDepth:1/0,this.stat=!!X.stat,this.ignore=X.ignore,this.withFileTypes&&this.absolute!==void 0)throw Error("cannot set absolute and withFileTypes:true");if(typeof Q==="string")Q=[Q];if(this.windowsPathsNoEscape=!!X.windowsPathsNoEscape||X.allowWindowsEscape===!1,this.windowsPathsNoEscape)Q=Q.map((Y)=>Y.replace(/\\/g,"/"));if(this.matchBase){if(X.noglobstar)throw TypeError("base matching requires globstar");Q=Q.map((Y)=>Y.includes("/")?Y:`./**/${Y}`)}if(this.pattern=Q,this.platform=X.platform||v9,this.opts={...X,platform:this.platform},X.scurry){if(this.scurry=X.scurry,X.nocase!==void 0&&X.nocase!==X.scurry.nocase)throw Error("nocase option contradicts provided scurry option")}else{let Y=X.platform==="win32"?gQ:X.platform==="darwin"?q5:X.platform?dQ:n6;this.scurry=new Y(this.cwd,{nocase:X.nocase,fs:X.fs})}this.nocase=this.scurry.nocase;let Z=this.platform==="darwin"||this.platform==="win32",V={...X,dot:this.dot,matchBase:this.matchBase,nobrace:this.nobrace,nocase:this.nocase,nocaseMagicOnly:Z,nocomment:!0,noext:this.noext,nonegate:!0,optimizationLevel:2,platform:this.platform,windowsPathsNoEscape:this.windowsPathsNoEscape,debug:!!this.opts.debug},$=this.pattern.map((Y)=>new l(Y,V)),[J,z]=$.reduce((Y,K)=>{return Y[0].push(...K.set),Y[1].push(...K.globParts),Y},[[],[]]);this.patterns=J.map((Y,K)=>{let q=z[K];if(!q)throw Error("invalid pattern object");return new FQ(Y,q,0,this.platform)})}async walk(){return[...await new H5(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walk()]}walkSync(){return[...new H5(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walkSync()]}stream(){return new W5(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).stream()}streamSync(){return new W5(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).streamSync()}iterateSync(){return this.streamSync()[Symbol.iterator]()}[Symbol.iterator](){return this.iterateSync()}iterate(){return this.stream()[Symbol.asyncIterator]()}[Symbol.asyncIterator](){return this.iterate()}}var p5=(Q,X={})=>{if(!Array.isArray(Q))Q=[Q];for(let Z of Q)if(new l(Z,X).hasMagic())return!0;return!1};function _5(Q,X={}){return new XQ(Q,X).streamSync()}function s6(Q,X={}){return new XQ(Q,X).stream()}function t6(Q,X={}){return new XQ(Q,X).walkSync()}async function r6(Q,X={}){return new XQ(Q,X).walk()}function G5(Q,X={}){return new XQ(Q,X).iterateSync()}function e6(Q,X={}){return new XQ(Q,X).iterate()}var O9=_5,C9=Object.assign(s6,{sync:_5}),M9=G5,R9=Object.assign(e6,{sync:G5}),D9=Object.assign(t6,{stream:_5,iterate:G5}),j5=Object.assign(r6,{glob:r6,globSync:t6,sync:D9,globStream:s6,stream:C9,globStreamSync:_5,streamSync:O9,globIterate:e6,iterate:R9,globIterateSync:G5,iterateSync:M9,Glob:XQ,hasMagic:p5,escape:wQ,unescape:o});j5.glob=j5;var P9={name:"Read",description:"Reads a file from the local filesystem. You can access any file directly by using this tool.",input_schema:{type:"object",properties:{file_path:{type:"string",description:"The absolute path to the file to read"},offset:{type:"number",description:"The line number to start reading from (1-based)"},limit:{type:"number",description:"The number of lines to read"}},required:["file_path"]},handler:async(Q,X)=>{let Z=Q.file_path,V=Q.offset||1,$=Q.limit||2000;try{let Y=(await Bun.file(Z).text()).split(`
30
- `),K=Math.max(0,V-1),q=Math.min(Y.length,K+$);return{content:Y.slice(K,q).map((j,_)=>`${K+_+1} ${j}`).join(`
31
- `)}}catch(J){return{content:`Error reading file: ${J instanceof Error?J.message:String(J)}`,is_error:!0}}}},N9={name:"Write",description:"Writes a file to the local filesystem. This tool will overwrite the existing file if there is one at the provided path.",input_schema:{type:"object",properties:{file_path:{type:"string",description:"The absolute path to the file to write"},content:{type:"string",description:"The content to write to the file"}},required:["file_path","content"]},handler:async(Q,X)=>{let{file_path:Z,content:V}=Q;try{return await Bun.write(Z,V),{content:`Successfully wrote to ${Z}`}}catch($){return{content:`Error writing file: ${$ instanceof Error?$.message:String($)}`,is_error:!0}}}},x9={name:"Edit",description:"Performs exact string replacements in files. Use this tool to modify existing files.",input_schema:{type:"object",properties:{file_path:{type:"string",description:"The absolute path to the file to modify"},old_string:{type:"string",description:"The text to replace"},new_string:{type:"string",description:"The text to replace it with"},replace_all:{type:"boolean",description:"Replace all occurrences (default false)"}},required:["file_path","old_string","new_string"]},handler:async(Q,X)=>{let{file_path:Z,old_string:V,new_string:$}=Q,J=Q.replace_all||!1;try{let Y=await Bun.file(Z).text();if(J){let K=Y;Y=Y.split(V).join($);let q=(K.match(new RegExp(S9(V),"g"))||[]).length;if(q===0)return{content:"Error: String not found in file",is_error:!0};return await Bun.write(Z,Y),{content:`Successfully replaced ${q} occurrences`}}else{let K=Y.indexOf(V);if(K===-1)return{content:"Error: String not found in file",is_error:!0};if(Y.indexOf(V,K+1)!==-1)return{content:"Error: String appears multiple times in file. Use replace_all or provide more context.",is_error:!0};return Y=Y.replace(V,$),await Bun.write(Z,Y),{content:`Successfully edited ${Z}`}}}catch(z){return{content:`Error editing file: ${z instanceof Error?z.message:String(z)}`,is_error:!0}}}};function S9(Q){return Q.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var I9={name:"Bash",description:"Executes a given bash command with optional timeout. Working directory persists between commands.",input_schema:{type:"object",properties:{command:{type:"string",description:"The command to execute"},timeout:{type:"number",description:"Optional timeout in milliseconds (max 600000)"},description:{type:"string",description:"Clear, concise description of what this command does"}},required:["command"]},handler:async(Q,X)=>{let Z=Q.command,V=Q.timeout||120000;try{let $=Bun.spawnSync(["sh","-c",Z],{cwd:X.workingDirectory,timeout:V,maxBuffer:31457280}),J=$.stdout?.toString()||"",z=$.stderr?.toString()||"";if($.exitCode!==0)return{content:`Exit code: ${$.exitCode}
32
- ${J}
33
- ${z}`.trim(),is_error:!0};return{content:J||"(no output)"}}catch($){return{content:`Error executing command: ${$ instanceof Error?$.message:String($)}`,is_error:!0}}}},k9={name:"Glob",description:"Fast file pattern matching tool that works with any codebase size. Supports glob patterns.",input_schema:{type:"object",properties:{pattern:{type:"string",description:"The glob pattern to match files"},path:{type:"string",description:"The directory to search (default: current directory)"}},required:["pattern"]},handler:async(Q,X)=>{let Z=Q.pattern,V=Q.path||X.workingDirectory;try{let $=await j5(Z,{cwd:V,absolute:!0,nodir:!0});if($.length===0)return{content:"No files found matching pattern"};return{content:$.sort().join(`
34
- `)}}catch($){return{content:`Error searching files: ${$ instanceof Error?$.message:String($)}`,is_error:!0}}}},T9={name:"Grep",description:"A powerful search tool built on ripgrep. Supports full regex syntax.",input_schema:{type:"object",properties:{pattern:{type:"string",description:"The regular expression pattern to search for"},path:{type:"string",description:"File or directory to search"},glob:{type:"string",description:"Glob pattern to filter files"},output_mode:{type:"string",enum:["content","files_with_matches","count"],description:"Output mode (default: content)"},"-i:":{type:"boolean",description:"Case insensitive search"},"-C:":{type:"number",description:"Context lines around match"},head_limit:{type:"number",description:"Maximum number of results"}},required:["pattern"]},handler:async(Q,X)=>{let Z=Q.pattern,V=Q.path||X.workingDirectory,$=Q.glob,J=Q.output_mode||"content",z=Q["-i:"],Y=Q["-C:"],K=Q.head_limit;try{let q=["--json"];if(z)q.push("-i");if(Y)q.push("-C",String(Y));if($)q.push("--glob",$);if(J==="files_with_matches")q.push("--files-with-matches");if(J==="count")q.push("--count");q.push(Z,V);let H=Bun.spawnSync(["rg",...q],{cwd:X.workingDirectory,maxBuffer:10485760}).stdout?.toString()||"";if(!H.trim())return{content:"No matches found"};if(J==="content"){let j=H.trim().split(`
35
- `),_=[];for(let G of j.slice(0,K||100))try{let U=JSON.parse(G);if(U.type==="match"){let w=U.data?.path?.text||"",A=U.data?.line_number||0,B=U.data?.lines?.text||"";_.push(`${w}:${A}:${B.trim()}`)}}catch{_.push(G)}return{content:_.join(`
36
- `)||"No matches found"}}return{content:H.trim()}}catch(q){return{content:`Error searching: ${q instanceof Error?q.message:String(q)}`,is_error:!0}}}},E9={name:"Task",description:`Launch a new agent to handle complex, multi-step tasks autonomously.
37
-
38
- The Task tool launches specialized agents (subprocesses) that autonomously handle complex tasks. Each agent type has specific capabilities and tools available to it.
39
-
40
- Available agent types and their tools:
41
- - Bash: Command execution specialist for running bash commands. Use for git operations, command execution, and other terminal tasks.
42
- - general-purpose: General-purpose agent for researching complex questions, searching for code, and executing multi-step tasks.
43
- - Explore: Fast agent specialized for exploring codebases. Use to quickly find files by patterns, search code for keywords, or answer questions about the codebase.
44
- - Plan: Software architect agent for designing implementation plans. Returns step-by-step plans, identifies critical files and considers architectural trade-offs.
45
-
46
- When using the Task tool, you must specify a subagent_type parameter to select the agent type.
47
-
48
- Usage notes:
49
- - Always include a short description (3-5 words) summarizing what the agent will do
50
- - Launch multiple agents concurrently whenever possible to maximize performance
51
- - Agents can be resumed using the "resume" parameter by passing the agent ID from a previous invocation.`,input_schema:{type:"object",properties:{subagent_type:{type:"string",enum:["Bash","general-purpose","Explore","Plan"],description:"The agent type to launch"},description:{type:"string",description:"A short (3-5 word) description of what the agent will do"},prompt:{type:"string",description:"The task for the agent to perform"},resume:{type:"string",description:"Resume a previous agent by its ID"},model:{type:"string",enum:["sonnet","opus","haiku"],description:"Model for the subagent (default: haiku for quick tasks)"},run_in_background:{type:"boolean",description:"Run the agent in the background"}},required:["subagent_type","prompt"]},handler:async(Q,X)=>{let{subagent_type:Z,prompt:V,description:$}=Q,J=Q.model||"haiku",z=Q.resume,Y=Q.run_in_background,K=z||`${Z.toLowerCase()}-${Date.now().toString(36)}`;try{let q=process.env.ANTHROPIC_API_KEY||process.env.CLAUDE_API_KEY||process.env.ANTHROPIC_AUTH_TOKEN||process.env.Z_AI_API_KEY||"";if(!q)return{content:"Error: No API key available for subagent. Set ANTHROPIC_API_KEY, CLAUDE_API_KEY, ANTHROPIC_AUTH_TOKEN, or Z_AI_API_KEY environment variable.",is_error:!0};let W={haiku:"claude-haiku-4-5",sonnet:"claude-sonnet-4-6",opus:"claude-opus-4-6"},H=W[J]||W.haiku,j=[import.meta.dir+"/../../dist/cli.js",import.meta.dir+"/../cli.ts",process.cwd()+"/dist/cli.js",process.cwd()+"/src/cli.ts"],_=null;for(let B of j)try{if(await Bun.file(B).exists()){_=B;break}}catch{}if(!_)return{content:`Error: Could not find CLI. Tried:
52
- ${j.join(`
53
- `)}`,is_error:!0};let G=["run",_,"-m",H,"-p",X.permissionMode,"-q",V];if(Y)return Bun.spawn(["bun",...G],{cwd:X.workingDirectory,detached:!0,stdio:["ignore","pipe","pipe"],env:{...process.env,ANTHROPIC_API_KEY:q}}).unref(),{content:JSON.stringify({agentId:K,status:"running",message:`Agent started in background. Use TaskOutput tool with task_id: "${K}" to check results.`,description:$||"Background task"})};let U=Bun.spawnSync(["bun",...G],{cwd:X.workingDirectory,timeout:300000,maxBuffer:10485760,env:{...process.env,ANTHROPIC_API_KEY:q}}),w=U.stdout?.toString()||"",A=U.stderr?.toString()||"";if(U.exitCode!==0)return{content:`Agent failed with exit code ${U.exitCode}
54
- ${A}
55
- ${w}`.trim(),is_error:!0};return{content:JSON.stringify({agentId:K,status:"completed",output:w,description:$||"Task completed"})}}catch(q){return{content:`Error running subagent: ${q instanceof Error?q.message:String(q)}`,is_error:!0}}}},b9={name:"NotebookEdit",description:`Completely replaces the contents of a specific cell in a Jupyter notebook (.ipynb file) with new source.
56
-
57
- Jupyter notebooks are interactive documents that combine code, text, and visualizations. The notebook_path parameter must be an absolute path, not a relative path. The cell_number is 0-indexed. Use edit_mode=insert to add a new cell at the index specified by cell_number. Use edit_mode=delete to delete the cell at the index specified by cell_number.`,input_schema:{type:"object",properties:{notebook_path:{type:"string",description:"The absolute path to the Jupyter notebook file to edit"},cell_id:{type:"string",description:"The ID of the cell to edit (optional, alternative to cell_number)"},cell_number:{type:"number",description:"The index of the cell to edit (0-indexed)"},new_source:{type:"string",description:"The new source for the cell"},cell_type:{type:"string",enum:["code","markdown"],description:"The type of the cell (code or markdown). Defaults to code."},edit_mode:{type:"string",enum:["replace","insert","delete"],description:"The type of edit to perform (replace, insert, delete)"}},required:["notebook_path"]},handler:async(Q,X)=>{let{notebook_path:Z,cell_id:V,cell_number:$,new_source:J}=Q,z=Q.cell_type||"code",Y=Q.edit_mode||"replace";try{let K=Bun.file(Z);if(!await K.exists())return{content:`Error: Notebook not found: ${Z}`,is_error:!0};let q=await K.json();if(!q.cells||!Array.isArray(q.cells))return{content:"Error: Invalid notebook format - no cells array",is_error:!0};let W;if(V){if(W=q.cells.findIndex((H)=>H.id===V),W===-1)return{content:`Error: Cell with ID "${V}" not found`,is_error:!0}}else if($!==void 0){if(W=$,W<0||W>=q.cells.length)if(Y==="insert")W=q.cells.length;else return{content:`Error: Cell number ${W} out of range (0-${q.cells.length-1})`,is_error:!0}}else if(Y!=="insert")return{content:"Error: Must specify either cell_id or cell_number",is_error:!0};else W=q.cells.length;switch(Y){case"delete":{q.cells.splice(W,1);break}case"insert":{let H={id:`cell-${Date.now()}`,cell_type:z,source:J||"",metadata:{},...z==="code"?{outputs:[],execution_count:null}:{}};q.cells.splice(W,0,H);break}case"replace":default:{if(J===void 0)return{content:"Error: new_source is required for replace mode",is_error:!0};let H=q.cells[W];if(!H)return{content:`Error: Cell at index ${W} not found`,is_error:!0};q.cells[W]={...H,source:J,cell_type:z,...z==="code"?{execution_count:null}:{}};break}}return await Bun.write(Z,JSON.stringify(q,null,1)),{content:JSON.stringify({success:!0,message:`Successfully ${Y}d cell in ${Z}`,cellCount:q.cells.length})}}catch(K){return{content:`Error editing notebook: ${K instanceof Error?K.message:String(K)}`,is_error:!0}}}},y9=[P9,N9,x9,I9,k9,T9,E9,b9];function uX(Q){return y9.find((X)=>X.name===Q)}import{spawn as f9}from"child_process";import i5 from"ws";class n5{static MCPClient=n5;name;config;connected=!1;tools=[];process=null;websocket=null;requestId=0;pendingRequests=new Map;buffer="";onLog;constructor(Q){this.name=Q.name,this.config=Q.config,this.onLog=Q.onLog}async connect(){if(this.config.type==="stdio")await this.connectStdio();else if(this.config.type==="http"||this.config.type==="sse")await this.connectHttp();else if(this.config.type==="ws")await this.connectWebSocket()}async connectStdio(){if(!this.config.command)throw Error("No command specified for stdio transport");this.log(`Starting stdio transport: ${this.config.command}`),this.process=f9(this.config.command,this.config.args||[],{env:{...process.env,...this.config.env},stdio:["pipe","pipe","pipe"]}),this.process.stdout?.on("data",(Q)=>{this.handleData(Q.toString())}),this.process.stderr?.on("data",(Q)=>{this.log(`stderr: ${Q.toString()}`)}),this.process.on("error",(Q)=>{this.log(`Process error: ${Q.message}`)}),this.process.on("close",(Q)=>{this.log(`Process closed with code ${Q}`),this.connected=!1}),await new Promise((Q)=>setTimeout(Q,100)),await this.initialize()}async connectHttp(){if(!this.config.url)throw Error("No URL specified for HTTP transport");this.log(`Starting HTTP transport: ${this.config.url}`);try{let Q=await fetch(this.config.url,{method:"POST",headers:{"Content-Type":"application/json",...this.config.headers},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"initialize",params:{protocolVersion:"2024-11-05",capabilities:{},clientInfo:{name:"claude-code-remake",version:"0.1.0"}}})});if(!Q.ok)throw Error(`HTTP error: ${Q.status}`);let X=await Q.json();this.connected=!0,await this.loadTools()}catch(Q){let X=Q instanceof Error?Q.message:String(Q);throw Error(`Failed to connect to HTTP server: ${X}`)}}async connectWebSocket(){if(!this.config.url)throw Error("No URL specified for WebSocket transport");let Q=this.config.url;return this.log(`Starting WebSocket transport: ${Q}`),new Promise((X,Z)=>{let V={...this.config.headers},$=new i5(Q,{headers:V,handshakeTimeout:this.config.timeout||30000});$.on("open",()=>{this.log("WebSocket connection established"),this.websocket=$,this.connected=!0,this.initialize().then(()=>X()).catch((J)=>{let z=J instanceof Error?J.message:String(J);this.log(`Initialization failed: ${z}`),Z(J)})}),$.on("message",(J,z)=>{let Y=z?J.toString():J.toString();this.handleData(Y)}),$.on("error",(J)=>{if(this.log(`WebSocket error: ${J.message}`),!this.connected)Z(Error(`WebSocket connection failed: ${J.message}`))}),$.on("close",(J,z)=>{this.log(`WebSocket closed: code=${J}, reason=${z.toString()}`),this.connected=!1,this.websocket=null;for(let[Y,K]of this.pendingRequests)this.pendingRequests.delete(Y),K.reject(Error(`WebSocket closed: ${z.toString()}`))}),$.on("ping",()=>{$.pong()})})}async initialize(){let Q=await this.request("initialize",{protocolVersion:"2024-11-05",capabilities:{tools:{},resources:{},prompts:{}},clientInfo:{name:"claude-code-remake",version:"0.1.0"}});this.log(`Initialized with: ${JSON.stringify(Q)}`),this.connected=!0,this.notify("notifications/initialized",{}),await this.loadTools()}async loadTools(){try{let Q=await this.request("tools/list",{});this.tools=Q.tools.map((X)=>({name:X.name,description:X.description,inputSchema:X.inputSchema})),this.log(`Loaded ${this.tools.length} tools`)}catch(Q){this.log(`Failed to load tools: ${Q}`)}}async callTool(Q,X){return{content:(await this.request("tools/call",{name:Q,arguments:X})).content.filter(($)=>$.type==="text").map(($)=>$.text||"").join(`
58
- `)}}async request(Q,X){let Z=++this.requestId,V={jsonrpc:"2.0",id:Z,method:Q,params:X};return new Promise(($,J)=>{this.pendingRequests.set(Z,{resolve:$,reject:J});let z=JSON.stringify(V);if(this.websocket&&this.websocket.readyState===i5.OPEN)this.websocket.send(z);else if(this.process?.stdin?.writable)this.process.stdin.write(z+`
59
- `);else{this.pendingRequests.delete(Z),J(Error("No active connection to send request"));return}setTimeout(()=>{if(this.pendingRequests.has(Z))this.pendingRequests.delete(Z),J(Error(`Request timeout for ${Q}`))},this.config.timeout||120000)})}notify(Q,X){let V=JSON.stringify({jsonrpc:"2.0",method:Q,params:X});if(this.websocket&&this.websocket.readyState===i5.OPEN)this.websocket.send(V);else if(this.process?.stdin?.writable)this.process.stdin.write(V+`
60
- `)}handleData(Q){this.buffer+=Q;let X=this.buffer.split(`
61
- `);this.buffer=X.pop()||"";for(let Z of X){if(!Z.trim())continue;try{let V=JSON.parse(Z);if(V.id!==void 0){let $=this.pendingRequests.get(V.id);if($)if(this.pendingRequests.delete(V.id),V.error)$.reject(Error(V.error.message));else $.resolve(V.result)}}catch(V){this.log(`Parse error: ${V}`)}}}async close(){if(this.websocket)this.websocket.close(),this.websocket=null;if(this.process)this.process.kill(),this.process=null;this.connected=!1}log(Q){this.onLog?.(`[MCP:${this.name}] ${Q}`)}}async function mX(Q,X){let Z=new Map;for(let[V,$]of Object.entries(Q)){if($.disabled)continue;let J=new n5({name:V,config:$,onLog:X});try{await J.connect(),Z.set(V,J)}catch(z){let Y=z instanceof Error?z.message:String(z);X?.(`[MCP:${V}] Failed to connect: ${Y}`)}}return Z}import{spawn as u9}from"child_process";class h9{hooks=new Map;timeout;constructor(Q=60000){this.timeout=Q}register(Q,X){if(!this.hooks.has(Q))this.hooks.set(Q,[]);this.hooks.get(Q)?.push(X)}registerAll(Q){for(let[X,Z]of Object.entries(Q))for(let V of Z)this.register(X,V)}async execute(Q,X){let Z=this.hooks.get(Q);if(!Z||Z.length===0)return{decision:"allow"};let V={...X,event:Q,timestamp:Date.now()};for(let $ of Z){if($.enabled===!1)continue;let J=await this.executeHook($,V);if(J.decision==="deny"||J.decision==="block")return J;if(J.modified_input)Object.assign(X,J.modified_input)}return{decision:"allow"}}async executeHook(Q,X){let Z=Q.timeout||this.timeout;try{return await new Promise(($,J)=>{let z=u9(Q.command,[],{shell:!0,stdio:["pipe","pipe","pipe"]}),Y="",K="";z.stdout?.on("data",(q)=>{Y+=q.toString()}),z.stderr?.on("data",(q)=>{K+=q.toString()}),z.on("close",(q)=>{if(q===0)try{let W=JSON.parse(Y);$(W)}catch{$({decision:"allow"})}else if(q===1)$({decision:"deny",reason:K||"Hook denied execution"});else if(q===2)$({decision:"block",reason:K||"Hook blocked execution"});else $({decision:"allow"})}),z.on("error",(q)=>{$({decision:"allow",reason:`Hook error: ${q.message}`})}),z.stdin?.write(JSON.stringify(X)),z.stdin?.end(),setTimeout(()=>{z.kill(),$({decision:"allow",reason:"Hook timeout"})},Z)})}catch(V){return{decision:"allow",reason:`Hook execution failed: ${V instanceof Error?V.message:String(V)}`}}}getHooks(Q){return this.hooks.get(Q)||[]}clear(Q){if(Q)this.hooks.delete(Q);else this.hooks.clear()}}var pX={validateWrite:{event:"PreToolUse",command:`node -e '
62
- const input = JSON.parse(require("fs").readFileSync(0, "utf8"));
63
- if (input.tool_name === "Write") {
64
- const path = input.tool_input.file_path;
65
- if (path.includes("..") || path.startsWith("/etc/")) {
66
- console.log(JSON.stringify({ decision: "deny", reason: "Unsafe path" }));
67
- process.exit(1);
68
- }
69
- }
70
- console.log(JSON.stringify({ decision: "allow" }));
71
- '`,timeout:5000,enabled:!1},logToolUse:{event:"PostToolUse",command:`node -e '
72
- const input = JSON.parse(require("fs").readFileSync(0, "utf8"));
73
- console.error(\`[LOG] Tool: \${input.tool_name}\`);
74
- console.log(JSON.stringify({ decision: "allow" }));
75
- '`,timeout:5000,enabled:!1}},iX={PreToolUse:"Before a tool is executed. Can modify input or deny execution.",PostToolUse:"After a tool successfully executes. Can process result.",PostToolUseFailure:"After a tool fails. Can handle error or retry.",Stop:"When the agent stops (end_turn, max_tokens, error).",UserPromptSubmit:"When user submits a prompt. Can modify or reject.",SessionStart:"When a new session starts.",SessionEnd:"When a session ends.",Notification:"When a notification is sent.",ConfigChange:"When configuration changes.",WorktreeCreate:"When a git worktree is created."},nX={ALLOW:0,DENY:1,BLOCK:2};import{readFileSync as g9,existsSync as Q7,readdirSync as d9}from"fs";import{join as m9}from"path";function c9(Q,X="project"){if(!Q7(Q))return null;let Z=g9(Q,"utf-8"),V=Q.split("/").pop()?.replace(/\.md$/i,"")||"unknown",$=Z.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);if(!$)return{path:Q,name:V,description:"",prompt:Z.trim(),source:X};let J=$[1]??"",z=$[2]??"",Y=l9(J);return{path:Q,name:Y.name||V,description:Y.description||"",prompt:z.trim(),tools:Y.tools,model:Y.model,color:Y.color,source:X}}function l9(Q){let X={},Z=Q.split(`
76
- `);for(let V of Z){let $=V.match(/^(\w+):\s*(.*)$/);if($){let J=$[1];if(!J)continue;let z=$[2]??"";if(z.startsWith("["))try{X[J]=JSON.parse(z)}catch{X[J]=z}else if(z==="true")X[J]=!0;else if(z==="false")X[J]=!1;else if(/^\d+$/.test(z))X[J]=parseInt(z,10);else if(/^\d+\.\d+$/.test(z))X[J]=parseFloat(z);else X[J]=z}}return X}class p9{skills=new Map;loadFromDirectory(Q,X="project"){if(!Q7(Q))return 0;let Z=0,V=d9(Q);for(let $ of V)if($.endsWith(".md")){let J=c9(m9(Q,$),X);if(J)this.skills.set(J.name,J),Z++}return Z}get(Q){return this.skills.get(Q)}getAll(){return Array.from(this.skills.values())}has(Q){return this.skills.has(Q)}getNames(){return Array.from(this.skills.keys())}}function tX(Q){return`
77
- <skill-loading>
78
- You are operating with the "${Q.name}" skill loaded.
79
-
80
- ${Q.description?`Description: ${Q.description}
81
- `:""}
82
- ${Q.prompt}
83
- </skill-loading>
84
- `.trim()}var eX=[{path:"built-in://commit",name:"commit",description:"Create a git commit with the staged changes",prompt:`Analyze the staged changes and create a git commit.
85
-
86
- Steps:
87
- 1. Run \`git diff --staged\` to see staged changes
88
- 2. Run \`git log --oneline -5\` to understand commit message style
89
- 3. Create a commit message following conventional commits format
90
- 4. Include "Co-Authored-By: Claude <noreply@anthropic.com>" if applicable
91
- 5. Run \`git commit\` with the message`,tools:["Bash"],model:"sonnet",source:"built-in"},{path:"built-in://review-pr",name:"review-pr",description:"Review a pull request",prompt:`Review the current pull request and provide feedback.
92
-
93
- Steps:
94
- 1. Use \`gh pr view\` to get PR details
95
- 2. Use \`gh pr diff\` to see the changes
96
- 3. Analyze the code for:
97
- - Bugs and potential issues
98
- - Code quality and style
99
- - Test coverage
100
- - Documentation
101
- 4. Provide constructive feedback
102
- 5. Approve or request changes as appropriate`,tools:["Bash"],model:"sonnet",source:"built-in"},{path:"built-in://mcp-builder",name:"mcp-builder",description:"Guide for creating MCP servers",prompt:`Help the user build MCP (Model Context Protocol) servers.
103
-
104
- MCP servers enable LLMs to interact with external services through well-designed tools.
105
-
106
- Key concepts:
107
- 1. Use FastMCP (Python) or MCP SDK (TypeScript)
108
- 2. Define tools with clear input schemas
109
- 3. Return structured content
110
- 4. Handle errors gracefully
111
-
112
- Transport types:
113
- - stdio: Local process communication
114
- - HTTP: REST API with JSON-RPC
115
- - SSE: Server-Sent Events for streaming
116
- - WebSocket: Bidirectional communication`,tools:["Read","Write","Edit","Bash"],model:"sonnet",source:"built-in"},{path:"built-in://claude-hooks",name:"claude-hooks",description:"Guide for Claude Code hooks",prompt:`Help the user configure Claude Code hooks.
117
-
118
- Hooks are user-defined shell commands that execute at specific points during Claude Code's lifecycle.
119
-
120
- Available events:
121
- - PreToolUse: Before a tool executes
122
- - PostToolUse: After a tool succeeds
123
- - PostToolUseFailure: After a tool fails
124
- - Stop: When agent stops
125
- - UserPromptSubmit: When user submits prompt
126
- - SessionStart/SessionEnd: Session lifecycle
127
-
128
- Exit codes:
129
- - 0: Allow execution
130
- - 1: Deny and show stderr
131
- - 2: Block silently`,tools:["Read","Write","Edit"],model:"sonnet",source:"built-in"}];function QZ(Q){return Q.match(/^\/(\w+)(?:\s+(.*))?$/)?.[1]??null}function XZ(Q){return Q.match(/^\/\w+\s+(.*)$/)?.[1]??""}import{spawn as o5}from"child_process";import{mkdirSync as X7,rmSync as i9,existsSync as Z7,readFileSync as n9}from"fs";import{join as lQ}from"path";class o9{teams=new Map;teammates=new Map;messageQueue=new Map;storagePath;constructor(Q="~/.claude/teams"){if(this.storagePath=Q.replace("~",process.env.HOME||""),!Z7(this.storagePath))X7(this.storagePath,{recursive:!0});this.loadTeams()}createTeam(Q){let X={...Q,status:"active"};this.teams.set(Q.name,X);for(let Z of Q.teammates)this.teammates.set(Z.teammateId,Z);return this.persistTeam(X).catch((Z)=>{console.error(`Failed to persist team ${Q.name}:`,Z)}),X}getTeam(Q){return this.teams.get(Q)}listTeams(){return Array.from(this.teams.values())}deleteTeam(Q){let X=this.teams.get(Q);if(X){for(let V of X.teammates)this.teammates.delete(V.teammateId),this.messageQueue.delete(V.teammateId);this.teams.delete(Q);let Z=lQ(this.storagePath,Q);try{i9(Z,{recursive:!0,force:!0})}catch(V){console.error(`Failed to delete team directory ${Z}:`,V)}}}getTeammate(Q){return this.teammates.get(Q)}updateTeammateStatus(Q,X){let Z=this.teammates.get(Q);if(Z)Z.status=X}async spawnTeammate(Q,X={}){let{session:Z,workingDir:V=process.cwd()}=X;if(!process.env.TMUX)await this.spawnInTerminal(Q,{session:Z,workingDir:V});else await this.spawnInTmux(Q,{session:Z,workingDir:V});this.updateTeammateStatus(Q.teammateId,"in_progress")}async spawnInTerminal(Q,X){let Z=["bun","run","src/cli.ts","--teammate-mode","--agent-id",Q.teammateId,"--agent-name",Q.name,"--team-name",Q.teamName,"--agent-color",Q.color];if(Q.planModeRequired)Z.push("--permission-mode","plan");if(process.platform==="darwin"){let V=`
132
- tell application "Terminal"
133
- do script "cd ${X.workingDir} && ${Z.join(" ")}"
134
- activate
135
- end tell
136
- `;o5("osascript",["-e",V])}else o5("xterm",["-e",Z.join(" ")])}async spawnInTmux(Q,X){let Z=X.session||process.env.TMUX?.split(",")[0]?.split(":")[0]||"claude";await this.tmuxCommand(["split-window","-t",Z,"-c",X.workingDir]);let V=await this.tmuxCommand(["display-message","-p","#{pane_id}"]);if(V)Q.paneId=V.trim();let $=["bun","run","src/cli.ts","--teammate-mode","--agent-id",Q.teammateId,"--agent-name",Q.name,"--team-name",Q.teamName];await this.tmuxCommand(["send-keys","-t",Q.paneId||"",$.join(" "),"Enter"])}async tmuxCommand(Q){return new Promise((X)=>{let Z=o5("tmux",Q),V="";Z.stdout?.on("data",($)=>{V+=$.toString()}),Z.on("close",()=>{X(V)})})}broadcast(Q,X,Z){let V=this.teams.get(Q);if(!V)return;let $={type:"broadcast",from:Z||"system",content:X,timestamp:Date.now()};for(let J of V.teammates){if(Z&&J.teammateId===Z)continue;let z=this.messageQueue.get(J.teammateId)||[];z.push($),this.messageQueue.set(J.teammateId,z)}}sendDirect(Q,X,Z){let V={type:"direct",from:X,to:Q,content:Z,timestamp:Date.now()},$=this.messageQueue.get(Q)||[];$.push(V),this.messageQueue.set(Q,$)}getMessages(Q){let X=this.messageQueue.get(Q)||[];return this.messageQueue.delete(Q),X}hasMessages(Q){let X=this.messageQueue.get(Q);return X!==void 0&&X.length>0}peekMessages(Q){return this.messageQueue.get(Q)||[]}clearMessages(Q){this.messageQueue.delete(Q)}getMessageCount(Q){return this.messageQueue.get(Q)?.length||0}async persistTeam(Q){let X=lQ(this.storagePath,Q.name),Z=lQ(X,"config.json");if(!Z7(X))X7(X,{recursive:!0});await Bun.write(lQ(X,".gitkeep"),"");let V={name:Q.name,description:Q.description,teammates:Q.teammates,taskListId:Q.taskListId,status:Q.status,coordination:Q.coordination,updatedAt:Date.now()};await Bun.write(Z,JSON.stringify(V,null,2))}loadTeams(){let Q=new Bun.Glob("**/config.json");try{let X=Array.from(Q.scanSync(this.storagePath));for(let Z of X)try{let V=lQ(this.storagePath,Z);if(Bun.file(V).size===0)continue;let z=n9(V,"utf-8"),Y=JSON.parse(z);if(!Y.name||!Y.teammates||!Array.isArray(Y.teammates))continue;let K={name:Y.name,description:Y.description||"",teammates:Y.teammates,taskListId:Y.taskListId||"",status:Y.status||"active",coordination:Y.coordination||{dependencyOrder:[],communicationProtocol:"broadcast",taskAssignmentStrategy:"manual"}};this.teams.set(K.name,K);for(let q of K.teammates)this.teammates.set(q.teammateId,q)}catch(V){}}catch(X){if(X.code!=="ENOENT");}}async persistAllTeams(){let Q=Array.from(this.teams.values()).map((X)=>this.persistTeam(X));await Promise.all(Q)}}var zZ={architect:(Q)=>({name:"architect",teamName:Q,color:"blue",prompt:`You are an architect on the ${Q} team.
137
- Your role is to design and plan the technical architecture.
138
- Focus on:
139
- - System design and component relationships
140
- - API contracts and interfaces
141
- - Data models and schemas
142
- - Trade-offs and design decisions`,planModeRequired:!0,status:"pending"}),implementer:(Q)=>({name:"implementer",teamName:Q,color:"green",prompt:`You are an implementer on the ${Q} team.
143
- Your role is to write clean, working code based on the architecture.
144
- Focus on:
145
- - Implementing the designed architecture
146
- - Writing tests
147
- - Following coding standards
148
- - Handling edge cases`,planModeRequired:!1,status:"pending"}),reviewer:(Q)=>({name:"reviewer",teamName:Q,color:"yellow",prompt:`You are a code reviewer on the ${Q} team.
149
- Your role is to review code changes and provide feedback.
150
- Focus on:
151
- - Code quality and readability
152
- - Potential bugs and issues
153
- - Performance considerations
154
- - Test coverage`,planModeRequired:!1,status:"pending"}),tester:(Q)=>({name:"tester",teamName:Q,color:"orange",prompt:`You are a tester on the ${Q} team.
155
- Your role is to ensure features work correctly.
156
- Focus on:
157
- - Writing comprehensive tests
158
- - Finding edge cases
159
- - Verifying requirements
160
- - Reporting bugs`,planModeRequired:!1,status:"pending"})};function a9(){return`teammate_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function YZ(Q){return{...Q,teammateId:a9(),status:"pending"}}
161
- export{q7 as a,aQ as b,s9 as c,G7 as d,U7 as e,A7 as f,w7 as g,e5 as h,F7 as i,v7 as j,w5 as k,B5 as l,$0 as m,J0 as n,z0 as o,L0 as p,M5 as q,F0 as r,v0 as s,O0 as t,E7 as u,b7 as v,D0 as w,P9 as x,N9 as y,x9 as z,I9 as A,k9 as B,T9 as C,E9 as D,b9 as E,y9 as F,uX as G,n5 as H,mX as I,h9 as J,pX as K,iX as L,nX as M,c9 as N,p9 as O,tX as P,eX as Q,QZ as R,XZ as S,o9 as T,zZ as U,a9 as V,YZ as W};