@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/bin-local.js
CHANGED
|
@@ -385,7 +385,7 @@ For example, you can use the \`pathToFileURL()\` method of the \`url\` core modu
|
|
|
385
385
|
`,LF:`
|
|
386
386
|
`,concatBytes:TY},Zct=(t,e)=>{let r=new Uint8Array(t.length+e.length);return r.set(t,0),r.set(e,t.length),r},Qct={windowsNewline:new Uint8Array([13,10]),unixNewline:new Uint8Array([10]),LF:10,concatBytes:Zct};import{Buffer as Jct}from"buffer";var ywe=(t,e)=>t?void 0:Xct.bind(void 0,e),Xct=function*(t,e){if(typeof e!="string"&&!jr(e)&&!Jct.isBuffer(e))throw new TypeError(`The \`${t}\` option's transform must use "objectMode: true" to receive as input: ${typeof e}.`);yield e},Swe=(t,e)=>t?eut.bind(void 0,e):tut.bind(void 0,e),eut=function*(t,e){vwe(t,e),yield e},tut=function*(t,e){if(vwe(t,e),typeof e!="string"&&!jr(e))throw new TypeError(`The \`${t}\` option's function must yield a string or an Uint8Array, not ${typeof e}.`);yield e},vwe=(t,e)=>{if(e==null)throw new TypeError(`The \`${t}\` option's function must not call \`yield ${e}\`.
|
|
387
387
|
Instead, \`yield\` should either be called with a value, or not be called at all. For example:
|
|
388
|
-
if (condition) { yield value; }`)};import{Buffer as rut}from"buffer";import{StringDecoder as nut}from"string_decoder";var jD=(t,e,r)=>{if(r)return;if(t)return{transform:iut.bind(void 0,new TextEncoder)};let n=new nut(e);return{transform:sut.bind(void 0,n),final:out.bind(void 0,n)}},iut=function*(t,e){rut.isBuffer(e)?yield iu(e):typeof e=="string"?yield t.encode(e):yield e},sut=function*(t,e){yield jr(e)?t.write(e):e},out=function*(t){let e=t.end();e!==""&&(yield e)};import{callbackify as Ewe}from"util";var RY=Ewe(async(t,e,r,n)=>{e.currentIterable=t(...r);try{for await(let i of e.currentIterable)n.push(i)}finally{delete e.currentIterable}}),qD=async function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=cut}=e[r];for await(let i of n(t))yield*qD(i,e,r+1)},bwe=async function*(t){for(let[e,{final:r}]of Object.entries(t))yield*aut(r,Number(e),t)},aut=async function*(t,e,r){if(t!==void 0)for await(let n of t())yield*qD(n,r,e+1)},wwe=Ewe(async({currentIterable:t},e)=>{if(t!==void 0){await(e?t.throw(e):t.return());return}if(e)throw e}),cut=function*(t){yield t};var xY=(t,e,r,n)=>{try{for(let i of t(...e))r.push(i);n()}catch(i){n(i)}},Twe=(t,e)=>[...e.flatMap(r=>[...Ep(r,t,0)]),...$T(t)],Ep=function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=lut}=e[r];for(let i of n(t))yield*Ep(i,e,r+1)},$T=function*(t){for(let[e,{final:r}]of Object.entries(t))yield*uut(r,Number(e),t)},uut=function*(t,e,r){if(t!==void 0)for(let n of t())yield*Ep(n,r,e+1)},lut=function*(t){yield t};var OY=({value:t,value:{transform:e,final:r,writableObjectMode:n,readableObjectMode:i},optionName:s},{encoding:o})=>{let a={},c=Rwe(t,o,s),u=vp(e),l=vp(r),d=u?RY.bind(void 0,qD,a):xY.bind(void 0,Ep),f=u||l?RY.bind(void 0,bwe,a):xY.bind(void 0,$T),p=u||l?wwe.bind(void 0,a):void 0;return{stream:new dut({writableObjectMode:n,writableHighWaterMark:Awe(n),readableObjectMode:i,readableHighWaterMark:Awe(i),transform(m,_,S){d([m,c,0],this,S)},flush(m){f([c],this,m)},destroy:p})}},BD=(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=Rwe(o,r,a);t=Twe(c,t)}return t},Rwe=({transform:t,final:e,binary:r,writableObjectMode:n,readableObjectMode:i,preserveNewlines:s},o,a)=>{let c={};return[{transform:ywe(n,a)},jD(r,o,n),zD(r,s,n,c),{transform:t,final:e},{transform:Swe(i,a)},_we({binary:r,preserveNewlines:s,readableObjectMode:i,state:c})].filter(Boolean)};var xwe=(t,e)=>{for(let r of fut(t))put(t,r,e)},fut=t=>new Set(Object.entries(t).filter(([,{direction:e}])=>e==="input").map(([e])=>Number(e))),put=(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 ${jl[a]} with synchronous methods.`)}let o=i.map(({contents:a})=>a).map(a=>hut(a,n));r.input=RT(o)},hut=(t,e)=>{let r=BD(t,e,"utf8",!0);return mut(r),RT(r)},mut=t=>{let e=t.find(r=>typeof r!="string"&&!jr(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 Sut,appendFileSync as vut}from"fs";var VD=({stdioItems:t,encoding:e,verboseInfo:r,fdNumber:n})=>n!=="all"&&T_(r,n)&&!es.has(e)&&gut(n)&&(t.some(({type:i,value:s})=>i==="native"&&_ut.has(s))||t.every(({type:i})=>$s.has(i))),gut=t=>t===1||t===2,_ut=new Set(["pipe","overlapped"]),Owe=async(t,e,r,n)=>{for await(let i of t)yut(e)||Pwe(i,r,n)},Iwe=(t,e,r)=>{for(let n of t)Pwe(n,e,r)},yut=t=>t._readableState.pipes.length>0,Pwe=(t,e,r)=>{let n=iD(t);Ba({type:"output",verboseMessage:n,fdNumber:e,verboseInfo:r})};var Cwe=({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)=>Eut({result:c,fileDescriptors:t,fdNumber:u,state:s,outputFiles:o,isMaxBuffer:n,verboseInfo:i},r)),...s}},Eut=({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=kbe(t,s,d),p=iu(f),{stdioItems:h,objectMode:m}=e[r],_=but([p],h,c,n),{serializedResult:S,finalResult:E=S}=wut({chunks:_,objectMode:m,encoding:c,lines:u,stripFinalNewline:l,fdNumber:r});Tut({serializedResult:S,fdNumber:r,state:n,verboseInfo:o,encoding:c,stdioItems:h,objectMode:m});let R=a[r]?E:void 0;try{return n.error===void 0&&Aut(S,h,i),R}catch(y){return n.error=y,R}},but=(t,e,r,n)=>{try{return BD(t,e,r,!1)}catch(i){return n.error=i,t}},wut=({chunks:t,objectMode:e,encoding:r,lines:n,stripFinalNewline:i,fdNumber:s})=>{if(e)return{serializedResult:t};if(r==="buffer")return{serializedResult:RT(t)};let o=HSe(t,r);return n[s]?{serializedResult:o,finalResult:AY(o,!i[s],e)}:{serializedResult:o}},Tut=({serializedResult:t,fdNumber:e,state:r,verboseInfo:n,encoding:i,stdioItems:s,objectMode:o})=>{if(!VD({stdioItems:s,encoding:i,verboseInfo:n,fdNumber:e}))return;let a=AY(t,!1,o);try{Iwe(a,e,n)}catch(c){r.error??=c}},Aut=(t,e,r)=>{for(let{path:n,append:i}of e.filter(({type:s})=>UD.has(s))){let s=typeof n=="string"?n:n.toString();i||r.has(s)?vut(n,t):(r.add(s),Sut(n,t))}};var kwe=([,t,e],r)=>{if(r.all)return t===void 0?e:e===void 0?t:Array.isArray(t)?Array.isArray(e)?[...t,...e]:[...t,au(e,r,"all")]:Array.isArray(e)?[au(t,r,"all"),...e]:jr(t)&&jr(e)?DK([t,e]):`${t}${e}`};import{once as IY}from"events";var Nwe=async(t,e)=>{let[r,n]=await Rut(t);return e.isForcefullyTerminated??=!1,[r,n]},Rut=async t=>{let[e,r]=await Promise.allSettled([IY(t,"spawn"),IY(t,"exit")]);return e.status==="rejected"?[]:r.status==="rejected"?Dwe(t):r.value},Dwe=async t=>{try{return await IY(t,"exit")}catch{return Dwe(t)}},Mwe=async t=>{let[e,r]=await t;if(!xut(e,r)&&PY(e,r))throw new Ho;return[e,r]},xut=(t,e)=>t===void 0&&e===void 0,PY=(t,e)=>t!==0||e!==null;var $we=({error:t,status:e,signal:r,output:n},{maxBuffer:i})=>{let s=Out(t,e,r),o=s?.code==="ETIMEDOUT",a=Cbe(s,n,i);return{resultError:s,exitCode:e,signal:r,timedOut:o,isMaxBuffer:a}},Out=(t,e,r)=>t!==void 0?t:PY(e,r)?new Ho:void 0;var Lwe=(t,e,r)=>{let{file:n,commandArguments:i,command:s,escapedCommand:o,startTime:a,verboseInfo:c,options:u,fileDescriptors:l}=Put(t,e,r),d=Nut({file:n,commandArguments:i,options:u,command:s,escapedCommand:o,verboseInfo:c,fileDescriptors:l,startTime:a});return D_(d,c,u)},Put=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=oD(t,e,r),a=Cut(r),{file:c,commandArguments:u,options:l}=RD(t,e,a);kut(l);let d=pwe(l,o);return{file:c,commandArguments:u,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},Cut=t=>t.node&&!t.ipc?{...t,ipc:!1}:t,kut=({ipc:t,ipcInput:e,detached:r,cancelSignal:n})=>{e&&GD("ipcInput"),t&&GD("ipc: true"),r&&GD("detached: true"),n&&GD("cancelSignal")},GD=t=>{throw new TypeError(`The "${t}" option cannot be used with synchronous methods.`)},Nut=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,verboseInfo:s,fileDescriptors:o,startTime:a})=>{let c=Dut({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}=$we(c,r),{output:h,error:m=u}=Cwe({fileDescriptors:o,syncResult:c,options:r,isMaxBuffer:p,verboseInfo:s}),_=h.map((E,R)=>au(E,r,R)),S=au(kwe(h,r),r,"all");return $ut({error:m,exitCode:l,signal:d,timedOut:f,isMaxBuffer:p,stdio:_,all:S,options:r,command:n,escapedCommand:i,startTime:a})},Dut=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:s,startTime:o})=>{try{xwe(s,r);let a=Mut(r);return Iut(...xD(t,e,a))}catch(a){return N_({error:a,command:n,escapedCommand:i,fileDescriptors:s,options:r,startTime:o,isSync:!0})}},Mut=({encoding:t,maxBuffer:e,...r})=>({...r,encoding:"buffer",maxBuffer:DD(e)}),$ut=({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?MD({command:c,escapedCommand:u,stdio:s,all:o,ipcOutput:[],options:a,startTime:l}):MT({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 wdt}from"events";import{spawn as Tdt}from"child_process";import qwe from"process";import{once as CY,on as Lut}from"events";var Uwe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0,filter:s}={})=>(x_({methodName:"getOneMessage",isSubprocess:r,ipc:n,isConnected:vD(t)}),Uut({anyProcess:t,channel:e,isSubprocess:r,filter:s,reference:i})),Uut=async({anyProcess:t,channel:e,isSubprocess:r,filter:n,reference:i})=>{gD(e,i);let s=zl(t,e,r),o=new AbortController;try{return await Promise.race([Fut(s,n,o),zut(s,r,o),jut(s,r,o)])}catch(a){throw O_(t),a}finally{o.abort(),_D(e,i)}},Fut=async(t,e,{signal:r})=>{if(e===void 0){let[n]=await CY(t,"message",{signal:r});return n}for await(let[n]of Lut(t,"message",{signal:r}))if(e(n))return n},zut=async(t,e,{signal:r})=>{await CY(t,"disconnect",{signal:r}),TEe(e)},jut=async(t,e,{signal:r})=>{let[n]=await CY(t,"strict:error",{signal:r});throw pD(n,e)};import{once as zwe,on as qut}from"events";var jwe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0}={})=>kY({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:!r,reference:i}),kY=({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:i,reference:s})=>{x_({methodName:"getEachMessage",isSubprocess:r,ipc:n,isConnected:vD(t)}),gD(e,s);let o=zl(t,e,r),a=new AbortController,c={};return But(t,o,a),Vut({ipcEmitter:o,isSubprocess:r,controller:a,state:c}),Gut({anyProcess:t,channel:e,ipcEmitter:o,isSubprocess:r,shouldAwait:i,controller:a,state:c,reference:s})},But=async(t,e,r)=>{try{await zwe(e,"disconnect",{signal:r.signal}),r.abort()}catch{}},Vut=async({ipcEmitter:t,isSubprocess:e,controller:r,state:n})=>{try{let[i]=await zwe(t,"strict:error",{signal:r.signal});n.error=pD(i,e),r.abort()}catch{}},Gut=async function*({anyProcess:t,channel:e,ipcEmitter:r,isSubprocess:n,shouldAwait:i,controller:s,state:o,reference:a}){try{for await(let[c]of qut(r,"message",{signal:s.signal}))Fwe(o),yield c}catch{Fwe(o)}finally{s.abort(),_D(e,a),n||O_(t),i&&await t}},Fwe=({error:t})=>{if(t)throw t};var Bwe=(t,{ipc:e})=>{Object.assign(t,Gwe(t,!1,e))},Vwe=()=>{let t=qwe,e=!0,r=qwe.channel!==void 0;return{...Gwe(t,e,r),getCancelSignal:QEe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})}},Gwe=(t,e,r)=>({sendMessage:TD.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getOneMessage:Uwe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getEachMessage:jwe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})});import{ChildProcess as Hut}from"child_process";import{PassThrough as Wut,Readable as Kut,Writable as Yut,Duplex as Zut}from"stream";var Hwe=({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,verboseInfo:o})=>{bY(n);let a=new Hut;Qut(a,n),Object.assign(a,{readable:Jut,writable:Xut,duplex:elt});let c=N_({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,isSync:!1}),u=tlt(c,o,i);return{subprocess:a,promise:u}},Qut=(t,e)=>{let r=LT(),n=LT(),i=LT(),s=Array.from({length:e.length-3},LT),o=LT(),a=[r,n,i,...s];Object.assign(t,{stdin:r,stdout:n,stderr:i,all:o,stdio:a})},LT=()=>{let t=new Wut;return t.end(),t},Jut=()=>new Kut({read(){}}),Xut=()=>new Yut({write(){}}),elt=()=>new Zut({read(){},write(){}}),tlt=async(t,e,r)=>D_(t,e,r);import{createReadStream as Wwe,createWriteStream as Kwe}from"fs";import{Buffer as rlt}from"buffer";import{Readable as UT,Writable as nlt,Duplex as ilt}from"stream";var Zwe=(t,e)=>FD(slt,t,e,!1),FT=({type:t,optionName:e})=>{throw new TypeError(`The \`${e}\` option cannot be ${jl[t]}.`)},Ywe={fileNumber:FT,generator:OY,asyncGenerator:OY,nodeStream:({value:t})=>({stream:t}),webTransform({value:{transform:t,writableObjectMode:e,readableObjectMode:r}}){let n=e||r;return{stream:ilt.fromWeb(t,{objectMode:n})}},duplex:({value:{transform:t}})=>({stream:t}),native(){}},slt={input:{...Ywe,fileUrl:({value:t})=>({stream:Wwe(t)}),filePath:({value:{file:t}})=>({stream:Wwe(t)}),webStream:({value:t})=>({stream:UT.fromWeb(t)}),iterable:({value:t})=>({stream:UT.from(t)}),asyncIterable:({value:t})=>({stream:UT.from(t)}),string:({value:t})=>({stream:UT.from(t)}),uint8Array:({value:t})=>({stream:UT.from(rlt.from(t))})},output:{...Ywe,fileUrl:({value:t})=>({stream:Kwe(t)}),filePath:({value:{file:t,append:e}})=>({stream:Kwe(t,e?{flags:"a"}:{})}),webStream:({value:t})=>({stream:nlt.fromWeb(t)}),iterable:FT,asyncIterable:FT,string:FT,uint8Array:FT}};import{on as olt,once as Qwe}from"events";import{PassThrough as alt,getDefaultHighWaterMark as clt}from"stream";import{finished as eTe}from"stream/promises";function bp(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let i of t)DY(i);let e=t.some(({readableObjectMode:i})=>i),r=ult(t,e),n=new NY({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return n}var ult=(t,e)=>{if(t.length===0)return clt(e);let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},NY=class extends alt{#e=new Set([]);#r=new Set([]);#t=new Set([]);#n;#s=Symbol("unpipe");#i=new WeakMap;add(e){if(DY(e),this.#e.has(e))return;this.#e.add(e),this.#n??=llt(this,this.#e,this.#s);let r=plt({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(DY(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)}},llt=async(t,e,r)=>{HD(t,Jwe);let n=new AbortController;try{await Promise.race([dlt(t,n),flt(t,e,r,n)])}finally{n.abort(),HD(t,-Jwe)}},dlt=async(t,{signal:e})=>{try{await eTe(t,{signal:e,cleanup:!0})}catch(r){throw tTe(t,r),r}},flt=async(t,e,r,{signal:n})=>{for await(let[i]of olt(t,"unpipe",{signal:n}))e.has(i)&&i.emit(r)},DY=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},plt=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:s,unpipeEvent:o})=>{HD(t,Xwe);let a=new AbortController;try{await Promise.race([hlt(s,e,a),mlt({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:a}),glt({stream:e,streams:r,ended:n,aborted:i,unpipeEvent:o,controller:a})])}finally{a.abort(),HD(t,-Xwe)}r.size>0&&r.size===n.size+i.size&&(n.size===0&&i.size>0?MY(t):_lt(t))},hlt=async(t,e,{signal:r})=>{try{await t,r.aborted||MY(e)}catch(n){r.aborted||tTe(e,n)}},mlt=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:s}})=>{try{await eTe(e,{signal:s,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(o){if(s.aborted||!r.has(e))return;rTe(o)?i.add(e):nTe(t,o)}},glt=async({stream:t,streams:e,ended:r,aborted:n,unpipeEvent:i,controller:{signal:s}})=>{if(await Qwe(t,i,{signal:s}),!t.readable)return Qwe(s,"abort",{signal:s});e.delete(t),r.delete(t),n.delete(t)},_lt=t=>{t.writable&&t.end()},tTe=(t,e)=>{rTe(e)?MY(t):nTe(t,e)},rTe=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",MY=t=>{(t.readable||t.writable)&&t.destroy()},nTe=(t,e)=>{t.destroyed||(t.once("error",ylt),t.destroy(e))},ylt=()=>{},HD=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},Jwe=2,Xwe=1;import{finished as iTe}from"stream/promises";var $_=(t,e)=>{t.pipe(e),Slt(t,e),vlt(t,e)},Slt=async(t,e)=>{if(!(Go(t)||Go(e))){try{await iTe(t,{cleanup:!0,readable:!0,writable:!1})}catch{}$Y(e)}},$Y=t=>{t.writable&&t.end()},vlt=async(t,e)=>{if(!(Go(t)||Go(e))){try{await iTe(e,{cleanup:!0,readable:!1,writable:!0})}catch{}LY(t)}},LY=t=>{t.readable&&t.destroy()};var sTe=(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})=>$s.has(c)))Elt(t,a,o,i);for(let{stream:a}of s.filter(({type:c})=>!$s.has(c)))wlt({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]:bp(s);$_(o,i)}},Elt=(t,e,r,n)=>{r==="output"?$_(t.stdio[n],e):$_(e,t.stdio[n]);let i=blt[n];i!==void 0&&(t[i]=e),t.stdio[n]=e},blt=["stdin","stdout","stderr"],wlt=({subprocess:t,stream:e,direction:r,fdNumber:n,pipeGroups:i,controller:s})=>{if(e===void 0)return;Tlt(e,s);let[o,a]=r==="output"?[e,t.stdio[n]]:[t.stdio[n],e],c=i.get(o)??[];i.set(o,[...c,a])},Tlt=(t,{signal:e})=>{Go(t)&&yp(t,Alt,e)},Alt=2;import{addAbortListener as Olt}from"events";var wp=[];wp.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&wp.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&wp.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var WD=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",UY=Symbol.for("signal-exit emitter"),FY=globalThis,Rlt=Object.defineProperty.bind(Object),zY=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(FY[UY])return FY[UY];Rlt(FY,UY,{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}},KD=class{},xlt=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),jY=class extends KD{onExit(){return()=>{}}load(){}unload(){}},qY=class extends KD{#e=BY.platform==="win32"?"SIGINT":"SIGHUP";#r=new zY;#t;#n;#s;#i={};#o=!1;constructor(e){super(),this.#t=e,this.#i={};for(let r of wp)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(!WD(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 wp)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,wp.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 WD(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"&&WD(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)}},BY=globalThis.process,{onExit:oTe,load:csr,unload:usr}=xlt(WD(BY)?new qY(BY):new jY);var aTe=(t,{cleanup:e,detached:r},{signal:n})=>{if(!e||r)return;let i=oTe(()=>{t.kill()});Olt(n,()=>{i()})};var uTe=({source:t,sourcePromise:e,boundOptions:r,createNested:n},...i)=>{let s=sD(),{destination:o,destinationStream:a,destinationError:c,from:u,unpipeSignal:l}=Ilt(r,n,i),{sourceStream:d,sourceError:f}=Clt(t,u),{options:p,fileDescriptors:h}=Ga.get(t);return{sourcePromise:e,sourceStream:d,sourceOptions:p,sourceError:f,destination:o,destinationStream:a,destinationError:c,unpipeSignal:l,fileDescriptors:h,startTime:s}},Ilt=(t,e,r)=>{try{let{destination:n,pipeOptions:{from:i,to:s,unpipeSignal:o}={}}=Plt(t,e,...r),a=mD(n,s);return{destination:n,destinationStream:a,from:i,unpipeSignal:o}}catch(n){return{destinationError:n}}},Plt=(t,e,r,...n)=>{if(Array.isArray(r))return{destination:e(cTe,t)(r,...n),pipeOptions:t};if(typeof r=="string"||r instanceof URL||kK(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]=YN(r,...n);return{destination:e(cTe)(i,s,o),pipeOptions:o}}if(Ga.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}`)},cTe=({options:t})=>({options:{...t,stdin:"pipe",piped:!0}}),Clt=(t,e)=>{try{return{sourceStream:I_(t,e)}}catch(r){return{sourceError:r}}};var dTe=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n,fileDescriptors:i,sourceOptions:s,startTime:o})=>{let a=klt({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n});if(a!==void 0)throw VY({error:a,fileDescriptors:i,sourceOptions:s,startTime:o})},klt=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n})=>{if(e!==void 0&&n!==void 0)return n;if(n!==void 0)return LY(t),n;if(e!==void 0)return $Y(r),e},VY=({error:t,fileDescriptors:e,sourceOptions:r,startTime:n})=>N_({error:t,command:lTe,escapedCommand:lTe,fileDescriptors:e,options:r,startTime:n,isSync:!1}),lTe="source.pipe(destination)";var fTe=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 Nlt}from"stream/promises";var pTe=(t,e,r)=>{let n=YD.has(e)?Mlt(t,e):Dlt(t,e);return yp(t,Llt,r.signal),yp(e,Ult,r.signal),$lt(e),n},Dlt=(t,e)=>{let r=bp([t]);return $_(r,e),YD.set(e,r),r},Mlt=(t,e)=>{let r=YD.get(e);return r.add(t),r},$lt=async t=>{try{await Nlt(t,{cleanup:!0,readable:!1,writable:!0})}catch{}YD.delete(t)},YD=new WeakMap,Llt=2,Ult=1;import{aborted as Flt}from"util";var hTe=(t,e)=>t===void 0?[]:[zlt(t,e)],zlt=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 VY({error:o,fileDescriptors:n,sourceOptions:i,startTime:s})};var ZD=(t,...e)=>{if(Sr(e[0]))return ZD.bind(void 0,{...t,boundOptions:{...t.boundOptions,...e[0]}});let{destination:r,...n}=uTe(t,...e),i=jlt({...n,destination:r});return i.pipe=ZD.bind(void 0,{...t,source:r,sourcePromise:i,boundOptions:{}}),i},jlt=async({sourcePromise:t,sourceStream:e,sourceOptions:r,sourceError:n,destination:i,destinationStream:s,destinationError:o,unpipeSignal:a,fileDescriptors:c,startTime:u})=>{let l=qlt(t,i);dTe({sourceStream:e,sourceError:n,destinationStream:s,destinationError:o,fileDescriptors:c,sourceOptions:r,startTime:u});let d=new AbortController;try{let f=pTe(e,s,d);return await Promise.race([fTe(l),...hTe(a,{sourceStream:e,mergedStream:f,sourceOptions:r,fileDescriptors:c,startTime:u})])}finally{d.abort()}},qlt=(t,e)=>Promise.allSettled([t,e]);import{setImmediate as Ylt}from"timers/promises";import{on as Blt}from"events";import{getDefaultHighWaterMark as Vlt}from"stream";var QD=({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:n,encoding:i,preserveNewlines:s})=>{let o=new AbortController;return Glt(e,o),gTe({stream:t,controller:o,binary:r,shouldEncode:!t.readableObjectMode&&n,encoding:i,shouldSplit:!t.readableObjectMode,preserveNewlines:s})},Glt=async(t,e)=>{try{await t}catch{}finally{e.abort()}},GY=({stream:t,onStreamEnd:e,lines:r,encoding:n,stripFinalNewline:i,allMixed:s})=>{let o=new AbortController;Hlt(e,o,t);let a=t.readableObjectMode&&!s;return gTe({stream:t,controller:o,binary:n==="buffer",shouldEncode:!a,encoding:n,shouldSplit:!a&&r,preserveNewlines:!i})},Hlt=async(t,e,r)=>{try{await t}catch{r.destroy()}finally{e.abort()}},gTe=({stream:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})=>{let a=Blt(t,"data",{signal:e.signal,highWaterMark:mTe,highWatermark:mTe});return Wlt({onStdoutChunk:a,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})},HY=Vlt(!0),mTe=HY,Wlt=async function*({onStdoutChunk:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o}){let a=Klt({binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o});try{for await(let[c]of t)yield*Ep(c,a,0)}catch(c){if(!e.signal.aborted)throw c}finally{yield*$T(a)}},Klt=({binary:t,shouldEncode:e,encoding:r,shouldSplit:n,preserveNewlines:i})=>[jD(t,r,!e),zD(t,i,!n,{})].filter(Boolean);var _Te=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=Zlt({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:a,verboseInfo:u,streamInfo:l});if(!i){await Promise.all([Qlt(t),d]);return}let f=wY(c,r),p=GY({stream:t,onStreamEnd:e,lines:o,encoding:n,stripFinalNewline:f,allMixed:a}),[h]=await Promise.all([Jlt({stream:t,iterable:p,fdNumber:r,encoding:n,maxBuffer:s,lines:o}),d]);return h},Zlt=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:i,verboseInfo:s,streamInfo:{fileDescriptors:o}})=>{if(!VD({stdioItems:o[r]?.stdioItems,encoding:n,verboseInfo:s,fdNumber:r}))return;let a=GY({stream:t,onStreamEnd:e,lines:!0,encoding:n,stripFinalNewline:!0,allMixed:i});await Owe(a,t,r,s)},Qlt=async t=>{await Ylt(),t.readableFlowing===null&&t.resume()},Jlt=async({stream:t,stream:{readableObjectMode:e},iterable:r,fdNumber:n,encoding:i,maxBuffer:s,lines:o})=>{try{return e||o?await CD(r,{maxBuffer:s}):i==="buffer"?new Uint8Array(await kD(r,{maxBuffer:s})):await k_(r,{maxBuffer:s})}catch(a){return yTe(Obe({error:a,stream:t,readableObjectMode:e,lines:o,encoding:i,fdNumber:n}))}},WY=async t=>{try{return await t}catch(e){return yTe(e)}},yTe=({bufferedData:t})=>VSe(t)?new Uint8Array(t):t;import{finished as Xlt}from"stream/promises";var zT=async(t,e,r,{isSameDirection:n,stopOnExit:i=!1}={})=>{let s=edt(t,r),o=new AbortController;try{await Promise.race([...i?[r.exitPromise]:[],Xlt(t,{cleanup:!0,signal:o.signal})])}catch(a){s.stdinCleanedUp||ndt(a,e,r,n)}finally{o.abort()}},edt=(t,{originalStreams:[e],subprocess:r})=>{let n={stdinCleanedUp:!1};return t===e&&tdt(t,r,n),n},tdt=(t,e,r)=>{let{_destroy:n}=t;t._destroy=(...i)=>{rdt(e,r),n.call(t,...i)}},rdt=({exitCode:t,signalCode:e},r)=>{(t!==null||e!==null)&&(r.stdinCleanedUp=!0)},ndt=(t,e,r,n)=>{if(!idt(t,e,r,n))throw t},idt=(t,e,r,n=!0)=>r.propagating?STe(t)||JD(t):(r.propagating=!0,KY(r,e)===n?STe(t):JD(t)),KY=({fileDescriptors:t},e)=>e!=="all"&&t[e].direction==="input",JD=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",STe=t=>t?.code==="EPIPE";var vTe=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>t.stdio.map((c,u)=>YY({stream:c,fdNumber:u,encoding:e,buffer:r[u],maxBuffer:n[u],lines:i[u],allMixed:!1,stripFinalNewline:s,verboseInfo:o,streamInfo:a})),YY=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=zT(t,e,u);if(KY(u,e)){await l;return}let[d]=await Promise.all([_Te({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 ETe=({stdout:t,stderr:e},{all:r})=>r&&(t||e)?bp([t,e].filter(Boolean)):void 0,bTe=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>YY({...sdt(t,r),fdNumber:"all",encoding:e,maxBuffer:n[1]+n[2],lines:i[1]||i[2],allMixed:odt(t),stripFinalNewline:s,verboseInfo:o,streamInfo:a}),sdt=({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}},odt=({all:t,stdout:e,stderr:r})=>t&&e&&r&&e.readableObjectMode!==r.readableObjectMode;import{once as adt}from"events";var wTe=t=>T_(t,"ipc"),TTe=(t,e)=>{let r=iD(t);Ba({type:"ipc",verboseMessage:r,fdNumber:"ipc",verboseInfo:e})};var ATe=async({subprocess:t,buffer:e,maxBuffer:r,ipc:n,ipcOutput:i,verboseInfo:s})=>{if(!n)return i;let o=wTe(s),a=su(e,"ipc"),c=su(r,"ipc");for await(let u of kY({anyProcess:t,channel:t.channel,isSubprocess:!1,ipc:n,shouldAwait:!1,reference:!0}))a&&(Ibe(t,i,c),i.push(u)),o&&TTe(u,s);return i},RTe=async(t,e)=>(await Promise.allSettled([t]),e);var xTe=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 E=Nwe(t,f),R={originalStreams:m,fileDescriptors:h,subprocess:t,exitPromise:E,propagating:!1},y=vTe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:R}),v=bTe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:R}),T=[],O=ATe({subprocess:t,buffer:r,maxBuffer:n,ipc:l,ipcOutput:T,verboseInfo:p}),C=cdt(m,t,R),I=udt(h,R);try{return await Promise.race([Promise.all([{},Mwe(E),Promise.all(y),v,O,abe(t,d),...C,...I]),_,ldt(t,S),...rbe(t,s,f,S),...wEe({subprocess:t,cancelSignal:o,gracefulCancel:a,context:f,controller:S}),...ebe({subprocess:t,cancelSignal:o,gracefulCancel:a,forceKillAfterDelay:c,context:f,controller:S})])}catch(k){return f.terminationReason??="other",Promise.all([{error:k},E,Promise.all(y.map(w=>WY(w))),WY(v),RTe(O,T),Promise.allSettled(C),Promise.allSettled(I)])}},cdt=(t,e,r)=>t.map((n,i)=>n===e.stdio[i]?void 0:zT(n,i,r)),udt=(t,e)=>t.flatMap(({stdioItems:r},n)=>r.filter(({value:i,stream:s=i})=>Ko(s,{checkOpen:!1})&&!Go(s)).map(({type:i,value:s,stream:o=s})=>zT(o,n,e,{isSameDirection:$s.has(i),stopOnExit:i==="native"}))),ldt=async(t,{signal:e})=>{let[r]=await adt(t,"error",{signal:e});throw r};var OTe=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),jT=(t,e,r)=>{let n=t[r];n.has(e)||n.set(e,[]);let i=n.get(e),s=Va();return i.push(s),{resolve:s.resolve.bind(s),promises:i}},L_=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 ddt}from"stream";import{callbackify as fdt}from"util";import{finished as ITe}from"stream/promises";var ZY=async t=>{if(t!==void 0)try{await QY(t)}catch{}},PTe=async t=>{if(t!==void 0)try{await JY(t)}catch{}},QY=async t=>{await ITe(t,{cleanup:!0,readable:!1,writable:!0})},JY=async t=>{await ITe(t,{cleanup:!0,readable:!0,writable:!1})},XD=async(t,e)=>{if(await t,e)throw e},eM=(t,e,r)=>{r&&!JD(r)?t.destroy(r):e&&t.destroy()};var CTe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,binary:i=!0,preserveNewlines:s=!0}={})=>{let o=i||es.has(r),{subprocessStdout:a,waitReadableDestroy:c}=XY(t,n,e),{readableEncoding:u,readableObjectMode:l,readableHighWaterMark:d}=e9(a,o),{read:f,onStdoutDataDone:p}=t9({subprocessStdout:a,subprocess:t,binary:o,encoding:r,preserveNewlines:s}),h=new ddt({read:f,destroy:fdt(n9.bind(void 0,{subprocessStdout:a,subprocess:t,waitReadableDestroy:c})),highWaterMark:d,objectMode:l,encoding:u});return r9({subprocessStdout:a,onStdoutDataDone:p,readable:h,subprocess:t}),h},XY=(t,e,r)=>{let n=I_(t,e),i=jT(r,n,"readableDestroy");return{subprocessStdout:n,waitReadableDestroy:i}},e9=({readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r},n)=>n?{readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r}:{readableEncoding:t,readableObjectMode:!0,readableHighWaterMark:HY},t9=({subprocessStdout:t,subprocess:e,binary:r,encoding:n,preserveNewlines:i})=>{let s=Va(),o=QD({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:!r,encoding:n,preserveNewlines:i});return{read(){pdt(this,o,s)},onStdoutDataDone:s}},pdt=async(t,e,r)=>{try{let{value:n,done:i}=await e.next();i?r.resolve():t.push(n)}catch{}},r9=async({subprocessStdout:t,onStdoutDataDone:e,readable:r,subprocess:n,subprocessStdin:i})=>{try{await JY(t),await n,await ZY(i),await e,r.readable&&r.push(null)}catch(s){await ZY(i),kTe(r,s)}},n9=async({subprocessStdout:t,subprocess:e,waitReadableDestroy:r},n)=>{await L_(r,e)&&(kTe(t,n),await XD(e,n))},kTe=(t,e)=>{eM(t,t.readable,e)};import{Writable as hdt}from"stream";import{callbackify as NTe}from"util";var DTe=({subprocess:t,concurrentStreams:e},{to:r}={})=>{let{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}=i9(t,r,e),o=new hdt({...s9(n,t,i),destroy:NTe(a9.bind(void 0,{subprocessStdin:n,subprocess:t,waitWritableFinal:i,waitWritableDestroy:s})),highWaterMark:n.writableHighWaterMark,objectMode:n.writableObjectMode});return o9(n,o),o},i9=(t,e,r)=>{let n=mD(t,e),i=jT(r,n,"writableFinal"),s=jT(r,n,"writableDestroy");return{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}},s9=(t,e,r)=>({write:mdt.bind(void 0,t),final:NTe(gdt.bind(void 0,t,e,r))}),mdt=(t,e,r,n)=>{t.write(e,r)?n():t.once("drain",n)},gdt=async(t,e,r)=>{await L_(r,e)&&(t.writable&&t.end(),await e)},o9=async(t,e,r)=>{try{await QY(t),e.writable&&e.end()}catch(n){await PTe(r),MTe(e,n)}},a9=async({subprocessStdin:t,subprocess:e,waitWritableFinal:r,waitWritableDestroy:n},i)=>{await L_(r,e),await L_(n,e)&&(MTe(t,i),await XD(e,i))},MTe=(t,e)=>{eM(t,t.writable,e)};import{Duplex as _dt}from"stream";import{callbackify as ydt}from"util";var $Te=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,to:i,binary:s=!0,preserveNewlines:o=!0}={})=>{let a=s||es.has(r),{subprocessStdout:c,waitReadableDestroy:u}=XY(t,n,e),{subprocessStdin:l,waitWritableFinal:d,waitWritableDestroy:f}=i9(t,i,e),{readableEncoding:p,readableObjectMode:h,readableHighWaterMark:m}=e9(c,a),{read:_,onStdoutDataDone:S}=t9({subprocessStdout:c,subprocess:t,binary:a,encoding:r,preserveNewlines:o}),E=new _dt({read:_,...s9(l,t,d),destroy:ydt(Sdt.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 r9({subprocessStdout:c,onStdoutDataDone:S,readable:E,subprocess:t,subprocessStdin:l}),o9(l,E,c),E},Sdt=async({subprocessStdout:t,subprocessStdin:e,subprocess:r,waitReadableDestroy:n,waitWritableFinal:i,waitWritableDestroy:s},o)=>{await Promise.all([n9({subprocessStdout:t,subprocess:r,waitReadableDestroy:n},o),a9({subprocessStdin:e,subprocess:r,waitWritableFinal:i,waitWritableDestroy:s},o)])};var c9=(t,e,{from:r,binary:n=!1,preserveNewlines:i=!1}={})=>{let s=n||es.has(e),o=I_(t,r),a=QD({subprocessStdout:o,subprocess:t,binary:s,shouldEncode:!0,encoding:e,preserveNewlines:i});return vdt(a,o,t)},vdt=async function*(t,e,r){try{yield*t}finally{e.readable&&e.destroy(),await r}};var LTe=(t,{encoding:e})=>{let r=OTe();t.readable=CTe.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.writable=DTe.bind(void 0,{subprocess:t,concurrentStreams:r}),t.duplex=$Te.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.iterable=c9.bind(void 0,t,e),t[Symbol.asyncIterator]=c9.bind(void 0,t,e,{})};var UTe=(t,e)=>{for(let[r,n]of bdt){let i=n.value.bind(e);Reflect.defineProperty(t,r,{...n,value:i})}},Edt=(async()=>{})().constructor.prototype,bdt=["then","catch","finally"].map(t=>[t,Reflect.getOwnPropertyDescriptor(Edt,t)]);var FTe=(t,e,r,n)=>{let{file:i,commandArguments:s,command:o,escapedCommand:a,startTime:c,verboseInfo:u,options:l,fileDescriptors:d}=Adt(t,e,r),{subprocess:f,promise:p}=xdt({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}),UTe(f,p),Ga.set(f,{options:l,fileDescriptors:d}),f},Adt=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=oD(t,e,r),{file:a,commandArguments:c,options:u}=RD(t,e,r),l=Rdt(u),d=Zwe(l,o);return{file:a,commandArguments:c,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},Rdt=({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}},xdt=({file:t,commandArguments:e,options:r,startTime:n,verboseInfo:i,command:s,escapedCommand:o,fileDescriptors:a})=>{let c;try{c=Tdt(...xD(t,e,r))}catch(h){return Hwe({error:h,command:s,escapedCommand:o,fileDescriptors:a,options:r,startTime:n,verboseInfo:i})}let u=new AbortController;wdt(Number.POSITIVE_INFINITY,u.signal);let l=[...c.stdio];sTe(c,a,u),aTe(c,r,u);let d={},f=Va();c.kill=EEe.bind(void 0,{kill:c.kill.bind(c),options:r,onInternalError:f,context:d,controller:u}),c.all=ETe(c,r),LTe(c,r),Bwe(c,r);let p=Odt({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}},Odt=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 xTe({subprocess:t,options:e,context:c,verboseInfo:n,fileDescriptors:i,originalStreams:s,onInternalError:u,controller:l});l.abort(),u.resolve();let S=h.map((y,v)=>au(y,e,v)),E=au(m,e,"all"),R=Idt({errorInfo:d,exitCode:f,signal:p,stdio:S,all:E,ipcOutput:_,context:c,options:e,command:o,escapedCommand:a,startTime:r});return D_(R,n,e)},Idt=({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?MT({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 Ha,isForcefullyTerminated:o.isForcefullyTerminated,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:s,options:a,startTime:l,isSync:!1}):MD({command:c,escapedCommand:u,stdio:n,all:i,ipcOutput:s,options:a,startTime:l});var tM=(t,e)=>{let r=Object.fromEntries(Object.entries(e).map(([n,i])=>[n,Pdt(n,t[n],i)]));return{...t,...r}},Pdt=(t,e,r)=>Cdt.has(t)&&Sr(e)&&Sr(r)?{...e,...r}:r,Cdt=new Set(["env",...UK]);var ql=(t,e,r,n)=>{let i=(o,a,c)=>ql(o,a,r,c),s=(...o)=>kdt({mapArguments:t,deepOptions:r,boundOptions:e,setBoundExeca:n,createNested:i},...o);return n!==void 0&&n(s,i,e),s},kdt=({mapArguments:t,deepOptions:e={},boundOptions:r={},setBoundExeca:n,createNested:i},s,...o)=>{if(Sr(s))return i(t,tM(r,s),n);let{file:a,commandArguments:c,options:u,isSync:l}=Ndt({mapArguments:t,firstArgument:s,nextArguments:o,deepOptions:e,boundOptions:r});return l?Lwe(a,c,u):FTe(a,c,u,i)},Ndt=({mapArguments:t,firstArgument:e,nextArguments:r,deepOptions:n,boundOptions:i})=>{let s=ZSe(e)?QSe(e,r):[e,...r],[o,a,c]=YN(...s),u=tM(tM(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 zTe=({file:t,commandArguments:e})=>qTe(t,e),jTe=({file:t,commandArguments:e})=>({...qTe(t,e),isSync:!0}),qTe=(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]=Ddt(t);return{file:r,commandArguments:n}},Ddt=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(Mdt)){let i=r.at(-1);i&&i.endsWith("\\")?r[r.length-1]=`${i.slice(0,-1)} ${n}`:r.push(n)}return r},Mdt=/ +/g;var BTe=(t,e,r)=>{t.sync=e($dt,r),t.s=t.sync},VTe=({options:t})=>GTe(t),$dt=({options:t})=>({...GTe(t),isSync:!0}),GTe=t=>({options:{...Ldt(t),...t}}),Ldt=({input:t,inputFile:e,stdio:r})=>t===void 0&&e===void 0&&r===void 0?{stdin:"inherit"}:{},HTe={preferLocal:!0};var WTe=ql(()=>({})),ecr=ql(()=>({isSync:!0})),KTe=ql(zTe),tcr=ql(jTe),rcr=ql(ibe),ncr=ql(VTe,{},HTe,BTe),{sendMessage:icr,getOneMessage:scr,getEachMessage:ocr,getCancelSignal:acr}=Vwe();var YTe=!1,ZTe,Udt=t=>{ZTe??=t},QTe=t=>{YTe=!0,Udt(t)},$n=()=>YTe,cu=()=>ZTe,JTe=t=>{switch(t){case"SIGTERM":case"SIGINT":return t;case void 0:return"interrupted";default:return}};var qT=null,XTe=t=>(qT&&qT.destroy(),qT=new Ls({totalAllowedTime:t}),qT),eAe=()=>qT;var Ls=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&&$n())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 LC({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 tAe={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 qdt=zdt(import.meta.url),Bdt=uu.dirname(qdt),Vdt=jdt(import.meta.url),U_=re("shell"),u9=new Set,rAe={preferLocal:!0},_t=(t,e,r)=>{let[n,i]=Gdt(e,r),s={...rAe,...i},o=WTe(t,n,s);iAe(o,s),aAe(o);let a=r?.idleTimeout;return a&&a>0&&oAe(o,a),o},nAe=(t,e)=>{let r={...rAe,...e},n=KTe(t,r);return iAe(n,r),aAe(n),e?.idleTimeout&&e.idleTimeout>0&&oAe(n,e.idleTimeout),n},Gdt=function(t,e){return Array.isArray(t)?[t,e]:typeof t=="object"&&t!==null?[[],t]:[[],void 0]},iAe=(t,e)=>{if(e.stdio!==void 0||e.stdout!==void 0||e.stderr!==void 0||Ka.env.NETLIFY_LOCAL_QUIET==="true")return;if(Ka.env.NETLIFY_MASK_LOGS!=="false"){t.stdout?.pipe(new Cb).pipe(Ka.stdout),t.stderr?.pipe(new Cb).pipe(Ka.stderr);return}t.stdout?.pipe(Ka.stdout),t.stderr?.pipe(Ka.stderr)},l9=(t,e="SIGTERM")=>{try{return t.pid&&!t.killed?(Ka.kill(-t.pid,e),U_.log(`Killed process ${t.pid} with signal ${e}`),!0):!1}catch(r){return U_.error("Error killing process:",r),!1}},sAe=t=>l9(t,"SIGKILL"),oAe=(t,e)=>{let r=null,n=()=>{U_.log(`Process ${t.pid} killed due to idle timeout (no output for ${e}ms)`),l9(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(U_.log(`Force killing idle process ${t.pid}`),sAe(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)},aAe=t=>{u9.add(t);let e=eAe();if(e){let r=e.onTimesUp(()=>{U_.log(`Global timer expired, killing process ${t.pid}`),l9(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(U_.log(`Force killing process ${t.pid} after timeout`),sAe(t))},5e3)});t.on("exit",()=>{u9.delete(t),r()}),t.on("error",()=>{u9.delete(t),r()})}};function nM(t,e){return!!Yo(t,e)}function Yo(t,e){if(!Ka.env.NETLIFY_LOCAL_MODE)try{let i=Vdt.resolve(tAe.name),s=uu.dirname(i);for(;s!==uu.dirname(s);){let o=uu.dirname(s);if(uu.basename(o)==="node_modules"){let a=uu.join(o,".bin",e);if(rM.existsSync(a))return a;break}s=o}}catch(i){console.error("Could not resolve package.json",i)}if(Ka.env.NODE_PATH){let i=uu.join(Ka.env.NODE_PATH,".bin",e);if(rM.existsSync(i))return i}let r=uu.join(t,"node_modules",".bin",e);if(rM.existsSync(r))return r;let n=uu.join(Bdt,"..","node_modules",".bin",e);if(rM.existsSync(n))return n}var cAe=re("repo"),fAe="runner-diffs-",oM=t=>`${fAe}${t}-`,pAe=async t=>{let e=dAe.tmpdir(),r;try{r=await iM.readdir(e)}catch{return}await Promise.all(r.filter(n=>n.startsWith(fAe)&&!n.startsWith(oM(t))).map(n=>iM.rm(sM.join(e,n),{recursive:!0,force:!0}).catch(()=>{})))},vr=(t,e={})=>_t("git",t,{...e,env:{...e.env,NETLIFY_INTERNAL_GIT:"1"}}),aM=async({config:t,isRetry:e,cwd:r=process.cwd()})=>{cAe.info("Getting runner diffs");let n=await h9(r),{hasChanges:i}=n,{status:s}=n;if(!i)return{hasChanges:!1};if(!e){let u=m9(s);await Xdt(u,r)}cAe.info("Changes after processing"),await p9(r);let o=await VT(s,r);if(await f9(o,r),i=await Zdt(r),!i)return{hasChanges:!1,ignored:o};await vr(["commit","-m","Agent runner [skip ci]"],{cwd:r});let a=await iM.mkdtemp(sM.join(dAe.tmpdir(),oM(t.sessionId))),c=await d9({config:t,diffDir:a,cwd:r,target:{commit:"HEAD"},ignored:o});return await Kdt(r),c.hasChanges&&Y.distribution("diff.size",(c.diffBinary??c.diff).size,{phase:"final"}),c},d9=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 _=sM.join(e,h);await vr([...m?["diff",p,s,"--binary"]:["diff",p,s],`--output=${_}`],{stdio:["ignore","ignore","pipe"],cwd:r,env:o});let{size:E}=await iM.stat(_);return{path:_,size:E}},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 lAe(l,p)||(d=p)}let f={hasChanges:!0,diff:c,resultDiff:l,ignored:i};return await lAe(c,u)||(f.diffBinary=u),d&&(f.resultDiffBinary=d),f},uAe=async t=>{let e=Hdt("sha256");for await(let r of Wdt(t))e.update(r);return e.digest("hex")},lAe=async(t,e)=>t.size===e.size&&await uAe(t.path)===await uAe(e.path),Kdt=async(t=process.cwd())=>{process.env.NETLIFY_LOCAL_MODE&&await vr(["reset","--soft","HEAD~1"],{cwd:t})},f9=async(t=[],e=process.cwd())=>{await vr(["add",".",...t],{cwd:e})},p9=async(t=process.cwd())=>{let e=await vr(["status","-s"],{cwd:t});return String(e.stdout??"")},hAe=/.. (.+)?\.log$/,Ydt=[hAe],h9=async(t=process.cwd())=>{let e=await p9(t);return{hasChanges:(e.trim().length===0?[]:e.split(`
|
|
388
|
+
if (condition) { yield value; }`)};import{Buffer as rut}from"buffer";import{StringDecoder as nut}from"string_decoder";var jD=(t,e,r)=>{if(r)return;if(t)return{transform:iut.bind(void 0,new TextEncoder)};let n=new nut(e);return{transform:sut.bind(void 0,n),final:out.bind(void 0,n)}},iut=function*(t,e){rut.isBuffer(e)?yield iu(e):typeof e=="string"?yield t.encode(e):yield e},sut=function*(t,e){yield jr(e)?t.write(e):e},out=function*(t){let e=t.end();e!==""&&(yield e)};import{callbackify as Ewe}from"util";var RY=Ewe(async(t,e,r,n)=>{e.currentIterable=t(...r);try{for await(let i of e.currentIterable)n.push(i)}finally{delete e.currentIterable}}),qD=async function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=cut}=e[r];for await(let i of n(t))yield*qD(i,e,r+1)},bwe=async function*(t){for(let[e,{final:r}]of Object.entries(t))yield*aut(r,Number(e),t)},aut=async function*(t,e,r){if(t!==void 0)for await(let n of t())yield*qD(n,r,e+1)},wwe=Ewe(async({currentIterable:t},e)=>{if(t!==void 0){await(e?t.throw(e):t.return());return}if(e)throw e}),cut=function*(t){yield t};var xY=(t,e,r,n)=>{try{for(let i of t(...e))r.push(i);n()}catch(i){n(i)}},Twe=(t,e)=>[...e.flatMap(r=>[...Ep(r,t,0)]),...$T(t)],Ep=function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=lut}=e[r];for(let i of n(t))yield*Ep(i,e,r+1)},$T=function*(t){for(let[e,{final:r}]of Object.entries(t))yield*uut(r,Number(e),t)},uut=function*(t,e,r){if(t!==void 0)for(let n of t())yield*Ep(n,r,e+1)},lut=function*(t){yield t};var OY=({value:t,value:{transform:e,final:r,writableObjectMode:n,readableObjectMode:i},optionName:s},{encoding:o})=>{let a={},c=Rwe(t,o,s),u=vp(e),l=vp(r),d=u?RY.bind(void 0,qD,a):xY.bind(void 0,Ep),f=u||l?RY.bind(void 0,bwe,a):xY.bind(void 0,$T),p=u||l?wwe.bind(void 0,a):void 0;return{stream:new dut({writableObjectMode:n,writableHighWaterMark:Awe(n),readableObjectMode:i,readableHighWaterMark:Awe(i),transform(m,_,S){d([m,c,0],this,S)},flush(m){f([c],this,m)},destroy:p})}},BD=(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=Rwe(o,r,a);t=Twe(c,t)}return t},Rwe=({transform:t,final:e,binary:r,writableObjectMode:n,readableObjectMode:i,preserveNewlines:s},o,a)=>{let c={};return[{transform:ywe(n,a)},jD(r,o,n),zD(r,s,n,c),{transform:t,final:e},{transform:Swe(i,a)},_we({binary:r,preserveNewlines:s,readableObjectMode:i,state:c})].filter(Boolean)};var xwe=(t,e)=>{for(let r of fut(t))put(t,r,e)},fut=t=>new Set(Object.entries(t).filter(([,{direction:e}])=>e==="input").map(([e])=>Number(e))),put=(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 ${jl[a]} with synchronous methods.`)}let o=i.map(({contents:a})=>a).map(a=>hut(a,n));r.input=RT(o)},hut=(t,e)=>{let r=BD(t,e,"utf8",!0);return mut(r),RT(r)},mut=t=>{let e=t.find(r=>typeof r!="string"&&!jr(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 Sut,appendFileSync as vut}from"fs";var VD=({stdioItems:t,encoding:e,verboseInfo:r,fdNumber:n})=>n!=="all"&&T_(r,n)&&!es.has(e)&&gut(n)&&(t.some(({type:i,value:s})=>i==="native"&&_ut.has(s))||t.every(({type:i})=>$s.has(i))),gut=t=>t===1||t===2,_ut=new Set(["pipe","overlapped"]),Owe=async(t,e,r,n)=>{for await(let i of t)yut(e)||Pwe(i,r,n)},Iwe=(t,e,r)=>{for(let n of t)Pwe(n,e,r)},yut=t=>t._readableState.pipes.length>0,Pwe=(t,e,r)=>{let n=iD(t);Ba({type:"output",verboseMessage:n,fdNumber:e,verboseInfo:r})};var Cwe=({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)=>Eut({result:c,fileDescriptors:t,fdNumber:u,state:s,outputFiles:o,isMaxBuffer:n,verboseInfo:i},r)),...s}},Eut=({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=kbe(t,s,d),p=iu(f),{stdioItems:h,objectMode:m}=e[r],_=but([p],h,c,n),{serializedResult:S,finalResult:E=S}=wut({chunks:_,objectMode:m,encoding:c,lines:u,stripFinalNewline:l,fdNumber:r});Tut({serializedResult:S,fdNumber:r,state:n,verboseInfo:o,encoding:c,stdioItems:h,objectMode:m});let R=a[r]?E:void 0;try{return n.error===void 0&&Aut(S,h,i),R}catch(y){return n.error=y,R}},but=(t,e,r,n)=>{try{return BD(t,e,r,!1)}catch(i){return n.error=i,t}},wut=({chunks:t,objectMode:e,encoding:r,lines:n,stripFinalNewline:i,fdNumber:s})=>{if(e)return{serializedResult:t};if(r==="buffer")return{serializedResult:RT(t)};let o=HSe(t,r);return n[s]?{serializedResult:o,finalResult:AY(o,!i[s],e)}:{serializedResult:o}},Tut=({serializedResult:t,fdNumber:e,state:r,verboseInfo:n,encoding:i,stdioItems:s,objectMode:o})=>{if(!VD({stdioItems:s,encoding:i,verboseInfo:n,fdNumber:e}))return;let a=AY(t,!1,o);try{Iwe(a,e,n)}catch(c){r.error??=c}},Aut=(t,e,r)=>{for(let{path:n,append:i}of e.filter(({type:s})=>UD.has(s))){let s=typeof n=="string"?n:n.toString();i||r.has(s)?vut(n,t):(r.add(s),Sut(n,t))}};var kwe=([,t,e],r)=>{if(r.all)return t===void 0?e:e===void 0?t:Array.isArray(t)?Array.isArray(e)?[...t,...e]:[...t,au(e,r,"all")]:Array.isArray(e)?[au(t,r,"all"),...e]:jr(t)&&jr(e)?DK([t,e]):`${t}${e}`};import{once as IY}from"events";var Nwe=async(t,e)=>{let[r,n]=await Rut(t);return e.isForcefullyTerminated??=!1,[r,n]},Rut=async t=>{let[e,r]=await Promise.allSettled([IY(t,"spawn"),IY(t,"exit")]);return e.status==="rejected"?[]:r.status==="rejected"?Dwe(t):r.value},Dwe=async t=>{try{return await IY(t,"exit")}catch{return Dwe(t)}},Mwe=async t=>{let[e,r]=await t;if(!xut(e,r)&&PY(e,r))throw new Ho;return[e,r]},xut=(t,e)=>t===void 0&&e===void 0,PY=(t,e)=>t!==0||e!==null;var $we=({error:t,status:e,signal:r,output:n},{maxBuffer:i})=>{let s=Out(t,e,r),o=s?.code==="ETIMEDOUT",a=Cbe(s,n,i);return{resultError:s,exitCode:e,signal:r,timedOut:o,isMaxBuffer:a}},Out=(t,e,r)=>t!==void 0?t:PY(e,r)?new Ho:void 0;var Lwe=(t,e,r)=>{let{file:n,commandArguments:i,command:s,escapedCommand:o,startTime:a,verboseInfo:c,options:u,fileDescriptors:l}=Put(t,e,r),d=Nut({file:n,commandArguments:i,options:u,command:s,escapedCommand:o,verboseInfo:c,fileDescriptors:l,startTime:a});return D_(d,c,u)},Put=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=oD(t,e,r),a=Cut(r),{file:c,commandArguments:u,options:l}=RD(t,e,a);kut(l);let d=pwe(l,o);return{file:c,commandArguments:u,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},Cut=t=>t.node&&!t.ipc?{...t,ipc:!1}:t,kut=({ipc:t,ipcInput:e,detached:r,cancelSignal:n})=>{e&&GD("ipcInput"),t&&GD("ipc: true"),r&&GD("detached: true"),n&&GD("cancelSignal")},GD=t=>{throw new TypeError(`The "${t}" option cannot be used with synchronous methods.`)},Nut=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,verboseInfo:s,fileDescriptors:o,startTime:a})=>{let c=Dut({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}=$we(c,r),{output:h,error:m=u}=Cwe({fileDescriptors:o,syncResult:c,options:r,isMaxBuffer:p,verboseInfo:s}),_=h.map((E,R)=>au(E,r,R)),S=au(kwe(h,r),r,"all");return $ut({error:m,exitCode:l,signal:d,timedOut:f,isMaxBuffer:p,stdio:_,all:S,options:r,command:n,escapedCommand:i,startTime:a})},Dut=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:s,startTime:o})=>{try{xwe(s,r);let a=Mut(r);return Iut(...xD(t,e,a))}catch(a){return N_({error:a,command:n,escapedCommand:i,fileDescriptors:s,options:r,startTime:o,isSync:!0})}},Mut=({encoding:t,maxBuffer:e,...r})=>({...r,encoding:"buffer",maxBuffer:DD(e)}),$ut=({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?MD({command:c,escapedCommand:u,stdio:s,all:o,ipcOutput:[],options:a,startTime:l}):MT({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 wdt}from"events";import{spawn as Tdt}from"child_process";import qwe from"process";import{once as CY,on as Lut}from"events";var Uwe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0,filter:s}={})=>(x_({methodName:"getOneMessage",isSubprocess:r,ipc:n,isConnected:vD(t)}),Uut({anyProcess:t,channel:e,isSubprocess:r,filter:s,reference:i})),Uut=async({anyProcess:t,channel:e,isSubprocess:r,filter:n,reference:i})=>{gD(e,i);let s=zl(t,e,r),o=new AbortController;try{return await Promise.race([Fut(s,n,o),zut(s,r,o),jut(s,r,o)])}catch(a){throw O_(t),a}finally{o.abort(),_D(e,i)}},Fut=async(t,e,{signal:r})=>{if(e===void 0){let[n]=await CY(t,"message",{signal:r});return n}for await(let[n]of Lut(t,"message",{signal:r}))if(e(n))return n},zut=async(t,e,{signal:r})=>{await CY(t,"disconnect",{signal:r}),TEe(e)},jut=async(t,e,{signal:r})=>{let[n]=await CY(t,"strict:error",{signal:r});throw pD(n,e)};import{once as zwe,on as qut}from"events";var jwe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0}={})=>kY({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:!r,reference:i}),kY=({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:i,reference:s})=>{x_({methodName:"getEachMessage",isSubprocess:r,ipc:n,isConnected:vD(t)}),gD(e,s);let o=zl(t,e,r),a=new AbortController,c={};return But(t,o,a),Vut({ipcEmitter:o,isSubprocess:r,controller:a,state:c}),Gut({anyProcess:t,channel:e,ipcEmitter:o,isSubprocess:r,shouldAwait:i,controller:a,state:c,reference:s})},But=async(t,e,r)=>{try{await zwe(e,"disconnect",{signal:r.signal}),r.abort()}catch{}},Vut=async({ipcEmitter:t,isSubprocess:e,controller:r,state:n})=>{try{let[i]=await zwe(t,"strict:error",{signal:r.signal});n.error=pD(i,e),r.abort()}catch{}},Gut=async function*({anyProcess:t,channel:e,ipcEmitter:r,isSubprocess:n,shouldAwait:i,controller:s,state:o,reference:a}){try{for await(let[c]of qut(r,"message",{signal:s.signal}))Fwe(o),yield c}catch{Fwe(o)}finally{s.abort(),_D(e,a),n||O_(t),i&&await t}},Fwe=({error:t})=>{if(t)throw t};var Bwe=(t,{ipc:e})=>{Object.assign(t,Gwe(t,!1,e))},Vwe=()=>{let t=qwe,e=!0,r=qwe.channel!==void 0;return{...Gwe(t,e,r),getCancelSignal:QEe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})}},Gwe=(t,e,r)=>({sendMessage:TD.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getOneMessage:Uwe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getEachMessage:jwe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})});import{ChildProcess as Hut}from"child_process";import{PassThrough as Wut,Readable as Kut,Writable as Yut,Duplex as Zut}from"stream";var Hwe=({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,verboseInfo:o})=>{bY(n);let a=new Hut;Qut(a,n),Object.assign(a,{readable:Jut,writable:Xut,duplex:elt});let c=N_({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,isSync:!1}),u=tlt(c,o,i);return{subprocess:a,promise:u}},Qut=(t,e)=>{let r=LT(),n=LT(),i=LT(),s=Array.from({length:e.length-3},LT),o=LT(),a=[r,n,i,...s];Object.assign(t,{stdin:r,stdout:n,stderr:i,all:o,stdio:a})},LT=()=>{let t=new Wut;return t.end(),t},Jut=()=>new Kut({read(){}}),Xut=()=>new Yut({write(){}}),elt=()=>new Zut({read(){},write(){}}),tlt=async(t,e,r)=>D_(t,e,r);import{createReadStream as Wwe,createWriteStream as Kwe}from"fs";import{Buffer as rlt}from"buffer";import{Readable as UT,Writable as nlt,Duplex as ilt}from"stream";var Zwe=(t,e)=>FD(slt,t,e,!1),FT=({type:t,optionName:e})=>{throw new TypeError(`The \`${e}\` option cannot be ${jl[t]}.`)},Ywe={fileNumber:FT,generator:OY,asyncGenerator:OY,nodeStream:({value:t})=>({stream:t}),webTransform({value:{transform:t,writableObjectMode:e,readableObjectMode:r}}){let n=e||r;return{stream:ilt.fromWeb(t,{objectMode:n})}},duplex:({value:{transform:t}})=>({stream:t}),native(){}},slt={input:{...Ywe,fileUrl:({value:t})=>({stream:Wwe(t)}),filePath:({value:{file:t}})=>({stream:Wwe(t)}),webStream:({value:t})=>({stream:UT.fromWeb(t)}),iterable:({value:t})=>({stream:UT.from(t)}),asyncIterable:({value:t})=>({stream:UT.from(t)}),string:({value:t})=>({stream:UT.from(t)}),uint8Array:({value:t})=>({stream:UT.from(rlt.from(t))})},output:{...Ywe,fileUrl:({value:t})=>({stream:Kwe(t)}),filePath:({value:{file:t,append:e}})=>({stream:Kwe(t,e?{flags:"a"}:{})}),webStream:({value:t})=>({stream:nlt.fromWeb(t)}),iterable:FT,asyncIterable:FT,string:FT,uint8Array:FT}};import{on as olt,once as Qwe}from"events";import{PassThrough as alt,getDefaultHighWaterMark as clt}from"stream";import{finished as eTe}from"stream/promises";function bp(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let i of t)DY(i);let e=t.some(({readableObjectMode:i})=>i),r=ult(t,e),n=new NY({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return n}var ult=(t,e)=>{if(t.length===0)return clt(e);let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},NY=class extends alt{#e=new Set([]);#r=new Set([]);#t=new Set([]);#n;#s=Symbol("unpipe");#i=new WeakMap;add(e){if(DY(e),this.#e.has(e))return;this.#e.add(e),this.#n??=llt(this,this.#e,this.#s);let r=plt({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(DY(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)}},llt=async(t,e,r)=>{HD(t,Jwe);let n=new AbortController;try{await Promise.race([dlt(t,n),flt(t,e,r,n)])}finally{n.abort(),HD(t,-Jwe)}},dlt=async(t,{signal:e})=>{try{await eTe(t,{signal:e,cleanup:!0})}catch(r){throw tTe(t,r),r}},flt=async(t,e,r,{signal:n})=>{for await(let[i]of olt(t,"unpipe",{signal:n}))e.has(i)&&i.emit(r)},DY=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},plt=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:s,unpipeEvent:o})=>{HD(t,Xwe);let a=new AbortController;try{await Promise.race([hlt(s,e,a),mlt({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:a}),glt({stream:e,streams:r,ended:n,aborted:i,unpipeEvent:o,controller:a})])}finally{a.abort(),HD(t,-Xwe)}r.size>0&&r.size===n.size+i.size&&(n.size===0&&i.size>0?MY(t):_lt(t))},hlt=async(t,e,{signal:r})=>{try{await t,r.aborted||MY(e)}catch(n){r.aborted||tTe(e,n)}},mlt=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:s}})=>{try{await eTe(e,{signal:s,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(o){if(s.aborted||!r.has(e))return;rTe(o)?i.add(e):nTe(t,o)}},glt=async({stream:t,streams:e,ended:r,aborted:n,unpipeEvent:i,controller:{signal:s}})=>{if(await Qwe(t,i,{signal:s}),!t.readable)return Qwe(s,"abort",{signal:s});e.delete(t),r.delete(t),n.delete(t)},_lt=t=>{t.writable&&t.end()},tTe=(t,e)=>{rTe(e)?MY(t):nTe(t,e)},rTe=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",MY=t=>{(t.readable||t.writable)&&t.destroy()},nTe=(t,e)=>{t.destroyed||(t.once("error",ylt),t.destroy(e))},ylt=()=>{},HD=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},Jwe=2,Xwe=1;import{finished as iTe}from"stream/promises";var $_=(t,e)=>{t.pipe(e),Slt(t,e),vlt(t,e)},Slt=async(t,e)=>{if(!(Go(t)||Go(e))){try{await iTe(t,{cleanup:!0,readable:!0,writable:!1})}catch{}$Y(e)}},$Y=t=>{t.writable&&t.end()},vlt=async(t,e)=>{if(!(Go(t)||Go(e))){try{await iTe(e,{cleanup:!0,readable:!1,writable:!0})}catch{}LY(t)}},LY=t=>{t.readable&&t.destroy()};var sTe=(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})=>$s.has(c)))Elt(t,a,o,i);for(let{stream:a}of s.filter(({type:c})=>!$s.has(c)))wlt({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]:bp(s);$_(o,i)}},Elt=(t,e,r,n)=>{r==="output"?$_(t.stdio[n],e):$_(e,t.stdio[n]);let i=blt[n];i!==void 0&&(t[i]=e),t.stdio[n]=e},blt=["stdin","stdout","stderr"],wlt=({subprocess:t,stream:e,direction:r,fdNumber:n,pipeGroups:i,controller:s})=>{if(e===void 0)return;Tlt(e,s);let[o,a]=r==="output"?[e,t.stdio[n]]:[t.stdio[n],e],c=i.get(o)??[];i.set(o,[...c,a])},Tlt=(t,{signal:e})=>{Go(t)&&yp(t,Alt,e)},Alt=2;import{addAbortListener as Olt}from"events";var wp=[];wp.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&wp.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&wp.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var WD=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",UY=Symbol.for("signal-exit emitter"),FY=globalThis,Rlt=Object.defineProperty.bind(Object),zY=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(FY[UY])return FY[UY];Rlt(FY,UY,{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}},KD=class{},xlt=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),jY=class extends KD{onExit(){return()=>{}}load(){}unload(){}},qY=class extends KD{#e=BY.platform==="win32"?"SIGINT":"SIGHUP";#r=new zY;#t;#n;#s;#i={};#o=!1;constructor(e){super(),this.#t=e,this.#i={};for(let r of wp)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(!WD(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 wp)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,wp.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 WD(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"&&WD(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)}},BY=globalThis.process,{onExit:oTe,load:csr,unload:usr}=xlt(WD(BY)?new qY(BY):new jY);var aTe=(t,{cleanup:e,detached:r},{signal:n})=>{if(!e||r)return;let i=oTe(()=>{t.kill()});Olt(n,()=>{i()})};var uTe=({source:t,sourcePromise:e,boundOptions:r,createNested:n},...i)=>{let s=sD(),{destination:o,destinationStream:a,destinationError:c,from:u,unpipeSignal:l}=Ilt(r,n,i),{sourceStream:d,sourceError:f}=Clt(t,u),{options:p,fileDescriptors:h}=Ga.get(t);return{sourcePromise:e,sourceStream:d,sourceOptions:p,sourceError:f,destination:o,destinationStream:a,destinationError:c,unpipeSignal:l,fileDescriptors:h,startTime:s}},Ilt=(t,e,r)=>{try{let{destination:n,pipeOptions:{from:i,to:s,unpipeSignal:o}={}}=Plt(t,e,...r),a=mD(n,s);return{destination:n,destinationStream:a,from:i,unpipeSignal:o}}catch(n){return{destinationError:n}}},Plt=(t,e,r,...n)=>{if(Array.isArray(r))return{destination:e(cTe,t)(r,...n),pipeOptions:t};if(typeof r=="string"||r instanceof URL||kK(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]=YN(r,...n);return{destination:e(cTe)(i,s,o),pipeOptions:o}}if(Ga.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}`)},cTe=({options:t})=>({options:{...t,stdin:"pipe",piped:!0}}),Clt=(t,e)=>{try{return{sourceStream:I_(t,e)}}catch(r){return{sourceError:r}}};var dTe=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n,fileDescriptors:i,sourceOptions:s,startTime:o})=>{let a=klt({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n});if(a!==void 0)throw VY({error:a,fileDescriptors:i,sourceOptions:s,startTime:o})},klt=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n})=>{if(e!==void 0&&n!==void 0)return n;if(n!==void 0)return LY(t),n;if(e!==void 0)return $Y(r),e},VY=({error:t,fileDescriptors:e,sourceOptions:r,startTime:n})=>N_({error:t,command:lTe,escapedCommand:lTe,fileDescriptors:e,options:r,startTime:n,isSync:!1}),lTe="source.pipe(destination)";var fTe=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 Nlt}from"stream/promises";var pTe=(t,e,r)=>{let n=YD.has(e)?Mlt(t,e):Dlt(t,e);return yp(t,Llt,r.signal),yp(e,Ult,r.signal),$lt(e),n},Dlt=(t,e)=>{let r=bp([t]);return $_(r,e),YD.set(e,r),r},Mlt=(t,e)=>{let r=YD.get(e);return r.add(t),r},$lt=async t=>{try{await Nlt(t,{cleanup:!0,readable:!1,writable:!0})}catch{}YD.delete(t)},YD=new WeakMap,Llt=2,Ult=1;import{aborted as Flt}from"util";var hTe=(t,e)=>t===void 0?[]:[zlt(t,e)],zlt=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 VY({error:o,fileDescriptors:n,sourceOptions:i,startTime:s})};var ZD=(t,...e)=>{if(Sr(e[0]))return ZD.bind(void 0,{...t,boundOptions:{...t.boundOptions,...e[0]}});let{destination:r,...n}=uTe(t,...e),i=jlt({...n,destination:r});return i.pipe=ZD.bind(void 0,{...t,source:r,sourcePromise:i,boundOptions:{}}),i},jlt=async({sourcePromise:t,sourceStream:e,sourceOptions:r,sourceError:n,destination:i,destinationStream:s,destinationError:o,unpipeSignal:a,fileDescriptors:c,startTime:u})=>{let l=qlt(t,i);dTe({sourceStream:e,sourceError:n,destinationStream:s,destinationError:o,fileDescriptors:c,sourceOptions:r,startTime:u});let d=new AbortController;try{let f=pTe(e,s,d);return await Promise.race([fTe(l),...hTe(a,{sourceStream:e,mergedStream:f,sourceOptions:r,fileDescriptors:c,startTime:u})])}finally{d.abort()}},qlt=(t,e)=>Promise.allSettled([t,e]);import{setImmediate as Ylt}from"timers/promises";import{on as Blt}from"events";import{getDefaultHighWaterMark as Vlt}from"stream";var QD=({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:n,encoding:i,preserveNewlines:s})=>{let o=new AbortController;return Glt(e,o),gTe({stream:t,controller:o,binary:r,shouldEncode:!t.readableObjectMode&&n,encoding:i,shouldSplit:!t.readableObjectMode,preserveNewlines:s})},Glt=async(t,e)=>{try{await t}catch{}finally{e.abort()}},GY=({stream:t,onStreamEnd:e,lines:r,encoding:n,stripFinalNewline:i,allMixed:s})=>{let o=new AbortController;Hlt(e,o,t);let a=t.readableObjectMode&&!s;return gTe({stream:t,controller:o,binary:n==="buffer",shouldEncode:!a,encoding:n,shouldSplit:!a&&r,preserveNewlines:!i})},Hlt=async(t,e,r)=>{try{await t}catch{r.destroy()}finally{e.abort()}},gTe=({stream:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})=>{let a=Blt(t,"data",{signal:e.signal,highWaterMark:mTe,highWatermark:mTe});return Wlt({onStdoutChunk:a,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})},HY=Vlt(!0),mTe=HY,Wlt=async function*({onStdoutChunk:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o}){let a=Klt({binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o});try{for await(let[c]of t)yield*Ep(c,a,0)}catch(c){if(!e.signal.aborted)throw c}finally{yield*$T(a)}},Klt=({binary:t,shouldEncode:e,encoding:r,shouldSplit:n,preserveNewlines:i})=>[jD(t,r,!e),zD(t,i,!n,{})].filter(Boolean);var _Te=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=Zlt({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:a,verboseInfo:u,streamInfo:l});if(!i){await Promise.all([Qlt(t),d]);return}let f=wY(c,r),p=GY({stream:t,onStreamEnd:e,lines:o,encoding:n,stripFinalNewline:f,allMixed:a}),[h]=await Promise.all([Jlt({stream:t,iterable:p,fdNumber:r,encoding:n,maxBuffer:s,lines:o}),d]);return h},Zlt=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:i,verboseInfo:s,streamInfo:{fileDescriptors:o}})=>{if(!VD({stdioItems:o[r]?.stdioItems,encoding:n,verboseInfo:s,fdNumber:r}))return;let a=GY({stream:t,onStreamEnd:e,lines:!0,encoding:n,stripFinalNewline:!0,allMixed:i});await Owe(a,t,r,s)},Qlt=async t=>{await Ylt(),t.readableFlowing===null&&t.resume()},Jlt=async({stream:t,stream:{readableObjectMode:e},iterable:r,fdNumber:n,encoding:i,maxBuffer:s,lines:o})=>{try{return e||o?await CD(r,{maxBuffer:s}):i==="buffer"?new Uint8Array(await kD(r,{maxBuffer:s})):await k_(r,{maxBuffer:s})}catch(a){return yTe(Obe({error:a,stream:t,readableObjectMode:e,lines:o,encoding:i,fdNumber:n}))}},WY=async t=>{try{return await t}catch(e){return yTe(e)}},yTe=({bufferedData:t})=>VSe(t)?new Uint8Array(t):t;import{finished as Xlt}from"stream/promises";var zT=async(t,e,r,{isSameDirection:n,stopOnExit:i=!1}={})=>{let s=edt(t,r),o=new AbortController;try{await Promise.race([...i?[r.exitPromise]:[],Xlt(t,{cleanup:!0,signal:o.signal})])}catch(a){s.stdinCleanedUp||ndt(a,e,r,n)}finally{o.abort()}},edt=(t,{originalStreams:[e],subprocess:r})=>{let n={stdinCleanedUp:!1};return t===e&&tdt(t,r,n),n},tdt=(t,e,r)=>{let{_destroy:n}=t;t._destroy=(...i)=>{rdt(e,r),n.call(t,...i)}},rdt=({exitCode:t,signalCode:e},r)=>{(t!==null||e!==null)&&(r.stdinCleanedUp=!0)},ndt=(t,e,r,n)=>{if(!idt(t,e,r,n))throw t},idt=(t,e,r,n=!0)=>r.propagating?STe(t)||JD(t):(r.propagating=!0,KY(r,e)===n?STe(t):JD(t)),KY=({fileDescriptors:t},e)=>e!=="all"&&t[e].direction==="input",JD=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",STe=t=>t?.code==="EPIPE";var vTe=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>t.stdio.map((c,u)=>YY({stream:c,fdNumber:u,encoding:e,buffer:r[u],maxBuffer:n[u],lines:i[u],allMixed:!1,stripFinalNewline:s,verboseInfo:o,streamInfo:a})),YY=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=zT(t,e,u);if(KY(u,e)){await l;return}let[d]=await Promise.all([_Te({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 ETe=({stdout:t,stderr:e},{all:r})=>r&&(t||e)?bp([t,e].filter(Boolean)):void 0,bTe=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>YY({...sdt(t,r),fdNumber:"all",encoding:e,maxBuffer:n[1]+n[2],lines:i[1]||i[2],allMixed:odt(t),stripFinalNewline:s,verboseInfo:o,streamInfo:a}),sdt=({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}},odt=({all:t,stdout:e,stderr:r})=>t&&e&&r&&e.readableObjectMode!==r.readableObjectMode;import{once as adt}from"events";var wTe=t=>T_(t,"ipc"),TTe=(t,e)=>{let r=iD(t);Ba({type:"ipc",verboseMessage:r,fdNumber:"ipc",verboseInfo:e})};var ATe=async({subprocess:t,buffer:e,maxBuffer:r,ipc:n,ipcOutput:i,verboseInfo:s})=>{if(!n)return i;let o=wTe(s),a=su(e,"ipc"),c=su(r,"ipc");for await(let u of kY({anyProcess:t,channel:t.channel,isSubprocess:!1,ipc:n,shouldAwait:!1,reference:!0}))a&&(Ibe(t,i,c),i.push(u)),o&&TTe(u,s);return i},RTe=async(t,e)=>(await Promise.allSettled([t]),e);var xTe=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 E=Nwe(t,f),R={originalStreams:m,fileDescriptors:h,subprocess:t,exitPromise:E,propagating:!1},y=vTe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:R}),v=bTe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:R}),T=[],O=ATe({subprocess:t,buffer:r,maxBuffer:n,ipc:l,ipcOutput:T,verboseInfo:p}),C=cdt(m,t,R),I=udt(h,R);try{return await Promise.race([Promise.all([{},Mwe(E),Promise.all(y),v,O,abe(t,d),...C,...I]),_,ldt(t,S),...rbe(t,s,f,S),...wEe({subprocess:t,cancelSignal:o,gracefulCancel:a,context:f,controller:S}),...ebe({subprocess:t,cancelSignal:o,gracefulCancel:a,forceKillAfterDelay:c,context:f,controller:S})])}catch(k){return f.terminationReason??="other",Promise.all([{error:k},E,Promise.all(y.map(w=>WY(w))),WY(v),RTe(O,T),Promise.allSettled(C),Promise.allSettled(I)])}},cdt=(t,e,r)=>t.map((n,i)=>n===e.stdio[i]?void 0:zT(n,i,r)),udt=(t,e)=>t.flatMap(({stdioItems:r},n)=>r.filter(({value:i,stream:s=i})=>Ko(s,{checkOpen:!1})&&!Go(s)).map(({type:i,value:s,stream:o=s})=>zT(o,n,e,{isSameDirection:$s.has(i),stopOnExit:i==="native"}))),ldt=async(t,{signal:e})=>{let[r]=await adt(t,"error",{signal:e});throw r};var OTe=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),jT=(t,e,r)=>{let n=t[r];n.has(e)||n.set(e,[]);let i=n.get(e),s=Va();return i.push(s),{resolve:s.resolve.bind(s),promises:i}},L_=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 ddt}from"stream";import{callbackify as fdt}from"util";import{finished as ITe}from"stream/promises";var ZY=async t=>{if(t!==void 0)try{await QY(t)}catch{}},PTe=async t=>{if(t!==void 0)try{await JY(t)}catch{}},QY=async t=>{await ITe(t,{cleanup:!0,readable:!1,writable:!0})},JY=async t=>{await ITe(t,{cleanup:!0,readable:!0,writable:!1})},XD=async(t,e)=>{if(await t,e)throw e},eM=(t,e,r)=>{r&&!JD(r)?t.destroy(r):e&&t.destroy()};var CTe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,binary:i=!0,preserveNewlines:s=!0}={})=>{let o=i||es.has(r),{subprocessStdout:a,waitReadableDestroy:c}=XY(t,n,e),{readableEncoding:u,readableObjectMode:l,readableHighWaterMark:d}=e9(a,o),{read:f,onStdoutDataDone:p}=t9({subprocessStdout:a,subprocess:t,binary:o,encoding:r,preserveNewlines:s}),h=new ddt({read:f,destroy:fdt(n9.bind(void 0,{subprocessStdout:a,subprocess:t,waitReadableDestroy:c})),highWaterMark:d,objectMode:l,encoding:u});return r9({subprocessStdout:a,onStdoutDataDone:p,readable:h,subprocess:t}),h},XY=(t,e,r)=>{let n=I_(t,e),i=jT(r,n,"readableDestroy");return{subprocessStdout:n,waitReadableDestroy:i}},e9=({readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r},n)=>n?{readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r}:{readableEncoding:t,readableObjectMode:!0,readableHighWaterMark:HY},t9=({subprocessStdout:t,subprocess:e,binary:r,encoding:n,preserveNewlines:i})=>{let s=Va(),o=QD({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:!r,encoding:n,preserveNewlines:i});return{read(){pdt(this,o,s)},onStdoutDataDone:s}},pdt=async(t,e,r)=>{try{let{value:n,done:i}=await e.next();i?r.resolve():t.push(n)}catch{}},r9=async({subprocessStdout:t,onStdoutDataDone:e,readable:r,subprocess:n,subprocessStdin:i})=>{try{await JY(t),await n,await ZY(i),await e,r.readable&&r.push(null)}catch(s){await ZY(i),kTe(r,s)}},n9=async({subprocessStdout:t,subprocess:e,waitReadableDestroy:r},n)=>{await L_(r,e)&&(kTe(t,n),await XD(e,n))},kTe=(t,e)=>{eM(t,t.readable,e)};import{Writable as hdt}from"stream";import{callbackify as NTe}from"util";var DTe=({subprocess:t,concurrentStreams:e},{to:r}={})=>{let{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}=i9(t,r,e),o=new hdt({...s9(n,t,i),destroy:NTe(a9.bind(void 0,{subprocessStdin:n,subprocess:t,waitWritableFinal:i,waitWritableDestroy:s})),highWaterMark:n.writableHighWaterMark,objectMode:n.writableObjectMode});return o9(n,o),o},i9=(t,e,r)=>{let n=mD(t,e),i=jT(r,n,"writableFinal"),s=jT(r,n,"writableDestroy");return{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}},s9=(t,e,r)=>({write:mdt.bind(void 0,t),final:NTe(gdt.bind(void 0,t,e,r))}),mdt=(t,e,r,n)=>{t.write(e,r)?n():t.once("drain",n)},gdt=async(t,e,r)=>{await L_(r,e)&&(t.writable&&t.end(),await e)},o9=async(t,e,r)=>{try{await QY(t),e.writable&&e.end()}catch(n){await PTe(r),MTe(e,n)}},a9=async({subprocessStdin:t,subprocess:e,waitWritableFinal:r,waitWritableDestroy:n},i)=>{await L_(r,e),await L_(n,e)&&(MTe(t,i),await XD(e,i))},MTe=(t,e)=>{eM(t,t.writable,e)};import{Duplex as _dt}from"stream";import{callbackify as ydt}from"util";var $Te=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,to:i,binary:s=!0,preserveNewlines:o=!0}={})=>{let a=s||es.has(r),{subprocessStdout:c,waitReadableDestroy:u}=XY(t,n,e),{subprocessStdin:l,waitWritableFinal:d,waitWritableDestroy:f}=i9(t,i,e),{readableEncoding:p,readableObjectMode:h,readableHighWaterMark:m}=e9(c,a),{read:_,onStdoutDataDone:S}=t9({subprocessStdout:c,subprocess:t,binary:a,encoding:r,preserveNewlines:o}),E=new _dt({read:_,...s9(l,t,d),destroy:ydt(Sdt.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 r9({subprocessStdout:c,onStdoutDataDone:S,readable:E,subprocess:t,subprocessStdin:l}),o9(l,E,c),E},Sdt=async({subprocessStdout:t,subprocessStdin:e,subprocess:r,waitReadableDestroy:n,waitWritableFinal:i,waitWritableDestroy:s},o)=>{await Promise.all([n9({subprocessStdout:t,subprocess:r,waitReadableDestroy:n},o),a9({subprocessStdin:e,subprocess:r,waitWritableFinal:i,waitWritableDestroy:s},o)])};var c9=(t,e,{from:r,binary:n=!1,preserveNewlines:i=!1}={})=>{let s=n||es.has(e),o=I_(t,r),a=QD({subprocessStdout:o,subprocess:t,binary:s,shouldEncode:!0,encoding:e,preserveNewlines:i});return vdt(a,o,t)},vdt=async function*(t,e,r){try{yield*t}finally{e.readable&&e.destroy(),await r}};var LTe=(t,{encoding:e})=>{let r=OTe();t.readable=CTe.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.writable=DTe.bind(void 0,{subprocess:t,concurrentStreams:r}),t.duplex=$Te.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.iterable=c9.bind(void 0,t,e),t[Symbol.asyncIterator]=c9.bind(void 0,t,e,{})};var UTe=(t,e)=>{for(let[r,n]of bdt){let i=n.value.bind(e);Reflect.defineProperty(t,r,{...n,value:i})}},Edt=(async()=>{})().constructor.prototype,bdt=["then","catch","finally"].map(t=>[t,Reflect.getOwnPropertyDescriptor(Edt,t)]);var FTe=(t,e,r,n)=>{let{file:i,commandArguments:s,command:o,escapedCommand:a,startTime:c,verboseInfo:u,options:l,fileDescriptors:d}=Adt(t,e,r),{subprocess:f,promise:p}=xdt({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}),UTe(f,p),Ga.set(f,{options:l,fileDescriptors:d}),f},Adt=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=oD(t,e,r),{file:a,commandArguments:c,options:u}=RD(t,e,r),l=Rdt(u),d=Zwe(l,o);return{file:a,commandArguments:c,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},Rdt=({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}},xdt=({file:t,commandArguments:e,options:r,startTime:n,verboseInfo:i,command:s,escapedCommand:o,fileDescriptors:a})=>{let c;try{c=Tdt(...xD(t,e,r))}catch(h){return Hwe({error:h,command:s,escapedCommand:o,fileDescriptors:a,options:r,startTime:n,verboseInfo:i})}let u=new AbortController;wdt(Number.POSITIVE_INFINITY,u.signal);let l=[...c.stdio];sTe(c,a,u),aTe(c,r,u);let d={},f=Va();c.kill=EEe.bind(void 0,{kill:c.kill.bind(c),options:r,onInternalError:f,context:d,controller:u}),c.all=ETe(c,r),LTe(c,r),Bwe(c,r);let p=Odt({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}},Odt=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 xTe({subprocess:t,options:e,context:c,verboseInfo:n,fileDescriptors:i,originalStreams:s,onInternalError:u,controller:l});l.abort(),u.resolve();let S=h.map((y,v)=>au(y,e,v)),E=au(m,e,"all"),R=Idt({errorInfo:d,exitCode:f,signal:p,stdio:S,all:E,ipcOutput:_,context:c,options:e,command:o,escapedCommand:a,startTime:r});return D_(R,n,e)},Idt=({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?MT({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 Ha,isForcefullyTerminated:o.isForcefullyTerminated,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:s,options:a,startTime:l,isSync:!1}):MD({command:c,escapedCommand:u,stdio:n,all:i,ipcOutput:s,options:a,startTime:l});var tM=(t,e)=>{let r=Object.fromEntries(Object.entries(e).map(([n,i])=>[n,Pdt(n,t[n],i)]));return{...t,...r}},Pdt=(t,e,r)=>Cdt.has(t)&&Sr(e)&&Sr(r)?{...e,...r}:r,Cdt=new Set(["env",...UK]);var ql=(t,e,r,n)=>{let i=(o,a,c)=>ql(o,a,r,c),s=(...o)=>kdt({mapArguments:t,deepOptions:r,boundOptions:e,setBoundExeca:n,createNested:i},...o);return n!==void 0&&n(s,i,e),s},kdt=({mapArguments:t,deepOptions:e={},boundOptions:r={},setBoundExeca:n,createNested:i},s,...o)=>{if(Sr(s))return i(t,tM(r,s),n);let{file:a,commandArguments:c,options:u,isSync:l}=Ndt({mapArguments:t,firstArgument:s,nextArguments:o,deepOptions:e,boundOptions:r});return l?Lwe(a,c,u):FTe(a,c,u,i)},Ndt=({mapArguments:t,firstArgument:e,nextArguments:r,deepOptions:n,boundOptions:i})=>{let s=ZSe(e)?QSe(e,r):[e,...r],[o,a,c]=YN(...s),u=tM(tM(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 zTe=({file:t,commandArguments:e})=>qTe(t,e),jTe=({file:t,commandArguments:e})=>({...qTe(t,e),isSync:!0}),qTe=(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]=Ddt(t);return{file:r,commandArguments:n}},Ddt=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(Mdt)){let i=r.at(-1);i&&i.endsWith("\\")?r[r.length-1]=`${i.slice(0,-1)} ${n}`:r.push(n)}return r},Mdt=/ +/g;var BTe=(t,e,r)=>{t.sync=e($dt,r),t.s=t.sync},VTe=({options:t})=>GTe(t),$dt=({options:t})=>({...GTe(t),isSync:!0}),GTe=t=>({options:{...Ldt(t),...t}}),Ldt=({input:t,inputFile:e,stdio:r})=>t===void 0&&e===void 0&&r===void 0?{stdin:"inherit"}:{},HTe={preferLocal:!0};var WTe=ql(()=>({})),ecr=ql(()=>({isSync:!0})),KTe=ql(zTe),tcr=ql(jTe),rcr=ql(ibe),ncr=ql(VTe,{},HTe,BTe),{sendMessage:icr,getOneMessage:scr,getEachMessage:ocr,getCancelSignal:acr}=Vwe();var YTe=!1,ZTe,Udt=t=>{ZTe??=t},QTe=t=>{YTe=!0,Udt(t)},$n=()=>YTe,cu=()=>ZTe,JTe=t=>{switch(t){case"SIGTERM":case"SIGINT":return t;case void 0:return"interrupted";default:return}};var qT=null,XTe=t=>(qT&&qT.destroy(),qT=new Ls({totalAllowedTime:t}),qT),eAe=()=>qT;var Ls=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&&$n())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 LC({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 tAe={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 qdt=zdt(import.meta.url),Bdt=uu.dirname(qdt),Vdt=jdt(import.meta.url),U_=re("shell"),u9=new Set,rAe={preferLocal:!0},_t=(t,e,r)=>{let[n,i]=Gdt(e,r),s={...rAe,...i},o=WTe(t,n,s);iAe(o,s),aAe(o);let a=r?.idleTimeout;return a&&a>0&&oAe(o,a),o},nAe=(t,e)=>{let r={...rAe,...e},n=KTe(t,r);return iAe(n,r),aAe(n),e?.idleTimeout&&e.idleTimeout>0&&oAe(n,e.idleTimeout),n},Gdt=function(t,e){return Array.isArray(t)?[t,e]:typeof t=="object"&&t!==null?[[],t]:[[],void 0]},iAe=(t,e)=>{if(e.stdio!==void 0||e.stdout!==void 0||e.stderr!==void 0||Ka.env.NETLIFY_LOCAL_QUIET==="true")return;if(Ka.env.NETLIFY_MASK_LOGS!=="false"){t.stdout?.pipe(new Cb).pipe(Ka.stdout),t.stderr?.pipe(new Cb).pipe(Ka.stderr);return}t.stdout?.pipe(Ka.stdout),t.stderr?.pipe(Ka.stderr)},l9=(t,e="SIGTERM")=>{try{return t.pid&&!t.killed?(Ka.kill(-t.pid,e),U_.log(`Killed process ${t.pid} with signal ${e}`),!0):!1}catch(r){return U_.error("Error killing process:",r),!1}},sAe=t=>l9(t,"SIGKILL"),oAe=(t,e)=>{let r=null,n=()=>{U_.log(`Process ${t.pid} killed due to idle timeout (no output for ${e}ms)`),l9(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(U_.log(`Force killing idle process ${t.pid}`),sAe(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)},aAe=t=>{u9.add(t);let e=eAe();if(e){let r=e.onTimesUp(()=>{U_.log(`Global timer expired, killing process ${t.pid}`),l9(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(U_.log(`Force killing process ${t.pid} after timeout`),sAe(t))},5e3)});t.on("exit",()=>{u9.delete(t),r()}),t.on("error",()=>{u9.delete(t),r()})}};function nM(t,e){return!!Yo(t,e)}function Yo(t,e){if(!Ka.env.NETLIFY_LOCAL_MODE)try{let i=Vdt.resolve(tAe.name),s=uu.dirname(i);for(;s!==uu.dirname(s);){let o=uu.dirname(s);if(uu.basename(o)==="node_modules"){let a=uu.join(o,".bin",e);if(rM.existsSync(a))return a;break}s=o}}catch(i){console.error("Could not resolve package.json",i)}if(Ka.env.NODE_PATH){let i=uu.join(Ka.env.NODE_PATH,".bin",e);if(rM.existsSync(i))return i}let r=uu.join(t,"node_modules",".bin",e);if(rM.existsSync(r))return r;let n=uu.join(Bdt,"..","node_modules",".bin",e);if(rM.existsSync(n))return n}var cAe=re("repo"),fAe="runner-diffs-",oM=t=>`${fAe}${t}-`,pAe=async t=>{let e=dAe.tmpdir(),r;try{r=await iM.readdir(e)}catch{return}await Promise.all(r.filter(n=>n.startsWith(fAe)&&!n.startsWith(oM(t))).map(n=>iM.rm(sM.join(e,n),{recursive:!0,force:!0}).catch(()=>{})))},vr=(t,e={})=>_t("git",t,{...e,env:{...e.env,NETLIFY_INTERNAL_GIT:"1"}}),aM=async({config:t,isRetry:e,cwd:r=process.cwd()})=>{cAe.info("Getting runner diffs");let n=await h9(r),{hasChanges:i}=n,{status:s}=n;if(!i)return{hasChanges:!1};if(!e){let u=m9(s);await Xdt(u,r)}cAe.info("Changes after processing"),await p9(r);let o=await VT(s,r);if(await f9(o,r),i=await Zdt(r),!i)return{hasChanges:!1,ignored:o};await vr(["commit","-m","Agent runner [skip ci]"],{cwd:r});let a=await iM.mkdtemp(sM.join(dAe.tmpdir(),oM(t.sessionId))),c=await d9({config:t,diffDir:a,cwd:r,target:{commit:"HEAD"},ignored:o});return await Kdt(r),c.hasChanges&&Y.distribution("diff.size",(c.diffBinary??c.diff).size,{phase:"final"}),c},d9=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 _=sM.join(e,h);await vr([...m?["diff",p,s,"--binary"]:["diff",p,s],`--output=${_}`],{stdio:["ignore","ignore","pipe"],cwd:r,env:o});let{size:E}=await iM.stat(_);return{path:_,size:E}},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 lAe(l,p)||(d=p)}let f={hasChanges:!0,diff:c,resultDiff:l,ignored:i};return await lAe(c,u)||(f.diffBinary=u),d&&(f.resultDiffBinary=d),f},uAe=async t=>{let e=Hdt("sha256");for await(let r of Wdt(t))e.update(r);return e.digest("hex")},lAe=async(t,e)=>t.size===e.size&&await uAe(t.path)===await uAe(e.path),Kdt=async(t=process.cwd())=>{process.env.NETLIFY_LOCAL_MODE&&await vr(["reset","--soft","HEAD~1"],{cwd:t})},f9=async(t=[],e=process.cwd())=>{await vr(["add",".",...t],{cwd:e})},p9=async(t=process.cwd())=>{let e=await vr(["status","-s"],{cwd:t});return String(e.stdout??"")},hAe=/.. (.+)?\.log$/,Ydt=[hAe],h9=async(t=process.cwd())=>{let e=await p9(t);return{hasChanges:(e.trim().length===0?[]:e.split(`
|
|
389
389
|
`).filter(i=>Ydt.some(o=>o instanceof RegExp?o.test(i):i===o)?!1:i[1]?.trim()!=="")).length!==0,status:e}},Zdt=async(t=process.cwd())=>{try{return await vr(["diff","--staged","--quiet"],{cwd:t}),!1}catch{return!0}},BT=async(t=process.cwd())=>{let{stdout:e}=await vr(["rev-parse","HEAD"],{cwd:t});return String(e??"").trim()},Qdt=1,Jdt=async t=>{try{return await vr(["rev-parse","--verify","--quiet","HEAD"],{cwd:t}),!0}catch(e){if(e.exitCode===Qdt)return!1;throw e}},mAe=async(t=process.cwd())=>{if(!await Jdt(t))return!0;let{stdout:e}=await vr(["ls-tree","--name-only","HEAD"],{cwd:t});return String(e??"").trim().length===0},gAe=async(t=process.cwd())=>{let{stdout:e}=await vr(["rev-list","--max-parents=0","HEAD"],{cwd:t});return String(e??"").trim()},VT=async(t,e=process.cwd())=>{t||=await p9(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(`
|
|
390
390
|
`).forEach(i=>{r.forEach(o=>{let a=i===`?? ${o}`,c=i.startsWith(`?? ${o}/`)||i.startsWith(`?? ${o}${sM.sep}`);(a||c)&&n.push(`:!${o}`)});let s=i.match(hAe)?.[1];s&&n.push(`:!${s}.log`)}),n},_Ae=async(t=process.cwd())=>{await vr(["reset","--hard","HEAD"],{cwd:t})},yAe=async(t=process.cwd())=>{let e=await vr(["clean","-fd","-e",".netlify"],{stdio:["ignore","pipe","pipe"],cwd:t});return String(e.stdout??"").split(`
|
|
391
391
|
`).filter(r=>r.startsWith("Removing ")).map(r=>r.slice(9))},m9=t=>{let e=t.split(`
|
|
@@ -578,7 +578,7 @@ ${o.trim()}
|
|
|
578
578
|
\`\`\``),{title:n,message:o,category:i}};import Ch from"fs/promises";import RR from"os";import Pd from"path";import YS from"process";import _vt from"readline";import TR from"fs/promises";import pvt from"os";import fL from"path";var FPe=re("gemini_session"),hvt=t=>t instanceof Error?t.message:String(t),mvt=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},gvt=async t=>{let r=(await TR.readFile(t,"utf8")).split(`
|
|
579
579
|
`),n=!1,i=r.map(s=>{if(!s.trim())return s;let o;try{o=JSON.parse(s)}catch{return s}return mvt(o)?(n=!0,JSON.stringify(o)):s});return n&&await TR.writeFile(t,i.join(`
|
|
580
580
|
`),"utf8"),n},w8=async(t,e=fL.join(pvt.homedir(),".gemini"))=>{let r=fL.join(e,"tmp"),n=t.slice(0,8),i;try{i=await TR.readdir(r)}catch{return}for(let s of i){let o=fL.join(r,s,"chats"),a;try{a=await TR.readdir(o)}catch{continue}for(let c of a){if(!c.endsWith(".jsonl")||!c.includes(n))continue;let u=fL.join(o,c);try{let l=(await TR.readFile(u,"utf8")).split(`
|
|
581
|
-
`,1)[0];if(JSON.parse(l).sessionId===t)return u}catch{continue}}}},AR=async t=>{try{let e=await w8(t);return e?(await gvt(e),!0):(FPe.log(`No gemini session file for ${t}; not resumable, using fresh session`),!1)}catch(e){return FPe.warn(`Could not sanitize gemini session ${t} for resume; using fresh session`,{error:hvt(e)}),!1}};var T8={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 ln=re("runner_gemini"),pL="Gemini CLI",yvt="gemini-3.8-flash",Svt=({catchError:t,runCmd:e,error:r,result:n,runnerName:i})=>(ln.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?(ln.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}):(ln.log("Setting result to undefined because no valid result was captured"),{error:r||`${i} failed`,result:void 0})),vvt={low:"LOW",medium:"MEDIUM",high:"HIGH"},Evt=t=>Number(/^gemini-(\d+)/.exec(t??"")?.[1]),zPe=t=>Evt(t)>=3,bvt=(t,{model:e,effort:r})=>{let n=t.modelConfigs?.customAliases??{};!r||!zPe(e)?(r&&ln.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:vvt[r]}}}},Object.keys(n).length!==0&&(t.modelConfigs={...t.modelConfigs,customAliases:n})},wvt=async({config:t,model:e,effort:r,creditWrapUpTurn:n,setup:i}={})=>{let{proxied:s,close:o}=await Ul(t),a=Pd.join(RR.homedir(),".gemini"),c=Pd.join(a,"settings.json");try{await Ch.mkdir(a,{recursive:!0});let u={};try{let d=await Ch.readFile(c,"utf-8");u=JSON.parse(d)}catch{ln.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"],bvt(u,{model:e,effort:r}),u.mcpServers={...u.mcpServers},delete u.mcpServers[Fr],delete u.mcpServers[Mn],Ci({creditWrapUpTurn:n})&&Object.assign(u.mcpServers,WT({trust:!0,...i?{env:AAe()}:{}},i));let l=Ja(t,{creditWrapUpTurn:n,proxied:s});l&&Object.assign(u.mcpServers,v9(l,{trust:!0,env:RAe()},TAe)),await Ch.writeFile(c,JSON.stringify(u,null,2),"utf-8"),ln.log("Configured Gemini CLI settings (preview features and compression threshold)")}catch(u){ln.error("Failed to ensure Gemini CLI settings",{error:u.message}),Y.inc("context.degraded",1,{component:"agent_config"})}return o},Tvt=async({continueSession:t,priorAgentSessionId:e})=>{if(!t||!e)return!1;let r=await AR(e);return r||(ln.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},Avt=t=>{t?.category===W.Skill&&t.type&&nu(ln,qa(t.type))},Rvt=({aiGateway:t})=>{if(t){let{token:e,url:r}=t;if(!e||!r)throw new Error("No token or url provided from AI Gateway");YS.env.GEMINI_API_KEY=e,YS.env.GOOGLE_GEMINI_BASE_URL=r}else if(!YS.env.GEMINI_API_KEY)throw new Error("GEMINI_API_KEY is not provided")},xvt=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)||(ln.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||yvt,a=s?"catalog":"built-in";o&&await t.isModelAvailableForProvider("gemini",o)?(n=o,ln.log(`Using ${a} default model: ${o}`)):o&&ln.log(`Default model ${o} is not available, proceeding without model specification`)}}return n},Ovt=async({config:t,cliPath:e})=>{let r=[`[[rule]]
|
|
581
|
+
`,1)[0];if(JSON.parse(l).sessionId===t)return u}catch{continue}}}},AR=async t=>{try{let e=await w8(t);return e?(await gvt(e),!0):(FPe.log(`No gemini session file for ${t}; not resumable, using fresh session`),!1)}catch(e){return FPe.warn(`Could not sanitize gemini session ${t} for resume; using fresh session`,{error:hvt(e)}),!1}};var T8={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 ln=re("runner_gemini"),pL="Gemini CLI",yvt="gemini-3.8-flash",Svt=({catchError:t,runCmd:e,error:r,result:n,runnerName:i})=>(ln.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?(ln.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}):(ln.log("Setting result to undefined because no valid result was captured"),{error:r||`${i} failed`,result:void 0})),vvt={low:"LOW",medium:"MEDIUM",high:"HIGH"},Evt=t=>Number(/^gemini-(\d+)/.exec(t??"")?.[1]),zPe=t=>Evt(t)>=3,bvt=(t,{model:e,effort:r})=>{let n=t.modelConfigs?.customAliases??{};!r||!zPe(e)?(r&&ln.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:vvt[r]}}}},Object.keys(n).length!==0&&(t.modelConfigs={...t.modelConfigs,customAliases:n})},wvt=async({config:t,model:e,effort:r,creditWrapUpTurn:n,setup:i}={})=>{let{proxied:s,close:o}=await Ul(t),a=Pd.join(RR.homedir(),".gemini"),c=Pd.join(a,"settings.json");try{await Ch.mkdir(a,{recursive:!0});let u={};try{let d=await Ch.readFile(c,"utf-8");u=JSON.parse(d)}catch{ln.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"],bvt(u,{model:e,effort:r}),u.mcpServers={...u.mcpServers},delete u.mcpServers[Fr],delete u.mcpServers[Mn],Ci({creditWrapUpTurn:n})&&Object.assign(u.mcpServers,WT({trust:!0,...i?{env:AAe()}:{}},i));let l=Ja(t,{creditWrapUpTurn:n,proxied:s});l&&Object.assign(u.mcpServers,v9(l,{trust:!0,env:RAe()},TAe)),await Ch.writeFile(c,JSON.stringify(u,null,2),"utf-8"),ln.log("Configured Gemini CLI settings (preview features and compression threshold)")}catch(u){ln.error("Failed to ensure Gemini CLI settings",{error:u.message}),Y.inc("context.degraded",1,{component:"agent_config"})}return o},Tvt=async({continueSession:t,priorAgentSessionId:e})=>{if(!t||!e)return!1;let r=await AR(e);return r||(ln.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},Avt=t=>{t?.category===W.Skill&&t.type&&nu(ln,qa(t.type))},Rvt=({aiGateway:t})=>{if(t){let{token:e,url:r}=t;if(!e||!r)throw new Error("No token or url provided from AI Gateway");YS.env.GEMINI_API_KEY=e,YS.env.GOOGLE_GEMINI_BASE_URL=r}else if(!YS.env.GEMINI_API_KEY)throw new Error("GEMINI_API_KEY is not provided")},xvt=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)||(ln.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||yvt,a=s?"catalog":"built-in";o&&await t.isModelAvailableForProvider("gemini",o)?(n=o,ln.log(`Using ${a} default model: ${o}`)):o&&ln.log(`Default model ${o} is not available, proceeding without model specification`)}}return n},Ovt=async({config:t,cliPath:e})=>{let r=[`[[rule]]
|
|
582
582
|
toolName = "web_fetch"
|
|
583
583
|
decision = "allow"
|
|
584
584
|
priority = 10
|
|
@@ -590,7 +590,7 @@ priority = 20
|
|
|
590
590
|
`),ln.log("Ask policy allows the read-only database query command",{allowedPrefixes:i})}let n=Pd.join(RR.homedir(),".gemini","ask-policy.toml");return await Ch.mkdir(Pd.dirname(n),{recursive:!0}),await Ch.writeFile(n,r.join(`
|
|
591
591
|
`),"utf-8"),n};async function A8({config:t,persistSteps:e=void 0,sendSteps:r=void 0,aiGateway:n,continueSession:i=!1,priorAgentSessionId:s=void 0,cwd:o=YS.cwd(),cliPath:a="netlify",abortSignal:c=void 0,onSessionId:u=void 0,forceLowEffortForCreditWrapUp:l=void 0}){let{prompt:d}=t,f=Ya("gemini",t.effort);t.effort&&!f&&ln.log(`Effort '${t.effort}' is not available on ${pL}; using its default`);let p=l?"low":f;Rvt({aiGateway:n});let h=await xvt({aiGateway:n,config:t,model:t.model}),m=Fs({creditWrapUpTurn:l})?await js():void 0,_=m?zs(t,m.filePath):void 0,S=await wvt({config:t,model:h,effort:p,creditWrapUpTurn:l,setup:_}),E=[],R=[],y=[],v={},T=0,O=0,C,I,k,w,B,L=await Tvt({continueSession:i,priorAgentSessionId:s}),b=t.mode==="ask",P=b?await Ovt({config:t,cliPath:a}):void 0,$=[Yo(o,"gemini"),...h?["--model",h]:[],...b?["--approval-mode","default","--policy",P]:["--yolo"],"--skip-trust","--output-format","stream-json",...L?["-r",s]:[],"-p",""],J=`${YS.env.NVM_BIN}/node`;ln.log(`Running ${J} ${$.join(" ")}`);let Q=_t(J,$,{all:!0,env:{...YS.env,GEMINI_CLI_NO_RELAUNCH:"1"},cwd:o,idleTimeout:Zi,cancelSignal:c});Q.stdin?.end(d);let te=m?qs(m.filePath,ge=>{B||(B={setupRequest:ge},Q.kill())}):void 0,Re=ja(()=>{e?.({steps:E,duration:O}),r?.({steps:R,duration:O}),R=[]},250),Ee=(ge,j)=>{ge.id=T,T+=1,y.push(ge),E.push(ge),R.push(ge),j||Re.flush(),Re(),j&&Re.flush()},Se=h||"default";Rr(t)||Ee({title:`Using ${pL} with ${Se}`,category:W.Environment},!0);let Te=_vt.createInterface({input:Q.all});Te.on("error",ge=>{ln.error("Readline interface error",{error:ge.message,stack:ge.stack})});let be="",me=()=>{be&&Ee({message:be.trim(),category:W.AgentMessage}),be=""};Te.on("line",ge=>{let j;try{if(ge.startsWith("[API Error")){let F=ge.match(/\[api error: (.+?)]$/i)?.[1];j={type:"error",value:gp(F,!1)?.error?.message||F||"Gemini encountered error"}}else j=JSON.parse(ge)}catch{return}if(j)switch(j.type==="init"&&typeof j.session_id=="string"&&(w=j.session_id,u?.(w)),["message","result"].includes(j.type)||me(),j.type){case"message":{j.role!=="user"&&j.content&&(be+=j.content);break}case"tool_use":{let F=j.tool_id&&!B?Vl(j.tool_name,j.parameters,EK):void 0;if(F&&"interaction"in F){B=F.interaction,Q.kill();break}if(F){ln.warn("Ignoring malformed pause tool input",{toolUseId:j.tool_id,tool:j.tool_name,issues:F.issues}),Y.inc(F.metric,1);break}if(Xa(j.tool_name,EK))break;let D=T8[j.tool_name]?.name??j.tool_name,V=j.parameters?.file_path,K=V&&Pd.relative(o,V),ne=j.parameters?.command,X=j.tool_name==="activate_skill"&&j.parameters?.name,ue=j.tool_name==="run_shell_command"&&ts(ne),De=[D,K&&`\`${K}\``,ne&&`\`${ne}\``].filter(Boolean).join(" ");if(X)De=`Use ${qa(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:T8[j.tool_name]?.category,...X&&{type:X}};v[j.tool_id]=ot,Re.flush();break}case"tool_result":{let F=v[j.tool_id];F&&(j.output&&(F.message=`\`\`\`
|
|
592
592
|
${j.output.trim()}
|
|
593
|
-
\`\`\``),Ee(F,!0),Avt(F));break}case"result":{O=j.stats?.duration_ms,j.stats&&(Pa(j.stats,h?{model:h}:{}),k=j.stats),j.status==="error"?I=j.error?.message:C=be.trim();break}case"error":{I=j.error;break}case"finished":break;case"init":break;default:{ln.warn("Unhandled message type:",j.type);break}}});let de=!1;if(await Q.catch(ge=>{de=Us(ge,c),{error:I,result:C}=Svt({catchError:ge,runCmd:Q,error:I,result:C,runnerName:"Gemini"})}),te?.stop(),await Promise.all([m?.remove(),S()]),Te.close(),B)return Re.flush(),{steps:y,duration:O,agentSessionId:w,resolvedModel:h,usage:k,pendingInteraction:B};let Le=de;Le&&(!C&&be.trim()&&(C=be.trim()),I=void 0),Re.flush();let{providerFailure:We,classification:ee}=Bs({error:I});return{steps:y,duration:O,result:await Vs({initialResult:C,agentName:pL,hasError:!!I}),error:Gs({error:I,agentName:pL}),isRetryableError:ee?.retryable??Hs(I),isProviderUnavailableError:ee?.providerFault??Ws(I),...We?{providerFailure:We}:{},resolvedModel:h,usage:k,agentSessionId:w,...p&&zPe(h)?{effort:p}:{},...Le?{aborted:!0}:{}}}var jPe=async()=>{let t=Pd.join(RR.homedir(),".gemini");await Ch.rm(t,{recursive:!0,force:!0});let e=Pd.join(RR.homedir(),".agents","skills");await Ch.rm(e,{recursive:!0,force:!0})},qPe={baseDir:Pd.join(RR.homedir(),".gemini"),include:["tmp"]};import xR from"fs/promises";import YPe from"os";import kd from"path";import yL from"process";import Dvt from"readline";import BPe from"fs/promises";var Ivt=re("interaction-files"),Pvt=250,Cvt=t=>{let e;try{e=JSON.parse(t)}catch{return{issues:"invalid_json"}}let r=hM.safeParse(e);return r.success?{questions:r.data.questions}:{issues:F_(r.error.issues)}},VPe=(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){Ivt.warn(n.message,{filePath:t,issues:c}),Y.inc(n.metric,1);return}i&&r(a)},Pvt);return s.unref(),{stop:()=>{i=!1,clearInterval(s)}}},hL=(t,e)=>VPe(t,r=>{let{questions:n,issues:i}=Cvt(r);return n?{value:n}:{issues:i}},e,{message:"Ignoring malformed ask tool questions file",metric:"inference.malformed_ask"}),mL=(t,e)=>VPe(t,r=>{let n;try{n=JSON.parse(r)}catch{return{issues:"invalid_json"}}let i=MN.safeParse(n);return i.success?{value:i.data}:{issues:F_(i.error.issues)}},e,{message:"Ignoring malformed authorization request file",metric:"inference.malformed_authorization"});import kvt from"os";import WPe from"path";import R8 from"fs";var GPe=re("opencode_install"),HPe="1.
|
|
593
|
+
\`\`\``),Ee(F,!0),Avt(F));break}case"result":{O=j.stats?.duration_ms,j.stats&&(Pa(j.stats,h?{model:h}:{}),k=j.stats),j.status==="error"?I=j.error?.message:C=be.trim();break}case"error":{I=j.error;break}case"finished":break;case"init":break;default:{ln.warn("Unhandled message type:",j.type);break}}});let de=!1;if(await Q.catch(ge=>{de=Us(ge,c),{error:I,result:C}=Svt({catchError:ge,runCmd:Q,error:I,result:C,runnerName:"Gemini"})}),te?.stop(),await Promise.all([m?.remove(),S()]),Te.close(),B)return Re.flush(),{steps:y,duration:O,agentSessionId:w,resolvedModel:h,usage:k,pendingInteraction:B};let Le=de;Le&&(!C&&be.trim()&&(C=be.trim()),I=void 0),Re.flush();let{providerFailure:We,classification:ee}=Bs({error:I});return{steps:y,duration:O,result:await Vs({initialResult:C,agentName:pL,hasError:!!I}),error:Gs({error:I,agentName:pL}),isRetryableError:ee?.retryable??Hs(I),isProviderUnavailableError:ee?.providerFault??Ws(I),...We?{providerFailure:We}:{},resolvedModel:h,usage:k,agentSessionId:w,...p&&zPe(h)?{effort:p}:{},...Le?{aborted:!0}:{}}}var jPe=async()=>{let t=Pd.join(RR.homedir(),".gemini");await Ch.rm(t,{recursive:!0,force:!0});let e=Pd.join(RR.homedir(),".agents","skills");await Ch.rm(e,{recursive:!0,force:!0})},qPe={baseDir:Pd.join(RR.homedir(),".gemini"),include:["tmp"]};import xR from"fs/promises";import YPe from"os";import kd from"path";import yL from"process";import Dvt from"readline";import BPe from"fs/promises";var Ivt=re("interaction-files"),Pvt=250,Cvt=t=>{let e;try{e=JSON.parse(t)}catch{return{issues:"invalid_json"}}let r=hM.safeParse(e);return r.success?{questions:r.data.questions}:{issues:F_(r.error.issues)}},VPe=(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){Ivt.warn(n.message,{filePath:t,issues:c}),Y.inc(n.metric,1);return}i&&r(a)},Pvt);return s.unref(),{stop:()=>{i=!1,clearInterval(s)}}},hL=(t,e)=>VPe(t,r=>{let{questions:n,issues:i}=Cvt(r);return n?{value:n}:{issues:i}},e,{message:"Ignoring malformed ask tool questions file",metric:"inference.malformed_ask"}),mL=(t,e)=>VPe(t,r=>{let n;try{n=JSON.parse(r)}catch{return{issues:"invalid_json"}}let i=MN.safeParse(n);return i.success?{value:i.data}:{issues:F_(i.error.issues)}},e,{message:"Ignoring malformed authorization request file",metric:"inference.malformed_authorization"});import kvt from"os";import WPe from"path";import R8 from"fs";var GPe=re("opencode_install"),HPe="1.18.35",Nvt=()=>WPe.join(kvt.homedir(),".netlify-agent-runner","opencode"),gL=async t=>{let e=Yo(t,"opencode");if(e)return e;let r=Nvt(),n=WPe.join(r,"node_modules",".bin","opencode");if(R8.existsSync(n))return n;R8.mkdirSync(r,{recursive:!0}),GPe.log(`Installing opencode-ai@${HPe} on demand`);let i=Date.now();await _t("npm",["install","--no-save","--no-audit","--no-fund","--prefix",r,`opencode-ai@${HPe}`],{cwd:r});let s=Date.now()-i;if(Y.timing("opencode.install_duration",s),GPe.log(`Installed opencode-ai in ${s}ms`),!R8.existsSync(n))throw new Error("OpenCode CLI binary not found after installing opencode-ai");return n};var Cd=re("runner_opencode"),_L="OpenCode",ZPe="gateway",Mvt="z-ai/glm-5.3-flash",$vt=new Set(["z-ai/glm-5.3-flash","deepseek/deepseek-v4-pro","x-ai/grok-4.6"]),Lvt=(t,e)=>!t||!CC.includes(t)?t:e&&$vt.has(e)?"xhigh":"max",x8={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}},KPe=t=>x8[t]?.name||t,Uvt=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||Mvt}n&&(await i(n)||Cd.log(`Model '${n}' not found in gateway catalog; proceeding anyway (gateway is authoritative, e.g. flag-gated OpenRouter models)`))}return n}function zvt({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:{[ZPe]:{api:"openai",name:"Netlify AI Gateway",options:{apiKey:a,baseURL:c},...Object.keys(u).length>0?{models:u}:{}}},...n||i?{mcp:{...n?xAe(n,s):{},...i?OAe(i):{}}}:{}};return{...yL.env,OPENCODE_CONFIG_CONTENT:JSON.stringify(l),OPENCODE_DISABLE_AUTOUPDATE:"1"}}async function QPe(t){if(!t.systemInstructions)throw new Error("OpenCode requires system instructions");let e=kd.resolve(t.cwd??yL.cwd(),rn);await xR.mkdir(e,{recursive:!0});let r=await xR.mkdtemp(kd.join(e,"opencode-instructions-"));try{let n=kd.join(r,"instructions.md");return await xR.writeFile(n,t.systemInstructions,{encoding:"utf8",mode:384}),await jvt({...t,systemPromptPath:n})}finally{await xR.rm(r,{recursive:!0,force:!0})}}async function jvt({config:t,persistSteps:e,aiGateway:r,continueSession:n,priorAgentSessionId:i,cwd:s=yL.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,E=0,R=0,y,v=await Fvt({config:t,aiGateway:r,model:d}),T=Lvt(f,v);Cd.log(f?`Requesting reasoning effort '${f}' for model '${v}'${T===f?"":` (sent as '${T}')`}; ignored if unsupported`:`No reasoning effort requested for model '${v}'; running at its own default`);let O=Ci({creditWrapUpTurn:c})?await fM():void 0,C=HT({creditWrapUpTurn:c})?await pM():void 0,I=Fs({creditWrapUpTurn:c})?await js():void 0,k=await Ul(t),w=Ja(t,{requestFilePath:C?.filePath,creditWrapUpTurn:c,proxied:k.proxied}),B=zvt({aiGateway:r,model:v,effort:T,questionsFilePath:O?.filePath,connections:w,setup:I?zs(t,I.filePath):void 0,systemPromptPath:u}),L=[],b=[],P=0,$=Date.now(),J=await gL(s),Q=["run","--format","json","--dangerously-skip-permissions","--agent","build",...v?["--model",`${ZPe}/${v}`]:[],...n?i?["--session",i]:["--continue"]:[]];Cd.log(`Running ${J} ${Q.join(" ")}`);let te=_t(J,Q,{all:!0,env:B,cwd:s,idleTimeout:Zi,cancelSignal:o});te.stdin?.end(l);let Re=O?hL(O.filePath,ne=>{y||(y={questions:ne},te.kill())}):void 0,Ee=C?mL(C.filePath,ne=>{y||(y={authorization:ne},te.kill())}):void 0,Se=I?qs(I.filePath,ne=>{y||(y={setupRequest:ne},te.kill())}):void 0,Te=ja(()=>{e?.({steps:b,duration:Date.now()-$})},250),be=(ne,X)=>{let{wrapMessage:ue,...De}=ne,ot=KN({...De,id:P});ot.message&&ue&&(ot.message=`\`\`\`
|
|
594
594
|
${ot.message}
|
|
595
595
|
\`\`\``),P+=1,L.push(ot),b.push(ot),X||Te.flush(),Te(),X&&Te.flush()},me=v||"default";Rr(t)||be({title:`Using ${_L} with ${me}`,category:W.Environment},!0);let de=Dvt.createInterface({input:te.all});de.on("error",ne=>{Cd.error("Readline interface error",{error:ne.message,stack:ne.stack})});let Le="",We,ee=new Set,ge=()=>{Le&&(be({message:Le,category:W.AgentMessage}),We=Le,Le="")};de.on("line",ne=>{let X;try{X=JSON.parse(ne)}catch{Cd.log("Could not parse line",ne);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(Xa(ue,SSe)){ot==="error"&&Cd.warn("Pause tool call rejected before it could pause the run",{tool:ue,error:$e});break}if(ot==="error"&&(E+=1),(ot==="completed"||ot==="error")&&(R+=1),ue==="skill"){let In=typeof De.name=="string"?De.name:void 0;if(In){let po=qa(In);nu(Cd,po),be({title:`Use ${po}`,category:W.Skill,type:In},!0);break}}if(ue==="todowrite"){let In=Uvt(De.todos);be({title:KPe(ue),category:In.length>0?x8.todowrite.category:W.Tool,...In.length>0?{tasks:In}:{}},!0);break}let Ke=typeof De.command=="string"?De.command:void 0,Pe=Ke?ts(Ke):!1,we=typeof De.path=="string"&&De.path||typeof De.file_path=="string"&&De.file_path||typeof De.pattern=="string"&&De.pattern||void 0,Xt,vt;if(Pe)Xt="Generating the site",vt=W.SiteGeneration;else if(Ke&&ue==="bash")Xt=`Running \`${Ke}\``,vt=W.RunCommand;else{let In=we&&`\`${kd.relative(s,we)}\``;Xt=[KPe(ue),In].filter(Boolean).join(" "),vt=x8[ue]?.category||W.AgentMessage}let fo,pi=["bash","read","glob","grep","list","webfetch","websearch"].includes(ue);$e?fo=`\`\`\`
|
|
596
596
|
${$e.trim()}
|