@ebowwa/coder 0.1.11 → 0.2.0

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.
@@ -0,0 +1,280 @@
1
+ // @bun
2
+ var B9=Object.create;var{getPrototypeOf:w9,defineProperty:V7,getOwnPropertyNames:L9}=Object;var O9=Object.prototype.hasOwnProperty;var F9=(Q,X,Z)=>{Z=Q!=null?B9(w9(Q)):{};let V=X||!Q||!Q.__esModule?V7(Z,"default",{value:Q,enumerable:!0}):Z;for(let $ of L9(Q))if(!O9.call(V,$))V7(V,$,{get:()=>Q[$],enumerable:!0});return V};var F6=import.meta.require;var e5={enabled:!0,ttl:"1h",cacheSystemPrompt:!0,cacheTools:!0,minTokensForCache:1024},M9={low:1024,medium:4096,high:16384,max:1e5},MQ={enabled:!1,effort:"medium",interleaved:!0};function $7(Q,X){if(Q.budgetTokens)return Q.budgetTokens;let Z=Q.effort||"medium",V=M9[Z],$=Q.modelMultiplier??(X.includes("opus")?2:1);return Math.min(V*$,1e5)}function J7(Q){return Q.includes("claude-opus-4")||Q.includes("claude-sonnet-4")||Q.includes("claude-haiku-4")||Q.includes("claude-4")}var CQ={"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 C9={maxRetries:3,baseDelayMs:1000,maxDelayMs:30000,jitterFactor:0.2,retryableStatusCodes:[429,500,502,503,504,529],onRetry:void 0};function v9(Q,X,Z,V){let $=X*Math.pow(2,Q),J=$*V*(Math.random()*2-1);return Math.min($+J,Z)}function R9(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 N9(Q){return new Promise((X)=>setTimeout(X,Q))}async function z7(Q,X={}){let Z={...C9,...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&&R9(V,Z.retryableStatusCodes)){let z=v9($,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 N9(z)}else throw V}throw V||Error("Max retries exceeded")}var Y7={"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 P9(Q,X){let Z=Y7[Q]??Y7["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,H=J/1e6*Z.cache_write,q=z/1e6*Z.output,W=Y+K+H+q,_=($+J)/1e6*(Z.input-Z.cache_read);return{costUSD:W,estimatedSavingsUSD:_}}function D9(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 S9(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,H=V===Q.length-1;if(Y.type==="text"&&Y.text.length>=X.minTokensForCache*4&&!Y.cache_control&&(K||H))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 I9(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 K7(Q,X){let{apiKey:Z,model:V="claude-sonnet-4-6",maxTokens:$=4096,tools:J,systemPrompt:z,cacheConfig:Y=e5,thinking:K,extendedThinking:H,onToken:q,onThinking:W,onRedactedThinking:G,onToolUse:_,signal:j}=X,U=Date.now(),B=0,A=!0,w=0,O=S9(Q,Y),F=D9(z,Y),L={model:V,max_tokens:$,messages:O.map((N)=>({role:N.role,content:N.content})),stream:!0};if(F)L.system=F;if(J&&J.length>0)L.tools=J;let C=`${process.env.ANTHROPIC_BASE_URL||"https://api.anthropic.com"}/v1/messages`,I={"Content-Type":"application/json","x-api-key":Z,"anthropic-version":"2023-06-01"};if(((H?.enabled??!1)||K&&K.type!=="disabled")&&J7(V)){let N;if(H?.budgetTokens)N=H.budgetTokens;else if(K?.type==="enabled")N=K.budget_tokens;else{let W5=H?.effort||"medium";N=$7({enabled:!0,effort:W5,modelMultiplier:V.includes("opus")?2:1},V)}N=Math.max(1024,Math.min(N,1e5)),L.thinking={type:"enabled",budget_tokens:N};let Q5=["extended-thinking-2025-01-24"];if(H?.interleaved!==!1)Q5.push("interleaved-thinking-2025-01-24");I["anthropic-beta"]=Q5.join(",")}else I["anthropic-beta"]="max-tokens-3-5-sonnet-2024-07-15";let y={maxRetries:3,baseDelayMs:1000,maxDelayMs:30000,retryableStatusCodes:[429,500,502,503,504,529],onRetry:(N,Q5,W5)=>{console.log(`\x1B[33mAPI retry ${N}/3 after ${W5}ms: ${Q5.message}\x1B[0m`)}},q5=await z7(async()=>{let N=await fetch(C,{method:"POST",headers:I,body:JSON.stringify(L),signal:j});if(!N.ok&&y.retryableStatusCodes?.includes(N.status)){let Q5=await N.text();throw Error(`API error: ${N.status} - ${Q5}`)}return N},y);if(!q5.ok){let N=await q5.text();throw Error(`API error: ${q5.status} - ${N}`)}if(!q5.body)throw Error("No response body");let P5=q5.body.getReader(),s5=new TextDecoder,s=null,$5=[],E={input_tokens:0,output_tokens:0},j5=null,t=null,L5=null,d=null,D5="",Z7="";try{let N="";while(!0){let{done:Q5,value:W5}=await P5.read();if(Q5)break;N+=s5.decode(W5,{stream:!0});let x5=N.split(`
3
+ `);N=x5.pop()||"";for(let O5 of x5){if(!O5.startsWith("data: "))continue;let T5=O5.slice(6);if(!T5)continue;try{let R=JSON.parse(T5);switch(R.type){case"message_start":{let v=R.message;s=v,E=v.usage;break}case"content_block_start":{let v=R.content_block;if(v.type==="text")j5={type:"text",text:""};else if(v.type==="thinking")t={type:"thinking",thinking:""};else if(v.type==="redacted_thinking")L5={type:"redacted_thinking",data:""};else if(v.type==="tool_use")d={type:"tool_use",id:v.id,name:v.name,input:{}},D5="";break}case"content_block_delta":{let v=R.delta;if(v.type==="text_delta"&&j5){let M=v.text;if(j5.text+=M,q?.(M),A)B=Date.now()-U,A=!1}else if(v.type==="thinking_delta"&&t){let M=v.thinking;t.thinking+=M,W?.(M),w+=Math.ceil(M.length/4)}else if(v.type==="redacted_thinking_delta"&&L5){let M=v.data;L5.data+=M,G?.(M),w+=Math.ceil(M.length/4)}else if(v.type==="input_json_delta"&&d)D5+=v.partial_json;break}case"content_block_stop":{let v=R.content_block;if(v.type==="text")$5.push(j5),j5=null;else if(v.type==="thinking")$5.push(t),t=null;else if(v.type==="redacted_thinking"){let M={type:"redacted_thinking",data:v.data};$5.push(M),G?.(M.data),L5=null}else if(v.type==="tool_use"){try{d.input=JSON.parse(D5)}catch{d.input={}}$5.push(d),_?.({id:d.id,name:d.name,input:d.input}),d=null}break}case"message_delta":{let v=R;if(v.usage)E.output_tokens=v.usage.output_tokens;if(s&&v.delta?.stop_reason)s.stop_reason=v.delta.stop_reason;break}case"message_stop":break}}catch{}}}}finally{P5.releaseLock()}if(!s)throw Error("No message received from API");s.content=$5;let{costUSD:J5,estimatedSavingsUSD:S5}=P9(V,E),e=I9(E);e.estimatedSavingsUSD=S5;let I5=Date.now()-U;return{message:s,usage:E,cacheMetrics:e,costUSD:J5,durationMs:I5,ttftMs:B||I5,thinkingTokens:w}}import*as H7 from"readline";var x9={Read:"low",Glob:"low",Grep:"low",Task:"low",Write:"medium",Edit:"medium",NotebookEdit:"medium",Bash:"high"},T9=[/\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 k9(Q,X){let Z=x9[Q]??"medium";if(Q==="Bash"){let V=String(X.command??"");for(let $ of T9)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 E9(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 M6{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 $=k9(Q,X),J=E9(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=H7.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 C6={readOnly:["Read","Glob","Grep","Task"],fileEdit:["Write","Edit","NotebookEdit"],system:["Bash"],network:[]};function xQ(Q){return C6.readOnly.includes(Q)}function TQ(Q){return C6.fileEdit.includes(Q)}function kQ(Q){return C6.system.includes(Q)}var R6={tokenWarningThreshold:0.8,costUpdateInterval:5,toolSummaryInterval:3,envInfoOnStart:!0},v6={WARNING:0.8,CRITICAL:0.9,EMERGENCY:0.95};function b9(Q){let{current:X,max:Z,threshold:V=v6.WARNING}=Q;if(Z<=0)return"";let $=X/Z;if($<V)return"";let J=Z-X,z=Math.round($*100),Y,K;if($>=v6.EMERGENCY)Y="emergency",K="\uD83D\uDEA8";else if($>=v6.CRITICAL)Y="critical",K="\u26A0\uFE0F";else Y="warning",K="\u26A1";let H=[`${K} Token Usage ${Y.toUpperCase()}`,"",`Current: ${X.toLocaleString()} / ${Z.toLocaleString()} tokens (${z}%)`,`Remaining: ${J.toLocaleString()} tokens`];if(Y==="emergency")H.push(""),H.push("Consider summarizing or compacting the conversation to continue.");else if(Y==="critical")H.push(""),H.push("Approaching token limit. Consider wrapping up soon.");return H.join(`
4
+ `)}function y9(Q){let{cost:X,previousCost:Z=0,currency:V="USD"}=Q,$=f9(V),J=q7(X,$),z=X-Z,Y=q7(Math.abs(z),$),K=["\uD83D\uDCB0 Cost Update","",`Total: ${J} ${V}`];if(z!==0){let H=z>0?"+":"-";K.push(`This turn: ${H}${Y} ${V}`)}return K.join(`
5
+ `)}function q7(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 f9(Q){return{USD:"$",EUR:"\u20AC",GBP:"\xA3",JPY:"\xA5"}[Q]||Q}function u9(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 h9(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 W7(Q){let{usage:X,maxTokens:Z,totalCost:V,previousCost:$,toolsUsed:J,workingDirectory:z,gitStatus:Y,turnNumber:K,config:H}=Q,q={...R6,...H},W=[],G=X.input_tokens+X.output_tokens,_=b9({current:G,max:Z,threshold:q.tokenWarningThreshold});if(_)W.push(_);if(K%q.costUpdateInterval===0){let j=y9({cost:V,previousCost:$});W.push(j)}if(K%q.toolSummaryInterval===0&&J.length>0){let j=u9({tools:J});W.push(j)}if(K===1&&q.envInfoOnStart){let j=h9({workingDirectory:z,gitStatus:Y});W.push(j)}if(W.length===0)return"";return["---","System Reminders:","",...W,"---"].join(`
8
+ `)}function k5(Q){if(!Q||Q.length===0)return 0;return Math.ceil(Q.length/4)}function G7(Q){switch(Q.type){case"text":return k5(Q.text);case"image":return 100;case"tool_use":let X=JSON.stringify(Q.input);return k5(Q.name)+k5(X)+10;case"tool_result":if(typeof Q.content==="string")return k5(Q.content)+10;return Q.content.reduce((Z,V)=>Z+G7(V),0)+10;case"thinking":return k5(Q.thinking);default:return 0}}function g9(Q){return 4+Q.content.reduce((V,$)=>V+G7($),0)}function N6(Q){if(!Q||Q.length===0)return 0;return Q.reduce((X,Z)=>X+g9(Z),0)}function m9(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 d9(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 c9(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=m9(J);for(let H of J.content)if(H.type==="tool_use")Z.push(`${H.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 P6(Q,X,Z={}){let{keepFirst:V=1,keepLast:$=5,preserveToolPairs:J=!0}=Z,z=N6(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,-$),H=Q.slice(-$),W={role:"user",content:[{type:"text",text:`[Previous context has been compacted for continuity]
15
+
16
+ ${await c9(K)}`}]},G=[];if(J&&K.length>0){let B=d9(K),A=Array.from(B.values()).slice(-3).filter((w)=>w.result&&!w.result.is_error);for(let w of A)if(G.push(w.use),w.result)G.push(w.result)}let _=[...Y,W];if(G.length>0)_.push({role:"assistant",content:G.filter((B)=>B.type==="tool_use")}),_.push({role:"user",content:G.filter((B)=>B.type==="tool_result")});_.push(...H);let j=N6(_),U=Q.length-_.length;return console.log(`Context compaction: ${Q.length} -> ${_.length} messages, ${z} -> ${j} tokens`),{messages:_,messagesRemoved:U,tokensBefore:z,tokensAfter:j,didCompact:!0}}function _7(Q,X,Z=0.9){if(Q.length<8)return!1;let V=N6(Q),$=Math.floor(X*Z);return V>=$}function D6(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 iQ(Q,X){let{apiKey:Z,model:V="claude-sonnet-4-6",maxTokens:$=4096,systemPrompt:J,tools:z,permissionMode:Y,workingDirectory:K,gitStatus:H=null,reminderConfig:q,cacheConfig:W=e5,thinking:G,extendedThinking:_,onText:j,onThinking:U,onToolUse:B,onToolResult:A,onMetrics:w,onReminder:O,onPermissionRequest:F,signal:L}=X,P=new M6(Y,F),C=[...Q],I=[],g=[],y=0,q5=0,P5=0,s5=0,s=0,$5=0,E={cacheHits:0,cacheMisses:0,totalCacheReadTokens:0,totalCacheWriteTokens:0,cacheHitRate:0,estimatedSavingsUSD:0},j5={...R6,...q},t=!0;while(t){if(L?.aborted)break;P5++;let L5=I[I.length-1],d=W7({usage:L5?.usage??{input_tokens:0,output_tokens:0},maxTokens:$,totalCost:y,previousCost:s5,toolsUsed:g,workingDirectory:K,gitStatus:H,turnNumber:P5,config:j5});if(d)O?.(d);if(_7(C,$)){let R=await P6(C,$,{keepFirst:0,keepLast:3,preserveToolPairs:!0});if(R.didCompact&&R.tokensAfter<R.tokensBefore){C.length=0,C.push(...R.messages),s++;let v=R.tokensBefore-R.tokensAfter;$5+=v;let M=D6(R);console.log(`Context compacted: ${M.reductionPercent}% reduction, ${M.tokensSaved} tokens saved`)}}let D5=l9(C,J,d),Z7=await K7(D5,{apiKey:Z,model:V,maxTokens:$,systemPrompt:J,cacheConfig:W,thinking:G,extendedThinking:_,tools:z.map((R)=>({name:R.name,description:R.description,input_schema:R.input_schema})),onToken:j,onThinking:U,onToolUse:B,signal:L}),{message:J5,usage:S5,cacheMetrics:e,costUSD:I5,durationMs:N,ttftMs:Q5}=Z7,W5={model:V,messageCount:C.length,messageTokens:S5.input_tokens+S5.output_tokens,usage:S5,cacheMetrics:e,durationMs:N,ttftMs:Q5,costUSD:I5,stopReason:J5.stop_reason,requestId:J5.id};if(I.push(W5),s5=y,y+=I5,q5+=N,e)E.cacheHits+=e.cacheHits,E.cacheMisses+=e.cacheMisses,E.totalCacheReadTokens+=e.totalCacheReadTokens,E.totalCacheWriteTokens+=e.totalCacheWriteTokens,E.estimatedSavingsUSD+=e.estimatedSavingsUSD;let x5=E.cacheHits+E.cacheMisses;if(E.cacheHitRate=x5>0?E.cacheHits/x5:0,w?.(W5),C.push({role:"assistant",content:J5.content}),J5.stop_reason==="end_turn"||J5.stop_reason==="stop_sequence"){t=!1;break}if(J5.stop_reason==="max_tokens"){let R=await P6(C,$,{keepFirst:0,keepLast:3,preserveToolPairs:!0});if(R.didCompact&&R.tokensAfter<R.tokensBefore){C.length=0,C.push(...R.messages),s++;let v=R.tokensBefore-R.tokensAfter;$5+=v;let M=D6(R);console.log(`Context compacted: ${M.reductionPercent}% reduction, ${M.tokensSaved} tokens saved`);continue}else{t=!1;break}}let O5=J5.content.filter((R)=>R.type==="tool_use");if(g.push(...O5),O5.length===0){t=!1;break}let T5=[];if(L?.aborted);else{let R=O5.map(async(M)=>{let O6=z.find((z5)=>z5.name===M.name);if(!O6)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 t5=await P.checkPermission(O6.name,M.input);if(t5.decision==="deny"||t5.decision==="denyAlways")return{toolUseId:M.id,result:{type:"tool_result",tool_use_id:M.id,content:`Permission denied for tool "${M.name}"${t5.reason?`: ${t5.reason}`:""}`,is_error:!0},toolResult:null};try{let z5=await O6.handler(M.input,{workingDirectory:K,permissionMode:Y,abortSignal:L});return{toolUseId:M.id,result:{type:"tool_result",tool_use_id:M.id,content:z5.content,is_error:z5.is_error},toolResult:{id:M.id,result:z5}}}catch(z5){let A9=z5 instanceof Error?z5.message:String(z5);return{toolUseId:M.id,result:{type:"tool_result",tool_use_id:M.id,content:`Error: ${A9}`,is_error:!0},toolResult:null}}}),v=await Promise.all(R);for(let M of v)if(T5.push(M.result),M.toolResult)A?.(M.toolResult)}C.push({role:"user",content:T5})}return{messages:C,metrics:I,totalCost:y,totalDuration:q5,totalCacheMetrics:E,compactionCount:s,totalTokensCompacted:$5}}function l9(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)?p9(J.content,Z):[{type:"text",text:`${String(J.content)}
17
+
18
+ ${Z}`}]};V[$]=z;break}}return V}return Q}function p9(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 S6(Q){if(Q<0.01)return`$${Q.toFixed(4)}`;return`$${Q.toFixed(2)}`}function nQ(Q){let X=S6(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 oQ(Q){let X=S6(Q.costUSD),Z=Q.usage.input_tokens+Q.usage.output_tokens;return`Cost: ${X} | Tokens: ${Z.toLocaleString()}`}function aQ(Q){let X=S6(Q.estimatedSavingsUSD);return`Cache: ${(Q.cacheHitRate*100).toFixed(1)}% hit rate | ${Q.totalCacheReadTokens.toLocaleString()} read | ${Q.totalCacheWriteTokens.toLocaleString()} written | Saved: ${X}`}import{homedir as i9}from"os";import{join as Y5}from"path";class n9{sessionsDir;currentSessionId=null;currentSessionFile=null;writeQueue=Promise.resolve();constructor(Q){this.sessionsDir=Q??Y5(i9(),".claude","sessions")}async init(){try{await Bun.write(Y5(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=Y5(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=Y5(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=Y5(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",""),H=await this.getSessionSummary(K,Y);if(H)Z.push(H)}}catch{}return Z}async getSessionSummary(Q,X){let Z=X??Y5(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,H=0,q;for(let W of $)try{let G=JSON.parse(W);if(G.id&&G.created)J=G;else if(G.type==="message"){z++;let _=G.data;if(!q&&_.role==="user"){let j=_.content.find((U)=>U.type==="text");if(j&&"text"in j){if(q=j.text.slice(0,100),j.text.length>100)q+="..."}}}else if(G.type==="metrics")Y+=G.data.costUSD,K+=G.data.usage.input_tokens,H+=G.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:H},firstMessage:q,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=Y5(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??Y5(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=Y5(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 o9(Q){let X=new Date(Q.created),Z=new Date(Q.updated),V=a9(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 a9(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 eQ(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(o9(X)),console.log("");console.log("To resume a session:"),console.log(" claude-remake --resume <session-id>")}import{dlopen as r9,suffix as s9}from"bun:ffi";import{join as Q6,dirname as t9}from"path";import{fileURLToPath as e9}from"url";var U5=null;function j7(){if(U5)return U5;let Q=t9(e9(import.meta.url)),X=[Q6(Q,"..","..","native"),Q6(Q,"..","native")],Z=["index.darwin-arm64.node","index.darwin-x64.node","index.node"];for(let $ of X)for(let J of Z){let z=Q6($,J);try{let Y=F6(z);if(Y&&(Y.highlightCode||Y.highlight_code))return U5={highlight_code:Y.highlightCode||Y.highlight_code,highlight_diff:Y.highlightDiff||Y.highlight_diff,search_files:Y.searchFiles||Y.search_files,count_tokens:Y.countTokens||Y.count_tokens,calculate_diff:Y.calculateDiff||Y.calculate_diff,compact_content:Y.compactContent||Y.compact_content,validate_multi_edits:Y.validateMultiEdits||Y.validate_multi_edits,preview_multi_edits:Y.previewMultiEdits||Y.preview_multi_edits,apply_multi_edits:Y.applyMultiEdits||Y.apply_multi_edits},U5}catch{continue}}let V=X.map(($)=>Q6($,`claude_code_native.${s9}`));for(let $ of V)try{return U5=r9($,{highlight_code:{args:["cstring","cstring"],returns:"pointer"},highlight_diff:{args:["cstring","cstring","pointer"],returns:"pointer"},search_files:{args:["cstring","cstring","pointer"],returns:"pointer"},count_tokens:{args:["cstring"],returns:"u32"},calculate_diff:{args:["cstring","cstring"],returns:"pointer"},compact_content:{args:["cstring","u32","cstring"],returns:"pointer"}}).symbols,U5}catch{continue}return console.warn("Native module not available, using JS fallback"),U7()}function $X(){try{return j7(),U5!==null}catch{return!1}}function U7(){return{highlight_code:(Q,X)=>{let Z=new Set(["function","const","let","var","return","if","else","for","while","class","interface","type","import","export","from","async","await","try","catch","throw","new","this","extends","implements","static","public","private","protected","readonly","abstract","enum","namespace"]),V=new Set(["string","number","boolean","void","null","undefined","any","never","object","symbol","bigint","true","false"]),$={reset:"\x1B[0m",keyword:"\x1B[38;2;180;142;173m",string:"\x1B[38;2;163;190;140m",number:"\x1B[38;2;208;135;112m",type:"\x1B[38;2;191;97;106m",function:"\x1B[38;2;143;161;179m",comment:"\x1B[38;2;108;153;139m",default:"\x1B[38;2;192;197;206m"};return{html:Q.split(`
30
+ `).map((Y)=>{if(Y.trim().startsWith("//")||Y.trim().startsWith("#"))return`${$.comment}${Y}${$.reset}`;let K=Y.replace(/(["'`])(?:(?!\1)[^\\]|\\.)*?\1/g,(H)=>{return`${$.string}${H}${$.default}`});return K=K.replace(/\b(\d+\.?\d*)\b/g,`${$.number}$1${$.default}`),K=K.replace(/\b([a-z]+)\b/gi,(H)=>{if(Z.has(H))return`${$.keyword}${H}${$.default}`;if(V.has(H))return`${$.type}${H}${$.default}`;return H}),K=K.replace(/\b([a-zA-Z_][a-zA-Z0-9_]*)\s*\(/g,(H,q)=>{return`${$.function}${q}${$.default}(`}),K}).join(`
31
+ `)+$.reset,theme:"fallback"}},highlight_diff:(Q,X,Z)=>{let K=Q.split(`
32
+ `),H=X.split(`
33
+ `),q="",W=0,G=0,_=0;if(Z?.file_path)q+=`\x1B[38;2;143;161;179m${Z.file_path}\x1B[0m
34
+ `;let j=[],U=[];for(let P=0;P<=K.length;P++){U[P]=[];for(let C=0;C<=H.length;C++)if(P===0||C===0)U[P][C]=0;else if(K[P-1]===H[C-1])U[P][C]=U[P-1][C-1]+1;else U[P][C]=Math.max(U[P-1][C],U[P][C-1])}let B=K.length,A=H.length,w=new Set;while(B>0&&A>0)if(K[B-1]===H[A-1])w.add(`${B-1}:${A-1}`),j.unshift(K[B-1]),B--,A--;else if(U[B-1][A]>U[B][A-1])B--;else A--;let O=0,F=0,L=0;while(O<K.length||F<H.length){while(L<j.length&&O<K.length&&F<H.length&&K[O]===j[L]&&H[F]===j[L])O++,F++,L++;let P=O+1,C=F+1,I=0,g=0,y=[];while(O<K.length&&(L>=j.length||K[O]!==j[L]))y.push(`\x1B[38;2;191;97;106m-${K[O]}\x1B[0m`),O++,I++,G++;while(F<H.length&&(L>=j.length||H[F]!==j[L]))y.push(`\x1B[38;2;163;190;140m+${H[F]}\x1B[0m`),F++,g++,W++;if(I>0||g>0)_++,q+=`\x1B[38;2;108;153;139m@@ -${P},${I} +${C},${g} @@\x1B[0m
35
+ `,q+=y.join(`
36
+ `)+`
37
+ `}return{output:q,additions:W,deletions:G,hunks:_}},search_files:(Q,X,Z)=>{return{matches:[],total_count:0,files_searched:0}},count_tokens:(Q)=>{return Math.ceil(Q.length/4)},calculate_diff:(Q,X)=>{let Z=Q.split(`
38
+ `),V=X.split(`
39
+ `),$=[];if(Q!==X)$.push({old_start:1,old_lines:Z.length,new_start:1,new_lines:V.length,content:`- ${Z.join(`
40
+ - `)}
41
+ + ${V.join(`
42
+ + `)}`});return $},compact_content:(Q,X,Z="truncate")=>{let $=X*4;if(Q.length<=$)return Q;switch(Z){case"truncate":return Q.slice(0,$/2)+`
43
+
44
+ ... [truncated] ...
45
+
46
+ `+Q.slice(-$/2);case"summarize":let J=Math.floor($/4);return`=== BEGINNING ===
47
+ `+Q.slice(0,J)+`
48
+
49
+ === END ===
50
+ `+Q.slice(-J);case"extract":return Q.split(`
51
+ `).filter((K)=>K.trim().startsWith("#")||K.trim().startsWith("function")||K.trim().startsWith("const")||K.trim().startsWith("class")||K.trim().startsWith("export")||K.trim().startsWith("import")).slice(0,$/50).join(`
52
+ `);default:return Q.slice(0,$)}},validate_multi_edits:(Q)=>{let X=[],Z=new Map;for(let V of Q)try{let $=Bun.file(V.file_path);if(!$.existsSync()){X.push(`File not found: ${V.file_path}`);continue}if(!Z.has(V.file_path)){let z=$.textSync();Z.set(V.file_path,z)}let J=Z.get(V.file_path);if(!J.includes(V.old_string)){X.push(`String not found in ${V.file_path}: "${Q0(V.old_string,50)}"`);continue}if(!V.replace_all){let z=(J.match(new RegExp(I6(V.old_string),"g"))||[]).length;if(z>1)X.push(`String appears ${z} times in ${V.file_path}. Use replace_all or provide more context.`)}}catch($){X.push(`Error reading ${V.file_path}: ${$}`)}return X},preview_multi_edits:(Q)=>{let X=[],Z=new Map;for(let V of Q)try{let $=Bun.file(V.file_path);if(!$.existsSync())continue;let J=$.textSync(),z=V.replace_all?(J.match(new RegExp(I6(V.old_string),"g"))||[]).length:1;Z.set(V.file_path,(Z.get(V.file_path)||0)+z)}catch{}for(let[V,$]of Z)X.push({file_path:V,replacement_count:$});return X},apply_multi_edits:(Q)=>{let X=U7().validate_multi_edits(Q);if(X.length>0)return{success:!1,files_modified:[],total_replacements:0,error:X.join(`
53
+ `),rolled_back:!1};let Z=new Map,V=new Set(Q.map((Y)=>Y.file_path));for(let Y of V)try{let K=Bun.file(Y);Z.set(Y,K.textSync())}catch(K){return{success:!1,files_modified:[],total_replacements:0,error:`Failed to backup ${Y}: ${K}`,rolled_back:!1}}let $=new Map;for(let[Y,K]of Z)$.set(Y,K);let J=0;for(let Y of Q){let K=$.get(Y.file_path);if(!K)continue;if(Y.replace_all){let H=(K.match(new RegExp(I6(Y.old_string),"g"))||[]).length;$.set(Y.file_path,K.split(Y.old_string).join(Y.new_string)),J+=H}else $.set(Y.file_path,K.replace(Y.old_string,Y.new_string)),J+=1}let z=[];for(let[Y,K]of $){let H=Z.get(Y);if(K!==H)try{Bun.write(Y,K),z.push(Y)}catch(q){for(let[W,G]of Z)try{Bun.write(W,G)}catch{}return{success:!1,files_modified:[],total_replacements:0,error:`Failed to write ${Y}: ${q}. All changes rolled back.`,rolled_back:!0}}}return{success:!0,files_modified:z,total_replacements:J,error:void 0,rolled_back:!1}}}}var F5=j7();function JX(Q,X){return F5.highlight_code(Q,X)}function zX(Q,X,Z){return F5.highlight_diff(Q,X,Z)}function YX(Q,X){return F5.calculate_diff(Q,X)}function x6(Q){return F5.validate_multi_edits(Q)}function A7(Q){return F5.preview_multi_edits(Q)}function B7(Q){return F5.apply_multi_edits(Q)}function Q0(Q,X){if(Q.length<=X)return Q;return Q.slice(0,X)+"..."}function I6(Q){return Q.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var T6=(Q,X,Z)=>{let V=Q instanceof RegExp?w7(Q,Z):Q,$=X instanceof RegExp?w7(X,Z):X,J=V!==null&&$!=null&&X0(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)}},w7=(Q,X)=>{let Z=X.match(Q);return Z?Z[0]:null},X0=(Q,X,Z)=>{let V,$,J,z=void 0,Y,K=Z.indexOf(Q),H=Z.indexOf(X,K+1),q=K;if(K>=0&&H>0){if(Q===X)return[K,H];V=[],J=Z.length;while(q>=0&&!Y){if(q===K)V.push(q),K=Z.indexOf(Q,q+1);else if(V.length===1){let W=V.pop();if(W!==void 0)Y=[W,H]}else{if($=V.pop(),$!==void 0&&$<J)J=$,z=H;H=Z.indexOf(X,q+1)}q=K<H&&K>=0?K:H}if(V.length&&z!==void 0)Y=[J,z]}return Y};var L7="\x00SLASH"+Math.random()+"\x00",O7="\x00OPEN"+Math.random()+"\x00",E6="\x00CLOSE"+Math.random()+"\x00",F7="\x00COMMA"+Math.random()+"\x00",M7="\x00PERIOD"+Math.random()+"\x00",Z0=new RegExp(L7,"g"),V0=new RegExp(O7,"g"),$0=new RegExp(E6,"g"),J0=new RegExp(F7,"g"),z0=new RegExp(M7,"g"),Y0=/\\\\/g,K0=/\\{/g,H0=/\\}/g,q0=/\\,/g,W0=/\\./g,G0=1e5;function k6(Q){return!isNaN(Q)?parseInt(Q,10):Q.charCodeAt(0)}function _0(Q){return Q.replace(Y0,L7).replace(K0,O7).replace(H0,E6).replace(q0,F7).replace(W0,M7)}function j0(Q){return Q.replace(Z0,"\\").replace(V0,"{").replace($0,"}").replace(J0,",").replace(z0,".")}function C7(Q){if(!Q)return[""];let X=[],Z=T6("{","}",Q);if(!Z)return Q.split(",");let{pre:V,body:$,post:J}=Z,z=V.split(",");z[z.length-1]+="{"+$+"}";let Y=C7(J);if(J.length)z[z.length-1]+=Y.shift(),z.push.apply(z,Y);return X.push.apply(X,z),X}function v7(Q,X={}){if(!Q)return[];let{max:Z=G0}=X;if(Q.slice(0,2)==="{}")Q="\\{\\}"+Q.slice(2);return E5(_0(Q),Z,!0).map(j0)}function U0(Q){return"{"+Q+"}"}function A0(Q){return/^-?0\d/.test(Q)}function B0(Q,X){return Q<=X}function w0(Q,X){return Q>=X}function E5(Q,X,Z){let V=[],$=T6("{","}",Q);if(!$)return[Q];let J=$.pre,z=$.post.length?E5($.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),H=Y||K,q=$.body.indexOf(",")>=0;if(!H&&!q){if($.post.match(/,(?!,).*\}/))return Q=$.pre+"{"+$.body+E6+$.post,E5(Q,X,!0);return[Q]}let W;if(H)W=$.body.split(/\.\./);else if(W=C7($.body),W.length===1&&W[0]!==void 0){if(W=E5(W[0],X,!1).map(U0),W.length===1)return z.map((_)=>$.pre+W[0]+_)}let G;if(H&&W[0]!==void 0&&W[1]!==void 0){let _=k6(W[0]),j=k6(W[1]),U=Math.max(W[0].length,W[1].length),B=W.length===3&&W[2]!==void 0?Math.abs(k6(W[2])):1,A=B0;if(j<_)B*=-1,A=w0;let O=W.some(A0);G=[];for(let F=_;A(F,j);F+=B){let L;if(K){if(L=String.fromCharCode(F),L==="\\")L=""}else if(L=String(F),O){let P=U-L.length;if(P>0){let C=Array(P+1).join("0");if(F<0)L="-"+C+L.slice(1);else L=C+L}}G.push(L)}}else{G=[];for(let _=0;_<W.length;_++)G.push.apply(G,E5(W[_],X,!1))}for(let _=0;_<G.length;_++)for(let j=0;j<z.length&&V.length<X;j++){let U=J+G[_]+z[j];if(!Z||H||U)V.push(U)}}return V}var b5=(Q)=>{if(typeof Q!=="string")throw TypeError("invalid pattern");if(Q.length>65536)throw TypeError("pattern is too long")};var L0={"[: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]},y5=(Q)=>Q.replace(/[[\]\\-]/g,"\\$&"),O0=(Q)=>Q.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),R7=(Q)=>Q.join(""),N7=(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,H=!1,q=Z,W="";Q:while(J<Q.length){let U=Q.charAt(J);if((U==="!"||U==="^")&&J===Z+1){H=!0,J++;continue}if(U==="]"&&z&&!K){q=J+1;break}if(z=!0,U==="\\"){if(!K){K=!0,J++;continue}}if(U==="["&&!K){for(let[B,[A,w,O]]of Object.entries(L0))if(Q.startsWith(B,J)){if(W)return["$.",!1,Q.length-Z,!0];if(J+=B.length,O)$.push(A);else V.push(A);Y=Y||w;continue Q}}if(K=!1,W){if(U>W)V.push(y5(W)+"-"+y5(U));else if(U===W)V.push(y5(U));W="",J++;continue}if(Q.startsWith("-]",J+1)){V.push(y5(U+"-")),J+=2;continue}if(Q.startsWith("-",J+1)){W=U,J+=2;continue}V.push(y5(U)),J++}if(q<J)return["",!1,0,!1];if(!V.length&&!$.length)return["$.",!1,Q.length-Z,!0];if($.length===0&&V.length===1&&/^\\?.$/.test(V[0])&&!H){let U=V[0].length===2?V[0].slice(-1):V[0];return[O0(U),!1,q-Z,!1]}let G="["+(H?"^":"")+R7(V)+"]",_="["+(H?"":"^")+R7($)+"]";return[V.length&&$.length?"("+G+"|"+_+")":V.length?G:_,Y,q-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 m,F0=new Set(["!","?","+","*","@"]),b6=(Q)=>F0.has(Q),P7=(Q)=>b6(Q.type),M0=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),C0=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),v0=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),D7=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),R0="(?!(?:^|/)\\.\\.?(?:$|/))",X6="(?!\\.)",N0=new Set(["[","."]),P0=new Set(["..","."]),D0=new Set("().*{}+?[]^$\\!"),S0=(Q)=>Q.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),y6="[^/]",S7=y6+"*?",I7=y6+"+?",I0=0;class M5{type;#Q;#V;#$=!1;#X=[];#z;#C;#w;#W=!1;#Y;#G;#q=!1;id=++I0;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.#w=this.#Q===this?[]:this.#Q.#w,Q==="!"&&!this.#Q.#W)this.#w.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.#G!==void 0)return this.#G;if(!this.type)return this.#G=this.#X.map((Q)=>String(Q)).join("");else return this.#G=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.#w.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 m&&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 m&&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 m(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,H=!1;if(X.type===null){let j=Z,U="";while(j<Q.length){let B=Q.charAt(j++);if(z||B==="\\"){z=!z,U+=B;continue}if(Y){if(j===K+1){if(B==="^"||B==="!")H=!0}else if(B==="]"&&!(j===K+2&&H))Y=!1;U+=B;continue}else if(B==="["){Y=!0,K=j,H=!1,U+=B;continue}if(!V.noext&&b6(B)&&Q.charAt(j)==="("&&$<=J){X.push(U),U="";let w=new m(B,X);j=m.#J(Q,w,j,V,$+1),X.push(w);continue}U+=B}return X.push(U),j}let q=Z+1,W=new m(null,X),G=[],_="";while(q<Q.length){let j=Q.charAt(q++);if(z||j==="\\"){z=!z,_+=j;continue}if(Y){if(q===K+1){if(j==="^"||j==="!")H=!0}else if(j==="]"&&!(q===K+2&&H))Y=!1;_+=j;continue}else if(j==="["){Y=!0,K=q,H=!1,_+=j;continue}if(!V.noext&&b6(j)&&Q.charAt(q)==="("&&($<=J||X&&X.#j(j))){let B=X&&X.#j(j)?0:1;W.push(_),_="";let A=new m(j,W);W.push(A),q=m.#J(Q,A,q,V,$+B);continue}if(j==="|"){W.push(_),_="",G.push(W),W=new m(null,X);continue}if(j===")"){if(_===""&&X.#X.length===0)X.#q=!0;return W.push(_),_="",X.push(...G,W),q}_+=j}return X.type=null,X.#V=void 0,X.#X=[Q.substring(Z-1)],q}#L(Q){return this.#F(Q,C0)}#F(Q,X=M0){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.#j(Z.type,X)}#j(Q,X=v0){return!!X.get(this.type)?.includes(Q)}#U(Q,X){let Z=Q.#X[0],V=new m(null,Z,this.options);V.#X.push(""),Z.push(V),this.#N(Q,X)}#N(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.#G=void 0}#A(Q){return!!D7.get(this.type)?.has(Q)}#M(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)}#v(Q){let X=D7.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.#G=void 0,this.#q=!1}static fromGlob(Q,X={}){let Z=new m(null,void 0,X);return m.#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(!P7(this)){let Y=this.isStart()&&this.isEnd()&&!this.#X.some((G)=>typeof G!=="string"),K=this.#X.map((G)=>{let[_,j,U,B]=typeof G==="string"?m.#O(G,this.#V,Y):G.toRegExpSource(Q);return this.#V=this.#V||U,this.#$=this.#$||B,_}).join(""),H="";if(this.isStart()){if(typeof this.#X[0]==="string"){if(!(this.#X.length===1&&P0.has(this.#X[0]))){let _=N0,j=X&&_.has(K.charAt(0))||K.startsWith("\\.")&&_.has(K.charAt(2))||K.startsWith("\\.\\.")&&_.has(K.charAt(4)),U=!X&&!Q&&_.has(K.charAt(0));H=j?R0:U?X6:""}}}let q="";if(this.isEnd()&&this.#Q.#W&&this.#z?.type==="!")q="(?:$|\\/)";return[H+K+q,o(K),this.#V=!!this.#V,this.#$]}let Z=this.type==="*"||this.type==="+",V=this.type==="!"?"(?:(?!(?:":"(?:",$=this.#B(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||!X6?"":this.#B(!0);if(J===$)J="";if(J)$=`(?:${$})(?:${J})*?`;let z="";if(this.type==="!"&&this.#q)z=(this.isStart()&&!X?X6:"")+I7;else{let Y=this.type==="!"?"))"+(this.isStart()&&!X&&!Q?X6:"")+S7+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&J?")":this.type==="*"&&J?")?":`)${this.type}`;z=V+$+Y}return[z,o($),this.#V=!!this.#V,this.#$]}#_(){if(!P7(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.#F(V))X=!1,this.#N(V,Z);else if(this.#L(V))X=!1,this.#U(V,Z);else if(this.#M(V))X=!1,this.#v(V)}}}while(!X&&++Q<10)}this.#G=void 0}#B(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#O(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,$+=(D0.has(K)?"\\":"")+K;continue}if(K==="*"){if(z)continue;z=!0,$+=Z&&/^[*]+$/.test(Q)?I7:S7,X=!0;continue}else z=!1;if(K==="\\"){if(Y===Q.length-1)$+="\\\\";else V=!0;continue}if(K==="["){let[H,q,W,G]=N7(Q,Y);if(W){$+=H,J=J||q,Y+=W-1,X=X||G;continue}}if(K==="?"){$+=y6,X=!0;continue}$+=S0(K)}return[$,o(Q),!!X,J]}}m=M5;var C5=(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 f=(Q,X,Z={})=>{if(b5(X),!Z.nocomment&&X.charAt(0)==="#")return!1;return new p(X,Z).match(Q)},x0=/^\*+([^+@!?\*\[\(]*)$/,T0=(Q)=>(X)=>!X.startsWith(".")&&X.endsWith(Q),k0=(Q)=>(X)=>X.endsWith(Q),E0=(Q)=>{return Q=Q.toLowerCase(),(X)=>!X.startsWith(".")&&X.toLowerCase().endsWith(Q)},b0=(Q)=>{return Q=Q.toLowerCase(),(X)=>X.toLowerCase().endsWith(Q)},y0=/^\*+\.\*+$/,f0=(Q)=>!Q.startsWith(".")&&Q.includes("."),u0=(Q)=>Q!=="."&&Q!==".."&&Q.includes("."),h0=/^\.\*+$/,g0=(Q)=>Q!=="."&&Q!==".."&&Q.startsWith("."),m0=/^\*+$/,d0=(Q)=>Q.length!==0&&!Q.startsWith("."),c0=(Q)=>Q.length!==0&&Q!=="."&&Q!=="..",l0=/^\?+([^+@!?\*\[\(]*)?$/,p0=([Q,X=""])=>{let Z=k7([Q]);if(!X)return Z;return X=X.toLowerCase(),(V)=>Z(V)&&V.toLowerCase().endsWith(X)},i0=([Q,X=""])=>{let Z=E7([Q]);if(!X)return Z;return X=X.toLowerCase(),(V)=>Z(V)&&V.toLowerCase().endsWith(X)},n0=([Q,X=""])=>{let Z=E7([Q]);return!X?Z:(V)=>Z(V)&&V.endsWith(X)},o0=([Q,X=""])=>{let Z=k7([Q]);return!X?Z:(V)=>Z(V)&&V.endsWith(X)},k7=([Q])=>{let X=Q.length;return(Z)=>Z.length===X&&!Z.startsWith(".")},E7=([Q])=>{let X=Q.length;return(Z)=>Z.length===X&&Z!=="."&&Z!==".."},b7=typeof process==="object"&&process?typeof process.env==="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",x7={win32:{sep:"\\"},posix:{sep:"/"}},a0=b7==="win32"?x7.win32.sep:x7.posix.sep;f.sep=a0;var D=Symbol("globstar **");f.GLOBSTAR=D;var r0="[^/]",s0=r0+"*?",t0="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",e0="(?:(?!(?:\\/|^)\\.).)*?",Q8=(Q,X={})=>(Z)=>f(Z,Q,X);f.filter=Q8;var l=(Q,X={})=>Object.assign({},Q,X),X8=(Q)=>{if(!Q||typeof Q!=="object"||!Object.keys(Q).length)return f;let X=f;return Object.assign((V,$,J={})=>X(V,$,l(Q,J)),{Minimatch:class extends X.Minimatch{constructor($,J={}){super($,l(Q,J))}static defaults($){return X.defaults(l(Q,$)).Minimatch}},AST:class extends X.AST{constructor($,J,z={}){super($,J,l(Q,z))}static fromGlob($,J={}){return X.AST.fromGlob($,l(Q,J))}},unescape:(V,$={})=>X.unescape(V,l(Q,$)),escape:(V,$={})=>X.escape(V,l(Q,$)),filter:(V,$={})=>X.filter(V,l(Q,$)),defaults:(V)=>X.defaults(l(Q,V)),makeRe:(V,$={})=>X.makeRe(V,l(Q,$)),braceExpand:(V,$={})=>X.braceExpand(V,l(Q,$)),match:(V,$,J={})=>X.match(V,$,l(Q,J)),sep:X.sep,GLOBSTAR:D})};f.defaults=X8;var y7=(Q,X={})=>{if(b5(Q),X.nobrace||!/\{(?:(?!\{).)*\}/.test(Q))return[Q];return v7(Q,{max:X.braceExpandMax})};f.braceExpand=y7;var Z8=(Q,X={})=>new p(Q,X).makeRe();f.makeRe=Z8;var V8=(Q,X,Z={})=>{let V=new p(X,Z);if(Q=Q.filter(($)=>V.match($)),V.options.nonull&&!Q.length)Q.push(X);return Q};f.match=V8;var T7=/[?*]|[+@!]\(.*?\)|\[|\]/,$8=(Q)=>Q.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");class p{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(Q,X={}){b5(Q),X=X||{},this.options=X,this.maxGlobstarRecursion=X.maxGlobstarRecursion??200,this.pattern=Q,this.platform=X.platform||b7,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]==="?"||!T7.test($[2]))&&!T7.test($[3]),K=/^[a-z]:/i.test($[0]);if(Y)return[...$.slice(0,4),...$.slice(4).map((H)=>this.parse(H))];else if(K)return[$[0],...$.slice(1).map((H)=>this.parse(H))]}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 H=Z.slice(0);H[V]="**",Q.push(H),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]),H=!K&&X[0]===""&&X[1]===""&&X[2]==="?"&&typeof X[3]==="string"&&/^[a-z]:$/i.test(X[3]),q=Y?3:z?0:void 0,W=H?3:K?0:void 0;if(typeof q==="number"&&typeof W==="number"){let[G,_]=[Q[q],X[W]];if(G.toLowerCase()===_.toLowerCase())X[W]=G,$=W,V=q}}let{optimizationLevel:J=1}=this.options;if(J>=2)Q=this.levelTwoFileOptimize(Q);if(X.includes(D))return this.#Q(Q,X,Z,V,$);return this.#$(Q,X,Z,V,$)}#Q(Q,X,Z,V,$){let J=X.indexOf(D,$),z=X.lastIndexOf(D),[Y,K,H]=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 q=0;if(H.length){if(H.length+V>Q.length)return!1;let A=Q.length-H.length;if(this.#$(Q,H,Z,A,0))q=H.length;else{if(Q[Q.length-1]!==""||V+H.length===Q.length)return!1;if(A--,!this.#$(Q,H,Z,A,0))return!1;q=H.length+1}}if(!K.length){let A=!!q;for(let w=V;w<Q.length-q;w++){let O=String(Q[w]);if(A=!0,O==="."||O===".."||!this.options.dot&&O.startsWith("."))return!1}return Z||A}let W=[[[],0]],G=W[0],_=0,j=[0];for(let A of K)if(A===D)j.push(_),G=[[],0],W.push(G);else G[0].push(A),_++;let U=W.length-1,B=Q.length-q;for(let A of W)A[1]=B-(j[U--]+A[0].length);return!!this.#V(Q,W,V,0,Z,0,!!q)}#V(Q,X,Z,V,$,J,z){let Y=X[V];if(!Y){for(let q=Z;q<Q.length;q++){z=!0;let W=Q[q];if(W==="."||W===".."||!this.options.dot&&W.startsWith("."))return!1}return z}let[K,H]=Y;while(Z<=H){if(this.#$(Q.slice(0,Z+K.length),K,$,Z,0)&&J<this.maxGlobstarRecursion){let G=this.#V(Q,X,Z+K.length,V+1,$,J+1,z);if(G!==!1)return G}let W=Q[Z];if(W==="."||W===".."||!this.options.dot&&W.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 H=X[z],q=Q[J];if(this.debug(X,H,q),H===!1||H===D)return!1;let W;if(typeof H==="string")W=q===H,this.debug("string match",H,q,W);else W=H.test(q),this.debug("pattern match",H,q,W);if(!W)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 y7(this.pattern,this.options)}parse(Q){b5(Q);let X=this.options;if(Q==="**")return D;if(Q==="")return"";let Z,V=null;if(Z=Q.match(m0))V=X.dot?c0:d0;else if(Z=Q.match(x0))V=(X.nocase?X.dot?b0:E0:X.dot?k0:T0)(Z[1]);else if(Z=Q.match(l0))V=(X.nocase?X.dot?i0:p0:X.dot?n0:o0)(Z);else if(Z=Q.match(y0))V=X.dot?u0:f0;else if(Z=Q.match(h0))V=g0;let $=M5.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?s0:X.dot?t0:e0,V=new Set(X.nocase?["i"]:[]),$=Q.map((Y)=>{let K=Y.map((q)=>{if(q instanceof RegExp)for(let W of q.flags.split(""))V.add(W);return typeof q==="string"?$8(q):q===D?D:q._src});K.forEach((q,W)=>{let G=K[W+1],_=K[W-1];if(q!==D||_===D)return;if(_===void 0)if(G!==void 0&&G!==D)K[W+1]="(?:\\/|"+Z+"\\/)?"+G;else K[W]=Z;else if(G===void 0)K[W-1]=_+"(?:\\/|\\/"+Z+")?";else if(G!==D)K[W-1]=_+"(?:\\/|\\/"+Z+"\\/)"+G,K[W+1]=D});let H=K.filter((q)=>q!==D);if(this.partial&&H.length>=1){let q=[];for(let W=1;W<=H.length;W++)q.push(H.slice(0,W).join("/"));return"(?:"+q.join("|")+")"}return H.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 f.defaults(Q).Minimatch}}f.AST=M5;f.Minimatch=p;f.escape=C5;f.unescape=o;import{fileURLToPath as u8}from"url";var J8=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,u7=new Set,f6=typeof process=="object"&&process?process:{},h7=(Q,X,Z,V)=>{typeof f6.emitWarning=="function"?f6.emitWarning(Q,X,Z,V):console.error(`[${Z}] ${X}: ${Q}`)},V6=globalThis.AbortController,f7=globalThis.AbortSignal;if(typeof V6>"u"){f7=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(Z,V){this._onabort.push(V)}},V6=class{constructor(){X()}signal=new f7;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=f6.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",X=()=>{Q&&(Q=!1,h7("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 z8=(Q)=>!u7.has(Q),SX=Symbol("type"),G5=(Q)=>Q&&Q===Math.floor(Q)&&Q>0&&isFinite(Q),g7=(Q)=>G5(Q)?Q<=Math.pow(2,8)?Uint8Array:Q<=Math.pow(2,16)?Uint16Array:Q<=Math.pow(2,32)?Uint32Array:Q<=Number.MAX_SAFE_INTEGER?Z6:null:null,Z6=class extends Array{constructor(Q){super(Q),this.fill(0)}},Y8=class Q{heap;length;static#Q=!1;static create(X){let Z=g7(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]}},f5=class Q{#Q;#V;#$;#X;#z;#C;#w;#W;get perf(){return this.#W}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#Y;#G;#q;#K;#J;#L;#F;#j;#U;#N;#A;#M;#v;#_;#B;#O;#P;#Z;#E;static unsafeExposeInternals(X){return{starts:X.#v,ttls:X.#_,autopurgeTimers:X.#B,sizes:X.#M,keyMap:X.#q,keyList:X.#K,valList:X.#J,next:X.#L,prev:X.#F,get head(){return X.#j},get tail(){return X.#U},free:X.#N,isBackgroundFetch:(Z)=>X.#H(Z),backgroundFetch:(Z,V,$,J)=>X.#d(Z,V,$,J),moveToTail:(Z)=>X.#y(Z),indexes:(Z)=>X.#I(Z),rindexes:(Z)=>X.#x(Z),isStale:(Z)=>X.#R(Z)}}get max(){return this.#Q}get maxSize(){return this.#V}get calculatedSize(){return this.#G}get size(){return this.#Y}get fetchMethod(){return this.#C}get memoMethod(){return this.#w}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:H,onInsert:q,disposeAfter:W,noDisposeOnSet:G,noUpdateTTL:_,maxSize:j=0,maxEntrySize:U=0,sizeCalculation:B,fetchMethod:A,memoMethod:w,noDeleteOnFetchRejection:O,noDeleteOnStaleGet:F,allowStaleOnFetchRejection:L,allowStaleOnFetchAbort:P,ignoreFetchAbort:C,perf:I}=X;if(I!==void 0&&typeof I?.now!="function")throw TypeError("perf option must have a now() method if specified");if(this.#W=I??J8,Z!==0&&!G5(Z))throw TypeError("max option must be a nonnegative integer");let g=Z?g7(Z):Array;if(!g)throw Error("invalid max value: "+Z);if(this.#Q=Z,this.#V=j,this.maxEntrySize=U||this.#V,this.sizeCalculation=B,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(w!==void 0&&typeof w!="function")throw TypeError("memoMethod must be a function if defined");if(this.#w=w,A!==void 0&&typeof A!="function")throw TypeError("fetchMethod must be a function if specified");if(this.#C=A,this.#P=!!A,this.#q=new Map,this.#K=Array(Z).fill(void 0),this.#J=Array(Z).fill(void 0),this.#L=new g(Z),this.#F=new g(Z),this.#j=0,this.#U=0,this.#N=Y8.create(Z),this.#Y=0,this.#G=0,typeof H=="function"&&(this.#$=H),typeof q=="function"&&(this.#X=q),typeof W=="function"?(this.#z=W,this.#A=[]):(this.#z=void 0,this.#A=void 0),this.#O=!!this.#$,this.#E=!!this.#X,this.#Z=!!this.#z,this.noDisposeOnSet=!!G,this.noUpdateTTL=!!_,this.noDeleteOnFetchRejection=!!O,this.allowStaleOnFetchRejection=!!L,this.allowStaleOnFetchAbort=!!P,this.ignoreFetchAbort=!!C,this.maxEntrySize!==0){if(this.#V!==0&&!G5(this.#V))throw TypeError("maxSize must be a positive integer if specified");if(!G5(this.maxEntrySize))throw TypeError("maxEntrySize must be a positive integer if specified");this.#l()}if(this.allowStale=!!K,this.noDeleteOnStaleGet=!!F,this.updateAgeOnGet=!!z,this.updateAgeOnHas=!!Y,this.ttlResolution=G5($)||$===0?$:1,this.ttlAutopurge=!!J,this.ttl=V||0,this.ttl){if(!G5(this.ttl))throw TypeError("ttl must be a positive integer if specified");this.#T()}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 y="LRU_CACHE_UNBOUNDED";z8(y)&&(u7.add(y),h7("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",y,Q))}}getRemainingTTL(X){return this.#q.has(X)?1/0:0}#T(){let X=new Z6(this.#Q),Z=new Z6(this.#Q);this.#_=X,this.#v=Z;let V=this.ttlAutopurge?Array(this.#Q):void 0;this.#B=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 H=setTimeout(()=>{this.#R(z)&&this.#S(this.#K[z],"expire")},Y+1);H.unref&&H.unref(),V[z]=H}},this.#D=(z)=>{Z[z]=X[z]!==0?this.#W.now():0},this.#k=(z,Y)=>{if(X[Y]){let K=X[Y],H=Z[Y];if(!K||!H)return;z.ttl=K,z.start=H,z.now=$||J();let q=z.now-H;z.remainingTTL=K-q}};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.#q.get(z);if(Y===void 0)return 0;let K=X[Y],H=Z[Y];if(!K||!H)return 1/0;let q=($||J())-H;return K-q},this.#R=(z)=>{let Y=Z[z],K=X[z];return!!K&&!!Y&&($||J())-Y>K}}#D=()=>{};#k=()=>{};#u=()=>{};#R=()=>!1;#l(){let X=new Z6(this.#Q);this.#G=0,this.#M=X,this.#f=(Z)=>{this.#G-=X[Z],X[Z]=0},this.#h=(Z,V,$,J)=>{if(this.#H(V))return 0;if(!G5($))if(J){if(typeof J!="function")throw TypeError("sizeCalculation must be a function");if($=J(V,Z),!G5($))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.#G>J;)this.#m(!0)}this.#G+=X[Z],$&&($.entrySize=V,$.totalCalculatedSize=this.#G)}}#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};*#I({allowStale:X=this.allowStale}={}){if(this.#Y)for(let Z=this.#U;!(!this.#g(Z)||((X||!this.#R(Z))&&(yield Z),Z===this.#j));)Z=this.#F[Z]}*#x({allowStale:X=this.allowStale}={}){if(this.#Y)for(let Z=this.#j;!(!this.#g(Z)||((X||!this.#R(Z))&&(yield Z),Z===this.#U));)Z=this.#L[Z]}#g(X){return X!==void 0&&this.#q.get(this.#K[X])===X}*entries(){for(let X of this.#I())this.#J[X]!==void 0&&this.#K[X]!==void 0&&!this.#H(this.#J[X])&&(yield[this.#K[X],this.#J[X]])}*rentries(){for(let X of this.#x())this.#J[X]!==void 0&&this.#K[X]!==void 0&&!this.#H(this.#J[X])&&(yield[this.#K[X],this.#J[X]])}*keys(){for(let X of this.#I()){let Z=this.#K[X];Z!==void 0&&!this.#H(this.#J[X])&&(yield Z)}}*rkeys(){for(let X of this.#x()){let Z=this.#K[X];Z!==void 0&&!this.#H(this.#J[X])&&(yield Z)}}*values(){for(let X of this.#I())this.#J[X]!==void 0&&!this.#H(this.#J[X])&&(yield this.#J[X])}*rvalues(){for(let X of this.#x())this.#J[X]!==void 0&&!this.#H(this.#J[X])&&(yield this.#J[X])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(X,Z={}){for(let V of this.#I()){let $=this.#J[V],J=this.#H($)?$.__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.#I()){let $=this.#J[V],J=this.#H($)?$.__staleWhileFetching:$;J!==void 0&&X.call(Z,J,this.#K[V],this)}}rforEach(X,Z=this){for(let V of this.#x()){let $=this.#J[V],J=this.#H($)?$.__staleWhileFetching:$;J!==void 0&&X.call(Z,J,this.#K[V],this)}}purgeStale(){let X=!1;for(let Z of this.#x({allowStale:!0}))this.#R(Z)&&(this.#S(this.#K[Z],"expire"),X=!0);return X}info(X){let Z=this.#q.get(X);if(Z===void 0)return;let V=this.#J[Z],$=this.#H(V)?V.__staleWhileFetching:V;if($===void 0)return;let J={value:$};if(this.#_&&this.#v){let z=this.#_[Z],Y=this.#v[Z];if(z&&Y){let K=z-(this.#W.now()-Y);J.ttl=K,J.start=Date.now()}}return this.#M&&(J.size=this.#M[Z]),J}dump(){let X=[];for(let Z of this.#I({allowStale:!0})){let V=this.#K[Z],$=this.#J[Z],J=this.#H($)?$.__staleWhileFetching:$;if(J===void 0||V===void 0)continue;let z={value:J};if(this.#_&&this.#v){z.ttl=this.#_[Z];let Y=this.#W.now()-this.#v[Z];z.start=Math.floor(Date.now()-Y)}this.#M&&(z.size=this.#M[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:H=this.noUpdateTTL}=V,q=this.#h(X,Z,V.size||0,Y);if(this.maxEntrySize&&q>this.maxEntrySize)return K&&(K.set="miss",K.maxEntrySizeExceeded=!0),this.#S(X,"set"),this;let W=this.#Y===0?void 0:this.#q.get(X);if(W===void 0)W=this.#Y===0?this.#U:this.#N.length!==0?this.#N.pop():this.#Y===this.#Q?this.#m(!1):this.#Y,this.#K[W]=X,this.#J[W]=Z,this.#q.set(X,W),this.#L[this.#U]=W,this.#F[W]=this.#U,this.#U=W,this.#Y++,this.#b(W,q,K),K&&(K.set="add"),H=!1,this.#E&&this.#X?.(Z,X,"add");else{this.#y(W);let G=this.#J[W];if(Z!==G){if(this.#P&&this.#H(G)){G.__abortController.abort(Error("replaced"));let{__staleWhileFetching:_}=G;_!==void 0&&!z&&(this.#O&&this.#$?.(_,X,"set"),this.#Z&&this.#A?.push([_,X,"set"]))}else z||(this.#O&&this.#$?.(G,X,"set"),this.#Z&&this.#A?.push([G,X,"set"]));if(this.#f(W),this.#b(W,q,K),this.#J[W]=Z,K){K.set="replace";let _=G&&this.#H(G)?G.__staleWhileFetching:G;_!==void 0&&(K.oldValue=_)}}else K&&(K.set="update");this.#E&&this.onInsert?.(Z,X,Z===G?"update":"replace")}if($!==0&&!this.#_&&this.#T(),this.#_&&(H||this.#u(W,$,J),K&&this.#k(K,W)),!z&&this.#Z&&this.#A){let G=this.#A,_;for(;_=G?.shift();)this.#z?.(..._)}return this}pop(){try{for(;this.#Y;){let X=this.#J[this.#j];if(this.#m(!0),this.#H(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)}}}#m(X){let Z=this.#j,V=this.#K[Z],$=this.#J[Z];return this.#P&&this.#H($)?$.__abortController.abort(Error("evicted")):(this.#O||this.#Z)&&(this.#O&&this.#$?.($,V,"evict"),this.#Z&&this.#A?.push([$,V,"evict"])),this.#f(Z),this.#B?.[Z]&&(clearTimeout(this.#B[Z]),this.#B[Z]=void 0),X&&(this.#K[Z]=void 0,this.#J[Z]=void 0,this.#N.push(Z)),this.#Y===1?(this.#j=this.#U=0,this.#N.length=0):this.#j=this.#L[Z],this.#q.delete(V),this.#Y--,Z}has(X,Z={}){let{updateAgeOnHas:V=this.updateAgeOnHas,status:$}=Z,J=this.#q.get(X);if(J!==void 0){let z=this.#J[J];if(this.#H(z)&&z.__staleWhileFetching===void 0)return!1;if(this.#R(J))$&&($.has="stale",this.#k($,J));else return V&&this.#D(J),$&&($.has="hit",this.#k($,J)),!0}else $&&($.has="miss");return!1}peek(X,Z={}){let{allowStale:V=this.allowStale}=Z,$=this.#q.get(X);if($===void 0||!V&&this.#R($))return;let J=this.#J[$];return this.#H(J)?J.__staleWhileFetching:J}#d(X,Z,V,$){let J=Z===void 0?void 0:this.#J[Z];if(this.#H(J))return J;let z=new V6,{signal:Y}=V;Y?.addEventListener("abort",()=>z.abort(Y.reason),{signal:z.signal});let K={signal:z.signal,options:V,context:$},H=(U,B=!1)=>{let{aborted:A}=z.signal,w=V.ignoreFetchAbort&&U!==void 0,O=V.ignoreFetchAbort||!!(V.allowStaleOnFetchAbort&&U!==void 0);if(V.status&&(A&&!B?(V.status.fetchAborted=!0,V.status.fetchError=z.signal.reason,w&&(V.status.fetchAbortIgnored=!0)):V.status.fetchResolved=!0),A&&!w&&!B)return W(z.signal.reason,O);let F=_,L=this.#J[Z];return(L===_||w&&B&&L===void 0)&&(U===void 0?F.__staleWhileFetching!==void 0?this.#J[Z]=F.__staleWhileFetching:this.#S(X,"fetch"):(V.status&&(V.status.fetchUpdated=!0),this.set(X,U,K.options))),U},q=(U)=>(V.status&&(V.status.fetchRejected=!0,V.status.fetchError=U),W(U,!1)),W=(U,B)=>{let{aborted:A}=z.signal,w=A&&V.allowStaleOnFetchAbort,O=w||V.allowStaleOnFetchRejection,F=O||V.noDeleteOnFetchRejection,L=_;if(this.#J[Z]===_&&(!F||!B&&L.__staleWhileFetching===void 0?this.#S(X,"fetch"):w||(this.#J[Z]=L.__staleWhileFetching)),O)return V.status&&L.__staleWhileFetching!==void 0&&(V.status.returnedStale=!0),L.__staleWhileFetching;if(L.__returned===L)throw U},G=(U,B)=>{let A=this.#C?.(X,J,K);A&&A instanceof Promise&&A.then((w)=>U(w===void 0?void 0:w),B),z.signal.addEventListener("abort",()=>{(!V.ignoreFetchAbort||V.allowStaleOnFetchAbort)&&(U(void 0),V.allowStaleOnFetchAbort&&(U=(w)=>H(w,!0)))})};V.status&&(V.status.fetchDispatched=!0);let _=new Promise(G).then(H,q),j=Object.assign(_,{__abortController:z,__staleWhileFetching:J,__returned:void 0});return Z===void 0?(this.set(X,j,{...K.options,status:void 0}),Z=this.#q.get(X)):this.#J[Z]=j,j}#H(X){if(!this.#P)return!1;let Z=X;return!!Z&&Z instanceof Promise&&Z.hasOwnProperty("__staleWhileFetching")&&Z.__abortController instanceof V6}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:H=this.sizeCalculation,noUpdateTTL:q=this.noUpdateTTL,noDeleteOnFetchRejection:W=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:G=this.allowStaleOnFetchRejection,ignoreFetchAbort:_=this.ignoreFetchAbort,allowStaleOnFetchAbort:j=this.allowStaleOnFetchAbort,context:U,forceRefresh:B=!1,status:A,signal:w}=Z;if(!this.#P)return A&&(A.fetch="get"),this.get(X,{allowStale:V,updateAgeOnGet:$,noDeleteOnStaleGet:J,status:A});let O={allowStale:V,updateAgeOnGet:$,noDeleteOnStaleGet:J,ttl:z,noDisposeOnSet:Y,size:K,sizeCalculation:H,noUpdateTTL:q,noDeleteOnFetchRejection:W,allowStaleOnFetchRejection:G,allowStaleOnFetchAbort:j,ignoreFetchAbort:_,status:A,signal:w},F=this.#q.get(X);if(F===void 0){A&&(A.fetch="miss");let L=this.#d(X,F,O,U);return L.__returned=L}else{let L=this.#J[F];if(this.#H(L)){let g=V&&L.__staleWhileFetching!==void 0;return A&&(A.fetch="inflight",g&&(A.returnedStale=!0)),g?L.__staleWhileFetching:L.__returned=L}let P=this.#R(F);if(!B&&!P)return A&&(A.fetch="hit"),this.#y(F),$&&this.#D(F),A&&this.#k(A,F),L;let C=this.#d(X,F,O,U),I=C.__staleWhileFetching!==void 0&&V;return A&&(A.fetch=P?"stale":"refresh",I&&P&&(A.returnedStale=!0)),I?C.__staleWhileFetching:C.__returned=C}}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.#w;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.#q.get(X);if(Y!==void 0){let K=this.#J[Y],H=this.#H(K);return z&&this.#k(z,Y),this.#R(Y)?(z&&(z.get="stale"),H?(z&&V&&K.__staleWhileFetching!==void 0&&(z.returnedStale=!0),V?K.__staleWhileFetching:void 0):(J||this.#S(X,"expire"),z&&V&&(z.returnedStale=!0),V?K:void 0)):(z&&(z.get="hit"),H?K.__staleWhileFetching:(this.#y(Y),$&&this.#D(Y),K))}else z&&(z.get="miss")}#c(X,Z){this.#F[Z]=X,this.#L[X]=Z}#y(X){X!==this.#U&&(X===this.#j?this.#j=this.#L[X]:this.#c(this.#F[X],this.#L[X]),this.#c(this.#U,X),this.#U=X)}delete(X){return this.#S(X,"delete")}#S(X,Z){let V=!1;if(this.#Y!==0){let $=this.#q.get(X);if($!==void 0)if(this.#B?.[$]&&(clearTimeout(this.#B?.[$]),this.#B[$]=void 0),V=!0,this.#Y===1)this.#p(Z);else{this.#f($);let J=this.#J[$];if(this.#H(J)?J.__abortController.abort(Error("deleted")):(this.#O||this.#Z)&&(this.#O&&this.#$?.(J,X,Z),this.#Z&&this.#A?.push([J,X,Z])),this.#q.delete(X),this.#K[$]=void 0,this.#J[$]=void 0,$===this.#U)this.#U=this.#F[$];else if($===this.#j)this.#j=this.#L[$];else{let z=this.#F[$];this.#L[z]=this.#L[$];let Y=this.#L[$];this.#F[Y]=this.#F[$]}this.#Y--,this.#N.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.#x({allowStale:!0})){let V=this.#J[Z];if(this.#H(V))V.__abortController.abort(Error("deleted"));else{let $=this.#K[Z];this.#O&&this.#$?.(V,$,X),this.#Z&&this.#A?.push([V,$,X])}}if(this.#q.clear(),this.#J.fill(void 0),this.#K.fill(void 0),this.#_&&this.#v){this.#_.fill(0),this.#v.fill(0);for(let Z of this.#B??[])Z!==void 0&&clearTimeout(Z);this.#B?.fill(void 0)}if(this.#M&&this.#M.fill(0),this.#j=0,this.#U=0,this.#N.length=0,this.#G=0,this.#Y=0,this.#Z&&this.#A){let Z=this.#A,V;for(;V=Z?.shift();)this.#z?.(...V)}}};import{posix as w8,win32 as n6}from"path";import{fileURLToPath as L8}from"url";import{lstatSync as O8,readdir as F8,readdirSync as M8,readlinkSync as C8,realpathSync as v8}from"fs";import*as R8 from"fs";import{lstat as P8,readdir as D8,readlink as S8,realpath as I8}from"fs/promises";import{EventEmitter as c6}from"events";import p7 from"stream";import{StringDecoder as K8}from"string_decoder";var m7=typeof process==="object"&&process?process:{stdout:null,stderr:null},H8=(Q)=>!!Q&&typeof Q==="object"&&(Q instanceof B5||Q instanceof p7||q8(Q)||W8(Q)),q8=(Q)=>!!Q&&typeof Q==="object"&&Q instanceof c6&&typeof Q.pipe==="function"&&Q.pipe!==p7.Writable.prototype.pipe,W8=(Q)=>!!Q&&typeof Q==="object"&&Q instanceof c6&&typeof Q.write==="function"&&typeof Q.end==="function",K5=Symbol("EOF"),H5=Symbol("maybeEmitEnd"),_5=Symbol("emittedEnd"),$6=Symbol("emittingEnd"),u5=Symbol("emittedError"),J6=Symbol("closed"),d7=Symbol("read"),z6=Symbol("flush"),c7=Symbol("flushChunk"),a=Symbol("encoding"),v5=Symbol("decoder"),x=Symbol("flowing"),h5=Symbol("paused"),R5=Symbol("resume"),T=Symbol("buffer"),u=Symbol("pipes"),k=Symbol("bufferLength"),u6=Symbol("bufferPush"),Y6=Symbol("bufferShift"),b=Symbol("objectMode"),S=Symbol("destroyed"),h6=Symbol("error"),g6=Symbol("emitData"),l7=Symbol("emitEnd"),m6=Symbol("emitEnd2"),X5=Symbol("async"),d6=Symbol("abort"),K6=Symbol("aborted"),g5=Symbol("signal"),A5=Symbol("dataListeners"),c=Symbol("discarded"),m5=(Q)=>Promise.resolve().then(Q),G8=(Q)=>Q(),_8=(Q)=>Q==="end"||Q==="finish"||Q==="prefinish",j8=(Q)=>Q instanceof ArrayBuffer||!!Q&&typeof Q==="object"&&Q.constructor&&Q.constructor.name==="ArrayBuffer"&&Q.byteLength>=0,U8=(Q)=>!Buffer.isBuffer(Q)&&ArrayBuffer.isView(Q);class l6{src;dest;opts;ondrain;constructor(Q,X,Z){this.src=Q,this.dest=X,this.opts=Z,this.ondrain=()=>Q[R5](),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 i7 extends l6{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 A8=(Q)=>!!Q.objectMode,B8=(Q)=>!Q.objectMode&&!!Q.encoding&&Q.encoding!=="buffer";class B5 extends c6{[x]=!1;[h5]=!1;[u]=[];[T]=[];[b];[a];[X5];[v5];[K5]=!1;[_5]=!1;[$6]=!1;[J6]=!1;[u5]=null;[k]=0;[S]=!1;[g5];[K6]=!1;[A5]=0;[c]=!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(A8(X))this[b]=!0,this[a]=null;else if(B8(X))this[a]=X.encoding,this[b]=!1;else this[b]=!1,this[a]=null;if(this[X5]=!!X.async,this[v5]=this[a]?new K8(this[a]):null,X&&X.debugExposeBuffer===!0)Object.defineProperty(this,"buffer",{get:()=>this[T]});if(X&&X.debugExposePipes===!0)Object.defineProperty(this,"pipes",{get:()=>this[u]});let{signal:Z}=X;if(Z)if(this[g5]=Z,Z.aborted)this[d6]();else Z.addEventListener("abort",()=>this[d6]())}get bufferLength(){return this[k]}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[b]}set objectMode(Q){throw Error("objectMode must be set at instantiation time")}get["async"](){return this[X5]}set["async"](Q){this[X5]=this[X5]||!!Q}[d6](){this[K6]=!0,this.emit("abort",this[g5]?.reason),this.destroy(this[g5]?.reason)}get aborted(){return this[K6]}set aborted(Q){}write(Q,X,Z){if(this[K6])return!1;if(this[K5])throw Error("write after end");if(this[S])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[X5]?m5:G8;if(!this[b]&&!Buffer.isBuffer(Q)){if(U8(Q))Q=Buffer.from(Q.buffer,Q.byteOffset,Q.byteLength);else if(j8(Q))Q=Buffer.from(Q);else if(typeof Q!=="string")throw Error("Non-contiguous data written to non-objectMode stream")}if(this[b]){if(this[x]&&this[k]!==0)this[z6](!0);if(this[x])this.emit("data",Q);else this[u6](Q);if(this[k]!==0)this.emit("readable");if(Z)V(Z);return this[x]}if(!Q.length){if(this[k]!==0)this.emit("readable");if(Z)V(Z);return this[x]}if(typeof Q==="string"&&!(X===this[a]&&!this[v5]?.lastNeed))Q=Buffer.from(Q,X);if(Buffer.isBuffer(Q)&&this[a])Q=this[v5].write(Q);if(this[x]&&this[k]!==0)this[z6](!0);if(this[x])this.emit("data",Q);else this[u6](Q);if(this[k]!==0)this.emit("readable");if(Z)V(Z);return this[x]}read(Q){if(this[S])return null;if(this[c]=!1,this[k]===0||Q===0||Q&&Q>this[k])return this[H5](),null;if(this[b])Q=null;if(this[T].length>1&&!this[b])this[T]=[this[a]?this[T].join(""):Buffer.concat(this[T],this[k])];let X=this[d7](Q||null,this[T][0]);return this[H5](),X}[d7](Q,X){if(this[b])this[Y6]();else{let Z=X;if(Q===Z.length||Q===null)this[Y6]();else if(typeof Z==="string")this[T][0]=Z.slice(Q),X=Z.slice(0,Q),this[k]-=Q;else this[T][0]=Z.subarray(Q),X=Z.subarray(0,Q),this[k]-=Q}if(this.emit("data",X),!this[T].length&&!this[K5])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[K5]=!0,this.writable=!1,this[x]||!this[h5])this[H5]();return this}[R5](){if(this[S])return;if(!this[A5]&&!this[u].length)this[c]=!0;if(this[h5]=!1,this[x]=!0,this.emit("resume"),this[T].length)this[z6]();else if(this[K5])this[H5]();else this.emit("drain")}resume(){return this[R5]()}pause(){this[x]=!1,this[h5]=!0,this[c]=!1}get destroyed(){return this[S]}get flowing(){return this[x]}get paused(){return this[h5]}[u6](Q){if(this[b])this[k]+=1;else this[k]+=Q.length;this[T].push(Q)}[Y6](){if(this[b])this[k]-=1;else this[k]-=this[T][0].length;return this[T].shift()}[z6](Q=!1){do;while(this[c7](this[Y6]())&&this[T].length);if(!Q&&!this[T].length&&!this[K5])this.emit("drain")}[c7](Q){return this.emit("data",Q),this[x]}pipe(Q,X){if(this[S])return Q;this[c]=!1;let Z=this[_5];if(X=X||{},Q===m7.stdout||Q===m7.stderr)X.end=!1;else X.end=X.end!==!1;if(X.proxyErrors=!!X.proxyErrors,Z){if(X.end)Q.end()}else if(this[u].push(!X.proxyErrors?new l6(this,Q,X):new i7(this,Q,X)),this[X5])m5(()=>this[R5]());else this[R5]();return Q}unpipe(Q){let X=this[u].find((Z)=>Z.dest===Q);if(X){if(this[u].length===1){if(this[x]&&this[A5]===0)this[x]=!1;this[u]=[]}else this[u].splice(this[u].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[c]=!1,this[A5]++,!this[u].length&&!this[x])this[R5]()}else if(Q==="readable"&&this[k]!==0)super.emit("readable");else if(_8(Q)&&this[_5])super.emit(Q),this.removeAllListeners(Q);else if(Q==="error"&&this[u5]){let V=X;if(this[X5])m5(()=>V.call(this,this[u5]));else V.call(this,this[u5])}return Z}removeListener(Q,X){return this.off(Q,X)}off(Q,X){let Z=super.off(Q,X);if(Q==="data"){if(this[A5]=this.listeners("data").length,this[A5]===0&&!this[c]&&!this[u].length)this[x]=!1}return Z}removeAllListeners(Q){let X=super.removeAllListeners(Q);if(Q==="data"||Q===void 0){if(this[A5]=0,!this[c]&&!this[u].length)this[x]=!1}return X}get emittedEnd(){return this[_5]}[H5](){if(!this[$6]&&!this[_5]&&!this[S]&&this[T].length===0&&this[K5]){if(this[$6]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[J6])this.emit("close");this[$6]=!1}}emit(Q,...X){let Z=X[0];if(Q!=="error"&&Q!=="close"&&Q!==S&&this[S])return!1;else if(Q==="data")return!this[b]&&!Z?!1:this[X5]?(m5(()=>this[g6](Z)),!0):this[g6](Z);else if(Q==="end")return this[l7]();else if(Q==="close"){if(this[J6]=!0,!this[_5]&&!this[S])return!1;let $=super.emit("close");return this.removeAllListeners("close"),$}else if(Q==="error"){this[u5]=Z,super.emit(h6,Z);let $=!this[g5]||this.listeners("error").length?super.emit("error",Z):!1;return this[H5](),$}else if(Q==="resume"){let $=super.emit("resume");return this[H5](),$}else if(Q==="finish"||Q==="prefinish"){let $=super.emit(Q);return this.removeAllListeners(Q),$}let V=super.emit(Q,...X);return this[H5](),V}[g6](Q){for(let Z of this[u])if(Z.dest.write(Q)===!1)this.pause();let X=this[c]?!1:super.emit("data",Q);return this[H5](),X}[l7](){if(this[_5])return!1;return this[_5]=!0,this.readable=!1,this[X5]?(m5(()=>this[m6]()),!0):this[m6]()}[m6](){if(this[v5]){let X=this[v5].end();if(X){for(let Z of this[u])Z.dest.write(X);if(!this[c])super.emit("data",X)}}for(let X of this[u])X.end();let Q=super.emit("end");return this.removeAllListeners("end"),Q}async collect(){let Q=Object.assign([],{dataLength:0});if(!this[b])Q.dataLength=0;let X=this.promise();return this.on("data",(Z)=>{if(Q.push(Z),!this[b])Q.dataLength+=Z.length}),await X,Q}async concat(){if(this[b])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(S,()=>X(Error("stream destroyed"))),this.on("error",(Z)=>X(Z)),this.on("end",()=>Q())})}[Symbol.asyncIterator](){this[c]=!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[K5])return X();let $,J,z=(q)=>{this.off("data",Y),this.off("end",K),this.off(S,H),X(),J(q)},Y=(q)=>{this.off("error",z),this.off("end",K),this.off(S,H),this.pause(),$({value:q,done:!!this[K5]})},K=()=>{this.off("error",z),this.off("data",Y),this.off(S,H),X(),$({done:!0,value:void 0})},H=()=>z(Error("stream destroyed"));return new Promise((q,W)=>{J=W,$=q,this.once(S,H),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[c]=!1;let Q=!1,X=()=>{return this.pause(),this.off(h6,X),this.off(S,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(h6,X),this.once(S,X),{next:Z,throw:X,return:X,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(Q){if(this[S]){if(Q)this.emit("error",Q);else this.emit(S);return this}this[S]=!0,this[c]=!0,this[T].length=0,this[k]=0;let X=this;if(typeof X.close==="function"&&!this[J6])X.close();if(Q)this.emit("error",Q);else this.emit(S);return this}static get isStream(){return H8}}var N8=v8.native,c5={lstatSync:O8,readdir:F8,readdirSync:M8,readlinkSync:C8,realpathSync:N8,promises:{lstat:P8,readdir:D8,readlink:S8,realpath:I8}},s7=(Q)=>!Q||Q===c5||Q===R8?c5:{...c5,...Q,promises:{...c5.promises,...Q.promises||{}}},t7=/^\\\\\?\\([a-z]:)\\?$/i,x8=(Q)=>Q.replace(/\//g,"\\").replace(t7,"$1\\"),T8=/[\\\/]/,n=0,e7=1,Q9=2,Z5=4,X9=6,Z9=8,w5=10,V9=12,i=15,d5=~i,p6=16,n7=32,l5=64,r=128,H6=256,W6=512,o7=l5|r|W6,k8=1023,i6=(Q)=>Q.isFile()?Z9:Q.isDirectory()?Z5:Q.isSymbolicLink()?w5:Q.isCharacterDevice()?Q9:Q.isBlockDevice()?X9:Q.isSocket()?V9:Q.isFIFO()?e7:n,a7=new f5({max:4096}),p5=(Q)=>{let X=a7.get(Q);if(X)return X;let Z=Q.normalize("NFKD");return a7.set(Q,Z),Z},r7=new f5({max:4096}),q6=(Q)=>{let X=r7.get(Q);if(X)return X;let Z=p5(Q.toLowerCase());return r7.set(Q,Z),Z};class o6 extends f5{constructor(){super({max:256})}}class $9 extends f5{constructor(Q=16384){super({maxSize:Q,sizeCalculation:(X)=>X.length+1})}}var J9=Symbol("PathScurry setAsCwd");class h{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}#w;get rdev(){return this.#w}#W;get blksize(){return this.#W}#Y;get ino(){return this.#Y}#G;get size(){return this.#G}#q;get blocks(){return this.#q}#K;get atimeMs(){return this.#K}#J;get mtimeMs(){return this.#J}#L;get ctimeMs(){return this.#L}#F;get birthtimeMs(){return this.#F}#j;get atime(){return this.#j}#U;get mtime(){return this.#U}#N;get ctime(){return this.#N}#A;get birthtime(){return this.#A}#M;#v;#_;#B;#O;#P;#Z;#E;#T;#D;get parentPath(){return(this.parent||this).fullpath()}get path(){return this.parentPath}constructor(Q,X=n,Z,V,$,J,z){if(this.name=Q,this.#M=$?q6(Q):p5(Q),this.#Z=X&k8,this.nocase=$,this.roots=V,this.root=Z||this,this.#E=J,this.#_=z.fullpath,this.#O=z.relative,this.#P=z.relativePosix,this.parent=z.parent,this.parent)this.#Q=this.parent.#Q;else this.#Q=s7(z.fs)}depth(){if(this.#v!==void 0)return this.#v;if(!this.parent)return this.#v=0;return this.#v=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).#k(V):this.#k(V)}#k(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&=~p6,X}child(Q,X){if(Q===""||Q===".")return this;if(Q==="..")return this.parent||this;let Z=this.children(),V=this.nocase?q6(Q):p5(Q);for(let Y of Z)if(Y.#M===V)return Y;let $=this.parent?this.sep:"",J=this.#_?this.#_+$+Q:void 0,z=this.newChild(Q,n,{...X,parent:this,fullpath:J});if(!this.canReaddir())z.#Z|=r;return Z.push(z),z}relative(){if(this.isCWD)return"";if(this.#O!==void 0)return this.#O;let Q=this.name,X=this.parent;if(!X)return this.#O=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.#B!==void 0)return this.#B;if(this.sep==="/")return this.#B=this.fullpath();if(!this.parent){let V=this.fullpath().replace(/\\/g,"/");if(/^[a-z]:\//i.test(V))return this.#B=`//?/${V}`;else return this.#B=V}let Q=this.parent,X=Q.fullpathPosix(),Z=X+(!X||!Q.parent?"":"/")+this.name;return this.#B=Z}isUnknown(){return(this.#Z&i)===n}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&i)===Z9}isDirectory(){return(this.#Z&i)===Z5}isCharacterDevice(){return(this.#Z&i)===Q9}isBlockDevice(){return(this.#Z&i)===X9}isFIFO(){return(this.#Z&i)===e7}isSocket(){return(this.#Z&i)===V9}isSymbolicLink(){return(this.#Z&w5)===w5}lstatCached(){return this.#Z&n7?this:void 0}readlinkCached(){return this.#T}realpathCached(){return this.#D}readdirCached(){let Q=this.children();return Q.slice(0,Q.provisional)}canReadlink(){if(this.#T)return!0;if(!this.parent)return!1;let Q=this.#Z&i;return!(Q!==n&&Q!==w5||this.#Z&H6||this.#Z&r)}calledReaddir(){return!!(this.#Z&p6)}isENOENT(){return!!(this.#Z&r)}isNamed(Q){return!this.nocase?this.#M===p5(Q):this.#M===q6(Q)}async readlink(){let Q=this.#T;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.#T=Z}catch(X){this.#x(X.code);return}}readlinkSync(){let Q=this.#T;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.#T=Z}catch(X){this.#x(X.code);return}}#u(Q){this.#Z|=p6;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)&d5,this.#l()}#l(){let Q=this.children();Q.provisional=0;for(let X of Q)X.#R()}#f(){this.#Z|=W6,this.#b()}#b(){if(this.#Z&l5)return;let Q=this.#Z;if((Q&i)===Z5)Q&=d5;this.#Z=Q|l5,this.#l()}#h(Q=""){if(Q==="ENOTDIR"||Q==="EPERM")this.#b();else if(Q==="ENOENT")this.#R();else this.children().provisional=0}#I(Q=""){if(Q==="ENOTDIR")this.parent.#b();else if(Q==="ENOENT")this.#R()}#x(Q=""){let X=this.#Z;if(X|=H6,Q==="ENOENT")X|=r;if(Q==="EINVAL"||Q==="UNKNOWN")X&=d5;if(this.#Z=X,Q==="ENOTDIR"&&this.parent)this.parent.#b()}#g(Q,X){return this.#d(Q,X)||this.#m(Q,X)}#m(Q,X){let Z=i6(Q),V=this.newChild(Q.name,Z,{parent:this}),$=V.#Z&i;if($!==Z5&&$!==w5&&$!==n)V.#Z|=l5;return X.unshift(V),X.provisional++,V}#d(Q,X){for(let Z=X.provisional;Z<X.length;Z++){let V=X[Z];if((this.nocase?q6(Q.name):p5(Q.name))!==V.#M)continue;return this.#H(Q,V,Z,X)}}#H(Q,X,Z,V){let $=X.name;if(X.#Z=X.#Z&d5|i6(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.#I(Q.code)}}lstatSync(){if((this.#Z&r)===0)try{return this.#c(this.#Q.lstatSync(this.fullpath())),this}catch(Q){this.#I(Q.code)}}#c(Q){let{atime:X,atimeMs:Z,birthtime:V,birthtimeMs:$,blksize:J,blocks:z,ctime:Y,ctimeMs:K,dev:H,gid:q,ino:W,mode:G,mtime:_,mtimeMs:j,nlink:U,rdev:B,size:A,uid:w}=Q;this.#j=X,this.#K=Z,this.#A=V,this.#F=$,this.#W=J,this.#q=z,this.#N=Y,this.#L=K,this.#V=H,this.#C=q,this.#Y=W,this.#$=G,this.#U=_,this.#J=j,this.#X=U,this.#w=B,this.#G=A,this.#z=w;let O=i6(Q);if(this.#Z=this.#Z&d5|O|n7,O!==n&&O!==Z5&&O!==w5)this.#Z|=l5}#y=[];#S=!1;#p(Q){this.#S=!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.#S)return;this.#S=!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&o7)return!1;let Q=i&this.#Z;if(!(Q===n||Q===Z5||Q===w5))return!1;return!0}shouldWalk(Q,X){return(this.#Z&Z5)===Z5&&!(this.#Z&o7)&&!Q.has(this)&&(!X||X(this))}async realpath(){if(this.#D)return this.#D;if((W6|H6|r)&this.#Z)return;try{let Q=await this.#Q.promises.realpath(this.fullpath());return this.#D=this.resolve(Q)}catch(Q){this.#f()}}realpathSync(){if(this.#D)return this.#D;if((W6|H6|r)&this.#Z)return;try{let Q=this.#Q.realpathSync(this.fullpath());return this.#D=this.resolve(Q)}catch(Q){this.#f()}}[J9](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.#O=Z.join(this.sep),V.#P=Z.join("/"),V=V.parent,Z.push("..");V=Q;while(V&&V.parent&&!X.has(V))V.#O=void 0,V.#P=void 0,V=V.parent}}class G6 extends h{sep="\\";splitSep=T8;constructor(Q,X=n,Z,V,$,J,z){super(Q,X,Z,V,$,J,z)}newChild(Q,X=n,Z={}){return new G6(Q,X,this.root,this.roots,this.nocase,this.childrenCache(),Z)}getRootString(Q){return n6.parse(Q).root}getRoot(Q){if(Q=x8(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 i5(Q,this).root}sameRoot(Q,X=this.root.name){return Q=Q.toUpperCase().replace(/\//g,"\\").replace(t7,"$1\\"),Q===X}}class _6 extends h{splitSep="/";sep="/";constructor(Q,X=n,Z,V,$,J,z){super(Q,X,Z,V,$,J,z)}getRootString(Q){return Q.startsWith("/")?"/":""}getRoot(Q){return this.root}newChild(Q,X=n,Z={}){return new _6(Q,X,this.root,this.roots,this.nocase,this.childrenCache(),Z)}}class a6{root;rootPath;roots;cwd;#Q;#V;#$;nocase;#X;constructor(Q=process.cwd(),X,Z,{nocase:V,childrenCacheSize:$=16384,fs:J=c5}={}){if(this.#X=s7(J),Q instanceof URL||Q.startsWith("file://"))Q=L8(Q);let z=X.resolve(Q);this.roots=Object.create(null),this.rootPath=this.parseRootPath(z),this.#Q=new o6,this.#V=new o6,this.#$=new $9($);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,H=Y.length-1,q=X.sep,W=this.rootPath,G=!1;for(let _ of Y){let j=H--;K=K.child(_,{relative:Array(j).fill("..").join(q),relativePosix:Array(j).fill("..").join("/"),fullpath:W+=(G?"":q)+_}),G=!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 h))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 h))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 h))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 h))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 h))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 h))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 h))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=(q,W)=>{Y.add(q),q.readdirCB((G,_)=>{if(G)return W(G);let j=_.length;if(!j)return W();let U=()=>{if(--j===0)W()};for(let B of _){if(!$||$(B))z.push(Z?B:B.fullpath());if(V&&B.isSymbolicLink())B.realpath().then((A)=>A?.isUnknown()?A.lstat():A).then((A)=>A?.shouldWalk(Y,J)?K(A,U):U());else if(B.shouldWalk(Y,J))K(B,U);else U()}},!0)},H=Q;return new Promise((q,W)=>{K(H,(G)=>{if(G)return W(G);q(z)})})}walkSync(Q=this.cwd,X={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof h))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 H=K.readdirSync();for(let q of H){if(!$||$(q))z.push(Z?q:q.fullpath());let W=q;if(q.isSymbolicLink()){if(!(V&&(W=q.realpathSync())))continue;if(W.isUnknown())W.lstatSync()}if(W.shouldWalk(Y,J))Y.add(W)}}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 h))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 h))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 H of K){if(!$||$(H))yield Z?H:H.fullpath();let q=H;if(H.isSymbolicLink()){if(!(V&&(q=H.realpathSync())))continue;if(q.isUnknown())q.lstatSync()}if(q.shouldWalk(z,J))z.add(q)}}}stream(Q=this.cwd,X={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof h))X=Q,Q=this.cwd;let{withFileTypes:Z=!0,follow:V=!1,filter:$,walkFilter:J}=X,z=new B5({objectMode:!0});if(!$||$(Q))z.write(Z?Q:Q.fullpath());let Y=new Set,K=[Q],H=0,q=()=>{let W=!1;while(!W){let G=K.shift();if(!G){if(H===0)z.end();return}H++,Y.add(G);let _=(U,B,A=!1)=>{if(U)return z.emit("error",U);if(V&&!A){let w=[];for(let O of B)if(O.isSymbolicLink())w.push(O.realpath().then((F)=>F?.isUnknown()?F.lstat():F));if(w.length){Promise.all(w).then(()=>_(null,B,!0));return}}for(let w of B)if(w&&(!$||$(w))){if(!z.write(Z?w:w.fullpath()))W=!0}H--;for(let w of B){let O=w.realpathCached()||w;if(O.shouldWalk(Y,J))K.push(O)}if(W&&!z.flowing)z.once("drain",q);else if(!j)q()},j=!0;G.readdirCB(_,!0),j=!1}};return q(),z}streamSync(Q=this.cwd,X={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof h))X=Q,Q=this.cwd;let{withFileTypes:Z=!0,follow:V=!1,filter:$,walkFilter:J}=X,z=new B5({objectMode:!0}),Y=new Set;if(!$||$(Q))z.write(Z?Q:Q.fullpath());let K=[Q],H=0,q=()=>{let W=!1;while(!W){let G=K.shift();if(!G){if(H===0)z.end();return}H++,Y.add(G);let _=G.readdirSync();for(let j of _)if(!$||$(j)){if(!z.write(Z?j:j.fullpath()))W=!0}H--;for(let j of _){let U=j;if(j.isSymbolicLink()){if(!(V&&(U=j.realpathSync())))continue;if(U.isUnknown())U.lstatSync()}if(U.shouldWalk(Y,J))K.push(U)}}if(W&&!z.flowing)z.once("drain",q)};return q(),z}chdir(Q=this.cwd){let X=this.cwd;this.cwd=typeof Q==="string"?this.cwd.resolve(Q):Q,this.cwd[J9](X)}}class i5 extends a6{sep="\\";constructor(Q=process.cwd(),X={}){let{nocase:Z=!0}=X;super(Q,n6,"\\",{...X,nocase:Z});this.nocase=Z;for(let V=this.cwd;V;V=V.parent)V.nocase=this.nocase}parseRootPath(Q){return n6.parse(Q).root.toUpperCase()}newRoot(Q){return new G6(this.rootPath,Z5,void 0,this.roots,this.nocase,this.childrenCache(),{fs:Q})}isAbsolute(Q){return Q.startsWith("/")||Q.startsWith("\\")||/^[a-z]:(\/|\\)/i.test(Q)}}class n5 extends a6{sep="/";constructor(Q=process.cwd(),X={}){let{nocase:Z=!1}=X;super(Q,w8,"/",{...X,nocase:Z});this.nocase=Z}parseRootPath(Q){return"/"}newRoot(Q){return new _6(this.rootPath,Z5,void 0,this.roots,this.nocase,this.childrenCache(),{fs:Q})}isAbsolute(Q){return Q.startsWith("/")}}class j6 extends n5{constructor(Q=process.cwd(),X={}){let{nocase:Z=!0}=X;super(Q,{...X,nocase:Z})}}var lX=process.platform==="win32"?G6:_6,z9=process.platform==="win32"?i5:process.platform==="darwin"?j6:n5;var E8=(Q)=>Q.length>=1,b8=(Q)=>Q.length>=1;class N5{#Q;#V;#$;length;#X;#z;#C;#w;#W;#Y;#G=!0;constructor(Q,X,Z,V){if(!E8(Q))throw TypeError("empty pattern list");if(!b8(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,[H,q,W,G,..._]=this.#V;if(K[0]==="")K.shift(),_.shift();let j=[$,J,z,Y,""].join("/"),U=[H,q,W,G,""].join("/");this.#Q=[j,...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=$+"/",H=z+"/";this.#Q=[K,...J],this.#V=[H,...Y],this.length=this.#Q.length}}}pattern(){return this.#Q[this.#$]}isString(){return typeof this.#Q[this.#$]==="string"}isGlobstar(){return this.#Q[this.#$]===D}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 N5(this.#Q,this.#V,this.#$+1,this.#X),this.#z.#Y=this.#Y,this.#z.#W=this.#W,this.#z.#w=this.#w,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.#w!==void 0?this.#w:this.#w=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.#G)}markFollowGlobstar(){if(this.#$===0||!this.isGlobstar()||!this.#G)return!1;return this.#G=!1,!0}}var y8=typeof process==="object"&&process&&typeof process.platform==="string"?process.platform:"linux";class o5{relative;relativeChildren;absolute;absoluteChildren;platform;mmopts;constructor(Q,{nobrace:X,nocase:Z,noext:V,noglobstar:$,platform:J=y8}){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 p(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 N5(V,$,0,this.platform),z=new p(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 r6{store;constructor(Q=new Map){this.store=Q}copy(){return new r6(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 Y9{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 K9{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 a5{hasWalkedCache;matches=new Y9;subwalks=new K9;patterns;follow;dot;opts;constructor(Q,X){this.opts=Q,this.follow=!!Q.follow,this.dot=!!Q.dot,this.hasWalkedCache=X?X.copy():new r6}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 q=$.rest();if(!q){this.matches.add(V,!0,!1);continue}else $=q}if(V.isENOENT())continue;let Y,K,H=!1;while(typeof(Y=$.pattern())==="string"&&(K=$.rest()))V=V.resolve(Y),$=K,H=!0;if(Y=$.pattern(),K=$.rest(),H){if(this.hasWalkedCache.hasWalked(V,$))continue;this.hasWalkedCache.storeWalked(V,$)}if(typeof Y==="string"){let q=Y===".."||Y===""||Y===".";this.matches.add(V.resolve(Y),z,q);continue}else if(Y===D){if(!V.isSymbolicLink()||this.follow||$.checkFollowGlobstar())this.subwalks.add(V,$);let q=K?.pattern(),W=K?.rest();if(!K||(q===""||q===".")&&!W)this.matches.add(V,z,q===""||q===".");else if(q===".."){let G=V.parent||V;if(!W)this.matches.add(G,z,!0);else if(!this.hasWalkedCache.hasWalked(G,W))this.subwalks.add(G,W)}}else if(Y instanceof RegExp)this.subwalks.add(V,$)}return this}subwalkTargets(){return this.subwalks.keys()}child(){return new a5(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===D)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 f8=(Q,X)=>typeof Q==="string"?new o5([Q],X):Array.isArray(Q)?new o5(Q,X):Q;class s6{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=f8(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 a5(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,H)=>this.walkCB3(z,H,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 a5(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 U6 extends s6{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 A6 extends s6{results;constructor(Q,X,Z){super(Q,X,Z);this.results=new B5({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 h8=typeof process==="object"&&process&&typeof process.platform==="string"?process.platform:"linux";class V5{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=u8(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||h8,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"?i5:X.platform==="darwin"?j6:X.platform?n5:z9;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 p(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 H=z[K];if(!H)throw Error("invalid pattern object");return new N5(Y,H,0,this.platform)})}async walk(){return[...await new U6(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 U6(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 A6(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 A6(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 t6=(Q,X={})=>{if(!Array.isArray(Q))Q=[Q];for(let Z of Q)if(new p(Z,X).hasMagic())return!0;return!1};function w6(Q,X={}){return new V5(Q,X).streamSync()}function q9(Q,X={}){return new V5(Q,X).stream()}function W9(Q,X={}){return new V5(Q,X).walkSync()}async function H9(Q,X={}){return new V5(Q,X).walk()}function L6(Q,X={}){return new V5(Q,X).iterateSync()}function G9(Q,X={}){return new V5(Q,X).iterate()}var g8=w6,m8=Object.assign(q9,{sync:w6}),d8=L6,c8=Object.assign(G9,{sync:L6}),l8=Object.assign(W9,{stream:w6,iterate:L6}),B6=Object.assign(H9,{glob:H9,globSync:W9,sync:l8,globStream:q9,stream:m8,globStreamSync:w6,streamSync:g8,globIterate:G9,iterate:c8,globIterateSync:L6,iterateSync:d8,Glob:V5,hasMagic:t6,escape:C5,unescape:o});B6.glob=B6;var p8={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(`
54
+ `),K=Math.max(0,V-1),H=Math.min(Y.length,K+$);return{content:Y.slice(K,H).map((G,_)=>`${K+_+1} ${G}`).join(`
55
+ `)}}catch(J){return{content:`Error reading file: ${J instanceof Error?J.message:String(J)}`,is_error:!0}}}},i8={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}}}},n8={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 H=(K.match(new RegExp(o8(V),"g"))||[]).length;if(H===0)return{content:"Error: String not found in file",is_error:!0};return await Bun.write(Z,Y),{content:`Successfully replaced ${H} 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 o8(Q){return Q.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var a8={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}
56
+ ${J}
57
+ ${z}`.trim(),is_error:!0};return{content:J||"(no output)"}}catch($){return{content:`Error executing command: ${$ instanceof Error?$.message:String($)}`,is_error:!0}}}},r8={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 B6(Z,{cwd:V,absolute:!0,nodir:!0});if($.length===0)return{content:"No files found matching pattern"};return{content:$.sort().join(`
58
+ `)}}catch($){return{content:`Error searching files: ${$ instanceof Error?$.message:String($)}`,is_error:!0}}}},s8={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 H=["--json"];if(z)H.push("-i");if(Y)H.push("-C",String(Y));if($)H.push("--glob",$);if(J==="files_with_matches")H.push("--files-with-matches");if(J==="count")H.push("--count");H.push(Z,V);let W=Bun.spawnSync(["rg",...H],{cwd:X.workingDirectory,maxBuffer:10485760}).stdout?.toString()||"";if(!W.trim())return{content:"No matches found"};if(J==="content"){let G=W.trim().split(`
59
+ `),_=[];for(let j of G.slice(0,K||100))try{let U=JSON.parse(j);if(U.type==="match"){let B=U.data?.path?.text||"",A=U.data?.line_number||0,w=U.data?.lines?.text||"";_.push(`${B}:${A}:${w.trim()}`)}}catch{_.push(j)}return{content:_.join(`
60
+ `)||"No matches found"}}return{content:W.trim()}}catch(H){return{content:`Error searching: ${H instanceof Error?H.message:String(H)}`,is_error:!0}}}},t8={name:"Task",description:`Launch a new agent to handle complex, multi-step tasks autonomously.
61
+
62
+ The Task tool launches specialized agents (subprocesses) that autonomously handle complex tasks. Each agent type has specific capabilities and tools available to it.
63
+
64
+ Available agent types and their tools:
65
+ - Bash: Command execution specialist for running bash commands. Use for git operations, command execution, and other terminal tasks.
66
+ - general-purpose: General-purpose agent for researching complex questions, searching for code, and executing multi-step tasks.
67
+ - Explore: Fast agent specialized for exploring codebases. Use to quickly find files by patterns, search code for keywords, or answer questions about the codebase.
68
+ - Plan: Software architect agent for designing implementation plans. Returns step-by-step plans, identifies critical files and considers architectural trade-offs.
69
+
70
+ When using the Task tool, you must specify a subagent_type parameter to select the agent type.
71
+
72
+ Usage notes:
73
+ - Always include a short description (3-5 words) summarizing what the agent will do
74
+ - Launch multiple agents concurrently whenever possible to maximize performance
75
+ - 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 H=process.env.ANTHROPIC_API_KEY||process.env.CLAUDE_API_KEY||process.env.ANTHROPIC_AUTH_TOKEN||process.env.Z_AI_API_KEY||"";if(!H)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 q={haiku:"claude-haiku-4-5",sonnet:"claude-sonnet-4-6",opus:"claude-opus-4-6"},W=q[J]||q.haiku,G=[import.meta.dir+"/../../dist/cli.js",import.meta.dir+"/../cli.ts",process.cwd()+"/dist/cli.js",process.cwd()+"/src/cli.ts"],_=null;for(let w of G)try{if(await Bun.file(w).exists()){_=w;break}}catch{}if(!_)return{content:`Error: Could not find CLI. Tried:
76
+ ${G.join(`
77
+ `)}`,is_error:!0};let j=["run",_,"-m",W,"-p",X.permissionMode,"-q",V];if(Y)return Bun.spawn(["bun",...j],{cwd:X.workingDirectory,detached:!0,stdio:["ignore","pipe","pipe"],env:{...process.env,ANTHROPIC_API_KEY:H}}).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",...j],{cwd:X.workingDirectory,timeout:300000,maxBuffer:10485760,env:{...process.env,ANTHROPIC_API_KEY:H}}),B=U.stdout?.toString()||"",A=U.stderr?.toString()||"";if(U.exitCode!==0)return{content:`Agent failed with exit code ${U.exitCode}
78
+ ${A}
79
+ ${B}`.trim(),is_error:!0};return{content:JSON.stringify({agentId:K,status:"completed",output:B,description:$||"Task completed"})}}catch(H){return{content:`Error running subagent: ${H instanceof Error?H.message:String(H)}`,is_error:!0}}}},e8={name:"TaskOutput",description:`Retrieves output from a running or completed task (background shell, agent, or remote session).
80
+
81
+ Takes a task_id parameter identifying the task.
82
+ Returns the task output along with status information.
83
+ Use block=true (default) to wait for task completion.
84
+ Use block=false for non-blocking check of current status.
85
+
86
+ Task IDs can be found using the /tasks command
87
+ Works with all task types: background shells, async agents, and remote sessions`,input_schema:{type:"object",properties:{task_id:{type:"string",description:"The task ID to get output from"},block:{type:"boolean",description:"Whether to wait for completion (default: true)",default:!0},timeout:{type:"number",description:"Max wait time in ms (default: 30000, max: 600000)",default:30000,minimum:0,maximum:600000}},required:["task_id"]},handler:async(Q,X)=>{let Z=Q.task_id,V=Q.block??!0,$=Q.timeout??30000;try{let J=`${X.workingDirectory}/.claude/tasks/${Z}.json`,z=Bun.file(J);if(!await z.exists())return{content:`Task not found: ${Z}. Use /tasks to list available tasks.`,is_error:!0};let Y=await z.json();if(V&&Y.status==="running"){let K=Date.now();while(Date.now()-K<$){await new Promise((q)=>setTimeout(q,1000));let H=Bun.file(J);if(await H.exists()){let q=await H.json();if(q.status!=="running")return{content:JSON.stringify({task_id:Z,status:q.status,output:q.output,error:q.error,duration:q.endTime?q.endTime-q.startTime:null},null,2)}}}return{content:JSON.stringify({task_id:Z,status:"timeout",message:`Task still running after ${$}ms`},null,2)}}return{content:JSON.stringify({task_id:Z,status:Y.status,output:Y.output,error:Y.error,duration:Y.endTime?Y.endTime-Y.startTime:null},null,2)}}catch(J){return{content:`Error getting task output: ${J instanceof Error?J.message:String(J)}`,is_error:!0}}}},QQ={name:"AskUserQuestion",description:`Use this tool when you need to ask the user questions during execution.
88
+
89
+ This allows you to:
90
+ 1. Gather user preferences or requirements
91
+ 2. Clarify ambiguous instructions
92
+ 3. Get decisions on implementation choices
93
+ 4. Offer choices to the user about what direction to take
94
+
95
+ Plan mode note: In plan mode, use this tool to clarify requirements or choose between approaches BEFORE finalizing your plan. Do NOT use this tool if your plan is ready - that's what ExitPlanMode is for.
96
+
97
+ The options array should have 2-4 options. Each option should be a distinct, mutually exclusive choice.
98
+ The preview feature allows showing markdown content in a side-by-side layout.
99
+
100
+ User can always select "Other" to provide custom text input.`,input_schema:{type:"object",properties:{questions:{type:"array",description:"Questions to ask the user (1-4 questions)",items:{type:"object",properties:{question:{type:"string",description:"The complete question to ask the user"},header:{type:"string",description:"Very short label displayed as a chip/tag (max 12 chars)"},options:{type:"array",description:"The available choices (2-4 options)",items:{type:"object",properties:{label:{type:"string",description:"The display text for this option (5 words max)"},description:{type:"string",description:"Explanation of what this option means"},markdown:{type:"string",description:"Optional preview content shown in a monospace box"}},required:["label","description"]},minItems:2,maxItems:4},multiSelect:{type:"boolean",description:"Allow selecting multiple options (default: false)",default:!1}},required:["question","header","options"]},minItems:1,maxItems:4}},required:["questions"]},handler:async(Q,X)=>{let Z=Q.questions;try{let V=Z.map(($,J)=>{let z=$.options.map((Y,K)=>{let H=` ${K+1}. ${Y.label}`;if(Y.description)H+=` - ${Y.description}`;return H}).join(`
101
+ `);return`## Question ${J+1}: [${$.header}]
102
+ ${$.question}
103
+
104
+ Options:
105
+ ${z}${$.multiSelect?`
106
+ (multi-select enabled)`:""}`}).join(`
107
+
108
+ ---
109
+
110
+ `);return{content:JSON.stringify({type:"user_question",questions:Z,formatted:V,message:"Questions prepared for user response"},null,2)}}catch(V){return{content:`Error preparing questions: ${V instanceof Error?V.message:String(V)}`,is_error:!0}}}},XQ={name:"EnterPlanMode",description:`Use this tool when you are in plan mode and have finished writing your plan to the plan file and are ready for user approval.
111
+
112
+ How This Tool Works:
113
+ - You should have already written your plan to the plan file specified in the plan mode system message
114
+ - This tool does NOT take the plan content as a parameter - it will read the plan from the file you wrote
115
+ - This tool simply signals that you're done planning and ready for the user to review and approve
116
+
117
+ When to Use This Tool:
118
+ IMPORTANT: Only use this tool when the task requires planning the implementation steps of a task that requires writing code. For research tasks where you're gathering information, searching files, reading files or in general trying to understand the codebase - do NOT use this tool.
119
+
120
+ Plan mode note: In plan mode, use this tool to clarify requirements or choose between approaches BEFORE finalizing your plan. Do NOT use this tool if your plan is ready - that's what ExitPlanMode is for.
121
+
122
+ Examples:
123
+ - "Search for and understand the implementation of vim mode" - Do NOT use this tool
124
+ - "Help me implement yank mode for vim" - Use EnterPlanMode
125
+
126
+ Important notes:
127
+ - NEVER run additional commands to read or explore code, besides git bash commands
128
+ - NEVER use the TodoWrite or Task tools
129
+ - DO NOT commit files that likely contain secrets (.env, credentials.json, etc.)
130
+ - If you discover unexpected state like unfamiliar files, branches, or configuration, investigate before deleting or overwriting`,input_schema:{type:"object",properties:{allowedPrompts:{type:"array",description:"Prompt-based permissions needed to implement the plan",items:{type:"object",properties:{tool:{type:"string",description:"The tool this prompt applies to (e.g., 'Bash')"},prompt:{type:"string",description:"Semantic description of the action (e.g., 'run tests', 'install dependencies')"}},required:["tool","prompt"]}}},required:[]},handler:async(Q,X)=>{let Z=Q.allowedPrompts;try{let V=`${X.workingDirectory}/.claude/plan.md`,$=Bun.file(V);if(!await $.exists())return{content:"Error: No plan file found. Please write your plan to .claude/plan.md first.",is_error:!0};let J=await $.text();return{content:JSON.stringify({type:"plan_ready",planFile:V,planLength:J.length,allowedPrompts:Z||[],message:"Plan is ready for user review. ExitPlanMode will request user approval."},null,2)}}catch(V){return{content:`Error entering plan mode: ${V instanceof Error?V.message:String(V)}`,is_error:!0}}}},ZQ={name:"ExitPlanMode",description:`Use this tool when you are in plan mode and have finished writing your plan to the plan file and are ready for user approval.
131
+
132
+ This tool does NOT take the plan content as a parameter - it will read the plan from the file you wrote.
133
+ This tool simply signals that you're done planning and ready for the user to review and approve.
134
+
135
+ IMPORTANT: Only use this tool when the task requires planning the implementation steps of a task that requires writing code.
136
+ ExitPlanMode inherently requests user approval of the plan.`,input_schema:{type:"object",properties:{allowedPrompts:{type:"array",description:"Prompt-based permissions needed to implement the plan",items:{type:"object",properties:{tool:{type:"string",description:"The tool this prompt applies to"},prompt:{type:"string",description:"Semantic description of the action"}},required:["tool","prompt"]}}},required:[]},handler:async(Q,X)=>{let Z=Q.allowedPrompts;try{let V=`${X.workingDirectory}/.claude/plan.md`,$=Bun.file(V);if(!await $.exists())return{content:"Error: No plan file found at .claude/plan.md",is_error:!0};let J=await $.text();return{content:JSON.stringify({type:"exit_plan_mode",status:"awaiting_approval",planFile:V,planPreview:J.slice(0,500)+(J.length>500?"...":""),allowedPrompts:Z||[],message:"Plan submitted for user approval."},null,2)}}catch(V){return{content:`Error exiting plan mode: ${V instanceof Error?V.message:String(V)}`,is_error:!0}}}},VQ={name:"Skill",description:`Execute a skill within the main conversation.
137
+
138
+ When users ask you to perform tasks, check if any of the available skills match. Skills provide specialized capabilities and domain knowledge.
139
+
140
+ When users reference a "slash command" or "/<something>" (e.g., "/commit", "/review-pr"), they are referring to a skill. Use this tool to invoke it.
141
+
142
+ How to invoke:
143
+ - Use this tool with the skill name and optional arguments
144
+ - Examples:
145
+ - skill: "commit" - invoke the commit skill
146
+ - skill: "review-pr", args: "123" - invoke with arguments
147
+ - Use fully qualified name for namespaced skills: skill: "ms-office-suite:pdf"
148
+
149
+ Available skills are listed in system-reminder messages in the conversation.
150
+ When a skill matches the user's request, this is a BLOCKING REQUIREMENT: invoke the relevant Skill tool BEFORE generating any other response about the task.
151
+
152
+ Important:
153
+ - NEVER mention a skill without actually calling this tool
154
+ - Do not invoke a skill that is already running
155
+ - Do not use this tool for built-in CLI commands (like /help, /clear)`,input_schema:{type:"object",properties:{skill:{type:"string",description:"The skill name (e.g., 'commit', 'review-pr', or fully qualified 'namespace:skill')"},args:{type:"string",description:"Optional arguments for the skill"}},required:["skill"]},handler:async(Q,X)=>{let{skill:Z,args:V}=Q;try{let $=`${X.workingDirectory}/.claude/skills`,J=`${process.env.HOME||""}/.claude/skills`,z=[`${$}/${Z}.md`,`${$}/${Z}/skill.md`,`${J}/${Z}.md`,`${J}/${Z}/skill.md`],Y=null;for(let q of z)if(await Bun.file(q).exists()){Y=q;break}if(!Y)return{content:`Skill not found: ${Z}. Available skills can be listed with /help.`,is_error:!0};let H=await Bun.file(Y).text();return{content:JSON.stringify({type:"skill_invocation",skill:Z,args:V,skillFile:Y,content:H,message:`Skill "${Z}" loaded. Follow the instructions in the skill content.`},null,2)}}catch($){return{content:`Error invoking skill: ${$ instanceof Error?$.message:String($)}`,is_error:!0}}}},$Q={name:"TaskStop",description:`Stops a running background task by its ID.
156
+ Takes a task_id parameter identifying the task to stop.
157
+ Returns a success or failure status.
158
+ Use this tool to terminate a long-running task.`,input_schema:{type:"object",properties:{task_id:{type:"string",description:"The ID of the background task to stop"},shell_id:{type:"string",description:"Deprecated: use task_id instead"}},required:["task_id"]},handler:async(Q,X)=>{let Z=Q.task_id;try{let V=`${X.workingDirectory}/.claude/tasks/${Z}.json`,$=Bun.file(V);if(!await $.exists())return{content:`Task not found: ${Z}`,is_error:!0};let J=await $.json();if(J.status!=="running")return{content:JSON.stringify({task_id:Z,status:J.status,message:`Task is already ${J.status}`},null,2)};return J.status="stopped",await Bun.write(V,JSON.stringify(J,null,2)),{content:JSON.stringify({task_id:Z,status:"stopped",message:"Task stopped successfully"},null,2)}}catch(V){return{content:`Error stopping task: ${V instanceof Error?V.message:String(V)}`,is_error:!0}}}},JQ={name:"MultiEdit",description:`Performs atomic multi-file editing with rollback on failure.
159
+
160
+ This tool allows you to edit multiple files simultaneously in a single atomic operation.
161
+ If any edit fails, all changes are automatically rolled back to maintain consistency.
162
+
163
+ Key features:
164
+ - Validates all edits before applying (files exist, strings found)
165
+ - Creates automatic backups before editing
166
+ - Applies all edits atomically (all-or-nothing)
167
+ - Rolls back on any failure
168
+
169
+ Use this when you need to make coordinated changes across multiple files and want
170
+ to ensure either all changes succeed or none are applied.
171
+
172
+ IMPORTANT: You MUST read the files first before using this tool. Only edit files you have already read.`,input_schema:{type:"object",properties:{edits:{type:"array",description:"Array of edit operations to apply atomically",items:{type:"object",properties:{file_path:{type:"string",description:"The absolute path to the file to edit"},old_string:{type:"string",description:"The text to find and 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"]}},dry_run:{type:"boolean",description:"Preview changes without applying them (default: false)"}},required:["edits"]},handler:async(Q,X)=>{let Z=Q.edits,V=Q.dry_run||!1;try{if(!Array.isArray(Z)||Z.length===0)return{content:"Error: edits must be a non-empty array",is_error:!0};for(let z=0;z<Z.length;z++){let Y=Z[z];if(!Y.file_path||!Y.old_string||Y.new_string===void 0)return{content:`Error: Edit at index ${z} is missing required fields (file_path, old_string, new_string)`,is_error:!0}}if(V){let z=A7(Z),Y=x6(Z);if(Y.length>0)return{content:JSON.stringify({valid:!1,errors:Y,preview:z},null,2),is_error:!0};return{content:JSON.stringify({valid:!0,preview:z,total_files:z.length,total_replacements:z.reduce((K,H)=>K+H.replacement_count,0),message:"Dry run successful - no changes applied"},null,2)}}let $=x6(Z);if($.length>0)return{content:`Validation failed:
173
+ ${$.join(`
174
+ `)}`,is_error:!0};let J=B7(Z);if(J.success)return{content:JSON.stringify({success:!0,files_modified:J.files_modified,total_replacements:J.total_replacements,message:`Successfully applied ${J.total_replacements} replacement(s) across ${J.files_modified.length} file(s)`},null,2)};else return{content:JSON.stringify({success:!1,error:J.error,rolled_back:J.rolled_back,files_modified:J.files_modified},null,2),is_error:!0}}catch($){return{content:`Error applying multi-edit: ${$ instanceof Error?$.message:String($)}`,is_error:!0}}}},zQ={name:"NotebookEdit",description:`Completely replaces the contents of a specific cell in a Jupyter notebook (.ipynb file) with new source.
175
+
176
+ 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 H=await K.json();if(!H.cells||!Array.isArray(H.cells))return{content:"Error: Invalid notebook format - no cells array",is_error:!0};let q;if(V){if(q=H.cells.findIndex((W)=>W.id===V),q===-1)return{content:`Error: Cell with ID "${V}" not found`,is_error:!0}}else if($!==void 0){if(q=$,q<0||q>=H.cells.length)if(Y==="insert")q=H.cells.length;else return{content:`Error: Cell number ${q} out of range (0-${H.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 q=H.cells.length;switch(Y){case"delete":{H.cells.splice(q,1);break}case"insert":{let W={id:`cell-${Date.now()}`,cell_type:z,source:J||"",metadata:{},...z==="code"?{outputs:[],execution_count:null}:{}};H.cells.splice(q,0,W);break}case"replace":default:{if(J===void 0)return{content:"Error: new_source is required for replace mode",is_error:!0};let W=H.cells[q];if(!W)return{content:`Error: Cell at index ${q} not found`,is_error:!0};H.cells[q]={...W,source:J,cell_type:z,...z==="code"?{execution_count:null}:{}};break}}return await Bun.write(Z,JSON.stringify(H,null,1)),{content:JSON.stringify({success:!0,message:`Successfully ${Y}d cell in ${Z}`,cellCount:H.cells.length})}}catch(K){return{content:`Error editing notebook: ${K instanceof Error?K.message:String(K)}`,is_error:!0}}}},YQ=[p8,i8,n8,JQ,a8,r8,s8,t8,e8,$Q,QQ,XQ,ZQ,VQ,zQ];function FZ(Q){return YQ.find((X)=>X.name===Q)}import{spawn as KQ}from"child_process";import e6 from"ws";class Q7{static MCPClient=Q7;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=KQ(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 e6(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(`
177
+ `)}}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===e6.OPEN)this.websocket.send(z);else if(this.process?.stdin?.writable)this.process.stdin.write(z+`
178
+ `);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===e6.OPEN)this.websocket.send(V);else if(this.process?.stdin?.writable)this.process.stdin.write(V+`
179
+ `)}handleData(Q){this.buffer+=Q;let X=this.buffer.split(`
180
+ `);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 RZ(Q,X){let Z=new Map;for(let[V,$]of Object.entries(Q)){if($.disabled)continue;let J=new Q7({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 HQ}from"child_process";class qQ{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=HQ(Q.command,[],{shell:!0,stdio:["pipe","pipe","pipe"]}),Y="",K="";z.stdout?.on("data",(H)=>{Y+=H.toString()}),z.stderr?.on("data",(H)=>{K+=H.toString()}),z.on("close",(H)=>{if(H===0)try{let q=JSON.parse(Y);$(q)}catch{$({decision:"allow"})}else if(H===1)$({decision:"deny",reason:K||"Hook denied execution"});else if(H===2)$({decision:"block",reason:K||"Hook blocked execution"});else $({decision:"allow"})}),z.on("error",(H)=>{$({decision:"allow",reason:`Hook error: ${H.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 DZ={validateWrite:{event:"PreToolUse",command:`node -e '
181
+ const input = JSON.parse(require("fs").readFileSync(0, "utf8"));
182
+ if (input.tool_name === "Write") {
183
+ const path = input.tool_input.file_path;
184
+ if (path.includes("..") || path.startsWith("/etc/")) {
185
+ console.log(JSON.stringify({ decision: "deny", reason: "Unsafe path" }));
186
+ process.exit(1);
187
+ }
188
+ }
189
+ console.log(JSON.stringify({ decision: "allow" }));
190
+ '`,timeout:5000,enabled:!1},logToolUse:{event:"PostToolUse",command:`node -e '
191
+ const input = JSON.parse(require("fs").readFileSync(0, "utf8"));
192
+ console.error(\`[LOG] Tool: \${input.tool_name}\`);
193
+ console.log(JSON.stringify({ decision: "allow" }));
194
+ '`,timeout:5000,enabled:!1}},SZ={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."},IZ={ALLOW:0,DENY:1,BLOCK:2};import{readFileSync as WQ,existsSync as _9,readdirSync as GQ}from"fs";import{join as _Q}from"path";function jQ(Q,X="project"){if(!_9(Q))return null;let Z=WQ(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=UQ(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 UQ(Q){let X={},Z=Q.split(`
195
+ `);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 AQ{skills=new Map;loadFromDirectory(Q,X="project"){if(!_9(Q))return 0;let Z=0,V=GQ(Q);for(let $ of V)if($.endsWith(".md")){let J=jQ(_Q(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 bZ(Q){return`
196
+ <skill-loading>
197
+ You are operating with the "${Q.name}" skill loaded.
198
+
199
+ ${Q.description?`Description: ${Q.description}
200
+ `:""}
201
+ ${Q.prompt}
202
+ </skill-loading>
203
+ `.trim()}var yZ=[{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.
204
+
205
+ Steps:
206
+ 1. Run \`git diff --staged\` to see staged changes
207
+ 2. Run \`git log --oneline -5\` to understand commit message style
208
+ 3. Create a commit message following conventional commits format
209
+ 4. Include "Co-Authored-By: Claude <noreply@anthropic.com>" if applicable
210
+ 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.
211
+
212
+ Steps:
213
+ 1. Use \`gh pr view\` to get PR details
214
+ 2. Use \`gh pr diff\` to see the changes
215
+ 3. Analyze the code for:
216
+ - Bugs and potential issues
217
+ - Code quality and style
218
+ - Test coverage
219
+ - Documentation
220
+ 4. Provide constructive feedback
221
+ 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.
222
+
223
+ MCP servers enable LLMs to interact with external services through well-designed tools.
224
+
225
+ Key concepts:
226
+ 1. Use FastMCP (Python) or MCP SDK (TypeScript)
227
+ 2. Define tools with clear input schemas
228
+ 3. Return structured content
229
+ 4. Handle errors gracefully
230
+
231
+ Transport types:
232
+ - stdio: Local process communication
233
+ - HTTP: REST API with JSON-RPC
234
+ - SSE: Server-Sent Events for streaming
235
+ - 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.
236
+
237
+ Hooks are user-defined shell commands that execute at specific points during Claude Code's lifecycle.
238
+
239
+ Available events:
240
+ - PreToolUse: Before a tool executes
241
+ - PostToolUse: After a tool succeeds
242
+ - PostToolUseFailure: After a tool fails
243
+ - Stop: When agent stops
244
+ - UserPromptSubmit: When user submits prompt
245
+ - SessionStart/SessionEnd: Session lifecycle
246
+
247
+ Exit codes:
248
+ - 0: Allow execution
249
+ - 1: Deny and show stderr
250
+ - 2: Block silently`,tools:["Read","Write","Edit"],model:"sonnet",source:"built-in"}];function fZ(Q){return Q.match(/^\/(\w+)(?:\s+(.*))?$/)?.[1]??null}function uZ(Q){return Q.match(/^\/\w+\s+(.*)$/)?.[1]??""}import{spawn as X7}from"child_process";import{mkdirSync as j9,rmSync as BQ,existsSync as U9,readFileSync as wQ}from"fs";import{join as r5}from"path";class LQ{teams=new Map;teammates=new Map;messageQueue=new Map;storagePath;constructor(Q="~/.claude/teams"){if(this.storagePath=Q.replace("~",process.env.HOME||""),!U9(this.storagePath))j9(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=r5(this.storagePath,Q);try{BQ(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=`
251
+ tell application "Terminal"
252
+ do script "cd ${X.workingDir} && ${Z.join(" ")}"
253
+ activate
254
+ end tell
255
+ `;X7("osascript",["-e",V])}else X7("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=X7("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=r5(this.storagePath,Q.name),Z=r5(X,"config.json");if(!U9(X))j9(X,{recursive:!0});await Bun.write(r5(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=r5(this.storagePath,Z);if(Bun.file(V).size===0)continue;let z=wQ(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 H of K.teammates)this.teammates.set(H.teammateId,H)}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 cZ={architect:(Q)=>({name:"architect",teamName:Q,color:"blue",prompt:`You are an architect on the ${Q} team.
256
+ Your role is to design and plan the technical architecture.
257
+ Focus on:
258
+ - System design and component relationships
259
+ - API contracts and interfaces
260
+ - Data models and schemas
261
+ - 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.
262
+ Your role is to write clean, working code based on the architecture.
263
+ Focus on:
264
+ - Implementing the designed architecture
265
+ - Writing tests
266
+ - Following coding standards
267
+ - 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.
268
+ Your role is to review code changes and provide feedback.
269
+ Focus on:
270
+ - Code quality and readability
271
+ - Potential bugs and issues
272
+ - Performance considerations
273
+ - Test coverage`,planModeRequired:!1,status:"pending"}),tester:(Q)=>({name:"tester",teamName:Q,color:"orange",prompt:`You are a tester on the ${Q} team.
274
+ Your role is to ensure features work correctly.
275
+ Focus on:
276
+ - Writing comprehensive tests
277
+ - Finding edge cases
278
+ - Verifying requirements
279
+ - Reporting bugs`,planModeRequired:!1,status:"pending"})};function OQ(){return`teammate_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function lZ(Q){return{...Q,teammateId:OQ(),status:"pending"}}
280
+ export{F6 as a,e5 as b,M9 as c,MQ as d,$7 as e,J7 as f,CQ as g,P9 as h,D9 as i,S9 as j,I9 as k,K7 as l,k9 as m,E9 as n,M6 as o,C6 as p,xQ as q,TQ as r,kQ as s,iQ as t,S6 as u,nQ as v,oQ as w,aQ as x,n9 as y,o9 as z,eQ as A,j7 as B,$X as C,F5 as D,JX as E,zX as F,YX as G,x6 as H,A7 as I,B7 as J,p8 as K,i8 as L,n8 as M,a8 as N,r8 as O,s8 as P,t8 as Q,e8 as R,QQ as S,XQ as T,ZQ as U,VQ as V,$Q as W,JQ as X,zQ as Y,YQ as Z,FZ as _,Q7 as $,RZ as aa,qQ as ba,DZ as ca,SZ as da,IZ as ea,jQ as fa,AQ as ga,bZ as ha,yZ as ia,fZ as ja,uZ as ka,LQ as la,cZ as ma,OQ as na,lZ as oa};