@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/bin.js
CHANGED
|
@@ -597,7 +597,7 @@ For example, you can use the \`pathToFileURL()\` method of the \`url\` core modu
|
|
|
597
597
|
`,LF:`
|
|
598
598
|
`,concatBytes:WJ},n$t=(t,e)=>{let r=new Uint8Array(t.length+e.length);return r.set(t,0),r.set(e,t.length),r},i$t={windowsNewline:new Uint8Array([13,10]),unixNewline:new Uint8Array([10]),LF:10,concatBytes:n$t};import{Buffer as s$t}from"buffer";var ANe=(t,e)=>t?void 0:o$t.bind(void 0,e),o$t=function*(t,e){if(typeof e!="string"&&!En(e)&&!s$t.isBuffer(e))throw new TypeError(`The \`${t}\` option's transform must use "objectMode: true" to receive as input: ${typeof e}.`);yield e},xNe=(t,e)=>t?a$t.bind(void 0,e):c$t.bind(void 0,e),a$t=function*(t,e){ONe(t,e),yield e},c$t=function*(t,e){if(ONe(t,e),typeof e!="string"&&!En(e))throw new TypeError(`The \`${t}\` option's function must yield a string or an Uint8Array, not ${typeof e}.`);yield e},ONe=(t,e)=>{if(e==null)throw new TypeError(`The \`${t}\` option's function must not call \`yield ${e}\`.
|
|
599
599
|
Instead, \`yield\` should either be called with a value, or not be called at all. For example:
|
|
600
|
-
if (condition) { yield value; }`)};import{Buffer as u$t}from"buffer";import{StringDecoder as l$t}from"string_decoder";var K$=(t,e,r)=>{if(r)return;if(t)return{transform:d$t.bind(void 0,new TextEncoder)};let n=new l$t(e);return{transform:f$t.bind(void 0,n),final:p$t.bind(void 0,n)}},d$t=function*(t,e){u$t.isBuffer(e)?yield cl(e):typeof e=="string"?yield t.encode(e):yield e},f$t=function*(t,e){yield En(e)?t.write(e):e},p$t=function*(t){let e=t.end();e!==""&&(yield e)};import{callbackify as PNe}from"util";var YJ=PNe(async(t,e,r,n)=>{e.currentIterable=t(...r);try{for await(let i of e.currentIterable)n.push(i)}finally{delete e.currentIterable}}),Y$=async function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=m$t}=e[r];for await(let i of n(t))yield*Y$(i,e,r+1)},INe=async function*(t){for(let[e,{final:r}]of Object.entries(t))yield*h$t(r,Number(e),t)},h$t=async function*(t,e,r){if(t!==void 0)for await(let n of t())yield*Y$(n,r,e+1)},CNe=PNe(async({currentIterable:t},e)=>{if(t!==void 0){await(e?t.throw(e):t.return());return}if(e)throw e}),m$t=function*(t){yield t};var JJ=(t,e,r,n)=>{try{for(let i of t(...e))r.push(i);n()}catch(i){n(i)}},NNe=(t,e)=>[...e.flatMap(r=>[...Xh(r,t,0)]),...VA(t)],Xh=function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=_$t}=e[r];for(let i of n(t))yield*Xh(i,e,r+1)},VA=function*(t){for(let[e,{final:r}]of Object.entries(t))yield*g$t(r,Number(e),t)},g$t=function*(t,e,r){if(t!==void 0)for(let n of t())yield*Xh(n,r,e+1)},_$t=function*(t){yield t};var ZJ=({value:t,value:{transform:e,final:r,writableObjectMode:n,readableObjectMode:i},optionName:s},{encoding:o})=>{let a={},c=DNe(t,o,s),u=Zh(e),l=Zh(r),d=u?YJ.bind(void 0,Y$,a):JJ.bind(void 0,Xh),f=u||l?YJ.bind(void 0,INe,a):JJ.bind(void 0,VA),p=u||l?CNe.bind(void 0,a):void 0;return{stream:new y$t({writableObjectMode:n,writableHighWaterMark:kNe(n),readableObjectMode:i,readableHighWaterMark:kNe(i),transform(m,_,y){d([m,c,0],this,y)},flush(m){f([c],this,m)},destroy:p})}},J$=(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=DNe(o,r,a);t=NNe(c,t)}return t},DNe=({transform:t,final:e,binary:r,writableObjectMode:n,readableObjectMode:i,preserveNewlines:s},o,a)=>{let c={};return[{transform:ANe(n,a)},K$(r,o,n),W$(r,s,n,c),{transform:t,final:e},{transform:xNe(i,a)},RNe({binary:r,preserveNewlines:s,readableObjectMode:i,state:c})].filter(Boolean)};var LNe=(t,e)=>{for(let r of S$t(t))E$t(t,r,e)},S$t=t=>new Set(Object.entries(t).filter(([,{direction:e}])=>e==="input").map(([e])=>Number(e))),E$t=(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 ${af[a]} with synchronous methods.`)}let o=i.map(({contents:a})=>a).map(a=>v$t(a,n));r.input=LA(o)},v$t=(t,e)=>{let r=J$(t,e,"utf8",!0);return b$t(r),LA(r)},b$t=t=>{let e=t.find(r=>typeof r!="string"&&!En(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 A$t,appendFileSync as x$t}from"fs";var Z$=({stdioItems:t,encoding:e,verboseInfo:r,fdNumber:n})=>n!=="all"&&cS(r,n)&&!zs.has(e)&&w$t(n)&&(t.some(({type:i,value:s})=>i==="native"&&T$t.has(s))||t.every(({type:i})=>Mo.has(i))),w$t=t=>t===1||t===2,T$t=new Set(["pipe","overlapped"]),$Ne=async(t,e,r,n)=>{for await(let i of t)R$t(e)||UNe(i,r,n)},MNe=(t,e,r)=>{for(let n of t)UNe(n,e,r)},R$t=t=>t._readableState.pipes.length>0,UNe=(t,e,r)=>{let n=d$(t);jc({type:"output",verboseMessage:n,fdNumber:e,verboseInfo:r})};var FNe=({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)=>O$t({result:c,fileDescriptors:t,fdNumber:u,state:s,outputFiles:o,isMaxBuffer:n,verboseInfo:i},r)),...s}},O$t=({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=jCe(t,s,d),p=cl(f),{stdioItems:h,objectMode:m}=e[r],_=P$t([p],h,c,n),{serializedResult:y,finalResult:v=y}=I$t({chunks:_,objectMode:m,encoding:c,lines:u,stripFinalNewline:l,fdNumber:r});C$t({serializedResult:y,fdNumber:r,state:n,verboseInfo:o,encoding:c,stdioItems:h,objectMode:m});let S=a[r]?v:void 0;try{return n.error===void 0&&N$t(y,h,i),S}catch(g){return n.error=g,S}},P$t=(t,e,r,n)=>{try{return J$(t,e,r,!1)}catch(i){return n.error=i,t}},I$t=({chunks:t,objectMode:e,encoding:r,lines:n,stripFinalNewline:i,fdNumber:s})=>{if(e)return{serializedResult:t};if(r==="buffer")return{serializedResult:LA(t)};let o=ePe(t,r);return n[s]?{serializedResult:o,finalResult:KJ(o,!i[s],e)}:{serializedResult:o}},C$t=({serializedResult:t,fdNumber:e,state:r,verboseInfo:n,encoding:i,stdioItems:s,objectMode:o})=>{if(!Z$({stdioItems:s,encoding:i,verboseInfo:n,fdNumber:e}))return;let a=KJ(t,!1,o);try{MNe(a,e,n)}catch(c){r.error??=c}},N$t=(t,e,r)=>{for(let{path:n,append:i}of e.filter(({type:s})=>V$.has(s))){let s=typeof n=="string"?n:n.toString();i||r.has(s)?x$t(n,t):(r.add(s),A$t(n,t))}};var jNe=([,t,e],r)=>{if(r.all)return t===void 0?e:e===void 0?t:Array.isArray(t)?Array.isArray(e)?[...t,...e]:[...t,dl(e,r,"all")]:Array.isArray(e)?[dl(t,r,"all"),...e]:En(t)&&En(e)?nJ([t,e]):`${t}${e}`};import{once as XJ}from"events";var zNe=async(t,e)=>{let[r,n]=await k$t(t);return e.isForcefullyTerminated??=!1,[r,n]},k$t=async t=>{let[e,r]=await Promise.allSettled([XJ(t,"spawn"),XJ(t,"exit")]);return e.status==="rejected"?[]:r.status==="rejected"?qNe(t):r.value},qNe=async t=>{try{return await XJ(t,"exit")}catch{return qNe(t)}},BNe=async t=>{let[e,r]=await t;if(!D$t(e,r)&&QJ(e,r))throw new Pa;return[e,r]},D$t=(t,e)=>t===void 0&&e===void 0,QJ=(t,e)=>t!==0||e!==null;var HNe=({error:t,status:e,signal:r,output:n},{maxBuffer:i})=>{let s=L$t(t,e,r),o=s?.code==="ETIMEDOUT",a=FCe(s,n,i);return{resultError:s,exitCode:e,signal:r,timedOut:o,isMaxBuffer:a}},L$t=(t,e,r)=>t!==void 0?t:QJ(e,r)?new Pa:void 0;var VNe=(t,e,r)=>{let{file:n,commandArguments:i,command:s,escapedCommand:o,startTime:a,verboseInfo:c,options:u,fileDescriptors:l}=M$t(t,e,r),d=j$t({file:n,commandArguments:i,options:u,command:s,escapedCommand:o,verboseInfo:c,fileDescriptors:l,startTime:a});return yS(d,c,u)},M$t=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=p$(t,e,r),a=U$t(r),{file:c,commandArguments:u,options:l}=k$(t,e,a);F$t(l);let d=vNe(l,o);return{file:c,commandArguments:u,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},U$t=t=>t.node&&!t.ipc?{...t,ipc:!1}:t,F$t=({ipc:t,ipcInput:e,detached:r,cancelSignal:n})=>{e&&X$("ipcInput"),t&&X$("ipc: true"),r&&X$("detached: true"),n&&X$("cancelSignal")},X$=t=>{throw new TypeError(`The "${t}" option cannot be used with synchronous methods.`)},j$t=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,verboseInfo:s,fileDescriptors:o,startTime:a})=>{let c=z$t({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}=HNe(c,r),{output:h,error:m=u}=FNe({fileDescriptors:o,syncResult:c,options:r,isMaxBuffer:p,verboseInfo:s}),_=h.map((v,S)=>dl(v,r,S)),y=dl(jNe(h,r),r,"all");return B$t({error:m,exitCode:l,signal:d,timedOut:f,isMaxBuffer:p,stdio:_,all:y,options:r,command:n,escapedCommand:i,startTime:a})},z$t=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:s,startTime:o})=>{try{LNe(s,r);let a=q$t(r);return $$t(...D$(t,e,a))}catch(a){return _S({error:a,command:n,escapedCommand:i,fileDescriptors:s,options:r,startTime:o,isSync:!0})}},q$t=({encoding:t,maxBuffer:e,...r})=>({...r,encoding:"buffer",maxBuffer:z$(e)}),B$t=({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?q$({command:c,escapedCommand:u,stdio:s,all:o,ipcOutput:[],options:a,startTime:l}):HA({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 I1t}from"events";import{spawn as C1t}from"child_process";import JNe from"process";import{once as eZ,on as H$t}from"events";var GNe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0,filter:s}={})=>(dS({methodName:"getOneMessage",isSubprocess:r,ipc:n,isConnected:x$(t)}),V$t({anyProcess:t,channel:e,isSubprocess:r,filter:s,reference:i})),V$t=async({anyProcess:t,channel:e,isSubprocess:r,filter:n,reference:i})=>{w$(e,i);let s=of(t,e,r),o=new AbortController;try{return await Promise.race([G$t(s,n,o),W$t(s,r,o),K$t(s,r,o)])}catch(a){throw fS(t),a}finally{o.abort(),T$(e,i)}},G$t=async(t,e,{signal:r})=>{if(e===void 0){let[n]=await eZ(t,"message",{signal:r});return n}for await(let[n]of H$t(t,"message",{signal:r}))if(e(n))return n},W$t=async(t,e,{signal:r})=>{await eZ(t,"disconnect",{signal:r}),NIe(e)},K$t=async(t,e,{signal:r})=>{let[n]=await eZ(t,"strict:error",{signal:r});throw E$(n,e)};import{once as KNe,on as Y$t}from"events";var YNe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0}={})=>tZ({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:!r,reference:i}),tZ=({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:i,reference:s})=>{dS({methodName:"getEachMessage",isSubprocess:r,ipc:n,isConnected:x$(t)}),w$(e,s);let o=of(t,e,r),a=new AbortController,c={};return J$t(t,o,a),Z$t({ipcEmitter:o,isSubprocess:r,controller:a,state:c}),X$t({anyProcess:t,channel:e,ipcEmitter:o,isSubprocess:r,shouldAwait:i,controller:a,state:c,reference:s})},J$t=async(t,e,r)=>{try{await KNe(e,"disconnect",{signal:r.signal}),r.abort()}catch{}},Z$t=async({ipcEmitter:t,isSubprocess:e,controller:r,state:n})=>{try{let[i]=await KNe(t,"strict:error",{signal:r.signal});n.error=E$(i,e),r.abort()}catch{}},X$t=async function*({anyProcess:t,channel:e,ipcEmitter:r,isSubprocess:n,shouldAwait:i,controller:s,state:o,reference:a}){try{for await(let[c]of Y$t(r,"message",{signal:s.signal}))WNe(o),yield c}catch{WNe(o)}finally{s.abort(),T$(e,a),n||fS(t),i&&await t}},WNe=({error:t})=>{if(t)throw t};var ZNe=(t,{ipc:e})=>{Object.assign(t,QNe(t,!1,e))},XNe=()=>{let t=JNe,e=!0,r=JNe.channel!==void 0;return{...QNe(t,e,r),getCancelSignal:sCe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})}},QNe=(t,e,r)=>({sendMessage:C$.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getOneMessage:GNe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getEachMessage:YNe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})});import{ChildProcess as Q$t}from"child_process";import{PassThrough as eMt,Readable as tMt,Writable as rMt,Duplex as nMt}from"stream";var eke=({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,verboseInfo:o})=>{VJ(n);let a=new Q$t;iMt(a,n),Object.assign(a,{readable:sMt,writable:oMt,duplex:aMt});let c=_S({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,isSync:!1}),u=cMt(c,o,i);return{subprocess:a,promise:u}},iMt=(t,e)=>{let r=GA(),n=GA(),i=GA(),s=Array.from({length:e.length-3},GA),o=GA(),a=[r,n,i,...s];Object.assign(t,{stdin:r,stdout:n,stderr:i,all:o,stdio:a})},GA=()=>{let t=new eMt;return t.end(),t},sMt=()=>new tMt({read(){}}),oMt=()=>new rMt({write(){}}),aMt=()=>new nMt({read(){},write(){}}),cMt=async(t,e,r)=>yS(t,e,r);import{createReadStream as tke,createWriteStream as rke}from"fs";import{Buffer as uMt}from"buffer";import{Readable as WA,Writable as lMt,Duplex as dMt}from"stream";var ike=(t,e)=>G$(fMt,t,e,!1),KA=({type:t,optionName:e})=>{throw new TypeError(`The \`${e}\` option cannot be ${af[t]}.`)},nke={fileNumber:KA,generator:ZJ,asyncGenerator:ZJ,nodeStream:({value:t})=>({stream:t}),webTransform({value:{transform:t,writableObjectMode:e,readableObjectMode:r}}){let n=e||r;return{stream:dMt.fromWeb(t,{objectMode:n})}},duplex:({value:{transform:t}})=>({stream:t}),native(){}},fMt={input:{...nke,fileUrl:({value:t})=>({stream:tke(t)}),filePath:({value:{file:t}})=>({stream:tke(t)}),webStream:({value:t})=>({stream:WA.fromWeb(t)}),iterable:({value:t})=>({stream:WA.from(t)}),asyncIterable:({value:t})=>({stream:WA.from(t)}),string:({value:t})=>({stream:WA.from(t)}),uint8Array:({value:t})=>({stream:WA.from(uMt.from(t))})},output:{...nke,fileUrl:({value:t})=>({stream:rke(t)}),filePath:({value:{file:t,append:e}})=>({stream:rke(t,e?{flags:"a"}:{})}),webStream:({value:t})=>({stream:lMt.fromWeb(t)}),iterable:KA,asyncIterable:KA,string:KA,uint8Array:KA}};import{on as pMt,once as ske}from"events";import{PassThrough as hMt,getDefaultHighWaterMark as mMt}from"stream";import{finished as cke}from"stream/promises";function Qh(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let i of t)nZ(i);let e=t.some(({readableObjectMode:i})=>i),r=gMt(t,e),n=new rZ({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return n}var gMt=(t,e)=>{if(t.length===0)return mMt(e);let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},rZ=class extends hMt{#e=new Set([]);#r=new Set([]);#t=new Set([]);#n;#s=Symbol("unpipe");#i=new WeakMap;add(e){if(nZ(e),this.#e.has(e))return;this.#e.add(e),this.#n??=_Mt(this,this.#e,this.#s);let r=EMt({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(nZ(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)}},_Mt=async(t,e,r)=>{Q$(t,oke);let n=new AbortController;try{await Promise.race([yMt(t,n),SMt(t,e,r,n)])}finally{n.abort(),Q$(t,-oke)}},yMt=async(t,{signal:e})=>{try{await cke(t,{signal:e,cleanup:!0})}catch(r){throw uke(t,r),r}},SMt=async(t,e,r,{signal:n})=>{for await(let[i]of pMt(t,"unpipe",{signal:n}))e.has(i)&&i.emit(r)},nZ=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},EMt=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:s,unpipeEvent:o})=>{Q$(t,ake);let a=new AbortController;try{await Promise.race([vMt(s,e,a),bMt({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:a}),wMt({stream:e,streams:r,ended:n,aborted:i,unpipeEvent:o,controller:a})])}finally{a.abort(),Q$(t,-ake)}r.size>0&&r.size===n.size+i.size&&(n.size===0&&i.size>0?iZ(t):TMt(t))},vMt=async(t,e,{signal:r})=>{try{await t,r.aborted||iZ(e)}catch(n){r.aborted||uke(e,n)}},bMt=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:s}})=>{try{await cke(e,{signal:s,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(o){if(s.aborted||!r.has(e))return;lke(o)?i.add(e):dke(t,o)}},wMt=async({stream:t,streams:e,ended:r,aborted:n,unpipeEvent:i,controller:{signal:s}})=>{if(await ske(t,i,{signal:s}),!t.readable)return ske(s,"abort",{signal:s});e.delete(t),r.delete(t),n.delete(t)},TMt=t=>{t.writable&&t.end()},uke=(t,e)=>{lke(e)?iZ(t):dke(t,e)},lke=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",iZ=t=>{(t.readable||t.writable)&&t.destroy()},dke=(t,e)=>{t.destroyed||(t.once("error",RMt),t.destroy(e))},RMt=()=>{},Q$=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},oke=2,ake=1;import{finished as fke}from"stream/promises";var ES=(t,e)=>{t.pipe(e),AMt(t,e),xMt(t,e)},AMt=async(t,e)=>{if(!(Oa(t)||Oa(e))){try{await fke(t,{cleanup:!0,readable:!0,writable:!1})}catch{}sZ(e)}},sZ=t=>{t.writable&&t.end()},xMt=async(t,e)=>{if(!(Oa(t)||Oa(e))){try{await fke(e,{cleanup:!0,readable:!1,writable:!0})}catch{}oZ(t)}},oZ=t=>{t.readable&&t.destroy()};var pke=(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})=>Mo.has(c)))OMt(t,a,o,i);for(let{stream:a}of s.filter(({type:c})=>!Mo.has(c)))IMt({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]:Qh(s);ES(o,i)}},OMt=(t,e,r,n)=>{r==="output"?ES(t.stdio[n],e):ES(e,t.stdio[n]);let i=PMt[n];i!==void 0&&(t[i]=e),t.stdio[n]=e},PMt=["stdin","stdout","stderr"],IMt=({subprocess:t,stream:e,direction:r,fdNumber:n,pipeGroups:i,controller:s})=>{if(e===void 0)return;CMt(e,s);let[o,a]=r==="output"?[e,t.stdio[n]]:[t.stdio[n],e],c=i.get(o)??[];i.set(o,[...c,a])},CMt=(t,{signal:e})=>{Oa(t)&&Yh(t,NMt,e)},NMt=2;import{addAbortListener as LMt}from"events";var em=[];em.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&em.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&em.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var eM=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",aZ=Symbol.for("signal-exit emitter"),cZ=globalThis,kMt=Object.defineProperty.bind(Object),uZ=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(cZ[aZ])return cZ[aZ];kMt(cZ,aZ,{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}},tM=class{},DMt=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),lZ=class extends tM{onExit(){return()=>{}}load(){}unload(){}},dZ=class extends tM{#e=fZ.platform==="win32"?"SIGINT":"SIGHUP";#r=new uZ;#t;#n;#s;#i={};#o=!1;constructor(e){super(),this.#t=e,this.#i={};for(let r of em)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(!eM(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 em)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,em.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 eM(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"&&eM(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)}},fZ=globalThis.process,{onExit:hke,load:ELr,unload:vLr}=DMt(eM(fZ)?new dZ(fZ):new lZ);var mke=(t,{cleanup:e,detached:r},{signal:n})=>{if(!e||r)return;let i=hke(()=>{t.kill()});LMt(n,()=>{i()})};var _ke=({source:t,sourcePromise:e,boundOptions:r,createNested:n},...i)=>{let s=f$(),{destination:o,destinationStream:a,destinationError:c,from:u,unpipeSignal:l}=$Mt(r,n,i),{sourceStream:d,sourceError:f}=UMt(t,u),{options:p,fileDescriptors:h}=qc.get(t);return{sourcePromise:e,sourceStream:d,sourceOptions:p,sourceError:f,destination:o,destinationStream:a,destinationError:c,unpipeSignal:l,fileDescriptors:h,startTime:s}},$Mt=(t,e,r)=>{try{let{destination:n,pipeOptions:{from:i,to:s,unpipeSignal:o}={}}=MMt(t,e,...r),a=b$(n,s);return{destination:n,destinationStream:a,from:i,unpipeSignal:o}}catch(n){return{destinationError:n}}},MMt=(t,e,r,...n)=>{if(Array.isArray(r))return{destination:e(gke,t)(r,...n),pipeOptions:t};if(typeof r=="string"||r instanceof URL||tJ(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]=r$(r,...n);return{destination:e(gke)(i,s,o),pipeOptions:o}}if(qc.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}`)},gke=({options:t})=>({options:{...t,stdin:"pipe",piped:!0}}),UMt=(t,e)=>{try{return{sourceStream:pS(t,e)}}catch(r){return{sourceError:r}}};var Ske=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n,fileDescriptors:i,sourceOptions:s,startTime:o})=>{let a=FMt({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n});if(a!==void 0)throw pZ({error:a,fileDescriptors:i,sourceOptions:s,startTime:o})},FMt=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n})=>{if(e!==void 0&&n!==void 0)return n;if(n!==void 0)return oZ(t),n;if(e!==void 0)return sZ(r),e},pZ=({error:t,fileDescriptors:e,sourceOptions:r,startTime:n})=>_S({error:t,command:yke,escapedCommand:yke,fileDescriptors:e,options:r,startTime:n,isSync:!1}),yke="source.pipe(destination)";var Eke=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 jMt}from"stream/promises";var vke=(t,e,r)=>{let n=rM.has(e)?qMt(t,e):zMt(t,e);return Yh(t,HMt,r.signal),Yh(e,VMt,r.signal),BMt(e),n},zMt=(t,e)=>{let r=Qh([t]);return ES(r,e),rM.set(e,r),r},qMt=(t,e)=>{let r=rM.get(e);return r.add(t),r},BMt=async t=>{try{await jMt(t,{cleanup:!0,readable:!1,writable:!0})}catch{}rM.delete(t)},rM=new WeakMap,HMt=2,VMt=1;import{aborted as GMt}from"util";var bke=(t,e)=>t===void 0?[]:[WMt(t,e)],WMt=async(t,{sourceStream:e,mergedStream:r,fileDescriptors:n,sourceOptions:i,startTime:s})=>{await GMt(t,e),await r.remove(e);let o=new Error("Pipe canceled by `unpipeSignal` option.");throw pZ({error:o,fileDescriptors:n,sourceOptions:i,startTime:s})};var nM=(t,...e)=>{if(Yr(e[0]))return nM.bind(void 0,{...t,boundOptions:{...t.boundOptions,...e[0]}});let{destination:r,...n}=_ke(t,...e),i=KMt({...n,destination:r});return i.pipe=nM.bind(void 0,{...t,source:r,sourcePromise:i,boundOptions:{}}),i},KMt=async({sourcePromise:t,sourceStream:e,sourceOptions:r,sourceError:n,destination:i,destinationStream:s,destinationError:o,unpipeSignal:a,fileDescriptors:c,startTime:u})=>{let l=YMt(t,i);Ske({sourceStream:e,sourceError:n,destinationStream:s,destinationError:o,fileDescriptors:c,sourceOptions:r,startTime:u});let d=new AbortController;try{let f=vke(e,s,d);return await Promise.race([Eke(l),...bke(a,{sourceStream:e,mergedStream:f,sourceOptions:r,fileDescriptors:c,startTime:u})])}finally{d.abort()}},YMt=(t,e)=>Promise.allSettled([t,e]);import{setImmediate as r1t}from"timers/promises";import{on as JMt}from"events";import{getDefaultHighWaterMark as ZMt}from"stream";var iM=({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:n,encoding:i,preserveNewlines:s})=>{let o=new AbortController;return XMt(e,o),Tke({stream:t,controller:o,binary:r,shouldEncode:!t.readableObjectMode&&n,encoding:i,shouldSplit:!t.readableObjectMode,preserveNewlines:s})},XMt=async(t,e)=>{try{await t}catch{}finally{e.abort()}},hZ=({stream:t,onStreamEnd:e,lines:r,encoding:n,stripFinalNewline:i,allMixed:s})=>{let o=new AbortController;QMt(e,o,t);let a=t.readableObjectMode&&!s;return Tke({stream:t,controller:o,binary:n==="buffer",shouldEncode:!a,encoding:n,shouldSplit:!a&&r,preserveNewlines:!i})},QMt=async(t,e,r)=>{try{await t}catch{r.destroy()}finally{e.abort()}},Tke=({stream:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})=>{let a=JMt(t,"data",{signal:e.signal,highWaterMark:wke,highWatermark:wke});return e1t({onStdoutChunk:a,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})},mZ=ZMt(!0),wke=mZ,e1t=async function*({onStdoutChunk:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o}){let a=t1t({binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o});try{for await(let[c]of t)yield*Xh(c,a,0)}catch(c){if(!e.signal.aborted)throw c}finally{yield*VA(a)}},t1t=({binary:t,shouldEncode:e,encoding:r,shouldSplit:n,preserveNewlines:i})=>[K$(t,r,!e),W$(t,i,!n,{})].filter(Boolean);var Rke=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=n1t({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:a,verboseInfo:u,streamInfo:l});if(!i){await Promise.all([i1t(t),d]);return}let f=GJ(c,r),p=hZ({stream:t,onStreamEnd:e,lines:o,encoding:n,stripFinalNewline:f,allMixed:a}),[h]=await Promise.all([s1t({stream:t,iterable:p,fdNumber:r,encoding:n,maxBuffer:s,lines:o}),d]);return h},n1t=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:i,verboseInfo:s,streamInfo:{fileDescriptors:o}})=>{if(!Z$({stdioItems:o[r]?.stdioItems,encoding:n,verboseInfo:s,fdNumber:r}))return;let a=hZ({stream:t,onStreamEnd:e,lines:!0,encoding:n,stripFinalNewline:!0,allMixed:i});await $Ne(a,t,r,s)},i1t=async t=>{await r1t(),t.readableFlowing===null&&t.resume()},s1t=async({stream:t,stream:{readableObjectMode:e},iterable:r,fdNumber:n,encoding:i,maxBuffer:s,lines:o})=>{try{return e||o?await U$(r,{maxBuffer:s}):i==="buffer"?new Uint8Array(await F$(r,{maxBuffer:s})):await gS(r,{maxBuffer:s})}catch(a){return Ake($Ce({error:a,stream:t,readableObjectMode:e,lines:o,encoding:i,fdNumber:n}))}},gZ=async t=>{try{return await t}catch(e){return Ake(e)}},Ake=({bufferedData:t})=>XOe(t)?new Uint8Array(t):t;import{finished as o1t}from"stream/promises";var YA=async(t,e,r,{isSameDirection:n,stopOnExit:i=!1}={})=>{let s=a1t(t,r),o=new AbortController;try{await Promise.race([...i?[r.exitPromise]:[],o1t(t,{cleanup:!0,signal:o.signal})])}catch(a){s.stdinCleanedUp||l1t(a,e,r,n)}finally{o.abort()}},a1t=(t,{originalStreams:[e],subprocess:r})=>{let n={stdinCleanedUp:!1};return t===e&&c1t(t,r,n),n},c1t=(t,e,r)=>{let{_destroy:n}=t;t._destroy=(...i)=>{u1t(e,r),n.call(t,...i)}},u1t=({exitCode:t,signalCode:e},r)=>{(t!==null||e!==null)&&(r.stdinCleanedUp=!0)},l1t=(t,e,r,n)=>{if(!d1t(t,e,r,n))throw t},d1t=(t,e,r,n=!0)=>r.propagating?xke(t)||sM(t):(r.propagating=!0,_Z(r,e)===n?xke(t):sM(t)),_Z=({fileDescriptors:t},e)=>e!=="all"&&t[e].direction==="input",sM=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",xke=t=>t?.code==="EPIPE";var Oke=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>t.stdio.map((c,u)=>yZ({stream:c,fdNumber:u,encoding:e,buffer:r[u],maxBuffer:n[u],lines:i[u],allMixed:!1,stripFinalNewline:s,verboseInfo:o,streamInfo:a})),yZ=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=YA(t,e,u);if(_Z(u,e)){await l;return}let[d]=await Promise.all([Rke({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 Pke=({stdout:t,stderr:e},{all:r})=>r&&(t||e)?Qh([t,e].filter(Boolean)):void 0,Ike=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>yZ({...f1t(t,r),fdNumber:"all",encoding:e,maxBuffer:n[1]+n[2],lines:i[1]||i[2],allMixed:p1t(t),stripFinalNewline:s,verboseInfo:o,streamInfo:a}),f1t=({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}},p1t=({all:t,stdout:e,stderr:r})=>t&&e&&r&&e.readableObjectMode!==r.readableObjectMode;import{once as h1t}from"events";var Cke=t=>cS(t,"ipc"),Nke=(t,e)=>{let r=d$(t);jc({type:"ipc",verboseMessage:r,fdNumber:"ipc",verboseInfo:e})};var kke=async({subprocess:t,buffer:e,maxBuffer:r,ipc:n,ipcOutput:i,verboseInfo:s})=>{if(!n)return i;let o=Cke(s),a=ul(e,"ipc"),c=ul(r,"ipc");for await(let u of tZ({anyProcess:t,channel:t.channel,isSubprocess:!1,ipc:n,shouldAwait:!1,reference:!0}))a&&(MCe(t,i,c),i.push(u)),o&&Nke(u,s);return i},Dke=async(t,e)=>(await Promise.allSettled([t]),e);var Lke=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:y})=>{let v=zNe(t,f),S={originalStreams:m,fileDescriptors:h,subprocess:t,exitPromise:v,propagating:!1},g=Oke({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:S}),w=Ike({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:S}),A=[],R=kke({subprocess:t,buffer:r,maxBuffer:n,ipc:l,ipcOutput:A,verboseInfo:p}),T=m1t(m,t,S),P=g1t(h,S);try{return await Promise.race([Promise.all([{},BNe(v),Promise.all(g),w,R,mCe(t,d),...T,...P]),_,_1t(t,y),...lCe(t,s,f,y),...CIe({subprocess:t,cancelSignal:o,gracefulCancel:a,context:f,controller:y}),...cCe({subprocess:t,cancelSignal:o,gracefulCancel:a,forceKillAfterDelay:c,context:f,controller:y})])}catch(I){return f.terminationReason??="other",Promise.all([{error:I},v,Promise.all(g.map(O=>gZ(O))),gZ(w),Dke(R,A),Promise.allSettled(T),Promise.allSettled(P)])}},m1t=(t,e,r)=>t.map((n,i)=>n===e.stdio[i]?void 0:YA(n,i,r)),g1t=(t,e)=>t.flatMap(({stdioItems:r},n)=>r.filter(({value:i,stream:s=i})=>Ca(s,{checkOpen:!1})&&!Oa(s)).map(({type:i,value:s,stream:o=s})=>YA(o,n,e,{isSameDirection:Mo.has(i),stopOnExit:i==="native"}))),_1t=async(t,{signal:e})=>{let[r]=await h1t(t,"error",{signal:e});throw r};var $ke=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),JA=(t,e,r)=>{let n=t[r];n.has(e)||n.set(e,[]);let i=n.get(e),s=zc();return i.push(s),{resolve:s.resolve.bind(s),promises:i}},vS=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 y1t}from"stream";import{callbackify as S1t}from"util";import{finished as Mke}from"stream/promises";var SZ=async t=>{if(t!==void 0)try{await EZ(t)}catch{}},Uke=async t=>{if(t!==void 0)try{await vZ(t)}catch{}},EZ=async t=>{await Mke(t,{cleanup:!0,readable:!1,writable:!0})},vZ=async t=>{await Mke(t,{cleanup:!0,readable:!0,writable:!1})},oM=async(t,e)=>{if(await t,e)throw e},aM=(t,e,r)=>{r&&!sM(r)?t.destroy(r):e&&t.destroy()};var Fke=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,binary:i=!0,preserveNewlines:s=!0}={})=>{let o=i||zs.has(r),{subprocessStdout:a,waitReadableDestroy:c}=bZ(t,n,e),{readableEncoding:u,readableObjectMode:l,readableHighWaterMark:d}=wZ(a,o),{read:f,onStdoutDataDone:p}=TZ({subprocessStdout:a,subprocess:t,binary:o,encoding:r,preserveNewlines:s}),h=new y1t({read:f,destroy:S1t(AZ.bind(void 0,{subprocessStdout:a,subprocess:t,waitReadableDestroy:c})),highWaterMark:d,objectMode:l,encoding:u});return RZ({subprocessStdout:a,onStdoutDataDone:p,readable:h,subprocess:t}),h},bZ=(t,e,r)=>{let n=pS(t,e),i=JA(r,n,"readableDestroy");return{subprocessStdout:n,waitReadableDestroy:i}},wZ=({readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r},n)=>n?{readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r}:{readableEncoding:t,readableObjectMode:!0,readableHighWaterMark:mZ},TZ=({subprocessStdout:t,subprocess:e,binary:r,encoding:n,preserveNewlines:i})=>{let s=zc(),o=iM({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:!r,encoding:n,preserveNewlines:i});return{read(){E1t(this,o,s)},onStdoutDataDone:s}},E1t=async(t,e,r)=>{try{let{value:n,done:i}=await e.next();i?r.resolve():t.push(n)}catch{}},RZ=async({subprocessStdout:t,onStdoutDataDone:e,readable:r,subprocess:n,subprocessStdin:i})=>{try{await vZ(t),await n,await SZ(i),await e,r.readable&&r.push(null)}catch(s){await SZ(i),jke(r,s)}},AZ=async({subprocessStdout:t,subprocess:e,waitReadableDestroy:r},n)=>{await vS(r,e)&&(jke(t,n),await oM(e,n))},jke=(t,e)=>{aM(t,t.readable,e)};import{Writable as v1t}from"stream";import{callbackify as zke}from"util";var qke=({subprocess:t,concurrentStreams:e},{to:r}={})=>{let{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}=xZ(t,r,e),o=new v1t({...OZ(n,t,i),destroy:zke(IZ.bind(void 0,{subprocessStdin:n,subprocess:t,waitWritableFinal:i,waitWritableDestroy:s})),highWaterMark:n.writableHighWaterMark,objectMode:n.writableObjectMode});return PZ(n,o),o},xZ=(t,e,r)=>{let n=b$(t,e),i=JA(r,n,"writableFinal"),s=JA(r,n,"writableDestroy");return{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}},OZ=(t,e,r)=>({write:b1t.bind(void 0,t),final:zke(w1t.bind(void 0,t,e,r))}),b1t=(t,e,r,n)=>{t.write(e,r)?n():t.once("drain",n)},w1t=async(t,e,r)=>{await vS(r,e)&&(t.writable&&t.end(),await e)},PZ=async(t,e,r)=>{try{await EZ(t),e.writable&&e.end()}catch(n){await Uke(r),Bke(e,n)}},IZ=async({subprocessStdin:t,subprocess:e,waitWritableFinal:r,waitWritableDestroy:n},i)=>{await vS(r,e),await vS(n,e)&&(Bke(t,i),await oM(e,i))},Bke=(t,e)=>{aM(t,t.writable,e)};import{Duplex as T1t}from"stream";import{callbackify as R1t}from"util";var Hke=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,to:i,binary:s=!0,preserveNewlines:o=!0}={})=>{let a=s||zs.has(r),{subprocessStdout:c,waitReadableDestroy:u}=bZ(t,n,e),{subprocessStdin:l,waitWritableFinal:d,waitWritableDestroy:f}=xZ(t,i,e),{readableEncoding:p,readableObjectMode:h,readableHighWaterMark:m}=wZ(c,a),{read:_,onStdoutDataDone:y}=TZ({subprocessStdout:c,subprocess:t,binary:a,encoding:r,preserveNewlines:o}),v=new T1t({read:_,...OZ(l,t,d),destroy:R1t(A1t.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 RZ({subprocessStdout:c,onStdoutDataDone:y,readable:v,subprocess:t,subprocessStdin:l}),PZ(l,v,c),v},A1t=async({subprocessStdout:t,subprocessStdin:e,subprocess:r,waitReadableDestroy:n,waitWritableFinal:i,waitWritableDestroy:s},o)=>{await Promise.all([AZ({subprocessStdout:t,subprocess:r,waitReadableDestroy:n},o),IZ({subprocessStdin:e,subprocess:r,waitWritableFinal:i,waitWritableDestroy:s},o)])};var CZ=(t,e,{from:r,binary:n=!1,preserveNewlines:i=!1}={})=>{let s=n||zs.has(e),o=pS(t,r),a=iM({subprocessStdout:o,subprocess:t,binary:s,shouldEncode:!0,encoding:e,preserveNewlines:i});return x1t(a,o,t)},x1t=async function*(t,e,r){try{yield*t}finally{e.readable&&e.destroy(),await r}};var Vke=(t,{encoding:e})=>{let r=$ke();t.readable=Fke.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.writable=qke.bind(void 0,{subprocess:t,concurrentStreams:r}),t.duplex=Hke.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.iterable=CZ.bind(void 0,t,e),t[Symbol.asyncIterator]=CZ.bind(void 0,t,e,{})};var Gke=(t,e)=>{for(let[r,n]of P1t){let i=n.value.bind(e);Reflect.defineProperty(t,r,{...n,value:i})}},O1t=(async()=>{})().constructor.prototype,P1t=["then","catch","finally"].map(t=>[t,Reflect.getOwnPropertyDescriptor(O1t,t)]);var Wke=(t,e,r,n)=>{let{file:i,commandArguments:s,command:o,escapedCommand:a,startTime:c,verboseInfo:u,options:l,fileDescriptors:d}=N1t(t,e,r),{subprocess:f,promise:p}=D1t({file:i,commandArguments:s,options:l,startTime:c,verboseInfo:u,command:o,escapedCommand:a,fileDescriptors:d});return f.pipe=nM.bind(void 0,{source:f,sourcePromise:p,boundOptions:{},createNested:n}),Gke(f,p),qc.set(f,{options:l,fileDescriptors:d}),f},N1t=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=p$(t,e,r),{file:a,commandArguments:c,options:u}=k$(t,e,r),l=k1t(u),d=ike(l,o);return{file:a,commandArguments:c,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},k1t=({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}},D1t=({file:t,commandArguments:e,options:r,startTime:n,verboseInfo:i,command:s,escapedCommand:o,fileDescriptors:a})=>{let c;try{c=C1t(...D$(t,e,r))}catch(h){return eke({error:h,command:s,escapedCommand:o,fileDescriptors:a,options:r,startTime:n,verboseInfo:i})}let u=new AbortController;I1t(Number.POSITIVE_INFINITY,u.signal);let l=[...c.stdio];pke(c,a,u),mke(c,r,u);let d={},f=zc();c.kill=PIe.bind(void 0,{kill:c.kill.bind(c),options:r,onInternalError:f,context:d,controller:u}),c.all=Pke(c,r),Vke(c,r),ZNe(c,r);let p=L1t({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}},L1t=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 Lke({subprocess:t,options:e,context:c,verboseInfo:n,fileDescriptors:i,originalStreams:s,onInternalError:u,controller:l});l.abort(),u.resolve();let y=h.map((g,w)=>dl(g,e,w)),v=dl(m,e,"all"),S=$1t({errorInfo:d,exitCode:f,signal:p,stdio:y,all:v,ipcOutput:_,context:c,options:e,command:o,escapedCommand:a,startTime:r});return yS(S,n,e)},$1t=({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?HA({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 Bc,isForcefullyTerminated:o.isForcefullyTerminated,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:s,options:a,startTime:l,isSync:!1}):q$({command:c,escapedCommand:u,stdio:n,all:i,ipcOutput:s,options:a,startTime:l});var cM=(t,e)=>{let r=Object.fromEntries(Object.entries(e).map(([n,i])=>[n,M1t(n,t[n],i)]));return{...t,...r}},M1t=(t,e,r)=>U1t.has(t)&&Yr(e)&&Yr(r)?{...e,...r}:r,U1t=new Set(["env",...aJ]);var cf=(t,e,r,n)=>{let i=(o,a,c)=>cf(o,a,r,c),s=(...o)=>F1t({mapArguments:t,deepOptions:r,boundOptions:e,setBoundExeca:n,createNested:i},...o);return n!==void 0&&n(s,i,e),s},F1t=({mapArguments:t,deepOptions:e={},boundOptions:r={},setBoundExeca:n,createNested:i},s,...o)=>{if(Yr(s))return i(t,cM(r,s),n);let{file:a,commandArguments:c,options:u,isSync:l}=j1t({mapArguments:t,firstArgument:s,nextArguments:o,deepOptions:e,boundOptions:r});return l?VNe(a,c,u):Wke(a,c,u,i)},j1t=({mapArguments:t,firstArgument:e,nextArguments:r,deepOptions:n,boundOptions:i})=>{let s=iPe(e)?sPe(e,r):[e,...r],[o,a,c]=r$(...s),u=cM(cM(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 Kke=({file:t,commandArguments:e})=>Jke(t,e),Yke=({file:t,commandArguments:e})=>({...Jke(t,e),isSync:!0}),Jke=(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]=z1t(t);return{file:r,commandArguments:n}},z1t=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(q1t)){let i=r.at(-1);i&&i.endsWith("\\")?r[r.length-1]=`${i.slice(0,-1)} ${n}`:r.push(n)}return r},q1t=/ +/g;var Zke=(t,e,r)=>{t.sync=e(B1t,r),t.s=t.sync},Xke=({options:t})=>Qke(t),B1t=({options:t})=>({...Qke(t),isSync:!0}),Qke=t=>({options:{...H1t(t),...t}}),H1t=({input:t,inputFile:e,stdio:r})=>t===void 0&&e===void 0&&r===void 0?{stdin:"inherit"}:{},eDe={preferLocal:!0};var tDe=cf(()=>({})),l1r=cf(()=>({isSync:!0})),rDe=cf(Kke),d1r=cf(Yke),f1r=cf(fCe),p1r=cf(Xke,{},eDe,Zke),{sendMessage:h1r,getOneMessage:m1r,getEachMessage:g1r,getCancelSignal:_1r}=XNe();import{Transform as V1t}from"stream";var G1t=["NETLIFY_AI_GATEWAY_KEY"];function W1t(){let t=(process.env.NETLIFY_SENSITIVE_ENV_KEYS||"").split(",").map(e=>e.trim()).filter(Boolean);return[...new Set([...t,...G1t])]}function K1t(t){let e=t.toLowerCase();return e==="true"||e==="false"?!0:t.trim().length<4}function Y1t(){let e=W1t().map(r=>process.env[r]).filter(r=>!(!r||K1t(r)));return[...new Set(e)].sort((r,n)=>n.length-r.length)}function ys(t){if(typeof t!="string")return t;let e=Y1t();if(e.length===0)return t;let r=t;return e.forEach(n=>{let i=new RegExp(J1t(n),"g");r=r.replace(i,"******")}),r}function J1t(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var ZA=class extends V1t{constructor(e={}){super({...e,objectMode:!1})}_transform(e,r,n){let i=e.toString(),s=ys(i);n(null,s)}},uM=Symbol("maskedWrite");function nDe(){if(process.env.NETLIFY_MASK_LOGS!=="false"){if(!process.stdout.write[uM]){let e=process.stdout.write.bind(process.stdout),r=function(n,i,s){let o=typeof n=="string"?ys(n):n;return typeof i=="function"?e(o,i):e(o,i,s)};r[uM]=!0,process.stdout.write=r}if(!process.stderr.write[uM]){let e=process.stderr.write.bind(process.stderr),r=function(n,i,s){let o=typeof n=="string"?ys(n):n;return typeof i=="function"?e(o,i):e(o,i,s)};r[uM]=!0,process.stderr.write=r}}}var iDe=!1,sDe,NZ=t=>{sDe??=t},oDe=t=>{iDe=!0,NZ(t)},an=()=>iDe,Na=()=>sDe,aDe=t=>{switch(t){case"SIGTERM":case"SIGINT":return t;case void 0:return"interrupted";default:return}};var XA=null,cDe=t=>(XA&&XA.destroy(),XA=new Uo({totalAllowedTime:t}),XA),uDe=()=>XA;var Uo=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&&an())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 Ok({stage:e},async()=>a?await Promise.race([r(),a]):await r())}catch(l){throw u="failure",l}finally{te.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 lDe={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 eUt=X1t(import.meta.url),tUt=fl.dirname(eUt),rUt=Q1t(import.meta.url),bS=de("shell"),kZ=new Set,dDe={preferLocal:!0},Dt=(t,e,r)=>{let[n,i]=nUt(e,r),s={...dDe,...i},o=tDe(t,n,s);pDe(o,s),gDe(o);let a=r?.idleTimeout;return a&&a>0&&mDe(o,a),o},fDe=(t,e)=>{let r={...dDe,...e},n=rDe(t,r);return pDe(n,r),gDe(n),e?.idleTimeout&&e.idleTimeout>0&&mDe(n,e.idleTimeout),n},nUt=function(t,e){return Array.isArray(t)?[t,e]:typeof t=="object"&&t!==null?[[],t]:[[],void 0]},pDe=(t,e)=>{if(e.stdio!==void 0||e.stdout!==void 0||e.stderr!==void 0||Vc.env.NETLIFY_LOCAL_QUIET==="true")return;if(Vc.env.NETLIFY_MASK_LOGS!=="false"){t.stdout?.pipe(new ZA).pipe(Vc.stdout),t.stderr?.pipe(new ZA).pipe(Vc.stderr);return}t.stdout?.pipe(Vc.stdout),t.stderr?.pipe(Vc.stderr)},DZ=(t,e="SIGTERM")=>{try{return t.pid&&!t.killed?(Vc.kill(-t.pid,e),bS.log(`Killed process ${t.pid} with signal ${e}`),!0):!1}catch(r){return bS.error("Error killing process:",r),!1}},hDe=t=>DZ(t,"SIGKILL"),mDe=(t,e)=>{let r=null,n=()=>{bS.log(`Process ${t.pid} killed due to idle timeout (no output for ${e}ms)`),DZ(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(bS.log(`Force killing idle process ${t.pid}`),hDe(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)},gDe=t=>{kZ.add(t);let e=uDe();if(e){let r=e.onTimesUp(()=>{bS.log(`Global timer expired, killing process ${t.pid}`),DZ(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(bS.log(`Force killing process ${t.pid} after timeout`),hDe(t))},5e3)});t.on("exit",()=>{kZ.delete(t),r()}),t.on("error",()=>{kZ.delete(t),r()})}};function Gc(t,e){if(!Vc.env.NETLIFY_LOCAL_MODE)try{let i=rUt.resolve(lDe.name),s=fl.dirname(i);for(;s!==fl.dirname(s);){let o=fl.dirname(s);if(fl.basename(o)==="node_modules"){let a=fl.join(o,".bin",e);if(lM.existsSync(a))return a;break}s=o}}catch(i){console.error("Could not resolve package.json",i)}if(Vc.env.NODE_PATH){let i=fl.join(Vc.env.NODE_PATH,".bin",e);if(lM.existsSync(i))return i}let r=fl.join(t,"node_modules",".bin",e);if(lM.existsSync(r))return r;let n=fl.join(tUt,"..","node_modules",".bin",e);if(lM.existsSync(n))return n}import kj from"process";import{fileURLToPath as NKt}from"url";import{createRequire as kKt}from"module";import Xx from"path";import{readFileSync as DKt}from"fs";var iUt="__netlify__getTracer",sUt="__netlify__shutdownTracers",It=(t,e)=>globalThis[iUt]?.(t,e),_De=async()=>globalThis[sUt]?.();function QA(t,e,r,n,i){let s=typeof n=="function"?n:typeof r=="function"?r:i;if(!s)throw new Error("function to execute with active span is missing");return t?t.withActiveSpan(e,r,n,s):s()}import{setTimeout as RKt}from"timers/promises";Ue();import ojt from"process";Ue();var PUt=(t,e)=>{e.recordException(t),e.setStatus({code:xi.ERROR})};var ml=class{constructor(e){this._tracer=e,this.startSpan=e.startSpan.bind(this._tracer),this.startActiveSpan=e.startActiveSpan.bind(this._tracer)}withActiveSpan(e,r,n,i){let{opts:s,ctx:o,fn:a}=lLe(r,n,i);return this._tracer.startActiveSpan(e,s,o,c=>dLe(c,s,a))}withSpan(e,r,n,i){let{opts:s,ctx:o,fn:a}=lLe(r,n,i),c=this._tracer.startSpan(e,s,o);return dLe(c,s,a)}};function lLe(t,e,r){let n,i,s;return!e&&!r?s=t:r?(n=t,i=e,s=r):(n=t,s=e),n=n??{},i=i??sr.active(),{opts:n,ctx:i,fn:s}}function dLe(t,e,r){var n;let i=(n=e.onException)!==null&&n!==void 0?n:PUt,s=o=>{throw i(o,t),t.end(),o};try{let o=r(t);return typeof o?.then=="function"?o.then(a=>(t.end(),a),s):(t.end(),o)}catch(o){throw s(o)}}Ue();var PS=t=>t!==null&&typeof t=="object"&&typeof t.then=="function";var hX=class t{_rawAttributes;_asyncAttributesPending=!1;_schemaUrl;_memoizedAttributes;static FromAttributeList(e,r){let n=new t({},r);return n._rawAttributes=vLe(e),n._asyncAttributesPending=e.filter(([i,s])=>PS(s)).length>0,n}constructor(e,r){let n=e.attributes??{};this._rawAttributes=Object.entries(n).map(([i,s])=>(PS(s)&&(this._asyncAttributesPending=!0),[i,s])),this._rawAttributes=vLe(this._rawAttributes),this._schemaUrl=IUt(r?.schemaUrl)}get asyncAttributesPending(){return this._asyncAttributesPending}async waitForAsyncAttributes(){if(this.asyncAttributesPending){for(let e=0;e<this._rawAttributes.length;e++){let[r,n]=this._rawAttributes[e];this._rawAttributes[e]=[r,PS(n)?await n:n]}this._asyncAttributesPending=!1}}get attributes(){if(this.asyncAttributesPending&&pe.error("Accessing resource attributes before async attributes settled"),this._memoizedAttributes)return this._memoizedAttributes;let e={};for(let[r,n]of this._rawAttributes){if(PS(n)){pe.debug(`Unsettled resource attribute ${r} skipped`);continue}n!=null&&(e[r]??=n)}return this._asyncAttributesPending||(this._memoizedAttributes=e),e}getRawAttributes(){return this._rawAttributes}get schemaUrl(){return this._schemaUrl}merge(e){if(e==null)return this;let r=CUt(this,e),n=r?{schemaUrl:r}:void 0;return t.FromAttributeList([...e.getRawAttributes(),...this.getRawAttributes()],n)}};function mX(t,e){return hX.FromAttributeList(Object.entries(t),e)}function vLe(t){return t.map(([e,r])=>PS(r)?[e,r.catch(n=>{pe.debug("promise rejection for resource attribute: %s - %s",e,n)})]:[e,r])}function IUt(t){if(typeof t=="string"||t===void 0)return t;pe.warn("Schema URL must be string or undefined, got %s. Schema URL will be ignored.",t)}function CUt(t,e){let r=t?.schemaUrl,n=e?.schemaUrl,i=r===void 0||r==="",s=n===void 0||n==="";if(i)return n;if(s||r===n)return r;pe.warn('Schema URL merge conflict: old resource has "%s", updating resource has "%s". Resulting resource will have undefined Schema URL.',r,n)}Ue();var d0=class{emit(e){}enabled(){return!1}},bLe=new d0;var f0=Symbol.for("io.opentelemetry.js.api.logs"),IS=globalThis;function wLe(t,e,r){return n=>n===t?e:r}var gX=1;var _X=class{getLogger(e,r,n){return new d0}},kM=new _X;var DM=class{constructor(e,r,n,i){this._provider=e,this.name=r,this.version=n,this.options=i}emit(e){this._getLogger().emit(e)}enabled(e){return this._getLogger().enabled(e)}_getLogger(){if(this._delegate)return this._delegate;let e=this._provider._getDelegateLogger(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):bLe}};var p0=class{getLogger(e,r,n){var i;return(i=this._getDelegateLogger(e,r,n))!==null&&i!==void 0?i:new DM(this,e,r,n)}_getDelegate(){var e;return(e=this._delegate)!==null&&e!==void 0?e:kM}_setDelegate(e){this._delegate=e}_getDelegateLogger(e,r,n){var i;return(i=this._delegate)===null||i===void 0?void 0:i.getLogger(e,r,n)}};var LM=class t{constructor(){this._proxyLoggerProvider=new p0}static getInstance(){return this._instance||(this._instance=new t),this._instance}setGlobalLoggerProvider(e){return IS[f0]?this.getLoggerProvider():(IS[f0]=wLe(gX,e,kM),this._proxyLoggerProvider._setDelegate(e),e)}getLoggerProvider(){var e,r;return(r=(e=IS[f0])===null||e===void 0?void 0:e.call(IS,gX))!==null&&r!==void 0?r:this._proxyLoggerProvider}getLogger(e,r,n){return this.getLoggerProvider().getLogger(e,r,n)}disable(){delete IS[f0],this._proxyLoggerProvider=new p0}};var TLe=LM.getInstance();function RLe(t,e,r,n){for(let i=0,s=t.length;i<s;i++){let o=t[i];e&&o.setTracerProvider(e),r&&o.setMeterProvider(r),n&&o.setLoggerProvider&&o.setLoggerProvider(n),o.getConfig().enabled||o.enable()}}function ALe(t){t.forEach(e=>e.disable())}function yX(t){let e=t.tracerProvider||zt.getTracerProvider(),r=t.meterProvider||l0.getMeterProvider(),n=t.loggerProvider||TLe.getLoggerProvider(),i=t.instrumentations?.flat()??[];return RLe(i,e,r,n),()=>{ALe(i)}}Ue();var NUt=kn("OpenTelemetry SDK Context Key SUPPRESS_TRACING");function xLe(t){return t.getValue(NUt)===!0}var CS;(function(t){t[t.SUCCESS=0]="SUCCESS",t[t.FAILED=1]="FAILED"})(CS||(CS={}));Ue();var SX="[_0-9a-z-*/]",kUt=`[a-z]${SX}{0,255}`,DUt=`[a-z0-9]${SX}{0,240}@[a-z]${SX}{0,13}`,LUt=new RegExp(`^(?:${kUt}|${DUt})$`),$Ut=/^[ -~]{0,255}[!-~]$/,MUt=/,|=/;function EX(t){return LUt.test(t)}function vX(t){return $Ut.test(t)&&!MUt.test(t)}var UUt=32,OLe=512,PLe=",",ILe="=",$M=class t{_length;_rawTraceState;_internalState;constructor(e){this._rawTraceState=typeof e=="string"?e:"",this._length=this._rawTraceState.length}set(e,r){if(!EX(e)||!vX(r))return this;let n=this._getState(),i=n.get(e),s=this._length;if(typeof i=="string"?s+=r.length-i.length:s+=e.length+r.length+(n.size>0?2:1),s>OLe)return this;let o=new Map(n);return o.delete(e),o.set(e,r),this._fromState(o,s)}unset(e){let r=this._getState(),n=r.get(e);if(typeof n!="string")return this;let i=this._length-(e.length+n.length+1);r.size>1&&(i=i-1);let s=new Map(r);return s.delete(e),this._fromState(s,i)}get(e){return this._getState().get(e)}serialize(){let e="",r=0;for(let n of this._getState())r>0&&(e=PLe+e),e=`${n[0]}${ILe}${n[1]}`+e,r++;return e}_getState(){if(this._internalState)return this._internalState;let e=this._rawTraceState.split(PLe),r=new Map,n=0;for(let i of e){let s=i.trim(),o=s.indexOf(ILe);if(o===-1)continue;let a=s.slice(0,o),c=s.slice(o+1);if(!EX(a)||!vX(c))continue;let u=n+s.length+(r.size>0?1:0);if(!(u>OLe)&&(r.set(a,c),n=u,r.size>=UUt))break}return this._length=n,this._internalState=new Map(Array.from(r.entries()).reverse()),this._internalState}_fromState(e,r){let n=Object.create(t.prototype);return n._internalState=e,n._length=r,n}};var MM="traceparent",UM="tracestate",FUt="00",jUt="(?!ff)[\\da-f]{2}",zUt="(?![0]{32})[\\da-f]{32}",qUt="(?![0]{16})[\\da-f]{16}",BUt="[\\da-f]{2}",HUt=new RegExp(`^\\s?(${jUt})-(${zUt})-(${qUt})-(${BUt})(-.*)?\\s?$`);function CLe(t){let e=HUt.exec(t);return!e||e[1]==="00"&&e[5]?null:{traceId:e[2],spanId:e[3],traceFlags:parseInt(e[4],16)}}var df=class{inject(e,r,n){let i=zt.getSpanContext(e);if(!i||xLe(e)||!Ss(i))return;let s=`${FUt}-${i.traceId}-${i.spanId}-0${Number(i.traceFlags||Ur.NONE).toString(16)}`;n.set(r,MM,s),i.traceState&&n.set(r,UM,i.traceState.serialize())}extract(e,r,n){let i=n.get(r,MM);if(!i)return e;let s=Array.isArray(i)?i[0]:i;if(typeof s!="string")return e;let o=CLe(s);if(!o)return e;o.isRemote=!0;let a=n.get(r,UM);if(a){let c=Array.isArray(a)?a.join(","):a;o.traceState=new $M(typeof c=="string"?c:void 0)}return zt.setSpanContext(e,o)}fields(){return[MM,UM]}};var FM=class{_promise;_resolve;_reject;constructor(){this._promise=new Promise((e,r)=>{this._resolve=e,this._reject=r})}get promise(){return this._promise}resolve(e){this._resolve(e)}reject(e){this._reject(e)}};var h0=class{_isCalled=!1;_deferred=new FM;_callback;_that;constructor(e,r){this._callback=e,this._that=r}get isCalled(){return this._isCalled}get promise(){return this._deferred.promise}call(...e){if(!this._isCalled){this._isCalled=!0;try{Promise.resolve(this._callback.call(this._that,...e)).then(r=>this._deferred.resolve(r),r=>this._deferred.reject(r))}catch(r){this._deferred.reject(r)}}return this._deferred.promise}};var I1=hn(oQ(),1);Ue();var p1e=t=>{throw TypeError(t)},lQ=(t,e,r)=>e.has(t)||p1e("Cannot "+r),P1=(t,e,r)=>(lQ(t,e,"read from private field"),r?r.call(t):e.get(t)),aQ=(t,e,r)=>e.has(t)?p1e("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),l1e=(t,e,r,n)=>(lQ(t,e,"write to private field"),n?n.call(t,r):e.set(t,r),r),sjt=(t,e,r)=>(lQ(t,e,"access private method"),r),d1e="__netlify__getTracer",ajt="__netlify__shutdownTracers",cjt="__nfOTLPTrace",P0,I0,uQ,h1e,ujt=class{constructor(){aQ(this,uQ),aQ(this,P0),aQ(this,I0),l1e(this,P0,new h0(sjt(this,uQ,h1e),this)),l1e(this,I0,pe.createComponentLogger({namespace:"netlify-span-exporter"}))}export(t,e){if(P1(this,I0).debug(`export ${t.length.toString()} spans`),P1(this,P0).isCalled){e({code:CS.FAILED,error:new Error("Exporter has been shutdown")});return}console.log(cjt,JSON.stringify(ljt(t))),e({code:CS.SUCCESS})}shutdown(){return P1(this,P0).call()}};P0=new WeakMap;I0=new WeakMap;uQ=new WeakSet;h1e=function(){return P1(this,I0).debug("Shutting down"),Promise.resolve()};function ljt(t){return{resourceSpans:t.map(e=>{let r=e.spanContext();return{resource:{attributes:O1(e.resource.attributes),droppedAttributesCount:e.droppedAttributesCount},scopeSpans:[{scope:{name:e.instrumentationScope.name,version:e.instrumentationScope.version},spans:[{traceId:r.traceId,spanId:r.spanId,parentSpanId:e.parentSpanContext?.spanId,name:e.name,kind:e.kind||ka.SERVER,startTimeUnixNano:cQ(e.startTime),endTimeUnixNano:cQ(e.endTime),attributes:O1(e.attributes),droppedAttributesCount:e.droppedAttributesCount,events:e.events.map(n=>({name:n.name,timeUnixNano:cQ(n.time),attributes:O1(n.attributes??{}),droppedAttributesCount:n.droppedAttributesCount??0})),droppedEventsCount:e.droppedEventsCount,status:{code:e.status.code,message:e.status.message},links:e.links.map(n=>({spanId:n.context.spanId,traceId:n.context.traceId,attributes:O1(n.attributes??{}),droppedAttributesCount:n.droppedAttributesCount??0})),droppedLinksCount:e.droppedLinksCount}]}]}})}}function O1(t){return Object.keys(t).map(e=>m1e(e,t[e]))}function m1e(t,e){return{key:t,value:g1e(e)}}function g1e(t){let e=typeof t;return e==="string"?{stringValue:t}:e==="number"?Number.isInteger(t)?{intValue:t}:{doubleValue:t}:e==="boolean"?{boolValue:t}:t instanceof Uint8Array?{bytesValue:t}:Array.isArray(t)?{arrayValue:{values:t.map(g1e)}}:e==="object"&&t!=null?{kvlistValue:{values:Object.entries(t).map(([r,n])=>m1e(r,n))}}:{}}function cQ(t){let e=BigInt(1e9);return(BigInt(Math.trunc(t[0]))*e+BigInt(Math.trunc(t[1]))).toString()}var f1e={name:"@netlify/otel",version:"6.0.6",type:"module",engines:{node:"^18.14.0 || >=20.6.1"},main:"./dist/main.cjs",module:"./dist/main.js",types:"./dist/main.d.ts",exports:{".":{require:{types:"./dist/main.d.cts",default:"./dist/main.cjs"},import:{types:"./dist/main.d.ts",default:"./dist/main.js"},default:{types:"./dist/main.d.ts",default:"./dist/main.js"}},"./package.json":"./package.json","./bootstrap":{require:{types:"./dist/bootstrap/main.d.cts",default:"./dist/bootstrap/main.cjs"},import:{types:"./dist/bootstrap/main.d.ts",default:"./dist/bootstrap/main.js"},default:{types:"./dist/bootstrap/main.d.ts",default:"./dist/bootstrap/main.js"}},"./exporter-netlify":{require:{types:"./dist/exporters/netlify.d.cts",default:"./dist/exporters/netlify.cjs"},import:{types:"./dist/exporters/netlify.d.ts",default:"./dist/exporters/netlify.js"},default:{types:"./dist/exporters/netlify.d.ts",default:"./dist/exporters/netlify.js"}},"./instrumentation-fetch":{require:{types:"./dist/instrumentations/fetch.d.cts",default:"./dist/instrumentations/fetch.cjs"},import:{types:"./dist/instrumentations/fetch.d.ts",default:"./dist/instrumentations/fetch.js"},default:{types:"./dist/instrumentations/fetch.d.ts",default:"./dist/instrumentations/fetch.js"}},"./instrumentation-http":{require:{types:"./dist/instrumentations/http.d.cts",default:"./dist/instrumentations/http.cjs"},import:{types:"./dist/instrumentations/http.d.ts",default:"./dist/instrumentations/http.js"},default:{types:"./dist/instrumentations/http.d.ts",default:"./dist/instrumentations/http.js"}},"./opentelemetry":{require:{types:"./dist/opentelemetry.d.cts",default:"./dist/opentelemetry.cjs"},import:{types:"./dist/opentelemetry.d.ts",default:"./dist/opentelemetry.js"},default:{types:"./dist/opentelemetry.d.ts",default:"./dist/opentelemetry.js"}}},files:["dist/**/*"],scripts:{build:"tsup-node",dev:"tsup-node --watch",prepack:"npm run build",test:"run-s build test:ci","test:dev":"run-s build test:dev:*","test:ci":"run-s build test:ci:*","test:dev:vitest":"vitest","test:dev:vitest:watch":"vitest watch","test:ci:vitest":"vitest run",publint:"npx -y publint --strict"},keywords:["netlify","cdn"],license:"MIT",repository:{type:"git",url:"https://github.com/netlify/primitives.git",directory:"packages/otel"},bugs:{url:"https://github.com/netlify/primitives/issues"},author:"Netlify Inc.",devDependencies:{"@netlify/dev-utils":"^5.0.0",msw:"^2.10.5","npm-run-all2":"^7.0.2",tsup:"^8.0.0",vitest:"^3.0.0"},dependencies:{"@opentelemetry/api":"1.9.1","@opentelemetry/core":"2.8.0","@opentelemetry/instrumentation":"^0.220.0","@opentelemetry/resources":"2.9.0","@opentelemetry/sdk-trace-node":"2.9.0"}},_1e=t=>{if(Object.prototype.hasOwnProperty.call(globalThis,d1e))return;let e=ojt.version.slice(1),r=mX({"service.name":t.serviceName,"service.version":t.serviceVersion,"process.runtime.name":"nodejs","process.runtime.version":e,"deployment.environment":t.deploymentEnvironment,"http.url":t.siteUrl,"netlify.site.id":t.siteId,"netlify.site.name":t.siteName}),n=t.spanProcessors??[djt()],i=new I1.NodeTracerProvider({resource:r,spanProcessors:n});i.register({propagator:new df});let s=t.instrumentations??[];yX({instrumentations:s,tracerProvider:i}),Object.defineProperty(globalThis,d1e,{enumerable:!1,configurable:!0,writable:!1,value:function(a,c){return a?new ml(zt.getTracer(a,c)):new ml(zt.getTracer(f1e.name,f1e.version))}}),Object.defineProperty(globalThis,ajt,{enumerable:!1,configurable:!0,writable:!1,value:async()=>await i.shutdown()})},djt=()=>new I1.SimpleSpanProcessor(new ujt);Ue();var C0=hn(oQ(),1);Ue();import*as C1 from"diagnostics_channel";var y1e=class{constructor(t={}){this.instrumentationName="@netlify/otel/instrumentation-fetch",this.instrumentationVersion="1.0.0",this._recordFromReq=new WeakMap,this.config=t,this._channelSubs=[]}getConfig(){return this.config}setConfig(){}setMeterProvider(){}setTracerProvider(t){this.provider=t}getTracerProvider(){return this.provider}annotateFromRequest(t,e){let r=this.config.getRequestAttributes?.(e)??{},n=new URL(e.path,e.origin);t.setAttributes({...r,"http.request.method":e.method,"url.full":n.href,"url.host":n.host,"url.scheme":n.protocol.slice(0,-1),"server.address":n.hostname,"server.port":n.port,...this.prepareHeaders("request",e.headers)})}annotateFromResponse(t,e){let r=this.config.getResponseAttributes?.(e)??{};t.setAttributes({...r,"http.response.status_code":e.statusCode,...this.prepareHeaders("response",e.headers)}),t.setStatus({code:e.statusCode>=400?xi.ERROR:xi.UNSET})}prepareHeaders(t,e){if(!Array.isArray(e))return{};if(this.config.skipHeaders===!0)return{};let r=["*","/.*/"],n=this.config.skipHeaders??[],i=this.config.redactHeaders??[],s=n.some(a=>r.includes(a.toString())),o={};if(s)return o;for(let a=0;a+1<e.length;a=a+2){let c=e[a],u=e[a+1];if(typeof c!="string"&&!Buffer.isBuffer(c)||typeof u!="string"&&!Buffer.isBuffer(u))continue;let l=c.toString().toLowerCase();if(n.some(f=>typeof f=="string"?f==l:f.test(l)))continue;let d=`http.${t}.header.${l}`;i===!0||i.some(f=>typeof f=="string"?f==l:f.test(l))?o[d]="REDACTED":o[d]=u.toString()}return o}getRequestMethod(t){return["HEAD","GET","POST","PUT","PATCH","DELETE"].includes(t.toUpperCase())?t.toUpperCase():"_OTHER"}getTracer(){if(!this.provider)return;let t=this.provider.getTracer(this.instrumentationName,this.instrumentationVersion);return t instanceof ml?t:new ml(t)}enable(){this._channelSubs.length>0||(this.subscribe("undici:request:create",this.onRequestCreate.bind(this)),this.subscribe("undici:request:headers",this.onRequestHeaders.bind(this)),this.subscribe("undici:request:trailers",this.onRequestEnd.bind(this)),this.subscribe("undici:request:error",this.onRequestError.bind(this)))}subscribe(t,e){C1.subscribe(t,e);let r=()=>C1.unsubscribe(t,e);this._channelSubs.push({name:t,unsubscribe:r})}disable(){this._channelSubs.forEach(t=>{t.unsubscribe()}),this._channelSubs.length=0}onRequestCreate({request:t}){try{let e=this.getTracer(),r=new URL(t.path,t.origin);if(!e||t.method==="CONNECT"||this.config.skipURLs?.some(i=>typeof i=="string"?r.href.startsWith(i):i.test(r.href)))return;let n=e.startSpan(this.getRequestMethod(t.method),{kind:ka.CLIENT},sr.active());this.annotateFromRequest(n,t),this._recordFromReq.set(t,n)}catch{}}onRequestHeaders({request:t,response:e}){try{let r=this._recordFromReq.get(t);if(!r)return;this.annotateFromResponse(r,e)}catch{}}onRequestError({request:t,error:e}){try{let r=this._recordFromReq.get(t);if(!r)return;r.recordException(e),r.setStatus({code:xi.ERROR,message:e.message}),r.end(),this._recordFromReq.delete(t)}catch{}}onRequestEnd({request:t}){try{let e=this._recordFromReq.get(t);if(!e)return;e.end(),this._recordFromReq.delete(t)}catch{}}};var qHe=hn(jHe(),1);var Cj=de("tracing"),zHe=8e3,AKt=5e3,Yx=async(t=AKt)=>{try{await Promise.race([_De(),RKt(t)])}catch(e){Cj.warn("Failed to flush tracers on shutdown",e)}},BHe=async(t,e,r)=>{if(!It()){let n=[new C0.SimpleSpanProcessor(new dne),new C0.SimpleSpanProcessor(new qHe.OTLPTraceExporter({url:r.exporterUrl}))];await _1e({serviceName:"@netlify/agent-runner-cli",serviceVersion:t,deploymentEnvironment:"production",siteUrl:"",siteId:process.env.SITE_ID??"",siteName:e,spanProcessors:n,instrumentations:[new y1e({skipHeaders:!0})]})}return r.traceparent?(Gi.setGlobalPropagator(new df),Gi.extract(sr.active(),{traceparent:r.traceparent,isRemote:!0})):sr.active()};function cr(t,e,r){return Cj.log(`\u23F3 TRACE: ${e} starting...`),QA(t,e,r)}var dne=class{export(e,r){for(let n of e)this.logSpan(n);r({code:1})}async shutdown(){}forceFlush(){return Promise.resolve()}logSpan(e){let r=(e.endTime[0]-e.startTime[0])*1e3+(e.endTime[1]-e.startTime[1])/1e6,n=e.attributes,i=[];for(let[a,c]of Object.entries(n))a.includes("duration")&&typeof c=="number"?i.push(`${a}=${c.toFixed(2)}ms`):i.push(`${a}=${c}`);let s=e.status?.code===2?"\u274C":"\u2705",o=i.length>0?` [${i.join(", ")}]`:"";Cj.log(`${s} TRACE: ${e.name} completed in ${r.toFixed(2)}ms${o}`),e.status?.code===2&&e.status.message&&Cj.log(` \u274C Error: ${e.status.message}`)}};function fne(){return Ge().captureLlmContentEnabled}function HHe(t){return t.includes("claude")?"anthropic":t.includes("codex")?"openai":t.includes("gemini")||t.includes("antigravity")?"google":t.includes("muse")?"meta":t.includes("opencode")?"opencode":t}function Nj(t,e,r){let n={role:t,parts:[{type:"text",content:ys(e)}]};return r&&(n.finish_reason=r),JSON.stringify([n])}var xKt=new Set([X.Task,X.RunCommand,X.Explore,X.FileRead,X.FileWrite,X.Notebook,X.Web,X.Todo,X.Skill,X.Tool,X.Memorize,X.Deployment,X.SiteGeneration]);function VHe(t,e,r,n){if(!t.length)return;let i=It();if(!i)return;let s=fne(),o=Math.max(1,(n-r)/t.length);t.forEach((a,c)=>{let u=Math.min(n,r+c*o),l=Math.min(n,u+o),d=a.type==="tool_use"||a.type==="tool_result"||a.category!=null&&xKt.has(a.category),f=d?"execute_tool":"chat",p=a.title||a.type||`step-${a.id??c}`,h=a.category||"unknown",m=d?`${f} ${h}`:f,_=a.message?a.message.length>zHe?`${a.message.slice(0,zHe)}\u2026`:a.message:void 0;i.startSpan(m,{startTime:u,attributes:{"gen_ai.capability.name":e,"gen_ai.step.name":p,"gen_ai.operation.name":f,...d?{"gen_ai.tool.name":h}:{},"spark.step.id":a.id??-1,...a.type?{"spark.step.type":a.type}:{},...a.category?{"spark.step.category":a.category}:{},...a.groupId?{"spark.step.group_id":a.groupId}:{},...a.parentGroupId?{"spark.step.parent_group_id":a.parentGroupId}:{},...s&&_?d?{"gen_ai.tool.call.result":ys(_)}:{"gen_ai.output.messages":Nj("assistant",_)}:{}}}).end(l)})}import{readdir as OKt,rm as PKt}from"fs/promises";import{join as IKt}from"path";async function GHe(t,e=[]){let n=(await OKt(t)).filter(i=>!e.includes(i));await Promise.all(n.map(i=>PKt(IKt(t,i),{recursive:!0,force:!0})))}var CKt=300,Jx=t=>Ge().budgetCreditThresholds[t.mode]?.[t.runner]??CKt,Zx=({mode:t,sessionCreditLimit:e},r)=>t==="create"&&e!=null&&e<=r;var pne=t=>{let e=Jx(t);if(!Zx(t,e))return"default";let r=Ge();return r.createAskFirstEnabled?"ask_first":r.creditWrapUpEnabled?"budget_constrained":"default"},WHe=t=>{let e=pne(t),r=Jx(t);return{budget_eligible:Zx(t,r),budget_constrained:e==="budget_constrained",ask_first:e==="ask_first"}};var LKt=Xx.dirname(NKt(import.meta.url)),KHe=kKt(import.meta.url),$Kt=Xx.resolve(LKt,"scripts/scaffold.js"),MKt="scripts/scaffold.js",UKt=/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\S+/g,hne=t=>{if(t.length>=2){let e=t[0],r=t[t.length-1];if(e==='"'&&r==='"'||e==="'"&&r==="'")return t.slice(1,-1)}return t},FKt=t=>/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(t),jKt=t=>{let e=hne(t);return e==="node"||e.endsWith("/node")},Js=t=>{if(typeof t!="string")return!1;let e=t.match(UKt)||[];if(e.length<2)return!1;let r=0;for(;r<e.length&&FKt(hne(e[r]));)r+=1;if(r>=e.length||!jKt(e[r]))return!1;let n=e[r+1];return n?hne(n).includes(MKt):!1},jm=de("create_stage"),mne="Do not run local validation or dev-server commands to check your work \u2014 specifically `tsc`, `npx tsc`, `vite build`, `vite dev`, or any equivalent build/start/test command. The build pipeline installs and validates the project automatically after your edits. Verify your changes by reading the files you edited.",zKt=`${mne}
|
|
600
|
+
if (condition) { yield value; }`)};import{Buffer as u$t}from"buffer";import{StringDecoder as l$t}from"string_decoder";var K$=(t,e,r)=>{if(r)return;if(t)return{transform:d$t.bind(void 0,new TextEncoder)};let n=new l$t(e);return{transform:f$t.bind(void 0,n),final:p$t.bind(void 0,n)}},d$t=function*(t,e){u$t.isBuffer(e)?yield cl(e):typeof e=="string"?yield t.encode(e):yield e},f$t=function*(t,e){yield En(e)?t.write(e):e},p$t=function*(t){let e=t.end();e!==""&&(yield e)};import{callbackify as PNe}from"util";var YJ=PNe(async(t,e,r,n)=>{e.currentIterable=t(...r);try{for await(let i of e.currentIterable)n.push(i)}finally{delete e.currentIterable}}),Y$=async function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=m$t}=e[r];for await(let i of n(t))yield*Y$(i,e,r+1)},INe=async function*(t){for(let[e,{final:r}]of Object.entries(t))yield*h$t(r,Number(e),t)},h$t=async function*(t,e,r){if(t!==void 0)for await(let n of t())yield*Y$(n,r,e+1)},CNe=PNe(async({currentIterable:t},e)=>{if(t!==void 0){await(e?t.throw(e):t.return());return}if(e)throw e}),m$t=function*(t){yield t};var JJ=(t,e,r,n)=>{try{for(let i of t(...e))r.push(i);n()}catch(i){n(i)}},NNe=(t,e)=>[...e.flatMap(r=>[...Xh(r,t,0)]),...VA(t)],Xh=function*(t,e,r){if(r===e.length){yield t;return}let{transform:n=_$t}=e[r];for(let i of n(t))yield*Xh(i,e,r+1)},VA=function*(t){for(let[e,{final:r}]of Object.entries(t))yield*g$t(r,Number(e),t)},g$t=function*(t,e,r){if(t!==void 0)for(let n of t())yield*Xh(n,r,e+1)},_$t=function*(t){yield t};var ZJ=({value:t,value:{transform:e,final:r,writableObjectMode:n,readableObjectMode:i},optionName:s},{encoding:o})=>{let a={},c=DNe(t,o,s),u=Zh(e),l=Zh(r),d=u?YJ.bind(void 0,Y$,a):JJ.bind(void 0,Xh),f=u||l?YJ.bind(void 0,INe,a):JJ.bind(void 0,VA),p=u||l?CNe.bind(void 0,a):void 0;return{stream:new y$t({writableObjectMode:n,writableHighWaterMark:kNe(n),readableObjectMode:i,readableHighWaterMark:kNe(i),transform(m,_,y){d([m,c,0],this,y)},flush(m){f([c],this,m)},destroy:p})}},J$=(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=DNe(o,r,a);t=NNe(c,t)}return t},DNe=({transform:t,final:e,binary:r,writableObjectMode:n,readableObjectMode:i,preserveNewlines:s},o,a)=>{let c={};return[{transform:ANe(n,a)},K$(r,o,n),W$(r,s,n,c),{transform:t,final:e},{transform:xNe(i,a)},RNe({binary:r,preserveNewlines:s,readableObjectMode:i,state:c})].filter(Boolean)};var LNe=(t,e)=>{for(let r of S$t(t))E$t(t,r,e)},S$t=t=>new Set(Object.entries(t).filter(([,{direction:e}])=>e==="input").map(([e])=>Number(e))),E$t=(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 ${af[a]} with synchronous methods.`)}let o=i.map(({contents:a})=>a).map(a=>v$t(a,n));r.input=LA(o)},v$t=(t,e)=>{let r=J$(t,e,"utf8",!0);return b$t(r),LA(r)},b$t=t=>{let e=t.find(r=>typeof r!="string"&&!En(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 A$t,appendFileSync as x$t}from"fs";var Z$=({stdioItems:t,encoding:e,verboseInfo:r,fdNumber:n})=>n!=="all"&&cS(r,n)&&!zs.has(e)&&w$t(n)&&(t.some(({type:i,value:s})=>i==="native"&&T$t.has(s))||t.every(({type:i})=>Mo.has(i))),w$t=t=>t===1||t===2,T$t=new Set(["pipe","overlapped"]),$Ne=async(t,e,r,n)=>{for await(let i of t)R$t(e)||UNe(i,r,n)},MNe=(t,e,r)=>{for(let n of t)UNe(n,e,r)},R$t=t=>t._readableState.pipes.length>0,UNe=(t,e,r)=>{let n=d$(t);jc({type:"output",verboseMessage:n,fdNumber:e,verboseInfo:r})};var FNe=({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)=>O$t({result:c,fileDescriptors:t,fdNumber:u,state:s,outputFiles:o,isMaxBuffer:n,verboseInfo:i},r)),...s}},O$t=({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=jCe(t,s,d),p=cl(f),{stdioItems:h,objectMode:m}=e[r],_=P$t([p],h,c,n),{serializedResult:y,finalResult:v=y}=I$t({chunks:_,objectMode:m,encoding:c,lines:u,stripFinalNewline:l,fdNumber:r});C$t({serializedResult:y,fdNumber:r,state:n,verboseInfo:o,encoding:c,stdioItems:h,objectMode:m});let S=a[r]?v:void 0;try{return n.error===void 0&&N$t(y,h,i),S}catch(g){return n.error=g,S}},P$t=(t,e,r,n)=>{try{return J$(t,e,r,!1)}catch(i){return n.error=i,t}},I$t=({chunks:t,objectMode:e,encoding:r,lines:n,stripFinalNewline:i,fdNumber:s})=>{if(e)return{serializedResult:t};if(r==="buffer")return{serializedResult:LA(t)};let o=ePe(t,r);return n[s]?{serializedResult:o,finalResult:KJ(o,!i[s],e)}:{serializedResult:o}},C$t=({serializedResult:t,fdNumber:e,state:r,verboseInfo:n,encoding:i,stdioItems:s,objectMode:o})=>{if(!Z$({stdioItems:s,encoding:i,verboseInfo:n,fdNumber:e}))return;let a=KJ(t,!1,o);try{MNe(a,e,n)}catch(c){r.error??=c}},N$t=(t,e,r)=>{for(let{path:n,append:i}of e.filter(({type:s})=>V$.has(s))){let s=typeof n=="string"?n:n.toString();i||r.has(s)?x$t(n,t):(r.add(s),A$t(n,t))}};var jNe=([,t,e],r)=>{if(r.all)return t===void 0?e:e===void 0?t:Array.isArray(t)?Array.isArray(e)?[...t,...e]:[...t,dl(e,r,"all")]:Array.isArray(e)?[dl(t,r,"all"),...e]:En(t)&&En(e)?nJ([t,e]):`${t}${e}`};import{once as XJ}from"events";var zNe=async(t,e)=>{let[r,n]=await k$t(t);return e.isForcefullyTerminated??=!1,[r,n]},k$t=async t=>{let[e,r]=await Promise.allSettled([XJ(t,"spawn"),XJ(t,"exit")]);return e.status==="rejected"?[]:r.status==="rejected"?qNe(t):r.value},qNe=async t=>{try{return await XJ(t,"exit")}catch{return qNe(t)}},BNe=async t=>{let[e,r]=await t;if(!D$t(e,r)&&QJ(e,r))throw new Pa;return[e,r]},D$t=(t,e)=>t===void 0&&e===void 0,QJ=(t,e)=>t!==0||e!==null;var HNe=({error:t,status:e,signal:r,output:n},{maxBuffer:i})=>{let s=L$t(t,e,r),o=s?.code==="ETIMEDOUT",a=FCe(s,n,i);return{resultError:s,exitCode:e,signal:r,timedOut:o,isMaxBuffer:a}},L$t=(t,e,r)=>t!==void 0?t:QJ(e,r)?new Pa:void 0;var VNe=(t,e,r)=>{let{file:n,commandArguments:i,command:s,escapedCommand:o,startTime:a,verboseInfo:c,options:u,fileDescriptors:l}=M$t(t,e,r),d=j$t({file:n,commandArguments:i,options:u,command:s,escapedCommand:o,verboseInfo:c,fileDescriptors:l,startTime:a});return yS(d,c,u)},M$t=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=p$(t,e,r),a=U$t(r),{file:c,commandArguments:u,options:l}=k$(t,e,a);F$t(l);let d=vNe(l,o);return{file:c,commandArguments:u,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},U$t=t=>t.node&&!t.ipc?{...t,ipc:!1}:t,F$t=({ipc:t,ipcInput:e,detached:r,cancelSignal:n})=>{e&&X$("ipcInput"),t&&X$("ipc: true"),r&&X$("detached: true"),n&&X$("cancelSignal")},X$=t=>{throw new TypeError(`The "${t}" option cannot be used with synchronous methods.`)},j$t=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,verboseInfo:s,fileDescriptors:o,startTime:a})=>{let c=z$t({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}=HNe(c,r),{output:h,error:m=u}=FNe({fileDescriptors:o,syncResult:c,options:r,isMaxBuffer:p,verboseInfo:s}),_=h.map((v,S)=>dl(v,r,S)),y=dl(jNe(h,r),r,"all");return B$t({error:m,exitCode:l,signal:d,timedOut:f,isMaxBuffer:p,stdio:_,all:y,options:r,command:n,escapedCommand:i,startTime:a})},z$t=({file:t,commandArguments:e,options:r,command:n,escapedCommand:i,fileDescriptors:s,startTime:o})=>{try{LNe(s,r);let a=q$t(r);return $$t(...D$(t,e,a))}catch(a){return _S({error:a,command:n,escapedCommand:i,fileDescriptors:s,options:r,startTime:o,isSync:!0})}},q$t=({encoding:t,maxBuffer:e,...r})=>({...r,encoding:"buffer",maxBuffer:z$(e)}),B$t=({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?q$({command:c,escapedCommand:u,stdio:s,all:o,ipcOutput:[],options:a,startTime:l}):HA({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 I1t}from"events";import{spawn as C1t}from"child_process";import JNe from"process";import{once as eZ,on as H$t}from"events";var GNe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0,filter:s}={})=>(dS({methodName:"getOneMessage",isSubprocess:r,ipc:n,isConnected:x$(t)}),V$t({anyProcess:t,channel:e,isSubprocess:r,filter:s,reference:i})),V$t=async({anyProcess:t,channel:e,isSubprocess:r,filter:n,reference:i})=>{w$(e,i);let s=of(t,e,r),o=new AbortController;try{return await Promise.race([G$t(s,n,o),W$t(s,r,o),K$t(s,r,o)])}catch(a){throw fS(t),a}finally{o.abort(),T$(e,i)}},G$t=async(t,e,{signal:r})=>{if(e===void 0){let[n]=await eZ(t,"message",{signal:r});return n}for await(let[n]of H$t(t,"message",{signal:r}))if(e(n))return n},W$t=async(t,e,{signal:r})=>{await eZ(t,"disconnect",{signal:r}),NIe(e)},K$t=async(t,e,{signal:r})=>{let[n]=await eZ(t,"strict:error",{signal:r});throw E$(n,e)};import{once as KNe,on as Y$t}from"events";var YNe=({anyProcess:t,channel:e,isSubprocess:r,ipc:n},{reference:i=!0}={})=>tZ({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:!r,reference:i}),tZ=({anyProcess:t,channel:e,isSubprocess:r,ipc:n,shouldAwait:i,reference:s})=>{dS({methodName:"getEachMessage",isSubprocess:r,ipc:n,isConnected:x$(t)}),w$(e,s);let o=of(t,e,r),a=new AbortController,c={};return J$t(t,o,a),Z$t({ipcEmitter:o,isSubprocess:r,controller:a,state:c}),X$t({anyProcess:t,channel:e,ipcEmitter:o,isSubprocess:r,shouldAwait:i,controller:a,state:c,reference:s})},J$t=async(t,e,r)=>{try{await KNe(e,"disconnect",{signal:r.signal}),r.abort()}catch{}},Z$t=async({ipcEmitter:t,isSubprocess:e,controller:r,state:n})=>{try{let[i]=await KNe(t,"strict:error",{signal:r.signal});n.error=E$(i,e),r.abort()}catch{}},X$t=async function*({anyProcess:t,channel:e,ipcEmitter:r,isSubprocess:n,shouldAwait:i,controller:s,state:o,reference:a}){try{for await(let[c]of Y$t(r,"message",{signal:s.signal}))WNe(o),yield c}catch{WNe(o)}finally{s.abort(),T$(e,a),n||fS(t),i&&await t}},WNe=({error:t})=>{if(t)throw t};var ZNe=(t,{ipc:e})=>{Object.assign(t,QNe(t,!1,e))},XNe=()=>{let t=JNe,e=!0,r=JNe.channel!==void 0;return{...QNe(t,e,r),getCancelSignal:sCe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})}},QNe=(t,e,r)=>({sendMessage:C$.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getOneMessage:GNe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r}),getEachMessage:YNe.bind(void 0,{anyProcess:t,channel:t.channel,isSubprocess:e,ipc:r})});import{ChildProcess as Q$t}from"child_process";import{PassThrough as eMt,Readable as tMt,Writable as rMt,Duplex as nMt}from"stream";var eke=({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,verboseInfo:o})=>{VJ(n);let a=new Q$t;iMt(a,n),Object.assign(a,{readable:sMt,writable:oMt,duplex:aMt});let c=_S({error:t,command:e,escapedCommand:r,fileDescriptors:n,options:i,startTime:s,isSync:!1}),u=cMt(c,o,i);return{subprocess:a,promise:u}},iMt=(t,e)=>{let r=GA(),n=GA(),i=GA(),s=Array.from({length:e.length-3},GA),o=GA(),a=[r,n,i,...s];Object.assign(t,{stdin:r,stdout:n,stderr:i,all:o,stdio:a})},GA=()=>{let t=new eMt;return t.end(),t},sMt=()=>new tMt({read(){}}),oMt=()=>new rMt({write(){}}),aMt=()=>new nMt({read(){},write(){}}),cMt=async(t,e,r)=>yS(t,e,r);import{createReadStream as tke,createWriteStream as rke}from"fs";import{Buffer as uMt}from"buffer";import{Readable as WA,Writable as lMt,Duplex as dMt}from"stream";var ike=(t,e)=>G$(fMt,t,e,!1),KA=({type:t,optionName:e})=>{throw new TypeError(`The \`${e}\` option cannot be ${af[t]}.`)},nke={fileNumber:KA,generator:ZJ,asyncGenerator:ZJ,nodeStream:({value:t})=>({stream:t}),webTransform({value:{transform:t,writableObjectMode:e,readableObjectMode:r}}){let n=e||r;return{stream:dMt.fromWeb(t,{objectMode:n})}},duplex:({value:{transform:t}})=>({stream:t}),native(){}},fMt={input:{...nke,fileUrl:({value:t})=>({stream:tke(t)}),filePath:({value:{file:t}})=>({stream:tke(t)}),webStream:({value:t})=>({stream:WA.fromWeb(t)}),iterable:({value:t})=>({stream:WA.from(t)}),asyncIterable:({value:t})=>({stream:WA.from(t)}),string:({value:t})=>({stream:WA.from(t)}),uint8Array:({value:t})=>({stream:WA.from(uMt.from(t))})},output:{...nke,fileUrl:({value:t})=>({stream:rke(t)}),filePath:({value:{file:t,append:e}})=>({stream:rke(t,e?{flags:"a"}:{})}),webStream:({value:t})=>({stream:lMt.fromWeb(t)}),iterable:KA,asyncIterable:KA,string:KA,uint8Array:KA}};import{on as pMt,once as ske}from"events";import{PassThrough as hMt,getDefaultHighWaterMark as mMt}from"stream";import{finished as cke}from"stream/promises";function Qh(t){if(!Array.isArray(t))throw new TypeError(`Expected an array, got \`${typeof t}\`.`);for(let i of t)nZ(i);let e=t.some(({readableObjectMode:i})=>i),r=gMt(t,e),n=new rZ({objectMode:e,writableHighWaterMark:r,readableHighWaterMark:r});for(let i of t)n.add(i);return n}var gMt=(t,e)=>{if(t.length===0)return mMt(e);let r=t.filter(({readableObjectMode:n})=>n===e).map(({readableHighWaterMark:n})=>n);return Math.max(...r)},rZ=class extends hMt{#e=new Set([]);#r=new Set([]);#t=new Set([]);#n;#s=Symbol("unpipe");#i=new WeakMap;add(e){if(nZ(e),this.#e.has(e))return;this.#e.add(e),this.#n??=_Mt(this,this.#e,this.#s);let r=EMt({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(nZ(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)}},_Mt=async(t,e,r)=>{Q$(t,oke);let n=new AbortController;try{await Promise.race([yMt(t,n),SMt(t,e,r,n)])}finally{n.abort(),Q$(t,-oke)}},yMt=async(t,{signal:e})=>{try{await cke(t,{signal:e,cleanup:!0})}catch(r){throw uke(t,r),r}},SMt=async(t,e,r,{signal:n})=>{for await(let[i]of pMt(t,"unpipe",{signal:n}))e.has(i)&&i.emit(r)},nZ=t=>{if(typeof t?.pipe!="function")throw new TypeError(`Expected a readable stream, got: \`${typeof t}\`.`)},EMt=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,onFinished:s,unpipeEvent:o})=>{Q$(t,ake);let a=new AbortController;try{await Promise.race([vMt(s,e,a),bMt({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:a}),wMt({stream:e,streams:r,ended:n,aborted:i,unpipeEvent:o,controller:a})])}finally{a.abort(),Q$(t,-ake)}r.size>0&&r.size===n.size+i.size&&(n.size===0&&i.size>0?iZ(t):TMt(t))},vMt=async(t,e,{signal:r})=>{try{await t,r.aborted||iZ(e)}catch(n){r.aborted||uke(e,n)}},bMt=async({passThroughStream:t,stream:e,streams:r,ended:n,aborted:i,controller:{signal:s}})=>{try{await cke(e,{signal:s,cleanup:!0,readable:!0,writable:!1}),r.has(e)&&n.add(e)}catch(o){if(s.aborted||!r.has(e))return;lke(o)?i.add(e):dke(t,o)}},wMt=async({stream:t,streams:e,ended:r,aborted:n,unpipeEvent:i,controller:{signal:s}})=>{if(await ske(t,i,{signal:s}),!t.readable)return ske(s,"abort",{signal:s});e.delete(t),r.delete(t),n.delete(t)},TMt=t=>{t.writable&&t.end()},uke=(t,e)=>{lke(e)?iZ(t):dke(t,e)},lke=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",iZ=t=>{(t.readable||t.writable)&&t.destroy()},dke=(t,e)=>{t.destroyed||(t.once("error",RMt),t.destroy(e))},RMt=()=>{},Q$=(t,e)=>{let r=t.getMaxListeners();r!==0&&r!==Number.POSITIVE_INFINITY&&t.setMaxListeners(r+e)},oke=2,ake=1;import{finished as fke}from"stream/promises";var ES=(t,e)=>{t.pipe(e),AMt(t,e),xMt(t,e)},AMt=async(t,e)=>{if(!(Oa(t)||Oa(e))){try{await fke(t,{cleanup:!0,readable:!0,writable:!1})}catch{}sZ(e)}},sZ=t=>{t.writable&&t.end()},xMt=async(t,e)=>{if(!(Oa(t)||Oa(e))){try{await fke(e,{cleanup:!0,readable:!1,writable:!0})}catch{}oZ(t)}},oZ=t=>{t.readable&&t.destroy()};var pke=(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})=>Mo.has(c)))OMt(t,a,o,i);for(let{stream:a}of s.filter(({type:c})=>!Mo.has(c)))IMt({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]:Qh(s);ES(o,i)}},OMt=(t,e,r,n)=>{r==="output"?ES(t.stdio[n],e):ES(e,t.stdio[n]);let i=PMt[n];i!==void 0&&(t[i]=e),t.stdio[n]=e},PMt=["stdin","stdout","stderr"],IMt=({subprocess:t,stream:e,direction:r,fdNumber:n,pipeGroups:i,controller:s})=>{if(e===void 0)return;CMt(e,s);let[o,a]=r==="output"?[e,t.stdio[n]]:[t.stdio[n],e],c=i.get(o)??[];i.set(o,[...c,a])},CMt=(t,{signal:e})=>{Oa(t)&&Yh(t,NMt,e)},NMt=2;import{addAbortListener as LMt}from"events";var em=[];em.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&em.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&em.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var eM=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",aZ=Symbol.for("signal-exit emitter"),cZ=globalThis,kMt=Object.defineProperty.bind(Object),uZ=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(cZ[aZ])return cZ[aZ];kMt(cZ,aZ,{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}},tM=class{},DMt=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),lZ=class extends tM{onExit(){return()=>{}}load(){}unload(){}},dZ=class extends tM{#e=fZ.platform==="win32"?"SIGINT":"SIGHUP";#r=new uZ;#t;#n;#s;#i={};#o=!1;constructor(e){super(),this.#t=e,this.#i={};for(let r of em)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(!eM(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 em)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,em.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 eM(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"&&eM(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)}},fZ=globalThis.process,{onExit:hke,load:ELr,unload:vLr}=DMt(eM(fZ)?new dZ(fZ):new lZ);var mke=(t,{cleanup:e,detached:r},{signal:n})=>{if(!e||r)return;let i=hke(()=>{t.kill()});LMt(n,()=>{i()})};var _ke=({source:t,sourcePromise:e,boundOptions:r,createNested:n},...i)=>{let s=f$(),{destination:o,destinationStream:a,destinationError:c,from:u,unpipeSignal:l}=$Mt(r,n,i),{sourceStream:d,sourceError:f}=UMt(t,u),{options:p,fileDescriptors:h}=qc.get(t);return{sourcePromise:e,sourceStream:d,sourceOptions:p,sourceError:f,destination:o,destinationStream:a,destinationError:c,unpipeSignal:l,fileDescriptors:h,startTime:s}},$Mt=(t,e,r)=>{try{let{destination:n,pipeOptions:{from:i,to:s,unpipeSignal:o}={}}=MMt(t,e,...r),a=b$(n,s);return{destination:n,destinationStream:a,from:i,unpipeSignal:o}}catch(n){return{destinationError:n}}},MMt=(t,e,r,...n)=>{if(Array.isArray(r))return{destination:e(gke,t)(r,...n),pipeOptions:t};if(typeof r=="string"||r instanceof URL||tJ(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]=r$(r,...n);return{destination:e(gke)(i,s,o),pipeOptions:o}}if(qc.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}`)},gke=({options:t})=>({options:{...t,stdin:"pipe",piped:!0}}),UMt=(t,e)=>{try{return{sourceStream:pS(t,e)}}catch(r){return{sourceError:r}}};var Ske=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n,fileDescriptors:i,sourceOptions:s,startTime:o})=>{let a=FMt({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n});if(a!==void 0)throw pZ({error:a,fileDescriptors:i,sourceOptions:s,startTime:o})},FMt=({sourceStream:t,sourceError:e,destinationStream:r,destinationError:n})=>{if(e!==void 0&&n!==void 0)return n;if(n!==void 0)return oZ(t),n;if(e!==void 0)return sZ(r),e},pZ=({error:t,fileDescriptors:e,sourceOptions:r,startTime:n})=>_S({error:t,command:yke,escapedCommand:yke,fileDescriptors:e,options:r,startTime:n,isSync:!1}),yke="source.pipe(destination)";var Eke=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 jMt}from"stream/promises";var vke=(t,e,r)=>{let n=rM.has(e)?qMt(t,e):zMt(t,e);return Yh(t,HMt,r.signal),Yh(e,VMt,r.signal),BMt(e),n},zMt=(t,e)=>{let r=Qh([t]);return ES(r,e),rM.set(e,r),r},qMt=(t,e)=>{let r=rM.get(e);return r.add(t),r},BMt=async t=>{try{await jMt(t,{cleanup:!0,readable:!1,writable:!0})}catch{}rM.delete(t)},rM=new WeakMap,HMt=2,VMt=1;import{aborted as GMt}from"util";var bke=(t,e)=>t===void 0?[]:[WMt(t,e)],WMt=async(t,{sourceStream:e,mergedStream:r,fileDescriptors:n,sourceOptions:i,startTime:s})=>{await GMt(t,e),await r.remove(e);let o=new Error("Pipe canceled by `unpipeSignal` option.");throw pZ({error:o,fileDescriptors:n,sourceOptions:i,startTime:s})};var nM=(t,...e)=>{if(Yr(e[0]))return nM.bind(void 0,{...t,boundOptions:{...t.boundOptions,...e[0]}});let{destination:r,...n}=_ke(t,...e),i=KMt({...n,destination:r});return i.pipe=nM.bind(void 0,{...t,source:r,sourcePromise:i,boundOptions:{}}),i},KMt=async({sourcePromise:t,sourceStream:e,sourceOptions:r,sourceError:n,destination:i,destinationStream:s,destinationError:o,unpipeSignal:a,fileDescriptors:c,startTime:u})=>{let l=YMt(t,i);Ske({sourceStream:e,sourceError:n,destinationStream:s,destinationError:o,fileDescriptors:c,sourceOptions:r,startTime:u});let d=new AbortController;try{let f=vke(e,s,d);return await Promise.race([Eke(l),...bke(a,{sourceStream:e,mergedStream:f,sourceOptions:r,fileDescriptors:c,startTime:u})])}finally{d.abort()}},YMt=(t,e)=>Promise.allSettled([t,e]);import{setImmediate as r1t}from"timers/promises";import{on as JMt}from"events";import{getDefaultHighWaterMark as ZMt}from"stream";var iM=({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:n,encoding:i,preserveNewlines:s})=>{let o=new AbortController;return XMt(e,o),Tke({stream:t,controller:o,binary:r,shouldEncode:!t.readableObjectMode&&n,encoding:i,shouldSplit:!t.readableObjectMode,preserveNewlines:s})},XMt=async(t,e)=>{try{await t}catch{}finally{e.abort()}},hZ=({stream:t,onStreamEnd:e,lines:r,encoding:n,stripFinalNewline:i,allMixed:s})=>{let o=new AbortController;QMt(e,o,t);let a=t.readableObjectMode&&!s;return Tke({stream:t,controller:o,binary:n==="buffer",shouldEncode:!a,encoding:n,shouldSplit:!a&&r,preserveNewlines:!i})},QMt=async(t,e,r)=>{try{await t}catch{r.destroy()}finally{e.abort()}},Tke=({stream:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})=>{let a=JMt(t,"data",{signal:e.signal,highWaterMark:wke,highWatermark:wke});return e1t({onStdoutChunk:a,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o})},mZ=ZMt(!0),wke=mZ,e1t=async function*({onStdoutChunk:t,controller:e,binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o}){let a=t1t({binary:r,shouldEncode:n,encoding:i,shouldSplit:s,preserveNewlines:o});try{for await(let[c]of t)yield*Xh(c,a,0)}catch(c){if(!e.signal.aborted)throw c}finally{yield*VA(a)}},t1t=({binary:t,shouldEncode:e,encoding:r,shouldSplit:n,preserveNewlines:i})=>[K$(t,r,!e),W$(t,i,!n,{})].filter(Boolean);var Rke=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=n1t({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:a,verboseInfo:u,streamInfo:l});if(!i){await Promise.all([i1t(t),d]);return}let f=GJ(c,r),p=hZ({stream:t,onStreamEnd:e,lines:o,encoding:n,stripFinalNewline:f,allMixed:a}),[h]=await Promise.all([s1t({stream:t,iterable:p,fdNumber:r,encoding:n,maxBuffer:s,lines:o}),d]);return h},n1t=async({stream:t,onStreamEnd:e,fdNumber:r,encoding:n,allMixed:i,verboseInfo:s,streamInfo:{fileDescriptors:o}})=>{if(!Z$({stdioItems:o[r]?.stdioItems,encoding:n,verboseInfo:s,fdNumber:r}))return;let a=hZ({stream:t,onStreamEnd:e,lines:!0,encoding:n,stripFinalNewline:!0,allMixed:i});await $Ne(a,t,r,s)},i1t=async t=>{await r1t(),t.readableFlowing===null&&t.resume()},s1t=async({stream:t,stream:{readableObjectMode:e},iterable:r,fdNumber:n,encoding:i,maxBuffer:s,lines:o})=>{try{return e||o?await U$(r,{maxBuffer:s}):i==="buffer"?new Uint8Array(await F$(r,{maxBuffer:s})):await gS(r,{maxBuffer:s})}catch(a){return Ake($Ce({error:a,stream:t,readableObjectMode:e,lines:o,encoding:i,fdNumber:n}))}},gZ=async t=>{try{return await t}catch(e){return Ake(e)}},Ake=({bufferedData:t})=>XOe(t)?new Uint8Array(t):t;import{finished as o1t}from"stream/promises";var YA=async(t,e,r,{isSameDirection:n,stopOnExit:i=!1}={})=>{let s=a1t(t,r),o=new AbortController;try{await Promise.race([...i?[r.exitPromise]:[],o1t(t,{cleanup:!0,signal:o.signal})])}catch(a){s.stdinCleanedUp||l1t(a,e,r,n)}finally{o.abort()}},a1t=(t,{originalStreams:[e],subprocess:r})=>{let n={stdinCleanedUp:!1};return t===e&&c1t(t,r,n),n},c1t=(t,e,r)=>{let{_destroy:n}=t;t._destroy=(...i)=>{u1t(e,r),n.call(t,...i)}},u1t=({exitCode:t,signalCode:e},r)=>{(t!==null||e!==null)&&(r.stdinCleanedUp=!0)},l1t=(t,e,r,n)=>{if(!d1t(t,e,r,n))throw t},d1t=(t,e,r,n=!0)=>r.propagating?xke(t)||sM(t):(r.propagating=!0,_Z(r,e)===n?xke(t):sM(t)),_Z=({fileDescriptors:t},e)=>e!=="all"&&t[e].direction==="input",sM=t=>t?.code==="ERR_STREAM_PREMATURE_CLOSE",xke=t=>t?.code==="EPIPE";var Oke=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>t.stdio.map((c,u)=>yZ({stream:c,fdNumber:u,encoding:e,buffer:r[u],maxBuffer:n[u],lines:i[u],allMixed:!1,stripFinalNewline:s,verboseInfo:o,streamInfo:a})),yZ=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=YA(t,e,u);if(_Z(u,e)){await l;return}let[d]=await Promise.all([Rke({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 Pke=({stdout:t,stderr:e},{all:r})=>r&&(t||e)?Qh([t,e].filter(Boolean)):void 0,Ike=({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:s,verboseInfo:o,streamInfo:a})=>yZ({...f1t(t,r),fdNumber:"all",encoding:e,maxBuffer:n[1]+n[2],lines:i[1]||i[2],allMixed:p1t(t),stripFinalNewline:s,verboseInfo:o,streamInfo:a}),f1t=({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}},p1t=({all:t,stdout:e,stderr:r})=>t&&e&&r&&e.readableObjectMode!==r.readableObjectMode;import{once as h1t}from"events";var Cke=t=>cS(t,"ipc"),Nke=(t,e)=>{let r=d$(t);jc({type:"ipc",verboseMessage:r,fdNumber:"ipc",verboseInfo:e})};var kke=async({subprocess:t,buffer:e,maxBuffer:r,ipc:n,ipcOutput:i,verboseInfo:s})=>{if(!n)return i;let o=Cke(s),a=ul(e,"ipc"),c=ul(r,"ipc");for await(let u of tZ({anyProcess:t,channel:t.channel,isSubprocess:!1,ipc:n,shouldAwait:!1,reference:!0}))a&&(MCe(t,i,c),i.push(u)),o&&Nke(u,s);return i},Dke=async(t,e)=>(await Promise.allSettled([t]),e);var Lke=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:y})=>{let v=zNe(t,f),S={originalStreams:m,fileDescriptors:h,subprocess:t,exitPromise:v,propagating:!1},g=Oke({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:S}),w=Ike({subprocess:t,encoding:e,buffer:r,maxBuffer:n,lines:i,stripFinalNewline:u,verboseInfo:p,streamInfo:S}),A=[],R=kke({subprocess:t,buffer:r,maxBuffer:n,ipc:l,ipcOutput:A,verboseInfo:p}),T=m1t(m,t,S),P=g1t(h,S);try{return await Promise.race([Promise.all([{},BNe(v),Promise.all(g),w,R,mCe(t,d),...T,...P]),_,_1t(t,y),...lCe(t,s,f,y),...CIe({subprocess:t,cancelSignal:o,gracefulCancel:a,context:f,controller:y}),...cCe({subprocess:t,cancelSignal:o,gracefulCancel:a,forceKillAfterDelay:c,context:f,controller:y})])}catch(I){return f.terminationReason??="other",Promise.all([{error:I},v,Promise.all(g.map(O=>gZ(O))),gZ(w),Dke(R,A),Promise.allSettled(T),Promise.allSettled(P)])}},m1t=(t,e,r)=>t.map((n,i)=>n===e.stdio[i]?void 0:YA(n,i,r)),g1t=(t,e)=>t.flatMap(({stdioItems:r},n)=>r.filter(({value:i,stream:s=i})=>Ca(s,{checkOpen:!1})&&!Oa(s)).map(({type:i,value:s,stream:o=s})=>YA(o,n,e,{isSameDirection:Mo.has(i),stopOnExit:i==="native"}))),_1t=async(t,{signal:e})=>{let[r]=await h1t(t,"error",{signal:e});throw r};var $ke=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),JA=(t,e,r)=>{let n=t[r];n.has(e)||n.set(e,[]);let i=n.get(e),s=zc();return i.push(s),{resolve:s.resolve.bind(s),promises:i}},vS=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 y1t}from"stream";import{callbackify as S1t}from"util";import{finished as Mke}from"stream/promises";var SZ=async t=>{if(t!==void 0)try{await EZ(t)}catch{}},Uke=async t=>{if(t!==void 0)try{await vZ(t)}catch{}},EZ=async t=>{await Mke(t,{cleanup:!0,readable:!1,writable:!0})},vZ=async t=>{await Mke(t,{cleanup:!0,readable:!0,writable:!1})},oM=async(t,e)=>{if(await t,e)throw e},aM=(t,e,r)=>{r&&!sM(r)?t.destroy(r):e&&t.destroy()};var Fke=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,binary:i=!0,preserveNewlines:s=!0}={})=>{let o=i||zs.has(r),{subprocessStdout:a,waitReadableDestroy:c}=bZ(t,n,e),{readableEncoding:u,readableObjectMode:l,readableHighWaterMark:d}=wZ(a,o),{read:f,onStdoutDataDone:p}=TZ({subprocessStdout:a,subprocess:t,binary:o,encoding:r,preserveNewlines:s}),h=new y1t({read:f,destroy:S1t(AZ.bind(void 0,{subprocessStdout:a,subprocess:t,waitReadableDestroy:c})),highWaterMark:d,objectMode:l,encoding:u});return RZ({subprocessStdout:a,onStdoutDataDone:p,readable:h,subprocess:t}),h},bZ=(t,e,r)=>{let n=pS(t,e),i=JA(r,n,"readableDestroy");return{subprocessStdout:n,waitReadableDestroy:i}},wZ=({readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r},n)=>n?{readableEncoding:t,readableObjectMode:e,readableHighWaterMark:r}:{readableEncoding:t,readableObjectMode:!0,readableHighWaterMark:mZ},TZ=({subprocessStdout:t,subprocess:e,binary:r,encoding:n,preserveNewlines:i})=>{let s=zc(),o=iM({subprocessStdout:t,subprocess:e,binary:r,shouldEncode:!r,encoding:n,preserveNewlines:i});return{read(){E1t(this,o,s)},onStdoutDataDone:s}},E1t=async(t,e,r)=>{try{let{value:n,done:i}=await e.next();i?r.resolve():t.push(n)}catch{}},RZ=async({subprocessStdout:t,onStdoutDataDone:e,readable:r,subprocess:n,subprocessStdin:i})=>{try{await vZ(t),await n,await SZ(i),await e,r.readable&&r.push(null)}catch(s){await SZ(i),jke(r,s)}},AZ=async({subprocessStdout:t,subprocess:e,waitReadableDestroy:r},n)=>{await vS(r,e)&&(jke(t,n),await oM(e,n))},jke=(t,e)=>{aM(t,t.readable,e)};import{Writable as v1t}from"stream";import{callbackify as zke}from"util";var qke=({subprocess:t,concurrentStreams:e},{to:r}={})=>{let{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}=xZ(t,r,e),o=new v1t({...OZ(n,t,i),destroy:zke(IZ.bind(void 0,{subprocessStdin:n,subprocess:t,waitWritableFinal:i,waitWritableDestroy:s})),highWaterMark:n.writableHighWaterMark,objectMode:n.writableObjectMode});return PZ(n,o),o},xZ=(t,e,r)=>{let n=b$(t,e),i=JA(r,n,"writableFinal"),s=JA(r,n,"writableDestroy");return{subprocessStdin:n,waitWritableFinal:i,waitWritableDestroy:s}},OZ=(t,e,r)=>({write:b1t.bind(void 0,t),final:zke(w1t.bind(void 0,t,e,r))}),b1t=(t,e,r,n)=>{t.write(e,r)?n():t.once("drain",n)},w1t=async(t,e,r)=>{await vS(r,e)&&(t.writable&&t.end(),await e)},PZ=async(t,e,r)=>{try{await EZ(t),e.writable&&e.end()}catch(n){await Uke(r),Bke(e,n)}},IZ=async({subprocessStdin:t,subprocess:e,waitWritableFinal:r,waitWritableDestroy:n},i)=>{await vS(r,e),await vS(n,e)&&(Bke(t,i),await oM(e,i))},Bke=(t,e)=>{aM(t,t.writable,e)};import{Duplex as T1t}from"stream";import{callbackify as R1t}from"util";var Hke=({subprocess:t,concurrentStreams:e,encoding:r},{from:n,to:i,binary:s=!0,preserveNewlines:o=!0}={})=>{let a=s||zs.has(r),{subprocessStdout:c,waitReadableDestroy:u}=bZ(t,n,e),{subprocessStdin:l,waitWritableFinal:d,waitWritableDestroy:f}=xZ(t,i,e),{readableEncoding:p,readableObjectMode:h,readableHighWaterMark:m}=wZ(c,a),{read:_,onStdoutDataDone:y}=TZ({subprocessStdout:c,subprocess:t,binary:a,encoding:r,preserveNewlines:o}),v=new T1t({read:_,...OZ(l,t,d),destroy:R1t(A1t.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 RZ({subprocessStdout:c,onStdoutDataDone:y,readable:v,subprocess:t,subprocessStdin:l}),PZ(l,v,c),v},A1t=async({subprocessStdout:t,subprocessStdin:e,subprocess:r,waitReadableDestroy:n,waitWritableFinal:i,waitWritableDestroy:s},o)=>{await Promise.all([AZ({subprocessStdout:t,subprocess:r,waitReadableDestroy:n},o),IZ({subprocessStdin:e,subprocess:r,waitWritableFinal:i,waitWritableDestroy:s},o)])};var CZ=(t,e,{from:r,binary:n=!1,preserveNewlines:i=!1}={})=>{let s=n||zs.has(e),o=pS(t,r),a=iM({subprocessStdout:o,subprocess:t,binary:s,shouldEncode:!0,encoding:e,preserveNewlines:i});return x1t(a,o,t)},x1t=async function*(t,e,r){try{yield*t}finally{e.readable&&e.destroy(),await r}};var Vke=(t,{encoding:e})=>{let r=$ke();t.readable=Fke.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.writable=qke.bind(void 0,{subprocess:t,concurrentStreams:r}),t.duplex=Hke.bind(void 0,{subprocess:t,concurrentStreams:r,encoding:e}),t.iterable=CZ.bind(void 0,t,e),t[Symbol.asyncIterator]=CZ.bind(void 0,t,e,{})};var Gke=(t,e)=>{for(let[r,n]of P1t){let i=n.value.bind(e);Reflect.defineProperty(t,r,{...n,value:i})}},O1t=(async()=>{})().constructor.prototype,P1t=["then","catch","finally"].map(t=>[t,Reflect.getOwnPropertyDescriptor(O1t,t)]);var Wke=(t,e,r,n)=>{let{file:i,commandArguments:s,command:o,escapedCommand:a,startTime:c,verboseInfo:u,options:l,fileDescriptors:d}=N1t(t,e,r),{subprocess:f,promise:p}=D1t({file:i,commandArguments:s,options:l,startTime:c,verboseInfo:u,command:o,escapedCommand:a,fileDescriptors:d});return f.pipe=nM.bind(void 0,{source:f,sourcePromise:p,boundOptions:{},createNested:n}),Gke(f,p),qc.set(f,{options:l,fileDescriptors:d}),f},N1t=(t,e,r)=>{let{command:n,escapedCommand:i,startTime:s,verboseInfo:o}=p$(t,e,r),{file:a,commandArguments:c,options:u}=k$(t,e,r),l=k1t(u),d=ike(l,o);return{file:a,commandArguments:c,command:n,escapedCommand:i,startTime:s,verboseInfo:o,options:l,fileDescriptors:d}},k1t=({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}},D1t=({file:t,commandArguments:e,options:r,startTime:n,verboseInfo:i,command:s,escapedCommand:o,fileDescriptors:a})=>{let c;try{c=C1t(...D$(t,e,r))}catch(h){return eke({error:h,command:s,escapedCommand:o,fileDescriptors:a,options:r,startTime:n,verboseInfo:i})}let u=new AbortController;I1t(Number.POSITIVE_INFINITY,u.signal);let l=[...c.stdio];pke(c,a,u),mke(c,r,u);let d={},f=zc();c.kill=PIe.bind(void 0,{kill:c.kill.bind(c),options:r,onInternalError:f,context:d,controller:u}),c.all=Pke(c,r),Vke(c,r),ZNe(c,r);let p=L1t({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}},L1t=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 Lke({subprocess:t,options:e,context:c,verboseInfo:n,fileDescriptors:i,originalStreams:s,onInternalError:u,controller:l});l.abort(),u.resolve();let y=h.map((g,w)=>dl(g,e,w)),v=dl(m,e,"all"),S=$1t({errorInfo:d,exitCode:f,signal:p,stdio:y,all:v,ipcOutput:_,context:c,options:e,command:o,escapedCommand:a,startTime:r});return yS(S,n,e)},$1t=({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?HA({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 Bc,isForcefullyTerminated:o.isForcefullyTerminated,exitCode:e,signal:r,stdio:n,all:i,ipcOutput:s,options:a,startTime:l,isSync:!1}):q$({command:c,escapedCommand:u,stdio:n,all:i,ipcOutput:s,options:a,startTime:l});var cM=(t,e)=>{let r=Object.fromEntries(Object.entries(e).map(([n,i])=>[n,M1t(n,t[n],i)]));return{...t,...r}},M1t=(t,e,r)=>U1t.has(t)&&Yr(e)&&Yr(r)?{...e,...r}:r,U1t=new Set(["env",...aJ]);var cf=(t,e,r,n)=>{let i=(o,a,c)=>cf(o,a,r,c),s=(...o)=>F1t({mapArguments:t,deepOptions:r,boundOptions:e,setBoundExeca:n,createNested:i},...o);return n!==void 0&&n(s,i,e),s},F1t=({mapArguments:t,deepOptions:e={},boundOptions:r={},setBoundExeca:n,createNested:i},s,...o)=>{if(Yr(s))return i(t,cM(r,s),n);let{file:a,commandArguments:c,options:u,isSync:l}=j1t({mapArguments:t,firstArgument:s,nextArguments:o,deepOptions:e,boundOptions:r});return l?VNe(a,c,u):Wke(a,c,u,i)},j1t=({mapArguments:t,firstArgument:e,nextArguments:r,deepOptions:n,boundOptions:i})=>{let s=iPe(e)?sPe(e,r):[e,...r],[o,a,c]=r$(...s),u=cM(cM(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 Kke=({file:t,commandArguments:e})=>Jke(t,e),Yke=({file:t,commandArguments:e})=>({...Jke(t,e),isSync:!0}),Jke=(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]=z1t(t);return{file:r,commandArguments:n}},z1t=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(q1t)){let i=r.at(-1);i&&i.endsWith("\\")?r[r.length-1]=`${i.slice(0,-1)} ${n}`:r.push(n)}return r},q1t=/ +/g;var Zke=(t,e,r)=>{t.sync=e(B1t,r),t.s=t.sync},Xke=({options:t})=>Qke(t),B1t=({options:t})=>({...Qke(t),isSync:!0}),Qke=t=>({options:{...H1t(t),...t}}),H1t=({input:t,inputFile:e,stdio:r})=>t===void 0&&e===void 0&&r===void 0?{stdin:"inherit"}:{},eDe={preferLocal:!0};var tDe=cf(()=>({})),l1r=cf(()=>({isSync:!0})),rDe=cf(Kke),d1r=cf(Yke),f1r=cf(fCe),p1r=cf(Xke,{},eDe,Zke),{sendMessage:h1r,getOneMessage:m1r,getEachMessage:g1r,getCancelSignal:_1r}=XNe();import{Transform as V1t}from"stream";var G1t=["NETLIFY_AI_GATEWAY_KEY"];function W1t(){let t=(process.env.NETLIFY_SENSITIVE_ENV_KEYS||"").split(",").map(e=>e.trim()).filter(Boolean);return[...new Set([...t,...G1t])]}function K1t(t){let e=t.toLowerCase();return e==="true"||e==="false"?!0:t.trim().length<4}function Y1t(){let e=W1t().map(r=>process.env[r]).filter(r=>!(!r||K1t(r)));return[...new Set(e)].sort((r,n)=>n.length-r.length)}function ys(t){if(typeof t!="string")return t;let e=Y1t();if(e.length===0)return t;let r=t;return e.forEach(n=>{let i=new RegExp(J1t(n),"g");r=r.replace(i,"******")}),r}function J1t(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var ZA=class extends V1t{constructor(e={}){super({...e,objectMode:!1})}_transform(e,r,n){let i=e.toString(),s=ys(i);n(null,s)}},uM=Symbol("maskedWrite");function nDe(){if(process.env.NETLIFY_MASK_LOGS!=="false"){if(!process.stdout.write[uM]){let e=process.stdout.write.bind(process.stdout),r=function(n,i,s){let o=typeof n=="string"?ys(n):n;return typeof i=="function"?e(o,i):e(o,i,s)};r[uM]=!0,process.stdout.write=r}if(!process.stderr.write[uM]){let e=process.stderr.write.bind(process.stderr),r=function(n,i,s){let o=typeof n=="string"?ys(n):n;return typeof i=="function"?e(o,i):e(o,i,s)};r[uM]=!0,process.stderr.write=r}}}var iDe=!1,sDe,NZ=t=>{sDe??=t},oDe=t=>{iDe=!0,NZ(t)},an=()=>iDe,Na=()=>sDe,aDe=t=>{switch(t){case"SIGTERM":case"SIGINT":return t;case void 0:return"interrupted";default:return}};var XA=null,cDe=t=>(XA&&XA.destroy(),XA=new Uo({totalAllowedTime:t}),XA),uDe=()=>XA;var Uo=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&&an())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 Ok({stage:e},async()=>a?await Promise.race([r(),a]):await r())}catch(l){throw u="failure",l}finally{te.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 lDe={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 eUt=X1t(import.meta.url),tUt=fl.dirname(eUt),rUt=Q1t(import.meta.url),bS=de("shell"),kZ=new Set,dDe={preferLocal:!0},Dt=(t,e,r)=>{let[n,i]=nUt(e,r),s={...dDe,...i},o=tDe(t,n,s);pDe(o,s),gDe(o);let a=r?.idleTimeout;return a&&a>0&&mDe(o,a),o},fDe=(t,e)=>{let r={...dDe,...e},n=rDe(t,r);return pDe(n,r),gDe(n),e?.idleTimeout&&e.idleTimeout>0&&mDe(n,e.idleTimeout),n},nUt=function(t,e){return Array.isArray(t)?[t,e]:typeof t=="object"&&t!==null?[[],t]:[[],void 0]},pDe=(t,e)=>{if(e.stdio!==void 0||e.stdout!==void 0||e.stderr!==void 0||Vc.env.NETLIFY_LOCAL_QUIET==="true")return;if(Vc.env.NETLIFY_MASK_LOGS!=="false"){t.stdout?.pipe(new ZA).pipe(Vc.stdout),t.stderr?.pipe(new ZA).pipe(Vc.stderr);return}t.stdout?.pipe(Vc.stdout),t.stderr?.pipe(Vc.stderr)},DZ=(t,e="SIGTERM")=>{try{return t.pid&&!t.killed?(Vc.kill(-t.pid,e),bS.log(`Killed process ${t.pid} with signal ${e}`),!0):!1}catch(r){return bS.error("Error killing process:",r),!1}},hDe=t=>DZ(t,"SIGKILL"),mDe=(t,e)=>{let r=null,n=()=>{bS.log(`Process ${t.pid} killed due to idle timeout (no output for ${e}ms)`),DZ(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(bS.log(`Force killing idle process ${t.pid}`),hDe(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)},gDe=t=>{kZ.add(t);let e=uDe();if(e){let r=e.onTimesUp(()=>{bS.log(`Global timer expired, killing process ${t.pid}`),DZ(t,"SIGTERM"),setTimeout(()=>{t.pid&&!t.killed&&(bS.log(`Force killing process ${t.pid} after timeout`),hDe(t))},5e3)});t.on("exit",()=>{kZ.delete(t),r()}),t.on("error",()=>{kZ.delete(t),r()})}};function Gc(t,e){if(!Vc.env.NETLIFY_LOCAL_MODE)try{let i=rUt.resolve(lDe.name),s=fl.dirname(i);for(;s!==fl.dirname(s);){let o=fl.dirname(s);if(fl.basename(o)==="node_modules"){let a=fl.join(o,".bin",e);if(lM.existsSync(a))return a;break}s=o}}catch(i){console.error("Could not resolve package.json",i)}if(Vc.env.NODE_PATH){let i=fl.join(Vc.env.NODE_PATH,".bin",e);if(lM.existsSync(i))return i}let r=fl.join(t,"node_modules",".bin",e);if(lM.existsSync(r))return r;let n=fl.join(tUt,"..","node_modules",".bin",e);if(lM.existsSync(n))return n}import kj from"process";import{fileURLToPath as NKt}from"url";import{createRequire as kKt}from"module";import Xx from"path";import{readFileSync as DKt}from"fs";var iUt="__netlify__getTracer",sUt="__netlify__shutdownTracers",It=(t,e)=>globalThis[iUt]?.(t,e),_De=async()=>globalThis[sUt]?.();function QA(t,e,r,n,i){let s=typeof n=="function"?n:typeof r=="function"?r:i;if(!s)throw new Error("function to execute with active span is missing");return t?t.withActiveSpan(e,r,n,s):s()}import{setTimeout as RKt}from"timers/promises";Ue();import ojt from"process";Ue();var PUt=(t,e)=>{e.recordException(t),e.setStatus({code:xi.ERROR})};var ml=class{constructor(e){this._tracer=e,this.startSpan=e.startSpan.bind(this._tracer),this.startActiveSpan=e.startActiveSpan.bind(this._tracer)}withActiveSpan(e,r,n,i){let{opts:s,ctx:o,fn:a}=lLe(r,n,i);return this._tracer.startActiveSpan(e,s,o,c=>dLe(c,s,a))}withSpan(e,r,n,i){let{opts:s,ctx:o,fn:a}=lLe(r,n,i),c=this._tracer.startSpan(e,s,o);return dLe(c,s,a)}};function lLe(t,e,r){let n,i,s;return!e&&!r?s=t:r?(n=t,i=e,s=r):(n=t,s=e),n=n??{},i=i??sr.active(),{opts:n,ctx:i,fn:s}}function dLe(t,e,r){var n;let i=(n=e.onException)!==null&&n!==void 0?n:PUt,s=o=>{throw i(o,t),t.end(),o};try{let o=r(t);return typeof o?.then=="function"?o.then(a=>(t.end(),a),s):(t.end(),o)}catch(o){throw s(o)}}Ue();var PS=t=>t!==null&&typeof t=="object"&&typeof t.then=="function";var hX=class t{_rawAttributes;_asyncAttributesPending=!1;_schemaUrl;_memoizedAttributes;static FromAttributeList(e,r){let n=new t({},r);return n._rawAttributes=vLe(e),n._asyncAttributesPending=e.filter(([i,s])=>PS(s)).length>0,n}constructor(e,r){let n=e.attributes??{};this._rawAttributes=Object.entries(n).map(([i,s])=>(PS(s)&&(this._asyncAttributesPending=!0),[i,s])),this._rawAttributes=vLe(this._rawAttributes),this._schemaUrl=IUt(r?.schemaUrl)}get asyncAttributesPending(){return this._asyncAttributesPending}async waitForAsyncAttributes(){if(this.asyncAttributesPending){for(let e=0;e<this._rawAttributes.length;e++){let[r,n]=this._rawAttributes[e];this._rawAttributes[e]=[r,PS(n)?await n:n]}this._asyncAttributesPending=!1}}get attributes(){if(this.asyncAttributesPending&&pe.error("Accessing resource attributes before async attributes settled"),this._memoizedAttributes)return this._memoizedAttributes;let e={};for(let[r,n]of this._rawAttributes){if(PS(n)){pe.debug(`Unsettled resource attribute ${r} skipped`);continue}n!=null&&(e[r]??=n)}return this._asyncAttributesPending||(this._memoizedAttributes=e),e}getRawAttributes(){return this._rawAttributes}get schemaUrl(){return this._schemaUrl}merge(e){if(e==null)return this;let r=CUt(this,e),n=r?{schemaUrl:r}:void 0;return t.FromAttributeList([...e.getRawAttributes(),...this.getRawAttributes()],n)}};function mX(t,e){return hX.FromAttributeList(Object.entries(t),e)}function vLe(t){return t.map(([e,r])=>PS(r)?[e,r.catch(n=>{pe.debug("promise rejection for resource attribute: %s - %s",e,n)})]:[e,r])}function IUt(t){if(typeof t=="string"||t===void 0)return t;pe.warn("Schema URL must be string or undefined, got %s. Schema URL will be ignored.",t)}function CUt(t,e){let r=t?.schemaUrl,n=e?.schemaUrl,i=r===void 0||r==="",s=n===void 0||n==="";if(i)return n;if(s||r===n)return r;pe.warn('Schema URL merge conflict: old resource has "%s", updating resource has "%s". Resulting resource will have undefined Schema URL.',r,n)}Ue();var d0=class{emit(e){}enabled(){return!1}},bLe=new d0;var f0=Symbol.for("io.opentelemetry.js.api.logs"),IS=globalThis;function wLe(t,e,r){return n=>n===t?e:r}var gX=1;var _X=class{getLogger(e,r,n){return new d0}},kM=new _X;var DM=class{constructor(e,r,n,i){this._provider=e,this.name=r,this.version=n,this.options=i}emit(e){this._getLogger().emit(e)}enabled(e){return this._getLogger().enabled(e)}_getLogger(){if(this._delegate)return this._delegate;let e=this._provider._getDelegateLogger(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):bLe}};var p0=class{getLogger(e,r,n){var i;return(i=this._getDelegateLogger(e,r,n))!==null&&i!==void 0?i:new DM(this,e,r,n)}_getDelegate(){var e;return(e=this._delegate)!==null&&e!==void 0?e:kM}_setDelegate(e){this._delegate=e}_getDelegateLogger(e,r,n){var i;return(i=this._delegate)===null||i===void 0?void 0:i.getLogger(e,r,n)}};var LM=class t{constructor(){this._proxyLoggerProvider=new p0}static getInstance(){return this._instance||(this._instance=new t),this._instance}setGlobalLoggerProvider(e){return IS[f0]?this.getLoggerProvider():(IS[f0]=wLe(gX,e,kM),this._proxyLoggerProvider._setDelegate(e),e)}getLoggerProvider(){var e,r;return(r=(e=IS[f0])===null||e===void 0?void 0:e.call(IS,gX))!==null&&r!==void 0?r:this._proxyLoggerProvider}getLogger(e,r,n){return this.getLoggerProvider().getLogger(e,r,n)}disable(){delete IS[f0],this._proxyLoggerProvider=new p0}};var TLe=LM.getInstance();function RLe(t,e,r,n){for(let i=0,s=t.length;i<s;i++){let o=t[i];e&&o.setTracerProvider(e),r&&o.setMeterProvider(r),n&&o.setLoggerProvider&&o.setLoggerProvider(n),o.getConfig().enabled||o.enable()}}function ALe(t){t.forEach(e=>e.disable())}function yX(t){let e=t.tracerProvider||zt.getTracerProvider(),r=t.meterProvider||l0.getMeterProvider(),n=t.loggerProvider||TLe.getLoggerProvider(),i=t.instrumentations?.flat()??[];return RLe(i,e,r,n),()=>{ALe(i)}}Ue();var NUt=kn("OpenTelemetry SDK Context Key SUPPRESS_TRACING");function xLe(t){return t.getValue(NUt)===!0}var CS;(function(t){t[t.SUCCESS=0]="SUCCESS",t[t.FAILED=1]="FAILED"})(CS||(CS={}));Ue();var SX="[_0-9a-z-*/]",kUt=`[a-z]${SX}{0,255}`,DUt=`[a-z0-9]${SX}{0,240}@[a-z]${SX}{0,13}`,LUt=new RegExp(`^(?:${kUt}|${DUt})$`),$Ut=/^[ -~]{0,255}[!-~]$/,MUt=/,|=/;function EX(t){return LUt.test(t)}function vX(t){return $Ut.test(t)&&!MUt.test(t)}var UUt=32,OLe=512,PLe=",",ILe="=",$M=class t{_length;_rawTraceState;_internalState;constructor(e){this._rawTraceState=typeof e=="string"?e:"",this._length=this._rawTraceState.length}set(e,r){if(!EX(e)||!vX(r))return this;let n=this._getState(),i=n.get(e),s=this._length;if(typeof i=="string"?s+=r.length-i.length:s+=e.length+r.length+(n.size>0?2:1),s>OLe)return this;let o=new Map(n);return o.delete(e),o.set(e,r),this._fromState(o,s)}unset(e){let r=this._getState(),n=r.get(e);if(typeof n!="string")return this;let i=this._length-(e.length+n.length+1);r.size>1&&(i=i-1);let s=new Map(r);return s.delete(e),this._fromState(s,i)}get(e){return this._getState().get(e)}serialize(){let e="",r=0;for(let n of this._getState())r>0&&(e=PLe+e),e=`${n[0]}${ILe}${n[1]}`+e,r++;return e}_getState(){if(this._internalState)return this._internalState;let e=this._rawTraceState.split(PLe),r=new Map,n=0;for(let i of e){let s=i.trim(),o=s.indexOf(ILe);if(o===-1)continue;let a=s.slice(0,o),c=s.slice(o+1);if(!EX(a)||!vX(c))continue;let u=n+s.length+(r.size>0?1:0);if(!(u>OLe)&&(r.set(a,c),n=u,r.size>=UUt))break}return this._length=n,this._internalState=new Map(Array.from(r.entries()).reverse()),this._internalState}_fromState(e,r){let n=Object.create(t.prototype);return n._internalState=e,n._length=r,n}};var MM="traceparent",UM="tracestate",FUt="00",jUt="(?!ff)[\\da-f]{2}",zUt="(?![0]{32})[\\da-f]{32}",qUt="(?![0]{16})[\\da-f]{16}",BUt="[\\da-f]{2}",HUt=new RegExp(`^\\s?(${jUt})-(${zUt})-(${qUt})-(${BUt})(-.*)?\\s?$`);function CLe(t){let e=HUt.exec(t);return!e||e[1]==="00"&&e[5]?null:{traceId:e[2],spanId:e[3],traceFlags:parseInt(e[4],16)}}var df=class{inject(e,r,n){let i=zt.getSpanContext(e);if(!i||xLe(e)||!Ss(i))return;let s=`${FUt}-${i.traceId}-${i.spanId}-0${Number(i.traceFlags||Ur.NONE).toString(16)}`;n.set(r,MM,s),i.traceState&&n.set(r,UM,i.traceState.serialize())}extract(e,r,n){let i=n.get(r,MM);if(!i)return e;let s=Array.isArray(i)?i[0]:i;if(typeof s!="string")return e;let o=CLe(s);if(!o)return e;o.isRemote=!0;let a=n.get(r,UM);if(a){let c=Array.isArray(a)?a.join(","):a;o.traceState=new $M(typeof c=="string"?c:void 0)}return zt.setSpanContext(e,o)}fields(){return[MM,UM]}};var FM=class{_promise;_resolve;_reject;constructor(){this._promise=new Promise((e,r)=>{this._resolve=e,this._reject=r})}get promise(){return this._promise}resolve(e){this._resolve(e)}reject(e){this._reject(e)}};var h0=class{_isCalled=!1;_deferred=new FM;_callback;_that;constructor(e,r){this._callback=e,this._that=r}get isCalled(){return this._isCalled}get promise(){return this._deferred.promise}call(...e){if(!this._isCalled){this._isCalled=!0;try{Promise.resolve(this._callback.call(this._that,...e)).then(r=>this._deferred.resolve(r),r=>this._deferred.reject(r))}catch(r){this._deferred.reject(r)}}return this._deferred.promise}};var I1=hn(oQ(),1);Ue();var p1e=t=>{throw TypeError(t)},lQ=(t,e,r)=>e.has(t)||p1e("Cannot "+r),P1=(t,e,r)=>(lQ(t,e,"read from private field"),r?r.call(t):e.get(t)),aQ=(t,e,r)=>e.has(t)?p1e("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),l1e=(t,e,r,n)=>(lQ(t,e,"write to private field"),n?n.call(t,r):e.set(t,r),r),sjt=(t,e,r)=>(lQ(t,e,"access private method"),r),d1e="__netlify__getTracer",ajt="__netlify__shutdownTracers",cjt="__nfOTLPTrace",P0,I0,uQ,h1e,ujt=class{constructor(){aQ(this,uQ),aQ(this,P0),aQ(this,I0),l1e(this,P0,new h0(sjt(this,uQ,h1e),this)),l1e(this,I0,pe.createComponentLogger({namespace:"netlify-span-exporter"}))}export(t,e){if(P1(this,I0).debug(`export ${t.length.toString()} spans`),P1(this,P0).isCalled){e({code:CS.FAILED,error:new Error("Exporter has been shutdown")});return}console.log(cjt,JSON.stringify(ljt(t))),e({code:CS.SUCCESS})}shutdown(){return P1(this,P0).call()}};P0=new WeakMap;I0=new WeakMap;uQ=new WeakSet;h1e=function(){return P1(this,I0).debug("Shutting down"),Promise.resolve()};function ljt(t){return{resourceSpans:t.map(e=>{let r=e.spanContext();return{resource:{attributes:O1(e.resource.attributes),droppedAttributesCount:e.droppedAttributesCount},scopeSpans:[{scope:{name:e.instrumentationScope.name,version:e.instrumentationScope.version},spans:[{traceId:r.traceId,spanId:r.spanId,parentSpanId:e.parentSpanContext?.spanId,name:e.name,kind:e.kind||ka.SERVER,startTimeUnixNano:cQ(e.startTime),endTimeUnixNano:cQ(e.endTime),attributes:O1(e.attributes),droppedAttributesCount:e.droppedAttributesCount,events:e.events.map(n=>({name:n.name,timeUnixNano:cQ(n.time),attributes:O1(n.attributes??{}),droppedAttributesCount:n.droppedAttributesCount??0})),droppedEventsCount:e.droppedEventsCount,status:{code:e.status.code,message:e.status.message},links:e.links.map(n=>({spanId:n.context.spanId,traceId:n.context.traceId,attributes:O1(n.attributes??{}),droppedAttributesCount:n.droppedAttributesCount??0})),droppedLinksCount:e.droppedLinksCount}]}]}})}}function O1(t){return Object.keys(t).map(e=>m1e(e,t[e]))}function m1e(t,e){return{key:t,value:g1e(e)}}function g1e(t){let e=typeof t;return e==="string"?{stringValue:t}:e==="number"?Number.isInteger(t)?{intValue:t}:{doubleValue:t}:e==="boolean"?{boolValue:t}:t instanceof Uint8Array?{bytesValue:t}:Array.isArray(t)?{arrayValue:{values:t.map(g1e)}}:e==="object"&&t!=null?{kvlistValue:{values:Object.entries(t).map(([r,n])=>m1e(r,n))}}:{}}function cQ(t){let e=BigInt(1e9);return(BigInt(Math.trunc(t[0]))*e+BigInt(Math.trunc(t[1]))).toString()}var f1e={name:"@netlify/otel",version:"6.0.6",type:"module",engines:{node:"^18.14.0 || >=20.6.1"},main:"./dist/main.cjs",module:"./dist/main.js",types:"./dist/main.d.ts",exports:{".":{require:{types:"./dist/main.d.cts",default:"./dist/main.cjs"},import:{types:"./dist/main.d.ts",default:"./dist/main.js"},default:{types:"./dist/main.d.ts",default:"./dist/main.js"}},"./package.json":"./package.json","./bootstrap":{require:{types:"./dist/bootstrap/main.d.cts",default:"./dist/bootstrap/main.cjs"},import:{types:"./dist/bootstrap/main.d.ts",default:"./dist/bootstrap/main.js"},default:{types:"./dist/bootstrap/main.d.ts",default:"./dist/bootstrap/main.js"}},"./exporter-netlify":{require:{types:"./dist/exporters/netlify.d.cts",default:"./dist/exporters/netlify.cjs"},import:{types:"./dist/exporters/netlify.d.ts",default:"./dist/exporters/netlify.js"},default:{types:"./dist/exporters/netlify.d.ts",default:"./dist/exporters/netlify.js"}},"./instrumentation-fetch":{require:{types:"./dist/instrumentations/fetch.d.cts",default:"./dist/instrumentations/fetch.cjs"},import:{types:"./dist/instrumentations/fetch.d.ts",default:"./dist/instrumentations/fetch.js"},default:{types:"./dist/instrumentations/fetch.d.ts",default:"./dist/instrumentations/fetch.js"}},"./instrumentation-http":{require:{types:"./dist/instrumentations/http.d.cts",default:"./dist/instrumentations/http.cjs"},import:{types:"./dist/instrumentations/http.d.ts",default:"./dist/instrumentations/http.js"},default:{types:"./dist/instrumentations/http.d.ts",default:"./dist/instrumentations/http.js"}},"./opentelemetry":{require:{types:"./dist/opentelemetry.d.cts",default:"./dist/opentelemetry.cjs"},import:{types:"./dist/opentelemetry.d.ts",default:"./dist/opentelemetry.js"},default:{types:"./dist/opentelemetry.d.ts",default:"./dist/opentelemetry.js"}}},files:["dist/**/*"],scripts:{build:"tsup-node",dev:"tsup-node --watch",prepack:"npm run build",test:"run-s build test:ci","test:dev":"run-s build test:dev:*","test:ci":"run-s build test:ci:*","test:dev:vitest":"vitest","test:dev:vitest:watch":"vitest watch","test:ci:vitest":"vitest run",publint:"npx -y publint --strict"},keywords:["netlify","cdn"],license:"MIT",repository:{type:"git",url:"https://github.com/netlify/primitives.git",directory:"packages/otel"},bugs:{url:"https://github.com/netlify/primitives/issues"},author:"Netlify Inc.",devDependencies:{"@netlify/dev-utils":"^5.0.0",msw:"^2.10.5","npm-run-all2":"^7.0.2",tsup:"^8.0.0",vitest:"^3.0.0"},dependencies:{"@opentelemetry/api":"1.9.1","@opentelemetry/core":"2.8.0","@opentelemetry/instrumentation":"^0.220.0","@opentelemetry/resources":"2.9.0","@opentelemetry/sdk-trace-node":"2.9.0"}},_1e=t=>{if(Object.prototype.hasOwnProperty.call(globalThis,d1e))return;let e=ojt.version.slice(1),r=mX({"service.name":t.serviceName,"service.version":t.serviceVersion,"process.runtime.name":"nodejs","process.runtime.version":e,"deployment.environment":t.deploymentEnvironment,"http.url":t.siteUrl,"netlify.site.id":t.siteId,"netlify.site.name":t.siteName}),n=t.spanProcessors??[djt()],i=new I1.NodeTracerProvider({resource:r,spanProcessors:n});i.register({propagator:new df});let s=t.instrumentations??[];yX({instrumentations:s,tracerProvider:i}),Object.defineProperty(globalThis,d1e,{enumerable:!1,configurable:!0,writable:!1,value:function(a,c){return a?new ml(zt.getTracer(a,c)):new ml(zt.getTracer(f1e.name,f1e.version))}}),Object.defineProperty(globalThis,ajt,{enumerable:!1,configurable:!0,writable:!1,value:async()=>await i.shutdown()})},djt=()=>new I1.SimpleSpanProcessor(new ujt);Ue();var C0=hn(oQ(),1);Ue();import*as C1 from"diagnostics_channel";var y1e=class{constructor(t={}){this.instrumentationName="@netlify/otel/instrumentation-fetch",this.instrumentationVersion="1.0.0",this._recordFromReq=new WeakMap,this.config=t,this._channelSubs=[]}getConfig(){return this.config}setConfig(){}setMeterProvider(){}setTracerProvider(t){this.provider=t}getTracerProvider(){return this.provider}annotateFromRequest(t,e){let r=this.config.getRequestAttributes?.(e)??{},n=new URL(e.path,e.origin);t.setAttributes({...r,"http.request.method":e.method,"url.full":n.href,"url.host":n.host,"url.scheme":n.protocol.slice(0,-1),"server.address":n.hostname,"server.port":n.port,...this.prepareHeaders("request",e.headers)})}annotateFromResponse(t,e){let r=this.config.getResponseAttributes?.(e)??{};t.setAttributes({...r,"http.response.status_code":e.statusCode,...this.prepareHeaders("response",e.headers)}),t.setStatus({code:e.statusCode>=400?xi.ERROR:xi.UNSET})}prepareHeaders(t,e){if(!Array.isArray(e))return{};if(this.config.skipHeaders===!0)return{};let r=["*","/.*/"],n=this.config.skipHeaders??[],i=this.config.redactHeaders??[],s=n.some(a=>r.includes(a.toString())),o={};if(s)return o;for(let a=0;a+1<e.length;a=a+2){let c=e[a],u=e[a+1];if(typeof c!="string"&&!Buffer.isBuffer(c)||typeof u!="string"&&!Buffer.isBuffer(u))continue;let l=c.toString().toLowerCase();if(n.some(f=>typeof f=="string"?f==l:f.test(l)))continue;let d=`http.${t}.header.${l}`;i===!0||i.some(f=>typeof f=="string"?f==l:f.test(l))?o[d]="REDACTED":o[d]=u.toString()}return o}getRequestMethod(t){return["HEAD","GET","POST","PUT","PATCH","DELETE"].includes(t.toUpperCase())?t.toUpperCase():"_OTHER"}getTracer(){if(!this.provider)return;let t=this.provider.getTracer(this.instrumentationName,this.instrumentationVersion);return t instanceof ml?t:new ml(t)}enable(){this._channelSubs.length>0||(this.subscribe("undici:request:create",this.onRequestCreate.bind(this)),this.subscribe("undici:request:headers",this.onRequestHeaders.bind(this)),this.subscribe("undici:request:trailers",this.onRequestEnd.bind(this)),this.subscribe("undici:request:error",this.onRequestError.bind(this)))}subscribe(t,e){C1.subscribe(t,e);let r=()=>C1.unsubscribe(t,e);this._channelSubs.push({name:t,unsubscribe:r})}disable(){this._channelSubs.forEach(t=>{t.unsubscribe()}),this._channelSubs.length=0}onRequestCreate({request:t}){try{let e=this.getTracer(),r=new URL(t.path,t.origin);if(!e||t.method==="CONNECT"||this.config.skipURLs?.some(i=>typeof i=="string"?r.href.startsWith(i):i.test(r.href)))return;let n=e.startSpan(this.getRequestMethod(t.method),{kind:ka.CLIENT},sr.active());this.annotateFromRequest(n,t),this._recordFromReq.set(t,n)}catch{}}onRequestHeaders({request:t,response:e}){try{let r=this._recordFromReq.get(t);if(!r)return;this.annotateFromResponse(r,e)}catch{}}onRequestError({request:t,error:e}){try{let r=this._recordFromReq.get(t);if(!r)return;r.recordException(e),r.setStatus({code:xi.ERROR,message:e.message}),r.end(),this._recordFromReq.delete(t)}catch{}}onRequestEnd({request:t}){try{let e=this._recordFromReq.get(t);if(!e)return;e.end(),this._recordFromReq.delete(t)}catch{}}};var qHe=hn(jHe(),1);var Cj=de("tracing"),zHe=8e3,AKt=5e3,Yx=async(t=AKt)=>{try{await Promise.race([_De(),RKt(t)])}catch(e){Cj.warn("Failed to flush tracers on shutdown",e)}},BHe=async(t,e,r)=>{if(!It()){let n=[new C0.SimpleSpanProcessor(new dne),new C0.SimpleSpanProcessor(new qHe.OTLPTraceExporter({url:r.exporterUrl}))];await _1e({serviceName:"@netlify/agent-runner-cli",serviceVersion:t,deploymentEnvironment:"production",siteUrl:"",siteId:process.env.SITE_ID??"",siteName:e,spanProcessors:n,instrumentations:[new y1e({skipHeaders:!0})]})}return r.traceparent?(Gi.setGlobalPropagator(new df),Gi.extract(sr.active(),{traceparent:r.traceparent,isRemote:!0})):sr.active()};function cr(t,e,r){return Cj.log(`\u23F3 TRACE: ${e} starting...`),QA(t,e,r)}var dne=class{export(e,r){for(let n of e)this.logSpan(n);r({code:1})}async shutdown(){}forceFlush(){return Promise.resolve()}logSpan(e){let r=(e.endTime[0]-e.startTime[0])*1e3+(e.endTime[1]-e.startTime[1])/1e6,n=e.attributes,i=[];for(let[a,c]of Object.entries(n))a.includes("duration")&&typeof c=="number"?i.push(`${a}=${c.toFixed(2)}ms`):i.push(`${a}=${c}`);let s=e.status?.code===2?"\u274C":"\u2705",o=i.length>0?` [${i.join(", ")}]`:"";Cj.log(`${s} TRACE: ${e.name} completed in ${r.toFixed(2)}ms${o}`),e.status?.code===2&&e.status.message&&Cj.log(` \u274C Error: ${e.status.message}`)}};function fne(){return Ge().captureLlmContentEnabled}function HHe(t){return t.includes("claude")?"anthropic":t.includes("codex")?"openai":t.includes("gemini")||t.includes("antigravity")?"google":t.includes("muse")?"meta":t.includes("opencode")?"opencode":t}function Nj(t,e,r){let n={role:t,parts:[{type:"text",content:ys(e)}]};return r&&(n.finish_reason=r),JSON.stringify([n])}var xKt=new Set([X.Task,X.RunCommand,X.Explore,X.FileRead,X.FileWrite,X.Notebook,X.Web,X.Todo,X.Skill,X.Tool,X.Memorize,X.Deployment,X.SiteGeneration]);function VHe(t,e,r,n){if(!t.length)return;let i=It();if(!i)return;let s=fne(),o=Math.max(1,(n-r)/t.length);t.forEach((a,c)=>{let u=Math.min(n,r+c*o),l=Math.min(n,u+o),d=a.type==="tool_use"||a.type==="tool_result"||a.category!=null&&xKt.has(a.category),f=d?"execute_tool":"chat",p=a.title||a.type||`step-${a.id??c}`,h=a.category||"unknown",m=d?`${f} ${h}`:f,_=a.message?a.message.length>zHe?`${a.message.slice(0,zHe)}\u2026`:a.message:void 0;i.startSpan(m,{startTime:u,attributes:{"gen_ai.capability.name":e,"gen_ai.step.name":p,"gen_ai.operation.name":f,...d?{"gen_ai.tool.name":h}:{},"spark.step.id":a.id??-1,...a.type?{"spark.step.type":a.type}:{},...a.category?{"spark.step.category":a.category}:{},...a.groupId?{"spark.step.group_id":a.groupId}:{},...a.parentGroupId?{"spark.step.parent_group_id":a.parentGroupId}:{},...s&&_?d?{"gen_ai.tool.call.result":ys(_)}:{"gen_ai.output.messages":Nj("assistant",_)}:{}}}).end(l)})}import{readdir as OKt,rm as PKt}from"fs/promises";import{join as IKt}from"path";async function GHe(t,e=[]){let n=(await OKt(t)).filter(i=>!e.includes(i));await Promise.all(n.map(i=>PKt(IKt(t,i),{recursive:!0,force:!0})))}var CKt=300,Jx=t=>Ge().budgetCreditThresholds[t.mode]?.[t.runner]??CKt,Zx=({mode:t,sessionCreditLimit:e},r)=>t==="create"&&e!=null&&e<=r;var pne=t=>{let e=Jx(t);if(!Zx(t,e))return"default";let r=Ge();return r.createAskFirstEnabled?"ask_first":r.creditWrapUpEnabled?"budget_constrained":"default"},WHe=t=>{let e=pne(t),r=Jx(t);return{budget_eligible:Zx(t,r),budget_constrained:e==="budget_constrained",ask_first:e==="ask_first"}};var LKt=Xx.dirname(NKt(import.meta.url)),KHe=kKt(import.meta.url),$Kt=Xx.resolve(LKt,"scripts/scaffold.js"),MKt="scripts/scaffold.js",UKt=/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\S+/g,hne=t=>{if(t.length>=2){let e=t[0],r=t[t.length-1];if(e==='"'&&r==='"'||e==="'"&&r==="'")return t.slice(1,-1)}return t},FKt=t=>/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(t),jKt=t=>{let e=hne(t);return e==="node"||e.endsWith("/node")},Js=t=>{if(typeof t!="string")return!1;let e=t.match(UKt)||[];if(e.length<2)return!1;let r=0;for(;r<e.length&&FKt(hne(e[r]));)r+=1;if(r>=e.length||!jKt(e[r]))return!1;let n=e[r+1];return n?hne(n).includes(MKt):!1},jm=de("create_stage"),mne="Do not run local validation or dev-server commands to check your work \u2014 specifically `tsc`, `npx tsc`, `vite build`, `vite dev`, or any equivalent build/start/test command. The build pipeline installs and validates the project automatically after your edits. Verify your changes by reading the files you edited.",zKt=`${mne}
|
|
601
601
|
|
|
602
602
|
Commands that generate or modify project files are fine to run when the task requires them \u2014 for example \`drizzle-kit generate\` to write a database migration after a schema change, or other code-generation utilities documented in the skills.`,qKt=`${mne}
|
|
603
603
|
|
|
@@ -1002,7 +1002,7 @@ You're an AI agent designed to assist with tasks related to a Netlify project. P
|
|
|
1002
1002
|
|
|
1003
1003
|
Use the following file for the complete context of the ask, the environment, and what's available. ${S} You MUST READ ALL OF IT. Make sure to read it first. Never cite or paraphrase private context.
|
|
1004
1004
|
`}return v};import Rer from"crypto";import{createWriteStream as Aer}from"fs";import MP from"fs/promises";import UP from"path";import xer from"process";import{Readable as Oer,Transform as Per}from"stream";import{pipeline as Ier}from"stream/promises";async function tw(t,e){let{maxRetries:r,baseDelay:n,onRetry:i,shouldRetry:s}=e,o;for(let a=1;a<=r;a++)try{return await t()}catch(c){if(o=c,a===r||s&&!s(o))throw o;i&&i(a,o),await new Promise(u=>setTimeout(u,n*a))}throw o}var $P=de("asset_fetch"),Xq=100*1024*1024,Cer=6e4,W3e=6,Ner=3,ker=300,Der=t=>{if(!hd(t))return!1;switch(t.kind){case"network":case"timeout":case"http_5xx":return!0;case"http_4xx":return t.status===404;default:return!1}},Ler=t=>Rer.createHash("sha1").update(t).digest("hex").slice(0,8),$er=t=>typeof t=="string"&&t.length>0&&t!=="."&&t!==".."&&t===UP.basename(t),Mer=async t=>{try{return await MP.stat(t),!0}catch{return!1}},Uer=t=>decodeURIComponent(new URL(t).pathname),Rse=t=>UP.basename(t)||"attachment",Fer=(t,e)=>{let r=UP.extname(t);return`${t.slice(0,t.length-r.length)}-${Ler(e)}${r}`},jer=t=>{let e=new Map;for(let r of t)e.set(Rse(r),(e.get(Rse(r))??0)+1);return t.map(r=>{let n=Rse(r);return(e.get(n)??0)>1?Fer(n,r):n})},K3e=t=>{let e=t?.name;return e==="TimeoutError"||e==="AbortError"?"timeout":"network"},zer=async(t,e)=>{let r;try{r=await fetch(t,{signal:AbortSignal.timeout(Cer)})}catch(a){throw new fc(`Asset fetch failed: ${a?.message||a}`,K3e(a))}if(!r.ok)throw await r.body?.cancel(),new fc(`Asset download failed: ${r.status} ${r.statusText}`,r.status>=500?"http_5xx":"http_4xx",r.status);let n=r.headers.get("content-length");if(n&&Number(n)>Xq)throw new fc(`Asset too large: ${n} bytes (max ${Xq})`,"too_large");if(!r.body)throw new fc("Asset download failed: missing response body","network");let i=`${e}.part`,s=0,o=new Per({transform(a,c,u){if(s+=a.length,s>Xq){u(new fc(`Asset too large: exceeded ${Xq} bytes`,"too_large"));return}u(null,a)}});try{await Ier(Oer.fromWeb(r.body),o,Aer(i))}catch(a){throw await MP.rm(i,{force:!0}),hd(a)?a:new fc(`Asset body read failed: ${a?.message||a}`,K3e(a))}try{await MP.rename(i,e)}catch(a){throw await MP.rm(i,{force:!0}),a}},qer=async(t,e,r)=>{if(!$er(t))return $P.warn(`Skipping attachments for unsafe session id: ${t}`),[];if(!Array.isArray(e)||e.length===0)return[];let n=UP.join(r,In,oo,t);await MP.mkdir(n,{recursive:!0});let i=e.filter(o=>typeof o=="string"&&o.length>0),s=jer(i.map(Uer));return i.map((o,a)=>({sessionId:t,url:o,dest:UP.join(n,s[a])}))},Y3e=async({assetMap:t,cwd:e=xer.cwd()})=>{let r=Object.entries(t??{});if(r.length===0)return;let n=(await Promise.all(r.map(([a,c])=>qer(a,c,e)))).flat();if(n.length===0)return;let i={};for(let a of n)i[a.sessionId]=(i[a.sessionId]??0)+1;$P.info(`Reconciling ${n.length} attachment(s) across ${Object.keys(i).length} session(s)`);let s={},o=async a=>{if(await Mer(a.dest))return;let c=performance.now(),u=new URL(a.url).pathname;try{await tw(()=>zer(a.url,a.dest),{maxRetries:Ner,baseDelay:ker,shouldRetry:Der,onRetry:(l,d)=>{let f=hd(d)?d.kind:"unknown";te.inc("assets.fetch_retry",1,{kind:f}),$P.info(`Retrying asset download session=${a.sessionId} key=${u} kind=${f} attempt=${l}`)}})}catch(l){let d=hd(l)?l.kind:"unknown",f=hd(l)?l.status:void 0;throw $P.error(`Asset download failed session=${a.sessionId} key=${new URL(a.url).pathname} kind=${d} status=${f??"-"} elapsedMs=${Math.round(performance.now()-c)} message=${l?.message||l}`),l}s[a.sessionId]=(s[a.sessionId]??0)+1};for(let a=0;a<n.length;a+=W3e){let c=n.slice(a,a+W3e);await Promise.all(c.map(o))}for(let[a,c]of Object.entries(i)){let u=s[a]??0;$P.info(`Session ${a}: fetched ${u} attachment(s), ${c-u} already present`)}};import{createHash as Ber}from"crypto";import{createReadStream as Her}from"fs";import sc from"fs/promises";import Qq from"os";import ic from"path";var J3e=de("repo"),tKe="runner-diffs-",Ase=t=>`${tKe}${t}-`,rKe=async t=>{let e=Qq.tmpdir(),r;try{r=await sc.readdir(e)}catch{return}await Promise.all(r.filter(n=>n.startsWith(tKe)&&!n.startsWith(Ase(t))).map(n=>sc.rm(ic.join(e,n),{recursive:!0,force:!0}).catch(()=>{})))},Z3e=async t=>{let e=Ber("sha256");for await(let r of Her(t))e.update(r);return e.digest("hex")},X3e=async(t,e)=>t.size===e.size&&await Z3e(t.path)===await Z3e(e.path),nKe=/.. (.+)?\.log$/,Ver=[nKe],Ger=1,Q3e=t=>{let e=t.split(`
|
|
1005
|
-
`).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)},Wer=t=>t instanceof Error&&String(t.stderr??"").includes("No such remote"),Ker=t=>{let e=t instanceof Error?t.message:String(t),r=String(t?.stderr??"").trim();return ys(r?`${e}: ${r}`:e)},Yer={stdin:"pipe",stdout:"pipe",stderr:"pipe",stripFinalNewline:!1},eKe=500,FP=class extends Error{constructor(r,n){super(n instanceof Error?n.message:String(n));this.step=r;this.cause=n}},ks=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 FP(r,n)}}run(e,r={}){return Dt("git",e,{cwd:this.cwd,...r,env:{...r.env,NETLIFY_INTERNAL_GIT:"1"}})}async
|
|
1005
|
+
`).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)},Wer=t=>t instanceof Error&&String(t.stderr??"").includes("No such remote"),Ker=t=>{let e=t instanceof Error?t.message:String(t),r=String(t?.stderr??"").trim();return ys(r?`${e}: ${r}`:e)},Yer={stdin:"pipe",stdout:"pipe",stderr:"pipe",stripFinalNewline:!1},eKe=500,FP=class extends Error{constructor(r,n){super(n instanceof Error?n.message:String(n));this.step=r;this.cause=n}},ks=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 FP(r,n)}}run(e,r={}){return Dt("git",e,{cwd:this.cwd,...r,env:{...r.env,NETLIFY_INTERNAL_GIT:"1"}})}async commitAndCreateDiffs({config:e,isRetry:r}){J3e.info("Getting runner diffs");let n=await this.hasAgentChanges(),{hasChanges:i}=n,{status:s}=n;if(!i)return{hasChanges:!1};if(!r){let u=Q3e(s);await this.discardSetupOnlyChanges(u)}J3e.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 sc.mkdtemp(ic.join(Qq.tmpdir(),Ase(e.sessionId))),c=await this.writeDiffFiles({config:e,diffDir:a,target:{commit:"HEAD"},ignored:o});return await this.rollbackIfLocal(),c.hasChanges&&te.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(`
|
|
1006
1006
|
`).filter(i=>Ver.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(`
|
|
1007
1007
|
`)})}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(`
|
|
1008
1008
|
`).forEach(i=>{r.forEach(o=>{let a=i===`?? ${o}`,c=i.startsWith(`?? ${o}/`)||i.startsWith(`?? ${o}${ic.sep}`);(a||c)&&n.push(`:!${o}`)});let s=i.match(nKe)?.[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 _=ic.join(r,h),y=m?["diff","--no-relative",p,s,"--binary"]:["diff","--no-relative",p,s];await this.run([...y,`--output=${_}`],{stdio:["ignore","ignore","pipe"],env:o});let{size:v}=await sc.stat(_);return{path:_,size:v}},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 X3e(l,p)||(d=p)}let f={hasChanges:!0,diff:c,resultDiff:l,ignored:i};return await X3e(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===Ger)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(`
|
|
@@ -1078,13 +1078,13 @@ Below are all of the logs with potential issues that we extracted. Some of them
|
|
|
1078
1078
|
|
|
1079
1079
|
${t.pop()}
|
|
1080
1080
|
`;var sI=de("deploy"),Zcr=t=>t===""||/[\s"\\]/u.test(t)?JSON.stringify(t):t,BJe=async t=>await cr(It(),"create-preview-deploy",async e=>Xcr(t,e)),Xcr=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"];sI.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";sI.log(`Running: ${l} ${u.map(Zcr).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 Dt(l,u,{stdio:["ignore","pipe","pipe"],env:{...process.env,NETLIFY_DEPLOY_SOURCE:"agent_runner",...d}});f.stderr&&sI.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}),sI.log(`
|
|
1081
|
-
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 sI.error("Failed to create preview deploy via CLI:",u),c?.setAttributes({success:!1,error:u.message}),u}};import HJe from"fs";import uce from"path";var VJe=(t=process.cwd())=>{let e=uce.join(t,In,Fue);return{hasNetlifyForm:HJe.existsSync(uce.join(e,"netlify-forms")),hasNetlifyIdentity:HJe.existsSync(uce.join(e,"netlify-identity"))}};var uc=de("deploy_stage"),oI=async t=>await cr(It(),"run-deploy-stage",async()=>Qcr(t)),Qcr=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 ks,a=await cr(It(),"get-runner-diffs",async()=>await o.
|
|
1081
|
+
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 sI.error("Failed to create preview deploy via CLI:",u),c?.setAttributes({success:!1,error:u.message}),u}};import HJe from"fs";import uce from"path";var VJe=(t=process.cwd())=>{let e=uce.join(t,In,Fue);return{hasNetlifyForm:HJe.existsSync(uce.join(e,"netlify-forms")),hasNetlifyIdentity:HJe.existsSync(uce.join(e,"netlify-identity"))}};var uc=de("deploy_stage"),oI=async t=>await cr(It(),"run-deploy-stage",async()=>Qcr(t)),Qcr=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 ks,a=await cr(It(),"get-runner-diffs",async()=>await o.commitAndCreateDiffs({config:e,isRetry:i}));if(uc.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}=VJe();if(p||h){let S={};p&&(uc.log("Detected Netlify Forms enablement \u2014 enabling early"),S.has_netlify_form=!0),h&&(uc.log("Detected Netlify Identity enablement \u2014 enabling early"),S.has_netlify_identity=!0);try{await _n(e.id,e.sessionId,S)}catch(g){uc.warn("Failed to send early feature enablement (continuing):",g)}}let m=r!==void 0&&(f||e.mode==="redeploy"||!!e.pendingUndeployedChanges);uc.log("Deploy condition check:",{resultUndefined:r===void 0,resultType:typeof r,hasChanges:f,isRedeploy:e.mode==="redeploy",pendingUndeployedChanges:!!e.pendingUndeployedChanges,wouldCreateDeploy:m});let _=Ak(e.mode),y=null,v;if(m)try{let S;try{let g=await cr(It(),"get-runner-session",async()=>await Oh(e.id,e.sessionId));g?.title&&(S=g.title)}catch(g){uc.warn("Failed to fetch session title, using fallback message:",g.message)}if(await _n(e.id,e.sessionId,{steps:[{title:_?"Deploying project":"Deploying preview",category:X.Deployment}]}),y=await BJe({cliPath:t,hasRepo:e.hasRepo,message:S,deploySubdomain:s,filter:n,prodDeploy:_,agentRunnerId:e.id,agentRunnerSessionId:e.sessionId}),_)try{let g=await o.pushToOrigin({targetBranch:e.pushBranch});g.pushed?uc.log(`Pushed workspace commits to origin (${g.branch})`):uc.log(`Skipped origin push (${g.reason})`)}catch(g){v=g instanceof Error?g.message:String(g),uc.warn("Failed to push workspace commits to origin (continuing):",g)}}catch(S){if(an())throw S;return uc.warn("Failed to create preview deploy (continuing with agent run):",S),{diff:c,resultDiff:u,hasChanges:f,previewInfo:null,diffBinary:l,resultDiffBinary:d,deployError:S instanceof Error?S.message:String(S),isProdDeploy:_,hasNetlifyForm:p,hasNetlifyIdentity:h}}return uc.log("Git status",{hasDiff:!!c,hasChanges:f}),{diff:c,resultDiff:u,hasChanges:f,previewInfo:y,diffBinary:l,resultDiffBinary:d,gitPushError:v,isProdDeploy:_,hasNetlifyForm:p,hasNetlifyIdentity:h}};var eur=de("redeploy"),GJe="Redeploy completed",WJe=async({cliPath:t,config:e,filter:r,deploySubdomain:n,isProdDeploy:i,withStageTimer:s})=>{let o=await s("deploy",()=>oI({cliPath:t,config:e,result:GJe,filter:r,isRetry:!1,deploySubdomain:n}));o.deployError&&(eur.warn(`Redeploy deploy failed: ${o.deployError}`),te.inc("deploy.failed",1,{attempt:1})),Pk({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:GJe,duration:0,resultDiff:c,diffBinary:l,resultDiffBinary:d,previewInfo:u,isProdDeploy:i,hasNetlifyForm:f,hasNetlifyIdentity:p}};import WXe from"process";import tur from"fs";import rur from"path";import nur from"process";var lce=de("db_migrations"),iur=new Set(["drizzle.config.ts","drizzle.config.js","drizzle.config.mjs"]),YJe=async t=>await Ok({stage:"db-migrations"},()=>cr(It(),"db-migrations",async e=>{let r=t.cwd||nur.cwd();if(!(await KJe("@netlify/database",r)||await KJe("@netlify/db",r)))return e?.setAttributes({skipped:!0,reason:"@netlify/database is not installed"}),te.inc("db_migrations.run",1,{outcome:"skipped",reason:"no_module"}),{skipped:!0,reason:"no_module"};let i=[...iur].find(s=>tur.existsSync(rur.join(r,s)));if(!i)return e?.setAttributes({skipped:!0,reason:"no drizzle config found"}),te.inc("db_migrations.run",1,{outcome:"skipped",reason:"no_config"}),{skipped:!0,reason:"no_config"};e?.setAttributes({configFile:i}),lce.log(`Found ${i}, running drizzle-kit generate to ensure migrations are up to date`);try{let s=await Dt("npx",["drizzle-kit","generate"],{cwd:r,stdio:["ignore","pipe","pipe"]});return s.stdout&&lce.log(String(s.stdout)),e?.setAttributes({success:!0}),te.inc("db_migrations.run",1,{outcome:"success"}),{skipped:!1}}catch(s){let o=sur(s);return lce.warn("drizzle-kit generate failed:",o),e?.setAttributes({success:!1,error:o}),te.inc("db_migrations.run",1,{outcome:"failure"}),{skipped:!1,error:o}}})),KJe=async(t,e)=>{try{return await fDe(`node -e "require.resolve('${t}')"`,{cwd:e,stdio:"ignore"}),!0}catch{return!1}},sur=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(`
|
|
1082
1082
|
`)}return t instanceof Error?t.message:String(t)};var YB=de("migration_state"),dce=async({cliPath:t,cwd:e})=>{let r;try{let n=await Dt(t,["db","status","--json"],{cwd:e,stdio:["ignore","pipe","pipe"]});r=n.stdout?String(n.stdout):""}catch(n){let i=n;throw YB.warn("`netlify db status --json` failed",{exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr}),n}YB.log("`netlify db status --json` output",{stdout:r});try{return JSON.parse(r)}catch(n){throw YB.warn("Failed to parse `netlify db status --json` output",{stdout:r,error:String(n)}),n}},our=()=>["## 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(`
|
|
1083
1083
|
`),aur=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(`
|
|
1084
1084
|
`)},fce=async({cliPath:t,cwd:e,isFreshDatabase:r})=>{if(r)return our();try{return aur(await dce({cliPath:t,cwd:e}))}catch(n){return YB.warn("Skipping migration context injection \u2014 failed to build state block",{error:n}),null}},JJe=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(`
|
|
1085
1085
|
`))},ZJe=t=>t.missingOnDisk.length>0||t.outOfOrder.length>0;var XJe=de("db_migrations_verify"),cur=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"},QJe=async t=>await cr(It(),"db-migrations-verify-stage",async e=>{let r;try{r=await dce({cliPath:t.cliPath,cwd:t.cwd})}catch(i){return XJe.warn("Skipping migration verification \u2014 failed to read status",{error:i}),e?.setAttributes({"verify.skipped":!0,"verify.skip_reason":"status_error"}),te.inc("db_migrations.verify",1,{drift:"unknown"}),{}}if(!ZJe(r))return e?.setAttributes({"verify.drift":!1}),te.inc("db_migrations.verify",1,{drift:"none"}),{};let n=JJe(r);return te.inc("db_migrations.verify",1,{drift:cur(r)}),e?.setAttributes({"verify.drift":!0,"verify.missing_on_disk_count":r.missingOnDisk.length,"verify.out_of_order_count":r.outOfOrder.length}),XJe.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 _ue from"process";import Cfr from"net";var so=hn(pue(),1),qEn=so.default.Client,BEn=so.default.Pool,HEn=so.default.Connection,VEn=so.default.types,GEn=so.default.Query,WEn=so.default.DatabaseError,KEn=so.default.escapeIdentifier,YEn=so.default.escapeLiteral,JEn=so.default.Result,ZEn=so.default.TypeOverrides,XEn=so.default.defaults,BXe=so.default;var Nfr=1e3,kfr=6e4,gue=class extends Error{willRetry;constructor(t,e){super(t),this.name="ProvisionHeldError",this.willRetry=e}},HXe=t=>t instanceof gue;function Dfr(t,e={}){let r=e.baseMs??Nfr,n=e.maxMs??kfr,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 gue(`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 gue(`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 Lfr=80877103,$fr=196608,Mfr=Buffer.from([78]);function Ufr(){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 p2(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 Ffr(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 HXe(f)||n("Provisioning error:",p),e.end(p2(p)),i(),f}let o=zfr(s),a=new BXe.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(p2(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(Ufr()),e.on("data",f=>{l.destroyed||l.write(f)}),l.on("data",f=>{e.destroyed||e.write(f)}),e.resume(),l}function jfr(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)===Lfr){t.write(Mfr),o="startup";return}o="startup"}if(o==="startup"){if(u.length<8){t.end(p2("Invalid startup message")),c();return}if(u.readInt32BE(4)!==$fr){t.end(p2("Unsupported protocol version")),c();return}t.pause(),t.removeAllListeners("data"),Ffr({clientSocket:t,provision:r,logger:n,cleanup:c}).then(d=>{s=d},d=>{HXe(d)||n("Startup error:",d),c()})}})}function zfr(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 VXe=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=Dfr(t.provision,t.retry)}async start(){return new Promise((t,e)=>{let r=Cfr.createServer(n=>{this.sockets.add(n),n.on("close",()=>{this.sockets.delete(n)}),jfr(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 h2=de("db_setup"),GXe=async({siteId:t,isProd:e,alias:r,connectionString:n})=>await cr(It(),"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),_ue.env.NETLIFY_DB_BRANCH=s,n)return i?.setAttributes({"db_setup.source":"config","db_setup.has_proxy":!1}),h2.log("Using database connection string provided by the API"),_ue.env.NETLIFY_DB_URL=n,{connectionString:n,wasProvisioned:()=>!1};let o=!1,a=new VXe({logger:(...u)=>h2.log("db-proxy:",...u),provision:async()=>(h2.log("Provisioning database for site via API"),await iRe(t),o=!0,await Hfr(t,e,r)),retry:{isPermanent:Bfr}}),c=await a.start();return i?.setAttributes({"db_setup.source":"proxy","db_setup.has_proxy":!0}),h2.log("Local DB proxy started",{connectionString:c}),_ue.env.NETLIFY_DB_URL=c,{connectionString:c,proxy:a,wasProvisioned:()=>o}}),qfr=new Set([400,401,403,422]),Bfr=t=>co(t)||t instanceof Error&&"statusCode"in t&&qfr.has(t.statusCode),Hfr=async(t,e,r)=>e||!r?(await rRe(t)).connection_string:(await sRe(t,r),(await nRe(t,r)).connection_string);var KXe=({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=SOe(t,u),o?(te.inc("ask_mode.db_read_granted",1),U3e({cliPath:e,branch:o.branch})):void 0;WXe.env.EXPERIMENTAL_NETLIFY_DB_ENABLED="1";let d=t.siteId;if(WXe.env.NETLIFY_LOCAL_MODE||!d)return;let f=await n("db-setup",()=>GXe({siteId:d,isProd:l,alias:u,connectionString:t.dbConnectionString}),Uo.timeUnits.minutes(10));return i=f.proxy,s=f.wasProvisioned,r?await fce({cliPath:e,cwd:r,isFreshDatabase:!!f.proxy})??void 0:void 0},currentContext:async()=>{if(!(a||!r)&&await c()!==!1)return await fce({cliPath:e,cwd:r,isFreshDatabase:!1})??void 0},generateMigrations:async()=>a?{skipped:!0,reason:"no_module"}:await YJe({cwd:r}),verifyMigrations:async()=>a||!r?{}:await n("db-migrations-verify",()=>QJe({cliPath:e,cwd:r})),hasDatabase:c,stop:async()=>{await i?.stop()},revokeAskAccess:()=>{o&&j8()}}};import Vfr from"process";var YXe=de("teardown"),JXe=({config:t,cwd:e,database:r,stopUsageTracking:n})=>{let i,s=t.mode==="ask",o=new ks(e);return{setRunnerCleanup:a=>{i=a},run:async a=>{let c=async(l,d)=>{try{await d()}catch(f){YXe.warn(`Teardown step failed: ${l}`,{state:a,error:f?.message||f}),te.inc("teardown.step_failed",1,{step:l,state:a})}},u=a==="completed"&&!Vfr.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&&(YXe.warn(`Removed ${l.length} leftover untracked change(s) after ask run`,{removed:l}),te.inc("ask_mode.leaked_untracked_files",l.length))})}}};var Gfr=({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)]],yue=(t,e,r,n)=>{for(let[i,s]of Gfr(r))Number.isFinite(s)&&s>0&&s<=n&&t.timing(e,n-s,{from:i})},ZXe=(t,e=Date.now(),r=te)=>yue(r,"startup.duration",t,e),XXe=(t,e=Date.now(),r=te)=>yue(r,"startup.time_to_prompt",t,e),QXe=(t,e=Date.now(),r=te)=>yue(r,"startup.time_to_first_output",t,e),m2=(t,e=te)=>e.inc("startup.failed",1,{reason:t}),eQe=(t,e=Date.now(),r=te)=>{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 tQe=de("run"),Wfr="unspecified",rQe=(t,e=Date.now(),r=tQe)=>{r.info(pc({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}))},nQe=(t,e=tQe)=>{e.info(pc({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??Wfr,is_answer_resume:t.isAnswerResume,hot_follow_up:t.isHotFollowUp}))};function iQe(t){return["One or more AI functions use the legacy **v1** syntax (`exports.handler` / `module.exports.handler`):","",t.map(r=>`- ${r}`).join(`
|
|
1086
1086
|
`),"",'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(`
|
|
1087
|
-
`)}var o_=de("usage_tracker"),Kfr=4e3,Yfr=5e3,Jfr=2e4,Zfr=(t,e,r)=>t===!0||r!=null&&e!=null&&e>=r,Xfr=(t,e,r)=>e!=null&&e>0&&r!=null&&t!=null&&e-t<=r,sQe=(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)},_=R=>{m(),p=setInterval(()=>{v()},R),p.unref?.()},y=async()=>{try{let R=await Dk(t,e);o_.log("Usage update response",{usage:R?.usage});let T=R?.usage?.total_credits_cost;T!=null&&(u=T);let P=R?.enforced_credits_cap;if(P!=null&&P!==f){let O=f==null;f=P,o_.log("Took the session credit limit from a usage poll",{sessionCreditLimit:f,totalCreditsCost:T,isFirstLimit:O}),O&&te.inc("session.credit_cap_late_arrival",1)}let I=Zfr(R?.credit_limit_exceeded,T,f);if(I&&(o_.log("Credit limit exceeded",{totalCreditsCost:T,sessionCreditLimit:f}),a||(l=Date.now(),d=T??u??0,_(Jfr)),a=!0),h&&!c&&!I&&Xfr(T,f,n)){c=!0,o_.log("Credit reserve reached",{totalCreditsCost:T,sessionCreditLimit:f,creditReserve:n});try{i()}catch(O){o_.warn("onCreditReserveReached callback threw",{error:O?.message||O})}}}catch(R){o_.warn("Failed to update usage",{error:R?.message||R})}},v=AI(y,Kfr);return{onAgentOutput:()=>{if(a)throw new ao("AI credit usage exceeded enforced limit.",503,"Credit limit reached. Check credit limits to continue using Agent Runners.");o||(s=!0,p||_(Yfr))},stop:async()=>{o||(o=!0,m(),s&&(v.cancel(),o_.log("Sending final usage update"),await y(),l!==void 0&&(te.timing("credit_limit.overage_duration",Date.now()-l),te.distribution("credit_limit.overage_credits",Math.max(0,(u??d??0)-(d??0))))))},getCreditsCost:()=>u,getSessionCreditLimit:()=>f}};var oQe=de("session_credit_limit"),Qfr=async t=>{if(t.sessionCreditLimit!=null)return{limit:t.sessionCreditLimit,source:"env"};try{let e=(await Dk(t.id,t.sessionId))?.enforced_credits_cap;if(e!=null)return oQe.log("Resolved the session credit limit from the usage endpoint",{limit:e}),{limit:e,source:"usage"}}catch(e){oQe.warn("Usage call for the session credit limit failed",{error:e?.message||e})}return{source:"none"}},aQe=async(t,e=!1)=>{let{limit:r,source:n}=await Qfr(t);t.sessionCreditLimit=r,te.inc("session.credit_cap_source",1,{source:n,hot_follow_up:e})};var Hp=de("credit_wrapup"),cQe="low",epr=t=>{if(t.mode==="ask")return O2;if(t.mode==="normal")return P2;let e=Jx(t);return Zx(t,e)?A2:x2},uQe=t=>typeof t=="number"?t:void 0,Sue=t=>{let e=Ge(),r=e.creditWrapUpReserveByModeAgentAndModel[t.mode]?.[t.runner];return uQe(t.model?r?.models?.[t.model]:void 0)??uQe(r?.agent)??e.creditWrapUpReserve},lQe=(t,e)=>{if(e<=0)return!1;let r=Ge();return t.mode==="create"?r.creditWrapUpEnabled:t.mode==="ask"||t.mode==="normal"?r.creditWrapUpNormalEnabled:!1},Eue=(t,e)=>{if(t==="fix"){Hp.log("Credit reserve reached outside of the main inference turn \u2014 letting the fix finish without a wrap-up"),te.inc("session.credit_wrapup_skipped_fix_turn",1,{credit_reserve:e});return}if(t==="no_session"){Hp.warn("Credit reserve reached but no session id yet \u2014 skipping wrap-up interrupt"),te.inc("session.credit_wrapup_skipped_no_session",1,{credit_reserve:e});return}Hp.log("Credit reserve reached with no turn to interrupt \u2014 the agent had already finished")},dQe=(t,e,r)=>{if(e==null)return;let n=Math.max(0,e-t.creditsSpentBeforeWrapUp);Hp.log("Credit wrap-up cost",{credits:n,creditsCostAtSessionEnd:e,effort:cQe,inferenceAfterWrapUp:r,...t}),te.distribution("session.credit_wrapup_cost",n,{outcome:t.outcome,effort:cQe,credit_reserve:t.creditReserve,inference_after_wrap_up:r,...t.model?{model:t.model}:{}})},vue=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=Sue(i),h=new AbortController,m=!1,_=!1,y,v=Object.assign(async w=>{try{l.onAgentOutput()}catch(A){co(A)&&!m&&(m=!0,Hp.log("Wrap-up turn spent the credit reserve \u2014 stopping wrap-up",{creditsSpentBeforeWrapUp:r}),te.inc("session.credit_wrapup_aborted",1,{credit_reserve:p}),h.abort())}return u(w)},{flush:u.flush.bind(u)});Hp.log("Running credit wrap-up inference turn",{creditsSpentBeforeWrapUp:r,creditReserve:p});try{await u({steps:[{category:X.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 S;try{let{runnerResult:w}=await d("inference-credit-wrapup",()=>jp({cliPath:n,config:i,context:s,runner:o,persistSteps:v,aiGateway:a,cwd:c,contextPrefix:epr(i),priorAgentSessionId:e,resumeForCreditWrapUp:!0,answerFold:f,forceLowEffortForCreditWrapUp:!0,abortSignal:h.signal}));y=w.resolvedModel,m&&Hp.log("Wrap-up turn was aborted due to budget limit"),S={...ER(t,w),resolvedModel:t.resolvedModel,effort:t.effort,resolvedProviderEffort:t.resolvedProviderEffort}}catch(w){Hp.warn("Credit wrap-up turn failed \u2014 proceeding with pre-wrap-up result",{error:w?.message||w}),te.inc("session.credit_wrapup_failed",1,{credit_reserve:p}),_=!0,S=t}let g=y??t.resolvedModel;return{runnerResult:S,costReport:{creditsSpentBeforeWrapUp:r,creditReserve:p,outcome:_?"failed":m?"aborted":"completed",...g?{model:g}:{}}}};var fQe=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 pQe=4e3,tpr=3e4,Vp=de("in_progress_work_preservation"),hQe=async(t,e)=>{if(!e)return null;g2(e);let r=Ip(t.runner),n=null;try{await Promise.race([Promise.all([WB({runnerId:t.id,sessionId:t.sessionId,archive:r,nativeSessionId:e}).then(i=>{n=i}),vw({config:t,nativeSessionArchive:r,nativeSessionId:e}).catch(i=>{Vp.warn("Failed to seed the native session cache before teardown",{error:i?.message||i})})]),new Promise(i=>{setTimeout(i,pQe).unref()})])}catch(i){Vp.warn("Failed to preserve native session before teardown",{error:i?.message||i})}return n},_I=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)&&!an()?tpr:pQe,c=!1,u=!0,l=new Set,d=(g,w)=>{te.inc("session.preservation",1,{reason:o,step:g,outcome:w}),Vp.info("Session preservation",{sessionId:t.sessionId,reason:o,step:g,outcome:w})},f=async(g,w)=>{l.add(g),d(g,"started");try{await w(),u&&d(g,"succeeded")}catch(A){c=!0,u&&d(g,"failed"),Vp.warn("Failed to preserve session artifacts",{reason:o,step:g,error:A})}finally{l.delete(g)}};d("all","started");let p=null,h={},m=[],_=Ip(t.runner);if(r&&_){let g={config:t,nativeSessionArchive:_,nativeSessionId:r};m.push(Promise.allSettled([f("conversation",async()=>{let w=await iI(g);if(!w)throw new Error("Native session upload returned no archive key");u&&(p=w)}),...!n&&!i&&Ge().warmNativeResumeEnabled&&t.cache?.dir?[f("cache",async()=>{if(!await vw(g))throw new Error("Native session cache was not saved")})]:[]]))}if(t.mode!=="ask"&&(!i||t.runSha)&&m.push(f("diff",()=>new ks().commitAgentWork({config:t}).then(g=>g.hasChanges?nI({config:t,diff:g.diff,diffBinary:g.diffBinary,resultDiff:g.resultDiff,resultDiffBinary:g.resultDiffBinary}):{}).then(g=>{u&&(h=g)}))),m.length>0){let g=!1,w;if(await Promise.race([Promise.all(m).then(()=>{g=!0}),new Promise(A=>{w=setTimeout(A,a),w.unref()})]),clearTimeout(w),!g){c=!0;for(let A of l)d(A,"failed");Vp.warn("Session preservation exceeded its budget",{reason:o,budgetMs:a}),e&&te.inc("credit_preservation.timed_out",1)}}u=!1,d("session-update","started");let y=an(),v=s?{state:"interrupted",interrupt_reason:"credit_limit"}:{result:i?.result??n?.result??e?.error.userMessage??"Cancelled by user",state:i?"error":"cancelled"},S=!1;try{await tw(()=>_n(t.id,t.sessionId,{...v,...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:y?2:3,baseDelay:y?100:1e3,onRetry:(g,w)=>{Vp.error(`Error updating agent runner session (attempt ${g}):`,w),Vp.log("Retrying...")}}),S=!0,d("session-update","succeeded")}catch(g){c=!0,d("session-update","failed"),Vp.warn("Could not update session (site may have been deleted)",{error:g})}return d("all",c?"failed":"succeeded"),{sessionUpdated:S}};import yI from"process";var _2=de("shutdown"),mQe=!1,gQe,bue=async t=>{if(mQe)return;if(mQe=!0,_2.info("Shutting down...",{signal:t}),te.inc("shutdown.started",1,{signal:t,reason:Na()??t,active_session:SI()}),oDe(t),te.distribution("session.hot_followups",SQe()),!SI()){let r=Date.now(),n=EQe(),i=vQe();n!==void 0&&te.timing("session.last_linger",r-n),i!==void 0&&te.timing("session.total_linger",r-i)}let e=gQe?.close().catch(r=>{_2.error("Error closing server during graceful shutdown",r)});await bQe(),await e,await Yx(),await $Te(),_2.info("Shutdown complete"),yI.exit(0)},_Qe=t=>{gQe=t,yI.on("SIGINT",()=>{bue("SIGINT")}),yI.on("SIGTERM",()=>{bue("SIGTERM")}),yI.on("unhandledRejection",e=>{_2.error("Unhandled promise rejection \u2014 exiting",e),yI.exit(1)})},yQe=t=>{bue(t)};var Dw=de("session_finalization"),TQe=({config:t,teardown:e,withStageTimer:r,cwd:n})=>{let i=!1;return async s=>{switch(s.outcome){case"completed":{fd(s.artifacts.nativeSessionId),i=!0,await wue({config:t,artifacts:s.artifacts,withStageTimer:r}),await rpr({cwd:n,pipelineSpan:s.pipelineSpan}),await e.run("completed");return}case"redeployed":{fd(s.artifacts.nativeSessionId),i=!0,await wue({config:t,artifacts:s.artifacts,withStageTimer:r}),await e.run("completed");return}case"deploy_failed":throw fd(s.artifacts.nativeSessionId),i=!0,await wue({config:t,artifacts:s.artifacts,withStageTimer:r}),s.error;case"awaiting_input":{let{nativeSessionId:o,pendingInteraction:a}=s;fd(o),i=!0;let c=await npr({config:t,session:s,cwd:n,withStageTimer:r});CJe(a,t.sessionId,c),await e.run("awaiting_input");return}case"credit_interrupted":{let{nativeSessionId:o}=s;fd(o),i=!0,await RQe({config:t,nativeSessionId:o,interruptReason:"credit_reserve",cwd:n,withStageTimer:r}),Dw.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;fd(o);let a=Ge().creditInterruptEnabled;if(a&&!an()&&await ipr({config:t,session:s,nativeSessionId:o,cwd:n,withStageTimer:r})){await e.run("credit_interrupted");return}let c=a&&an()&&Na()==="credit_limit",u=await _I({config:t,session:s,nativeSessionId:o,...c?{creditInterrupted:!0}:{}});if(c&&u.sessionUpdated){await e.run("credit_interrupted");return}await e.run("cancelled"),yQe("credit_limit_cancelled");return}case"api_resource_not_found":{await e.run("errored");try{await _n(t.id,t.sessionId,{result:s.error.userMessage,state:"error",metadata:{final_agent_config:s.finalAgentConfig,...s.creditWrapUp?{credit_wrap_up:!0}:{}}})}catch{Dw.warn("Could not update session (site may have been deleted)")}return}case"user_cancelled":{let o=s.error?.agentSessionId??s.nativeSessionId;fd(o),await _I({config:t,nativeSessionId:o}),await e.run("cancelled");return}case"auto_shutdown":case"dev_server_stopped":{let o=s.error?.agentSessionId??s.nativeSessionId;fd(o),await _I({config:t,nativeSessionId:o,stoppedSession:{stopReason:s.outcome,result:wQe(s.error)}}),await e.run("cancelled");return}case"interrupted":case"error":{let{error:o}=s,a=wQe(o),c=o?.agentSessionId??s.nativeSessionId,u=s.outcome==="error"?"error":aDe(Na()),l=!1;if(!i&&u!==void 0){i=!0,fd(c);try{l=(await _I({config:t,nativeSessionId:c,erroredSession:{reason:u,result:a}})).sessionUpdated}catch(p){Dw.warn("Failed to preserve errored session artifacts",{error:p})}}let d=!i&&s.outcome!=="error"&&!!c,f=d?await hQe(t,c):null;if(await e.run("errored"),l)return;try{await _n(t.id,t.sessionId,{result:a,state:"error",...d?{native_session_id:c}:{},...f?{native_session_s3_key:f}:{}})}catch(p){Dw.error("Failed to update session with error state, retrying with minimal payload:",p);try{await _n(t.id,t.sessionId,{result:"Encountered error when running agent",state:"error"})}catch(h){Dw.error("Failed to mark session as errored:",h)}}return}}}},wQe=t=>{let e=t instanceof Error?t.shortMessage||t.message:"";return e?YOe(t$(e)):"Encountered error when running agent"},rpr=async({cwd:t,pipelineSpan:e})=>{try{let r=await Bq(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{}},npr=async({config:t,session:e,cwd:r,withStageTimer:n})=>n("cleanup",async()=>{let{nativeSessionId:i,pendingInteraction:s}=e,{diffFields:o,nativeSessionS3Key:a}=await AQe({config:t,nativeSessionId:i,cwd:r}),c;try{c=await IJe(t,s,{nativeSessionId:i,nativeSessionS3Key:a??void 0,diffFields:o})}catch(u){throw te.inc("inference.pause_persist_failed",1),o&&te.inc("pending_diff.save",1,{outcome:"failed",step:"persist"}),u}return o&&te.inc("pending_diff.save",1,{outcome:o.diff_produced?"saved":"no_changes"}),c},Uo.timeUnits.minutes(10),{interruptible:!1}),ipr=async({config:t,session:e,nativeSessionId:r,cwd:n,withStageTimer:i})=>{try{return await RQe({config:t,nativeSessionId:r,interruptReason:"credit_limit",creditLimit:e,cwd:n,withStageTimer:i}),!0}catch(s){return Dw.warn("Failed to interrupt the session at the credit limit, cancelling it instead",{error:s}),!1}},RQe=async({config:t,nativeSessionId:e,interruptReason:r,creditLimit:n,cwd:i,withStageTimer:s})=>s("cleanup",async()=>{let{diffFields:o,nativeSessionS3Key:a}=await AQe({config:t,nativeSessionId:e,cwd:i});try{await _n(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&&te.inc("pending_diff.save",1,{outcome:"failed",step:"persist"}),c}o&&te.inc("pending_diff.save",1,{outcome:o.diff_produced?"saved":"no_changes"})},Uo.timeUnits.minutes(10),{interruptible:!1}),AQe=async({config:t,nativeSessionId:e,cwd:r})=>{let n=await EJe({config:t,cwd:r}),i=Ip(t.runner),s=await iI({config:t,nativeSessionArchive:i,nativeSessionId:e});return await vw({config:t,nativeSessionArchive:i,nativeSessionId:e}),{diffFields:n,nativeSessionS3Key:s}},wue=async({config:t,artifacts:e,withStageTimer:r})=>{await r("cleanup",()=>_Je({config:t,...e,nativeSessionArchive:Ip(t.runner)}),Uo.timeUnits.minutes(10),{interruptible:!1})},fd=t=>{t&&g2(t)};var opr=spr(import.meta.url),Gp=opr("../package.json"),xn=de("pipeline_index"),Lw=3,Tue=2,apr=["codex","gemini"],xQe=t=>{let{config:e}=t;return Kue({agent_runner_id:e.id,session_id:e.sessionId,agent:e.runner,mode:e.mode,orchestrator_version:Gp.version,model:e.model,effort:e.effort},()=>cpr(t))},cpr=async({config:t,apiToken:e,cliPath:r="netlify",cwd:n,filter:i,isHotFollowUp:s=!1,enqueuedAt:o,tracing:a={}})=>{let c,u,l=L=>{u=L},d=Date.now(),f="success",p=!1,h,m,_=!1,y,v=!1,{withStageTimer:S}=cDe(Uo.timeUnits.hours(4)),g=KXe({config:t,cliPath:r,cwd:n,withStageTimer:S}),w=JXe({config:t,cwd:n,database:g,stopUsageTracking:()=>c?.stop()}),A,R=TQe({config:t,teardown:w,withStageTimer:S,cwd:n}),T=L=>(A??=L.outcome,R(L)),P=await BHe(Gp.version,t.id,a);xn.log(`Agent runner orchestrator v${Gp.version}`,{featureFlags:Ge().raw,metrics:UTe()});let I={agent:t.runner,mode:t.mode,is_follow_up:t.sessionHistoryContext.length>0,version:Gp.version,fast_init:t.fastInit,credit_wrapup:!1,budget_eligible:!1,budget_constrained:!1,ask_first:!1};wR({...I});let O=!!t.answeredInteraction;nQe({agentRunnerId:t.id,sessionId:t.sessionId,devServerId:process.env.NETLIFY_DEV_SERVER_ID,agent:t.runner,mode:t.mode,version:Gp.version,model:t.model,effort:t.effort,isAnswerResume:O,isHotFollowUp:s}),ZXe({isHotFollowUp:s,enqueuedAt:o}),rKe(t.sessionId);try{await QA(It(),"run-pipeline",{},P,async L=>{await Aue(Rue(),t.runner),L?.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:N,context:x,persistSteps:C,runner:D,sha:G}=await S("init",()=>vJe({config:t,apiToken:e,cliPath:r,cwd:n,filter:i,runnerVersion:Gp.version,isHotFollowUp:s}),Uo.timeUnits.minutes(10)),Z=D.runner;Ge().idleTimeoutEnabled||w.setRunnerCleanup(D.clean),await aQe(t,s),Object.assign(I,WHe(t)),wR({...I});let se=Sue(t),Se=lQe(t,se),Pe=fQe(Se),Te,ie=!1,Re=0,Ee,oe=t.resumeAction==="wrap_up";c=sQe(t.id,t.sessionId,t.sessionCreditLimit,{...Se&&!oe?{creditReserve:se,onCreditReserveReached:()=>{if(!ie){if(Pe.getActiveTurn()!=="main"){ie=!0,Eue(Pe.getActiveTurn(),se);return}if(!Ee){Eue("no_session",se);return}ie=!0,Re=c?.getCreditsCost()??0,xn.log("Credit reserve reached \u2014 interrupting agent to wrap up",{creditsSpentBeforeWrapUp:Re,creditReserve:se}),I.credit_wrapup=!0,wR({...I}),te.inc("session.credit_wrapup_triggered",1,{credit_reserve:se}),Pe.abortMainTurn()}}}:{}});let q=Ak(t.mode),Q;t.deployAlias&&t.deployAlias.length>0?Q=t.deployAlias:(t.deployAlias!==void 0&&!q&&xn.warn("Received empty deploy alias for a non-prod deploy, falling back to local computation"),Q=Que(t.id,process.env.SITE_NAME,q));let B=!1,ne=!1,j=Object.assign(async Ne=>{B||(B=!0,XXe({isHotFollowUp:s,enqueuedAt:o}));try{c?.onAgentOutput()}catch(it){return co(it)?Te??=it:xn.warn("Unexpected error in onAgentOutput",{error:it?.message||it}),C(Ne)}return!ne&&Ne.steps?.some(it=>it.category!==X.Environment&&it.category!==X.SubagentPrompt)&&(ne=!0,QXe({isHotFollowUp:s,enqueuedAt:o})),C(Ne)},{flush:C.flush.bind(C)});if(t.sha=G,t.mode==="redeploy"){let Ne=await WJe({cliPath:r,config:t,filter:i,deploySubdomain:Q,isProdDeploy:q,withStageTimer:S});await c?.stop(),await T({outcome:"redeployed",artifacts:Ne});return}let $=LJe(),F=t.mode==="ask",W;t.mode==="create"&&!t.resumeAction&&(W=(await S("create",()=>JHe({config:t,cwd:n}))).additionalContext),W=await F3e(W,t);let ee=await g.prepare({deploySubdomain:Q,isProdDeploy:q});ee&&(W=[ee,W].filter(Boolean).join(`
|
|
1087
|
+
`)}var o_=de("usage_tracker"),Kfr=4e3,Yfr=5e3,Jfr=2e4,Zfr=(t,e,r)=>t===!0||r!=null&&e!=null&&e>=r,Xfr=(t,e,r)=>e!=null&&e>0&&r!=null&&t!=null&&e-t<=r,sQe=(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)},_=R=>{m(),p=setInterval(()=>{v()},R),p.unref?.()},y=async()=>{try{let R=await Dk(t,e);o_.log("Usage update response",{usage:R?.usage});let T=R?.usage?.total_credits_cost;T!=null&&(u=T);let P=R?.enforced_credits_cap;if(P!=null&&P!==f){let O=f==null;f=P,o_.log("Took the session credit limit from a usage poll",{sessionCreditLimit:f,totalCreditsCost:T,isFirstLimit:O}),O&&te.inc("session.credit_cap_late_arrival",1)}let I=Zfr(R?.credit_limit_exceeded,T,f);if(I&&(o_.log("Credit limit exceeded",{totalCreditsCost:T,sessionCreditLimit:f}),a||(l=Date.now(),d=T??u??0,_(Jfr)),a=!0),h&&!c&&!I&&Xfr(T,f,n)){c=!0,o_.log("Credit reserve reached",{totalCreditsCost:T,sessionCreditLimit:f,creditReserve:n});try{i()}catch(O){o_.warn("onCreditReserveReached callback threw",{error:O?.message||O})}}}catch(R){o_.warn("Failed to update usage",{error:R?.message||R})}},v=AI(y,Kfr);return{onAgentOutput:()=>{if(a)throw new ao("AI credit usage exceeded enforced limit.",503,"Credit limit reached. Check credit limits to continue using Agent Runners.");o||(s=!0,p||_(Yfr))},stop:async()=>{o||(o=!0,m(),s&&(v.cancel(),o_.log("Sending final usage update"),await y(),l!==void 0&&(te.timing("credit_limit.overage_duration",Date.now()-l),te.distribution("credit_limit.overage_credits",Math.max(0,(u??d??0)-(d??0))))))},getCreditsCost:()=>u,getSessionCreditLimit:()=>f}};var oQe=de("session_credit_limit"),Qfr=async t=>{if(t.sessionCreditLimit!=null)return{limit:t.sessionCreditLimit,source:"env"};try{let e=(await Dk(t.id,t.sessionId))?.enforced_credits_cap;if(e!=null)return oQe.log("Resolved the session credit limit from the usage endpoint",{limit:e}),{limit:e,source:"usage"}}catch(e){oQe.warn("Usage call for the session credit limit failed",{error:e?.message||e})}return{source:"none"}},aQe=async(t,e=!1)=>{let{limit:r,source:n}=await Qfr(t);t.sessionCreditLimit=r,te.inc("session.credit_cap_source",1,{source:n,hot_follow_up:e})};var Hp=de("credit_wrapup"),cQe="low",epr=t=>{if(t.mode==="ask")return O2;if(t.mode==="normal")return P2;let e=Jx(t);return Zx(t,e)?A2:x2},uQe=t=>typeof t=="number"?t:void 0,Sue=t=>{let e=Ge(),r=e.creditWrapUpReserveByModeAgentAndModel[t.mode]?.[t.runner];return uQe(t.model?r?.models?.[t.model]:void 0)??uQe(r?.agent)??e.creditWrapUpReserve},lQe=(t,e)=>{if(e<=0)return!1;let r=Ge();return t.mode==="create"?r.creditWrapUpEnabled:t.mode==="ask"||t.mode==="normal"?r.creditWrapUpNormalEnabled:!1},Eue=(t,e)=>{if(t==="fix"){Hp.log("Credit reserve reached outside of the main inference turn \u2014 letting the fix finish without a wrap-up"),te.inc("session.credit_wrapup_skipped_fix_turn",1,{credit_reserve:e});return}if(t==="no_session"){Hp.warn("Credit reserve reached but no session id yet \u2014 skipping wrap-up interrupt"),te.inc("session.credit_wrapup_skipped_no_session",1,{credit_reserve:e});return}Hp.log("Credit reserve reached with no turn to interrupt \u2014 the agent had already finished")},dQe=(t,e,r)=>{if(e==null)return;let n=Math.max(0,e-t.creditsSpentBeforeWrapUp);Hp.log("Credit wrap-up cost",{credits:n,creditsCostAtSessionEnd:e,effort:cQe,inferenceAfterWrapUp:r,...t}),te.distribution("session.credit_wrapup_cost",n,{outcome:t.outcome,effort:cQe,credit_reserve:t.creditReserve,inference_after_wrap_up:r,...t.model?{model:t.model}:{}})},vue=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=Sue(i),h=new AbortController,m=!1,_=!1,y,v=Object.assign(async w=>{try{l.onAgentOutput()}catch(A){co(A)&&!m&&(m=!0,Hp.log("Wrap-up turn spent the credit reserve \u2014 stopping wrap-up",{creditsSpentBeforeWrapUp:r}),te.inc("session.credit_wrapup_aborted",1,{credit_reserve:p}),h.abort())}return u(w)},{flush:u.flush.bind(u)});Hp.log("Running credit wrap-up inference turn",{creditsSpentBeforeWrapUp:r,creditReserve:p});try{await u({steps:[{category:X.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 S;try{let{runnerResult:w}=await d("inference-credit-wrapup",()=>jp({cliPath:n,config:i,context:s,runner:o,persistSteps:v,aiGateway:a,cwd:c,contextPrefix:epr(i),priorAgentSessionId:e,resumeForCreditWrapUp:!0,answerFold:f,forceLowEffortForCreditWrapUp:!0,abortSignal:h.signal}));y=w.resolvedModel,m&&Hp.log("Wrap-up turn was aborted due to budget limit"),S={...ER(t,w),resolvedModel:t.resolvedModel,effort:t.effort,resolvedProviderEffort:t.resolvedProviderEffort}}catch(w){Hp.warn("Credit wrap-up turn failed \u2014 proceeding with pre-wrap-up result",{error:w?.message||w}),te.inc("session.credit_wrapup_failed",1,{credit_reserve:p}),_=!0,S=t}let g=y??t.resolvedModel;return{runnerResult:S,costReport:{creditsSpentBeforeWrapUp:r,creditReserve:p,outcome:_?"failed":m?"aborted":"completed",...g?{model:g}:{}}}};var fQe=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 pQe=4e3,tpr=3e4,Vp=de("in_progress_work_preservation"),hQe=async(t,e)=>{if(!e)return null;g2(e);let r=Ip(t.runner),n=null;try{await Promise.race([Promise.all([WB({runnerId:t.id,sessionId:t.sessionId,archive:r,nativeSessionId:e}).then(i=>{n=i}),vw({config:t,nativeSessionArchive:r,nativeSessionId:e}).catch(i=>{Vp.warn("Failed to seed the native session cache before teardown",{error:i?.message||i})})]),new Promise(i=>{setTimeout(i,pQe).unref()})])}catch(i){Vp.warn("Failed to preserve native session before teardown",{error:i?.message||i})}return n},_I=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)&&!an()?tpr:pQe,c=!1,u=!0,l=new Set,d=(g,w)=>{te.inc("session.preservation",1,{reason:o,step:g,outcome:w}),Vp.info("Session preservation",{sessionId:t.sessionId,reason:o,step:g,outcome:w})},f=async(g,w)=>{l.add(g),d(g,"started");try{await w(),u&&d(g,"succeeded")}catch(A){c=!0,u&&d(g,"failed"),Vp.warn("Failed to preserve session artifacts",{reason:o,step:g,error:A})}finally{l.delete(g)}};d("all","started");let p=null,h={},m=[],_=Ip(t.runner);if(r&&_){let g={config:t,nativeSessionArchive:_,nativeSessionId:r};m.push(Promise.allSettled([f("conversation",async()=>{let w=await iI(g);if(!w)throw new Error("Native session upload returned no archive key");u&&(p=w)}),...!n&&!i&&Ge().warmNativeResumeEnabled&&t.cache?.dir?[f("cache",async()=>{if(!await vw(g))throw new Error("Native session cache was not saved")})]:[]]))}if(t.mode!=="ask"&&(!i||t.runSha)&&m.push(f("diff",()=>new ks().commitAndCreateDiffs({config:t}).then(g=>g.hasChanges?nI({config:t,diff:g.diff,diffBinary:g.diffBinary,resultDiff:g.resultDiff,resultDiffBinary:g.resultDiffBinary}):{}).then(g=>{u&&(h=g)}))),m.length>0){let g=!1,w;if(await Promise.race([Promise.all(m).then(()=>{g=!0}),new Promise(A=>{w=setTimeout(A,a),w.unref()})]),clearTimeout(w),!g){c=!0;for(let A of l)d(A,"failed");Vp.warn("Session preservation exceeded its budget",{reason:o,budgetMs:a}),e&&te.inc("credit_preservation.timed_out",1)}}u=!1,d("session-update","started");let y=an(),v=s?{state:"interrupted",interrupt_reason:"credit_limit"}:{result:i?.result??n?.result??e?.error.userMessage??"Cancelled by user",state:i?"error":"cancelled"},S=!1;try{await tw(()=>_n(t.id,t.sessionId,{...v,...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:y?2:3,baseDelay:y?100:1e3,onRetry:(g,w)=>{Vp.error(`Error updating agent runner session (attempt ${g}):`,w),Vp.log("Retrying...")}}),S=!0,d("session-update","succeeded")}catch(g){c=!0,d("session-update","failed"),Vp.warn("Could not update session (site may have been deleted)",{error:g})}return d("all",c?"failed":"succeeded"),{sessionUpdated:S}};import yI from"process";var _2=de("shutdown"),mQe=!1,gQe,bue=async t=>{if(mQe)return;if(mQe=!0,_2.info("Shutting down...",{signal:t}),te.inc("shutdown.started",1,{signal:t,reason:Na()??t,active_session:SI()}),oDe(t),te.distribution("session.hot_followups",SQe()),!SI()){let r=Date.now(),n=EQe(),i=vQe();n!==void 0&&te.timing("session.last_linger",r-n),i!==void 0&&te.timing("session.total_linger",r-i)}let e=gQe?.close().catch(r=>{_2.error("Error closing server during graceful shutdown",r)});await bQe(),await e,await Yx(),await $Te(),_2.info("Shutdown complete"),yI.exit(0)},_Qe=t=>{gQe=t,yI.on("SIGINT",()=>{bue("SIGINT")}),yI.on("SIGTERM",()=>{bue("SIGTERM")}),yI.on("unhandledRejection",e=>{_2.error("Unhandled promise rejection \u2014 exiting",e),yI.exit(1)})},yQe=t=>{bue(t)};var Dw=de("session_finalization"),TQe=({config:t,teardown:e,withStageTimer:r,cwd:n})=>{let i=!1;return async s=>{switch(s.outcome){case"completed":{fd(s.artifacts.nativeSessionId),i=!0,await wue({config:t,artifacts:s.artifacts,withStageTimer:r}),await rpr({cwd:n,pipelineSpan:s.pipelineSpan}),await e.run("completed");return}case"redeployed":{fd(s.artifacts.nativeSessionId),i=!0,await wue({config:t,artifacts:s.artifacts,withStageTimer:r}),await e.run("completed");return}case"deploy_failed":throw fd(s.artifacts.nativeSessionId),i=!0,await wue({config:t,artifacts:s.artifacts,withStageTimer:r}),s.error;case"awaiting_input":{let{nativeSessionId:o,pendingInteraction:a}=s;fd(o),i=!0;let c=await npr({config:t,session:s,cwd:n,withStageTimer:r});CJe(a,t.sessionId,c),await e.run("awaiting_input");return}case"credit_interrupted":{let{nativeSessionId:o}=s;fd(o),i=!0,await RQe({config:t,nativeSessionId:o,interruptReason:"credit_reserve",cwd:n,withStageTimer:r}),Dw.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;fd(o);let a=Ge().creditInterruptEnabled;if(a&&!an()&&await ipr({config:t,session:s,nativeSessionId:o,cwd:n,withStageTimer:r})){await e.run("credit_interrupted");return}let c=a&&an()&&Na()==="credit_limit",u=await _I({config:t,session:s,nativeSessionId:o,...c?{creditInterrupted:!0}:{}});if(c&&u.sessionUpdated){await e.run("credit_interrupted");return}await e.run("cancelled"),yQe("credit_limit_cancelled");return}case"api_resource_not_found":{await e.run("errored");try{await _n(t.id,t.sessionId,{result:s.error.userMessage,state:"error",metadata:{final_agent_config:s.finalAgentConfig,...s.creditWrapUp?{credit_wrap_up:!0}:{}}})}catch{Dw.warn("Could not update session (site may have been deleted)")}return}case"user_cancelled":{let o=s.error?.agentSessionId??s.nativeSessionId;fd(o),await _I({config:t,nativeSessionId:o}),await e.run("cancelled");return}case"auto_shutdown":case"dev_server_stopped":{let o=s.error?.agentSessionId??s.nativeSessionId;fd(o),await _I({config:t,nativeSessionId:o,stoppedSession:{stopReason:s.outcome,result:wQe(s.error)}}),await e.run("cancelled");return}case"interrupted":case"error":{let{error:o}=s,a=wQe(o),c=o?.agentSessionId??s.nativeSessionId,u=s.outcome==="error"?"error":aDe(Na()),l=!1;if(!i&&u!==void 0){i=!0,fd(c);try{l=(await _I({config:t,nativeSessionId:c,erroredSession:{reason:u,result:a}})).sessionUpdated}catch(p){Dw.warn("Failed to preserve errored session artifacts",{error:p})}}let d=!i&&s.outcome!=="error"&&!!c,f=d?await hQe(t,c):null;if(await e.run("errored"),l)return;try{await _n(t.id,t.sessionId,{result:a,state:"error",...d?{native_session_id:c}:{},...f?{native_session_s3_key:f}:{}})}catch(p){Dw.error("Failed to update session with error state, retrying with minimal payload:",p);try{await _n(t.id,t.sessionId,{result:"Encountered error when running agent",state:"error"})}catch(h){Dw.error("Failed to mark session as errored:",h)}}return}}}},wQe=t=>{let e=t instanceof Error?t.shortMessage||t.message:"";return e?YOe(t$(e)):"Encountered error when running agent"},rpr=async({cwd:t,pipelineSpan:e})=>{try{let r=await Bq(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{}},npr=async({config:t,session:e,cwd:r,withStageTimer:n})=>n("cleanup",async()=>{let{nativeSessionId:i,pendingInteraction:s}=e,{diffFields:o,nativeSessionS3Key:a}=await AQe({config:t,nativeSessionId:i,cwd:r}),c;try{c=await IJe(t,s,{nativeSessionId:i,nativeSessionS3Key:a??void 0,diffFields:o})}catch(u){throw te.inc("inference.pause_persist_failed",1),o&&te.inc("pending_diff.save",1,{outcome:"failed",step:"persist"}),u}return o&&te.inc("pending_diff.save",1,{outcome:o.diff_produced?"saved":"no_changes"}),c},Uo.timeUnits.minutes(10),{interruptible:!1}),ipr=async({config:t,session:e,nativeSessionId:r,cwd:n,withStageTimer:i})=>{try{return await RQe({config:t,nativeSessionId:r,interruptReason:"credit_limit",creditLimit:e,cwd:n,withStageTimer:i}),!0}catch(s){return Dw.warn("Failed to interrupt the session at the credit limit, cancelling it instead",{error:s}),!1}},RQe=async({config:t,nativeSessionId:e,interruptReason:r,creditLimit:n,cwd:i,withStageTimer:s})=>s("cleanup",async()=>{let{diffFields:o,nativeSessionS3Key:a}=await AQe({config:t,nativeSessionId:e,cwd:i});try{await _n(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&&te.inc("pending_diff.save",1,{outcome:"failed",step:"persist"}),c}o&&te.inc("pending_diff.save",1,{outcome:o.diff_produced?"saved":"no_changes"})},Uo.timeUnits.minutes(10),{interruptible:!1}),AQe=async({config:t,nativeSessionId:e,cwd:r})=>{let n=await EJe({config:t,cwd:r}),i=Ip(t.runner),s=await iI({config:t,nativeSessionArchive:i,nativeSessionId:e});return await vw({config:t,nativeSessionArchive:i,nativeSessionId:e}),{diffFields:n,nativeSessionS3Key:s}},wue=async({config:t,artifacts:e,withStageTimer:r})=>{await r("cleanup",()=>_Je({config:t,...e,nativeSessionArchive:Ip(t.runner)}),Uo.timeUnits.minutes(10),{interruptible:!1})},fd=t=>{t&&g2(t)};var opr=spr(import.meta.url),Gp=opr("../package.json"),xn=de("pipeline_index"),Lw=3,Tue=2,apr=["codex","gemini"],xQe=t=>{let{config:e}=t;return Kue({agent_runner_id:e.id,session_id:e.sessionId,agent:e.runner,mode:e.mode,orchestrator_version:Gp.version,model:e.model,effort:e.effort},()=>cpr(t))},cpr=async({config:t,apiToken:e,cliPath:r="netlify",cwd:n,filter:i,isHotFollowUp:s=!1,enqueuedAt:o,tracing:a={}})=>{let c,u,l=L=>{u=L},d=Date.now(),f="success",p=!1,h,m,_=!1,y,v=!1,{withStageTimer:S}=cDe(Uo.timeUnits.hours(4)),g=KXe({config:t,cliPath:r,cwd:n,withStageTimer:S}),w=JXe({config:t,cwd:n,database:g,stopUsageTracking:()=>c?.stop()}),A,R=TQe({config:t,teardown:w,withStageTimer:S,cwd:n}),T=L=>(A??=L.outcome,R(L)),P=await BHe(Gp.version,t.id,a);xn.log(`Agent runner orchestrator v${Gp.version}`,{featureFlags:Ge().raw,metrics:UTe()});let I={agent:t.runner,mode:t.mode,is_follow_up:t.sessionHistoryContext.length>0,version:Gp.version,fast_init:t.fastInit,credit_wrapup:!1,budget_eligible:!1,budget_constrained:!1,ask_first:!1};wR({...I});let O=!!t.answeredInteraction;nQe({agentRunnerId:t.id,sessionId:t.sessionId,devServerId:process.env.NETLIFY_DEV_SERVER_ID,agent:t.runner,mode:t.mode,version:Gp.version,model:t.model,effort:t.effort,isAnswerResume:O,isHotFollowUp:s}),ZXe({isHotFollowUp:s,enqueuedAt:o}),rKe(t.sessionId);try{await QA(It(),"run-pipeline",{},P,async L=>{await Aue(Rue(),t.runner),L?.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:N,context:x,persistSteps:C,runner:D,sha:G}=await S("init",()=>vJe({config:t,apiToken:e,cliPath:r,cwd:n,filter:i,runnerVersion:Gp.version,isHotFollowUp:s}),Uo.timeUnits.minutes(10)),Z=D.runner;Ge().idleTimeoutEnabled||w.setRunnerCleanup(D.clean),await aQe(t,s),Object.assign(I,WHe(t)),wR({...I});let se=Sue(t),Se=lQe(t,se),Pe=fQe(Se),Te,ie=!1,Re=0,Ee,oe=t.resumeAction==="wrap_up";c=sQe(t.id,t.sessionId,t.sessionCreditLimit,{...Se&&!oe?{creditReserve:se,onCreditReserveReached:()=>{if(!ie){if(Pe.getActiveTurn()!=="main"){ie=!0,Eue(Pe.getActiveTurn(),se);return}if(!Ee){Eue("no_session",se);return}ie=!0,Re=c?.getCreditsCost()??0,xn.log("Credit reserve reached \u2014 interrupting agent to wrap up",{creditsSpentBeforeWrapUp:Re,creditReserve:se}),I.credit_wrapup=!0,wR({...I}),te.inc("session.credit_wrapup_triggered",1,{credit_reserve:se}),Pe.abortMainTurn()}}}:{}});let q=Ak(t.mode),Q;t.deployAlias&&t.deployAlias.length>0?Q=t.deployAlias:(t.deployAlias!==void 0&&!q&&xn.warn("Received empty deploy alias for a non-prod deploy, falling back to local computation"),Q=Que(t.id,process.env.SITE_NAME,q));let B=!1,ne=!1,j=Object.assign(async Ne=>{B||(B=!0,XXe({isHotFollowUp:s,enqueuedAt:o}));try{c?.onAgentOutput()}catch(it){return co(it)?Te??=it:xn.warn("Unexpected error in onAgentOutput",{error:it?.message||it}),C(Ne)}return!ne&&Ne.steps?.some(it=>it.category!==X.Environment&&it.category!==X.SubagentPrompt)&&(ne=!0,QXe({isHotFollowUp:s,enqueuedAt:o})),C(Ne)},{flush:C.flush.bind(C)});if(t.sha=G,t.mode==="redeploy"){let Ne=await WJe({cliPath:r,config:t,filter:i,deploySubdomain:Q,isProdDeploy:q,withStageTimer:S});await c?.stop(),await T({outcome:"redeployed",artifacts:Ne});return}let $=LJe(),F=t.mode==="ask",W;t.mode==="create"&&!t.resumeAction&&(W=(await S("create",()=>JHe({config:t,cwd:n}))).additionalContext),W=await F3e(W,t);let ee=await g.prepare({deploySubdomain:Q,isProdDeploy:q});ee&&(W=[ee,W].filter(Boolean).join(`
|
|
1088
1088
|
|
|
1089
1089
|
`));let ae=async()=>{let Ne=await jJe(t,n);_=!0;let it=await vue({runnerResult:{steps:[],duration:0},interruptedSessionId:Ne,creditsSpentBeforeWrapUp:c.getCreditsCost()??0,cliPath:r,config:t,context:x,runner:Z,aiGateway:N,cwd:n,persistSteps:C,usageTracker:c,withStageTimer:S,answerFold:$});return y=it.costReport,{runnerResult:it.runnerResult,nativeResume:!!Ne}};Pe.startMainTurn();let ue=await S("inference",async()=>{if(oe)return ae();try{return await jp({cliPath:r,config:t,context:x,runner:Z,persistSteps:j,aiGateway:N,additionalContext:W,cwd:n,answerFold:$,abortSignal:Pe.getMainTurnAbortSignal(),onSessionId:Ne=>{Ee=Ne,u=Ne}})}catch(Ne){if(!(Ne instanceof Kp)||t.mode!=="rebase"&&t.mode!=="conflict_resolution")throw Ne;for(let it of apr){if(Te&&co(Te))throw Te;if(it===t.runner)continue;let Bt=Xb[it];if(Bt){xn.log(`Primary runner ${t.runner} failed in ${t.mode} mode, falling back to ${it}`),wR({...I,agent:it}),Ee=void 0,u=void 0,await Aue(Rue(),it);try{let Lr=await jp({cliPath:r,config:{...t,runner:it},context:x,runner:Bt.runner,persistSteps:j,aiGateway:N,additionalContext:W,cwd:n,answerFold:$,abortSignal:Pe.getMainTurnAbortSignal(),onSessionId:On=>{Ee=On,u=On}});return t.runner=it,Z=Bt.runner,Ge().idleTimeoutEnabled||w.setRunnerCleanup(Bt.clean),Lr}catch(Lr){if(co(Lr))throw Lr;xn.error(`Fallback runner ${it} also failed`,{error:String(Lr)})}}}throw Ne}}).finally(Pe.finishMainTurn),le=ue.runnerResult;u=le.agentSessionId??u,p=ue.nativeResume??!1,h=le.resolvedModel,m=le.effort;let ke=async(Ne,it)=>{let Bt=await g.currentContext(),{runnerResult:Lr}=await Pe.runFixTurn(()=>S(Ne,()=>jp({cliPath:r,config:t,context:x,runner:Z,persistSteps:j,aiGateway:N,buildErrors:it,additionalContext:Bt,priorAgentSessionId:u,onSessionId:l,answerFold:$}))).catch(On=>{throw u=On?.agentSessionId??u,On});if(u=Lr.agentSessionId??u,Te)throw Object.assign(Te,{agentSessionId:u}),Te;le=ER(le,Lr)},Qe=le.agentSessionId,ve=Se&&ie&&le.aborted&&!Te;if(ve&&Ge().creditInterruptEnabled&&Qe){await T({outcome:"credit_interrupted",nativeSessionId:Qe}),f="credit_interrupted";return}if(ve&&Qe&&c){_=!0;let Ne=await vue({runnerResult:le,interruptedSessionId:Qe,creditsSpentBeforeWrapUp:Re,cliPath:r,config:t,context:x,runner:Z,aiGateway:N,cwd:n,persistSteps:C,usageTracker:c,withStageTimer:S,answerFold:$});le=Ne.runnerResult,u=le.agentSessionId??u,y=Ne.costReport}if(t.mode==="create"&&await YHe(n??process.cwd()),Te)throw Object.assign(Te,{agentSessionId:le.agentSessionId}),Te;if(le.pendingInteraction){await T({outcome:"awaiting_input",pendingInteraction:le.pendingInteraction,nativeSessionId:le.agentSessionId}),f="awaiting_input";return}let Ze=await g.generateMigrations();if(Ze.error){xn.log("Migration generation failed, running inference to fix the issue"),await ke("inference-migration-fix",[`Running \`drizzle-kit generate\` to generate database migrations failed with the following error:
|
|
1090
1090
|
|