@netlify/agent-runner-cli 1.200.2-bug.6 → 1.200.2-bug.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -384,7 +384,7 @@ For example, you can use the \`pathToFileURL()\` method of the \`url\` core modu
384
384
  `,LF:`
385
385
  `,concatBytes:uY},fct=(t,e)=>{let r=new Uint8Array(t.length+e.length);return r.set(t,0),r.set(e,t.length),r},pct={windowsNewline:new Uint8Array([13,10]),unixNewline:new Uint8Array([10]),LF:10,concatBytes:fct};import{Buffer as hct}from"buffer";var Hbe=(t,e)=>t?void 0:mct.bind(void 0,e),mct=function*(t,e){if(typeof e!="string"&&!Fr(e)&&!hct.isBuffer(e))throw new TypeError(`The \`${t}\` option's transform must use "objectMode: true" to receive as input: ${typeof e}.`);yield e},Wbe=(t,e)=>t?gct.bind(void 0,e):_ct.bind(void 0,e),gct=function*(t,e){Kbe(t,e),yield e},_ct=function*(t,e){if(Kbe(t,e),typeof e!="string"&&!Fr(e))throw new TypeError(`The \`${t}\` option's function must yield a string or an Uint8Array, not ${typeof e}.`);yield e},Kbe=(t,e)=>{if(e==null)throw new TypeError(`The \`${t}\` option's function must not call \`yield ${e}\`.
386
386
  Instead, \`yield\` should either be called with a value, or not be called at all. For example:
387
- if (condition) { yield value; }`)};import{Buffer as yct}from"buffer";import{StringDecoder as Sct}from"string_decoder";var ND=(t,e,r)=>{if(r)return;if(t)return{transform:vct.bind(void 0,new TextEncoder)};let n=new Sct(e);return{transform:Ect.bind(void 0,n),final:bct.bind(void 0,n)}},vct=function*(t,e){yct.isBuffer(e)?yield tu(e):typeof e=="string"?yield t.encode(e):yield e},Ect=function*(t,e){yield Fr(e)?t.write(e):e},bct=function*(t){let e=t.end();e!==""&&(yield e)};import{callbackify as Ybe}from"util";var dY=Ybe(async(t,e,r,n)=>{e.currentIterable=t(...r);try{for await(let i of e.currentIterable)n.push(i)}finally{delete e.currentIterable}}),DD=async function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=Tct}=e[r];for await(let i of n(t))yield*DD(i,e,r+1)},Zbe=async function*(t){for(let[e,{final:r}]of Object.entries(t))yield*wct(r,Number(e),t)},wct=async function*(t,e,r){if(t!==void 0)for await(let n of t())yield*DD(n,r,e+1)},Qbe=Ybe(async({currentIterable:t},e)=>{if(t!==void 0){await(e?t.throw(e):t.return());return}if(e)throw e}),Tct=function*(t){yield t};var fY=(t,e,r,n)=>{try{for(let i of t(...e))r.push(i);n()}catch(i){n(i)}},Jbe=(t,e)=>[...e.flatMap(r=>[...yp(r,t,0)]),...CT(t)],yp=function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=Rct}=e[r];for(let i of n(t))yield*yp(i,e,r+1)},CT=function*(t){for(let[e,{final:r}]of Object.entries(t))yield*Act(r,Number(e),t)},Act=function*(t,e,r){if(t!==void 0)for(let n of t())yield*yp(n,r,e+1)},Rct=function*(t){yield t};var pY=({value:t,value:{transform:e,final:r,writableObjectMode:n,readableObjectMode:i},optionName:s},{encoding:o})=>{let a={},c=ewe(t,o,s),u=_p(e),l=_p(r),d=u?dY.bind(void 0,DD,a):fY.bind(void 0,yp),f=u||l?dY.bind(void 0,Zbe,a):fY.bind(void 0,CT),p=u||l?Qbe.bind(void 0,a):void 0;return{stream:new xct({writableObjectMode:n,writableHighWaterMark:Xbe(n),readableObjectMode:i,readableHighWaterMark:Xbe(i),transform(m,_,S){d([m,c,0],this,S)},flush(m){f([c],this,m)},destroy:p})}},MD=(t,e,r,n)=>{let i=e.filter(({type:o})=>o==="generator"),s=n?i.reverse():i;for(let{value:o,optionName:a}of s){let c=ewe(o,r,a);t=Jbe(c,t)}return t},ewe=({transform:t,final:e,binary:r,writableObjectMode:n,readableObjectMode:i,preserveNewlines:s},o,a)=>{let c={};return[{transform:Hbe(n,a)},ND(r,o,n),kD(r,s,n,c),{transform:t,final:e},{transform:Wbe(i,a)},Gbe({binary:r,preserveNewlines:s,readableObjectMode:i,state:c})].filter(Boolean)};var twe=(t,e)=>{for(let r of Oct(t))Pct(t,r,e)},Oct=t=>new Set(Object.entries(t).filter(([,{direction:e}])=>e==="input").map(([e])=>Number(e))),Pct=(t,e,r)=>{let{stdioItems:n}=t[e],i=n.filter(({contents:a})=>a!==void 0);if(i.length===0)return;if(e!==0){let[{type:a,optionName:c}]=i;throw new TypeError(`Only the \`stdin\` option, not \`${c}\`, can be ${Ul[a]} with synchronous methods.`)}let o=i.map(({contents:a})=>a).map(a=>Ict(a,n));r.input=ET(o)},Ict=(t,e)=>{let r=MD(t,e,"utf8",!0);return Cct(r),ET(r)},Cct=t=>{let e=t.find(r=>typeof r!="string"&&!Fr(r));if(e!==void 0)throw new TypeError(`The \`stdin\` option is invalid: when passing objects as input, a transform must be used to serialize them to strings or Uint8Arrays: ${e}.`)};import{writeFileSync as Mct,appendFileSync as $ct}from"fs";var $D=({stdioItems:t,encoding:e,verboseInfo:r,fdNumber:n})=>n!=="all"&&v_(r,n)&&!Ji.has(e)&&kct(n)&&(t.some(({type:i,value:s})=>i==="native"&&Nct.has(s))||t.every(({type:i})=>Ds.has(i))),kct=t=>t===1||t===2,Nct=new Set(["pipe","overlapped"]),rwe=async(t,e,r,n)=>{for await(let i of t)Dct(e)||iwe(i,r,n)},nwe=(t,e,r)=>{for(let n of t)iwe(n,e,r)},Dct=t=>t._readableState.pipes.length>0,iwe=(t,e,r)=>{let n=ZN(t);za({type:"output",verboseMessage:n,fdNumber:e,verboseInfo:r})};var swe=({fileDescriptors:t,syncResult:{output:e},options:r,isMaxBuffer:n,verboseInfo:i})=>{if(e===null)return{output:Array.from({length:3})};let s={},o=new Set([]);return{output:e.map((c,u)=>Lct({result:c,fileDescriptors:t,fdNumber:u,state:s,outputFiles:o,isMaxBuffer:n,verboseInfo:i},r)),...s}},Lct=({result:t,fileDescriptors:e,fdNumber:r,state:n,outputFiles:i,isMaxBuffer:s,verboseInfo:o},{buffer:a,encoding:c,lines:u,stripFinalNewline:l,maxBuffer:d})=>{if(t===null)return;let f=obe(t,s,d),p=tu(f),{stdioItems:h,objectMode:m}=e[r],_=Uct([p],h,c,n),{serializedResult:S,finalResult:b=S}=Fct({chunks:_,objectMode:m,encoding:c,lines:u,stripFinalNewline:l,fdNumber:r});zct({serializedResult:S,fdNumber:r,state:n,verboseInfo:o,encoding:c,stdioItems:h,objectMode:m});let x=a[r]?b:void 0;try{return n.error===void 0&&jct(S,h,i),x}catch(y){return n.error=y,x}},Uct=(t,e,r,n)=>{try{return MD(t,e,r,!1)}catch(i){return n.error=i,t}},Fct=({chunks:t,objectMode:e,encoding:r,lines:n,stripFinalNewline:i,fdNumber:s})=>{if(e)return{serializedResult:t};if(r==="buffer")return{serializedResult:ET(t)};let o=vSe(t,r);return n[s]?{serializedResult:o,finalResult:lY(o,!i[s],e)}:{serializedResult:o}},zct=({serializedResult:t,fdNumber:e,state:r,verboseInfo:n,encoding:i,stdioItems:s,objectMode:o})=>{if(!$D({stdioItems:s,encoding:i,verboseInfo:n,fdNumber:e}))return;let a=lY(t,!1,o);try{nwe(a,e,n)}catch(c){r.error??=c}},jct=(t,e,r)=>{for(let{path:n,append:i}of e.filter(({type:s})=>ID.has(s))){let s=typeof n=="string"?n:n.toString();i||r.has(s)?$ct(n,t):(r.add(s),Mct(n,t))}};var owe=([,t,e],r)=>{if(r.all)return t===void 0?e:e===void 0?t:Array.isArray(t)?Array.isArray(e)?[...t,...e]:[...t,iu(e,r,"all")]:Array.isArray(e)?[iu(t,r,"all"),...e]:Fr(t)&&Fr(e)?SK([t,e]):`${t}${e}`};import{once as hY}from"events";var awe=async(t,e)=>{let[r,n]=await qct(t);return e.isForcefullyTerminated??=!1,[r,n]},qct=async t=>{let[e,r]=await Promise.allSettled([hY(t,"spawn"),hY(t,"exit")]);return e.status==="rejected"?[]:r.status==="rejected"?cwe(t):r.value},cwe=async t=>{try{return await hY(t,"exit")}catch{return cwe(t)}},uwe=async t=>{let[e,r]=await t;if(!Bct(e,r)&&mY(e,r))throw new Vo;return[e,r]},Bct=(t,e)=>t===void 0&&e===void 0,mY=(t,e)=>t!==0||e!==null;var lwe=({error:t,status:e,signal:r,output:n},{maxBuffer:i})=>{let s=Vct(t,e,r),o=s?.code==="ETIMEDOUT",a=sbe(s,n,i);return{resultError:s,exitCode:e,signal:r,timedOut:o,isMaxBuffer:a}},Vct=(t,e,r)=>t!==void 0?t:mY(e,r)?new Vo:void 0;var dwe=(t,e,r)=>{let{file:n,commandArguments:i,command:s,escapedCommand:o,startTime:a,verboseInfo:c,options:u,fileDescriptors:l}=Hct(t,e,r),d=Yct({file:n,commandArguments:i,options:u,command:s,escapedCommand:o,verboseInfo:c,fileDescriptors:l,startTime:a});return I_(d,c,u)},Hct=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=JN(t,e,r),a=Wct(r),{file:c,commandArguments:u,options:l}=yD(t,e,a);Kct(l);let d=jbe(l,o);return{file:c,commandArguments:u,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},Wct=t=>t.node&&!t.ipc?{...t,ipc:!1}:t,Kct=({ipc:t,ipcInput:e,detached:r,cancelSignal:n})=>{e&&LD("ipcInput"),t&&LD("ipc: true"),r&&LD("detached: true"),n&&LD("cancelSignal")},LD=t=>{throw new TypeError(`The "${t}" option cannot be used with synchronous methods.`)},Yct=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,verboseInfo:s,fileDescriptors:o,startTime:a})=>{let c=Zct({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:o,startTime:a});if(c.failed)return c;let{resultError:u,exitCode:l,signal:d,timedOut:f,isMaxBuffer:p}=lwe(c,r),{output:h,error:m=u}=swe({fileDescriptors:o,syncResult:c,options:r,isMaxBuffer:p,verboseInfo:s}),_=h.map((b,x)=>iu(b,r,x)),S=iu(owe(h,r),r,"all");return Jct({error:m,exitCode:l,signal:d,timedOut:f,isMaxBuffer:p,stdio:_,all:S,options:r,command:n,escapedCommand:i,startTime:a})},Zct=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:s,startTime:o})=>{try{twe(s,r);let a=Qct(r);return Gct(...SD(t,e,a))}catch(a){return P_({error:a,command:n,escapedCommand:i,fileDescriptors:s,options:r,startTime:o,isSync:!0})}},Qct=({encoding:t,maxBuffer:e,...r})=>({...r,encoding:"buffer",maxBuffer:RD(e)}),Jct=({error:t,exitCode:e,signal:r,timedOut:n,isMaxBuffer:i,stdio:s,all:o,options:a,command:c,escapedCommand:u,startTime:l})=>t===void 0?xD({command:c,escapedCommand:u,stdio:s,all:o,ipcOutput:[],options:a,startTime:l}):IT({error:t,command:c,escapedCommand:u,timedOut:n,isCanceled:!1,isGracefullyCanceled:!1,isMaxBuffer:i,isForcefullyTerminated:!1,exitCode:e,signal:r,stdio:s,all:o,ipcOutput:[],options:a,startTime:l,isSync:!0});import{setMaxListeners as Flt}from"events";import{spawn as zlt}from"child_process";import gwe from"process";import{once as gY,on as Xct}from"events";var fwe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0,filter:s}={})=>(w_({methodName:"getOneMessage",isSubprocess:r,ipc:n,isConnected:fD(t)}),eut({anyProcess:t,channel:e,isSubprocess:r,filter:s,reference:i})),eut=async({anyProcess:t,channel:e,isSubprocess:r,filter:n,reference:i})=>{cD(e,i);let s=Ll(t,e,r),o=new AbortController;try{return await Promise.race([tut(s,n,o),rut(s,r,o),nut(s,r,o)])}catch(a){throw T_(t),a}finally{o.abort(),uD(e,i)}},tut=async(t,e,{signal:r})=>{if(e===void 0){let[n]=await gY(t,"message",{signal:r});return n}for await(let[n]of Xct(t,"message",{signal:r}))if(e(n))return n},rut=async(t,e,{signal:r})=>{await gY(t,"disconnect",{signal:r}),Jve(e)},nut=async(t,e,{signal:r})=>{let[n]=await gY(t,"strict:error",{signal:r});throw sD(n,e)};import{once as hwe,on as iut}from"events";var mwe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0}={})=>_Y({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:!r,reference:i}),_Y=({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:i,reference:s})=>{w_({methodName:"getEachMessage",isSubprocess:r,ipc:n,isConnected:fD(t)}),cD(e,s);let o=Ll(t,e,r),a=new AbortController,c={};return sut(t,o,a),out({ipcEmitter:o,isSubprocess:r,controller:a,state:c}),aut({anyProcess:t,channel:e,ipcEmitter:o,isSubprocess:r,shouldAwait:i,controller:a,state:c,reference:s})},sut=async(t,e,r)=>{try{await hwe(e,"disconnect",{signal:r.signal}),r.abort()}catch{}},out=async({ipcEmitter:t,isSubprocess:e,controller:r,state:n})=>{try{let[i]=await hwe(t,"strict:error",{signal:r.signal});n.error=sD(i,e),r.abort()}catch{}},aut=async function*({anyProcess:t,channel:e,ipcEmitter:r,isSubprocess:n,shouldAwait:i,controller:s,state:o,reference:a}){try{for await(let[c]of iut(r,"message",{signal:s.signal}))pwe(o),yield c}catch{pwe(o)}finally{s.abort(),uD(e,a),n||T_(t),i&&await t}},pwe=({error:t})=>{if(t)throw t};var _we=(t,{ipc:e})=>{Object.assign(t,Swe(t,!1,e))},ywe=()=>{let t=gwe,e=!0,r=gwe.channel!==void 0;return{...Swe(t,e,r),getCancelSignal:AEe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})}},Swe=(t,e,r)=>({sendMessage:gD.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getOneMessage:fwe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getEachMessage:mwe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})});import{ChildProcess as cut}from"child_process";import{PassThrough as uut,Readable as lut,Writable as dut,Duplex as fut}from"stream";var vwe=({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,verboseInfo:o})=>{aY(n);let a=new cut;put(a,n),Object.assign(a,{readable:hut,writable:mut,duplex:gut});let c=P_({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,isSync:!1}),u=_ut(c,o,i);return{subprocess:a,promise:u}},put=(t,e)=>{let r=kT(),n=kT(),i=kT(),s=Array.from({length:e.length-3},kT),o=kT(),a=[r,n,i,...s];Object.assign(t,{stdin:r,stdout:n,stderr:i,all:o,stdio:a})},kT=()=>{let t=new uut;return t.end(),t},hut=()=>new lut({read(){}}),mut=()=>new dut({write(){}}),gut=()=>new fut({read(){},write(){}}),_ut=async(t,e,r)=>I_(t,e,r);import{createReadStream as Ewe,createWriteStream as bwe}from"fs";import{Buffer as yut}from"buffer";import{Readable as NT,Writable as Sut,Duplex as vut}from"stream";var Twe=(t,e)=>CD(Eut,t,e,!1),DT=({type:t,optionName:e})=>{throw new TypeError(`The \`${e}\` option cannot be ${Ul[t]}.`)},wwe={fileNumber:DT,generator:pY,asyncGenerator:pY,nodeStream:({value:t})=>({stream:t}),webTransform({value:{transform:t,writableObjectMode:e,readableObjectMode:r}}){let n=e||r;return{stream:vut.fromWeb(t,{objectMode:n})}},duplex:({value:{transform:t}})=>({stream:t}),native(){}},Eut={input:{...wwe,fileUrl:({value:t})=>({stream:Ewe(t)}),filePath:({value:{file:t}})=>({stream:Ewe(t)}),webStream:({value:t})=>({stream:NT.fromWeb(t)}),iterable:({value:t})=>({stream:NT.from(t)}),asyncIterable:({value:t})=>({stream:NT.from(t)}),string:({value:t})=>({stream:NT.from(t)}),uint8Array:({value:t})=>({stream:NT.from(yut.from(t))})},output:{...wwe,fileUrl:({value:t})=>({stream:bwe(t)}),filePath:({value:{file:t,append:e}})=>({stream:bwe(t,e?{flags:"a"}:{})}),webStream:({value:t})=>({stream:Sut.fromWeb(t)}),iterable:DT,asyncIterable:DT,string:DT,uint8Array:DT}};import{on as but,once as Awe}from"events";import{PassThrough as wut,getDefaultHighWaterMark as Tut}from"stream";import{finished as Owe}from"stream/promises";function Sp(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let i of t)SY(i);let e=t.some(({readableObjectMode:i})=>i),r=Aut(t,e),n=new yY({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return n}var Aut=(t,e)=>{if(t.length===0)return Tut(e);let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},yY=class extends wut{#e=new Set([]);#r=new Set([]);#t=new Set([]);#n;#s=Symbol("unpipe");#i=new WeakMap;add(e){if(SY(e),this.#e.has(e))return;this.#e.add(e),this.#n??=Rut(this,this.#e,this.#s);let r=Put({passThroughStream:this,stream:e,streams:this.#e,ended:this.#r,aborted:this.#t,onFinished:this.#n,unpipeEvent:this.#s});this.#i.set(e,r),e.pipe(this,{end:!1})}async remove(e){if(SY(e),!this.#e.has(e))return!1;let r=this.#i.get(e);return r===void 0?!1:(this.#i.delete(e),e.unpipe(this),await r,!0)}},Rut=async(t,e,r)=>{UD(t,Rwe);let n=new AbortController;try{await Promise.race([xut(t,n),Out(t,e,r,n)])}finally{n.abort(),UD(t,-Rwe)}},xut=async(t,{signal:e})=>{try{await Owe(t,{signal:e,cleanup:!0})}catch(r){throw Pwe(t,r),r}},Out=async(t,e,r,{signal:n})=>{for await(let[i]of but(t,"unpipe",{signal:n}))e.has(i)&&i.emit(r)},SY=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},Put=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:s,unpipeEvent:o})=>{UD(t,xwe);let a=new AbortController;try{await Promise.race([Iut(s,e,a),Cut({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:a}),kut({stream:e,streams:r,ended:n,aborted:i,unpipeEvent:o,controller:a})])}finally{a.abort(),UD(t,-xwe)}r.size>0&&r.size===n.size+i.size&&(n.size===0&&i.size>0?vY(t):Nut(t))},Iut=async(t,e,{signal:r})=>{try{await t,r.aborted||vY(e)}catch(n){r.aborted||Pwe(e,n)}},Cut=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:s}})=>{try{await Owe(e,{signal:s,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(o){if(s.aborted||!r.has(e))return;Iwe(o)?i.add(e):Cwe(t,o)}},kut=async({stream:t,streams:e,ended:r,aborted:n,unpipeEvent:i,controller:{signal:s}})=>{if(await Awe(t,i,{signal:s}),!t.readable)return Awe(s,"abort",{signal:s});e.delete(t),r.delete(t),n.delete(t)},Nut=t=>{t.writable&&t.end()},Pwe=(t,e)=>{Iwe(e)?vY(t):Cwe(t,e)},Iwe=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",vY=t=>{(t.readable||t.writable)&&t.destroy()},Cwe=(t,e)=>{t.destroyed||(t.once("error",Dut),t.destroy(e))},Dut=()=>{},UD=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},Rwe=2,xwe=1;import{finished as kwe}from"stream/promises";var k_=(t,e)=>{t.pipe(e),Mut(t,e),$ut(t,e)},Mut=async(t,e)=>{if(!(Bo(t)||Bo(e))){try{await kwe(t,{cleanup:!0,readable:!0,writable:!1})}catch{}EY(e)}},EY=t=>{t.writable&&t.end()},$ut=async(t,e)=>{if(!(Bo(t)||Bo(e))){try{await kwe(e,{cleanup:!0,readable:!1,writable:!0})}catch{}bY(t)}},bY=t=>{t.readable&&t.destroy()};var Nwe=(t,e,r)=>{let n=new Map;for(let[i,{stdioItems:s,direction:o}]of Object.entries(e)){for(let{stream:a}of s.filter(({type:c})=>Ds.has(c)))Lut(t,a,o,i);for(let{stream:a}of s.filter(({type:c})=>!Ds.has(c)))Fut({subprocess:t,stream:a,direction:o,fdNumber:i,pipeGroups:n,controller:r})}for(let[i,s]of n.entries()){let o=s.length===1?s[0]:Sp(s);k_(o,i)}},Lut=(t,e,r,n)=>{r==="output"?k_(t.stdio[n],e):k_(e,t.stdio[n]);let i=Uut[n];i!==void 0&&(t[i]=e),t.stdio[n]=e},Uut=["stdin","stdout","stderr"],Fut=({subprocess:t,stream:e,direction:r,fdNumber:n,pipeGroups:i,controller:s})=>{if(e===void 0)return;zut(e,s);let[o,a]=r==="output"?[e,t.stdio[n]]:[t.stdio[n],e],c=i.get(o)??[];i.set(o,[...c,a])},zut=(t,{signal:e})=>{Bo(t)&&mp(t,jut,e)},jut=2;import{addAbortListener as Vut}from"events";var vp=[];vp.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&vp.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&vp.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var FD=t=>!!t&&typeof t=="object"&&typeof t.removeListener=="function"&&typeof t.emit=="function"&&typeof t.reallyExit=="function"&&typeof t.listeners=="function"&&typeof t.kill=="function"&&typeof t.pid=="number"&&typeof t.on=="function",wY=Symbol.for("signal-exit emitter"),TY=globalThis,qut=Object.defineProperty.bind(Object),AY=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(TY[wY])return TY[wY];qut(TY,wY,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(e,r){this.listeners[e].push(r)}removeListener(e,r){let n=this.listeners[e],i=n.indexOf(r);i!==-1&&(i===0&&n.length===1?n.length=0:n.splice(i,1))}emit(e,r,n){if(this.emitted[e])return!1;this.emitted[e]=!0;let i=!1;for(let s of this.listeners[e])i=s(r,n)===!0||i;return e==="exit"&&(i=this.emit("afterExit",r,n)||i),i}},zD=class{},But=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),RY=class extends zD{onExit(){return()=>{}}load(){}unload(){}},xY=class extends zD{#e=OY.platform==="win32"?"SIGINT":"SIGHUP";#r=new AY;#t;#n;#s;#i={};#o=!1;constructor(e){super(),this.#t=e,this.#i={};for(let r of vp)this.#i[r]=()=>{let n=this.#t.listeners(r),{count:i}=this.#r,s=e;if(typeof s.__signal_exit_emitter__=="object"&&typeof s.__signal_exit_emitter__.count=="number"&&(i+=s.__signal_exit_emitter__.count),n.length===i){this.unload();let o=this.#r.emit("exit",null,r),a=r==="SIGHUP"?this.#e:r;o||e.kill(e.pid,a)}};this.#s=e.reallyExit,this.#n=e.emit}onExit(e,r){if(!FD(this.#t))return()=>{};this.#o===!1&&this.load();let n=r?.alwaysLast?"afterExit":"exit";return this.#r.on(n,e),()=>{this.#r.removeListener(n,e),this.#r.listeners.exit.length===0&&this.#r.listeners.afterExit.length===0&&this.unload()}}load(){if(!this.#o){this.#o=!0,this.#r.count+=1;for(let e of vp)try{let r=this.#i[e];r&&this.#t.on(e,r)}catch{}this.#t.emit=(e,...r)=>this.#c(e,...r),this.#t.reallyExit=e=>this.#a(e)}}unload(){this.#o&&(this.#o=!1,vp.forEach(e=>{let r=this.#i[e];if(!r)throw new Error("Listener not defined for signal: "+e);try{this.#t.removeListener(e,r)}catch{}}),this.#t.emit=this.#n,this.#t.reallyExit=this.#s,this.#r.count-=1)}#a(e){return FD(this.#t)?(this.#t.exitCode=e||0,this.#r.emit("exit",this.#t.exitCode,null),this.#s.call(this.#t,this.#t.exitCode)):0}#c(e,...r){let n=this.#n;if(e==="exit"&&FD(this.#t)){typeof r[0]=="number"&&(this.#t.exitCode=r[0]);let i=n.call(this.#t,e,...r);return this.#r.emit("exit",this.#t.exitCode,null),i}else return n.call(this.#t,e,...r)}},OY=globalThis.process,{onExit:Dwe,load:Eir,unload:bir}=But(FD(OY)?new xY(OY):new RY);var Mwe=(t,{cleanup:e,detached:r},{signal:n})=>{if(!e||r)return;let i=Dwe(()=>{t.kill()});Vut(n,()=>{i()})};var Lwe=({source:t,sourcePromise:e,boundOptions:r,createNested:n},...i)=>{let s=QN(),{destination:o,destinationStream:a,destinationError:c,from:u,unpipeSignal:l}=Gut(r,n,i),{sourceStream:d,sourceError:f}=Wut(t,u),{options:p,fileDescriptors:h}=qa.get(t);return{sourcePromise:e,sourceStream:d,sourceOptions:p,sourceError:f,destination:o,destinationStream:a,destinationError:c,unpipeSignal:l,fileDescriptors:h,startTime:s}},Gut=(t,e,r)=>{try{let{destination:n,pipeOptions:{from:i,to:s,unpipeSignal:o}={}}=Hut(t,e,...r),a=aD(n,s);return{destination:n,destinationStream:a,from:i,unpipeSignal:o}}catch(n){return{destinationError:n}}},Hut=(t,e,r,...n)=>{if(Array.isArray(r))return{destination:e($we,t)(r,...n),pipeOptions:t};if(typeof r=="string"||r instanceof URL||_K(r)){if(Object.keys(t).length>0)throw new TypeError('Please use .pipe("file", ..., options) or .pipe(execa("file", ..., options)) instead of .pipe(options)("file", ...).');let[i,s,o]=jN(r,...n);return{destination:e($we)(i,s,o),pipeOptions:o}}if(qa.has(r)){if(Object.keys(t).length>0)throw new TypeError("Please use .pipe(options)`command` or .pipe($(options)`command`) instead of .pipe(options)($`command`).");return{destination:r,pipeOptions:n[0]}}throw new TypeError(`The first argument must be a template string, an options object, or an Execa subprocess: ${r}`)},$we=({options:t})=>({options:{...t,stdin:"pipe",piped:!0}}),Wut=(t,e)=>{try{return{sourceStream:A_(t,e)}}catch(r){return{sourceError:r}}};var Fwe=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n,fileDescriptors:i,sourceOptions:s,startTime:o})=>{let a=Kut({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n});if(a!==void 0)throw PY({error:a,fileDescriptors:i,sourceOptions:s,startTime:o})},Kut=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n})=>{if(e!==void 0&&n!==void 0)return n;if(n!==void 0)return bY(t),n;if(e!==void 0)return EY(r),e},PY=({error:t,fileDescriptors:e,sourceOptions:r,startTime:n})=>P_({error:t,command:Uwe,escapedCommand:Uwe,fileDescriptors:e,options:r,startTime:n,isSync:!1}),Uwe="source.pipe(destination)";var zwe=async t=>{let[{status:e,reason:r,value:n=r},{status:i,reason:s,value:o=s}]=await t;if(o.pipedFrom.includes(n)||o.pipedFrom.push(n),i==="rejected")throw o;if(e==="rejected")throw n;return o};import{finished as Yut}from"stream/promises";var jwe=(t,e,r)=>{let n=jD.has(e)?Qut(t,e):Zut(t,e);return mp(t,Xut,r.signal),mp(e,elt,r.signal),Jut(e),n},Zut=(t,e)=>{let r=Sp([t]);return k_(r,e),jD.set(e,r),r},Qut=(t,e)=>{let r=jD.get(e);return r.add(t),r},Jut=async t=>{try{await Yut(t,{cleanup:!0,readable:!1,writable:!0})}catch{}jD.delete(t)},jD=new WeakMap,Xut=2,elt=1;import{aborted as tlt}from"util";var qwe=(t,e)=>t===void 0?[]:[rlt(t,e)],rlt=async(t,{sourceStream:e,mergedStream:r,fileDescriptors:n,sourceOptions:i,startTime:s})=>{await tlt(t,e),await r.remove(e);let o=new Error("Pipe canceled by `unpipeSignal` option.");throw PY({error:o,fileDescriptors:n,sourceOptions:i,startTime:s})};var qD=(t,...e)=>{if(yr(e[0]))return qD.bind(void 0,{...t,boundOptions:{...t.boundOptions,...e[0]}});let{destination:r,...n}=Lwe(t,...e),i=nlt({...n,destination:r});return i.pipe=qD.bind(void 0,{...t,source:r,sourcePromise:i,boundOptions:{}}),i},nlt=async({sourcePromise:t,sourceStream:e,sourceOptions:r,sourceError:n,destination:i,destinationStream:s,destinationError:o,unpipeSignal:a,fileDescriptors:c,startTime:u})=>{let l=ilt(t,i);Fwe({sourceStream:e,sourceError:n,destinationStream:s,destinationError:o,fileDescriptors:c,sourceOptions:r,startTime:u});let d=new AbortController;try{let f=jwe(e,s,d);return await Promise.race([zwe(l),...qwe(a,{sourceStream:e,mergedStream:f,sourceOptions:r,fileDescriptors:c,startTime:u})])}finally{d.abort()}},ilt=(t,e)=>Promise.allSettled([t,e]);import{setImmediate as dlt}from"timers/promises";import{on as slt}from"events";import{getDefaultHighWaterMark as olt}from"stream";var BD=({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:n,encoding:i,preserveNewlines:s})=>{let o=new AbortController;return alt(e,o),Vwe({stream:t,controller:o,binary:r,shouldEncode:!t.readableObjectMode&&n,encoding:i,shouldSplit:!t.readableObjectMode,preserveNewlines:s})},alt=async(t,e)=>{try{await t}catch{}finally{e.abort()}},IY=({stream:t,onStreamEnd:e,lines:r,encoding:n,stripFinalNewline:i,allMixed:s})=>{let o=new AbortController;clt(e,o,t);let a=t.readableObjectMode&&!s;return Vwe({stream:t,controller:o,binary:n==="buffer",shouldEncode:!a,encoding:n,shouldSplit:!a&&r,preserveNewlines:!i})},clt=async(t,e,r)=>{try{await t}catch{r.destroy()}finally{e.abort()}},Vwe=({stream:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})=>{let a=slt(t,"data",{signal:e.signal,highWaterMark:Bwe,highWatermark:Bwe});return ult({onStdoutChunk:a,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})},CY=olt(!0),Bwe=CY,ult=async function*({onStdoutChunk:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o}){let a=llt({binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o});try{for await(let[c]of t)yield*yp(c,a,0)}catch(c){if(!e.signal.aborted)throw c}finally{yield*CT(a)}},llt=({binary:t,shouldEncode:e,encoding:r,shouldSplit:n,preserveNewlines:i})=>[ND(t,r,!e),kD(t,i,!n,{})].filter(Boolean);var Gwe=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,buffer:i,maxBuffer:s,lines:o,allMixed:a,stripFinalNewline:c,verboseInfo:u,streamInfo:l})=>{let d=flt({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:a,verboseInfo:u,streamInfo:l});if(!i){await Promise.all([plt(t),d]);return}let f=cY(c,r),p=IY({stream:t,onStreamEnd:e,lines:o,encoding:n,stripFinalNewline:f,allMixed:a}),[h]=await Promise.all([hlt({stream:t,iterable:p,fdNumber:r,encoding:n,maxBuffer:s,lines:o}),d]);return h},flt=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:i,verboseInfo:s,streamInfo:{fileDescriptors:o}})=>{if(!$D({stdioItems:o[r]?.stdioItems,encoding:n,verboseInfo:s,fdNumber:r}))return;let a=IY({stream:t,onStreamEnd:e,lines:!0,encoding:n,stripFinalNewline:!0,allMixed:i});await rwe(a,t,r,s)},plt=async t=>{await dlt(),t.readableFlowing===null&&t.resume()},hlt=async({stream:t,stream:{readableObjectMode:e},iterable:r,fdNumber:n,encoding:i,maxBuffer:s,lines:o})=>{try{return e||o?await wD(r,{maxBuffer:s}):i==="buffer"?new Uint8Array(await TD(r,{maxBuffer:s})):await O_(r,{maxBuffer:s})}catch(a){return Hwe(rbe({error:a,stream:t,readableObjectMode:e,lines:o,encoding:i,fdNumber:n}))}},kY=async t=>{try{return await t}catch(e){return Hwe(e)}},Hwe=({bufferedData:t})=>ySe(t)?new Uint8Array(t):t;import{finished as mlt}from"stream/promises";var MT=async(t,e,r,{isSameDirection:n,stopOnExit:i=!1}={})=>{let s=glt(t,r),o=new AbortController;try{await Promise.race([...i?[r.exitPromise]:[],mlt(t,{cleanup:!0,signal:o.signal})])}catch(a){s.stdinCleanedUp||Slt(a,e,r,n)}finally{o.abort()}},glt=(t,{originalStreams:[e],subprocess:r})=>{let n={stdinCleanedUp:!1};return t===e&&_lt(t,r,n),n},_lt=(t,e,r)=>{let{_destroy:n}=t;t._destroy=(...i)=>{ylt(e,r),n.call(t,...i)}},ylt=({exitCode:t,signalCode:e},r)=>{(t!==null||e!==null)&&(r.stdinCleanedUp=!0)},Slt=(t,e,r,n)=>{if(!vlt(t,e,r,n))throw t},vlt=(t,e,r,n=!0)=>r.propagating?Wwe(t)||VD(t):(r.propagating=!0,NY(r,e)===n?Wwe(t):VD(t)),NY=({fileDescriptors:t},e)=>e!=="all"&&t[e].direction==="input",VD=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",Wwe=t=>t?.code==="EPIPE";var Kwe=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>t.stdio.map((c,u)=>DY({stream:c,fdNumber:u,encoding:e,buffer:r[u],maxBuffer:n[u],lines:i[u],allMixed:!1,stripFinalNewline:s,verboseInfo:o,streamInfo:a})),DY=async({stream:t,fdNumber:e,encoding:r,buffer:n,maxBuffer:i,lines:s,allMixed:o,stripFinalNewline:a,verboseInfo:c,streamInfo:u})=>{if(!t)return;let l=MT(t,e,u);if(NY(u,e)){await l;return}let[d]=await Promise.all([Gwe({stream:t,onStreamEnd:l,fdNumber:e,encoding:r,buffer:n,maxBuffer:i,lines:s,allMixed:o,stripFinalNewline:a,verboseInfo:c,streamInfo:u}),l]);return d};var Ywe=({stdout:t,stderr:e},{all:r})=>r&&(t||e)?Sp([t,e].filter(Boolean)):void 0,Zwe=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>DY({...Elt(t,r),fdNumber:"all",encoding:e,maxBuffer:n[1]+n[2],lines:i[1]||i[2],allMixed:blt(t),stripFinalNewline:s,verboseInfo:o,streamInfo:a}),Elt=({stdout:t,stderr:e,all:r},[,n,i])=>{let s=n||i;return s?n?i?{stream:r,buffer:s}:{stream:t,buffer:s}:{stream:e,buffer:s}:{stream:r,buffer:s}},blt=({all:t,stdout:e,stderr:r})=>t&&e&&r&&e.readableObjectMode!==r.readableObjectMode;import{once as wlt}from"events";var Qwe=t=>v_(t,"ipc"),Jwe=(t,e)=>{let r=ZN(t);za({type:"ipc",verboseMessage:r,fdNumber:"ipc",verboseInfo:e})};var Xwe=async({subprocess:t,buffer:e,maxBuffer:r,ipc:n,ipcOutput:i,verboseInfo:s})=>{if(!n)return i;let o=Qwe(s),a=ru(e,"ipc"),c=ru(r,"ipc");for await(let u of _Y({anyProcess:t,channel:t.channel,isSubprocess:!1,ipc:n,shouldAwait:!1,reference:!0}))a&&(nbe(t,i,c),i.push(u)),o&&Jwe(u,s);return i},eTe=async(t,e)=>(await Promise.allSettled([t]),e);var tTe=async({subprocess:t,options:{encoding:e,buffer:r,maxBuffer:n,lines:i,timeoutDuration:s,cancelSignal:o,gracefulCancel:a,forceKillAfterDelay:c,stripFinalNewline:u,ipc:l,ipcInput:d},context:f,verboseInfo:p,fileDescriptors:h,originalStreams:m,onInternalError:_,controller:S})=>{let b=awe(t,f),x={originalStreams:m,fileDescriptors:h,subprocess:t,exitPromise:b,propagating:!1},y=Kwe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:x}),v=Zwe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:x}),T=[],I=Xwe({subprocess:t,buffer:r,maxBuffer:n,ipc:l,ipcOutput:T,verboseInfo:p}),P=Tlt(m,t,x),C=Alt(h,x);try{return await Promise.race([Promise.all([{},uwe(b),Promise.all(y),v,I,MEe(t,d),...P,...C]),_,Rlt(t,S),...IEe(t,s,f,S),...Qve({subprocess:t,cancelSignal:o,gracefulCancel:a,context:f,controller:S}),...OEe({subprocess:t,cancelSignal:o,gracefulCancel:a,forceKillAfterDelay:c,context:f,controller:S})])}catch(k){return f.terminationReason??="other",Promise.all([{error:k},b,Promise.all(y.map(w=>kY(w))),kY(v),eTe(I,T),Promise.allSettled(P),Promise.allSettled(C)])}},Tlt=(t,e,r)=>t.map((n,i)=>n===e.stdio[i]?void 0:MT(n,i,r)),Alt=(t,e)=>t.flatMap(({stdioItems:r},n)=>r.filter(({value:i,stream:s=i})=>Ho(s,{checkOpen:!1})&&!Bo(s)).map(({type:i,value:s,stream:o=s})=>MT(o,n,e,{isSameDirection:Ds.has(i),stopOnExit:i==="native"}))),Rlt=async(t,{signal:e})=>{let[r]=await wlt(t,"error",{signal:e});throw r};var rTe=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),$T=(t,e,r)=>{let n=t[r];n.has(e)||n.set(e,[]);let i=n.get(e),s=ja();return i.push(s),{resolve:s.resolve.bind(s),promises:i}},N_=async({resolve:t,promises:e},r)=>{t();let[n]=await Promise.race([Promise.allSettled([!0,r]),Promise.all([!1,...e])]);return!n};import{Readable as xlt}from"stream";import{callbackify as Olt}from"util";import{finished as nTe}from"stream/promises";var MY=async t=>{if(t!==void 0)try{await $Y(t)}catch{}},iTe=async t=>{if(t!==void 0)try{await LY(t)}catch{}},$Y=async t=>{await nTe(t,{cleanup:!0,readable:!1,writable:!0})},LY=async t=>{await nTe(t,{cleanup:!0,readable:!0,writable:!1})},GD=async(t,e)=>{if(await t,e)throw e},HD=(t,e,r)=>{r&&!VD(r)?t.destroy(r):e&&t.destroy()};var sTe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,binary:i=!0,preserveNewlines:s=!0}={})=>{let o=i||Ji.has(r),{subprocessStdout:a,waitReadableDestroy:c}=UY(t,n,e),{readableEncoding:u,readableObjectMode:l,readableHighWaterMark:d}=FY(a,o),{read:f,onStdoutDataDone:p}=zY({subprocessStdout:a,subprocess:t,binary:o,encoding:r,preserveNewlines:s}),h=new xlt({read:f,destroy:Olt(qY.bind(void 0,{subprocessStdout:a,subprocess:t,waitReadableDestroy:c})),highWaterMark:d,objectMode:l,encoding:u});return jY({subprocessStdout:a,onStdoutDataDone:p,readable:h,subprocess:t}),h},UY=(t,e,r)=>{let n=A_(t,e),i=$T(r,n,"readableDestroy");return{subprocessStdout:n,waitReadableDestroy:i}},FY=({readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r},n)=>n?{readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r}:{readableEncoding:t,readableObjectMode:!0,readableHighWaterMark:CY},zY=({subprocessStdout:t,subprocess:e,binary:r,encoding:n,preserveNewlines:i})=>{let s=ja(),o=BD({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:!r,encoding:n,preserveNewlines:i});return{read(){Plt(this,o,s)},onStdoutDataDone:s}},Plt=async(t,e,r)=>{try{let{value:n,done:i}=await e.next();i?r.resolve():t.push(n)}catch{}},jY=async({subprocessStdout:t,onStdoutDataDone:e,readable:r,subprocess:n,subprocessStdin:i})=>{try{await LY(t),await n,await MY(i),await e,r.readable&&r.push(null)}catch(s){await MY(i),oTe(r,s)}},qY=async({subprocessStdout:t,subprocess:e,waitReadableDestroy:r},n)=>{await N_(r,e)&&(oTe(t,n),await GD(e,n))},oTe=(t,e)=>{HD(t,t.readable,e)};import{Writable as Ilt}from"stream";import{callbackify as aTe}from"util";var cTe=({subprocess:t,concurrentStreams:e},{to:r}={})=>{let{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}=BY(t,r,e),o=new Ilt({...VY(n,t,i),destroy:aTe(HY.bind(void 0,{subprocessStdin:n,subprocess:t,waitWritableFinal:i,waitWritableDestroy:s})),highWaterMark:n.writableHighWaterMark,objectMode:n.writableObjectMode});return GY(n,o),o},BY=(t,e,r)=>{let n=aD(t,e),i=$T(r,n,"writableFinal"),s=$T(r,n,"writableDestroy");return{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}},VY=(t,e,r)=>({write:Clt.bind(void 0,t),final:aTe(klt.bind(void 0,t,e,r))}),Clt=(t,e,r,n)=>{t.write(e,r)?n():t.once("drain",n)},klt=async(t,e,r)=>{await N_(r,e)&&(t.writable&&t.end(),await e)},GY=async(t,e,r)=>{try{await $Y(t),e.writable&&e.end()}catch(n){await iTe(r),uTe(e,n)}},HY=async({subprocessStdin:t,subprocess:e,waitWritableFinal:r,waitWritableDestroy:n},i)=>{await N_(r,e),await N_(n,e)&&(uTe(t,i),await GD(e,i))},uTe=(t,e)=>{HD(t,t.writable,e)};import{Duplex as Nlt}from"stream";import{callbackify as Dlt}from"util";var lTe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,to:i,binary:s=!0,preserveNewlines:o=!0}={})=>{let a=s||Ji.has(r),{subprocessStdout:c,waitReadableDestroy:u}=UY(t,n,e),{subprocessStdin:l,waitWritableFinal:d,waitWritableDestroy:f}=BY(t,i,e),{readableEncoding:p,readableObjectMode:h,readableHighWaterMark:m}=FY(c,a),{read:_,onStdoutDataDone:S}=zY({subprocessStdout:c,subprocess:t,binary:a,encoding:r,preserveNewlines:o}),b=new Nlt({read:_,...VY(l,t,d),destroy:Dlt(Mlt.bind(void 0,{subprocessStdout:c,subprocessStdin:l,subprocess:t,waitReadableDestroy:u,waitWritableFinal:d,waitWritableDestroy:f})),readableHighWaterMark:m,writableHighWaterMark:l.writableHighWaterMark,readableObjectMode:h,writableObjectMode:l.writableObjectMode,encoding:p});return jY({subprocessStdout:c,onStdoutDataDone:S,readable:b,subprocess:t,subprocessStdin:l}),GY(l,b,c),b},Mlt=async({subprocessStdout:t,subprocessStdin:e,subprocess:r,waitReadableDestroy:n,waitWritableFinal:i,waitWritableDestroy:s},o)=>{await Promise.all([qY({subprocessStdout:t,subprocess:r,waitReadableDestroy:n},o),HY({subprocessStdin:e,subprocess:r,waitWritableFinal:i,waitWritableDestroy:s},o)])};var WY=(t,e,{from:r,binary:n=!1,preserveNewlines:i=!1}={})=>{let s=n||Ji.has(e),o=A_(t,r),a=BD({subprocessStdout:o,subprocess:t,binary:s,shouldEncode:!0,encoding:e,preserveNewlines:i});return $lt(a,o,t)},$lt=async function*(t,e,r){try{yield*t}finally{e.readable&&e.destroy(),await r}};var dTe=(t,{encoding:e})=>{let r=rTe();t.readable=sTe.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.writable=cTe.bind(void 0,{subprocess:t,concurrentStreams:r}),t.duplex=lTe.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.iterable=WY.bind(void 0,t,e),t[Symbol.asyncIterator]=WY.bind(void 0,t,e,{})};var fTe=(t,e)=>{for(let[r,n]of Ult){let i=n.value.bind(e);Reflect.defineProperty(t,r,{...n,value:i})}},Llt=(async()=>{})().constructor.prototype,Ult=["then","catch","finally"].map(t=>[t,Reflect.getOwnPropertyDescriptor(Llt,t)]);var pTe=(t,e,r,n)=>{let{file:i,commandArguments:s,command:o,escapedCommand:a,startTime:c,verboseInfo:u,options:l,fileDescriptors:d}=jlt(t,e,r),{subprocess:f,promise:p}=Blt({file:i,commandArguments:s,options:l,startTime:c,verboseInfo:u,command:o,escapedCommand:a,fileDescriptors:d});return f.pipe=qD.bind(void 0,{source:f,sourcePromise:p,boundOptions:{},createNested:n}),fTe(f,p),qa.set(f,{options:l,fileDescriptors:d}),f},jlt=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=JN(t,e,r),{file:a,commandArguments:c,options:u}=yD(t,e,r),l=qlt(u),d=Twe(l,o);return{file:a,commandArguments:c,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},qlt=({timeout:t,signal:e,...r})=>{if(e!==void 0)throw new TypeError('The "signal" option has been renamed to "cancelSignal" instead.');return{...r,timeoutDuration:t}},Blt=({file:t,commandArguments:e,options:r,startTime:n,verboseInfo:i,command:s,escapedCommand:o,fileDescriptors:a})=>{let c;try{c=zlt(...SD(t,e,r))}catch(h){return vwe({error:h,command:s,escapedCommand:o,fileDescriptors:a,options:r,startTime:n,verboseInfo:i})}let u=new AbortController;Flt(Number.POSITIVE_INFINITY,u.signal);let l=[...c.stdio];Nwe(c,a,u),Mwe(c,r,u);let d={},f=ja();c.kill=Yve.bind(void 0,{kill:c.kill.bind(c),options:r,onInternalError:f,context:d,controller:u}),c.all=Ywe(c,r),dTe(c,r),_we(c,r);let p=Vlt({subprocess:c,options:r,startTime:n,verboseInfo:i,fileDescriptors:a,originalStreams:l,command:s,escapedCommand:o,context:d,onInternalError:f,controller:u});return{subprocess:c,promise:p}},Vlt=async({subprocess:t,options:e,startTime:r,verboseInfo:n,fileDescriptors:i,originalStreams:s,command:o,escapedCommand:a,context:c,onInternalError:u,controller:l})=>{let[d,[f,p],h,m,_]=await tTe({subprocess:t,options:e,context:c,verboseInfo:n,fileDescriptors:i,originalStreams:s,onInternalError:u,controller:l});l.abort(),u.resolve();let S=h.map((y,v)=>iu(y,e,v)),b=iu(m,e,"all"),x=Glt({errorInfo:d,exitCode:f,signal:p,stdio:S,all:b,ipcOutput:_,context:c,options:e,command:o,escapedCommand:a,startTime:r});return I_(x,n,e)},Glt=({errorInfo:t,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:s,context:o,options:a,command:c,escapedCommand:u,startTime:l})=>"error"in t?IT({error:t.error,command:c,escapedCommand:u,timedOut:o.terminationReason==="timeout",isCanceled:o.terminationReason==="cancel"||o.terminationReason==="gracefulCancel",isGracefullyCanceled:o.terminationReason==="gracefulCancel",isMaxBuffer:t.error instanceof Ba,isForcefullyTerminated:o.isForcefullyTerminated,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:s,options:a,startTime:l,isSync:!1}):xD({command:c,escapedCommand:u,stdio:n,all:i,ipcOutput:s,options:a,startTime:l});var WD=(t,e)=>{let r=Object.fromEntries(Object.entries(e).map(([n,i])=>[n,Hlt(n,t[n],i)]));return{...t,...r}},Hlt=(t,e,r)=>Wlt.has(t)&&yr(e)&&yr(r)?{...e,...r}:r,Wlt=new Set(["env",...wK]);var Fl=(t,e,r,n)=>{let i=(o,a,c)=>Fl(o,a,r,c),s=(...o)=>Klt({mapArguments:t,deepOptions:r,boundOptions:e,setBoundExeca:n,createNested:i},...o);return n!==void 0&&n(s,i,e),s},Klt=({mapArguments:t,deepOptions:e={},boundOptions:r={},setBoundExeca:n,createNested:i},s,...o)=>{if(yr(s))return i(t,WD(r,s),n);let{file:a,commandArguments:c,options:u,isSync:l}=Ylt({mapArguments:t,firstArgument:s,nextArguments:o,deepOptions:e,boundOptions:r});return l?dwe(a,c,u):pTe(a,c,u,i)},Ylt=({mapArguments:t,firstArgument:e,nextArguments:r,deepOptions:n,boundOptions:i})=>{let s=TSe(e)?ASe(e,r):[e,...r],[o,a,c]=jN(...s),u=WD(WD(n,i),c),{file:l=o,commandArguments:d=a,options:f=u,isSync:p=!1}=t({file:o,commandArguments:a,options:u});return{file:l,commandArguments:d,options:f,isSync:p}};var hTe=({file:t,commandArguments:e})=>gTe(t,e),mTe=({file:t,commandArguments:e})=>({...gTe(t,e),isSync:!0}),gTe=(t,e)=>{if(e.length>0)throw new TypeError(`The command and its arguments must be passed as a single string: ${t} ${e}.`);let[r,...n]=Zlt(t);return{file:r,commandArguments:n}},Zlt=t=>{if(typeof t!="string")throw new TypeError(`The command must be a string: ${String(t)}.`);let e=t.trim();if(e==="")return[];let r=[];for(let n of e.split(Qlt)){let i=r.at(-1);i&&i.endsWith("\\")?r[r.length-1]=`${i.slice(0,-1)} ${n}`:r.push(n)}return r},Qlt=/ +/g;var _Te=(t,e,r)=>{t.sync=e(Jlt,r),t.s=t.sync},yTe=({options:t})=>STe(t),Jlt=({options:t})=>({...STe(t),isSync:!0}),STe=t=>({options:{...Xlt(t),...t}}),Xlt=({input:t,inputFile:e,stdio:r})=>t===void 0&&e===void 0&&r===void 0?{stdin:"inherit"}:{},vTe={preferLocal:!0};var ETe=Fl(()=>({})),far=Fl(()=>({isSync:!0})),bTe=Fl(hTe),par=Fl(mTe),har=Fl(kEe),mar=Fl(yTe,{},vTe,_Te),{sendMessage:gar,getOneMessage:_ar,getEachMessage:yar,getCancelSignal:Sar}=ywe();var wTe=!1,TTe,edt=t=>{TTe??=t},ATe=t=>{wTe=!0,edt(t)},kn=()=>wTe,su=()=>TTe,RTe=t=>{switch(t){case"SIGTERM":case"SIGINT":return t;case void 0:return"interrupted";default:return}};var LT=null,xTe=t=>(LT&&LT.destroy(),LT=new Ms({totalAllowedTime:t}),LT),OTe=()=>LT;var Ms=class{constructor({totalAllowedTime:e}){this.withStageTimer=async(e,r,n,{interruptible:i=!0}={})=>{if(this.isTimeExpired())throw new Error(`${e} stage did not complete in the allowed time. Time has already expired.`);if(i&&kn())throw new Error(`Aborting ${e} stage \u2014 shutting down`);let s=this.onTimesUp(()=>{throw new Error(`${e} stage did not complete in the allowed time.`)}),o=null,a=null;n!==void 0&&(a=new Promise((l,d)=>{o=setTimeout(()=>{d(new Error(`${e} stage exceeded its maximum duration of ${n}ms`))},n)}));let c=Date.now(),u="success";try{return await IC({stage:e},async()=>a?await Promise.race([r(),a]):await r())}catch(l){throw u="failure",l}finally{Y.timing("stage.duration",Date.now()-c,{stage:e,outcome:u}),s(),o&&clearTimeout(o)}};this.startTime=Date.now(),this.totalAllowedTime=e,this.globalTimeoutId=null,this.subscribers=[],this.hasTimedOut=!1,this.setupGlobalTimeout()}getElapsedTime(){return Date.now()-this.startTime}getRemainingTime(){let e=this.getElapsedTime(),r=this.totalAllowedTime-e;return Math.max(0,r)}isTimeExpired(){return this.getRemainingTime()===0||this.hasTimedOut}setupGlobalTimeout(){this.globalTimeoutId&&clearTimeout(this.globalTimeoutId),this.globalTimeoutId=setTimeout(()=>{this.notifyTimeUp()},this.totalAllowedTime)}notifyTimeUp(){this.hasTimedOut=!0;for(let e=this.subscribers.length-1;e>=0;e--)try{this.subscribers[e]()}catch(r){console.error("TimeKeeper: Error in time up callback:",r)}}onTimesUp(e){if(this.subscribers.push(e),this.hasTimedOut)try{e()}catch(r){console.error("TimeKeeper: Error in time up callback:",r)}return()=>{let r=this.subscribers.indexOf(e);r>-1&&this.subscribers.splice(r,1)}}off(e){let r=this.subscribers.indexOf(e);r>-1&&this.subscribers.splice(r,1)}clearSubscribers(){this.subscribers.length=0}getSubscriberCount(){return this.subscribers.length}destroy(){this.globalTimeoutId&&(clearTimeout(this.globalTimeoutId),this.globalTimeoutId=null),this.clearSubscribers()}static{this.timeUnits={seconds:e=>e*1e3,minutes:e=>e*60*1e3,hours:e=>e*60*60*1e3}}};var PTe={name:"@netlify/agent-runner-cli",type:"module",version:"1.200.2-bug.6",description:"CLI tool for running Netlify agents",main:"./dist/index.js",types:"./dist/index.d.ts",exports:"./dist/index.js",bin:{"agent-runner-cli":"./dist/bin.js","agent-runner-cli-local":"./dist/bin-local.js"},files:["dist/**/*.js","dist/**/*.d.ts","dist/skills/**","patches","scripts"],scripts:{prebuild:"rm -rf dist",build:"tsup",dev:"tsup --watch",prepare:"husky install node_modules/@netlify/eslint-config-node/.husky/",prepublishOnly:"npm ci && npm test",prepack:"npm run build",test:"run-s build format test:dev",format:"run-s build format:check-fix:*","format:ci":"run-s build format:check:*","format:check-fix:lint":"run-e format:check:lint format:fix:lint","format:check:lint":'eslint --cache --format=codeframe --max-warnings=0 "{src,scripts,test,.github}/**/*.{js,ts,md,html}"',"format:fix:lint":'eslint --fix --cache --format=codeframe --max-warnings=0 "{src,scripts,test,.github}/**/*.{js,ts,md,html}"',"format:check-fix:prettier":"run-e format:check:prettier format:fix:prettier","format:check:prettier":'prettier --check --ignore-path .gitignore --loglevel=warn "{src,scripts,test,.github}/**/*.{js,ts,md,yml,json,html}" "*.{js,ts,yml,json,html}" ".*.{js,ts,yml,json,html}" "!**/package-lock.json" "!package-lock.json" "!src/skills/**/*.md"',"format:fix:prettier":'prettier --write --ignore-path .gitignore --loglevel=warn "{src,scripts,test,.github}/**/*.{js,ts,md,yml,json,html}" "*.{js,ts,yml,json,html}" ".*.{js,ts,yml,json,html}" "!**/package-lock.json" "!package-lock.json" "!src/skills/**/*.md"',"test:dev":"run-s build test:dev:*","test:ci":"run-s build test:ci:*","test:dev:vitest":"LOG=0 vitest --exclude '**/integration/**'","test:ci:vitest":"LOG=0 vitest run --coverage --exclude '**/integration/**'","test:smoke":"node scripts/smoke-dist.js","test:integration":"vitest run test/integration/","test:integration:codex":"vitest run test/integration/codex.test.ts","test:integration:claude":"vitest run test/integration/claude.test.ts","test:integration:gemini":"vitest run test/integration/gemini.test.ts","test:integration:opencode":"vitest run test/integration/opencode.test.ts","test:integration:muse":"vitest run test/integration/muse.test.ts","test:integration:skill-invocation":"vitest run test/integration/skill-invocation.test.ts","check:types":"tsc --noEmit",postinstall:"node scripts/postinstall.js"},engines:{node:">=22"},keywords:[],license:"MIT",repository:"netlify/agent-runner-cli",bugs:{url:"https://github.com/netlify/agent-runner-cli/issues"},author:"Netlify Inc.",directories:{test:"test"},devDependencies:{"@commitlint/cli":"^20.0.0","@commitlint/config-conventional":"^20.0.0","@eslint/compat":"^2.0.0","@eslint/js":"^10.0.1","@netlify/axis":"^1.21.0","@netlify/eslint-config-node":"^7.0.1","@types/node":"^24.5.0","@typescript-eslint/eslint-plugin":"^8.0.0","@typescript-eslint/parser":"^8.0.0","@vitest/coverage-v8":"^4.1.5","@vitest/eslint-plugin":"^1.6.6",eslint:"^10.5.0","eslint-config-prettier":"^10.1.8","eslint-plugin-n":"^17.0.0",husky:"^9.0.0",jiti:"^2.7.0","patch-package":"^8.0.0",tsup:"^8.5.0",typescript:"^5.0.0","typescript-eslint":"^8.44.0",vitest:"^4.0.16"},dependencies:{"@anthropic-ai/claude-code":"^2.1.295","@anthropic-ai/sdk":"^0.128.0","@google/gemini-cli":"0.42.0","@modelcontextprotocol/sdk":"^1.29.0","@netlify/cache-utils":"^6.0.5","@netlify/database-proxy":"^0.2.2","@netlify/otel":"^6.0.6","@netlify/ts-cli":"^1.2.0","@openai/codex":"0.162.0","@opentelemetry/api":"^1.9.0","@opentelemetry/exporter-trace-otlp-grpc":"0.218.0",execa:"^9.6.1",fastify:"5.12.5",minimist:"^1.2.8",openai:"7.31.0",zod:"^4.4.3"}};var idt=rdt(import.meta.url),sdt=ou.dirname(idt),odt=ndt(import.meta.url),D_=ne("shell"),KY=new Set,ITe={preferLocal:!0},yt=(t,e,r)=>{let[n,i]=adt(e,r),s={...ITe,...i},o=ETe(t,n,s);kTe(o,s),MTe(o);let a=r?.idleTimeout;return a&&a>0&&DTe(o,a),o},CTe=(t,e)=>{let r={...ITe,...e},n=bTe(t,r);return kTe(n,r),MTe(n),e?.idleTimeout&&e.idleTimeout>0&&DTe(n,e.idleTimeout),n},adt=function(t,e){return Array.isArray(t)?[t,e]:typeof t=="object"&&t!==null?[[],t]:[[],void 0]},kTe=(t,e)=>{if(e.stdio!==void 0||e.stdout!==void 0||e.stderr!==void 0||Ga.env.NETLIFY_LOCAL_QUIET==="true")return;if(Ga.env.NETLIFY_MASK_LOGS!=="false"){t.stdout?.pipe(new Rb).pipe(Ga.stdout),t.stderr?.pipe(new Rb).pipe(Ga.stderr);return}t.stdout?.pipe(Ga.stdout),t.stderr?.pipe(Ga.stderr)},YY=(t,e="SIGTERM")=>{try{return t.pid&&!t.killed?(Ga.kill(-t.pid,e),D_.log(`Killed process ${t.pid} with signal ${e}`),!0):!1}catch(r){return D_.error("Error killing process:",r),!1}},NTe=t=>YY(t,"SIGKILL"),DTe=(t,e)=>{let r=null,n=()=>{D_.log(`Process ${t.pid} killed due to idle timeout (no output for ${e}ms)`),YY(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(D_.log(`Force killing idle process ${t.pid}`),NTe(t))},5e3)},i=()=>{r&&clearTimeout(r),r=setTimeout(n,e)};i(),t.stdout?.on("data",i),t.stderr?.on("data",i);let s=()=>{r&&(clearTimeout(r),r=null)};t.on("exit",s),t.on("error",s)},MTe=t=>{KY.add(t);let e=OTe();if(e){let r=e.onTimesUp(()=>{D_.log(`Global timer expired, killing process ${t.pid}`),YY(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(D_.log(`Force killing process ${t.pid} after timeout`),NTe(t))},5e3)});t.on("exit",()=>{KY.delete(t),r()}),t.on("error",()=>{KY.delete(t),r()})}};function Ha(t,e){if(!Ga.env.NETLIFY_LOCAL_MODE)try{let i=odt.resolve(PTe.name),s=ou.dirname(i);for(;s!==ou.dirname(s);){let o=ou.dirname(s);if(ou.basename(o)==="node_modules"){let a=ou.join(o,".bin",e);if(KD.existsSync(a))return a;break}s=o}}catch(i){console.error("Could not resolve package.json",i)}if(Ga.env.NODE_PATH){let i=ou.join(Ga.env.NODE_PATH,".bin",e);if(KD.existsSync(i))return i}let r=ou.join(t,"node_modules",".bin",e);if(KD.existsSync(r))return r;let n=ou.join(sdt,"..","node_modules",".bin",e);if(KD.existsSync(n))return n}var $Te=ne("repo"),jTe="runner-diffs-",ZY=t=>`${jTe}${t}-`,qTe=async t=>{let e=ZD.tmpdir(),r;try{r=await ti.readdir(e)}catch{return}await Promise.all(r.filter(n=>n.startsWith(jTe)&&!n.startsWith(ZY(t))).map(n=>ti.rm($s.join(e,n),{recursive:!0,force:!0}).catch(()=>{})))},LTe=async t=>{let e=cdt("sha256");for await(let r of udt(t))e.update(r);return e.digest("hex")},UTe=async(t,e)=>t.size===e.size&&await LTe(t.path)===await LTe(e.path),BTe=/.. (.+)?\.log$/,ldt=[BTe],ddt=1,FTe=t=>{let e=t.split(`
387
+ if (condition) { yield value; }`)};import{Buffer as yct}from"buffer";import{StringDecoder as Sct}from"string_decoder";var ND=(t,e,r)=>{if(r)return;if(t)return{transform:vct.bind(void 0,new TextEncoder)};let n=new Sct(e);return{transform:Ect.bind(void 0,n),final:bct.bind(void 0,n)}},vct=function*(t,e){yct.isBuffer(e)?yield tu(e):typeof e=="string"?yield t.encode(e):yield e},Ect=function*(t,e){yield Fr(e)?t.write(e):e},bct=function*(t){let e=t.end();e!==""&&(yield e)};import{callbackify as Ybe}from"util";var dY=Ybe(async(t,e,r,n)=>{e.currentIterable=t(...r);try{for await(let i of e.currentIterable)n.push(i)}finally{delete e.currentIterable}}),DD=async function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=Tct}=e[r];for await(let i of n(t))yield*DD(i,e,r+1)},Zbe=async function*(t){for(let[e,{final:r}]of Object.entries(t))yield*wct(r,Number(e),t)},wct=async function*(t,e,r){if(t!==void 0)for await(let n of t())yield*DD(n,r,e+1)},Qbe=Ybe(async({currentIterable:t},e)=>{if(t!==void 0){await(e?t.throw(e):t.return());return}if(e)throw e}),Tct=function*(t){yield t};var fY=(t,e,r,n)=>{try{for(let i of t(...e))r.push(i);n()}catch(i){n(i)}},Jbe=(t,e)=>[...e.flatMap(r=>[...yp(r,t,0)]),...CT(t)],yp=function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=Rct}=e[r];for(let i of n(t))yield*yp(i,e,r+1)},CT=function*(t){for(let[e,{final:r}]of Object.entries(t))yield*Act(r,Number(e),t)},Act=function*(t,e,r){if(t!==void 0)for(let n of t())yield*yp(n,r,e+1)},Rct=function*(t){yield t};var pY=({value:t,value:{transform:e,final:r,writableObjectMode:n,readableObjectMode:i},optionName:s},{encoding:o})=>{let a={},c=ewe(t,o,s),u=_p(e),l=_p(r),d=u?dY.bind(void 0,DD,a):fY.bind(void 0,yp),f=u||l?dY.bind(void 0,Zbe,a):fY.bind(void 0,CT),p=u||l?Qbe.bind(void 0,a):void 0;return{stream:new xct({writableObjectMode:n,writableHighWaterMark:Xbe(n),readableObjectMode:i,readableHighWaterMark:Xbe(i),transform(m,_,S){d([m,c,0],this,S)},flush(m){f([c],this,m)},destroy:p})}},MD=(t,e,r,n)=>{let i=e.filter(({type:o})=>o==="generator"),s=n?i.reverse():i;for(let{value:o,optionName:a}of s){let c=ewe(o,r,a);t=Jbe(c,t)}return t},ewe=({transform:t,final:e,binary:r,writableObjectMode:n,readableObjectMode:i,preserveNewlines:s},o,a)=>{let c={};return[{transform:Hbe(n,a)},ND(r,o,n),kD(r,s,n,c),{transform:t,final:e},{transform:Wbe(i,a)},Gbe({binary:r,preserveNewlines:s,readableObjectMode:i,state:c})].filter(Boolean)};var twe=(t,e)=>{for(let r of Oct(t))Pct(t,r,e)},Oct=t=>new Set(Object.entries(t).filter(([,{direction:e}])=>e==="input").map(([e])=>Number(e))),Pct=(t,e,r)=>{let{stdioItems:n}=t[e],i=n.filter(({contents:a})=>a!==void 0);if(i.length===0)return;if(e!==0){let[{type:a,optionName:c}]=i;throw new TypeError(`Only the \`stdin\` option, not \`${c}\`, can be ${Ul[a]} with synchronous methods.`)}let o=i.map(({contents:a})=>a).map(a=>Ict(a,n));r.input=ET(o)},Ict=(t,e)=>{let r=MD(t,e,"utf8",!0);return Cct(r),ET(r)},Cct=t=>{let e=t.find(r=>typeof r!="string"&&!Fr(r));if(e!==void 0)throw new TypeError(`The \`stdin\` option is invalid: when passing objects as input, a transform must be used to serialize them to strings or Uint8Arrays: ${e}.`)};import{writeFileSync as Mct,appendFileSync as $ct}from"fs";var $D=({stdioItems:t,encoding:e,verboseInfo:r,fdNumber:n})=>n!=="all"&&v_(r,n)&&!Ji.has(e)&&kct(n)&&(t.some(({type:i,value:s})=>i==="native"&&Nct.has(s))||t.every(({type:i})=>Ds.has(i))),kct=t=>t===1||t===2,Nct=new Set(["pipe","overlapped"]),rwe=async(t,e,r,n)=>{for await(let i of t)Dct(e)||iwe(i,r,n)},nwe=(t,e,r)=>{for(let n of t)iwe(n,e,r)},Dct=t=>t._readableState.pipes.length>0,iwe=(t,e,r)=>{let n=ZN(t);za({type:"output",verboseMessage:n,fdNumber:e,verboseInfo:r})};var swe=({fileDescriptors:t,syncResult:{output:e},options:r,isMaxBuffer:n,verboseInfo:i})=>{if(e===null)return{output:Array.from({length:3})};let s={},o=new Set([]);return{output:e.map((c,u)=>Lct({result:c,fileDescriptors:t,fdNumber:u,state:s,outputFiles:o,isMaxBuffer:n,verboseInfo:i},r)),...s}},Lct=({result:t,fileDescriptors:e,fdNumber:r,state:n,outputFiles:i,isMaxBuffer:s,verboseInfo:o},{buffer:a,encoding:c,lines:u,stripFinalNewline:l,maxBuffer:d})=>{if(t===null)return;let f=obe(t,s,d),p=tu(f),{stdioItems:h,objectMode:m}=e[r],_=Uct([p],h,c,n),{serializedResult:S,finalResult:b=S}=Fct({chunks:_,objectMode:m,encoding:c,lines:u,stripFinalNewline:l,fdNumber:r});zct({serializedResult:S,fdNumber:r,state:n,verboseInfo:o,encoding:c,stdioItems:h,objectMode:m});let x=a[r]?b:void 0;try{return n.error===void 0&&jct(S,h,i),x}catch(y){return n.error=y,x}},Uct=(t,e,r,n)=>{try{return MD(t,e,r,!1)}catch(i){return n.error=i,t}},Fct=({chunks:t,objectMode:e,encoding:r,lines:n,stripFinalNewline:i,fdNumber:s})=>{if(e)return{serializedResult:t};if(r==="buffer")return{serializedResult:ET(t)};let o=vSe(t,r);return n[s]?{serializedResult:o,finalResult:lY(o,!i[s],e)}:{serializedResult:o}},zct=({serializedResult:t,fdNumber:e,state:r,verboseInfo:n,encoding:i,stdioItems:s,objectMode:o})=>{if(!$D({stdioItems:s,encoding:i,verboseInfo:n,fdNumber:e}))return;let a=lY(t,!1,o);try{nwe(a,e,n)}catch(c){r.error??=c}},jct=(t,e,r)=>{for(let{path:n,append:i}of e.filter(({type:s})=>ID.has(s))){let s=typeof n=="string"?n:n.toString();i||r.has(s)?$ct(n,t):(r.add(s),Mct(n,t))}};var owe=([,t,e],r)=>{if(r.all)return t===void 0?e:e===void 0?t:Array.isArray(t)?Array.isArray(e)?[...t,...e]:[...t,iu(e,r,"all")]:Array.isArray(e)?[iu(t,r,"all"),...e]:Fr(t)&&Fr(e)?SK([t,e]):`${t}${e}`};import{once as hY}from"events";var awe=async(t,e)=>{let[r,n]=await qct(t);return e.isForcefullyTerminated??=!1,[r,n]},qct=async t=>{let[e,r]=await Promise.allSettled([hY(t,"spawn"),hY(t,"exit")]);return e.status==="rejected"?[]:r.status==="rejected"?cwe(t):r.value},cwe=async t=>{try{return await hY(t,"exit")}catch{return cwe(t)}},uwe=async t=>{let[e,r]=await t;if(!Bct(e,r)&&mY(e,r))throw new Vo;return[e,r]},Bct=(t,e)=>t===void 0&&e===void 0,mY=(t,e)=>t!==0||e!==null;var lwe=({error:t,status:e,signal:r,output:n},{maxBuffer:i})=>{let s=Vct(t,e,r),o=s?.code==="ETIMEDOUT",a=sbe(s,n,i);return{resultError:s,exitCode:e,signal:r,timedOut:o,isMaxBuffer:a}},Vct=(t,e,r)=>t!==void 0?t:mY(e,r)?new Vo:void 0;var dwe=(t,e,r)=>{let{file:n,commandArguments:i,command:s,escapedCommand:o,startTime:a,verboseInfo:c,options:u,fileDescriptors:l}=Hct(t,e,r),d=Yct({file:n,commandArguments:i,options:u,command:s,escapedCommand:o,verboseInfo:c,fileDescriptors:l,startTime:a});return I_(d,c,u)},Hct=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=JN(t,e,r),a=Wct(r),{file:c,commandArguments:u,options:l}=yD(t,e,a);Kct(l);let d=jbe(l,o);return{file:c,commandArguments:u,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},Wct=t=>t.node&&!t.ipc?{...t,ipc:!1}:t,Kct=({ipc:t,ipcInput:e,detached:r,cancelSignal:n})=>{e&&LD("ipcInput"),t&&LD("ipc: true"),r&&LD("detached: true"),n&&LD("cancelSignal")},LD=t=>{throw new TypeError(`The "${t}" option cannot be used with synchronous methods.`)},Yct=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,verboseInfo:s,fileDescriptors:o,startTime:a})=>{let c=Zct({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:o,startTime:a});if(c.failed)return c;let{resultError:u,exitCode:l,signal:d,timedOut:f,isMaxBuffer:p}=lwe(c,r),{output:h,error:m=u}=swe({fileDescriptors:o,syncResult:c,options:r,isMaxBuffer:p,verboseInfo:s}),_=h.map((b,x)=>iu(b,r,x)),S=iu(owe(h,r),r,"all");return Jct({error:m,exitCode:l,signal:d,timedOut:f,isMaxBuffer:p,stdio:_,all:S,options:r,command:n,escapedCommand:i,startTime:a})},Zct=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:s,startTime:o})=>{try{twe(s,r);let a=Qct(r);return Gct(...SD(t,e,a))}catch(a){return P_({error:a,command:n,escapedCommand:i,fileDescriptors:s,options:r,startTime:o,isSync:!0})}},Qct=({encoding:t,maxBuffer:e,...r})=>({...r,encoding:"buffer",maxBuffer:RD(e)}),Jct=({error:t,exitCode:e,signal:r,timedOut:n,isMaxBuffer:i,stdio:s,all:o,options:a,command:c,escapedCommand:u,startTime:l})=>t===void 0?xD({command:c,escapedCommand:u,stdio:s,all:o,ipcOutput:[],options:a,startTime:l}):IT({error:t,command:c,escapedCommand:u,timedOut:n,isCanceled:!1,isGracefullyCanceled:!1,isMaxBuffer:i,isForcefullyTerminated:!1,exitCode:e,signal:r,stdio:s,all:o,ipcOutput:[],options:a,startTime:l,isSync:!0});import{setMaxListeners as Flt}from"events";import{spawn as zlt}from"child_process";import gwe from"process";import{once as gY,on as Xct}from"events";var fwe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0,filter:s}={})=>(w_({methodName:"getOneMessage",isSubprocess:r,ipc:n,isConnected:fD(t)}),eut({anyProcess:t,channel:e,isSubprocess:r,filter:s,reference:i})),eut=async({anyProcess:t,channel:e,isSubprocess:r,filter:n,reference:i})=>{cD(e,i);let s=Ll(t,e,r),o=new AbortController;try{return await Promise.race([tut(s,n,o),rut(s,r,o),nut(s,r,o)])}catch(a){throw T_(t),a}finally{o.abort(),uD(e,i)}},tut=async(t,e,{signal:r})=>{if(e===void 0){let[n]=await gY(t,"message",{signal:r});return n}for await(let[n]of Xct(t,"message",{signal:r}))if(e(n))return n},rut=async(t,e,{signal:r})=>{await gY(t,"disconnect",{signal:r}),Jve(e)},nut=async(t,e,{signal:r})=>{let[n]=await gY(t,"strict:error",{signal:r});throw sD(n,e)};import{once as hwe,on as iut}from"events";var mwe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0}={})=>_Y({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:!r,reference:i}),_Y=({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:i,reference:s})=>{w_({methodName:"getEachMessage",isSubprocess:r,ipc:n,isConnected:fD(t)}),cD(e,s);let o=Ll(t,e,r),a=new AbortController,c={};return sut(t,o,a),out({ipcEmitter:o,isSubprocess:r,controller:a,state:c}),aut({anyProcess:t,channel:e,ipcEmitter:o,isSubprocess:r,shouldAwait:i,controller:a,state:c,reference:s})},sut=async(t,e,r)=>{try{await hwe(e,"disconnect",{signal:r.signal}),r.abort()}catch{}},out=async({ipcEmitter:t,isSubprocess:e,controller:r,state:n})=>{try{let[i]=await hwe(t,"strict:error",{signal:r.signal});n.error=sD(i,e),r.abort()}catch{}},aut=async function*({anyProcess:t,channel:e,ipcEmitter:r,isSubprocess:n,shouldAwait:i,controller:s,state:o,reference:a}){try{for await(let[c]of iut(r,"message",{signal:s.signal}))pwe(o),yield c}catch{pwe(o)}finally{s.abort(),uD(e,a),n||T_(t),i&&await t}},pwe=({error:t})=>{if(t)throw t};var _we=(t,{ipc:e})=>{Object.assign(t,Swe(t,!1,e))},ywe=()=>{let t=gwe,e=!0,r=gwe.channel!==void 0;return{...Swe(t,e,r),getCancelSignal:AEe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})}},Swe=(t,e,r)=>({sendMessage:gD.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getOneMessage:fwe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getEachMessage:mwe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})});import{ChildProcess as cut}from"child_process";import{PassThrough as uut,Readable as lut,Writable as dut,Duplex as fut}from"stream";var vwe=({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,verboseInfo:o})=>{aY(n);let a=new cut;put(a,n),Object.assign(a,{readable:hut,writable:mut,duplex:gut});let c=P_({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,isSync:!1}),u=_ut(c,o,i);return{subprocess:a,promise:u}},put=(t,e)=>{let r=kT(),n=kT(),i=kT(),s=Array.from({length:e.length-3},kT),o=kT(),a=[r,n,i,...s];Object.assign(t,{stdin:r,stdout:n,stderr:i,all:o,stdio:a})},kT=()=>{let t=new uut;return t.end(),t},hut=()=>new lut({read(){}}),mut=()=>new dut({write(){}}),gut=()=>new fut({read(){},write(){}}),_ut=async(t,e,r)=>I_(t,e,r);import{createReadStream as Ewe,createWriteStream as bwe}from"fs";import{Buffer as yut}from"buffer";import{Readable as NT,Writable as Sut,Duplex as vut}from"stream";var Twe=(t,e)=>CD(Eut,t,e,!1),DT=({type:t,optionName:e})=>{throw new TypeError(`The \`${e}\` option cannot be ${Ul[t]}.`)},wwe={fileNumber:DT,generator:pY,asyncGenerator:pY,nodeStream:({value:t})=>({stream:t}),webTransform({value:{transform:t,writableObjectMode:e,readableObjectMode:r}}){let n=e||r;return{stream:vut.fromWeb(t,{objectMode:n})}},duplex:({value:{transform:t}})=>({stream:t}),native(){}},Eut={input:{...wwe,fileUrl:({value:t})=>({stream:Ewe(t)}),filePath:({value:{file:t}})=>({stream:Ewe(t)}),webStream:({value:t})=>({stream:NT.fromWeb(t)}),iterable:({value:t})=>({stream:NT.from(t)}),asyncIterable:({value:t})=>({stream:NT.from(t)}),string:({value:t})=>({stream:NT.from(t)}),uint8Array:({value:t})=>({stream:NT.from(yut.from(t))})},output:{...wwe,fileUrl:({value:t})=>({stream:bwe(t)}),filePath:({value:{file:t,append:e}})=>({stream:bwe(t,e?{flags:"a"}:{})}),webStream:({value:t})=>({stream:Sut.fromWeb(t)}),iterable:DT,asyncIterable:DT,string:DT,uint8Array:DT}};import{on as but,once as Awe}from"events";import{PassThrough as wut,getDefaultHighWaterMark as Tut}from"stream";import{finished as Owe}from"stream/promises";function Sp(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let i of t)SY(i);let e=t.some(({readableObjectMode:i})=>i),r=Aut(t,e),n=new yY({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return n}var Aut=(t,e)=>{if(t.length===0)return Tut(e);let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},yY=class extends wut{#e=new Set([]);#r=new Set([]);#t=new Set([]);#n;#s=Symbol("unpipe");#i=new WeakMap;add(e){if(SY(e),this.#e.has(e))return;this.#e.add(e),this.#n??=Rut(this,this.#e,this.#s);let r=Put({passThroughStream:this,stream:e,streams:this.#e,ended:this.#r,aborted:this.#t,onFinished:this.#n,unpipeEvent:this.#s});this.#i.set(e,r),e.pipe(this,{end:!1})}async remove(e){if(SY(e),!this.#e.has(e))return!1;let r=this.#i.get(e);return r===void 0?!1:(this.#i.delete(e),e.unpipe(this),await r,!0)}},Rut=async(t,e,r)=>{UD(t,Rwe);let n=new AbortController;try{await Promise.race([xut(t,n),Out(t,e,r,n)])}finally{n.abort(),UD(t,-Rwe)}},xut=async(t,{signal:e})=>{try{await Owe(t,{signal:e,cleanup:!0})}catch(r){throw Pwe(t,r),r}},Out=async(t,e,r,{signal:n})=>{for await(let[i]of but(t,"unpipe",{signal:n}))e.has(i)&&i.emit(r)},SY=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},Put=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:s,unpipeEvent:o})=>{UD(t,xwe);let a=new AbortController;try{await Promise.race([Iut(s,e,a),Cut({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:a}),kut({stream:e,streams:r,ended:n,aborted:i,unpipeEvent:o,controller:a})])}finally{a.abort(),UD(t,-xwe)}r.size>0&&r.size===n.size+i.size&&(n.size===0&&i.size>0?vY(t):Nut(t))},Iut=async(t,e,{signal:r})=>{try{await t,r.aborted||vY(e)}catch(n){r.aborted||Pwe(e,n)}},Cut=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:s}})=>{try{await Owe(e,{signal:s,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(o){if(s.aborted||!r.has(e))return;Iwe(o)?i.add(e):Cwe(t,o)}},kut=async({stream:t,streams:e,ended:r,aborted:n,unpipeEvent:i,controller:{signal:s}})=>{if(await Awe(t,i,{signal:s}),!t.readable)return Awe(s,"abort",{signal:s});e.delete(t),r.delete(t),n.delete(t)},Nut=t=>{t.writable&&t.end()},Pwe=(t,e)=>{Iwe(e)?vY(t):Cwe(t,e)},Iwe=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",vY=t=>{(t.readable||t.writable)&&t.destroy()},Cwe=(t,e)=>{t.destroyed||(t.once("error",Dut),t.destroy(e))},Dut=()=>{},UD=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},Rwe=2,xwe=1;import{finished as kwe}from"stream/promises";var k_=(t,e)=>{t.pipe(e),Mut(t,e),$ut(t,e)},Mut=async(t,e)=>{if(!(Bo(t)||Bo(e))){try{await kwe(t,{cleanup:!0,readable:!0,writable:!1})}catch{}EY(e)}},EY=t=>{t.writable&&t.end()},$ut=async(t,e)=>{if(!(Bo(t)||Bo(e))){try{await kwe(e,{cleanup:!0,readable:!1,writable:!0})}catch{}bY(t)}},bY=t=>{t.readable&&t.destroy()};var Nwe=(t,e,r)=>{let n=new Map;for(let[i,{stdioItems:s,direction:o}]of Object.entries(e)){for(let{stream:a}of s.filter(({type:c})=>Ds.has(c)))Lut(t,a,o,i);for(let{stream:a}of s.filter(({type:c})=>!Ds.has(c)))Fut({subprocess:t,stream:a,direction:o,fdNumber:i,pipeGroups:n,controller:r})}for(let[i,s]of n.entries()){let o=s.length===1?s[0]:Sp(s);k_(o,i)}},Lut=(t,e,r,n)=>{r==="output"?k_(t.stdio[n],e):k_(e,t.stdio[n]);let i=Uut[n];i!==void 0&&(t[i]=e),t.stdio[n]=e},Uut=["stdin","stdout","stderr"],Fut=({subprocess:t,stream:e,direction:r,fdNumber:n,pipeGroups:i,controller:s})=>{if(e===void 0)return;zut(e,s);let[o,a]=r==="output"?[e,t.stdio[n]]:[t.stdio[n],e],c=i.get(o)??[];i.set(o,[...c,a])},zut=(t,{signal:e})=>{Bo(t)&&mp(t,jut,e)},jut=2;import{addAbortListener as Vut}from"events";var vp=[];vp.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&vp.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&vp.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var FD=t=>!!t&&typeof t=="object"&&typeof t.removeListener=="function"&&typeof t.emit=="function"&&typeof t.reallyExit=="function"&&typeof t.listeners=="function"&&typeof t.kill=="function"&&typeof t.pid=="number"&&typeof t.on=="function",wY=Symbol.for("signal-exit emitter"),TY=globalThis,qut=Object.defineProperty.bind(Object),AY=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(TY[wY])return TY[wY];qut(TY,wY,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(e,r){this.listeners[e].push(r)}removeListener(e,r){let n=this.listeners[e],i=n.indexOf(r);i!==-1&&(i===0&&n.length===1?n.length=0:n.splice(i,1))}emit(e,r,n){if(this.emitted[e])return!1;this.emitted[e]=!0;let i=!1;for(let s of this.listeners[e])i=s(r,n)===!0||i;return e==="exit"&&(i=this.emit("afterExit",r,n)||i),i}},zD=class{},But=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),RY=class extends zD{onExit(){return()=>{}}load(){}unload(){}},xY=class extends zD{#e=OY.platform==="win32"?"SIGINT":"SIGHUP";#r=new AY;#t;#n;#s;#i={};#o=!1;constructor(e){super(),this.#t=e,this.#i={};for(let r of vp)this.#i[r]=()=>{let n=this.#t.listeners(r),{count:i}=this.#r,s=e;if(typeof s.__signal_exit_emitter__=="object"&&typeof s.__signal_exit_emitter__.count=="number"&&(i+=s.__signal_exit_emitter__.count),n.length===i){this.unload();let o=this.#r.emit("exit",null,r),a=r==="SIGHUP"?this.#e:r;o||e.kill(e.pid,a)}};this.#s=e.reallyExit,this.#n=e.emit}onExit(e,r){if(!FD(this.#t))return()=>{};this.#o===!1&&this.load();let n=r?.alwaysLast?"afterExit":"exit";return this.#r.on(n,e),()=>{this.#r.removeListener(n,e),this.#r.listeners.exit.length===0&&this.#r.listeners.afterExit.length===0&&this.unload()}}load(){if(!this.#o){this.#o=!0,this.#r.count+=1;for(let e of vp)try{let r=this.#i[e];r&&this.#t.on(e,r)}catch{}this.#t.emit=(e,...r)=>this.#c(e,...r),this.#t.reallyExit=e=>this.#a(e)}}unload(){this.#o&&(this.#o=!1,vp.forEach(e=>{let r=this.#i[e];if(!r)throw new Error("Listener not defined for signal: "+e);try{this.#t.removeListener(e,r)}catch{}}),this.#t.emit=this.#n,this.#t.reallyExit=this.#s,this.#r.count-=1)}#a(e){return FD(this.#t)?(this.#t.exitCode=e||0,this.#r.emit("exit",this.#t.exitCode,null),this.#s.call(this.#t,this.#t.exitCode)):0}#c(e,...r){let n=this.#n;if(e==="exit"&&FD(this.#t)){typeof r[0]=="number"&&(this.#t.exitCode=r[0]);let i=n.call(this.#t,e,...r);return this.#r.emit("exit",this.#t.exitCode,null),i}else return n.call(this.#t,e,...r)}},OY=globalThis.process,{onExit:Dwe,load:Eir,unload:bir}=But(FD(OY)?new xY(OY):new RY);var Mwe=(t,{cleanup:e,detached:r},{signal:n})=>{if(!e||r)return;let i=Dwe(()=>{t.kill()});Vut(n,()=>{i()})};var Lwe=({source:t,sourcePromise:e,boundOptions:r,createNested:n},...i)=>{let s=QN(),{destination:o,destinationStream:a,destinationError:c,from:u,unpipeSignal:l}=Gut(r,n,i),{sourceStream:d,sourceError:f}=Wut(t,u),{options:p,fileDescriptors:h}=qa.get(t);return{sourcePromise:e,sourceStream:d,sourceOptions:p,sourceError:f,destination:o,destinationStream:a,destinationError:c,unpipeSignal:l,fileDescriptors:h,startTime:s}},Gut=(t,e,r)=>{try{let{destination:n,pipeOptions:{from:i,to:s,unpipeSignal:o}={}}=Hut(t,e,...r),a=aD(n,s);return{destination:n,destinationStream:a,from:i,unpipeSignal:o}}catch(n){return{destinationError:n}}},Hut=(t,e,r,...n)=>{if(Array.isArray(r))return{destination:e($we,t)(r,...n),pipeOptions:t};if(typeof r=="string"||r instanceof URL||_K(r)){if(Object.keys(t).length>0)throw new TypeError('Please use .pipe("file", ..., options) or .pipe(execa("file", ..., options)) instead of .pipe(options)("file", ...).');let[i,s,o]=jN(r,...n);return{destination:e($we)(i,s,o),pipeOptions:o}}if(qa.has(r)){if(Object.keys(t).length>0)throw new TypeError("Please use .pipe(options)`command` or .pipe($(options)`command`) instead of .pipe(options)($`command`).");return{destination:r,pipeOptions:n[0]}}throw new TypeError(`The first argument must be a template string, an options object, or an Execa subprocess: ${r}`)},$we=({options:t})=>({options:{...t,stdin:"pipe",piped:!0}}),Wut=(t,e)=>{try{return{sourceStream:A_(t,e)}}catch(r){return{sourceError:r}}};var Fwe=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n,fileDescriptors:i,sourceOptions:s,startTime:o})=>{let a=Kut({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n});if(a!==void 0)throw PY({error:a,fileDescriptors:i,sourceOptions:s,startTime:o})},Kut=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n})=>{if(e!==void 0&&n!==void 0)return n;if(n!==void 0)return bY(t),n;if(e!==void 0)return EY(r),e},PY=({error:t,fileDescriptors:e,sourceOptions:r,startTime:n})=>P_({error:t,command:Uwe,escapedCommand:Uwe,fileDescriptors:e,options:r,startTime:n,isSync:!1}),Uwe="source.pipe(destination)";var zwe=async t=>{let[{status:e,reason:r,value:n=r},{status:i,reason:s,value:o=s}]=await t;if(o.pipedFrom.includes(n)||o.pipedFrom.push(n),i==="rejected")throw o;if(e==="rejected")throw n;return o};import{finished as Yut}from"stream/promises";var jwe=(t,e,r)=>{let n=jD.has(e)?Qut(t,e):Zut(t,e);return mp(t,Xut,r.signal),mp(e,elt,r.signal),Jut(e),n},Zut=(t,e)=>{let r=Sp([t]);return k_(r,e),jD.set(e,r),r},Qut=(t,e)=>{let r=jD.get(e);return r.add(t),r},Jut=async t=>{try{await Yut(t,{cleanup:!0,readable:!1,writable:!0})}catch{}jD.delete(t)},jD=new WeakMap,Xut=2,elt=1;import{aborted as tlt}from"util";var qwe=(t,e)=>t===void 0?[]:[rlt(t,e)],rlt=async(t,{sourceStream:e,mergedStream:r,fileDescriptors:n,sourceOptions:i,startTime:s})=>{await tlt(t,e),await r.remove(e);let o=new Error("Pipe canceled by `unpipeSignal` option.");throw PY({error:o,fileDescriptors:n,sourceOptions:i,startTime:s})};var qD=(t,...e)=>{if(yr(e[0]))return qD.bind(void 0,{...t,boundOptions:{...t.boundOptions,...e[0]}});let{destination:r,...n}=Lwe(t,...e),i=nlt({...n,destination:r});return i.pipe=qD.bind(void 0,{...t,source:r,sourcePromise:i,boundOptions:{}}),i},nlt=async({sourcePromise:t,sourceStream:e,sourceOptions:r,sourceError:n,destination:i,destinationStream:s,destinationError:o,unpipeSignal:a,fileDescriptors:c,startTime:u})=>{let l=ilt(t,i);Fwe({sourceStream:e,sourceError:n,destinationStream:s,destinationError:o,fileDescriptors:c,sourceOptions:r,startTime:u});let d=new AbortController;try{let f=jwe(e,s,d);return await Promise.race([zwe(l),...qwe(a,{sourceStream:e,mergedStream:f,sourceOptions:r,fileDescriptors:c,startTime:u})])}finally{d.abort()}},ilt=(t,e)=>Promise.allSettled([t,e]);import{setImmediate as dlt}from"timers/promises";import{on as slt}from"events";import{getDefaultHighWaterMark as olt}from"stream";var BD=({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:n,encoding:i,preserveNewlines:s})=>{let o=new AbortController;return alt(e,o),Vwe({stream:t,controller:o,binary:r,shouldEncode:!t.readableObjectMode&&n,encoding:i,shouldSplit:!t.readableObjectMode,preserveNewlines:s})},alt=async(t,e)=>{try{await t}catch{}finally{e.abort()}},IY=({stream:t,onStreamEnd:e,lines:r,encoding:n,stripFinalNewline:i,allMixed:s})=>{let o=new AbortController;clt(e,o,t);let a=t.readableObjectMode&&!s;return Vwe({stream:t,controller:o,binary:n==="buffer",shouldEncode:!a,encoding:n,shouldSplit:!a&&r,preserveNewlines:!i})},clt=async(t,e,r)=>{try{await t}catch{r.destroy()}finally{e.abort()}},Vwe=({stream:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})=>{let a=slt(t,"data",{signal:e.signal,highWaterMark:Bwe,highWatermark:Bwe});return ult({onStdoutChunk:a,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})},CY=olt(!0),Bwe=CY,ult=async function*({onStdoutChunk:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o}){let a=llt({binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o});try{for await(let[c]of t)yield*yp(c,a,0)}catch(c){if(!e.signal.aborted)throw c}finally{yield*CT(a)}},llt=({binary:t,shouldEncode:e,encoding:r,shouldSplit:n,preserveNewlines:i})=>[ND(t,r,!e),kD(t,i,!n,{})].filter(Boolean);var Gwe=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,buffer:i,maxBuffer:s,lines:o,allMixed:a,stripFinalNewline:c,verboseInfo:u,streamInfo:l})=>{let d=flt({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:a,verboseInfo:u,streamInfo:l});if(!i){await Promise.all([plt(t),d]);return}let f=cY(c,r),p=IY({stream:t,onStreamEnd:e,lines:o,encoding:n,stripFinalNewline:f,allMixed:a}),[h]=await Promise.all([hlt({stream:t,iterable:p,fdNumber:r,encoding:n,maxBuffer:s,lines:o}),d]);return h},flt=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:i,verboseInfo:s,streamInfo:{fileDescriptors:o}})=>{if(!$D({stdioItems:o[r]?.stdioItems,encoding:n,verboseInfo:s,fdNumber:r}))return;let a=IY({stream:t,onStreamEnd:e,lines:!0,encoding:n,stripFinalNewline:!0,allMixed:i});await rwe(a,t,r,s)},plt=async t=>{await dlt(),t.readableFlowing===null&&t.resume()},hlt=async({stream:t,stream:{readableObjectMode:e},iterable:r,fdNumber:n,encoding:i,maxBuffer:s,lines:o})=>{try{return e||o?await wD(r,{maxBuffer:s}):i==="buffer"?new Uint8Array(await TD(r,{maxBuffer:s})):await O_(r,{maxBuffer:s})}catch(a){return Hwe(rbe({error:a,stream:t,readableObjectMode:e,lines:o,encoding:i,fdNumber:n}))}},kY=async t=>{try{return await t}catch(e){return Hwe(e)}},Hwe=({bufferedData:t})=>ySe(t)?new Uint8Array(t):t;import{finished as mlt}from"stream/promises";var MT=async(t,e,r,{isSameDirection:n,stopOnExit:i=!1}={})=>{let s=glt(t,r),o=new AbortController;try{await Promise.race([...i?[r.exitPromise]:[],mlt(t,{cleanup:!0,signal:o.signal})])}catch(a){s.stdinCleanedUp||Slt(a,e,r,n)}finally{o.abort()}},glt=(t,{originalStreams:[e],subprocess:r})=>{let n={stdinCleanedUp:!1};return t===e&&_lt(t,r,n),n},_lt=(t,e,r)=>{let{_destroy:n}=t;t._destroy=(...i)=>{ylt(e,r),n.call(t,...i)}},ylt=({exitCode:t,signalCode:e},r)=>{(t!==null||e!==null)&&(r.stdinCleanedUp=!0)},Slt=(t,e,r,n)=>{if(!vlt(t,e,r,n))throw t},vlt=(t,e,r,n=!0)=>r.propagating?Wwe(t)||VD(t):(r.propagating=!0,NY(r,e)===n?Wwe(t):VD(t)),NY=({fileDescriptors:t},e)=>e!=="all"&&t[e].direction==="input",VD=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",Wwe=t=>t?.code==="EPIPE";var Kwe=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>t.stdio.map((c,u)=>DY({stream:c,fdNumber:u,encoding:e,buffer:r[u],maxBuffer:n[u],lines:i[u],allMixed:!1,stripFinalNewline:s,verboseInfo:o,streamInfo:a})),DY=async({stream:t,fdNumber:e,encoding:r,buffer:n,maxBuffer:i,lines:s,allMixed:o,stripFinalNewline:a,verboseInfo:c,streamInfo:u})=>{if(!t)return;let l=MT(t,e,u);if(NY(u,e)){await l;return}let[d]=await Promise.all([Gwe({stream:t,onStreamEnd:l,fdNumber:e,encoding:r,buffer:n,maxBuffer:i,lines:s,allMixed:o,stripFinalNewline:a,verboseInfo:c,streamInfo:u}),l]);return d};var Ywe=({stdout:t,stderr:e},{all:r})=>r&&(t||e)?Sp([t,e].filter(Boolean)):void 0,Zwe=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>DY({...Elt(t,r),fdNumber:"all",encoding:e,maxBuffer:n[1]+n[2],lines:i[1]||i[2],allMixed:blt(t),stripFinalNewline:s,verboseInfo:o,streamInfo:a}),Elt=({stdout:t,stderr:e,all:r},[,n,i])=>{let s=n||i;return s?n?i?{stream:r,buffer:s}:{stream:t,buffer:s}:{stream:e,buffer:s}:{stream:r,buffer:s}},blt=({all:t,stdout:e,stderr:r})=>t&&e&&r&&e.readableObjectMode!==r.readableObjectMode;import{once as wlt}from"events";var Qwe=t=>v_(t,"ipc"),Jwe=(t,e)=>{let r=ZN(t);za({type:"ipc",verboseMessage:r,fdNumber:"ipc",verboseInfo:e})};var Xwe=async({subprocess:t,buffer:e,maxBuffer:r,ipc:n,ipcOutput:i,verboseInfo:s})=>{if(!n)return i;let o=Qwe(s),a=ru(e,"ipc"),c=ru(r,"ipc");for await(let u of _Y({anyProcess:t,channel:t.channel,isSubprocess:!1,ipc:n,shouldAwait:!1,reference:!0}))a&&(nbe(t,i,c),i.push(u)),o&&Jwe(u,s);return i},eTe=async(t,e)=>(await Promise.allSettled([t]),e);var tTe=async({subprocess:t,options:{encoding:e,buffer:r,maxBuffer:n,lines:i,timeoutDuration:s,cancelSignal:o,gracefulCancel:a,forceKillAfterDelay:c,stripFinalNewline:u,ipc:l,ipcInput:d},context:f,verboseInfo:p,fileDescriptors:h,originalStreams:m,onInternalError:_,controller:S})=>{let b=awe(t,f),x={originalStreams:m,fileDescriptors:h,subprocess:t,exitPromise:b,propagating:!1},y=Kwe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:x}),v=Zwe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:x}),T=[],I=Xwe({subprocess:t,buffer:r,maxBuffer:n,ipc:l,ipcOutput:T,verboseInfo:p}),P=Tlt(m,t,x),C=Alt(h,x);try{return await Promise.race([Promise.all([{},uwe(b),Promise.all(y),v,I,MEe(t,d),...P,...C]),_,Rlt(t,S),...IEe(t,s,f,S),...Qve({subprocess:t,cancelSignal:o,gracefulCancel:a,context:f,controller:S}),...OEe({subprocess:t,cancelSignal:o,gracefulCancel:a,forceKillAfterDelay:c,context:f,controller:S})])}catch(k){return f.terminationReason??="other",Promise.all([{error:k},b,Promise.all(y.map(w=>kY(w))),kY(v),eTe(I,T),Promise.allSettled(P),Promise.allSettled(C)])}},Tlt=(t,e,r)=>t.map((n,i)=>n===e.stdio[i]?void 0:MT(n,i,r)),Alt=(t,e)=>t.flatMap(({stdioItems:r},n)=>r.filter(({value:i,stream:s=i})=>Ho(s,{checkOpen:!1})&&!Bo(s)).map(({type:i,value:s,stream:o=s})=>MT(o,n,e,{isSameDirection:Ds.has(i),stopOnExit:i==="native"}))),Rlt=async(t,{signal:e})=>{let[r]=await wlt(t,"error",{signal:e});throw r};var rTe=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),$T=(t,e,r)=>{let n=t[r];n.has(e)||n.set(e,[]);let i=n.get(e),s=ja();return i.push(s),{resolve:s.resolve.bind(s),promises:i}},N_=async({resolve:t,promises:e},r)=>{t();let[n]=await Promise.race([Promise.allSettled([!0,r]),Promise.all([!1,...e])]);return!n};import{Readable as xlt}from"stream";import{callbackify as Olt}from"util";import{finished as nTe}from"stream/promises";var MY=async t=>{if(t!==void 0)try{await $Y(t)}catch{}},iTe=async t=>{if(t!==void 0)try{await LY(t)}catch{}},$Y=async t=>{await nTe(t,{cleanup:!0,readable:!1,writable:!0})},LY=async t=>{await nTe(t,{cleanup:!0,readable:!0,writable:!1})},GD=async(t,e)=>{if(await t,e)throw e},HD=(t,e,r)=>{r&&!VD(r)?t.destroy(r):e&&t.destroy()};var sTe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,binary:i=!0,preserveNewlines:s=!0}={})=>{let o=i||Ji.has(r),{subprocessStdout:a,waitReadableDestroy:c}=UY(t,n,e),{readableEncoding:u,readableObjectMode:l,readableHighWaterMark:d}=FY(a,o),{read:f,onStdoutDataDone:p}=zY({subprocessStdout:a,subprocess:t,binary:o,encoding:r,preserveNewlines:s}),h=new xlt({read:f,destroy:Olt(qY.bind(void 0,{subprocessStdout:a,subprocess:t,waitReadableDestroy:c})),highWaterMark:d,objectMode:l,encoding:u});return jY({subprocessStdout:a,onStdoutDataDone:p,readable:h,subprocess:t}),h},UY=(t,e,r)=>{let n=A_(t,e),i=$T(r,n,"readableDestroy");return{subprocessStdout:n,waitReadableDestroy:i}},FY=({readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r},n)=>n?{readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r}:{readableEncoding:t,readableObjectMode:!0,readableHighWaterMark:CY},zY=({subprocessStdout:t,subprocess:e,binary:r,encoding:n,preserveNewlines:i})=>{let s=ja(),o=BD({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:!r,encoding:n,preserveNewlines:i});return{read(){Plt(this,o,s)},onStdoutDataDone:s}},Plt=async(t,e,r)=>{try{let{value:n,done:i}=await e.next();i?r.resolve():t.push(n)}catch{}},jY=async({subprocessStdout:t,onStdoutDataDone:e,readable:r,subprocess:n,subprocessStdin:i})=>{try{await LY(t),await n,await MY(i),await e,r.readable&&r.push(null)}catch(s){await MY(i),oTe(r,s)}},qY=async({subprocessStdout:t,subprocess:e,waitReadableDestroy:r},n)=>{await N_(r,e)&&(oTe(t,n),await GD(e,n))},oTe=(t,e)=>{HD(t,t.readable,e)};import{Writable as Ilt}from"stream";import{callbackify as aTe}from"util";var cTe=({subprocess:t,concurrentStreams:e},{to:r}={})=>{let{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}=BY(t,r,e),o=new Ilt({...VY(n,t,i),destroy:aTe(HY.bind(void 0,{subprocessStdin:n,subprocess:t,waitWritableFinal:i,waitWritableDestroy:s})),highWaterMark:n.writableHighWaterMark,objectMode:n.writableObjectMode});return GY(n,o),o},BY=(t,e,r)=>{let n=aD(t,e),i=$T(r,n,"writableFinal"),s=$T(r,n,"writableDestroy");return{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}},VY=(t,e,r)=>({write:Clt.bind(void 0,t),final:aTe(klt.bind(void 0,t,e,r))}),Clt=(t,e,r,n)=>{t.write(e,r)?n():t.once("drain",n)},klt=async(t,e,r)=>{await N_(r,e)&&(t.writable&&t.end(),await e)},GY=async(t,e,r)=>{try{await $Y(t),e.writable&&e.end()}catch(n){await iTe(r),uTe(e,n)}},HY=async({subprocessStdin:t,subprocess:e,waitWritableFinal:r,waitWritableDestroy:n},i)=>{await N_(r,e),await N_(n,e)&&(uTe(t,i),await GD(e,i))},uTe=(t,e)=>{HD(t,t.writable,e)};import{Duplex as Nlt}from"stream";import{callbackify as Dlt}from"util";var lTe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,to:i,binary:s=!0,preserveNewlines:o=!0}={})=>{let a=s||Ji.has(r),{subprocessStdout:c,waitReadableDestroy:u}=UY(t,n,e),{subprocessStdin:l,waitWritableFinal:d,waitWritableDestroy:f}=BY(t,i,e),{readableEncoding:p,readableObjectMode:h,readableHighWaterMark:m}=FY(c,a),{read:_,onStdoutDataDone:S}=zY({subprocessStdout:c,subprocess:t,binary:a,encoding:r,preserveNewlines:o}),b=new Nlt({read:_,...VY(l,t,d),destroy:Dlt(Mlt.bind(void 0,{subprocessStdout:c,subprocessStdin:l,subprocess:t,waitReadableDestroy:u,waitWritableFinal:d,waitWritableDestroy:f})),readableHighWaterMark:m,writableHighWaterMark:l.writableHighWaterMark,readableObjectMode:h,writableObjectMode:l.writableObjectMode,encoding:p});return jY({subprocessStdout:c,onStdoutDataDone:S,readable:b,subprocess:t,subprocessStdin:l}),GY(l,b,c),b},Mlt=async({subprocessStdout:t,subprocessStdin:e,subprocess:r,waitReadableDestroy:n,waitWritableFinal:i,waitWritableDestroy:s},o)=>{await Promise.all([qY({subprocessStdout:t,subprocess:r,waitReadableDestroy:n},o),HY({subprocessStdin:e,subprocess:r,waitWritableFinal:i,waitWritableDestroy:s},o)])};var WY=(t,e,{from:r,binary:n=!1,preserveNewlines:i=!1}={})=>{let s=n||Ji.has(e),o=A_(t,r),a=BD({subprocessStdout:o,subprocess:t,binary:s,shouldEncode:!0,encoding:e,preserveNewlines:i});return $lt(a,o,t)},$lt=async function*(t,e,r){try{yield*t}finally{e.readable&&e.destroy(),await r}};var dTe=(t,{encoding:e})=>{let r=rTe();t.readable=sTe.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.writable=cTe.bind(void 0,{subprocess:t,concurrentStreams:r}),t.duplex=lTe.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.iterable=WY.bind(void 0,t,e),t[Symbol.asyncIterator]=WY.bind(void 0,t,e,{})};var fTe=(t,e)=>{for(let[r,n]of Ult){let i=n.value.bind(e);Reflect.defineProperty(t,r,{...n,value:i})}},Llt=(async()=>{})().constructor.prototype,Ult=["then","catch","finally"].map(t=>[t,Reflect.getOwnPropertyDescriptor(Llt,t)]);var pTe=(t,e,r,n)=>{let{file:i,commandArguments:s,command:o,escapedCommand:a,startTime:c,verboseInfo:u,options:l,fileDescriptors:d}=jlt(t,e,r),{subprocess:f,promise:p}=Blt({file:i,commandArguments:s,options:l,startTime:c,verboseInfo:u,command:o,escapedCommand:a,fileDescriptors:d});return f.pipe=qD.bind(void 0,{source:f,sourcePromise:p,boundOptions:{},createNested:n}),fTe(f,p),qa.set(f,{options:l,fileDescriptors:d}),f},jlt=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=JN(t,e,r),{file:a,commandArguments:c,options:u}=yD(t,e,r),l=qlt(u),d=Twe(l,o);return{file:a,commandArguments:c,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},qlt=({timeout:t,signal:e,...r})=>{if(e!==void 0)throw new TypeError('The "signal" option has been renamed to "cancelSignal" instead.');return{...r,timeoutDuration:t}},Blt=({file:t,commandArguments:e,options:r,startTime:n,verboseInfo:i,command:s,escapedCommand:o,fileDescriptors:a})=>{let c;try{c=zlt(...SD(t,e,r))}catch(h){return vwe({error:h,command:s,escapedCommand:o,fileDescriptors:a,options:r,startTime:n,verboseInfo:i})}let u=new AbortController;Flt(Number.POSITIVE_INFINITY,u.signal);let l=[...c.stdio];Nwe(c,a,u),Mwe(c,r,u);let d={},f=ja();c.kill=Yve.bind(void 0,{kill:c.kill.bind(c),options:r,onInternalError:f,context:d,controller:u}),c.all=Ywe(c,r),dTe(c,r),_we(c,r);let p=Vlt({subprocess:c,options:r,startTime:n,verboseInfo:i,fileDescriptors:a,originalStreams:l,command:s,escapedCommand:o,context:d,onInternalError:f,controller:u});return{subprocess:c,promise:p}},Vlt=async({subprocess:t,options:e,startTime:r,verboseInfo:n,fileDescriptors:i,originalStreams:s,command:o,escapedCommand:a,context:c,onInternalError:u,controller:l})=>{let[d,[f,p],h,m,_]=await tTe({subprocess:t,options:e,context:c,verboseInfo:n,fileDescriptors:i,originalStreams:s,onInternalError:u,controller:l});l.abort(),u.resolve();let S=h.map((y,v)=>iu(y,e,v)),b=iu(m,e,"all"),x=Glt({errorInfo:d,exitCode:f,signal:p,stdio:S,all:b,ipcOutput:_,context:c,options:e,command:o,escapedCommand:a,startTime:r});return I_(x,n,e)},Glt=({errorInfo:t,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:s,context:o,options:a,command:c,escapedCommand:u,startTime:l})=>"error"in t?IT({error:t.error,command:c,escapedCommand:u,timedOut:o.terminationReason==="timeout",isCanceled:o.terminationReason==="cancel"||o.terminationReason==="gracefulCancel",isGracefullyCanceled:o.terminationReason==="gracefulCancel",isMaxBuffer:t.error instanceof Ba,isForcefullyTerminated:o.isForcefullyTerminated,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:s,options:a,startTime:l,isSync:!1}):xD({command:c,escapedCommand:u,stdio:n,all:i,ipcOutput:s,options:a,startTime:l});var WD=(t,e)=>{let r=Object.fromEntries(Object.entries(e).map(([n,i])=>[n,Hlt(n,t[n],i)]));return{...t,...r}},Hlt=(t,e,r)=>Wlt.has(t)&&yr(e)&&yr(r)?{...e,...r}:r,Wlt=new Set(["env",...wK]);var Fl=(t,e,r,n)=>{let i=(o,a,c)=>Fl(o,a,r,c),s=(...o)=>Klt({mapArguments:t,deepOptions:r,boundOptions:e,setBoundExeca:n,createNested:i},...o);return n!==void 0&&n(s,i,e),s},Klt=({mapArguments:t,deepOptions:e={},boundOptions:r={},setBoundExeca:n,createNested:i},s,...o)=>{if(yr(s))return i(t,WD(r,s),n);let{file:a,commandArguments:c,options:u,isSync:l}=Ylt({mapArguments:t,firstArgument:s,nextArguments:o,deepOptions:e,boundOptions:r});return l?dwe(a,c,u):pTe(a,c,u,i)},Ylt=({mapArguments:t,firstArgument:e,nextArguments:r,deepOptions:n,boundOptions:i})=>{let s=TSe(e)?ASe(e,r):[e,...r],[o,a,c]=jN(...s),u=WD(WD(n,i),c),{file:l=o,commandArguments:d=a,options:f=u,isSync:p=!1}=t({file:o,commandArguments:a,options:u});return{file:l,commandArguments:d,options:f,isSync:p}};var hTe=({file:t,commandArguments:e})=>gTe(t,e),mTe=({file:t,commandArguments:e})=>({...gTe(t,e),isSync:!0}),gTe=(t,e)=>{if(e.length>0)throw new TypeError(`The command and its arguments must be passed as a single string: ${t} ${e}.`);let[r,...n]=Zlt(t);return{file:r,commandArguments:n}},Zlt=t=>{if(typeof t!="string")throw new TypeError(`The command must be a string: ${String(t)}.`);let e=t.trim();if(e==="")return[];let r=[];for(let n of e.split(Qlt)){let i=r.at(-1);i&&i.endsWith("\\")?r[r.length-1]=`${i.slice(0,-1)} ${n}`:r.push(n)}return r},Qlt=/ +/g;var _Te=(t,e,r)=>{t.sync=e(Jlt,r),t.s=t.sync},yTe=({options:t})=>STe(t),Jlt=({options:t})=>({...STe(t),isSync:!0}),STe=t=>({options:{...Xlt(t),...t}}),Xlt=({input:t,inputFile:e,stdio:r})=>t===void 0&&e===void 0&&r===void 0?{stdin:"inherit"}:{},vTe={preferLocal:!0};var ETe=Fl(()=>({})),far=Fl(()=>({isSync:!0})),bTe=Fl(hTe),par=Fl(mTe),har=Fl(kEe),mar=Fl(yTe,{},vTe,_Te),{sendMessage:gar,getOneMessage:_ar,getEachMessage:yar,getCancelSignal:Sar}=ywe();var wTe=!1,TTe,edt=t=>{TTe??=t},ATe=t=>{wTe=!0,edt(t)},kn=()=>wTe,su=()=>TTe,RTe=t=>{switch(t){case"SIGTERM":case"SIGINT":return t;case void 0:return"interrupted";default:return}};var LT=null,xTe=t=>(LT&&LT.destroy(),LT=new Ms({totalAllowedTime:t}),LT),OTe=()=>LT;var Ms=class{constructor({totalAllowedTime:e}){this.withStageTimer=async(e,r,n,{interruptible:i=!0}={})=>{if(this.isTimeExpired())throw new Error(`${e} stage did not complete in the allowed time. Time has already expired.`);if(i&&kn())throw new Error(`Aborting ${e} stage \u2014 shutting down`);let s=this.onTimesUp(()=>{throw new Error(`${e} stage did not complete in the allowed time.`)}),o=null,a=null;n!==void 0&&(a=new Promise((l,d)=>{o=setTimeout(()=>{d(new Error(`${e} stage exceeded its maximum duration of ${n}ms`))},n)}));let c=Date.now(),u="success";try{return await IC({stage:e},async()=>a?await Promise.race([r(),a]):await r())}catch(l){throw u="failure",l}finally{Y.timing("stage.duration",Date.now()-c,{stage:e,outcome:u}),s(),o&&clearTimeout(o)}};this.startTime=Date.now(),this.totalAllowedTime=e,this.globalTimeoutId=null,this.subscribers=[],this.hasTimedOut=!1,this.setupGlobalTimeout()}getElapsedTime(){return Date.now()-this.startTime}getRemainingTime(){let e=this.getElapsedTime(),r=this.totalAllowedTime-e;return Math.max(0,r)}isTimeExpired(){return this.getRemainingTime()===0||this.hasTimedOut}setupGlobalTimeout(){this.globalTimeoutId&&clearTimeout(this.globalTimeoutId),this.globalTimeoutId=setTimeout(()=>{this.notifyTimeUp()},this.totalAllowedTime)}notifyTimeUp(){this.hasTimedOut=!0;for(let e=this.subscribers.length-1;e>=0;e--)try{this.subscribers[e]()}catch(r){console.error("TimeKeeper: Error in time up callback:",r)}}onTimesUp(e){if(this.subscribers.push(e),this.hasTimedOut)try{e()}catch(r){console.error("TimeKeeper: Error in time up callback:",r)}return()=>{let r=this.subscribers.indexOf(e);r>-1&&this.subscribers.splice(r,1)}}off(e){let r=this.subscribers.indexOf(e);r>-1&&this.subscribers.splice(r,1)}clearSubscribers(){this.subscribers.length=0}getSubscriberCount(){return this.subscribers.length}destroy(){this.globalTimeoutId&&(clearTimeout(this.globalTimeoutId),this.globalTimeoutId=null),this.clearSubscribers()}static{this.timeUnits={seconds:e=>e*1e3,minutes:e=>e*60*1e3,hours:e=>e*60*60*1e3}}};var PTe={name:"@netlify/agent-runner-cli",type:"module",version:"1.200.2-bug.8",description:"CLI tool for running Netlify agents",main:"./dist/index.js",types:"./dist/index.d.ts",exports:"./dist/index.js",bin:{"agent-runner-cli":"./dist/bin.js","agent-runner-cli-local":"./dist/bin-local.js"},files:["dist/**/*.js","dist/**/*.d.ts","dist/skills/**","patches","scripts"],scripts:{prebuild:"rm -rf dist",build:"tsup",dev:"tsup --watch",prepare:"husky install node_modules/@netlify/eslint-config-node/.husky/",prepublishOnly:"npm ci && npm test",prepack:"npm run build",test:"run-s build format test:dev",format:"run-s build format:check-fix:*","format:ci":"run-s build format:check:*","format:check-fix:lint":"run-e format:check:lint format:fix:lint","format:check:lint":'eslint --cache --format=codeframe --max-warnings=0 "{src,scripts,test,.github}/**/*.{js,ts,md,html}"',"format:fix:lint":'eslint --fix --cache --format=codeframe --max-warnings=0 "{src,scripts,test,.github}/**/*.{js,ts,md,html}"',"format:check-fix:prettier":"run-e format:check:prettier format:fix:prettier","format:check:prettier":'prettier --check --ignore-path .gitignore --loglevel=warn "{src,scripts,test,.github}/**/*.{js,ts,md,yml,json,html}" "*.{js,ts,yml,json,html}" ".*.{js,ts,yml,json,html}" "!**/package-lock.json" "!package-lock.json" "!src/skills/**/*.md"',"format:fix:prettier":'prettier --write --ignore-path .gitignore --loglevel=warn "{src,scripts,test,.github}/**/*.{js,ts,md,yml,json,html}" "*.{js,ts,yml,json,html}" ".*.{js,ts,yml,json,html}" "!**/package-lock.json" "!package-lock.json" "!src/skills/**/*.md"',"test:dev":"run-s build test:dev:*","test:ci":"run-s build test:ci:*","test:dev:vitest":"LOG=0 vitest --exclude '**/integration/**'","test:ci:vitest":"LOG=0 vitest run --coverage --exclude '**/integration/**'","test:smoke":"node scripts/smoke-dist.js","test:integration":"vitest run test/integration/","test:integration:codex":"vitest run test/integration/codex.test.ts","test:integration:claude":"vitest run test/integration/claude.test.ts","test:integration:gemini":"vitest run test/integration/gemini.test.ts","test:integration:opencode":"vitest run test/integration/opencode.test.ts","test:integration:muse":"vitest run test/integration/muse.test.ts","test:integration:skill-invocation":"vitest run test/integration/skill-invocation.test.ts","check:types":"tsc --noEmit",postinstall:"node scripts/postinstall.js"},engines:{node:">=22"},keywords:[],license:"MIT",repository:"netlify/agent-runner-cli",bugs:{url:"https://github.com/netlify/agent-runner-cli/issues"},author:"Netlify Inc.",directories:{test:"test"},devDependencies:{"@commitlint/cli":"^20.0.0","@commitlint/config-conventional":"^20.0.0","@eslint/compat":"^2.0.0","@eslint/js":"^10.0.1","@netlify/axis":"^1.21.0","@netlify/eslint-config-node":"^7.0.1","@types/node":"^24.5.0","@typescript-eslint/eslint-plugin":"^8.0.0","@typescript-eslint/parser":"^8.0.0","@vitest/coverage-v8":"^4.1.5","@vitest/eslint-plugin":"^1.6.6",eslint:"^10.5.0","eslint-config-prettier":"^10.1.8","eslint-plugin-n":"^17.0.0",husky:"^9.0.0",jiti:"^2.7.0","patch-package":"^8.0.0",tsup:"^8.5.0",typescript:"^5.0.0","typescript-eslint":"^8.44.0",vitest:"^4.0.16"},dependencies:{"@anthropic-ai/claude-code":"^2.1.295","@anthropic-ai/sdk":"^0.134.0","@google/gemini-cli":"0.63.0","@modelcontextprotocol/sdk":"^1.29.0","@netlify/cache-utils":"^6.0.5","@netlify/database-proxy":"^0.2.2","@netlify/otel":"^6.0.6","@netlify/ts-cli":"^1.2.0","@openai/codex":"0.162.0","@opentelemetry/api":"^1.9.0","@opentelemetry/exporter-trace-otlp-grpc":"0.218.0",execa:"^9.6.1",fastify:"5.12.5",minimist:"^1.2.8",openai:"7.31.0",zod:"^4.4.3"}};var idt=rdt(import.meta.url),sdt=ou.dirname(idt),odt=ndt(import.meta.url),D_=ne("shell"),KY=new Set,ITe={preferLocal:!0},yt=(t,e,r)=>{let[n,i]=adt(e,r),s={...ITe,...i},o=ETe(t,n,s);kTe(o,s),MTe(o);let a=r?.idleTimeout;return a&&a>0&&DTe(o,a),o},CTe=(t,e)=>{let r={...ITe,...e},n=bTe(t,r);return kTe(n,r),MTe(n),e?.idleTimeout&&e.idleTimeout>0&&DTe(n,e.idleTimeout),n},adt=function(t,e){return Array.isArray(t)?[t,e]:typeof t=="object"&&t!==null?[[],t]:[[],void 0]},kTe=(t,e)=>{if(e.stdio!==void 0||e.stdout!==void 0||e.stderr!==void 0||Ga.env.NETLIFY_LOCAL_QUIET==="true")return;if(Ga.env.NETLIFY_MASK_LOGS!=="false"){t.stdout?.pipe(new Rb).pipe(Ga.stdout),t.stderr?.pipe(new Rb).pipe(Ga.stderr);return}t.stdout?.pipe(Ga.stdout),t.stderr?.pipe(Ga.stderr)},YY=(t,e="SIGTERM")=>{try{return t.pid&&!t.killed?(Ga.kill(-t.pid,e),D_.log(`Killed process ${t.pid} with signal ${e}`),!0):!1}catch(r){return D_.error("Error killing process:",r),!1}},NTe=t=>YY(t,"SIGKILL"),DTe=(t,e)=>{let r=null,n=()=>{D_.log(`Process ${t.pid} killed due to idle timeout (no output for ${e}ms)`),YY(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(D_.log(`Force killing idle process ${t.pid}`),NTe(t))},5e3)},i=()=>{r&&clearTimeout(r),r=setTimeout(n,e)};i(),t.stdout?.on("data",i),t.stderr?.on("data",i);let s=()=>{r&&(clearTimeout(r),r=null)};t.on("exit",s),t.on("error",s)},MTe=t=>{KY.add(t);let e=OTe();if(e){let r=e.onTimesUp(()=>{D_.log(`Global timer expired, killing process ${t.pid}`),YY(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(D_.log(`Force killing process ${t.pid} after timeout`),NTe(t))},5e3)});t.on("exit",()=>{KY.delete(t),r()}),t.on("error",()=>{KY.delete(t),r()})}};function Ha(t,e){if(!Ga.env.NETLIFY_LOCAL_MODE)try{let i=odt.resolve(PTe.name),s=ou.dirname(i);for(;s!==ou.dirname(s);){let o=ou.dirname(s);if(ou.basename(o)==="node_modules"){let a=ou.join(o,".bin",e);if(KD.existsSync(a))return a;break}s=o}}catch(i){console.error("Could not resolve package.json",i)}if(Ga.env.NODE_PATH){let i=ou.join(Ga.env.NODE_PATH,".bin",e);if(KD.existsSync(i))return i}let r=ou.join(t,"node_modules",".bin",e);if(KD.existsSync(r))return r;let n=ou.join(sdt,"..","node_modules",".bin",e);if(KD.existsSync(n))return n}var $Te=ne("repo"),jTe="runner-diffs-",ZY=t=>`${jTe}${t}-`,qTe=async t=>{let e=ZD.tmpdir(),r;try{r=await ti.readdir(e)}catch{return}await Promise.all(r.filter(n=>n.startsWith(jTe)&&!n.startsWith(ZY(t))).map(n=>ti.rm($s.join(e,n),{recursive:!0,force:!0}).catch(()=>{})))},LTe=async t=>{let e=cdt("sha256");for await(let r of udt(t))e.update(r);return e.digest("hex")},UTe=async(t,e)=>t.size===e.size&&await LTe(t.path)===await LTe(e.path),BTe=/.. (.+)?\.log$/,ldt=[BTe],ddt=1,FTe=t=>{let e=t.split(`
388
388
  `).reduce((r,n)=>{if(!n)return r;let[i,s,,...o]=n,a=o.join(""),c=i.trim(),u=s.trim();return r[a]?r[a].change=u:r[a]={filePath:a,stage:c,change:u},r},{});return Object.values(e)},fdt=t=>t instanceof Error&&String(t.stderr??"").includes("No such remote"),pdt=t=>{let e=t instanceof Error?t.message:String(t),r=String(t?.stderr??"").trim();return yi(r?`${e}: ${r}`:e)},zTe={stdin:"pipe",stdout:"pipe",stderr:"pipe",stripFinalNewline:!1},YD=500,UT=class extends Error{constructor(r,n){super(n instanceof Error?n.message:String(n));this.step=r;this.cause=n}},Oi=class{constructor(e=process.cwd()){this.cwd=e}getRoot(){return this.root??=this.run(["rev-parse","--show-toplevel"],{stdout:"pipe"}).then(({stdout:e})=>String(e).trim()),this.root}async restorePausedWork(e){let r="restore";try{let n=await this.restorePausedFiles(e);r="stage",await this.stageBuildSetup();let i=await this.getRoot(),s=new Set(n.changedFiles),o=(await this.listIndexEntries(n.deletedFiles,{cwd:i})).filter(({filePath:a})=>!s.has(a));return await this.unstageFiles(n.changedFiles,{cwd:i}),o.length>0&&await ti.writeFile(await this.getSetupMetadataPath(),JSON.stringify(o)),{rewrittenFileCount:n.rewrittenFileCount}}catch(n){throw new UT(r,n)}}run(e,r={}){return yt("git",e,{cwd:this.cwd,...r,env:{...r.env,NETLIFY_INTERNAL_GIT:"1"}})}async commitAndCreateDiffs({config:e,isRetry:r}){$Te.info("Getting runner diffs");let n=await this.hasAgentChanges(),{hasChanges:i}=n,{status:s}=n;if(!i)return{hasChanges:!1};if(!r){let u=FTe(s);await this.discardSetupOnlyChanges(u)}$Te.info("Changes after processing"),await this.getStatus();let o=await this.getIgnoredPathspecs(s);if(await this.stageFiles(o),await this.excludeUnchangedSetupDescendants(),i=await this.hasStagedChanges(),!i)return{hasChanges:!1,ignored:o};await this.run(["commit","-m","Agent runner [skip ci]"]);let a=await ti.mkdtemp($s.join(ZD.tmpdir(),ZY(e.sessionId))),c=await this.writeDiffFiles({config:e,diffDir:a,target:{commit:"HEAD"},ignored:o});return await this.rollbackIfLocal(),c.hasChanges&&Y.distribution("diff.size",(c.diffBinary??c.diff).size,{phase:"final"}),c}async getStatus(){let e=await this.run(["-c","status.relativePaths=true","status","-s"]);return String(e.stdout??"")}async hasAgentChanges(){let e=await this.getStatus();return{hasChanges:(e.trim().length===0?[]:e.split(`
389
389
  `).filter(i=>ldt.some(o=>o instanceof RegExp?o.test(i):i===o)?!1:i[1]?.trim()!=="")).length!==0,status:e}}async getCurrentCommitSha(){let{stdout:e}=await this.run(["rev-parse","HEAD"]);return String(e??"").trim()}async reset(){await this.run(["reset","--hard","HEAD"]),await ti.rm(await this.getSetupMetadataPath(),{force:!0})}async discardSetupOnlyChanges(e){let r=e.filter(n=>n.stage&&!n.change).map(n=>n.filePath);r.length!==0&&await this.run(["restore","--staged","--worktree","--pathspec-from-file=-"],{input:r.join(`
390
390
  `)})}async stageBuildSetup(){await ti.rm(await this.getSetupMetadataPath(),{force:!0});let e=await this.getIgnoredPathspecs();await this.stageFiles(e)}getSetupMetadataPath(){return this.setupMetadataPath??=this.getRoot().then(async e=>{let{stdout:r}=await this.run(["rev-parse","--git-path","netlify-agent-runner-setup.json"],{cwd:e,stdout:"pipe"});return $s.resolve(e,String(r).trim())}),this.setupMetadataPath}async listIndexEntries(e,r){let n=[];for(let i=0;i<e.length;i+=YD){let s=e.slice(i,i+YD).map(a=>`:(literal)${a}`),{stdout:o}=await this.run(["ls-files","--stage","-z","--",...s],{...zTe,...r});for(let a of String(o??"").split("\0").filter(Boolean))n.push({filePath:a.slice(a.indexOf(" ")+1),entry:a})}return n}async excludeUnchangedSetupDescendants(e){let r;try{r=JSON.parse(await ti.readFile(await this.getSetupMetadataPath(),"utf8"))}catch(a){if(a.code==="ENOENT")return;throw a}let i={cwd:await this.getRoot(),env:e},s=new Map((await this.listIndexEntries(r.map(({filePath:a})=>a),i)).map(({filePath:a,entry:c})=>[a,c])),o=r.filter(({filePath:a,entry:c})=>s.get(a)===c);o.length!==0&&await this.run(["update-index","--force-remove","-z","--stdin"],{...i,input:o.map(({filePath:a})=>a).join("\0")})}async getIgnoredPathspecs(e){e||=await this.getStatus();let r=[".netlify","node_modules","dist",".next","out",".nuxt",".output",".cache",".turbo",".parcel-cache","coverage",".nyc_output","storybook-static","public/build","CLAUDE.local.md"],n=[];return e.split(`
@@ -577,7 +577,7 @@ ${o.trim()}
577
577
  \`\`\``),{title:n,message:o,category:i}};import Oh from"fs/promises";import vR from"os";import xd from"path";import GS from"process";import PSt from"readline";import yR from"fs/promises";import ASt from"os";import tL from"path";var uIe=ne("gemini_session"),RSt=t=>t instanceof Error?t.message:String(t),xSt=t=>{let e=!1;if(Array.isArray(t?.toolCalls))for(let n of t.toolCalls)n&&typeof n=="object"&&"id"in n&&(delete n.id,e=!0);let r=typeof t?.content=="object"?t.content?.parts:void 0;if(Array.isArray(r))for(let n of r)n?.functionCall&&typeof n.functionCall=="object"&&"id"in n.functionCall&&(delete n.functionCall.id,e=!0);return e},OSt=async t=>{let r=(await yR.readFile(t,"utf8")).split(`
578
578
  `),n=!1,i=r.map(s=>{if(!s.trim())return s;let o;try{o=JSON.parse(s)}catch{return s}return xSt(o)?(n=!0,JSON.stringify(o)):s});return n&&await yR.writeFile(t,i.join(`
579
579
  `),"utf8"),n},i8=async(t,e=tL.join(ASt.homedir(),".gemini"))=>{let r=tL.join(e,"tmp"),n=t.slice(0,8),i;try{i=await yR.readdir(r)}catch{return}for(let s of i){let o=tL.join(r,s,"chats"),a;try{a=await yR.readdir(o)}catch{continue}for(let c of a){if(!c.endsWith(".jsonl")||!c.includes(n))continue;let u=tL.join(o,c);try{let l=(await yR.readFile(u,"utf8")).split(`
580
- `,1)[0];if(JSON.parse(l).sessionId===t)return u}catch{continue}}}},SR=async t=>{try{let e=await i8(t);return e?(await OSt(e),!0):(uIe.log(`No gemini session file for ${t}; not resumable, using fresh session`),!1)}catch(e){return uIe.warn(`Could not sanitize gemini session ${t} for resume; using fresh session`,{error:RSt(e)}),!1}};var s8={list_directory:{name:"List directory",category:W.Explore},read_file:{name:"Read file",category:W.FileRead},write_file:{name:"Edit file",category:W.FileWrite},glob:{name:"Find files",category:W.Explore},search_file_content:{name:"Search files",category:W.Explore},replace:{name:"Edit file",category:W.FileWrite},run_shell_command:{name:"Run command",category:W.RunCommand},web_fetch:{name:"Fetch web",category:W.Web},web_search:{name:"Search web",category:W.Web},google_web_search:{name:"Search web",category:W.Web},update_topic:{name:"Update topic",category:W.Plan},read_many_files:{name:"Read files",category:W.FileRead},save_memory:{name:"Memorize",category:W.Memorize},activate_skill:{name:"Use Skill",category:W.Skill},grep_search:{name:"Search files",category:W.Explore}};var an=ne("runner_gemini"),rL="Gemini CLI",ISt="gemini-3.8-flash",CSt=({catchError:t,runCmd:e,error:r,result:n,runnerName:i})=>(an.log(`${i} command completed with catch handler triggered`,{hadExistingError:!!r,hadExistingResult:!!n,resultLength:n?n.length:0,catchError:t?.message||"No error object",processExitCode:e.exitCode,processKilled:e.killed}),n?(an.log("Preserving existing result despite catch handler being triggered"),r?{error:r,result:n}:{error:"Process completed with errors but result was captured",result:n}):(an.log("Setting result to undefined because no valid result was captured"),{error:r||`${i} failed`,result:void 0})),kSt={low:"LOW",medium:"MEDIUM",high:"HIGH"},NSt=t=>Number(/^gemini-(\d+)/.exec(t??"")?.[1]),lIe=t=>NSt(t)>=3,DSt=(t,{model:e,effort:r})=>{let n=t.modelConfigs?.customAliases??{};!r||!lIe(e)?(r&&an.log(`Model '${e}' does not support thinkingLevel; running at the model default effort`),delete n[e]):n[e]={extends:"chat-base-3",modelConfig:{model:e,generateContentConfig:{thinkingConfig:{thinkingLevel:kSt[r]}}}},Object.keys(n).length!==0&&(t.modelConfigs={...t.modelConfigs,customAliases:n})},MSt=async({config:t,model:e,effort:r,creditWrapUpTurn:n,setup:i}={})=>{let{proxied:s,close:o}=await Ml(t),a=xd.join(vR.homedir(),".gemini"),c=xd.join(a,"settings.json");try{await Oh.mkdir(a,{recursive:!0});let u={};try{let d=await Oh.readFile(c,"utf-8");u=JSON.parse(d)}catch{an.log("Creating new Gemini CLI settings file")}u.general||(u.general={}),u.general.previewFeatures||(u.general.previewFeatures=!0),u.model||(u.model={}),u.model.compressionThreshold!==.3&&(u.model.compressionThreshold=.3),u.skills||(u.skills={}),u.skills.enabled=!0,u.context||(u.context={}),u.context.fileName=["GEMINI.md","AGENTS.md"],DSt(u,{model:e,effort:r}),u.mcpServers={...u.mcpServers},delete u.mcpServers[Lr],delete u.mcpServers[Cn],Pi({creditWrapUpTurn:n})&&Object.assign(u.mcpServers,jT({trust:!0,...i?{env:YTe()}:{}},i));let l=Za(t,{creditWrapUpTurn:n,proxied:s});l&&Object.assign(u.mcpServers,t9(l,{trust:!0,env:ZTe()},KTe)),await Oh.writeFile(c,JSON.stringify(u,null,2),"utf-8"),an.log("Configured Gemini CLI settings (preview features and compression threshold)")}catch(u){an.error("Failed to ensure Gemini CLI settings",{error:u.message}),Y.inc("context.degraded",1,{component:"agent_config"})}return o},$St=async({continueSession:t,priorAgentSessionId:e})=>{if(!t||!e)return!1;let r=await SR(e);return r||(an.log(`Gemini resume requested for session ${e} but it was not resumable; starting a fresh session`),Y.inc("inference.native_resume",1,{outcome:"sanitize_failed"})),r},LSt=t=>{t?.category===W.Skill&&t.type&&eu(an,Fa(t.type))},USt=({aiGateway:t})=>{if(t){let{token:e,url:r}=t;if(!e||!r)throw new Error("No token or url provided from AI Gateway");GS.env.GEMINI_API_KEY=e,GS.env.GOOGLE_GEMINI_BASE_URL=r}else if(!GS.env.GEMINI_API_KEY)throw new Error("GEMINI_API_KEY is not provided")},FSt=async({aiGateway:t,config:e,model:r})=>{let n=r;if(t){let i=e.modelVersionOverrides?.gemini?.[e.accountType];if(i){if(!await t.isModelAvailableForProvider("gemini",i))throw new Error(`Model override '${i}' is not available for gemini provider`);n=i}if(n)i||await t.isModelAvailableForProvider("gemini",n)||(an.log(`Model '${n}' is not available for gemini provider, proceeding without model specification`),Y.inc("model.unavailable",1,{provider:"gemini"}),n=void 0);else{let s=await t.getDefaultModelForRunner?.("gemini"),o=s||ISt,a=s?"catalog":"built-in";o&&await t.isModelAvailableForProvider("gemini",o)?(n=o,an.log(`Using ${a} default model: ${o}`)):o&&an.log(`Default model ${o} is not available, proceeding without model specification`)}}return n},zSt=async({config:t,cliPath:e})=>{let r=[`[[rule]]
580
+ `,1)[0];if(JSON.parse(l).sessionId===t)return u}catch{continue}}}},SR=async t=>{try{let e=await i8(t);return e?(await OSt(e),!0):(uIe.log(`No gemini session file for ${t}; not resumable, using fresh session`),!1)}catch(e){return uIe.warn(`Could not sanitize gemini session ${t} for resume; using fresh session`,{error:RSt(e)}),!1}};var s8={list_directory:{name:"List directory",category:W.Explore},read_file:{name:"Read file",category:W.FileRead},write_file:{name:"Edit file",category:W.FileWrite},glob:{name:"Find files",category:W.Explore},search_file_content:{name:"Search files",category:W.Explore},replace:{name:"Edit file",category:W.FileWrite},run_shell_command:{name:"Run command",category:W.RunCommand},web_fetch:{name:"Fetch web",category:W.Web},web_search:{name:"Search web",category:W.Web},google_web_search:{name:"Search web",category:W.Web},update_topic:{name:"Update topic",category:W.Plan},read_many_files:{name:"Read files",category:W.FileRead},save_memory:{name:"Memorize",category:W.Memorize},activate_skill:{name:"Use Skill",category:W.Skill},grep_search:{name:"Search files",category:W.Explore}};var an=ne("runner_gemini"),rL="Gemini CLI",ISt="gemini-3.8-flash",CSt=({catchError:t,runCmd:e,error:r,result:n,runnerName:i})=>(an.log(`${i} command completed with catch handler triggered`,{hadExistingError:!!r,hadExistingResult:!!n,resultLength:n?n.length:0,catchError:t?.message||"No error object",processExitCode:e.exitCode,processKilled:e.killed}),n?(an.log("Preserving existing result despite catch handler being triggered"),r?{error:r,result:n}:{error:"Process completed with errors but result was captured",result:n}):(an.log("Setting result to undefined because no valid result was captured"),{error:r||`${i} failed`,result:void 0})),kSt={low:"LOW",medium:"MEDIUM",high:"HIGH"},NSt=t=>Number(/^gemini-(\d+)/.exec(t??"")?.[1]),lIe=t=>NSt(t)>=3,DSt=(t,{model:e,effort:r})=>{let n=t.modelConfigs?.customAliases??{};!r||!lIe(e)?(r&&an.log(`Model '${e}' does not support thinkingLevel; running at the model default effort`),delete n[e]):n[e]={extends:"chat-base-3",modelConfig:{model:e,generateContentConfig:{thinkingConfig:{thinkingLevel:kSt[r]}}}},Object.keys(n).length!==0&&(t.modelConfigs={...t.modelConfigs,customAliases:n})},MSt=async({config:t,model:e,effort:r,creditWrapUpTurn:n,setup:i}={})=>{let{proxied:s,close:o}=await Ml(t),a=xd.join(vR.homedir(),".gemini"),c=xd.join(a,"settings.json");try{await Oh.mkdir(a,{recursive:!0});let u={};try{let d=await Oh.readFile(c,"utf-8");u=JSON.parse(d)}catch{an.log("Creating new Gemini CLI settings file")}u.general||(u.general={}),u.general.previewFeatures||(u.general.previewFeatures=!0),u.model||(u.model={}),u.model.compressionThreshold!==.3&&(u.model.compressionThreshold=.3),u.security={...u.security,auth:{...u.security?.auth,selectedType:"gemini-api-key"}},u.skills||(u.skills={}),u.skills.enabled=!0,u.context||(u.context={}),u.context.fileName=["GEMINI.md","AGENTS.md"],DSt(u,{model:e,effort:r}),u.mcpServers={...u.mcpServers},delete u.mcpServers[Lr],delete u.mcpServers[Cn],Pi({creditWrapUpTurn:n})&&Object.assign(u.mcpServers,jT({trust:!0,...i?{env:YTe()}:{}},i));let l=Za(t,{creditWrapUpTurn:n,proxied:s});l&&Object.assign(u.mcpServers,t9(l,{trust:!0,env:ZTe()},KTe)),await Oh.writeFile(c,JSON.stringify(u,null,2),"utf-8"),an.log("Configured Gemini CLI settings (preview features and compression threshold)")}catch(u){an.error("Failed to ensure Gemini CLI settings",{error:u.message}),Y.inc("context.degraded",1,{component:"agent_config"})}return o},$St=async({continueSession:t,priorAgentSessionId:e})=>{if(!t||!e)return!1;let r=await SR(e);return r||(an.log(`Gemini resume requested for session ${e} but it was not resumable; starting a fresh session`),Y.inc("inference.native_resume",1,{outcome:"sanitize_failed"})),r},LSt=t=>{t?.category===W.Skill&&t.type&&eu(an,Fa(t.type))},USt=({aiGateway:t})=>{if(t){let{token:e,url:r}=t;if(!e||!r)throw new Error("No token or url provided from AI Gateway");GS.env.GEMINI_API_KEY=e,GS.env.GOOGLE_GEMINI_BASE_URL=r}else if(!GS.env.GEMINI_API_KEY)throw new Error("GEMINI_API_KEY is not provided")},FSt=async({aiGateway:t,config:e,model:r})=>{let n=r;if(t){let i=e.modelVersionOverrides?.gemini?.[e.accountType];if(i){if(!await t.isModelAvailableForProvider("gemini",i))throw new Error(`Model override '${i}' is not available for gemini provider`);n=i}if(n)i||await t.isModelAvailableForProvider("gemini",n)||(an.log(`Model '${n}' is not available for gemini provider, proceeding without model specification`),Y.inc("model.unavailable",1,{provider:"gemini"}),n=void 0);else{let s=await t.getDefaultModelForRunner?.("gemini"),o=s||ISt,a=s?"catalog":"built-in";o&&await t.isModelAvailableForProvider("gemini",o)?(n=o,an.log(`Using ${a} default model: ${o}`)):o&&an.log(`Default model ${o} is not available, proceeding without model specification`)}}return n},zSt=async({config:t,cliPath:e})=>{let r=[`[[rule]]
581
581
  toolName = "web_fetch"
582
582
  decision = "allow"
583
583
  priority = 10
@@ -589,7 +589,7 @@ priority = 20
589
589
  `),an.log("Ask policy allows the read-only database query command",{allowedPrefixes:i})}let n=xd.join(vR.homedir(),".gemini","ask-policy.toml");return await Oh.mkdir(xd.dirname(n),{recursive:!0}),await Oh.writeFile(n,r.join(`
590
590
  `),"utf-8"),n};async function o8({config:t,persistSteps:e=void 0,sendSteps:r=void 0,aiGateway:n,continueSession:i=!1,priorAgentSessionId:s=void 0,cwd:o=GS.cwd(),cliPath:a="netlify",abortSignal:c=void 0,onSessionId:u=void 0,forceLowEffortForCreditWrapUp:l=void 0}){let{prompt:d}=t,f=Wa("gemini",t.effort);t.effort&&!f&&an.log(`Effort '${t.effort}' is not available on ${rL}; using its default`);let p=l?"low":f;USt({aiGateway:n});let h=await FSt({aiGateway:n,config:t,model:t.model}),m=Us({creditWrapUpTurn:l})?await zs():void 0,_=m?Fs(t,m.filePath):void 0,S=await MSt({config:t,model:h,effort:p,creditWrapUpTurn:l,setup:_}),b=[],x=[],y=[],v={},T=0,I=0,P,C,k,w,B,L=await $St({continueSession:i,priorAgentSessionId:s}),E=t.mode==="ask",O=E?await zSt({config:t,cliPath:a}):void 0,$=[Ha(o,"gemini"),...h?["--model",h]:[],...E?["--approval-mode","default","--policy",O]:["--yolo"],"--skip-trust","--output-format","stream-json",...L?["-r",s]:[],"-p",""],J=`${GS.env.NVM_BIN}/node`;an.log(`Running ${J} ${$.join(" ")}`);let Q=yt(J,$,{all:!0,env:{...GS.env,GEMINI_CLI_NO_RELAUNCH:"1"},cwd:o,idleTimeout:Ki,cancelSignal:c});Q.stdin?.end(d);let te=m?js(m.filePath,ge=>{B||(B={setupRequest:ge},Q.kill())}):void 0,Re=Ua(()=>{e?.({steps:b,duration:I}),r?.({steps:x,duration:I}),x=[]},250),Ee=(ge,j)=>{ge.id=T,T+=1,y.push(ge),b.push(ge),x.push(ge),j||Re.flush(),Re(),j&&Re.flush()},Se=h||"default";Tr(t)||Ee({title:`Using ${rL} with ${Se}`,category:W.Environment},!0);let Te=PSt.createInterface({input:Q.all});Te.on("error",ge=>{an.error("Readline interface error",{error:ge.message,stack:ge.stack})});let be="",me=()=>{be&&Ee({message:be.trim(),category:W.AgentMessage}),be=""};Te.on("line",ge=>{let j;try{if(ge.startsWith("[API Error")){let F=ge.match(/\[api error: (.+?)]$/i)?.[1];j={type:"error",value:pp(F,!1)?.error?.message||F||"Gemini encountered error"}}else j=JSON.parse(ge)}catch{return}if(j)switch(j.type==="init"&&typeof j.session_id=="string"&&(w=j.session_id,u?.(w)),["message","result"].includes(j.type)||me(),j.type){case"message":{j.role!=="user"&&j.content&&(be+=j.content);break}case"tool_use":{let F=j.tool_id&&!B?jl(j.tool_name,j.parameters,oK):void 0;if(F&&"interaction"in F){B=F.interaction,Q.kill();break}if(F){an.warn("Ignoring malformed pause tool input",{toolUseId:j.tool_id,tool:j.tool_name,issues:F.issues}),Y.inc(F.metric,1);break}if(Qa(j.tool_name,oK))break;let D=s8[j.tool_name]?.name??j.tool_name,V=j.parameters?.file_path,K=V&&xd.relative(o,V),re=j.parameters?.command,X=j.tool_name==="activate_skill"&&j.parameters?.name,ue=j.tool_name==="run_shell_command"&&Xi(re),De=[D,K&&`\`${K}\``,re&&`\`${re}\``].filter(Boolean).join(" ");if(X)De=`Use ${Fa(X)}`;else if(ue)De="Generating the site";else if(j.tool_name==="grep_search"){let{dir_path:Oe,pattern:$e}=j.parameters||{};Oe&&$e?De=`Search in \`${Oe}\` for \`${$e}\``:Oe?De=`Search in \`${Oe}\``:$e&&(De=`Search for \`${$e}\``)}else if(j.tool_name==="update_topic"){let Oe=j.parameters?.title;Oe&&(De=`${D} \`${Oe}\``)}let ot={title:De,category:ue?W.SiteGeneration:s8[j.tool_name]?.category,...X&&{type:X}};v[j.tool_id]=ot,Re.flush();break}case"tool_result":{let F=v[j.tool_id];F&&(j.output&&(F.message=`\`\`\`
591
591
  ${j.output.trim()}
592
- \`\`\``),Ee(F,!0),LSt(F));break}case"result":{I=j.stats?.duration_ms,j.stats&&(xa(j.stats,h?{model:h}:{}),k=j.stats),j.status==="error"?C=j.error?.message:P=be.trim();break}case"error":{C=j.error;break}case"finished":break;case"init":break;default:{an.warn("Unhandled message type:",j.type);break}}});let de=!1;if(await Q.catch(ge=>{de=Ls(ge,c),{error:C,result:P}=CSt({catchError:ge,runCmd:Q,error:C,result:P,runnerName:"Gemini"})}),te?.stop(),await Promise.all([m?.remove(),S()]),Te.close(),B)return Re.flush(),{steps:y,duration:I,agentSessionId:w,resolvedModel:h,usage:k,pendingInteraction:B};let Le=de;Le&&(!P&&be.trim()&&(P=be.trim()),C=void 0),Re.flush();let{providerFailure:We,classification:ee}=qs({error:C});return{steps:y,duration:I,result:await Bs({initialResult:P,agentName:rL,hasError:!!C}),error:Vs({error:C,agentName:rL}),isRetryableError:ee?.retryable??Gs(C),isProviderUnavailableError:ee?.providerFault??Hs(C),...We?{providerFailure:We}:{},resolvedModel:h,usage:k,agentSessionId:w,...p&&lIe(h)?{effort:p}:{},...Le?{aborted:!0}:{}}}var dIe=async()=>{let t=xd.join(vR.homedir(),".gemini");await Oh.rm(t,{recursive:!0,force:!0});let e=xd.join(vR.homedir(),".agents","skills");await Oh.rm(e,{recursive:!0,force:!0})},fIe={baseDir:xd.join(vR.homedir(),".gemini"),include:["tmp"]};import ER from"fs/promises";import SIe from"os";import Pd from"path";import aL from"process";import HSt from"readline";import pIe from"fs/promises";var jSt=ne("interaction-files"),qSt=250,BSt=t=>{let e;try{e=JSON.parse(t)}catch{return{issues:"invalid_json"}}let r=nM.safeParse(e);return r.success?{questions:r.data.questions}:{issues:M_(r.error.issues)}},hIe=(t,e,r,n)=>{let i=!0,s=setInterval(async()=>{let o=await pIe.readFile(t,"utf-8").catch(()=>{});if(o===void 0)return;clearInterval(s),await pIe.rm(t,{force:!0}).catch(()=>{});let{value:a,issues:c}=e(o);if(a===void 0){jSt.warn(n.message,{filePath:t,issues:c}),Y.inc(n.metric,1);return}i&&r(a)},qSt);return s.unref(),{stop:()=>{i=!1,clearInterval(s)}}},nL=(t,e)=>hIe(t,r=>{let{questions:n,issues:i}=BSt(r);return n?{value:n}:{issues:i}},e,{message:"Ignoring malformed ask tool questions file",metric:"inference.malformed_ask"}),iL=(t,e)=>hIe(t,r=>{let n;try{n=JSON.parse(r)}catch{return{issues:"invalid_json"}}let i=xN.safeParse(n);return i.success?{value:i.data}:{issues:M_(i.error.issues)}},e,{message:"Ignoring malformed authorization request file",metric:"inference.malformed_authorization"});import VSt from"os";import _Ie from"path";import a8 from"fs";var mIe=ne("opencode_install"),gIe="1.17.19",GSt=()=>_Ie.join(VSt.homedir(),".netlify-agent-runner","opencode"),sL=async t=>{let e=Ha(t,"opencode");if(e)return e;let r=GSt(),n=_Ie.join(r,"node_modules",".bin","opencode");if(a8.existsSync(n))return n;a8.mkdirSync(r,{recursive:!0}),mIe.log(`Installing opencode-ai@${gIe} on demand`);let i=Date.now();await yt("npm",["install","--no-save","--no-audit","--no-fund","--prefix",r,`opencode-ai@${gIe}`],{cwd:r});let s=Date.now()-i;if(Y.timing("opencode.install_duration",s),mIe.log(`Installed opencode-ai in ${s}ms`),!a8.existsSync(n))throw new Error("OpenCode CLI binary not found after installing opencode-ai");return n};var Od=ne("runner_opencode"),oL="OpenCode",vIe="gateway",WSt="z-ai/glm-5.3-flash",KSt=new Set(["z-ai/glm-5.3-flash","deepseek/deepseek-v4-pro","x-ai/grok-4.6"]),YSt=(t,e)=>!t||!AC.includes(t)?t:e&&KSt.has(e)?"xhigh":"max",c8={bash:{name:"Run command",category:W.RunCommand},read:{name:"Read file",category:W.FileRead},write:{name:"Edit file",category:W.FileWrite},edit:{name:"Edit file",category:W.FileWrite},glob:{name:"Find files",category:W.Explore},grep:{name:"Search files",category:W.Explore},list:{name:"List directory",category:W.Explore},task:{name:"Task",category:W.Task},todowrite:{name:"Update task list",category:W.Todo},webfetch:{name:"Fetch web",category:W.Web},websearch:{name:"Search web",category:W.Web},skill:{name:"Use Skill",category:W.Skill}},yIe=t=>c8[t]?.name||t,ZSt=t=>Array.isArray(t)?t.flatMap(e=>{let{content:r,status:n}=e??{};return typeof r!="string"||!r?[]:[{name:r,value:typeof n=="string"&&n?n:"pending"}]}):[];async function QSt({aiGateway:t,config:e,model:r}){let n=r;if(t){let i=t.isModelAvailable;if(!i)throw new Error("OpenCode runner requires a gateway with isModelAvailable support");let s=e.modelVersionOverrides?.opencode?.[e.accountType];if(s)n=s;else if(!r){let o=await t.getDefaultModelForRunner?.("opencode");n=Ge().opencodeDefaultModel||o||WSt}n&&(await i(n)||Od.log(`Model '${n}' not found in gateway catalog; proceeding anyway (gateway is authoritative, e.g. flag-gated OpenRouter models)`))}return n}function JSt({aiGateway:t,model:e,effort:r,questionsFilePath:n,connections:i,setup:s,systemPromptPath:o}){if(!t)throw new Error("OpenCode runner requires the AI gateway");let{token:a,url:c}=t;if(!a||!c)throw new Error("No token or url provided from AI Gateway");let u=e?{[e]:{id:e,name:e,tool_call:!0,reasoning:!0,interleaved:{field:/^~?deepseek\//.test(e)?"reasoning_content":"reasoning"},...r?{options:{reasoningEffort:r}}:{}}}:{},l={$schema:"https://opencode.ai/config.json",instructions:[o],provider:{[vIe]:{api:"openai",name:"Netlify AI Gateway",options:{apiKey:a,baseURL:c},...Object.keys(u).length>0?{models:u}:{}}},...n||i?{mcp:{...n?QTe(n,s):{},...i?JTe(i):{}}}:{}};return{...aL.env,OPENCODE_CONFIG_CONTENT:JSON.stringify(l),OPENCODE_DISABLE_AUTOUPDATE:"1"}}async function EIe(t){if(!t.systemInstructions)throw new Error("OpenCode requires system instructions");let e=Pd.resolve(t.cwd??aL.cwd(),Xr);await ER.mkdir(e,{recursive:!0});let r=await ER.mkdtemp(Pd.join(e,"opencode-instructions-"));try{let n=Pd.join(r,"instructions.md");return await ER.writeFile(n,t.systemInstructions,{encoding:"utf8",mode:384}),await XSt({...t,systemPromptPath:n})}finally{await ER.rm(r,{recursive:!0,force:!0})}}async function XSt({config:t,persistSteps:e,aiGateway:r,continueSession:n,priorAgentSessionId:i,cwd:s=aL.cwd(),abortSignal:o,onSessionId:a,forceLowEffortForCreditWrapUp:c,systemPromptPath:u}){let{prompt:l}=t,{model:d}=t,f=c?"low":t.effort,p="",h,m,_,S,b=0,x=0,y,v=await QSt({config:t,aiGateway:r,model:d}),T=YSt(f,v);Od.log(f?`Requesting reasoning effort '${f}' for model '${v}'${T===f?"":` (sent as '${T}')`}; ignored if unsupported`:`No reasoning effort requested for model '${v}'; running at its own default`);let I=Pi({creditWrapUpTurn:c})?await tM():void 0,P=zT({creditWrapUpTurn:c})?await rM():void 0,C=Us({creditWrapUpTurn:c})?await zs():void 0,k=await Ml(t),w=Za(t,{requestFilePath:P?.filePath,creditWrapUpTurn:c,proxied:k.proxied}),B=JSt({aiGateway:r,model:v,effort:T,questionsFilePath:I?.filePath,connections:w,setup:C?Fs(t,C.filePath):void 0,systemPromptPath:u}),L=[],E=[],O=0,$=Date.now(),J=await sL(s),Q=["run","--format","json","--dangerously-skip-permissions","--agent","build",...v?["--model",`${vIe}/${v}`]:[],...n?i?["--session",i]:["--continue"]:[]];Od.log(`Running ${J} ${Q.join(" ")}`);let te=yt(J,Q,{all:!0,env:B,cwd:s,idleTimeout:Ki,cancelSignal:o});te.stdin?.end(l);let Re=I?nL(I.filePath,re=>{y||(y={questions:re},te.kill())}):void 0,Ee=P?iL(P.filePath,re=>{y||(y={authorization:re},te.kill())}):void 0,Se=C?js(C.filePath,re=>{y||(y={setupRequest:re},te.kill())}):void 0,Te=Ua(()=>{e?.({steps:E,duration:Date.now()-$})},250),be=(re,X)=>{let{wrapMessage:ue,...De}=re,ot=zN({...De,id:O});ot.message&&ue&&(ot.message=`\`\`\`
592
+ \`\`\``),Ee(F,!0),LSt(F));break}case"result":{I=j.stats?.duration_ms,j.stats&&(xa(j.stats,h?{model:h}:{}),k=j.stats),j.status==="error"?C=j.error?.message:P=be.trim();break}case"error":{C=j.error;break}case"finished":break;case"init":break;default:{an.warn("Unhandled message type:",j.type);break}}});let de=!1;if(await Q.catch(ge=>{de=Ls(ge,c),{error:C,result:P}=CSt({catchError:ge,runCmd:Q,error:C,result:P,runnerName:"Gemini"})}),te?.stop(),await Promise.all([m?.remove(),S()]),Te.close(),B)return Re.flush(),{steps:y,duration:I,agentSessionId:w,resolvedModel:h,usage:k,pendingInteraction:B};let Le=de;Le&&(!P&&be.trim()&&(P=be.trim()),C=void 0),Re.flush();let{providerFailure:We,classification:ee}=qs({error:C});return{steps:y,duration:I,result:await Bs({initialResult:P,agentName:rL,hasError:!!C}),error:Vs({error:C,agentName:rL}),isRetryableError:ee?.retryable??Gs(C),isProviderUnavailableError:ee?.providerFault??Hs(C),...We?{providerFailure:We}:{},resolvedModel:h,usage:k,agentSessionId:w,...p&&lIe(h)?{effort:p}:{},...Le?{aborted:!0}:{}}}var dIe=async()=>{let t=xd.join(vR.homedir(),".gemini");await Oh.rm(t,{recursive:!0,force:!0});let e=xd.join(vR.homedir(),".agents","skills");await Oh.rm(e,{recursive:!0,force:!0})},fIe={baseDir:xd.join(vR.homedir(),".gemini"),include:["tmp"]};import ER from"fs/promises";import SIe from"os";import Pd from"path";import aL from"process";import HSt from"readline";import pIe from"fs/promises";var jSt=ne("interaction-files"),qSt=250,BSt=t=>{let e;try{e=JSON.parse(t)}catch{return{issues:"invalid_json"}}let r=nM.safeParse(e);return r.success?{questions:r.data.questions}:{issues:M_(r.error.issues)}},hIe=(t,e,r,n)=>{let i=!0,s=setInterval(async()=>{let o=await pIe.readFile(t,"utf-8").catch(()=>{});if(o===void 0)return;clearInterval(s),await pIe.rm(t,{force:!0}).catch(()=>{});let{value:a,issues:c}=e(o);if(a===void 0){jSt.warn(n.message,{filePath:t,issues:c}),Y.inc(n.metric,1);return}i&&r(a)},qSt);return s.unref(),{stop:()=>{i=!1,clearInterval(s)}}},nL=(t,e)=>hIe(t,r=>{let{questions:n,issues:i}=BSt(r);return n?{value:n}:{issues:i}},e,{message:"Ignoring malformed ask tool questions file",metric:"inference.malformed_ask"}),iL=(t,e)=>hIe(t,r=>{let n;try{n=JSON.parse(r)}catch{return{issues:"invalid_json"}}let i=xN.safeParse(n);return i.success?{value:i.data}:{issues:M_(i.error.issues)}},e,{message:"Ignoring malformed authorization request file",metric:"inference.malformed_authorization"});import VSt from"os";import _Ie from"path";import a8 from"fs";var mIe=ne("opencode_install"),gIe="1.18.35",GSt=()=>_Ie.join(VSt.homedir(),".netlify-agent-runner","opencode"),sL=async t=>{let e=Ha(t,"opencode");if(e)return e;let r=GSt(),n=_Ie.join(r,"node_modules",".bin","opencode");if(a8.existsSync(n))return n;a8.mkdirSync(r,{recursive:!0}),mIe.log(`Installing opencode-ai@${gIe} on demand`);let i=Date.now();await yt("npm",["install","--no-save","--no-audit","--no-fund","--prefix",r,`opencode-ai@${gIe}`],{cwd:r});let s=Date.now()-i;if(Y.timing("opencode.install_duration",s),mIe.log(`Installed opencode-ai in ${s}ms`),!a8.existsSync(n))throw new Error("OpenCode CLI binary not found after installing opencode-ai");return n};var Od=ne("runner_opencode"),oL="OpenCode",vIe="gateway",WSt="z-ai/glm-5.3-flash",KSt=new Set(["z-ai/glm-5.3-flash","deepseek/deepseek-v4-pro","x-ai/grok-4.6"]),YSt=(t,e)=>!t||!AC.includes(t)?t:e&&KSt.has(e)?"xhigh":"max",c8={bash:{name:"Run command",category:W.RunCommand},read:{name:"Read file",category:W.FileRead},write:{name:"Edit file",category:W.FileWrite},edit:{name:"Edit file",category:W.FileWrite},glob:{name:"Find files",category:W.Explore},grep:{name:"Search files",category:W.Explore},list:{name:"List directory",category:W.Explore},task:{name:"Task",category:W.Task},todowrite:{name:"Update task list",category:W.Todo},webfetch:{name:"Fetch web",category:W.Web},websearch:{name:"Search web",category:W.Web},skill:{name:"Use Skill",category:W.Skill}},yIe=t=>c8[t]?.name||t,ZSt=t=>Array.isArray(t)?t.flatMap(e=>{let{content:r,status:n}=e??{};return typeof r!="string"||!r?[]:[{name:r,value:typeof n=="string"&&n?n:"pending"}]}):[];async function QSt({aiGateway:t,config:e,model:r}){let n=r;if(t){let i=t.isModelAvailable;if(!i)throw new Error("OpenCode runner requires a gateway with isModelAvailable support");let s=e.modelVersionOverrides?.opencode?.[e.accountType];if(s)n=s;else if(!r){let o=await t.getDefaultModelForRunner?.("opencode");n=Ge().opencodeDefaultModel||o||WSt}n&&(await i(n)||Od.log(`Model '${n}' not found in gateway catalog; proceeding anyway (gateway is authoritative, e.g. flag-gated OpenRouter models)`))}return n}function JSt({aiGateway:t,model:e,effort:r,questionsFilePath:n,connections:i,setup:s,systemPromptPath:o}){if(!t)throw new Error("OpenCode runner requires the AI gateway");let{token:a,url:c}=t;if(!a||!c)throw new Error("No token or url provided from AI Gateway");let u=e?{[e]:{id:e,name:e,tool_call:!0,reasoning:!0,interleaved:{field:/^~?deepseek\//.test(e)?"reasoning_content":"reasoning"},...r?{options:{reasoningEffort:r}}:{}}}:{},l={$schema:"https://opencode.ai/config.json",instructions:[o],provider:{[vIe]:{api:"openai",name:"Netlify AI Gateway",options:{apiKey:a,baseURL:c},...Object.keys(u).length>0?{models:u}:{}}},...n||i?{mcp:{...n?QTe(n,s):{},...i?JTe(i):{}}}:{}};return{...aL.env,OPENCODE_CONFIG_CONTENT:JSON.stringify(l),OPENCODE_DISABLE_AUTOUPDATE:"1"}}async function EIe(t){if(!t.systemInstructions)throw new Error("OpenCode requires system instructions");let e=Pd.resolve(t.cwd??aL.cwd(),Xr);await ER.mkdir(e,{recursive:!0});let r=await ER.mkdtemp(Pd.join(e,"opencode-instructions-"));try{let n=Pd.join(r,"instructions.md");return await ER.writeFile(n,t.systemInstructions,{encoding:"utf8",mode:384}),await XSt({...t,systemPromptPath:n})}finally{await ER.rm(r,{recursive:!0,force:!0})}}async function XSt({config:t,persistSteps:e,aiGateway:r,continueSession:n,priorAgentSessionId:i,cwd:s=aL.cwd(),abortSignal:o,onSessionId:a,forceLowEffortForCreditWrapUp:c,systemPromptPath:u}){let{prompt:l}=t,{model:d}=t,f=c?"low":t.effort,p="",h,m,_,S,b=0,x=0,y,v=await QSt({config:t,aiGateway:r,model:d}),T=YSt(f,v);Od.log(f?`Requesting reasoning effort '${f}' for model '${v}'${T===f?"":` (sent as '${T}')`}; ignored if unsupported`:`No reasoning effort requested for model '${v}'; running at its own default`);let I=Pi({creditWrapUpTurn:c})?await tM():void 0,P=zT({creditWrapUpTurn:c})?await rM():void 0,C=Us({creditWrapUpTurn:c})?await zs():void 0,k=await Ml(t),w=Za(t,{requestFilePath:P?.filePath,creditWrapUpTurn:c,proxied:k.proxied}),B=JSt({aiGateway:r,model:v,effort:T,questionsFilePath:I?.filePath,connections:w,setup:C?Fs(t,C.filePath):void 0,systemPromptPath:u}),L=[],E=[],O=0,$=Date.now(),J=await sL(s),Q=["run","--format","json","--dangerously-skip-permissions","--agent","build",...v?["--model",`${vIe}/${v}`]:[],...n?i?["--session",i]:["--continue"]:[]];Od.log(`Running ${J} ${Q.join(" ")}`);let te=yt(J,Q,{all:!0,env:B,cwd:s,idleTimeout:Ki,cancelSignal:o});te.stdin?.end(l);let Re=I?nL(I.filePath,re=>{y||(y={questions:re},te.kill())}):void 0,Ee=P?iL(P.filePath,re=>{y||(y={authorization:re},te.kill())}):void 0,Se=C?js(C.filePath,re=>{y||(y={setupRequest:re},te.kill())}):void 0,Te=Ua(()=>{e?.({steps:E,duration:Date.now()-$})},250),be=(re,X)=>{let{wrapMessage:ue,...De}=re,ot=zN({...De,id:O});ot.message&&ue&&(ot.message=`\`\`\`
593
593
  ${ot.message}
594
594
  \`\`\``),O+=1,L.push(ot),E.push(ot),X||Te.flush(),Te(),X&&Te.flush()},me=v||"default";Tr(t)||be({title:`Using ${oL} with ${me}`,category:W.Environment},!0);let de=HSt.createInterface({input:te.all});de.on("error",re=>{Od.error("Readline interface error",{error:re.message,stack:re.stack})});let Le="",We,ee=new Set,ge=()=>{Le&&(be({message:Le,category:W.AgentMessage}),We=Le,Le="")};de.on("line",re=>{let X;try{X=JSON.parse(re)}catch{Od.log("Could not parse line",re);return}switch(X.sessionID&&X.sessionID!==p&&(p=X.sessionID,a?.(p)),X.type){case"step_start":{ge();break}case"text":{let ue=X.part?.text;ue&&(Le+=ue);break}case"reasoning":{ge();let ue=X.part?.text;ue&&be({title:"Reasoning",message:ue,category:W.Reasoning},!0);break}case"tool_use":{ge();let ue=X.part?.tool;if(!ue)break;let De=X.part?.state?.input??{},ot=X.part?.state?.status,Oe=X.part?.state?.output,$e=X.part?.state?.error;if(Qa(ue,Wye)){ot==="error"&&Od.warn("Pause tool call rejected before it could pause the run",{tool:ue,error:$e});break}if(ot==="error"&&(b+=1),(ot==="completed"||ot==="error")&&(x+=1),ue==="skill"){let An=typeof De.name=="string"?De.name:void 0;if(An){let fo=Fa(An);eu(Od,fo),be({title:`Use ${fo}`,category:W.Skill,type:An},!0);break}}if(ue==="todowrite"){let An=ZSt(De.todos);be({title:yIe(ue),category:An.length>0?c8.todowrite.category:W.Tool,...An.length>0?{tasks:An}:{}},!0);break}let Ke=typeof De.command=="string"?De.command:void 0,Ie=Ke?Xi(Ke):!1,we=typeof De.path=="string"&&De.path||typeof De.file_path=="string"&&De.file_path||typeof De.pattern=="string"&&De.pattern||void 0,Xt,vt;if(Ie)Xt="Generating the site",vt=W.SiteGeneration;else if(Ke&&ue==="bash")Xt=`Running \`${Ke}\``,vt=W.RunCommand;else{let An=we&&`\`${Pd.relative(s,we)}\``;Xt=[yIe(ue),An].filter(Boolean).join(" "),vt=c8[ue]?.category||W.AgentMessage}let lo,li=["bash","read","glob","grep","list","webfetch","websearch"].includes(ue);$e?lo=`\`\`\`
595
595
  ${$e.trim()}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@netlify/agent-runner-cli",
3
3
  "type": "module",
4
- "version": "1.200.2-bug.6",
4
+ "version": "1.200.2-bug.8",
5
5
  "description": "CLI tool for running Netlify agents",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -86,8 +86,8 @@
86
86
  },
87
87
  "dependencies": {
88
88
  "@anthropic-ai/claude-code": "^2.1.295",
89
- "@anthropic-ai/sdk": "^0.128.0",
90
- "@google/gemini-cli": "0.42.0",
89
+ "@anthropic-ai/sdk": "^0.134.0",
90
+ "@google/gemini-cli": "0.63.0",
91
91
  "@modelcontextprotocol/sdk": "^1.29.0",
92
92
  "@netlify/cache-utils": "^6.0.5",
93
93
  "@netlify/database-proxy": "^0.2.2",