@netlify/agent-runner-cli 2.3.0 → 2.3.1
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/bin-local.js +3 -3
- package/dist/bin.js +87 -87
- package/dist/index.js +3 -3
- package/package.json +3 -3
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},Tct=(t,e)=>{let r=new Uint8Array(t.length+e.length);return r.set(t,0),r.set(e,t.length),r},wct={windowsNewline:new Uint8Array([13,10]),unixNewline:new Uint8Array([10]),LF:10,concatBytes:Tct};import{Buffer as Act}from"buffer";var Qbe=(t,e)=>t?void 0:Rct.bind(void 0,e),Rct=function*(t,e){if(typeof e!="string"&&!zr(e)&&!Act.isBuffer(e))throw new TypeError(`The \`${t}\` option's transform must use "objectMode: true" to receive as input: ${typeof e}.`);yield e},Jbe=(t,e)=>t?xct.bind(void 0,e):Oct.bind(void 0,e),xct=function*(t,e){Xbe(t,e),yield e},Oct=function*(t,e){if(Xbe(t,e),typeof e!="string"&&!zr(e))throw new TypeError(`The \`${t}\` option's function must yield a string or an Uint8Array, not ${typeof e}.`);yield e},Xbe=(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 Ict}from"buffer";import{StringDecoder as Pct}from"string_decoder";var CD=(t,e,r)=>{if(r)return;if(t)return{transform:Cct.bind(void 0,new TextEncoder)};let n=new Pct(e);return{transform:kct.bind(void 0,n),final:Nct.bind(void 0,n)}},Cct=function*(t,e){Ict.isBuffer(e)?yield Xc(e):typeof e=="string"?yield t.encode(e):yield e},kct=function*(t,e){yield zr(e)?t.write(e):e},Nct=function*(t){let e=t.end();e!==""&&(yield e)};import{callbackify as eTe}from"util";var dY=eTe(async(t,e,r,n)=>{e.currentIterable=t(...r);try{for await(let i of e.currentIterable)n.push(i)}finally{delete e.currentIterable}}),kD=async function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=Mct}=e[r];for await(let i of n(t))yield*kD(i,e,r+1)},tTe=async function*(t){for(let[e,{final:r}]of Object.entries(t))yield*Dct(r,Number(e),t)},Dct=async function*(t,e,r){if(t!==void 0)for await(let n of t())yield*kD(n,r,e+1)},rTe=eTe(async({currentIterable:t},e)=>{if(t!==void 0){await(e?t.throw(e):t.return());return}if(e)throw e}),Mct=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)}},nTe=(t,e)=>[...e.flatMap(r=>[...gp(r,t,0)]),...Iw(t)],gp=function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=Lct}=e[r];for(let i of n(t))yield*gp(i,e,r+1)},Iw=function*(t){for(let[e,{final:r}]of Object.entries(t))yield*$ct(r,Number(e),t)},$ct=function*(t,e,r){if(t!==void 0)for(let n of t())yield*gp(n,r,e+1)},Lct=function*(t){yield t};var pY=({value:t,value:{transform:e,final:r,writableObjectMode:n,readableObjectMode:i},optionName:s},{encoding:o})=>{let a={},c=sTe(t,o,s),u=mp(e),l=mp(r),d=u?dY.bind(void 0,kD,a):fY.bind(void 0,gp),f=u||l?dY.bind(void 0,tTe,a):fY.bind(void 0,Iw),p=u||l?rTe.bind(void 0,a):void 0;return{stream:new Uct({writableObjectMode:n,writableHighWaterMark:iTe(n),readableObjectMode:i,readableHighWaterMark:iTe(i),transform(m,_,S){d([m,c,0],this,S)},flush(m){f([c],this,m)},destroy:p})}},ND=(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=sTe(o,r,a);t=nTe(c,t)}return t},sTe=({transform:t,final:e,binary:r,writableObjectMode:n,readableObjectMode:i,preserveNewlines:s},o,a)=>{let c={};return[{transform:Qbe(n,a)},CD(r,o,n),PD(r,s,n,c),{transform:t,final:e},{transform:Jbe(i,a)},Zbe({binary:r,preserveNewlines:s,readableObjectMode:i,state:c})].filter(Boolean)};var oTe=(t,e)=>{for(let r of Fct(t))zct(t,r,e)},Fct=t=>new Set(Object.entries(t).filter(([,{direction:e}])=>e==="input").map(([e])=>Number(e))),zct=(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 ${$l[a]} with synchronous methods.`)}let o=i.map(({contents:a})=>a).map(a=>jct(a,n));r.input=Sw(o)},jct=(t,e)=>{let r=ND(t,e,"utf8",!0);return qct(r),Sw(r)},qct=t=>{let e=t.find(r=>typeof r!="string"&&!zr(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 Hct,appendFileSync as Wct}from"fs";var DD=({stdioItems:t,encoding:e,verboseInfo:r,fdNumber:n})=>n!=="all"&&y_(r,n)&&!Qi.has(e)&&Bct(n)&&(t.some(({type:i,value:s})=>i==="native"&&Vct.has(s))||t.every(({type:i})=>Ns.has(i))),Bct=t=>t===1||t===2,Vct=new Set(["pipe","overlapped"]),aTe=async(t,e,r,n)=>{for await(let i of t)Gct(e)||uTe(i,r,n)},cTe=(t,e,r)=>{for(let n of t)uTe(n,e,r)},Gct=t=>t._readableState.pipes.length>0,uTe=(t,e,r)=>{let n=KN(t);Ua({type:"output",verboseMessage:n,fdNumber:e,verboseInfo:r})};var lTe=({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)=>Kct({result:c,fileDescriptors:t,fdNumber:u,state:s,outputFiles:o,isMaxBuffer:n,verboseInfo:i},r)),...s}},Kct=({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=dbe(t,s,d),p=Xc(f),{stdioItems:h,objectMode:m}=e[r],_=Yct([p],h,c,n),{serializedResult:S,finalResult:v=S}=Zct({chunks:_,objectMode:m,encoding:c,lines:u,stripFinalNewline:l,fdNumber:r});Qct({serializedResult:S,fdNumber:r,state:n,verboseInfo:o,encoding:c,stdioItems:h,objectMode:m});let x=a[r]?v:void 0;try{return n.error===void 0&&Jct(S,h,i),x}catch(y){return n.error=y,x}},Yct=(t,e,r,n)=>{try{return ND(t,e,r,!1)}catch(i){return n.error=i,t}},Zct=({chunks:t,objectMode:e,encoding:r,lines:n,stripFinalNewline:i,fdNumber:s})=>{if(e)return{serializedResult:t};if(r==="buffer")return{serializedResult:Sw(t)};let o=ASe(t,r);return n[s]?{serializedResult:o,finalResult:lY(o,!i[s],e)}:{serializedResult:o}},Qct=({serializedResult:t,fdNumber:e,state:r,verboseInfo:n,encoding:i,stdioItems:s,objectMode:o})=>{if(!DD({stdioItems:s,encoding:i,verboseInfo:n,fdNumber:e}))return;let a=lY(t,!1,o);try{cTe(a,e,n)}catch(c){r.error??=c}},Jct=(t,e,r)=>{for(let{path:n,append:i}of e.filter(({type:s})=>OD.has(s))){let s=typeof n=="string"?n:n.toString();i||r.has(s)?Wct(n,t):(r.add(s),Hct(n,t))}};var dTe=([,t,e],r)=>{if(r.all)return t===void 0?e:e===void 0?t:Array.isArray(t)?Array.isArray(e)?[...t,...e]:[...t,ru(e,r,"all")]:Array.isArray(e)?[ru(t,r,"all"),...e]:zr(t)&&zr(e)?SK([t,e]):`${t}${e}`};import{once as hY}from"events";var fTe=async(t,e)=>{let[r,n]=await Xct(t);return e.isForcefullyTerminated??=!1,[r,n]},Xct=async t=>{let[e,r]=await Promise.allSettled([hY(t,"spawn"),hY(t,"exit")]);return e.status==="rejected"?[]:r.status==="rejected"?pTe(t):r.value},pTe=async t=>{try{return await hY(t,"exit")}catch{return pTe(t)}},hTe=async t=>{let[e,r]=await t;if(!eut(e,r)&&mY(e,r))throw new qo;return[e,r]},eut=(t,e)=>t===void 0&&e===void 0,mY=(t,e)=>t!==0||e!==null;var mTe=({error:t,status:e,signal:r,output:n},{maxBuffer:i})=>{let s=tut(t,e,r),o=s?.code==="ETIMEDOUT",a=lbe(s,n,i);return{resultError:s,exitCode:e,signal:r,timedOut:o,isMaxBuffer:a}},tut=(t,e,r)=>t!==void 0?t:mY(e,r)?new qo:void 0;var gTe=(t,e,r)=>{let{file:n,commandArguments:i,command:s,escapedCommand:o,startTime:a,verboseInfo:c,options:u,fileDescriptors:l}=nut(t,e,r),d=out({file:n,commandArguments:i,options:u,command:s,escapedCommand:o,verboseInfo:c,fileDescriptors:l,startTime:a});return O_(d,c,u)},nut=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=ZN(t,e,r),a=iut(r),{file:c,commandArguments:u,options:l}=gD(t,e,a);sut(l);let d=Hbe(l,o);return{file:c,commandArguments:u,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},iut=t=>t.node&&!t.ipc?{...t,ipc:!1}:t,sut=({ipc:t,ipcInput:e,detached:r,cancelSignal:n})=>{e&&MD("ipcInput"),t&&MD("ipc: true"),r&&MD("detached: true"),n&&MD("cancelSignal")},MD=t=>{throw new TypeError(`The "${t}" option cannot be used with synchronous methods.`)},out=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,verboseInfo:s,fileDescriptors:o,startTime:a})=>{let c=aut({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}=mTe(c,r),{output:h,error:m=u}=lTe({fileDescriptors:o,syncResult:c,options:r,isMaxBuffer:p,verboseInfo:s}),_=h.map((v,x)=>ru(v,r,x)),S=ru(dTe(h,r),r,"all");return uut({error:m,exitCode:l,signal:d,timedOut:f,isMaxBuffer:p,stdio:_,all:S,options:r,command:n,escapedCommand:i,startTime:a})},aut=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:s,startTime:o})=>{try{oTe(s,r);let a=cut(r);return rut(..._D(t,e,a))}catch(a){return x_({error:a,command:n,escapedCommand:i,fileDescriptors:s,options:r,startTime:o,isSync:!0})}},cut=({encoding:t,maxBuffer:e,...r})=>({...r,encoding:"buffer",maxBuffer:wD(e)}),uut=({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?AD({command:c,escapedCommand:u,stdio:s,all:o,ipcOutput:[],options:a,startTime:l}):Ow({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 Zlt}from"events";import{spawn as Qlt}from"child_process";import ETe from"process";import{once as gY,on as lut}from"events";var _Te=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0,filter:s}={})=>(E_({methodName:"getOneMessage",isSubprocess:r,ipc:n,isConnected:lD(t)}),dut({anyProcess:t,channel:e,isSubprocess:r,filter:s,reference:i})),dut=async({anyProcess:t,channel:e,isSubprocess:r,filter:n,reference:i})=>{oD(e,i);let s=Ml(t,e,r),o=new AbortController;try{return await Promise.race([fut(s,n,o),put(s,r,o),hut(s,r,o)])}catch(a){throw b_(t),a}finally{o.abort(),aD(e,i)}},fut=async(t,e,{signal:r})=>{if(e===void 0){let[n]=await gY(t,"message",{signal:r});return n}for await(let[n]of lut(t,"message",{signal:r}))if(e(n))return n},put=async(t,e,{signal:r})=>{await gY(t,"disconnect",{signal:r}),nEe(e)},hut=async(t,e,{signal:r})=>{let[n]=await gY(t,"strict:error",{signal:r});throw nD(n,e)};import{once as STe,on as mut}from"events";var vTe=({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})=>{E_({methodName:"getEachMessage",isSubprocess:r,ipc:n,isConnected:lD(t)}),oD(e,s);let o=Ml(t,e,r),a=new AbortController,c={};return gut(t,o,a),_ut({ipcEmitter:o,isSubprocess:r,controller:a,state:c}),yut({anyProcess:t,channel:e,ipcEmitter:o,isSubprocess:r,shouldAwait:i,controller:a,state:c,reference:s})},gut=async(t,e,r)=>{try{await STe(e,"disconnect",{signal:r.signal}),r.abort()}catch{}},_ut=async({ipcEmitter:t,isSubprocess:e,controller:r,state:n})=>{try{let[i]=await STe(t,"strict:error",{signal:r.signal});n.error=nD(i,e),r.abort()}catch{}},yut=async function*({anyProcess:t,channel:e,ipcEmitter:r,isSubprocess:n,shouldAwait:i,controller:s,state:o,reference:a}){try{for await(let[c]of mut(r,"message",{signal:s.signal}))yTe(o),yield c}catch{yTe(o)}finally{s.abort(),aD(e,a),n||b_(t),i&&await t}},yTe=({error:t})=>{if(t)throw t};var bTe=(t,{ipc:e})=>{Object.assign(t,wTe(t,!1,e))},TTe=()=>{let t=ETe,e=!0,r=ETe.channel!==void 0;return{...wTe(t,e,r),getCancelSignal:PEe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})}},wTe=(t,e,r)=>({sendMessage:hD.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getOneMessage:_Te.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getEachMessage:vTe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})});import{ChildProcess as Sut}from"child_process";import{PassThrough as vut,Readable as Eut,Writable as but,Duplex as Tut}from"stream";var ATe=({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,verboseInfo:o})=>{aY(n);let a=new Sut;wut(a,n),Object.assign(a,{readable:Aut,writable:Rut,duplex:xut});let c=x_({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,isSync:!1}),u=Out(c,o,i);return{subprocess:a,promise:u}},wut=(t,e)=>{let r=Pw(),n=Pw(),i=Pw(),s=Array.from({length:e.length-3},Pw),o=Pw(),a=[r,n,i,...s];Object.assign(t,{stdin:r,stdout:n,stderr:i,all:o,stdio:a})},Pw=()=>{let t=new vut;return t.end(),t},Aut=()=>new Eut({read(){}}),Rut=()=>new but({write(){}}),xut=()=>new Tut({read(){},write(){}}),Out=async(t,e,r)=>O_(t,e,r);import{createReadStream as RTe,createWriteStream as xTe}from"fs";import{Buffer as Iut}from"buffer";import{Readable as Cw,Writable as Put,Duplex as Cut}from"stream";var ITe=(t,e)=>ID(kut,t,e,!1),kw=({type:t,optionName:e})=>{throw new TypeError(`The \`${e}\` option cannot be ${$l[t]}.`)},OTe={fileNumber:kw,generator:pY,asyncGenerator:pY,nodeStream:({value:t})=>({stream:t}),webTransform({value:{transform:t,writableObjectMode:e,readableObjectMode:r}}){let n=e||r;return{stream:Cut.fromWeb(t,{objectMode:n})}},duplex:({value:{transform:t}})=>({stream:t}),native(){}},kut={input:{...OTe,fileUrl:({value:t})=>({stream:RTe(t)}),filePath:({value:{file:t}})=>({stream:RTe(t)}),webStream:({value:t})=>({stream:Cw.fromWeb(t)}),iterable:({value:t})=>({stream:Cw.from(t)}),asyncIterable:({value:t})=>({stream:Cw.from(t)}),string:({value:t})=>({stream:Cw.from(t)}),uint8Array:({value:t})=>({stream:Cw.from(Iut.from(t))})},output:{...OTe,fileUrl:({value:t})=>({stream:xTe(t)}),filePath:({value:{file:t,append:e}})=>({stream:xTe(t,e?{flags:"a"}:{})}),webStream:({value:t})=>({stream:Put.fromWeb(t)}),iterable:kw,asyncIterable:kw,string:kw,uint8Array:kw}};import{on as Nut,once as PTe}from"events";import{PassThrough as Dut,getDefaultHighWaterMark as Mut}from"stream";import{finished as NTe}from"stream/promises";function _p(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=$ut(t,e),n=new yY({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return n}var $ut=(t,e)=>{if(t.length===0)return Mut(e);let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},yY=class extends Dut{#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??=Lut(this,this.#e,this.#s);let r=zut({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)}},Lut=async(t,e,r)=>{$D(t,CTe);let n=new AbortController;try{await Promise.race([Uut(t,n),Fut(t,e,r,n)])}finally{n.abort(),$D(t,-CTe)}},Uut=async(t,{signal:e})=>{try{await NTe(t,{signal:e,cleanup:!0})}catch(r){throw DTe(t,r),r}},Fut=async(t,e,r,{signal:n})=>{for await(let[i]of Nut(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}\`.`)},zut=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:s,unpipeEvent:o})=>{$D(t,kTe);let a=new AbortController;try{await Promise.race([jut(s,e,a),qut({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:a}),But({stream:e,streams:r,ended:n,aborted:i,unpipeEvent:o,controller:a})])}finally{a.abort(),$D(t,-kTe)}r.size>0&&r.size===n.size+i.size&&(n.size===0&&i.size>0?vY(t):Vut(t))},jut=async(t,e,{signal:r})=>{try{await t,r.aborted||vY(e)}catch(n){r.aborted||DTe(e,n)}},qut=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:s}})=>{try{await NTe(e,{signal:s,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(o){if(s.aborted||!r.has(e))return;MTe(o)?i.add(e):$Te(t,o)}},But=async({stream:t,streams:e,ended:r,aborted:n,unpipeEvent:i,controller:{signal:s}})=>{if(await PTe(t,i,{signal:s}),!t.readable)return PTe(s,"abort",{signal:s});e.delete(t),r.delete(t),n.delete(t)},Vut=t=>{t.writable&&t.end()},DTe=(t,e)=>{MTe(e)?vY(t):$Te(t,e)},MTe=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",vY=t=>{(t.readable||t.writable)&&t.destroy()},$Te=(t,e)=>{t.destroyed||(t.once("error",Gut),t.destroy(e))},Gut=()=>{},$D=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},CTe=2,kTe=1;import{finished as LTe}from"stream/promises";var P_=(t,e)=>{t.pipe(e),Hut(t,e),Wut(t,e)},Hut=async(t,e)=>{if(!(jo(t)||jo(e))){try{await LTe(t,{cleanup:!0,readable:!0,writable:!1})}catch{}EY(e)}},EY=t=>{t.writable&&t.end()},Wut=async(t,e)=>{if(!(jo(t)||jo(e))){try{await LTe(e,{cleanup:!0,readable:!1,writable:!0})}catch{}bY(t)}},bY=t=>{t.readable&&t.destroy()};var UTe=(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})=>Ns.has(c)))Kut(t,a,o,i);for(let{stream:a}of s.filter(({type:c})=>!Ns.has(c)))Zut({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]:_p(s);P_(o,i)}},Kut=(t,e,r,n)=>{r==="output"?P_(t.stdio[n],e):P_(e,t.stdio[n]);let i=Yut[n];i!==void 0&&(t[i]=e),t.stdio[n]=e},Yut=["stdin","stdout","stderr"],Zut=({subprocess:t,stream:e,direction:r,fdNumber:n,pipeGroups:i,controller:s})=>{if(e===void 0)return;Qut(e,s);let[o,a]=r==="output"?[e,t.stdio[n]]:[t.stdio[n],e],c=i.get(o)??[];i.set(o,[...c,a])},Qut=(t,{signal:e})=>{jo(t)&&pp(t,Jut,e)},Jut=2;import{addAbortListener as tlt}from"events";var yp=[];yp.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&yp.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&yp.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var LD=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",TY=Symbol.for("signal-exit emitter"),wY=globalThis,Xut=Object.defineProperty.bind(Object),AY=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(wY[TY])return wY[TY];Xut(wY,TY,{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}},UD=class{},elt=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),RY=class extends UD{onExit(){return()=>{}}load(){}unload(){}},xY=class extends UD{#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 yp)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(!LD(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 yp)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,yp.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 LD(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"&&LD(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:FTe,load:Fir,unload:zir}=elt(LD(OY)?new xY(OY):new RY);var zTe=(t,{cleanup:e,detached:r},{signal:n})=>{if(!e||r)return;let i=FTe(()=>{t.kill()});tlt(n,()=>{i()})};var qTe=({source:t,sourcePromise:e,boundOptions:r,createNested:n},...i)=>{let s=YN(),{destination:o,destinationStream:a,destinationError:c,from:u,unpipeSignal:l}=rlt(r,n,i),{sourceStream:d,sourceError:f}=ilt(t,u),{options:p,fileDescriptors:h}=za.get(t);return{sourcePromise:e,sourceStream:d,sourceOptions:p,sourceError:f,destination:o,destinationStream:a,destinationError:c,unpipeSignal:l,fileDescriptors:h,startTime:s}},rlt=(t,e,r)=>{try{let{destination:n,pipeOptions:{from:i,to:s,unpipeSignal:o}={}}=nlt(t,e,...r),a=sD(n,s);return{destination:n,destinationStream:a,from:i,unpipeSignal:o}}catch(n){return{destinationError:n}}},nlt=(t,e,r,...n)=>{if(Array.isArray(r))return{destination:e(jTe,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]=FN(r,...n);return{destination:e(jTe)(i,s,o),pipeOptions:o}}if(za.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}`)},jTe=({options:t})=>({options:{...t,stdin:"pipe",piped:!0}}),ilt=(t,e)=>{try{return{sourceStream:T_(t,e)}}catch(r){return{sourceError:r}}};var VTe=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n,fileDescriptors:i,sourceOptions:s,startTime:o})=>{let a=slt({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n});if(a!==void 0)throw IY({error:a,fileDescriptors:i,sourceOptions:s,startTime:o})},slt=({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},IY=({error:t,fileDescriptors:e,sourceOptions:r,startTime:n})=>x_({error:t,command:BTe,escapedCommand:BTe,fileDescriptors:e,options:r,startTime:n,isSync:!1}),BTe="source.pipe(destination)";var GTe=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 olt}from"stream/promises";var HTe=(t,e,r)=>{let n=FD.has(e)?clt(t,e):alt(t,e);return pp(t,llt,r.signal),pp(e,dlt,r.signal),ult(e),n},alt=(t,e)=>{let r=_p([t]);return P_(r,e),FD.set(e,r),r},clt=(t,e)=>{let r=FD.get(e);return r.add(t),r},ult=async t=>{try{await olt(t,{cleanup:!0,readable:!1,writable:!0})}catch{}FD.delete(t)},FD=new WeakMap,llt=2,dlt=1;import{aborted as flt}from"util";var WTe=(t,e)=>t===void 0?[]:[plt(t,e)],plt=async(t,{sourceStream:e,mergedStream:r,fileDescriptors:n,sourceOptions:i,startTime:s})=>{await flt(t,e),await r.remove(e);let o=new Error("Pipe canceled by `unpipeSignal` option.");throw IY({error:o,fileDescriptors:n,sourceOptions:i,startTime:s})};var zD=(t,...e)=>{if(yr(e[0]))return zD.bind(void 0,{...t,boundOptions:{...t.boundOptions,...e[0]}});let{destination:r,...n}=qTe(t,...e),i=hlt({...n,destination:r});return i.pipe=zD.bind(void 0,{...t,source:r,sourcePromise:i,boundOptions:{}}),i},hlt=async({sourcePromise:t,sourceStream:e,sourceOptions:r,sourceError:n,destination:i,destinationStream:s,destinationError:o,unpipeSignal:a,fileDescriptors:c,startTime:u})=>{let l=mlt(t,i);VTe({sourceStream:e,sourceError:n,destinationStream:s,destinationError:o,fileDescriptors:c,sourceOptions:r,startTime:u});let d=new AbortController;try{let f=HTe(e,s,d);return await Promise.race([GTe(l),...WTe(a,{sourceStream:e,mergedStream:f,sourceOptions:r,fileDescriptors:c,startTime:u})])}finally{d.abort()}},mlt=(t,e)=>Promise.allSettled([t,e]);import{setImmediate as blt}from"timers/promises";import{on as glt}from"events";import{getDefaultHighWaterMark as _lt}from"stream";var jD=({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:n,encoding:i,preserveNewlines:s})=>{let o=new AbortController;return ylt(e,o),YTe({stream:t,controller:o,binary:r,shouldEncode:!t.readableObjectMode&&n,encoding:i,shouldSplit:!t.readableObjectMode,preserveNewlines:s})},ylt=async(t,e)=>{try{await t}catch{}finally{e.abort()}},PY=({stream:t,onStreamEnd:e,lines:r,encoding:n,stripFinalNewline:i,allMixed:s})=>{let o=new AbortController;Slt(e,o,t);let a=t.readableObjectMode&&!s;return YTe({stream:t,controller:o,binary:n==="buffer",shouldEncode:!a,encoding:n,shouldSplit:!a&&r,preserveNewlines:!i})},Slt=async(t,e,r)=>{try{await t}catch{r.destroy()}finally{e.abort()}},YTe=({stream:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})=>{let a=glt(t,"data",{signal:e.signal,highWaterMark:KTe,highWatermark:KTe});return vlt({onStdoutChunk:a,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})},CY=_lt(!0),KTe=CY,vlt=async function*({onStdoutChunk:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o}){let a=Elt({binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o});try{for await(let[c]of t)yield*gp(c,a,0)}catch(c){if(!e.signal.aborted)throw c}finally{yield*Iw(a)}},Elt=({binary:t,shouldEncode:e,encoding:r,shouldSplit:n,preserveNewlines:i})=>[CD(t,r,!e),PD(t,i,!n,{})].filter(Boolean);var ZTe=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=Tlt({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:a,verboseInfo:u,streamInfo:l});if(!i){await Promise.all([wlt(t),d]);return}let f=cY(c,r),p=PY({stream:t,onStreamEnd:e,lines:o,encoding:n,stripFinalNewline:f,allMixed:a}),[h]=await Promise.all([Alt({stream:t,iterable:p,fdNumber:r,encoding:n,maxBuffer:s,lines:o}),d]);return h},Tlt=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:i,verboseInfo:s,streamInfo:{fileDescriptors:o}})=>{if(!DD({stdioItems:o[r]?.stdioItems,encoding:n,verboseInfo:s,fdNumber:r}))return;let a=PY({stream:t,onStreamEnd:e,lines:!0,encoding:n,stripFinalNewline:!0,allMixed:i});await aTe(a,t,r,s)},wlt=async t=>{await blt(),t.readableFlowing===null&&t.resume()},Alt=async({stream:t,stream:{readableObjectMode:e},iterable:r,fdNumber:n,encoding:i,maxBuffer:s,lines:o})=>{try{return e||o?await ED(r,{maxBuffer:s}):i==="buffer"?new Uint8Array(await bD(r,{maxBuffer:s})):await R_(r,{maxBuffer:s})}catch(a){return QTe(abe({error:a,stream:t,readableObjectMode:e,lines:o,encoding:i,fdNumber:n}))}},kY=async t=>{try{return await t}catch(e){return QTe(e)}},QTe=({bufferedData:t})=>TSe(t)?new Uint8Array(t):t;import{finished as Rlt}from"stream/promises";var Nw=async(t,e,r,{isSameDirection:n,stopOnExit:i=!1}={})=>{let s=xlt(t,r),o=new AbortController;try{await Promise.race([...i?[r.exitPromise]:[],Rlt(t,{cleanup:!0,signal:o.signal})])}catch(a){s.stdinCleanedUp||Plt(a,e,r,n)}finally{o.abort()}},xlt=(t,{originalStreams:[e],subprocess:r})=>{let n={stdinCleanedUp:!1};return t===e&&Olt(t,r,n),n},Olt=(t,e,r)=>{let{_destroy:n}=t;t._destroy=(...i)=>{Ilt(e,r),n.call(t,...i)}},Ilt=({exitCode:t,signalCode:e},r)=>{(t!==null||e!==null)&&(r.stdinCleanedUp=!0)},Plt=(t,e,r,n)=>{if(!Clt(t,e,r,n))throw t},Clt=(t,e,r,n=!0)=>r.propagating?JTe(t)||qD(t):(r.propagating=!0,NY(r,e)===n?JTe(t):qD(t)),NY=({fileDescriptors:t},e)=>e!=="all"&&t[e].direction==="input",qD=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",JTe=t=>t?.code==="EPIPE";var XTe=({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=Nw(t,e,u);if(NY(u,e)){await l;return}let[d]=await Promise.all([ZTe({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 ewe=({stdout:t,stderr:e},{all:r})=>r&&(t||e)?_p([t,e].filter(Boolean)):void 0,twe=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>DY({...klt(t,r),fdNumber:"all",encoding:e,maxBuffer:n[1]+n[2],lines:i[1]||i[2],allMixed:Nlt(t),stripFinalNewline:s,verboseInfo:o,streamInfo:a}),klt=({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}},Nlt=({all:t,stdout:e,stderr:r})=>t&&e&&r&&e.readableObjectMode!==r.readableObjectMode;import{once as Dlt}from"events";var rwe=t=>y_(t,"ipc"),nwe=(t,e)=>{let r=KN(t);Ua({type:"ipc",verboseMessage:r,fdNumber:"ipc",verboseInfo:e})};var iwe=async({subprocess:t,buffer:e,maxBuffer:r,ipc:n,ipcOutput:i,verboseInfo:s})=>{if(!n)return i;let o=rwe(s),a=eu(e,"ipc"),c=eu(r,"ipc");for await(let u of _Y({anyProcess:t,channel:t.channel,isSubprocess:!1,ipc:n,shouldAwait:!1,reference:!0}))a&&(cbe(t,i,c),i.push(u)),o&&nwe(u,s);return i},swe=async(t,e)=>(await Promise.allSettled([t]),e);var owe=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 v=fTe(t,f),x={originalStreams:m,fileDescriptors:h,subprocess:t,exitPromise:v,propagating:!1},y=XTe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:x}),E=twe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:x}),A=[],C=iwe({subprocess:t,buffer:r,maxBuffer:n,ipc:l,ipcOutput:A,verboseInfo:p}),P=Mlt(m,t,x),I=$lt(h,x);try{return await Promise.race([Promise.all([{},hTe(v),Promise.all(y),E,C,zEe(t,d),...P,...I]),_,Llt(t,S),...MEe(t,s,f,S),...rEe({subprocess:t,cancelSignal:o,gracefulCancel:a,context:f,controller:S}),...NEe({subprocess:t,cancelSignal:o,gracefulCancel:a,forceKillAfterDelay:c,context:f,controller:S})])}catch(k){return f.terminationReason??="other",Promise.all([{error:k},v,Promise.all(y.map(T=>kY(T))),kY(E),swe(C,A),Promise.allSettled(P),Promise.allSettled(I)])}},Mlt=(t,e,r)=>t.map((n,i)=>n===e.stdio[i]?void 0:Nw(n,i,r)),$lt=(t,e)=>t.flatMap(({stdioItems:r},n)=>r.filter(({value:i,stream:s=i})=>Vo(s,{checkOpen:!1})&&!jo(s)).map(({type:i,value:s,stream:o=s})=>Nw(o,n,e,{isSameDirection:Ns.has(i),stopOnExit:i==="native"}))),Llt=async(t,{signal:e})=>{let[r]=await Dlt(t,"error",{signal:e});throw r};var awe=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),Dw=(t,e,r)=>{let n=t[r];n.has(e)||n.set(e,[]);let i=n.get(e),s=Fa();return i.push(s),{resolve:s.resolve.bind(s),promises:i}},C_=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 Ult}from"stream";import{callbackify as Flt}from"util";import{finished as cwe}from"stream/promises";var MY=async t=>{if(t!==void 0)try{await $Y(t)}catch{}},uwe=async t=>{if(t!==void 0)try{await LY(t)}catch{}},$Y=async t=>{await cwe(t,{cleanup:!0,readable:!1,writable:!0})},LY=async t=>{await cwe(t,{cleanup:!0,readable:!0,writable:!1})},BD=async(t,e)=>{if(await t,e)throw e},VD=(t,e,r)=>{r&&!qD(r)?t.destroy(r):e&&t.destroy()};var lwe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,binary:i=!0,preserveNewlines:s=!0}={})=>{let o=i||Qi.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 Ult({read:f,destroy:Flt(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=T_(t,e),i=Dw(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=Fa(),o=jD({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:!r,encoding:n,preserveNewlines:i});return{read(){zlt(this,o,s)},onStdoutDataDone:s}},zlt=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),dwe(r,s)}},qY=async({subprocessStdout:t,subprocess:e,waitReadableDestroy:r},n)=>{await C_(r,e)&&(dwe(t,n),await BD(e,n))},dwe=(t,e)=>{VD(t,t.readable,e)};import{Writable as jlt}from"stream";import{callbackify as fwe}from"util";var pwe=({subprocess:t,concurrentStreams:e},{to:r}={})=>{let{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}=BY(t,r,e),o=new jlt({...VY(n,t,i),destroy:fwe(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=sD(t,e),i=Dw(r,n,"writableFinal"),s=Dw(r,n,"writableDestroy");return{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}},VY=(t,e,r)=>({write:qlt.bind(void 0,t),final:fwe(Blt.bind(void 0,t,e,r))}),qlt=(t,e,r,n)=>{t.write(e,r)?n():t.once("drain",n)},Blt=async(t,e,r)=>{await C_(r,e)&&(t.writable&&t.end(),await e)},GY=async(t,e,r)=>{try{await $Y(t),e.writable&&e.end()}catch(n){await uwe(r),hwe(e,n)}},HY=async({subprocessStdin:t,subprocess:e,waitWritableFinal:r,waitWritableDestroy:n},i)=>{await C_(r,e),await C_(n,e)&&(hwe(t,i),await BD(e,i))},hwe=(t,e)=>{VD(t,t.writable,e)};import{Duplex as Vlt}from"stream";import{callbackify as Glt}from"util";var mwe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,to:i,binary:s=!0,preserveNewlines:o=!0}={})=>{let a=s||Qi.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}),v=new Vlt({read:_,...VY(l,t,d),destroy:Glt(Hlt.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:v,subprocess:t,subprocessStdin:l}),GY(l,v,c),v},Hlt=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||Qi.has(e),o=T_(t,r),a=jD({subprocessStdout:o,subprocess:t,binary:s,shouldEncode:!0,encoding:e,preserveNewlines:i});return Wlt(a,o,t)},Wlt=async function*(t,e,r){try{yield*t}finally{e.readable&&e.destroy(),await r}};var gwe=(t,{encoding:e})=>{let r=awe();t.readable=lwe.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.writable=pwe.bind(void 0,{subprocess:t,concurrentStreams:r}),t.duplex=mwe.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 _we=(t,e)=>{for(let[r,n]of Ylt){let i=n.value.bind(e);Reflect.defineProperty(t,r,{...n,value:i})}},Klt=(async()=>{})().constructor.prototype,Ylt=["then","catch","finally"].map(t=>[t,Reflect.getOwnPropertyDescriptor(Klt,t)]);var ywe=(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}=edt({file:i,commandArguments:s,options:l,startTime:c,verboseInfo:u,command:o,escapedCommand:a,fileDescriptors:d});return f.pipe=zD.bind(void 0,{source:f,sourcePromise:p,boundOptions:{},createNested:n}),_we(f,p),za.set(f,{options:l,fileDescriptors:d}),f},Jlt=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=ZN(t,e,r),{file:a,commandArguments:c,options:u}=gD(t,e,r),l=Xlt(u),d=ITe(l,o);return{file:a,commandArguments:c,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},Xlt=({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}},edt=({file:t,commandArguments:e,options:r,startTime:n,verboseInfo:i,command:s,escapedCommand:o,fileDescriptors:a})=>{let c;try{c=Qlt(..._D(t,e,r))}catch(h){return ATe({error:h,command:s,escapedCommand:o,fileDescriptors:a,options:r,startTime:n,verboseInfo:i})}let u=new AbortController;Zlt(Number.POSITIVE_INFINITY,u.signal);let l=[...c.stdio];UTe(c,a,u),zTe(c,r,u);let d={},f=Fa();c.kill=eEe.bind(void 0,{kill:c.kill.bind(c),options:r,onInternalError:f,context:d,controller:u}),c.all=ewe(c,r),gwe(c,r),bTe(c,r);let p=tdt({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}},tdt=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 owe({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,E)=>ru(y,e,E)),v=ru(m,e,"all"),x=rdt({errorInfo:d,exitCode:f,signal:p,stdio:S,all:v,ipcOutput:_,context:c,options:e,command:o,escapedCommand:a,startTime:r});return O_(x,n,e)},rdt=({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?Ow({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 ja,isForcefullyTerminated:o.isForcefullyTerminated,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:s,options:a,startTime:l,isSync:!1}):AD({command:c,escapedCommand:u,stdio:n,all:i,ipcOutput:s,options:a,startTime:l});var GD=(t,e)=>{let r=Object.fromEntries(Object.entries(e).map(([n,i])=>[n,ndt(n,t[n],i)]));return{...t,...r}},ndt=(t,e,r)=>idt.has(t)&&yr(e)&&yr(r)?{...e,...r}:r,idt=new Set(["env",...TK]);var Ll=(t,e,r,n)=>{let i=(o,a,c)=>Ll(o,a,r,c),s=(...o)=>sdt({mapArguments:t,deepOptions:r,boundOptions:e,setBoundExeca:n,createNested:i},...o);return n!==void 0&&n(s,i,e),s},sdt=({mapArguments:t,deepOptions:e={},boundOptions:r={},setBoundExeca:n,createNested:i},s,...o)=>{if(yr(s))return i(t,GD(r,s),n);let{file:a,commandArguments:c,options:u,isSync:l}=odt({mapArguments:t,firstArgument:s,nextArguments:o,deepOptions:e,boundOptions:r});return l?gTe(a,c,u):ywe(a,c,u,i)},odt=({mapArguments:t,firstArgument:e,nextArguments:r,deepOptions:n,boundOptions:i})=>{let s=ISe(e)?PSe(e,r):[e,...r],[o,a,c]=FN(...s),u=GD(GD(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 Swe=({file:t,commandArguments:e})=>Ewe(t,e),vwe=({file:t,commandArguments:e})=>({...Ewe(t,e),isSync:!0}),Ewe=(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]=adt(t);return{file:r,commandArguments:n}},adt=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(cdt)){let i=r.at(-1);i&&i.endsWith("\\")?r[r.length-1]=`${i.slice(0,-1)} ${n}`:r.push(n)}return r},cdt=/ +/g;var bwe=(t,e,r)=>{t.sync=e(udt,r),t.s=t.sync},Twe=({options:t})=>wwe(t),udt=({options:t})=>({...wwe(t),isSync:!0}),wwe=t=>({options:{...ldt(t),...t}}),ldt=({input:t,inputFile:e,stdio:r})=>t===void 0&&e===void 0&&r===void 0?{stdin:"inherit"}:{},Awe={preferLocal:!0};var Rwe=Ll(()=>({})),Car=Ll(()=>({isSync:!0})),xwe=Ll(Swe),kar=Ll(vwe),Nar=Ll(LEe),Dar=Ll(Twe,{},Awe,bwe),{sendMessage:Mar,getOneMessage:$ar,getEachMessage:Lar,getCancelSignal:Uar}=TTe();var Owe=!1,Iwe,ddt=t=>{Iwe??=t},Pwe=t=>{Owe=!0,ddt(t)},Nn=()=>Owe,nu=()=>Iwe,Cwe=t=>{switch(t){case"SIGTERM":case"SIGINT":return t;case void 0:return"interrupted";default:return}};var Mw=null,kwe=t=>(Mw&&Mw.destroy(),Mw=new Ds({totalAllowedTime:t}),Mw),Nwe=()=>Mw;var Ds=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&&Nn())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 OC({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 Dwe={name:"@netlify/agent-runner-cli",type:"module",version:"2.3.0",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 mdt=pdt(import.meta.url),gdt=iu.dirname(mdt),_dt=hdt(import.meta.url),k_=ne("shell"),KY=new Set,Mwe={preferLocal:!0},yt=(t,e,r)=>{let[n,i]=ydt(e,r),s={...Mwe,...i},o=Rwe(t,n,s);Lwe(o,s),zwe(o);let a=r?.idleTimeout;return a&&a>0&&Fwe(o,a),o},$we=(t,e)=>{let r={...Mwe,...e},n=xwe(t,r);return Lwe(n,r),zwe(n),e?.idleTimeout&&e.idleTimeout>0&&Fwe(n,e.idleTimeout),n},ydt=function(t,e){return Array.isArray(t)?[t,e]:typeof t=="object"&&t!==null?[[],t]:[[],void 0]},Lwe=(t,e)=>{if(e.stdio!==void 0||e.stdout!==void 0||e.stderr!==void 0||Ba.env.NETLIFY_LOCAL_QUIET==="true")return;if(Ba.env.NETLIFY_MASK_LOGS!=="false"){t.stdout?.pipe(new wb).pipe(Ba.stdout),t.stderr?.pipe(new wb).pipe(Ba.stderr);return}t.stdout?.pipe(Ba.stdout),t.stderr?.pipe(Ba.stderr)},YY=(t,e="SIGTERM")=>{try{return t.pid&&!t.killed?(Ba.kill(-t.pid,e),k_.log(`Killed process ${t.pid} with signal ${e}`),!0):!1}catch(r){return k_.error("Error killing process:",r),!1}},Uwe=t=>YY(t,"SIGKILL"),Fwe=(t,e)=>{let r=null,n=()=>{k_.log(`Process ${t.pid} killed due to idle timeout (no output for ${e}ms)`),YY(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(k_.log(`Force killing idle process ${t.pid}`),Uwe(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)},zwe=t=>{KY.add(t);let e=Nwe();if(e){let r=e.onTimesUp(()=>{k_.log(`Global timer expired, killing process ${t.pid}`),YY(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(k_.log(`Force killing process ${t.pid} after timeout`),Uwe(t))},5e3)});t.on("exit",()=>{KY.delete(t),r()}),t.on("error",()=>{KY.delete(t),r()})}};function Va(t,e){if(!Ba.env.NETLIFY_LOCAL_MODE)try{let i=_dt.resolve(Dwe.name),s=iu.dirname(i);for(;s!==iu.dirname(s);){let o=iu.dirname(s);if(iu.basename(o)==="node_modules"){let a=iu.join(o,".bin",e);if(HD.existsSync(a))return a;break}s=o}}catch(i){console.error("Could not resolve package.json",i)}if(Ba.env.NODE_PATH){let i=iu.join(Ba.env.NODE_PATH,".bin",e);if(HD.existsSync(i))return i}let r=iu.join(t,"node_modules",".bin",e);if(HD.existsSync(r))return r;let n=iu.join(gdt,"..","node_modules",".bin",e);if(HD.existsSync(n))return n}var jwe=ne("repo"),Gwe="runner-diffs-",YD=t=>`${Gwe}${t}-`,Hwe=async t=>{let e=Vwe.tmpdir(),r;try{r=await WD.readdir(e)}catch{return}await Promise.all(r.filter(n=>n.startsWith(Gwe)&&!n.startsWith(YD(t))).map(n=>WD.rm(KD.join(e,n),{recursive:!0,force:!0}).catch(()=>{})))},Sr=(t,e={})=>yt("git",t,{...e,env:{...e.env,NETLIFY_INTERNAL_GIT:"1"}}),ZD=async({config:t,isRetry:e,cwd:r=process.cwd()})=>{jwe.info("Getting runner diffs");let n=await XY(r),{hasChanges:i}=n,{status:s}=n;if(!i)return{hasChanges:!1};if(!e){let u=t9(s);await Rdt(u,r)}jwe.info("Changes after processing"),await JY(r);let o=await $w(s,r);if(await QY(o,r),i=await Tdt(r),!i)return{hasChanges:!1,ignored:o};await Sr(["commit","-m","Agent runner [skip ci]"],{cwd:r});let a=await WD.mkdtemp(KD.join(Vwe.tmpdir(),YD(t.sessionId))),c=await ZY({config:t,diffDir:a,cwd:r,target:{commit:"HEAD"},ignored:o});return await Edt(r),c.hasChanges&&Y.distribution("diff.size",(c.diffBinary??c.diff).size,{phase:"final"}),c},ZY=async({config:t,diffDir:e,cwd:r,target:n,ignored:i})=>{let s="commit"in n?n.commit:"--cached",o="indexPath"in n?{GIT_INDEX_FILE:n.indexPath}:void 0,a=async({from:p,fileName:h,binary:m})=>{let _=KD.join(e,h);await Sr([...m?["diff",p,s,"--binary"]:["diff",p,s],`--output=${_}`],{stdio:["ignore","ignore","pipe"],cwd:r,env:o});let{size:v}=await WD.stat(_);return{path:_,size:v}},c=await a({from:t.runSha,fileName:"session.patch"});if(c.size===0)return{hasChanges:!1,ignored:i};let u=await a({from:t.runSha,fileName:"session-binary.patch",binary:!0}),l,d;if(t.sha){l=await a({from:t.sha,fileName:"cumulative.patch"});let p=await a({from:t.sha,fileName:"cumulative-binary.patch",binary:!0});await Bwe(l,p)||(d=p)}let f={hasChanges:!0,diff:c,resultDiff:l,ignored:i};return await Bwe(c,u)||(f.diffBinary=u),d&&(f.resultDiffBinary=d),f},qwe=async t=>{let e=Sdt("sha256");for await(let r of vdt(t))e.update(r);return e.digest("hex")},Bwe=async(t,e)=>t.size===e.size&&await qwe(t.path)===await qwe(e.path),Edt=async(t=process.cwd())=>{process.env.NETLIFY_LOCAL_MODE&&await Sr(["reset","--soft","HEAD~1"],{cwd:t})},QY=async(t=[],e=process.cwd())=>{await Sr(["add",".",...t],{cwd:e})},JY=async(t=process.cwd())=>{let e=await Sr(["status","-s"],{cwd:t});return String(e.stdout??"")},Wwe=/.. (.+)?\.log$/,bdt=[Wwe],XY=async(t=process.cwd())=>{let e=await JY(t);return{hasChanges:(e.trim().length===0?[]:e.split(`
|
|
387
|
+
if (condition) { yield value; }`)};import{Buffer as Ict}from"buffer";import{StringDecoder as Pct}from"string_decoder";var CD=(t,e,r)=>{if(r)return;if(t)return{transform:Cct.bind(void 0,new TextEncoder)};let n=new Pct(e);return{transform:kct.bind(void 0,n),final:Nct.bind(void 0,n)}},Cct=function*(t,e){Ict.isBuffer(e)?yield Xc(e):typeof e=="string"?yield t.encode(e):yield e},kct=function*(t,e){yield zr(e)?t.write(e):e},Nct=function*(t){let e=t.end();e!==""&&(yield e)};import{callbackify as eTe}from"util";var dY=eTe(async(t,e,r,n)=>{e.currentIterable=t(...r);try{for await(let i of e.currentIterable)n.push(i)}finally{delete e.currentIterable}}),kD=async function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=Mct}=e[r];for await(let i of n(t))yield*kD(i,e,r+1)},tTe=async function*(t){for(let[e,{final:r}]of Object.entries(t))yield*Dct(r,Number(e),t)},Dct=async function*(t,e,r){if(t!==void 0)for await(let n of t())yield*kD(n,r,e+1)},rTe=eTe(async({currentIterable:t},e)=>{if(t!==void 0){await(e?t.throw(e):t.return());return}if(e)throw e}),Mct=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)}},nTe=(t,e)=>[...e.flatMap(r=>[...gp(r,t,0)]),...Iw(t)],gp=function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=Lct}=e[r];for(let i of n(t))yield*gp(i,e,r+1)},Iw=function*(t){for(let[e,{final:r}]of Object.entries(t))yield*$ct(r,Number(e),t)},$ct=function*(t,e,r){if(t!==void 0)for(let n of t())yield*gp(n,r,e+1)},Lct=function*(t){yield t};var pY=({value:t,value:{transform:e,final:r,writableObjectMode:n,readableObjectMode:i},optionName:s},{encoding:o})=>{let a={},c=sTe(t,o,s),u=mp(e),l=mp(r),d=u?dY.bind(void 0,kD,a):fY.bind(void 0,gp),f=u||l?dY.bind(void 0,tTe,a):fY.bind(void 0,Iw),p=u||l?rTe.bind(void 0,a):void 0;return{stream:new Uct({writableObjectMode:n,writableHighWaterMark:iTe(n),readableObjectMode:i,readableHighWaterMark:iTe(i),transform(m,_,S){d([m,c,0],this,S)},flush(m){f([c],this,m)},destroy:p})}},ND=(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=sTe(o,r,a);t=nTe(c,t)}return t},sTe=({transform:t,final:e,binary:r,writableObjectMode:n,readableObjectMode:i,preserveNewlines:s},o,a)=>{let c={};return[{transform:Qbe(n,a)},CD(r,o,n),PD(r,s,n,c),{transform:t,final:e},{transform:Jbe(i,a)},Zbe({binary:r,preserveNewlines:s,readableObjectMode:i,state:c})].filter(Boolean)};var oTe=(t,e)=>{for(let r of Fct(t))zct(t,r,e)},Fct=t=>new Set(Object.entries(t).filter(([,{direction:e}])=>e==="input").map(([e])=>Number(e))),zct=(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 ${$l[a]} with synchronous methods.`)}let o=i.map(({contents:a})=>a).map(a=>jct(a,n));r.input=Sw(o)},jct=(t,e)=>{let r=ND(t,e,"utf8",!0);return qct(r),Sw(r)},qct=t=>{let e=t.find(r=>typeof r!="string"&&!zr(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 Hct,appendFileSync as Wct}from"fs";var DD=({stdioItems:t,encoding:e,verboseInfo:r,fdNumber:n})=>n!=="all"&&y_(r,n)&&!Qi.has(e)&&Bct(n)&&(t.some(({type:i,value:s})=>i==="native"&&Vct.has(s))||t.every(({type:i})=>Ns.has(i))),Bct=t=>t===1||t===2,Vct=new Set(["pipe","overlapped"]),aTe=async(t,e,r,n)=>{for await(let i of t)Gct(e)||uTe(i,r,n)},cTe=(t,e,r)=>{for(let n of t)uTe(n,e,r)},Gct=t=>t._readableState.pipes.length>0,uTe=(t,e,r)=>{let n=KN(t);Ua({type:"output",verboseMessage:n,fdNumber:e,verboseInfo:r})};var lTe=({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)=>Kct({result:c,fileDescriptors:t,fdNumber:u,state:s,outputFiles:o,isMaxBuffer:n,verboseInfo:i},r)),...s}},Kct=({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=dbe(t,s,d),p=Xc(f),{stdioItems:h,objectMode:m}=e[r],_=Yct([p],h,c,n),{serializedResult:S,finalResult:v=S}=Zct({chunks:_,objectMode:m,encoding:c,lines:u,stripFinalNewline:l,fdNumber:r});Qct({serializedResult:S,fdNumber:r,state:n,verboseInfo:o,encoding:c,stdioItems:h,objectMode:m});let x=a[r]?v:void 0;try{return n.error===void 0&&Jct(S,h,i),x}catch(y){return n.error=y,x}},Yct=(t,e,r,n)=>{try{return ND(t,e,r,!1)}catch(i){return n.error=i,t}},Zct=({chunks:t,objectMode:e,encoding:r,lines:n,stripFinalNewline:i,fdNumber:s})=>{if(e)return{serializedResult:t};if(r==="buffer")return{serializedResult:Sw(t)};let o=ASe(t,r);return n[s]?{serializedResult:o,finalResult:lY(o,!i[s],e)}:{serializedResult:o}},Qct=({serializedResult:t,fdNumber:e,state:r,verboseInfo:n,encoding:i,stdioItems:s,objectMode:o})=>{if(!DD({stdioItems:s,encoding:i,verboseInfo:n,fdNumber:e}))return;let a=lY(t,!1,o);try{cTe(a,e,n)}catch(c){r.error??=c}},Jct=(t,e,r)=>{for(let{path:n,append:i}of e.filter(({type:s})=>OD.has(s))){let s=typeof n=="string"?n:n.toString();i||r.has(s)?Wct(n,t):(r.add(s),Hct(n,t))}};var dTe=([,t,e],r)=>{if(r.all)return t===void 0?e:e===void 0?t:Array.isArray(t)?Array.isArray(e)?[...t,...e]:[...t,ru(e,r,"all")]:Array.isArray(e)?[ru(t,r,"all"),...e]:zr(t)&&zr(e)?SK([t,e]):`${t}${e}`};import{once as hY}from"events";var fTe=async(t,e)=>{let[r,n]=await Xct(t);return e.isForcefullyTerminated??=!1,[r,n]},Xct=async t=>{let[e,r]=await Promise.allSettled([hY(t,"spawn"),hY(t,"exit")]);return e.status==="rejected"?[]:r.status==="rejected"?pTe(t):r.value},pTe=async t=>{try{return await hY(t,"exit")}catch{return pTe(t)}},hTe=async t=>{let[e,r]=await t;if(!eut(e,r)&&mY(e,r))throw new qo;return[e,r]},eut=(t,e)=>t===void 0&&e===void 0,mY=(t,e)=>t!==0||e!==null;var mTe=({error:t,status:e,signal:r,output:n},{maxBuffer:i})=>{let s=tut(t,e,r),o=s?.code==="ETIMEDOUT",a=lbe(s,n,i);return{resultError:s,exitCode:e,signal:r,timedOut:o,isMaxBuffer:a}},tut=(t,e,r)=>t!==void 0?t:mY(e,r)?new qo:void 0;var gTe=(t,e,r)=>{let{file:n,commandArguments:i,command:s,escapedCommand:o,startTime:a,verboseInfo:c,options:u,fileDescriptors:l}=nut(t,e,r),d=out({file:n,commandArguments:i,options:u,command:s,escapedCommand:o,verboseInfo:c,fileDescriptors:l,startTime:a});return O_(d,c,u)},nut=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=ZN(t,e,r),a=iut(r),{file:c,commandArguments:u,options:l}=gD(t,e,a);sut(l);let d=Hbe(l,o);return{file:c,commandArguments:u,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},iut=t=>t.node&&!t.ipc?{...t,ipc:!1}:t,sut=({ipc:t,ipcInput:e,detached:r,cancelSignal:n})=>{e&&MD("ipcInput"),t&&MD("ipc: true"),r&&MD("detached: true"),n&&MD("cancelSignal")},MD=t=>{throw new TypeError(`The "${t}" option cannot be used with synchronous methods.`)},out=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,verboseInfo:s,fileDescriptors:o,startTime:a})=>{let c=aut({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}=mTe(c,r),{output:h,error:m=u}=lTe({fileDescriptors:o,syncResult:c,options:r,isMaxBuffer:p,verboseInfo:s}),_=h.map((v,x)=>ru(v,r,x)),S=ru(dTe(h,r),r,"all");return uut({error:m,exitCode:l,signal:d,timedOut:f,isMaxBuffer:p,stdio:_,all:S,options:r,command:n,escapedCommand:i,startTime:a})},aut=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:s,startTime:o})=>{try{oTe(s,r);let a=cut(r);return rut(..._D(t,e,a))}catch(a){return x_({error:a,command:n,escapedCommand:i,fileDescriptors:s,options:r,startTime:o,isSync:!0})}},cut=({encoding:t,maxBuffer:e,...r})=>({...r,encoding:"buffer",maxBuffer:wD(e)}),uut=({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?AD({command:c,escapedCommand:u,stdio:s,all:o,ipcOutput:[],options:a,startTime:l}):Ow({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 Zlt}from"events";import{spawn as Qlt}from"child_process";import ETe from"process";import{once as gY,on as lut}from"events";var _Te=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0,filter:s}={})=>(E_({methodName:"getOneMessage",isSubprocess:r,ipc:n,isConnected:lD(t)}),dut({anyProcess:t,channel:e,isSubprocess:r,filter:s,reference:i})),dut=async({anyProcess:t,channel:e,isSubprocess:r,filter:n,reference:i})=>{oD(e,i);let s=Ml(t,e,r),o=new AbortController;try{return await Promise.race([fut(s,n,o),put(s,r,o),hut(s,r,o)])}catch(a){throw b_(t),a}finally{o.abort(),aD(e,i)}},fut=async(t,e,{signal:r})=>{if(e===void 0){let[n]=await gY(t,"message",{signal:r});return n}for await(let[n]of lut(t,"message",{signal:r}))if(e(n))return n},put=async(t,e,{signal:r})=>{await gY(t,"disconnect",{signal:r}),nEe(e)},hut=async(t,e,{signal:r})=>{let[n]=await gY(t,"strict:error",{signal:r});throw nD(n,e)};import{once as STe,on as mut}from"events";var vTe=({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})=>{E_({methodName:"getEachMessage",isSubprocess:r,ipc:n,isConnected:lD(t)}),oD(e,s);let o=Ml(t,e,r),a=new AbortController,c={};return gut(t,o,a),_ut({ipcEmitter:o,isSubprocess:r,controller:a,state:c}),yut({anyProcess:t,channel:e,ipcEmitter:o,isSubprocess:r,shouldAwait:i,controller:a,state:c,reference:s})},gut=async(t,e,r)=>{try{await STe(e,"disconnect",{signal:r.signal}),r.abort()}catch{}},_ut=async({ipcEmitter:t,isSubprocess:e,controller:r,state:n})=>{try{let[i]=await STe(t,"strict:error",{signal:r.signal});n.error=nD(i,e),r.abort()}catch{}},yut=async function*({anyProcess:t,channel:e,ipcEmitter:r,isSubprocess:n,shouldAwait:i,controller:s,state:o,reference:a}){try{for await(let[c]of mut(r,"message",{signal:s.signal}))yTe(o),yield c}catch{yTe(o)}finally{s.abort(),aD(e,a),n||b_(t),i&&await t}},yTe=({error:t})=>{if(t)throw t};var bTe=(t,{ipc:e})=>{Object.assign(t,wTe(t,!1,e))},TTe=()=>{let t=ETe,e=!0,r=ETe.channel!==void 0;return{...wTe(t,e,r),getCancelSignal:PEe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})}},wTe=(t,e,r)=>({sendMessage:hD.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getOneMessage:_Te.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getEachMessage:vTe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})});import{ChildProcess as Sut}from"child_process";import{PassThrough as vut,Readable as Eut,Writable as but,Duplex as Tut}from"stream";var ATe=({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,verboseInfo:o})=>{aY(n);let a=new Sut;wut(a,n),Object.assign(a,{readable:Aut,writable:Rut,duplex:xut});let c=x_({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,isSync:!1}),u=Out(c,o,i);return{subprocess:a,promise:u}},wut=(t,e)=>{let r=Pw(),n=Pw(),i=Pw(),s=Array.from({length:e.length-3},Pw),o=Pw(),a=[r,n,i,...s];Object.assign(t,{stdin:r,stdout:n,stderr:i,all:o,stdio:a})},Pw=()=>{let t=new vut;return t.end(),t},Aut=()=>new Eut({read(){}}),Rut=()=>new but({write(){}}),xut=()=>new Tut({read(){},write(){}}),Out=async(t,e,r)=>O_(t,e,r);import{createReadStream as RTe,createWriteStream as xTe}from"fs";import{Buffer as Iut}from"buffer";import{Readable as Cw,Writable as Put,Duplex as Cut}from"stream";var ITe=(t,e)=>ID(kut,t,e,!1),kw=({type:t,optionName:e})=>{throw new TypeError(`The \`${e}\` option cannot be ${$l[t]}.`)},OTe={fileNumber:kw,generator:pY,asyncGenerator:pY,nodeStream:({value:t})=>({stream:t}),webTransform({value:{transform:t,writableObjectMode:e,readableObjectMode:r}}){let n=e||r;return{stream:Cut.fromWeb(t,{objectMode:n})}},duplex:({value:{transform:t}})=>({stream:t}),native(){}},kut={input:{...OTe,fileUrl:({value:t})=>({stream:RTe(t)}),filePath:({value:{file:t}})=>({stream:RTe(t)}),webStream:({value:t})=>({stream:Cw.fromWeb(t)}),iterable:({value:t})=>({stream:Cw.from(t)}),asyncIterable:({value:t})=>({stream:Cw.from(t)}),string:({value:t})=>({stream:Cw.from(t)}),uint8Array:({value:t})=>({stream:Cw.from(Iut.from(t))})},output:{...OTe,fileUrl:({value:t})=>({stream:xTe(t)}),filePath:({value:{file:t,append:e}})=>({stream:xTe(t,e?{flags:"a"}:{})}),webStream:({value:t})=>({stream:Put.fromWeb(t)}),iterable:kw,asyncIterable:kw,string:kw,uint8Array:kw}};import{on as Nut,once as PTe}from"events";import{PassThrough as Dut,getDefaultHighWaterMark as Mut}from"stream";import{finished as NTe}from"stream/promises";function _p(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=$ut(t,e),n=new yY({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return n}var $ut=(t,e)=>{if(t.length===0)return Mut(e);let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},yY=class extends Dut{#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??=Lut(this,this.#e,this.#s);let r=zut({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)}},Lut=async(t,e,r)=>{$D(t,CTe);let n=new AbortController;try{await Promise.race([Uut(t,n),Fut(t,e,r,n)])}finally{n.abort(),$D(t,-CTe)}},Uut=async(t,{signal:e})=>{try{await NTe(t,{signal:e,cleanup:!0})}catch(r){throw DTe(t,r),r}},Fut=async(t,e,r,{signal:n})=>{for await(let[i]of Nut(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}\`.`)},zut=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:s,unpipeEvent:o})=>{$D(t,kTe);let a=new AbortController;try{await Promise.race([jut(s,e,a),qut({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:a}),But({stream:e,streams:r,ended:n,aborted:i,unpipeEvent:o,controller:a})])}finally{a.abort(),$D(t,-kTe)}r.size>0&&r.size===n.size+i.size&&(n.size===0&&i.size>0?vY(t):Vut(t))},jut=async(t,e,{signal:r})=>{try{await t,r.aborted||vY(e)}catch(n){r.aborted||DTe(e,n)}},qut=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:s}})=>{try{await NTe(e,{signal:s,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(o){if(s.aborted||!r.has(e))return;MTe(o)?i.add(e):$Te(t,o)}},But=async({stream:t,streams:e,ended:r,aborted:n,unpipeEvent:i,controller:{signal:s}})=>{if(await PTe(t,i,{signal:s}),!t.readable)return PTe(s,"abort",{signal:s});e.delete(t),r.delete(t),n.delete(t)},Vut=t=>{t.writable&&t.end()},DTe=(t,e)=>{MTe(e)?vY(t):$Te(t,e)},MTe=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",vY=t=>{(t.readable||t.writable)&&t.destroy()},$Te=(t,e)=>{t.destroyed||(t.once("error",Gut),t.destroy(e))},Gut=()=>{},$D=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},CTe=2,kTe=1;import{finished as LTe}from"stream/promises";var P_=(t,e)=>{t.pipe(e),Hut(t,e),Wut(t,e)},Hut=async(t,e)=>{if(!(jo(t)||jo(e))){try{await LTe(t,{cleanup:!0,readable:!0,writable:!1})}catch{}EY(e)}},EY=t=>{t.writable&&t.end()},Wut=async(t,e)=>{if(!(jo(t)||jo(e))){try{await LTe(e,{cleanup:!0,readable:!1,writable:!0})}catch{}bY(t)}},bY=t=>{t.readable&&t.destroy()};var UTe=(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})=>Ns.has(c)))Kut(t,a,o,i);for(let{stream:a}of s.filter(({type:c})=>!Ns.has(c)))Zut({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]:_p(s);P_(o,i)}},Kut=(t,e,r,n)=>{r==="output"?P_(t.stdio[n],e):P_(e,t.stdio[n]);let i=Yut[n];i!==void 0&&(t[i]=e),t.stdio[n]=e},Yut=["stdin","stdout","stderr"],Zut=({subprocess:t,stream:e,direction:r,fdNumber:n,pipeGroups:i,controller:s})=>{if(e===void 0)return;Qut(e,s);let[o,a]=r==="output"?[e,t.stdio[n]]:[t.stdio[n],e],c=i.get(o)??[];i.set(o,[...c,a])},Qut=(t,{signal:e})=>{jo(t)&&pp(t,Jut,e)},Jut=2;import{addAbortListener as tlt}from"events";var yp=[];yp.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&yp.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&yp.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var LD=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",TY=Symbol.for("signal-exit emitter"),wY=globalThis,Xut=Object.defineProperty.bind(Object),AY=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(wY[TY])return wY[TY];Xut(wY,TY,{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}},UD=class{},elt=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),RY=class extends UD{onExit(){return()=>{}}load(){}unload(){}},xY=class extends UD{#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 yp)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(!LD(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 yp)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,yp.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 LD(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"&&LD(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:FTe,load:Fir,unload:zir}=elt(LD(OY)?new xY(OY):new RY);var zTe=(t,{cleanup:e,detached:r},{signal:n})=>{if(!e||r)return;let i=FTe(()=>{t.kill()});tlt(n,()=>{i()})};var qTe=({source:t,sourcePromise:e,boundOptions:r,createNested:n},...i)=>{let s=YN(),{destination:o,destinationStream:a,destinationError:c,from:u,unpipeSignal:l}=rlt(r,n,i),{sourceStream:d,sourceError:f}=ilt(t,u),{options:p,fileDescriptors:h}=za.get(t);return{sourcePromise:e,sourceStream:d,sourceOptions:p,sourceError:f,destination:o,destinationStream:a,destinationError:c,unpipeSignal:l,fileDescriptors:h,startTime:s}},rlt=(t,e,r)=>{try{let{destination:n,pipeOptions:{from:i,to:s,unpipeSignal:o}={}}=nlt(t,e,...r),a=sD(n,s);return{destination:n,destinationStream:a,from:i,unpipeSignal:o}}catch(n){return{destinationError:n}}},nlt=(t,e,r,...n)=>{if(Array.isArray(r))return{destination:e(jTe,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]=FN(r,...n);return{destination:e(jTe)(i,s,o),pipeOptions:o}}if(za.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}`)},jTe=({options:t})=>({options:{...t,stdin:"pipe",piped:!0}}),ilt=(t,e)=>{try{return{sourceStream:T_(t,e)}}catch(r){return{sourceError:r}}};var VTe=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n,fileDescriptors:i,sourceOptions:s,startTime:o})=>{let a=slt({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n});if(a!==void 0)throw IY({error:a,fileDescriptors:i,sourceOptions:s,startTime:o})},slt=({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},IY=({error:t,fileDescriptors:e,sourceOptions:r,startTime:n})=>x_({error:t,command:BTe,escapedCommand:BTe,fileDescriptors:e,options:r,startTime:n,isSync:!1}),BTe="source.pipe(destination)";var GTe=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 olt}from"stream/promises";var HTe=(t,e,r)=>{let n=FD.has(e)?clt(t,e):alt(t,e);return pp(t,llt,r.signal),pp(e,dlt,r.signal),ult(e),n},alt=(t,e)=>{let r=_p([t]);return P_(r,e),FD.set(e,r),r},clt=(t,e)=>{let r=FD.get(e);return r.add(t),r},ult=async t=>{try{await olt(t,{cleanup:!0,readable:!1,writable:!0})}catch{}FD.delete(t)},FD=new WeakMap,llt=2,dlt=1;import{aborted as flt}from"util";var WTe=(t,e)=>t===void 0?[]:[plt(t,e)],plt=async(t,{sourceStream:e,mergedStream:r,fileDescriptors:n,sourceOptions:i,startTime:s})=>{await flt(t,e),await r.remove(e);let o=new Error("Pipe canceled by `unpipeSignal` option.");throw IY({error:o,fileDescriptors:n,sourceOptions:i,startTime:s})};var zD=(t,...e)=>{if(yr(e[0]))return zD.bind(void 0,{...t,boundOptions:{...t.boundOptions,...e[0]}});let{destination:r,...n}=qTe(t,...e),i=hlt({...n,destination:r});return i.pipe=zD.bind(void 0,{...t,source:r,sourcePromise:i,boundOptions:{}}),i},hlt=async({sourcePromise:t,sourceStream:e,sourceOptions:r,sourceError:n,destination:i,destinationStream:s,destinationError:o,unpipeSignal:a,fileDescriptors:c,startTime:u})=>{let l=mlt(t,i);VTe({sourceStream:e,sourceError:n,destinationStream:s,destinationError:o,fileDescriptors:c,sourceOptions:r,startTime:u});let d=new AbortController;try{let f=HTe(e,s,d);return await Promise.race([GTe(l),...WTe(a,{sourceStream:e,mergedStream:f,sourceOptions:r,fileDescriptors:c,startTime:u})])}finally{d.abort()}},mlt=(t,e)=>Promise.allSettled([t,e]);import{setImmediate as blt}from"timers/promises";import{on as glt}from"events";import{getDefaultHighWaterMark as _lt}from"stream";var jD=({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:n,encoding:i,preserveNewlines:s})=>{let o=new AbortController;return ylt(e,o),YTe({stream:t,controller:o,binary:r,shouldEncode:!t.readableObjectMode&&n,encoding:i,shouldSplit:!t.readableObjectMode,preserveNewlines:s})},ylt=async(t,e)=>{try{await t}catch{}finally{e.abort()}},PY=({stream:t,onStreamEnd:e,lines:r,encoding:n,stripFinalNewline:i,allMixed:s})=>{let o=new AbortController;Slt(e,o,t);let a=t.readableObjectMode&&!s;return YTe({stream:t,controller:o,binary:n==="buffer",shouldEncode:!a,encoding:n,shouldSplit:!a&&r,preserveNewlines:!i})},Slt=async(t,e,r)=>{try{await t}catch{r.destroy()}finally{e.abort()}},YTe=({stream:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})=>{let a=glt(t,"data",{signal:e.signal,highWaterMark:KTe,highWatermark:KTe});return vlt({onStdoutChunk:a,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})},CY=_lt(!0),KTe=CY,vlt=async function*({onStdoutChunk:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o}){let a=Elt({binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o});try{for await(let[c]of t)yield*gp(c,a,0)}catch(c){if(!e.signal.aborted)throw c}finally{yield*Iw(a)}},Elt=({binary:t,shouldEncode:e,encoding:r,shouldSplit:n,preserveNewlines:i})=>[CD(t,r,!e),PD(t,i,!n,{})].filter(Boolean);var ZTe=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=Tlt({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:a,verboseInfo:u,streamInfo:l});if(!i){await Promise.all([wlt(t),d]);return}let f=cY(c,r),p=PY({stream:t,onStreamEnd:e,lines:o,encoding:n,stripFinalNewline:f,allMixed:a}),[h]=await Promise.all([Alt({stream:t,iterable:p,fdNumber:r,encoding:n,maxBuffer:s,lines:o}),d]);return h},Tlt=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:i,verboseInfo:s,streamInfo:{fileDescriptors:o}})=>{if(!DD({stdioItems:o[r]?.stdioItems,encoding:n,verboseInfo:s,fdNumber:r}))return;let a=PY({stream:t,onStreamEnd:e,lines:!0,encoding:n,stripFinalNewline:!0,allMixed:i});await aTe(a,t,r,s)},wlt=async t=>{await blt(),t.readableFlowing===null&&t.resume()},Alt=async({stream:t,stream:{readableObjectMode:e},iterable:r,fdNumber:n,encoding:i,maxBuffer:s,lines:o})=>{try{return e||o?await ED(r,{maxBuffer:s}):i==="buffer"?new Uint8Array(await bD(r,{maxBuffer:s})):await R_(r,{maxBuffer:s})}catch(a){return QTe(abe({error:a,stream:t,readableObjectMode:e,lines:o,encoding:i,fdNumber:n}))}},kY=async t=>{try{return await t}catch(e){return QTe(e)}},QTe=({bufferedData:t})=>TSe(t)?new Uint8Array(t):t;import{finished as Rlt}from"stream/promises";var Nw=async(t,e,r,{isSameDirection:n,stopOnExit:i=!1}={})=>{let s=xlt(t,r),o=new AbortController;try{await Promise.race([...i?[r.exitPromise]:[],Rlt(t,{cleanup:!0,signal:o.signal})])}catch(a){s.stdinCleanedUp||Plt(a,e,r,n)}finally{o.abort()}},xlt=(t,{originalStreams:[e],subprocess:r})=>{let n={stdinCleanedUp:!1};return t===e&&Olt(t,r,n),n},Olt=(t,e,r)=>{let{_destroy:n}=t;t._destroy=(...i)=>{Ilt(e,r),n.call(t,...i)}},Ilt=({exitCode:t,signalCode:e},r)=>{(t!==null||e!==null)&&(r.stdinCleanedUp=!0)},Plt=(t,e,r,n)=>{if(!Clt(t,e,r,n))throw t},Clt=(t,e,r,n=!0)=>r.propagating?JTe(t)||qD(t):(r.propagating=!0,NY(r,e)===n?JTe(t):qD(t)),NY=({fileDescriptors:t},e)=>e!=="all"&&t[e].direction==="input",qD=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",JTe=t=>t?.code==="EPIPE";var XTe=({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=Nw(t,e,u);if(NY(u,e)){await l;return}let[d]=await Promise.all([ZTe({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 ewe=({stdout:t,stderr:e},{all:r})=>r&&(t||e)?_p([t,e].filter(Boolean)):void 0,twe=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>DY({...klt(t,r),fdNumber:"all",encoding:e,maxBuffer:n[1]+n[2],lines:i[1]||i[2],allMixed:Nlt(t),stripFinalNewline:s,verboseInfo:o,streamInfo:a}),klt=({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}},Nlt=({all:t,stdout:e,stderr:r})=>t&&e&&r&&e.readableObjectMode!==r.readableObjectMode;import{once as Dlt}from"events";var rwe=t=>y_(t,"ipc"),nwe=(t,e)=>{let r=KN(t);Ua({type:"ipc",verboseMessage:r,fdNumber:"ipc",verboseInfo:e})};var iwe=async({subprocess:t,buffer:e,maxBuffer:r,ipc:n,ipcOutput:i,verboseInfo:s})=>{if(!n)return i;let o=rwe(s),a=eu(e,"ipc"),c=eu(r,"ipc");for await(let u of _Y({anyProcess:t,channel:t.channel,isSubprocess:!1,ipc:n,shouldAwait:!1,reference:!0}))a&&(cbe(t,i,c),i.push(u)),o&&nwe(u,s);return i},swe=async(t,e)=>(await Promise.allSettled([t]),e);var owe=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 v=fTe(t,f),x={originalStreams:m,fileDescriptors:h,subprocess:t,exitPromise:v,propagating:!1},y=XTe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:x}),E=twe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:x}),A=[],C=iwe({subprocess:t,buffer:r,maxBuffer:n,ipc:l,ipcOutput:A,verboseInfo:p}),P=Mlt(m,t,x),I=$lt(h,x);try{return await Promise.race([Promise.all([{},hTe(v),Promise.all(y),E,C,zEe(t,d),...P,...I]),_,Llt(t,S),...MEe(t,s,f,S),...rEe({subprocess:t,cancelSignal:o,gracefulCancel:a,context:f,controller:S}),...NEe({subprocess:t,cancelSignal:o,gracefulCancel:a,forceKillAfterDelay:c,context:f,controller:S})])}catch(k){return f.terminationReason??="other",Promise.all([{error:k},v,Promise.all(y.map(T=>kY(T))),kY(E),swe(C,A),Promise.allSettled(P),Promise.allSettled(I)])}},Mlt=(t,e,r)=>t.map((n,i)=>n===e.stdio[i]?void 0:Nw(n,i,r)),$lt=(t,e)=>t.flatMap(({stdioItems:r},n)=>r.filter(({value:i,stream:s=i})=>Vo(s,{checkOpen:!1})&&!jo(s)).map(({type:i,value:s,stream:o=s})=>Nw(o,n,e,{isSameDirection:Ns.has(i),stopOnExit:i==="native"}))),Llt=async(t,{signal:e})=>{let[r]=await Dlt(t,"error",{signal:e});throw r};var awe=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),Dw=(t,e,r)=>{let n=t[r];n.has(e)||n.set(e,[]);let i=n.get(e),s=Fa();return i.push(s),{resolve:s.resolve.bind(s),promises:i}},C_=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 Ult}from"stream";import{callbackify as Flt}from"util";import{finished as cwe}from"stream/promises";var MY=async t=>{if(t!==void 0)try{await $Y(t)}catch{}},uwe=async t=>{if(t!==void 0)try{await LY(t)}catch{}},$Y=async t=>{await cwe(t,{cleanup:!0,readable:!1,writable:!0})},LY=async t=>{await cwe(t,{cleanup:!0,readable:!0,writable:!1})},BD=async(t,e)=>{if(await t,e)throw e},VD=(t,e,r)=>{r&&!qD(r)?t.destroy(r):e&&t.destroy()};var lwe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,binary:i=!0,preserveNewlines:s=!0}={})=>{let o=i||Qi.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 Ult({read:f,destroy:Flt(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=T_(t,e),i=Dw(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=Fa(),o=jD({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:!r,encoding:n,preserveNewlines:i});return{read(){zlt(this,o,s)},onStdoutDataDone:s}},zlt=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),dwe(r,s)}},qY=async({subprocessStdout:t,subprocess:e,waitReadableDestroy:r},n)=>{await C_(r,e)&&(dwe(t,n),await BD(e,n))},dwe=(t,e)=>{VD(t,t.readable,e)};import{Writable as jlt}from"stream";import{callbackify as fwe}from"util";var pwe=({subprocess:t,concurrentStreams:e},{to:r}={})=>{let{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}=BY(t,r,e),o=new jlt({...VY(n,t,i),destroy:fwe(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=sD(t,e),i=Dw(r,n,"writableFinal"),s=Dw(r,n,"writableDestroy");return{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}},VY=(t,e,r)=>({write:qlt.bind(void 0,t),final:fwe(Blt.bind(void 0,t,e,r))}),qlt=(t,e,r,n)=>{t.write(e,r)?n():t.once("drain",n)},Blt=async(t,e,r)=>{await C_(r,e)&&(t.writable&&t.end(),await e)},GY=async(t,e,r)=>{try{await $Y(t),e.writable&&e.end()}catch(n){await uwe(r),hwe(e,n)}},HY=async({subprocessStdin:t,subprocess:e,waitWritableFinal:r,waitWritableDestroy:n},i)=>{await C_(r,e),await C_(n,e)&&(hwe(t,i),await BD(e,i))},hwe=(t,e)=>{VD(t,t.writable,e)};import{Duplex as Vlt}from"stream";import{callbackify as Glt}from"util";var mwe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,to:i,binary:s=!0,preserveNewlines:o=!0}={})=>{let a=s||Qi.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}),v=new Vlt({read:_,...VY(l,t,d),destroy:Glt(Hlt.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:v,subprocess:t,subprocessStdin:l}),GY(l,v,c),v},Hlt=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||Qi.has(e),o=T_(t,r),a=jD({subprocessStdout:o,subprocess:t,binary:s,shouldEncode:!0,encoding:e,preserveNewlines:i});return Wlt(a,o,t)},Wlt=async function*(t,e,r){try{yield*t}finally{e.readable&&e.destroy(),await r}};var gwe=(t,{encoding:e})=>{let r=awe();t.readable=lwe.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.writable=pwe.bind(void 0,{subprocess:t,concurrentStreams:r}),t.duplex=mwe.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 _we=(t,e)=>{for(let[r,n]of Ylt){let i=n.value.bind(e);Reflect.defineProperty(t,r,{...n,value:i})}},Klt=(async()=>{})().constructor.prototype,Ylt=["then","catch","finally"].map(t=>[t,Reflect.getOwnPropertyDescriptor(Klt,t)]);var ywe=(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}=edt({file:i,commandArguments:s,options:l,startTime:c,verboseInfo:u,command:o,escapedCommand:a,fileDescriptors:d});return f.pipe=zD.bind(void 0,{source:f,sourcePromise:p,boundOptions:{},createNested:n}),_we(f,p),za.set(f,{options:l,fileDescriptors:d}),f},Jlt=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=ZN(t,e,r),{file:a,commandArguments:c,options:u}=gD(t,e,r),l=Xlt(u),d=ITe(l,o);return{file:a,commandArguments:c,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},Xlt=({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}},edt=({file:t,commandArguments:e,options:r,startTime:n,verboseInfo:i,command:s,escapedCommand:o,fileDescriptors:a})=>{let c;try{c=Qlt(..._D(t,e,r))}catch(h){return ATe({error:h,command:s,escapedCommand:o,fileDescriptors:a,options:r,startTime:n,verboseInfo:i})}let u=new AbortController;Zlt(Number.POSITIVE_INFINITY,u.signal);let l=[...c.stdio];UTe(c,a,u),zTe(c,r,u);let d={},f=Fa();c.kill=eEe.bind(void 0,{kill:c.kill.bind(c),options:r,onInternalError:f,context:d,controller:u}),c.all=ewe(c,r),gwe(c,r),bTe(c,r);let p=tdt({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}},tdt=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 owe({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,E)=>ru(y,e,E)),v=ru(m,e,"all"),x=rdt({errorInfo:d,exitCode:f,signal:p,stdio:S,all:v,ipcOutput:_,context:c,options:e,command:o,escapedCommand:a,startTime:r});return O_(x,n,e)},rdt=({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?Ow({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 ja,isForcefullyTerminated:o.isForcefullyTerminated,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:s,options:a,startTime:l,isSync:!1}):AD({command:c,escapedCommand:u,stdio:n,all:i,ipcOutput:s,options:a,startTime:l});var GD=(t,e)=>{let r=Object.fromEntries(Object.entries(e).map(([n,i])=>[n,ndt(n,t[n],i)]));return{...t,...r}},ndt=(t,e,r)=>idt.has(t)&&yr(e)&&yr(r)?{...e,...r}:r,idt=new Set(["env",...TK]);var Ll=(t,e,r,n)=>{let i=(o,a,c)=>Ll(o,a,r,c),s=(...o)=>sdt({mapArguments:t,deepOptions:r,boundOptions:e,setBoundExeca:n,createNested:i},...o);return n!==void 0&&n(s,i,e),s},sdt=({mapArguments:t,deepOptions:e={},boundOptions:r={},setBoundExeca:n,createNested:i},s,...o)=>{if(yr(s))return i(t,GD(r,s),n);let{file:a,commandArguments:c,options:u,isSync:l}=odt({mapArguments:t,firstArgument:s,nextArguments:o,deepOptions:e,boundOptions:r});return l?gTe(a,c,u):ywe(a,c,u,i)},odt=({mapArguments:t,firstArgument:e,nextArguments:r,deepOptions:n,boundOptions:i})=>{let s=ISe(e)?PSe(e,r):[e,...r],[o,a,c]=FN(...s),u=GD(GD(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 Swe=({file:t,commandArguments:e})=>Ewe(t,e),vwe=({file:t,commandArguments:e})=>({...Ewe(t,e),isSync:!0}),Ewe=(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]=adt(t);return{file:r,commandArguments:n}},adt=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(cdt)){let i=r.at(-1);i&&i.endsWith("\\")?r[r.length-1]=`${i.slice(0,-1)} ${n}`:r.push(n)}return r},cdt=/ +/g;var bwe=(t,e,r)=>{t.sync=e(udt,r),t.s=t.sync},Twe=({options:t})=>wwe(t),udt=({options:t})=>({...wwe(t),isSync:!0}),wwe=t=>({options:{...ldt(t),...t}}),ldt=({input:t,inputFile:e,stdio:r})=>t===void 0&&e===void 0&&r===void 0?{stdin:"inherit"}:{},Awe={preferLocal:!0};var Rwe=Ll(()=>({})),Car=Ll(()=>({isSync:!0})),xwe=Ll(Swe),kar=Ll(vwe),Nar=Ll(LEe),Dar=Ll(Twe,{},Awe,bwe),{sendMessage:Mar,getOneMessage:$ar,getEachMessage:Lar,getCancelSignal:Uar}=TTe();var Owe=!1,Iwe,ddt=t=>{Iwe??=t},Pwe=t=>{Owe=!0,ddt(t)},Nn=()=>Owe,nu=()=>Iwe,Cwe=t=>{switch(t){case"SIGTERM":case"SIGINT":return t;case void 0:return"interrupted";default:return}};var Mw=null,kwe=t=>(Mw&&Mw.destroy(),Mw=new Ds({totalAllowedTime:t}),Mw),Nwe=()=>Mw;var Ds=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&&Nn())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 OC({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 Dwe={name:"@netlify/agent-runner-cli",type:"module",version:"2.3.1",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 mdt=pdt(import.meta.url),gdt=iu.dirname(mdt),_dt=hdt(import.meta.url),k_=ne("shell"),KY=new Set,Mwe={preferLocal:!0},yt=(t,e,r)=>{let[n,i]=ydt(e,r),s={...Mwe,...i},o=Rwe(t,n,s);Lwe(o,s),zwe(o);let a=r?.idleTimeout;return a&&a>0&&Fwe(o,a),o},$we=(t,e)=>{let r={...Mwe,...e},n=xwe(t,r);return Lwe(n,r),zwe(n),e?.idleTimeout&&e.idleTimeout>0&&Fwe(n,e.idleTimeout),n},ydt=function(t,e){return Array.isArray(t)?[t,e]:typeof t=="object"&&t!==null?[[],t]:[[],void 0]},Lwe=(t,e)=>{if(e.stdio!==void 0||e.stdout!==void 0||e.stderr!==void 0||Ba.env.NETLIFY_LOCAL_QUIET==="true")return;if(Ba.env.NETLIFY_MASK_LOGS!=="false"){t.stdout?.pipe(new wb).pipe(Ba.stdout),t.stderr?.pipe(new wb).pipe(Ba.stderr);return}t.stdout?.pipe(Ba.stdout),t.stderr?.pipe(Ba.stderr)},YY=(t,e="SIGTERM")=>{try{return t.pid&&!t.killed?(Ba.kill(-t.pid,e),k_.log(`Killed process ${t.pid} with signal ${e}`),!0):!1}catch(r){return k_.error("Error killing process:",r),!1}},Uwe=t=>YY(t,"SIGKILL"),Fwe=(t,e)=>{let r=null,n=()=>{k_.log(`Process ${t.pid} killed due to idle timeout (no output for ${e}ms)`),YY(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(k_.log(`Force killing idle process ${t.pid}`),Uwe(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)},zwe=t=>{KY.add(t);let e=Nwe();if(e){let r=e.onTimesUp(()=>{k_.log(`Global timer expired, killing process ${t.pid}`),YY(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(k_.log(`Force killing process ${t.pid} after timeout`),Uwe(t))},5e3)});t.on("exit",()=>{KY.delete(t),r()}),t.on("error",()=>{KY.delete(t),r()})}};function Va(t,e){if(!Ba.env.NETLIFY_LOCAL_MODE)try{let i=_dt.resolve(Dwe.name),s=iu.dirname(i);for(;s!==iu.dirname(s);){let o=iu.dirname(s);if(iu.basename(o)==="node_modules"){let a=iu.join(o,".bin",e);if(HD.existsSync(a))return a;break}s=o}}catch(i){console.error("Could not resolve package.json",i)}if(Ba.env.NODE_PATH){let i=iu.join(Ba.env.NODE_PATH,".bin",e);if(HD.existsSync(i))return i}let r=iu.join(t,"node_modules",".bin",e);if(HD.existsSync(r))return r;let n=iu.join(gdt,"..","node_modules",".bin",e);if(HD.existsSync(n))return n}var jwe=ne("repo"),Gwe="runner-diffs-",YD=t=>`${Gwe}${t}-`,Hwe=async t=>{let e=Vwe.tmpdir(),r;try{r=await WD.readdir(e)}catch{return}await Promise.all(r.filter(n=>n.startsWith(Gwe)&&!n.startsWith(YD(t))).map(n=>WD.rm(KD.join(e,n),{recursive:!0,force:!0}).catch(()=>{})))},Sr=(t,e={})=>yt("git",t,{...e,env:{...e.env,NETLIFY_INTERNAL_GIT:"1"}}),ZD=async({config:t,isRetry:e,cwd:r=process.cwd()})=>{jwe.info("Getting runner diffs");let n=await XY(r),{hasChanges:i}=n,{status:s}=n;if(!i)return{hasChanges:!1};if(!e){let u=t9(s);await Rdt(u,r)}jwe.info("Changes after processing"),await JY(r);let o=await $w(s,r);if(await QY(o,r),i=await Tdt(r),!i)return{hasChanges:!1,ignored:o};await Sr(["commit","-m","Agent runner [skip ci]"],{cwd:r});let a=await WD.mkdtemp(KD.join(Vwe.tmpdir(),YD(t.sessionId))),c=await ZY({config:t,diffDir:a,cwd:r,target:{commit:"HEAD"},ignored:o});return await Edt(r),c.hasChanges&&Y.distribution("diff.size",(c.diffBinary??c.diff).size,{phase:"final"}),c},ZY=async({config:t,diffDir:e,cwd:r,target:n,ignored:i})=>{let s="commit"in n?n.commit:"--cached",o="indexPath"in n?{GIT_INDEX_FILE:n.indexPath}:void 0,a=async({from:p,fileName:h,binary:m})=>{let _=KD.join(e,h);await Sr([...m?["diff",p,s,"--binary"]:["diff",p,s],`--output=${_}`],{stdio:["ignore","ignore","pipe"],cwd:r,env:o});let{size:v}=await WD.stat(_);return{path:_,size:v}},c=await a({from:t.runSha,fileName:"session.patch"});if(c.size===0)return{hasChanges:!1,ignored:i};let u=await a({from:t.runSha,fileName:"session-binary.patch",binary:!0}),l,d;if(t.sha){l=await a({from:t.sha,fileName:"cumulative.patch"});let p=await a({from:t.sha,fileName:"cumulative-binary.patch",binary:!0});await Bwe(l,p)||(d=p)}let f={hasChanges:!0,diff:c,resultDiff:l,ignored:i};return await Bwe(c,u)||(f.diffBinary=u),d&&(f.resultDiffBinary=d),f},qwe=async t=>{let e=Sdt("sha256");for await(let r of vdt(t))e.update(r);return e.digest("hex")},Bwe=async(t,e)=>t.size===e.size&&await qwe(t.path)===await qwe(e.path),Edt=async(t=process.cwd())=>{process.env.NETLIFY_LOCAL_MODE&&await Sr(["reset","--soft","HEAD~1"],{cwd:t})},QY=async(t=[],e=process.cwd())=>{await Sr(["add",".",...t],{cwd:e})},JY=async(t=process.cwd())=>{let e=await Sr(["status","-s"],{cwd:t});return String(e.stdout??"")},Wwe=/.. (.+)?\.log$/,bdt=[Wwe],XY=async(t=process.cwd())=>{let e=await JY(t);return{hasChanges:(e.trim().length===0?[]:e.split(`
|
|
388
388
|
`).filter(i=>bdt.some(o=>o instanceof RegExp?o.test(i):i===o)?!1:i[1]?.trim()!=="")).length!==0,status:e}},Tdt=async(t=process.cwd())=>{try{return await Sr(["diff","--staged","--quiet"],{cwd:t}),!1}catch{return!0}},e9=async(t=process.cwd())=>{let{stdout:e}=await Sr(["rev-parse","HEAD"],{cwd:t});return String(e??"").trim()},wdt=1,Adt=async t=>{try{return await Sr(["rev-parse","--verify","--quiet","HEAD"],{cwd:t}),!0}catch(e){if(e.exitCode===wdt)return!1;throw e}},Kwe=async(t=process.cwd())=>{if(!await Adt(t))return!0;let{stdout:e}=await Sr(["ls-tree","--name-only","HEAD"],{cwd:t});return String(e??"").trim().length===0},Ywe=async(t=process.cwd())=>{let{stdout:e}=await Sr(["rev-list","--max-parents=0","HEAD"],{cwd:t});return String(e??"").trim()},$w=async(t,e=process.cwd())=>{t||=await JY(e);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 t.split(`
|
|
389
389
|
`).forEach(i=>{r.forEach(o=>{let a=i===`?? ${o}`,c=i.startsWith(`?? ${o}/`)||i.startsWith(`?? ${o}${KD.sep}`);(a||c)&&n.push(`:!${o}`)});let s=i.match(Wwe)?.[1];s&&n.push(`:!${s}.log`)}),n},Zwe=async(t=process.cwd())=>{await Sr(["reset","--hard","HEAD"],{cwd:t})},Qwe=async(t=process.cwd())=>{let e=await Sr(["clean","-fd","-e",".netlify"],{stdio:["ignore","pipe","pipe"],cwd:t});return String(e.stdout??"").split(`
|
|
390
390
|
`).filter(r=>r.startsWith("Removing ")).map(r=>r.slice(9))},t9=t=>{let e=t.split(`
|
|
@@ -577,7 +577,7 @@ ${o.trim()}
|
|
|
577
577
|
\`\`\``),{title:n,message:o,category:i}};import Rh from"fs/promises";import yR from"os";import Ad from"path";import BS from"process";import VSt from"readline";import gR from"fs/promises";import zSt from"os";import tL from"path";var yPe=ne("gemini_session"),jSt=t=>t instanceof Error?t.message:String(t),qSt=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},BSt=async t=>{let r=(await gR.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 qSt(o)?(n=!0,JSON.stringify(o)):s});return n&&await gR.writeFile(t,i.join(`
|
|
579
579
|
`),"utf8"),n},u8=async(t,e=tL.join(zSt.homedir(),".gemini"))=>{let r=tL.join(e,"tmp"),n=t.slice(0,8),i;try{i=await gR.readdir(r)}catch{return}for(let s of i){let o=tL.join(r,s,"chats"),a;try{a=await gR.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 gR.readFile(u,"utf8")).split(`
|
|
580
|
-
`,1)[0];if(JSON.parse(l).sessionId===t)return u}catch{continue}}}},_R=async t=>{try{let e=await u8(t);return e?(await BSt(e),!0):(yPe.log(`No gemini session file for ${t}; not resumable, using fresh session`),!1)}catch(e){return yPe.warn(`Could not sanitize gemini session ${t} for resume; using fresh session`,{error:jSt(e)}),!1}};var l8={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 cn=ne("runner_gemini"),rL="Gemini CLI",GSt="gemini-3.8-flash",HSt=({catchError:t,runCmd:e,error:r,result:n,runnerName:i})=>(cn.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?(cn.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}):(cn.log("Setting result to undefined because no valid result was captured"),{error:r||`${i} failed`,result:void 0})),WSt={low:"LOW",medium:"MEDIUM",high:"HIGH"},KSt=t=>Number(/^gemini-(\d+)/.exec(t??"")?.[1]),SPe=t=>KSt(t)>=3,YSt=(t,{model:e,effort:r})=>{let n=t.modelConfigs?.customAliases??{};!r||!SPe(e)?(r&&cn.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:WSt[r]}}}},Object.keys(n).length!==0&&(t.modelConfigs={...t.modelConfigs,customAliases:n})},ZSt=async({config:t,model:e,effort:r,creditWrapUpTurn:n,setup:i}={})=>{let{proxied:s,close:o}=await Nl(t),a=Ad.join(yR.homedir(),".gemini"),c=Ad.join(a,"settings.json");try{await Rh.mkdir(a,{recursive:!0});let u={};try{let d=await Rh.readFile(c,"utf-8");u=JSON.parse(d)}catch{cn.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"],YSt(u,{model:e,effort:r}),u.mcpServers={...u.mcpServers},delete u.mcpServers[Ur],delete u.mcpServers[kn],Oi({creditWrapUpTurn:n})&&Object.assign(u.mcpServers,Fw({trust:!0,...i?{env:iAe()}:{}},i));let l=Ka(t,{creditWrapUpTurn:n,proxied:s});l&&Object.assign(u.mcpServers,o9(l,{trust:!0,env:sAe()},nAe)),await Rh.writeFile(c,JSON.stringify(u,null,2),"utf-8"),cn.log("Configured Gemini CLI settings (preview features and compression threshold)")}catch(u){cn.error("Failed to ensure Gemini CLI settings",{error:u.message}),Y.inc("context.degraded",1,{component:"agent_config"})}return o},QSt=async({continueSession:t,priorAgentSessionId:e})=>{if(!t||!e)return!1;let r=await _R(e);return r||(cn.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},JSt=t=>{t?.category===W.Skill&&t.type&&Jc(cn,La(t.type))},XSt=({aiGateway:t})=>{if(t){let{token:e,url:r}=t;if(!e||!r)throw new Error("No token or url provided from AI Gateway");BS.env.GEMINI_API_KEY=e,BS.env.GOOGLE_GEMINI_BASE_URL=r}else if(!BS.env.GEMINI_API_KEY)throw new Error("GEMINI_API_KEY is not provided")},evt=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)||(cn.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||GSt,a=s?"catalog":"built-in";o&&await t.isModelAvailableForProvider("gemini",o)?(n=o,cn.log(`Using ${a} default model: ${o}`)):o&&cn.log(`Default model ${o} is not available, proceeding without model specification`)}}return n},tvt=async({config:t,cliPath:e})=>{let r=[`[[rule]]
|
|
580
|
+
`,1)[0];if(JSON.parse(l).sessionId===t)return u}catch{continue}}}},_R=async t=>{try{let e=await u8(t);return e?(await BSt(e),!0):(yPe.log(`No gemini session file for ${t}; not resumable, using fresh session`),!1)}catch(e){return yPe.warn(`Could not sanitize gemini session ${t} for resume; using fresh session`,{error:jSt(e)}),!1}};var l8={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 cn=ne("runner_gemini"),rL="Gemini CLI",GSt="gemini-3.8-flash",HSt=({catchError:t,runCmd:e,error:r,result:n,runnerName:i})=>(cn.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?(cn.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}):(cn.log("Setting result to undefined because no valid result was captured"),{error:r||`${i} failed`,result:void 0})),WSt={low:"LOW",medium:"MEDIUM",high:"HIGH"},KSt=t=>Number(/^gemini-(\d+)/.exec(t??"")?.[1]),SPe=t=>KSt(t)>=3,YSt=(t,{model:e,effort:r})=>{let n=t.modelConfigs?.customAliases??{};!r||!SPe(e)?(r&&cn.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:WSt[r]}}}},Object.keys(n).length!==0&&(t.modelConfigs={...t.modelConfigs,customAliases:n})},ZSt=async({config:t,model:e,effort:r,creditWrapUpTurn:n,setup:i}={})=>{let{proxied:s,close:o}=await Nl(t),a=Ad.join(yR.homedir(),".gemini"),c=Ad.join(a,"settings.json");try{await Rh.mkdir(a,{recursive:!0});let u={};try{let d=await Rh.readFile(c,"utf-8");u=JSON.parse(d)}catch{cn.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"],YSt(u,{model:e,effort:r}),u.mcpServers={...u.mcpServers},delete u.mcpServers[Ur],delete u.mcpServers[kn],Oi({creditWrapUpTurn:n})&&Object.assign(u.mcpServers,Fw({trust:!0,...i?{env:iAe()}:{}},i));let l=Ka(t,{creditWrapUpTurn:n,proxied:s});l&&Object.assign(u.mcpServers,o9(l,{trust:!0,env:sAe()},nAe)),await Rh.writeFile(c,JSON.stringify(u,null,2),"utf-8"),cn.log("Configured Gemini CLI settings (preview features and compression threshold)")}catch(u){cn.error("Failed to ensure Gemini CLI settings",{error:u.message}),Y.inc("context.degraded",1,{component:"agent_config"})}return o},QSt=async({continueSession:t,priorAgentSessionId:e})=>{if(!t||!e)return!1;let r=await _R(e);return r||(cn.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},JSt=t=>{t?.category===W.Skill&&t.type&&Jc(cn,La(t.type))},XSt=({aiGateway:t})=>{if(t){let{token:e,url:r}=t;if(!e||!r)throw new Error("No token or url provided from AI Gateway");BS.env.GEMINI_API_KEY=e,BS.env.GOOGLE_GEMINI_BASE_URL=r}else if(!BS.env.GEMINI_API_KEY)throw new Error("GEMINI_API_KEY is not provided")},evt=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)||(cn.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||GSt,a=s?"catalog":"built-in";o&&await t.isModelAvailableForProvider("gemini",o)?(n=o,cn.log(`Using ${a} default model: ${o}`)):o&&cn.log(`Default model ${o} is not available, proceeding without model specification`)}}return n},tvt=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
|
`),cn.log("Ask policy allows the read-only database query command",{allowedPrefixes:i})}let n=Ad.join(yR.homedir(),".gemini","ask-policy.toml");return await Rh.mkdir(Ad.dirname(n),{recursive:!0}),await Rh.writeFile(n,r.join(`
|
|
590
590
|
`),"utf-8"),n};async function d8({config:t,persistSteps:e=void 0,sendSteps:r=void 0,aiGateway:n,continueSession:i=!1,priorAgentSessionId:s=void 0,cwd:o=BS.cwd(),cliPath:a="netlify",abortSignal:c=void 0,onSessionId:u=void 0,forceLowEffortForCreditWrapUp:l=void 0}){let{prompt:d}=t,f=Ga("gemini",t.effort);t.effort&&!f&&cn.log(`Effort '${t.effort}' is not available on ${rL}; using its default`);let p=l?"low":f;XSt({aiGateway:n});let h=await evt({aiGateway:n,config:t,model:t.model}),m=$s({creditWrapUpTurn:l})?await Us():void 0,_=m?Ls(t,m.filePath):void 0,S=await ZSt({config:t,model:h,effort:p,creditWrapUpTurn:l,setup:_}),v=[],x=[],y=[],E={},A=0,C=0,P,I,k,T,B,L=await QSt({continueSession:i,priorAgentSessionId:s}),b=t.mode==="ask",O=b?await tvt({config:t,cliPath:a}):void 0,$=[Va(o,"gemini"),...h?["--model",h]:[],...b?["--approval-mode","default","--policy",O]:["--yolo"],"--skip-trust","--output-format","stream-json",...L?["-r",s]:[],"-p",""],J=`${BS.env.NVM_BIN}/node`;cn.log(`Running ${J} ${$.join(" ")}`);let Q=yt(J,$,{all:!0,env:{...BS.env,GEMINI_CLI_NO_RELAUNCH:"1"},cwd:o,idleTimeout:Wi,cancelSignal:c});Q.stdin?.end(d);let te=m?Fs(m.filePath,ge=>{B||(B={setupRequest:ge},Q.kill())}):void 0,Re=$a(()=>{e?.({steps:v,duration:C}),r?.({steps:x,duration:C}),x=[]},250),Ee=(ge,j)=>{ge.id=A,A+=1,y.push(ge),v.push(ge),x.push(ge),j||Re.flush(),Re(),j&&Re.flush()},Se=h||"default";Ar(t)||Ee({title:`Using ${rL} with ${Se}`,category:W.Environment},!0);let we=VSt.createInterface({input:Q.all});we.on("error",ge=>{cn.error("Readline interface error",{error:ge.message,stack:ge.stack})});let be="",me=()=>{be&&Ee({message:be.trim(),category:W.AgentMessage}),be=""};we.on("line",ge=>{let j;try{if(ge.startsWith("[API Error")){let F=ge.match(/\[api error: (.+?)]$/i)?.[1];j={type:"error",value:dp(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"&&(T=j.session_id,u?.(T)),["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?Fl(j.tool_name,j.parameters,oK):void 0;if(F&&"interaction"in F){B=F.interaction,Q.kill();break}if(F){cn.warn("Ignoring malformed pause tool input",{toolUseId:j.tool_id,tool:j.tool_name,issues:F.issues}),Y.inc(F.metric,1);break}if(Ya(j.tool_name,oK))break;let D=l8[j.tool_name]?.name??j.tool_name,V=j.parameters?.file_path,K=V&&Ad.relative(o,V),re=j.parameters?.command,X=j.tool_name==="activate_skill"&&j.parameters?.name,ue=j.tool_name==="run_shell_command"&&Ji(re),De=[D,K&&`\`${K}\``,re&&`\`${re}\``].filter(Boolean).join(" ");if(X)De=`Use ${La(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:l8[j.tool_name]?.category,...X&&{type:X}};E[j.tool_id]=ot,Re.flush();break}case"tool_result":{let F=E[j.tool_id];F&&(j.output&&(F.message=`\`\`\`
|
|
591
591
|
${j.output.trim()}
|
|
592
|
-
\`\`\``),Ee(F,!0),JSt(F));break}case"result":{C=j.stats?.duration_ms,j.stats&&(Aa(j.stats,h?{model:h}:{}),k=j.stats),j.status==="error"?I=j.error?.message:P=be.trim();break}case"error":{I=j.error;break}case"finished":break;case"init":break;default:{cn.warn("Unhandled message type:",j.type);break}}});let de=!1;if(await Q.catch(ge=>{de=Ms(ge,c),{error:I,result:P}=HSt({catchError:ge,runCmd:Q,error:I,result:P,runnerName:"Gemini"})}),te?.stop(),await Promise.all([m?.remove(),S()]),we.close(),B)return Re.flush(),{steps:y,duration:C,agentSessionId:T,resolvedModel:h,usage:k,pendingInteraction:B};let Le=de;Le&&(!P&&be.trim()&&(P=be.trim()),I=void 0),Re.flush();let{providerFailure:We,classification:ee}=zs({error:I});return{steps:y,duration:C,result:await js({initialResult:P,agentName:rL,hasError:!!I}),error:qs({error:I,agentName:rL}),isRetryableError:ee?.retryable??Bs(I),isProviderUnavailableError:ee?.providerFault??Vs(I),...We?{providerFailure:We}:{},resolvedModel:h,usage:k,agentSessionId:T,...p&&SPe(h)?{effort:p}:{},...Le?{aborted:!0}:{}}}var vPe=async()=>{let t=Ad.join(yR.homedir(),".gemini");await Rh.rm(t,{recursive:!0,force:!0});let e=Ad.join(yR.homedir(),".agents","skills");await Rh.rm(e,{recursive:!0,force:!0})},EPe={baseDir:Ad.join(yR.homedir(),".gemini"),include:["tmp"]};import SR from"fs/promises";import OPe from"os";import xd from"path";import aL from"process";import avt from"readline";import bPe from"fs/promises";var rvt=ne("interaction-files"),nvt=250,ivt=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:N_(r.error.issues)}},TPe=(t,e,r,n)=>{let i=!0,s=setInterval(async()=>{let o=await bPe.readFile(t,"utf-8").catch(()=>{});if(o===void 0)return;clearInterval(s),await bPe.rm(t,{force:!0}).catch(()=>{});let{value:a,issues:c}=e(o);if(a===void 0){rvt.warn(n.message,{filePath:t,issues:c}),Y.inc(n.metric,1);return}i&&r(a)},nvt);return s.unref(),{stop:()=>{i=!1,clearInterval(s)}}},nL=(t,e)=>TPe(t,r=>{let{questions:n,issues:i}=ivt(r);return n?{value:n}:{issues:i}},e,{message:"Ignoring malformed ask tool questions file",metric:"inference.malformed_ask"}),iL=(t,e)=>TPe(t,r=>{let n;try{n=JSON.parse(r)}catch{return{issues:"invalid_json"}}let i=AN.safeParse(n);return i.success?{value:i.data}:{issues:N_(i.error.issues)}},e,{message:"Ignoring malformed authorization request file",metric:"inference.malformed_authorization"});import svt from"os";import RPe from"path";import f8 from"fs";var wPe=ne("opencode_install"),APe="1.
|
|
592
|
+
\`\`\``),Ee(F,!0),JSt(F));break}case"result":{C=j.stats?.duration_ms,j.stats&&(Aa(j.stats,h?{model:h}:{}),k=j.stats),j.status==="error"?I=j.error?.message:P=be.trim();break}case"error":{I=j.error;break}case"finished":break;case"init":break;default:{cn.warn("Unhandled message type:",j.type);break}}});let de=!1;if(await Q.catch(ge=>{de=Ms(ge,c),{error:I,result:P}=HSt({catchError:ge,runCmd:Q,error:I,result:P,runnerName:"Gemini"})}),te?.stop(),await Promise.all([m?.remove(),S()]),we.close(),B)return Re.flush(),{steps:y,duration:C,agentSessionId:T,resolvedModel:h,usage:k,pendingInteraction:B};let Le=de;Le&&(!P&&be.trim()&&(P=be.trim()),I=void 0),Re.flush();let{providerFailure:We,classification:ee}=zs({error:I});return{steps:y,duration:C,result:await js({initialResult:P,agentName:rL,hasError:!!I}),error:qs({error:I,agentName:rL}),isRetryableError:ee?.retryable??Bs(I),isProviderUnavailableError:ee?.providerFault??Vs(I),...We?{providerFailure:We}:{},resolvedModel:h,usage:k,agentSessionId:T,...p&&SPe(h)?{effort:p}:{},...Le?{aborted:!0}:{}}}var vPe=async()=>{let t=Ad.join(yR.homedir(),".gemini");await Rh.rm(t,{recursive:!0,force:!0});let e=Ad.join(yR.homedir(),".agents","skills");await Rh.rm(e,{recursive:!0,force:!0})},EPe={baseDir:Ad.join(yR.homedir(),".gemini"),include:["tmp"]};import SR from"fs/promises";import OPe from"os";import xd from"path";import aL from"process";import avt from"readline";import bPe from"fs/promises";var rvt=ne("interaction-files"),nvt=250,ivt=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:N_(r.error.issues)}},TPe=(t,e,r,n)=>{let i=!0,s=setInterval(async()=>{let o=await bPe.readFile(t,"utf-8").catch(()=>{});if(o===void 0)return;clearInterval(s),await bPe.rm(t,{force:!0}).catch(()=>{});let{value:a,issues:c}=e(o);if(a===void 0){rvt.warn(n.message,{filePath:t,issues:c}),Y.inc(n.metric,1);return}i&&r(a)},nvt);return s.unref(),{stop:()=>{i=!1,clearInterval(s)}}},nL=(t,e)=>TPe(t,r=>{let{questions:n,issues:i}=ivt(r);return n?{value:n}:{issues:i}},e,{message:"Ignoring malformed ask tool questions file",metric:"inference.malformed_ask"}),iL=(t,e)=>TPe(t,r=>{let n;try{n=JSON.parse(r)}catch{return{issues:"invalid_json"}}let i=AN.safeParse(n);return i.success?{value:i.data}:{issues:N_(i.error.issues)}},e,{message:"Ignoring malformed authorization request file",metric:"inference.malformed_authorization"});import svt from"os";import RPe from"path";import f8 from"fs";var wPe=ne("opencode_install"),APe="1.18.35",ovt=()=>RPe.join(svt.homedir(),".netlify-agent-runner","opencode"),sL=async t=>{let e=Va(t,"opencode");if(e)return e;let r=ovt(),n=RPe.join(r,"node_modules",".bin","opencode");if(f8.existsSync(n))return n;f8.mkdirSync(r,{recursive:!0}),wPe.log(`Installing opencode-ai@${APe} on demand`);let i=Date.now();await yt("npm",["install","--no-save","--no-audit","--no-fund","--prefix",r,`opencode-ai@${APe}`],{cwd:r});let s=Date.now()-i;if(Y.timing("opencode.install_duration",s),wPe.log(`Installed opencode-ai in ${s}ms`),!f8.existsSync(n))throw new Error("OpenCode CLI binary not found after installing opencode-ai");return n};var Rd=ne("runner_opencode"),oL="OpenCode",IPe="gateway",cvt="z-ai/glm-5.3-flash",uvt=new Set(["z-ai/glm-5.3-flash","deepseek/deepseek-v4-pro","x-ai/grok-4.6"]),lvt=(t,e)=>!t||!TC.includes(t)?t:e&&uvt.has(e)?"xhigh":"max",p8={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}},xPe=t=>p8[t]?.name||t,dvt=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 fvt({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||cvt}n&&(await i(n)||Rd.log(`Model '${n}' not found in gateway catalog; proceeding anyway (gateway is authoritative, e.g. flag-gated OpenRouter models)`))}return n}function pvt({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:{[IPe]:{api:"openai",name:"Netlify AI Gateway",options:{apiKey:a,baseURL:c},...Object.keys(u).length>0?{models:u}:{}}},...n||i?{mcp:{...n?oAe(n,s):{},...i?aAe(i):{}}}:{}};return{...aL.env,OPENCODE_CONFIG_CONTENT:JSON.stringify(l),OPENCODE_DISABLE_AUTOUPDATE:"1"}}async function PPe(t){if(!t.systemInstructions)throw new Error("OpenCode requires system instructions");let e=xd.resolve(t.cwd??aL.cwd(),en);await SR.mkdir(e,{recursive:!0});let r=await SR.mkdtemp(xd.join(e,"opencode-instructions-"));try{let n=xd.join(r,"instructions.md");return await SR.writeFile(n,t.systemInstructions,{encoding:"utf8",mode:384}),await hvt({...t,systemPromptPath:n})}finally{await SR.rm(r,{recursive:!0,force:!0})}}async function hvt({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,v=0,x=0,y,E=await fvt({config:t,aiGateway:r,model:d}),A=lvt(f,E);Rd.log(f?`Requesting reasoning effort '${f}' for model '${E}'${A===f?"":` (sent as '${A}')`}; ignored if unsupported`:`No reasoning effort requested for model '${E}'; running at its own default`);let C=Oi({creditWrapUpTurn:c})?await tM():void 0,P=Uw({creditWrapUpTurn:c})?await rM():void 0,I=$s({creditWrapUpTurn:c})?await Us():void 0,k=await Nl(t),T=Ka(t,{requestFilePath:P?.filePath,creditWrapUpTurn:c,proxied:k.proxied}),B=pvt({aiGateway:r,model:E,effort:A,questionsFilePath:C?.filePath,connections:T,setup:I?Ls(t,I.filePath):void 0,systemPromptPath:u}),L=[],b=[],O=0,$=Date.now(),J=await sL(s),Q=["run","--format","json","--dangerously-skip-permissions","--agent","build",...E?["--model",`${IPe}/${E}`]:[],...n?i?["--session",i]:["--continue"]:[]];Rd.log(`Running ${J} ${Q.join(" ")}`);let te=yt(J,Q,{all:!0,env:B,cwd:s,idleTimeout:Wi,cancelSignal:o});te.stdin?.end(l);let Re=C?nL(C.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=I?Fs(I.filePath,re=>{y||(y={setupRequest:re},te.kill())}):void 0,we=$a(()=>{e?.({steps:b,duration:Date.now()-$})},250),be=(re,X)=>{let{wrapMessage:ue,...De}=re,ot=UN({...De,id:O});ot.message&&ue&&(ot.message=`\`\`\`
|
|
593
593
|
${ot.message}
|
|
594
594
|
\`\`\``),O+=1,L.push(ot),b.push(ot),X||we.flush(),we(),X&&we.flush()},me=E||"default";Ar(t)||be({title:`Using ${oL} with ${me}`,category:W.Environment},!0);let de=avt.createInterface({input:te.all});de.on("error",re=>{Rd.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{Rd.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(Ya(ue,Jye)){ot==="error"&&Rd.warn("Pause tool call rejected before it could pause the run",{tool:ue,error:$e});break}if(ot==="error"&&(v+=1),(ot==="completed"||ot==="error")&&(x+=1),ue==="skill"){let Rn=typeof De.name=="string"?De.name:void 0;if(Rn){let uo=La(Rn);Jc(Rd,uo),be({title:`Use ${uo}`,category:W.Skill,type:Rn},!0);break}}if(ue==="todowrite"){let Rn=dvt(De.todos);be({title:xPe(ue),category:Rn.length>0?p8.todowrite.category:W.Tool,...Rn.length>0?{tasks:Rn}:{}},!0);break}let Ke=typeof De.command=="string"?De.command:void 0,Pe=Ke?Ji(Ke):!1,Te=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(Pe)Xt="Generating the site",vt=W.SiteGeneration;else if(Ke&&ue==="bash")Xt=`Running \`${Ke}\``,vt=W.RunCommand;else{let Rn=Te&&`\`${xd.relative(s,Te)}\``;Xt=[xPe(ue),Rn].filter(Boolean).join(" "),vt=p8[ue]?.category||W.AgentMessage}let co,li=["bash","read","glob","grep","list","webfetch","websearch"].includes(ue);$e?co=`\`\`\`
|
|
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": "2.3.
|
|
4
|
+
"version": "2.3.1",
|
|
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.
|
|
90
|
-
"@google/gemini-cli": "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",
|