@netlify/agent-runner-cli 1.200.2-bug.3 → 1.200.2-bug.4
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/README.md +11 -0
- package/dist/bin-local.js +4 -4
- package/dist/bin.js +4 -4
- package/dist/index.js +4 -4
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -384,8 +384,8 @@ For example, you can use the \`pathToFileURL()\` method of the \`url\` core modu
|
|
|
384
384
|
`,LF:`
|
|
385
385
|
`,concatBytes:aY},lct=(t,e)=>{let r=new Uint8Array(t.length+e.length);return r.set(t,0),r.set(e,t.length),r},dct={windowsNewline:new Uint8Array([13,10]),unixNewline:new Uint8Array([10]),LF:10,concatBytes:lct};import{Buffer as fct}from"buffer";var Gbe=(t,e)=>t?void 0:pct.bind(void 0,e),pct=function*(t,e){if(typeof e!="string"&&!Fr(e)&&!fct.isBuffer(e))throw new TypeError(`The \`${t}\` option's transform must use "objectMode: true" to receive as input: ${typeof e}.`);yield e},Hbe=(t,e)=>t?hct.bind(void 0,e):mct.bind(void 0,e),hct=function*(t,e){Wbe(t,e),yield e},mct=function*(t,e){if(Wbe(t,e),typeof e!="string"&&!Fr(e))throw new TypeError(`The \`${t}\` option's function must yield a string or an Uint8Array, not ${typeof e}.`);yield e},Wbe=(t,e)=>{if(e==null)throw new TypeError(`The \`${t}\` option's function must not call \`yield ${e}\`.
|
|
386
386
|
Instead, \`yield\` should either be called with a value, or not be called at all. For example:
|
|
387
|
-
if (condition) { yield value; }`)};import{Buffer as gct}from"buffer";import{StringDecoder as _ct}from"string_decoder";var ND=(t,e,r)=>{if(r)return;if(t)return{transform:yct.bind(void 0,new TextEncoder)};let n=new _ct(e);return{transform:Sct.bind(void 0,n),final:vct.bind(void 0,n)}},yct=function*(t,e){gct.isBuffer(e)?yield tu(e):typeof e=="string"?yield t.encode(e):yield e},Sct=function*(t,e){yield Fr(e)?t.write(e):e},vct=function*(t){let e=t.end();e!==""&&(yield e)};import{callbackify as Kbe}from"util";var uY=Kbe(async(t,e,r,n)=>{e.currentIterable=t(...r);try{for await(let i of e.currentIterable)n.push(i)}finally{delete e.currentIterable}}),DD=async function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=bct}=e[r];for await(let i of n(t))yield*DD(i,e,r+1)},Ybe=async function*(t){for(let[e,{final:r}]of Object.entries(t))yield*Ect(r,Number(e),t)},Ect=async function*(t,e,r){if(t!==void 0)for await(let n of t())yield*DD(n,r,e+1)},Zbe=Kbe(async({currentIterable:t},e)=>{if(t!==void 0){await(e?t.throw(e):t.return());return}if(e)throw e}),bct=function*(t){yield t};var lY=(t,e,r,n)=>{try{for(let i of t(...e))r.push(i);n()}catch(i){n(i)}},Qbe=(t,e)=>[...e.flatMap(r=>[...yp(r,t,0)]),...CT(t)],yp=function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=Tct}=e[r];for(let i of n(t))yield*yp(i,e,r+1)},CT=function*(t){for(let[e,{final:r}]of Object.entries(t))yield*wct(r,Number(e),t)},wct=function*(t,e,r){if(t!==void 0)for(let n of t())yield*yp(n,r,e+1)},Tct=function*(t){yield t};var dY=({value:t,value:{transform:e,final:r,writableObjectMode:n,readableObjectMode:i},optionName:s},{encoding:o})=>{let a={},c=Xbe(t,o,s),u=_p(e),l=_p(r),d=u?uY.bind(void 0,DD,a):lY.bind(void 0,yp),f=u||l?uY.bind(void 0,Ybe,a):lY.bind(void 0,CT),p=u||l?Zbe.bind(void 0,a):void 0;return{stream:new Act({writableObjectMode:n,writableHighWaterMark:Jbe(n),readableObjectMode:i,readableHighWaterMark:Jbe(i),transform(m,_,S){d([m,c,0],this,S)},flush(m){f([c],this,m)},destroy:p})}},MD=(t,e,r,n)=>{let i=e.filter(({type:o})=>o==="generator"),s=n?i.reverse():i;for(let{value:o,optionName:a}of s){let c=Xbe(o,r,a);t=Qbe(c,t)}return t},Xbe=({transform:t,final:e,binary:r,writableObjectMode:n,readableObjectMode:i,preserveNewlines:s},o,a)=>{let c={};return[{transform:Gbe(n,a)},ND(r,o,n),kD(r,s,n,c),{transform:t,final:e},{transform:Hbe(i,a)},Vbe({binary:r,preserveNewlines:s,readableObjectMode:i,state:c})].filter(Boolean)};var ewe=(t,e)=>{for(let r of Rct(t))xct(t,r,e)},Rct=t=>new Set(Object.entries(t).filter(([,{direction:e}])=>e==="input").map(([e])=>Number(e))),xct=(t,e,r)=>{let{stdioItems:n}=t[e],i=n.filter(({contents:a})=>a!==void 0);if(i.length===0)return;if(e!==0){let[{type:a,optionName:c}]=i;throw new TypeError(`Only the \`stdin\` option, not \`${c}\`, can be ${Ul[a]} with synchronous methods.`)}let o=i.map(({contents:a})=>a).map(a=>Oct(a,n));r.input=ET(o)},Oct=(t,e)=>{let r=MD(t,e,"utf8",!0);return Pct(r),ET(r)},Pct=t=>{let e=t.find(r=>typeof r!="string"&&!Fr(r));if(e!==void 0)throw new TypeError(`The \`stdin\` option is invalid: when passing objects as input, a transform must be used to serialize them to strings or Uint8Arrays: ${e}.`)};import{writeFileSync as Nct,appendFileSync as Dct}from"fs";var $D=({stdioItems:t,encoding:e,verboseInfo:r,fdNumber:n})=>n!=="all"&&v_(r,n)&&!Qi.has(e)&&Ict(n)&&(t.some(({type:i,value:s})=>i==="native"&&Cct.has(s))||t.every(({type:i})=>Ns.has(i))),Ict=t=>t===1||t===2,Cct=new Set(["pipe","overlapped"]),twe=async(t,e,r,n)=>{for await(let i of t)kct(e)||nwe(i,r,n)},rwe=(t,e,r)=>{for(let n of t)nwe(n,e,r)},kct=t=>t._readableState.pipes.length>0,nwe=(t,e,r)=>{let n=ZN(t);za({type:"output",verboseMessage:n,fdNumber:e,verboseInfo:r})};var iwe=({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)=>Mct({result:c,fileDescriptors:t,fdNumber:u,state:s,outputFiles:o,isMaxBuffer:n,verboseInfo:i},r)),...s}},Mct=({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=sbe(t,s,d),p=tu(f),{stdioItems:h,objectMode:m}=e[r],_=$ct([p],h,c,n),{serializedResult:S,finalResult:E=S}=Lct({chunks:_,objectMode:m,encoding:c,lines:u,stripFinalNewline:l,fdNumber:r});Uct({serializedResult:S,fdNumber:r,state:n,verboseInfo:o,encoding:c,stdioItems:h,objectMode:m});let x=a[r]?E:void 0;try{return n.error===void 0&&Fct(S,h,i),x}catch(y){return n.error=y,x}},$ct=(t,e,r,n)=>{try{return MD(t,e,r,!1)}catch(i){return n.error=i,t}},Lct=({chunks:t,objectMode:e,encoding:r,lines:n,stripFinalNewline:i,fdNumber:s})=>{if(e)return{serializedResult:t};if(r==="buffer")return{serializedResult:ET(t)};let o=SSe(t,r);return n[s]?{serializedResult:o,finalResult:cY(o,!i[s],e)}:{serializedResult:o}},Uct=({serializedResult:t,fdNumber:e,state:r,verboseInfo:n,encoding:i,stdioItems:s,objectMode:o})=>{if(!$D({stdioItems:s,encoding:i,verboseInfo:n,fdNumber:e}))return;let a=cY(t,!1,o);try{rwe(a,e,n)}catch(c){r.error??=c}},Fct=(t,e,r)=>{for(let{path:n,append:i}of e.filter(({type:s})=>ID.has(s))){let s=typeof n=="string"?n:n.toString();i||r.has(s)?Dct(n,t):(r.add(s),Nct(n,t))}};var swe=([,t,e],r)=>{if(r.all)return t===void 0?e:e===void 0?t:Array.isArray(t)?Array.isArray(e)?[...t,...e]:[...t,iu(e,r,"all")]:Array.isArray(e)?[iu(t,r,"all"),...e]:Fr(t)&&Fr(e)?_K([t,e]):`${t}${e}`};import{once as fY}from"events";var owe=async(t,e)=>{let[r,n]=await zct(t);return e.isForcefullyTerminated??=!1,[r,n]},zct=async t=>{let[e,r]=await Promise.allSettled([fY(t,"spawn"),fY(t,"exit")]);return e.status==="rejected"?[]:r.status==="rejected"?awe(t):r.value},awe=async t=>{try{return await fY(t,"exit")}catch{return awe(t)}},cwe=async t=>{let[e,r]=await t;if(!jct(e,r)&&pY(e,r))throw new qo;return[e,r]},jct=(t,e)=>t===void 0&&e===void 0,pY=(t,e)=>t!==0||e!==null;var uwe=({error:t,status:e,signal:r,output:n},{maxBuffer:i})=>{let s=qct(t,e,r),o=s?.code==="ETIMEDOUT",a=ibe(s,n,i);return{resultError:s,exitCode:e,signal:r,timedOut:o,isMaxBuffer:a}},qct=(t,e,r)=>t!==void 0?t:pY(e,r)?new qo:void 0;var lwe=(t,e,r)=>{let{file:n,commandArguments:i,command:s,escapedCommand:o,startTime:a,verboseInfo:c,options:u,fileDescriptors:l}=Vct(t,e,r),d=Wct({file:n,commandArguments:i,options:u,command:s,escapedCommand:o,verboseInfo:c,fileDescriptors:l,startTime:a});return I_(d,c,u)},Vct=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=JN(t,e,r),a=Gct(r),{file:c,commandArguments:u,options:l}=yD(t,e,a);Hct(l);let d=zbe(l,o);return{file:c,commandArguments:u,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},Gct=t=>t.node&&!t.ipc?{...t,ipc:!1}:t,Hct=({ipc:t,ipcInput:e,detached:r,cancelSignal:n})=>{e&&LD("ipcInput"),t&&LD("ipc: true"),r&&LD("detached: true"),n&&LD("cancelSignal")},LD=t=>{throw new TypeError(`The "${t}" option cannot be used with synchronous methods.`)},Wct=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,verboseInfo:s,fileDescriptors:o,startTime:a})=>{let c=Kct({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}=uwe(c,r),{output:h,error:m=u}=iwe({fileDescriptors:o,syncResult:c,options:r,isMaxBuffer:p,verboseInfo:s}),_=h.map((E,x)=>iu(E,r,x)),S=iu(swe(h,r),r,"all");return Zct({error:m,exitCode:l,signal:d,timedOut:f,isMaxBuffer:p,stdio:_,all:S,options:r,command:n,escapedCommand:i,startTime:a})},Kct=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:s,startTime:o})=>{try{ewe(s,r);let a=Yct(r);return Bct(...SD(t,e,a))}catch(a){return P_({error:a,command:n,escapedCommand:i,fileDescriptors:s,options:r,startTime:o,isSync:!0})}},Yct=({encoding:t,maxBuffer:e,...r})=>({...r,encoding:"buffer",maxBuffer:RD(e)}),Zct=({error:t,exitCode:e,signal:r,timedOut:n,isMaxBuffer:i,stdio:s,all:o,options:a,command:c,escapedCommand:u,startTime:l})=>t===void 0?xD({command:c,escapedCommand:u,stdio:s,all:o,ipcOutput:[],options:a,startTime:l}):IT({error:t,command:c,escapedCommand:u,timedOut:n,isCanceled:!1,isGracefullyCanceled:!1,isMaxBuffer:i,isForcefullyTerminated:!1,exitCode:e,signal:r,stdio:s,all:o,ipcOutput:[],options:a,startTime:l,isSync:!0});import{setMaxListeners as Llt}from"events";import{spawn as Ult}from"child_process";import mwe from"process";import{once as hY,on as Qct}from"events";var dwe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0,filter:s}={})=>(w_({methodName:"getOneMessage",isSubprocess:r,ipc:n,isConnected:fD(t)}),Jct({anyProcess:t,channel:e,isSubprocess:r,filter:s,reference:i})),Jct=async({anyProcess:t,channel:e,isSubprocess:r,filter:n,reference:i})=>{cD(e,i);let s=Ll(t,e,r),o=new AbortController;try{return await Promise.race([Xct(s,n,o),eut(s,r,o),tut(s,r,o)])}catch(a){throw T_(t),a}finally{o.abort(),uD(e,i)}},Xct=async(t,e,{signal:r})=>{if(e===void 0){let[n]=await hY(t,"message",{signal:r});return n}for await(let[n]of Qct(t,"message",{signal:r}))if(e(n))return n},eut=async(t,e,{signal:r})=>{await hY(t,"disconnect",{signal:r}),Qve(e)},tut=async(t,e,{signal:r})=>{let[n]=await hY(t,"strict:error",{signal:r});throw sD(n,e)};import{once as pwe,on as rut}from"events";var hwe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0}={})=>mY({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:!r,reference:i}),mY=({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:i,reference:s})=>{w_({methodName:"getEachMessage",isSubprocess:r,ipc:n,isConnected:fD(t)}),cD(e,s);let o=Ll(t,e,r),a=new AbortController,c={};return nut(t,o,a),iut({ipcEmitter:o,isSubprocess:r,controller:a,state:c}),sut({anyProcess:t,channel:e,ipcEmitter:o,isSubprocess:r,shouldAwait:i,controller:a,state:c,reference:s})},nut=async(t,e,r)=>{try{await pwe(e,"disconnect",{signal:r.signal}),r.abort()}catch{}},iut=async({ipcEmitter:t,isSubprocess:e,controller:r,state:n})=>{try{let[i]=await pwe(t,"strict:error",{signal:r.signal});n.error=sD(i,e),r.abort()}catch{}},sut=async function*({anyProcess:t,channel:e,ipcEmitter:r,isSubprocess:n,shouldAwait:i,controller:s,state:o,reference:a}){try{for await(let[c]of rut(r,"message",{signal:s.signal}))fwe(o),yield c}catch{fwe(o)}finally{s.abort(),uD(e,a),n||T_(t),i&&await t}},fwe=({error:t})=>{if(t)throw t};var gwe=(t,{ipc:e})=>{Object.assign(t,ywe(t,!1,e))},_we=()=>{let t=mwe,e=!0,r=mwe.channel!==void 0;return{...ywe(t,e,r),getCancelSignal:TEe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})}},ywe=(t,e,r)=>({sendMessage:gD.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getOneMessage:dwe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getEachMessage:hwe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})});import{ChildProcess as out}from"child_process";import{PassThrough as aut,Readable as cut,Writable as uut,Duplex as lut}from"stream";var Swe=({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,verboseInfo:o})=>{sY(n);let a=new out;dut(a,n),Object.assign(a,{readable:fut,writable:put,duplex:hut});let c=P_({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,isSync:!1}),u=mut(c,o,i);return{subprocess:a,promise:u}},dut=(t,e)=>{let r=kT(),n=kT(),i=kT(),s=Array.from({length:e.length-3},kT),o=kT(),a=[r,n,i,...s];Object.assign(t,{stdin:r,stdout:n,stderr:i,all:o,stdio:a})},kT=()=>{let t=new aut;return t.end(),t},fut=()=>new cut({read(){}}),put=()=>new uut({write(){}}),hut=()=>new lut({read(){},write(){}}),mut=async(t,e,r)=>I_(t,e,r);import{createReadStream as vwe,createWriteStream as Ewe}from"fs";import{Buffer as gut}from"buffer";import{Readable as NT,Writable as _ut,Duplex as yut}from"stream";var wwe=(t,e)=>CD(Sut,t,e,!1),DT=({type:t,optionName:e})=>{throw new TypeError(`The \`${e}\` option cannot be ${Ul[t]}.`)},bwe={fileNumber:DT,generator:dY,asyncGenerator:dY,nodeStream:({value:t})=>({stream:t}),webTransform({value:{transform:t,writableObjectMode:e,readableObjectMode:r}}){let n=e||r;return{stream:yut.fromWeb(t,{objectMode:n})}},duplex:({value:{transform:t}})=>({stream:t}),native(){}},Sut={input:{...bwe,fileUrl:({value:t})=>({stream:vwe(t)}),filePath:({value:{file:t}})=>({stream:vwe(t)}),webStream:({value:t})=>({stream:NT.fromWeb(t)}),iterable:({value:t})=>({stream:NT.from(t)}),asyncIterable:({value:t})=>({stream:NT.from(t)}),string:({value:t})=>({stream:NT.from(t)}),uint8Array:({value:t})=>({stream:NT.from(gut.from(t))})},output:{...bwe,fileUrl:({value:t})=>({stream:Ewe(t)}),filePath:({value:{file:t,append:e}})=>({stream:Ewe(t,e?{flags:"a"}:{})}),webStream:({value:t})=>({stream:_ut.fromWeb(t)}),iterable:DT,asyncIterable:DT,string:DT,uint8Array:DT}};import{on as vut,once as Twe}from"events";import{PassThrough as Eut,getDefaultHighWaterMark as but}from"stream";import{finished as xwe}from"stream/promises";function Sp(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let i of t)_Y(i);let e=t.some(({readableObjectMode:i})=>i),r=wut(t,e),n=new gY({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return n}var wut=(t,e)=>{if(t.length===0)return but(e);let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},gY=class extends Eut{#e=new Set([]);#r=new Set([]);#t=new Set([]);#n;#s=Symbol("unpipe");#i=new WeakMap;add(e){if(_Y(e),this.#e.has(e))return;this.#e.add(e),this.#n??=Tut(this,this.#e,this.#s);let r=xut({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(_Y(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)}},Tut=async(t,e,r)=>{UD(t,Awe);let n=new AbortController;try{await Promise.race([Aut(t,n),Rut(t,e,r,n)])}finally{n.abort(),UD(t,-Awe)}},Aut=async(t,{signal:e})=>{try{await xwe(t,{signal:e,cleanup:!0})}catch(r){throw Owe(t,r),r}},Rut=async(t,e,r,{signal:n})=>{for await(let[i]of vut(t,"unpipe",{signal:n}))e.has(i)&&i.emit(r)},_Y=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},xut=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:s,unpipeEvent:o})=>{UD(t,Rwe);let a=new AbortController;try{await Promise.race([Out(s,e,a),Put({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:a}),Iut({stream:e,streams:r,ended:n,aborted:i,unpipeEvent:o,controller:a})])}finally{a.abort(),UD(t,-Rwe)}r.size>0&&r.size===n.size+i.size&&(n.size===0&&i.size>0?yY(t):Cut(t))},Out=async(t,e,{signal:r})=>{try{await t,r.aborted||yY(e)}catch(n){r.aborted||Owe(e,n)}},Put=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:s}})=>{try{await xwe(e,{signal:s,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(o){if(s.aborted||!r.has(e))return;Pwe(o)?i.add(e):Iwe(t,o)}},Iut=async({stream:t,streams:e,ended:r,aborted:n,unpipeEvent:i,controller:{signal:s}})=>{if(await Twe(t,i,{signal:s}),!t.readable)return Twe(s,"abort",{signal:s});e.delete(t),r.delete(t),n.delete(t)},Cut=t=>{t.writable&&t.end()},Owe=(t,e)=>{Pwe(e)?yY(t):Iwe(t,e)},Pwe=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",yY=t=>{(t.readable||t.writable)&&t.destroy()},Iwe=(t,e)=>{t.destroyed||(t.once("error",kut),t.destroy(e))},kut=()=>{},UD=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},Awe=2,Rwe=1;import{finished as Cwe}from"stream/promises";var k_=(t,e)=>{t.pipe(e),Nut(t,e),Dut(t,e)},Nut=async(t,e)=>{if(!(jo(t)||jo(e))){try{await Cwe(t,{cleanup:!0,readable:!0,writable:!1})}catch{}SY(e)}},SY=t=>{t.writable&&t.end()},Dut=async(t,e)=>{if(!(jo(t)||jo(e))){try{await Cwe(e,{cleanup:!0,readable:!1,writable:!0})}catch{}vY(t)}},vY=t=>{t.readable&&t.destroy()};var kwe=(t,e,r)=>{let n=new Map;for(let[i,{stdioItems:s,direction:o}]of Object.entries(e)){for(let{stream:a}of s.filter(({type:c})=>Ns.has(c)))Mut(t,a,o,i);for(let{stream:a}of s.filter(({type:c})=>!Ns.has(c)))Lut({subprocess:t,stream:a,direction:o,fdNumber:i,pipeGroups:n,controller:r})}for(let[i,s]of n.entries()){let o=s.length===1?s[0]:Sp(s);k_(o,i)}},Mut=(t,e,r,n)=>{r==="output"?k_(t.stdio[n],e):k_(e,t.stdio[n]);let i=$ut[n];i!==void 0&&(t[i]=e),t.stdio[n]=e},$ut=["stdin","stdout","stderr"],Lut=({subprocess:t,stream:e,direction:r,fdNumber:n,pipeGroups:i,controller:s})=>{if(e===void 0)return;Uut(e,s);let[o,a]=r==="output"?[e,t.stdio[n]]:[t.stdio[n],e],c=i.get(o)??[];i.set(o,[...c,a])},Uut=(t,{signal:e})=>{jo(t)&&mp(t,Fut,e)},Fut=2;import{addAbortListener as qut}from"events";var vp=[];vp.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&vp.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&vp.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var FD=t=>!!t&&typeof t=="object"&&typeof t.removeListener=="function"&&typeof t.emit=="function"&&typeof t.reallyExit=="function"&&typeof t.listeners=="function"&&typeof t.kill=="function"&&typeof t.pid=="number"&&typeof t.on=="function",EY=Symbol.for("signal-exit emitter"),bY=globalThis,zut=Object.defineProperty.bind(Object),wY=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(bY[EY])return bY[EY];zut(bY,EY,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(e,r){this.listeners[e].push(r)}removeListener(e,r){let n=this.listeners[e],i=n.indexOf(r);i!==-1&&(i===0&&n.length===1?n.length=0:n.splice(i,1))}emit(e,r,n){if(this.emitted[e])return!1;this.emitted[e]=!0;let i=!1;for(let s of this.listeners[e])i=s(r,n)===!0||i;return e==="exit"&&(i=this.emit("afterExit",r,n)||i),i}},zD=class{},jut=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),TY=class extends zD{onExit(){return()=>{}}load(){}unload(){}},AY=class extends zD{#e=RY.platform==="win32"?"SIGINT":"SIGHUP";#r=new wY;#t;#n;#s;#i={};#o=!1;constructor(e){super(),this.#t=e,this.#i={};for(let r of vp)this.#i[r]=()=>{let n=this.#t.listeners(r),{count:i}=this.#r,s=e;if(typeof s.__signal_exit_emitter__=="object"&&typeof s.__signal_exit_emitter__.count=="number"&&(i+=s.__signal_exit_emitter__.count),n.length===i){this.unload();let o=this.#r.emit("exit",null,r),a=r==="SIGHUP"?this.#e:r;o||e.kill(e.pid,a)}};this.#s=e.reallyExit,this.#n=e.emit}onExit(e,r){if(!FD(this.#t))return()=>{};this.#o===!1&&this.load();let n=r?.alwaysLast?"afterExit":"exit";return this.#r.on(n,e),()=>{this.#r.removeListener(n,e),this.#r.listeners.exit.length===0&&this.#r.listeners.afterExit.length===0&&this.unload()}}load(){if(!this.#o){this.#o=!0,this.#r.count+=1;for(let e of vp)try{let r=this.#i[e];r&&this.#t.on(e,r)}catch{}this.#t.emit=(e,...r)=>this.#c(e,...r),this.#t.reallyExit=e=>this.#a(e)}}unload(){this.#o&&(this.#o=!1,vp.forEach(e=>{let r=this.#i[e];if(!r)throw new Error("Listener not defined for signal: "+e);try{this.#t.removeListener(e,r)}catch{}}),this.#t.emit=this.#n,this.#t.reallyExit=this.#s,this.#r.count-=1)}#a(e){return FD(this.#t)?(this.#t.exitCode=e||0,this.#r.emit("exit",this.#t.exitCode,null),this.#s.call(this.#t,this.#t.exitCode)):0}#c(e,...r){let n=this.#n;if(e==="exit"&&FD(this.#t)){typeof r[0]=="number"&&(this.#t.exitCode=r[0]);let i=n.call(this.#t,e,...r);return this.#r.emit("exit",this.#t.exitCode,null),i}else return n.call(this.#t,e,...r)}},RY=globalThis.process,{onExit:Nwe,load:vir,unload:Eir}=jut(FD(RY)?new AY(RY):new TY);var Dwe=(t,{cleanup:e,detached:r},{signal:n})=>{if(!e||r)return;let i=Nwe(()=>{t.kill()});qut(n,()=>{i()})};var $we=({source:t,sourcePromise:e,boundOptions:r,createNested:n},...i)=>{let s=QN(),{destination:o,destinationStream:a,destinationError:c,from:u,unpipeSignal:l}=But(r,n,i),{sourceStream:d,sourceError:f}=Gut(t,u),{options:p,fileDescriptors:h}=qa.get(t);return{sourcePromise:e,sourceStream:d,sourceOptions:p,sourceError:f,destination:o,destinationStream:a,destinationError:c,unpipeSignal:l,fileDescriptors:h,startTime:s}},But=(t,e,r)=>{try{let{destination:n,pipeOptions:{from:i,to:s,unpipeSignal:o}={}}=Vut(t,e,...r),a=aD(n,s);return{destination:n,destinationStream:a,from:i,unpipeSignal:o}}catch(n){return{destinationError:n}}},Vut=(t,e,r,...n)=>{if(Array.isArray(r))return{destination:e(Mwe,t)(r,...n),pipeOptions:t};if(typeof r=="string"||r instanceof URL||mK(r)){if(Object.keys(t).length>0)throw new TypeError('Please use .pipe("file", ..., options) or .pipe(execa("file", ..., options)) instead of .pipe(options)("file", ...).');let[i,s,o]=jN(r,...n);return{destination:e(Mwe)(i,s,o),pipeOptions:o}}if(qa.has(r)){if(Object.keys(t).length>0)throw new TypeError("Please use .pipe(options)`command` or .pipe($(options)`command`) instead of .pipe(options)($`command`).");return{destination:r,pipeOptions:n[0]}}throw new TypeError(`The first argument must be a template string, an options object, or an Execa subprocess: ${r}`)},Mwe=({options:t})=>({options:{...t,stdin:"pipe",piped:!0}}),Gut=(t,e)=>{try{return{sourceStream:A_(t,e)}}catch(r){return{sourceError:r}}};var Uwe=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n,fileDescriptors:i,sourceOptions:s,startTime:o})=>{let a=Hut({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n});if(a!==void 0)throw xY({error:a,fileDescriptors:i,sourceOptions:s,startTime:o})},Hut=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n})=>{if(e!==void 0&&n!==void 0)return n;if(n!==void 0)return vY(t),n;if(e!==void 0)return SY(r),e},xY=({error:t,fileDescriptors:e,sourceOptions:r,startTime:n})=>P_({error:t,command:Lwe,escapedCommand:Lwe,fileDescriptors:e,options:r,startTime:n,isSync:!1}),Lwe="source.pipe(destination)";var Fwe=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 Wut}from"stream/promises";var zwe=(t,e,r)=>{let n=jD.has(e)?Yut(t,e):Kut(t,e);return mp(t,Qut,r.signal),mp(e,Jut,r.signal),Zut(e),n},Kut=(t,e)=>{let r=Sp([t]);return k_(r,e),jD.set(e,r),r},Yut=(t,e)=>{let r=jD.get(e);return r.add(t),r},Zut=async t=>{try{await Wut(t,{cleanup:!0,readable:!1,writable:!0})}catch{}jD.delete(t)},jD=new WeakMap,Qut=2,Jut=1;import{aborted as Xut}from"util";var jwe=(t,e)=>t===void 0?[]:[elt(t,e)],elt=async(t,{sourceStream:e,mergedStream:r,fileDescriptors:n,sourceOptions:i,startTime:s})=>{await Xut(t,e),await r.remove(e);let o=new Error("Pipe canceled by `unpipeSignal` option.");throw xY({error:o,fileDescriptors:n,sourceOptions:i,startTime:s})};var qD=(t,...e)=>{if(yr(e[0]))return qD.bind(void 0,{...t,boundOptions:{...t.boundOptions,...e[0]}});let{destination:r,...n}=$we(t,...e),i=tlt({...n,destination:r});return i.pipe=qD.bind(void 0,{...t,source:r,sourcePromise:i,boundOptions:{}}),i},tlt=async({sourcePromise:t,sourceStream:e,sourceOptions:r,sourceError:n,destination:i,destinationStream:s,destinationError:o,unpipeSignal:a,fileDescriptors:c,startTime:u})=>{let l=rlt(t,i);Uwe({sourceStream:e,sourceError:n,destinationStream:s,destinationError:o,fileDescriptors:c,sourceOptions:r,startTime:u});let d=new AbortController;try{let f=zwe(e,s,d);return await Promise.race([Fwe(l),...jwe(a,{sourceStream:e,mergedStream:f,sourceOptions:r,fileDescriptors:c,startTime:u})])}finally{d.abort()}},rlt=(t,e)=>Promise.allSettled([t,e]);import{setImmediate as ult}from"timers/promises";import{on as nlt}from"events";import{getDefaultHighWaterMark as ilt}from"stream";var BD=({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:n,encoding:i,preserveNewlines:s})=>{let o=new AbortController;return slt(e,o),Bwe({stream:t,controller:o,binary:r,shouldEncode:!t.readableObjectMode&&n,encoding:i,shouldSplit:!t.readableObjectMode,preserveNewlines:s})},slt=async(t,e)=>{try{await t}catch{}finally{e.abort()}},OY=({stream:t,onStreamEnd:e,lines:r,encoding:n,stripFinalNewline:i,allMixed:s})=>{let o=new AbortController;olt(e,o,t);let a=t.readableObjectMode&&!s;return Bwe({stream:t,controller:o,binary:n==="buffer",shouldEncode:!a,encoding:n,shouldSplit:!a&&r,preserveNewlines:!i})},olt=async(t,e,r)=>{try{await t}catch{r.destroy()}finally{e.abort()}},Bwe=({stream:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})=>{let a=nlt(t,"data",{signal:e.signal,highWaterMark:qwe,highWatermark:qwe});return alt({onStdoutChunk:a,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})},PY=ilt(!0),qwe=PY,alt=async function*({onStdoutChunk:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o}){let a=clt({binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o});try{for await(let[c]of t)yield*yp(c,a,0)}catch(c){if(!e.signal.aborted)throw c}finally{yield*CT(a)}},clt=({binary:t,shouldEncode:e,encoding:r,shouldSplit:n,preserveNewlines:i})=>[ND(t,r,!e),kD(t,i,!n,{})].filter(Boolean);var Vwe=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=llt({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:a,verboseInfo:u,streamInfo:l});if(!i){await Promise.all([dlt(t),d]);return}let f=oY(c,r),p=OY({stream:t,onStreamEnd:e,lines:o,encoding:n,stripFinalNewline:f,allMixed:a}),[h]=await Promise.all([flt({stream:t,iterable:p,fdNumber:r,encoding:n,maxBuffer:s,lines:o}),d]);return h},llt=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:i,verboseInfo:s,streamInfo:{fileDescriptors:o}})=>{if(!$D({stdioItems:o[r]?.stdioItems,encoding:n,verboseInfo:s,fdNumber:r}))return;let a=OY({stream:t,onStreamEnd:e,lines:!0,encoding:n,stripFinalNewline:!0,allMixed:i});await twe(a,t,r,s)},dlt=async t=>{await ult(),t.readableFlowing===null&&t.resume()},flt=async({stream:t,stream:{readableObjectMode:e},iterable:r,fdNumber:n,encoding:i,maxBuffer:s,lines:o})=>{try{return e||o?await wD(r,{maxBuffer:s}):i==="buffer"?new Uint8Array(await TD(r,{maxBuffer:s})):await O_(r,{maxBuffer:s})}catch(a){return Gwe(tbe({error:a,stream:t,readableObjectMode:e,lines:o,encoding:i,fdNumber:n}))}},IY=async t=>{try{return await t}catch(e){return Gwe(e)}},Gwe=({bufferedData:t})=>_Se(t)?new Uint8Array(t):t;import{finished as plt}from"stream/promises";var MT=async(t,e,r,{isSameDirection:n,stopOnExit:i=!1}={})=>{let s=hlt(t,r),o=new AbortController;try{await Promise.race([...i?[r.exitPromise]:[],plt(t,{cleanup:!0,signal:o.signal})])}catch(a){s.stdinCleanedUp||_lt(a,e,r,n)}finally{o.abort()}},hlt=(t,{originalStreams:[e],subprocess:r})=>{let n={stdinCleanedUp:!1};return t===e&&mlt(t,r,n),n},mlt=(t,e,r)=>{let{_destroy:n}=t;t._destroy=(...i)=>{glt(e,r),n.call(t,...i)}},glt=({exitCode:t,signalCode:e},r)=>{(t!==null||e!==null)&&(r.stdinCleanedUp=!0)},_lt=(t,e,r,n)=>{if(!ylt(t,e,r,n))throw t},ylt=(t,e,r,n=!0)=>r.propagating?Hwe(t)||VD(t):(r.propagating=!0,CY(r,e)===n?Hwe(t):VD(t)),CY=({fileDescriptors:t},e)=>e!=="all"&&t[e].direction==="input",VD=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",Hwe=t=>t?.code==="EPIPE";var Wwe=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>t.stdio.map((c,u)=>kY({stream:c,fdNumber:u,encoding:e,buffer:r[u],maxBuffer:n[u],lines:i[u],allMixed:!1,stripFinalNewline:s,verboseInfo:o,streamInfo:a})),kY=async({stream:t,fdNumber:e,encoding:r,buffer:n,maxBuffer:i,lines:s,allMixed:o,stripFinalNewline:a,verboseInfo:c,streamInfo:u})=>{if(!t)return;let l=MT(t,e,u);if(CY(u,e)){await l;return}let[d]=await Promise.all([Vwe({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 Kwe=({stdout:t,stderr:e},{all:r})=>r&&(t||e)?Sp([t,e].filter(Boolean)):void 0,Ywe=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>kY({...Slt(t,r),fdNumber:"all",encoding:e,maxBuffer:n[1]+n[2],lines:i[1]||i[2],allMixed:vlt(t),stripFinalNewline:s,verboseInfo:o,streamInfo:a}),Slt=({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}},vlt=({all:t,stdout:e,stderr:r})=>t&&e&&r&&e.readableObjectMode!==r.readableObjectMode;import{once as Elt}from"events";var Zwe=t=>v_(t,"ipc"),Qwe=(t,e)=>{let r=ZN(t);za({type:"ipc",verboseMessage:r,fdNumber:"ipc",verboseInfo:e})};var Jwe=async({subprocess:t,buffer:e,maxBuffer:r,ipc:n,ipcOutput:i,verboseInfo:s})=>{if(!n)return i;let o=Zwe(s),a=ru(e,"ipc"),c=ru(r,"ipc");for await(let u of mY({anyProcess:t,channel:t.channel,isSubprocess:!1,ipc:n,shouldAwait:!1,reference:!0}))a&&(rbe(t,i,c),i.push(u)),o&&Qwe(u,s);return i},Xwe=async(t,e)=>(await Promise.allSettled([t]),e);var eTe=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=owe(t,f),x={originalStreams:m,fileDescriptors:h,subprocess:t,exitPromise:E,propagating:!1},y=Wwe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:x}),b=Ywe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:x}),A=[],O=Jwe({subprocess:t,buffer:r,maxBuffer:n,ipc:l,ipcOutput:A,verboseInfo:p}),C=blt(m,t,x),I=wlt(h,x);try{return await Promise.race([Promise.all([{},cwe(E),Promise.all(y),b,O,DEe(t,d),...C,...I]),_,Tlt(t,S),...PEe(t,s,f,S),...Zve({subprocess:t,cancelSignal:o,gracefulCancel:a,context:f,controller:S}),...xEe({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=>IY(w))),IY(b),Xwe(O,A),Promise.allSettled(C),Promise.allSettled(I)])}},blt=(t,e,r)=>t.map((n,i)=>n===e.stdio[i]?void 0:MT(n,i,r)),wlt=(t,e)=>t.flatMap(({stdioItems:r},n)=>r.filter(({value:i,stream:s=i})=>Vo(s,{checkOpen:!1})&&!jo(s)).map(({type:i,value:s,stream:o=s})=>MT(o,n,e,{isSameDirection:Ns.has(i),stopOnExit:i==="native"}))),Tlt=async(t,{signal:e})=>{let[r]=await Elt(t,"error",{signal:e});throw r};var tTe=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),$T=(t,e,r)=>{let n=t[r];n.has(e)||n.set(e,[]);let i=n.get(e),s=ja();return i.push(s),{resolve:s.resolve.bind(s),promises:i}},N_=async({resolve:t,promises:e},r)=>{t();let[n]=await Promise.race([Promise.allSettled([!0,r]),Promise.all([!1,...e])]);return!n};import{Readable as Alt}from"stream";import{callbackify as Rlt}from"util";import{finished as rTe}from"stream/promises";var NY=async t=>{if(t!==void 0)try{await DY(t)}catch{}},nTe=async t=>{if(t!==void 0)try{await MY(t)}catch{}},DY=async t=>{await rTe(t,{cleanup:!0,readable:!1,writable:!0})},MY=async t=>{await rTe(t,{cleanup:!0,readable:!0,writable:!1})},GD=async(t,e)=>{if(await t,e)throw e},HD=(t,e,r)=>{r&&!VD(r)?t.destroy(r):e&&t.destroy()};var iTe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,binary:i=!0,preserveNewlines:s=!0}={})=>{let o=i||Qi.has(r),{subprocessStdout:a,waitReadableDestroy:c}=$Y(t,n,e),{readableEncoding:u,readableObjectMode:l,readableHighWaterMark:d}=LY(a,o),{read:f,onStdoutDataDone:p}=UY({subprocessStdout:a,subprocess:t,binary:o,encoding:r,preserveNewlines:s}),h=new Alt({read:f,destroy:Rlt(zY.bind(void 0,{subprocessStdout:a,subprocess:t,waitReadableDestroy:c})),highWaterMark:d,objectMode:l,encoding:u});return FY({subprocessStdout:a,onStdoutDataDone:p,readable:h,subprocess:t}),h},$Y=(t,e,r)=>{let n=A_(t,e),i=$T(r,n,"readableDestroy");return{subprocessStdout:n,waitReadableDestroy:i}},LY=({readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r},n)=>n?{readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r}:{readableEncoding:t,readableObjectMode:!0,readableHighWaterMark:PY},UY=({subprocessStdout:t,subprocess:e,binary:r,encoding:n,preserveNewlines:i})=>{let s=ja(),o=BD({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:!r,encoding:n,preserveNewlines:i});return{read(){xlt(this,o,s)},onStdoutDataDone:s}},xlt=async(t,e,r)=>{try{let{value:n,done:i}=await e.next();i?r.resolve():t.push(n)}catch{}},FY=async({subprocessStdout:t,onStdoutDataDone:e,readable:r,subprocess:n,subprocessStdin:i})=>{try{await MY(t),await n,await NY(i),await e,r.readable&&r.push(null)}catch(s){await NY(i),sTe(r,s)}},zY=async({subprocessStdout:t,subprocess:e,waitReadableDestroy:r},n)=>{await N_(r,e)&&(sTe(t,n),await GD(e,n))},sTe=(t,e)=>{HD(t,t.readable,e)};import{Writable as Olt}from"stream";import{callbackify as oTe}from"util";var aTe=({subprocess:t,concurrentStreams:e},{to:r}={})=>{let{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}=jY(t,r,e),o=new Olt({...qY(n,t,i),destroy:oTe(VY.bind(void 0,{subprocessStdin:n,subprocess:t,waitWritableFinal:i,waitWritableDestroy:s})),highWaterMark:n.writableHighWaterMark,objectMode:n.writableObjectMode});return BY(n,o),o},jY=(t,e,r)=>{let n=aD(t,e),i=$T(r,n,"writableFinal"),s=$T(r,n,"writableDestroy");return{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}},qY=(t,e,r)=>({write:Plt.bind(void 0,t),final:oTe(Ilt.bind(void 0,t,e,r))}),Plt=(t,e,r,n)=>{t.write(e,r)?n():t.once("drain",n)},Ilt=async(t,e,r)=>{await N_(r,e)&&(t.writable&&t.end(),await e)},BY=async(t,e,r)=>{try{await DY(t),e.writable&&e.end()}catch(n){await nTe(r),cTe(e,n)}},VY=async({subprocessStdin:t,subprocess:e,waitWritableFinal:r,waitWritableDestroy:n},i)=>{await N_(r,e),await N_(n,e)&&(cTe(t,i),await GD(e,i))},cTe=(t,e)=>{HD(t,t.writable,e)};import{Duplex as Clt}from"stream";import{callbackify as klt}from"util";var uTe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,to:i,binary:s=!0,preserveNewlines:o=!0}={})=>{let a=s||Qi.has(r),{subprocessStdout:c,waitReadableDestroy:u}=$Y(t,n,e),{subprocessStdin:l,waitWritableFinal:d,waitWritableDestroy:f}=jY(t,i,e),{readableEncoding:p,readableObjectMode:h,readableHighWaterMark:m}=LY(c,a),{read:_,onStdoutDataDone:S}=UY({subprocessStdout:c,subprocess:t,binary:a,encoding:r,preserveNewlines:o}),E=new Clt({read:_,...qY(l,t,d),destroy:klt(Nlt.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 FY({subprocessStdout:c,onStdoutDataDone:S,readable:E,subprocess:t,subprocessStdin:l}),BY(l,E,c),E},Nlt=async({subprocessStdout:t,subprocessStdin:e,subprocess:r,waitReadableDestroy:n,waitWritableFinal:i,waitWritableDestroy:s},o)=>{await Promise.all([zY({subprocessStdout:t,subprocess:r,waitReadableDestroy:n},o),VY({subprocessStdin:e,subprocess:r,waitWritableFinal:i,waitWritableDestroy:s},o)])};var GY=(t,e,{from:r,binary:n=!1,preserveNewlines:i=!1}={})=>{let s=n||Qi.has(e),o=A_(t,r),a=BD({subprocessStdout:o,subprocess:t,binary:s,shouldEncode:!0,encoding:e,preserveNewlines:i});return Dlt(a,o,t)},Dlt=async function*(t,e,r){try{yield*t}finally{e.readable&&e.destroy(),await r}};var lTe=(t,{encoding:e})=>{let r=tTe();t.readable=iTe.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.writable=aTe.bind(void 0,{subprocess:t,concurrentStreams:r}),t.duplex=uTe.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.iterable=GY.bind(void 0,t,e),t[Symbol.asyncIterator]=GY.bind(void 0,t,e,{})};var dTe=(t,e)=>{for(let[r,n]of $lt){let i=n.value.bind(e);Reflect.defineProperty(t,r,{...n,value:i})}},Mlt=(async()=>{})().constructor.prototype,$lt=["then","catch","finally"].map(t=>[t,Reflect.getOwnPropertyDescriptor(Mlt,t)]);var fTe=(t,e,r,n)=>{let{file:i,commandArguments:s,command:o,escapedCommand:a,startTime:c,verboseInfo:u,options:l,fileDescriptors:d}=Flt(t,e,r),{subprocess:f,promise:p}=jlt({file:i,commandArguments:s,options:l,startTime:c,verboseInfo:u,command:o,escapedCommand:a,fileDescriptors:d});return f.pipe=qD.bind(void 0,{source:f,sourcePromise:p,boundOptions:{},createNested:n}),dTe(f,p),qa.set(f,{options:l,fileDescriptors:d}),f},Flt=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=JN(t,e,r),{file:a,commandArguments:c,options:u}=yD(t,e,r),l=zlt(u),d=wwe(l,o);return{file:a,commandArguments:c,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},zlt=({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}},jlt=({file:t,commandArguments:e,options:r,startTime:n,verboseInfo:i,command:s,escapedCommand:o,fileDescriptors:a})=>{let c;try{c=Ult(...SD(t,e,r))}catch(h){return Swe({error:h,command:s,escapedCommand:o,fileDescriptors:a,options:r,startTime:n,verboseInfo:i})}let u=new AbortController;Llt(Number.POSITIVE_INFINITY,u.signal);let l=[...c.stdio];kwe(c,a,u),Dwe(c,r,u);let d={},f=ja();c.kill=Kve.bind(void 0,{kill:c.kill.bind(c),options:r,onInternalError:f,context:d,controller:u}),c.all=Kwe(c,r),lTe(c,r),gwe(c,r);let p=qlt({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}},qlt=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 eTe({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,b)=>iu(y,e,b)),E=iu(m,e,"all"),x=Blt({errorInfo:d,exitCode:f,signal:p,stdio:S,all:E,ipcOutput:_,context:c,options:e,command:o,escapedCommand:a,startTime:r});return I_(x,n,e)},Blt=({errorInfo:t,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:s,context:o,options:a,command:c,escapedCommand:u,startTime:l})=>"error"in t?IT({error:t.error,command:c,escapedCommand:u,timedOut:o.terminationReason==="timeout",isCanceled:o.terminationReason==="cancel"||o.terminationReason==="gracefulCancel",isGracefullyCanceled:o.terminationReason==="gracefulCancel",isMaxBuffer:t.error instanceof Ba,isForcefullyTerminated:o.isForcefullyTerminated,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:s,options:a,startTime:l,isSync:!1}):xD({command:c,escapedCommand:u,stdio:n,all:i,ipcOutput:s,options:a,startTime:l});var WD=(t,e)=>{let r=Object.fromEntries(Object.entries(e).map(([n,i])=>[n,Vlt(n,t[n],i)]));return{...t,...r}},Vlt=(t,e,r)=>Glt.has(t)&&yr(e)&&yr(r)?{...e,...r}:r,Glt=new Set(["env",...EK]);var Fl=(t,e,r,n)=>{let i=(o,a,c)=>Fl(o,a,r,c),s=(...o)=>Hlt({mapArguments:t,deepOptions:r,boundOptions:e,setBoundExeca:n,createNested:i},...o);return n!==void 0&&n(s,i,e),s},Hlt=({mapArguments:t,deepOptions:e={},boundOptions:r={},setBoundExeca:n,createNested:i},s,...o)=>{if(yr(s))return i(t,WD(r,s),n);let{file:a,commandArguments:c,options:u,isSync:l}=Wlt({mapArguments:t,firstArgument:s,nextArguments:o,deepOptions:e,boundOptions:r});return l?lwe(a,c,u):fTe(a,c,u,i)},Wlt=({mapArguments:t,firstArgument:e,nextArguments:r,deepOptions:n,boundOptions:i})=>{let s=wSe(e)?TSe(e,r):[e,...r],[o,a,c]=jN(...s),u=WD(WD(n,i),c),{file:l=o,commandArguments:d=a,options:f=u,isSync:p=!1}=t({file:o,commandArguments:a,options:u});return{file:l,commandArguments:d,options:f,isSync:p}};var pTe=({file:t,commandArguments:e})=>mTe(t,e),hTe=({file:t,commandArguments:e})=>({...mTe(t,e),isSync:!0}),mTe=(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]=Klt(t);return{file:r,commandArguments:n}},Klt=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(Ylt)){let i=r.at(-1);i&&i.endsWith("\\")?r[r.length-1]=`${i.slice(0,-1)} ${n}`:r.push(n)}return r},Ylt=/ +/g;var gTe=(t,e,r)=>{t.sync=e(Zlt,r),t.s=t.sync},_Te=({options:t})=>yTe(t),Zlt=({options:t})=>({...yTe(t),isSync:!0}),yTe=t=>({options:{...Qlt(t),...t}}),Qlt=({input:t,inputFile:e,stdio:r})=>t===void 0&&e===void 0&&r===void 0?{stdin:"inherit"}:{},STe={preferLocal:!0};var vTe=Fl(()=>({})),dar=Fl(()=>({isSync:!0})),ETe=Fl(pTe),far=Fl(hTe),par=Fl(CEe),har=Fl(_Te,{},STe,gTe),{sendMessage:mar,getOneMessage:gar,getEachMessage:_ar,getCancelSignal:yar}=_we();var bTe=!1,wTe,Jlt=t=>{wTe??=t},TTe=t=>{bTe=!0,Jlt(t)},kn=()=>bTe,su=()=>wTe,ATe=t=>{switch(t){case"SIGTERM":case"SIGINT":return t;case void 0:return"interrupted";default:return}};var LT=null,RTe=t=>(LT&<.destroy(),LT=new Ds({totalAllowedTime:t}),LT),xTe=()=>LT;var Ds=class{constructor({totalAllowedTime:e}){this.withStageTimer=async(e,r,n,{interruptible:i=!0}={})=>{if(this.isTimeExpired())throw new Error(`${e} stage did not complete in the allowed time. Time has already expired.`);if(i&&kn())throw new Error(`Aborting ${e} stage \u2014 shutting down`);let s=this.onTimesUp(()=>{throw new Error(`${e} stage did not complete in the allowed time.`)}),o=null,a=null;n!==void 0&&(a=new Promise((l,d)=>{o=setTimeout(()=>{d(new Error(`${e} stage exceeded its maximum duration of ${n}ms`))},n)}));let c=Date.now(),u="success";try{return await IC({stage:e},async()=>a?await Promise.race([r(),a]):await r())}catch(l){throw u="failure",l}finally{K.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 OTe={name:"@netlify/agent-runner-cli",type:"module",version:"1.200.2-bug.3",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 rdt=edt(import.meta.url),ndt=ou.dirname(rdt),idt=tdt(import.meta.url),D_=re("shell"),HY=new Set,PTe={preferLocal:!0},yt=(t,e,r)=>{let[n,i]=sdt(e,r),s={...PTe,...i},o=vTe(t,n,s);CTe(o,s),DTe(o);let a=r?.idleTimeout;return a&&a>0&&NTe(o,a),o},ITe=(t,e)=>{let r={...PTe,...e},n=ETe(t,r);return CTe(n,r),DTe(n),e?.idleTimeout&&e.idleTimeout>0&&NTe(n,e.idleTimeout),n},sdt=function(t,e){return Array.isArray(t)?[t,e]:typeof t=="object"&&t!==null?[[],t]:[[],void 0]},CTe=(t,e)=>{if(e.stdio!==void 0||e.stdout!==void 0||e.stderr!==void 0||Ga.env.NETLIFY_LOCAL_QUIET==="true")return;if(Ga.env.NETLIFY_MASK_LOGS!=="false"){t.stdout?.pipe(new Rb).pipe(Ga.stdout),t.stderr?.pipe(new Rb).pipe(Ga.stderr);return}t.stdout?.pipe(Ga.stdout),t.stderr?.pipe(Ga.stderr)},WY=(t,e="SIGTERM")=>{try{return t.pid&&!t.killed?(Ga.kill(-t.pid,e),D_.log(`Killed process ${t.pid} with signal ${e}`),!0):!1}catch(r){return D_.error("Error killing process:",r),!1}},kTe=t=>WY(t,"SIGKILL"),NTe=(t,e)=>{let r=null,n=()=>{D_.log(`Process ${t.pid} killed due to idle timeout (no output for ${e}ms)`),WY(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(D_.log(`Force killing idle process ${t.pid}`),kTe(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)},DTe=t=>{HY.add(t);let e=xTe();if(e){let r=e.onTimesUp(()=>{D_.log(`Global timer expired, killing process ${t.pid}`),WY(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(D_.log(`Force killing process ${t.pid} after timeout`),kTe(t))},5e3)});t.on("exit",()=>{HY.delete(t),r()}),t.on("error",()=>{HY.delete(t),r()})}};function Ha(t,e){if(!Ga.env.NETLIFY_LOCAL_MODE)try{let i=idt.resolve(OTe.name),s=ou.dirname(i);for(;s!==ou.dirname(s);){let o=ou.dirname(s);if(ou.basename(o)==="node_modules"){let a=ou.join(o,".bin",e);if(KD.existsSync(a))return a;break}s=o}}catch(i){console.error("Could not resolve package.json",i)}if(Ga.env.NODE_PATH){let i=ou.join(Ga.env.NODE_PATH,".bin",e);if(KD.existsSync(i))return i}let r=ou.join(t,"node_modules",".bin",e);if(KD.existsSync(r))return r;let n=ou.join(ndt,"..","node_modules",".bin",e);if(KD.existsSync(n))return n}var MTe=re("repo"),zTe="runner-diffs-",KY=t=>`${zTe}${t}-`,jTe=async t=>{let e=YD.tmpdir(),r;try{r=await Ho.readdir(e)}catch{return}await Promise.all(r.filter(n=>n.startsWith(zTe)&&!n.startsWith(KY(t))).map(n=>Ho.rm(Go.join(e,n),{recursive:!0,force:!0}).catch(()=>{})))},$Te=async t=>{let e=odt("sha256");for await(let r of adt(t))e.update(r);return e.digest("hex")},LTe=async(t,e)=>t.size===e.size&&await $Te(t.path)===await $Te(e.path),qTe=/.. (.+)?\.log$/,cdt=[qTe],udt=1,UTe=t=>{let e=t.split(`
|
|
388
|
-
`).reduce((r,n)=>{if(!n)return r;let[i,s,,...o]=n,a=o.join(""),c=i.trim(),u=s.trim();return r[a]?r[a].change=u:r[a]={filePath:a,stage:c,change:u},r},{});return Object.values(e)},ldt=t=>t instanceof Error&&String(t.stderr??"").includes("No such remote"),ddt=t=>{let e=t instanceof Error?t.message:String(t),r=String(t?.stderr??"").trim();return _i(r?`${e}: ${r}`:e)},fdt={stdin:"pipe",stdout:"pipe",stderr:"pipe",stripFinalNewline:!1},FTe=500,UT=class extends Error{constructor(r,n){super(n instanceof Error?n.message:String(n));this.step=r;this.cause=n}},xi=class{constructor(e=process.cwd()){this.cwd=e}getRoot(){return this.root??=this.run(["rev-parse","--show-toplevel"],{stdout:"pipe"}).then(({stdout:e})=>String(e).trim()),this.root}async restorePausedWork(e){let r="restore";try{let n=await this.restorePausedFiles(e);return r="stage",await this.stageBuildSetup(),await this.unstageFiles(n.changedFiles,{cwd:await this.getRoot()}),{rewrittenFileCount:n.rewrittenFileCount}}catch(n){throw new UT(r,n)}}run(e,r={}){return yt("git",e,{cwd:this.cwd,...r,env:{...r.env,NETLIFY_INTERNAL_GIT:"1"}})}async
|
|
387
|
+
if (condition) { yield value; }`)};import{Buffer as gct}from"buffer";import{StringDecoder as _ct}from"string_decoder";var ND=(t,e,r)=>{if(r)return;if(t)return{transform:yct.bind(void 0,new TextEncoder)};let n=new _ct(e);return{transform:Sct.bind(void 0,n),final:vct.bind(void 0,n)}},yct=function*(t,e){gct.isBuffer(e)?yield tu(e):typeof e=="string"?yield t.encode(e):yield e},Sct=function*(t,e){yield Fr(e)?t.write(e):e},vct=function*(t){let e=t.end();e!==""&&(yield e)};import{callbackify as Kbe}from"util";var uY=Kbe(async(t,e,r,n)=>{e.currentIterable=t(...r);try{for await(let i of e.currentIterable)n.push(i)}finally{delete e.currentIterable}}),DD=async function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=bct}=e[r];for await(let i of n(t))yield*DD(i,e,r+1)},Ybe=async function*(t){for(let[e,{final:r}]of Object.entries(t))yield*Ect(r,Number(e),t)},Ect=async function*(t,e,r){if(t!==void 0)for await(let n of t())yield*DD(n,r,e+1)},Zbe=Kbe(async({currentIterable:t},e)=>{if(t!==void 0){await(e?t.throw(e):t.return());return}if(e)throw e}),bct=function*(t){yield t};var lY=(t,e,r,n)=>{try{for(let i of t(...e))r.push(i);n()}catch(i){n(i)}},Qbe=(t,e)=>[...e.flatMap(r=>[...yp(r,t,0)]),...CT(t)],yp=function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=Tct}=e[r];for(let i of n(t))yield*yp(i,e,r+1)},CT=function*(t){for(let[e,{final:r}]of Object.entries(t))yield*wct(r,Number(e),t)},wct=function*(t,e,r){if(t!==void 0)for(let n of t())yield*yp(n,r,e+1)},Tct=function*(t){yield t};var dY=({value:t,value:{transform:e,final:r,writableObjectMode:n,readableObjectMode:i},optionName:s},{encoding:o})=>{let a={},c=Xbe(t,o,s),u=_p(e),l=_p(r),d=u?uY.bind(void 0,DD,a):lY.bind(void 0,yp),f=u||l?uY.bind(void 0,Ybe,a):lY.bind(void 0,CT),p=u||l?Zbe.bind(void 0,a):void 0;return{stream:new Act({writableObjectMode:n,writableHighWaterMark:Jbe(n),readableObjectMode:i,readableHighWaterMark:Jbe(i),transform(m,_,S){d([m,c,0],this,S)},flush(m){f([c],this,m)},destroy:p})}},MD=(t,e,r,n)=>{let i=e.filter(({type:o})=>o==="generator"),s=n?i.reverse():i;for(let{value:o,optionName:a}of s){let c=Xbe(o,r,a);t=Qbe(c,t)}return t},Xbe=({transform:t,final:e,binary:r,writableObjectMode:n,readableObjectMode:i,preserveNewlines:s},o,a)=>{let c={};return[{transform:Gbe(n,a)},ND(r,o,n),kD(r,s,n,c),{transform:t,final:e},{transform:Hbe(i,a)},Vbe({binary:r,preserveNewlines:s,readableObjectMode:i,state:c})].filter(Boolean)};var ewe=(t,e)=>{for(let r of Rct(t))xct(t,r,e)},Rct=t=>new Set(Object.entries(t).filter(([,{direction:e}])=>e==="input").map(([e])=>Number(e))),xct=(t,e,r)=>{let{stdioItems:n}=t[e],i=n.filter(({contents:a})=>a!==void 0);if(i.length===0)return;if(e!==0){let[{type:a,optionName:c}]=i;throw new TypeError(`Only the \`stdin\` option, not \`${c}\`, can be ${Ul[a]} with synchronous methods.`)}let o=i.map(({contents:a})=>a).map(a=>Oct(a,n));r.input=ET(o)},Oct=(t,e)=>{let r=MD(t,e,"utf8",!0);return Pct(r),ET(r)},Pct=t=>{let e=t.find(r=>typeof r!="string"&&!Fr(r));if(e!==void 0)throw new TypeError(`The \`stdin\` option is invalid: when passing objects as input, a transform must be used to serialize them to strings or Uint8Arrays: ${e}.`)};import{writeFileSync as Nct,appendFileSync as Dct}from"fs";var $D=({stdioItems:t,encoding:e,verboseInfo:r,fdNumber:n})=>n!=="all"&&v_(r,n)&&!Qi.has(e)&&Ict(n)&&(t.some(({type:i,value:s})=>i==="native"&&Cct.has(s))||t.every(({type:i})=>Ns.has(i))),Ict=t=>t===1||t===2,Cct=new Set(["pipe","overlapped"]),twe=async(t,e,r,n)=>{for await(let i of t)kct(e)||nwe(i,r,n)},rwe=(t,e,r)=>{for(let n of t)nwe(n,e,r)},kct=t=>t._readableState.pipes.length>0,nwe=(t,e,r)=>{let n=ZN(t);za({type:"output",verboseMessage:n,fdNumber:e,verboseInfo:r})};var iwe=({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)=>Mct({result:c,fileDescriptors:t,fdNumber:u,state:s,outputFiles:o,isMaxBuffer:n,verboseInfo:i},r)),...s}},Mct=({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=sbe(t,s,d),p=tu(f),{stdioItems:h,objectMode:m}=e[r],_=$ct([p],h,c,n),{serializedResult:S,finalResult:E=S}=Lct({chunks:_,objectMode:m,encoding:c,lines:u,stripFinalNewline:l,fdNumber:r});Uct({serializedResult:S,fdNumber:r,state:n,verboseInfo:o,encoding:c,stdioItems:h,objectMode:m});let x=a[r]?E:void 0;try{return n.error===void 0&&Fct(S,h,i),x}catch(y){return n.error=y,x}},$ct=(t,e,r,n)=>{try{return MD(t,e,r,!1)}catch(i){return n.error=i,t}},Lct=({chunks:t,objectMode:e,encoding:r,lines:n,stripFinalNewline:i,fdNumber:s})=>{if(e)return{serializedResult:t};if(r==="buffer")return{serializedResult:ET(t)};let o=SSe(t,r);return n[s]?{serializedResult:o,finalResult:cY(o,!i[s],e)}:{serializedResult:o}},Uct=({serializedResult:t,fdNumber:e,state:r,verboseInfo:n,encoding:i,stdioItems:s,objectMode:o})=>{if(!$D({stdioItems:s,encoding:i,verboseInfo:n,fdNumber:e}))return;let a=cY(t,!1,o);try{rwe(a,e,n)}catch(c){r.error??=c}},Fct=(t,e,r)=>{for(let{path:n,append:i}of e.filter(({type:s})=>ID.has(s))){let s=typeof n=="string"?n:n.toString();i||r.has(s)?Dct(n,t):(r.add(s),Nct(n,t))}};var swe=([,t,e],r)=>{if(r.all)return t===void 0?e:e===void 0?t:Array.isArray(t)?Array.isArray(e)?[...t,...e]:[...t,iu(e,r,"all")]:Array.isArray(e)?[iu(t,r,"all"),...e]:Fr(t)&&Fr(e)?_K([t,e]):`${t}${e}`};import{once as fY}from"events";var owe=async(t,e)=>{let[r,n]=await zct(t);return e.isForcefullyTerminated??=!1,[r,n]},zct=async t=>{let[e,r]=await Promise.allSettled([fY(t,"spawn"),fY(t,"exit")]);return e.status==="rejected"?[]:r.status==="rejected"?awe(t):r.value},awe=async t=>{try{return await fY(t,"exit")}catch{return awe(t)}},cwe=async t=>{let[e,r]=await t;if(!jct(e,r)&&pY(e,r))throw new qo;return[e,r]},jct=(t,e)=>t===void 0&&e===void 0,pY=(t,e)=>t!==0||e!==null;var uwe=({error:t,status:e,signal:r,output:n},{maxBuffer:i})=>{let s=qct(t,e,r),o=s?.code==="ETIMEDOUT",a=ibe(s,n,i);return{resultError:s,exitCode:e,signal:r,timedOut:o,isMaxBuffer:a}},qct=(t,e,r)=>t!==void 0?t:pY(e,r)?new qo:void 0;var lwe=(t,e,r)=>{let{file:n,commandArguments:i,command:s,escapedCommand:o,startTime:a,verboseInfo:c,options:u,fileDescriptors:l}=Vct(t,e,r),d=Wct({file:n,commandArguments:i,options:u,command:s,escapedCommand:o,verboseInfo:c,fileDescriptors:l,startTime:a});return I_(d,c,u)},Vct=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=JN(t,e,r),a=Gct(r),{file:c,commandArguments:u,options:l}=yD(t,e,a);Hct(l);let d=zbe(l,o);return{file:c,commandArguments:u,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},Gct=t=>t.node&&!t.ipc?{...t,ipc:!1}:t,Hct=({ipc:t,ipcInput:e,detached:r,cancelSignal:n})=>{e&&LD("ipcInput"),t&&LD("ipc: true"),r&&LD("detached: true"),n&&LD("cancelSignal")},LD=t=>{throw new TypeError(`The "${t}" option cannot be used with synchronous methods.`)},Wct=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,verboseInfo:s,fileDescriptors:o,startTime:a})=>{let c=Kct({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}=uwe(c,r),{output:h,error:m=u}=iwe({fileDescriptors:o,syncResult:c,options:r,isMaxBuffer:p,verboseInfo:s}),_=h.map((E,x)=>iu(E,r,x)),S=iu(swe(h,r),r,"all");return Zct({error:m,exitCode:l,signal:d,timedOut:f,isMaxBuffer:p,stdio:_,all:S,options:r,command:n,escapedCommand:i,startTime:a})},Kct=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:s,startTime:o})=>{try{ewe(s,r);let a=Yct(r);return Bct(...SD(t,e,a))}catch(a){return P_({error:a,command:n,escapedCommand:i,fileDescriptors:s,options:r,startTime:o,isSync:!0})}},Yct=({encoding:t,maxBuffer:e,...r})=>({...r,encoding:"buffer",maxBuffer:RD(e)}),Zct=({error:t,exitCode:e,signal:r,timedOut:n,isMaxBuffer:i,stdio:s,all:o,options:a,command:c,escapedCommand:u,startTime:l})=>t===void 0?xD({command:c,escapedCommand:u,stdio:s,all:o,ipcOutput:[],options:a,startTime:l}):IT({error:t,command:c,escapedCommand:u,timedOut:n,isCanceled:!1,isGracefullyCanceled:!1,isMaxBuffer:i,isForcefullyTerminated:!1,exitCode:e,signal:r,stdio:s,all:o,ipcOutput:[],options:a,startTime:l,isSync:!0});import{setMaxListeners as Llt}from"events";import{spawn as Ult}from"child_process";import mwe from"process";import{once as hY,on as Qct}from"events";var dwe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0,filter:s}={})=>(w_({methodName:"getOneMessage",isSubprocess:r,ipc:n,isConnected:fD(t)}),Jct({anyProcess:t,channel:e,isSubprocess:r,filter:s,reference:i})),Jct=async({anyProcess:t,channel:e,isSubprocess:r,filter:n,reference:i})=>{cD(e,i);let s=Ll(t,e,r),o=new AbortController;try{return await Promise.race([Xct(s,n,o),eut(s,r,o),tut(s,r,o)])}catch(a){throw T_(t),a}finally{o.abort(),uD(e,i)}},Xct=async(t,e,{signal:r})=>{if(e===void 0){let[n]=await hY(t,"message",{signal:r});return n}for await(let[n]of Qct(t,"message",{signal:r}))if(e(n))return n},eut=async(t,e,{signal:r})=>{await hY(t,"disconnect",{signal:r}),Qve(e)},tut=async(t,e,{signal:r})=>{let[n]=await hY(t,"strict:error",{signal:r});throw sD(n,e)};import{once as pwe,on as rut}from"events";var hwe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0}={})=>mY({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:!r,reference:i}),mY=({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:i,reference:s})=>{w_({methodName:"getEachMessage",isSubprocess:r,ipc:n,isConnected:fD(t)}),cD(e,s);let o=Ll(t,e,r),a=new AbortController,c={};return nut(t,o,a),iut({ipcEmitter:o,isSubprocess:r,controller:a,state:c}),sut({anyProcess:t,channel:e,ipcEmitter:o,isSubprocess:r,shouldAwait:i,controller:a,state:c,reference:s})},nut=async(t,e,r)=>{try{await pwe(e,"disconnect",{signal:r.signal}),r.abort()}catch{}},iut=async({ipcEmitter:t,isSubprocess:e,controller:r,state:n})=>{try{let[i]=await pwe(t,"strict:error",{signal:r.signal});n.error=sD(i,e),r.abort()}catch{}},sut=async function*({anyProcess:t,channel:e,ipcEmitter:r,isSubprocess:n,shouldAwait:i,controller:s,state:o,reference:a}){try{for await(let[c]of rut(r,"message",{signal:s.signal}))fwe(o),yield c}catch{fwe(o)}finally{s.abort(),uD(e,a),n||T_(t),i&&await t}},fwe=({error:t})=>{if(t)throw t};var gwe=(t,{ipc:e})=>{Object.assign(t,ywe(t,!1,e))},_we=()=>{let t=mwe,e=!0,r=mwe.channel!==void 0;return{...ywe(t,e,r),getCancelSignal:TEe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})}},ywe=(t,e,r)=>({sendMessage:gD.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getOneMessage:dwe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getEachMessage:hwe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})});import{ChildProcess as out}from"child_process";import{PassThrough as aut,Readable as cut,Writable as uut,Duplex as lut}from"stream";var Swe=({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,verboseInfo:o})=>{sY(n);let a=new out;dut(a,n),Object.assign(a,{readable:fut,writable:put,duplex:hut});let c=P_({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,isSync:!1}),u=mut(c,o,i);return{subprocess:a,promise:u}},dut=(t,e)=>{let r=kT(),n=kT(),i=kT(),s=Array.from({length:e.length-3},kT),o=kT(),a=[r,n,i,...s];Object.assign(t,{stdin:r,stdout:n,stderr:i,all:o,stdio:a})},kT=()=>{let t=new aut;return t.end(),t},fut=()=>new cut({read(){}}),put=()=>new uut({write(){}}),hut=()=>new lut({read(){},write(){}}),mut=async(t,e,r)=>I_(t,e,r);import{createReadStream as vwe,createWriteStream as Ewe}from"fs";import{Buffer as gut}from"buffer";import{Readable as NT,Writable as _ut,Duplex as yut}from"stream";var wwe=(t,e)=>CD(Sut,t,e,!1),DT=({type:t,optionName:e})=>{throw new TypeError(`The \`${e}\` option cannot be ${Ul[t]}.`)},bwe={fileNumber:DT,generator:dY,asyncGenerator:dY,nodeStream:({value:t})=>({stream:t}),webTransform({value:{transform:t,writableObjectMode:e,readableObjectMode:r}}){let n=e||r;return{stream:yut.fromWeb(t,{objectMode:n})}},duplex:({value:{transform:t}})=>({stream:t}),native(){}},Sut={input:{...bwe,fileUrl:({value:t})=>({stream:vwe(t)}),filePath:({value:{file:t}})=>({stream:vwe(t)}),webStream:({value:t})=>({stream:NT.fromWeb(t)}),iterable:({value:t})=>({stream:NT.from(t)}),asyncIterable:({value:t})=>({stream:NT.from(t)}),string:({value:t})=>({stream:NT.from(t)}),uint8Array:({value:t})=>({stream:NT.from(gut.from(t))})},output:{...bwe,fileUrl:({value:t})=>({stream:Ewe(t)}),filePath:({value:{file:t,append:e}})=>({stream:Ewe(t,e?{flags:"a"}:{})}),webStream:({value:t})=>({stream:_ut.fromWeb(t)}),iterable:DT,asyncIterable:DT,string:DT,uint8Array:DT}};import{on as vut,once as Twe}from"events";import{PassThrough as Eut,getDefaultHighWaterMark as but}from"stream";import{finished as xwe}from"stream/promises";function Sp(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let i of t)_Y(i);let e=t.some(({readableObjectMode:i})=>i),r=wut(t,e),n=new gY({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return n}var wut=(t,e)=>{if(t.length===0)return but(e);let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},gY=class extends Eut{#e=new Set([]);#r=new Set([]);#t=new Set([]);#n;#s=Symbol("unpipe");#i=new WeakMap;add(e){if(_Y(e),this.#e.has(e))return;this.#e.add(e),this.#n??=Tut(this,this.#e,this.#s);let r=xut({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(_Y(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)}},Tut=async(t,e,r)=>{UD(t,Awe);let n=new AbortController;try{await Promise.race([Aut(t,n),Rut(t,e,r,n)])}finally{n.abort(),UD(t,-Awe)}},Aut=async(t,{signal:e})=>{try{await xwe(t,{signal:e,cleanup:!0})}catch(r){throw Owe(t,r),r}},Rut=async(t,e,r,{signal:n})=>{for await(let[i]of vut(t,"unpipe",{signal:n}))e.has(i)&&i.emit(r)},_Y=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},xut=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:s,unpipeEvent:o})=>{UD(t,Rwe);let a=new AbortController;try{await Promise.race([Out(s,e,a),Put({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:a}),Iut({stream:e,streams:r,ended:n,aborted:i,unpipeEvent:o,controller:a})])}finally{a.abort(),UD(t,-Rwe)}r.size>0&&r.size===n.size+i.size&&(n.size===0&&i.size>0?yY(t):Cut(t))},Out=async(t,e,{signal:r})=>{try{await t,r.aborted||yY(e)}catch(n){r.aborted||Owe(e,n)}},Put=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:s}})=>{try{await xwe(e,{signal:s,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(o){if(s.aborted||!r.has(e))return;Pwe(o)?i.add(e):Iwe(t,o)}},Iut=async({stream:t,streams:e,ended:r,aborted:n,unpipeEvent:i,controller:{signal:s}})=>{if(await Twe(t,i,{signal:s}),!t.readable)return Twe(s,"abort",{signal:s});e.delete(t),r.delete(t),n.delete(t)},Cut=t=>{t.writable&&t.end()},Owe=(t,e)=>{Pwe(e)?yY(t):Iwe(t,e)},Pwe=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",yY=t=>{(t.readable||t.writable)&&t.destroy()},Iwe=(t,e)=>{t.destroyed||(t.once("error",kut),t.destroy(e))},kut=()=>{},UD=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},Awe=2,Rwe=1;import{finished as Cwe}from"stream/promises";var k_=(t,e)=>{t.pipe(e),Nut(t,e),Dut(t,e)},Nut=async(t,e)=>{if(!(jo(t)||jo(e))){try{await Cwe(t,{cleanup:!0,readable:!0,writable:!1})}catch{}SY(e)}},SY=t=>{t.writable&&t.end()},Dut=async(t,e)=>{if(!(jo(t)||jo(e))){try{await Cwe(e,{cleanup:!0,readable:!1,writable:!0})}catch{}vY(t)}},vY=t=>{t.readable&&t.destroy()};var kwe=(t,e,r)=>{let n=new Map;for(let[i,{stdioItems:s,direction:o}]of Object.entries(e)){for(let{stream:a}of s.filter(({type:c})=>Ns.has(c)))Mut(t,a,o,i);for(let{stream:a}of s.filter(({type:c})=>!Ns.has(c)))Lut({subprocess:t,stream:a,direction:o,fdNumber:i,pipeGroups:n,controller:r})}for(let[i,s]of n.entries()){let o=s.length===1?s[0]:Sp(s);k_(o,i)}},Mut=(t,e,r,n)=>{r==="output"?k_(t.stdio[n],e):k_(e,t.stdio[n]);let i=$ut[n];i!==void 0&&(t[i]=e),t.stdio[n]=e},$ut=["stdin","stdout","stderr"],Lut=({subprocess:t,stream:e,direction:r,fdNumber:n,pipeGroups:i,controller:s})=>{if(e===void 0)return;Uut(e,s);let[o,a]=r==="output"?[e,t.stdio[n]]:[t.stdio[n],e],c=i.get(o)??[];i.set(o,[...c,a])},Uut=(t,{signal:e})=>{jo(t)&&mp(t,Fut,e)},Fut=2;import{addAbortListener as qut}from"events";var vp=[];vp.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&vp.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&vp.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var FD=t=>!!t&&typeof t=="object"&&typeof t.removeListener=="function"&&typeof t.emit=="function"&&typeof t.reallyExit=="function"&&typeof t.listeners=="function"&&typeof t.kill=="function"&&typeof t.pid=="number"&&typeof t.on=="function",EY=Symbol.for("signal-exit emitter"),bY=globalThis,zut=Object.defineProperty.bind(Object),wY=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(bY[EY])return bY[EY];zut(bY,EY,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(e,r){this.listeners[e].push(r)}removeListener(e,r){let n=this.listeners[e],i=n.indexOf(r);i!==-1&&(i===0&&n.length===1?n.length=0:n.splice(i,1))}emit(e,r,n){if(this.emitted[e])return!1;this.emitted[e]=!0;let i=!1;for(let s of this.listeners[e])i=s(r,n)===!0||i;return e==="exit"&&(i=this.emit("afterExit",r,n)||i),i}},zD=class{},jut=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),TY=class extends zD{onExit(){return()=>{}}load(){}unload(){}},AY=class extends zD{#e=RY.platform==="win32"?"SIGINT":"SIGHUP";#r=new wY;#t;#n;#s;#i={};#o=!1;constructor(e){super(),this.#t=e,this.#i={};for(let r of vp)this.#i[r]=()=>{let n=this.#t.listeners(r),{count:i}=this.#r,s=e;if(typeof s.__signal_exit_emitter__=="object"&&typeof s.__signal_exit_emitter__.count=="number"&&(i+=s.__signal_exit_emitter__.count),n.length===i){this.unload();let o=this.#r.emit("exit",null,r),a=r==="SIGHUP"?this.#e:r;o||e.kill(e.pid,a)}};this.#s=e.reallyExit,this.#n=e.emit}onExit(e,r){if(!FD(this.#t))return()=>{};this.#o===!1&&this.load();let n=r?.alwaysLast?"afterExit":"exit";return this.#r.on(n,e),()=>{this.#r.removeListener(n,e),this.#r.listeners.exit.length===0&&this.#r.listeners.afterExit.length===0&&this.unload()}}load(){if(!this.#o){this.#o=!0,this.#r.count+=1;for(let e of vp)try{let r=this.#i[e];r&&this.#t.on(e,r)}catch{}this.#t.emit=(e,...r)=>this.#c(e,...r),this.#t.reallyExit=e=>this.#a(e)}}unload(){this.#o&&(this.#o=!1,vp.forEach(e=>{let r=this.#i[e];if(!r)throw new Error("Listener not defined for signal: "+e);try{this.#t.removeListener(e,r)}catch{}}),this.#t.emit=this.#n,this.#t.reallyExit=this.#s,this.#r.count-=1)}#a(e){return FD(this.#t)?(this.#t.exitCode=e||0,this.#r.emit("exit",this.#t.exitCode,null),this.#s.call(this.#t,this.#t.exitCode)):0}#c(e,...r){let n=this.#n;if(e==="exit"&&FD(this.#t)){typeof r[0]=="number"&&(this.#t.exitCode=r[0]);let i=n.call(this.#t,e,...r);return this.#r.emit("exit",this.#t.exitCode,null),i}else return n.call(this.#t,e,...r)}},RY=globalThis.process,{onExit:Nwe,load:vir,unload:Eir}=jut(FD(RY)?new AY(RY):new TY);var Dwe=(t,{cleanup:e,detached:r},{signal:n})=>{if(!e||r)return;let i=Nwe(()=>{t.kill()});qut(n,()=>{i()})};var $we=({source:t,sourcePromise:e,boundOptions:r,createNested:n},...i)=>{let s=QN(),{destination:o,destinationStream:a,destinationError:c,from:u,unpipeSignal:l}=But(r,n,i),{sourceStream:d,sourceError:f}=Gut(t,u),{options:p,fileDescriptors:h}=qa.get(t);return{sourcePromise:e,sourceStream:d,sourceOptions:p,sourceError:f,destination:o,destinationStream:a,destinationError:c,unpipeSignal:l,fileDescriptors:h,startTime:s}},But=(t,e,r)=>{try{let{destination:n,pipeOptions:{from:i,to:s,unpipeSignal:o}={}}=Vut(t,e,...r),a=aD(n,s);return{destination:n,destinationStream:a,from:i,unpipeSignal:o}}catch(n){return{destinationError:n}}},Vut=(t,e,r,...n)=>{if(Array.isArray(r))return{destination:e(Mwe,t)(r,...n),pipeOptions:t};if(typeof r=="string"||r instanceof URL||mK(r)){if(Object.keys(t).length>0)throw new TypeError('Please use .pipe("file", ..., options) or .pipe(execa("file", ..., options)) instead of .pipe(options)("file", ...).');let[i,s,o]=jN(r,...n);return{destination:e(Mwe)(i,s,o),pipeOptions:o}}if(qa.has(r)){if(Object.keys(t).length>0)throw new TypeError("Please use .pipe(options)`command` or .pipe($(options)`command`) instead of .pipe(options)($`command`).");return{destination:r,pipeOptions:n[0]}}throw new TypeError(`The first argument must be a template string, an options object, or an Execa subprocess: ${r}`)},Mwe=({options:t})=>({options:{...t,stdin:"pipe",piped:!0}}),Gut=(t,e)=>{try{return{sourceStream:A_(t,e)}}catch(r){return{sourceError:r}}};var Uwe=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n,fileDescriptors:i,sourceOptions:s,startTime:o})=>{let a=Hut({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n});if(a!==void 0)throw xY({error:a,fileDescriptors:i,sourceOptions:s,startTime:o})},Hut=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n})=>{if(e!==void 0&&n!==void 0)return n;if(n!==void 0)return vY(t),n;if(e!==void 0)return SY(r),e},xY=({error:t,fileDescriptors:e,sourceOptions:r,startTime:n})=>P_({error:t,command:Lwe,escapedCommand:Lwe,fileDescriptors:e,options:r,startTime:n,isSync:!1}),Lwe="source.pipe(destination)";var Fwe=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 Wut}from"stream/promises";var zwe=(t,e,r)=>{let n=jD.has(e)?Yut(t,e):Kut(t,e);return mp(t,Qut,r.signal),mp(e,Jut,r.signal),Zut(e),n},Kut=(t,e)=>{let r=Sp([t]);return k_(r,e),jD.set(e,r),r},Yut=(t,e)=>{let r=jD.get(e);return r.add(t),r},Zut=async t=>{try{await Wut(t,{cleanup:!0,readable:!1,writable:!0})}catch{}jD.delete(t)},jD=new WeakMap,Qut=2,Jut=1;import{aborted as Xut}from"util";var jwe=(t,e)=>t===void 0?[]:[elt(t,e)],elt=async(t,{sourceStream:e,mergedStream:r,fileDescriptors:n,sourceOptions:i,startTime:s})=>{await Xut(t,e),await r.remove(e);let o=new Error("Pipe canceled by `unpipeSignal` option.");throw xY({error:o,fileDescriptors:n,sourceOptions:i,startTime:s})};var qD=(t,...e)=>{if(yr(e[0]))return qD.bind(void 0,{...t,boundOptions:{...t.boundOptions,...e[0]}});let{destination:r,...n}=$we(t,...e),i=tlt({...n,destination:r});return i.pipe=qD.bind(void 0,{...t,source:r,sourcePromise:i,boundOptions:{}}),i},tlt=async({sourcePromise:t,sourceStream:e,sourceOptions:r,sourceError:n,destination:i,destinationStream:s,destinationError:o,unpipeSignal:a,fileDescriptors:c,startTime:u})=>{let l=rlt(t,i);Uwe({sourceStream:e,sourceError:n,destinationStream:s,destinationError:o,fileDescriptors:c,sourceOptions:r,startTime:u});let d=new AbortController;try{let f=zwe(e,s,d);return await Promise.race([Fwe(l),...jwe(a,{sourceStream:e,mergedStream:f,sourceOptions:r,fileDescriptors:c,startTime:u})])}finally{d.abort()}},rlt=(t,e)=>Promise.allSettled([t,e]);import{setImmediate as ult}from"timers/promises";import{on as nlt}from"events";import{getDefaultHighWaterMark as ilt}from"stream";var BD=({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:n,encoding:i,preserveNewlines:s})=>{let o=new AbortController;return slt(e,o),Bwe({stream:t,controller:o,binary:r,shouldEncode:!t.readableObjectMode&&n,encoding:i,shouldSplit:!t.readableObjectMode,preserveNewlines:s})},slt=async(t,e)=>{try{await t}catch{}finally{e.abort()}},OY=({stream:t,onStreamEnd:e,lines:r,encoding:n,stripFinalNewline:i,allMixed:s})=>{let o=new AbortController;olt(e,o,t);let a=t.readableObjectMode&&!s;return Bwe({stream:t,controller:o,binary:n==="buffer",shouldEncode:!a,encoding:n,shouldSplit:!a&&r,preserveNewlines:!i})},olt=async(t,e,r)=>{try{await t}catch{r.destroy()}finally{e.abort()}},Bwe=({stream:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})=>{let a=nlt(t,"data",{signal:e.signal,highWaterMark:qwe,highWatermark:qwe});return alt({onStdoutChunk:a,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})},PY=ilt(!0),qwe=PY,alt=async function*({onStdoutChunk:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o}){let a=clt({binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o});try{for await(let[c]of t)yield*yp(c,a,0)}catch(c){if(!e.signal.aborted)throw c}finally{yield*CT(a)}},clt=({binary:t,shouldEncode:e,encoding:r,shouldSplit:n,preserveNewlines:i})=>[ND(t,r,!e),kD(t,i,!n,{})].filter(Boolean);var Vwe=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=llt({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:a,verboseInfo:u,streamInfo:l});if(!i){await Promise.all([dlt(t),d]);return}let f=oY(c,r),p=OY({stream:t,onStreamEnd:e,lines:o,encoding:n,stripFinalNewline:f,allMixed:a}),[h]=await Promise.all([flt({stream:t,iterable:p,fdNumber:r,encoding:n,maxBuffer:s,lines:o}),d]);return h},llt=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:i,verboseInfo:s,streamInfo:{fileDescriptors:o}})=>{if(!$D({stdioItems:o[r]?.stdioItems,encoding:n,verboseInfo:s,fdNumber:r}))return;let a=OY({stream:t,onStreamEnd:e,lines:!0,encoding:n,stripFinalNewline:!0,allMixed:i});await twe(a,t,r,s)},dlt=async t=>{await ult(),t.readableFlowing===null&&t.resume()},flt=async({stream:t,stream:{readableObjectMode:e},iterable:r,fdNumber:n,encoding:i,maxBuffer:s,lines:o})=>{try{return e||o?await wD(r,{maxBuffer:s}):i==="buffer"?new Uint8Array(await TD(r,{maxBuffer:s})):await O_(r,{maxBuffer:s})}catch(a){return Gwe(tbe({error:a,stream:t,readableObjectMode:e,lines:o,encoding:i,fdNumber:n}))}},IY=async t=>{try{return await t}catch(e){return Gwe(e)}},Gwe=({bufferedData:t})=>_Se(t)?new Uint8Array(t):t;import{finished as plt}from"stream/promises";var MT=async(t,e,r,{isSameDirection:n,stopOnExit:i=!1}={})=>{let s=hlt(t,r),o=new AbortController;try{await Promise.race([...i?[r.exitPromise]:[],plt(t,{cleanup:!0,signal:o.signal})])}catch(a){s.stdinCleanedUp||_lt(a,e,r,n)}finally{o.abort()}},hlt=(t,{originalStreams:[e],subprocess:r})=>{let n={stdinCleanedUp:!1};return t===e&&mlt(t,r,n),n},mlt=(t,e,r)=>{let{_destroy:n}=t;t._destroy=(...i)=>{glt(e,r),n.call(t,...i)}},glt=({exitCode:t,signalCode:e},r)=>{(t!==null||e!==null)&&(r.stdinCleanedUp=!0)},_lt=(t,e,r,n)=>{if(!ylt(t,e,r,n))throw t},ylt=(t,e,r,n=!0)=>r.propagating?Hwe(t)||VD(t):(r.propagating=!0,CY(r,e)===n?Hwe(t):VD(t)),CY=({fileDescriptors:t},e)=>e!=="all"&&t[e].direction==="input",VD=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",Hwe=t=>t?.code==="EPIPE";var Wwe=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>t.stdio.map((c,u)=>kY({stream:c,fdNumber:u,encoding:e,buffer:r[u],maxBuffer:n[u],lines:i[u],allMixed:!1,stripFinalNewline:s,verboseInfo:o,streamInfo:a})),kY=async({stream:t,fdNumber:e,encoding:r,buffer:n,maxBuffer:i,lines:s,allMixed:o,stripFinalNewline:a,verboseInfo:c,streamInfo:u})=>{if(!t)return;let l=MT(t,e,u);if(CY(u,e)){await l;return}let[d]=await Promise.all([Vwe({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 Kwe=({stdout:t,stderr:e},{all:r})=>r&&(t||e)?Sp([t,e].filter(Boolean)):void 0,Ywe=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>kY({...Slt(t,r),fdNumber:"all",encoding:e,maxBuffer:n[1]+n[2],lines:i[1]||i[2],allMixed:vlt(t),stripFinalNewline:s,verboseInfo:o,streamInfo:a}),Slt=({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}},vlt=({all:t,stdout:e,stderr:r})=>t&&e&&r&&e.readableObjectMode!==r.readableObjectMode;import{once as Elt}from"events";var Zwe=t=>v_(t,"ipc"),Qwe=(t,e)=>{let r=ZN(t);za({type:"ipc",verboseMessage:r,fdNumber:"ipc",verboseInfo:e})};var Jwe=async({subprocess:t,buffer:e,maxBuffer:r,ipc:n,ipcOutput:i,verboseInfo:s})=>{if(!n)return i;let o=Zwe(s),a=ru(e,"ipc"),c=ru(r,"ipc");for await(let u of mY({anyProcess:t,channel:t.channel,isSubprocess:!1,ipc:n,shouldAwait:!1,reference:!0}))a&&(rbe(t,i,c),i.push(u)),o&&Qwe(u,s);return i},Xwe=async(t,e)=>(await Promise.allSettled([t]),e);var eTe=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=owe(t,f),x={originalStreams:m,fileDescriptors:h,subprocess:t,exitPromise:E,propagating:!1},y=Wwe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:x}),b=Ywe({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:x}),A=[],O=Jwe({subprocess:t,buffer:r,maxBuffer:n,ipc:l,ipcOutput:A,verboseInfo:p}),C=blt(m,t,x),I=wlt(h,x);try{return await Promise.race([Promise.all([{},cwe(E),Promise.all(y),b,O,DEe(t,d),...C,...I]),_,Tlt(t,S),...PEe(t,s,f,S),...Zve({subprocess:t,cancelSignal:o,gracefulCancel:a,context:f,controller:S}),...xEe({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=>IY(w))),IY(b),Xwe(O,A),Promise.allSettled(C),Promise.allSettled(I)])}},blt=(t,e,r)=>t.map((n,i)=>n===e.stdio[i]?void 0:MT(n,i,r)),wlt=(t,e)=>t.flatMap(({stdioItems:r},n)=>r.filter(({value:i,stream:s=i})=>Vo(s,{checkOpen:!1})&&!jo(s)).map(({type:i,value:s,stream:o=s})=>MT(o,n,e,{isSameDirection:Ns.has(i),stopOnExit:i==="native"}))),Tlt=async(t,{signal:e})=>{let[r]=await Elt(t,"error",{signal:e});throw r};var tTe=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),$T=(t,e,r)=>{let n=t[r];n.has(e)||n.set(e,[]);let i=n.get(e),s=ja();return i.push(s),{resolve:s.resolve.bind(s),promises:i}},N_=async({resolve:t,promises:e},r)=>{t();let[n]=await Promise.race([Promise.allSettled([!0,r]),Promise.all([!1,...e])]);return!n};import{Readable as Alt}from"stream";import{callbackify as Rlt}from"util";import{finished as rTe}from"stream/promises";var NY=async t=>{if(t!==void 0)try{await DY(t)}catch{}},nTe=async t=>{if(t!==void 0)try{await MY(t)}catch{}},DY=async t=>{await rTe(t,{cleanup:!0,readable:!1,writable:!0})},MY=async t=>{await rTe(t,{cleanup:!0,readable:!0,writable:!1})},GD=async(t,e)=>{if(await t,e)throw e},HD=(t,e,r)=>{r&&!VD(r)?t.destroy(r):e&&t.destroy()};var iTe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,binary:i=!0,preserveNewlines:s=!0}={})=>{let o=i||Qi.has(r),{subprocessStdout:a,waitReadableDestroy:c}=$Y(t,n,e),{readableEncoding:u,readableObjectMode:l,readableHighWaterMark:d}=LY(a,o),{read:f,onStdoutDataDone:p}=UY({subprocessStdout:a,subprocess:t,binary:o,encoding:r,preserveNewlines:s}),h=new Alt({read:f,destroy:Rlt(zY.bind(void 0,{subprocessStdout:a,subprocess:t,waitReadableDestroy:c})),highWaterMark:d,objectMode:l,encoding:u});return FY({subprocessStdout:a,onStdoutDataDone:p,readable:h,subprocess:t}),h},$Y=(t,e,r)=>{let n=A_(t,e),i=$T(r,n,"readableDestroy");return{subprocessStdout:n,waitReadableDestroy:i}},LY=({readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r},n)=>n?{readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r}:{readableEncoding:t,readableObjectMode:!0,readableHighWaterMark:PY},UY=({subprocessStdout:t,subprocess:e,binary:r,encoding:n,preserveNewlines:i})=>{let s=ja(),o=BD({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:!r,encoding:n,preserveNewlines:i});return{read(){xlt(this,o,s)},onStdoutDataDone:s}},xlt=async(t,e,r)=>{try{let{value:n,done:i}=await e.next();i?r.resolve():t.push(n)}catch{}},FY=async({subprocessStdout:t,onStdoutDataDone:e,readable:r,subprocess:n,subprocessStdin:i})=>{try{await MY(t),await n,await NY(i),await e,r.readable&&r.push(null)}catch(s){await NY(i),sTe(r,s)}},zY=async({subprocessStdout:t,subprocess:e,waitReadableDestroy:r},n)=>{await N_(r,e)&&(sTe(t,n),await GD(e,n))},sTe=(t,e)=>{HD(t,t.readable,e)};import{Writable as Olt}from"stream";import{callbackify as oTe}from"util";var aTe=({subprocess:t,concurrentStreams:e},{to:r}={})=>{let{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}=jY(t,r,e),o=new Olt({...qY(n,t,i),destroy:oTe(VY.bind(void 0,{subprocessStdin:n,subprocess:t,waitWritableFinal:i,waitWritableDestroy:s})),highWaterMark:n.writableHighWaterMark,objectMode:n.writableObjectMode});return BY(n,o),o},jY=(t,e,r)=>{let n=aD(t,e),i=$T(r,n,"writableFinal"),s=$T(r,n,"writableDestroy");return{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}},qY=(t,e,r)=>({write:Plt.bind(void 0,t),final:oTe(Ilt.bind(void 0,t,e,r))}),Plt=(t,e,r,n)=>{t.write(e,r)?n():t.once("drain",n)},Ilt=async(t,e,r)=>{await N_(r,e)&&(t.writable&&t.end(),await e)},BY=async(t,e,r)=>{try{await DY(t),e.writable&&e.end()}catch(n){await nTe(r),cTe(e,n)}},VY=async({subprocessStdin:t,subprocess:e,waitWritableFinal:r,waitWritableDestroy:n},i)=>{await N_(r,e),await N_(n,e)&&(cTe(t,i),await GD(e,i))},cTe=(t,e)=>{HD(t,t.writable,e)};import{Duplex as Clt}from"stream";import{callbackify as klt}from"util";var uTe=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,to:i,binary:s=!0,preserveNewlines:o=!0}={})=>{let a=s||Qi.has(r),{subprocessStdout:c,waitReadableDestroy:u}=$Y(t,n,e),{subprocessStdin:l,waitWritableFinal:d,waitWritableDestroy:f}=jY(t,i,e),{readableEncoding:p,readableObjectMode:h,readableHighWaterMark:m}=LY(c,a),{read:_,onStdoutDataDone:S}=UY({subprocessStdout:c,subprocess:t,binary:a,encoding:r,preserveNewlines:o}),E=new Clt({read:_,...qY(l,t,d),destroy:klt(Nlt.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 FY({subprocessStdout:c,onStdoutDataDone:S,readable:E,subprocess:t,subprocessStdin:l}),BY(l,E,c),E},Nlt=async({subprocessStdout:t,subprocessStdin:e,subprocess:r,waitReadableDestroy:n,waitWritableFinal:i,waitWritableDestroy:s},o)=>{await Promise.all([zY({subprocessStdout:t,subprocess:r,waitReadableDestroy:n},o),VY({subprocessStdin:e,subprocess:r,waitWritableFinal:i,waitWritableDestroy:s},o)])};var GY=(t,e,{from:r,binary:n=!1,preserveNewlines:i=!1}={})=>{let s=n||Qi.has(e),o=A_(t,r),a=BD({subprocessStdout:o,subprocess:t,binary:s,shouldEncode:!0,encoding:e,preserveNewlines:i});return Dlt(a,o,t)},Dlt=async function*(t,e,r){try{yield*t}finally{e.readable&&e.destroy(),await r}};var lTe=(t,{encoding:e})=>{let r=tTe();t.readable=iTe.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.writable=aTe.bind(void 0,{subprocess:t,concurrentStreams:r}),t.duplex=uTe.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.iterable=GY.bind(void 0,t,e),t[Symbol.asyncIterator]=GY.bind(void 0,t,e,{})};var dTe=(t,e)=>{for(let[r,n]of $lt){let i=n.value.bind(e);Reflect.defineProperty(t,r,{...n,value:i})}},Mlt=(async()=>{})().constructor.prototype,$lt=["then","catch","finally"].map(t=>[t,Reflect.getOwnPropertyDescriptor(Mlt,t)]);var fTe=(t,e,r,n)=>{let{file:i,commandArguments:s,command:o,escapedCommand:a,startTime:c,verboseInfo:u,options:l,fileDescriptors:d}=Flt(t,e,r),{subprocess:f,promise:p}=jlt({file:i,commandArguments:s,options:l,startTime:c,verboseInfo:u,command:o,escapedCommand:a,fileDescriptors:d});return f.pipe=qD.bind(void 0,{source:f,sourcePromise:p,boundOptions:{},createNested:n}),dTe(f,p),qa.set(f,{options:l,fileDescriptors:d}),f},Flt=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=JN(t,e,r),{file:a,commandArguments:c,options:u}=yD(t,e,r),l=zlt(u),d=wwe(l,o);return{file:a,commandArguments:c,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},zlt=({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}},jlt=({file:t,commandArguments:e,options:r,startTime:n,verboseInfo:i,command:s,escapedCommand:o,fileDescriptors:a})=>{let c;try{c=Ult(...SD(t,e,r))}catch(h){return Swe({error:h,command:s,escapedCommand:o,fileDescriptors:a,options:r,startTime:n,verboseInfo:i})}let u=new AbortController;Llt(Number.POSITIVE_INFINITY,u.signal);let l=[...c.stdio];kwe(c,a,u),Dwe(c,r,u);let d={},f=ja();c.kill=Kve.bind(void 0,{kill:c.kill.bind(c),options:r,onInternalError:f,context:d,controller:u}),c.all=Kwe(c,r),lTe(c,r),gwe(c,r);let p=qlt({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}},qlt=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 eTe({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,b)=>iu(y,e,b)),E=iu(m,e,"all"),x=Blt({errorInfo:d,exitCode:f,signal:p,stdio:S,all:E,ipcOutput:_,context:c,options:e,command:o,escapedCommand:a,startTime:r});return I_(x,n,e)},Blt=({errorInfo:t,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:s,context:o,options:a,command:c,escapedCommand:u,startTime:l})=>"error"in t?IT({error:t.error,command:c,escapedCommand:u,timedOut:o.terminationReason==="timeout",isCanceled:o.terminationReason==="cancel"||o.terminationReason==="gracefulCancel",isGracefullyCanceled:o.terminationReason==="gracefulCancel",isMaxBuffer:t.error instanceof Ba,isForcefullyTerminated:o.isForcefullyTerminated,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:s,options:a,startTime:l,isSync:!1}):xD({command:c,escapedCommand:u,stdio:n,all:i,ipcOutput:s,options:a,startTime:l});var WD=(t,e)=>{let r=Object.fromEntries(Object.entries(e).map(([n,i])=>[n,Vlt(n,t[n],i)]));return{...t,...r}},Vlt=(t,e,r)=>Glt.has(t)&&yr(e)&&yr(r)?{...e,...r}:r,Glt=new Set(["env",...EK]);var Fl=(t,e,r,n)=>{let i=(o,a,c)=>Fl(o,a,r,c),s=(...o)=>Hlt({mapArguments:t,deepOptions:r,boundOptions:e,setBoundExeca:n,createNested:i},...o);return n!==void 0&&n(s,i,e),s},Hlt=({mapArguments:t,deepOptions:e={},boundOptions:r={},setBoundExeca:n,createNested:i},s,...o)=>{if(yr(s))return i(t,WD(r,s),n);let{file:a,commandArguments:c,options:u,isSync:l}=Wlt({mapArguments:t,firstArgument:s,nextArguments:o,deepOptions:e,boundOptions:r});return l?lwe(a,c,u):fTe(a,c,u,i)},Wlt=({mapArguments:t,firstArgument:e,nextArguments:r,deepOptions:n,boundOptions:i})=>{let s=wSe(e)?TSe(e,r):[e,...r],[o,a,c]=jN(...s),u=WD(WD(n,i),c),{file:l=o,commandArguments:d=a,options:f=u,isSync:p=!1}=t({file:o,commandArguments:a,options:u});return{file:l,commandArguments:d,options:f,isSync:p}};var pTe=({file:t,commandArguments:e})=>mTe(t,e),hTe=({file:t,commandArguments:e})=>({...mTe(t,e),isSync:!0}),mTe=(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]=Klt(t);return{file:r,commandArguments:n}},Klt=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(Ylt)){let i=r.at(-1);i&&i.endsWith("\\")?r[r.length-1]=`${i.slice(0,-1)} ${n}`:r.push(n)}return r},Ylt=/ +/g;var gTe=(t,e,r)=>{t.sync=e(Zlt,r),t.s=t.sync},_Te=({options:t})=>yTe(t),Zlt=({options:t})=>({...yTe(t),isSync:!0}),yTe=t=>({options:{...Qlt(t),...t}}),Qlt=({input:t,inputFile:e,stdio:r})=>t===void 0&&e===void 0&&r===void 0?{stdin:"inherit"}:{},STe={preferLocal:!0};var vTe=Fl(()=>({})),dar=Fl(()=>({isSync:!0})),ETe=Fl(pTe),far=Fl(hTe),par=Fl(CEe),har=Fl(_Te,{},STe,gTe),{sendMessage:mar,getOneMessage:gar,getEachMessage:_ar,getCancelSignal:yar}=_we();var bTe=!1,wTe,Jlt=t=>{wTe??=t},TTe=t=>{bTe=!0,Jlt(t)},kn=()=>bTe,su=()=>wTe,ATe=t=>{switch(t){case"SIGTERM":case"SIGINT":return t;case void 0:return"interrupted";default:return}};var LT=null,RTe=t=>(LT&<.destroy(),LT=new Ds({totalAllowedTime:t}),LT),xTe=()=>LT;var Ds=class{constructor({totalAllowedTime:e}){this.withStageTimer=async(e,r,n,{interruptible:i=!0}={})=>{if(this.isTimeExpired())throw new Error(`${e} stage did not complete in the allowed time. Time has already expired.`);if(i&&kn())throw new Error(`Aborting ${e} stage \u2014 shutting down`);let s=this.onTimesUp(()=>{throw new Error(`${e} stage did not complete in the allowed time.`)}),o=null,a=null;n!==void 0&&(a=new Promise((l,d)=>{o=setTimeout(()=>{d(new Error(`${e} stage exceeded its maximum duration of ${n}ms`))},n)}));let c=Date.now(),u="success";try{return await IC({stage:e},async()=>a?await Promise.race([r(),a]):await r())}catch(l){throw u="failure",l}finally{K.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 OTe={name:"@netlify/agent-runner-cli",type:"module",version:"1.200.2-bug.4",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 rdt=edt(import.meta.url),ndt=ou.dirname(rdt),idt=tdt(import.meta.url),D_=re("shell"),HY=new Set,PTe={preferLocal:!0},yt=(t,e,r)=>{let[n,i]=sdt(e,r),s={...PTe,...i},o=vTe(t,n,s);CTe(o,s),DTe(o);let a=r?.idleTimeout;return a&&a>0&&NTe(o,a),o},ITe=(t,e)=>{let r={...PTe,...e},n=ETe(t,r);return CTe(n,r),DTe(n),e?.idleTimeout&&e.idleTimeout>0&&NTe(n,e.idleTimeout),n},sdt=function(t,e){return Array.isArray(t)?[t,e]:typeof t=="object"&&t!==null?[[],t]:[[],void 0]},CTe=(t,e)=>{if(e.stdio!==void 0||e.stdout!==void 0||e.stderr!==void 0||Ga.env.NETLIFY_LOCAL_QUIET==="true")return;if(Ga.env.NETLIFY_MASK_LOGS!=="false"){t.stdout?.pipe(new Rb).pipe(Ga.stdout),t.stderr?.pipe(new Rb).pipe(Ga.stderr);return}t.stdout?.pipe(Ga.stdout),t.stderr?.pipe(Ga.stderr)},WY=(t,e="SIGTERM")=>{try{return t.pid&&!t.killed?(Ga.kill(-t.pid,e),D_.log(`Killed process ${t.pid} with signal ${e}`),!0):!1}catch(r){return D_.error("Error killing process:",r),!1}},kTe=t=>WY(t,"SIGKILL"),NTe=(t,e)=>{let r=null,n=()=>{D_.log(`Process ${t.pid} killed due to idle timeout (no output for ${e}ms)`),WY(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(D_.log(`Force killing idle process ${t.pid}`),kTe(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)},DTe=t=>{HY.add(t);let e=xTe();if(e){let r=e.onTimesUp(()=>{D_.log(`Global timer expired, killing process ${t.pid}`),WY(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(D_.log(`Force killing process ${t.pid} after timeout`),kTe(t))},5e3)});t.on("exit",()=>{HY.delete(t),r()}),t.on("error",()=>{HY.delete(t),r()})}};function Ha(t,e){if(!Ga.env.NETLIFY_LOCAL_MODE)try{let i=idt.resolve(OTe.name),s=ou.dirname(i);for(;s!==ou.dirname(s);){let o=ou.dirname(s);if(ou.basename(o)==="node_modules"){let a=ou.join(o,".bin",e);if(KD.existsSync(a))return a;break}s=o}}catch(i){console.error("Could not resolve package.json",i)}if(Ga.env.NODE_PATH){let i=ou.join(Ga.env.NODE_PATH,".bin",e);if(KD.existsSync(i))return i}let r=ou.join(t,"node_modules",".bin",e);if(KD.existsSync(r))return r;let n=ou.join(ndt,"..","node_modules",".bin",e);if(KD.existsSync(n))return n}var MTe=re("repo"),zTe="runner-diffs-",KY=t=>`${zTe}${t}-`,jTe=async t=>{let e=YD.tmpdir(),r;try{r=await Ho.readdir(e)}catch{return}await Promise.all(r.filter(n=>n.startsWith(zTe)&&!n.startsWith(KY(t))).map(n=>Ho.rm(Go.join(e,n),{recursive:!0,force:!0}).catch(()=>{})))},$Te=async t=>{let e=odt("sha256");for await(let r of adt(t))e.update(r);return e.digest("hex")},LTe=async(t,e)=>t.size===e.size&&await $Te(t.path)===await $Te(e.path),qTe=/.. (.+)?\.log$/,cdt=[qTe],udt=1,UTe=t=>{let e=t.split(`
|
|
388
|
+
`).reduce((r,n)=>{if(!n)return r;let[i,s,,...o]=n,a=o.join(""),c=i.trim(),u=s.trim();return r[a]?r[a].change=u:r[a]={filePath:a,stage:c,change:u},r},{});return Object.values(e)},ldt=t=>t instanceof Error&&String(t.stderr??"").includes("No such remote"),ddt=t=>{let e=t instanceof Error?t.message:String(t),r=String(t?.stderr??"").trim();return _i(r?`${e}: ${r}`:e)},fdt={stdin:"pipe",stdout:"pipe",stderr:"pipe",stripFinalNewline:!1},FTe=500,UT=class extends Error{constructor(r,n){super(n instanceof Error?n.message:String(n));this.step=r;this.cause=n}},xi=class{constructor(e=process.cwd()){this.cwd=e}getRoot(){return this.root??=this.run(["rev-parse","--show-toplevel"],{stdout:"pipe"}).then(({stdout:e})=>String(e).trim()),this.root}async restorePausedWork(e){let r="restore";try{let n=await this.restorePausedFiles(e);return r="stage",await this.stageBuildSetup(),await this.unstageFiles(n.changedFiles,{cwd:await this.getRoot()}),{rewrittenFileCount:n.rewrittenFileCount}}catch(n){throw new UT(r,n)}}run(e,r={}){return yt("git",e,{cwd:this.cwd,...r,env:{...r.env,NETLIFY_INTERNAL_GIT:"1"}})}async commitAndCreateDiffs({config:e,isRetry:r}){MTe.info("Getting runner diffs");let n=await this.hasAgentChanges(),{hasChanges:i}=n,{status:s}=n;if(!i)return{hasChanges:!1};if(!r){let u=UTe(s);await this.discardSetupOnlyChanges(u)}MTe.info("Changes after processing"),await this.getStatus();let o=await this.getIgnoredPathspecs(s);if(await this.stageFiles(o),i=await this.hasStagedChanges(),!i)return{hasChanges:!1,ignored:o};await this.run(["commit","-m","Agent runner [skip ci]"]);let a=await Ho.mkdtemp(Go.join(YD.tmpdir(),KY(e.sessionId))),c=await this.writeDiffFiles({config:e,diffDir:a,target:{commit:"HEAD"},ignored:o});return await this.rollbackIfLocal(),c.hasChanges&&K.distribution("diff.size",(c.diffBinary??c.diff).size,{phase:"final"}),c}async getStatus(){let e=await this.run(["-c","status.relativePaths=true","status","-s"]);return String(e.stdout??"")}async hasAgentChanges(){let e=await this.getStatus();return{hasChanges:(e.trim().length===0?[]:e.split(`
|
|
389
389
|
`).filter(i=>cdt.some(o=>o instanceof RegExp?o.test(i):i===o)?!1:i[1]?.trim()!=="")).length!==0,status:e}}async getCurrentCommitSha(){let{stdout:e}=await this.run(["rev-parse","HEAD"]);return String(e??"").trim()}async reset(){await this.run(["reset","--hard","HEAD"])}async discardSetupOnlyChanges(e){let r=e.filter(n=>n.stage&&!n.change).map(n=>n.filePath);r.length!==0&&await this.run(["restore","--staged","--worktree","--pathspec-from-file=-"],{input:r.join(`
|
|
390
390
|
`)})}async stageBuildSetup(){let e=await this.getIgnoredPathspecs();await this.stageFiles(e)}async getIgnoredPathspecs(e){e||=await this.getStatus();let r=[".netlify","node_modules","dist",".next","out",".nuxt",".output",".cache",".turbo",".parcel-cache","coverage",".nyc_output","storybook-static","public/build","CLAUDE.local.md"],n=[];return e.split(`
|
|
391
391
|
`).forEach(i=>{r.forEach(o=>{let a=i===`?? ${o}`,c=i.startsWith(`?? ${o}/`)||i.startsWith(`?? ${o}${Go.sep}`);(a||c)&&n.push(`:!${o}`)});let s=i.match(qTe)?.[1];s&&n.push(`:!${s}.log`)}),n}async stageFiles(e=[],r){await this.run(["add",".",...e],{env:r})}async unstageFiles(e,r={}){e.length!==0&&await this.run(["reset","--pathspec-from-file=-","--pathspec-file-nul","HEAD"],{...r,input:e.map(n=>`:(literal)${n}`).join("\0")})}async writeDiffFiles({config:e,diffDir: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 _=Go.join(r,h),S=m?["diff","--no-relative",p,s,"--binary"]:["diff","--no-relative",p,s];await this.run([...S,`--output=${_}`],{stdio:["ignore","ignore","pipe"],env:o});let{size:E}=await Ho.stat(_);return{path:_,size:E}},c=await a({from:e.runSha,fileName:"session.patch"});if(c.size===0)return{hasChanges:!1,ignored:i};let u=await a({from:e.runSha,fileName:"session-binary.patch",binary:!0}),l,d;if(e.sha){l=await a({from:e.sha,fileName:"cumulative.patch"});let p=await a({from:e.sha,fileName:"cumulative-binary.patch",binary:!0});await LTe(l,p)||(d=p)}let f={hasChanges:!0,diff:c,resultDiff:l,ignored:i};return await LTe(c,u)||(f.diffBinary=u),d&&(f.resultDiffBinary=d),f}async hasStagedChanges(){try{return await this.run(["diff","--staged","--quiet"]),!1}catch{return!0}}async rollbackIfLocal(){process.env.NETLIFY_LOCAL_MODE&&await this.run(["reset","--soft","HEAD~1"])}async hasCommits(){try{return await this.run(["rev-parse","--verify","--quiet","HEAD"]),!0}catch(e){if(e.exitCode===udt)return!1;throw e}}async hasNoCommittedFiles(){if(!await this.hasCommits())return!0;let{stdout:e}=await this.run(["ls-tree","--name-only","HEAD"]);return String(e??"").trim().length===0}async getFirstCommitSha(){let{stdout:e}=await this.run(["rev-list","--max-parents=0","HEAD"]);return String(e??"").trim()}async removeUntrackedFiles(){let e=await this.run(["clean","-fd","-e",".netlify"],{stdio:["ignore","pipe","pipe"]});return String(e.stdout??"").split(`
|
|
@@ -702,13 +702,13 @@ Below are all of the logs with potential issues that we extracted. Some of them
|
|
|
702
702
|
|
|
703
703
|
${t.pop()}
|
|
704
704
|
`;var VR=re("deploy"),dPt=t=>t===""||/[\s"\\]/u.test(t)?JSON.stringify(t):t,FMe=async t=>await zt(ht(),"create-preview-deploy",async e=>fPt(t,e)),fPt=async({hasRepo:t,message:e="Agent Preview",deploySubdomain:r,cliPath:n,filter:i,prodDeploy:s,agentRunnerId:o,agentRunnerSessionId:a},c)=>{try{let u=["deploy","--message",e,"--json","--verbose",s?"--prod":"--draft"];VR.log("Deploy: Uploading source zip"),u.push("--upload-source-zip"),r&&!s&&u.push("--alias",r),i&&u.push("--filter",i),u.push("--context",s?"production":"deploy-preview");let l=n||"netlify";VR.log(`Running: ${l} ${u.map(dPt).join(" ")}`),c?.setAttributes({cmd:l,args:u});let d={};o&&(d.NETLIFY_AGENT_RUNNER_ID=o),a&&(d.NETLIFY_AGENT_RUNNER_SESSION_ID=a);let f=await yt(l,u,{stdio:["ignore","pipe","pipe"],env:{...process.env,NETLIFY_DEPLOY_SOURCE:"agent_runner",...d}});f.stderr&&VR.log(String(f.stderr));let p=JSON.parse(String(f.stdout??"").trim());c?.setAttributes({success:!0,deployId:p.deploy_id,deployUrl:p.deploy_url,siteId:p.site_id}),VR.log(`
|
|
705
|
-
Preview deploy created successfully:`,{deployId:p.deploy_id,deployUrl:p.deploy_url,siteId:p.site_id});let h={deployId:p.deploy_id,previewUrl:p.deploy_url,logsUrl:p.logs,siteId:p.site_id};return t||(h.sourceZipFilename=p.source_zip_filename),h}catch(u){throw VR.error("Failed to create preview deploy via CLI:",u),c?.setAttributes({success:!1,error:u.message}),u}};import zMe from"fs";import eJ from"path";var jMe=(t=process.cwd())=>{let e=eJ.join(t,Xr,Jle);return{hasNetlifyForm:zMe.existsSync(eJ.join(e,"netlify-forms")),hasNetlifyIdentity:zMe.existsSync(eJ.join(e,"netlify-identity"))}};var ta=re("deploy_stage"),GR=async t=>await zt(ht(),"run-deploy-stage",async()=>pPt(t)),pPt=async({cliPath:t,config:e,result:r,filter:n,isRetry:i,deploySubdomain:s})=>{if(e.mode==="ask")return{hasChanges:!1,previewInfo:null,isProdDeploy:!1,hasNetlifyForm:!1,hasNetlifyIdentity:!1};let o=new xi,a=await zt(ht(),"get-runner-diffs",async()=>await o.
|
|
705
|
+
Preview deploy created successfully:`,{deployId:p.deploy_id,deployUrl:p.deploy_url,siteId:p.site_id});let h={deployId:p.deploy_id,previewUrl:p.deploy_url,logsUrl:p.logs,siteId:p.site_id};return t||(h.sourceZipFilename=p.source_zip_filename),h}catch(u){throw VR.error("Failed to create preview deploy via CLI:",u),c?.setAttributes({success:!1,error:u.message}),u}};import zMe from"fs";import eJ from"path";var jMe=(t=process.cwd())=>{let e=eJ.join(t,Xr,Jle);return{hasNetlifyForm:zMe.existsSync(eJ.join(e,"netlify-forms")),hasNetlifyIdentity:zMe.existsSync(eJ.join(e,"netlify-identity"))}};var ta=re("deploy_stage"),GR=async t=>await zt(ht(),"run-deploy-stage",async()=>pPt(t)),pPt=async({cliPath:t,config:e,result:r,filter:n,isRetry:i,deploySubdomain:s})=>{if(e.mode==="ask")return{hasChanges:!1,previewInfo:null,isProdDeploy:!1,hasNetlifyForm:!1,hasNetlifyIdentity:!1};let o=new xi,a=await zt(ht(),"get-runner-diffs",async()=>await o.commitAndCreateDiffs({config:e,isRetry:i}));if(ta.info("Resolved git",{hasChanges:a.hasChanges,ignored:a.ignored??[]}),!a.hasChanges&&e.mode!=="redeploy"&&!e.pendingUndeployedChanges)return{hasChanges:!1,previewInfo:null,isProdDeploy:!1,hasNetlifyForm:!1,hasNetlifyIdentity:!1};let c=a.hasChanges?a.diff:void 0,u=a.hasChanges?a.resultDiff:void 0,l=a.hasChanges?a.diffBinary:void 0,d=a.hasChanges?a.resultDiffBinary:void 0,f=a.hasChanges||e.mode==="redeploy",{hasNetlifyForm:p,hasNetlifyIdentity:h}=jMe();if(p||h){let x={};p&&(ta.log("Detected Netlify Forms enablement \u2014 enabling early"),x.has_netlify_form=!0),h&&(ta.log("Detected Netlify Identity enablement \u2014 enabling early"),x.has_netlify_identity=!0);try{await Mr(e.id,e.sessionId,x)}catch(y){ta.warn("Failed to send early feature enablement (continuing):",y)}}let m=r!==void 0&&(f||e.mode==="redeploy"||!!e.pendingUndeployedChanges);ta.log("Deploy condition check:",{resultUndefined:r===void 0,resultType:typeof r,hasChanges:f,isRedeploy:e.mode==="redeploy",pendingUndeployedChanges:!!e.pendingUndeployedChanges,wouldCreateDeploy:m});let _=ZD(e.mode),S=null,E;if(m)try{let x;try{let y=await zt(ht(),"get-runner-session",async()=>await Lf(e.id,e.sessionId));y?.title&&(x=y.title)}catch(y){ta.warn("Failed to fetch session title, using fallback message:",y.message)}if(await Mr(e.id,e.sessionId,{steps:[{title:_?"Deploying project":"Deploying preview",category:W.Deployment}]}),S=await FMe({cliPath:t,hasRepo:e.hasRepo,message:x,deploySubdomain:s,filter:n,prodDeploy:_,agentRunnerId:e.id,agentRunnerSessionId:e.sessionId}),_)try{let y=await o.pushToOrigin({targetBranch:e.pushBranch});y.pushed?ta.log(`Pushed workspace commits to origin (${y.branch})`):ta.log(`Skipped origin push (${y.reason})`)}catch(y){E=y instanceof Error?y.message:String(y),ta.warn("Failed to push workspace commits to origin (continuing):",y)}}catch(x){if(kn())throw x;return ta.warn("Failed to create preview deploy (continuing with agent run):",x),{diff:c,resultDiff:u,hasChanges:f,previewInfo:null,diffBinary:l,resultDiffBinary:d,deployError:x instanceof Error?x.message:String(x),isProdDeploy:_,hasNetlifyForm:p,hasNetlifyIdentity:h}}return ta.log("Git status",{hasDiff:!!c,hasChanges:f}),{diff:c,resultDiff:u,hasChanges:f,previewInfo:S,diffBinary:l,resultDiffBinary:d,gitPushError:E,isProdDeploy:_,hasNetlifyForm:p,hasNetlifyIdentity:h}};var hPt=re("redeploy"),qMe="Redeploy completed",BMe=async({cliPath:t,config:e,filter:r,deploySubdomain:n,isProdDeploy:i,withStageTimer:s})=>{let o=await s("deploy",()=>GR({cliPath:t,config:e,result:qMe,filter:r,isRetry:!1,deploySubdomain:n}));o.deployError&&(hPt.warn(`Redeploy deploy failed: ${o.deployError}`),K.inc("deploy.failed",1,{attempt:1})),CC({previewDeployed:!!o.previewInfo,hadFailedAttempts:!!o.deployError});let{diff:a,resultDiff:c,previewInfo:u,diffBinary:l,resultDiffBinary:d,hasNetlifyForm:f,hasNetlifyIdentity:p}=o;return{diff:a,result:qMe,duration:0,resultDiff:c,diffBinary:l,resultDiffBinary:d,previewInfo:u,isProdDeploy:i,hasNetlifyForm:f,hasNetlifyIdentity:p}};import BLe from"process";import mPt from"fs";import gPt from"path";import _Pt from"process";var tJ=re("db_migrations"),yPt=new Set(["drizzle.config.ts","drizzle.config.js","drizzle.config.mjs"]),GMe=async t=>await IC({stage:"db-migrations"},()=>zt(ht(),"db-migrations",async e=>{let r=t.cwd||_Pt.cwd();if(!(await VMe("@netlify/database",r)||await VMe("@netlify/db",r)))return e?.setAttributes({skipped:!0,reason:"@netlify/database is not installed"}),K.inc("db_migrations.run",1,{outcome:"skipped",reason:"no_module"}),{skipped:!0,reason:"no_module"};let i=[...yPt].find(s=>mPt.existsSync(gPt.join(r,s)));if(!i)return e?.setAttributes({skipped:!0,reason:"no drizzle config found"}),K.inc("db_migrations.run",1,{outcome:"skipped",reason:"no_config"}),{skipped:!0,reason:"no_config"};e?.setAttributes({configFile:i}),tJ.log(`Found ${i}, running drizzle-kit generate to ensure migrations are up to date`);try{let s=await yt("npx",["drizzle-kit","generate"],{cwd:r,stdio:["ignore","pipe","pipe"]});return s.stdout&&tJ.log(String(s.stdout)),e?.setAttributes({success:!0}),K.inc("db_migrations.run",1,{outcome:"success"}),{skipped:!1}}catch(s){let o=SPt(s);return tJ.warn("drizzle-kit generate failed:",o),e?.setAttributes({success:!1,error:o}),K.inc("db_migrations.run",1,{outcome:"failure"}),{skipped:!1,error:o}}})),VMe=async(t,e)=>{try{return await ITe(`node -e "require.resolve('${t}')"`,{cwd:e,stdio:"ignore"}),!0}catch{return!1}},SPt=t=>{if(t&&typeof t=="object"){let e=[];if("stderr"in t&&t.stderr&&e.push(String(t.stderr)),"stdout"in t&&t.stdout&&e.push(String(t.stdout)),e.length>0)return e.join(`
|
|
706
706
|
`)}return t instanceof Error?t.message:String(t)};var d1=re("migration_state"),rJ=async({cliPath:t,cwd:e})=>{let r;try{let n=await yt(t,["db","status","--json"],{cwd:e,stdio:["ignore","pipe","pipe"]});r=n.stdout?String(n.stdout):""}catch(n){let i=n;throw d1.warn("`netlify db status --json` failed",{exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr}),n}d1.log("`netlify db status --json` output",{stdout:r});try{return JSON.parse(r)}catch(n){throw d1.warn("Failed to parse `netlify db status --json` output",{stdout:r,error:String(n)}),n}},vPt=()=>["## Netlify Database","","A Netlify Database (managed Postgres) is available for this site.","It will be provisioned automatically on first connection.","No migrations have been applied yet \u2014 this is a fresh database.","","Use `@netlify/database` with Drizzle ORM for persistent data storage.","Define your schema in `db/schema.ts` and migrations will be generated automatically at deploy time.","Read the `netlify-database` skill for setup instructions."].join(`
|
|
707
707
|
`),EPt=t=>{if(t.applied.length===0&&t.pending.length===0)return null;let e=["## CRITICAL: Current Netlify Database state",""];if(t.applied.length>0){e.push("The following migrations are **already applied** to your preview database branch. They are immutable:","");for(let r of t.applied)e.push(`- ${r.name}`);e.push("","**Never delete, rename, or edit an applied migration file.** Doing so will break the deploy \u2014 the","platform requires every migration applied to the branch to exist on disk with its original content. If","you think an applied migration is wrong, roll forward with a NEW migration that corrects whatever it","did. That's always safe; deletion isn't.")}else e.push("No migrations are applied to your preview database branch yet.");if(t.pending.length>0){e.push(""),e.push("The following migration files exist on disk but have NOT yet been applied:","");for(let r of t.pending)e.push(`- ${r.name}`);e.push("","Pending files can be modified or deleted freely \u2014 use `netlify db migrations reset` to remove them","cleanly, then regenerate via `npx drizzle-kit generate` if you want a replacement.")}return e.join(`
|
|
708
708
|
`)},nJ=async({cliPath:t,cwd:e,isFreshDatabase:r})=>{if(r)return vPt();try{return EPt(await rJ({cliPath:t,cwd:e}))}catch(n){return d1.warn("Skipping migration context injection \u2014 failed to build state block",{error:n}),null}},HMe=t=>{let e=[];return t.missingOnDisk.length>0&&e.push("The following migration file(s) are applied to the preview database branch but are no longer on disk","under their original name:",...t.missingOnDisk.map(r=>`- ${r.name}`),"","Applied migrations cannot be removed \u2014 the deploy will fail because the platform requires every applied","migration to exist on disk with its original content. **Renaming or renumbering an applied migration is a","deletion**: the platform matches migrations by version, so moving one to a new version prefix removes the","original as far as the branch is concerned, and the new file reads as an unapplied migration whose version","almost certainly sorts too early. Please revise your work:","","1. Restore the deleted file(s) by running `netlify db migrations pull --force`, which overwrites the"," local migrations directory with the authoritative state of the branch. Note this also wipes any"," unapplied migration files you generated this session \u2014 regenerate them via `npx drizzle-kit generate`"," afterwards if you still need them (your `db/schema.ts` edits aren't affected by the pull).","2. If the underlying problem is that an applied migration is wrong, add a NEW migration on top that"," corrects whatever it did (drop a column, rename a table, etc.). Do not touch the original."),t.outOfOrder.length>0&&(e.length>0&&e.push(""),e.push("The following pending migration file(s) have a version prefix that sorts BEFORE migrations already","applied to the branch, so the platform will reject them on deploy:",...t.outOfOrder.map(r=>`- ${r.name} (version ${r.version} \u2264 applied max ${r.maxApplied})`),"","Delete these out-of-order files (use `netlify db migrations reset` \u2014 it only removes unapplied files),","then run `npx drizzle-kit generate` to produce a replacement whose version sorts after the applied","migrations.")),e.length===0?null:(e.push("","Note on refusals: if you reached this state after the platform refused a migration, that refusal names only","the database that refused it. It is not evidence that the migration is unapplied anywhere \u2014 every branch,","and production, keeps its own record of what it has applied. The applied list above is the only authority on","this branch, and it overrides any procedure written in AGENTS.md, PLAN.md, or other project notes."),e.join(`
|
|
709
709
|
`))},WMe=t=>t.missingOnDisk.length>0||t.outOfOrder.length>0;var KMe=re("db_migrations_verify"),bPt=t=>{let e=t.missingOnDisk.length>0,r=t.outOfOrder.length>0;return e&&r?"both":e?"missing_on_disk":r?"out_of_order":"none"},YMe=async t=>await zt(ht(),"db-migrations-verify-stage",async e=>{let r;try{r=await rJ({cliPath:t.cliPath,cwd:t.cwd})}catch(i){return KMe.warn("Skipping migration verification \u2014 failed to read status",{error:i}),e?.setAttributes({"verify.skipped":!0,"verify.skip_reason":"status_error"}),K.inc("db_migrations.verify",1,{drift:"unknown"}),{}}if(!WMe(r))return e?.setAttributes({"verify.drift":!1}),K.inc("db_migrations.verify",1,{drift:"none"}),{};let n=HMe(r);return K.inc("db_migrations.verify",1,{drift:bPt(r)}),e?.setAttributes({"verify.drift":!0,"verify.missing_on_disk_count":r.missingOnDisk.length,"verify.out_of_order_count":r.outOfOrder.length}),KMe.log("Detected post-inference migration drift",{missingOnDisk:r.missingOnDisk.map(i=>i.name),outOfOrder:r.outOfOrder.map(i=>i.name)}),{error:n??void 0}});import cX from"process";import G0t from"net";var as=ln(iX(),1),c$r=as.default.Client,u$r=as.default.Pool,l$r=as.default.Connection,d$r=as.default.types,f$r=as.default.Query,p$r=as.default.DatabaseError,h$r=as.default.escapeIdentifier,m$r=as.default.escapeLiteral,g$r=as.default.Result,_$r=as.default.TypeOverrides,y$r=as.default.defaults,FLe=as.default;var H0t=1e3,W0t=6e4,aX=class extends Error{willRetry;constructor(t,e){super(t),this.name="ProvisionHeldError",this.willRetry=e}},zLe=t=>t instanceof aX;function K0t(t,e={}){let r=e.baseMs??H0t,n=e.maxMs??W0t,i=e.isPermanent??(()=>!1),s,o,a=0,c=!1,u=0,l=d=>{let f=d instanceof Error?d.message:String(d);if(u+=1,c=i(d),c)o=new aX(`Database provisioning failed and will not be retried: ${f}`,!1);else{let p=Math.min(r*2**(u-1),n);a=Date.now()+p;let h=String(p/1e3);o=new aX(`Database provisioning failed, retrying in ${h}s: ${f}`,!0)}throw d};return async()=>{if(o&&(c||Date.now()<a))throw o;return s??=t().then(d=>(u=0,o=void 0,d),l).finally(()=>{s=void 0}),await s}}var Y0t=80877103,Z0t=196608,Q0t=Buffer.from([78]);function J0t(){let t=Buffer.alloc(9);t.writeUInt8(82,0),t.writeInt32BE(8,1),t.writeInt32BE(0,5);let e=Buffer.alloc(6);return e.writeUInt8(90,0),e.writeInt32BE(5,1),e.writeUInt8(73,5),Buffer.concat([t,e])}function P1(t){let e=Buffer.from("SERROR\0","utf8"),r=Buffer.concat([Buffer.from("M","utf8"),Buffer.from(t+"\0","utf8")]),n=Buffer.from("CXX000\0","utf8"),i=Buffer.from([0]),s=e.length+r.length+n.length+i.length,o=Buffer.alloc(5);return o.writeUInt8(69,0),o.writeInt32BE(s+4,1),Buffer.concat([o,e,n,r,i])}async function X0t(t){let{clientSocket:e,provision:r,logger:n,cleanup:i}=t,s;try{s=await r()}catch(f){let p=f instanceof Error?f.message:"Provisioning failed";throw zLe(f)||n("Provisioning error:",p),e.end(P1(p)),i(),f}let o=tkt(s),a=new FLe.Client({host:o.host,port:o.port,user:o.user,password:o.password,database:o.database,ssl:o.ssl,options:o.options});a.on("error",()=>{});try{await a.connect()}catch(f){let p=f instanceof Error?f.message:"Remote connection failed";throw n("Remote connection error:",p),e.end(P1(p)),i(),f}let c=a.connection,u=c.stream;c.removeAllListeners(),u.removeAllListeners();let l=u,d=f=>p=>{p.code!=="ECONNRESET"&&n(`${f} socket error:`,p.message),i()};return l.on("error",d("Remote")),l.on("close",i),e.on("error",d("Client")),e.on("close",i),e.write(J0t()),e.on("data",f=>{l.destroyed||l.write(f)}),l.on("data",f=>{e.destroyed||e.write(f)}),e.resume(),l}function ekt(t,e){let{provision:r,logger:n,onCleanup:i}=e,s,o="ssl",a=!1;function c(){a||(a=!0,t.destroy(),s?.destroy(),i())}t.on("error",u=>{u.code!=="ECONNRESET"&&n("Client socket error:",u.message),c()}),t.on("data",u=>{if(o==="ssl"){if(u.length>=8&&u.readInt32BE(4)===Y0t){t.write(Q0t),o="startup";return}o="startup"}if(o==="startup"){if(u.length<8){t.end(P1("Invalid startup message")),c();return}if(u.readInt32BE(4)!==Z0t){t.end(P1("Unsupported protocol version")),c();return}t.pause(),t.removeAllListeners("data"),X0t({clientSocket:t,provision:r,logger:n,cleanup:c}).then(d=>{s=d},d=>{zLe(d)||n("Startup error:",d),c()})}})}function tkt(t){let e=new URL(t);return{host:e.hostname,port:Number(e.port)||5432,user:decodeURIComponent(e.username),password:decodeURIComponent(e.password),database:e.pathname.slice(1)||"postgres",ssl:e.searchParams.get("sslmode")==="require"?!0:void 0,options:e.searchParams.get("options")??void 0}}var jLe=class{server;sockets=new Set;host;port;logger;provision;constructor(t){this.host=t.host??"127.0.0.1",this.port=t.port??0,this.logger=t.logger??(()=>{}),this.provision=K0t(t.provision,t.retry)}async start(){return new Promise((t,e)=>{let r=G0t.createServer(n=>{this.sockets.add(n),n.on("close",()=>{this.sockets.delete(n)}),ekt(n,{provision:this.provision,logger:this.logger,onCleanup:()=>{this.sockets.delete(n)}})});r.on("error",n=>{e(n)}),r.listen(this.port,this.host,()=>{this.server=r;let n=r.address(),i=`postgres://${this.host}:${String(n.port)}`;this.logger("Proxy listening on",i),t(i)})})}async stop(){for(let t of this.sockets)t.destroy();return this.sockets.clear(),new Promise(t=>{if(!this.server){t();return}this.server.close(()=>{this.server=void 0,t()})})}};var I1=re("db_setup"),qLe=async({siteId:t,isProd:e,alias:r,connectionString:n})=>await zt(ht(),"db-setup-stage",async i=>{i?.setAttributes({"db_setup.site_id":t,"db_setup.is_prod":e,...r&&{"db_setup.alias":r}});let s;if(e?s="production":r&&(s=r),cX.env.NETLIFY_DB_BRANCH=s,n)return i?.setAttributes({"db_setup.source":"config","db_setup.has_proxy":!1}),I1.log("Using database connection string provided by the API"),cX.env.NETLIFY_DB_URL=n,{connectionString:n,wasProvisioned:()=>!1};let o=!1,a=new jLe({logger:(...u)=>I1.log("db-proxy:",...u),provision:async()=>(I1.log("Provisioning database for site via API"),await kde(t),o=!0,await ikt(t,e,r)),retry:{isPermanent:nkt}}),c=await a.start();return i?.setAttributes({"db_setup.source":"proxy","db_setup.has_proxy":!0}),I1.log("Local DB proxy started",{connectionString:c}),cX.env.NETLIFY_DB_URL=c,{connectionString:c,proxy:a,wasProvisioned:()=>o}}),rkt=new Set([400,401,403,422]),nkt=t=>ws(t)||t instanceof Error&&"statusCode"in t&&rkt.has(t.statusCode),ikt=async(t,e,r)=>e||!r?(await Ide(t)).connection_string:(await Nde(t,r),(await Cde(t,r)).connection_string);var VLe=({config:t,cliPath:e,cwd:r,withStageTimer:n})=>{let i,s,o=null,a=t.mode==="ask",c=async()=>t.siteId?s?.()?!0:t.site?.has_database:!1;return{prepare:async({deploySubdomain:u,isProdDeploy:l})=>{if(a)return o=BTe(t,u),o?(K.inc("ask_mode.db_read_granted",1),nSe({cliPath:e,branch:o.branch})):void 0;BLe.env.EXPERIMENTAL_NETLIFY_DB_ENABLED="1";let d=t.siteId;if(BLe.env.NETLIFY_LOCAL_MODE||!d)return;let f=await n("db-setup",()=>qLe({siteId:d,isProd:l,alias:u,connectionString:t.dbConnectionString}),Ds.timeUnits.minutes(10));return i=f.proxy,s=f.wasProvisioned,r?await nJ({cliPath:e,cwd:r,isFreshDatabase:!!f.proxy})??void 0:void 0},currentContext:async()=>{if(!(a||!r)&&await c()!==!1)return await nJ({cliPath:e,cwd:r,isFreshDatabase:!1})??void 0},generateMigrations:async()=>a?{skipped:!0,reason:"no_module"}:await GMe({cwd:r}),verifyMigrations:async()=>a||!r?{}:await n("db-migrations-verify",()=>YMe({cliPath:e,cwd:r})),hasDatabase:c,stop:async()=>{await i?.stop()},revokeAskAccess:()=>{o&&ZY()}}};import skt from"process";var GLe=re("teardown"),HLe=({config:t,cwd:e,database:r,stopUsageTracking:n})=>{let i,s=t.mode==="ask",o=new xi(e);return{setRunnerCleanup:a=>{i=a},run:async a=>{let c=async(l,d)=>{try{await d()}catch(f){GLe.warn(`Teardown step failed: ${l}`,{state:a,error:f?.message||f}),K.inc("teardown.step_failed",1,{step:l,state:a})}},u=a==="completed"&&!skt.env.NETLIFY_LOCAL_MODE;await c("usage-tracker",n),(a==="errored"||a==="cancelled"||u)&&await c("runner-cleanup",()=>i?.()),await c("db-proxy",()=>r.stop()),u&&await c("reset-repo",()=>o.reset()),s&&u&&await c("remove-untracked-files",async()=>{let l=await o.removeUntrackedFiles();l.length>0&&(GLe.warn(`Removed ${l.length} leftover untracked change(s) after ask run`,{removed:l}),K.inc("ask_mode.leaked_untracked_files",l.length))})}}};var okt=({isHotFollowUp:t,enqueuedAt:e})=>t?e===void 0?[]:[["request",e]]:[["spawn",Number(process.env.NETLIFY_AGENT_RUNNER_SPAWN_AT_MS)],["enqueue",Number(process.env.NETLIFY_AGENT_RUNNER_ENQUEUED_AT_MS)]],uX=(t,e,r,n)=>{for(let[i,s]of okt(r))Number.isFinite(s)&&s>0&&s<=n&&t.timing(e,n-s,{from:i})},WLe=(t,e=Date.now(),r=K)=>uX(r,"startup.duration",t,e),KLe=(t,e=Date.now(),r=K)=>uX(r,"startup.time_to_prompt",t,e),YLe=(t,e=Date.now(),r=K)=>uX(r,"startup.time_to_first_output",t,e);var ZLe=(t,e=Date.now(),r=K)=>{let n={outcome:t.outcome,native_resume:t.nativeResume,is_answer_resume:t.isAnswerResume};r.timing("session.duration",e-t.startedAt,{hot_follow_up:t.isHotFollowUp,...n}),t.creditsCost!=null&&r.distribution("session.credits_cost",t.creditsCost,{...n,...t.model?{model:t.model}:{},...t.effort?{effort:t.effort}:{}})};var QLe=re("run"),akt="unspecified",JLe=(t,e=Date.now(),r=QLe)=>{r.info(Ra({event:"run.finished",agent_runner_id:t.agentRunnerId,session_id:t.sessionId,dev_server_id:t.devServerId,agent:t.agent,mode:t.mode,orchestrator_version:t.version,model:t.model,effort:t.effort,outcome:t.outcome,finalization_outcome:t.finalizationOutcome,stop_reason:t.stopReason,elapsed_ms:e-t.startedAt,credits:t.creditsCost,native_resume:t.nativeResume,is_answer_resume:t.isAnswerResume,hot_follow_up:t.isHotFollowUp}))},XLe=(t,e=QLe)=>{e.info(Ra({event:"run.started",agent_runner_id:t.agentRunnerId,session_id:t.sessionId,dev_server_id:t.devServerId,agent:t.agent,mode:t.mode,orchestrator_version:t.version,model:t.model,effort:t.effort??akt,is_answer_resume:t.isAnswerResume,hot_follow_up:t.isHotFollowUp}))};function e1e(t){return["One or more AI functions use the legacy **v1** syntax (`exports.handler` / `module.exports.handler`):","",t.map(r=>`- ${r}`).join(`
|
|
710
710
|
`),"",'Netlify AI Gateway credentials (`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `GEMINI_API_KEY` and the matching `*_BASE_URL` variables) are injected ONLY into the modern v2/v3 function runtime. A v1 function builds and deploys successfully but throws "missing API key" at runtime \u2014 this will NOT appear as a build error.',"","Rewrite each listed function using **v2** syntax \u2014 `export default async (req: Request) => Response` \u2014 or **v3** object export (`satisfies NetlifyFunction`), preserving its existing behavior and route. Do not set your own API keys; rely on the injected gateway credentials. See the `netlify-ai-gateway` skill for examples."].join(`
|
|
711
|
-
`)}var jh=re("usage_tracker"),ckt=4e3,ukt=5e3,lkt=2e4,dkt=(t,e,r)=>t===!0||r!=null&&e!=null&&e>=r,fkt=(t,e,r)=>e!=null&&e>0&&r!=null&&t!=null&&e-t<=r,t1e=(t,e,r,{creditReserve:n,onCreditReserveReached:i}={})=>{let s=!1,o=!1,a=!1,c=!1,u,l,d,f=r,p,h=i!=null&&n!=null,m=()=>{p&&(clearInterval(p),p=void 0)},_=O=>{m(),p=setInterval(()=>{E()},O),p.unref?.()},S=async()=>{try{let O=await $C(t,e);jh.log("Usage update response",{usage:O?.usage});let C=O?.usage?.total_credits_cost;C!=null&&(u=C);let I=O?.enforced_credits_cap;if(I!=null&&I!==f){let w=f==null;f=I,jh.log("Took the session credit limit from a usage poll",{sessionCreditLimit:f,totalCreditsCost:C,isFirstLimit:w}),w&&K.inc("session.credit_cap_late_arrival",1)}let k=dkt(O?.credit_limit_exceeded,C,f);if(k&&(jh.log("Credit limit exceeded",{totalCreditsCost:C,sessionCreditLimit:f}),a||(l=Date.now(),d=C??u??0,_(lkt)),a=!0),h&&!c&&!k&&fkt(C,f,n)){c=!0,jh.log("Credit reserve reached",{totalCreditsCost:C,sessionCreditLimit:f,creditReserve:n});try{i()}catch(w){jh.warn("onCreditReserveReached callback threw",{error:w?.message||w})}}}catch(O){jh.warn("Failed to update usage",{error:O?.message||O})}},E=FN(S,ckt);return{onAgentOutput:()=>{if(a)throw new bs("AI credit usage exceeded enforced limit.",503,"Credit limit reached. Check credit limits to continue using Agent Runners.");o||(s=!0,p||_(ukt))},stop:async()=>{o||(o=!0,m(),s&&(E.cancel(),jh.log("Sending final usage update"),await S(),l!==void 0&&(K.timing("credit_limit.overage_duration",Date.now()-l),K.distribution("credit_limit.overage_credits",Math.max(0,(u??d??0)-(d??0))))))},getCreditsCost:()=>u,getSessionCreditLimit:()=>f}};var r1e=re("session_credit_limit"),pkt=async t=>{if(t.sessionCreditLimit!=null)return{limit:t.sessionCreditLimit,source:"env"};try{let e=(await $C(t.id,t.sessionId))?.enforced_credits_cap;if(e!=null)return r1e.log("Resolved the session credit limit from the usage endpoint",{limit:e}),{limit:e,source:"usage"}}catch(e){r1e.warn("Usage call for the session credit limit failed",{error:e?.message||e})}return{source:"none"}},n1e=async(t,e=!1)=>{let{limit:r,source:n}=await pkt(t);t.sessionCreditLimit=r,K.inc("session.credit_cap_source",1,{source:n,hot_follow_up:e})};var Hd=re("credit_wrapup"),i1e="low",hkt=t=>{if(t.mode==="ask")return p2;if(t.mode==="normal")return h2;let e=qT(t);return BT(t,e)?d2:f2},s1e=t=>typeof t=="number"?t:void 0,lX=t=>{let e=He(),r=e.creditWrapUpReserveByModeAgentAndModel[t.mode]?.[t.runner];return s1e(t.model?r?.models?.[t.model]:void 0)??s1e(r?.agent)??e.creditWrapUpReserve},o1e=(t,e)=>{if(e<=0)return!1;let r=He();return t.mode==="create"?r.creditWrapUpEnabled:t.mode==="ask"||t.mode==="normal"?r.creditWrapUpNormalEnabled:!1},dX=(t,e)=>{if(t==="fix"){Hd.log("Credit reserve reached outside of the main inference turn \u2014 letting the fix finish without a wrap-up"),K.inc("session.credit_wrapup_skipped_fix_turn",1,{credit_reserve:e});return}if(t==="no_session"){Hd.warn("Credit reserve reached but no session id yet \u2014 skipping wrap-up interrupt"),K.inc("session.credit_wrapup_skipped_no_session",1,{credit_reserve:e});return}Hd.log("Credit reserve reached with no turn to interrupt \u2014 the agent had already finished")},a1e=(t,e,r)=>{if(e==null)return;let n=Math.max(0,e-t.creditsSpentBeforeWrapUp);Hd.log("Credit wrap-up cost",{credits:n,creditsCostAtSessionEnd:e,effort:i1e,inferenceAfterWrapUp:r,...t}),K.distribution("session.credit_wrapup_cost",n,{outcome:t.outcome,effort:i1e,credit_reserve:t.creditReserve,inference_after_wrap_up:r,...t.model?{model:t.model}:{}})},fX=async({runnerResult:t,interruptedSessionId:e,creditsSpentBeforeWrapUp:r,cliPath:n,config:i,context:s,runner:o,aiGateway:a,cwd:c,persistSteps:u,usageTracker:l,withStageTimer:d,answerFold:f})=>{let p=lX(i),h=new AbortController,m=!1,_=!1,S,E=Object.assign(async b=>{try{l.onAgentOutput()}catch(A){ws(A)&&!m&&(m=!0,Hd.log("Wrap-up turn spent the credit reserve \u2014 stopping wrap-up",{creditsSpentBeforeWrapUp:r}),K.inc("session.credit_wrapup_aborted",1,{credit_reserve:p}),h.abort())}return u(b)},{flush:u.flush.bind(u)});Hd.log("Running credit wrap-up inference turn",{creditsSpentBeforeWrapUp:r,creditReserve:p});try{await u({steps:[{category:W.WrapUp,message:`You are reaching your usage limit. ${i.mode==="ask"?"Wrapping up and gathering the info found so far.":"Wrapping up and leaving your work in a usable state."}`}],duration:0})}catch{}let x;try{let{runnerResult:b}=await d("inference-credit-wrapup",()=>qd({cliPath:n,config:i,context:s,runner:o,persistSteps:E,aiGateway:a,cwd:c,contextPrefix:hkt(i),priorAgentSessionId:e,resumeForCreditWrapUp:!0,answerFold:f,forceLowEffortForCreditWrapUp:!0,abortSignal:h.signal}));S=b.resolvedModel,m&&Hd.log("Wrap-up turn was aborted due to budget limit"),x={...FT(t,b),resolvedModel:t.resolvedModel,effort:t.effort,resolvedProviderEffort:t.resolvedProviderEffort}}catch(b){Hd.warn("Credit wrap-up turn failed \u2014 proceeding with pre-wrap-up result",{error:b?.message||b}),K.inc("session.credit_wrapup_failed",1,{credit_reserve:p}),_=!0,x=t}let y=S??t.resolvedModel;return{runnerResult:x,costReport:{creditsSpentBeforeWrapUp:r,creditReserve:p,outcome:_?"failed":m?"aborted":"completed",...y?{model:y}:{}}}};var c1e=t=>{let e,r=!1;return{getActiveTurn:()=>e?"main":r?"fix":"none",getMainTurnAbortSignal:()=>t?e?.signal:void 0,startMainTurn:()=>{e=new AbortController},finishMainTurn:()=>{e=void 0},runFixTurn:async n=>{r=!0;try{return await n()}finally{r=!1}},abortMainTurn:()=>e?.abort()}};var u1e=4e3,mkt=3e4,Wd=re("in_progress_work_preservation"),l1e=async(t,e)=>{if(!e)return null;l1(e);let r=kd(t.runner),n=null;try{await Promise.race([Promise.all([c1({runnerId:t.id,sessionId:t.sessionId,archive:r,nativeSessionId:e}).then(i=>{n=i}),fv({config:t,nativeSessionArchive:r,nativeSessionId:e}).catch(i=>{Wd.warn("Failed to seed the native session cache before teardown",{error:i?.message||i})})]),new Promise(i=>{setTimeout(i,u1e).unref()})])}catch(i){Wd.warn("Failed to preserve native session before teardown",{error:i?.message||i})}return n},rx=async({config:t,session:e,nativeSessionId:r,stoppedSession:n,erroredSession:i,creditInterrupted:s=!1})=>{let o=i?.reason??n?.stopReason??(e?"credit_limit":"user_cancelled"),a=(e||i)&&!kn()?mkt:u1e,c=!1,u=!0,l=new Set,d=(y,b)=>{K.inc("session.preservation",1,{reason:o,step:y,outcome:b}),Wd.info("Session preservation",{sessionId:t.sessionId,reason:o,step:y,outcome:b})},f=async(y,b)=>{l.add(y),d(y,"started");try{await b(),u&&d(y,"succeeded")}catch(A){c=!0,u&&d(y,"failed"),Wd.warn("Failed to preserve session artifacts",{reason:o,step:y,error:A})}finally{l.delete(y)}};d("all","started");let p=null,h={},m=[],_=kd(t.runner);if(r&&_){let y={config:t,nativeSessionArchive:_,nativeSessionId:r};m.push(Promise.allSettled([f("conversation",async()=>{let b=await BR(y);if(!b)throw new Error("Native session upload returned no archive key");u&&(p=b)}),...!n&&!i&&He().warmNativeResumeEnabled&&t.cache?.dir?[f("cache",async()=>{if(!await fv(y))throw new Error("Native session cache was not saved")})]:[]]))}if(t.mode!=="ask"&&(!i||t.runSha)&&m.push(f("diff",()=>new xi().commitAgentWork({config:t}).then(y=>y.hasChanges?qR({config:t,diff:y.diff,diffBinary:y.diffBinary,resultDiff:y.resultDiff,resultDiffBinary:y.resultDiffBinary}):{}).then(y=>{u&&(h=y)}))),m.length>0){let y=!1,b;if(await Promise.race([Promise.all(m).then(()=>{y=!0}),new Promise(A=>{b=setTimeout(A,a),b.unref()})]),clearTimeout(b),!y){c=!0;for(let A of l)d(A,"failed");Wd.warn("Session preservation exceeded its budget",{reason:o,budgetMs:a}),e&&K.inc("credit_preservation.timed_out",1)}}u=!1,d("session-update","started");let S=kn(),E=s?{state:"interrupted",interrupt_reason:"credit_limit"}:{result:i?.result??n?.result??e?.error.userMessage??"Cancelled by user",state:i?"error":"cancelled"},x=!1;try{await __(()=>Mr(t.id,t.sessionId,{...E,...e?{credit_limit_exceeded:!0}:{},...r?{native_session_id:r}:{},...p?{native_session_s3_key:p}:{},...h,...e?{metadata:{final_agent_config:e.finalAgentConfig,...e.creditWrapUp?{credit_wrap_up:!0}:{}}}:{}}),{maxRetries:S?2:3,baseDelay:S?100:1e3,onRetry:(y,b)=>{Wd.error(`Error updating agent runner session (attempt ${y}):`,b),Wd.log("Retrying...")}}),x=!0,d("session-update","succeeded")}catch(y){c=!0,d("session-update","failed"),Wd.warn("Could not update session (site may have been deleted)",{error:y})}return d("all",c?"failed":"succeeded"),{sessionUpdated:x}};import gkt from"process";var pX=re("shutdown"),d1e=!1,_kt,ykt=async t=>{if(d1e)return;if(d1e=!0,pX.info("Shutting down...",{signal:t}),K.inc("shutdown.started",1,{signal:t,reason:su()??t,active_session:QQ()}),TTe(t),K.distribution("session.hot_followups",_Me()),!QQ()){let r=Date.now(),n=yMe(),i=SMe();n!==void 0&&K.timing("session.last_linger",r-n),i!==void 0&&K.timing("session.total_linger",r-i)}let e=_kt?.close().catch(r=>{pX.error("Error closing server during graceful shutdown",r)});await EMe(),await e,await rde(),await lde(),pX.info("Shutdown complete"),gkt.exit(0)};var f1e=t=>{ykt(t)};var Av=re("session_finalization"),h1e=({config:t,teardown:e,withStageTimer:r,cwd:n})=>{let i=!1;return async s=>{switch(s.outcome){case"completed":{Du(s.artifacts.nativeSessionId),i=!0,await hX({config:t,artifacts:s.artifacts,withStageTimer:r}),await Skt({cwd:n,pipelineSpan:s.pipelineSpan}),await e.run("completed");return}case"redeployed":{Du(s.artifacts.nativeSessionId),i=!0,await hX({config:t,artifacts:s.artifacts,withStageTimer:r}),await e.run("completed");return}case"deploy_failed":throw Du(s.artifacts.nativeSessionId),i=!0,await hX({config:t,artifacts:s.artifacts,withStageTimer:r}),s.error;case"awaiting_input":{let{nativeSessionId:o,pendingInteraction:a}=s;Du(o),i=!0;let c=await vkt({config:t,session:s,cwd:n,withStageTimer:r});OMe(a,t.sessionId,c),await e.run("awaiting_input");return}case"credit_interrupted":{let{nativeSessionId:o}=s;Du(o),i=!0,await m1e({config:t,nativeSessionId:o,interruptReason:"credit_reserve",cwd:n,withStageTimer:r}),Av.log("Credit reserve reached; session set to interrupted",{sessionId:t.sessionId}),await e.run("credit_interrupted");return}case"credit_limit":{let o=s.error.agentSessionId??s.nativeSessionId;Du(o);let a=He().creditInterruptEnabled;if(a&&!kn()&&await Ekt({config:t,session:s,nativeSessionId:o,cwd:n,withStageTimer:r})){await e.run("credit_interrupted");return}let c=a&&kn()&&su()==="credit_limit",u=await rx({config:t,session:s,nativeSessionId:o,...c?{creditInterrupted:!0}:{}});if(c&&u.sessionUpdated){await e.run("credit_interrupted");return}await e.run("cancelled"),f1e("credit_limit_cancelled");return}case"api_resource_not_found":{await e.run("errored");try{await Mr(t.id,t.sessionId,{result:s.error.userMessage,state:"error",metadata:{final_agent_config:s.finalAgentConfig,...s.creditWrapUp?{credit_wrap_up:!0}:{}}})}catch{Av.warn("Could not update session (site may have been deleted)")}return}case"user_cancelled":{let o=s.error?.agentSessionId??s.nativeSessionId;Du(o),await rx({config:t,nativeSessionId:o}),await e.run("cancelled");return}case"auto_shutdown":case"dev_server_stopped":{let o=s.error?.agentSessionId??s.nativeSessionId;Du(o),await rx({config:t,nativeSessionId:o,stoppedSession:{stopReason:s.outcome,result:p1e(s.error)}}),await e.run("cancelled");return}case"interrupted":case"error":{let{error:o}=s,a=p1e(o),c=o?.agentSessionId??s.nativeSessionId,u=s.outcome==="error"?"error":ATe(su()),l=!1;if(!i&&u!==void 0){i=!0,Du(c);try{l=(await rx({config:t,nativeSessionId:c,erroredSession:{reason:u,result:a}})).sessionUpdated}catch(p){Av.warn("Failed to preserve errored session artifacts",{error:p})}}let d=!i&&s.outcome!=="error"&&!!c,f=d?await l1e(t,c):null;if(await e.run("errored"),l)return;try{await Mr(t.id,t.sessionId,{result:a,state:"error",...d?{native_session_id:c}:{},...f?{native_session_s3_key:f}:{}})}catch(p){Av.error("Failed to update session with error state, retrying with minimal payload:",p);try{await Mr(t.id,t.sessionId,{result:"Encountered error when running agent",state:"error"})}catch(h){Av.error("Failed to mark session as errored:",h)}}return}}}},p1e=t=>{let e=t instanceof Error?t.shortMessage||t.message:"";return e?hAe(iM(e)):"Encountered error when running agent"},Skt=async({cwd:t,pipelineSpan:e})=>{try{let r=await OC(t??process.cwd());r.aiTotal>0&&e?.setAttributes({"agent.fn_ai_total":r.aiTotal,"agent.fn_ai_v1":r.v1,"agent.fn_ai_v2":r.v2,"agent.fn_ai_v3":r.v3,"agent.fn_ai_unknown":r.unknown})}catch{}},vkt=async({config:t,session:e,cwd:r,withStageTimer:n})=>n("cleanup",async()=>{let{nativeSessionId:i,pendingInteraction:s}=e,{diffFields:o,nativeSessionS3Key:a}=await g1e({config:t,nativeSessionId:i,cwd:r}),c;try{c=await xMe(t,s,{nativeSessionId:i,nativeSessionS3Key:a??void 0,diffFields:o})}catch(u){throw K.inc("inference.pause_persist_failed",1),o&&K.inc("pending_diff.save",1,{outcome:"failed",step:"persist"}),u}return o&&K.inc("pending_diff.save",1,{outcome:o.diff_produced?"saved":"no_changes"}),c},Ds.timeUnits.minutes(10),{interruptible:!1}),Ekt=async({config:t,session:e,nativeSessionId:r,cwd:n,withStageTimer:i})=>{try{return await m1e({config:t,nativeSessionId:r,interruptReason:"credit_limit",creditLimit:e,cwd:n,withStageTimer:i}),!0}catch(s){return Av.warn("Failed to interrupt the session at the credit limit, cancelling it instead",{error:s}),!1}},m1e=async({config:t,nativeSessionId:e,interruptReason:r,creditLimit:n,cwd:i,withStageTimer:s})=>s("cleanup",async()=>{let{diffFields:o,nativeSessionS3Key:a}=await g1e({config:t,nativeSessionId:e,cwd:i});try{await Mr(t.id,t.sessionId,{state:"interrupted",interrupt_reason:r,...o,...e?{native_session_id:e}:{},...a?{native_session_s3_key:a}:{},...n?{credit_limit_exceeded:!0,metadata:{final_agent_config:n.finalAgentConfig,...n.creditWrapUp?{credit_wrap_up:!0}:{}}}:{}})}catch(c){throw o&&K.inc("pending_diff.save",1,{outcome:"failed",step:"persist"}),c}o&&K.inc("pending_diff.save",1,{outcome:o.diff_produced?"saved":"no_changes"})},Ds.timeUnits.minutes(10),{interruptible:!1}),g1e=async({config:t,nativeSessionId:e,cwd:r})=>{let n=await dMe({config:t,cwd:r}),i=kd(t.runner),s=await BR({config:t,nativeSessionArchive:i,nativeSessionId:e});return await fv({config:t,nativeSessionArchive:i,nativeSessionId:e}),{diffFields:n,nativeSessionS3Key:s}},hX=async({config:t,artifacts:e,withStageTimer:r})=>{await r("cleanup",()=>cMe({config:t,...e,nativeSessionArchive:kd(t.runner)}),Ds.timeUnits.minutes(10),{interruptible:!1})},Du=t=>{t&&l1(t)};var wkt=bkt(import.meta.url),Kd=wkt("../package.json"),Br=re("pipeline_index"),Rv=3,mX=2,Tkt=["codex","gemini"],YOt=t=>{let{config:e}=t;return Hle({agent_runner_id:e.id,session_id:e.sessionId,agent:e.runner,mode:e.mode,orchestrator_version:Kd.version,model:e.model,effort:e.effort},()=>Akt(t))},Akt=async({config:t,apiToken:e,cliPath:r="netlify",cwd:n,filter:i,isHotFollowUp:s=!1,enqueuedAt:o,tracing:a={}})=>{let c,u,l=B=>{u=B},d=Date.now(),f="success",p=!1,h,m,_=!1,S,E=!1,{withStageTimer:x}=RTe(Ds.timeUnits.hours(4)),y=VLe({config:t,cliPath:r,cwd:n,withStageTimer:x}),b=HLe({config:t,cwd:n,database:y,stopUsageTracking:()=>c?.stop()}),A,O=h1e({config:t,teardown:b,withStageTimer:x,cwd:n}),C=B=>(A??=B.outcome,O(B)),I=await nde(Kd.version,t.id,a);Br.log(`Agent runner orchestrator v${Kd.version}`,{featureFlags:He().raw,metrics:fde()});let k={agent:t.runner,mode:t.mode,is_follow_up:t.sessionHistoryContext.length>0,version:Kd.version,fast_init:t.fastInit,credit_wrapup:!1,budget_eligible:!1,budget_constrained:!1,ask_first:!1};Pb({...k});let w=!!t.answeredInteraction;XLe({agentRunnerId:t.id,sessionId:t.sessionId,devServerId:process.env.NETLIFY_DEV_SERVER_ID,agent:t.runner,mode:t.mode,version:Kd.version,model:t.model,effort:t.effort,isAnswerResume:w,isHotFollowUp:s}),WLe({isHotFollowUp:s,enqueuedAt:o}),jTe(t.sessionId);try{await sE(ht(),"run-pipeline",{},I,async B=>{await JQ(ZQ(),t.runner),B?.setAttributes({"gen_ai.capability.name":t.mode,"session.id":t.sessionId,...process.env.NETLIFY_DEV_SERVER_ID?{"dev_server.id":process.env.NETLIFY_DEV_SERVER_ID}:{}});let{aiGateway:$,context:v,persistSteps:P,runner:M,sha:X}=await x("init",()=>fMe({config:t,apiToken:e,cliPath:r,cwd:n,filter:i,runnerVersion:Kd.version,isHotFollowUp:s}),Ds.timeUnits.minutes(10)),Q=M.runner;He().idleTimeoutEnabled||b.setRunnerCleanup(M.clean),await n1e(t,s),Object.assign(k,_Ae(t)),Pb({...k});let te=lX(t),xe=o1e(t,te),Ae=c1e(xe),ye,Te=!1,be=0,_e,fe=t.resumeAction==="wrap_up";c=t1e(t.id,t.sessionId,t.sessionCreditLimit,{...xe&&!fe?{creditReserve:te,onCreditReserveReached:()=>{if(!Te){if(Ae.getActiveTurn()!=="main"){Te=!0,dX(Ae.getActiveTurn(),te);return}if(!_e){dX("no_session",te);return}Te=!0,be=c?.getCreditsCost()??0,Br.log("Credit reserve reached \u2014 interrupting agent to wrap up",{creditsSpentBeforeWrapUp:be,creditReserve:te}),k.credit_wrapup=!0,Pb({...k}),K.inc("session.credit_wrapup_triggered",1,{credit_reserve:te}),Ae.abortMainTurn()}}}:{}});let le=ZD(t.mode),Ce;t.deployAlias&&t.deployAlias.length>0?Ce=t.deployAlias:(t.deployAlias!==void 0&&!le&&Br.warn("Received empty deploy alias for a non-prod deploy, falling back to local computation"),Ce=mSe(t.id,process.env.SITE_NAME,le));let J=!1,me=!1,j=Object.assign(async Ne=>{J||(J=!0,KLe({isHotFollowUp:s,enqueuedAt:o}));try{c?.onAgentOutput()}catch(Et){return ws(Et)?ye??=Et:Br.warn("Unexpected error in onAgentOutput",{error:Et?.message||Et}),P(Ne)}return!me&&Ne.steps?.some(Et=>Et.category!==W.Environment&&Et.category!==W.SubagentPrompt)&&(me=!0,YLe({isHotFollowUp:s,enqueuedAt:o})),P(Ne)},{flush:P.flush.bind(P)});if(t.sha=X,t.mode==="redeploy"){let Ne=await BMe({cliPath:r,config:t,filter:i,deploySubdomain:Ce,isProdDeploy:le,withStageTimer:x});await c?.stop(),await C({outcome:"redeployed",artifacts:Ne});return}let U=kMe(),z=t.mode==="ask",H;t.mode==="create"&&!t.resumeAction&&(H=(await x("create",()=>vAe({config:t,cwd:n}))).additionalContext),H=await iSe(H,t);let Z=await y.prepare({deploySubdomain:Ce,isProdDeploy:le});Z&&(H=[Z,H].filter(Boolean).join(`
|
|
711
|
+
`)}var jh=re("usage_tracker"),ckt=4e3,ukt=5e3,lkt=2e4,dkt=(t,e,r)=>t===!0||r!=null&&e!=null&&e>=r,fkt=(t,e,r)=>e!=null&&e>0&&r!=null&&t!=null&&e-t<=r,t1e=(t,e,r,{creditReserve:n,onCreditReserveReached:i}={})=>{let s=!1,o=!1,a=!1,c=!1,u,l,d,f=r,p,h=i!=null&&n!=null,m=()=>{p&&(clearInterval(p),p=void 0)},_=O=>{m(),p=setInterval(()=>{E()},O),p.unref?.()},S=async()=>{try{let O=await $C(t,e);jh.log("Usage update response",{usage:O?.usage});let C=O?.usage?.total_credits_cost;C!=null&&(u=C);let I=O?.enforced_credits_cap;if(I!=null&&I!==f){let w=f==null;f=I,jh.log("Took the session credit limit from a usage poll",{sessionCreditLimit:f,totalCreditsCost:C,isFirstLimit:w}),w&&K.inc("session.credit_cap_late_arrival",1)}let k=dkt(O?.credit_limit_exceeded,C,f);if(k&&(jh.log("Credit limit exceeded",{totalCreditsCost:C,sessionCreditLimit:f}),a||(l=Date.now(),d=C??u??0,_(lkt)),a=!0),h&&!c&&!k&&fkt(C,f,n)){c=!0,jh.log("Credit reserve reached",{totalCreditsCost:C,sessionCreditLimit:f,creditReserve:n});try{i()}catch(w){jh.warn("onCreditReserveReached callback threw",{error:w?.message||w})}}}catch(O){jh.warn("Failed to update usage",{error:O?.message||O})}},E=FN(S,ckt);return{onAgentOutput:()=>{if(a)throw new bs("AI credit usage exceeded enforced limit.",503,"Credit limit reached. Check credit limits to continue using Agent Runners.");o||(s=!0,p||_(ukt))},stop:async()=>{o||(o=!0,m(),s&&(E.cancel(),jh.log("Sending final usage update"),await S(),l!==void 0&&(K.timing("credit_limit.overage_duration",Date.now()-l),K.distribution("credit_limit.overage_credits",Math.max(0,(u??d??0)-(d??0))))))},getCreditsCost:()=>u,getSessionCreditLimit:()=>f}};var r1e=re("session_credit_limit"),pkt=async t=>{if(t.sessionCreditLimit!=null)return{limit:t.sessionCreditLimit,source:"env"};try{let e=(await $C(t.id,t.sessionId))?.enforced_credits_cap;if(e!=null)return r1e.log("Resolved the session credit limit from the usage endpoint",{limit:e}),{limit:e,source:"usage"}}catch(e){r1e.warn("Usage call for the session credit limit failed",{error:e?.message||e})}return{source:"none"}},n1e=async(t,e=!1)=>{let{limit:r,source:n}=await pkt(t);t.sessionCreditLimit=r,K.inc("session.credit_cap_source",1,{source:n,hot_follow_up:e})};var Hd=re("credit_wrapup"),i1e="low",hkt=t=>{if(t.mode==="ask")return p2;if(t.mode==="normal")return h2;let e=qT(t);return BT(t,e)?d2:f2},s1e=t=>typeof t=="number"?t:void 0,lX=t=>{let e=He(),r=e.creditWrapUpReserveByModeAgentAndModel[t.mode]?.[t.runner];return s1e(t.model?r?.models?.[t.model]:void 0)??s1e(r?.agent)??e.creditWrapUpReserve},o1e=(t,e)=>{if(e<=0)return!1;let r=He();return t.mode==="create"?r.creditWrapUpEnabled:t.mode==="ask"||t.mode==="normal"?r.creditWrapUpNormalEnabled:!1},dX=(t,e)=>{if(t==="fix"){Hd.log("Credit reserve reached outside of the main inference turn \u2014 letting the fix finish without a wrap-up"),K.inc("session.credit_wrapup_skipped_fix_turn",1,{credit_reserve:e});return}if(t==="no_session"){Hd.warn("Credit reserve reached but no session id yet \u2014 skipping wrap-up interrupt"),K.inc("session.credit_wrapup_skipped_no_session",1,{credit_reserve:e});return}Hd.log("Credit reserve reached with no turn to interrupt \u2014 the agent had already finished")},a1e=(t,e,r)=>{if(e==null)return;let n=Math.max(0,e-t.creditsSpentBeforeWrapUp);Hd.log("Credit wrap-up cost",{credits:n,creditsCostAtSessionEnd:e,effort:i1e,inferenceAfterWrapUp:r,...t}),K.distribution("session.credit_wrapup_cost",n,{outcome:t.outcome,effort:i1e,credit_reserve:t.creditReserve,inference_after_wrap_up:r,...t.model?{model:t.model}:{}})},fX=async({runnerResult:t,interruptedSessionId:e,creditsSpentBeforeWrapUp:r,cliPath:n,config:i,context:s,runner:o,aiGateway:a,cwd:c,persistSteps:u,usageTracker:l,withStageTimer:d,answerFold:f})=>{let p=lX(i),h=new AbortController,m=!1,_=!1,S,E=Object.assign(async b=>{try{l.onAgentOutput()}catch(A){ws(A)&&!m&&(m=!0,Hd.log("Wrap-up turn spent the credit reserve \u2014 stopping wrap-up",{creditsSpentBeforeWrapUp:r}),K.inc("session.credit_wrapup_aborted",1,{credit_reserve:p}),h.abort())}return u(b)},{flush:u.flush.bind(u)});Hd.log("Running credit wrap-up inference turn",{creditsSpentBeforeWrapUp:r,creditReserve:p});try{await u({steps:[{category:W.WrapUp,message:`You are reaching your usage limit. ${i.mode==="ask"?"Wrapping up and gathering the info found so far.":"Wrapping up and leaving your work in a usable state."}`}],duration:0})}catch{}let x;try{let{runnerResult:b}=await d("inference-credit-wrapup",()=>qd({cliPath:n,config:i,context:s,runner:o,persistSteps:E,aiGateway:a,cwd:c,contextPrefix:hkt(i),priorAgentSessionId:e,resumeForCreditWrapUp:!0,answerFold:f,forceLowEffortForCreditWrapUp:!0,abortSignal:h.signal}));S=b.resolvedModel,m&&Hd.log("Wrap-up turn was aborted due to budget limit"),x={...FT(t,b),resolvedModel:t.resolvedModel,effort:t.effort,resolvedProviderEffort:t.resolvedProviderEffort}}catch(b){Hd.warn("Credit wrap-up turn failed \u2014 proceeding with pre-wrap-up result",{error:b?.message||b}),K.inc("session.credit_wrapup_failed",1,{credit_reserve:p}),_=!0,x=t}let y=S??t.resolvedModel;return{runnerResult:x,costReport:{creditsSpentBeforeWrapUp:r,creditReserve:p,outcome:_?"failed":m?"aborted":"completed",...y?{model:y}:{}}}};var c1e=t=>{let e,r=!1;return{getActiveTurn:()=>e?"main":r?"fix":"none",getMainTurnAbortSignal:()=>t?e?.signal:void 0,startMainTurn:()=>{e=new AbortController},finishMainTurn:()=>{e=void 0},runFixTurn:async n=>{r=!0;try{return await n()}finally{r=!1}},abortMainTurn:()=>e?.abort()}};var u1e=4e3,mkt=3e4,Wd=re("in_progress_work_preservation"),l1e=async(t,e)=>{if(!e)return null;l1(e);let r=kd(t.runner),n=null;try{await Promise.race([Promise.all([c1({runnerId:t.id,sessionId:t.sessionId,archive:r,nativeSessionId:e}).then(i=>{n=i}),fv({config:t,nativeSessionArchive:r,nativeSessionId:e}).catch(i=>{Wd.warn("Failed to seed the native session cache before teardown",{error:i?.message||i})})]),new Promise(i=>{setTimeout(i,u1e).unref()})])}catch(i){Wd.warn("Failed to preserve native session before teardown",{error:i?.message||i})}return n},rx=async({config:t,session:e,nativeSessionId:r,stoppedSession:n,erroredSession:i,creditInterrupted:s=!1})=>{let o=i?.reason??n?.stopReason??(e?"credit_limit":"user_cancelled"),a=(e||i)&&!kn()?mkt:u1e,c=!1,u=!0,l=new Set,d=(y,b)=>{K.inc("session.preservation",1,{reason:o,step:y,outcome:b}),Wd.info("Session preservation",{sessionId:t.sessionId,reason:o,step:y,outcome:b})},f=async(y,b)=>{l.add(y),d(y,"started");try{await b(),u&&d(y,"succeeded")}catch(A){c=!0,u&&d(y,"failed"),Wd.warn("Failed to preserve session artifacts",{reason:o,step:y,error:A})}finally{l.delete(y)}};d("all","started");let p=null,h={},m=[],_=kd(t.runner);if(r&&_){let y={config:t,nativeSessionArchive:_,nativeSessionId:r};m.push(Promise.allSettled([f("conversation",async()=>{let b=await BR(y);if(!b)throw new Error("Native session upload returned no archive key");u&&(p=b)}),...!n&&!i&&He().warmNativeResumeEnabled&&t.cache?.dir?[f("cache",async()=>{if(!await fv(y))throw new Error("Native session cache was not saved")})]:[]]))}if(t.mode!=="ask"&&(!i||t.runSha)&&m.push(f("diff",()=>new xi().commitAndCreateDiffs({config:t}).then(y=>y.hasChanges?qR({config:t,diff:y.diff,diffBinary:y.diffBinary,resultDiff:y.resultDiff,resultDiffBinary:y.resultDiffBinary}):{}).then(y=>{u&&(h=y)}))),m.length>0){let y=!1,b;if(await Promise.race([Promise.all(m).then(()=>{y=!0}),new Promise(A=>{b=setTimeout(A,a),b.unref()})]),clearTimeout(b),!y){c=!0;for(let A of l)d(A,"failed");Wd.warn("Session preservation exceeded its budget",{reason:o,budgetMs:a}),e&&K.inc("credit_preservation.timed_out",1)}}u=!1,d("session-update","started");let S=kn(),E=s?{state:"interrupted",interrupt_reason:"credit_limit"}:{result:i?.result??n?.result??e?.error.userMessage??"Cancelled by user",state:i?"error":"cancelled"},x=!1;try{await __(()=>Mr(t.id,t.sessionId,{...E,...e?{credit_limit_exceeded:!0}:{},...r?{native_session_id:r}:{},...p?{native_session_s3_key:p}:{},...h,...e?{metadata:{final_agent_config:e.finalAgentConfig,...e.creditWrapUp?{credit_wrap_up:!0}:{}}}:{}}),{maxRetries:S?2:3,baseDelay:S?100:1e3,onRetry:(y,b)=>{Wd.error(`Error updating agent runner session (attempt ${y}):`,b),Wd.log("Retrying...")}}),x=!0,d("session-update","succeeded")}catch(y){c=!0,d("session-update","failed"),Wd.warn("Could not update session (site may have been deleted)",{error:y})}return d("all",c?"failed":"succeeded"),{sessionUpdated:x}};import gkt from"process";var pX=re("shutdown"),d1e=!1,_kt,ykt=async t=>{if(d1e)return;if(d1e=!0,pX.info("Shutting down...",{signal:t}),K.inc("shutdown.started",1,{signal:t,reason:su()??t,active_session:QQ()}),TTe(t),K.distribution("session.hot_followups",_Me()),!QQ()){let r=Date.now(),n=yMe(),i=SMe();n!==void 0&&K.timing("session.last_linger",r-n),i!==void 0&&K.timing("session.total_linger",r-i)}let e=_kt?.close().catch(r=>{pX.error("Error closing server during graceful shutdown",r)});await EMe(),await e,await rde(),await lde(),pX.info("Shutdown complete"),gkt.exit(0)};var f1e=t=>{ykt(t)};var Av=re("session_finalization"),h1e=({config:t,teardown:e,withStageTimer:r,cwd:n})=>{let i=!1;return async s=>{switch(s.outcome){case"completed":{Du(s.artifacts.nativeSessionId),i=!0,await hX({config:t,artifacts:s.artifacts,withStageTimer:r}),await Skt({cwd:n,pipelineSpan:s.pipelineSpan}),await e.run("completed");return}case"redeployed":{Du(s.artifacts.nativeSessionId),i=!0,await hX({config:t,artifacts:s.artifacts,withStageTimer:r}),await e.run("completed");return}case"deploy_failed":throw Du(s.artifacts.nativeSessionId),i=!0,await hX({config:t,artifacts:s.artifacts,withStageTimer:r}),s.error;case"awaiting_input":{let{nativeSessionId:o,pendingInteraction:a}=s;Du(o),i=!0;let c=await vkt({config:t,session:s,cwd:n,withStageTimer:r});OMe(a,t.sessionId,c),await e.run("awaiting_input");return}case"credit_interrupted":{let{nativeSessionId:o}=s;Du(o),i=!0,await m1e({config:t,nativeSessionId:o,interruptReason:"credit_reserve",cwd:n,withStageTimer:r}),Av.log("Credit reserve reached; session set to interrupted",{sessionId:t.sessionId}),await e.run("credit_interrupted");return}case"credit_limit":{let o=s.error.agentSessionId??s.nativeSessionId;Du(o);let a=He().creditInterruptEnabled;if(a&&!kn()&&await Ekt({config:t,session:s,nativeSessionId:o,cwd:n,withStageTimer:r})){await e.run("credit_interrupted");return}let c=a&&kn()&&su()==="credit_limit",u=await rx({config:t,session:s,nativeSessionId:o,...c?{creditInterrupted:!0}:{}});if(c&&u.sessionUpdated){await e.run("credit_interrupted");return}await e.run("cancelled"),f1e("credit_limit_cancelled");return}case"api_resource_not_found":{await e.run("errored");try{await Mr(t.id,t.sessionId,{result:s.error.userMessage,state:"error",metadata:{final_agent_config:s.finalAgentConfig,...s.creditWrapUp?{credit_wrap_up:!0}:{}}})}catch{Av.warn("Could not update session (site may have been deleted)")}return}case"user_cancelled":{let o=s.error?.agentSessionId??s.nativeSessionId;Du(o),await rx({config:t,nativeSessionId:o}),await e.run("cancelled");return}case"auto_shutdown":case"dev_server_stopped":{let o=s.error?.agentSessionId??s.nativeSessionId;Du(o),await rx({config:t,nativeSessionId:o,stoppedSession:{stopReason:s.outcome,result:p1e(s.error)}}),await e.run("cancelled");return}case"interrupted":case"error":{let{error:o}=s,a=p1e(o),c=o?.agentSessionId??s.nativeSessionId,u=s.outcome==="error"?"error":ATe(su()),l=!1;if(!i&&u!==void 0){i=!0,Du(c);try{l=(await rx({config:t,nativeSessionId:c,erroredSession:{reason:u,result:a}})).sessionUpdated}catch(p){Av.warn("Failed to preserve errored session artifacts",{error:p})}}let d=!i&&s.outcome!=="error"&&!!c,f=d?await l1e(t,c):null;if(await e.run("errored"),l)return;try{await Mr(t.id,t.sessionId,{result:a,state:"error",...d?{native_session_id:c}:{},...f?{native_session_s3_key:f}:{}})}catch(p){Av.error("Failed to update session with error state, retrying with minimal payload:",p);try{await Mr(t.id,t.sessionId,{result:"Encountered error when running agent",state:"error"})}catch(h){Av.error("Failed to mark session as errored:",h)}}return}}}},p1e=t=>{let e=t instanceof Error?t.shortMessage||t.message:"";return e?hAe(iM(e)):"Encountered error when running agent"},Skt=async({cwd:t,pipelineSpan:e})=>{try{let r=await OC(t??process.cwd());r.aiTotal>0&&e?.setAttributes({"agent.fn_ai_total":r.aiTotal,"agent.fn_ai_v1":r.v1,"agent.fn_ai_v2":r.v2,"agent.fn_ai_v3":r.v3,"agent.fn_ai_unknown":r.unknown})}catch{}},vkt=async({config:t,session:e,cwd:r,withStageTimer:n})=>n("cleanup",async()=>{let{nativeSessionId:i,pendingInteraction:s}=e,{diffFields:o,nativeSessionS3Key:a}=await g1e({config:t,nativeSessionId:i,cwd:r}),c;try{c=await xMe(t,s,{nativeSessionId:i,nativeSessionS3Key:a??void 0,diffFields:o})}catch(u){throw K.inc("inference.pause_persist_failed",1),o&&K.inc("pending_diff.save",1,{outcome:"failed",step:"persist"}),u}return o&&K.inc("pending_diff.save",1,{outcome:o.diff_produced?"saved":"no_changes"}),c},Ds.timeUnits.minutes(10),{interruptible:!1}),Ekt=async({config:t,session:e,nativeSessionId:r,cwd:n,withStageTimer:i})=>{try{return await m1e({config:t,nativeSessionId:r,interruptReason:"credit_limit",creditLimit:e,cwd:n,withStageTimer:i}),!0}catch(s){return Av.warn("Failed to interrupt the session at the credit limit, cancelling it instead",{error:s}),!1}},m1e=async({config:t,nativeSessionId:e,interruptReason:r,creditLimit:n,cwd:i,withStageTimer:s})=>s("cleanup",async()=>{let{diffFields:o,nativeSessionS3Key:a}=await g1e({config:t,nativeSessionId:e,cwd:i});try{await Mr(t.id,t.sessionId,{state:"interrupted",interrupt_reason:r,...o,...e?{native_session_id:e}:{},...a?{native_session_s3_key:a}:{},...n?{credit_limit_exceeded:!0,metadata:{final_agent_config:n.finalAgentConfig,...n.creditWrapUp?{credit_wrap_up:!0}:{}}}:{}})}catch(c){throw o&&K.inc("pending_diff.save",1,{outcome:"failed",step:"persist"}),c}o&&K.inc("pending_diff.save",1,{outcome:o.diff_produced?"saved":"no_changes"})},Ds.timeUnits.minutes(10),{interruptible:!1}),g1e=async({config:t,nativeSessionId:e,cwd:r})=>{let n=await dMe({config:t,cwd:r}),i=kd(t.runner),s=await BR({config:t,nativeSessionArchive:i,nativeSessionId:e});return await fv({config:t,nativeSessionArchive:i,nativeSessionId:e}),{diffFields:n,nativeSessionS3Key:s}},hX=async({config:t,artifacts:e,withStageTimer:r})=>{await r("cleanup",()=>cMe({config:t,...e,nativeSessionArchive:kd(t.runner)}),Ds.timeUnits.minutes(10),{interruptible:!1})},Du=t=>{t&&l1(t)};var wkt=bkt(import.meta.url),Kd=wkt("../package.json"),Br=re("pipeline_index"),Rv=3,mX=2,Tkt=["codex","gemini"],YOt=t=>{let{config:e}=t;return Hle({agent_runner_id:e.id,session_id:e.sessionId,agent:e.runner,mode:e.mode,orchestrator_version:Kd.version,model:e.model,effort:e.effort},()=>Akt(t))},Akt=async({config:t,apiToken:e,cliPath:r="netlify",cwd:n,filter:i,isHotFollowUp:s=!1,enqueuedAt:o,tracing:a={}})=>{let c,u,l=B=>{u=B},d=Date.now(),f="success",p=!1,h,m,_=!1,S,E=!1,{withStageTimer:x}=RTe(Ds.timeUnits.hours(4)),y=VLe({config:t,cliPath:r,cwd:n,withStageTimer:x}),b=HLe({config:t,cwd:n,database:y,stopUsageTracking:()=>c?.stop()}),A,O=h1e({config:t,teardown:b,withStageTimer:x,cwd:n}),C=B=>(A??=B.outcome,O(B)),I=await nde(Kd.version,t.id,a);Br.log(`Agent runner orchestrator v${Kd.version}`,{featureFlags:He().raw,metrics:fde()});let k={agent:t.runner,mode:t.mode,is_follow_up:t.sessionHistoryContext.length>0,version:Kd.version,fast_init:t.fastInit,credit_wrapup:!1,budget_eligible:!1,budget_constrained:!1,ask_first:!1};Pb({...k});let w=!!t.answeredInteraction;XLe({agentRunnerId:t.id,sessionId:t.sessionId,devServerId:process.env.NETLIFY_DEV_SERVER_ID,agent:t.runner,mode:t.mode,version:Kd.version,model:t.model,effort:t.effort,isAnswerResume:w,isHotFollowUp:s}),WLe({isHotFollowUp:s,enqueuedAt:o}),jTe(t.sessionId);try{await sE(ht(),"run-pipeline",{},I,async B=>{await JQ(ZQ(),t.runner),B?.setAttributes({"gen_ai.capability.name":t.mode,"session.id":t.sessionId,...process.env.NETLIFY_DEV_SERVER_ID?{"dev_server.id":process.env.NETLIFY_DEV_SERVER_ID}:{}});let{aiGateway:$,context:v,persistSteps:P,runner:M,sha:X}=await x("init",()=>fMe({config:t,apiToken:e,cliPath:r,cwd:n,filter:i,runnerVersion:Kd.version,isHotFollowUp:s}),Ds.timeUnits.minutes(10)),Q=M.runner;He().idleTimeoutEnabled||b.setRunnerCleanup(M.clean),await n1e(t,s),Object.assign(k,_Ae(t)),Pb({...k});let te=lX(t),xe=o1e(t,te),Ae=c1e(xe),ye,Te=!1,be=0,_e,fe=t.resumeAction==="wrap_up";c=t1e(t.id,t.sessionId,t.sessionCreditLimit,{...xe&&!fe?{creditReserve:te,onCreditReserveReached:()=>{if(!Te){if(Ae.getActiveTurn()!=="main"){Te=!0,dX(Ae.getActiveTurn(),te);return}if(!_e){dX("no_session",te);return}Te=!0,be=c?.getCreditsCost()??0,Br.log("Credit reserve reached \u2014 interrupting agent to wrap up",{creditsSpentBeforeWrapUp:be,creditReserve:te}),k.credit_wrapup=!0,Pb({...k}),K.inc("session.credit_wrapup_triggered",1,{credit_reserve:te}),Ae.abortMainTurn()}}}:{}});let le=ZD(t.mode),Ce;t.deployAlias&&t.deployAlias.length>0?Ce=t.deployAlias:(t.deployAlias!==void 0&&!le&&Br.warn("Received empty deploy alias for a non-prod deploy, falling back to local computation"),Ce=mSe(t.id,process.env.SITE_NAME,le));let J=!1,me=!1,j=Object.assign(async Ne=>{J||(J=!0,KLe({isHotFollowUp:s,enqueuedAt:o}));try{c?.onAgentOutput()}catch(Et){return ws(Et)?ye??=Et:Br.warn("Unexpected error in onAgentOutput",{error:Et?.message||Et}),P(Ne)}return!me&&Ne.steps?.some(Et=>Et.category!==W.Environment&&Et.category!==W.SubagentPrompt)&&(me=!0,YLe({isHotFollowUp:s,enqueuedAt:o})),P(Ne)},{flush:P.flush.bind(P)});if(t.sha=X,t.mode==="redeploy"){let Ne=await BMe({cliPath:r,config:t,filter:i,deploySubdomain:Ce,isProdDeploy:le,withStageTimer:x});await c?.stop(),await C({outcome:"redeployed",artifacts:Ne});return}let U=kMe(),z=t.mode==="ask",H;t.mode==="create"&&!t.resumeAction&&(H=(await x("create",()=>vAe({config:t,cwd:n}))).additionalContext),H=await iSe(H,t);let Z=await y.prepare({deploySubdomain:Ce,isProdDeploy:le});Z&&(H=[Z,H].filter(Boolean).join(`
|
|
712
712
|
|
|
713
713
|
`));let ae=async()=>{let Ne=await LMe(t,n);_=!0;let Et=await fX({runnerResult:{steps:[],duration:0},interruptedSessionId:Ne,creditsSpentBeforeWrapUp:c.getCreditsCost()??0,cliPath:r,config:t,context:v,runner:Q,aiGateway:$,cwd:n,persistSteps:P,usageTracker:c,withStageTimer:x,answerFold:U});return S=Et.costReport,{runnerResult:Et.runnerResult,nativeResume:!!Ne}};Ae.startMainTurn();let ee=await x("inference",async()=>{if(fe)return ae();try{return await qd({cliPath:r,config:t,context:v,runner:Q,persistSteps:j,aiGateway:$,additionalContext:H,cwd:n,answerFold:U,abortSignal:Ae.getMainTurnAbortSignal(),onSessionId:Ne=>{_e=Ne,u=Ne}})}catch(Ne){if(!(Ne instanceof lg)||t.mode!=="rebase"&&t.mode!=="conflict_resolution")throw Ne;for(let Et of Tkt){if(ye&&ws(ye))throw ye;if(Et===t.runner)continue;let ra=HS[Et];if(ra){Br.log(`Primary runner ${t.runner} failed in ${t.mode} mode, falling back to ${Et}`),Pb({...k,agent:Et}),_e=void 0,u=void 0,await JQ(ZQ(),Et);try{let Ui=await qd({cliPath:r,config:{...t,runner:Et},context:v,runner:ra.runner,persistSteps:j,aiGateway:$,additionalContext:H,cwd:n,answerFold:U,abortSignal:Ae.getMainTurnAbortSignal(),onSessionId:cs=>{_e=cs,u=cs}});return t.runner=Et,Q=ra.runner,He().idleTimeoutEnabled||b.setRunnerCleanup(ra.clean),Ui}catch(Ui){if(ws(Ui))throw Ui;Br.error(`Fallback runner ${Et} also failed`,{error:String(Ui)})}}}throw Ne}}).finally(Ae.finishMainTurn),ue=ee.runnerResult;u=ue.agentSessionId??u,p=ee.nativeResume??!1,h=ue.resolvedModel,m=ue.effort;let $e=async(Ne,Et)=>{let ra=await y.currentContext(),{runnerResult:Ui}=await Ae.runFixTurn(()=>x(Ne,()=>qd({cliPath:r,config:t,context:v,runner:Q,persistSteps:j,aiGateway:$,buildErrors:Et,additionalContext:ra,priorAgentSessionId:u,onSessionId:l,answerFold:U}))).catch(cs=>{throw u=cs?.agentSessionId??u,cs});if(u=Ui.agentSessionId??u,ye)throw Object.assign(ye,{agentSessionId:u}),ye;ue=FT(ue,Ui)},ot=ue.agentSessionId,Pe=xe&&Te&&ue.aborted&&!ye;if(Pe&&He().creditInterruptEnabled&&ot){await C({outcome:"credit_interrupted",nativeSessionId:ot}),f="credit_interrupted";return}if(Pe&&ot&&c){_=!0;let Ne=await fX({runnerResult:ue,interruptedSessionId:ot,creditsSpentBeforeWrapUp:be,cliPath:r,config:t,context:v,runner:Q,aiGateway:$,cwd:n,persistSteps:P,usageTracker:c,withStageTimer:x,answerFold:U});ue=Ne.runnerResult,u=ue.agentSessionId??u,S=Ne.costReport}if(t.mode==="create"&&await SAe(n??process.cwd()),ye)throw Object.assign(ye,{agentSessionId:ue.agentSessionId}),ye;if(ue.pendingInteraction){await C({outcome:"awaiting_input",pendingInteraction:ue.pendingInteraction,nativeSessionId:ue.agentSessionId}),f="awaiting_input";return}let Ke=await y.generateMigrations();if(Ke.error){Br.log("Migration generation failed, running inference to fix the issue"),await $e("inference-migration-fix",[`Running \`drizzle-kit generate\` to generate database migrations failed with the following error:
|
|
714
714
|
|
package/package.json
CHANGED